wiki-graph 0.6.0 → 0.7.1
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/LICENSE +201 -0
- package/dist/cli.js +2449 -663
- package/dist/cli.js.map +1 -1
- package/dist/data/help/commands/predicate.jinja +35 -2
- package/dist/data/help/commands/uri.jinja +1 -0
- package/dist/data/help/topics/config.jinja +26 -6
- package/dist/data/help/topics/readiness.jinja +3 -2
- package/dist/gc-worker.js +77 -92
- package/dist/gc-worker.js.map +1 -1
- package/dist/index.cjs +1247 -4800
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.js +1233 -4885
- package/dist/index.js.map +1 -1
- package/dist/queue-worker.js +2359 -575
- package/dist/queue-worker.js.map +1 -1
- package/package.json +7 -16
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../core/src/runtime/platform/files.ts","../../core/src/runtime/platform/index.ts","../../core/src/runtime/common/template.ts","../src/runtime/node-platform.ts","../src/support/errors.ts","../src/support/formats.ts","../src/runtime/context.ts","../src/support/io.ts","../src/support/json.ts","../src/support/shell.ts","../src/support/tree.ts","../src/support/uri.ts","../src/support/version.ts","../src/support/index.ts","../src/runtime/local-config.ts","../src/runtime/config.ts","../src/runtime/embedding.ts","../src/runtime/llm.ts","../src/runtime/planning.ts","../src/runtime/progress.ts","../src/runtime/progress-output.ts","../src/runtime/stage.ts","../src/runtime/wikispine.ts","../src/runtime/index.ts","../src/commands/convert.ts","../src/commands/archive-command/create.ts","../src/commands/archive-command/inspect.ts","../src/commands/archive-output/object/cursor.ts","../src/commands/archive-output/text/lines.ts","../src/commands/archive-output/text/source.ts","../src/commands/archive-output/text/evidence.ts","../src/commands/archive-output/text/lens.ts","../src/commands/archive-output/object/uri.ts","../src/commands/archive-output/object/types.ts","../src/commands/archive-output/text/plain.ts","../src/commands/archive-output/text/object.ts","../src/commands/archive-output/object/objects.ts","../src/commands/archive-output/text/page.ts","../src/commands/archive-output/text/index.ts","../src/commands/archive-output/write/jsonl.ts","../src/commands/archive-output/object/page-cursor.ts","../src/commands/archive-output/write/warnings.ts","../src/commands/archive-output/write/evidence.ts","../src/commands/archive-output/write/find.ts","../src/commands/archive-output/write/list.ts","../src/commands/archive-output/write/pack.ts","../src/commands/archive-output/write/page.ts","../src/commands/archive-output/write/source-locators.ts","../src/commands/archive-output/write/index.ts","../src/commands/archive-output/index.ts","../src/commands/archive-command/run/uri.ts","../src/commands/archive-command/run/document.ts","../src/commands/archive-command/run/types.ts","../src/commands/archive-command/run/options.ts","../src/commands/archive-command/run/next.ts","../src/commands/archive-command/run/root.ts","../src/commands/archive-command/run/index.ts","../src/commands/archive-command/run/scope.ts","../src/commands/archive-command/index.ts","../src/runtime/entry-context.ts","../src/runtime/internal-child.ts","../src/commands/queue/estimate.ts","../src/commands/queue/output.ts","../src/commands/queue/add.ts","../src/commands/archive-command/chapter.ts","../src/commands/archive-command/search-index.ts","../src/commands/archive-command/maintenance.ts","../src/commands/gc.ts","../src/commands/legacy.ts","../src/runtime/home-target.ts","../src/commands/maintenance.ts","../src/commands/local-config.ts","../src/commands/library.ts","../src/commands/object-metadata.ts","../src/commands/queue/watch.ts","../src/commands/queue/worker.ts","../src/commands/queue/index.ts","../src/index.ts","../src/app/runner.ts","../src/args/help.ts","../src/args/uri/chapter/target.ts","../src/args/uri/triple-pattern.ts","../src/args/archive.ts","../src/args/helper/actions.ts","../src/args/helper/chapter/actions.ts","../src/args/helper/chapter/ids.ts","../src/args/helper/uri.ts","../src/args/helper/chapter/normalize.ts","../src/args/helper/chapter/stages.ts","../src/args/helper/chapter/rejections.ts","../src/args/helper/flags.ts","../src/args/helper/parse.ts","../src/args/parse.ts","../src/args/queue.ts","../src/args/uri/chapter/routing.ts","../src/args/uri/entry.ts","../src/args/uri/archive-objects.ts","../src/args/uri/metadata.ts","../src/args/root/gc.ts","../src/args/root/help.ts","../src/args/root/legacy.ts","../src/args/root/local-config.ts","../src/args/root/maintenance-command.ts","../src/args/root/maintenance.ts","../src/args/root/transform.ts","../src/args/uri/library.ts","../src/commands/index.ts","../src/app/dispatch.ts","../src/app/main.ts"],"sourcesContent":["import type { Directory, File } from \"./types.js\";\n\nexport async function readFileText(file: File): Promise<string> {\n const content = await file.read({ encoding: \"utf8\" });\n return typeof content === \"string\"\n ? content\n : new TextDecoder().decode(content);\n}\n\nexport async function writeFileContent(\n file: File,\n content: Uint8Array | string,\n): Promise<void> {\n const writer = await file.openWriter();\n try {\n await writer.write(content);\n await writer.commit();\n } catch (error) {\n await writer.abort().catch(() => undefined);\n throw error;\n }\n}\n\nexport async function appendFileText(\n file: File,\n content: string,\n): Promise<void> {\n let current = \"\";\n try {\n current = await readFileText(file);\n } catch {\n // A newly created host File can legitimately have no backing bytes yet.\n }\n await writeFileContent(file, `${current}${content}`);\n}\n\nexport async function readHostEntrySize(\n entry: File | Directory,\n): Promise<number> {\n if (isDirectory(entry)) {\n let size = 0;\n for (const child of await entry.list())\n size += await readHostEntrySize(child);\n return size;\n }\n return entry.getSize === undefined\n ? (entry.size ?? 0)\n : await entry.getSize();\n}\n\nexport async function getHostEntryLastModified(\n entry: File | Directory,\n): Promise<number | undefined> {\n return entry.getLastModified === undefined\n ? entry.lastModified\n : await entry.getLastModified();\n}\n\nexport function isDirectory(entry: File | Directory): entry is Directory {\n return \"list\" in entry;\n}\n","import type {\n Directory,\n File,\n HostAsyncContext,\n HostZipEntry,\n WikiGraphPlatform,\n WikiGraphStorage,\n} from \"./types.js\";\n\nexport type {\n Directory,\n File,\n FileWriter,\n HostAsyncContext,\n HostAsyncContextProvider,\n HostDatabaseConnection,\n HostDatabaseProvider,\n HostDatabaseRow,\n HostDatabaseValue,\n HostError,\n HostLifecycleProvider,\n HostResourceProvider,\n HostTemplateProvider,\n HostTemplateEnvironment,\n HostZipEntry,\n HostZipProvider,\n HostZipReader,\n WikiGraphPlatform,\n WikiGraphStorage,\n} from \"./types.js\";\nexport {\n appendFileText,\n getHostEntryLastModified,\n isDirectory,\n readFileText,\n readHostEntrySize,\n writeFileContent,\n} from \"./files.js\";\n\nlet installedPlatform: WikiGraphPlatform | undefined;\n\n/** Install the process-default platform services used by Core. */\nexport function installWikiGraphPlatform(platform: WikiGraphPlatform): void {\n installedPlatform = platform;\n}\n\nexport function getWikiGraphPlatform(): WikiGraphPlatform {\n if (installedPlatform === undefined) {\n throw new Error(\n \"No WikiGraph runtime platform has been installed. Provide a runtime adapter before using wiki-graph-core.\",\n );\n }\n\n return installedPlatform;\n}\n\n/** Materialize a ZIP only for workflows that inherently consume every entry. */\nexport async function readHostZipEntries(file: File): Promise<HostZipEntry[]> {\n const reader = await getWikiGraphPlatform().zip.open(file);\n try {\n const entries: HostZipEntry[] = [];\n for (const name of await reader.listEntries()) {\n const data = await reader.readEntry(name);\n if (data !== undefined) entries.push({ data, name });\n }\n return entries;\n } finally {\n await reader.close();\n }\n}\n\n/** Resolve an opaque persisted identity into its host file capability. */\nexport async function resolveHostFile(file: File | string): Promise<File> {\n if (typeof file !== \"string\") return file;\n const resolved = await getWikiGraphPlatform().resources.getFile(file);\n if (resolved === undefined) throw new Error(\"Host file is unavailable\");\n return resolved;\n}\n\n/** Resolve an opaque persisted identity into its host directory capability. */\nexport async function resolveHostDirectory(\n directory: Directory | string,\n): Promise<Directory> {\n if (typeof directory !== \"string\") return directory;\n const resolved =\n await getWikiGraphPlatform().resources.getDirectory(directory);\n if (resolved === undefined) {\n throw new Error(\"Host directory is unavailable\");\n }\n return resolved;\n}\n\n/** Resolve a logical relative file name inside a host-provided directory. */\nexport async function getRelativeFile(\n root: Directory,\n relativeName: string,\n): Promise<File | undefined> {\n const parts = relativeName.replaceAll(\"\\\\\", \"/\").split(\"/\").filter(Boolean);\n if (parts.some((part) => part === \".\" || part === \"..\")) {\n throw new TypeError(`Directory path must remain relative: ${relativeName}`);\n }\n const fileName = parts.pop();\n if (!fileName) return undefined;\n let directory = root;\n for (const part of parts) {\n const next = await directory.getDirectory(part);\n if (!next) return undefined;\n directory = next;\n }\n return await directory.getFile(fileName);\n}\n\n/** Resolve a logical relative directory without permitting root escape. */\nexport async function getRelativeDirectory(\n root: Directory,\n relativeName: string,\n): Promise<Directory | undefined> {\n const parts = splitRelativeName(relativeName);\n let directory = root;\n for (const part of parts) {\n const next = await directory.getDirectory(part);\n if (!next) return undefined;\n directory = next;\n }\n return directory;\n}\n\n/** Create missing logical directories below a host-owned root. */\nexport async function ensureRelativeDirectory(\n root: Directory,\n relativeName: string,\n): Promise<Directory> {\n const parts = splitRelativeName(relativeName);\n let directory = root;\n for (const part of parts) {\n const existing = await directory.getDirectory(part);\n if (existing !== undefined) {\n directory = existing;\n continue;\n }\n try {\n directory = await directory.createDirectory(part);\n } catch (error) {\n const raced = await directory.getDirectory(part);\n if (raced === undefined) throw error;\n directory = raced;\n }\n }\n return directory;\n}\n\n/** Get or create a logical file below a host-owned root. */\nexport async function ensureRelativeFile(\n root: Directory,\n relativeName: string,\n): Promise<File> {\n const parts = splitRelativeName(relativeName);\n const fileName = parts.pop();\n if (!fileName) throw new TypeError(\"File name must remain relative\");\n const parent = await ensureRelativeDirectory(root, parts.join(\"/\"));\n const existing = await parent.getFile(fileName);\n if (existing !== undefined) return existing;\n try {\n return await parent.createFile(fileName);\n } catch (error) {\n const raced = await parent.getFile(fileName);\n if (raced !== undefined) return raced;\n throw error;\n }\n}\n\nfunction splitRelativeName(relativeName: string): string[] {\n const normalized = relativeName.replaceAll(\"\\\\\", \"/\");\n if (normalized.startsWith(\"/\")) {\n throw new TypeError(`Directory path must remain relative: ${relativeName}`);\n }\n const parts = normalized.split(\"/\").filter(Boolean);\n if (parts.some((part) => part === \".\" || part === \"..\")) {\n throw new TypeError(`Directory path must remain relative: ${relativeName}`);\n }\n return parts;\n}\n\nclass DeferredHostAsyncContext<T> {\n #impl: HostAsyncContext<T> | undefined;\n #fallbackStore: T | undefined;\n\n public run<R>(store: T, callback: () => R): R {\n const implementation = this.#implementation();\n if (implementation !== undefined) {\n return implementation.run(store, callback);\n }\n\n const previous = this.#fallbackStore;\n this.#fallbackStore = store;\n try {\n return callback();\n } finally {\n this.#fallbackStore = previous;\n }\n }\n\n public enterWith(store: T): void {\n const implementation = this.#implementation();\n if (implementation !== undefined) {\n implementation.enterWith(store);\n } else {\n this.#fallbackStore = store;\n }\n }\n\n public getStore(): T | undefined {\n return this.#implementation()?.getStore() ?? this.#fallbackStore;\n }\n\n #implementation(): HostAsyncContext<T> | undefined {\n if (this.#impl !== undefined) {\n return this.#impl;\n }\n if (installedPlatform === undefined) {\n return undefined;\n }\n\n this.#impl = installedPlatform.asyncContext.create<T>();\n if (this.#fallbackStore !== undefined) {\n this.#impl.enterWith(this.#fallbackStore);\n this.#fallbackStore = undefined;\n }\n return this.#impl;\n }\n}\n\nconst storageContext = new DeferredHostAsyncContext<WikiGraphStorage>();\nlet installedStorage: WikiGraphStorage | undefined;\n\n/** Install process-default storage, primarily for CLI bootstrap. */\nexport function installWikiGraphStorage(storage: WikiGraphStorage): void {\n installedStorage = storage;\n}\n\nexport async function withWikiGraphStorage<T>(\n storage: WikiGraphStorage | undefined,\n operation: () => Promise<T> | T,\n): Promise<T> {\n if (storage === undefined) {\n return await operation();\n }\n return await storageContext.run(storage, operation);\n}\n\nexport function getWikiGraphStorage(): WikiGraphStorage {\n const storage = storageContext.getStore() ?? installedStorage;\n if (storage === undefined) {\n throw new Error(\n \"No WikiGraph storage roots have been configured. Pass storage to WikiGraph or install process-default storage.\",\n );\n }\n return storage;\n}\n","import { getWikiGraphPlatform } from \"../platform/index.js\";\nimport type { HostTemplateEnvironment } from \"../platform/index.js\";\n\nconst JINJA_EXTENSION_PATTERN = /\\.jinja$/iu;\nconst LEADING_DOT_SEGMENT_PATTERN = /^\\.+\\//u;\nconst LEADING_SLASH_PATTERN = /^\\/+/u;\n\nexport function createEnv(\n _legacyDataDirectory?: string,\n options: {\n readonly autoescape?: boolean;\n readonly trimBlocks?: boolean;\n } = {},\n): HostTemplateEnvironment {\n const environment = getWikiGraphPlatform().templates.createEnvironment({\n autoescape: options.autoescape ?? true,\n trimBlocks: options.trimBlocks ?? true,\n });\n return {\n render: (templateName, context) =>\n environment.render(normalizeTemplateName(templateName), context),\n };\n}\n\nexport function normalizeTemplateName(templateName: string): string {\n if (LEADING_DOT_SEGMENT_PATTERN.test(templateName)) {\n throw new Error(`invalid template name ${templateName}`);\n }\n const withoutLeadingSlash = templateName.replace(LEADING_SLASH_PATTERN, \"\");\n const withoutExtension = withoutLeadingSlash.replace(\n JINJA_EXTENSION_PATTERN,\n \"\",\n );\n if (withoutExtension.split(\"/\").includes(\"..\")) {\n throw new Error(`invalid template name ${templateName}`);\n }\n return `${withoutExtension}.jinja`;\n}\n","/* eslint-disable no-restricted-syntax, @typescript-eslint/parameter-properties */\nimport * as asyncHooks from \"node:async_hooks\";\nimport * as crypto from \"node:crypto\";\nimport * as fs from \"node:fs\";\nimport * as fsPromises from \"node:fs/promises\";\nimport * as os from \"node:os\";\nimport * as pathModule from \"node:path\";\nimport * as process from \"node:process\";\nimport { type Readable, Writable } from \"node:stream\";\nimport { pipeline } from \"node:stream/promises\";\nimport * as sqlite3 from \"sqlite3\";\nimport * as yauzl from \"yauzl\";\nimport * as yazl from \"yazl\";\nimport { Environment, Loader, type LoaderSource } from \"nunjucks\";\n\nconst nodeProcess =\n (process as unknown as { default?: typeof process }).default ?? process;\nconst nodeSqlite3 =\n (sqlite3 as unknown as { default?: typeof sqlite3 }).default ?? sqlite3;\n\nimport {\n installWikiGraphPlatform,\n installWikiGraphStorage,\n withWikiGraphStorage,\n type Directory,\n type File,\n type FileWriter,\n type HostDatabaseConnection,\n type HostDatabaseRow,\n type HostDatabaseValue,\n type HostZipEntry,\n type HostZipReader,\n type WikiGraphPlatform,\n type WikiGraphStorage,\n} from \"../../../core/src/runtime/platform/index.js\";\nimport { normalizeTemplateName } from \"../../../core/src/runtime/common/template.js\";\n\n/** Install the Node implementation used by the CLI and its workers. */\nexport class NodeFile implements File {\n public readonly identity: string;\n public readonly name: string;\n\n public constructor(\n public readonly path: string,\n name = pathModule.basename(path),\n ) {\n this.identity = encodeNodeResourceIdentity(\"file\", path);\n this.name = name;\n }\n\n public async read(options?: {\n readonly encoding?: string;\n }): Promise<Uint8Array | string> {\n return await fsPromises.readFile(\n this.path,\n options?.encoding === undefined\n ? undefined\n : { encoding: options.encoding as BufferEncoding },\n );\n }\n\n public async getSize(): Promise<number> {\n try {\n return (await fsPromises.stat(this.path)).size;\n } catch (error) {\n if (\n typeof error === \"object\" &&\n error !== null &&\n \"code\" in error &&\n error.code === \"ENOENT\"\n ) {\n return 0;\n }\n throw error;\n }\n }\n\n public async getLastModified(): Promise<number | undefined> {\n try {\n return (await fsPromises.stat(this.path)).mtimeMs;\n } catch (error) {\n if (\n typeof error === \"object\" &&\n error !== null &&\n \"code\" in error &&\n error.code === \"ENOENT\"\n ) {\n return undefined;\n }\n throw error;\n }\n }\n\n public async openWriter(): Promise<FileWriter> {\n await fsPromises.mkdir(pathModule.dirname(this.path), { recursive: true });\n const temporary = `${this.path}.tmp-${crypto.randomUUID()}`;\n const handle = await fsPromises.open(temporary, \"wx\");\n let closed = false;\n return {\n write: async (data) => {\n if (closed) throw new Error(\"Cannot write to a closed FileWriter\");\n if (typeof data === \"string\") await handle.write(data);\n else await handle.write(Buffer.from(data));\n },\n commit: async () => {\n if (!closed) {\n await handle.close();\n await fsPromises.rename(temporary, this.path);\n }\n closed = true;\n },\n abort: async () => {\n if (!closed) {\n await handle.close();\n await fsPromises.rm(temporary, { force: true });\n }\n closed = true;\n },\n };\n }\n}\n\nexport class NodeDirectory implements Directory {\n public readonly identity: string;\n public readonly name: string;\n\n public constructor(public readonly path: string) {\n this.identity = encodeNodeResourceIdentity(\"directory\", path);\n this.name = pathModule.basename(path);\n }\n\n public async getFile(name: string): Promise<File | undefined> {\n assertChildName(name);\n const file = new NodeFile(pathModule.join(this.path, name));\n try {\n return (await fsPromises.stat(file.path)).isFile() ? file : undefined;\n } catch {\n return undefined;\n }\n }\n\n public async getLastModified(): Promise<number | undefined> {\n try {\n return (await fsPromises.stat(this.path)).mtimeMs;\n } catch (error) {\n if (\n typeof error === \"object\" &&\n error !== null &&\n \"code\" in error &&\n error.code === \"ENOENT\"\n ) {\n return undefined;\n }\n throw error;\n }\n }\n\n public async getDirectory(name: string): Promise<Directory | undefined> {\n assertChildName(name);\n const directory = new NodeDirectory(pathModule.join(this.path, name));\n try {\n return (await fsPromises.stat(directory.path)).isDirectory()\n ? directory\n : undefined;\n } catch {\n return undefined;\n }\n }\n\n public async list(): Promise<ReadonlyArray<File | Directory>> {\n const entries = await fsPromises.readdir(this.path, {\n withFileTypes: true,\n });\n return entries.map((entry) =>\n entry.isDirectory()\n ? new NodeDirectory(pathModule.join(this.path, entry.name))\n : new NodeFile(pathModule.join(this.path, entry.name), entry.name),\n );\n }\n\n public async createFile(name: string): Promise<File> {\n assertChildName(name);\n await fsPromises.mkdir(this.path, { recursive: true });\n const file = new NodeFile(pathModule.join(this.path, name));\n await fsPromises.writeFile(file.path, \"\", { flag: \"wx\" });\n return file;\n }\n\n public async createDirectory(name: string): Promise<Directory> {\n assertChildName(name);\n await fsPromises.mkdir(this.path, { recursive: true });\n const directory = new NodeDirectory(pathModule.join(this.path, name));\n await fsPromises.mkdir(directory.path);\n return directory;\n }\n\n public async remove(\n name: string,\n options?: { readonly recursive?: boolean },\n ): Promise<void> {\n assertChildName(name);\n await fsPromises.rm(pathModule.join(this.path, name), {\n force: true,\n recursive: options?.recursive === true,\n });\n }\n}\n\nfunction encodeNodeResourceIdentity(\n kind: \"directory\" | \"file\",\n path: string,\n): string {\n return `node-${kind}:${Buffer.from(pathModule.resolve(path), \"utf8\").toString(\"base64url\")}`;\n}\n\nfunction decodeNodeResourceIdentity(\n identity: string,\n kind: \"directory\" | \"file\",\n): string | undefined {\n const prefix = `node-${kind}:`;\n if (!identity.startsWith(prefix)) {\n // State created before opaque resource identities stored native paths.\n return pathModule.isAbsolute(identity) ? identity : undefined;\n }\n try {\n return Buffer.from(identity.slice(prefix.length), \"base64url\").toString(\n \"utf8\",\n );\n } catch {\n return undefined;\n }\n}\n\nexport function getNodeResourcePath(resource: File | Directory): string {\n if (resource instanceof NodeFile || resource instanceof NodeDirectory) {\n return resource.path;\n }\n if (\n typeof resource === \"object\" &&\n resource !== null &&\n \"path\" in resource &&\n typeof resource.path === \"string\"\n ) {\n return resource.path;\n }\n throw new TypeError(\"Expected a Node File or Directory resource\");\n}\n\nfunction assertChildName(name: string): void {\n if (\n name.length === 0 ||\n name === \".\" ||\n name === \"..\" ||\n pathModule.isAbsolute(name) ||\n name.includes(\"/\") ||\n name.includes(\"\\\\\")\n ) {\n throw new TypeError(`Directory child must be a relative name: ${name}`);\n }\n}\n\nclass NodeDatabaseConnection implements HostDatabaseConnection {\n public constructor(private readonly database: sqlite3.Database) {}\n\n public async close(): Promise<void> {\n await new Promise<void>((resolve, reject) => {\n this.database.close((error) => {\n if (error) reject(error);\n else resolve();\n });\n });\n }\n\n public async execute(sql: string): Promise<void> {\n await new Promise<void>((resolve, reject) => {\n this.database.exec(sql, (error) => {\n if (error) reject(error);\n else resolve();\n });\n });\n }\n\n public async queryAll(\n sql: string,\n params: readonly HostDatabaseValue[] = [],\n ): Promise<readonly HostDatabaseRow[]> {\n return await new Promise((resolve, reject) => {\n this.database.all(sql, [...params], (error, rows: HostDatabaseRow[]) => {\n if (error) reject(error);\n else resolve(rows);\n });\n });\n }\n\n public async queryOne(\n sql: string,\n params: readonly HostDatabaseValue[] = [],\n ): Promise<HostDatabaseRow | undefined> {\n return await new Promise((resolve, reject) => {\n this.database.get(sql, [...params], (error, row: HostDatabaseRow) => {\n if (error) reject(error);\n else resolve(row);\n });\n });\n }\n\n public async run(\n sql: string,\n params: readonly HostDatabaseValue[] = [],\n ): Promise<void> {\n await new Promise<void>((resolve, reject) => {\n this.database.run(sql, [...params], (error) => {\n if (error) reject(error);\n else resolve();\n });\n });\n }\n}\n\nasync function openNodeDatabase(\n file: File,\n options: { readonly readonly?: boolean } = {},\n): Promise<NodeDatabaseConnection> {\n const flags =\n (options.readonly === true\n ? nodeSqlite3.OPEN_READONLY\n : nodeSqlite3.OPEN_READWRITE | nodeSqlite3.OPEN_CREATE) |\n nodeSqlite3.OPEN_FULLMUTEX;\n return new NodeDatabaseConnection(await openNativeNodeDatabase(file, flags));\n}\n\nasync function openNativeNodeDatabase(\n file: File,\n flags: number,\n): Promise<sqlite3.Database> {\n if (!(file instanceof NodeFile)) {\n throw new TypeError(\"The Node database adapter requires a NodeFile\");\n }\n return await new Promise((resolve, reject) => {\n const database = new nodeSqlite3.Database(file.path, flags, (error) => {\n if (error) reject(error);\n else resolve(database);\n });\n });\n}\n\nasync function openNodeZip(file: File): Promise<HostZipReader> {\n if (!(file instanceof NodeFile)) {\n throw new TypeError(\"The Node ZIP adapter requires a NodeFile\");\n }\n const zipFile = await new Promise<yauzl.ZipFile>((resolve, reject) => {\n yauzl.open(\n file.path,\n { autoClose: false, lazyEntries: true },\n (error, opened) => {\n if (error || opened === undefined)\n reject(error ?? new Error(\"Cannot open ZIP\"));\n else resolve(opened);\n },\n );\n });\n\n const entries = await new Promise<Map<string, yauzl.Entry>>(\n (resolve, reject) => {\n const discovered = new Map<string, yauzl.Entry>();\n const rejectAndClose = (error: unknown) => {\n zipFile.close();\n reject(\n error instanceof Error\n ? error\n : new Error(\"Cannot scan ZIP central directory\"),\n );\n };\n const resolveEntries = () => {\n zipFile.off(\"error\", rejectAndClose);\n resolve(discovered);\n };\n zipFile.on(\"entry\", (entry: yauzl.Entry) => {\n if (!entry.fileName.endsWith(\"/\")) {\n discovered.set(entry.fileName, entry);\n }\n zipFile.readEntry();\n });\n zipFile.once(\"error\", rejectAndClose);\n zipFile.once(\"end\", resolveEntries);\n zipFile.readEntry();\n },\n );\n\n let closed = false;\n return {\n close: () => {\n if (!closed) zipFile.close();\n closed = true;\n return Promise.resolve();\n },\n listEntries: () => Promise.resolve([...entries.keys()]),\n readEntry: async (name) => {\n if (closed) throw new Error(\"Cannot read a closed ZIP archive\");\n const entry = entries.get(name);\n if (entry === undefined) return undefined;\n return await readNodeZipEntry(zipFile, entry);\n },\n };\n}\n\nasync function readNodeZipEntry(\n zipFile: yauzl.ZipFile,\n entry: yauzl.Entry,\n): Promise<Uint8Array> {\n const stream = await new Promise<NodeJS.ReadableStream>((resolve, reject) => {\n zipFile.openReadStream(entry, (error, opened) => {\n if (error || opened === undefined) {\n reject(error ?? new Error(`Cannot read ZIP entry: ${entry.fileName}`));\n } else {\n resolve(opened);\n }\n });\n });\n return await collectNodeStream(stream);\n}\n\nasync function writeNodeZip(\n file: File,\n entries: Iterable<HostZipEntry> | AsyncIterable<HostZipEntry>,\n): Promise<void> {\n const zipFile = new yazl.ZipFile();\n const writer = await file.openWriter();\n const outputStream = zipFile.outputStream as Readable;\n const outputDone = writeNodeStream(outputStream, writer);\n const entryState = { cancelled: false, complete: false };\n let iterator:\n | Iterator<HostZipEntry>\n | AsyncIterator<HostZipEntry>\n | undefined;\n\n try {\n iterator = getNodeZipEntryIterator(entries);\n const entriesDone = addNodeZipEntries(zipFile, iterator, entryState);\n await Promise.race([entriesDone, outputDone]);\n if (!entryState.complete) {\n throw new Error(\"ZIP output ended before entry production completed\");\n }\n zipFile.end();\n await outputDone;\n await writer.commit();\n } catch (error) {\n entryState.cancelled = true;\n if (!entryState.complete && iterator !== undefined) {\n closeNodeZipEntryIterator(iterator);\n }\n if (!outputStream.destroyed) {\n outputStream.destroy(\n error instanceof Error ? error : new Error(\"Cannot write ZIP archive\"),\n );\n }\n await outputDone.catch(() => undefined);\n await writer.abort().catch(() => undefined);\n throw error;\n }\n}\n\nasync function addNodeZipEntries(\n zipFile: yazl.ZipFile,\n iterator: Iterator<HostZipEntry> | AsyncIterator<HostZipEntry>,\n state: { cancelled: boolean; complete: boolean },\n): Promise<void> {\n while (!state.cancelled) {\n const result = await iterator.next();\n if (state.cancelled) return;\n if (result.done) {\n state.complete = true;\n return;\n }\n zipFile.addBuffer(Buffer.from(result.value.data), result.value.name, {\n compress: false,\n });\n }\n}\n\nfunction getNodeZipEntryIterator(\n entries: Iterable<HostZipEntry> | AsyncIterable<HostZipEntry>,\n): Iterator<HostZipEntry> | AsyncIterator<HostZipEntry> {\n const asyncIterator = (entries as AsyncIterable<HostZipEntry>)[\n Symbol.asyncIterator\n ];\n return asyncIterator === undefined\n ? (entries as Iterable<HostZipEntry>)[Symbol.iterator]()\n : asyncIterator.call(entries);\n}\n\nfunction closeNodeZipEntryIterator(\n iterator: Iterator<HostZipEntry> | AsyncIterator<HostZipEntry>,\n): void {\n if (iterator.return === undefined) return;\n try {\n void Promise.resolve(iterator.return()).catch(() => undefined);\n } catch {\n // Preserve the failure that caused iteration to stop.\n }\n}\n\nasync function writeNodeStream(\n input: NodeJS.ReadableStream,\n writer: FileWriter,\n): Promise<void> {\n await pipeline(\n input,\n new Writable({\n write: (chunk: Buffer, _encoding, callback) => {\n void writer.write(chunk).then(\n () => callback(),\n (error: unknown) =>\n callback(\n error instanceof Error\n ? error\n : new Error(\"Cannot stream ZIP archive\"),\n ),\n );\n },\n }),\n );\n}\n\nasync function collectNodeStream(\n input: NodeJS.ReadableStream,\n): Promise<Buffer> {\n return await new Promise((resolve, reject) => {\n const chunks: Buffer[] = [];\n input.on(\"data\", (chunk: Buffer) => chunks.push(chunk));\n input.once(\"error\", reject);\n input.once(\"end\", () => resolve(Buffer.concat(chunks)));\n });\n}\n\nexport const nodeWikiGraphPlatform: WikiGraphPlatform = {\n asyncContext: {\n create: <T>() => new asyncHooks.AsyncLocalStorage<T>(),\n },\n database: { open: openNodeDatabase },\n lifecycle: {\n instanceId: `node-process:${nodeProcess.pid}`,\n isInstanceAlive: (instanceId) => {\n const match = /^node-process:(\\d+)$/u.exec(instanceId);\n if (match === null) return Promise.resolve(undefined);\n try {\n nodeProcess.kill(Number(match[1]), 0);\n return Promise.resolve(true);\n } catch (error) {\n if (\n typeof error === \"object\" &&\n error !== null &&\n \"code\" in error &&\n error.code === \"ESRCH\"\n ) {\n return Promise.resolve(false);\n }\n return Promise.resolve(true);\n }\n },\n },\n resources: {\n getDirectory: (identity) => {\n const path = decodeNodeResourceIdentity(identity, \"directory\");\n return Promise.resolve(\n path === undefined ? undefined : new NodeDirectory(path),\n );\n },\n getFile: (identity) => {\n const path = decodeNodeResourceIdentity(identity, \"file\");\n return Promise.resolve(\n path === undefined ? undefined : new NodeFile(path),\n );\n },\n resolveLegacyDirectory: (reference) => {\n const path = decodeNodeResourceIdentity(reference, \"directory\");\n return Promise.resolve(\n path === undefined ? undefined : new NodeDirectory(path),\n );\n },\n },\n templates: {\n createEnvironment: (options) =>\n new Environment(new NodeTemplateLoader(), options),\n },\n zip: { open: openNodeZip, write: writeNodeZip },\n};\n\nclass NodeTemplateLoader extends Loader {\n public getSource(templateName: string): LoaderSource {\n const name = normalizeTemplateName(templateName);\n const filePath = pathModule.join(resolveNodeDataDirectory(), name);\n return {\n noCache: false,\n path: name,\n src: fs.readFileSync(filePath, \"utf8\"),\n };\n }\n}\n\nfunction resolveNodeDataDirectory(): string {\n const injected = (globalThis as { __WIKIGRAPH_DATA_DIR__?: unknown })\n .__WIKIGRAPH_DATA_DIR__;\n if (typeof injected === \"string\" && injected !== \"\") return injected;\n let directory = nodeProcess.cwd();\n while (true) {\n for (const candidate of [\n pathModule.join(directory, \"data\"),\n pathModule.join(directory, \"packages\", \"core\", \"data\"),\n ]) {\n try {\n if (fs.statSync(candidate).isDirectory()) return candidate;\n } catch {\n // Keep looking toward the filesystem root.\n }\n }\n const parent = pathModule.dirname(directory);\n if (parent === directory)\n throw new Error(\"Could not locate data directory\");\n directory = parent;\n }\n}\n\nexport function createNodeWikiGraphStorage(\n stateRoot = pathModule.join(os.homedir(), \".wikigraph\"),\n): WikiGraphStorage {\n return {\n library: new NodeDirectory(stateRoot),\n documentStore: new NodeDirectory(pathModule.join(stateRoot, \"documents\")),\n };\n}\n\nexport function installNodeWikiGraphPlatform(stateRoot?: string): void {\n installWikiGraphPlatform(nodeWikiGraphPlatform);\n installWikiGraphStorage(createNodeWikiGraphStorage(stateRoot));\n}\n\nexport async function withNodeWikiGraphStorage<T>(\n stateRoot: string | undefined,\n operation: () => Promise<T> | T,\n): Promise<T> {\n return await withWikiGraphStorage(\n stateRoot === undefined ? undefined : createNodeWikiGraphStorage(stateRoot),\n operation,\n );\n}\n","import { CLI_PRIMARY_COMMAND } from \"wiki-graph-core\";\n\nexport const CLI_HELP_ROUTES = {\n command: `${CLI_PRIMARY_COMMAND} --help`,\n config: `${CLI_PRIMARY_COMMAND} help config`,\n format: `${CLI_PRIMARY_COMMAND} help format`,\n readiness: `${CLI_PRIMARY_COMMAND} help readiness`,\n root: `${CLI_PRIMARY_COMMAND} --help`,\n runtime: `${CLI_PRIMARY_COMMAND} help runtime`,\n uri: `${CLI_PRIMARY_COMMAND} help uri`,\n} as const;\n\nexport function archiveMaintenanceHelpRoute(subcommand: string): string {\n return `${CLI_PRIMARY_COMMAND} ${subcommand} --help`;\n}\n\nexport function withHelpRoute(message: string, route: string): string {\n return `${message}\\nSee: ${route}`;\n}\n","import { extname } from \"path\";\n\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"./errors.js\";\n\nexport const CLI_FORMATS = [\"wikg\", \"epub\", \"txt\", \"markdown\"] as const;\n\nexport type CLIFormat = (typeof CLI_FORMATS)[number];\n\nexport function inferCLIFormatFromPath(path: string): CLIFormat | undefined {\n switch (extname(path).toLowerCase()) {\n case \".epub\":\n return \"epub\";\n case \".markdown\":\n case \".md\":\n return \"markdown\";\n case \".wikg\":\n return \"wikg\";\n case \".txt\":\n return \"txt\";\n default:\n return undefined;\n }\n}\n\nexport function isTextCLIFormat(\n format: CLIFormat,\n): format is Extract<CLIFormat, \"markdown\" | \"txt\"> {\n return format === \"markdown\" || format === \"txt\";\n}\n\nexport function parseCLIFormat(value: string, flag: string): CLIFormat {\n const normalized = value.trim().toLowerCase();\n\n if (isCLIFormat(normalized)) {\n return normalized;\n }\n\n throw new Error(\n withHelpRoute(\n `Invalid ${flag}: ${value}. Expected one of ${CLI_FORMATS.join(\", \")}.`,\n CLI_HELP_ROUTES.format,\n ),\n );\n}\n\nfunction isCLIFormat(value: string): value is CLIFormat {\n return CLI_FORMATS.includes(value as CLIFormat);\n}\n","import { AsyncLocalStorage } from \"async_hooks\";\n\nexport interface WikiGraphCLIRuntimeContext {\n readonly argv: readonly string[];\n readonly cwd: string;\n readonly devProjectRoot?: string | undefined;\n readonly env: NodeJS.ProcessEnv;\n readonly envPolicy: \"development\" | \"production\";\n readonly queueAutostart: boolean;\n readonly signal?: AbortSignal | undefined;\n readonly stateDir?: string | undefined;\n readonly stderr: NodeJS.WritableStream;\n readonly stderrIsTTY?: boolean | undefined;\n readonly stdin: NodeJS.ReadableStream & { isTTY?: boolean | undefined };\n readonly stdinIsTTY?: boolean | undefined;\n readonly stdout: NodeJS.WritableStream;\n readonly stdoutIsTTY?: boolean | undefined;\n exitCode: NodeJS.Process[\"exitCode\"];\n}\n\nconst cliRuntimeContext = new AsyncLocalStorage<WikiGraphCLIRuntimeContext>();\nlet queueAutostartForTesting: boolean | undefined;\n\nexport async function withWikiGraphCLIRuntimeContext<T>(\n context: WikiGraphCLIRuntimeContext,\n operation: () => Promise<T> | T,\n): Promise<T> {\n return await cliRuntimeContext.run(context, operation);\n}\n\nexport function getCLIArgv(): readonly string[] {\n return cliRuntimeContext.getStore()?.argv ?? process.argv.slice(2);\n}\n\nexport function getCLICwd(): string {\n return cliRuntimeContext.getStore()?.cwd ?? process.cwd();\n}\n\nexport function getCLIEnv(): NodeJS.ProcessEnv {\n return cliRuntimeContext.getStore()?.env ?? process.env;\n}\n\nexport function getCLIEnvValue(name: string): string | undefined {\n return getCLIEnv()[name];\n}\n\nexport function getCLIDevProjectRoot(): string | undefined {\n return cliRuntimeContext.getStore()?.devProjectRoot;\n}\n\nexport function getCLIStateDir(): string | undefined {\n return cliRuntimeContext.getStore()?.stateDir;\n}\n\nexport function isCLIQueueAutostartEnabled(): boolean {\n return (\n queueAutostartForTesting ??\n cliRuntimeContext.getStore()?.queueAutostart ??\n true\n );\n}\n\nexport function setCLIQueueAutostartForTesting(\n enabled: boolean | undefined,\n): void {\n queueAutostartForTesting = enabled;\n}\n\nexport function getCLISignal(): AbortSignal | undefined {\n return cliRuntimeContext.getStore()?.signal;\n}\n\nexport function getCLIStdin(): NodeJS.ReadableStream & {\n isTTY?: boolean | undefined;\n} {\n return (\n cliRuntimeContext.getStore()?.stdin ??\n (process.stdin as NodeJS.ReadableStream & { isTTY?: boolean | undefined })\n );\n}\n\nexport function getCLIStdout(): NodeJS.WritableStream {\n return cliRuntimeContext.getStore()?.stdout ?? process.stdout;\n}\n\nexport function getCLIStderr(): NodeJS.WritableStream {\n return cliRuntimeContext.getStore()?.stderr ?? process.stderr;\n}\n\nexport function getCLIStdoutIsTTY(): boolean | undefined {\n const context = cliRuntimeContext.getStore();\n\n return (\n context?.stdoutIsTTY ??\n (getCLIStdout() as NodeJS.WritableStream & { isTTY?: boolean }).isTTY\n );\n}\n\nexport function getCLIExitCode(): NodeJS.Process[\"exitCode\"] {\n return cliRuntimeContext.getStore()?.exitCode ?? process.exitCode;\n}\n\nexport function setCLIExitCode(exitCode: NodeJS.Process[\"exitCode\"]): void {\n const context = cliRuntimeContext.getStore();\n\n if (context === undefined) {\n process.exitCode = exitCode;\n return;\n }\n\n context.exitCode = exitCode;\n}\n","import { createReadStream } from \"fs\";\nimport { mkdtemp, rm } from \"fs/promises\";\nimport { join } from \"path\";\nimport { tmpdir } from \"os\";\n\nimport {\n getCLIStderr,\n getCLIStdin,\n getCLIStdout,\n setCLIExitCode,\n} from \"../runtime/context.js\";\n\nexport function readTextStreamFromStdin(): AsyncIterable<string> {\n const stdin = getCLIStdin();\n\n stdin.setEncoding(\"utf8\");\n return stdin as AsyncIterable<string>;\n}\n\nexport async function writeTextFileToStdout(path: string): Promise<void> {\n for await (const chunk of createReadStream(path, { encoding: \"utf8\" })) {\n await writeChunkToStdout(String(chunk));\n }\n}\n\nexport async function writeTextToStdout(text: string): Promise<void> {\n await writeChunkToStdout(text);\n}\n\nexport async function writeTextToStderr(text: string): Promise<void> {\n await new Promise<void>((resolve, reject) => {\n getCLIStderr().write(text, (error) => {\n if (error === undefined || error === null) {\n resolve();\n return;\n }\n\n reject(error);\n });\n });\n}\n\nexport async function writeBinaryToStdout(data: Uint8Array): Promise<void> {\n await writeChunkToStdout(data);\n}\n\nasync function writeChunkToStdout(chunk: string | Uint8Array): Promise<void> {\n await new Promise<void>((resolve, reject) => {\n getCLIStdout().write(chunk, (error) => {\n if (error === undefined || error === null) {\n resolve();\n return;\n }\n if (isBrokenPipeError(error)) {\n setCLIExitCode(0);\n resolve();\n return;\n }\n\n reject(error);\n });\n });\n}\n\nfunction isBrokenPipeError(error: Error): boolean {\n return (error as NodeJS.ErrnoException).code === \"EPIPE\";\n}\n\nexport async function createTemporaryOutputPath(\n prefix: string,\n extension: string,\n): Promise<{\n readonly directoryPath: string;\n readonly filePath: string;\n}> {\n void prefix;\n const directoryPath = await mkdtemp(join(tmpdir(), \"wikigraph-cli-output-\"));\n\n return {\n directoryPath,\n filePath: join(directoryPath, `output${extension}`),\n };\n}\n\nexport async function removeTemporaryDirectory(\n directoryPath: string,\n): Promise<void> {\n await rm(directoryPath, { force: true, recursive: true });\n}\n","type JSONLike =\n | readonly JSONLike[]\n | { readonly [key: string]: JSONLike }\n | boolean\n | null\n | number\n | string;\n\nconst CLI_JSON_KEY_PRIORITY = new Map(\n [\n \"at\",\n \"seq\",\n \"uri\",\n \"id\",\n \"jobId\",\n \"type\",\n \"target\",\n \"label\",\n \"labels\",\n \"title\",\n \"state\",\n \"name\",\n \"qid\",\n \"predicate\",\n \"subjectLabel\",\n \"objectLabel\",\n \"subjectQid\",\n \"objectQid\",\n \"score\",\n \"queueRank\",\n \"chapter\",\n \"chapterId\",\n \"fragment\",\n \"fragmentId\",\n \"position\",\n \"range\",\n \"start\",\n \"end\",\n \"shown\",\n \"total\",\n \"count\",\n \"mentionCount\",\n \"nodeCount\",\n \"edgeCount\",\n \"summaryCount\",\n \"limit\",\n \"order\",\n \"match\",\n \"lens\",\n \"terms\",\n \"types\",\n \"chapters\",\n \"query\",\n \"objects\",\n \"items\",\n \"nextCursor\",\n \"archiveKey\",\n \"archivePath\",\n \"workspacePath\",\n \"eventsPath\",\n \"createdAt\",\n \"updatedAt\",\n \"finishedAt\",\n \"currentStep\",\n \"step\",\n \"phase\",\n \"phaseDetail\",\n \"phaseDone\",\n \"phaseTotal\",\n \"phaseUnit\",\n \"words\",\n \"totalWords\",\n \"outputTokens\",\n \"authors\",\n \"language\",\n \"identifier\",\n \"publisher\",\n \"publishedAt\",\n \"sourceFormat\",\n \"snippet\",\n \"summary\",\n \"description\",\n \"recommendation\",\n \"risk\",\n \"error\",\n \"message\",\n \"children\",\n \"nodes\",\n \"links\",\n \"neighbors\",\n \"incoming\",\n \"outgoing\",\n \"nodeGroups\",\n \"sourceFragments\",\n \"sources\",\n \"tree\",\n \"meta\",\n \"evidence\",\n \"content\",\n \"source\",\n \"text\",\n \"prompt\",\n \"llmJSON\",\n \"errorJSON\",\n ].map((key, index) => [key, index]),\n);\n\nexport function formatCLIJSON(value: unknown): string {\n return `${JSON.stringify(orderCLIJSONValue(value), null, 2)}\\n`;\n}\n\nexport function formatCLIJSONLine(value: unknown): string {\n return `${JSON.stringify(orderCLIJSONValue(value))}\\n`;\n}\n\nfunction orderCLIJSONValue(value: unknown): JSONLike | undefined {\n if (\n value === null ||\n typeof value === \"boolean\" ||\n typeof value === \"number\" ||\n typeof value === \"string\"\n ) {\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => orderCLIJSONValue(item) ?? null);\n }\n\n if (typeof value !== \"object\") {\n return undefined;\n }\n\n return orderCLIJSONObject(value as Record<string, unknown>);\n}\n\nfunction orderCLIJSONObject(value: Record<string, unknown>): JSONLike {\n const entries = Object.entries(value).map(([key, entryValue], index) => ({\n index,\n key,\n priority: CLI_JSON_KEY_PRIORITY.get(key) ?? Number.MAX_SAFE_INTEGER,\n value: entryValue,\n }));\n const ordered: Record<string, JSONLike> = {};\n\n for (const entry of entries.sort(\n (left, right) => left.priority - right.priority || left.index - right.index,\n )) {\n const orderedValue = orderCLIJSONValue(entry.value);\n\n if (orderedValue !== undefined) {\n ordered[entry.key] = orderedValue;\n }\n }\n\n return ordered;\n}\n","import { CLI_PRIMARY_COMMAND } from \"wiki-graph-core\";\n\nconst SAFE_SHELL_ARGUMENT_PATTERN = /^[A-Za-z0-9_@%+=:,./-]+$/u;\n\nexport function formatShellArgument(argument: string): string {\n if (argument !== \"\" && SAFE_SHELL_ARGUMENT_PATTERN.test(argument)) {\n return argument;\n }\n\n return `'${argument.replaceAll(\"'\", \"'\\\\''\")}'`;\n}\n\nexport function formatShellCommand(arguments_: readonly string[]): string {\n return arguments_.map(formatShellArgument).join(\" \");\n}\n\nexport function formatCliCommand(arguments_: readonly string[]): string {\n return formatShellCommand([CLI_PRIMARY_COMMAND, ...arguments_]);\n}\n","export interface RenderTreeNode {\n readonly children: readonly RenderTreeNode[];\n readonly label: string;\n}\n\nexport function renderTreeText(nodes: readonly RenderTreeNode[]): string {\n const lines = formatTreeNodes(nodes);\n return lines.length === 0 ? \"\" : `${lines.join(\"\\n\")}\\n`;\n}\n\nfunction formatTreeNodes(\n nodes: readonly RenderTreeNode[],\n prefix = \"\",\n): readonly string[] {\n return nodes.flatMap((node, index) => {\n const last = index === nodes.length - 1;\n const branch = last ? \"└─ \" : \"├─ \";\n const childPrefix = `${prefix}${last ? \" \" : \"│ \"}`;\n\n return [\n `${prefix}${branch}${node.label}`,\n ...formatTreeNodes(node.children, childPrefix),\n ];\n });\n}\n","import { homedir } from \"os\";\nimport { isAbsolute, relative, resolve } from \"path\";\n\nimport {\n formatWikiGraphCommandUri as formatPortableWikiGraphCommandUri,\n parseLocatedWikiGraphUri as parsePortableLocatedWikiGraphUri,\n type LocatedWikiGraphUri,\n} from \"wiki-graph-core\";\n\nimport { getCLICwd, getCLIEnvValue } from \"../runtime/context.js\";\n\nexport interface RelativeArchiveUriResolution {\n readonly inputUri: string;\n readonly resolvedArchivePath: string;\n readonly workingDirectory: string;\n}\n\n/** Apply Node path semantics at the CLI boundary, after Core parses URI syntax. */\nexport function parseLocatedWikiGraphUri(uri: string): LocatedWikiGraphUri {\n const parsed = parsePortableLocatedWikiGraphUri(uri);\n if (\n parsed.archivePath === undefined ||\n parsed.archivePath.startsWith(\"wikg://lib/\")\n ) {\n return parsed;\n }\n return {\n ...parsed,\n archivePath: resolveCLIArchivePath(parsed.archivePath),\n };\n}\n\nexport function formatWikiGraphCommandUri(\n archivePath: string,\n objectUri?: string,\n cwd = getCLICwd(),\n): string {\n let locator = archivePath;\n if (isAbsolute(archivePath)) {\n const candidate = relative(cwd, archivePath);\n if (\n candidate !== \"\" &&\n !candidate.startsWith(\"..\") &&\n !isAbsolute(candidate)\n ) {\n locator = candidate;\n }\n }\n return formatPortableWikiGraphCommandUri(locator, objectUri);\n}\n\nexport function getRelativeArchiveUriResolution(\n uri: string,\n): RelativeArchiveUriResolution | undefined {\n let parsed: LocatedWikiGraphUri;\n try {\n parsed = parsePortableLocatedWikiGraphUri(uri);\n } catch {\n return undefined;\n }\n\n const locator = parsed.archivePath;\n if (\n locator === undefined ||\n locator === \"~\" ||\n locator.startsWith(\"~/\") ||\n locator.startsWith(\"wikg://lib/\") ||\n isAbsolute(locator)\n ) {\n return undefined;\n }\n\n const workingDirectory = getCLICwd();\n return {\n inputUri: uri,\n resolvedArchivePath: resolve(workingDirectory, locator),\n workingDirectory,\n };\n}\n\nfunction resolveCLIArchivePath(locator: string): string {\n if (locator === \"~\") return getCLIHomeDirectory();\n if (locator.startsWith(\"~/\")) {\n return resolve(getCLIHomeDirectory(), locator.slice(2));\n }\n return resolve(getCLICwd(), locator);\n}\n\nfunction getCLIHomeDirectory(): string {\n const environmentHome = getCLIEnvValue(\"HOME\")?.trim();\n return environmentHome === undefined || environmentHome === \"\"\n ? homedir()\n : environmentHome;\n}\n","import { existsSync, readFileSync } from \"fs\";\nimport { dirname, join, parse, resolve } from \"path\";\n\nimport { getCLICwd } from \"../runtime/context.js\";\n\nfunction isCLIPackageJSON(path: string): boolean {\n const parsed: unknown = JSON.parse(readFileSync(path, \"utf8\"));\n\n return (\n typeof parsed === \"object\" &&\n parsed !== null &&\n \"name\" in parsed &&\n parsed.name === \"wiki-graph\"\n );\n}\n\nfunction findPackageJSONPathFromWorkingDirectory(): string | undefined {\n let currentDirectoryPath = getCLICwd();\n const rootDirectoryPath = parse(currentDirectoryPath).root;\n\n while (true) {\n for (const candidatePath of [\n join(currentDirectoryPath, \"package.json\"),\n join(currentDirectoryPath, \"packages\", \"cli\", \"package.json\"),\n ]) {\n if (existsSync(candidatePath) && isCLIPackageJSON(candidatePath)) {\n return candidatePath;\n }\n }\n\n if (currentDirectoryPath === rootDirectoryPath) {\n return undefined;\n }\n\n currentDirectoryPath = dirname(currentDirectoryPath);\n }\n}\n\nfunction resolvePackageJSONPath(): string {\n const injectedCLIDistDirectoryPath = (\n globalThis as { __WIKIGRAPH_CLI_DIST_DIR__?: unknown }\n ).__WIKIGRAPH_CLI_DIST_DIR__;\n\n const candidatePaths = [\n typeof injectedCLIDistDirectoryPath === \"string\"\n ? resolve(injectedCLIDistDirectoryPath, \"../package.json\")\n : undefined,\n findPackageJSONPathFromWorkingDirectory(),\n ];\n\n for (const candidatePath of candidatePaths) {\n if (candidatePath !== undefined && existsSync(candidatePath)) {\n return candidatePath;\n }\n }\n\n throw new Error(\"Could not locate CLI package.json\");\n}\n\nexport function readCLIVersion(): string {\n const packageJSONPath = resolvePackageJSONPath();\n const parsed: unknown = JSON.parse(readFileSync(packageJSONPath, \"utf8\"));\n\n if (\n typeof parsed === \"object\" &&\n parsed !== null &&\n \"version\" in parsed &&\n typeof parsed.version === \"string\"\n ) {\n return parsed.version;\n }\n\n throw new Error(`Invalid package version in ${packageJSONPath}`);\n}\n","export * from \"./errors.js\";\nexport * from \"./formats.js\";\nexport * from \"./io.js\";\nexport * from \"./json.js\";\nexport * from \"./shell.js\";\nexport * from \"./tree.js\";\nexport * from \"./uri.js\";\nexport * from \"./version.js\";\n","import { openSharedStateDatabase } from \"wiki-graph-core\";\nimport { getCLIStateDir } from \"./context.js\";\nimport { NodeFile } from \"./node-platform.js\";\nimport { join } from \"path\";\nimport { homedir } from \"os\";\nimport type { Database } from \"wiki-graph-core\";\n\nexport const LOCAL_CONFIG_SECTIONS = [\n \"concurrent\",\n \"embeddings\",\n \"llm\",\n \"wikispine\",\n] as const;\n\nexport type LocalConfigSection = (typeof LOCAL_CONFIG_SECTIONS)[number];\n\nexport type LocalConfigObject = Readonly<Record<string, unknown>>;\n\nconst LOCAL_CONFIG_SCHEMA_SQL = `\nCREATE TABLE IF NOT EXISTS config_sections (\n section TEXT PRIMARY KEY,\n value_json TEXT NOT NULL,\n updated_at INTEGER NOT NULL\n);\n`;\n\nexport async function readLocalConfigSection(\n section: LocalConfigSection,\n): Promise<LocalConfigObject> {\n return await withLocalConfigDatabase(async (database) => {\n return await readLocalConfigSectionInDatabase(database, section);\n });\n}\n\nexport async function replaceLocalConfigSection(\n section: LocalConfigSection,\n value: LocalConfigObject,\n): Promise<LocalConfigObject> {\n const normalized = validateLocalConfigSection(section, value);\n\n return await withLocalConfigDatabase(async (database) => {\n await writeLocalConfigSectionInDatabase(database, section, normalized);\n return normalized;\n });\n}\n\nexport async function putLocalConfigValue(\n section: LocalConfigSection,\n key: string,\n value: unknown,\n): Promise<LocalConfigObject> {\n return await withLocalConfigDatabase(async (database) => {\n const current = await readLocalConfigSectionInDatabase(database, section);\n const next = validateLocalConfigSection(section, {\n ...current,\n [normalizeLocalConfigKey(section, key)]: value,\n });\n\n await writeLocalConfigSectionInDatabase(database, section, next);\n return next;\n });\n}\n\nexport async function deleteLocalConfigValue(\n section: LocalConfigSection,\n key: string,\n): Promise<LocalConfigObject> {\n return await withLocalConfigDatabase(async (database) => {\n const current = await readLocalConfigSectionInDatabase(database, section);\n const normalizedKey = normalizeLocalConfigKey(section, key);\n const { [normalizedKey]: _removed, ...nextInput } = current;\n const next = validateLocalConfigSection(section, nextInput);\n\n await writeLocalConfigSectionInDatabase(database, section, next);\n return next;\n });\n}\n\nexport async function clearLocalConfigSection(\n section: LocalConfigSection,\n): Promise<LocalConfigObject> {\n return await replaceLocalConfigSection(section, {});\n}\n\nexport function parseLocalConfigSection(\n value: string | undefined,\n): LocalConfigSection | undefined {\n if (value === \"embedding\") {\n return \"embeddings\";\n }\n\n return LOCAL_CONFIG_SECTIONS.find((section) => section === value);\n}\n\nexport function maskLocalConfigSection(\n section: LocalConfigSection,\n value: LocalConfigObject,\n): LocalConfigObject {\n if (\n (section !== \"llm\" && section !== \"embeddings\") ||\n value.apiKey === undefined\n ) {\n return value;\n }\n\n return {\n ...value,\n apiKey: \"****\",\n };\n}\n\nexport function normalizeLocalConfigKey(\n section: LocalConfigSection,\n key: string,\n): string {\n const normalized = key.trim();\n\n if (normalized === \"\") {\n throw new Error(\"Config key cannot be empty.\");\n }\n\n if (section === \"llm\" || section === \"embeddings\") {\n switch (normalized) {\n case \"api-key\":\n return \"apiKey\";\n case \"base-url\":\n return \"baseURL\";\n default:\n return normalized;\n }\n }\n return normalized;\n}\n\nexport function validateLocalConfigSection(\n section: LocalConfigSection,\n value: LocalConfigObject,\n): LocalConfigObject {\n switch (section) {\n case \"embeddings\":\n return validateEmbeddingsConfig(value);\n case \"llm\":\n return validateLLMConfig(value);\n case \"concurrent\":\n return validateConcurrentConfig(value);\n case \"wikispine\":\n return validateWikispineConfig(value);\n }\n}\n\nasync function withLocalConfigDatabase<T>(\n operation: (database: Database) => Promise<T>,\n): Promise<T> {\n const database = await openSharedStateDatabase(\n new NodeFile(\n join(getCLIStateDir() ?? join(homedir(), \".wikigraph\"), \"core.sqlite\"),\n ),\n LOCAL_CONFIG_SCHEMA_SQL,\n );\n\n try {\n return await operation(database);\n } finally {\n await database.close();\n }\n}\n\nasync function readLocalConfigSectionInDatabase(\n database: Database,\n section: LocalConfigSection,\n): Promise<LocalConfigObject> {\n const value = await database.queryOne(\n \"SELECT value_json FROM config_sections WHERE section = ?\",\n [section],\n (row) => String(row.value_json),\n );\n\n return value === undefined ? {} : parseSectionJSON(section, value);\n}\n\nasync function writeLocalConfigSectionInDatabase(\n database: Database,\n section: LocalConfigSection,\n value: LocalConfigObject,\n): Promise<void> {\n await database.run(\n `\nINSERT INTO config_sections (section, value_json, updated_at)\nVALUES (?, ?, ?)\nON CONFLICT(section) DO UPDATE SET\n value_json = excluded.value_json,\n updated_at = excluded.updated_at\n`,\n [section, JSON.stringify(value), Date.now()],\n );\n}\n\nfunction parseSectionJSON(\n section: LocalConfigSection,\n value: string,\n): LocalConfigObject {\n let parsed: unknown;\n\n try {\n parsed = JSON.parse(value);\n } catch (error) {\n throw new Error(\n `Invalid local config JSON for ${section}: ${formatError(error)}`,\n );\n }\n\n if (parsed === null || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n throw new Error(\n `Invalid local config section ${section}: expected object.`,\n );\n }\n\n return validateLocalConfigSection(section, parsed as LocalConfigObject);\n}\n\nfunction validateEmbeddingsConfig(value: LocalConfigObject): LocalConfigObject {\n const allowedKeys = new Set([\n \"apiKey\",\n \"baseURL\",\n \"dimensions\",\n \"model\",\n \"name\",\n \"provider\",\n ]);\n const allowedProviders = new Set([\"openai\", \"openai-compatible\"]);\n const next: Record<string, unknown> = {};\n\n for (const [key, entry] of Object.entries(value)) {\n if (!allowedKeys.has(key)) {\n throw new Error(`Unknown embeddings config key: ${key}`);\n }\n if (key === \"dimensions\") {\n const parsed =\n typeof entry === \"number\"\n ? entry\n : typeof entry === \"string\"\n ? Number(entry)\n : NaN;\n\n if (!Number.isInteger(parsed) || parsed <= 0) {\n throw new Error(\"embeddings.dimensions must be a positive integer.\");\n }\n next[key] = parsed;\n continue;\n }\n if (typeof entry !== \"string\" || entry.trim() === \"\") {\n throw new Error(`embeddings.${key} must be a non-empty string.`);\n }\n const normalized = entry.trim();\n\n if (key === \"provider\" && !allowedProviders.has(normalized)) {\n throw new Error(`Unknown embeddings.provider: ${normalized}`);\n }\n\n next[key] = normalized;\n }\n\n return next;\n}\n\nfunction validateLLMConfig(value: LocalConfigObject): LocalConfigObject {\n const allowedKeys = new Set([\n \"apiKey\",\n \"baseURL\",\n \"model\",\n \"name\",\n \"provider\",\n ]);\n const allowedProviders = new Set([\n \"anthropic\",\n \"google\",\n \"openai\",\n \"openai-compatible\",\n ]);\n const next: Record<string, unknown> = {};\n\n for (const [key, entry] of Object.entries(value)) {\n if (!allowedKeys.has(key)) {\n throw new Error(`Unknown llm config key: ${key}`);\n }\n if (typeof entry !== \"string\" || entry.trim() === \"\") {\n throw new Error(`llm.${key} must be a non-empty string.`);\n }\n const normalized = entry.trim();\n\n if (key === \"provider\" && !allowedProviders.has(normalized)) {\n throw new Error(`Unknown llm.provider: ${normalized}`);\n }\n\n next[key] = normalized;\n }\n\n return next;\n}\n\nfunction validateConcurrentConfig(value: LocalConfigObject): LocalConfigObject {\n const allowedKeys = new Set([\"job\", \"request\"]);\n const next: Record<string, unknown> = {};\n\n for (const [key, entry] of Object.entries(value)) {\n if (!allowedKeys.has(key)) {\n throw new Error(`Unknown concurrent config key: ${key}`);\n }\n const parsed =\n typeof entry === \"number\"\n ? entry\n : typeof entry === \"string\"\n ? Number(entry)\n : NaN;\n\n if (!Number.isInteger(parsed) || parsed <= 0) {\n throw new Error(`concurrent.${key} must be a positive integer.`);\n }\n next[key] = parsed;\n }\n\n return next;\n}\n\nfunction validateWikispineConfig(value: LocalConfigObject): LocalConfigObject {\n const allowedKeys = new Set([\"provider\"]);\n const allowedProviders = new Set([\"cli\", \"fetch\"]);\n const next: Record<string, unknown> = {};\n\n for (const [key, entry] of Object.entries(value)) {\n if (!allowedKeys.has(key)) {\n throw new Error(`Unknown wikispine config key: ${key}`);\n }\n if (typeof entry !== \"string\" || entry.trim() === \"\") {\n throw new Error(`wikispine.${key} must be a non-empty string.`);\n }\n const normalized = entry.trim();\n\n if (key === \"provider\" && !allowedProviders.has(normalized)) {\n throw new Error(`Unknown wikispine.provider: ${normalized}`);\n }\n\n next[key] = normalized;\n }\n\n return next;\n}\n\nfunction formatError(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n","import { z } from \"zod\";\n\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../support/index.js\";\nimport { readLocalConfigSection } from \"./local-config.js\";\n\nconst CLI_PROVIDER_VALUES = [\n \"anthropic\",\n \"google\",\n \"openai\",\n \"openai-compatible\",\n] as const;\n\nconst cliProviderSchema = z.enum(CLI_PROVIDER_VALUES);\nconst inlineLLMConfigSchema = z.object({\n apiKey: z.string().min(1).optional(),\n baseURL: z.string().min(1).optional(),\n baseUrl: z.string().min(1).optional(),\n chatCompletionsUrl: z.string().min(1).optional(),\n llm: z\n .object({\n apiKey: z.string().min(1).optional(),\n baseURL: z.string().min(1).optional(),\n baseUrl: z.string().min(1).optional(),\n chatCompletionsUrl: z.string().min(1).optional(),\n model: z.string().min(1).optional(),\n name: z.string().min(1).optional(),\n provider: cliProviderSchema.optional(),\n })\n .optional(),\n model: z.string().min(1).optional(),\n name: z.string().min(1).optional(),\n provider: cliProviderSchema.optional(),\n});\n\nexport type CLIProvider = z.infer<typeof cliProviderSchema>;\n\nexport interface CLIConfig {\n readonly embedding?: {\n readonly apiKey?: string;\n readonly baseURL?: string;\n readonly dimensions?: number;\n readonly model?: string;\n readonly name?: string;\n readonly provider?: \"openai\" | \"openai-compatible\";\n };\n readonly llm?: {\n readonly apiKey?: string;\n readonly baseURL?: string;\n readonly model?: string;\n readonly name?: string;\n readonly provider?: CLIProvider;\n };\n readonly prompt?: string;\n readonly concurrent?: {\n readonly job?: number;\n readonly request?: number;\n };\n readonly wikispine?: {\n readonly provider?: \"cli\" | \"fetch\";\n };\n}\n\ntype InlineLLMConfig = NonNullable<CLIConfig[\"llm\"]>;\n\nexport async function loadCLIConfig(options?: {\n readonly llmJSON?: string;\n}): Promise<CLIConfig> {\n const [embedding, localLLM, concurrent, wikispine] = await Promise.all([\n readLocalConfigSection(\"embeddings\"),\n readLocalConfigSection(\"llm\"),\n readLocalConfigSection(\"concurrent\"),\n readLocalConfigSection(\"wikispine\"),\n ]);\n const inlineLLMConfig =\n options?.llmJSON === undefined\n ? undefined\n : parseInlineLLMConfig(options.llmJSON);\n const llm = createLLMConfig({\n apiKey: firstDefined(inlineLLMConfig?.apiKey, readString(localLLM.apiKey)),\n baseURL: firstDefined(\n inlineLLMConfig?.baseURL,\n readString(localLLM.baseURL),\n ),\n model: firstDefined(inlineLLMConfig?.model, readString(localLLM.model)),\n name: firstDefined(inlineLLMConfig?.name, readString(localLLM.name)),\n provider: firstDefined(\n inlineLLMConfig?.provider,\n readProvider(localLLM.provider),\n ),\n });\n const requestConcurrent = readPositiveInteger(concurrent.request);\n const jobConcurrent = readPositiveInteger(concurrent.job);\n const wikispineConfig = createWikispineConfig(wikispine);\n const embeddingConfig = createEmbeddingConfig(embedding);\n\n return {\n ...(jobConcurrent === undefined && requestConcurrent === undefined\n ? {}\n : {\n concurrent: {\n ...(jobConcurrent === undefined ? {} : { job: jobConcurrent }),\n ...(requestConcurrent === undefined\n ? {}\n : { request: requestConcurrent }),\n },\n }),\n ...(embeddingConfig === undefined ? {} : { embedding: embeddingConfig }),\n ...(llm === undefined ? {} : { llm }),\n ...(wikispineConfig === undefined ? {} : { wikispine: wikispineConfig }),\n };\n}\n\nfunction createEmbeddingConfig(\n input: Record<string, unknown> | undefined,\n): CLIConfig[\"embedding\"] | undefined {\n const value = input ?? {};\n const provider = readEmbeddingProvider(value.provider);\n const apiKey = readString(value.apiKey);\n const baseURL = readString(value.baseURL);\n const dimensions =\n typeof value.dimensions === \"number\" &&\n Number.isInteger(value.dimensions) &&\n value.dimensions > 0\n ? value.dimensions\n : undefined;\n const model = readString(value.model);\n const name = readString(value.name);\n\n if (\n provider === undefined ||\n model === undefined ||\n (provider === \"openai-compatible\" && baseURL === undefined) ||\n (provider === \"openai\" && baseURL !== undefined)\n ) {\n return undefined;\n }\n\n return {\n ...(apiKey === undefined ? {} : { apiKey }),\n ...(baseURL === undefined ? {} : { baseURL }),\n ...(dimensions === undefined ? {} : { dimensions }),\n ...(model === undefined ? {} : { model }),\n ...(name === undefined ? {} : { name }),\n ...(provider === undefined ? {} : { provider }),\n };\n}\n\nfunction parseInlineLLMConfig(value: string): InlineLLMConfig | undefined {\n const normalized = normalizeString(value);\n\n if (normalized === undefined) {\n throw new Error(\n withHelpRoute(\n \"--llm must be a non-empty JSON object.\",\n CLI_HELP_ROUTES.config,\n ),\n );\n }\n\n let parsedJson: unknown;\n\n try {\n parsedJson = JSON.parse(normalized);\n } catch (error) {\n throw new Error(\n withHelpRoute(\n `Invalid --llm JSON: ${formatError(error)}`,\n CLI_HELP_ROUTES.config,\n ),\n );\n }\n\n const parsed = inlineLLMConfigSchema.safeParse(parsedJson);\n\n if (!parsed.success) {\n throw new Error(\n withHelpRoute(\n `Invalid --llm config: ${parsed.error.issues\n .map(\n (issue) => `${issue.path.join(\".\") || \"<root>\"}: ${issue.message}`,\n )\n .join(\"; \")}`,\n CLI_HELP_ROUTES.config,\n ),\n );\n }\n\n const input = parsed.data.llm ?? parsed.data;\n const provider = input.provider ?? inferInlineProvider(input);\n const baseURL = resolveInlineBaseURL(input);\n const config = createLLMConfig({\n apiKey: input.apiKey,\n baseURL,\n model: input.model,\n name: input.name,\n provider,\n });\n\n if (config === undefined) {\n throw new Error(\n withHelpRoute(\n \"--llm must contain at least one supported LLM field.\",\n CLI_HELP_ROUTES.config,\n ),\n );\n }\n\n return config;\n}\n\nfunction inferInlineProvider(input: {\n readonly baseURL?: string | undefined;\n readonly baseUrl?: string | undefined;\n readonly chatCompletionsUrl?: string | undefined;\n readonly provider?: CLIProvider | undefined;\n}): CLIProvider | undefined {\n if (\n input.provider === undefined &&\n (input.baseURL !== undefined ||\n input.baseUrl !== undefined ||\n input.chatCompletionsUrl !== undefined)\n ) {\n return \"openai-compatible\";\n }\n\n return input.provider;\n}\n\nfunction inferBaseURLFromChatCompletionsURL(input: {\n readonly chatCompletionsUrl?: string | undefined;\n}): string | undefined {\n if (input.chatCompletionsUrl === undefined) {\n return undefined;\n }\n\n const suffix = \"/chat/completions\";\n\n if (!input.chatCompletionsUrl.endsWith(suffix)) {\n throw new Error(\n withHelpRoute(\n \"--llm chatCompletionsUrl must end with /chat/completions when baseURL is not provided.\",\n CLI_HELP_ROUTES.config,\n ),\n );\n }\n\n return input.chatCompletionsUrl.slice(0, -suffix.length);\n}\n\nfunction resolveInlineBaseURL(input: {\n readonly baseURL?: string | undefined;\n readonly baseUrl?: string | undefined;\n readonly chatCompletionsUrl?: string | undefined;\n}): string | undefined {\n if (input.baseURL !== undefined) {\n return input.baseURL;\n }\n if (input.baseUrl !== undefined) {\n return input.baseUrl;\n }\n\n return inferBaseURLFromChatCompletionsURL(input);\n}\n\nfunction createLLMConfig(input: {\n readonly apiKey: string | undefined;\n readonly baseURL: string | undefined;\n readonly model: string | undefined;\n readonly name: string | undefined;\n readonly provider: CLIProvider | undefined;\n}): CLIConfig[\"llm\"] {\n if (\n input.apiKey === undefined &&\n input.baseURL === undefined &&\n input.model === undefined &&\n input.name === undefined &&\n input.provider === undefined\n ) {\n return undefined;\n }\n\n return {\n ...(input.apiKey === undefined ? {} : { apiKey: input.apiKey }),\n ...(input.baseURL === undefined ? {} : { baseURL: input.baseURL }),\n ...(input.model === undefined ? {} : { model: input.model }),\n ...(input.name === undefined ? {} : { name: input.name }),\n ...(input.provider === undefined ? {} : { provider: input.provider }),\n };\n}\n\nfunction readProvider(value: unknown): CLIProvider | undefined {\n if (typeof value !== \"string\") {\n return undefined;\n }\n\n const parsed = cliProviderSchema.safeParse(value);\n\n return parsed.success ? parsed.data : undefined;\n}\n\nfunction createWikispineConfig(\n value: Record<string, unknown>,\n): CLIConfig[\"wikispine\"] | undefined {\n const provider = readWikispineProvider(value.provider);\n\n if (provider === undefined) {\n return undefined;\n }\n\n return { provider };\n}\n\nfunction readWikispineProvider(value: unknown): \"cli\" | \"fetch\" | undefined {\n return value === \"cli\" || value === \"fetch\" ? value : undefined;\n}\n\nfunction readEmbeddingProvider(\n value: unknown,\n): \"openai\" | \"openai-compatible\" | undefined {\n return value === \"openai\" || value === \"openai-compatible\"\n ? value\n : undefined;\n}\n\nfunction readString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\n\nfunction readPositiveInteger(value: unknown): number | undefined {\n return typeof value === \"number\" && Number.isInteger(value) && value > 0\n ? value\n : undefined;\n}\n\nfunction firstDefined<T>(\n first: T | undefined,\n second: T | undefined,\n): T | undefined {\n return first ?? second;\n}\n\nfunction normalizeString(value: string | undefined): string | undefined {\n const normalized = value?.trim();\n\n return normalized === undefined || normalized === \"\" ? undefined : normalized;\n}\n\nfunction formatError(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n","import type { SearchIndexEmbeddingProvider } from \"wiki-graph-core\";\n\nimport { embed, embedMany } from \"ai\";\nimport { createOpenAI } from \"@ai-sdk/openai\";\nimport { createOpenAICompatible } from \"@ai-sdk/openai-compatible\";\n\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../support/index.js\";\nimport { readLocalConfigSection } from \"./local-config.js\";\n\nexport type CLIEmbeddingProvider = \"openai\" | \"openai-compatible\";\n\nexport interface CLIEmbeddingConfig {\n readonly apiKey?: string;\n readonly baseURL?: string;\n readonly dimensions?: number;\n readonly model?: string;\n readonly name?: string;\n readonly provider?: CLIEmbeddingProvider;\n}\n\nexport interface QueryEmbeddingResult {\n readonly dimensions: number;\n readonly embedding: readonly number[];\n readonly model: string;\n readonly provider: CLIEmbeddingProvider;\n readonly usage?: {\n readonly tokens?: number;\n };\n}\n\nconst EMBEDDING_BATCH_SIZE = 10;\n\nexport async function readEmbeddingConfig(): Promise<CLIEmbeddingConfig> {\n const config = await readLocalConfigSection(\"embeddings\");\n\n return {\n ...(typeof config.apiKey === \"string\" ? { apiKey: config.apiKey } : {}),\n ...(typeof config.baseURL === \"string\" ? { baseURL: config.baseURL } : {}),\n ...(typeof config.dimensions === \"number\"\n ? { dimensions: config.dimensions }\n : {}),\n ...(typeof config.model === \"string\" ? { model: config.model } : {}),\n ...(typeof config.name === \"string\" ? { name: config.name } : {}),\n ...(typeof config.provider === \"string\"\n ? { provider: parseEmbeddingProvider(config.provider) }\n : {}),\n };\n}\n\nexport async function embedQueryText(\n value: string,\n config: CLIEmbeddingConfig = {},\n): Promise<QueryEmbeddingResult> {\n const normalized = value.trim();\n\n if (normalized === \"\") {\n throw new Error(\"Query text cannot be empty.\");\n }\n\n const provider = requireEmbeddingProvider(config.provider);\n const model = requireEmbeddingModel(config.model);\n const embeddingModel = createEmbeddingModel(provider, model, config);\n const providerOptions = createEmbeddingProviderOptions(provider, config);\n const result = await embed({\n model: embeddingModel,\n ...(providerOptions === undefined ? {} : { providerOptions }),\n value: normalized,\n });\n\n return {\n dimensions: result.embedding.length,\n embedding: result.embedding,\n model,\n provider,\n ...(result.usage.tokens === undefined\n ? {}\n : { usage: { tokens: result.usage.tokens } }),\n };\n}\n\nexport function buildSearchIndexEmbeddingProvider(\n config: CLIEmbeddingConfig,\n): SearchIndexEmbeddingProvider {\n const provider = requireEmbeddingProvider(config.provider);\n const model = requireEmbeddingModel(config.model);\n const embeddingModel = createEmbeddingModel(provider, model, config);\n const providerOptions = createEmbeddingProviderOptions(provider, config);\n\n return {\n ...(config.dimensions === undefined\n ? {}\n : { dimensions: config.dimensions }),\n identity: createEmbeddingIdentity(provider, model, config),\n model,\n embedTexts: async (texts, options) => {\n const embeddings: number[][] = [];\n let tokens = 0;\n\n for (const batch of chunkTexts(texts, EMBEDDING_BATCH_SIZE)) {\n options?.signal?.throwIfAborted();\n const result = await embedMany({\n ...(options?.signal === undefined\n ? {}\n : { abortSignal: options.signal }),\n model: embeddingModel,\n ...(providerOptions === undefined ? {} : { providerOptions }),\n values: [...batch],\n });\n\n embeddings.push(...result.embeddings);\n tokens += result.usage.tokens ?? 0;\n }\n return {\n embeddings,\n ...(tokens === 0 ? {} : { tokens }),\n };\n },\n };\n}\n\nfunction createEmbeddingIdentity(\n provider: CLIEmbeddingProvider,\n model: string,\n config: CLIEmbeddingConfig,\n): string {\n return JSON.stringify({\n ...(config.baseURL === undefined ? {} : { baseURL: config.baseURL }),\n ...(config.dimensions === undefined\n ? {}\n : { dimensions: config.dimensions }),\n model,\n provider,\n });\n}\n\nfunction* chunkTexts(\n texts: readonly string[],\n size: number,\n): Iterable<readonly string[]> {\n for (let index = 0; index < texts.length; index += size) {\n yield texts.slice(index, index + size);\n }\n}\n\nexport async function embedQueryTextWithLocalConfig(\n value: string,\n): Promise<QueryEmbeddingResult> {\n return await embedQueryText(value, await readEmbeddingConfig());\n}\n\nfunction createEmbeddingModel(\n provider: CLIEmbeddingProvider,\n model: string,\n config: CLIEmbeddingConfig,\n) {\n switch (provider) {\n case \"openai\": {\n if (config.baseURL !== undefined) {\n throw new Error(\n withHelpRoute(\n \"openai does not accept embeddings.baseURL. Use openai-compatible for third-party OpenAI-style embeddings APIs.\",\n CLI_HELP_ROUTES.config,\n ),\n );\n }\n\n return createOpenAI({\n ...(config.apiKey === undefined ? {} : { apiKey: config.apiKey }),\n ...(config.name === undefined ? {} : { name: config.name }),\n }).embeddingModel(model);\n }\n case \"openai-compatible\": {\n if (config.baseURL === undefined) {\n throw new Error(\n withHelpRoute(\n \"openai-compatible requires embeddings.baseURL.\",\n CLI_HELP_ROUTES.config,\n ),\n );\n }\n\n return createOpenAICompatible({\n baseURL: config.baseURL,\n name: config.name ?? createOpenAICompatibleName(config.baseURL),\n ...(config.apiKey === undefined ? {} : { apiKey: config.apiKey }),\n }).embeddingModel(model);\n }\n }\n}\n\nfunction createEmbeddingProviderOptions(\n provider: CLIEmbeddingProvider,\n config: CLIEmbeddingConfig,\n): Record<string, { readonly dimensions: number }> | undefined {\n if (config.dimensions === undefined) {\n return undefined;\n }\n\n return {\n [getEmbeddingProviderOptionsName(provider, config)]: {\n dimensions: config.dimensions,\n },\n };\n}\n\nfunction getEmbeddingProviderOptionsName(\n provider: CLIEmbeddingProvider,\n _config: CLIEmbeddingConfig,\n): string {\n if (provider === \"openai\") {\n return \"openai\";\n }\n return \"openaiCompatible\";\n}\n\nfunction requireEmbeddingProvider(\n provider: CLIEmbeddingProvider | undefined,\n): CLIEmbeddingProvider {\n if (provider !== undefined) {\n return provider;\n }\n\n throw new Error(\n withHelpRoute(\n \"Missing embeddings configuration. Configure `wikg://local/config/embeddings` with provider and model.\",\n CLI_HELP_ROUTES.config,\n ),\n );\n}\n\nfunction requireEmbeddingModel(model: string | undefined): string {\n if (model !== undefined) {\n return model;\n }\n\n throw new Error(\n withHelpRoute(\n \"Missing embeddings.model. Configure `wikg://local/config/embeddings` before using Dense search.\",\n CLI_HELP_ROUTES.config,\n ),\n );\n}\n\nfunction parseEmbeddingProvider(value: string): CLIEmbeddingProvider {\n switch (value) {\n case \"openai\":\n case \"openai-compatible\":\n return value;\n default:\n throw new Error(\n `Invalid embeddings.provider: ${value}. Expected openai or openai-compatible.`,\n );\n }\n}\n\nfunction createOpenAICompatibleName(baseURL: string): string {\n try {\n return new URL(baseURL).hostname;\n } catch {\n return \"openai-compatible\";\n }\n}\n","import type { WikiGraphLLMOptions } from \"wiki-graph-core\";\n\nimport { createAnthropic } from \"@ai-sdk/anthropic\";\nimport { createGoogleGenerativeAI } from \"@ai-sdk/google\";\nimport { createOpenAI } from \"@ai-sdk/openai\";\nimport { createOpenAICompatible } from \"@ai-sdk/openai-compatible\";\n\nimport type { CLIConfig, CLIProvider } from \"./config.js\";\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../support/index.js\";\n\nexport function buildLLMOptions(config: CLIConfig): WikiGraphLLMOptions {\n const llm = config.llm;\n\n if (llm?.provider === undefined || llm.model === undefined) {\n throw new Error(\n withHelpRoute(\n \"Missing LLM configuration. Set --llm for one run, or configure `wikg://local/config/llm` with provider and model.\",\n CLI_HELP_ROUTES.config,\n ),\n );\n }\n\n return {\n model: createLanguageModel(llm.provider, llm.model, {\n apiKey: llm.apiKey,\n baseURL: llm.baseURL,\n name: llm.name,\n }),\n ...(config.concurrent?.request === undefined\n ? {}\n : { concurrent: config.concurrent.request }),\n };\n}\n\nfunction createLanguageModel(\n provider: CLIProvider,\n model: string,\n options: {\n readonly apiKey: string | undefined;\n readonly baseURL: string | undefined;\n readonly name: string | undefined;\n },\n) {\n switch (provider) {\n case \"anthropic\": {\n const anthropic = createAnthropic({\n ...(options.apiKey === undefined ? {} : { apiKey: options.apiKey }),\n ...(options.name === undefined ? {} : { name: options.name }),\n });\n\n return anthropic(model);\n }\n case \"google\": {\n const google = createGoogleGenerativeAI({\n ...(options.apiKey === undefined ? {} : { apiKey: options.apiKey }),\n ...(options.name === undefined ? {} : { name: options.name }),\n });\n\n return google(model);\n }\n case \"openai\": {\n if (options.baseURL !== undefined) {\n throw new Error(\n withHelpRoute(\n \"openai does not accept llm.baseURL or baseURL in --llm JSON. Use openai-compatible for third-party OpenAI-style APIs.\",\n CLI_HELP_ROUTES.config,\n ),\n );\n }\n\n const openai = createOpenAI({\n ...(options.apiKey === undefined ? {} : { apiKey: options.apiKey }),\n ...(options.name === undefined ? {} : { name: options.name }),\n });\n\n return openai(model);\n }\n case \"openai-compatible\": {\n if (options.baseURL === undefined) {\n throw new Error(\n withHelpRoute(\n \"openai-compatible requires llm.baseURL or baseURL in --llm JSON.\",\n CLI_HELP_ROUTES.config,\n ),\n );\n }\n\n const openaiCompatible = createOpenAICompatible({\n baseURL: options.baseURL,\n name: options.name ?? createOpenAICompatibleName(options.baseURL),\n ...(options.apiKey === undefined ? {} : { apiKey: options.apiKey }),\n });\n\n return openaiCompatible(model);\n }\n }\n}\n\nfunction createOpenAICompatibleName(baseURL: string): string {\n try {\n return new URL(baseURL).hostname;\n } catch {\n return \"openai-compatible\";\n }\n}\n","import type { BuildJobTarget } from \"wiki-graph-core\";\n\nexport interface GenerationConcurrency {\n readonly job: number;\n readonly request: number;\n}\n\nexport const DEFAULT_GENERATION_JOB_CONCURRENCY = 3;\nexport const DEFAULT_GENERATION_REQUEST_CONCURRENCY = 6;\n\nexport interface GenerationPlanningCost {\n readonly model: string;\n readonly timeSeconds: {\n readonly max: number;\n readonly min: number;\n };\n readonly tokens: {\n readonly cacheableInput: number;\n readonly input: number;\n readonly output: number;\n };\n}\n\nexport interface GenerationPerformanceHint {\n readonly command: string;\n readonly current: number;\n readonly kind: \"job\" | \"request\";\n readonly message: string;\n readonly recommended: number;\n}\n\nexport function planGenerationTask(\n task: BuildJobTarget,\n words: number,\n chapters: number,\n concurrent: GenerationConcurrency,\n model: string,\n): GenerationPlanningCost {\n const profile = getGenerationPlanningProfile(task);\n const calls = Math.max(chapters, Math.ceil(words / profile.wordsPerCall));\n const effectiveConcurrency = Math.max(\n 1,\n task === \"reading-graph\" ? 1 : concurrent.request,\n );\n const callBatches = Math.ceil(calls / effectiveConcurrency);\n const wordSeconds = words * profile.secondsPerWord;\n\n return {\n model,\n timeSeconds: {\n max: Math.ceil(callBatches * profile.maxSecondsPerCall + wordSeconds),\n min: Math.ceil(callBatches * profile.minSecondsPerCall + wordSeconds),\n },\n tokens: {\n cacheableInput: Math.ceil(words * profile.cacheableInputTokenPerWord),\n input: Math.ceil(words * profile.inputTokenPerWord),\n output: Math.ceil(words * profile.outputTokenPerWord),\n },\n };\n}\n\nexport function createGenerationPerformanceHints(input: {\n readonly chapters: number;\n readonly concurrent: GenerationConcurrency;\n readonly hasJobWork: boolean;\n readonly hasRequestWork: boolean;\n}): readonly GenerationPerformanceHint[] {\n if (!input.hasJobWork) {\n return [];\n }\n\n const hints: GenerationPerformanceHint[] = [];\n\n const recommendedRequest =\n input.concurrent.request < 4\n ? DEFAULT_GENERATION_REQUEST_CONCURRENCY\n : input.concurrent.request < 8\n ? 8\n : undefined;\n\n if (input.hasRequestWork && recommendedRequest !== undefined) {\n hints.push({\n command: `wg wikg://local/config/concurrent put request ${recommendedRequest}`,\n current: input.concurrent.request,\n kind: \"request\",\n message:\n \"LLM request concurrency can often be higher. Use at least 4; 6-8 is usually faster when the provider allows it.\",\n recommended: recommendedRequest,\n });\n }\n\n if (input.concurrent.job < 4 && input.chapters > 1) {\n hints.push({\n command: \"wg wikg://local/config/concurrent put job 4\",\n current: input.concurrent.job,\n kind: \"job\",\n message:\n \"Multiple chapters need work and job concurrency is below 4. Raising it lets chapter jobs run in parallel.\",\n recommended: 4,\n });\n }\n\n return hints;\n}\n\nexport function formatGenerationPlanningModel(\n llm: { readonly model?: string; readonly provider?: string } | undefined,\n): string {\n if (llm?.model === undefined) {\n return \"not configured\";\n }\n\n return llm.provider === undefined\n ? llm.model\n : `${llm.provider}/${llm.model}`;\n}\n\nexport function formatGenerationPlanningDuration(seconds: number): string {\n if (seconds < 60) {\n return `${seconds}s`;\n }\n\n const minutes = Math.round(seconds / 60);\n\n if (minutes < 60) {\n return `${minutes}m`;\n }\n\n return `${Math.round(minutes / 60)}h`;\n}\n\nfunction getGenerationPlanningProfile(task: BuildJobTarget): {\n readonly inputTokenPerWord: number;\n readonly cacheableInputTokenPerWord: number;\n readonly maxSecondsPerCall: number;\n readonly minSecondsPerCall: number;\n readonly outputTokenPerWord: number;\n readonly secondsPerWord: number;\n readonly wordsPerCall: number;\n} {\n switch (task) {\n case \"index-fts\":\n return {\n cacheableInputTokenPerWord: 0,\n inputTokenPerWord: 0,\n maxSecondsPerCall: 1,\n minSecondsPerCall: 0,\n outputTokenPerWord: 0,\n secondsPerWord: 0.0005,\n wordsPerCall: 100_000,\n };\n case \"index-embedding-source\":\n case \"index-embedding-summary\":\n return {\n cacheableInputTokenPerWord: 0,\n inputTokenPerWord: 0,\n maxSecondsPerCall: 10,\n minSecondsPerCall: 1,\n outputTokenPerWord: 0,\n secondsPerWord: 0.002,\n wordsPerCall: 10_000,\n };\n case \"knowledge-graph\":\n return {\n cacheableInputTokenPerWord: 60,\n inputTokenPerWord: 80,\n maxSecondsPerCall: 35,\n minSecondsPerCall: 15,\n outputTokenPerWord: 25,\n secondsPerWord: 0.02,\n wordsPerCall: 35,\n };\n case \"reading-graph\":\n return {\n cacheableInputTokenPerWord: 20,\n inputTokenPerWord: 25,\n maxSecondsPerCall: 45,\n minSecondsPerCall: 15,\n outputTokenPerWord: 4,\n secondsPerWord: 0.01,\n wordsPerCall: 160,\n };\n case \"reading-summary\":\n return {\n cacheableInputTokenPerWord: 45,\n inputTokenPerWord: 55,\n maxSecondsPerCall: 25,\n minSecondsPerCall: 10,\n outputTokenPerWord: 4,\n secondsPerWord: 0.01,\n wordsPerCall: 110,\n };\n }\n}\n","import { clearLine, cursorTo, moveCursor } from \"readline\";\n\nimport type {\n WikiGraphProgressCallback,\n WikiGraphProgressEvent,\n} from \"wiki-graph-core\";\n\ninterface SerialState {\n completedFragments: number;\n completedWords: number;\n fragments?: number;\n title?: string;\n words?: number;\n}\n\nexport interface CLIProgressRenderer {\n readonly onProgress?: WikiGraphProgressCallback;\n stop(): Promise<void>;\n}\n\nexport function createCLIProgressRenderer(input: {\n readonly enabled: boolean;\n readonly stream?: NodeJS.WriteStream;\n}): CLIProgressRenderer {\n if (!input.enabled) {\n return {\n async stop() {},\n };\n }\n\n return new TerminalProgressRenderer(input.stream ?? process.stderr);\n}\n\nclass TerminalProgressRenderer implements CLIProgressRenderer {\n readonly #stream: NodeJS.WriteStream;\n readonly #serials = new Map<number, SerialState>();\n #digest:\n | {\n completedWords: number;\n totalWords: number;\n }\n | undefined;\n #renderQueue: Promise<void> = Promise.resolve();\n #renderedLineCount = 0;\n #stopping = false;\n\n public constructor(stream: NodeJS.WriteStream) {\n this.#stream = stream;\n }\n\n public readonly onProgress: WikiGraphProgressCallback = async (event) => {\n if (this.#stopping) {\n return;\n }\n\n const renderTask = this.#renderQueue.catch(swallowRenderError).then(() => {\n this.#applyEvent(event);\n this.#render();\n });\n\n this.#renderQueue = renderTask;\n\n await renderTask;\n };\n\n public async stop(): Promise<void> {\n if (this.#stopping) {\n await this.#renderQueue.catch(swallowRenderError);\n return;\n }\n\n this.#stopping = true;\n\n const stopTask = this.#renderQueue.catch(swallowRenderError).then(() => {\n if (this.#renderedLineCount === 0) {\n return;\n }\n\n this.#stream.write(\"\\n\");\n this.#renderedLineCount = 0;\n });\n\n this.#renderQueue = stopTask;\n\n await stopTask;\n }\n\n #applyEvent(event: WikiGraphProgressEvent): void {\n switch (event.type) {\n case \"serials-discovered\":\n if (!event.available) {\n return;\n }\n\n for (const serial of event.serials) {\n this.#serials.set(serial.id, {\n completedFragments: 0,\n completedWords: 0,\n ...(serial.title === undefined ? {} : { title: serial.title }),\n words: serial.words,\n ...(serial.fragments === undefined\n ? {}\n : { fragments: serial.fragments }),\n });\n }\n return;\n case \"serial-progress\": {\n const serial = this.#serials.get(event.id) ?? {\n completedFragments: 0,\n completedWords: 0,\n };\n\n serial.completedFragments = event.completedFragments;\n serial.completedWords = event.completedWords;\n this.#serials.set(event.id, serial);\n return;\n }\n case \"digest-progress\":\n this.#digest = {\n completedWords: event.completedWords,\n totalWords: event.totalWords,\n };\n return;\n }\n }\n\n #render(): void {\n const lines = this.#buildLines();\n\n if (lines.length === 0) {\n return;\n }\n\n if (this.#renderedLineCount > 1) {\n moveCursor(this.#stream, 0, -(this.#renderedLineCount - 1));\n }\n\n const renderLineCount = Math.max(lines.length, this.#renderedLineCount);\n\n for (let index = 0; index < renderLineCount; index += 1) {\n cursorTo(this.#stream, 0);\n clearLine(this.#stream, 0);\n\n const line = lines[index];\n\n if (line !== undefined) {\n this.#stream.write(line);\n }\n\n if (index < renderLineCount - 1) {\n this.#stream.write(\"\\n\");\n }\n }\n\n this.#renderedLineCount = renderLineCount;\n }\n\n #buildLines(): string[] {\n const lines: string[] = [];\n const serials = [...this.#serials.entries()].sort(\n ([leftId], [rightId]) => leftId - rightId,\n );\n const discoveredSerials = serials.filter(\n (entry): entry is [number, SerialState & { words: number }] =>\n hasDiscoveryWords(entry[1]),\n );\n const totalSerialWords = discoveredSerials.reduce(\n (sum, [, serial]) => sum + serial.words,\n 0,\n );\n const totalCompletedSerialWords = discoveredSerials.reduce(\n (sum, [, serial]) => sum + serial.completedWords,\n 0,\n );\n const activeSerials = discoveredSerials.filter(\n ([, serial]) =>\n serial.completedWords > 0 && serial.completedWords < serial.words,\n );\n\n if (discoveredSerials.length > 0) {\n lines.push(\n `${formatStageLabel(\"Serial\")}${renderBar(\n totalCompletedSerialWords,\n totalSerialWords,\n )} ${formatNumber(totalCompletedSerialWords)} / ${formatNumber(\n totalSerialWords,\n )} words`,\n );\n }\n\n if (this.#digest !== undefined) {\n lines.push(\n `${formatStageLabel(\"Digest\")}${renderBar(\n this.#digest.completedWords,\n this.#digest.totalWords,\n )} ${formatNumber(this.#digest.completedWords)} / ${formatNumber(\n this.#digest.totalWords,\n )} words`,\n );\n }\n\n if (activeSerials.length > 0) {\n lines.push(\"-\".repeat(24));\n }\n\n const wordsLabelWidth = activeSerials.reduce((width, [, serial]) => {\n return Math.max(\n width,\n buildWordsLabel(serial.completedWords, serial.words).length,\n );\n }, 0);\n\n for (const [serialId, serial] of activeSerials) {\n const wordsLabel = buildWordsLabel(serial.completedWords, serial.words);\n const fragmentsLabel = buildFragmentsLabel(\n serial.completedFragments,\n serial.fragments,\n );\n\n lines.push(buildSerialHeading(serialId, serial.title));\n lines.push(\n `${formatSerialDetailIndent()}${renderBar(\n serial.completedWords,\n serial.words,\n )} ${wordsLabel.padEnd(wordsLabelWidth)}${fragmentsLabel === undefined ? \"\" : ` (${fragmentsLabel})`}`,\n );\n }\n\n return lines;\n }\n}\n\nfunction swallowRenderError(): undefined {\n return undefined;\n}\n\nfunction hasDiscoveryWords(\n serial: SerialState,\n): serial is SerialState & { words: number } {\n return serial.words !== undefined;\n}\n\nfunction formatStageLabel(label: string): string {\n return label.padEnd(8);\n}\n\nfunction buildSerialHeading(\n serialId: number,\n title: string | undefined,\n): string {\n if (title === undefined) {\n return `#${serialId}`;\n }\n\n const sanitizedTitle = sanitizeSerialTitle(title);\n\n return sanitizedTitle === \"\"\n ? `#${serialId}`\n : `#${serialId} ${sanitizedTitle}`;\n}\n\nfunction formatSerialDetailIndent(): string {\n return \" \".repeat(7);\n}\n\nfunction buildWordsLabel(completed: number, total: number): string {\n return `${formatNumber(completed)} / ${formatNumber(total)} words`;\n}\n\nfunction sanitizeSerialTitle(title: string): string {\n let sanitized = \"\";\n\n for (let index = 0; index < title.length; index += 1) {\n const current = title[index];\n\n if (current === \"\\u001B\") {\n const next = title[index + 1];\n\n if (next === \"[\") {\n index = skipAnsiCSISequence(title, index + 2);\n continue;\n }\n\n if (next === \"]\") {\n index = skipAnsiOSCSequence(title, index + 2);\n continue;\n }\n\n continue;\n }\n\n if (current !== undefined && /\\p{Cc}/u.test(current)) {\n continue;\n }\n\n sanitized += current ?? \"\";\n }\n\n return sanitized.trim();\n}\n\nfunction skipAnsiCSISequence(title: string, startIndex: number): number {\n for (let index = startIndex; index < title.length; index += 1) {\n const current = title[index];\n\n if (current === undefined) {\n return title.length;\n }\n\n if (current >= \"@\" && current <= \"~\") {\n return index;\n }\n }\n\n return title.length;\n}\n\nfunction skipAnsiOSCSequence(title: string, startIndex: number): number {\n for (let index = startIndex; index < title.length; index += 1) {\n const current = title[index];\n const next = title[index + 1];\n\n if (current === undefined) {\n return title.length;\n }\n\n if (current === \"\\u0007\") {\n return index;\n }\n\n if (current === \"\\u001B\" && next === \"\\\\\") {\n return index + 1;\n }\n }\n\n return title.length;\n}\n\nfunction buildFragmentsLabel(\n completed: number,\n total: number | undefined,\n): string | undefined {\n if (total === undefined) {\n return undefined;\n }\n\n return `${formatNumber(completed)}/${formatNumber(total)} source units`;\n}\n\nfunction renderBar(completed: number, total: number): string {\n const width = 12;\n const safeTotal = total <= 0 ? 1 : total;\n const ratio = Math.max(0, Math.min(1, completed / safeTotal));\n const filled = Math.round(ratio * width);\n\n return `[${\"#\".repeat(filled)}${\".\".repeat(width - filled)}]`;\n}\n\nfunction formatNumber(value: number): string {\n return new Intl.NumberFormat(\"en-US\").format(value);\n}\n","import { writeTextToStdout } from \"../support/index.js\";\nimport { formatCLIJSONLine } from \"../support/index.js\";\nimport { getCLIStdoutIsTTY } from \"./context.js\";\n\nexport interface ProgressCounter {\n readonly done: number;\n readonly name: string;\n readonly total: number;\n readonly unit: string;\n}\n\nexport interface ProgressMetric {\n readonly name: string;\n readonly value: number;\n}\n\nexport interface ProgressMetricGroup {\n readonly metrics: readonly ProgressMetric[];\n readonly name: string;\n}\n\nexport type ProgressOutputEvent =\n | {\n readonly json: unknown;\n readonly kind: \"lifecycle\";\n readonly text: string;\n }\n | {\n readonly counters?: readonly ProgressCounter[];\n readonly json: unknown;\n readonly kind: \"status\";\n readonly metricGroups?: readonly ProgressMetricGroup[];\n readonly phase: string;\n };\n\nexport class ProgressOutputWriter {\n readonly #jsonl: boolean;\n readonly #throttleMs: number;\n readonly #tty: boolean;\n #lastStatusAt: number | undefined;\n #lastStatusKey: string | undefined;\n #statusLineOpen = false;\n\n public constructor(input: {\n readonly jsonl: boolean;\n readonly throttleMs: number;\n readonly tty?: boolean;\n }) {\n this.#jsonl = input.jsonl;\n this.#throttleMs = input.throttleMs;\n this.#tty = input.tty ?? getCLIStdoutIsTTY() === true;\n }\n\n public async write(event: ProgressOutputEvent): Promise<void> {\n if (event.kind === \"status\" && !this.#shouldWriteStatus(event)) {\n return;\n }\n\n if (this.#jsonl) {\n await this.#writeLine(formatCLIJSONLine(event.json));\n return;\n }\n\n if (event.kind === \"status\") {\n await this.#writeStatus(formatStatusText(event));\n return;\n }\n\n await this.#writeLifecycle(event.text);\n }\n\n async #writeLifecycle(text: string): Promise<void> {\n if (this.#tty && this.#statusLineOpen) {\n await writeTextToStdout(\"\\n\");\n this.#statusLineOpen = false;\n }\n\n await this.#writeLine(`${text}\\n`);\n }\n\n async #writeLine(text: string): Promise<void> {\n await writeTextToStdout(text);\n }\n\n async #writeStatus(text: string): Promise<void> {\n if (this.#tty) {\n await writeTextToStdout(`\\r\\x1B[2K${text}`);\n this.#statusLineOpen = true;\n return;\n }\n\n await this.#writeLine(`${text}\\n`);\n }\n\n #shouldWriteStatus(\n event: Extract<ProgressOutputEvent, { readonly kind: \"status\" }>,\n ): boolean {\n const key = event.phase;\n const completed = isStatusComplete(event);\n const now = Date.now();\n const elapsed =\n this.#lastStatusAt === undefined\n ? Number.POSITIVE_INFINITY\n : now - this.#lastStatusAt;\n\n if (\n key !== this.#lastStatusKey ||\n completed ||\n this.#lastStatusAt === undefined ||\n elapsed >= this.#throttleMs\n ) {\n this.#lastStatusAt = now;\n this.#lastStatusKey = key;\n return true;\n }\n\n return false;\n }\n}\n\nexport function formatStatusText(input: {\n readonly counters?: readonly ProgressCounter[];\n readonly metricGroups?: readonly ProgressMetricGroup[];\n readonly phase: string;\n}): string {\n const counters = input.counters ?? [];\n const counterText =\n counters.length === 0\n ? \"\"\n : ` ${counters.map(formatCounterText).join(\" | \")}`;\n const metricText = formatMetricGroupsText(input.metricGroups);\n\n return `${input.phase}${counterText}${metricText === \"\" ? \"\" : ` ${metricText}`}`;\n}\n\nfunction formatCounterText(counter: ProgressCounter): string {\n if (counter.name === counter.unit) {\n return `${counter.name} ${counter.done}/${counter.total}`;\n }\n\n return `${counter.name} ${counter.done}/${counter.total} ${counter.unit}`;\n}\n\nfunction formatMetricGroupsText(\n metricGroups: readonly ProgressMetricGroup[] | undefined,\n): string {\n if (metricGroups === undefined) {\n return \"\";\n }\n\n const parts = metricGroups.flatMap((group) => {\n const metrics = group.metrics.map(\n (metric) => `${metric.name}: ${metric.value}`,\n );\n\n return metrics.length === 0\n ? []\n : [`[${group.name} ${metrics.join(\" / \")}]`];\n });\n\n return parts.join(\" \");\n}\n\nfunction isStatusComplete(input: {\n readonly counters?: readonly ProgressCounter[];\n}): boolean {\n const counters = input.counters ?? [];\n\n return (\n counters.length > 0 &&\n counters.every(\n (counter) => counter.total > 0 && counter.done >= counter.total,\n )\n );\n}\n","export {\n DEFAULT_EXTRACTION_PROMPT,\n DEFAULT_KNOWLEDGE_GRAPH_RECALL_PROMPT,\n resolveExtractionPrompt,\n resolveKnowledgeGraphRecallPrompt,\n} from \"wiki-graph-core\";\nimport type { WikiGraphScope } from \"wiki-graph-core\";\nimport { createDefaultWikiGraphSampling } from \"wiki-graph-core\";\nimport { LLM } from \"wiki-graph-core\";\nimport type {\n Directory,\n LLMStreamProgressCallback,\n LLMTokenUsageCallback,\n} from \"wiki-graph-core\";\n\nimport { loadCLIConfig, type CLIConfig } from \"./config.js\";\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../support/index.js\";\nimport { buildLLMOptions } from \"./llm.js\";\n\nexport function createStageLLM(\n config: CLIConfig,\n options?: {\n readonly cacheDirectory?: Directory;\n readonly logDirectory?: Directory;\n readonly onStreamProgress?: LLMStreamProgressCallback;\n readonly onTokenUsage?: LLMTokenUsageCallback;\n },\n): LLM<WikiGraphScope> {\n const llmOptions = buildLLMOptions(config);\n\n return new LLM<WikiGraphScope>({\n sampling: createDefaultWikiGraphSampling({\n ...(llmOptions.temperature === undefined\n ? {}\n : { temperature: llmOptions.temperature }),\n ...(llmOptions.topP === undefined ? {} : { topP: llmOptions.topP }),\n }),\n ...llmOptions,\n ...(options?.cacheDirectory === undefined\n ? {}\n : { cacheDirectory: options.cacheDirectory }),\n ...(options?.logDirectory === undefined\n ? {}\n : { logDirectory: options.logDirectory }),\n ...(options?.onStreamProgress === undefined\n ? {}\n : { onStreamProgress: options.onStreamProgress }),\n ...(options?.onTokenUsage === undefined\n ? {}\n : { onTokenUsage: options.onTokenUsage }),\n });\n}\n\nexport async function loadRequiredStageConfig(options: {\n readonly llmJSON?: string;\n}): Promise<CLIConfig> {\n const config = await loadCLIConfig({\n ...(options.llmJSON === undefined ? {} : { llmJSON: options.llmJSON }),\n });\n\n if (config.llm?.provider === undefined || config.llm.model === undefined) {\n throw new Error(\n withHelpRoute(\n \"Missing LLM configuration. Set --llm for one run, or configure `wikg://local/config/llm` with provider and model.\",\n CLI_HELP_ROUTES.config,\n ),\n );\n }\n\n return config;\n}\n","import { spawn } from \"child_process\";\n\nimport type { WikispineCommandRunner } from \"wiki-graph-core\";\n\n/** Node host implementation for Core's optional WikiSpine command capability. */\nexport const nodeWikispineCommandRunner: WikispineCommandRunner = {\n run: async ({ args, command, input, onStdout }) =>\n await new Promise((resolve, reject) => {\n const child = spawn(command, [...args], {\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n });\n const stderr: Uint8Array[] = [];\n let settled = false;\n\n child.stdout.setEncoding(\"utf8\");\n child.stdout.on(\"data\", (chunk: string) => {\n if (settled) return;\n try {\n onStdout(chunk);\n } catch (error) {\n settled = true;\n child.kill();\n reject(error instanceof Error ? error : new Error(String(error)));\n }\n });\n child.stderr.on(\"data\", (chunk: Uint8Array) => stderr.push(chunk));\n child.on(\"error\", (error) => {\n if (settled) return;\n settled = true;\n reject(\n new Error(`Failed to start wikispine command: ${error.message}`),\n );\n });\n child.on(\"close\", (exitCode) => {\n if (settled) return;\n settled = true;\n resolve({\n exitCode,\n stderr: Buffer.concat(stderr).toString(\"utf8\"),\n });\n });\n child.stdin.end(input);\n }),\n};\n","export * from \"./config.js\";\nexport * from \"./llm.js\";\nexport * from \"./local-config.js\";\nexport * from \"./planning.js\";\nexport * from \"./progress.js\";\nexport * from \"./progress-output.js\";\nexport * from \"./stage.js\";\nexport * from \"./wikispine.js\";\n","import { rm } from \"fs/promises\";\nimport { resolve } from \"path\";\n\nimport { WikiGraph, type WikiGraphOptions } from \"wiki-graph-core\";\nimport type { WikiGraphArchive } from \"wiki-graph-core\";\n\nimport type { CLIArguments } from \"../args/index.js\";\nimport { loadCLIConfig, type CLIConfig } from \"../runtime/config.js\";\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../support/index.js\";\nimport {\n type CLIFormat,\n inferCLIFormatFromPath,\n isTextCLIFormat,\n} from \"../support/index.js\";\nimport { buildLLMOptions } from \"../runtime/llm.js\";\nimport {\n createTemporaryOutputPath,\n readTextStreamFromStdin,\n removeTemporaryDirectory,\n writeTextFileToStdout,\n} from \"../support/index.js\";\nimport { createCLIProgressRenderer } from \"../runtime/index.js\";\nimport { NodeDirectory, NodeFile } from \"../runtime/node-platform.js\";\n\ntype TextCLIFormat = Extract<CLIFormat, \"markdown\" | \"txt\">;\n\ntype ResolvedInputEndpoint =\n | {\n readonly format: Exclude<CLIFormat, \"markdown\" | \"txt\"> | TextCLIFormat;\n readonly path: string;\n readonly standardStream?: undefined;\n }\n | {\n readonly format: TextCLIFormat;\n readonly path?: undefined;\n readonly standardStream: \"stdin\";\n };\n\ntype ResolvedOutputEndpoint =\n | {\n readonly format: CLIFormat;\n readonly path: string;\n readonly standardStream?: undefined;\n }\n | {\n readonly format: TextCLIFormat;\n readonly path?: undefined;\n readonly standardStream: \"stdout\";\n };\n\nexport async function runConvertCommand(args: CLIArguments): Promise<void> {\n const input = resolveInputEndpoint(args);\n const output = resolveOutputEndpoint(args);\n const targetStage = args.targetStage ?? \"summarized\";\n\n if (args.verbose && output.standardStream === \"stdout\") {\n throw new Error(\n withHelpRoute(\n \"Cannot use --verbose when writing digest output to stdout. Use --output <path> or disable --verbose.\",\n CLI_HELP_ROUTES.runtime,\n ),\n );\n }\n if (args.targetStage !== undefined && output.format !== \"wikg\") {\n throw new Error(\n withHelpRoute(\n \"--stage is only supported when output format is wikg.\",\n CLI_HELP_ROUTES.format,\n ),\n );\n }\n\n const inputFormat = input.format;\n if (args.targetStage !== undefined && inputFormat === \"wikg\") {\n throw new Error(\n withHelpRoute(\n \"--stage is only supported when creating .wikg from source input.\",\n CLI_HELP_ROUTES.format,\n ),\n );\n }\n const requiresDigest = inputFormat !== \"wikg\";\n const requiresLLM =\n requiresDigest && targetStage !== \"planned\" && targetStage !== \"sourced\";\n const digestDirPath = await prepareDigestDirPath(args, requiresDigest);\n const config = await loadRequiredConfig(args, requiresLLM);\n const app = new WikiGraph(createAppOptions(args, config, requiresLLM));\n const progressRenderer = createCLIProgressRenderer({\n enabled:\n requiresDigest &&\n output.standardStream !== \"stdout\" &&\n process.stderr.isTTY === true &&\n !args.verbose,\n });\n\n if (inputFormat === \"wikg\") {\n if (input.path === undefined) {\n throw new Error(\"Internal error: wikg input requires a file path.\");\n }\n\n try {\n await app.openSession(new NodeFile(input.path), async (digest) => {\n await writeDigestOutput(digest, output);\n });\n return;\n } finally {\n await progressRenderer.stop();\n }\n }\n\n const extractionPrompt = args.prompt ?? config.prompt;\n\n try {\n if (input.path === undefined) {\n if (process.stdin.isTTY) {\n throw new Error(\n withHelpRoute(\n \"Missing --input. Refusing to read from interactive stdin. Use --input <path> or pipe text into stdin.\",\n CLI_HELP_ROUTES.runtime,\n ),\n );\n }\n\n await app.digestTextStreamSession(\n {\n ...(digestDirPath === undefined\n ? {}\n : { documentDirectory: new NodeDirectory(digestDirPath) }),\n ...(progressRenderer.onProgress === undefined\n ? {}\n : { onProgress: progressRenderer.onProgress }),\n sourceFormat: input.format,\n stream: readTextStreamFromStdin(),\n ...(extractionPrompt === undefined ? {} : { extractionPrompt }),\n targetStage,\n },\n async (digest) => {\n await writeDigestOutput(digest, output);\n },\n );\n return;\n }\n\n switch (inputFormat) {\n case \"epub\":\n await app.digestEpubSession(\n {\n ...(digestDirPath === undefined\n ? {}\n : { documentDirectory: new NodeDirectory(digestDirPath) }),\n ...(progressRenderer.onProgress === undefined\n ? {}\n : { onProgress: progressRenderer.onProgress }),\n file: new NodeFile(input.path),\n ...(extractionPrompt === undefined ? {} : { extractionPrompt }),\n targetStage,\n },\n async (digest) => {\n await writeDigestOutput(digest, output);\n },\n );\n return;\n case \"markdown\":\n await app.digestMarkdownSession(\n {\n ...(digestDirPath === undefined\n ? {}\n : { documentDirectory: new NodeDirectory(digestDirPath) }),\n ...(progressRenderer.onProgress === undefined\n ? {}\n : { onProgress: progressRenderer.onProgress }),\n file: new NodeFile(input.path),\n ...(extractionPrompt === undefined ? {} : { extractionPrompt }),\n targetStage,\n },\n async (digest) => {\n await writeDigestOutput(digest, output);\n },\n );\n return;\n case \"txt\":\n await app.digestTxtSession(\n {\n ...(digestDirPath === undefined\n ? {}\n : { documentDirectory: new NodeDirectory(digestDirPath) }),\n ...(progressRenderer.onProgress === undefined\n ? {}\n : { onProgress: progressRenderer.onProgress }),\n file: new NodeFile(input.path),\n ...(extractionPrompt === undefined ? {} : { extractionPrompt }),\n targetStage,\n },\n async (digest) => {\n await writeDigestOutput(digest, output);\n },\n );\n return;\n }\n } finally {\n await progressRenderer.stop();\n }\n}\n\nasync function prepareDigestDirPath(\n args: CLIArguments,\n requiresDigest: boolean,\n): Promise<string | undefined> {\n const normalizedPath = normalizeIOPath(args.digestDirPath);\n\n if (normalizedPath === undefined || !requiresDigest) {\n return undefined;\n }\n\n const resolvedPath = resolve(normalizedPath);\n\n await rm(resolvedPath, { force: true, recursive: true });\n\n return resolvedPath;\n}\n\nasync function loadRequiredConfig(\n args: CLIArguments,\n requiresDigest: boolean,\n): Promise<CLIConfig> {\n const config = await loadCLIConfig({\n ...(args.llmJSON === undefined ? {} : { llmJSON: args.llmJSON }),\n });\n\n if (!requiresDigest) {\n return config;\n }\n\n if (config.llm?.provider === undefined || config.llm.model === undefined) {\n throw new Error(\n withHelpRoute(\n \"Missing LLM configuration. Set --llm for one run, or configure `wikg://local/config/llm` with provider and model.\",\n CLI_HELP_ROUTES.config,\n ),\n );\n }\n\n return config;\n}\n\nfunction createAppOptions(\n args: CLIArguments,\n config: CLIConfig,\n requiresDigest: boolean,\n): WikiGraphOptions {\n const llmOptions = !requiresDigest ? undefined : buildLLMOptions(config);\n\n return {\n ...(args.verbose ? { verbose: true } : {}),\n ...(llmOptions === undefined ? {} : { llm: llmOptions }),\n };\n}\n\nasync function writeDigestOutput(\n digest: WikiGraphArchive,\n output: ResolvedOutputEndpoint,\n): Promise<void> {\n if (output.path !== undefined) {\n await writeDigestToFile(digest, output.path, output.format);\n return;\n }\n\n if (output.standardStream !== \"stdout\") {\n throw new Error(\"Internal error: missing output target.\");\n }\n\n const temporaryOutput = await createTemporaryOutputPath(\n \"wikigraph-cli-output-\",\n extensionForFormat(output.format),\n );\n\n try {\n await writeDigestToFile(digest, temporaryOutput.filePath, output.format);\n await writeTextFileToStdout(temporaryOutput.filePath);\n } finally {\n await removeTemporaryDirectory(temporaryOutput.directoryPath);\n }\n}\n\nasync function writeDigestToFile(\n digest: WikiGraphArchive,\n path: string,\n format: CLIFormat,\n): Promise<void> {\n switch (format) {\n case \"epub\":\n await digest.exportEpub(new NodeFile(path));\n return;\n case \"markdown\":\n case \"txt\":\n await digest.exportText(new NodeFile(path));\n return;\n case \"wikg\":\n await digest.saveAs(new NodeFile(path));\n return;\n }\n}\n\nfunction resolveInputEndpoint(args: CLIArguments): ResolvedInputEndpoint {\n const normalizedPath = normalizeIOPath(args.inputPath);\n const inferredFormat =\n normalizedPath === undefined\n ? undefined\n : inferCLIFormatFromPath(normalizedPath);\n const format = args.inputFormat ?? inferredFormat;\n\n if (format === undefined) {\n throw new Error(\n withHelpRoute(\n normalizedPath === undefined\n ? \"Cannot infer input format from stdin. Set --input-format.\"\n : `Cannot infer input format from ${normalizedPath}. Set --input-format.`,\n CLI_HELP_ROUTES.format,\n ),\n );\n }\n if (normalizedPath === undefined && !isTextCLIFormat(format)) {\n throw new Error(\n withHelpRoute(\n `stdin only supports txt or markdown, but got ${format}.`,\n CLI_HELP_ROUTES.format,\n ),\n );\n }\n\n if (normalizedPath === undefined) {\n const textFormat = format as TextCLIFormat;\n\n return {\n format: textFormat,\n standardStream: \"stdin\",\n };\n }\n\n return {\n format,\n path: normalizedPath,\n };\n}\n\nfunction resolveOutputEndpoint(args: CLIArguments): ResolvedOutputEndpoint {\n const normalizedPath = normalizeIOPath(args.outputPath);\n const inferredFormat =\n normalizedPath === undefined\n ? undefined\n : inferCLIFormatFromPath(normalizedPath);\n const format = args.outputFormat ?? inferredFormat;\n\n if (format === undefined) {\n throw new Error(\n withHelpRoute(\n normalizedPath === undefined\n ? \"Cannot infer output format for stdout. Set --output-format.\"\n : `Cannot infer output format from ${normalizedPath}. Set --output-format.`,\n CLI_HELP_ROUTES.format,\n ),\n );\n }\n if (normalizedPath === undefined && !isTextCLIFormat(format)) {\n throw new Error(\n withHelpRoute(\n `stdout only supports txt or markdown, but got ${format}.`,\n CLI_HELP_ROUTES.format,\n ),\n );\n }\n\n if (normalizedPath === undefined) {\n const textFormat = format as TextCLIFormat;\n\n return {\n format: textFormat,\n standardStream: \"stdout\",\n };\n }\n\n return {\n format,\n path: normalizedPath,\n };\n}\n\nfunction normalizeIOPath(path: string | undefined): string | undefined {\n if (path === undefined) {\n return undefined;\n }\n\n return path === \"-\" ? undefined : path;\n}\n\nfunction extensionForFormat(format: CLIFormat): string {\n switch (format) {\n case \"epub\":\n return \".epub\";\n case \"markdown\":\n return \".md\";\n case \"wikg\":\n return \".wikg\";\n case \"txt\":\n return \".txt\";\n }\n}\n","import { mkdtemp, rename, rm, stat } from \"fs/promises\";\nimport { basename, dirname, join } from \"path\";\nimport { tmpdir } from \"os\";\n\nimport {\n DirectoryDocument,\n formatLocatedWikiGraphUri,\n TOC_FILE_VERSION,\n writeWikgArchive,\n} from \"wiki-graph-core\";\nimport { NodeDirectory, NodeFile } from \"../../runtime/node-platform.js\";\n\nimport type { CLIArchiveArguments } from \"../../args/index.js\";\nimport { runConvertCommand } from \"../convert.js\";\nimport {\n formatCLIJSON,\n formatCliCommand,\n formatWikiGraphCommandUri,\n writeTextToStdout,\n} from \"../../support/index.js\";\n\nexport async function createArchive(args: CLIArchiveArguments): Promise<void> {\n const outputPath = await prepareCreateArchiveOutputPath(args);\n\n try {\n await writeCreatedArchiveFile(args, outputPath);\n await finalizeCreatedArchiveFile(args, outputPath);\n } finally {\n if (outputPath !== args.archivePath) {\n await rm(outputPath, { force: true, recursive: true });\n }\n }\n\n await writeCreatedArchive(args);\n}\n\nasync function writeCreatedArchiveFile(\n args: CLIArchiveArguments,\n outputPath: string,\n): Promise<void> {\n if (args.importPath === undefined) {\n await createEmptyArchive(outputPath);\n return;\n }\n\n await runConvertCommand({\n help: false,\n inputPath: args.importPath,\n outputFormat: \"wikg\",\n outputPath,\n targetStage: \"sourced\",\n verbose: false,\n });\n}\n\nasync function createEmptyArchive(outputPath: string): Promise<void> {\n const directoryPath = await mkdtemp(\n join(tmpdir(), \"wikigraph-archive-write-\"),\n );\n const directory = new NodeDirectory(directoryPath);\n const document = await DirectoryDocument.open(directory);\n\n try {\n try {\n await document.openSession(async (openedDocument) => {\n await openedDocument.writeToc({\n items: [],\n version: TOC_FILE_VERSION,\n });\n });\n } finally {\n await document.release();\n }\n await writeWikgArchive(directory, new NodeFile(outputPath));\n } finally {\n await rm(directoryPath, { force: true, recursive: true });\n }\n}\n\nasync function prepareCreateArchiveOutputPath(\n args: CLIArchiveArguments,\n): Promise<string> {\n if (args.replace !== true && (await fileExists(args.archivePath))) {\n throw new Error(formatArchiveAlreadyExistsMessage(args.archivePath));\n }\n\n if (args.replace !== true) {\n return args.archivePath;\n }\n\n return join(\n dirname(args.archivePath),\n `.${basename(args.archivePath)}.${process.pid}.${Date.now()}.tmp.wikg`,\n );\n}\n\nasync function finalizeCreatedArchiveFile(\n args: CLIArchiveArguments,\n outputPath: string,\n): Promise<void> {\n if (outputPath === args.archivePath) {\n return;\n }\n\n await rename(outputPath, args.archivePath);\n}\n\nasync function fileExists(path: string): Promise<boolean> {\n try {\n await stat(path);\n return true;\n } catch (error) {\n if (isNodeENOENTError(error)) {\n return false;\n }\n\n throw error;\n }\n}\n\nfunction isNodeENOENTError(error: unknown): error is NodeJS.ErrnoException {\n return (\n error instanceof Error &&\n \"code\" in error &&\n (error as NodeJS.ErrnoException).code === \"ENOENT\"\n );\n}\n\nfunction formatArchiveAlreadyExistsMessage(archivePath: string): string {\n const uri = formatWikiGraphCommandUri(archivePath);\n\n return [\n `Archive already exists: ${archivePath}`,\n `Use \\`${formatCliCommand([uri, \"inspect\"])}\\` to view it, or rerun with \\`--replace\\` to overwrite it.`,\n ].join(\"\\n\");\n}\n\nasync function writeCreatedArchive(args: CLIArchiveArguments): Promise<void> {\n if (args.json === true) {\n await writeTextToStdout(\n formatCLIJSON({ uri: formatLocatedWikiGraphUri(args.archivePath) }),\n );\n return;\n }\n\n await writeTextToStdout(\"<archive>\\n\");\n}\n","import {\n isArchiveSearchIndexCurrent,\n listChapters,\n type ChapterEntry,\n type IndexArtifactCoverageRecord,\n type ReadonlyDocument,\n} from \"wiki-graph-core\";\nimport { formatWikiGraphCommandUri } from \"../../support/index.js\";\n\nimport type { CLIArchiveArguments } from \"../../args/index.js\";\nimport { loadCLIConfig } from \"../../runtime/config.js\";\nimport {\n createGenerationPerformanceHints,\n DEFAULT_GENERATION_JOB_CONCURRENCY,\n DEFAULT_GENERATION_REQUEST_CONCURRENCY,\n formatGenerationPlanningDuration,\n formatGenerationPlanningModel,\n planGenerationTask,\n type GenerationPerformanceHint,\n type GenerationPlanningCost,\n} from \"../../runtime/index.js\";\nimport {\n formatCLIJSON,\n formatCliCommand,\n writeTextToStdout,\n} from \"../../support/index.js\";\n\ninterface InspectChapter extends ChapterEntry {\n readonly knowledgeGraphReady: boolean;\n readonly readingGraphReady: boolean;\n readonly summaryReady: boolean;\n}\n\ninterface InspectImprovement {\n readonly command: string;\n readonly missingChapters?: number;\n readonly missingWords?: number;\n readonly planning?: GenerationPlanningCost;\n readonly recommendation: string;\n readonly title: string;\n}\n\ninterface InspectCoverage {\n readonly coveredChapters: number;\n readonly coveredWords: number;\n readonly percent: string;\n readonly totalChapters: number;\n readonly totalWords: number;\n}\n\ninterface InspectChapterReference {\n readonly chapterId: number;\n readonly locatedUri: string;\n readonly title: string | null;\n readonly uri: string;\n}\n\ninterface InspectReport {\n readonly uri: string;\n readonly scope: {\n readonly chapterId?: number;\n readonly type: \"archive\" | \"chapter\";\n };\n readonly content: {\n readonly chapters: {\n readonly content: number;\n readonly planned: number;\n readonly total: number;\n };\n readonly sourceWords: number;\n readonly summaryWords: number;\n };\n readonly localIndexCache: {\n readonly blockedBy?: \"missing-search-artifacts\";\n readonly current: boolean;\n readonly fixCommand?: string;\n readonly impact?: string;\n readonly resource?: string;\n readonly status: \"blocked\" | \"current\" | \"missing-or-outdated\";\n readonly syncAvailable: boolean;\n };\n readonly coverage: {\n readonly ftsIndexArtifact: InspectCoverage;\n readonly knowledgeGraph: InspectCoverage;\n readonly readingGraph: InspectCoverage;\n readonly summary: InspectCoverage;\n readonly summaryEmbeddingIndexArtifact: InspectCoverage;\n readonly sourceEmbeddingIndexArtifact: InspectCoverage;\n };\n readonly query: {\n readonly ready: boolean;\n };\n readonly searchArtifacts: {\n readonly blockedChapters: readonly InspectChapterReference[];\n readonly fixCommand?: string;\n readonly helpCommand: string;\n readonly ready: boolean;\n readonly resource?: string;\n readonly status: \"incomplete\" | \"ready\";\n };\n readonly retrievalGuidance: readonly string[];\n readonly improvements: readonly InspectImprovement[];\n readonly performanceHints: readonly GenerationPerformanceHint[];\n readonly help: {\n readonly readiness: string;\n readonly summaryCoverage: string;\n };\n}\n\nexport async function writeArchiveInspectReport(\n document: ReadonlyDocument,\n args: CLIArchiveArguments,\n): Promise<void> {\n const report = await createArchiveInspectReport(document, args);\n\n if (args.json === true) {\n await writeTextToStdout(formatCLIJSON(report));\n return;\n }\n\n await writeTextToStdout(formatArchiveInspectText(report));\n}\n\nasync function createArchiveInspectReport(\n document: ReadonlyDocument,\n args: CLIArchiveArguments,\n): Promise<InspectReport> {\n const archiveUri = formatArchiveInspectCommandUri(args.archivePath);\n const [\n chapters,\n summaryWords,\n indexCacheCurrent,\n config,\n ftsArtifactCoverage,\n sourceEmbeddingArtifactCoverage,\n summaryEmbeddingArtifactCoverage,\n ] = await Promise.all([\n readInspectChapters(document, args.chapterId),\n readSummaryWords(document, args.chapterId),\n isArchiveSearchIndexCurrent(document),\n loadCLIConfig(),\n readIndexArtifactCoverage(document, \"fts\", args.chapterId),\n readIndexArtifactCoverage(document, \"embedding-source\", args.chapterId),\n readIndexArtifactCoverage(document, \"embedding-summary\", args.chapterId),\n ]);\n const selectedChapter =\n args.chapterId === undefined ? undefined : chapters[0];\n const scopeUri =\n selectedChapter === undefined\n ? archiveUri\n : formatInspectLocatedChapterUri(archiveUri, selectedChapter);\n const concurrent = {\n job: config.concurrent?.job ?? DEFAULT_GENERATION_JOB_CONCURRENCY,\n request:\n config.concurrent?.request ?? DEFAULT_GENERATION_REQUEST_CONCURRENCY,\n };\n const planningModel = formatGenerationPlanningModel(config.llm);\n const contentChapters = chapters.filter(\n (chapter) => chapter.stage !== \"planned\",\n );\n const sourceWords = sumWords(contentChapters);\n const readingGraphCovered = contentChapters.filter(\n (chapter) => chapter.readingGraphReady,\n );\n const knowledgeGraphCovered = contentChapters.filter(\n (chapter) => chapter.knowledgeGraphReady,\n );\n const summaryCovered = contentChapters.filter(\n (chapter) => chapter.summaryReady,\n );\n const ftsArtifactCovered = filterChaptersByCurrentIndexArtifact(\n contentChapters,\n ftsArtifactCoverage,\n );\n const sourceEmbeddingArtifactCovered = filterChaptersByCurrentIndexArtifact(\n contentChapters,\n sourceEmbeddingArtifactCoverage,\n );\n const summaryEmbeddingArtifactCovered = filterChaptersByCurrentIndexArtifact(\n contentChapters,\n summaryEmbeddingArtifactCoverage,\n );\n const queryBlockedContentChapters = contentChapters.filter(\n (chapter) =>\n !ftsArtifactCovered.includes(chapter) &&\n !sourceEmbeddingArtifactCovered.includes(chapter),\n );\n const queryBlockedChapters = queryBlockedContentChapters.map((chapter) =>\n createInspectChapterReference(archiveUri, chapter),\n );\n const queryReady = queryBlockedChapters.length === 0;\n const buildFtsCommand = formatCliCommand([\n \"wikg://local/job\",\n \"add\",\n \"--input\",\n scopeUri,\n \"--task\",\n \"index-fts\",\n ]);\n const improvements = createInspectImprovements({\n archiveUri,\n concurrent,\n contentChapters,\n indexCacheCurrent,\n planningModel,\n queryBlockedChapters: queryBlockedContentChapters,\n scopeUri,\n summaryCovered,\n knowledgeGraphCovered,\n readingGraphCovered,\n });\n const performanceHints = createGenerationPerformanceHints({\n chapters: Math.max(\n 0,\n ...improvements.map((improvement) => improvement.missingChapters ?? 0),\n ),\n concurrent,\n hasJobWork: improvements.some(\n (improvement) => improvement.planning !== undefined,\n ),\n hasRequestWork: improvements.some(\n (improvement) => improvement.planning !== undefined,\n ),\n });\n\n return {\n uri: scopeUri,\n scope:\n args.chapterId === undefined\n ? { type: \"archive\" }\n : { chapterId: args.chapterId, type: \"chapter\" },\n content: {\n chapters: {\n content: contentChapters.length,\n planned: chapters.length - contentChapters.length,\n total: chapters.length,\n },\n sourceWords,\n summaryWords,\n },\n localIndexCache: {\n current: indexCacheCurrent,\n ...(!queryReady\n ? {\n blockedBy: \"missing-search-artifacts\" as const,\n impact:\n \"The cache cannot be built until every content chapter has a current FTS or source embedding artifact.\",\n }\n : indexCacheCurrent\n ? {}\n : {\n fixCommand: formatCliCommand([`${archiveUri}/index`, \"sync\"]),\n impact:\n \"The next archive query may need to sync index cache first.\",\n resource: \"local CPU/disk time only; no provider calls.\",\n }),\n status: !queryReady\n ? \"blocked\"\n : indexCacheCurrent\n ? \"current\"\n : \"missing-or-outdated\",\n syncAvailable: queryReady && !indexCacheCurrent,\n },\n coverage: {\n ftsIndexArtifact: createInspectCoverage(\n ftsArtifactCovered,\n contentChapters,\n ),\n knowledgeGraph: createInspectCoverage(\n knowledgeGraphCovered,\n contentChapters,\n ),\n readingGraph: createInspectCoverage(readingGraphCovered, contentChapters),\n summary: createInspectCoverage(summaryCovered, contentChapters),\n sourceEmbeddingIndexArtifact: createInspectCoverage(\n sourceEmbeddingArtifactCovered,\n contentChapters,\n ),\n summaryEmbeddingIndexArtifact: createInspectCoverage(\n summaryEmbeddingArtifactCovered,\n contentChapters,\n ),\n },\n query: {\n ready: queryReady,\n },\n searchArtifacts: {\n blockedChapters: queryBlockedChapters,\n ...(!queryReady\n ? {\n fixCommand: buildFtsCommand,\n resource: \"local CPU/disk time only; no provider calls.\",\n }\n : {}),\n helpCommand: \"wg help readiness\",\n ready: queryReady,\n status: queryReady ? \"ready\" : \"incomplete\",\n },\n retrievalGuidance: formatRetrievalGuidance({\n indexCacheCurrent,\n knowledgeGraphCovered,\n readingGraphCovered,\n contentChapters,\n queryReady,\n sourceWords,\n }),\n improvements,\n performanceHints,\n help: {\n readiness: \"wg help readiness\",\n summaryCoverage:\n \"Summary coverage means a current summary artifact exists for the chapter; it does not guarantee that every source topic is represented in the summary text.\",\n },\n };\n}\n\nfunction formatArchiveInspectCommandUri(archivePath: string): string {\n if (archivePath.startsWith(\"wikg://lib/\")) {\n return archivePath;\n }\n\n return formatWikiGraphCommandUri(archivePath);\n}\n\nfunction formatArchiveInspectText(report: InspectReport): string {\n return (\n [\n \"Archive Inspect\",\n `URI: ${report.uri}`,\n `Scope: ${report.scope.type === \"archive\" ? \"archive\" : report.uri}`,\n \"\",\n \"Content\",\n `Chapters: ${report.content.chapters.content} content / ${report.content.chapters.total} total`,\n `Planned chapters: ${report.content.chapters.planned}`,\n `Source words: ${report.content.sourceWords}`,\n `Summary words: ${report.content.summaryWords}`,\n \"\",\n \"Query Readiness\",\n `Status: ${report.query.ready ? \"available\" : \"unavailable\"}`,\n `Search artifacts: ${report.searchArtifacts.status}`,\n ...(report.searchArtifacts.ready\n ? []\n : [\n `Fix: ${report.searchArtifacts.fixCommand}`,\n `Resource: ${report.searchArtifacts.resource}`,\n `Help: ${report.searchArtifacts.helpCommand}`,\n ]),\n \"\",\n \"Index Cache\",\n `Status: ${report.localIndexCache.status === \"missing-or-outdated\" ? \"missing or outdated\" : report.localIndexCache.status}`,\n ...(report.localIndexCache.current\n ? []\n : [\n `Impact: ${report.localIndexCache.impact}`,\n ...(report.localIndexCache.fixCommand === undefined\n ? []\n : [`Fix: ${report.localIndexCache.fixCommand}`]),\n ...(report.localIndexCache.resource === undefined\n ? []\n : [`Resource: ${report.localIndexCache.resource}`]),\n ]),\n \"\",\n \"Coverage\",\n formatCoverageLine(\n \"FTS Index Artifact\",\n report.coverage.ftsIndexArtifact,\n ),\n formatCoverageLine(\n \"Source Embedding Index Artifact\",\n report.coverage.sourceEmbeddingIndexArtifact,\n ),\n formatCoverageLine(\n \"Summary Embedding Index Artifact\",\n report.coverage.summaryEmbeddingIndexArtifact,\n ),\n formatCoverageLine(\"Reading Graph\", report.coverage.readingGraph),\n formatCoverageLine(\"Knowledge Graph\", report.coverage.knowledgeGraph),\n formatCoverageLine(\"Summary Artifact\", report.coverage.summary),\n `Summary note: ${report.help.summaryCoverage}`,\n ...(report.searchArtifacts.blockedChapters.length === 0\n ? []\n : [\n \"Query blockers: these chapters have neither FTS nor source embedding index artifacts:\",\n ...report.searchArtifacts.blockedChapters.map(\n (chapter) =>\n `- ${chapter.title === null ? \"[untitled]\" : chapter.title}: ${chapter.locatedUri}`,\n ),\n ]),\n \"\",\n \"Retrieval Guidance\",\n ...report.retrievalGuidance,\n \"\",\n \"Improvements\",\n ...(report.improvements.length === 0\n ? [\"No immediate improvements recommended.\"]\n : [\n ...report.improvements.flatMap(formatInspectImprovement),\n \"\",\n ...formatInspectPerformanceHints(report.performanceHints),\n ...(report.performanceHints.length === 0 ? [] : [\"\"]),\n `Readiness details: ${report.help.readiness}`,\n ]),\n ].join(\"\\n\") + \"\\n\"\n );\n}\n\nfunction createInspectChapterReference(\n archiveUri: string,\n chapter: ChapterEntry,\n): InspectChapterReference {\n return {\n chapterId: chapter.chapterId,\n locatedUri: formatInspectLocatedChapterUri(archiveUri, chapter),\n title: chapter.title,\n uri: chapter.uri,\n };\n}\n\nfunction formatInspectLocatedChapterUri(\n archiveUri: string,\n chapter: Pick<ChapterEntry, \"uri\">,\n): string {\n return `${archiveUri.replace(/\\/+$/u, \"\")}/${chapter.uri.replace(/^wikg:\\/\\//u, \"\")}`;\n}\n\nasync function readInspectChapters(\n document: ReadonlyDocument,\n chapterId: number | undefined,\n): Promise<readonly InspectChapter[]> {\n const chapters =\n chapterId === undefined\n ? await listChapters(document)\n : (await listChapters(document)).filter(\n (chapter) => chapter.chapterId === chapterId,\n );\n\n if (chapterId !== undefined && chapters.length === 0) {\n throw new Error(`Chapter ${chapterId} does not exist.`);\n }\n\n return await Promise.all(\n chapters.map(async (chapter) => {\n const serial = await document.serials.getById(chapter.chapterId);\n\n return {\n ...chapter,\n knowledgeGraphReady: serial?.knowledgeGraphReady === true,\n readingGraphReady: serial?.topologyReady === true,\n summaryReady: chapter.stage === \"summarized\",\n };\n }),\n );\n}\n\nasync function readSummaryWords(\n document: ReadonlyDocument,\n chapterId: number | undefined,\n): Promise<number> {\n return await document.readDatabase(\n async (database) =>\n (await database.queryOne(\n `\n SELECT COALESCE(SUM(words_count), 0) AS words\n FROM text_sentence_records\n WHERE kind = 2\n ${chapterId === undefined ? \"\" : \"AND chapter_id = ?\"}\n `,\n chapterId === undefined ? undefined : [chapterId],\n (row) => Number(row.words),\n )) ?? 0,\n );\n}\n\nasync function readIndexArtifactCoverage(\n document: ReadonlyDocument,\n kind: \"embedding-source\" | \"embedding-summary\" | \"fts\",\n chapterId: number | undefined,\n): Promise<readonly IndexArtifactCoverageRecord[]> {\n const coverage = await document.indexArtifacts.listCoverage(kind);\n\n return chapterId === undefined\n ? coverage\n : coverage.filter((item) => item.serialId === chapterId);\n}\n\nfunction filterChaptersByCurrentIndexArtifact(\n chapters: readonly InspectChapter[],\n coverage: readonly IndexArtifactCoverageRecord[],\n): readonly InspectChapter[] {\n const currentChapterIds = new Set(\n coverage.filter((item) => item.current).map((item) => item.serialId),\n );\n\n return chapters.filter((chapter) => currentChapterIds.has(chapter.chapterId));\n}\n\nfunction createInspectCoverage(\n covered: readonly InspectChapter[],\n total: readonly InspectChapter[],\n): InspectCoverage {\n const coveredWords = sumWords(covered);\n const totalWords = sumWords(total);\n\n return {\n coveredChapters: covered.length,\n coveredWords,\n percent: formatPercent(coveredWords, totalWords),\n totalChapters: total.length,\n totalWords,\n };\n}\n\nfunction formatCoverageLine(label: string, coverage: InspectCoverage): string {\n if (coverage.totalChapters === 0 && coverage.totalWords === 0) {\n return `${label}: n/a, no source content`;\n }\n\n return `${label}: ${coverage.coveredChapters}/${coverage.totalChapters} chapters, ${coverage.coveredWords}/${coverage.totalWords} words, ${coverage.percent}`;\n}\n\nfunction formatRetrievalGuidance(input: {\n readonly contentChapters: readonly InspectChapter[];\n readonly indexCacheCurrent: boolean;\n readonly knowledgeGraphCovered: readonly InspectChapter[];\n readonly queryReady: boolean;\n readonly readingGraphCovered: readonly InspectChapter[];\n readonly sourceWords: number;\n}): readonly string[] {\n if (input.sourceWords === 0 || input.contentChapters.length === 0) {\n return [\n \"Source content: empty.\",\n \"Add source text before using query coverage or graph-based retrieval.\",\n ];\n }\n\n const lines = [\n input.queryReady\n ? `Query: available; local index cache is ${input.indexCacheCurrent ? \"current\" : \"missing or outdated and can be synced from artifacts\"}.`\n : \"Query: unavailable until every content chapter has a current FTS or source embedding artifact.\",\n ];\n\n lines.push(\n formatObjectSearchGuidance(\n \"Reading Graph object retrieval\",\n input.readingGraphCovered,\n input.contentChapters,\n ),\n );\n lines.push(\n formatObjectSearchGuidance(\n \"Entity/triple retrieval\",\n input.knowledgeGraphCovered,\n input.contentChapters,\n ),\n );\n\n return lines;\n}\n\nfunction formatObjectSearchGuidance(\n label: string,\n covered: readonly InspectChapter[],\n total: readonly InspectChapter[],\n): string {\n const coveredWords = sumWords(covered);\n const totalWords = sumWords(total);\n const ratio = totalWords === 0 ? 0 : coveredWords / totalWords;\n const coverage = formatPercent(coveredWords, totalWords);\n\n if (ratio >= 1) {\n return `${label}: covers all source content; it can represent the full scope for object retrieval.`;\n }\n if (ratio >= 0.9) {\n return `${label}: covers ${coverage}; use it as the main path, but source --query is needed for uncovered content.`;\n }\n if (ratio >= 0.5) {\n return `${label}: covers ${coverage}; use it as leads, not as a full-scope substitute for source --query.`;\n }\n\n return `${label}: covers ${coverage}; build missing graph coverage before relying on object retrieval.`;\n}\n\nfunction createInspectImprovements(input: {\n readonly archiveUri: string;\n readonly concurrent: { readonly job: number; readonly request: number };\n readonly contentChapters: readonly InspectChapter[];\n readonly indexCacheCurrent: boolean;\n readonly knowledgeGraphCovered: readonly InspectChapter[];\n readonly planningModel: string;\n readonly queryBlockedChapters: readonly InspectChapter[];\n readonly readingGraphCovered: readonly InspectChapter[];\n readonly scopeUri: string;\n readonly summaryCovered: readonly InspectChapter[];\n}): readonly InspectImprovement[] {\n const improvements: InspectImprovement[] = [];\n\n if (input.contentChapters.length === 0) {\n improvements.push({\n command: formatCliCommand([\n `${input.archiveUri}/chapter`,\n \"add\",\n \"--input\",\n \"source.txt\",\n ]),\n recommendation:\n \"No source content is available yet; add or import source text before graph or summary generation.\",\n title: \"Add source content\",\n });\n return improvements;\n }\n\n if (input.queryBlockedChapters.length > 0) {\n improvements.push({\n command: formatCliCommand([\n \"wikg://local/job\",\n \"add\",\n \"--input\",\n input.scopeUri,\n \"--task\",\n \"index-fts\",\n ]),\n missingChapters: input.queryBlockedChapters.length,\n missingWords: sumWords(input.queryBlockedChapters),\n recommendation:\n \"Build local FTS artifacts to make this scope queryable. This does not call a provider.\",\n title: \"Enable query with local FTS\",\n });\n } else if (!input.indexCacheCurrent) {\n improvements.push({\n command: formatCliCommand([`${input.archiveUri}/index`, \"sync\"]),\n recommendation:\n \"Sync the index cache from chapter index artifacts so query starts without a lazy cache rebuild.\",\n title: \"Sync index cache\",\n });\n }\n\n improvements.push(\n ...createGraphImprovement({\n concurrent: input.concurrent,\n covered: input.readingGraphCovered,\n planningModel: input.planningModel,\n scopeUri: input.scopeUri,\n task: \"reading-graph\",\n title: \"Complete Reading Graph coverage\",\n total: input.contentChapters,\n }),\n );\n improvements.push(\n ...createGraphImprovement({\n concurrent: input.concurrent,\n covered: input.knowledgeGraphCovered,\n planningModel: input.planningModel,\n scopeUri: input.scopeUri,\n task: \"knowledge-graph\",\n title: \"Complete Knowledge Graph coverage\",\n total: input.contentChapters,\n }),\n );\n improvements.push(\n ...createGraphImprovement({\n concurrent: input.concurrent,\n covered: input.summaryCovered,\n planningModel: input.planningModel,\n scopeUri: input.scopeUri,\n task: \"reading-summary\",\n title: \"Complete Summary coverage\",\n total: input.contentChapters,\n }),\n );\n\n return improvements;\n}\n\nfunction createGraphImprovement(input: {\n readonly concurrent: { readonly job: number; readonly request: number };\n readonly covered: readonly InspectChapter[];\n readonly planningModel: string;\n readonly scopeUri: string;\n readonly task: \"knowledge-graph\" | \"reading-graph\" | \"reading-summary\";\n readonly title: string;\n readonly total: readonly InspectChapter[];\n}): readonly InspectImprovement[] {\n const coveredIds = new Set(input.covered.map((chapter) => chapter.chapterId));\n const missing = input.total.filter(\n (chapter) => !coveredIds.has(chapter.chapterId),\n );\n\n if (missing.length === 0) {\n return [];\n }\n\n const missingWords = sumWords(missing);\n\n return [\n {\n command: formatCliCommand([\n \"wikg://local/job\",\n \"add\",\n \"--input\",\n input.scopeUri,\n \"--task\",\n input.task,\n \"--accept-cost\",\n ]),\n missingChapters: missing.length,\n missingWords,\n planning: planGenerationTask(\n input.task,\n missingWords,\n missing.length,\n input.concurrent,\n input.planningModel,\n ),\n recommendation: formatImprovementRecommendation(\n input.covered,\n input.total,\n missingWords,\n ),\n title: input.title,\n },\n ];\n}\n\nfunction formatImprovementRecommendation(\n covered: readonly InspectChapter[],\n total: readonly InspectChapter[],\n missingWords: number,\n): string {\n const totalWords = sumWords(total);\n const coveredWords = sumWords(covered);\n\n if (totalWords === 0) {\n return \"No source content is available.\";\n }\n if (\n total.length === 1 ||\n coveredWords / totalWords >= 0.9 ||\n missingWords <= 1000\n ) {\n return \"Queue the full scope to finish the remaining gap.\";\n }\n\n return \"Queue selected chapters first if only part of the scope matters.\";\n}\n\nfunction formatInspectImprovement(\n improvement: InspectImprovement,\n): readonly string[] {\n return [\n `${improvement.title}:`,\n ...(improvement.missingChapters === undefined\n ? []\n : [\n ` Missing: ${improvement.missingChapters} chapters / ${improvement.missingWords} words`,\n ]),\n ` Recommendation: ${improvement.recommendation}`,\n ...(improvement.planning === undefined\n ? [` Command: ${improvement.command}`]\n : [\n \" If completing this scope:\",\n ` Command: ${improvement.command}`,\n ` Model: ${improvement.planning.model}`,\n ` Tokens: ${improvement.planning.tokens.input} input / ${improvement.planning.tokens.cacheableInput} cacheable input / ${improvement.planning.tokens.output} output`,\n ` Wait: ${formatGenerationPlanningDuration(improvement.planning.timeSeconds.min)}-${formatGenerationPlanningDuration(improvement.planning.timeSeconds.max)}`,\n ]),\n ];\n}\n\nfunction formatInspectPerformanceHints(\n hints: readonly GenerationPerformanceHint[],\n): readonly string[] {\n if (hints.length === 0) {\n return [];\n }\n\n return [\n \"Performance hints:\",\n ...hints.flatMap((hint) => [\n ` ${hint.message}`,\n ` Current ${hint.kind}: ${hint.current}; suggested: ${hint.recommended}.`,\n ` Command: ${hint.command}`,\n ]),\n ];\n}\n\nfunction sumWords(chapters: readonly Pick<InspectChapter, \"words\">[]): number {\n return chapters.reduce((total, chapter) => total + chapter.words, 0);\n}\n\nfunction formatPercent(numerator: number, denominator: number): string {\n if (denominator === 0) {\n return \"n/a\";\n }\n\n const percent = (numerator / denominator) * 100;\n\n return `${Number.isInteger(percent) ? percent.toFixed(0) : percent.toFixed(1)}%`;\n}\n","import {\n createContinuationCursor,\n type ContinuationCursor,\n} from \"wiki-graph-core\";\n\nimport type { ArchiveOutputContext } from \"./types.js\";\n\nexport async function createOutputContinuationCursor(\n context: ArchiveOutputContext,\n cursor: string | null | undefined,\n): Promise<string | null> {\n if (cursor === null || cursor === undefined) {\n return null;\n }\n\n let input: ContinuationCursor;\n\n if (context.continuationKind === \"source-locators\") {\n if (context.targetUri === undefined) {\n throw new Error(\"Source locator cursors require a target URI.\");\n }\n\n input = {\n archiveKey: context.archiveKey,\n archivePath: context.archivePath,\n cursor,\n format: context.format,\n indexScope: context.indexScope,\n kind: \"source-locators\",\n targetUri: context.targetUri,\n };\n } else if (context.continuationKind === \"evidence\") {\n if (context.targetUri === undefined) {\n throw new Error(\"Evidence continuation cursors require a target URI.\");\n }\n\n input = {\n archiveKey: context.archiveKey,\n archivePath: context.archivePath,\n cursor,\n format: context.format,\n indexScope: context.indexScope,\n kind: \"evidence\",\n order: context.order ?? \"doc-asc\",\n ...(context.query === undefined ? {} : { query: context.query }),\n ...(context.skipUnindexed === undefined\n ? {}\n : { skipUnindexed: context.skipUnindexed }),\n ...(context.sourceContext === undefined\n ? {}\n : { sourceContext: context.sourceContext }),\n targetUri: context.targetUri,\n };\n } else if (context.continuationKind === \"related\") {\n if (context.targetUri === undefined) {\n throw new Error(\"Related continuation cursors require a target URI.\");\n }\n\n input = {\n archiveKey: context.archiveKey,\n archivePath: context.archivePath,\n cursor,\n ...(context.evidenceLimit === undefined\n ? {}\n : { evidenceLimit: context.evidenceLimit }),\n format: context.format,\n indexScope: context.indexScope,\n kind: \"related\",\n order: context.order ?? \"doc-asc\",\n ...(context.query === undefined ? {} : { query: context.query }),\n ...(context.role === undefined ? {} : { role: context.role }),\n ...(context.skipUnindexed === undefined\n ? {}\n : { skipUnindexed: context.skipUnindexed }),\n ...(context.sourceContext === undefined\n ? {}\n : { sourceContext: context.sourceContext }),\n targetUri: context.targetUri,\n };\n } else if (context.continuationKind === \"collection\") {\n input = {\n archiveKey: context.archiveKey,\n archivePath: context.archivePath,\n chapters: context.chapters ?? null,\n cursor,\n ...(context.backlinks === undefined\n ? {}\n : { backlinks: context.backlinks }),\n ...(context.evidenceLimit === undefined\n ? {}\n : { evidenceLimit: context.evidenceLimit }),\n format: context.format,\n ids: context.ids ?? null,\n indexScope: context.indexScope,\n kind: \"collection\",\n order: context.order ?? \"doc-asc\",\n ...(context.sourceContext === undefined\n ? {}\n : { sourceContext: context.sourceContext }),\n ...(context.triplePattern === undefined\n ? {}\n : { triplePattern: context.triplePattern }),\n types: context.types,\n };\n } else {\n input = {\n archiveKey: context.archiveKey,\n archivePath: context.archivePath,\n cursor,\n ...(context.backlinks === undefined\n ? {}\n : { backlinks: context.backlinks }),\n ...(context.evidenceLimit === undefined\n ? {}\n : { evidenceLimit: context.evidenceLimit }),\n format: context.format,\n indexScope: context.indexScope,\n kind: \"search\",\n ...(context.chapters === undefined ? {} : { chapters: context.chapters }),\n ...(context.query === undefined ? {} : { query: context.query }),\n ...(context.skipUnindexed === undefined\n ? {}\n : { skipUnindexed: context.skipUnindexed }),\n ...(context.sourceContext === undefined\n ? {}\n : { sourceContext: context.sourceContext }),\n ...(context.triplePattern === undefined\n ? {}\n : { triplePattern: context.triplePattern }),\n types: context.types,\n };\n }\n\n return await createContinuationCursor(input);\n}\n","export function formatScoredLines(\n score: number | undefined,\n lines: readonly string[],\n): string[] {\n return score === undefined ? [...lines] : [`score: ${score}`, ...lines];\n}\n","import type { ArchiveOutputSource } from \"../object/types.js\";\n\nexport function formatSourceObject(source: ArchiveOutputSource): string {\n return formatSourceCitationBlock(source.uri, source.text);\n}\n\nexport function formatSourceCitationBlock(uri: string, text: string): string {\n return [`@@ ${uri} @@`, normalizeSourceText(text)].join(\"\\n\");\n}\n\nfunction normalizeSourceText(text: string): string {\n const lines = text.replace(/\\r\\n?/gu, \"\\n\").split(\"\\n\");\n\n while (lines.length > 0 && lines[0]?.trim() === \"\") lines.shift();\n while (lines.length > 0 && lines.at(-1)?.trim() === \"\") lines.pop();\n\n const normalizedLines: string[] = [];\n for (const line of lines) {\n if (line.trim() === \"\" && normalizedLines.at(-1) === \"\") continue;\n normalizedLines.push(line.trim() === \"\" ? \"\" : line);\n }\n\n return normalizedLines.join(\"\\n\");\n}\n","import { type ArchiveEvidenceItem } from \"wiki-graph-core\";\nimport { CLI_PRIMARY_COMMAND } from \"wiki-graph-core\";\n\nimport type { ArchiveOutputEvidencePreview } from \"../object/types.js\";\nimport { formatScoredLines } from \"./lines.js\";\nimport { formatSourceCitationBlock, formatSourceObject } from \"./source.js\";\n\nexport function formatEvidenceNextCursor(nextCursor: string | null): string {\n return nextCursor === null\n ? \"\"\n : `\\n\\nNext page: ${CLI_PRIMARY_COMMAND} next ${nextCursor}`;\n}\n\nexport function formatEvidenceItem(item: ArchiveEvidenceItem): string {\n return formatScoredLines(\n item.score,\n formatSourceCitationBlock(item.id, item.source).split(\"\\n\"),\n ).join(\"\\n\");\n}\n\nexport function formatEvidencePreviewBlocks(\n evidence: ArchiveOutputEvidencePreview,\n): string[] {\n if (evidence.sources.length === 0) {\n return [\"[none]\"];\n }\n\n const lines = evidence.sources.flatMap((item, index) => [\n ...(index === 0 ? [] : [\"\"]),\n `-- evidence ${index + 1}/${evidence.shown}`,\n formatSourceObject(item),\n ]);\n const hiddenEvidenceCount = evidence.total - evidence.shown;\n\n lines.push(\n ...formatEvidencePreviewContinuation(evidence, hiddenEvidenceCount),\n );\n return lines;\n}\n\nexport function formatEvidencePreviewContinuation(\n evidence: ArchiveOutputEvidencePreview,\n hiddenEvidenceCount: number,\n): string[] {\n if (evidence.nextCursor !== null) {\n return [\n \"\",\n `${hiddenEvidenceCount} more evidence: ${CLI_PRIMARY_COMMAND} next ${evidence.nextCursor}`,\n ];\n }\n\n return hiddenEvidenceCount > 0\n ? [\"\", `${hiddenEvidenceCount} evidence more...`]\n : [];\n}\n","import type { ArchiveFindResult } from \"wiki-graph-core\";\nimport { CLI_PRIMARY_COMMAND } from \"wiki-graph-core\";\n\nexport function formatNextCursor(nextCursor: string | null): string {\n if (nextCursor === null) {\n return \"\";\n }\n\n return `\\n\\nNext page: ${CLI_PRIMARY_COMMAND} next ${nextCursor}`;\n}\n\nexport function formatNoMatches(result: ArchiveFindResult): string {\n if (result.match === \"all\" && result.terms.length > 1) {\n return `No matches. Try a more specific scope URI, for example: ${CLI_PRIMARY_COMMAND} <archive-uri>/chunk --query \"${result.query}\"${formatFindLensHint(result)}\\n`;\n }\n\n const lines = [\n \"No matches.\",\n \"Try fewer or broader keywords, or use --query on a scope URI such as `<archive-uri>/chapter`, `<archive-uri>/chunk`, `<archive-uri>/entity`, or `<archive-uri>/triple`.\",\n ];\n\n if (result.lensHint !== null) {\n lines.push(`Lens hint: ${result.lensHint.message}`);\n }\n\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nexport function formatFindLensHint(result: ArchiveFindResult): string {\n if (result.lensHint === null) {\n return \"\";\n }\n\n return `\\n\\nLens hint: ${result.lensHint.message}`;\n}\n","export function isTextStreamOutputType(type: string | undefined): boolean {\n return type === \"source\" || type === \"summary\";\n}\n\nexport function getTextStreamOutputType(\n uri: string,\n): \"source\" | \"summary\" | undefined {\n const match = /^wikg:\\/\\/chapter\\/.+\\/(source|summary)(?:#.*)?$/u.exec(uri);\n\n return match?.[1] as \"source\" | \"summary\" | undefined;\n}\n\nexport function toWikiGraphUri(id: string): string {\n const [type, first, second] = id.split(\":\");\n\n switch (type) {\n case \"chapter\":\n return `wikg://chapter/${first ?? \"\"}`;\n case \"chapter-title\":\n return `wikg://chapter/${first ?? \"\"}/title`;\n case \"fragment\":\n return `wikg://chapter/${first ?? \"\"}/source/${second ?? \"0\"}`;\n case \"meta\":\n return \"wikg://\";\n case \"node\":\n return `wikg://chunk/${first ?? \"\"}`;\n case \"summary\":\n return `wikg://chapter/${first ?? \"\"}/summary`;\n default:\n return id;\n }\n}\n","import type { QueryIndexScope } from \"wiki-graph-core\";\nimport type { CLIArchiveArguments } from \"../../../args/index.js\";\n\nexport type ResultFormat = \"json\" | \"jsonl\" | \"text\";\n\nexport const DEFAULT_GET_EVIDENCE_LIMIT = 3;\nexport const PLAIN_OBJECT_KEY_PRIORITY = [\n \"uri\",\n \"digest\",\n \"mediaType\",\n \"name\",\n \"identifier\",\n \"locator\",\n \"title\",\n \"label\",\n \"labels\",\n \"state\",\n \"value\",\n \"authors\",\n \"publisher\",\n \"description\",\n] as const;\n\nexport interface ArchiveOutputObject {\n readonly archiveId?: number;\n readonly authors?: readonly string[];\n readonly backlinks?: ArchiveOutputBacklinks;\n readonly description?: string;\n readonly digest?: string;\n readonly evidence?: ArchiveOutputEvidencePreview;\n readonly label?: string;\n readonly identifier?: string;\n readonly libraryArchiveUri?: string;\n readonly locator?: Readonly<Record<string, unknown>>;\n readonly mediaType?: string;\n readonly name?: string;\n readonly objectLabel?: string;\n readonly predicate?: string;\n readonly publisher?: string;\n readonly score?: number;\n readonly state?: Record<string, string>;\n readonly subjectLabel?: string;\n readonly sources?: readonly ArchiveOutputLibrarySource[];\n readonly text?: string;\n readonly title?: string;\n readonly type?: string;\n readonly uri: string;\n readonly value?: string;\n}\n\nexport interface ArchiveOutputLibrarySource {\n readonly archiveId: number;\n readonly libraryArchiveUri: string;\n}\n\nexport interface ArchiveOutputBacklinks {\n readonly chunks: ArchiveOutputResultPage;\n readonly entities: ArchiveOutputResultPage;\n readonly triples: ArchiveOutputResultPage;\n}\n\nexport interface ArchiveOutputResultPage {\n readonly limit: number;\n readonly nextCursor: string | null;\n readonly objects: readonly ArchiveOutputObject[];\n readonly warnings?: readonly ArchiveOutputWarning[];\n}\n\nexport interface ArchiveOutputWarning {\n readonly message: string;\n readonly type: \"skip-unindexed\";\n}\n\nexport interface ArchiveOutputEvidencePreview {\n readonly nextCursor: string | null;\n readonly shown: number;\n readonly sources: readonly ArchiveOutputSource[];\n readonly total: number;\n}\n\nexport interface ArchiveOutputSource {\n readonly archiveId?: number;\n readonly libraryArchiveUri?: string;\n readonly score?: number;\n readonly text: string;\n readonly uri: string;\n}\n\nexport interface ArchiveOutputContext {\n readonly archiveKey: string;\n readonly archivePath: string;\n readonly backlinks?: boolean;\n readonly chapters?: readonly number[];\n readonly continuationKind?:\n | \"collection\"\n | \"evidence\"\n | \"related\"\n | \"search\"\n | \"source-locators\";\n readonly evidenceDisabled?: boolean;\n readonly evidenceLimit?: number;\n readonly format: ResultFormat;\n readonly ids?: readonly string[];\n readonly indexScope: QueryIndexScope;\n readonly limit: number;\n readonly order?: \"doc-asc\" | \"doc-desc\";\n readonly query?: string;\n readonly role?: CLIArchiveArguments[\"role\"];\n readonly skipUnindexed?: boolean;\n readonly sourceContext?: number;\n readonly targetUri?: string;\n readonly triplePattern?: CLIArchiveArguments[\"triplePattern\"];\n readonly types: readonly string[] | null;\n}\n","import { formatCLIJSON } from \"../../../support/index.js\";\nimport { PLAIN_OBJECT_KEY_PRIORITY } from \"../object/types.js\";\n\nexport function formatPlainObject(value: unknown): string {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return String(value);\n }\n\n return Object.entries(value)\n .filter(([, item]) => item !== undefined && item !== null)\n .sort(([left], [right]) => comparePlainObjectKeys(left, right))\n .map(([key, item]) => `${key}: ${formatPlainValue(item)}`)\n .join(\"\\n\");\n}\n\nexport function formatStatePageText(value: unknown): string {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return String(value);\n }\n\n const object = value as {\n readonly state?: Record<string, string>;\n readonly uri?: string;\n readonly value?: string;\n };\n\n if (object.value !== undefined) {\n return `${object.uri ?? \"state\"} ${object.value}`;\n }\n\n if (object.state !== undefined) {\n return [object.uri, formatStateBlock(object.state)]\n .filter((line): line is string => line !== undefined && line !== \"\")\n .join(\"\\n\");\n }\n\n return formatPlainObject(value);\n}\n\nfunction formatStateBlock(state: Record<string, string>): string {\n return formatStateEntries(state)\n .map(([key, value]) => `${key}: ${value}`)\n .join(\"\\n\");\n}\n\nexport function formatStateInline(state: Record<string, string>): string {\n return formatStateEntries(state)\n .map(([key, value]) => `${key}:${value}`)\n .join(\" \");\n}\n\nfunction formatStateEntries(\n state: Record<string, string>,\n): readonly (readonly [string, string])[] {\n const entries: readonly (readonly [string, string | undefined])[] = [\n [\"source\", state.source],\n [\"reading-graph\", state[\"reading-graph\"]],\n [\"reading-summary\", state[\"reading-summary\"]],\n [\"knowledge-graph\", state[\"knowledge-graph\"]],\n ];\n\n return entries.filter(\n (entry): entry is readonly [string, string] => entry[1] !== undefined,\n );\n}\n\nfunction comparePlainObjectKeys(left: string, right: string): number {\n return getPlainObjectKeyOrder(left) - getPlainObjectKeyOrder(right);\n}\n\nfunction getPlainObjectKeyOrder(key: string): number {\n const index = PLAIN_OBJECT_KEY_PRIORITY.indexOf(\n key as (typeof PLAIN_OBJECT_KEY_PRIORITY)[number],\n );\n\n return index < 0 ? PLAIN_OBJECT_KEY_PRIORITY.length : index;\n}\n\nfunction formatPlainValue(value: unknown): string {\n if (Array.isArray(value)) {\n return value.map((item) => String(item)).join(\", \");\n }\n if (typeof value === \"object\" && value !== null) {\n return formatCLIJSON(value).trimEnd();\n }\n\n return String(value);\n}\n","import {\n formatWikiGraphCommandUri,\n parseLocatedWikiGraphUri,\n} from \"../../../support/index.js\";\n\nimport { formatCliCommand } from \"../../../support/index.js\";\nimport type {\n ArchiveOutputBacklinks,\n ArchiveOutputContext,\n ArchiveOutputObject,\n} from \"../object/types.js\";\nimport { getTextStreamOutputType } from \"../object/uri.js\";\nimport { formatEvidencePreviewContinuation } from \"./evidence.js\";\nimport { formatScoredLines } from \"./lines.js\";\nimport { formatPlainObject, formatStateInline } from \"./plain.js\";\nimport { formatSourceObject } from \"./source.js\";\n\nexport function formatFindObject(object: ArchiveOutputObject): string {\n const lines = formatScoredLines(\n object.score,\n formatObjectSummaryLines(object),\n );\n\n if (object.evidence !== undefined && object.evidence.sources.length > 0) {\n lines.push(\n \"\",\n ...object.evidence.sources.flatMap((source, index) => [\n ...(index === 0 ? [] : [\"\"]),\n `-- evidence ${index + 1}/${object.evidence?.shown ?? object.evidence?.sources.length}`,\n formatSourceObject(source),\n ]),\n );\n\n const hiddenEvidenceCount = object.evidence.total - object.evidence.shown;\n\n lines.push(\n ...formatEvidencePreviewContinuation(\n object.evidence,\n hiddenEvidenceCount,\n ),\n );\n }\n\n if (object.backlinks !== undefined) {\n lines.push(\"\", ...formatBacklinkLines(object.backlinks));\n }\n\n return lines.join(\"\\n\");\n}\n\nexport function formatOpenShortUriHint(\n objects: readonly ArchiveOutputObject[],\n context: ArchiveOutputContext,\n): string {\n const shortObject = objects.find((object) => isShortOutputUri(object.uri));\n if (shortObject === undefined) {\n return \"\";\n }\n\n const locator = shortObject.libraryArchiveUri ?? context.archivePath;\n\n return `\\n\\nOpen short URIs with the archive locator, for example:\\n ${formatCliCommand([formatOpenShortUriCommand(locator, shortObject.uri)])}`;\n}\n\nfunction formatOpenShortUriCommand(locator: string, objectUri: string): string {\n if (locator.startsWith(\"wikg://lib/\")) {\n return `${locator.replace(/\\/+$/u, \"\")}/${objectUri.slice(\"wikg://\".length)}`;\n }\n\n return formatWikiGraphCommandUri(locator, objectUri);\n}\n\nfunction isShortOutputUri(uri: string): boolean {\n return (\n uri.startsWith(\"wikg://\") &&\n parseLocatedWikiGraphUri(uri).archivePath === undefined\n );\n}\n\nfunction formatBacklinkLines(backlinks: ArchiveOutputBacklinks): string[] {\n const lines = [\n ...backlinks.chunks.objects,\n ...backlinks.entities.objects,\n ...backlinks.triples.objects,\n ].flatMap((object, index) => [\n ...(index === 0 ? [] : [\"\"]),\n formatFindObject(object),\n ]);\n\n return lines.length === 0 ? [] : [\"Backlinks:\", \"\", ...lines];\n}\n\nfunction formatObjectSummaryLines(object: ArchiveOutputObject): string[] {\n const sourceLines = formatLibrarySourceLines(object);\n\n if (\n getTextStreamOutputType(object.uri) !== undefined &&\n object.text !== undefined\n ) {\n return [\n ...formatSourceObject({\n text: object.text,\n uri: object.uri,\n }).split(\"\\n\"),\n ...sourceLines,\n ];\n }\n\n if (object.predicate !== undefined) {\n return [object.uri, formatTripleObjectLabel(object), ...sourceLines];\n }\n\n if (isChapterStateListObject(object)) {\n return [\n [object.uri, object.title, formatStateInline(object.state)]\n .filter((part): part is string => part !== undefined && part !== \"\")\n .join(\" \"),\n ...sourceLines,\n ];\n }\n\n return [\n object.uri,\n object.title,\n object.label,\n object.state === undefined ? undefined : formatStateInline(object.state),\n object.evidence === undefined ? object.text : undefined,\n ...sourceLines,\n ].filter((line): line is string => line !== undefined && line !== \"\");\n}\n\nfunction formatLibrarySourceLines(object: ArchiveOutputObject): string[] {\n const sources =\n object.sources !== undefined && object.sources.length > 0\n ? object.sources\n : object.archiveId === undefined && object.libraryArchiveUri === undefined\n ? []\n : [\n {\n archiveId: object.archiveId,\n libraryArchiveUri: object.libraryArchiveUri,\n },\n ];\n\n return sources.map((source) =>\n [\n source.archiveId === undefined\n ? undefined\n : `archiveId:${source.archiveId}`,\n source.libraryArchiveUri,\n ]\n .filter((part): part is string => part !== undefined)\n .join(\" \"),\n );\n}\n\nexport function getListObjectSeparator(\n objects: readonly ArchiveOutputObject[],\n): string {\n return objects.every(isChapterStateListObject) ? \"\\n\" : \"\\n\\n\";\n}\n\nfunction isChapterStateListObject(\n object: ArchiveOutputObject,\n): object is ArchiveOutputObject & {\n readonly state: Record<string, string>;\n} {\n return (\n object.state !== undefined &&\n object.uri.startsWith(\"wikg://chapter/\") &&\n !object.uri.includes(\"/state\")\n );\n}\n\nfunction formatTripleObjectLabel(object: ArchiveOutputObject): string {\n const triple = parseTripleOutputUri(object.uri);\n\n if (triple === undefined) {\n return `${object.subjectLabel ?? \"[subject]\"} ${object.predicate ?? \"[predicate]\"} ${object.objectLabel ?? \"[object]\"}`;\n }\n\n return `${object.subjectLabel ?? triple.subjectQid}(${triple.subjectQid}) ${object.predicate ?? triple.predicate} ${object.objectLabel ?? triple.objectQid}(${triple.objectQid})`;\n}\n\nfunction parseTripleOutputUri(uri: string):\n | {\n readonly objectQid: string;\n readonly predicate: string;\n readonly subjectQid: string;\n }\n | undefined {\n const match =\n /^wikg:\\/\\/triple\\/(Q[1-9][0-9]*)\\/([^/]+)\\/(Q[1-9][0-9]*)\\/?$/u.exec(uri);\n\n if (\n match?.[1] === undefined ||\n match[2] === undefined ||\n match[3] === undefined\n ) {\n return undefined;\n }\n\n return {\n objectQid: match[3],\n predicate: decodeURIComponent(match[2]),\n subjectQid: match[1],\n };\n}\n\nexport function formatChapterObjectText(object: ArchiveOutputObject): string {\n if (isChapterStateListObject(object)) {\n return formatObjectSummaryLines(object).join(\"\\n\");\n }\n\n return formatPlainObject(object);\n}\n","import type {\n ArchiveBacklinkBucket,\n ArchiveBacklinks,\n ArchiveEvidenceItem,\n ArchiveFindEvidencePreview,\n ArchiveFindHit,\n ArchiveListItem,\n ArchivePack,\n ArchivePage,\n} from \"wiki-graph-core\";\n\nimport { createOutputContinuationCursor } from \"./cursor.js\";\nimport type {\n ArchiveOutputBacklinks,\n ArchiveOutputContext,\n ArchiveOutputEvidencePreview,\n ArchiveOutputObject,\n ArchiveOutputResultPage,\n ArchiveOutputSource,\n ArchiveOutputWarning,\n} from \"./types.js\";\nimport {\n getTextStreamOutputType,\n isTextStreamOutputType,\n toWikiGraphUri,\n} from \"./uri.js\";\n\nexport async function createListObject(\n item: ArchiveListItem,\n context: ArchiveOutputContext,\n): Promise<ArchiveOutputObject> {\n const librarySource = createLibrarySourceObject(item);\n\n if (item.type === \"triple\") {\n return {\n ...librarySource,\n ...(context.evidenceLimit === undefined || item.evidence === undefined\n ? {}\n : {\n evidence: await createEvidencePreviewObject(item.evidence, {\n ...context,\n continuationKind: \"evidence\",\n targetUri: toWikiGraphUri(item.id),\n }),\n }),\n objectLabel: item.objectLabel,\n predicate: item.predicate,\n ...(item.score === undefined ? {} : { score: item.score }),\n subjectLabel: item.subjectLabel,\n uri: toWikiGraphUri(item.id),\n };\n }\n\n return {\n ...librarySource,\n ...(context.evidenceLimit === undefined || item.evidence === undefined\n ? {}\n : {\n evidence: await createEvidencePreviewObject(item.evidence, {\n ...context,\n continuationKind: \"evidence\",\n targetUri: toWikiGraphUri(item.id),\n }),\n }),\n label: item.label,\n ...(item.score === undefined ? {} : { score: item.score }),\n ...(isTextStreamOutputType(item.type)\n ? { text: item.summary }\n : { type: item.type }),\n uri: toWikiGraphUri(item.id),\n };\n}\n\nexport function createObjectResultPage(\n objects: readonly ArchiveOutputObject[],\n nextCursor: string | null,\n limit: number,\n warnings: readonly ArchiveOutputWarning[] = [],\n): {\n readonly limit: number;\n readonly nextCursor: string | null;\n readonly objects: readonly ArchiveOutputObject[];\n readonly warnings?: readonly ArchiveOutputWarning[];\n} {\n return {\n limit,\n nextCursor,\n objects,\n ...(warnings.length === 0 ? {} : { warnings }),\n };\n}\n\nexport async function createFindObject(\n hit: ArchiveFindHit,\n context: ArchiveOutputContext,\n): Promise<ArchiveOutputObject> {\n const uri = toWikiGraphUri(hit.id);\n const librarySource = createLibrarySourceObject(hit);\n\n if (hit.type === \"chapter\") {\n return {\n ...librarySource,\n ...(hit.state === undefined ? {} : { state: hit.state }),\n title: hit.title,\n uri,\n };\n }\n if (hit.type === \"chapter-title\") {\n return {\n ...librarySource,\n title: hit.title,\n type: \"chapter-title\",\n uri,\n };\n }\n if (hit.type === \"meta\") {\n return {\n ...librarySource,\n text: hit.snippet,\n title: hit.title,\n type: \"meta\",\n uri,\n };\n }\n if (hit.type === \"triple\") {\n const triple = hit.triple;\n\n return {\n ...librarySource,\n ...(hit.backlinks === undefined\n ? {}\n : { backlinks: await createBacklinksObject(hit.backlinks, context) }),\n ...(context.evidenceLimit === undefined || hit.evidence === undefined\n ? {}\n : {\n evidence: await createEvidencePreviewObject(hit.evidence, {\n ...context,\n continuationKind: \"evidence\",\n targetUri: uri,\n }),\n }),\n objectLabel: triple?.objectLabel ?? \"\",\n predicate: triple?.predicate ?? \"\",\n subjectLabel: triple?.subjectLabel ?? \"\",\n uri,\n };\n }\n\n return {\n ...librarySource,\n ...(hit.backlinks === undefined\n ? {}\n : { backlinks: await createBacklinksObject(hit.backlinks, context) }),\n ...(context.evidenceLimit === undefined || hit.evidence === undefined\n ? {}\n : {\n evidence: await createEvidencePreviewObject(hit.evidence, {\n ...context,\n continuationKind: \"evidence\",\n targetUri: uri,\n }),\n }),\n label: hit.title,\n ...(isTextStreamOutputType(hit.type)\n ? { text: hit.snippet }\n : { type: hit.type === \"node\" ? \"chunk\" : hit.type }),\n uri,\n };\n}\n\nexport async function createEvidencePreviewObject(\n evidence: ArchiveFindEvidencePreview,\n context: ArchiveOutputContext,\n): Promise<ArchiveOutputEvidencePreview> {\n return {\n nextCursor: await createOutputContinuationCursor(\n {\n ...context,\n continuationKind: \"evidence\",\n },\n evidence.nextCursor,\n ),\n shown: evidence.shown,\n sources: evidence.sources.map(createSourceObject),\n total: evidence.total,\n };\n}\n\nexport function createSourceObject(\n item: ArchiveEvidenceItem,\n): ArchiveOutputSource {\n return {\n ...createLibrarySourceObject(item),\n ...(item.score === undefined ? {} : { score: item.score }),\n text: item.source,\n uri: item.id,\n };\n}\n\nasync function createBacklinksObject(\n backlinks: ArchiveBacklinks,\n context: ArchiveOutputContext,\n): Promise<ArchiveOutputBacklinks> {\n return {\n chunks: await createBacklinkBucketObject(backlinks.chunks, context),\n entities: await createBacklinkBucketObject(backlinks.entities, context),\n triples: await createBacklinkBucketObject(backlinks.triples, context),\n };\n}\n\nasync function createBacklinkBucketObject(\n bucket: ArchiveBacklinkBucket,\n context: ArchiveOutputContext,\n): Promise<ArchiveOutputResultPage> {\n const objects = await Promise.all(\n bucket.items.map(\n async (item) =>\n await createFindObject(item, {\n ...context,\n backlinks: false,\n }),\n ),\n );\n\n return createObjectResultPage(objects, bucket.nextCursor, bucket.limit);\n}\n\nexport async function createPageObject(\n page: ArchivePage,\n context: ArchiveOutputContext,\n): Promise<unknown> {\n const librarySource = createLibrarySourceObject(page);\n\n switch (page.type) {\n case \"artifact\": {\n const { id: _id, type: _type, ...rest } = page;\n\n return { ...librarySource, ...rest, uri: page.id };\n }\n case \"entity-wikipage\":\n return {\n ...librarySource,\n en: page.en,\n uri: page.id,\n zh: page.zh,\n };\n case \"entity\":\n return {\n ...librarySource,\n labels: page.labels.slice(0, 7),\n qid: page.qid,\n ...(context.evidenceLimit === undefined\n ? {}\n : {\n evidence: await createEvidencePreviewObject(page.evidence, {\n ...context,\n continuationKind: \"evidence\",\n targetUri: page.id,\n }),\n }),\n uri: page.id,\n };\n case \"triple\":\n return {\n ...librarySource,\n label: page.label,\n ...(context.evidenceLimit === undefined\n ? {}\n : {\n evidence: await createEvidencePreviewObject(page.evidence, {\n ...context,\n continuationKind: \"evidence\",\n targetUri: page.id,\n }),\n }),\n uri: page.id,\n };\n case \"chapter\": {\n return {\n ...librarySource,\n state: page.state,\n title: page.title,\n uri: toWikiGraphUri(page.id),\n };\n }\n case \"chapter-title\":\n return {\n ...librarySource,\n title: page.title,\n type: \"chapter-title\",\n uri: toWikiGraphUri(page.id),\n };\n case \"chapter-tree\": {\n const { id: _id, ...rest } = page;\n\n return { ...librarySource, ...rest, uri: toWikiGraphUri(page.id) };\n }\n case \"fragment\": {\n const {\n backlinks,\n id: _id,\n nextFragmentId,\n previousFragmentId,\n ...rest\n } = page;\n const textStreamType = getTextStreamOutputType(page.id);\n\n if (textStreamType !== undefined) {\n return {\n ...librarySource,\n ...(backlinks === undefined\n ? {}\n : { backlinks: await createBacklinksObject(backlinks, context) }),\n text: page.fragment.text,\n uri: toWikiGraphUri(page.id),\n };\n }\n\n return {\n ...librarySource,\n ...rest,\n ...(backlinks === undefined\n ? {}\n : { backlinks: await createBacklinksObject(backlinks, context) }),\n ...(nextFragmentId === undefined\n ? {}\n : { nextUri: toWikiGraphUri(nextFragmentId) }),\n ...(previousFragmentId === undefined\n ? {}\n : { previousUri: toWikiGraphUri(previousFragmentId) }),\n uri: toWikiGraphUri(page.id),\n };\n }\n case \"meta\": {\n const { id: _id, type: _type, ...rest } = page;\n\n return { ...librarySource, ...rest, uri: toWikiGraphUri(page.id) };\n }\n case \"state\": {\n if (\"state\" in page) {\n return {\n ...librarySource,\n ...page.state,\n uri: toWikiGraphUri(page.id),\n };\n }\n\n return {\n ...librarySource,\n uri: toWikiGraphUri(page.id),\n value: page.value,\n };\n }\n case \"node\": {\n const { id: _id, ...rest } = page;\n\n return { ...librarySource, ...rest, uri: toWikiGraphUri(page.id) };\n }\n case \"summary\": {\n const { id: _id, ...rest } = page;\n\n return { ...librarySource, ...rest, uri: toWikiGraphUri(page.id) };\n }\n }\n}\n\nfunction createLibrarySourceObject(source: {\n readonly archiveId?: number;\n readonly libraryArchiveUri?: string;\n readonly sources?: readonly {\n readonly archiveId: number;\n readonly libraryArchiveUri: string;\n }[];\n}): Pick<ArchiveOutputObject, \"archiveId\" | \"libraryArchiveUri\" | \"sources\"> {\n return {\n ...(source.archiveId === undefined ? {} : { archiveId: source.archiveId }),\n ...(source.libraryArchiveUri === undefined\n ? {}\n : { libraryArchiveUri: source.libraryArchiveUri }),\n ...(source.sources === undefined ? {} : { sources: source.sources }),\n };\n}\n\nexport async function createPackObject(\n pack: ArchivePack,\n context: ArchiveOutputContext,\n): Promise<{\n readonly anchor: unknown;\n readonly related: {\n readonly limit: number;\n readonly nextCursor: string | null;\n readonly objects: readonly ArchiveOutputObject[];\n };\n}> {\n const relatedObjects = await Promise.all(\n pack.related.map(async (item) => await createListObject(item, context)),\n );\n\n return {\n anchor: await createPageObject(pack.anchor, context),\n related: createObjectResultPage(\n relatedObjects,\n null,\n relatedObjects.length,\n ),\n };\n}\n","import type { ArchiveFindEvidencePreview, ArchivePage } from \"wiki-graph-core\";\n\nimport {\n formatCLIJSON,\n formatCliCommand,\n formatWikiGraphCommandUri,\n} from \"../../../support/index.js\";\nimport {\n createEvidencePreviewObject,\n createPageObject,\n} from \"../object/objects.js\";\nimport type { ArchiveOutputContext } from \"../object/types.js\";\nimport { toWikiGraphUri } from \"../object/uri.js\";\nimport { formatEvidencePreviewBlocks } from \"./evidence.js\";\nimport { formatPlainObject } from \"./plain.js\";\n\nexport async function formatEvidenceBackedPageText(\n uri: string,\n label: string,\n evidence: ArchiveFindEvidencePreview,\n context: ArchiveOutputContext,\n): Promise<string> {\n if (context.evidenceLimit === undefined) {\n return [`${uri}`, label].join(\"\\n\");\n }\n\n return [\n `${uri}`,\n label,\n \"\",\n \"Evidence:\",\n ...formatEvidencePreviewBlocks(\n await createEvidencePreviewObject(evidence, {\n ...context,\n continuationKind: \"evidence\",\n targetUri: uri,\n }),\n ),\n ].join(\"\\n\");\n}\n\nexport function appendEntityNextSteps(\n text: string,\n uri: string,\n archivePath: string,\n): string {\n if (!isEntityOutputUri(uri)) {\n return text;\n }\n const entityUri = formatWikiGraphCommandUri(\n archivePath,\n uri.replace(/\\/$/u, \"\"),\n );\n\n return [\n text,\n \"\",\n \"Next:\",\n ` ${formatCliCommand([entityUri, \"evidence\"])}`,\n ` ${formatCliCommand([entityUri, \"related\"])}`,\n ` ${formatCliCommand([`${entityUri}/wikipage`])}`,\n ].join(\"\\n\");\n}\n\nfunction isEntityOutputUri(uri: string): boolean {\n return /^wikg:\\/\\/(?:chapter\\/[1-9][0-9]*\\/)?entity\\/Q[1-9][0-9]*\\/?$/u.test(\n uri,\n );\n}\n\nexport function formatEntityWikipageText(\n page: Extract<ArchivePage, { readonly type: \"entity-wikipage\" }>,\n): string {\n return [\n page.id,\n \"\",\n ...formatEntityWikipageLocaleLines(\"zh\", page.zh),\n \"\",\n ...formatEntityWikipageLocaleLines(\"en\", page.en),\n ].join(\"\\n\");\n}\n\nfunction formatEntityWikipageLocaleLines(\n language: \"en\" | \"zh\",\n locale: Extract<ArchivePage, { readonly type: \"entity-wikipage\" }>[\n | \"en\"\n | \"zh\"],\n): readonly string[] {\n if (locale === null) {\n return [`${language}: [missing]`];\n }\n\n return [\n `${locale.title} ${locale.url}`,\n ...(locale.description === undefined ? [] : [locale.description]),\n ];\n}\n\nexport function formatNeighborLines(\n neighbors: Extract<ArchivePage, { readonly type: \"node\" }>[\"neighbors\"],\n): string[] {\n if (neighbors.length === 0) {\n return [\" [none]\"];\n }\n\n return neighbors.map((neighbor) => {\n const arrow = neighbor.direction === \"incoming\" ? \"<-\" : \"->\";\n\n return ` ${arrow} ${toWikiGraphUri(`node:${neighbor.node.id}`)} ${neighbor.node.label}`;\n });\n}\n\nexport function formatNodeLabels(\n nodes: readonly { readonly id: string; readonly title: string }[],\n): string[] {\n if (nodes.length === 0) {\n return [\" [none]\"];\n }\n\n return nodes.map((node) => ` ${node.id} ${node.title}`);\n}\n\nexport function formatSourceFragmentLines(\n fragments: Extract<ArchivePage, { readonly type: \"node\" }>[\"sourceFragments\"],\n): string[] {\n if (fragments.length === 0) {\n return [\" [none]\"];\n }\n\n return fragments.flatMap((fragment) => [\n ` ${fragment.id}${fragment.truncated ? \" [excerpt]\" : \"\"}`,\n ...fragment.text.split(\"\\n\").map((line) => ` ${line}`),\n ]);\n}\n\nexport function formatPosition(\n position:\n | {\n readonly chapter: number;\n readonly fragment?: number;\n }\n | undefined,\n): string {\n if (position === undefined) {\n return \"[unknown]\";\n }\n\n return [\n `chapter ${position.chapter}`,\n position.fragment === undefined\n ? undefined\n : `fragment ${position.fragment}`,\n ]\n .filter((part): part is string => part !== undefined)\n .join(\", \");\n}\n\nexport async function formatPackAnchor(\n anchor: ArchivePage,\n context: ArchiveOutputContext,\n): Promise<string> {\n switch (anchor.type) {\n case \"artifact\":\n return formatPlainObject(await createPageObject(anchor, context));\n case \"chapter-title\":\n case \"chapter\":\n return formatPlainObject(await createPageObject(anchor, context));\n case \"chapter-tree\":\n return `${anchor.id} ${anchor.title}\\n${formatCLIJSON(anchor.tree).trimEnd()}`;\n case \"fragment\":\n return `${anchor.id}\\n${anchor.fragment.text}`;\n case \"meta\":\n return formatPlainObject(await createPageObject(anchor, context));\n case \"state\":\n return formatPlainObject(await createPageObject(anchor, context));\n case \"node\":\n return [\n `${anchor.id} ${anchor.title}`,\n \"\",\n \"Generated Node Summary:\",\n anchor.generatedNodeSummary,\n \"\",\n \"Source Fragments:\",\n ...formatSourceFragmentLines(anchor.sourceFragments),\n ].join(\"\\n\");\n case \"summary\":\n return `${anchor.id} ${anchor.title}\\n${anchor.content}`;\n case \"entity\":\n return await formatEvidenceBackedPageText(\n anchor.id,\n anchor.label,\n anchor.evidence,\n context,\n );\n case \"entity-wikipage\":\n return formatEntityWikipageText(anchor);\n case \"triple\":\n return await formatEvidenceBackedPageText(\n anchor.id,\n anchor.label,\n anchor.evidence,\n context,\n );\n }\n}\n\nexport function truncateToBudget(text: string, budget: number): string {\n if (text.length <= budget) {\n return text;\n }\n\n return `${text.slice(0, Math.max(0, budget - 20))}\\n[truncated]`;\n}\n","export * from \"./evidence.js\";\nexport * from \"./lens.js\";\nexport * from \"./lines.js\";\nexport * from \"./object.js\";\nexport * from \"./page.js\";\nexport * from \"./plain.js\";\nexport * from \"./source.js\";\n","import {\n formatCLIJSONLine,\n writeTextToStdout,\n} from \"../../../support/index.js\";\n\nexport async function writeJSONL(items: readonly unknown[]): Promise<void> {\n await writeTextToStdout(\n items.map((item) => formatCLIJSONLine(item)).join(\"\") +\n (items.length === 0 ? \"\" : \"\"),\n );\n}\n","export function createPageCursorObject(nextCursor: string | null): {\n readonly nextCursor: string | null;\n readonly type: \"page\";\n} {\n return {\n nextCursor,\n type: \"page\",\n };\n}\n","import type { ArchiveOutputContext } from \"../object/types.js\";\n\nexport function createOutputWarnings(\n context: ArchiveOutputContext,\n): readonly { readonly message: string; readonly type: \"skip-unindexed\" }[] {\n if (context.skipUnindexed !== true) {\n return [];\n }\n\n return [\n {\n message:\n \"--skip-unindexed was used; this command searched only chapters that already have a current FTS or source embedding index artifact. Run `inspect` to check index coverage before treating missing results as missing knowledge.\",\n type: \"skip-unindexed\",\n },\n ];\n}\n\nexport function formatOutputWarnings(\n warnings: readonly { readonly message: string }[],\n): string {\n if (warnings.length === 0) {\n return \"\";\n }\n\n return `${warnings.map((warning) => `Warning: ${warning.message}`).join(\"\\n\")}\\n\\n`;\n}\n\nexport function createWarningJSONLObject(warning: {\n readonly message: string;\n readonly type: \"skip-unindexed\";\n}): {\n readonly message: string;\n readonly type: \"warning\";\n readonly warning: \"skip-unindexed\";\n} {\n return {\n message: warning.message,\n type: \"warning\",\n warning: warning.type,\n };\n}\n","import type { ArchiveEvidence } from \"wiki-graph-core\";\n\nimport { formatCLIJSON, writeTextToStdout } from \"../../../support/index.js\";\nimport { createOutputContinuationCursor } from \"../object/cursor.js\";\nimport { formatEvidenceItem, formatEvidenceNextCursor } from \"../text/index.js\";\nimport { writeJSONL } from \"./jsonl.js\";\nimport {\n createObjectResultPage,\n createSourceObject,\n} from \"../object/objects.js\";\nimport { createPageCursorObject } from \"../object/page-cursor.js\";\nimport type { ArchiveOutputContext, ResultFormat } from \"../object/types.js\";\nimport {\n createOutputWarnings,\n createWarningJSONLObject,\n formatOutputWarnings,\n} from \"./warnings.js\";\n\nexport async function writeEvidence(\n evidence: ArchiveEvidence,\n context: ArchiveOutputContext,\n format: ResultFormat,\n): Promise<void> {\n const nextCursor = await createOutputContinuationCursor(\n context,\n evidence.nextCursor,\n );\n const objects = evidence.items.map(createSourceObject);\n const warnings = createOutputWarnings(context);\n\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON(\n createObjectResultPage(objects, nextCursor, evidence.limit, warnings),\n ),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL([\n ...warnings.map(createWarningJSONLObject),\n ...objects,\n createPageCursorObject(nextCursor),\n ]);\n return;\n }\n\n if (evidence.items.length === 0) {\n await writeTextToStdout(`${formatOutputWarnings(warnings)}No evidence.\\n`);\n return;\n }\n\n await writeTextToStdout(\n `${formatOutputWarnings(warnings)}${evidence.items.map(formatEvidenceItem).join(\"\\n\\n\")}${formatEvidenceNextCursor(nextCursor)}\\n`,\n );\n}\n\nexport async function writeAllEvidence(\n readPage: (cursor: string | undefined) => Promise<ArchiveEvidence>,\n initialCursor: string | undefined,\n context: ArchiveOutputContext,\n format: ResultFormat,\n): Promise<void> {\n const pages: ArchiveEvidence[] = [];\n let cursor = initialCursor;\n\n while (true) {\n const page = await readPage(cursor);\n\n if (format === \"jsonl\") {\n await writeEvidenceWithoutContinuation(page, context, format, {\n emitWarnings: cursor === initialCursor,\n });\n } else {\n pages.push(page);\n }\n\n if (page.nextCursor === null) {\n break;\n }\n\n cursor = page.nextCursor;\n }\n\n if (format === \"jsonl\") {\n return;\n }\n\n await writeEvidenceWithoutContinuation(\n mergeEvidencePages(pages),\n context,\n format,\n );\n}\n\nexport async function writeEvidenceWithoutContinuation(\n evidence: ArchiveEvidence,\n context: ArchiveOutputContext,\n format: ResultFormat,\n options: { readonly emitWarnings?: boolean } = {},\n): Promise<void> {\n const objects = evidence.items.map(createSourceObject);\n const warnings =\n (options.emitWarnings ?? true) ? createOutputWarnings(context) : [];\n\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON(\n createObjectResultPage(objects, null, evidence.limit, warnings),\n ),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL([...warnings.map(createWarningJSONLObject), ...objects]);\n return;\n }\n\n if (evidence.items.length === 0) {\n await writeTextToStdout(`${formatOutputWarnings(warnings)}No evidence.\\n`);\n return;\n }\n\n await writeTextToStdout(\n `${formatOutputWarnings(warnings)}${evidence.items.map(formatEvidenceItem).join(\"\\n\\n\")}\\n`,\n );\n}\n\nfunction mergeEvidencePages(\n pages: readonly ArchiveEvidence[],\n): ArchiveEvidence {\n const [first] = pages;\n\n if (first === undefined) {\n throw new Error(\"Internal error: no evidence pages were loaded.\");\n }\n\n return {\n ...first,\n items: pages.flatMap((page) => page.items),\n limit: pages.reduce((total, page) => total + page.items.length, 0),\n nextCursor: null,\n };\n}\n","import type { ArchiveFindResult } from \"wiki-graph-core\";\n\nimport { formatCLIJSON, writeTextToStdout } from \"../../../support/index.js\";\nimport { createOutputContinuationCursor } from \"../object/cursor.js\";\nimport {\n formatFindLensHint,\n formatFindObject,\n formatNextCursor,\n formatNoMatches,\n formatOpenShortUriHint,\n getListObjectSeparator,\n} from \"../text/index.js\";\nimport { writeJSONL } from \"./jsonl.js\";\nimport { createFindObject, createObjectResultPage } from \"../object/objects.js\";\nimport { createPageCursorObject } from \"../object/page-cursor.js\";\nimport type { ArchiveOutputContext, ResultFormat } from \"../object/types.js\";\nimport {\n createOutputWarnings,\n createWarningJSONLObject,\n formatOutputWarnings,\n} from \"./warnings.js\";\n\nexport async function writeFindHits(\n result: ArchiveFindResult,\n context: ArchiveOutputContext,\n format: ResultFormat,\n): Promise<void> {\n const objects = await Promise.all(\n result.items.map(async (item) => await createFindObject(item, context)),\n );\n const nextCursor = await createOutputContinuationCursor(\n context,\n result.nextCursor,\n );\n const warnings = createOutputWarnings(context);\n\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON(\n createObjectResultPage(objects, nextCursor, result.limit, warnings),\n ),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL([\n ...warnings.map(createWarningJSONLObject),\n ...objects,\n createPageCursorObject(nextCursor),\n ]);\n return;\n }\n\n if (objects.length === 0) {\n await writeTextToStdout(\n `${formatOutputWarnings(warnings)}${formatNoMatches(result)}`,\n );\n return;\n }\n\n await writeTextToStdout(\n `${formatOutputWarnings(warnings)}${objects\n .map((object) => formatFindObject(object))\n .join(\n getListObjectSeparator(objects),\n )}${formatOpenShortUriHint(objects, context)}${formatNextCursor(nextCursor)}${formatFindLensHint(result)}\\n`,\n );\n}\n\nexport async function writeAllFindHits(\n readPage: (cursor: string | undefined) => Promise<ArchiveFindResult>,\n context: ArchiveOutputContext,\n format: ResultFormat,\n): Promise<void> {\n const pages: ArchiveFindResult[] = [];\n let cursor: string | undefined;\n\n while (true) {\n const page = await readPage(cursor);\n\n if (format === \"jsonl\") {\n await writeFindHitsWithoutContinuation(page, context, format, {\n emitWarnings: cursor === undefined,\n });\n } else {\n pages.push(page);\n }\n\n if (page.nextCursor === null) {\n break;\n }\n\n cursor = page.nextCursor;\n }\n\n if (format === \"jsonl\") {\n return;\n }\n\n const merged = mergeFindResultPages(pages);\n await writeFindHitsWithoutContinuation(merged, context, format);\n}\n\nexport async function writeFindHitsWithoutContinuation(\n result: ArchiveFindResult,\n context: ArchiveOutputContext,\n format: ResultFormat,\n options: { readonly emitWarnings?: boolean } = {},\n): Promise<void> {\n const objects = await Promise.all(\n result.items.map(async (item) => await createFindObject(item, context)),\n );\n const warnings =\n (options.emitWarnings ?? true) ? createOutputWarnings(context) : [];\n\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON(\n createObjectResultPage(objects, null, result.limit, warnings),\n ),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL([...warnings.map(createWarningJSONLObject), ...objects]);\n return;\n }\n\n if (objects.length === 0) {\n await writeTextToStdout(\n `${formatOutputWarnings(warnings)}${formatNoMatches(result)}`,\n );\n return;\n }\n\n await writeTextToStdout(\n `${formatOutputWarnings(warnings)}${objects\n .map((object) => formatFindObject(object))\n .join(getListObjectSeparator(objects))}${formatFindLensHint(result)}\\n`,\n );\n}\n\nfunction mergeFindResultPages(\n pages: readonly ArchiveFindResult[],\n): ArchiveFindResult {\n const [first] = pages;\n\n if (first === undefined) {\n throw new Error(\"Internal error: no result pages were loaded.\");\n }\n\n return {\n ...first,\n items: pages.flatMap((page) => page.items),\n limit: pages.reduce((total, page) => total + page.items.length, 0),\n nextCursor: null,\n };\n}\n","import type { ArchiveRelatedResult } from \"wiki-graph-core\";\n\nimport { formatCLIJSON, writeTextToStdout } from \"../../../support/index.js\";\nimport { createOutputContinuationCursor } from \"../object/cursor.js\";\nimport {\n formatFindObject,\n formatNextCursor,\n formatOpenShortUriHint,\n getListObjectSeparator,\n} from \"../text/index.js\";\nimport { writeJSONL } from \"./jsonl.js\";\nimport { createListObject, createObjectResultPage } from \"../object/objects.js\";\nimport { createPageCursorObject } from \"../object/page-cursor.js\";\nimport type { ArchiveOutputContext, ResultFormat } from \"../object/types.js\";\nimport {\n createOutputWarnings,\n createWarningJSONLObject,\n formatOutputWarnings,\n} from \"./warnings.js\";\n\nexport async function writeList(\n result: ArchiveRelatedResult,\n context: ArchiveOutputContext,\n format: ResultFormat,\n): Promise<void> {\n const objects = await Promise.all(\n result.items.map(async (item) => await createListObject(item, context)),\n );\n const nextCursor = await createOutputContinuationCursor(\n context,\n result.nextCursor,\n );\n const warnings = createOutputWarnings(context);\n\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON(\n createObjectResultPage(objects, nextCursor, result.limit, warnings),\n ),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL([\n ...warnings.map(createWarningJSONLObject),\n ...objects,\n createPageCursorObject(nextCursor),\n ]);\n return;\n }\n\n if (objects.length === 0) {\n await writeTextToStdout(`${formatOutputWarnings(warnings)}No objects.\\n`);\n return;\n }\n\n await writeTextToStdout(\n `${formatOutputWarnings(warnings)}${objects.map(formatFindObject).join(getListObjectSeparator(objects))}${formatOpenShortUriHint(objects, context)}${formatNextCursor(nextCursor)}\\n`,\n );\n}\n\nexport async function writeAllRelatedItems(\n readPage: (cursor: string | undefined) => Promise<ArchiveRelatedResult>,\n initialCursor: string | undefined,\n context: ArchiveOutputContext,\n format: ResultFormat,\n): Promise<void> {\n const pages: ArchiveRelatedResult[] = [];\n let cursor = initialCursor;\n\n while (true) {\n const page = await readPage(cursor);\n\n if (format === \"jsonl\") {\n await writeListWithoutContinuation(page, context, format, {\n emitWarnings: cursor === initialCursor,\n });\n } else {\n pages.push(page);\n }\n\n if (page.nextCursor === null) {\n break;\n }\n\n cursor = page.nextCursor;\n }\n\n if (format === \"jsonl\") {\n return;\n }\n\n await writeListWithoutContinuation(mergeRelatedPages(pages), context, format);\n}\n\nexport async function writeListWithoutContinuation(\n result: ArchiveRelatedResult,\n context: ArchiveOutputContext,\n format: ResultFormat,\n options: { readonly emitWarnings?: boolean } = {},\n): Promise<void> {\n const objects = await Promise.all(\n result.items.map(async (item) => await createListObject(item, context)),\n );\n const warnings =\n (options.emitWarnings ?? true) ? createOutputWarnings(context) : [];\n\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON(\n createObjectResultPage(objects, null, result.limit, warnings),\n ),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL([...warnings.map(createWarningJSONLObject), ...objects]);\n return;\n }\n\n if (objects.length === 0) {\n await writeTextToStdout(`${formatOutputWarnings(warnings)}No objects.\\n`);\n return;\n }\n\n await writeTextToStdout(\n `${formatOutputWarnings(warnings)}${objects.map(formatFindObject).join(getListObjectSeparator(objects))}\\n`,\n );\n}\n\nfunction mergeRelatedPages(\n pages: readonly ArchiveRelatedResult[],\n): ArchiveRelatedResult {\n const [first] = pages;\n\n if (first === undefined) {\n throw new Error(\"Internal error: no related pages were loaded.\");\n }\n\n return {\n ...first,\n items: pages.flatMap((page) => page.items),\n limit: pages.reduce((total, page) => total + page.items.length, 0),\n nextCursor: null,\n };\n}\n","import type { ArchivePack } from \"wiki-graph-core\";\n\nimport { formatCLIJSON, writeTextToStdout } from \"../../../support/index.js\";\nimport {\n formatFindObject,\n formatPackAnchor,\n truncateToBudget,\n} from \"../text/index.js\";\nimport { writeJSONL } from \"./jsonl.js\";\nimport { createListObject, createPackObject } from \"../object/objects.js\";\nimport { DEFAULT_GET_EVIDENCE_LIMIT } from \"../object/types.js\";\nimport type { ArchiveOutputContext, ResultFormat } from \"../object/types.js\";\n\nexport async function writePack(\n pack: ArchivePack,\n context: ArchiveOutputContext,\n format: ResultFormat,\n): Promise<void> {\n const packContext =\n context.evidenceDisabled === true\n ? context\n : {\n ...context,\n evidenceLimit: context.evidenceLimit ?? DEFAULT_GET_EVIDENCE_LIMIT,\n };\n\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON(await createPackObject(pack, packContext)),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL([await createPackObject(pack, packContext)]);\n return;\n }\n\n const lines = [\n `Pack Budget: ${pack.budget}`,\n \"\",\n \"# Anchor\",\n await formatPackAnchor(pack.anchor, packContext),\n \"\",\n \"# Related\",\n (\n await Promise.all(\n pack.related.map(async (item) =>\n formatFindObject(await createListObject(item, packContext)),\n ),\n )\n ).join(\"\\n\\n\"),\n ];\n\n await writeTextToStdout(\n `${truncateToBudget(lines.join(\"\\n\"), pack.budget)}\\n`,\n );\n}\n","import type { ArchivePage } from \"wiki-graph-core\";\n\nimport { formatCLIJSON, writeTextToStdout } from \"../../../support/index.js\";\nimport {\n appendEntityNextSteps,\n formatChapterObjectText,\n formatEntityWikipageText,\n formatEvidenceBackedPageText,\n formatFindObject,\n formatNeighborLines,\n formatNodeLabels,\n formatPlainObject,\n formatPosition,\n formatSourceFragmentLines,\n formatStatePageText,\n} from \"../text/index.js\";\nimport { writeJSONL } from \"./jsonl.js\";\nimport { createPageObject } from \"../object/objects.js\";\nimport type {\n ArchiveOutputContext,\n ArchiveOutputObject,\n ResultFormat,\n} from \"../object/types.js\";\n\nexport async function writePage(\n page: ArchivePage,\n context: ArchiveOutputContext,\n format: ResultFormat,\n): Promise<void> {\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON(await createPageObject(page, context)),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL([await createPageObject(page, context)]);\n return;\n }\n\n switch (page.type) {\n case \"artifact\":\n await writeTextToStdout(\n `${formatPlainObject(await createPageObject(page, context))}\\n`,\n );\n return;\n case \"chapter-title\":\n await writeTextToStdout(\n `${formatPlainObject(await createPageObject(page, context))}\\n`,\n );\n return;\n case \"chapter\":\n await writeTextToStdout(\n `${formatChapterObjectText(\n (await createPageObject(page, context)) as ArchiveOutputObject,\n )}\\n`,\n );\n return;\n case \"meta\":\n await writeTextToStdout(\n `${formatPlainObject(await createPageObject(page, context))}\\n`,\n );\n return;\n case \"state\":\n await writeTextToStdout(\n `${formatStatePageText(await createPageObject(page, context))}\\n`,\n );\n return;\n case \"fragment\":\n if (\n page.id.startsWith(\"wikg://\") &&\n !page.id.includes(\"#\") &&\n page.backlinks === undefined\n ) {\n await writeTextToStdout(`${page.fragment.text}\\n`);\n return;\n }\n if (page.id.startsWith(\"wikg://chapter/\")) {\n await writeTextToStdout(\n `${formatFindObject(\n (await createPageObject(page, context)) as ArchiveOutputObject,\n )}\\n`,\n );\n return;\n }\n await writeTextToStdout(\n [\n `${page.id}`,\n `Words: ${page.fragment.wordsCount}`,\n `Previous: ${page.previousFragmentId ?? \"[none]\"}`,\n `Next: ${page.nextFragmentId ?? \"[none]\"}`,\n \"\",\n page.fragment.text,\n \"\",\n \"Related Nodes:\",\n ...formatNodeLabels(page.nodes),\n ].join(\"\\n\") + \"\\n\",\n );\n return;\n case \"node\":\n await writeTextToStdout(\n [\n `${page.id} ${page.title}`,\n `Chapter: ${page.position === undefined ? \"[unknown]\" : `chapter:${page.position.chapter}`}`,\n `Position: ${formatPosition(page.position)}`,\n \"\",\n \"Generated Node Summary:\",\n page.generatedNodeSummary,\n \"\",\n \"Source Fragments:\",\n ...formatSourceFragmentLines(page.sourceFragments),\n \"\",\n \"Outgoing Nodes:\",\n ...formatNeighborLines(page.outgoing),\n \"\",\n \"Incoming Nodes:\",\n ...formatNeighborLines(page.incoming),\n ].join(\"\\n\") + \"\\n\",\n );\n return;\n case \"summary\":\n await writeTextToStdout(`${page.id} ${page.title}\\n\\n${page.content}\\n`);\n return;\n case \"entity\":\n await writeTextToStdout(\n `${appendEntityNextSteps(\n await formatEvidenceBackedPageText(\n page.id,\n page.label,\n page.evidence,\n context,\n ),\n page.id,\n context.archivePath,\n )}\\n`,\n );\n return;\n case \"entity-wikipage\":\n await writeTextToStdout(`${formatEntityWikipageText(page)}\\n`);\n return;\n case \"triple\":\n await writeTextToStdout(\n `${await formatEvidenceBackedPageText(\n page.id,\n page.label,\n page.evidence,\n context,\n )}\\n`,\n );\n return;\n }\n}\n","import type {\n ArchiveSourceLocator,\n ArchiveSourceLocatorResult,\n} from \"wiki-graph-core\";\n\nimport { formatCLIJSON, writeTextToStdout } from \"../../../support/index.js\";\nimport { createOutputContinuationCursor } from \"../object/cursor.js\";\nimport { createPageCursorObject } from \"../object/page-cursor.js\";\nimport type { ArchiveOutputContext, ResultFormat } from \"../object/types.js\";\nimport { formatNextCursor } from \"../text/index.js\";\nimport { writeJSONL } from \"./jsonl.js\";\n\nexport async function writeSourceLocators(\n result: ArchiveSourceLocatorResult,\n context: ArchiveOutputContext,\n format: ResultFormat,\n): Promise<void> {\n const nextCursor = await createOutputContinuationCursor(\n context,\n result.nextCursor,\n );\n\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON({\n limit: result.limit,\n nextCursor,\n objects: result.items,\n }),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL([...result.items, createPageCursorObject(nextCursor)]);\n return;\n }\n\n if (result.items.length === 0) {\n await writeTextToStdout(\"No source locators.\\n\");\n return;\n }\n\n await writeTextToStdout(\n `${result.items.map(formatSourceLocator).join(\"\\n\")}${formatNextCursor(nextCursor)}\\n`,\n );\n}\n\nexport async function writeAllSourceLocators(\n readPage: (cursor: string | undefined) => Promise<ArchiveSourceLocatorResult>,\n initialCursor: string | undefined,\n context: ArchiveOutputContext,\n format: ResultFormat,\n): Promise<void> {\n const pages: ArchiveSourceLocatorResult[] = [];\n let cursor = initialCursor;\n\n while (true) {\n const page = await readPage(cursor);\n if (format === \"jsonl\") {\n await writeJSONL(page.items);\n } else {\n pages.push(page);\n }\n if (page.nextCursor === null) break;\n cursor = page.nextCursor;\n }\n\n if (format === \"jsonl\") return;\n\n const items = pages.flatMap((page) => page.items);\n await writeSourceLocators(\n { items, limit: items.length, nextCursor: null },\n context,\n format,\n );\n}\n\nfunction formatSourceLocator(locator: ArchiveSourceLocator): string {\n return `${locator.range[0]}..${locator.range[1]} -> ${locator.uri}`;\n}\n","export * from \"./evidence.js\";\nexport * from \"./find.js\";\nexport * from \"./list.js\";\nexport * from \"./pack.js\";\nexport * from \"./page.js\";\nexport * from \"./source-locators.js\";\n","export * from \"./write/index.js\";\nexport type {\n ArchiveOutputContext,\n ArchiveOutputObject,\n ResultFormat,\n} from \"./object/types.js\";\n","import {\n formatLocatedWikiGraphUri,\n parseWikiGraphLibraryUri,\n resolveWikiGraphLibraryArchiveFile,\n type ParsedWikiGraphLibraryUri,\n type QueryIndexScope,\n type File,\n} from \"wiki-graph-core\";\nimport { parseLocatedWikiGraphUri } from \"../../../support/index.js\";\n\nimport type { CLIArchiveArguments } from \"../../../args/index.js\";\nimport {\n getNodeResourcePath,\n NodeFile,\n} from \"../../../runtime/node-platform.js\";\n\nexport interface ArchiveRuntimeLocation {\n readonly archiveFile: File;\n readonly archiveKey: string;\n readonly archivePath: string;\n readonly indexScope: QueryIndexScope;\n readonly libraryArchiveTarget?: ParsedWikiGraphLibraryUri;\n readonly libraryDirtyTarget?: ParsedWikiGraphLibraryUri;\n readonly locatedUri: string;\n}\n\nexport async function resolveArchiveRuntimeLocation(\n uriOrPath: string,\n): Promise<ArchiveRuntimeLocation> {\n if (!uriOrPath.startsWith(\"wikg://\")) {\n return {\n archiveFile: new NodeFile(uriOrPath),\n archiveKey: uriOrPath,\n archivePath: uriOrPath,\n indexScope: {\n archiveKey: uriOrPath,\n archivePath: uriOrPath,\n kind: \"archive-index\",\n },\n locatedUri: formatLocatedWikiGraphUri(uriOrPath),\n };\n }\n\n const parsed = parseLocatedWikiGraphUri(uriOrPath);\n const archiveLocator = parsed.archivePath ?? uriOrPath;\n const libraryArchiveTarget = archiveLocator.startsWith(\"wikg://lib/\")\n ? parseWikiGraphLibraryUri(archiveLocator)\n : undefined;\n const archiveFile =\n libraryArchiveTarget?.kind === \"archive\"\n ? await resolveWikiGraphLibraryArchiveFile(archiveLocator)\n : new NodeFile(archiveLocator);\n const archivePath = getNodeResourcePath(archiveFile);\n\n return {\n archiveFile,\n archiveKey: archivePath,\n archivePath,\n indexScope: { archiveKey: archivePath, archivePath, kind: \"archive-index\" },\n ...(libraryArchiveTarget?.kind === \"archive\"\n ? {\n libraryArchiveTarget,\n libraryDirtyTarget: {\n isDefault: libraryArchiveTarget.isDefault,\n kind: \"scope\",\n ...(libraryArchiveTarget.publicId === undefined\n ? {}\n : { publicId: libraryArchiveTarget.publicId }),\n },\n }\n : {}),\n locatedUri: formatLocatedWikiGraphUri(archivePath, parsed.objectUri),\n };\n}\n\nexport async function resolveArchiveCommandRuntimeArguments(\n args: CLIArchiveArguments,\n): Promise<CLIArchiveArguments> {\n if (\n args.action === \"create\" ||\n args.action === \"export\" ||\n args.action === \"inspect\" ||\n args.action === \"next\"\n ) {\n return args;\n }\n if (!args.archivePath.startsWith(\"wikg://lib/\")) {\n return args;\n }\n\n const location = await resolveArchiveRuntimeLocation(args.archivePath);\n return {\n ...args,\n archivePath: location.locatedUri,\n ...(args.objectId === args.archivePath\n ? { objectId: location.locatedUri }\n : {}),\n };\n}\n\nexport function getArchivePath(uri: string): string {\n if (parseWikiGraphLibraryUri(uri)?.kind === \"scope\") {\n return uri;\n }\n\n const archivePath = parseLocatedWikiGraphUri(uri).archivePath;\n if (archivePath === undefined) {\n throw new Error(`Missing archive locator in URI: ${uri}`);\n }\n return archivePath;\n}\n\nexport function getArchiveIndexScope(uri: string): QueryIndexScope {\n if (parseWikiGraphLibraryUri(uri)?.kind === \"scope\") {\n return { kind: \"library-index\", libraryId: -1 };\n }\n\n const archivePath = getArchivePath(uri);\n return { archiveKey: archivePath, archivePath, kind: \"archive-index\" };\n}\n\nexport function getObjectUri(uri: string): string {\n const libraryTarget = parseWikiGraphLibraryUri(uri);\n if (\n libraryTarget?.kind === \"scope\" &&\n libraryTarget.objectUri !== undefined\n ) {\n return libraryTarget.objectUri;\n }\n\n const parsed = parseLocatedWikiGraphUri(uri);\n\n return parsed.objectUri ?? \"wikg://\";\n}\n\nexport function isArchiveRootGet(args: CLIArchiveArguments): boolean {\n return (\n args.objectId !== undefined &&\n parseLocatedWikiGraphUri(args.objectId).objectUri === undefined\n );\n}\n\nexport function parseChapterScope(uri: string): number | undefined {\n const match = /^wikg:\\/\\/chapter\\/([1-9][0-9]*)(?:\\/|$)/u.exec(uri);\n\n return match?.[1] === undefined ? undefined : Number(match[1]);\n}\n","import {\n finalizeWikiGraphLibraryArchiveWrite,\n readWikiGraphLibraryIndexState,\n rebuildWikiGraphLibraryIndex,\n WikiGraphArchiveFile,\n type DirectoryDocument,\n type ReadonlyDocument,\n} from \"wiki-graph-core\";\n\nimport { resolveArchiveRuntimeLocation } from \"./uri.js\";\n\nexport async function readArchiveDocument<T>(\n path: string,\n operation: (document: ReadonlyDocument) => Promise<T> | T,\n): Promise<T> {\n const location = await resolveArchiveRuntimeLocation(path);\n return await new WikiGraphArchiveFile(location.archiveFile).readDocument(\n operation,\n );\n}\n\nexport async function writeArchiveDocument<T>(\n path: string,\n operation: (document: DirectoryDocument) => Promise<T> | T,\n options: Parameters<WikiGraphArchiveFile[\"write\"]>[1] = {},\n): Promise<T> {\n const location = await resolveArchiveRuntimeLocation(path);\n const result = await new WikiGraphArchiveFile(location.archiveFile).write(\n operation,\n options,\n );\n\n if (location.libraryDirtyTarget !== undefined) {\n if (location.libraryArchiveTarget !== undefined) {\n await finalizeWikiGraphLibraryArchiveWrite({\n target: location.libraryArchiveTarget,\n });\n }\n\n try {\n const state = await readWikiGraphLibraryIndexState(\n location.libraryDirtyTarget,\n );\n if (state.status !== \"missing\") {\n await rebuildWikiGraphLibraryIndex(location.libraryDirtyTarget);\n }\n } catch (error) {\n reportLibraryIndexSyncFailure(error);\n }\n }\n\n return result;\n}\n\nfunction reportLibraryIndexSyncFailure(error: unknown): void {\n const message = error instanceof Error ? error.message : String(error);\n\n try {\n process.stderr.write(\n `Warning: failed to sync library index cache after archive write: ${message}\\n`,\n );\n } catch {\n // The archive write already succeeded; diagnostics must not turn it into a\n // reported failure.\n }\n}\n","import type { ArchiveCollectionResult, QueryIndexScope } from \"wiki-graph-core\";\n\nimport type { CLIArchiveArguments } from \"../../../args/index.js\";\n\nexport type ResultFormat = \"json\" | \"jsonl\" | \"text\";\n\nexport const DEFAULT_OUTPUT_LIMIT = 20;\nexport const DEFAULT_GET_EVIDENCE_LIMIT = 3;\nexport const ALL_COLLECTION_OUTPUT_LIMIT = 1_000_000_000;\n\nexport interface ArchiveOutputContext {\n readonly archiveKey: string;\n readonly archivePath: string;\n readonly backlinks?: boolean;\n readonly chapters?: readonly number[];\n readonly continuationKind?:\n | \"collection\"\n | \"evidence\"\n | \"related\"\n | \"search\"\n | \"source-locators\";\n readonly evidenceDisabled?: boolean;\n readonly evidenceLimit?: number;\n readonly format: ResultFormat;\n readonly ids?: readonly string[];\n readonly indexScope: QueryIndexScope;\n readonly limit: number;\n readonly order?: ArchiveCollectionResult[\"order\"];\n readonly query?: string;\n readonly role?: CLIArchiveArguments[\"role\"];\n readonly sourceContext?: number;\n readonly targetUri?: string;\n readonly triplePattern?: CLIArchiveArguments[\"triplePattern\"];\n readonly types: readonly string[] | null;\n}\n","import {\n parseLocatedWikiGraphUri,\n type ArchiveCollectionOptions,\n type ArchiveCollectionResult,\n type ArchiveFindOptions,\n type ArchiveFindResult,\n} from \"wiki-graph-core\";\n\nimport type { CLIArchiveArguments } from \"../../../args/index.js\";\nimport {\n DEFAULT_GET_EVIDENCE_LIMIT,\n DEFAULT_OUTPUT_LIMIT,\n type ArchiveOutputContext,\n} from \"./types.js\";\nimport {\n getArchiveIndexScope,\n getArchivePath,\n parseChapterScope,\n} from \"./uri.js\";\n\nexport function createFindOptions(\n args: CLIArchiveArguments,\n): ArchiveFindOptions {\n const types = args.kinds?.map((kind) => {\n const type = toArchiveFindType(kind);\n\n if (type === undefined) {\n throw new Error(`Unsupported archive search type: ${kind}`);\n }\n\n return type;\n });\n\n return {\n archiveKey: getArchivePath(args.archivePath),\n ...(args.backlinks === undefined ? {} : { backlinks: args.backlinks }),\n ...createScopeOptions(args),\n ...(args.cursor === undefined ? {} : { cursor: args.cursor }),\n ...createOptionalEvidenceLimit(args),\n ...(args.limit === undefined ? {} : { limit: args.limit }),\n ...(args.reverse === true ? { order: \"doc-desc\" } : {}),\n ...(args.skipUnindexed === true ? { skipUnindexed: true } : {}),\n ...createOptionalSourceContext(args),\n ...(args.triplePattern === undefined\n ? {}\n : { triplePattern: args.triplePattern }),\n ...(types === undefined ? {} : { types }),\n };\n}\n\nexport function createArchiveOutputContext(\n args: CLIArchiveArguments,\n options: {\n readonly continuationKind?:\n | \"collection\"\n | \"evidence\"\n | \"related\"\n | \"search\"\n | \"source-locators\";\n readonly targetUri?: string;\n } = {},\n): ArchiveOutputContext {\n return {\n archiveKey: getArchivePath(args.archivePath),\n archivePath: getArchivePath(args.archivePath),\n indexScope: getArchiveIndexScope(args.archivePath),\n ...(args.backlinks === undefined ? {} : { backlinks: args.backlinks }),\n ...(isEvidenceDisabled(args.evidenceLimit)\n ? { evidenceDisabled: true }\n : {}),\n ...(options.continuationKind === undefined\n ? {}\n : { continuationKind: options.continuationKind }),\n ...createOptionalEvidenceLimit(args),\n ...createOptionalSourceContext(args),\n format: args.format ?? \"text\",\n limit: args.limit ?? DEFAULT_OUTPUT_LIMIT,\n ...(args.reverse === true ? { order: \"doc-desc\" } : {}),\n ...(args.action !== \"evidence\" &&\n args.action !== \"related\" &&\n args.action !== \"search\"\n ? {}\n : args.query === undefined\n ? {}\n : { query: args.query }),\n ...(args.role === undefined ? {} : { role: args.role }),\n ...(args.skipUnindexed === true ? { skipUnindexed: true } : {}),\n ...(options.continuationKind === \"collection\"\n ? createScopeOptions(args)\n : {}),\n ...(args.triplePattern === undefined\n ? {}\n : { triplePattern: args.triplePattern }),\n ...(options.targetUri === undefined\n ? {}\n : { targetUri: options.targetUri }),\n types:\n args.kinds === undefined\n ? null\n : args.kinds\n .map((kind) => toArchiveFindType(kind))\n .filter(\n (type): type is NonNullable<typeof type> => type !== undefined,\n ),\n };\n}\n\nexport function getSingleObjectEvidenceLimit(\n args: CLIArchiveArguments,\n objectUri: string,\n): number | undefined {\n if (isEvidenceDisabled(args.evidenceLimit)) {\n return undefined;\n }\n\n if (args.evidenceLimit !== undefined) {\n return args.evidenceLimit;\n }\n\n return isEvidenceBackedObjectUri(objectUri)\n ? DEFAULT_GET_EVIDENCE_LIMIT\n : undefined;\n}\n\nfunction isEvidenceDisabled(evidenceLimit: number | undefined): boolean {\n return evidenceLimit === 0;\n}\n\nexport function createOptionalEvidenceLimit(args: CLIArchiveArguments): {\n readonly evidenceLimit?: number;\n} {\n if (\n args.evidenceLimit === undefined ||\n isEvidenceDisabled(args.evidenceLimit)\n ) {\n return {};\n }\n\n return { evidenceLimit: args.evidenceLimit };\n}\n\nexport function createOptionalSourceContext(args: CLIArchiveArguments): {\n readonly sourceContext?: number;\n} {\n return args.context === undefined ? {} : { sourceContext: args.context };\n}\n\nfunction isEvidenceBackedObjectUri(uri: string): boolean {\n return /^wikg:\\/\\/(?:(?:chapter\\/[1-9][0-9]*\\/)?entity\\/Q[1-9][0-9]*|(?:chapter\\/[1-9][0-9]*\\/)?triple\\/Q[1-9][0-9]*\\/[^/]+\\/Q[1-9][0-9]*)\\/?$/u.test(\n uri,\n );\n}\n\nexport function createCollectionOptions(\n args: CLIArchiveArguments,\n): ArchiveCollectionOptions {\n const types = args.kinds?.map((kind) => {\n const type = toArchiveCollectionType(kind);\n\n if (type === undefined) {\n throw new Error(`Unsupported archive list type: ${kind}`);\n }\n\n return type;\n });\n\n return {\n ...(args.backlinks === undefined ? {} : { backlinks: args.backlinks }),\n ...createScopeOptions(args),\n ...(args.cursor === undefined ? {} : { cursor: args.cursor }),\n ...createOptionalEvidenceLimit(args),\n ...(args.limit === undefined ? {} : { limit: args.limit }),\n ...createOptionalSourceContext(args),\n ...(args.triplePattern === undefined\n ? {}\n : { triplePattern: args.triplePattern }),\n ...(types === undefined ? {} : { types }),\n };\n}\n\nexport function createCollectionFindResult(\n collection: ArchiveCollectionResult,\n): ArchiveFindResult {\n return {\n chapters: collection.chapters,\n items: collection.items,\n lens: \"typed\",\n lensHint: null,\n limit: collection.limit,\n match: \"any\",\n nextCursor: collection.nextCursor,\n order: collection.order,\n query: \"\",\n terms: [],\n types: null,\n };\n}\n\nexport function createScopeOptions(\n args: Pick<CLIArchiveArguments, \"archivePath\" | \"chapters\">,\n): {\n readonly chapters?: readonly number[];\n} {\n if (args.chapters !== undefined) {\n return { chapters: args.chapters };\n }\n\n const objectUri = parseLocatedWikiGraphUri(args.archivePath).objectUri;\n\n if (objectUri === undefined) {\n return {};\n }\n\n const chapterId = parseChapterScope(objectUri);\n\n return chapterId === undefined ? {} : { chapters: [chapterId] };\n}\n\nfunction toArchiveFindType(\n kind: NonNullable<CLIArchiveArguments[\"kinds\"]>[number],\n): NonNullable<ArchiveFindOptions[\"types\"]>[number] | undefined {\n switch (kind) {\n case \"chapter\":\n return \"chapter-title\";\n case \"chunk\":\n return \"node\";\n case \"source\":\n return \"source\";\n case \"summary\":\n return \"summary\";\n case \"entity\":\n return \"entity\";\n case \"meta\":\n return \"meta\";\n case \"triple\":\n return \"triple\";\n }\n}\n\nfunction toArchiveCollectionType(\n kind: NonNullable<CLIArchiveArguments[\"kinds\"]>[number],\n): NonNullable<ArchiveCollectionOptions[\"types\"]>[number] | undefined {\n switch (kind) {\n case \"chapter\":\n return \"chapter-title\";\n case \"chunk\":\n return \"node\";\n case \"entity\":\n return \"entity\";\n case \"meta\":\n return \"meta\";\n case \"source\":\n return \"source\";\n case \"summary\":\n return \"summary\";\n case \"triple\":\n return \"triple\";\n }\n}\n","import {\n findArchiveObjects,\n findWikiGraphLibraryArchiveMembers,\n findWikiGraphLibraryObjects,\n listArchiveCollection,\n listArchiveEvidence,\n listArchiveSourceLocators,\n listWikiGraphLibraryArchiveMembers,\n listRelatedWikiGraphLibraryObjects,\n listWikiGraphLibraryEvidence,\n listWikiGraphLibraryObjects,\n listRelatedArchiveObjects,\n parseWikiGraphLibraryUri,\n readContinuationCursor,\n resolveWikiGraphLibraryQueryTargetById,\n type ArchiveCollectionOptions,\n type ArchiveFindOptions,\n} from \"wiki-graph-core\";\n\nimport type { CLIArchiveArguments } from \"../../../args/index.js\";\nimport { loadCLIConfig } from \"../../../runtime/config.js\";\nimport { buildSearchIndexEmbeddingProvider } from \"../../../runtime/embedding.js\";\nimport {\n writeEvidence,\n writeFindHits,\n writeList,\n writeSourceLocators,\n} from \"../../archive-output/index.js\";\nimport { readArchiveDocument } from \"./document.js\";\nimport { createCollectionFindResult } from \"./options.js\";\nimport { DEFAULT_OUTPUT_LIMIT } from \"./types.js\";\nimport { resolveArchiveRuntimeLocation } from \"./uri.js\";\n\nexport async function runNextArchivePage(\n args: CLIArchiveArguments,\n): Promise<void> {\n const cursorId = args.cursor ?? args.archivePath;\n const explicitArchivePath =\n args.cursor === undefined ? undefined : args.archivePath;\n const cursor = await readContinuationCursor(cursorId);\n\n if (explicitArchivePath !== undefined) {\n const { archivePath } =\n await resolveArchiveRuntimeLocation(explicitArchivePath);\n const cursorArchivePath = getCursorArchivePath(cursor);\n\n if (archivePath !== cursorArchivePath) {\n throw new Error(\n `Continuation cursor ${cursorId} belongs to ${cursorArchivePath}, not ${archivePath}.`,\n );\n }\n }\n\n if (cursor.kind === \"source-locators\") {\n await readArchiveDocument(\n getCursorArchivePath(cursor),\n async (document) => {\n const format = args.format ?? cursor.format;\n const limit = args.limit ?? DEFAULT_OUTPUT_LIMIT;\n await writeSourceLocators(\n await listArchiveSourceLocators(document, cursor.targetUri, {\n cursor: cursor.cursor,\n limit,\n }),\n {\n archiveKey: cursor.archiveKey,\n archivePath: cursor.archivePath,\n continuationKind: \"source-locators\",\n format,\n indexScope: cursor.indexScope,\n limit,\n targetUri: cursor.targetUri,\n types: null,\n },\n format,\n );\n },\n );\n return;\n }\n\n if (cursor.indexScope?.kind === \"library-index\") {\n await runNextLibraryIndexPage(args, cursor);\n return;\n }\n\n await readArchiveDocument(getCursorArchivePath(cursor), async (document) => {\n const format = args.format ?? cursor.format;\n const limit = args.limit ?? DEFAULT_OUTPUT_LIMIT;\n\n switch (cursor.kind) {\n case \"collection\": {\n const collectionOptions: ArchiveCollectionOptions = {\n ...(cursor.backlinks === undefined\n ? {}\n : { backlinks: cursor.backlinks }),\n ...(cursor.chapters === null ? {} : { chapters: cursor.chapters }),\n cursor: cursor.cursor,\n ...(cursor.evidenceLimit === undefined\n ? {}\n : { evidenceLimit: cursor.evidenceLimit }),\n ...(cursor.ids === null ? {} : { ids: cursor.ids }),\n limit,\n order: cursor.order,\n ...(cursor.sourceContext === undefined\n ? {}\n : { sourceContext: cursor.sourceContext }),\n ...(cursor.triplePattern === undefined\n ? {}\n : { triplePattern: cursor.triplePattern }),\n };\n\n if (cursor.types !== null) {\n Object.assign(collectionOptions, {\n types: cursor.types as ArchiveCollectionOptions[\"types\"],\n });\n }\n\n await writeFindHits(\n createCollectionFindResult(\n await listArchiveCollection(document, collectionOptions),\n ),\n {\n archiveKey: cursor.archiveKey,\n archivePath: cursor.archivePath,\n ...(cursor.backlinks === undefined\n ? {}\n : { backlinks: cursor.backlinks }),\n ...(cursor.chapters === null ? {} : { chapters: cursor.chapters }),\n continuationKind: \"collection\",\n ...(cursor.evidenceLimit === undefined\n ? {}\n : { evidenceLimit: cursor.evidenceLimit }),\n format,\n indexScope: cursor.indexScope,\n ...(cursor.ids === null ? {} : { ids: cursor.ids }),\n limit,\n order: cursor.order,\n ...(cursor.sourceContext === undefined\n ? {}\n : { sourceContext: cursor.sourceContext }),\n ...(cursor.triplePattern === undefined\n ? {}\n : { triplePattern: cursor.triplePattern }),\n types: cursor.types,\n },\n format,\n );\n return;\n }\n case \"search\": {\n const findOptions: ArchiveFindOptions = {\n archiveKey: cursor.archiveKey,\n ...(cursor.backlinks === undefined\n ? {}\n : { backlinks: cursor.backlinks }),\n ...(cursor.chapters === null ? {} : { chapters: cursor.chapters }),\n cursor: cursor.cursor,\n ...(cursor.evidenceLimit === undefined\n ? {}\n : { evidenceLimit: cursor.evidenceLimit }),\n limit,\n ...(cursor.skipUnindexed === undefined\n ? {}\n : { skipUnindexed: cursor.skipUnindexed }),\n ...(cursor.sourceContext === undefined\n ? {}\n : { sourceContext: cursor.sourceContext }),\n ...(cursor.triplePattern === undefined\n ? {}\n : { triplePattern: cursor.triplePattern }),\n };\n\n if (cursor.types !== null) {\n Object.assign(findOptions, {\n types: cursor.types as ArchiveFindOptions[\"types\"],\n });\n }\n await addSearchIndexEmbeddingProvider(findOptions);\n\n await writeFindHits(\n await findArchiveObjects(document, cursor.query ?? \"\", findOptions),\n {\n archiveKey: cursor.archiveKey,\n archivePath: cursor.archivePath,\n ...(cursor.backlinks === undefined\n ? {}\n : { backlinks: cursor.backlinks }),\n ...(cursor.chapters === null ? {} : { chapters: cursor.chapters }),\n ...(cursor.evidenceLimit === undefined\n ? {}\n : { evidenceLimit: cursor.evidenceLimit }),\n format,\n indexScope: cursor.indexScope,\n limit,\n ...(cursor.sourceContext === undefined\n ? {}\n : { sourceContext: cursor.sourceContext }),\n ...(cursor.skipUnindexed === undefined\n ? {}\n : { skipUnindexed: cursor.skipUnindexed }),\n ...(cursor.triplePattern === undefined\n ? {}\n : { triplePattern: cursor.triplePattern }),\n types: cursor.types,\n },\n format,\n );\n return;\n }\n case \"evidence\":\n await writeEvidence(\n await listArchiveEvidence(document, cursor.targetUri, {\n cursor: cursor.cursor,\n limit,\n order: cursor.order,\n ...(cursor.query === undefined ? {} : { query: cursor.query }),\n ...(cursor.skipUnindexed === undefined\n ? {}\n : { skipUnindexed: cursor.skipUnindexed }),\n ...(cursor.sourceContext === undefined\n ? {}\n : { sourceContext: cursor.sourceContext }),\n }),\n {\n archiveKey: cursor.archiveKey,\n archivePath: cursor.archivePath,\n continuationKind: \"evidence\",\n format,\n indexScope: cursor.indexScope,\n limit,\n order: cursor.order,\n ...(cursor.query === undefined ? {} : { query: cursor.query }),\n ...(cursor.skipUnindexed === undefined\n ? {}\n : { skipUnindexed: cursor.skipUnindexed }),\n ...(cursor.sourceContext === undefined\n ? {}\n : { sourceContext: cursor.sourceContext }),\n targetUri: cursor.targetUri,\n types: null,\n },\n format,\n );\n return;\n case \"related\":\n await writeList(\n await listRelatedArchiveObjects(document, cursor.targetUri, {\n cursor: cursor.cursor,\n ...(cursor.evidenceLimit === undefined\n ? {}\n : { evidenceLimit: cursor.evidenceLimit }),\n limit,\n order: cursor.order,\n ...(cursor.query === undefined ? {} : { query: cursor.query }),\n ...(cursor.role === undefined ? {} : { role: cursor.role }),\n ...(cursor.skipUnindexed === undefined\n ? {}\n : { skipUnindexed: cursor.skipUnindexed }),\n ...(cursor.sourceContext === undefined\n ? {}\n : { sourceContext: cursor.sourceContext }),\n }),\n {\n archiveKey: cursor.archiveKey,\n archivePath: cursor.archivePath,\n continuationKind: \"related\",\n ...(cursor.evidenceLimit === undefined\n ? {}\n : { evidenceLimit: cursor.evidenceLimit }),\n format,\n indexScope: cursor.indexScope,\n limit,\n order: cursor.order,\n ...(cursor.query === undefined ? {} : { query: cursor.query }),\n ...(cursor.role === undefined ? {} : { role: cursor.role }),\n ...(cursor.skipUnindexed === undefined\n ? {}\n : { skipUnindexed: cursor.skipUnindexed }),\n ...(cursor.sourceContext === undefined\n ? {}\n : { sourceContext: cursor.sourceContext }),\n targetUri: cursor.targetUri,\n types: null,\n },\n format,\n );\n return;\n }\n });\n}\n\nasync function runNextLibraryIndexPage(\n args: CLIArchiveArguments,\n cursor: Awaited<ReturnType<typeof readContinuationCursor>>,\n): Promise<void> {\n if (cursor.indexScope.kind !== \"library-index\") {\n throw new Error(\"Internal error: expected a library index cursor.\");\n }\n\n const target = await resolveWikiGraphLibraryQueryTargetById(\n cursor.indexScope.libraryId,\n );\n const format = args.format ?? cursor.format;\n const limit = args.limit ?? DEFAULT_OUTPUT_LIMIT;\n\n switch (cursor.kind) {\n case \"source-locators\":\n throw new Error(\n \"Source locator cursors do not use the aggregate library index.\",\n );\n case \"collection\": {\n const collectionOptions: ArchiveCollectionOptions = {\n ...(cursor.backlinks === undefined\n ? {}\n : { backlinks: cursor.backlinks }),\n ...(cursor.chapters === null ? {} : { chapters: cursor.chapters }),\n cursor: cursor.cursor,\n ...(cursor.evidenceLimit === undefined\n ? {}\n : { evidenceLimit: cursor.evidenceLimit }),\n ...(cursor.ids === null ? {} : { ids: cursor.ids }),\n limit,\n order: cursor.order,\n ...(cursor.sourceContext === undefined\n ? {}\n : { sourceContext: cursor.sourceContext }),\n ...(cursor.triplePattern === undefined\n ? {}\n : { triplePattern: cursor.triplePattern }),\n };\n\n if (cursor.types !== null) {\n Object.assign(collectionOptions, {\n types: cursor.types as ArchiveCollectionOptions[\"types\"],\n });\n }\n\n if (isLibraryArchiveMemberCursor(cursor)) {\n await writeFindHits(\n createCollectionFindResult(\n await listWikiGraphLibraryArchiveMembers(target, collectionOptions),\n ),\n {\n ...createCursorOutputContext(cursor, format, limit),\n continuationKind: \"collection\",\n },\n format,\n );\n return;\n }\n\n await writeFindHits(\n createCollectionFindResult(\n await listWikiGraphLibraryObjects(target, collectionOptions),\n ),\n {\n ...createCursorOutputContext(cursor, format, limit),\n continuationKind: \"collection\",\n },\n format,\n );\n return;\n }\n case \"search\": {\n const findOptions: ArchiveFindOptions = {\n archiveKey: cursor.archiveKey,\n ...(cursor.backlinks === undefined\n ? {}\n : { backlinks: cursor.backlinks }),\n ...(cursor.chapters === null ? {} : { chapters: cursor.chapters }),\n cursor: cursor.cursor,\n ...(cursor.evidenceLimit === undefined\n ? {}\n : { evidenceLimit: cursor.evidenceLimit }),\n limit,\n ...(cursor.skipUnindexed === undefined\n ? {}\n : { skipUnindexed: cursor.skipUnindexed }),\n ...(cursor.sourceContext === undefined\n ? {}\n : { sourceContext: cursor.sourceContext }),\n ...(cursor.triplePattern === undefined\n ? {}\n : { triplePattern: cursor.triplePattern }),\n };\n\n if (cursor.types !== null) {\n Object.assign(findOptions, {\n types: cursor.types as ArchiveFindOptions[\"types\"],\n });\n }\n await addSearchIndexEmbeddingProvider(findOptions);\n\n if (isLibraryArchiveMemberCursor(cursor)) {\n await writeFindHits(\n await findWikiGraphLibraryArchiveMembers(\n target,\n cursor.query ?? \"\",\n findOptions,\n ),\n createCursorOutputContext(cursor, format, limit),\n format,\n );\n return;\n }\n\n await writeFindHits(\n await findWikiGraphLibraryObjects(\n target,\n cursor.query ?? \"\",\n findOptions,\n ),\n createCursorOutputContext(cursor, format, limit),\n format,\n );\n return;\n }\n case \"evidence\":\n await writeEvidence(\n await listWikiGraphLibraryEvidence(target, cursor.targetUri, {\n cursor: cursor.cursor,\n limit,\n order: cursor.order,\n ...(cursor.query === undefined ? {} : { query: cursor.query }),\n ...(cursor.skipUnindexed === undefined\n ? {}\n : { skipUnindexed: cursor.skipUnindexed }),\n ...(cursor.sourceContext === undefined\n ? {}\n : { sourceContext: cursor.sourceContext }),\n }),\n {\n ...createCursorOutputContext(cursor, format, limit),\n continuationKind: \"evidence\",\n order: cursor.order,\n ...(cursor.query === undefined ? {} : { query: cursor.query }),\n ...(cursor.skipUnindexed === undefined\n ? {}\n : { skipUnindexed: cursor.skipUnindexed }),\n targetUri: cursor.targetUri,\n },\n format,\n );\n return;\n case \"related\":\n await writeList(\n await listRelatedWikiGraphLibraryObjects(target, cursor.targetUri, {\n cursor: cursor.cursor,\n ...(cursor.evidenceLimit === undefined\n ? {}\n : { evidenceLimit: cursor.evidenceLimit }),\n limit,\n order: cursor.order,\n ...(cursor.query === undefined ? {} : { query: cursor.query }),\n ...(cursor.role === undefined ? {} : { role: cursor.role }),\n ...(cursor.skipUnindexed === undefined\n ? {}\n : { skipUnindexed: cursor.skipUnindexed }),\n ...(cursor.sourceContext === undefined\n ? {}\n : { sourceContext: cursor.sourceContext }),\n }),\n {\n ...createCursorOutputContext(cursor, format, limit),\n continuationKind: \"related\",\n ...(cursor.evidenceLimit === undefined\n ? {}\n : { evidenceLimit: cursor.evidenceLimit }),\n order: cursor.order,\n ...(cursor.query === undefined ? {} : { query: cursor.query }),\n ...(cursor.role === undefined ? {} : { role: cursor.role }),\n ...(cursor.skipUnindexed === undefined\n ? {}\n : { skipUnindexed: cursor.skipUnindexed }),\n targetUri: cursor.targetUri,\n },\n format,\n );\n return;\n }\n}\n\nasync function addSearchIndexEmbeddingProvider(\n options: ArchiveFindOptions,\n): Promise<void> {\n const config = await loadCLIConfig();\n\n if (config.embedding === undefined) {\n return;\n }\n Object.assign(options, {\n embeddingProvider: buildSearchIndexEmbeddingProvider(config.embedding),\n });\n}\n\nfunction isLibraryArchiveMemberCursor(\n cursor: Awaited<ReturnType<typeof readContinuationCursor>>,\n): boolean {\n const target = parseWikiGraphLibraryUri(cursor.archivePath);\n return (\n target?.kind === \"scope\" &&\n target.objectUri === undefined &&\n cursor.archiveKey === cursor.archivePath\n );\n}\n\nfunction createCursorOutputContext(\n cursor: Awaited<ReturnType<typeof readContinuationCursor>>,\n format: \"json\" | \"jsonl\" | \"text\",\n limit: number,\n) {\n return {\n archiveKey: cursor.archiveKey,\n archivePath: cursor.archivePath,\n format,\n indexScope: cursor.indexScope,\n limit,\n types:\n cursor.kind === \"evidence\" ||\n cursor.kind === \"related\" ||\n cursor.kind === \"source-locators\"\n ? null\n : cursor.types,\n ...(cursor.kind === \"search\" || cursor.kind === \"collection\"\n ? cursor.backlinks === undefined\n ? {}\n : { backlinks: cursor.backlinks }\n : {}),\n ...(cursor.kind === \"search\" || cursor.kind === \"collection\"\n ? cursor.evidenceLimit === undefined\n ? {}\n : { evidenceLimit: cursor.evidenceLimit }\n : {}),\n ...(cursor.kind === \"search\" || cursor.kind === \"collection\"\n ? cursor.sourceContext === undefined\n ? {}\n : { sourceContext: cursor.sourceContext }\n : {}),\n ...(cursor.kind === \"search\"\n ? cursor.query === undefined\n ? {}\n : { query: cursor.query }\n : {}),\n ...(cursor.kind === \"search\" && cursor.skipUnindexed !== undefined\n ? { skipUnindexed: cursor.skipUnindexed }\n : {}),\n };\n}\n\nfunction getCursorArchivePath(\n cursor: Awaited<ReturnType<typeof readContinuationCursor>>,\n): string {\n if (cursor.indexScope === undefined) {\n return cursor.archivePath;\n }\n if (cursor.indexScope.kind === \"archive-index\") {\n return cursor.indexScope.archivePath;\n }\n return cursor.archivePath;\n}\n","import { formatLocatedWikiGraphUri } from \"wiki-graph-core\";\n\nimport type { CLIArchiveArguments } from \"../../../args/index.js\";\nimport { formatCLIJSON, writeTextToStdout } from \"../../../support/index.js\";\nimport { getArchivePath } from \"./uri.js\";\n\nexport async function writeArchiveRoot(\n args: CLIArchiveArguments,\n): Promise<void> {\n const archivePath = getArchivePath(args.objectId!);\n\n if (args.format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON({ uri: formatLocatedWikiGraphUri(archivePath) }),\n );\n return;\n }\n\n await writeTextToStdout(\"<archive>\\n\");\n}\n","export * from \"./document.js\";\nexport * from \"./next.js\";\nexport * from \"./options.js\";\nexport * from \"./root.js\";\nexport * from \"./types.js\";\nexport * from \"./uri.js\";\n","import {\n listChapters,\n parseLocatedWikiGraphUri,\n resolveChapterPathReadonly,\n type ChapterEntry,\n type ReadonlyDocument,\n} from \"wiki-graph-core\";\n\nimport type { CLIArchiveArguments } from \"../../../args/index.js\";\n\nexport interface ChapterScopeResolution {\n readonly chapterIds: readonly number[];\n readonly entries: readonly ChapterEntry[];\n}\n\nexport async function resolveArchiveChapterScope(\n document: ReadonlyDocument,\n args: Pick<CLIArchiveArguments, \"archivePath\" | \"depth\">,\n): Promise<ChapterScopeResolution | undefined> {\n const objectUri = parseLocatedWikiGraphUri(args.archivePath).objectUri;\n\n if (objectUri === undefined) {\n return undefined;\n }\n\n const scope = parseChapterScopePath(objectUri);\n if (scope === undefined) {\n return undefined;\n }\n if (scope.kind === \"collection\" && args.depth === undefined) {\n return undefined;\n }\n\n const chapters = await listChapters(document);\n const entries =\n scope.kind === \"collection\"\n ? selectRootChapterScope(chapters, args.depth)\n : selectChapterSubtreeScope(\n chapters,\n await resolveChapterPathReadonly(document, scope.chapterPath),\n args.depth,\n );\n\n return {\n chapterIds: entries.map((entry) => entry.chapterId),\n entries,\n };\n}\n\nfunction parseChapterScopePath(\n objectUri: string,\n):\n | { readonly kind: \"collection\" }\n | { readonly chapterPath: string; readonly kind: \"chapter\" }\n | undefined {\n if (objectUri === \"wikg://chapter\" || objectUri === \"wikg://chapter/\") {\n return { kind: \"collection\" };\n }\n\n const match = /^wikg:\\/\\/chapter\\/([^/].*?)(?:\\/)?$/u.exec(objectUri);\n if (match?.[1] === undefined) {\n return undefined;\n }\n\n return { chapterPath: decodeURIComponent(match[1]), kind: \"chapter\" };\n}\n\nexport function selectRootChapterScope(\n chapters: readonly ChapterEntry[],\n depth: number | undefined,\n): readonly ChapterEntry[] {\n return depth === undefined\n ? chapters\n : chapters.filter((chapter) => chapter.depth <= depth);\n}\n\nexport function selectChapterSubtreeScope(\n chapters: readonly ChapterEntry[],\n rootChapterId: number,\n depth: number | undefined,\n): readonly ChapterEntry[] {\n const root = chapters.find((chapter) => chapter.chapterId === rootChapterId);\n if (root === undefined) {\n throw new Error(`Chapter ${rootChapterId} does not exist.`);\n }\n\n const prefix = `${root.path}/`;\n return chapters.filter((chapter) => {\n if (chapter.chapterId === root.chapterId) {\n return true;\n }\n if (!chapter.path.startsWith(prefix)) {\n return false;\n }\n return depth === undefined || chapter.depth - root.depth <= depth;\n });\n}\n","import {\n listArchiveCollection,\n listArchiveEvidence,\n listRelatedArchiveObjects,\n findWikiGraphLibraryObjects,\n formatWikiGraphLibraryUri,\n isArchiveSearchIndexCurrent,\n listRelatedWikiGraphLibraryObjects,\n listWikiGraphLibraryEvidence,\n listWikiGraphLibraryObjects,\n packArchiveContext,\n packWikiGraphLibraryContext,\n parseWikiGraphLibraryUri,\n readArchivePage,\n readWikiGraphLibraryPage,\n resolveWikiGraphLibrary,\n findArchiveObjects,\n listArchiveQueryableChapterIds,\n listArchiveSourceLocators,\n isSourceLocatorScopeUri,\n rebuildArchiveSearchIndex,\n WikiGraphArchiveFile,\n type ArchiveFindOptions,\n type ArchiveRelatedResult,\n type ReadonlyDocument,\n} from \"wiki-graph-core\";\n\nimport type { CLIArchiveArguments } from \"../../args/index.js\";\nimport { loadCLIConfig } from \"../../runtime/config.js\";\nimport { buildSearchIndexEmbeddingProvider } from \"../../runtime/embedding.js\";\nimport { formatCliCommand } from \"../../support/index.js\";\nimport { runConvertCommand } from \"../convert.js\";\nimport { createArchive } from \"./create.js\";\nimport { writeArchiveInspectReport } from \"./inspect.js\";\nimport {\n writeAllEvidence,\n writeAllFindHits,\n writeAllRelatedItems,\n writeEvidence,\n writeFindHits,\n writeFindHitsWithoutContinuation,\n writeList,\n writePack,\n writePage,\n writeAllSourceLocators,\n writeSourceLocators,\n} from \"../archive-output/index.js\";\nimport {\n ALL_COLLECTION_OUTPUT_LIMIT,\n createArchiveOutputContext,\n createCollectionFindResult,\n createCollectionOptions,\n createFindOptions,\n createOptionalEvidenceLimit,\n createOptionalSourceContext,\n getArchivePath,\n getObjectUri,\n getSingleObjectEvidenceLimit,\n isArchiveRootGet,\n readArchiveDocument,\n resolveArchiveCommandRuntimeArguments,\n resolveArchiveRuntimeLocation,\n runNextArchivePage,\n writeArchiveRoot,\n} from \"./run/index.js\";\nimport { resolveArchiveChapterScope } from \"./run/scope.js\";\nimport type { ChapterScopeResolution } from \"./run/scope.js\";\n\nexport async function runArchiveCommand(\n args: CLIArchiveArguments,\n): Promise<void> {\n const libraryTarget = parseWikiGraphLibraryUri(args.archivePath);\n if (\n libraryTarget?.kind === \"scope\" &&\n libraryTarget.objectUri !== \"wikg://index\" &&\n (libraryTarget.objectUri !== undefined ||\n args.action === \"related\" ||\n args.action === \"evidence\" ||\n args.action === \"pack\" ||\n args.action === \"search\" ||\n args.action === \"list\")\n ) {\n await runLibraryIndexArchiveCommand(args, libraryTarget);\n return;\n }\n\n args = await resolveArchiveCommandRuntimeArguments(args);\n\n switch (args.action) {\n case \"create\":\n await createArchive(args);\n return;\n case \"export\":\n if (args.outputFormat === undefined) {\n throw new Error(\"Internal error: missing export output format.\");\n }\n await runConvertCommand({\n help: false,\n inputFormat: \"wikg\",\n inputPath: args.archivePath,\n ...(args.outputPath === undefined\n ? {}\n : { outputPath: args.outputPath }),\n outputFormat: args.outputFormat,\n verbose: false,\n });\n return;\n case \"inspect\":\n await readArchiveDocument(\n (await resolveArchiveRuntimeLocation(args.archivePath)).archivePath,\n async (document) => {\n await writeArchiveInspectReport(document, args);\n },\n );\n return;\n case \"search\":\n await ensureArchiveQueryIndexCache(args);\n await readArchiveDocument(\n getArchivePath(args.archivePath),\n async (document) => {\n const scopedArgs = await createScopedQueryArgs(document, args);\n const context = createArchiveOutputContext(scopedArgs);\n const findOptions = await createSearchFindOptions(scopedArgs);\n\n if (args.all === true) {\n await writeAllFindHits(\n async (cursor) =>\n await findArchiveObjects(document, scopedArgs.query!, {\n ...findOptions,\n ...(cursor === undefined ? {} : { cursor }),\n }),\n context,\n args.format ?? \"text\",\n );\n return;\n }\n\n await writeFindHits(\n await findArchiveObjects(document, scopedArgs.query!, findOptions),\n context,\n args.format ?? \"text\",\n );\n },\n );\n return;\n case \"list\":\n if (args.query !== undefined) {\n await ensureArchiveQueryIndexCache(args);\n }\n await readArchiveDocument(\n getArchivePath(args.archivePath),\n async (document) => {\n const objectUri = getObjectUri(args.archivePath);\n if (isSourceLocatorScopeUri(objectUri)) {\n const context = createArchiveOutputContext(args, {\n continuationKind: \"source-locators\",\n targetUri: objectUri,\n });\n const readPage = async (cursor: string | undefined) =>\n await listArchiveSourceLocators(document, objectUri, {\n ...(cursor === undefined ? {} : { cursor }),\n ...(args.limit === undefined ? {} : { limit: args.limit }),\n });\n\n if (args.all === true) {\n await writeAllSourceLocators(\n readPage,\n args.cursor,\n context,\n args.format ?? \"text\",\n );\n return;\n }\n\n await writeSourceLocators(\n await readPage(args.cursor),\n context,\n args.format ?? \"text\",\n );\n return;\n }\n\n const scope = await resolveArchiveChapterScope(document, args);\n const scopedArgs =\n scope === undefined\n ? args\n : { ...args, chapters: scope.chapterIds };\n const context = createArchiveOutputContext(scopedArgs, {\n continuationKind: \"collection\",\n });\n\n if (args.all === true) {\n if (args.limit !== undefined) {\n await writeAllFindHits(\n async (cursor) =>\n createCollectionFindResult(\n await listArchiveCollection(document, {\n ...createCollectionOptions(scopedArgs),\n ...(cursor === undefined ? {} : { cursor }),\n }),\n ),\n context,\n args.format ?? \"text\",\n );\n return;\n }\n\n await writeFindHitsWithoutContinuation(\n createCollectionFindResult(\n await listArchiveCollection(document, {\n ...createCollectionOptions(scopedArgs),\n limit: ALL_COLLECTION_OUTPUT_LIMIT,\n }),\n ),\n context,\n args.format ?? \"text\",\n );\n return;\n }\n\n await writeFindHits(\n createCollectionFindResult(\n await listArchiveCollection(\n document,\n createCollectionOptions(scopedArgs),\n ),\n ),\n context,\n args.format ?? \"text\",\n );\n },\n );\n return;\n case \"get\":\n if (isArchiveRootGet(args)) {\n await writeArchiveRoot(args);\n return;\n }\n await readArchiveDocument(\n getArchivePath(args.archivePath),\n async (document) => {\n const objectUri = getObjectUri(args.objectId!);\n const evidenceLimit = getSingleObjectEvidenceLimit(args, objectUri);\n const outputContext =\n evidenceLimit === undefined\n ? createArchiveOutputContext(args)\n : createArchiveOutputContext({ ...args, evidenceLimit });\n\n await writePage(\n await readArchivePage(document, objectUri, {\n ...(args.backlinks === undefined\n ? {}\n : { backlinks: args.backlinks }),\n ...(evidenceLimit === undefined ? {} : { evidenceLimit }),\n ...(args.reverse === true ? { order: \"doc-desc\" } : {}),\n ...createOptionalSourceContext(args),\n }),\n outputContext,\n args.format ?? \"text\",\n );\n },\n );\n return;\n case \"related\":\n if (args.query !== undefined) {\n await ensureArchiveQueryIndexCache(args);\n }\n await readArchiveDocument(\n getArchivePath(args.archivePath),\n async (document) => {\n const context = createArchiveOutputContext(args, {\n continuationKind: \"related\",\n targetUri: getObjectUri(args.objectId!),\n });\n const readPage = async (\n cursor: string | undefined,\n ): Promise<ArchiveRelatedResult> =>\n await listRelatedArchiveObjects(\n document,\n getObjectUri(args.objectId!),\n {\n ...(cursor === undefined ? {} : { cursor }),\n ...createOptionalEvidenceLimit(args),\n ...(args.limit === undefined ? {} : { limit: args.limit }),\n ...(args.reverse === true ? { order: \"doc-desc\" } : {}),\n ...(args.query === undefined ? {} : { query: args.query }),\n ...(args.role === undefined ? {} : { role: args.role }),\n ...(args.skipUnindexed === true ? { skipUnindexed: true } : {}),\n ...createOptionalSourceContext(args),\n },\n );\n\n if (args.all === true) {\n await writeAllRelatedItems(\n readPage,\n args.cursor,\n context,\n args.format ?? \"text\",\n );\n return;\n }\n\n await writeList(\n await readPage(args.cursor),\n context,\n args.format ?? \"text\",\n );\n },\n );\n return;\n case \"evidence\":\n if (args.query !== undefined) {\n await ensureArchiveQueryIndexCache(args);\n }\n await readArchiveDocument(\n getArchivePath(args.archivePath),\n async (document) => {\n const context = createArchiveOutputContext(args, {\n continuationKind: \"evidence\",\n targetUri: getObjectUri(args.objectId!),\n });\n\n if (args.all === true) {\n await writeAllEvidence(\n async (cursor) =>\n await listArchiveEvidence(\n document,\n getObjectUri(args.objectId!),\n {\n ...(cursor === undefined ? {} : { cursor }),\n ...(args.limit === undefined ? {} : { limit: args.limit }),\n ...(args.reverse === true ? { order: \"doc-desc\" } : {}),\n ...(args.query === undefined ? {} : { query: args.query }),\n ...(args.skipUnindexed === true\n ? { skipUnindexed: true }\n : {}),\n ...createOptionalSourceContext(args),\n },\n ),\n args.cursor,\n context,\n args.format ?? \"text\",\n );\n return;\n }\n\n await writeEvidence(\n await listArchiveEvidence(document, getObjectUri(args.objectId!), {\n ...(args.cursor === undefined ? {} : { cursor: args.cursor }),\n ...(args.limit === undefined ? {} : { limit: args.limit }),\n ...(args.reverse === true ? { order: \"doc-desc\" } : {}),\n ...(args.query === undefined ? {} : { query: args.query }),\n ...(args.skipUnindexed === true ? { skipUnindexed: true } : {}),\n ...createOptionalSourceContext(args),\n }),\n context,\n args.format ?? \"text\",\n );\n },\n );\n return;\n case \"next\":\n await runNextArchivePage(args);\n return;\n case \"pack\":\n await readArchiveDocument(\n getArchivePath(args.archivePath),\n async (document) => {\n await writePack(\n await packArchiveContext(\n document,\n getObjectUri(args.objectId!),\n args.budget ?? 5000,\n ),\n createArchiveOutputContext(args),\n args.format ?? \"text\",\n );\n },\n );\n return;\n }\n}\n\nasync function ensureArchiveQueryIndexCache(\n args: CLIArchiveArguments,\n): Promise<void> {\n const location = await resolveArchiveRuntimeLocation(args.archivePath);\n\n await new WikiGraphArchiveFile(location.archiveFile).write(\n async (document) => {\n const scopedArgs = await createScopedQueryArgs(document, args);\n const options =\n scopedArgs.chapters === undefined\n ? {}\n : { chapters: scopedArgs.chapters };\n\n if (await isArchiveSearchIndexCurrent(document, options)) {\n return;\n }\n\n try {\n await rebuildArchiveSearchIndex(document, undefined, options);\n } catch (error) {\n if (isArchiveQueryNotReadyError(error)) {\n throw createArchiveQueryNotReadyError(args, error.message);\n }\n throw error;\n }\n },\n { searchIndexWritebackPolicy: \"cache\" },\n );\n}\n\nasync function createScopedQueryArgs(\n document: ReadonlyDocument,\n args: CLIArchiveArguments,\n): Promise<CLIArchiveArguments> {\n const scope = await resolveArchiveChapterScope(document, args);\n if (args.skipUnindexed !== true) {\n return applyChapterScope(args, scope);\n }\n\n const queryableChapters = await listArchiveQueryableChapterIds(document, {\n ...(scope === undefined ? {} : { chapters: scope.chapterIds }),\n });\n\n if (queryableChapters.length === 0) {\n throw createArchiveQueryNotReadyError(\n args,\n \"Wiki Graph query is not ready. No chapters in this scope have a current FTS artifact or source embedding artifact.\",\n );\n }\n\n return { ...args, chapters: queryableChapters };\n}\n\nfunction createArchiveQueryNotReadyError(\n args: Pick<CLIArchiveArguments, \"archivePath\">,\n reason: string,\n): Error {\n const buildCommand = formatCliCommand([\n \"wikg://local/job\",\n \"add\",\n \"--input\",\n args.archivePath,\n \"--task\",\n \"index-fts\",\n ]);\n\n return new Error(\n [\n reason,\n \"\",\n \"Build local FTS artifacts without provider calls:\",\n ` ${buildCommand}`,\n \"\",\n \"Help:\",\n \" wg help readiness\",\n ].join(\"\\n\"),\n );\n}\n\nfunction isArchiveQueryNotReadyError(error: unknown): error is Error {\n return error instanceof Error && error.name === \"ArchiveQueryNotReadyError\";\n}\n\nfunction applyChapterScope(\n args: CLIArchiveArguments,\n scope: ChapterScopeResolution | undefined,\n): CLIArchiveArguments {\n return scope === undefined ? args : { ...args, chapters: scope.chapterIds };\n}\n\nasync function runLibraryIndexArchiveCommand(\n args: CLIArchiveArguments,\n target: NonNullable<ReturnType<typeof parseWikiGraphLibraryUri>>,\n): Promise<void> {\n const library = await resolveWikiGraphLibrary(target);\n const isLibraryRootCollection =\n target.objectUri === undefined && args.objectId === undefined;\n const objectUri = isLibraryRootCollection\n ? undefined\n : getObjectUri(args.objectId ?? args.archivePath);\n const context = {\n ...createArchiveOutputContext(args),\n archiveKey: isLibraryRootCollection\n ? `${formatWikiGraphLibraryUri(target.publicId)}#scope`\n : args.archivePath,\n archivePath: args.archivePath,\n indexScope: { kind: \"library-index\" as const, libraryId: library.id },\n };\n\n switch (args.action) {\n case \"search\": {\n const findOptions = await createSearchFindOptions(args);\n if (objectUri === undefined) {\n if (args.all === true) {\n await writeAllFindHits(\n async (cursor) =>\n await findWikiGraphLibraryObjects(target, args.query!, {\n ...findOptions,\n ...(cursor === undefined ? {} : { cursor }),\n }),\n context,\n args.format ?? \"text\",\n );\n return;\n }\n await writeFindHits(\n await findWikiGraphLibraryObjects(target, args.query!, findOptions),\n context,\n args.format ?? \"text\",\n );\n return;\n }\n if (args.all === true) {\n await writeAllFindHits(\n async (cursor) =>\n await findWikiGraphLibraryObjects(target, args.query!, {\n ...findOptions,\n ...(cursor === undefined ? {} : { cursor }),\n }),\n context,\n args.format ?? \"text\",\n );\n return;\n }\n\n await writeFindHits(\n await findWikiGraphLibraryObjects(target, args.query!, findOptions),\n context,\n args.format ?? \"text\",\n );\n return;\n }\n case \"list\": {\n const listContext = {\n ...context,\n continuationKind: \"collection\" as const,\n };\n if (objectUri === undefined) {\n if (args.all === true) {\n if (args.limit !== undefined) {\n await writeAllFindHits(\n async (cursor) =>\n createCollectionFindResult(\n await listWikiGraphLibraryObjects(target, {\n ...createCollectionOptions(args),\n ...(cursor === undefined ? {} : { cursor }),\n }),\n ),\n listContext,\n args.format ?? \"text\",\n );\n return;\n }\n\n await writeFindHitsWithoutContinuation(\n createCollectionFindResult(\n await listWikiGraphLibraryObjects(target, {\n ...createCollectionOptions(args),\n limit: ALL_COLLECTION_OUTPUT_LIMIT,\n }),\n ),\n listContext,\n args.format ?? \"text\",\n );\n return;\n }\n await writeFindHits(\n createCollectionFindResult(\n await listWikiGraphLibraryObjects(\n target,\n createCollectionOptions(args),\n ),\n ),\n listContext,\n args.format ?? \"text\",\n );\n return;\n }\n if (args.all === true) {\n if (args.limit !== undefined) {\n await writeAllFindHits(\n async (cursor) =>\n createCollectionFindResult(\n await listWikiGraphLibraryObjects(target, {\n ...createCollectionOptions(args),\n ...(cursor === undefined ? {} : { cursor }),\n }),\n ),\n listContext,\n args.format ?? \"text\",\n );\n return;\n }\n\n await writeFindHitsWithoutContinuation(\n createCollectionFindResult(\n await listWikiGraphLibraryObjects(target, {\n ...createCollectionOptions(args),\n limit: ALL_COLLECTION_OUTPUT_LIMIT,\n }),\n ),\n listContext,\n args.format ?? \"text\",\n );\n return;\n }\n\n await writeFindHits(\n createCollectionFindResult(\n await listWikiGraphLibraryObjects(\n target,\n createCollectionOptions(args),\n ),\n ),\n listContext,\n args.format ?? \"text\",\n );\n return;\n }\n case \"get\": {\n if (objectUri === undefined) {\n const getContext = {\n ...context,\n continuationKind: \"collection\" as const,\n };\n await writeFindHits(\n createCollectionFindResult(\n await listWikiGraphLibraryObjects(\n target,\n createCollectionOptions(args),\n ),\n ),\n getContext,\n args.format ?? \"text\",\n );\n return;\n }\n\n const evidenceLimit = getSingleObjectEvidenceLimit(args, objectUri);\n await writePage(\n await readWikiGraphLibraryPage(target, objectUri, {\n ...(args.backlinks === undefined\n ? {}\n : { backlinks: args.backlinks }),\n ...(evidenceLimit === undefined ? {} : { evidenceLimit }),\n ...(args.reverse === true ? { order: \"doc-desc\" } : {}),\n ...createOptionalSourceContext(args),\n }),\n evidenceLimit === undefined ? context : { ...context, evidenceLimit },\n args.format ?? \"text\",\n );\n return;\n }\n case \"related\": {\n const concreteObjectUri = requireLibraryObjectUri(\"related\", objectUri);\n const relatedContext = {\n ...context,\n continuationKind: \"related\" as const,\n targetUri: concreteObjectUri,\n };\n const readPage = async (\n cursor: string | undefined,\n ): Promise<ArchiveRelatedResult> =>\n await listRelatedWikiGraphLibraryObjects(target, concreteObjectUri, {\n ...(cursor === undefined ? {} : { cursor }),\n ...createOptionalEvidenceLimit(args),\n ...(args.limit === undefined ? {} : { limit: args.limit }),\n ...(args.reverse === true ? { order: \"doc-desc\" } : {}),\n ...(args.query === undefined ? {} : { query: args.query }),\n ...(args.role === undefined ? {} : { role: args.role }),\n ...(args.skipUnindexed === true ? { skipUnindexed: true } : {}),\n ...createOptionalSourceContext(args),\n });\n\n if (args.all === true) {\n await writeAllRelatedItems(\n readPage,\n args.cursor,\n relatedContext,\n args.format ?? \"text\",\n );\n return;\n }\n\n await writeList(\n await readPage(args.cursor),\n relatedContext,\n args.format ?? \"text\",\n );\n return;\n }\n case \"evidence\": {\n const concreteObjectUri = requireLibraryObjectUri(\"evidence\", objectUri);\n const evidenceContext = {\n ...context,\n continuationKind: \"evidence\" as const,\n targetUri: concreteObjectUri,\n };\n\n if (args.all === true) {\n await writeAllEvidence(\n async (cursor) =>\n await listWikiGraphLibraryEvidence(target, concreteObjectUri, {\n ...(cursor === undefined ? {} : { cursor }),\n ...(args.limit === undefined ? {} : { limit: args.limit }),\n ...(args.reverse === true ? { order: \"doc-desc\" } : {}),\n ...(args.query === undefined ? {} : { query: args.query }),\n ...(args.skipUnindexed === true ? { skipUnindexed: true } : {}),\n ...createOptionalSourceContext(args),\n }),\n args.cursor,\n evidenceContext,\n args.format ?? \"text\",\n );\n return;\n }\n\n await writeEvidence(\n await listWikiGraphLibraryEvidence(target, concreteObjectUri, {\n ...(args.cursor === undefined ? {} : { cursor: args.cursor }),\n ...(args.limit === undefined ? {} : { limit: args.limit }),\n ...(args.reverse === true ? { order: \"doc-desc\" } : {}),\n ...(args.query === undefined ? {} : { query: args.query }),\n ...(args.skipUnindexed === true ? { skipUnindexed: true } : {}),\n ...createOptionalSourceContext(args),\n }),\n evidenceContext,\n args.format ?? \"text\",\n );\n return;\n }\n case \"pack\": {\n const concreteObjectUri = requireLibraryObjectUri(\"pack\", objectUri);\n await writePack(\n await packWikiGraphLibraryContext(\n target,\n concreteObjectUri,\n args.budget ?? 5000,\n ),\n context,\n args.format ?? \"text\",\n );\n return;\n }\n case \"create\":\n case \"export\":\n case \"inspect\":\n case \"next\":\n throw new Error(\n `The library index scope does not support \\`${args.action}\\`.`,\n );\n }\n}\n\nasync function createSearchFindOptions(\n args: CLIArchiveArguments,\n): Promise<ArchiveFindOptions> {\n const options = createFindOptions(args);\n const config = await loadCLIConfig();\n\n return {\n ...options,\n ...(config.embedding === undefined\n ? {}\n : {\n embeddingProvider: buildSearchIndexEmbeddingProvider(\n config.embedding,\n ),\n }),\n };\n}\n\nfunction requireLibraryObjectUri(\n action: \"related\" | \"evidence\" | \"pack\",\n objectUri: string | undefined,\n): string {\n if (objectUri === undefined) {\n throw new Error(\n `The library \\`${action}\\` predicate requires a concrete library object URI.`,\n );\n }\n\n return objectUri;\n}\n","export type WikiGraphEntryEnvPolicy = \"development\" | \"production\";\n\nexport interface WikiGraphEntryRuntimeOptions {\n readonly argv?: readonly string[] | undefined;\n readonly cwd?: string | undefined;\n readonly devProjectRoot?: string | undefined;\n readonly env?: NodeJS.ProcessEnv | undefined;\n readonly envPolicy: WikiGraphEntryEnvPolicy;\n readonly stateDir?: string | undefined;\n}\n\nexport interface WikiGraphEntryRuntimeContext {\n readonly devProjectRoot?: string | undefined;\n readonly env: NodeJS.ProcessEnv;\n readonly envPolicy: WikiGraphEntryEnvPolicy;\n readonly stateDir?: string | undefined;\n}\n\nexport const DANGEROUS_RUNTIME_ENV_NAMES = [\n \"WIKIGRAPH_DEV\",\n \"WIKIGRAPH_ENV_POLICY\",\n \"WIKIGRAPH_QUEUE_DISABLE_AUTOSTART\",\n \"WIKIGRAPH_STATE_DIR\",\n] as const;\n\nexport function createEntryRuntimeContext(\n options: WikiGraphEntryRuntimeOptions,\n): WikiGraphEntryRuntimeContext {\n const environment = createMergedEnvironment(options.env);\n\n if (options.envPolicy === \"production\") {\n const blocked = DANGEROUS_RUNTIME_ENV_NAMES.filter(\n (name) => environment[name] !== undefined,\n );\n\n if (blocked.length > 0) {\n throw new Error(\n `Wiki Graph production entries do not support runtime env overrides: ${blocked.join(\", \")}. Use the development entry or explicit SDK options instead.`,\n );\n }\n\n return {\n env: environment,\n envPolicy: options.envPolicy,\n stateDir: options.stateDir,\n };\n }\n\n const envStateDir =\n environment.WIKIGRAPH_DEV ?? environment.WIKIGRAPH_STATE_DIR;\n const stateDir = normalizeOptionalPath(options.stateDir ?? envStateDir);\n\n if (stateDir === undefined) {\n throw new Error(\n \"Wiki Graph development entries require an explicit runtime state directory.\",\n );\n }\n\n const devProjectRoot = normalizeOptionalPath(options.devProjectRoot);\n\n if (devProjectRoot === undefined) {\n throw new Error(\n \"Wiki Graph development entries require an explicit project root.\",\n );\n }\n\n return {\n devProjectRoot,\n env: environment,\n envPolicy: options.envPolicy,\n stateDir,\n };\n}\n\nfunction createMergedEnvironment(\n environment: NodeJS.ProcessEnv | undefined,\n): NodeJS.ProcessEnv {\n if (environment === undefined) {\n return { ...process.env };\n }\n\n return {\n ...process.env,\n ...environment,\n };\n}\n\nfunction normalizeOptionalPath(path: string | undefined): string | undefined {\n if (path === undefined || path.trim() === \"\") {\n return undefined;\n }\n\n return path;\n}\n","import { spawn } from \"child_process\";\nimport { existsSync } from \"fs\";\nimport { join, resolve } from \"path\";\n\nimport {\n getCLICwd,\n getCLIDevProjectRoot,\n getCLIEnv,\n getCLIStateDir,\n} from \"./context.js\";\nimport { DANGEROUS_RUNTIME_ENV_NAMES } from \"./entry-context.js\";\n\nexport type InternalChildKind = \"gc-worker\" | \"queue-worker\";\n\nexport interface InternalChildSpawnOptions {\n readonly args?: readonly string[];\n readonly detached?: boolean;\n}\n\ndeclare global {\n var __WIKIGRAPH_CLI_DIST_DIR__: string | undefined;\n}\n\nexport function spawnInternalChild(\n kind: InternalChildKind,\n options: InternalChildSpawnOptions = {},\n): ReturnType<typeof spawn> {\n const command = createInternalChildCommand(kind, options.args ?? []);\n\n return spawn(command.command, command.args, {\n cwd: getCLICwd(),\n detached: options.detached === true,\n env: createInternalChildEnvironment(),\n stdio: options.detached === true ? \"ignore\" : [\"ignore\", \"pipe\", \"pipe\"],\n });\n}\n\nexport function createInternalChildEnvironmentForTesting(): NodeJS.ProcessEnv {\n return createInternalChildEnvironment();\n}\n\nexport async function runInternalChildJSON<T>(\n kind: InternalChildKind,\n options: InternalChildSpawnOptions = {},\n): Promise<T> {\n const child = spawnInternalChild(kind, options);\n const stdout: Buffer[] = [];\n const stderr: Buffer[] = [];\n\n child.stdout?.on(\"data\", (chunk: Buffer) => stdout.push(chunk));\n child.stderr?.on(\"data\", (chunk: Buffer) => stderr.push(chunk));\n\n await new Promise<void>((resolvePromise, reject) => {\n child.on(\"error\", reject);\n child.on(\"close\", (code) => {\n if (code !== 0) {\n reject(\n new Error(\n `Internal ${kind} failed with exit code ${code}: ${Buffer.concat(stderr).toString(\"utf8\").trim()}`,\n ),\n );\n return;\n }\n resolvePromise();\n });\n });\n\n try {\n return JSON.parse(Buffer.concat(stdout).toString(\"utf8\")) as T;\n } catch (error) {\n throw new Error(\n `Internal ${kind} returned invalid JSON: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n}\n\nexport function createInternalChildCommandForTesting(\n kind: InternalChildKind,\n args: readonly string[] = [],\n): { readonly args: readonly string[]; readonly command: string } {\n return createInternalChildCommand(kind, args);\n}\n\nfunction createInternalChildCommand(\n kind: InternalChildKind,\n args: readonly string[],\n): { readonly args: readonly string[]; readonly command: string } {\n const devProjectRoot = getCLIDevProjectRoot();\n const stateDir = getCLIStateDir();\n\n if (devProjectRoot !== undefined && stateDir !== undefined) {\n return {\n args: [\n join(devProjectRoot, \"node_modules\", \"tsx\", \"dist\", \"cli.mjs\"),\n join(devProjectRoot, \"packages\", \"cli\", \"src\", \"bin\", `${kind}.ts`),\n \"--wikigraph-internal-child\",\n kind,\n \"--wikigraph-state-dir\",\n stateDir,\n ...args,\n ],\n command: process.execPath,\n };\n }\n\n return {\n args: [\n resolveProductionEntryPath(kind),\n \"--wikigraph-internal-child\",\n kind,\n ...(stateDir === undefined ? [] : [\"--wikigraph-state-dir\", stateDir]),\n ...args,\n ],\n command: process.execPath,\n };\n}\n\nfunction createInternalChildEnvironment(): NodeJS.ProcessEnv {\n const environment = { ...getCLIEnv() };\n\n for (const name of DANGEROUS_RUNTIME_ENV_NAMES) {\n delete environment[name];\n }\n\n return environment;\n}\n\nfunction resolveProductionEntryPath(kind: InternalChildKind): string {\n const filename = `${kind}.js`;\n const distDirPath =\n globalThis.__WIKIGRAPH_CLI_DIST_DIR__ ??\n resolve(getCLICwd(), \"packages\", \"cli\", \"dist\");\n const adjacent = join(distDirPath, filename);\n\n if (existsSync(adjacent)) {\n return adjacent;\n }\n\n return adjacent;\n}\n","import type { BuildJobTarget, ChapterEntry } from \"wiki-graph-core\";\n\nimport type { CLIConfig } from \"../../runtime/config.js\";\nimport {\n createGenerationPerformanceHints,\n DEFAULT_GENERATION_JOB_CONCURRENCY,\n DEFAULT_GENERATION_REQUEST_CONCURRENCY,\n formatGenerationPlanningDuration,\n formatGenerationPlanningModel,\n planGenerationTask,\n type GenerationConcurrency,\n type GenerationPerformanceHint,\n type GenerationPlanningCost,\n} from \"../../runtime/index.js\";\n\nexport interface QueueAddEstimate {\n readonly chapters: number;\n readonly concurrent: GenerationConcurrency;\n readonly includesPrerequisites: boolean;\n readonly performanceHints: readonly GenerationPerformanceHint[];\n readonly planning: GenerationPlanningCost;\n readonly steps: readonly QueueAddEstimateStep[];\n readonly target: BuildJobTarget;\n readonly usesProvider: boolean;\n readonly words: number;\n}\n\ninterface QueueAddEstimateStep {\n readonly chapters: number;\n readonly planning: GenerationPlanningCost;\n readonly prerequisite: boolean;\n readonly task: BuildJobTarget;\n readonly words: number;\n}\n\nexport function createQueueAddEstimate(input: {\n readonly chapters: readonly Pick<ChapterEntry, \"stage\" | \"words\">[];\n readonly config: CLIConfig;\n readonly target: BuildJobTarget;\n}): QueueAddEstimate {\n const concurrent = {\n job: input.config.concurrent?.job ?? DEFAULT_GENERATION_JOB_CONCURRENCY,\n request:\n input.config.concurrent?.request ??\n DEFAULT_GENERATION_REQUEST_CONCURRENCY,\n };\n const words = input.chapters.reduce(\n (total, chapter) => total + chapter.words,\n 0,\n );\n const model = formatGenerationPlanningModel(input.config.llm);\n const steps = createQueueAddEstimateSteps({\n chapters: input.chapters,\n concurrent,\n model,\n target: input.target,\n });\n const workChapters = Math.max(0, ...steps.map((step) => step.chapters));\n const usesProvider = steps.some((step) => step.task !== \"index-fts\");\n\n return {\n chapters: input.chapters.length,\n concurrent,\n includesPrerequisites: steps.some((step) => step.prerequisite),\n performanceHints: createGenerationPerformanceHints({\n chapters: workChapters,\n concurrent,\n hasJobWork: steps.length > 0,\n hasRequestWork: usesProvider,\n }),\n planning: sumGenerationPlanningCosts(model, steps),\n steps,\n target: input.target,\n usesProvider,\n words,\n };\n}\n\nfunction createQueueAddEstimateSteps(input: {\n readonly chapters: readonly Pick<ChapterEntry, \"stage\" | \"words\">[];\n readonly concurrent: GenerationConcurrency;\n readonly model: string;\n readonly target: BuildJobTarget;\n}): readonly QueueAddEstimateStep[] {\n switch (input.target) {\n case \"index-fts\":\n case \"index-embedding-source\":\n case \"index-embedding-summary\":\n return [\n createQueueAddEstimateStep({\n chapters: input.chapters,\n concurrent: input.concurrent,\n model: input.model,\n prerequisite: false,\n task: input.target,\n }),\n ].filter((step) => step.chapters > 0);\n case \"knowledge-graph\":\n return [\n createQueueAddEstimateStep({\n chapters: input.chapters,\n concurrent: input.concurrent,\n model: input.model,\n prerequisite: true,\n task: \"index-fts\",\n }),\n createQueueAddEstimateStep({\n chapters: input.chapters,\n concurrent: input.concurrent,\n model: input.model,\n prerequisite: false,\n task: \"knowledge-graph\",\n }),\n ].filter((step) => step.chapters > 0);\n case \"reading-graph\":\n return [\n createQueueAddEstimateStep({\n chapters: input.chapters.filter(\n (chapter) => chapter.stage === \"sourced\",\n ),\n concurrent: input.concurrent,\n model: input.model,\n prerequisite: true,\n task: \"index-fts\",\n }),\n createQueueAddEstimateStep({\n chapters: input.chapters.filter(\n (chapter) => chapter.stage === \"sourced\",\n ),\n concurrent: input.concurrent,\n model: input.model,\n prerequisite: false,\n task: \"reading-graph\",\n }),\n ].filter((step) => step.chapters > 0);\n case \"reading-summary\": {\n const graphChapters = input.chapters.filter(\n (chapter) => chapter.stage === \"sourced\",\n );\n const summaryChapters = input.chapters.filter(\n (chapter) => chapter.stage === \"sourced\" || chapter.stage === \"graphed\",\n );\n\n return [\n createQueueAddEstimateStep({\n chapters: graphChapters,\n concurrent: input.concurrent,\n model: input.model,\n prerequisite: true,\n task: \"reading-graph\",\n }),\n createQueueAddEstimateStep({\n chapters: summaryChapters,\n concurrent: input.concurrent,\n model: input.model,\n prerequisite: false,\n task: \"reading-summary\",\n }),\n ].filter((step) => step.chapters > 0);\n }\n }\n}\n\nfunction createQueueAddEstimateStep(input: {\n readonly chapters: readonly Pick<ChapterEntry, \"words\">[];\n readonly concurrent: GenerationConcurrency;\n readonly model: string;\n readonly prerequisite: boolean;\n readonly task: BuildJobTarget;\n}): QueueAddEstimateStep {\n const words = input.chapters.reduce(\n (total, chapter) => total + chapter.words,\n 0,\n );\n\n return {\n chapters: input.chapters.length,\n planning: planGenerationTask(\n input.task,\n words,\n input.chapters.length,\n input.concurrent,\n input.model,\n ),\n prerequisite: input.prerequisite,\n task: input.task,\n words,\n };\n}\n\nfunction sumGenerationPlanningCosts(\n model: string,\n steps: readonly QueueAddEstimateStep[],\n): GenerationPlanningCost {\n return {\n model,\n timeSeconds: {\n max: steps.reduce(\n (total, step) => total + step.planning.timeSeconds.max,\n 0,\n ),\n min: steps.reduce(\n (total, step) => total + step.planning.timeSeconds.min,\n 0,\n ),\n },\n tokens: {\n cacheableInput: steps.reduce(\n (total, step) => total + step.planning.tokens.cacheableInput,\n 0,\n ),\n input: steps.reduce(\n (total, step) => total + step.planning.tokens.input,\n 0,\n ),\n output: steps.reduce(\n (total, step) => total + step.planning.tokens.output,\n 0,\n ),\n },\n };\n}\n\nexport function formatQueueAddEstimateJSON(\n estimate: QueueAddEstimate,\n): unknown {\n return {\n chapters: estimate.chapters,\n concurrent: estimate.usesProvider\n ? estimate.concurrent\n : { job: estimate.concurrent.job },\n includesPrerequisites: estimate.includesPrerequisites,\n performanceHints: estimate.performanceHints,\n steps: estimate.steps.map((step) => ({\n chapters: step.chapters,\n prerequisite: step.prerequisite,\n task: step.task,\n tokens: step.planning.tokens,\n waitSeconds: step.planning.timeSeconds,\n words: step.words,\n })),\n target: estimate.target,\n tokens: estimate.planning.tokens,\n waitSeconds: estimate.planning.timeSeconds,\n words: estimate.words,\n ...(estimate.usesProvider ? { model: estimate.planning.model } : {}),\n };\n}\n\nexport function formatQueueAddEstimateLines(\n estimate: QueueAddEstimate,\n): readonly string[] {\n return [\n \"Estimate:\",\n ` Work: ${estimate.target} over ${estimate.chapters} chapter${estimate.chapters === 1 ? \"\" : \"s\"} / ${estimate.words} words`,\n ...(estimate.includesPrerequisites\n ? [\" Includes prerequisite Reading Graph work where missing.\"]\n : []),\n ...(estimate.usesProvider ? [` Model: ${estimate.planning.model}`] : []),\n ` Tokens: ${estimate.planning.tokens.input} input / ${estimate.planning.tokens.cacheableInput} cacheable input / ${estimate.planning.tokens.output} output`,\n ` Wait: ${formatGenerationPlanningDuration(estimate.planning.timeSeconds.min)}-${formatGenerationPlanningDuration(estimate.planning.timeSeconds.max)}`,\n ` Current concurrency: job=${estimate.concurrent.job}${estimate.usesProvider ? ` request=${estimate.concurrent.request}` : \"\"}`,\n ...formatQueuePerformanceHintLines(estimate.performanceHints),\n ];\n}\n\nfunction formatQueuePerformanceHintLines(\n hints: readonly GenerationPerformanceHint[],\n): readonly string[] {\n if (hints.length === 0) {\n return [];\n }\n\n return [\n \"Performance hints:\",\n ...hints.flatMap((hint) => [\n ` ${hint.message}`,\n ` Command: ${hint.command}`,\n ]),\n ];\n}\n","import {\n formatLocatedChapterUri,\n listChapters,\n WikiGraphArchiveFile,\n type BuildJob,\n type ChapterEntry,\n} from \"wiki-graph-core\";\n\nimport {\n formatCLIJSON,\n formatCliCommand,\n formatWikiGraphCommandUri,\n writeTextToStdout,\n} from \"../../support/index.js\";\nimport {\n formatQueueAddEstimateJSON,\n formatQueueAddEstimateLines,\n type QueueAddEstimate,\n} from \"./estimate.js\";\nimport { getNodeResourcePath, NodeFile } from \"../../runtime/node-platform.js\";\n\ninterface JobChapterReference {\n readonly locatedUri: string;\n readonly title: string | null;\n readonly uri: string;\n}\n\nexport async function writeJobList(\n jobs: readonly BuildJob[],\n options: { readonly json: boolean },\n): Promise<void> {\n const chapters = await resolveJobChapters(jobs);\n if (options.json) {\n await writeTextToStdout(\n formatCLIJSON({\n items: jobs.map((job) => formatJobJSON(job, chapters.get(job.jobId))),\n }),\n );\n return;\n }\n\n if (jobs.length === 0) {\n await writeTextToStdout(\"No jobs.\\n\");\n return;\n }\n\n await writeTextToStdout(\n `${formatJobListHeader()}\\n${jobs\n .map(\n (job) =>\n `${job.jobId.slice(0, 8).padEnd(8)} ${job.state.padEnd(9)} ${(job.currentStep ?? \"-\").padEnd(7)} ${job.target.padEnd(7)} ${formatJobChapterListLabel(job, chapters.get(job.jobId))}`,\n )\n .join(\"\\n\")}\\n`,\n );\n}\n\nfunction formatJobListHeader(): string {\n return `${\"JOB\".padEnd(8)} ${\"STATE\".padEnd(9)} ${\"STEP\".padEnd(7)} ${\"TARGET\".padEnd(7)} CHAPTER`;\n}\n\nexport async function writeJobStatus(\n job: BuildJob,\n options: { readonly json: boolean },\n): Promise<void> {\n const chapter = await resolveJobChapter(job);\n if (options.json) {\n await writeTextToStdout(formatCLIJSON(formatJobJSON(job, chapter)));\n return;\n }\n\n await writeTextToStdout(\n [\n `Job: ${job.jobId}`,\n `State: ${job.state}`,\n `Archive: ${requireJobResourcePath(job, \"archive\", \"archivePath\")}`,\n `Chapter: ${formatJobChapterLabel(job, chapter)}`,\n ...(chapter === undefined ? [] : [`Chapter URI: ${chapter.locatedUri}`]),\n `Target: ${job.target}`,\n `Step: ${job.currentStep ?? \"-\"}`,\n `Workspace: ${getJobResourcePath(job, \"workspace\", \"workspacePath\") ?? \"-\"}`,\n `Cache: ${getJobResourcePath(job, \"cache\", \"cachePath\") ?? \"-\"}`,\n `Logs: ${getJobResourcePath(job, \"log\", \"logPath\") ?? \"-\"}`,\n ...(job.errorJSON === undefined ? [] : [`Error: ${job.errorJSON}`]),\n ].join(\"\\n\") + \"\\n\",\n );\n}\n\nfunction formatJobJSON(\n job: BuildJob,\n chapter?: JobChapterReference,\n): Record<string, unknown> {\n return {\n archiveKey: job.archiveKey,\n archivePath: getJobResourcePath(job, \"archive\", \"archivePath\"),\n cachePath: getJobResourcePath(job, \"cache\", \"cachePath\"),\n chapterId: job.chapterId,\n ...(chapter === undefined\n ? {}\n : {\n chapter: {\n locatedUri: chapter.locatedUri,\n title: chapter.title,\n uri: chapter.uri,\n },\n }),\n createdAt: job.createdAt,\n ...(job.currentStep === undefined ? {} : { currentStep: job.currentStep }),\n ...(job.errorJSON === undefined ? {} : { errorJSON: job.errorJSON }),\n eventsPath: getJobResourcePath(job, \"events\", \"eventsPath\"),\n ...(job.finishedAt === undefined ? {} : { finishedAt: job.finishedAt }),\n jobId: job.jobId,\n logPath: getJobResourcePath(job, \"log\", \"logPath\"),\n ...(job.llmJSON === undefined\n ? {}\n : { llm: formatJobLLMJSON(job.llmJSON) }),\n ...(job.ownerId === undefined ? {} : { ownerId: job.ownerId }),\n ...(job.prompt === undefined ? {} : { prompt: job.prompt }),\n queueRank: job.queueRank,\n state: job.state,\n ...(job.readingSummaryStartedAt === undefined\n ? {}\n : { readingSummaryStartedAt: job.readingSummaryStartedAt }),\n target: job.target,\n updatedAt: job.updatedAt,\n workspacePath: getJobResourcePath(job, \"workspace\", \"workspacePath\"),\n };\n}\n\nexport function formatJobQueuedNotice(job: BuildJob): string | undefined {\n if (job.state !== \"queued\") {\n return undefined;\n }\n\n return \"Job is queued; the requested artifact or generated data is not ready until the job succeeds.\";\n}\n\nfunction formatJobLLMJSON(value: string): unknown {\n let parsed: unknown;\n\n try {\n parsed = JSON.parse(value);\n } catch {\n return {\n configured: true,\n invalid: true,\n };\n }\n\n const llm = readJobLLMObject(parsed);\n\n return {\n configured: true,\n ...(readOptionalString(llm, \"provider\") === undefined\n ? {}\n : { provider: readOptionalString(llm, \"provider\") }),\n ...(readOptionalString(llm, \"model\") === undefined\n ? {}\n : { model: readOptionalString(llm, \"model\") }),\n ...(readOptionalString(llm, \"name\") === undefined\n ? {}\n : { name: readOptionalString(llm, \"name\") }),\n hasApiKey: readOptionalString(llm, \"apiKey\") !== undefined,\n hasBaseURL:\n readOptionalString(llm, \"baseURL\") !== undefined ||\n readOptionalString(llm, \"baseUrl\") !== undefined ||\n readOptionalString(llm, \"chatCompletionsUrl\") !== undefined,\n };\n}\n\nfunction readJobLLMObject(value: unknown): Record<string, unknown> {\n if (!isRecord(value)) {\n return {};\n }\n\n const nested = value.llm;\n\n return isRecord(nested) ? nested : value;\n}\n\nfunction readOptionalString(\n value: Record<string, unknown>,\n key: string,\n): string | undefined {\n const field = value[key];\n\n return typeof field === \"string\" && field !== \"\" ? field : undefined;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n\nexport async function writeJobSummary(\n job: BuildJob,\n options: {\n readonly estimate?: QueueAddEstimate;\n readonly chapter?: ChapterEntry;\n readonly json: boolean;\n readonly watch?: boolean;\n } = { json: false },\n): Promise<void> {\n const chapter =\n options.chapter === undefined\n ? await resolveJobChapter(job)\n : createJobChapterReference(job, options.chapter);\n if (options.json) {\n await writeTextToStdout(\n formatCLIJSON({\n ...formatJobJSON(job, chapter),\n ...(formatJobQueuedNotice(job) === undefined\n ? {}\n : { notice: formatJobQueuedNotice(job) }),\n ...(options.estimate === undefined\n ? {}\n : { estimate: formatQueueAddEstimateJSON(options.estimate) }),\n ...(options.watch === true\n ? {\n watchCommand: formatCliCommand([\n `wikg://local/job/${job.jobId}`,\n \"watch\",\n ]),\n }\n : {}),\n }),\n );\n return;\n }\n\n await writeTextToStdout(\n [\n `Job ${job.jobId} ${job.state} ${job.target} chapter ${formatJobChapterLabel(job, chapter)}`,\n ...(chapter === undefined ? [] : [`Chapter URI: ${chapter.locatedUri}`]),\n ...(formatJobQueuedNotice(job) === undefined\n ? []\n : [formatJobQueuedNotice(job)!]),\n ...(options.watch === true\n ? [\n `Watch: ${formatCliCommand([\n `wikg://local/job/${job.jobId}`,\n \"watch\",\n ])}`,\n ]\n : []),\n ...(options.estimate === undefined\n ? []\n : [\"\", ...formatQueueAddEstimateLines(options.estimate)]),\n \"\",\n ].join(\"\\n\"),\n );\n}\n\nexport async function writeArchiveAddSummary(input: {\n readonly archivePath: string;\n readonly created: readonly {\n readonly chapter: ChapterEntry;\n readonly job: BuildJob;\n }[];\n readonly estimate?: QueueAddEstimate;\n readonly json: boolean;\n readonly skipped: readonly {\n readonly chapter: ChapterEntry;\n readonly reason: string;\n }[];\n}): Promise<void> {\n const jobsCommand = formatCliCommand([\"wikg://local/job\", \"--json\"]);\n const verifyCommand = formatCliCommand([\n formatWikiGraphCommandUri(input.archivePath),\n \"inspect\",\n ]);\n\n if (input.json) {\n await writeTextToStdout(\n formatCLIJSON({\n created: input.created.map((item) =>\n formatJobJSON(\n item.job,\n createJobChapterReference(item.job, item.chapter),\n ),\n ),\n ...(input.estimate === undefined\n ? {}\n : { estimate: formatQueueAddEstimateJSON(input.estimate) }),\n ...(input.created.length === 0 ? {} : { jobsCommand, verifyCommand }),\n skipped: input.skipped.map((item) => ({\n chapterId: item.chapter.chapterId,\n chapter: formatChapterJSON(\n createJobChapterReferenceFromPath(input.archivePath, item.chapter),\n ),\n reason: item.reason,\n })),\n }),\n );\n return;\n }\n\n const lines = [\n `Created: ${input.created.length}`,\n `Skipped: ${input.skipped.length}`,\n ];\n\n for (const job of input.created) {\n lines.push(\n `Job ${job.job.jobId} ${job.job.state} ${job.job.target} chapter ${formatChapterLabel(job.chapter)}`,\n `Chapter URI: ${createJobChapterReference(job.job, job.chapter).locatedUri}`,\n );\n }\n for (const skipped of input.skipped) {\n lines.push(\n `Skipped chapter ${formatChapterLabel(skipped.chapter)}: ${skipped.reason}`,\n );\n }\n if (input.estimate !== undefined) {\n lines.push(\"\", ...formatQueueAddEstimateLines(input.estimate));\n }\n if (input.created.length > 0) {\n lines.push(\n \"\",\n `Jobs: ${jobsCommand}`,\n `Verify after the jobs finish: ${verifyCommand}`,\n );\n }\n\n await writeTextToStdout(`${lines.join(\"\\n\")}\\n`);\n}\n\nfunction formatJobChapterLabel(\n job: BuildJob,\n chapter: JobChapterReference | undefined,\n): string {\n return chapter === undefined\n ? `[unavailable; internal id ${job.chapterId}]`\n : formatChapterLabel(chapter);\n}\n\nfunction formatJobChapterListLabel(\n job: BuildJob,\n chapter: JobChapterReference | undefined,\n): string {\n return chapter === undefined\n ? `[unavailable; internal id ${job.chapterId}]`\n : `${chapter.title ?? \"[untitled]\"} ${chapter.locatedUri}`;\n}\n\nfunction formatChapterLabel(\n chapter: Pick<JobChapterReference, \"title\" | \"uri\">,\n): string {\n return chapter.title === null || chapter.title === undefined\n ? chapter.uri\n : `${JSON.stringify(chapter.title)} (${chapter.uri})`;\n}\n\nfunction formatChapterJSON(\n chapter: JobChapterReference,\n): Record<string, unknown> {\n return {\n locatedUri: chapter.locatedUri,\n title: chapter.title,\n uri: chapter.uri,\n };\n}\n\nfunction createJobChapterReference(\n job: BuildJob,\n chapter: ChapterEntry,\n): JobChapterReference {\n return createJobChapterReferenceFromPath(\n requireJobResourcePath(job, \"archive\", \"archivePath\"),\n chapter,\n );\n}\n\nfunction createJobChapterReferenceFromPath(\n archivePath: string,\n chapter: ChapterEntry,\n): JobChapterReference {\n return {\n locatedUri: formatLocatedChapterUri(archivePath, chapter.path),\n title: chapter.title,\n uri: chapter.uri,\n };\n}\n\nasync function resolveJobChapters(\n jobs: readonly BuildJob[],\n): Promise<ReadonlyMap<string, JobChapterReference>> {\n const jobsByArchive = new Map<string, BuildJob[]>();\n for (const job of jobs) {\n const archivePath = requireJobResourcePath(job, \"archive\", \"archivePath\");\n const grouped = jobsByArchive.get(archivePath) ?? [];\n grouped.push(job);\n jobsByArchive.set(archivePath, grouped);\n }\n const entries = (\n await Promise.all(\n [...jobsByArchive].map(async ([archivePath, archiveJobs]) => {\n try {\n let chapters: readonly ChapterEntry[] = [];\n await new WikiGraphArchiveFile(\n new NodeFile(archivePath),\n ).readDocument(async (document) => {\n chapters = await listChapters(document);\n });\n const chaptersById = new Map(\n chapters.map((chapter) => [chapter.chapterId, chapter]),\n );\n\n return archiveJobs.flatMap((job) => {\n const chapter = chaptersById.get(job.chapterId);\n\n return chapter === undefined\n ? []\n : [\n [\n job.jobId,\n createJobChapterReferenceFromPath(archivePath, chapter),\n ] as const,\n ];\n });\n } catch {\n return [];\n }\n }),\n )\n ).flat();\n\n return new Map(entries);\n}\n\nasync function resolveJobChapter(\n job: BuildJob,\n): Promise<JobChapterReference | undefined> {\n return (await resolveJobChapters([job])).get(job.jobId);\n}\n\nfunction getJobResourcePath(\n job: BuildJob,\n resourceKey: \"archive\" | \"cache\" | \"events\" | \"log\" | \"workspace\",\n legacyKey:\n | \"archivePath\"\n | \"cachePath\"\n | \"eventsPath\"\n | \"logPath\"\n | \"workspacePath\",\n): string | undefined {\n const record = job as unknown as Record<string, unknown>;\n const resource = record[resourceKey];\n if (resource !== undefined) {\n return getNodeResourcePath(resource as BuildJob[typeof resourceKey]);\n }\n const legacyPath = record[legacyKey];\n if (typeof legacyPath === \"string\") return legacyPath;\n return undefined;\n}\n\nfunction requireJobResourcePath(\n job: BuildJob,\n resourceKey: \"archive\" | \"cache\" | \"events\" | \"log\" | \"workspace\",\n legacyKey:\n | \"archivePath\"\n | \"cachePath\"\n | \"eventsPath\"\n | \"logPath\"\n | \"workspacePath\",\n): string {\n const path = getJobResourcePath(job, resourceKey, legacyKey);\n if (path !== undefined) return path;\n throw new TypeError(`Build job is missing ${resourceKey}`);\n}\n","import {\n addBuildJob,\n listChapters,\n type BuildJob,\n type ChapterEntry,\n} from \"wiki-graph-core\";\nimport { WikiGraphArchiveFile } from \"wiki-graph-core\";\n\nimport type { CLIQueueArguments } from \"../../args/index.js\";\nimport type { CLIConfig } from \"../../runtime/config.js\";\nimport { isCLIQueueAutostartEnabled } from \"../../runtime/context.js\";\nimport { spawnInternalChild } from \"../../runtime/internal-child.js\";\nimport { createQueueAddEstimate } from \"./estimate.js\";\nimport { writeArchiveAddSummary } from \"./output.js\";\nimport { NodeFile } from \"../../runtime/node-platform.js\";\n\nexport async function addChapterJob(\n args: CLIQueueArguments,\n chapterId: number,\n): Promise<BuildJob> {\n return await addBuildJob({\n archive: new NodeFile(args.archivePath!),\n boost: args.boost ?? false,\n chapterId,\n ...(args.llmJSON === undefined ? {} : { llmJSON: args.llmJSON }),\n ...(args.prompt === undefined ? {} : { prompt: args.prompt }),\n target: args.target ?? \"reading-summary\",\n });\n}\n\nexport async function addArchiveJobs(\n args: CLIQueueArguments,\n config: CLIConfig,\n): Promise<void> {\n const created: Array<{\n readonly chapter: ChapterEntry;\n readonly job: BuildJob;\n }> = [];\n const skipped: Array<{\n readonly chapter: ChapterEntry;\n readonly reason: string;\n }> = [];\n\n await new WikiGraphArchiveFile(new NodeFile(args.archivePath!)).readDocument(\n async (document) => {\n const chapterIdSet =\n args.chapterIds === undefined ? undefined : new Set(args.chapterIds);\n\n for (const chapter of await listChapters(document)) {\n if (\n chapterIdSet !== undefined &&\n !chapterIdSet.has(chapter.chapterId)\n ) {\n continue;\n }\n if (chapter.stage === \"planned\") {\n skipped.push({\n chapter,\n reason: \"planned\",\n });\n continue;\n }\n const target = args.target ?? \"reading-summary\";\n if (target === \"index-embedding-summary\") {\n const summary = await document.readSummary(chapter.chapterId);\n if (summary === undefined || summary.trim() === \"\") {\n skipped.push({\n chapter,\n reason: \"missing summary\",\n });\n continue;\n }\n }\n if (target === \"knowledge-graph\" || target === \"reading-graph\") {\n const artifact = await document.indexArtifacts.get(\n chapter.chapterId,\n \"fts\",\n );\n const revision = await document.serials.getRevision(\n chapter.chapterId,\n );\n if (artifact?.sourceRevision !== revision) {\n skipped.push({\n chapter,\n reason: \"missing current FTS index artifact\",\n });\n continue;\n }\n }\n\n try {\n created.push({\n chapter,\n job: await addChapterJob(args, chapter.chapterId),\n });\n } catch (error) {\n skipped.push({\n chapter,\n reason: error instanceof Error ? error.message : String(error),\n });\n }\n }\n },\n );\n\n await writeArchiveAddSummary({\n archivePath: args.archivePath!,\n created,\n ...(created.length === 0\n ? {}\n : {\n estimate: createQueueAddEstimate({\n chapters: created.map((item) => item.chapter),\n config,\n target: args.target ?? \"reading-summary\",\n }),\n }),\n json: args.json ?? false,\n skipped,\n });\n}\n\nexport async function assertQueueAddReady(\n args: CLIQueueArguments,\n chapterId: number,\n): Promise<void> {\n let chapter: ChapterEntry | undefined;\n await new WikiGraphArchiveFile(new NodeFile(args.archivePath!)).readDocument(\n async (document) => {\n chapter = (await listChapters(document)).find(\n (entry) => entry.chapterId === chapterId,\n );\n },\n );\n\n if (chapter === undefined) {\n throw new Error(`Chapter ${chapterId} does not exist.`);\n }\n\n await new WikiGraphArchiveFile(new NodeFile(args.archivePath!)).read(\n async (digest) => {\n if ((await digest.readChapterStage(chapterId)) === \"planned\") {\n throw new Error(\n `Chapter ${chapter!.uri} is planned. Set source before queueing a build job.`,\n );\n }\n },\n );\n\n const target = args.target ?? \"reading-summary\";\n if (\n target !== \"index-embedding-summary\" &&\n target !== \"knowledge-graph\" &&\n target !== \"reading-graph\"\n ) {\n return;\n }\n\n await new WikiGraphArchiveFile(new NodeFile(args.archivePath!)).readDocument(\n async (document) => {\n if (target === \"index-embedding-summary\") {\n const summary = await document.readSummary(chapterId);\n if (summary === undefined || summary.trim() === \"\") {\n throw new Error(\n `Chapter ${chapter!.uri} has no summary. Build a reading summary before queueing a summary embedding index artifact job.`,\n );\n }\n }\n if (target === \"knowledge-graph\" || target === \"reading-graph\") {\n const artifact = await document.indexArtifacts.get(chapterId, \"fts\");\n const revision = await document.serials.getRevision(chapterId);\n if (artifact?.sourceRevision !== revision) {\n throw new Error(\n `Chapter ${chapter!.uri} needs a current FTS index artifact before queueing ${target}.`,\n );\n }\n }\n },\n );\n}\n\nexport async function readQueueAddChapter(\n args: CLIQueueArguments,\n chapterId: number,\n): Promise<ChapterEntry> {\n let matched: ChapterEntry | undefined;\n\n await new WikiGraphArchiveFile(new NodeFile(args.archivePath!)).readDocument(\n async (document) => {\n matched = (await listChapters(document)).find(\n (chapter) => chapter.chapterId === chapterId,\n );\n },\n );\n\n if (matched === undefined) {\n throw new Error(`Chapter ${chapterId} does not exist.`);\n }\n\n return matched;\n}\n\nexport function assertBuildCostAccepted(args: CLIQueueArguments): void {\n if (args.acceptCost === true) {\n return;\n }\n\n throw new Error(\n \"Generation tasks can call an LLM, consume tokens, incur provider charges, and run for minutes to hours on large archives. Run `wg <archive-uri> inspect`, then rerun `wg wikg://local/job add` with --accept-cost if the cost and wait time are acceptable.\",\n );\n}\n\nexport function tryStartQueueWorker(): void {\n if (!isCLIQueueAutostartEnabled()) {\n return;\n }\n\n const child = spawnInternalChild(\"queue-worker\", {\n detached: true,\n });\n\n child.unref();\n}\n","import { readFile } from \"fs/promises\";\nimport { Readable } from \"stream\";\n\nimport type { DirectoryDocument, ReadonlyDocument } from \"wiki-graph-core\";\nimport {\n addBuildJob,\n addChapter,\n applyChapterTree,\n assertNoActiveBuildJobConflicts,\n assertNoActiveBuildJobs,\n formatLocatedChapterUri,\n getChapterTree,\n listChapters,\n moveChapter,\n parseChapterTreeInput,\n removeChapter,\n resetChapter,\n resolveChapterPathReadonly,\n setChapterSource,\n setChapterSummary,\n setChapterTitle,\n parseSourceTextJsonl,\n WikiGraphArchiveFile,\n type BuildJobTarget,\n type ChapterTree,\n type ChapterTreeApplyResult,\n type ChapterDetails,\n type ChapterEntry,\n type IndexArtifactKind,\n} from \"wiki-graph-core\";\nimport { NodeFile } from \"../../runtime/node-platform.js\";\n\nimport type { CLIArchiveChapterArguments } from \"../../args/index.js\";\nimport type { RenderTreeNode } from \"../../support/index.js\";\nimport {\n parseLocatedWikiGraphUri,\n renderTreeText,\n readTextStreamFromStdin,\n writeTextToStdout,\n} from \"../../support/index.js\";\nimport { formatCLIJSON } from \"../../support/index.js\";\nimport { tryStartQueueWorker } from \"../queue/add.js\";\nimport { writeJobSummary } from \"../queue/output.js\";\nimport { readArchiveDocument, writeArchiveDocument } from \"./run/document.js\";\nimport { resolveArchiveRuntimeLocation } from \"./run/uri.js\";\n\nexport async function runArchiveChapterCommand(\n args: CLIArchiveChapterArguments,\n): Promise<void> {\n switch (args.action) {\n case \"add\":\n await runEditableCommand(args.path, async (document) => {\n const parentChapterId = await resolveOptionalChapterPath(\n document,\n args.parentChapterPath,\n );\n await assertNoActiveBuildJobConflicts({\n archive: new NodeFile(args.path),\n operation: \"Adding chapter\",\n scope: { kind: \"archive\" },\n });\n let details = await addChapter(document, {\n ...(parentChapterId === undefined ? {} : { parentChapterId }),\n ...(args.title === undefined ? {} : { title: args.title }),\n });\n\n if (args.inputPath !== undefined) {\n details = await setChapterSource(\n document,\n details.chapterId,\n Readable.from([await readRequiredSourceText(args)]),\n );\n }\n\n await writeChapterDetails(details, args.json ?? false, {\n locatedUri: formatChapterCommandUri(args.path, details.path),\n });\n });\n return;\n case \"list\":\n await readArchiveDocument(args.path, async (document) => {\n await writeChapterList(\n await listChapters(document),\n args.json ?? false,\n );\n });\n return;\n case \"get-index-artifact\":\n await readArchiveDocument(args.path, async (document) => {\n const chapterId = await resolveRequiredChapterPath(\n document,\n args.chapterPath,\n );\n await writeIndexArtifactStatus(\n document,\n chapterId,\n requireIndexArtifactKind(args.indexArtifactKind),\n args.json ?? false,\n );\n });\n return;\n case \"build-index-artifact\": {\n const chapter = await readArchiveDocument(args.path, async (document) => {\n const chapterId = await resolveRequiredChapterPath(\n document,\n args.chapterPath,\n );\n const matched = (await listChapters(document)).find(\n (entry) => entry.chapterId === chapterId,\n );\n\n if (matched === undefined) {\n throw new Error(`Chapter internal id ${chapterId} does not exist.`);\n }\n return matched;\n });\n const job = await addBuildJob({\n archive: new NodeFile(args.path),\n chapterId: chapter.chapterId,\n target: requireIndexArtifactTarget(args.indexArtifactTarget),\n });\n\n tryStartQueueWorker();\n await writeJobSummary(job, {\n chapter,\n json: args.json ?? false,\n watch: true,\n });\n return;\n }\n case \"delete-index-artifact\":\n await writeArchiveDocument(args.path, async (document) => {\n const chapterId = await resolveRequiredChapterPath(\n document,\n args.chapterPath,\n );\n const kind = requireIndexArtifactKind(args.indexArtifactKind);\n\n await document.indexArtifacts.delete(chapterId, kind);\n if (args.json === true) {\n await writeTextToStdout(\n formatCLIJSON({\n chapterId,\n deleted: true,\n kind,\n }),\n );\n return;\n }\n await writeTextToStdout(\n `Deleted ${formatIndexArtifactKind(kind)} index artifact for chapter ${chapterId}.\\n`,\n );\n });\n return;\n case \"move\":\n await runEditableCommand(args.path, async (document) => {\n const chapterId = await resolveRequiredChapterPath(\n document,\n args.chapterPath,\n );\n const afterChapterId = await resolveOptionalChapterPath(\n document,\n args.afterChapterPath,\n );\n const beforeChapterId = await resolveOptionalChapterPath(\n document,\n args.beforeChapterPath,\n );\n const parentChapterId = await resolveOptionalChapterPath(\n document,\n args.parentChapterPath,\n );\n await assertNoActiveBuildJobConflicts({\n archive: new NodeFile(args.path),\n operation: \"Moving chapter\",\n scope: { kind: \"archive\" },\n });\n const details = await moveChapter(document, chapterId, {\n ...(afterChapterId === undefined\n ? {}\n : { afterChapterId: afterChapterId }),\n ...(beforeChapterId === undefined\n ? {}\n : { beforeChapterId: beforeChapterId }),\n ...(args.first === undefined ? {} : { first: args.first }),\n ...(args.last === undefined ? {} : { last: args.last }),\n ...(args.moveToRoot === undefined ? {} : { root: args.moveToRoot }),\n ...(parentChapterId === undefined ? {} : { parentChapterId }),\n });\n\n await writeChapterDetails(details, args.json ?? false);\n });\n return;\n case \"remove\":\n await runEditableCommand(args.path, async (document) => {\n const chapterId = await resolveRequiredChapterPath(\n document,\n args.chapterPath,\n );\n await assertNoActiveBuildJobConflicts({\n archive: new NodeFile(args.path),\n operation: \"Removing chapter\",\n scope: { kind: \"archive\" },\n });\n await removeChapter(document, chapterId, {\n recursive: args.recursive ?? false,\n });\n if (args.json === true) {\n await writeTextToStdout(\n formatCLIJSON({\n removed: true,\n uri: `wikg://chapter/${args.chapterPath}`,\n }),\n );\n return;\n }\n await writeTextToStdout(\n `Removed chapter wikg://chapter/${args.chapterPath}.\\n`,\n );\n });\n return;\n case \"reset\":\n await runEditableCommand(args.path, async (document) => {\n const chapterId = await resolveRequiredChapterPath(\n document,\n args.chapterPath,\n );\n await assertResetAllowed(args.path, chapterId, args.resetStage!);\n const details = await resetChapter(\n document,\n chapterId,\n args.resetStage!,\n );\n\n await writeChapterDetails(details, args.json ?? false);\n });\n return;\n case \"set-source\":\n await runEditableCommand(args.path, async (document) => {\n const chapterId = await resolveRequiredChapterPath(\n document,\n args.chapterPath,\n );\n await assertNoActiveBuildJobs({\n archive: new NodeFile(args.path),\n chapterIds: [chapterId],\n operation: \"Setting chapter source\",\n });\n const sourceText = await readRequiredSourceText(args);\n const parsed =\n args.inputFormat === \"jsonl\"\n ? parseSourceTextJsonl(sourceText)\n : undefined;\n const details = await setChapterSource(\n document,\n chapterId,\n Readable.from([parsed?.text ?? sourceText]),\n parsed === undefined ? {} : { provenance: parsed.provenance },\n );\n\n await writeChapterDetails(details, args.json ?? false);\n });\n return;\n case \"set-summary\":\n await runEditableCommand(args.path, async (document) => {\n const chapterId = await resolveRequiredChapterPath(\n document,\n args.chapterPath,\n );\n await assertNoActiveBuildJobs({\n archive: new NodeFile(args.path),\n chapterIds: [chapterId],\n operation: \"Setting chapter summary\",\n requiresTarget: \"reading-summary\",\n });\n const details = await setChapterSummary(\n document,\n chapterId,\n await readContentText(args),\n );\n\n await writeChapterDetails(details, args.json ?? false);\n });\n return;\n case \"set-title\":\n await runEditableCommand(args.path, async (document) => {\n const chapterId = await resolveRequiredChapterPath(\n document,\n args.chapterPath,\n );\n await assertNoActiveBuildJobs({\n archive: new NodeFile(args.path),\n chapterIds: [chapterId],\n operation: \"Setting chapter title\",\n });\n const details = await setChapterTitle(\n document,\n chapterId,\n args.clearTitle === true ? null : args.title,\n );\n\n await writeChapterDetails(details, false);\n });\n return;\n case \"tree\":\n if (args.treeAction === \"apply\") {\n await runEditableCommand(\n args.path,\n async (document) => {\n if (args.dryRun !== true) {\n await assertNoActiveBuildJobConflicts({\n archive: new NodeFile(args.path),\n operation: \"Changing chapter tree\",\n scope: { kind: \"archive\" },\n });\n }\n await writeChapterTreeApplyResult(\n await applyChapterTree(\n document,\n parseChapterTreeInput(JSON.parse(await readContentText(args))),\n { dryRun: args.dryRun ?? false },\n ),\n args.dryRun ?? false,\n );\n },\n { markLibraryDirty: args.dryRun !== true },\n );\n return;\n }\n\n await readArchiveDocument(args.path, async (document) => {\n await writeChapterTree(\n await getChapterTree(document),\n args.json ?? false,\n );\n });\n return;\n }\n}\n\nasync function resolveRequiredChapterPath(\n document: ReadonlyDocument,\n chapterPath: string | undefined,\n): Promise<number> {\n if (chapterPath === undefined) {\n throw new Error(\"Missing chapter path.\");\n }\n return await resolveChapterPathReadonly(document, chapterPath);\n}\n\nasync function resolveOptionalChapterPath(\n document: ReadonlyDocument,\n chapterPath: string | undefined,\n): Promise<number | undefined> {\n return chapterPath === undefined\n ? undefined\n : await resolveChapterPathReadonly(document, chapterPath);\n}\n\nfunction requireIndexArtifactKind(\n kind: IndexArtifactKind | undefined,\n): IndexArtifactKind {\n if (kind === undefined) {\n throw new Error(\"Missing index artifact kind.\");\n }\n\n return kind;\n}\n\nfunction requireIndexArtifactTarget(\n target: BuildJobTarget | undefined,\n): BuildJobTarget {\n if (target === undefined) {\n throw new Error(\"Missing index artifact build target.\");\n }\n\n return target;\n}\n\nasync function writeIndexArtifactStatus(\n document: ReadonlyDocument,\n chapterId: number,\n kind: IndexArtifactKind,\n json: boolean,\n): Promise<void> {\n const [artifact, revision] = await Promise.all([\n document.indexArtifacts.get(chapterId, kind),\n document.serials.getRevision(chapterId),\n ]);\n const status = {\n chapterId,\n current: artifact?.sourceRevision === revision,\n kind,\n missing: artifact === undefined,\n revision,\n ...(artifact === undefined\n ? {}\n : {\n artifact: {\n createdAt: artifact.createdAt,\n metadata: artifact.metadata,\n sourceRevision: artifact.sourceRevision,\n },\n }),\n };\n\n if (json) {\n await writeTextToStdout(formatCLIJSON(status));\n return;\n }\n\n const state =\n artifact === undefined\n ? \"missing\"\n : artifact.sourceRevision === revision\n ? \"current\"\n : \"outdated\";\n\n await writeTextToStdout(\n [\n `Chapter: ${chapterId}`,\n `Index artifact: ${formatIndexArtifactKind(kind)}`,\n `State: ${state}`,\n ...(artifact === undefined\n ? []\n : [\n `Source revision: ${artifact.sourceRevision}`,\n `Current revision: ${revision}`,\n ]),\n ].join(\"\\n\") + \"\\n\",\n );\n}\n\nfunction formatIndexArtifactKind(kind: IndexArtifactKind): string {\n switch (kind) {\n case \"fts\":\n return \"FTS\";\n case \"embedding-source\":\n return \"source embedding\";\n case \"embedding-summary\":\n return \"summary embedding\";\n }\n}\n\nasync function runEditableCommand(\n path: string,\n operation: (document: DirectoryDocument) => Promise<void> | void,\n options: { readonly markLibraryDirty?: boolean } = {},\n): Promise<void> {\n if (options.markLibraryDirty === false) {\n const location = await resolveArchiveRuntimeLocation(path);\n await new WikiGraphArchiveFile(location.archiveFile).write(operation);\n return;\n }\n\n await writeArchiveDocument(path, operation);\n}\n\nasync function readContentText(\n args: Pick<CLIArchiveChapterArguments, \"inputPath\" | \"inputValue\">,\n): Promise<string> {\n if (args.inputValue !== undefined && args.inputPath !== undefined) {\n throw new Error(\"Choose either a positional value or --input, not both.\");\n }\n if (args.inputValue !== undefined) {\n return args.inputValue;\n }\n if (args.inputPath === \"-\") {\n let content = \"\";\n\n for await (const chunk of readTextStreamFromStdin()) {\n content += chunk;\n }\n\n return content;\n }\n if (args.inputPath !== undefined) {\n return await readFile(args.inputPath, \"utf8\");\n }\n throw new Error(\n \"Missing input. Pass a positional value, use --input <path>, or use --input - for stdin.\",\n );\n}\n\nasync function readRequiredSourceText(\n args: Pick<CLIArchiveChapterArguments, \"inputPath\" | \"inputValue\">,\n): Promise<string> {\n const content = await readContentText(args);\n\n if (content.trim() === \"\") {\n throw new Error(\n \"Source input is empty. Pass non-empty positional text, use --input <path>, or use --input - for stdin.\",\n );\n }\n\n return content;\n}\n\nasync function writeChapterDetails(\n details: ChapterDetails,\n json: boolean,\n options: { readonly locatedUri?: string } = {},\n): Promise<void> {\n if (json) {\n await writeTextToStdout(\n formatCLIJSON({\n childCount: details.childCount,\n graphReady: details.graphReady,\n hasSummary: details.hasSummary,\n ...(options.locatedUri === undefined\n ? {}\n : { locatedUri: options.locatedUri }),\n sourceUnits: details.fragmentCount,\n stage: formatStage(details.stage),\n title: details.title,\n uri: details.uri,\n }),\n );\n return;\n }\n\n const lines = [\n `Chapter: ${details.uri}`,\n ...(options.locatedUri === undefined\n ? []\n : [`Located URI: ${options.locatedUri}`]),\n `Title: ${details.title ?? \"[untitled]\"}`,\n `Stage: ${formatStage(details.stage)}`,\n `Source Units: ${details.fragmentCount}`,\n `Children: ${details.childCount}`,\n `Graph: ${details.graphReady ? \"yes\" : \"no\"}`,\n `Summary: ${details.hasSummary ? \"yes\" : \"no\"}`,\n ];\n\n await writeTextToStdout(`${lines.join(\"\\n\")}\\n`);\n}\n\nfunction formatChapterCommandUri(\n archiveLocator: string,\n chapterPath: string,\n): string {\n if (archiveLocator.startsWith(\"wikg://lib/\")) {\n return `${archiveLocator.replace(/\\/+$/u, \"\")}/chapter/${chapterPath}`;\n }\n if (archiveLocator.startsWith(\"wikg://\")) {\n const parsed = parseLocatedWikiGraphUri(archiveLocator);\n\n if (parsed.archivePath !== undefined) {\n return formatLocatedChapterUri(parsed.archivePath, chapterPath);\n }\n }\n\n return formatLocatedChapterUri(archiveLocator, chapterPath);\n}\n\nasync function writeChapterList(\n entries: readonly ChapterEntry[],\n json: boolean,\n): Promise<void> {\n if (json) {\n await writeTextToStdout(\n formatCLIJSON({\n chapters: entries.map((entry) => ({\n uri: entry.uri,\n title: entry.title,\n stage: formatStage(entry.stage),\n })),\n }),\n );\n return;\n }\n\n if (entries.length === 0) {\n await writeTextToStdout(\"No chapters.\\n\");\n return;\n }\n\n await writeTextToStdout(\n `${entries\n .map(\n (entry) =>\n `${\" \".repeat(entry.depth)}[${formatStage(entry.stage)}] ${entry.title ?? \"[untitled]\"} (${entry.uri})`,\n )\n .join(\"\\n\")}\\n`,\n );\n}\n\nasync function writeChapterTree(\n tree: ChapterTree,\n json: boolean,\n): Promise<void> {\n if (json) {\n await writeTextToStdout(formatCLIJSON(tree));\n return;\n }\n\n if (tree.chapters.length === 0) {\n await writeTextToStdout(\"No chapters.\\n\");\n return;\n }\n\n await writeTextToStdout(\n renderTreeText(tree.chapters.map(formatChapterTreeRenderNode)),\n );\n}\n\nfunction formatChapterTreeRenderNode(\n node: ChapterTree[\"chapters\"][number],\n): RenderTreeNode {\n return {\n children: node.children.map(formatChapterTreeRenderNode),\n label: `${formatChapterTreeTitle(node.title)} (${formatChapterTreeKey(node.uri)})`,\n };\n}\n\nfunction formatChapterTreeKey(uri: string): string {\n return uri.split(\"/\").at(-1) ?? uri;\n}\n\nfunction formatChapterTreeTitle(title: string | null): string {\n return title ?? \"[untitled]\";\n}\n\nasync function writeChapterTreeApplyResult(\n result: ChapterTreeApplyResult,\n dryRun: boolean,\n): Promise<void> {\n const lines = [\n dryRun ? \"Dry run: chapter tree not changed.\" : \"Applied chapter tree.\",\n `Changed: ${result.changed ? \"yes\" : \"no\"}`,\n `Moved: ${result.moved.length}`,\n `Renamed: ${result.renamed.length}`,\n `Unchanged: ${result.unchanged}`,\n ];\n\n for (const move of result.moved) {\n lines.push(\n `Move ${move.oldUri} [index ${move.oldIndex}] -> ${move.newUri} [index ${move.newIndex}]`,\n );\n }\n for (const rename of result.renamed) {\n lines.push(\n `Rename ${rename.uri}: ${formatTitle(rename.oldTitle)} -> ${formatTitle(rename.newTitle)}`,\n );\n }\n\n await writeTextToStdout(`${lines.join(\"\\n\")}\\n`);\n}\n\nfunction formatTitle(title: string | null): string {\n return title === null ? \"null\" : JSON.stringify(title);\n}\n\nfunction formatStage(stage: ChapterEntry[\"stage\"]): string {\n switch (stage) {\n case \"planned\":\n return \"planned\";\n case \"sourced\":\n return \"source\";\n case \"graphed\":\n return \"reading-graph\";\n case \"summarized\":\n return \"reading-summary\";\n }\n}\n\nasync function assertResetAllowed(\n archivePath: string,\n chapterId: number,\n stage: NonNullable<CLIArchiveChapterArguments[\"resetStage\"]>,\n): Promise<void> {\n switch (stage) {\n case \"planned\":\n await assertNoActiveBuildJobs({\n archive: new NodeFile(archivePath),\n chapterIds: [chapterId],\n operation: \"Resetting chapter to planned\",\n });\n return;\n case \"sourced\":\n await assertNoActiveBuildJobs({\n archive: new NodeFile(archivePath),\n chapterIds: [chapterId],\n operation: \"Resetting chapter graph\",\n requiresTarget: \"reading-graph\",\n });\n await assertNoActiveBuildJobs({\n archive: new NodeFile(archivePath),\n chapterIds: [chapterId],\n operation: \"Resetting chapter summary\",\n requiresTarget: \"reading-summary\",\n });\n return;\n case \"graphed\":\n await assertNoActiveBuildJobs({\n archive: new NodeFile(archivePath),\n chapterIds: [chapterId],\n operation: \"Resetting chapter summary\",\n requiresTarget: \"reading-summary\",\n });\n return;\n }\n}\n","import {\n deleteArchiveSearchSessions,\n isArchiveSearchIndexCurrent,\n listArchiveQueryableChapterIds,\n readSearchIndexCapabilityStatus,\n rebuildArchiveSearchIndex,\n WikiGraphArchiveFile,\n} from \"wiki-graph-core\";\n\nimport type { CLIArchiveIndexArguments } from \"../../args/index.js\";\nimport { writeTextToStdout } from \"../../support/index.js\";\nimport { formatCLIJSON } from \"../../support/index.js\";\nimport {\n ProgressOutputWriter,\n type ProgressCounter,\n} from \"../../runtime/index.js\";\nimport { resolveArchiveRuntimeLocation } from \"./run/uri.js\";\n\nconst INDEX_PROGRESS_OUTPUT_INTERVAL_MS = 6_000;\n\nexport async function runArchiveIndexCommand(\n args: CLIArchiveIndexArguments,\n): Promise<void> {\n switch (args.action) {\n case \"get\":\n await readIndexCache(args);\n return;\n case \"sync\":\n await syncIndexCache(args);\n return;\n case \"clean\":\n await cleanIndexCache(args);\n return;\n }\n}\n\nasync function readIndexCache(args: CLIArchiveIndexArguments): Promise<void> {\n const location = await resolveArchiveRuntimeLocation(args.archivePath);\n\n await new WikiGraphArchiveFile(location.archiveFile).readDocument(\n async (document) => {\n await writeIndexOutput(args, {\n capabilities: await readSearchIndexCapabilityStatus(document),\n current: await isArchiveSearchIndexCurrent(document),\n });\n },\n );\n}\n\nasync function syncIndexCache(args: CLIArchiveIndexArguments): Promise<void> {\n const location = await resolveArchiveRuntimeLocation(args.archivePath);\n const writer = new ProgressOutputWriter({\n jsonl: args.jsonl ?? false,\n throttleMs: INDEX_PROGRESS_OUTPUT_INTERVAL_MS,\n });\n\n await new WikiGraphArchiveFile(location.archiveFile).write(\n async (document) => {\n await writer.write({\n json: { type: \"started\" },\n kind: \"lifecycle\",\n text: \"index cache sync started\\nsteps: checking -> collecting -> clearing -> indexing-text -> indexing-dense -> finalizing\",\n });\n await writer.write({\n json: { phase: \"checking\", type: \"status_snapshot\" },\n kind: \"status\",\n phase: \"checking\",\n });\n const options =\n args.skipUnindexed === true\n ? { chapters: await listArchiveQueryableChapterIds(document) }\n : {};\n\n if (options.chapters?.length === 0) {\n throw new Error(\n \"Wiki Graph index cache is not ready. No chapters have a current FTS artifact or source embedding artifact.\",\n );\n }\n\n if (await isArchiveSearchIndexCurrent(document, options)) {\n await writer.write({\n json: { type: \"already-current\" },\n kind: \"lifecycle\",\n text: \"already current\",\n });\n } else {\n await rebuildArchiveSearchIndex(\n document,\n async (event) => {\n await writer.write({\n counters:\n event.done === undefined || event.total === undefined\n ? []\n : [formatIndexCounter(event)],\n json: {\n counters:\n event.done === undefined || event.total === undefined\n ? []\n : [formatIndexCounter(event)],\n phase: event.phase,\n type: \"status_snapshot\",\n },\n kind: \"status\",\n phase: event.phase,\n });\n },\n options,\n );\n }\n\n await writer.write({\n json: { type: \"completed\" },\n kind: \"lifecycle\",\n text: \"index cache synced\",\n });\n await writer.write({\n json: { type: \"succeeded\" },\n kind: \"lifecycle\",\n text: \"succeeded\",\n });\n },\n { searchIndexWritebackPolicy: \"cache\" },\n );\n await deleteArchiveSearchSessions(args.archivePath);\n}\n\nasync function cleanIndexCache(args: CLIArchiveIndexArguments): Promise<void> {\n const location = await resolveArchiveRuntimeLocation(args.archivePath);\n\n await new WikiGraphArchiveFile(location.archiveFile).write(\n async (document) => {\n await document.deleteSearchIndexDatabase();\n await writeIndexOutput(args, {\n capabilities: { dense: { current: false }, indexes: \"missing\" },\n current: false,\n });\n },\n { searchIndexWritebackPolicy: \"cache\" },\n );\n await deleteArchiveSearchSessions(args.archivePath);\n}\n\nfunction formatIndexCounter(input: {\n readonly done?: number;\n readonly total?: number;\n readonly unit?: \"chapter\" | \"object\" | \"sentence\" | \"vector\";\n}): ProgressCounter {\n return {\n done: input.done ?? 0,\n name: formatIndexCounterName(input.unit),\n total: input.total ?? 0,\n unit: formatIndexUnit(input.unit),\n };\n}\n\nfunction formatIndexCounterName(\n unit: \"chapter\" | \"object\" | \"sentence\" | \"vector\" | undefined,\n): string {\n switch (unit) {\n case \"chapter\":\n return \"chapters\";\n case \"object\":\n return \"objects\";\n case \"sentence\":\n return \"sentences\";\n case \"vector\":\n return \"vectors\";\n case undefined:\n return \"items\";\n }\n}\n\nfunction formatIndexUnit(\n unit: \"chapter\" | \"object\" | \"sentence\" | \"vector\" | undefined,\n): string {\n switch (unit) {\n case \"chapter\":\n return \"chapters\";\n case \"object\":\n return \"objects\";\n case \"sentence\":\n return \"sentences\";\n case \"vector\":\n return \"vectors\";\n case undefined:\n return \"items\";\n }\n}\n\nasync function writeIndexOutput(\n args: CLIArchiveIndexArguments,\n payload: {\n readonly capabilities: Awaited<\n ReturnType<typeof readSearchIndexCapabilityStatus>\n >;\n readonly current: boolean;\n },\n): Promise<void> {\n if (args.json === true) {\n await writeTextToStdout(formatCLIJSON(payload));\n return;\n }\n\n await writeTextToStdout(\n [\n `Status: ${formatArchiveIndexStatus(payload)}`,\n `Enabled indexes: ${payload.capabilities.indexes}`,\n `Dense current: ${payload.capabilities.dense.current ? \"yes\" : \"no\"}`,\n ...(payload.capabilities.dense.model === undefined\n ? []\n : [`Dense model: ${payload.capabilities.dense.model}`]),\n ...(payload.capabilities.dense.dimensions === undefined\n ? []\n : [`Dense dimensions: ${payload.capabilities.dense.dimensions}`]),\n \"\",\n ].join(\"\\n\"),\n );\n}\n\nfunction formatArchiveIndexStatus(input: {\n readonly capabilities: Awaited<\n ReturnType<typeof readSearchIndexCapabilityStatus>\n >;\n readonly current: boolean;\n}): \"current\" | \"missing\" | \"outdated\" {\n if (input.current) {\n return \"current\";\n }\n if (input.capabilities.indexes === \"missing\") {\n return \"missing\";\n }\n return \"outdated\";\n}\n","import { WikiGraph } from \"wiki-graph-core\";\nimport type { BookMeta } from \"wiki-graph-core\";\n\nimport type {\n ArchiveMetaPatch,\n CLIArchiveCoverArguments,\n CLIArchiveMetadataArguments,\n} from \"../../args/index.js\";\nimport { writeBinaryToStdout, writeTextToStdout } from \"../../support/index.js\";\nimport { formatCLIJSON } from \"../../support/index.js\";\nimport { writeArchiveDocument } from \"./run/document.js\";\nimport { resolveArchiveRuntimeLocation } from \"./run/uri.js\";\nimport { NodeFile } from \"../../runtime/node-platform.js\";\n\nexport async function runArchiveMetaCommand(\n args: CLIArchiveMetadataArguments,\n): Promise<void> {\n if (args.metaPatch !== undefined) {\n await updateArchiveMeta(args.inputPath, args.metaPatch);\n return;\n }\n\n const app = new WikiGraph({});\n const location = await resolveArchiveRuntimeLocation(args.inputPath);\n await app.openSession(new NodeFile(location.archivePath), async (digest) => {\n await writeArchiveMeta(await digest.readMeta(), {\n json: args.json ?? false,\n });\n });\n}\n\nexport async function runArchiveCoverCommand(\n args: CLIArchiveCoverArguments,\n): Promise<void> {\n const app = new WikiGraph({});\n const location = await resolveArchiveRuntimeLocation(args.inputPath);\n await app.openSession(new NodeFile(location.archivePath), async (digest) => {\n if (process.stdout.isTTY === true) {\n throw new Error(\n \"Refusing to write binary cover data to an interactive terminal. Redirect stdout or pipe it.\",\n );\n }\n\n const cover = await digest.readCover();\n\n if (cover === undefined) {\n throw new Error(\"Document cover is missing.\");\n }\n\n await writeBinaryToStdout(cover.data);\n });\n}\n\nasync function updateArchiveMeta(\n path: string,\n patch: ArchiveMetaPatch,\n): Promise<void> {\n await writeArchiveDocument(path, async (document) => {\n const meta = await document.readBookMeta();\n\n if (meta === undefined) {\n throw new Error(\"Archive metadata is missing.\");\n }\n\n const updatedMeta = applyArchiveMetaPatch(meta, patch);\n\n await document.replaceBookMeta(updatedMeta);\n await writeArchiveMeta(updatedMeta, { json: false });\n });\n}\n\nasync function writeArchiveMeta(\n meta: BookMeta | undefined,\n options: { readonly json: boolean },\n): Promise<void> {\n if (options.json) {\n await writeTextToStdout(formatCLIJSON(formatMetaJSON(meta)));\n return;\n }\n\n if (meta === undefined) {\n await writeTextToStdout(\"No document metadata is available.\\n\");\n return;\n }\n\n const lines: string[] = [];\n\n appendMetaLines(lines, meta);\n\n await writeTextToStdout(`${lines.join(\"\\n\")}\\n`);\n}\n\nfunction applyArchiveMetaPatch(\n meta: BookMeta,\n patch: ArchiveMetaPatch,\n): BookMeta {\n return {\n ...meta,\n title: patch.clearTitle === true ? null : (patch.title ?? meta.title),\n authors:\n patch.clearAuthors === true\n ? []\n : patch.authors === undefined\n ? meta.authors\n : [...patch.authors],\n language:\n patch.clearLanguage === true ? null : (patch.language ?? meta.language),\n identifier:\n patch.clearIdentifier === true\n ? null\n : (patch.identifier ?? meta.identifier),\n publisher:\n patch.clearPublisher === true\n ? null\n : (patch.publisher ?? meta.publisher),\n publishedAt:\n patch.clearPublishedAt === true\n ? null\n : (patch.publishedAt ?? meta.publishedAt),\n description:\n patch.clearDescription === true\n ? null\n : (patch.description ?? meta.description),\n };\n}\n\nfunction appendMetaLines(lines: string[], meta: BookMeta | undefined): void {\n lines.push(`Source Format: ${meta?.sourceFormat ?? \"[none]\"}`);\n lines.push(`Title: ${meta?.title ?? \"[none]\"}`);\n lines.push(\n `Authors: ${\n meta?.authors.length === undefined || meta.authors.length === 0\n ? \"[none]\"\n : meta.authors.join(\", \")\n }`,\n );\n lines.push(`Language: ${meta?.language ?? \"[none]\"}`);\n lines.push(`Identifier: ${meta?.identifier ?? \"[none]\"}`);\n lines.push(`Publisher: ${meta?.publisher ?? \"[none]\"}`);\n lines.push(`Published At: ${meta?.publishedAt ?? \"[none]\"}`);\n lines.push(`Description: ${meta?.description ?? \"[none]\"}`);\n}\n\nfunction formatMetaJSON(meta: BookMeta | undefined): object {\n return {\n authors: meta?.authors ?? [],\n description: meta?.description ?? null,\n identifier: meta?.identifier ?? null,\n language: meta?.language ?? null,\n publishedAt: meta?.publishedAt ?? null,\n publisher: meta?.publisher ?? null,\n sourceFormat: meta?.sourceFormat ?? null,\n title: meta?.title ?? null,\n };\n}\n","import type { GcRunReport } from \"wiki-graph-core/gc\";\n\nimport type { CLIGcArguments } from \"../args/index.js\";\nimport { runInternalChildJSON } from \"../runtime/internal-child.js\";\nimport { writeTextToStdout } from \"../support/index.js\";\nimport { formatCLIJSON } from \"../support/index.js\";\n\nexport async function runGcCommand(args: CLIGcArguments): Promise<void> {\n const report = await runInternalChildJSON<GcRunReport>(\"gc-worker\", {\n args: [\n ...(args.dryRun === true ? [\"--dry-run\"] : []),\n ...(args.force === true ? [\"--force\"] : []),\n ],\n });\n\n if (args.json === true) {\n await writeTextToStdout(formatCLIJSON(report));\n return;\n }\n\n if (report.skipped) {\n await writeTextToStdout(\"GC skipped: another GC run is active.\\n\");\n return;\n }\n\n await writeTextToStdout(\n [\n `GC completed.`,\n `Scanned: ${report.scanned}`,\n `Removed: ${report.removed}`,\n `Freed: ${formatBytes(report.freedBytes)}`,\n ...report.jobs.map((job) =>\n job.error === undefined\n ? `- ${job.name}: scanned ${job.scanned}, removed ${job.removed}, freed ${formatBytes(job.freedBytes)}`\n : `- ${job.name}: failed: ${job.error}`,\n ),\n \"\",\n ].join(\"\\n\"),\n );\n}\n\nfunction formatBytes(bytes: number): string {\n if (bytes < 1024) {\n return `${bytes} B`;\n }\n if (bytes < 1024 * 1024) {\n return `${(bytes / 1024).toFixed(1)} KB`;\n }\n if (bytes < 1024 * 1024 * 1024) {\n return `${(bytes / 1024 / 1024).toFixed(1)} MB`;\n }\n\n return `${(bytes / 1024 / 1024 / 1024).toFixed(1)} GB`;\n}\n","import type { CLILegacyArguments } from \"../args/index.js\";\nimport { migrateLegacySdpubToWikg } from \"wiki-graph-core\";\nimport { resolve } from \"path\";\nimport { NodeFile } from \"../runtime/node-platform.js\";\n\nexport async function runLegacyCommand(\n args: CLILegacyArguments,\n): Promise<void> {\n switch (args.action) {\n case \"migrate\": {\n process.stderr.write(\n \"`wg legacy migrate` is deprecated. Use `wg maintenance upgrade <sdpub-path>`.\\n\",\n );\n const outputPath = resolve(\n args.outputPath ?? defaultWikgOutputPath(args.inputPath),\n );\n await migrateLegacySdpubToWikg(\n new NodeFile(resolve(args.inputPath)),\n new NodeFile(outputPath),\n );\n\n process.stdout.write(`Wrote ${outputPath}\\n`);\n return;\n }\n }\n}\n\nfunction defaultWikgOutputPath(inputPath: string): string {\n return inputPath.toLowerCase().endsWith(\".sdpub\")\n ? `${inputPath.slice(0, -\".sdpub\".length)}.wikg`\n : `${inputPath}.wikg`;\n}\n","import { homedir } from \"os\";\nimport { join, resolve } from \"path\";\n\nimport { getCLICwd, getCLIStateDir } from \"./context.js\";\n\nexport function isWikiGraphHomeTarget(target: string): boolean {\n if (target === \"home\" || target === \"~/.wikigraph\") return true;\n\n const configuredHome = resolve(\n getCLIStateDir() ?? join(homedir(), \".wikigraph\"),\n );\n return resolve(getCLICwd(), target) === configuredHome;\n}\n","import {\n parseWikiGraphLibraryUri,\n upgradeWikiGraphMaintenanceTarget,\n type WikiGraphMaintenanceUpgradeResult,\n} from \"wiki-graph-core\";\n\nimport type { CLIMaintenanceArguments } from \"../args/index.js\";\nimport { isWikiGraphHomeTarget } from \"../runtime/home-target.js\";\nimport { formatCLIJSON, writeTextToStdout } from \"../support/index.js\";\nimport { NodeFile } from \"../runtime/node-platform.js\";\nimport { resolve } from \"path\";\n\nexport async function runMaintenanceCommand(\n args: CLIMaintenanceArguments,\n): Promise<void> {\n switch (args.action) {\n case \"upgrade\": {\n if (args.outputPath !== undefined || args.target.endsWith(\".sdpub\")) {\n throw new Error(\n \"Legacy sdpub migration is available through `wg legacy migrate`.\",\n );\n }\n const result = await upgradeWikiGraphMaintenanceTarget(\n parseMaintenanceTarget(args.target),\n );\n await writeTextToStdout(\n args.json === true\n ? formatCLIJSON(result)\n : formatMaintenanceUpgradeResult(result),\n );\n return;\n }\n }\n}\n\nfunction formatMaintenanceUpgradeResult(\n result: WikiGraphMaintenanceUpgradeResult,\n): string {\n switch (result.kind) {\n case \"home\":\n return `Home ${result.status} (schema v${result.schemaVersionBefore} -> v${result.schemaVersionAfter})\\n`;\n case \"archive\":\n return `Archive ${result.status}: ${result.fileName} (schema v${result.schemaVersionBefore} -> v${result.schemaVersionAfter})\\n`;\n case \"lib\": {\n const lines = [\n `Library ${result.status}: ${result.library.uri}`,\n `upgraded: ${result.upgraded.length}`,\n `already current: ${result.skipped.length}`,\n ];\n if (result.failed !== undefined) {\n lines.push(`failed: ${result.failed.uri} (${result.failed.message})`);\n }\n return `${lines.join(\"\\n\")}\\n`;\n }\n }\n}\n\nfunction parseMaintenanceTarget(target: string) {\n if (isWikiGraphHomeTarget(target)) {\n return { kind: \"home\" as const };\n }\n if (target.startsWith(\"wikg://lib\")) {\n const parsed = parseWikiGraphLibraryUri(target);\n if (parsed === undefined || parsed.kind === \"archive\") {\n throw new Error(`Invalid Wiki Graph library upgrade target: ${target}`);\n }\n return { kind: \"library\" as const, target: parsed };\n }\n if (!target.endsWith(\".wikg\")) {\n throw new Error(`Unsupported maintenance upgrade target: ${target}`);\n }\n return { file: new NodeFile(resolve(target)), kind: \"archive\" as const };\n}\n","import { Writable } from \"stream\";\nimport { createInterface } from \"readline/promises\";\n\nimport { generateText } from \"ai\";\n\nimport type { CLILocalConfigArguments } from \"../args/index.js\";\nimport type { CLIProvider } from \"../runtime/config.js\";\nimport {\n DEFAULT_WIKISPINE_FETCH_ENDPOINT,\n testWikispineRuntime,\n type WikispineProvider,\n} from \"wiki-graph-core\";\nimport { buildLLMOptions } from \"../runtime/llm.js\";\nimport { nodeWikispineCommandRunner } from \"../runtime/wikispine.js\";\nimport { embedQueryText, readEmbeddingConfig } from \"../runtime/embedding.js\";\nimport { setCLIExitCode } from \"../runtime/context.js\";\nimport { writeTextToStderr, writeTextToStdout } from \"../support/index.js\";\nimport { formatCLIJSON } from \"../support/index.js\";\nimport {\n clearLocalConfigSection,\n deleteLocalConfigValue,\n maskLocalConfigSection,\n putLocalConfigValue,\n readLocalConfigSection,\n replaceLocalConfigSection,\n type LocalConfigObject,\n} from \"../runtime/local-config.js\";\n\nexport async function runLocalConfigCommand(\n args: CLILocalConfigArguments,\n): Promise<void> {\n switch (args.action) {\n case \"get\":\n await writeConfigObject(\n args.section,\n await readLocalConfigSection(args.section),\n );\n return;\n case \"set\":\n await writeConfigObject(\n args.section,\n await replaceLocalConfigSection(\n args.section,\n mergeMaskedSecretsForSet(\n args.section,\n readJSONInput(args),\n await readLocalConfigSection(args.section),\n ),\n ),\n );\n return;\n case \"put\": {\n const key = requireConfigKey(args.key);\n const value =\n args.secret === true\n ? await readSecretValue(key)\n : await readPutValue(args);\n\n await writeConfigObject(\n args.section,\n await putLocalConfigValue(args.section, key, value),\n );\n return;\n }\n case \"delete\":\n await writeConfigObject(\n args.section,\n await deleteLocalConfigValue(args.section, requireConfigKey(args.key)),\n );\n return;\n case \"clear\":\n await writeConfigObject(\n args.section,\n await clearLocalConfigSection(args.section),\n );\n return;\n case \"test\":\n await runConfigTest(args);\n return;\n }\n}\n\nasync function runConfigTest(args: CLILocalConfigArguments): Promise<void> {\n switch (args.section) {\n case \"llm\":\n await runLLMConfigTest(args);\n return;\n case \"wikispine\":\n await runWikispineConfigTest(args);\n return;\n case \"embeddings\":\n await runEmbeddingConfigTest(args);\n return;\n default:\n throw new Error(\n \"Only wikg://local/config/llm, wikg://local/config/embeddings, and wikg://local/config/wikispine support test.\",\n );\n }\n}\n\nasync function runEmbeddingConfigTest(\n args: CLILocalConfigArguments,\n): Promise<void> {\n const startedAt = Date.now();\n const embedding = await readEmbeddingConfig();\n\n try {\n const result = await embedQueryText(\n \"Wiki Graph embedding connectivity test.\",\n embedding,\n );\n const output = {\n dimensions: result.dimensions,\n durationMs: Date.now() - startedAt,\n model: result.model,\n ok: true,\n provider: result.provider,\n ...(result.usage?.tokens === undefined\n ? {}\n : { tokens: result.usage.tokens }),\n };\n\n if (args.json === true) {\n await writeTextToStdout(formatCLIJSON(output));\n return;\n }\n\n await writeTextToStdout(\n [\n \"Embedding connection ok.\",\n `Provider: ${output.provider}`,\n `Model: ${output.model}`,\n `Dimensions: ${output.dimensions}`,\n \"\",\n ].join(\"\\n\"),\n );\n } catch (error) {\n const output = {\n durationMs: Date.now() - startedAt,\n error: {\n message: error instanceof Error ? error.message : String(error),\n },\n model: embedding.model,\n ok: false,\n provider: embedding.provider,\n };\n\n if (args.json === true) {\n await writeTextToStdout(formatCLIJSON(output));\n setCLIExitCode(1);\n return;\n }\n\n throw error;\n }\n}\n\nasync function runLLMConfigTest(args: CLILocalConfigArguments): Promise<void> {\n if (args.section !== \"llm\") {\n throw new Error(\"Only wikg://local/config/llm supports test.\");\n }\n\n const startedAt = Date.now();\n const llm = await readLocalConfigSection(\"llm\");\n\n try {\n const llmConfig = {\n ...(typeof llm.apiKey === \"string\" ? { apiKey: llm.apiKey } : {}),\n ...(typeof llm.baseURL === \"string\" ? { baseURL: llm.baseURL } : {}),\n ...(typeof llm.model === \"string\" ? { model: llm.model } : {}),\n ...(typeof llm.name === \"string\" ? { name: llm.name } : {}),\n ...(typeof llm.provider === \"string\"\n ? { provider: parseLLMProvider(llm.provider) }\n : {}),\n };\n const options = buildLLMOptions({\n llm: llmConfig,\n });\n const result = await generateText({\n maxRetries: 0,\n messages: [\n {\n content: \"Reply with exactly: ok\",\n role: \"user\",\n },\n ],\n model: options.model,\n temperature: 0,\n });\n const output = {\n durationMs: Date.now() - startedAt,\n model: llmConfig.model,\n ok: true,\n provider: llmConfig.provider,\n response: result.text.trim(),\n };\n\n if (args.json === true) {\n await writeTextToStdout(formatCLIJSON(output));\n return;\n }\n\n await writeTextToStdout(\n [\n \"LLM connection ok.\",\n `Provider: ${output.provider}`,\n `Model: ${output.model}`,\n `Response: ${output.response}`,\n \"\",\n ].join(\"\\n\"),\n );\n } catch (error) {\n const output = {\n durationMs: Date.now() - startedAt,\n error: {\n message: error instanceof Error ? error.message : String(error),\n },\n model: typeof llm.model === \"string\" ? llm.model : undefined,\n ok: false,\n provider: typeof llm.provider === \"string\" ? llm.provider : undefined,\n };\n\n if (args.json === true) {\n await writeTextToStdout(formatCLIJSON(output));\n setCLIExitCode(1);\n return;\n }\n\n throw error;\n }\n}\n\nasync function runWikispineConfigTest(\n args: CLILocalConfigArguments,\n): Promise<void> {\n const startedAt = Date.now();\n const wikispine = await readLocalConfigSection(\"wikispine\");\n\n try {\n const provider = parseWikispineProvider(wikispine.provider);\n const result = await testWikispineRuntime({\n provider,\n ...(provider === \"cli\"\n ? { commandRunner: nodeWikispineCommandRunner }\n : {}),\n });\n const output = {\n durationMs: result.durationMs,\n ...(provider === \"fetch\"\n ? {\n endpoint: DEFAULT_WIKISPINE_FETCH_ENDPOINT,\n }\n : {}),\n ...(result.metadata === undefined ? {} : { metadata: result.metadata }),\n ok: true,\n provider,\n };\n\n if (args.json === true) {\n await writeTextToStdout(formatCLIJSON(output));\n return;\n }\n\n await writeTextToStdout(\n [\n \"WikiSpine connection ok.\",\n `Provider: ${output.provider}`,\n ...(output.endpoint === undefined\n ? []\n : [`Endpoint: ${output.endpoint}`]),\n ...(output.metadata === undefined\n ? []\n : [\n `Runtime: ${output.metadata.format}`,\n `Surfaces: ${output.metadata.surface_count}`,\n `QIDs: ${output.metadata.qid_count}`,\n ]),\n \"\",\n ].join(\"\\n\"),\n );\n } catch (error) {\n const output = {\n durationMs: Date.now() - startedAt,\n error: {\n message: error instanceof Error ? error.message : String(error),\n },\n ok: false,\n provider:\n typeof wikispine.provider === \"string\" ? wikispine.provider : undefined,\n };\n\n if (args.json === true) {\n await writeTextToStdout(formatCLIJSON(output));\n setCLIExitCode(1);\n return;\n }\n\n throw error;\n }\n}\n\nasync function writeConfigObject(\n section: CLILocalConfigArguments[\"section\"],\n value: LocalConfigObject,\n): Promise<void> {\n await writeTextToStdout(\n formatCLIJSON(maskLocalConfigSection(section, value)),\n );\n}\n\nfunction readPutValue(args: CLILocalConfigArguments): unknown {\n if (args.inputValue !== undefined && args.jsonInputValue !== undefined) {\n throw new Error(\n \"Choose only one input source: positional value or --json value.\",\n );\n }\n if (args.jsonInputValue !== undefined) {\n return parseJSONInput(args.jsonInputValue);\n }\n if (args.inputValue !== undefined) {\n return args.inputValue;\n }\n\n throw new Error(\"Missing config value.\");\n}\n\nfunction readJSONInput(args: CLILocalConfigArguments): LocalConfigObject {\n const raw = args.jsonInputValue ?? args.inputValue;\n\n if (raw === undefined) {\n throw new Error(\"Config set requires a JSON object.\");\n }\n\n const parsed = parseJSONInput(raw);\n\n if (parsed === null || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n throw new Error(\"Config set requires a JSON object.\");\n }\n\n return parsed as LocalConfigObject;\n}\n\nexport function mergeMaskedSecretsForSet(\n section: CLILocalConfigArguments[\"section\"],\n input: LocalConfigObject,\n current: LocalConfigObject,\n): LocalConfigObject {\n if (\n (section !== \"llm\" && section !== \"embeddings\") ||\n input.apiKey === undefined\n ) {\n return input;\n }\n if (typeof input.apiKey === \"string\" && /^\\*+$/u.test(input.apiKey)) {\n return current.apiKey === undefined\n ? omitKey(input, \"apiKey\")\n : { ...input, apiKey: current.apiKey };\n }\n\n throw new Error(\n `apiKey is sensitive and cannot be set from JSON. Use \\`wg wikg://local/config/${section} put apiKey --secret\\`.`,\n );\n}\n\nfunction omitKey(input: LocalConfigObject, key: string): LocalConfigObject {\n const { [key]: _removed, ...rest } = input;\n\n return rest;\n}\n\nfunction parseJSONInput(raw: string): unknown {\n try {\n return JSON.parse(raw);\n } catch (error) {\n throw new Error(\n `Invalid JSON input: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n}\n\nfunction requireConfigKey(key: string | undefined): string {\n const normalized = key?.trim() ?? \"\";\n\n if (normalized === \"\") {\n throw new Error(\"Missing config key.\");\n }\n\n return normalized;\n}\n\nfunction parseLLMProvider(value: string): CLIProvider {\n switch (value) {\n case \"anthropic\":\n case \"google\":\n case \"openai\":\n case \"openai-compatible\":\n return value;\n default:\n throw new Error(\n `Invalid llm.provider: ${value}. Expected anthropic, google, openai, or openai-compatible.`,\n );\n }\n}\n\nfunction parseWikispineProvider(value: unknown): WikispineProvider {\n switch (value) {\n case \"cli\":\n case \"fetch\":\n return value;\n default:\n throw new Error(\n \"Missing wikispine.provider. Configure `wikg://local/config/wikispine` with provider `cli` or `fetch`.\",\n );\n }\n}\n\nasync function readSecretValue(key: string): Promise<string> {\n if (process.stdin.isTTY !== true) {\n throw new Error(`${key} requires an interactive terminal.`);\n }\n\n const mutedOutput = new Writable({\n write(_chunk, _encoding, callback) {\n callback();\n },\n });\n const readline = createInterface({\n input: process.stdin,\n output: mutedOutput,\n terminal: true,\n });\n\n try {\n await writeTextToStderr(`${key}: `);\n const value = await readline.question(\"\");\n await writeTextToStderr(\"\\n\");\n if (value.trim() === \"\") {\n throw new Error(`${key} cannot be empty.`);\n }\n\n return value.trim();\n } finally {\n readline.close();\n }\n}\n","import { mkdir, readFile } from \"fs/promises\";\n\nimport {\n addWikiGraphLibraryArchive,\n assertWikiGraphLibrarySchemaCurrent,\n clearWikiGraphLibraryMetadata,\n createWikiGraphLibrary,\n deleteWikiGraphLibraryMetadataKey,\n getWikiGraphLibraryMetadata,\n getWikiGraphLibraryArchive,\n listWikiGraphLibraryObjects,\n listWikiGraphLibraries,\n listWikiGraphLibraryArchives,\n moveWikiGraphLibraryArchive,\n cleanWikiGraphLibraryIndex,\n formatWikiGraphLibraryUri,\n putWikiGraphLibraryMetadata,\n readWikiGraphLibraryIndexState,\n rebuildWikiGraphLibraryIndex,\n rebindWikiGraphLibrary,\n removeWikiGraphLibrary,\n removeWikiGraphLibraryArchive,\n replaceWikiGraphLibraryMetadata,\n resolveWikiGraphLibrary,\n scanWikiGraphLibrary,\n type File,\n} from \"wiki-graph-core\";\nimport type { CLILibraryArguments } from \"../args/index.js\";\nimport type { RenderTreeNode } from \"../support/index.js\";\nimport {\n formatCLIJSON,\n renderTreeText,\n readTextStreamFromStdin,\n writeTextToStdout,\n} from \"../support/index.js\";\nimport { createCollectionFindResult } from \"./archive-command/run/index.js\";\nimport {\n getNodeResourcePath,\n NodeDirectory,\n NodeFile,\n} from \"../runtime/node-platform.js\";\nimport { writeFindHits } from \"./archive-output/index.js\";\nimport {\n ProgressOutputWriter,\n type ProgressCounter,\n} from \"../runtime/index.js\";\n\nconst INDEX_PROGRESS_OUTPUT_INTERVAL_MS = 6_000;\n\nexport async function runLibraryCommand(\n args: CLILibraryArguments,\n): Promise<void> {\n if (\n args.action !== \"add\" &&\n args.action !== \"create\" &&\n args.action !== \"scan\" &&\n args.action !== \"rebind\"\n ) {\n await assertWikiGraphLibrarySchemaCurrent(args.target);\n }\n\n switch (args.action) {\n case \"add\": {\n if (args.inputPath === undefined) {\n throw new Error(\"Missing --input <path> for library add.\");\n }\n await writeLibraryArchive(\n await addWikiGraphLibraryArchive({\n inputFile: new NodeFile(args.inputPath),\n target: args.target,\n ...(args.to === undefined ? {} : { to: args.to }),\n }),\n args.json ?? false,\n );\n return;\n }\n case \"create\": {\n if (args.path === undefined) {\n throw new Error(\"Missing --path <folder> for library create.\");\n }\n await mkdir(args.path);\n const library = await createWikiGraphLibrary({\n folder: new NodeDirectory(args.path),\n });\n await writeLibrary(library, args.json ?? false);\n return;\n }\n case \"list\": {\n if (args.target.kind === \"registry\") {\n await writeLibraries(\n await listWikiGraphLibraries(),\n args.json ?? false,\n );\n return;\n }\n if (args.target.kind === \"archive-collection\") {\n await writeLibraryArchives(\n await listWikiGraphLibraryArchives(args.target),\n args.json ?? false,\n );\n return;\n }\n await writeLibraryScopeCollection(args.target, args.json ?? false);\n return;\n }\n case \"scan\": {\n await writeScanResult(\n \"scan\",\n async () => await scanWikiGraphLibrary(args.target),\n args.json ?? false,\n args.jsonl ?? false,\n );\n return;\n }\n case \"rebind\": {\n const folderPath = args.path;\n if (folderPath === undefined) {\n throw new Error(\"Missing path value for library path set.\");\n }\n await writeScanResult(\n \"path set\",\n async () =>\n await rebindWikiGraphLibrary({\n folder: new NodeDirectory(folderPath),\n target: args.target,\n }),\n args.json ?? false,\n args.jsonl ?? false,\n );\n return;\n }\n case \"archive-tree\": {\n await writeLibraryArchiveTree(\n await listWikiGraphLibraryArchives(args.target),\n {\n ...(args.depth === undefined ? {} : { depth: args.depth }),\n json: args.json ?? false,\n ...(args.parent === undefined ? {} : { parent: args.parent }),\n },\n );\n return;\n }\n case \"get-index\": {\n await writeLibraryIndexState(\n await readWikiGraphLibraryIndexState(args.target),\n args.json ?? false,\n );\n return;\n }\n case \"sync-index\": {\n const writer = new ProgressOutputWriter({\n jsonl: args.jsonl ?? false,\n throttleMs: INDEX_PROGRESS_OUTPUT_INTERVAL_MS,\n });\n\n await writer.write({\n json: { type: \"started\" },\n kind: \"lifecycle\",\n text: \"library index cache sync started\\nsteps: collecting -> clearing -> indexing-text -> indexing-objects -> indexing-dense -> finalizing\",\n });\n const state = await rebuildWikiGraphLibraryIndex(\n args.target,\n async (event) => {\n const counters =\n event.done === undefined || event.total === undefined\n ? []\n : [formatIndexCounter(event)];\n\n await writer.write({\n counters,\n json: {\n counters,\n phase: event.phase,\n type: \"status_snapshot\",\n },\n kind: \"status\",\n phase: event.phase,\n });\n },\n );\n await writer.write({\n json: { status: state.status, type: \"completed\" },\n kind: \"lifecycle\",\n text: \"library index cache synced\",\n });\n await writer.write({\n json: { type: \"succeeded\" },\n kind: \"lifecycle\",\n text: \"succeeded\",\n });\n return;\n }\n case \"clean-index\": {\n await writeLibraryIndexState(\n await cleanWikiGraphLibraryIndex(args.target),\n args.json ?? false,\n );\n return;\n }\n case \"remove\": {\n if (args.target.kind === \"archive\") {\n await writeLibraryArchive(\n await removeWikiGraphLibraryArchive({ target: args.target }),\n args.json ?? false,\n \"Removed library archive\",\n );\n return;\n }\n const library = await removeWikiGraphLibrary(args.target);\n await writeTextToStdout(\n args.json === true\n ? formatCLIJSON({ removed: library.uri })\n : `Removed library registry: ${library.uri}\\n`,\n );\n return;\n }\n case \"get\": {\n if (args.target.kind === \"path\") {\n await writeLibraryPath(\n await resolveWikiGraphLibrary(args.target),\n args.json ?? false,\n );\n return;\n }\n if (args.target.kind === \"archive-path\") {\n await writeLibraryArchivePath(\n await getWikiGraphLibraryArchive({ ...args.target, kind: \"archive\" }),\n args.json ?? false,\n );\n return;\n }\n if (args.target.kind === \"metadata\") {\n await writeMetadataMap(\n await getWikiGraphLibraryMetadata(args.target),\n args.json ?? false,\n );\n return;\n }\n if (args.target.kind === \"archive\") {\n await writeLibraryArchivePage(\n await getWikiGraphLibraryArchive(args.target),\n args.json ?? false,\n );\n return;\n }\n if (args.target.kind === \"archive-collection\") {\n await writeLibraryArchives(\n await listWikiGraphLibraryArchives(args.target),\n args.json ?? false,\n );\n return;\n }\n await writeLibraryScopeCollection(args.target, args.json ?? false);\n return;\n }\n case \"set\": {\n if (args.target.kind === \"archive-path\") {\n if (args.to === undefined) {\n throw new Error(\"Missing path value for library archive path set.\");\n }\n await writeLibraryArchive(\n await moveWikiGraphLibraryArchive({\n target: { ...args.target, kind: \"archive\" },\n to: args.to,\n }),\n args.json ?? false,\n \"Moved library archive\",\n );\n return;\n }\n const value = await readMetadataInput(args, { jsonRequired: true });\n await writeMetadataMap(\n await replaceWikiGraphLibraryMetadata(\n args.target,\n parseMetadataMap(value),\n ),\n args.json ?? false,\n );\n return;\n }\n case \"put\": {\n await writeMetadataMap(\n await putWikiGraphLibraryMetadata(\n args.target,\n normalizeMetadataKey(args.key),\n await readMetadataInput(args, { jsonRequired: false }),\n ),\n args.json ?? false,\n );\n return;\n }\n case \"delete\": {\n await writeMetadataMap(\n await deleteWikiGraphLibraryMetadataKey(\n args.target,\n normalizeMetadataKey(args.key),\n ),\n args.json ?? false,\n );\n return;\n }\n case \"clear\": {\n await writeMetadataMap(\n await clearWikiGraphLibraryMetadata(args.target),\n args.json ?? false,\n );\n return;\n }\n }\n}\n\nasync function writeLibrary(\n library: Awaited<ReturnType<typeof createWikiGraphLibrary>>,\n json: boolean,\n): Promise<void> {\n if (json) {\n await writeTextToStdout(\n formatCLIJSON({\n uri: library.uri,\n id: library.publicId,\n folderPath: getNodeResourcePath(library.folder),\n isDefault: library.isDefault,\n stagingPath: getNodeResourcePath(library.staging),\n createdAt: library.createdAt,\n updatedAt: library.updatedAt,\n }),\n );\n return;\n }\n await writeTextToStdout(`${library.uri}\\n`);\n}\n\nasync function writeLibraries(\n libraries: Awaited<ReturnType<typeof listWikiGraphLibraries>>,\n json: boolean,\n): Promise<void> {\n if (json) {\n await writeTextToStdout(\n formatCLIJSON({\n items: libraries.map((library) => ({\n uri: library.uri,\n id: library.publicId,\n path: getNodeResourcePath(library.folder),\n isDefault: library.isDefault,\n })),\n }),\n );\n return;\n }\n await writeTextToStdout(\n libraries\n .map((library) =>\n [\n library.uri,\n library.publicId,\n getNodeResourcePath(library.folder),\n library.isDefault ? \"default\" : \"\",\n ].join(\"\\t\"),\n )\n .join(\"\\n\") + (libraries.length === 0 ? \"\" : \"\\n\"),\n );\n}\n\nasync function writeLibraryPath(\n library: Awaited<ReturnType<typeof resolveWikiGraphLibrary>>,\n json: boolean,\n): Promise<void> {\n if (json) {\n await writeTextToStdout(\n formatCLIJSON({\n uri: `${library.uri}/path`,\n path: getNodeResourcePath(library.folder),\n }),\n );\n return;\n }\n await writeTextToStdout(`${getNodeResourcePath(library.folder)}\\n`);\n}\n\nasync function writeLibraryArchivePath(\n archive: Awaited<ReturnType<typeof getWikiGraphLibraryArchive>>,\n json: boolean,\n): Promise<void> {\n if (json) {\n await writeTextToStdout(\n formatCLIJSON({ uri: `${archive.uri}/path`, path: archive.relativePath }),\n );\n return;\n }\n await writeTextToStdout(`${archive.relativePath}\\n`);\n}\n\nasync function writeScanResult(\n label: string,\n operation: () => Promise<Awaited<ReturnType<typeof scanWikiGraphLibrary>>>,\n json: boolean,\n jsonl: boolean,\n): Promise<void> {\n if (jsonl) {\n const writer = new ProgressOutputWriter({ jsonl: true, throttleMs: 0 });\n await writer.write({\n json: { type: \"started\", action: label },\n kind: \"lifecycle\",\n text: `${label} started`,\n });\n const result = await operation();\n for (const archive of result.archives) {\n await writer.write({\n json: {\n type: \"archive\",\n action: label,\n archive: formatLibraryArchiveJSON(archive),\n },\n kind: \"status\",\n phase: label,\n });\n }\n await writer.write({\n json: {\n type: \"completed\",\n action: label,\n archives: result.archives.length,\n },\n kind: \"lifecycle\",\n text: `${label} completed`,\n });\n await writer.write({\n json: { type: \"succeeded\", action: label },\n kind: \"lifecycle\",\n text: \"succeeded\",\n });\n return;\n }\n\n const result = await operation();\n await writeLibraryArchives(result.archives, json);\n}\n\nasync function writeLibraryArchives(\n archives: Awaited<ReturnType<typeof listWikiGraphLibraryArchives>>,\n json: boolean,\n): Promise<void> {\n if (json) {\n await writeTextToStdout(\n formatCLIJSON({ items: archives.map(formatLibraryArchiveJSON) }),\n );\n return;\n }\n await writeTextToStdout(\n archives\n .map((archive) =>\n [archive.uri, archive.relativePath, archive.status].join(\"\\t\"),\n )\n .join(\"\\n\") + (archives.length === 0 ? \"\" : \"\\n\"),\n );\n}\n\nasync function writeLibraryScopeCollection(\n target: Parameters<typeof listWikiGraphLibraryObjects>[0],\n json: boolean,\n): Promise<void> {\n const library = await resolveWikiGraphLibrary(target);\n const baseUri = formatWikiGraphLibraryUri(target.publicId);\n const context = {\n archiveKey: `${baseUri}#scope`,\n archivePath: baseUri,\n continuationKind: \"collection\" as const,\n format: json ? (\"json\" as const) : (\"text\" as const),\n indexScope: { kind: \"library-index\" as const, libraryId: library.id },\n limit: 20,\n types: null,\n };\n\n await writeFindHits(\n createCollectionFindResult(await listWikiGraphLibraryObjects(target)),\n context,\n json ? \"json\" : \"text\",\n );\n}\n\nasync function writeLibraryArchive(\n archive: Awaited<ReturnType<typeof addWikiGraphLibraryArchive>>,\n json: boolean,\n label = \"Added library archive\",\n): Promise<void> {\n if (json) {\n await writeTextToStdout(formatCLIJSON(formatLibraryArchiveJSON(archive)));\n return;\n }\n await writeTextToStdout(\n `${label}: ${archive.uri}\\n${archive.relativePath}\\n`,\n );\n}\n\nasync function writeLibraryArchivePage(\n archive: Awaited<ReturnType<typeof getWikiGraphLibraryArchive>>,\n json: boolean,\n): Promise<void> {\n if (json) {\n await writeTextToStdout(\n formatCLIJSON(formatLibraryArchivePageJSON(archive)),\n );\n return;\n }\n\n await writeTextToStdout(\n [\n `Library archive: ${archive.uri}`,\n `Label: ${archive.relativePath}`,\n `Status: ${archive.status}${archive.exists ? \"\" : \" (missing file)\"}`,\n `Chapter: ${archive.uri}/chapter`,\n `Entity: ${archive.uri}/entity`,\n `Triple: ${archive.uri}/triple`,\n `Inspect: ${archive.uri} inspect`,\n `Metadata path: ${formatArchiveHostPath(archive)}`,\n \"\",\n ].join(\"\\n\"),\n );\n}\n\nfunction formatLibraryArchiveJSON(\n archive: Awaited<ReturnType<typeof addWikiGraphLibraryArchive>>,\n): object {\n return {\n uri: archive.uri,\n id: archive.publicId,\n libraryUri: archive.libraryUri,\n relativePath: archive.relativePath,\n path: formatArchiveHostPath(archive),\n exists: archive.exists,\n status: archive.status,\n lastSeenMutationToken: archive.lastSeenMutationToken,\n lastSeenSize: archive.lastSeenSize,\n lastSeenMtimeMs: archive.lastSeenMtimeMs,\n lastScannedAt: archive.lastScannedAt,\n createdAt: archive.createdAt,\n updatedAt: archive.updatedAt,\n };\n}\n\nfunction formatLibraryArchivePageJSON(\n archive: Awaited<ReturnType<typeof getWikiGraphLibraryArchive>>,\n): object {\n return {\n uri: archive.uri,\n id: archive.publicId,\n libraryUri: archive.libraryUri,\n label: archive.relativePath,\n relativePath: archive.relativePath,\n status: archive.status,\n entries: {\n chapter: `${archive.uri}/chapter`,\n entity: `${archive.uri}/entity`,\n triple: `${archive.uri}/triple`,\n inspect: `${archive.uri} inspect`,\n },\n metadata: {\n path: formatArchiveHostPath(archive),\n exists: archive.exists,\n lastSeenMutationToken: archive.lastSeenMutationToken,\n lastSeenSize: archive.lastSeenSize,\n lastSeenMtimeMs: archive.lastSeenMtimeMs,\n lastScannedAt: archive.lastScannedAt,\n createdAt: archive.createdAt,\n updatedAt: archive.updatedAt,\n },\n };\n}\n\ninterface ArchiveTreeNode {\n readonly children: Map<string, ArchiveTreeNode>;\n readonly name: string;\n readonly path: string;\n archive?: Awaited<ReturnType<typeof getWikiGraphLibraryArchive>>;\n}\n\nasync function writeLibraryArchiveTree(\n archives: Awaited<ReturnType<typeof listWikiGraphLibraryArchives>>,\n options: {\n readonly depth?: number;\n readonly json: boolean;\n readonly parent?: string;\n },\n): Promise<void> {\n const parent = options.parent\n ?.replace(/\\\\/gu, \"/\")\n .replace(/^\\/+|\\/+$/gu, \"\");\n const root: ArchiveTreeNode = { children: new Map(), name: \"\", path: \"\" };\n for (const archive of archives) {\n if (\n parent !== undefined &&\n !isArchiveTreePathSelected(archive.relativePath, parent)\n ) {\n continue;\n }\n insertArchiveTreeNode(root, archive);\n }\n pruneArchiveTreeDepth(root, options.depth, 0);\n\n if (options.json) {\n await writeTextToStdout(\n formatCLIJSON({ items: serializeArchiveTreeNodes(root.children) }),\n );\n return;\n }\n await writeTextToStdout(formatArchiveTreeText(root.children));\n}\n\nfunction isArchiveTreePathSelected(path: string, parent: string): boolean {\n return path === parent || path.startsWith(`${parent.replace(/\\/$/u, \"\")}/`);\n}\n\nfunction insertArchiveTreeNode(\n root: ArchiveTreeNode,\n archive: Awaited<ReturnType<typeof getWikiGraphLibraryArchive>>,\n): void {\n let current = root;\n const parts = archive.relativePath.split(\"/\");\n for (let index = 0; index < parts.length; index += 1) {\n const name = parts[index]!;\n const path = parts.slice(0, index + 1).join(\"/\");\n let child = current.children.get(name);\n if (child === undefined) {\n child = { children: new Map(), name, path };\n current.children.set(name, child);\n }\n current = child;\n }\n current.archive = archive;\n}\n\nfunction pruneArchiveTreeDepth(\n node: ArchiveTreeNode,\n depth: number | undefined,\n level: number,\n): void {\n if (depth === undefined) {\n for (const child of node.children.values()) {\n pruneArchiveTreeDepth(child, depth, level + 1);\n }\n return;\n }\n if (level >= depth) {\n node.children.clear();\n return;\n }\n for (const child of node.children.values()) {\n pruneArchiveTreeDepth(child, depth, level + 1);\n }\n}\n\nfunction serializeArchiveTreeNodes(\n nodes: Map<string, ArchiveTreeNode>,\n): object[] {\n return [...nodes.values()].map((node) => ({\n children: serializeArchiveTreeNodes(node.children),\n name: node.name,\n path: node.path,\n ...(node.archive === undefined ? {} : { uri: node.archive.uri }),\n }));\n}\n\nfunction formatArchiveTreeText(nodes: Map<string, ArchiveTreeNode>): string {\n return renderTreeText([...nodes.values()].map(formatArchiveTreeRenderNode));\n}\n\nfunction formatArchiveTreeRenderNode(node: ArchiveTreeNode): RenderTreeNode {\n return {\n children: [...node.children.values()].map(formatArchiveTreeRenderNode),\n label:\n node.archive === undefined\n ? node.name\n : `${node.name} (${node.archive.uri})`,\n };\n}\n\nasync function writeLibraryIndexState(\n state: Awaited<ReturnType<typeof readWikiGraphLibraryIndexState>>,\n json: boolean,\n): Promise<void> {\n if (json) {\n await writeTextToStdout(formatCLIJSON(state));\n return;\n }\n\n await writeTextToStdout(\n [\n `Status: ${state.status}`,\n ...(state.capabilities === undefined\n ? []\n : [\n `Enabled indexes: ${state.capabilities.indexes}`,\n `Dense current: ${state.capabilities.dense.current ? \"yes\" : \"no\"}`,\n ...(state.capabilities.dense.model === undefined\n ? []\n : [`Dense model: ${state.capabilities.dense.model}`]),\n ...(state.capabilities.dense.dimensions === undefined\n ? []\n : [`Dense dimensions: ${state.capabilities.dense.dimensions}`]),\n ]),\n `Source fingerprint: ${state.sourceFingerprint}`,\n ...(state.fingerprint === undefined\n ? []\n : [`Index fingerprint: ${state.fingerprint}`]),\n `Sources: ${state.sources.length}`,\n \"\",\n ].join(\"\\n\"),\n );\n}\n\nfunction formatIndexCounter(input: {\n readonly done?: number;\n readonly total?: number;\n readonly unit?: \"chapter\" | \"object\" | \"sentence\" | \"vector\";\n}): ProgressCounter {\n const unit =\n input.unit === \"chapter\"\n ? \"chapters\"\n : input.unit === \"sentence\"\n ? \"sentences\"\n : input.unit === \"vector\"\n ? \"vectors\"\n : \"objects\";\n\n return {\n done: input.done ?? 0,\n name: unit,\n total: input.total ?? 0,\n unit,\n };\n}\n\nasync function readMetadataInput(\n args: CLILibraryArguments,\n options: { readonly jsonRequired: boolean },\n): Promise<unknown> {\n const raw = await readRawInput(args);\n if (options.jsonRequired || args.jsonInputValue !== undefined) {\n return parseJSONInput(raw);\n }\n return raw;\n}\n\nasync function readRawInput(args: CLILibraryArguments): Promise<string> {\n const sources = [\n args.inputValue === undefined ? undefined : \"positional value\",\n args.inputPath === undefined ? undefined : \"--input\",\n args.jsonInputValue === undefined ? undefined : \"--json value\",\n ].filter((source): source is string => source !== undefined);\n\n if (sources.length > 1) {\n throw new Error(`Choose only one input source: ${sources.join(\", \")}.`);\n }\n if (args.jsonInputValue !== undefined) {\n return args.jsonInputValue;\n }\n if (args.inputValue !== undefined) {\n return args.inputValue;\n }\n if (args.inputPath === \"-\") {\n let content = \"\";\n for await (const chunk of readTextStreamFromStdin()) {\n content += chunk;\n }\n return content;\n }\n if (args.inputPath !== undefined) {\n return await readFile(args.inputPath, \"utf8\");\n }\n throw new Error(\n \"Missing input. Pass a value, use --input <path>, or use --input - for stdin.\",\n );\n}\n\nfunction parseMetadataMap(value: unknown): Readonly<Record<string, unknown>> {\n if (value === null || typeof value !== \"object\" || Array.isArray(value)) {\n throw new Error(\"Metadata set requires a JSON object.\");\n }\n return value as Readonly<Record<string, unknown>>;\n}\n\nfunction parseJSONInput(raw: string): unknown {\n try {\n return JSON.parse(raw);\n } catch (error) {\n throw new Error(\n `Invalid JSON input: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n}\n\nfunction normalizeMetadataKey(key: string | undefined): string {\n const normalized = key?.trim() ?? \"\";\n if (normalized === \"\") {\n throw new Error(\"Metadata key cannot be empty.\");\n }\n return normalized;\n}\n\nfunction writeMetadataMap(\n map: Readonly<Record<string, unknown>>,\n json: boolean,\n): Promise<void> {\n if (json) {\n return writeTextToStdout(formatCLIJSON(map));\n }\n const lines = Object.entries(map).map(\n ([key, value]) => `${key}: ${formatMetadataTextValue(value)}`,\n );\n return writeTextToStdout(lines.length === 0 ? \"\" : `${lines.join(\"\\n\")}\\n`);\n}\n\nfunction formatMetadataTextValue(value: unknown): string {\n if (Array.isArray(value)) {\n return value.map((item) => String(item)).join(\" \");\n }\n if (value !== null && typeof value === \"object\") {\n return JSON.stringify(value);\n }\n return String(value);\n}\n\nfunction formatArchiveHostPath(archive: {\n readonly file?: File;\n readonly relativePath: string;\n}): string {\n return archive.file === undefined\n ? archive.relativePath\n : getNodeResourcePath(archive.file);\n}\n","import { readFile } from \"fs/promises\";\n\nimport { ObjectMetadataKind, type ObjectMetadataTarget } from \"wiki-graph-core\";\nimport { WikiGraphArchiveFile } from \"wiki-graph-core\";\n\nimport type { CLIObjectMetadataArguments } from \"../args/index.js\";\nimport { writeArchiveDocument } from \"./archive-command/run/document.js\";\nimport { resolveArchiveRuntimeLocation } from \"./archive-command/run/uri.js\";\nimport {\n readTextStreamFromStdin,\n writeTextToStdout,\n} from \"../support/index.js\";\nimport { formatCLIJSON } from \"../support/index.js\";\n\nexport async function runObjectMetadataCommand(\n args: CLIObjectMetadataArguments,\n): Promise<void> {\n const target = parseObjectMetadataTarget(args.objectPath);\n\n switch (args.action) {\n case \"get\": {\n const location = await resolveArchiveRuntimeLocation(args.archivePath);\n await new WikiGraphArchiveFile(location.archiveFile).readDocument(\n async (document) => {\n await writeMetadataMap(\n await document.metadata.getMap(args.objectPath),\n args.json ?? false,\n );\n },\n );\n return;\n }\n case \"set\": {\n const value = await readMetadataInput(args, { jsonRequired: true });\n const map = parseMetadataMap(value);\n\n await writeArchiveDocument(args.archivePath, async (document) => {\n await document.metadata.replaceMap(target, map);\n await writeMetadataMap(\n await document.metadata.getMap(args.objectPath),\n args.json ?? false,\n );\n });\n return;\n }\n case \"put\": {\n const key = normalizeMetadataKey(args.key);\n const value = await readMetadataInput(args, { jsonRequired: false });\n\n await writeArchiveDocument(args.archivePath, async (document) => {\n await document.metadata.put(target, key, value);\n await writeMetadataMap(\n await document.metadata.getMap(args.objectPath),\n args.json ?? false,\n );\n });\n return;\n }\n case \"delete\":\n await writeArchiveDocument(args.archivePath, async (document) => {\n await document.metadata.deleteKey(\n args.objectPath,\n normalizeMetadataKey(args.key),\n );\n await writeMetadataMap(\n await document.metadata.getMap(args.objectPath),\n args.json ?? false,\n );\n });\n return;\n case \"clear\":\n await writeArchiveDocument(args.archivePath, async (document) => {\n await document.metadata.clear(args.objectPath);\n await writeMetadataMap(\n await document.metadata.getMap(args.objectPath),\n args.json ?? false,\n );\n });\n return;\n }\n}\n\nasync function readMetadataInput(\n args: CLIObjectMetadataArguments,\n options: { readonly jsonRequired: boolean },\n): Promise<unknown> {\n const raw = await readRawInput(args);\n\n if (args.json === true || options.jsonRequired) {\n return parseJSONInput(raw);\n }\n\n return raw;\n}\n\nasync function readRawInput(args: CLIObjectMetadataArguments): Promise<string> {\n const sources = [\n args.inputValue === undefined ? undefined : \"positional value\",\n args.inputPath === undefined ? undefined : \"--input\",\n args.jsonInputValue === undefined ? undefined : \"--json value\",\n ].filter((source): source is string => source !== undefined);\n\n if (sources.length > 1) {\n throw new Error(`Choose only one input source: ${sources.join(\", \")}.`);\n }\n if (args.jsonInputValue !== undefined) {\n return args.jsonInputValue;\n }\n if (args.inputValue !== undefined) {\n return args.inputValue;\n }\n if (args.inputPath === \"-\") {\n let content = \"\";\n for await (const chunk of readTextStreamFromStdin()) {\n content += chunk;\n }\n return content;\n }\n if (args.inputPath !== undefined) {\n return await readFile(args.inputPath, \"utf8\");\n }\n throw new Error(\n \"Missing input. Pass a value, use --input <path>, or use --input - for stdin.\",\n );\n}\n\nfunction parseMetadataMap(value: unknown): Readonly<Record<string, unknown>> {\n if (value === null || typeof value !== \"object\" || Array.isArray(value)) {\n throw new Error(\"Metadata set requires a JSON object.\");\n }\n\n return value as Readonly<Record<string, unknown>>;\n}\n\nfunction parseJSONInput(raw: string): unknown {\n try {\n return JSON.parse(raw);\n } catch (error) {\n throw new Error(\n `Invalid JSON input: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n}\n\nfunction normalizeMetadataKey(key: string | undefined): string {\n const normalized = key?.trim() ?? \"\";\n\n if (normalized === \"\") {\n throw new Error(\"Metadata key cannot be empty.\");\n }\n\n return normalized;\n}\n\nfunction writeMetadataMap(\n map: Readonly<Record<string, unknown>>,\n json: boolean,\n): Promise<void> {\n if (json) {\n return writeTextToStdout(formatCLIJSON(map));\n }\n\n return writeTextToStdout(formatMetadataText(map));\n}\n\nfunction formatMetadataText(map: Readonly<Record<string, unknown>>): string {\n const lines = Object.entries(map).map(\n ([key, value]) => `${key}: ${formatMetadataTextValue(value)}`,\n );\n\n if (lines.length === 0) {\n return \"\";\n }\n\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nfunction formatMetadataTextValue(value: unknown): string {\n if (Array.isArray(value)) {\n return value.map((item) => String(item)).join(\" \");\n }\n\n return String(value);\n}\n\nfunction parseObjectMetadataTarget(objectPath: string): ObjectMetadataTarget {\n if (objectPath === \"\") {\n return { kind: ObjectMetadataKind.Archive, objectPath };\n }\n\n const chapterMatch = /^chapter\\/([1-9][0-9]*)(?:\\/.*)?$/u.exec(objectPath);\n if (chapterMatch?.[1] !== undefined) {\n return {\n chapterId: Number(chapterMatch[1]),\n kind: ObjectMetadataKind.Chapter,\n objectPath,\n };\n }\n\n const chunkMatch = /^chunk\\/([1-9][0-9]*)$/u.exec(objectPath);\n if (chunkMatch?.[1] !== undefined) {\n return {\n chunkId: Number(chunkMatch[1]),\n kind: ObjectMetadataKind.Chunk,\n objectPath,\n };\n }\n\n const entityMatch = /^entity\\/(Q[1-9][0-9]*)$/u.exec(objectPath);\n if (entityMatch?.[1] !== undefined) {\n return {\n entityQid: entityMatch[1],\n kind: ObjectMetadataKind.Entity,\n objectPath,\n };\n }\n\n const tripleMatch = /^triple\\/(Q[1-9][0-9]*)\\/([^/]+)\\/(Q[1-9][0-9]*)$/u.exec(\n objectPath,\n );\n if (tripleMatch?.[1] !== undefined) {\n return {\n kind: ObjectMetadataKind.Triple,\n objectPath,\n tripleObjectQid: tripleMatch[3]!,\n triplePredicate: decodeURIComponent(tripleMatch[2]!),\n tripleSubjectQid: tripleMatch[1],\n };\n }\n\n return {\n kind: ObjectMetadataKind.Object,\n objectPath,\n };\n}\n","import {\n getBuildJob,\n readBuildJobEvents,\n type BuildJobEvent,\n type BuildJobProgressCounter,\n type BuildJobState,\n type BuildJobTarget,\n} from \"wiki-graph-core\";\n\nimport {\n ProgressOutputWriter,\n type ProgressCounter,\n type ProgressMetricGroup,\n} from \"../../runtime/index.js\";\n\nconst TERMINAL_STATES = new Set<BuildJobState>([\n \"succeeded\",\n \"failed\",\n \"canceled\",\n]);\nconst PROGRESS_OUTPUT_INTERVAL_MS = 6_000;\n\nexport async function watchBuildJob(\n jobId: string,\n options: {\n readonly from: \"beginning\" | \"now\";\n readonly jsonl: boolean;\n },\n): Promise<void> {\n let seenSeq = 0;\n const writer = new ProgressOutputWriter({\n jsonl: options.jsonl,\n throttleMs: PROGRESS_OUTPUT_INTERVAL_MS,\n });\n\n if (options.from === \"now\") {\n const job = await getBuildJob(jobId);\n const events = await readBuildJobEvents(job);\n\n seenSeq = events.at(-1)?.seq ?? 0;\n }\n\n while (true) {\n const job = await getBuildJob(jobId);\n const events = (await readBuildJobEvents(job)).filter(\n (event) => event.seq > seenSeq,\n );\n\n for (const event of events) {\n seenSeq = Math.max(seenSeq, event.seq);\n await writer.write(formatWatchOutputEvent(event));\n }\n\n if (TERMINAL_STATES.has(job.state)) {\n return;\n }\n\n await delay(1_000);\n }\n}\n\nfunction formatWatchOutputEvent(event: BuildJobEvent) {\n switch (event.type) {\n case \"status_snapshot\": {\n const tokenMetrics = formatProgressTokenMetrics(event.tokens);\n return {\n counters: event.counters.map(formatProgressCounter),\n json: event,\n kind: \"status\" as const,\n ...(tokenMetrics === undefined ? {} : { metricGroups: [tokenMetrics] }),\n phase: event.phase ?? formatFallbackStatusPhase(event.step),\n };\n }\n case \"target_changed\":\n return {\n json: event,\n kind: \"lifecycle\" as const,\n text: `target ${event.from} -> ${event.to}`,\n };\n case \"step_started\":\n return {\n json: event,\n kind: \"lifecycle\" as const,\n text: `${event.step} started\\nsteps: ${formatStepPlan(event.step)}`,\n };\n case \"step_completed\":\n return {\n json: event,\n kind: \"lifecycle\" as const,\n text: `${event.step} completed`,\n };\n case \"created\":\n return {\n json: event,\n kind: \"lifecycle\" as const,\n text: \"created\",\n };\n default:\n return {\n json: event,\n kind: \"lifecycle\" as const,\n text: event.type,\n };\n }\n}\n\nfunction formatFallbackStatusPhase(step: BuildJobTarget | undefined): string {\n switch (step) {\n case \"reading-graph\":\n return \"extracting\";\n case \"reading-summary\":\n return \"summarizing\";\n case \"knowledge-graph\":\n return \"knowledge-graph\";\n case undefined:\n return \"status\";\n default:\n return \"status\";\n }\n}\n\nfunction formatStepPlan(step: string): string {\n switch (step) {\n case \"knowledge-graph\":\n return \"matching -> screening -> enrichment -> grounding -> relation-discovery -> committing\";\n case \"reading-summary\":\n return \"reading-graph -> summarizing -> committing\";\n case \"reading-graph\":\n return \"extracting -> committing\";\n default:\n return step;\n }\n}\n\nfunction formatProgressCounter(\n counter: BuildJobProgressCounter,\n): ProgressCounter {\n return {\n done: counter.done,\n name: counter.name,\n total: counter.total,\n unit: formatProgressUnit(counter.unit),\n };\n}\n\nfunction formatProgressUnit(unit: string): string {\n switch (unit) {\n case \"candidate\":\n return \"candidates\";\n case \"char\":\n return \"chars\";\n case \"item\":\n return \"items\";\n case \"page\":\n return \"pages\";\n case \"qid\":\n return \"qids\";\n case \"record\":\n return \"records\";\n case \"sentence\":\n return \"sentences\";\n case \"word\":\n return \"words\";\n case \"window\":\n return \"windows\";\n default:\n return unit;\n }\n}\n\nfunction formatProgressTokenMetrics(\n tokens: Extract<\n BuildJobEvent,\n { readonly type: \"status_snapshot\" }\n >[\"tokens\"],\n): ProgressMetricGroup | undefined {\n if (tokens === undefined) {\n return undefined;\n }\n\n const metrics = [\n ...(tokens.inputTokens === undefined\n ? []\n : [{ name: \"input\", value: tokens.inputTokens }]),\n ...(tokens.cacheReadTokens === undefined\n ? []\n : [{ name: \"cache\", value: tokens.cacheReadTokens }]),\n ...(tokens.outputTokens === undefined\n ? []\n : [{ name: \"output\", value: tokens.outputTokens }]),\n ];\n\n return metrics.length === 0 ? undefined : { metrics, name: \"tokens\" };\n}\n\nasync function delay(ms: number): Promise<void> {\n await new Promise<void>((resolveDelay) => {\n setTimeout(resolveDelay, ms);\n });\n}\n","import { WikiGraphScope } from \"wiki-graph-core\";\nimport { withLoggingContext } from \"wiki-graph-core\";\nimport {\n assertBuildJobInputRevision,\n buildChapterGraphArtifact,\n buildChapterSummaryArtifactFromSnapshot,\n commitChapterGraphArtifact,\n commitChapterKnowledgeGraphArtifact,\n commitChapterSummaryArtifact,\n createEmbeddingIndexArtifactInput,\n createFtsIndexArtifactInput,\n createDisambiguationProfileNormalizer,\n generateChapterKnowledgeGraphArtifactFromSnapshot,\n getBuildJob,\n readIndexArtifactOutput,\n readChapterBuildInput,\n recordBuildJobInputRevision,\n runBuildJobWorker,\n snapshotChapterKnowledgeGraphInput,\n snapshotChapterSummaryInput,\n type BuildJob,\n type BuildJobExecutionContext,\n type BuildJobProgressReporter,\n type IndexArtifactOutput,\n type File,\n type SentenceRecord,\n writeIndexArtifactOutput,\n ensureRelativeFile,\n} from \"wiki-graph-core\";\nimport { WikiGraphArchiveFile } from \"wiki-graph-core\";\nimport type {\n GuaranteedRequest,\n GuaranteedRequestController,\n ReadonlyDocument,\n} from \"wiki-graph-core\";\nimport type { LLMessage } from \"wiki-graph-core\";\n\nimport { loadCLIConfig, type CLIConfig } from \"../../runtime/config.js\";\nimport {\n createStageLLM,\n DEFAULT_GENERATION_JOB_CONCURRENCY,\n loadRequiredStageConfig,\n resolveExtractionPrompt,\n resolveKnowledgeGraphRecallPrompt,\n} from \"../../runtime/index.js\";\nimport { buildSearchIndexEmbeddingProvider } from \"../../runtime/embedding.js\";\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../../support/index.js\";\nimport { nodeWikispineCommandRunner } from \"../../runtime/wikispine.js\";\n\ninterface IndexArtifactJobChunkSnapshot {\n readonly content: string;\n readonly id: number;\n readonly label: string;\n readonly wordsCount: number;\n}\n\ninterface IndexArtifactJobMentionSnapshot {\n readonly id: string;\n readonly qid: string;\n readonly surface: string;\n}\n\ninterface IndexArtifactJobTocItemSnapshot {\n readonly children: readonly IndexArtifactJobTocItemSnapshot[];\n readonly serialId?: number | undefined;\n readonly title?: string | null | undefined;\n}\n\ninterface IndexArtifactJobSnapshot {\n readonly chapterTitles: readonly {\n readonly id: number;\n readonly title: string;\n }[];\n readonly chunks: readonly IndexArtifactJobChunkSnapshot[];\n readonly mentions: readonly IndexArtifactJobMentionSnapshot[];\n readonly revision: number;\n readonly sentences: readonly SentenceRecord[];\n readonly summarySentences: readonly SentenceRecord[];\n}\n\nexport async function runQueueWorker(): Promise<void> {\n const config = await loadCLIConfig();\n const controller = new AbortController();\n const stop = (): void => controller.abort();\n process.once(\"SIGINT\", stop);\n process.once(\"SIGTERM\", stop);\n\n try {\n await runBuildJobWorker({\n concurrency: config.concurrent?.job ?? DEFAULT_GENERATION_JOB_CONCURRENCY,\n executeJob: async (job, reporter, context) => {\n await executeBuildJob(job, reporter, context);\n },\n signal: controller.signal,\n });\n } finally {\n process.removeListener(\"SIGINT\", stop);\n process.removeListener(\"SIGTERM\", stop);\n }\n}\n\nasync function executeBuildJob(\n job: BuildJob,\n reporter: BuildJobProgressReporter,\n context: BuildJobExecutionContext,\n): Promise<void> {\n await withLoggingContext(\n {\n logDirectory: job.log,\n operation: \"build-job\",\n },\n async () => {\n await executeBuildJobWithLogging(job, reporter, context);\n },\n );\n}\n\nasync function executeBuildJobWithLogging(\n job: BuildJob,\n reporter: BuildJobProgressReporter,\n context: BuildJobExecutionContext,\n): Promise<void> {\n if (isIndexArtifactBuildTarget(job.target)) {\n await executeIndexArtifactBuildJob(job, reporter, context);\n return;\n }\n\n await executeGenerationBuildJob(job, reporter, context);\n}\n\nasync function executeGenerationBuildJob(\n job: BuildJob,\n reporter: BuildJobProgressReporter,\n context: BuildJobExecutionContext,\n): Promise<void> {\n const config = await loadRequiredStageConfig({\n ...(job.llmJSON === undefined ? {} : { llmJSON: job.llmJSON }),\n });\n const llm = createStageLLM(config, {\n cacheDirectory: job.cache,\n logDirectory: job.log,\n onStreamProgress: async (event) => {\n await reporter.addOutputCharacters(event.outputCharacters);\n },\n onTokenUsage: async (usage) => {\n await reporter.addTokenUsage({\n ...(usage.cacheReadTokens === undefined\n ? {}\n : { cacheReadTokens: usage.cacheReadTokens }),\n ...(usage.inputTokens === undefined\n ? {}\n : { inputTokens: usage.inputTokens }),\n ...(usage.outputTokens === undefined\n ? {}\n : { outputTokens: usage.outputTokens }),\n });\n },\n });\n const promptSource = job.prompt ?? config.prompt;\n const extractionPrompt = resolveExtractionPrompt(promptSource);\n const knowledgeGraphRecallPrompt =\n resolveKnowledgeGraphRecallPrompt(promptSource);\n const request: GuaranteedRequestController = async (\n messages: readonly LLMessage[],\n index: number,\n maxRetries: number,\n ): Promise<string> =>\n await llm.request(messages, {\n retryIndex: index,\n retryMax: maxRetries,\n scope: WikiGraphScope.ReaderExtraction,\n signal: context.signal,\n });\n request.lazy = async <T>(\n operation: (request: GuaranteedRequest) => Promise<T>,\n ): Promise<T> => await llm.request(async () => await operation(request));\n\n const buildInput = await new WikiGraphArchiveFile(job.archive).readDocument(\n async (document) => await readChapterBuildInput(document, job.chapterId),\n );\n let { details } = buildInput;\n const { sourceText } = buildInput;\n await recordBuildJobInputRevision({\n currentRevision: buildInput.revision,\n jobId: job.jobId,\n ownerId: requireRunningJobOwnerId(job),\n });\n\n await reporter.setTotals({\n totalGraphWords: details.stage === \"sourced\" ? details.words : 0,\n totalReadingSummaryWords:\n details.stage === \"sourced\" || details.stage === \"graphed\"\n ? details.words\n : 0,\n });\n\n if (details.stage === \"planned\") {\n throw new Error(\n `Chapter ${job.chapterId} is planned. Set source before queueing a build job.`,\n );\n }\n if (job.target === \"knowledge-graph\" || job.target === \"reading-graph\") {\n await new WikiGraphArchiveFile(job.archive).readDocument(\n async (document) => {\n const artifact = await document.indexArtifacts.get(\n job.chapterId,\n \"fts\",\n );\n if (artifact?.sourceRevision !== buildInput.revision) {\n throw new Error(\n `Chapter ${job.chapterId} needs a current FTS index artifact before running ${job.target}.`,\n );\n }\n },\n );\n }\n if (job.target === \"knowledge-graph\") {\n const wikispine = requireKnowledgeGraphWikispineConfig(config);\n\n await reporter.stepStarted(\"knowledge-graph\");\n const knowledgeGraphInput = await new WikiGraphArchiveFile(\n job.archive,\n ).readDocument(async (document) => {\n await assertCurrentBuildInputRevision(job, document);\n return await snapshotChapterKnowledgeGraphInput(document, job.chapterId);\n });\n const artifact = await generateChapterKnowledgeGraphArtifactFromSnapshot(\n job.chapterId,\n knowledgeGraphInput,\n {\n policyPrompt: knowledgeGraphRecallPrompt,\n progressTracker: reporter,\n request,\n resolverOptions: {\n logDirectory: job.log,\n normalizer: createDisambiguationProfileNormalizer({ request }),\n },\n wikispine: {\n ...wikispine,\n ...(wikispine.provider === \"cli\"\n ? { commandRunner: nodeWikispineCommandRunner }\n : {}),\n },\n workspace: job.workspace,\n },\n );\n\n await reporter.updatePhase({\n done: 0,\n phase: \"committing\",\n total: 1,\n unit: \"item\",\n });\n await new WikiGraphArchiveFile(job.archive).write(async (document) => {\n assertJobStillRunning(await getBuildJob(job.jobId));\n await assertCurrentBuildInputRevision(job, document);\n await commitChapterKnowledgeGraphArtifact(document, artifact);\n });\n await reporter.updatePhase({\n done: 1,\n phase: \"committing\",\n total: 1,\n unit: \"item\",\n });\n await reporter.stepCompleted(\"knowledge-graph\");\n assertJobStillRunning(await getBuildJob(job.jobId));\n return;\n }\n if (details.stage === \"sourced\") {\n let graphWords = 0;\n\n await reporter.stepStarted(\"reading-graph\");\n const artifact = await buildChapterGraphArtifact(job.chapterId, {\n extractionPrompt,\n llm,\n sourceText,\n workspace: job.workspace,\n progressTracker: {\n async advance(wordsCount) {\n graphWords += wordsCount;\n await reporter.updateWords({ graphWords });\n },\n async complete(finalWordsCount) {\n await reporter.updateWords({\n graphWords: finalWordsCount ?? details.words,\n });\n },\n },\n });\n await reporter.updatePhase({\n done: 0,\n phase: \"committing\",\n total: 1,\n unit: \"item\",\n });\n details = await new WikiGraphArchiveFile(job.archive).write(\n async (document) => {\n assertJobStillRunning(await getBuildJob(job.jobId));\n await assertCurrentBuildInputRevision(job, document);\n return await commitChapterGraphArtifact(document, artifact);\n },\n );\n await reporter.updatePhase({\n done: 1,\n phase: \"committing\",\n total: 1,\n unit: \"item\",\n });\n const nextBuildInput = await new WikiGraphArchiveFile(\n job.archive,\n ).readDocument(\n async (document) => await readChapterBuildInput(document, job.chapterId),\n );\n details = nextBuildInput.details;\n await recordBuildJobInputRevision({\n currentRevision: nextBuildInput.revision,\n jobId: job.jobId,\n ownerId: requireRunningJobOwnerId(job),\n });\n await reporter.updateWords({ graphWords: details.words });\n await reporter.stepCompleted(\"reading-graph\");\n }\n\n const latestJob = await getBuildJob(job.jobId);\n\n assertJobStillRunning(latestJob);\n if (latestJob.target === \"reading-graph\" || details.stage === \"summarized\") {\n return;\n }\n if (details.stage !== \"graphed\") {\n ({ details } = await new WikiGraphArchiveFile(job.archive).readDocument(\n async (document) => await readChapterBuildInput(document, job.chapterId),\n ));\n }\n if (details.stage !== \"graphed\") {\n throw new Error(\n `Chapter ${job.chapterId} is ${details.stage}. Cannot generate summary.`,\n );\n }\n\n await reporter.stepStarted(\"reading-summary\");\n const summaryInput = await new WikiGraphArchiveFile(job.archive).readDocument(\n async (document) => {\n await assertCurrentBuildInputRevision(job, document);\n return await snapshotChapterSummaryInput(\n document,\n job.chapterId,\n job.workspace,\n );\n },\n );\n const summary = await buildChapterSummaryArtifactFromSnapshot(job.chapterId, {\n llm,\n snapshotFile: summaryInput.file,\n workspace: job.workspace,\n });\n await reporter.updatePhase({\n done: 0,\n phase: \"committing\",\n total: 1,\n unit: \"item\",\n });\n details = await new WikiGraphArchiveFile(job.archive).write(\n async (document) => {\n assertJobStillRunning(await getBuildJob(job.jobId));\n await assertCurrentBuildInputRevision(job, document);\n return await commitChapterSummaryArtifact(\n document,\n job.chapterId,\n summary,\n );\n },\n );\n await reporter.updatePhase({\n done: 1,\n phase: \"committing\",\n total: 1,\n unit: \"item\",\n });\n await reporter.updateWords({ readingSummaryWords: details.words });\n await reporter.stepCompleted(\"reading-summary\");\n assertJobStillRunning(await getBuildJob(job.jobId));\n}\n\nasync function executeIndexArtifactBuildJob(\n job: BuildJob,\n reporter: BuildJobProgressReporter,\n context: BuildJobExecutionContext,\n): Promise<void> {\n await reporter.stepStarted(job.target);\n const snapshot = await readIndexArtifactJobSnapshot(job);\n await recordBuildJobInputRevision({\n currentRevision: snapshot.revision,\n jobId: job.jobId,\n ownerId: requireRunningJobOwnerId(job),\n });\n await reporter.updatePhase({\n done: 0,\n phase: \"indexing\",\n total: 1,\n unit: \"item\",\n });\n\n if (job.target === \"index-fts\") {\n const outputFile = await resolveIndexArtifactOutputFile(job);\n await writeIndexArtifactOutput(\n outputFile,\n createFtsIndexArtifactInput({\n chapterTitles: snapshot.chapterTitles,\n chunks: snapshot.chunks,\n mentions: snapshot.mentions,\n sentences: snapshot.sentences,\n serialId: job.chapterId,\n sourceRevision: snapshot.revision,\n summarySentences: snapshot.summarySentences,\n }),\n );\n const artifact = await readIndexArtifactOutput(outputFile);\n\n assertIndexArtifactOutputMatchesJob(job, snapshot.revision, artifact);\n if (!(\"lexicalRows\" in artifact)) {\n throw new Error(\"Index artifact output is not an FTS artifact.\");\n }\n await new WikiGraphArchiveFile(job.archive).write(async (document) => {\n assertJobStillRunning(await getBuildJob(job.jobId));\n await assertJobChapterExists(document, job.chapterId);\n await assertCurrentBuildInputRevision(job, document);\n await document.indexArtifacts.replaceFts(artifact);\n });\n await completeIndexArtifactStep(job, reporter);\n return;\n }\n\n const config = await loadCLIConfig();\n if (config.embedding === undefined) {\n throw new Error(\n withHelpRoute(\n \"Missing embeddings configuration. Configure `wikg://local/config/embeddings` before building embedding index artifacts.\",\n CLI_HELP_ROUTES.config,\n ),\n );\n }\n const outputFile = await resolveIndexArtifactOutputFile(job);\n const artifact = await createEmbeddingIndexArtifactInput({\n embeddingProvider: buildSearchIndexEmbeddingProvider(config.embedding),\n kind:\n job.target === \"index-embedding-source\"\n ? \"embedding-source\"\n : \"embedding-summary\",\n sentences: snapshot.sentences,\n serialId: job.chapterId,\n signal: context.signal,\n sourceRevision: snapshot.revision,\n });\n await writeIndexArtifactOutput(outputFile, artifact);\n const output = await readIndexArtifactOutput(outputFile);\n\n assertIndexArtifactOutputMatchesJob(job, snapshot.revision, output);\n if (\"lexicalRows\" in output) {\n throw new Error(\"Index artifact output is not an embedding artifact.\");\n }\n\n await new WikiGraphArchiveFile(job.archive).write(async (document) => {\n assertJobStillRunning(await getBuildJob(job.jobId));\n await assertJobChapterExists(document, job.chapterId);\n await assertCurrentBuildInputRevision(job, document);\n await document.indexArtifacts.replaceEmbedding(output);\n });\n await completeIndexArtifactStep(job, reporter);\n}\n\nasync function completeIndexArtifactStep(\n job: BuildJob,\n reporter: BuildJobProgressReporter,\n): Promise<void> {\n await reporter.updatePhase({\n done: 1,\n phase: \"indexing\",\n total: 1,\n unit: \"item\",\n });\n await reporter.stepCompleted(job.target);\n assertJobStillRunning(await getBuildJob(job.jobId));\n}\n\nasync function readIndexArtifactJobSnapshot(\n job: BuildJob,\n): Promise<IndexArtifactJobSnapshot> {\n return await new WikiGraphArchiveFile(job.archive).readDocument(\n async (document) => {\n await assertJobChapterExists(document, job.chapterId);\n const revision = await document.serials.getRevision(job.chapterId);\n const stream =\n job.target === \"index-embedding-summary\"\n ? document.getSummaryFragments(job.chapterId)\n : document.getSerialFragments(job.chapterId);\n if (job.target === \"index-embedding-summary\") {\n const summary = await document.readSummary(job.chapterId);\n if (summary === undefined || summary.trim() === \"\") {\n throw new Error(\n `Chapter ${job.chapterId} has no summary. Build a reading summary before building a summary embedding index artifact.`,\n );\n }\n }\n\n if (stream.listSentences === undefined) {\n throw new Error(\"Text stream does not expose sentence listing.\");\n }\n\n const sentences = await stream.listSentences();\n if (job.target !== \"index-fts\") {\n return {\n chapterTitles: [],\n chunks: [],\n mentions: [],\n revision,\n sentences,\n summarySentences: [],\n };\n }\n\n return {\n chapterTitles: await readChapterTitles(document, job.chapterId),\n chunks: await document.chunks.listBySerial(job.chapterId),\n mentions: await document.mentions.listByChapter(job.chapterId),\n revision,\n sentences,\n summarySentences: await listTextStreamSentences(\n document.getSummaryFragments(job.chapterId),\n ),\n };\n },\n );\n}\n\nasync function listTextStreamSentences(stream: {\n readonly listSentences?: () => Promise<readonly SentenceRecord[]>;\n}): Promise<readonly SentenceRecord[]> {\n if (stream.listSentences === undefined) {\n throw new Error(\"Text stream does not expose sentence listing.\");\n }\n\n return await stream.listSentences();\n}\n\nasync function readChapterTitles(\n document: ReadonlyDocument,\n serialId: number,\n): Promise<readonly { readonly id: number; readonly title: string }[]> {\n const reader = document as ReadonlyDocument & {\n readonly readToc?: () => Promise<\n { readonly items: readonly IndexArtifactJobTocItemSnapshot[] } | undefined\n >;\n };\n const toc = await reader.readToc?.();\n if (toc === undefined) {\n return [];\n }\n\n const chapter = collectTocItems(toc.items).find(\n (item) => item.serialId === serialId,\n );\n if (chapter === undefined || typeof chapter.title !== \"string\") {\n return [];\n }\n\n return [{ id: serialId, title: chapter.title }];\n}\n\nfunction collectTocItems(\n items: readonly IndexArtifactJobTocItemSnapshot[],\n): readonly IndexArtifactJobTocItemSnapshot[] {\n return items.flatMap((item) => [item, ...collectTocItems(item.children)]);\n}\n\nasync function resolveIndexArtifactOutputFile(job: BuildJob): Promise<File> {\n return await ensureRelativeFile(job.workspace, \"index-artifact-output.jsonl\");\n}\n\nfunction assertIndexArtifactOutputMatchesJob(\n job: BuildJob,\n inputRevision: number,\n artifact: IndexArtifactOutput,\n): void {\n if (artifact.serialId !== job.chapterId) {\n throw new Error(\n `Index artifact output targets chapter ${artifact.serialId}, expected chapter ${job.chapterId}.`,\n );\n }\n if (artifact.sourceRevision !== inputRevision) {\n throw new Error(\n `Index artifact output targets input revision ${artifact.sourceRevision}, expected revision ${inputRevision}.`,\n );\n }\n\n if (job.target === \"index-fts\") {\n if (\"lexicalRows\" in artifact) {\n return;\n }\n\n throw new Error(\"Index artifact output is not an FTS artifact.\");\n }\n if (\"lexicalRows\" in artifact) {\n throw new Error(\"Index artifact output is not an embedding artifact.\");\n }\n\n const expectedKind =\n job.target === \"index-embedding-source\"\n ? \"embedding-source\"\n : \"embedding-summary\";\n\n if (artifact.kind === expectedKind) {\n return;\n }\n\n throw new Error(\n `Index artifact output kind ${artifact.kind} does not match ${job.target}.`,\n );\n}\n\nasync function assertJobChapterExists(\n document: ReadonlyDocument,\n chapterId: number,\n): Promise<void> {\n if ((await document.serials.getById(chapterId)) !== undefined) {\n return;\n }\n\n throw new Error(\n `Chapter ${chapterId} no longer exists. Queue a new build job for an existing chapter.`,\n );\n}\n\nexport function requireKnowledgeGraphWikispineConfig(\n config: CLIConfig,\n): NonNullable<CLIConfig[\"wikispine\"]> {\n if (config.wikispine?.provider !== undefined) {\n return config.wikispine;\n }\n\n throw new Error(\n withHelpRoute(\n [\n \"Knowledge Graph requires WikiSpine.\",\n \"Configure `wikg://local/config/wikispine` with provider `cli` or `fetch`, then run `wg wikg://local/config/wikispine test`.\",\n ].join(\" \"),\n CLI_HELP_ROUTES.config,\n ),\n );\n}\n\nfunction isIndexArtifactBuildTarget(target: BuildJob[\"target\"]): boolean {\n return (\n target === \"index-fts\" ||\n target === \"index-embedding-source\" ||\n target === \"index-embedding-summary\"\n );\n}\n\nfunction assertJobStillRunning(job: BuildJob): void {\n if (job.state !== \"running\") {\n throw new Error(`Job ${job.jobId} is ${job.state}. Stop before flushing.`);\n }\n}\n\nasync function assertCurrentBuildInputRevision(\n job: BuildJob,\n document: {\n readonly serials: {\n getRevision(serialId: number): Promise<number>;\n };\n },\n): Promise<void> {\n await assertBuildJobInputRevision({\n currentRevision: await document.serials.getRevision(job.chapterId),\n jobId: job.jobId,\n ownerId: requireRunningJobOwnerId(job),\n });\n}\n\nfunction requireRunningJobOwnerId(job: BuildJob): string {\n if (job.ownerId === undefined) {\n throw new Error(`Job ${job.jobId} is not owned by this worker.`);\n }\n\n return job.ownerId;\n}\n","import {\n boostBuildJob,\n cancelBuildJob,\n cleanBuildJobs,\n formatLocatedChapterUri,\n formatLocatedWikiGraphUri,\n getBuildJob,\n listBuildJobs,\n pauseBuildJob,\n resolveChapterPathReadonly,\n resolveBuildJobId,\n resumeBuildJob,\n updateBuildJobTarget,\n WikiGraphArchiveFile,\n} from \"wiki-graph-core\";\n\nimport type { CLIQueueArguments } from \"../../args/index.js\";\nimport { loadCLIConfig } from \"../../runtime/config.js\";\nimport { loadRequiredStageConfig } from \"../../runtime/index.js\";\nimport { writeTextToStdout } from \"../../support/index.js\";\nimport {\n addArchiveJobs,\n addChapterJob,\n assertBuildCostAccepted,\n assertQueueAddReady,\n readQueueAddChapter,\n tryStartQueueWorker,\n} from \"./add.js\";\nimport { createQueueAddEstimate } from \"./estimate.js\";\nimport { writeJobList, writeJobStatus, writeJobSummary } from \"./output.js\";\nimport { watchBuildJob } from \"./watch.js\";\nimport { requireKnowledgeGraphWikispineConfig } from \"./worker.js\";\nimport { resolveArchiveChapterScope } from \"../archive-command/run/scope.js\";\nimport { NodeFile } from \"../../runtime/node-platform.js\";\n\nexport { runQueueWorker } from \"./worker.js\";\n\nexport async function runQueueCommand(args: CLIQueueArguments): Promise<void> {\n switch (args.action) {\n case \"add\": {\n const chapterIds = await resolveQueueChapterIds(args);\n const singleChapterId =\n chapterIds?.length === 1 ? chapterIds[0]! : undefined;\n if (singleChapterId !== undefined) {\n await assertQueueAddReady(args, singleChapterId);\n }\n const target = args.target ?? \"reading-summary\";\n if (target !== \"index-fts\") {\n assertBuildCostAccepted(args);\n }\n const config = requiresLLMConfig(target)\n ? await loadRequiredStageConfig({\n ...(args.llmJSON === undefined ? {} : { llmJSON: args.llmJSON }),\n })\n : await loadCLIConfig({\n ...(args.llmJSON === undefined ? {} : { llmJSON: args.llmJSON }),\n });\n if (\n (target === \"index-embedding-source\" ||\n target === \"index-embedding-summary\") &&\n config.embedding === undefined\n ) {\n throw new Error(\n \"Missing embeddings configuration. Configure `wikg://local/config/embeddings` before queueing embedding index artifact jobs.\",\n );\n }\n if (args.target === \"knowledge-graph\") {\n requireKnowledgeGraphWikispineConfig(config);\n }\n\n if (chapterIds === undefined) {\n await addArchiveJobs(args, config);\n } else if (chapterIds.length === 1) {\n const chapterId = chapterIds[0]!;\n const chapter = await readQueueAddChapter(args, chapterId);\n const estimate = createQueueAddEstimate({\n chapters: [chapter],\n config,\n target: args.target ?? \"reading-summary\",\n });\n\n await writeJobSummary(await addChapterJob(args, chapterId), {\n chapter,\n estimate,\n json: args.json ?? false,\n watch: true,\n });\n } else {\n await addArchiveJobs({ ...args, chapterIds }, config);\n }\n\n tryStartQueueWorker();\n return;\n }\n case \"list\":\n await writeJobList(\n await listBuildJobs({\n ...(args.activeOnly === undefined\n ? {}\n : { activeOnly: args.activeOnly }),\n ...(args.all === undefined ? {} : { all: args.all }),\n ...(args.archivePath === undefined\n ? {}\n : { archive: new NodeFile(args.archivePath) }),\n }),\n { json: args.json ?? false },\n );\n return;\n case \"status\":\n await writeJobStatus(await getBuildJob(await resolveQueueJobId(args)), {\n json: args.json ?? false,\n });\n return;\n case \"watch\":\n await watchBuildJob(await resolveQueueJobId(args), {\n from: args.from ?? \"beginning\",\n jsonl: args.jsonl ?? !process.stdout.isTTY,\n });\n return;\n case \"pause\":\n await writeJobSummary(await pauseBuildJob(await resolveQueueJobId(args)));\n return;\n case \"resume\":\n await writeJobSummary(\n await resumeBuildJob(await resolveQueueJobId(args)),\n );\n tryStartQueueWorker();\n return;\n case \"cancel\":\n await writeJobSummary(\n await cancelBuildJob(await resolveQueueJobId(args)),\n );\n return;\n case \"boost\":\n await writeJobSummary(await boostBuildJob(await resolveQueueJobId(args)));\n tryStartQueueWorker();\n return;\n case \"target\":\n await writeJobSummary(\n await updateBuildJobTarget(\n await resolveQueueJobId(args),\n args.target ?? \"reading-summary\",\n ),\n );\n tryStartQueueWorker();\n return;\n case \"clean\":\n await writeTextToStdout(`Cleaned ${await cleanBuildJobs()} jobs.\\n`);\n return;\n }\n}\n\nfunction requiresLLMConfig(target: NonNullable<CLIQueueArguments[\"target\"]>) {\n return (\n target === \"knowledge-graph\" ||\n target === \"reading-graph\" ||\n target === \"reading-summary\"\n );\n}\n\nasync function resolveQueueJobId(args: CLIQueueArguments): Promise<string> {\n return await resolveBuildJobId(args.jobId!);\n}\n\nasync function resolveQueueChapterIds(\n args: CLIQueueArguments,\n): Promise<readonly number[] | undefined> {\n if (args.chapterId !== undefined) {\n return [args.chapterId];\n }\n if (args.chapterPath === undefined && args.depth === undefined) {\n return undefined;\n }\n\n let chapterIds: readonly number[] | undefined;\n await new WikiGraphArchiveFile(new NodeFile(args.archivePath!)).readDocument(\n async (document) => {\n if (args.chapterPath === undefined) {\n chapterIds = (\n await resolveArchiveChapterScope(document, {\n archivePath: formatLocatedWikiGraphUri(\n args.archivePath!,\n \"wikg://chapter\",\n ),\n ...(args.depth === undefined ? {} : { depth: args.depth }),\n })\n )?.chapterIds;\n return;\n }\n chapterIds = (\n await resolveArchiveChapterScope(document, {\n archivePath: formatLocatedChapterUri(\n args.archivePath!,\n args.chapterPath,\n ),\n ...(args.depth === undefined ? {} : { depth: args.depth }),\n })\n )?.chapterIds ?? [\n await resolveChapterPathReadonly(document, args.chapterPath),\n ];\n },\n );\n return chapterIds;\n}\n","export * from \"wiki-graph-core\";\nexport {\n createWikiGraphCLI,\n runWikiGraphCLI,\n runWikiGraphCLICaptured,\n} from \"./app/index.js\";\nexport type {\n RunWikiGraphCLICapturedResult,\n RunWikiGraphCLIInput,\n RunWikiGraphCLIResult,\n WikiGraphCLI,\n} from \"./app/index.js\";\n","import { Readable, Writable } from \"stream\";\n\nimport { withNodeWikiGraphStorage } from \"../runtime/node-platform.js\";\nimport { dispatchWikiGraphCLI } from \"./dispatch.js\";\nimport {\n getCLIExitCode,\n withWikiGraphCLIRuntimeContext,\n type WikiGraphCLIRuntimeContext,\n} from \"../runtime/context.js\";\nimport {\n createEntryRuntimeContext,\n type WikiGraphEntryEnvPolicy,\n} from \"../runtime/entry-context.js\";\n\nexport interface RunWikiGraphCLIInput {\n /**\n * CLI arguments without the executable name. For example, `[\"--help\"]`\n * simulates `wg --help`.\n */\n readonly argv?: readonly string[] | undefined;\n readonly cwd?: string | undefined;\n readonly devProjectRoot?: string | undefined;\n readonly env?: NodeJS.ProcessEnv | undefined;\n readonly signal?: AbortSignal | undefined;\n readonly stateDir?: string | undefined;\n readonly stderr?: NodeJS.WritableStream | undefined;\n readonly stderrIsTTY?: boolean | undefined;\n readonly stdin?: NodeJS.ReadableStream | Uint8Array | string | undefined;\n readonly stdinIsTTY?: boolean | undefined;\n readonly stdout?: NodeJS.WritableStream | undefined;\n readonly stdoutIsTTY?: boolean | undefined;\n}\n\nexport interface RunWikiGraphCLIResult {\n readonly exitCode: number;\n}\n\nexport interface RunWikiGraphCLICapturedResult extends RunWikiGraphCLIResult {\n readonly stderr: string;\n readonly stdout: string;\n}\n\nexport interface WikiGraphCLI {\n run(\n argv?: readonly string[],\n overrides?: RunWikiGraphCLIInput,\n ): Promise<RunWikiGraphCLIResult>;\n runCaptured(\n argv?: readonly string[],\n overrides?: RunWikiGraphCLIInput,\n ): Promise<RunWikiGraphCLICapturedResult>;\n}\n\nexport async function runWikiGraphCLI(\n input: RunWikiGraphCLIInput = {},\n): Promise<RunWikiGraphCLIResult> {\n return await runWikiGraphCLIWithEntryPolicy(input, \"production\");\n}\n\nexport async function runWikiGraphCLIWithEntryPolicy(\n input: RunWikiGraphCLIInput = {},\n envPolicy: WikiGraphEntryEnvPolicy,\n): Promise<RunWikiGraphCLIResult> {\n throwIfAborted(input.signal);\n\n const stdin = createInputStream(input.stdin ?? process.stdin);\n const stdout = input.stdout ?? process.stdout;\n const stderr = input.stderr ?? process.stderr;\n const argv = input.argv ?? process.argv.slice(2);\n let entryContext: ReturnType<typeof createEntryRuntimeContext>;\n\n try {\n entryContext = createEntryRuntimeContext({\n argv,\n cwd: input.cwd ?? process.cwd(),\n devProjectRoot: input.devProjectRoot,\n env: input.env,\n envPolicy,\n stateDir: input.stateDir,\n });\n } catch (error) {\n stderr.write(`${error instanceof Error ? error.message : String(error)}\\n`);\n return { exitCode: 1 };\n }\n\n const context: WikiGraphCLIRuntimeContext = {\n argv,\n cwd: input.cwd ?? process.cwd(),\n devProjectRoot: entryContext.devProjectRoot,\n env: entryContext.env,\n envPolicy: entryContext.envPolicy,\n exitCode: 0,\n queueAutostart: true,\n signal: input.signal,\n stateDir: entryContext.stateDir,\n stderr,\n stderrIsTTY: input.stderrIsTTY,\n stdin,\n stdinIsTTY: input.stdinIsTTY,\n stdout,\n stdoutIsTTY: input.stdoutIsTTY,\n };\n\n return await withNodeWikiGraphStorage(entryContext.stateDir, async () =>\n withWikiGraphCLIRuntimeContext(context, async () => {\n const result = await dispatchWikiGraphCLI({\n argv,\n stderr,\n stdinIsTTY: context.stdinIsTTY ?? stdin.isTTY,\n stdout,\n });\n throwIfAborted(input.signal);\n const exitCode = normalizeExitCode(getCLIExitCode(), result.exitCode);\n\n return { exitCode };\n }),\n );\n}\n\nexport async function runWikiGraphCLICaptured(\n input: RunWikiGraphCLIInput = {},\n): Promise<RunWikiGraphCLICapturedResult> {\n const stdout = new CaptureWritable(input.stdoutIsTTY);\n const stderr = new CaptureWritable(input.stderrIsTTY);\n const result = await runWikiGraphCLI({\n ...input,\n stderr,\n stdout,\n });\n\n return {\n exitCode: result.exitCode,\n stderr: stderr.text,\n stdout: stdout.text,\n };\n}\n\nexport function createWikiGraphCLI(\n defaults: RunWikiGraphCLIInput = {},\n): WikiGraphCLI {\n return {\n run(argv, overrides = {}) {\n return runWikiGraphCLI(mergeCLIInputs(defaults, argv, overrides));\n },\n runCaptured(argv, overrides = {}) {\n return runWikiGraphCLICaptured(mergeCLIInputs(defaults, argv, overrides));\n },\n };\n}\n\nfunction mergeCLIInputs(\n defaults: RunWikiGraphCLIInput,\n argv: readonly string[] | undefined,\n overrides: RunWikiGraphCLIInput,\n): RunWikiGraphCLIInput {\n return {\n ...defaults,\n ...overrides,\n argv: argv ?? overrides.argv ?? defaults.argv,\n };\n}\n\nfunction createInputStream(\n input: NodeJS.ReadableStream | Uint8Array | string,\n): NodeJS.ReadableStream & { isTTY?: boolean | undefined } {\n if (typeof input === \"string\" || input instanceof Uint8Array) {\n return Readable.from([input]) as NodeJS.ReadableStream & {\n isTTY?: boolean | undefined;\n };\n }\n\n return input as NodeJS.ReadableStream & { isTTY?: boolean | undefined };\n}\n\nfunction normalizeExitCode(\n currentExitCode: NodeJS.Process[\"exitCode\"],\n fallbackExitCode: number,\n): number {\n if (currentExitCode === undefined || currentExitCode === 0) {\n return fallbackExitCode;\n }\n\n const numericExitCode = Number(currentExitCode);\n\n return Number.isFinite(numericExitCode) ? numericExitCode : 1;\n}\n\nfunction throwIfAborted(signal: AbortSignal | undefined): void {\n if (signal?.aborted !== true) {\n return;\n }\n\n throw signal.reason instanceof Error\n ? signal.reason\n : new Error(\"The Wiki Graph CLI run was aborted.\");\n}\n\nclass CaptureWritable extends Writable {\n readonly #chunks: string[] = [];\n\n public constructor(isTTY: boolean | undefined) {\n super();\n Object.defineProperty(this, \"isTTY\", {\n configurable: true,\n value: isTTY ?? false,\n });\n }\n\n public get text(): string {\n return this.#chunks.join(\"\");\n }\n\n public override _write(\n chunk: Buffer | string,\n encoding: BufferEncoding,\n callback: (error?: Error | null) => void,\n ): void {\n if (typeof chunk === \"string\") {\n this.#chunks.push(chunk);\n callback();\n return;\n }\n\n const normalizedEncoding = encoding as BufferEncoding | \"buffer\";\n this.#chunks.push(\n chunk.toString(normalizedEncoding === \"buffer\" ? \"utf8\" : encoding),\n );\n callback();\n }\n}\n","import {\n formatWikiGraphLibraryUri,\n parseWikiGraphLibraryUri,\n resolveDataDirPath,\n} from \"wiki-graph-core\";\nimport { createEnv } from \"wiki-graph-core\";\n\nimport { CLI_FULL_COMMAND, CLI_PRIMARY_COMMAND } from \"wiki-graph-core\";\nimport type { ParsedWikiGraphLibraryUri } from \"wiki-graph-core\";\nimport { CLI_FORMATS, parseLocatedWikiGraphUri } from \"../support/index.js\";\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../support/index.js\";\nimport { formatCliCommand, formatShellArgument } from \"../support/index.js\";\nimport type {\n CLIArchiveAction,\n CLIArchiveChapterAction,\n CLIArchiveMaintenanceCommand,\n CLILibraryAction,\n} from \"./types.js\";\nimport { parseChapterTarget } from \"./uri/chapter/target.js\";\n\nexport const HELP_TOPICS = [\n \"format\",\n \"file-import\",\n \"source-locators\",\n \"config\",\n \"runtime\",\n \"uri\",\n \"recipe\",\n \"readiness\",\n \"library\",\n] as const;\n\nexport type HelpTopic = (typeof HELP_TOPICS)[number];\n\nexport type UriHelpTargetName =\n | \"archive-scope\"\n | \"artifact-object\"\n | \"chapter-collection-scope\"\n | \"chapter-scope\"\n | \"chapter-source-range-object\"\n | \"chapter-source-locator-scope\"\n | \"chapter-source-object\"\n | \"chapter-summary-range-object\"\n | \"chapter-summary-object\"\n | \"chapter-title-object\"\n | \"chapter-tree-object\"\n | \"chapter-state-object\"\n | \"chapter-index-artifact\"\n | \"chunk-scope\"\n | \"chunk-object\"\n | \"cover-object\"\n | \"entity-scope\"\n | \"entity-object\"\n | \"entity-wikipage-object\"\n | \"index-object\"\n | \"job-collection-scope\"\n | \"job-object\"\n | \"job-target-object\"\n | \"local-config-namespace\"\n | \"local-config-section\"\n | \"metadata-object\"\n | \"summary-object\"\n | \"triple-scope\"\n | \"triple-object\";\n\nexport type UriHelpPredicateName =\n | \"add\"\n | \"boost\"\n | \"build\"\n | \"cancel\"\n | \"clear\"\n | \"clean\"\n | \"create\"\n | \"delete\"\n | \"evidence\"\n | \"export\"\n | \"inspect\"\n | \"move\"\n | \"pack\"\n | \"pause\"\n | \"put\"\n | \"related\"\n | \"remove\"\n | \"reset\"\n | \"resume\"\n | \"set\"\n | \"sync\"\n | \"test\"\n | \"watch\";\n\nexport type LibraryHelpPredicateName = CLILibraryAction | \"clean\" | \"sync\";\n\ninterface UriHelpTarget {\n readonly name: UriHelpTargetName;\n readonly predicates: readonly UriHelpPredicateName[];\n}\n\nconst URI_HELP_TARGETS: readonly UriHelpTarget[] = [\n {\n name: \"archive-scope\",\n predicates: [\"create\", \"export\", \"inspect\"],\n },\n { name: \"artifact-object\", predicates: [] },\n {\n name: \"chapter-collection-scope\",\n predicates: [\"add\"],\n },\n {\n name: \"chapter-scope\",\n predicates: [\"move\", \"remove\", \"reset\"],\n },\n { name: \"chapter-source-range-object\", predicates: [] },\n { name: \"chapter-source-locator-scope\", predicates: [] },\n { name: \"chapter-source-object\", predicates: [\"set\"] },\n { name: \"chapter-summary-range-object\", predicates: [] },\n { name: \"chapter-summary-object\", predicates: [\"set\"] },\n { name: \"chapter-title-object\", predicates: [\"clear\", \"set\"] },\n { name: \"chapter-tree-object\", predicates: [\"set\"] },\n { name: \"chapter-state-object\", predicates: [] },\n { name: \"chapter-index-artifact\", predicates: [\"build\", \"delete\"] },\n { name: \"chunk-scope\", predicates: [] },\n { name: \"chunk-object\", predicates: [\"evidence\", \"pack\", \"related\"] },\n { name: \"cover-object\", predicates: [] },\n {\n name: \"entity-scope\",\n predicates: [],\n },\n { name: \"entity-object\", predicates: [\"evidence\", \"pack\", \"related\"] },\n { name: \"entity-wikipage-object\", predicates: [] },\n {\n name: \"index-object\",\n predicates: [\"clean\", \"sync\"],\n },\n {\n name: \"job-collection-scope\",\n predicates: [\"add\", \"clean\"],\n },\n {\n name: \"job-object\",\n predicates: [\"boost\", \"cancel\", \"pause\", \"resume\", \"watch\"],\n },\n { name: \"job-target-object\", predicates: [\"set\"] },\n {\n name: \"local-config-namespace\",\n predicates: [],\n },\n {\n name: \"local-config-section\",\n predicates: [\"clear\", \"delete\", \"put\", \"set\", \"test\"],\n },\n {\n name: \"metadata-object\",\n predicates: [\"clear\", \"delete\", \"put\", \"set\"],\n },\n { name: \"summary-object\", predicates: [] },\n { name: \"triple-scope\", predicates: [] },\n { name: \"triple-object\", predicates: [\"evidence\"] },\n] as const;\n\nconst URI_HELP_TARGET_LOOKUP = new Map<UriHelpTargetName, UriHelpTarget>(\n URI_HELP_TARGETS.map((target) => [target.name, target]),\n);\n\nexport const ARCHIVE_COMMANDS = [\n \"create\",\n \"related\",\n \"evidence\",\n \"next\",\n \"pack\",\n \"inspect\",\n \"export\",\n] as const satisfies readonly CLIArchiveAction[];\n\nexport const ARCHIVE_MAINTENANCE_COMMANDS = [\n \"cover\",\n \"meta\",\n \"chapter\",\n] as const satisfies readonly CLIArchiveMaintenanceCommand[];\n\nconst HELP_TOPIC_METADATA: readonly {\n readonly name: HelpTopic;\n readonly summary: string;\n readonly rootVisible?: boolean;\n}[] = [\n {\n name: \"format\",\n summary: \"Supported formats, inference rules, and IO constraints.\",\n },\n {\n name: \"file-import\",\n rootVisible: false,\n summary: \"Advanced source-file import and source-text provenance behavior.\",\n },\n {\n name: \"source-locators\",\n rootVisible: false,\n summary: \"Source artifact URIs and source-text locator mappings.\",\n },\n {\n name: \"config\",\n summary: \"Configuration overview, precedence, and when each layer applies.\",\n },\n {\n name: \"runtime\",\n summary: \"Advanced runtime, worker, cache, log, JSONL, and debug behavior.\",\n },\n {\n name: \"uri\",\n summary:\n \"URI grammar, command routing, scopes, objects, and retrieval strategy.\",\n },\n {\n name: \"recipe\",\n summary: \"Recommended workflow and best practices after root help.\",\n },\n {\n name: \"readiness\",\n summary: \"Search index, LLM, WikiSpine, and generated-data prerequisites.\",\n },\n {\n name: \"library\",\n summary:\n \"Library registries, archive memberships, path binding, and aggregate indexes.\",\n },\n] as const;\n\nconst ARCHIVE_MAINTENANCE_COMMAND_METADATA: readonly {\n readonly name: CLIArchiveMaintenanceCommand;\n readonly summary: string;\n}[] = [\n {\n name: \"cover\",\n summary: \"Write raw cover bytes to stdout for redirection or piping.\",\n },\n {\n name: \"meta\",\n summary: \"Read or edit metadata attached to an object.\",\n },\n {\n name: \"chapter\",\n summary: \"Edit the chapter tree and per-chapter digest stages.\",\n },\n] as const;\n\nconst HELP_TOPIC_TEMPLATE_NAMES: Readonly<Record<HelpTopic, string>> = {\n format: \"help/topics/format\",\n \"file-import\": \"help/topics/file-import\",\n \"source-locators\": \"help/topics/source-locators\",\n config: \"help/topics/config\",\n runtime: \"help/topics/runtime\",\n uri: \"help/topics/uri\",\n recipe: \"help/topics/recipe\",\n readiness: \"help/topics/readiness\",\n library: \"help/topics/library\",\n};\n\nlet helpTemplateEnvironment: ReturnType<typeof createEnv> | undefined;\n\nexport function renderMainHelpText(): string {\n return renderHelpTemplate(\"help/commands/root\");\n}\n\nexport function renderTransformHelpText(): string {\n return renderHelpTemplate(\"help/commands/transform\");\n}\n\nexport function renderGcCommandHelpText(): string {\n return renderHelpTemplate(\"help/commands/gc\");\n}\n\nexport function renderLegacyCommandHelpText(action?: \"migrate\"): string {\n return renderHelpTemplate(\n action === undefined\n ? \"help/commands/legacy\"\n : `help/commands/legacy/${action}`,\n );\n}\n\nexport function renderMaintenanceCommandHelpText(action?: \"upgrade\"): string {\n return renderHelpTemplate(\n action === undefined\n ? \"help/commands/maintenance\"\n : `help/commands/maintenance/${action}`,\n );\n}\n\nexport function renderArchiveCommandHelpText(action: CLIArchiveAction): string {\n return renderHelpTemplate(`help/commands/archive/${action}`);\n}\n\nexport function renderHelpTopicText(topic: HelpTopic): string {\n return renderHelpTemplate(HELP_TOPIC_TEMPLATE_NAMES[topic]);\n}\n\nexport function renderUriHelpText(\n targetName: UriHelpTargetName,\n uri: string,\n): string {\n return renderHelpTemplate(\"help/commands/uri\", {\n displayUri: uri,\n libraryContext: getLibraryHelpContext(uri),\n target: requireUriHelpTarget(targetName),\n uriContext: getUriHelpContext(uri),\n uri: formatHelpCommandUri(uri),\n });\n}\n\nexport function renderUriPredicateHelpText(\n targetName: UriHelpTargetName,\n predicate: UriHelpPredicateName,\n uri: string,\n): string {\n const target = requireUriHelpTarget(targetName);\n\n if (!target.predicates.includes(predicate)) {\n throw new Error(\n withHelpRoute(\n `The URI target ${uri} does not support \\`${predicate}\\`.`,\n formatCliCommand([uri, \"--help\"]),\n ),\n );\n }\n\n return renderHelpTemplate(\"help/commands/predicate\", {\n displayUri: uri,\n libraryContext: getLibraryHelpContext(uri),\n predicate,\n target,\n uriContext: getUriHelpContext(uri),\n uri: formatHelpCommandUri(uri),\n });\n}\n\nexport function renderLibraryUriHelpText(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n): string {\n const helpUri = formatLibraryHelpUri(uri, target);\n return renderHelpTemplate(\"help/commands/library\", {\n target,\n uri: formatHelpCommandUri(helpUri),\n });\n}\n\nexport function renderLibraryPredicateHelpText(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n predicate: LibraryHelpPredicateName,\n): string {\n const helpUri = formatLibraryHelpUri(uri, target);\n return renderHelpTemplate(\"help/commands/library-predicate\", {\n displayUri: helpUri,\n predicate,\n target,\n uri: formatHelpCommandUri(helpUri),\n });\n}\n\nfunction formatHelpCommandUri(uri: string): string {\n return formatShellArgument(uri);\n}\n\nfunction formatLibraryHelpUri(\n fallbackUri: string,\n target: ParsedWikiGraphLibraryUri,\n): string {\n const scopeUri = formatWikiGraphLibraryUri(target.publicId);\n switch (target.kind) {\n case \"archive\":\n if (target.archivePublicId === undefined) {\n return fallbackUri.replace(/\\/+$/u, \"\");\n }\n return appendLibraryHelpPath(\n appendLibraryHelpPath(`${scopeUri}/arc`, target.archivePublicId),\n stripHelpObjectUriPrefix(target.objectUri),\n );\n case \"archive-collection\":\n return `${scopeUri}/arc`;\n case \"archive-path\":\n return target.archivePublicId === undefined\n ? `${scopeUri}/arc/path`\n : `${scopeUri}/arc/${target.archivePublicId}/path`;\n case \"archive-tree\":\n return `${scopeUri}/arc/tree`;\n case \"metadata\":\n return `${scopeUri}/meta`;\n case \"path\":\n return `${scopeUri}/path`;\n case \"registry\":\n return \"wikg://lib/registry\";\n case \"scope\":\n return appendLibraryHelpPath(\n scopeUri,\n stripHelpObjectUriPrefix(target.objectUri),\n );\n default:\n throw new Error(\"Internal error: unknown library help target.\");\n }\n}\n\nfunction appendLibraryHelpPath(\n baseUri: string,\n path: string | undefined,\n): string {\n if (path === undefined || path === \"\") {\n return baseUri;\n }\n return `${baseUri.replace(/\\/+$/u, \"\")}/${path.replace(/^\\/+|\\/+$/gu, \"\")}`;\n}\n\nfunction stripHelpObjectUriPrefix(\n objectUri: string | undefined,\n): string | undefined {\n return objectUri?.replace(/^wikg:\\/\\//u, \"\");\n}\n\nexport function isUriHelpPredicate(\n targetName: UriHelpTargetName,\n predicate: string,\n): predicate is UriHelpPredicateName {\n return requireUriHelpTarget(targetName).predicates.includes(\n predicate as UriHelpPredicateName,\n );\n}\n\nexport function renderArchiveMaintenanceCommandHelpText(\n command: CLIArchiveMaintenanceCommand,\n): string {\n return renderHelpTemplate(`help/commands/maintenance/${command}`);\n}\n\nexport function renderArchiveMaintenanceChapterActionHelpText(\n action: CLIArchiveChapterAction,\n): string {\n return renderHelpTemplate(`help/commands/maintenance/chapter/${action}`);\n}\n\nexport function parseHelpTopic(value: string): HelpTopic {\n const normalized = value.trim().toLowerCase();\n\n if (HELP_TOPICS.includes(normalized as HelpTopic)) {\n return normalized as HelpTopic;\n }\n\n throw new Error(\n withHelpRoute(\n `Invalid help topic: ${value}. Expected one of ${HELP_TOPICS.join(\", \")}.`,\n CLI_HELP_ROUTES.root,\n ),\n );\n}\n\nfunction requireUriHelpTarget(name: UriHelpTargetName): UriHelpTarget {\n const target = URI_HELP_TARGET_LOOKUP.get(name);\n\n if (target === undefined) {\n throw new Error(`Internal error: unknown URI help target ${name}.`);\n }\n\n return target;\n}\n\nfunction getLibraryHelpContext(uri: string): {\n readonly isArchiveShortcut: boolean;\n readonly isLibraryUri: boolean;\n readonly isLibraryWide: boolean;\n} {\n const target = (() => {\n try {\n return parseWikiGraphLibraryUri(uri);\n } catch {\n return undefined;\n }\n })();\n\n if (target === undefined) {\n return {\n isArchiveShortcut: false,\n isLibraryUri: false,\n isLibraryWide: false,\n };\n }\n\n return {\n isArchiveShortcut: target.kind === \"archive\",\n isLibraryUri: true,\n isLibraryWide: target.kind === \"scope\" && target.objectUri !== undefined,\n };\n}\n\nfunction getUriHelpContext(uri: string): {\n readonly isChapterQualified: boolean;\n} {\n const objectUri = getHelpObjectUri(uri);\n const target =\n objectUri === undefined ? undefined : parseChapterTarget(objectUri);\n\n return {\n isChapterQualified:\n target?.kind === \"chapter-lens\" ||\n target?.kind === \"chapter-triple-pattern-lens\",\n };\n}\n\nfunction getHelpObjectUri(uri: string): string | undefined {\n try {\n const libraryTarget = parseWikiGraphLibraryUri(uri);\n if (libraryTarget?.objectUri !== undefined) {\n return libraryTarget.objectUri;\n }\n } catch {\n // Fall through to the generic URI parser.\n }\n\n try {\n return parseLocatedWikiGraphUri(uri).objectUri;\n } catch {\n return undefined;\n }\n}\n\nfunction renderHelpTemplate(\n templateName: string,\n extraContext: Record<string, unknown> = {},\n): string {\n return getHelpTemplateEnvironment().render(templateName, {\n formats: CLI_FORMATS,\n commandName: CLI_PRIMARY_COMMAND,\n fullCommandName: CLI_FULL_COMMAND,\n helpTopics: HELP_TOPIC_METADATA,\n archiveMaintenanceCommands: ARCHIVE_MAINTENANCE_COMMAND_METADATA,\n uriHelpTargets: URI_HELP_TARGETS,\n ...extraContext,\n });\n}\n\nfunction getHelpTemplateEnvironment(): ReturnType<typeof createEnv> {\n helpTemplateEnvironment ??= createEnv(resolveDataDirPath(), {\n autoescape: false,\n });\n\n return helpTemplateEnvironment;\n}\n","import {\n parseChapterPath,\n type ArchiveTriplePattern,\n type IndexArtifactKind,\n} from \"wiki-graph-core\";\n\nimport type { ArchiveUriLens, ChapterStateUriTarget } from \"../../types.js\";\nimport {\n parseArchiveUriLensObjectUri,\n parseTriplePatternObjectUri,\n parseTriplePatternSuffix,\n} from \"../triple-pattern.js\";\n\nexport type ChapterUriTarget =\n | { readonly kind: \"collection\" }\n | { readonly kind: \"lens\"; readonly lens: ArchiveUriLens }\n | {\n readonly kind: \"triple-pattern-lens\";\n readonly pattern: ArchiveTriplePattern;\n }\n | { readonly kind: \"tree\" }\n | { readonly chapterPath: string; readonly kind: \"chapter\" }\n | {\n readonly chapterPath: string;\n readonly kind: \"chapter-lens\";\n readonly lens: ArchiveUriLens;\n }\n | {\n readonly chapterPath: string;\n readonly kind: \"chapter-triple-pattern-lens\";\n readonly pattern: ArchiveTriplePattern;\n }\n | {\n readonly chapterPath: string;\n readonly kind: \"chapter-state\";\n readonly target?: ChapterStateUriTarget;\n }\n | {\n readonly chapterPath: string;\n readonly indexArtifactKind: IndexArtifactKind;\n readonly kind: \"chapter-index-artifact\";\n }\n | {\n readonly chapterPath: string;\n readonly kind: \"chapter-resource\";\n readonly resource: \"source\" | \"summary\" | \"title\";\n }\n | {\n readonly chapterPath: string;\n readonly kind: \"source-locator-scope\";\n };\n\nexport function parseChapterTarget(\n objectUri: string,\n): ChapterUriTarget | undefined {\n if (objectUri === \"wikg://chapter\") {\n return { kind: \"collection\" };\n }\n\n if (objectUri === \"wikg://chapter/tree\") {\n return { kind: \"tree\" };\n }\n\n const archiveLens = parseArchiveUriLensObjectUri(objectUri);\n if (archiveLens !== undefined) {\n return { kind: \"lens\", lens: archiveLens };\n }\n\n const archiveTriplePattern = parseTriplePatternObjectUri(objectUri);\n if (archiveTriplePattern !== undefined) {\n return {\n kind: \"triple-pattern-lens\",\n pattern: archiveTriplePattern,\n };\n }\n\n const match = /^wikg:\\/\\/chapter\\/(.+)$/u.exec(objectUri);\n\n if (match?.[1] === undefined) {\n return undefined;\n }\n\n const parsed = parseChapterPathAndSuffix(match[1]);\n if (parsed === undefined) {\n return undefined;\n }\n const { chapterPath, suffix } = parsed;\n const chapterTriplePattern =\n suffix === undefined ? undefined : parseTriplePatternSuffix(suffix);\n\n if (chapterTriplePattern !== undefined) {\n return {\n chapterPath,\n kind: \"chapter-triple-pattern-lens\",\n pattern: chapterTriplePattern,\n };\n }\n\n const chapterStateTarget = parseChapterStateSuffix(suffix);\n\n if (chapterStateTarget !== undefined) {\n return {\n chapterPath,\n kind: \"chapter-state\",\n ...(chapterStateTarget === \"all\" ? {} : { target: chapterStateTarget }),\n };\n }\n\n const indexArtifactKind = parseChapterIndexArtifactSuffix(suffix);\n\n if (indexArtifactKind !== undefined) {\n return {\n chapterPath,\n indexArtifactKind,\n kind: \"chapter-index-artifact\",\n };\n }\n\n if (suffix === \"source/locators\") {\n return { chapterPath, kind: \"source-locator-scope\" };\n }\n\n const resource = parseChapterResourceSuffix(suffix);\n\n if (suffix !== undefined && resource === undefined) {\n return undefined;\n }\n\n if (resource === undefined) {\n return { chapterPath, kind: \"chapter\" };\n }\n if (resource === \"state\") {\n return { chapterPath, kind: \"chapter-state\" };\n }\n if (resource === \"chunk\" || resource === \"entity\" || resource === \"triple\") {\n return { chapterPath, kind: \"chapter-lens\", lens: resource };\n }\n if (resource === \"source\" || resource === \"summary\") {\n return { chapterPath, kind: \"chapter-resource\", resource };\n }\n\n return { chapterPath, kind: \"chapter-resource\", resource };\n}\n\nfunction parseChapterPathAndSuffix(\n value: string,\n): { readonly chapterPath: string; readonly suffix?: string } | undefined {\n const pathWithoutFragment = value.replace(/#.*$/u, \"\");\n const parts = pathWithoutFragment.replace(/\\/+$/u, \"\").split(\"/\");\n const suffixStart = parts.findIndex((part) =>\n [\n \"chunk\",\n \"entity\",\n \"index\",\n \"source\",\n \"state\",\n \"summary\",\n \"title\",\n \"triple\",\n ].includes(part),\n );\n const pathParts = suffixStart === -1 ? parts : parts.slice(0, suffixStart);\n const suffixParts = suffixStart === -1 ? [] : parts.slice(suffixStart);\n\n const chapterPath = parseChapterPath(pathParts.join(\"/\"), \"chapter URI\");\n return {\n chapterPath,\n ...(suffixParts.length === 0 ? {} : { suffix: suffixParts.join(\"/\") }),\n };\n}\n\nfunction parseChapterIndexArtifactSuffix(\n suffix: string | undefined,\n): IndexArtifactKind | undefined {\n switch (suffix) {\n case \"index/fts\":\n return \"fts\";\n case \"index/embedding/source\":\n return \"embedding-source\";\n case \"index/embedding/summary\":\n return \"embedding-summary\";\n default:\n return undefined;\n }\n}\n\nfunction parseChapterStateSuffix(\n suffix: string | undefined,\n): ChapterStateUriTarget | \"all\" | undefined {\n if (suffix === \"state\") {\n return \"all\";\n }\n\n switch (suffix) {\n case \"state/source\":\n return \"source\";\n case \"state/reading-graph\":\n return \"reading-graph\";\n case \"state/reading-summary\":\n return \"reading-summary\";\n case \"state/knowledge-graph\":\n return \"knowledge-graph\";\n default:\n return undefined;\n }\n}\n\nfunction parseChapterResourceSuffix(\n suffix: string | undefined,\n):\n | \"chunk\"\n | \"entity\"\n | \"source\"\n | \"state\"\n | \"summary\"\n | \"title\"\n | \"triple\"\n | undefined {\n switch (suffix) {\n case undefined:\n case \"chunk\":\n case \"entity\":\n case \"source\":\n case \"state\":\n case \"summary\":\n case \"title\":\n case \"triple\":\n return suffix;\n default:\n return undefined;\n }\n}\n","import type { ArchiveTriplePattern } from \"wiki-graph-core\";\n\nimport type { ArchiveUriLens } from \"../types.js\";\n\nexport function parseTriplePatternObjectUri(\n objectUri: string,\n): ArchiveTriplePattern | undefined {\n if (!objectUri.startsWith(\"wikg://triple/\")) {\n return undefined;\n }\n\n return parseTriplePatternSuffix(objectUri.slice(\"wikg://\".length));\n}\n\nexport function parseTriplePatternSuffix(\n suffix: string,\n): ArchiveTriplePattern | undefined {\n const parts = suffix.split(\"/\");\n\n if (parts[0] !== \"triple\" || parts.length < 2 || parts.length > 4) {\n return undefined;\n }\n\n const [subject = \"_\", predicate = \"_\", object = \"_\"] = parts.slice(1);\n const hasPlaceholder = parts.slice(1).includes(\"_\");\n const hasOmittedTrailingPlaceholder = parts.length < 4;\n\n if (!hasPlaceholder && !hasOmittedTrailingPlaceholder) {\n return undefined;\n }\n\n if (\n !isTriplePatternQidSegment(subject) ||\n !isTriplePatternPredicateSegment(predicate) ||\n !isTriplePatternQidSegment(object)\n ) {\n return undefined;\n }\n\n return {\n ...(object === \"_\" ? {} : { objectQid: object }),\n ...(predicate === \"_\" ? {} : { predicate: decodeURIComponent(predicate) }),\n ...(subject === \"_\" ? {} : { subjectQid: subject }),\n };\n}\n\nexport function isTripleScopePath(path: string): boolean {\n if (path === \"triple\" || /^chapter\\/[1-9][0-9]*\\/triple$/u.test(path)) {\n return true;\n }\n\n const suffix = path.startsWith(\"chapter/\")\n ? /^chapter\\/[1-9][0-9]*\\/(.+)$/u.exec(path)?.[1]\n : path;\n\n return suffix === undefined\n ? false\n : parseTriplePatternSuffix(suffix) !== undefined;\n}\n\nfunction isTriplePatternQidSegment(value: string): boolean {\n return value === \"_\" || /^Q[1-9][0-9]*$/u.test(value);\n}\n\nfunction isTriplePatternPredicateSegment(value: string): boolean {\n return value === \"_\" || (value !== \"\" && !value.includes(\"/\"));\n}\n\nexport function parseArchiveUriLensObjectUri(\n objectUri: string,\n): ArchiveUriLens | undefined {\n switch (objectUri) {\n case \"wikg://chapter\":\n return \"chapter\";\n case \"wikg://chunk\":\n return \"chunk\";\n case \"wikg://entity\":\n return \"entity\";\n case \"wikg://triple\":\n return \"triple\";\n default:\n return undefined;\n }\n}\n","import {\n inferCLIFormatFromPath,\n parseCLIFormat,\n parseLocatedWikiGraphUri,\n withHelpRoute,\n} from \"../support/index.js\";\nimport { renderArchiveCommandHelpText } from \"./help.js\";\nimport { type ArchiveTriplePattern } from \"wiki-graph-core\";\nimport type {\n ArchiveArgumentValues,\n CLIArchiveAction,\n CLIObjectKind,\n ParsedCLIArguments,\n} from \"./types.js\";\nimport {\n formatMissingArchiveInputMessage,\n normalizeArchiveInlineOptions,\n parseArchiveInspectChapterId,\n parseEvidenceFlag,\n parseNonNegativeIntegerFlag,\n parsePositiveIntegerFlag,\n parseRelatedRoleFlag,\n parseResultFormat,\n parseSourceContextFlag,\n rejectArchiveBooleanFlag,\n rejectArchiveExtraPositionals,\n rejectArchiveFlag,\n rejectArchiveNonReadFlags,\n rejectArchiveReverseQuery,\n validateArchiveCommandUriInput,\n validateEvidenceTargetUri,\n validatePackTargetUri,\n validateRelatedTargetUri,\n} from \"./helpers.js\";\n\nexport function parseArchiveArguments(\n action: CLIArchiveAction,\n positionals: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute = `wg ${action} --help`,\n options: {\n readonly defaultKinds?: readonly CLIObjectKind[];\n readonly triplePattern?: ArchiveTriplePattern;\n } = {},\n): ParsedCLIArguments {\n const normalized = normalizeArchiveInlineOptions(positionals, values);\n\n positionals = normalized.positionals;\n values = normalized.values;\n\n const archivePath = positionals[0];\n\n if (values.help === true) {\n return {\n help: true,\n helpText: renderArchiveCommandHelpText(action),\n kind: \"help\",\n };\n }\n\n if (archivePath === undefined || archivePath === \"-\") {\n throw new Error(\n withHelpRoute(formatMissingArchiveInputMessage(action), helpRoute),\n );\n }\n\n validateArchiveCommandUriInput(action, archivePath);\n\n if (values.verbose === true) {\n throw new Error(\n withHelpRoute(\n `The \\`${action}\\` command does not support --verbose.`,\n helpRoute,\n ),\n );\n }\n\n rejectNonQuerySkipUnindexedFlag(action, values, helpRoute);\n\n switch (action) {\n case \"create\": {\n rejectArchiveExtraPositionals(action, positionals, 1, helpRoute);\n rejectArchiveFlag(action, \"--input\", values.input, helpRoute);\n rejectArchiveFlag(\n action,\n \"--input-format\",\n values[\"input-format\"],\n helpRoute,\n );\n rejectArchiveFlag(action, \"--output\", values.output, helpRoute);\n rejectArchiveFlag(\n action,\n \"--output-format\",\n values[\"output-format\"],\n helpRoute,\n );\n rejectArchiveFlag(action, \"--stage\", values.stage, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveFlag(action, \"--chapter\", values.chapter, helpRoute);\n rejectArchiveFlag(action, \"--context\", values.context, helpRoute);\n rejectArchiveFlag(action, \"--limit\", values.limit, helpRoute);\n rejectArchiveFlag(action, \"--depth\", values.depth, helpRoute);\n rejectArchiveFlag(action, \"--evidence\", values.evidence, helpRoute);\n rejectArchiveFlag(action, \"--budget\", values.budget, helpRoute);\n rejectArchiveBooleanFlag(action, \"--all\", values.all, helpRoute);\n rejectArchiveBooleanFlag(\n action,\n \"--backlinks\",\n values.backlinks,\n helpRoute,\n );\n rejectArchiveFlag(action, \"--role\", values.role, helpRoute);\n rejectArchiveFlag(action, \"--llm\", values.llm, helpRoute);\n rejectArchiveFlag(action, \"--prompt\", values.prompt, helpRoute);\n rejectArchiveFlag(action, \"--query\", values.query, helpRoute);\n rejectArchiveBooleanFlag(action, \"--reverse\", values.reverse, helpRoute);\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n if (\n values.import !== undefined &&\n inferCLIFormatFromPath(values.import) !== \"epub\"\n ) {\n throw new Error(\n withHelpRoute(\n \"`create --import` only supports EPUB input.\",\n helpRoute,\n ),\n );\n }\n return {\n args: {\n action,\n archivePath,\n ...(values.import === undefined ? {} : { importPath: values.import }),\n ...(values.json === undefined ? {} : { json: values.json }),\n ...(values.replace === undefined ? {} : { replace: values.replace }),\n },\n help: false,\n kind: \"archive\",\n };\n }\n case \"export\":\n rejectArchiveExtraPositionals(action, positionals, 1, helpRoute);\n rejectArchiveFlag(action, \"--import\", values.import, helpRoute);\n rejectArchiveFlag(action, \"--input\", values.input, helpRoute);\n rejectArchiveFlag(\n action,\n \"--input-format\",\n values[\"input-format\"],\n helpRoute,\n );\n rejectArchiveFlag(action, \"--prompt\", values.prompt, helpRoute);\n rejectArchiveFlag(action, \"--stage\", values.stage, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveFlag(action, \"--chapter\", values.chapter, helpRoute);\n rejectArchiveFlag(action, \"--context\", values.context, helpRoute);\n rejectArchiveFlag(action, \"--limit\", values.limit, helpRoute);\n rejectArchiveFlag(action, \"--depth\", values.depth, helpRoute);\n rejectArchiveFlag(action, \"--evidence\", values.evidence, helpRoute);\n rejectArchiveFlag(action, \"--budget\", values.budget, helpRoute);\n rejectArchiveBooleanFlag(action, \"--all\", values.all, helpRoute);\n rejectArchiveBooleanFlag(\n action,\n \"--backlinks\",\n values.backlinks,\n helpRoute,\n );\n rejectArchiveFlag(action, \"--role\", values.role, helpRoute);\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n rejectArchiveBooleanFlag(action, \"--json\", values.json, helpRoute);\n return {\n args: {\n action,\n archivePath,\n ...(values.output === undefined ? {} : { outputPath: values.output }),\n outputFormat:\n values[\"output-format\"] === undefined\n ? parseCLIFormat(\"markdown\", \"--output-format\")\n : parseCLIFormat(values[\"output-format\"], \"--output-format\"),\n },\n help: false,\n kind: \"archive\",\n };\n case \"inspect\": {\n const chapterId = parseArchiveInspectChapterId(positionals[0]);\n const parsedArchivePath =\n parseLocatedWikiGraphUri(archivePath).archivePath ?? archivePath;\n\n rejectArchiveExtraPositionals(action, positionals, 1, helpRoute);\n rejectArchiveNonReadFlags(action, values, helpRoute);\n rejectArchiveFlag(action, \"--budget\", values.budget, helpRoute);\n rejectArchiveFlag(action, \"--chapter\", values.chapter, helpRoute);\n rejectArchiveFlag(action, \"--context\", values.context, helpRoute);\n rejectArchiveFlag(action, \"--cursor\", values.cursor, helpRoute);\n rejectArchiveFlag(action, \"--depth\", values.depth, helpRoute);\n rejectArchiveFlag(action, \"--evidence\", values.evidence, helpRoute);\n rejectArchiveFlag(action, \"--from\", values.from, helpRoute);\n rejectArchiveFlag(action, \"--query\", values.query, helpRoute);\n rejectArchiveFlag(action, \"--stage\", values.stage, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveBooleanFlag(action, \"--all\", values.all, helpRoute);\n rejectArchiveBooleanFlag(\n action,\n \"--backlinks\",\n values.backlinks,\n helpRoute,\n );\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n rejectArchiveFlag(action, \"--limit\", values.limit, helpRoute);\n rejectArchiveFlag(action, \"--role\", values.role, helpRoute);\n return {\n args: {\n action,\n archivePath: parsedArchivePath,\n ...(chapterId === undefined ? {} : { chapterId }),\n ...(values.json === true ? { json: true } : {}),\n },\n help: false,\n kind: \"archive\",\n };\n }\n case \"search\": {\n const query = values.query;\n\n if (query === undefined) {\n throw new Error(\n withHelpRoute(\"Scope keyword retrieval requires --query.\", helpRoute),\n );\n }\n rejectArchiveExtraPositionals(action, positionals, 1, helpRoute);\n rejectArchiveNonReadFlags(action, values, helpRoute);\n rejectArchiveFlag(action, \"--budget\", values.budget, helpRoute);\n rejectArchiveFlag(action, \"--chapter\", values.chapter, helpRoute);\n rejectArchiveFlag(action, \"--from\", values.from, helpRoute);\n rejectArchiveFlag(action, \"--role\", values.role, helpRoute);\n rejectArchiveBooleanFlag(action, \"--reverse\", values.reverse, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n rejectNonChapterDepthFlag(action, archivePath, values.depth, helpRoute);\n\n return {\n args: {\n action,\n ...(values.all === undefined ? {} : { all: values.all }),\n archivePath,\n ...(values.backlinks === undefined\n ? {}\n : { backlinks: values.backlinks }),\n ...(values.cursor === undefined ? {} : { cursor: values.cursor }),\n ...(values.depth === undefined\n ? {}\n : {\n depth: parseNonNegativeIntegerFlag(\n values.depth,\n \"--depth\",\n helpRoute,\n ),\n }),\n ...parseSourceContextFlag(values.context, helpRoute),\n ...parseEvidenceFlag(values.evidence, helpRoute),\n format: parseResultFormat(values),\n ...(values.limit === undefined\n ? {}\n : {\n limit: parsePositiveIntegerFlag(\n values.limit,\n \"--limit\",\n helpRoute,\n ),\n }),\n query,\n ...(values[\"skip-unindexed\"] === true ? { skipUnindexed: true } : {}),\n ...(options.defaultKinds === undefined\n ? {}\n : { kinds: options.defaultKinds }),\n ...(options.triplePattern === undefined\n ? {}\n : { triplePattern: options.triplePattern }),\n },\n help: false,\n kind: \"archive\",\n };\n }\n case \"list\": {\n rejectArchiveExtraPositionals(action, positionals, 1, helpRoute);\n rejectArchiveNonReadFlags(action, values, helpRoute);\n rejectArchiveFlag(action, \"--budget\", values.budget, helpRoute);\n rejectArchiveFlag(action, \"--chapter\", values.chapter, helpRoute);\n rejectArchiveFlag(action, \"--from\", values.from, helpRoute);\n rejectArchiveFlag(action, \"--role\", values.role, helpRoute);\n rejectArchiveFlag(action, \"--query\", values.query, helpRoute);\n rejectArchiveReverseQuery(values, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n rejectNonChapterDepthFlag(action, archivePath, values.depth, helpRoute);\n return {\n args: {\n action,\n ...(values.all === undefined ? {} : { all: values.all }),\n archivePath,\n ...(values.backlinks === undefined\n ? {}\n : { backlinks: values.backlinks }),\n ...(values.cursor === undefined ? {} : { cursor: values.cursor }),\n ...(values.depth === undefined\n ? {}\n : {\n depth: parseNonNegativeIntegerFlag(\n values.depth,\n \"--depth\",\n helpRoute,\n ),\n }),\n ...parseSourceContextFlag(values.context, helpRoute),\n ...parseEvidenceFlag(values.evidence, helpRoute),\n format: parseResultFormat(values),\n ...(values.limit === undefined\n ? {}\n : {\n limit: parsePositiveIntegerFlag(\n values.limit,\n \"--limit\",\n helpRoute,\n ),\n }),\n ...(values.reverse === true ? { reverse: true } : {}),\n ...(options.defaultKinds === undefined\n ? {}\n : { kinds: options.defaultKinds }),\n ...(options.triplePattern === undefined\n ? {}\n : { triplePattern: options.triplePattern }),\n },\n help: false,\n kind: \"archive\",\n };\n }\n case \"get\": {\n rejectArchiveExtraPositionals(action, positionals, 1, helpRoute);\n rejectArchiveNonReadFlags(action, values, helpRoute);\n rejectArchiveFlag(action, \"--budget\", values.budget, helpRoute);\n rejectArchiveFlag(action, \"--chapter\", values.chapter, helpRoute);\n rejectArchiveFlag(action, \"--from\", values.from, helpRoute);\n rejectArchiveFlag(action, \"--limit\", values.limit, helpRoute);\n rejectArchiveFlag(action, \"--cursor\", values.cursor, helpRoute);\n rejectArchiveFlag(action, \"--depth\", values.depth, helpRoute);\n rejectArchiveFlag(action, \"--query\", values.query, helpRoute);\n rejectArchiveReverseQuery(values, helpRoute);\n rejectArchiveFlag(action, \"--role\", values.role, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveBooleanFlag(action, \"--all\", values.all, helpRoute);\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n return {\n args: {\n action,\n archivePath,\n ...(values.backlinks === undefined\n ? {}\n : { backlinks: values.backlinks }),\n ...parseSourceContextFlag(values.context, helpRoute),\n ...parseEvidenceFlag(values.evidence, helpRoute),\n format: parseResultFormat(values),\n objectId: archivePath,\n ...(values.reverse === true ? { reverse: true } : {}),\n },\n help: false,\n kind: \"archive\",\n };\n }\n case \"related\": {\n rejectArchiveExtraPositionals(action, positionals, 1, helpRoute);\n rejectArchiveNonReadFlags(action, values, helpRoute);\n rejectArchiveBooleanFlag(\n action,\n \"--backlinks\",\n values.backlinks,\n helpRoute,\n );\n rejectArchiveFlag(action, \"--budget\", values.budget, helpRoute);\n rejectArchiveFlag(action, \"--chapter\", values.chapter, helpRoute);\n rejectArchiveFlag(action, \"--depth\", values.depth, helpRoute);\n rejectArchiveFlag(action, \"--from\", values.from, helpRoute);\n const relatedTarget = validateRelatedTargetUri(archivePath, helpRoute);\n if (relatedTarget === \"chunk\") {\n rejectArchiveFlag(action, \"--role\", values.role, helpRoute);\n }\n rejectArchiveReverseQuery(values, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n return {\n args: {\n action,\n ...(values.all === undefined ? {} : { all: values.all }),\n archivePath,\n ...(values.cursor === undefined ? {} : { cursor: values.cursor }),\n ...parseSourceContextFlag(values.context, helpRoute),\n ...parseEvidenceFlag(values.evidence, helpRoute),\n format: parseResultFormat(values),\n ...(values.limit === undefined\n ? {}\n : {\n limit: parsePositiveIntegerFlag(\n values.limit,\n \"--limit\",\n helpRoute,\n ),\n }),\n objectId: archivePath,\n ...(values.query === undefined ? {} : { query: values.query }),\n ...(values.reverse === true ? { reverse: true } : {}),\n ...(values[\"skip-unindexed\"] === true ? { skipUnindexed: true } : {}),\n ...(relatedTarget === \"entity\"\n ? parseRelatedRoleFlag(values.role, helpRoute)\n : {}),\n },\n help: false,\n kind: \"archive\",\n };\n }\n case \"evidence\": {\n rejectArchiveExtraPositionals(action, positionals, 1, helpRoute);\n rejectArchiveNonReadFlags(action, values, helpRoute);\n rejectArchiveBooleanFlag(\n action,\n \"--backlinks\",\n values.backlinks,\n helpRoute,\n );\n rejectArchiveFlag(action, \"--budget\", values.budget, helpRoute);\n rejectArchiveFlag(action, \"--chapter\", values.chapter, helpRoute);\n rejectArchiveFlag(action, \"--depth\", values.depth, helpRoute);\n rejectArchiveFlag(action, \"--from\", values.from, helpRoute);\n rejectArchiveFlag(action, \"--role\", values.role, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveFlag(action, \"--evidence\", values.evidence, helpRoute);\n rejectArchiveReverseQuery(values, helpRoute);\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n validateEvidenceTargetUri(archivePath, helpRoute);\n return {\n args: {\n action,\n ...(values.all === undefined ? {} : { all: values.all }),\n archivePath,\n ...(values.cursor === undefined ? {} : { cursor: values.cursor }),\n ...parseSourceContextFlag(values.context, helpRoute),\n format: parseResultFormat(values),\n ...(values.limit === undefined\n ? {}\n : {\n limit: parsePositiveIntegerFlag(\n values.limit,\n \"--limit\",\n helpRoute,\n ),\n }),\n objectId: archivePath,\n ...(values.query === undefined ? {} : { query: values.query }),\n ...(values.reverse === true ? { reverse: true } : {}),\n ...(values[\"skip-unindexed\"] === true ? { skipUnindexed: true } : {}),\n },\n help: false,\n kind: \"archive\",\n };\n }\n case \"pack\": {\n rejectArchiveExtraPositionals(action, positionals, 1, helpRoute);\n rejectArchiveNonReadFlags(action, values, helpRoute);\n rejectArchiveBooleanFlag(\n action,\n \"--backlinks\",\n values.backlinks,\n helpRoute,\n );\n rejectArchiveFlag(action, \"--chapter\", values.chapter, helpRoute);\n rejectArchiveFlag(action, \"--context\", values.context, helpRoute);\n rejectArchiveFlag(action, \"--depth\", values.depth, helpRoute);\n rejectArchiveFlag(action, \"--from\", values.from, helpRoute);\n rejectArchiveFlag(action, \"--limit\", values.limit, helpRoute);\n rejectArchiveFlag(action, \"--cursor\", values.cursor, helpRoute);\n rejectArchiveFlag(action, \"--evidence\", values.evidence, helpRoute);\n rejectArchiveBooleanFlag(action, \"--reverse\", values.reverse, helpRoute);\n rejectArchiveFlag(action, \"--role\", values.role, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveBooleanFlag(action, \"--all\", values.all, helpRoute);\n validatePackTargetUri(archivePath, helpRoute);\n return {\n args: {\n action,\n archivePath,\n budget:\n values.budget === undefined\n ? 5000\n : parsePositiveIntegerFlag(values.budget, \"--budget\", helpRoute),\n format: parseResultFormat(values),\n objectId: archivePath,\n },\n help: false,\n kind: \"archive\",\n };\n }\n case \"next\": {\n rejectArchiveExtraPositionals(action, positionals, 2, helpRoute);\n rejectArchiveNonReadFlags(action, values, helpRoute);\n rejectArchiveFlag(action, \"--budget\", values.budget, helpRoute);\n rejectArchiveFlag(action, \"--chapter\", values.chapter, helpRoute);\n rejectArchiveFlag(action, \"--depth\", values.depth, helpRoute);\n rejectArchiveFlag(action, \"--context\", values.context, helpRoute);\n rejectArchiveFlag(action, \"--cursor\", values.cursor, helpRoute);\n rejectArchiveFlag(action, \"--evidence\", values.evidence, helpRoute);\n rejectArchiveFlag(action, \"--from\", values.from, helpRoute);\n rejectArchiveBooleanFlag(action, \"--reverse\", values.reverse, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveBooleanFlag(action, \"--all\", values.all, helpRoute);\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n\n return {\n args: {\n action,\n archivePath,\n ...(positionals[1] === undefined ? {} : { cursor: positionals[1] }),\n format: parseResultFormat(values),\n ...(values.limit === undefined\n ? {}\n : {\n limit: parsePositiveIntegerFlag(\n values.limit,\n \"--limit\",\n helpRoute,\n ),\n }),\n },\n help: false,\n kind: \"archive\",\n };\n }\n }\n}\n\nfunction rejectNonChapterDepthFlag(\n action: CLIArchiveAction,\n archivePath: string,\n depth: string | undefined,\n helpRoute: string,\n): void {\n if (depth === undefined) {\n return;\n }\n\n const objectUri = parseLocatedWikiGraphUri(archivePath).objectUri;\n if (\n objectUri === \"wikg://chapter\" ||\n objectUri?.startsWith(\"wikg://chapter/\") === true\n ) {\n return;\n }\n\n rejectArchiveFlag(action, \"--depth\", depth, helpRoute);\n}\n\nfunction rejectNonQuerySkipUnindexedFlag(\n action: CLIArchiveAction,\n values: ArchiveArgumentValues,\n helpRoute: string,\n): void {\n if (values[\"skip-unindexed\"] !== true) {\n return;\n }\n if (\n action === \"search\" ||\n ((action === \"related\" || action === \"evidence\") &&\n values.query !== undefined)\n ) {\n return;\n }\n\n rejectArchiveBooleanFlag(\n action,\n \"--skip-unindexed\",\n values[\"skip-unindexed\"],\n helpRoute,\n );\n}\n","import { CLI_HELP_ROUTES, withHelpRoute } from \"../../support/index.js\";\nimport type { BuildJobTarget } from \"wiki-graph-core\";\nimport type {\n CLIArchiveAction,\n CLIArchiveIndexAction,\n CLIArchiveUriAction,\n CLIJobAction,\n CLIMetadataAction,\n} from \"../types.js\";\nimport { isArchiveChapterAction } from \"./chapter/index.js\";\n\nexport function isArchiveAction(\n value: string | undefined,\n): value is CLIArchiveAction {\n return (\n value === \"create\" ||\n value === \"evidence\" ||\n value === \"export\" ||\n value === \"get\" ||\n value === \"inspect\" ||\n value === \"list\" ||\n value === \"next\" ||\n value === \"pack\" ||\n value === \"related\" ||\n value === \"search\"\n );\n}\n\nexport function isPublicArchiveCommandHelpAction(\n value: string | undefined,\n): value is \"next\" {\n return value === \"next\";\n}\n\nexport function isRemovedImplicitArchiveAction(\n value: string | undefined,\n): value is \"get\" | \"list\" | \"search\" {\n return value === \"get\" || value === \"list\" || value === \"search\";\n}\n\nexport function formatRemovedImplicitVerbMessage(\n _action: \"get\" | \"list\" | \"search\",\n): string {\n return withHelpRoute(\n \"This command form is not available. Pass the URI directly, or add --query to a scope URI.\",\n CLI_HELP_ROUTES.uri,\n );\n}\n\nexport function isArchiveUriAction(\n value: string | undefined,\n): value is CLIArchiveUriAction {\n return (\n value === \"build\" ||\n isArchiveAction(value) ||\n isArchiveChapterAction(value) ||\n isArchiveIndexAction(value) ||\n isMetadataAction(value)\n );\n}\n\nexport function isArchiveIndexAction(\n value: string | undefined,\n): value is CLIArchiveIndexAction {\n return value === \"clean\" || value === \"get\" || value === \"sync\";\n}\n\nexport function isMetadataAction(\n value: string | undefined,\n): value is CLIMetadataAction {\n return (\n value === \"clear\" ||\n value === \"delete\" ||\n value === \"get\" ||\n value === \"put\" ||\n value === \"set\"\n );\n}\n\nexport function isUriFirstArchiveAction(\n value: string | undefined,\n): value is \"evidence\" | \"get\" | \"list\" | \"pack\" | \"related\" | \"search\" {\n return (\n value === \"evidence\" ||\n value === \"get\" ||\n value === \"list\" ||\n value === \"pack\" ||\n value === \"related\" ||\n value === \"search\"\n );\n}\n\nexport function isImplicitArchiveReadAction(\n value: CLIArchiveUriAction,\n): value is \"get\" | \"list\" | \"search\" {\n return value === \"get\" || value === \"list\" || value === \"search\";\n}\nexport function isJobUriAction(\n value: string | undefined,\n): value is CLIJobAction {\n return (\n value === \"add\" ||\n value === \"boost\" ||\n value === \"cancel\" ||\n value === \"clean\" ||\n value === \"get\" ||\n value === \"list\" ||\n value === \"pause\" ||\n value === \"resume\" ||\n value === \"set\" ||\n value === \"watch\"\n );\n}\n\nexport function parseBuildJobTarget(value: string | undefined): BuildJobTarget {\n switch (value) {\n case undefined:\n case \"reading-summary\":\n return \"reading-summary\";\n case \"index-fts\":\n return \"index-fts\";\n case \"index-embedding-source\":\n return \"index-embedding-source\";\n case \"index-embedding-summary\":\n return \"index-embedding-summary\";\n case \"reading-graph\":\n return \"reading-graph\";\n case \"knowledge-graph\":\n return \"knowledge-graph\";\n default:\n throw new Error(\n withHelpRoute(\n `Invalid queue task: ${value}. Expected index-fts, index-embedding-source, index-embedding-summary, reading-graph, reading-summary, or knowledge-graph.`,\n \"wg wikg://local/job add --help\",\n ),\n );\n }\n}\n","import type {\n CLIArchiveChapterAction,\n CLIArchiveMaintenanceCommand,\n} from \"../../types.js\";\n\nexport function isArchiveChapterAction(\n value: string | undefined,\n): value is CLIArchiveChapterAction {\n return (\n value === \"add\" ||\n value === \"list\" ||\n value === \"move\" ||\n value === \"remove\" ||\n value === \"reset\" ||\n value === \"set-source\" ||\n value === \"set-summary\" ||\n value === \"set-title\" ||\n value === \"tree\"\n );\n}\n\nexport function isArchiveMaintenanceCommand(\n value: string | undefined,\n): value is CLIArchiveMaintenanceCommand {\n return value === \"chapter\" || value === \"cover\" || value === \"meta\";\n}\n","import { parseChapterPath, parseChapterUriPath } from \"wiki-graph-core\";\n\nimport {\n parseLocatedWikiGraphUri,\n withHelpRoute,\n} from \"../../../support/index.js\";\nimport { isWikiGraphUri } from \"../uri.js\";\n\nexport function parseSerialId(\n value: string,\n flag: string,\n helpRoute: string,\n): number {\n const normalized = value.trim();\n\n if (!/^\\d+$/u.test(normalized)) {\n throw new Error(\n withHelpRoute(\n `Invalid ${flag}: ${value}. Expected a non-negative integer.`,\n helpRoute,\n ),\n );\n }\n\n return Number(normalized);\n}\n\nexport function parseChapterRef(\n value: string,\n flag: string,\n archivePath: string,\n helpRoute: string,\n): number {\n const normalized = value.trim();\n\n if (!isWikiGraphUri(normalized)) {\n return parseSerialId(value, flag, helpRoute);\n }\n\n const parsed = parseLocatedWikiGraphUri(normalized);\n\n if (parsed.archivePath !== undefined && parsed.archivePath !== archivePath) {\n throw new Error(\n withHelpRoute(\n `Invalid ${flag}: ${value}. Chapter URI belongs to a different archive.`,\n helpRoute,\n ),\n );\n }\n\n const objectUri = parsed.objectUri ?? normalized;\n const match = /^wikg:\\/\\/chapter\\/([1-9][0-9]*)\\/?$/u.exec(objectUri);\n\n if (match?.[1] === undefined) {\n throw new Error(\n withHelpRoute(\n `Invalid ${flag}: ${value}. Expected a chapter URI such as wikg://chapter/part/intro.`,\n helpRoute,\n ),\n );\n }\n\n return Number(match[1]);\n}\n\nexport function parseChapterPathRef(\n value: string,\n flag: string,\n archivePath: string,\n helpRoute: string,\n): string {\n const normalized = value.trim();\n try {\n if (!isWikiGraphUri(normalized)) {\n return parseChapterPath(normalized, flag);\n }\n\n const parsed = parseLocatedWikiGraphUri(normalized);\n if (\n parsed.archivePath !== undefined &&\n parsed.archivePath !== archivePath\n ) {\n throw new Error(\n `Invalid ${flag}: ${value}. Chapter URI belongs to a different archive.`,\n );\n }\n\n const path = parseChapterUriPath(parsed.objectUri ?? normalized);\n if (path === undefined) {\n throw new Error(\n `Invalid ${flag}: ${value}. Expected a chapter path or URI.`,\n );\n }\n return path;\n } catch (error) {\n throw new Error(\n withHelpRoute(\n error instanceof Error ? error.message : String(error),\n helpRoute,\n ),\n );\n }\n}\n","import {\n CLI_HELP_ROUTES,\n parseLocatedWikiGraphUri,\n withHelpRoute,\n} from \"../../support/index.js\";\nimport {\n parseLocalConfigSection,\n type LocalConfigSection,\n} from \"../../runtime/local-config.js\";\nimport {\n parseWikiGraphUriSyntax,\n WIKI_GRAPH_URI_PREFIX,\n} from \"wiki-graph-core\";\nimport type { CLIArchiveAction } from \"../types.js\";\n\nexport function validateArchiveCommandUriInput(\n action: CLIArchiveAction,\n value: string,\n): void {\n if (\n action === \"create\" ||\n action === \"export\" ||\n action === \"inspect\" ||\n action === \"next\"\n ) {\n return;\n }\n\n if (isWikiGraphUri(value)) {\n if (parseLocatedWikiGraphUri(value).archivePath === undefined) {\n throw new Error(formatMissingArchiveLocatorMessage(value));\n }\n return;\n }\n\n if (!looksLikeWikgPath(value)) {\n return;\n }\n\n throw new Error(formatPathAsUriMessage(value));\n}\n\nexport function parseArchiveInspectChapterId(\n uri: string | undefined,\n): number | undefined {\n if (uri === undefined || !isWikiGraphUri(uri)) {\n return undefined;\n }\n\n const objectUri = parseLocatedWikiGraphUri(uri).objectUri;\n const match =\n objectUri === undefined\n ? undefined\n : /^wikg:\\/\\/chapter\\/([1-9][0-9]*)$/u.exec(objectUri);\n\n return match?.[1] === undefined ? undefined : Number(match[1]);\n}\n\nexport function validatePackTargetUri(uri: string, helpRoute: string): void {\n const parsed = parseLocatedWikiGraphUri(uri);\n\n if (parsed.archivePath === undefined) {\n throw new Error(\n withHelpRoute(formatMissingArchiveLocatorMessage(uri), helpRoute),\n );\n }\n if (parsed.objectUri === undefined) {\n throw new Error(\n withHelpRoute(formatPackObjectMismatchMessage(uri), CLI_HELP_ROUTES.uri),\n );\n }\n if (!isPackableObjectUri(parsed.objectUri)) {\n throw new Error(\n withHelpRoute(formatPackObjectMismatchMessage(uri), helpRoute),\n );\n }\n}\n\nexport function validateRelatedTargetUri(\n uri: string,\n helpRoute: string,\n): \"chunk\" | \"entity\" {\n const parsed = parseLocatedWikiGraphUri(uri);\n\n if (parsed.archivePath === undefined) {\n throw new Error(\n withHelpRoute(formatMissingArchiveLocatorMessage(uri), helpRoute),\n );\n }\n if (parsed.objectUri === undefined) {\n throw new Error(\n withHelpRoute(\n `Related requires a chunk or entity URI: ${uri}`,\n CLI_HELP_ROUTES.uri,\n ),\n );\n }\n const targetType = getRelatedObjectUriType(parsed.objectUri);\n\n if (targetType === undefined) {\n throw new Error(\n withHelpRoute(\n `Related is only available for chunk and entity objects: ${uri}`,\n helpRoute,\n ),\n );\n }\n\n return targetType;\n}\n\nexport function validateEvidenceTargetUri(\n uri: string,\n helpRoute: string,\n): void {\n const parsed = parseLocatedWikiGraphUri(uri);\n\n if (parsed.archivePath === undefined) {\n throw new Error(\n withHelpRoute(formatMissingArchiveLocatorMessage(uri), helpRoute),\n );\n }\n if (\n parsed.objectUri === undefined ||\n !isEvidenceObjectUri(parsed.objectUri)\n ) {\n throw new Error(\n withHelpRoute(\n `Evidence is only available for chunk, entity, and triple objects: ${uri}`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function isEvidenceObjectUri(objectUri: string): boolean {\n const path = stripObjectUriPrefix(objectUri);\n const normalized = path.startsWith(\"chapter/\")\n ? /^chapter\\/[1-9][0-9]*\\/(.+)$/u.exec(path)?.[1]\n : path;\n if (normalized === undefined) {\n return false;\n }\n const parts = normalized.split(\"/\");\n return (\n (parts[0] === \"chunk\" && parts.length === 2) ||\n (parts[0] === \"entity\" && parts.length === 2) ||\n (parts[0] === \"triple\" && parts.length === 4)\n );\n}\n\nexport function isPackableObjectUri(objectUri: string): boolean {\n return (\n /^wikg:\\/\\/chunk\\/[1-9][0-9]*$/u.test(objectUri) ||\n /^wikg:\\/\\/chapter\\/[1-9][0-9]*\\/chunk\\/[1-9][0-9]*$/u.test(objectUri) ||\n /^wikg:\\/\\/entity\\/[^/]+$/u.test(objectUri) ||\n /^wikg:\\/\\/chapter\\/[1-9][0-9]*\\/entity\\/[^/]+$/u.test(objectUri)\n );\n}\n\nexport function getRelatedObjectUriType(\n objectUri: string,\n): \"chunk\" | \"entity\" | undefined {\n if (\n /^wikg:\\/\\/chunk\\/[1-9][0-9]*$/u.test(objectUri) ||\n /^wikg:\\/\\/chapter\\/[1-9][0-9]*\\/chunk\\/[1-9][0-9]*$/u.test(objectUri)\n ) {\n return \"chunk\";\n }\n if (\n /^wikg:\\/\\/entity\\/[^/]+$/u.test(objectUri) ||\n /^wikg:\\/\\/chapter\\/[1-9][0-9]*\\/entity\\/[^/]+$/u.test(objectUri)\n ) {\n return \"entity\";\n }\n\n return undefined;\n}\n\nexport function formatUnknownCommandMessage(command: string): string {\n if (looksLikeWikgPath(command)) {\n return formatPathAsUriMessage(command);\n }\n\n return withHelpRoute(`Unknown command: ${command}.`, CLI_HELP_ROUTES.command);\n}\n\nexport function looksLikeWikgPath(value: string): boolean {\n const normalized = normalizeWikgPathSeparators(value);\n\n return (\n normalized.endsWith(\".wikg\") ||\n normalized.includes(\".wikg/\") ||\n normalized.includes(\".wikg#\")\n );\n}\n\nexport function formatPathAsUriMessage(path: string): string {\n const normalized = normalizeWikgPathSeparators(path);\n const [archivePath = normalized, suffix = \"\"] = splitWikgPath(normalized);\n const uri = archivePath.startsWith(\"/\")\n ? `wikg://${archivePath}${suffix}`\n : `wikg://${archivePath.replace(/^\\.\\/+/u, \"\")}${suffix}`;\n\n return [\n `Expected a Wiki Graph URI, not a filesystem path: ${path}`,\n `Use: ${uri}`,\n \"See: wg help uri\",\n ].join(\"\\n\");\n}\n\nexport function splitWikgPath(path: string): readonly [string, string] {\n const archiveEnd = path.indexOf(\".wikg\") + \".wikg\".length;\n\n return [path.slice(0, archiveEnd), path.slice(archiveEnd)];\n}\n\nexport function normalizeWikgPathSeparators(path: string): string {\n return path.replace(/\\\\/gu, \"/\");\n}\n\nexport function formatMissingArchiveLocatorMessage(uri: string): string {\n return [\n `Expected a located Wiki Graph URI with a .wikg archive locator: ${uri}`,\n \"Short object URIs from output are archive-relative handles.\",\n \"Example: wikg://book.wikg/entity/Q9957\",\n \"See: wg help uri\",\n ].join(\"\\n\");\n}\n\nexport function formatPackObjectMismatchMessage(uri: string): string {\n return [\n `Pack requires a graph object URI: ${uri}`,\n \"Supported pack targets are chunk and entity objects.\",\n \"Use `wg <uri> --help` to inspect valid predicates.\",\n ].join(\"\\n\");\n}\n\nexport function formatMissingArchiveInputMessage(\n action: CLIArchiveAction,\n): string {\n switch (action) {\n case \"create\":\n return \"Missing archive URI. Use `wg wikg://<archive.wikg> create`.\";\n case \"export\":\n return \"Missing archive URI. Use `wg wikg://<archive.wikg> export --output-format <format>`.\";\n case \"inspect\":\n return \"Missing archive URI. Use `wg wikg://<archive.wikg> inspect`.\";\n case \"search\":\n return \"Missing scope URI with .wikg locator. Use `wg wikg://<archive.wikg> --query <query>`.\";\n case \"list\":\n return \"Missing scope URI with .wikg locator. Use `wg wikg://<archive.wikg>`.\";\n case \"get\":\n return \"Missing object URI with .wikg locator. Use `wg wikg://<archive.wikg>/<object>`.\";\n case \"related\":\n case \"evidence\":\n case \"pack\":\n return `Missing object URI. Use \\`wg wikg://<archive.wikg>/<object> ${action}\\`.`;\n case \"next\":\n return \"Missing continuation cursor. Use `wg next <cursor>`.\";\n }\n}\nexport function isWikiGraphUri(value: string | undefined): boolean {\n return value?.startsWith(WIKI_GRAPH_URI_PREFIX) === true;\n}\n\nexport function stripObjectUriPrefix(objectUri: string): string {\n const prefix = getWikiGraphUriPrefix(objectUri);\n\n if (prefix === undefined) {\n throw new Error(`Expected Wiki Graph object URI: ${objectUri}`);\n }\n\n return objectUri.slice(prefix.length).replace(/^\\/+|\\/+$/gu, \"\");\n}\n\nexport function isWikiGraphJobUri(value: string | undefined): boolean {\n return isWikiGraphLocalJobUri(value);\n}\n\nexport function isWikiGraphLocalConfigUri(value: string | undefined): boolean {\n const path = parseWikiGraphPath(value);\n return path?.[0] === \"local\" && path[1] === \"config\" && path.length >= 2;\n}\n\nexport function parseLocalConfigUriSection(\n uri: string,\n): LocalConfigSection | undefined {\n const path = parseWikiGraphPath(uri);\n if (path?.[0] !== \"local\" || path[1] !== \"config\") {\n return undefined;\n }\n const section = path[2];\n\n return parseLocalConfigSection(section);\n}\n\nexport function parseWikiGraphJobUri(uri: string): string | undefined {\n const body = parseWikiGraphJobUriBody(uri);\n\n if (body === undefined) {\n throw new Error(\n withHelpRoute(\n `Expected a Wiki Graph job URI: ${uri}`,\n \"wg wikg://local/job --help\",\n ),\n );\n }\n\n const jobId = stripLeadingSlash(body).trim();\n if (jobId === \"\") {\n return undefined;\n }\n\n return jobId;\n}\n\nexport function parseWikiGraphJobTargetUri(\n uri: string | undefined,\n): string | undefined {\n if (uri === undefined) {\n return undefined;\n }\n\n const body = parseWikiGraphJobUriBody(uri);\n if (body === undefined) {\n return undefined;\n }\n if (!body.endsWith(\"/target\")) {\n return undefined;\n }\n\n const jobId = stripLeadingSlash(body.slice(0, -\"/target\".length)).trim();\n if (jobId === \"\") {\n throw new Error(\n withHelpRoute(\n `Expected a job id before /target: ${uri}`,\n \"wg wikg://local/job/<job-id>/target set --help\",\n ),\n );\n }\n\n return jobId;\n}\n\nexport function getWikiGraphUriPrefix(uri: string): string | undefined {\n if (uri.startsWith(WIKI_GRAPH_URI_PREFIX)) {\n return WIKI_GRAPH_URI_PREFIX;\n }\n\n return undefined;\n}\n\nexport function isWikiGraphLocalJobUri(value: string | undefined): boolean {\n const path = parseWikiGraphPath(value);\n return path?.[0] === \"local\" && path[1] === \"job\";\n}\n\nexport function parseWikiGraphJobUriBody(uri: string): string | undefined {\n const path = parseWikiGraphPath(uri);\n if (path?.[0] !== \"local\" || path[1] !== \"job\") {\n return undefined;\n }\n if (path.length === 2) {\n return \"\";\n }\n\n return `/${path.slice(2).join(\"/\")}`;\n}\n\nexport function stripLeadingSlash(value: string): string {\n return value.replace(/^\\/+/u, \"\");\n}\n\nfunction parseWikiGraphPath(\n value: string | undefined,\n): readonly string[] | undefined {\n if (value === undefined) {\n return undefined;\n }\n try {\n const parsed = parseWikiGraphUriSyntax(value);\n return parsed.protocol === \"wikg\" ? parsed.path : undefined;\n } catch {\n return undefined;\n }\n}\n\nexport function requireArchiveUriPath(uri: string, helpRoute: string): string {\n const parsed = parseLocatedWikiGraphUri(uri);\n\n if (parsed.archivePath === undefined || parsed.objectUri !== undefined) {\n throw new Error(\n withHelpRoute(`Expected an archive Wiki Graph URI: ${uri}`, helpRoute),\n );\n }\n\n return parsed.archivePath;\n}\n","import { withHelpRoute } from \"../../../support/index.js\";\nimport type {\n CLIArchiveChapterAction,\n CLIArchiveChapterArguments,\n} from \"../../types.js\";\nimport { parseChapterPathRef } from \"./ids.js\";\nimport { parseResetStage } from \"./stages.js\";\nimport {\n rejectActionBooleanFlag,\n rejectActionFlag,\n rejectConflictingMoveFlags,\n} from \"./rejections.js\";\n\nexport function normalizeArchiveChapterArguments(\n action: CLIArchiveChapterAction,\n path: string,\n values: {\n readonly chapter?: string;\n readonly after?: string;\n readonly before?: string;\n readonly clear?: boolean;\n readonly \"dry-run\"?: boolean;\n readonly first?: boolean;\n readonly import?: string;\n readonly input?: string;\n readonly \"input-format\"?: string;\n readonly json?: boolean;\n readonly \"json-input\"?: string;\n readonly llm?: string;\n readonly parent?: string;\n readonly prompt?: string;\n readonly recursive?: boolean;\n readonly root?: boolean;\n readonly last?: boolean;\n readonly stage?: string;\n readonly title?: string;\n readonly to?: string;\n },\n helpRoute: string,\n treeAction?: \"apply\",\n inputValue?: string,\n): CLIArchiveChapterArguments {\n const chapterPath =\n values.chapter === undefined\n ? undefined\n : parseChapterPathRef(values.chapter, \"--chapter\", path, helpRoute);\n const parentChapterPath =\n values.parent === undefined\n ? undefined\n : parseChapterPathRef(values.parent, \"--parent\", path, helpRoute);\n const beforeChapterPath =\n values.before === undefined\n ? undefined\n : parseChapterPathRef(values.before, \"--before\", path, helpRoute);\n const afterChapterPath =\n values.after === undefined\n ? undefined\n : parseChapterPathRef(values.after, \"--after\", path, helpRoute);\n const resetStage =\n values.to === undefined ? undefined : parseResetStage(values.to, helpRoute);\n\n switch (action) {\n case \"build-index-artifact\":\n case \"delete-index-artifact\":\n case \"get-index-artifact\":\n throw new Error(\n withHelpRoute(\n \"Internal chapter index artifact actions are only available through chapter index artifact URIs.\",\n helpRoute,\n ),\n );\n case \"set\":\n throw new Error(\n withHelpRoute(\n \"`set` requires a concrete chapter sub-resource URI such as `/source`, `/summary`, or `/title`.\",\n helpRoute,\n ),\n );\n case \"add\":\n rejectActionFlag(values.chapter, \"--chapter\", action, helpRoute);\n rejectActionFlag(values.import, \"--import\", action, helpRoute);\n rejectActionFlag(values.prompt, \"--prompt\", action, helpRoute);\n rejectActionFlag(values.stage, \"--stage\", action, helpRoute);\n rejectActionFlag(values.to, \"--to\", action, helpRoute);\n rejectActionBooleanFlag(\n values.recursive,\n \"--recursive\",\n action,\n helpRoute,\n );\n rejectActionFlag(\n values[\"input-format\"],\n \"--input-format\",\n action,\n helpRoute,\n );\n return {\n action,\n path,\n ...(values.input === undefined ? {} : { inputPath: values.input }),\n ...(values.json === undefined ? {} : { json: values.json }),\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n ...(parentChapterPath === undefined ? {} : { parentChapterPath }),\n ...(values.title === undefined ? {} : { title: values.title }),\n };\n case \"list\":\n rejectActionFlag(values.stage, \"--stage\", action, helpRoute);\n rejectActionFlag(values.chapter, \"--chapter\", action, helpRoute);\n rejectActionFlag(values.after, \"--after\", action, helpRoute);\n rejectActionFlag(values.before, \"--before\", action, helpRoute);\n rejectActionFlag(values.input, \"--input\", action, helpRoute);\n rejectActionFlag(values.import, \"--import\", action, helpRoute);\n rejectActionFlag(\n values[\"input-format\"],\n \"--input-format\",\n action,\n helpRoute,\n );\n rejectActionFlag(values.parent, \"--parent\", action, helpRoute);\n rejectActionFlag(values.prompt, \"--prompt\", action, helpRoute);\n rejectActionFlag(values.title, \"--title\", action, helpRoute);\n rejectActionFlag(values.to, \"--to\", action, helpRoute);\n rejectActionFlag(values[\"json-input\"], \"--json\", action, helpRoute);\n rejectActionBooleanFlag(values.json, \"--json\", action, helpRoute);\n rejectActionBooleanFlag(values.clear, \"--clear\", action, helpRoute);\n rejectActionBooleanFlag(\n values[\"dry-run\"],\n \"--dry-run\",\n action,\n helpRoute,\n );\n rejectActionBooleanFlag(values.first, \"--first\", action, helpRoute);\n rejectActionBooleanFlag(values.root, \"--root\", action, helpRoute);\n rejectActionBooleanFlag(values.last, \"--last\", action, helpRoute);\n rejectActionBooleanFlag(\n values.recursive,\n \"--recursive\",\n action,\n helpRoute,\n );\n return {\n action,\n ...(values.json === undefined ? {} : { json: values.json }),\n path,\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n };\n case \"move\":\n requireChapterPath(chapterPath, action, helpRoute);\n rejectActionFlag(values.stage, \"--stage\", action, helpRoute);\n rejectActionFlag(values.input, \"--input\", action, helpRoute);\n rejectActionFlag(values.import, \"--import\", action, helpRoute);\n rejectActionFlag(\n values[\"input-format\"],\n \"--input-format\",\n action,\n helpRoute,\n );\n rejectActionFlag(values.prompt, \"--prompt\", action, helpRoute);\n rejectActionFlag(values.title, \"--title\", action, helpRoute);\n rejectActionFlag(values.to, \"--to\", action, helpRoute);\n rejectActionBooleanFlag(values.clear, \"--clear\", action, helpRoute);\n rejectActionBooleanFlag(\n values[\"dry-run\"],\n \"--dry-run\",\n action,\n helpRoute,\n );\n rejectActionBooleanFlag(\n values.recursive,\n \"--recursive\",\n action,\n helpRoute,\n );\n rejectConflictingMoveFlags(values, helpRoute);\n return {\n action,\n ...(afterChapterPath === undefined ? {} : { afterChapterPath }),\n ...(beforeChapterPath === undefined ? {} : { beforeChapterPath }),\n chapterPath,\n ...(values.first === undefined ? {} : { first: values.first }),\n ...(values.json === undefined ? {} : { json: values.json }),\n ...(values.last === undefined ? {} : { last: values.last }),\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n ...(values.root === undefined ? {} : { moveToRoot: values.root }),\n ...(parentChapterPath === undefined ? {} : { parentChapterPath }),\n path,\n };\n case \"remove\":\n requireChapterPath(chapterPath, action, helpRoute);\n rejectActionFlag(values.stage, \"--stage\", action, helpRoute);\n rejectActionFlag(values.after, \"--after\", action, helpRoute);\n rejectActionFlag(values.before, \"--before\", action, helpRoute);\n rejectActionFlag(values.input, \"--input\", action, helpRoute);\n rejectActionFlag(values.import, \"--import\", action, helpRoute);\n rejectActionFlag(\n values[\"input-format\"],\n \"--input-format\",\n action,\n helpRoute,\n );\n rejectActionFlag(values.parent, \"--parent\", action, helpRoute);\n rejectActionFlag(values.prompt, \"--prompt\", action, helpRoute);\n rejectActionFlag(values.title, \"--title\", action, helpRoute);\n rejectActionFlag(values.to, \"--to\", action, helpRoute);\n rejectActionBooleanFlag(values.clear, \"--clear\", action, helpRoute);\n rejectActionBooleanFlag(\n values[\"dry-run\"],\n \"--dry-run\",\n action,\n helpRoute,\n );\n rejectActionBooleanFlag(values.first, \"--first\", action, helpRoute);\n rejectActionBooleanFlag(values.root, \"--root\", action, helpRoute);\n rejectActionBooleanFlag(values.last, \"--last\", action, helpRoute);\n return {\n action,\n chapterPath,\n ...(values.json === undefined ? {} : { json: values.json }),\n path,\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n ...(values.recursive === undefined\n ? {}\n : { recursive: values.recursive }),\n };\n case \"reset\":\n requireChapterPath(chapterPath, action, helpRoute);\n rejectActionFlag(values.stage, \"--stage\", action, helpRoute);\n rejectActionFlag(values.after, \"--after\", action, helpRoute);\n rejectActionFlag(values.before, \"--before\", action, helpRoute);\n if (resetStage === undefined) {\n throw new Error(\n withHelpRoute(\n \"Missing --to. `chapter reset` requires planned, source, or reading-graph.\",\n helpRoute,\n ),\n );\n }\n rejectActionFlag(values.input, \"--input\", action, helpRoute);\n rejectActionFlag(values.import, \"--import\", action, helpRoute);\n rejectActionFlag(\n values[\"input-format\"],\n \"--input-format\",\n action,\n helpRoute,\n );\n rejectActionFlag(values.parent, \"--parent\", action, helpRoute);\n rejectActionFlag(values.prompt, \"--prompt\", action, helpRoute);\n rejectActionFlag(values.title, \"--title\", action, helpRoute);\n rejectActionBooleanFlag(values.clear, \"--clear\", action, helpRoute);\n rejectActionBooleanFlag(\n values[\"dry-run\"],\n \"--dry-run\",\n action,\n helpRoute,\n );\n rejectActionBooleanFlag(values.first, \"--first\", action, helpRoute);\n rejectActionBooleanFlag(values.root, \"--root\", action, helpRoute);\n rejectActionBooleanFlag(values.last, \"--last\", action, helpRoute);\n rejectActionBooleanFlag(\n values.recursive,\n \"--recursive\",\n action,\n helpRoute,\n );\n return {\n action,\n chapterPath,\n ...(values.json === undefined ? {} : { json: values.json }),\n path,\n resetStage,\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n };\n case \"set-source\":\n requireChapterPath(chapterPath, action, helpRoute);\n rejectActionFlag(values.stage, \"--stage\", action, helpRoute);\n rejectActionFlag(values.after, \"--after\", action, helpRoute);\n rejectActionFlag(values.before, \"--before\", action, helpRoute);\n rejectActionFlag(values.import, \"--import\", action, helpRoute);\n if (\n values[\"input-format\"] !== undefined &&\n values[\"input-format\"] !== \"jsonl\"\n ) {\n throw new Error(\n withHelpRoute(\n \"`--input-format` for chapter source set only accepts `jsonl`.\",\n helpRoute,\n ),\n );\n }\n rejectActionFlag(values.parent, \"--parent\", action, helpRoute);\n rejectActionFlag(values.prompt, \"--prompt\", action, helpRoute);\n rejectActionFlag(values.title, \"--title\", action, helpRoute);\n rejectActionFlag(values.to, \"--to\", action, helpRoute);\n rejectActionBooleanFlag(values.clear, \"--clear\", action, helpRoute);\n rejectActionBooleanFlag(\n values[\"dry-run\"],\n \"--dry-run\",\n action,\n helpRoute,\n );\n rejectActionBooleanFlag(values.first, \"--first\", action, helpRoute);\n rejectActionBooleanFlag(values.root, \"--root\", action, helpRoute);\n rejectActionBooleanFlag(values.last, \"--last\", action, helpRoute);\n rejectActionBooleanFlag(\n values.recursive,\n \"--recursive\",\n action,\n helpRoute,\n );\n return {\n action,\n chapterPath,\n ...(inputValue === undefined ? {} : { inputValue }),\n ...(values.json === undefined ? {} : { json: values.json }),\n path,\n ...(values.input === undefined ? {} : { inputPath: values.input }),\n ...(values[\"input-format\"] === undefined\n ? {}\n : { inputFormat: \"jsonl\" as const }),\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n };\n case \"set-summary\":\n requireChapterPath(chapterPath, action, helpRoute);\n rejectActionFlag(values.stage, \"--stage\", action, helpRoute);\n rejectActionFlag(values.after, \"--after\", action, helpRoute);\n rejectActionFlag(values.before, \"--before\", action, helpRoute);\n rejectActionFlag(values.import, \"--import\", action, helpRoute);\n rejectActionFlag(\n values[\"input-format\"],\n \"--input-format\",\n action,\n helpRoute,\n );\n rejectActionFlag(values.parent, \"--parent\", action, helpRoute);\n rejectActionFlag(values.prompt, \"--prompt\", action, helpRoute);\n rejectActionFlag(values.title, \"--title\", action, helpRoute);\n rejectActionFlag(values.to, \"--to\", action, helpRoute);\n rejectActionFlag(values[\"json-input\"], \"--json\", action, helpRoute);\n rejectActionBooleanFlag(values.json, \"--json\", action, helpRoute);\n rejectActionBooleanFlag(values.clear, \"--clear\", action, helpRoute);\n rejectActionBooleanFlag(\n values[\"dry-run\"],\n \"--dry-run\",\n action,\n helpRoute,\n );\n rejectActionBooleanFlag(values.first, \"--first\", action, helpRoute);\n rejectActionBooleanFlag(values.root, \"--root\", action, helpRoute);\n rejectActionBooleanFlag(values.last, \"--last\", action, helpRoute);\n rejectActionBooleanFlag(\n values.recursive,\n \"--recursive\",\n action,\n helpRoute,\n );\n return {\n action,\n chapterPath,\n ...(inputValue === undefined ? {} : { inputValue }),\n path,\n ...(values.input === undefined ? {} : { inputPath: values.input }),\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n };\n case \"set-title\":\n requireChapterPath(chapterPath, action, helpRoute);\n rejectActionFlag(values.stage, \"--stage\", action, helpRoute);\n rejectActionFlag(values.after, \"--after\", action, helpRoute);\n rejectActionFlag(values.before, \"--before\", action, helpRoute);\n rejectActionFlag(values.import, \"--import\", action, helpRoute);\n rejectActionFlag(values[\"json-input\"], \"--json\", action, helpRoute);\n rejectActionBooleanFlag(values.json, \"--json\", action, helpRoute);\n if (values.title !== undefined) {\n throw new Error(\n withHelpRoute(\n \"`chapter title set` uses a positional value instead of --title.\",\n helpRoute,\n ),\n );\n }\n if (inputValue === undefined && values.clear !== true) {\n throw new Error(withHelpRoute(\"Missing title value.\", helpRoute));\n }\n if (inputValue !== undefined && values.clear === true) {\n throw new Error(\n withHelpRoute(\n \"`chapter title clear` cannot combine with a title value.\",\n helpRoute,\n ),\n );\n }\n rejectActionFlag(values.input, \"--input\", action, helpRoute);\n rejectActionFlag(\n values[\"input-format\"],\n \"--input-format\",\n action,\n helpRoute,\n );\n rejectActionFlag(values.parent, \"--parent\", action, helpRoute);\n rejectActionFlag(values.prompt, \"--prompt\", action, helpRoute);\n rejectActionFlag(values.to, \"--to\", action, helpRoute);\n rejectActionBooleanFlag(\n values[\"dry-run\"],\n \"--dry-run\",\n action,\n helpRoute,\n );\n rejectActionBooleanFlag(values.first, \"--first\", action, helpRoute);\n rejectActionBooleanFlag(values.root, \"--root\", action, helpRoute);\n rejectActionBooleanFlag(values.last, \"--last\", action, helpRoute);\n rejectActionBooleanFlag(\n values.recursive,\n \"--recursive\",\n action,\n helpRoute,\n );\n return {\n action,\n chapterPath,\n ...(values.clear === undefined ? {} : { clearTitle: values.clear }),\n path,\n ...(inputValue === undefined ? {} : { title: inputValue }),\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n };\n case \"tree\":\n rejectActionFlag(values.stage, \"--stage\", action, helpRoute);\n rejectActionFlag(values.chapter, \"--chapter\", action, helpRoute);\n rejectActionFlag(values.after, \"--after\", action, helpRoute);\n rejectActionFlag(values.before, \"--before\", action, helpRoute);\n rejectActionFlag(values.import, \"--import\", action, helpRoute);\n rejectActionFlag(\n values[\"input-format\"],\n \"--input-format\",\n action,\n helpRoute,\n );\n rejectActionFlag(values.parent, \"--parent\", action, helpRoute);\n rejectActionFlag(values.prompt, \"--prompt\", action, helpRoute);\n rejectActionFlag(values.title, \"--title\", action, helpRoute);\n rejectActionFlag(values.to, \"--to\", action, helpRoute);\n rejectActionBooleanFlag(values.clear, \"--clear\", action, helpRoute);\n rejectActionBooleanFlag(values.first, \"--first\", action, helpRoute);\n rejectActionBooleanFlag(values.root, \"--root\", action, helpRoute);\n rejectActionBooleanFlag(values.last, \"--last\", action, helpRoute);\n rejectActionBooleanFlag(\n values.recursive,\n \"--recursive\",\n action,\n helpRoute,\n );\n if (treeAction === \"apply\" && values.json === true) {\n throw new Error(\n withHelpRoute(\n \"`chapter tree apply` does not support --json.\",\n helpRoute,\n ),\n );\n }\n if (treeAction === \"apply\") {\n return {\n action,\n ...(values[\"dry-run\"] === undefined\n ? {}\n : { dryRun: values[\"dry-run\"] }),\n ...(values.input === undefined ? {} : { inputPath: values.input }),\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n path,\n treeAction: \"apply\",\n };\n }\n rejectActionFlag(values.input, \"--input\", action, helpRoute);\n rejectActionBooleanFlag(\n values[\"dry-run\"],\n \"--dry-run\",\n action,\n helpRoute,\n );\n return {\n action,\n json: values.json ?? false,\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n path,\n treeAction: \"show\",\n };\n }\n}\n\nfunction requireChapterPath(\n chapterPath: string | undefined,\n action: CLIArchiveChapterAction,\n helpRoute: string,\n): asserts chapterPath is string {\n if (chapterPath === undefined) {\n throw new Error(\n withHelpRoute(\n `Missing --chapter. ` +\n `chapter ${action}` +\n ` requires a complete absolute chapter path.`,\n helpRoute,\n ),\n );\n }\n}\n","import type { ChapterStage } from \"wiki-graph-core\";\n\nimport { withHelpRoute } from \"../../../support/index.js\";\n\nexport function parseChapterStage(\n value: string,\n flag: string,\n helpRoute: string,\n): ChapterStage {\n const stage = parseExternalChapterStage(value);\n\n if (stage !== undefined) {\n return stage;\n }\n\n throw new Error(\n withHelpRoute(\n `Invalid ${flag}: ${value}. Expected planned, source, reading-graph, or reading-summary.`,\n helpRoute,\n ),\n );\n}\n\nexport function parseResetStage(\n value: string,\n helpRoute: string,\n): Exclude<ChapterStage, \"summarized\"> {\n const stage = parseExternalChapterStage(value);\n\n if (stage === \"planned\" || stage === \"sourced\" || stage === \"graphed\") {\n return stage;\n }\n if (stage !== undefined) {\n throw new Error(\n withHelpRoute(\n \"`chapter reset` does not support --to reading-summary.\",\n helpRoute,\n ),\n );\n }\n\n throw new Error(\n withHelpRoute(\n `Invalid --to: ${value}. Expected planned, source, or reading-graph.`,\n helpRoute,\n ),\n );\n}\n\nexport function parseExternalChapterStage(\n value: string,\n): ChapterStage | undefined {\n switch (value.trim().toLowerCase()) {\n case \"planned\":\n return \"planned\";\n case \"source\":\n return \"sourced\";\n case \"reading-graph\":\n return \"graphed\";\n case \"reading-summary\":\n return \"summarized\";\n default:\n return undefined;\n }\n}\n","import { withHelpRoute } from \"../../../support/index.js\";\n\nexport function rejectActionFlag(\n value: string | undefined,\n flag: string,\n action: string,\n helpRoute: string,\n): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `The \\`chapter ${action}\\` action does not support ${flag}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectActionBooleanFlag(\n value: boolean | undefined,\n flag: string,\n action: string,\n helpRoute: string,\n): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `The \\`chapter ${action}\\` action does not support ${flag}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectConflictingMoveFlags(\n values: {\n readonly after?: string;\n readonly before?: string;\n readonly first?: boolean;\n readonly last?: boolean;\n readonly parent?: string;\n readonly root?: boolean;\n },\n helpRoute: string,\n): void {\n const parentTargets = [\n values.parent === undefined ? undefined : \"--parent\",\n values.root === undefined ? undefined : \"--root\",\n ].filter((flag): flag is string => flag !== undefined);\n const positionTargets = [\n values.before === undefined ? undefined : \"--before\",\n values.after === undefined ? undefined : \"--after\",\n values.first === undefined ? undefined : \"--first\",\n values.last === undefined ? undefined : \"--last\",\n ].filter((flag): flag is string => flag !== undefined);\n\n if (parentTargets.length > 1) {\n throw new Error(\n withHelpRoute(\n `Choose only one parent target: ${parentTargets.join(\", \")}.`,\n helpRoute,\n ),\n );\n }\n if (positionTargets.length > 1) {\n throw new Error(\n withHelpRoute(\n `Choose only one position target: ${positionTargets.join(\", \")}.`,\n helpRoute,\n ),\n );\n }\n if (\n parentTargets.length > 0 &&\n (values.before !== undefined || values.after !== undefined)\n ) {\n throw new Error(\n withHelpRoute(\n \"Do not combine --parent or --root with --before or --after.\",\n helpRoute,\n ),\n );\n }\n if (parentTargets.length === 0 && positionTargets.length === 0) {\n throw new Error(\n withHelpRoute(\n \"`chapter move` requires --parent, --root, --before, --after, --first, or --last.\",\n helpRoute,\n ),\n );\n }\n}\n","import { CLI_HELP_ROUTES, withHelpRoute } from \"../../support/index.js\";\nimport { WIKI_GRAPH_URI_PREFIX } from \"wiki-graph-core\";\nimport type {\n ArchiveArgumentValues,\n ArchiveMetaFlagValues,\n CLIArchiveChapterAction,\n CLIArchiveMaintenanceCommand,\n CLIQueueAction,\n} from \"../types.js\";\n\nexport function rejectArchiveChapterFlag(\n name: string,\n value: boolean | string | undefined,\n helpRoute: string,\n): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `The \\`chapter\\` command does not support --${name}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectArchiveChapterMetaFlags(\n values: ArchiveMetaFlagValues,\n helpRoute: string,\n): void {\n for (const flag of listPresentMetaFlags(values, { includeTitle: false })) {\n throw new Error(\n withHelpRoute(\n `The \\`chapter\\` command does not support ${flag}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectHelpMetaFlags(values: ArchiveMetaFlagValues): void {\n rejectCommandMetaFlags(values, \"help\", CLI_HELP_ROUTES.root);\n}\n\nexport function rejectNonGcForceFlag(\n positionals: readonly string[],\n values: ArchiveArgumentValues,\n): void {\n if (values.force !== true || positionals[0] === \"gc\") {\n return;\n }\n\n throw new Error(\n withHelpRoute(\n \"The --force option is only supported by `gc`.\",\n CLI_HELP_ROUTES.root,\n ),\n );\n}\n\nexport function rejectNonCreateReplaceFlag(\n positionals: readonly string[],\n values: ArchiveArgumentValues,\n): void {\n if (values.replace !== true) {\n return;\n }\n\n const [command, action] = positionals;\n if (\n command?.startsWith(WIKI_GRAPH_URI_PREFIX) === true &&\n action === \"create\"\n ) {\n return;\n }\n\n throw new Error(\n withHelpRoute(\n \"The --replace option is only supported by `wg <archive-uri> create`.\",\n CLI_HELP_ROUTES.root,\n ),\n );\n}\n\nexport function rejectGcMetaFlags(values: ArchiveMetaFlagValues): void {\n rejectCommandMetaFlags(values, \"gc\", \"wg gc --help\");\n}\n\nexport function rejectCommandMetaFlags(\n values: ArchiveMetaFlagValues,\n command: string,\n helpRoute: string,\n): void {\n for (const flag of listPresentMetaFlags(values)) {\n throw new Error(\n withHelpRoute(\n `The \\`${command}\\` command does not support ${flag}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectGcFlag(\n name: string,\n value: string | boolean | readonly string[] | undefined,\n helpRoute: string,\n): void {\n if (value === undefined || value === false) {\n return;\n }\n\n throw new Error(\n withHelpRoute(`The \\`gc\\` command does not support --${name}.`, helpRoute),\n );\n}\n\nexport function rejectTransformFlag(\n name: string,\n value: boolean | string | undefined,\n helpRoute: string,\n): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `The \\`transform\\` command does not support --${name}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectTransformMetaFlags(values: ArchiveMetaFlagValues): void {\n for (const flag of listPresentMetaFlags(values)) {\n throw new Error(\n withHelpRoute(\n `The \\`transform\\` command does not support ${flag}.`,\n \"wg transform --help\",\n ),\n );\n }\n}\n\nexport function listPresentMetaFlags(\n values: ArchiveMetaFlagValues,\n options: { readonly includeTitle?: boolean } = {},\n): readonly string[] {\n const includeTitle = options.includeTitle ?? true;\n const flags: string[] = [];\n\n if (values.author !== undefined) flags.push(\"--author\");\n if (values[\"clear-authors\"] !== undefined) flags.push(\"--clear-authors\");\n if (values[\"clear-description\"] !== undefined) {\n flags.push(\"--clear-description\");\n }\n if (values[\"clear-identifier\"] !== undefined) {\n flags.push(\"--clear-identifier\");\n }\n if (values[\"clear-language\"] !== undefined) flags.push(\"--clear-language\");\n if (values[\"clear-published-at\"] !== undefined) {\n flags.push(\"--clear-published-at\");\n }\n if (values[\"clear-publisher\"] !== undefined) flags.push(\"--clear-publisher\");\n if (includeTitle && values[\"clear-title\"] !== undefined) {\n flags.push(\"--clear-title\");\n }\n if (values.description !== undefined) flags.push(\"--description\");\n if (values.identifier !== undefined) flags.push(\"--identifier\");\n if (values.language !== undefined) flags.push(\"--language\");\n if (values[\"published-at\"] !== undefined) flags.push(\"--published-at\");\n if (values.publisher !== undefined) flags.push(\"--publisher\");\n if (includeTitle && values.title !== undefined) flags.push(\"--title\");\n\n return flags;\n}\n\nexport function requireChapterId(\n chapterId: number | undefined,\n action: CLIArchiveChapterAction,\n helpRoute: string,\n): asserts chapterId is number {\n if (chapterId === undefined) {\n throw new Error(\n withHelpRoute(\n `Missing --chapter. \\`chapter ${action}\\` requires a chapter id.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectHelpFlag(\n name: string,\n value: boolean | string | undefined,\n): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `The \\`help\\` command does not support --${name}.`,\n CLI_HELP_ROUTES.root,\n ),\n );\n }\n}\nexport function rejectArchiveReverseQuery(\n values: Pick<ArchiveArgumentValues, \"query\" | \"reverse\">,\n helpRoute: string,\n): void {\n if (values.query !== undefined && values.reverse === true) {\n throw new Error(\n withHelpRoute(\"`--reverse` cannot be combined with --query.\", helpRoute),\n );\n }\n}\n\nexport function parseRelatedRoleFlag(\n value: string | undefined,\n helpRoute: string,\n): { readonly role?: \"any\" | \"object\" | \"self\" | \"subject\" } {\n if (value === undefined) {\n return {};\n }\n if (\n value !== \"any\" &&\n value !== \"object\" &&\n value !== \"self\" &&\n value !== \"subject\"\n ) {\n throw new Error(\n withHelpRoute(\n \"--role must be one of: any, subject, object, self.\",\n helpRoute,\n ),\n );\n }\n\n return { role: value };\n}\nexport function rejectArchiveExtraPositionals(\n action: string,\n positionals: readonly string[],\n allowed: number,\n helpRoute: string,\n): void {\n if (positionals.length > allowed) {\n throw new Error(\n withHelpRoute(\n `Unexpected positional arguments for \\`${action}\\`: ${positionals.slice(allowed).join(\" \")}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectQueueExtraPositionals(\n action: CLIQueueAction,\n positionals: readonly string[],\n allowed: number,\n helpRoute: string,\n): void {\n if (positionals.length > allowed) {\n throw new Error(\n withHelpRoute(\n `Unexpected positional arguments for \\`queue ${action}\\`: ${positionals.slice(allowed).join(\" \")}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectArchiveMaintenanceExtraPositionals(\n command: CLIArchiveMaintenanceCommand,\n positionals: readonly string[],\n allowed: number,\n helpRoute: string,\n): void {\n if (positionals.length > allowed) {\n throw new Error(\n withHelpRoute(\n `Unexpected positional arguments for \\`${command}\\`: ${positionals.slice(allowed).join(\" \")}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectMetaCommandFlag(\n name: string,\n value: string | undefined,\n helpRoute: string,\n): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `The \\`meta\\` command does not support --${name}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectMetaCommandBooleanFlag(\n name: string,\n value: boolean | undefined,\n helpRoute: string,\n): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `The \\`meta\\` command does not support --${name}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectCoverCommandFlag(\n name: string,\n value: string | undefined,\n helpRoute: string,\n): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `The \\`cover\\` command does not support --${name}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectCoverCommandBooleanFlag(\n name: string,\n value: boolean | undefined,\n helpRoute: string,\n): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `The \\`cover\\` command does not support --${name}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectCoverMetaFlags(values: ArchiveMetaFlagValues): void {\n for (const flag of listPresentMetaFlags(values)) {\n throw new Error(\n withHelpRoute(\n `The \\`cover\\` command does not support ${flag}.`,\n \"wg cover --help\",\n ),\n );\n }\n}\n\nexport function rejectArchiveFlag(\n action: string,\n flag: string,\n value: string | undefined,\n helpRoute: string,\n): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `The \\`${action}\\` command does not support ${flag}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectArchiveBooleanFlag(\n action: string,\n flag: string,\n value: boolean | undefined,\n helpRoute: string,\n): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `The \\`${action}\\` command does not support ${flag}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectStreamingJSONFlag(\n action: string,\n value: boolean | undefined,\n helpRoute: string,\n): void {\n if (value !== true) {\n return;\n }\n\n throw new Error(\n withHelpRoute(\n `The \\`${action}\\` command does not support --json because it streams progress events. Use --jsonl for line-delimited progress output.`,\n helpRoute,\n ),\n );\n}\n\nexport function rejectArchiveNonReadFlags(\n action: string,\n values: {\n readonly input?: string;\n readonly import?: string;\n readonly \"input-format\"?: string;\n readonly llm?: string;\n readonly output?: string;\n readonly \"output-format\"?: string;\n readonly prompt?: string;\n },\n helpRoute: string,\n): void {\n rejectArchiveFlag(action, \"--input\", values.input, helpRoute);\n rejectArchiveFlag(action, \"--import\", values.import, helpRoute);\n rejectArchiveFlag(\n action,\n \"--input-format\",\n values[\"input-format\"],\n helpRoute,\n );\n rejectArchiveFlag(action, \"--llm\", values.llm, helpRoute);\n rejectArchiveFlag(action, \"--output\", values.output, helpRoute);\n rejectArchiveFlag(\n action,\n \"--output-format\",\n values[\"output-format\"],\n helpRoute,\n );\n rejectArchiveFlag(action, \"--prompt\", values.prompt, helpRoute);\n}\n","import { CLI_HELP_ROUTES, withHelpRoute } from \"../../support/index.js\";\nimport { formatCliCommand } from \"../../support/index.js\";\nimport type { ArchiveArgumentValues, CLIResultFormat } from \"../types.js\";\nimport { isWikiGraphLocalConfigUri, isWikiGraphUri } from \"./uri.js\";\n\nexport function parseWatchFrom(\n value: string | undefined,\n helpRoute: string,\n): \"beginning\" | \"now\" | undefined {\n if (value === undefined) {\n return undefined;\n }\n if (value === \"beginning\" || value === \"now\") {\n return value;\n }\n\n throw new Error(\n withHelpRoute(\n `Invalid --from: ${value}. Expected beginning or now.`,\n helpRoute,\n ),\n );\n}\n\nexport function parseResultFormat(values: {\n readonly json?: boolean;\n readonly jsonl?: boolean;\n}): CLIResultFormat {\n if (values.json === true && values.jsonl === true) {\n throw new Error(\n withHelpRoute(\n \"`--json` and `--jsonl` cannot be combined.\",\n CLI_HELP_ROUTES.command,\n ),\n );\n }\n\n if (values.json === true) {\n return \"json\";\n }\n if (values.jsonl === true) {\n return \"jsonl\";\n }\n\n return \"text\";\n}\n\nexport function parseEvidenceFlag(\n value: string | undefined,\n helpRoute: string,\n): { readonly evidenceLimit?: number } {\n if (value === undefined) {\n return {};\n }\n\n return {\n evidenceLimit: parseNonNegativeIntegerFlag(value, \"--evidence\", helpRoute),\n };\n}\n\nexport function parseSourceContextFlag(\n value: string | undefined,\n helpRoute: string,\n): { readonly context?: number } {\n if (value === undefined) {\n return {};\n }\n\n return {\n context: parseNonNegativeIntegerFlag(value, \"--context\", helpRoute),\n };\n}\nexport function parseNonNegativeIntegerFlag(\n value: string,\n flag: string,\n helpRoute: string,\n): number {\n const parsed = Number(value);\n\n if (!Number.isInteger(parsed) || parsed < 0) {\n throw new Error(\n withHelpRoute(`${flag} must be a non-negative integer.`, helpRoute),\n );\n }\n\n return parsed;\n}\n\nexport function parsePositiveIntegerFlag(\n value: string,\n flag: string,\n helpRoute: string,\n): number {\n const parsed = Number(value);\n\n if (!Number.isInteger(parsed) || parsed <= 0) {\n throw new Error(\n withHelpRoute(`${flag} must be a positive integer.`, helpRoute),\n );\n }\n\n return parsed;\n}\n\nexport function normalizeArchiveInlineOptions(\n positionals: readonly string[],\n values: ArchiveArgumentValues,\n): {\n readonly positionals: readonly string[];\n readonly values: ArchiveArgumentValues;\n} {\n const normalizedPositionals: string[] = [];\n const normalizedValues: Record<\n string,\n boolean | readonly string[] | string | undefined\n > = {\n ...values,\n };\n\n for (let index = 0; index < positionals.length; index += 1) {\n const item = positionals[index];\n\n if (item === undefined) {\n continue;\n }\n\n switch (item) {\n case \"--json\":\n case \"--confirm\":\n case \"--reverse\":\n normalizedValues[item.slice(2)] = true;\n continue;\n case \"--budget\":\n case \"--chapter\":\n case \"--context\":\n case \"--cursor\":\n case \"--depth\":\n case \"--import\":\n case \"--input\":\n case \"--input-format\":\n case \"--limit\":\n case \"--llm\":\n case \"--output\":\n case \"--output-format\":\n case \"--path\":\n case \"--prompt\":\n case \"--stage\":\n case \"--to\": {\n const value = positionals[index + 1];\n\n if (value === undefined) {\n normalizedPositionals.push(item);\n continue;\n }\n\n normalizedValues[item.slice(2)] = value;\n index += 1;\n continue;\n }\n default:\n normalizedPositionals.push(item);\n }\n }\n\n return {\n positionals: normalizedPositionals,\n values: normalizedValues,\n };\n}\n\nexport function normalizeArchiveValueFlagArgv(\n argv: readonly string[],\n): readonly string[] {\n const normalized: string[] = [];\n let stopped = false;\n const jsonMayTakeValue = isValueInputJsonFlagContext(argv);\n\n for (let index = 0; index < argv.length; index += 1) {\n const item = argv[index];\n\n if (item === undefined) {\n continue;\n }\n\n if (stopped) {\n normalized.push(item);\n continue;\n }\n\n if (item === \"--\") {\n normalized.push(item);\n stopped = true;\n continue;\n }\n\n if (item.startsWith(\"--json=\") && jsonMayTakeValue) {\n normalized.push(\"--json\");\n normalized.push(`--json-input=${item.slice(\"--json=\".length)}`);\n continue;\n }\n\n if (item === \"--json\" && jsonMayTakeValue) {\n const value = argv[index + 1];\n\n normalized.push(item);\n if (value !== undefined && !value.startsWith(\"-\")) {\n normalized.push(\"--json-input\");\n normalized.push(value);\n index += 1;\n }\n continue;\n }\n\n if (item !== \"--evidence\" && item !== \"--context\" && item !== \"--depth\") {\n normalized.push(item);\n continue;\n }\n\n const value = argv[index + 1];\n\n if (value !== undefined && !value.startsWith(\"-\")) {\n normalized.push(item);\n normalized.push(value);\n index += 1;\n continue;\n }\n\n if (value !== undefined && /^-\\d/.test(value)) {\n normalized.push(`${item}=${value}`);\n index += 1;\n continue;\n }\n\n normalized.push(item);\n if (item === \"--evidence\") {\n normalized.push(\"3\");\n }\n }\n\n return normalized;\n}\n\nexport function isValueInputJsonFlagContext(argv: readonly string[]): boolean {\n const first = argv[0];\n const second = argv[1];\n\n if (second !== \"set\" && second !== \"put\") {\n return false;\n }\n if (isWikiGraphLocalConfigUri(first)) {\n return true;\n }\n\n return (\n isWikiGraphUri(first) &&\n argv.some((item) => item.includes(\"/meta\") || item.endsWith(\".wikg/meta\"))\n );\n}\nexport function formatWikiGraphHelpCommand(\n uri: string,\n action?: string,\n): string {\n return formatCliCommand([\n uri,\n ...(action === undefined ? [] : [action]),\n \"--help\",\n ]);\n}\n","import { parseArgs } from \"util\";\nimport { isWikiGraphLibraryUri } from \"wiki-graph-core\";\n\nimport { renderMainHelpText } from \"./help.js\";\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../support/index.js\";\n\nimport type { ParsedCLIArguments } from \"./types.js\";\n\nimport { parseArchiveArguments } from \"./archive.js\";\nimport {\n formatUnknownCommandMessage,\n isArchiveMaintenanceCommand,\n isPublicArchiveCommandHelpAction,\n isWikiGraphJobUri,\n isWikiGraphLocalConfigUri,\n isWikiGraphUri,\n normalizeArchiveValueFlagArgv,\n rejectArchiveBooleanFlag,\n rejectNonCreateReplaceFlag,\n rejectNonGcForceFlag,\n} from \"./helpers.js\";\nimport { parseJobUriFirstArguments } from \"./queue.js\";\nimport {\n parseArchiveMaintenanceArguments,\n parseGcArguments,\n parseHelpArguments,\n parseLegacyArguments,\n parseLocalConfigUriFirstArguments,\n parseMaintenanceArguments,\n parseTransformArguments,\n} from \"./root/index.js\";\nimport { parseArchiveUriFirstArguments } from \"./uri/index.js\";\nimport { parseLibraryUriFirstArguments } from \"./uri/library.js\";\nexport function parseCLIArguments(\n argv = process.argv.slice(2),\n): ParsedCLIArguments {\n const { positionals, values } = parseArgs({\n allowPositionals: true,\n args: normalizeArchiveValueFlagArgv(argv),\n options: {\n author: {\n multiple: true,\n type: \"string\",\n },\n after: {\n type: \"string\",\n },\n before: {\n type: \"string\",\n },\n backlinks: {\n type: \"boolean\",\n },\n budget: {\n type: \"string\",\n },\n clear: {\n type: \"boolean\",\n },\n \"clear-authors\": {\n type: \"boolean\",\n },\n \"clear-description\": {\n type: \"boolean\",\n },\n \"clear-identifier\": {\n type: \"boolean\",\n },\n \"clear-language\": {\n type: \"boolean\",\n },\n \"clear-published-at\": {\n type: \"boolean\",\n },\n \"clear-publisher\": {\n type: \"boolean\",\n },\n \"clear-title\": {\n type: \"boolean\",\n },\n description: {\n type: \"string\",\n },\n help: {\n short: \"h\",\n type: \"boolean\",\n },\n \"digest-dir\": {\n type: \"string\",\n },\n depth: {\n type: \"string\",\n },\n \"dry-run\": {\n type: \"boolean\",\n },\n active: {\n type: \"boolean\",\n },\n \"accept-cost\": {\n type: \"boolean\",\n },\n all: {\n type: \"boolean\",\n },\n boost: {\n type: \"boolean\",\n },\n first: {\n type: \"boolean\",\n },\n identifier: {\n type: \"string\",\n },\n from: {\n type: \"string\",\n },\n force: {\n type: \"boolean\",\n },\n input: {\n type: \"string\",\n },\n import: {\n type: \"string\",\n },\n indexes: {\n type: \"string\",\n },\n \"input-format\": {\n type: \"string\",\n },\n limit: {\n type: \"string\",\n },\n language: {\n type: \"string\",\n },\n json: {\n type: \"boolean\",\n },\n \"json-input\": {\n type: \"string\",\n },\n jsonl: {\n type: \"boolean\",\n },\n llm: {\n type: \"string\",\n },\n output: {\n type: \"string\",\n },\n path: {\n type: \"string\",\n },\n \"output-format\": {\n type: \"string\",\n },\n prompt: {\n type: \"string\",\n },\n query: {\n type: \"string\",\n },\n replace: {\n type: \"boolean\",\n },\n reverse: {\n type: \"boolean\",\n },\n \"skip-unindexed\": {\n type: \"boolean\",\n },\n stage: {\n type: \"string\",\n },\n task: {\n type: \"string\",\n },\n chapter: {\n type: \"string\",\n },\n confirm: {\n type: \"boolean\",\n },\n context: {\n type: \"string\",\n },\n cursor: {\n type: \"string\",\n },\n evidence: {\n type: \"string\",\n },\n parent: {\n type: \"string\",\n },\n \"published-at\": {\n type: \"string\",\n },\n publisher: {\n type: \"string\",\n },\n recursive: {\n type: \"boolean\",\n },\n secret: {\n type: \"boolean\",\n },\n role: {\n type: \"string\",\n },\n root: {\n type: \"boolean\",\n },\n last: {\n type: \"boolean\",\n },\n title: {\n type: \"string\",\n },\n to: {\n type: \"string\",\n },\n verbose: {\n short: \"v\",\n type: \"boolean\",\n },\n version: {\n type: \"boolean\",\n },\n },\n strict: true,\n });\n\n rejectNonGcForceFlag(positionals, values);\n rejectNonCreateReplaceFlag(positionals, values);\n rejectNonWikiGraphSkipUnindexedFlag(positionals, values);\n rejectUnsupportedIndexesFlag(values.indexes);\n\n if (values.version === true) {\n return {\n help: false,\n kind: \"version\",\n };\n }\n\n if (values.help === true && positionals.length === 0) {\n return {\n help: true,\n helpText: renderMainHelpText(),\n kind: \"help\",\n };\n }\n\n if (\n values[\"accept-cost\"] === true &&\n !(isWikiGraphJobUri(positionals[0]) && positionals[1] === \"add\")\n ) {\n throw new Error(\n withHelpRoute(\n \"`--accept-cost` is only valid for `wg wikg://local/job add`.\",\n \"wg wikg://local/job add --help\",\n ),\n );\n }\n\n if (\n values.reverse === true &&\n (positionals[0] === undefined ||\n (!isWikiGraphUri(positionals[0]) && positionals[0] !== \"next\"))\n ) {\n throw new Error(\"The current command does not support --reverse.\");\n }\n\n if (positionals[0] === \"help\") {\n return parseHelpArguments(positionals.slice(1), values);\n }\n\n if (positionals[0] === \"gc\") {\n return parseGcArguments(positionals.slice(1), values);\n }\n\n if (positionals[0] === \"legacy\") {\n return parseLegacyArguments(positionals.slice(1), values);\n }\n\n if (positionals[0] === \"maintenance\") {\n return parseMaintenanceArguments(positionals.slice(1), values);\n }\n\n if (positionals[0] === \"transform\") {\n return parseTransformArguments(positionals.slice(1), values);\n }\n\n if (positionals[0] === \"next\") {\n return parseArchiveArguments(\"next\", positionals.slice(1), values);\n }\n\n if (\n isArchiveMaintenanceCommand(positionals[0]) &&\n values.help === true &&\n positionals.length <= 2\n ) {\n return parseArchiveMaintenanceArguments(\n positionals[0],\n positionals.slice(1),\n values,\n );\n }\n\n if (isWikiGraphJobUri(positionals[0])) {\n rejectArchiveBooleanFlag(\n positionals[1] ?? \"job\",\n \"--reverse\",\n values.reverse,\n \"wg wikg://local/job --help\",\n );\n return parseJobUriFirstArguments(positionals, values);\n }\n\n if (isWikiGraphLocalConfigUri(positionals[0])) {\n rejectArchiveBooleanFlag(\n positionals[1] ?? \"config\",\n \"--reverse\",\n values.reverse,\n \"wg wikg://local/config --help\",\n );\n return parseLocalConfigUriFirstArguments(positionals, values);\n }\n\n if (isWikiGraphLibraryUri(positionals[0])) {\n return parseLibraryUriFirstArguments(positionals, values);\n }\n\n if (isWikiGraphUri(positionals[0])) {\n return parseArchiveUriFirstArguments(positionals, values);\n }\n\n if (\n isPublicArchiveCommandHelpAction(positionals[0]) &&\n values.help === true &&\n positionals.length === 1\n ) {\n return parseArchiveArguments(positionals[0], positionals.slice(1), values);\n }\n\n if (positionals.length === 0) {\n throw new Error(withHelpRoute(\"Missing command.\", CLI_HELP_ROUTES.command));\n }\n throw new Error(formatUnknownCommandMessage(positionals[0]!));\n}\n\nfunction rejectUnsupportedIndexesFlag(value: string | undefined): void {\n if (value === undefined) {\n return;\n }\n\n throw new Error(\n withHelpRoute(\n \"The --indexes option has been removed. Build chapter index artifacts explicitly, then sync the archive or library index cache.\",\n CLI_HELP_ROUTES.root,\n ),\n );\n}\n\nfunction rejectNonWikiGraphSkipUnindexedFlag(\n positionals: readonly string[],\n values: { readonly \"skip-unindexed\"?: boolean },\n): void {\n if (values[\"skip-unindexed\"] !== true) {\n return;\n }\n\n const command = positionals[0];\n if (\n command !== undefined &&\n (isWikiGraphUri(command) || isWikiGraphLibraryUri(command))\n ) {\n return;\n }\n\n throw new Error(\n withHelpRoute(\n \"The current command does not support --skip-unindexed.\",\n CLI_HELP_ROUTES.root,\n ),\n );\n}\n","import { parseLocatedWikiGraphUri, withHelpRoute } from \"../support/index.js\";\nimport {\n isUriHelpPredicate,\n renderUriHelpText,\n renderUriPredicateHelpText,\n} from \"./help.js\";\nimport type {\n ArchiveArgumentValues,\n CLIQueueAction,\n ParsedCLIArguments,\n} from \"./types.js\";\nimport {\n formatRemovedImplicitVerbMessage,\n formatWikiGraphHelpCommand,\n isJobUriAction,\n isRemovedImplicitArchiveAction,\n parseBuildJobTarget,\n parseNonNegativeIntegerFlag,\n parseWatchFrom,\n parseWikiGraphJobTargetUri,\n parseWikiGraphJobUri,\n rejectQueueExtraPositionals,\n rejectStreamingJSONFlag,\n requireArchiveUriPath,\n} from \"./helpers.js\";\nimport { parseChapterTarget } from \"./uri/index.js\";\n\nexport function parseJobUriFirstArguments(\n positionals: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const uri = positionals[0];\n const jobTargetUri = parseWikiGraphJobTargetUri(uri);\n const explicitAction = positionals[1];\n\n if (uri === undefined) {\n throw new Error(\"Internal error: missing job URI.\");\n }\n\n if (isRemovedImplicitArchiveAction(explicitAction)) {\n throw new Error(formatRemovedImplicitVerbMessage(explicitAction));\n }\n\n if (values.help === true) {\n if (explicitAction === undefined) {\n return {\n help: true,\n helpText: renderUriHelpText(\n jobTargetUri === undefined && parseWikiGraphJobUri(uri) === undefined\n ? \"job-collection-scope\"\n : jobTargetUri === undefined\n ? \"job-object\"\n : \"job-target-object\",\n uri,\n ),\n kind: \"help\",\n };\n }\n const targetName =\n jobTargetUri === undefined && parseWikiGraphJobUri(uri) === undefined\n ? \"job-collection-scope\"\n : jobTargetUri === undefined\n ? \"job-object\"\n : \"job-target-object\";\n if (isUriHelpPredicate(targetName, explicitAction)) {\n return {\n help: true,\n helpText: renderUriPredicateHelpText(targetName, explicitAction, uri),\n kind: \"help\",\n };\n }\n }\n\n const jobId = jobTargetUri ?? parseWikiGraphJobUri(uri);\n const action =\n explicitAction ??\n (jobTargetUri !== undefined\n ? undefined\n : jobId === undefined\n ? \"list\"\n : \"get\");\n\n if (!isJobUriAction(action)) {\n throw new Error(\n withHelpRoute(\n action === undefined\n ? `Missing action after ${uri}.`\n : `The job URI form does not support \\`${action}\\`.`,\n \"wg wikg://local/job --help\",\n ),\n );\n }\n\n const helpRoute =\n explicitAction === undefined\n ? formatWikiGraphHelpCommand(uri)\n : formatWikiGraphHelpCommand(uri, action);\n const tail = explicitAction === undefined ? [] : positionals.slice(2);\n\n if (jobTargetUri !== undefined) {\n if (action !== \"set\") {\n throw new Error(\n withHelpRoute(\n `The job target URI form does not support \\`${action}\\`. Expected set.`,\n \"wg wikg://local/job/<job-id>/target set --help\",\n ),\n );\n }\n return parseQueueJobTargetUriArguments(\n jobTargetUri,\n tail,\n values,\n helpRoute,\n );\n }\n\n switch (action) {\n case \"add\":\n if (jobId !== undefined) {\n throw new Error(\n withHelpRoute(\"Job add requires `wikg://local/job`.\", helpRoute),\n );\n }\n return parseQueueAddArguments(tail, values, helpRoute);\n case \"clean\":\n if (jobId !== undefined) {\n throw new Error(\n withHelpRoute(\"Job clean requires `wikg://local/job`.\", helpRoute),\n );\n }\n rejectQueueJSONFlag(\"clean\", values.json, helpRoute);\n rejectQueueJSONLFlag(\"clean\", values.jsonl, helpRoute);\n rejectQueueExtraPositionals(\"clean\", [\"clean\", ...tail], 1, helpRoute);\n return {\n args: {\n action: \"clean\",\n },\n help: false,\n kind: \"queue\",\n };\n case \"list\":\n if (jobId !== undefined) {\n throw new Error(\n withHelpRoute(\"Job list requires `wikg://local/job`.\", helpRoute),\n );\n }\n rejectQueueJSONLFlag(\"list\", values.jsonl, helpRoute);\n rejectQueueExtraPositionals(\"list\", [\"list\", ...tail], 1, helpRoute);\n return {\n args: {\n action: \"list\",\n ...(values.active === undefined ? {} : { activeOnly: values.active }),\n ...(values.all === undefined ? {} : { all: values.all }),\n ...(values.input === undefined\n ? {}\n : { archivePath: requireArchiveUriPath(values.input, helpRoute) }),\n ...(values.json === undefined ? {} : { json: values.json }),\n },\n help: false,\n kind: \"queue\",\n };\n case \"get\":\n return parseQueueJobArguments(\"status\", jobId, tail, values, helpRoute);\n case \"watch\":\n case \"pause\":\n case \"resume\":\n case \"cancel\":\n case \"boost\":\n return parseQueueJobArguments(action, jobId, tail, values, helpRoute);\n case \"set\":\n throw new Error(\n withHelpRoute(\n \"`wikg://local/job/<job-id> set` is not supported. Use `wikg://local/job/<job-id>/target set <target>`.\",\n \"wg wikg://local/job/<job-id>/target set --help\",\n ),\n );\n }\n\n throw new Error(\"Internal error: unsupported job URI action.\");\n}\n\nfunction parseQueueJobTargetUriArguments(\n jobId: string,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n rejectQueueJSONFlag(\"target\", values.json, helpRoute);\n rejectQueueJSONLFlag(\"target\", values.jsonl, helpRoute);\n rejectQueueExtraPositionals(\n \"target\",\n [\"target\", jobId, ...tail],\n 3,\n helpRoute,\n );\n\n const target = tail[0];\n if (target === undefined) {\n throw new Error(withHelpRoute(\"Missing build job target.\", helpRoute));\n }\n\n return {\n args: {\n action: \"target\",\n jobId,\n target: parseBuildJobTarget(target),\n },\n help: false,\n kind: \"queue\",\n };\n}\n\nfunction rejectQueueJSONFlag(\n action: CLIQueueAction,\n value: boolean | undefined,\n helpRoute: string,\n): void {\n if (value !== true) {\n return;\n }\n\n throw new Error(\n withHelpRoute(\n `\\`wg wikg://local/job ${action}\\` does not support --json.`,\n helpRoute,\n ),\n );\n}\n\nfunction parseQueueAddArguments(\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n const action = \"add\";\n\n rejectQueueJSONLFlag(action, values.jsonl, helpRoute);\n rejectQueueFlag(action, \"--stage\", values.stage, helpRoute);\n rejectQueueFlag(action, \"--to\", values.to, helpRoute);\n rejectQueueFlag(action, \"--chapter\", values.chapter, helpRoute);\n rejectQueueExtraPositionals(action, [action, ...tail], 1, helpRoute);\n if (values.input === undefined) {\n throw new Error(withHelpRoute(\"Missing --input.\", helpRoute));\n }\n\n const input = parseQueueAddInput(values.input, helpRoute);\n\n return {\n args: {\n action,\n ...(values[\"accept-cost\"] === undefined\n ? {}\n : { acceptCost: values[\"accept-cost\"] }),\n archivePath: input.archivePath,\n ...(values.boost === undefined ? {} : { boost: values.boost }),\n ...(input.chapterPath === undefined\n ? {}\n : { chapterPath: input.chapterPath }),\n ...(values.depth === undefined\n ? {}\n : {\n depth: parseNonNegativeIntegerFlag(\n values.depth,\n \"--depth\",\n helpRoute,\n ),\n }),\n inputPath: values.input,\n ...(values.json === undefined ? {} : { json: values.json }),\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n ...(values.prompt === undefined ? {} : { prompt: values.prompt }),\n target: parseBuildJobTarget(values.task),\n },\n help: false,\n kind: \"queue\",\n };\n}\n\nfunction parseQueueAddInput(\n uri: string,\n helpRoute: string,\n): { readonly archivePath: string; readonly chapterPath?: string } {\n const parsed = parseLocatedWikiGraphUri(uri);\n\n if (parsed.archivePath === undefined) {\n throw new Error(\n withHelpRoute(\n `Expected an archive or chapter Wiki Graph URI: ${uri}`,\n helpRoute,\n ),\n );\n }\n if (parsed.objectUri === undefined) {\n return { archivePath: parsed.archivePath };\n }\n\n const chapterTarget = parseChapterTarget(parsed.objectUri);\n if (chapterTarget?.kind !== \"chapter\") {\n throw new Error(\n withHelpRoute(\n `Expected an archive or chapter Wiki Graph URI: ${uri}`,\n helpRoute,\n ),\n );\n }\n\n return {\n archivePath: parsed.archivePath,\n chapterPath: chapterTarget.chapterPath,\n };\n}\n\nfunction parseQueueJobArguments(\n action: Exclude<CLIQueueAction, \"add\" | \"clean\" | \"list\">,\n jobId: string | undefined,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n if (action === \"status\") {\n rejectQueueJSONLFlag(action, values.jsonl, helpRoute);\n } else if (action === \"watch\") {\n rejectStreamingJSONFlag(action, values.json, helpRoute);\n } else {\n rejectQueueJSONFlag(action, values.json, helpRoute);\n rejectQueueJSONLFlag(action, values.jsonl, helpRoute);\n }\n\n if (action !== \"target\") {\n rejectQueueFlag(action, \"--stage\", values.stage, helpRoute);\n rejectQueueFlag(action, \"--to\", values.to, helpRoute);\n } else {\n rejectQueueFlag(action, \"--stage\", values.stage, helpRoute);\n rejectQueueFlag(action, \"--to\", values.to, helpRoute);\n }\n\n if (jobId === undefined) {\n throw new Error(\n withHelpRoute(\n `\\`wg wikg://local/job/<job-id> ${action}\\` requires <job-id>.`,\n helpRoute,\n ),\n );\n }\n\n rejectQueueExtraPositionals(action, [action, jobId, ...tail], 2, helpRoute);\n\n if (action === \"watch\") {\n const watchFrom = parseWatchFrom(values.from, helpRoute);\n\n return {\n args: {\n action,\n jobId,\n ...(watchFrom === undefined ? {} : { from: watchFrom }),\n ...(values.jsonl === undefined ? {} : { jsonl: values.jsonl }),\n },\n help: false,\n kind: \"queue\",\n };\n }\n\n if (action === \"status\") {\n return {\n args: {\n action,\n jobId,\n ...(values.json === undefined ? {} : { json: values.json }),\n },\n help: false,\n kind: \"queue\",\n };\n }\n\n if (action === \"target\") {\n return {\n args: {\n action,\n jobId,\n target: parseBuildJobTarget(values.task),\n },\n help: false,\n kind: \"queue\",\n };\n }\n\n return {\n args: {\n action,\n jobId,\n },\n help: false,\n kind: \"queue\",\n };\n}\n\nfunction rejectQueueJSONLFlag(\n action: CLIQueueAction,\n value: boolean | undefined,\n helpRoute: string,\n): void {\n if (value !== true) {\n return;\n }\n\n throw new Error(\n withHelpRoute(\n `\\`wg wikg://local/job ${action}\\` does not support --jsonl.`,\n helpRoute,\n ),\n );\n}\n\nfunction rejectQueueFlag(\n action: CLIQueueAction,\n name: string,\n value: string | undefined,\n helpRoute: string,\n): void {\n if (value === undefined) {\n return;\n }\n\n throw new Error(\n withHelpRoute(\n `\\`wg wikg://local/job ${action}\\` does not support ${name}.`,\n helpRoute,\n ),\n );\n}\n","import {\n formatLocatedChapterResourceUri,\n formatLocatedChapterSourceCollectionUri,\n formatLocatedChapterUri,\n type ArchiveTriplePattern,\n type BuildJobTarget,\n type IndexArtifactKind,\n} from \"wiki-graph-core\";\n\nimport { renderArchiveMaintenanceChapterActionHelpText } from \"../../help.js\";\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../../../support/index.js\";\nimport { parseArchiveArguments } from \"../../archive.js\";\nimport type {\n ArchiveArgumentValues,\n ArchiveUriLens,\n CLIArchiveChapterAction,\n CLIArchiveUriAction,\n ParsedCLIArguments,\n} from \"../../types.js\";\nimport {\n formatWikiGraphHelpCommand,\n normalizeArchiveChapterArguments,\n rejectArchiveChapterFlag,\n rejectArchiveChapterMetaFlags,\n} from \"../../helpers.js\";\nimport type { ChapterUriTarget } from \"./target.js\";\n\nexport function parseArchiveChapterUriArguments(\n uri: string,\n archivePath: string,\n target: ChapterUriTarget,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const helpRoute = formatWikiGraphHelpCommand(uri, action);\n\n switch (target.kind) {\n case \"collection\":\n return parseChapterCollectionUriArguments(\n uri,\n archivePath,\n action,\n tail,\n values,\n helpRoute,\n );\n case \"lens\":\n return parseArchiveLensUriArguments(\n uri,\n target.lens,\n action,\n tail,\n values,\n helpRoute,\n );\n case \"triple-pattern-lens\":\n return parseArchiveTriplePatternLensUriArguments(\n uri,\n target.pattern,\n action,\n tail,\n values,\n helpRoute,\n );\n case \"tree\":\n return parseChapterTreeUriArguments(\n archivePath,\n action,\n tail,\n values,\n helpRoute,\n );\n case \"chapter\":\n return parseSingleChapterUriArguments(\n archivePath,\n target.chapterPath,\n action,\n tail,\n values,\n helpRoute,\n );\n case \"chapter-lens\":\n return parseChapterLensUriArguments(\n archivePath,\n target.chapterPath,\n target.lens,\n action,\n tail,\n values,\n helpRoute,\n );\n case \"chapter-triple-pattern-lens\":\n return parseChapterTriplePatternLensUriArguments(\n archivePath,\n target.chapterPath,\n target.pattern,\n action,\n tail,\n values,\n helpRoute,\n );\n case \"chapter-index-artifact\":\n return parseChapterIndexArtifactUriArguments(\n archivePath,\n target.chapterPath,\n target.indexArtifactKind,\n action,\n tail,\n values,\n helpRoute,\n );\n case \"chapter-state\":\n return parseChapterStateUriArguments(\n uri,\n action,\n tail,\n values,\n helpRoute,\n );\n case \"chapter-resource\":\n return parseChapterResourceUriArguments(\n uri,\n archivePath,\n target.chapterPath,\n target.resource,\n action,\n tail,\n values,\n helpRoute,\n );\n case \"source-locator-scope\":\n return parseSourceLocatorScopeUriArguments(\n uri,\n action,\n tail,\n values,\n helpRoute,\n );\n }\n}\n\nfunction parseSourceLocatorScopeUriArguments(\n uri: string,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n if (action !== \"list\") {\n throw new Error(\n withHelpRoute(\n \"The source locator scope is read-only. Read it directly to enumerate locator mappings.\",\n \"wg <chapter-uri>/source/locators --help\",\n ),\n );\n }\n\n rejectArchiveChapterFlag(\"backlinks\", values.backlinks, helpRoute);\n rejectArchiveChapterFlag(\"context\", values.context, helpRoute);\n rejectArchiveChapterFlag(\"depth\", values.depth, helpRoute);\n rejectArchiveChapterFlag(\"evidence\", values.evidence, helpRoute);\n rejectArchiveChapterFlag(\"reverse\", values.reverse, helpRoute);\n rejectArchiveChapterFlag(\n \"skip-unindexed\",\n values[\"skip-unindexed\"],\n helpRoute,\n );\n\n return parseArchiveArguments(\"list\", [uri, ...tail], values, helpRoute);\n}\n\nfunction parseChapterIndexArtifactUriArguments(\n archivePath: string,\n chapterPath: string,\n indexArtifactKind: IndexArtifactKind,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n rejectArchiveChapterMetaFlags(values, helpRoute);\n rejectArchiveChapterFlag(\"input\", values.input, helpRoute);\n rejectArchiveChapterFlag(\"import\", values.import, helpRoute);\n rejectArchiveChapterFlag(\"to\", values.to, helpRoute);\n\n if (tail.length > 0) {\n throw new Error(\n withHelpRoute(\n `Unexpected argument for chapter index artifact: ${tail[0]}`,\n helpRoute,\n ),\n );\n }\n\n switch (action) {\n case \"get\":\n return {\n args: {\n action: \"get-index-artifact\",\n chapterPath,\n indexArtifactKind,\n path: archivePath,\n ...(values.json === undefined ? {} : { json: values.json }),\n },\n help: false,\n kind: \"chapter\",\n };\n case \"build\":\n return {\n args: {\n action: \"build-index-artifact\",\n chapterPath,\n indexArtifactKind,\n indexArtifactTarget:\n mapIndexArtifactKindToBuildTarget(indexArtifactKind),\n path: archivePath,\n ...(values.json === undefined ? {} : { json: values.json }),\n },\n help: false,\n kind: \"chapter\",\n };\n case \"delete\":\n return {\n args: {\n action: \"delete-index-artifact\",\n chapterPath,\n indexArtifactKind,\n path: archivePath,\n ...(values.json === undefined ? {} : { json: values.json }),\n },\n help: false,\n kind: \"chapter\",\n };\n default:\n throw new Error(\n withHelpRoute(\n `The chapter index artifact does not support \\`${action}\\`. Use get, build, or delete.`,\n helpRoute,\n ),\n );\n }\n}\n\nfunction mapIndexArtifactKindToBuildTarget(\n kind: IndexArtifactKind,\n): BuildJobTarget {\n switch (kind) {\n case \"fts\":\n return \"index-fts\";\n case \"embedding-source\":\n return \"index-embedding-source\";\n case \"embedding-summary\":\n return \"index-embedding-summary\";\n }\n}\n\nfunction parseChapterCollectionUriArguments(\n uri: string,\n archivePath: string,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n if (action === \"list\" || action === \"search\") {\n return parseArchiveLensUriArguments(\n uri,\n \"chapter\",\n action,\n tail,\n values,\n helpRoute,\n );\n }\n\n if (!isChapterCollectionMaintenanceAction(action)) {\n throw new Error(\n withHelpRoute(\n `The chapter collection does not support \\`${action}\\`. Read it directly, add --query, or use add.`,\n \"wg <chapter-uri> --help\",\n ),\n );\n }\n\n return parseArchiveChapterLikeArguments(\n action,\n archivePath,\n tail,\n values,\n helpRoute,\n );\n}\n\nfunction isChapterCollectionMaintenanceAction(\n action: CLIArchiveUriAction,\n): action is Extract<\n CLIArchiveChapterAction,\n \"add\" | \"move\" | \"remove\" | \"reset\"\n> {\n return (\n action === \"add\" ||\n action === \"move\" ||\n action === \"remove\" ||\n action === \"reset\"\n );\n}\n\nfunction parseArchiveLensUriArguments(\n uri: string,\n lens: ArchiveUriLens,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n if (action !== \"list\" && action !== \"search\") {\n throw new Error(\n withHelpRoute(\n `The ${lens} collection does not support \\`${action}\\`. Read it directly, or add --query.`,\n `wg <scope-uri> --help`,\n ),\n );\n }\n\n return parseArchiveArguments(action, [uri, ...tail], values, helpRoute, {\n defaultKinds: [lens],\n });\n}\n\nfunction parseArchiveTriplePatternLensUriArguments(\n uri: string,\n pattern: ArchiveTriplePattern,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n if (action !== \"list\" && action !== \"search\") {\n throw new Error(\n withHelpRoute(\n `The triple pattern collection does not support \\`${action}\\`. Read it directly, or add --query.`,\n \"wg <triple-uri> --help\",\n ),\n );\n }\n\n return parseArchiveArguments(action, [uri, ...tail], values, helpRoute, {\n defaultKinds: [\"triple\"],\n triplePattern: pattern,\n });\n}\n\nfunction parseChapterTreeUriArguments(\n archivePath: string,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n if (action !== \"get\" && action !== \"set\") {\n throw new Error(\n withHelpRoute(\n `The chapter tree does not support \\`${action}\\`. Read it directly, or use set.`,\n \"wg <archive-uri>/chapter/tree --help\",\n ),\n );\n }\n\n return parseArchiveChapterLikeArguments(\n \"tree\",\n archivePath,\n tail,\n values,\n helpRoute,\n action === \"set\" ? \"apply\" : undefined,\n );\n}\n\nfunction parseSingleChapterUriArguments(\n archivePath: string,\n chapterPath: string,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n switch (action) {\n case \"search\":\n case \"list\":\n return parseArchiveArguments(\n action,\n [formatLocatedChapterUri(archivePath, chapterPath), ...tail],\n values,\n helpRoute,\n );\n case \"get\":\n throw new Error(\n withHelpRoute(\n \"`chapter/<path>` is a scope URI. Use `chapter/<path>/title` or `chapter/<path>/state` to read a concrete chapter object.\",\n CLI_HELP_ROUTES.uri,\n ),\n );\n case \"inspect\":\n throw new Error(\n withHelpRoute(\n \"`chapter/<path>` inspect is not available. Inspect the archive or read concrete chapter resources instead.\",\n CLI_HELP_ROUTES.uri,\n ),\n );\n case \"move\":\n case \"remove\":\n case \"reset\":\n return parseArchiveChapterLikeArguments(\n action,\n archivePath,\n tail,\n { ...values, chapter: chapterPath },\n helpRoute,\n );\n default:\n throw new Error(\n withHelpRoute(\n `The chapter object does not support \\`${action}\\`.`,\n \"wg <chapter-uri> --help\",\n ),\n );\n }\n}\n\nfunction parseChapterLensUriArguments(\n archivePath: string,\n chapterPath: string,\n lens: ArchiveUriLens,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n if (action !== \"list\" && action !== \"search\") {\n throw new Error(\n withHelpRoute(\n `The chapter ${lens} collection does not support \\`${action}\\`. Read it directly, or add --query.`,\n `wg <scope-uri> --help`,\n ),\n );\n }\n\n return parseArchiveArguments(\n action,\n [formatChapterScopedArchiveUri(archivePath, chapterPath), ...tail],\n values,\n helpRoute,\n { defaultKinds: [lens] },\n );\n}\n\nfunction parseChapterTriplePatternLensUriArguments(\n archivePath: string,\n chapterPath: string,\n pattern: ArchiveTriplePattern,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n if (action !== \"list\" && action !== \"search\") {\n throw new Error(\n withHelpRoute(\n `The chapter triple pattern collection does not support \\`${action}\\`. Read it directly, or add --query.`,\n \"wg <triple-uri> --help\",\n ),\n );\n }\n\n return parseArchiveArguments(\n action,\n [formatChapterScopedArchiveUri(archivePath, chapterPath), ...tail],\n values,\n helpRoute,\n { defaultKinds: [\"triple\"], triplePattern: pattern },\n );\n}\n\nfunction parseChapterStateUriArguments(\n uri: string,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n if (action !== \"get\") {\n throw new Error(\n withHelpRoute(\n `The chapter state object does not support \\`${action}\\`. Read the state URI directly.`,\n \"wg <chapter-uri>/state --help\",\n ),\n );\n }\n\n return parseArchiveArguments(\"get\", [uri, ...tail], values, helpRoute);\n}\n\nfunction parseChapterResourceUriArguments(\n uri: string,\n archivePath: string,\n chapterPath: string,\n resource: \"source\" | \"summary\" | \"title\",\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n const resourceHelpRoute = `wg <chapter-uri>/${resource} --help`;\n\n if (action === \"list\" || action === \"search\") {\n if (resource === \"title\") {\n throw new Error(\n withHelpRoute(\n `The chapter ${resource} resource does not support \\`${action}\\`.`,\n resourceHelpRoute,\n ),\n );\n }\n\n return parseArchiveArguments(\n action,\n [\n resource === \"source\" || resource === \"summary\"\n ? formatChapterScopedArchiveUri(archivePath, chapterPath)\n : formatLocatedChapterUri(archivePath, chapterPath),\n ...tail,\n ],\n values,\n helpRoute,\n { defaultKinds: [resource] },\n );\n }\n\n if (action !== \"set\" && action !== \"get\" && action !== \"clear\") {\n throw new Error(\n withHelpRoute(\n `The chapter ${resource} resource does not support \\`${action}\\`. Read it directly, or use set.`,\n resourceHelpRoute,\n ),\n );\n }\n if (action === \"clear\" && resource !== \"title\") {\n throw new Error(\n withHelpRoute(\n `The chapter ${resource} resource does not support clear.`,\n resourceHelpRoute,\n ),\n );\n }\n if (action === \"set\" && values.clear === true) {\n throw new Error(\n withHelpRoute(\n `The chapter ${resource} set command does not support --clear. Use \\`clear\\`.`,\n resourceHelpRoute,\n ),\n );\n }\n\n if (action === \"get\") {\n const objectUri =\n uri.includes(\"#\") && (resource === \"source\" || resource === \"summary\")\n ? uri\n : isLibraryArchiveLocator(archivePath)\n ? uri\n : resource === \"source\"\n ? formatLocatedChapterSourceCollectionUri(archivePath, chapterPath)\n : formatLocatedChapterResourceUri(\n archivePath,\n chapterPath,\n resource,\n );\n\n return parseArchiveArguments(\n \"get\",\n [objectUri, ...tail],\n values,\n helpRoute,\n );\n }\n\n const mappedAction =\n resource === \"source\"\n ? \"set-source\"\n : resource === \"summary\"\n ? \"set-summary\"\n : \"set-title\";\n\n return parseArchiveChapterLikeArguments(\n mappedAction,\n archivePath,\n tail,\n {\n ...values,\n chapter: chapterPath,\n ...(action === \"clear\" ? { clear: true } : {}),\n },\n helpRoute,\n );\n}\n\nfunction formatChapterScopedArchiveUri(\n archivePath: string,\n chapterPath: string,\n): string {\n return isLibraryArchiveLocator(archivePath)\n ? `${archivePath}/chapter/${chapterPath}`\n : formatLocatedChapterUri(archivePath, chapterPath);\n}\n\nfunction isLibraryArchiveLocator(archivePath: string): boolean {\n return (\n archivePath.startsWith(\"wikg://lib/arc/\") ||\n /^wikg:\\/\\/lib\\/[^/]+\\/arc\\//u.test(archivePath)\n );\n}\n\nfunction parseArchiveChapterLikeArguments(\n action: CLIArchiveChapterAction,\n archivePath: string,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n treeAction?: \"apply\",\n): ParsedCLIArguments {\n if (values.help === true) {\n return {\n help: true,\n helpText: renderArchiveMaintenanceChapterActionHelpText(action),\n kind: \"chapter\",\n };\n }\n\n rejectArchiveChapterFlag(\"digest-dir\", values[\"digest-dir\"], helpRoute);\n rejectArchiveChapterFlag(\"depth\", values.depth, helpRoute);\n rejectArchiveChapterFlag(\"jsonl\", values.jsonl, helpRoute);\n rejectArchiveChapterFlag(\"limit\", values.limit, helpRoute);\n rejectArchiveChapterFlag(\"output\", values.output, helpRoute);\n rejectArchiveChapterFlag(\"output-format\", values[\"output-format\"], helpRoute);\n rejectArchiveChapterMetaFlags(values, helpRoute);\n if (values.verbose) {\n throw new Error(\n withHelpRoute(\n \"The chapter command does not support --verbose.\",\n helpRoute,\n ),\n );\n }\n\n const maxPositionals =\n action === \"set-source\" ||\n action === \"set-summary\" ||\n action === \"set-title\"\n ? 1\n : 0;\n if (tail.length > maxPositionals) {\n throw new Error(\n withHelpRoute(\n `Unexpected positional arguments: ${tail.join(\" \")}.`,\n helpRoute,\n ),\n );\n }\n\n return {\n args: normalizeArchiveChapterArguments(\n action,\n archivePath,\n values,\n helpRoute,\n treeAction,\n tail[0],\n ),\n help: false,\n kind: \"chapter\",\n };\n}\n","import {\n type ParsedWikiGraphLibraryUri,\n parseWikiGraphLibraryUri,\n} from \"wiki-graph-core\";\n\nimport {\n isUriHelpPredicate,\n renderUriHelpText,\n renderUriPredicateHelpText,\n type UriHelpTargetName,\n} from \"../help.js\";\nimport {\n CLI_HELP_ROUTES,\n parseLocatedWikiGraphUri,\n withHelpRoute,\n} from \"../../support/index.js\";\nimport { parseArchiveArguments } from \"../archive.js\";\nimport type {\n ArchiveArgumentValues,\n CLIArchiveUriAction,\n ParsedCLIArguments,\n} from \"../types.js\";\nimport {\n formatMissingArchiveLocatorMessage,\n formatRemovedImplicitVerbMessage,\n formatWikiGraphHelpCommand,\n isArchiveUriAction,\n isImplicitArchiveReadAction,\n isUriFirstArchiveAction,\n rejectArchiveBooleanFlag,\n stripObjectUriPrefix,\n} from \"../helpers.js\";\nimport { parseArchiveChapterUriArguments } from \"./chapter/routing.js\";\nimport { parseChapterTarget } from \"./chapter/target.js\";\nimport {\n parseArchiveUriArchiveArguments,\n parseArchiveCoverUriArguments,\n parseArchiveIndexUriArguments,\n} from \"./archive-objects.js\";\nimport {\n containsMetadataKeySuffix,\n parseMetadataTarget,\n parseMetadataUriArguments,\n} from \"./metadata.js\";\nimport { isTripleScopePath } from \"./triple-pattern.js\";\n\nexport function parseArchiveUriFirstArguments(\n positionals: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const uri = positionals[0];\n const explicitAction = positionals[1];\n\n if (uri === undefined) {\n throw new Error(\"Internal error: missing URI-first archive URI.\");\n }\n\n const action = normalizeArchiveUriAction(\n uri,\n explicitAction ?? resolveImplicitArchiveUriAction(uri, values.query),\n );\n\n if (explicitAction === \"get\") {\n throw new Error(formatRemovedImplicitVerbMessage(explicitAction));\n }\n\n if (values.help === true && explicitAction === undefined) {\n const helpTarget = classifyArchiveUriHelpTarget(uri);\n\n return {\n help: true,\n helpText: renderUriHelpText(helpTarget, uri),\n kind: \"help\",\n };\n }\n\n if (values.help === true && explicitAction !== undefined) {\n const helpTarget = classifyArchiveUriHelpTarget(uri);\n\n if (!isUriHelpPredicate(helpTarget, action)) {\n throw new Error(\n withHelpRoute(\n `The URI target ${uri} does not support \\`${action}\\`.`,\n formatWikiGraphHelpCommand(uri),\n ),\n );\n }\n return {\n help: true,\n helpText: renderUriPredicateHelpText(helpTarget, action, uri),\n kind: \"help\",\n };\n }\n\n if (!isArchiveUriAction(action)) {\n const helpCommand = formatWikiGraphHelpCommand(uri);\n\n throw new Error(\n withHelpRoute(\n `The URI-first form does not support \\`${action}\\`. Use \\`${helpCommand}\\` to inspect valid predicates.`,\n helpCommand,\n ),\n );\n }\n\n return parseArchiveUriTargetArguments(\n uri,\n action,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n );\n}\n\ntype ArchiveUriKind = \"object\" | \"scope\";\n\nfunction normalizeArchiveUriAction(uri: string, action: string): string {\n if (action !== \"apply\") {\n return action;\n }\n\n const parsed = parseLocatedWikiGraphUri(uri);\n if (parsed.objectUri === \"wikg://chapter/tree\") {\n return \"set\";\n }\n\n return action;\n}\n\nfunction resolveImplicitArchiveUriAction(\n uri: string,\n query: string | undefined,\n): CLIArchiveUriAction {\n const parsed = parseLocatedWikiGraphUri(uri);\n\n if (parsed.archivePath === undefined) {\n throw new Error(formatMissingArchiveLocatorMessage(uri));\n }\n\n const kind = classifyArchiveUri(parsed.objectUri);\n\n if (kind === \"scope\") {\n return query === undefined ? \"list\" : \"search\";\n }\n if (query !== undefined) {\n throw new Error(\n withHelpRoute(\n \"`--query` requires a scope URI, or an explicit `related` or `evidence` command for supported object URIs.\",\n CLI_HELP_ROUTES.uri,\n ),\n );\n }\n\n return \"get\";\n}\n\nfunction classifyArchiveUri(objectUri: string | undefined): ArchiveUriKind {\n if (objectUri === undefined) {\n return \"scope\";\n }\n\n const path = stripObjectUriPrefix(objectUri);\n\n const chapterTarget = parseChapterTarget(objectUri);\n if (chapterTarget !== undefined) {\n switch (chapterTarget.kind) {\n case \"collection\":\n case \"chapter\":\n case \"lens\":\n case \"triple-pattern-lens\":\n case \"chapter-lens\":\n case \"chapter-triple-pattern-lens\":\n case \"source-locator-scope\":\n return \"scope\";\n case \"tree\":\n case \"chapter-resource\":\n case \"chapter-state\":\n return \"object\";\n }\n }\n if (isTripleScopePath(path)) {\n return \"scope\";\n }\n if (/^(?:chunk|entity)$/u.test(path)) {\n return \"scope\";\n }\n\n return \"object\";\n}\n\nfunction classifyArchiveUriHelpTarget(uri: string): UriHelpTargetName {\n const parsed = parseLocatedWikiGraphUri(uri);\n const objectUri = parsed.objectUri;\n\n if (objectUri === undefined) {\n return \"archive-scope\";\n }\n\n const path = stripObjectUriPrefix(objectUri);\n rejectPredicateLikeObjectSuffix(uri, path);\n\n if (parseMetadataTarget(objectUri) !== undefined) {\n return \"metadata-object\";\n }\n if (path === \"cover\") {\n return \"cover-object\";\n }\n if (path === \"index\") {\n return \"index-object\";\n }\n if (/^artifact\\/[0-9a-f]{12,64}(?:#.+)?$/iu.test(path)) {\n return \"artifact-object\";\n }\n const chapterTarget = parseChapterTarget(objectUri);\n if (chapterTarget !== undefined) {\n switch (chapterTarget.kind) {\n case \"collection\":\n return \"chapter-collection-scope\";\n case \"chapter\":\n return \"chapter-scope\";\n case \"tree\":\n return \"chapter-tree-object\";\n case \"chapter-state\":\n return \"chapter-state-object\";\n case \"chapter-index-artifact\":\n return \"chapter-index-artifact\";\n case \"source-locator-scope\":\n return \"chapter-source-locator-scope\";\n case \"chapter-resource\":\n switch (chapterTarget.resource) {\n case \"source\":\n return hasUriFragment(uri)\n ? \"chapter-source-range-object\"\n : \"chapter-source-object\";\n case \"summary\":\n return hasUriFragment(uri)\n ? \"chapter-summary-range-object\"\n : \"chapter-summary-object\";\n case \"title\":\n return \"chapter-title-object\";\n }\n break;\n case \"lens\":\n case \"chapter-lens\":\n switch (chapterTarget.lens) {\n case \"chunk\":\n return \"chunk-scope\";\n case \"entity\":\n return \"entity-scope\";\n case \"source\":\n return \"chapter-source-object\";\n case \"summary\":\n return \"chapter-summary-object\";\n case \"triple\":\n return \"triple-scope\";\n }\n break;\n case \"triple-pattern-lens\":\n case \"chapter-triple-pattern-lens\":\n return \"triple-scope\";\n }\n }\n if (/^(?:chapter\\/[1-9][0-9]*\\/)?chunk$/u.test(path)) {\n return \"chunk-scope\";\n }\n if (/^(?:chapter\\/[1-9][0-9]*\\/)?chunk\\/.+$/u.test(path)) {\n return \"chunk-object\";\n }\n if (/^(?:chapter\\/[1-9][0-9]*\\/)?entity$/u.test(path)) {\n return \"entity-scope\";\n }\n if (/^(?:chapter\\/[1-9][0-9]*\\/)?entity\\/[^/]+\\/wikipage$/u.test(path)) {\n return \"entity-wikipage-object\";\n }\n if (/^(?:chapter\\/[1-9][0-9]*\\/)?entity\\/.+$/u.test(path)) {\n return \"entity-object\";\n }\n if (isTripleScopePath(path)) {\n return \"triple-scope\";\n }\n if (/^(?:chapter\\/[1-9][0-9]*\\/)?triple\\/[^/]+\\/[^/]+\\/[^/]+$/u.test(path)) {\n return \"triple-object\";\n }\n\n throw new Error(\n withHelpRoute(\n `Unknown Wiki Graph URI target: ${uri}. Use the archive root help or URI guide to choose a valid target.`,\n CLI_HELP_ROUTES.uri,\n ),\n );\n}\n\nfunction rejectPredicateLikeObjectSuffix(uri: string, path: string): void {\n const suggestion = getPredicateLikeObjectSuffixSuggestion(uri, path);\n if (suggestion === undefined) {\n return;\n }\n throw new Error(\n withHelpRoute(\n `Predicate-like URI suffixes are not object URIs: ${uri}. Use predicate form: ${suggestion}`,\n CLI_HELP_ROUTES.uri,\n ),\n );\n}\n\nfunction getPredicateLikeObjectSuffixSuggestion(\n uri: string,\n path: string,\n): string | undefined {\n const parts = path.split(\"/\");\n const suffix = parts.at(-1);\n if (suffix !== \"evidence\" && suffix !== \"related\" && suffix !== \"pack\") {\n return undefined;\n }\n const objectParts = stripOptionalChapterObjectPrefix(parts.slice(0, -1));\n if (objectParts[0] === \"entity\" && objectParts.length === 2) {\n return `${uri.slice(0, -suffix.length - 1)} ${suffix}`;\n }\n if (objectParts[0] === \"chunk\" && objectParts.length === 2) {\n return `${uri.slice(0, -suffix.length - 1)} ${suffix}`;\n }\n if (objectParts[0] === \"triple\" && objectParts.length === 4) {\n return `${uri.slice(0, -suffix.length - 1)} ${suffix}`;\n }\n return undefined;\n}\n\nfunction stripOptionalChapterObjectPrefix(\n parts: readonly string[],\n): readonly string[] {\n if (parts[0] === \"chapter\" && parts[1] !== undefined) {\n return parts.slice(2);\n }\n return parts;\n}\n\nfunction hasUriFragment(uri: string): boolean {\n return uri.includes(\"#\");\n}\n\nfunction parseArchiveUriTargetArguments(\n uri: string,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const parsed = parseLocatedWikiGraphUri(uri);\n const libraryArchiveObjectTarget = parseLibraryArchiveObjectTarget(uri);\n const archivePath =\n libraryArchiveObjectTarget === undefined\n ? parsed.archivePath\n : formatLibraryArchiveLocator(libraryArchiveObjectTarget);\n const objectUri = libraryArchiveObjectTarget?.objectUri ?? parsed.objectUri;\n const helpRoute = isImplicitArchiveReadAction(action)\n ? formatWikiGraphHelpCommand(uri)\n : formatWikiGraphHelpCommand(uri, action);\n\n if (archivePath === undefined) {\n throw new Error(formatMissingArchiveLocatorMessage(uri));\n }\n rejectUnsupportedArchiveReverse(action, values.reverse, helpRoute);\n\n if (objectUri === undefined) {\n return parseArchiveUriArchiveArguments(\n uri,\n archivePath,\n action,\n tail,\n values,\n helpRoute,\n );\n }\n\n const metadataTarget = parseMetadataTarget(objectUri);\n if (metadataTarget !== undefined) {\n return parseMetadataUriArguments(\n archivePath,\n metadataTarget,\n action,\n tail,\n values,\n helpRoute,\n );\n }\n\n if (containsMetadataKeySuffix(objectUri)) {\n throw new Error(\n withHelpRoute(\n \"Metadata keys are not addressed in the URI. Read `<object>/meta` and filter the output, or use `<object>/meta put <key> ...`.\",\n \"wg <object-uri>/meta --help\",\n ),\n );\n }\n\n if (objectUri === \"wikg://cover\") {\n return parseArchiveCoverUriArguments(\n uri,\n archivePath,\n action,\n tail,\n values,\n );\n }\n\n if (objectUri === \"wikg://index\") {\n return parseArchiveIndexUriArguments(archivePath, action, tail, values);\n }\n\n const chapterTarget = parseChapterTarget(objectUri);\n if (chapterTarget !== undefined) {\n return parseArchiveChapterUriArguments(\n uri,\n archivePath,\n chapterTarget,\n action,\n tail,\n values,\n );\n }\n\n const uriKind = classifyArchiveUri(objectUri);\n if (uriKind === \"object\" && (action === \"list\" || action === \"search\")) {\n throw new Error(\n withHelpRoute(\n `The object URI ${uri} does not support \\`${action}\\`. Use a scope URI directly, or add --query to a scope URI.`,\n CLI_HELP_ROUTES.uri,\n ),\n );\n }\n if (uriKind === \"scope\" && action === \"get\") {\n throw new Error(\n withHelpRoute(\n `The scope URI ${uri} cannot be read as one object. Use a concrete object URI.`,\n CLI_HELP_ROUTES.uri,\n ),\n );\n }\n\n if (!isUriFirstArchiveAction(action)) {\n const helpCommand = formatWikiGraphHelpCommand(uri);\n\n throw new Error(\n withHelpRoute(\n `The URI target ${uri} does not support \\`${action}\\`. Use \\`${helpCommand}\\` to inspect valid predicates.`,\n helpCommand,\n ),\n );\n }\n\n return parseArchiveArguments(action, [uri, ...tail], values, helpRoute);\n}\n\nfunction parseLibraryArchiveObjectTarget(\n uri: string,\n): ParsedWikiGraphLibraryUri | undefined {\n const target = parseWikiGraphLibraryUri(uri);\n\n if (target?.kind === \"archive\" && target.objectUri !== undefined) {\n return target;\n }\n\n return undefined;\n}\n\nfunction formatLibraryArchiveLocator(\n target: ParsedWikiGraphLibraryUri,\n): string {\n if (target.kind !== \"archive\" || target.archivePublicId === undefined) {\n throw new Error(\"Internal error: expected library archive object target.\");\n }\n\n return target.publicId === undefined\n ? `wikg://lib/arc/${target.archivePublicId}`\n : `wikg://lib/${target.publicId}/arc/${target.archivePublicId}`;\n}\n\nfunction rejectUnsupportedArchiveReverse(\n action: CLIArchiveUriAction,\n reverse: boolean | undefined,\n helpRoute: string,\n): void {\n if (reverse !== true) {\n return;\n }\n if (action === \"search\") {\n throw new Error(\n withHelpRoute(\"`--reverse` cannot be combined with --query.\", helpRoute),\n );\n }\n if (\n action === \"evidence\" ||\n action === \"get\" ||\n action === \"list\" ||\n action === \"related\"\n ) {\n return;\n }\n\n rejectArchiveBooleanFlag(action, \"--reverse\", reverse, helpRoute);\n}\n","import { CLI_HELP_ROUTES, withHelpRoute } from \"../../support/index.js\";\nimport {\n renderArchiveMaintenanceCommandHelpText,\n renderUriHelpText,\n} from \"../help.js\";\nimport { parseArchiveArguments } from \"../archive.js\";\nimport type {\n ArchiveArgumentValues,\n CLIArchiveUriAction,\n ParsedCLIArguments,\n} from \"../types.js\";\nimport {\n formatWikiGraphHelpCommand,\n isArchiveAction,\n isArchiveIndexAction,\n rejectArchiveBooleanFlag,\n rejectArchiveExtraPositionals,\n rejectArchiveFlag,\n rejectArchiveMaintenanceExtraPositionals,\n rejectArchiveNonReadFlags,\n rejectCommandMetaFlags,\n rejectCoverCommandBooleanFlag,\n rejectCoverCommandFlag,\n rejectCoverMetaFlags,\n rejectStreamingJSONFlag,\n} from \"../helpers.js\";\n\nexport function parseArchiveUriArchiveArguments(\n uri: string,\n archivePath: string,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n if (!isArchiveAction(action)) {\n throw new Error(\n withHelpRoute(\n `The archive URI form does not support \\`${action}\\`. Use \\`wg <archive-uri> --help\\` to inspect valid verbs.`,\n \"wg <archive-uri> --help\",\n ),\n );\n }\n\n if (action === \"get\") {\n return parseArchiveArguments(action, [uri, ...tail], values, helpRoute);\n }\n\n if (\n action !== \"create\" &&\n action !== \"export\" &&\n action !== \"inspect\" &&\n action !== \"list\" &&\n action !== \"search\"\n ) {\n throw new Error(\n withHelpRoute(\n `The archive URI ${uri} cannot be used with \\`${action}\\`; use a concrete object URI. Use \\`wg <archive-uri> --help\\` to inspect valid archive verbs.`,\n \"wg <archive-uri> --help\",\n ),\n );\n }\n\n return parseArchiveArguments(\n action,\n [action === \"create\" || action === \"export\" ? archivePath : uri, ...tail],\n values,\n helpRoute,\n );\n}\n\nexport function parseArchiveCoverUriArguments(\n uri: string,\n archivePath: string,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const helpRoute = formatWikiGraphHelpCommand(uri, action);\n\n if (values.help === true) {\n return {\n help: true,\n helpText: renderArchiveMaintenanceCommandHelpText(\"cover\"),\n kind: \"maintenance\",\n };\n }\n\n if (action !== \"get\") {\n throw new Error(\n withHelpRoute(\n `The cover object does not support \\`${action}\\`. Read the cover URI directly.`,\n \"wg <cover-uri> --help\",\n ),\n );\n }\n\n rejectArchiveMaintenanceExtraPositionals(\"cover\", tail, 0, helpRoute);\n rejectCoverCommandFlag(\"budget\", values.budget, helpRoute);\n rejectCoverCommandFlag(\"chapter\", values.chapter, helpRoute);\n rejectCoverCommandFlag(\"cursor\", values.cursor, helpRoute);\n rejectCoverCommandFlag(\"digest-dir\", values[\"digest-dir\"], helpRoute);\n rejectCoverCommandFlag(\"import\", values.import, helpRoute);\n rejectCoverCommandFlag(\"input\", values.input, helpRoute);\n rejectCoverCommandFlag(\"input-format\", values[\"input-format\"], helpRoute);\n rejectCoverCommandFlag(\"limit\", values.limit, helpRoute);\n rejectCoverCommandFlag(\"output\", values.output, helpRoute);\n rejectCoverCommandFlag(\"output-format\", values[\"output-format\"], helpRoute);\n rejectCoverCommandFlag(\"prompt\", values.prompt, helpRoute);\n rejectCoverCommandFlag(\"stage\", values.stage, helpRoute);\n rejectCoverCommandFlag(\"to\", values.to, helpRoute);\n rejectCoverCommandBooleanFlag(\"confirm\", values.confirm, helpRoute);\n rejectCoverCommandBooleanFlag(\"json\", values.json, helpRoute);\n rejectCoverMetaFlags(values);\n\n if (values.verbose === true) {\n throw new Error(\n withHelpRoute(\"The cover command does not support --verbose.\", helpRoute),\n );\n }\n\n return {\n args: {\n inputPath: archivePath,\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n },\n help: false,\n kind: \"cover\",\n };\n}\n\nexport function parseArchiveIndexUriArguments(\n archivePath: string,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const helpRoute = `wg wikg://<archive.wikg>/index ${action} --help`;\n\n if (values.help === true) {\n return {\n help: true,\n helpText: renderUriHelpText(\n \"index-object\",\n \"wikg://<archive.wikg>/index\",\n ),\n kind: \"help\",\n };\n }\n\n if (!isArchiveIndexAction(action)) {\n throw new Error(\n withHelpRoute(\n `The index cache does not support \\`${action}\\`. Read the index cache directly, or use sync or clean.`,\n CLI_HELP_ROUTES.uri,\n ),\n );\n }\n rejectArchiveExtraPositionals(action, tail, 0, helpRoute);\n rejectArchiveNonReadFlags(action, values, helpRoute);\n rejectArchiveFlag(action, \"--after\", values.after, helpRoute);\n rejectArchiveFlag(action, \"--budget\", values.budget, helpRoute);\n rejectArchiveFlag(action, \"--before\", values.before, helpRoute);\n rejectArchiveFlag(action, \"--chapter\", values.chapter, helpRoute);\n rejectArchiveFlag(action, \"--context\", values.context, helpRoute);\n rejectArchiveFlag(action, \"--cursor\", values.cursor, helpRoute);\n rejectArchiveFlag(action, \"--digest-dir\", values[\"digest-dir\"], helpRoute);\n rejectArchiveFlag(action, \"--evidence\", values.evidence, helpRoute);\n rejectArchiveFlag(action, \"--from\", values.from, helpRoute);\n rejectArchiveFlag(action, \"--json-input\", values[\"json-input\"], helpRoute);\n rejectArchiveFlag(action, \"--limit\", values.limit, helpRoute);\n rejectArchiveFlag(action, \"--parent\", values.parent, helpRoute);\n rejectArchiveFlag(action, \"--predicate\", values.predicate, helpRoute);\n rejectArchiveFlag(action, \"--role\", values.role, helpRoute);\n rejectArchiveFlag(action, \"--stage\", values.stage, helpRoute);\n rejectArchiveFlag(action, \"--task\", values.task, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveBooleanFlag(\n action,\n \"--accept-cost\",\n values[\"accept-cost\"],\n helpRoute,\n );\n rejectArchiveBooleanFlag(action, \"--active\", values.active, helpRoute);\n rejectArchiveBooleanFlag(action, \"--all\", values.all, helpRoute);\n rejectArchiveBooleanFlag(action, \"--backlinks\", values.backlinks, helpRoute);\n rejectArchiveBooleanFlag(action, \"--boost\", values.boost, helpRoute);\n rejectArchiveBooleanFlag(action, \"--clear\", values.clear, helpRoute);\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n rejectArchiveBooleanFlag(action, \"--dry-run\", values[\"dry-run\"], helpRoute);\n rejectArchiveBooleanFlag(action, \"--first\", values.first, helpRoute);\n if (action === \"sync\") {\n rejectStreamingJSONFlag(action, values.json, helpRoute);\n } else {\n rejectArchiveFlag(action, \"--indexes\", values.indexes, helpRoute);\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n rejectArchiveBooleanFlag(\n action,\n \"--skip-unindexed\",\n values[\"skip-unindexed\"],\n helpRoute,\n );\n }\n rejectArchiveBooleanFlag(action, \"--last\", values.last, helpRoute);\n rejectArchiveBooleanFlag(action, \"--reverse\", values.reverse, helpRoute);\n rejectArchiveBooleanFlag(action, \"--root\", values.root, helpRoute);\n rejectArchiveBooleanFlag(action, \"--verbose\", values.verbose, helpRoute);\n rejectCommandMetaFlags(values, action, helpRoute);\n\n return {\n args: {\n action,\n archivePath,\n ...(values.json === undefined ? {} : { json: values.json }),\n ...(values.jsonl === undefined ? {} : { jsonl: values.jsonl }),\n ...(values[\"skip-unindexed\"] === true ? { skipUnindexed: true } : {}),\n },\n help: false,\n kind: \"archive-index\",\n };\n}\n","import { withHelpRoute } from \"../../support/index.js\";\nimport type {\n ArchiveArgumentValues,\n CLIArchiveUriAction,\n CLIMetadataAction,\n ParsedCLIArguments,\n} from \"../types.js\";\nimport {\n rejectArchiveChapterMetaFlags,\n rejectArchiveMaintenanceExtraPositionals,\n rejectMetaCommandBooleanFlag,\n rejectMetaCommandFlag,\n stripObjectUriPrefix,\n} from \"../helpers.js\";\nimport { isMetadataAction } from \"../helpers.js\";\n\nexport function parseMetadataUriArguments(\n archivePath: string,\n objectPath: string,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n if (!isMetadataAction(action)) {\n throw new Error(\n withHelpRoute(\n `The metadata object does not support \\`${action}\\`. Read it directly, or use set, put, delete, or clear.`,\n \"wg <object-uri>/meta --help\",\n ),\n );\n }\n rejectMetadataFlags(action, values, helpRoute);\n\n switch (action) {\n case \"get\":\n case \"clear\":\n rejectArchiveMaintenanceExtraPositionals(\"meta\", tail, 0, helpRoute);\n break;\n case \"delete\":\n rejectArchiveMaintenanceExtraPositionals(\"meta\", tail, 1, helpRoute);\n if (tail[0] === undefined) {\n throw new Error(withHelpRoute(\"Missing metadata key.\", helpRoute));\n }\n break;\n case \"put\":\n rejectArchiveMaintenanceExtraPositionals(\"meta\", tail, 2, helpRoute);\n if (tail[0] === undefined) {\n throw new Error(withHelpRoute(\"Missing metadata key.\", helpRoute));\n }\n break;\n case \"set\":\n rejectArchiveMaintenanceExtraPositionals(\"meta\", tail, 1, helpRoute);\n break;\n }\n\n return {\n args: {\n action,\n archivePath,\n ...(values.input === undefined ? {} : { inputPath: values.input }),\n ...(action !== \"set\" && action !== \"put\"\n ? {}\n : tail[action === \"put\" ? 1 : 0] === undefined\n ? {}\n : { inputValue: tail[action === \"put\" ? 1 : 0] }),\n ...(values.json === undefined ? {} : { json: values.json }),\n ...(values[\"json-input\"] === undefined\n ? {}\n : { jsonInputValue: values[\"json-input\"] }),\n ...(tail[0] === undefined || (action !== \"put\" && action !== \"delete\")\n ? {}\n : { key: tail[0] }),\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n objectPath,\n },\n help: false,\n kind: \"object-metadata\",\n };\n}\n\nfunction rejectMetadataFlags(\n action: CLIMetadataAction,\n values: ArchiveArgumentValues,\n helpRoute: string,\n): void {\n rejectMetaCommandFlag(\"budget\", values.budget, helpRoute);\n rejectMetaCommandFlag(\"chapter\", values.chapter, helpRoute);\n rejectMetaCommandFlag(\"cursor\", values.cursor, helpRoute);\n rejectMetaCommandFlag(\"digest-dir\", values[\"digest-dir\"], helpRoute);\n rejectMetaCommandFlag(\"import\", values.import, helpRoute);\n rejectMetaCommandFlag(\"input-format\", values[\"input-format\"], helpRoute);\n rejectMetaCommandFlag(\"limit\", values.limit, helpRoute);\n rejectMetaCommandFlag(\"output\", values.output, helpRoute);\n rejectMetaCommandFlag(\"output-format\", values[\"output-format\"], helpRoute);\n rejectMetaCommandFlag(\"prompt\", values.prompt, helpRoute);\n rejectMetaCommandFlag(\"stage\", values.stage, helpRoute);\n rejectMetaCommandFlag(\"to\", values.to, helpRoute);\n rejectMetaCommandBooleanFlag(\"confirm\", values.confirm, helpRoute);\n rejectMetaCommandBooleanFlag(\"jsonl\", values.jsonl, helpRoute);\n rejectArchiveChapterMetaFlags(values, helpRoute);\n if (values.verbose === true) {\n throw new Error(\n withHelpRoute(\n \"The metadata command does not support --verbose.\",\n helpRoute,\n ),\n );\n }\n if (action === \"get\") {\n rejectMetaCommandFlag(\"input\", values.input, helpRoute);\n rejectMetaCommandFlag(\"json-input\", values[\"json-input\"], helpRoute);\n return;\n }\n if (action === \"clear\" || action === \"delete\") {\n rejectMetaCommandFlag(\"input\", values.input, helpRoute);\n rejectMetaCommandFlag(\"json-input\", values[\"json-input\"], helpRoute);\n }\n}\n\nexport function parseMetadataTarget(objectUri: string): string | undefined {\n const path = stripObjectUriPrefix(objectUri);\n\n if (path === \"meta\") {\n return \"\";\n }\n if (!path.endsWith(\"/meta\")) {\n return undefined;\n }\n\n return path.slice(0, -\"/meta\".length);\n}\n\nexport function containsMetadataKeySuffix(objectUri: string): boolean {\n return /(?:^|\\/)meta\\/.+/u.test(stripObjectUriPrefix(objectUri));\n}\n","import { renderGcCommandHelpText } from \"../help.js\";\nimport { withHelpRoute } from \"../../support/index.js\";\nimport type {\n ArchiveArgumentValues,\n ArchiveMetaFlagValues,\n ParsedCLIArguments,\n} from \"../types.js\";\nimport { rejectGcFlag, rejectGcMetaFlags } from \"../helpers.js\";\n\nexport function parseGcArguments(\n positionals: readonly string[],\n values: ArchiveArgumentValues & ArchiveMetaFlagValues,\n): ParsedCLIArguments {\n const helpRoute = \"wg gc --help\";\n\n if (values.help === true) {\n return {\n help: true,\n helpText: renderGcCommandHelpText(),\n kind: \"help\",\n };\n }\n\n rejectGcFlag(\"digest-dir\", values[\"digest-dir\"], helpRoute);\n rejectGcFlag(\"import\", values.import, helpRoute);\n rejectGcFlag(\"input\", values.input, helpRoute);\n rejectGcFlag(\"input-format\", values[\"input-format\"], helpRoute);\n rejectGcFlag(\"jsonl\", values.jsonl, helpRoute);\n rejectGcFlag(\"limit\", values.limit, helpRoute);\n rejectGcFlag(\"llm\", values.llm, helpRoute);\n rejectGcFlag(\"output\", values.output, helpRoute);\n rejectGcFlag(\"output-format\", values[\"output-format\"], helpRoute);\n rejectGcFlag(\"prompt\", values.prompt, helpRoute);\n rejectGcFlag(\"stage\", values.stage, helpRoute);\n rejectGcMetaFlags(values);\n\n if (values.verbose === true) {\n throw new Error(\n withHelpRoute(\"The `gc` command does not support --verbose.\", helpRoute),\n );\n }\n if (positionals.length > 0) {\n throw new Error(\n withHelpRoute(\n `Unexpected positional arguments for \\`gc\\`: ${positionals.join(\" \")}.`,\n helpRoute,\n ),\n );\n }\n\n return {\n args: {\n ...(values[\"dry-run\"] === undefined ? {} : { dryRun: values[\"dry-run\"] }),\n ...(values.force === undefined ? {} : { force: values.force }),\n ...(values.json === undefined ? {} : { json: values.json }),\n },\n help: false,\n kind: \"gc\",\n };\n}\n","import {\n parseHelpTopic,\n renderArchiveCommandHelpText,\n renderHelpTopicText,\n renderMainHelpText,\n} from \"../help.js\";\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../../support/index.js\";\nimport type { ParsedCLIArguments } from \"../types.js\";\nimport {\n isPublicArchiveCommandHelpAction,\n rejectHelpFlag,\n rejectHelpMetaFlags,\n} from \"../helpers.js\";\n\nexport function parseHelpArguments(\n positionals: readonly string[],\n values: {\n readonly author?: readonly string[];\n readonly \"clear-authors\"?: boolean;\n readonly \"clear-description\"?: boolean;\n readonly \"clear-identifier\"?: boolean;\n readonly \"clear-language\"?: boolean;\n readonly \"clear-published-at\"?: boolean;\n readonly \"clear-publisher\"?: boolean;\n readonly \"clear-title\"?: boolean;\n readonly description?: string;\n readonly \"digest-dir\"?: string;\n readonly help?: boolean;\n readonly import?: string;\n readonly identifier?: string;\n readonly input?: string;\n readonly \"input-format\"?: string;\n readonly json?: boolean;\n readonly language?: string;\n readonly limit?: string;\n readonly llm?: string;\n readonly output?: string;\n readonly \"output-format\"?: string;\n readonly \"published-at\"?: string;\n readonly publisher?: string;\n readonly prompt?: string;\n readonly stage?: string;\n readonly verbose?: boolean;\n },\n): ParsedCLIArguments {\n rejectHelpFlag(\"digest-dir\", values[\"digest-dir\"]);\n rejectHelpFlag(\"import\", values.import);\n rejectHelpFlag(\"input\", values.input);\n rejectHelpFlag(\"input-format\", values[\"input-format\"]);\n rejectHelpFlag(\"json\", values.json);\n rejectHelpFlag(\"limit\", values.limit);\n rejectHelpFlag(\"llm\", values.llm);\n rejectHelpFlag(\"output\", values.output);\n rejectHelpFlag(\"output-format\", values[\"output-format\"]);\n rejectHelpFlag(\"prompt\", values.prompt);\n rejectHelpFlag(\"stage\", values.stage);\n rejectHelpMetaFlags(values);\n\n if (values.verbose) {\n throw new Error(\n withHelpRoute(\n \"The `help` command does not support --verbose.\",\n CLI_HELP_ROUTES.root,\n ),\n );\n }\n\n if (positionals.length > 1) {\n throw new Error(\n withHelpRoute(\n `Unexpected positional arguments: ${positionals.slice(1).join(\" \")}.`,\n CLI_HELP_ROUTES.root,\n ),\n );\n }\n\n if (positionals[0] === undefined) {\n return {\n help: true,\n helpText: renderMainHelpText(),\n kind: \"help\",\n };\n }\n\n if (isPublicArchiveCommandHelpAction(positionals[0])) {\n return {\n help: true,\n helpText: renderArchiveCommandHelpText(positionals[0]),\n kind: \"help\",\n };\n }\n\n return {\n help: true,\n helpText: renderHelpTopicText(parseHelpTopic(positionals[0])),\n kind: \"help\",\n };\n}\n","import { renderLegacyCommandHelpText } from \"../help.js\";\nimport { withHelpRoute } from \"../../support/index.js\";\nimport type { ArchiveArgumentValues, ParsedCLIArguments } from \"../types.js\";\n\nexport function parseLegacyArguments(\n positionals: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const action = positionals[0];\n\n if (values.help === true && action === undefined) {\n return {\n help: true,\n helpText: renderLegacyCommandHelpText(),\n kind: \"help\",\n };\n }\n if (action === \"migrate\") {\n if (values.help === true) {\n return {\n help: true,\n helpText: renderLegacyCommandHelpText(\"migrate\"),\n kind: \"help\",\n };\n }\n\n rejectLegacyFlag(\"--input\", values.input);\n rejectLegacyFlag(\"--import\", values.import);\n rejectLegacyFlag(\"--input-format\", values[\"input-format\"]);\n rejectLegacyFlag(\"--output-format\", values[\"output-format\"]);\n rejectLegacyFlag(\"--llm\", values.llm);\n rejectLegacyFlag(\"--prompt\", values.prompt);\n rejectLegacyBooleanFlag(\"--json\", values.json);\n rejectLegacyBooleanFlag(\"--jsonl\", values.jsonl);\n rejectLegacyBooleanFlag(\"--verbose\", values.verbose);\n\n const inputPath = positionals[1];\n\n if (inputPath === undefined) {\n throw new Error(\n withHelpRoute(\"Missing legacy input path.\", \"wg legacy migrate --help\"),\n );\n }\n if (positionals.length > 2) {\n throw new Error(\n withHelpRoute(\n `Unexpected positional arguments: ${positionals.slice(2).join(\" \")}.`,\n \"wg legacy migrate --help\",\n ),\n );\n }\n\n return {\n args: {\n action,\n inputPath,\n ...(values.output === undefined ? {} : { outputPath: values.output }),\n },\n help: false,\n kind: \"legacy\",\n };\n }\n\n throw new Error(\n withHelpRoute(\n action === undefined\n ? \"Missing legacy command.\"\n : `Invalid legacy command: ${action}.`,\n \"wg legacy --help\",\n ),\n );\n}\n\nfunction rejectLegacyFlag(flag: string, value: unknown): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `\\`wg legacy migrate\\` does not support ${flag}.`,\n \"wg legacy migrate --help\",\n ),\n );\n }\n}\n\nfunction rejectLegacyBooleanFlag(\n flag: string,\n value: boolean | undefined,\n): void {\n if (value === true) {\n rejectLegacyFlag(flag, value);\n }\n}\n","import {\n isUriHelpPredicate,\n renderUriHelpText,\n renderUriPredicateHelpText,\n} from \"../help.js\";\nimport type { LocalConfigSection } from \"../../runtime/local-config.js\";\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../../support/index.js\";\nimport type {\n ArchiveArgumentValues,\n CLILocalConfigAction,\n ParsedCLIArguments,\n} from \"../types.js\";\nimport {\n formatRemovedImplicitVerbMessage,\n formatWikiGraphHelpCommand,\n isRemovedImplicitArchiveAction,\n parseLocalConfigUriSection,\n rejectArchiveExtraPositionals,\n rejectCommandMetaFlags,\n rejectMetaCommandBooleanFlag,\n rejectMetaCommandFlag,\n} from \"../helpers.js\";\n\nexport function parseLocalConfigUriFirstArguments(\n positionals: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const uri = positionals[0];\n\n if (uri === undefined) {\n throw new Error(\"Internal error: missing local config URI.\");\n }\n\n const section = parseLocalConfigUriSection(uri);\n const explicitAction = positionals[1];\n\n if (isRemovedImplicitArchiveAction(explicitAction)) {\n throw new Error(formatRemovedImplicitVerbMessage(explicitAction));\n }\n\n const action = explicitAction ?? \"get\";\n const helpRoute =\n explicitAction === undefined\n ? formatWikiGraphHelpCommand(uri)\n : formatWikiGraphHelpCommand(uri, action);\n\n if (section === undefined) {\n if (\n values.help === true &&\n explicitAction === undefined &&\n parseLocalConfigUriSection(uri) === undefined\n ) {\n return {\n help: true,\n helpText: renderUriHelpText(\"local-config-namespace\", uri),\n kind: \"help\",\n };\n }\n throw new Error(\n withHelpRoute(\n \"Expected a local config section URI such as wikg://local/config/llm.\",\n CLI_HELP_ROUTES.config,\n ),\n );\n }\n if (values.help === true && explicitAction === undefined) {\n return {\n help: true,\n helpText: renderUriHelpText(\"local-config-section\", uri),\n kind: \"help\",\n };\n }\n if (values.help === true && explicitAction !== undefined) {\n if (!isUriHelpPredicate(\"local-config-section\", action)) {\n throw new Error(\n withHelpRoute(\n `The URI target ${uri} does not support \\`${action}\\`.`,\n formatWikiGraphHelpCommand(uri),\n ),\n );\n }\n return {\n help: true,\n helpText: renderUriPredicateHelpText(\"local-config-section\", action, uri),\n kind: \"help\",\n };\n }\n if (!isLocalConfigAction(action)) {\n throw new Error(\n withHelpRoute(\n `The local config URI form does not support \\`${action}\\`. Pass the URI directly to read it, or use set, put, delete, clear, or test.`,\n helpRoute,\n ),\n );\n }\n\n return parseLocalConfigArguments(\n section,\n action,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n helpRoute,\n );\n}\n\nfunction parseLocalConfigArguments(\n section: LocalConfigSection,\n action: CLILocalConfigAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n rejectLocalConfigFlags(action, values, helpRoute);\n\n switch (action) {\n case \"get\":\n case \"clear\":\n case \"test\":\n rejectArchiveExtraPositionals(action, tail, 0, helpRoute);\n break;\n case \"delete\":\n rejectArchiveExtraPositionals(action, tail, 1, helpRoute);\n if (tail[0] === undefined) {\n throw new Error(withHelpRoute(\"Missing config key.\", helpRoute));\n }\n break;\n case \"put\":\n rejectArchiveExtraPositionals(\n action,\n tail,\n values.secret === true ? 1 : 2,\n helpRoute,\n );\n if (tail[0] === undefined) {\n throw new Error(withHelpRoute(\"Missing config key.\", helpRoute));\n }\n if (\n values.secret !== true &&\n tail[1] === undefined &&\n values[\"json-input\"] === undefined\n ) {\n throw new Error(withHelpRoute(\"Missing config value.\", helpRoute));\n }\n break;\n case \"set\":\n rejectArchiveExtraPositionals(action, tail, 1, helpRoute);\n break;\n }\n\n return {\n args: {\n action,\n ...(tail[0] === undefined || (action !== \"put\" && action !== \"delete\")\n ? {}\n : { key: tail[0] }),\n ...(values.json === undefined ? {} : { json: values.json }),\n ...(values[\"json-input\"] === undefined\n ? {}\n : { jsonInputValue: values[\"json-input\"] }),\n ...(action !== \"set\" && action !== \"put\"\n ? {}\n : tail[action === \"put\" ? 1 : 0] === undefined\n ? {}\n : { inputValue: tail[action === \"put\" ? 1 : 0] }),\n section,\n ...(values.secret === undefined ? {} : { secret: values.secret }),\n },\n help: false,\n kind: \"local-config\",\n };\n}\n\nfunction rejectLocalConfigFlags(\n action: CLILocalConfigAction,\n values: ArchiveArgumentValues,\n helpRoute: string,\n): void {\n rejectMetaCommandFlag(\"input\", values.input, helpRoute);\n rejectMetaCommandFlag(\"llm\", values.llm, helpRoute);\n rejectMetaCommandFlag(\"output\", values.output, helpRoute);\n rejectMetaCommandFlag(\"prompt\", values.prompt, helpRoute);\n rejectMetaCommandFlag(\"task\", values.task, helpRoute);\n rejectMetaCommandBooleanFlag(\"jsonl\", values.jsonl, helpRoute);\n rejectMetaCommandBooleanFlag(\"verbose\", values.verbose, helpRoute);\n rejectCommandMetaFlags(values, action, helpRoute);\n\n if (values.secret === true && action !== \"put\") {\n throw new Error(\n withHelpRoute(\"`--secret` is only valid for config put.\", helpRoute),\n );\n }\n if (action === \"get\" || action === \"test\") {\n return;\n }\n if (values.json === true && action !== \"set\" && action !== \"put\") {\n throw new Error(\n withHelpRoute(`\\`${action}\\` does not support --json.`, helpRoute),\n );\n }\n}\n\nfunction isLocalConfigAction(\n value: string | undefined,\n): value is CLILocalConfigAction {\n return (\n value === \"clear\" ||\n value === \"delete\" ||\n value === \"get\" ||\n value === \"put\" ||\n value === \"set\" ||\n value === \"test\"\n );\n}\n","import { renderMaintenanceCommandHelpText } from \"../help.js\";\nimport { withHelpRoute } from \"../../support/index.js\";\nimport type { ArchiveArgumentValues, ParsedCLIArguments } from \"../types.js\";\n\nexport function parseMaintenanceArguments(\n positionals: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const action = positionals[0];\n\n if (values.help === true && action === undefined) {\n return {\n help: true,\n helpText: renderMaintenanceCommandHelpText(),\n kind: \"help\",\n };\n }\n\n if (action !== \"upgrade\") {\n throw new Error(\n withHelpRoute(\n action === undefined\n ? \"Missing maintenance command.\"\n : `Invalid maintenance command: ${action}.`,\n \"wg maintenance --help\",\n ),\n );\n }\n\n if (values.help === true) {\n return {\n help: true,\n helpText: renderMaintenanceCommandHelpText(\"upgrade\"),\n kind: \"help\",\n };\n }\n\n rejectMaintenanceFlag(\"--input\", values.input);\n rejectMaintenanceFlag(\"--import\", values.import);\n rejectMaintenanceFlag(\"--input-format\", values[\"input-format\"]);\n rejectMaintenanceFlag(\"--output-format\", values[\"output-format\"]);\n rejectMaintenanceFlag(\"--llm\", values.llm);\n rejectMaintenanceFlag(\"--prompt\", values.prompt);\n rejectMaintenanceBooleanFlag(\"--jsonl\", values.jsonl);\n rejectMaintenanceBooleanFlag(\"--verbose\", values.verbose);\n\n const target = positionals[1];\n if (target === undefined) {\n throw new Error(\n withHelpRoute(\n \"Missing maintenance upgrade target.\",\n \"wg maintenance upgrade --help\",\n ),\n );\n }\n if (positionals.length > 2) {\n throw new Error(\n withHelpRoute(\n `Unexpected positional arguments: ${positionals.slice(2).join(\" \")}.`,\n \"wg maintenance upgrade --help\",\n ),\n );\n }\n\n return {\n args: {\n action,\n ...(values.json === undefined ? {} : { json: values.json }),\n ...(values.output === undefined ? {} : { outputPath: values.output }),\n target,\n },\n help: false,\n kind: \"maintenance-command\",\n };\n}\n\nfunction rejectMaintenanceFlag(flag: string, value: unknown): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `\\`wg maintenance upgrade\\` does not support ${flag}.`,\n \"wg maintenance upgrade --help\",\n ),\n );\n }\n}\n\nfunction rejectMaintenanceBooleanFlag(\n flag: string,\n value: boolean | undefined,\n): void {\n if (value === true) {\n rejectMaintenanceFlag(flag, value);\n }\n}\n","import {\n renderArchiveMaintenanceChapterActionHelpText,\n renderArchiveMaintenanceCommandHelpText,\n} from \"../help.js\";\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../../support/index.js\";\nimport type {\n ArchiveArgumentValues,\n CLIArchiveMaintenanceCommand,\n ParsedCLIArguments,\n} from \"../types.js\";\nimport { isArchiveChapterAction } from \"../helpers.js\";\n\nexport function parseArchiveMaintenanceArguments(\n command: CLIArchiveMaintenanceCommand,\n positionals: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n if (values.help !== true) {\n throw new Error(\n withHelpRoute(`Unknown command: ${command}.`, CLI_HELP_ROUTES.command),\n );\n }\n\n switch (command) {\n case \"cover\":\n case \"meta\":\n if (positionals.length > 0) {\n throw new Error(\n withHelpRoute(\n `Unexpected positional arguments: ${positionals.join(\" \")}.`,\n CLI_HELP_ROUTES.command,\n ),\n );\n }\n return {\n help: true,\n helpText: renderArchiveMaintenanceCommandHelpText(command),\n kind: \"maintenance\",\n };\n case \"chapter\": {\n const action = positionals[0];\n if (action === undefined) {\n return {\n help: true,\n helpText: renderArchiveMaintenanceCommandHelpText(\"chapter\"),\n kind: \"chapter\",\n };\n }\n if (!isArchiveChapterAction(action)) {\n throw new Error(\n withHelpRoute(\n `Invalid chapter action: ${action}. Use the chapter collection URI directly, add --query, or use add, move, remove, reset, or tree. Use concrete chapter resource URIs such as /source, /summary, or /title for set operations.`,\n CLI_HELP_ROUTES.command,\n ),\n );\n }\n if (\n action === \"set-source\" ||\n action === \"set-summary\" ||\n action === \"set-title\"\n ) {\n throw new Error(\n withHelpRoute(\n `Invalid chapter action: ${action}. Use concrete chapter resource URIs such as /source, /summary, or /title for set operations.`,\n CLI_HELP_ROUTES.command,\n ),\n );\n }\n if (positionals.length > 1) {\n throw new Error(\n withHelpRoute(\n `Unexpected positional arguments: ${positionals.slice(1).join(\" \")}.`,\n CLI_HELP_ROUTES.command,\n ),\n );\n }\n return {\n help: true,\n helpText: renderArchiveMaintenanceChapterActionHelpText(action),\n kind: \"chapter\",\n };\n }\n }\n}\n","import { parseCLIFormat, withHelpRoute } from \"../../support/index.js\";\nimport { renderTransformHelpText } from \"../help.js\";\nimport type {\n ArchiveArgumentValues,\n CLIArguments,\n ParsedCLIArguments,\n} from \"../types.js\";\nimport {\n parseChapterStage,\n rejectTransformFlag,\n rejectTransformMetaFlags,\n} from \"../helpers.js\";\n\nexport function parseTransformArguments(\n positionals: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const helpRoute = \"wg transform --help\";\n\n if (positionals.length > 0) {\n throw new Error(\n withHelpRoute(\n `Unexpected positional arguments: ${positionals.join(\" \")}.`,\n helpRoute,\n ),\n );\n }\n rejectTransformMetaFlags(values);\n rejectTransformFlag(\"budget\", values.budget, helpRoute);\n rejectTransformFlag(\"chapter\", values.chapter, helpRoute);\n rejectTransformFlag(\"confirm\", values.confirm, helpRoute);\n rejectTransformFlag(\"cursor\", values.cursor, helpRoute);\n rejectTransformFlag(\"evidence\", values.evidence, helpRoute);\n rejectTransformFlag(\"json\", values.json, helpRoute);\n rejectTransformFlag(\"import\", values.import, helpRoute);\n rejectTransformFlag(\"limit\", values.limit, helpRoute);\n rejectTransformFlag(\"parent\", values.parent, helpRoute);\n rejectTransformFlag(\"to\", values.to, helpRoute);\n\n const args = {\n ...(values[\"digest-dir\"] === undefined\n ? {}\n : { digestDirPath: values[\"digest-dir\"] }),\n help: values.help ?? false,\n ...(values.input === undefined ? {} : { inputPath: values.input }),\n ...(values[\"input-format\"] === undefined\n ? {}\n : {\n inputFormat: parseCLIFormat(values[\"input-format\"], \"--input-format\"),\n }),\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n ...(values.output === undefined ? {} : { outputPath: values.output }),\n ...(values[\"output-format\"] === undefined\n ? {}\n : {\n outputFormat: parseCLIFormat(\n values[\"output-format\"],\n \"--output-format\",\n ),\n }),\n ...(values.prompt === undefined ? {} : { prompt: values.prompt }),\n ...(values.stage === undefined\n ? {}\n : {\n targetStage: parseChapterStage(values.stage, \"--stage\", helpRoute),\n }),\n verbose: values.verbose ?? false,\n } satisfies CLIArguments;\n\n if (values.help ?? false) {\n return {\n args,\n help: true,\n helpText: renderTransformHelpText(),\n kind: \"convert\",\n };\n }\n\n return {\n args,\n help: false,\n kind: \"convert\",\n };\n}\n","import {\n parseWikiGraphLibraryUri,\n type ArchiveTriplePattern,\n type ParsedWikiGraphLibraryUri,\n} from \"wiki-graph-core\";\n\nimport { withHelpRoute } from \"../../support/index.js\";\nimport {\n renderLibraryPredicateHelpText,\n renderLibraryUriHelpText,\n renderUriHelpText,\n renderUriPredicateHelpText,\n isUriHelpPredicate,\n type LibraryHelpPredicateName,\n type UriHelpTargetName,\n} from \"../help.js\";\nimport type {\n ArchiveArgumentValues,\n CLILibraryAction,\n CLIObjectKind,\n ParsedCLIArguments,\n} from \"../types.js\";\nimport {\n formatWikiGraphHelpCommand,\n rejectArchiveBooleanFlag,\n rejectArchiveFlag,\n stripObjectUriPrefix,\n} from \"../helpers.js\";\nimport { parseNonNegativeIntegerFlag } from \"../helper/parse.js\";\nimport { parseArchiveArguments } from \"../archive.js\";\nimport { parseChapterTarget } from \"./chapter/target.js\";\nimport { isTripleScopePath } from \"./triple-pattern.js\";\n\nconst LIBRARY_ARCHIVE_ACTIONS = new Set([\"get\", \"remove\"]);\nconst LIBRARY_ARCHIVE_COLLECTION_ACTIONS = new Set([\"add\", \"get\", \"scan\"]);\nconst LIBRARY_ARCHIVE_PATH_ACTIONS = new Set([\"get\", \"set\"]);\nconst LIBRARY_ARCHIVE_TREE_ACTIONS = new Set([\"archive-tree\"]);\nconst LIBRARY_METADATA_ACTIONS = new Set([\n \"clear\",\n \"delete\",\n \"get\",\n \"put\",\n \"set\",\n]);\nconst LIBRARY_PATH_ACTIONS = new Set([\"get\", \"set\"]);\nconst LIBRARY_REGISTRY_ACTIONS = new Set([\"add\", \"list\"]);\nconst LIBRARY_SCOPE_ACTIONS = new Set([\"get\", \"remove\"]);\nconst LIBRARY_INDEX_ACTIONS = new Set([\"clean\", \"get\", \"sync\"]);\nconst LIBRARY_QUERY_ACTIONS = new Set([\n \"evidence\",\n \"get\",\n \"list\",\n \"pack\",\n \"related\",\n \"search\",\n]);\n\nexport function parseLibraryUriFirstArguments(\n positionals: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const uri = positionals[0];\n const explicitAction = positionals[1];\n\n if (uri === undefined) {\n throw new Error(\"Internal error: missing library URI.\");\n }\n\n const target = parseWikiGraphLibraryUri(uri);\n if (target === undefined) {\n throw new Error(`Expected a Wiki Graph library URI: ${uri}`);\n }\n\n const action =\n explicitAction ??\n (target.kind === \"scope\" &&\n ((target.objectUri !== undefined && target.objectUri !== \"wikg://index\") ||\n values.query !== undefined ||\n values.limit !== undefined ||\n values.cursor !== undefined)\n ? resolveImplicitLibraryQueryAction(target.objectUri, values.query)\n : target.kind === \"scope\" ||\n target.kind === \"archive-collection\" ||\n target.kind === \"metadata\" ||\n target.kind === \"path\" ||\n target.kind === \"archive\" ||\n target.kind === \"archive-path\" ||\n target.objectUri === \"wikg://index\"\n ? \"get\"\n : target.kind === \"archive-tree\"\n ? \"archive-tree\"\n : \"list\");\n\n if (action === \"inspect\" && target.kind !== \"archive\") {\n throw new Error(\n withHelpRoute(\n \"Library-level inspection is not supported. Inspect one managed archive with `wg wikg://lib/arc/<archive-id> inspect`.\",\n formatWikiGraphHelpCommand(uri),\n ),\n );\n }\n\n if (values.help === true) {\n return parseLibraryHelpArguments(uri, target, action, explicitAction);\n }\n\n if (target.kind === \"archive\" && action === \"inspect\") {\n return parseLibraryArchiveInspectArguments(\n uri,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n );\n }\n\n if (\n target.kind === \"archive\" &&\n target.objectUri === undefined &&\n (action === \"search\" || values.query !== undefined)\n ) {\n return parseLibraryArchiveRootQueryArguments(\n uri,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n );\n }\n\n if (target.kind === \"registry\") {\n return parseLibraryRegistryArguments(\n uri,\n target,\n action,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n );\n }\n\n if (target.kind === \"path\" || target.kind === \"archive-path\") {\n return parseLibraryPathArguments(\n uri,\n target,\n action,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n );\n }\n\n if (target.kind === \"archive-tree\") {\n return parseLibraryArchiveTreeArguments(\n uri,\n target,\n action,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n );\n }\n\n if (target.kind === \"archive-collection\") {\n return parseLibraryArchiveCollectionArguments(\n uri,\n target,\n action,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n );\n }\n\n if (target.kind === \"scope\" && target.objectUri === \"wikg://index\") {\n return parseLibraryIndexArguments(\n uri,\n target,\n action,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n );\n }\n\n if (\n target.kind === \"scope\" &&\n (target.objectUri !== undefined ||\n action === \"related\" ||\n action === \"evidence\" ||\n action === \"pack\" ||\n action === \"search\" ||\n (action === \"list\" && explicitAction === undefined))\n ) {\n return parseLibraryQueryArguments(\n uri,\n target,\n action,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n );\n }\n\n if (!isLibraryAction(action)) {\n throw new Error(\n withHelpRoute(\n `The library URI target ${uri} does not support \\`${action}\\`.`,\n formatWikiGraphHelpCommand(uri),\n ),\n );\n }\n validateLibraryActionForTarget(uri, target, action);\n\n if (target.kind === \"archive\") {\n return parseLibraryArchiveArguments(\n uri,\n target,\n action,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n );\n }\n\n if (target.kind === \"metadata\") {\n return parseLibraryMetadataArguments(\n uri,\n target,\n action,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n );\n }\n\n return parseLibraryScopeArguments(\n uri,\n target,\n action,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n );\n}\n\nfunction parseLibraryHelpArguments(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n action: string,\n explicitAction: string | undefined,\n): ParsedCLIArguments {\n if (target.kind === \"archive\" && action === \"inspect\") {\n return {\n help: true,\n helpText: renderUriPredicateHelpText(\"archive-scope\", \"inspect\", uri),\n kind: \"help\",\n };\n }\n\n if (\n target.kind === \"scope\" &&\n target.objectUri === undefined &&\n action === \"search\" &&\n explicitAction === undefined\n ) {\n return {\n help: true,\n helpText: renderLibraryUriHelpText(uri, target),\n kind: \"help\",\n };\n }\n\n if (\n target.kind === \"registry\" ||\n target.kind === \"path\" ||\n target.kind === \"archive-collection\" ||\n target.kind === \"archive-tree\" ||\n target.kind === \"archive-path\"\n ) {\n if (explicitAction !== undefined && !isLibraryAction(action)) {\n throw new Error(\n withHelpRoute(\n `The library URI target ${uri} does not support \\`${action}\\`.`,\n formatWikiGraphHelpCommand(uri),\n ),\n );\n }\n if (isLibraryAction(action)) {\n validateLibraryActionForTarget(uri, target, action);\n }\n return {\n help: true,\n helpText:\n explicitAction === undefined\n ? renderLibraryUriHelpText(uri, target)\n : renderLibraryPredicateHelpText(\n uri,\n target,\n action as LibraryHelpPredicateName,\n ),\n kind: \"help\",\n };\n }\n\n if (target.kind === \"scope\" && target.objectUri === \"wikg://index\") {\n if (explicitAction === undefined) {\n return {\n help: true,\n helpText: renderLibraryUriHelpText(uri, target),\n kind: \"help\",\n };\n }\n if (!LIBRARY_INDEX_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The library index ${uri} does not support \\`${action}\\`.`,\n formatWikiGraphHelpCommand(uri),\n ),\n );\n }\n return {\n help: true,\n helpText: renderLibraryPredicateHelpText(\n uri,\n target,\n action as LibraryHelpPredicateName,\n ),\n kind: \"help\",\n };\n }\n\n if (target.kind === \"scope\" && target.objectUri !== undefined) {\n const helpTarget = classifyLibraryObjectHelpTarget(target.objectUri);\n if (explicitAction === undefined) {\n return {\n help: true,\n helpText: renderUriHelpText(helpTarget, uri),\n kind: \"help\",\n };\n }\n if (isReadOnlyLibraryChapterHelpTarget(helpTarget)) {\n throw new Error(\n withHelpRoute(\n `The library-wide chapter target ${uri} is read-only and does not support \\`${action}\\`. Use a standalone archive URI or a library archive shortcut such as wikg://lib/arc/<archive-id>/chapter/... for chapter maintenance.`,\n formatWikiGraphHelpCommand(uri),\n ),\n );\n }\n if (!isUriHelpPredicate(helpTarget, action)) {\n throw new Error(\n withHelpRoute(\n `The library URI target ${uri} does not support \\`${action}\\`.`,\n formatWikiGraphHelpCommand(uri),\n ),\n );\n }\n return {\n help: true,\n helpText: renderUriPredicateHelpText(helpTarget, action, uri),\n kind: \"help\",\n };\n }\n\n if (!isLibraryAction(action)) {\n throw new Error(\n withHelpRoute(\n `The library URI target ${uri} does not support \\`${action}\\`.`,\n formatWikiGraphHelpCommand(uri),\n ),\n );\n }\n validateLibraryActionForTarget(uri, target, action);\n return {\n help: true,\n helpText:\n explicitAction === undefined\n ? renderLibraryUriHelpText(uri, target)\n : renderLibraryPredicateHelpText(uri, target, action),\n kind: \"help\",\n };\n}\n\nfunction classifyLibraryObjectHelpTarget(objectUri: string): UriHelpTargetName {\n const path = stripObjectUriPrefix(objectUri);\n const chapterTarget = parseChapterTarget(objectUri);\n if (chapterTarget !== undefined) {\n switch (chapterTarget.kind) {\n case \"collection\":\n return \"chapter-collection-scope\";\n case \"chapter\":\n return \"chapter-scope\";\n case \"tree\":\n return \"chapter-tree-object\";\n case \"chapter-state\":\n return \"chapter-state-object\";\n case \"chapter-resource\":\n switch (chapterTarget.resource) {\n case \"source\":\n return hasObjectUriFragment(objectUri)\n ? \"chapter-source-range-object\"\n : \"chapter-source-object\";\n case \"summary\":\n return hasObjectUriFragment(objectUri)\n ? \"chapter-summary-range-object\"\n : \"chapter-summary-object\";\n case \"title\":\n return \"chapter-title-object\";\n }\n break;\n case \"lens\":\n case \"chapter-lens\":\n switch (chapterTarget.lens) {\n case \"chunk\":\n return \"chunk-scope\";\n case \"entity\":\n return \"entity-scope\";\n case \"source\":\n return \"chapter-source-object\";\n case \"summary\":\n return \"chapter-summary-object\";\n case \"triple\":\n return \"triple-scope\";\n }\n break;\n case \"triple-pattern-lens\":\n case \"chapter-triple-pattern-lens\":\n return \"triple-scope\";\n }\n }\n if (path === \"chunk\") {\n return \"chunk-scope\";\n }\n if (/^chunk\\/.+$/u.test(path)) {\n return \"chunk-object\";\n }\n if (path === \"entity\") {\n return \"entity-scope\";\n }\n if (/^entity\\/[^/]+\\/wikipage$/u.test(path)) {\n return \"entity-wikipage-object\";\n }\n if (/^entity\\/.+$/u.test(path)) {\n return \"entity-object\";\n }\n if (isTripleScopePath(path)) {\n return \"triple-scope\";\n }\n if (/^triple(?:\\/.*)?$/u.test(path)) {\n return \"triple-object\";\n }\n\n return \"archive-scope\";\n}\n\nfunction hasObjectUriFragment(objectUri: string): boolean {\n return objectUri.includes(\"#\");\n}\n\nfunction isReadOnlyLibraryChapterHelpTarget(\n targetName: UriHelpTargetName,\n): boolean {\n return (\n targetName === \"chapter-collection-scope\" ||\n targetName === \"chapter-scope\" ||\n targetName === \"chapter-source-object\" ||\n targetName === \"chapter-summary-object\" ||\n targetName === \"chapter-title-object\" ||\n targetName === \"chapter-tree-object\"\n );\n}\n\nfunction parseLibraryQueryArguments(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n action: string,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n if (!LIBRARY_QUERY_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The library scope ${uri} does not support \\`${action}\\`.`,\n formatWikiGraphHelpCommand(uri, action),\n ),\n );\n }\n if (\n target.objectUri === undefined &&\n action !== \"search\" &&\n action !== \"list\"\n ) {\n throw new Error(\n withHelpRoute(\n formatMissingLibraryQueryObjectUriMessage(action),\n formatWikiGraphHelpCommand(uri, action),\n ),\n );\n }\n\n const parsed = parseArchiveArguments(\n action as \"evidence\" | \"get\" | \"list\" | \"pack\" | \"related\" | \"search\",\n [\n target.objectUri === undefined\n ? \"wikg://__library_index__.wikg\"\n : formatTemporaryLocatedLibraryQueryUri(target.objectUri),\n ...tail,\n ],\n values,\n formatWikiGraphHelpCommand(uri, action),\n {\n ...optionalDefaultKinds(getLibraryQueryDefaultKinds(target.objectUri)),\n ...optionalTriplePattern(getLibraryQueryTriplePattern(target.objectUri)),\n },\n );\n\n if (parsed.kind !== \"archive\") {\n return parsed;\n }\n\n const temporaryArchivePath = parsed.args.archivePath;\n const replaceTemporaryUri = (\n value: string | undefined,\n ): string | undefined =>\n value === undefined\n ? undefined\n : value === temporaryArchivePath\n ? uri\n : value.replace(temporaryArchivePath, uri);\n\n return {\n ...parsed,\n args: {\n ...parsed.args,\n archivePath: uri,\n ...optionalObjectId(replaceTemporaryUri(parsed.args.objectId)),\n },\n };\n}\n\nfunction formatMissingLibraryQueryObjectUriMessage(action: string): string {\n return `The library \\`${action}\\` predicate requires a concrete library object URI.`;\n}\n\nfunction optionalDefaultKinds(\n defaultKinds: readonly CLIObjectKind[] | undefined,\n): { readonly defaultKinds?: readonly CLIObjectKind[] } {\n return defaultKinds === undefined ? {} : { defaultKinds };\n}\n\nfunction optionalTriplePattern(\n triplePattern: ArchiveTriplePattern | undefined,\n): { readonly triplePattern?: ArchiveTriplePattern } {\n return triplePattern === undefined ? {} : { triplePattern };\n}\n\nfunction optionalObjectId(objectId: string | undefined): {\n readonly objectId?: string;\n} {\n return objectId === undefined ? {} : { objectId };\n}\n\nfunction formatTemporaryLocatedLibraryQueryUri(objectUri: string): string {\n const path = stripObjectUriPrefix(objectUri);\n return `wikg://__library_index__.wikg/${path}`;\n}\n\nfunction getLibraryQueryDefaultKinds(\n objectUri: string | undefined,\n): readonly CLIObjectKind[] | undefined {\n if (objectUri === undefined) {\n return undefined;\n }\n const chapterTarget = parseChapterTarget(objectUri);\n if (chapterTarget !== undefined) {\n switch (chapterTarget.kind) {\n case \"collection\":\n case \"chapter\":\n return [\"chapter\"];\n case \"lens\":\n case \"chapter-lens\":\n return [chapterTarget.lens];\n case \"triple-pattern-lens\":\n case \"chapter-triple-pattern-lens\":\n return [\"triple\"];\n case \"chapter-resource\":\n return chapterTarget.resource === \"title\"\n ? undefined\n : [chapterTarget.resource];\n case \"chapter-state\":\n case \"tree\":\n return undefined;\n }\n }\n const path = stripObjectUriPrefix(objectUri);\n const [head] = path.split(\"/\");\n\n switch (head) {\n case \"chapter\":\n return [\"chapter\"];\n case \"chunk\":\n return [\"chunk\"];\n case \"entity\":\n return [\"entity\"];\n case \"source\":\n return [\"source\"];\n case \"summary\":\n return [\"summary\"];\n case \"triple\":\n return [\"triple\"];\n default:\n return undefined;\n }\n}\n\nfunction getLibraryQueryTriplePattern(\n objectUri: string | undefined,\n): ArchiveTriplePattern | undefined {\n if (objectUri === undefined) {\n return undefined;\n }\n const chapterTarget = parseChapterTarget(objectUri);\n if (chapterTarget === undefined) {\n return undefined;\n }\n\n switch (chapterTarget.kind) {\n case \"triple-pattern-lens\":\n case \"chapter-triple-pattern-lens\":\n return chapterTarget.pattern;\n default:\n return undefined;\n }\n}\n\nfunction resolveImplicitLibraryQueryAction(\n objectUri: string | undefined,\n query: string | undefined,\n): \"get\" | \"list\" | \"search\" {\n if (objectUri === undefined) {\n return query === undefined ? \"list\" : \"search\";\n }\n if (isLibraryScopeObjectUri(objectUri)) {\n return query === undefined ? \"list\" : \"search\";\n }\n\n return \"get\";\n}\n\nfunction isLibraryScopeObjectUri(objectUri: string): boolean {\n const chapterTarget = parseChapterTarget(objectUri);\n if (chapterTarget !== undefined) {\n switch (chapterTarget.kind) {\n case \"collection\":\n case \"chapter\":\n case \"lens\":\n case \"triple-pattern-lens\":\n case \"chapter-lens\":\n case \"chapter-triple-pattern-lens\":\n return true;\n case \"chapter-resource\":\n case \"chapter-state\":\n case \"tree\":\n return false;\n }\n }\n\n const path = stripObjectUriPrefix(objectUri);\n return /^(?:chunk|entity|source|summary|triple)$/u.test(path)\n ? true\n : isTripleScopePath(path);\n}\n\nfunction parseLibraryRegistryArguments(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n action: string,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const helpRoute = formatWikiGraphHelpCommand(uri, action);\n if (!LIBRARY_REGISTRY_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The library registry ${uri} does not support \\`${action}\\`.`,\n helpRoute,\n ),\n );\n }\n rejectExtraPositionals(action, tail, 0, helpRoute);\n rejectCommonLibraryFlags(action, values, helpRoute);\n rejectArchiveFlag(action, \"--input\", values.input, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveFlag(action, \"--json-input\", values[\"json-input\"], helpRoute);\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n if (action === \"add\") {\n if (values.path === undefined) {\n throw new Error(withHelpRoute(\"Missing --path <folder>.\", helpRoute));\n }\n return {\n args: { action: \"create\", json: values.json, path: values.path, target },\n help: false,\n kind: \"library\",\n };\n }\n rejectArchiveFlag(action, \"--path\", values.path, helpRoute);\n return {\n args: { action: \"list\", json: values.json, target },\n help: false,\n kind: \"library\",\n };\n}\n\nfunction parseLibraryPathArguments(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n action: string,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const helpRoute = formatWikiGraphHelpCommand(uri, action);\n if (!LIBRARY_PATH_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The library path object ${uri} does not support \\`${action}\\`.`,\n helpRoute,\n ),\n );\n }\n rejectCommonLibraryFlags(action, values, helpRoute);\n rejectArchiveFlag(action, \"--path\", values.path, helpRoute);\n rejectArchiveFlag(action, \"--input\", values.input, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveFlag(action, \"--json-input\", values[\"json-input\"], helpRoute);\n if (action === \"get\") {\n rejectExtraPositionals(action, tail, 0, helpRoute);\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n return {\n args: { action: \"get\", json: values.json, target },\n help: false,\n kind: \"library\",\n };\n }\n rejectExtraPositionals(action, tail, 1, helpRoute);\n if (tail[0] === undefined) {\n throw new Error(withHelpRoute(\"Missing path value.\", helpRoute));\n }\n if (target.kind === \"archive-path\") {\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n return {\n args: { action: \"set\", json: values.json, target, to: tail[0] },\n help: false,\n kind: \"library\",\n };\n }\n return {\n args: {\n action: \"rebind\",\n json: values.json,\n jsonl: values.jsonl,\n path: tail[0],\n target: getLibraryScopeForPathTarget(target),\n },\n help: false,\n kind: \"library\",\n };\n}\n\nfunction getLibraryScopeForPathTarget(\n target: ParsedWikiGraphLibraryUri,\n): ParsedWikiGraphLibraryUri {\n if (target.kind !== \"path\") {\n throw new Error(\"Internal error: expected library path target.\");\n }\n return {\n isDefault: target.isDefault,\n kind: \"scope\",\n ...(target.publicId === undefined ? {} : { publicId: target.publicId }),\n };\n}\n\nfunction parseLibraryArchiveCollectionArguments(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n action: string,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const helpRoute = formatWikiGraphHelpCommand(uri, action);\n if (!LIBRARY_ARCHIVE_COLLECTION_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The archive member collection ${uri} does not support \\`${action}\\`.`,\n helpRoute,\n ),\n );\n }\n rejectExtraPositionals(action, tail, 0, helpRoute);\n rejectCommonLibraryFlags(action, values, helpRoute);\n rejectArchiveFlag(action, \"--path\", values.path, helpRoute);\n rejectArchiveFlag(action, \"--json-input\", values[\"json-input\"], helpRoute);\n if (action === \"add\") {\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n if (values.input === undefined) {\n throw new Error(withHelpRoute(\"Missing --input <path>.\", helpRoute));\n }\n return {\n args: {\n action: \"add\",\n inputPath: values.input,\n json: values.json,\n target,\n ...(values.to === undefined ? {} : { to: values.to }),\n },\n help: false,\n kind: \"library\",\n };\n }\n rejectArchiveFlag(action, \"--input\", values.input, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n return {\n args: {\n action: action === \"get\" ? \"get\" : \"scan\",\n json: values.json,\n jsonl: values.jsonl,\n target,\n },\n help: false,\n kind: \"library\",\n };\n}\n\nfunction parseLibraryArchiveTreeArguments(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n action: string,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const helpRoute = formatWikiGraphHelpCommand(uri, action);\n if (!LIBRARY_ARCHIVE_TREE_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The archive member tree ${uri} is read-only and does not support \\`${action}\\`.`,\n helpRoute,\n ),\n );\n }\n rejectExtraPositionals(action, tail, 0, helpRoute);\n rejectCommonLibraryFlags(action, values, helpRoute);\n rejectArchiveFlag(action, \"--path\", values.path, helpRoute);\n rejectArchiveFlag(action, \"--input\", values.input, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveFlag(action, \"--json-input\", values[\"json-input\"], helpRoute);\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n return {\n args: {\n action: \"archive-tree\",\n ...(values.depth === undefined\n ? {}\n : {\n depth: parseNonNegativeIntegerFlag(\n values.depth,\n \"--depth\",\n helpRoute,\n ),\n }),\n json: values.json,\n ...(values.parent === undefined ? {} : { parent: values.parent }),\n target,\n },\n help: false,\n kind: \"library\",\n };\n}\n\nfunction parseLibraryIndexArguments(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n action: string,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const helpRoute = formatWikiGraphHelpCommand(uri, action);\n if (!LIBRARY_INDEX_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The library index ${uri} does not support \\`${action}\\`.`,\n formatWikiGraphHelpCommand(uri),\n ),\n );\n }\n\n rejectExtraPositionals(action, tail, 0, helpRoute);\n rejectCommonLibraryFlags(action, values, helpRoute);\n rejectArchiveFlag(action, \"--path\", values.path, helpRoute);\n rejectArchiveFlag(action, \"--input\", values.input, helpRoute);\n rejectArchiveFlag(action, \"--json-input\", values[\"json-input\"], helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n\n if (action === \"sync\") {\n if (values.json === true) {\n throw new Error(\n withHelpRoute(\n \"The `sync` command does not support --json because it streams progress events. Use --jsonl for line-delimited progress output.\",\n helpRoute,\n ),\n );\n }\n return {\n args: {\n action: \"sync-index\",\n ...(values.jsonl === undefined ? {} : { jsonl: values.jsonl }),\n target,\n },\n help: false,\n kind: \"library\",\n };\n }\n\n rejectArchiveFlag(action, \"--indexes\", values.indexes, helpRoute);\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n return {\n args: {\n action: action === \"clean\" ? \"clean-index\" : \"get-index\",\n ...(values.json === undefined ? {} : { json: values.json }),\n target,\n },\n help: false,\n kind: \"library\",\n };\n}\n\nfunction parseLibraryArchiveArguments(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n action: CLILibraryAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const helpRoute = formatWikiGraphHelpCommand(uri, action);\n if (!LIBRARY_ARCHIVE_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The library archive ${uri} does not support \\`${action}\\`.`,\n helpRoute,\n ),\n );\n }\n rejectCommonLibraryFlags(action, values, helpRoute, {\n allowConfirm: action === \"remove\",\n });\n rejectArchiveFlag(action, \"--path\", values.path, helpRoute);\n rejectArchiveFlag(action, \"--input\", values.input, helpRoute);\n rejectArchiveFlag(action, \"--json-input\", values[\"json-input\"], helpRoute);\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n rejectExtraPositionals(action, tail, 0, helpRoute);\n\n if (action === \"get\") {\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n return {\n args: { action, json: values.json, target },\n help: false,\n kind: \"library\",\n };\n }\n\n if (action === \"remove\") {\n if (values.confirm !== true) {\n throw new Error(withHelpRoute(\"Missing --confirm.\", helpRoute));\n }\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n return {\n args: { action, confirm: true, json: values.json, target },\n help: false,\n kind: \"library\",\n };\n }\n\n throw new Error(\n \"Internal error: unsupported action routed to library archive.\",\n );\n}\n\nfunction parseLibraryArchiveInspectArguments(\n uri: string,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n return parseArchiveArguments(\n \"inspect\",\n [uri, ...tail],\n values,\n formatWikiGraphHelpCommand(uri, \"inspect\"),\n );\n}\n\nfunction parseLibraryArchiveRootQueryArguments(\n uri: string,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n return parseArchiveArguments(\n \"search\",\n [uri, ...tail],\n values,\n formatWikiGraphHelpCommand(uri, \"search\"),\n );\n}\n\nfunction parseLibraryScopeArguments(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n action: CLILibraryAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const helpRoute = formatWikiGraphHelpCommand(uri, action);\n if (!LIBRARY_SCOPE_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The library scope ${uri} does not support \\`${action}\\`.`,\n helpRoute,\n ),\n );\n }\n rejectCommonLibraryFlags(action, values, helpRoute, {\n allowConfirm: action === \"remove\",\n });\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n rejectArchiveFlag(action, \"--json-input\", values[\"json-input\"], helpRoute);\n\n switch (action) {\n case \"remove\":\n rejectExtraPositionals(action, tail, 0, helpRoute);\n rejectArchiveFlag(action, \"--path\", values.path, helpRoute);\n rejectArchiveFlag(action, \"--input\", values.input, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n if (!target.isDefault && values.confirm !== true) {\n throw new Error(withHelpRoute(\"Missing --confirm.\", helpRoute));\n }\n return {\n args: {\n action,\n ...(values.confirm === undefined ? {} : { confirm: values.confirm }),\n json: values.json,\n target,\n },\n help: false,\n kind: \"library\",\n };\n case \"get\":\n case \"list\":\n rejectExtraPositionals(action, tail, 0, helpRoute);\n rejectArchiveFlag(action, \"--path\", values.path, helpRoute);\n rejectArchiveFlag(action, \"--input\", values.input, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n return {\n args: { action, json: values.json, target },\n help: false,\n kind: \"library\",\n };\n case \"set\":\n case \"put\":\n case \"delete\":\n case \"clean-index\":\n case \"get-index\":\n case \"sync-index\":\n case \"clear\":\n case \"archive-tree\":\n case \"add\":\n case \"create\":\n case \"rebind\":\n case \"scan\":\n throw new Error(\n \"Internal error: unsupported action routed to library scope.\",\n );\n }\n}\n\nfunction parseLibraryMetadataArguments(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n action: CLILibraryAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const helpRoute = formatWikiGraphHelpCommand(uri, action);\n if (!LIBRARY_METADATA_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The library metadata object ${uri} does not support \\`${action}\\`.`,\n helpRoute,\n ),\n );\n }\n rejectCommonLibraryFlags(action, values, helpRoute);\n rejectArchiveFlag(action, \"--path\", values.path, helpRoute);\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n\n switch (action) {\n case \"get\":\n case \"clear\":\n rejectExtraPositionals(action, tail, 0, helpRoute);\n return {\n args: { action, json: values.json, target },\n help: false,\n kind: \"library\",\n };\n case \"set\":\n rejectExtraPositionals(action, tail, 1, helpRoute);\n return {\n args: {\n action,\n inputPath: values.input,\n inputValue: tail[0],\n json: values.json,\n jsonInputValue: values[\"json-input\"],\n target,\n },\n help: false,\n kind: \"library\",\n };\n case \"put\":\n rejectExtraPositionals(action, tail, 2, helpRoute);\n return {\n args: {\n action,\n inputPath: values.input,\n inputValue: tail[1],\n json: values.json,\n jsonInputValue: values[\"json-input\"],\n key: tail[0],\n target,\n },\n help: false,\n kind: \"library\",\n };\n case \"delete\":\n rejectExtraPositionals(action, tail, 1, helpRoute);\n return {\n args: { action, json: values.json, key: tail[0], target },\n help: false,\n kind: \"library\",\n };\n case \"create\":\n case \"list\":\n case \"remove\":\n case \"add\":\n case \"rebind\":\n case \"clean-index\":\n case \"get-index\":\n case \"sync-index\":\n case \"scan\":\n case \"archive-tree\":\n throw new Error(\n \"Internal error: scope action routed to library metadata.\",\n );\n }\n}\n\nfunction rejectCommonLibraryFlags(\n action: string,\n values: ArchiveArgumentValues,\n helpRoute: string,\n options: { readonly allowConfirm?: boolean } = {},\n): void {\n rejectArchiveFlag(action, \"--query\", values.query, helpRoute);\n rejectArchiveFlag(action, \"--limit\", values.limit, helpRoute);\n rejectArchiveFlag(action, \"--cursor\", values.cursor, helpRoute);\n rejectArchiveFlag(action, \"--context\", values.context, helpRoute);\n rejectArchiveFlag(action, \"--evidence\", values.evidence, helpRoute);\n rejectArchiveFlag(action, \"--llm\", values.llm, helpRoute);\n rejectArchiveFlag(action, \"--output\", values.output, helpRoute);\n rejectArchiveFlag(\n action,\n \"--output-format\",\n values[\"output-format\"],\n helpRoute,\n );\n rejectArchiveBooleanFlag(action, \"--all\", values.all, helpRoute);\n rejectArchiveBooleanFlag(action, \"--backlinks\", values.backlinks, helpRoute);\n rejectArchiveBooleanFlag(action, \"--reverse\", values.reverse, helpRoute);\n if (options.allowConfirm !== true) {\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n }\n}\n\nfunction rejectExtraPositionals(\n action: string,\n positionals: readonly string[],\n expected: number,\n helpRoute: string,\n): void {\n if (positionals.length > expected) {\n throw new Error(\n withHelpRoute(\n `The \\`${action}\\` command received too many positional arguments.`,\n helpRoute,\n ),\n );\n }\n}\n\nfunction isLibraryAction(action: string): action is CLILibraryAction {\n return (\n action === \"add\" ||\n action === \"archive-tree\" ||\n action === \"clear\" ||\n action === \"clean-index\" ||\n action === \"create\" ||\n action === \"delete\" ||\n action === \"get\" ||\n action === \"get-index\" ||\n action === \"list\" ||\n action === \"put\" ||\n action === \"rebind\" ||\n action === \"remove\" ||\n action === \"scan\" ||\n action === \"set\" ||\n action === \"sync-index\"\n );\n}\n\nfunction validateTargetAction(\n uri: string,\n label: string,\n actions: ReadonlySet<string>,\n action: CLILibraryAction,\n): void {\n if (!actions.has(action)) {\n throw new Error(\n withHelpRoute(\n `The ${label} ${uri} does not support \\`${action}\\`.`,\n formatWikiGraphHelpCommand(uri),\n ),\n );\n }\n}\n\nfunction validateLibraryActionForTarget(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n action: CLILibraryAction,\n): void {\n const helpRoute = formatWikiGraphHelpCommand(uri);\n if (target.kind === \"metadata\") {\n if (!LIBRARY_METADATA_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The library metadata object ${uri} does not support \\`${action}\\`.`,\n helpRoute,\n ),\n );\n }\n return;\n }\n\n if (target.kind === \"archive\") {\n if (!LIBRARY_ARCHIVE_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The library archive ${uri} does not support \\`${action}\\`.`,\n helpRoute,\n ),\n );\n }\n return;\n }\n if (target.kind === \"registry\") {\n validateTargetAction(\n uri,\n \"library registry\",\n LIBRARY_REGISTRY_ACTIONS,\n action,\n );\n return;\n }\n\n if (target.kind === \"path\") {\n validateTargetAction(\n uri,\n \"library path object\",\n LIBRARY_PATH_ACTIONS,\n action,\n );\n return;\n }\n\n if (target.kind === \"archive-collection\") {\n validateTargetAction(\n uri,\n \"archive member collection\",\n LIBRARY_ARCHIVE_COLLECTION_ACTIONS,\n action,\n );\n return;\n }\n\n if (target.kind === \"archive-tree\") {\n validateTargetAction(\n uri,\n \"archive member tree\",\n LIBRARY_ARCHIVE_TREE_ACTIONS,\n action,\n );\n return;\n }\n\n if (target.kind === \"archive-path\") {\n validateTargetAction(\n uri,\n \"archive path object\",\n LIBRARY_ARCHIVE_PATH_ACTIONS,\n action,\n );\n return;\n }\n\n if (!LIBRARY_SCOPE_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The library scope ${uri} does not support \\`${action}\\`.`,\n helpRoute,\n ),\n );\n }\n if (action === \"create\" && !target.isDefault) {\n throw new Error(\n withHelpRoute(\"Create libraries from wikg://lib.\", helpRoute),\n );\n }\n if (action === \"remove\" && target.isDefault) {\n throw new Error(\n withHelpRoute(\n \"The default library cannot be removed. Use a non-default library URI such as wikg://lib/<lib-id> for library registry removal.\",\n helpRoute,\n ),\n );\n }\n}\n","import type {\n CLIArguments,\n CLIArchiveArguments,\n CLIArchiveChapterArguments,\n CLIArchiveCoverArguments,\n CLIArchiveIndexArguments,\n CLIArchiveMetadataArguments,\n CLILibraryArguments,\n CLIGcArguments,\n CLILegacyArguments,\n CLILocalConfigArguments,\n CLIMaintenanceArguments,\n CLIObjectMetadataArguments,\n CLIQueueArguments,\n} from \"../args/index.js\";\n\nexport async function runArchiveCommand(\n args: CLIArchiveArguments,\n): Promise<void> {\n const command = await import(\"./archive-command/index.js\");\n\n return command.runArchiveCommand(args);\n}\n\nexport async function runArchiveChapterCommand(\n args: CLIArchiveChapterArguments,\n): Promise<void> {\n const command = await import(\"./archive-command/chapter.js\");\n\n return command.runArchiveChapterCommand(args);\n}\n\nexport async function runArchiveIndexCommand(\n args: CLIArchiveIndexArguments,\n): Promise<void> {\n const command = await import(\"./archive-command/search-index.js\");\n\n return command.runArchiveIndexCommand(args);\n}\n\nexport async function runArchiveCoverCommand(\n args: CLIArchiveCoverArguments,\n): Promise<void> {\n const command = await import(\"./archive-command/maintenance.js\");\n\n return command.runArchiveCoverCommand(args);\n}\n\nexport async function runArchiveMetaCommand(\n args: CLIArchiveMetadataArguments,\n): Promise<void> {\n const command = await import(\"./archive-command/maintenance.js\");\n\n return command.runArchiveMetaCommand(args);\n}\n\nexport async function runConvertCommand(args: CLIArguments): Promise<void> {\n const command = await import(\"./convert.js\");\n\n return command.runConvertCommand(args);\n}\n\nexport async function runGcCommand(args: CLIGcArguments): Promise<void> {\n const command = await import(\"./gc.js\");\n\n return command.runGcCommand(args);\n}\n\nexport async function runLegacyCommand(\n args: CLILegacyArguments,\n): Promise<void> {\n const command = await import(\"./legacy.js\");\n\n return command.runLegacyCommand(args);\n}\n\nexport async function runMaintenanceCommand(\n args: CLIMaintenanceArguments,\n): Promise<void> {\n const command = await import(\"./maintenance.js\");\n\n return command.runMaintenanceCommand(args);\n}\n\nexport async function runLocalConfigCommand(\n args: CLILocalConfigArguments,\n): Promise<void> {\n const command = await import(\"./local-config.js\");\n\n return command.runLocalConfigCommand(args);\n}\n\nexport async function runLibraryCommand(\n args: CLILibraryArguments,\n): Promise<void> {\n const command = await import(\"./library.js\");\n\n return command.runLibraryCommand(args);\n}\n\nexport async function runObjectMetadataCommand(\n args: CLIObjectMetadataArguments,\n): Promise<void> {\n const command = await import(\"./object-metadata.js\");\n\n return command.runObjectMetadataCommand(args);\n}\n\nexport async function runQueueCommand(args: CLIQueueArguments): Promise<void> {\n const command = await import(\"./queue/index.js\");\n\n return command.runQueueCommand(args);\n}\n\nexport async function runQueueWorker(): Promise<void> {\n const command = await import(\"./queue/index.js\");\n\n return command.runQueueWorker();\n}\n","import { renderMainHelpText } from \"../args/help.js\";\nimport { parseCLIArguments } from \"../args/index.js\";\nimport {\n runArchiveChapterCommand,\n runArchiveCommand,\n runArchiveCoverCommand,\n runArchiveIndexCommand,\n runArchiveMetaCommand,\n runConvertCommand,\n runGcCommand,\n runLegacyCommand,\n runLibraryCommand,\n runLocalConfigCommand,\n runMaintenanceCommand,\n runObjectMetadataCommand,\n runQueueCommand,\n} from \"../commands/index.js\";\nimport {\n formatCLIJSON,\n formatCLIJSONLine,\n getRelativeArchiveUriResolution,\n} from \"../support/index.js\";\nimport { readCLIVersion } from \"../support/index.js\";\nimport { isWikiGraphHomeTarget } from \"../runtime/home-target.js\";\nimport {\n ensureWikiGraphHomeSchemaCurrent,\n formatError,\n LLMPaymentRequiredError,\n} from \"wiki-graph-core\";\n\nexport interface WikiGraphCLIDispatchInput {\n readonly argv: readonly string[];\n readonly stdinIsTTY?: boolean | undefined;\n readonly stderr: NodeJS.WritableStream;\n readonly stdout: NodeJS.WritableStream;\n}\n\nexport interface WikiGraphCLIDispatchResult {\n readonly exitCode: number;\n}\n\nexport async function dispatchWikiGraphCLI(\n input: WikiGraphCLIDispatchInput,\n): Promise<WikiGraphCLIDispatchResult> {\n try {\n if (shouldPrintDefaultHelp(input.argv, input.stdinIsTTY)) {\n input.stdout.write(`${renderMainHelpText()}\\n`);\n return { exitCode: 0 };\n }\n\n const parsed = parseCLIArguments([...input.argv]);\n\n if (parsed.help) {\n input.stdout.write(`${parsed.helpText}\\n`);\n return { exitCode: 0 };\n }\n\n switch (parsed.kind) {\n case \"version\":\n input.stdout.write(`${readCLIVersion()}\\n`);\n return { exitCode: 0 };\n }\n\n if (\n parsed.kind !== \"maintenance-command\" ||\n !isWikiGraphHomeTarget(parsed.args.target)\n ) {\n await ensureWikiGraphHomeSchemaCurrent();\n }\n\n switch (parsed.kind) {\n case \"convert\":\n await runConvertCommand(parsed.args);\n return { exitCode: 0 };\n case \"meta\":\n await runArchiveMetaCommand(parsed.args);\n return { exitCode: 0 };\n case \"cover\":\n await runArchiveCoverCommand(parsed.args);\n return { exitCode: 0 };\n case \"object-metadata\":\n await runObjectMetadataCommand(parsed.args);\n return { exitCode: 0 };\n case \"library\":\n await runLibraryCommand(parsed.args);\n return { exitCode: 0 };\n case \"chapter\":\n await runArchiveChapterCommand(parsed.args);\n return { exitCode: 0 };\n case \"archive\":\n await runArchiveCommand(parsed.args);\n return { exitCode: 0 };\n case \"archive-index\":\n await runArchiveIndexCommand(parsed.args);\n return { exitCode: 0 };\n case \"queue\":\n await runQueueCommand(parsed.args);\n return { exitCode: 0 };\n case \"gc\":\n await runGcCommand(parsed.args);\n return { exitCode: 0 };\n case \"legacy\":\n await runLegacyCommand(parsed.args);\n return { exitCode: 0 };\n case \"maintenance-command\":\n await runMaintenanceCommand(parsed.args);\n return { exitCode: 0 };\n case \"local-config\":\n await runLocalConfigCommand(parsed.args);\n return { exitCode: 0 };\n }\n } catch (error) {\n if (shouldWriteJSONError(input.argv)) {\n input.stdout.write(\n formatCLIJSON(createCLIErrorObject(error, input.argv)),\n );\n return { exitCode: 1 };\n }\n if (shouldWriteJSONLError(input.argv)) {\n input.stdout.write(\n formatCLIJSONLine(createCLIErrorObject(error, input.argv)),\n );\n return { exitCode: 1 };\n }\n input.stderr.write(`${formatCLIError(error, input.argv)}\\n`);\n return { exitCode: 1 };\n }\n}\n\nfunction shouldPrintDefaultHelp(\n argv: readonly string[],\n stdinIsTTY: boolean | undefined,\n): boolean {\n return argv.length === 0 && stdinIsTTY === true;\n}\n\nfunction formatCLIError(error: unknown, argv: readonly string[]): string {\n if (error instanceof LLMPaymentRequiredError) {\n return \"LLM payment required. Check your provider billing status or account balance.\";\n }\n\n const message = formatError(error);\n const relativeResolution = hasErrorCode(error, \"ENOENT\")\n ? getRelativeArchiveUriResolution(argv[0] ?? \"\")\n : undefined;\n if (relativeResolution === undefined) {\n return message;\n }\n\n return `${message}\\nArchive URI \\`${relativeResolution.inputUri}\\` is relative to the current working directory:\\n ${relativeResolution.workingDirectory}\\nResolved archive path:\\n ${relativeResolution.resolvedArchivePath}\\nSee: wg help uri`;\n}\n\nfunction createCLIErrorObject(\n error: unknown,\n argv: readonly string[],\n): {\n readonly error: {\n readonly message: string;\n readonly type: string;\n };\n} {\n return {\n error: {\n message: formatCLIError(error, argv),\n type:\n error instanceof LLMPaymentRequiredError\n ? \"llm_payment_required\"\n : \"error\",\n },\n };\n}\n\nfunction hasErrorCode(error: unknown, code: string): boolean {\n const visited = new Set<unknown>();\n let current: unknown = error;\n\n while (current !== undefined && !visited.has(current)) {\n visited.add(current);\n if (\n current instanceof Error &&\n \"code\" in current &&\n (current as Error & { readonly code?: unknown }).code === code\n ) {\n return true;\n }\n current = current instanceof Error ? current.cause : undefined;\n }\n\n return false;\n}\n\nfunction shouldWriteJSONError(argv: readonly string[]): boolean {\n return argv.some((item) => item === \"--json\" || item.startsWith(\"--json=\"));\n}\n\nfunction shouldWriteJSONLError(argv: readonly string[]): boolean {\n return argv.includes(\"--jsonl\");\n}\n","import {\n runWikiGraphCLIWithEntryPolicy,\n type RunWikiGraphCLIInput,\n} from \"./runner.js\";\nimport type { WikiGraphEntryEnvPolicy } from \"../runtime/entry-context.js\";\nimport { installNodeWikiGraphPlatform } from \"../runtime/node-platform.js\";\n\nexport async function main(\n input: RunWikiGraphCLIInput = {},\n envPolicy: WikiGraphEntryEnvPolicy = \"production\",\n): Promise<void> {\n installNodeWikiGraphPlatform();\n const result = await runWikiGraphCLIWithEntryPolicy(input, envPolicy);\n process.exitCode = result.exitCode;\n}\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACgPA,eAAsB,qBACpB,SACA,WACY;AACZ,MAAI,YAAY,QAAW;AACzB,WAAO,MAAM,UAAU;AAAA,EACzB;AACA,SAAO,MAAM,eAAe,IAAI,SAAS,SAAS;AACpD;AAxPA,IAuCI,mBAgJE,0BAiDA;AAxON;AAAA;AAAA;AA8BA;AAyJA,IAAM,2BAAN,MAAkC;AAAA,MAChC;AAAA,MACA;AAAA,MAEO,IAAO,OAAU,UAAsB;AAC5C,cAAM,iBAAiB,KAAK,gBAAgB;AAC5C,YAAI,mBAAmB,QAAW;AAChC,iBAAO,eAAe,IAAI,OAAO,QAAQ;AAAA,QAC3C;AAEA,cAAM,WAAW,KAAK;AACtB,aAAK,iBAAiB;AACtB,YAAI;AACF,iBAAO,SAAS;AAAA,QAClB,UAAE;AACA,eAAK,iBAAiB;AAAA,QACxB;AAAA,MACF;AAAA,MAEO,UAAU,OAAgB;AAC/B,cAAM,iBAAiB,KAAK,gBAAgB;AAC5C,YAAI,mBAAmB,QAAW;AAChC,yBAAe,UAAU,KAAK;AAAA,QAChC,OAAO;AACL,eAAK,iBAAiB;AAAA,QACxB;AAAA,MACF;AAAA,MAEO,WAA0B;AAC/B,eAAO,KAAK,gBAAgB,GAAG,SAAS,KAAK,KAAK;AAAA,MACpD;AAAA,MAEA,kBAAmD;AACjD,YAAI,KAAK,UAAU,QAAW;AAC5B,iBAAO,KAAK;AAAA,QACd;AACA,YAAI,sBAAsB,QAAW;AACnC,iBAAO;AAAA,QACT;AAEA,aAAK,QAAQ,kBAAkB,aAAa,OAAU;AACtD,YAAI,KAAK,mBAAmB,QAAW;AACrC,eAAK,MAAM,UAAU,KAAK,cAAc;AACxC,eAAK,iBAAiB;AAAA,QACxB;AACA,eAAO,KAAK;AAAA,MACd;AAAA,IACF;AAEA,IAAM,iBAAiB,IAAI,yBAA2C;AAAA;AAAA;;;AChN/D,SAAS,sBAAsB,cAA8B;AAClE,MAAI,4BAA4B,KAAK,YAAY,GAAG;AAClD,UAAM,IAAI,MAAM,yBAAyB,YAAY,EAAE;AAAA,EACzD;AACA,QAAM,sBAAsB,aAAa,QAAQ,uBAAuB,EAAE;AAC1E,QAAM,mBAAmB,oBAAoB;AAAA,IAC3C;AAAA,IACA;AAAA,EACF;AACA,MAAI,iBAAiB,MAAM,GAAG,EAAE,SAAS,IAAI,GAAG;AAC9C,UAAM,IAAI,MAAM,yBAAyB,YAAY,EAAE;AAAA,EACzD;AACA,SAAO,GAAG,gBAAgB;AAC5B;AArCA,IAGM,yBACA,6BACA;AALN;AAAA;AAAA;AAAA;AAGA,IAAM,0BAA0B;AAChC,IAAM,8BAA8B;AACpC,IAAM,wBAAwB;AAAA;AAAA;;;ACJ9B,YAAY,gBAAgB;AAC5B,YAAY,YAAY;AACxB,YAAY,QAAQ;AACpB,YAAY,gBAAgB;AAC5B,YAAY,QAAQ;AACpB,YAAY,gBAAgB;AAC5B,YAAYA,cAAa;AACzB,SAAwB,gBAAgB;AACxC,SAAS,gBAAgB;AACzB,YAAY,aAAa;AACzB,YAAY,WAAW;AACvB,YAAY,UAAU;AACtB,SAAS,aAAa,cAAiC;AAmMvD,SAAS,2BACP,MACA,MACQ;AACR,SAAO,QAAQ,IAAI,IAAI,OAAO,KAAgB,mBAAQ,IAAI,GAAG,MAAM,EAAE,SAAS,WAAW,CAAC;AAC5F;AAEA,SAAS,2BACP,UACA,MACoB;AACpB,QAAM,SAAS,QAAQ,IAAI;AAC3B,MAAI,CAAC,SAAS,WAAW,MAAM,GAAG;AAEhC,WAAkB,sBAAW,QAAQ,IAAI,WAAW;AAAA,EACtD;AACA,MAAI;AACF,WAAO,OAAO,KAAK,SAAS,MAAM,OAAO,MAAM,GAAG,WAAW,EAAE;AAAA,MAC7D;AAAA,IACF;AAAA,EACF,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEO,SAAS,oBAAoB,UAAoC;AACtE,MAAI,oBAAoB,YAAY,oBAAoB,eAAe;AACrE,WAAO,SAAS;AAAA,EAClB;AACA,MACE,OAAO,aAAa,YACpB,aAAa,QACb,UAAU,YACV,OAAO,SAAS,SAAS,UACzB;AACA,WAAO,SAAS;AAAA,EAClB;AACA,QAAM,IAAI,UAAU,4CAA4C;AAClE;AAEA,SAAS,gBAAgB,MAAoB;AAC3C,MACE,KAAK,WAAW,KAChB,SAAS,OACT,SAAS,QACE,sBAAW,IAAI,KAC1B,KAAK,SAAS,GAAG,KACjB,KAAK,SAAS,IAAI,GAClB;AACA,UAAM,IAAI,UAAU,4CAA4C,IAAI,EAAE;AAAA,EACxE;AACF;AA4DA,eAAe,iBACb,MACA,UAA2C,CAAC,GACX;AACjC,QAAM,SACH,QAAQ,aAAa,OAClB,YAAY,gBACZ,YAAY,iBAAiB,YAAY,eAC7C,YAAY;AACd,SAAO,IAAI,uBAAuB,MAAM,uBAAuB,MAAM,KAAK,CAAC;AAC7E;AAEA,eAAe,uBACb,MACA,OAC2B;AAC3B,MAAI,EAAE,gBAAgB,WAAW;AAC/B,UAAM,IAAI,UAAU,+CAA+C;AAAA,EACrE;AACA,SAAO,MAAM,IAAI,QAAQ,CAACC,UAAS,WAAW;AAC5C,UAAM,WAAW,IAAI,YAAY,SAAS,KAAK,MAAM,OAAO,CAAC,UAAU;AACrE,UAAI,MAAO,QAAO,KAAK;AAAA,UAClB,CAAAA,SAAQ,QAAQ;AAAA,IACvB,CAAC;AAAA,EACH,CAAC;AACH;AAEA,eAAe,YAAY,MAAoC;AAC7D,MAAI,EAAE,gBAAgB,WAAW;AAC/B,UAAM,IAAI,UAAU,0CAA0C;AAAA,EAChE;AACA,QAAM,UAAU,MAAM,IAAI,QAAuB,CAACA,UAAS,WAAW;AACpE,IAAM;AAAA,MACJ,KAAK;AAAA,MACL,EAAE,WAAW,OAAO,aAAa,KAAK;AAAA,MACtC,CAAC,OAAO,WAAW;AACjB,YAAI,SAAS,WAAW;AACtB,iBAAO,SAAS,IAAI,MAAM,iBAAiB,CAAC;AAAA,YACzC,CAAAA,SAAQ,MAAM;AAAA,MACrB;AAAA,IACF;AAAA,EACF,CAAC;AAED,QAAM,UAAU,MAAM,IAAI;AAAA,IACxB,CAACA,UAAS,WAAW;AACnB,YAAM,aAAa,oBAAI,IAAyB;AAChD,YAAM,iBAAiB,CAAC,UAAmB;AACzC,gBAAQ,MAAM;AACd;AAAA,UACE,iBAAiB,QACb,QACA,IAAI,MAAM,mCAAmC;AAAA,QACnD;AAAA,MACF;AACA,YAAM,iBAAiB,MAAM;AAC3B,gBAAQ,IAAI,SAAS,cAAc;AACnC,QAAAA,SAAQ,UAAU;AAAA,MACpB;AACA,cAAQ,GAAG,SAAS,CAAC,UAAuB;AAC1C,YAAI,CAAC,MAAM,SAAS,SAAS,GAAG,GAAG;AACjC,qBAAW,IAAI,MAAM,UAAU,KAAK;AAAA,QACtC;AACA,gBAAQ,UAAU;AAAA,MACpB,CAAC;AACD,cAAQ,KAAK,SAAS,cAAc;AACpC,cAAQ,KAAK,OAAO,cAAc;AAClC,cAAQ,UAAU;AAAA,IACpB;AAAA,EACF;AAEA,MAAI,SAAS;AACb,SAAO;AAAA,IACL,OAAO,MAAM;AACX,UAAI,CAAC,OAAQ,SAAQ,MAAM;AAC3B,eAAS;AACT,aAAO,QAAQ,QAAQ;AAAA,IACzB;AAAA,IACA,aAAa,MAAM,QAAQ,QAAQ,CAAC,GAAG,QAAQ,KAAK,CAAC,CAAC;AAAA,IACtD,WAAW,OAAO,SAAS;AACzB,UAAI,OAAQ,OAAM,IAAI,MAAM,kCAAkC;AAC9D,YAAM,QAAQ,QAAQ,IAAI,IAAI;AAC9B,UAAI,UAAU,OAAW,QAAO;AAChC,aAAO,MAAM,iBAAiB,SAAS,KAAK;AAAA,IAC9C;AAAA,EACF;AACF;AAEA,eAAe,iBACb,SACA,OACqB;AACrB,QAAM,SAAS,MAAM,IAAI,QAA+B,CAACA,UAAS,WAAW;AAC3E,YAAQ,eAAe,OAAO,CAAC,OAAO,WAAW;AAC/C,UAAI,SAAS,WAAW,QAAW;AACjC,eAAO,SAAS,IAAI,MAAM,0BAA0B,MAAM,QAAQ,EAAE,CAAC;AAAA,MACvE,OAAO;AACL,QAAAA,SAAQ,MAAM;AAAA,MAChB;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AACD,SAAO,MAAM,kBAAkB,MAAM;AACvC;AAEA,eAAe,aACb,MACA,SACe;AACf,QAAM,UAAU,IAAS,aAAQ;AACjC,QAAM,SAAS,MAAM,KAAK,WAAW;AACrC,QAAM,eAAe,QAAQ;AAC7B,QAAM,aAAa,gBAAgB,cAAc,MAAM;AACvD,QAAM,aAAa,EAAE,WAAW,OAAO,UAAU,MAAM;AACvD,MAAI;AAKJ,MAAI;AACF,eAAW,wBAAwB,OAAO;AAC1C,UAAM,cAAc,kBAAkB,SAAS,UAAU,UAAU;AACnE,UAAM,QAAQ,KAAK,CAAC,aAAa,UAAU,CAAC;AAC5C,QAAI,CAAC,WAAW,UAAU;AACxB,YAAM,IAAI,MAAM,oDAAoD;AAAA,IACtE;AACA,YAAQ,IAAI;AACZ,UAAM;AACN,UAAM,OAAO,OAAO;AAAA,EACtB,SAAS,OAAO;AACd,eAAW,YAAY;AACvB,QAAI,CAAC,WAAW,YAAY,aAAa,QAAW;AAClD,gCAA0B,QAAQ;AAAA,IACpC;AACA,QAAI,CAAC,aAAa,WAAW;AAC3B,mBAAa;AAAA,QACX,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,0BAA0B;AAAA,MACvE;AAAA,IACF;AACA,UAAM,WAAW,MAAM,MAAM,MAAS;AACtC,UAAM,OAAO,MAAM,EAAE,MAAM,MAAM,MAAS;AAC1C,UAAM;AAAA,EACR;AACF;AAEA,eAAe,kBACb,SACA,UACA,OACe;AACf,SAAO,CAAC,MAAM,WAAW;AACvB,UAAM,SAAS,MAAM,SAAS,KAAK;AACnC,QAAI,MAAM,UAAW;AACrB,QAAI,OAAO,MAAM;AACf,YAAM,WAAW;AACjB;AAAA,IACF;AACA,YAAQ,UAAU,OAAO,KAAK,OAAO,MAAM,IAAI,GAAG,OAAO,MAAM,MAAM;AAAA,MACnE,UAAU;AAAA,IACZ,CAAC;AAAA,EACH;AACF;AAEA,SAAS,wBACP,SACsD;AACtD,QAAM,gBAAiB,QACrB,OAAO,aACT;AACA,SAAO,kBAAkB,SACpB,QAAmC,OAAO,QAAQ,EAAE,IACrD,cAAc,KAAK,OAAO;AAChC;AAEA,SAAS,0BACP,UACM;AACN,MAAI,SAAS,WAAW,OAAW;AACnC,MAAI;AACF,SAAK,QAAQ,QAAQ,SAAS,OAAO,CAAC,EAAE,MAAM,MAAM,MAAS;AAAA,EAC/D,QAAQ;AAAA,EAER;AACF;AAEA,eAAe,gBACb,OACA,QACe;AACf,QAAM;AAAA,IACJ;AAAA,IACA,IAAI,SAAS;AAAA,MACX,OAAO,CAAC,OAAe,WAAW,aAAa;AAC7C,aAAK,OAAO,MAAM,KAAK,EAAE;AAAA,UACvB,MAAM,SAAS;AAAA,UACf,CAAC,UACC;AAAA,YACE,iBAAiB,QACb,QACA,IAAI,MAAM,2BAA2B;AAAA,UAC3C;AAAA,QACJ;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAEA,eAAe,kBACb,OACiB;AACjB,SAAO,MAAM,IAAI,QAAQ,CAACA,UAAS,WAAW;AAC5C,UAAM,SAAmB,CAAC;AAC1B,UAAM,GAAG,QAAQ,CAAC,UAAkB,OAAO,KAAK,KAAK,CAAC;AACtD,UAAM,KAAK,SAAS,MAAM;AAC1B,UAAM,KAAK,OAAO,MAAMA,SAAQ,OAAO,OAAO,MAAM,CAAC,CAAC;AAAA,EACxD,CAAC;AACH;AAmEA,SAAS,2BAAmC;AAC1C,QAAM,WAAY,WACf;AACH,MAAI,OAAO,aAAa,YAAY,aAAa,GAAI,QAAO;AAC5D,MAAI,YAAY,YAAY,IAAI;AAChC,SAAO,MAAM;AACX,eAAW,aAAa;AAAA,MACX,gBAAK,WAAW,MAAM;AAAA,MACtB,gBAAK,WAAW,YAAY,QAAQ,MAAM;AAAA,IACvD,GAAG;AACD,UAAI;AACF,YAAO,YAAS,SAAS,EAAE,YAAY,EAAG,QAAO;AAAA,MACnD,QAAQ;AAAA,MAER;AAAA,IACF;AACA,UAAM,SAAoB,mBAAQ,SAAS;AAC3C,QAAI,WAAW;AACb,YAAM,IAAI,MAAM,iCAAiC;AACnD,gBAAY;AAAA,EACd;AACF;AAEO,SAAS,2BACd,YAAuB,gBAAQ,WAAQ,GAAG,YAAY,GACpC;AAClB,SAAO;AAAA,IACL,SAAS,IAAI,cAAc,SAAS;AAAA,IACpC,eAAe,IAAI,cAAyB,gBAAK,WAAW,WAAW,CAAC;AAAA,EAC1E;AACF;AAOA,eAAsB,yBACpB,WACA,WACY;AACZ,SAAO,MAAM;AAAA,IACX,cAAc,SAAY,SAAY,2BAA2B,SAAS;AAAA,IAC1E;AAAA,EACF;AACF;AAroBA,IAeM,aAEA,aAqBO,UAoFA,eA2IP,wBAkRO,uBAqDP;AA5kBN;AAAA;AAAA;AAoBA;AAeA;AApBA,IAAM,cACiD,oBAAWD;AAClE,IAAM,cACiD,mBAAW;AAoB3D,IAAM,WAAN,MAA+B;AAAA,MAI7B,YACW,MAChB,OAAkB,oBAAS,IAAI,GAC/B;AAFgB;AAGhB,aAAK,WAAW,2BAA2B,QAAQ,IAAI;AACvD,aAAK,OAAO;AAAA,MACd;AAAA,MALkB;AAAA,MAJF;AAAA,MACA;AAAA,MAUhB,MAAa,KAAK,SAEe;AAC/B,eAAO,MAAiB;AAAA,UACtB,KAAK;AAAA,UACL,SAAS,aAAa,SAClB,SACA,EAAE,UAAU,QAAQ,SAA2B;AAAA,QACrD;AAAA,MACF;AAAA,MAEA,MAAa,UAA2B;AACtC,YAAI;AACF,kBAAQ,MAAiB,gBAAK,KAAK,IAAI,GAAG;AAAA,QAC5C,SAAS,OAAO;AACd,cACE,OAAO,UAAU,YACjB,UAAU,QACV,UAAU,SACV,MAAM,SAAS,UACf;AACA,mBAAO;AAAA,UACT;AACA,gBAAM;AAAA,QACR;AAAA,MACF;AAAA,MAEA,MAAa,kBAA+C;AAC1D,YAAI;AACF,kBAAQ,MAAiB,gBAAK,KAAK,IAAI,GAAG;AAAA,QAC5C,SAAS,OAAO;AACd,cACE,OAAO,UAAU,YACjB,UAAU,QACV,UAAU,SACV,MAAM,SAAS,UACf;AACA,mBAAO;AAAA,UACT;AACA,gBAAM;AAAA,QACR;AAAA,MACF;AAAA,MAEA,MAAa,aAAkC;AAC7C,cAAiB,iBAAiB,mBAAQ,KAAK,IAAI,GAAG,EAAE,WAAW,KAAK,CAAC;AACzE,cAAM,YAAY,GAAG,KAAK,IAAI,QAAe,kBAAW,CAAC;AACzD,cAAM,SAAS,MAAiB,gBAAK,WAAW,IAAI;AACpD,YAAI,SAAS;AACb,eAAO;AAAA,UACL,OAAO,OAAO,SAAS;AACrB,gBAAI,OAAQ,OAAM,IAAI,MAAM,qCAAqC;AACjE,gBAAI,OAAO,SAAS,SAAU,OAAM,OAAO,MAAM,IAAI;AAAA,gBAChD,OAAM,OAAO,MAAM,OAAO,KAAK,IAAI,CAAC;AAAA,UAC3C;AAAA,UACA,QAAQ,YAAY;AAClB,gBAAI,CAAC,QAAQ;AACX,oBAAM,OAAO,MAAM;AACnB,oBAAiB,kBAAO,WAAW,KAAK,IAAI;AAAA,YAC9C;AACA,qBAAS;AAAA,UACX;AAAA,UACA,OAAO,YAAY;AACjB,gBAAI,CAAC,QAAQ;AACX,oBAAM,OAAO,MAAM;AACnB,oBAAiB,cAAG,WAAW,EAAE,OAAO,KAAK,CAAC;AAAA,YAChD;AACA,qBAAS;AAAA,UACX;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEO,IAAM,gBAAN,MAAM,eAAmC;AAAA,MAIvC,YAA4B,MAAc;AAAd;AACjC,aAAK,WAAW,2BAA2B,aAAa,IAAI;AAC5D,aAAK,OAAkB,oBAAS,IAAI;AAAA,MACtC;AAAA,MAHmC;AAAA,MAHnB;AAAA,MACA;AAAA,MAOhB,MAAa,QAAQ,MAAyC;AAC5D,wBAAgB,IAAI;AACpB,cAAM,OAAO,IAAI,SAAoB,gBAAK,KAAK,MAAM,IAAI,CAAC;AAC1D,YAAI;AACF,kBAAQ,MAAiB,gBAAK,KAAK,IAAI,GAAG,OAAO,IAAI,OAAO;AAAA,QAC9D,QAAQ;AACN,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,MAEA,MAAa,kBAA+C;AAC1D,YAAI;AACF,kBAAQ,MAAiB,gBAAK,KAAK,IAAI,GAAG;AAAA,QAC5C,SAAS,OAAO;AACd,cACE,OAAO,UAAU,YACjB,UAAU,QACV,UAAU,SACV,MAAM,SAAS,UACf;AACA,mBAAO;AAAA,UACT;AACA,gBAAM;AAAA,QACR;AAAA,MACF;AAAA,MAEA,MAAa,aAAa,MAA8C;AACtE,wBAAgB,IAAI;AACpB,cAAM,YAAY,IAAI,eAAyB,gBAAK,KAAK,MAAM,IAAI,CAAC;AACpE,YAAI;AACF,kBAAQ,MAAiB,gBAAK,UAAU,IAAI,GAAG,YAAY,IACvD,YACA;AAAA,QACN,QAAQ;AACN,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,MAEA,MAAa,OAAiD;AAC5D,cAAM,UAAU,MAAiB,mBAAQ,KAAK,MAAM;AAAA,UAClD,eAAe;AAAA,QACjB,CAAC;AACD,eAAO,QAAQ;AAAA,UAAI,CAAC,UAClB,MAAM,YAAY,IACd,IAAI,eAAyB,gBAAK,KAAK,MAAM,MAAM,IAAI,CAAC,IACxD,IAAI,SAAoB,gBAAK,KAAK,MAAM,MAAM,IAAI,GAAG,MAAM,IAAI;AAAA,QACrE;AAAA,MACF;AAAA,MAEA,MAAa,WAAW,MAA6B;AACnD,wBAAgB,IAAI;AACpB,cAAiB,iBAAM,KAAK,MAAM,EAAE,WAAW,KAAK,CAAC;AACrD,cAAM,OAAO,IAAI,SAAoB,gBAAK,KAAK,MAAM,IAAI,CAAC;AAC1D,cAAiB,qBAAU,KAAK,MAAM,IAAI,EAAE,MAAM,KAAK,CAAC;AACxD,eAAO;AAAA,MACT;AAAA,MAEA,MAAa,gBAAgB,MAAkC;AAC7D,wBAAgB,IAAI;AACpB,cAAiB,iBAAM,KAAK,MAAM,EAAE,WAAW,KAAK,CAAC;AACrD,cAAM,YAAY,IAAI,eAAyB,gBAAK,KAAK,MAAM,IAAI,CAAC;AACpE,cAAiB,iBAAM,UAAU,IAAI;AACrC,eAAO;AAAA,MACT;AAAA,MAEA,MAAa,OACX,MACA,SACe;AACf,wBAAgB,IAAI;AACpB,cAAiB,cAAc,gBAAK,KAAK,MAAM,IAAI,GAAG;AAAA,UACpD,OAAO;AAAA,UACP,WAAW,SAAS,cAAc;AAAA,QACpC,CAAC;AAAA,MACH;AAAA,IACF;AAuDA,IAAM,yBAAN,MAA+D;AAAA,MACtD,YAA6B,UAA4B;AAA5B;AAAA,MAA6B;AAAA,MAA7B;AAAA,MAEpC,MAAa,QAAuB;AAClC,cAAM,IAAI,QAAc,CAACC,UAAS,WAAW;AAC3C,eAAK,SAAS,MAAM,CAAC,UAAU;AAC7B,gBAAI,MAAO,QAAO,KAAK;AAAA,gBAClB,CAAAA,SAAQ;AAAA,UACf,CAAC;AAAA,QACH,CAAC;AAAA,MACH;AAAA,MAEA,MAAa,QAAQ,KAA4B;AAC/C,cAAM,IAAI,QAAc,CAACA,UAAS,WAAW;AAC3C,eAAK,SAAS,KAAK,KAAK,CAAC,UAAU;AACjC,gBAAI,MAAO,QAAO,KAAK;AAAA,gBAClB,CAAAA,SAAQ;AAAA,UACf,CAAC;AAAA,QACH,CAAC;AAAA,MACH;AAAA,MAEA,MAAa,SACX,KACA,SAAuC,CAAC,GACH;AACrC,eAAO,MAAM,IAAI,QAAQ,CAACA,UAAS,WAAW;AAC5C,eAAK,SAAS,IAAI,KAAK,CAAC,GAAG,MAAM,GAAG,CAAC,OAAO,SAA4B;AACtE,gBAAI,MAAO,QAAO,KAAK;AAAA,gBAClB,CAAAA,SAAQ,IAAI;AAAA,UACnB,CAAC;AAAA,QACH,CAAC;AAAA,MACH;AAAA,MAEA,MAAa,SACX,KACA,SAAuC,CAAC,GACF;AACtC,eAAO,MAAM,IAAI,QAAQ,CAACA,UAAS,WAAW;AAC5C,eAAK,SAAS,IAAI,KAAK,CAAC,GAAG,MAAM,GAAG,CAAC,OAAO,QAAyB;AACnE,gBAAI,MAAO,QAAO,KAAK;AAAA,gBAClB,CAAAA,SAAQ,GAAG;AAAA,UAClB,CAAC;AAAA,QACH,CAAC;AAAA,MACH;AAAA,MAEA,MAAa,IACX,KACA,SAAuC,CAAC,GACzB;AACf,cAAM,IAAI,QAAc,CAACA,UAAS,WAAW;AAC3C,eAAK,SAAS,IAAI,KAAK,CAAC,GAAG,MAAM,GAAG,CAAC,UAAU;AAC7C,gBAAI,MAAO,QAAO,KAAK;AAAA,gBAClB,CAAAA,SAAQ;AAAA,UACf,CAAC;AAAA,QACH,CAAC;AAAA,MACH;AAAA,IACF;AA0NO,IAAM,wBAA2C;AAAA,MACtD,cAAc;AAAA,QACZ,QAAQ,MAAS,IAAe,6BAAqB;AAAA,MACvD;AAAA,MACA,UAAU,EAAE,MAAM,iBAAiB;AAAA,MACnC,WAAW;AAAA,QACT,YAAY,gBAAgB,YAAY,GAAG;AAAA,QAC3C,iBAAiB,CAAC,eAAe;AAC/B,gBAAM,QAAQ,wBAAwB,KAAK,UAAU;AACrD,cAAI,UAAU,KAAM,QAAO,QAAQ,QAAQ,MAAS;AACpD,cAAI;AACF,wBAAY,KAAK,OAAO,MAAM,CAAC,CAAC,GAAG,CAAC;AACpC,mBAAO,QAAQ,QAAQ,IAAI;AAAA,UAC7B,SAAS,OAAO;AACd,gBACE,OAAO,UAAU,YACjB,UAAU,QACV,UAAU,SACV,MAAM,SAAS,SACf;AACA,qBAAO,QAAQ,QAAQ,KAAK;AAAA,YAC9B;AACA,mBAAO,QAAQ,QAAQ,IAAI;AAAA,UAC7B;AAAA,QACF;AAAA,MACF;AAAA,MACA,WAAW;AAAA,QACT,cAAc,CAAC,aAAa;AAC1B,gBAAM,OAAO,2BAA2B,UAAU,WAAW;AAC7D,iBAAO,QAAQ;AAAA,YACb,SAAS,SAAY,SAAY,IAAI,cAAc,IAAI;AAAA,UACzD;AAAA,QACF;AAAA,QACA,SAAS,CAAC,aAAa;AACrB,gBAAM,OAAO,2BAA2B,UAAU,MAAM;AACxD,iBAAO,QAAQ;AAAA,YACb,SAAS,SAAY,SAAY,IAAI,SAAS,IAAI;AAAA,UACpD;AAAA,QACF;AAAA,QACA,wBAAwB,CAAC,cAAc;AACrC,gBAAM,OAAO,2BAA2B,WAAW,WAAW;AAC9D,iBAAO,QAAQ;AAAA,YACb,SAAS,SAAY,SAAY,IAAI,cAAc,IAAI;AAAA,UACzD;AAAA,QACF;AAAA,MACF;AAAA,MACA,WAAW;AAAA,QACT,mBAAmB,CAAC,YAClB,IAAI,YAAY,IAAI,mBAAmB,GAAG,OAAO;AAAA,MACrD;AAAA,MACA,KAAK,EAAE,MAAM,aAAa,OAAO,aAAa;AAAA,IAChD;AAEA,IAAM,qBAAN,cAAiC,OAAO;AAAA,MAC/B,UAAU,cAAoC;AACnD,cAAM,OAAO,sBAAsB,YAAY;AAC/C,cAAM,WAAsB,gBAAK,yBAAyB,GAAG,IAAI;AACjE,eAAO;AAAA,UACL,SAAS;AAAA,UACT,MAAM;AAAA,UACN,KAAQ,gBAAa,UAAU,MAAM;AAAA,QACvC;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACtlBA,SAAS,2BAA2B;AAgB7B,SAAS,cAAc,SAAiB,OAAuB;AACpE,SAAO,GAAG,OAAO;AAAA,OAAU,KAAK;AAClC;AAlBA,IAEa;AAFb;AAAA;AAAA;AAEO,IAAM,kBAAkB;AAAA,MAC7B,SAAS,GAAG,mBAAmB;AAAA,MAC/B,QAAQ,GAAG,mBAAmB;AAAA,MAC9B,QAAQ,GAAG,mBAAmB;AAAA,MAC9B,WAAW,GAAG,mBAAmB;AAAA,MACjC,MAAM,GAAG,mBAAmB;AAAA,MAC5B,SAAS,GAAG,mBAAmB;AAAA,MAC/B,KAAK,GAAG,mBAAmB;AAAA,IAC7B;AAAA;AAAA;;;ACVA,SAAS,eAAe;AAQjB,SAAS,uBAAuB,MAAqC;AAC1E,UAAQ,QAAQ,IAAI,EAAE,YAAY,GAAG;AAAA,IACnC,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAEO,SAAS,gBACd,QACkD;AAClD,SAAO,WAAW,cAAc,WAAW;AAC7C;AAEO,SAAS,eAAe,OAAe,MAAyB;AACrE,QAAM,aAAa,MAAM,KAAK,EAAE,YAAY;AAE5C,MAAI,YAAY,UAAU,GAAG;AAC3B,WAAO;AAAA,EACT;AAEA,QAAM,IAAI;AAAA,IACR;AAAA,MACE,WAAW,IAAI,KAAK,KAAK,qBAAqB,YAAY,KAAK,IAAI,CAAC;AAAA,MACpE,gBAAgB;AAAA,IAClB;AAAA,EACF;AACF;AAEA,SAAS,YAAY,OAAmC;AACtD,SAAO,YAAY,SAAS,KAAkB;AAChD;AA/CA,IAIa;AAJb;AAAA;AAAA;AAEA;AAEO,IAAM,cAAc,CAAC,QAAQ,QAAQ,OAAO,UAAU;AAAA;AAAA;;;ACJ7D,SAAS,qBAAAC,0BAAyB;AAuBlC,eAAsB,+BACpB,SACA,WACY;AACZ,SAAO,MAAM,kBAAkB,IAAI,SAAS,SAAS;AACvD;AAMO,SAAS,YAAoB;AAClC,SAAO,kBAAkB,SAAS,GAAG,OAAO,QAAQ,IAAI;AAC1D;AAEO,SAAS,YAA+B;AAC7C,SAAO,kBAAkB,SAAS,GAAG,OAAO,QAAQ;AACtD;AAEO,SAAS,eAAe,MAAkC;AAC/D,SAAO,UAAU,EAAE,IAAI;AACzB;AAEO,SAAS,uBAA2C;AACzD,SAAO,kBAAkB,SAAS,GAAG;AACvC;AAEO,SAAS,iBAAqC;AACnD,SAAO,kBAAkB,SAAS,GAAG;AACvC;AAEO,SAAS,6BAAsC;AACpD,SACE,4BACA,kBAAkB,SAAS,GAAG,kBAC9B;AAEJ;AAYO,SAAS,cAEd;AACA,SACE,kBAAkB,SAAS,GAAG,SAC7B,QAAQ;AAEb;AAEO,SAAS,eAAsC;AACpD,SAAO,kBAAkB,SAAS,GAAG,UAAU,QAAQ;AACzD;AAEO,SAAS,eAAsC;AACpD,SAAO,kBAAkB,SAAS,GAAG,UAAU,QAAQ;AACzD;AAEO,SAAS,oBAAyC;AACvD,QAAM,UAAU,kBAAkB,SAAS;AAE3C,SACE,SAAS,eACR,aAAa,EAAkD;AAEpE;AAEO,SAAS,iBAA6C;AAC3D,SAAO,kBAAkB,SAAS,GAAG,YAAY,QAAQ;AAC3D;AAEO,SAAS,eAAe,UAA4C;AACzE,QAAM,UAAU,kBAAkB,SAAS;AAE3C,MAAI,YAAY,QAAW;AACzB,YAAQ,WAAW;AACnB;AAAA,EACF;AAEA,UAAQ,WAAW;AACrB;AA/GA,IAoBM,mBACF;AArBJ;AAAA;AAAA;AAoBA,IAAM,oBAAoB,IAAIA,mBAA8C;AAAA;AAAA;;;ACpB5E,SAAS,wBAAwB;AACjC,SAAS,SAAS,MAAAC,WAAU;AAC5B,SAAS,QAAAC,aAAY;AACrB,SAAS,cAAc;AAShB,SAAS,0BAAiD;AAC/D,QAAM,QAAQ,YAAY;AAE1B,QAAM,YAAY,MAAM;AACxB,SAAO;AACT;AAEA,eAAsB,sBAAsB,MAA6B;AACvE,mBAAiB,SAAS,iBAAiB,MAAM,EAAE,UAAU,OAAO,CAAC,GAAG;AACtE,UAAM,mBAAmB,OAAO,KAAK,CAAC;AAAA,EACxC;AACF;AAEA,eAAsB,kBAAkB,MAA6B;AACnE,QAAM,mBAAmB,IAAI;AAC/B;AAEA,eAAsB,kBAAkB,MAA6B;AACnE,QAAM,IAAI,QAAc,CAACC,UAAS,WAAW;AAC3C,iBAAa,EAAE,MAAM,MAAM,CAAC,UAAU;AACpC,UAAI,UAAU,UAAa,UAAU,MAAM;AACzC,QAAAA,SAAQ;AACR;AAAA,MACF;AAEA,aAAO,KAAK;AAAA,IACd,CAAC;AAAA,EACH,CAAC;AACH;AAEA,eAAsB,oBAAoB,MAAiC;AACzE,QAAM,mBAAmB,IAAI;AAC/B;AAEA,eAAe,mBAAmB,OAA2C;AAC3E,QAAM,IAAI,QAAc,CAACA,UAAS,WAAW;AAC3C,iBAAa,EAAE,MAAM,OAAO,CAAC,UAAU;AACrC,UAAI,UAAU,UAAa,UAAU,MAAM;AACzC,QAAAA,SAAQ;AACR;AAAA,MACF;AACA,UAAI,kBAAkB,KAAK,GAAG;AAC5B,uBAAe,CAAC;AAChB,QAAAA,SAAQ;AACR;AAAA,MACF;AAEA,aAAO,KAAK;AAAA,IACd,CAAC;AAAA,EACH,CAAC;AACH;AAEA,SAAS,kBAAkB,OAAuB;AAChD,SAAQ,MAAgC,SAAS;AACnD;AAEA,eAAsB,0BACpB,QACA,WAIC;AACD,OAAK;AACL,QAAM,gBAAgB,MAAM,QAAQD,MAAK,OAAO,GAAG,uBAAuB,CAAC;AAE3E,SAAO;AAAA,IACL;AAAA,IACA,UAAUA,MAAK,eAAe,SAAS,SAAS,EAAE;AAAA,EACpD;AACF;AAEA,eAAsB,yBACpB,eACe;AACf,QAAMD,IAAG,eAAe,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC;AAC1D;AAxFA;AAAA;AAAA;AAKA;AAAA;AAAA;;;ACsGO,SAAS,cAAc,OAAwB;AACpD,SAAO,GAAG,KAAK,UAAU,kBAAkB,KAAK,GAAG,MAAM,CAAC,CAAC;AAAA;AAC7D;AAEO,SAAS,kBAAkB,OAAwB;AACxD,SAAO,GAAG,KAAK,UAAU,kBAAkB,KAAK,CAAC,CAAC;AAAA;AACpD;AAEA,SAAS,kBAAkB,OAAsC;AAC/D,MACE,UAAU,QACV,OAAO,UAAU,aACjB,OAAO,UAAU,YACjB,OAAO,UAAU,UACjB;AACA,WAAO;AAAA,EACT;AAEA,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAO,MAAM,IAAI,CAAC,SAAS,kBAAkB,IAAI,KAAK,IAAI;AAAA,EAC5D;AAEA,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO;AAAA,EACT;AAEA,SAAO,mBAAmB,KAAgC;AAC5D;AAEA,SAAS,mBAAmB,OAA0C;AACpE,QAAM,UAAU,OAAO,QAAQ,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,UAAU,GAAG,WAAW;AAAA,IACvE;AAAA,IACA;AAAA,IACA,UAAU,sBAAsB,IAAI,GAAG,KAAK,OAAO;AAAA,IACnD,OAAO;AAAA,EACT,EAAE;AACF,QAAM,UAAoC,CAAC;AAE3C,aAAW,SAAS,QAAQ;AAAA,IAC1B,CAAC,MAAM,UAAU,KAAK,WAAW,MAAM,YAAY,KAAK,QAAQ,MAAM;AAAA,EACxE,GAAG;AACD,UAAM,eAAe,kBAAkB,MAAM,KAAK;AAElD,QAAI,iBAAiB,QAAW;AAC9B,cAAQ,MAAM,GAAG,IAAI;AAAA,IACvB;AAAA,EACF;AAEA,SAAO;AACT;AA5JA,IAQM;AARN;AAAA;AAAA;AAQA,IAAM,wBAAwB,IAAI;AAAA,MAChC;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,EAAE,IAAI,CAAC,KAAK,UAAU,CAAC,KAAK,KAAK,CAAC;AAAA,IACpC;AAAA;AAAA;;;ACzGA,SAAS,uBAAAG,4BAA2B;AAI7B,SAAS,oBAAoB,UAA0B;AAC5D,MAAI,aAAa,MAAM,4BAA4B,KAAK,QAAQ,GAAG;AACjE,WAAO;AAAA,EACT;AAEA,SAAO,IAAI,SAAS,WAAW,KAAK,OAAO,CAAC;AAC9C;AAEO,SAAS,mBAAmB,YAAuC;AACxE,SAAO,WAAW,IAAI,mBAAmB,EAAE,KAAK,GAAG;AACrD;AAEO,SAAS,iBAAiB,YAAuC;AACtE,SAAO,mBAAmB,CAACA,sBAAqB,GAAG,UAAU,CAAC;AAChE;AAlBA,IAEM;AAFN;AAAA;AAAA;AAEA,IAAM,8BAA8B;AAAA;AAAA;;;ACG7B,SAAS,eAAe,OAA0C;AACvE,QAAM,QAAQ,gBAAgB,KAAK;AACnC,SAAO,MAAM,WAAW,IAAI,KAAK,GAAG,MAAM,KAAK,IAAI,CAAC;AAAA;AACtD;AAEA,SAAS,gBACP,OACA,SAAS,IACU;AACnB,SAAO,MAAM,QAAQ,CAAC,MAAM,UAAU;AACpC,UAAM,OAAO,UAAU,MAAM,SAAS;AACtC,UAAM,SAAS,OAAO,kBAAQ;AAC9B,UAAM,cAAc,GAAG,MAAM,GAAG,OAAO,QAAQ,UAAK;AAEpD,WAAO;AAAA,MACL,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,KAAK;AAAA,MAC/B,GAAG,gBAAgB,KAAK,UAAU,WAAW;AAAA,IAC/C;AAAA,EACF,CAAC;AACH;AAxBA;AAAA;AAAA;AAAA;AAAA;;;ACAA,SAAS,WAAAC,gBAAe;AACxB,SAAS,cAAAC,aAAY,UAAU,WAAAC,gBAAe;AAE9C;AAAA,EACE,6BAA6B;AAAA,EAC7B,4BAA4B;AAAA,OAEvB;AAWA,SAAS,yBAAyB,KAAkC;AACzE,QAAM,SAAS,iCAAiC,GAAG;AACnD,MACE,OAAO,gBAAgB,UACvB,OAAO,YAAY,WAAW,aAAa,GAC3C;AACA,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,aAAa,sBAAsB,OAAO,WAAW;AAAA,EACvD;AACF;AAEO,SAAS,0BACd,aACA,WACA,MAAM,UAAU,GACR;AACR,MAAI,UAAU;AACd,MAAID,YAAW,WAAW,GAAG;AAC3B,UAAM,YAAY,SAAS,KAAK,WAAW;AAC3C,QACE,cAAc,MACd,CAAC,UAAU,WAAW,IAAI,KAC1B,CAACA,YAAW,SAAS,GACrB;AACA,gBAAU;AAAA,IACZ;AAAA,EACF;AACA,SAAO,kCAAkC,SAAS,SAAS;AAC7D;AAEO,SAAS,gCACd,KAC0C;AAC1C,MAAI;AACJ,MAAI;AACF,aAAS,iCAAiC,GAAG;AAAA,EAC/C,QAAQ;AACN,WAAO;AAAA,EACT;AAEA,QAAM,UAAU,OAAO;AACvB,MACE,YAAY,UACZ,YAAY,OACZ,QAAQ,WAAW,IAAI,KACvB,QAAQ,WAAW,aAAa,KAChCA,YAAW,OAAO,GAClB;AACA,WAAO;AAAA,EACT;AAEA,QAAM,mBAAmB,UAAU;AACnC,SAAO;AAAA,IACL,UAAU;AAAA,IACV,qBAAqBC,SAAQ,kBAAkB,OAAO;AAAA,IACtD;AAAA,EACF;AACF;AAEA,SAAS,sBAAsB,SAAyB;AACtD,MAAI,YAAY,IAAK,QAAO,oBAAoB;AAChD,MAAI,QAAQ,WAAW,IAAI,GAAG;AAC5B,WAAOA,SAAQ,oBAAoB,GAAG,QAAQ,MAAM,CAAC,CAAC;AAAA,EACxD;AACA,SAAOA,SAAQ,UAAU,GAAG,OAAO;AACrC;AAEA,SAAS,sBAA8B;AACrC,QAAM,kBAAkB,eAAe,MAAM,GAAG,KAAK;AACrD,SAAO,oBAAoB,UAAa,oBAAoB,KACxDF,SAAQ,IACR;AACN;AA7FA;AAAA;AAAA;AASA;AAAA;AAAA;;;ACTA,SAAS,YAAY,gBAAAG,qBAAoB;AACzC,SAAS,WAAAC,UAAS,QAAAC,OAAM,OAAO,WAAAC,gBAAe;AAI9C,SAAS,iBAAiB,MAAuB;AAC/C,QAAM,SAAkB,KAAK,MAAMH,cAAa,MAAM,MAAM,CAAC;AAE7D,SACE,OAAO,WAAW,YAClB,WAAW,QACX,UAAU,UACV,OAAO,SAAS;AAEpB;AAEA,SAAS,0CAA8D;AACrE,MAAI,uBAAuB,UAAU;AACrC,QAAM,oBAAoB,MAAM,oBAAoB,EAAE;AAEtD,SAAO,MAAM;AACX,eAAW,iBAAiB;AAAA,MAC1BE,MAAK,sBAAsB,cAAc;AAAA,MACzCA,MAAK,sBAAsB,YAAY,OAAO,cAAc;AAAA,IAC9D,GAAG;AACD,UAAI,WAAW,aAAa,KAAK,iBAAiB,aAAa,GAAG;AAChE,eAAO;AAAA,MACT;AAAA,IACF;AAEA,QAAI,yBAAyB,mBAAmB;AAC9C,aAAO;AAAA,IACT;AAEA,2BAAuBD,SAAQ,oBAAoB;AAAA,EACrD;AACF;AAEA,SAAS,yBAAiC;AACxC,QAAM,+BACJ,WACA;AAEF,QAAM,iBAAiB;AAAA,IACrB,OAAO,iCAAiC,WACpCE,SAAQ,8BAA8B,iBAAiB,IACvD;AAAA,IACJ,wCAAwC;AAAA,EAC1C;AAEA,aAAW,iBAAiB,gBAAgB;AAC1C,QAAI,kBAAkB,UAAa,WAAW,aAAa,GAAG;AAC5D,aAAO;AAAA,IACT;AAAA,EACF;AAEA,QAAM,IAAI,MAAM,mCAAmC;AACrD;AAEO,SAAS,iBAAyB;AACvC,QAAM,kBAAkB,uBAAuB;AAC/C,QAAM,SAAkB,KAAK,MAAMH,cAAa,iBAAiB,MAAM,CAAC;AAExE,MACE,OAAO,WAAW,YAClB,WAAW,QACX,aAAa,UACb,OAAO,OAAO,YAAY,UAC1B;AACA,WAAO,OAAO;AAAA,EAChB;AAEA,QAAM,IAAI,MAAM,8BAA8B,eAAe,EAAE;AACjE;AAzEA;AAAA;AAAA;AAGA;AAAA;AAAA;;;ACHA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;;;ACPA,SAAS,+BAA+B;AAGxC,SAAS,QAAAI,aAAY;AACrB,SAAS,WAAAC,gBAAe;AAsBxB,eAAsB,uBACpB,SAC4B;AAC5B,SAAO,MAAM,wBAAwB,OAAO,aAAa;AACvD,WAAO,MAAM,iCAAiC,UAAU,OAAO;AAAA,EACjE,CAAC;AACH;AAEA,eAAsB,0BACpB,SACA,OAC4B;AAC5B,QAAM,aAAa,2BAA2B,SAAS,KAAK;AAE5D,SAAO,MAAM,wBAAwB,OAAO,aAAa;AACvD,UAAM,kCAAkC,UAAU,SAAS,UAAU;AACrE,WAAO;AAAA,EACT,CAAC;AACH;AAEA,eAAsB,oBACpB,SACA,KACA,OAC4B;AAC5B,SAAO,MAAM,wBAAwB,OAAO,aAAa;AACvD,UAAM,UAAU,MAAM,iCAAiC,UAAU,OAAO;AACxE,UAAM,OAAO,2BAA2B,SAAS;AAAA,MAC/C,GAAG;AAAA,MACH,CAAC,wBAAwB,SAAS,GAAG,CAAC,GAAG;AAAA,IAC3C,CAAC;AAED,UAAM,kCAAkC,UAAU,SAAS,IAAI;AAC/D,WAAO;AAAA,EACT,CAAC;AACH;AAEA,eAAsB,uBACpB,SACA,KAC4B;AAC5B,SAAO,MAAM,wBAAwB,OAAO,aAAa;AACvD,UAAM,UAAU,MAAM,iCAAiC,UAAU,OAAO;AACxE,UAAM,gBAAgB,wBAAwB,SAAS,GAAG;AAC1D,UAAM,EAAE,CAAC,aAAa,GAAG,UAAU,GAAG,UAAU,IAAI;AACpD,UAAM,OAAO,2BAA2B,SAAS,SAAS;AAE1D,UAAM,kCAAkC,UAAU,SAAS,IAAI;AAC/D,WAAO;AAAA,EACT,CAAC;AACH;AAEA,eAAsB,wBACpB,SAC4B;AAC5B,SAAO,MAAM,0BAA0B,SAAS,CAAC,CAAC;AACpD;AAEO,SAAS,wBACd,OACgC;AAChC,MAAI,UAAU,aAAa;AACzB,WAAO;AAAA,EACT;AAEA,SAAO,sBAAsB,KAAK,CAAC,YAAY,YAAY,KAAK;AAClE;AAEO,SAAS,uBACd,SACA,OACmB;AACnB,MACG,YAAY,SAAS,YAAY,gBAClC,MAAM,WAAW,QACjB;AACA,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,QAAQ;AAAA,EACV;AACF;AAEO,SAAS,wBACd,SACA,KACQ;AACR,QAAM,aAAa,IAAI,KAAK;AAE5B,MAAI,eAAe,IAAI;AACrB,UAAM,IAAI,MAAM,6BAA6B;AAAA,EAC/C;AAEA,MAAI,YAAY,SAAS,YAAY,cAAc;AACjD,YAAQ,YAAY;AAAA,MAClB,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACX;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,2BACd,SACA,OACmB;AACnB,UAAQ,SAAS;AAAA,IACf,KAAK;AACH,aAAO,yBAAyB,KAAK;AAAA,IACvC,KAAK;AACH,aAAO,kBAAkB,KAAK;AAAA,IAChC,KAAK;AACH,aAAO,yBAAyB,KAAK;AAAA,IACvC,KAAK;AACH,aAAO,wBAAwB,KAAK;AAAA,EACxC;AACF;AAEA,eAAe,wBACb,WACY;AACZ,QAAM,WAAW,MAAM;AAAA,IACrB,IAAI;AAAA,MACFD,MAAK,eAAe,KAAKA,MAAKC,SAAQ,GAAG,YAAY,GAAG,aAAa;AAAA,IACvE;AAAA,IACA;AAAA,EACF;AAEA,MAAI;AACF,WAAO,MAAM,UAAU,QAAQ;AAAA,EACjC,UAAE;AACA,UAAM,SAAS,MAAM;AAAA,EACvB;AACF;AAEA,eAAe,iCACb,UACA,SAC4B;AAC5B,QAAM,QAAQ,MAAM,SAAS;AAAA,IAC3B;AAAA,IACA,CAAC,OAAO;AAAA,IACR,CAAC,QAAQ,OAAO,IAAI,UAAU;AAAA,EAChC;AAEA,SAAO,UAAU,SAAY,CAAC,IAAI,iBAAiB,SAAS,KAAK;AACnE;AAEA,eAAe,kCACb,UACA,SACA,OACe;AACf,QAAM,SAAS;AAAA,IACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,CAAC,SAAS,KAAK,UAAU,KAAK,GAAG,KAAK,IAAI,CAAC;AAAA,EAC7C;AACF;AAEA,SAAS,iBACP,SACA,OACmB;AACnB,MAAI;AAEJ,MAAI;AACF,aAAS,KAAK,MAAM,KAAK;AAAA,EAC3B,SAAS,OAAO;AACd,UAAM,IAAI;AAAA,MACR,iCAAiC,OAAO,KAAK,YAAY,KAAK,CAAC;AAAA,IACjE;AAAA,EACF;AAEA,MAAI,WAAW,QAAQ,OAAO,WAAW,YAAY,MAAM,QAAQ,MAAM,GAAG;AAC1E,UAAM,IAAI;AAAA,MACR,gCAAgC,OAAO;AAAA,IACzC;AAAA,EACF;AAEA,SAAO,2BAA2B,SAAS,MAA2B;AACxE;AAEA,SAAS,yBAAyB,OAA6C;AAC7E,QAAM,cAAc,oBAAI,IAAI;AAAA,IAC1B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACD,QAAM,mBAAmB,oBAAI,IAAI,CAAC,UAAU,mBAAmB,CAAC;AAChE,QAAM,OAAgC,CAAC;AAEvC,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,KAAK,GAAG;AAChD,QAAI,CAAC,YAAY,IAAI,GAAG,GAAG;AACzB,YAAM,IAAI,MAAM,kCAAkC,GAAG,EAAE;AAAA,IACzD;AACA,QAAI,QAAQ,cAAc;AACxB,YAAM,SACJ,OAAO,UAAU,WACb,QACA,OAAO,UAAU,WACf,OAAO,KAAK,IACZ;AAER,UAAI,CAAC,OAAO,UAAU,MAAM,KAAK,UAAU,GAAG;AAC5C,cAAM,IAAI,MAAM,mDAAmD;AAAA,MACrE;AACA,WAAK,GAAG,IAAI;AACZ;AAAA,IACF;AACA,QAAI,OAAO,UAAU,YAAY,MAAM,KAAK,MAAM,IAAI;AACpD,YAAM,IAAI,MAAM,cAAc,GAAG,8BAA8B;AAAA,IACjE;AACA,UAAM,aAAa,MAAM,KAAK;AAE9B,QAAI,QAAQ,cAAc,CAAC,iBAAiB,IAAI,UAAU,GAAG;AAC3D,YAAM,IAAI,MAAM,gCAAgC,UAAU,EAAE;AAAA,IAC9D;AAEA,SAAK,GAAG,IAAI;AAAA,EACd;AAEA,SAAO;AACT;AAEA,SAAS,kBAAkB,OAA6C;AACtE,QAAM,cAAc,oBAAI,IAAI;AAAA,IAC1B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACD,QAAM,mBAAmB,oBAAI,IAAI;AAAA,IAC/B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACD,QAAM,OAAgC,CAAC;AAEvC,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,KAAK,GAAG;AAChD,QAAI,CAAC,YAAY,IAAI,GAAG,GAAG;AACzB,YAAM,IAAI,MAAM,2BAA2B,GAAG,EAAE;AAAA,IAClD;AACA,QAAI,OAAO,UAAU,YAAY,MAAM,KAAK,MAAM,IAAI;AACpD,YAAM,IAAI,MAAM,OAAO,GAAG,8BAA8B;AAAA,IAC1D;AACA,UAAM,aAAa,MAAM,KAAK;AAE9B,QAAI,QAAQ,cAAc,CAAC,iBAAiB,IAAI,UAAU,GAAG;AAC3D,YAAM,IAAI,MAAM,yBAAyB,UAAU,EAAE;AAAA,IACvD;AAEA,SAAK,GAAG,IAAI;AAAA,EACd;AAEA,SAAO;AACT;AAEA,SAAS,yBAAyB,OAA6C;AAC7E,QAAM,cAAc,oBAAI,IAAI,CAAC,OAAO,SAAS,CAAC;AAC9C,QAAM,OAAgC,CAAC;AAEvC,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,KAAK,GAAG;AAChD,QAAI,CAAC,YAAY,IAAI,GAAG,GAAG;AACzB,YAAM,IAAI,MAAM,kCAAkC,GAAG,EAAE;AAAA,IACzD;AACA,UAAM,SACJ,OAAO,UAAU,WACb,QACA,OAAO,UAAU,WACf,OAAO,KAAK,IACZ;AAER,QAAI,CAAC,OAAO,UAAU,MAAM,KAAK,UAAU,GAAG;AAC5C,YAAM,IAAI,MAAM,cAAc,GAAG,8BAA8B;AAAA,IACjE;AACA,SAAK,GAAG,IAAI;AAAA,EACd;AAEA,SAAO;AACT;AAEA,SAAS,wBAAwB,OAA6C;AAC5E,QAAM,cAAc,oBAAI,IAAI,CAAC,UAAU,CAAC;AACxC,QAAM,mBAAmB,oBAAI,IAAI,CAAC,OAAO,OAAO,CAAC;AACjD,QAAM,OAAgC,CAAC;AAEvC,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,KAAK,GAAG;AAChD,QAAI,CAAC,YAAY,IAAI,GAAG,GAAG;AACzB,YAAM,IAAI,MAAM,iCAAiC,GAAG,EAAE;AAAA,IACxD;AACA,QAAI,OAAO,UAAU,YAAY,MAAM,KAAK,MAAM,IAAI;AACpD,YAAM,IAAI,MAAM,aAAa,GAAG,8BAA8B;AAAA,IAChE;AACA,UAAM,aAAa,MAAM,KAAK;AAE9B,QAAI,QAAQ,cAAc,CAAC,iBAAiB,IAAI,UAAU,GAAG;AAC3D,YAAM,IAAI,MAAM,+BAA+B,UAAU,EAAE;AAAA,IAC7D;AAEA,SAAK,GAAG,IAAI;AAAA,EACd;AAEA,SAAO;AACT;AAEA,SAAS,YAAY,OAAwB;AAC3C,SAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAC9D;AA9VA,IAOa,uBAWP;AAlBN;AAAA;AAAA;AACA;AACA;AAKO,IAAM,wBAAwB;AAAA,MACnC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAMA,IAAM,0BAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;AClBhC,SAAS,SAAS;AAgElB,eAAsB,cAAc,SAEb;AACrB,QAAM,CAAC,WAAW,UAAU,YAAY,SAAS,IAAI,MAAM,QAAQ,IAAI;AAAA,IACrE,uBAAuB,YAAY;AAAA,IACnC,uBAAuB,KAAK;AAAA,IAC5B,uBAAuB,YAAY;AAAA,IACnC,uBAAuB,WAAW;AAAA,EACpC,CAAC;AACD,QAAM,kBACJ,SAAS,YAAY,SACjB,SACA,qBAAqB,QAAQ,OAAO;AAC1C,QAAM,MAAM,gBAAgB;AAAA,IAC1B,QAAQ,aAAa,iBAAiB,QAAQ,WAAW,SAAS,MAAM,CAAC;AAAA,IACzE,SAAS;AAAA,MACP,iBAAiB;AAAA,MACjB,WAAW,SAAS,OAAO;AAAA,IAC7B;AAAA,IACA,OAAO,aAAa,iBAAiB,OAAO,WAAW,SAAS,KAAK,CAAC;AAAA,IACtE,MAAM,aAAa,iBAAiB,MAAM,WAAW,SAAS,IAAI,CAAC;AAAA,IACnE,UAAU;AAAA,MACR,iBAAiB;AAAA,MACjB,aAAa,SAAS,QAAQ;AAAA,IAChC;AAAA,EACF,CAAC;AACD,QAAM,oBAAoB,oBAAoB,WAAW,OAAO;AAChE,QAAM,gBAAgB,oBAAoB,WAAW,GAAG;AACxD,QAAM,kBAAkB,sBAAsB,SAAS;AACvD,QAAM,kBAAkB,sBAAsB,SAAS;AAEvD,SAAO;AAAA,IACL,GAAI,kBAAkB,UAAa,sBAAsB,SACrD,CAAC,IACD;AAAA,MACE,YAAY;AAAA,QACV,GAAI,kBAAkB,SAAY,CAAC,IAAI,EAAE,KAAK,cAAc;AAAA,QAC5D,GAAI,sBAAsB,SACtB,CAAC,IACD,EAAE,SAAS,kBAAkB;AAAA,MACnC;AAAA,IACF;AAAA,IACJ,GAAI,oBAAoB,SAAY,CAAC,IAAI,EAAE,WAAW,gBAAgB;AAAA,IACtE,GAAI,QAAQ,SAAY,CAAC,IAAI,EAAE,IAAI;AAAA,IACnC,GAAI,oBAAoB,SAAY,CAAC,IAAI,EAAE,WAAW,gBAAgB;AAAA,EACxE;AACF;AAEA,SAAS,sBACP,OACoC;AACpC,QAAM,QAAQ,SAAS,CAAC;AACxB,QAAM,WAAW,sBAAsB,MAAM,QAAQ;AACrD,QAAM,SAAS,WAAW,MAAM,MAAM;AACtC,QAAM,UAAU,WAAW,MAAM,OAAO;AACxC,QAAM,aACJ,OAAO,MAAM,eAAe,YAC5B,OAAO,UAAU,MAAM,UAAU,KACjC,MAAM,aAAa,IACf,MAAM,aACN;AACN,QAAM,QAAQ,WAAW,MAAM,KAAK;AACpC,QAAM,OAAO,WAAW,MAAM,IAAI;AAElC,MACE,aAAa,UACb,UAAU,UACT,aAAa,uBAAuB,YAAY,UAChD,aAAa,YAAY,YAAY,QACtC;AACA,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,GAAI,WAAW,SAAY,CAAC,IAAI,EAAE,OAAO;AAAA,IACzC,GAAI,YAAY,SAAY,CAAC,IAAI,EAAE,QAAQ;AAAA,IAC3C,GAAI,eAAe,SAAY,CAAC,IAAI,EAAE,WAAW;AAAA,IACjD,GAAI,UAAU,SAAY,CAAC,IAAI,EAAE,MAAM;AAAA,IACvC,GAAI,SAAS,SAAY,CAAC,IAAI,EAAE,KAAK;AAAA,IACrC,GAAI,aAAa,SAAY,CAAC,IAAI,EAAE,SAAS;AAAA,EAC/C;AACF;AAEA,SAAS,qBAAqB,OAA4C;AACxE,QAAM,aAAa,gBAAgB,KAAK;AAExC,MAAI,eAAe,QAAW;AAC5B,UAAM,IAAI;AAAA,MACR;AAAA,QACE;AAAA,QACA,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAEA,MAAI;AAEJ,MAAI;AACF,iBAAa,KAAK,MAAM,UAAU;AAAA,EACpC,SAAS,OAAO;AACd,UAAM,IAAI;AAAA,MACR;AAAA,QACE,uBAAuBC,aAAY,KAAK,CAAC;AAAA,QACzC,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAEA,QAAM,SAAS,sBAAsB,UAAU,UAAU;AAEzD,MAAI,CAAC,OAAO,SAAS;AACnB,UAAM,IAAI;AAAA,MACR;AAAA,QACE,yBAAyB,OAAO,MAAM,OACnC;AAAA,UACC,CAAC,UAAU,GAAG,MAAM,KAAK,KAAK,GAAG,KAAK,QAAQ,KAAK,MAAM,OAAO;AAAA,QAClE,EACC,KAAK,IAAI,CAAC;AAAA,QACb,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAEA,QAAM,QAAQ,OAAO,KAAK,OAAO,OAAO;AACxC,QAAM,WAAW,MAAM,YAAY,oBAAoB,KAAK;AAC5D,QAAM,UAAU,qBAAqB,KAAK;AAC1C,QAAM,SAAS,gBAAgB;AAAA,IAC7B,QAAQ,MAAM;AAAA,IACd;AAAA,IACA,OAAO,MAAM;AAAA,IACb,MAAM,MAAM;AAAA,IACZ;AAAA,EACF,CAAC;AAED,MAAI,WAAW,QAAW;AACxB,UAAM,IAAI;AAAA,MACR;AAAA,QACE;AAAA,QACA,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,oBAAoB,OAKD;AAC1B,MACE,MAAM,aAAa,WAClB,MAAM,YAAY,UACjB,MAAM,YAAY,UAClB,MAAM,uBAAuB,SAC/B;AACA,WAAO;AAAA,EACT;AAEA,SAAO,MAAM;AACf;AAEA,SAAS,mCAAmC,OAErB;AACrB,MAAI,MAAM,uBAAuB,QAAW;AAC1C,WAAO;AAAA,EACT;AAEA,QAAM,SAAS;AAEf,MAAI,CAAC,MAAM,mBAAmB,SAAS,MAAM,GAAG;AAC9C,UAAM,IAAI;AAAA,MACR;AAAA,QACE;AAAA,QACA,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAEA,SAAO,MAAM,mBAAmB,MAAM,GAAG,CAAC,OAAO,MAAM;AACzD;AAEA,SAAS,qBAAqB,OAIP;AACrB,MAAI,MAAM,YAAY,QAAW;AAC/B,WAAO,MAAM;AAAA,EACf;AACA,MAAI,MAAM,YAAY,QAAW;AAC/B,WAAO,MAAM;AAAA,EACf;AAEA,SAAO,mCAAmC,KAAK;AACjD;AAEA,SAAS,gBAAgB,OAMJ;AACnB,MACE,MAAM,WAAW,UACjB,MAAM,YAAY,UAClB,MAAM,UAAU,UAChB,MAAM,SAAS,UACf,MAAM,aAAa,QACnB;AACA,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,GAAI,MAAM,WAAW,SAAY,CAAC,IAAI,EAAE,QAAQ,MAAM,OAAO;AAAA,IAC7D,GAAI,MAAM,YAAY,SAAY,CAAC,IAAI,EAAE,SAAS,MAAM,QAAQ;AAAA,IAChE,GAAI,MAAM,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,MAAM,MAAM;AAAA,IAC1D,GAAI,MAAM,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,MAAM,KAAK;AAAA,IACvD,GAAI,MAAM,aAAa,SAAY,CAAC,IAAI,EAAE,UAAU,MAAM,SAAS;AAAA,EACrE;AACF;AAEA,SAAS,aAAa,OAAyC;AAC7D,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO;AAAA,EACT;AAEA,QAAM,SAAS,kBAAkB,UAAU,KAAK;AAEhD,SAAO,OAAO,UAAU,OAAO,OAAO;AACxC;AAEA,SAAS,sBACP,OACoC;AACpC,QAAM,WAAW,sBAAsB,MAAM,QAAQ;AAErD,MAAI,aAAa,QAAW;AAC1B,WAAO;AAAA,EACT;AAEA,SAAO,EAAE,SAAS;AACpB;AAEA,SAAS,sBAAsB,OAA6C;AAC1E,SAAO,UAAU,SAAS,UAAU,UAAU,QAAQ;AACxD;AAEA,SAAS,sBACP,OAC4C;AAC5C,SAAO,UAAU,YAAY,UAAU,sBACnC,QACA;AACN;AAEA,SAAS,WAAW,OAAoC;AACtD,SAAO,OAAO,UAAU,WAAW,QAAQ;AAC7C;AAEA,SAAS,oBAAoB,OAAoC;AAC/D,SAAO,OAAO,UAAU,YAAY,OAAO,UAAU,KAAK,KAAK,QAAQ,IACnE,QACA;AACN;AAEA,SAAS,aACP,OACA,QACe;AACf,SAAO,SAAS;AAClB;AAEA,SAAS,gBAAgB,OAA+C;AACtE,QAAM,aAAa,OAAO,KAAK;AAE/B,SAAO,eAAe,UAAa,eAAe,KAAK,SAAY;AACrE;AAEA,SAASA,aAAY,OAAwB;AAC3C,SAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAC9D;AA7VA,IAKM,qBAOA,mBACA;AAbN;AAAA;AAAA;AAEA;AACA;AAEA,IAAM,sBAAsB;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,IAAM,oBAAoB,EAAE,KAAK,mBAAmB;AACpD,IAAM,wBAAwB,EAAE,OAAO;AAAA,MACrC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,MACnC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,MACpC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,MACpC,oBAAoB,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,MAC/C,KAAK,EACF,OAAO;AAAA,QACN,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,QACnC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,QACpC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,QACpC,oBAAoB,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,QAC/C,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,QAClC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,QACjC,UAAU,kBAAkB,SAAS;AAAA,MACvC,CAAC,EACA,SAAS;AAAA,MACZ,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,MAClC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,MACjC,UAAU,kBAAkB,SAAS;AAAA,IACvC,CAAC;AAAA;AAAA;;;AC9BD,SAAS,OAAO,iBAAiB;AACjC,SAAS,oBAAoB;AAC7B,SAAS,8BAA8B;AA4BvC,eAAsB,sBAAmD;AACvE,QAAM,SAAS,MAAM,uBAAuB,YAAY;AAExD,SAAO;AAAA,IACL,GAAI,OAAO,OAAO,WAAW,WAAW,EAAE,QAAQ,OAAO,OAAO,IAAI,CAAC;AAAA,IACrE,GAAI,OAAO,OAAO,YAAY,WAAW,EAAE,SAAS,OAAO,QAAQ,IAAI,CAAC;AAAA,IACxE,GAAI,OAAO,OAAO,eAAe,WAC7B,EAAE,YAAY,OAAO,WAAW,IAChC,CAAC;AAAA,IACL,GAAI,OAAO,OAAO,UAAU,WAAW,EAAE,OAAO,OAAO,MAAM,IAAI,CAAC;AAAA,IAClE,GAAI,OAAO,OAAO,SAAS,WAAW,EAAE,MAAM,OAAO,KAAK,IAAI,CAAC;AAAA,IAC/D,GAAI,OAAO,OAAO,aAAa,WAC3B,EAAE,UAAU,uBAAuB,OAAO,QAAQ,EAAE,IACpD,CAAC;AAAA,EACP;AACF;AAEA,eAAsB,eACpB,OACA,SAA6B,CAAC,GACC;AAC/B,QAAM,aAAa,MAAM,KAAK;AAE9B,MAAI,eAAe,IAAI;AACrB,UAAM,IAAI,MAAM,6BAA6B;AAAA,EAC/C;AAEA,QAAM,WAAW,yBAAyB,OAAO,QAAQ;AACzD,QAAM,QAAQ,sBAAsB,OAAO,KAAK;AAChD,QAAM,iBAAiB,qBAAqB,UAAU,OAAO,MAAM;AACnE,QAAM,kBAAkB,+BAA+B,UAAU,MAAM;AACvE,QAAM,SAAS,MAAM,MAAM;AAAA,IACzB,OAAO;AAAA,IACP,GAAI,oBAAoB,SAAY,CAAC,IAAI,EAAE,gBAAgB;AAAA,IAC3D,OAAO;AAAA,EACT,CAAC;AAED,SAAO;AAAA,IACL,YAAY,OAAO,UAAU;AAAA,IAC7B,WAAW,OAAO;AAAA,IAClB;AAAA,IACA;AAAA,IACA,GAAI,OAAO,MAAM,WAAW,SACxB,CAAC,IACD,EAAE,OAAO,EAAE,QAAQ,OAAO,MAAM,OAAO,EAAE;AAAA,EAC/C;AACF;AAEO,SAAS,kCACd,QAC8B;AAC9B,QAAM,WAAW,yBAAyB,OAAO,QAAQ;AACzD,QAAM,QAAQ,sBAAsB,OAAO,KAAK;AAChD,QAAM,iBAAiB,qBAAqB,UAAU,OAAO,MAAM;AACnE,QAAM,kBAAkB,+BAA+B,UAAU,MAAM;AAEvE,SAAO;AAAA,IACL,GAAI,OAAO,eAAe,SACtB,CAAC,IACD,EAAE,YAAY,OAAO,WAAW;AAAA,IACpC,UAAU,wBAAwB,UAAU,OAAO,MAAM;AAAA,IACzD;AAAA,IACA,YAAY,OAAO,OAAO,YAAY;AACpC,YAAM,aAAyB,CAAC;AAChC,UAAI,SAAS;AAEb,iBAAW,SAAS,WAAW,OAAO,oBAAoB,GAAG;AAC3D,iBAAS,QAAQ,eAAe;AAChC,cAAM,SAAS,MAAM,UAAU;AAAA,UAC7B,GAAI,SAAS,WAAW,SACpB,CAAC,IACD,EAAE,aAAa,QAAQ,OAAO;AAAA,UAClC,OAAO;AAAA,UACP,GAAI,oBAAoB,SAAY,CAAC,IAAI,EAAE,gBAAgB;AAAA,UAC3D,QAAQ,CAAC,GAAG,KAAK;AAAA,QACnB,CAAC;AAED,mBAAW,KAAK,GAAG,OAAO,UAAU;AACpC,kBAAU,OAAO,MAAM,UAAU;AAAA,MACnC;AACA,aAAO;AAAA,QACL;AAAA,QACA,GAAI,WAAW,IAAI,CAAC,IAAI,EAAE,OAAO;AAAA,MACnC;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,wBACP,UACA,OACA,QACQ;AACR,SAAO,KAAK,UAAU;AAAA,IACpB,GAAI,OAAO,YAAY,SAAY,CAAC,IAAI,EAAE,SAAS,OAAO,QAAQ;AAAA,IAClE,GAAI,OAAO,eAAe,SACtB,CAAC,IACD,EAAE,YAAY,OAAO,WAAW;AAAA,IACpC;AAAA,IACA;AAAA,EACF,CAAC;AACH;AAEA,UAAU,WACR,OACA,MAC6B;AAC7B,WAAS,QAAQ,GAAG,QAAQ,MAAM,QAAQ,SAAS,MAAM;AACvD,UAAM,MAAM,MAAM,OAAO,QAAQ,IAAI;AAAA,EACvC;AACF;AAQA,SAAS,qBACP,UACA,OACA,QACA;AACA,UAAQ,UAAU;AAAA,IAChB,KAAK,UAAU;AACb,UAAI,OAAO,YAAY,QAAW;AAChC,cAAM,IAAI;AAAA,UACR;AAAA,YACE;AAAA,YACA,gBAAgB;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAEA,aAAO,aAAa;AAAA,QAClB,GAAI,OAAO,WAAW,SAAY,CAAC,IAAI,EAAE,QAAQ,OAAO,OAAO;AAAA,QAC/D,GAAI,OAAO,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,OAAO,KAAK;AAAA,MAC3D,CAAC,EAAE,eAAe,KAAK;AAAA,IACzB;AAAA,IACA,KAAK,qBAAqB;AACxB,UAAI,OAAO,YAAY,QAAW;AAChC,cAAM,IAAI;AAAA,UACR;AAAA,YACE;AAAA,YACA,gBAAgB;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAEA,aAAO,uBAAuB;AAAA,QAC5B,SAAS,OAAO;AAAA,QAChB,MAAM,OAAO,QAAQ,2BAA2B,OAAO,OAAO;AAAA,QAC9D,GAAI,OAAO,WAAW,SAAY,CAAC,IAAI,EAAE,QAAQ,OAAO,OAAO;AAAA,MACjE,CAAC,EAAE,eAAe,KAAK;AAAA,IACzB;AAAA,EACF;AACF;AAEA,SAAS,+BACP,UACA,QAC6D;AAC7D,MAAI,OAAO,eAAe,QAAW;AACnC,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,CAAC,gCAAgC,UAAU,MAAM,CAAC,GAAG;AAAA,MACnD,YAAY,OAAO;AAAA,IACrB;AAAA,EACF;AACF;AAEA,SAAS,gCACP,UACA,SACQ;AACR,MAAI,aAAa,UAAU;AACzB,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEA,SAAS,yBACP,UACsB;AACtB,MAAI,aAAa,QAAW;AAC1B,WAAO;AAAA,EACT;AAEA,QAAM,IAAI;AAAA,IACR;AAAA,MACE;AAAA,MACA,gBAAgB;AAAA,IAClB;AAAA,EACF;AACF;AAEA,SAAS,sBAAsB,OAAmC;AAChE,MAAI,UAAU,QAAW;AACvB,WAAO;AAAA,EACT;AAEA,QAAM,IAAI;AAAA,IACR;AAAA,MACE;AAAA,MACA,gBAAgB;AAAA,IAClB;AAAA,EACF;AACF;AAEA,SAAS,uBAAuB,OAAqC;AACnE,UAAQ,OAAO;AAAA,IACb,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT;AACE,YAAM,IAAI;AAAA,QACR,gCAAgC,KAAK;AAAA,MACvC;AAAA,EACJ;AACF;AAEA,SAAS,2BAA2B,SAAyB;AAC3D,MAAI;AACF,WAAO,IAAI,IAAI,OAAO,EAAE;AAAA,EAC1B,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AArQA,IA8BM;AA9BN;AAAA;AAAA;AAMA;AACA;AAuBA,IAAM,uBAAuB;AAAA;AAAA;;;AC5B7B,SAAS,uBAAuB;AAChC,SAAS,gCAAgC;AACzC,SAAS,gBAAAC,qBAAoB;AAC7B,SAAS,0BAAAC,+BAA8B;AAKhC,SAAS,gBAAgB,QAAwC;AACtE,QAAM,MAAM,OAAO;AAEnB,MAAI,KAAK,aAAa,UAAa,IAAI,UAAU,QAAW;AAC1D,UAAM,IAAI;AAAA,MACR;AAAA,QACE;AAAA,QACA,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,OAAO,oBAAoB,IAAI,UAAU,IAAI,OAAO;AAAA,MAClD,QAAQ,IAAI;AAAA,MACZ,SAAS,IAAI;AAAA,MACb,MAAM,IAAI;AAAA,IACZ,CAAC;AAAA,IACD,GAAI,OAAO,YAAY,YAAY,SAC/B,CAAC,IACD,EAAE,YAAY,OAAO,WAAW,QAAQ;AAAA,EAC9C;AACF;AAEA,SAAS,oBACP,UACA,OACA,SAKA;AACA,UAAQ,UAAU;AAAA,IAChB,KAAK,aAAa;AAChB,YAAM,YAAY,gBAAgB;AAAA,QAChC,GAAI,QAAQ,WAAW,SAAY,CAAC,IAAI,EAAE,QAAQ,QAAQ,OAAO;AAAA,QACjE,GAAI,QAAQ,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,QAAQ,KAAK;AAAA,MAC7D,CAAC;AAED,aAAO,UAAU,KAAK;AAAA,IACxB;AAAA,IACA,KAAK,UAAU;AACb,YAAM,SAAS,yBAAyB;AAAA,QACtC,GAAI,QAAQ,WAAW,SAAY,CAAC,IAAI,EAAE,QAAQ,QAAQ,OAAO;AAAA,QACjE,GAAI,QAAQ,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,QAAQ,KAAK;AAAA,MAC7D,CAAC;AAED,aAAO,OAAO,KAAK;AAAA,IACrB;AAAA,IACA,KAAK,UAAU;AACb,UAAI,QAAQ,YAAY,QAAW;AACjC,cAAM,IAAI;AAAA,UACR;AAAA,YACE;AAAA,YACA,gBAAgB;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAEA,YAAM,SAASD,cAAa;AAAA,QAC1B,GAAI,QAAQ,WAAW,SAAY,CAAC,IAAI,EAAE,QAAQ,QAAQ,OAAO;AAAA,QACjE,GAAI,QAAQ,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,QAAQ,KAAK;AAAA,MAC7D,CAAC;AAED,aAAO,OAAO,KAAK;AAAA,IACrB;AAAA,IACA,KAAK,qBAAqB;AACxB,UAAI,QAAQ,YAAY,QAAW;AACjC,cAAM,IAAI;AAAA,UACR;AAAA,YACE;AAAA,YACA,gBAAgB;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAEA,YAAM,mBAAmBC,wBAAuB;AAAA,QAC9C,SAAS,QAAQ;AAAA,QACjB,MAAM,QAAQ,QAAQC,4BAA2B,QAAQ,OAAO;AAAA,QAChE,GAAI,QAAQ,WAAW,SAAY,CAAC,IAAI,EAAE,QAAQ,QAAQ,OAAO;AAAA,MACnE,CAAC;AAED,aAAO,iBAAiB,KAAK;AAAA,IAC/B;AAAA,EACF;AACF;AAEA,SAASA,4BAA2B,SAAyB;AAC3D,MAAI;AACF,WAAO,IAAI,IAAI,OAAO,EAAE;AAAA,EAC1B,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAxGA;AAAA;AAAA;AAQA;AAAA;AAAA;;;ACuBO,SAAS,mBACd,MACA,OACA,UACA,YACA,OACwB;AACxB,QAAM,UAAU,6BAA6B,IAAI;AACjD,QAAM,QAAQ,KAAK,IAAI,UAAU,KAAK,KAAK,QAAQ,QAAQ,YAAY,CAAC;AACxE,QAAM,uBAAuB,KAAK;AAAA,IAChC;AAAA,IACA,SAAS,kBAAkB,IAAI,WAAW;AAAA,EAC5C;AACA,QAAM,cAAc,KAAK,KAAK,QAAQ,oBAAoB;AAC1D,QAAM,cAAc,QAAQ,QAAQ;AAEpC,SAAO;AAAA,IACL;AAAA,IACA,aAAa;AAAA,MACX,KAAK,KAAK,KAAK,cAAc,QAAQ,oBAAoB,WAAW;AAAA,MACpE,KAAK,KAAK,KAAK,cAAc,QAAQ,oBAAoB,WAAW;AAAA,IACtE;AAAA,IACA,QAAQ;AAAA,MACN,gBAAgB,KAAK,KAAK,QAAQ,QAAQ,0BAA0B;AAAA,MACpE,OAAO,KAAK,KAAK,QAAQ,QAAQ,iBAAiB;AAAA,MAClD,QAAQ,KAAK,KAAK,QAAQ,QAAQ,kBAAkB;AAAA,IACtD;AAAA,EACF;AACF;AAEO,SAAS,iCAAiC,OAKR;AACvC,MAAI,CAAC,MAAM,YAAY;AACrB,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,QAAqC,CAAC;AAE5C,QAAM,qBACJ,MAAM,WAAW,UAAU,IACvB,yCACA,MAAM,WAAW,UAAU,IACzB,IACA;AAER,MAAI,MAAM,kBAAkB,uBAAuB,QAAW;AAC5D,UAAM,KAAK;AAAA,MACT,SAAS,iDAAiD,kBAAkB;AAAA,MAC5E,SAAS,MAAM,WAAW;AAAA,MAC1B,MAAM;AAAA,MACN,SACE;AAAA,MACF,aAAa;AAAA,IACf,CAAC;AAAA,EACH;AAEA,MAAI,MAAM,WAAW,MAAM,KAAK,MAAM,WAAW,GAAG;AAClD,UAAM,KAAK;AAAA,MACT,SAAS;AAAA,MACT,SAAS,MAAM,WAAW;AAAA,MAC1B,MAAM;AAAA,MACN,SACE;AAAA,MACF,aAAa;AAAA,IACf,CAAC;AAAA,EACH;AAEA,SAAO;AACT;AAEO,SAAS,8BACd,KACQ;AACR,MAAI,KAAK,UAAU,QAAW;AAC5B,WAAO;AAAA,EACT;AAEA,SAAO,IAAI,aAAa,SACpB,IAAI,QACJ,GAAG,IAAI,QAAQ,IAAI,IAAI,KAAK;AAClC;AAEO,SAAS,iCAAiC,SAAyB;AACxE,MAAI,UAAU,IAAI;AAChB,WAAO,GAAG,OAAO;AAAA,EACnB;AAEA,QAAM,UAAU,KAAK,MAAM,UAAU,EAAE;AAEvC,MAAI,UAAU,IAAI;AAChB,WAAO,GAAG,OAAO;AAAA,EACnB;AAEA,SAAO,GAAG,KAAK,MAAM,UAAU,EAAE,CAAC;AACpC;AAEA,SAAS,6BAA6B,MAQpC;AACA,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO;AAAA,QACL,4BAA4B;AAAA,QAC5B,mBAAmB;AAAA,QACnB,mBAAmB;AAAA,QACnB,mBAAmB;AAAA,QACnB,oBAAoB;AAAA,QACpB,gBAAgB;AAAA,QAChB,cAAc;AAAA,MAChB;AAAA,IACF,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,QACL,4BAA4B;AAAA,QAC5B,mBAAmB;AAAA,QACnB,mBAAmB;AAAA,QACnB,mBAAmB;AAAA,QACnB,oBAAoB;AAAA,QACpB,gBAAgB;AAAA,QAChB,cAAc;AAAA,MAChB;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL,4BAA4B;AAAA,QAC5B,mBAAmB;AAAA,QACnB,mBAAmB;AAAA,QACnB,mBAAmB;AAAA,QACnB,oBAAoB;AAAA,QACpB,gBAAgB;AAAA,QAChB,cAAc;AAAA,MAChB;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL,4BAA4B;AAAA,QAC5B,mBAAmB;AAAA,QACnB,mBAAmB;AAAA,QACnB,mBAAmB;AAAA,QACnB,oBAAoB;AAAA,QACpB,gBAAgB;AAAA,QAChB,cAAc;AAAA,MAChB;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL,4BAA4B;AAAA,QAC5B,mBAAmB;AAAA,QACnB,mBAAmB;AAAA,QACnB,mBAAmB;AAAA,QACnB,oBAAoB;AAAA,QACpB,gBAAgB;AAAA,QAChB,cAAc;AAAA,MAChB;AAAA,EACJ;AACF;AAjMA,IAOa,oCACA;AARb;AAAA;AAAA;AAOO,IAAM,qCAAqC;AAC3C,IAAM,yCAAyC;AAAA;AAAA;;;ACRtD,SAAS,WAAW,UAAU,kBAAkB;AAoBzC,SAAS,0BAA0B,OAGlB;AACtB,MAAI,CAAC,MAAM,SAAS;AAClB,WAAO;AAAA,MACL,MAAM,OAAO;AAAA,MAAC;AAAA,IAChB;AAAA,EACF;AAEA,SAAO,IAAI,yBAAyB,MAAM,UAAU,QAAQ,MAAM;AACpE;AAyMA,SAAS,qBAAgC;AACvC,SAAO;AACT;AAEA,SAAS,kBACP,QAC2C;AAC3C,SAAO,OAAO,UAAU;AAC1B;AAEA,SAAS,iBAAiB,OAAuB;AAC/C,SAAO,MAAM,OAAO,CAAC;AACvB;AAEA,SAAS,mBACP,UACA,OACQ;AACR,MAAI,UAAU,QAAW;AACvB,WAAO,IAAI,QAAQ;AAAA,EACrB;AAEA,QAAM,iBAAiB,oBAAoB,KAAK;AAEhD,SAAO,mBAAmB,KACtB,IAAI,QAAQ,KACZ,IAAI,QAAQ,IAAI,cAAc;AACpC;AAEA,SAAS,2BAAmC;AAC1C,SAAO,IAAI,OAAO,CAAC;AACrB;AAEA,SAAS,gBAAgB,WAAmB,OAAuB;AACjE,SAAO,GAAG,aAAa,SAAS,CAAC,MAAM,aAAa,KAAK,CAAC;AAC5D;AAEA,SAAS,oBAAoB,OAAuB;AAClD,MAAI,YAAY;AAEhB,WAAS,QAAQ,GAAG,QAAQ,MAAM,QAAQ,SAAS,GAAG;AACpD,UAAM,UAAU,MAAM,KAAK;AAE3B,QAAI,YAAY,QAAU;AACxB,YAAM,OAAO,MAAM,QAAQ,CAAC;AAE5B,UAAI,SAAS,KAAK;AAChB,gBAAQ,oBAAoB,OAAO,QAAQ,CAAC;AAC5C;AAAA,MACF;AAEA,UAAI,SAAS,KAAK;AAChB,gBAAQ,oBAAoB,OAAO,QAAQ,CAAC;AAC5C;AAAA,MACF;AAEA;AAAA,IACF;AAEA,QAAI,YAAY,UAAa,WAAC,WAAO,GAAC,EAAC,KAAK,OAAO,GAAG;AACpD;AAAA,IACF;AAEA,iBAAa,WAAW;AAAA,EAC1B;AAEA,SAAO,UAAU,KAAK;AACxB;AAEA,SAAS,oBAAoB,OAAe,YAA4B;AACtE,WAAS,QAAQ,YAAY,QAAQ,MAAM,QAAQ,SAAS,GAAG;AAC7D,UAAM,UAAU,MAAM,KAAK;AAE3B,QAAI,YAAY,QAAW;AACzB,aAAO,MAAM;AAAA,IACf;AAEA,QAAI,WAAW,OAAO,WAAW,KAAK;AACpC,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO,MAAM;AACf;AAEA,SAAS,oBAAoB,OAAe,YAA4B;AACtE,WAAS,QAAQ,YAAY,QAAQ,MAAM,QAAQ,SAAS,GAAG;AAC7D,UAAM,UAAU,MAAM,KAAK;AAC3B,UAAM,OAAO,MAAM,QAAQ,CAAC;AAE5B,QAAI,YAAY,QAAW;AACzB,aAAO,MAAM;AAAA,IACf;AAEA,QAAI,YAAY,QAAU;AACxB,aAAO;AAAA,IACT;AAEA,QAAI,YAAY,UAAY,SAAS,MAAM;AACzC,aAAO,QAAQ;AAAA,IACjB;AAAA,EACF;AAEA,SAAO,MAAM;AACf;AAEA,SAAS,oBACP,WACA,OACoB;AACpB,MAAI,UAAU,QAAW;AACvB,WAAO;AAAA,EACT;AAEA,SAAO,GAAG,aAAa,SAAS,CAAC,IAAI,aAAa,KAAK,CAAC;AAC1D;AAEA,SAAS,UAAU,WAAmB,OAAuB;AAC3D,QAAM,QAAQ;AACd,QAAM,YAAY,SAAS,IAAI,IAAI;AACnC,QAAM,QAAQ,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,YAAY,SAAS,CAAC;AAC5D,QAAM,SAAS,KAAK,MAAM,QAAQ,KAAK;AAEvC,SAAO,IAAI,IAAI,OAAO,MAAM,CAAC,GAAG,IAAI,OAAO,QAAQ,MAAM,CAAC;AAC5D;AAEA,SAAS,aAAa,OAAuB;AAC3C,SAAO,IAAI,KAAK,aAAa,OAAO,EAAE,OAAO,KAAK;AACpD;AAxWA,IAiCM;AAjCN;AAAA;AAAA;AAiCA,IAAM,2BAAN,MAA8D;AAAA,MACnD;AAAA,MACA,WAAW,oBAAI,IAAyB;AAAA,MACjD;AAAA,MAMA,eAA8B,QAAQ,QAAQ;AAAA,MAC9C,qBAAqB;AAAA,MACrB,YAAY;AAAA,MAEL,YAAY,QAA4B;AAC7C,aAAK,UAAU;AAAA,MACjB;AAAA,MAEgB,aAAwC,OAAO,UAAU;AACvE,YAAI,KAAK,WAAW;AAClB;AAAA,QACF;AAEA,cAAM,aAAa,KAAK,aAAa,MAAM,kBAAkB,EAAE,KAAK,MAAM;AACxE,eAAK,YAAY,KAAK;AACtB,eAAK,QAAQ;AAAA,QACf,CAAC;AAED,aAAK,eAAe;AAEpB,cAAM;AAAA,MACR;AAAA,MAEA,MAAa,OAAsB;AACjC,YAAI,KAAK,WAAW;AAClB,gBAAM,KAAK,aAAa,MAAM,kBAAkB;AAChD;AAAA,QACF;AAEA,aAAK,YAAY;AAEjB,cAAM,WAAW,KAAK,aAAa,MAAM,kBAAkB,EAAE,KAAK,MAAM;AACtE,cAAI,KAAK,uBAAuB,GAAG;AACjC;AAAA,UACF;AAEA,eAAK,QAAQ,MAAM,IAAI;AACvB,eAAK,qBAAqB;AAAA,QAC5B,CAAC;AAED,aAAK,eAAe;AAEpB,cAAM;AAAA,MACR;AAAA,MAEA,YAAY,OAAqC;AAC/C,gBAAQ,MAAM,MAAM;AAAA,UAClB,KAAK;AACH,gBAAI,CAAC,MAAM,WAAW;AACpB;AAAA,YACF;AAEA,uBAAW,UAAU,MAAM,SAAS;AAClC,mBAAK,SAAS,IAAI,OAAO,IAAI;AAAA,gBAC3B,oBAAoB;AAAA,gBACpB,gBAAgB;AAAA,gBAChB,GAAI,OAAO,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,OAAO,MAAM;AAAA,gBAC5D,OAAO,OAAO;AAAA,gBACd,GAAI,OAAO,cAAc,SACrB,CAAC,IACD,EAAE,WAAW,OAAO,UAAU;AAAA,cACpC,CAAC;AAAA,YACH;AACA;AAAA,UACF,KAAK,mBAAmB;AACtB,kBAAM,SAAS,KAAK,SAAS,IAAI,MAAM,EAAE,KAAK;AAAA,cAC5C,oBAAoB;AAAA,cACpB,gBAAgB;AAAA,YAClB;AAEA,mBAAO,qBAAqB,MAAM;AAClC,mBAAO,iBAAiB,MAAM;AAC9B,iBAAK,SAAS,IAAI,MAAM,IAAI,MAAM;AAClC;AAAA,UACF;AAAA,UACA,KAAK;AACH,iBAAK,UAAU;AAAA,cACb,gBAAgB,MAAM;AAAA,cACtB,YAAY,MAAM;AAAA,YACpB;AACA;AAAA,QACJ;AAAA,MACF;AAAA,MAEA,UAAgB;AACd,cAAM,QAAQ,KAAK,YAAY;AAE/B,YAAI,MAAM,WAAW,GAAG;AACtB;AAAA,QACF;AAEA,YAAI,KAAK,qBAAqB,GAAG;AAC/B,qBAAW,KAAK,SAAS,GAAG,EAAE,KAAK,qBAAqB,EAAE;AAAA,QAC5D;AAEA,cAAM,kBAAkB,KAAK,IAAI,MAAM,QAAQ,KAAK,kBAAkB;AAEtE,iBAAS,QAAQ,GAAG,QAAQ,iBAAiB,SAAS,GAAG;AACvD,mBAAS,KAAK,SAAS,CAAC;AACxB,oBAAU,KAAK,SAAS,CAAC;AAEzB,gBAAM,OAAO,MAAM,KAAK;AAExB,cAAI,SAAS,QAAW;AACtB,iBAAK,QAAQ,MAAM,IAAI;AAAA,UACzB;AAEA,cAAI,QAAQ,kBAAkB,GAAG;AAC/B,iBAAK,QAAQ,MAAM,IAAI;AAAA,UACzB;AAAA,QACF;AAEA,aAAK,qBAAqB;AAAA,MAC5B;AAAA,MAEA,cAAwB;AACtB,cAAM,QAAkB,CAAC;AACzB,cAAM,UAAU,CAAC,GAAG,KAAK,SAAS,QAAQ,CAAC,EAAE;AAAA,UAC3C,CAAC,CAAC,MAAM,GAAG,CAAC,OAAO,MAAM,SAAS;AAAA,QACpC;AACA,cAAM,oBAAoB,QAAQ;AAAA,UAChC,CAAC,UACC,kBAAkB,MAAM,CAAC,CAAC;AAAA,QAC9B;AACA,cAAM,mBAAmB,kBAAkB;AAAA,UACzC,CAAC,KAAK,CAAC,EAAE,MAAM,MAAM,MAAM,OAAO;AAAA,UAClC;AAAA,QACF;AACA,cAAM,4BAA4B,kBAAkB;AAAA,UAClD,CAAC,KAAK,CAAC,EAAE,MAAM,MAAM,MAAM,OAAO;AAAA,UAClC;AAAA,QACF;AACA,cAAM,gBAAgB,kBAAkB;AAAA,UACtC,CAAC,CAAC,EAAE,MAAM,MACR,OAAO,iBAAiB,KAAK,OAAO,iBAAiB,OAAO;AAAA,QAChE;AAEA,YAAI,kBAAkB,SAAS,GAAG;AAChC,gBAAM;AAAA,YACJ,GAAG,iBAAiB,QAAQ,CAAC,GAAG;AAAA,cAC9B;AAAA,cACA;AAAA,YACF,CAAC,IAAI,aAAa,yBAAyB,CAAC,MAAM;AAAA,cAChD;AAAA,YACF,CAAC;AAAA,UACH;AAAA,QACF;AAEA,YAAI,KAAK,YAAY,QAAW;AAC9B,gBAAM;AAAA,YACJ,GAAG,iBAAiB,QAAQ,CAAC,GAAG;AAAA,cAC9B,KAAK,QAAQ;AAAA,cACb,KAAK,QAAQ;AAAA,YACf,CAAC,IAAI,aAAa,KAAK,QAAQ,cAAc,CAAC,MAAM;AAAA,cAClD,KAAK,QAAQ;AAAA,YACf,CAAC;AAAA,UACH;AAAA,QACF;AAEA,YAAI,cAAc,SAAS,GAAG;AAC5B,gBAAM,KAAK,IAAI,OAAO,EAAE,CAAC;AAAA,QAC3B;AAEA,cAAM,kBAAkB,cAAc,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,MAAM;AAClE,iBAAO,KAAK;AAAA,YACV;AAAA,YACA,gBAAgB,OAAO,gBAAgB,OAAO,KAAK,EAAE;AAAA,UACvD;AAAA,QACF,GAAG,CAAC;AAEJ,mBAAW,CAAC,UAAU,MAAM,KAAK,eAAe;AAC9C,gBAAM,aAAa,gBAAgB,OAAO,gBAAgB,OAAO,KAAK;AACtE,gBAAM,iBAAiB;AAAA,YACrB,OAAO;AAAA,YACP,OAAO;AAAA,UACT;AAEA,gBAAM,KAAK,mBAAmB,UAAU,OAAO,KAAK,CAAC;AACrD,gBAAM;AAAA,YACJ,GAAG,yBAAyB,CAAC,GAAG;AAAA,cAC9B,OAAO;AAAA,cACP,OAAO;AAAA,YACT,CAAC,IAAI,WAAW,OAAO,eAAe,CAAC,GAAG,mBAAmB,SAAY,KAAK,KAAK,cAAc,GAAG;AAAA,UACtG;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAAA,IACF;AAAA;AAAA;;;AC9GO,SAAS,iBAAiB,OAItB;AACT,QAAM,WAAW,MAAM,YAAY,CAAC;AACpC,QAAM,cACJ,SAAS,WAAW,IAChB,KACA,IAAI,SAAS,IAAI,iBAAiB,EAAE,KAAK,KAAK,CAAC;AACrD,QAAM,aAAa,uBAAuB,MAAM,YAAY;AAE5D,SAAO,GAAG,MAAM,KAAK,GAAG,WAAW,GAAG,eAAe,KAAK,KAAK,IAAI,UAAU,EAAE;AACjF;AAEA,SAAS,kBAAkB,SAAkC;AAC3D,MAAI,QAAQ,SAAS,QAAQ,MAAM;AACjC,WAAO,GAAG,QAAQ,IAAI,IAAI,QAAQ,IAAI,IAAI,QAAQ,KAAK;AAAA,EACzD;AAEA,SAAO,GAAG,QAAQ,IAAI,IAAI,QAAQ,IAAI,IAAI,QAAQ,KAAK,IAAI,QAAQ,IAAI;AACzE;AAEA,SAAS,uBACP,cACQ;AACR,MAAI,iBAAiB,QAAW;AAC9B,WAAO;AAAA,EACT;AAEA,QAAM,QAAQ,aAAa,QAAQ,CAAC,UAAU;AAC5C,UAAM,UAAU,MAAM,QAAQ;AAAA,MAC5B,CAAC,WAAW,GAAG,OAAO,IAAI,KAAK,OAAO,KAAK;AAAA,IAC7C;AAEA,WAAO,QAAQ,WAAW,IACtB,CAAC,IACD,CAAC,IAAI,MAAM,IAAI,IAAI,QAAQ,KAAK,KAAK,CAAC,GAAG;AAAA,EAC/C,CAAC;AAED,SAAO,MAAM,KAAK,GAAG;AACvB;AAEA,SAAS,iBAAiB,OAEd;AACV,QAAM,WAAW,MAAM,YAAY,CAAC;AAEpC,SACE,SAAS,SAAS,KAClB,SAAS;AAAA,IACP,CAAC,YAAY,QAAQ,QAAQ,KAAK,QAAQ,QAAQ,QAAQ;AAAA,EAC5D;AAEJ;AA9KA,IAmCa;AAnCb;AAAA;AAAA;AAAA;AACA;AACA;AAiCO,IAAM,uBAAN,MAA2B;AAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA,MACT;AAAA,MACA;AAAA,MACA,kBAAkB;AAAA,MAEX,YAAY,OAIhB;AACD,aAAK,SAAS,MAAM;AACpB,aAAK,cAAc,MAAM;AACzB,aAAK,OAAO,MAAM,OAAO,kBAAkB,MAAM;AAAA,MACnD;AAAA,MAEA,MAAa,MAAM,OAA2C;AAC5D,YAAI,MAAM,SAAS,YAAY,CAAC,KAAK,mBAAmB,KAAK,GAAG;AAC9D;AAAA,QACF;AAEA,YAAI,KAAK,QAAQ;AACf,gBAAM,KAAK,WAAW,kBAAkB,MAAM,IAAI,CAAC;AACnD;AAAA,QACF;AAEA,YAAI,MAAM,SAAS,UAAU;AAC3B,gBAAM,KAAK,aAAa,iBAAiB,KAAK,CAAC;AAC/C;AAAA,QACF;AAEA,cAAM,KAAK,gBAAgB,MAAM,IAAI;AAAA,MACvC;AAAA,MAEA,MAAM,gBAAgB,MAA6B;AACjD,YAAI,KAAK,QAAQ,KAAK,iBAAiB;AACrC,gBAAM,kBAAkB,IAAI;AAC5B,eAAK,kBAAkB;AAAA,QACzB;AAEA,cAAM,KAAK,WAAW,GAAG,IAAI;AAAA,CAAI;AAAA,MACnC;AAAA,MAEA,MAAM,WAAW,MAA6B;AAC5C,cAAM,kBAAkB,IAAI;AAAA,MAC9B;AAAA,MAEA,MAAM,aAAa,MAA6B;AAC9C,YAAI,KAAK,MAAM;AACb,gBAAM,kBAAkB,YAAY,IAAI,EAAE;AAC1C,eAAK,kBAAkB;AACvB;AAAA,QACF;AAEA,cAAM,KAAK,WAAW,GAAG,IAAI;AAAA,CAAI;AAAA,MACnC;AAAA,MAEA,mBACE,OACS;AACT,cAAM,MAAM,MAAM;AAClB,cAAM,YAAY,iBAAiB,KAAK;AACxC,cAAM,MAAM,KAAK,IAAI;AACrB,cAAM,UACJ,KAAK,kBAAkB,SACnB,OAAO,oBACP,MAAM,KAAK;AAEjB,YACE,QAAQ,KAAK,kBACb,aACA,KAAK,kBAAkB,UACvB,WAAW,KAAK,aAChB;AACA,eAAK,gBAAgB;AACrB,eAAK,iBAAiB;AACtB,iBAAO;AAAA,QACT;AAEA,eAAO;AAAA,MACT;AAAA,IACF;AAAA;AAAA;;;ACtHA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,sCAAsC;AAC/C,SAAS,WAAW;AAWb,SAAS,eACd,QACA,SAMqB;AACrB,QAAM,aAAa,gBAAgB,MAAM;AAEzC,SAAO,IAAI,IAAoB;AAAA,IAC7B,UAAU,+BAA+B;AAAA,MACvC,GAAI,WAAW,gBAAgB,SAC3B,CAAC,IACD,EAAE,aAAa,WAAW,YAAY;AAAA,MAC1C,GAAI,WAAW,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,WAAW,KAAK;AAAA,IACnE,CAAC;AAAA,IACD,GAAG;AAAA,IACH,GAAI,SAAS,mBAAmB,SAC5B,CAAC,IACD,EAAE,gBAAgB,QAAQ,eAAe;AAAA,IAC7C,GAAI,SAAS,iBAAiB,SAC1B,CAAC,IACD,EAAE,cAAc,QAAQ,aAAa;AAAA,IACzC,GAAI,SAAS,qBAAqB,SAC9B,CAAC,IACD,EAAE,kBAAkB,QAAQ,iBAAiB;AAAA,IACjD,GAAI,SAAS,iBAAiB,SAC1B,CAAC,IACD,EAAE,cAAc,QAAQ,aAAa;AAAA,EAC3C,CAAC;AACH;AAEA,eAAsB,wBAAwB,SAEvB;AACrB,QAAM,SAAS,MAAM,cAAc;AAAA,IACjC,GAAI,QAAQ,YAAY,SAAY,CAAC,IAAI,EAAE,SAAS,QAAQ,QAAQ;AAAA,EACtE,CAAC;AAED,MAAI,OAAO,KAAK,aAAa,UAAa,OAAO,IAAI,UAAU,QAAW;AACxE,UAAM,IAAI;AAAA,MACR;AAAA,QACE;AAAA,QACA,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAtEA;AAAA;AAAA;AAeA;AACA;AACA;AAAA;AAAA;;;ACjBA,SAAS,aAAa;AAAtB,IAKa;AALb;AAAA;AAAA;AAKO,IAAM,6BAAqD;AAAA,MAChE,KAAK,OAAO,EAAE,MAAM,SAAS,OAAO,SAAS,MAC3C,MAAM,IAAI,QAAQ,CAACC,UAAS,WAAW;AACrC,cAAM,QAAQ,MAAM,SAAS,CAAC,GAAG,IAAI,GAAG;AAAA,UACtC,OAAO,CAAC,QAAQ,QAAQ,MAAM;AAAA,QAChC,CAAC;AACD,cAAM,SAAuB,CAAC;AAC9B,YAAI,UAAU;AAEd,cAAM,OAAO,YAAY,MAAM;AAC/B,cAAM,OAAO,GAAG,QAAQ,CAAC,UAAkB;AACzC,cAAI,QAAS;AACb,cAAI;AACF,qBAAS,KAAK;AAAA,UAChB,SAAS,OAAO;AACd,sBAAU;AACV,kBAAM,KAAK;AACX,mBAAO,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC,CAAC;AAAA,UAClE;AAAA,QACF,CAAC;AACD,cAAM,OAAO,GAAG,QAAQ,CAAC,UAAsB,OAAO,KAAK,KAAK,CAAC;AACjE,cAAM,GAAG,SAAS,CAAC,UAAU;AAC3B,cAAI,QAAS;AACb,oBAAU;AACV;AAAA,YACE,IAAI,MAAM,sCAAsC,MAAM,OAAO,EAAE;AAAA,UACjE;AAAA,QACF,CAAC;AACD,cAAM,GAAG,SAAS,CAAC,aAAa;AAC9B,cAAI,QAAS;AACb,oBAAU;AACV,UAAAA,SAAQ;AAAA,YACN;AAAA,YACA,QAAQ,OAAO,OAAO,MAAM,EAAE,SAAS,MAAM;AAAA,UAC/C,CAAC;AAAA,QACH,CAAC;AACD,cAAM,MAAM,IAAI,KAAK;AAAA,MACvB,CAAC;AAAA,IACL;AAAA;AAAA;;;AC3CA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;;;ACPA;AAAA;AAAA;AAAA;AAAA,SAAS,MAAAC,WAAU;AACnB,SAAS,WAAAC,gBAAe;AAExB,SAAS,iBAAwC;AA+CjD,eAAsB,kBAAkB,MAAmC;AACzE,QAAM,QAAQ,qBAAqB,IAAI;AACvC,QAAM,SAAS,sBAAsB,IAAI;AACzC,QAAM,cAAc,KAAK,eAAe;AAExC,MAAI,KAAK,WAAW,OAAO,mBAAmB,UAAU;AACtD,UAAM,IAAI;AAAA,MACR;AAAA,QACE;AAAA,QACA,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AACA,MAAI,KAAK,gBAAgB,UAAa,OAAO,WAAW,QAAQ;AAC9D,UAAM,IAAI;AAAA,MACR;AAAA,QACE;AAAA,QACA,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAEA,QAAM,cAAc,MAAM;AAC1B,MAAI,KAAK,gBAAgB,UAAa,gBAAgB,QAAQ;AAC5D,UAAM,IAAI;AAAA,MACR;AAAA,QACE;AAAA,QACA,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AACA,QAAM,iBAAiB,gBAAgB;AACvC,QAAM,cACJ,kBAAkB,gBAAgB,aAAa,gBAAgB;AACjE,QAAM,gBAAgB,MAAM,qBAAqB,MAAM,cAAc;AACrE,QAAM,SAAS,MAAM,mBAAmB,MAAM,WAAW;AACzD,QAAM,MAAM,IAAI,UAAU,iBAAiB,MAAM,QAAQ,WAAW,CAAC;AACrE,QAAM,mBAAmB,0BAA0B;AAAA,IACjD,SACE,kBACA,OAAO,mBAAmB,YAC1B,QAAQ,OAAO,UAAU,QACzB,CAAC,KAAK;AAAA,EACV,CAAC;AAED,MAAI,gBAAgB,QAAQ;AAC1B,QAAI,MAAM,SAAS,QAAW;AAC5B,YAAM,IAAI,MAAM,kDAAkD;AAAA,IACpE;AAEA,QAAI;AACF,YAAM,IAAI,YAAY,IAAI,SAAS,MAAM,IAAI,GAAG,OAAO,WAAW;AAChE,cAAM,kBAAkB,QAAQ,MAAM;AAAA,MACxC,CAAC;AACD;AAAA,IACF,UAAE;AACA,YAAM,iBAAiB,KAAK;AAAA,IAC9B;AAAA,EACF;AAEA,QAAM,mBAAmB,KAAK,UAAU,OAAO;AAE/C,MAAI;AACF,QAAI,MAAM,SAAS,QAAW;AAC5B,UAAI,QAAQ,MAAM,OAAO;AACvB,cAAM,IAAI;AAAA,UACR;AAAA,YACE;AAAA,YACA,gBAAgB;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAEA,YAAM,IAAI;AAAA,QACR;AAAA,UACE,GAAI,kBAAkB,SAClB,CAAC,IACD,EAAE,mBAAmB,IAAI,cAAc,aAAa,EAAE;AAAA,UAC1D,GAAI,iBAAiB,eAAe,SAChC,CAAC,IACD,EAAE,YAAY,iBAAiB,WAAW;AAAA,UAC9C,cAAc,MAAM;AAAA,UACpB,QAAQ,wBAAwB;AAAA,UAChC,GAAI,qBAAqB,SAAY,CAAC,IAAI,EAAE,iBAAiB;AAAA,UAC7D;AAAA,QACF;AAAA,QACA,OAAO,WAAW;AAChB,gBAAM,kBAAkB,QAAQ,MAAM;AAAA,QACxC;AAAA,MACF;AACA;AAAA,IACF;AAEA,YAAQ,aAAa;AAAA,MACnB,KAAK;AACH,cAAM,IAAI;AAAA,UACR;AAAA,YACE,GAAI,kBAAkB,SAClB,CAAC,IACD,EAAE,mBAAmB,IAAI,cAAc,aAAa,EAAE;AAAA,YAC1D,GAAI,iBAAiB,eAAe,SAChC,CAAC,IACD,EAAE,YAAY,iBAAiB,WAAW;AAAA,YAC9C,MAAM,IAAI,SAAS,MAAM,IAAI;AAAA,YAC7B,GAAI,qBAAqB,SAAY,CAAC,IAAI,EAAE,iBAAiB;AAAA,YAC7D;AAAA,UACF;AAAA,UACA,OAAO,WAAW;AAChB,kBAAM,kBAAkB,QAAQ,MAAM;AAAA,UACxC;AAAA,QACF;AACA;AAAA,MACF,KAAK;AACH,cAAM,IAAI;AAAA,UACR;AAAA,YACE,GAAI,kBAAkB,SAClB,CAAC,IACD,EAAE,mBAAmB,IAAI,cAAc,aAAa,EAAE;AAAA,YAC1D,GAAI,iBAAiB,eAAe,SAChC,CAAC,IACD,EAAE,YAAY,iBAAiB,WAAW;AAAA,YAC9C,MAAM,IAAI,SAAS,MAAM,IAAI;AAAA,YAC7B,GAAI,qBAAqB,SAAY,CAAC,IAAI,EAAE,iBAAiB;AAAA,YAC7D;AAAA,UACF;AAAA,UACA,OAAO,WAAW;AAChB,kBAAM,kBAAkB,QAAQ,MAAM;AAAA,UACxC;AAAA,QACF;AACA;AAAA,MACF,KAAK;AACH,cAAM,IAAI;AAAA,UACR;AAAA,YACE,GAAI,kBAAkB,SAClB,CAAC,IACD,EAAE,mBAAmB,IAAI,cAAc,aAAa,EAAE;AAAA,YAC1D,GAAI,iBAAiB,eAAe,SAChC,CAAC,IACD,EAAE,YAAY,iBAAiB,WAAW;AAAA,YAC9C,MAAM,IAAI,SAAS,MAAM,IAAI;AAAA,YAC7B,GAAI,qBAAqB,SAAY,CAAC,IAAI,EAAE,iBAAiB;AAAA,YAC7D;AAAA,UACF;AAAA,UACA,OAAO,WAAW;AAChB,kBAAM,kBAAkB,QAAQ,MAAM;AAAA,UACxC;AAAA,QACF;AACA;AAAA,IACJ;AAAA,EACF,UAAE;AACA,UAAM,iBAAiB,KAAK;AAAA,EAC9B;AACF;AAEA,eAAe,qBACb,MACA,gBAC6B;AAC7B,QAAM,iBAAiB,gBAAgB,KAAK,aAAa;AAEzD,MAAI,mBAAmB,UAAa,CAAC,gBAAgB;AACnD,WAAO;AAAA,EACT;AAEA,QAAM,eAAeA,SAAQ,cAAc;AAE3C,QAAMD,IAAG,cAAc,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC;AAEvD,SAAO;AACT;AAEA,eAAe,mBACb,MACA,gBACoB;AACpB,QAAM,SAAS,MAAM,cAAc;AAAA,IACjC,GAAI,KAAK,YAAY,SAAY,CAAC,IAAI,EAAE,SAAS,KAAK,QAAQ;AAAA,EAChE,CAAC;AAED,MAAI,CAAC,gBAAgB;AACnB,WAAO;AAAA,EACT;AAEA,MAAI,OAAO,KAAK,aAAa,UAAa,OAAO,IAAI,UAAU,QAAW;AACxE,UAAM,IAAI;AAAA,MACR;AAAA,QACE;AAAA,QACA,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,iBACP,MACA,QACA,gBACkB;AAClB,QAAM,aAAa,CAAC,iBAAiB,SAAY,gBAAgB,MAAM;AAEvE,SAAO;AAAA,IACL,GAAI,KAAK,UAAU,EAAE,SAAS,KAAK,IAAI,CAAC;AAAA,IACxC,GAAI,eAAe,SAAY,CAAC,IAAI,EAAE,KAAK,WAAW;AAAA,EACxD;AACF;AAEA,eAAe,kBACb,QACA,QACe;AACf,MAAI,OAAO,SAAS,QAAW;AAC7B,UAAM,kBAAkB,QAAQ,OAAO,MAAM,OAAO,MAAM;AAC1D;AAAA,EACF;AAEA,MAAI,OAAO,mBAAmB,UAAU;AACtC,UAAM,IAAI,MAAM,wCAAwC;AAAA,EAC1D;AAEA,QAAM,kBAAkB,MAAM;AAAA,IAC5B;AAAA,IACA,mBAAmB,OAAO,MAAM;AAAA,EAClC;AAEA,MAAI;AACF,UAAM,kBAAkB,QAAQ,gBAAgB,UAAU,OAAO,MAAM;AACvE,UAAM,sBAAsB,gBAAgB,QAAQ;AAAA,EACtD,UAAE;AACA,UAAM,yBAAyB,gBAAgB,aAAa;AAAA,EAC9D;AACF;AAEA,eAAe,kBACb,QACA,MACA,QACe;AACf,UAAQ,QAAQ;AAAA,IACd,KAAK;AACH,YAAM,OAAO,WAAW,IAAI,SAAS,IAAI,CAAC;AAC1C;AAAA,IACF,KAAK;AAAA,IACL,KAAK;AACH,YAAM,OAAO,WAAW,IAAI,SAAS,IAAI,CAAC;AAC1C;AAAA,IACF,KAAK;AACH,YAAM,OAAO,OAAO,IAAI,SAAS,IAAI,CAAC;AACtC;AAAA,EACJ;AACF;AAEA,SAAS,qBAAqB,MAA2C;AACvE,QAAM,iBAAiB,gBAAgB,KAAK,SAAS;AACrD,QAAM,iBACJ,mBAAmB,SACf,SACA,uBAAuB,cAAc;AAC3C,QAAM,SAAS,KAAK,eAAe;AAEnC,MAAI,WAAW,QAAW;AACxB,UAAM,IAAI;AAAA,MACR;AAAA,QACE,mBAAmB,SACf,8DACA,kCAAkC,cAAc;AAAA,QACpD,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AACA,MAAI,mBAAmB,UAAa,CAAC,gBAAgB,MAAM,GAAG;AAC5D,UAAM,IAAI;AAAA,MACR;AAAA,QACE,gDAAgD,MAAM;AAAA,QACtD,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAEA,MAAI,mBAAmB,QAAW;AAChC,UAAM,aAAa;AAEnB,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,gBAAgB;AAAA,IAClB;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,EACR;AACF;AAEA,SAAS,sBAAsB,MAA4C;AACzE,QAAM,iBAAiB,gBAAgB,KAAK,UAAU;AACtD,QAAM,iBACJ,mBAAmB,SACf,SACA,uBAAuB,cAAc;AAC3C,QAAM,SAAS,KAAK,gBAAgB;AAEpC,MAAI,WAAW,QAAW;AACxB,UAAM,IAAI;AAAA,MACR;AAAA,QACE,mBAAmB,SACf,gEACA,mCAAmC,cAAc;AAAA,QACrD,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AACA,MAAI,mBAAmB,UAAa,CAAC,gBAAgB,MAAM,GAAG;AAC5D,UAAM,IAAI;AAAA,MACR;AAAA,QACE,iDAAiD,MAAM;AAAA,QACvD,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAEA,MAAI,mBAAmB,QAAW;AAChC,UAAM,aAAa;AAEnB,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,gBAAgB;AAAA,IAClB;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,EACR;AACF;AAEA,SAAS,gBAAgB,MAA8C;AACrE,MAAI,SAAS,QAAW;AACtB,WAAO;AAAA,EACT;AAEA,SAAO,SAAS,MAAM,SAAY;AACpC;AAEA,SAAS,mBAAmB,QAA2B;AACrD,UAAQ,QAAQ;AAAA,IACd,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,EACX;AACF;AAtZA;AAAA;AAAA;AAOA;AACA;AACA;AAKA;AACA;AAMA;AACA;AAAA;AAAA;;;ACtBA,SAAS,WAAAE,UAAS,UAAAC,SAAQ,MAAAC,KAAI,QAAAC,aAAY;AAC1C,SAAS,YAAAC,WAAU,WAAAC,UAAS,QAAAC,aAAY;AACxC,SAAS,UAAAC,eAAc;AAEvB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAYP,eAAsB,cAAc,MAA0C;AAC5E,QAAM,aAAa,MAAM,+BAA+B,IAAI;AAE5D,MAAI;AACF,UAAM,wBAAwB,MAAM,UAAU;AAC9C,UAAM,2BAA2B,MAAM,UAAU;AAAA,EACnD,UAAE;AACA,QAAI,eAAe,KAAK,aAAa;AACnC,YAAML,IAAG,YAAY,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC;AAAA,IACvD;AAAA,EACF;AAEA,QAAM,oBAAoB,IAAI;AAChC;AAEA,eAAe,wBACb,MACA,YACe;AACf,MAAI,KAAK,eAAe,QAAW;AACjC,UAAM,mBAAmB,UAAU;AACnC;AAAA,EACF;AAEA,QAAM,kBAAkB;AAAA,IACtB,MAAM;AAAA,IACN,WAAW,KAAK;AAAA,IAChB,cAAc;AAAA,IACd;AAAA,IACA,aAAa;AAAA,IACb,SAAS;AAAA,EACX,CAAC;AACH;AAEA,eAAe,mBAAmB,YAAmC;AACnE,QAAM,gBAAgB,MAAMF;AAAA,IAC1BM,MAAKC,QAAO,GAAG,0BAA0B;AAAA,EAC3C;AACA,QAAM,YAAY,IAAI,cAAc,aAAa;AACjD,QAAM,WAAW,MAAM,kBAAkB,KAAK,SAAS;AAEvD,MAAI;AACF,QAAI;AACF,YAAM,SAAS,YAAY,OAAO,mBAAmB;AACnD,cAAM,eAAe,SAAS;AAAA,UAC5B,OAAO,CAAC;AAAA,UACR,SAAS;AAAA,QACX,CAAC;AAAA,MACH,CAAC;AAAA,IACH,UAAE;AACA,YAAM,SAAS,QAAQ;AAAA,IACzB;AACA,UAAM,iBAAiB,WAAW,IAAI,SAAS,UAAU,CAAC;AAAA,EAC5D,UAAE;AACA,UAAML,IAAG,eAAe,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC;AAAA,EAC1D;AACF;AAEA,eAAe,+BACb,MACiB;AACjB,MAAI,KAAK,YAAY,QAAS,MAAM,WAAW,KAAK,WAAW,GAAI;AACjE,UAAM,IAAI,MAAM,kCAAkC,KAAK,WAAW,CAAC;AAAA,EACrE;AAEA,MAAI,KAAK,YAAY,MAAM;AACzB,WAAO,KAAK;AAAA,EACd;AAEA,SAAOI;AAAA,IACLD,SAAQ,KAAK,WAAW;AAAA,IACxB,IAAID,UAAS,KAAK,WAAW,CAAC,IAAI,QAAQ,GAAG,IAAI,KAAK,IAAI,CAAC;AAAA,EAC7D;AACF;AAEA,eAAe,2BACb,MACA,YACe;AACf,MAAI,eAAe,KAAK,aAAa;AACnC;AAAA,EACF;AAEA,QAAMH,QAAO,YAAY,KAAK,WAAW;AAC3C;AAEA,eAAe,WAAW,MAAgC;AACxD,MAAI;AACF,UAAME,MAAK,IAAI;AACf,WAAO;AAAA,EACT,SAAS,OAAO;AACd,QAAI,kBAAkB,KAAK,GAAG;AAC5B,aAAO;AAAA,IACT;AAEA,UAAM;AAAA,EACR;AACF;AAEA,SAAS,kBAAkB,OAAgD;AACzE,SACE,iBAAiB,SACjB,UAAU,SACT,MAAgC,SAAS;AAE9C;AAEA,SAAS,kCAAkC,aAA6B;AACtE,QAAM,MAAM,0BAA0B,WAAW;AAEjD,SAAO;AAAA,IACL,2BAA2B,WAAW;AAAA,IACtC,SAAS,iBAAiB,CAAC,KAAK,SAAS,CAAC,CAAC;AAAA,EAC7C,EAAE,KAAK,IAAI;AACb;AAEA,eAAe,oBAAoB,MAA0C;AAC3E,MAAI,KAAK,SAAS,MAAM;AACtB,UAAM;AAAA,MACJ,cAAc,EAAE,KAAK,0BAA0B,KAAK,WAAW,EAAE,CAAC;AAAA,IACpE;AACA;AAAA,EACF;AAEA,QAAM,kBAAkB,aAAa;AACvC;AAlJA;AAAA;AAAA;AAUA;AAGA;AACA;AAAA;AAAA;;;ACdA;AAAA,EACE;AAAA,EACA;AAAA,OAIK;AAuGP,eAAsB,0BACpB,UACA,MACe;AACf,QAAM,SAAS,MAAM,2BAA2B,UAAU,IAAI;AAE9D,MAAI,KAAK,SAAS,MAAM;AACtB,UAAM,kBAAkB,cAAc,MAAM,CAAC;AAC7C;AAAA,EACF;AAEA,QAAM,kBAAkB,yBAAyB,MAAM,CAAC;AAC1D;AAEA,eAAe,2BACb,UACA,MACwB;AACxB,QAAM,aAAa,+BAA+B,KAAK,WAAW;AAClE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,MAAM,QAAQ,IAAI;AAAA,IACpB,oBAAoB,UAAU,KAAK,SAAS;AAAA,IAC5C,iBAAiB,UAAU,KAAK,SAAS;AAAA,IACzC,4BAA4B,QAAQ;AAAA,IACpC,cAAc;AAAA,IACd,0BAA0B,UAAU,OAAO,KAAK,SAAS;AAAA,IACzD,0BAA0B,UAAU,oBAAoB,KAAK,SAAS;AAAA,IACtE,0BAA0B,UAAU,qBAAqB,KAAK,SAAS;AAAA,EACzE,CAAC;AACD,QAAM,kBACJ,KAAK,cAAc,SAAY,SAAY,SAAS,CAAC;AACvD,QAAM,WACJ,oBAAoB,SAChB,aACA,+BAA+B,YAAY,eAAe;AAChE,QAAM,aAAa;AAAA,IACjB,KAAK,OAAO,YAAY,OAAO;AAAA,IAC/B,SACE,OAAO,YAAY,WAAW;AAAA,EAClC;AACA,QAAM,gBAAgB,8BAA8B,OAAO,GAAG;AAC9D,QAAM,kBAAkB,SAAS;AAAA,IAC/B,CAAC,YAAY,QAAQ,UAAU;AAAA,EACjC;AACA,QAAM,cAAc,SAAS,eAAe;AAC5C,QAAM,sBAAsB,gBAAgB;AAAA,IAC1C,CAAC,YAAY,QAAQ;AAAA,EACvB;AACA,QAAM,wBAAwB,gBAAgB;AAAA,IAC5C,CAAC,YAAY,QAAQ;AAAA,EACvB;AACA,QAAM,iBAAiB,gBAAgB;AAAA,IACrC,CAAC,YAAY,QAAQ;AAAA,EACvB;AACA,QAAM,qBAAqB;AAAA,IACzB;AAAA,IACA;AAAA,EACF;AACA,QAAM,iCAAiC;AAAA,IACrC;AAAA,IACA;AAAA,EACF;AACA,QAAM,kCAAkC;AAAA,IACtC;AAAA,IACA;AAAA,EACF;AACA,QAAM,8BAA8B,gBAAgB;AAAA,IAClD,CAAC,YACC,CAAC,mBAAmB,SAAS,OAAO,KACpC,CAAC,+BAA+B,SAAS,OAAO;AAAA,EACpD;AACA,QAAM,uBAAuB,4BAA4B;AAAA,IAAI,CAAC,YAC5D,8BAA8B,YAAY,OAAO;AAAA,EACnD;AACA,QAAM,aAAa,qBAAqB,WAAW;AACnD,QAAM,kBAAkB,iBAAiB;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACD,QAAM,eAAe,0BAA0B;AAAA,IAC7C;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,sBAAsB;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACD,QAAM,mBAAmB,iCAAiC;AAAA,IACxD,UAAU,KAAK;AAAA,MACb;AAAA,MACA,GAAG,aAAa,IAAI,CAAC,gBAAgB,YAAY,mBAAmB,CAAC;AAAA,IACvE;AAAA,IACA;AAAA,IACA,YAAY,aAAa;AAAA,MACvB,CAAC,gBAAgB,YAAY,aAAa;AAAA,IAC5C;AAAA,IACA,gBAAgB,aAAa;AAAA,MAC3B,CAAC,gBAAgB,YAAY,aAAa;AAAA,IAC5C;AAAA,EACF,CAAC;AAED,SAAO;AAAA,IACL,KAAK;AAAA,IACL,OACE,KAAK,cAAc,SACf,EAAE,MAAM,UAAU,IAClB,EAAE,WAAW,KAAK,WAAW,MAAM,UAAU;AAAA,IACnD,SAAS;AAAA,MACP,UAAU;AAAA,QACR,SAAS,gBAAgB;AAAA,QACzB,SAAS,SAAS,SAAS,gBAAgB;AAAA,QAC3C,OAAO,SAAS;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,GAAI,CAAC,aACD;AAAA,QACE,WAAW;AAAA,QACX,QACE;AAAA,MACJ,IACA,oBACE,CAAC,IACD;AAAA,QACE,YAAY,iBAAiB,CAAC,GAAG,UAAU,UAAU,MAAM,CAAC;AAAA,QAC5D,QACE;AAAA,QACF,UAAU;AAAA,MACZ;AAAA,MACN,QAAQ,CAAC,aACL,YACA,oBACE,YACA;AAAA,MACN,eAAe,cAAc,CAAC;AAAA,IAChC;AAAA,IACA,UAAU;AAAA,MACR,kBAAkB;AAAA,QAChB;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAgB;AAAA,QACd;AAAA,QACA;AAAA,MACF;AAAA,MACA,cAAc,sBAAsB,qBAAqB,eAAe;AAAA,MACxE,SAAS,sBAAsB,gBAAgB,eAAe;AAAA,MAC9D,8BAA8B;AAAA,QAC5B;AAAA,QACA;AAAA,MACF;AAAA,MACA,+BAA+B;AAAA,QAC7B;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,OAAO;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IACA,iBAAiB;AAAA,MACf,iBAAiB;AAAA,MACjB,GAAI,CAAC,aACD;AAAA,QACE,YAAY;AAAA,QACZ,UAAU;AAAA,MACZ,IACA,CAAC;AAAA,MACL,aAAa;AAAA,MACb,OAAO;AAAA,MACP,QAAQ,aAAa,UAAU;AAAA,IACjC;AAAA,IACA,mBAAmB,wBAAwB;AAAA,MACzC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IACD;AAAA,IACA;AAAA,IACA,MAAM;AAAA,MACJ,WAAW;AAAA,MACX,iBACE;AAAA,IACJ;AAAA,EACF;AACF;AAEA,SAAS,+BAA+B,aAA6B;AACnE,MAAI,YAAY,WAAW,aAAa,GAAG;AACzC,WAAO;AAAA,EACT;AAEA,SAAO,0BAA0B,WAAW;AAC9C;AAEA,SAAS,yBAAyB,QAA+B;AAC/D,SACE;AAAA,IACE;AAAA,IACA,QAAQ,OAAO,GAAG;AAAA,IAClB,UAAU,OAAO,MAAM,SAAS,YAAY,YAAY,OAAO,GAAG;AAAA,IAClE;AAAA,IACA;AAAA,IACA,aAAa,OAAO,QAAQ,SAAS,OAAO,cAAc,OAAO,QAAQ,SAAS,KAAK;AAAA,IACvF,qBAAqB,OAAO,QAAQ,SAAS,OAAO;AAAA,IACpD,iBAAiB,OAAO,QAAQ,WAAW;AAAA,IAC3C,kBAAkB,OAAO,QAAQ,YAAY;AAAA,IAC7C;AAAA,IACA;AAAA,IACA,WAAW,OAAO,MAAM,QAAQ,cAAc,aAAa;AAAA,IAC3D,qBAAqB,OAAO,gBAAgB,MAAM;AAAA,IAClD,GAAI,OAAO,gBAAgB,QACvB,CAAC,IACD;AAAA,MACE,QAAQ,OAAO,gBAAgB,UAAU;AAAA,MACzC,aAAa,OAAO,gBAAgB,QAAQ;AAAA,MAC5C,SAAS,OAAO,gBAAgB,WAAW;AAAA,IAC7C;AAAA,IACJ;AAAA,IACA;AAAA,IACA,WAAW,OAAO,gBAAgB,WAAW,wBAAwB,wBAAwB,OAAO,gBAAgB,MAAM;AAAA,IAC1H,GAAI,OAAO,gBAAgB,UACvB,CAAC,IACD;AAAA,MACE,WAAW,OAAO,gBAAgB,MAAM;AAAA,MACxC,GAAI,OAAO,gBAAgB,eAAe,SACtC,CAAC,IACD,CAAC,QAAQ,OAAO,gBAAgB,UAAU,EAAE;AAAA,MAChD,GAAI,OAAO,gBAAgB,aAAa,SACpC,CAAC,IACD,CAAC,aAAa,OAAO,gBAAgB,QAAQ,EAAE;AAAA,IACrD;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,MACE;AAAA,MACA,OAAO,SAAS;AAAA,IAClB;AAAA,IACA;AAAA,MACE;AAAA,MACA,OAAO,SAAS;AAAA,IAClB;AAAA,IACA;AAAA,MACE;AAAA,MACA,OAAO,SAAS;AAAA,IAClB;AAAA,IACA,mBAAmB,iBAAiB,OAAO,SAAS,YAAY;AAAA,IAChE,mBAAmB,mBAAmB,OAAO,SAAS,cAAc;AAAA,IACpE,mBAAmB,oBAAoB,OAAO,SAAS,OAAO;AAAA,IAC9D,iBAAiB,OAAO,KAAK,eAAe;AAAA,IAC5C,GAAI,OAAO,gBAAgB,gBAAgB,WAAW,IAClD,CAAC,IACD;AAAA,MACE;AAAA,MACA,GAAG,OAAO,gBAAgB,gBAAgB;AAAA,QACxC,CAAC,YACC,KAAK,QAAQ,UAAU,OAAO,eAAe,QAAQ,KAAK,KAAK,QAAQ,UAAU;AAAA,MACrF;AAAA,IACF;AAAA,IACJ;AAAA,IACA;AAAA,IACA,GAAG,OAAO;AAAA,IACV;AAAA,IACA;AAAA,IACA,GAAI,OAAO,aAAa,WAAW,IAC/B,CAAC,wCAAwC,IACzC;AAAA,MACE,GAAG,OAAO,aAAa,QAAQ,wBAAwB;AAAA,MACvD;AAAA,MACA,GAAG,8BAA8B,OAAO,gBAAgB;AAAA,MACxD,GAAI,OAAO,iBAAiB,WAAW,IAAI,CAAC,IAAI,CAAC,EAAE;AAAA,MACnD,sBAAsB,OAAO,KAAK,SAAS;AAAA,IAC7C;AAAA,EACN,EAAE,KAAK,IAAI,IAAI;AAEnB;AAEA,SAAS,8BACP,YACA,SACyB;AACzB,SAAO;AAAA,IACL,WAAW,QAAQ;AAAA,IACnB,YAAY,+BAA+B,YAAY,OAAO;AAAA,IAC9D,OAAO,QAAQ;AAAA,IACf,KAAK,QAAQ;AAAA,EACf;AACF;AAEA,SAAS,+BACP,YACA,SACQ;AACR,SAAO,GAAG,WAAW,QAAQ,SAAS,EAAE,CAAC,IAAI,QAAQ,IAAI,QAAQ,eAAe,EAAE,CAAC;AACrF;AAEA,eAAe,oBACb,UACA,WACoC;AACpC,QAAM,WACJ,cAAc,SACV,MAAM,aAAa,QAAQ,KAC1B,MAAM,aAAa,QAAQ,GAAG;AAAA,IAC7B,CAAC,YAAY,QAAQ,cAAc;AAAA,EACrC;AAEN,MAAI,cAAc,UAAa,SAAS,WAAW,GAAG;AACpD,UAAM,IAAI,MAAM,WAAW,SAAS,kBAAkB;AAAA,EACxD;AAEA,SAAO,MAAM,QAAQ;AAAA,IACnB,SAAS,IAAI,OAAO,YAAY;AAC9B,YAAM,SAAS,MAAM,SAAS,QAAQ,QAAQ,QAAQ,SAAS;AAE/D,aAAO;AAAA,QACL,GAAG;AAAA,QACH,qBAAqB,QAAQ,wBAAwB;AAAA,QACrD,mBAAmB,QAAQ,kBAAkB;AAAA,QAC7C,cAAc,QAAQ,UAAU;AAAA,MAClC;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAEA,eAAe,iBACb,UACA,WACiB;AACjB,SAAO,MAAM,SAAS;AAAA,IACpB,OAAO,aACJ,MAAM,SAAS;AAAA,MACd;AAAA;AAAA;AAAA;AAAA,cAIM,cAAc,SAAY,KAAK,oBAAoB;AAAA;AAAA,MAEzD,cAAc,SAAY,SAAY,CAAC,SAAS;AAAA,MAChD,CAAC,QAAQ,OAAO,IAAI,KAAK;AAAA,IAC3B,KAAM;AAAA,EACV;AACF;AAEA,eAAe,0BACb,UACA,MACA,WACiD;AACjD,QAAM,WAAW,MAAM,SAAS,eAAe,aAAa,IAAI;AAEhE,SAAO,cAAc,SACjB,WACA,SAAS,OAAO,CAAC,SAAS,KAAK,aAAa,SAAS;AAC3D;AAEA,SAAS,qCACP,UACA,UAC2B;AAC3B,QAAM,oBAAoB,IAAI;AAAA,IAC5B,SAAS,OAAO,CAAC,SAAS,KAAK,OAAO,EAAE,IAAI,CAAC,SAAS,KAAK,QAAQ;AAAA,EACrE;AAEA,SAAO,SAAS,OAAO,CAAC,YAAY,kBAAkB,IAAI,QAAQ,SAAS,CAAC;AAC9E;AAEA,SAAS,sBACP,SACA,OACiB;AACjB,QAAM,eAAe,SAAS,OAAO;AACrC,QAAM,aAAa,SAAS,KAAK;AAEjC,SAAO;AAAA,IACL,iBAAiB,QAAQ;AAAA,IACzB;AAAA,IACA,SAAS,cAAc,cAAc,UAAU;AAAA,IAC/C,eAAe,MAAM;AAAA,IACrB;AAAA,EACF;AACF;AAEA,SAAS,mBAAmB,OAAe,UAAmC;AAC5E,MAAI,SAAS,kBAAkB,KAAK,SAAS,eAAe,GAAG;AAC7D,WAAO,GAAG,KAAK;AAAA,EACjB;AAEA,SAAO,GAAG,KAAK,KAAK,SAAS,eAAe,IAAI,SAAS,aAAa,cAAc,SAAS,YAAY,IAAI,SAAS,UAAU,WAAW,SAAS,OAAO;AAC7J;AAEA,SAAS,wBAAwB,OAOX;AACpB,MAAI,MAAM,gBAAgB,KAAK,MAAM,gBAAgB,WAAW,GAAG;AACjE,WAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,QAAQ;AAAA,IACZ,MAAM,aACF,0CAA0C,MAAM,oBAAoB,YAAY,sDAAsD,MACtI;AAAA,EACN;AAEA,QAAM;AAAA,IACJ;AAAA,MACE;AAAA,MACA,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AACA,QAAM;AAAA,IACJ;AAAA,MACE;AAAA,MACA,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,2BACP,OACA,SACA,OACQ;AACR,QAAM,eAAe,SAAS,OAAO;AACrC,QAAM,aAAa,SAAS,KAAK;AACjC,QAAM,QAAQ,eAAe,IAAI,IAAI,eAAe;AACpD,QAAM,WAAW,cAAc,cAAc,UAAU;AAEvD,MAAI,SAAS,GAAG;AACd,WAAO,GAAG,KAAK;AAAA,EACjB;AACA,MAAI,SAAS,KAAK;AAChB,WAAO,GAAG,KAAK,YAAY,QAAQ;AAAA,EACrC;AACA,MAAI,SAAS,KAAK;AAChB,WAAO,GAAG,KAAK,YAAY,QAAQ;AAAA,EACrC;AAEA,SAAO,GAAG,KAAK,YAAY,QAAQ;AACrC;AAEA,SAAS,0BAA0B,OAWD;AAChC,QAAM,eAAqC,CAAC;AAE5C,MAAI,MAAM,gBAAgB,WAAW,GAAG;AACtC,iBAAa,KAAK;AAAA,MAChB,SAAS,iBAAiB;AAAA,QACxB,GAAG,MAAM,UAAU;AAAA,QACnB;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,MACD,gBACE;AAAA,MACF,OAAO;AAAA,IACT,CAAC;AACD,WAAO;AAAA,EACT;AAEA,MAAI,MAAM,qBAAqB,SAAS,GAAG;AACzC,iBAAa,KAAK;AAAA,MAChB,SAAS,iBAAiB;AAAA,QACxB;AAAA,QACA;AAAA,QACA;AAAA,QACA,MAAM;AAAA,QACN;AAAA,QACA;AAAA,MACF,CAAC;AAAA,MACD,iBAAiB,MAAM,qBAAqB;AAAA,MAC5C,cAAc,SAAS,MAAM,oBAAoB;AAAA,MACjD,gBACE;AAAA,MACF,OAAO;AAAA,IACT,CAAC;AAAA,EACH,WAAW,CAAC,MAAM,mBAAmB;AACnC,iBAAa,KAAK;AAAA,MAChB,SAAS,iBAAiB,CAAC,GAAG,MAAM,UAAU,UAAU,MAAM,CAAC;AAAA,MAC/D,gBACE;AAAA,MACF,OAAO;AAAA,IACT,CAAC;AAAA,EACH;AAEA,eAAa;AAAA,IACX,GAAG,uBAAuB;AAAA,MACxB,YAAY,MAAM;AAAA,MAClB,SAAS,MAAM;AAAA,MACf,eAAe,MAAM;AAAA,MACrB,UAAU,MAAM;AAAA,MAChB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO,MAAM;AAAA,IACf,CAAC;AAAA,EACH;AACA,eAAa;AAAA,IACX,GAAG,uBAAuB;AAAA,MACxB,YAAY,MAAM;AAAA,MAClB,SAAS,MAAM;AAAA,MACf,eAAe,MAAM;AAAA,MACrB,UAAU,MAAM;AAAA,MAChB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO,MAAM;AAAA,IACf,CAAC;AAAA,EACH;AACA,eAAa;AAAA,IACX,GAAG,uBAAuB;AAAA,MACxB,YAAY,MAAM;AAAA,MAClB,SAAS,MAAM;AAAA,MACf,eAAe,MAAM;AAAA,MACrB,UAAU,MAAM;AAAA,MAChB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO,MAAM;AAAA,IACf,CAAC;AAAA,EACH;AAEA,SAAO;AACT;AAEA,SAAS,uBAAuB,OAQE;AAChC,QAAM,aAAa,IAAI,IAAI,MAAM,QAAQ,IAAI,CAAC,YAAY,QAAQ,SAAS,CAAC;AAC5E,QAAM,UAAU,MAAM,MAAM;AAAA,IAC1B,CAAC,YAAY,CAAC,WAAW,IAAI,QAAQ,SAAS;AAAA,EAChD;AAEA,MAAI,QAAQ,WAAW,GAAG;AACxB,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,eAAe,SAAS,OAAO;AAErC,SAAO;AAAA,IACL;AAAA,MACE,SAAS,iBAAiB;AAAA,QACxB;AAAA,QACA;AAAA,QACA;AAAA,QACA,MAAM;AAAA,QACN;AAAA,QACA,MAAM;AAAA,QACN;AAAA,MACF,CAAC;AAAA,MACD,iBAAiB,QAAQ;AAAA,MACzB;AAAA,MACA,UAAU;AAAA,QACR,MAAM;AAAA,QACN;AAAA,QACA,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA,gBAAgB;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,QACN;AAAA,MACF;AAAA,MACA,OAAO,MAAM;AAAA,IACf;AAAA,EACF;AACF;AAEA,SAAS,gCACP,SACA,OACA,cACQ;AACR,QAAM,aAAa,SAAS,KAAK;AACjC,QAAM,eAAe,SAAS,OAAO;AAErC,MAAI,eAAe,GAAG;AACpB,WAAO;AAAA,EACT;AACA,MACE,MAAM,WAAW,KACjB,eAAe,cAAc,OAC7B,gBAAgB,KAChB;AACA,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEA,SAAS,yBACP,aACmB;AACnB,SAAO;AAAA,IACL,GAAG,YAAY,KAAK;AAAA,IACpB,GAAI,YAAY,oBAAoB,SAChC,CAAC,IACD;AAAA,MACE,cAAc,YAAY,eAAe,eAAe,YAAY,YAAY;AAAA,IAClF;AAAA,IACJ,qBAAqB,YAAY,cAAc;AAAA,IAC/C,GAAI,YAAY,aAAa,SACzB,CAAC,cAAc,YAAY,OAAO,EAAE,IACpC;AAAA,MACE;AAAA,MACA,gBAAgB,YAAY,OAAO;AAAA,MACnC,cAAc,YAAY,SAAS,KAAK;AAAA,MACxC,eAAe,YAAY,SAAS,OAAO,KAAK,YAAY,YAAY,SAAS,OAAO,cAAc,sBAAsB,YAAY,SAAS,OAAO,MAAM;AAAA,MAC9J,aAAa,iCAAiC,YAAY,SAAS,YAAY,GAAG,CAAC,IAAI,iCAAiC,YAAY,SAAS,YAAY,GAAG,CAAC;AAAA,IAC/J;AAAA,EACN;AACF;AAEA,SAAS,8BACP,OACmB;AACnB,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO,CAAC;AAAA,EACV;AAEA,SAAO;AAAA,IACL;AAAA,IACA,GAAG,MAAM,QAAQ,CAAC,SAAS;AAAA,MACzB,KAAK,KAAK,OAAO;AAAA,MACjB,aAAa,KAAK,IAAI,KAAK,KAAK,OAAO,gBAAgB,KAAK,WAAW;AAAA,MACvE,cAAc,KAAK,OAAO;AAAA,IAC5B,CAAC;AAAA,EACH;AACF;AAEA,SAAS,SAAS,UAA4D;AAC5E,SAAO,SAAS,OAAO,CAAC,OAAO,YAAY,QAAQ,QAAQ,OAAO,CAAC;AACrE;AAEA,SAAS,cAAc,WAAmB,aAA6B;AACrE,MAAI,gBAAgB,GAAG;AACrB,WAAO;AAAA,EACT;AAEA,QAAM,UAAW,YAAY,cAAe;AAE5C,SAAO,GAAG,OAAO,UAAU,OAAO,IAAI,QAAQ,QAAQ,CAAC,IAAI,QAAQ,QAAQ,CAAC,CAAC;AAC/E;AA7xBA;AAAA;AAAA;AAOA;AAGA;AACA;AAUA;AAAA;AAAA;;;ACrBA;AAAA,EACE;AAAA,OAEK;AAIP,eAAsB,+BACpB,SACA,QACwB;AACxB,MAAI,WAAW,QAAQ,WAAW,QAAW;AAC3C,WAAO;AAAA,EACT;AAEA,MAAI;AAEJ,MAAI,QAAQ,qBAAqB,mBAAmB;AAClD,QAAI,QAAQ,cAAc,QAAW;AACnC,YAAM,IAAI,MAAM,8CAA8C;AAAA,IAChE;AAEA,YAAQ;AAAA,MACN,YAAY,QAAQ;AAAA,MACpB,aAAa,QAAQ;AAAA,MACrB;AAAA,MACA,QAAQ,QAAQ;AAAA,MAChB,YAAY,QAAQ;AAAA,MACpB,MAAM;AAAA,MACN,WAAW,QAAQ;AAAA,IACrB;AAAA,EACF,WAAW,QAAQ,qBAAqB,YAAY;AAClD,QAAI,QAAQ,cAAc,QAAW;AACnC,YAAM,IAAI,MAAM,qDAAqD;AAAA,IACvE;AAEA,YAAQ;AAAA,MACN,YAAY,QAAQ;AAAA,MACpB,aAAa,QAAQ;AAAA,MACrB;AAAA,MACA,QAAQ,QAAQ;AAAA,MAChB,YAAY,QAAQ;AAAA,MACpB,MAAM;AAAA,MACN,OAAO,QAAQ,SAAS;AAAA,MACxB,GAAI,QAAQ,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,QAAQ,MAAM;AAAA,MAC9D,GAAI,QAAQ,kBAAkB,SAC1B,CAAC,IACD,EAAE,eAAe,QAAQ,cAAc;AAAA,MAC3C,GAAI,QAAQ,kBAAkB,SAC1B,CAAC,IACD,EAAE,eAAe,QAAQ,cAAc;AAAA,MAC3C,WAAW,QAAQ;AAAA,IACrB;AAAA,EACF,WAAW,QAAQ,qBAAqB,WAAW;AACjD,QAAI,QAAQ,cAAc,QAAW;AACnC,YAAM,IAAI,MAAM,oDAAoD;AAAA,IACtE;AAEA,YAAQ;AAAA,MACN,YAAY,QAAQ;AAAA,MACpB,aAAa,QAAQ;AAAA,MACrB;AAAA,MACA,GAAI,QAAQ,kBAAkB,SAC1B,CAAC,IACD,EAAE,eAAe,QAAQ,cAAc;AAAA,MAC3C,QAAQ,QAAQ;AAAA,MAChB,YAAY,QAAQ;AAAA,MACpB,MAAM;AAAA,MACN,OAAO,QAAQ,SAAS;AAAA,MACxB,GAAI,QAAQ,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,QAAQ,MAAM;AAAA,MAC9D,GAAI,QAAQ,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,QAAQ,KAAK;AAAA,MAC3D,GAAI,QAAQ,kBAAkB,SAC1B,CAAC,IACD,EAAE,eAAe,QAAQ,cAAc;AAAA,MAC3C,GAAI,QAAQ,kBAAkB,SAC1B,CAAC,IACD,EAAE,eAAe,QAAQ,cAAc;AAAA,MAC3C,WAAW,QAAQ;AAAA,IACrB;AAAA,EACF,WAAW,QAAQ,qBAAqB,cAAc;AACpD,YAAQ;AAAA,MACN,YAAY,QAAQ;AAAA,MACpB,aAAa,QAAQ;AAAA,MACrB,UAAU,QAAQ,YAAY;AAAA,MAC9B;AAAA,MACA,GAAI,QAAQ,cAAc,SACtB,CAAC,IACD,EAAE,WAAW,QAAQ,UAAU;AAAA,MACnC,GAAI,QAAQ,kBAAkB,SAC1B,CAAC,IACD,EAAE,eAAe,QAAQ,cAAc;AAAA,MAC3C,QAAQ,QAAQ;AAAA,MAChB,KAAK,QAAQ,OAAO;AAAA,MACpB,YAAY,QAAQ;AAAA,MACpB,MAAM;AAAA,MACN,OAAO,QAAQ,SAAS;AAAA,MACxB,GAAI,QAAQ,kBAAkB,SAC1B,CAAC,IACD,EAAE,eAAe,QAAQ,cAAc;AAAA,MAC3C,GAAI,QAAQ,kBAAkB,SAC1B,CAAC,IACD,EAAE,eAAe,QAAQ,cAAc;AAAA,MAC3C,OAAO,QAAQ;AAAA,IACjB;AAAA,EACF,OAAO;AACL,YAAQ;AAAA,MACN,YAAY,QAAQ;AAAA,MACpB,aAAa,QAAQ;AAAA,MACrB;AAAA,MACA,GAAI,QAAQ,cAAc,SACtB,CAAC,IACD,EAAE,WAAW,QAAQ,UAAU;AAAA,MACnC,GAAI,QAAQ,kBAAkB,SAC1B,CAAC,IACD,EAAE,eAAe,QAAQ,cAAc;AAAA,MAC3C,QAAQ,QAAQ;AAAA,MAChB,YAAY,QAAQ;AAAA,MACpB,MAAM;AAAA,MACN,GAAI,QAAQ,aAAa,SAAY,CAAC,IAAI,EAAE,UAAU,QAAQ,SAAS;AAAA,MACvE,GAAI,QAAQ,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,QAAQ,MAAM;AAAA,MAC9D,GAAI,QAAQ,kBAAkB,SAC1B,CAAC,IACD,EAAE,eAAe,QAAQ,cAAc;AAAA,MAC3C,GAAI,QAAQ,kBAAkB,SAC1B,CAAC,IACD,EAAE,eAAe,QAAQ,cAAc;AAAA,MAC3C,GAAI,QAAQ,kBAAkB,SAC1B,CAAC,IACD,EAAE,eAAe,QAAQ,cAAc;AAAA,MAC3C,OAAO,QAAQ;AAAA,IACjB;AAAA,EACF;AAEA,SAAO,MAAM,yBAAyB,KAAK;AAC7C;AAtIA;AAAA;AAAA;AAAA;AAAA;;;ACAO,SAAS,kBACd,OACA,OACU;AACV,SAAO,UAAU,SAAY,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,KAAK,IAAI,GAAG,KAAK;AACxE;AALA;AAAA;AAAA;AAAA;AAAA;;;ACEO,SAAS,mBAAmB,QAAqC;AACtE,SAAO,0BAA0B,OAAO,KAAK,OAAO,IAAI;AAC1D;AAEO,SAAS,0BAA0B,KAAa,MAAsB;AAC3E,SAAO,CAAC,MAAM,GAAG,OAAO,oBAAoB,IAAI,CAAC,EAAE,KAAK,IAAI;AAC9D;AAEA,SAAS,oBAAoB,MAAsB;AACjD,QAAM,QAAQ,KAAK,QAAQ,WAAW,IAAI,EAAE,MAAM,IAAI;AAEtD,SAAO,MAAM,SAAS,KAAK,MAAM,CAAC,GAAG,KAAK,MAAM,GAAI,OAAM,MAAM;AAChE,SAAO,MAAM,SAAS,KAAK,MAAM,GAAG,EAAE,GAAG,KAAK,MAAM,GAAI,OAAM,IAAI;AAElE,QAAM,kBAA4B,CAAC;AACnC,aAAW,QAAQ,OAAO;AACxB,QAAI,KAAK,KAAK,MAAM,MAAM,gBAAgB,GAAG,EAAE,MAAM,GAAI;AACzD,oBAAgB,KAAK,KAAK,KAAK,MAAM,KAAK,KAAK,IAAI;AAAA,EACrD;AAEA,SAAO,gBAAgB,KAAK,IAAI;AAClC;AAvBA;AAAA;AAAA;AAAA;AAAA;;;ACAA,OAAyC;AACzC,SAAS,uBAAAK,4BAA2B;AAM7B,SAAS,yBAAyB,YAAmC;AAC1E,SAAO,eAAe,OAClB,KACA;AAAA;AAAA,aAAkBA,oBAAmB,SAAS,UAAU;AAC9D;AAEO,SAAS,mBAAmB,MAAmC;AACpE,SAAO;AAAA,IACL,KAAK;AAAA,IACL,0BAA0B,KAAK,IAAI,KAAK,MAAM,EAAE,MAAM,IAAI;AAAA,EAC5D,EAAE,KAAK,IAAI;AACb;AAEO,SAAS,4BACd,UACU;AACV,MAAI,SAAS,QAAQ,WAAW,GAAG;AACjC,WAAO,CAAC,QAAQ;AAAA,EAClB;AAEA,QAAM,QAAQ,SAAS,QAAQ,QAAQ,CAAC,MAAM,UAAU;AAAA,IACtD,GAAI,UAAU,IAAI,CAAC,IAAI,CAAC,EAAE;AAAA,IAC1B,eAAe,QAAQ,CAAC,IAAI,SAAS,KAAK;AAAA,IAC1C,mBAAmB,IAAI;AAAA,EACzB,CAAC;AACD,QAAM,sBAAsB,SAAS,QAAQ,SAAS;AAEtD,QAAM;AAAA,IACJ,GAAG,kCAAkC,UAAU,mBAAmB;AAAA,EACpE;AACA,SAAO;AACT;AAEO,SAAS,kCACd,UACA,qBACU;AACV,MAAI,SAAS,eAAe,MAAM;AAChC,WAAO;AAAA,MACL;AAAA,MACA,GAAG,mBAAmB,mBAAmBA,oBAAmB,SAAS,SAAS,UAAU;AAAA,IAC1F;AAAA,EACF;AAEA,SAAO,sBAAsB,IACzB,CAAC,IAAI,GAAG,mBAAmB,mBAAmB,IAC9C,CAAC;AACP;AAtDA;AAAA;AAAA;AAIA;AACA;AAAA;AAAA;;;ACJA,SAAS,uBAAAC,4BAA2B;AAE7B,SAAS,iBAAiB,YAAmC;AAClE,MAAI,eAAe,MAAM;AACvB,WAAO;AAAA,EACT;AAEA,SAAO;AAAA;AAAA,aAAkBA,oBAAmB,SAAS,UAAU;AACjE;AAEO,SAAS,gBAAgB,QAAmC;AACjE,MAAI,OAAO,UAAU,SAAS,OAAO,MAAM,SAAS,GAAG;AACrD,WAAO,2DAA2DA,oBAAmB,iCAAiC,OAAO,KAAK,IAAI,mBAAmB,MAAM,CAAC;AAAA;AAAA,EAClK;AAEA,QAAM,QAAQ;AAAA,IACZ;AAAA,IACA;AAAA,EACF;AAEA,MAAI,OAAO,aAAa,MAAM;AAC5B,UAAM,KAAK,cAAc,OAAO,SAAS,OAAO,EAAE;AAAA,EACpD;AAEA,SAAO,GAAG,MAAM,KAAK,IAAI,CAAC;AAAA;AAC5B;AAEO,SAAS,mBAAmB,QAAmC;AACpE,MAAI,OAAO,aAAa,MAAM;AAC5B,WAAO;AAAA,EACT;AAEA,SAAO;AAAA;AAAA,aAAkB,OAAO,SAAS,OAAO;AAClD;AAlCA;AAAA;AAAA;AAAA;AAAA;;;ACAO,SAAS,uBAAuB,MAAmC;AACxE,SAAO,SAAS,YAAY,SAAS;AACvC;AAEO,SAAS,wBACd,KACkC;AAClC,QAAM,QAAQ,oDAAoD,KAAK,GAAG;AAE1E,SAAO,QAAQ,CAAC;AAClB;AAEO,SAAS,eAAe,IAAoB;AACjD,QAAM,CAAC,MAAM,OAAO,MAAM,IAAI,GAAG,MAAM,GAAG;AAE1C,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO,kBAAkB,SAAS,EAAE;AAAA,IACtC,KAAK;AACH,aAAO,kBAAkB,SAAS,EAAE;AAAA,IACtC,KAAK;AACH,aAAO,kBAAkB,SAAS,EAAE,WAAW,UAAU,GAAG;AAAA,IAC9D,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO,gBAAgB,SAAS,EAAE;AAAA,IACpC,KAAK;AACH,aAAO,kBAAkB,SAAS,EAAE;AAAA,IACtC;AACE,aAAO;AAAA,EACX;AACF;AA/BA,IAAAC,YAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAKa,4BACA;AANb;AAAA;AAAA;AAKO,IAAM,6BAA6B;AACnC,IAAM,4BAA4B;AAAA,MACvC;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,IACF;AAAA;AAAA;;;AClBO,SAAS,kBAAkB,OAAwB;AACxD,MAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,MAAM,QAAQ,KAAK,GAAG;AACvE,WAAO,OAAO,KAAK;AAAA,EACrB;AAEA,SAAO,OAAO,QAAQ,KAAK,EACxB,OAAO,CAAC,CAAC,EAAE,IAAI,MAAM,SAAS,UAAa,SAAS,IAAI,EACxD,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,MAAM,uBAAuB,MAAM,KAAK,CAAC,EAC7D,IAAI,CAAC,CAAC,KAAK,IAAI,MAAM,GAAG,GAAG,KAAK,iBAAiB,IAAI,CAAC,EAAE,EACxD,KAAK,IAAI;AACd;AAEO,SAAS,oBAAoB,OAAwB;AAC1D,MAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,MAAM,QAAQ,KAAK,GAAG;AACvE,WAAO,OAAO,KAAK;AAAA,EACrB;AAEA,QAAM,SAAS;AAMf,MAAI,OAAO,UAAU,QAAW;AAC9B,WAAO,GAAG,OAAO,OAAO,OAAO,IAAI,OAAO,KAAK;AAAA,EACjD;AAEA,MAAI,OAAO,UAAU,QAAW;AAC9B,WAAO,CAAC,OAAO,KAAK,iBAAiB,OAAO,KAAK,CAAC,EAC/C,OAAO,CAAC,SAAyB,SAAS,UAAa,SAAS,EAAE,EAClE,KAAK,IAAI;AAAA,EACd;AAEA,SAAO,kBAAkB,KAAK;AAChC;AAEA,SAAS,iBAAiB,OAAuC;AAC/D,SAAO,mBAAmB,KAAK,EAC5B,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,GAAG,GAAG,KAAK,KAAK,EAAE,EACxC,KAAK,IAAI;AACd;AAEO,SAAS,kBAAkB,OAAuC;AACvE,SAAO,mBAAmB,KAAK,EAC5B,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,EACvC,KAAK,GAAG;AACb;AAEA,SAAS,mBACP,OACwC;AACxC,QAAM,UAA8D;AAAA,IAClE,CAAC,UAAU,MAAM,MAAM;AAAA,IACvB,CAAC,iBAAiB,MAAM,eAAe,CAAC;AAAA,IACxC,CAAC,mBAAmB,MAAM,iBAAiB,CAAC;AAAA,IAC5C,CAAC,mBAAmB,MAAM,iBAAiB,CAAC;AAAA,EAC9C;AAEA,SAAO,QAAQ;AAAA,IACb,CAAC,UAA8C,MAAM,CAAC,MAAM;AAAA,EAC9D;AACF;AAEA,SAAS,uBAAuB,MAAc,OAAuB;AACnE,SAAO,uBAAuB,IAAI,IAAI,uBAAuB,KAAK;AACpE;AAEA,SAAS,uBAAuB,KAAqB;AACnD,QAAM,QAAQ,0BAA0B;AAAA,IACtC;AAAA,EACF;AAEA,SAAO,QAAQ,IAAI,0BAA0B,SAAS;AACxD;AAEA,SAAS,iBAAiB,OAAwB;AAChD,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAO,MAAM,IAAI,CAAC,SAAS,OAAO,IAAI,CAAC,EAAE,KAAK,IAAI;AAAA,EACpD;AACA,MAAI,OAAO,UAAU,YAAY,UAAU,MAAM;AAC/C,WAAO,cAAc,KAAK,EAAE,QAAQ;AAAA,EACtC;AAEA,SAAO,OAAO,KAAK;AACrB;AAvFA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;;;ACgBO,SAAS,iBAAiB,QAAqC;AACpE,QAAM,QAAQ;AAAA,IACZ,OAAO;AAAA,IACP,yBAAyB,MAAM;AAAA,EACjC;AAEA,MAAI,OAAO,aAAa,UAAa,OAAO,SAAS,QAAQ,SAAS,GAAG;AACvE,UAAM;AAAA,MACJ;AAAA,MACA,GAAG,OAAO,SAAS,QAAQ,QAAQ,CAAC,QAAQ,UAAU;AAAA,QACpD,GAAI,UAAU,IAAI,CAAC,IAAI,CAAC,EAAE;AAAA,QAC1B,eAAe,QAAQ,CAAC,IAAI,OAAO,UAAU,SAAS,OAAO,UAAU,QAAQ,MAAM;AAAA,QACrF,mBAAmB,MAAM;AAAA,MAC3B,CAAC;AAAA,IACH;AAEA,UAAM,sBAAsB,OAAO,SAAS,QAAQ,OAAO,SAAS;AAEpE,UAAM;AAAA,MACJ,GAAG;AAAA,QACD,OAAO;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,MAAI,OAAO,cAAc,QAAW;AAClC,UAAM,KAAK,IAAI,GAAG,oBAAoB,OAAO,SAAS,CAAC;AAAA,EACzD;AAEA,SAAO,MAAM,KAAK,IAAI;AACxB;AAEO,SAAS,uBACd,SACA,SACQ;AACR,QAAM,cAAc,QAAQ,KAAK,CAAC,WAAW,iBAAiB,OAAO,GAAG,CAAC;AACzE,MAAI,gBAAgB,QAAW;AAC7B,WAAO;AAAA,EACT;AAEA,QAAM,UAAU,YAAY,qBAAqB,QAAQ;AAEzD,SAAO;AAAA;AAAA;AAAA,IAAiE,iBAAiB,CAAC,0BAA0B,SAAS,YAAY,GAAG,CAAC,CAAC,CAAC;AACjJ;AAEA,SAAS,0BAA0B,SAAiB,WAA2B;AAC7E,MAAI,QAAQ,WAAW,aAAa,GAAG;AACrC,WAAO,GAAG,QAAQ,QAAQ,SAAS,EAAE,CAAC,IAAI,UAAU,MAAM,UAAU,MAAM,CAAC;AAAA,EAC7E;AAEA,SAAO,0BAA0B,SAAS,SAAS;AACrD;AAEA,SAAS,iBAAiB,KAAsB;AAC9C,SACE,IAAI,WAAW,SAAS,KACxB,yBAAyB,GAAG,EAAE,gBAAgB;AAElD;AAEA,SAAS,oBAAoB,WAA6C;AACxE,QAAM,QAAQ;AAAA,IACZ,GAAG,UAAU,OAAO;AAAA,IACpB,GAAG,UAAU,SAAS;AAAA,IACtB,GAAG,UAAU,QAAQ;AAAA,EACvB,EAAE,QAAQ,CAAC,QAAQ,UAAU;AAAA,IAC3B,GAAI,UAAU,IAAI,CAAC,IAAI,CAAC,EAAE;AAAA,IAC1B,iBAAiB,MAAM;AAAA,EACzB,CAAC;AAED,SAAO,MAAM,WAAW,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,GAAG,KAAK;AAC9D;AAEA,SAAS,yBAAyB,QAAuC;AACvE,QAAM,cAAc,yBAAyB,MAAM;AAEnD,MACE,wBAAwB,OAAO,GAAG,MAAM,UACxC,OAAO,SAAS,QAChB;AACA,WAAO;AAAA,MACL,GAAG,mBAAmB;AAAA,QACpB,MAAM,OAAO;AAAA,QACb,KAAK,OAAO;AAAA,MACd,CAAC,EAAE,MAAM,IAAI;AAAA,MACb,GAAG;AAAA,IACL;AAAA,EACF;AAEA,MAAI,OAAO,cAAc,QAAW;AAClC,WAAO,CAAC,OAAO,KAAK,wBAAwB,MAAM,GAAG,GAAG,WAAW;AAAA,EACrE;AAEA,MAAI,yBAAyB,MAAM,GAAG;AACpC,WAAO;AAAA,MACL,CAAC,OAAO,KAAK,OAAO,OAAO,kBAAkB,OAAO,KAAK,CAAC,EACvD,OAAO,CAAC,SAAyB,SAAS,UAAa,SAAS,EAAE,EAClE,KAAK,IAAI;AAAA,MACZ,GAAG;AAAA,IACL;AAAA,EACF;AAEA,SAAO;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO,UAAU,SAAY,SAAY,kBAAkB,OAAO,KAAK;AAAA,IACvE,OAAO,aAAa,SAAY,OAAO,OAAO;AAAA,IAC9C,GAAG;AAAA,EACL,EAAE,OAAO,CAAC,SAAyB,SAAS,UAAa,SAAS,EAAE;AACtE;AAEA,SAAS,yBAAyB,QAAuC;AACvE,QAAM,UACJ,OAAO,YAAY,UAAa,OAAO,QAAQ,SAAS,IACpD,OAAO,UACP,OAAO,cAAc,UAAa,OAAO,sBAAsB,SAC7D,CAAC,IACD;AAAA,IACE;AAAA,MACE,WAAW,OAAO;AAAA,MAClB,mBAAmB,OAAO;AAAA,IAC5B;AAAA,EACF;AAER,SAAO,QAAQ;AAAA,IAAI,CAAC,WAClB;AAAA,MACE,OAAO,cAAc,SACjB,SACA,aAAa,OAAO,SAAS;AAAA,MACjC,OAAO;AAAA,IACT,EACG,OAAO,CAAC,SAAyB,SAAS,MAAS,EACnD,KAAK,IAAI;AAAA,EACd;AACF;AAEO,SAAS,uBACd,SACQ;AACR,SAAO,QAAQ,MAAM,wBAAwB,IAAI,OAAO;AAC1D;AAEA,SAAS,yBACP,QAGA;AACA,SACE,OAAO,UAAU,UACjB,OAAO,IAAI,WAAW,iBAAiB,KACvC,CAAC,OAAO,IAAI,SAAS,QAAQ;AAEjC;AAEA,SAAS,wBAAwB,QAAqC;AACpE,QAAM,SAAS,qBAAqB,OAAO,GAAG;AAE9C,MAAI,WAAW,QAAW;AACxB,WAAO,GAAG,OAAO,gBAAgB,WAAW,IAAI,OAAO,aAAa,aAAa,IAAI,OAAO,eAAe,UAAU;AAAA,EACvH;AAEA,SAAO,GAAG,OAAO,gBAAgB,OAAO,UAAU,IAAI,OAAO,UAAU,KAAK,OAAO,aAAa,OAAO,SAAS,IAAI,OAAO,eAAe,OAAO,SAAS,IAAI,OAAO,SAAS;AAChL;AAEA,SAAS,qBAAqB,KAMhB;AACZ,QAAM,QACJ,iEAAiE,KAAK,GAAG;AAE3E,MACE,QAAQ,CAAC,MAAM,UACf,MAAM,CAAC,MAAM,UACb,MAAM,CAAC,MAAM,QACb;AACA,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,WAAW,MAAM,CAAC;AAAA,IAClB,WAAW,mBAAmB,MAAM,CAAC,CAAC;AAAA,IACtC,YAAY,MAAM,CAAC;AAAA,EACrB;AACF;AAEO,SAAS,wBAAwB,QAAqC;AAC3E,MAAI,yBAAyB,MAAM,GAAG;AACpC,WAAO,yBAAyB,MAAM,EAAE,KAAK,IAAI;AAAA,EACnD;AAEA,SAAO,kBAAkB,MAAM;AACjC;AAvNA;AAAA;AAAA;AAAA;AAKA;AAMA,IAAAC;AACA;AACA;AACA;AACA;AAAA;AAAA;;;ACYA,eAAsB,iBACpB,MACA,SAC8B;AAC9B,QAAM,gBAAgB,0BAA0B,IAAI;AAEpD,MAAI,KAAK,SAAS,UAAU;AAC1B,WAAO;AAAA,MACL,GAAG;AAAA,MACH,GAAI,QAAQ,kBAAkB,UAAa,KAAK,aAAa,SACzD,CAAC,IACD;AAAA,QACE,UAAU,MAAM,4BAA4B,KAAK,UAAU;AAAA,UACzD,GAAG;AAAA,UACH,kBAAkB;AAAA,UAClB,WAAW,eAAe,KAAK,EAAE;AAAA,QACnC,CAAC;AAAA,MACH;AAAA,MACJ,aAAa,KAAK;AAAA,MAClB,WAAW,KAAK;AAAA,MAChB,GAAI,KAAK,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM;AAAA,MACxD,cAAc,KAAK;AAAA,MACnB,KAAK,eAAe,KAAK,EAAE;AAAA,IAC7B;AAAA,EACF;AAEA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAI,QAAQ,kBAAkB,UAAa,KAAK,aAAa,SACzD,CAAC,IACD;AAAA,MACE,UAAU,MAAM,4BAA4B,KAAK,UAAU;AAAA,QACzD,GAAG;AAAA,QACH,kBAAkB;AAAA,QAClB,WAAW,eAAe,KAAK,EAAE;AAAA,MACnC,CAAC;AAAA,IACH;AAAA,IACJ,OAAO,KAAK;AAAA,IACZ,GAAI,KAAK,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM;AAAA,IACxD,GAAI,uBAAuB,KAAK,IAAI,IAChC,EAAE,MAAM,KAAK,QAAQ,IACrB,EAAE,MAAM,KAAK,KAAK;AAAA,IACtB,KAAK,eAAe,KAAK,EAAE;AAAA,EAC7B;AACF;AAEO,SAAS,uBACd,SACA,YACA,OACA,WAA4C,CAAC,GAM7C;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAI,SAAS,WAAW,IAAI,CAAC,IAAI,EAAE,SAAS;AAAA,EAC9C;AACF;AAEA,eAAsB,iBACpB,KACA,SAC8B;AAC9B,QAAM,MAAM,eAAe,IAAI,EAAE;AACjC,QAAM,gBAAgB,0BAA0B,GAAG;AAEnD,MAAI,IAAI,SAAS,WAAW;AAC1B,WAAO;AAAA,MACL,GAAG;AAAA,MACH,GAAI,IAAI,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,IAAI,MAAM;AAAA,MACtD,OAAO,IAAI;AAAA,MACX;AAAA,IACF;AAAA,EACF;AACA,MAAI,IAAI,SAAS,iBAAiB;AAChC,WAAO;AAAA,MACL,GAAG;AAAA,MACH,OAAO,IAAI;AAAA,MACX,MAAM;AAAA,MACN;AAAA,IACF;AAAA,EACF;AACA,MAAI,IAAI,SAAS,QAAQ;AACvB,WAAO;AAAA,MACL,GAAG;AAAA,MACH,MAAM,IAAI;AAAA,MACV,OAAO,IAAI;AAAA,MACX,MAAM;AAAA,MACN;AAAA,IACF;AAAA,EACF;AACA,MAAI,IAAI,SAAS,UAAU;AACzB,UAAM,SAAS,IAAI;AAEnB,WAAO;AAAA,MACL,GAAG;AAAA,MACH,GAAI,IAAI,cAAc,SAClB,CAAC,IACD,EAAE,WAAW,MAAM,sBAAsB,IAAI,WAAW,OAAO,EAAE;AAAA,MACrE,GAAI,QAAQ,kBAAkB,UAAa,IAAI,aAAa,SACxD,CAAC,IACD;AAAA,QACE,UAAU,MAAM,4BAA4B,IAAI,UAAU;AAAA,UACxD,GAAG;AAAA,UACH,kBAAkB;AAAA,UAClB,WAAW;AAAA,QACb,CAAC;AAAA,MACH;AAAA,MACJ,aAAa,QAAQ,eAAe;AAAA,MACpC,WAAW,QAAQ,aAAa;AAAA,MAChC,cAAc,QAAQ,gBAAgB;AAAA,MACtC;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAI,IAAI,cAAc,SAClB,CAAC,IACD,EAAE,WAAW,MAAM,sBAAsB,IAAI,WAAW,OAAO,EAAE;AAAA,IACrE,GAAI,QAAQ,kBAAkB,UAAa,IAAI,aAAa,SACxD,CAAC,IACD;AAAA,MACE,UAAU,MAAM,4BAA4B,IAAI,UAAU;AAAA,QACxD,GAAG;AAAA,QACH,kBAAkB;AAAA,QAClB,WAAW;AAAA,MACb,CAAC;AAAA,IACH;AAAA,IACJ,OAAO,IAAI;AAAA,IACX,GAAI,uBAAuB,IAAI,IAAI,IAC/B,EAAE,MAAM,IAAI,QAAQ,IACpB,EAAE,MAAM,IAAI,SAAS,SAAS,UAAU,IAAI,KAAK;AAAA,IACrD;AAAA,EACF;AACF;AAEA,eAAsB,4BACpB,UACA,SACuC;AACvC,SAAO;AAAA,IACL,YAAY,MAAM;AAAA,MAChB;AAAA,QACE,GAAG;AAAA,QACH,kBAAkB;AAAA,MACpB;AAAA,MACA,SAAS;AAAA,IACX;AAAA,IACA,OAAO,SAAS;AAAA,IAChB,SAAS,SAAS,QAAQ,IAAI,kBAAkB;AAAA,IAChD,OAAO,SAAS;AAAA,EAClB;AACF;AAEO,SAAS,mBACd,MACqB;AACrB,SAAO;AAAA,IACL,GAAG,0BAA0B,IAAI;AAAA,IACjC,GAAI,KAAK,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM;AAAA,IACxD,MAAM,KAAK;AAAA,IACX,KAAK,KAAK;AAAA,EACZ;AACF;AAEA,eAAe,sBACb,WACA,SACiC;AACjC,SAAO;AAAA,IACL,QAAQ,MAAM,2BAA2B,UAAU,QAAQ,OAAO;AAAA,IAClE,UAAU,MAAM,2BAA2B,UAAU,UAAU,OAAO;AAAA,IACtE,SAAS,MAAM,2BAA2B,UAAU,SAAS,OAAO;AAAA,EACtE;AACF;AAEA,eAAe,2BACb,QACA,SACkC;AAClC,QAAM,UAAU,MAAM,QAAQ;AAAA,IAC5B,OAAO,MAAM;AAAA,MACX,OAAO,SACL,MAAM,iBAAiB,MAAM;AAAA,QAC3B,GAAG;AAAA,QACH,WAAW;AAAA,MACb,CAAC;AAAA,IACL;AAAA,EACF;AAEA,SAAO,uBAAuB,SAAS,OAAO,YAAY,OAAO,KAAK;AACxE;AAEA,eAAsB,iBACpB,MACA,SACkB;AAClB,QAAM,gBAAgB,0BAA0B,IAAI;AAEpD,UAAQ,KAAK,MAAM;AAAA,IACjB,KAAK,YAAY;AACf,YAAM,EAAE,IAAI,KAAK,MAAM,OAAO,GAAG,KAAK,IAAI;AAE1C,aAAO,EAAE,GAAG,eAAe,GAAG,MAAM,KAAK,KAAK,GAAG;AAAA,IACnD;AAAA,IACA,KAAK;AACH,aAAO;AAAA,QACL,GAAG;AAAA,QACH,IAAI,KAAK;AAAA,QACT,KAAK,KAAK;AAAA,QACV,IAAI,KAAK;AAAA,MACX;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL,GAAG;AAAA,QACH,QAAQ,KAAK,OAAO,MAAM,GAAG,CAAC;AAAA,QAC9B,KAAK,KAAK;AAAA,QACV,GAAI,QAAQ,kBAAkB,SAC1B,CAAC,IACD;AAAA,UACE,UAAU,MAAM,4BAA4B,KAAK,UAAU;AAAA,YACzD,GAAG;AAAA,YACH,kBAAkB;AAAA,YAClB,WAAW,KAAK;AAAA,UAClB,CAAC;AAAA,QACH;AAAA,QACJ,KAAK,KAAK;AAAA,MACZ;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL,GAAG;AAAA,QACH,OAAO,KAAK;AAAA,QACZ,GAAI,QAAQ,kBAAkB,SAC1B,CAAC,IACD;AAAA,UACE,UAAU,MAAM,4BAA4B,KAAK,UAAU;AAAA,YACzD,GAAG;AAAA,YACH,kBAAkB;AAAA,YAClB,WAAW,KAAK;AAAA,UAClB,CAAC;AAAA,QACH;AAAA,QACJ,KAAK,KAAK;AAAA,MACZ;AAAA,IACF,KAAK,WAAW;AACd,aAAO;AAAA,QACL,GAAG;AAAA,QACH,OAAO,KAAK;AAAA,QACZ,OAAO,KAAK;AAAA,QACZ,KAAK,eAAe,KAAK,EAAE;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,KAAK;AACH,aAAO;AAAA,QACL,GAAG;AAAA,QACH,OAAO,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,KAAK,eAAe,KAAK,EAAE;AAAA,MAC7B;AAAA,IACF,KAAK,gBAAgB;AACnB,YAAM,EAAE,IAAI,KAAK,GAAG,KAAK,IAAI;AAE7B,aAAO,EAAE,GAAG,eAAe,GAAG,MAAM,KAAK,eAAe,KAAK,EAAE,EAAE;AAAA,IACnE;AAAA,IACA,KAAK,YAAY;AACf,YAAM;AAAA,QACJ;AAAA,QACA,IAAI;AAAA,QACJ;AAAA,QACA;AAAA,QACA,GAAG;AAAA,MACL,IAAI;AACJ,YAAM,iBAAiB,wBAAwB,KAAK,EAAE;AAEtD,UAAI,mBAAmB,QAAW;AAChC,eAAO;AAAA,UACL,GAAG;AAAA,UACH,GAAI,cAAc,SACd,CAAC,IACD,EAAE,WAAW,MAAM,sBAAsB,WAAW,OAAO,EAAE;AAAA,UACjE,MAAM,KAAK,SAAS;AAAA,UACpB,KAAK,eAAe,KAAK,EAAE;AAAA,QAC7B;AAAA,MACF;AAEA,aAAO;AAAA,QACL,GAAG;AAAA,QACH,GAAG;AAAA,QACH,GAAI,cAAc,SACd,CAAC,IACD,EAAE,WAAW,MAAM,sBAAsB,WAAW,OAAO,EAAE;AAAA,QACjE,GAAI,mBAAmB,SACnB,CAAC,IACD,EAAE,SAAS,eAAe,cAAc,EAAE;AAAA,QAC9C,GAAI,uBAAuB,SACvB,CAAC,IACD,EAAE,aAAa,eAAe,kBAAkB,EAAE;AAAA,QACtD,KAAK,eAAe,KAAK,EAAE;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,KAAK,QAAQ;AACX,YAAM,EAAE,IAAI,KAAK,MAAM,OAAO,GAAG,KAAK,IAAI;AAE1C,aAAO,EAAE,GAAG,eAAe,GAAG,MAAM,KAAK,eAAe,KAAK,EAAE,EAAE;AAAA,IACnE;AAAA,IACA,KAAK,SAAS;AACZ,UAAI,WAAW,MAAM;AACnB,eAAO;AAAA,UACL,GAAG;AAAA,UACH,GAAG,KAAK;AAAA,UACR,KAAK,eAAe,KAAK,EAAE;AAAA,QAC7B;AAAA,MACF;AAEA,aAAO;AAAA,QACL,GAAG;AAAA,QACH,KAAK,eAAe,KAAK,EAAE;AAAA,QAC3B,OAAO,KAAK;AAAA,MACd;AAAA,IACF;AAAA,IACA,KAAK,QAAQ;AACX,YAAM,EAAE,IAAI,KAAK,GAAG,KAAK,IAAI;AAE7B,aAAO,EAAE,GAAG,eAAe,GAAG,MAAM,KAAK,eAAe,KAAK,EAAE,EAAE;AAAA,IACnE;AAAA,IACA,KAAK,WAAW;AACd,YAAM,EAAE,IAAI,KAAK,GAAG,KAAK,IAAI;AAE7B,aAAO,EAAE,GAAG,eAAe,GAAG,MAAM,KAAK,eAAe,KAAK,EAAE,EAAE;AAAA,IACnE;AAAA,EACF;AACF;AAEA,SAAS,0BAA0B,QAO0C;AAC3E,SAAO;AAAA,IACL,GAAI,OAAO,cAAc,SAAY,CAAC,IAAI,EAAE,WAAW,OAAO,UAAU;AAAA,IACxE,GAAI,OAAO,sBAAsB,SAC7B,CAAC,IACD,EAAE,mBAAmB,OAAO,kBAAkB;AAAA,IAClD,GAAI,OAAO,YAAY,SAAY,CAAC,IAAI,EAAE,SAAS,OAAO,QAAQ;AAAA,EACpE;AACF;AAEA,eAAsB,iBACpB,MACA,SAQC;AACD,QAAM,iBAAiB,MAAM,QAAQ;AAAA,IACnC,KAAK,QAAQ,IAAI,OAAO,SAAS,MAAM,iBAAiB,MAAM,OAAO,CAAC;AAAA,EACxE;AAEA,SAAO;AAAA,IACL,QAAQ,MAAM,iBAAiB,KAAK,QAAQ,OAAO;AAAA,IACnD,SAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA,eAAe;AAAA,IACjB;AAAA,EACF;AACF;AAtZA;AAAA;AAAA;AAWA;AAUA,IAAAC;AAAA;AAAA;;;ACLA,eAAsB,6BACpB,KACA,OACA,UACA,SACiB;AACjB,MAAI,QAAQ,kBAAkB,QAAW;AACvC,WAAO,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,KAAK,IAAI;AAAA,EACpC;AAEA,SAAO;AAAA,IACL,GAAG,GAAG;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,MACD,MAAM,4BAA4B,UAAU;AAAA,QAC1C,GAAG;AAAA,QACH,kBAAkB;AAAA,QAClB,WAAW;AAAA,MACb,CAAC;AAAA,IACH;AAAA,EACF,EAAE,KAAK,IAAI;AACb;AAEO,SAAS,sBACd,MACA,KACA,aACQ;AACR,MAAI,CAAC,kBAAkB,GAAG,GAAG;AAC3B,WAAO;AAAA,EACT;AACA,QAAM,YAAY;AAAA,IAChB;AAAA,IACA,IAAI,QAAQ,QAAQ,EAAE;AAAA,EACxB;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,KAAK,iBAAiB,CAAC,WAAW,UAAU,CAAC,CAAC;AAAA,IAC9C,KAAK,iBAAiB,CAAC,WAAW,SAAS,CAAC,CAAC;AAAA,IAC7C,KAAK,iBAAiB,CAAC,GAAG,SAAS,WAAW,CAAC,CAAC;AAAA,EAClD,EAAE,KAAK,IAAI;AACb;AAEA,SAAS,kBAAkB,KAAsB;AAC/C,SAAO,iEAAiE;AAAA,IACtE;AAAA,EACF;AACF;AAEO,SAAS,yBACd,MACQ;AACR,SAAO;AAAA,IACL,KAAK;AAAA,IACL;AAAA,IACA,GAAG,gCAAgC,MAAM,KAAK,EAAE;AAAA,IAChD;AAAA,IACA,GAAG,gCAAgC,MAAM,KAAK,EAAE;AAAA,EAClD,EAAE,KAAK,IAAI;AACb;AAEA,SAAS,gCACP,UACA,QAGmB;AACnB,MAAI,WAAW,MAAM;AACnB,WAAO,CAAC,GAAG,QAAQ,aAAa;AAAA,EAClC;AAEA,SAAO;AAAA,IACL,GAAG,OAAO,KAAK,KAAK,OAAO,GAAG;AAAA,IAC9B,GAAI,OAAO,gBAAgB,SAAY,CAAC,IAAI,CAAC,OAAO,WAAW;AAAA,EACjE;AACF;AAEO,SAAS,oBACd,WACU;AACV,MAAI,UAAU,WAAW,GAAG;AAC1B,WAAO,CAAC,UAAU;AAAA,EACpB;AAEA,SAAO,UAAU,IAAI,CAAC,aAAa;AACjC,UAAM,QAAQ,SAAS,cAAc,aAAa,OAAO;AAEzD,WAAO,KAAK,KAAK,IAAI,eAAe,QAAQ,SAAS,KAAK,EAAE,EAAE,CAAC,KAAK,SAAS,KAAK,KAAK;AAAA,EACzF,CAAC;AACH;AAEO,SAAS,iBACd,OACU;AACV,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO,CAAC,UAAU;AAAA,EACpB;AAEA,SAAO,MAAM,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE,KAAK,KAAK,KAAK,EAAE;AAC1D;AAEO,SAAS,0BACd,WACU;AACV,MAAI,UAAU,WAAW,GAAG;AAC1B,WAAO,CAAC,UAAU;AAAA,EACpB;AAEA,SAAO,UAAU,QAAQ,CAAC,aAAa;AAAA,IACrC,KAAK,SAAS,EAAE,GAAG,SAAS,YAAY,gBAAgB,EAAE;AAAA,IAC1D,GAAG,SAAS,KAAK,MAAM,IAAI,EAAE,IAAI,CAAC,SAAS,OAAO,IAAI,EAAE;AAAA,EAC1D,CAAC;AACH;AAEO,SAAS,eACd,UAMQ;AACR,MAAI,aAAa,QAAW;AAC1B,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,WAAW,SAAS,OAAO;AAAA,IAC3B,SAAS,aAAa,SAClB,SACA,YAAY,SAAS,QAAQ;AAAA,EACnC,EACG,OAAO,CAAC,SAAyB,SAAS,MAAS,EACnD,KAAK,IAAI;AACd;AAEA,eAAsB,iBACpB,QACA,SACiB;AACjB,UAAQ,OAAO,MAAM;AAAA,IACnB,KAAK;AACH,aAAO,kBAAkB,MAAM,iBAAiB,QAAQ,OAAO,CAAC;AAAA,IAClE,KAAK;AAAA,IACL,KAAK;AACH,aAAO,kBAAkB,MAAM,iBAAiB,QAAQ,OAAO,CAAC;AAAA,IAClE,KAAK;AACH,aAAO,GAAG,OAAO,EAAE,IAAI,OAAO,KAAK;AAAA,EAAK,cAAc,OAAO,IAAI,EAAE,QAAQ,CAAC;AAAA,IAC9E,KAAK;AACH,aAAO,GAAG,OAAO,EAAE;AAAA,EAAK,OAAO,SAAS,IAAI;AAAA,IAC9C,KAAK;AACH,aAAO,kBAAkB,MAAM,iBAAiB,QAAQ,OAAO,CAAC;AAAA,IAClE,KAAK;AACH,aAAO,kBAAkB,MAAM,iBAAiB,QAAQ,OAAO,CAAC;AAAA,IAClE,KAAK;AACH,aAAO;AAAA,QACL,GAAG,OAAO,EAAE,IAAI,OAAO,KAAK;AAAA,QAC5B;AAAA,QACA;AAAA,QACA,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA,GAAG,0BAA0B,OAAO,eAAe;AAAA,MACrD,EAAE,KAAK,IAAI;AAAA,IACb,KAAK;AACH,aAAO,GAAG,OAAO,EAAE,IAAI,OAAO,KAAK;AAAA,EAAK,OAAO,OAAO;AAAA,IACxD,KAAK;AACH,aAAO,MAAM;AAAA,QACX,OAAO;AAAA,QACP,OAAO;AAAA,QACP,OAAO;AAAA,QACP;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO,yBAAyB,MAAM;AAAA,IACxC,KAAK;AACH,aAAO,MAAM;AAAA,QACX,OAAO;AAAA,QACP,OAAO;AAAA,QACP,OAAO;AAAA,QACP;AAAA,MACF;AAAA,EACJ;AACF;AAEO,SAAS,iBAAiB,MAAc,QAAwB;AACrE,MAAI,KAAK,UAAU,QAAQ;AACzB,WAAO;AAAA,EACT;AAEA,SAAO,GAAG,KAAK,MAAM,GAAG,KAAK,IAAI,GAAG,SAAS,EAAE,CAAC,CAAC;AAAA;AACnD;AApNA;AAAA;AAAA;AAEA;AAKA;AAKA,IAAAC;AACA;AACA;AAAA;AAAA;;;ACdA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;;;ACDA,eAAsB,WAAW,OAA0C;AACzE,QAAM;AAAA,IACJ,MAAM,IAAI,CAAC,SAAS,kBAAkB,IAAI,CAAC,EAAE,KAAK,EAAE,KACjD,MAAM,WAAW,IAAI,KAAK;AAAA,EAC/B;AACF;AAVA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAO,SAAS,uBAAuB,YAGrC;AACA,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,EACR;AACF;AARA;AAAA;AAAA;AAAA;AAAA;;;ACEO,SAAS,qBACd,SAC0E;AAC1E,MAAI,QAAQ,kBAAkB,MAAM;AAClC,WAAO,CAAC;AAAA,EACV;AAEA,SAAO;AAAA,IACL;AAAA,MACE,SACE;AAAA,MACF,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAEO,SAAS,qBACd,UACQ;AACR,MAAI,SAAS,WAAW,GAAG;AACzB,WAAO;AAAA,EACT;AAEA,SAAO,GAAG,SAAS,IAAI,CAAC,YAAY,YAAY,QAAQ,OAAO,EAAE,EAAE,KAAK,IAAI,CAAC;AAAA;AAAA;AAC/E;AAEO,SAAS,yBAAyB,SAOvC;AACA,SAAO;AAAA,IACL,SAAS,QAAQ;AAAA,IACjB,MAAM;AAAA,IACN,SAAS,QAAQ;AAAA,EACnB;AACF;AAzCA;AAAA;AAAA;AAAA;AAAA;;;ACkBA,eAAsB,cACpB,UACA,SACA,QACe;AACf,QAAM,aAAa,MAAM;AAAA,IACvB;AAAA,IACA,SAAS;AAAA,EACX;AACA,QAAM,UAAU,SAAS,MAAM,IAAI,kBAAkB;AACrD,QAAM,WAAW,qBAAqB,OAAO;AAE7C,MAAI,WAAW,QAAQ;AACrB,UAAM;AAAA,MACJ;AAAA,QACE,uBAAuB,SAAS,YAAY,SAAS,OAAO,QAAQ;AAAA,MACtE;AAAA,IACF;AACA;AAAA,EACF;AACA,MAAI,WAAW,SAAS;AACtB,UAAM,WAAW;AAAA,MACf,GAAG,SAAS,IAAI,wBAAwB;AAAA,MACxC,GAAG;AAAA,MACH,uBAAuB,UAAU;AAAA,IACnC,CAAC;AACD;AAAA,EACF;AAEA,MAAI,SAAS,MAAM,WAAW,GAAG;AAC/B,UAAM,kBAAkB,GAAG,qBAAqB,QAAQ,CAAC;AAAA,CAAgB;AACzE;AAAA,EACF;AAEA,QAAM;AAAA,IACJ,GAAG,qBAAqB,QAAQ,CAAC,GAAG,SAAS,MAAM,IAAI,kBAAkB,EAAE,KAAK,MAAM,CAAC,GAAG,yBAAyB,UAAU,CAAC;AAAA;AAAA,EAChI;AACF;AAEA,eAAsB,iBACpB,UACA,eACA,SACA,QACe;AACf,QAAM,QAA2B,CAAC;AAClC,MAAI,SAAS;AAEb,SAAO,MAAM;AACX,UAAM,OAAO,MAAM,SAAS,MAAM;AAElC,QAAI,WAAW,SAAS;AACtB,YAAM,iCAAiC,MAAM,SAAS,QAAQ;AAAA,QAC5D,cAAc,WAAW;AAAA,MAC3B,CAAC;AAAA,IACH,OAAO;AACL,YAAM,KAAK,IAAI;AAAA,IACjB;AAEA,QAAI,KAAK,eAAe,MAAM;AAC5B;AAAA,IACF;AAEA,aAAS,KAAK;AAAA,EAChB;AAEA,MAAI,WAAW,SAAS;AACtB;AAAA,EACF;AAEA,QAAM;AAAA,IACJ,mBAAmB,KAAK;AAAA,IACxB;AAAA,IACA;AAAA,EACF;AACF;AAEA,eAAsB,iCACpB,UACA,SACA,QACA,UAA+C,CAAC,GACjC;AACf,QAAM,UAAU,SAAS,MAAM,IAAI,kBAAkB;AACrD,QAAM,WACH,QAAQ,gBAAgB,OAAQ,qBAAqB,OAAO,IAAI,CAAC;AAEpE,MAAI,WAAW,QAAQ;AACrB,UAAM;AAAA,MACJ;AAAA,QACE,uBAAuB,SAAS,MAAM,SAAS,OAAO,QAAQ;AAAA,MAChE;AAAA,IACF;AACA;AAAA,EACF;AACA,MAAI,WAAW,SAAS;AACtB,UAAM,WAAW,CAAC,GAAG,SAAS,IAAI,wBAAwB,GAAG,GAAG,OAAO,CAAC;AACxE;AAAA,EACF;AAEA,MAAI,SAAS,MAAM,WAAW,GAAG;AAC/B,UAAM,kBAAkB,GAAG,qBAAqB,QAAQ,CAAC;AAAA,CAAgB;AACzE;AAAA,EACF;AAEA,QAAM;AAAA,IACJ,GAAG,qBAAqB,QAAQ,CAAC,GAAG,SAAS,MAAM,IAAI,kBAAkB,EAAE,KAAK,MAAM,CAAC;AAAA;AAAA,EACzF;AACF;AAEA,SAAS,mBACP,OACiB;AACjB,QAAM,CAAC,KAAK,IAAI;AAEhB,MAAI,UAAU,QAAW;AACvB,UAAM,IAAI,MAAM,gDAAgD;AAAA,EAClE;AAEA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,OAAO,MAAM,QAAQ,CAAC,SAAS,KAAK,KAAK;AAAA,IACzC,OAAO,MAAM,OAAO,CAAC,OAAO,SAAS,QAAQ,KAAK,MAAM,QAAQ,CAAC;AAAA,IACjE,YAAY;AAAA,EACd;AACF;AA/IA,IAAAC,iBAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAIA;AAEA;AAAA;AAAA;;;ACUA,eAAsB,cACpB,QACA,SACA,QACe;AACf,QAAM,UAAU,MAAM,QAAQ;AAAA,IAC5B,OAAO,MAAM,IAAI,OAAO,SAAS,MAAM,iBAAiB,MAAM,OAAO,CAAC;AAAA,EACxE;AACA,QAAM,aAAa,MAAM;AAAA,IACvB;AAAA,IACA,OAAO;AAAA,EACT;AACA,QAAM,WAAW,qBAAqB,OAAO;AAE7C,MAAI,WAAW,QAAQ;AACrB,UAAM;AAAA,MACJ;AAAA,QACE,uBAAuB,SAAS,YAAY,OAAO,OAAO,QAAQ;AAAA,MACpE;AAAA,IACF;AACA;AAAA,EACF;AACA,MAAI,WAAW,SAAS;AACtB,UAAM,WAAW;AAAA,MACf,GAAG,SAAS,IAAI,wBAAwB;AAAA,MACxC,GAAG;AAAA,MACH,uBAAuB,UAAU;AAAA,IACnC,CAAC;AACD;AAAA,EACF;AAEA,MAAI,QAAQ,WAAW,GAAG;AACxB,UAAM;AAAA,MACJ,GAAG,qBAAqB,QAAQ,CAAC,GAAG,gBAAgB,MAAM,CAAC;AAAA,IAC7D;AACA;AAAA,EACF;AAEA,QAAM;AAAA,IACJ,GAAG,qBAAqB,QAAQ,CAAC,GAAG,QACjC,IAAI,CAAC,WAAW,iBAAiB,MAAM,CAAC,EACxC;AAAA,MACC,uBAAuB,OAAO;AAAA,IAChC,CAAC,GAAG,uBAAuB,SAAS,OAAO,CAAC,GAAG,iBAAiB,UAAU,CAAC,GAAG,mBAAmB,MAAM,CAAC;AAAA;AAAA,EAC5G;AACF;AAEA,eAAsB,iBACpB,UACA,SACA,QACe;AACf,QAAM,QAA6B,CAAC;AACpC,MAAI;AAEJ,SAAO,MAAM;AACX,UAAM,OAAO,MAAM,SAAS,MAAM;AAElC,QAAI,WAAW,SAAS;AACtB,YAAM,iCAAiC,MAAM,SAAS,QAAQ;AAAA,QAC5D,cAAc,WAAW;AAAA,MAC3B,CAAC;AAAA,IACH,OAAO;AACL,YAAM,KAAK,IAAI;AAAA,IACjB;AAEA,QAAI,KAAK,eAAe,MAAM;AAC5B;AAAA,IACF;AAEA,aAAS,KAAK;AAAA,EAChB;AAEA,MAAI,WAAW,SAAS;AACtB;AAAA,EACF;AAEA,QAAM,SAAS,qBAAqB,KAAK;AACzC,QAAM,iCAAiC,QAAQ,SAAS,MAAM;AAChE;AAEA,eAAsB,iCACpB,QACA,SACA,QACA,UAA+C,CAAC,GACjC;AACf,QAAM,UAAU,MAAM,QAAQ;AAAA,IAC5B,OAAO,MAAM,IAAI,OAAO,SAAS,MAAM,iBAAiB,MAAM,OAAO,CAAC;AAAA,EACxE;AACA,QAAM,WACH,QAAQ,gBAAgB,OAAQ,qBAAqB,OAAO,IAAI,CAAC;AAEpE,MAAI,WAAW,QAAQ;AACrB,UAAM;AAAA,MACJ;AAAA,QACE,uBAAuB,SAAS,MAAM,OAAO,OAAO,QAAQ;AAAA,MAC9D;AAAA,IACF;AACA;AAAA,EACF;AACA,MAAI,WAAW,SAAS;AACtB,UAAM,WAAW,CAAC,GAAG,SAAS,IAAI,wBAAwB,GAAG,GAAG,OAAO,CAAC;AACxE;AAAA,EACF;AAEA,MAAI,QAAQ,WAAW,GAAG;AACxB,UAAM;AAAA,MACJ,GAAG,qBAAqB,QAAQ,CAAC,GAAG,gBAAgB,MAAM,CAAC;AAAA,IAC7D;AACA;AAAA,EACF;AAEA,QAAM;AAAA,IACJ,GAAG,qBAAqB,QAAQ,CAAC,GAAG,QACjC,IAAI,CAAC,WAAW,iBAAiB,MAAM,CAAC,EACxC,KAAK,uBAAuB,OAAO,CAAC,CAAC,GAAG,mBAAmB,MAAM,CAAC;AAAA;AAAA,EACvE;AACF;AAEA,SAAS,qBACP,OACmB;AACnB,QAAM,CAAC,KAAK,IAAI;AAEhB,MAAI,UAAU,QAAW;AACvB,UAAM,IAAI,MAAM,8CAA8C;AAAA,EAChE;AAEA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,OAAO,MAAM,QAAQ,CAAC,SAAS,KAAK,KAAK;AAAA,IACzC,OAAO,MAAM,OAAO,CAAC,OAAO,SAAS,QAAQ,KAAK,MAAM,QAAQ,CAAC;AAAA,IACjE,YAAY;AAAA,EACd;AACF;AA7JA;AAAA;AAAA;AAEA;AACA;AACA;AAQA;AACA;AACA;AAEA;AAAA;AAAA;;;ACIA,eAAsB,UACpB,QACA,SACA,QACe;AACf,QAAM,UAAU,MAAM,QAAQ;AAAA,IAC5B,OAAO,MAAM,IAAI,OAAO,SAAS,MAAM,iBAAiB,MAAM,OAAO,CAAC;AAAA,EACxE;AACA,QAAM,aAAa,MAAM;AAAA,IACvB;AAAA,IACA,OAAO;AAAA,EACT;AACA,QAAM,WAAW,qBAAqB,OAAO;AAE7C,MAAI,WAAW,QAAQ;AACrB,UAAM;AAAA,MACJ;AAAA,QACE,uBAAuB,SAAS,YAAY,OAAO,OAAO,QAAQ;AAAA,MACpE;AAAA,IACF;AACA;AAAA,EACF;AACA,MAAI,WAAW,SAAS;AACtB,UAAM,WAAW;AAAA,MACf,GAAG,SAAS,IAAI,wBAAwB;AAAA,MACxC,GAAG;AAAA,MACH,uBAAuB,UAAU;AAAA,IACnC,CAAC;AACD;AAAA,EACF;AAEA,MAAI,QAAQ,WAAW,GAAG;AACxB,UAAM,kBAAkB,GAAG,qBAAqB,QAAQ,CAAC;AAAA,CAAe;AACxE;AAAA,EACF;AAEA,QAAM;AAAA,IACJ,GAAG,qBAAqB,QAAQ,CAAC,GAAG,QAAQ,IAAI,gBAAgB,EAAE,KAAK,uBAAuB,OAAO,CAAC,CAAC,GAAG,uBAAuB,SAAS,OAAO,CAAC,GAAG,iBAAiB,UAAU,CAAC;AAAA;AAAA,EACnL;AACF;AAEA,eAAsB,qBACpB,UACA,eACA,SACA,QACe;AACf,QAAM,QAAgC,CAAC;AACvC,MAAI,SAAS;AAEb,SAAO,MAAM;AACX,UAAM,OAAO,MAAM,SAAS,MAAM;AAElC,QAAI,WAAW,SAAS;AACtB,YAAM,6BAA6B,MAAM,SAAS,QAAQ;AAAA,QACxD,cAAc,WAAW;AAAA,MAC3B,CAAC;AAAA,IACH,OAAO;AACL,YAAM,KAAK,IAAI;AAAA,IACjB;AAEA,QAAI,KAAK,eAAe,MAAM;AAC5B;AAAA,IACF;AAEA,aAAS,KAAK;AAAA,EAChB;AAEA,MAAI,WAAW,SAAS;AACtB;AAAA,EACF;AAEA,QAAM,6BAA6B,kBAAkB,KAAK,GAAG,SAAS,MAAM;AAC9E;AAEA,eAAsB,6BACpB,QACA,SACA,QACA,UAA+C,CAAC,GACjC;AACf,QAAM,UAAU,MAAM,QAAQ;AAAA,IAC5B,OAAO,MAAM,IAAI,OAAO,SAAS,MAAM,iBAAiB,MAAM,OAAO,CAAC;AAAA,EACxE;AACA,QAAM,WACH,QAAQ,gBAAgB,OAAQ,qBAAqB,OAAO,IAAI,CAAC;AAEpE,MAAI,WAAW,QAAQ;AACrB,UAAM;AAAA,MACJ;AAAA,QACE,uBAAuB,SAAS,MAAM,OAAO,OAAO,QAAQ;AAAA,MAC9D;AAAA,IACF;AACA;AAAA,EACF;AACA,MAAI,WAAW,SAAS;AACtB,UAAM,WAAW,CAAC,GAAG,SAAS,IAAI,wBAAwB,GAAG,GAAG,OAAO,CAAC;AACxE;AAAA,EACF;AAEA,MAAI,QAAQ,WAAW,GAAG;AACxB,UAAM,kBAAkB,GAAG,qBAAqB,QAAQ,CAAC;AAAA,CAAe;AACxE;AAAA,EACF;AAEA,QAAM;AAAA,IACJ,GAAG,qBAAqB,QAAQ,CAAC,GAAG,QAAQ,IAAI,gBAAgB,EAAE,KAAK,uBAAuB,OAAO,CAAC,CAAC;AAAA;AAAA,EACzG;AACF;AAEA,SAAS,kBACP,OACsB;AACtB,QAAM,CAAC,KAAK,IAAI;AAEhB,MAAI,UAAU,QAAW;AACvB,UAAM,IAAI,MAAM,+CAA+C;AAAA,EACjE;AAEA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,OAAO,MAAM,QAAQ,CAAC,SAAS,KAAK,KAAK;AAAA,IACzC,OAAO,MAAM,OAAO,CAAC,OAAO,SAAS,QAAQ,KAAK,MAAM,QAAQ,CAAC;AAAA,IACjE,YAAY;AAAA,EACd;AACF;AAjJA;AAAA;AAAA;AAEA;AACA;AACA;AAMA;AACA;AACA;AAEA;AAAA;AAAA;;;ACDA,eAAsB,UACpB,MACA,SACA,QACe;AACf,QAAM,cACJ,QAAQ,qBAAqB,OACzB,UACA;AAAA,IACE,GAAG;AAAA,IACH,eAAe,QAAQ,iBAAiB;AAAA,EAC1C;AAEN,MAAI,WAAW,QAAQ;AACrB,UAAM;AAAA,MACJ,cAAc,MAAM,iBAAiB,MAAM,WAAW,CAAC;AAAA,IACzD;AACA;AAAA,EACF;AACA,MAAI,WAAW,SAAS;AACtB,UAAM,WAAW,CAAC,MAAM,iBAAiB,MAAM,WAAW,CAAC,CAAC;AAC5D;AAAA,EACF;AAEA,QAAM,QAAQ;AAAA,IACZ,gBAAgB,KAAK,MAAM;AAAA,IAC3B;AAAA,IACA;AAAA,IACA,MAAM,iBAAiB,KAAK,QAAQ,WAAW;AAAA,IAC/C;AAAA,IACA;AAAA,KAEE,MAAM,QAAQ;AAAA,MACZ,KAAK,QAAQ;AAAA,QAAI,OAAO,SACtB,iBAAiB,MAAM,iBAAiB,MAAM,WAAW,CAAC;AAAA,MAC5D;AAAA,IACF,GACA,KAAK,MAAM;AAAA,EACf;AAEA,QAAM;AAAA,IACJ,GAAG,iBAAiB,MAAM,KAAK,IAAI,GAAG,KAAK,MAAM,CAAC;AAAA;AAAA,EACpD;AACF;AAxDA;AAAA;AAAA;AAEA;AACA;AAKA;AACA;AACA;AAAA;AAAA;;;ACcA,eAAsB,UACpB,MACA,SACA,QACe;AACf,MAAI,WAAW,QAAQ;AACrB,UAAM;AAAA,MACJ,cAAc,MAAM,iBAAiB,MAAM,OAAO,CAAC;AAAA,IACrD;AACA;AAAA,EACF;AACA,MAAI,WAAW,SAAS;AACtB,UAAM,WAAW,CAAC,MAAM,iBAAiB,MAAM,OAAO,CAAC,CAAC;AACxD;AAAA,EACF;AAEA,UAAQ,KAAK,MAAM;AAAA,IACjB,KAAK;AACH,YAAM;AAAA,QACJ,GAAG,kBAAkB,MAAM,iBAAiB,MAAM,OAAO,CAAC,CAAC;AAAA;AAAA,MAC7D;AACA;AAAA,IACF,KAAK;AACH,YAAM;AAAA,QACJ,GAAG,kBAAkB,MAAM,iBAAiB,MAAM,OAAO,CAAC,CAAC;AAAA;AAAA,MAC7D;AACA;AAAA,IACF,KAAK;AACH,YAAM;AAAA,QACJ,GAAG;AAAA,UACA,MAAM,iBAAiB,MAAM,OAAO;AAAA,QACvC,CAAC;AAAA;AAAA,MACH;AACA;AAAA,IACF,KAAK;AACH,YAAM;AAAA,QACJ,GAAG,kBAAkB,MAAM,iBAAiB,MAAM,OAAO,CAAC,CAAC;AAAA;AAAA,MAC7D;AACA;AAAA,IACF,KAAK;AACH,YAAM;AAAA,QACJ,GAAG,oBAAoB,MAAM,iBAAiB,MAAM,OAAO,CAAC,CAAC;AAAA;AAAA,MAC/D;AACA;AAAA,IACF,KAAK;AACH,UACE,KAAK,GAAG,WAAW,SAAS,KAC5B,CAAC,KAAK,GAAG,SAAS,GAAG,KACrB,KAAK,cAAc,QACnB;AACA,cAAM,kBAAkB,GAAG,KAAK,SAAS,IAAI;AAAA,CAAI;AACjD;AAAA,MACF;AACA,UAAI,KAAK,GAAG,WAAW,iBAAiB,GAAG;AACzC,cAAM;AAAA,UACJ,GAAG;AAAA,YACA,MAAM,iBAAiB,MAAM,OAAO;AAAA,UACvC,CAAC;AAAA;AAAA,QACH;AACA;AAAA,MACF;AACA,YAAM;AAAA,QACJ;AAAA,UACE,GAAG,KAAK,EAAE;AAAA,UACV,UAAU,KAAK,SAAS,UAAU;AAAA,UAClC,aAAa,KAAK,sBAAsB,QAAQ;AAAA,UAChD,SAAS,KAAK,kBAAkB,QAAQ;AAAA,UACxC;AAAA,UACA,KAAK,SAAS;AAAA,UACd;AAAA,UACA;AAAA,UACA,GAAG,iBAAiB,KAAK,KAAK;AAAA,QAChC,EAAE,KAAK,IAAI,IAAI;AAAA,MACjB;AACA;AAAA,IACF,KAAK;AACH,YAAM;AAAA,QACJ;AAAA,UACE,GAAG,KAAK,EAAE,KAAK,KAAK,KAAK;AAAA,UACzB,YAAY,KAAK,aAAa,SAAY,cAAc,WAAW,KAAK,SAAS,OAAO,EAAE;AAAA,UAC1F,aAAa,eAAe,KAAK,QAAQ,CAAC;AAAA,UAC1C;AAAA,UACA;AAAA,UACA,KAAK;AAAA,UACL;AAAA,UACA;AAAA,UACA,GAAG,0BAA0B,KAAK,eAAe;AAAA,UACjD;AAAA,UACA;AAAA,UACA,GAAG,oBAAoB,KAAK,QAAQ;AAAA,UACpC;AAAA,UACA;AAAA,UACA,GAAG,oBAAoB,KAAK,QAAQ;AAAA,QACtC,EAAE,KAAK,IAAI,IAAI;AAAA,MACjB;AACA;AAAA,IACF,KAAK;AACH,YAAM,kBAAkB,GAAG,KAAK,EAAE,KAAK,KAAK,KAAK;AAAA;AAAA,EAAO,KAAK,OAAO;AAAA,CAAI;AACxE;AAAA,IACF,KAAK;AACH,YAAM;AAAA,QACJ,GAAG;AAAA,UACD,MAAM;AAAA,YACJ,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL;AAAA,UACF;AAAA,UACA,KAAK;AAAA,UACL,QAAQ;AAAA,QACV,CAAC;AAAA;AAAA,MACH;AACA;AAAA,IACF,KAAK;AACH,YAAM,kBAAkB,GAAG,yBAAyB,IAAI,CAAC;AAAA,CAAI;AAC7D;AAAA,IACF,KAAK;AACH,YAAM;AAAA,QACJ,GAAG,MAAM;AAAA,UACP,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL;AAAA,QACF,CAAC;AAAA;AAAA,MACH;AACA;AAAA,EACJ;AACF;AAvJA,IAAAC,aAAA;AAAA;AAAA;AAEA;AACA;AAaA;AACA;AAAA;AAAA;;;ACLA,eAAsB,oBACpB,QACA,SACA,QACe;AACf,QAAM,aAAa,MAAM;AAAA,IACvB;AAAA,IACA,OAAO;AAAA,EACT;AAEA,MAAI,WAAW,QAAQ;AACrB,UAAM;AAAA,MACJ,cAAc;AAAA,QACZ,OAAO,OAAO;AAAA,QACd;AAAA,QACA,SAAS,OAAO;AAAA,MAClB,CAAC;AAAA,IACH;AACA;AAAA,EACF;AACA,MAAI,WAAW,SAAS;AACtB,UAAM,WAAW,CAAC,GAAG,OAAO,OAAO,uBAAuB,UAAU,CAAC,CAAC;AACtE;AAAA,EACF;AAEA,MAAI,OAAO,MAAM,WAAW,GAAG;AAC7B,UAAM,kBAAkB,uBAAuB;AAC/C;AAAA,EACF;AAEA,QAAM;AAAA,IACJ,GAAG,OAAO,MAAM,IAAI,mBAAmB,EAAE,KAAK,IAAI,CAAC,GAAG,iBAAiB,UAAU,CAAC;AAAA;AAAA,EACpF;AACF;AAEA,eAAsB,uBACpB,UACA,eACA,SACA,QACe;AACf,QAAM,QAAsC,CAAC;AAC7C,MAAI,SAAS;AAEb,SAAO,MAAM;AACX,UAAM,OAAO,MAAM,SAAS,MAAM;AAClC,QAAI,WAAW,SAAS;AACtB,YAAM,WAAW,KAAK,KAAK;AAAA,IAC7B,OAAO;AACL,YAAM,KAAK,IAAI;AAAA,IACjB;AACA,QAAI,KAAK,eAAe,KAAM;AAC9B,aAAS,KAAK;AAAA,EAChB;AAEA,MAAI,WAAW,QAAS;AAExB,QAAM,QAAQ,MAAM,QAAQ,CAAC,SAAS,KAAK,KAAK;AAChD,QAAM;AAAA,IACJ,EAAE,OAAO,OAAO,MAAM,QAAQ,YAAY,KAAK;AAAA,IAC/C;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,oBAAoB,SAAuC;AAClE,SAAO,GAAG,QAAQ,MAAM,CAAC,CAAC,KAAK,QAAQ,MAAM,CAAC,CAAC,OAAO,QAAQ,GAAG;AACnE;AA/EA;AAAA;AAAA;AAKA;AACA;AACA;AAEA;AACA;AAAA;AAAA;;;ACVA;AAAA;AAAA;AAAA,IAAAC;AACA;AACA;AACA;AACA,IAAAC;AACA;AAAA;AAAA;;;ACLA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA,EACE,6BAAAC;AAAA,EACA,4BAAAC;AAAA,EACA;AAAA,OAIK;AAmBP,eAAsB,8BACpB,WACiC;AACjC,MAAI,CAAC,UAAU,WAAW,SAAS,GAAG;AACpC,WAAO;AAAA,MACL,aAAa,IAAI,SAAS,SAAS;AAAA,MACnC,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,YAAY;AAAA,QACV,YAAY;AAAA,QACZ,aAAa;AAAA,QACb,MAAM;AAAA,MACR;AAAA,MACA,YAAYD,2BAA0B,SAAS;AAAA,IACjD;AAAA,EACF;AAEA,QAAM,SAAS,yBAAyB,SAAS;AACjD,QAAM,iBAAiB,OAAO,eAAe;AAC7C,QAAM,uBAAuB,eAAe,WAAW,aAAa,IAChEC,0BAAyB,cAAc,IACvC;AACJ,QAAM,cACJ,sBAAsB,SAAS,YAC3B,MAAM,mCAAmC,cAAc,IACvD,IAAI,SAAS,cAAc;AACjC,QAAM,cAAc,oBAAoB,WAAW;AAEnD,SAAO;AAAA,IACL;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA,YAAY,EAAE,YAAY,aAAa,aAAa,MAAM,gBAAgB;AAAA,IAC1E,GAAI,sBAAsB,SAAS,YAC/B;AAAA,MACE;AAAA,MACA,oBAAoB;AAAA,QAClB,WAAW,qBAAqB;AAAA,QAChC,MAAM;AAAA,QACN,GAAI,qBAAqB,aAAa,SAClC,CAAC,IACD,EAAE,UAAU,qBAAqB,SAAS;AAAA,MAChD;AAAA,IACF,IACA,CAAC;AAAA,IACL,YAAYD,2BAA0B,aAAa,OAAO,SAAS;AAAA,EACrE;AACF;AAEA,eAAsB,sCACpB,MAC8B;AAC9B,MACE,KAAK,WAAW,YAChB,KAAK,WAAW,YAChB,KAAK,WAAW,aAChB,KAAK,WAAW,QAChB;AACA,WAAO;AAAA,EACT;AACA,MAAI,CAAC,KAAK,YAAY,WAAW,aAAa,GAAG;AAC/C,WAAO;AAAA,EACT;AAEA,QAAM,WAAW,MAAM,8BAA8B,KAAK,WAAW;AACrE,SAAO;AAAA,IACL,GAAG;AAAA,IACH,aAAa,SAAS;AAAA,IACtB,GAAI,KAAK,aAAa,KAAK,cACvB,EAAE,UAAU,SAAS,WAAW,IAChC,CAAC;AAAA,EACP;AACF;AAEO,SAAS,eAAe,KAAqB;AAClD,MAAIC,0BAAyB,GAAG,GAAG,SAAS,SAAS;AACnD,WAAO;AAAA,EACT;AAEA,QAAM,cAAc,yBAAyB,GAAG,EAAE;AAClD,MAAI,gBAAgB,QAAW;AAC7B,UAAM,IAAI,MAAM,mCAAmC,GAAG,EAAE;AAAA,EAC1D;AACA,SAAO;AACT;AAEO,SAAS,qBAAqB,KAA8B;AACjE,MAAIA,0BAAyB,GAAG,GAAG,SAAS,SAAS;AACnD,WAAO,EAAE,MAAM,iBAAiB,WAAW,GAAG;AAAA,EAChD;AAEA,QAAM,cAAc,eAAe,GAAG;AACtC,SAAO,EAAE,YAAY,aAAa,aAAa,MAAM,gBAAgB;AACvE;AAEO,SAAS,aAAa,KAAqB;AAChD,QAAM,gBAAgBA,0BAAyB,GAAG;AAClD,MACE,eAAe,SAAS,WACxB,cAAc,cAAc,QAC5B;AACA,WAAO,cAAc;AAAA,EACvB;AAEA,QAAM,SAAS,yBAAyB,GAAG;AAE3C,SAAO,OAAO,aAAa;AAC7B;AAEO,SAAS,iBAAiB,MAAoC;AACnE,SACE,KAAK,aAAa,UAClB,yBAAyB,KAAK,QAAQ,EAAE,cAAc;AAE1D;AAEO,SAAS,kBAAkB,KAAiC;AACjE,QAAM,QAAQ,4CAA4C,KAAK,GAAG;AAElE,SAAO,QAAQ,CAAC,MAAM,SAAY,SAAY,OAAO,MAAM,CAAC,CAAC;AAC/D;AAlJA,IAAAC,YAAA;AAAA;AAAA;AAQA;AAGA;AAAA;AAAA;;;ACXA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AAIP,eAAsB,oBACpB,MACA,WACY;AACZ,QAAM,WAAW,MAAM,8BAA8B,IAAI;AACzD,SAAO,MAAM,IAAI,qBAAqB,SAAS,WAAW,EAAE;AAAA,IAC1D;AAAA,EACF;AACF;AAEA,eAAsB,qBACpB,MACA,WACA,UAAwD,CAAC,GAC7C;AACZ,QAAM,WAAW,MAAM,8BAA8B,IAAI;AACzD,QAAM,SAAS,MAAM,IAAI,qBAAqB,SAAS,WAAW,EAAE;AAAA,IAClE;AAAA,IACA;AAAA,EACF;AAEA,MAAI,SAAS,uBAAuB,QAAW;AAC7C,QAAI,SAAS,yBAAyB,QAAW;AAC/C,YAAM,qCAAqC;AAAA,QACzC,QAAQ,SAAS;AAAA,MACnB,CAAC;AAAA,IACH;AAEA,QAAI;AACF,YAAM,QAAQ,MAAM;AAAA,QAClB,SAAS;AAAA,MACX;AACA,UAAI,MAAM,WAAW,WAAW;AAC9B,cAAM,6BAA6B,SAAS,kBAAkB;AAAA,MAChE;AAAA,IACF,SAAS,OAAO;AACd,oCAA8B,KAAK;AAAA,IACrC;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,8BAA8B,OAAsB;AAC3D,QAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAErE,MAAI;AACF,YAAQ,OAAO;AAAA,MACb,oEAAoE,OAAO;AAAA;AAAA,IAC7E;AAAA,EACF,QAAQ;AAAA,EAGR;AACF;AAjEA;AAAA;AAAA;AASA,IAAAC;AAAA;AAAA;;;ACTA,IAMa,sBACAC,6BACA;AARb,IAAAC,cAAA;AAAA;AAAA;AAMO,IAAM,uBAAuB;AAC7B,IAAMD,8BAA6B;AACnC,IAAM,8BAA8B;AAAA;AAAA;;;ACR3C;AAAA,EACE,4BAAAE;AAAA,OAKK;AAcA,SAAS,kBACd,MACoB;AACpB,QAAM,QAAQ,KAAK,OAAO,IAAI,CAAC,SAAS;AACtC,UAAM,OAAO,kBAAkB,IAAI;AAEnC,QAAI,SAAS,QAAW;AACtB,YAAM,IAAI,MAAM,oCAAoC,IAAI,EAAE;AAAA,IAC5D;AAEA,WAAO;AAAA,EACT,CAAC;AAED,SAAO;AAAA,IACL,YAAY,eAAe,KAAK,WAAW;AAAA,IAC3C,GAAI,KAAK,cAAc,SAAY,CAAC,IAAI,EAAE,WAAW,KAAK,UAAU;AAAA,IACpE,GAAG,mBAAmB,IAAI;AAAA,IAC1B,GAAI,KAAK,WAAW,SAAY,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO;AAAA,IAC3D,GAAG,4BAA4B,IAAI;AAAA,IACnC,GAAI,KAAK,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM;AAAA,IACxD,GAAI,KAAK,YAAY,OAAO,EAAE,OAAO,WAAW,IAAI,CAAC;AAAA,IACrD,GAAI,KAAK,kBAAkB,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;AAAA,IAC7D,GAAG,4BAA4B,IAAI;AAAA,IACnC,GAAI,KAAK,kBAAkB,SACvB,CAAC,IACD,EAAE,eAAe,KAAK,cAAc;AAAA,IACxC,GAAI,UAAU,SAAY,CAAC,IAAI,EAAE,MAAM;AAAA,EACzC;AACF;AAEO,SAAS,2BACd,MACA,UAQI,CAAC,GACiB;AACtB,SAAO;AAAA,IACL,YAAY,eAAe,KAAK,WAAW;AAAA,IAC3C,aAAa,eAAe,KAAK,WAAW;AAAA,IAC5C,YAAY,qBAAqB,KAAK,WAAW;AAAA,IACjD,GAAI,KAAK,cAAc,SAAY,CAAC,IAAI,EAAE,WAAW,KAAK,UAAU;AAAA,IACpE,GAAI,mBAAmB,KAAK,aAAa,IACrC,EAAE,kBAAkB,KAAK,IACzB,CAAC;AAAA,IACL,GAAI,QAAQ,qBAAqB,SAC7B,CAAC,IACD,EAAE,kBAAkB,QAAQ,iBAAiB;AAAA,IACjD,GAAG,4BAA4B,IAAI;AAAA,IACnC,GAAG,4BAA4B,IAAI;AAAA,IACnC,QAAQ,KAAK,UAAU;AAAA,IACvB,OAAO,KAAK,SAAS;AAAA,IACrB,GAAI,KAAK,YAAY,OAAO,EAAE,OAAO,WAAW,IAAI,CAAC;AAAA,IACrD,GAAI,KAAK,WAAW,cACpB,KAAK,WAAW,aAChB,KAAK,WAAW,WACZ,CAAC,IACD,KAAK,UAAU,SACb,CAAC,IACD,EAAE,OAAO,KAAK,MAAM;AAAA,IAC1B,GAAI,KAAK,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK;AAAA,IACrD,GAAI,KAAK,kBAAkB,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;AAAA,IAC7D,GAAI,QAAQ,qBAAqB,eAC7B,mBAAmB,IAAI,IACvB,CAAC;AAAA,IACL,GAAI,KAAK,kBAAkB,SACvB,CAAC,IACD,EAAE,eAAe,KAAK,cAAc;AAAA,IACxC,GAAI,QAAQ,cAAc,SACtB,CAAC,IACD,EAAE,WAAW,QAAQ,UAAU;AAAA,IACnC,OACE,KAAK,UAAU,SACX,OACA,KAAK,MACF,IAAI,CAAC,SAAS,kBAAkB,IAAI,CAAC,EACrC;AAAA,MACC,CAAC,SAA2C,SAAS;AAAA,IACvD;AAAA,EACV;AACF;AAEO,SAAS,6BACd,MACA,WACoB;AACpB,MAAI,mBAAmB,KAAK,aAAa,GAAG;AAC1C,WAAO;AAAA,EACT;AAEA,MAAI,KAAK,kBAAkB,QAAW;AACpC,WAAO,KAAK;AAAA,EACd;AAEA,SAAO,0BAA0B,SAAS,IACtCC,8BACA;AACN;AAEA,SAAS,mBAAmB,eAA4C;AACtE,SAAO,kBAAkB;AAC3B;AAEO,SAAS,4BAA4B,MAE1C;AACA,MACE,KAAK,kBAAkB,UACvB,mBAAmB,KAAK,aAAa,GACrC;AACA,WAAO,CAAC;AAAA,EACV;AAEA,SAAO,EAAE,eAAe,KAAK,cAAc;AAC7C;AAEO,SAAS,4BAA4B,MAE1C;AACA,SAAO,KAAK,YAAY,SAAY,CAAC,IAAI,EAAE,eAAe,KAAK,QAAQ;AACzE;AAEA,SAAS,0BAA0B,KAAsB;AACvD,SAAO,0IAA0I;AAAA,IAC/I;AAAA,EACF;AACF;AAEO,SAAS,wBACd,MAC0B;AAC1B,QAAM,QAAQ,KAAK,OAAO,IAAI,CAAC,SAAS;AACtC,UAAM,OAAO,wBAAwB,IAAI;AAEzC,QAAI,SAAS,QAAW;AACtB,YAAM,IAAI,MAAM,kCAAkC,IAAI,EAAE;AAAA,IAC1D;AAEA,WAAO;AAAA,EACT,CAAC;AAED,SAAO;AAAA,IACL,GAAI,KAAK,cAAc,SAAY,CAAC,IAAI,EAAE,WAAW,KAAK,UAAU;AAAA,IACpE,GAAG,mBAAmB,IAAI;AAAA,IAC1B,GAAI,KAAK,WAAW,SAAY,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO;AAAA,IAC3D,GAAG,4BAA4B,IAAI;AAAA,IACnC,GAAI,KAAK,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM;AAAA,IACxD,GAAG,4BAA4B,IAAI;AAAA,IACnC,GAAI,KAAK,kBAAkB,SACvB,CAAC,IACD,EAAE,eAAe,KAAK,cAAc;AAAA,IACxC,GAAI,UAAU,SAAY,CAAC,IAAI,EAAE,MAAM;AAAA,EACzC;AACF;AAEO,SAAS,2BACd,YACmB;AACnB,SAAO;AAAA,IACL,UAAU,WAAW;AAAA,IACrB,OAAO,WAAW;AAAA,IAClB,MAAM;AAAA,IACN,UAAU;AAAA,IACV,OAAO,WAAW;AAAA,IAClB,OAAO;AAAA,IACP,YAAY,WAAW;AAAA,IACvB,OAAO,WAAW;AAAA,IAClB,OAAO;AAAA,IACP,OAAO,CAAC;AAAA,IACR,OAAO;AAAA,EACT;AACF;AAEO,SAAS,mBACd,MAGA;AACA,MAAI,KAAK,aAAa,QAAW;AAC/B,WAAO,EAAE,UAAU,KAAK,SAAS;AAAA,EACnC;AAEA,QAAM,YAAYD,0BAAyB,KAAK,WAAW,EAAE;AAE7D,MAAI,cAAc,QAAW;AAC3B,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,YAAY,kBAAkB,SAAS;AAE7C,SAAO,cAAc,SAAY,CAAC,IAAI,EAAE,UAAU,CAAC,SAAS,EAAE;AAChE;AAEA,SAAS,kBACP,MAC8D;AAC9D,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,EACX;AACF;AAEA,SAAS,wBACP,MACoE;AACpE,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,EACX;AACF;AAlQA;AAAA;AAAA;AASA,IAAAE;AAKA,IAAAC;AAAA;AAAA;;;ACdA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,4BAAAC;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AAgBP,eAAsB,mBACpB,MACe;AACf,QAAM,WAAW,KAAK,UAAU,KAAK;AACrC,QAAM,sBACJ,KAAK,WAAW,SAAY,SAAY,KAAK;AAC/C,QAAM,SAAS,MAAM,uBAAuB,QAAQ;AAEpD,MAAI,wBAAwB,QAAW;AACrC,UAAM,EAAE,YAAY,IAClB,MAAM,8BAA8B,mBAAmB;AACzD,UAAM,oBAAoB,qBAAqB,MAAM;AAErD,QAAI,gBAAgB,mBAAmB;AACrC,YAAM,IAAI;AAAA,QACR,uBAAuB,QAAQ,eAAe,iBAAiB,SAAS,WAAW;AAAA,MACrF;AAAA,IACF;AAAA,EACF;AAEA,MAAI,OAAO,SAAS,mBAAmB;AACrC,UAAM;AAAA,MACJ,qBAAqB,MAAM;AAAA,MAC3B,OAAO,aAAa;AAClB,cAAM,SAAS,KAAK,UAAU,OAAO;AACrC,cAAM,QAAQ,KAAK,SAAS;AAC5B,cAAM;AAAA,UACJ,MAAM,0BAA0B,UAAU,OAAO,WAAW;AAAA,YAC1D,QAAQ,OAAO;AAAA,YACf;AAAA,UACF,CAAC;AAAA,UACD;AAAA,YACE,YAAY,OAAO;AAAA,YACnB,aAAa,OAAO;AAAA,YACpB,kBAAkB;AAAA,YAClB;AAAA,YACA,YAAY,OAAO;AAAA,YACnB;AAAA,YACA,WAAW,OAAO;AAAA,YAClB,OAAO;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA;AAAA,EACF;AAEA,MAAI,OAAO,YAAY,SAAS,iBAAiB;AAC/C,UAAM,wBAAwB,MAAM,MAAM;AAC1C;AAAA,EACF;AAEA,QAAM,oBAAoB,qBAAqB,MAAM,GAAG,OAAO,aAAa;AAC1E,UAAM,SAAS,KAAK,UAAU,OAAO;AACrC,UAAM,QAAQ,KAAK,SAAS;AAE5B,YAAQ,OAAO,MAAM;AAAA,MACnB,KAAK,cAAc;AACjB,cAAM,oBAA8C;AAAA,UAClD,GAAI,OAAO,cAAc,SACrB,CAAC,IACD,EAAE,WAAW,OAAO,UAAU;AAAA,UAClC,GAAI,OAAO,aAAa,OAAO,CAAC,IAAI,EAAE,UAAU,OAAO,SAAS;AAAA,UAChE,QAAQ,OAAO;AAAA,UACf,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,UAC1C,GAAI,OAAO,QAAQ,OAAO,CAAC,IAAI,EAAE,KAAK,OAAO,IAAI;AAAA,UACjD;AAAA,UACA,OAAO,OAAO;AAAA,UACd,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,UAC1C,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,QAC5C;AAEA,YAAI,OAAO,UAAU,MAAM;AACzB,iBAAO,OAAO,mBAAmB;AAAA,YAC/B,OAAO,OAAO;AAAA,UAChB,CAAC;AAAA,QACH;AAEA,cAAM;AAAA,UACJ;AAAA,YACE,MAAM,sBAAsB,UAAU,iBAAiB;AAAA,UACzD;AAAA,UACA;AAAA,YACE,YAAY,OAAO;AAAA,YACnB,aAAa,OAAO;AAAA,YACpB,GAAI,OAAO,cAAc,SACrB,CAAC,IACD,EAAE,WAAW,OAAO,UAAU;AAAA,YAClC,GAAI,OAAO,aAAa,OAAO,CAAC,IAAI,EAAE,UAAU,OAAO,SAAS;AAAA,YAChE,kBAAkB;AAAA,YAClB,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,YAC1C;AAAA,YACA,YAAY,OAAO;AAAA,YACnB,GAAI,OAAO,QAAQ,OAAO,CAAC,IAAI,EAAE,KAAK,OAAO,IAAI;AAAA,YACjD;AAAA,YACA,OAAO,OAAO;AAAA,YACd,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,YAC1C,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,YAC1C,OAAO,OAAO;AAAA,UAChB;AAAA,UACA;AAAA,QACF;AACA;AAAA,MACF;AAAA,MACA,KAAK,UAAU;AACb,cAAM,cAAkC;AAAA,UACtC,YAAY,OAAO;AAAA,UACnB,GAAI,OAAO,cAAc,SACrB,CAAC,IACD,EAAE,WAAW,OAAO,UAAU;AAAA,UAClC,GAAI,OAAO,aAAa,OAAO,CAAC,IAAI,EAAE,UAAU,OAAO,SAAS;AAAA,UAChE,QAAQ,OAAO;AAAA,UACf,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,UAC1C;AAAA,UACA,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,UAC1C,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,UAC1C,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,QAC5C;AAEA,YAAI,OAAO,UAAU,MAAM;AACzB,iBAAO,OAAO,aAAa;AAAA,YACzB,OAAO,OAAO;AAAA,UAChB,CAAC;AAAA,QACH;AACA,cAAM,gCAAgC,WAAW;AAEjD,cAAM;AAAA,UACJ,MAAM,mBAAmB,UAAU,OAAO,SAAS,IAAI,WAAW;AAAA,UAClE;AAAA,YACE,YAAY,OAAO;AAAA,YACnB,aAAa,OAAO;AAAA,YACpB,GAAI,OAAO,cAAc,SACrB,CAAC,IACD,EAAE,WAAW,OAAO,UAAU;AAAA,YAClC,GAAI,OAAO,aAAa,OAAO,CAAC,IAAI,EAAE,UAAU,OAAO,SAAS;AAAA,YAChE,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,YAC1C;AAAA,YACA,YAAY,OAAO;AAAA,YACnB;AAAA,YACA,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,YAC1C,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,YAC1C,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,YAC1C,OAAO,OAAO;AAAA,UAChB;AAAA,UACA;AAAA,QACF;AACA;AAAA,MACF;AAAA,MACA,KAAK;AACH,cAAM;AAAA,UACJ,MAAM,oBAAoB,UAAU,OAAO,WAAW;AAAA,YACpD,QAAQ,OAAO;AAAA,YACf;AAAA,YACA,OAAO,OAAO;AAAA,YACd,GAAI,OAAO,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,OAAO,MAAM;AAAA,YAC5D,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,YAC1C,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,UAC5C,CAAC;AAAA,UACD;AAAA,YACE,YAAY,OAAO;AAAA,YACnB,aAAa,OAAO;AAAA,YACpB,kBAAkB;AAAA,YAClB;AAAA,YACA,YAAY,OAAO;AAAA,YACnB;AAAA,YACA,OAAO,OAAO;AAAA,YACd,GAAI,OAAO,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,OAAO,MAAM;AAAA,YAC5D,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,YAC1C,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,YAC1C,WAAW,OAAO;AAAA,YAClB,OAAO;AAAA,UACT;AAAA,UACA;AAAA,QACF;AACA;AAAA,MACF,KAAK;AACH,cAAM;AAAA,UACJ,MAAM,0BAA0B,UAAU,OAAO,WAAW;AAAA,YAC1D,QAAQ,OAAO;AAAA,YACf,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,YAC1C;AAAA,YACA,OAAO,OAAO;AAAA,YACd,GAAI,OAAO,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,OAAO,MAAM;AAAA,YAC5D,GAAI,OAAO,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,OAAO,KAAK;AAAA,YACzD,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,YAC1C,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,UAC5C,CAAC;AAAA,UACD;AAAA,YACE,YAAY,OAAO;AAAA,YACnB,aAAa,OAAO;AAAA,YACpB,kBAAkB;AAAA,YAClB,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,YAC1C;AAAA,YACA,YAAY,OAAO;AAAA,YACnB;AAAA,YACA,OAAO,OAAO;AAAA,YACd,GAAI,OAAO,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,OAAO,MAAM;AAAA,YAC5D,GAAI,OAAO,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,OAAO,KAAK;AAAA,YACzD,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,YAC1C,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,YAC1C,WAAW,OAAO;AAAA,YAClB,OAAO;AAAA,UACT;AAAA,UACA;AAAA,QACF;AACA;AAAA,IACJ;AAAA,EACF,CAAC;AACH;AAEA,eAAe,wBACb,MACA,QACe;AACf,MAAI,OAAO,WAAW,SAAS,iBAAiB;AAC9C,UAAM,IAAI,MAAM,kDAAkD;AAAA,EACpE;AAEA,QAAM,SAAS,MAAM;AAAA,IACnB,OAAO,WAAW;AAAA,EACpB;AACA,QAAM,SAAS,KAAK,UAAU,OAAO;AACrC,QAAM,QAAQ,KAAK,SAAS;AAE5B,UAAQ,OAAO,MAAM;AAAA,IACnB,KAAK;AACH,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF,KAAK,cAAc;AACjB,YAAM,oBAA8C;AAAA,QAClD,GAAI,OAAO,cAAc,SACrB,CAAC,IACD,EAAE,WAAW,OAAO,UAAU;AAAA,QAClC,GAAI,OAAO,aAAa,OAAO,CAAC,IAAI,EAAE,UAAU,OAAO,SAAS;AAAA,QAChE,QAAQ,OAAO;AAAA,QACf,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,QAC1C,GAAI,OAAO,QAAQ,OAAO,CAAC,IAAI,EAAE,KAAK,OAAO,IAAI;AAAA,QACjD;AAAA,QACA,OAAO,OAAO;AAAA,QACd,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,QAC1C,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,MAC5C;AAEA,UAAI,OAAO,UAAU,MAAM;AACzB,eAAO,OAAO,mBAAmB;AAAA,UAC/B,OAAO,OAAO;AAAA,QAChB,CAAC;AAAA,MACH;AAEA,UAAI,6BAA6B,MAAM,GAAG;AACxC,cAAM;AAAA,UACJ;AAAA,YACE,MAAM,mCAAmC,QAAQ,iBAAiB;AAAA,UACpE;AAAA,UACA;AAAA,YACE,GAAG,0BAA0B,QAAQ,QAAQ,KAAK;AAAA,YAClD,kBAAkB;AAAA,UACpB;AAAA,UACA;AAAA,QACF;AACA;AAAA,MACF;AAEA,YAAM;AAAA,QACJ;AAAA,UACE,MAAM,4BAA4B,QAAQ,iBAAiB;AAAA,QAC7D;AAAA,QACA;AAAA,UACE,GAAG,0BAA0B,QAAQ,QAAQ,KAAK;AAAA,UAClD,kBAAkB;AAAA,QACpB;AAAA,QACA;AAAA,MACF;AACA;AAAA,IACF;AAAA,IACA,KAAK,UAAU;AACb,YAAM,cAAkC;AAAA,QACtC,YAAY,OAAO;AAAA,QACnB,GAAI,OAAO,cAAc,SACrB,CAAC,IACD,EAAE,WAAW,OAAO,UAAU;AAAA,QAClC,GAAI,OAAO,aAAa,OAAO,CAAC,IAAI,EAAE,UAAU,OAAO,SAAS;AAAA,QAChE,QAAQ,OAAO;AAAA,QACf,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,QAC1C;AAAA,QACA,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,QAC1C,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,QAC1C,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,MAC5C;AAEA,UAAI,OAAO,UAAU,MAAM;AACzB,eAAO,OAAO,aAAa;AAAA,UACzB,OAAO,OAAO;AAAA,QAChB,CAAC;AAAA,MACH;AACA,YAAM,gCAAgC,WAAW;AAEjD,UAAI,6BAA6B,MAAM,GAAG;AACxC,cAAM;AAAA,UACJ,MAAM;AAAA,YACJ;AAAA,YACA,OAAO,SAAS;AAAA,YAChB;AAAA,UACF;AAAA,UACA,0BAA0B,QAAQ,QAAQ,KAAK;AAAA,UAC/C;AAAA,QACF;AACA;AAAA,MACF;AAEA,YAAM;AAAA,QACJ,MAAM;AAAA,UACJ;AAAA,UACA,OAAO,SAAS;AAAA,UAChB;AAAA,QACF;AAAA,QACA,0BAA0B,QAAQ,QAAQ,KAAK;AAAA,QAC/C;AAAA,MACF;AACA;AAAA,IACF;AAAA,IACA,KAAK;AACH,YAAM;AAAA,QACJ,MAAM,6BAA6B,QAAQ,OAAO,WAAW;AAAA,UAC3D,QAAQ,OAAO;AAAA,UACf;AAAA,UACA,OAAO,OAAO;AAAA,UACd,GAAI,OAAO,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,OAAO,MAAM;AAAA,UAC5D,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,UAC1C,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,QAC5C,CAAC;AAAA,QACD;AAAA,UACE,GAAG,0BAA0B,QAAQ,QAAQ,KAAK;AAAA,UAClD,kBAAkB;AAAA,UAClB,OAAO,OAAO;AAAA,UACd,GAAI,OAAO,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,OAAO,MAAM;AAAA,UAC5D,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,UAC1C,WAAW,OAAO;AAAA,QACpB;AAAA,QACA;AAAA,MACF;AACA;AAAA,IACF,KAAK;AACH,YAAM;AAAA,QACJ,MAAM,mCAAmC,QAAQ,OAAO,WAAW;AAAA,UACjE,QAAQ,OAAO;AAAA,UACf,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,UAC1C;AAAA,UACA,OAAO,OAAO;AAAA,UACd,GAAI,OAAO,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,OAAO,MAAM;AAAA,UAC5D,GAAI,OAAO,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,OAAO,KAAK;AAAA,UACzD,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,UAC1C,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,QAC5C,CAAC;AAAA,QACD;AAAA,UACE,GAAG,0BAA0B,QAAQ,QAAQ,KAAK;AAAA,UAClD,kBAAkB;AAAA,UAClB,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,UAC1C,OAAO,OAAO;AAAA,UACd,GAAI,OAAO,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,OAAO,MAAM;AAAA,UAC5D,GAAI,OAAO,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,OAAO,KAAK;AAAA,UACzD,GAAI,OAAO,kBAAkB,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc;AAAA,UAC1C,WAAW,OAAO;AAAA,QACpB;AAAA,QACA;AAAA,MACF;AACA;AAAA,EACJ;AACF;AAEA,eAAe,gCACb,SACe;AACf,QAAM,SAAS,MAAM,cAAc;AAEnC,MAAI,OAAO,cAAc,QAAW;AAClC;AAAA,EACF;AACA,SAAO,OAAO,SAAS;AAAA,IACrB,mBAAmB,kCAAkC,OAAO,SAAS;AAAA,EACvE,CAAC;AACH;AAEA,SAAS,6BACP,QACS;AACT,QAAM,SAASA,0BAAyB,OAAO,WAAW;AAC1D,SACE,QAAQ,SAAS,WACjB,OAAO,cAAc,UACrB,OAAO,eAAe,OAAO;AAEjC;AAEA,SAAS,0BACP,QACA,QACA,OACA;AACA,SAAO;AAAA,IACL,YAAY,OAAO;AAAA,IACnB,aAAa,OAAO;AAAA,IACpB;AAAA,IACA,YAAY,OAAO;AAAA,IACnB;AAAA,IACA,OACE,OAAO,SAAS,cAChB,OAAO,SAAS,aAChB,OAAO,SAAS,oBACZ,OACA,OAAO;AAAA,IACb,GAAI,OAAO,SAAS,YAAY,OAAO,SAAS,eAC5C,OAAO,cAAc,SACnB,CAAC,IACD,EAAE,WAAW,OAAO,UAAU,IAChC,CAAC;AAAA,IACL,GAAI,OAAO,SAAS,YAAY,OAAO,SAAS,eAC5C,OAAO,kBAAkB,SACvB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc,IACxC,CAAC;AAAA,IACL,GAAI,OAAO,SAAS,YAAY,OAAO,SAAS,eAC5C,OAAO,kBAAkB,SACvB,CAAC,IACD,EAAE,eAAe,OAAO,cAAc,IACxC,CAAC;AAAA,IACL,GAAI,OAAO,SAAS,WAChB,OAAO,UAAU,SACf,CAAC,IACD,EAAE,OAAO,OAAO,MAAM,IACxB,CAAC;AAAA,IACL,GAAI,OAAO,SAAS,YAAY,OAAO,kBAAkB,SACrD,EAAE,eAAe,OAAO,cAAc,IACtC,CAAC;AAAA,EACP;AACF;AAEA,SAAS,qBACP,QACQ;AACR,MAAI,OAAO,eAAe,QAAW;AACnC,WAAO,OAAO;AAAA,EAChB;AACA,MAAI,OAAO,WAAW,SAAS,iBAAiB;AAC9C,WAAO,OAAO,WAAW;AAAA,EAC3B;AACA,SAAO,OAAO;AAChB;AAhjBA;AAAA;AAAA;AAoBA;AACA;AACA;AAMA;AACA;AACA,IAAAC;AACA,IAAAC;AAAA;AAAA;;;AC/BA,SAAS,6BAAAC,kCAAiC;AAM1C,eAAsB,iBACpB,MACe;AACf,QAAM,cAAc,eAAe,KAAK,QAAS;AAEjD,MAAI,KAAK,WAAW,QAAQ;AAC1B,UAAM;AAAA,MACJ,cAAc,EAAE,KAAKA,2BAA0B,WAAW,EAAE,CAAC;AAAA,IAC/D;AACA;AAAA,EACF;AAEA,QAAM,kBAAkB,aAAa;AACvC;AAnBA;AAAA;AAAA;AAGA;AACA,IAAAC;AAAA;AAAA;;;ACJA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA,IAAAC;AACA,IAAAC;AAAA;AAAA;;;ACLA;AAAA,EACE,gBAAAC;AAAA,EACA,4BAAAC;AAAA,EACA;AAAA,OAGK;AASP,eAAsB,2BACpB,UACA,MAC6C;AAC7C,QAAM,YAAYA,0BAAyB,KAAK,WAAW,EAAE;AAE7D,MAAI,cAAc,QAAW;AAC3B,WAAO;AAAA,EACT;AAEA,QAAM,QAAQ,sBAAsB,SAAS;AAC7C,MAAI,UAAU,QAAW;AACvB,WAAO;AAAA,EACT;AACA,MAAI,MAAM,SAAS,gBAAgB,KAAK,UAAU,QAAW;AAC3D,WAAO;AAAA,EACT;AAEA,QAAM,WAAW,MAAMD,cAAa,QAAQ;AAC5C,QAAM,UACJ,MAAM,SAAS,eACX,uBAAuB,UAAU,KAAK,KAAK,IAC3C;AAAA,IACE;AAAA,IACA,MAAM,2BAA2B,UAAU,MAAM,WAAW;AAAA,IAC5D,KAAK;AAAA,EACP;AAEN,SAAO;AAAA,IACL,YAAY,QAAQ,IAAI,CAAC,UAAU,MAAM,SAAS;AAAA,IAClD;AAAA,EACF;AACF;AAEA,SAAS,sBACP,WAIY;AACZ,MAAI,cAAc,oBAAoB,cAAc,mBAAmB;AACrE,WAAO,EAAE,MAAM,aAAa;AAAA,EAC9B;AAEA,QAAM,QAAQ,wCAAwC,KAAK,SAAS;AACpE,MAAI,QAAQ,CAAC,MAAM,QAAW;AAC5B,WAAO;AAAA,EACT;AAEA,SAAO,EAAE,aAAa,mBAAmB,MAAM,CAAC,CAAC,GAAG,MAAM,UAAU;AACtE;AAEO,SAAS,uBACd,UACA,OACyB;AACzB,SAAO,UAAU,SACb,WACA,SAAS,OAAO,CAAC,YAAY,QAAQ,SAAS,KAAK;AACzD;AAEO,SAAS,0BACd,UACA,eACA,OACyB;AACzB,QAAM,OAAO,SAAS,KAAK,CAAC,YAAY,QAAQ,cAAc,aAAa;AAC3E,MAAI,SAAS,QAAW;AACtB,UAAM,IAAI,MAAM,WAAW,aAAa,kBAAkB;AAAA,EAC5D;AAEA,QAAM,SAAS,GAAG,KAAK,IAAI;AAC3B,SAAO,SAAS,OAAO,CAAC,YAAY;AAClC,QAAI,QAAQ,cAAc,KAAK,WAAW;AACxC,aAAO;AAAA,IACT;AACA,QAAI,CAAC,QAAQ,KAAK,WAAW,MAAM,GAAG;AACpC,aAAO;AAAA,IACT;AACA,WAAO,UAAU,UAAa,QAAQ,QAAQ,KAAK,SAAS;AAAA,EAC9D,CAAC;AACH;AAhGA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA,EACE,yBAAAE;AAAA,EACA,uBAAAC;AAAA,EACA,6BAAAC;AAAA,EACA,+BAAAC;AAAA,EACA,6BAAAC;AAAA,EACA,+BAAAC;AAAA,EACA,sCAAAC;AAAA,EACA,gCAAAC;AAAA,EACA,+BAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA,4BAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,sBAAAC;AAAA,EACA;AAAA,EACA,6BAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA,wBAAAC;AAAA,OAIK;AA2CP,eAAsB,kBACpB,MACe;AACf,QAAM,gBAAgBH,0BAAyB,KAAK,WAAW;AAC/D,MACE,eAAe,SAAS,WACxB,cAAc,cAAc,mBAC3B,cAAc,cAAc,UAC3B,KAAK,WAAW,aAChB,KAAK,WAAW,cAChB,KAAK,WAAW,UAChB,KAAK,WAAW,YAChB,KAAK,WAAW,SAClB;AACA,UAAM,8BAA8B,MAAM,aAAa;AACvD;AAAA,EACF;AAEA,SAAO,MAAM,sCAAsC,IAAI;AAEvD,UAAQ,KAAK,QAAQ;AAAA,IACnB,KAAK;AACH,YAAM,cAAc,IAAI;AACxB;AAAA,IACF,KAAK;AACH,UAAI,KAAK,iBAAiB,QAAW;AACnC,cAAM,IAAI,MAAM,+CAA+C;AAAA,MACjE;AACA,YAAM,kBAAkB;AAAA,QACtB,MAAM;AAAA,QACN,aAAa;AAAA,QACb,WAAW,KAAK;AAAA,QAChB,GAAI,KAAK,eAAe,SACpB,CAAC,IACD,EAAE,YAAY,KAAK,WAAW;AAAA,QAClC,cAAc,KAAK;AAAA,QACnB,SAAS;AAAA,MACX,CAAC;AACD;AAAA,IACF,KAAK;AACH,YAAM;AAAA,SACH,MAAM,8BAA8B,KAAK,WAAW,GAAG;AAAA,QACxD,OAAO,aAAa;AAClB,gBAAM,0BAA0B,UAAU,IAAI;AAAA,QAChD;AAAA,MACF;AACA;AAAA,IACF,KAAK;AACH,YAAM,6BAA6B,IAAI;AACvC,YAAM;AAAA,QACJ,eAAe,KAAK,WAAW;AAAA,QAC/B,OAAO,aAAa;AAClB,gBAAM,aAAa,MAAM,sBAAsB,UAAU,IAAI;AAC7D,gBAAM,UAAU,2BAA2B,UAAU;AACrD,gBAAM,cAAc,MAAM,wBAAwB,UAAU;AAE5D,cAAI,KAAK,QAAQ,MAAM;AACrB,kBAAM;AAAA,cACJ,OAAO,WACL,MAAMC,oBAAmB,UAAU,WAAW,OAAQ;AAAA,gBACpD,GAAG;AAAA,gBACH,GAAI,WAAW,SAAY,CAAC,IAAI,EAAE,OAAO;AAAA,cAC3C,CAAC;AAAA,cACH;AAAA,cACA,KAAK,UAAU;AAAA,YACjB;AACA;AAAA,UACF;AAEA,gBAAM;AAAA,YACJ,MAAMA,oBAAmB,UAAU,WAAW,OAAQ,WAAW;AAAA,YACjE;AAAA,YACA,KAAK,UAAU;AAAA,UACjB;AAAA,QACF;AAAA,MACF;AACA;AAAA,IACF,KAAK;AACH,UAAI,KAAK,UAAU,QAAW;AAC5B,cAAM,6BAA6B,IAAI;AAAA,MACzC;AACA,YAAM;AAAA,QACJ,eAAe,KAAK,WAAW;AAAA,QAC/B,OAAO,aAAa;AAClB,gBAAM,YAAY,aAAa,KAAK,WAAW;AAC/C,cAAI,wBAAwB,SAAS,GAAG;AACtC,kBAAMG,WAAU,2BAA2B,MAAM;AAAA,cAC/C,kBAAkB;AAAA,cAClB,WAAW;AAAA,YACb,CAAC;AACD,kBAAM,WAAW,OAAO,WACtB,MAAMF,2BAA0B,UAAU,WAAW;AAAA,cACnD,GAAI,WAAW,SAAY,CAAC,IAAI,EAAE,OAAO;AAAA,cACzC,GAAI,KAAK,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM;AAAA,YAC1D,CAAC;AAEH,gBAAI,KAAK,QAAQ,MAAM;AACrB,oBAAM;AAAA,gBACJ;AAAA,gBACA,KAAK;AAAA,gBACLE;AAAA,gBACA,KAAK,UAAU;AAAA,cACjB;AACA;AAAA,YACF;AAEA,kBAAM;AAAA,cACJ,MAAM,SAAS,KAAK,MAAM;AAAA,cAC1BA;AAAA,cACA,KAAK,UAAU;AAAA,YACjB;AACA;AAAA,UACF;AAEA,gBAAM,QAAQ,MAAM,2BAA2B,UAAU,IAAI;AAC7D,gBAAM,aACJ,UAAU,SACN,OACA,EAAE,GAAG,MAAM,UAAU,MAAM,WAAW;AAC5C,gBAAM,UAAU,2BAA2B,YAAY;AAAA,YACrD,kBAAkB;AAAA,UACpB,CAAC;AAED,cAAI,KAAK,QAAQ,MAAM;AACrB,gBAAI,KAAK,UAAU,QAAW;AAC5B,oBAAM;AAAA,gBACJ,OAAO,WACL;AAAA,kBACE,MAAMb,uBAAsB,UAAU;AAAA,oBACpC,GAAG,wBAAwB,UAAU;AAAA,oBACrC,GAAI,WAAW,SAAY,CAAC,IAAI,EAAE,OAAO;AAAA,kBAC3C,CAAC;AAAA,gBACH;AAAA,gBACF;AAAA,gBACA,KAAK,UAAU;AAAA,cACjB;AACA;AAAA,YACF;AAEA,kBAAM;AAAA,cACJ;AAAA,gBACE,MAAMA,uBAAsB,UAAU;AAAA,kBACpC,GAAG,wBAAwB,UAAU;AAAA,kBACrC,OAAO;AAAA,gBACT,CAAC;AAAA,cACH;AAAA,cACA;AAAA,cACA,KAAK,UAAU;AAAA,YACjB;AACA;AAAA,UACF;AAEA,gBAAM;AAAA,YACJ;AAAA,cACE,MAAMA;AAAA,gBACJ;AAAA,gBACA,wBAAwB,UAAU;AAAA,cACpC;AAAA,YACF;AAAA,YACA;AAAA,YACA,KAAK,UAAU;AAAA,UACjB;AAAA,QACF;AAAA,MACF;AACA;AAAA,IACF,KAAK;AACH,UAAI,iBAAiB,IAAI,GAAG;AAC1B,cAAM,iBAAiB,IAAI;AAC3B;AAAA,MACF;AACA,YAAM;AAAA,QACJ,eAAe,KAAK,WAAW;AAAA,QAC/B,OAAO,aAAa;AAClB,gBAAM,YAAY,aAAa,KAAK,QAAS;AAC7C,gBAAM,gBAAgB,6BAA6B,MAAM,SAAS;AAClE,gBAAM,gBACJ,kBAAkB,SACd,2BAA2B,IAAI,IAC/B,2BAA2B,EAAE,GAAG,MAAM,cAAc,CAAC;AAE3D,gBAAM;AAAA,YACJ,MAAM,gBAAgB,UAAU,WAAW;AAAA,cACzC,GAAI,KAAK,cAAc,SACnB,CAAC,IACD,EAAE,WAAW,KAAK,UAAU;AAAA,cAChC,GAAI,kBAAkB,SAAY,CAAC,IAAI,EAAE,cAAc;AAAA,cACvD,GAAI,KAAK,YAAY,OAAO,EAAE,OAAO,WAAW,IAAI,CAAC;AAAA,cACrD,GAAG,4BAA4B,IAAI;AAAA,YACrC,CAAC;AAAA,YACD;AAAA,YACA,KAAK,UAAU;AAAA,UACjB;AAAA,QACF;AAAA,MACF;AACA;AAAA,IACF,KAAK;AACH,UAAI,KAAK,UAAU,QAAW;AAC5B,cAAM,6BAA6B,IAAI;AAAA,MACzC;AACA,YAAM;AAAA,QACJ,eAAe,KAAK,WAAW;AAAA,QAC/B,OAAO,aAAa;AAClB,gBAAM,UAAU,2BAA2B,MAAM;AAAA,YAC/C,kBAAkB;AAAA,YAClB,WAAW,aAAa,KAAK,QAAS;AAAA,UACxC,CAAC;AACD,gBAAM,WAAW,OACf,WAEA,MAAME;AAAA,YACJ;AAAA,YACA,aAAa,KAAK,QAAS;AAAA,YAC3B;AAAA,cACE,GAAI,WAAW,SAAY,CAAC,IAAI,EAAE,OAAO;AAAA,cACzC,GAAG,4BAA4B,IAAI;AAAA,cACnC,GAAI,KAAK,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM;AAAA,cACxD,GAAI,KAAK,YAAY,OAAO,EAAE,OAAO,WAAW,IAAI,CAAC;AAAA,cACrD,GAAI,KAAK,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM;AAAA,cACxD,GAAI,KAAK,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK;AAAA,cACrD,GAAI,KAAK,kBAAkB,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;AAAA,cAC7D,GAAG,4BAA4B,IAAI;AAAA,YACrC;AAAA,UACF;AAEF,cAAI,KAAK,QAAQ,MAAM;AACrB,kBAAM;AAAA,cACJ;AAAA,cACA,KAAK;AAAA,cACL;AAAA,cACA,KAAK,UAAU;AAAA,YACjB;AACA;AAAA,UACF;AAEA,gBAAM;AAAA,YACJ,MAAM,SAAS,KAAK,MAAM;AAAA,YAC1B;AAAA,YACA,KAAK,UAAU;AAAA,UACjB;AAAA,QACF;AAAA,MACF;AACA;AAAA,IACF,KAAK;AACH,UAAI,KAAK,UAAU,QAAW;AAC5B,cAAM,6BAA6B,IAAI;AAAA,MACzC;AACA,YAAM;AAAA,QACJ,eAAe,KAAK,WAAW;AAAA,QAC/B,OAAO,aAAa;AAClB,gBAAM,UAAU,2BAA2B,MAAM;AAAA,YAC/C,kBAAkB;AAAA,YAClB,WAAW,aAAa,KAAK,QAAS;AAAA,UACxC,CAAC;AAED,cAAI,KAAK,QAAQ,MAAM;AACrB,kBAAM;AAAA,cACJ,OAAO,WACL,MAAMD;AAAA,gBACJ;AAAA,gBACA,aAAa,KAAK,QAAS;AAAA,gBAC3B;AAAA,kBACE,GAAI,WAAW,SAAY,CAAC,IAAI,EAAE,OAAO;AAAA,kBACzC,GAAI,KAAK,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM;AAAA,kBACxD,GAAI,KAAK,YAAY,OAAO,EAAE,OAAO,WAAW,IAAI,CAAC;AAAA,kBACrD,GAAI,KAAK,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM;AAAA,kBACxD,GAAI,KAAK,kBAAkB,OACvB,EAAE,eAAe,KAAK,IACtB,CAAC;AAAA,kBACL,GAAG,4BAA4B,IAAI;AAAA,gBACrC;AAAA,cACF;AAAA,cACF,KAAK;AAAA,cACL;AAAA,cACA,KAAK,UAAU;AAAA,YACjB;AACA;AAAA,UACF;AAEA,gBAAM;AAAA,YACJ,MAAMA,qBAAoB,UAAU,aAAa,KAAK,QAAS,GAAG;AAAA,cAChE,GAAI,KAAK,WAAW,SAAY,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO;AAAA,cAC3D,GAAI,KAAK,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM;AAAA,cACxD,GAAI,KAAK,YAAY,OAAO,EAAE,OAAO,WAAW,IAAI,CAAC;AAAA,cACrD,GAAI,KAAK,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM;AAAA,cACxD,GAAI,KAAK,kBAAkB,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;AAAA,cAC7D,GAAG,4BAA4B,IAAI;AAAA,YACrC,CAAC;AAAA,YACD;AAAA,YACA,KAAK,UAAU;AAAA,UACjB;AAAA,QACF;AAAA,MACF;AACA;AAAA,IACF,KAAK;AACH,YAAM,mBAAmB,IAAI;AAC7B;AAAA,IACF,KAAK;AACH,YAAM;AAAA,QACJ,eAAe,KAAK,WAAW;AAAA,QAC/B,OAAO,aAAa;AAClB,gBAAM;AAAA,YACJ,MAAM;AAAA,cACJ;AAAA,cACA,aAAa,KAAK,QAAS;AAAA,cAC3B,KAAK,UAAU;AAAA,YACjB;AAAA,YACA,2BAA2B,IAAI;AAAA,YAC/B,KAAK,UAAU;AAAA,UACjB;AAAA,QACF;AAAA,MACF;AACA;AAAA,EACJ;AACF;AAEA,eAAe,6BACb,MACe;AACf,QAAM,WAAW,MAAM,8BAA8B,KAAK,WAAW;AAErE,QAAM,IAAIW,sBAAqB,SAAS,WAAW,EAAE;AAAA,IACnD,OAAO,aAAa;AAClB,YAAM,aAAa,MAAM,sBAAsB,UAAU,IAAI;AAC7D,YAAM,UACJ,WAAW,aAAa,SACpB,CAAC,IACD,EAAE,UAAU,WAAW,SAAS;AAEtC,UAAI,MAAMP,6BAA4B,UAAU,OAAO,GAAG;AACxD;AAAA,MACF;AAEA,UAAI;AACF,cAAM,0BAA0B,UAAU,QAAW,OAAO;AAAA,MAC9D,SAAS,OAAO;AACd,YAAI,4BAA4B,KAAK,GAAG;AACtC,gBAAM,gCAAgC,MAAM,MAAM,OAAO;AAAA,QAC3D;AACA,cAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,EAAE,4BAA4B,QAAQ;AAAA,EACxC;AACF;AAEA,eAAe,sBACb,UACA,MAC8B;AAC9B,QAAM,QAAQ,MAAM,2BAA2B,UAAU,IAAI;AAC7D,MAAI,KAAK,kBAAkB,MAAM;AAC/B,WAAO,kBAAkB,MAAM,KAAK;AAAA,EACtC;AAEA,QAAM,oBAAoB,MAAM,+BAA+B,UAAU;AAAA,IACvE,GAAI,UAAU,SAAY,CAAC,IAAI,EAAE,UAAU,MAAM,WAAW;AAAA,EAC9D,CAAC;AAED,MAAI,kBAAkB,WAAW,GAAG;AAClC,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,SAAO,EAAE,GAAG,MAAM,UAAU,kBAAkB;AAChD;AAEA,SAAS,gCACP,MACA,QACO;AACP,QAAM,eAAe,iBAAiB;AAAA,IACpC;AAAA,IACA;AAAA,IACA;AAAA,IACA,KAAK;AAAA,IACL;AAAA,IACA;AAAA,EACF,CAAC;AAED,SAAO,IAAI;AAAA,IACT;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA,KAAK,YAAY;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,KAAK,IAAI;AAAA,EACb;AACF;AAEA,SAAS,4BAA4B,OAAgC;AACnE,SAAO,iBAAiB,SAAS,MAAM,SAAS;AAClD;AAEA,SAAS,kBACP,MACA,OACqB;AACrB,SAAO,UAAU,SAAY,OAAO,EAAE,GAAG,MAAM,UAAU,MAAM,WAAW;AAC5E;AAEA,eAAe,8BACb,MACA,QACe;AACf,QAAM,UAAU,MAAM,wBAAwB,MAAM;AACpD,QAAM,0BACJ,OAAO,cAAc,UAAa,KAAK,aAAa;AACtD,QAAM,YAAY,0BACd,SACA,aAAa,KAAK,YAAY,KAAK,WAAW;AAClD,QAAM,UAAU;AAAA,IACd,GAAG,2BAA2B,IAAI;AAAA,IAClC,YAAY,0BACR,GAAGD,2BAA0B,OAAO,QAAQ,CAAC,WAC7C,KAAK;AAAA,IACT,aAAa,KAAK;AAAA,IAClB,YAAY,EAAE,MAAM,iBAA0B,WAAW,QAAQ,GAAG;AAAA,EACtE;AAEA,UAAQ,KAAK,QAAQ;AAAA,IACnB,KAAK,UAAU;AACb,YAAM,cAAc,MAAM,wBAAwB,IAAI;AACtD,UAAI,cAAc,QAAW;AAC3B,YAAI,KAAK,QAAQ,MAAM;AACrB,gBAAM;AAAA,YACJ,OAAO,WACL,MAAMD,6BAA4B,QAAQ,KAAK,OAAQ;AAAA,cACrD,GAAG;AAAA,cACH,GAAI,WAAW,SAAY,CAAC,IAAI,EAAE,OAAO;AAAA,YAC3C,CAAC;AAAA,YACH;AAAA,YACA,KAAK,UAAU;AAAA,UACjB;AACA;AAAA,QACF;AACA,cAAM;AAAA,UACJ,MAAMA,6BAA4B,QAAQ,KAAK,OAAQ,WAAW;AAAA,UAClE;AAAA,UACA,KAAK,UAAU;AAAA,QACjB;AACA;AAAA,MACF;AACA,UAAI,KAAK,QAAQ,MAAM;AACrB,cAAM;AAAA,UACJ,OAAO,WACL,MAAMA,6BAA4B,QAAQ,KAAK,OAAQ;AAAA,YACrD,GAAG;AAAA,YACH,GAAI,WAAW,SAAY,CAAC,IAAI,EAAE,OAAO;AAAA,UAC3C,CAAC;AAAA,UACH;AAAA,UACA,KAAK,UAAU;AAAA,QACjB;AACA;AAAA,MACF;AAEA,YAAM;AAAA,QACJ,MAAMA,6BAA4B,QAAQ,KAAK,OAAQ,WAAW;AAAA,QAClE;AAAA,QACA,KAAK,UAAU;AAAA,MACjB;AACA;AAAA,IACF;AAAA,IACA,KAAK,QAAQ;AACX,YAAM,cAAc;AAAA,QAClB,GAAG;AAAA,QACH,kBAAkB;AAAA,MACpB;AACA,UAAI,cAAc,QAAW;AAC3B,YAAI,KAAK,QAAQ,MAAM;AACrB,cAAI,KAAK,UAAU,QAAW;AAC5B,kBAAM;AAAA,cACJ,OAAO,WACL;AAAA,gBACE,MAAMK,6BAA4B,QAAQ;AAAA,kBACxC,GAAG,wBAAwB,IAAI;AAAA,kBAC/B,GAAI,WAAW,SAAY,CAAC,IAAI,EAAE,OAAO;AAAA,gBAC3C,CAAC;AAAA,cACH;AAAA,cACF;AAAA,cACA,KAAK,UAAU;AAAA,YACjB;AACA;AAAA,UACF;AAEA,gBAAM;AAAA,YACJ;AAAA,cACE,MAAMA,6BAA4B,QAAQ;AAAA,gBACxC,GAAG,wBAAwB,IAAI;AAAA,gBAC/B,OAAO;AAAA,cACT,CAAC;AAAA,YACH;AAAA,YACA;AAAA,YACA,KAAK,UAAU;AAAA,UACjB;AACA;AAAA,QACF;AACA,cAAM;AAAA,UACJ;AAAA,YACE,MAAMA;AAAA,cACJ;AAAA,cACA,wBAAwB,IAAI;AAAA,YAC9B;AAAA,UACF;AAAA,UACA;AAAA,UACA,KAAK,UAAU;AAAA,QACjB;AACA;AAAA,MACF;AACA,UAAI,KAAK,QAAQ,MAAM;AACrB,YAAI,KAAK,UAAU,QAAW;AAC5B,gBAAM;AAAA,YACJ,OAAO,WACL;AAAA,cACE,MAAMA,6BAA4B,QAAQ;AAAA,gBACxC,GAAG,wBAAwB,IAAI;AAAA,gBAC/B,GAAI,WAAW,SAAY,CAAC,IAAI,EAAE,OAAO;AAAA,cAC3C,CAAC;AAAA,YACH;AAAA,YACF;AAAA,YACA,KAAK,UAAU;AAAA,UACjB;AACA;AAAA,QACF;AAEA,cAAM;AAAA,UACJ;AAAA,YACE,MAAMA,6BAA4B,QAAQ;AAAA,cACxC,GAAG,wBAAwB,IAAI;AAAA,cAC/B,OAAO;AAAA,YACT,CAAC;AAAA,UACH;AAAA,UACA;AAAA,UACA,KAAK,UAAU;AAAA,QACjB;AACA;AAAA,MACF;AAEA,YAAM;AAAA,QACJ;AAAA,UACE,MAAMA;AAAA,YACJ;AAAA,YACA,wBAAwB,IAAI;AAAA,UAC9B;AAAA,QACF;AAAA,QACA;AAAA,QACA,KAAK,UAAU;AAAA,MACjB;AACA;AAAA,IACF;AAAA,IACA,KAAK,OAAO;AACV,UAAI,cAAc,QAAW;AAC3B,cAAM,aAAa;AAAA,UACjB,GAAG;AAAA,UACH,kBAAkB;AAAA,QACpB;AACA,cAAM;AAAA,UACJ;AAAA,YACE,MAAMA;AAAA,cACJ;AAAA,cACA,wBAAwB,IAAI;AAAA,YAC9B;AAAA,UACF;AAAA,UACA;AAAA,UACA,KAAK,UAAU;AAAA,QACjB;AACA;AAAA,MACF;AAEA,YAAM,gBAAgB,6BAA6B,MAAM,SAAS;AAClE,YAAM;AAAA,QACJ,MAAM,yBAAyB,QAAQ,WAAW;AAAA,UAChD,GAAI,KAAK,cAAc,SACnB,CAAC,IACD,EAAE,WAAW,KAAK,UAAU;AAAA,UAChC,GAAI,kBAAkB,SAAY,CAAC,IAAI,EAAE,cAAc;AAAA,UACvD,GAAI,KAAK,YAAY,OAAO,EAAE,OAAO,WAAW,IAAI,CAAC;AAAA,UACrD,GAAG,4BAA4B,IAAI;AAAA,QACrC,CAAC;AAAA,QACD,kBAAkB,SAAY,UAAU,EAAE,GAAG,SAAS,cAAc;AAAA,QACpE,KAAK,UAAU;AAAA,MACjB;AACA;AAAA,IACF;AAAA,IACA,KAAK,WAAW;AACd,YAAM,oBAAoB,wBAAwB,WAAW,SAAS;AACtE,YAAM,iBAAiB;AAAA,QACrB,GAAG;AAAA,QACH,kBAAkB;AAAA,QAClB,WAAW;AAAA,MACb;AACA,YAAM,WAAW,OACf,WAEA,MAAMF,oCAAmC,QAAQ,mBAAmB;AAAA,QAClE,GAAI,WAAW,SAAY,CAAC,IAAI,EAAE,OAAO;AAAA,QACzC,GAAG,4BAA4B,IAAI;AAAA,QACnC,GAAI,KAAK,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM;AAAA,QACxD,GAAI,KAAK,YAAY,OAAO,EAAE,OAAO,WAAW,IAAI,CAAC;AAAA,QACrD,GAAI,KAAK,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM;AAAA,QACxD,GAAI,KAAK,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK;AAAA,QACrD,GAAI,KAAK,kBAAkB,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;AAAA,QAC7D,GAAG,4BAA4B,IAAI;AAAA,MACrC,CAAC;AAEH,UAAI,KAAK,QAAQ,MAAM;AACrB,cAAM;AAAA,UACJ;AAAA,UACA,KAAK;AAAA,UACL;AAAA,UACA,KAAK,UAAU;AAAA,QACjB;AACA;AAAA,MACF;AAEA,YAAM;AAAA,QACJ,MAAM,SAAS,KAAK,MAAM;AAAA,QAC1B;AAAA,QACA,KAAK,UAAU;AAAA,MACjB;AACA;AAAA,IACF;AAAA,IACA,KAAK,YAAY;AACf,YAAM,oBAAoB,wBAAwB,YAAY,SAAS;AACvE,YAAM,kBAAkB;AAAA,QACtB,GAAG;AAAA,QACH,kBAAkB;AAAA,QAClB,WAAW;AAAA,MACb;AAEA,UAAI,KAAK,QAAQ,MAAM;AACrB,cAAM;AAAA,UACJ,OAAO,WACL,MAAMC,8BAA6B,QAAQ,mBAAmB;AAAA,YAC5D,GAAI,WAAW,SAAY,CAAC,IAAI,EAAE,OAAO;AAAA,YACzC,GAAI,KAAK,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM;AAAA,YACxD,GAAI,KAAK,YAAY,OAAO,EAAE,OAAO,WAAW,IAAI,CAAC;AAAA,YACrD,GAAI,KAAK,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM;AAAA,YACxD,GAAI,KAAK,kBAAkB,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;AAAA,YAC7D,GAAG,4BAA4B,IAAI;AAAA,UACrC,CAAC;AAAA,UACH,KAAK;AAAA,UACL;AAAA,UACA,KAAK,UAAU;AAAA,QACjB;AACA;AAAA,MACF;AAEA,YAAM;AAAA,QACJ,MAAMA,8BAA6B,QAAQ,mBAAmB;AAAA,UAC5D,GAAI,KAAK,WAAW,SAAY,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO;AAAA,UAC3D,GAAI,KAAK,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM;AAAA,UACxD,GAAI,KAAK,YAAY,OAAO,EAAE,OAAO,WAAW,IAAI,CAAC;AAAA,UACrD,GAAI,KAAK,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM;AAAA,UACxD,GAAI,KAAK,kBAAkB,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;AAAA,UAC7D,GAAG,4BAA4B,IAAI;AAAA,QACrC,CAAC;AAAA,QACD;AAAA,QACA,KAAK,UAAU;AAAA,MACjB;AACA;AAAA,IACF;AAAA,IACA,KAAK,QAAQ;AACX,YAAM,oBAAoB,wBAAwB,QAAQ,SAAS;AACnE,YAAM;AAAA,QACJ,MAAM;AAAA,UACJ;AAAA,UACA;AAAA,UACA,KAAK,UAAU;AAAA,QACjB;AAAA,QACA;AAAA,QACA,KAAK,UAAU;AAAA,MACjB;AACA;AAAA,IACF;AAAA,IACA,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,YAAM,IAAI;AAAA,QACR,8CAA8C,KAAK,MAAM;AAAA,MAC3D;AAAA,EACJ;AACF;AAEA,eAAe,wBACb,MAC6B;AAC7B,QAAM,UAAU,kBAAkB,IAAI;AACtC,QAAM,SAAS,MAAM,cAAc;AAEnC,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAI,OAAO,cAAc,SACrB,CAAC,IACD;AAAA,MACE,mBAAmB;AAAA,QACjB,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACN;AACF;AAEA,SAAS,wBACP,QACA,WACQ;AACR,MAAI,cAAc,QAAW;AAC3B,UAAM,IAAI;AAAA,MACR,iBAAiB,MAAM;AAAA,IACzB;AAAA,EACF;AAEA,SAAO;AACT;AAlxBA;AAAA;AAAA;AA4BA;AACA;AACA;AACA;AACA;AACA;AACA;AAaA;AAkBA;AAAA;AAAA;;;ACxCO,SAAS,0BACd,SAC8B;AAC9B,QAAM,cAAc,wBAAwB,QAAQ,GAAG;AAEvD,MAAI,QAAQ,cAAc,cAAc;AACtC,UAAM,UAAU,4BAA4B;AAAA,MAC1C,CAAC,SAAS,YAAY,IAAI,MAAM;AAAA,IAClC;AAEA,QAAI,QAAQ,SAAS,GAAG;AACtB,YAAM,IAAI;AAAA,QACR,uEAAuE,QAAQ,KAAK,IAAI,CAAC;AAAA,MAC3F;AAAA,IACF;AAEA,WAAO;AAAA,MACL,KAAK;AAAA,MACL,WAAW,QAAQ;AAAA,MACnB,UAAU,QAAQ;AAAA,IACpB;AAAA,EACF;AAEA,QAAM,cACJ,YAAY,iBAAiB,YAAY;AAC3C,QAAM,WAAW,sBAAsB,QAAQ,YAAY,WAAW;AAEtE,MAAI,aAAa,QAAW;AAC1B,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,QAAM,iBAAiB,sBAAsB,QAAQ,cAAc;AAEnE,MAAI,mBAAmB,QAAW;AAChC,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA,KAAK;AAAA,IACL,WAAW,QAAQ;AAAA,IACnB;AAAA,EACF;AACF;AAEA,SAAS,wBACP,aACmB;AACnB,MAAI,gBAAgB,QAAW;AAC7B,WAAO,EAAE,GAAG,QAAQ,IAAI;AAAA,EAC1B;AAEA,SAAO;AAAA,IACL,GAAG,QAAQ;AAAA,IACX,GAAG;AAAA,EACL;AACF;AAEA,SAAS,sBAAsB,MAA8C;AAC3E,MAAI,SAAS,UAAa,KAAK,KAAK,MAAM,IAAI;AAC5C,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AA7FA,IAkBa;AAlBb;AAAA;AAAA;AAkBO,IAAM,8BAA8B;AAAA,MACzC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA;AAAA;;;ACvBA,SAAS,SAAAO,cAAa;AACtB,SAAS,cAAAC,mBAAkB;AAC3B,SAAS,QAAAC,OAAM,WAAAC,gBAAe;AAqBvB,SAAS,mBACd,MACA,UAAqC,CAAC,GACZ;AAC1B,QAAM,UAAU,2BAA2B,MAAM,QAAQ,QAAQ,CAAC,CAAC;AAEnE,SAAOH,OAAM,QAAQ,SAAS,QAAQ,MAAM;AAAA,IAC1C,KAAK,UAAU;AAAA,IACf,UAAU,QAAQ,aAAa;AAAA,IAC/B,KAAK,+BAA+B;AAAA,IACpC,OAAO,QAAQ,aAAa,OAAO,WAAW,CAAC,UAAU,QAAQ,MAAM;AAAA,EACzE,CAAC;AACH;AAMA,eAAsB,qBACpB,MACA,UAAqC,CAAC,GAC1B;AACZ,QAAM,QAAQ,mBAAmB,MAAM,OAAO;AAC9C,QAAM,SAAmB,CAAC;AAC1B,QAAM,SAAmB,CAAC;AAE1B,QAAM,QAAQ,GAAG,QAAQ,CAAC,UAAkB,OAAO,KAAK,KAAK,CAAC;AAC9D,QAAM,QAAQ,GAAG,QAAQ,CAAC,UAAkB,OAAO,KAAK,KAAK,CAAC;AAE9D,QAAM,IAAI,QAAc,CAAC,gBAAgB,WAAW;AAClD,UAAM,GAAG,SAAS,MAAM;AACxB,UAAM,GAAG,SAAS,CAAC,SAAS;AAC1B,UAAI,SAAS,GAAG;AACd;AAAA,UACE,IAAI;AAAA,YACF,YAAY,IAAI,0BAA0B,IAAI,KAAK,OAAO,OAAO,MAAM,EAAE,SAAS,MAAM,EAAE,KAAK,CAAC;AAAA,UAClG;AAAA,QACF;AACA;AAAA,MACF;AACA,qBAAe;AAAA,IACjB,CAAC;AAAA,EACH,CAAC;AAED,MAAI;AACF,WAAO,KAAK,MAAM,OAAO,OAAO,MAAM,EAAE,SAAS,MAAM,CAAC;AAAA,EAC1D,SAAS,OAAO;AACd,UAAM,IAAI;AAAA,MACR,YAAY,IAAI,2BAA2B,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA,IACnG;AAAA,EACF;AACF;AASA,SAAS,2BACP,MACA,MACgE;AAChE,QAAM,iBAAiB,qBAAqB;AAC5C,QAAM,WAAW,eAAe;AAEhC,MAAI,mBAAmB,UAAa,aAAa,QAAW;AAC1D,WAAO;AAAA,MACL,MAAM;AAAA,QACJE,MAAK,gBAAgB,gBAAgB,OAAO,QAAQ,SAAS;AAAA,QAC7DA,MAAK,gBAAgB,YAAY,OAAO,OAAO,OAAO,GAAG,IAAI,KAAK;AAAA,QAClE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,GAAG;AAAA,MACL;AAAA,MACA,SAAS,QAAQ;AAAA,IACnB;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,MACJ,2BAA2B,IAAI;AAAA,MAC/B;AAAA,MACA;AAAA,MACA,GAAI,aAAa,SAAY,CAAC,IAAI,CAAC,yBAAyB,QAAQ;AAAA,MACpE,GAAG;AAAA,IACL;AAAA,IACA,SAAS,QAAQ;AAAA,EACnB;AACF;AAEA,SAAS,iCAAoD;AAC3D,QAAM,cAAc,EAAE,GAAG,UAAU,EAAE;AAErC,aAAW,QAAQ,6BAA6B;AAC9C,WAAO,YAAY,IAAI;AAAA,EACzB;AAEA,SAAO;AACT;AAEA,SAAS,2BAA2B,MAAiC;AACnE,QAAM,WAAW,GAAG,IAAI;AACxB,QAAM,cACJ,WAAW,8BACXC,SAAQ,UAAU,GAAG,YAAY,OAAO,MAAM;AAChD,QAAM,WAAWD,MAAK,aAAa,QAAQ;AAE3C,MAAID,YAAW,QAAQ,GAAG;AACxB,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AA3IA;AAAA;AAAA;AAIA;AAMA;AAAA;AAAA;;;ACyBO,SAAS,uBAAuB,OAIlB;AACnB,QAAM,aAAa;AAAA,IACjB,KAAK,MAAM,OAAO,YAAY,OAAO;AAAA,IACrC,SACE,MAAM,OAAO,YAAY,WACzB;AAAA,EACJ;AACA,QAAM,QAAQ,MAAM,SAAS;AAAA,IAC3B,CAAC,OAAO,YAAY,QAAQ,QAAQ;AAAA,IACpC;AAAA,EACF;AACA,QAAM,QAAQ,8BAA8B,MAAM,OAAO,GAAG;AAC5D,QAAM,QAAQ,4BAA4B;AAAA,IACxC,UAAU,MAAM;AAAA,IAChB;AAAA,IACA;AAAA,IACA,QAAQ,MAAM;AAAA,EAChB,CAAC;AACD,QAAM,eAAe,KAAK,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC;AACtE,QAAM,eAAe,MAAM,KAAK,CAAC,SAAS,KAAK,SAAS,WAAW;AAEnE,SAAO;AAAA,IACL,UAAU,MAAM,SAAS;AAAA,IACzB;AAAA,IACA,uBAAuB,MAAM,KAAK,CAAC,SAAS,KAAK,YAAY;AAAA,IAC7D,kBAAkB,iCAAiC;AAAA,MACjD,UAAU;AAAA,MACV;AAAA,MACA,YAAY,MAAM,SAAS;AAAA,MAC3B,gBAAgB;AAAA,IAClB,CAAC;AAAA,IACD,UAAU,2BAA2B,OAAO,KAAK;AAAA,IACjD;AAAA,IACA,QAAQ,MAAM;AAAA,IACd;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,4BAA4B,OAKD;AAClC,UAAQ,MAAM,QAAQ;AAAA,IACpB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,QACL,2BAA2B;AAAA,UACzB,UAAU,MAAM;AAAA,UAChB,YAAY,MAAM;AAAA,UAClB,OAAO,MAAM;AAAA,UACb,cAAc;AAAA,UACd,MAAM,MAAM;AAAA,QACd,CAAC;AAAA,MACH,EAAE,OAAO,CAAC,SAAS,KAAK,WAAW,CAAC;AAAA,IACtC,KAAK;AACH,aAAO;AAAA,QACL,2BAA2B;AAAA,UACzB,UAAU,MAAM;AAAA,UAChB,YAAY,MAAM;AAAA,UAClB,OAAO,MAAM;AAAA,UACb,cAAc;AAAA,UACd,MAAM;AAAA,QACR,CAAC;AAAA,QACD,2BAA2B;AAAA,UACzB,UAAU,MAAM;AAAA,UAChB,YAAY,MAAM;AAAA,UAClB,OAAO,MAAM;AAAA,UACb,cAAc;AAAA,UACd,MAAM;AAAA,QACR,CAAC;AAAA,MACH,EAAE,OAAO,CAAC,SAAS,KAAK,WAAW,CAAC;AAAA,IACtC,KAAK;AACH,aAAO;AAAA,QACL,2BAA2B;AAAA,UACzB,UAAU,MAAM,SAAS;AAAA,YACvB,CAAC,YAAY,QAAQ,UAAU;AAAA,UACjC;AAAA,UACA,YAAY,MAAM;AAAA,UAClB,OAAO,MAAM;AAAA,UACb,cAAc;AAAA,UACd,MAAM;AAAA,QACR,CAAC;AAAA,QACD,2BAA2B;AAAA,UACzB,UAAU,MAAM,SAAS;AAAA,YACvB,CAAC,YAAY,QAAQ,UAAU;AAAA,UACjC;AAAA,UACA,YAAY,MAAM;AAAA,UAClB,OAAO,MAAM;AAAA,UACb,cAAc;AAAA,UACd,MAAM;AAAA,QACR,CAAC;AAAA,MACH,EAAE,OAAO,CAAC,SAAS,KAAK,WAAW,CAAC;AAAA,IACtC,KAAK,mBAAmB;AACtB,YAAM,gBAAgB,MAAM,SAAS;AAAA,QACnC,CAAC,YAAY,QAAQ,UAAU;AAAA,MACjC;AACA,YAAM,kBAAkB,MAAM,SAAS;AAAA,QACrC,CAAC,YAAY,QAAQ,UAAU,aAAa,QAAQ,UAAU;AAAA,MAChE;AAEA,aAAO;AAAA,QACL,2BAA2B;AAAA,UACzB,UAAU;AAAA,UACV,YAAY,MAAM;AAAA,UAClB,OAAO,MAAM;AAAA,UACb,cAAc;AAAA,UACd,MAAM;AAAA,QACR,CAAC;AAAA,QACD,2BAA2B;AAAA,UACzB,UAAU;AAAA,UACV,YAAY,MAAM;AAAA,UAClB,OAAO,MAAM;AAAA,UACb,cAAc;AAAA,UACd,MAAM;AAAA,QACR,CAAC;AAAA,MACH,EAAE,OAAO,CAAC,SAAS,KAAK,WAAW,CAAC;AAAA,IACtC;AAAA,EACF;AACF;AAEA,SAAS,2BAA2B,OAMX;AACvB,QAAM,QAAQ,MAAM,SAAS;AAAA,IAC3B,CAAC,OAAO,YAAY,QAAQ,QAAQ;AAAA,IACpC;AAAA,EACF;AAEA,SAAO;AAAA,IACL,UAAU,MAAM,SAAS;AAAA,IACzB,UAAU;AAAA,MACR,MAAM;AAAA,MACN;AAAA,MACA,MAAM,SAAS;AAAA,MACf,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,IACA,cAAc,MAAM;AAAA,IACpB,MAAM,MAAM;AAAA,IACZ;AAAA,EACF;AACF;AAEA,SAAS,2BACP,OACA,OACwB;AACxB,SAAO;AAAA,IACL;AAAA,IACA,aAAa;AAAA,MACX,KAAK,MAAM;AAAA,QACT,CAAC,OAAO,SAAS,QAAQ,KAAK,SAAS,YAAY;AAAA,QACnD;AAAA,MACF;AAAA,MACA,KAAK,MAAM;AAAA,QACT,CAAC,OAAO,SAAS,QAAQ,KAAK,SAAS,YAAY;AAAA,QACnD;AAAA,MACF;AAAA,IACF;AAAA,IACA,QAAQ;AAAA,MACN,gBAAgB,MAAM;AAAA,QACpB,CAAC,OAAO,SAAS,QAAQ,KAAK,SAAS,OAAO;AAAA,QAC9C;AAAA,MACF;AAAA,MACA,OAAO,MAAM;AAAA,QACX,CAAC,OAAO,SAAS,QAAQ,KAAK,SAAS,OAAO;AAAA,QAC9C;AAAA,MACF;AAAA,MACA,QAAQ,MAAM;AAAA,QACZ,CAAC,OAAO,SAAS,QAAQ,KAAK,SAAS,OAAO;AAAA,QAC9C;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,2BACd,UACS;AACT,SAAO;AAAA,IACL,UAAU,SAAS;AAAA,IACnB,YAAY,SAAS,eACjB,SAAS,aACT,EAAE,KAAK,SAAS,WAAW,IAAI;AAAA,IACnC,uBAAuB,SAAS;AAAA,IAChC,kBAAkB,SAAS;AAAA,IAC3B,OAAO,SAAS,MAAM,IAAI,CAAC,UAAU;AAAA,MACnC,UAAU,KAAK;AAAA,MACf,cAAc,KAAK;AAAA,MACnB,MAAM,KAAK;AAAA,MACX,QAAQ,KAAK,SAAS;AAAA,MACtB,aAAa,KAAK,SAAS;AAAA,MAC3B,OAAO,KAAK;AAAA,IACd,EAAE;AAAA,IACF,QAAQ,SAAS;AAAA,IACjB,QAAQ,SAAS,SAAS;AAAA,IAC1B,aAAa,SAAS,SAAS;AAAA,IAC/B,OAAO,SAAS;AAAA,IAChB,GAAI,SAAS,eAAe,EAAE,OAAO,SAAS,SAAS,MAAM,IAAI,CAAC;AAAA,EACpE;AACF;AAEO,SAAS,4BACd,UACmB;AACnB,SAAO;AAAA,IACL;AAAA,IACA,WAAW,SAAS,MAAM,SAAS,SAAS,QAAQ,WAAW,SAAS,aAAa,IAAI,KAAK,GAAG,MAAM,SAAS,KAAK;AAAA,IACrH,GAAI,SAAS,wBACT,CAAC,2DAA2D,IAC5D,CAAC;AAAA,IACL,GAAI,SAAS,eAAe,CAAC,YAAY,SAAS,SAAS,KAAK,EAAE,IAAI,CAAC;AAAA,IACvE,aAAa,SAAS,SAAS,OAAO,KAAK,YAAY,SAAS,SAAS,OAAO,cAAc,sBAAsB,SAAS,SAAS,OAAO,MAAM;AAAA,IACnJ,WAAW,iCAAiC,SAAS,SAAS,YAAY,GAAG,CAAC,IAAI,iCAAiC,SAAS,SAAS,YAAY,GAAG,CAAC;AAAA,IACrJ,8BAA8B,SAAS,WAAW,GAAG,GAAG,SAAS,eAAe,YAAY,SAAS,WAAW,OAAO,KAAK,EAAE;AAAA,IAC9H,GAAG,gCAAgC,SAAS,gBAAgB;AAAA,EAC9D;AACF;AAEA,SAAS,gCACP,OACmB;AACnB,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO,CAAC;AAAA,EACV;AAEA,SAAO;AAAA,IACL;AAAA,IACA,GAAG,MAAM,QAAQ,CAAC,SAAS;AAAA,MACzB,KAAK,KAAK,OAAO;AAAA,MACjB,cAAc,KAAK,OAAO;AAAA,IAC5B,CAAC;AAAA,EACH;AACF;AAxRA;AAAA;AAAA;AAGA;AAAA;AAAA;;;ACHA;AAAA,EACE,2BAAAG;AAAA,EACA,gBAAAC;AAAA,EACA,wBAAAC;AAAA,OAGK;AAqBP,eAAsB,aACpB,MACA,SACe;AACf,QAAM,WAAW,MAAM,mBAAmB,IAAI;AAC9C,MAAI,QAAQ,MAAM;AAChB,UAAM;AAAA,MACJ,cAAc;AAAA,QACZ,OAAO,KAAK,IAAI,CAAC,QAAQ,cAAc,KAAK,SAAS,IAAI,IAAI,KAAK,CAAC,CAAC;AAAA,MACtE,CAAC;AAAA,IACH;AACA;AAAA,EACF;AAEA,MAAI,KAAK,WAAW,GAAG;AACrB,UAAM,kBAAkB,YAAY;AACpC;AAAA,EACF;AAEA,QAAM;AAAA,IACJ,GAAG,oBAAoB,CAAC;AAAA,EAAK,KAC1B;AAAA,MACC,CAAC,QACC,GAAG,IAAI,MAAM,MAAM,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,IAAI,MAAM,OAAO,CAAC,CAAC,KAAK,IAAI,eAAe,KAAK,OAAO,CAAC,CAAC,IAAI,IAAI,OAAO,OAAO,CAAC,CAAC,IAAI,0BAA0B,KAAK,SAAS,IAAI,IAAI,KAAK,CAAC,CAAC;AAAA,IACtL,EACC,KAAK,IAAI,CAAC;AAAA;AAAA,EACf;AACF;AAEA,SAAS,sBAA8B;AACrC,SAAO,GAAG,MAAM,OAAO,CAAC,CAAC,IAAI,QAAQ,OAAO,CAAC,CAAC,IAAI,OAAO,OAAO,CAAC,CAAC,IAAI,SAAS,OAAO,CAAC,CAAC;AAC1F;AAEA,eAAsB,eACpB,KACA,SACe;AACf,QAAM,UAAU,MAAM,kBAAkB,GAAG;AAC3C,MAAI,QAAQ,MAAM;AAChB,UAAM,kBAAkB,cAAc,cAAc,KAAK,OAAO,CAAC,CAAC;AAClE;AAAA,EACF;AAEA,QAAM;AAAA,IACJ;AAAA,MACE,QAAQ,IAAI,KAAK;AAAA,MACjB,UAAU,IAAI,KAAK;AAAA,MACnB,YAAY,uBAAuB,KAAK,WAAW,aAAa,CAAC;AAAA,MACjE,YAAY,sBAAsB,KAAK,OAAO,CAAC;AAAA,MAC/C,GAAI,YAAY,SAAY,CAAC,IAAI,CAAC,gBAAgB,QAAQ,UAAU,EAAE;AAAA,MACtE,WAAW,IAAI,MAAM;AAAA,MACrB,SAAS,IAAI,eAAe,GAAG;AAAA,MAC/B,cAAc,mBAAmB,KAAK,aAAa,eAAe,KAAK,GAAG;AAAA,MAC1E,UAAU,mBAAmB,KAAK,SAAS,WAAW,KAAK,GAAG;AAAA,MAC9D,SAAS,mBAAmB,KAAK,OAAO,SAAS,KAAK,GAAG;AAAA,MACzD,GAAI,IAAI,cAAc,SAAY,CAAC,IAAI,CAAC,UAAU,IAAI,SAAS,EAAE;AAAA,IACnE,EAAE,KAAK,IAAI,IAAI;AAAA,EACjB;AACF;AAEA,SAAS,cACP,KACA,SACyB;AACzB,SAAO;AAAA,IACL,YAAY,IAAI;AAAA,IAChB,aAAa,mBAAmB,KAAK,WAAW,aAAa;AAAA,IAC7D,WAAW,mBAAmB,KAAK,SAAS,WAAW;AAAA,IACvD,WAAW,IAAI;AAAA,IACf,GAAI,YAAY,SACZ,CAAC,IACD;AAAA,MACE,SAAS;AAAA,QACP,YAAY,QAAQ;AAAA,QACpB,OAAO,QAAQ;AAAA,QACf,KAAK,QAAQ;AAAA,MACf;AAAA,IACF;AAAA,IACJ,WAAW,IAAI;AAAA,IACf,GAAI,IAAI,gBAAgB,SAAY,CAAC,IAAI,EAAE,aAAa,IAAI,YAAY;AAAA,IACxE,GAAI,IAAI,cAAc,SAAY,CAAC,IAAI,EAAE,WAAW,IAAI,UAAU;AAAA,IAClE,YAAY,mBAAmB,KAAK,UAAU,YAAY;AAAA,IAC1D,GAAI,IAAI,eAAe,SAAY,CAAC,IAAI,EAAE,YAAY,IAAI,WAAW;AAAA,IACrE,OAAO,IAAI;AAAA,IACX,SAAS,mBAAmB,KAAK,OAAO,SAAS;AAAA,IACjD,GAAI,IAAI,YAAY,SAChB,CAAC,IACD,EAAE,KAAK,iBAAiB,IAAI,OAAO,EAAE;AAAA,IACzC,GAAI,IAAI,YAAY,SAAY,CAAC,IAAI,EAAE,SAAS,IAAI,QAAQ;AAAA,IAC5D,GAAI,IAAI,WAAW,SAAY,CAAC,IAAI,EAAE,QAAQ,IAAI,OAAO;AAAA,IACzD,WAAW,IAAI;AAAA,IACf,OAAO,IAAI;AAAA,IACX,GAAI,IAAI,4BAA4B,SAChC,CAAC,IACD,EAAE,yBAAyB,IAAI,wBAAwB;AAAA,IAC3D,QAAQ,IAAI;AAAA,IACZ,WAAW,IAAI;AAAA,IACf,eAAe,mBAAmB,KAAK,aAAa,eAAe;AAAA,EACrE;AACF;AAEO,SAAS,sBAAsB,KAAmC;AACvE,MAAI,IAAI,UAAU,UAAU;AAC1B,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEA,SAAS,iBAAiB,OAAwB;AAChD,MAAI;AAEJ,MAAI;AACF,aAAS,KAAK,MAAM,KAAK;AAAA,EAC3B,QAAQ;AACN,WAAO;AAAA,MACL,YAAY;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,EACF;AAEA,QAAM,MAAM,iBAAiB,MAAM;AAEnC,SAAO;AAAA,IACL,YAAY;AAAA,IACZ,GAAI,mBAAmB,KAAK,UAAU,MAAM,SACxC,CAAC,IACD,EAAE,UAAU,mBAAmB,KAAK,UAAU,EAAE;AAAA,IACpD,GAAI,mBAAmB,KAAK,OAAO,MAAM,SACrC,CAAC,IACD,EAAE,OAAO,mBAAmB,KAAK,OAAO,EAAE;AAAA,IAC9C,GAAI,mBAAmB,KAAK,MAAM,MAAM,SACpC,CAAC,IACD,EAAE,MAAM,mBAAmB,KAAK,MAAM,EAAE;AAAA,IAC5C,WAAW,mBAAmB,KAAK,QAAQ,MAAM;AAAA,IACjD,YACE,mBAAmB,KAAK,SAAS,MAAM,UACvC,mBAAmB,KAAK,SAAS,MAAM,UACvC,mBAAmB,KAAK,oBAAoB,MAAM;AAAA,EACtD;AACF;AAEA,SAAS,iBAAiB,OAAyC;AACjE,MAAI,CAAC,SAAS,KAAK,GAAG;AACpB,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,SAAS,MAAM;AAErB,SAAO,SAAS,MAAM,IAAI,SAAS;AACrC;AAEA,SAAS,mBACP,OACA,KACoB;AACpB,QAAM,QAAQ,MAAM,GAAG;AAEvB,SAAO,OAAO,UAAU,YAAY,UAAU,KAAK,QAAQ;AAC7D;AAEA,SAAS,SAAS,OAAkD;AAClE,SAAO,UAAU,QAAQ,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK;AAC5E;AAEA,eAAsB,gBACpB,KACA,UAKI,EAAE,MAAM,MAAM,GACH;AACf,QAAM,UACJ,QAAQ,YAAY,SAChB,MAAM,kBAAkB,GAAG,IAC3B,0BAA0B,KAAK,QAAQ,OAAO;AACpD,MAAI,QAAQ,MAAM;AAChB,UAAM;AAAA,MACJ,cAAc;AAAA,QACZ,GAAG,cAAc,KAAK,OAAO;AAAA,QAC7B,GAAI,sBAAsB,GAAG,MAAM,SAC/B,CAAC,IACD,EAAE,QAAQ,sBAAsB,GAAG,EAAE;AAAA,QACzC,GAAI,QAAQ,aAAa,SACrB,CAAC,IACD,EAAE,UAAU,2BAA2B,QAAQ,QAAQ,EAAE;AAAA,QAC7D,GAAI,QAAQ,UAAU,OAClB;AAAA,UACE,cAAc,iBAAiB;AAAA,YAC7B,oBAAoB,IAAI,KAAK;AAAA,YAC7B;AAAA,UACF,CAAC;AAAA,QACH,IACA,CAAC;AAAA,MACP,CAAC;AAAA,IACH;AACA;AAAA,EACF;AAEA,QAAM;AAAA,IACJ;AAAA,MACE,OAAO,IAAI,KAAK,IAAI,IAAI,KAAK,IAAI,IAAI,MAAM,YAAY,sBAAsB,KAAK,OAAO,CAAC;AAAA,MAC1F,GAAI,YAAY,SAAY,CAAC,IAAI,CAAC,gBAAgB,QAAQ,UAAU,EAAE;AAAA,MACtE,GAAI,sBAAsB,GAAG,MAAM,SAC/B,CAAC,IACD,CAAC,sBAAsB,GAAG,CAAE;AAAA,MAChC,GAAI,QAAQ,UAAU,OAClB;AAAA,QACE,UAAU,iBAAiB;AAAA,UACzB,oBAAoB,IAAI,KAAK;AAAA,UAC7B;AAAA,QACF,CAAC,CAAC;AAAA,MACJ,IACA,CAAC;AAAA,MACL,GAAI,QAAQ,aAAa,SACrB,CAAC,IACD,CAAC,IAAI,GAAG,4BAA4B,QAAQ,QAAQ,CAAC;AAAA,MACzD;AAAA,IACF,EAAE,KAAK,IAAI;AAAA,EACb;AACF;AAEA,eAAsB,uBAAuB,OAY3B;AAChB,QAAM,cAAc,iBAAiB,CAAC,oBAAoB,QAAQ,CAAC;AACnE,QAAM,gBAAgB,iBAAiB;AAAA,IACrC,0BAA0B,MAAM,WAAW;AAAA,IAC3C;AAAA,EACF,CAAC;AAED,MAAI,MAAM,MAAM;AACd,UAAM;AAAA,MACJ,cAAc;AAAA,QACZ,SAAS,MAAM,QAAQ;AAAA,UAAI,CAAC,SAC1B;AAAA,YACE,KAAK;AAAA,YACL,0BAA0B,KAAK,KAAK,KAAK,OAAO;AAAA,UAClD;AAAA,QACF;AAAA,QACA,GAAI,MAAM,aAAa,SACnB,CAAC,IACD,EAAE,UAAU,2BAA2B,MAAM,QAAQ,EAAE;AAAA,QAC3D,GAAI,MAAM,QAAQ,WAAW,IAAI,CAAC,IAAI,EAAE,aAAa,cAAc;AAAA,QACnE,SAAS,MAAM,QAAQ,IAAI,CAAC,UAAU;AAAA,UACpC,WAAW,KAAK,QAAQ;AAAA,UACxB,SAAS;AAAA,YACP,kCAAkC,MAAM,aAAa,KAAK,OAAO;AAAA,UACnE;AAAA,UACA,QAAQ,KAAK;AAAA,QACf,EAAE;AAAA,MACJ,CAAC;AAAA,IACH;AACA;AAAA,EACF;AAEA,QAAM,QAAQ;AAAA,IACZ,YAAY,MAAM,QAAQ,MAAM;AAAA,IAChC,YAAY,MAAM,QAAQ,MAAM;AAAA,EAClC;AAEA,aAAW,OAAO,MAAM,SAAS;AAC/B,UAAM;AAAA,MACJ,OAAO,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,MAAM,YAAY,mBAAmB,IAAI,OAAO,CAAC;AAAA,MAClG,gBAAgB,0BAA0B,IAAI,KAAK,IAAI,OAAO,EAAE,UAAU;AAAA,IAC5E;AAAA,EACF;AACA,aAAW,WAAW,MAAM,SAAS;AACnC,UAAM;AAAA,MACJ,mBAAmB,mBAAmB,QAAQ,OAAO,CAAC,KAAK,QAAQ,MAAM;AAAA,IAC3E;AAAA,EACF;AACA,MAAI,MAAM,aAAa,QAAW;AAChC,UAAM,KAAK,IAAI,GAAG,4BAA4B,MAAM,QAAQ,CAAC;AAAA,EAC/D;AACA,MAAI,MAAM,QAAQ,SAAS,GAAG;AAC5B,UAAM;AAAA,MACJ;AAAA,MACA,SAAS,WAAW;AAAA,MACpB,iCAAiC,aAAa;AAAA,IAChD;AAAA,EACF;AAEA,QAAM,kBAAkB,GAAG,MAAM,KAAK,IAAI,CAAC;AAAA,CAAI;AACjD;AAEA,SAAS,sBACP,KACA,SACQ;AACR,SAAO,YAAY,SACf,6BAA6B,IAAI,SAAS,MAC1C,mBAAmB,OAAO;AAChC;AAEA,SAAS,0BACP,KACA,SACQ;AACR,SAAO,YAAY,SACf,6BAA6B,IAAI,SAAS,MAC1C,GAAG,QAAQ,SAAS,YAAY,IAAI,QAAQ,UAAU;AAC5D;AAEA,SAAS,mBACP,SACQ;AACR,SAAO,QAAQ,UAAU,QAAQ,QAAQ,UAAU,SAC/C,QAAQ,MACR,GAAG,KAAK,UAAU,QAAQ,KAAK,CAAC,KAAK,QAAQ,GAAG;AACtD;AAEA,SAAS,kBACP,SACyB;AACzB,SAAO;AAAA,IACL,YAAY,QAAQ;AAAA,IACpB,OAAO,QAAQ;AAAA,IACf,KAAK,QAAQ;AAAA,EACf;AACF;AAEA,SAAS,0BACP,KACA,SACqB;AACrB,SAAO;AAAA,IACL,uBAAuB,KAAK,WAAW,aAAa;AAAA,IACpD;AAAA,EACF;AACF;AAEA,SAAS,kCACP,aACA,SACqB;AACrB,SAAO;AAAA,IACL,YAAYF,yBAAwB,aAAa,QAAQ,IAAI;AAAA,IAC7D,OAAO,QAAQ;AAAA,IACf,KAAK,QAAQ;AAAA,EACf;AACF;AAEA,eAAe,mBACb,MACmD;AACnD,QAAM,gBAAgB,oBAAI,IAAwB;AAClD,aAAW,OAAO,MAAM;AACtB,UAAM,cAAc,uBAAuB,KAAK,WAAW,aAAa;AACxE,UAAM,UAAU,cAAc,IAAI,WAAW,KAAK,CAAC;AACnD,YAAQ,KAAK,GAAG;AAChB,kBAAc,IAAI,aAAa,OAAO;AAAA,EACxC;AACA,QAAM,WACJ,MAAM,QAAQ;AAAA,IACZ,CAAC,GAAG,aAAa,EAAE,IAAI,OAAO,CAAC,aAAa,WAAW,MAAM;AAC3D,UAAI;AACF,YAAI,WAAoC,CAAC;AACzC,cAAM,IAAIE;AAAA,UACR,IAAI,SAAS,WAAW;AAAA,QAC1B,EAAE,aAAa,OAAO,aAAa;AACjC,qBAAW,MAAMD,cAAa,QAAQ;AAAA,QACxC,CAAC;AACD,cAAM,eAAe,IAAI;AAAA,UACvB,SAAS,IAAI,CAAC,YAAY,CAAC,QAAQ,WAAW,OAAO,CAAC;AAAA,QACxD;AAEA,eAAO,YAAY,QAAQ,CAAC,QAAQ;AAClC,gBAAM,UAAU,aAAa,IAAI,IAAI,SAAS;AAE9C,iBAAO,YAAY,SACf,CAAC,IACD;AAAA,YACE;AAAA,cACE,IAAI;AAAA,cACJ,kCAAkC,aAAa,OAAO;AAAA,YACxD;AAAA,UACF;AAAA,QACN,CAAC;AAAA,MACH,QAAQ;AACN,eAAO,CAAC;AAAA,MACV;AAAA,IACF,CAAC;AAAA,EACH,GACA,KAAK;AAEP,SAAO,IAAI,IAAI,OAAO;AACxB;AAEA,eAAe,kBACb,KAC0C;AAC1C,UAAQ,MAAM,mBAAmB,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,KAAK;AACxD;AAEA,SAAS,mBACP,KACA,aACA,WAMoB;AACpB,QAAM,SAAS;AACf,QAAM,WAAW,OAAO,WAAW;AACnC,MAAI,aAAa,QAAW;AAC1B,WAAO,oBAAoB,QAAwC;AAAA,EACrE;AACA,QAAM,aAAa,OAAO,SAAS;AACnC,MAAI,OAAO,eAAe,SAAU,QAAO;AAC3C,SAAO;AACT;AAEA,SAAS,uBACP,KACA,aACA,WAMQ;AACR,QAAM,OAAO,mBAAmB,KAAK,aAAa,SAAS;AAC3D,MAAI,SAAS,OAAW,QAAO;AAC/B,QAAM,IAAI,UAAU,wBAAwB,WAAW,EAAE;AAC3D;AAndA;AAAA;AAAA;AAQA;AAMA;AAKA;AAAA;AAAA;;;ACnBA;AAAA,EACE;AAAA,EACA,gBAAAE;AAAA,OAGK;AACP,SAAS,wBAAAC,6BAA4B;AAUrC,eAAsB,cACpB,MACA,WACmB;AACnB,SAAO,MAAM,YAAY;AAAA,IACvB,SAAS,IAAI,SAAS,KAAK,WAAY;AAAA,IACvC,OAAO,KAAK,SAAS;AAAA,IACrB;AAAA,IACA,GAAI,KAAK,YAAY,SAAY,CAAC,IAAI,EAAE,SAAS,KAAK,QAAQ;AAAA,IAC9D,GAAI,KAAK,WAAW,SAAY,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO;AAAA,IAC3D,QAAQ,KAAK,UAAU;AAAA,EACzB,CAAC;AACH;AAEA,eAAsB,eACpB,MACA,QACe;AACf,QAAM,UAGD,CAAC;AACN,QAAM,UAGD,CAAC;AAEN,QAAM,IAAIA,sBAAqB,IAAI,SAAS,KAAK,WAAY,CAAC,EAAE;AAAA,IAC9D,OAAO,aAAa;AAClB,YAAM,eACJ,KAAK,eAAe,SAAY,SAAY,IAAI,IAAI,KAAK,UAAU;AAErE,iBAAW,WAAW,MAAMD,cAAa,QAAQ,GAAG;AAClD,YACE,iBAAiB,UACjB,CAAC,aAAa,IAAI,QAAQ,SAAS,GACnC;AACA;AAAA,QACF;AACA,YAAI,QAAQ,UAAU,WAAW;AAC/B,kBAAQ,KAAK;AAAA,YACX;AAAA,YACA,QAAQ;AAAA,UACV,CAAC;AACD;AAAA,QACF;AACA,cAAM,SAAS,KAAK,UAAU;AAC9B,YAAI,WAAW,2BAA2B;AACxC,gBAAM,UAAU,MAAM,SAAS,YAAY,QAAQ,SAAS;AAC5D,cAAI,YAAY,UAAa,QAAQ,KAAK,MAAM,IAAI;AAClD,oBAAQ,KAAK;AAAA,cACX;AAAA,cACA,QAAQ;AAAA,YACV,CAAC;AACD;AAAA,UACF;AAAA,QACF;AACA,YAAI,WAAW,qBAAqB,WAAW,iBAAiB;AAC9D,gBAAM,WAAW,MAAM,SAAS,eAAe;AAAA,YAC7C,QAAQ;AAAA,YACR;AAAA,UACF;AACA,gBAAM,WAAW,MAAM,SAAS,QAAQ;AAAA,YACtC,QAAQ;AAAA,UACV;AACA,cAAI,UAAU,mBAAmB,UAAU;AACzC,oBAAQ,KAAK;AAAA,cACX;AAAA,cACA,QAAQ;AAAA,YACV,CAAC;AACD;AAAA,UACF;AAAA,QACF;AAEA,YAAI;AACF,kBAAQ,KAAK;AAAA,YACX;AAAA,YACA,KAAK,MAAM,cAAc,MAAM,QAAQ,SAAS;AAAA,UAClD,CAAC;AAAA,QACH,SAAS,OAAO;AACd,kBAAQ,KAAK;AAAA,YACX;AAAA,YACA,QAAQ,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,UAC/D,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,uBAAuB;AAAA,IAC3B,aAAa,KAAK;AAAA,IAClB;AAAA,IACA,GAAI,QAAQ,WAAW,IACnB,CAAC,IACD;AAAA,MACE,UAAU,uBAAuB;AAAA,QAC/B,UAAU,QAAQ,IAAI,CAAC,SAAS,KAAK,OAAO;AAAA,QAC5C;AAAA,QACA,QAAQ,KAAK,UAAU;AAAA,MACzB,CAAC;AAAA,IACH;AAAA,IACJ,MAAM,KAAK,QAAQ;AAAA,IACnB;AAAA,EACF,CAAC;AACH;AAEA,eAAsB,oBACpB,MACA,WACe;AACf,MAAI;AACJ,QAAM,IAAIC,sBAAqB,IAAI,SAAS,KAAK,WAAY,CAAC,EAAE;AAAA,IAC9D,OAAO,aAAa;AAClB,iBAAW,MAAMD,cAAa,QAAQ,GAAG;AAAA,QACvC,CAAC,UAAU,MAAM,cAAc;AAAA,MACjC;AAAA,IACF;AAAA,EACF;AAEA,MAAI,YAAY,QAAW;AACzB,UAAM,IAAI,MAAM,WAAW,SAAS,kBAAkB;AAAA,EACxD;AAEA,QAAM,IAAIC,sBAAqB,IAAI,SAAS,KAAK,WAAY,CAAC,EAAE;AAAA,IAC9D,OAAO,WAAW;AAChB,UAAK,MAAM,OAAO,iBAAiB,SAAS,MAAO,WAAW;AAC5D,cAAM,IAAI;AAAA,UACR,WAAW,QAAS,GAAG;AAAA,QACzB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,SAAS,KAAK,UAAU;AAC9B,MACE,WAAW,6BACX,WAAW,qBACX,WAAW,iBACX;AACA;AAAA,EACF;AAEA,QAAM,IAAIA,sBAAqB,IAAI,SAAS,KAAK,WAAY,CAAC,EAAE;AAAA,IAC9D,OAAO,aAAa;AAClB,UAAI,WAAW,2BAA2B;AACxC,cAAM,UAAU,MAAM,SAAS,YAAY,SAAS;AACpD,YAAI,YAAY,UAAa,QAAQ,KAAK,MAAM,IAAI;AAClD,gBAAM,IAAI;AAAA,YACR,WAAW,QAAS,GAAG;AAAA,UACzB;AAAA,QACF;AAAA,MACF;AACA,UAAI,WAAW,qBAAqB,WAAW,iBAAiB;AAC9D,cAAM,WAAW,MAAM,SAAS,eAAe,IAAI,WAAW,KAAK;AACnE,cAAM,WAAW,MAAM,SAAS,QAAQ,YAAY,SAAS;AAC7D,YAAI,UAAU,mBAAmB,UAAU;AACzC,gBAAM,IAAI;AAAA,YACR,WAAW,QAAS,GAAG,uDAAuD,MAAM;AAAA,UACtF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,eAAsB,oBACpB,MACA,WACuB;AACvB,MAAI;AAEJ,QAAM,IAAIA,sBAAqB,IAAI,SAAS,KAAK,WAAY,CAAC,EAAE;AAAA,IAC9D,OAAO,aAAa;AAClB,iBAAW,MAAMD,cAAa,QAAQ,GAAG;AAAA,QACvC,CAAC,YAAY,QAAQ,cAAc;AAAA,MACrC;AAAA,IACF;AAAA,EACF;AAEA,MAAI,YAAY,QAAW;AACzB,UAAM,IAAI,MAAM,WAAW,SAAS,kBAAkB;AAAA,EACxD;AAEA,SAAO;AACT;AAEO,SAAS,wBAAwB,MAA+B;AACrE,MAAI,KAAK,eAAe,MAAM;AAC5B;AAAA,EACF;AAEA,QAAM,IAAI;AAAA,IACR;AAAA,EACF;AACF;AAEO,SAAS,sBAA4B;AAC1C,MAAI,CAAC,2BAA2B,GAAG;AACjC;AAAA,EACF;AAEA,QAAM,QAAQ,mBAAmB,gBAAgB;AAAA,IAC/C,UAAU;AAAA,EACZ,CAAC;AAED,QAAM,MAAM;AACd;AA9NA;AAAA;AAAA;AAUA;AACA;AACA;AACA;AACA;AAAA;AAAA;;;ACdA;AAAA;AAAA;AAAA;AAAA,SAAS,YAAAE,iBAAgB;AACzB,SAAS,gBAAgB;AAGzB;AAAA,EACE,eAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,2BAAAC;AAAA,EACA;AAAA,EACA,gBAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,8BAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,wBAAAC;AAAA,OAOK;AAiBP,eAAsB,yBACpB,MACe;AACf,UAAQ,KAAK,QAAQ;AAAA,IACnB,KAAK;AACH,YAAM,mBAAmB,KAAK,MAAM,OAAO,aAAa;AACtD,cAAM,kBAAkB,MAAM;AAAA,UAC5B;AAAA,UACA,KAAK;AAAA,QACP;AACA,cAAM,gCAAgC;AAAA,UACpC,SAAS,IAAI,SAAS,KAAK,IAAI;AAAA,UAC/B,WAAW;AAAA,UACX,OAAO,EAAE,MAAM,UAAU;AAAA,QAC3B,CAAC;AACD,YAAI,UAAU,MAAM,WAAW,UAAU;AAAA,UACvC,GAAI,oBAAoB,SAAY,CAAC,IAAI,EAAE,gBAAgB;AAAA,UAC3D,GAAI,KAAK,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM;AAAA,QAC1D,CAAC;AAED,YAAI,KAAK,cAAc,QAAW;AAChC,oBAAU,MAAM;AAAA,YACd;AAAA,YACA,QAAQ;AAAA,YACR,SAAS,KAAK,CAAC,MAAM,uBAAuB,IAAI,CAAC,CAAC;AAAA,UACpD;AAAA,QACF;AAEA,cAAM,oBAAoB,SAAS,KAAK,QAAQ,OAAO;AAAA,UACrD,YAAY,wBAAwB,KAAK,MAAM,QAAQ,IAAI;AAAA,QAC7D,CAAC;AAAA,MACH,CAAC;AACD;AAAA,IACF,KAAK;AACH,YAAM,oBAAoB,KAAK,MAAM,OAAO,aAAa;AACvD,cAAM;AAAA,UACJ,MAAMF,cAAa,QAAQ;AAAA,UAC3B,KAAK,QAAQ;AAAA,QACf;AAAA,MACF,CAAC;AACD;AAAA,IACF,KAAK;AACH,YAAM,oBAAoB,KAAK,MAAM,OAAO,aAAa;AACvD,cAAM,YAAY,MAAM;AAAA,UACtB;AAAA,UACA,KAAK;AAAA,QACP;AACA,cAAM;AAAA,UACJ;AAAA,UACA;AAAA,UACA,yBAAyB,KAAK,iBAAiB;AAAA,UAC/C,KAAK,QAAQ;AAAA,QACf;AAAA,MACF,CAAC;AACD;AAAA,IACF,KAAK,wBAAwB;AAC3B,YAAM,UAAU,MAAM,oBAAoB,KAAK,MAAM,OAAO,aAAa;AACvE,cAAM,YAAY,MAAM;AAAA,UACtB;AAAA,UACA,KAAK;AAAA,QACP;AACA,cAAM,WAAW,MAAMA,cAAa,QAAQ,GAAG;AAAA,UAC7C,CAAC,UAAU,MAAM,cAAc;AAAA,QACjC;AAEA,YAAI,YAAY,QAAW;AACzB,gBAAM,IAAI,MAAM,uBAAuB,SAAS,kBAAkB;AAAA,QACpE;AACA,eAAO;AAAA,MACT,CAAC;AACD,YAAM,MAAM,MAAMF,aAAY;AAAA,QAC5B,SAAS,IAAI,SAAS,KAAK,IAAI;AAAA,QAC/B,WAAW,QAAQ;AAAA,QACnB,QAAQ,2BAA2B,KAAK,mBAAmB;AAAA,MAC7D,CAAC;AAED,0BAAoB;AACpB,YAAM,gBAAgB,KAAK;AAAA,QACzB;AAAA,QACA,MAAM,KAAK,QAAQ;AAAA,QACnB,OAAO;AAAA,MACT,CAAC;AACD;AAAA,IACF;AAAA,IACA,KAAK;AACH,YAAM,qBAAqB,KAAK,MAAM,OAAO,aAAa;AACxD,cAAM,YAAY,MAAM;AAAA,UACtB;AAAA,UACA,KAAK;AAAA,QACP;AACA,cAAM,OAAO,yBAAyB,KAAK,iBAAiB;AAE5D,cAAM,SAAS,eAAe,OAAO,WAAW,IAAI;AACpD,YAAI,KAAK,SAAS,MAAM;AACtB,gBAAM;AAAA,YACJ,cAAc;AAAA,cACZ;AAAA,cACA,SAAS;AAAA,cACT;AAAA,YACF,CAAC;AAAA,UACH;AACA;AAAA,QACF;AACA,cAAM;AAAA,UACJ,WAAW,wBAAwB,IAAI,CAAC,+BAA+B,SAAS;AAAA;AAAA,QAClF;AAAA,MACF,CAAC;AACD;AAAA,IACF,KAAK;AACH,YAAM,mBAAmB,KAAK,MAAM,OAAO,aAAa;AACtD,cAAM,YAAY,MAAM;AAAA,UACtB;AAAA,UACA,KAAK;AAAA,QACP;AACA,cAAM,iBAAiB,MAAM;AAAA,UAC3B;AAAA,UACA,KAAK;AAAA,QACP;AACA,cAAM,kBAAkB,MAAM;AAAA,UAC5B;AAAA,UACA,KAAK;AAAA,QACP;AACA,cAAM,kBAAkB,MAAM;AAAA,UAC5B;AAAA,UACA,KAAK;AAAA,QACP;AACA,cAAM,gCAAgC;AAAA,UACpC,SAAS,IAAI,SAAS,KAAK,IAAI;AAAA,UAC/B,WAAW;AAAA,UACX,OAAO,EAAE,MAAM,UAAU;AAAA,QAC3B,CAAC;AACD,cAAM,UAAU,MAAM,YAAY,UAAU,WAAW;AAAA,UACrD,GAAI,mBAAmB,SACnB,CAAC,IACD,EAAE,eAA+B;AAAA,UACrC,GAAI,oBAAoB,SACpB,CAAC,IACD,EAAE,gBAAiC;AAAA,UACvC,GAAI,KAAK,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM;AAAA,UACxD,GAAI,KAAK,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK;AAAA,UACrD,GAAI,KAAK,eAAe,SAAY,CAAC,IAAI,EAAE,MAAM,KAAK,WAAW;AAAA,UACjE,GAAI,oBAAoB,SAAY,CAAC,IAAI,EAAE,gBAAgB;AAAA,QAC7D,CAAC;AAED,cAAM,oBAAoB,SAAS,KAAK,QAAQ,KAAK;AAAA,MACvD,CAAC;AACD;AAAA,IACF,KAAK;AACH,YAAM,mBAAmB,KAAK,MAAM,OAAO,aAAa;AACtD,cAAM,YAAY,MAAM;AAAA,UACtB;AAAA,UACA,KAAK;AAAA,QACP;AACA,cAAM,gCAAgC;AAAA,UACpC,SAAS,IAAI,SAAS,KAAK,IAAI;AAAA,UAC/B,WAAW;AAAA,UACX,OAAO,EAAE,MAAM,UAAU;AAAA,QAC3B,CAAC;AACD,cAAM,cAAc,UAAU,WAAW;AAAA,UACvC,WAAW,KAAK,aAAa;AAAA,QAC/B,CAAC;AACD,YAAI,KAAK,SAAS,MAAM;AACtB,gBAAM;AAAA,YACJ,cAAc;AAAA,cACZ,SAAS;AAAA,cACT,KAAK,kBAAkB,KAAK,WAAW;AAAA,YACzC,CAAC;AAAA,UACH;AACA;AAAA,QACF;AACA,cAAM;AAAA,UACJ,kCAAkC,KAAK,WAAW;AAAA;AAAA,QACpD;AAAA,MACF,CAAC;AACD;AAAA,IACF,KAAK;AACH,YAAM,mBAAmB,KAAK,MAAM,OAAO,aAAa;AACtD,cAAM,YAAY,MAAM;AAAA,UACtB;AAAA,UACA,KAAK;AAAA,QACP;AACA,cAAM,mBAAmB,KAAK,MAAM,WAAW,KAAK,UAAW;AAC/D,cAAM,UAAU,MAAM;AAAA,UACpB;AAAA,UACA;AAAA,UACA,KAAK;AAAA,QACP;AAEA,cAAM,oBAAoB,SAAS,KAAK,QAAQ,KAAK;AAAA,MACvD,CAAC;AACD;AAAA,IACF,KAAK;AACH,YAAM,mBAAmB,KAAK,MAAM,OAAO,aAAa;AACtD,cAAM,YAAY,MAAM;AAAA,UACtB;AAAA,UACA,KAAK;AAAA,QACP;AACA,cAAM,wBAAwB;AAAA,UAC5B,SAAS,IAAI,SAAS,KAAK,IAAI;AAAA,UAC/B,YAAY,CAAC,SAAS;AAAA,UACtB,WAAW;AAAA,QACb,CAAC;AACD,cAAM,aAAa,MAAM,uBAAuB,IAAI;AACpD,cAAM,SACJ,KAAK,gBAAgB,UACjB,qBAAqB,UAAU,IAC/B;AACN,cAAM,UAAU,MAAM;AAAA,UACpB;AAAA,UACA;AAAA,UACA,SAAS,KAAK,CAAC,QAAQ,QAAQ,UAAU,CAAC;AAAA,UAC1C,WAAW,SAAY,CAAC,IAAI,EAAE,YAAY,OAAO,WAAW;AAAA,QAC9D;AAEA,cAAM,oBAAoB,SAAS,KAAK,QAAQ,KAAK;AAAA,MACvD,CAAC;AACD;AAAA,IACF,KAAK;AACH,YAAM,mBAAmB,KAAK,MAAM,OAAO,aAAa;AACtD,cAAM,YAAY,MAAM;AAAA,UACtB;AAAA,UACA,KAAK;AAAA,QACP;AACA,cAAM,wBAAwB;AAAA,UAC5B,SAAS,IAAI,SAAS,KAAK,IAAI;AAAA,UAC/B,YAAY,CAAC,SAAS;AAAA,UACtB,WAAW;AAAA,UACX,gBAAgB;AAAA,QAClB,CAAC;AACD,cAAM,UAAU,MAAM;AAAA,UACpB;AAAA,UACA;AAAA,UACA,MAAM,gBAAgB,IAAI;AAAA,QAC5B;AAEA,cAAM,oBAAoB,SAAS,KAAK,QAAQ,KAAK;AAAA,MACvD,CAAC;AACD;AAAA,IACF,KAAK;AACH,YAAM,mBAAmB,KAAK,MAAM,OAAO,aAAa;AACtD,cAAM,YAAY,MAAM;AAAA,UACtB;AAAA,UACA,KAAK;AAAA,QACP;AACA,cAAM,wBAAwB;AAAA,UAC5B,SAAS,IAAI,SAAS,KAAK,IAAI;AAAA,UAC/B,YAAY,CAAC,SAAS;AAAA,UACtB,WAAW;AAAA,QACb,CAAC;AACD,cAAM,UAAU,MAAM;AAAA,UACpB;AAAA,UACA;AAAA,UACA,KAAK,eAAe,OAAO,OAAO,KAAK;AAAA,QACzC;AAEA,cAAM,oBAAoB,SAAS,KAAK;AAAA,MAC1C,CAAC;AACD;AAAA,IACF,KAAK;AACH,UAAI,KAAK,eAAe,SAAS;AAC/B,cAAM;AAAA,UACJ,KAAK;AAAA,UACL,OAAO,aAAa;AAClB,gBAAI,KAAK,WAAW,MAAM;AACxB,oBAAM,gCAAgC;AAAA,gBACpC,SAAS,IAAI,SAAS,KAAK,IAAI;AAAA,gBAC/B,WAAW;AAAA,gBACX,OAAO,EAAE,MAAM,UAAU;AAAA,cAC3B,CAAC;AAAA,YACH;AACA,kBAAM;AAAA,cACJ,MAAM;AAAA,gBACJ;AAAA,gBACA,sBAAsB,KAAK,MAAM,MAAM,gBAAgB,IAAI,CAAC,CAAC;AAAA,gBAC7D,EAAE,QAAQ,KAAK,UAAU,MAAM;AAAA,cACjC;AAAA,cACA,KAAK,UAAU;AAAA,YACjB;AAAA,UACF;AAAA,UACA,EAAE,kBAAkB,KAAK,WAAW,KAAK;AAAA,QAC3C;AACA;AAAA,MACF;AAEA,YAAM,oBAAoB,KAAK,MAAM,OAAO,aAAa;AACvD,cAAM;AAAA,UACJ,MAAM,eAAe,QAAQ;AAAA,UAC7B,KAAK,QAAQ;AAAA,QACf;AAAA,MACF,CAAC;AACD;AAAA,EACJ;AACF;AAEA,eAAe,2BACb,UACA,aACiB;AACjB,MAAI,gBAAgB,QAAW;AAC7B,UAAM,IAAI,MAAM,uBAAuB;AAAA,EACzC;AACA,SAAO,MAAMG,4BAA2B,UAAU,WAAW;AAC/D;AAEA,eAAe,2BACb,UACA,aAC6B;AAC7B,SAAO,gBAAgB,SACnB,SACA,MAAMA,4BAA2B,UAAU,WAAW;AAC5D;AAEA,SAAS,yBACP,MACmB;AACnB,MAAI,SAAS,QAAW;AACtB,UAAM,IAAI,MAAM,8BAA8B;AAAA,EAChD;AAEA,SAAO;AACT;AAEA,SAAS,2BACP,QACgB;AAChB,MAAI,WAAW,QAAW;AACxB,UAAM,IAAI,MAAM,sCAAsC;AAAA,EACxD;AAEA,SAAO;AACT;AAEA,eAAe,yBACb,UACA,WACA,MACA,MACe;AACf,QAAM,CAAC,UAAU,QAAQ,IAAI,MAAM,QAAQ,IAAI;AAAA,IAC7C,SAAS,eAAe,IAAI,WAAW,IAAI;AAAA,IAC3C,SAAS,QAAQ,YAAY,SAAS;AAAA,EACxC,CAAC;AACD,QAAM,SAAS;AAAA,IACb;AAAA,IACA,SAAS,UAAU,mBAAmB;AAAA,IACtC;AAAA,IACA,SAAS,aAAa;AAAA,IACtB;AAAA,IACA,GAAI,aAAa,SACb,CAAC,IACD;AAAA,MACE,UAAU;AAAA,QACR,WAAW,SAAS;AAAA,QACpB,UAAU,SAAS;AAAA,QACnB,gBAAgB,SAAS;AAAA,MAC3B;AAAA,IACF;AAAA,EACN;AAEA,MAAI,MAAM;AACR,UAAM,kBAAkB,cAAc,MAAM,CAAC;AAC7C;AAAA,EACF;AAEA,QAAM,QACJ,aAAa,SACT,YACA,SAAS,mBAAmB,WAC1B,YACA;AAER,QAAM;AAAA,IACJ;AAAA,MACE,YAAY,SAAS;AAAA,MACrB,mBAAmB,wBAAwB,IAAI,CAAC;AAAA,MAChD,UAAU,KAAK;AAAA,MACf,GAAI,aAAa,SACb,CAAC,IACD;AAAA,QACE,oBAAoB,SAAS,cAAc;AAAA,QAC3C,qBAAqB,QAAQ;AAAA,MAC/B;AAAA,IACN,EAAE,KAAK,IAAI,IAAI;AAAA,EACjB;AACF;AAEA,SAAS,wBAAwB,MAAiC;AAChE,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,EACX;AACF;AAEA,eAAe,mBACb,MACA,WACA,UAAmD,CAAC,GACrC;AACf,MAAI,QAAQ,qBAAqB,OAAO;AACtC,UAAM,WAAW,MAAM,8BAA8B,IAAI;AACzD,UAAM,IAAIC,sBAAqB,SAAS,WAAW,EAAE,MAAM,SAAS;AACpE;AAAA,EACF;AAEA,QAAM,qBAAqB,MAAM,SAAS;AAC5C;AAEA,eAAe,gBACb,MACiB;AACjB,MAAI,KAAK,eAAe,UAAa,KAAK,cAAc,QAAW;AACjE,UAAM,IAAI,MAAM,wDAAwD;AAAA,EAC1E;AACA,MAAI,KAAK,eAAe,QAAW;AACjC,WAAO,KAAK;AAAA,EACd;AACA,MAAI,KAAK,cAAc,KAAK;AAC1B,QAAI,UAAU;AAEd,qBAAiB,SAAS,wBAAwB,GAAG;AACnD,iBAAW;AAAA,IACb;AAEA,WAAO;AAAA,EACT;AACA,MAAI,KAAK,cAAc,QAAW;AAChC,WAAO,MAAML,UAAS,KAAK,WAAW,MAAM;AAAA,EAC9C;AACA,QAAM,IAAI;AAAA,IACR;AAAA,EACF;AACF;AAEA,eAAe,uBACb,MACiB;AACjB,QAAM,UAAU,MAAM,gBAAgB,IAAI;AAE1C,MAAI,QAAQ,KAAK,MAAM,IAAI;AACzB,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEA,eAAe,oBACb,SACA,MACA,UAA4C,CAAC,GAC9B;AACf,MAAI,MAAM;AACR,UAAM;AAAA,MACJ,cAAc;AAAA,QACZ,YAAY,QAAQ;AAAA,QACpB,YAAY,QAAQ;AAAA,QACpB,YAAY,QAAQ;AAAA,QACpB,GAAI,QAAQ,eAAe,SACvB,CAAC,IACD,EAAE,YAAY,QAAQ,WAAW;AAAA,QACrC,aAAa,QAAQ;AAAA,QACrB,OAAO,YAAY,QAAQ,KAAK;AAAA,QAChC,OAAO,QAAQ;AAAA,QACf,KAAK,QAAQ;AAAA,MACf,CAAC;AAAA,IACH;AACA;AAAA,EACF;AAEA,QAAM,QAAQ;AAAA,IACZ,YAAY,QAAQ,GAAG;AAAA,IACvB,GAAI,QAAQ,eAAe,SACvB,CAAC,IACD,CAAC,gBAAgB,QAAQ,UAAU,EAAE;AAAA,IACzC,UAAU,QAAQ,SAAS,YAAY;AAAA,IACvC,UAAU,YAAY,QAAQ,KAAK,CAAC;AAAA,IACpC,iBAAiB,QAAQ,aAAa;AAAA,IACtC,aAAa,QAAQ,UAAU;AAAA,IAC/B,UAAU,QAAQ,aAAa,QAAQ,IAAI;AAAA,IAC3C,YAAY,QAAQ,aAAa,QAAQ,IAAI;AAAA,EAC/C;AAEA,QAAM,kBAAkB,GAAG,MAAM,KAAK,IAAI,CAAC;AAAA,CAAI;AACjD;AAEA,SAAS,wBACP,gBACA,aACQ;AACR,MAAI,eAAe,WAAW,aAAa,GAAG;AAC5C,WAAO,GAAG,eAAe,QAAQ,SAAS,EAAE,CAAC,YAAY,WAAW;AAAA,EACtE;AACA,MAAI,eAAe,WAAW,SAAS,GAAG;AACxC,UAAM,SAAS,yBAAyB,cAAc;AAEtD,QAAI,OAAO,gBAAgB,QAAW;AACpC,aAAOE,yBAAwB,OAAO,aAAa,WAAW;AAAA,IAChE;AAAA,EACF;AAEA,SAAOA,yBAAwB,gBAAgB,WAAW;AAC5D;AAEA,eAAe,iBACb,SACA,MACe;AACf,MAAI,MAAM;AACR,UAAM;AAAA,MACJ,cAAc;AAAA,QACZ,UAAU,QAAQ,IAAI,CAAC,WAAW;AAAA,UAChC,KAAK,MAAM;AAAA,UACX,OAAO,MAAM;AAAA,UACb,OAAO,YAAY,MAAM,KAAK;AAAA,QAChC,EAAE;AAAA,MACJ,CAAC;AAAA,IACH;AACA;AAAA,EACF;AAEA,MAAI,QAAQ,WAAW,GAAG;AACxB,UAAM,kBAAkB,gBAAgB;AACxC;AAAA,EACF;AAEA,QAAM;AAAA,IACJ,GAAG,QACA;AAAA,MACC,CAAC,UACC,GAAG,KAAK,OAAO,MAAM,KAAK,CAAC,IAAI,YAAY,MAAM,KAAK,CAAC,KAAK,MAAM,SAAS,YAAY,KAAK,MAAM,GAAG;AAAA,IACzG,EACC,KAAK,IAAI,CAAC;AAAA;AAAA,EACf;AACF;AAEA,eAAe,iBACb,MACA,MACe;AACf,MAAI,MAAM;AACR,UAAM,kBAAkB,cAAc,IAAI,CAAC;AAC3C;AAAA,EACF;AAEA,MAAI,KAAK,SAAS,WAAW,GAAG;AAC9B,UAAM,kBAAkB,gBAAgB;AACxC;AAAA,EACF;AAEA,QAAM;AAAA,IACJ,eAAe,KAAK,SAAS,IAAI,2BAA2B,CAAC;AAAA,EAC/D;AACF;AAEA,SAAS,4BACP,MACgB;AAChB,SAAO;AAAA,IACL,UAAU,KAAK,SAAS,IAAI,2BAA2B;AAAA,IACvD,OAAO,GAAG,uBAAuB,KAAK,KAAK,CAAC,KAAK,qBAAqB,KAAK,GAAG,CAAC;AAAA,EACjF;AACF;AAEA,SAAS,qBAAqB,KAAqB;AACjD,SAAO,IAAI,MAAM,GAAG,EAAE,GAAG,EAAE,KAAK;AAClC;AAEA,SAAS,uBAAuB,OAA8B;AAC5D,SAAO,SAAS;AAClB;AAEA,eAAe,4BACb,QACA,QACe;AACf,QAAM,QAAQ;AAAA,IACZ,SAAS,uCAAuC;AAAA,IAChD,YAAY,OAAO,UAAU,QAAQ,IAAI;AAAA,IACzC,UAAU,OAAO,MAAM,MAAM;AAAA,IAC7B,YAAY,OAAO,QAAQ,MAAM;AAAA,IACjC,cAAc,OAAO,SAAS;AAAA,EAChC;AAEA,aAAW,QAAQ,OAAO,OAAO;AAC/B,UAAM;AAAA,MACJ,QAAQ,KAAK,MAAM,WAAW,KAAK,QAAQ,QAAQ,KAAK,MAAM,WAAW,KAAK,QAAQ;AAAA,IACxF;AAAA,EACF;AACA,aAAWI,WAAU,OAAO,SAAS;AACnC,UAAM;AAAA,MACJ,UAAUA,QAAO,GAAG,KAAK,YAAYA,QAAO,QAAQ,CAAC,OAAO,YAAYA,QAAO,QAAQ,CAAC;AAAA,IAC1F;AAAA,EACF;AAEA,QAAM,kBAAkB,GAAG,MAAM,KAAK,IAAI,CAAC;AAAA,CAAI;AACjD;AAEA,SAAS,YAAY,OAA8B;AACjD,SAAO,UAAU,OAAO,SAAS,KAAK,UAAU,KAAK;AACvD;AAEA,SAAS,YAAY,OAAsC;AACzD,UAAQ,OAAO;AAAA,IACb,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,EACX;AACF;AAEA,eAAe,mBACb,aACA,WACA,OACe;AACf,UAAQ,OAAO;AAAA,IACb,KAAK;AACH,YAAM,wBAAwB;AAAA,QAC5B,SAAS,IAAI,SAAS,WAAW;AAAA,QACjC,YAAY,CAAC,SAAS;AAAA,QACtB,WAAW;AAAA,MACb,CAAC;AACD;AAAA,IACF,KAAK;AACH,YAAM,wBAAwB;AAAA,QAC5B,SAAS,IAAI,SAAS,WAAW;AAAA,QACjC,YAAY,CAAC,SAAS;AAAA,QACtB,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB,CAAC;AACD,YAAM,wBAAwB;AAAA,QAC5B,SAAS,IAAI,SAAS,WAAW;AAAA,QACjC,YAAY,CAAC,SAAS;AAAA,QACtB,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB,CAAC;AACD;AAAA,IACF,KAAK;AACH,YAAM,wBAAwB;AAAA,QAC5B,SAAS,IAAI,SAAS,WAAW;AAAA,QACjC,YAAY,CAAC,SAAS;AAAA,QACtB,WAAW;AAAA,QACX,gBAAgB;AAAA,MAClB,CAAC;AACD;AAAA,EACJ;AACF;AA9rBA;AAAA;AAAA;AA8BA;AAIA;AAMA;AACA;AACA;AACA;AACA,IAAAC;AAAA;AAAA;;;AC5CA;AAAA;AAAA;AAAA;AAAA;AAAA,EACE;AAAA,EACA,+BAAAC;AAAA,EACA,kCAAAC;AAAA,EACA;AAAA,EACA,6BAAAC;AAAA,EACA,wBAAAC;AAAA,OACK;AAaP,eAAsB,uBACpB,MACe;AACf,UAAQ,KAAK,QAAQ;AAAA,IACnB,KAAK;AACH,YAAM,eAAe,IAAI;AACzB;AAAA,IACF,KAAK;AACH,YAAM,eAAe,IAAI;AACzB;AAAA,IACF,KAAK;AACH,YAAM,gBAAgB,IAAI;AAC1B;AAAA,EACJ;AACF;AAEA,eAAe,eAAe,MAA+C;AAC3E,QAAM,WAAW,MAAM,8BAA8B,KAAK,WAAW;AAErE,QAAM,IAAIA,sBAAqB,SAAS,WAAW,EAAE;AAAA,IACnD,OAAO,aAAa;AAClB,YAAM,iBAAiB,MAAM;AAAA,QAC3B,cAAc,MAAM,gCAAgC,QAAQ;AAAA,QAC5D,SAAS,MAAMH,6BAA4B,QAAQ;AAAA,MACrD,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAEA,eAAe,eAAe,MAA+C;AAC3E,QAAM,WAAW,MAAM,8BAA8B,KAAK,WAAW;AACrE,QAAM,SAAS,IAAI,qBAAqB;AAAA,IACtC,OAAO,KAAK,SAAS;AAAA,IACrB,YAAY;AAAA,EACd,CAAC;AAED,QAAM,IAAIG,sBAAqB,SAAS,WAAW,EAAE;AAAA,IACnD,OAAO,aAAa;AAClB,YAAM,OAAO,MAAM;AAAA,QACjB,MAAM,EAAE,MAAM,UAAU;AAAA,QACxB,MAAM;AAAA,QACN,MAAM;AAAA,MACR,CAAC;AACD,YAAM,OAAO,MAAM;AAAA,QACjB,MAAM,EAAE,OAAO,YAAY,MAAM,kBAAkB;AAAA,QACnD,MAAM;AAAA,QACN,OAAO;AAAA,MACT,CAAC;AACD,YAAM,UACJ,KAAK,kBAAkB,OACnB,EAAE,UAAU,MAAMF,gCAA+B,QAAQ,EAAE,IAC3D,CAAC;AAEP,UAAI,QAAQ,UAAU,WAAW,GAAG;AAClC,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAEA,UAAI,MAAMD,6BAA4B,UAAU,OAAO,GAAG;AACxD,cAAM,OAAO,MAAM;AAAA,UACjB,MAAM,EAAE,MAAM,kBAAkB;AAAA,UAChC,MAAM;AAAA,UACN,MAAM;AAAA,QACR,CAAC;AAAA,MACH,OAAO;AACL,cAAME;AAAA,UACJ;AAAA,UACA,OAAO,UAAU;AACf,kBAAM,OAAO,MAAM;AAAA,cACjB,UACE,MAAM,SAAS,UAAa,MAAM,UAAU,SACxC,CAAC,IACD,CAAC,mBAAmB,KAAK,CAAC;AAAA,cAChC,MAAM;AAAA,gBACJ,UACE,MAAM,SAAS,UAAa,MAAM,UAAU,SACxC,CAAC,IACD,CAAC,mBAAmB,KAAK,CAAC;AAAA,gBAChC,OAAO,MAAM;AAAA,gBACb,MAAM;AAAA,cACR;AAAA,cACA,MAAM;AAAA,cACN,OAAO,MAAM;AAAA,YACf,CAAC;AAAA,UACH;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,YAAM,OAAO,MAAM;AAAA,QACjB,MAAM,EAAE,MAAM,YAAY;AAAA,QAC1B,MAAM;AAAA,QACN,MAAM;AAAA,MACR,CAAC;AACD,YAAM,OAAO,MAAM;AAAA,QACjB,MAAM,EAAE,MAAM,YAAY;AAAA,QAC1B,MAAM;AAAA,QACN,MAAM;AAAA,MACR,CAAC;AAAA,IACH;AAAA,IACA,EAAE,4BAA4B,QAAQ;AAAA,EACxC;AACA,QAAM,4BAA4B,KAAK,WAAW;AACpD;AAEA,eAAe,gBAAgB,MAA+C;AAC5E,QAAM,WAAW,MAAM,8BAA8B,KAAK,WAAW;AAErE,QAAM,IAAIC,sBAAqB,SAAS,WAAW,EAAE;AAAA,IACnD,OAAO,aAAa;AAClB,YAAM,SAAS,0BAA0B;AACzC,YAAM,iBAAiB,MAAM;AAAA,QAC3B,cAAc,EAAE,OAAO,EAAE,SAAS,MAAM,GAAG,SAAS,UAAU;AAAA,QAC9D,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,IACA,EAAE,4BAA4B,QAAQ;AAAA,EACxC;AACA,QAAM,4BAA4B,KAAK,WAAW;AACpD;AAEA,SAAS,mBAAmB,OAIR;AAClB,SAAO;AAAA,IACL,MAAM,MAAM,QAAQ;AAAA,IACpB,MAAM,uBAAuB,MAAM,IAAI;AAAA,IACvC,OAAO,MAAM,SAAS;AAAA,IACtB,MAAM,gBAAgB,MAAM,IAAI;AAAA,EAClC;AACF;AAEA,SAAS,uBACP,MACQ;AACR,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,EACX;AACF;AAEA,SAAS,gBACP,MACQ;AACR,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,EACX;AACF;AAEA,eAAe,iBACb,MACA,SAMe;AACf,MAAI,KAAK,SAAS,MAAM;AACtB,UAAM,kBAAkB,cAAc,OAAO,CAAC;AAC9C;AAAA,EACF;AAEA,QAAM;AAAA,IACJ;AAAA,MACE,WAAW,yBAAyB,OAAO,CAAC;AAAA,MAC5C,oBAAoB,QAAQ,aAAa,OAAO;AAAA,MAChD,kBAAkB,QAAQ,aAAa,MAAM,UAAU,QAAQ,IAAI;AAAA,MACnE,GAAI,QAAQ,aAAa,MAAM,UAAU,SACrC,CAAC,IACD,CAAC,gBAAgB,QAAQ,aAAa,MAAM,KAAK,EAAE;AAAA,MACvD,GAAI,QAAQ,aAAa,MAAM,eAAe,SAC1C,CAAC,IACD,CAAC,qBAAqB,QAAQ,aAAa,MAAM,UAAU,EAAE;AAAA,MACjE;AAAA,IACF,EAAE,KAAK,IAAI;AAAA,EACb;AACF;AAEA,SAAS,yBAAyB,OAKK;AACrC,MAAI,MAAM,SAAS;AACjB,WAAO;AAAA,EACT;AACA,MAAI,MAAM,aAAa,YAAY,WAAW;AAC5C,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAxOA,IAkBM;AAlBN;AAAA;AAAA;AAUA;AACA;AACA;AAIA,IAAAC;AAEA,IAAM,oCAAoC;AAAA;AAAA;;;AClB1C;AAAA;AAAA;AAAA;AAAA;AAAA,SAAS,aAAAC,kBAAiB;AAc1B,eAAsB,sBACpB,MACe;AACf,MAAI,KAAK,cAAc,QAAW;AAChC,UAAM,kBAAkB,KAAK,WAAW,KAAK,SAAS;AACtD;AAAA,EACF;AAEA,QAAM,MAAM,IAAIA,WAAU,CAAC,CAAC;AAC5B,QAAM,WAAW,MAAM,8BAA8B,KAAK,SAAS;AACnE,QAAM,IAAI,YAAY,IAAI,SAAS,SAAS,WAAW,GAAG,OAAO,WAAW;AAC1E,UAAM,iBAAiB,MAAM,OAAO,SAAS,GAAG;AAAA,MAC9C,MAAM,KAAK,QAAQ;AAAA,IACrB,CAAC;AAAA,EACH,CAAC;AACH;AAEA,eAAsB,uBACpB,MACe;AACf,QAAM,MAAM,IAAIA,WAAU,CAAC,CAAC;AAC5B,QAAM,WAAW,MAAM,8BAA8B,KAAK,SAAS;AACnE,QAAM,IAAI,YAAY,IAAI,SAAS,SAAS,WAAW,GAAG,OAAO,WAAW;AAC1E,QAAI,QAAQ,OAAO,UAAU,MAAM;AACjC,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,UAAM,QAAQ,MAAM,OAAO,UAAU;AAErC,QAAI,UAAU,QAAW;AACvB,YAAM,IAAI,MAAM,4BAA4B;AAAA,IAC9C;AAEA,UAAM,oBAAoB,MAAM,IAAI;AAAA,EACtC,CAAC;AACH;AAEA,eAAe,kBACb,MACA,OACe;AACf,QAAM,qBAAqB,MAAM,OAAO,aAAa;AACnD,UAAM,OAAO,MAAM,SAAS,aAAa;AAEzC,QAAI,SAAS,QAAW;AACtB,YAAM,IAAI,MAAM,8BAA8B;AAAA,IAChD;AAEA,UAAM,cAAc,sBAAsB,MAAM,KAAK;AAErD,UAAM,SAAS,gBAAgB,WAAW;AAC1C,UAAM,iBAAiB,aAAa,EAAE,MAAM,MAAM,CAAC;AAAA,EACrD,CAAC;AACH;AAEA,eAAe,iBACb,MACA,SACe;AACf,MAAI,QAAQ,MAAM;AAChB,UAAM,kBAAkB,cAAc,eAAe,IAAI,CAAC,CAAC;AAC3D;AAAA,EACF;AAEA,MAAI,SAAS,QAAW;AACtB,UAAM,kBAAkB,sCAAsC;AAC9D;AAAA,EACF;AAEA,QAAM,QAAkB,CAAC;AAEzB,kBAAgB,OAAO,IAAI;AAE3B,QAAM,kBAAkB,GAAG,MAAM,KAAK,IAAI,CAAC;AAAA,CAAI;AACjD;AAEA,SAAS,sBACP,MACA,OACU;AACV,SAAO;AAAA,IACL,GAAG;AAAA,IACH,OAAO,MAAM,eAAe,OAAO,OAAQ,MAAM,SAAS,KAAK;AAAA,IAC/D,SACE,MAAM,iBAAiB,OACnB,CAAC,IACD,MAAM,YAAY,SAChB,KAAK,UACL,CAAC,GAAG,MAAM,OAAO;AAAA,IACzB,UACE,MAAM,kBAAkB,OAAO,OAAQ,MAAM,YAAY,KAAK;AAAA,IAChE,YACE,MAAM,oBAAoB,OACtB,OACC,MAAM,cAAc,KAAK;AAAA,IAChC,WACE,MAAM,mBAAmB,OACrB,OACC,MAAM,aAAa,KAAK;AAAA,IAC/B,aACE,MAAM,qBAAqB,OACvB,OACC,MAAM,eAAe,KAAK;AAAA,IACjC,aACE,MAAM,qBAAqB,OACvB,OACC,MAAM,eAAe,KAAK;AAAA,EACnC;AACF;AAEA,SAAS,gBAAgB,OAAiB,MAAkC;AAC1E,QAAM,KAAK,kBAAkB,MAAM,gBAAgB,QAAQ,EAAE;AAC7D,QAAM,KAAK,UAAU,MAAM,SAAS,QAAQ,EAAE;AAC9C,QAAM;AAAA,IACJ,YACE,MAAM,QAAQ,WAAW,UAAa,KAAK,QAAQ,WAAW,IAC1D,WACA,KAAK,QAAQ,KAAK,IAAI,CAC5B;AAAA,EACF;AACA,QAAM,KAAK,aAAa,MAAM,YAAY,QAAQ,EAAE;AACpD,QAAM,KAAK,eAAe,MAAM,cAAc,QAAQ,EAAE;AACxD,QAAM,KAAK,cAAc,MAAM,aAAa,QAAQ,EAAE;AACtD,QAAM,KAAK,iBAAiB,MAAM,eAAe,QAAQ,EAAE;AAC3D,QAAM,KAAK,gBAAgB,MAAM,eAAe,QAAQ,EAAE;AAC5D;AAEA,SAAS,eAAe,MAAoC;AAC1D,SAAO;AAAA,IACL,SAAS,MAAM,WAAW,CAAC;AAAA,IAC3B,aAAa,MAAM,eAAe;AAAA,IAClC,YAAY,MAAM,cAAc;AAAA,IAChC,UAAU,MAAM,YAAY;AAAA,IAC5B,aAAa,MAAM,eAAe;AAAA,IAClC,WAAW,MAAM,aAAa;AAAA,IAC9B,cAAc,MAAM,gBAAgB;AAAA,IACpC,OAAO,MAAM,SAAS;AAAA,EACxB;AACF;AA1JA;AAAA;AAAA;AAQA;AACA;AACA;AACA,IAAAC;AACA;AAAA;AAAA;;;ACZA;AAAA;AAAA;AAAA;AAOA,eAAsB,aAAa,MAAqC;AACtE,QAAM,SAAS,MAAM,qBAAkC,aAAa;AAAA,IAClE,MAAM;AAAA,MACJ,GAAI,KAAK,WAAW,OAAO,CAAC,WAAW,IAAI,CAAC;AAAA,MAC5C,GAAI,KAAK,UAAU,OAAO,CAAC,SAAS,IAAI,CAAC;AAAA,IAC3C;AAAA,EACF,CAAC;AAED,MAAI,KAAK,SAAS,MAAM;AACtB,UAAM,kBAAkB,cAAc,MAAM,CAAC;AAC7C;AAAA,EACF;AAEA,MAAI,OAAO,SAAS;AAClB,UAAM,kBAAkB,yCAAyC;AACjE;AAAA,EACF;AAEA,QAAM;AAAA,IACJ;AAAA,MACE;AAAA,MACA,YAAY,OAAO,OAAO;AAAA,MAC1B,YAAY,OAAO,OAAO;AAAA,MAC1B,UAAU,YAAY,OAAO,UAAU,CAAC;AAAA,MACxC,GAAG,OAAO,KAAK;AAAA,QAAI,CAAC,QAClB,IAAI,UAAU,SACV,KAAK,IAAI,IAAI,aAAa,IAAI,OAAO,aAAa,IAAI,OAAO,WAAW,YAAY,IAAI,UAAU,CAAC,KACnG,KAAK,IAAI,IAAI,aAAa,IAAI,KAAK;AAAA,MACzC;AAAA,MACA;AAAA,IACF,EAAE,KAAK,IAAI;AAAA,EACb;AACF;AAEA,SAAS,YAAY,OAAuB;AAC1C,MAAI,QAAQ,MAAM;AAChB,WAAO,GAAG,KAAK;AAAA,EACjB;AACA,MAAI,QAAQ,OAAO,MAAM;AACvB,WAAO,IAAI,QAAQ,MAAM,QAAQ,CAAC,CAAC;AAAA,EACrC;AACA,MAAI,QAAQ,OAAO,OAAO,MAAM;AAC9B,WAAO,IAAI,QAAQ,OAAO,MAAM,QAAQ,CAAC,CAAC;AAAA,EAC5C;AAEA,SAAO,IAAI,QAAQ,OAAO,OAAO,MAAM,QAAQ,CAAC,CAAC;AACnD;AArDA;AAAA;AAAA;AAGA;AACA;AACA;AAAA;AAAA;;;ACLA;AAAA;AAAA;AAAA;AACA,SAAS,gCAAgC;AACzC,SAAS,WAAAC,gBAAe;AAGxB,eAAsB,iBACpB,MACe;AACf,UAAQ,KAAK,QAAQ;AAAA,IACnB,KAAK,WAAW;AACd,cAAQ,OAAO;AAAA,QACb;AAAA,MACF;AACA,YAAM,aAAaA;AAAA,QACjB,KAAK,cAAc,sBAAsB,KAAK,SAAS;AAAA,MACzD;AACA,YAAM;AAAA,QACJ,IAAI,SAASA,SAAQ,KAAK,SAAS,CAAC;AAAA,QACpC,IAAI,SAAS,UAAU;AAAA,MACzB;AAEA,cAAQ,OAAO,MAAM,SAAS,UAAU;AAAA,CAAI;AAC5C;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,sBAAsB,WAA2B;AACxD,SAAO,UAAU,YAAY,EAAE,SAAS,QAAQ,IAC5C,GAAG,UAAU,MAAM,GAAG,CAAC,SAAS,MAAM,CAAC,UACvC,GAAG,SAAS;AAClB;AA/BA;AAAA;AAAA;AAGA;AAAA;AAAA;;;ACHA,SAAS,WAAAC,gBAAe;AACxB,SAAS,QAAAC,OAAM,WAAAC,gBAAe;AAIvB,SAAS,sBAAsB,QAAyB;AAC7D,MAAI,WAAW,UAAU,WAAW,eAAgB,QAAO;AAE3D,QAAM,iBAAiBA;AAAA,IACrB,eAAe,KAAKD,MAAKD,SAAQ,GAAG,YAAY;AAAA,EAClD;AACA,SAAOE,SAAQ,UAAU,GAAG,MAAM,MAAM;AAC1C;AAZA;AAAA;AAAA;AAGA;AAAA;AAAA;;;ACHA,IAAAC,uBAAA;AAAA,SAAAA,sBAAA;AAAA;AAAA;AAAA;AAAA,EACE,4BAAAC;AAAA,EACA;AAAA,OAEK;AAMP,SAAS,WAAAC,gBAAe;AAExB,eAAsB,sBACpB,MACe;AACf,UAAQ,KAAK,QAAQ;AAAA,IACnB,KAAK,WAAW;AACd,UAAI,KAAK,eAAe,UAAa,KAAK,OAAO,SAAS,QAAQ,GAAG;AACnE,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAAA,MACF;AACA,YAAM,SAAS,MAAM;AAAA,QACnB,uBAAuB,KAAK,MAAM;AAAA,MACpC;AACA,YAAM;AAAA,QACJ,KAAK,SAAS,OACV,cAAc,MAAM,IACpB,+BAA+B,MAAM;AAAA,MAC3C;AACA;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,+BACP,QACQ;AACR,UAAQ,OAAO,MAAM;AAAA,IACnB,KAAK;AACH,aAAO,QAAQ,OAAO,MAAM,aAAa,OAAO,mBAAmB,QAAQ,OAAO,kBAAkB;AAAA;AAAA,IACtG,KAAK;AACH,aAAO,WAAW,OAAO,MAAM,KAAK,OAAO,QAAQ,aAAa,OAAO,mBAAmB,QAAQ,OAAO,kBAAkB;AAAA;AAAA,IAC7H,KAAK,OAAO;AACV,YAAM,QAAQ;AAAA,QACZ,WAAW,OAAO,MAAM,KAAK,OAAO,QAAQ,GAAG;AAAA,QAC/C,aAAa,OAAO,SAAS,MAAM;AAAA,QACnC,oBAAoB,OAAO,QAAQ,MAAM;AAAA,MAC3C;AACA,UAAI,OAAO,WAAW,QAAW;AAC/B,cAAM,KAAK,WAAW,OAAO,OAAO,GAAG,KAAK,OAAO,OAAO,OAAO,GAAG;AAAA,MACtE;AACA,aAAO,GAAG,MAAM,KAAK,IAAI,CAAC;AAAA;AAAA,IAC5B;AAAA,EACF;AACF;AAEA,SAAS,uBAAuB,QAAgB;AAC9C,MAAI,sBAAsB,MAAM,GAAG;AACjC,WAAO,EAAE,MAAM,OAAgB;AAAA,EACjC;AACA,MAAI,OAAO,WAAW,YAAY,GAAG;AACnC,UAAM,SAASD,0BAAyB,MAAM;AAC9C,QAAI,WAAW,UAAa,OAAO,SAAS,WAAW;AACrD,YAAM,IAAI,MAAM,8CAA8C,MAAM,EAAE;AAAA,IACxE;AACA,WAAO,EAAE,MAAM,WAAoB,QAAQ,OAAO;AAAA,EACpD;AACA,MAAI,CAAC,OAAO,SAAS,OAAO,GAAG;AAC7B,UAAM,IAAI,MAAM,2CAA2C,MAAM,EAAE;AAAA,EACrE;AACA,SAAO,EAAE,MAAM,IAAI,SAASC,SAAQ,MAAM,CAAC,GAAG,MAAM,UAAmB;AACzE;AAxEA,IAAAC,oBAAA;AAAA;AAAA;AAOA;AACA;AACA;AAAA;AAAA;;;ACTA;AAAA;AAAA;AAAA;AAAA;AAAA,SAAS,YAAAC,iBAAgB;AACzB,SAAS,uBAAuB;AAEhC,SAAS,oBAAoB;AAI7B;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AAiBP,eAAsB,sBACpB,MACe;AACf,UAAQ,KAAK,QAAQ;AAAA,IACnB,KAAK;AACH,YAAM;AAAA,QACJ,KAAK;AAAA,QACL,MAAM,uBAAuB,KAAK,OAAO;AAAA,MAC3C;AACA;AAAA,IACF,KAAK;AACH,YAAM;AAAA,QACJ,KAAK;AAAA,QACL,MAAM;AAAA,UACJ,KAAK;AAAA,UACL;AAAA,YACE,KAAK;AAAA,YACL,cAAc,IAAI;AAAA,YAClB,MAAM,uBAAuB,KAAK,OAAO;AAAA,UAC3C;AAAA,QACF;AAAA,MACF;AACA;AAAA,IACF,KAAK,OAAO;AACV,YAAM,MAAM,iBAAiB,KAAK,GAAG;AACrC,YAAM,QACJ,KAAK,WAAW,OACZ,MAAM,gBAAgB,GAAG,IACzB,MAAM,aAAa,IAAI;AAE7B,YAAM;AAAA,QACJ,KAAK;AAAA,QACL,MAAM,oBAAoB,KAAK,SAAS,KAAK,KAAK;AAAA,MACpD;AACA;AAAA,IACF;AAAA,IACA,KAAK;AACH,YAAM;AAAA,QACJ,KAAK;AAAA,QACL,MAAM,uBAAuB,KAAK,SAAS,iBAAiB,KAAK,GAAG,CAAC;AAAA,MACvE;AACA;AAAA,IACF,KAAK;AACH,YAAM;AAAA,QACJ,KAAK;AAAA,QACL,MAAM,wBAAwB,KAAK,OAAO;AAAA,MAC5C;AACA;AAAA,IACF,KAAK;AACH,YAAM,cAAc,IAAI;AACxB;AAAA,EACJ;AACF;AAEA,eAAe,cAAc,MAA8C;AACzE,UAAQ,KAAK,SAAS;AAAA,IACpB,KAAK;AACH,YAAM,iBAAiB,IAAI;AAC3B;AAAA,IACF,KAAK;AACH,YAAM,uBAAuB,IAAI;AACjC;AAAA,IACF,KAAK;AACH,YAAM,uBAAuB,IAAI;AACjC;AAAA,IACF;AACE,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,EACJ;AACF;AAEA,eAAe,uBACb,MACe;AACf,QAAM,YAAY,KAAK,IAAI;AAC3B,QAAM,YAAY,MAAM,oBAAoB;AAE5C,MAAI;AACF,UAAM,SAAS,MAAM;AAAA,MACnB;AAAA,MACA;AAAA,IACF;AACA,UAAM,SAAS;AAAA,MACb,YAAY,OAAO;AAAA,MACnB,YAAY,KAAK,IAAI,IAAI;AAAA,MACzB,OAAO,OAAO;AAAA,MACd,IAAI;AAAA,MACJ,UAAU,OAAO;AAAA,MACjB,GAAI,OAAO,OAAO,WAAW,SACzB,CAAC,IACD,EAAE,QAAQ,OAAO,MAAM,OAAO;AAAA,IACpC;AAEA,QAAI,KAAK,SAAS,MAAM;AACtB,YAAM,kBAAkB,cAAc,MAAM,CAAC;AAC7C;AAAA,IACF;AAEA,UAAM;AAAA,MACJ;AAAA,QACE;AAAA,QACA,aAAa,OAAO,QAAQ;AAAA,QAC5B,UAAU,OAAO,KAAK;AAAA,QACtB,eAAe,OAAO,UAAU;AAAA,QAChC;AAAA,MACF,EAAE,KAAK,IAAI;AAAA,IACb;AAAA,EACF,SAAS,OAAO;AACd,UAAM,SAAS;AAAA,MACb,YAAY,KAAK,IAAI,IAAI;AAAA,MACzB,OAAO;AAAA,QACL,SAAS,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,MAChE;AAAA,MACA,OAAO,UAAU;AAAA,MACjB,IAAI;AAAA,MACJ,UAAU,UAAU;AAAA,IACtB;AAEA,QAAI,KAAK,SAAS,MAAM;AACtB,YAAM,kBAAkB,cAAc,MAAM,CAAC;AAC7C,qBAAe,CAAC;AAChB;AAAA,IACF;AAEA,UAAM;AAAA,EACR;AACF;AAEA,eAAe,iBAAiB,MAA8C;AAC5E,MAAI,KAAK,YAAY,OAAO;AAC1B,UAAM,IAAI,MAAM,6CAA6C;AAAA,EAC/D;AAEA,QAAM,YAAY,KAAK,IAAI;AAC3B,QAAM,MAAM,MAAM,uBAAuB,KAAK;AAE9C,MAAI;AACF,UAAM,YAAY;AAAA,MAChB,GAAI,OAAO,IAAI,WAAW,WAAW,EAAE,QAAQ,IAAI,OAAO,IAAI,CAAC;AAAA,MAC/D,GAAI,OAAO,IAAI,YAAY,WAAW,EAAE,SAAS,IAAI,QAAQ,IAAI,CAAC;AAAA,MAClE,GAAI,OAAO,IAAI,UAAU,WAAW,EAAE,OAAO,IAAI,MAAM,IAAI,CAAC;AAAA,MAC5D,GAAI,OAAO,IAAI,SAAS,WAAW,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;AAAA,MACzD,GAAI,OAAO,IAAI,aAAa,WACxB,EAAE,UAAU,iBAAiB,IAAI,QAAQ,EAAE,IAC3C,CAAC;AAAA,IACP;AACA,UAAM,UAAU,gBAAgB;AAAA,MAC9B,KAAK;AAAA,IACP,CAAC;AACD,UAAM,SAAS,MAAM,aAAa;AAAA,MAChC,YAAY;AAAA,MACZ,UAAU;AAAA,QACR;AAAA,UACE,SAAS;AAAA,UACT,MAAM;AAAA,QACR;AAAA,MACF;AAAA,MACA,OAAO,QAAQ;AAAA,MACf,aAAa;AAAA,IACf,CAAC;AACD,UAAM,SAAS;AAAA,MACb,YAAY,KAAK,IAAI,IAAI;AAAA,MACzB,OAAO,UAAU;AAAA,MACjB,IAAI;AAAA,MACJ,UAAU,UAAU;AAAA,MACpB,UAAU,OAAO,KAAK,KAAK;AAAA,IAC7B;AAEA,QAAI,KAAK,SAAS,MAAM;AACtB,YAAM,kBAAkB,cAAc,MAAM,CAAC;AAC7C;AAAA,IACF;AAEA,UAAM;AAAA,MACJ;AAAA,QACE;AAAA,QACA,aAAa,OAAO,QAAQ;AAAA,QAC5B,UAAU,OAAO,KAAK;AAAA,QACtB,aAAa,OAAO,QAAQ;AAAA,QAC5B;AAAA,MACF,EAAE,KAAK,IAAI;AAAA,IACb;AAAA,EACF,SAAS,OAAO;AACd,UAAM,SAAS;AAAA,MACb,YAAY,KAAK,IAAI,IAAI;AAAA,MACzB,OAAO;AAAA,QACL,SAAS,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,MAChE;AAAA,MACA,OAAO,OAAO,IAAI,UAAU,WAAW,IAAI,QAAQ;AAAA,MACnD,IAAI;AAAA,MACJ,UAAU,OAAO,IAAI,aAAa,WAAW,IAAI,WAAW;AAAA,IAC9D;AAEA,QAAI,KAAK,SAAS,MAAM;AACtB,YAAM,kBAAkB,cAAc,MAAM,CAAC;AAC7C,qBAAe,CAAC;AAChB;AAAA,IACF;AAEA,UAAM;AAAA,EACR;AACF;AAEA,eAAe,uBACb,MACe;AACf,QAAM,YAAY,KAAK,IAAI;AAC3B,QAAM,YAAY,MAAM,uBAAuB,WAAW;AAE1D,MAAI;AACF,UAAM,WAAW,uBAAuB,UAAU,QAAQ;AAC1D,UAAM,SAAS,MAAM,qBAAqB;AAAA,MACxC;AAAA,MACA,GAAI,aAAa,QACb,EAAE,eAAe,2BAA2B,IAC5C,CAAC;AAAA,IACP,CAAC;AACD,UAAM,SAAS;AAAA,MACb,YAAY,OAAO;AAAA,MACnB,GAAI,aAAa,UACb;AAAA,QACE,UAAU;AAAA,MACZ,IACA,CAAC;AAAA,MACL,GAAI,OAAO,aAAa,SAAY,CAAC,IAAI,EAAE,UAAU,OAAO,SAAS;AAAA,MACrE,IAAI;AAAA,MACJ;AAAA,IACF;AAEA,QAAI,KAAK,SAAS,MAAM;AACtB,YAAM,kBAAkB,cAAc,MAAM,CAAC;AAC7C;AAAA,IACF;AAEA,UAAM;AAAA,MACJ;AAAA,QACE;AAAA,QACA,aAAa,OAAO,QAAQ;AAAA,QAC5B,GAAI,OAAO,aAAa,SACpB,CAAC,IACD,CAAC,aAAa,OAAO,QAAQ,EAAE;AAAA,QACnC,GAAI,OAAO,aAAa,SACpB,CAAC,IACD;AAAA,UACE,YAAY,OAAO,SAAS,MAAM;AAAA,UAClC,aAAa,OAAO,SAAS,aAAa;AAAA,UAC1C,SAAS,OAAO,SAAS,SAAS;AAAA,QACpC;AAAA,QACJ;AAAA,MACF,EAAE,KAAK,IAAI;AAAA,IACb;AAAA,EACF,SAAS,OAAO;AACd,UAAM,SAAS;AAAA,MACb,YAAY,KAAK,IAAI,IAAI;AAAA,MACzB,OAAO;AAAA,QACL,SAAS,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,MAChE;AAAA,MACA,IAAI;AAAA,MACJ,UACE,OAAO,UAAU,aAAa,WAAW,UAAU,WAAW;AAAA,IAClE;AAEA,QAAI,KAAK,SAAS,MAAM;AACtB,YAAM,kBAAkB,cAAc,MAAM,CAAC;AAC7C,qBAAe,CAAC;AAChB;AAAA,IACF;AAEA,UAAM;AAAA,EACR;AACF;AAEA,eAAe,kBACb,SACA,OACe;AACf,QAAM;AAAA,IACJ,cAAc,uBAAuB,SAAS,KAAK,CAAC;AAAA,EACtD;AACF;AAEA,SAAS,aAAa,MAAwC;AAC5D,MAAI,KAAK,eAAe,UAAa,KAAK,mBAAmB,QAAW;AACtE,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,MAAI,KAAK,mBAAmB,QAAW;AACrC,WAAO,eAAe,KAAK,cAAc;AAAA,EAC3C;AACA,MAAI,KAAK,eAAe,QAAW;AACjC,WAAO,KAAK;AAAA,EACd;AAEA,QAAM,IAAI,MAAM,uBAAuB;AACzC;AAEA,SAAS,cAAc,MAAkD;AACvE,QAAM,MAAM,KAAK,kBAAkB,KAAK;AAExC,MAAI,QAAQ,QAAW;AACrB,UAAM,IAAI,MAAM,oCAAoC;AAAA,EACtD;AAEA,QAAM,SAAS,eAAe,GAAG;AAEjC,MAAI,WAAW,QAAQ,OAAO,WAAW,YAAY,MAAM,QAAQ,MAAM,GAAG;AAC1E,UAAM,IAAI,MAAM,oCAAoC;AAAA,EACtD;AAEA,SAAO;AACT;AAEO,SAAS,yBACd,SACA,OACA,SACmB;AACnB,MACG,YAAY,SAAS,YAAY,gBAClC,MAAM,WAAW,QACjB;AACA,WAAO;AAAA,EACT;AACA,MAAI,OAAO,MAAM,WAAW,YAAY,SAAS,KAAK,MAAM,MAAM,GAAG;AACnE,WAAO,QAAQ,WAAW,SACtB,QAAQ,OAAO,QAAQ,IACvB,EAAE,GAAG,OAAO,QAAQ,QAAQ,OAAO;AAAA,EACzC;AAEA,QAAM,IAAI;AAAA,IACR,iFAAiF,OAAO;AAAA,EAC1F;AACF;AAEA,SAAS,QAAQ,OAA0B,KAAgC;AACzE,QAAM,EAAE,CAAC,GAAG,GAAG,UAAU,GAAG,KAAK,IAAI;AAErC,SAAO;AACT;AAEA,SAAS,eAAe,KAAsB;AAC5C,MAAI;AACF,WAAO,KAAK,MAAM,GAAG;AAAA,EACvB,SAAS,OAAO;AACd,UAAM,IAAI;AAAA,MACR,uBAAuB,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA,IAC/E;AAAA,EACF;AACF;AAEA,SAAS,iBAAiB,KAAiC;AACzD,QAAM,aAAa,KAAK,KAAK,KAAK;AAElC,MAAI,eAAe,IAAI;AACrB,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AAEA,SAAO;AACT;AAEA,SAAS,iBAAiB,OAA4B;AACpD,UAAQ,OAAO;AAAA,IACb,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT;AACE,YAAM,IAAI;AAAA,QACR,yBAAyB,KAAK;AAAA,MAChC;AAAA,EACJ;AACF;AAEA,SAAS,uBAAuB,OAAmC;AACjE,UAAQ,OAAO;AAAA,IACb,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT;AACE,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,EACJ;AACF;AAEA,eAAe,gBAAgB,KAA8B;AAC3D,MAAI,QAAQ,MAAM,UAAU,MAAM;AAChC,UAAM,IAAI,MAAM,GAAG,GAAG,oCAAoC;AAAA,EAC5D;AAEA,QAAM,cAAc,IAAIA,UAAS;AAAA,IAC/B,MAAM,QAAQ,WAAW,UAAU;AACjC,eAAS;AAAA,IACX;AAAA,EACF,CAAC;AACD,QAAM,WAAW,gBAAgB;AAAA,IAC/B,OAAO,QAAQ;AAAA,IACf,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ,CAAC;AAED,MAAI;AACF,UAAM,kBAAkB,GAAG,GAAG,IAAI;AAClC,UAAM,QAAQ,MAAM,SAAS,SAAS,EAAE;AACxC,UAAM,kBAAkB,IAAI;AAC5B,QAAI,MAAM,KAAK,MAAM,IAAI;AACvB,YAAM,IAAI,MAAM,GAAG,GAAG,mBAAmB;AAAA,IAC3C;AAEA,WAAO,MAAM,KAAK;AAAA,EACpB,UAAE;AACA,aAAS,MAAM;AAAA,EACjB;AACF;AA5bA,IAAAC,qBAAA;AAAA;AAAA;AAYA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;;;AClBA;AAAA;AAAA;AAAA;AAAA,SAAS,SAAAC,QAAO,YAAAC,iBAAgB;AAEhC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,+BAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,6BAAAC;AAAA,EACA;AAAA,EACA,kCAAAC;AAAA,EACA,gCAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,2BAAAC;AAAA,EACA;AAAA,OAEK;AAuBP,eAAsB,kBACpB,MACe;AACf,MACE,KAAK,WAAW,SAChB,KAAK,WAAW,YAChB,KAAK,WAAW,UAChB,KAAK,WAAW,UAChB;AACA,UAAM,oCAAoC,KAAK,MAAM;AAAA,EACvD;AAEA,UAAQ,KAAK,QAAQ;AAAA,IACnB,KAAK,OAAO;AACV,UAAI,KAAK,cAAc,QAAW;AAChC,cAAM,IAAI,MAAM,yCAAyC;AAAA,MAC3D;AACA,YAAM;AAAA,QACJ,MAAM,2BAA2B;AAAA,UAC/B,WAAW,IAAI,SAAS,KAAK,SAAS;AAAA,UACtC,QAAQ,KAAK;AAAA,UACb,GAAI,KAAK,OAAO,SAAY,CAAC,IAAI,EAAE,IAAI,KAAK,GAAG;AAAA,QACjD,CAAC;AAAA,QACD,KAAK,QAAQ;AAAA,MACf;AACA;AAAA,IACF;AAAA,IACA,KAAK,UAAU;AACb,UAAI,KAAK,SAAS,QAAW;AAC3B,cAAM,IAAI,MAAM,6CAA6C;AAAA,MAC/D;AACA,YAAMN,OAAM,KAAK,IAAI;AACrB,YAAM,UAAU,MAAM,uBAAuB;AAAA,QAC3C,QAAQ,IAAI,cAAc,KAAK,IAAI;AAAA,MACrC,CAAC;AACD,YAAM,aAAa,SAAS,KAAK,QAAQ,KAAK;AAC9C;AAAA,IACF;AAAA,IACA,KAAK,QAAQ;AACX,UAAI,KAAK,OAAO,SAAS,YAAY;AACnC,cAAM;AAAA,UACJ,MAAM,uBAAuB;AAAA,UAC7B,KAAK,QAAQ;AAAA,QACf;AACA;AAAA,MACF;AACA,UAAI,KAAK,OAAO,SAAS,sBAAsB;AAC7C,cAAM;AAAA,UACJ,MAAM,6BAA6B,KAAK,MAAM;AAAA,UAC9C,KAAK,QAAQ;AAAA,QACf;AACA;AAAA,MACF;AACA,YAAM,4BAA4B,KAAK,QAAQ,KAAK,QAAQ,KAAK;AACjE;AAAA,IACF;AAAA,IACA,KAAK,QAAQ;AACX,YAAM;AAAA,QACJ;AAAA,QACA,YAAY,MAAM,qBAAqB,KAAK,MAAM;AAAA,QAClD,KAAK,QAAQ;AAAA,QACb,KAAK,SAAS;AAAA,MAChB;AACA;AAAA,IACF;AAAA,IACA,KAAK,UAAU;AACb,YAAM,aAAa,KAAK;AACxB,UAAI,eAAe,QAAW;AAC5B,cAAM,IAAI,MAAM,0CAA0C;AAAA,MAC5D;AACA,YAAM;AAAA,QACJ;AAAA,QACA,YACE,MAAM,uBAAuB;AAAA,UAC3B,QAAQ,IAAI,cAAc,UAAU;AAAA,UACpC,QAAQ,KAAK;AAAA,QACf,CAAC;AAAA,QACH,KAAK,QAAQ;AAAA,QACb,KAAK,SAAS;AAAA,MAChB;AACA;AAAA,IACF;AAAA,IACA,KAAK,gBAAgB;AACnB,YAAM;AAAA,QACJ,MAAM,6BAA6B,KAAK,MAAM;AAAA,QAC9C;AAAA,UACE,GAAI,KAAK,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM;AAAA,UACxD,MAAM,KAAK,QAAQ;AAAA,UACnB,GAAI,KAAK,WAAW,SAAY,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO;AAAA,QAC7D;AAAA,MACF;AACA;AAAA,IACF;AAAA,IACA,KAAK,aAAa;AAChB,YAAM;AAAA,QACJ,MAAMI,gCAA+B,KAAK,MAAM;AAAA,QAChD,KAAK,QAAQ;AAAA,MACf;AACA;AAAA,IACF;AAAA,IACA,KAAK,cAAc;AACjB,YAAM,SAAS,IAAI,qBAAqB;AAAA,QACtC,OAAO,KAAK,SAAS;AAAA,QACrB,YAAYG;AAAA,MACd,CAAC;AAED,YAAM,OAAO,MAAM;AAAA,QACjB,MAAM,EAAE,MAAM,UAAU;AAAA,QACxB,MAAM;AAAA,QACN,MAAM;AAAA,MACR,CAAC;AACD,YAAM,QAAQ,MAAMF;AAAA,QAClB,KAAK;AAAA,QACL,OAAO,UAAU;AACf,gBAAM,WACJ,MAAM,SAAS,UAAa,MAAM,UAAU,SACxC,CAAC,IACD,CAACG,oBAAmB,KAAK,CAAC;AAEhC,gBAAM,OAAO,MAAM;AAAA,YACjB;AAAA,YACA,MAAM;AAAA,cACJ;AAAA,cACA,OAAO,MAAM;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,MAAM;AAAA,YACN,OAAO,MAAM;AAAA,UACf,CAAC;AAAA,QACH;AAAA,MACF;AACA,YAAM,OAAO,MAAM;AAAA,QACjB,MAAM,EAAE,QAAQ,MAAM,QAAQ,MAAM,YAAY;AAAA,QAChD,MAAM;AAAA,QACN,MAAM;AAAA,MACR,CAAC;AACD,YAAM,OAAO,MAAM;AAAA,QACjB,MAAM,EAAE,MAAM,YAAY;AAAA,QAC1B,MAAM;AAAA,QACN,MAAM;AAAA,MACR,CAAC;AACD;AAAA,IACF;AAAA,IACA,KAAK,eAAe;AAClB,YAAM;AAAA,QACJ,MAAM,2BAA2B,KAAK,MAAM;AAAA,QAC5C,KAAK,QAAQ;AAAA,MACf;AACA;AAAA,IACF;AAAA,IACA,KAAK,UAAU;AACb,UAAI,KAAK,OAAO,SAAS,WAAW;AAClC,cAAM;AAAA,UACJ,MAAM,8BAA8B,EAAE,QAAQ,KAAK,OAAO,CAAC;AAAA,UAC3D,KAAK,QAAQ;AAAA,UACb;AAAA,QACF;AACA;AAAA,MACF;AACA,YAAM,UAAU,MAAM,uBAAuB,KAAK,MAAM;AACxD,YAAM;AAAA,QACJ,KAAK,SAAS,OACV,cAAc,EAAE,SAAS,QAAQ,IAAI,CAAC,IACtC,6BAA6B,QAAQ,GAAG;AAAA;AAAA,MAC9C;AACA;AAAA,IACF;AAAA,IACA,KAAK,OAAO;AACV,UAAI,KAAK,OAAO,SAAS,QAAQ;AAC/B,cAAM;AAAA,UACJ,MAAMF,yBAAwB,KAAK,MAAM;AAAA,UACzC,KAAK,QAAQ;AAAA,QACf;AACA;AAAA,MACF;AACA,UAAI,KAAK,OAAO,SAAS,gBAAgB;AACvC,cAAM;AAAA,UACJ,MAAM,2BAA2B,EAAE,GAAG,KAAK,QAAQ,MAAM,UAAU,CAAC;AAAA,UACpE,KAAK,QAAQ;AAAA,QACf;AACA;AAAA,MACF;AACA,UAAI,KAAK,OAAO,SAAS,YAAY;AACnC,cAAM;AAAA,UACJ,MAAM,4BAA4B,KAAK,MAAM;AAAA,UAC7C,KAAK,QAAQ;AAAA,QACf;AACA;AAAA,MACF;AACA,UAAI,KAAK,OAAO,SAAS,WAAW;AAClC,cAAM;AAAA,UACJ,MAAM,2BAA2B,KAAK,MAAM;AAAA,UAC5C,KAAK,QAAQ;AAAA,QACf;AACA;AAAA,MACF;AACA,UAAI,KAAK,OAAO,SAAS,sBAAsB;AAC7C,cAAM;AAAA,UACJ,MAAM,6BAA6B,KAAK,MAAM;AAAA,UAC9C,KAAK,QAAQ;AAAA,QACf;AACA;AAAA,MACF;AACA,YAAM,4BAA4B,KAAK,QAAQ,KAAK,QAAQ,KAAK;AACjE;AAAA,IACF;AAAA,IACA,KAAK,OAAO;AACV,UAAI,KAAK,OAAO,SAAS,gBAAgB;AACvC,YAAI,KAAK,OAAO,QAAW;AACzB,gBAAM,IAAI,MAAM,kDAAkD;AAAA,QACpE;AACA,cAAM;AAAA,UACJ,MAAM,4BAA4B;AAAA,YAChC,QAAQ,EAAE,GAAG,KAAK,QAAQ,MAAM,UAAU;AAAA,YAC1C,IAAI,KAAK;AAAA,UACX,CAAC;AAAA,UACD,KAAK,QAAQ;AAAA,UACb;AAAA,QACF;AACA;AAAA,MACF;AACA,YAAM,QAAQ,MAAM,kBAAkB,MAAM,EAAE,cAAc,KAAK,CAAC;AAClE,YAAM;AAAA,QACJ,MAAM;AAAA,UACJ,KAAK;AAAA,UACL,iBAAiB,KAAK;AAAA,QACxB;AAAA,QACA,KAAK,QAAQ;AAAA,MACf;AACA;AAAA,IACF;AAAA,IACA,KAAK,OAAO;AACV,YAAM;AAAA,QACJ,MAAM;AAAA,UACJ,KAAK;AAAA,UACL,qBAAqB,KAAK,GAAG;AAAA,UAC7B,MAAM,kBAAkB,MAAM,EAAE,cAAc,MAAM,CAAC;AAAA,QACvD;AAAA,QACA,KAAK,QAAQ;AAAA,MACf;AACA;AAAA,IACF;AAAA,IACA,KAAK,UAAU;AACb,YAAM;AAAA,QACJ,MAAM;AAAA,UACJ,KAAK;AAAA,UACL,qBAAqB,KAAK,GAAG;AAAA,QAC/B;AAAA,QACA,KAAK,QAAQ;AAAA,MACf;AACA;AAAA,IACF;AAAA,IACA,KAAK,SAAS;AACZ,YAAM;AAAA,QACJ,MAAM,8BAA8B,KAAK,MAAM;AAAA,QAC/C,KAAK,QAAQ;AAAA,MACf;AACA;AAAA,IACF;AAAA,EACF;AACF;AAEA,eAAe,aACb,SACA,MACe;AACf,MAAI,MAAM;AACR,UAAM;AAAA,MACJ,cAAc;AAAA,QACZ,KAAK,QAAQ;AAAA,QACb,IAAI,QAAQ;AAAA,QACZ,YAAY,oBAAoB,QAAQ,MAAM;AAAA,QAC9C,WAAW,QAAQ;AAAA,QACnB,aAAa,oBAAoB,QAAQ,OAAO;AAAA,QAChD,WAAW,QAAQ;AAAA,QACnB,WAAW,QAAQ;AAAA,MACrB,CAAC;AAAA,IACH;AACA;AAAA,EACF;AACA,QAAM,kBAAkB,GAAG,QAAQ,GAAG;AAAA,CAAI;AAC5C;AAEA,eAAe,eACb,WACA,MACe;AACf,MAAI,MAAM;AACR,UAAM;AAAA,MACJ,cAAc;AAAA,QACZ,OAAO,UAAU,IAAI,CAAC,aAAa;AAAA,UACjC,KAAK,QAAQ;AAAA,UACb,IAAI,QAAQ;AAAA,UACZ,MAAM,oBAAoB,QAAQ,MAAM;AAAA,UACxC,WAAW,QAAQ;AAAA,QACrB,EAAE;AAAA,MACJ,CAAC;AAAA,IACH;AACA;AAAA,EACF;AACA,QAAM;AAAA,IACJ,UACG;AAAA,MAAI,CAAC,YACJ;AAAA,QACE,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,oBAAoB,QAAQ,MAAM;AAAA,QAClC,QAAQ,YAAY,YAAY;AAAA,MAClC,EAAE,KAAK,GAAI;AAAA,IACb,EACC,KAAK,IAAI,KAAK,UAAU,WAAW,IAAI,KAAK;AAAA,EACjD;AACF;AAEA,eAAe,iBACb,SACA,MACe;AACf,MAAI,MAAM;AACR,UAAM;AAAA,MACJ,cAAc;AAAA,QACZ,KAAK,GAAG,QAAQ,GAAG;AAAA,QACnB,MAAM,oBAAoB,QAAQ,MAAM;AAAA,MAC1C,CAAC;AAAA,IACH;AACA;AAAA,EACF;AACA,QAAM,kBAAkB,GAAG,oBAAoB,QAAQ,MAAM,CAAC;AAAA,CAAI;AACpE;AAEA,eAAe,wBACb,SACA,MACe;AACf,MAAI,MAAM;AACR,UAAM;AAAA,MACJ,cAAc,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,MAAM,QAAQ,aAAa,CAAC;AAAA,IAC1E;AACA;AAAA,EACF;AACA,QAAM,kBAAkB,GAAG,QAAQ,YAAY;AAAA,CAAI;AACrD;AAEA,eAAe,gBACb,OACA,WACA,MACA,OACe;AACf,MAAI,OAAO;AACT,UAAM,SAAS,IAAI,qBAAqB,EAAE,OAAO,MAAM,YAAY,EAAE,CAAC;AACtE,UAAM,OAAO,MAAM;AAAA,MACjB,MAAM,EAAE,MAAM,WAAW,QAAQ,MAAM;AAAA,MACvC,MAAM;AAAA,MACN,MAAM,GAAG,KAAK;AAAA,IAChB,CAAC;AACD,UAAMG,UAAS,MAAM,UAAU;AAC/B,eAAW,WAAWA,QAAO,UAAU;AACrC,YAAM,OAAO,MAAM;AAAA,QACjB,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,SAAS,yBAAyB,OAAO;AAAA,QAC3C;AAAA,QACA,MAAM;AAAA,QACN,OAAO;AAAA,MACT,CAAC;AAAA,IACH;AACA,UAAM,OAAO,MAAM;AAAA,MACjB,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,UAAUA,QAAO,SAAS;AAAA,MAC5B;AAAA,MACA,MAAM;AAAA,MACN,MAAM,GAAG,KAAK;AAAA,IAChB,CAAC;AACD,UAAM,OAAO,MAAM;AAAA,MACjB,MAAM,EAAE,MAAM,aAAa,QAAQ,MAAM;AAAA,MACzC,MAAM;AAAA,MACN,MAAM;AAAA,IACR,CAAC;AACD;AAAA,EACF;AAEA,QAAM,SAAS,MAAM,UAAU;AAC/B,QAAM,qBAAqB,OAAO,UAAU,IAAI;AAClD;AAEA,eAAe,qBACb,UACA,MACe;AACf,MAAI,MAAM;AACR,UAAM;AAAA,MACJ,cAAc,EAAE,OAAO,SAAS,IAAI,wBAAwB,EAAE,CAAC;AAAA,IACjE;AACA;AAAA,EACF;AACA,QAAM;AAAA,IACJ,SACG;AAAA,MAAI,CAAC,YACJ,CAAC,QAAQ,KAAK,QAAQ,cAAc,QAAQ,MAAM,EAAE,KAAK,GAAI;AAAA,IAC/D,EACC,KAAK,IAAI,KAAK,SAAS,WAAW,IAAI,KAAK;AAAA,EAChD;AACF;AAEA,eAAe,4BACb,QACA,MACe;AACf,QAAM,UAAU,MAAMH,yBAAwB,MAAM;AACpD,QAAM,UAAUH,2BAA0B,OAAO,QAAQ;AACzD,QAAM,UAAU;AAAA,IACd,YAAY,GAAG,OAAO;AAAA,IACtB,aAAa;AAAA,IACb,kBAAkB;AAAA,IAClB,QAAQ,OAAQ,SAAoB;AAAA,IACpC,YAAY,EAAE,MAAM,iBAA0B,WAAW,QAAQ,GAAG;AAAA,IACpE,OAAO;AAAA,IACP,OAAO;AAAA,EACT;AAEA,QAAM;AAAA,IACJ,2BAA2B,MAAMD,6BAA4B,MAAM,CAAC;AAAA,IACpE;AAAA,IACA,OAAO,SAAS;AAAA,EAClB;AACF;AAEA,eAAe,oBACb,SACA,MACA,QAAQ,yBACO;AACf,MAAI,MAAM;AACR,UAAM,kBAAkB,cAAc,yBAAyB,OAAO,CAAC,CAAC;AACxE;AAAA,EACF;AACA,QAAM;AAAA,IACJ,GAAG,KAAK,KAAK,QAAQ,GAAG;AAAA,EAAK,QAAQ,YAAY;AAAA;AAAA,EACnD;AACF;AAEA,eAAe,wBACb,SACA,MACe;AACf,MAAI,MAAM;AACR,UAAM;AAAA,MACJ,cAAc,6BAA6B,OAAO,CAAC;AAAA,IACrD;AACA;AAAA,EACF;AAEA,QAAM;AAAA,IACJ;AAAA,MACE,oBAAoB,QAAQ,GAAG;AAAA,MAC/B,UAAU,QAAQ,YAAY;AAAA,MAC9B,WAAW,QAAQ,MAAM,GAAG,QAAQ,SAAS,KAAK,iBAAiB;AAAA,MACnE,YAAY,QAAQ,GAAG;AAAA,MACvB,WAAW,QAAQ,GAAG;AAAA,MACtB,WAAW,QAAQ,GAAG;AAAA,MACtB,YAAY,QAAQ,GAAG;AAAA,MACvB,kBAAkB,sBAAsB,OAAO,CAAC;AAAA,MAChD;AAAA,IACF,EAAE,KAAK,IAAI;AAAA,EACb;AACF;AAEA,SAAS,yBACP,SACQ;AACR,SAAO;AAAA,IACL,KAAK,QAAQ;AAAA,IACb,IAAI,QAAQ;AAAA,IACZ,YAAY,QAAQ;AAAA,IACpB,cAAc,QAAQ;AAAA,IACtB,MAAM,sBAAsB,OAAO;AAAA,IACnC,QAAQ,QAAQ;AAAA,IAChB,QAAQ,QAAQ;AAAA,IAChB,uBAAuB,QAAQ;AAAA,IAC/B,cAAc,QAAQ;AAAA,IACtB,iBAAiB,QAAQ;AAAA,IACzB,eAAe,QAAQ;AAAA,IACvB,WAAW,QAAQ;AAAA,IACnB,WAAW,QAAQ;AAAA,EACrB;AACF;AAEA,SAAS,6BACP,SACQ;AACR,SAAO;AAAA,IACL,KAAK,QAAQ;AAAA,IACb,IAAI,QAAQ;AAAA,IACZ,YAAY,QAAQ;AAAA,IACpB,OAAO,QAAQ;AAAA,IACf,cAAc,QAAQ;AAAA,IACtB,QAAQ,QAAQ;AAAA,IAChB,SAAS;AAAA,MACP,SAAS,GAAG,QAAQ,GAAG;AAAA,MACvB,QAAQ,GAAG,QAAQ,GAAG;AAAA,MACtB,QAAQ,GAAG,QAAQ,GAAG;AAAA,MACtB,SAAS,GAAG,QAAQ,GAAG;AAAA,IACzB;AAAA,IACA,UAAU;AAAA,MACR,MAAM,sBAAsB,OAAO;AAAA,MACnC,QAAQ,QAAQ;AAAA,MAChB,uBAAuB,QAAQ;AAAA,MAC/B,cAAc,QAAQ;AAAA,MACtB,iBAAiB,QAAQ;AAAA,MACzB,eAAe,QAAQ;AAAA,MACvB,WAAW,QAAQ;AAAA,MACnB,WAAW,QAAQ;AAAA,IACrB;AAAA,EACF;AACF;AASA,eAAe,wBACb,UACA,SAKe;AACf,QAAM,SAAS,QAAQ,QACnB,QAAQ,QAAQ,GAAG,EACpB,QAAQ,eAAe,EAAE;AAC5B,QAAM,OAAwB,EAAE,UAAU,oBAAI,IAAI,GAAG,MAAM,IAAI,MAAM,GAAG;AACxE,aAAW,WAAW,UAAU;AAC9B,QACE,WAAW,UACX,CAAC,0BAA0B,QAAQ,cAAc,MAAM,GACvD;AACA;AAAA,IACF;AACA,0BAAsB,MAAM,OAAO;AAAA,EACrC;AACA,wBAAsB,MAAM,QAAQ,OAAO,CAAC;AAE5C,MAAI,QAAQ,MAAM;AAChB,UAAM;AAAA,MACJ,cAAc,EAAE,OAAO,0BAA0B,KAAK,QAAQ,EAAE,CAAC;AAAA,IACnE;AACA;AAAA,EACF;AACA,QAAM,kBAAkB,sBAAsB,KAAK,QAAQ,CAAC;AAC9D;AAEA,SAAS,0BAA0B,MAAc,QAAyB;AACxE,SAAO,SAAS,UAAU,KAAK,WAAW,GAAG,OAAO,QAAQ,QAAQ,EAAE,CAAC,GAAG;AAC5E;AAEA,SAAS,sBACP,MACA,SACM;AACN,MAAI,UAAU;AACd,QAAM,QAAQ,QAAQ,aAAa,MAAM,GAAG;AAC5C,WAAS,QAAQ,GAAG,QAAQ,MAAM,QAAQ,SAAS,GAAG;AACpD,UAAM,OAAO,MAAM,KAAK;AACxB,UAAM,OAAO,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,KAAK,GAAG;AAC/C,QAAI,QAAQ,QAAQ,SAAS,IAAI,IAAI;AACrC,QAAI,UAAU,QAAW;AACvB,cAAQ,EAAE,UAAU,oBAAI,IAAI,GAAG,MAAM,KAAK;AAC1C,cAAQ,SAAS,IAAI,MAAM,KAAK;AAAA,IAClC;AACA,cAAU;AAAA,EACZ;AACA,UAAQ,UAAU;AACpB;AAEA,SAAS,sBACP,MACA,OACA,OACM;AACN,MAAI,UAAU,QAAW;AACvB,eAAW,SAAS,KAAK,SAAS,OAAO,GAAG;AAC1C,4BAAsB,OAAO,OAAO,QAAQ,CAAC;AAAA,IAC/C;AACA;AAAA,EACF;AACA,MAAI,SAAS,OAAO;AAClB,SAAK,SAAS,MAAM;AACpB;AAAA,EACF;AACA,aAAW,SAAS,KAAK,SAAS,OAAO,GAAG;AAC1C,0BAAsB,OAAO,OAAO,QAAQ,CAAC;AAAA,EAC/C;AACF;AAEA,SAAS,0BACP,OACU;AACV,SAAO,CAAC,GAAG,MAAM,OAAO,CAAC,EAAE,IAAI,CAAC,UAAU;AAAA,IACxC,UAAU,0BAA0B,KAAK,QAAQ;AAAA,IACjD,MAAM,KAAK;AAAA,IACX,MAAM,KAAK;AAAA,IACX,GAAI,KAAK,YAAY,SAAY,CAAC,IAAI,EAAE,KAAK,KAAK,QAAQ,IAAI;AAAA,EAChE,EAAE;AACJ;AAEA,SAAS,sBAAsB,OAA6C;AAC1E,SAAO,eAAe,CAAC,GAAG,MAAM,OAAO,CAAC,EAAE,IAAI,2BAA2B,CAAC;AAC5E;AAEA,SAAS,4BAA4B,MAAuC;AAC1E,SAAO;AAAA,IACL,UAAU,CAAC,GAAG,KAAK,SAAS,OAAO,CAAC,EAAE,IAAI,2BAA2B;AAAA,IACrE,OACE,KAAK,YAAY,SACb,KAAK,OACL,GAAG,KAAK,IAAI,KAAK,KAAK,QAAQ,GAAG;AAAA,EACzC;AACF;AAEA,eAAe,uBACb,OACA,MACe;AACf,MAAI,MAAM;AACR,UAAM,kBAAkB,cAAc,KAAK,CAAC;AAC5C;AAAA,EACF;AAEA,QAAM;AAAA,IACJ;AAAA,MACE,WAAW,MAAM,MAAM;AAAA,MACvB,GAAI,MAAM,iBAAiB,SACvB,CAAC,IACD;AAAA,QACE,oBAAoB,MAAM,aAAa,OAAO;AAAA,QAC9C,kBAAkB,MAAM,aAAa,MAAM,UAAU,QAAQ,IAAI;AAAA,QACjE,GAAI,MAAM,aAAa,MAAM,UAAU,SACnC,CAAC,IACD,CAAC,gBAAgB,MAAM,aAAa,MAAM,KAAK,EAAE;AAAA,QACrD,GAAI,MAAM,aAAa,MAAM,eAAe,SACxC,CAAC,IACD,CAAC,qBAAqB,MAAM,aAAa,MAAM,UAAU,EAAE;AAAA,MACjE;AAAA,MACJ,uBAAuB,MAAM,iBAAiB;AAAA,MAC9C,GAAI,MAAM,gBAAgB,SACtB,CAAC,IACD,CAAC,sBAAsB,MAAM,WAAW,EAAE;AAAA,MAC9C,YAAY,MAAM,QAAQ,MAAM;AAAA,MAChC;AAAA,IACF,EAAE,KAAK,IAAI;AAAA,EACb;AACF;AAEA,SAASM,oBAAmB,OAIR;AAClB,QAAM,OACJ,MAAM,SAAS,YACX,aACA,MAAM,SAAS,aACb,cACA,MAAM,SAAS,WACb,YACA;AAEV,SAAO;AAAA,IACL,MAAM,MAAM,QAAQ;AAAA,IACpB,MAAM;AAAA,IACN,OAAO,MAAM,SAAS;AAAA,IACtB;AAAA,EACF;AACF;AAEA,eAAe,kBACb,MACA,SACkB;AAClB,QAAM,MAAM,MAAM,aAAa,IAAI;AACnC,MAAI,QAAQ,gBAAgB,KAAK,mBAAmB,QAAW;AAC7D,WAAOE,gBAAe,GAAG;AAAA,EAC3B;AACA,SAAO;AACT;AAEA,eAAe,aAAa,MAA4C;AACtE,QAAM,UAAU;AAAA,IACd,KAAK,eAAe,SAAY,SAAY;AAAA,IAC5C,KAAK,cAAc,SAAY,SAAY;AAAA,IAC3C,KAAK,mBAAmB,SAAY,SAAY;AAAA,EAClD,EAAE,OAAO,CAAC,WAA6B,WAAW,MAAS;AAE3D,MAAI,QAAQ,SAAS,GAAG;AACtB,UAAM,IAAI,MAAM,iCAAiC,QAAQ,KAAK,IAAI,CAAC,GAAG;AAAA,EACxE;AACA,MAAI,KAAK,mBAAmB,QAAW;AACrC,WAAO,KAAK;AAAA,EACd;AACA,MAAI,KAAK,eAAe,QAAW;AACjC,WAAO,KAAK;AAAA,EACd;AACA,MAAI,KAAK,cAAc,KAAK;AAC1B,QAAI,UAAU;AACd,qBAAiB,SAAS,wBAAwB,GAAG;AACnD,iBAAW;AAAA,IACb;AACA,WAAO;AAAA,EACT;AACA,MAAI,KAAK,cAAc,QAAW;AAChC,WAAO,MAAMT,UAAS,KAAK,WAAW,MAAM;AAAA,EAC9C;AACA,QAAM,IAAI;AAAA,IACR;AAAA,EACF;AACF;AAEA,SAAS,iBAAiB,OAAmD;AAC3E,MAAI,UAAU,QAAQ,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK,GAAG;AACvE,UAAM,IAAI,MAAM,sCAAsC;AAAA,EACxD;AACA,SAAO;AACT;AAEA,SAASS,gBAAe,KAAsB;AAC5C,MAAI;AACF,WAAO,KAAK,MAAM,GAAG;AAAA,EACvB,SAAS,OAAO;AACd,UAAM,IAAI;AAAA,MACR,uBAAuB,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA,IAC/E;AAAA,EACF;AACF;AAEA,SAAS,qBAAqB,KAAiC;AAC7D,QAAM,aAAa,KAAK,KAAK,KAAK;AAClC,MAAI,eAAe,IAAI;AACrB,UAAM,IAAI,MAAM,+BAA+B;AAAA,EACjD;AACA,SAAO;AACT;AAEA,SAAS,iBACP,KACA,MACe;AACf,MAAI,MAAM;AACR,WAAO,kBAAkB,cAAc,GAAG,CAAC;AAAA,EAC7C;AACA,QAAM,QAAQ,OAAO,QAAQ,GAAG,EAAE;AAAA,IAChC,CAAC,CAAC,KAAK,KAAK,MAAM,GAAG,GAAG,KAAK,wBAAwB,KAAK,CAAC;AAAA,EAC7D;AACA,SAAO,kBAAkB,MAAM,WAAW,IAAI,KAAK,GAAG,MAAM,KAAK,IAAI,CAAC;AAAA,CAAI;AAC5E;AAEA,SAAS,wBAAwB,OAAwB;AACvD,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAO,MAAM,IAAI,CAAC,SAAS,OAAO,IAAI,CAAC,EAAE,KAAK,GAAG;AAAA,EACnD;AACA,MAAI,UAAU,QAAQ,OAAO,UAAU,UAAU;AAC/C,WAAO,KAAK,UAAU,KAAK;AAAA,EAC7B;AACA,SAAO,OAAO,KAAK;AACrB;AAEA,SAAS,sBAAsB,SAGpB;AACT,SAAO,QAAQ,SAAS,SACpB,QAAQ,eACR,oBAAoB,QAAQ,IAAI;AACtC;AA7zBA,IA+CMH;AA/CN;AAAA;AAAA;AA6BA;AAMA;AACA;AAKA;AACA;AAKA,IAAMA,qCAAoC;AAAA;AAAA;;;AC/C1C;AAAA;AAAA;AAAA;AAAA,SAAS,YAAAI,iBAAgB;AAEzB,SAAS,0BAAqD;AAC9D,SAAS,wBAAAC,6BAA4B;AAWrC,eAAsB,yBACpB,MACe;AACf,QAAM,SAAS,0BAA0B,KAAK,UAAU;AAExD,UAAQ,KAAK,QAAQ;AAAA,IACnB,KAAK,OAAO;AACV,YAAM,WAAW,MAAM,8BAA8B,KAAK,WAAW;AACrE,YAAM,IAAIA,sBAAqB,SAAS,WAAW,EAAE;AAAA,QACnD,OAAO,aAAa;AAClB,gBAAMC;AAAA,YACJ,MAAM,SAAS,SAAS,OAAO,KAAK,UAAU;AAAA,YAC9C,KAAK,QAAQ;AAAA,UACf;AAAA,QACF;AAAA,MACF;AACA;AAAA,IACF;AAAA,IACA,KAAK,OAAO;AACV,YAAM,QAAQ,MAAMC,mBAAkB,MAAM,EAAE,cAAc,KAAK,CAAC;AAClE,YAAM,MAAMC,kBAAiB,KAAK;AAElC,YAAM,qBAAqB,KAAK,aAAa,OAAO,aAAa;AAC/D,cAAM,SAAS,SAAS,WAAW,QAAQ,GAAG;AAC9C,cAAMF;AAAA,UACJ,MAAM,SAAS,SAAS,OAAO,KAAK,UAAU;AAAA,UAC9C,KAAK,QAAQ;AAAA,QACf;AAAA,MACF,CAAC;AACD;AAAA,IACF;AAAA,IACA,KAAK,OAAO;AACV,YAAM,MAAMG,sBAAqB,KAAK,GAAG;AACzC,YAAM,QAAQ,MAAMF,mBAAkB,MAAM,EAAE,cAAc,MAAM,CAAC;AAEnE,YAAM,qBAAqB,KAAK,aAAa,OAAO,aAAa;AAC/D,cAAM,SAAS,SAAS,IAAI,QAAQ,KAAK,KAAK;AAC9C,cAAMD;AAAA,UACJ,MAAM,SAAS,SAAS,OAAO,KAAK,UAAU;AAAA,UAC9C,KAAK,QAAQ;AAAA,QACf;AAAA,MACF,CAAC;AACD;AAAA,IACF;AAAA,IACA,KAAK;AACH,YAAM,qBAAqB,KAAK,aAAa,OAAO,aAAa;AAC/D,cAAM,SAAS,SAAS;AAAA,UACtB,KAAK;AAAA,UACLG,sBAAqB,KAAK,GAAG;AAAA,QAC/B;AACA,cAAMH;AAAA,UACJ,MAAM,SAAS,SAAS,OAAO,KAAK,UAAU;AAAA,UAC9C,KAAK,QAAQ;AAAA,QACf;AAAA,MACF,CAAC;AACD;AAAA,IACF,KAAK;AACH,YAAM,qBAAqB,KAAK,aAAa,OAAO,aAAa;AAC/D,cAAM,SAAS,SAAS,MAAM,KAAK,UAAU;AAC7C,cAAMA;AAAA,UACJ,MAAM,SAAS,SAAS,OAAO,KAAK,UAAU;AAAA,UAC9C,KAAK,QAAQ;AAAA,QACf;AAAA,MACF,CAAC;AACD;AAAA,EACJ;AACF;AAEA,eAAeC,mBACb,MACA,SACkB;AAClB,QAAM,MAAM,MAAMG,cAAa,IAAI;AAEnC,MAAI,KAAK,SAAS,QAAQ,QAAQ,cAAc;AAC9C,WAAOC,gBAAe,GAAG;AAAA,EAC3B;AAEA,SAAO;AACT;AAEA,eAAeD,cAAa,MAAmD;AAC7E,QAAM,UAAU;AAAA,IACd,KAAK,eAAe,SAAY,SAAY;AAAA,IAC5C,KAAK,cAAc,SAAY,SAAY;AAAA,IAC3C,KAAK,mBAAmB,SAAY,SAAY;AAAA,EAClD,EAAE,OAAO,CAAC,WAA6B,WAAW,MAAS;AAE3D,MAAI,QAAQ,SAAS,GAAG;AACtB,UAAM,IAAI,MAAM,iCAAiC,QAAQ,KAAK,IAAI,CAAC,GAAG;AAAA,EACxE;AACA,MAAI,KAAK,mBAAmB,QAAW;AACrC,WAAO,KAAK;AAAA,EACd;AACA,MAAI,KAAK,eAAe,QAAW;AACjC,WAAO,KAAK;AAAA,EACd;AACA,MAAI,KAAK,cAAc,KAAK;AAC1B,QAAI,UAAU;AACd,qBAAiB,SAAS,wBAAwB,GAAG;AACnD,iBAAW;AAAA,IACb;AACA,WAAO;AAAA,EACT;AACA,MAAI,KAAK,cAAc,QAAW;AAChC,WAAO,MAAMN,UAAS,KAAK,WAAW,MAAM;AAAA,EAC9C;AACA,QAAM,IAAI;AAAA,IACR;AAAA,EACF;AACF;AAEA,SAASI,kBAAiB,OAAmD;AAC3E,MAAI,UAAU,QAAQ,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK,GAAG;AACvE,UAAM,IAAI,MAAM,sCAAsC;AAAA,EACxD;AAEA,SAAO;AACT;AAEA,SAASG,gBAAe,KAAsB;AAC5C,MAAI;AACF,WAAO,KAAK,MAAM,GAAG;AAAA,EACvB,SAAS,OAAO;AACd,UAAM,IAAI;AAAA,MACR,uBAAuB,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA,IAC/E;AAAA,EACF;AACF;AAEA,SAASF,sBAAqB,KAAiC;AAC7D,QAAM,aAAa,KAAK,KAAK,KAAK;AAElC,MAAI,eAAe,IAAI;AACrB,UAAM,IAAI,MAAM,+BAA+B;AAAA,EACjD;AAEA,SAAO;AACT;AAEA,SAASH,kBACP,KACA,MACe;AACf,MAAI,MAAM;AACR,WAAO,kBAAkB,cAAc,GAAG,CAAC;AAAA,EAC7C;AAEA,SAAO,kBAAkB,mBAAmB,GAAG,CAAC;AAClD;AAEA,SAAS,mBAAmB,KAAgD;AAC1E,QAAM,QAAQ,OAAO,QAAQ,GAAG,EAAE;AAAA,IAChC,CAAC,CAAC,KAAK,KAAK,MAAM,GAAG,GAAG,KAAKM,yBAAwB,KAAK,CAAC;AAAA,EAC7D;AAEA,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO;AAAA,EACT;AAEA,SAAO,GAAG,MAAM,KAAK,IAAI,CAAC;AAAA;AAC5B;AAEA,SAASA,yBAAwB,OAAwB;AACvD,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAO,MAAM,IAAI,CAAC,SAAS,OAAO,IAAI,CAAC,EAAE,KAAK,GAAG;AAAA,EACnD;AAEA,SAAO,OAAO,KAAK;AACrB;AAEA,SAAS,0BAA0B,YAA0C;AAC3E,MAAI,eAAe,IAAI;AACrB,WAAO,EAAE,MAAM,mBAAmB,SAAS,WAAW;AAAA,EACxD;AAEA,QAAM,eAAe,qCAAqC,KAAK,UAAU;AACzE,MAAI,eAAe,CAAC,MAAM,QAAW;AACnC,WAAO;AAAA,MACL,WAAW,OAAO,aAAa,CAAC,CAAC;AAAA,MACjC,MAAM,mBAAmB;AAAA,MACzB;AAAA,IACF;AAAA,EACF;AAEA,QAAM,aAAa,0BAA0B,KAAK,UAAU;AAC5D,MAAI,aAAa,CAAC,MAAM,QAAW;AACjC,WAAO;AAAA,MACL,SAAS,OAAO,WAAW,CAAC,CAAC;AAAA,MAC7B,MAAM,mBAAmB;AAAA,MACzB;AAAA,IACF;AAAA,EACF;AAEA,QAAM,cAAc,4BAA4B,KAAK,UAAU;AAC/D,MAAI,cAAc,CAAC,MAAM,QAAW;AAClC,WAAO;AAAA,MACL,WAAW,YAAY,CAAC;AAAA,MACxB,MAAM,mBAAmB;AAAA,MACzB;AAAA,IACF;AAAA,EACF;AAEA,QAAM,cAAc,qDAAqD;AAAA,IACvE;AAAA,EACF;AACA,MAAI,cAAc,CAAC,MAAM,QAAW;AAClC,WAAO;AAAA,MACL,MAAM,mBAAmB;AAAA,MACzB;AAAA,MACA,iBAAiB,YAAY,CAAC;AAAA,MAC9B,iBAAiB,mBAAmB,YAAY,CAAC,CAAE;AAAA,MACnD,kBAAkB,YAAY,CAAC;AAAA,IACjC;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM,mBAAmB;AAAA,IACzB;AAAA,EACF;AACF;AA1OA;AAAA;AAAA;AAMA;AACA,IAAAC;AACA;AAIA;AAAA;AAAA;;;ACZA;AAAA,EACE;AAAA,EACA;AAAA,OAKK;AAeP,eAAsB,cACpB,OACA,SAIe;AACf,MAAI,UAAU;AACd,QAAM,SAAS,IAAI,qBAAqB;AAAA,IACtC,OAAO,QAAQ;AAAA,IACf,YAAY;AAAA,EACd,CAAC;AAED,MAAI,QAAQ,SAAS,OAAO;AAC1B,UAAM,MAAM,MAAM,YAAY,KAAK;AACnC,UAAM,SAAS,MAAM,mBAAmB,GAAG;AAE3C,cAAU,OAAO,GAAG,EAAE,GAAG,OAAO;AAAA,EAClC;AAEA,SAAO,MAAM;AACX,UAAM,MAAM,MAAM,YAAY,KAAK;AACnC,UAAM,UAAU,MAAM,mBAAmB,GAAG,GAAG;AAAA,MAC7C,CAAC,UAAU,MAAM,MAAM;AAAA,IACzB;AAEA,eAAW,SAAS,QAAQ;AAC1B,gBAAU,KAAK,IAAI,SAAS,MAAM,GAAG;AACrC,YAAM,OAAO,MAAM,uBAAuB,KAAK,CAAC;AAAA,IAClD;AAEA,QAAI,gBAAgB,IAAI,IAAI,KAAK,GAAG;AAClC;AAAA,IACF;AAEA,UAAM,MAAM,GAAK;AAAA,EACnB;AACF;AAEA,SAAS,uBAAuB,OAAsB;AACpD,UAAQ,MAAM,MAAM;AAAA,IAClB,KAAK,mBAAmB;AACtB,YAAM,eAAe,2BAA2B,MAAM,MAAM;AAC5D,aAAO;AAAA,QACL,UAAU,MAAM,SAAS,IAAI,qBAAqB;AAAA,QAClD,MAAM;AAAA,QACN,MAAM;AAAA,QACN,GAAI,iBAAiB,SAAY,CAAC,IAAI,EAAE,cAAc,CAAC,YAAY,EAAE;AAAA,QACrE,OAAO,MAAM,SAAS,0BAA0B,MAAM,IAAI;AAAA,MAC5D;AAAA,IACF;AAAA,IACA,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM,UAAU,MAAM,IAAI,OAAO,MAAM,EAAE;AAAA,MAC3C;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM,GAAG,MAAM,IAAI;AAAA,SAAoB,eAAe,MAAM,IAAI,CAAC;AAAA,MACnE;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM,GAAG,MAAM,IAAI;AAAA,MACrB;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AACE,aAAO;AAAA,QACL,MAAM;AAAA,QACN,MAAM;AAAA,QACN,MAAM,MAAM;AAAA,MACd;AAAA,EACJ;AACF;AAEA,SAAS,0BAA0B,MAA0C;AAC3E,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAEA,SAAS,eAAe,MAAsB;AAC5C,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAEA,SAAS,sBACP,SACiB;AACjB,SAAO;AAAA,IACL,MAAM,QAAQ;AAAA,IACd,MAAM,QAAQ;AAAA,IACd,OAAO,QAAQ;AAAA,IACf,MAAM,mBAAmB,QAAQ,IAAI;AAAA,EACvC;AACF;AAEA,SAAS,mBAAmB,MAAsB;AAChD,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAEA,SAAS,2BACP,QAIiC;AACjC,MAAI,WAAW,QAAW;AACxB,WAAO;AAAA,EACT;AAEA,QAAM,UAAU;AAAA,IACd,GAAI,OAAO,gBAAgB,SACvB,CAAC,IACD,CAAC,EAAE,MAAM,SAAS,OAAO,OAAO,YAAY,CAAC;AAAA,IACjD,GAAI,OAAO,oBAAoB,SAC3B,CAAC,IACD,CAAC,EAAE,MAAM,SAAS,OAAO,OAAO,gBAAgB,CAAC;AAAA,IACrD,GAAI,OAAO,iBAAiB,SACxB,CAAC,IACD,CAAC,EAAE,MAAM,UAAU,OAAO,OAAO,aAAa,CAAC;AAAA,EACrD;AAEA,SAAO,QAAQ,WAAW,IAAI,SAAY,EAAE,SAAS,MAAM,SAAS;AACtE;AAEA,eAAe,MAAM,IAA2B;AAC9C,QAAM,IAAI,QAAc,CAAC,iBAAiB;AACxC,eAAW,cAAc,EAAE;AAAA,EAC7B,CAAC;AACH;AAvMA,IAeM,iBAKA;AApBN;AAAA;AAAA;AASA;AAMA,IAAM,kBAAkB,oBAAI,IAAmB;AAAA,MAC7C;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AACD,IAAM,8BAA8B;AAAA;AAAA;;;ACpBpC,SAAS,sBAAsB;AAC/B,SAAS,0BAA0B;AACnC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAOA;AAAA,EACA;AAAA,OACK;AACP,SAAS,wBAAAC,6BAA4B;AAmDrC,eAAsB,iBAAgC;AACpD,QAAM,SAAS,MAAM,cAAc;AACnC,QAAM,aAAa,IAAI,gBAAgB;AACvC,QAAM,OAAO,MAAY,WAAW,MAAM;AAC1C,UAAQ,KAAK,UAAU,IAAI;AAC3B,UAAQ,KAAK,WAAW,IAAI;AAE5B,MAAI;AACF,UAAM,kBAAkB;AAAA,MACtB,aAAa,OAAO,YAAY,OAAO;AAAA,MACvC,YAAY,OAAO,KAAK,UAAU,YAAY;AAC5C,cAAM,gBAAgB,KAAK,UAAU,OAAO;AAAA,MAC9C;AAAA,MACA,QAAQ,WAAW;AAAA,IACrB,CAAC;AAAA,EACH,UAAE;AACA,YAAQ,eAAe,UAAU,IAAI;AACrC,YAAQ,eAAe,WAAW,IAAI;AAAA,EACxC;AACF;AAEA,eAAe,gBACb,KACA,UACA,SACe;AACf,QAAM;AAAA,IACJ;AAAA,MACE,cAAc,IAAI;AAAA,MAClB,WAAW;AAAA,IACb;AAAA,IACA,YAAY;AACV,YAAM,2BAA2B,KAAK,UAAU,OAAO;AAAA,IACzD;AAAA,EACF;AACF;AAEA,eAAe,2BACb,KACA,UACA,SACe;AACf,MAAI,2BAA2B,IAAI,MAAM,GAAG;AAC1C,UAAM,6BAA6B,KAAK,UAAU,OAAO;AACzD;AAAA,EACF;AAEA,QAAM,0BAA0B,KAAK,UAAU,OAAO;AACxD;AAEA,eAAe,0BACb,KACA,UACA,SACe;AACf,QAAM,SAAS,MAAM,wBAAwB;AAAA,IAC3C,GAAI,IAAI,YAAY,SAAY,CAAC,IAAI,EAAE,SAAS,IAAI,QAAQ;AAAA,EAC9D,CAAC;AACD,QAAM,MAAM,eAAe,QAAQ;AAAA,IACjC,gBAAgB,IAAI;AAAA,IACpB,cAAc,IAAI;AAAA,IAClB,kBAAkB,OAAO,UAAU;AACjC,YAAM,SAAS,oBAAoB,MAAM,gBAAgB;AAAA,IAC3D;AAAA,IACA,cAAc,OAAO,UAAU;AAC7B,YAAM,SAAS,cAAc;AAAA,QAC3B,GAAI,MAAM,oBAAoB,SAC1B,CAAC,IACD,EAAE,iBAAiB,MAAM,gBAAgB;AAAA,QAC7C,GAAI,MAAM,gBAAgB,SACtB,CAAC,IACD,EAAE,aAAa,MAAM,YAAY;AAAA,QACrC,GAAI,MAAM,iBAAiB,SACvB,CAAC,IACD,EAAE,cAAc,MAAM,aAAa;AAAA,MACzC,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AACD,QAAM,eAAe,IAAI,UAAU,OAAO;AAC1C,QAAM,mBAAmB,wBAAwB,YAAY;AAC7D,QAAM,6BACJ,kCAAkC,YAAY;AAChD,QAAM,UAAuC,OAC3C,UACA,OACA,eAEA,MAAM,IAAI,QAAQ,UAAU;AAAA,IAC1B,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,OAAO,eAAe;AAAA,IACtB,QAAQ,QAAQ;AAAA,EAClB,CAAC;AACH,UAAQ,OAAO,OACb,cACe,MAAM,IAAI,QAAQ,YAAY,MAAM,UAAU,OAAO,CAAC;AAEvE,QAAM,aAAa,MAAM,IAAIA,sBAAqB,IAAI,OAAO,EAAE;AAAA,IAC7D,OAAO,aAAa,MAAM,sBAAsB,UAAU,IAAI,SAAS;AAAA,EACzE;AACA,MAAI,EAAE,QAAQ,IAAI;AAClB,QAAM,EAAE,WAAW,IAAI;AACvB,QAAM,4BAA4B;AAAA,IAChC,iBAAiB,WAAW;AAAA,IAC5B,OAAO,IAAI;AAAA,IACX,SAAS,yBAAyB,GAAG;AAAA,EACvC,CAAC;AAED,QAAM,SAAS,UAAU;AAAA,IACvB,iBAAiB,QAAQ,UAAU,YAAY,QAAQ,QAAQ;AAAA,IAC/D,0BACE,QAAQ,UAAU,aAAa,QAAQ,UAAU,YAC7C,QAAQ,QACR;AAAA,EACR,CAAC;AAED,MAAI,QAAQ,UAAU,WAAW;AAC/B,UAAM,IAAI;AAAA,MACR,WAAW,IAAI,SAAS;AAAA,IAC1B;AAAA,EACF;AACA,MAAI,IAAI,WAAW,qBAAqB,IAAI,WAAW,iBAAiB;AACtE,UAAM,IAAIA,sBAAqB,IAAI,OAAO,EAAE;AAAA,MAC1C,OAAO,aAAa;AAClB,cAAM,WAAW,MAAM,SAAS,eAAe;AAAA,UAC7C,IAAI;AAAA,UACJ;AAAA,QACF;AACA,YAAI,UAAU,mBAAmB,WAAW,UAAU;AACpD,gBAAM,IAAI;AAAA,YACR,WAAW,IAAI,SAAS,sDAAsD,IAAI,MAAM;AAAA,UAC1F;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,MAAI,IAAI,WAAW,mBAAmB;AACpC,UAAM,YAAY,qCAAqC,MAAM;AAE7D,UAAM,SAAS,YAAY,iBAAiB;AAC5C,UAAM,sBAAsB,MAAM,IAAIA;AAAA,MACpC,IAAI;AAAA,IACN,EAAE,aAAa,OAAO,aAAa;AACjC,YAAM,gCAAgC,KAAK,QAAQ;AACnD,aAAO,MAAM,mCAAmC,UAAU,IAAI,SAAS;AAAA,IACzE,CAAC;AACD,UAAM,WAAW,MAAM;AAAA,MACrB,IAAI;AAAA,MACJ;AAAA,MACA;AAAA,QACE,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB;AAAA,QACA,iBAAiB;AAAA,UACf,cAAc,IAAI;AAAA,UAClB,YAAY,sCAAsC,EAAE,QAAQ,CAAC;AAAA,QAC/D;AAAA,QACA,WAAW;AAAA,UACT,GAAG;AAAA,UACH,GAAI,UAAU,aAAa,QACvB,EAAE,eAAe,2BAA2B,IAC5C,CAAC;AAAA,QACP;AAAA,QACA,WAAW,IAAI;AAAA,MACjB;AAAA,IACF;AAEA,UAAM,SAAS,YAAY;AAAA,MACzB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA,MACP,MAAM;AAAA,IACR,CAAC;AACD,UAAM,IAAIA,sBAAqB,IAAI,OAAO,EAAE,MAAM,OAAO,aAAa;AACpE,4BAAsB,MAAMD,aAAY,IAAI,KAAK,CAAC;AAClD,YAAM,gCAAgC,KAAK,QAAQ;AACnD,YAAM,oCAAoC,UAAU,QAAQ;AAAA,IAC9D,CAAC;AACD,UAAM,SAAS,YAAY;AAAA,MACzB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA,MACP,MAAM;AAAA,IACR,CAAC;AACD,UAAM,SAAS,cAAc,iBAAiB;AAC9C,0BAAsB,MAAMA,aAAY,IAAI,KAAK,CAAC;AAClD;AAAA,EACF;AACA,MAAI,QAAQ,UAAU,WAAW;AAC/B,QAAI,aAAa;AAEjB,UAAM,SAAS,YAAY,eAAe;AAC1C,UAAM,WAAW,MAAM,0BAA0B,IAAI,WAAW;AAAA,MAC9D;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW,IAAI;AAAA,MACf,iBAAiB;AAAA,QACf,MAAM,QAAQ,YAAY;AACxB,wBAAc;AACd,gBAAM,SAAS,YAAY,EAAE,WAAW,CAAC;AAAA,QAC3C;AAAA,QACA,MAAM,SAAS,iBAAiB;AAC9B,gBAAM,SAAS,YAAY;AAAA,YACzB,YAAY,mBAAmB,QAAQ;AAAA,UACzC,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AACD,UAAM,SAAS,YAAY;AAAA,MACzB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA,MACP,MAAM;AAAA,IACR,CAAC;AACD,cAAU,MAAM,IAAIC,sBAAqB,IAAI,OAAO,EAAE;AAAA,MACpD,OAAO,aAAa;AAClB,8BAAsB,MAAMD,aAAY,IAAI,KAAK,CAAC;AAClD,cAAM,gCAAgC,KAAK,QAAQ;AACnD,eAAO,MAAM,2BAA2B,UAAU,QAAQ;AAAA,MAC5D;AAAA,IACF;AACA,UAAM,SAAS,YAAY;AAAA,MACzB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA,MACP,MAAM;AAAA,IACR,CAAC;AACD,UAAM,iBAAiB,MAAM,IAAIC;AAAA,MAC/B,IAAI;AAAA,IACN,EAAE;AAAA,MACA,OAAO,aAAa,MAAM,sBAAsB,UAAU,IAAI,SAAS;AAAA,IACzE;AACA,cAAU,eAAe;AACzB,UAAM,4BAA4B;AAAA,MAChC,iBAAiB,eAAe;AAAA,MAChC,OAAO,IAAI;AAAA,MACX,SAAS,yBAAyB,GAAG;AAAA,IACvC,CAAC;AACD,UAAM,SAAS,YAAY,EAAE,YAAY,QAAQ,MAAM,CAAC;AACxD,UAAM,SAAS,cAAc,eAAe;AAAA,EAC9C;AAEA,QAAM,YAAY,MAAMD,aAAY,IAAI,KAAK;AAE7C,wBAAsB,SAAS;AAC/B,MAAI,UAAU,WAAW,mBAAmB,QAAQ,UAAU,cAAc;AAC1E;AAAA,EACF;AACA,MAAI,QAAQ,UAAU,WAAW;AAC/B,KAAC,EAAE,QAAQ,IAAI,MAAM,IAAIC,sBAAqB,IAAI,OAAO,EAAE;AAAA,MACzD,OAAO,aAAa,MAAM,sBAAsB,UAAU,IAAI,SAAS;AAAA,IACzE;AAAA,EACF;AACA,MAAI,QAAQ,UAAU,WAAW;AAC/B,UAAM,IAAI;AAAA,MACR,WAAW,IAAI,SAAS,OAAO,QAAQ,KAAK;AAAA,IAC9C;AAAA,EACF;AAEA,QAAM,SAAS,YAAY,iBAAiB;AAC5C,QAAM,eAAe,MAAM,IAAIA,sBAAqB,IAAI,OAAO,EAAE;AAAA,IAC/D,OAAO,aAAa;AAClB,YAAM,gCAAgC,KAAK,QAAQ;AACnD,aAAO,MAAM;AAAA,QACX;AAAA,QACA,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,IACF;AAAA,EACF;AACA,QAAM,UAAU,MAAM,wCAAwC,IAAI,WAAW;AAAA,IAC3E;AAAA,IACA,cAAc,aAAa;AAAA,IAC3B,WAAW,IAAI;AAAA,EACjB,CAAC;AACD,QAAM,SAAS,YAAY;AAAA,IACzB,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,EACR,CAAC;AACD,YAAU,MAAM,IAAIA,sBAAqB,IAAI,OAAO,EAAE;AAAA,IACpD,OAAO,aAAa;AAClB,4BAAsB,MAAMD,aAAY,IAAI,KAAK,CAAC;AAClD,YAAM,gCAAgC,KAAK,QAAQ;AACnD,aAAO,MAAM;AAAA,QACX;AAAA,QACA,IAAI;AAAA,QACJ;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,QAAM,SAAS,YAAY;AAAA,IACzB,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,EACR,CAAC;AACD,QAAM,SAAS,YAAY,EAAE,qBAAqB,QAAQ,MAAM,CAAC;AACjE,QAAM,SAAS,cAAc,iBAAiB;AAC9C,wBAAsB,MAAMA,aAAY,IAAI,KAAK,CAAC;AACpD;AAEA,eAAe,6BACb,KACA,UACA,SACe;AACf,QAAM,SAAS,YAAY,IAAI,MAAM;AACrC,QAAM,WAAW,MAAM,6BAA6B,GAAG;AACvD,QAAM,4BAA4B;AAAA,IAChC,iBAAiB,SAAS;AAAA,IAC1B,OAAO,IAAI;AAAA,IACX,SAAS,yBAAyB,GAAG;AAAA,EACvC,CAAC;AACD,QAAM,SAAS,YAAY;AAAA,IACzB,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,EACR,CAAC;AAED,MAAI,IAAI,WAAW,aAAa;AAC9B,UAAME,cAAa,MAAM,+BAA+B,GAAG;AAC3D,UAAM;AAAA,MACJA;AAAA,MACA,4BAA4B;AAAA,QAC1B,eAAe,SAAS;AAAA,QACxB,QAAQ,SAAS;AAAA,QACjB,UAAU,SAAS;AAAA,QACnB,WAAW,SAAS;AAAA,QACpB,UAAU,IAAI;AAAA,QACd,gBAAgB,SAAS;AAAA,QACzB,kBAAkB,SAAS;AAAA,MAC7B,CAAC;AAAA,IACH;AACA,UAAMC,YAAW,MAAM,wBAAwBD,WAAU;AAEzD,wCAAoC,KAAK,SAAS,UAAUC,SAAQ;AACpE,QAAI,EAAE,iBAAiBA,YAAW;AAChC,YAAM,IAAI,MAAM,+CAA+C;AAAA,IACjE;AACA,UAAM,IAAIF,sBAAqB,IAAI,OAAO,EAAE,MAAM,OAAO,aAAa;AACpE,4BAAsB,MAAMD,aAAY,IAAI,KAAK,CAAC;AAClD,YAAM,uBAAuB,UAAU,IAAI,SAAS;AACpD,YAAM,gCAAgC,KAAK,QAAQ;AACnD,YAAM,SAAS,eAAe,WAAWG,SAAQ;AAAA,IACnD,CAAC;AACD,UAAM,0BAA0B,KAAK,QAAQ;AAC7C;AAAA,EACF;AAEA,QAAM,SAAS,MAAM,cAAc;AACnC,MAAI,OAAO,cAAc,QAAW;AAClC,UAAM,IAAI;AAAA,MACR;AAAA,QACE;AAAA,QACA,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AACA,QAAM,aAAa,MAAM,+BAA+B,GAAG;AAC3D,QAAM,WAAW,MAAM,kCAAkC;AAAA,IACvD,mBAAmB,kCAAkC,OAAO,SAAS;AAAA,IACrE,MACE,IAAI,WAAW,2BACX,qBACA;AAAA,IACN,WAAW,SAAS;AAAA,IACpB,UAAU,IAAI;AAAA,IACd,QAAQ,QAAQ;AAAA,IAChB,gBAAgB,SAAS;AAAA,EAC3B,CAAC;AACD,QAAM,yBAAyB,YAAY,QAAQ;AACnD,QAAM,SAAS,MAAM,wBAAwB,UAAU;AAEvD,sCAAoC,KAAK,SAAS,UAAU,MAAM;AAClE,MAAI,iBAAiB,QAAQ;AAC3B,UAAM,IAAI,MAAM,qDAAqD;AAAA,EACvE;AAEA,QAAM,IAAIF,sBAAqB,IAAI,OAAO,EAAE,MAAM,OAAO,aAAa;AACpE,0BAAsB,MAAMD,aAAY,IAAI,KAAK,CAAC;AAClD,UAAM,uBAAuB,UAAU,IAAI,SAAS;AACpD,UAAM,gCAAgC,KAAK,QAAQ;AACnD,UAAM,SAAS,eAAe,iBAAiB,MAAM;AAAA,EACvD,CAAC;AACD,QAAM,0BAA0B,KAAK,QAAQ;AAC/C;AAEA,eAAe,0BACb,KACA,UACe;AACf,QAAM,SAAS,YAAY;AAAA,IACzB,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,EACR,CAAC;AACD,QAAM,SAAS,cAAc,IAAI,MAAM;AACvC,wBAAsB,MAAMA,aAAY,IAAI,KAAK,CAAC;AACpD;AAEA,eAAe,6BACb,KACmC;AACnC,SAAO,MAAM,IAAIC,sBAAqB,IAAI,OAAO,EAAE;AAAA,IACjD,OAAO,aAAa;AAClB,YAAM,uBAAuB,UAAU,IAAI,SAAS;AACpD,YAAM,WAAW,MAAM,SAAS,QAAQ,YAAY,IAAI,SAAS;AACjE,YAAM,SACJ,IAAI,WAAW,4BACX,SAAS,oBAAoB,IAAI,SAAS,IAC1C,SAAS,mBAAmB,IAAI,SAAS;AAC/C,UAAI,IAAI,WAAW,2BAA2B;AAC5C,cAAM,UAAU,MAAM,SAAS,YAAY,IAAI,SAAS;AACxD,YAAI,YAAY,UAAa,QAAQ,KAAK,MAAM,IAAI;AAClD,gBAAM,IAAI;AAAA,YACR,WAAW,IAAI,SAAS;AAAA,UAC1B;AAAA,QACF;AAAA,MACF;AAEA,UAAI,OAAO,kBAAkB,QAAW;AACtC,cAAM,IAAI,MAAM,+CAA+C;AAAA,MACjE;AAEA,YAAM,YAAY,MAAM,OAAO,cAAc;AAC7C,UAAI,IAAI,WAAW,aAAa;AAC9B,eAAO;AAAA,UACL,eAAe,CAAC;AAAA,UAChB,QAAQ,CAAC;AAAA,UACT,UAAU,CAAC;AAAA,UACX;AAAA,UACA;AAAA,UACA,kBAAkB,CAAC;AAAA,QACrB;AAAA,MACF;AAEA,aAAO;AAAA,QACL,eAAe,MAAM,kBAAkB,UAAU,IAAI,SAAS;AAAA,QAC9D,QAAQ,MAAM,SAAS,OAAO,aAAa,IAAI,SAAS;AAAA,QACxD,UAAU,MAAM,SAAS,SAAS,cAAc,IAAI,SAAS;AAAA,QAC7D;AAAA,QACA;AAAA,QACA,kBAAkB,MAAM;AAAA,UACtB,SAAS,oBAAoB,IAAI,SAAS;AAAA,QAC5C;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,eAAe,wBAAwB,QAEA;AACrC,MAAI,OAAO,kBAAkB,QAAW;AACtC,UAAM,IAAI,MAAM,+CAA+C;AAAA,EACjE;AAEA,SAAO,MAAM,OAAO,cAAc;AACpC;AAEA,eAAe,kBACb,UACA,UACqE;AACrE,QAAM,SAAS;AAKf,QAAM,MAAM,MAAM,OAAO,UAAU;AACnC,MAAI,QAAQ,QAAW;AACrB,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,UAAU,gBAAgB,IAAI,KAAK,EAAE;AAAA,IACzC,CAAC,SAAS,KAAK,aAAa;AAAA,EAC9B;AACA,MAAI,YAAY,UAAa,OAAO,QAAQ,UAAU,UAAU;AAC9D,WAAO,CAAC;AAAA,EACV;AAEA,SAAO,CAAC,EAAE,IAAI,UAAU,OAAO,QAAQ,MAAM,CAAC;AAChD;AAEA,SAAS,gBACP,OAC4C;AAC5C,SAAO,MAAM,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,gBAAgB,KAAK,QAAQ,CAAC,CAAC;AAC1E;AAEA,eAAe,+BAA+B,KAA8B;AAC1E,SAAO,MAAM,mBAAmB,IAAI,WAAW,6BAA6B;AAC9E;AAEA,SAAS,oCACP,KACA,eACA,UACM;AACN,MAAI,SAAS,aAAa,IAAI,WAAW;AACvC,UAAM,IAAI;AAAA,MACR,yCAAyC,SAAS,QAAQ,sBAAsB,IAAI,SAAS;AAAA,IAC/F;AAAA,EACF;AACA,MAAI,SAAS,mBAAmB,eAAe;AAC7C,UAAM,IAAI;AAAA,MACR,gDAAgD,SAAS,cAAc,uBAAuB,aAAa;AAAA,IAC7G;AAAA,EACF;AAEA,MAAI,IAAI,WAAW,aAAa;AAC9B,QAAI,iBAAiB,UAAU;AAC7B;AAAA,IACF;AAEA,UAAM,IAAI,MAAM,+CAA+C;AAAA,EACjE;AACA,MAAI,iBAAiB,UAAU;AAC7B,UAAM,IAAI,MAAM,qDAAqD;AAAA,EACvE;AAEA,QAAM,eACJ,IAAI,WAAW,2BACX,qBACA;AAEN,MAAI,SAAS,SAAS,cAAc;AAClC;AAAA,EACF;AAEA,QAAM,IAAI;AAAA,IACR,8BAA8B,SAAS,IAAI,mBAAmB,IAAI,MAAM;AAAA,EAC1E;AACF;AAEA,eAAe,uBACb,UACA,WACe;AACf,MAAK,MAAM,SAAS,QAAQ,QAAQ,SAAS,MAAO,QAAW;AAC7D;AAAA,EACF;AAEA,QAAM,IAAI;AAAA,IACR,WAAW,SAAS;AAAA,EACtB;AACF;AAEO,SAAS,qCACd,QACqC;AACrC,MAAI,OAAO,WAAW,aAAa,QAAW;AAC5C,WAAO,OAAO;AAAA,EAChB;AAEA,QAAM,IAAI;AAAA,IACR;AAAA,MACE;AAAA,QACE;AAAA,QACA;AAAA,MACF,EAAE,KAAK,GAAG;AAAA,MACV,gBAAgB;AAAA,IAClB;AAAA,EACF;AACF;AAEA,SAAS,2BAA2B,QAAqC;AACvE,SACE,WAAW,eACX,WAAW,4BACX,WAAW;AAEf;AAEA,SAAS,sBAAsB,KAAqB;AAClD,MAAI,IAAI,UAAU,WAAW;AAC3B,UAAM,IAAI,MAAM,OAAO,IAAI,KAAK,OAAO,IAAI,KAAK,yBAAyB;AAAA,EAC3E;AACF;AAEA,eAAe,gCACb,KACA,UAKe;AACf,QAAM,4BAA4B;AAAA,IAChC,iBAAiB,MAAM,SAAS,QAAQ,YAAY,IAAI,SAAS;AAAA,IACjE,OAAO,IAAI;AAAA,IACX,SAAS,yBAAyB,GAAG;AAAA,EACvC,CAAC;AACH;AAEA,SAAS,yBAAyB,KAAuB;AACvD,MAAI,IAAI,YAAY,QAAW;AAC7B,UAAM,IAAI,MAAM,OAAO,IAAI,KAAK,+BAA+B;AAAA,EACjE;AAEA,SAAO,IAAI;AACb;AA9qBA;AAAA;AAAA;AAqCA;AACA;AAOA;AACA;AACA;AAAA;AAAA;;;AC/CA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA,2BAAAG;AAAA,EACA,6BAAAC;AAAA,EACA,eAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA,8BAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,wBAAAC;AAAA,OACK;AAuBP,eAAsB,gBAAgB,MAAwC;AAC5E,UAAQ,KAAK,QAAQ;AAAA,IACnB,KAAK,OAAO;AACV,YAAM,aAAa,MAAM,uBAAuB,IAAI;AACpD,YAAM,kBACJ,YAAY,WAAW,IAAI,WAAW,CAAC,IAAK;AAC9C,UAAI,oBAAoB,QAAW;AACjC,cAAM,oBAAoB,MAAM,eAAe;AAAA,MACjD;AACA,YAAM,SAAS,KAAK,UAAU;AAC9B,UAAI,WAAW,aAAa;AAC1B,gCAAwB,IAAI;AAAA,MAC9B;AACA,YAAM,SAAS,kBAAkB,MAAM,IACnC,MAAM,wBAAwB;AAAA,QAC5B,GAAI,KAAK,YAAY,SAAY,CAAC,IAAI,EAAE,SAAS,KAAK,QAAQ;AAAA,MAChE,CAAC,IACD,MAAM,cAAc;AAAA,QAClB,GAAI,KAAK,YAAY,SAAY,CAAC,IAAI,EAAE,SAAS,KAAK,QAAQ;AAAA,MAChE,CAAC;AACL,WACG,WAAW,4BACV,WAAW,8BACb,OAAO,cAAc,QACrB;AACA,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAAA,MACF;AACA,UAAI,KAAK,WAAW,mBAAmB;AACrC,6CAAqC,MAAM;AAAA,MAC7C;AAEA,UAAI,eAAe,QAAW;AAC5B,cAAM,eAAe,MAAM,MAAM;AAAA,MACnC,WAAW,WAAW,WAAW,GAAG;AAClC,cAAM,YAAY,WAAW,CAAC;AAC9B,cAAM,UAAU,MAAM,oBAAoB,MAAM,SAAS;AACzD,cAAM,WAAW,uBAAuB;AAAA,UACtC,UAAU,CAAC,OAAO;AAAA,UAClB;AAAA,UACA,QAAQ,KAAK,UAAU;AAAA,QACzB,CAAC;AAED,cAAM,gBAAgB,MAAM,cAAc,MAAM,SAAS,GAAG;AAAA,UAC1D;AAAA,UACA;AAAA,UACA,MAAM,KAAK,QAAQ;AAAA,UACnB,OAAO;AAAA,QACT,CAAC;AAAA,MACH,OAAO;AACL,cAAM,eAAe,EAAE,GAAG,MAAM,WAAW,GAAG,MAAM;AAAA,MACtD;AAEA,0BAAoB;AACpB;AAAA,IACF;AAAA,IACA,KAAK;AACH,YAAM;AAAA,QACJ,MAAM,cAAc;AAAA,UAClB,GAAI,KAAK,eAAe,SACpB,CAAC,IACD,EAAE,YAAY,KAAK,WAAW;AAAA,UAClC,GAAI,KAAK,QAAQ,SAAY,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI;AAAA,UAClD,GAAI,KAAK,gBAAgB,SACrB,CAAC,IACD,EAAE,SAAS,IAAI,SAAS,KAAK,WAAW,EAAE;AAAA,QAChD,CAAC;AAAA,QACD,EAAE,MAAM,KAAK,QAAQ,MAAM;AAAA,MAC7B;AACA;AAAA,IACF,KAAK;AACH,YAAM,eAAe,MAAMF,aAAY,MAAM,kBAAkB,IAAI,CAAC,GAAG;AAAA,QACrE,MAAM,KAAK,QAAQ;AAAA,MACrB,CAAC;AACD;AAAA,IACF,KAAK;AACH,YAAM,cAAc,MAAM,kBAAkB,IAAI,GAAG;AAAA,QACjD,MAAM,KAAK,QAAQ;AAAA,QACnB,OAAO,KAAK,SAAS,CAAC,QAAQ,OAAO;AAAA,MACvC,CAAC;AACD;AAAA,IACF,KAAK;AACH,YAAM,gBAAgB,MAAM,cAAc,MAAM,kBAAkB,IAAI,CAAC,CAAC;AACxE;AAAA,IACF,KAAK;AACH,YAAM;AAAA,QACJ,MAAM,eAAe,MAAM,kBAAkB,IAAI,CAAC;AAAA,MACpD;AACA,0BAAoB;AACpB;AAAA,IACF,KAAK;AACH,YAAM;AAAA,QACJ,MAAM,eAAe,MAAM,kBAAkB,IAAI,CAAC;AAAA,MACpD;AACA;AAAA,IACF,KAAK;AACH,YAAM,gBAAgB,MAAM,cAAc,MAAM,kBAAkB,IAAI,CAAC,CAAC;AACxE,0BAAoB;AACpB;AAAA,IACF,KAAK;AACH,YAAM;AAAA,QACJ,MAAM;AAAA,UACJ,MAAM,kBAAkB,IAAI;AAAA,UAC5B,KAAK,UAAU;AAAA,QACjB;AAAA,MACF;AACA,0BAAoB;AACpB;AAAA,IACF,KAAK;AACH,YAAM,kBAAkB,WAAW,MAAM,eAAe,CAAC;AAAA,CAAU;AACnE;AAAA,EACJ;AACF;AAEA,SAAS,kBAAkB,QAAkD;AAC3E,SACE,WAAW,qBACX,WAAW,mBACX,WAAW;AAEf;AAEA,eAAe,kBAAkB,MAA0C;AACzE,SAAO,MAAM,kBAAkB,KAAK,KAAM;AAC5C;AAEA,eAAe,uBACb,MACwC;AACxC,MAAI,KAAK,cAAc,QAAW;AAChC,WAAO,CAAC,KAAK,SAAS;AAAA,EACxB;AACA,MAAI,KAAK,gBAAgB,UAAa,KAAK,UAAU,QAAW;AAC9D,WAAO;AAAA,EACT;AAEA,MAAI;AACJ,QAAM,IAAIE,sBAAqB,IAAI,SAAS,KAAK,WAAY,CAAC,EAAE;AAAA,IAC9D,OAAO,aAAa;AAClB,UAAI,KAAK,gBAAgB,QAAW;AAClC,sBACE,MAAM,2BAA2B,UAAU;AAAA,UACzC,aAAaH;AAAA,YACX,KAAK;AAAA,YACL;AAAA,UACF;AAAA,UACA,GAAI,KAAK,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM;AAAA,QAC1D,CAAC,IACA;AACH;AAAA,MACF;AACA,oBACE,MAAM,2BAA2B,UAAU;AAAA,QACzC,aAAaD;AAAA,UACX,KAAK;AAAA,UACL,KAAK;AAAA,QACP;AAAA,QACA,GAAI,KAAK,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM;AAAA,MAC1D,CAAC,IACA,cAAc;AAAA,QACf,MAAMG,4BAA2B,UAAU,KAAK,WAAW;AAAA,MAC7D;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AA3MA;AAAA;AAAA;AAiBA;AACA;AACA;AACA;AAQA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;;;ACnCA,cAAc;;;ACEd;AAFA,SAAS,YAAAE,WAAU,YAAAC,iBAAgB;;;ACSnC;AACA;AACA;AAXA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,iBAAiB;AAE1B,SAAS,kBAAkB,uBAAAC,4BAA2B;;;ACPtD;AAAA,EACE;AAAA,OAGK;;;ACAA,SAAS,4BACd,WACkC;AAClC,MAAI,CAAC,UAAU,WAAW,gBAAgB,GAAG;AAC3C,WAAO;AAAA,EACT;AAEA,SAAO,yBAAyB,UAAU,MAAM,UAAU,MAAM,CAAC;AACnE;AAEO,SAAS,yBACd,QACkC;AAClC,QAAM,QAAQ,OAAO,MAAM,GAAG;AAE9B,MAAI,MAAM,CAAC,MAAM,YAAY,MAAM,SAAS,KAAK,MAAM,SAAS,GAAG;AACjE,WAAO;AAAA,EACT;AAEA,QAAM,CAAC,UAAU,KAAK,YAAY,KAAK,SAAS,GAAG,IAAI,MAAM,MAAM,CAAC;AACpE,QAAM,iBAAiB,MAAM,MAAM,CAAC,EAAE,SAAS,GAAG;AAClD,QAAM,gCAAgC,MAAM,SAAS;AAErD,MAAI,CAAC,kBAAkB,CAAC,+BAA+B;AACrD,WAAO;AAAA,EACT;AAEA,MACE,CAAC,0BAA0B,OAAO,KAClC,CAAC,gCAAgC,SAAS,KAC1C,CAAC,0BAA0B,MAAM,GACjC;AACA,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,GAAI,WAAW,MAAM,CAAC,IAAI,EAAE,WAAW,OAAO;AAAA,IAC9C,GAAI,cAAc,MAAM,CAAC,IAAI,EAAE,WAAW,mBAAmB,SAAS,EAAE;AAAA,IACxE,GAAI,YAAY,MAAM,CAAC,IAAI,EAAE,YAAY,QAAQ;AAAA,EACnD;AACF;AAEO,SAAS,kBAAkB,MAAuB;AACvD,MAAI,SAAS,YAAY,kCAAkC,KAAK,IAAI,GAAG;AACrE,WAAO;AAAA,EACT;AAEA,QAAM,SAAS,KAAK,WAAW,UAAU,IACrC,gCAAgC,KAAK,IAAI,IAAI,CAAC,IAC9C;AAEJ,SAAO,WAAW,SACd,QACA,yBAAyB,MAAM,MAAM;AAC3C;AAEA,SAAS,0BAA0B,OAAwB;AACzD,SAAO,UAAU,OAAO,kBAAkB,KAAK,KAAK;AACtD;AAEA,SAAS,gCAAgC,OAAwB;AAC/D,SAAO,UAAU,OAAQ,UAAU,MAAM,CAAC,MAAM,SAAS,GAAG;AAC9D;AAEO,SAAS,6BACd,WAC4B;AAC5B,UAAQ,WAAW;AAAA,IACjB,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;;;AD/BO,SAAS,mBACd,WAC8B;AAC9B,MAAI,cAAc,kBAAkB;AAClC,WAAO,EAAE,MAAM,aAAa;AAAA,EAC9B;AAEA,MAAI,cAAc,uBAAuB;AACvC,WAAO,EAAE,MAAM,OAAO;AAAA,EACxB;AAEA,QAAM,cAAc,6BAA6B,SAAS;AAC1D,MAAI,gBAAgB,QAAW;AAC7B,WAAO,EAAE,MAAM,QAAQ,MAAM,YAAY;AAAA,EAC3C;AAEA,QAAM,uBAAuB,4BAA4B,SAAS;AAClE,MAAI,yBAAyB,QAAW;AACtC,WAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,EACF;AAEA,QAAM,QAAQ,4BAA4B,KAAK,SAAS;AAExD,MAAI,QAAQ,CAAC,MAAM,QAAW;AAC5B,WAAO;AAAA,EACT;AAEA,QAAM,SAAS,0BAA0B,MAAM,CAAC,CAAC;AACjD,MAAI,WAAW,QAAW;AACxB,WAAO;AAAA,EACT;AACA,QAAM,EAAE,aAAa,OAAO,IAAI;AAChC,QAAM,uBACJ,WAAW,SAAY,SAAY,yBAAyB,MAAM;AAEpE,MAAI,yBAAyB,QAAW;AACtC,WAAO;AAAA,MACL;AAAA,MACA,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,EACF;AAEA,QAAM,qBAAqB,wBAAwB,MAAM;AAEzD,MAAI,uBAAuB,QAAW;AACpC,WAAO;AAAA,MACL;AAAA,MACA,MAAM;AAAA,MACN,GAAI,uBAAuB,QAAQ,CAAC,IAAI,EAAE,QAAQ,mBAAmB;AAAA,IACvE;AAAA,EACF;AAEA,QAAM,oBAAoB,gCAAgC,MAAM;AAEhE,MAAI,sBAAsB,QAAW;AACnC,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,MAAM;AAAA,IACR;AAAA,EACF;AAEA,MAAI,WAAW,mBAAmB;AAChC,WAAO,EAAE,aAAa,MAAM,uBAAuB;AAAA,EACrD;AAEA,QAAM,WAAW,2BAA2B,MAAM;AAElD,MAAI,WAAW,UAAa,aAAa,QAAW;AAClD,WAAO;AAAA,EACT;AAEA,MAAI,aAAa,QAAW;AAC1B,WAAO,EAAE,aAAa,MAAM,UAAU;AAAA,EACxC;AACA,MAAI,aAAa,SAAS;AACxB,WAAO,EAAE,aAAa,MAAM,gBAAgB;AAAA,EAC9C;AACA,MAAI,aAAa,WAAW,aAAa,YAAY,aAAa,UAAU;AAC1E,WAAO,EAAE,aAAa,MAAM,gBAAgB,MAAM,SAAS;AAAA,EAC7D;AACA,MAAI,aAAa,YAAY,aAAa,WAAW;AACnD,WAAO,EAAE,aAAa,MAAM,oBAAoB,SAAS;AAAA,EAC3D;AAEA,SAAO,EAAE,aAAa,MAAM,oBAAoB,SAAS;AAC3D;AAEA,SAAS,0BACP,OACwE;AACxE,QAAM,sBAAsB,MAAM,QAAQ,SAAS,EAAE;AACrD,QAAM,QAAQ,oBAAoB,QAAQ,SAAS,EAAE,EAAE,MAAM,GAAG;AAChE,QAAM,cAAc,MAAM;AAAA,IAAU,CAAC,SACnC;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE,SAAS,IAAI;AAAA,EACjB;AACA,QAAM,YAAY,gBAAgB,KAAK,QAAQ,MAAM,MAAM,GAAG,WAAW;AACzE,QAAM,cAAc,gBAAgB,KAAK,CAAC,IAAI,MAAM,MAAM,WAAW;AAErE,QAAM,cAAc,iBAAiB,UAAU,KAAK,GAAG,GAAG,aAAa;AACvE,SAAO;AAAA,IACL;AAAA,IACA,GAAI,YAAY,WAAW,IAAI,CAAC,IAAI,EAAE,QAAQ,YAAY,KAAK,GAAG,EAAE;AAAA,EACtE;AACF;AAEA,SAAS,gCACP,QAC+B;AAC/B,UAAQ,QAAQ;AAAA,IACd,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAEA,SAAS,wBACP,QAC2C;AAC3C,MAAI,WAAW,SAAS;AACtB,WAAO;AAAA,EACT;AAEA,UAAQ,QAAQ;AAAA,IACd,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAEA,SAAS,2BACP,QASY;AACZ,UAAQ,QAAQ;AAAA,IACd,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;;;ADnNO,IAAM,cAAc;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAmEA,IAAM,mBAA6C;AAAA,EACjD;AAAA,IACE,MAAM;AAAA,IACN,YAAY,CAAC,UAAU,UAAU,SAAS;AAAA,EAC5C;AAAA,EACA,EAAE,MAAM,mBAAmB,YAAY,CAAC,EAAE;AAAA,EAC1C;AAAA,IACE,MAAM;AAAA,IACN,YAAY,CAAC,KAAK;AAAA,EACpB;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,YAAY,CAAC,QAAQ,UAAU,OAAO;AAAA,EACxC;AAAA,EACA,EAAE,MAAM,+BAA+B,YAAY,CAAC,EAAE;AAAA,EACtD,EAAE,MAAM,gCAAgC,YAAY,CAAC,EAAE;AAAA,EACvD,EAAE,MAAM,yBAAyB,YAAY,CAAC,KAAK,EAAE;AAAA,EACrD,EAAE,MAAM,gCAAgC,YAAY,CAAC,EAAE;AAAA,EACvD,EAAE,MAAM,0BAA0B,YAAY,CAAC,KAAK,EAAE;AAAA,EACtD,EAAE,MAAM,wBAAwB,YAAY,CAAC,SAAS,KAAK,EAAE;AAAA,EAC7D,EAAE,MAAM,uBAAuB,YAAY,CAAC,KAAK,EAAE;AAAA,EACnD,EAAE,MAAM,wBAAwB,YAAY,CAAC,EAAE;AAAA,EAC/C,EAAE,MAAM,0BAA0B,YAAY,CAAC,SAAS,QAAQ,EAAE;AAAA,EAClE,EAAE,MAAM,eAAe,YAAY,CAAC,EAAE;AAAA,EACtC,EAAE,MAAM,gBAAgB,YAAY,CAAC,YAAY,QAAQ,SAAS,EAAE;AAAA,EACpE,EAAE,MAAM,gBAAgB,YAAY,CAAC,EAAE;AAAA,EACvC;AAAA,IACE,MAAM;AAAA,IACN,YAAY,CAAC;AAAA,EACf;AAAA,EACA,EAAE,MAAM,iBAAiB,YAAY,CAAC,YAAY,QAAQ,SAAS,EAAE;AAAA,EACrE,EAAE,MAAM,0BAA0B,YAAY,CAAC,EAAE;AAAA,EACjD;AAAA,IACE,MAAM;AAAA,IACN,YAAY,CAAC,SAAS,MAAM;AAAA,EAC9B;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,YAAY,CAAC,OAAO,OAAO;AAAA,EAC7B;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,YAAY,CAAC,SAAS,UAAU,SAAS,UAAU,OAAO;AAAA,EAC5D;AAAA,EACA,EAAE,MAAM,qBAAqB,YAAY,CAAC,KAAK,EAAE;AAAA,EACjD;AAAA,IACE,MAAM;AAAA,IACN,YAAY,CAAC;AAAA,EACf;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,YAAY,CAAC,SAAS,UAAU,OAAO,OAAO,MAAM;AAAA,EACtD;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,YAAY,CAAC,SAAS,UAAU,OAAO,KAAK;AAAA,EAC9C;AAAA,EACA,EAAE,MAAM,kBAAkB,YAAY,CAAC,EAAE;AAAA,EACzC,EAAE,MAAM,gBAAgB,YAAY,CAAC,EAAE;AAAA,EACvC,EAAE,MAAM,iBAAiB,YAAY,CAAC,UAAU,EAAE;AACpD;AAEA,IAAM,yBAAyB,IAAI;AAAA,EACjC,iBAAiB,IAAI,CAAC,WAAW,CAAC,OAAO,MAAM,MAAM,CAAC;AACxD;AAkBA,IAAM,sBAIA;AAAA,EACJ;AAAA,IACE,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,SACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,SACE;AAAA,EACJ;AACF;AAEA,IAAM,uCAGA;AAAA,EACJ;AAAA,IACE,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AACF;AAEA,IAAM,4BAAiE;AAAA,EACrE,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,mBAAmB;AAAA,EACnB,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,SAAS;AACX;AAEA,IAAI;AAEG,SAAS,qBAA6B;AAC3C,SAAO,mBAAmB,oBAAoB;AAChD;AAEO,SAAS,0BAAkC;AAChD,SAAO,mBAAmB,yBAAyB;AACrD;AAEO,SAAS,0BAAkC;AAChD,SAAO,mBAAmB,kBAAkB;AAC9C;AAEO,SAAS,4BAA4B,QAA4B;AACtE,SAAO;AAAA,IACL,WAAW,SACP,yBACA,wBAAwB,MAAM;AAAA,EACpC;AACF;AAEO,SAAS,iCAAiC,QAA4B;AAC3E,SAAO;AAAA,IACL,WAAW,SACP,8BACA,6BAA6B,MAAM;AAAA,EACzC;AACF;AAEO,SAAS,6BAA6B,QAAkC;AAC7E,SAAO,mBAAmB,yBAAyB,MAAM,EAAE;AAC7D;AAEO,SAAS,oBAAoB,OAA0B;AAC5D,SAAO,mBAAmB,0BAA0B,KAAK,CAAC;AAC5D;AAEO,SAAS,kBACd,YACA,KACQ;AACR,SAAO,mBAAmB,qBAAqB;AAAA,IAC7C,YAAY;AAAA,IACZ,gBAAgB,sBAAsB,GAAG;AAAA,IACzC,QAAQ,qBAAqB,UAAU;AAAA,IACvC,YAAY,kBAAkB,GAAG;AAAA,IACjC,KAAK,qBAAqB,GAAG;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,2BACd,YACA,WACA,KACQ;AACR,QAAM,SAAS,qBAAqB,UAAU;AAE9C,MAAI,CAAC,OAAO,WAAW,SAAS,SAAS,GAAG;AAC1C,UAAM,IAAI;AAAA,MACR;AAAA,QACE,kBAAkB,GAAG,uBAAuB,SAAS;AAAA,QACrD,iBAAiB,CAAC,KAAK,QAAQ,CAAC;AAAA,MAClC;AAAA,IACF;AAAA,EACF;AAEA,SAAO,mBAAmB,2BAA2B;AAAA,IACnD,YAAY;AAAA,IACZ,gBAAgB,sBAAsB,GAAG;AAAA,IACzC;AAAA,IACA;AAAA,IACA,YAAY,kBAAkB,GAAG;AAAA,IACjC,KAAK,qBAAqB,GAAG;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,yBACd,KACA,QACQ;AACR,QAAM,UAAU,qBAAqB,KAAK,MAAM;AAChD,SAAO,mBAAmB,yBAAyB;AAAA,IACjD;AAAA,IACA,KAAK,qBAAqB,OAAO;AAAA,EACnC,CAAC;AACH;AAEO,SAAS,+BACd,KACA,QACA,WACQ;AACR,QAAM,UAAU,qBAAqB,KAAK,MAAM;AAChD,SAAO,mBAAmB,mCAAmC;AAAA,IAC3D,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA,KAAK,qBAAqB,OAAO;AAAA,EACnC,CAAC;AACH;AAEA,SAAS,qBAAqB,KAAqB;AACjD,SAAO,oBAAoB,GAAG;AAChC;AAEA,SAAS,qBACP,aACA,QACQ;AACR,QAAM,WAAW,0BAA0B,OAAO,QAAQ;AAC1D,UAAQ,OAAO,MAAM;AAAA,IACnB,KAAK;AACH,UAAI,OAAO,oBAAoB,QAAW;AACxC,eAAO,YAAY,QAAQ,SAAS,EAAE;AAAA,MACxC;AACA,aAAO;AAAA,QACL,sBAAsB,GAAG,QAAQ,QAAQ,OAAO,eAAe;AAAA,QAC/D,yBAAyB,OAAO,SAAS;AAAA,MAC3C;AAAA,IACF,KAAK;AACH,aAAO,GAAG,QAAQ;AAAA,IACpB,KAAK;AACH,aAAO,OAAO,oBAAoB,SAC9B,GAAG,QAAQ,cACX,GAAG,QAAQ,QAAQ,OAAO,eAAe;AAAA,IAC/C,KAAK;AACH,aAAO,GAAG,QAAQ;AAAA,IACpB,KAAK;AACH,aAAO,GAAG,QAAQ;AAAA,IACpB,KAAK;AACH,aAAO,GAAG,QAAQ;AAAA,IACpB,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,QACL;AAAA,QACA,yBAAyB,OAAO,SAAS;AAAA,MAC3C;AAAA,IACF;AACE,YAAM,IAAI,MAAM,8CAA8C;AAAA,EAClE;AACF;AAEA,SAAS,sBACP,SACA,MACQ;AACR,MAAI,SAAS,UAAa,SAAS,IAAI;AACrC,WAAO;AAAA,EACT;AACA,SAAO,GAAG,QAAQ,QAAQ,SAAS,EAAE,CAAC,IAAI,KAAK,QAAQ,eAAe,EAAE,CAAC;AAC3E;AAEA,SAAS,yBACP,WACoB;AACpB,SAAO,WAAW,QAAQ,eAAe,EAAE;AAC7C;AAEO,SAAS,mBACd,YACA,WACmC;AACnC,SAAO,qBAAqB,UAAU,EAAE,WAAW;AAAA,IACjD;AAAA,EACF;AACF;AAEO,SAAS,wCACd,SACQ;AACR,SAAO,mBAAmB,6BAA6B,OAAO,EAAE;AAClE;AAEO,SAAS,8CACd,QACQ;AACR,SAAO,mBAAmB,qCAAqC,MAAM,EAAE;AACzE;AAEO,SAAS,eAAe,OAA0B;AACvD,QAAM,aAAa,MAAM,KAAK,EAAE,YAAY;AAE5C,MAAI,YAAY,SAAS,UAAuB,GAAG;AACjD,WAAO;AAAA,EACT;AAEA,QAAM,IAAI;AAAA,IACR;AAAA,MACE,uBAAuB,KAAK,qBAAqB,YAAY,KAAK,IAAI,CAAC;AAAA,MACvE,gBAAgB;AAAA,IAClB;AAAA,EACF;AACF;AAEA,SAAS,qBAAqB,MAAwC;AACpE,QAAM,SAAS,uBAAuB,IAAI,IAAI;AAE9C,MAAI,WAAW,QAAW;AACxB,UAAM,IAAI,MAAM,2CAA2C,IAAI,GAAG;AAAA,EACpE;AAEA,SAAO;AACT;AAEA,SAAS,sBAAsB,KAI7B;AACA,QAAM,UAAU,MAAM;AACpB,QAAI;AACF,aAAO,yBAAyB,GAAG;AAAA,IACrC,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF,GAAG;AAEH,MAAI,WAAW,QAAW;AACxB,WAAO;AAAA,MACL,mBAAmB;AAAA,MACnB,cAAc;AAAA,MACd,eAAe;AAAA,IACjB;AAAA,EACF;AAEA,SAAO;AAAA,IACL,mBAAmB,OAAO,SAAS;AAAA,IACnC,cAAc;AAAA,IACd,eAAe,OAAO,SAAS,WAAW,OAAO,cAAc;AAAA,EACjE;AACF;AAEA,SAAS,kBAAkB,KAEzB;AACA,QAAM,YAAY,iBAAiB,GAAG;AACtC,QAAM,SACJ,cAAc,SAAY,SAAY,mBAAmB,SAAS;AAEpE,SAAO;AAAA,IACL,oBACE,QAAQ,SAAS,kBACjB,QAAQ,SAAS;AAAA,EACrB;AACF;AAEA,SAAS,iBAAiB,KAAiC;AACzD,MAAI;AACF,UAAM,gBAAgB,yBAAyB,GAAG;AAClD,QAAI,eAAe,cAAc,QAAW;AAC1C,aAAO,cAAc;AAAA,IACvB;AAAA,EACF,QAAQ;AAAA,EAER;AAEA,MAAI;AACF,WAAO,yBAAyB,GAAG,EAAE;AAAA,EACvC,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,SAAS,mBACP,cACA,eAAwC,CAAC,GACjC;AACR,SAAO,2BAA2B,EAAE,OAAO,cAAc;AAAA,IACvD,SAAS;AAAA,IACT,aAAaC;AAAA,IACb,iBAAiB;AAAA,IACjB,YAAY;AAAA,IACZ,4BAA4B;AAAA,IAC5B,gBAAgB;AAAA,IAChB,GAAG;AAAA,EACL,CAAC;AACH;AAEA,SAAS,6BAA2D;AAClE,8BAA4B,UAAU,mBAAmB,GAAG;AAAA,IAC1D,YAAY;AAAA,EACd,CAAC;AAED,SAAO;AACT;;;AG9hBA;AAOA,OAA0C;;;ACP1C;;;ACKO,SAAS,uBACd,OACkC;AAClC,SACE,UAAU,SACV,UAAU,UACV,UAAU,UACV,UAAU,YACV,UAAU,WACV,UAAU,gBACV,UAAU,iBACV,UAAU,eACV,UAAU;AAEd;AAEO,SAAS,4BACd,OACuC;AACvC,SAAO,UAAU,aAAa,UAAU,WAAW,UAAU;AAC/D;;;ACvBA;AAFA,SAAS,oBAAAC,mBAAkB,2BAA2B;;;ACAtD;AAKA;AAIA;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAGA,SAAS,+BACd,QACA,OACM;AACN,MACE,WAAW,YACX,WAAW,YACX,WAAW,aACX,WAAW,QACX;AACA;AAAA,EACF;AAEA,MAAI,eAAe,KAAK,GAAG;AACzB,QAAI,yBAAyB,KAAK,EAAE,gBAAgB,QAAW;AAC7D,YAAM,IAAI,MAAM,mCAAmC,KAAK,CAAC;AAAA,IAC3D;AACA;AAAA,EACF;AAEA,MAAI,CAAC,kBAAkB,KAAK,GAAG;AAC7B;AAAA,EACF;AAEA,QAAM,IAAI,MAAM,uBAAuB,KAAK,CAAC;AAC/C;AAEO,SAAS,6BACd,KACoB;AACpB,MAAI,QAAQ,UAAa,CAAC,eAAe,GAAG,GAAG;AAC7C,WAAO;AAAA,EACT;AAEA,QAAM,YAAY,yBAAyB,GAAG,EAAE;AAChD,QAAM,QACJ,cAAc,SACV,SACA,qCAAqC,KAAK,SAAS;AAEzD,SAAO,QAAQ,CAAC,MAAM,SAAY,SAAY,OAAO,MAAM,CAAC,CAAC;AAC/D;AAEO,SAAS,sBAAsB,KAAa,WAAyB;AAC1E,QAAM,SAAS,yBAAyB,GAAG;AAE3C,MAAI,OAAO,gBAAgB,QAAW;AACpC,UAAM,IAAI;AAAA,MACR,cAAc,mCAAmC,GAAG,GAAG,SAAS;AAAA,IAClE;AAAA,EACF;AACA,MAAI,OAAO,cAAc,QAAW;AAClC,UAAM,IAAI;AAAA,MACR,cAAc,gCAAgC,GAAG,GAAG,gBAAgB,GAAG;AAAA,IACzE;AAAA,EACF;AACA,MAAI,CAAC,oBAAoB,OAAO,SAAS,GAAG;AAC1C,UAAM,IAAI;AAAA,MACR,cAAc,gCAAgC,GAAG,GAAG,SAAS;AAAA,IAC/D;AAAA,EACF;AACF;AAEO,SAAS,yBACd,KACA,WACoB;AACpB,QAAM,SAAS,yBAAyB,GAAG;AAE3C,MAAI,OAAO,gBAAgB,QAAW;AACpC,UAAM,IAAI;AAAA,MACR,cAAc,mCAAmC,GAAG,GAAG,SAAS;AAAA,IAClE;AAAA,EACF;AACA,MAAI,OAAO,cAAc,QAAW;AAClC,UAAM,IAAI;AAAA,MACR;AAAA,QACE,2CAA2C,GAAG;AAAA,QAC9C,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AACA,QAAM,aAAa,wBAAwB,OAAO,SAAS;AAE3D,MAAI,eAAe,QAAW;AAC5B,UAAM,IAAI;AAAA,MACR;AAAA,QACE,2DAA2D,GAAG;AAAA,QAC9D;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAAS,0BACd,KACA,WACM;AACN,QAAM,SAAS,yBAAyB,GAAG;AAE3C,MAAI,OAAO,gBAAgB,QAAW;AACpC,UAAM,IAAI;AAAA,MACR,cAAc,mCAAmC,GAAG,GAAG,SAAS;AAAA,IAClE;AAAA,EACF;AACA,MACE,OAAO,cAAc,UACrB,CAAC,oBAAoB,OAAO,SAAS,GACrC;AACA,UAAM,IAAI;AAAA,MACR;AAAA,QACE,qEAAqE,GAAG;AAAA,QACxE;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,oBAAoB,WAA4B;AAC9D,QAAM,OAAO,qBAAqB,SAAS;AAC3C,QAAM,aAAa,KAAK,WAAW,UAAU,IACzC,gCAAgC,KAAK,IAAI,IAAI,CAAC,IAC9C;AACJ,MAAI,eAAe,QAAW;AAC5B,WAAO;AAAA,EACT;AACA,QAAM,QAAQ,WAAW,MAAM,GAAG;AAClC,SACG,MAAM,CAAC,MAAM,WAAW,MAAM,WAAW,KACzC,MAAM,CAAC,MAAM,YAAY,MAAM,WAAW,KAC1C,MAAM,CAAC,MAAM,YAAY,MAAM,WAAW;AAE/C;AAEO,SAAS,oBAAoB,WAA4B;AAC9D,SACE,iCAAiC,KAAK,SAAS,KAC/C,uDAAuD,KAAK,SAAS,KACrE,4BAA4B,KAAK,SAAS,KAC1C,kDAAkD,KAAK,SAAS;AAEpE;AAEO,SAAS,wBACd,WACgC;AAChC,MACE,iCAAiC,KAAK,SAAS,KAC/C,uDAAuD,KAAK,SAAS,GACrE;AACA,WAAO;AAAA,EACT;AACA,MACE,4BAA4B,KAAK,SAAS,KAC1C,kDAAkD,KAAK,SAAS,GAChE;AACA,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEO,SAAS,4BAA4B,SAAyB;AACnE,MAAI,kBAAkB,OAAO,GAAG;AAC9B,WAAO,uBAAuB,OAAO;AAAA,EACvC;AAEA,SAAO,cAAc,oBAAoB,OAAO,KAAK,gBAAgB,OAAO;AAC9E;AAEO,SAAS,kBAAkB,OAAwB;AACxD,QAAM,aAAa,4BAA4B,KAAK;AAEpD,SACE,WAAW,SAAS,OAAO,KAC3B,WAAW,SAAS,QAAQ,KAC5B,WAAW,SAAS,QAAQ;AAEhC;AAEO,SAAS,uBAAuB,MAAsB;AAC3D,QAAM,aAAa,4BAA4B,IAAI;AACnD,QAAM,CAAC,cAAc,YAAY,SAAS,EAAE,IAAI,cAAc,UAAU;AACxE,QAAM,MAAM,YAAY,WAAW,GAAG,IAClC,UAAU,WAAW,GAAG,MAAM,KAC9B,UAAU,YAAY,QAAQ,WAAW,EAAE,CAAC,GAAG,MAAM;AAEzD,SAAO;AAAA,IACL,qDAAqD,IAAI;AAAA,IACzD,QAAQ,GAAG;AAAA,IACX;AAAA,EACF,EAAE,KAAK,IAAI;AACb;AAEO,SAAS,cAAc,MAAyC;AACrE,QAAM,aAAa,KAAK,QAAQ,OAAO,IAAI,QAAQ;AAEnD,SAAO,CAAC,KAAK,MAAM,GAAG,UAAU,GAAG,KAAK,MAAM,UAAU,CAAC;AAC3D;AAEO,SAAS,4BAA4B,MAAsB;AAChE,SAAO,KAAK,QAAQ,QAAQ,GAAG;AACjC;AAEO,SAAS,mCAAmC,KAAqB;AACtE,SAAO;AAAA,IACL,mEAAmE,GAAG;AAAA,IACtE;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,KAAK,IAAI;AACb;AAEO,SAAS,gCAAgC,KAAqB;AACnE,SAAO;AAAA,IACL,qCAAqC,GAAG;AAAA,IACxC;AAAA,IACA;AAAA,EACF,EAAE,KAAK,IAAI;AACb;AAEO,SAAS,iCACd,QACQ;AACR,UAAQ,QAAQ;AAAA,IACd,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO,+DAA+D,MAAM;AAAA,IAC9E,KAAK;AACH,aAAO;AAAA,EACX;AACF;AACO,SAAS,eAAe,OAAoC;AACjE,SAAO,OAAO,WAAW,qBAAqB,MAAM;AACtD;AAEO,SAAS,qBAAqB,WAA2B;AAC9D,QAAM,SAAS,sBAAsB,SAAS;AAE9C,MAAI,WAAW,QAAW;AACxB,UAAM,IAAI,MAAM,mCAAmC,SAAS,EAAE;AAAA,EAChE;AAEA,SAAO,UAAU,MAAM,OAAO,MAAM,EAAE,QAAQ,eAAe,EAAE;AACjE;AAEO,SAAS,kBAAkB,OAAoC;AACpE,SAAO,uBAAuB,KAAK;AACrC;AAEO,SAAS,0BAA0B,OAAoC;AAC5E,QAAM,OAAO,mBAAmB,KAAK;AACrC,SAAO,OAAO,CAAC,MAAM,WAAW,KAAK,CAAC,MAAM,YAAY,KAAK,UAAU;AACzE;AAEO,SAAS,2BACd,KACgC;AAChC,QAAM,OAAO,mBAAmB,GAAG;AACnC,MAAI,OAAO,CAAC,MAAM,WAAW,KAAK,CAAC,MAAM,UAAU;AACjD,WAAO;AAAA,EACT;AACA,QAAM,UAAU,KAAK,CAAC;AAEtB,SAAO,wBAAwB,OAAO;AACxC;AAEO,SAAS,qBAAqB,KAAiC;AACpE,QAAM,OAAO,yBAAyB,GAAG;AAEzC,MAAI,SAAS,QAAW;AACtB,UAAM,IAAI;AAAA,MACR;AAAA,QACE,kCAAkC,GAAG;AAAA,QACrC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,QAAQ,kBAAkB,IAAI,EAAE,KAAK;AAC3C,MAAI,UAAU,IAAI;AAChB,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEO,SAAS,2BACd,KACoB;AACpB,MAAI,QAAQ,QAAW;AACrB,WAAO;AAAA,EACT;AAEA,QAAM,OAAO,yBAAyB,GAAG;AACzC,MAAI,SAAS,QAAW;AACtB,WAAO;AAAA,EACT;AACA,MAAI,CAAC,KAAK,SAAS,SAAS,GAAG;AAC7B,WAAO;AAAA,EACT;AAEA,QAAM,QAAQ,kBAAkB,KAAK,MAAM,GAAG,CAAC,UAAU,MAAM,CAAC,EAAE,KAAK;AACvE,MAAI,UAAU,IAAI;AAChB,UAAM,IAAI;AAAA,MACR;AAAA,QACE,qCAAqC,GAAG;AAAA,QACxC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAAS,sBAAsB,KAAiC;AACrE,MAAI,IAAI,WAAW,qBAAqB,GAAG;AACzC,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEO,SAAS,uBAAuB,OAAoC;AACzE,QAAM,OAAO,mBAAmB,KAAK;AACrC,SAAO,OAAO,CAAC,MAAM,WAAW,KAAK,CAAC,MAAM;AAC9C;AAEO,SAAS,yBAAyB,KAAiC;AACxE,QAAM,OAAO,mBAAmB,GAAG;AACnC,MAAI,OAAO,CAAC,MAAM,WAAW,KAAK,CAAC,MAAM,OAAO;AAC9C,WAAO;AAAA,EACT;AACA,MAAI,KAAK,WAAW,GAAG;AACrB,WAAO;AAAA,EACT;AAEA,SAAO,IAAI,KAAK,MAAM,CAAC,EAAE,KAAK,GAAG,CAAC;AACpC;AAEO,SAAS,kBAAkB,OAAuB;AACvD,SAAO,MAAM,QAAQ,SAAS,EAAE;AAClC;AAEA,SAAS,mBACP,OAC+B;AAC/B,MAAI,UAAU,QAAW;AACvB,WAAO;AAAA,EACT;AACA,MAAI;AACF,UAAM,SAAS,wBAAwB,KAAK;AAC5C,WAAO,OAAO,aAAa,SAAS,OAAO,OAAO;AAAA,EACpD,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEO,SAAS,sBAAsB,KAAa,WAA2B;AAC5E,QAAM,SAAS,yBAAyB,GAAG;AAE3C,MAAI,OAAO,gBAAgB,UAAa,OAAO,cAAc,QAAW;AACtE,UAAM,IAAI;AAAA,MACR,cAAc,uCAAuC,GAAG,IAAI,SAAS;AAAA,IACvE;AAAA,EACF;AAEA,SAAO,OAAO;AAChB;;;AD7UO,SAAS,oBACd,OACA,MACA,aACA,WACQ;AACR,QAAM,aAAa,MAAM,KAAK;AAC9B,MAAI;AACF,QAAI,CAAC,eAAe,UAAU,GAAG;AAC/B,aAAOC,kBAAiB,YAAY,IAAI;AAAA,IAC1C;AAEA,UAAM,SAAS,yBAAyB,UAAU;AAClD,QACE,OAAO,gBAAgB,UACvB,OAAO,gBAAgB,aACvB;AACA,YAAM,IAAI;AAAA,QACR,WAAW,IAAI,KAAK,KAAK;AAAA,MAC3B;AAAA,IACF;AAEA,UAAM,OAAO,oBAAoB,OAAO,aAAa,UAAU;AAC/D,QAAI,SAAS,QAAW;AACtB,YAAM,IAAI;AAAA,QACR,WAAW,IAAI,KAAK,KAAK;AAAA,MAC3B;AAAA,IACF;AACA,WAAO;AAAA,EACT,SAAS,OAAO;AACd,UAAM,IAAI;AAAA,MACR;AAAA,QACE,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,QACrD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;AEtGA;;;ACEA;AAEO,SAAS,kBACd,OACA,MACA,WACc;AACd,QAAM,QAAQ,0BAA0B,KAAK;AAE7C,MAAI,UAAU,QAAW;AACvB,WAAO;AAAA,EACT;AAEA,QAAM,IAAI;AAAA,IACR;AAAA,MACE,WAAW,IAAI,KAAK,KAAK;AAAA,MACzB;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,gBACd,OACA,WACqC;AACrC,QAAM,QAAQ,0BAA0B,KAAK;AAE7C,MAAI,UAAU,aAAa,UAAU,aAAa,UAAU,WAAW;AACrE,WAAO;AAAA,EACT;AACA,MAAI,UAAU,QAAW;AACvB,UAAM,IAAI;AAAA,MACR;AAAA,QACE;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,IAAI;AAAA,IACR;AAAA,MACE,iBAAiB,KAAK;AAAA,MACtB;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,0BACd,OAC0B;AAC1B,UAAQ,MAAM,KAAK,EAAE,YAAY,GAAG;AAAA,IAClC,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;;;AChEA;AAEO,SAAS,iBACd,OACA,MACA,QACA,WACM;AACN,MAAI,UAAU,QAAW;AACvB,UAAM,IAAI;AAAA,MACR;AAAA,QACE,iBAAiB,MAAM,8BAA8B,IAAI;AAAA,QACzD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,wBACd,OACA,MACA,QACA,WACM;AACN,MAAI,UAAU,QAAW;AACvB,UAAM,IAAI;AAAA,MACR;AAAA,QACE,iBAAiB,MAAM,8BAA8B,IAAI;AAAA,QACzD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,2BACd,QAQA,WACM;AACN,QAAM,gBAAgB;AAAA,IACpB,OAAO,WAAW,SAAY,SAAY;AAAA,IAC1C,OAAO,SAAS,SAAY,SAAY;AAAA,EAC1C,EAAE,OAAO,CAAC,SAAyB,SAAS,MAAS;AACrD,QAAM,kBAAkB;AAAA,IACtB,OAAO,WAAW,SAAY,SAAY;AAAA,IAC1C,OAAO,UAAU,SAAY,SAAY;AAAA,IACzC,OAAO,UAAU,SAAY,SAAY;AAAA,IACzC,OAAO,SAAS,SAAY,SAAY;AAAA,EAC1C,EAAE,OAAO,CAAC,SAAyB,SAAS,MAAS;AAErD,MAAI,cAAc,SAAS,GAAG;AAC5B,UAAM,IAAI;AAAA,MACR;AAAA,QACE,kCAAkC,cAAc,KAAK,IAAI,CAAC;AAAA,QAC1D;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,MAAI,gBAAgB,SAAS,GAAG;AAC9B,UAAM,IAAI;AAAA,MACR;AAAA,QACE,oCAAoC,gBAAgB,KAAK,IAAI,CAAC;AAAA,QAC9D;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,MACE,cAAc,SAAS,MACtB,OAAO,WAAW,UAAa,OAAO,UAAU,SACjD;AACA,UAAM,IAAI;AAAA,MACR;AAAA,QACE;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,MAAI,cAAc,WAAW,KAAK,gBAAgB,WAAW,GAAG;AAC9D,UAAM,IAAI;AAAA,MACR;AAAA,QACE;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;AF9EO,SAAS,iCACd,QACA,MACA,QAsBA,WACA,YACA,YAC4B;AAC5B,QAAM,cACJ,OAAO,YAAY,SACf,SACA,oBAAoB,OAAO,SAAS,aAAa,MAAM,SAAS;AACtE,QAAM,oBACJ,OAAO,WAAW,SACd,SACA,oBAAoB,OAAO,QAAQ,YAAY,MAAM,SAAS;AACpE,QAAM,oBACJ,OAAO,WAAW,SACd,SACA,oBAAoB,OAAO,QAAQ,YAAY,MAAM,SAAS;AACpE,QAAM,mBACJ,OAAO,UAAU,SACb,SACA,oBAAoB,OAAO,OAAO,WAAW,MAAM,SAAS;AAClE,QAAM,aACJ,OAAO,OAAO,SAAY,SAAY,gBAAgB,OAAO,IAAI,SAAS;AAE5E,UAAQ,QAAQ;AAAA,IACd,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,YAAM,IAAI;AAAA,QACR;AAAA,UACE;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACF,KAAK;AACH,YAAM,IAAI;AAAA,QACR;AAAA,UACE;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACF,KAAK;AACH,uBAAiB,OAAO,SAAS,aAAa,QAAQ,SAAS;AAC/D,uBAAiB,OAAO,QAAQ,YAAY,QAAQ,SAAS;AAC7D,uBAAiB,OAAO,QAAQ,YAAY,QAAQ,SAAS;AAC7D,uBAAiB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAC3D,uBAAiB,OAAO,IAAI,QAAQ,QAAQ,SAAS;AACrD;AAAA,QACE,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA;AAAA,QACE,OAAO,cAAc;AAAA,QACrB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,GAAI,OAAO,UAAU,SAAY,CAAC,IAAI,EAAE,WAAW,OAAO,MAAM;AAAA,QAChE,GAAI,OAAO,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,OAAO,KAAK;AAAA,QACzD,GAAI,OAAO,QAAQ,SAAY,CAAC,IAAI,EAAE,SAAS,OAAO,IAAI;AAAA,QAC1D,GAAI,sBAAsB,SAAY,CAAC,IAAI,EAAE,kBAAkB;AAAA,QAC/D,GAAI,OAAO,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,OAAO,MAAM;AAAA,MAC9D;AAAA,IACF,KAAK;AACH,uBAAiB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAC3D,uBAAiB,OAAO,SAAS,aAAa,QAAQ,SAAS;AAC/D,uBAAiB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAC3D,uBAAiB,OAAO,QAAQ,YAAY,QAAQ,SAAS;AAC7D,uBAAiB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAC3D,uBAAiB,OAAO,QAAQ,YAAY,QAAQ,SAAS;AAC7D;AAAA,QACE,OAAO,cAAc;AAAA,QACrB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,uBAAiB,OAAO,QAAQ,YAAY,QAAQ,SAAS;AAC7D,uBAAiB,OAAO,QAAQ,YAAY,QAAQ,SAAS;AAC7D,uBAAiB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAC3D,uBAAiB,OAAO,IAAI,QAAQ,QAAQ,SAAS;AACrD,uBAAiB,OAAO,YAAY,GAAG,UAAU,QAAQ,SAAS;AAClE,8BAAwB,OAAO,MAAM,UAAU,QAAQ,SAAS;AAChE,8BAAwB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAClE;AAAA,QACE,OAAO,SAAS;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,8BAAwB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAClE,8BAAwB,OAAO,MAAM,UAAU,QAAQ,SAAS;AAChE,8BAAwB,OAAO,MAAM,UAAU,QAAQ,SAAS;AAChE;AAAA,QACE,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,aAAO;AAAA,QACL;AAAA,QACA,GAAI,OAAO,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,OAAO,KAAK;AAAA,QACzD;AAAA,QACA,GAAI,OAAO,QAAQ,SAAY,CAAC,IAAI,EAAE,SAAS,OAAO,IAAI;AAAA,MAC5D;AAAA,IACF,KAAK;AACH,yBAAmB,aAAa,QAAQ,SAAS;AACjD,uBAAiB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAC3D,uBAAiB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAC3D,uBAAiB,OAAO,QAAQ,YAAY,QAAQ,SAAS;AAC7D;AAAA,QACE,OAAO,cAAc;AAAA,QACrB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,uBAAiB,OAAO,QAAQ,YAAY,QAAQ,SAAS;AAC7D,uBAAiB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAC3D,uBAAiB,OAAO,IAAI,QAAQ,QAAQ,SAAS;AACrD,8BAAwB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAClE;AAAA,QACE,OAAO,SAAS;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA;AAAA,QACE,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,iCAA2B,QAAQ,SAAS;AAC5C,aAAO;AAAA,QACL;AAAA,QACA,GAAI,qBAAqB,SAAY,CAAC,IAAI,EAAE,iBAAiB;AAAA,QAC7D,GAAI,sBAAsB,SAAY,CAAC,IAAI,EAAE,kBAAkB;AAAA,QAC/D;AAAA,QACA,GAAI,OAAO,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,OAAO,MAAM;AAAA,QAC5D,GAAI,OAAO,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,OAAO,KAAK;AAAA,QACzD,GAAI,OAAO,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,OAAO,KAAK;AAAA,QACzD,GAAI,OAAO,QAAQ,SAAY,CAAC,IAAI,EAAE,SAAS,OAAO,IAAI;AAAA,QAC1D,GAAI,OAAO,SAAS,SAAY,CAAC,IAAI,EAAE,YAAY,OAAO,KAAK;AAAA,QAC/D,GAAI,sBAAsB,SAAY,CAAC,IAAI,EAAE,kBAAkB;AAAA,QAC/D;AAAA,MACF;AAAA,IACF,KAAK;AACH,yBAAmB,aAAa,QAAQ,SAAS;AACjD,uBAAiB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAC3D,uBAAiB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAC3D,uBAAiB,OAAO,QAAQ,YAAY,QAAQ,SAAS;AAC7D,uBAAiB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAC3D,uBAAiB,OAAO,QAAQ,YAAY,QAAQ,SAAS;AAC7D;AAAA,QACE,OAAO,cAAc;AAAA,QACrB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,uBAAiB,OAAO,QAAQ,YAAY,QAAQ,SAAS;AAC7D,uBAAiB,OAAO,QAAQ,YAAY,QAAQ,SAAS;AAC7D,uBAAiB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAC3D,uBAAiB,OAAO,IAAI,QAAQ,QAAQ,SAAS;AACrD,8BAAwB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAClE;AAAA,QACE,OAAO,SAAS;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,8BAAwB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAClE,8BAAwB,OAAO,MAAM,UAAU,QAAQ,SAAS;AAChE,8BAAwB,OAAO,MAAM,UAAU,QAAQ,SAAS;AAChE,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,GAAI,OAAO,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,OAAO,KAAK;AAAA,QACzD;AAAA,QACA,GAAI,OAAO,QAAQ,SAAY,CAAC,IAAI,EAAE,SAAS,OAAO,IAAI;AAAA,QAC1D,GAAI,OAAO,cAAc,SACrB,CAAC,IACD,EAAE,WAAW,OAAO,UAAU;AAAA,MACpC;AAAA,IACF,KAAK;AACH,yBAAmB,aAAa,QAAQ,SAAS;AACjD,uBAAiB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAC3D,uBAAiB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAC3D,uBAAiB,OAAO,QAAQ,YAAY,QAAQ,SAAS;AAC7D,UAAI,eAAe,QAAW;AAC5B,cAAM,IAAI;AAAA,UACR;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,uBAAiB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAC3D,uBAAiB,OAAO,QAAQ,YAAY,QAAQ,SAAS;AAC7D;AAAA,QACE,OAAO,cAAc;AAAA,QACrB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,uBAAiB,OAAO,QAAQ,YAAY,QAAQ,SAAS;AAC7D,uBAAiB,OAAO,QAAQ,YAAY,QAAQ,SAAS;AAC7D,uBAAiB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAC3D,8BAAwB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAClE;AAAA,QACE,OAAO,SAAS;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,8BAAwB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAClE,8BAAwB,OAAO,MAAM,UAAU,QAAQ,SAAS;AAChE,8BAAwB,OAAO,MAAM,UAAU,QAAQ,SAAS;AAChE;AAAA,QACE,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,GAAI,OAAO,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,OAAO,KAAK;AAAA,QACzD;AAAA,QACA;AAAA,QACA,GAAI,OAAO,QAAQ,SAAY,CAAC,IAAI,EAAE,SAAS,OAAO,IAAI;AAAA,MAC5D;AAAA,IACF,KAAK;AACH,yBAAmB,aAAa,QAAQ,SAAS;AACjD,uBAAiB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAC3D,uBAAiB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAC3D,uBAAiB,OAAO,QAAQ,YAAY,QAAQ,SAAS;AAC7D,uBAAiB,OAAO,QAAQ,YAAY,QAAQ,SAAS;AAC7D,UACE,OAAO,cAAc,MAAM,UAC3B,OAAO,cAAc,MAAM,SAC3B;AACA,cAAM,IAAI;AAAA,UACR;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,uBAAiB,OAAO,QAAQ,YAAY,QAAQ,SAAS;AAC7D,uBAAiB,OAAO,QAAQ,YAAY,QAAQ,SAAS;AAC7D,uBAAiB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAC3D,uBAAiB,OAAO,IAAI,QAAQ,QAAQ,SAAS;AACrD,8BAAwB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAClE;AAAA,QACE,OAAO,SAAS;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,8BAAwB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAClE,8BAAwB,OAAO,MAAM,UAAU,QAAQ,SAAS;AAChE,8BAAwB,OAAO,MAAM,UAAU,QAAQ,SAAS;AAChE;AAAA,QACE,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,GAAI,eAAe,SAAY,CAAC,IAAI,EAAE,WAAW;AAAA,QACjD,GAAI,OAAO,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,OAAO,KAAK;AAAA,QACzD;AAAA,QACA,GAAI,OAAO,UAAU,SAAY,CAAC,IAAI,EAAE,WAAW,OAAO,MAAM;AAAA,QAChE,GAAI,OAAO,cAAc,MAAM,SAC3B,CAAC,IACD,EAAE,aAAa,QAAiB;AAAA,QACpC,GAAI,OAAO,QAAQ,SAAY,CAAC,IAAI,EAAE,SAAS,OAAO,IAAI;AAAA,MAC5D;AAAA,IACF,KAAK;AACH,yBAAmB,aAAa,QAAQ,SAAS;AACjD,uBAAiB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAC3D,uBAAiB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAC3D,uBAAiB,OAAO,QAAQ,YAAY,QAAQ,SAAS;AAC7D,uBAAiB,OAAO,QAAQ,YAAY,QAAQ,SAAS;AAC7D;AAAA,QACE,OAAO,cAAc;AAAA,QACrB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,uBAAiB,OAAO,QAAQ,YAAY,QAAQ,SAAS;AAC7D,uBAAiB,OAAO,QAAQ,YAAY,QAAQ,SAAS;AAC7D,uBAAiB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAC3D,uBAAiB,OAAO,IAAI,QAAQ,QAAQ,SAAS;AACrD,uBAAiB,OAAO,YAAY,GAAG,UAAU,QAAQ,SAAS;AAClE,8BAAwB,OAAO,MAAM,UAAU,QAAQ,SAAS;AAChE,8BAAwB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAClE;AAAA,QACE,OAAO,SAAS;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,8BAAwB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAClE,8BAAwB,OAAO,MAAM,UAAU,QAAQ,SAAS;AAChE,8BAAwB,OAAO,MAAM,UAAU,QAAQ,SAAS;AAChE;AAAA,QACE,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,GAAI,eAAe,SAAY,CAAC,IAAI,EAAE,WAAW;AAAA,QACjD;AAAA,QACA,GAAI,OAAO,UAAU,SAAY,CAAC,IAAI,EAAE,WAAW,OAAO,MAAM;AAAA,QAChE,GAAI,OAAO,QAAQ,SAAY,CAAC,IAAI,EAAE,SAAS,OAAO,IAAI;AAAA,MAC5D;AAAA,IACF,KAAK;AACH,yBAAmB,aAAa,QAAQ,SAAS;AACjD,uBAAiB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAC3D,uBAAiB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAC3D,uBAAiB,OAAO,QAAQ,YAAY,QAAQ,SAAS;AAC7D,uBAAiB,OAAO,QAAQ,YAAY,QAAQ,SAAS;AAC7D,uBAAiB,OAAO,YAAY,GAAG,UAAU,QAAQ,SAAS;AAClE,8BAAwB,OAAO,MAAM,UAAU,QAAQ,SAAS;AAChE,UAAI,OAAO,UAAU,QAAW;AAC9B,cAAM,IAAI;AAAA,UACR;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,UAAI,eAAe,UAAa,OAAO,UAAU,MAAM;AACrD,cAAM,IAAI,MAAM,cAAc,wBAAwB,SAAS,CAAC;AAAA,MAClE;AACA,UAAI,eAAe,UAAa,OAAO,UAAU,MAAM;AACrD,cAAM,IAAI;AAAA,UACR;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,uBAAiB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAC3D;AAAA,QACE,OAAO,cAAc;AAAA,QACrB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,uBAAiB,OAAO,QAAQ,YAAY,QAAQ,SAAS;AAC7D,uBAAiB,OAAO,QAAQ,YAAY,QAAQ,SAAS;AAC7D,uBAAiB,OAAO,IAAI,QAAQ,QAAQ,SAAS;AACrD;AAAA,QACE,OAAO,SAAS;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,8BAAwB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAClE,8BAAwB,OAAO,MAAM,UAAU,QAAQ,SAAS;AAChE,8BAAwB,OAAO,MAAM,UAAU,QAAQ,SAAS;AAChE;AAAA,QACE,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,GAAI,OAAO,UAAU,SAAY,CAAC,IAAI,EAAE,YAAY,OAAO,MAAM;AAAA,QACjE;AAAA,QACA,GAAI,eAAe,SAAY,CAAC,IAAI,EAAE,OAAO,WAAW;AAAA,QACxD,GAAI,OAAO,QAAQ,SAAY,CAAC,IAAI,EAAE,SAAS,OAAO,IAAI;AAAA,MAC5D;AAAA,IACF,KAAK;AACH,uBAAiB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAC3D,uBAAiB,OAAO,SAAS,aAAa,QAAQ,SAAS;AAC/D,uBAAiB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAC3D,uBAAiB,OAAO,QAAQ,YAAY,QAAQ,SAAS;AAC7D,uBAAiB,OAAO,QAAQ,YAAY,QAAQ,SAAS;AAC7D;AAAA,QACE,OAAO,cAAc;AAAA,QACrB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,uBAAiB,OAAO,QAAQ,YAAY,QAAQ,SAAS;AAC7D,uBAAiB,OAAO,QAAQ,YAAY,QAAQ,SAAS;AAC7D,uBAAiB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAC3D,uBAAiB,OAAO,IAAI,QAAQ,QAAQ,SAAS;AACrD,8BAAwB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAClE,8BAAwB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAClE,8BAAwB,OAAO,MAAM,UAAU,QAAQ,SAAS;AAChE,8BAAwB,OAAO,MAAM,UAAU,QAAQ,SAAS;AAChE;AAAA,QACE,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,UAAI,eAAe,WAAW,OAAO,SAAS,MAAM;AAClD,cAAM,IAAI;AAAA,UACR;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,UAAI,eAAe,SAAS;AAC1B,eAAO;AAAA,UACL;AAAA,UACA,GAAI,OAAO,SAAS,MAAM,SACtB,CAAC,IACD,EAAE,QAAQ,OAAO,SAAS,EAAE;AAAA,UAChC,GAAI,OAAO,UAAU,SAAY,CAAC,IAAI,EAAE,WAAW,OAAO,MAAM;AAAA,UAChE,GAAI,OAAO,QAAQ,SAAY,CAAC,IAAI,EAAE,SAAS,OAAO,IAAI;AAAA,UAC1D;AAAA,UACA,YAAY;AAAA,QACd;AAAA,MACF;AACA,uBAAiB,OAAO,OAAO,WAAW,QAAQ,SAAS;AAC3D;AAAA,QACE,OAAO,SAAS;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,aAAO;AAAA,QACL;AAAA,QACA,MAAM,OAAO,QAAQ;AAAA,QACrB,GAAI,OAAO,QAAQ,SAAY,CAAC,IAAI,EAAE,SAAS,OAAO,IAAI;AAAA,QAC1D;AAAA,QACA,YAAY;AAAA,MACd;AAAA,EACJ;AACF;AAEA,SAAS,mBACP,aACA,QACA,WAC+B;AAC/B,MAAI,gBAAgB,QAAW;AAC7B,UAAM,IAAI;AAAA,MACR;AAAA,QACE,8BACa,MAAM;AAAA,QAEnB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;AJ1eO,SAAS,gBACd,OAC2B;AAC3B,SACE,UAAU,YACV,UAAU,cACV,UAAU,YACV,UAAU,SACV,UAAU,aACV,UAAU,UACV,UAAU,UACV,UAAU,UACV,UAAU,aACV,UAAU;AAEd;AAEO,SAAS,iCACd,OACiB;AACjB,SAAO,UAAU;AACnB;AAEO,SAAS,+BACd,OACoC;AACpC,SAAO,UAAU,SAAS,UAAU,UAAU,UAAU;AAC1D;AAEO,SAAS,iCACd,SACQ;AACR,SAAO;AAAA,IACL;AAAA,IACA,gBAAgB;AAAA,EAClB;AACF;AAEO,SAAS,mBACd,OAC8B;AAC9B,SACE,UAAU,WACV,gBAAgB,KAAK,KACrB,uBAAuB,KAAK,KAC5B,qBAAqB,KAAK,KAC1B,iBAAiB,KAAK;AAE1B;AAEO,SAAS,qBACd,OACgC;AAChC,SAAO,UAAU,WAAW,UAAU,SAAS,UAAU;AAC3D;AAEO,SAAS,iBACd,OAC4B;AAC5B,SACE,UAAU,WACV,UAAU,YACV,UAAU,SACV,UAAU,SACV,UAAU;AAEd;AAEO,SAAS,wBACd,OACsE;AACtE,SACE,UAAU,cACV,UAAU,SACV,UAAU,UACV,UAAU,UACV,UAAU,aACV,UAAU;AAEd;AAEO,SAAS,4BACd,OACoC;AACpC,SAAO,UAAU,SAAS,UAAU,UAAU,UAAU;AAC1D;AACO,SAAS,eACd,OACuB;AACvB,SACE,UAAU,SACV,UAAU,WACV,UAAU,YACV,UAAU,WACV,UAAU,SACV,UAAU,UACV,UAAU,WACV,UAAU,YACV,UAAU,SACV,UAAU;AAEd;AAEO,SAAS,oBAAoB,OAA2C;AAC7E,UAAQ,OAAO;AAAA,IACb,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,YAAM,IAAI;AAAA,QACR;AAAA,UACE,uBAAuB,KAAK;AAAA,UAC5B;AAAA,QACF;AAAA,MACF;AAAA,EACJ;AACF;;;AOzIA;AACA,SAAS,yBAAAC,8BAA6B;AAS/B,SAAS,yBACd,MACA,OACA,WACM;AACN,MAAI,UAAU,QAAW;AACvB,UAAM,IAAI;AAAA,MACR;AAAA,QACE,8CAA8C,IAAI;AAAA,QAClD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,8BACd,QACA,WACM;AACN,aAAW,QAAQ,qBAAqB,QAAQ,EAAE,cAAc,MAAM,CAAC,GAAG;AACxE,UAAM,IAAI;AAAA,MACR;AAAA,QACE,4CAA4C,IAAI;AAAA,QAChD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,oBAAoB,QAAqC;AACvE,yBAAuB,QAAQ,QAAQ,gBAAgB,IAAI;AAC7D;AAEO,SAAS,qBACd,aACA,QACM;AACN,MAAI,OAAO,UAAU,QAAQ,YAAY,CAAC,MAAM,MAAM;AACpD;AAAA,EACF;AAEA,QAAM,IAAI;AAAA,IACR;AAAA,MACE;AAAA,MACA,gBAAgB;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,2BACd,aACA,QACM;AACN,MAAI,OAAO,YAAY,MAAM;AAC3B;AAAA,EACF;AAEA,QAAM,CAAC,SAAS,MAAM,IAAI;AAC1B,MACE,SAAS,WAAWA,sBAAqB,MAAM,QAC/C,WAAW,UACX;AACA;AAAA,EACF;AAEA,QAAM,IAAI;AAAA,IACR;AAAA,MACE;AAAA,MACA,gBAAgB;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,kBAAkB,QAAqC;AACrE,yBAAuB,QAAQ,MAAM,cAAc;AACrD;AAEO,SAAS,uBACd,QACA,SACA,WACM;AACN,aAAW,QAAQ,qBAAqB,MAAM,GAAG;AAC/C,UAAM,IAAI;AAAA,MACR;AAAA,QACE,SAAS,OAAO,+BAA+B,IAAI;AAAA,QACnD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,aACd,MACA,OACA,WACM;AACN,MAAI,UAAU,UAAa,UAAU,OAAO;AAC1C;AAAA,EACF;AAEA,QAAM,IAAI;AAAA,IACR,cAAc,yCAAyC,IAAI,KAAK,SAAS;AAAA,EAC3E;AACF;AAEO,SAAS,oBACd,MACA,OACA,WACM;AACN,MAAI,UAAU,QAAW;AACvB,UAAM,IAAI;AAAA,MACR;AAAA,QACE,gDAAgD,IAAI;AAAA,QACpD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,yBAAyB,QAAqC;AAC5E,aAAW,QAAQ,qBAAqB,MAAM,GAAG;AAC/C,UAAM,IAAI;AAAA,MACR;AAAA,QACE,8CAA8C,IAAI;AAAA,QAClD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,qBACd,QACA,UAA+C,CAAC,GAC7B;AACnB,QAAM,eAAe,QAAQ,gBAAgB;AAC7C,QAAM,QAAkB,CAAC;AAEzB,MAAI,OAAO,WAAW,OAAW,OAAM,KAAK,UAAU;AACtD,MAAI,OAAO,eAAe,MAAM,OAAW,OAAM,KAAK,iBAAiB;AACvE,MAAI,OAAO,mBAAmB,MAAM,QAAW;AAC7C,UAAM,KAAK,qBAAqB;AAAA,EAClC;AACA,MAAI,OAAO,kBAAkB,MAAM,QAAW;AAC5C,UAAM,KAAK,oBAAoB;AAAA,EACjC;AACA,MAAI,OAAO,gBAAgB,MAAM,OAAW,OAAM,KAAK,kBAAkB;AACzE,MAAI,OAAO,oBAAoB,MAAM,QAAW;AAC9C,UAAM,KAAK,sBAAsB;AAAA,EACnC;AACA,MAAI,OAAO,iBAAiB,MAAM,OAAW,OAAM,KAAK,mBAAmB;AAC3E,MAAI,gBAAgB,OAAO,aAAa,MAAM,QAAW;AACvD,UAAM,KAAK,eAAe;AAAA,EAC5B;AACA,MAAI,OAAO,gBAAgB,OAAW,OAAM,KAAK,eAAe;AAChE,MAAI,OAAO,eAAe,OAAW,OAAM,KAAK,cAAc;AAC9D,MAAI,OAAO,aAAa,OAAW,OAAM,KAAK,YAAY;AAC1D,MAAI,OAAO,cAAc,MAAM,OAAW,OAAM,KAAK,gBAAgB;AACrE,MAAI,OAAO,cAAc,OAAW,OAAM,KAAK,aAAa;AAC5D,MAAI,gBAAgB,OAAO,UAAU,OAAW,OAAM,KAAK,SAAS;AAEpE,SAAO;AACT;AAiBO,SAAS,eACd,MACA,OACM;AACN,MAAI,UAAU,QAAW;AACvB,UAAM,IAAI;AAAA,MACR;AAAA,QACE,2CAA2C,IAAI;AAAA,QAC/C,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AACF;AACO,SAAS,0BACd,QACA,WACM;AACN,MAAI,OAAO,UAAU,UAAa,OAAO,YAAY,MAAM;AACzD,UAAM,IAAI;AAAA,MACR,cAAc,gDAAgD,SAAS;AAAA,IACzE;AAAA,EACF;AACF;AAEO,SAAS,qBACd,OACA,WAC2D;AAC3D,MAAI,UAAU,QAAW;AACvB,WAAO,CAAC;AAAA,EACV;AACA,MACE,UAAU,SACV,UAAU,YACV,UAAU,UACV,UAAU,WACV;AACA,UAAM,IAAI;AAAA,MACR;AAAA,QACE;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO,EAAE,MAAM,MAAM;AACvB;AACO,SAAS,8BACd,QACA,aACA,SACA,WACM;AACN,MAAI,YAAY,SAAS,SAAS;AAChC,UAAM,IAAI;AAAA,MACR;AAAA,QACE,yCAAyC,MAAM,OAAO,YAAY,MAAM,OAAO,EAAE,KAAK,GAAG,CAAC;AAAA,QAC1F;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,4BACd,QACA,aACA,SACA,WACM;AACN,MAAI,YAAY,SAAS,SAAS;AAChC,UAAM,IAAI;AAAA,MACR;AAAA,QACE,+CAA+C,MAAM,OAAO,YAAY,MAAM,OAAO,EAAE,KAAK,GAAG,CAAC;AAAA,QAChG;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,yCACd,SACA,aACA,SACA,WACM;AACN,MAAI,YAAY,SAAS,SAAS;AAChC,UAAM,IAAI;AAAA,MACR;AAAA,QACE,yCAAyC,OAAO,OAAO,YAAY,MAAM,OAAO,EAAE,KAAK,GAAG,CAAC;AAAA,QAC3F;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,sBACd,MACA,OACA,WACM;AACN,MAAI,UAAU,QAAW;AACvB,UAAM,IAAI;AAAA,MACR;AAAA,QACE,2CAA2C,IAAI;AAAA,QAC/C;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,6BACd,MACA,OACA,WACM;AACN,MAAI,UAAU,QAAW;AACvB,UAAM,IAAI;AAAA,MACR;AAAA,QACE,2CAA2C,IAAI;AAAA,QAC/C;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,uBACd,MACA,OACA,WACM;AACN,MAAI,UAAU,QAAW;AACvB,UAAM,IAAI;AAAA,MACR;AAAA,QACE,4CAA4C,IAAI;AAAA,QAChD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,8BACd,MACA,OACA,WACM;AACN,MAAI,UAAU,QAAW;AACvB,UAAM,IAAI;AAAA,MACR;AAAA,QACE,4CAA4C,IAAI;AAAA,QAChD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,qBAAqB,QAAqC;AACxE,aAAW,QAAQ,qBAAqB,MAAM,GAAG;AAC/C,UAAM,IAAI;AAAA,MACR;AAAA,QACE,0CAA0C,IAAI;AAAA,QAC9C;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,kBACd,QACA,MACA,OACA,WACM;AACN,MAAI,UAAU,QAAW;AACvB,UAAM,IAAI;AAAA,MACR;AAAA,QACE,SAAS,MAAM,+BAA+B,IAAI;AAAA,QAClD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,yBACd,QACA,MACA,OACA,WACM;AACN,MAAI,UAAU,QAAW;AACvB,UAAM,IAAI;AAAA,MACR;AAAA,QACE,SAAS,MAAM,+BAA+B,IAAI;AAAA,QAClD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,wBACd,QACA,OACA,WACM;AACN,MAAI,UAAU,MAAM;AAClB;AAAA,EACF;AAEA,QAAM,IAAI;AAAA,IACR;AAAA,MACE,SAAS,MAAM;AAAA,MACf;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,0BACd,QACA,QASA,WACM;AACN,oBAAkB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC5D,oBAAkB,QAAQ,YAAY,OAAO,QAAQ,SAAS;AAC9D;AAAA,IACE;AAAA,IACA;AAAA,IACA,OAAO,cAAc;AAAA,IACrB;AAAA,EACF;AACA,oBAAkB,QAAQ,SAAS,OAAO,KAAK,SAAS;AACxD,oBAAkB,QAAQ,YAAY,OAAO,QAAQ,SAAS;AAC9D;AAAA,IACE;AAAA,IACA;AAAA,IACA,OAAO,eAAe;AAAA,IACtB;AAAA,EACF;AACA,oBAAkB,QAAQ,YAAY,OAAO,QAAQ,SAAS;AAChE;;;ACnbA;AACA;AAIO,SAAS,eACd,OACA,WACiC;AACjC,MAAI,UAAU,QAAW;AACvB,WAAO;AAAA,EACT;AACA,MAAI,UAAU,eAAe,UAAU,OAAO;AAC5C,WAAO;AAAA,EACT;AAEA,QAAM,IAAI;AAAA,IACR;AAAA,MACE,mBAAmB,KAAK;AAAA,MACxB;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,kBAAkB,QAGd;AAClB,MAAI,OAAO,SAAS,QAAQ,OAAO,UAAU,MAAM;AACjD,UAAM,IAAI;AAAA,MACR;AAAA,QACE;AAAA,QACA,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAEA,MAAI,OAAO,SAAS,MAAM;AACxB,WAAO;AAAA,EACT;AACA,MAAI,OAAO,UAAU,MAAM;AACzB,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEO,SAAS,kBACd,OACA,WACqC;AACrC,MAAI,UAAU,QAAW;AACvB,WAAO,CAAC;AAAA,EACV;AAEA,SAAO;AAAA,IACL,eAAe,4BAA4B,OAAO,cAAc,SAAS;AAAA,EAC3E;AACF;AAEO,SAAS,uBACd,OACA,WAC+B;AAC/B,MAAI,UAAU,QAAW;AACvB,WAAO,CAAC;AAAA,EACV;AAEA,SAAO;AAAA,IACL,SAAS,4BAA4B,OAAO,aAAa,SAAS;AAAA,EACpE;AACF;AACO,SAAS,4BACd,OACA,MACA,WACQ;AACR,QAAM,SAAS,OAAO,KAAK;AAE3B,MAAI,CAAC,OAAO,UAAU,MAAM,KAAK,SAAS,GAAG;AAC3C,UAAM,IAAI;AAAA,MACR,cAAc,GAAG,IAAI,oCAAoC,SAAS;AAAA,IACpE;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAAS,yBACd,OACA,MACA,WACQ;AACR,QAAM,SAAS,OAAO,KAAK;AAE3B,MAAI,CAAC,OAAO,UAAU,MAAM,KAAK,UAAU,GAAG;AAC5C,UAAM,IAAI;AAAA,MACR,cAAc,GAAG,IAAI,gCAAgC,SAAS;AAAA,IAChE;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAAS,8BACd,aACA,QAIA;AACA,QAAM,wBAAkC,CAAC;AACzC,QAAM,mBAGF;AAAA,IACF,GAAG;AAAA,EACL;AAEA,WAAS,QAAQ,GAAG,QAAQ,YAAY,QAAQ,SAAS,GAAG;AAC1D,UAAM,OAAO,YAAY,KAAK;AAE9B,QAAI,SAAS,QAAW;AACtB;AAAA,IACF;AAEA,YAAQ,MAAM;AAAA,MACZ,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,yBAAiB,KAAK,MAAM,CAAC,CAAC,IAAI;AAClC;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK,QAAQ;AACX,cAAM,QAAQ,YAAY,QAAQ,CAAC;AAEnC,YAAI,UAAU,QAAW;AACvB,gCAAsB,KAAK,IAAI;AAC/B;AAAA,QACF;AAEA,yBAAiB,KAAK,MAAM,CAAC,CAAC,IAAI;AAClC,iBAAS;AACT;AAAA,MACF;AAAA,MACA;AACE,8BAAsB,KAAK,IAAI;AAAA,IACnC;AAAA,EACF;AAEA,SAAO;AAAA,IACL,aAAa;AAAA,IACb,QAAQ;AAAA,EACV;AACF;AAEO,SAAS,8BACd,MACmB;AACnB,QAAM,aAAuB,CAAC;AAC9B,MAAI,UAAU;AACd,QAAM,mBAAmB,4BAA4B,IAAI;AAEzD,WAAS,QAAQ,GAAG,QAAQ,KAAK,QAAQ,SAAS,GAAG;AACnD,UAAM,OAAO,KAAK,KAAK;AAEvB,QAAI,SAAS,QAAW;AACtB;AAAA,IACF;AAEA,QAAI,SAAS;AACX,iBAAW,KAAK,IAAI;AACpB;AAAA,IACF;AAEA,QAAI,SAAS,MAAM;AACjB,iBAAW,KAAK,IAAI;AACpB,gBAAU;AACV;AAAA,IACF;AAEA,QAAI,KAAK,WAAW,SAAS,KAAK,kBAAkB;AAClD,iBAAW,KAAK,QAAQ;AACxB,iBAAW,KAAK,gBAAgB,KAAK,MAAM,UAAU,MAAM,CAAC,EAAE;AAC9D;AAAA,IACF;AAEA,QAAI,SAAS,YAAY,kBAAkB;AACzC,YAAMC,SAAQ,KAAK,QAAQ,CAAC;AAE5B,iBAAW,KAAK,IAAI;AACpB,UAAIA,WAAU,UAAa,CAACA,OAAM,WAAW,GAAG,GAAG;AACjD,mBAAW,KAAK,cAAc;AAC9B,mBAAW,KAAKA,MAAK;AACrB,iBAAS;AAAA,MACX;AACA;AAAA,IACF;AAEA,QAAI,SAAS,gBAAgB,SAAS,eAAe,SAAS,WAAW;AACvE,iBAAW,KAAK,IAAI;AACpB;AAAA,IACF;AAEA,UAAM,QAAQ,KAAK,QAAQ,CAAC;AAE5B,QAAI,UAAU,UAAa,CAAC,MAAM,WAAW,GAAG,GAAG;AACjD,iBAAW,KAAK,IAAI;AACpB,iBAAW,KAAK,KAAK;AACrB,eAAS;AACT;AAAA,IACF;AAEA,QAAI,UAAU,UAAa,OAAO,KAAK,KAAK,GAAG;AAC7C,iBAAW,KAAK,GAAG,IAAI,IAAI,KAAK,EAAE;AAClC,eAAS;AACT;AAAA,IACF;AAEA,eAAW,KAAK,IAAI;AACpB,QAAI,SAAS,cAAc;AACzB,iBAAW,KAAK,GAAG;AAAA,IACrB;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAAS,4BAA4B,MAAkC;AAC5E,QAAM,QAAQ,KAAK,CAAC;AACpB,QAAM,SAAS,KAAK,CAAC;AAErB,MAAI,WAAW,SAAS,WAAW,OAAO;AACxC,WAAO;AAAA,EACT;AACA,MAAI,0BAA0B,KAAK,GAAG;AACpC,WAAO;AAAA,EACT;AAEA,SACE,eAAe,KAAK,KACpB,KAAK,KAAK,CAAC,SAAS,KAAK,SAAS,OAAO,KAAK,KAAK,SAAS,YAAY,CAAC;AAE7E;AACO,SAAS,2BACd,KACA,QACQ;AACR,SAAO,iBAAiB;AAAA,IACtB;AAAA,IACA,GAAI,WAAW,SAAY,CAAC,IAAI,CAAC,MAAM;AAAA,IACvC;AAAA,EACF,CAAC;AACH;;;ATxOO,SAAS,sBACd,QACA,aACA,QACA,YAAY,MAAM,MAAM,WACxB,UAGI,CAAC,GACe;AACpB,QAAM,aAAa,8BAA8B,aAAa,MAAM;AAEpE,gBAAc,WAAW;AACzB,WAAS,WAAW;AAEpB,QAAM,cAAc,YAAY,CAAC;AAEjC,MAAI,OAAO,SAAS,MAAM;AACxB,WAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU,6BAA6B,MAAM;AAAA,MAC7C,MAAM;AAAA,IACR;AAAA,EACF;AAEA,MAAI,gBAAgB,UAAa,gBAAgB,KAAK;AACpD,UAAM,IAAI;AAAA,MACR,cAAc,iCAAiC,MAAM,GAAG,SAAS;AAAA,IACnE;AAAA,EACF;AAEA,iCAA+B,QAAQ,WAAW;AAElD,MAAI,OAAO,YAAY,MAAM;AAC3B,UAAM,IAAI;AAAA,MACR;AAAA,QACE,SAAS,MAAM;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,kCAAgC,QAAQ,QAAQ,SAAS;AAEzD,UAAQ,QAAQ;AAAA,IACd,KAAK,UAAU;AACb,oCAA8B,QAAQ,aAAa,GAAG,SAAS;AAC/D,wBAAkB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC5D;AAAA,QACE;AAAA,QACA;AAAA,QACA,OAAO,cAAc;AAAA,QACrB;AAAA,MACF;AACA,wBAAkB,QAAQ,YAAY,OAAO,QAAQ,SAAS;AAC9D;AAAA,QACE;AAAA,QACA;AAAA,QACA,OAAO,eAAe;AAAA,QACtB;AAAA,MACF;AACA,wBAAkB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC5D,wBAAkB,QAAQ,QAAQ,OAAO,IAAI,SAAS;AACtD,wBAAkB,QAAQ,aAAa,OAAO,SAAS,SAAS;AAChE,wBAAkB,QAAQ,aAAa,OAAO,SAAS,SAAS;AAChE,wBAAkB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC5D,wBAAkB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC5D,wBAAkB,QAAQ,cAAc,OAAO,UAAU,SAAS;AAClE,wBAAkB,QAAQ,YAAY,OAAO,QAAQ,SAAS;AAC9D,+BAAyB,QAAQ,SAAS,OAAO,KAAK,SAAS;AAC/D;AAAA,QACE;AAAA,QACA;AAAA,QACA,OAAO;AAAA,QACP;AAAA,MACF;AACA,wBAAkB,QAAQ,UAAU,OAAO,MAAM,SAAS;AAC1D,wBAAkB,QAAQ,SAAS,OAAO,KAAK,SAAS;AACxD,wBAAkB,QAAQ,YAAY,OAAO,QAAQ,SAAS;AAC9D,wBAAkB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC5D,+BAAyB,QAAQ,aAAa,OAAO,SAAS,SAAS;AACvE,+BAAyB,QAAQ,aAAa,OAAO,SAAS,SAAS;AACvE,+BAAyB,QAAQ,WAAW,OAAO,OAAO,SAAS;AACnE,UACE,OAAO,WAAW,UAClB,uBAAuB,OAAO,MAAM,MAAM,QAC1C;AACA,cAAM,IAAI;AAAA,UACR;AAAA,YACE;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,QACL,MAAM;AAAA,UACJ;AAAA,UACA;AAAA,UACA,GAAI,OAAO,WAAW,SAAY,CAAC,IAAI,EAAE,YAAY,OAAO,OAAO;AAAA,UACnE,GAAI,OAAO,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,OAAO,KAAK;AAAA,UACzD,GAAI,OAAO,YAAY,SAAY,CAAC,IAAI,EAAE,SAAS,OAAO,QAAQ;AAAA,QACpE;AAAA,QACA,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,KAAK;AACH,oCAA8B,QAAQ,aAAa,GAAG,SAAS;AAC/D,wBAAkB,QAAQ,YAAY,OAAO,QAAQ,SAAS;AAC9D,wBAAkB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC5D;AAAA,QACE;AAAA,QACA;AAAA,QACA,OAAO,cAAc;AAAA,QACrB;AAAA,MACF;AACA,wBAAkB,QAAQ,YAAY,OAAO,QAAQ,SAAS;AAC9D,wBAAkB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC5D,wBAAkB,QAAQ,QAAQ,OAAO,IAAI,SAAS;AACtD,wBAAkB,QAAQ,aAAa,OAAO,SAAS,SAAS;AAChE,wBAAkB,QAAQ,aAAa,OAAO,SAAS,SAAS;AAChE,wBAAkB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC5D,wBAAkB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC5D,wBAAkB,QAAQ,cAAc,OAAO,UAAU,SAAS;AAClE,wBAAkB,QAAQ,YAAY,OAAO,QAAQ,SAAS;AAC9D,+BAAyB,QAAQ,SAAS,OAAO,KAAK,SAAS;AAC/D;AAAA,QACE;AAAA,QACA;AAAA,QACA,OAAO;AAAA,QACP;AAAA,MACF;AACA,wBAAkB,QAAQ,UAAU,OAAO,MAAM,SAAS;AAC1D,+BAAyB,QAAQ,aAAa,OAAO,SAAS,SAAS;AACvE,+BAAyB,QAAQ,UAAU,OAAO,MAAM,SAAS;AACjE,aAAO;AAAA,QACL,MAAM;AAAA,UACJ;AAAA,UACA;AAAA,UACA,GAAI,OAAO,WAAW,SAAY,CAAC,IAAI,EAAE,YAAY,OAAO,OAAO;AAAA,UACnE,cACE,OAAO,eAAe,MAAM,SACxB,eAAe,YAAY,iBAAiB,IAC5C,eAAe,OAAO,eAAe,GAAG,iBAAiB;AAAA,QACjE;AAAA,QACA,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF,KAAK,WAAW;AACd,YAAM,YAAY,6BAA6B,YAAY,CAAC,CAAC;AAC7D,YAAM,oBACJ,yBAAyB,WAAW,EAAE,eAAe;AAEvD,oCAA8B,QAAQ,aAAa,GAAG,SAAS;AAC/D,gCAA0B,QAAQ,QAAQ,SAAS;AACnD,wBAAkB,QAAQ,YAAY,OAAO,QAAQ,SAAS;AAC9D,wBAAkB,QAAQ,aAAa,OAAO,SAAS,SAAS;AAChE,wBAAkB,QAAQ,aAAa,OAAO,SAAS,SAAS;AAChE,wBAAkB,QAAQ,YAAY,OAAO,QAAQ,SAAS;AAC9D,wBAAkB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC5D,wBAAkB,QAAQ,cAAc,OAAO,UAAU,SAAS;AAClE,wBAAkB,QAAQ,UAAU,OAAO,MAAM,SAAS;AAC1D,wBAAkB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC5D,wBAAkB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC5D,wBAAkB,QAAQ,QAAQ,OAAO,IAAI,SAAS;AACtD,+BAAyB,QAAQ,SAAS,OAAO,KAAK,SAAS;AAC/D;AAAA,QACE;AAAA,QACA;AAAA,QACA,OAAO;AAAA,QACP;AAAA,MACF;AACA,+BAAyB,QAAQ,aAAa,OAAO,SAAS,SAAS;AACvE,+BAAyB,QAAQ,WAAW,OAAO,OAAO,SAAS;AACnE,wBAAkB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC5D,wBAAkB,QAAQ,UAAU,OAAO,MAAM,SAAS;AAC1D,aAAO;AAAA,QACL,MAAM;AAAA,UACJ;AAAA,UACA,aAAa;AAAA,UACb,GAAI,cAAc,SAAY,CAAC,IAAI,EAAE,UAAU;AAAA,UAC/C,GAAI,OAAO,SAAS,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAAA,QAC/C;AAAA,QACA,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,KAAK,UAAU;AACb,YAAM,QAAQ,OAAO;AAErB,UAAI,UAAU,QAAW;AACvB,cAAM,IAAI;AAAA,UACR,cAAc,6CAA6C,SAAS;AAAA,QACtE;AAAA,MACF;AACA,oCAA8B,QAAQ,aAAa,GAAG,SAAS;AAC/D,gCAA0B,QAAQ,QAAQ,SAAS;AACnD,wBAAkB,QAAQ,YAAY,OAAO,QAAQ,SAAS;AAC9D,wBAAkB,QAAQ,aAAa,OAAO,SAAS,SAAS;AAChE,wBAAkB,QAAQ,UAAU,OAAO,MAAM,SAAS;AAC1D,wBAAkB,QAAQ,UAAU,OAAO,MAAM,SAAS;AAC1D,+BAAyB,QAAQ,aAAa,OAAO,SAAS,SAAS;AACvE,wBAAkB,QAAQ,QAAQ,OAAO,IAAI,SAAS;AACtD,+BAAyB,QAAQ,aAAa,OAAO,SAAS,SAAS;AACvE,gCAA0B,QAAQ,aAAa,OAAO,OAAO,SAAS;AAEtE,aAAO;AAAA,QACL,MAAM;AAAA,UACJ;AAAA,UACA,GAAI,OAAO,QAAQ,SAAY,CAAC,IAAI,EAAE,KAAK,OAAO,IAAI;AAAA,UACtD;AAAA,UACA,GAAI,OAAO,cAAc,SACrB,CAAC,IACD,EAAE,WAAW,OAAO,UAAU;AAAA,UAClC,GAAI,OAAO,WAAW,SAAY,CAAC,IAAI,EAAE,QAAQ,OAAO,OAAO;AAAA,UAC/D,GAAI,OAAO,UAAU,SACjB,CAAC,IACD;AAAA,YACE,OAAO;AAAA,cACL,OAAO;AAAA,cACP;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,UACJ,GAAG,uBAAuB,OAAO,SAAS,SAAS;AAAA,UACnD,GAAG,kBAAkB,OAAO,UAAU,SAAS;AAAA,UAC/C,QAAQ,kBAAkB,MAAM;AAAA,UAChC,GAAI,OAAO,UAAU,SACjB,CAAC,IACD;AAAA,YACE,OAAO;AAAA,cACL,OAAO;AAAA,cACP;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,UACJ;AAAA,UACA,GAAI,OAAO,gBAAgB,MAAM,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;AAAA,UACnE,GAAI,QAAQ,iBAAiB,SACzB,CAAC,IACD,EAAE,OAAO,QAAQ,aAAa;AAAA,UAClC,GAAI,QAAQ,kBAAkB,SAC1B,CAAC,IACD,EAAE,eAAe,QAAQ,cAAc;AAAA,QAC7C;AAAA,QACA,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,KAAK,QAAQ;AACX,oCAA8B,QAAQ,aAAa,GAAG,SAAS;AAC/D,gCAA0B,QAAQ,QAAQ,SAAS;AACnD,wBAAkB,QAAQ,YAAY,OAAO,QAAQ,SAAS;AAC9D,wBAAkB,QAAQ,aAAa,OAAO,SAAS,SAAS;AAChE,wBAAkB,QAAQ,UAAU,OAAO,MAAM,SAAS;AAC1D,wBAAkB,QAAQ,UAAU,OAAO,MAAM,SAAS;AAC1D,wBAAkB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC5D,gCAA0B,QAAQ,SAAS;AAC3C,wBAAkB,QAAQ,QAAQ,OAAO,IAAI,SAAS;AACtD,+BAAyB,QAAQ,aAAa,OAAO,SAAS,SAAS;AACvE,gCAA0B,QAAQ,aAAa,OAAO,OAAO,SAAS;AACtE,aAAO;AAAA,QACL,MAAM;AAAA,UACJ;AAAA,UACA,GAAI,OAAO,QAAQ,SAAY,CAAC,IAAI,EAAE,KAAK,OAAO,IAAI;AAAA,UACtD;AAAA,UACA,GAAI,OAAO,cAAc,SACrB,CAAC,IACD,EAAE,WAAW,OAAO,UAAU;AAAA,UAClC,GAAI,OAAO,WAAW,SAAY,CAAC,IAAI,EAAE,QAAQ,OAAO,OAAO;AAAA,UAC/D,GAAI,OAAO,UAAU,SACjB,CAAC,IACD;AAAA,YACE,OAAO;AAAA,cACL,OAAO;AAAA,cACP;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,UACJ,GAAG,uBAAuB,OAAO,SAAS,SAAS;AAAA,UACnD,GAAG,kBAAkB,OAAO,UAAU,SAAS;AAAA,UAC/C,QAAQ,kBAAkB,MAAM;AAAA,UAChC,GAAI,OAAO,UAAU,SACjB,CAAC,IACD;AAAA,YACE,OAAO;AAAA,cACL,OAAO;AAAA,cACP;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,UACJ,GAAI,OAAO,YAAY,OAAO,EAAE,SAAS,KAAK,IAAI,CAAC;AAAA,UACnD,GAAI,QAAQ,iBAAiB,SACzB,CAAC,IACD,EAAE,OAAO,QAAQ,aAAa;AAAA,UAClC,GAAI,QAAQ,kBAAkB,SAC1B,CAAC,IACD,EAAE,eAAe,QAAQ,cAAc;AAAA,QAC7C;AAAA,QACA,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,KAAK,OAAO;AACV,oCAA8B,QAAQ,aAAa,GAAG,SAAS;AAC/D,gCAA0B,QAAQ,QAAQ,SAAS;AACnD,wBAAkB,QAAQ,YAAY,OAAO,QAAQ,SAAS;AAC9D,wBAAkB,QAAQ,aAAa,OAAO,SAAS,SAAS;AAChE,wBAAkB,QAAQ,UAAU,OAAO,MAAM,SAAS;AAC1D,wBAAkB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC5D,wBAAkB,QAAQ,YAAY,OAAO,QAAQ,SAAS;AAC9D,wBAAkB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC5D,wBAAkB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC5D,gCAA0B,QAAQ,SAAS;AAC3C,wBAAkB,QAAQ,UAAU,OAAO,MAAM,SAAS;AAC1D,wBAAkB,QAAQ,QAAQ,OAAO,IAAI,SAAS;AACtD,+BAAyB,QAAQ,SAAS,OAAO,KAAK,SAAS;AAC/D,+BAAyB,QAAQ,aAAa,OAAO,SAAS,SAAS;AACvE,aAAO;AAAA,QACL,MAAM;AAAA,UACJ;AAAA,UACA;AAAA,UACA,GAAI,OAAO,cAAc,SACrB,CAAC,IACD,EAAE,WAAW,OAAO,UAAU;AAAA,UAClC,GAAG,uBAAuB,OAAO,SAAS,SAAS;AAAA,UACnD,GAAG,kBAAkB,OAAO,UAAU,SAAS;AAAA,UAC/C,QAAQ,kBAAkB,MAAM;AAAA,UAChC,UAAU;AAAA,UACV,GAAI,OAAO,YAAY,OAAO,EAAE,SAAS,KAAK,IAAI,CAAC;AAAA,QACrD;AAAA,QACA,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,KAAK,WAAW;AACd,oCAA8B,QAAQ,aAAa,GAAG,SAAS;AAC/D,gCAA0B,QAAQ,QAAQ,SAAS;AACnD;AAAA,QACE;AAAA,QACA;AAAA,QACA,OAAO;AAAA,QACP;AAAA,MACF;AACA,wBAAkB,QAAQ,YAAY,OAAO,QAAQ,SAAS;AAC9D,wBAAkB,QAAQ,aAAa,OAAO,SAAS,SAAS;AAChE,wBAAkB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC5D,wBAAkB,QAAQ,UAAU,OAAO,MAAM,SAAS;AAC1D,YAAM,gBAAgB,yBAAyB,aAAa,SAAS;AACrE,UAAI,kBAAkB,SAAS;AAC7B,0BAAkB,QAAQ,UAAU,OAAO,MAAM,SAAS;AAAA,MAC5D;AACA,gCAA0B,QAAQ,SAAS;AAC3C,wBAAkB,QAAQ,QAAQ,OAAO,IAAI,SAAS;AACtD,+BAAyB,QAAQ,aAAa,OAAO,SAAS,SAAS;AACvE,aAAO;AAAA,QACL,MAAM;AAAA,UACJ;AAAA,UACA,GAAI,OAAO,QAAQ,SAAY,CAAC,IAAI,EAAE,KAAK,OAAO,IAAI;AAAA,UACtD;AAAA,UACA,GAAI,OAAO,WAAW,SAAY,CAAC,IAAI,EAAE,QAAQ,OAAO,OAAO;AAAA,UAC/D,GAAG,uBAAuB,OAAO,SAAS,SAAS;AAAA,UACnD,GAAG,kBAAkB,OAAO,UAAU,SAAS;AAAA,UAC/C,QAAQ,kBAAkB,MAAM;AAAA,UAChC,GAAI,OAAO,UAAU,SACjB,CAAC,IACD;AAAA,YACE,OAAO;AAAA,cACL,OAAO;AAAA,cACP;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,UACJ,UAAU;AAAA,UACV,GAAI,OAAO,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,OAAO,MAAM;AAAA,UAC5D,GAAI,OAAO,YAAY,OAAO,EAAE,SAAS,KAAK,IAAI,CAAC;AAAA,UACnD,GAAI,OAAO,gBAAgB,MAAM,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;AAAA,UACnE,GAAI,kBAAkB,WAClB,qBAAqB,OAAO,MAAM,SAAS,IAC3C,CAAC;AAAA,QACP;AAAA,QACA,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,KAAK,YAAY;AACf,oCAA8B,QAAQ,aAAa,GAAG,SAAS;AAC/D,gCAA0B,QAAQ,QAAQ,SAAS;AACnD;AAAA,QACE;AAAA,QACA;AAAA,QACA,OAAO;AAAA,QACP;AAAA,MACF;AACA,wBAAkB,QAAQ,YAAY,OAAO,QAAQ,SAAS;AAC9D,wBAAkB,QAAQ,aAAa,OAAO,SAAS,SAAS;AAChE,wBAAkB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC5D,wBAAkB,QAAQ,UAAU,OAAO,MAAM,SAAS;AAC1D,wBAAkB,QAAQ,UAAU,OAAO,MAAM,SAAS;AAC1D,wBAAkB,QAAQ,QAAQ,OAAO,IAAI,SAAS;AACtD,wBAAkB,QAAQ,cAAc,OAAO,UAAU,SAAS;AAClE,gCAA0B,QAAQ,SAAS;AAC3C,+BAAyB,QAAQ,aAAa,OAAO,SAAS,SAAS;AACvE,gCAA0B,aAAa,SAAS;AAChD,aAAO;AAAA,QACL,MAAM;AAAA,UACJ;AAAA,UACA,GAAI,OAAO,QAAQ,SAAY,CAAC,IAAI,EAAE,KAAK,OAAO,IAAI;AAAA,UACtD;AAAA,UACA,GAAI,OAAO,WAAW,SAAY,CAAC,IAAI,EAAE,QAAQ,OAAO,OAAO;AAAA,UAC/D,GAAG,uBAAuB,OAAO,SAAS,SAAS;AAAA,UACnD,QAAQ,kBAAkB,MAAM;AAAA,UAChC,GAAI,OAAO,UAAU,SACjB,CAAC,IACD;AAAA,YACE,OAAO;AAAA,cACL,OAAO;AAAA,cACP;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,UACJ,UAAU;AAAA,UACV,GAAI,OAAO,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,OAAO,MAAM;AAAA,UAC5D,GAAI,OAAO,YAAY,OAAO,EAAE,SAAS,KAAK,IAAI,CAAC;AAAA,UACnD,GAAI,OAAO,gBAAgB,MAAM,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;AAAA,QACrE;AAAA,QACA,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,KAAK,QAAQ;AACX,oCAA8B,QAAQ,aAAa,GAAG,SAAS;AAC/D,gCAA0B,QAAQ,QAAQ,SAAS;AACnD;AAAA,QACE;AAAA,QACA;AAAA,QACA,OAAO;AAAA,QACP;AAAA,MACF;AACA,wBAAkB,QAAQ,aAAa,OAAO,SAAS,SAAS;AAChE,wBAAkB,QAAQ,aAAa,OAAO,SAAS,SAAS;AAChE,wBAAkB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC5D,wBAAkB,QAAQ,UAAU,OAAO,MAAM,SAAS;AAC1D,wBAAkB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC5D,wBAAkB,QAAQ,YAAY,OAAO,QAAQ,SAAS;AAC9D,wBAAkB,QAAQ,cAAc,OAAO,UAAU,SAAS;AAClE,+BAAyB,QAAQ,aAAa,OAAO,SAAS,SAAS;AACvE,wBAAkB,QAAQ,UAAU,OAAO,MAAM,SAAS;AAC1D,wBAAkB,QAAQ,QAAQ,OAAO,IAAI,SAAS;AACtD,+BAAyB,QAAQ,SAAS,OAAO,KAAK,SAAS;AAC/D,4BAAsB,aAAa,SAAS;AAC5C,aAAO;AAAA,QACL,MAAM;AAAA,UACJ;AAAA,UACA;AAAA,UACA,QACE,OAAO,WAAW,SACd,MACA,yBAAyB,OAAO,QAAQ,YAAY,SAAS;AAAA,UACnE,QAAQ,kBAAkB,MAAM;AAAA,UAChC,UAAU;AAAA,QACZ;AAAA,QACA,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,KAAK,QAAQ;AACX,oCAA8B,QAAQ,aAAa,GAAG,SAAS;AAC/D,gCAA0B,QAAQ,QAAQ,SAAS;AACnD,wBAAkB,QAAQ,YAAY,OAAO,QAAQ,SAAS;AAC9D,wBAAkB,QAAQ,aAAa,OAAO,SAAS,SAAS;AAChE,wBAAkB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC5D,wBAAkB,QAAQ,aAAa,OAAO,SAAS,SAAS;AAChE,wBAAkB,QAAQ,YAAY,OAAO,QAAQ,SAAS;AAC9D,wBAAkB,QAAQ,cAAc,OAAO,UAAU,SAAS;AAClE,wBAAkB,QAAQ,UAAU,OAAO,MAAM,SAAS;AAC1D,+BAAyB,QAAQ,aAAa,OAAO,SAAS,SAAS;AACvE,wBAAkB,QAAQ,QAAQ,OAAO,IAAI,SAAS;AACtD,+BAAyB,QAAQ,SAAS,OAAO,KAAK,SAAS;AAC/D,+BAAyB,QAAQ,aAAa,OAAO,SAAS,SAAS;AAEvE,aAAO;AAAA,QACL,MAAM;AAAA,UACJ;AAAA,UACA;AAAA,UACA,GAAI,YAAY,CAAC,MAAM,SAAY,CAAC,IAAI,EAAE,QAAQ,YAAY,CAAC,EAAE;AAAA,UACjE,QAAQ,kBAAkB,MAAM;AAAA,UAChC,GAAI,OAAO,UAAU,SACjB,CAAC,IACD;AAAA,YACE,OAAO;AAAA,cACL,OAAO;AAAA,cACP;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,QACN;AAAA,QACA,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,0BACP,QACA,aACA,OACA,WACM;AACN,MAAI,UAAU,QAAW;AACvB;AAAA,EACF;AAEA,QAAM,YAAY,yBAAyB,WAAW,EAAE;AACxD,MACE,cAAc,oBACd,WAAW,WAAW,iBAAiB,MAAM,MAC7C;AACA;AAAA,EACF;AAEA,oBAAkB,QAAQ,WAAW,OAAO,SAAS;AACvD;AAEA,SAAS,gCACP,QACA,QACA,WACM;AACN,MAAI,OAAO,gBAAgB,MAAM,MAAM;AACrC;AAAA,EACF;AACA,MACE,WAAW,aACT,WAAW,aAAa,WAAW,eACnC,OAAO,UAAU,QACnB;AACA;AAAA,EACF;AAEA;AAAA,IACE;AAAA,IACA;AAAA,IACA,OAAO,gBAAgB;AAAA,IACvB;AAAA,EACF;AACF;;;AUtkBA,SAAS,iBAAiB;AAC1B,SAAS,6BAA6B;AAGtC;;;ACJA;;;ACAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AAGP;AAiBO,SAAS,gCACd,KACA,aACA,QACA,QACA,MACA,QACoB;AACpB,QAAM,YAAY,2BAA2B,KAAK,MAAM;AAExD,UAAQ,OAAO,MAAM;AAAA,IACnB,KAAK;AACH,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL;AAAA,QACA,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL;AAAA,QACA,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL;AAAA,QACA,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL;AAAA,QACA,OAAO;AAAA,QACP,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL;AAAA,QACA,OAAO;AAAA,QACP,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL;AAAA,QACA,OAAO;AAAA,QACP,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,OAAO;AAAA,QACP,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,EACJ;AACF;AAEA,SAAS,oCACP,KACA,QACA,MACA,QACA,WACoB;AACpB,MAAI,WAAW,QAAQ;AACrB,UAAM,IAAI;AAAA,MACR;AAAA,QACE;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,2BAAyB,aAAa,OAAO,WAAW,SAAS;AACjE,2BAAyB,WAAW,OAAO,SAAS,SAAS;AAC7D,2BAAyB,SAAS,OAAO,OAAO,SAAS;AACzD,2BAAyB,YAAY,OAAO,UAAU,SAAS;AAC/D,2BAAyB,WAAW,OAAO,SAAS,SAAS;AAC7D;AAAA,IACE;AAAA,IACA,OAAO,gBAAgB;AAAA,IACvB;AAAA,EACF;AAEA,SAAO,sBAAsB,QAAQ,CAAC,KAAK,GAAG,IAAI,GAAG,QAAQ,SAAS;AACxE;AAEA,SAAS,sCACP,aACA,aACA,mBACA,QACA,MACA,QACA,WACoB;AACpB,gCAA8B,QAAQ,SAAS;AAC/C,2BAAyB,SAAS,OAAO,OAAO,SAAS;AACzD,2BAAyB,UAAU,OAAO,QAAQ,SAAS;AAC3D,2BAAyB,MAAM,OAAO,IAAI,SAAS;AAEnD,MAAI,KAAK,SAAS,GAAG;AACnB,UAAM,IAAI;AAAA,MACR;AAAA,QACE,mDAAmD,KAAK,CAAC,CAAC;AAAA,QAC1D;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,UAAQ,QAAQ;AAAA,IACd,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,UACJ,QAAQ;AAAA,UACR;AAAA,UACA;AAAA,UACA,MAAM;AAAA,UACN,GAAI,OAAO,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,OAAO,KAAK;AAAA,QAC3D;AAAA,QACA,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,UACJ,QAAQ;AAAA,UACR;AAAA,UACA;AAAA,UACA,qBACE,kCAAkC,iBAAiB;AAAA,UACrD,MAAM;AAAA,UACN,GAAI,OAAO,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,OAAO,KAAK;AAAA,QAC3D;AAAA,QACA,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,UACJ,QAAQ;AAAA,UACR;AAAA,UACA;AAAA,UACA,MAAM;AAAA,UACN,GAAI,OAAO,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,OAAO,KAAK;AAAA,QAC3D;AAAA,QACA,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AACE,YAAM,IAAI;AAAA,QACR;AAAA,UACE,iDAAiD,MAAM;AAAA,UACvD;AAAA,QACF;AAAA,MACF;AAAA,EACJ;AACF;AAEA,SAAS,kCACP,MACgB;AAChB,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,EACX;AACF;AAEA,SAAS,mCACP,KACA,aACA,QACA,MACA,QACA,WACoB;AACpB,MAAI,WAAW,UAAU,WAAW,UAAU;AAC5C,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,MAAI,CAAC,qCAAqC,MAAM,GAAG;AACjD,UAAM,IAAI;AAAA,MACR;AAAA,QACE,6CAA6C,MAAM;AAAA,QACnD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,qCACP,QAIA;AACA,SACE,WAAW,SACX,WAAW,UACX,WAAW,YACX,WAAW;AAEf;AAEA,SAAS,6BACP,KACA,MACA,QACA,MACA,QACA,WACoB;AACpB,MAAI,WAAW,UAAU,WAAW,UAAU;AAC5C,UAAM,IAAI;AAAA,MACR;AAAA,QACE,OAAO,IAAI,kCAAkC,MAAM;AAAA,QACnD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO,sBAAsB,QAAQ,CAAC,KAAK,GAAG,IAAI,GAAG,QAAQ,WAAW;AAAA,IACtE,cAAc,CAAC,IAAI;AAAA,EACrB,CAAC;AACH;AAEA,SAAS,0CACP,KACA,SACA,QACA,MACA,QACA,WACoB;AACpB,MAAI,WAAW,UAAU,WAAW,UAAU;AAC5C,UAAM,IAAI;AAAA,MACR;AAAA,QACE,oDAAoD,MAAM;AAAA,QAC1D;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO,sBAAsB,QAAQ,CAAC,KAAK,GAAG,IAAI,GAAG,QAAQ,WAAW;AAAA,IACtE,cAAc,CAAC,QAAQ;AAAA,IACvB,eAAe;AAAA,EACjB,CAAC;AACH;AAEA,SAAS,6BACP,aACA,QACA,MACA,QACA,WACoB;AACpB,MAAI,WAAW,SAAS,WAAW,OAAO;AACxC,UAAM,IAAI;AAAA,MACR;AAAA,QACE,uCAAuC,MAAM;AAAA,QAC7C;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW,QAAQ,UAAU;AAAA,EAC/B;AACF;AAEA,SAAS,+BACP,aACA,aACA,QACA,MACA,QACA,WACoB;AACpB,UAAQ,QAAQ;AAAA,IACd,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,QACL;AAAA,QACA,CAAC,wBAAwB,aAAa,WAAW,GAAG,GAAG,IAAI;AAAA,QAC3D;AAAA,QACA;AAAA,MACF;AAAA,IACF,KAAK;AACH,YAAM,IAAI;AAAA,QACR;AAAA,UACE;AAAA,UACA,gBAAgB;AAAA,QAClB;AAAA,MACF;AAAA,IACF,KAAK;AACH,YAAM,IAAI;AAAA,QACR;AAAA,UACE;AAAA,UACA,gBAAgB;AAAA,QAClB;AAAA,MACF;AAAA,IACF,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA,EAAE,GAAG,QAAQ,SAAS,YAAY;AAAA,QAClC;AAAA,MACF;AAAA,IACF;AACE,YAAM,IAAI;AAAA,QACR;AAAA,UACE,yCAAyC,MAAM;AAAA,UAC/C;AAAA,QACF;AAAA,MACF;AAAA,EACJ;AACF;AAEA,SAAS,6BACP,aACA,aACA,MACA,QACA,MACA,QACA,WACoB;AACpB,MAAI,WAAW,UAAU,WAAW,UAAU;AAC5C,UAAM,IAAI;AAAA,MACR;AAAA,QACE,eAAe,IAAI,kCAAkC,MAAM;AAAA,QAC3D;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA,CAAC,8BAA8B,aAAa,WAAW,GAAG,GAAG,IAAI;AAAA,IACjE;AAAA,IACA;AAAA,IACA,EAAE,cAAc,CAAC,IAAI,EAAE;AAAA,EACzB;AACF;AAEA,SAAS,0CACP,aACA,aACA,SACA,QACA,MACA,QACA,WACoB;AACpB,MAAI,WAAW,UAAU,WAAW,UAAU;AAC5C,UAAM,IAAI;AAAA,MACR;AAAA,QACE,4DAA4D,MAAM;AAAA,QAClE;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA,CAAC,8BAA8B,aAAa,WAAW,GAAG,GAAG,IAAI;AAAA,IACjE;AAAA,IACA;AAAA,IACA,EAAE,cAAc,CAAC,QAAQ,GAAG,eAAe,QAAQ;AAAA,EACrD;AACF;AAEA,SAAS,8BACP,KACA,QACA,MACA,QACA,WACoB;AACpB,MAAI,WAAW,OAAO;AACpB,UAAM,IAAI;AAAA,MACR;AAAA,QACE,+CAA+C,MAAM;AAAA,QACrD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO,sBAAsB,OAAO,CAAC,KAAK,GAAG,IAAI,GAAG,QAAQ,SAAS;AACvE;AAEA,SAAS,iCACP,KACA,aACA,aACA,UACA,QACA,MACA,QACA,WACoB;AACpB,QAAM,oBAAoB,oBAAoB,QAAQ;AAEtD,MAAI,WAAW,UAAU,WAAW,UAAU;AAC5C,QAAI,aAAa,SAAS;AACxB,YAAM,IAAI;AAAA,QACR;AAAA,UACE,eAAe,QAAQ,gCAAgC,MAAM;AAAA,UAC7D;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,MACL;AAAA,MACA;AAAA,QACE,aAAa,YAAY,aAAa,YAClC,8BAA8B,aAAa,WAAW,IACtD,wBAAwB,aAAa,WAAW;AAAA,QACpD,GAAG;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA,EAAE,cAAc,CAAC,QAAQ,EAAE;AAAA,IAC7B;AAAA,EACF;AAEA,MAAI,WAAW,SAAS,WAAW,SAAS,WAAW,SAAS;AAC9D,UAAM,IAAI;AAAA,MACR;AAAA,QACE,eAAe,QAAQ,gCAAgC,MAAM;AAAA,QAC7D;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,MAAI,WAAW,WAAW,aAAa,SAAS;AAC9C,UAAM,IAAI;AAAA,MACR;AAAA,QACE,eAAe,QAAQ;AAAA,QACvB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,MAAI,WAAW,SAAS,OAAO,UAAU,MAAM;AAC7C,UAAM,IAAI;AAAA,MACR;AAAA,QACE,eAAe,QAAQ;AAAA,QACvB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,MAAI,WAAW,OAAO;AACpB,UAAM,YACJ,IAAI,SAAS,GAAG,MAAM,aAAa,YAAY,aAAa,aACxD,MACA,wBAAwB,WAAW,IACjC,MACA,aAAa,WACX,wCAAwC,aAAa,WAAW,IAChE;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEV,WAAO;AAAA,MACL;AAAA,MACA,CAAC,WAAW,GAAG,IAAI;AAAA,MACnB;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,eACJ,aAAa,WACT,eACA,aAAa,YACX,gBACA;AAER,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,SAAS;AAAA,MACT,GAAI,WAAW,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;AAAA,IAC9C;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,8BACP,aACA,aACQ;AACR,SAAO,wBAAwB,WAAW,IACtC,GAAG,WAAW,YAAY,WAAW,KACrC,wBAAwB,aAAa,WAAW;AACtD;AAEA,SAAS,wBAAwB,aAA8B;AAC7D,SACE,YAAY,WAAW,iBAAiB,KACxC,+BAA+B,KAAK,WAAW;AAEnD;AAEA,SAAS,iCACP,QACA,aACA,MACA,QACA,WACA,YACoB;AACpB,MAAI,OAAO,SAAS,MAAM;AACxB,WAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU,8CAA8C,MAAM;AAAA,MAC9D,MAAM;AAAA,IACR;AAAA,EACF;AAEA,2BAAyB,cAAc,OAAO,YAAY,GAAG,SAAS;AACtE,2BAAyB,SAAS,OAAO,OAAO,SAAS;AACzD,2BAAyB,SAAS,OAAO,OAAO,SAAS;AACzD,2BAAyB,SAAS,OAAO,OAAO,SAAS;AACzD,2BAAyB,UAAU,OAAO,QAAQ,SAAS;AAC3D,2BAAyB,iBAAiB,OAAO,eAAe,GAAG,SAAS;AAC5E,gCAA8B,QAAQ,SAAS;AAC/C,MAAI,OAAO,SAAS;AAClB,UAAM,IAAI;AAAA,MACR;AAAA,QACE;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,iBACJ,WAAW,gBACX,WAAW,iBACX,WAAW,cACP,IACA;AACN,MAAI,KAAK,SAAS,gBAAgB;AAChC,UAAM,IAAI;AAAA,MACR;AAAA,QACE,oCAAoC,KAAK,KAAK,GAAG,CAAC;AAAA,QAClD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,KAAK,CAAC;AAAA,IACR;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AACF;;;ACzqBA;AAAA,EAEE,4BAAAC;AAAA,OACK;AAQP;;;ACXA;AA2BO,SAAS,gCACd,KACA,aACA,QACA,MACA,QACA,WACoB;AACpB,MAAI,CAAC,gBAAgB,MAAM,GAAG;AAC5B,UAAM,IAAI;AAAA,MACR;AAAA,QACE,2CAA2C,MAAM;AAAA,QACjD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,MAAI,WAAW,OAAO;AACpB,WAAO,sBAAsB,QAAQ,CAAC,KAAK,GAAG,IAAI,GAAG,QAAQ,SAAS;AAAA,EACxE;AAEA,MACE,WAAW,YACX,WAAW,YACX,WAAW,aACX,WAAW,UACX,WAAW,UACX;AACA,UAAM,IAAI;AAAA,MACR;AAAA,QACE,mBAAmB,GAAG,0BAA0B,MAAM;AAAA,QACtD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA,CAAC,WAAW,YAAY,WAAW,WAAW,cAAc,KAAK,GAAG,IAAI;AAAA,IACxE;AAAA,IACA;AAAA,EACF;AACF;AAEO,SAAS,8BACd,KACA,aACA,QACA,MACA,QACoB;AACpB,QAAM,YAAY,2BAA2B,KAAK,MAAM;AAExD,MAAI,OAAO,SAAS,MAAM;AACxB,WAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU,wCAAwC,OAAO;AAAA,MACzD,MAAM;AAAA,IACR;AAAA,EACF;AAEA,MAAI,WAAW,OAAO;AACpB,UAAM,IAAI;AAAA,MACR;AAAA,QACE,uCAAuC,MAAM;AAAA,QAC7C;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,2CAAyC,SAAS,MAAM,GAAG,SAAS;AACpE,yBAAuB,UAAU,OAAO,QAAQ,SAAS;AACzD,yBAAuB,WAAW,OAAO,SAAS,SAAS;AAC3D,yBAAuB,UAAU,OAAO,QAAQ,SAAS;AACzD,yBAAuB,cAAc,OAAO,YAAY,GAAG,SAAS;AACpE,yBAAuB,UAAU,OAAO,QAAQ,SAAS;AACzD,yBAAuB,SAAS,OAAO,OAAO,SAAS;AACvD,yBAAuB,gBAAgB,OAAO,cAAc,GAAG,SAAS;AACxE,yBAAuB,SAAS,OAAO,OAAO,SAAS;AACvD,yBAAuB,UAAU,OAAO,QAAQ,SAAS;AACzD,yBAAuB,iBAAiB,OAAO,eAAe,GAAG,SAAS;AAC1E,yBAAuB,UAAU,OAAO,QAAQ,SAAS;AACzD,yBAAuB,SAAS,OAAO,OAAO,SAAS;AACvD,yBAAuB,MAAM,OAAO,IAAI,SAAS;AACjD,gCAA8B,WAAW,OAAO,SAAS,SAAS;AAClE,gCAA8B,QAAQ,OAAO,MAAM,SAAS;AAC5D,uBAAqB,MAAM;AAE3B,MAAI,OAAO,YAAY,MAAM;AAC3B,UAAM,IAAI;AAAA,MACR,cAAc,iDAAiD,SAAS;AAAA,IAC1E;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,MACJ,WAAW;AAAA,MACX,GAAI,OAAO,QAAQ,SAAY,CAAC,IAAI,EAAE,SAAS,OAAO,IAAI;AAAA,IAC5D;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AACF;AAEO,SAAS,8BACd,aACA,QACA,MACA,QACoB;AACpB,QAAM,YAAY,kCAAkC,MAAM;AAE1D,MAAI,OAAO,SAAS,MAAM;AACxB,WAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU;AAAA,QACR;AAAA,QACA;AAAA,MACF;AAAA,MACA,MAAM;AAAA,IACR;AAAA,EACF;AAEA,MAAI,CAAC,qBAAqB,MAAM,GAAG;AACjC,UAAM,IAAI;AAAA,MACR;AAAA,QACE,sCAAsC,MAAM;AAAA,QAC5C,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AACA,gCAA8B,QAAQ,MAAM,GAAG,SAAS;AACxD,4BAA0B,QAAQ,QAAQ,SAAS;AACnD,oBAAkB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC5D,oBAAkB,QAAQ,YAAY,OAAO,QAAQ,SAAS;AAC9D,oBAAkB,QAAQ,YAAY,OAAO,QAAQ,SAAS;AAC9D,oBAAkB,QAAQ,aAAa,OAAO,SAAS,SAAS;AAChE,oBAAkB,QAAQ,aAAa,OAAO,SAAS,SAAS;AAChE,oBAAkB,QAAQ,YAAY,OAAO,QAAQ,SAAS;AAC9D,oBAAkB,QAAQ,gBAAgB,OAAO,YAAY,GAAG,SAAS;AACzE,oBAAkB,QAAQ,cAAc,OAAO,UAAU,SAAS;AAClE,oBAAkB,QAAQ,UAAU,OAAO,MAAM,SAAS;AAC1D,oBAAkB,QAAQ,gBAAgB,OAAO,YAAY,GAAG,SAAS;AACzE,oBAAkB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC5D,oBAAkB,QAAQ,YAAY,OAAO,QAAQ,SAAS;AAC9D,oBAAkB,QAAQ,eAAe,OAAO,WAAW,SAAS;AACpE,oBAAkB,QAAQ,UAAU,OAAO,MAAM,SAAS;AAC1D,oBAAkB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC5D,oBAAkB,QAAQ,UAAU,OAAO,MAAM,SAAS;AAC1D,oBAAkB,QAAQ,QAAQ,OAAO,IAAI,SAAS;AACtD;AAAA,IACE;AAAA,IACA;AAAA,IACA,OAAO,aAAa;AAAA,IACpB;AAAA,EACF;AACA,2BAAyB,QAAQ,YAAY,OAAO,QAAQ,SAAS;AACrE,2BAAyB,QAAQ,SAAS,OAAO,KAAK,SAAS;AAC/D,2BAAyB,QAAQ,eAAe,OAAO,WAAW,SAAS;AAC3E,2BAAyB,QAAQ,WAAW,OAAO,OAAO,SAAS;AACnE,2BAAyB,QAAQ,WAAW,OAAO,OAAO,SAAS;AACnE,2BAAyB,QAAQ,aAAa,OAAO,SAAS,SAAS;AACvE,2BAAyB,QAAQ,aAAa,OAAO,SAAS,GAAG,SAAS;AAC1E,2BAAyB,QAAQ,WAAW,OAAO,OAAO,SAAS;AACnE,MAAI,WAAW,QAAQ;AACrB,4BAAwB,QAAQ,OAAO,MAAM,SAAS;AAAA,EACxD,OAAO;AACL,sBAAkB,QAAQ,aAAa,OAAO,SAAS,SAAS;AAChE,6BAAyB,QAAQ,WAAW,OAAO,OAAO,SAAS;AACnE;AAAA,MACE;AAAA,MACA;AAAA,MACA,OAAO,gBAAgB;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AACA,2BAAyB,QAAQ,UAAU,OAAO,MAAM,SAAS;AACjE,2BAAyB,QAAQ,aAAa,OAAO,SAAS,SAAS;AACvE,2BAAyB,QAAQ,UAAU,OAAO,MAAM,SAAS;AACjE,2BAAyB,QAAQ,aAAa,OAAO,SAAS,SAAS;AACvE,yBAAuB,QAAQ,QAAQ,SAAS;AAEhD,SAAO;AAAA,IACL,MAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA,GAAI,OAAO,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,OAAO,KAAK;AAAA,MACzD,GAAI,OAAO,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,OAAO,MAAM;AAAA,MAC5D,GAAI,OAAO,gBAAgB,MAAM,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;AAAA,IACrE;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AACF;;;AC5NA;AAgBO,SAAS,0BACd,aACA,YACA,QACA,MACA,QACA,WACoB;AACpB,MAAI,CAAC,iBAAiB,MAAM,GAAG;AAC7B,UAAM,IAAI;AAAA,MACR;AAAA,QACE,0CAA0C,MAAM;AAAA,QAChD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,sBAAoB,QAAQ,QAAQ,SAAS;AAE7C,UAAQ,QAAQ;AAAA,IACd,KAAK;AAAA,IACL,KAAK;AACH,+CAAyC,QAAQ,MAAM,GAAG,SAAS;AACnE;AAAA,IACF,KAAK;AACH,+CAAyC,QAAQ,MAAM,GAAG,SAAS;AACnE,UAAI,KAAK,CAAC,MAAM,QAAW;AACzB,cAAM,IAAI,MAAM,cAAc,yBAAyB,SAAS,CAAC;AAAA,MACnE;AACA;AAAA,IACF,KAAK;AACH,+CAAyC,QAAQ,MAAM,GAAG,SAAS;AACnE,UAAI,KAAK,CAAC,MAAM,QAAW;AACzB,cAAM,IAAI,MAAM,cAAc,yBAAyB,SAAS,CAAC;AAAA,MACnE;AACA;AAAA,IACF,KAAK;AACH,+CAAyC,QAAQ,MAAM,GAAG,SAAS;AACnE;AAAA,EACJ;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA,GAAI,OAAO,UAAU,SAAY,CAAC,IAAI,EAAE,WAAW,OAAO,MAAM;AAAA,MAChE,GAAI,WAAW,SAAS,WAAW,QAC/B,CAAC,IACD,KAAK,WAAW,QAAQ,IAAI,CAAC,MAAM,SACjC,CAAC,IACD,EAAE,YAAY,KAAK,WAAW,QAAQ,IAAI,CAAC,EAAE;AAAA,MACnD,GAAI,OAAO,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,OAAO,KAAK;AAAA,MACzD,GAAI,OAAO,YAAY,MAAM,SACzB,CAAC,IACD,EAAE,gBAAgB,OAAO,YAAY,EAAE;AAAA,MAC3C,GAAI,KAAK,CAAC,MAAM,UAAc,WAAW,SAAS,WAAW,WACzD,CAAC,IACD,EAAE,KAAK,KAAK,CAAC,EAAE;AAAA,MACnB,GAAI,OAAO,QAAQ,SAAY,CAAC,IAAI,EAAE,SAAS,OAAO,IAAI;AAAA,MAC1D;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AACF;AAEA,SAAS,oBACP,QACA,QACA,WACM;AACN,wBAAsB,UAAU,OAAO,QAAQ,SAAS;AACxD,wBAAsB,WAAW,OAAO,SAAS,SAAS;AAC1D,wBAAsB,UAAU,OAAO,QAAQ,SAAS;AACxD,wBAAsB,cAAc,OAAO,YAAY,GAAG,SAAS;AACnE,wBAAsB,UAAU,OAAO,QAAQ,SAAS;AACxD,wBAAsB,gBAAgB,OAAO,cAAc,GAAG,SAAS;AACvE,wBAAsB,SAAS,OAAO,OAAO,SAAS;AACtD,wBAAsB,UAAU,OAAO,QAAQ,SAAS;AACxD,wBAAsB,iBAAiB,OAAO,eAAe,GAAG,SAAS;AACzE,wBAAsB,UAAU,OAAO,QAAQ,SAAS;AACxD,wBAAsB,SAAS,OAAO,OAAO,SAAS;AACtD,wBAAsB,MAAM,OAAO,IAAI,SAAS;AAChD,+BAA6B,WAAW,OAAO,SAAS,SAAS;AACjE,+BAA6B,SAAS,OAAO,OAAO,SAAS;AAC7D,gCAA8B,QAAQ,SAAS;AAC/C,MAAI,OAAO,YAAY,MAAM;AAC3B,UAAM,IAAI;AAAA,MACR;AAAA,QACE;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,MAAI,WAAW,OAAO;AACpB,0BAAsB,SAAS,OAAO,OAAO,SAAS;AACtD,0BAAsB,cAAc,OAAO,YAAY,GAAG,SAAS;AACnE;AAAA,EACF;AACA,MAAI,WAAW,WAAW,WAAW,UAAU;AAC7C,0BAAsB,SAAS,OAAO,OAAO,SAAS;AACtD,0BAAsB,cAAc,OAAO,YAAY,GAAG,SAAS;AAAA,EACrE;AACF;AAEO,SAAS,oBAAoB,WAAuC;AACzE,QAAM,OAAO,qBAAqB,SAAS;AAE3C,MAAI,SAAS,QAAQ;AACnB,WAAO;AAAA,EACT;AACA,MAAI,CAAC,KAAK,SAAS,OAAO,GAAG;AAC3B,WAAO;AAAA,EACT;AAEA,SAAO,KAAK,MAAM,GAAG,CAAC,QAAQ,MAAM;AACtC;AAEO,SAAS,0BAA0B,WAA4B;AACpE,SAAO,oBAAoB,KAAK,qBAAqB,SAAS,CAAC;AACjE;;;AFzFO,SAAS,8BACd,aACA,QACoB;AACpB,QAAM,MAAM,YAAY,CAAC;AACzB,QAAM,iBAAiB,YAAY,CAAC;AAEpC,MAAI,QAAQ,QAAW;AACrB,UAAM,IAAI,MAAM,gDAAgD;AAAA,EAClE;AAEA,QAAM,SAAS;AAAA,IACb;AAAA,IACA,kBAAkB,gCAAgC,KAAK,OAAO,KAAK;AAAA,EACrE;AAEA,MAAI,mBAAmB,OAAO;AAC5B,UAAM,IAAI,MAAM,iCAAiC,cAAc,CAAC;AAAA,EAClE;AAEA,MAAI,OAAO,SAAS,QAAQ,mBAAmB,QAAW;AACxD,UAAM,aAAa,6BAA6B,GAAG;AAEnD,WAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU,kBAAkB,YAAY,GAAG;AAAA,MAC3C,MAAM;AAAA,IACR;AAAA,EACF;AAEA,MAAI,OAAO,SAAS,QAAQ,mBAAmB,QAAW;AACxD,UAAM,aAAa,6BAA6B,GAAG;AAEnD,QAAI,CAAC,mBAAmB,YAAY,MAAM,GAAG;AAC3C,YAAM,IAAI;AAAA,QACR;AAAA,UACE,kBAAkB,GAAG,uBAAuB,MAAM;AAAA,UAClD,2BAA2B,GAAG;AAAA,QAChC;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU,2BAA2B,YAAY,QAAQ,GAAG;AAAA,MAC5D,MAAM;AAAA,IACR;AAAA,EACF;AAEA,MAAI,CAAC,mBAAmB,MAAM,GAAG;AAC/B,UAAM,cAAc,2BAA2B,GAAG;AAElD,UAAM,IAAI;AAAA,MACR;AAAA,QACE,yCAAyC,MAAM,aAAa,WAAW;AAAA,QACvE;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,mBAAmB,SAAY,CAAC,IAAI,YAAY,MAAM,CAAC;AAAA,IACvD;AAAA,EACF;AACF;AAIA,SAAS,0BAA0B,KAAa,QAAwB;AACtE,MAAI,WAAW,SAAS;AACtB,WAAO;AAAA,EACT;AAEA,QAAM,SAAS,yBAAyB,GAAG;AAC3C,MAAI,OAAO,cAAc,uBAAuB;AAC9C,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEA,SAAS,gCACP,KACA,OACqB;AACrB,QAAM,SAAS,yBAAyB,GAAG;AAE3C,MAAI,OAAO,gBAAgB,QAAW;AACpC,UAAM,IAAI,MAAM,mCAAmC,GAAG,CAAC;AAAA,EACzD;AAEA,QAAM,OAAO,mBAAmB,OAAO,SAAS;AAEhD,MAAI,SAAS,SAAS;AACpB,WAAO,UAAU,SAAY,SAAS;AAAA,EACxC;AACA,MAAI,UAAU,QAAW;AACvB,UAAM,IAAI;AAAA,MACR;AAAA,QACE;AAAA,QACA,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,mBAAmB,WAA+C;AACzE,MAAI,cAAc,QAAW;AAC3B,WAAO;AAAA,EACT;AAEA,QAAM,OAAO,qBAAqB,SAAS;AAE3C,QAAM,gBAAgB,mBAAmB,SAAS;AAClD,MAAI,kBAAkB,QAAW;AAC/B,YAAQ,cAAc,MAAM;AAAA,MAC1B,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAO;AAAA,IACX;AAAA,EACF;AACA,MAAI,kBAAkB,IAAI,GAAG;AAC3B,WAAO;AAAA,EACT;AACA,MAAI,sBAAsB,KAAK,IAAI,GAAG;AACpC,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEA,SAAS,6BAA6B,KAAgC;AACpE,QAAM,SAAS,yBAAyB,GAAG;AAC3C,QAAM,YAAY,OAAO;AAEzB,MAAI,cAAc,QAAW;AAC3B,WAAO;AAAA,EACT;AAEA,QAAM,OAAO,qBAAqB,SAAS;AAC3C,kCAAgC,KAAK,IAAI;AAEzC,MAAI,oBAAoB,SAAS,MAAM,QAAW;AAChD,WAAO;AAAA,EACT;AACA,MAAI,SAAS,SAAS;AACpB,WAAO;AAAA,EACT;AACA,MAAI,SAAS,SAAS;AACpB,WAAO;AAAA,EACT;AACA,MAAI,wCAAwC,KAAK,IAAI,GAAG;AACtD,WAAO;AAAA,EACT;AACA,QAAM,gBAAgB,mBAAmB,SAAS;AAClD,MAAI,kBAAkB,QAAW;AAC/B,YAAQ,cAAc,MAAM;AAAA,MAC1B,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,gBAAQ,cAAc,UAAU;AAAA,UAC9B,KAAK;AACH,mBAAO,eAAe,GAAG,IACrB,gCACA;AAAA,UACN,KAAK;AACH,mBAAO,eAAe,GAAG,IACrB,iCACA;AAAA,UACN,KAAK;AACH,mBAAO;AAAA,QACX;AACA;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AACH,gBAAQ,cAAc,MAAM;AAAA,UAC1B,KAAK;AACH,mBAAO;AAAA,UACT,KAAK;AACH,mBAAO;AAAA,UACT,KAAK;AACH,mBAAO;AAAA,UACT,KAAK;AACH,mBAAO;AAAA,UACT,KAAK;AACH,mBAAO;AAAA,QACX;AACA;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AACH,eAAO;AAAA,IACX;AAAA,EACF;AACA,MAAI,sCAAsC,KAAK,IAAI,GAAG;AACpD,WAAO;AAAA,EACT;AACA,MAAI,0CAA0C,KAAK,IAAI,GAAG;AACxD,WAAO;AAAA,EACT;AACA,MAAI,uCAAuC,KAAK,IAAI,GAAG;AACrD,WAAO;AAAA,EACT;AACA,MAAI,wDAAwD,KAAK,IAAI,GAAG;AACtE,WAAO;AAAA,EACT;AACA,MAAI,2CAA2C,KAAK,IAAI,GAAG;AACzD,WAAO;AAAA,EACT;AACA,MAAI,kBAAkB,IAAI,GAAG;AAC3B,WAAO;AAAA,EACT;AACA,MAAI,4DAA4D,KAAK,IAAI,GAAG;AAC1E,WAAO;AAAA,EACT;AAEA,QAAM,IAAI;AAAA,IACR;AAAA,MACE,kCAAkC,GAAG;AAAA,MACrC,gBAAgB;AAAA,IAClB;AAAA,EACF;AACF;AAEA,SAAS,gCAAgC,KAAa,MAAoB;AACxE,QAAM,aAAa,uCAAuC,KAAK,IAAI;AACnE,MAAI,eAAe,QAAW;AAC5B;AAAA,EACF;AACA,QAAM,IAAI;AAAA,IACR;AAAA,MACE,oDAAoD,GAAG,yBAAyB,UAAU;AAAA,MAC1F,gBAAgB;AAAA,IAClB;AAAA,EACF;AACF;AAEA,SAAS,uCACP,KACA,MACoB;AACpB,QAAM,QAAQ,KAAK,MAAM,GAAG;AAC5B,QAAM,SAAS,MAAM,GAAG,EAAE;AAC1B,MAAI,WAAW,cAAc,WAAW,aAAa,WAAW,QAAQ;AACtE,WAAO;AAAA,EACT;AACA,QAAM,cAAc,iCAAiC,MAAM,MAAM,GAAG,EAAE,CAAC;AACvE,MAAI,YAAY,CAAC,MAAM,YAAY,YAAY,WAAW,GAAG;AAC3D,WAAO,GAAG,IAAI,MAAM,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,IAAI,MAAM;AAAA,EACtD;AACA,MAAI,YAAY,CAAC,MAAM,WAAW,YAAY,WAAW,GAAG;AAC1D,WAAO,GAAG,IAAI,MAAM,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,IAAI,MAAM;AAAA,EACtD;AACA,MAAI,YAAY,CAAC,MAAM,YAAY,YAAY,WAAW,GAAG;AAC3D,WAAO,GAAG,IAAI,MAAM,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,IAAI,MAAM;AAAA,EACtD;AACA,SAAO;AACT;AAEA,SAAS,iCACP,OACmB;AACnB,MAAI,MAAM,CAAC,MAAM,aAAa,MAAM,CAAC,MAAM,QAAW;AACpD,WAAO,MAAM,MAAM,CAAC;AAAA,EACtB;AACA,SAAO;AACT;AAEA,SAAS,eAAe,KAAsB;AAC5C,SAAO,IAAI,SAAS,GAAG;AACzB;AAEA,SAAS,+BACP,KACA,QACA,MACA,QACoB;AACpB,QAAM,SAAS,yBAAyB,GAAG;AAC3C,QAAM,6BAA6B,gCAAgC,GAAG;AACtE,QAAM,cACJ,+BAA+B,SAC3B,OAAO,cACP,4BAA4B,0BAA0B;AAC5D,QAAM,YAAY,4BAA4B,aAAa,OAAO;AAClE,QAAM,YAAY,4BAA4B,MAAM,IAChD,2BAA2B,GAAG,IAC9B,2BAA2B,KAAK,MAAM;AAE1C,MAAI,gBAAgB,QAAW;AAC7B,UAAM,IAAI,MAAM,mCAAmC,GAAG,CAAC;AAAA,EACzD;AACA,kCAAgC,QAAQ,OAAO,SAAS,SAAS;AAEjE,MAAI,cAAc,QAAW;AAC3B,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,iBAAiB,oBAAoB,SAAS;AACpD,MAAI,mBAAmB,QAAW;AAChC,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,MAAI,0BAA0B,SAAS,GAAG;AACxC,UAAM,IAAI;AAAA,MACR;AAAA,QACE;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,MAAI,cAAc,gBAAgB;AAChC,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,MAAI,cAAc,gBAAgB;AAChC,WAAO,8BAA8B,aAAa,QAAQ,MAAM,MAAM;AAAA,EACxE;AAEA,QAAM,gBAAgB,mBAAmB,SAAS;AAClD,MAAI,kBAAkB,QAAW;AAC/B,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,UAAU,mBAAmB,SAAS;AAC5C,MAAI,YAAY,aAAa,WAAW,UAAU,WAAW,WAAW;AACtE,UAAM,IAAI;AAAA,MACR;AAAA,QACE,kBAAkB,GAAG,uBAAuB,MAAM;AAAA,QAClD,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AACA,MAAI,YAAY,WAAW,WAAW,OAAO;AAC3C,UAAM,IAAI;AAAA,MACR;AAAA,QACE,iBAAiB,GAAG;AAAA,QACpB,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAEA,MAAI,CAAC,wBAAwB,MAAM,GAAG;AACpC,UAAM,cAAc,2BAA2B,GAAG;AAElD,UAAM,IAAI;AAAA,MACR;AAAA,QACE,kBAAkB,GAAG,uBAAuB,MAAM,aAAa,WAAW;AAAA,QAC1E;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO,sBAAsB,QAAQ,CAAC,KAAK,GAAG,IAAI,GAAG,QAAQ,SAAS;AACxE;AAEA,SAAS,gCACP,KACuC;AACvC,QAAM,SAASC,0BAAyB,GAAG;AAE3C,MAAI,QAAQ,SAAS,aAAa,OAAO,cAAc,QAAW;AAChE,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEA,SAAS,4BACP,QACQ;AACR,MAAI,OAAO,SAAS,aAAa,OAAO,oBAAoB,QAAW;AACrE,UAAM,IAAI,MAAM,yDAAyD;AAAA,EAC3E;AAEA,SAAO,OAAO,aAAa,SACvB,kBAAkB,OAAO,eAAe,KACxC,cAAc,OAAO,QAAQ,QAAQ,OAAO,eAAe;AACjE;AAEA,SAAS,gCACP,QACA,SACA,WACM;AACN,MAAI,YAAY,MAAM;AACpB;AAAA,EACF;AACA,MAAI,WAAW,UAAU;AACvB,UAAM,IAAI;AAAA,MACR,cAAc,gDAAgD,SAAS;AAAA,IACzE;AAAA,EACF;AACA,MACE,WAAW,cACX,WAAW,SACX,WAAW,UACX,WAAW,WACX;AACA;AAAA,EACF;AAEA,2BAAyB,QAAQ,aAAa,SAAS,SAAS;AAClE;;;AFvdO,SAAS,0BACd,aACA,QACoB;AACpB,QAAM,MAAM,YAAY,CAAC;AACzB,QAAM,eAAe,2BAA2B,GAAG;AACnD,QAAM,iBAAiB,YAAY,CAAC;AAEpC,MAAI,QAAQ,QAAW;AACrB,UAAM,IAAI,MAAM,kCAAkC;AAAA,EACpD;AAEA,MAAI,+BAA+B,cAAc,GAAG;AAClD,UAAM,IAAI,MAAM,iCAAiC,cAAc,CAAC;AAAA,EAClE;AAEA,MAAI,OAAO,SAAS,MAAM;AACxB,QAAI,mBAAmB,QAAW;AAChC,aAAO;AAAA,QACL,MAAM;AAAA,QACN,UAAU;AAAA,UACR,iBAAiB,UAAa,qBAAqB,GAAG,MAAM,SACxD,yBACA,iBAAiB,SACf,eACA;AAAA,UACN;AAAA,QACF;AAAA,QACA,MAAM;AAAA,MACR;AAAA,IACF;AACA,UAAM,aACJ,iBAAiB,UAAa,qBAAqB,GAAG,MAAM,SACxD,yBACA,iBAAiB,SACf,eACA;AACR,QAAI,mBAAmB,YAAY,cAAc,GAAG;AAClD,aAAO;AAAA,QACL,MAAM;AAAA,QACN,UAAU,2BAA2B,YAAY,gBAAgB,GAAG;AAAA,QACpE,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,QAAM,QAAQ,gBAAgB,qBAAqB,GAAG;AACtD,QAAM,SACJ,mBACC,iBAAiB,SACd,SACA,UAAU,SACR,SACA;AAER,MAAI,CAAC,eAAe,MAAM,GAAG;AAC3B,UAAM,IAAI;AAAA,MACR;AAAA,QACE,WAAW,SACP,wBAAwB,GAAG,MAC3B,uCAAuC,MAAM;AAAA,QACjD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,YACJ,mBAAmB,SACf,2BAA2B,GAAG,IAC9B,2BAA2B,KAAK,MAAM;AAC5C,QAAM,OAAO,mBAAmB,SAAY,CAAC,IAAI,YAAY,MAAM,CAAC;AAEpE,MAAI,iBAAiB,QAAW;AAC9B,QAAI,WAAW,OAAO;AACpB,YAAM,IAAI;AAAA,QACR;AAAA,UACE,8CAA8C,MAAM;AAAA,UACpD;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,UAAQ,QAAQ;AAAA,IACd,KAAK;AACH,UAAI,UAAU,QAAW;AACvB,cAAM,IAAI;AAAA,UACR,cAAc,wCAAwC,SAAS;AAAA,QACjE;AAAA,MACF;AACA,aAAO,uBAAuB,MAAM,QAAQ,SAAS;AAAA,IACvD,KAAK;AACH,UAAI,UAAU,QAAW;AACvB,cAAM,IAAI;AAAA,UACR,cAAc,0CAA0C,SAAS;AAAA,QACnE;AAAA,MACF;AACA,0BAAoB,SAAS,OAAO,MAAM,SAAS;AACnD,2BAAqB,SAAS,OAAO,OAAO,SAAS;AACrD,kCAA4B,SAAS,CAAC,SAAS,GAAG,IAAI,GAAG,GAAG,SAAS;AACrE,aAAO;AAAA,QACL,MAAM;AAAA,UACJ,QAAQ;AAAA,QACV;AAAA,QACA,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF,KAAK;AACH,UAAI,UAAU,QAAW;AACvB,cAAM,IAAI;AAAA,UACR,cAAc,yCAAyC,SAAS;AAAA,QAClE;AAAA,MACF;AACA,2BAAqB,QAAQ,OAAO,OAAO,SAAS;AACpD,kCAA4B,QAAQ,CAAC,QAAQ,GAAG,IAAI,GAAG,GAAG,SAAS;AACnE,aAAO;AAAA,QACL,MAAM;AAAA,UACJ,QAAQ;AAAA,UACR,GAAI,OAAO,WAAW,SAAY,CAAC,IAAI,EAAE,YAAY,OAAO,OAAO;AAAA,UACnE,GAAI,OAAO,QAAQ,SAAY,CAAC,IAAI,EAAE,KAAK,OAAO,IAAI;AAAA,UACtD,GAAI,OAAO,UAAU,SACjB,CAAC,IACD,EAAE,aAAa,sBAAsB,OAAO,OAAO,SAAS,EAAE;AAAA,UAClE,GAAI,OAAO,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,OAAO,KAAK;AAAA,QAC3D;AAAA,QACA,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF,KAAK;AACH,aAAO,uBAAuB,UAAU,OAAO,MAAM,QAAQ,SAAS;AAAA,IACxE,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO,uBAAuB,QAAQ,OAAO,MAAM,QAAQ,SAAS;AAAA,IACtE,KAAK;AACH,YAAM,IAAI;AAAA,QACR;AAAA,UACE;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,EACJ;AAEA,QAAM,IAAI,MAAM,6CAA6C;AAC/D;AAEA,SAAS,gCACP,OACA,MACA,QACA,WACoB;AACpB,sBAAoB,UAAU,OAAO,MAAM,SAAS;AACpD,uBAAqB,UAAU,OAAO,OAAO,SAAS;AACtD;AAAA,IACE;AAAA,IACA,CAAC,UAAU,OAAO,GAAG,IAAI;AAAA,IACzB;AAAA,IACA;AAAA,EACF;AAEA,QAAM,SAAS,KAAK,CAAC;AACrB,MAAI,WAAW,QAAW;AACxB,UAAM,IAAI,MAAM,cAAc,6BAA6B,SAAS,CAAC;AAAA,EACvE;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,MACJ,QAAQ;AAAA,MACR;AAAA,MACA,QAAQ,oBAAoB,MAAM;AAAA,IACpC;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AACF;AAEA,SAAS,oBACP,QACA,OACA,WACM;AACN,MAAI,UAAU,MAAM;AAClB;AAAA,EACF;AAEA,QAAM,IAAI;AAAA,IACR;AAAA,MACE,yBAAyB,MAAM;AAAA,MAC/B;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,uBACP,MACA,QACA,WACoB;AACpB,QAAM,SAAS;AAEf,uBAAqB,QAAQ,OAAO,OAAO,SAAS;AACpD,kBAAgB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC1D,kBAAgB,QAAQ,QAAQ,OAAO,IAAI,SAAS;AACpD,kBAAgB,QAAQ,aAAa,OAAO,SAAS,SAAS;AAC9D,8BAA4B,QAAQ,CAAC,QAAQ,GAAG,IAAI,GAAG,GAAG,SAAS;AACnE,MAAI,OAAO,UAAU,QAAW;AAC9B,UAAM,IAAI,MAAM,cAAc,oBAAoB,SAAS,CAAC;AAAA,EAC9D;AAEA,QAAM,QAAQ,mBAAmB,OAAO,OAAO,SAAS;AAExD,SAAO;AAAA,IACL,MAAM;AAAA,MACJ;AAAA,MACA,GAAI,OAAO,aAAa,MAAM,SAC1B,CAAC,IACD,EAAE,YAAY,OAAO,aAAa,EAAE;AAAA,MACxC,aAAa,MAAM;AAAA,MACnB,GAAI,OAAO,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,OAAO,MAAM;AAAA,MAC5D,GAAI,MAAM,gBAAgB,SACtB,CAAC,IACD,EAAE,aAAa,MAAM,YAAY;AAAA,MACrC,GAAI,OAAO,UAAU,SACjB,CAAC,IACD;AAAA,QACE,OAAO;AAAA,UACL,OAAO;AAAA,UACP;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,MACJ,WAAW,OAAO;AAAA,MAClB,GAAI,OAAO,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,OAAO,KAAK;AAAA,MACzD,GAAI,OAAO,QAAQ,SAAY,CAAC,IAAI,EAAE,SAAS,OAAO,IAAI;AAAA,MAC1D,GAAI,OAAO,WAAW,SAAY,CAAC,IAAI,EAAE,QAAQ,OAAO,OAAO;AAAA,MAC/D,QAAQ,oBAAoB,OAAO,IAAI;AAAA,IACzC;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AACF;AAEA,SAAS,mBACP,KACA,WACiE;AACjE,QAAM,SAAS,yBAAyB,GAAG;AAE3C,MAAI,OAAO,gBAAgB,QAAW;AACpC,UAAM,IAAI;AAAA,MACR;AAAA,QACE,kDAAkD,GAAG;AAAA,QACrD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,MAAI,OAAO,cAAc,QAAW;AAClC,WAAO,EAAE,aAAa,OAAO,YAAY;AAAA,EAC3C;AAEA,QAAM,gBAAgB,mBAAmB,OAAO,SAAS;AACzD,MAAI,eAAe,SAAS,WAAW;AACrC,UAAM,IAAI;AAAA,MACR;AAAA,QACE,kDAAkD,GAAG;AAAA,QACrD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,aAAa,OAAO;AAAA,IACpB,aAAa,cAAc;AAAA,EAC7B;AACF;AAEA,SAAS,uBACP,QACA,OACA,MACA,QACA,WACoB;AACpB,MAAI,WAAW,UAAU;AACvB,yBAAqB,QAAQ,OAAO,OAAO,SAAS;AAAA,EACtD,WAAW,WAAW,SAAS;AAC7B,4BAAwB,QAAQ,OAAO,MAAM,SAAS;AAAA,EACxD,OAAO;AACL,wBAAoB,QAAQ,OAAO,MAAM,SAAS;AAClD,yBAAqB,QAAQ,OAAO,OAAO,SAAS;AAAA,EACtD;AAEA,MAAI,WAAW,UAAU;AACvB,oBAAgB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC1D,oBAAgB,QAAQ,QAAQ,OAAO,IAAI,SAAS;AAAA,EACtD,OAAO;AACL,oBAAgB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC1D,oBAAgB,QAAQ,QAAQ,OAAO,IAAI,SAAS;AAAA,EACtD;AAEA,MAAI,UAAU,QAAW;AACvB,UAAM,IAAI;AAAA,MACR;AAAA,QACE,kCAAkC,MAAM;AAAA,QACxC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,8BAA4B,QAAQ,CAAC,QAAQ,OAAO,GAAG,IAAI,GAAG,GAAG,SAAS;AAE1E,MAAI,WAAW,SAAS;AACtB,UAAM,YAAY,eAAe,OAAO,MAAM,SAAS;AAEvD,WAAO;AAAA,MACL,MAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA,GAAI,cAAc,SAAY,CAAC,IAAI,EAAE,MAAM,UAAU;AAAA,QACrD,GAAI,OAAO,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,OAAO,MAAM;AAAA,MAC9D;AAAA,MACA,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AAEA,MAAI,WAAW,UAAU;AACvB,WAAO;AAAA,MACL,MAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA,GAAI,OAAO,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,OAAO,KAAK;AAAA,MAC3D;AAAA,MACA,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AAEA,MAAI,WAAW,UAAU;AACvB,WAAO;AAAA,MACL,MAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA,QAAQ,oBAAoB,OAAO,IAAI;AAAA,MACzC;AAAA,MACA,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AACF;AAEA,SAAS,qBACP,QACA,OACA,WACM;AACN,MAAI,UAAU,MAAM;AAClB;AAAA,EACF;AAEA,QAAM,IAAI;AAAA,IACR;AAAA,MACE,yBAAyB,MAAM;AAAA,MAC/B;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,gBACP,QACA,MACA,OACA,WACM;AACN,MAAI,UAAU,QAAW;AACvB;AAAA,EACF;AAEA,QAAM,IAAI;AAAA,IACR;AAAA,MACE,yBAAyB,MAAM,uBAAuB,IAAI;AAAA,MAC1D;AAAA,IACF;AAAA,EACF;AACF;;;AK5aA;AAQO,SAAS,iBACd,aACA,QACoB;AACpB,QAAM,YAAY;AAElB,MAAI,OAAO,SAAS,MAAM;AACxB,WAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU,wBAAwB;AAAA,MAClC,MAAM;AAAA,IACR;AAAA,EACF;AAEA,eAAa,cAAc,OAAO,YAAY,GAAG,SAAS;AAC1D,eAAa,UAAU,OAAO,QAAQ,SAAS;AAC/C,eAAa,SAAS,OAAO,OAAO,SAAS;AAC7C,eAAa,gBAAgB,OAAO,cAAc,GAAG,SAAS;AAC9D,eAAa,SAAS,OAAO,OAAO,SAAS;AAC7C,eAAa,SAAS,OAAO,OAAO,SAAS;AAC7C,eAAa,OAAO,OAAO,KAAK,SAAS;AACzC,eAAa,UAAU,OAAO,QAAQ,SAAS;AAC/C,eAAa,iBAAiB,OAAO,eAAe,GAAG,SAAS;AAChE,eAAa,UAAU,OAAO,QAAQ,SAAS;AAC/C,eAAa,SAAS,OAAO,OAAO,SAAS;AAC7C,oBAAkB,MAAM;AAExB,MAAI,OAAO,YAAY,MAAM;AAC3B,UAAM,IAAI;AAAA,MACR,cAAc,gDAAgD,SAAS;AAAA,IACzE;AAAA,EACF;AACA,MAAI,YAAY,SAAS,GAAG;AAC1B,UAAM,IAAI;AAAA,MACR;AAAA,QACE,+CAA+C,YAAY,KAAK,GAAG,CAAC;AAAA,QACpE;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,MACJ,GAAI,OAAO,SAAS,MAAM,SAAY,CAAC,IAAI,EAAE,QAAQ,OAAO,SAAS,EAAE;AAAA,MACvE,GAAI,OAAO,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,OAAO,MAAM;AAAA,MAC5D,GAAI,OAAO,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,OAAO,KAAK;AAAA,IAC3D;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AACF;;;ACrDA;AAQO,SAAS,mBACd,aACA,QA4BoB;AACpB,iBAAe,cAAc,OAAO,YAAY,CAAC;AACjD,iBAAe,UAAU,OAAO,MAAM;AACtC,iBAAe,SAAS,OAAO,KAAK;AACpC,iBAAe,gBAAgB,OAAO,cAAc,CAAC;AACrD,iBAAe,QAAQ,OAAO,IAAI;AAClC,iBAAe,SAAS,OAAO,KAAK;AACpC,iBAAe,OAAO,OAAO,GAAG;AAChC,iBAAe,UAAU,OAAO,MAAM;AACtC,iBAAe,iBAAiB,OAAO,eAAe,CAAC;AACvD,iBAAe,UAAU,OAAO,MAAM;AACtC,iBAAe,SAAS,OAAO,KAAK;AACpC,sBAAoB,MAAM;AAE1B,MAAI,OAAO,SAAS;AAClB,UAAM,IAAI;AAAA,MACR;AAAA,QACE;AAAA,QACA,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAEA,MAAI,YAAY,SAAS,GAAG;AAC1B,UAAM,IAAI;AAAA,MACR;AAAA,QACE,oCAAoC,YAAY,MAAM,CAAC,EAAE,KAAK,GAAG,CAAC;AAAA,QAClE,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAEA,MAAI,YAAY,CAAC,MAAM,QAAW;AAChC,WAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU,mBAAmB;AAAA,MAC7B,MAAM;AAAA,IACR;AAAA,EACF;AAEA,MAAI,iCAAiC,YAAY,CAAC,CAAC,GAAG;AACpD,WAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU,6BAA6B,YAAY,CAAC,CAAC;AAAA,MACrD,MAAM;AAAA,IACR;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,UAAU,oBAAoB,eAAe,YAAY,CAAC,CAAC,CAAC;AAAA,IAC5D,MAAM;AAAA,EACR;AACF;;;AChGA;AAGO,SAAS,qBACd,aACA,QACoB;AACpB,QAAM,SAAS,YAAY,CAAC;AAE5B,MAAI,OAAO,SAAS,QAAQ,WAAW,QAAW;AAChD,WAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU,4BAA4B;AAAA,MACtC,MAAM;AAAA,IACR;AAAA,EACF;AACA,MAAI,WAAW,WAAW;AACxB,QAAI,OAAO,SAAS,MAAM;AACxB,aAAO;AAAA,QACL,MAAM;AAAA,QACN,UAAU,4BAA4B,SAAS;AAAA,QAC/C,MAAM;AAAA,MACR;AAAA,IACF;AAEA,qBAAiB,WAAW,OAAO,KAAK;AACxC,qBAAiB,YAAY,OAAO,MAAM;AAC1C,qBAAiB,kBAAkB,OAAO,cAAc,CAAC;AACzD,qBAAiB,mBAAmB,OAAO,eAAe,CAAC;AAC3D,qBAAiB,SAAS,OAAO,GAAG;AACpC,qBAAiB,YAAY,OAAO,MAAM;AAC1C,4BAAwB,UAAU,OAAO,IAAI;AAC7C,4BAAwB,WAAW,OAAO,KAAK;AAC/C,4BAAwB,aAAa,OAAO,OAAO;AAEnD,UAAM,YAAY,YAAY,CAAC;AAE/B,QAAI,cAAc,QAAW;AAC3B,YAAM,IAAI;AAAA,QACR,cAAc,8BAA8B,0BAA0B;AAAA,MACxE;AAAA,IACF;AACA,QAAI,YAAY,SAAS,GAAG;AAC1B,YAAM,IAAI;AAAA,QACR;AAAA,UACE,oCAAoC,YAAY,MAAM,CAAC,EAAE,KAAK,GAAG,CAAC;AAAA,UAClE;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,MACL,MAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA,GAAI,OAAO,WAAW,SAAY,CAAC,IAAI,EAAE,YAAY,OAAO,OAAO;AAAA,MACrE;AAAA,MACA,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AAEA,QAAM,IAAI;AAAA,IACR;AAAA,MACE,WAAW,SACP,4BACA,2BAA2B,MAAM;AAAA,MACrC;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,iBAAiB,MAAc,OAAsB;AAC5D,MAAI,UAAU,QAAW;AACvB,UAAM,IAAI;AAAA,MACR;AAAA,QACE,0CAA0C,IAAI;AAAA,QAC9C;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,wBACP,MACA,OACM;AACN,MAAI,UAAU,MAAM;AAClB,qBAAiB,MAAM,KAAK;AAAA,EAC9B;AACF;;;ACrFA;AAiBO,SAAS,kCACd,aACA,QACoB;AACpB,QAAM,MAAM,YAAY,CAAC;AAEzB,MAAI,QAAQ,QAAW;AACrB,UAAM,IAAI,MAAM,2CAA2C;AAAA,EAC7D;AAEA,QAAM,UAAU,2BAA2B,GAAG;AAC9C,QAAM,iBAAiB,YAAY,CAAC;AAEpC,MAAI,+BAA+B,cAAc,GAAG;AAClD,UAAM,IAAI,MAAM,iCAAiC,cAAc,CAAC;AAAA,EAClE;AAEA,QAAM,SAAS,kBAAkB;AACjC,QAAM,YACJ,mBAAmB,SACf,2BAA2B,GAAG,IAC9B,2BAA2B,KAAK,MAAM;AAE5C,MAAI,YAAY,QAAW;AACzB,QACE,OAAO,SAAS,QAChB,mBAAmB,UACnB,2BAA2B,GAAG,MAAM,QACpC;AACA,aAAO;AAAA,QACL,MAAM;AAAA,QACN,UAAU,kBAAkB,0BAA0B,GAAG;AAAA,QACzD,MAAM;AAAA,MACR;AAAA,IACF;AACA,UAAM,IAAI;AAAA,MACR;AAAA,QACE;AAAA,QACA,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AACA,MAAI,OAAO,SAAS,QAAQ,mBAAmB,QAAW;AACxD,WAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU,kBAAkB,wBAAwB,GAAG;AAAA,MACvD,MAAM;AAAA,IACR;AAAA,EACF;AACA,MAAI,OAAO,SAAS,QAAQ,mBAAmB,QAAW;AACxD,QAAI,CAAC,mBAAmB,wBAAwB,MAAM,GAAG;AACvD,YAAM,IAAI;AAAA,QACR;AAAA,UACE,kBAAkB,GAAG,uBAAuB,MAAM;AAAA,UAClD,2BAA2B,GAAG;AAAA,QAChC;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU,2BAA2B,wBAAwB,QAAQ,GAAG;AAAA,MACxE,MAAM;AAAA,IACR;AAAA,EACF;AACA,MAAI,CAAC,oBAAoB,MAAM,GAAG;AAChC,UAAM,IAAI;AAAA,MACR;AAAA,QACE,gDAAgD,MAAM;AAAA,QACtD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,mBAAmB,SAAY,CAAC,IAAI,YAAY,MAAM,CAAC;AAAA,IACvD;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,0BACP,SACA,QACA,MACA,QACA,WACoB;AACpB,yBAAuB,QAAQ,QAAQ,SAAS;AAEhD,UAAQ,QAAQ;AAAA,IACd,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,oCAA8B,QAAQ,MAAM,GAAG,SAAS;AACxD;AAAA,IACF,KAAK;AACH,oCAA8B,QAAQ,MAAM,GAAG,SAAS;AACxD,UAAI,KAAK,CAAC,MAAM,QAAW;AACzB,cAAM,IAAI,MAAM,cAAc,uBAAuB,SAAS,CAAC;AAAA,MACjE;AACA;AAAA,IACF,KAAK;AACH;AAAA,QACE;AAAA,QACA;AAAA,QACA,OAAO,WAAW,OAAO,IAAI;AAAA,QAC7B;AAAA,MACF;AACA,UAAI,KAAK,CAAC,MAAM,QAAW;AACzB,cAAM,IAAI,MAAM,cAAc,uBAAuB,SAAS,CAAC;AAAA,MACjE;AACA,UACE,OAAO,WAAW,QAClB,KAAK,CAAC,MAAM,UACZ,OAAO,YAAY,MAAM,QACzB;AACA,cAAM,IAAI,MAAM,cAAc,yBAAyB,SAAS,CAAC;AAAA,MACnE;AACA;AAAA,IACF,KAAK;AACH,oCAA8B,QAAQ,MAAM,GAAG,SAAS;AACxD;AAAA,EACJ;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,MACJ;AAAA,MACA,GAAI,KAAK,CAAC,MAAM,UAAc,WAAW,SAAS,WAAW,WACzD,CAAC,IACD,EAAE,KAAK,KAAK,CAAC,EAAE;AAAA,MACnB,GAAI,OAAO,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,OAAO,KAAK;AAAA,MACzD,GAAI,OAAO,YAAY,MAAM,SACzB,CAAC,IACD,EAAE,gBAAgB,OAAO,YAAY,EAAE;AAAA,MAC3C,GAAI,WAAW,SAAS,WAAW,QAC/B,CAAC,IACD,KAAK,WAAW,QAAQ,IAAI,CAAC,MAAM,SACjC,CAAC,IACD,EAAE,YAAY,KAAK,WAAW,QAAQ,IAAI,CAAC,EAAE;AAAA,MACnD;AAAA,MACA,GAAI,OAAO,WAAW,SAAY,CAAC,IAAI,EAAE,QAAQ,OAAO,OAAO;AAAA,IACjE;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AACF;AAEA,SAAS,uBACP,QACA,QACA,WACM;AACN,wBAAsB,SAAS,OAAO,OAAO,SAAS;AACtD,wBAAsB,OAAO,OAAO,KAAK,SAAS;AAClD,wBAAsB,UAAU,OAAO,QAAQ,SAAS;AACxD,wBAAsB,UAAU,OAAO,QAAQ,SAAS;AACxD,wBAAsB,QAAQ,OAAO,MAAM,SAAS;AACpD,+BAA6B,SAAS,OAAO,OAAO,SAAS;AAC7D,+BAA6B,WAAW,OAAO,SAAS,SAAS;AACjE,yBAAuB,QAAQ,QAAQ,SAAS;AAEhD,MAAI,OAAO,WAAW,QAAQ,WAAW,OAAO;AAC9C,UAAM,IAAI;AAAA,MACR,cAAc,4CAA4C,SAAS;AAAA,IACrE;AAAA,EACF;AACA,MAAI,WAAW,SAAS,WAAW,QAAQ;AACzC;AAAA,EACF;AACA,MAAI,OAAO,SAAS,QAAQ,WAAW,SAAS,WAAW,OAAO;AAChE,UAAM,IAAI;AAAA,MACR,cAAc,KAAK,MAAM,+BAA+B,SAAS;AAAA,IACnE;AAAA,EACF;AACF;AAEA,SAAS,oBACP,OAC+B;AAC/B,SACE,UAAU,WACV,UAAU,YACV,UAAU,SACV,UAAU,SACV,UAAU,SACV,UAAU;AAEd;;;ACnNA;AAGO,SAAS,0BACd,aACA,QACoB;AACpB,QAAM,SAAS,YAAY,CAAC;AAE5B,MAAI,OAAO,SAAS,QAAQ,WAAW,QAAW;AAChD,WAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU,iCAAiC;AAAA,MAC3C,MAAM;AAAA,IACR;AAAA,EACF;AAEA,MAAI,WAAW,WAAW;AACxB,UAAM,IAAI;AAAA,MACR;AAAA,QACE,WAAW,SACP,iCACA,gCAAgC,MAAM;AAAA,QAC1C;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,MAAI,OAAO,SAAS,MAAM;AACxB,WAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU,iCAAiC,SAAS;AAAA,MACpD,MAAM;AAAA,IACR;AAAA,EACF;AAEA,wBAAsB,WAAW,OAAO,KAAK;AAC7C,wBAAsB,YAAY,OAAO,MAAM;AAC/C,wBAAsB,kBAAkB,OAAO,cAAc,CAAC;AAC9D,wBAAsB,mBAAmB,OAAO,eAAe,CAAC;AAChE,wBAAsB,SAAS,OAAO,GAAG;AACzC,wBAAsB,YAAY,OAAO,MAAM;AAC/C,+BAA6B,WAAW,OAAO,KAAK;AACpD,+BAA6B,aAAa,OAAO,OAAO;AAExD,QAAM,SAAS,YAAY,CAAC;AAC5B,MAAI,WAAW,QAAW;AACxB,UAAM,IAAI;AAAA,MACR;AAAA,QACE;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,MAAI,YAAY,SAAS,GAAG;AAC1B,UAAM,IAAI;AAAA,MACR;AAAA,QACE,oCAAoC,YAAY,MAAM,CAAC,EAAE,KAAK,GAAG,CAAC;AAAA,QAClE;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,MACJ;AAAA,MACA,GAAI,OAAO,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,OAAO,KAAK;AAAA,MACzD,GAAI,OAAO,WAAW,SAAY,CAAC,IAAI,EAAE,YAAY,OAAO,OAAO;AAAA,MACnE;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AACF;AAEA,SAAS,sBAAsB,MAAc,OAAsB;AACjE,MAAI,UAAU,QAAW;AACvB,UAAM,IAAI;AAAA,MACR;AAAA,QACE,+CAA+C,IAAI;AAAA,QACnD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,6BACP,MACA,OACM;AACN,MAAI,UAAU,MAAM;AAClB,0BAAsB,MAAM,KAAK;AAAA,EACnC;AACF;;;AC1FA;AAQO,SAAS,iCACd,SACA,aACA,QACoB;AACpB,MAAI,OAAO,SAAS,MAAM;AACxB,UAAM,IAAI;AAAA,MACR,cAAc,oBAAoB,OAAO,KAAK,gBAAgB,OAAO;AAAA,IACvE;AAAA,EACF;AAEA,UAAQ,SAAS;AAAA,IACf,KAAK;AAAA,IACL,KAAK;AACH,UAAI,YAAY,SAAS,GAAG;AAC1B,cAAM,IAAI;AAAA,UACR;AAAA,YACE,oCAAoC,YAAY,KAAK,GAAG,CAAC;AAAA,YACzD,gBAAgB;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,QACL,MAAM;AAAA,QACN,UAAU,wCAAwC,OAAO;AAAA,QACzD,MAAM;AAAA,MACR;AAAA,IACF,KAAK,WAAW;AACd,YAAM,SAAS,YAAY,CAAC;AAC5B,UAAI,WAAW,QAAW;AACxB,eAAO;AAAA,UACL,MAAM;AAAA,UACN,UAAU,wCAAwC,SAAS;AAAA,UAC3D,MAAM;AAAA,QACR;AAAA,MACF;AACA,UAAI,CAAC,uBAAuB,MAAM,GAAG;AACnC,cAAM,IAAI;AAAA,UACR;AAAA,YACE,2BAA2B,MAAM;AAAA,YACjC,gBAAgB;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AACA,UACE,WAAW,gBACX,WAAW,iBACX,WAAW,aACX;AACA,cAAM,IAAI;AAAA,UACR;AAAA,YACE,2BAA2B,MAAM;AAAA,YACjC,gBAAgB;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AACA,UAAI,YAAY,SAAS,GAAG;AAC1B,cAAM,IAAI;AAAA,UACR;AAAA,YACE,oCAAoC,YAAY,MAAM,CAAC,EAAE,KAAK,GAAG,CAAC;AAAA,YAClE,gBAAgB;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,QACL,MAAM;AAAA,QACN,UAAU,8CAA8C,MAAM;AAAA,QAC9D,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;;;ACnFA;AAaO,SAAS,wBACd,aACA,QACoB;AACpB,QAAM,YAAY;AAElB,MAAI,YAAY,SAAS,GAAG;AAC1B,UAAM,IAAI;AAAA,MACR;AAAA,QACE,oCAAoC,YAAY,KAAK,GAAG,CAAC;AAAA,QACzD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,2BAAyB,MAAM;AAC/B,sBAAoB,UAAU,OAAO,QAAQ,SAAS;AACtD,sBAAoB,WAAW,OAAO,SAAS,SAAS;AACxD,sBAAoB,WAAW,OAAO,SAAS,SAAS;AACxD,sBAAoB,UAAU,OAAO,QAAQ,SAAS;AACtD,sBAAoB,YAAY,OAAO,UAAU,SAAS;AAC1D,sBAAoB,QAAQ,OAAO,MAAM,SAAS;AAClD,sBAAoB,UAAU,OAAO,QAAQ,SAAS;AACtD,sBAAoB,SAAS,OAAO,OAAO,SAAS;AACpD,sBAAoB,UAAU,OAAO,QAAQ,SAAS;AACtD,sBAAoB,MAAM,OAAO,IAAI,SAAS;AAE9C,QAAM,OAAO;AAAA,IACX,GAAI,OAAO,YAAY,MAAM,SACzB,CAAC,IACD,EAAE,eAAe,OAAO,YAAY,EAAE;AAAA,IAC1C,MAAM,OAAO,QAAQ;AAAA,IACrB,GAAI,OAAO,UAAU,SAAY,CAAC,IAAI,EAAE,WAAW,OAAO,MAAM;AAAA,IAChE,GAAI,OAAO,cAAc,MAAM,SAC3B,CAAC,IACD;AAAA,MACE,aAAa,eAAe,OAAO,cAAc,GAAG,gBAAgB;AAAA,IACtE;AAAA,IACJ,GAAI,OAAO,QAAQ,SAAY,CAAC,IAAI,EAAE,SAAS,OAAO,IAAI;AAAA,IAC1D,GAAI,OAAO,WAAW,SAAY,CAAC,IAAI,EAAE,YAAY,OAAO,OAAO;AAAA,IACnE,GAAI,OAAO,eAAe,MAAM,SAC5B,CAAC,IACD;AAAA,MACE,cAAc;AAAA,QACZ,OAAO,eAAe;AAAA,QACtB;AAAA,MACF;AAAA,IACF;AAAA,IACJ,GAAI,OAAO,WAAW,SAAY,CAAC,IAAI,EAAE,QAAQ,OAAO,OAAO;AAAA,IAC/D,GAAI,OAAO,UAAU,SACjB,CAAC,IACD;AAAA,MACE,aAAa,kBAAkB,OAAO,OAAO,WAAW,SAAS;AAAA,IACnE;AAAA,IACJ,SAAS,OAAO,WAAW;AAAA,EAC7B;AAEA,MAAI,OAAO,QAAQ,OAAO;AACxB,WAAO;AAAA,MACL;AAAA,MACA,MAAM;AAAA,MACN,UAAU,wBAAwB;AAAA,MAClC,MAAM;AAAA,IACR;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AACF;;;AC7EA;AANA;AAAA,EACE,4BAAAC;AAAA,OAGK;AA6BP,IAAM,0BAA0B,oBAAI,IAAI,CAAC,OAAO,QAAQ,CAAC;AACzD,IAAM,qCAAqC,oBAAI,IAAI,CAAC,OAAO,OAAO,MAAM,CAAC;AACzE,IAAM,+BAA+B,oBAAI,IAAI,CAAC,OAAO,KAAK,CAAC;AAC3D,IAAM,+BAA+B,oBAAI,IAAI,CAAC,cAAc,CAAC;AAC7D,IAAM,2BAA2B,oBAAI,IAAI;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AACD,IAAM,uBAAuB,oBAAI,IAAI,CAAC,OAAO,KAAK,CAAC;AACnD,IAAM,2BAA2B,oBAAI,IAAI,CAAC,OAAO,MAAM,CAAC;AACxD,IAAM,wBAAwB,oBAAI,IAAI,CAAC,OAAO,QAAQ,CAAC;AACvD,IAAM,wBAAwB,oBAAI,IAAI,CAAC,SAAS,OAAO,MAAM,CAAC;AAC9D,IAAM,wBAAwB,oBAAI,IAAI;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAEM,SAAS,8BACd,aACA,QACoB;AACpB,QAAM,MAAM,YAAY,CAAC;AACzB,QAAM,iBAAiB,YAAY,CAAC;AAEpC,MAAI,QAAQ,QAAW;AACrB,UAAM,IAAI,MAAM,sCAAsC;AAAA,EACxD;AAEA,QAAM,SAASC,0BAAyB,GAAG;AAC3C,MAAI,WAAW,QAAW;AACxB,UAAM,IAAI,MAAM,sCAAsC,GAAG,EAAE;AAAA,EAC7D;AAEA,QAAM,SACJ,mBACC,OAAO,SAAS,YACf,OAAO,cAAc,UAAa,OAAO,cAAc,kBACvD,OAAO,UAAU,UACjB,OAAO,UAAU,UACjB,OAAO,WAAW,UAChB,kCAAkC,OAAO,WAAW,OAAO,KAAK,IAChE,OAAO,SAAS,WACd,OAAO,SAAS,wBAChB,OAAO,SAAS,cAChB,OAAO,SAAS,UAChB,OAAO,SAAS,aAChB,OAAO,SAAS,kBAChB,OAAO,cAAc,iBACrB,QACA,OAAO,SAAS,iBACd,iBACA;AAEV,MAAI,WAAW,aAAa,OAAO,SAAS,WAAW;AACrD,UAAM,IAAI;AAAA,MACR;AAAA,QACE;AAAA,QACA,2BAA2B,GAAG;AAAA,MAChC;AAAA,IACF;AAAA,EACF;AAEA,MAAI,OAAO,SAAS,MAAM;AACxB,WAAO,0BAA0B,KAAK,QAAQ,QAAQ,cAAc;AAAA,EACtE;AAEA,MAAI,OAAO,SAAS,aAAa,WAAW,WAAW;AACrD,WAAO;AAAA,MACL;AAAA,MACA,mBAAmB,SAAY,CAAC,IAAI,YAAY,MAAM,CAAC;AAAA,MACvD;AAAA,IACF;AAAA,EACF;AAEA,MACE,OAAO,SAAS,aAChB,OAAO,cAAc,WACpB,WAAW,YAAY,OAAO,UAAU,SACzC;AACA,WAAO;AAAA,MACL;AAAA,MACA,mBAAmB,SAAY,CAAC,IAAI,YAAY,MAAM,CAAC;AAAA,MACvD;AAAA,IACF;AAAA,EACF;AAEA,MAAI,OAAO,SAAS,YAAY;AAC9B,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA,mBAAmB,SAAY,CAAC,IAAI,YAAY,MAAM,CAAC;AAAA,MACvD;AAAA,IACF;AAAA,EACF;AAEA,MAAI,OAAO,SAAS,UAAU,OAAO,SAAS,gBAAgB;AAC5D,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA,mBAAmB,SAAY,CAAC,IAAI,YAAY,MAAM,CAAC;AAAA,MACvD;AAAA,IACF;AAAA,EACF;AAEA,MAAI,OAAO,SAAS,gBAAgB;AAClC,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA,mBAAmB,SAAY,CAAC,IAAI,YAAY,MAAM,CAAC;AAAA,MACvD;AAAA,IACF;AAAA,EACF;AAEA,MAAI,OAAO,SAAS,sBAAsB;AACxC,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA,mBAAmB,SAAY,CAAC,IAAI,YAAY,MAAM,CAAC;AAAA,MACvD;AAAA,IACF;AAAA,EACF;AAEA,MAAI,OAAO,SAAS,WAAW,OAAO,cAAc,gBAAgB;AAClE,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA,mBAAmB,SAAY,CAAC,IAAI,YAAY,MAAM,CAAC;AAAA,MACvD;AAAA,IACF;AAAA,EACF;AAEA,MACE,OAAO,SAAS,YACf,OAAO,cAAc,UACpB,WAAW,aACX,WAAW,cACX,WAAW,UACX,WAAW,YACV,WAAW,UAAU,mBAAmB,SAC3C;AACA,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA,mBAAmB,SAAY,CAAC,IAAI,YAAY,MAAM,CAAC;AAAA,MACvD;AAAA,IACF;AAAA,EACF;AAEA,MAAI,CAAC,gBAAgB,MAAM,GAAG;AAC5B,UAAM,IAAI;AAAA,MACR;AAAA,QACE,0BAA0B,GAAG,uBAAuB,MAAM;AAAA,QAC1D,2BAA2B,GAAG;AAAA,MAChC;AAAA,IACF;AAAA,EACF;AACA,iCAA+B,KAAK,QAAQ,MAAM;AAElD,MAAI,OAAO,SAAS,WAAW;AAC7B,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA,mBAAmB,SAAY,CAAC,IAAI,YAAY,MAAM,CAAC;AAAA,MACvD;AAAA,IACF;AAAA,EACF;AAEA,MAAI,OAAO,SAAS,YAAY;AAC9B,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA,mBAAmB,SAAY,CAAC,IAAI,YAAY,MAAM,CAAC;AAAA,MACvD;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,mBAAmB,SAAY,CAAC,IAAI,YAAY,MAAM,CAAC;AAAA,IACvD;AAAA,EACF;AACF;AAEA,SAAS,0BACP,KACA,QACA,QACA,gBACoB;AACpB,MAAI,OAAO,SAAS,aAAa,WAAW,WAAW;AACrD,WAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU,2BAA2B,iBAAiB,WAAW,GAAG;AAAA,MACpE,MAAM;AAAA,IACR;AAAA,EACF;AAEA,MACE,OAAO,SAAS,WAChB,OAAO,cAAc,UACrB,WAAW,YACX,mBAAmB,QACnB;AACA,WAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU,yBAAyB,KAAK,MAAM;AAAA,MAC9C,MAAM;AAAA,IACR;AAAA,EACF;AAEA,MACE,OAAO,SAAS,cAChB,OAAO,SAAS,UAChB,OAAO,SAAS,wBAChB,OAAO,SAAS,kBAChB,OAAO,SAAS,gBAChB;AACA,QAAI,mBAAmB,UAAa,CAAC,gBAAgB,MAAM,GAAG;AAC5D,YAAM,IAAI;AAAA,QACR;AAAA,UACE,0BAA0B,GAAG,uBAAuB,MAAM;AAAA,UAC1D,2BAA2B,GAAG;AAAA,QAChC;AAAA,MACF;AAAA,IACF;AACA,QAAI,gBAAgB,MAAM,GAAG;AAC3B,qCAA+B,KAAK,QAAQ,MAAM;AAAA,IACpD;AACA,WAAO;AAAA,MACL,MAAM;AAAA,MACN,UACE,mBAAmB,SACf,yBAAyB,KAAK,MAAM,IACpC;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AAEA,MAAI,OAAO,SAAS,WAAW,OAAO,cAAc,gBAAgB;AAClE,QAAI,mBAAmB,QAAW;AAChC,aAAO;AAAA,QACL,MAAM;AAAA,QACN,UAAU,yBAAyB,KAAK,MAAM;AAAA,QAC9C,MAAM;AAAA,MACR;AAAA,IACF;AACA,QAAI,CAAC,sBAAsB,IAAI,MAAM,GAAG;AACtC,YAAM,IAAI;AAAA,QACR;AAAA,UACE,qBAAqB,GAAG,uBAAuB,MAAM;AAAA,UACrD,2BAA2B,GAAG;AAAA,QAChC;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU;AAAA,QACR;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,MAAM;AAAA,IACR;AAAA,EACF;AAEA,MAAI,OAAO,SAAS,WAAW,OAAO,cAAc,QAAW;AAC7D,UAAM,aAAa,gCAAgC,OAAO,SAAS;AACnE,QAAI,mBAAmB,QAAW;AAChC,aAAO;AAAA,QACL,MAAM;AAAA,QACN,UAAU,kBAAkB,YAAY,GAAG;AAAA,QAC3C,MAAM;AAAA,MACR;AAAA,IACF;AACA,QAAI,mCAAmC,UAAU,GAAG;AAClD,YAAM,IAAI;AAAA,QACR;AAAA,UACE,mCAAmC,GAAG,wCAAwC,MAAM;AAAA,UACpF,2BAA2B,GAAG;AAAA,QAChC;AAAA,MACF;AAAA,IACF;AACA,QAAI,CAAC,mBAAmB,YAAY,MAAM,GAAG;AAC3C,YAAM,IAAI;AAAA,QACR;AAAA,UACE,0BAA0B,GAAG,uBAAuB,MAAM;AAAA,UAC1D,2BAA2B,GAAG;AAAA,QAChC;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU,2BAA2B,YAAY,QAAQ,GAAG;AAAA,MAC5D,MAAM;AAAA,IACR;AAAA,EACF;AAEA,MAAI,CAAC,gBAAgB,MAAM,GAAG;AAC5B,UAAM,IAAI;AAAA,MACR;AAAA,QACE,0BAA0B,GAAG,uBAAuB,MAAM;AAAA,QAC1D,2BAA2B,GAAG;AAAA,MAChC;AAAA,IACF;AAAA,EACF;AACA,iCAA+B,KAAK,QAAQ,MAAM;AAClD,SAAO;AAAA,IACL,MAAM;AAAA,IACN,UACE,mBAAmB,SACf,yBAAyB,KAAK,MAAM,IACpC,+BAA+B,KAAK,QAAQ,MAAM;AAAA,IACxD,MAAM;AAAA,EACR;AACF;AAEA,SAAS,gCAAgC,WAAsC;AAC7E,QAAM,OAAO,qBAAqB,SAAS;AAC3C,QAAM,gBAAgB,mBAAmB,SAAS;AAClD,MAAI,kBAAkB,QAAW;AAC/B,YAAQ,cAAc,MAAM;AAAA,MAC1B,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,gBAAQ,cAAc,UAAU;AAAA,UAC9B,KAAK;AACH,mBAAO,qBAAqB,SAAS,IACjC,gCACA;AAAA,UACN,KAAK;AACH,mBAAO,qBAAqB,SAAS,IACjC,iCACA;AAAA,UACN,KAAK;AACH,mBAAO;AAAA,QACX;AACA;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AACH,gBAAQ,cAAc,MAAM;AAAA,UAC1B,KAAK;AACH,mBAAO;AAAA,UACT,KAAK;AACH,mBAAO;AAAA,UACT,KAAK;AACH,mBAAO;AAAA,UACT,KAAK;AACH,mBAAO;AAAA,UACT,KAAK;AACH,mBAAO;AAAA,QACX;AACA;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AACH,eAAO;AAAA,IACX;AAAA,EACF;AACA,MAAI,SAAS,SAAS;AACpB,WAAO;AAAA,EACT;AACA,MAAI,eAAe,KAAK,IAAI,GAAG;AAC7B,WAAO;AAAA,EACT;AACA,MAAI,SAAS,UAAU;AACrB,WAAO;AAAA,EACT;AACA,MAAI,6BAA6B,KAAK,IAAI,GAAG;AAC3C,WAAO;AAAA,EACT;AACA,MAAI,gBAAgB,KAAK,IAAI,GAAG;AAC9B,WAAO;AAAA,EACT;AACA,MAAI,kBAAkB,IAAI,GAAG;AAC3B,WAAO;AAAA,EACT;AACA,MAAI,qBAAqB,KAAK,IAAI,GAAG;AACnC,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEA,SAAS,qBAAqB,WAA4B;AACxD,SAAO,UAAU,SAAS,GAAG;AAC/B;AAEA,SAAS,mCACP,YACS;AACT,SACE,eAAe,8BACf,eAAe,mBACf,eAAe,2BACf,eAAe,4BACf,eAAe,0BACf,eAAe;AAEnB;AAEA,SAAS,2BACP,KACA,QACA,QACA,MACA,QACoB;AACpB,MAAI,CAAC,sBAAsB,IAAI,MAAM,GAAG;AACtC,UAAM,IAAI;AAAA,MACR;AAAA,QACE,qBAAqB,GAAG,uBAAuB,MAAM;AAAA,QACrD,2BAA2B,KAAK,MAAM;AAAA,MACxC;AAAA,IACF;AAAA,EACF;AACA,MACE,OAAO,cAAc,UACrB,WAAW,YACX,WAAW,QACX;AACA,UAAM,IAAI;AAAA,MACR;AAAA,QACE,0CAA0C,MAAM;AAAA,QAChD,2BAA2B,KAAK,MAAM;AAAA,MACxC;AAAA,IACF;AAAA,EACF;AAEA,QAAM,SAAS;AAAA,IACb;AAAA,IACA;AAAA,MACE,OAAO,cAAc,SACjB,kCACA,sCAAsC,OAAO,SAAS;AAAA,MAC1D,GAAG;AAAA,IACL;AAAA,IACA;AAAA,IACA,2BAA2B,KAAK,MAAM;AAAA,IACtC;AAAA,MACE,GAAG,qBAAqB,4BAA4B,OAAO,SAAS,CAAC;AAAA,MACrE,GAAG,sBAAsB,6BAA6B,OAAO,SAAS,CAAC;AAAA,IACzE;AAAA,EACF;AAEA,MAAI,OAAO,SAAS,WAAW;AAC7B,WAAO;AAAA,EACT;AAEA,QAAM,uBAAuB,OAAO,KAAK;AACzC,QAAM,sBAAsB,CAC1B,UAEA,UAAU,SACN,SACA,UAAU,uBACR,MACA,MAAM,QAAQ,sBAAsB,GAAG;AAE/C,SAAO;AAAA,IACL,GAAG;AAAA,IACH,MAAM;AAAA,MACJ,GAAG,OAAO;AAAA,MACV,aAAa;AAAA,MACb,GAAG,iBAAiB,oBAAoB,OAAO,KAAK,QAAQ,CAAC;AAAA,IAC/D;AAAA,EACF;AACF;AAEA,SAAS,0CAA0C,QAAwB;AACzE,SAAO,iBAAiB,MAAM;AAChC;AAEA,SAAS,qBACP,cACsD;AACtD,SAAO,iBAAiB,SAAY,CAAC,IAAI,EAAE,aAAa;AAC1D;AAEA,SAAS,sBACP,eACmD;AACnD,SAAO,kBAAkB,SAAY,CAAC,IAAI,EAAE,cAAc;AAC5D;AAEA,SAAS,iBAAiB,UAExB;AACA,SAAO,aAAa,SAAY,CAAC,IAAI,EAAE,SAAS;AAClD;AAEA,SAAS,sCAAsC,WAA2B;AACxE,QAAM,OAAO,qBAAqB,SAAS;AAC3C,SAAO,iCAAiC,IAAI;AAC9C;AAEA,SAAS,4BACP,WACsC;AACtC,MAAI,cAAc,QAAW;AAC3B,WAAO;AAAA,EACT;AACA,QAAM,gBAAgB,mBAAmB,SAAS;AAClD,MAAI,kBAAkB,QAAW;AAC/B,YAAQ,cAAc,MAAM;AAAA,MAC1B,KAAK;AAAA,MACL,KAAK;AACH,eAAO,CAAC,SAAS;AAAA,MACnB,KAAK;AAAA,MACL,KAAK;AACH,eAAO,CAAC,cAAc,IAAI;AAAA,MAC5B,KAAK;AAAA,MACL,KAAK;AACH,eAAO,CAAC,QAAQ;AAAA,MAClB,KAAK;AACH,eAAO,cAAc,aAAa,UAC9B,SACA,CAAC,cAAc,QAAQ;AAAA,MAC7B,KAAK;AAAA,MACL,KAAK;AACH,eAAO;AAAA,IACX;AAAA,EACF;AACA,QAAM,OAAO,qBAAqB,SAAS;AAC3C,QAAM,CAAC,IAAI,IAAI,KAAK,MAAM,GAAG;AAE7B,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO,CAAC,SAAS;AAAA,IACnB,KAAK;AACH,aAAO,CAAC,OAAO;AAAA,IACjB,KAAK;AACH,aAAO,CAAC,QAAQ;AAAA,IAClB,KAAK;AACH,aAAO,CAAC,QAAQ;AAAA,IAClB,KAAK;AACH,aAAO,CAAC,SAAS;AAAA,IACnB,KAAK;AACH,aAAO,CAAC,QAAQ;AAAA,IAClB;AACE,aAAO;AAAA,EACX;AACF;AAEA,SAAS,6BACP,WACkC;AAClC,MAAI,cAAc,QAAW;AAC3B,WAAO;AAAA,EACT;AACA,QAAM,gBAAgB,mBAAmB,SAAS;AAClD,MAAI,kBAAkB,QAAW;AAC/B,WAAO;AAAA,EACT;AAEA,UAAQ,cAAc,MAAM;AAAA,IAC1B,KAAK;AAAA,IACL,KAAK;AACH,aAAO,cAAc;AAAA,IACvB;AACE,aAAO;AAAA,EACX;AACF;AAEA,SAAS,kCACP,WACA,OAC2B;AAC3B,MAAI,cAAc,QAAW;AAC3B,WAAO,UAAU,SAAY,SAAS;AAAA,EACxC;AACA,MAAI,wBAAwB,SAAS,GAAG;AACtC,WAAO,UAAU,SAAY,SAAS;AAAA,EACxC;AAEA,SAAO;AACT;AAEA,SAAS,wBAAwB,WAA4B;AAC3D,QAAM,gBAAgB,mBAAmB,SAAS;AAClD,MAAI,kBAAkB,QAAW;AAC/B,YAAQ,cAAc,MAAM;AAAA,MAC1B,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAO;AAAA,IACX;AAAA,EACF;AAEA,QAAM,OAAO,qBAAqB,SAAS;AAC3C,SAAO,4CAA4C,KAAK,IAAI,IACxD,OACA,kBAAkB,IAAI;AAC5B;AAEA,SAAS,8BACP,KACA,QACA,QACA,MACA,QACoB;AACpB,QAAM,YAAY,2BAA2B,KAAK,MAAM;AACxD,MAAI,CAAC,yBAAyB,IAAI,MAAM,GAAG;AACzC,UAAM,IAAI;AAAA,MACR;AAAA,QACE,wBAAwB,GAAG,uBAAuB,MAAM;AAAA,QACxD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,yBAAuB,QAAQ,MAAM,GAAG,SAAS;AACjD,2BAAyB,QAAQ,QAAQ,SAAS;AAClD,oBAAkB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC5D,oBAAkB,QAAQ,QAAQ,OAAO,IAAI,SAAS;AACtD,oBAAkB,QAAQ,gBAAgB,OAAO,YAAY,GAAG,SAAS;AACzE,2BAAyB,QAAQ,WAAW,OAAO,OAAO,SAAS;AACnE,MAAI,WAAW,OAAO;AACpB,QAAI,OAAO,SAAS,QAAW;AAC7B,YAAM,IAAI,MAAM,cAAc,4BAA4B,SAAS,CAAC;AAAA,IACtE;AACA,WAAO;AAAA,MACL,MAAM,EAAE,QAAQ,UAAU,MAAM,OAAO,MAAM,MAAM,OAAO,MAAM,OAAO;AAAA,MACvE,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AACA,oBAAkB,QAAQ,UAAU,OAAO,MAAM,SAAS;AAC1D,SAAO;AAAA,IACL,MAAM,EAAE,QAAQ,QAAQ,MAAM,OAAO,MAAM,OAAO;AAAA,IAClD,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AACF;AAEA,SAAS,0BACP,KACA,QACA,QACA,MACA,QACoB;AACpB,QAAM,YAAY,2BAA2B,KAAK,MAAM;AACxD,MAAI,CAAC,qBAAqB,IAAI,MAAM,GAAG;AACrC,UAAM,IAAI;AAAA,MACR;AAAA,QACE,2BAA2B,GAAG,uBAAuB,MAAM;AAAA,QAC3D;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,2BAAyB,QAAQ,QAAQ,SAAS;AAClD,oBAAkB,QAAQ,UAAU,OAAO,MAAM,SAAS;AAC1D,oBAAkB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC5D,oBAAkB,QAAQ,QAAQ,OAAO,IAAI,SAAS;AACtD,oBAAkB,QAAQ,gBAAgB,OAAO,YAAY,GAAG,SAAS;AACzE,MAAI,WAAW,OAAO;AACpB,2BAAuB,QAAQ,MAAM,GAAG,SAAS;AACjD,6BAAyB,QAAQ,WAAW,OAAO,OAAO,SAAS;AACnE,WAAO;AAAA,MACL,MAAM,EAAE,QAAQ,OAAO,MAAM,OAAO,MAAM,OAAO;AAAA,MACjD,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AACA,yBAAuB,QAAQ,MAAM,GAAG,SAAS;AACjD,MAAI,KAAK,CAAC,MAAM,QAAW;AACzB,UAAM,IAAI,MAAM,cAAc,uBAAuB,SAAS,CAAC;AAAA,EACjE;AACA,MAAI,OAAO,SAAS,gBAAgB;AAClC,6BAAyB,QAAQ,WAAW,OAAO,OAAO,SAAS;AACnE,WAAO;AAAA,MACL,MAAM,EAAE,QAAQ,OAAO,MAAM,OAAO,MAAM,QAAQ,IAAI,KAAK,CAAC,EAAE;AAAA,MAC9D,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AACA,SAAO;AAAA,IACL,MAAM;AAAA,MACJ,QAAQ;AAAA,MACR,MAAM,OAAO;AAAA,MACb,OAAO,OAAO;AAAA,MACd,MAAM,KAAK,CAAC;AAAA,MACZ,QAAQ,6BAA6B,MAAM;AAAA,IAC7C;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AACF;AAEA,SAAS,6BACP,QAC2B;AAC3B,MAAI,OAAO,SAAS,QAAQ;AAC1B,UAAM,IAAI,MAAM,+CAA+C;AAAA,EACjE;AACA,SAAO;AAAA,IACL,WAAW,OAAO;AAAA,IAClB,MAAM;AAAA,IACN,GAAI,OAAO,aAAa,SAAY,CAAC,IAAI,EAAE,UAAU,OAAO,SAAS;AAAA,EACvE;AACF;AAEA,SAAS,uCACP,KACA,QACA,QACA,MACA,QACoB;AACpB,QAAM,YAAY,2BAA2B,KAAK,MAAM;AACxD,MAAI,CAAC,mCAAmC,IAAI,MAAM,GAAG;AACnD,UAAM,IAAI;AAAA,MACR;AAAA,QACE,iCAAiC,GAAG,uBAAuB,MAAM;AAAA,QACjE;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,yBAAuB,QAAQ,MAAM,GAAG,SAAS;AACjD,2BAAyB,QAAQ,QAAQ,SAAS;AAClD,oBAAkB,QAAQ,UAAU,OAAO,MAAM,SAAS;AAC1D,oBAAkB,QAAQ,gBAAgB,OAAO,YAAY,GAAG,SAAS;AACzE,MAAI,WAAW,OAAO;AACpB,6BAAyB,QAAQ,WAAW,OAAO,OAAO,SAAS;AACnE,QAAI,OAAO,UAAU,QAAW;AAC9B,YAAM,IAAI,MAAM,cAAc,2BAA2B,SAAS,CAAC;AAAA,IACrE;AACA,WAAO;AAAA,MACL,MAAM;AAAA,QACJ,QAAQ;AAAA,QACR,WAAW,OAAO;AAAA,QAClB,MAAM,OAAO;AAAA,QACb;AAAA,QACA,GAAI,OAAO,OAAO,SAAY,CAAC,IAAI,EAAE,IAAI,OAAO,GAAG;AAAA,MACrD;AAAA,MACA,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AACA,oBAAkB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC5D,oBAAkB,QAAQ,QAAQ,OAAO,IAAI,SAAS;AACtD,SAAO;AAAA,IACL,MAAM;AAAA,MACJ,QAAQ,WAAW,QAAQ,QAAQ;AAAA,MACnC,MAAM,OAAO;AAAA,MACb,OAAO,OAAO;AAAA,MACd;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AACF;AAEA,SAAS,iCACP,KACA,QACA,QACA,MACA,QACoB;AACpB,QAAM,YAAY,2BAA2B,KAAK,MAAM;AACxD,MAAI,CAAC,6BAA6B,IAAI,MAAM,GAAG;AAC7C,UAAM,IAAI;AAAA,MACR;AAAA,QACE,2BAA2B,GAAG,wCAAwC,MAAM;AAAA,QAC5E;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,yBAAuB,QAAQ,MAAM,GAAG,SAAS;AACjD,2BAAyB,QAAQ,QAAQ,SAAS;AAClD,oBAAkB,QAAQ,UAAU,OAAO,MAAM,SAAS;AAC1D,oBAAkB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC5D,oBAAkB,QAAQ,QAAQ,OAAO,IAAI,SAAS;AACtD,oBAAkB,QAAQ,gBAAgB,OAAO,YAAY,GAAG,SAAS;AACzE,2BAAyB,QAAQ,WAAW,OAAO,OAAO,SAAS;AACnE,SAAO;AAAA,IACL,MAAM;AAAA,MACJ,QAAQ;AAAA,MACR,GAAI,OAAO,UAAU,SACjB,CAAC,IACD;AAAA,QACE,OAAO;AAAA,UACL,OAAO;AAAA,UACP;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,MACJ,MAAM,OAAO;AAAA,MACb,GAAI,OAAO,WAAW,SAAY,CAAC,IAAI,EAAE,QAAQ,OAAO,OAAO;AAAA,MAC/D;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AACF;AAEA,SAAS,2BACP,KACA,QACA,QACA,MACA,QACoB;AACpB,QAAM,YAAY,2BAA2B,KAAK,MAAM;AACxD,MAAI,CAAC,sBAAsB,IAAI,MAAM,GAAG;AACtC,UAAM,IAAI;AAAA,MACR;AAAA,QACE,qBAAqB,GAAG,uBAAuB,MAAM;AAAA,QACrD,2BAA2B,GAAG;AAAA,MAChC;AAAA,IACF;AAAA,EACF;AAEA,yBAAuB,QAAQ,MAAM,GAAG,SAAS;AACjD,2BAAyB,QAAQ,QAAQ,SAAS;AAClD,oBAAkB,QAAQ,UAAU,OAAO,MAAM,SAAS;AAC1D,oBAAkB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC5D,oBAAkB,QAAQ,gBAAgB,OAAO,YAAY,GAAG,SAAS;AACzE,oBAAkB,QAAQ,QAAQ,OAAO,IAAI,SAAS;AAEtD,MAAI,WAAW,QAAQ;AACrB,QAAI,OAAO,SAAS,MAAM;AACxB,YAAM,IAAI;AAAA,QACR;AAAA,UACE;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,MACL,MAAM;AAAA,QACJ,QAAQ;AAAA,QACR,GAAI,OAAO,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,OAAO,MAAM;AAAA,QAC5D;AAAA,MACF;AAAA,MACA,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AAEA,oBAAkB,QAAQ,aAAa,OAAO,SAAS,SAAS;AAChE,2BAAyB,QAAQ,WAAW,OAAO,OAAO,SAAS;AACnE,SAAO;AAAA,IACL,MAAM;AAAA,MACJ,QAAQ,WAAW,UAAU,gBAAgB;AAAA,MAC7C,GAAI,OAAO,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,OAAO,KAAK;AAAA,MACzD;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AACF;AAEA,SAAS,6BACP,KACA,QACA,QACA,MACA,QACoB;AACpB,QAAM,YAAY,2BAA2B,KAAK,MAAM;AACxD,MAAI,CAAC,wBAAwB,IAAI,MAAM,GAAG;AACxC,UAAM,IAAI;AAAA,MACR;AAAA,QACE,uBAAuB,GAAG,uBAAuB,MAAM;AAAA,QACvD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,2BAAyB,QAAQ,QAAQ,WAAW;AAAA,IAClD,cAAc,WAAW;AAAA,EAC3B,CAAC;AACD,oBAAkB,QAAQ,UAAU,OAAO,MAAM,SAAS;AAC1D,oBAAkB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC5D,oBAAkB,QAAQ,gBAAgB,OAAO,YAAY,GAAG,SAAS;AACzE,2BAAyB,QAAQ,WAAW,OAAO,OAAO,SAAS;AACnE,yBAAuB,QAAQ,MAAM,GAAG,SAAS;AAEjD,MAAI,WAAW,OAAO;AACpB,sBAAkB,QAAQ,QAAQ,OAAO,IAAI,SAAS;AACtD,6BAAyB,QAAQ,aAAa,OAAO,SAAS,SAAS;AACvE,WAAO;AAAA,MACL,MAAM,EAAE,QAAQ,MAAM,OAAO,MAAM,OAAO;AAAA,MAC1C,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AAEA,MAAI,WAAW,UAAU;AACvB,QAAI,OAAO,YAAY,MAAM;AAC3B,YAAM,IAAI,MAAM,cAAc,sBAAsB,SAAS,CAAC;AAAA,IAChE;AACA,sBAAkB,QAAQ,QAAQ,OAAO,IAAI,SAAS;AACtD,WAAO;AAAA,MACL,MAAM,EAAE,QAAQ,SAAS,MAAM,MAAM,OAAO,MAAM,OAAO;AAAA,MACzD,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AAEA,QAAM,IAAI;AAAA,IACR;AAAA,EACF;AACF;AAEA,SAAS,oCACP,KACA,MACA,QACoB;AACpB,SAAO;AAAA,IACL;AAAA,IACA,CAAC,KAAK,GAAG,IAAI;AAAA,IACb;AAAA,IACA,2BAA2B,KAAK,SAAS;AAAA,EAC3C;AACF;AAEA,SAAS,sCACP,KACA,MACA,QACoB;AACpB,SAAO;AAAA,IACL;AAAA,IACA,CAAC,KAAK,GAAG,IAAI;AAAA,IACb;AAAA,IACA,2BAA2B,KAAK,QAAQ;AAAA,EAC1C;AACF;AAEA,SAAS,2BACP,KACA,QACA,QACA,MACA,QACoB;AACpB,QAAM,YAAY,2BAA2B,KAAK,MAAM;AACxD,MAAI,CAAC,sBAAsB,IAAI,MAAM,GAAG;AACtC,UAAM,IAAI;AAAA,MACR;AAAA,QACE,qBAAqB,GAAG,uBAAuB,MAAM;AAAA,QACrD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,2BAAyB,QAAQ,QAAQ,WAAW;AAAA,IAClD,cAAc,WAAW;AAAA,EAC3B,CAAC;AACD,2BAAyB,QAAQ,WAAW,OAAO,OAAO,SAAS;AACnE,oBAAkB,QAAQ,gBAAgB,OAAO,YAAY,GAAG,SAAS;AAEzE,UAAQ,QAAQ;AAAA,IACd,KAAK;AACH,6BAAuB,QAAQ,MAAM,GAAG,SAAS;AACjD,wBAAkB,QAAQ,UAAU,OAAO,MAAM,SAAS;AAC1D,wBAAkB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC5D,wBAAkB,QAAQ,QAAQ,OAAO,IAAI,SAAS;AACtD,UAAI,CAAC,OAAO,aAAa,OAAO,YAAY,MAAM;AAChD,cAAM,IAAI,MAAM,cAAc,sBAAsB,SAAS,CAAC;AAAA,MAChE;AACA,aAAO;AAAA,QACL,MAAM;AAAA,UACJ;AAAA,UACA,GAAI,OAAO,YAAY,SAAY,CAAC,IAAI,EAAE,SAAS,OAAO,QAAQ;AAAA,UAClE,MAAM,OAAO;AAAA,UACb;AAAA,QACF;AAAA,QACA,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF,KAAK;AAAA,IACL,KAAK;AACH,6BAAuB,QAAQ,MAAM,GAAG,SAAS;AACjD,wBAAkB,QAAQ,UAAU,OAAO,MAAM,SAAS;AAC1D,wBAAkB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC5D,wBAAkB,QAAQ,QAAQ,OAAO,IAAI,SAAS;AACtD,aAAO;AAAA,QACL,MAAM,EAAE,QAAQ,MAAM,OAAO,MAAM,OAAO;AAAA,QAC1C,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,EACJ;AACF;AAEA,SAAS,8BACP,KACA,QACA,QACA,MACA,QACoB;AACpB,QAAM,YAAY,2BAA2B,KAAK,MAAM;AACxD,MAAI,CAAC,yBAAyB,IAAI,MAAM,GAAG;AACzC,UAAM,IAAI;AAAA,MACR;AAAA,QACE,+BAA+B,GAAG,uBAAuB,MAAM;AAAA,QAC/D;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,2BAAyB,QAAQ,QAAQ,SAAS;AAClD,oBAAkB,QAAQ,UAAU,OAAO,MAAM,SAAS;AAC1D,2BAAyB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAEnE,UAAQ,QAAQ;AAAA,IACd,KAAK;AAAA,IACL,KAAK;AACH,6BAAuB,QAAQ,MAAM,GAAG,SAAS;AACjD,aAAO;AAAA,QACL,MAAM,EAAE,QAAQ,MAAM,OAAO,MAAM,OAAO;AAAA,QAC1C,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF,KAAK;AACH,6BAAuB,QAAQ,MAAM,GAAG,SAAS;AACjD,aAAO;AAAA,QACL,MAAM;AAAA,UACJ;AAAA,UACA,WAAW,OAAO;AAAA,UAClB,YAAY,KAAK,CAAC;AAAA,UAClB,MAAM,OAAO;AAAA,UACb,gBAAgB,OAAO,YAAY;AAAA,UACnC;AAAA,QACF;AAAA,QACA,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF,KAAK;AACH,6BAAuB,QAAQ,MAAM,GAAG,SAAS;AACjD,aAAO;AAAA,QACL,MAAM;AAAA,UACJ;AAAA,UACA,WAAW,OAAO;AAAA,UAClB,YAAY,KAAK,CAAC;AAAA,UAClB,MAAM,OAAO;AAAA,UACb,gBAAgB,OAAO,YAAY;AAAA,UACnC,KAAK,KAAK,CAAC;AAAA,UACX;AAAA,QACF;AAAA,QACA,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF,KAAK;AACH,6BAAuB,QAAQ,MAAM,GAAG,SAAS;AACjD,aAAO;AAAA,QACL,MAAM,EAAE,QAAQ,MAAM,OAAO,MAAM,KAAK,KAAK,CAAC,GAAG,OAAO;AAAA,QACxD,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,EACJ;AACF;AAEA,SAAS,yBACP,QACA,QACA,WACA,UAA+C,CAAC,GAC1C;AACN,oBAAkB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC5D,oBAAkB,QAAQ,WAAW,OAAO,OAAO,SAAS;AAC5D,oBAAkB,QAAQ,YAAY,OAAO,QAAQ,SAAS;AAC9D,oBAAkB,QAAQ,aAAa,OAAO,SAAS,SAAS;AAChE,oBAAkB,QAAQ,cAAc,OAAO,UAAU,SAAS;AAClE,oBAAkB,QAAQ,SAAS,OAAO,KAAK,SAAS;AACxD,oBAAkB,QAAQ,YAAY,OAAO,QAAQ,SAAS;AAC9D;AAAA,IACE;AAAA,IACA;AAAA,IACA,OAAO,eAAe;AAAA,IACtB;AAAA,EACF;AACA,2BAAyB,QAAQ,SAAS,OAAO,KAAK,SAAS;AAC/D,2BAAyB,QAAQ,eAAe,OAAO,WAAW,SAAS;AAC3E,2BAAyB,QAAQ,aAAa,OAAO,SAAS,SAAS;AACvE,MAAI,QAAQ,iBAAiB,MAAM;AACjC,6BAAyB,QAAQ,aAAa,OAAO,SAAS,SAAS;AAAA,EACzE;AACF;AAEA,SAAS,uBACP,QACA,aACA,UACA,WACM;AACN,MAAI,YAAY,SAAS,UAAU;AACjC,UAAM,IAAI;AAAA,MACR;AAAA,QACE,SAAS,MAAM;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,gBAAgB,QAA4C;AACnE,SACE,WAAW,SACX,WAAW,kBACX,WAAW,WACX,WAAW,iBACX,WAAW,YACX,WAAW,YACX,WAAW,SACX,WAAW,eACX,WAAW,UACX,WAAW,SACX,WAAW,YACX,WAAW,YACX,WAAW,UACX,WAAW,SACX,WAAW;AAEf;AAEA,SAAS,qBACP,KACA,OACA,SACA,QACM;AACN,MAAI,CAAC,QAAQ,IAAI,MAAM,GAAG;AACxB,UAAM,IAAI;AAAA,MACR;AAAA,QACE,OAAO,KAAK,IAAI,GAAG,uBAAuB,MAAM;AAAA,QAChD,2BAA2B,GAAG;AAAA,MAChC;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,+BACP,KACA,QACA,QACM;AACN,QAAM,YAAY,2BAA2B,GAAG;AAChD,MAAI,OAAO,SAAS,YAAY;AAC9B,QAAI,CAAC,yBAAyB,IAAI,MAAM,GAAG;AACzC,YAAM,IAAI;AAAA,QACR;AAAA,UACE,+BAA+B,GAAG,uBAAuB,MAAM;AAAA,UAC/D;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA;AAAA,EACF;AAEA,MAAI,OAAO,SAAS,WAAW;AAC7B,QAAI,CAAC,wBAAwB,IAAI,MAAM,GAAG;AACxC,YAAM,IAAI;AAAA,QACR;AAAA,UACE,uBAAuB,GAAG,uBAAuB,MAAM;AAAA,UACvD;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA;AAAA,EACF;AACA,MAAI,OAAO,SAAS,YAAY;AAC9B;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA;AAAA,EACF;AAEA,MAAI,OAAO,SAAS,QAAQ;AAC1B;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA;AAAA,EACF;AAEA,MAAI,OAAO,SAAS,sBAAsB;AACxC;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA;AAAA,EACF;AAEA,MAAI,OAAO,SAAS,gBAAgB;AAClC;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA;AAAA,EACF;AAEA,MAAI,OAAO,SAAS,gBAAgB;AAClC;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA;AAAA,EACF;AAEA,MAAI,CAAC,sBAAsB,IAAI,MAAM,GAAG;AACtC,UAAM,IAAI;AAAA,MACR;AAAA,QACE,qBAAqB,GAAG,uBAAuB,MAAM;AAAA,QACrD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,MAAI,WAAW,YAAY,CAAC,OAAO,WAAW;AAC5C,UAAM,IAAI;AAAA,MACR,cAAc,qCAAqC,SAAS;AAAA,IAC9D;AAAA,EACF;AACA,MAAI,WAAW,YAAY,OAAO,WAAW;AAC3C,UAAM,IAAI;AAAA,MACR;AAAA,QACE;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;Ab/wCO,SAAS,kBACd,OAAO,QAAQ,KAAK,MAAM,CAAC,GACP;AACpB,QAAM,EAAE,aAAa,OAAO,IAAI,UAAU;AAAA,IACxC,kBAAkB;AAAA,IAClB,MAAM,8BAA8B,IAAI;AAAA,IACxC,SAAS;AAAA,MACP,QAAQ;AAAA,QACN,UAAU;AAAA,QACV,MAAM;AAAA,MACR;AAAA,MACA,OAAO;AAAA,QACL,MAAM;AAAA,MACR;AAAA,MACA,QAAQ;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA,WAAW;AAAA,QACT,MAAM;AAAA,MACR;AAAA,MACA,QAAQ;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA,OAAO;AAAA,QACL,MAAM;AAAA,MACR;AAAA,MACA,iBAAiB;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,qBAAqB;AAAA,QACnB,MAAM;AAAA,MACR;AAAA,MACA,oBAAoB;AAAA,QAClB,MAAM;AAAA,MACR;AAAA,MACA,kBAAkB;AAAA,QAChB,MAAM;AAAA,MACR;AAAA,MACA,sBAAsB;AAAA,QACpB,MAAM;AAAA,MACR;AAAA,MACA,mBAAmB;AAAA,QACjB,MAAM;AAAA,MACR;AAAA,MACA,eAAe;AAAA,QACb,MAAM;AAAA,MACR;AAAA,MACA,aAAa;AAAA,QACX,MAAM;AAAA,MACR;AAAA,MACA,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,MACA,cAAc;AAAA,QACZ,MAAM;AAAA,MACR;AAAA,MACA,OAAO;AAAA,QACL,MAAM;AAAA,MACR;AAAA,MACA,WAAW;AAAA,QACT,MAAM;AAAA,MACR;AAAA,MACA,QAAQ;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA,eAAe;AAAA,QACb,MAAM;AAAA,MACR;AAAA,MACA,KAAK;AAAA,QACH,MAAM;AAAA,MACR;AAAA,MACA,OAAO;AAAA,QACL,MAAM;AAAA,MACR;AAAA,MACA,OAAO;AAAA,QACL,MAAM;AAAA,MACR;AAAA,MACA,YAAY;AAAA,QACV,MAAM;AAAA,MACR;AAAA,MACA,MAAM;AAAA,QACJ,MAAM;AAAA,MACR;AAAA,MACA,OAAO;AAAA,QACL,MAAM;AAAA,MACR;AAAA,MACA,OAAO;AAAA,QACL,MAAM;AAAA,MACR;AAAA,MACA,QAAQ;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA,SAAS;AAAA,QACP,MAAM;AAAA,MACR;AAAA,MACA,gBAAgB;AAAA,QACd,MAAM;AAAA,MACR;AAAA,MACA,OAAO;AAAA,QACL,MAAM;AAAA,MACR;AAAA,MACA,UAAU;AAAA,QACR,MAAM;AAAA,MACR;AAAA,MACA,MAAM;AAAA,QACJ,MAAM;AAAA,MACR;AAAA,MACA,cAAc;AAAA,QACZ,MAAM;AAAA,MACR;AAAA,MACA,OAAO;AAAA,QACL,MAAM;AAAA,MACR;AAAA,MACA,KAAK;AAAA,QACH,MAAM;AAAA,MACR;AAAA,MACA,QAAQ;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA,MAAM;AAAA,QACJ,MAAM;AAAA,MACR;AAAA,MACA,iBAAiB;AAAA,QACf,MAAM;AAAA,MACR;AAAA,MACA,QAAQ;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA,OAAO;AAAA,QACL,MAAM;AAAA,MACR;AAAA,MACA,SAAS;AAAA,QACP,MAAM;AAAA,MACR;AAAA,MACA,SAAS;AAAA,QACP,MAAM;AAAA,MACR;AAAA,MACA,kBAAkB;AAAA,QAChB,MAAM;AAAA,MACR;AAAA,MACA,OAAO;AAAA,QACL,MAAM;AAAA,MACR;AAAA,MACA,MAAM;AAAA,QACJ,MAAM;AAAA,MACR;AAAA,MACA,SAAS;AAAA,QACP,MAAM;AAAA,MACR;AAAA,MACA,SAAS;AAAA,QACP,MAAM;AAAA,MACR;AAAA,MACA,SAAS;AAAA,QACP,MAAM;AAAA,MACR;AAAA,MACA,QAAQ;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA,UAAU;AAAA,QACR,MAAM;AAAA,MACR;AAAA,MACA,QAAQ;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA,gBAAgB;AAAA,QACd,MAAM;AAAA,MACR;AAAA,MACA,WAAW;AAAA,QACT,MAAM;AAAA,MACR;AAAA,MACA,WAAW;AAAA,QACT,MAAM;AAAA,MACR;AAAA,MACA,QAAQ;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA,MAAM;AAAA,QACJ,MAAM;AAAA,MACR;AAAA,MACA,MAAM;AAAA,QACJ,MAAM;AAAA,MACR;AAAA,MACA,MAAM;AAAA,QACJ,MAAM;AAAA,MACR;AAAA,MACA,OAAO;AAAA,QACL,MAAM;AAAA,MACR;AAAA,MACA,IAAI;AAAA,QACF,MAAM;AAAA,MACR;AAAA,MACA,SAAS;AAAA,QACP,OAAO;AAAA,QACP,MAAM;AAAA,MACR;AAAA,MACA,SAAS;AAAA,QACP,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,QAAQ;AAAA,EACV,CAAC;AAED,uBAAqB,aAAa,MAAM;AACxC,6BAA2B,aAAa,MAAM;AAC9C,sCAAoC,aAAa,MAAM;AACvD,+BAA6B,OAAO,OAAO;AAE3C,MAAI,OAAO,YAAY,MAAM;AAC3B,WAAO;AAAA,MACL,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AAEA,MAAI,OAAO,SAAS,QAAQ,YAAY,WAAW,GAAG;AACpD,WAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU,mBAAmB;AAAA,MAC7B,MAAM;AAAA,IACR;AAAA,EACF;AAEA,MACE,OAAO,aAAa,MAAM,QAC1B,EAAE,kBAAkB,YAAY,CAAC,CAAC,KAAK,YAAY,CAAC,MAAM,QAC1D;AACA,UAAM,IAAI;AAAA,MACR;AAAA,QACE;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,MACE,OAAO,YAAY,SAClB,YAAY,CAAC,MAAM,UACjB,CAAC,eAAe,YAAY,CAAC,CAAC,KAAK,YAAY,CAAC,MAAM,SACzD;AACA,UAAM,IAAI,MAAM,iDAAiD;AAAA,EACnE;AAEA,MAAI,YAAY,CAAC,MAAM,QAAQ;AAC7B,WAAO,mBAAmB,YAAY,MAAM,CAAC,GAAG,MAAM;AAAA,EACxD;AAEA,MAAI,YAAY,CAAC,MAAM,MAAM;AAC3B,WAAO,iBAAiB,YAAY,MAAM,CAAC,GAAG,MAAM;AAAA,EACtD;AAEA,MAAI,YAAY,CAAC,MAAM,UAAU;AAC/B,WAAO,qBAAqB,YAAY,MAAM,CAAC,GAAG,MAAM;AAAA,EAC1D;AAEA,MAAI,YAAY,CAAC,MAAM,eAAe;AACpC,WAAO,0BAA0B,YAAY,MAAM,CAAC,GAAG,MAAM;AAAA,EAC/D;AAEA,MAAI,YAAY,CAAC,MAAM,aAAa;AAClC,WAAO,wBAAwB,YAAY,MAAM,CAAC,GAAG,MAAM;AAAA,EAC7D;AAEA,MAAI,YAAY,CAAC,MAAM,QAAQ;AAC7B,WAAO,sBAAsB,QAAQ,YAAY,MAAM,CAAC,GAAG,MAAM;AAAA,EACnE;AAEA,MACE,4BAA4B,YAAY,CAAC,CAAC,KAC1C,OAAO,SAAS,QAChB,YAAY,UAAU,GACtB;AACA,WAAO;AAAA,MACL,YAAY,CAAC;AAAA,MACb,YAAY,MAAM,CAAC;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AAEA,MAAI,kBAAkB,YAAY,CAAC,CAAC,GAAG;AACrC;AAAA,MACE,YAAY,CAAC,KAAK;AAAA,MAClB;AAAA,MACA,OAAO;AAAA,MACP;AAAA,IACF;AACA,WAAO,0BAA0B,aAAa,MAAM;AAAA,EACtD;AAEA,MAAI,0BAA0B,YAAY,CAAC,CAAC,GAAG;AAC7C;AAAA,MACE,YAAY,CAAC,KAAK;AAAA,MAClB;AAAA,MACA,OAAO;AAAA,MACP;AAAA,IACF;AACA,WAAO,kCAAkC,aAAa,MAAM;AAAA,EAC9D;AAEA,MAAI,sBAAsB,YAAY,CAAC,CAAC,GAAG;AACzC,WAAO,8BAA8B,aAAa,MAAM;AAAA,EAC1D;AAEA,MAAI,eAAe,YAAY,CAAC,CAAC,GAAG;AAClC,WAAO,8BAA8B,aAAa,MAAM;AAAA,EAC1D;AAEA,MACE,iCAAiC,YAAY,CAAC,CAAC,KAC/C,OAAO,SAAS,QAChB,YAAY,WAAW,GACvB;AACA,WAAO,sBAAsB,YAAY,CAAC,GAAG,YAAY,MAAM,CAAC,GAAG,MAAM;AAAA,EAC3E;AAEA,MAAI,YAAY,WAAW,GAAG;AAC5B,UAAM,IAAI,MAAM,cAAc,oBAAoB,gBAAgB,OAAO,CAAC;AAAA,EAC5E;AACA,QAAM,IAAI,MAAM,4BAA4B,YAAY,CAAC,CAAE,CAAC;AAC9D;AAEA,SAAS,6BAA6B,OAAiC;AACrE,MAAI,UAAU,QAAW;AACvB;AAAA,EACF;AAEA,QAAM,IAAI;AAAA,IACR;AAAA,MACE;AAAA,MACA,gBAAgB;AAAA,IAClB;AAAA,EACF;AACF;AAEA,SAAS,oCACP,aACA,QACM;AACN,MAAI,OAAO,gBAAgB,MAAM,MAAM;AACrC;AAAA,EACF;AAEA,QAAM,UAAU,YAAY,CAAC;AAC7B,MACE,YAAY,WACX,eAAe,OAAO,KAAK,sBAAsB,OAAO,IACzD;AACA;AAAA,EACF;AAEA,QAAM,IAAI;AAAA,IACR;AAAA,MACE;AAAA,MACA,gBAAgB;AAAA,IAClB;AAAA,EACF;AACF;;;AcrXA,eAAsBC,mBACpB,MACe;AACf,QAAM,UAAU,MAAM;AAEtB,SAAO,QAAQ,kBAAkB,IAAI;AACvC;AAEA,eAAsBC,0BACpB,MACe;AACf,QAAM,UAAU,MAAM;AAEtB,SAAO,QAAQ,yBAAyB,IAAI;AAC9C;AAEA,eAAsBC,wBACpB,MACe;AACf,QAAM,UAAU,MAAM;AAEtB,SAAO,QAAQ,uBAAuB,IAAI;AAC5C;AAEA,eAAsBC,wBACpB,MACe;AACf,QAAM,UAAU,MAAM;AAEtB,SAAO,QAAQ,uBAAuB,IAAI;AAC5C;AAEA,eAAsBC,uBACpB,MACe;AACf,QAAM,UAAU,MAAM;AAEtB,SAAO,QAAQ,sBAAsB,IAAI;AAC3C;AAEA,eAAsBC,mBAAkB,MAAmC;AACzE,QAAM,UAAU,MAAM;AAEtB,SAAO,QAAQ,kBAAkB,IAAI;AACvC;AAEA,eAAsBC,cAAa,MAAqC;AACtE,QAAM,UAAU,MAAM;AAEtB,SAAO,QAAQ,aAAa,IAAI;AAClC;AAEA,eAAsBC,kBACpB,MACe;AACf,QAAM,UAAU,MAAM;AAEtB,SAAO,QAAQ,iBAAiB,IAAI;AACtC;AAEA,eAAsBC,uBACpB,MACe;AACf,QAAM,UAAU,MAAM;AAEtB,SAAO,QAAQ,sBAAsB,IAAI;AAC3C;AAEA,eAAsBC,uBACpB,MACe;AACf,QAAM,UAAU,MAAM;AAEtB,SAAO,QAAQ,sBAAsB,IAAI;AAC3C;AAEA,eAAsBC,mBACpB,MACe;AACf,QAAM,UAAU,MAAM;AAEtB,SAAO,QAAQ,kBAAkB,IAAI;AACvC;AAEA,eAAsBC,0BACpB,MACe;AACf,QAAM,UAAU,MAAM;AAEtB,SAAO,QAAQ,yBAAyB,IAAI;AAC9C;AAEA,eAAsBC,iBAAgB,MAAwC;AAC5E,QAAM,UAAU,MAAM;AAEtB,SAAO,QAAQ,gBAAgB,IAAI;AACrC;;;AC/FA;AAKA;AACA;AACA;AAAA,EACE;AAAA,EACA,eAAAC;AAAA,EACA;AAAA,OACK;AAaP,eAAsB,qBACpB,OACqC;AACrC,MAAI;AACF,QAAI,uBAAuB,MAAM,MAAM,MAAM,UAAU,GAAG;AACxD,YAAM,OAAO,MAAM,GAAG,mBAAmB,CAAC;AAAA,CAAI;AAC9C,aAAO,EAAE,UAAU,EAAE;AAAA,IACvB;AAEA,UAAM,SAAS,kBAAkB,CAAC,GAAG,MAAM,IAAI,CAAC;AAEhD,QAAI,OAAO,MAAM;AACf,YAAM,OAAO,MAAM,GAAG,OAAO,QAAQ;AAAA,CAAI;AACzC,aAAO,EAAE,UAAU,EAAE;AAAA,IACvB;AAEA,YAAQ,OAAO,MAAM;AAAA,MACnB,KAAK;AACH,cAAM,OAAO,MAAM,GAAG,eAAe,CAAC;AAAA,CAAI;AAC1C,eAAO,EAAE,UAAU,EAAE;AAAA,IACzB;AAEA,QACE,OAAO,SAAS,yBAChB,CAAC,sBAAsB,OAAO,KAAK,MAAM,GACzC;AACA,YAAM,iCAAiC;AAAA,IACzC;AAEA,YAAQ,OAAO,MAAM;AAAA,MACnB,KAAK;AACH,cAAMC,mBAAkB,OAAO,IAAI;AACnC,eAAO,EAAE,UAAU,EAAE;AAAA,MACvB,KAAK;AACH,cAAMC,uBAAsB,OAAO,IAAI;AACvC,eAAO,EAAE,UAAU,EAAE;AAAA,MACvB,KAAK;AACH,cAAMC,wBAAuB,OAAO,IAAI;AACxC,eAAO,EAAE,UAAU,EAAE;AAAA,MACvB,KAAK;AACH,cAAMC,0BAAyB,OAAO,IAAI;AAC1C,eAAO,EAAE,UAAU,EAAE;AAAA,MACvB,KAAK;AACH,cAAMC,mBAAkB,OAAO,IAAI;AACnC,eAAO,EAAE,UAAU,EAAE;AAAA,MACvB,KAAK;AACH,cAAMC,0BAAyB,OAAO,IAAI;AAC1C,eAAO,EAAE,UAAU,EAAE;AAAA,MACvB,KAAK;AACH,cAAMC,mBAAkB,OAAO,IAAI;AACnC,eAAO,EAAE,UAAU,EAAE;AAAA,MACvB,KAAK;AACH,cAAMC,wBAAuB,OAAO,IAAI;AACxC,eAAO,EAAE,UAAU,EAAE;AAAA,MACvB,KAAK;AACH,cAAMC,iBAAgB,OAAO,IAAI;AACjC,eAAO,EAAE,UAAU,EAAE;AAAA,MACvB,KAAK;AACH,cAAMC,cAAa,OAAO,IAAI;AAC9B,eAAO,EAAE,UAAU,EAAE;AAAA,MACvB,KAAK;AACH,cAAMC,kBAAiB,OAAO,IAAI;AAClC,eAAO,EAAE,UAAU,EAAE;AAAA,MACvB,KAAK;AACH,cAAMC,uBAAsB,OAAO,IAAI;AACvC,eAAO,EAAE,UAAU,EAAE;AAAA,MACvB,KAAK;AACH,cAAMC,uBAAsB,OAAO,IAAI;AACvC,eAAO,EAAE,UAAU,EAAE;AAAA,IACzB;AAAA,EACF,SAAS,OAAO;AACd,QAAI,qBAAqB,MAAM,IAAI,GAAG;AACpC,YAAM,OAAO;AAAA,QACX,cAAc,qBAAqB,OAAO,MAAM,IAAI,CAAC;AAAA,MACvD;AACA,aAAO,EAAE,UAAU,EAAE;AAAA,IACvB;AACA,QAAI,sBAAsB,MAAM,IAAI,GAAG;AACrC,YAAM,OAAO;AAAA,QACX,kBAAkB,qBAAqB,OAAO,MAAM,IAAI,CAAC;AAAA,MAC3D;AACA,aAAO,EAAE,UAAU,EAAE;AAAA,IACvB;AACA,UAAM,OAAO,MAAM,GAAG,eAAe,OAAO,MAAM,IAAI,CAAC;AAAA,CAAI;AAC3D,WAAO,EAAE,UAAU,EAAE;AAAA,EACvB;AACF;AAEA,SAAS,uBACP,MACA,YACS;AACT,SAAO,KAAK,WAAW,KAAK,eAAe;AAC7C;AAEA,SAAS,eAAe,OAAgB,MAAiC;AACvE,MAAI,iBAAiB,yBAAyB;AAC5C,WAAO;AAAA,EACT;AAEA,QAAM,UAAUb,aAAY,KAAK;AACjC,QAAM,qBAAqB,aAAa,OAAO,QAAQ,IACnD,gCAAgC,KAAK,CAAC,KAAK,EAAE,IAC7C;AACJ,MAAI,uBAAuB,QAAW;AACpC,WAAO;AAAA,EACT;AAEA,SAAO,GAAG,OAAO;AAAA,gBAAmB,mBAAmB,QAAQ;AAAA,IAAuD,mBAAmB,gBAAgB;AAAA;AAAA,IAA+B,mBAAmB,mBAAmB;AAAA;AAChO;AAEA,SAAS,qBACP,OACA,MAMA;AACA,SAAO;AAAA,IACL,OAAO;AAAA,MACL,SAAS,eAAe,OAAO,IAAI;AAAA,MACnC,MACE,iBAAiB,0BACb,yBACA;AAAA,IACR;AAAA,EACF;AACF;AAEA,SAAS,aAAa,OAAgB,MAAuB;AAC3D,QAAM,UAAU,oBAAI,IAAa;AACjC,MAAI,UAAmB;AAEvB,SAAO,YAAY,UAAa,CAAC,QAAQ,IAAI,OAAO,GAAG;AACrD,YAAQ,IAAI,OAAO;AACnB,QACE,mBAAmB,SACnB,UAAU,WACT,QAAgD,SAAS,MAC1D;AACA,aAAO;AAAA,IACT;AACA,cAAU,mBAAmB,QAAQ,QAAQ,QAAQ;AAAA,EACvD;AAEA,SAAO;AACT;AAEA,SAAS,qBAAqB,MAAkC;AAC9D,SAAO,KAAK,KAAK,CAAC,SAAS,SAAS,YAAY,KAAK,WAAW,SAAS,CAAC;AAC5E;AAEA,SAAS,sBAAsB,MAAkC;AAC/D,SAAO,KAAK,SAAS,SAAS;AAChC;;;A7BjMA;AAKA;AA4CA,eAAsB,gBACpB,QAA8B,CAAC,GACC;AAChC,SAAO,MAAM,+BAA+B,OAAO,YAAY;AACjE;AAEA,eAAsB,+BACpB,QAA8B,CAAC,GAC/B,WACgC;AAChC,iBAAe,MAAM,MAAM;AAE3B,QAAM,QAAQ,kBAAkB,MAAM,SAAS,QAAQ,KAAK;AAC5D,QAAM,SAAS,MAAM,UAAU,QAAQ;AACvC,QAAM,SAAS,MAAM,UAAU,QAAQ;AACvC,QAAM,OAAO,MAAM,QAAQ,QAAQ,KAAK,MAAM,CAAC;AAC/C,MAAI;AAEJ,MAAI;AACF,mBAAe,0BAA0B;AAAA,MACvC;AAAA,MACA,KAAK,MAAM,OAAO,QAAQ,IAAI;AAAA,MAC9B,gBAAgB,MAAM;AAAA,MACtB,KAAK,MAAM;AAAA,MACX;AAAA,MACA,UAAU,MAAM;AAAA,IAClB,CAAC;AAAA,EACH,SAAS,OAAO;AACd,WAAO,MAAM,GAAG,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA,CAAI;AAC1E,WAAO,EAAE,UAAU,EAAE;AAAA,EACvB;AAEA,QAAM,UAAsC;AAAA,IAC1C;AAAA,IACA,KAAK,MAAM,OAAO,QAAQ,IAAI;AAAA,IAC9B,gBAAgB,aAAa;AAAA,IAC7B,KAAK,aAAa;AAAA,IAClB,WAAW,aAAa;AAAA,IACxB,UAAU;AAAA,IACV,gBAAgB;AAAA,IAChB,QAAQ,MAAM;AAAA,IACd,UAAU,aAAa;AAAA,IACvB;AAAA,IACA,aAAa,MAAM;AAAA,IACnB;AAAA,IACA,YAAY,MAAM;AAAA,IAClB;AAAA,IACA,aAAa,MAAM;AAAA,EACrB;AAEA,SAAO,MAAM;AAAA,IAAyB,aAAa;AAAA,IAAU,YAC3D,+BAA+B,SAAS,YAAY;AAClD,YAAM,SAAS,MAAM,qBAAqB;AAAA,QACxC;AAAA,QACA;AAAA,QACA,YAAY,QAAQ,cAAc,MAAM;AAAA,QACxC;AAAA,MACF,CAAC;AACD,qBAAe,MAAM,MAAM;AAC3B,YAAM,WAAW,kBAAkB,eAAe,GAAG,OAAO,QAAQ;AAEpE,aAAO,EAAE,SAAS;AAAA,IACpB,CAAC;AAAA,EACH;AACF;AAEA,eAAsB,wBACpB,QAA8B,CAAC,GACS;AACxC,QAAM,SAAS,IAAI,gBAAgB,MAAM,WAAW;AACpD,QAAM,SAAS,IAAI,gBAAgB,MAAM,WAAW;AACpD,QAAM,SAAS,MAAM,gBAAgB;AAAA,IACnC,GAAG;AAAA,IACH;AAAA,IACA;AAAA,EACF,CAAC;AAED,SAAO;AAAA,IACL,UAAU,OAAO;AAAA,IACjB,QAAQ,OAAO;AAAA,IACf,QAAQ,OAAO;AAAA,EACjB;AACF;AAEO,SAAS,mBACd,WAAiC,CAAC,GACpB;AACd,SAAO;AAAA,IACL,IAAI,MAAM,YAAY,CAAC,GAAG;AACxB,aAAO,gBAAgB,eAAe,UAAU,MAAM,SAAS,CAAC;AAAA,IAClE;AAAA,IACA,YAAY,MAAM,YAAY,CAAC,GAAG;AAChC,aAAO,wBAAwB,eAAe,UAAU,MAAM,SAAS,CAAC;AAAA,IAC1E;AAAA,EACF;AACF;AAEA,SAAS,eACP,UACA,MACA,WACsB;AACtB,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,IACH,MAAM,QAAQ,UAAU,QAAQ,SAAS;AAAA,EAC3C;AACF;AAEA,SAAS,kBACP,OACyD;AACzD,MAAI,OAAO,UAAU,YAAY,iBAAiB,YAAY;AAC5D,WAAOc,UAAS,KAAK,CAAC,KAAK,CAAC;AAAA,EAG9B;AAEA,SAAO;AACT;AAEA,SAAS,kBACP,iBACA,kBACQ;AACR,MAAI,oBAAoB,UAAa,oBAAoB,GAAG;AAC1D,WAAO;AAAA,EACT;AAEA,QAAM,kBAAkB,OAAO,eAAe;AAE9C,SAAO,OAAO,SAAS,eAAe,IAAI,kBAAkB;AAC9D;AAEA,SAAS,eAAe,QAAuC;AAC7D,MAAI,QAAQ,YAAY,MAAM;AAC5B;AAAA,EACF;AAEA,QAAM,OAAO,kBAAkB,QAC3B,OAAO,SACP,IAAI,MAAM,qCAAqC;AACrD;AAEA,IAAM,kBAAN,cAA8BC,UAAS;AAAA,EAC5B,UAAoB,CAAC;AAAA,EAEvB,YAAY,OAA4B;AAC7C,UAAM;AACN,WAAO,eAAe,MAAM,SAAS;AAAA,MACnC,cAAc;AAAA,MACd,OAAO,SAAS;AAAA,IAClB,CAAC;AAAA,EACH;AAAA,EAEA,IAAW,OAAe;AACxB,WAAO,KAAK,QAAQ,KAAK,EAAE;AAAA,EAC7B;AAAA,EAEgB,OACd,OACA,UACA,UACM;AACN,QAAI,OAAO,UAAU,UAAU;AAC7B,WAAK,QAAQ,KAAK,KAAK;AACvB,eAAS;AACT;AAAA,IACF;AAEA,UAAM,qBAAqB;AAC3B,SAAK,QAAQ;AAAA,MACX,MAAM,SAAS,uBAAuB,WAAW,SAAS,QAAQ;AAAA,IACpE;AACA,aAAS;AAAA,EACX;AACF;;;A8BhOA;","names":["process","resolve","AsyncLocalStorage","rm","join","resolve","CLI_PRIMARY_COMMAND","homedir","isAbsolute","resolve","readFileSync","dirname","join","resolve","join","homedir","formatError","createOpenAI","createOpenAICompatible","createOpenAICompatibleName","resolve","rm","resolve","mkdtemp","rename","rm","stat","basename","dirname","join","tmpdir","CLI_PRIMARY_COMMAND","CLI_PRIMARY_COMMAND","init_uri","init_uri","init_uri","init_uri","init_evidence","init_page","init_evidence","init_page","formatLocatedWikiGraphUri","parseWikiGraphLibraryUri","init_uri","init_uri","DEFAULT_GET_EVIDENCE_LIMIT","init_types","parseLocatedWikiGraphUri","DEFAULT_GET_EVIDENCE_LIMIT","init_types","init_uri","parseWikiGraphLibraryUri","init_types","init_uri","formatLocatedWikiGraphUri","init_uri","init_types","init_uri","listChapters","parseLocatedWikiGraphUri","listArchiveCollection","listArchiveEvidence","listRelatedArchiveObjects","findWikiGraphLibraryObjects","formatWikiGraphLibraryUri","isArchiveSearchIndexCurrent","listRelatedWikiGraphLibraryObjects","listWikiGraphLibraryEvidence","listWikiGraphLibraryObjects","parseWikiGraphLibraryUri","findArchiveObjects","listArchiveSourceLocators","WikiGraphArchiveFile","context","spawn","existsSync","join","resolve","formatLocatedChapterUri","listChapters","WikiGraphArchiveFile","listChapters","WikiGraphArchiveFile","readFile","addBuildJob","formatLocatedChapterUri","listChapters","resolveChapterPathReadonly","WikiGraphArchiveFile","rename","init_uri","isArchiveSearchIndexCurrent","listArchiveQueryableChapterIds","rebuildArchiveSearchIndex","WikiGraphArchiveFile","init_uri","WikiGraph","init_uri","resolve","homedir","join","resolve","maintenance_exports","parseWikiGraphLibraryUri","resolve","init_maintenance","Writable","init_local_config","mkdir","readFile","listWikiGraphLibraryObjects","formatWikiGraphLibraryUri","readWikiGraphLibraryIndexState","rebuildWikiGraphLibraryIndex","resolveWikiGraphLibrary","INDEX_PROGRESS_OUTPUT_INTERVAL_MS","formatIndexCounter","result","parseJSONInput","readFile","WikiGraphArchiveFile","writeMetadataMap","readMetadataInput","parseMetadataMap","normalizeMetadataKey","readRawInput","parseJSONInput","formatMetadataTextValue","init_uri","getBuildJob","WikiGraphArchiveFile","outputFile","artifact","formatLocatedChapterUri","formatLocatedWikiGraphUri","getBuildJob","resolveChapterPathReadonly","WikiGraphArchiveFile","Readable","Writable","CLI_PRIMARY_COMMAND","CLI_PRIMARY_COMMAND","parseChapterPath","parseChapterPath","WIKI_GRAPH_URI_PREFIX","value","parseWikiGraphLibraryUri","parseWikiGraphLibraryUri","parseWikiGraphLibraryUri","parseWikiGraphLibraryUri","runArchiveCommand","runArchiveChapterCommand","runArchiveIndexCommand","runArchiveCoverCommand","runArchiveMetaCommand","runConvertCommand","runGcCommand","runLegacyCommand","runMaintenanceCommand","runLocalConfigCommand","runLibraryCommand","runObjectMetadataCommand","runQueueCommand","formatError","runConvertCommand","runArchiveMetaCommand","runArchiveCoverCommand","runObjectMetadataCommand","runLibraryCommand","runArchiveChapterCommand","runArchiveCommand","runArchiveIndexCommand","runQueueCommand","runGcCommand","runLegacyCommand","runMaintenanceCommand","runLocalConfigCommand","Readable","Writable"]}
|
|
1
|
+
{"version":3,"sources":["../src/support/command.ts","../src/runtime/context.ts","../src/support/errors.ts","../src/support/formats.ts","../src/support/io.ts","../src/support/json.ts","../src/support/shell.ts","../src/support/tree.ts","../src/support/uri.ts","../src/support/version.ts","../src/support/index.ts","../src/runtime/local-config.ts","../src/runtime/config.ts","../src/runtime/llm.ts","../src/runtime/planning.ts","../src/runtime/progress.ts","../src/runtime/progress-output.ts","../src/runtime/stage.ts","../src/runtime/wikispine.ts","../src/runtime/index.ts","../src/commands/convert.ts","../src/commands/archive-command/create.ts","../src/commands/archive-command/inspect.ts","../src/commands/archive-output/object/cursor.ts","../src/commands/archive-output/text/lines.ts","../src/commands/archive-output/text/source.ts","../src/commands/archive-output/text/evidence.ts","../src/commands/archive-output/text/lens.ts","../src/commands/archive-output/object/uri.ts","../src/commands/archive-output/object/types.ts","../src/commands/archive-output/text/plain.ts","../src/commands/archive-output/text/object.ts","../src/commands/archive-output/object/objects.ts","../src/commands/archive-output/text/page.ts","../src/commands/archive-output/text/index.ts","../src/commands/archive-output/write/jsonl.ts","../src/commands/archive-output/object/page-cursor.ts","../src/commands/archive-output/write/warnings.ts","../src/commands/archive-output/write/evidence.ts","../src/commands/archive-output/write/find.ts","../src/commands/archive-output/write/list.ts","../src/commands/archive-output/write/pack.ts","../src/commands/archive-output/write/page.ts","../src/commands/archive-output/write/source-locators.ts","../src/commands/archive-output/write/index.ts","../src/commands/archive-output/index.ts","../src/commands/archive-command/run/types.ts","../src/commands/archive-command/run/uri.ts","../src/commands/archive-command/run/options.ts","../src/commands/archive-command/run/next.ts","../src/commands/archive-command/run/root.ts","../src/commands/archive-command/run/index.ts","../src/commands/archive-command/index.ts","../src/runtime/entry-context.ts","../src/runtime/internal-child.ts","../src/commands/queue/estimate.ts","../src/runtime/node-platform.ts","../src/commands/queue/output.ts","../src/commands/queue/add.ts","../src/commands/archive-command/chapter.ts","../src/commands/archive-command/search-index.ts","../src/commands/archive-command/maintenance.ts","../src/commands/gc.ts","../src/commands/legacy.ts","../src/runtime/home-target.ts","../src/commands/maintenance.ts","../src/commands/local-config.ts","../src/commands/library.ts","../src/commands/object-metadata.ts","../src/commands/queue/watch.ts","../src/commands/queue/worker.ts","../src/commands/queue/index.ts","../src/app/runner.ts","../src/args/help.ts","../src/args/uri/chapter/target.ts","../src/args/uri/triple-pattern.ts","../src/args/archive.ts","../src/args/helper/actions.ts","../src/args/helper/chapter/actions.ts","../src/args/helper/chapter/ids.ts","../src/args/helper/uri.ts","../src/args/helper/chapter/normalize.ts","../src/args/helper/chapter/stages.ts","../src/args/helper/chapter/rejections.ts","../src/args/helper/flags.ts","../src/args/helper/parse.ts","../src/args/parse.ts","../src/args/queue.ts","../src/args/uri/chapter/routing.ts","../src/args/uri/entry.ts","../src/args/uri/archive-objects.ts","../src/args/uri/metadata.ts","../src/args/root/gc.ts","../src/args/root/help.ts","../src/args/root/legacy.ts","../src/args/root/local-config.ts","../src/args/root/maintenance-command.ts","../src/args/root/maintenance.ts","../src/args/root/transform.ts","../src/args/uri/library.ts","../src/commands/index.ts","../src/app/dispatch.ts","../src/app/main.ts"],"sourcesContent":["export const CLI_PRIMARY_COMMAND = \"wg\";\nexport const CLI_FULL_COMMAND = \"wikigraph\";\n","import { AsyncLocalStorage } from \"async_hooks\";\nimport { withWikiGraphSDKRuntimeContext } from \"wiki-graph-sdk\";\nimport { createWikiGraphSDK, type WikiGraphSDK } from \"wiki-graph-sdk\";\n\nexport interface WikiGraphCLIRuntimeContext {\n readonly argv: readonly string[];\n readonly cwd: string;\n readonly devProjectRoot?: string | undefined;\n readonly env: NodeJS.ProcessEnv;\n readonly envPolicy: \"development\" | \"production\";\n readonly queueAutostart: boolean;\n readonly sdk?: WikiGraphSDK | undefined;\n readonly signal?: AbortSignal | undefined;\n readonly stateDir?: string | undefined;\n readonly stderr: NodeJS.WritableStream;\n readonly stderrIsTTY?: boolean | undefined;\n readonly stdin: NodeJS.ReadableStream & { isTTY?: boolean | undefined };\n readonly stdinIsTTY?: boolean | undefined;\n readonly stdout: NodeJS.WritableStream;\n readonly stdoutIsTTY?: boolean | undefined;\n exitCode: NodeJS.Process[\"exitCode\"];\n}\n\nconst cliRuntimeContext = new AsyncLocalStorage<WikiGraphCLIRuntimeContext>();\nlet queueAutostartForTesting: boolean | undefined;\n\nexport async function withWikiGraphCLIRuntimeContext<T>(\n context: WikiGraphCLIRuntimeContext,\n operation: () => Promise<T> | T,\n): Promise<T> {\n return await cliRuntimeContext.run(\n context,\n async () =>\n await withWikiGraphSDKRuntimeContext(\n {\n cwd: context.cwd,\n env: context.env,\n envPolicy: context.envPolicy,\n ...(context.stateDir === undefined\n ? {}\n : { stateDir: context.stateDir }),\n },\n operation,\n ),\n );\n}\n\nexport function getCLIArgv(): readonly string[] {\n return cliRuntimeContext.getStore()?.argv ?? process.argv.slice(2);\n}\n\nexport function getWikiGraphSDK(): WikiGraphSDK {\n const context = cliRuntimeContext.getStore();\n return (\n context?.sdk ??\n createWikiGraphSDK({\n ...(context?.cwd === undefined ? {} : { cwd: context.cwd }),\n ...(context?.env === undefined ? {} : { env: context.env }),\n ...(context?.envPolicy === undefined\n ? {}\n : { envPolicy: context.envPolicy }),\n ...(context?.stateDir === undefined\n ? {}\n : { stateDir: context.stateDir }),\n })\n );\n}\n\nexport function getCLICwd(): string {\n return cliRuntimeContext.getStore()?.cwd ?? process.cwd();\n}\n\nexport function getCLIEnv(): NodeJS.ProcessEnv {\n return cliRuntimeContext.getStore()?.env ?? process.env;\n}\n\nexport function getCLIEnvValue(name: string): string | undefined {\n return getCLIEnv()[name];\n}\n\nexport function getCLIDevProjectRoot(): string | undefined {\n return cliRuntimeContext.getStore()?.devProjectRoot;\n}\n\nexport function getCLIStateDir(): string | undefined {\n return cliRuntimeContext.getStore()?.stateDir;\n}\n\nexport function getCLIEnvPolicy(): \"development\" | \"production\" {\n return cliRuntimeContext.getStore()?.envPolicy ?? \"production\";\n}\n\nexport function isCLIQueueAutostartEnabled(): boolean {\n return (\n queueAutostartForTesting ??\n cliRuntimeContext.getStore()?.queueAutostart ??\n true\n );\n}\n\nexport function setCLIQueueAutostartForTesting(\n enabled: boolean | undefined,\n): void {\n queueAutostartForTesting = enabled;\n}\n\nexport function getCLISignal(): AbortSignal | undefined {\n return cliRuntimeContext.getStore()?.signal;\n}\n\nexport function getCLIStdin(): NodeJS.ReadableStream & {\n isTTY?: boolean | undefined;\n} {\n return (\n cliRuntimeContext.getStore()?.stdin ??\n (process.stdin as NodeJS.ReadableStream & { isTTY?: boolean | undefined })\n );\n}\n\nexport function getCLIStdout(): NodeJS.WritableStream {\n return cliRuntimeContext.getStore()?.stdout ?? process.stdout;\n}\n\nexport function getCLIStderr(): NodeJS.WritableStream {\n return cliRuntimeContext.getStore()?.stderr ?? process.stderr;\n}\n\nexport function getCLIStdoutIsTTY(): boolean | undefined {\n const context = cliRuntimeContext.getStore();\n\n return (\n context?.stdoutIsTTY ??\n (getCLIStdout() as NodeJS.WritableStream & { isTTY?: boolean }).isTTY\n );\n}\n\nexport function getCLIExitCode(): NodeJS.Process[\"exitCode\"] {\n return cliRuntimeContext.getStore()?.exitCode ?? process.exitCode;\n}\n\nexport function setCLIExitCode(exitCode: NodeJS.Process[\"exitCode\"]): void {\n const context = cliRuntimeContext.getStore();\n\n if (context === undefined) {\n process.exitCode = exitCode;\n return;\n }\n\n context.exitCode = exitCode;\n}\n","import { CLI_PRIMARY_COMMAND } from \"./command.js\";\n\nexport const CLI_HELP_ROUTES = {\n command: `${CLI_PRIMARY_COMMAND} --help`,\n config: `${CLI_PRIMARY_COMMAND} help config`,\n format: `${CLI_PRIMARY_COMMAND} help format`,\n readiness: `${CLI_PRIMARY_COMMAND} help readiness`,\n root: `${CLI_PRIMARY_COMMAND} --help`,\n runtime: `${CLI_PRIMARY_COMMAND} help runtime`,\n uri: `${CLI_PRIMARY_COMMAND} help uri`,\n} as const;\n\nexport function archiveMaintenanceHelpRoute(subcommand: string): string {\n return `${CLI_PRIMARY_COMMAND} ${subcommand} --help`;\n}\n\nexport function withHelpRoute(message: string, route: string): string {\n return `${message}\\nSee: ${route}`;\n}\n","import { extname } from \"path\";\n\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"./errors.js\";\n\nexport const CLI_FORMATS = [\"wikg\", \"epub\", \"txt\", \"markdown\"] as const;\n\nexport type CLIFormat = (typeof CLI_FORMATS)[number];\n\nexport function inferCLIFormatFromPath(path: string): CLIFormat | undefined {\n switch (extname(path).toLowerCase()) {\n case \".epub\":\n return \"epub\";\n case \".markdown\":\n case \".md\":\n return \"markdown\";\n case \".wikg\":\n return \"wikg\";\n case \".txt\":\n return \"txt\";\n default:\n return undefined;\n }\n}\n\nexport function isTextCLIFormat(\n format: CLIFormat,\n): format is Extract<CLIFormat, \"markdown\" | \"txt\"> {\n return format === \"markdown\" || format === \"txt\";\n}\n\nexport function parseCLIFormat(value: string, flag: string): CLIFormat {\n const normalized = value.trim().toLowerCase();\n\n if (isCLIFormat(normalized)) {\n return normalized;\n }\n\n throw new Error(\n withHelpRoute(\n `Invalid ${flag}: ${value}. Expected one of ${CLI_FORMATS.join(\", \")}.`,\n CLI_HELP_ROUTES.format,\n ),\n );\n}\n\nfunction isCLIFormat(value: string): value is CLIFormat {\n return CLI_FORMATS.includes(value as CLIFormat);\n}\n","import { createReadStream } from \"fs\";\nimport { mkdtemp, rm } from \"fs/promises\";\nimport { join } from \"path\";\nimport { tmpdir } from \"os\";\n\nimport {\n getCLIStderr,\n getCLIStdin,\n getCLIStdout,\n setCLIExitCode,\n} from \"../runtime/context.js\";\n\nexport function readTextStreamFromStdin(): AsyncIterable<string> {\n const stdin = getCLIStdin();\n\n stdin.setEncoding(\"utf8\");\n return stdin as AsyncIterable<string>;\n}\n\nexport async function writeTextFileToStdout(path: string): Promise<void> {\n for await (const chunk of createReadStream(path, { encoding: \"utf8\" })) {\n await writeChunkToStdout(String(chunk));\n }\n}\n\nexport async function writeTextToStdout(text: string): Promise<void> {\n await writeChunkToStdout(text);\n}\n\nexport async function writeTextToStderr(text: string): Promise<void> {\n await new Promise<void>((resolve, reject) => {\n getCLIStderr().write(text, (error) => {\n if (error === undefined || error === null) {\n resolve();\n return;\n }\n\n reject(error);\n });\n });\n}\n\nexport async function writeBinaryToStdout(data: Uint8Array): Promise<void> {\n await writeChunkToStdout(data);\n}\n\nasync function writeChunkToStdout(chunk: string | Uint8Array): Promise<void> {\n await new Promise<void>((resolve, reject) => {\n getCLIStdout().write(chunk, (error) => {\n if (error === undefined || error === null) {\n resolve();\n return;\n }\n if (isBrokenPipeError(error)) {\n setCLIExitCode(0);\n resolve();\n return;\n }\n\n reject(error);\n });\n });\n}\n\nfunction isBrokenPipeError(error: Error): boolean {\n return (error as NodeJS.ErrnoException).code === \"EPIPE\";\n}\n\nexport async function createTemporaryOutputPath(\n prefix: string,\n extension: string,\n): Promise<{\n readonly directoryPath: string;\n readonly filePath: string;\n}> {\n void prefix;\n const directoryPath = await mkdtemp(join(tmpdir(), \"wikigraph-cli-output-\"));\n\n return {\n directoryPath,\n filePath: join(directoryPath, `output${extension}`),\n };\n}\n\nexport async function removeTemporaryDirectory(\n directoryPath: string,\n): Promise<void> {\n await rm(directoryPath, { force: true, recursive: true });\n}\n","type JSONLike =\n | readonly JSONLike[]\n | { readonly [key: string]: JSONLike }\n | boolean\n | null\n | number\n | string;\n\nconst CLI_JSON_KEY_PRIORITY = new Map(\n [\n \"at\",\n \"seq\",\n \"uri\",\n \"id\",\n \"jobId\",\n \"type\",\n \"target\",\n \"label\",\n \"labels\",\n \"title\",\n \"state\",\n \"name\",\n \"qid\",\n \"predicate\",\n \"subjectLabel\",\n \"objectLabel\",\n \"subjectQid\",\n \"objectQid\",\n \"score\",\n \"queueRank\",\n \"chapter\",\n \"chapterId\",\n \"fragment\",\n \"fragmentId\",\n \"position\",\n \"range\",\n \"start\",\n \"end\",\n \"shown\",\n \"total\",\n \"count\",\n \"mentionCount\",\n \"nodeCount\",\n \"edgeCount\",\n \"summaryCount\",\n \"limit\",\n \"order\",\n \"match\",\n \"lens\",\n \"terms\",\n \"types\",\n \"chapters\",\n \"query\",\n \"objects\",\n \"items\",\n \"nextCursor\",\n \"archiveKey\",\n \"archivePath\",\n \"workspacePath\",\n \"eventsPath\",\n \"createdAt\",\n \"updatedAt\",\n \"finishedAt\",\n \"currentStep\",\n \"step\",\n \"phase\",\n \"phaseDetail\",\n \"phaseDone\",\n \"phaseTotal\",\n \"phaseUnit\",\n \"words\",\n \"totalWords\",\n \"outputTokens\",\n \"authors\",\n \"language\",\n \"identifier\",\n \"publisher\",\n \"publishedAt\",\n \"sourceFormat\",\n \"snippet\",\n \"summary\",\n \"description\",\n \"recommendation\",\n \"risk\",\n \"error\",\n \"message\",\n \"children\",\n \"nodes\",\n \"links\",\n \"neighbors\",\n \"incoming\",\n \"outgoing\",\n \"nodeGroups\",\n \"sourceFragments\",\n \"sources\",\n \"tree\",\n \"meta\",\n \"evidence\",\n \"content\",\n \"source\",\n \"text\",\n \"prompt\",\n \"llmJSON\",\n \"errorJSON\",\n ].map((key, index) => [key, index]),\n);\n\nexport function formatCLIJSON(value: unknown): string {\n return `${JSON.stringify(orderCLIJSONValue(value), null, 2)}\\n`;\n}\n\nexport function formatCLIJSONLine(value: unknown): string {\n return `${JSON.stringify(orderCLIJSONValue(value))}\\n`;\n}\n\nfunction orderCLIJSONValue(value: unknown): JSONLike | undefined {\n if (\n value === null ||\n typeof value === \"boolean\" ||\n typeof value === \"number\" ||\n typeof value === \"string\"\n ) {\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => orderCLIJSONValue(item) ?? null);\n }\n\n if (typeof value !== \"object\") {\n return undefined;\n }\n\n return orderCLIJSONObject(value as Record<string, unknown>);\n}\n\nfunction orderCLIJSONObject(value: Record<string, unknown>): JSONLike {\n const entries = Object.entries(value).map(([key, entryValue], index) => ({\n index,\n key,\n priority: CLI_JSON_KEY_PRIORITY.get(key) ?? Number.MAX_SAFE_INTEGER,\n value: entryValue,\n }));\n const ordered: Record<string, JSONLike> = {};\n\n for (const entry of entries.sort(\n (left, right) => left.priority - right.priority || left.index - right.index,\n )) {\n const orderedValue = orderCLIJSONValue(entry.value);\n\n if (orderedValue !== undefined) {\n ordered[entry.key] = orderedValue;\n }\n }\n\n return ordered;\n}\n","import { CLI_PRIMARY_COMMAND } from \"./command.js\";\n\nconst SAFE_SHELL_ARGUMENT_PATTERN = /^[A-Za-z0-9_@%+=:,./-]+$/u;\n\nexport function formatShellArgument(argument: string): string {\n if (argument !== \"\" && SAFE_SHELL_ARGUMENT_PATTERN.test(argument)) {\n return argument;\n }\n\n return `'${argument.replaceAll(\"'\", \"'\\\\''\")}'`;\n}\n\nexport function formatShellCommand(arguments_: readonly string[]): string {\n return arguments_.map(formatShellArgument).join(\" \");\n}\n\nexport function formatCliCommand(arguments_: readonly string[]): string {\n return formatShellCommand([CLI_PRIMARY_COMMAND, ...arguments_]);\n}\n","export interface RenderTreeNode {\n readonly children: readonly RenderTreeNode[];\n readonly label: string;\n}\n\nexport function renderTreeText(nodes: readonly RenderTreeNode[]): string {\n const lines = formatTreeNodes(nodes);\n return lines.length === 0 ? \"\" : `${lines.join(\"\\n\")}\\n`;\n}\n\nfunction formatTreeNodes(\n nodes: readonly RenderTreeNode[],\n prefix = \"\",\n): readonly string[] {\n return nodes.flatMap((node, index) => {\n const last = index === nodes.length - 1;\n const branch = last ? \"└─ \" : \"├─ \";\n const childPrefix = `${prefix}${last ? \" \" : \"│ \"}`;\n\n return [\n `${prefix}${branch}${node.label}`,\n ...formatTreeNodes(node.children, childPrefix),\n ];\n });\n}\n","import { homedir } from \"os\";\nimport { isAbsolute, relative, resolve } from \"path\";\n\nimport {\n formatWikiGraphCommandUri as formatPortableWikiGraphCommandUri,\n parseLocatedWikiGraphUri as parsePortableLocatedWikiGraphUri,\n type LocatedWikiGraphUri,\n} from \"wiki-graph-sdk\";\n\nimport { getCLICwd, getCLIEnvValue } from \"../runtime/context.js\";\n\nexport interface RelativeArchiveUriResolution {\n readonly inputUri: string;\n readonly resolvedArchivePath: string;\n readonly workingDirectory: string;\n}\n\n/** Apply Node path semantics at the CLI boundary, after Core parses URI syntax. */\nexport function parseLocatedWikiGraphUri(uri: string): LocatedWikiGraphUri {\n const parsed = parsePortableLocatedWikiGraphUri(uri);\n if (\n parsed.archivePath === undefined ||\n parsed.archivePath.startsWith(\"wikg://lib/\")\n ) {\n return parsed;\n }\n return {\n ...parsed,\n archivePath: resolveCLIArchivePath(parsed.archivePath),\n };\n}\n\nexport function formatWikiGraphCommandUri(\n archivePath: string,\n objectUri?: string,\n cwd = getCLICwd(),\n): string {\n let locator = archivePath;\n if (isAbsolute(archivePath)) {\n const candidate = relative(cwd, archivePath);\n if (\n candidate !== \"\" &&\n !candidate.startsWith(\"..\") &&\n !isAbsolute(candidate)\n ) {\n locator = candidate;\n }\n }\n return formatPortableWikiGraphCommandUri(locator, objectUri);\n}\n\nexport function getRelativeArchiveUriResolution(\n uri: string,\n): RelativeArchiveUriResolution | undefined {\n let parsed: LocatedWikiGraphUri;\n try {\n parsed = parsePortableLocatedWikiGraphUri(uri);\n } catch {\n return undefined;\n }\n\n const locator = parsed.archivePath;\n if (\n locator === undefined ||\n locator === \"~\" ||\n locator.startsWith(\"~/\") ||\n locator.startsWith(\"wikg://lib/\") ||\n isAbsolute(locator)\n ) {\n return undefined;\n }\n\n const workingDirectory = getCLICwd();\n return {\n inputUri: uri,\n resolvedArchivePath: resolve(workingDirectory, locator),\n workingDirectory,\n };\n}\n\nfunction resolveCLIArchivePath(locator: string): string {\n if (locator === \"~\") return getCLIHomeDirectory();\n if (locator.startsWith(\"~/\")) {\n return resolve(getCLIHomeDirectory(), locator.slice(2));\n }\n return resolve(getCLICwd(), locator);\n}\n\nfunction getCLIHomeDirectory(): string {\n const environmentHome = getCLIEnvValue(\"HOME\")?.trim();\n return environmentHome === undefined || environmentHome === \"\"\n ? homedir()\n : environmentHome;\n}\n","import { existsSync, readFileSync } from \"fs\";\nimport { dirname, join, parse, resolve } from \"path\";\n\nimport { getCLICwd } from \"../runtime/context.js\";\n\nfunction isCLIPackageJSON(path: string): boolean {\n const parsed: unknown = JSON.parse(readFileSync(path, \"utf8\"));\n\n return (\n typeof parsed === \"object\" &&\n parsed !== null &&\n \"name\" in parsed &&\n parsed.name === \"wiki-graph\"\n );\n}\n\nfunction findPackageJSONPathFromWorkingDirectory(): string | undefined {\n let currentDirectoryPath = getCLICwd();\n const rootDirectoryPath = parse(currentDirectoryPath).root;\n\n while (true) {\n for (const candidatePath of [\n join(currentDirectoryPath, \"package.json\"),\n join(currentDirectoryPath, \"packages\", \"cli\", \"package.json\"),\n ]) {\n if (existsSync(candidatePath) && isCLIPackageJSON(candidatePath)) {\n return candidatePath;\n }\n }\n\n if (currentDirectoryPath === rootDirectoryPath) {\n return undefined;\n }\n\n currentDirectoryPath = dirname(currentDirectoryPath);\n }\n}\n\nfunction resolvePackageJSONPath(): string {\n const injectedCLIDistDirectoryPath = (\n globalThis as { __WIKIGRAPH_CLI_DIST_DIR__?: unknown }\n ).__WIKIGRAPH_CLI_DIST_DIR__;\n\n const candidatePaths = [\n typeof injectedCLIDistDirectoryPath === \"string\"\n ? resolve(injectedCLIDistDirectoryPath, \"../package.json\")\n : undefined,\n findPackageJSONPathFromWorkingDirectory(),\n ];\n\n for (const candidatePath of candidatePaths) {\n if (candidatePath !== undefined && existsSync(candidatePath)) {\n return candidatePath;\n }\n }\n\n throw new Error(\"Could not locate CLI package.json\");\n}\n\nexport function readCLIVersion(): string {\n const packageJSONPath = resolvePackageJSONPath();\n const parsed: unknown = JSON.parse(readFileSync(packageJSONPath, \"utf8\"));\n\n if (\n typeof parsed === \"object\" &&\n parsed !== null &&\n \"version\" in parsed &&\n typeof parsed.version === \"string\"\n ) {\n return parsed.version;\n }\n\n throw new Error(`Invalid package version in ${packageJSONPath}`);\n}\n","export * from \"./errors.js\";\nexport * from \"./formats.js\";\nexport * from \"./io.js\";\nexport * from \"./json.js\";\nexport * from \"./shell.js\";\nexport * from \"./tree.js\";\nexport * from \"./uri.js\";\nexport * from \"./version.js\";\nexport * from \"./command.js\";\n","export * from \"wiki-graph-sdk/local-config\";\n","import {\n loadWikiGraphRuntimeConfig,\n resolveHostedProviderEndpoint as resolveSDKHostedProviderEndpoint,\n resolveWikispineConfig as resolveSDKWikispineConfig,\n type HostedProviderScope,\n type WikiGraphProvider,\n type WikiGraphRuntimeConfig,\n} from \"wiki-graph-sdk\";\n\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../support/index.js\";\nimport { getCLIEnvPolicy } from \"./context.js\";\n\nexport type CLIConfig = WikiGraphRuntimeConfig;\nexport type CLIProvider = WikiGraphProvider;\nexport type { HostedProviderScope };\n\nexport async function loadCLIConfig(options?: {\n readonly llmJSON?: string;\n}): Promise<CLIConfig> {\n try {\n return await loadWikiGraphRuntimeConfig(options);\n } catch (error) {\n throw withConfigHelp(error);\n }\n}\n\nexport function resolveWikispineConfig(\n value: Record<string, unknown>,\n envPolicy: \"development\" | \"production\" = getCLIEnvPolicy(),\n): CLIConfig[\"wikispine\"] | undefined {\n try {\n return resolveSDKWikispineConfig(value, envPolicy);\n } catch (error) {\n throw withConfigHelp(error);\n }\n}\n\nexport function resolveHostedProviderEndpoint(\n scope: HostedProviderScope,\n envPolicy: \"development\" | \"production\" = getCLIEnvPolicy(),\n): string {\n return resolveSDKHostedProviderEndpoint(scope, envPolicy);\n}\n\nfunction withConfigHelp(error: unknown): Error {\n const message = error instanceof Error ? error.message : String(error);\n return new Error(withHelpRoute(message, CLI_HELP_ROUTES.config), {\n cause: error,\n });\n}\n","import {\n buildWikiGraphLLMOptions,\n type WikiGraphLLMOptions,\n} from \"wiki-graph-sdk\";\n\nimport type { CLIConfig } from \"./config.js\";\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../support/index.js\";\n\nexport function buildLLMOptions(config: CLIConfig): WikiGraphLLMOptions {\n try {\n return buildWikiGraphLLMOptions(config);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new Error(withHelpRoute(message, CLI_HELP_ROUTES.config), {\n cause: error,\n });\n }\n}\n","export * from \"wiki-graph-sdk/planning\";\n\nimport type { GenerationPerformanceHint } from \"wiki-graph-sdk/planning\";\n\nexport type CLIGenerationPerformanceHint = Omit<\n GenerationPerformanceHint,\n \"configKey\" | \"configValue\"\n> & { readonly command: string };\n\nexport function toCLIGenerationPerformanceHints(\n hints: readonly GenerationPerformanceHint[],\n): readonly CLIGenerationPerformanceHint[] {\n return hints.map(({ configKey, configValue, ...hint }) => ({\n ...hint,\n command: `wg wikg://local/config/concurrent put ${configKey} ${configValue}`,\n }));\n}\n","import { clearLine, cursorTo, moveCursor } from \"readline\";\n\nimport type {\n WikiGraphProgressCallback,\n WikiGraphProgressEvent,\n} from \"wiki-graph-sdk\";\n\ninterface SerialState {\n completedFragments: number;\n completedWords: number;\n fragments?: number;\n title?: string;\n words?: number;\n}\n\nexport interface CLIProgressRenderer {\n readonly onProgress?: WikiGraphProgressCallback;\n stop(): Promise<void>;\n}\n\nexport function createCLIProgressRenderer(input: {\n readonly enabled: boolean;\n readonly stream?: NodeJS.WriteStream;\n}): CLIProgressRenderer {\n if (!input.enabled) {\n return {\n async stop() {},\n };\n }\n\n return new TerminalProgressRenderer(input.stream ?? process.stderr);\n}\n\nclass TerminalProgressRenderer implements CLIProgressRenderer {\n readonly #stream: NodeJS.WriteStream;\n readonly #serials = new Map<number, SerialState>();\n #digest:\n | {\n completedWords: number;\n totalWords: number;\n }\n | undefined;\n #renderQueue: Promise<void> = Promise.resolve();\n #renderedLineCount = 0;\n #stopping = false;\n\n public constructor(stream: NodeJS.WriteStream) {\n this.#stream = stream;\n }\n\n public readonly onProgress: WikiGraphProgressCallback = async (event) => {\n if (this.#stopping) {\n return;\n }\n\n const renderTask = this.#renderQueue.catch(swallowRenderError).then(() => {\n this.#applyEvent(event);\n this.#render();\n });\n\n this.#renderQueue = renderTask;\n\n await renderTask;\n };\n\n public async stop(): Promise<void> {\n if (this.#stopping) {\n await this.#renderQueue.catch(swallowRenderError);\n return;\n }\n\n this.#stopping = true;\n\n const stopTask = this.#renderQueue.catch(swallowRenderError).then(() => {\n if (this.#renderedLineCount === 0) {\n return;\n }\n\n this.#stream.write(\"\\n\");\n this.#renderedLineCount = 0;\n });\n\n this.#renderQueue = stopTask;\n\n await stopTask;\n }\n\n #applyEvent(event: WikiGraphProgressEvent): void {\n switch (event.type) {\n case \"serials-discovered\":\n if (!event.available) {\n return;\n }\n\n for (const serial of event.serials) {\n this.#serials.set(serial.id, {\n completedFragments: 0,\n completedWords: 0,\n ...(serial.title === undefined ? {} : { title: serial.title }),\n words: serial.words,\n ...(serial.fragments === undefined\n ? {}\n : { fragments: serial.fragments }),\n });\n }\n return;\n case \"serial-progress\": {\n const serial = this.#serials.get(event.id) ?? {\n completedFragments: 0,\n completedWords: 0,\n };\n\n serial.completedFragments = event.completedFragments;\n serial.completedWords = event.completedWords;\n this.#serials.set(event.id, serial);\n return;\n }\n case \"digest-progress\":\n this.#digest = {\n completedWords: event.completedWords,\n totalWords: event.totalWords,\n };\n return;\n }\n }\n\n #render(): void {\n const lines = this.#buildLines();\n\n if (lines.length === 0) {\n return;\n }\n\n if (this.#renderedLineCount > 1) {\n moveCursor(this.#stream, 0, -(this.#renderedLineCount - 1));\n }\n\n const renderLineCount = Math.max(lines.length, this.#renderedLineCount);\n\n for (let index = 0; index < renderLineCount; index += 1) {\n cursorTo(this.#stream, 0);\n clearLine(this.#stream, 0);\n\n const line = lines[index];\n\n if (line !== undefined) {\n this.#stream.write(line);\n }\n\n if (index < renderLineCount - 1) {\n this.#stream.write(\"\\n\");\n }\n }\n\n this.#renderedLineCount = renderLineCount;\n }\n\n #buildLines(): string[] {\n const lines: string[] = [];\n const serials = [...this.#serials.entries()].sort(\n ([leftId], [rightId]) => leftId - rightId,\n );\n const discoveredSerials = serials.filter(\n (entry): entry is [number, SerialState & { words: number }] =>\n hasDiscoveryWords(entry[1]),\n );\n const totalSerialWords = discoveredSerials.reduce(\n (sum, [, serial]) => sum + serial.words,\n 0,\n );\n const totalCompletedSerialWords = discoveredSerials.reduce(\n (sum, [, serial]) => sum + serial.completedWords,\n 0,\n );\n const activeSerials = discoveredSerials.filter(\n ([, serial]) =>\n serial.completedWords > 0 && serial.completedWords < serial.words,\n );\n\n if (discoveredSerials.length > 0) {\n lines.push(\n `${formatStageLabel(\"Serial\")}${renderBar(\n totalCompletedSerialWords,\n totalSerialWords,\n )} ${formatNumber(totalCompletedSerialWords)} / ${formatNumber(\n totalSerialWords,\n )} words`,\n );\n }\n\n if (this.#digest !== undefined) {\n lines.push(\n `${formatStageLabel(\"Digest\")}${renderBar(\n this.#digest.completedWords,\n this.#digest.totalWords,\n )} ${formatNumber(this.#digest.completedWords)} / ${formatNumber(\n this.#digest.totalWords,\n )} words`,\n );\n }\n\n if (activeSerials.length > 0) {\n lines.push(\"-\".repeat(24));\n }\n\n const wordsLabelWidth = activeSerials.reduce((width, [, serial]) => {\n return Math.max(\n width,\n buildWordsLabel(serial.completedWords, serial.words).length,\n );\n }, 0);\n\n for (const [serialId, serial] of activeSerials) {\n const wordsLabel = buildWordsLabel(serial.completedWords, serial.words);\n const fragmentsLabel = buildFragmentsLabel(\n serial.completedFragments,\n serial.fragments,\n );\n\n lines.push(buildSerialHeading(serialId, serial.title));\n lines.push(\n `${formatSerialDetailIndent()}${renderBar(\n serial.completedWords,\n serial.words,\n )} ${wordsLabel.padEnd(wordsLabelWidth)}${fragmentsLabel === undefined ? \"\" : ` (${fragmentsLabel})`}`,\n );\n }\n\n return lines;\n }\n}\n\nfunction swallowRenderError(): undefined {\n return undefined;\n}\n\nfunction hasDiscoveryWords(\n serial: SerialState,\n): serial is SerialState & { words: number } {\n return serial.words !== undefined;\n}\n\nfunction formatStageLabel(label: string): string {\n return label.padEnd(8);\n}\n\nfunction buildSerialHeading(\n serialId: number,\n title: string | undefined,\n): string {\n if (title === undefined) {\n return `#${serialId}`;\n }\n\n const sanitizedTitle = sanitizeSerialTitle(title);\n\n return sanitizedTitle === \"\"\n ? `#${serialId}`\n : `#${serialId} ${sanitizedTitle}`;\n}\n\nfunction formatSerialDetailIndent(): string {\n return \" \".repeat(7);\n}\n\nfunction buildWordsLabel(completed: number, total: number): string {\n return `${formatNumber(completed)} / ${formatNumber(total)} words`;\n}\n\nfunction sanitizeSerialTitle(title: string): string {\n let sanitized = \"\";\n\n for (let index = 0; index < title.length; index += 1) {\n const current = title[index];\n\n if (current === \"\\u001B\") {\n const next = title[index + 1];\n\n if (next === \"[\") {\n index = skipAnsiCSISequence(title, index + 2);\n continue;\n }\n\n if (next === \"]\") {\n index = skipAnsiOSCSequence(title, index + 2);\n continue;\n }\n\n continue;\n }\n\n if (current !== undefined && /\\p{Cc}/u.test(current)) {\n continue;\n }\n\n sanitized += current ?? \"\";\n }\n\n return sanitized.trim();\n}\n\nfunction skipAnsiCSISequence(title: string, startIndex: number): number {\n for (let index = startIndex; index < title.length; index += 1) {\n const current = title[index];\n\n if (current === undefined) {\n return title.length;\n }\n\n if (current >= \"@\" && current <= \"~\") {\n return index;\n }\n }\n\n return title.length;\n}\n\nfunction skipAnsiOSCSequence(title: string, startIndex: number): number {\n for (let index = startIndex; index < title.length; index += 1) {\n const current = title[index];\n const next = title[index + 1];\n\n if (current === undefined) {\n return title.length;\n }\n\n if (current === \"\\u0007\") {\n return index;\n }\n\n if (current === \"\\u001B\" && next === \"\\\\\") {\n return index + 1;\n }\n }\n\n return title.length;\n}\n\nfunction buildFragmentsLabel(\n completed: number,\n total: number | undefined,\n): string | undefined {\n if (total === undefined) {\n return undefined;\n }\n\n return `${formatNumber(completed)}/${formatNumber(total)} source units`;\n}\n\nfunction renderBar(completed: number, total: number): string {\n const width = 12;\n const safeTotal = total <= 0 ? 1 : total;\n const ratio = Math.max(0, Math.min(1, completed / safeTotal));\n const filled = Math.round(ratio * width);\n\n return `[${\"#\".repeat(filled)}${\".\".repeat(width - filled)}]`;\n}\n\nfunction formatNumber(value: number): string {\n return new Intl.NumberFormat(\"en-US\").format(value);\n}\n","import { writeTextToStdout } from \"../support/index.js\";\nimport { formatCLIJSONLine } from \"../support/index.js\";\nimport { getCLIStdoutIsTTY } from \"./context.js\";\n\nexport interface ProgressCounter {\n readonly done: number;\n readonly name: string;\n readonly total: number;\n readonly unit: string;\n}\n\nexport interface ProgressMetric {\n readonly name: string;\n readonly value: number;\n}\n\nexport interface ProgressMetricGroup {\n readonly metrics: readonly ProgressMetric[];\n readonly name: string;\n}\n\nexport type ProgressOutputEvent =\n | {\n readonly json: unknown;\n readonly kind: \"lifecycle\";\n readonly text: string;\n }\n | {\n readonly counters?: readonly ProgressCounter[];\n readonly json: unknown;\n readonly kind: \"status\";\n readonly metricGroups?: readonly ProgressMetricGroup[];\n readonly phase: string;\n };\n\nexport class ProgressOutputWriter {\n readonly #jsonl: boolean;\n readonly #throttleMs: number;\n readonly #tty: boolean;\n #lastStatusAt: number | undefined;\n #lastStatusKey: string | undefined;\n #statusLineOpen = false;\n\n public constructor(input: {\n readonly jsonl: boolean;\n readonly throttleMs: number;\n readonly tty?: boolean;\n }) {\n this.#jsonl = input.jsonl;\n this.#throttleMs = input.throttleMs;\n this.#tty = input.tty ?? getCLIStdoutIsTTY() === true;\n }\n\n public async write(event: ProgressOutputEvent): Promise<void> {\n if (event.kind === \"status\" && !this.#shouldWriteStatus(event)) {\n return;\n }\n\n if (this.#jsonl) {\n await this.#writeLine(formatCLIJSONLine(event.json));\n return;\n }\n\n if (event.kind === \"status\") {\n await this.#writeStatus(formatStatusText(event));\n return;\n }\n\n await this.#writeLifecycle(event.text);\n }\n\n async #writeLifecycle(text: string): Promise<void> {\n if (this.#tty && this.#statusLineOpen) {\n await writeTextToStdout(\"\\n\");\n this.#statusLineOpen = false;\n }\n\n await this.#writeLine(`${text}\\n`);\n }\n\n async #writeLine(text: string): Promise<void> {\n await writeTextToStdout(text);\n }\n\n async #writeStatus(text: string): Promise<void> {\n if (this.#tty) {\n await writeTextToStdout(`\\r\\x1B[2K${text}`);\n this.#statusLineOpen = true;\n return;\n }\n\n await this.#writeLine(`${text}\\n`);\n }\n\n #shouldWriteStatus(\n event: Extract<ProgressOutputEvent, { readonly kind: \"status\" }>,\n ): boolean {\n const key = event.phase;\n const completed = isStatusComplete(event);\n const now = Date.now();\n const elapsed =\n this.#lastStatusAt === undefined\n ? Number.POSITIVE_INFINITY\n : now - this.#lastStatusAt;\n\n if (\n key !== this.#lastStatusKey ||\n completed ||\n this.#lastStatusAt === undefined ||\n elapsed >= this.#throttleMs\n ) {\n this.#lastStatusAt = now;\n this.#lastStatusKey = key;\n return true;\n }\n\n return false;\n }\n}\n\nexport function formatStatusText(input: {\n readonly counters?: readonly ProgressCounter[];\n readonly metricGroups?: readonly ProgressMetricGroup[];\n readonly phase: string;\n}): string {\n const counters = input.counters ?? [];\n const counterText =\n counters.length === 0\n ? \"\"\n : ` ${counters.map(formatCounterText).join(\" | \")}`;\n const metricText = formatMetricGroupsText(input.metricGroups);\n\n return `${input.phase}${counterText}${metricText === \"\" ? \"\" : ` ${metricText}`}`;\n}\n\nfunction formatCounterText(counter: ProgressCounter): string {\n if (counter.name === counter.unit) {\n return `${counter.name} ${counter.done}/${counter.total}`;\n }\n\n return `${counter.name} ${counter.done}/${counter.total} ${counter.unit}`;\n}\n\nfunction formatMetricGroupsText(\n metricGroups: readonly ProgressMetricGroup[] | undefined,\n): string {\n if (metricGroups === undefined) {\n return \"\";\n }\n\n const parts = metricGroups.flatMap((group) => {\n const metrics = group.metrics.map(\n (metric) => `${metric.name}: ${metric.value}`,\n );\n\n return metrics.length === 0\n ? []\n : [`[${group.name} ${metrics.join(\" / \")}]`];\n });\n\n return parts.join(\" \");\n}\n\nfunction isStatusComplete(input: {\n readonly counters?: readonly ProgressCounter[];\n}): boolean {\n const counters = input.counters ?? [];\n\n return (\n counters.length > 0 &&\n counters.every(\n (counter) => counter.total > 0 && counter.done >= counter.total,\n )\n );\n}\n","export {\n createStageLLM,\n DEFAULT_EXTRACTION_PROMPT,\n DEFAULT_KNOWLEDGE_GRAPH_RECALL_PROMPT,\n resolveExtractionPrompt,\n resolveKnowledgeGraphRecallPrompt,\n} from \"wiki-graph-sdk\";\n\nimport {\n loadRequiredStageConfig as loadSDKRequiredStageConfig,\n type WikiGraphRuntimeConfig,\n} from \"wiki-graph-sdk\";\n\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../support/index.js\";\n\nexport async function loadRequiredStageConfig(options: {\n readonly llmJSON?: string;\n}): Promise<WikiGraphRuntimeConfig> {\n try {\n return await loadSDKRequiredStageConfig(options);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new Error(withHelpRoute(message, CLI_HELP_ROUTES.config), {\n cause: error,\n });\n }\n}\n","export * from \"wiki-graph-sdk/wikispine\";\n","export * from \"./config.js\";\nexport * from \"./llm.js\";\nexport * from \"./local-config.js\";\nexport * from \"./planning.js\";\nexport * from \"./progress.js\";\nexport * from \"./progress-output.js\";\nexport * from \"./stage.js\";\nexport * from \"./wikispine.js\";\n","import type { CLIArguments } from \"../args/index.js\";\nimport { getWikiGraphSDK } from \"../runtime/context.js\";\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../support/index.js\";\nimport {\n type CLIFormat,\n inferCLIFormatFromPath,\n isTextCLIFormat,\n} from \"../support/index.js\";\nimport {\n createTemporaryOutputPath,\n readTextStreamFromStdin,\n removeTemporaryDirectory,\n writeTextFileToStdout,\n} from \"../support/index.js\";\nimport { createCLIProgressRenderer } from \"../runtime/index.js\";\n\ntype TextCLIFormat = Extract<CLIFormat, \"markdown\" | \"txt\">;\n\ntype ResolvedInputEndpoint =\n | {\n readonly format: Exclude<CLIFormat, \"markdown\" | \"txt\"> | TextCLIFormat;\n readonly path: string;\n readonly standardStream?: undefined;\n }\n | {\n readonly format: TextCLIFormat;\n readonly path?: undefined;\n readonly standardStream: \"stdin\";\n };\n\ntype ResolvedOutputEndpoint =\n | {\n readonly format: CLIFormat;\n readonly path: string;\n readonly standardStream?: undefined;\n }\n | {\n readonly format: TextCLIFormat;\n readonly path?: undefined;\n readonly standardStream: \"stdout\";\n };\n\nexport async function runConvertCommand(args: CLIArguments): Promise<void> {\n const input = resolveInputEndpoint(args);\n const output = resolveOutputEndpoint(args);\n if (args.verbose && output.standardStream === \"stdout\") {\n throw new Error(\n withHelpRoute(\n \"Cannot use --verbose when writing digest output to stdout. Use --output <path> or disable --verbose.\",\n CLI_HELP_ROUTES.runtime,\n ),\n );\n }\n if (args.targetStage !== undefined && output.format !== \"wikg\") {\n throw new Error(\n withHelpRoute(\n \"--stage is only supported when output format is wikg.\",\n CLI_HELP_ROUTES.format,\n ),\n );\n }\n\n if (args.targetStage !== undefined && input.format === \"wikg\") {\n throw new Error(\n withHelpRoute(\n \"--stage is only supported when creating .wikg from source input.\",\n CLI_HELP_ROUTES.format,\n ),\n );\n }\n const progressRenderer = createCLIProgressRenderer({\n enabled:\n input.format !== \"wikg\" &&\n output.standardStream !== \"stdout\" &&\n process.stderr.isTTY === true &&\n !args.verbose,\n });\n\n const temporaryOutput =\n output.path === undefined\n ? await createTemporaryOutputPath(\n \"wikigraph-cli-output-\",\n extensionForFormat(output.format),\n )\n : undefined;\n const outputPath = output.path ?? temporaryOutput?.filePath;\n if (outputPath === undefined)\n throw new Error(\"Internal error: missing output target.\");\n try {\n if (input.path === undefined && process.stdin.isTTY) {\n throw new Error(\n withHelpRoute(\n \"Missing --input. Refusing to read from interactive stdin. Use --input <path> or pipe text into stdin.\",\n CLI_HELP_ROUTES.runtime,\n ),\n );\n }\n try {\n await getWikiGraphSDK().conversions.convert({\n ...(args.digestDirPath === undefined\n ? {}\n : { digestDirectory: args.digestDirPath }),\n input:\n input.path === undefined\n ? {\n format: input.format,\n stream: readTextStreamFromStdin(),\n }\n : { format: input.format, path: input.path },\n ...(args.llmJSON === undefined ? {} : { llmJSON: args.llmJSON }),\n ...(progressRenderer.onProgress === undefined\n ? {}\n : { onProgress: progressRenderer.onProgress }),\n output: { format: output.format, path: outputPath },\n ...(args.prompt === undefined ? {} : { prompt: args.prompt }),\n ...(args.targetStage === undefined\n ? {}\n : { targetStage: args.targetStage }),\n ...(args.verbose ? { verbose: true } : {}),\n });\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n if (isConfigurationErrorMessage(message)) {\n throw new Error(withHelpRoute(message, CLI_HELP_ROUTES.config), {\n cause: error,\n });\n }\n throw error;\n }\n if (temporaryOutput !== undefined) {\n await writeTextFileToStdout(temporaryOutput.filePath);\n }\n } finally {\n await progressRenderer.stop();\n if (temporaryOutput !== undefined) {\n await removeTemporaryDirectory(temporaryOutput.directoryPath);\n }\n }\n}\n\nfunction isConfigurationErrorMessage(message: string): boolean {\n return /(?:configuration|--llm|llm\\.|embeddings\\.|API key|provider|model)/iu.test(\n message,\n );\n}\n\nfunction resolveInputEndpoint(args: CLIArguments): ResolvedInputEndpoint {\n const normalizedPath = normalizeIOPath(args.inputPath);\n const inferredFormat =\n normalizedPath === undefined\n ? undefined\n : inferCLIFormatFromPath(normalizedPath);\n const format = args.inputFormat ?? inferredFormat;\n\n if (format === undefined) {\n throw new Error(\n withHelpRoute(\n normalizedPath === undefined\n ? \"Cannot infer input format from stdin. Set --input-format.\"\n : `Cannot infer input format from ${normalizedPath}. Set --input-format.`,\n CLI_HELP_ROUTES.format,\n ),\n );\n }\n if (normalizedPath === undefined && !isTextCLIFormat(format)) {\n throw new Error(\n withHelpRoute(\n `stdin only supports txt or markdown, but got ${format}.`,\n CLI_HELP_ROUTES.format,\n ),\n );\n }\n\n if (normalizedPath === undefined) {\n const textFormat = format as TextCLIFormat;\n\n return {\n format: textFormat,\n standardStream: \"stdin\",\n };\n }\n\n return {\n format,\n path: normalizedPath,\n };\n}\n\nfunction resolveOutputEndpoint(args: CLIArguments): ResolvedOutputEndpoint {\n const normalizedPath = normalizeIOPath(args.outputPath);\n const inferredFormat =\n normalizedPath === undefined\n ? undefined\n : inferCLIFormatFromPath(normalizedPath);\n const format = args.outputFormat ?? inferredFormat;\n\n if (format === undefined) {\n throw new Error(\n withHelpRoute(\n normalizedPath === undefined\n ? \"Cannot infer output format for stdout. Set --output-format.\"\n : `Cannot infer output format from ${normalizedPath}. Set --output-format.`,\n CLI_HELP_ROUTES.format,\n ),\n );\n }\n if (normalizedPath === undefined && !isTextCLIFormat(format)) {\n throw new Error(\n withHelpRoute(\n `stdout only supports txt or markdown, but got ${format}.`,\n CLI_HELP_ROUTES.format,\n ),\n );\n }\n\n if (normalizedPath === undefined) {\n const textFormat = format as TextCLIFormat;\n\n return {\n format: textFormat,\n standardStream: \"stdout\",\n };\n }\n\n return {\n format,\n path: normalizedPath,\n };\n}\n\nfunction normalizeIOPath(path: string | undefined): string | undefined {\n if (path === undefined) {\n return undefined;\n }\n\n return path === \"-\" ? undefined : path;\n}\n\nfunction extensionForFormat(format: CLIFormat): string {\n switch (format) {\n case \"epub\":\n return \".epub\";\n case \"markdown\":\n return \".md\";\n case \"wikg\":\n return \".wikg\";\n case \"txt\":\n return \".txt\";\n }\n}\n","import { WikiGraphArchiveExistsError } from \"wiki-graph-sdk\";\n\nimport type { CLIArchiveArguments } from \"../../args/index.js\";\nimport { getWikiGraphSDK } from \"../../runtime/context.js\";\nimport { createCLIProgressRenderer } from \"../../runtime/index.js\";\nimport {\n formatCLIJSON,\n formatCliCommand,\n formatWikiGraphCommandUri,\n writeTextToStdout,\n} from \"../../support/index.js\";\n\nexport async function createArchive(args: CLIArchiveArguments): Promise<void> {\n const progressRenderer = createCLIProgressRenderer({\n enabled: args.importPath !== undefined && process.stderr.isTTY === true,\n });\n try {\n const result = await getWikiGraphSDK().archives.create({\n ...(args.importPath === undefined ? {} : { importPath: args.importPath }),\n ...(progressRenderer.onProgress === undefined\n ? {}\n : { onProgress: progressRenderer.onProgress }),\n path: args.archivePath,\n replace: args.replace ?? false,\n });\n await writeTextToStdout(\n args.json === true\n ? formatCLIJSON({ uri: result.locatedUri })\n : \"<archive>\\n\",\n );\n } catch (error) {\n if (!(error instanceof WikiGraphArchiveExistsError)) throw error;\n throw new Error(formatArchiveAlreadyExistsMessage(error.path), {\n cause: error,\n });\n } finally {\n await progressRenderer.stop();\n }\n}\n\nfunction formatArchiveAlreadyExistsMessage(archivePath: string): string {\n const uri = formatWikiGraphCommandUri(archivePath);\n return [\n `Archive already exists: ${archivePath}`,\n `Use \\`${formatCliCommand([uri, \"inspect\"])}\\` to view it, or rerun with \\`--replace\\` to overwrite it.`,\n ].join(\"\\n\");\n}\n","import type {\n WikiGraphArchiveInspectCoverage,\n WikiGraphArchiveInspectImprovement,\n WikiGraphArchiveInspectReport,\n} from \"wiki-graph-sdk\";\n\nimport type { CLIArchiveArguments } from \"../../args/index.js\";\nimport {\n formatGenerationPlanningDuration,\n toCLIGenerationPerformanceHints,\n type CLIGenerationPerformanceHint,\n} from \"../../runtime/index.js\";\nimport { getWikiGraphSDK } from \"../../runtime/context.js\";\nimport {\n formatCLIJSON,\n formatCliCommand,\n writeTextToStdout,\n} from \"../../support/index.js\";\n\ninterface CLIInspectImprovement extends WikiGraphArchiveInspectImprovement {\n readonly command: string;\n}\n\ninterface CLIInspectReport extends Omit<\n WikiGraphArchiveInspectReport,\n \"archiveUri\" | \"improvements\" | \"performanceHints\" | \"summaryCoverageNote\"\n> {\n readonly localIndexCache: WikiGraphArchiveInspectReport[\"localIndexCache\"] & {\n readonly fixCommand?: string;\n };\n readonly searchArtifacts: WikiGraphArchiveInspectReport[\"searchArtifacts\"] & {\n readonly fixCommand?: string;\n readonly helpCommand: string;\n };\n readonly improvements: readonly CLIInspectImprovement[];\n readonly performanceHints: readonly CLIGenerationPerformanceHint[];\n readonly help: {\n readonly readiness: string;\n readonly summaryCoverage: string;\n };\n}\n\nexport async function writeArchiveInspectReport(\n args: CLIArchiveArguments,\n): Promise<void> {\n const archive = await getWikiGraphSDK().archives.open(args.archivePath);\n const report = toCLIInspectReport(\n await archive.inspect({\n ...(args.chapterId === undefined ? {} : { chapterId: args.chapterId }),\n }),\n );\n\n await writeTextToStdout(\n args.json === true\n ? formatCLIJSON(report)\n : formatArchiveInspectText(report),\n );\n}\n\nfunction toCLIInspectReport(\n report: WikiGraphArchiveInspectReport,\n): CLIInspectReport {\n const { archiveUri, summaryCoverageNote, ...base } = report;\n return {\n ...base,\n localIndexCache: {\n ...report.localIndexCache,\n ...(report.localIndexCache.syncAvailable\n ? { fixCommand: formatCliCommand([`${archiveUri}/index`, \"sync\"]) }\n : {}),\n },\n searchArtifacts: {\n ...report.searchArtifacts,\n ...(report.searchArtifacts.ready\n ? {}\n : {\n fixCommand: formatBuildCommand(report.uri, \"index-fts\", false),\n }),\n helpCommand: \"wg help readiness\",\n },\n improvements: report.improvements.map((improvement) => ({\n ...improvement,\n command: formatImprovementCommand(improvement, archiveUri, report.uri),\n })),\n performanceHints: toCLIGenerationPerformanceHints(report.performanceHints),\n help: {\n readiness: \"wg help readiness\",\n summaryCoverage: summaryCoverageNote,\n },\n };\n}\n\nfunction formatImprovementCommand(\n improvement: WikiGraphArchiveInspectImprovement,\n archiveUri: string,\n scopeUri: string,\n): string {\n switch (improvement.kind) {\n case \"add-source\":\n return formatCliCommand([\n `${archiveUri}/chapter`,\n \"add\",\n \"--input\",\n \"source.txt\",\n ]);\n case \"sync-index\":\n return formatCliCommand([`${archiveUri}/index`, \"sync\"]);\n case \"build\":\n return formatBuildCommand(\n scopeUri,\n improvement.task!,\n improvement.planning !== undefined,\n );\n }\n}\n\nfunction formatBuildCommand(\n scopeUri: string,\n task: NonNullable<WikiGraphArchiveInspectImprovement[\"task\"]>,\n acceptCost: boolean,\n): string {\n return formatCliCommand([\n \"wikg://local/job\",\n \"add\",\n \"--input\",\n scopeUri,\n \"--task\",\n task,\n ...(acceptCost ? [\"--accept-cost\"] : []),\n ]);\n}\n\nfunction formatArchiveInspectText(report: CLIInspectReport): string {\n return (\n [\n \"Archive Inspect\",\n `URI: ${report.uri}`,\n `Scope: ${report.scope.type === \"archive\" ? \"archive\" : report.uri}`,\n \"\",\n \"Content\",\n `Chapters: ${report.content.chapters.content} content / ${report.content.chapters.total} total`,\n `Planned chapters: ${report.content.chapters.planned}`,\n `Source words: ${report.content.sourceWords}`,\n `Summary words: ${report.content.summaryWords}`,\n \"\",\n \"Query Readiness\",\n `Status: ${report.query.ready ? \"available\" : \"unavailable\"}`,\n `Search artifacts: ${report.searchArtifacts.status}`,\n ...(report.searchArtifacts.ready\n ? []\n : [\n `Fix: ${report.searchArtifacts.fixCommand}`,\n `Resource: ${report.searchArtifacts.resource}`,\n `Help: ${report.searchArtifacts.helpCommand}`,\n ]),\n \"\",\n \"Index Cache\",\n `Status: ${report.localIndexCache.status === \"missing-or-outdated\" ? \"missing or outdated\" : report.localIndexCache.status}`,\n ...(report.localIndexCache.current\n ? []\n : [\n `Impact: ${report.localIndexCache.impact}`,\n ...(report.localIndexCache.fixCommand === undefined\n ? []\n : [`Fix: ${report.localIndexCache.fixCommand}`]),\n ...(report.localIndexCache.resource === undefined\n ? []\n : [`Resource: ${report.localIndexCache.resource}`]),\n ]),\n \"\",\n \"Coverage\",\n formatCoverageLine(\n \"FTS Index Artifact\",\n report.coverage.ftsIndexArtifact,\n ),\n formatCoverageLine(\n \"Source Embedding Index Artifact\",\n report.coverage.sourceEmbeddingIndexArtifact,\n ),\n formatCoverageLine(\n \"Summary Embedding Index Artifact\",\n report.coverage.summaryEmbeddingIndexArtifact,\n ),\n formatCoverageLine(\"Reading Graph\", report.coverage.readingGraph),\n formatCoverageLine(\"Knowledge Graph\", report.coverage.knowledgeGraph),\n formatCoverageLine(\"Summary Artifact\", report.coverage.summary),\n `Summary note: ${report.help.summaryCoverage}`,\n ...(report.searchArtifacts.blockedChapters.length === 0\n ? []\n : [\n \"Query blockers: these chapters have neither FTS nor source embedding index artifacts:\",\n ...report.searchArtifacts.blockedChapters.map(\n (chapter) =>\n `- ${chapter.title === null ? \"[untitled]\" : chapter.title}: ${chapter.locatedUri}`,\n ),\n ]),\n \"\",\n \"Retrieval Guidance\",\n ...report.retrievalGuidance,\n \"\",\n \"Improvements\",\n ...(report.improvements.length === 0\n ? [\"No immediate improvements recommended.\"]\n : [\n ...report.improvements.flatMap(formatInspectImprovement),\n \"\",\n ...formatInspectPerformanceHints(report.performanceHints),\n ...(report.performanceHints.length === 0 ? [] : [\"\"]),\n `Readiness details: ${report.help.readiness}`,\n ]),\n ].join(\"\\n\") + \"\\n\"\n );\n}\n\nfunction formatCoverageLine(\n label: string,\n coverage: WikiGraphArchiveInspectCoverage,\n): string {\n if (coverage.totalChapters === 0 && coverage.totalWords === 0) {\n return `${label}: n/a, no source content`;\n }\n return `${label}: ${coverage.coveredChapters}/${coverage.totalChapters} chapters, ${coverage.coveredWords}/${coverage.totalWords} words, ${coverage.percent}`;\n}\n\nfunction formatInspectImprovement(\n improvement: CLIInspectImprovement,\n): readonly string[] {\n return [\n `${improvement.title}:`,\n ...(improvement.missingChapters === undefined\n ? []\n : [\n ` Missing: ${improvement.missingChapters} chapters / ${improvement.missingWords} words`,\n ]),\n ` Recommendation: ${improvement.recommendation}`,\n ...(improvement.planning === undefined\n ? [` Command: ${improvement.command}`]\n : [\n \" If completing this scope:\",\n ` Command: ${improvement.command}`,\n ` Model: ${improvement.planning.model}`,\n ` Tokens: ${improvement.planning.tokens.input} input / ${improvement.planning.tokens.cacheableInput} cacheable input / ${improvement.planning.tokens.output} output`,\n ` Wait: ${formatGenerationPlanningDuration(improvement.planning.timeSeconds.min)}-${formatGenerationPlanningDuration(improvement.planning.timeSeconds.max)}`,\n ]),\n ];\n}\n\nfunction formatInspectPerformanceHints(\n hints: readonly CLIGenerationPerformanceHint[],\n): readonly string[] {\n if (hints.length === 0) return [];\n return [\n \"Performance hints:\",\n ...hints.flatMap((hint) => [\n ` ${hint.message}`,\n ` Current ${hint.kind}: ${hint.current}; suggested: ${hint.recommended}.`,\n ` Command: ${hint.command}`,\n ]),\n ];\n}\n","import { getWikiGraphSDK } from \"../../../runtime/context.js\";\nimport type { ArchiveOutputContext } from \"./types.js\";\n\nexport async function createOutputContinuationCursor(\n context: ArchiveOutputContext,\n cursor: string | null | undefined,\n): Promise<string | null> {\n if (context.continuationCursorIsDurable === true) return cursor ?? null;\n return await getWikiGraphSDK().continuations.create(context, cursor);\n}\n","export function formatScoredLines(\n score: number | undefined,\n lines: readonly string[],\n): string[] {\n return score === undefined ? [...lines] : [`score: ${score}`, ...lines];\n}\n","import type { ArchiveOutputSource } from \"../object/types.js\";\n\nexport function formatSourceObject(source: ArchiveOutputSource): string {\n return formatSourceCitationBlock(source.uri, source.text);\n}\n\nexport function formatSourceCitationBlock(uri: string, text: string): string {\n return [`@@ ${uri} @@`, normalizeSourceText(text)].join(\"\\n\");\n}\n\nfunction normalizeSourceText(text: string): string {\n const lines = text.replace(/\\r\\n?/gu, \"\\n\").split(\"\\n\");\n\n while (lines.length > 0 && lines[0]?.trim() === \"\") lines.shift();\n while (lines.length > 0 && lines.at(-1)?.trim() === \"\") lines.pop();\n\n const normalizedLines: string[] = [];\n for (const line of lines) {\n if (line.trim() === \"\" && normalizedLines.at(-1) === \"\") continue;\n normalizedLines.push(line.trim() === \"\" ? \"\" : line);\n }\n\n return normalizedLines.join(\"\\n\");\n}\n","import { type ArchiveEvidenceItem } from \"wiki-graph-sdk\";\nimport { CLI_PRIMARY_COMMAND } from \"../../../support/command.js\";\n\nimport type { ArchiveOutputEvidencePreview } from \"../object/types.js\";\nimport { formatScoredLines } from \"./lines.js\";\nimport { formatSourceCitationBlock, formatSourceObject } from \"./source.js\";\n\nexport function formatEvidenceNextCursor(nextCursor: string | null): string {\n return nextCursor === null\n ? \"\"\n : `\\n\\nNext page: ${CLI_PRIMARY_COMMAND} next ${nextCursor}`;\n}\n\nexport function formatEvidenceItem(item: ArchiveEvidenceItem): string {\n return formatScoredLines(\n item.score,\n formatSourceCitationBlock(item.id, item.source).split(\"\\n\"),\n ).join(\"\\n\");\n}\n\nexport function formatEvidencePreviewBlocks(\n evidence: ArchiveOutputEvidencePreview,\n): string[] {\n if (evidence.sources.length === 0) {\n return [\"[none]\"];\n }\n\n const lines = evidence.sources.flatMap((item, index) => [\n ...(index === 0 ? [] : [\"\"]),\n `-- evidence ${index + 1}/${evidence.shown}`,\n formatSourceObject(item),\n ]);\n const hiddenEvidenceCount = evidence.total - evidence.shown;\n\n lines.push(\n ...formatEvidencePreviewContinuation(evidence, hiddenEvidenceCount),\n );\n return lines;\n}\n\nexport function formatEvidencePreviewContinuation(\n evidence: ArchiveOutputEvidencePreview,\n hiddenEvidenceCount: number,\n): string[] {\n if (evidence.nextCursor !== null) {\n return [\n \"\",\n `${hiddenEvidenceCount} more evidence: ${CLI_PRIMARY_COMMAND} next ${evidence.nextCursor}`,\n ];\n }\n\n return hiddenEvidenceCount > 0\n ? [\"\", `${hiddenEvidenceCount} evidence more...`]\n : [];\n}\n","import type { ArchiveFindResult } from \"wiki-graph-sdk\";\nimport { CLI_PRIMARY_COMMAND } from \"../../../support/command.js\";\n\nexport function formatNextCursor(nextCursor: string | null): string {\n if (nextCursor === null) {\n return \"\";\n }\n\n return `\\n\\nNext page: ${CLI_PRIMARY_COMMAND} next ${nextCursor}`;\n}\n\nexport function formatNoMatches(result: ArchiveFindResult): string {\n if (result.match === \"all\" && result.terms.length > 1) {\n return `No matches. Try a more specific scope URI, for example: ${CLI_PRIMARY_COMMAND} <archive-uri>/chunk --query \"${result.query}\"${formatFindLensHint(result)}\\n`;\n }\n\n const lines = [\n \"No matches.\",\n \"Try fewer or broader keywords, or use --query on a scope URI such as `<archive-uri>/chapter`, `<archive-uri>/chunk`, `<archive-uri>/entity`, or `<archive-uri>/triple`.\",\n ];\n\n if (result.lensHint !== null) {\n lines.push(`Lens hint: ${result.lensHint.message}`);\n }\n\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nexport function formatFindLensHint(result: ArchiveFindResult): string {\n if (result.lensHint === null) {\n return \"\";\n }\n\n return `\\n\\nLens hint: ${result.lensHint.message}`;\n}\n","export function isTextStreamOutputType(type: string | undefined): boolean {\n return type === \"source\" || type === \"summary\";\n}\n\nexport function getTextStreamOutputType(\n uri: string,\n): \"source\" | \"summary\" | undefined {\n const match = /^wikg:\\/\\/chapter\\/.+\\/(source|summary)(?:#.*)?$/u.exec(uri);\n\n return match?.[1] as \"source\" | \"summary\" | undefined;\n}\n\nexport function toWikiGraphUri(id: string): string {\n const [type, first, second] = id.split(\":\");\n\n switch (type) {\n case \"chapter\":\n return `wikg://chapter/${first ?? \"\"}`;\n case \"chapter-title\":\n return `wikg://chapter/${first ?? \"\"}/title`;\n case \"fragment\":\n return `wikg://chapter/${first ?? \"\"}/source/${second ?? \"0\"}`;\n case \"meta\":\n return \"wikg://\";\n case \"node\":\n return `wikg://chunk/${first ?? \"\"}`;\n case \"summary\":\n return `wikg://chapter/${first ?? \"\"}/summary`;\n default:\n return id;\n }\n}\n","import type { QueryIndexScope } from \"wiki-graph-sdk\";\nimport type { CLIArchiveArguments } from \"../../../args/index.js\";\n\nexport type ResultFormat = \"json\" | \"jsonl\" | \"text\";\n\nexport const DEFAULT_GET_EVIDENCE_LIMIT = 3;\nexport const PLAIN_OBJECT_KEY_PRIORITY = [\n \"uri\",\n \"digest\",\n \"mediaType\",\n \"name\",\n \"identifier\",\n \"locator\",\n \"title\",\n \"label\",\n \"labels\",\n \"state\",\n \"value\",\n \"authors\",\n \"publisher\",\n \"description\",\n] as const;\n\nexport interface ArchiveOutputObject {\n readonly archiveId?: number;\n readonly authors?: readonly string[];\n readonly backlinks?: ArchiveOutputBacklinks;\n readonly description?: string;\n readonly digest?: string;\n readonly evidence?: ArchiveOutputEvidencePreview;\n readonly label?: string;\n readonly identifier?: string;\n readonly libraryArchiveUri?: string;\n readonly locator?: Readonly<Record<string, unknown>>;\n readonly mediaType?: string;\n readonly name?: string;\n readonly objectLabel?: string;\n readonly predicate?: string;\n readonly publisher?: string;\n readonly score?: number;\n readonly state?: Record<string, string>;\n readonly subjectLabel?: string;\n readonly sources?: readonly ArchiveOutputLibrarySource[];\n readonly text?: string;\n readonly title?: string;\n readonly type?: string;\n readonly uri: string;\n readonly value?: string;\n}\n\nexport interface ArchiveOutputLibrarySource {\n readonly archiveId: number;\n readonly libraryArchiveUri: string;\n}\n\nexport interface ArchiveOutputBacklinks {\n readonly chunks: ArchiveOutputResultPage;\n readonly entities: ArchiveOutputResultPage;\n readonly triples: ArchiveOutputResultPage;\n}\n\nexport interface ArchiveOutputResultPage {\n readonly limit: number;\n readonly libraryQuery?: \"archive-members\" | \"objects\";\n readonly nextCursor: string | null;\n readonly objects: readonly ArchiveOutputObject[];\n readonly warnings?: readonly ArchiveOutputWarning[];\n}\n\nexport interface ArchiveOutputWarning {\n readonly message: string;\n readonly type: \"skip-unindexed\";\n}\n\nexport interface ArchiveOutputEvidencePreview {\n readonly nextCursor: string | null;\n readonly shown: number;\n readonly sources: readonly ArchiveOutputSource[];\n readonly total: number;\n}\n\nexport interface ArchiveOutputSource {\n readonly archiveId?: number;\n readonly libraryArchiveUri?: string;\n readonly score?: number;\n readonly text: string;\n readonly uri: string;\n}\n\nexport interface ArchiveOutputContext {\n readonly archiveKey: string;\n readonly archivePath: string;\n readonly backlinks?: boolean;\n readonly chapters?: readonly number[];\n readonly continuationKind?:\n | \"collection\"\n | \"evidence\"\n | \"related\"\n | \"search\"\n | \"source-locators\";\n readonly continuationCursorIsDurable?: boolean;\n readonly evidenceDisabled?: boolean;\n readonly evidenceLimit?: number;\n readonly format: ResultFormat;\n readonly ids?: readonly string[];\n readonly indexScope: QueryIndexScope;\n readonly limit: number;\n readonly order?: \"doc-asc\" | \"doc-desc\";\n readonly query?: string;\n readonly role?: CLIArchiveArguments[\"role\"];\n readonly skipUnindexed?: boolean;\n readonly sourceContext?: number;\n readonly targetUri?: string;\n readonly triplePattern?: CLIArchiveArguments[\"triplePattern\"];\n readonly types: readonly string[] | null;\n}\n","import { formatCLIJSON } from \"../../../support/index.js\";\nimport { PLAIN_OBJECT_KEY_PRIORITY } from \"../object/types.js\";\n\nexport function formatPlainObject(value: unknown): string {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return String(value);\n }\n\n return Object.entries(value)\n .filter(([, item]) => item !== undefined && item !== null)\n .sort(([left], [right]) => comparePlainObjectKeys(left, right))\n .map(([key, item]) => `${key}: ${formatPlainValue(item)}`)\n .join(\"\\n\");\n}\n\nexport function formatStatePageText(value: unknown): string {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return String(value);\n }\n\n const object = value as {\n readonly state?: Record<string, string>;\n readonly uri?: string;\n readonly value?: string;\n };\n\n if (object.value !== undefined) {\n return `${object.uri ?? \"state\"} ${object.value}`;\n }\n\n if (object.state !== undefined) {\n return [object.uri, formatStateBlock(object.state)]\n .filter((line): line is string => line !== undefined && line !== \"\")\n .join(\"\\n\");\n }\n\n return formatPlainObject(value);\n}\n\nfunction formatStateBlock(state: Record<string, string>): string {\n return formatStateEntries(state)\n .map(([key, value]) => `${key}: ${value}`)\n .join(\"\\n\");\n}\n\nexport function formatStateInline(state: Record<string, string>): string {\n return formatStateEntries(state)\n .map(([key, value]) => `${key}:${value}`)\n .join(\" \");\n}\n\nfunction formatStateEntries(\n state: Record<string, string>,\n): readonly (readonly [string, string])[] {\n const entries: readonly (readonly [string, string | undefined])[] = [\n [\"source\", state.source],\n [\"reading-graph\", state[\"reading-graph\"]],\n [\"reading-summary\", state[\"reading-summary\"]],\n [\"knowledge-graph\", state[\"knowledge-graph\"]],\n ];\n\n return entries.filter(\n (entry): entry is readonly [string, string] => entry[1] !== undefined,\n );\n}\n\nfunction comparePlainObjectKeys(left: string, right: string): number {\n return getPlainObjectKeyOrder(left) - getPlainObjectKeyOrder(right);\n}\n\nfunction getPlainObjectKeyOrder(key: string): number {\n const index = PLAIN_OBJECT_KEY_PRIORITY.indexOf(\n key as (typeof PLAIN_OBJECT_KEY_PRIORITY)[number],\n );\n\n return index < 0 ? PLAIN_OBJECT_KEY_PRIORITY.length : index;\n}\n\nfunction formatPlainValue(value: unknown): string {\n if (Array.isArray(value)) {\n return value.map((item) => String(item)).join(\", \");\n }\n if (typeof value === \"object\" && value !== null) {\n return formatCLIJSON(value).trimEnd();\n }\n\n return String(value);\n}\n","import {\n formatWikiGraphCommandUri,\n parseLocatedWikiGraphUri,\n} from \"../../../support/index.js\";\n\nimport { formatCliCommand } from \"../../../support/index.js\";\nimport type {\n ArchiveOutputBacklinks,\n ArchiveOutputContext,\n ArchiveOutputObject,\n} from \"../object/types.js\";\nimport { getTextStreamOutputType } from \"../object/uri.js\";\nimport { formatEvidencePreviewContinuation } from \"./evidence.js\";\nimport { formatScoredLines } from \"./lines.js\";\nimport { formatPlainObject, formatStateInline } from \"./plain.js\";\nimport { formatSourceObject } from \"./source.js\";\n\nexport function formatFindObject(object: ArchiveOutputObject): string {\n const lines = formatScoredLines(\n object.score,\n formatObjectSummaryLines(object),\n );\n\n if (object.evidence !== undefined && object.evidence.sources.length > 0) {\n lines.push(\n \"\",\n ...object.evidence.sources.flatMap((source, index) => [\n ...(index === 0 ? [] : [\"\"]),\n `-- evidence ${index + 1}/${object.evidence?.shown ?? object.evidence?.sources.length}`,\n formatSourceObject(source),\n ]),\n );\n\n const hiddenEvidenceCount = object.evidence.total - object.evidence.shown;\n\n lines.push(\n ...formatEvidencePreviewContinuation(\n object.evidence,\n hiddenEvidenceCount,\n ),\n );\n }\n\n if (object.backlinks !== undefined) {\n lines.push(\"\", ...formatBacklinkLines(object.backlinks));\n }\n\n return lines.join(\"\\n\");\n}\n\nexport function formatOpenShortUriHint(\n objects: readonly ArchiveOutputObject[],\n context: ArchiveOutputContext,\n): string {\n const shortObject = objects.find((object) => isShortOutputUri(object.uri));\n if (shortObject === undefined) {\n return \"\";\n }\n\n const locator = shortObject.libraryArchiveUri ?? context.archivePath;\n\n return `\\n\\nOpen short URIs with the archive locator, for example:\\n ${formatCliCommand([formatOpenShortUriCommand(locator, shortObject.uri)])}`;\n}\n\nfunction formatOpenShortUriCommand(locator: string, objectUri: string): string {\n if (locator.startsWith(\"wikg://lib/\")) {\n return `${locator.replace(/\\/+$/u, \"\")}/${objectUri.slice(\"wikg://\".length)}`;\n }\n\n return formatWikiGraphCommandUri(locator, objectUri);\n}\n\nfunction isShortOutputUri(uri: string): boolean {\n return (\n uri.startsWith(\"wikg://\") &&\n parseLocatedWikiGraphUri(uri).archivePath === undefined\n );\n}\n\nfunction formatBacklinkLines(backlinks: ArchiveOutputBacklinks): string[] {\n const lines = [\n ...backlinks.chunks.objects,\n ...backlinks.entities.objects,\n ...backlinks.triples.objects,\n ].flatMap((object, index) => [\n ...(index === 0 ? [] : [\"\"]),\n formatFindObject(object),\n ]);\n\n return lines.length === 0 ? [] : [\"Backlinks:\", \"\", ...lines];\n}\n\nfunction formatObjectSummaryLines(object: ArchiveOutputObject): string[] {\n const sourceLines = formatLibrarySourceLines(object);\n\n if (\n getTextStreamOutputType(object.uri) !== undefined &&\n object.text !== undefined\n ) {\n return [\n ...formatSourceObject({\n text: object.text,\n uri: object.uri,\n }).split(\"\\n\"),\n ...sourceLines,\n ];\n }\n\n if (object.predicate !== undefined) {\n return [object.uri, formatTripleObjectLabel(object), ...sourceLines];\n }\n\n if (isChapterStateListObject(object)) {\n return [\n [object.uri, object.title, formatStateInline(object.state)]\n .filter((part): part is string => part !== undefined && part !== \"\")\n .join(\" \"),\n ...sourceLines,\n ];\n }\n\n return [\n object.uri,\n object.title,\n object.label,\n object.state === undefined ? undefined : formatStateInline(object.state),\n object.evidence === undefined ? object.text : undefined,\n ...sourceLines,\n ].filter((line): line is string => line !== undefined && line !== \"\");\n}\n\nfunction formatLibrarySourceLines(object: ArchiveOutputObject): string[] {\n const sources =\n object.sources !== undefined && object.sources.length > 0\n ? object.sources\n : object.archiveId === undefined && object.libraryArchiveUri === undefined\n ? []\n : [\n {\n archiveId: object.archiveId,\n libraryArchiveUri: object.libraryArchiveUri,\n },\n ];\n\n return sources.map((source) =>\n [\n source.archiveId === undefined\n ? undefined\n : `archiveId:${source.archiveId}`,\n source.libraryArchiveUri,\n ]\n .filter((part): part is string => part !== undefined)\n .join(\" \"),\n );\n}\n\nexport function getListObjectSeparator(\n objects: readonly ArchiveOutputObject[],\n): string {\n return objects.every(isChapterStateListObject) ? \"\\n\" : \"\\n\\n\";\n}\n\nfunction isChapterStateListObject(\n object: ArchiveOutputObject,\n): object is ArchiveOutputObject & {\n readonly state: Record<string, string>;\n} {\n return (\n object.state !== undefined &&\n object.uri.startsWith(\"wikg://chapter/\") &&\n !object.uri.includes(\"/state\")\n );\n}\n\nfunction formatTripleObjectLabel(object: ArchiveOutputObject): string {\n const triple = parseTripleOutputUri(object.uri);\n\n if (triple === undefined) {\n return `${object.subjectLabel ?? \"[subject]\"} ${object.predicate ?? \"[predicate]\"} ${object.objectLabel ?? \"[object]\"}`;\n }\n\n return `${object.subjectLabel ?? triple.subjectQid}(${triple.subjectQid}) ${object.predicate ?? triple.predicate} ${object.objectLabel ?? triple.objectQid}(${triple.objectQid})`;\n}\n\nfunction parseTripleOutputUri(uri: string):\n | {\n readonly objectQid: string;\n readonly predicate: string;\n readonly subjectQid: string;\n }\n | undefined {\n const match =\n /^wikg:\\/\\/triple\\/(Q[1-9][0-9]*)\\/([^/]+)\\/(Q[1-9][0-9]*)\\/?$/u.exec(uri);\n\n if (\n match?.[1] === undefined ||\n match[2] === undefined ||\n match[3] === undefined\n ) {\n return undefined;\n }\n\n return {\n objectQid: match[3],\n predicate: decodeURIComponent(match[2]),\n subjectQid: match[1],\n };\n}\n\nexport function formatChapterObjectText(object: ArchiveOutputObject): string {\n if (isChapterStateListObject(object)) {\n return formatObjectSummaryLines(object).join(\"\\n\");\n }\n\n return formatPlainObject(object);\n}\n","import type {\n ArchiveBacklinkBucket,\n ArchiveBacklinks,\n ArchiveEvidenceItem,\n ArchiveFindEvidencePreview,\n ArchiveFindHit,\n ArchiveListItem,\n ArchivePack,\n ArchivePage,\n} from \"wiki-graph-sdk\";\n\nimport { createOutputContinuationCursor } from \"./cursor.js\";\nimport type {\n ArchiveOutputBacklinks,\n ArchiveOutputContext,\n ArchiveOutputEvidencePreview,\n ArchiveOutputObject,\n ArchiveOutputResultPage,\n ArchiveOutputSource,\n ArchiveOutputWarning,\n} from \"./types.js\";\nimport {\n getTextStreamOutputType,\n isTextStreamOutputType,\n toWikiGraphUri,\n} from \"./uri.js\";\n\nexport async function createListObject(\n item: ArchiveListItem,\n context: ArchiveOutputContext,\n): Promise<ArchiveOutputObject> {\n const librarySource = createLibrarySourceObject(item);\n\n if (item.type === \"triple\") {\n return {\n ...librarySource,\n ...(context.evidenceLimit === undefined || item.evidence === undefined\n ? {}\n : {\n evidence: await createEvidencePreviewObject(item.evidence, {\n ...context,\n continuationKind: \"evidence\",\n targetUri: toWikiGraphUri(item.id),\n }),\n }),\n objectLabel: item.objectLabel,\n predicate: item.predicate,\n ...(item.score === undefined ? {} : { score: item.score }),\n subjectLabel: item.subjectLabel,\n uri: toWikiGraphUri(item.id),\n };\n }\n\n return {\n ...librarySource,\n ...(context.evidenceLimit === undefined || item.evidence === undefined\n ? {}\n : {\n evidence: await createEvidencePreviewObject(item.evidence, {\n ...context,\n continuationKind: \"evidence\",\n targetUri: toWikiGraphUri(item.id),\n }),\n }),\n label: item.label,\n ...(item.score === undefined ? {} : { score: item.score }),\n ...(isTextStreamOutputType(item.type)\n ? { text: item.summary }\n : { type: item.type }),\n uri: toWikiGraphUri(item.id),\n };\n}\n\nexport function createObjectResultPage(\n objects: readonly ArchiveOutputObject[],\n nextCursor: string | null,\n limit: number,\n warnings: readonly ArchiveOutputWarning[] = [],\n): {\n readonly limit: number;\n readonly nextCursor: string | null;\n readonly objects: readonly ArchiveOutputObject[];\n readonly warnings?: readonly ArchiveOutputWarning[];\n} {\n return {\n limit,\n nextCursor,\n objects,\n ...(warnings.length === 0 ? {} : { warnings }),\n };\n}\n\nexport async function createFindObject(\n hit: ArchiveFindHit,\n context: ArchiveOutputContext,\n): Promise<ArchiveOutputObject> {\n const uri = toWikiGraphUri(hit.id);\n const librarySource = createLibrarySourceObject(hit);\n\n if (hit.type === \"chapter\") {\n return {\n ...librarySource,\n ...(hit.state === undefined ? {} : { state: hit.state }),\n title: hit.title,\n uri,\n };\n }\n if (hit.type === \"chapter-title\") {\n return {\n ...librarySource,\n title: hit.title,\n type: \"chapter-title\",\n uri,\n };\n }\n if (hit.type === \"meta\") {\n return {\n ...librarySource,\n text: hit.snippet,\n title: hit.title,\n type: \"meta\",\n uri,\n };\n }\n if (hit.type === \"triple\") {\n const triple = hit.triple;\n\n return {\n ...librarySource,\n ...(hit.backlinks === undefined\n ? {}\n : { backlinks: await createBacklinksObject(hit.backlinks, context) }),\n ...(context.evidenceLimit === undefined || hit.evidence === undefined\n ? {}\n : {\n evidence: await createEvidencePreviewObject(hit.evidence, {\n ...context,\n continuationKind: \"evidence\",\n targetUri: uri,\n }),\n }),\n objectLabel: triple?.objectLabel ?? \"\",\n predicate: triple?.predicate ?? \"\",\n subjectLabel: triple?.subjectLabel ?? \"\",\n uri,\n };\n }\n\n return {\n ...librarySource,\n ...(hit.backlinks === undefined\n ? {}\n : { backlinks: await createBacklinksObject(hit.backlinks, context) }),\n ...(context.evidenceLimit === undefined || hit.evidence === undefined\n ? {}\n : {\n evidence: await createEvidencePreviewObject(hit.evidence, {\n ...context,\n continuationKind: \"evidence\",\n targetUri: uri,\n }),\n }),\n label: hit.title,\n ...(isTextStreamOutputType(hit.type)\n ? { text: hit.snippet }\n : { type: hit.type === \"node\" ? \"chunk\" : hit.type }),\n uri,\n };\n}\n\nexport async function createEvidencePreviewObject(\n evidence: ArchiveFindEvidencePreview,\n context: ArchiveOutputContext,\n): Promise<ArchiveOutputEvidencePreview> {\n return {\n nextCursor: await createOutputContinuationCursor(\n {\n ...context,\n continuationKind: \"evidence\",\n },\n evidence.nextCursor,\n ),\n shown: evidence.shown,\n sources: evidence.sources.map(createSourceObject),\n total: evidence.total,\n };\n}\n\nexport function createSourceObject(\n item: ArchiveEvidenceItem,\n): ArchiveOutputSource {\n return {\n ...createLibrarySourceObject(item),\n ...(item.score === undefined ? {} : { score: item.score }),\n text: item.source,\n uri: item.id,\n };\n}\n\nasync function createBacklinksObject(\n backlinks: ArchiveBacklinks,\n context: ArchiveOutputContext,\n): Promise<ArchiveOutputBacklinks> {\n return {\n chunks: await createBacklinkBucketObject(backlinks.chunks, context),\n entities: await createBacklinkBucketObject(backlinks.entities, context),\n triples: await createBacklinkBucketObject(backlinks.triples, context),\n };\n}\n\nasync function createBacklinkBucketObject(\n bucket: ArchiveBacklinkBucket,\n context: ArchiveOutputContext,\n): Promise<ArchiveOutputResultPage> {\n const objects = await Promise.all(\n bucket.items.map(\n async (item) =>\n await createFindObject(item, {\n ...context,\n backlinks: false,\n }),\n ),\n );\n\n return createObjectResultPage(objects, bucket.nextCursor, bucket.limit);\n}\n\nexport async function createPageObject(\n page: ArchivePage,\n context: ArchiveOutputContext,\n): Promise<unknown> {\n const librarySource = createLibrarySourceObject(page);\n\n switch (page.type) {\n case \"artifact\": {\n const { id: _id, type: _type, ...rest } = page;\n\n return { ...librarySource, ...rest, uri: page.id };\n }\n case \"entity-wikipage\":\n return {\n ...librarySource,\n en: page.en,\n uri: page.id,\n zh: page.zh,\n };\n case \"entity\":\n return {\n ...librarySource,\n labels: page.labels.slice(0, 7),\n qid: page.qid,\n ...(context.evidenceLimit === undefined\n ? {}\n : {\n evidence: await createEvidencePreviewObject(page.evidence, {\n ...context,\n continuationKind: \"evidence\",\n targetUri: page.id,\n }),\n }),\n uri: page.id,\n };\n case \"triple\":\n return {\n ...librarySource,\n label: page.label,\n ...(context.evidenceLimit === undefined\n ? {}\n : {\n evidence: await createEvidencePreviewObject(page.evidence, {\n ...context,\n continuationKind: \"evidence\",\n targetUri: page.id,\n }),\n }),\n uri: page.id,\n };\n case \"chapter\": {\n return {\n ...librarySource,\n state: page.state,\n title: page.title,\n uri: toWikiGraphUri(page.id),\n };\n }\n case \"chapter-title\":\n return {\n ...librarySource,\n title: page.title,\n type: \"chapter-title\",\n uri: toWikiGraphUri(page.id),\n };\n case \"chapter-tree\": {\n const { id: _id, ...rest } = page;\n\n return { ...librarySource, ...rest, uri: toWikiGraphUri(page.id) };\n }\n case \"fragment\": {\n const {\n backlinks,\n id: _id,\n nextFragmentId,\n previousFragmentId,\n ...rest\n } = page;\n const textStreamType = getTextStreamOutputType(page.id);\n\n if (textStreamType !== undefined) {\n return {\n ...librarySource,\n ...(backlinks === undefined\n ? {}\n : { backlinks: await createBacklinksObject(backlinks, context) }),\n text: page.fragment.text,\n uri: toWikiGraphUri(page.id),\n };\n }\n\n return {\n ...librarySource,\n ...rest,\n ...(backlinks === undefined\n ? {}\n : { backlinks: await createBacklinksObject(backlinks, context) }),\n ...(nextFragmentId === undefined\n ? {}\n : { nextUri: toWikiGraphUri(nextFragmentId) }),\n ...(previousFragmentId === undefined\n ? {}\n : { previousUri: toWikiGraphUri(previousFragmentId) }),\n uri: toWikiGraphUri(page.id),\n };\n }\n case \"meta\": {\n const { id: _id, type: _type, ...rest } = page;\n\n return { ...librarySource, ...rest, uri: toWikiGraphUri(page.id) };\n }\n case \"state\": {\n if (\"state\" in page) {\n return {\n ...librarySource,\n ...page.state,\n uri: toWikiGraphUri(page.id),\n };\n }\n\n return {\n ...librarySource,\n uri: toWikiGraphUri(page.id),\n value: page.value,\n };\n }\n case \"node\": {\n const { id: _id, ...rest } = page;\n\n return { ...librarySource, ...rest, uri: toWikiGraphUri(page.id) };\n }\n case \"summary\": {\n const { id: _id, ...rest } = page;\n\n return { ...librarySource, ...rest, uri: toWikiGraphUri(page.id) };\n }\n }\n}\n\nfunction createLibrarySourceObject(source: {\n readonly archiveId?: number;\n readonly libraryArchiveUri?: string;\n readonly sources?: readonly {\n readonly archiveId: number;\n readonly libraryArchiveUri: string;\n }[];\n}): Pick<ArchiveOutputObject, \"archiveId\" | \"libraryArchiveUri\" | \"sources\"> {\n return {\n ...(source.archiveId === undefined ? {} : { archiveId: source.archiveId }),\n ...(source.libraryArchiveUri === undefined\n ? {}\n : { libraryArchiveUri: source.libraryArchiveUri }),\n ...(source.sources === undefined ? {} : { sources: source.sources }),\n };\n}\n\nexport async function createPackObject(\n pack: ArchivePack,\n context: ArchiveOutputContext,\n): Promise<{\n readonly anchor: unknown;\n readonly related: {\n readonly limit: number;\n readonly nextCursor: string | null;\n readonly objects: readonly ArchiveOutputObject[];\n };\n}> {\n const relatedObjects = await Promise.all(\n pack.related.map(async (item) => await createListObject(item, context)),\n );\n\n return {\n anchor: await createPageObject(pack.anchor, context),\n related: createObjectResultPage(\n relatedObjects,\n null,\n relatedObjects.length,\n ),\n };\n}\n","import type { ArchiveFindEvidencePreview, ArchivePage } from \"wiki-graph-sdk\";\n\nimport {\n formatCLIJSON,\n formatCliCommand,\n formatWikiGraphCommandUri,\n} from \"../../../support/index.js\";\nimport {\n createEvidencePreviewObject,\n createPageObject,\n} from \"../object/objects.js\";\nimport type { ArchiveOutputContext } from \"../object/types.js\";\nimport { toWikiGraphUri } from \"../object/uri.js\";\nimport { formatEvidencePreviewBlocks } from \"./evidence.js\";\nimport { formatPlainObject } from \"./plain.js\";\n\nexport async function formatEvidenceBackedPageText(\n uri: string,\n label: string,\n evidence: ArchiveFindEvidencePreview,\n context: ArchiveOutputContext,\n): Promise<string> {\n if (context.evidenceLimit === undefined) {\n return [`${uri}`, label].join(\"\\n\");\n }\n\n return [\n `${uri}`,\n label,\n \"\",\n \"Evidence:\",\n ...formatEvidencePreviewBlocks(\n await createEvidencePreviewObject(evidence, {\n ...context,\n continuationKind: \"evidence\",\n targetUri: uri,\n }),\n ),\n ].join(\"\\n\");\n}\n\nexport function appendEntityNextSteps(\n text: string,\n uri: string,\n archivePath: string,\n): string {\n if (!isEntityOutputUri(uri)) {\n return text;\n }\n const entityUri = formatWikiGraphCommandUri(\n archivePath,\n uri.replace(/\\/$/u, \"\"),\n );\n\n return [\n text,\n \"\",\n \"Next:\",\n ` ${formatCliCommand([entityUri, \"evidence\"])}`,\n ` ${formatCliCommand([entityUri, \"related\"])}`,\n ` ${formatCliCommand([`${entityUri}/wikipage`])}`,\n ].join(\"\\n\");\n}\n\nfunction isEntityOutputUri(uri: string): boolean {\n return /^wikg:\\/\\/(?:chapter\\/[1-9][0-9]*\\/)?entity\\/Q[1-9][0-9]*\\/?$/u.test(\n uri,\n );\n}\n\nexport function formatEntityWikipageText(\n page: Extract<ArchivePage, { readonly type: \"entity-wikipage\" }>,\n): string {\n return [\n page.id,\n \"\",\n ...formatEntityWikipageLocaleLines(\"zh\", page.zh),\n \"\",\n ...formatEntityWikipageLocaleLines(\"en\", page.en),\n ].join(\"\\n\");\n}\n\nfunction formatEntityWikipageLocaleLines(\n language: \"en\" | \"zh\",\n locale: Extract<ArchivePage, { readonly type: \"entity-wikipage\" }>[\n | \"en\"\n | \"zh\"],\n): readonly string[] {\n if (locale === null) {\n return [`${language}: [missing]`];\n }\n\n return [\n `${locale.label} ${locale.url}`,\n ...(locale.description === undefined ? [] : [locale.description]),\n ];\n}\n\nexport function formatNeighborLines(\n neighbors: Extract<ArchivePage, { readonly type: \"node\" }>[\"neighbors\"],\n): string[] {\n if (neighbors.length === 0) {\n return [\" [none]\"];\n }\n\n return neighbors.map((neighbor) => {\n const arrow = neighbor.direction === \"incoming\" ? \"<-\" : \"->\";\n\n return ` ${arrow} ${toWikiGraphUri(`node:${neighbor.node.id}`)} ${neighbor.node.label}`;\n });\n}\n\nexport function formatNodeLabels(\n nodes: readonly { readonly id: string; readonly title: string }[],\n): string[] {\n if (nodes.length === 0) {\n return [\" [none]\"];\n }\n\n return nodes.map((node) => ` ${node.id} ${node.title}`);\n}\n\nexport function formatSourceFragmentLines(\n fragments: Extract<ArchivePage, { readonly type: \"node\" }>[\"sourceFragments\"],\n): string[] {\n if (fragments.length === 0) {\n return [\" [none]\"];\n }\n\n return fragments.flatMap((fragment) => [\n ` ${fragment.id}${fragment.truncated ? \" [excerpt]\" : \"\"}`,\n ...fragment.text.split(\"\\n\").map((line) => ` ${line}`),\n ]);\n}\n\nexport function formatPosition(\n position:\n | {\n readonly chapter: number;\n readonly fragment?: number;\n }\n | undefined,\n): string {\n if (position === undefined) {\n return \"[unknown]\";\n }\n\n return [\n `chapter ${position.chapter}`,\n position.fragment === undefined\n ? undefined\n : `fragment ${position.fragment}`,\n ]\n .filter((part): part is string => part !== undefined)\n .join(\", \");\n}\n\nexport async function formatPackAnchor(\n anchor: ArchivePage,\n context: ArchiveOutputContext,\n): Promise<string> {\n switch (anchor.type) {\n case \"artifact\":\n return formatPlainObject(await createPageObject(anchor, context));\n case \"chapter-title\":\n case \"chapter\":\n return formatPlainObject(await createPageObject(anchor, context));\n case \"chapter-tree\":\n return `${anchor.id} ${anchor.title}\\n${formatCLIJSON(anchor.tree).trimEnd()}`;\n case \"fragment\":\n return `${anchor.id}\\n${anchor.fragment.text}`;\n case \"meta\":\n return formatPlainObject(await createPageObject(anchor, context));\n case \"state\":\n return formatPlainObject(await createPageObject(anchor, context));\n case \"node\":\n return [\n `${anchor.id} ${anchor.title}`,\n \"\",\n \"Generated Node Summary:\",\n anchor.generatedNodeSummary,\n \"\",\n \"Source Fragments:\",\n ...formatSourceFragmentLines(anchor.sourceFragments),\n ].join(\"\\n\");\n case \"summary\":\n return `${anchor.id} ${anchor.title}\\n${anchor.content}`;\n case \"entity\":\n return await formatEvidenceBackedPageText(\n anchor.id,\n anchor.label,\n anchor.evidence,\n context,\n );\n case \"entity-wikipage\":\n return formatEntityWikipageText(anchor);\n case \"triple\":\n return await formatEvidenceBackedPageText(\n anchor.id,\n anchor.label,\n anchor.evidence,\n context,\n );\n }\n}\n\nexport function truncateToBudget(text: string, budget: number): string {\n if (text.length <= budget) {\n return text;\n }\n\n return `${text.slice(0, Math.max(0, budget - 20))}\\n[truncated]`;\n}\n","export * from \"./evidence.js\";\nexport * from \"./lens.js\";\nexport * from \"./lines.js\";\nexport * from \"./object.js\";\nexport * from \"./page.js\";\nexport * from \"./plain.js\";\nexport * from \"./source.js\";\n","import {\n formatCLIJSONLine,\n writeTextToStdout,\n} from \"../../../support/index.js\";\n\nexport async function writeJSONL(items: readonly unknown[]): Promise<void> {\n await writeTextToStdout(\n items.map((item) => formatCLIJSONLine(item)).join(\"\") +\n (items.length === 0 ? \"\" : \"\"),\n );\n}\n","export function createPageCursorObject(nextCursor: string | null): {\n readonly nextCursor: string | null;\n readonly type: \"page\";\n} {\n return {\n nextCursor,\n type: \"page\",\n };\n}\n","import type { ArchiveOutputContext } from \"../object/types.js\";\n\nexport function createOutputWarnings(\n context: ArchiveOutputContext,\n): readonly { readonly message: string; readonly type: \"skip-unindexed\" }[] {\n if (context.skipUnindexed !== true) {\n return [];\n }\n\n return [\n {\n message:\n \"--skip-unindexed was used; this command searched only chapters that already have a current FTS or source embedding index artifact. Run `inspect` to check index coverage before treating missing results as missing knowledge.\",\n type: \"skip-unindexed\",\n },\n ];\n}\n\nexport function formatOutputWarnings(\n warnings: readonly { readonly message: string }[],\n): string {\n if (warnings.length === 0) {\n return \"\";\n }\n\n return `${warnings.map((warning) => `Warning: ${warning.message}`).join(\"\\n\")}\\n\\n`;\n}\n\nexport function createWarningJSONLObject(warning: {\n readonly message: string;\n readonly type: \"skip-unindexed\";\n}): {\n readonly message: string;\n readonly type: \"warning\";\n readonly warning: \"skip-unindexed\";\n} {\n return {\n message: warning.message,\n type: \"warning\",\n warning: warning.type,\n };\n}\n","import type { ArchiveEvidence } from \"wiki-graph-sdk\";\n\nimport { formatCLIJSON, writeTextToStdout } from \"../../../support/index.js\";\nimport { createOutputContinuationCursor } from \"../object/cursor.js\";\nimport { formatEvidenceItem, formatEvidenceNextCursor } from \"../text/index.js\";\nimport { writeJSONL } from \"./jsonl.js\";\nimport {\n createObjectResultPage,\n createSourceObject,\n} from \"../object/objects.js\";\nimport { createPageCursorObject } from \"../object/page-cursor.js\";\nimport type { ArchiveOutputContext, ResultFormat } from \"../object/types.js\";\nimport {\n createOutputWarnings,\n createWarningJSONLObject,\n formatOutputWarnings,\n} from \"./warnings.js\";\n\nexport async function writeEvidence(\n evidence: ArchiveEvidence,\n context: ArchiveOutputContext,\n format: ResultFormat,\n): Promise<void> {\n const nextCursor = await createOutputContinuationCursor(\n context,\n evidence.nextCursor,\n );\n const objects = evidence.items.map(createSourceObject);\n const warnings = createOutputWarnings(context);\n\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON(\n createObjectResultPage(objects, nextCursor, evidence.limit, warnings),\n ),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL([\n ...warnings.map(createWarningJSONLObject),\n ...objects,\n createPageCursorObject(nextCursor),\n ]);\n return;\n }\n\n if (evidence.items.length === 0) {\n await writeTextToStdout(`${formatOutputWarnings(warnings)}No evidence.\\n`);\n return;\n }\n\n await writeTextToStdout(\n `${formatOutputWarnings(warnings)}${evidence.items.map(formatEvidenceItem).join(\"\\n\\n\")}${formatEvidenceNextCursor(nextCursor)}\\n`,\n );\n}\n\nexport async function writeAllEvidence(\n readPage: (cursor: string | undefined) => Promise<ArchiveEvidence>,\n initialCursor: string | undefined,\n context: ArchiveOutputContext,\n format: ResultFormat,\n): Promise<void> {\n const pages: ArchiveEvidence[] = [];\n let cursor = initialCursor;\n\n while (true) {\n const page = await readPage(cursor);\n\n if (format === \"jsonl\") {\n await writeEvidenceWithoutContinuation(page, context, format, {\n emitWarnings: cursor === initialCursor,\n });\n } else {\n pages.push(page);\n }\n\n if (page.nextCursor === null) {\n break;\n }\n\n cursor = page.nextCursor;\n }\n\n if (format === \"jsonl\") {\n return;\n }\n\n await writeEvidenceWithoutContinuation(\n mergeEvidencePages(pages),\n context,\n format,\n );\n}\n\nexport async function writeEvidenceWithoutContinuation(\n evidence: ArchiveEvidence,\n context: ArchiveOutputContext,\n format: ResultFormat,\n options: { readonly emitWarnings?: boolean } = {},\n): Promise<void> {\n const objects = evidence.items.map(createSourceObject);\n const warnings =\n (options.emitWarnings ?? true) ? createOutputWarnings(context) : [];\n\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON(\n createObjectResultPage(objects, null, evidence.limit, warnings),\n ),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL([...warnings.map(createWarningJSONLObject), ...objects]);\n return;\n }\n\n if (evidence.items.length === 0) {\n await writeTextToStdout(`${formatOutputWarnings(warnings)}No evidence.\\n`);\n return;\n }\n\n await writeTextToStdout(\n `${formatOutputWarnings(warnings)}${evidence.items.map(formatEvidenceItem).join(\"\\n\\n\")}\\n`,\n );\n}\n\nfunction mergeEvidencePages(\n pages: readonly ArchiveEvidence[],\n): ArchiveEvidence {\n const [first] = pages;\n\n if (first === undefined) {\n throw new Error(\"Internal error: no evidence pages were loaded.\");\n }\n\n return {\n ...first,\n items: pages.flatMap((page) => page.items),\n limit: pages.reduce((total, page) => total + page.items.length, 0),\n nextCursor: null,\n };\n}\n","import type { ArchiveFindResult } from \"wiki-graph-sdk\";\n\nimport { formatCLIJSON, writeTextToStdout } from \"../../../support/index.js\";\nimport { createOutputContinuationCursor } from \"../object/cursor.js\";\nimport {\n formatFindLensHint,\n formatFindObject,\n formatNextCursor,\n formatNoMatches,\n formatOpenShortUriHint,\n getListObjectSeparator,\n} from \"../text/index.js\";\nimport { writeJSONL } from \"./jsonl.js\";\nimport { createFindObject, createObjectResultPage } from \"../object/objects.js\";\nimport { createPageCursorObject } from \"../object/page-cursor.js\";\nimport type { ArchiveOutputContext, ResultFormat } from \"../object/types.js\";\nimport {\n createOutputWarnings,\n createWarningJSONLObject,\n formatOutputWarnings,\n} from \"./warnings.js\";\n\nexport async function writeFindHits(\n result: ArchiveFindResult,\n context: ArchiveOutputContext,\n format: ResultFormat,\n): Promise<void> {\n const objects = await Promise.all(\n result.items.map(async (item) => await createFindObject(item, context)),\n );\n const nextCursor = await createOutputContinuationCursor(\n context,\n result.nextCursor,\n );\n const warnings = createOutputWarnings(context);\n\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON(\n createObjectResultPage(objects, nextCursor, result.limit, warnings),\n ),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL([\n ...warnings.map(createWarningJSONLObject),\n ...objects,\n createPageCursorObject(nextCursor),\n ]);\n return;\n }\n\n if (objects.length === 0) {\n await writeTextToStdout(\n `${formatOutputWarnings(warnings)}${formatNoMatches(result)}`,\n );\n return;\n }\n\n await writeTextToStdout(\n `${formatOutputWarnings(warnings)}${objects\n .map((object) => formatFindObject(object))\n .join(\n getListObjectSeparator(objects),\n )}${formatOpenShortUriHint(objects, context)}${formatNextCursor(nextCursor)}${formatFindLensHint(result)}\\n`,\n );\n}\n\nexport async function writeAllFindHits(\n readPage: (cursor: string | undefined) => Promise<ArchiveFindResult>,\n context: ArchiveOutputContext,\n format: ResultFormat,\n): Promise<void> {\n const pages: ArchiveFindResult[] = [];\n let cursor: string | undefined;\n\n while (true) {\n const page = await readPage(cursor);\n\n if (format === \"jsonl\") {\n await writeFindHitsWithoutContinuation(page, context, format, {\n emitWarnings: cursor === undefined,\n });\n } else {\n pages.push(page);\n }\n\n if (page.nextCursor === null) {\n break;\n }\n\n cursor = page.nextCursor;\n }\n\n if (format === \"jsonl\") {\n return;\n }\n\n const merged = mergeFindResultPages(pages);\n await writeFindHitsWithoutContinuation(merged, context, format);\n}\n\nexport async function writeFindHitsWithoutContinuation(\n result: ArchiveFindResult,\n context: ArchiveOutputContext,\n format: ResultFormat,\n options: { readonly emitWarnings?: boolean } = {},\n): Promise<void> {\n const objects = await Promise.all(\n result.items.map(async (item) => await createFindObject(item, context)),\n );\n const warnings =\n (options.emitWarnings ?? true) ? createOutputWarnings(context) : [];\n\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON(\n createObjectResultPage(objects, null, result.limit, warnings),\n ),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL([...warnings.map(createWarningJSONLObject), ...objects]);\n return;\n }\n\n if (objects.length === 0) {\n await writeTextToStdout(\n `${formatOutputWarnings(warnings)}${formatNoMatches(result)}`,\n );\n return;\n }\n\n await writeTextToStdout(\n `${formatOutputWarnings(warnings)}${objects\n .map((object) => formatFindObject(object))\n .join(getListObjectSeparator(objects))}${formatFindLensHint(result)}\\n`,\n );\n}\n\nfunction mergeFindResultPages(\n pages: readonly ArchiveFindResult[],\n): ArchiveFindResult {\n const [first] = pages;\n\n if (first === undefined) {\n throw new Error(\"Internal error: no result pages were loaded.\");\n }\n\n return {\n ...first,\n items: pages.flatMap((page) => page.items),\n limit: pages.reduce((total, page) => total + page.items.length, 0),\n nextCursor: null,\n };\n}\n","import type { ArchiveRelatedResult } from \"wiki-graph-sdk\";\n\nimport { formatCLIJSON, writeTextToStdout } from \"../../../support/index.js\";\nimport { createOutputContinuationCursor } from \"../object/cursor.js\";\nimport {\n formatFindObject,\n formatNextCursor,\n formatOpenShortUriHint,\n getListObjectSeparator,\n} from \"../text/index.js\";\nimport { writeJSONL } from \"./jsonl.js\";\nimport { createListObject, createObjectResultPage } from \"../object/objects.js\";\nimport { createPageCursorObject } from \"../object/page-cursor.js\";\nimport type { ArchiveOutputContext, ResultFormat } from \"../object/types.js\";\nimport {\n createOutputWarnings,\n createWarningJSONLObject,\n formatOutputWarnings,\n} from \"./warnings.js\";\n\nexport async function writeList(\n result: ArchiveRelatedResult,\n context: ArchiveOutputContext,\n format: ResultFormat,\n): Promise<void> {\n const objects = await Promise.all(\n result.items.map(async (item) => await createListObject(item, context)),\n );\n const nextCursor = await createOutputContinuationCursor(\n context,\n result.nextCursor,\n );\n const warnings = createOutputWarnings(context);\n\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON(\n createObjectResultPage(objects, nextCursor, result.limit, warnings),\n ),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL([\n ...warnings.map(createWarningJSONLObject),\n ...objects,\n createPageCursorObject(nextCursor),\n ]);\n return;\n }\n\n if (objects.length === 0) {\n await writeTextToStdout(`${formatOutputWarnings(warnings)}No objects.\\n`);\n return;\n }\n\n await writeTextToStdout(\n `${formatOutputWarnings(warnings)}${objects.map(formatFindObject).join(getListObjectSeparator(objects))}${formatOpenShortUriHint(objects, context)}${formatNextCursor(nextCursor)}\\n`,\n );\n}\n\nexport async function writeAllRelatedItems(\n readPage: (cursor: string | undefined) => Promise<ArchiveRelatedResult>,\n initialCursor: string | undefined,\n context: ArchiveOutputContext,\n format: ResultFormat,\n): Promise<void> {\n const pages: ArchiveRelatedResult[] = [];\n let cursor = initialCursor;\n\n while (true) {\n const page = await readPage(cursor);\n\n if (format === \"jsonl\") {\n await writeListWithoutContinuation(page, context, format, {\n emitWarnings: cursor === initialCursor,\n });\n } else {\n pages.push(page);\n }\n\n if (page.nextCursor === null) {\n break;\n }\n\n cursor = page.nextCursor;\n }\n\n if (format === \"jsonl\") {\n return;\n }\n\n await writeListWithoutContinuation(mergeRelatedPages(pages), context, format);\n}\n\nexport async function writeListWithoutContinuation(\n result: ArchiveRelatedResult,\n context: ArchiveOutputContext,\n format: ResultFormat,\n options: { readonly emitWarnings?: boolean } = {},\n): Promise<void> {\n const objects = await Promise.all(\n result.items.map(async (item) => await createListObject(item, context)),\n );\n const warnings =\n (options.emitWarnings ?? true) ? createOutputWarnings(context) : [];\n\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON(\n createObjectResultPage(objects, null, result.limit, warnings),\n ),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL([...warnings.map(createWarningJSONLObject), ...objects]);\n return;\n }\n\n if (objects.length === 0) {\n await writeTextToStdout(`${formatOutputWarnings(warnings)}No objects.\\n`);\n return;\n }\n\n await writeTextToStdout(\n `${formatOutputWarnings(warnings)}${objects.map(formatFindObject).join(getListObjectSeparator(objects))}\\n`,\n );\n}\n\nfunction mergeRelatedPages(\n pages: readonly ArchiveRelatedResult[],\n): ArchiveRelatedResult {\n const [first] = pages;\n\n if (first === undefined) {\n throw new Error(\"Internal error: no related pages were loaded.\");\n }\n\n return {\n ...first,\n items: pages.flatMap((page) => page.items),\n limit: pages.reduce((total, page) => total + page.items.length, 0),\n nextCursor: null,\n };\n}\n","import type { ArchivePack } from \"wiki-graph-sdk\";\n\nimport { formatCLIJSON, writeTextToStdout } from \"../../../support/index.js\";\nimport {\n formatFindObject,\n formatPackAnchor,\n truncateToBudget,\n} from \"../text/index.js\";\nimport { writeJSONL } from \"./jsonl.js\";\nimport { createListObject, createPackObject } from \"../object/objects.js\";\nimport { DEFAULT_GET_EVIDENCE_LIMIT } from \"../object/types.js\";\nimport type { ArchiveOutputContext, ResultFormat } from \"../object/types.js\";\n\nexport async function writePack(\n pack: ArchivePack,\n context: ArchiveOutputContext,\n format: ResultFormat,\n): Promise<void> {\n const packContext =\n context.evidenceDisabled === true\n ? context\n : {\n ...context,\n evidenceLimit: context.evidenceLimit ?? DEFAULT_GET_EVIDENCE_LIMIT,\n };\n\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON(await createPackObject(pack, packContext)),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL([await createPackObject(pack, packContext)]);\n return;\n }\n\n const lines = [\n `Pack Budget: ${pack.budget}`,\n \"\",\n \"# Anchor\",\n await formatPackAnchor(pack.anchor, packContext),\n \"\",\n \"# Related\",\n (\n await Promise.all(\n pack.related.map(async (item) =>\n formatFindObject(await createListObject(item, packContext)),\n ),\n )\n ).join(\"\\n\\n\"),\n ];\n\n await writeTextToStdout(\n `${truncateToBudget(lines.join(\"\\n\"), pack.budget)}\\n`,\n );\n}\n","import type { ArchivePage } from \"wiki-graph-sdk\";\n\nimport { formatCLIJSON, writeTextToStdout } from \"../../../support/index.js\";\nimport {\n appendEntityNextSteps,\n formatChapterObjectText,\n formatEntityWikipageText,\n formatEvidenceBackedPageText,\n formatFindObject,\n formatNeighborLines,\n formatNodeLabels,\n formatPlainObject,\n formatPosition,\n formatSourceFragmentLines,\n formatStatePageText,\n} from \"../text/index.js\";\nimport { writeJSONL } from \"./jsonl.js\";\nimport { createPageObject } from \"../object/objects.js\";\nimport type {\n ArchiveOutputContext,\n ArchiveOutputObject,\n ResultFormat,\n} from \"../object/types.js\";\n\nexport async function writePage(\n page: ArchivePage,\n context: ArchiveOutputContext,\n format: ResultFormat,\n): Promise<void> {\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON(await createPageObject(page, context)),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL([await createPageObject(page, context)]);\n return;\n }\n\n switch (page.type) {\n case \"artifact\":\n await writeTextToStdout(\n `${formatPlainObject(await createPageObject(page, context))}\\n`,\n );\n return;\n case \"chapter-title\":\n await writeTextToStdout(\n `${formatPlainObject(await createPageObject(page, context))}\\n`,\n );\n return;\n case \"chapter\":\n await writeTextToStdout(\n `${formatChapterObjectText(\n (await createPageObject(page, context)) as ArchiveOutputObject,\n )}\\n`,\n );\n return;\n case \"meta\":\n await writeTextToStdout(\n `${formatPlainObject(await createPageObject(page, context))}\\n`,\n );\n return;\n case \"state\":\n await writeTextToStdout(\n `${formatStatePageText(await createPageObject(page, context))}\\n`,\n );\n return;\n case \"fragment\":\n if (\n page.id.startsWith(\"wikg://\") &&\n !page.id.includes(\"#\") &&\n page.backlinks === undefined\n ) {\n await writeTextToStdout(`${page.fragment.text}\\n`);\n return;\n }\n if (page.id.startsWith(\"wikg://chapter/\")) {\n await writeTextToStdout(\n `${formatFindObject(\n (await createPageObject(page, context)) as ArchiveOutputObject,\n )}\\n`,\n );\n return;\n }\n await writeTextToStdout(\n [\n `${page.id}`,\n `Words: ${page.fragment.wordsCount}`,\n `Previous: ${page.previousFragmentId ?? \"[none]\"}`,\n `Next: ${page.nextFragmentId ?? \"[none]\"}`,\n \"\",\n page.fragment.text,\n \"\",\n \"Related Nodes:\",\n ...formatNodeLabels(page.nodes),\n ].join(\"\\n\") + \"\\n\",\n );\n return;\n case \"node\":\n await writeTextToStdout(\n [\n `${page.id} ${page.title}`,\n `Chapter: ${page.position === undefined ? \"[unknown]\" : `chapter:${page.position.chapter}`}`,\n `Position: ${formatPosition(page.position)}`,\n \"\",\n \"Generated Node Summary:\",\n page.generatedNodeSummary,\n \"\",\n \"Source Fragments:\",\n ...formatSourceFragmentLines(page.sourceFragments),\n \"\",\n \"Outgoing Nodes:\",\n ...formatNeighborLines(page.outgoing),\n \"\",\n \"Incoming Nodes:\",\n ...formatNeighborLines(page.incoming),\n ].join(\"\\n\") + \"\\n\",\n );\n return;\n case \"summary\":\n await writeTextToStdout(`${page.id} ${page.title}\\n\\n${page.content}\\n`);\n return;\n case \"entity\":\n await writeTextToStdout(\n `${appendEntityNextSteps(\n await formatEvidenceBackedPageText(\n page.id,\n page.label,\n page.evidence,\n context,\n ),\n page.id,\n context.archivePath,\n )}\\n`,\n );\n return;\n case \"entity-wikipage\":\n await writeTextToStdout(`${formatEntityWikipageText(page)}\\n`);\n return;\n case \"triple\":\n await writeTextToStdout(\n `${await formatEvidenceBackedPageText(\n page.id,\n page.label,\n page.evidence,\n context,\n )}\\n`,\n );\n return;\n }\n}\n","import type {\n ArchiveSourceLocator,\n ArchiveSourceLocatorResult,\n} from \"wiki-graph-sdk\";\n\nimport { formatCLIJSON, writeTextToStdout } from \"../../../support/index.js\";\nimport { createOutputContinuationCursor } from \"../object/cursor.js\";\nimport { createPageCursorObject } from \"../object/page-cursor.js\";\nimport type { ArchiveOutputContext, ResultFormat } from \"../object/types.js\";\nimport { formatNextCursor } from \"../text/index.js\";\nimport { writeJSONL } from \"./jsonl.js\";\n\nexport async function writeSourceLocators(\n result: ArchiveSourceLocatorResult,\n context: ArchiveOutputContext,\n format: ResultFormat,\n): Promise<void> {\n const nextCursor = await createOutputContinuationCursor(\n context,\n result.nextCursor,\n );\n\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON({\n limit: result.limit,\n nextCursor,\n objects: result.items,\n }),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL([...result.items, createPageCursorObject(nextCursor)]);\n return;\n }\n\n if (result.items.length === 0) {\n await writeTextToStdout(\"No source locators.\\n\");\n return;\n }\n\n await writeTextToStdout(\n `${result.items.map(formatSourceLocator).join(\"\\n\")}${formatNextCursor(nextCursor)}\\n`,\n );\n}\n\nexport async function writeAllSourceLocators(\n readPage: (cursor: string | undefined) => Promise<ArchiveSourceLocatorResult>,\n initialCursor: string | undefined,\n context: ArchiveOutputContext,\n format: ResultFormat,\n): Promise<void> {\n const pages: ArchiveSourceLocatorResult[] = [];\n let cursor = initialCursor;\n\n while (true) {\n const page = await readPage(cursor);\n if (format === \"jsonl\") {\n await writeJSONL(page.items);\n } else {\n pages.push(page);\n }\n if (page.nextCursor === null) break;\n cursor = page.nextCursor;\n }\n\n if (format === \"jsonl\") return;\n\n const items = pages.flatMap((page) => page.items);\n await writeSourceLocators(\n { items, limit: items.length, nextCursor: null },\n context,\n format,\n );\n}\n\nfunction formatSourceLocator(locator: ArchiveSourceLocator): string {\n return `${locator.range[0]}..${locator.range[1]} -> ${locator.uri}`;\n}\n","export * from \"./evidence.js\";\nexport * from \"./find.js\";\nexport * from \"./list.js\";\nexport * from \"./pack.js\";\nexport * from \"./page.js\";\nexport * from \"./source-locators.js\";\n","export * from \"./write/index.js\";\nexport type {\n ArchiveOutputContext,\n ArchiveOutputObject,\n ResultFormat,\n} from \"./object/types.js\";\n","import type { ArchiveCollectionResult, QueryIndexScope } from \"wiki-graph-sdk\";\n\nimport type { CLIArchiveArguments } from \"../../../args/index.js\";\n\nexport type ResultFormat = \"json\" | \"jsonl\" | \"text\";\n\nexport const DEFAULT_OUTPUT_LIMIT = 20;\nexport const DEFAULT_GET_EVIDENCE_LIMIT = 3;\nexport const ALL_COLLECTION_OUTPUT_LIMIT = 1_000_000_000;\n\nexport interface ArchiveOutputContext {\n readonly archiveKey: string;\n readonly archivePath: string;\n readonly backlinks?: boolean;\n readonly chapters?: readonly number[];\n readonly continuationKind?:\n | \"collection\"\n | \"evidence\"\n | \"related\"\n | \"search\"\n | \"source-locators\";\n readonly evidenceDisabled?: boolean;\n readonly evidenceLimit?: number;\n readonly format: ResultFormat;\n readonly ids?: readonly string[];\n readonly indexScope: QueryIndexScope;\n readonly limit: number;\n readonly order?: ArchiveCollectionResult[\"order\"];\n readonly query?: string;\n readonly role?: CLIArchiveArguments[\"role\"];\n readonly sourceContext?: number;\n readonly targetUri?: string;\n readonly triplePattern?: CLIArchiveArguments[\"triplePattern\"];\n readonly types: readonly string[] | null;\n}\n","import {\n parseWikiGraphLibraryUri,\n resolveWikiGraphArchiveLocation,\n type WikiGraphArchiveLocation,\n type QueryIndexScope,\n} from \"wiki-graph-sdk\";\nimport { parseLocatedWikiGraphUri } from \"../../../support/index.js\";\n\nimport type { CLIArchiveArguments } from \"../../../args/index.js\";\nexport type ArchiveRuntimeLocation = WikiGraphArchiveLocation;\n\nexport async function resolveArchiveRuntimeLocation(\n uriOrPath: string,\n): Promise<ArchiveRuntimeLocation> {\n return await resolveWikiGraphArchiveLocation(uriOrPath);\n}\n\nexport async function resolveArchiveCommandRuntimeArguments(\n args: CLIArchiveArguments,\n): Promise<CLIArchiveArguments> {\n if (args.action === \"create\" || args.action === \"export\") {\n const location = await resolveArchiveRuntimeLocation(args.archivePath);\n return { ...args, archivePath: location.archivePath };\n }\n if (args.action === \"inspect\" || args.action === \"next\") return args;\n if (!args.archivePath.startsWith(\"wikg://lib/\")) {\n return args;\n }\n\n const location = await resolveArchiveRuntimeLocation(args.archivePath);\n return {\n ...args,\n archivePath: location.locatedUri,\n ...(args.objectId === args.archivePath\n ? { objectId: location.locatedUri }\n : {}),\n };\n}\n\nexport function getArchivePath(uri: string): string {\n if (parseWikiGraphLibraryUri(uri)?.kind === \"scope\") {\n return uri;\n }\n\n const archivePath = parseLocatedWikiGraphUri(uri).archivePath;\n if (archivePath === undefined) {\n throw new Error(`Missing archive locator in URI: ${uri}`);\n }\n return archivePath;\n}\n\nexport function getArchiveIndexScope(uri: string): QueryIndexScope {\n if (parseWikiGraphLibraryUri(uri)?.kind === \"scope\") {\n return { kind: \"library-index\", libraryId: -1 };\n }\n\n const archivePath = getArchivePath(uri);\n return { archiveKey: archivePath, archivePath, kind: \"archive-index\" };\n}\n\nexport function getObjectUri(uri: string): string {\n const libraryTarget = parseWikiGraphLibraryUri(uri);\n if (\n libraryTarget?.kind === \"scope\" &&\n libraryTarget.objectUri !== undefined\n ) {\n return libraryTarget.objectUri;\n }\n\n const parsed = parseLocatedWikiGraphUri(uri);\n\n return parsed.objectUri ?? \"wikg://\";\n}\n\nexport function isArchiveRootGet(args: CLIArchiveArguments): boolean {\n return (\n args.objectId !== undefined &&\n parseLocatedWikiGraphUri(args.objectId).objectUri === undefined\n );\n}\n\nexport function parseChapterScope(uri: string): number | undefined {\n const match = /^wikg:\\/\\/chapter\\/([1-9][0-9]*)(?:\\/|$)/u.exec(uri);\n\n return match?.[1] === undefined ? undefined : Number(match[1]);\n}\n","import {\n parseLocatedWikiGraphUri,\n type ArchiveCollectionOptions,\n type ArchiveCollectionResult,\n type ArchiveFindOptions,\n type ArchiveFindResult,\n} from \"wiki-graph-sdk\";\n\nimport type { CLIArchiveArguments } from \"../../../args/index.js\";\nimport {\n DEFAULT_GET_EVIDENCE_LIMIT,\n DEFAULT_OUTPUT_LIMIT,\n type ArchiveOutputContext,\n} from \"./types.js\";\nimport {\n getArchiveIndexScope,\n getArchivePath,\n parseChapterScope,\n} from \"./uri.js\";\n\nexport function createFindOptions(\n args: CLIArchiveArguments,\n): ArchiveFindOptions {\n const types = args.kinds?.map((kind) => {\n const type = toArchiveFindType(kind);\n\n if (type === undefined) {\n throw new Error(`Unsupported archive search type: ${kind}`);\n }\n\n return type;\n });\n\n return {\n archiveKey: getArchivePath(args.archivePath),\n ...(args.backlinks === undefined ? {} : { backlinks: args.backlinks }),\n ...createScopeOptions(args),\n ...(args.cursor === undefined ? {} : { cursor: args.cursor }),\n ...createOptionalEvidenceLimit(args),\n ...(args.limit === undefined ? {} : { limit: args.limit }),\n ...(args.reverse === true ? { order: \"doc-desc\" } : {}),\n ...(args.skipUnindexed === true ? { skipUnindexed: true } : {}),\n ...createOptionalSourceContext(args),\n ...(args.triplePattern === undefined\n ? {}\n : { triplePattern: args.triplePattern }),\n ...(types === undefined ? {} : { types }),\n };\n}\n\nexport function createArchiveOutputContext(\n args: CLIArchiveArguments,\n options: {\n readonly continuationKind?:\n | \"collection\"\n | \"evidence\"\n | \"related\"\n | \"search\"\n | \"source-locators\";\n readonly targetUri?: string;\n } = {},\n): ArchiveOutputContext {\n return {\n archiveKey: getArchivePath(args.archivePath),\n archivePath: getArchivePath(args.archivePath),\n indexScope: getArchiveIndexScope(args.archivePath),\n ...(args.backlinks === undefined ? {} : { backlinks: args.backlinks }),\n ...(isEvidenceDisabled(args.evidenceLimit)\n ? { evidenceDisabled: true }\n : {}),\n ...(options.continuationKind === undefined\n ? {}\n : { continuationKind: options.continuationKind }),\n ...createOptionalEvidenceLimit(args),\n ...createOptionalSourceContext(args),\n format: args.format ?? \"text\",\n limit: args.limit ?? DEFAULT_OUTPUT_LIMIT,\n ...(args.reverse === true ? { order: \"doc-desc\" } : {}),\n ...(args.action !== \"evidence\" &&\n args.action !== \"related\" &&\n args.action !== \"search\"\n ? {}\n : args.query === undefined\n ? {}\n : { query: args.query }),\n ...(args.role === undefined ? {} : { role: args.role }),\n ...(args.skipUnindexed === true ? { skipUnindexed: true } : {}),\n ...(options.continuationKind === \"collection\"\n ? createScopeOptions(args)\n : {}),\n ...(args.triplePattern === undefined\n ? {}\n : { triplePattern: args.triplePattern }),\n ...(options.targetUri === undefined\n ? {}\n : { targetUri: options.targetUri }),\n types:\n args.kinds === undefined\n ? null\n : args.kinds\n .map((kind) => toArchiveFindType(kind))\n .filter(\n (type): type is NonNullable<typeof type> => type !== undefined,\n ),\n };\n}\n\nexport function getSingleObjectEvidenceLimit(\n args: CLIArchiveArguments,\n objectUri: string,\n): number | undefined {\n if (isEvidenceDisabled(args.evidenceLimit)) {\n return undefined;\n }\n\n if (args.evidenceLimit !== undefined) {\n return args.evidenceLimit;\n }\n\n return isEvidenceBackedObjectUri(objectUri)\n ? DEFAULT_GET_EVIDENCE_LIMIT\n : undefined;\n}\n\nfunction isEvidenceDisabled(evidenceLimit: number | undefined): boolean {\n return evidenceLimit === 0;\n}\n\nexport function createOptionalEvidenceLimit(args: CLIArchiveArguments): {\n readonly evidenceLimit?: number;\n} {\n if (\n args.evidenceLimit === undefined ||\n isEvidenceDisabled(args.evidenceLimit)\n ) {\n return {};\n }\n\n return { evidenceLimit: args.evidenceLimit };\n}\n\nexport function createOptionalSourceContext(args: CLIArchiveArguments): {\n readonly sourceContext?: number;\n} {\n return args.context === undefined ? {} : { sourceContext: args.context };\n}\n\nfunction isEvidenceBackedObjectUri(uri: string): boolean {\n return /^wikg:\\/\\/(?:(?:chapter\\/[1-9][0-9]*\\/)?entity\\/Q[1-9][0-9]*|(?:chapter\\/[1-9][0-9]*\\/)?triple\\/Q[1-9][0-9]*\\/[^/]+\\/Q[1-9][0-9]*)\\/?$/u.test(\n uri,\n );\n}\n\nexport function createCollectionOptions(\n args: CLIArchiveArguments,\n): ArchiveCollectionOptions {\n const types = args.kinds?.map((kind) => {\n const type = toArchiveCollectionType(kind);\n\n if (type === undefined) {\n throw new Error(`Unsupported archive list type: ${kind}`);\n }\n\n return type;\n });\n\n return {\n ...(args.backlinks === undefined ? {} : { backlinks: args.backlinks }),\n ...createScopeOptions(args),\n ...(args.cursor === undefined ? {} : { cursor: args.cursor }),\n ...createOptionalEvidenceLimit(args),\n ...(args.limit === undefined ? {} : { limit: args.limit }),\n ...createOptionalSourceContext(args),\n ...(args.triplePattern === undefined\n ? {}\n : { triplePattern: args.triplePattern }),\n ...(types === undefined ? {} : { types }),\n };\n}\n\nexport function createCollectionFindResult(\n collection: ArchiveCollectionResult,\n): ArchiveFindResult {\n return {\n chapters: collection.chapters,\n items: collection.items,\n lens: \"typed\",\n lensHint: null,\n limit: collection.limit,\n match: \"any\",\n nextCursor: collection.nextCursor,\n order: collection.order,\n query: \"\",\n terms: [],\n types: null,\n };\n}\n\nexport function createScopeOptions(\n args: Pick<CLIArchiveArguments, \"archivePath\" | \"chapters\">,\n): {\n readonly chapters?: readonly number[];\n} {\n if (args.chapters !== undefined) {\n return { chapters: args.chapters };\n }\n\n const objectUri = parseLocatedWikiGraphUri(args.archivePath).objectUri;\n\n if (objectUri === undefined) {\n return {};\n }\n\n const chapterId = parseChapterScope(objectUri);\n\n return chapterId === undefined ? {} : { chapters: [chapterId] };\n}\n\nfunction toArchiveFindType(\n kind: NonNullable<CLIArchiveArguments[\"kinds\"]>[number],\n): NonNullable<ArchiveFindOptions[\"types\"]>[number] | undefined {\n switch (kind) {\n case \"chapter\":\n return \"chapter-title\";\n case \"chunk\":\n return \"node\";\n case \"source\":\n return \"source\";\n case \"summary\":\n return \"summary\";\n case \"entity\":\n return \"entity\";\n case \"meta\":\n return \"meta\";\n case \"triple\":\n return \"triple\";\n }\n}\n\nfunction toArchiveCollectionType(\n kind: NonNullable<CLIArchiveArguments[\"kinds\"]>[number],\n): NonNullable<ArchiveCollectionOptions[\"types\"]>[number] | undefined {\n switch (kind) {\n case \"chapter\":\n return \"chapter-title\";\n case \"chunk\":\n return \"node\";\n case \"entity\":\n return \"entity\";\n case \"meta\":\n return \"meta\";\n case \"source\":\n return \"source\";\n case \"summary\":\n return \"summary\";\n case \"triple\":\n return \"triple\";\n }\n}\n","import type { ContinuationCursor } from \"wiki-graph-sdk\";\n\nimport type { CLIArchiveArguments } from \"../../../args/index.js\";\nimport { getWikiGraphSDK } from \"../../../runtime/context.js\";\nimport {\n writeEvidence,\n writeFindHits,\n writeList,\n writeSourceLocators,\n} from \"../../archive-output/index.js\";\nimport { createCollectionFindResult } from \"./options.js\";\nimport type { ArchiveOutputContext } from \"./types.js\";\n\nexport async function runNextArchivePage(\n args: CLIArchiveArguments,\n): Promise<void> {\n const cursorId = args.cursor ?? args.archivePath;\n const page = await getWikiGraphSDK().continuations.next({\n ...(args.cursor === undefined ? {} : { archive: args.archivePath }),\n cursor: cursorId,\n ...(args.format === undefined ? {} : { format: args.format }),\n ...(args.limit === undefined ? {} : { limit: args.limit }),\n });\n const format = args.format ?? page.format;\n const context = {\n ...createCursorOutputContext(page.cursor, format, page.limit),\n continuationCursorIsDurable: true,\n };\n\n switch (page.kind) {\n case \"source-locators\":\n await writeSourceLocators(page.result, context, format);\n return;\n case \"collection\":\n await writeFindHits(\n createCollectionFindResult(page.result),\n context,\n format,\n );\n return;\n case \"search\":\n await writeFindHits(page.result, context, format);\n return;\n case \"evidence\":\n await writeEvidence(page.result, context, format);\n return;\n case \"related\":\n await writeList(page.result, context, format);\n return;\n }\n}\n\nfunction createCursorOutputContext(\n cursor: ContinuationCursor,\n format: \"json\" | \"jsonl\" | \"text\",\n limit: number,\n): ArchiveOutputContext {\n return {\n archiveKey: cursor.archiveKey,\n archivePath: cursor.archivePath,\n continuationKind: cursor.kind,\n format,\n indexScope: cursor.indexScope,\n limit,\n ...((cursor.kind === \"collection\" || cursor.kind === \"search\") &&\n cursor.libraryQuery !== undefined\n ? { libraryQuery: cursor.libraryQuery }\n : {}),\n types:\n cursor.kind === \"collection\" || cursor.kind === \"search\"\n ? cursor.types\n : null,\n ...(cursor.kind === \"collection\" || cursor.kind === \"search\"\n ? cursor.backlinks === undefined\n ? {}\n : { backlinks: cursor.backlinks }\n : {}),\n ...(cursor.kind === \"collection\"\n ? {\n ...(cursor.chapters === null ? {} : { chapters: cursor.chapters }),\n ...(cursor.ids === null ? {} : { ids: cursor.ids }),\n order: cursor.order,\n ...(cursor.triplePattern === undefined\n ? {}\n : { triplePattern: cursor.triplePattern }),\n }\n : {}),\n ...(cursor.kind === \"search\"\n ? {\n ...(cursor.chapters == null ? {} : { chapters: cursor.chapters }),\n ...(cursor.query === undefined ? {} : { query: cursor.query }),\n ...(cursor.skipUnindexed === undefined\n ? {}\n : { skipUnindexed: cursor.skipUnindexed }),\n ...(cursor.triplePattern === undefined\n ? {}\n : { triplePattern: cursor.triplePattern }),\n }\n : {}),\n ...(cursor.kind === \"evidence\" || cursor.kind === \"related\"\n ? {\n order: cursor.order,\n ...(cursor.query === undefined ? {} : { query: cursor.query }),\n ...(cursor.skipUnindexed === undefined\n ? {}\n : { skipUnindexed: cursor.skipUnindexed }),\n targetUri: cursor.targetUri,\n }\n : {}),\n ...(cursor.kind === \"related\" && cursor.role !== undefined\n ? { role: cursor.role }\n : {}),\n ...(cursor.kind === \"source-locators\"\n ? { targetUri: cursor.targetUri }\n : {}),\n ...(\"evidenceLimit\" in cursor && cursor.evidenceLimit !== undefined\n ? { evidenceLimit: cursor.evidenceLimit }\n : {}),\n ...(\"sourceContext\" in cursor && cursor.sourceContext !== undefined\n ? { sourceContext: cursor.sourceContext }\n : {}),\n };\n}\n","import { formatLocatedWikiGraphUri } from \"wiki-graph-sdk\";\n\nimport type { CLIArchiveArguments } from \"../../../args/index.js\";\nimport { formatCLIJSON, writeTextToStdout } from \"../../../support/index.js\";\nimport { getArchivePath } from \"./uri.js\";\n\nexport async function writeArchiveRoot(\n args: CLIArchiveArguments,\n): Promise<void> {\n const archivePath = getArchivePath(args.objectId!);\n\n if (args.format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON({ uri: formatLocatedWikiGraphUri(archivePath) }),\n );\n return;\n }\n\n await writeTextToStdout(\"<archive>\\n\");\n}\n","export * from \"./next.js\";\nexport * from \"./options.js\";\nexport * from \"./root.js\";\nexport * from \"./types.js\";\nexport * from \"./uri.js\";\n","import {\n formatWikiGraphLibraryUri,\n parseWikiGraphLibraryUri,\n isSourceLocatorScopeUri,\n type ArchiveFindOptions,\n type ArchiveRelatedResult,\n type ArchiveCollectionResult,\n type ArchiveSourceLocatorResult,\n} from \"wiki-graph-sdk\";\n\nimport type { CLIArchiveArguments } from \"../../args/index.js\";\nimport { getWikiGraphSDK } from \"../../runtime/context.js\";\nimport { formatCliCommand } from \"../../support/index.js\";\nimport { runConvertCommand } from \"../convert.js\";\nimport { createArchive } from \"./create.js\";\nimport { writeArchiveInspectReport } from \"./inspect.js\";\nimport {\n writeAllEvidence,\n writeAllFindHits,\n writeAllRelatedItems,\n writeEvidence,\n writeFindHits,\n writeFindHitsWithoutContinuation,\n writeList,\n writePack,\n writePage,\n writeAllSourceLocators,\n writeSourceLocators,\n} from \"../archive-output/index.js\";\nimport {\n ALL_COLLECTION_OUTPUT_LIMIT,\n createArchiveOutputContext,\n createCollectionFindResult,\n createCollectionOptions,\n createFindOptions,\n createOptionalEvidenceLimit,\n createOptionalSourceContext,\n getObjectUri,\n getSingleObjectEvidenceLimit,\n isArchiveRootGet,\n resolveArchiveCommandRuntimeArguments,\n runNextArchivePage,\n writeArchiveRoot,\n} from \"./run/index.js\";\n\nexport async function runArchiveCommand(\n args: CLIArchiveArguments,\n): Promise<void> {\n const libraryTarget = parseWikiGraphLibraryUri(args.archivePath);\n if (\n libraryTarget?.kind === \"scope\" &&\n libraryTarget.objectUri !== \"wikg://index\" &&\n (libraryTarget.objectUri !== undefined ||\n args.action === \"related\" ||\n args.action === \"evidence\" ||\n args.action === \"pack\" ||\n args.action === \"search\" ||\n args.action === \"list\")\n ) {\n await runLibraryIndexArchiveCommand(args, libraryTarget);\n return;\n }\n\n args = await resolveArchiveCommandRuntimeArguments(args);\n\n switch (args.action) {\n case \"create\":\n await createArchive(args);\n return;\n case \"export\":\n if (args.outputFormat === undefined) {\n throw new Error(\"Internal error: missing export output format.\");\n }\n await runConvertCommand({\n help: false,\n inputFormat: \"wikg\",\n inputPath: args.archivePath,\n ...(args.outputPath === undefined\n ? {}\n : { outputPath: args.outputPath }),\n outputFormat: args.outputFormat,\n verbose: false,\n });\n return;\n case \"inspect\":\n await writeArchiveInspectReport(args);\n return;\n case \"search\":\n await runArchiveSearch(args);\n return;\n case \"list\":\n await runArchiveList(args);\n return;\n case \"get\":\n if (isArchiveRootGet(args)) {\n await writeArchiveRoot(args);\n return;\n }\n await runArchiveGet(args);\n return;\n case \"related\":\n await runArchiveRelated(args);\n return;\n case \"evidence\":\n await runArchiveEvidence(args);\n return;\n case \"next\":\n await runNextArchivePage(args);\n return;\n case \"pack\":\n await writePack(\n await (\n await getWikiGraphSDK().archives.open(args.archivePath)\n ).pack(getObjectUri(args.objectId!), args.budget ?? 5000),\n createArchiveOutputContext(args),\n args.format ?? \"text\",\n );\n return;\n }\n}\n\nasync function runArchiveList(args: CLIArchiveArguments): Promise<void> {\n const archive = await getWikiGraphSDK().archives.open(args.archivePath);\n const objectUri = getObjectUri(args.archivePath);\n if (isSourceLocatorScopeUri(objectUri)) {\n const context = createArchiveOutputContext(args, {\n continuationKind: \"source-locators\",\n targetUri: objectUri,\n });\n const readPage = async (\n cursor: string | undefined,\n ): Promise<ArchiveSourceLocatorResult> =>\n (await archive.list({\n ...(cursor === undefined ? {} : { cursor }),\n ...(args.limit === undefined ? {} : { limit: args.limit }),\n })) as ArchiveSourceLocatorResult;\n if (args.all === true) {\n await writeAllSourceLocators(\n readPage,\n args.cursor,\n context,\n args.format ?? \"text\",\n );\n return;\n }\n await writeSourceLocators(\n await readPage(args.cursor),\n context,\n args.format ?? \"text\",\n );\n return;\n }\n const scope = await archive.resolveScope({\n ...(args.depth === undefined ? {} : { depth: args.depth }),\n });\n const scopedArgs =\n scope === undefined ? args : { ...args, chapters: scope.chapterIds };\n if (args.query !== undefined) {\n await archive.ensureSearchIndex({\n ...(scopedArgs.chapters === undefined\n ? {}\n : { chapters: scopedArgs.chapters }),\n });\n }\n const context = createArchiveOutputContext(scopedArgs, {\n continuationKind: \"collection\",\n });\n const readPage = async (\n cursor: string | undefined,\n limit = args.limit,\n ): Promise<ArchiveCollectionResult> =>\n (await archive.list({\n ...createCollectionOptions(scopedArgs),\n ...(cursor === undefined ? {} : { cursor }),\n ...(limit === undefined ? {} : { limit }),\n })) as ArchiveCollectionResult;\n if (args.all === true) {\n if (args.limit !== undefined) {\n await writeAllFindHits(\n async (cursor) => createCollectionFindResult(await readPage(cursor)),\n context,\n args.format ?? \"text\",\n );\n return;\n }\n await writeFindHitsWithoutContinuation(\n createCollectionFindResult(\n await readPage(undefined, ALL_COLLECTION_OUTPUT_LIMIT),\n ),\n context,\n args.format ?? \"text\",\n );\n return;\n }\n await writeFindHits(\n createCollectionFindResult(await readPage(args.cursor)),\n context,\n args.format ?? \"text\",\n );\n}\n\nasync function runArchiveSearch(args: CLIArchiveArguments): Promise<void> {\n const archive = await getWikiGraphSDK().archives.open(args.archivePath);\n const scope = await archive.resolveScope({\n ...(args.depth === undefined ? {} : { depth: args.depth }),\n });\n const scopedArgs =\n scope === undefined ? args : { ...args, chapters: scope.chapterIds };\n const context = createArchiveOutputContext(scopedArgs);\n const findOptions = createSearchFindOptions(scopedArgs);\n const { archiveKey: _archiveKey, chapters, ...options } = findOptions;\n const readPage = async (cursor: string | undefined) =>\n await archive.search(scopedArgs.query!, {\n ...options,\n ...(chapters === undefined ? {} : { chapters }),\n ...(cursor === undefined ? {} : { cursor }),\n });\n try {\n if (args.all === true) {\n await writeAllFindHits(readPage, context, args.format ?? \"text\");\n return;\n }\n await writeFindHits(\n await readPage(args.cursor),\n context,\n args.format ?? \"text\",\n );\n } catch (error) {\n if (isArchiveQueryNotReadyError(error)) {\n throw createArchiveQueryNotReadyError(args, error.message);\n }\n throw error;\n }\n}\n\nasync function runArchiveGet(args: CLIArchiveArguments): Promise<void> {\n const objectUri = getObjectUri(args.objectId!);\n const evidenceLimit = getSingleObjectEvidenceLimit(args, objectUri);\n const context =\n evidenceLimit === undefined\n ? createArchiveOutputContext(args)\n : createArchiveOutputContext({ ...args, evidenceLimit });\n const archive = await getWikiGraphSDK().archives.open(args.archivePath);\n await writePage(\n await archive.page(objectUri, {\n ...(args.backlinks === undefined ? {} : { backlinks: args.backlinks }),\n ...(evidenceLimit === undefined ? {} : { evidenceLimit }),\n ...(args.reverse === true ? { order: \"doc-desc\" } : {}),\n ...createOptionalSourceContext(args),\n }),\n context,\n args.format ?? \"text\",\n );\n}\n\nasync function runArchiveRelated(args: CLIArchiveArguments): Promise<void> {\n const objectUri = getObjectUri(args.objectId!);\n const archive = await getWikiGraphSDK().archives.open(args.archivePath);\n const scope = await archive.resolveScope();\n const context = createArchiveOutputContext(\n scope === undefined ? args : { ...args, chapters: scope.chapterIds },\n {\n continuationKind: \"related\",\n targetUri: objectUri,\n },\n );\n const readPage = async (\n cursor: string | undefined,\n ): Promise<ArchiveRelatedResult> =>\n await archive.related(objectUri, {\n ...(cursor === undefined ? {} : { cursor }),\n ...createOptionalEvidenceLimit(args),\n ...(args.limit === undefined ? {} : { limit: args.limit }),\n ...(args.reverse === true ? { order: \"doc-desc\" } : {}),\n ...(args.query === undefined ? {} : { query: args.query }),\n ...(args.role === undefined ? {} : { role: args.role }),\n ...(args.skipUnindexed === true ? { skipUnindexed: true } : {}),\n ...createOptionalSourceContext(args),\n });\n if (args.all === true) {\n await writeAllRelatedItems(\n readPage,\n args.cursor,\n context,\n args.format ?? \"text\",\n );\n return;\n }\n await writeList(await readPage(args.cursor), context, args.format ?? \"text\");\n}\n\nasync function runArchiveEvidence(args: CLIArchiveArguments): Promise<void> {\n const objectUri = getObjectUri(args.objectId!);\n const archive = await getWikiGraphSDK().archives.open(args.archivePath);\n const scope = await archive.resolveScope();\n const context = createArchiveOutputContext(\n scope === undefined ? args : { ...args, chapters: scope.chapterIds },\n {\n continuationKind: \"evidence\",\n targetUri: objectUri,\n },\n );\n const readPage = async (cursor: string | undefined) =>\n await archive.evidence(objectUri, {\n ...(cursor === undefined ? {} : { cursor }),\n ...(args.limit === undefined ? {} : { limit: args.limit }),\n ...(args.reverse === true ? { order: \"doc-desc\" } : {}),\n ...(args.query === undefined ? {} : { query: args.query }),\n ...(args.skipUnindexed === true ? { skipUnindexed: true } : {}),\n ...createOptionalSourceContext(args),\n });\n if (args.all === true) {\n await writeAllEvidence(\n readPage,\n args.cursor,\n context,\n args.format ?? \"text\",\n );\n return;\n }\n await writeEvidence(\n await readPage(args.cursor),\n context,\n args.format ?? \"text\",\n );\n}\n\nfunction createArchiveQueryNotReadyError(\n args: Pick<CLIArchiveArguments, \"archivePath\">,\n reason: string,\n): Error {\n const buildCommand = formatCliCommand([\n \"wikg://local/job\",\n \"add\",\n \"--input\",\n args.archivePath,\n \"--task\",\n \"index-fts\",\n ]);\n\n return new Error(\n [\n reason,\n \"\",\n \"Build local FTS artifacts without provider calls:\",\n ` ${buildCommand}`,\n \"\",\n \"Help:\",\n \" wg help readiness\",\n ].join(\"\\n\"),\n );\n}\n\nfunction isArchiveQueryNotReadyError(error: unknown): error is Error {\n return error instanceof Error && error.name === \"ArchiveQueryNotReadyError\";\n}\n\nasync function runLibraryIndexArchiveCommand(\n args: CLIArchiveArguments,\n target: NonNullable<ReturnType<typeof parseWikiGraphLibraryUri>>,\n): Promise<void> {\n const libraries = getWikiGraphSDK().libraries;\n const library = await libraries.get(\n formatWikiGraphLibraryUri(target.publicId),\n );\n const isLibraryRootCollection =\n target.objectUri === undefined && args.objectId === undefined;\n const objectUri = isLibraryRootCollection\n ? undefined\n : getObjectUri(args.objectId ?? args.archivePath);\n const context = {\n ...createArchiveOutputContext(args),\n archiveKey: args.archivePath,\n archivePath: args.archivePath,\n indexScope: {\n kind: \"library-index\" as const,\n libraryId: library.snapshot.id,\n },\n libraryQuery: \"objects\" as const,\n };\n\n switch (args.action) {\n case \"search\": {\n const findOptions = createSearchFindOptions(args);\n if (objectUri === undefined) {\n if (args.all === true) {\n await writeAllFindHits(\n async (cursor) =>\n await libraries.search(target, args.query!, {\n ...findOptions,\n ...(cursor === undefined ? {} : { cursor }),\n }),\n context,\n args.format ?? \"text\",\n );\n return;\n }\n await writeFindHits(\n await libraries.search(target, args.query!, findOptions),\n context,\n args.format ?? \"text\",\n );\n return;\n }\n if (args.all === true) {\n await writeAllFindHits(\n async (cursor) =>\n await libraries.search(target, args.query!, {\n ...findOptions,\n ...(cursor === undefined ? {} : { cursor }),\n }),\n context,\n args.format ?? \"text\",\n );\n return;\n }\n\n await writeFindHits(\n await libraries.search(target, args.query!, findOptions),\n context,\n args.format ?? \"text\",\n );\n return;\n }\n case \"list\": {\n const listContext = {\n ...context,\n continuationKind: \"collection\" as const,\n };\n if (objectUri === undefined) {\n if (args.all === true) {\n if (args.limit !== undefined) {\n await writeAllFindHits(\n async (cursor) =>\n createCollectionFindResult(\n await libraries.objects(target, {\n ...createCollectionOptions(args),\n ...(cursor === undefined ? {} : { cursor }),\n }),\n ),\n listContext,\n args.format ?? \"text\",\n );\n return;\n }\n\n await writeFindHitsWithoutContinuation(\n createCollectionFindResult(\n await libraries.objects(target, {\n ...createCollectionOptions(args),\n limit: ALL_COLLECTION_OUTPUT_LIMIT,\n }),\n ),\n listContext,\n args.format ?? \"text\",\n );\n return;\n }\n await writeFindHits(\n createCollectionFindResult(\n await libraries.objects(target, createCollectionOptions(args)),\n ),\n listContext,\n args.format ?? \"text\",\n );\n return;\n }\n if (args.all === true) {\n if (args.limit !== undefined) {\n await writeAllFindHits(\n async (cursor) =>\n createCollectionFindResult(\n await libraries.objects(target, {\n ...createCollectionOptions(args),\n ...(cursor === undefined ? {} : { cursor }),\n }),\n ),\n listContext,\n args.format ?? \"text\",\n );\n return;\n }\n\n await writeFindHitsWithoutContinuation(\n createCollectionFindResult(\n await libraries.objects(target, {\n ...createCollectionOptions(args),\n limit: ALL_COLLECTION_OUTPUT_LIMIT,\n }),\n ),\n listContext,\n args.format ?? \"text\",\n );\n return;\n }\n\n await writeFindHits(\n createCollectionFindResult(\n await libraries.objects(target, createCollectionOptions(args)),\n ),\n listContext,\n args.format ?? \"text\",\n );\n return;\n }\n case \"get\": {\n if (objectUri === undefined) {\n const getContext = {\n ...context,\n continuationKind: \"collection\" as const,\n };\n await writeFindHits(\n createCollectionFindResult(\n await libraries.objects(target, createCollectionOptions(args)),\n ),\n getContext,\n args.format ?? \"text\",\n );\n return;\n }\n\n const evidenceLimit = getSingleObjectEvidenceLimit(args, objectUri);\n await writePage(\n await libraries.page(target, objectUri, {\n ...(args.backlinks === undefined\n ? {}\n : { backlinks: args.backlinks }),\n ...(evidenceLimit === undefined ? {} : { evidenceLimit }),\n ...(args.reverse === true ? { order: \"doc-desc\" } : {}),\n ...createOptionalSourceContext(args),\n }),\n evidenceLimit === undefined ? context : { ...context, evidenceLimit },\n args.format ?? \"text\",\n );\n return;\n }\n case \"related\": {\n const concreteObjectUri = requireLibraryObjectUri(\"related\", objectUri);\n const relatedContext = {\n ...context,\n continuationKind: \"related\" as const,\n targetUri: concreteObjectUri,\n };\n const readPage = async (\n cursor: string | undefined,\n ): Promise<ArchiveRelatedResult> =>\n await libraries.related(target, concreteObjectUri, {\n ...(cursor === undefined ? {} : { cursor }),\n ...createOptionalEvidenceLimit(args),\n ...(args.limit === undefined ? {} : { limit: args.limit }),\n ...(args.reverse === true ? { order: \"doc-desc\" } : {}),\n ...(args.query === undefined ? {} : { query: args.query }),\n ...(args.role === undefined ? {} : { role: args.role }),\n ...(args.skipUnindexed === true ? { skipUnindexed: true } : {}),\n ...createOptionalSourceContext(args),\n });\n\n if (args.all === true) {\n await writeAllRelatedItems(\n readPage,\n args.cursor,\n relatedContext,\n args.format ?? \"text\",\n );\n return;\n }\n\n await writeList(\n await readPage(args.cursor),\n relatedContext,\n args.format ?? \"text\",\n );\n return;\n }\n case \"evidence\": {\n const concreteObjectUri = requireLibraryObjectUri(\"evidence\", objectUri);\n const evidenceContext = {\n ...context,\n continuationKind: \"evidence\" as const,\n targetUri: concreteObjectUri,\n };\n\n if (args.all === true) {\n await writeAllEvidence(\n async (cursor) =>\n await libraries.evidence(target, concreteObjectUri, {\n ...(cursor === undefined ? {} : { cursor }),\n ...(args.limit === undefined ? {} : { limit: args.limit }),\n ...(args.reverse === true ? { order: \"doc-desc\" } : {}),\n ...(args.query === undefined ? {} : { query: args.query }),\n ...(args.skipUnindexed === true ? { skipUnindexed: true } : {}),\n ...createOptionalSourceContext(args),\n }),\n args.cursor,\n evidenceContext,\n args.format ?? \"text\",\n );\n return;\n }\n\n await writeEvidence(\n await libraries.evidence(target, concreteObjectUri, {\n ...(args.cursor === undefined ? {} : { cursor: args.cursor }),\n ...(args.limit === undefined ? {} : { limit: args.limit }),\n ...(args.reverse === true ? { order: \"doc-desc\" } : {}),\n ...(args.query === undefined ? {} : { query: args.query }),\n ...(args.skipUnindexed === true ? { skipUnindexed: true } : {}),\n ...createOptionalSourceContext(args),\n }),\n evidenceContext,\n args.format ?? \"text\",\n );\n return;\n }\n case \"pack\": {\n const concreteObjectUri = requireLibraryObjectUri(\"pack\", objectUri);\n await writePack(\n await libraries.pack(target, concreteObjectUri, args.budget ?? 5000),\n context,\n args.format ?? \"text\",\n );\n return;\n }\n case \"create\":\n case \"export\":\n case \"inspect\":\n case \"next\":\n throw new Error(\n `The library index scope does not support \\`${args.action}\\`.`,\n );\n }\n}\n\nfunction createSearchFindOptions(\n args: CLIArchiveArguments,\n): ArchiveFindOptions {\n return createFindOptions(args);\n}\n\nfunction requireLibraryObjectUri(\n action: \"related\" | \"evidence\" | \"pack\",\n objectUri: string | undefined,\n): string {\n if (objectUri === undefined) {\n throw new Error(\n `The library \\`${action}\\` predicate requires a concrete library object URI.`,\n );\n }\n\n return objectUri;\n}\n","export * from \"wiki-graph-sdk/entry-context\";\n","import { spawn } from \"child_process\";\nimport { existsSync } from \"fs\";\nimport { join, resolve } from \"path\";\n\nimport {\n getCLICwd,\n getCLIDevProjectRoot,\n getCLIEnv,\n getCLIEnvPolicy,\n getCLIStateDir,\n} from \"./context.js\";\nimport { DANGEROUS_RUNTIME_ENV_NAMES } from \"./entry-context.js\";\n\nexport type InternalChildKind = \"gc-worker\" | \"queue-worker\";\n\nexport interface InternalChildSpawnOptions {\n readonly args?: readonly string[];\n readonly detached?: boolean;\n}\n\ndeclare global {\n var __WIKIGRAPH_CLI_DIST_DIR__: string | undefined;\n}\n\nexport function spawnInternalChild(\n kind: InternalChildKind,\n options: InternalChildSpawnOptions = {},\n): ReturnType<typeof spawn> {\n const command = createInternalChildCommand(kind, options.args ?? []);\n\n return spawn(command.command, command.args, {\n cwd: getCLICwd(),\n detached: options.detached === true,\n env: createInternalChildEnvironment(),\n stdio: options.detached === true ? \"ignore\" : [\"ignore\", \"pipe\", \"pipe\"],\n });\n}\n\nexport function createInternalChildEnvironmentForTesting(): NodeJS.ProcessEnv {\n return createInternalChildEnvironment();\n}\n\nexport async function runInternalChildJSON<T>(\n kind: InternalChildKind,\n options: InternalChildSpawnOptions = {},\n): Promise<T> {\n const child = spawnInternalChild(kind, options);\n const stdout: Buffer[] = [];\n const stderr: Buffer[] = [];\n\n child.stdout?.on(\"data\", (chunk: Buffer) => stdout.push(chunk));\n child.stderr?.on(\"data\", (chunk: Buffer) => stderr.push(chunk));\n\n await new Promise<void>((resolvePromise, reject) => {\n child.on(\"error\", reject);\n child.on(\"close\", (code) => {\n if (code !== 0) {\n reject(\n new Error(\n `Internal ${kind} failed with exit code ${code}: ${Buffer.concat(stderr).toString(\"utf8\").trim()}`,\n ),\n );\n return;\n }\n resolvePromise();\n });\n });\n\n try {\n return JSON.parse(Buffer.concat(stdout).toString(\"utf8\")) as T;\n } catch (error) {\n throw new Error(\n `Internal ${kind} returned invalid JSON: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n}\n\nexport function createInternalChildCommandForTesting(\n kind: InternalChildKind,\n args: readonly string[] = [],\n): { readonly args: readonly string[]; readonly command: string } {\n return createInternalChildCommand(kind, args);\n}\n\nfunction createInternalChildCommand(\n kind: InternalChildKind,\n args: readonly string[],\n): { readonly args: readonly string[]; readonly command: string } {\n const devProjectRoot = getCLIDevProjectRoot();\n const stateDir = getCLIStateDir();\n\n if (devProjectRoot !== undefined && stateDir !== undefined) {\n return {\n args: [\n join(devProjectRoot, \"node_modules\", \"tsx\", \"dist\", \"cli.mjs\"),\n join(devProjectRoot, \"packages\", \"cli\", \"src\", \"bin\", `${kind}.ts`),\n \"--wikigraph-internal-child\",\n kind,\n \"--wikigraph-state-dir\",\n stateDir,\n \"--wikigraph-env-policy\",\n getCLIEnvPolicy(),\n \"--wikigraph-dev-project-root\",\n devProjectRoot,\n ...args,\n ],\n command: process.execPath,\n };\n }\n\n return {\n args: [\n resolveProductionEntryPath(kind),\n \"--wikigraph-internal-child\",\n kind,\n ...(stateDir === undefined ? [] : [\"--wikigraph-state-dir\", stateDir]),\n ...args,\n ],\n command: process.execPath,\n };\n}\n\nfunction createInternalChildEnvironment(): NodeJS.ProcessEnv {\n const environment = { ...getCLIEnv() };\n\n for (const name of DANGEROUS_RUNTIME_ENV_NAMES) {\n delete environment[name];\n }\n\n return environment;\n}\n\nfunction resolveProductionEntryPath(kind: InternalChildKind): string {\n const filename = `${kind}.js`;\n const distDirPath =\n globalThis.__WIKIGRAPH_CLI_DIST_DIR__ ??\n resolve(getCLICwd(), \"packages\", \"cli\", \"dist\");\n const adjacent = join(distDirPath, filename);\n\n if (existsSync(adjacent)) {\n return adjacent;\n }\n\n return adjacent;\n}\n","import type { BuildJobTarget, ChapterEntry } from \"wiki-graph-sdk\";\n\nimport type { CLIConfig } from \"../../runtime/config.js\";\nimport {\n createGenerationPerformanceHints,\n DEFAULT_GENERATION_JOB_CONCURRENCY,\n DEFAULT_GENERATION_REQUEST_CONCURRENCY,\n formatGenerationPlanningDuration,\n formatGenerationPlanningModel,\n planGenerationTask,\n toCLIGenerationPerformanceHints,\n type CLIGenerationPerformanceHint,\n type GenerationConcurrency,\n type GenerationPlanningCost,\n} from \"../../runtime/index.js\";\n\nexport interface QueueAddEstimate {\n readonly chapters: number;\n readonly concurrent: GenerationConcurrency;\n readonly includesPrerequisites: boolean;\n readonly performanceHints: readonly CLIGenerationPerformanceHint[];\n readonly planning: GenerationPlanningCost;\n readonly steps: readonly QueueAddEstimateStep[];\n readonly target: BuildJobTarget;\n readonly usesProvider: boolean;\n readonly words: number;\n}\n\ninterface QueueAddEstimateStep {\n readonly chapters: number;\n readonly planning: GenerationPlanningCost;\n readonly prerequisite: boolean;\n readonly task: BuildJobTarget;\n readonly words: number;\n}\n\nexport function createQueueAddEstimate(input: {\n readonly chapters: readonly Pick<ChapterEntry, \"stage\" | \"words\">[];\n readonly config: CLIConfig;\n readonly target: BuildJobTarget;\n}): QueueAddEstimate {\n const concurrent = {\n job: input.config.concurrent?.job ?? DEFAULT_GENERATION_JOB_CONCURRENCY,\n request:\n input.config.concurrent?.request ??\n DEFAULT_GENERATION_REQUEST_CONCURRENCY,\n };\n const words = input.chapters.reduce(\n (total, chapter) => total + chapter.words,\n 0,\n );\n const model = formatGenerationPlanningModel(input.config.llm);\n const steps = createQueueAddEstimateSteps({\n chapters: input.chapters,\n concurrent,\n model,\n target: input.target,\n });\n const workChapters = Math.max(0, ...steps.map((step) => step.chapters));\n const usesProvider = steps.some((step) => step.task !== \"index-fts\");\n\n return {\n chapters: input.chapters.length,\n concurrent,\n includesPrerequisites: steps.some((step) => step.prerequisite),\n performanceHints: toCLIGenerationPerformanceHints(\n createGenerationPerformanceHints({\n chapters: workChapters,\n concurrent,\n hasJobWork: steps.length > 0,\n hasRequestWork: usesProvider,\n }),\n ),\n planning: sumGenerationPlanningCosts(model, steps),\n steps,\n target: input.target,\n usesProvider,\n words,\n };\n}\n\nfunction createQueueAddEstimateSteps(input: {\n readonly chapters: readonly Pick<ChapterEntry, \"stage\" | \"words\">[];\n readonly concurrent: GenerationConcurrency;\n readonly model: string;\n readonly target: BuildJobTarget;\n}): readonly QueueAddEstimateStep[] {\n switch (input.target) {\n case \"index-fts\":\n case \"index-embedding-source\":\n case \"index-embedding-summary\":\n return [\n createQueueAddEstimateStep({\n chapters: input.chapters,\n concurrent: input.concurrent,\n model: input.model,\n prerequisite: false,\n task: input.target,\n }),\n ].filter((step) => step.chapters > 0);\n case \"knowledge-graph\":\n return [\n createQueueAddEstimateStep({\n chapters: input.chapters,\n concurrent: input.concurrent,\n model: input.model,\n prerequisite: true,\n task: \"index-fts\",\n }),\n createQueueAddEstimateStep({\n chapters: input.chapters,\n concurrent: input.concurrent,\n model: input.model,\n prerequisite: false,\n task: \"knowledge-graph\",\n }),\n ].filter((step) => step.chapters > 0);\n case \"reading-graph\":\n return [\n createQueueAddEstimateStep({\n chapters: input.chapters.filter(\n (chapter) => chapter.stage === \"sourced\",\n ),\n concurrent: input.concurrent,\n model: input.model,\n prerequisite: true,\n task: \"index-fts\",\n }),\n createQueueAddEstimateStep({\n chapters: input.chapters.filter(\n (chapter) => chapter.stage === \"sourced\",\n ),\n concurrent: input.concurrent,\n model: input.model,\n prerequisite: false,\n task: \"reading-graph\",\n }),\n ].filter((step) => step.chapters > 0);\n case \"reading-summary\": {\n const graphChapters = input.chapters.filter(\n (chapter) => chapter.stage === \"sourced\",\n );\n const summaryChapters = input.chapters.filter(\n (chapter) => chapter.stage === \"sourced\" || chapter.stage === \"graphed\",\n );\n\n return [\n createQueueAddEstimateStep({\n chapters: graphChapters,\n concurrent: input.concurrent,\n model: input.model,\n prerequisite: true,\n task: \"reading-graph\",\n }),\n createQueueAddEstimateStep({\n chapters: summaryChapters,\n concurrent: input.concurrent,\n model: input.model,\n prerequisite: false,\n task: \"reading-summary\",\n }),\n ].filter((step) => step.chapters > 0);\n }\n }\n}\n\nfunction createQueueAddEstimateStep(input: {\n readonly chapters: readonly Pick<ChapterEntry, \"words\">[];\n readonly concurrent: GenerationConcurrency;\n readonly model: string;\n readonly prerequisite: boolean;\n readonly task: BuildJobTarget;\n}): QueueAddEstimateStep {\n const words = input.chapters.reduce(\n (total, chapter) => total + chapter.words,\n 0,\n );\n\n return {\n chapters: input.chapters.length,\n planning: planGenerationTask(\n input.task,\n words,\n input.chapters.length,\n input.concurrent,\n input.model,\n ),\n prerequisite: input.prerequisite,\n task: input.task,\n words,\n };\n}\n\nfunction sumGenerationPlanningCosts(\n model: string,\n steps: readonly QueueAddEstimateStep[],\n): GenerationPlanningCost {\n return {\n model,\n timeSeconds: {\n max: steps.reduce(\n (total, step) => total + step.planning.timeSeconds.max,\n 0,\n ),\n min: steps.reduce(\n (total, step) => total + step.planning.timeSeconds.min,\n 0,\n ),\n },\n tokens: {\n cacheableInput: steps.reduce(\n (total, step) => total + step.planning.tokens.cacheableInput,\n 0,\n ),\n input: steps.reduce(\n (total, step) => total + step.planning.tokens.input,\n 0,\n ),\n output: steps.reduce(\n (total, step) => total + step.planning.tokens.output,\n 0,\n ),\n },\n };\n}\n\nexport function formatQueueAddEstimateJSON(\n estimate: QueueAddEstimate,\n): unknown {\n return {\n chapters: estimate.chapters,\n concurrent: estimate.usesProvider\n ? estimate.concurrent\n : { job: estimate.concurrent.job },\n includesPrerequisites: estimate.includesPrerequisites,\n performanceHints: estimate.performanceHints,\n steps: estimate.steps.map((step) => ({\n chapters: step.chapters,\n prerequisite: step.prerequisite,\n task: step.task,\n tokens: step.planning.tokens,\n waitSeconds: step.planning.timeSeconds,\n words: step.words,\n })),\n target: estimate.target,\n tokens: estimate.planning.tokens,\n waitSeconds: estimate.planning.timeSeconds,\n words: estimate.words,\n ...(estimate.usesProvider ? { model: estimate.planning.model } : {}),\n };\n}\n\nexport function formatQueueAddEstimateLines(\n estimate: QueueAddEstimate,\n): readonly string[] {\n return [\n \"Estimate:\",\n ` Work: ${estimate.target} over ${estimate.chapters} chapter${estimate.chapters === 1 ? \"\" : \"s\"} / ${estimate.words} words`,\n ...(estimate.includesPrerequisites\n ? [\" Includes prerequisite Reading Graph work where missing.\"]\n : []),\n ...(estimate.usesProvider ? [` Model: ${estimate.planning.model}`] : []),\n ` Tokens: ${estimate.planning.tokens.input} input / ${estimate.planning.tokens.cacheableInput} cacheable input / ${estimate.planning.tokens.output} output`,\n ` Wait: ${formatGenerationPlanningDuration(estimate.planning.timeSeconds.min)}-${formatGenerationPlanningDuration(estimate.planning.timeSeconds.max)}`,\n ` Current concurrency: job=${estimate.concurrent.job}${estimate.usesProvider ? ` request=${estimate.concurrent.request}` : \"\"}`,\n ...formatQueuePerformanceHintLines(estimate.performanceHints),\n ];\n}\n\nfunction formatQueuePerformanceHintLines(\n hints: readonly CLIGenerationPerformanceHint[],\n): readonly string[] {\n if (hints.length === 0) {\n return [];\n }\n\n return [\n \"Performance hints:\",\n ...hints.flatMap((hint) => [\n ` ${hint.message}`,\n ` Command: ${hint.command}`,\n ]),\n ];\n}\n","export * from \"wiki-graph-sdk/node-platform\";\n","import {\n formatLocatedChapterUri,\n type BuildJob,\n type ChapterEntry,\n type WikiGraphJobChapterReference,\n} from \"wiki-graph-sdk\";\n\nimport {\n formatCLIJSON,\n formatCliCommand,\n formatWikiGraphCommandUri,\n writeTextToStdout,\n} from \"../../support/index.js\";\nimport {\n formatQueueAddEstimateJSON,\n formatQueueAddEstimateLines,\n type QueueAddEstimate,\n} from \"./estimate.js\";\nimport { getNodeResourcePath } from \"../../runtime/node-platform.js\";\nimport {\n getCLIEnvValue,\n getCLIStateDir,\n getWikiGraphSDK,\n} from \"../../runtime/context.js\";\nimport { homedir } from \"os\";\nimport { join } from \"path\";\n\ntype JobChapterReference = WikiGraphJobChapterReference;\n\nexport async function writeJobList(\n jobs: readonly BuildJob[],\n options: { readonly json: boolean },\n): Promise<void> {\n const chapters = await resolveJobChapters(jobs);\n if (options.json) {\n await writeTextToStdout(\n formatCLIJSON({\n items: jobs.map((job) => formatJobJSON(job, chapters.get(job.jobId))),\n }),\n );\n return;\n }\n\n if (jobs.length === 0) {\n await writeTextToStdout(\"No jobs.\\n\");\n return;\n }\n\n await writeTextToStdout(\n `${formatJobListHeader()}\\n${jobs\n .map(\n (job) =>\n `${job.jobId.slice(0, 8).padEnd(8)} ${job.state.padEnd(9)} ${(job.currentStep ?? \"-\").padEnd(7)} ${job.target.padEnd(7)} ${formatJobChapterListLabel(job, chapters.get(job.jobId))}`,\n )\n .join(\"\\n\")}\\n`,\n );\n}\n\nfunction formatJobListHeader(): string {\n return `${\"JOB\".padEnd(8)} ${\"STATE\".padEnd(9)} ${\"STEP\".padEnd(7)} ${\"TARGET\".padEnd(7)} CHAPTER`;\n}\n\nexport async function writeJobStatus(\n job: BuildJob,\n options: { readonly json: boolean },\n): Promise<void> {\n const chapter = await resolveJobChapter(job);\n if (options.json) {\n await writeTextToStdout(formatCLIJSON(formatJobJSON(job, chapter)));\n return;\n }\n\n await writeTextToStdout(\n [\n `Job: ${job.jobId}`,\n `State: ${job.state}`,\n `Archive: ${requireJobResourcePath(job, \"archive\", \"archivePath\")}`,\n `Chapter: ${formatJobChapterLabel(job, chapter)}`,\n ...(chapter === undefined ? [] : [`Chapter URI: ${chapter.locatedUri}`]),\n `Target: ${job.target}`,\n `Step: ${job.currentStep ?? \"-\"}`,\n `Workspace: ${getJobResourcePath(job, \"workspace\", \"workspacePath\") ?? \"-\"}`,\n `Cache: ${getJobResourcePath(job, \"cache\", \"cachePath\") ?? \"-\"}`,\n `Logs: ${getJobResourcePath(job, \"log\", \"logPath\") ?? \"-\"}`,\n ...(job.errorJSON === undefined ? [] : [`Error: ${job.errorJSON}`]),\n ].join(\"\\n\") + \"\\n\",\n );\n}\n\nfunction formatJobJSON(\n job: BuildJob,\n chapter?: JobChapterReference,\n): Record<string, unknown> {\n return {\n archiveKey: job.archiveKey,\n archivePath: getJobResourcePath(job, \"archive\", \"archivePath\"),\n cachePath: getJobResourcePath(job, \"cache\", \"cachePath\"),\n chapterId: job.chapterId,\n ...(chapter === undefined\n ? {}\n : {\n chapter: {\n locatedUri: chapter.locatedUri,\n title: chapter.title,\n uri: chapter.uri,\n },\n }),\n createdAt: job.createdAt,\n ...(job.currentStep === undefined ? {} : { currentStep: job.currentStep }),\n ...(job.errorJSON === undefined ? {} : { errorJSON: job.errorJSON }),\n eventsPath: getJobResourcePath(job, \"events\", \"eventsPath\"),\n ...(job.finishedAt === undefined ? {} : { finishedAt: job.finishedAt }),\n jobId: job.jobId,\n logPath: getJobResourcePath(job, \"log\", \"logPath\"),\n ...(job.llmJSON === undefined\n ? {}\n : { llm: formatJobLLMJSON(job.llmJSON) }),\n ...(job.ownerId === undefined ? {} : { ownerId: job.ownerId }),\n ...(job.prompt === undefined ? {} : { prompt: job.prompt }),\n queueRank: job.queueRank,\n state: job.state,\n ...(job.readingSummaryStartedAt === undefined\n ? {}\n : { readingSummaryStartedAt: job.readingSummaryStartedAt }),\n target: job.target,\n updatedAt: job.updatedAt,\n workspacePath: getJobResourcePath(job, \"workspace\", \"workspacePath\"),\n };\n}\n\nexport function formatJobQueuedNotice(job: BuildJob): string | undefined {\n if (job.state !== \"queued\") {\n return undefined;\n }\n\n return \"Job is queued; the requested artifact or generated data is not ready until the job succeeds.\";\n}\n\nfunction formatJobLLMJSON(value: string): unknown {\n let parsed: unknown;\n\n try {\n parsed = JSON.parse(value);\n } catch {\n return {\n configured: true,\n invalid: true,\n };\n }\n\n const llm = readJobLLMObject(parsed);\n\n return {\n configured: true,\n ...(readOptionalString(llm, \"provider\") === undefined\n ? {}\n : { provider: readOptionalString(llm, \"provider\") }),\n ...(readOptionalString(llm, \"model\") === undefined\n ? {}\n : { model: readOptionalString(llm, \"model\") }),\n ...(readOptionalString(llm, \"name\") === undefined\n ? {}\n : { name: readOptionalString(llm, \"name\") }),\n hasApiKey: readOptionalString(llm, \"apiKey\") !== undefined,\n hasBaseURL:\n readOptionalString(llm, \"baseURL\") !== undefined ||\n readOptionalString(llm, \"baseUrl\") !== undefined ||\n readOptionalString(llm, \"chatCompletionsUrl\") !== undefined,\n };\n}\n\nfunction readJobLLMObject(value: unknown): Record<string, unknown> {\n if (!isRecord(value)) {\n return {};\n }\n\n const nested = value.llm;\n\n return isRecord(nested) ? nested : value;\n}\n\nfunction readOptionalString(\n value: Record<string, unknown>,\n key: string,\n): string | undefined {\n const field = value[key];\n\n return typeof field === \"string\" && field !== \"\" ? field : undefined;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n\nexport async function writeJobSummary(\n job: BuildJob,\n options: {\n readonly estimate?: QueueAddEstimate;\n readonly chapter?: ChapterEntry;\n readonly json: boolean;\n readonly watch?: boolean;\n } = { json: false },\n): Promise<void> {\n const chapter =\n options.chapter === undefined\n ? await resolveJobChapter(job)\n : createJobChapterReference(job, options.chapter);\n if (options.json) {\n await writeTextToStdout(\n formatCLIJSON({\n ...formatJobJSON(job, chapter),\n ...(formatJobQueuedNotice(job) === undefined\n ? {}\n : { notice: formatJobQueuedNotice(job) }),\n ...(options.estimate === undefined\n ? {}\n : { estimate: formatQueueAddEstimateJSON(options.estimate) }),\n ...(options.watch === true\n ? {\n watchCommand: formatCliCommand([\n `wikg://local/job/${job.jobId}`,\n \"watch\",\n ]),\n }\n : {}),\n }),\n );\n return;\n }\n\n await writeTextToStdout(\n [\n `Job ${job.jobId} ${job.state} ${job.target} chapter ${formatJobChapterLabel(job, chapter)}`,\n ...(chapter === undefined ? [] : [`Chapter URI: ${chapter.locatedUri}`]),\n ...(formatJobQueuedNotice(job) === undefined\n ? []\n : [formatJobQueuedNotice(job)!]),\n ...(options.watch === true\n ? [\n `Watch: ${formatCliCommand([\n `wikg://local/job/${job.jobId}`,\n \"watch\",\n ])}`,\n ]\n : []),\n ...(options.estimate === undefined\n ? []\n : [\"\", ...formatQueueAddEstimateLines(options.estimate)]),\n \"\",\n ].join(\"\\n\"),\n );\n}\n\nexport async function writeArchiveAddSummary(input: {\n readonly archivePath: string;\n readonly created: readonly {\n readonly chapter: ChapterEntry;\n readonly job: BuildJob;\n }[];\n readonly estimate?: QueueAddEstimate;\n readonly json: boolean;\n readonly skipped: readonly {\n readonly chapter: ChapterEntry;\n readonly reason: string;\n }[];\n}): Promise<void> {\n const jobsCommand = formatCliCommand([\"wikg://local/job\", \"--json\"]);\n const verifyCommand = formatCliCommand([\n formatWikiGraphCommandUri(input.archivePath),\n \"inspect\",\n ]);\n\n if (input.json) {\n await writeTextToStdout(\n formatCLIJSON({\n created: input.created.map((item) =>\n formatJobJSON(\n item.job,\n createJobChapterReference(item.job, item.chapter),\n ),\n ),\n ...(input.estimate === undefined\n ? {}\n : { estimate: formatQueueAddEstimateJSON(input.estimate) }),\n ...(input.created.length === 0 ? {} : { jobsCommand, verifyCommand }),\n skipped: input.skipped.map((item) => ({\n chapterId: item.chapter.chapterId,\n chapter: formatChapterJSON(\n createJobChapterReferenceFromPath(input.archivePath, item.chapter),\n ),\n reason: item.reason,\n })),\n }),\n );\n return;\n }\n\n const lines = [\n `Created: ${input.created.length}`,\n `Skipped: ${input.skipped.length}`,\n ];\n\n for (const job of input.created) {\n lines.push(\n `Job ${job.job.jobId} ${job.job.state} ${job.job.target} chapter ${formatChapterLabel(job.chapter)}`,\n `Chapter URI: ${createJobChapterReference(job.job, job.chapter).locatedUri}`,\n );\n }\n for (const skipped of input.skipped) {\n lines.push(\n `Skipped chapter ${formatChapterLabel(skipped.chapter)}: ${skipped.reason}`,\n );\n }\n if (input.estimate !== undefined) {\n lines.push(\"\", ...formatQueueAddEstimateLines(input.estimate));\n }\n if (input.created.length > 0) {\n lines.push(\n \"\",\n `Jobs: ${jobsCommand}`,\n `Verify after the jobs finish: ${verifyCommand}`,\n );\n }\n\n await writeTextToStdout(`${lines.join(\"\\n\")}\\n`);\n}\n\nfunction formatJobChapterLabel(\n job: BuildJob,\n chapter: JobChapterReference | undefined,\n): string {\n return chapter === undefined\n ? `[unavailable; internal id ${job.chapterId}]`\n : formatChapterLabel(chapter);\n}\n\nfunction formatJobChapterListLabel(\n job: BuildJob,\n chapter: JobChapterReference | undefined,\n): string {\n return chapter === undefined\n ? `[unavailable; internal id ${job.chapterId}]`\n : `${chapter.title ?? \"[untitled]\"} ${chapter.locatedUri}`;\n}\n\nfunction formatChapterLabel(\n chapter: Pick<JobChapterReference, \"title\" | \"uri\">,\n): string {\n return chapter.title === null || chapter.title === undefined\n ? chapter.uri\n : `${JSON.stringify(chapter.title)} (${chapter.uri})`;\n}\n\nfunction formatChapterJSON(\n chapter: JobChapterReference,\n): Record<string, unknown> {\n return {\n locatedUri: chapter.locatedUri,\n title: chapter.title,\n uri: chapter.uri,\n };\n}\n\nfunction createJobChapterReference(\n job: BuildJob,\n chapter: ChapterEntry,\n): JobChapterReference {\n return createJobChapterReferenceFromPath(\n requireJobResourcePath(job, \"archive\", \"archivePath\"),\n chapter,\n );\n}\n\nfunction createJobChapterReferenceFromPath(\n archivePath: string,\n chapter: ChapterEntry,\n): JobChapterReference {\n return {\n locatedUri: formatLocatedChapterUri(archivePath, chapter.path),\n title: chapter.title,\n uri: chapter.uri,\n };\n}\n\nasync function resolveJobChapters(\n jobs: readonly BuildJob[],\n): Promise<ReadonlyMap<string, JobChapterReference>> {\n return await getWikiGraphSDK().jobs.resolveChapters(jobs);\n}\n\nasync function resolveJobChapter(\n job: BuildJob,\n): Promise<JobChapterReference | undefined> {\n return await getWikiGraphSDK().jobs.resolveChapter(job);\n}\n\nfunction getJobResourcePath(\n job: BuildJob,\n resourceKey: \"archive\" | \"cache\" | \"events\" | \"log\" | \"workspace\",\n legacyKey:\n | \"archivePath\"\n | \"cachePath\"\n | \"eventsPath\"\n | \"logPath\"\n | \"workspacePath\",\n): string | undefined {\n const record = job as unknown as Record<string, unknown>;\n const resource = record[resourceKey];\n if (resource !== undefined) {\n const managedPath = getManagedJobResourcePath(resource);\n if (managedPath !== undefined) return managedPath;\n return getNodeResourcePath(resource as BuildJob[typeof resourceKey]);\n }\n const legacyPath = record[legacyKey];\n if (typeof legacyPath === \"string\") return legacyPath;\n return undefined;\n}\n\nfunction getManagedJobResourcePath(resource: unknown): string | undefined {\n if (\n typeof resource !== \"object\" ||\n resource === null ||\n !(\"identity\" in resource) ||\n typeof resource.identity !== \"string\" ||\n !resource.identity.startsWith(\"managed:library:\")\n ) {\n return undefined;\n }\n\n const relativePath = resource.identity.slice(\"managed:library:\".length);\n const segments = relativePath.split(\"/\");\n if (\n relativePath === \"\" ||\n segments.some(\n (segment) =>\n segment === \"\" ||\n segment === \".\" ||\n segment === \"..\" ||\n segment.includes(\"\\\\\"),\n )\n ) {\n throw new TypeError(`Invalid managed job resource: ${resource.identity}`);\n }\n const environmentHome = getCLIEnvValue(\"HOME\")?.trim();\n const stateDirectory =\n getCLIStateDir() ??\n join(\n environmentHome === undefined || environmentHome === \"\"\n ? homedir()\n : environmentHome,\n \".wikigraph\",\n );\n return join(stateDirectory, ...segments);\n}\n\nfunction requireJobResourcePath(\n job: BuildJob,\n resourceKey: \"archive\" | \"cache\" | \"events\" | \"log\" | \"workspace\",\n legacyKey:\n | \"archivePath\"\n | \"cachePath\"\n | \"eventsPath\"\n | \"logPath\"\n | \"workspacePath\",\n): string {\n const path = getJobResourcePath(job, resourceKey, legacyKey);\n if (path !== undefined) return path;\n throw new TypeError(`Build job is missing ${resourceKey}`);\n}\n","import type { BuildJob, ChapterEntry } from \"wiki-graph-sdk\";\n\nimport type { CLIQueueArguments } from \"../../args/index.js\";\nimport type { CLIConfig } from \"../../runtime/config.js\";\nimport { isCLIQueueAutostartEnabled } from \"../../runtime/context.js\";\nimport { getWikiGraphSDK } from \"../../runtime/context.js\";\nimport { spawnInternalChild } from \"../../runtime/internal-child.js\";\nimport { createQueueAddEstimate } from \"./estimate.js\";\nimport { writeArchiveAddSummary } from \"./output.js\";\n\nexport async function addChapterJob(\n args: CLIQueueArguments,\n chapterId: number,\n): Promise<BuildJob> {\n const result = await getWikiGraphSDK().jobs.enqueue({\n archive: args.archivePath!,\n boost: args.boost ?? false,\n chapterId,\n ...(args.llmJSON === undefined ? {} : { llmJSON: args.llmJSON }),\n ...(args.prompt === undefined ? {} : { prompt: args.prompt }),\n target: args.target ?? \"reading-summary\",\n });\n const created = result.created[0];\n if (created === undefined)\n throw new Error(`Chapter ${chapterId} was not queued.`);\n return created.job.snapshot;\n}\n\nexport async function addArchiveJobs(\n args: CLIQueueArguments,\n config: CLIConfig,\n): Promise<void> {\n const result = await getWikiGraphSDK().jobs.enqueue({\n archive: args.archivePath!,\n boost: args.boost ?? false,\n ...(args.chapterIds === undefined ? {} : { chapterIds: args.chapterIds }),\n ...(args.llmJSON === undefined ? {} : { llmJSON: args.llmJSON }),\n ...(args.prompt === undefined ? {} : { prompt: args.prompt }),\n target: args.target ?? \"reading-summary\",\n });\n const created = result.created.map(({ chapter, job }) => ({\n chapter,\n job: job.snapshot,\n }));\n\n await writeArchiveAddSummary({\n archivePath: args.archivePath!,\n created,\n ...(created.length === 0\n ? {}\n : {\n estimate: createQueueAddEstimate({\n chapters: created.map((item) => item.chapter),\n config,\n target: args.target ?? \"reading-summary\",\n }),\n }),\n json: args.json ?? false,\n skipped: result.skipped,\n });\n}\n\nexport async function assertQueueAddReady(\n args: CLIQueueArguments,\n chapterId: number,\n): Promise<void> {\n await getWikiGraphSDK().jobs.planEnqueue({\n archive: args.archivePath!,\n chapterId,\n ...(args.llmJSON === undefined ? {} : { llmJSON: args.llmJSON }),\n target: args.target ?? \"reading-summary\",\n });\n}\n\nexport async function readQueueAddChapter(\n args: CLIQueueArguments,\n chapterId: number,\n): Promise<ChapterEntry> {\n const archive = await getWikiGraphSDK().archives.open(args.archivePath!);\n const matched = (await archive.listChapters()).find(\n (chapter) => chapter.chapterId === chapterId,\n );\n if (matched === undefined)\n throw new Error(`Chapter ${chapterId} does not exist.`);\n return matched;\n}\n\nexport function assertBuildCostAccepted(args: CLIQueueArguments): void {\n if (args.acceptCost === true) {\n return;\n }\n\n throw new Error(\n \"Generation tasks can call an LLM, consume tokens, incur provider charges, and run for minutes to hours on large archives. Run `wg <archive-uri> inspect`, then rerun `wg wikg://local/job add` with --accept-cost if the cost and wait time are acceptable.\",\n );\n}\n\nexport function tryStartQueueWorker(): void {\n if (!isCLIQueueAutostartEnabled()) {\n return;\n }\n\n const child = spawnInternalChild(\"queue-worker\", {\n detached: true,\n });\n\n child.unref();\n}\n","import { readFile } from \"fs/promises\";\n\nimport {\n formatLocatedChapterUri,\n parseChapterTreeInput,\n parseSourceTextJsonl,\n type BuildJobTarget,\n type ChapterTree,\n type ChapterTreeApplyResult,\n type ChapterDetails,\n type ChapterEntry,\n type IndexArtifactKind,\n type WikiGraphChapterArtifactStatus,\n} from \"wiki-graph-sdk\";\nimport { getWikiGraphSDK } from \"../../runtime/context.js\";\n\nimport type { CLIArchiveChapterArguments } from \"../../args/index.js\";\nimport type { RenderTreeNode } from \"../../support/index.js\";\nimport {\n parseLocatedWikiGraphUri,\n renderTreeText,\n readTextStreamFromStdin,\n writeTextToStdout,\n} from \"../../support/index.js\";\nimport { formatCLIJSON } from \"../../support/index.js\";\nimport { tryStartQueueWorker } from \"../queue/add.js\";\nimport { writeJobSummary } from \"../queue/output.js\";\n\nexport async function runArchiveChapterCommand(\n args: CLIArchiveChapterArguments,\n): Promise<void> {\n const sdk = getWikiGraphSDK();\n const archive = await sdk.archives.open(args.path);\n switch (args.action) {\n case \"add\": {\n const details = await archive.addChapter({\n ...(args.parentChapterPath === undefined\n ? {}\n : { parentPath: args.parentChapterPath }),\n ...(args.inputPath === undefined\n ? {}\n : { source: await readRequiredSourceText(args) }),\n ...(args.title === undefined ? {} : { title: args.title }),\n });\n await writeChapterDetails(details, args.json ?? false, {\n locatedUri: formatChapterCommandUri(args.path, details.path),\n });\n return;\n }\n case \"list\":\n await writeChapterList(await archive.listChapters(), args.json ?? false);\n return;\n case \"get-index-artifact\":\n await writeIndexArtifactStatus(\n await archive.getChapterArtifact(\n requireChapterPath(args.chapterPath),\n requireIndexArtifactKind(args.indexArtifactKind),\n ),\n args.json ?? false,\n );\n return;\n case \"build-index-artifact\": {\n const chapter = await archive.getChapter(\n requireChapterPath(args.chapterPath),\n );\n const job = await sdk.jobs.create({\n archive: archive.path,\n chapterId: chapter.chapterId,\n target: requireIndexArtifactTarget(args.indexArtifactTarget),\n });\n\n tryStartQueueWorker();\n await writeJobSummary(job.snapshot, {\n chapter,\n json: args.json ?? false,\n watch: true,\n });\n return;\n }\n case \"delete-index-artifact\": {\n const deleted = await archive.deleteChapterArtifact(\n requireChapterPath(args.chapterPath),\n requireIndexArtifactKind(args.indexArtifactKind),\n );\n await writeTextToStdout(\n args.json === true\n ? formatCLIJSON(deleted)\n : `Deleted ${formatIndexArtifactKind(deleted.kind)} index artifact for chapter ${deleted.chapterId}.\\n`,\n );\n return;\n }\n case \"move\":\n await writeChapterDetails(\n await archive.moveChapter(requireChapterPath(args.chapterPath), {\n ...(args.afterChapterPath === undefined\n ? {}\n : { afterPath: args.afterChapterPath }),\n ...(args.beforeChapterPath === undefined\n ? {}\n : { beforePath: args.beforeChapterPath }),\n ...(args.first === undefined ? {} : { first: args.first }),\n ...(args.last === undefined ? {} : { last: args.last }),\n ...(args.moveToRoot === undefined ? {} : { root: args.moveToRoot }),\n ...(args.parentChapterPath === undefined\n ? {}\n : { parentPath: args.parentChapterPath }),\n }),\n args.json ?? false,\n );\n return;\n case \"remove\":\n await archive.removeChapter(\n requireChapterPath(args.chapterPath),\n args.recursive ?? false,\n );\n await writeTextToStdout(\n args.json === true\n ? formatCLIJSON({\n removed: true,\n uri: `wikg://chapter/${args.chapterPath}`,\n })\n : `Removed chapter wikg://chapter/${args.chapterPath}.\\n`,\n );\n return;\n case \"reset\":\n await writeChapterDetails(\n await archive.resetChapter(\n requireChapterPath(args.chapterPath),\n args.resetStage!,\n ),\n args.json ?? false,\n );\n return;\n case \"set-source\": {\n const sourceText = await readRequiredSourceText(args);\n const parsed =\n args.inputFormat === \"jsonl\"\n ? parseSourceTextJsonl(sourceText)\n : undefined;\n await writeChapterDetails(\n await archive.setChapterSource(\n requireChapterPath(args.chapterPath),\n parsed?.text ?? sourceText,\n parsed === undefined ? {} : { provenance: parsed.provenance },\n ),\n args.json ?? false,\n );\n return;\n }\n case \"set-summary\":\n await writeChapterDetails(\n await archive.setChapterSummary(\n requireChapterPath(args.chapterPath),\n await readContentText(args),\n ),\n args.json ?? false,\n );\n return;\n case \"set-title\":\n await writeChapterDetails(\n await archive.setChapterTitle(\n requireChapterPath(args.chapterPath),\n args.clearTitle === true ? null : args.title,\n ),\n false,\n );\n return;\n case \"tree\":\n if (args.treeAction === \"apply\") {\n await writeChapterTreeApplyResult(\n await archive.applyChapterTree(\n parseChapterTreeInput(JSON.parse(await readContentText(args))),\n { dryRun: args.dryRun ?? false },\n ),\n args.dryRun ?? false,\n );\n return;\n }\n await writeChapterTree(\n await archive.getChapterTree(),\n args.json ?? false,\n );\n return;\n }\n}\nfunction requireChapterPath(chapterPath: string | undefined): string {\n if (chapterPath === undefined) {\n throw new Error(\"Missing chapter path.\");\n }\n return chapterPath;\n}\n\nfunction requireIndexArtifactKind(\n kind: IndexArtifactKind | undefined,\n): IndexArtifactKind {\n if (kind === undefined) {\n throw new Error(\"Missing index artifact kind.\");\n }\n\n return kind;\n}\n\nfunction requireIndexArtifactTarget(\n target: BuildJobTarget | undefined,\n): BuildJobTarget {\n if (target === undefined) {\n throw new Error(\"Missing index artifact build target.\");\n }\n\n return target;\n}\n\nasync function writeIndexArtifactStatus(\n status: WikiGraphChapterArtifactStatus,\n json: boolean,\n): Promise<void> {\n if (json) {\n await writeTextToStdout(formatCLIJSON(status));\n return;\n }\n\n const state =\n status.artifact === undefined\n ? \"missing\"\n : status.current\n ? \"current\"\n : \"outdated\";\n\n await writeTextToStdout(\n [\n `Chapter: ${status.chapterId}`,\n `Index artifact: ${formatIndexArtifactKind(status.kind)}`,\n `State: ${state}`,\n ...(status.artifact === undefined\n ? []\n : [\n `Source revision: ${status.artifact.sourceRevision}`,\n `Current revision: ${status.revision}`,\n ]),\n ].join(\"\\n\") + \"\\n\",\n );\n}\n\nfunction formatIndexArtifactKind(kind: IndexArtifactKind): string {\n switch (kind) {\n case \"fts\":\n return \"FTS\";\n case \"embedding-source\":\n return \"source embedding\";\n case \"embedding-summary\":\n return \"summary embedding\";\n }\n}\n\nasync function readContentText(\n args: Pick<CLIArchiveChapterArguments, \"inputPath\" | \"inputValue\">,\n): Promise<string> {\n if (args.inputValue !== undefined && args.inputPath !== undefined) {\n throw new Error(\"Choose either a positional value or --input, not both.\");\n }\n if (args.inputValue !== undefined) {\n return args.inputValue;\n }\n if (args.inputPath === \"-\") {\n let content = \"\";\n\n for await (const chunk of readTextStreamFromStdin()) {\n content += chunk;\n }\n\n return content;\n }\n if (args.inputPath !== undefined) {\n return await readFile(args.inputPath, \"utf8\");\n }\n throw new Error(\n \"Missing input. Pass a positional value, use --input <path>, or use --input - for stdin.\",\n );\n}\n\nasync function readRequiredSourceText(\n args: Pick<CLIArchiveChapterArguments, \"inputPath\" | \"inputValue\">,\n): Promise<string> {\n const content = await readContentText(args);\n\n if (content.trim() === \"\") {\n throw new Error(\n \"Source input is empty. Pass non-empty positional text, use --input <path>, or use --input - for stdin.\",\n );\n }\n\n return content;\n}\n\nasync function writeChapterDetails(\n details: ChapterDetails,\n json: boolean,\n options: { readonly locatedUri?: string } = {},\n): Promise<void> {\n if (json) {\n await writeTextToStdout(\n formatCLIJSON({\n childCount: details.childCount,\n graphReady: details.graphReady,\n hasSummary: details.hasSummary,\n ...(options.locatedUri === undefined\n ? {}\n : { locatedUri: options.locatedUri }),\n sourceUnits: details.fragmentCount,\n stage: formatStage(details.stage),\n title: details.title,\n uri: details.uri,\n }),\n );\n return;\n }\n\n const lines = [\n `Chapter: ${details.uri}`,\n ...(options.locatedUri === undefined\n ? []\n : [`Located URI: ${options.locatedUri}`]),\n `Title: ${details.title ?? \"[untitled]\"}`,\n `Stage: ${formatStage(details.stage)}`,\n `Source Units: ${details.fragmentCount}`,\n `Children: ${details.childCount}`,\n `Graph: ${details.graphReady ? \"yes\" : \"no\"}`,\n `Summary: ${details.hasSummary ? \"yes\" : \"no\"}`,\n ];\n\n await writeTextToStdout(`${lines.join(\"\\n\")}\\n`);\n}\n\nfunction formatChapterCommandUri(\n archiveLocator: string,\n chapterPath: string,\n): string {\n if (archiveLocator.startsWith(\"wikg://lib/\")) {\n return `${archiveLocator.replace(/\\/+$/u, \"\")}/chapter/${chapterPath}`;\n }\n if (archiveLocator.startsWith(\"wikg://\")) {\n const parsed = parseLocatedWikiGraphUri(archiveLocator);\n\n if (parsed.archivePath !== undefined) {\n return formatLocatedChapterUri(parsed.archivePath, chapterPath);\n }\n }\n\n return formatLocatedChapterUri(archiveLocator, chapterPath);\n}\n\nasync function writeChapterList(\n entries: readonly ChapterEntry[],\n json: boolean,\n): Promise<void> {\n if (json) {\n await writeTextToStdout(\n formatCLIJSON({\n chapters: entries.map((entry) => ({\n uri: entry.uri,\n title: entry.title,\n stage: formatStage(entry.stage),\n })),\n }),\n );\n return;\n }\n\n if (entries.length === 0) {\n await writeTextToStdout(\"No chapters.\\n\");\n return;\n }\n\n await writeTextToStdout(\n `${entries\n .map(\n (entry) =>\n `${\" \".repeat(entry.depth)}[${formatStage(entry.stage)}] ${entry.title ?? \"[untitled]\"} (${entry.uri})`,\n )\n .join(\"\\n\")}\\n`,\n );\n}\n\nasync function writeChapterTree(\n tree: ChapterTree,\n json: boolean,\n): Promise<void> {\n if (json) {\n await writeTextToStdout(formatCLIJSON(tree));\n return;\n }\n\n if (tree.chapters.length === 0) {\n await writeTextToStdout(\"No chapters.\\n\");\n return;\n }\n\n await writeTextToStdout(\n renderTreeText(tree.chapters.map(formatChapterTreeRenderNode)),\n );\n}\n\nfunction formatChapterTreeRenderNode(\n node: ChapterTree[\"chapters\"][number],\n): RenderTreeNode {\n return {\n children: node.children.map(formatChapterTreeRenderNode),\n label: `${formatChapterTreeTitle(node.title)} (${formatChapterTreeKey(node.uri)})`,\n };\n}\n\nfunction formatChapterTreeKey(uri: string): string {\n return uri.split(\"/\").at(-1) ?? uri;\n}\n\nfunction formatChapterTreeTitle(title: string | null): string {\n return title ?? \"[untitled]\";\n}\n\nasync function writeChapterTreeApplyResult(\n result: ChapterTreeApplyResult,\n dryRun: boolean,\n): Promise<void> {\n const lines = [\n dryRun ? \"Dry run: chapter tree not changed.\" : \"Applied chapter tree.\",\n `Changed: ${result.changed ? \"yes\" : \"no\"}`,\n `Moved: ${result.moved.length}`,\n `Renamed: ${result.renamed.length}`,\n `Unchanged: ${result.unchanged}`,\n ];\n\n for (const move of result.moved) {\n lines.push(\n `Move ${move.oldUri} [index ${move.oldIndex}] -> ${move.newUri} [index ${move.newIndex}]`,\n );\n }\n for (const rename of result.renamed) {\n lines.push(\n `Rename ${rename.uri}: ${formatTitle(rename.oldTitle)} -> ${formatTitle(rename.newTitle)}`,\n );\n }\n\n await writeTextToStdout(`${lines.join(\"\\n\")}\\n`);\n}\n\nfunction formatTitle(title: string | null): string {\n return title === null ? \"null\" : JSON.stringify(title);\n}\n\nfunction formatStage(stage: ChapterEntry[\"stage\"]): string {\n switch (stage) {\n case \"planned\":\n return \"planned\";\n case \"sourced\":\n return \"source\";\n case \"graphed\":\n return \"reading-graph\";\n case \"summarized\":\n return \"reading-summary\";\n }\n}\n","import type { WikiGraphArchiveIndexStatus } from \"wiki-graph-sdk\";\n\nimport type { CLIArchiveIndexArguments } from \"../../args/index.js\";\nimport { writeTextToStdout } from \"../../support/index.js\";\nimport { formatCLIJSON } from \"../../support/index.js\";\nimport {\n ProgressOutputWriter,\n type ProgressCounter,\n} from \"../../runtime/index.js\";\nimport { getWikiGraphSDK } from \"../../runtime/context.js\";\n\nconst INDEX_PROGRESS_OUTPUT_INTERVAL_MS = 6_000;\n\nexport async function runArchiveIndexCommand(\n args: CLIArchiveIndexArguments,\n): Promise<void> {\n switch (args.action) {\n case \"get\":\n await readIndexCache(args);\n return;\n case \"sync\":\n await syncIndexCache(args);\n return;\n case \"clean\":\n await cleanIndexCache(args);\n return;\n }\n}\n\nasync function readIndexCache(args: CLIArchiveIndexArguments): Promise<void> {\n const archive = await getWikiGraphSDK().archives.open(args.archivePath);\n await writeIndexOutput(args, await archive.getSearchIndexStatus());\n}\n\nasync function syncIndexCache(args: CLIArchiveIndexArguments): Promise<void> {\n const archive = await getWikiGraphSDK().archives.open(args.archivePath);\n const writer = new ProgressOutputWriter({\n jsonl: args.jsonl ?? false,\n throttleMs: INDEX_PROGRESS_OUTPUT_INTERVAL_MS,\n });\n\n await writer.write({\n json: { type: \"started\" },\n kind: \"lifecycle\",\n text: \"index cache sync started\\nsteps: checking -> collecting -> clearing -> indexing-text -> indexing-dense -> finalizing\",\n });\n await writer.write({\n json: { phase: \"checking\", type: \"status_snapshot\" },\n kind: \"status\",\n phase: \"checking\",\n });\n const result = await archive.syncSearchIndex({\n onProgress: async (event) => {\n await writer.write({\n counters:\n event.done === undefined || event.total === undefined\n ? []\n : [formatIndexCounter(event)],\n json: {\n counters:\n event.done === undefined || event.total === undefined\n ? []\n : [formatIndexCounter(event)],\n phase: event.phase,\n type: \"status_snapshot\",\n },\n kind: \"status\",\n phase: event.phase,\n });\n },\n skipUnindexed: args.skipUnindexed ?? false,\n });\n if (!result.rebuilt) {\n await writer.write({\n json: { type: \"already-current\" },\n kind: \"lifecycle\",\n text: \"already current\",\n });\n }\n await writer.write({\n json: { type: \"completed\" },\n kind: \"lifecycle\",\n text: \"index cache synced\",\n });\n await writer.write({\n json: { type: \"succeeded\" },\n kind: \"lifecycle\",\n text: \"succeeded\",\n });\n}\n\nasync function cleanIndexCache(args: CLIArchiveIndexArguments): Promise<void> {\n const archive = await getWikiGraphSDK().archives.open(args.archivePath);\n await writeIndexOutput(args, await archive.cleanSearchIndex());\n}\n\nfunction formatIndexCounter(input: {\n readonly done?: number;\n readonly total?: number;\n readonly unit?: \"chapter\" | \"object\" | \"sentence\" | \"vector\";\n}): ProgressCounter {\n return {\n done: input.done ?? 0,\n name: formatIndexCounterName(input.unit),\n total: input.total ?? 0,\n unit: formatIndexUnit(input.unit),\n };\n}\n\nfunction formatIndexCounterName(\n unit: \"chapter\" | \"object\" | \"sentence\" | \"vector\" | undefined,\n): string {\n switch (unit) {\n case \"chapter\":\n return \"chapters\";\n case \"object\":\n return \"objects\";\n case \"sentence\":\n return \"sentences\";\n case \"vector\":\n return \"vectors\";\n case undefined:\n return \"items\";\n }\n}\n\nfunction formatIndexUnit(\n unit: \"chapter\" | \"object\" | \"sentence\" | \"vector\" | undefined,\n): string {\n switch (unit) {\n case \"chapter\":\n return \"chapters\";\n case \"object\":\n return \"objects\";\n case \"sentence\":\n return \"sentences\";\n case \"vector\":\n return \"vectors\";\n case undefined:\n return \"items\";\n }\n}\n\nasync function writeIndexOutput(\n args: CLIArchiveIndexArguments,\n payload: WikiGraphArchiveIndexStatus,\n): Promise<void> {\n if (args.json === true) {\n await writeTextToStdout(formatCLIJSON(payload));\n return;\n }\n\n await writeTextToStdout(\n [\n `Status: ${formatArchiveIndexStatus(payload)}`,\n `Enabled indexes: ${payload.capabilities.indexes}`,\n `Dense current: ${payload.capabilities.dense.current ? \"yes\" : \"no\"}`,\n ...(payload.capabilities.dense.model === undefined\n ? []\n : [`Dense model: ${payload.capabilities.dense.model}`]),\n ...(payload.capabilities.dense.dimensions === undefined\n ? []\n : [`Dense dimensions: ${payload.capabilities.dense.dimensions}`]),\n \"\",\n ].join(\"\\n\"),\n );\n}\n\nfunction formatArchiveIndexStatus(\n input: WikiGraphArchiveIndexStatus,\n): \"current\" | \"missing\" | \"outdated\" {\n if (input.current) {\n return \"current\";\n }\n if (input.capabilities.indexes === \"missing\") {\n return \"missing\";\n }\n return \"outdated\";\n}\n","import type { BookMeta } from \"wiki-graph-sdk\";\n\nimport type {\n ArchiveMetaPatch,\n CLIArchiveCoverArguments,\n CLIArchiveMetadataArguments,\n} from \"../../args/index.js\";\nimport { writeBinaryToStdout, writeTextToStdout } from \"../../support/index.js\";\nimport { formatCLIJSON } from \"../../support/index.js\";\nimport { getWikiGraphSDK } from \"../../runtime/context.js\";\n\nexport async function runArchiveMetaCommand(\n args: CLIArchiveMetadataArguments,\n): Promise<void> {\n if (args.metaPatch !== undefined) {\n await updateArchiveMeta(args.inputPath, args.metaPatch);\n return;\n }\n\n const archive = await getWikiGraphSDK().archives.open(args.inputPath);\n await writeArchiveMeta(await archive.readBookMeta(), {\n json: args.json ?? false,\n });\n}\n\nexport async function runArchiveCoverCommand(\n args: CLIArchiveCoverArguments,\n): Promise<void> {\n const archive = await getWikiGraphSDK().archives.open(args.inputPath);\n if (process.stdout.isTTY === true) {\n throw new Error(\n \"Refusing to write binary cover data to an interactive terminal. Redirect stdout or pipe it.\",\n );\n }\n\n const cover = await archive.readCover();\n\n if (cover === undefined) {\n throw new Error(\"Document cover is missing.\");\n }\n\n await writeBinaryToStdout(cover.data);\n}\n\nasync function updateArchiveMeta(\n path: string,\n patch: ArchiveMetaPatch,\n): Promise<void> {\n const archive = await getWikiGraphSDK().archives.open(path);\n const meta = await archive.readBookMeta();\n\n if (meta === undefined) {\n throw new Error(\"Archive metadata is missing.\");\n }\n\n const updatedMeta = applyArchiveMetaPatch(meta, patch);\n\n await archive.replaceBookMeta(updatedMeta);\n await writeArchiveMeta(updatedMeta, { json: false });\n}\n\nasync function writeArchiveMeta(\n meta: BookMeta | undefined,\n options: { readonly json: boolean },\n): Promise<void> {\n if (options.json) {\n await writeTextToStdout(formatCLIJSON(formatMetaJSON(meta)));\n return;\n }\n\n if (meta === undefined) {\n await writeTextToStdout(\"No document metadata is available.\\n\");\n return;\n }\n\n const lines: string[] = [];\n\n appendMetaLines(lines, meta);\n\n await writeTextToStdout(`${lines.join(\"\\n\")}\\n`);\n}\n\nfunction applyArchiveMetaPatch(\n meta: BookMeta,\n patch: ArchiveMetaPatch,\n): BookMeta {\n return {\n ...meta,\n title: patch.clearTitle === true ? null : (patch.title ?? meta.title),\n authors:\n patch.clearAuthors === true\n ? []\n : patch.authors === undefined\n ? meta.authors\n : [...patch.authors],\n language:\n patch.clearLanguage === true ? null : (patch.language ?? meta.language),\n identifier:\n patch.clearIdentifier === true\n ? null\n : (patch.identifier ?? meta.identifier),\n publisher:\n patch.clearPublisher === true\n ? null\n : (patch.publisher ?? meta.publisher),\n publishedAt:\n patch.clearPublishedAt === true\n ? null\n : (patch.publishedAt ?? meta.publishedAt),\n description:\n patch.clearDescription === true\n ? null\n : (patch.description ?? meta.description),\n };\n}\n\nfunction appendMetaLines(lines: string[], meta: BookMeta | undefined): void {\n lines.push(`Source Format: ${meta?.sourceFormat ?? \"[none]\"}`);\n lines.push(`Title: ${meta?.title ?? \"[none]\"}`);\n lines.push(\n `Authors: ${\n meta?.authors.length === undefined || meta.authors.length === 0\n ? \"[none]\"\n : meta.authors.join(\", \")\n }`,\n );\n lines.push(`Language: ${meta?.language ?? \"[none]\"}`);\n lines.push(`Identifier: ${meta?.identifier ?? \"[none]\"}`);\n lines.push(`Publisher: ${meta?.publisher ?? \"[none]\"}`);\n lines.push(`Published At: ${meta?.publishedAt ?? \"[none]\"}`);\n lines.push(`Description: ${meta?.description ?? \"[none]\"}`);\n}\n\nfunction formatMetaJSON(meta: BookMeta | undefined): object {\n return {\n authors: meta?.authors ?? [],\n description: meta?.description ?? null,\n identifier: meta?.identifier ?? null,\n language: meta?.language ?? null,\n publishedAt: meta?.publishedAt ?? null,\n publisher: meta?.publisher ?? null,\n sourceFormat: meta?.sourceFormat ?? null,\n title: meta?.title ?? null,\n };\n}\n","import type { GcRunReport } from \"wiki-graph-sdk/gc\";\n\nimport type { CLIGcArguments } from \"../args/index.js\";\nimport { runInternalChildJSON } from \"../runtime/internal-child.js\";\nimport { writeTextToStdout } from \"../support/index.js\";\nimport { formatCLIJSON } from \"../support/index.js\";\n\nexport async function runGcCommand(args: CLIGcArguments): Promise<void> {\n const report = await runInternalChildJSON<GcRunReport>(\"gc-worker\", {\n args: [\n ...(args.dryRun === true ? [\"--dry-run\"] : []),\n ...(args.force === true ? [\"--force\"] : []),\n ],\n });\n\n if (args.json === true) {\n await writeTextToStdout(formatCLIJSON(report));\n return;\n }\n\n if (report.skipped) {\n await writeTextToStdout(\"GC skipped: another GC run is active.\\n\");\n return;\n }\n\n await writeTextToStdout(\n [\n `GC completed.`,\n `Scanned: ${report.scanned}`,\n `Removed: ${report.removed}`,\n `Freed: ${formatBytes(report.freedBytes)}`,\n ...report.jobs.map((job) =>\n job.error === undefined\n ? `- ${job.name}: scanned ${job.scanned}, removed ${job.removed}, freed ${formatBytes(job.freedBytes)}`\n : `- ${job.name}: failed: ${job.error}`,\n ),\n \"\",\n ].join(\"\\n\"),\n );\n}\n\nfunction formatBytes(bytes: number): string {\n if (bytes < 1024) {\n return `${bytes} B`;\n }\n if (bytes < 1024 * 1024) {\n return `${(bytes / 1024).toFixed(1)} KB`;\n }\n if (bytes < 1024 * 1024 * 1024) {\n return `${(bytes / 1024 / 1024).toFixed(1)} MB`;\n }\n\n return `${(bytes / 1024 / 1024 / 1024).toFixed(1)} GB`;\n}\n","import type { CLILegacyArguments } from \"../args/index.js\";\nimport { getWikiGraphSDK } from \"../runtime/context.js\";\n\nexport async function runLegacyCommand(\n args: CLILegacyArguments,\n): Promise<void> {\n switch (args.action) {\n case \"migrate\": {\n process.stderr.write(\n \"`wg legacy migrate` is deprecated. Use `wg maintenance upgrade <sdpub-path>`.\\n\",\n );\n const result = await getWikiGraphSDK().maintenance.migrateLegacy(\n args.inputPath,\n args.outputPath,\n );\n process.stdout.write(`Wrote ${result.outputPath}\\n`);\n return;\n }\n }\n}\n","import { homedir } from \"os\";\nimport { join, resolve } from \"path\";\n\nimport { getCLICwd, getCLIStateDir } from \"./context.js\";\n\nexport function isWikiGraphHomeTarget(target: string): boolean {\n if (target === \"home\" || target === \"~/.wikigraph\") return true;\n\n const configuredHome = resolve(\n getCLIStateDir() ?? join(homedir(), \".wikigraph\"),\n );\n return resolve(getCLICwd(), target) === configuredHome;\n}\n","import type {\n WikiGraphMaintenanceTarget,\n WikiGraphMaintenanceUpgradeResult,\n} from \"wiki-graph-sdk\";\n\nimport type { CLIMaintenanceArguments } from \"../args/index.js\";\nimport { isWikiGraphHomeTarget } from \"../runtime/home-target.js\";\nimport { getWikiGraphSDK } from \"../runtime/context.js\";\nimport { formatCLIJSON, writeTextToStdout } from \"../support/index.js\";\n\nexport async function runMaintenanceCommand(\n args: CLIMaintenanceArguments,\n): Promise<void> {\n switch (args.action) {\n case \"upgrade\": {\n if (args.outputPath !== undefined || args.target.endsWith(\".sdpub\")) {\n throw new Error(\n \"Legacy sdpub migration is available through `wg legacy migrate`.\",\n );\n }\n const result = await getWikiGraphSDK().maintenance.upgrade(\n parseMaintenanceTarget(args.target),\n );\n await writeTextToStdout(\n args.json === true\n ? formatCLIJSON(result)\n : formatMaintenanceUpgradeResult(result),\n );\n return;\n }\n }\n}\n\nfunction formatMaintenanceUpgradeResult(\n result: WikiGraphMaintenanceUpgradeResult,\n): string {\n switch (result.kind) {\n case \"home\":\n return `Home ${result.status} (schema v${result.schemaVersionBefore} -> v${result.schemaVersionAfter})\\n`;\n case \"archive\":\n return `Archive ${result.status}: ${result.fileName} (schema v${result.schemaVersionBefore} -> v${result.schemaVersionAfter})\\n`;\n case \"lib\": {\n const lines = [\n `Library ${result.status}: ${result.library.uri}`,\n `upgraded: ${result.upgraded.length}`,\n `already current: ${result.skipped.length}`,\n ];\n if (result.failed !== undefined) {\n lines.push(`failed: ${result.failed.uri} (${result.failed.message})`);\n }\n return `${lines.join(\"\\n\")}\\n`;\n }\n }\n}\n\nfunction parseMaintenanceTarget(target: string): WikiGraphMaintenanceTarget {\n if (isWikiGraphHomeTarget(target)) {\n return { kind: \"home\" as const };\n }\n if (target.startsWith(\"wikg://lib\")) {\n return { kind: \"library\", uri: target };\n }\n if (!target.endsWith(\".wikg\")) {\n throw new Error(`Unsupported maintenance upgrade target: ${target}`);\n }\n return { kind: \"archive\", path: target };\n}\n","import { Writable } from \"stream\";\nimport { createInterface } from \"readline/promises\";\n\nimport type { CLILocalConfigArguments } from \"../args/index.js\";\nimport { getWikiGraphSDK, setCLIExitCode } from \"../runtime/context.js\";\nimport { writeTextToStderr, writeTextToStdout } from \"../support/index.js\";\nimport { formatCLIJSON } from \"../support/index.js\";\nimport {\n maskLocalConfigSection,\n type LocalConfigObject,\n} from \"../runtime/local-config.js\";\n\nexport async function runLocalConfigCommand(\n args: CLILocalConfigArguments,\n): Promise<void> {\n const config = getWikiGraphSDK().config;\n switch (args.action) {\n case \"get\":\n await writeConfigObject(args.section, await config.get(args.section));\n return;\n case \"set\":\n await writeConfigObject(\n args.section,\n await config.replace(\n args.section,\n mergeMaskedSecretsForSet(\n args.section,\n readJSONInput(args),\n await config.get(args.section),\n ),\n ),\n );\n return;\n case \"put\": {\n const key = requireConfigKey(args.key);\n const value =\n args.secret === true\n ? await readSecretValue(key)\n : await readPutValue(args);\n\n await writeConfigObject(\n args.section,\n await config.put(args.section, key, value),\n );\n return;\n }\n case \"delete\":\n await writeConfigObject(\n args.section,\n await config.delete(args.section, requireConfigKey(args.key)),\n );\n return;\n case \"clear\":\n await writeConfigObject(args.section, await config.clear(args.section));\n return;\n case \"test\":\n await runConfigTest(args);\n return;\n }\n}\n\nasync function runConfigTest(args: CLILocalConfigArguments): Promise<void> {\n switch (args.section) {\n case \"llm\":\n await runLLMConfigTest(args);\n return;\n case \"wikispine\":\n await runWikispineConfigTest(args);\n return;\n case \"embeddings\":\n await runEmbeddingConfigTest(args);\n return;\n default:\n throw new Error(\n \"Only wikg://local/config/llm, wikg://local/config/embeddings, and wikg://local/config/wikispine support test.\",\n );\n }\n}\n\nasync function runEmbeddingConfigTest(\n args: CLILocalConfigArguments,\n): Promise<void> {\n const startedAt = Date.now();\n const embedding = await getWikiGraphSDK().config.get(\"embeddings\");\n\n try {\n const result = await getWikiGraphSDK().config.testEmbedding();\n const output = {\n dimensions: result.dimensions!,\n durationMs: result.durationMs,\n model: result.model,\n ok: true,\n provider: result.provider!,\n ...(result.tokens === undefined ? {} : { tokens: result.tokens }),\n };\n\n if (args.json === true) {\n await writeTextToStdout(formatCLIJSON(output));\n return;\n }\n\n await writeTextToStdout(\n [\n \"Embedding connection ok.\",\n `Provider: ${output.provider}`,\n `Model: ${output.model}`,\n `Dimensions: ${output.dimensions}`,\n \"\",\n ].join(\"\\n\"),\n );\n } catch (error) {\n const output = {\n durationMs: Date.now() - startedAt,\n error: {\n message: error instanceof Error ? error.message : String(error),\n },\n model: embedding.model,\n ok: false,\n provider: embedding.provider,\n };\n\n if (args.json === true) {\n await writeTextToStdout(formatCLIJSON(output));\n setCLIExitCode(1);\n return;\n }\n\n throw error;\n }\n}\n\nasync function runLLMConfigTest(args: CLILocalConfigArguments): Promise<void> {\n if (args.section !== \"llm\") {\n throw new Error(\"Only wikg://local/config/llm supports test.\");\n }\n\n const startedAt = Date.now();\n const llm = await getWikiGraphSDK().config.get(\"llm\");\n\n try {\n const result = await getWikiGraphSDK().config.testLLM();\n const output = {\n durationMs: result.durationMs,\n model: result.model,\n ok: true,\n provider: result.provider,\n response: result.response,\n };\n\n if (args.json === true) {\n await writeTextToStdout(formatCLIJSON(output));\n return;\n }\n\n await writeTextToStdout(\n [\n \"LLM connection ok.\",\n `Provider: ${output.provider}`,\n `Model: ${output.model}`,\n `Response: ${output.response}`,\n \"\",\n ].join(\"\\n\"),\n );\n } catch (error) {\n const output = {\n durationMs: Date.now() - startedAt,\n error: {\n message: error instanceof Error ? error.message : String(error),\n },\n model: typeof llm.model === \"string\" ? llm.model : undefined,\n ok: false,\n provider: typeof llm.provider === \"string\" ? llm.provider : undefined,\n };\n\n if (args.json === true) {\n await writeTextToStdout(formatCLIJSON(output));\n setCLIExitCode(1);\n return;\n }\n\n throw error;\n }\n}\n\nasync function runWikispineConfigTest(\n args: CLILocalConfigArguments,\n): Promise<void> {\n const startedAt = Date.now();\n const wikispine = await getWikiGraphSDK().config.get(\"wikispine\");\n\n try {\n const result = await getWikiGraphSDK().config.testWikispine();\n const output = {\n durationMs: result.durationMs,\n ...(result.endpoint === undefined ? {} : { endpoint: result.endpoint }),\n ...(result.metadata === undefined ? {} : { metadata: result.metadata }),\n ok: true,\n provider: result.provider,\n };\n\n if (args.json === true) {\n await writeTextToStdout(formatCLIJSON(output));\n return;\n }\n\n await writeTextToStdout(\n [\n \"WikiSpine connection ok.\",\n `Provider: ${output.provider}`,\n ...(output.endpoint === undefined\n ? []\n : [`Endpoint: ${output.endpoint}`]),\n ...(output.metadata === undefined\n ? []\n : [\n `Runtime: ${output.metadata.format}`,\n `Surfaces: ${output.metadata.surface_count}`,\n `QIDs: ${output.metadata.qid_count}`,\n ]),\n \"\",\n ].join(\"\\n\"),\n );\n } catch (error) {\n const output = {\n durationMs: Date.now() - startedAt,\n error: {\n message: error instanceof Error ? error.message : String(error),\n },\n ok: false,\n provider:\n typeof wikispine.provider === \"string\" ? wikispine.provider : undefined,\n };\n\n if (args.json === true) {\n await writeTextToStdout(formatCLIJSON(output));\n setCLIExitCode(1);\n return;\n }\n\n throw error;\n }\n}\n\nasync function writeConfigObject(\n section: CLILocalConfigArguments[\"section\"],\n value: LocalConfigObject,\n): Promise<void> {\n await writeTextToStdout(\n formatCLIJSON(maskLocalConfigSection(section, value)),\n );\n}\n\nfunction readPutValue(args: CLILocalConfigArguments): unknown {\n if (args.inputValue !== undefined && args.jsonInputValue !== undefined) {\n throw new Error(\n \"Choose only one input source: positional value or --json value.\",\n );\n }\n if (args.jsonInputValue !== undefined) {\n return parseJSONInput(args.jsonInputValue);\n }\n if (args.inputValue !== undefined) {\n return args.inputValue;\n }\n\n throw new Error(\"Missing config value.\");\n}\n\nfunction readJSONInput(args: CLILocalConfigArguments): LocalConfigObject {\n const raw = args.jsonInputValue ?? args.inputValue;\n\n if (raw === undefined) {\n throw new Error(\"Config set requires a JSON object.\");\n }\n\n const parsed = parseJSONInput(raw);\n\n if (parsed === null || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n throw new Error(\"Config set requires a JSON object.\");\n }\n\n return parsed as LocalConfigObject;\n}\n\nexport function mergeMaskedSecretsForSet(\n section: CLILocalConfigArguments[\"section\"],\n input: LocalConfigObject,\n current: LocalConfigObject,\n): LocalConfigObject {\n if (section === \"wikimedia\" || section === \"wikispine\") {\n return mergeMaskedSecret(section, input, current, \"token\");\n }\n if (\n (section !== \"llm\" && section !== \"embeddings\") ||\n input.apiKey === undefined\n ) {\n return input;\n }\n if (typeof input.apiKey === \"string\" && /^\\*+$/u.test(input.apiKey)) {\n return current.apiKey === undefined\n ? omitKey(input, \"apiKey\")\n : { ...input, apiKey: current.apiKey };\n }\n\n throw new Error(\n `apiKey is sensitive and cannot be set from JSON. Use \\`wg wikg://local/config/${section} put apiKey --secret\\`.`,\n );\n}\n\nfunction mergeMaskedSecret(\n section: \"wikimedia\" | \"wikispine\",\n input: LocalConfigObject,\n current: LocalConfigObject,\n key: \"token\",\n): LocalConfigObject {\n const value = input[key];\n if (value === undefined) return input;\n if (typeof value === \"string\" && /^\\*+$/u.test(value)) {\n return current[key] === undefined\n ? omitKey(input, key)\n : { ...input, [key]: current[key] };\n }\n throw new Error(\n `${key} is sensitive and cannot be set from JSON. Use \\`wg wikg://local/config/${section} put ${key} --secret\\`.`,\n );\n}\n\nfunction omitKey(input: LocalConfigObject, key: string): LocalConfigObject {\n const { [key]: _removed, ...rest } = input;\n\n return rest;\n}\n\nfunction parseJSONInput(raw: string): unknown {\n try {\n return JSON.parse(raw);\n } catch (error) {\n throw new Error(\n `Invalid JSON input: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n}\n\nfunction requireConfigKey(key: string | undefined): string {\n const normalized = key?.trim() ?? \"\";\n\n if (normalized === \"\") {\n throw new Error(\"Missing config key.\");\n }\n\n return normalized;\n}\n\nasync function readSecretValue(key: string): Promise<string> {\n if (process.stdin.isTTY !== true) {\n throw new Error(`${key} requires an interactive terminal.`);\n }\n\n const mutedOutput = new Writable({\n write(_chunk, _encoding, callback) {\n callback();\n },\n });\n const readline = createInterface({\n input: process.stdin,\n output: mutedOutput,\n terminal: true,\n });\n\n try {\n await writeTextToStderr(`${key}: `);\n const value = await readline.question(\"\");\n await writeTextToStderr(\"\\n\");\n if (value.trim() === \"\") {\n throw new Error(`${key} cannot be empty.`);\n }\n\n return value.trim();\n } finally {\n readline.close();\n }\n}\n","import { readFile } from \"fs/promises\";\n\nimport {\n formatWikiGraphLibraryUri,\n type File,\n type ParsedWikiGraphLibraryUri,\n type WikiGraphLibraryArchiveRecord,\n type WikiGraphLibraryIndexState,\n type WikiGraphLibraryRecord,\n type WikiGraphLibraryScanResult,\n} from \"wiki-graph-sdk\";\nimport type { CLILibraryArguments } from \"../args/index.js\";\nimport { getWikiGraphSDK } from \"../runtime/context.js\";\nimport type { RenderTreeNode } from \"../support/index.js\";\nimport {\n formatCLIJSON,\n renderTreeText,\n readTextStreamFromStdin,\n writeTextToStdout,\n} from \"../support/index.js\";\nimport { createCollectionFindResult } from \"./archive-command/run/index.js\";\nimport { getNodeResourcePath } from \"../runtime/node-platform.js\";\nimport { writeFindHits } from \"./archive-output/index.js\";\nimport {\n ProgressOutputWriter,\n type ProgressCounter,\n} from \"../runtime/index.js\";\n\nconst INDEX_PROGRESS_OUTPUT_INTERVAL_MS = 6_000;\n\nexport async function runLibraryCommand(\n args: CLILibraryArguments,\n): Promise<void> {\n const libraries = getWikiGraphSDK().libraries;\n if (\n args.action !== \"add\" &&\n args.action !== \"create\" &&\n args.action !== \"scan\" &&\n args.action !== \"rebind\"\n ) {\n await libraries.assertCurrent(args.target);\n }\n\n switch (args.action) {\n case \"add\": {\n if (args.inputPath === undefined) {\n throw new Error(\"Missing --input <path> for library add.\");\n }\n await writeLibraryArchive(\n await libraries.addArchive({\n inputPath: args.inputPath,\n target: args.target,\n ...(args.to === undefined ? {} : { to: args.to }),\n }),\n args.json ?? false,\n );\n return;\n }\n case \"create\": {\n if (args.path === undefined) {\n throw new Error(\"Missing --path <folder> for library create.\");\n }\n await writeLibrary(\n (await libraries.create(args.path)).snapshot,\n args.json ?? false,\n );\n return;\n }\n case \"list\": {\n if (args.target.kind === \"registry\") {\n await writeLibraries(\n (await libraries.list()).map((library) => library.snapshot),\n args.json ?? false,\n );\n return;\n }\n if (args.target.kind === \"archive-collection\") {\n await writeLibraryArchives(\n await (\n await libraries.get(formatWikiGraphLibraryUri(args.target.publicId))\n ).archives(),\n args.json ?? false,\n );\n return;\n }\n await writeLibraryScopeCollection(args.target, args.json ?? false);\n return;\n }\n case \"scan\": {\n await writeScanResult(\n \"scan\",\n async () => await libraries.scan(args.target),\n args.json ?? false,\n args.jsonl ?? false,\n );\n return;\n }\n case \"rebind\": {\n const folderPath = args.path;\n if (folderPath === undefined) {\n throw new Error(\"Missing path value for library path set.\");\n }\n await writeScanResult(\n \"path set\",\n async () => await libraries.rebind(args.target, folderPath),\n args.json ?? false,\n args.jsonl ?? false,\n );\n return;\n }\n case \"archive-tree\": {\n await writeLibraryArchiveTree(\n await (\n await libraries.get(formatWikiGraphLibraryUri(args.target.publicId))\n ).archives(),\n {\n ...(args.depth === undefined ? {} : { depth: args.depth }),\n json: args.json ?? false,\n ...(args.parent === undefined ? {} : { parent: args.parent }),\n },\n );\n return;\n }\n case \"get-index\": {\n await writeLibraryIndexState(\n await libraries.indexState(args.target),\n args.json ?? false,\n );\n return;\n }\n case \"sync-index\": {\n const writer = new ProgressOutputWriter({\n jsonl: args.jsonl ?? false,\n throttleMs: INDEX_PROGRESS_OUTPUT_INTERVAL_MS,\n });\n\n await writer.write({\n json: { type: \"started\" },\n kind: \"lifecycle\",\n text: \"library index cache sync started\\nsteps: collecting -> clearing -> indexing-text -> indexing-objects -> indexing-dense -> finalizing\",\n });\n const state = await libraries.rebuildIndex(args.target, async (event) => {\n const counters =\n event.done === undefined || event.total === undefined\n ? []\n : [formatIndexCounter(event)];\n\n await writer.write({\n counters,\n json: {\n counters,\n phase: event.phase,\n type: \"status_snapshot\",\n },\n kind: \"status\",\n phase: event.phase,\n });\n });\n await writer.write({\n json: { status: state.status, type: \"completed\" },\n kind: \"lifecycle\",\n text: \"library index cache synced\",\n });\n await writer.write({\n json: { type: \"succeeded\" },\n kind: \"lifecycle\",\n text: \"succeeded\",\n });\n return;\n }\n case \"clean-index\": {\n await writeLibraryIndexState(\n await libraries.cleanIndex(args.target),\n args.json ?? false,\n );\n return;\n }\n case \"remove\": {\n if (args.target.kind === \"archive\") {\n await writeLibraryArchive(\n await libraries.removeArchive(args.target),\n args.json ?? false,\n \"Removed library archive\",\n );\n return;\n }\n const library = await libraries.remove(args.target);\n await writeTextToStdout(\n args.json === true\n ? formatCLIJSON({ removed: library.uri })\n : `Removed library registry: ${library.uri}\\n`,\n );\n return;\n }\n case \"get\": {\n if (args.target.kind === \"path\") {\n await writeLibraryPath(\n (await libraries.get(formatWikiGraphLibraryUri(args.target.publicId)))\n .snapshot,\n args.json ?? false,\n );\n return;\n }\n if (args.target.kind === \"archive-path\") {\n await writeLibraryArchivePath(\n await libraries.getArchive({ ...args.target, kind: \"archive\" }),\n args.json ?? false,\n );\n return;\n }\n if (args.target.kind === \"metadata\") {\n await writeMetadataMap(\n await libraries.getMetadata(args.target),\n args.json ?? false,\n );\n return;\n }\n if (args.target.kind === \"archive\") {\n await writeLibraryArchivePage(\n await libraries.getArchive(args.target),\n args.json ?? false,\n );\n return;\n }\n if (args.target.kind === \"archive-collection\") {\n await writeLibraryArchives(\n await (\n await libraries.get(formatWikiGraphLibraryUri(args.target.publicId))\n ).archives(),\n args.json ?? false,\n );\n return;\n }\n await writeLibraryScopeCollection(args.target, args.json ?? false);\n return;\n }\n case \"set\": {\n if (args.target.kind === \"archive-path\") {\n if (args.to === undefined) {\n throw new Error(\"Missing path value for library archive path set.\");\n }\n await writeLibraryArchive(\n await libraries.moveArchive({\n target: { ...args.target, kind: \"archive\" },\n to: args.to,\n }),\n args.json ?? false,\n \"Moved library archive\",\n );\n return;\n }\n const value = await readMetadataInput(args, { jsonRequired: true });\n await writeMetadataMap(\n await libraries.replaceMetadata(args.target, parseMetadataMap(value)),\n args.json ?? false,\n );\n return;\n }\n case \"put\": {\n await writeMetadataMap(\n await libraries.putMetadata(\n args.target,\n normalizeMetadataKey(args.key),\n await readMetadataInput(args, { jsonRequired: false }),\n ),\n args.json ?? false,\n );\n return;\n }\n case \"delete\": {\n await writeMetadataMap(\n await libraries.deleteMetadata(\n args.target,\n normalizeMetadataKey(args.key),\n ),\n args.json ?? false,\n );\n return;\n }\n case \"clear\": {\n await writeMetadataMap(\n await libraries.clearMetadata(args.target),\n args.json ?? false,\n );\n return;\n }\n }\n}\n\nasync function writeLibrary(\n library: WikiGraphLibraryRecord,\n json: boolean,\n): Promise<void> {\n if (json) {\n await writeTextToStdout(\n formatCLIJSON({\n uri: library.uri,\n id: library.publicId,\n folderPath: getNodeResourcePath(library.folder),\n isDefault: library.isDefault,\n stagingPath: getNodeResourcePath(library.staging),\n createdAt: library.createdAt,\n updatedAt: library.updatedAt,\n }),\n );\n return;\n }\n await writeTextToStdout(`${library.uri}\\n`);\n}\n\nasync function writeLibraries(\n libraries: readonly WikiGraphLibraryRecord[],\n json: boolean,\n): Promise<void> {\n if (json) {\n await writeTextToStdout(\n formatCLIJSON({\n items: libraries.map((library) => ({\n uri: library.uri,\n id: library.publicId,\n path: getNodeResourcePath(library.folder),\n isDefault: library.isDefault,\n })),\n }),\n );\n return;\n }\n await writeTextToStdout(\n libraries\n .map((library) =>\n [\n library.uri,\n library.publicId,\n getNodeResourcePath(library.folder),\n library.isDefault ? \"default\" : \"\",\n ].join(\"\\t\"),\n )\n .join(\"\\n\") + (libraries.length === 0 ? \"\" : \"\\n\"),\n );\n}\n\nasync function writeLibraryPath(\n library: WikiGraphLibraryRecord,\n json: boolean,\n): Promise<void> {\n if (json) {\n await writeTextToStdout(\n formatCLIJSON({\n uri: `${library.uri}/path`,\n path: getNodeResourcePath(library.folder),\n }),\n );\n return;\n }\n await writeTextToStdout(`${getNodeResourcePath(library.folder)}\\n`);\n}\n\nasync function writeLibraryArchivePath(\n archive: WikiGraphLibraryArchiveRecord,\n json: boolean,\n): Promise<void> {\n if (json) {\n await writeTextToStdout(\n formatCLIJSON({ uri: `${archive.uri}/path`, path: archive.relativePath }),\n );\n return;\n }\n await writeTextToStdout(`${archive.relativePath}\\n`);\n}\n\nasync function writeScanResult(\n label: string,\n operation: () => Promise<WikiGraphLibraryScanResult>,\n json: boolean,\n jsonl: boolean,\n): Promise<void> {\n if (jsonl) {\n const writer = new ProgressOutputWriter({ jsonl: true, throttleMs: 0 });\n await writer.write({\n json: { type: \"started\", action: label },\n kind: \"lifecycle\",\n text: `${label} started`,\n });\n const result = await operation();\n for (const archive of result.archives) {\n await writer.write({\n json: {\n type: \"archive\",\n action: label,\n archive: formatLibraryArchiveJSON(archive),\n },\n kind: \"status\",\n phase: label,\n });\n }\n await writer.write({\n json: {\n type: \"completed\",\n action: label,\n archives: result.archives.length,\n },\n kind: \"lifecycle\",\n text: `${label} completed`,\n });\n await writer.write({\n json: { type: \"succeeded\", action: label },\n kind: \"lifecycle\",\n text: \"succeeded\",\n });\n return;\n }\n\n const result = await operation();\n await writeLibraryArchives(result.archives, json);\n}\n\nasync function writeLibraryArchives(\n archives: readonly WikiGraphLibraryArchiveRecord[],\n json: boolean,\n): Promise<void> {\n if (json) {\n await writeTextToStdout(\n formatCLIJSON({ items: archives.map(formatLibraryArchiveJSON) }),\n );\n return;\n }\n await writeTextToStdout(\n archives\n .map((archive) =>\n [archive.uri, archive.relativePath, archive.status].join(\"\\t\"),\n )\n .join(\"\\n\") + (archives.length === 0 ? \"\" : \"\\n\"),\n );\n}\n\nasync function writeLibraryScopeCollection(\n target: ParsedWikiGraphLibraryUri,\n json: boolean,\n): Promise<void> {\n const manager = getWikiGraphSDK().libraries;\n const library = await manager.get(formatWikiGraphLibraryUri(target.publicId));\n const baseUri = formatWikiGraphLibraryUri(target.publicId);\n const context = {\n archiveKey: baseUri,\n archivePath: baseUri,\n continuationKind: \"collection\" as const,\n format: json ? (\"json\" as const) : (\"text\" as const),\n indexScope: {\n kind: \"library-index\" as const,\n libraryId: library.snapshot.id,\n },\n limit: 20,\n libraryQuery: \"objects\" as const,\n types: null,\n };\n\n await writeFindHits(\n createCollectionFindResult(await manager.objects(target)),\n context,\n json ? \"json\" : \"text\",\n );\n}\n\nasync function writeLibraryArchive(\n archive: WikiGraphLibraryArchiveRecord,\n json: boolean,\n label = \"Added library archive\",\n): Promise<void> {\n if (json) {\n await writeTextToStdout(formatCLIJSON(formatLibraryArchiveJSON(archive)));\n return;\n }\n await writeTextToStdout(\n `${label}: ${archive.uri}\\n${archive.relativePath}\\n`,\n );\n}\n\nasync function writeLibraryArchivePage(\n archive: WikiGraphLibraryArchiveRecord,\n json: boolean,\n): Promise<void> {\n if (json) {\n await writeTextToStdout(\n formatCLIJSON(formatLibraryArchivePageJSON(archive)),\n );\n return;\n }\n\n await writeTextToStdout(\n [\n `Library archive: ${archive.uri}`,\n `Label: ${archive.relativePath}`,\n `Status: ${archive.status}${archive.exists ? \"\" : \" (missing file)\"}`,\n `Chapter: ${archive.uri}/chapter`,\n `Entity: ${archive.uri}/entity`,\n `Triple: ${archive.uri}/triple`,\n `Inspect: ${archive.uri} inspect`,\n `Metadata path: ${formatArchiveHostPath(archive)}`,\n \"\",\n ].join(\"\\n\"),\n );\n}\n\nfunction formatLibraryArchiveJSON(\n archive: WikiGraphLibraryArchiveRecord,\n): object {\n return {\n uri: archive.uri,\n id: archive.publicId,\n libraryUri: archive.libraryUri,\n relativePath: archive.relativePath,\n path: formatArchiveHostPath(archive),\n exists: archive.exists,\n status: archive.status,\n lastSeenMutationToken: archive.lastSeenMutationToken,\n lastSeenSize: archive.lastSeenSize,\n lastSeenMtimeMs: archive.lastSeenMtimeMs,\n lastScannedAt: archive.lastScannedAt,\n createdAt: archive.createdAt,\n updatedAt: archive.updatedAt,\n };\n}\n\nfunction formatLibraryArchivePageJSON(\n archive: WikiGraphLibraryArchiveRecord,\n): object {\n return {\n uri: archive.uri,\n id: archive.publicId,\n libraryUri: archive.libraryUri,\n label: archive.relativePath,\n relativePath: archive.relativePath,\n status: archive.status,\n entries: {\n chapter: `${archive.uri}/chapter`,\n entity: `${archive.uri}/entity`,\n triple: `${archive.uri}/triple`,\n inspect: `${archive.uri} inspect`,\n },\n metadata: {\n path: formatArchiveHostPath(archive),\n exists: archive.exists,\n lastSeenMutationToken: archive.lastSeenMutationToken,\n lastSeenSize: archive.lastSeenSize,\n lastSeenMtimeMs: archive.lastSeenMtimeMs,\n lastScannedAt: archive.lastScannedAt,\n createdAt: archive.createdAt,\n updatedAt: archive.updatedAt,\n },\n };\n}\n\ninterface ArchiveTreeNode {\n readonly children: Map<string, ArchiveTreeNode>;\n readonly name: string;\n readonly path: string;\n archive?: WikiGraphLibraryArchiveRecord;\n}\n\nasync function writeLibraryArchiveTree(\n archives: readonly WikiGraphLibraryArchiveRecord[],\n options: {\n readonly depth?: number;\n readonly json: boolean;\n readonly parent?: string;\n },\n): Promise<void> {\n const parent = options.parent\n ?.replace(/\\\\/gu, \"/\")\n .replace(/^\\/+|\\/+$/gu, \"\");\n const root: ArchiveTreeNode = { children: new Map(), name: \"\", path: \"\" };\n for (const archive of archives) {\n if (\n parent !== undefined &&\n !isArchiveTreePathSelected(archive.relativePath, parent)\n ) {\n continue;\n }\n insertArchiveTreeNode(root, archive);\n }\n pruneArchiveTreeDepth(root, options.depth, 0);\n\n if (options.json) {\n await writeTextToStdout(\n formatCLIJSON({ items: serializeArchiveTreeNodes(root.children) }),\n );\n return;\n }\n await writeTextToStdout(formatArchiveTreeText(root.children));\n}\n\nfunction isArchiveTreePathSelected(path: string, parent: string): boolean {\n return path === parent || path.startsWith(`${parent.replace(/\\/$/u, \"\")}/`);\n}\n\nfunction insertArchiveTreeNode(\n root: ArchiveTreeNode,\n archive: WikiGraphLibraryArchiveRecord,\n): void {\n let current = root;\n const parts = archive.relativePath.split(\"/\");\n for (let index = 0; index < parts.length; index += 1) {\n const name = parts[index]!;\n const path = parts.slice(0, index + 1).join(\"/\");\n let child = current.children.get(name);\n if (child === undefined) {\n child = { children: new Map(), name, path };\n current.children.set(name, child);\n }\n current = child;\n }\n current.archive = archive;\n}\n\nfunction pruneArchiveTreeDepth(\n node: ArchiveTreeNode,\n depth: number | undefined,\n level: number,\n): void {\n if (depth === undefined) {\n for (const child of node.children.values()) {\n pruneArchiveTreeDepth(child, depth, level + 1);\n }\n return;\n }\n if (level >= depth) {\n node.children.clear();\n return;\n }\n for (const child of node.children.values()) {\n pruneArchiveTreeDepth(child, depth, level + 1);\n }\n}\n\nfunction serializeArchiveTreeNodes(\n nodes: Map<string, ArchiveTreeNode>,\n): object[] {\n return [...nodes.values()].map((node) => ({\n children: serializeArchiveTreeNodes(node.children),\n name: node.name,\n path: node.path,\n ...(node.archive === undefined ? {} : { uri: node.archive.uri }),\n }));\n}\n\nfunction formatArchiveTreeText(nodes: Map<string, ArchiveTreeNode>): string {\n return renderTreeText([...nodes.values()].map(formatArchiveTreeRenderNode));\n}\n\nfunction formatArchiveTreeRenderNode(node: ArchiveTreeNode): RenderTreeNode {\n return {\n children: [...node.children.values()].map(formatArchiveTreeRenderNode),\n label:\n node.archive === undefined\n ? node.name\n : `${node.name} (${node.archive.uri})`,\n };\n}\n\nasync function writeLibraryIndexState(\n state: WikiGraphLibraryIndexState,\n json: boolean,\n): Promise<void> {\n if (json) {\n await writeTextToStdout(formatCLIJSON(state));\n return;\n }\n\n await writeTextToStdout(\n [\n `Status: ${state.status}`,\n ...(state.capabilities === undefined\n ? []\n : [\n `Enabled indexes: ${state.capabilities.indexes}`,\n `Dense current: ${state.capabilities.dense.current ? \"yes\" : \"no\"}`,\n ...(state.capabilities.dense.model === undefined\n ? []\n : [`Dense model: ${state.capabilities.dense.model}`]),\n ...(state.capabilities.dense.dimensions === undefined\n ? []\n : [`Dense dimensions: ${state.capabilities.dense.dimensions}`]),\n ]),\n `Source fingerprint: ${state.sourceFingerprint}`,\n ...(state.fingerprint === undefined\n ? []\n : [`Index fingerprint: ${state.fingerprint}`]),\n `Sources: ${state.sources.length}`,\n \"\",\n ].join(\"\\n\"),\n );\n}\n\nfunction formatIndexCounter(input: {\n readonly done?: number;\n readonly total?: number;\n readonly unit?: \"chapter\" | \"object\" | \"sentence\" | \"vector\";\n}): ProgressCounter {\n const unit =\n input.unit === \"chapter\"\n ? \"chapters\"\n : input.unit === \"sentence\"\n ? \"sentences\"\n : input.unit === \"vector\"\n ? \"vectors\"\n : \"objects\";\n\n return {\n done: input.done ?? 0,\n name: unit,\n total: input.total ?? 0,\n unit,\n };\n}\n\nasync function readMetadataInput(\n args: CLILibraryArguments,\n options: { readonly jsonRequired: boolean },\n): Promise<unknown> {\n const raw = await readRawInput(args);\n if (options.jsonRequired || args.jsonInputValue !== undefined) {\n return parseJSONInput(raw);\n }\n return raw;\n}\n\nasync function readRawInput(args: CLILibraryArguments): Promise<string> {\n const sources = [\n args.inputValue === undefined ? undefined : \"positional value\",\n args.inputPath === undefined ? undefined : \"--input\",\n args.jsonInputValue === undefined ? undefined : \"--json value\",\n ].filter((source): source is string => source !== undefined);\n\n if (sources.length > 1) {\n throw new Error(`Choose only one input source: ${sources.join(\", \")}.`);\n }\n if (args.jsonInputValue !== undefined) {\n return args.jsonInputValue;\n }\n if (args.inputValue !== undefined) {\n return args.inputValue;\n }\n if (args.inputPath === \"-\") {\n let content = \"\";\n for await (const chunk of readTextStreamFromStdin()) {\n content += chunk;\n }\n return content;\n }\n if (args.inputPath !== undefined) {\n return await readFile(args.inputPath, \"utf8\");\n }\n throw new Error(\n \"Missing input. Pass a value, use --input <path>, or use --input - for stdin.\",\n );\n}\n\nfunction parseMetadataMap(value: unknown): Readonly<Record<string, unknown>> {\n if (value === null || typeof value !== \"object\" || Array.isArray(value)) {\n throw new Error(\"Metadata set requires a JSON object.\");\n }\n return value as Readonly<Record<string, unknown>>;\n}\n\nfunction parseJSONInput(raw: string): unknown {\n try {\n return JSON.parse(raw);\n } catch (error) {\n throw new Error(\n `Invalid JSON input: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n}\n\nfunction normalizeMetadataKey(key: string | undefined): string {\n const normalized = key?.trim() ?? \"\";\n if (normalized === \"\") {\n throw new Error(\"Metadata key cannot be empty.\");\n }\n return normalized;\n}\n\nfunction writeMetadataMap(\n map: Readonly<Record<string, unknown>>,\n json: boolean,\n): Promise<void> {\n if (json) {\n return writeTextToStdout(formatCLIJSON(map));\n }\n const lines = Object.entries(map).map(\n ([key, value]) => `${key}: ${formatMetadataTextValue(value)}`,\n );\n return writeTextToStdout(lines.length === 0 ? \"\" : `${lines.join(\"\\n\")}\\n`);\n}\n\nfunction formatMetadataTextValue(value: unknown): string {\n if (Array.isArray(value)) {\n return value.map((item) => String(item)).join(\" \");\n }\n if (value !== null && typeof value === \"object\") {\n return JSON.stringify(value);\n }\n return String(value);\n}\n\nfunction formatArchiveHostPath(archive: {\n readonly file?: File;\n readonly relativePath: string;\n}): string {\n return archive.file === undefined\n ? archive.relativePath\n : getNodeResourcePath(archive.file);\n}\n","import { readFile } from \"fs/promises\";\n\nimport type { CLIObjectMetadataArguments } from \"../args/index.js\";\nimport { getWikiGraphSDK } from \"../runtime/context.js\";\nimport {\n readTextStreamFromStdin,\n writeTextToStdout,\n} from \"../support/index.js\";\nimport { formatCLIJSON } from \"../support/index.js\";\n\nexport async function runObjectMetadataCommand(\n args: CLIObjectMetadataArguments,\n): Promise<void> {\n const archive = await getWikiGraphSDK().archives.open(args.archivePath);\n\n switch (args.action) {\n case \"get\": {\n await writeMetadataMap(\n await archive.getMetadata(args.objectPath),\n args.json ?? false,\n );\n return;\n }\n case \"set\": {\n const value = await readMetadataInput(args, { jsonRequired: true });\n const map = parseMetadataMap(value);\n\n await writeMetadataMap(\n await archive.replaceMetadata(args.objectPath, map),\n args.json ?? false,\n );\n return;\n }\n case \"put\": {\n const key = normalizeMetadataKey(args.key);\n const value = await readMetadataInput(args, { jsonRequired: false });\n\n await writeMetadataMap(\n await archive.putMetadata(args.objectPath, key, value),\n args.json ?? false,\n );\n return;\n }\n case \"delete\":\n await writeMetadataMap(\n await archive.deleteMetadata(\n args.objectPath,\n normalizeMetadataKey(args.key),\n ),\n args.json ?? false,\n );\n return;\n case \"clear\":\n await writeMetadataMap(\n await archive.clearMetadata(args.objectPath),\n args.json ?? false,\n );\n return;\n }\n}\n\nasync function readMetadataInput(\n args: CLIObjectMetadataArguments,\n options: { readonly jsonRequired: boolean },\n): Promise<unknown> {\n const raw = await readRawInput(args);\n\n if (args.json === true || options.jsonRequired) {\n return parseJSONInput(raw);\n }\n\n return raw;\n}\n\nasync function readRawInput(args: CLIObjectMetadataArguments): Promise<string> {\n const sources = [\n args.inputValue === undefined ? undefined : \"positional value\",\n args.inputPath === undefined ? undefined : \"--input\",\n args.jsonInputValue === undefined ? undefined : \"--json value\",\n ].filter((source): source is string => source !== undefined);\n\n if (sources.length > 1) {\n throw new Error(`Choose only one input source: ${sources.join(\", \")}.`);\n }\n if (args.jsonInputValue !== undefined) {\n return args.jsonInputValue;\n }\n if (args.inputValue !== undefined) {\n return args.inputValue;\n }\n if (args.inputPath === \"-\") {\n let content = \"\";\n for await (const chunk of readTextStreamFromStdin()) {\n content += chunk;\n }\n return content;\n }\n if (args.inputPath !== undefined) {\n return await readFile(args.inputPath, \"utf8\");\n }\n throw new Error(\n \"Missing input. Pass a value, use --input <path>, or use --input - for stdin.\",\n );\n}\n\nfunction parseMetadataMap(value: unknown): Readonly<Record<string, unknown>> {\n if (value === null || typeof value !== \"object\" || Array.isArray(value)) {\n throw new Error(\"Metadata set requires a JSON object.\");\n }\n\n return value as Readonly<Record<string, unknown>>;\n}\n\nfunction parseJSONInput(raw: string): unknown {\n try {\n return JSON.parse(raw);\n } catch (error) {\n throw new Error(\n `Invalid JSON input: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n}\n\nfunction normalizeMetadataKey(key: string | undefined): string {\n const normalized = key?.trim() ?? \"\";\n\n if (normalized === \"\") {\n throw new Error(\"Metadata key cannot be empty.\");\n }\n\n return normalized;\n}\n\nfunction writeMetadataMap(\n map: Readonly<Record<string, unknown>>,\n json: boolean,\n): Promise<void> {\n if (json) {\n return writeTextToStdout(formatCLIJSON(map));\n }\n\n return writeTextToStdout(formatMetadataText(map));\n}\n\nfunction formatMetadataText(map: Readonly<Record<string, unknown>>): string {\n const lines = Object.entries(map).map(\n ([key, value]) => `${key}: ${formatMetadataTextValue(value)}`,\n );\n\n if (lines.length === 0) {\n return \"\";\n }\n\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nfunction formatMetadataTextValue(value: unknown): string {\n if (Array.isArray(value)) {\n return value.map((item) => String(item)).join(\" \");\n }\n\n return String(value);\n}\n","import {\n type BuildJobEvent,\n type BuildJobProgressCounter,\n type BuildJobTarget,\n} from \"wiki-graph-sdk\";\n\nimport {\n ProgressOutputWriter,\n type ProgressCounter,\n type ProgressMetricGroup,\n} from \"../../runtime/index.js\";\nimport { getCLISignal, getWikiGraphSDK } from \"../../runtime/context.js\";\n\nconst PROGRESS_OUTPUT_INTERVAL_MS = 6_000;\n\nexport async function watchBuildJob(\n jobId: string,\n options: {\n readonly from: \"beginning\" | \"now\";\n readonly jsonl: boolean;\n },\n): Promise<void> {\n const writer = new ProgressOutputWriter({\n jsonl: options.jsonl,\n throttleMs: PROGRESS_OUTPUT_INTERVAL_MS,\n });\n\n const job = await getWikiGraphSDK().jobs.get(jobId);\n const signal = getCLISignal();\n for await (const event of job.events({\n from: options.from,\n ...(signal === undefined ? {} : { signal }),\n })) {\n await writer.write(formatWatchOutputEvent(event));\n }\n}\n\nfunction formatWatchOutputEvent(event: BuildJobEvent) {\n switch (event.type) {\n case \"status_snapshot\": {\n const tokenMetrics = formatProgressTokenMetrics(event.tokens);\n return {\n counters: event.counters.map(formatProgressCounter),\n json: event,\n kind: \"status\" as const,\n ...(tokenMetrics === undefined ? {} : { metricGroups: [tokenMetrics] }),\n phase: event.phase ?? formatFallbackStatusPhase(event.step),\n };\n }\n case \"target_changed\":\n return {\n json: event,\n kind: \"lifecycle\" as const,\n text: `target ${event.from} -> ${event.to}`,\n };\n case \"step_started\":\n return {\n json: event,\n kind: \"lifecycle\" as const,\n text: `${event.step} started\\nsteps: ${formatStepPlan(event.step)}`,\n };\n case \"step_completed\":\n return {\n json: event,\n kind: \"lifecycle\" as const,\n text: `${event.step} completed`,\n };\n case \"created\":\n return {\n json: event,\n kind: \"lifecycle\" as const,\n text: \"created\",\n };\n default:\n return {\n json: event,\n kind: \"lifecycle\" as const,\n text: event.type,\n };\n }\n}\n\nfunction formatFallbackStatusPhase(step: BuildJobTarget | undefined): string {\n switch (step) {\n case \"reading-graph\":\n return \"extracting\";\n case \"reading-summary\":\n return \"summarizing\";\n case \"knowledge-graph\":\n return \"knowledge-graph\";\n case undefined:\n return \"status\";\n default:\n return \"status\";\n }\n}\n\nfunction formatStepPlan(step: string): string {\n switch (step) {\n case \"knowledge-graph\":\n return \"matching -> screening -> enrichment -> grounding -> relation-discovery -> committing\";\n case \"reading-summary\":\n return \"reading-graph -> summarizing -> committing\";\n case \"reading-graph\":\n return \"extracting -> committing\";\n default:\n return step;\n }\n}\n\nfunction formatProgressCounter(\n counter: BuildJobProgressCounter,\n): ProgressCounter {\n return {\n done: counter.done,\n name: counter.name,\n total: counter.total,\n unit: formatProgressUnit(counter.unit),\n };\n}\n\nfunction formatProgressUnit(unit: string): string {\n switch (unit) {\n case \"candidate\":\n return \"candidates\";\n case \"char\":\n return \"chars\";\n case \"item\":\n return \"items\";\n case \"page\":\n return \"pages\";\n case \"qid\":\n return \"qids\";\n case \"record\":\n return \"records\";\n case \"sentence\":\n return \"sentences\";\n case \"word\":\n return \"words\";\n case \"window\":\n return \"windows\";\n default:\n return unit;\n }\n}\n\nfunction formatProgressTokenMetrics(\n tokens: Extract<\n BuildJobEvent,\n { readonly type: \"status_snapshot\" }\n >[\"tokens\"],\n): ProgressMetricGroup | undefined {\n if (tokens === undefined) {\n return undefined;\n }\n\n const metrics = [\n ...(tokens.inputTokens === undefined\n ? []\n : [{ name: \"input\", value: tokens.inputTokens }]),\n ...(tokens.cacheReadTokens === undefined\n ? []\n : [{ name: \"cache\", value: tokens.cacheReadTokens }]),\n ...(tokens.outputTokens === undefined\n ? []\n : [{ name: \"output\", value: tokens.outputTokens }]),\n ];\n\n return metrics.length === 0 ? undefined : { metrics, name: \"tokens\" };\n}\n","import {\n requireKnowledgeGraphWikispineConfig,\n runWikiGraphQueueWorker,\n} from \"wiki-graph-sdk\";\n\nexport { requireKnowledgeGraphWikispineConfig };\n\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../../support/index.js\";\n\nexport async function runQueueWorker(): Promise<void> {\n const controller = new AbortController();\n const stop = (): void => controller.abort();\n process.once(\"SIGINT\", stop);\n process.once(\"SIGTERM\", stop);\n try {\n await runWikiGraphQueueWorker({ signal: controller.signal });\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new Error(withHelpRoute(message, CLI_HELP_ROUTES.config), {\n cause: error,\n });\n } finally {\n process.removeListener(\"SIGINT\", stop);\n process.removeListener(\"SIGTERM\", stop);\n }\n}\n","import type { WikiGraphJobEnqueueOptions } from \"wiki-graph-sdk\";\n\nimport type { CLIQueueArguments } from \"../../args/index.js\";\nimport { loadCLIConfig } from \"../../runtime/config.js\";\nimport { getWikiGraphSDK } from \"../../runtime/context.js\";\nimport { writeTextToStdout } from \"../../support/index.js\";\nimport { assertBuildCostAccepted, tryStartQueueWorker } from \"./add.js\";\nimport { createQueueAddEstimate } from \"./estimate.js\";\nimport {\n writeArchiveAddSummary,\n writeJobList,\n writeJobStatus,\n writeJobSummary,\n} from \"./output.js\";\nimport { watchBuildJob } from \"./watch.js\";\nimport { NodeFile } from \"../../runtime/node-platform.js\";\n\nexport { runQueueWorker } from \"./worker.js\";\n\nexport async function runQueueCommand(args: CLIQueueArguments): Promise<void> {\n switch (args.action) {\n case \"add\": {\n const enqueueOptions = createEnqueueOptions(args);\n const plan = await getWikiGraphSDK().jobs.planEnqueue(enqueueOptions);\n const target = args.target ?? \"reading-summary\";\n if (target !== \"index-fts\") {\n assertBuildCostAccepted(args);\n }\n const config = await loadCLIConfig({\n ...(args.llmJSON === undefined ? {} : { llmJSON: args.llmJSON }),\n });\n const result = await getWikiGraphSDK().jobs.enqueue(enqueueOptions);\n const singleSelection =\n (args.chapterId !== undefined ||\n args.chapterPath !== undefined ||\n args.chapterIds?.length === 1) &&\n plan.ready.length + plan.skipped.length === 1;\n if (result.created.length === 1 && singleSelection) {\n const created = result.created[0]!;\n const estimate = createQueueAddEstimate({\n chapters: [created.chapter],\n config,\n target,\n });\n await writeJobSummary(created.job.snapshot, {\n chapter: created.chapter,\n estimate,\n json: args.json ?? false,\n watch: true,\n });\n } else {\n await writeArchiveAddSummary({\n archivePath: args.archivePath!,\n created: result.created.map(({ chapter, job }) => ({\n chapter,\n job: job.snapshot,\n })),\n ...(result.created.length === 0\n ? {}\n : {\n estimate: createQueueAddEstimate({\n chapters: result.created.map((item) => item.chapter),\n config,\n target,\n }),\n }),\n json: args.json ?? false,\n skipped: result.skipped,\n });\n }\n\n tryStartQueueWorker();\n return;\n }\n case \"list\":\n await writeJobList(\n (\n await getWikiGraphSDK().jobs.list({\n ...(args.activeOnly === undefined\n ? {}\n : { activeOnly: args.activeOnly }),\n ...(args.all === undefined ? {} : { all: args.all }),\n ...(args.archivePath === undefined\n ? {}\n : { archive: new NodeFile(args.archivePath) }),\n })\n ).map((job) => job.snapshot),\n { json: args.json ?? false },\n );\n return;\n case \"status\":\n await writeJobStatus(await (await getQueueJob(args)).status(), {\n json: args.json ?? false,\n });\n return;\n case \"watch\":\n await watchBuildJob(await resolveQueueJobId(args), {\n from: args.from ?? \"beginning\",\n jsonl: args.jsonl ?? !process.stdout.isTTY,\n });\n return;\n case \"pause\":\n await writeJobSummary(await (await getQueueJob(args)).pause());\n return;\n case \"resume\":\n await writeJobSummary(await (await getQueueJob(args)).resume());\n tryStartQueueWorker();\n return;\n case \"cancel\":\n await writeJobSummary(await (await getQueueJob(args)).cancel());\n return;\n case \"boost\":\n await writeJobSummary(await (await getQueueJob(args)).boost());\n tryStartQueueWorker();\n return;\n case \"target\":\n await writeJobSummary(\n await (\n await getQueueJob(args)\n ).setTarget(args.target ?? \"reading-summary\"),\n );\n tryStartQueueWorker();\n return;\n case \"clean\":\n await writeTextToStdout(\n `Cleaned ${await getWikiGraphSDK().jobs.clean()} jobs.\\n`,\n );\n return;\n }\n}\n\nasync function resolveQueueJobId(args: CLIQueueArguments): Promise<string> {\n return await getWikiGraphSDK().jobs.resolveId(args.jobId!);\n}\n\nasync function getQueueJob(args: CLIQueueArguments) {\n return await getWikiGraphSDK().jobs.get(await resolveQueueJobId(args));\n}\n\nfunction createEnqueueOptions(\n args: CLIQueueArguments,\n): WikiGraphJobEnqueueOptions {\n return {\n archive: args.archivePath!,\n ...(args.boost === undefined ? {} : { boost: args.boost }),\n ...(args.chapterId === undefined ? {} : { chapterId: args.chapterId }),\n ...(args.chapterIds === undefined ? {} : { chapterIds: args.chapterIds }),\n ...(args.chapterPath === undefined\n ? {}\n : { chapterPath: args.chapterPath }),\n ...(args.depth === undefined ? {} : { depth: args.depth }),\n ...(args.llmJSON === undefined ? {} : { llmJSON: args.llmJSON }),\n ...(args.prompt === undefined ? {} : { prompt: args.prompt }),\n target: args.target ?? \"reading-summary\",\n };\n}\n","import { Readable, Writable } from \"stream\";\n\nimport { createWikiGraphSDK } from \"wiki-graph-sdk\";\nimport { dispatchWikiGraphCLI } from \"./dispatch.js\";\nimport {\n getCLIExitCode,\n withWikiGraphCLIRuntimeContext,\n type WikiGraphCLIRuntimeContext,\n} from \"../runtime/context.js\";\nimport {\n createEntryRuntimeContext,\n type WikiGraphEntryEnvPolicy,\n} from \"../runtime/entry-context.js\";\n\nexport interface RunWikiGraphCLIInput {\n /**\n * CLI arguments without the executable name. For example, `[\"--help\"]`\n * simulates `wg --help`.\n */\n readonly argv?: readonly string[] | undefined;\n readonly cwd?: string | undefined;\n readonly devProjectRoot?: string | undefined;\n readonly env?: NodeJS.ProcessEnv | undefined;\n readonly signal?: AbortSignal | undefined;\n readonly stateDir?: string | undefined;\n readonly stderr?: NodeJS.WritableStream | undefined;\n readonly stderrIsTTY?: boolean | undefined;\n readonly stdin?: NodeJS.ReadableStream | Uint8Array | string | undefined;\n readonly stdinIsTTY?: boolean | undefined;\n readonly stdout?: NodeJS.WritableStream | undefined;\n readonly stdoutIsTTY?: boolean | undefined;\n}\n\nexport interface RunWikiGraphCLIResult {\n readonly exitCode: number;\n}\n\nexport interface RunWikiGraphCLICapturedResult extends RunWikiGraphCLIResult {\n readonly stderr: string;\n readonly stdout: string;\n}\n\nexport interface WikiGraphCLI {\n run(\n argv?: readonly string[],\n overrides?: RunWikiGraphCLIInput,\n ): Promise<RunWikiGraphCLIResult>;\n runCaptured(\n argv?: readonly string[],\n overrides?: RunWikiGraphCLIInput,\n ): Promise<RunWikiGraphCLICapturedResult>;\n}\n\nexport async function runWikiGraphCLI(\n input: RunWikiGraphCLIInput = {},\n): Promise<RunWikiGraphCLIResult> {\n return await runWikiGraphCLIWithEntryPolicy(input, \"production\");\n}\n\nexport async function runWikiGraphCLIWithEntryPolicy(\n input: RunWikiGraphCLIInput = {},\n envPolicy: WikiGraphEntryEnvPolicy,\n): Promise<RunWikiGraphCLIResult> {\n throwIfAborted(input.signal);\n\n const stdin = createInputStream(input.stdin ?? process.stdin);\n const stdout = input.stdout ?? process.stdout;\n const stderr = input.stderr ?? process.stderr;\n const argv = input.argv ?? process.argv.slice(2);\n let entryContext: ReturnType<typeof createEntryRuntimeContext>;\n\n try {\n entryContext = createEntryRuntimeContext({\n argv,\n cwd: input.cwd ?? process.cwd(),\n devProjectRoot: input.devProjectRoot,\n env: input.env,\n envPolicy,\n stateDir: input.stateDir,\n });\n } catch (error) {\n stderr.write(`${error instanceof Error ? error.message : String(error)}\\n`);\n return { exitCode: 1 };\n }\n\n const context: WikiGraphCLIRuntimeContext = {\n argv,\n cwd: input.cwd ?? process.cwd(),\n devProjectRoot: entryContext.devProjectRoot,\n env: entryContext.env,\n envPolicy: entryContext.envPolicy,\n exitCode: 0,\n queueAutostart: true,\n sdk: createWikiGraphSDK({\n cwd: input.cwd ?? process.cwd(),\n env: entryContext.env,\n envPolicy: entryContext.envPolicy,\n ...(entryContext.stateDir === undefined\n ? {}\n : { stateDir: entryContext.stateDir }),\n }),\n signal: input.signal,\n stateDir: entryContext.stateDir,\n stderr,\n stderrIsTTY: input.stderrIsTTY,\n stdin,\n stdinIsTTY: input.stdinIsTTY,\n stdout,\n stdoutIsTTY: input.stdoutIsTTY,\n };\n\n try {\n return await context.sdk!.run(\n async () =>\n withWikiGraphCLIRuntimeContext(context, async () => {\n const result = await dispatchWikiGraphCLI({\n argv,\n stderr,\n stdinIsTTY: context.stdinIsTTY ?? stdin.isTTY,\n stdout,\n });\n throwIfAborted(input.signal);\n const exitCode = normalizeExitCode(getCLIExitCode(), result.exitCode);\n\n return { exitCode };\n }),\n input.signal,\n { skipHomeBootstrap: true },\n );\n } finally {\n context.sdk!.close();\n }\n}\n\nexport async function runWikiGraphCLICaptured(\n input: RunWikiGraphCLIInput = {},\n): Promise<RunWikiGraphCLICapturedResult> {\n const stdout = new CaptureWritable(input.stdoutIsTTY);\n const stderr = new CaptureWritable(input.stderrIsTTY);\n const result = await runWikiGraphCLI({\n ...input,\n stderr,\n stdout,\n });\n\n return {\n exitCode: result.exitCode,\n stderr: stderr.text,\n stdout: stdout.text,\n };\n}\n\nexport function createWikiGraphCLI(\n defaults: RunWikiGraphCLIInput = {},\n): WikiGraphCLI {\n return {\n run(argv, overrides = {}) {\n return runWikiGraphCLI(mergeCLIInputs(defaults, argv, overrides));\n },\n runCaptured(argv, overrides = {}) {\n return runWikiGraphCLICaptured(mergeCLIInputs(defaults, argv, overrides));\n },\n };\n}\n\nfunction mergeCLIInputs(\n defaults: RunWikiGraphCLIInput,\n argv: readonly string[] | undefined,\n overrides: RunWikiGraphCLIInput,\n): RunWikiGraphCLIInput {\n return {\n ...defaults,\n ...overrides,\n argv: argv ?? overrides.argv ?? defaults.argv,\n };\n}\n\nfunction createInputStream(\n input: NodeJS.ReadableStream | Uint8Array | string,\n): NodeJS.ReadableStream & { isTTY?: boolean | undefined } {\n if (typeof input === \"string\" || input instanceof Uint8Array) {\n return Readable.from([input]) as NodeJS.ReadableStream & {\n isTTY?: boolean | undefined;\n };\n }\n\n return input as NodeJS.ReadableStream & { isTTY?: boolean | undefined };\n}\n\nfunction normalizeExitCode(\n currentExitCode: NodeJS.Process[\"exitCode\"],\n fallbackExitCode: number,\n): number {\n if (currentExitCode === undefined || currentExitCode === 0) {\n return fallbackExitCode;\n }\n\n const numericExitCode = Number(currentExitCode);\n\n return Number.isFinite(numericExitCode) ? numericExitCode : 1;\n}\n\nfunction throwIfAborted(signal: AbortSignal | undefined): void {\n if (signal?.aborted !== true) {\n return;\n }\n\n throw signal.reason instanceof Error\n ? signal.reason\n : new Error(\"The Wiki Graph CLI run was aborted.\");\n}\n\nclass CaptureWritable extends Writable {\n readonly #chunks: string[] = [];\n\n public constructor(isTTY: boolean | undefined) {\n super();\n Object.defineProperty(this, \"isTTY\", {\n configurable: true,\n value: isTTY ?? false,\n });\n }\n\n public get text(): string {\n return this.#chunks.join(\"\");\n }\n\n public override _write(\n chunk: Buffer | string,\n encoding: BufferEncoding,\n callback: (error?: Error | null) => void,\n ): void {\n if (typeof chunk === \"string\") {\n this.#chunks.push(chunk);\n callback();\n return;\n }\n\n const normalizedEncoding = encoding as BufferEncoding | \"buffer\";\n this.#chunks.push(\n chunk.toString(normalizedEncoding === \"buffer\" ? \"utf8\" : encoding),\n );\n callback();\n }\n}\n","import {\n createNodeTemplateEnvironment,\n formatWikiGraphLibraryUri,\n parseWikiGraphLibraryUri,\n} from \"wiki-graph-sdk\";\nimport { existsSync } from \"fs\";\nimport { dirname, join, parse, resolve } from \"path\";\n\nimport { CLI_FULL_COMMAND, CLI_PRIMARY_COMMAND } from \"../support/command.js\";\nimport { getCLIDevProjectRoot } from \"../runtime/context.js\";\nimport type { ParsedWikiGraphLibraryUri } from \"wiki-graph-sdk\";\nimport { CLI_FORMATS, parseLocatedWikiGraphUri } from \"../support/index.js\";\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../support/index.js\";\nimport { formatCliCommand, formatShellArgument } from \"../support/index.js\";\nimport type {\n CLIArchiveAction,\n CLIArchiveChapterAction,\n CLIArchiveMaintenanceCommand,\n CLILibraryAction,\n} from \"./types.js\";\nimport { parseChapterTarget } from \"./uri/chapter/target.js\";\n\nexport const HELP_TOPICS = [\n \"format\",\n \"file-import\",\n \"source-locators\",\n \"config\",\n \"runtime\",\n \"uri\",\n \"recipe\",\n \"readiness\",\n \"library\",\n] as const;\n\nexport type HelpTopic = (typeof HELP_TOPICS)[number];\n\nexport type UriHelpTargetName =\n | \"archive-scope\"\n | \"artifact-object\"\n | \"chapter-collection-scope\"\n | \"chapter-scope\"\n | \"chapter-source-range-object\"\n | \"chapter-source-locator-scope\"\n | \"chapter-source-object\"\n | \"chapter-summary-range-object\"\n | \"chapter-summary-object\"\n | \"chapter-title-object\"\n | \"chapter-tree-object\"\n | \"chapter-state-object\"\n | \"chapter-index-artifact\"\n | \"chunk-scope\"\n | \"chunk-object\"\n | \"cover-object\"\n | \"entity-scope\"\n | \"entity-object\"\n | \"entity-wikipage-object\"\n | \"index-object\"\n | \"job-collection-scope\"\n | \"job-object\"\n | \"job-target-object\"\n | \"local-config-namespace\"\n | \"local-config-section\"\n | \"metadata-object\"\n | \"summary-object\"\n | \"triple-scope\"\n | \"triple-object\";\n\nexport type UriHelpPredicateName =\n | \"add\"\n | \"boost\"\n | \"build\"\n | \"cancel\"\n | \"clear\"\n | \"clean\"\n | \"create\"\n | \"delete\"\n | \"evidence\"\n | \"export\"\n | \"inspect\"\n | \"move\"\n | \"pack\"\n | \"pause\"\n | \"put\"\n | \"related\"\n | \"remove\"\n | \"reset\"\n | \"resume\"\n | \"set\"\n | \"sync\"\n | \"test\"\n | \"watch\";\n\nexport type LibraryHelpPredicateName = CLILibraryAction | \"clean\" | \"sync\";\n\ninterface UriHelpTarget {\n readonly name: UriHelpTargetName;\n readonly predicates: readonly UriHelpPredicateName[];\n}\n\nconst URI_HELP_TARGETS: readonly UriHelpTarget[] = [\n {\n name: \"archive-scope\",\n predicates: [\"create\", \"export\", \"inspect\"],\n },\n { name: \"artifact-object\", predicates: [] },\n {\n name: \"chapter-collection-scope\",\n predicates: [\"add\"],\n },\n {\n name: \"chapter-scope\",\n predicates: [\"move\", \"remove\", \"reset\"],\n },\n { name: \"chapter-source-range-object\", predicates: [] },\n { name: \"chapter-source-locator-scope\", predicates: [] },\n { name: \"chapter-source-object\", predicates: [\"set\"] },\n { name: \"chapter-summary-range-object\", predicates: [] },\n { name: \"chapter-summary-object\", predicates: [\"set\"] },\n { name: \"chapter-title-object\", predicates: [\"clear\", \"set\"] },\n { name: \"chapter-tree-object\", predicates: [\"set\"] },\n { name: \"chapter-state-object\", predicates: [] },\n { name: \"chapter-index-artifact\", predicates: [\"build\", \"delete\"] },\n { name: \"chunk-scope\", predicates: [] },\n { name: \"chunk-object\", predicates: [\"evidence\", \"pack\", \"related\"] },\n { name: \"cover-object\", predicates: [] },\n {\n name: \"entity-scope\",\n predicates: [],\n },\n { name: \"entity-object\", predicates: [\"evidence\", \"pack\", \"related\"] },\n { name: \"entity-wikipage-object\", predicates: [] },\n {\n name: \"index-object\",\n predicates: [\"clean\", \"sync\"],\n },\n {\n name: \"job-collection-scope\",\n predicates: [\"add\", \"clean\"],\n },\n {\n name: \"job-object\",\n predicates: [\"boost\", \"cancel\", \"pause\", \"resume\", \"watch\"],\n },\n { name: \"job-target-object\", predicates: [\"set\"] },\n {\n name: \"local-config-namespace\",\n predicates: [],\n },\n {\n name: \"local-config-section\",\n predicates: [\"clear\", \"delete\", \"put\", \"set\", \"test\"],\n },\n {\n name: \"metadata-object\",\n predicates: [\"clear\", \"delete\", \"put\", \"set\"],\n },\n { name: \"summary-object\", predicates: [] },\n { name: \"triple-scope\", predicates: [] },\n { name: \"triple-object\", predicates: [\"evidence\"] },\n] as const;\n\nconst URI_HELP_TARGET_LOOKUP = new Map<UriHelpTargetName, UriHelpTarget>(\n URI_HELP_TARGETS.map((target) => [target.name, target]),\n);\n\nexport const ARCHIVE_COMMANDS = [\n \"create\",\n \"related\",\n \"evidence\",\n \"next\",\n \"pack\",\n \"inspect\",\n \"export\",\n] as const satisfies readonly CLIArchiveAction[];\n\nexport const ARCHIVE_MAINTENANCE_COMMANDS = [\n \"cover\",\n \"meta\",\n \"chapter\",\n] as const satisfies readonly CLIArchiveMaintenanceCommand[];\n\nconst HELP_TOPIC_METADATA: readonly {\n readonly name: HelpTopic;\n readonly summary: string;\n readonly rootVisible?: boolean;\n}[] = [\n {\n name: \"format\",\n summary: \"Supported formats, inference rules, and IO constraints.\",\n },\n {\n name: \"file-import\",\n rootVisible: false,\n summary: \"Advanced source-file import and source-text provenance behavior.\",\n },\n {\n name: \"source-locators\",\n rootVisible: false,\n summary: \"Source artifact URIs and source-text locator mappings.\",\n },\n {\n name: \"config\",\n summary: \"Configuration overview, precedence, and when each layer applies.\",\n },\n {\n name: \"runtime\",\n summary: \"Advanced runtime, worker, cache, log, JSONL, and debug behavior.\",\n },\n {\n name: \"uri\",\n summary:\n \"URI grammar, command routing, scopes, objects, and retrieval strategy.\",\n },\n {\n name: \"recipe\",\n summary: \"Recommended workflow and best practices after root help.\",\n },\n {\n name: \"readiness\",\n summary: \"Search index, LLM, WikiSpine, and generated-data prerequisites.\",\n },\n {\n name: \"library\",\n summary:\n \"Library registries, archive memberships, path binding, and aggregate indexes.\",\n },\n] as const;\n\nconst ARCHIVE_MAINTENANCE_COMMAND_METADATA: readonly {\n readonly name: CLIArchiveMaintenanceCommand;\n readonly summary: string;\n}[] = [\n {\n name: \"cover\",\n summary: \"Write raw cover bytes to stdout for redirection or piping.\",\n },\n {\n name: \"meta\",\n summary: \"Read or edit metadata attached to an object.\",\n },\n {\n name: \"chapter\",\n summary: \"Edit the chapter tree and per-chapter digest stages.\",\n },\n] as const;\n\nconst HELP_TOPIC_TEMPLATE_NAMES: Readonly<Record<HelpTopic, string>> = {\n format: \"help/topics/format\",\n \"file-import\": \"help/topics/file-import\",\n \"source-locators\": \"help/topics/source-locators\",\n config: \"help/topics/config\",\n runtime: \"help/topics/runtime\",\n uri: \"help/topics/uri\",\n recipe: \"help/topics/recipe\",\n readiness: \"help/topics/readiness\",\n library: \"help/topics/library\",\n};\n\nlet helpTemplateEnvironment:\n | ReturnType<typeof createNodeTemplateEnvironment>\n | undefined;\n\nexport function renderMainHelpText(): string {\n return renderHelpTemplate(\"help/commands/root\");\n}\n\nexport function renderTransformHelpText(): string {\n return renderHelpTemplate(\"help/commands/transform\");\n}\n\nexport function renderGcCommandHelpText(): string {\n return renderHelpTemplate(\"help/commands/gc\");\n}\n\nexport function renderLegacyCommandHelpText(action?: \"migrate\"): string {\n return renderHelpTemplate(\n action === undefined\n ? \"help/commands/legacy\"\n : `help/commands/legacy/${action}`,\n );\n}\n\nexport function renderMaintenanceCommandHelpText(action?: \"upgrade\"): string {\n return renderHelpTemplate(\n action === undefined\n ? \"help/commands/maintenance\"\n : `help/commands/maintenance/${action}`,\n );\n}\n\nexport function renderArchiveCommandHelpText(action: CLIArchiveAction): string {\n return renderHelpTemplate(`help/commands/archive/${action}`);\n}\n\nexport function renderHelpTopicText(topic: HelpTopic): string {\n return renderHelpTemplate(HELP_TOPIC_TEMPLATE_NAMES[topic]);\n}\n\nexport function renderUriHelpText(\n targetName: UriHelpTargetName,\n uri: string,\n): string {\n return renderHelpTemplate(\"help/commands/uri\", {\n displayUri: uri,\n libraryContext: getLibraryHelpContext(uri),\n target: requireUriHelpTarget(targetName),\n uriContext: getUriHelpContext(uri),\n uri: formatHelpCommandUri(uri),\n });\n}\n\nexport function renderUriPredicateHelpText(\n targetName: UriHelpTargetName,\n predicate: UriHelpPredicateName,\n uri: string,\n): string {\n const target = requireUriHelpTarget(targetName);\n\n if (!target.predicates.includes(predicate)) {\n throw new Error(\n withHelpRoute(\n `The URI target ${uri} does not support \\`${predicate}\\`.`,\n formatCliCommand([uri, \"--help\"]),\n ),\n );\n }\n\n return renderHelpTemplate(\"help/commands/predicate\", {\n displayUri: uri,\n libraryContext: getLibraryHelpContext(uri),\n predicate,\n target,\n uriContext: getUriHelpContext(uri),\n uri: formatHelpCommandUri(uri),\n });\n}\n\nexport function renderLibraryUriHelpText(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n): string {\n const helpUri = formatLibraryHelpUri(uri, target);\n return renderHelpTemplate(\"help/commands/library\", {\n target,\n uri: formatHelpCommandUri(helpUri),\n });\n}\n\nexport function renderLibraryPredicateHelpText(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n predicate: LibraryHelpPredicateName,\n): string {\n const helpUri = formatLibraryHelpUri(uri, target);\n return renderHelpTemplate(\"help/commands/library-predicate\", {\n displayUri: helpUri,\n predicate,\n target,\n uri: formatHelpCommandUri(helpUri),\n });\n}\n\nfunction formatHelpCommandUri(uri: string): string {\n return formatShellArgument(uri);\n}\n\nfunction formatLibraryHelpUri(\n fallbackUri: string,\n target: ParsedWikiGraphLibraryUri,\n): string {\n const scopeUri = formatWikiGraphLibraryUri(target.publicId);\n switch (target.kind) {\n case \"archive\":\n if (target.archivePublicId === undefined) {\n return fallbackUri.replace(/\\/+$/u, \"\");\n }\n return appendLibraryHelpPath(\n appendLibraryHelpPath(`${scopeUri}/arc`, target.archivePublicId),\n stripHelpObjectUriPrefix(target.objectUri),\n );\n case \"archive-collection\":\n return `${scopeUri}/arc`;\n case \"archive-path\":\n return target.archivePublicId === undefined\n ? `${scopeUri}/arc/path`\n : `${scopeUri}/arc/${target.archivePublicId}/path`;\n case \"archive-tree\":\n return `${scopeUri}/arc/tree`;\n case \"metadata\":\n return `${scopeUri}/meta`;\n case \"path\":\n return `${scopeUri}/path`;\n case \"registry\":\n return \"wikg://lib/registry\";\n case \"scope\":\n return appendLibraryHelpPath(\n scopeUri,\n stripHelpObjectUriPrefix(target.objectUri),\n );\n default:\n throw new Error(\"Internal error: unknown library help target.\");\n }\n}\n\nfunction appendLibraryHelpPath(\n baseUri: string,\n path: string | undefined,\n): string {\n if (path === undefined || path === \"\") {\n return baseUri;\n }\n return `${baseUri.replace(/\\/+$/u, \"\")}/${path.replace(/^\\/+|\\/+$/gu, \"\")}`;\n}\n\nfunction stripHelpObjectUriPrefix(\n objectUri: string | undefined,\n): string | undefined {\n return objectUri?.replace(/^wikg:\\/\\//u, \"\");\n}\n\nexport function isUriHelpPredicate(\n targetName: UriHelpTargetName,\n predicate: string,\n): predicate is UriHelpPredicateName {\n return requireUriHelpTarget(targetName).predicates.includes(\n predicate as UriHelpPredicateName,\n );\n}\n\nexport function renderArchiveMaintenanceCommandHelpText(\n command: CLIArchiveMaintenanceCommand,\n): string {\n return renderHelpTemplate(`help/commands/maintenance/${command}`);\n}\n\nexport function renderArchiveMaintenanceChapterActionHelpText(\n action: CLIArchiveChapterAction,\n): string {\n return renderHelpTemplate(`help/commands/maintenance/chapter/${action}`);\n}\n\nexport function parseHelpTopic(value: string): HelpTopic {\n const normalized = value.trim().toLowerCase();\n\n if (HELP_TOPICS.includes(normalized as HelpTopic)) {\n return normalized as HelpTopic;\n }\n\n throw new Error(\n withHelpRoute(\n `Invalid help topic: ${value}. Expected one of ${HELP_TOPICS.join(\", \")}.`,\n CLI_HELP_ROUTES.root,\n ),\n );\n}\n\nfunction requireUriHelpTarget(name: UriHelpTargetName): UriHelpTarget {\n const target = URI_HELP_TARGET_LOOKUP.get(name);\n\n if (target === undefined) {\n throw new Error(`Internal error: unknown URI help target ${name}.`);\n }\n\n return target;\n}\n\nfunction getLibraryHelpContext(uri: string): {\n readonly isArchiveShortcut: boolean;\n readonly isLibraryUri: boolean;\n readonly isLibraryWide: boolean;\n} {\n const target = (() => {\n try {\n return parseWikiGraphLibraryUri(uri);\n } catch {\n return undefined;\n }\n })();\n\n if (target === undefined) {\n return {\n isArchiveShortcut: false,\n isLibraryUri: false,\n isLibraryWide: false,\n };\n }\n\n return {\n isArchiveShortcut: target.kind === \"archive\",\n isLibraryUri: true,\n isLibraryWide: target.kind === \"scope\" && target.objectUri !== undefined,\n };\n}\n\nfunction getUriHelpContext(uri: string): {\n readonly isChapterQualified: boolean;\n} {\n const objectUri = getHelpObjectUri(uri);\n const target =\n objectUri === undefined ? undefined : parseChapterTarget(objectUri);\n\n return {\n isChapterQualified:\n target?.kind === \"chapter-lens\" ||\n target?.kind === \"chapter-triple-pattern-lens\",\n };\n}\n\nfunction getHelpObjectUri(uri: string): string | undefined {\n try {\n const libraryTarget = parseWikiGraphLibraryUri(uri);\n if (libraryTarget?.objectUri !== undefined) {\n return libraryTarget.objectUri;\n }\n } catch {\n // Fall through to the generic URI parser.\n }\n\n try {\n return parseLocatedWikiGraphUri(uri).objectUri;\n } catch {\n return undefined;\n }\n}\n\nfunction renderHelpTemplate(\n templateName: string,\n extraContext: Record<string, unknown> = {},\n): string {\n return getHelpTemplateEnvironment().render(templateName, {\n formats: CLI_FORMATS,\n commandName: CLI_PRIMARY_COMMAND,\n fullCommandName: CLI_FULL_COMMAND,\n helpTopics: HELP_TOPIC_METADATA,\n archiveMaintenanceCommands: ARCHIVE_MAINTENANCE_COMMAND_METADATA,\n uriHelpTargets: URI_HELP_TARGETS,\n ...extraContext,\n });\n}\n\nfunction getHelpTemplateEnvironment(): ReturnType<\n typeof createNodeTemplateEnvironment\n> {\n helpTemplateEnvironment ??= createNodeTemplateEnvironment(\n resolveCLIDataDirectory(),\n {\n autoescape: false,\n },\n );\n\n return helpTemplateEnvironment;\n}\n\nfunction resolveCLIDataDirectory(): string {\n const distDirectory = (\n globalThis as { readonly __WIKIGRAPH_CLI_DIST_DIR__?: unknown }\n ).__WIKIGRAPH_CLI_DIST_DIR__;\n const explicitProjectRoot = getCLIDevProjectRoot();\n const candidates = [\n typeof distDirectory === \"string\"\n ? resolve(distDirectory, \"data\")\n : undefined,\n explicitProjectRoot === undefined\n ? undefined\n : resolve(explicitProjectRoot, \"packages\", \"cli\", \"data\"),\n ];\n\n let directory = process.cwd();\n const root = parse(directory).root;\n while (true) {\n candidates.push(join(directory, \"packages\", \"cli\", \"data\"));\n if (directory === root) break;\n directory = dirname(directory);\n }\n\n const dataDirectory = candidates.find(\n (candidate): candidate is string =>\n candidate !== undefined && existsSync(join(candidate, \"help\")),\n );\n if (dataDirectory === undefined) {\n throw new Error(\"Could not locate CLI help data directory.\");\n }\n return dataDirectory;\n}\n","import {\n parseChapterPath,\n type ArchiveTriplePattern,\n type IndexArtifactKind,\n} from \"wiki-graph-sdk\";\n\nimport type { ArchiveUriLens, ChapterStateUriTarget } from \"../../types.js\";\nimport {\n parseArchiveUriLensObjectUri,\n parseTriplePatternObjectUri,\n parseTriplePatternSuffix,\n} from \"../triple-pattern.js\";\n\nexport type ChapterUriTarget =\n | { readonly kind: \"collection\" }\n | { readonly kind: \"lens\"; readonly lens: ArchiveUriLens }\n | {\n readonly kind: \"triple-pattern-lens\";\n readonly pattern: ArchiveTriplePattern;\n }\n | { readonly kind: \"tree\" }\n | { readonly chapterPath: string; readonly kind: \"chapter\" }\n | {\n readonly chapterPath: string;\n readonly kind: \"chapter-lens\";\n readonly lens: ArchiveUriLens;\n }\n | {\n readonly chapterPath: string;\n readonly kind: \"chapter-triple-pattern-lens\";\n readonly pattern: ArchiveTriplePattern;\n }\n | {\n readonly chapterPath: string;\n readonly kind: \"chapter-state\";\n readonly target?: ChapterStateUriTarget;\n }\n | {\n readonly chapterPath: string;\n readonly indexArtifactKind: IndexArtifactKind;\n readonly kind: \"chapter-index-artifact\";\n }\n | {\n readonly chapterPath: string;\n readonly kind: \"chapter-resource\";\n readonly resource: \"source\" | \"summary\" | \"title\";\n }\n | {\n readonly chapterPath: string;\n readonly kind: \"source-locator-scope\";\n };\n\nexport function parseChapterTarget(\n objectUri: string,\n): ChapterUriTarget | undefined {\n if (objectUri === \"wikg://chapter\") {\n return { kind: \"collection\" };\n }\n\n if (objectUri === \"wikg://chapter/tree\") {\n return { kind: \"tree\" };\n }\n\n const archiveLens = parseArchiveUriLensObjectUri(objectUri);\n if (archiveLens !== undefined) {\n return { kind: \"lens\", lens: archiveLens };\n }\n\n const archiveTriplePattern = parseTriplePatternObjectUri(objectUri);\n if (archiveTriplePattern !== undefined) {\n return {\n kind: \"triple-pattern-lens\",\n pattern: archiveTriplePattern,\n };\n }\n\n const match = /^wikg:\\/\\/chapter\\/(.+)$/u.exec(objectUri);\n\n if (match?.[1] === undefined) {\n return undefined;\n }\n\n const parsed = parseChapterPathAndSuffix(match[1]);\n if (parsed === undefined) {\n return undefined;\n }\n const { chapterPath, suffix } = parsed;\n const chapterTriplePattern =\n suffix === undefined ? undefined : parseTriplePatternSuffix(suffix);\n\n if (chapterTriplePattern !== undefined) {\n return {\n chapterPath,\n kind: \"chapter-triple-pattern-lens\",\n pattern: chapterTriplePattern,\n };\n }\n\n const chapterStateTarget = parseChapterStateSuffix(suffix);\n\n if (chapterStateTarget !== undefined) {\n return {\n chapterPath,\n kind: \"chapter-state\",\n ...(chapterStateTarget === \"all\" ? {} : { target: chapterStateTarget }),\n };\n }\n\n const indexArtifactKind = parseChapterIndexArtifactSuffix(suffix);\n\n if (indexArtifactKind !== undefined) {\n return {\n chapterPath,\n indexArtifactKind,\n kind: \"chapter-index-artifact\",\n };\n }\n\n if (suffix === \"source/locators\") {\n return { chapterPath, kind: \"source-locator-scope\" };\n }\n\n const resource = parseChapterResourceSuffix(suffix);\n\n if (suffix !== undefined && resource === undefined) {\n return undefined;\n }\n\n if (resource === undefined) {\n return { chapterPath, kind: \"chapter\" };\n }\n if (resource === \"state\") {\n return { chapterPath, kind: \"chapter-state\" };\n }\n if (resource === \"chunk\" || resource === \"entity\" || resource === \"triple\") {\n return { chapterPath, kind: \"chapter-lens\", lens: resource };\n }\n if (resource === \"source\" || resource === \"summary\") {\n return { chapterPath, kind: \"chapter-resource\", resource };\n }\n\n return { chapterPath, kind: \"chapter-resource\", resource };\n}\n\nfunction parseChapterPathAndSuffix(\n value: string,\n): { readonly chapterPath: string; readonly suffix?: string } | undefined {\n const pathWithoutFragment = value.replace(/#.*$/u, \"\");\n const parts = pathWithoutFragment.replace(/\\/+$/u, \"\").split(\"/\");\n const suffixStart = parts.findIndex((part) =>\n [\n \"chunk\",\n \"entity\",\n \"index\",\n \"source\",\n \"state\",\n \"summary\",\n \"title\",\n \"triple\",\n ].includes(part),\n );\n const pathParts = suffixStart === -1 ? parts : parts.slice(0, suffixStart);\n const suffixParts = suffixStart === -1 ? [] : parts.slice(suffixStart);\n\n const chapterPath = parseChapterPath(pathParts.join(\"/\"), \"chapter URI\");\n return {\n chapterPath,\n ...(suffixParts.length === 0 ? {} : { suffix: suffixParts.join(\"/\") }),\n };\n}\n\nfunction parseChapterIndexArtifactSuffix(\n suffix: string | undefined,\n): IndexArtifactKind | undefined {\n switch (suffix) {\n case \"index/fts\":\n return \"fts\";\n case \"index/embedding/source\":\n return \"embedding-source\";\n case \"index/embedding/summary\":\n return \"embedding-summary\";\n default:\n return undefined;\n }\n}\n\nfunction parseChapterStateSuffix(\n suffix: string | undefined,\n): ChapterStateUriTarget | \"all\" | undefined {\n if (suffix === \"state\") {\n return \"all\";\n }\n\n switch (suffix) {\n case \"state/source\":\n return \"source\";\n case \"state/reading-graph\":\n return \"reading-graph\";\n case \"state/reading-summary\":\n return \"reading-summary\";\n case \"state/knowledge-graph\":\n return \"knowledge-graph\";\n default:\n return undefined;\n }\n}\n\nfunction parseChapterResourceSuffix(\n suffix: string | undefined,\n):\n | \"chunk\"\n | \"entity\"\n | \"source\"\n | \"state\"\n | \"summary\"\n | \"title\"\n | \"triple\"\n | undefined {\n switch (suffix) {\n case undefined:\n case \"chunk\":\n case \"entity\":\n case \"source\":\n case \"state\":\n case \"summary\":\n case \"title\":\n case \"triple\":\n return suffix;\n default:\n return undefined;\n }\n}\n","import type { ArchiveTriplePattern } from \"wiki-graph-sdk\";\n\nimport type { ArchiveUriLens } from \"../types.js\";\n\nexport function parseTriplePatternObjectUri(\n objectUri: string,\n): ArchiveTriplePattern | undefined {\n if (!objectUri.startsWith(\"wikg://triple/\")) {\n return undefined;\n }\n\n return parseTriplePatternSuffix(objectUri.slice(\"wikg://\".length));\n}\n\nexport function parseTriplePatternSuffix(\n suffix: string,\n): ArchiveTriplePattern | undefined {\n const parts = suffix.split(\"/\");\n\n if (parts[0] !== \"triple\" || parts.length < 2 || parts.length > 4) {\n return undefined;\n }\n\n const [subject = \"_\", predicate = \"_\", object = \"_\"] = parts.slice(1);\n const hasPlaceholder = parts.slice(1).includes(\"_\");\n const hasOmittedTrailingPlaceholder = parts.length < 4;\n\n if (!hasPlaceholder && !hasOmittedTrailingPlaceholder) {\n return undefined;\n }\n\n if (\n !isTriplePatternQidSegment(subject) ||\n !isTriplePatternPredicateSegment(predicate) ||\n !isTriplePatternQidSegment(object)\n ) {\n return undefined;\n }\n\n return {\n ...(object === \"_\" ? {} : { objectQid: object }),\n ...(predicate === \"_\" ? {} : { predicate: decodeURIComponent(predicate) }),\n ...(subject === \"_\" ? {} : { subjectQid: subject }),\n };\n}\n\nexport function isTripleScopePath(path: string): boolean {\n if (path === \"triple\" || /^chapter\\/[1-9][0-9]*\\/triple$/u.test(path)) {\n return true;\n }\n\n const suffix = path.startsWith(\"chapter/\")\n ? /^chapter\\/[1-9][0-9]*\\/(.+)$/u.exec(path)?.[1]\n : path;\n\n return suffix === undefined\n ? false\n : parseTriplePatternSuffix(suffix) !== undefined;\n}\n\nfunction isTriplePatternQidSegment(value: string): boolean {\n return value === \"_\" || /^Q[1-9][0-9]*$/u.test(value);\n}\n\nfunction isTriplePatternPredicateSegment(value: string): boolean {\n return value === \"_\" || (value !== \"\" && !value.includes(\"/\"));\n}\n\nexport function parseArchiveUriLensObjectUri(\n objectUri: string,\n): ArchiveUriLens | undefined {\n switch (objectUri) {\n case \"wikg://chapter\":\n return \"chapter\";\n case \"wikg://chunk\":\n return \"chunk\";\n case \"wikg://entity\":\n return \"entity\";\n case \"wikg://triple\":\n return \"triple\";\n default:\n return undefined;\n }\n}\n","import {\n inferCLIFormatFromPath,\n parseCLIFormat,\n parseLocatedWikiGraphUri,\n withHelpRoute,\n} from \"../support/index.js\";\nimport { renderArchiveCommandHelpText } from \"./help.js\";\nimport { type ArchiveTriplePattern } from \"wiki-graph-sdk\";\nimport type {\n ArchiveArgumentValues,\n CLIArchiveAction,\n CLIObjectKind,\n ParsedCLIArguments,\n} from \"./types.js\";\nimport {\n formatMissingArchiveInputMessage,\n normalizeArchiveInlineOptions,\n parseArchiveInspectChapterId,\n parseEvidenceFlag,\n parseNonNegativeIntegerFlag,\n parsePositiveIntegerFlag,\n parseRelatedRoleFlag,\n parseResultFormat,\n parseSourceContextFlag,\n rejectArchiveBooleanFlag,\n rejectArchiveExtraPositionals,\n rejectArchiveFlag,\n rejectArchiveNonReadFlags,\n rejectArchiveReverseQuery,\n validateArchiveCommandUriInput,\n validateEvidenceTargetUri,\n validatePackTargetUri,\n validateRelatedTargetUri,\n} from \"./helpers.js\";\n\nexport function parseArchiveArguments(\n action: CLIArchiveAction,\n positionals: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute = `wg ${action} --help`,\n options: {\n readonly defaultKinds?: readonly CLIObjectKind[];\n readonly triplePattern?: ArchiveTriplePattern;\n } = {},\n): ParsedCLIArguments {\n const normalized = normalizeArchiveInlineOptions(positionals, values);\n\n positionals = normalized.positionals;\n values = normalized.values;\n\n const archivePath = positionals[0];\n\n if (values.help === true) {\n return {\n help: true,\n helpText: renderArchiveCommandHelpText(action),\n kind: \"help\",\n };\n }\n\n if (archivePath === undefined || archivePath === \"-\") {\n throw new Error(\n withHelpRoute(formatMissingArchiveInputMessage(action), helpRoute),\n );\n }\n\n validateArchiveCommandUriInput(action, archivePath);\n\n if (values.verbose === true) {\n throw new Error(\n withHelpRoute(\n `The \\`${action}\\` command does not support --verbose.`,\n helpRoute,\n ),\n );\n }\n\n rejectNonQuerySkipUnindexedFlag(action, values, helpRoute);\n\n switch (action) {\n case \"create\": {\n rejectArchiveExtraPositionals(action, positionals, 1, helpRoute);\n rejectArchiveFlag(action, \"--input\", values.input, helpRoute);\n rejectArchiveFlag(\n action,\n \"--input-format\",\n values[\"input-format\"],\n helpRoute,\n );\n rejectArchiveFlag(action, \"--output\", values.output, helpRoute);\n rejectArchiveFlag(\n action,\n \"--output-format\",\n values[\"output-format\"],\n helpRoute,\n );\n rejectArchiveFlag(action, \"--stage\", values.stage, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveFlag(action, \"--chapter\", values.chapter, helpRoute);\n rejectArchiveFlag(action, \"--context\", values.context, helpRoute);\n rejectArchiveFlag(action, \"--limit\", values.limit, helpRoute);\n rejectArchiveFlag(action, \"--depth\", values.depth, helpRoute);\n rejectArchiveFlag(action, \"--evidence\", values.evidence, helpRoute);\n rejectArchiveFlag(action, \"--budget\", values.budget, helpRoute);\n rejectArchiveBooleanFlag(action, \"--all\", values.all, helpRoute);\n rejectArchiveBooleanFlag(\n action,\n \"--backlinks\",\n values.backlinks,\n helpRoute,\n );\n rejectArchiveFlag(action, \"--role\", values.role, helpRoute);\n rejectArchiveFlag(action, \"--llm\", values.llm, helpRoute);\n rejectArchiveFlag(action, \"--prompt\", values.prompt, helpRoute);\n rejectArchiveFlag(action, \"--query\", values.query, helpRoute);\n rejectArchiveBooleanFlag(action, \"--reverse\", values.reverse, helpRoute);\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n if (\n values.import !== undefined &&\n inferCLIFormatFromPath(values.import) !== \"epub\"\n ) {\n throw new Error(\n withHelpRoute(\n \"`create --import` only supports EPUB input.\",\n helpRoute,\n ),\n );\n }\n return {\n args: {\n action,\n archivePath,\n ...(values.import === undefined ? {} : { importPath: values.import }),\n ...(values.json === undefined ? {} : { json: values.json }),\n ...(values.replace === undefined ? {} : { replace: values.replace }),\n },\n help: false,\n kind: \"archive\",\n };\n }\n case \"export\":\n rejectArchiveExtraPositionals(action, positionals, 1, helpRoute);\n rejectArchiveFlag(action, \"--import\", values.import, helpRoute);\n rejectArchiveFlag(action, \"--input\", values.input, helpRoute);\n rejectArchiveFlag(\n action,\n \"--input-format\",\n values[\"input-format\"],\n helpRoute,\n );\n rejectArchiveFlag(action, \"--prompt\", values.prompt, helpRoute);\n rejectArchiveFlag(action, \"--stage\", values.stage, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveFlag(action, \"--chapter\", values.chapter, helpRoute);\n rejectArchiveFlag(action, \"--context\", values.context, helpRoute);\n rejectArchiveFlag(action, \"--limit\", values.limit, helpRoute);\n rejectArchiveFlag(action, \"--depth\", values.depth, helpRoute);\n rejectArchiveFlag(action, \"--evidence\", values.evidence, helpRoute);\n rejectArchiveFlag(action, \"--budget\", values.budget, helpRoute);\n rejectArchiveBooleanFlag(action, \"--all\", values.all, helpRoute);\n rejectArchiveBooleanFlag(\n action,\n \"--backlinks\",\n values.backlinks,\n helpRoute,\n );\n rejectArchiveFlag(action, \"--role\", values.role, helpRoute);\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n rejectArchiveBooleanFlag(action, \"--json\", values.json, helpRoute);\n return {\n args: {\n action,\n archivePath,\n ...(values.output === undefined ? {} : { outputPath: values.output }),\n outputFormat:\n values[\"output-format\"] === undefined\n ? parseCLIFormat(\"markdown\", \"--output-format\")\n : parseCLIFormat(values[\"output-format\"], \"--output-format\"),\n },\n help: false,\n kind: \"archive\",\n };\n case \"inspect\": {\n const chapterId = parseArchiveInspectChapterId(positionals[0]);\n const parsedArchivePath =\n parseLocatedWikiGraphUri(archivePath).archivePath ?? archivePath;\n\n rejectArchiveExtraPositionals(action, positionals, 1, helpRoute);\n rejectArchiveNonReadFlags(action, values, helpRoute);\n rejectArchiveFlag(action, \"--budget\", values.budget, helpRoute);\n rejectArchiveFlag(action, \"--chapter\", values.chapter, helpRoute);\n rejectArchiveFlag(action, \"--context\", values.context, helpRoute);\n rejectArchiveFlag(action, \"--cursor\", values.cursor, helpRoute);\n rejectArchiveFlag(action, \"--depth\", values.depth, helpRoute);\n rejectArchiveFlag(action, \"--evidence\", values.evidence, helpRoute);\n rejectArchiveFlag(action, \"--from\", values.from, helpRoute);\n rejectArchiveFlag(action, \"--query\", values.query, helpRoute);\n rejectArchiveFlag(action, \"--stage\", values.stage, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveBooleanFlag(action, \"--all\", values.all, helpRoute);\n rejectArchiveBooleanFlag(\n action,\n \"--backlinks\",\n values.backlinks,\n helpRoute,\n );\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n rejectArchiveFlag(action, \"--limit\", values.limit, helpRoute);\n rejectArchiveFlag(action, \"--role\", values.role, helpRoute);\n return {\n args: {\n action,\n archivePath: parsedArchivePath,\n ...(chapterId === undefined ? {} : { chapterId }),\n ...(values.json === true ? { json: true } : {}),\n },\n help: false,\n kind: \"archive\",\n };\n }\n case \"search\": {\n const query = values.query;\n\n if (query === undefined) {\n throw new Error(\n withHelpRoute(\"Scope keyword retrieval requires --query.\", helpRoute),\n );\n }\n rejectArchiveExtraPositionals(action, positionals, 1, helpRoute);\n rejectArchiveNonReadFlags(action, values, helpRoute);\n rejectArchiveFlag(action, \"--budget\", values.budget, helpRoute);\n rejectArchiveFlag(action, \"--chapter\", values.chapter, helpRoute);\n rejectArchiveFlag(action, \"--from\", values.from, helpRoute);\n rejectArchiveFlag(action, \"--role\", values.role, helpRoute);\n rejectArchiveBooleanFlag(action, \"--reverse\", values.reverse, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n rejectNonChapterDepthFlag(action, archivePath, values.depth, helpRoute);\n\n return {\n args: {\n action,\n ...(values.all === undefined ? {} : { all: values.all }),\n archivePath,\n ...(values.backlinks === undefined\n ? {}\n : { backlinks: values.backlinks }),\n ...(values.cursor === undefined ? {} : { cursor: values.cursor }),\n ...(values.depth === undefined\n ? {}\n : {\n depth: parseNonNegativeIntegerFlag(\n values.depth,\n \"--depth\",\n helpRoute,\n ),\n }),\n ...parseSourceContextFlag(values.context, helpRoute),\n ...parseEvidenceFlag(values.evidence, helpRoute),\n format: parseResultFormat(values),\n ...(values.limit === undefined\n ? {}\n : {\n limit: parsePositiveIntegerFlag(\n values.limit,\n \"--limit\",\n helpRoute,\n ),\n }),\n query,\n ...(values[\"skip-unindexed\"] === true ? { skipUnindexed: true } : {}),\n ...(options.defaultKinds === undefined\n ? {}\n : { kinds: options.defaultKinds }),\n ...(options.triplePattern === undefined\n ? {}\n : { triplePattern: options.triplePattern }),\n },\n help: false,\n kind: \"archive\",\n };\n }\n case \"list\": {\n rejectArchiveExtraPositionals(action, positionals, 1, helpRoute);\n rejectArchiveNonReadFlags(action, values, helpRoute);\n rejectArchiveFlag(action, \"--budget\", values.budget, helpRoute);\n rejectArchiveFlag(action, \"--chapter\", values.chapter, helpRoute);\n rejectArchiveFlag(action, \"--from\", values.from, helpRoute);\n rejectArchiveFlag(action, \"--role\", values.role, helpRoute);\n rejectArchiveFlag(action, \"--query\", values.query, helpRoute);\n rejectArchiveReverseQuery(values, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n rejectNonChapterDepthFlag(action, archivePath, values.depth, helpRoute);\n return {\n args: {\n action,\n ...(values.all === undefined ? {} : { all: values.all }),\n archivePath,\n ...(values.backlinks === undefined\n ? {}\n : { backlinks: values.backlinks }),\n ...(values.cursor === undefined ? {} : { cursor: values.cursor }),\n ...(values.depth === undefined\n ? {}\n : {\n depth: parseNonNegativeIntegerFlag(\n values.depth,\n \"--depth\",\n helpRoute,\n ),\n }),\n ...parseSourceContextFlag(values.context, helpRoute),\n ...parseEvidenceFlag(values.evidence, helpRoute),\n format: parseResultFormat(values),\n ...(values.limit === undefined\n ? {}\n : {\n limit: parsePositiveIntegerFlag(\n values.limit,\n \"--limit\",\n helpRoute,\n ),\n }),\n ...(values.reverse === true ? { reverse: true } : {}),\n ...(options.defaultKinds === undefined\n ? {}\n : { kinds: options.defaultKinds }),\n ...(options.triplePattern === undefined\n ? {}\n : { triplePattern: options.triplePattern }),\n },\n help: false,\n kind: \"archive\",\n };\n }\n case \"get\": {\n rejectArchiveExtraPositionals(action, positionals, 1, helpRoute);\n rejectArchiveNonReadFlags(action, values, helpRoute);\n rejectArchiveFlag(action, \"--budget\", values.budget, helpRoute);\n rejectArchiveFlag(action, \"--chapter\", values.chapter, helpRoute);\n rejectArchiveFlag(action, \"--from\", values.from, helpRoute);\n rejectArchiveFlag(action, \"--limit\", values.limit, helpRoute);\n rejectArchiveFlag(action, \"--cursor\", values.cursor, helpRoute);\n rejectArchiveFlag(action, \"--depth\", values.depth, helpRoute);\n rejectArchiveFlag(action, \"--query\", values.query, helpRoute);\n rejectArchiveReverseQuery(values, helpRoute);\n rejectArchiveFlag(action, \"--role\", values.role, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveBooleanFlag(action, \"--all\", values.all, helpRoute);\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n return {\n args: {\n action,\n archivePath,\n ...(values.backlinks === undefined\n ? {}\n : { backlinks: values.backlinks }),\n ...parseSourceContextFlag(values.context, helpRoute),\n ...parseEvidenceFlag(values.evidence, helpRoute),\n format: parseResultFormat(values),\n objectId: archivePath,\n ...(values.reverse === true ? { reverse: true } : {}),\n },\n help: false,\n kind: \"archive\",\n };\n }\n case \"related\": {\n rejectArchiveExtraPositionals(action, positionals, 1, helpRoute);\n rejectArchiveNonReadFlags(action, values, helpRoute);\n rejectArchiveBooleanFlag(\n action,\n \"--backlinks\",\n values.backlinks,\n helpRoute,\n );\n rejectArchiveFlag(action, \"--budget\", values.budget, helpRoute);\n rejectArchiveFlag(action, \"--chapter\", values.chapter, helpRoute);\n rejectArchiveFlag(action, \"--depth\", values.depth, helpRoute);\n rejectArchiveFlag(action, \"--from\", values.from, helpRoute);\n const relatedTarget = validateRelatedTargetUri(archivePath, helpRoute);\n if (relatedTarget === \"chunk\") {\n rejectArchiveFlag(action, \"--role\", values.role, helpRoute);\n }\n rejectArchiveReverseQuery(values, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n return {\n args: {\n action,\n ...(values.all === undefined ? {} : { all: values.all }),\n archivePath,\n ...(values.cursor === undefined ? {} : { cursor: values.cursor }),\n ...parseSourceContextFlag(values.context, helpRoute),\n ...parseEvidenceFlag(values.evidence, helpRoute),\n format: parseResultFormat(values),\n ...(values.limit === undefined\n ? {}\n : {\n limit: parsePositiveIntegerFlag(\n values.limit,\n \"--limit\",\n helpRoute,\n ),\n }),\n objectId: archivePath,\n ...(values.query === undefined ? {} : { query: values.query }),\n ...(values.reverse === true ? { reverse: true } : {}),\n ...(values[\"skip-unindexed\"] === true ? { skipUnindexed: true } : {}),\n ...(relatedTarget === \"entity\"\n ? parseRelatedRoleFlag(values.role, helpRoute)\n : {}),\n },\n help: false,\n kind: \"archive\",\n };\n }\n case \"evidence\": {\n rejectArchiveExtraPositionals(action, positionals, 1, helpRoute);\n rejectArchiveNonReadFlags(action, values, helpRoute);\n rejectArchiveBooleanFlag(\n action,\n \"--backlinks\",\n values.backlinks,\n helpRoute,\n );\n rejectArchiveFlag(action, \"--budget\", values.budget, helpRoute);\n rejectArchiveFlag(action, \"--chapter\", values.chapter, helpRoute);\n rejectArchiveFlag(action, \"--depth\", values.depth, helpRoute);\n rejectArchiveFlag(action, \"--from\", values.from, helpRoute);\n rejectArchiveFlag(action, \"--role\", values.role, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveFlag(action, \"--evidence\", values.evidence, helpRoute);\n rejectArchiveReverseQuery(values, helpRoute);\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n validateEvidenceTargetUri(archivePath, helpRoute);\n return {\n args: {\n action,\n ...(values.all === undefined ? {} : { all: values.all }),\n archivePath,\n ...(values.cursor === undefined ? {} : { cursor: values.cursor }),\n ...parseSourceContextFlag(values.context, helpRoute),\n format: parseResultFormat(values),\n ...(values.limit === undefined\n ? {}\n : {\n limit: parsePositiveIntegerFlag(\n values.limit,\n \"--limit\",\n helpRoute,\n ),\n }),\n objectId: archivePath,\n ...(values.query === undefined ? {} : { query: values.query }),\n ...(values.reverse === true ? { reverse: true } : {}),\n ...(values[\"skip-unindexed\"] === true ? { skipUnindexed: true } : {}),\n },\n help: false,\n kind: \"archive\",\n };\n }\n case \"pack\": {\n rejectArchiveExtraPositionals(action, positionals, 1, helpRoute);\n rejectArchiveNonReadFlags(action, values, helpRoute);\n rejectArchiveBooleanFlag(\n action,\n \"--backlinks\",\n values.backlinks,\n helpRoute,\n );\n rejectArchiveFlag(action, \"--chapter\", values.chapter, helpRoute);\n rejectArchiveFlag(action, \"--context\", values.context, helpRoute);\n rejectArchiveFlag(action, \"--depth\", values.depth, helpRoute);\n rejectArchiveFlag(action, \"--from\", values.from, helpRoute);\n rejectArchiveFlag(action, \"--limit\", values.limit, helpRoute);\n rejectArchiveFlag(action, \"--cursor\", values.cursor, helpRoute);\n rejectArchiveFlag(action, \"--evidence\", values.evidence, helpRoute);\n rejectArchiveBooleanFlag(action, \"--reverse\", values.reverse, helpRoute);\n rejectArchiveFlag(action, \"--role\", values.role, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveBooleanFlag(action, \"--all\", values.all, helpRoute);\n validatePackTargetUri(archivePath, helpRoute);\n return {\n args: {\n action,\n archivePath,\n budget:\n values.budget === undefined\n ? 5000\n : parsePositiveIntegerFlag(values.budget, \"--budget\", helpRoute),\n format: parseResultFormat(values),\n objectId: archivePath,\n },\n help: false,\n kind: \"archive\",\n };\n }\n case \"next\": {\n rejectArchiveExtraPositionals(action, positionals, 2, helpRoute);\n rejectArchiveNonReadFlags(action, values, helpRoute);\n rejectArchiveFlag(action, \"--budget\", values.budget, helpRoute);\n rejectArchiveFlag(action, \"--chapter\", values.chapter, helpRoute);\n rejectArchiveFlag(action, \"--depth\", values.depth, helpRoute);\n rejectArchiveFlag(action, \"--context\", values.context, helpRoute);\n rejectArchiveFlag(action, \"--cursor\", values.cursor, helpRoute);\n rejectArchiveFlag(action, \"--evidence\", values.evidence, helpRoute);\n rejectArchiveFlag(action, \"--from\", values.from, helpRoute);\n rejectArchiveBooleanFlag(action, \"--reverse\", values.reverse, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveBooleanFlag(action, \"--all\", values.all, helpRoute);\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n\n return {\n args: {\n action,\n archivePath,\n ...(positionals[1] === undefined ? {} : { cursor: positionals[1] }),\n format: parseResultFormat(values),\n ...(values.limit === undefined\n ? {}\n : {\n limit: parsePositiveIntegerFlag(\n values.limit,\n \"--limit\",\n helpRoute,\n ),\n }),\n },\n help: false,\n kind: \"archive\",\n };\n }\n }\n}\n\nfunction rejectNonChapterDepthFlag(\n action: CLIArchiveAction,\n archivePath: string,\n depth: string | undefined,\n helpRoute: string,\n): void {\n if (depth === undefined) {\n return;\n }\n\n const objectUri = parseLocatedWikiGraphUri(archivePath).objectUri;\n if (\n objectUri === \"wikg://chapter\" ||\n objectUri?.startsWith(\"wikg://chapter/\") === true\n ) {\n return;\n }\n\n rejectArchiveFlag(action, \"--depth\", depth, helpRoute);\n}\n\nfunction rejectNonQuerySkipUnindexedFlag(\n action: CLIArchiveAction,\n values: ArchiveArgumentValues,\n helpRoute: string,\n): void {\n if (values[\"skip-unindexed\"] !== true) {\n return;\n }\n if (\n action === \"search\" ||\n ((action === \"related\" || action === \"evidence\") &&\n values.query !== undefined)\n ) {\n return;\n }\n\n rejectArchiveBooleanFlag(\n action,\n \"--skip-unindexed\",\n values[\"skip-unindexed\"],\n helpRoute,\n );\n}\n","import { CLI_HELP_ROUTES, withHelpRoute } from \"../../support/index.js\";\nimport type { BuildJobTarget } from \"wiki-graph-sdk\";\nimport type {\n CLIArchiveAction,\n CLIArchiveIndexAction,\n CLIArchiveUriAction,\n CLIJobAction,\n CLIMetadataAction,\n} from \"../types.js\";\nimport { isArchiveChapterAction } from \"./chapter/index.js\";\n\nexport function isArchiveAction(\n value: string | undefined,\n): value is CLIArchiveAction {\n return (\n value === \"create\" ||\n value === \"evidence\" ||\n value === \"export\" ||\n value === \"get\" ||\n value === \"inspect\" ||\n value === \"list\" ||\n value === \"next\" ||\n value === \"pack\" ||\n value === \"related\" ||\n value === \"search\"\n );\n}\n\nexport function isPublicArchiveCommandHelpAction(\n value: string | undefined,\n): value is \"next\" {\n return value === \"next\";\n}\n\nexport function isRemovedImplicitArchiveAction(\n value: string | undefined,\n): value is \"get\" | \"list\" | \"search\" {\n return value === \"get\" || value === \"list\" || value === \"search\";\n}\n\nexport function formatRemovedImplicitVerbMessage(\n _action: \"get\" | \"list\" | \"search\",\n): string {\n return withHelpRoute(\n \"This command form is not available. Pass the URI directly, or add --query to a scope URI.\",\n CLI_HELP_ROUTES.uri,\n );\n}\n\nexport function isArchiveUriAction(\n value: string | undefined,\n): value is CLIArchiveUriAction {\n return (\n value === \"build\" ||\n isArchiveAction(value) ||\n isArchiveChapterAction(value) ||\n isArchiveIndexAction(value) ||\n isMetadataAction(value)\n );\n}\n\nexport function isArchiveIndexAction(\n value: string | undefined,\n): value is CLIArchiveIndexAction {\n return value === \"clean\" || value === \"get\" || value === \"sync\";\n}\n\nexport function isMetadataAction(\n value: string | undefined,\n): value is CLIMetadataAction {\n return (\n value === \"clear\" ||\n value === \"delete\" ||\n value === \"get\" ||\n value === \"put\" ||\n value === \"set\"\n );\n}\n\nexport function isUriFirstArchiveAction(\n value: string | undefined,\n): value is \"evidence\" | \"get\" | \"list\" | \"pack\" | \"related\" | \"search\" {\n return (\n value === \"evidence\" ||\n value === \"get\" ||\n value === \"list\" ||\n value === \"pack\" ||\n value === \"related\" ||\n value === \"search\"\n );\n}\n\nexport function isImplicitArchiveReadAction(\n value: CLIArchiveUriAction,\n): value is \"get\" | \"list\" | \"search\" {\n return value === \"get\" || value === \"list\" || value === \"search\";\n}\nexport function isJobUriAction(\n value: string | undefined,\n): value is CLIJobAction {\n return (\n value === \"add\" ||\n value === \"boost\" ||\n value === \"cancel\" ||\n value === \"clean\" ||\n value === \"get\" ||\n value === \"list\" ||\n value === \"pause\" ||\n value === \"resume\" ||\n value === \"set\" ||\n value === \"watch\"\n );\n}\n\nexport function parseBuildJobTarget(value: string | undefined): BuildJobTarget {\n switch (value) {\n case undefined:\n case \"reading-summary\":\n return \"reading-summary\";\n case \"index-fts\":\n return \"index-fts\";\n case \"index-embedding-source\":\n return \"index-embedding-source\";\n case \"index-embedding-summary\":\n return \"index-embedding-summary\";\n case \"reading-graph\":\n return \"reading-graph\";\n case \"knowledge-graph\":\n return \"knowledge-graph\";\n default:\n throw new Error(\n withHelpRoute(\n `Invalid queue task: ${value}. Expected index-fts, index-embedding-source, index-embedding-summary, reading-graph, reading-summary, or knowledge-graph.`,\n \"wg wikg://local/job add --help\",\n ),\n );\n }\n}\n","import type {\n CLIArchiveChapterAction,\n CLIArchiveMaintenanceCommand,\n} from \"../../types.js\";\n\nexport function isArchiveChapterAction(\n value: string | undefined,\n): value is CLIArchiveChapterAction {\n return (\n value === \"add\" ||\n value === \"list\" ||\n value === \"move\" ||\n value === \"remove\" ||\n value === \"reset\" ||\n value === \"set-source\" ||\n value === \"set-summary\" ||\n value === \"set-title\" ||\n value === \"tree\"\n );\n}\n\nexport function isArchiveMaintenanceCommand(\n value: string | undefined,\n): value is CLIArchiveMaintenanceCommand {\n return value === \"chapter\" || value === \"cover\" || value === \"meta\";\n}\n","import { parseChapterPath, parseChapterUriPath } from \"wiki-graph-sdk\";\n\nimport {\n parseLocatedWikiGraphUri,\n withHelpRoute,\n} from \"../../../support/index.js\";\nimport { isWikiGraphUri } from \"../uri.js\";\n\nexport function parseSerialId(\n value: string,\n flag: string,\n helpRoute: string,\n): number {\n const normalized = value.trim();\n\n if (!/^\\d+$/u.test(normalized)) {\n throw new Error(\n withHelpRoute(\n `Invalid ${flag}: ${value}. Expected a non-negative integer.`,\n helpRoute,\n ),\n );\n }\n\n return Number(normalized);\n}\n\nexport function parseChapterRef(\n value: string,\n flag: string,\n archivePath: string,\n helpRoute: string,\n): number {\n const normalized = value.trim();\n\n if (!isWikiGraphUri(normalized)) {\n return parseSerialId(value, flag, helpRoute);\n }\n\n const parsed = parseLocatedWikiGraphUri(normalized);\n\n if (parsed.archivePath !== undefined && parsed.archivePath !== archivePath) {\n throw new Error(\n withHelpRoute(\n `Invalid ${flag}: ${value}. Chapter URI belongs to a different archive.`,\n helpRoute,\n ),\n );\n }\n\n const objectUri = parsed.objectUri ?? normalized;\n const match = /^wikg:\\/\\/chapter\\/([1-9][0-9]*)\\/?$/u.exec(objectUri);\n\n if (match?.[1] === undefined) {\n throw new Error(\n withHelpRoute(\n `Invalid ${flag}: ${value}. Expected a chapter URI such as wikg://chapter/part/intro.`,\n helpRoute,\n ),\n );\n }\n\n return Number(match[1]);\n}\n\nexport function parseChapterPathRef(\n value: string,\n flag: string,\n archivePath: string,\n helpRoute: string,\n): string {\n const normalized = value.trim();\n try {\n if (!isWikiGraphUri(normalized)) {\n return parseChapterPath(normalized, flag);\n }\n\n const parsed = parseLocatedWikiGraphUri(normalized);\n if (\n parsed.archivePath !== undefined &&\n parsed.archivePath !== archivePath\n ) {\n throw new Error(\n `Invalid ${flag}: ${value}. Chapter URI belongs to a different archive.`,\n );\n }\n\n const path = parseChapterUriPath(parsed.objectUri ?? normalized);\n if (path === undefined) {\n throw new Error(\n `Invalid ${flag}: ${value}. Expected a chapter path or URI.`,\n );\n }\n return path;\n } catch (error) {\n throw new Error(\n withHelpRoute(\n error instanceof Error ? error.message : String(error),\n helpRoute,\n ),\n );\n }\n}\n","import {\n CLI_HELP_ROUTES,\n parseLocatedWikiGraphUri,\n withHelpRoute,\n} from \"../../support/index.js\";\nimport {\n parseLocalConfigSection,\n type LocalConfigSection,\n} from \"../../runtime/local-config.js\";\nimport { parseWikiGraphUriSyntax, WIKI_GRAPH_URI_PREFIX } from \"wiki-graph-sdk\";\nimport type { CLIArchiveAction } from \"../types.js\";\n\nexport function validateArchiveCommandUriInput(\n action: CLIArchiveAction,\n value: string,\n): void {\n if (\n action === \"create\" ||\n action === \"export\" ||\n action === \"inspect\" ||\n action === \"next\"\n ) {\n return;\n }\n\n if (isWikiGraphUri(value)) {\n if (parseLocatedWikiGraphUri(value).archivePath === undefined) {\n throw new Error(formatMissingArchiveLocatorMessage(value));\n }\n return;\n }\n\n if (!looksLikeWikgPath(value)) {\n return;\n }\n\n throw new Error(formatPathAsUriMessage(value));\n}\n\nexport function parseArchiveInspectChapterId(\n uri: string | undefined,\n): number | undefined {\n if (uri === undefined || !isWikiGraphUri(uri)) {\n return undefined;\n }\n\n const objectUri = parseLocatedWikiGraphUri(uri).objectUri;\n const match =\n objectUri === undefined\n ? undefined\n : /^wikg:\\/\\/chapter\\/([1-9][0-9]*)$/u.exec(objectUri);\n\n return match?.[1] === undefined ? undefined : Number(match[1]);\n}\n\nexport function validatePackTargetUri(uri: string, helpRoute: string): void {\n const parsed = parseLocatedWikiGraphUri(uri);\n\n if (parsed.archivePath === undefined) {\n throw new Error(\n withHelpRoute(formatMissingArchiveLocatorMessage(uri), helpRoute),\n );\n }\n if (parsed.objectUri === undefined) {\n throw new Error(\n withHelpRoute(formatPackObjectMismatchMessage(uri), CLI_HELP_ROUTES.uri),\n );\n }\n if (!isPackableObjectUri(parsed.objectUri)) {\n throw new Error(\n withHelpRoute(formatPackObjectMismatchMessage(uri), helpRoute),\n );\n }\n}\n\nexport function validateRelatedTargetUri(\n uri: string,\n helpRoute: string,\n): \"chunk\" | \"entity\" {\n const parsed = parseLocatedWikiGraphUri(uri);\n\n if (parsed.archivePath === undefined) {\n throw new Error(\n withHelpRoute(formatMissingArchiveLocatorMessage(uri), helpRoute),\n );\n }\n if (parsed.objectUri === undefined) {\n throw new Error(\n withHelpRoute(\n `Related requires a chunk or entity URI: ${uri}`,\n CLI_HELP_ROUTES.uri,\n ),\n );\n }\n const targetType = getRelatedObjectUriType(parsed.objectUri);\n\n if (targetType === undefined) {\n throw new Error(\n withHelpRoute(\n `Related is only available for chunk and entity objects: ${uri}`,\n helpRoute,\n ),\n );\n }\n\n return targetType;\n}\n\nexport function validateEvidenceTargetUri(\n uri: string,\n helpRoute: string,\n): void {\n const parsed = parseLocatedWikiGraphUri(uri);\n\n if (parsed.archivePath === undefined) {\n throw new Error(\n withHelpRoute(formatMissingArchiveLocatorMessage(uri), helpRoute),\n );\n }\n if (\n parsed.objectUri === undefined ||\n !isEvidenceObjectUri(parsed.objectUri)\n ) {\n throw new Error(\n withHelpRoute(\n `Evidence is only available for chunk, entity, and triple objects: ${uri}`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function isEvidenceObjectUri(objectUri: string): boolean {\n const path = stripObjectUriPrefix(objectUri);\n const normalized = path.startsWith(\"chapter/\")\n ? /^chapter\\/[1-9][0-9]*\\/(.+)$/u.exec(path)?.[1]\n : path;\n if (normalized === undefined) {\n return false;\n }\n const parts = normalized.split(\"/\");\n return (\n (parts[0] === \"chunk\" && parts.length === 2) ||\n (parts[0] === \"entity\" && parts.length === 2) ||\n (parts[0] === \"triple\" && parts.length === 4)\n );\n}\n\nexport function isPackableObjectUri(objectUri: string): boolean {\n return (\n /^wikg:\\/\\/chunk\\/[1-9][0-9]*$/u.test(objectUri) ||\n /^wikg:\\/\\/chapter\\/[1-9][0-9]*\\/chunk\\/[1-9][0-9]*$/u.test(objectUri) ||\n /^wikg:\\/\\/entity\\/[^/]+$/u.test(objectUri) ||\n /^wikg:\\/\\/chapter\\/[1-9][0-9]*\\/entity\\/[^/]+$/u.test(objectUri)\n );\n}\n\nexport function getRelatedObjectUriType(\n objectUri: string,\n): \"chunk\" | \"entity\" | undefined {\n if (\n /^wikg:\\/\\/chunk\\/[1-9][0-9]*$/u.test(objectUri) ||\n /^wikg:\\/\\/chapter\\/[1-9][0-9]*\\/chunk\\/[1-9][0-9]*$/u.test(objectUri)\n ) {\n return \"chunk\";\n }\n if (\n /^wikg:\\/\\/entity\\/[^/]+$/u.test(objectUri) ||\n /^wikg:\\/\\/chapter\\/[1-9][0-9]*\\/entity\\/[^/]+$/u.test(objectUri)\n ) {\n return \"entity\";\n }\n\n return undefined;\n}\n\nexport function formatUnknownCommandMessage(command: string): string {\n if (looksLikeWikgPath(command)) {\n return formatPathAsUriMessage(command);\n }\n\n return withHelpRoute(`Unknown command: ${command}.`, CLI_HELP_ROUTES.command);\n}\n\nexport function looksLikeWikgPath(value: string): boolean {\n const normalized = normalizeWikgPathSeparators(value);\n\n return (\n normalized.endsWith(\".wikg\") ||\n normalized.includes(\".wikg/\") ||\n normalized.includes(\".wikg#\")\n );\n}\n\nexport function formatPathAsUriMessage(path: string): string {\n const normalized = normalizeWikgPathSeparators(path);\n const [archivePath = normalized, suffix = \"\"] = splitWikgPath(normalized);\n const uri = archivePath.startsWith(\"/\")\n ? `wikg://${archivePath}${suffix}`\n : `wikg://${archivePath.replace(/^\\.\\/+/u, \"\")}${suffix}`;\n\n return [\n `Expected a Wiki Graph URI, not a filesystem path: ${path}`,\n `Use: ${uri}`,\n \"See: wg help uri\",\n ].join(\"\\n\");\n}\n\nexport function splitWikgPath(path: string): readonly [string, string] {\n const archiveEnd = path.indexOf(\".wikg\") + \".wikg\".length;\n\n return [path.slice(0, archiveEnd), path.slice(archiveEnd)];\n}\n\nexport function normalizeWikgPathSeparators(path: string): string {\n return path.replace(/\\\\/gu, \"/\");\n}\n\nexport function formatMissingArchiveLocatorMessage(uri: string): string {\n return [\n `Expected a located Wiki Graph URI with a .wikg archive locator: ${uri}`,\n \"Short object URIs from output are archive-relative handles.\",\n \"Example: wikg://book.wikg/entity/Q9957\",\n \"See: wg help uri\",\n ].join(\"\\n\");\n}\n\nexport function formatPackObjectMismatchMessage(uri: string): string {\n return [\n `Pack requires a graph object URI: ${uri}`,\n \"Supported pack targets are chunk and entity objects.\",\n \"Use `wg <uri> --help` to inspect valid predicates.\",\n ].join(\"\\n\");\n}\n\nexport function formatMissingArchiveInputMessage(\n action: CLIArchiveAction,\n): string {\n switch (action) {\n case \"create\":\n return \"Missing archive URI. Use `wg wikg://<archive.wikg> create`.\";\n case \"export\":\n return \"Missing archive URI. Use `wg wikg://<archive.wikg> export --output-format <format>`.\";\n case \"inspect\":\n return \"Missing archive URI. Use `wg wikg://<archive.wikg> inspect`.\";\n case \"search\":\n return \"Missing scope URI with .wikg locator. Use `wg wikg://<archive.wikg> --query <query>`.\";\n case \"list\":\n return \"Missing scope URI with .wikg locator. Use `wg wikg://<archive.wikg>`.\";\n case \"get\":\n return \"Missing object URI with .wikg locator. Use `wg wikg://<archive.wikg>/<object>`.\";\n case \"related\":\n case \"evidence\":\n case \"pack\":\n return `Missing object URI. Use \\`wg wikg://<archive.wikg>/<object> ${action}\\`.`;\n case \"next\":\n return \"Missing continuation cursor. Use `wg next <cursor>`.\";\n }\n}\nexport function isWikiGraphUri(value: string | undefined): boolean {\n return value?.startsWith(WIKI_GRAPH_URI_PREFIX) === true;\n}\n\nexport function stripObjectUriPrefix(objectUri: string): string {\n const prefix = getWikiGraphUriPrefix(objectUri);\n\n if (prefix === undefined) {\n throw new Error(`Expected Wiki Graph object URI: ${objectUri}`);\n }\n\n return objectUri.slice(prefix.length).replace(/^\\/+|\\/+$/gu, \"\");\n}\n\nexport function isWikiGraphJobUri(value: string | undefined): boolean {\n return isWikiGraphLocalJobUri(value);\n}\n\nexport function isWikiGraphLocalConfigUri(value: string | undefined): boolean {\n const path = parseWikiGraphPath(value);\n return path?.[0] === \"local\" && path[1] === \"config\" && path.length >= 2;\n}\n\nexport function parseLocalConfigUriSection(\n uri: string,\n): LocalConfigSection | undefined {\n const path = parseWikiGraphPath(uri);\n if (path?.[0] !== \"local\" || path[1] !== \"config\") {\n return undefined;\n }\n const section = path[2];\n\n return parseLocalConfigSection(section);\n}\n\nexport function parseWikiGraphJobUri(uri: string): string | undefined {\n const body = parseWikiGraphJobUriBody(uri);\n\n if (body === undefined) {\n throw new Error(\n withHelpRoute(\n `Expected a Wiki Graph job URI: ${uri}`,\n \"wg wikg://local/job --help\",\n ),\n );\n }\n\n const jobId = stripLeadingSlash(body).trim();\n if (jobId === \"\") {\n return undefined;\n }\n\n return jobId;\n}\n\nexport function parseWikiGraphJobTargetUri(\n uri: string | undefined,\n): string | undefined {\n if (uri === undefined) {\n return undefined;\n }\n\n const body = parseWikiGraphJobUriBody(uri);\n if (body === undefined) {\n return undefined;\n }\n if (!body.endsWith(\"/target\")) {\n return undefined;\n }\n\n const jobId = stripLeadingSlash(body.slice(0, -\"/target\".length)).trim();\n if (jobId === \"\") {\n throw new Error(\n withHelpRoute(\n `Expected a job id before /target: ${uri}`,\n \"wg wikg://local/job/<job-id>/target set --help\",\n ),\n );\n }\n\n return jobId;\n}\n\nexport function getWikiGraphUriPrefix(uri: string): string | undefined {\n if (uri.startsWith(WIKI_GRAPH_URI_PREFIX)) {\n return WIKI_GRAPH_URI_PREFIX;\n }\n\n return undefined;\n}\n\nexport function isWikiGraphLocalJobUri(value: string | undefined): boolean {\n const path = parseWikiGraphPath(value);\n return path?.[0] === \"local\" && path[1] === \"job\";\n}\n\nexport function parseWikiGraphJobUriBody(uri: string): string | undefined {\n const path = parseWikiGraphPath(uri);\n if (path?.[0] !== \"local\" || path[1] !== \"job\") {\n return undefined;\n }\n if (path.length === 2) {\n return \"\";\n }\n\n return `/${path.slice(2).join(\"/\")}`;\n}\n\nexport function stripLeadingSlash(value: string): string {\n return value.replace(/^\\/+/u, \"\");\n}\n\nfunction parseWikiGraphPath(\n value: string | undefined,\n): readonly string[] | undefined {\n if (value === undefined) {\n return undefined;\n }\n try {\n const parsed = parseWikiGraphUriSyntax(value);\n return parsed.protocol === \"wikg\" ? parsed.path : undefined;\n } catch {\n return undefined;\n }\n}\n\nexport function requireArchiveUriPath(uri: string, helpRoute: string): string {\n const parsed = parseLocatedWikiGraphUri(uri);\n\n if (parsed.archivePath === undefined || parsed.objectUri !== undefined) {\n throw new Error(\n withHelpRoute(`Expected an archive Wiki Graph URI: ${uri}`, helpRoute),\n );\n }\n\n return parsed.archivePath;\n}\n","import { withHelpRoute } from \"../../../support/index.js\";\nimport type {\n CLIArchiveChapterAction,\n CLIArchiveChapterArguments,\n} from \"../../types.js\";\nimport { parseChapterPathRef } from \"./ids.js\";\nimport { parseResetStage } from \"./stages.js\";\nimport {\n rejectActionBooleanFlag,\n rejectActionFlag,\n rejectConflictingMoveFlags,\n} from \"./rejections.js\";\n\nexport function normalizeArchiveChapterArguments(\n action: CLIArchiveChapterAction,\n path: string,\n values: {\n readonly chapter?: string;\n readonly after?: string;\n readonly before?: string;\n readonly clear?: boolean;\n readonly \"dry-run\"?: boolean;\n readonly first?: boolean;\n readonly import?: string;\n readonly input?: string;\n readonly \"input-format\"?: string;\n readonly json?: boolean;\n readonly \"json-input\"?: string;\n readonly llm?: string;\n readonly parent?: string;\n readonly prompt?: string;\n readonly recursive?: boolean;\n readonly root?: boolean;\n readonly last?: boolean;\n readonly stage?: string;\n readonly title?: string;\n readonly to?: string;\n },\n helpRoute: string,\n treeAction?: \"apply\",\n inputValue?: string,\n): CLIArchiveChapterArguments {\n const chapterPath =\n values.chapter === undefined\n ? undefined\n : parseChapterPathRef(values.chapter, \"--chapter\", path, helpRoute);\n const parentChapterPath =\n values.parent === undefined\n ? undefined\n : parseChapterPathRef(values.parent, \"--parent\", path, helpRoute);\n const beforeChapterPath =\n values.before === undefined\n ? undefined\n : parseChapterPathRef(values.before, \"--before\", path, helpRoute);\n const afterChapterPath =\n values.after === undefined\n ? undefined\n : parseChapterPathRef(values.after, \"--after\", path, helpRoute);\n const resetStage =\n values.to === undefined ? undefined : parseResetStage(values.to, helpRoute);\n\n switch (action) {\n case \"build-index-artifact\":\n case \"delete-index-artifact\":\n case \"get-index-artifact\":\n throw new Error(\n withHelpRoute(\n \"Internal chapter index artifact actions are only available through chapter index artifact URIs.\",\n helpRoute,\n ),\n );\n case \"set\":\n throw new Error(\n withHelpRoute(\n \"`set` requires a concrete chapter sub-resource URI such as `/source`, `/summary`, or `/title`.\",\n helpRoute,\n ),\n );\n case \"add\":\n rejectActionFlag(values.chapter, \"--chapter\", action, helpRoute);\n rejectActionFlag(values.import, \"--import\", action, helpRoute);\n rejectActionFlag(values.prompt, \"--prompt\", action, helpRoute);\n rejectActionFlag(values.stage, \"--stage\", action, helpRoute);\n rejectActionFlag(values.to, \"--to\", action, helpRoute);\n rejectActionBooleanFlag(\n values.recursive,\n \"--recursive\",\n action,\n helpRoute,\n );\n rejectActionFlag(\n values[\"input-format\"],\n \"--input-format\",\n action,\n helpRoute,\n );\n return {\n action,\n path,\n ...(values.input === undefined ? {} : { inputPath: values.input }),\n ...(values.json === undefined ? {} : { json: values.json }),\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n ...(parentChapterPath === undefined ? {} : { parentChapterPath }),\n ...(values.title === undefined ? {} : { title: values.title }),\n };\n case \"list\":\n rejectActionFlag(values.stage, \"--stage\", action, helpRoute);\n rejectActionFlag(values.chapter, \"--chapter\", action, helpRoute);\n rejectActionFlag(values.after, \"--after\", action, helpRoute);\n rejectActionFlag(values.before, \"--before\", action, helpRoute);\n rejectActionFlag(values.input, \"--input\", action, helpRoute);\n rejectActionFlag(values.import, \"--import\", action, helpRoute);\n rejectActionFlag(\n values[\"input-format\"],\n \"--input-format\",\n action,\n helpRoute,\n );\n rejectActionFlag(values.parent, \"--parent\", action, helpRoute);\n rejectActionFlag(values.prompt, \"--prompt\", action, helpRoute);\n rejectActionFlag(values.title, \"--title\", action, helpRoute);\n rejectActionFlag(values.to, \"--to\", action, helpRoute);\n rejectActionFlag(values[\"json-input\"], \"--json\", action, helpRoute);\n rejectActionBooleanFlag(values.json, \"--json\", action, helpRoute);\n rejectActionBooleanFlag(values.clear, \"--clear\", action, helpRoute);\n rejectActionBooleanFlag(\n values[\"dry-run\"],\n \"--dry-run\",\n action,\n helpRoute,\n );\n rejectActionBooleanFlag(values.first, \"--first\", action, helpRoute);\n rejectActionBooleanFlag(values.root, \"--root\", action, helpRoute);\n rejectActionBooleanFlag(values.last, \"--last\", action, helpRoute);\n rejectActionBooleanFlag(\n values.recursive,\n \"--recursive\",\n action,\n helpRoute,\n );\n return {\n action,\n ...(values.json === undefined ? {} : { json: values.json }),\n path,\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n };\n case \"move\":\n requireChapterPath(chapterPath, action, helpRoute);\n rejectActionFlag(values.stage, \"--stage\", action, helpRoute);\n rejectActionFlag(values.input, \"--input\", action, helpRoute);\n rejectActionFlag(values.import, \"--import\", action, helpRoute);\n rejectActionFlag(\n values[\"input-format\"],\n \"--input-format\",\n action,\n helpRoute,\n );\n rejectActionFlag(values.prompt, \"--prompt\", action, helpRoute);\n rejectActionFlag(values.title, \"--title\", action, helpRoute);\n rejectActionFlag(values.to, \"--to\", action, helpRoute);\n rejectActionBooleanFlag(values.clear, \"--clear\", action, helpRoute);\n rejectActionBooleanFlag(\n values[\"dry-run\"],\n \"--dry-run\",\n action,\n helpRoute,\n );\n rejectActionBooleanFlag(\n values.recursive,\n \"--recursive\",\n action,\n helpRoute,\n );\n rejectConflictingMoveFlags(values, helpRoute);\n return {\n action,\n ...(afterChapterPath === undefined ? {} : { afterChapterPath }),\n ...(beforeChapterPath === undefined ? {} : { beforeChapterPath }),\n chapterPath,\n ...(values.first === undefined ? {} : { first: values.first }),\n ...(values.json === undefined ? {} : { json: values.json }),\n ...(values.last === undefined ? {} : { last: values.last }),\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n ...(values.root === undefined ? {} : { moveToRoot: values.root }),\n ...(parentChapterPath === undefined ? {} : { parentChapterPath }),\n path,\n };\n case \"remove\":\n requireChapterPath(chapterPath, action, helpRoute);\n rejectActionFlag(values.stage, \"--stage\", action, helpRoute);\n rejectActionFlag(values.after, \"--after\", action, helpRoute);\n rejectActionFlag(values.before, \"--before\", action, helpRoute);\n rejectActionFlag(values.input, \"--input\", action, helpRoute);\n rejectActionFlag(values.import, \"--import\", action, helpRoute);\n rejectActionFlag(\n values[\"input-format\"],\n \"--input-format\",\n action,\n helpRoute,\n );\n rejectActionFlag(values.parent, \"--parent\", action, helpRoute);\n rejectActionFlag(values.prompt, \"--prompt\", action, helpRoute);\n rejectActionFlag(values.title, \"--title\", action, helpRoute);\n rejectActionFlag(values.to, \"--to\", action, helpRoute);\n rejectActionBooleanFlag(values.clear, \"--clear\", action, helpRoute);\n rejectActionBooleanFlag(\n values[\"dry-run\"],\n \"--dry-run\",\n action,\n helpRoute,\n );\n rejectActionBooleanFlag(values.first, \"--first\", action, helpRoute);\n rejectActionBooleanFlag(values.root, \"--root\", action, helpRoute);\n rejectActionBooleanFlag(values.last, \"--last\", action, helpRoute);\n return {\n action,\n chapterPath,\n ...(values.json === undefined ? {} : { json: values.json }),\n path,\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n ...(values.recursive === undefined\n ? {}\n : { recursive: values.recursive }),\n };\n case \"reset\":\n requireChapterPath(chapterPath, action, helpRoute);\n rejectActionFlag(values.stage, \"--stage\", action, helpRoute);\n rejectActionFlag(values.after, \"--after\", action, helpRoute);\n rejectActionFlag(values.before, \"--before\", action, helpRoute);\n if (resetStage === undefined) {\n throw new Error(\n withHelpRoute(\n \"Missing --to. `chapter reset` requires planned, source, or reading-graph.\",\n helpRoute,\n ),\n );\n }\n rejectActionFlag(values.input, \"--input\", action, helpRoute);\n rejectActionFlag(values.import, \"--import\", action, helpRoute);\n rejectActionFlag(\n values[\"input-format\"],\n \"--input-format\",\n action,\n helpRoute,\n );\n rejectActionFlag(values.parent, \"--parent\", action, helpRoute);\n rejectActionFlag(values.prompt, \"--prompt\", action, helpRoute);\n rejectActionFlag(values.title, \"--title\", action, helpRoute);\n rejectActionBooleanFlag(values.clear, \"--clear\", action, helpRoute);\n rejectActionBooleanFlag(\n values[\"dry-run\"],\n \"--dry-run\",\n action,\n helpRoute,\n );\n rejectActionBooleanFlag(values.first, \"--first\", action, helpRoute);\n rejectActionBooleanFlag(values.root, \"--root\", action, helpRoute);\n rejectActionBooleanFlag(values.last, \"--last\", action, helpRoute);\n rejectActionBooleanFlag(\n values.recursive,\n \"--recursive\",\n action,\n helpRoute,\n );\n return {\n action,\n chapterPath,\n ...(values.json === undefined ? {} : { json: values.json }),\n path,\n resetStage,\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n };\n case \"set-source\":\n requireChapterPath(chapterPath, action, helpRoute);\n rejectActionFlag(values.stage, \"--stage\", action, helpRoute);\n rejectActionFlag(values.after, \"--after\", action, helpRoute);\n rejectActionFlag(values.before, \"--before\", action, helpRoute);\n rejectActionFlag(values.import, \"--import\", action, helpRoute);\n if (\n values[\"input-format\"] !== undefined &&\n values[\"input-format\"] !== \"jsonl\"\n ) {\n throw new Error(\n withHelpRoute(\n \"`--input-format` for chapter source set only accepts `jsonl`.\",\n helpRoute,\n ),\n );\n }\n rejectActionFlag(values.parent, \"--parent\", action, helpRoute);\n rejectActionFlag(values.prompt, \"--prompt\", action, helpRoute);\n rejectActionFlag(values.title, \"--title\", action, helpRoute);\n rejectActionFlag(values.to, \"--to\", action, helpRoute);\n rejectActionBooleanFlag(values.clear, \"--clear\", action, helpRoute);\n rejectActionBooleanFlag(\n values[\"dry-run\"],\n \"--dry-run\",\n action,\n helpRoute,\n );\n rejectActionBooleanFlag(values.first, \"--first\", action, helpRoute);\n rejectActionBooleanFlag(values.root, \"--root\", action, helpRoute);\n rejectActionBooleanFlag(values.last, \"--last\", action, helpRoute);\n rejectActionBooleanFlag(\n values.recursive,\n \"--recursive\",\n action,\n helpRoute,\n );\n return {\n action,\n chapterPath,\n ...(inputValue === undefined ? {} : { inputValue }),\n ...(values.json === undefined ? {} : { json: values.json }),\n path,\n ...(values.input === undefined ? {} : { inputPath: values.input }),\n ...(values[\"input-format\"] === undefined\n ? {}\n : { inputFormat: \"jsonl\" as const }),\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n };\n case \"set-summary\":\n requireChapterPath(chapterPath, action, helpRoute);\n rejectActionFlag(values.stage, \"--stage\", action, helpRoute);\n rejectActionFlag(values.after, \"--after\", action, helpRoute);\n rejectActionFlag(values.before, \"--before\", action, helpRoute);\n rejectActionFlag(values.import, \"--import\", action, helpRoute);\n rejectActionFlag(\n values[\"input-format\"],\n \"--input-format\",\n action,\n helpRoute,\n );\n rejectActionFlag(values.parent, \"--parent\", action, helpRoute);\n rejectActionFlag(values.prompt, \"--prompt\", action, helpRoute);\n rejectActionFlag(values.title, \"--title\", action, helpRoute);\n rejectActionFlag(values.to, \"--to\", action, helpRoute);\n rejectActionFlag(values[\"json-input\"], \"--json\", action, helpRoute);\n rejectActionBooleanFlag(values.json, \"--json\", action, helpRoute);\n rejectActionBooleanFlag(values.clear, \"--clear\", action, helpRoute);\n rejectActionBooleanFlag(\n values[\"dry-run\"],\n \"--dry-run\",\n action,\n helpRoute,\n );\n rejectActionBooleanFlag(values.first, \"--first\", action, helpRoute);\n rejectActionBooleanFlag(values.root, \"--root\", action, helpRoute);\n rejectActionBooleanFlag(values.last, \"--last\", action, helpRoute);\n rejectActionBooleanFlag(\n values.recursive,\n \"--recursive\",\n action,\n helpRoute,\n );\n return {\n action,\n chapterPath,\n ...(inputValue === undefined ? {} : { inputValue }),\n path,\n ...(values.input === undefined ? {} : { inputPath: values.input }),\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n };\n case \"set-title\":\n requireChapterPath(chapterPath, action, helpRoute);\n rejectActionFlag(values.stage, \"--stage\", action, helpRoute);\n rejectActionFlag(values.after, \"--after\", action, helpRoute);\n rejectActionFlag(values.before, \"--before\", action, helpRoute);\n rejectActionFlag(values.import, \"--import\", action, helpRoute);\n rejectActionFlag(values[\"json-input\"], \"--json\", action, helpRoute);\n rejectActionBooleanFlag(values.json, \"--json\", action, helpRoute);\n if (values.title !== undefined) {\n throw new Error(\n withHelpRoute(\n \"`chapter title set` uses a positional value instead of --title.\",\n helpRoute,\n ),\n );\n }\n if (inputValue === undefined && values.clear !== true) {\n throw new Error(withHelpRoute(\"Missing title value.\", helpRoute));\n }\n if (inputValue !== undefined && values.clear === true) {\n throw new Error(\n withHelpRoute(\n \"`chapter title clear` cannot combine with a title value.\",\n helpRoute,\n ),\n );\n }\n rejectActionFlag(values.input, \"--input\", action, helpRoute);\n rejectActionFlag(\n values[\"input-format\"],\n \"--input-format\",\n action,\n helpRoute,\n );\n rejectActionFlag(values.parent, \"--parent\", action, helpRoute);\n rejectActionFlag(values.prompt, \"--prompt\", action, helpRoute);\n rejectActionFlag(values.to, \"--to\", action, helpRoute);\n rejectActionBooleanFlag(\n values[\"dry-run\"],\n \"--dry-run\",\n action,\n helpRoute,\n );\n rejectActionBooleanFlag(values.first, \"--first\", action, helpRoute);\n rejectActionBooleanFlag(values.root, \"--root\", action, helpRoute);\n rejectActionBooleanFlag(values.last, \"--last\", action, helpRoute);\n rejectActionBooleanFlag(\n values.recursive,\n \"--recursive\",\n action,\n helpRoute,\n );\n return {\n action,\n chapterPath,\n ...(values.clear === undefined ? {} : { clearTitle: values.clear }),\n path,\n ...(inputValue === undefined ? {} : { title: inputValue }),\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n };\n case \"tree\":\n rejectActionFlag(values.stage, \"--stage\", action, helpRoute);\n rejectActionFlag(values.chapter, \"--chapter\", action, helpRoute);\n rejectActionFlag(values.after, \"--after\", action, helpRoute);\n rejectActionFlag(values.before, \"--before\", action, helpRoute);\n rejectActionFlag(values.import, \"--import\", action, helpRoute);\n rejectActionFlag(\n values[\"input-format\"],\n \"--input-format\",\n action,\n helpRoute,\n );\n rejectActionFlag(values.parent, \"--parent\", action, helpRoute);\n rejectActionFlag(values.prompt, \"--prompt\", action, helpRoute);\n rejectActionFlag(values.title, \"--title\", action, helpRoute);\n rejectActionFlag(values.to, \"--to\", action, helpRoute);\n rejectActionBooleanFlag(values.clear, \"--clear\", action, helpRoute);\n rejectActionBooleanFlag(values.first, \"--first\", action, helpRoute);\n rejectActionBooleanFlag(values.root, \"--root\", action, helpRoute);\n rejectActionBooleanFlag(values.last, \"--last\", action, helpRoute);\n rejectActionBooleanFlag(\n values.recursive,\n \"--recursive\",\n action,\n helpRoute,\n );\n if (treeAction === \"apply\" && values.json === true) {\n throw new Error(\n withHelpRoute(\n \"`chapter tree apply` does not support --json.\",\n helpRoute,\n ),\n );\n }\n if (treeAction === \"apply\") {\n return {\n action,\n ...(values[\"dry-run\"] === undefined\n ? {}\n : { dryRun: values[\"dry-run\"] }),\n ...(values.input === undefined ? {} : { inputPath: values.input }),\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n path,\n treeAction: \"apply\",\n };\n }\n rejectActionFlag(values.input, \"--input\", action, helpRoute);\n rejectActionBooleanFlag(\n values[\"dry-run\"],\n \"--dry-run\",\n action,\n helpRoute,\n );\n return {\n action,\n json: values.json ?? false,\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n path,\n treeAction: \"show\",\n };\n }\n}\n\nfunction requireChapterPath(\n chapterPath: string | undefined,\n action: CLIArchiveChapterAction,\n helpRoute: string,\n): asserts chapterPath is string {\n if (chapterPath === undefined) {\n throw new Error(\n withHelpRoute(\n `Missing --chapter. ` +\n `chapter ${action}` +\n ` requires a complete absolute chapter path.`,\n helpRoute,\n ),\n );\n }\n}\n","import type { ChapterStage } from \"wiki-graph-sdk\";\n\nimport { withHelpRoute } from \"../../../support/index.js\";\n\nexport function parseChapterStage(\n value: string,\n flag: string,\n helpRoute: string,\n): ChapterStage {\n const stage = parseExternalChapterStage(value);\n\n if (stage !== undefined) {\n return stage;\n }\n\n throw new Error(\n withHelpRoute(\n `Invalid ${flag}: ${value}. Expected planned, source, reading-graph, or reading-summary.`,\n helpRoute,\n ),\n );\n}\n\nexport function parseResetStage(\n value: string,\n helpRoute: string,\n): Exclude<ChapterStage, \"summarized\"> {\n const stage = parseExternalChapterStage(value);\n\n if (stage === \"planned\" || stage === \"sourced\" || stage === \"graphed\") {\n return stage;\n }\n if (stage !== undefined) {\n throw new Error(\n withHelpRoute(\n \"`chapter reset` does not support --to reading-summary.\",\n helpRoute,\n ),\n );\n }\n\n throw new Error(\n withHelpRoute(\n `Invalid --to: ${value}. Expected planned, source, or reading-graph.`,\n helpRoute,\n ),\n );\n}\n\nexport function parseExternalChapterStage(\n value: string,\n): ChapterStage | undefined {\n switch (value.trim().toLowerCase()) {\n case \"planned\":\n return \"planned\";\n case \"source\":\n return \"sourced\";\n case \"reading-graph\":\n return \"graphed\";\n case \"reading-summary\":\n return \"summarized\";\n default:\n return undefined;\n }\n}\n","import { withHelpRoute } from \"../../../support/index.js\";\n\nexport function rejectActionFlag(\n value: string | undefined,\n flag: string,\n action: string,\n helpRoute: string,\n): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `The \\`chapter ${action}\\` action does not support ${flag}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectActionBooleanFlag(\n value: boolean | undefined,\n flag: string,\n action: string,\n helpRoute: string,\n): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `The \\`chapter ${action}\\` action does not support ${flag}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectConflictingMoveFlags(\n values: {\n readonly after?: string;\n readonly before?: string;\n readonly first?: boolean;\n readonly last?: boolean;\n readonly parent?: string;\n readonly root?: boolean;\n },\n helpRoute: string,\n): void {\n const parentTargets = [\n values.parent === undefined ? undefined : \"--parent\",\n values.root === undefined ? undefined : \"--root\",\n ].filter((flag): flag is string => flag !== undefined);\n const positionTargets = [\n values.before === undefined ? undefined : \"--before\",\n values.after === undefined ? undefined : \"--after\",\n values.first === undefined ? undefined : \"--first\",\n values.last === undefined ? undefined : \"--last\",\n ].filter((flag): flag is string => flag !== undefined);\n\n if (parentTargets.length > 1) {\n throw new Error(\n withHelpRoute(\n `Choose only one parent target: ${parentTargets.join(\", \")}.`,\n helpRoute,\n ),\n );\n }\n if (positionTargets.length > 1) {\n throw new Error(\n withHelpRoute(\n `Choose only one position target: ${positionTargets.join(\", \")}.`,\n helpRoute,\n ),\n );\n }\n if (\n parentTargets.length > 0 &&\n (values.before !== undefined || values.after !== undefined)\n ) {\n throw new Error(\n withHelpRoute(\n \"Do not combine --parent or --root with --before or --after.\",\n helpRoute,\n ),\n );\n }\n if (parentTargets.length === 0 && positionTargets.length === 0) {\n throw new Error(\n withHelpRoute(\n \"`chapter move` requires --parent, --root, --before, --after, --first, or --last.\",\n helpRoute,\n ),\n );\n }\n}\n","import { CLI_HELP_ROUTES, withHelpRoute } from \"../../support/index.js\";\nimport { WIKI_GRAPH_URI_PREFIX } from \"wiki-graph-sdk\";\nimport type {\n ArchiveArgumentValues,\n ArchiveMetaFlagValues,\n CLIArchiveChapterAction,\n CLIArchiveMaintenanceCommand,\n CLIQueueAction,\n} from \"../types.js\";\n\nexport function rejectArchiveChapterFlag(\n name: string,\n value: boolean | string | undefined,\n helpRoute: string,\n): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `The \\`chapter\\` command does not support --${name}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectArchiveChapterMetaFlags(\n values: ArchiveMetaFlagValues,\n helpRoute: string,\n): void {\n for (const flag of listPresentMetaFlags(values, { includeTitle: false })) {\n throw new Error(\n withHelpRoute(\n `The \\`chapter\\` command does not support ${flag}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectHelpMetaFlags(values: ArchiveMetaFlagValues): void {\n rejectCommandMetaFlags(values, \"help\", CLI_HELP_ROUTES.root);\n}\n\nexport function rejectNonGcForceFlag(\n positionals: readonly string[],\n values: ArchiveArgumentValues,\n): void {\n if (values.force !== true || positionals[0] === \"gc\") {\n return;\n }\n\n throw new Error(\n withHelpRoute(\n \"The --force option is only supported by `gc`.\",\n CLI_HELP_ROUTES.root,\n ),\n );\n}\n\nexport function rejectNonCreateReplaceFlag(\n positionals: readonly string[],\n values: ArchiveArgumentValues,\n): void {\n if (values.replace !== true) {\n return;\n }\n\n const [command, action] = positionals;\n if (\n command?.startsWith(WIKI_GRAPH_URI_PREFIX) === true &&\n action === \"create\"\n ) {\n return;\n }\n\n throw new Error(\n withHelpRoute(\n \"The --replace option is only supported by `wg <archive-uri> create`.\",\n CLI_HELP_ROUTES.root,\n ),\n );\n}\n\nexport function rejectGcMetaFlags(values: ArchiveMetaFlagValues): void {\n rejectCommandMetaFlags(values, \"gc\", \"wg gc --help\");\n}\n\nexport function rejectCommandMetaFlags(\n values: ArchiveMetaFlagValues,\n command: string,\n helpRoute: string,\n): void {\n for (const flag of listPresentMetaFlags(values)) {\n throw new Error(\n withHelpRoute(\n `The \\`${command}\\` command does not support ${flag}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectGcFlag(\n name: string,\n value: string | boolean | readonly string[] | undefined,\n helpRoute: string,\n): void {\n if (value === undefined || value === false) {\n return;\n }\n\n throw new Error(\n withHelpRoute(`The \\`gc\\` command does not support --${name}.`, helpRoute),\n );\n}\n\nexport function rejectTransformFlag(\n name: string,\n value: boolean | string | undefined,\n helpRoute: string,\n): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `The \\`transform\\` command does not support --${name}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectTransformMetaFlags(values: ArchiveMetaFlagValues): void {\n for (const flag of listPresentMetaFlags(values)) {\n throw new Error(\n withHelpRoute(\n `The \\`transform\\` command does not support ${flag}.`,\n \"wg transform --help\",\n ),\n );\n }\n}\n\nexport function listPresentMetaFlags(\n values: ArchiveMetaFlagValues,\n options: { readonly includeTitle?: boolean } = {},\n): readonly string[] {\n const includeTitle = options.includeTitle ?? true;\n const flags: string[] = [];\n\n if (values.author !== undefined) flags.push(\"--author\");\n if (values[\"clear-authors\"] !== undefined) flags.push(\"--clear-authors\");\n if (values[\"clear-description\"] !== undefined) {\n flags.push(\"--clear-description\");\n }\n if (values[\"clear-identifier\"] !== undefined) {\n flags.push(\"--clear-identifier\");\n }\n if (values[\"clear-language\"] !== undefined) flags.push(\"--clear-language\");\n if (values[\"clear-published-at\"] !== undefined) {\n flags.push(\"--clear-published-at\");\n }\n if (values[\"clear-publisher\"] !== undefined) flags.push(\"--clear-publisher\");\n if (includeTitle && values[\"clear-title\"] !== undefined) {\n flags.push(\"--clear-title\");\n }\n if (values.description !== undefined) flags.push(\"--description\");\n if (values.identifier !== undefined) flags.push(\"--identifier\");\n if (values.language !== undefined) flags.push(\"--language\");\n if (values[\"published-at\"] !== undefined) flags.push(\"--published-at\");\n if (values.publisher !== undefined) flags.push(\"--publisher\");\n if (includeTitle && values.title !== undefined) flags.push(\"--title\");\n\n return flags;\n}\n\nexport function requireChapterId(\n chapterId: number | undefined,\n action: CLIArchiveChapterAction,\n helpRoute: string,\n): asserts chapterId is number {\n if (chapterId === undefined) {\n throw new Error(\n withHelpRoute(\n `Missing --chapter. \\`chapter ${action}\\` requires a chapter id.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectHelpFlag(\n name: string,\n value: boolean | string | undefined,\n): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `The \\`help\\` command does not support --${name}.`,\n CLI_HELP_ROUTES.root,\n ),\n );\n }\n}\nexport function rejectArchiveReverseQuery(\n values: Pick<ArchiveArgumentValues, \"query\" | \"reverse\">,\n helpRoute: string,\n): void {\n if (values.query !== undefined && values.reverse === true) {\n throw new Error(\n withHelpRoute(\"`--reverse` cannot be combined with --query.\", helpRoute),\n );\n }\n}\n\nexport function parseRelatedRoleFlag(\n value: string | undefined,\n helpRoute: string,\n): { readonly role?: \"any\" | \"object\" | \"self\" | \"subject\" } {\n if (value === undefined) {\n return {};\n }\n if (\n value !== \"any\" &&\n value !== \"object\" &&\n value !== \"self\" &&\n value !== \"subject\"\n ) {\n throw new Error(\n withHelpRoute(\n \"--role must be one of: any, subject, object, self.\",\n helpRoute,\n ),\n );\n }\n\n return { role: value };\n}\nexport function rejectArchiveExtraPositionals(\n action: string,\n positionals: readonly string[],\n allowed: number,\n helpRoute: string,\n): void {\n if (positionals.length > allowed) {\n throw new Error(\n withHelpRoute(\n `Unexpected positional arguments for \\`${action}\\`: ${positionals.slice(allowed).join(\" \")}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectQueueExtraPositionals(\n action: CLIQueueAction,\n positionals: readonly string[],\n allowed: number,\n helpRoute: string,\n): void {\n if (positionals.length > allowed) {\n throw new Error(\n withHelpRoute(\n `Unexpected positional arguments for \\`queue ${action}\\`: ${positionals.slice(allowed).join(\" \")}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectArchiveMaintenanceExtraPositionals(\n command: CLIArchiveMaintenanceCommand,\n positionals: readonly string[],\n allowed: number,\n helpRoute: string,\n): void {\n if (positionals.length > allowed) {\n throw new Error(\n withHelpRoute(\n `Unexpected positional arguments for \\`${command}\\`: ${positionals.slice(allowed).join(\" \")}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectMetaCommandFlag(\n name: string,\n value: string | undefined,\n helpRoute: string,\n): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `The \\`meta\\` command does not support --${name}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectMetaCommandBooleanFlag(\n name: string,\n value: boolean | undefined,\n helpRoute: string,\n): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `The \\`meta\\` command does not support --${name}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectCoverCommandFlag(\n name: string,\n value: string | undefined,\n helpRoute: string,\n): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `The \\`cover\\` command does not support --${name}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectCoverCommandBooleanFlag(\n name: string,\n value: boolean | undefined,\n helpRoute: string,\n): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `The \\`cover\\` command does not support --${name}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectCoverMetaFlags(values: ArchiveMetaFlagValues): void {\n for (const flag of listPresentMetaFlags(values)) {\n throw new Error(\n withHelpRoute(\n `The \\`cover\\` command does not support ${flag}.`,\n \"wg cover --help\",\n ),\n );\n }\n}\n\nexport function rejectArchiveFlag(\n action: string,\n flag: string,\n value: string | undefined,\n helpRoute: string,\n): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `The \\`${action}\\` command does not support ${flag}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectArchiveBooleanFlag(\n action: string,\n flag: string,\n value: boolean | undefined,\n helpRoute: string,\n): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `The \\`${action}\\` command does not support ${flag}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectStreamingJSONFlag(\n action: string,\n value: boolean | undefined,\n helpRoute: string,\n): void {\n if (value !== true) {\n return;\n }\n\n throw new Error(\n withHelpRoute(\n `The \\`${action}\\` command does not support --json because it streams progress events. Use --jsonl for line-delimited progress output.`,\n helpRoute,\n ),\n );\n}\n\nexport function rejectArchiveNonReadFlags(\n action: string,\n values: {\n readonly input?: string;\n readonly import?: string;\n readonly \"input-format\"?: string;\n readonly llm?: string;\n readonly output?: string;\n readonly \"output-format\"?: string;\n readonly prompt?: string;\n },\n helpRoute: string,\n): void {\n rejectArchiveFlag(action, \"--input\", values.input, helpRoute);\n rejectArchiveFlag(action, \"--import\", values.import, helpRoute);\n rejectArchiveFlag(\n action,\n \"--input-format\",\n values[\"input-format\"],\n helpRoute,\n );\n rejectArchiveFlag(action, \"--llm\", values.llm, helpRoute);\n rejectArchiveFlag(action, \"--output\", values.output, helpRoute);\n rejectArchiveFlag(\n action,\n \"--output-format\",\n values[\"output-format\"],\n helpRoute,\n );\n rejectArchiveFlag(action, \"--prompt\", values.prompt, helpRoute);\n}\n","import { CLI_HELP_ROUTES, withHelpRoute } from \"../../support/index.js\";\nimport { formatCliCommand } from \"../../support/index.js\";\nimport type { ArchiveArgumentValues, CLIResultFormat } from \"../types.js\";\nimport { isWikiGraphLocalConfigUri, isWikiGraphUri } from \"./uri.js\";\n\nexport function parseWatchFrom(\n value: string | undefined,\n helpRoute: string,\n): \"beginning\" | \"now\" | undefined {\n if (value === undefined) {\n return undefined;\n }\n if (value === \"beginning\" || value === \"now\") {\n return value;\n }\n\n throw new Error(\n withHelpRoute(\n `Invalid --from: ${value}. Expected beginning or now.`,\n helpRoute,\n ),\n );\n}\n\nexport function parseResultFormat(values: {\n readonly json?: boolean;\n readonly jsonl?: boolean;\n}): CLIResultFormat {\n if (values.json === true && values.jsonl === true) {\n throw new Error(\n withHelpRoute(\n \"`--json` and `--jsonl` cannot be combined.\",\n CLI_HELP_ROUTES.command,\n ),\n );\n }\n\n if (values.json === true) {\n return \"json\";\n }\n if (values.jsonl === true) {\n return \"jsonl\";\n }\n\n return \"text\";\n}\n\nexport function parseEvidenceFlag(\n value: string | undefined,\n helpRoute: string,\n): { readonly evidenceLimit?: number } {\n if (value === undefined) {\n return {};\n }\n\n return {\n evidenceLimit: parseNonNegativeIntegerFlag(value, \"--evidence\", helpRoute),\n };\n}\n\nexport function parseSourceContextFlag(\n value: string | undefined,\n helpRoute: string,\n): { readonly context?: number } {\n if (value === undefined) {\n return {};\n }\n\n return {\n context: parseNonNegativeIntegerFlag(value, \"--context\", helpRoute),\n };\n}\nexport function parseNonNegativeIntegerFlag(\n value: string,\n flag: string,\n helpRoute: string,\n): number {\n const parsed = Number(value);\n\n if (!Number.isInteger(parsed) || parsed < 0) {\n throw new Error(\n withHelpRoute(`${flag} must be a non-negative integer.`, helpRoute),\n );\n }\n\n return parsed;\n}\n\nexport function parsePositiveIntegerFlag(\n value: string,\n flag: string,\n helpRoute: string,\n): number {\n const parsed = Number(value);\n\n if (!Number.isInteger(parsed) || parsed <= 0) {\n throw new Error(\n withHelpRoute(`${flag} must be a positive integer.`, helpRoute),\n );\n }\n\n return parsed;\n}\n\nexport function normalizeArchiveInlineOptions(\n positionals: readonly string[],\n values: ArchiveArgumentValues,\n): {\n readonly positionals: readonly string[];\n readonly values: ArchiveArgumentValues;\n} {\n const normalizedPositionals: string[] = [];\n const normalizedValues: Record<\n string,\n boolean | readonly string[] | string | undefined\n > = {\n ...values,\n };\n\n for (let index = 0; index < positionals.length; index += 1) {\n const item = positionals[index];\n\n if (item === undefined) {\n continue;\n }\n\n switch (item) {\n case \"--json\":\n case \"--confirm\":\n case \"--reverse\":\n normalizedValues[item.slice(2)] = true;\n continue;\n case \"--budget\":\n case \"--chapter\":\n case \"--context\":\n case \"--cursor\":\n case \"--depth\":\n case \"--import\":\n case \"--input\":\n case \"--input-format\":\n case \"--limit\":\n case \"--llm\":\n case \"--output\":\n case \"--output-format\":\n case \"--path\":\n case \"--prompt\":\n case \"--stage\":\n case \"--to\": {\n const value = positionals[index + 1];\n\n if (value === undefined) {\n normalizedPositionals.push(item);\n continue;\n }\n\n normalizedValues[item.slice(2)] = value;\n index += 1;\n continue;\n }\n default:\n normalizedPositionals.push(item);\n }\n }\n\n return {\n positionals: normalizedPositionals,\n values: normalizedValues,\n };\n}\n\nexport function normalizeArchiveValueFlagArgv(\n argv: readonly string[],\n): readonly string[] {\n const normalized: string[] = [];\n let stopped = false;\n const jsonMayTakeValue = isValueInputJsonFlagContext(argv);\n\n for (let index = 0; index < argv.length; index += 1) {\n const item = argv[index];\n\n if (item === undefined) {\n continue;\n }\n\n if (stopped) {\n normalized.push(item);\n continue;\n }\n\n if (item === \"--\") {\n normalized.push(item);\n stopped = true;\n continue;\n }\n\n if (item.startsWith(\"--json=\") && jsonMayTakeValue) {\n normalized.push(\"--json\");\n normalized.push(`--json-input=${item.slice(\"--json=\".length)}`);\n continue;\n }\n\n if (item === \"--json\" && jsonMayTakeValue) {\n const value = argv[index + 1];\n\n normalized.push(item);\n if (value !== undefined && !value.startsWith(\"-\")) {\n normalized.push(\"--json-input\");\n normalized.push(value);\n index += 1;\n }\n continue;\n }\n\n if (item !== \"--evidence\" && item !== \"--context\" && item !== \"--depth\") {\n normalized.push(item);\n continue;\n }\n\n const value = argv[index + 1];\n\n if (value !== undefined && !value.startsWith(\"-\")) {\n normalized.push(item);\n normalized.push(value);\n index += 1;\n continue;\n }\n\n if (value !== undefined && /^-\\d/.test(value)) {\n normalized.push(`${item}=${value}`);\n index += 1;\n continue;\n }\n\n normalized.push(item);\n if (item === \"--evidence\") {\n normalized.push(\"3\");\n }\n }\n\n return normalized;\n}\n\nexport function isValueInputJsonFlagContext(argv: readonly string[]): boolean {\n const first = argv[0];\n const second = argv[1];\n\n if (second !== \"set\" && second !== \"put\") {\n return false;\n }\n if (isWikiGraphLocalConfigUri(first)) {\n return true;\n }\n\n return (\n isWikiGraphUri(first) &&\n argv.some((item) => item.includes(\"/meta\") || item.endsWith(\".wikg/meta\"))\n );\n}\nexport function formatWikiGraphHelpCommand(\n uri: string,\n action?: string,\n): string {\n return formatCliCommand([\n uri,\n ...(action === undefined ? [] : [action]),\n \"--help\",\n ]);\n}\n","import { parseArgs } from \"util\";\nimport { isWikiGraphLibraryUri } from \"wiki-graph-sdk\";\n\nimport { renderMainHelpText } from \"./help.js\";\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../support/index.js\";\n\nimport type { ParsedCLIArguments } from \"./types.js\";\n\nimport { parseArchiveArguments } from \"./archive.js\";\nimport {\n formatUnknownCommandMessage,\n isArchiveMaintenanceCommand,\n isPublicArchiveCommandHelpAction,\n isWikiGraphJobUri,\n isWikiGraphLocalConfigUri,\n isWikiGraphUri,\n normalizeArchiveValueFlagArgv,\n rejectArchiveBooleanFlag,\n rejectNonCreateReplaceFlag,\n rejectNonGcForceFlag,\n} from \"./helpers.js\";\nimport { parseJobUriFirstArguments } from \"./queue.js\";\nimport {\n parseArchiveMaintenanceArguments,\n parseGcArguments,\n parseHelpArguments,\n parseLegacyArguments,\n parseLocalConfigUriFirstArguments,\n parseMaintenanceArguments,\n parseTransformArguments,\n} from \"./root/index.js\";\nimport { parseArchiveUriFirstArguments } from \"./uri/index.js\";\nimport { parseLibraryUriFirstArguments } from \"./uri/library.js\";\nexport function parseCLIArguments(\n argv = process.argv.slice(2),\n): ParsedCLIArguments {\n const { positionals, values } = parseArgs({\n allowPositionals: true,\n args: normalizeArchiveValueFlagArgv(argv),\n options: {\n author: {\n multiple: true,\n type: \"string\",\n },\n after: {\n type: \"string\",\n },\n before: {\n type: \"string\",\n },\n backlinks: {\n type: \"boolean\",\n },\n budget: {\n type: \"string\",\n },\n clear: {\n type: \"boolean\",\n },\n \"clear-authors\": {\n type: \"boolean\",\n },\n \"clear-description\": {\n type: \"boolean\",\n },\n \"clear-identifier\": {\n type: \"boolean\",\n },\n \"clear-language\": {\n type: \"boolean\",\n },\n \"clear-published-at\": {\n type: \"boolean\",\n },\n \"clear-publisher\": {\n type: \"boolean\",\n },\n \"clear-title\": {\n type: \"boolean\",\n },\n description: {\n type: \"string\",\n },\n help: {\n short: \"h\",\n type: \"boolean\",\n },\n \"digest-dir\": {\n type: \"string\",\n },\n depth: {\n type: \"string\",\n },\n \"dry-run\": {\n type: \"boolean\",\n },\n active: {\n type: \"boolean\",\n },\n \"accept-cost\": {\n type: \"boolean\",\n },\n all: {\n type: \"boolean\",\n },\n boost: {\n type: \"boolean\",\n },\n first: {\n type: \"boolean\",\n },\n identifier: {\n type: \"string\",\n },\n from: {\n type: \"string\",\n },\n force: {\n type: \"boolean\",\n },\n input: {\n type: \"string\",\n },\n import: {\n type: \"string\",\n },\n indexes: {\n type: \"string\",\n },\n \"input-format\": {\n type: \"string\",\n },\n limit: {\n type: \"string\",\n },\n language: {\n type: \"string\",\n },\n json: {\n type: \"boolean\",\n },\n \"json-input\": {\n type: \"string\",\n },\n jsonl: {\n type: \"boolean\",\n },\n llm: {\n type: \"string\",\n },\n output: {\n type: \"string\",\n },\n path: {\n type: \"string\",\n },\n \"output-format\": {\n type: \"string\",\n },\n prompt: {\n type: \"string\",\n },\n query: {\n type: \"string\",\n },\n replace: {\n type: \"boolean\",\n },\n reverse: {\n type: \"boolean\",\n },\n \"skip-unindexed\": {\n type: \"boolean\",\n },\n stage: {\n type: \"string\",\n },\n task: {\n type: \"string\",\n },\n chapter: {\n type: \"string\",\n },\n confirm: {\n type: \"boolean\",\n },\n context: {\n type: \"string\",\n },\n cursor: {\n type: \"string\",\n },\n evidence: {\n type: \"string\",\n },\n parent: {\n type: \"string\",\n },\n \"published-at\": {\n type: \"string\",\n },\n publisher: {\n type: \"string\",\n },\n recursive: {\n type: \"boolean\",\n },\n secret: {\n type: \"boolean\",\n },\n role: {\n type: \"string\",\n },\n root: {\n type: \"boolean\",\n },\n last: {\n type: \"boolean\",\n },\n title: {\n type: \"string\",\n },\n to: {\n type: \"string\",\n },\n verbose: {\n short: \"v\",\n type: \"boolean\",\n },\n version: {\n type: \"boolean\",\n },\n },\n strict: true,\n });\n\n rejectNonGcForceFlag(positionals, values);\n rejectNonCreateReplaceFlag(positionals, values);\n rejectNonWikiGraphSkipUnindexedFlag(positionals, values);\n rejectUnsupportedIndexesFlag(values.indexes);\n\n if (values.version === true) {\n return {\n help: false,\n kind: \"version\",\n };\n }\n\n if (values.help === true && positionals.length === 0) {\n return {\n help: true,\n helpText: renderMainHelpText(),\n kind: \"help\",\n };\n }\n\n if (\n values[\"accept-cost\"] === true &&\n !(isWikiGraphJobUri(positionals[0]) && positionals[1] === \"add\")\n ) {\n throw new Error(\n withHelpRoute(\n \"`--accept-cost` is only valid for `wg wikg://local/job add`.\",\n \"wg wikg://local/job add --help\",\n ),\n );\n }\n\n if (\n values.reverse === true &&\n (positionals[0] === undefined ||\n (!isWikiGraphUri(positionals[0]) && positionals[0] !== \"next\"))\n ) {\n throw new Error(\"The current command does not support --reverse.\");\n }\n\n if (positionals[0] === \"help\") {\n return parseHelpArguments(positionals.slice(1), values);\n }\n\n if (positionals[0] === \"gc\") {\n return parseGcArguments(positionals.slice(1), values);\n }\n\n if (positionals[0] === \"legacy\") {\n return parseLegacyArguments(positionals.slice(1), values);\n }\n\n if (positionals[0] === \"maintenance\") {\n return parseMaintenanceArguments(positionals.slice(1), values);\n }\n\n if (positionals[0] === \"transform\") {\n return parseTransformArguments(positionals.slice(1), values);\n }\n\n if (positionals[0] === \"next\") {\n return parseArchiveArguments(\"next\", positionals.slice(1), values);\n }\n\n if (\n isArchiveMaintenanceCommand(positionals[0]) &&\n values.help === true &&\n positionals.length <= 2\n ) {\n return parseArchiveMaintenanceArguments(\n positionals[0],\n positionals.slice(1),\n values,\n );\n }\n\n if (isWikiGraphJobUri(positionals[0])) {\n rejectArchiveBooleanFlag(\n positionals[1] ?? \"job\",\n \"--reverse\",\n values.reverse,\n \"wg wikg://local/job --help\",\n );\n return parseJobUriFirstArguments(positionals, values);\n }\n\n if (isWikiGraphLocalConfigUri(positionals[0])) {\n rejectArchiveBooleanFlag(\n positionals[1] ?? \"config\",\n \"--reverse\",\n values.reverse,\n \"wg wikg://local/config --help\",\n );\n return parseLocalConfigUriFirstArguments(positionals, values);\n }\n\n if (isWikiGraphLibraryUri(positionals[0])) {\n return parseLibraryUriFirstArguments(positionals, values);\n }\n\n if (isWikiGraphUri(positionals[0])) {\n return parseArchiveUriFirstArguments(positionals, values);\n }\n\n if (\n isPublicArchiveCommandHelpAction(positionals[0]) &&\n values.help === true &&\n positionals.length === 1\n ) {\n return parseArchiveArguments(positionals[0], positionals.slice(1), values);\n }\n\n if (positionals.length === 0) {\n throw new Error(withHelpRoute(\"Missing command.\", CLI_HELP_ROUTES.command));\n }\n throw new Error(formatUnknownCommandMessage(positionals[0]!));\n}\n\nfunction rejectUnsupportedIndexesFlag(value: string | undefined): void {\n if (value === undefined) {\n return;\n }\n\n throw new Error(\n withHelpRoute(\n \"The --indexes option has been removed. Build chapter index artifacts explicitly, then sync the archive or library index cache.\",\n CLI_HELP_ROUTES.root,\n ),\n );\n}\n\nfunction rejectNonWikiGraphSkipUnindexedFlag(\n positionals: readonly string[],\n values: { readonly \"skip-unindexed\"?: boolean },\n): void {\n if (values[\"skip-unindexed\"] !== true) {\n return;\n }\n\n const command = positionals[0];\n if (\n command !== undefined &&\n (isWikiGraphUri(command) || isWikiGraphLibraryUri(command))\n ) {\n return;\n }\n\n throw new Error(\n withHelpRoute(\n \"The current command does not support --skip-unindexed.\",\n CLI_HELP_ROUTES.root,\n ),\n );\n}\n","import { parseLocatedWikiGraphUri, withHelpRoute } from \"../support/index.js\";\nimport {\n isUriHelpPredicate,\n renderUriHelpText,\n renderUriPredicateHelpText,\n} from \"./help.js\";\nimport type {\n ArchiveArgumentValues,\n CLIQueueAction,\n ParsedCLIArguments,\n} from \"./types.js\";\nimport {\n formatRemovedImplicitVerbMessage,\n formatWikiGraphHelpCommand,\n isJobUriAction,\n isRemovedImplicitArchiveAction,\n parseBuildJobTarget,\n parseNonNegativeIntegerFlag,\n parseWatchFrom,\n parseWikiGraphJobTargetUri,\n parseWikiGraphJobUri,\n rejectQueueExtraPositionals,\n rejectStreamingJSONFlag,\n requireArchiveUriPath,\n} from \"./helpers.js\";\nimport { parseChapterTarget } from \"./uri/index.js\";\n\nexport function parseJobUriFirstArguments(\n positionals: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const uri = positionals[0];\n const jobTargetUri = parseWikiGraphJobTargetUri(uri);\n const explicitAction = positionals[1];\n\n if (uri === undefined) {\n throw new Error(\"Internal error: missing job URI.\");\n }\n\n if (isRemovedImplicitArchiveAction(explicitAction)) {\n throw new Error(formatRemovedImplicitVerbMessage(explicitAction));\n }\n\n if (values.help === true) {\n if (explicitAction === undefined) {\n return {\n help: true,\n helpText: renderUriHelpText(\n jobTargetUri === undefined && parseWikiGraphJobUri(uri) === undefined\n ? \"job-collection-scope\"\n : jobTargetUri === undefined\n ? \"job-object\"\n : \"job-target-object\",\n uri,\n ),\n kind: \"help\",\n };\n }\n const targetName =\n jobTargetUri === undefined && parseWikiGraphJobUri(uri) === undefined\n ? \"job-collection-scope\"\n : jobTargetUri === undefined\n ? \"job-object\"\n : \"job-target-object\";\n if (isUriHelpPredicate(targetName, explicitAction)) {\n return {\n help: true,\n helpText: renderUriPredicateHelpText(targetName, explicitAction, uri),\n kind: \"help\",\n };\n }\n }\n\n const jobId = jobTargetUri ?? parseWikiGraphJobUri(uri);\n const action =\n explicitAction ??\n (jobTargetUri !== undefined\n ? undefined\n : jobId === undefined\n ? \"list\"\n : \"get\");\n\n if (!isJobUriAction(action)) {\n throw new Error(\n withHelpRoute(\n action === undefined\n ? `Missing action after ${uri}.`\n : `The job URI form does not support \\`${action}\\`.`,\n \"wg wikg://local/job --help\",\n ),\n );\n }\n\n const helpRoute =\n explicitAction === undefined\n ? formatWikiGraphHelpCommand(uri)\n : formatWikiGraphHelpCommand(uri, action);\n const tail = explicitAction === undefined ? [] : positionals.slice(2);\n\n if (jobTargetUri !== undefined) {\n if (action !== \"set\") {\n throw new Error(\n withHelpRoute(\n `The job target URI form does not support \\`${action}\\`. Expected set.`,\n \"wg wikg://local/job/<job-id>/target set --help\",\n ),\n );\n }\n return parseQueueJobTargetUriArguments(\n jobTargetUri,\n tail,\n values,\n helpRoute,\n );\n }\n\n switch (action) {\n case \"add\":\n if (jobId !== undefined) {\n throw new Error(\n withHelpRoute(\"Job add requires `wikg://local/job`.\", helpRoute),\n );\n }\n return parseQueueAddArguments(tail, values, helpRoute);\n case \"clean\":\n if (jobId !== undefined) {\n throw new Error(\n withHelpRoute(\"Job clean requires `wikg://local/job`.\", helpRoute),\n );\n }\n rejectQueueJSONFlag(\"clean\", values.json, helpRoute);\n rejectQueueJSONLFlag(\"clean\", values.jsonl, helpRoute);\n rejectQueueExtraPositionals(\"clean\", [\"clean\", ...tail], 1, helpRoute);\n return {\n args: {\n action: \"clean\",\n },\n help: false,\n kind: \"queue\",\n };\n case \"list\":\n if (jobId !== undefined) {\n throw new Error(\n withHelpRoute(\"Job list requires `wikg://local/job`.\", helpRoute),\n );\n }\n rejectQueueJSONLFlag(\"list\", values.jsonl, helpRoute);\n rejectQueueExtraPositionals(\"list\", [\"list\", ...tail], 1, helpRoute);\n return {\n args: {\n action: \"list\",\n ...(values.active === undefined ? {} : { activeOnly: values.active }),\n ...(values.all === undefined ? {} : { all: values.all }),\n ...(values.input === undefined\n ? {}\n : { archivePath: requireArchiveUriPath(values.input, helpRoute) }),\n ...(values.json === undefined ? {} : { json: values.json }),\n },\n help: false,\n kind: \"queue\",\n };\n case \"get\":\n return parseQueueJobArguments(\"status\", jobId, tail, values, helpRoute);\n case \"watch\":\n case \"pause\":\n case \"resume\":\n case \"cancel\":\n case \"boost\":\n return parseQueueJobArguments(action, jobId, tail, values, helpRoute);\n case \"set\":\n throw new Error(\n withHelpRoute(\n \"`wikg://local/job/<job-id> set` is not supported. Use `wikg://local/job/<job-id>/target set <target>`.\",\n \"wg wikg://local/job/<job-id>/target set --help\",\n ),\n );\n }\n\n throw new Error(\"Internal error: unsupported job URI action.\");\n}\n\nfunction parseQueueJobTargetUriArguments(\n jobId: string,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n rejectQueueJSONFlag(\"target\", values.json, helpRoute);\n rejectQueueJSONLFlag(\"target\", values.jsonl, helpRoute);\n rejectQueueExtraPositionals(\n \"target\",\n [\"target\", jobId, ...tail],\n 3,\n helpRoute,\n );\n\n const target = tail[0];\n if (target === undefined) {\n throw new Error(withHelpRoute(\"Missing build job target.\", helpRoute));\n }\n\n return {\n args: {\n action: \"target\",\n jobId,\n target: parseBuildJobTarget(target),\n },\n help: false,\n kind: \"queue\",\n };\n}\n\nfunction rejectQueueJSONFlag(\n action: CLIQueueAction,\n value: boolean | undefined,\n helpRoute: string,\n): void {\n if (value !== true) {\n return;\n }\n\n throw new Error(\n withHelpRoute(\n `\\`wg wikg://local/job ${action}\\` does not support --json.`,\n helpRoute,\n ),\n );\n}\n\nfunction parseQueueAddArguments(\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n const action = \"add\";\n\n rejectQueueJSONLFlag(action, values.jsonl, helpRoute);\n rejectQueueFlag(action, \"--stage\", values.stage, helpRoute);\n rejectQueueFlag(action, \"--to\", values.to, helpRoute);\n rejectQueueFlag(action, \"--chapter\", values.chapter, helpRoute);\n rejectQueueExtraPositionals(action, [action, ...tail], 1, helpRoute);\n if (values.input === undefined) {\n throw new Error(withHelpRoute(\"Missing --input.\", helpRoute));\n }\n\n const input = parseQueueAddInput(values.input, helpRoute);\n\n return {\n args: {\n action,\n ...(values[\"accept-cost\"] === undefined\n ? {}\n : { acceptCost: values[\"accept-cost\"] }),\n archivePath: input.archivePath,\n ...(values.boost === undefined ? {} : { boost: values.boost }),\n ...(input.chapterPath === undefined\n ? {}\n : { chapterPath: input.chapterPath }),\n ...(values.depth === undefined\n ? {}\n : {\n depth: parseNonNegativeIntegerFlag(\n values.depth,\n \"--depth\",\n helpRoute,\n ),\n }),\n inputPath: values.input,\n ...(values.json === undefined ? {} : { json: values.json }),\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n ...(values.prompt === undefined ? {} : { prompt: values.prompt }),\n target: parseBuildJobTarget(values.task),\n },\n help: false,\n kind: \"queue\",\n };\n}\n\nfunction parseQueueAddInput(\n uri: string,\n helpRoute: string,\n): { readonly archivePath: string; readonly chapterPath?: string } {\n const parsed = parseLocatedWikiGraphUri(uri);\n\n if (parsed.archivePath === undefined) {\n throw new Error(\n withHelpRoute(\n `Expected an archive or chapter Wiki Graph URI: ${uri}`,\n helpRoute,\n ),\n );\n }\n if (parsed.objectUri === undefined) {\n return { archivePath: parsed.archivePath };\n }\n\n const chapterTarget = parseChapterTarget(parsed.objectUri);\n if (chapterTarget?.kind !== \"chapter\") {\n throw new Error(\n withHelpRoute(\n `Expected an archive or chapter Wiki Graph URI: ${uri}`,\n helpRoute,\n ),\n );\n }\n\n return {\n archivePath: parsed.archivePath,\n chapterPath: chapterTarget.chapterPath,\n };\n}\n\nfunction parseQueueJobArguments(\n action: Exclude<CLIQueueAction, \"add\" | \"clean\" | \"list\">,\n jobId: string | undefined,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n if (action === \"status\") {\n rejectQueueJSONLFlag(action, values.jsonl, helpRoute);\n } else if (action === \"watch\") {\n rejectStreamingJSONFlag(action, values.json, helpRoute);\n } else {\n rejectQueueJSONFlag(action, values.json, helpRoute);\n rejectQueueJSONLFlag(action, values.jsonl, helpRoute);\n }\n\n if (action !== \"target\") {\n rejectQueueFlag(action, \"--stage\", values.stage, helpRoute);\n rejectQueueFlag(action, \"--to\", values.to, helpRoute);\n } else {\n rejectQueueFlag(action, \"--stage\", values.stage, helpRoute);\n rejectQueueFlag(action, \"--to\", values.to, helpRoute);\n }\n\n if (jobId === undefined) {\n throw new Error(\n withHelpRoute(\n `\\`wg wikg://local/job/<job-id> ${action}\\` requires <job-id>.`,\n helpRoute,\n ),\n );\n }\n\n rejectQueueExtraPositionals(action, [action, jobId, ...tail], 2, helpRoute);\n\n if (action === \"watch\") {\n const watchFrom = parseWatchFrom(values.from, helpRoute);\n\n return {\n args: {\n action,\n jobId,\n ...(watchFrom === undefined ? {} : { from: watchFrom }),\n ...(values.jsonl === undefined ? {} : { jsonl: values.jsonl }),\n },\n help: false,\n kind: \"queue\",\n };\n }\n\n if (action === \"status\") {\n return {\n args: {\n action,\n jobId,\n ...(values.json === undefined ? {} : { json: values.json }),\n },\n help: false,\n kind: \"queue\",\n };\n }\n\n if (action === \"target\") {\n return {\n args: {\n action,\n jobId,\n target: parseBuildJobTarget(values.task),\n },\n help: false,\n kind: \"queue\",\n };\n }\n\n return {\n args: {\n action,\n jobId,\n },\n help: false,\n kind: \"queue\",\n };\n}\n\nfunction rejectQueueJSONLFlag(\n action: CLIQueueAction,\n value: boolean | undefined,\n helpRoute: string,\n): void {\n if (value !== true) {\n return;\n }\n\n throw new Error(\n withHelpRoute(\n `\\`wg wikg://local/job ${action}\\` does not support --jsonl.`,\n helpRoute,\n ),\n );\n}\n\nfunction rejectQueueFlag(\n action: CLIQueueAction,\n name: string,\n value: string | undefined,\n helpRoute: string,\n): void {\n if (value === undefined) {\n return;\n }\n\n throw new Error(\n withHelpRoute(\n `\\`wg wikg://local/job ${action}\\` does not support ${name}.`,\n helpRoute,\n ),\n );\n}\n","import {\n formatLocatedChapterResourceUri,\n formatLocatedChapterSourceCollectionUri,\n formatLocatedChapterUri,\n type ArchiveTriplePattern,\n type BuildJobTarget,\n type IndexArtifactKind,\n} from \"wiki-graph-sdk\";\n\nimport { renderArchiveMaintenanceChapterActionHelpText } from \"../../help.js\";\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../../../support/index.js\";\nimport { parseArchiveArguments } from \"../../archive.js\";\nimport type {\n ArchiveArgumentValues,\n ArchiveUriLens,\n CLIArchiveChapterAction,\n CLIArchiveUriAction,\n ParsedCLIArguments,\n} from \"../../types.js\";\nimport {\n formatWikiGraphHelpCommand,\n normalizeArchiveChapterArguments,\n rejectArchiveChapterFlag,\n rejectArchiveChapterMetaFlags,\n} from \"../../helpers.js\";\nimport type { ChapterUriTarget } from \"./target.js\";\n\nexport function parseArchiveChapterUriArguments(\n uri: string,\n archivePath: string,\n target: ChapterUriTarget,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const helpRoute = formatWikiGraphHelpCommand(uri, action);\n\n switch (target.kind) {\n case \"collection\":\n return parseChapterCollectionUriArguments(\n uri,\n archivePath,\n action,\n tail,\n values,\n helpRoute,\n );\n case \"lens\":\n return parseArchiveLensUriArguments(\n uri,\n target.lens,\n action,\n tail,\n values,\n helpRoute,\n );\n case \"triple-pattern-lens\":\n return parseArchiveTriplePatternLensUriArguments(\n uri,\n target.pattern,\n action,\n tail,\n values,\n helpRoute,\n );\n case \"tree\":\n return parseChapterTreeUriArguments(\n archivePath,\n action,\n tail,\n values,\n helpRoute,\n );\n case \"chapter\":\n return parseSingleChapterUriArguments(\n archivePath,\n target.chapterPath,\n action,\n tail,\n values,\n helpRoute,\n );\n case \"chapter-lens\":\n return parseChapterLensUriArguments(\n archivePath,\n target.chapterPath,\n target.lens,\n action,\n tail,\n values,\n helpRoute,\n );\n case \"chapter-triple-pattern-lens\":\n return parseChapterTriplePatternLensUriArguments(\n archivePath,\n target.chapterPath,\n target.pattern,\n action,\n tail,\n values,\n helpRoute,\n );\n case \"chapter-index-artifact\":\n return parseChapterIndexArtifactUriArguments(\n archivePath,\n target.chapterPath,\n target.indexArtifactKind,\n action,\n tail,\n values,\n helpRoute,\n );\n case \"chapter-state\":\n return parseChapterStateUriArguments(\n uri,\n action,\n tail,\n values,\n helpRoute,\n );\n case \"chapter-resource\":\n return parseChapterResourceUriArguments(\n uri,\n archivePath,\n target.chapterPath,\n target.resource,\n action,\n tail,\n values,\n helpRoute,\n );\n case \"source-locator-scope\":\n return parseSourceLocatorScopeUriArguments(\n uri,\n action,\n tail,\n values,\n helpRoute,\n );\n }\n}\n\nfunction parseSourceLocatorScopeUriArguments(\n uri: string,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n if (action !== \"list\") {\n throw new Error(\n withHelpRoute(\n \"The source locator scope is read-only. Read it directly to enumerate locator mappings.\",\n \"wg <chapter-uri>/source/locators --help\",\n ),\n );\n }\n\n rejectArchiveChapterFlag(\"backlinks\", values.backlinks, helpRoute);\n rejectArchiveChapterFlag(\"context\", values.context, helpRoute);\n rejectArchiveChapterFlag(\"depth\", values.depth, helpRoute);\n rejectArchiveChapterFlag(\"evidence\", values.evidence, helpRoute);\n rejectArchiveChapterFlag(\"reverse\", values.reverse, helpRoute);\n rejectArchiveChapterFlag(\n \"skip-unindexed\",\n values[\"skip-unindexed\"],\n helpRoute,\n );\n\n return parseArchiveArguments(\"list\", [uri, ...tail], values, helpRoute);\n}\n\nfunction parseChapterIndexArtifactUriArguments(\n archivePath: string,\n chapterPath: string,\n indexArtifactKind: IndexArtifactKind,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n rejectArchiveChapterMetaFlags(values, helpRoute);\n rejectArchiveChapterFlag(\"input\", values.input, helpRoute);\n rejectArchiveChapterFlag(\"import\", values.import, helpRoute);\n rejectArchiveChapterFlag(\"to\", values.to, helpRoute);\n\n if (tail.length > 0) {\n throw new Error(\n withHelpRoute(\n `Unexpected argument for chapter index artifact: ${tail[0]}`,\n helpRoute,\n ),\n );\n }\n\n switch (action) {\n case \"get\":\n return {\n args: {\n action: \"get-index-artifact\",\n chapterPath,\n indexArtifactKind,\n path: archivePath,\n ...(values.json === undefined ? {} : { json: values.json }),\n },\n help: false,\n kind: \"chapter\",\n };\n case \"build\":\n return {\n args: {\n action: \"build-index-artifact\",\n chapterPath,\n indexArtifactKind,\n indexArtifactTarget:\n mapIndexArtifactKindToBuildTarget(indexArtifactKind),\n path: archivePath,\n ...(values.json === undefined ? {} : { json: values.json }),\n },\n help: false,\n kind: \"chapter\",\n };\n case \"delete\":\n return {\n args: {\n action: \"delete-index-artifact\",\n chapterPath,\n indexArtifactKind,\n path: archivePath,\n ...(values.json === undefined ? {} : { json: values.json }),\n },\n help: false,\n kind: \"chapter\",\n };\n default:\n throw new Error(\n withHelpRoute(\n `The chapter index artifact does not support \\`${action}\\`. Use get, build, or delete.`,\n helpRoute,\n ),\n );\n }\n}\n\nfunction mapIndexArtifactKindToBuildTarget(\n kind: IndexArtifactKind,\n): BuildJobTarget {\n switch (kind) {\n case \"fts\":\n return \"index-fts\";\n case \"embedding-source\":\n return \"index-embedding-source\";\n case \"embedding-summary\":\n return \"index-embedding-summary\";\n }\n}\n\nfunction parseChapterCollectionUriArguments(\n uri: string,\n archivePath: string,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n if (action === \"list\" || action === \"search\") {\n return parseArchiveLensUriArguments(\n uri,\n \"chapter\",\n action,\n tail,\n values,\n helpRoute,\n );\n }\n\n if (!isChapterCollectionMaintenanceAction(action)) {\n throw new Error(\n withHelpRoute(\n `The chapter collection does not support \\`${action}\\`. Read it directly, add --query, or use add.`,\n \"wg <chapter-uri> --help\",\n ),\n );\n }\n\n return parseArchiveChapterLikeArguments(\n action,\n archivePath,\n tail,\n values,\n helpRoute,\n );\n}\n\nfunction isChapterCollectionMaintenanceAction(\n action: CLIArchiveUriAction,\n): action is Extract<\n CLIArchiveChapterAction,\n \"add\" | \"move\" | \"remove\" | \"reset\"\n> {\n return (\n action === \"add\" ||\n action === \"move\" ||\n action === \"remove\" ||\n action === \"reset\"\n );\n}\n\nfunction parseArchiveLensUriArguments(\n uri: string,\n lens: ArchiveUriLens,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n if (action !== \"list\" && action !== \"search\") {\n throw new Error(\n withHelpRoute(\n `The ${lens} collection does not support \\`${action}\\`. Read it directly, or add --query.`,\n `wg <scope-uri> --help`,\n ),\n );\n }\n\n return parseArchiveArguments(action, [uri, ...tail], values, helpRoute, {\n defaultKinds: [lens],\n });\n}\n\nfunction parseArchiveTriplePatternLensUriArguments(\n uri: string,\n pattern: ArchiveTriplePattern,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n if (action !== \"list\" && action !== \"search\") {\n throw new Error(\n withHelpRoute(\n `The triple pattern collection does not support \\`${action}\\`. Read it directly, or add --query.`,\n \"wg <triple-uri> --help\",\n ),\n );\n }\n\n return parseArchiveArguments(action, [uri, ...tail], values, helpRoute, {\n defaultKinds: [\"triple\"],\n triplePattern: pattern,\n });\n}\n\nfunction parseChapterTreeUriArguments(\n archivePath: string,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n if (action !== \"get\" && action !== \"set\") {\n throw new Error(\n withHelpRoute(\n `The chapter tree does not support \\`${action}\\`. Read it directly, or use set.`,\n \"wg <archive-uri>/chapter/tree --help\",\n ),\n );\n }\n\n return parseArchiveChapterLikeArguments(\n \"tree\",\n archivePath,\n tail,\n values,\n helpRoute,\n action === \"set\" ? \"apply\" : undefined,\n );\n}\n\nfunction parseSingleChapterUriArguments(\n archivePath: string,\n chapterPath: string,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n switch (action) {\n case \"search\":\n case \"list\":\n return parseArchiveArguments(\n action,\n [formatLocatedChapterUri(archivePath, chapterPath), ...tail],\n values,\n helpRoute,\n );\n case \"get\":\n throw new Error(\n withHelpRoute(\n \"`chapter/<path>` is a scope URI. Use `chapter/<path>/title` or `chapter/<path>/state` to read a concrete chapter object.\",\n CLI_HELP_ROUTES.uri,\n ),\n );\n case \"inspect\":\n throw new Error(\n withHelpRoute(\n \"`chapter/<path>` inspect is not available. Inspect the archive or read concrete chapter resources instead.\",\n CLI_HELP_ROUTES.uri,\n ),\n );\n case \"move\":\n case \"remove\":\n case \"reset\":\n return parseArchiveChapterLikeArguments(\n action,\n archivePath,\n tail,\n { ...values, chapter: chapterPath },\n helpRoute,\n );\n default:\n throw new Error(\n withHelpRoute(\n `The chapter object does not support \\`${action}\\`.`,\n \"wg <chapter-uri> --help\",\n ),\n );\n }\n}\n\nfunction parseChapterLensUriArguments(\n archivePath: string,\n chapterPath: string,\n lens: ArchiveUriLens,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n if (action !== \"list\" && action !== \"search\") {\n throw new Error(\n withHelpRoute(\n `The chapter ${lens} collection does not support \\`${action}\\`. Read it directly, or add --query.`,\n `wg <scope-uri> --help`,\n ),\n );\n }\n\n return parseArchiveArguments(\n action,\n [formatChapterScopedArchiveUri(archivePath, chapterPath), ...tail],\n values,\n helpRoute,\n { defaultKinds: [lens] },\n );\n}\n\nfunction parseChapterTriplePatternLensUriArguments(\n archivePath: string,\n chapterPath: string,\n pattern: ArchiveTriplePattern,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n if (action !== \"list\" && action !== \"search\") {\n throw new Error(\n withHelpRoute(\n `The chapter triple pattern collection does not support \\`${action}\\`. Read it directly, or add --query.`,\n \"wg <triple-uri> --help\",\n ),\n );\n }\n\n return parseArchiveArguments(\n action,\n [formatChapterScopedArchiveUri(archivePath, chapterPath), ...tail],\n values,\n helpRoute,\n { defaultKinds: [\"triple\"], triplePattern: pattern },\n );\n}\n\nfunction parseChapterStateUriArguments(\n uri: string,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n if (action !== \"get\") {\n throw new Error(\n withHelpRoute(\n `The chapter state object does not support \\`${action}\\`. Read the state URI directly.`,\n \"wg <chapter-uri>/state --help\",\n ),\n );\n }\n\n return parseArchiveArguments(\"get\", [uri, ...tail], values, helpRoute);\n}\n\nfunction parseChapterResourceUriArguments(\n uri: string,\n archivePath: string,\n chapterPath: string,\n resource: \"source\" | \"summary\" | \"title\",\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n const resourceHelpRoute = `wg <chapter-uri>/${resource} --help`;\n\n if (action === \"list\" || action === \"search\") {\n if (resource === \"title\") {\n throw new Error(\n withHelpRoute(\n `The chapter ${resource} resource does not support \\`${action}\\`.`,\n resourceHelpRoute,\n ),\n );\n }\n\n return parseArchiveArguments(\n action,\n [\n resource === \"source\" || resource === \"summary\"\n ? formatChapterScopedArchiveUri(archivePath, chapterPath)\n : formatLocatedChapterUri(archivePath, chapterPath),\n ...tail,\n ],\n values,\n helpRoute,\n { defaultKinds: [resource] },\n );\n }\n\n if (action !== \"set\" && action !== \"get\" && action !== \"clear\") {\n throw new Error(\n withHelpRoute(\n `The chapter ${resource} resource does not support \\`${action}\\`. Read it directly, or use set.`,\n resourceHelpRoute,\n ),\n );\n }\n if (action === \"clear\" && resource !== \"title\") {\n throw new Error(\n withHelpRoute(\n `The chapter ${resource} resource does not support clear.`,\n resourceHelpRoute,\n ),\n );\n }\n if (action === \"set\" && values.clear === true) {\n throw new Error(\n withHelpRoute(\n `The chapter ${resource} set command does not support --clear. Use \\`clear\\`.`,\n resourceHelpRoute,\n ),\n );\n }\n\n if (action === \"get\") {\n const objectUri =\n uri.includes(\"#\") && (resource === \"source\" || resource === \"summary\")\n ? uri\n : isLibraryArchiveLocator(archivePath)\n ? uri\n : resource === \"source\"\n ? formatLocatedChapterSourceCollectionUri(archivePath, chapterPath)\n : formatLocatedChapterResourceUri(\n archivePath,\n chapterPath,\n resource,\n );\n\n return parseArchiveArguments(\n \"get\",\n [objectUri, ...tail],\n values,\n helpRoute,\n );\n }\n\n const mappedAction =\n resource === \"source\"\n ? \"set-source\"\n : resource === \"summary\"\n ? \"set-summary\"\n : \"set-title\";\n\n return parseArchiveChapterLikeArguments(\n mappedAction,\n archivePath,\n tail,\n {\n ...values,\n chapter: chapterPath,\n ...(action === \"clear\" ? { clear: true } : {}),\n },\n helpRoute,\n );\n}\n\nfunction formatChapterScopedArchiveUri(\n archivePath: string,\n chapterPath: string,\n): string {\n return isLibraryArchiveLocator(archivePath)\n ? `${archivePath}/chapter/${chapterPath}`\n : formatLocatedChapterUri(archivePath, chapterPath);\n}\n\nfunction isLibraryArchiveLocator(archivePath: string): boolean {\n return (\n archivePath.startsWith(\"wikg://lib/arc/\") ||\n /^wikg:\\/\\/lib\\/[^/]+\\/arc\\//u.test(archivePath)\n );\n}\n\nfunction parseArchiveChapterLikeArguments(\n action: CLIArchiveChapterAction,\n archivePath: string,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n treeAction?: \"apply\",\n): ParsedCLIArguments {\n if (values.help === true) {\n return {\n help: true,\n helpText: renderArchiveMaintenanceChapterActionHelpText(action),\n kind: \"chapter\",\n };\n }\n\n rejectArchiveChapterFlag(\"digest-dir\", values[\"digest-dir\"], helpRoute);\n rejectArchiveChapterFlag(\"depth\", values.depth, helpRoute);\n rejectArchiveChapterFlag(\"jsonl\", values.jsonl, helpRoute);\n rejectArchiveChapterFlag(\"limit\", values.limit, helpRoute);\n rejectArchiveChapterFlag(\"output\", values.output, helpRoute);\n rejectArchiveChapterFlag(\"output-format\", values[\"output-format\"], helpRoute);\n rejectArchiveChapterMetaFlags(values, helpRoute);\n if (values.verbose) {\n throw new Error(\n withHelpRoute(\n \"The chapter command does not support --verbose.\",\n helpRoute,\n ),\n );\n }\n\n const maxPositionals =\n action === \"set-source\" ||\n action === \"set-summary\" ||\n action === \"set-title\"\n ? 1\n : 0;\n if (tail.length > maxPositionals) {\n throw new Error(\n withHelpRoute(\n `Unexpected positional arguments: ${tail.join(\" \")}.`,\n helpRoute,\n ),\n );\n }\n\n return {\n args: normalizeArchiveChapterArguments(\n action,\n archivePath,\n values,\n helpRoute,\n treeAction,\n tail[0],\n ),\n help: false,\n kind: \"chapter\",\n };\n}\n","import {\n type ParsedWikiGraphLibraryUri,\n parseWikiGraphLibraryUri,\n} from \"wiki-graph-sdk\";\n\nimport {\n isUriHelpPredicate,\n renderUriHelpText,\n renderUriPredicateHelpText,\n type UriHelpTargetName,\n} from \"../help.js\";\nimport {\n CLI_HELP_ROUTES,\n parseLocatedWikiGraphUri,\n withHelpRoute,\n} from \"../../support/index.js\";\nimport { parseArchiveArguments } from \"../archive.js\";\nimport type {\n ArchiveArgumentValues,\n CLIArchiveUriAction,\n ParsedCLIArguments,\n} from \"../types.js\";\nimport {\n formatMissingArchiveLocatorMessage,\n formatRemovedImplicitVerbMessage,\n formatWikiGraphHelpCommand,\n isArchiveUriAction,\n isImplicitArchiveReadAction,\n isUriFirstArchiveAction,\n rejectArchiveBooleanFlag,\n stripObjectUriPrefix,\n} from \"../helpers.js\";\nimport { parseArchiveChapterUriArguments } from \"./chapter/routing.js\";\nimport { parseChapterTarget } from \"./chapter/target.js\";\nimport {\n parseArchiveUriArchiveArguments,\n parseArchiveCoverUriArguments,\n parseArchiveIndexUriArguments,\n} from \"./archive-objects.js\";\nimport {\n containsMetadataKeySuffix,\n parseMetadataTarget,\n parseMetadataUriArguments,\n} from \"./metadata.js\";\nimport { isTripleScopePath } from \"./triple-pattern.js\";\n\nexport function parseArchiveUriFirstArguments(\n positionals: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const uri = positionals[0];\n const explicitAction = positionals[1];\n\n if (uri === undefined) {\n throw new Error(\"Internal error: missing URI-first archive URI.\");\n }\n\n const action = normalizeArchiveUriAction(\n uri,\n explicitAction ?? resolveImplicitArchiveUriAction(uri, values.query),\n );\n\n if (explicitAction === \"get\") {\n throw new Error(formatRemovedImplicitVerbMessage(explicitAction));\n }\n\n if (values.help === true && explicitAction === undefined) {\n const helpTarget = classifyArchiveUriHelpTarget(uri);\n\n return {\n help: true,\n helpText: renderUriHelpText(helpTarget, uri),\n kind: \"help\",\n };\n }\n\n if (values.help === true && explicitAction !== undefined) {\n const helpTarget = classifyArchiveUriHelpTarget(uri);\n\n if (!isUriHelpPredicate(helpTarget, action)) {\n throw new Error(\n withHelpRoute(\n `The URI target ${uri} does not support \\`${action}\\`.`,\n formatWikiGraphHelpCommand(uri),\n ),\n );\n }\n return {\n help: true,\n helpText: renderUriPredicateHelpText(helpTarget, action, uri),\n kind: \"help\",\n };\n }\n\n if (!isArchiveUriAction(action)) {\n const helpCommand = formatWikiGraphHelpCommand(uri);\n\n throw new Error(\n withHelpRoute(\n `The URI-first form does not support \\`${action}\\`. Use \\`${helpCommand}\\` to inspect valid predicates.`,\n helpCommand,\n ),\n );\n }\n\n return parseArchiveUriTargetArguments(\n uri,\n action,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n );\n}\n\ntype ArchiveUriKind = \"object\" | \"scope\";\n\nfunction normalizeArchiveUriAction(uri: string, action: string): string {\n if (action !== \"apply\") {\n return action;\n }\n\n const parsed = parseLocatedWikiGraphUri(uri);\n if (parsed.objectUri === \"wikg://chapter/tree\") {\n return \"set\";\n }\n\n return action;\n}\n\nfunction resolveImplicitArchiveUriAction(\n uri: string,\n query: string | undefined,\n): CLIArchiveUriAction {\n const parsed = parseLocatedWikiGraphUri(uri);\n\n if (parsed.archivePath === undefined) {\n throw new Error(formatMissingArchiveLocatorMessage(uri));\n }\n\n const kind = classifyArchiveUri(parsed.objectUri);\n\n if (kind === \"scope\") {\n return query === undefined ? \"list\" : \"search\";\n }\n if (query !== undefined) {\n throw new Error(\n withHelpRoute(\n \"`--query` requires a scope URI, or an explicit `related` or `evidence` command for supported object URIs.\",\n CLI_HELP_ROUTES.uri,\n ),\n );\n }\n\n return \"get\";\n}\n\nfunction classifyArchiveUri(objectUri: string | undefined): ArchiveUriKind {\n if (objectUri === undefined) {\n return \"scope\";\n }\n\n const path = stripObjectUriPrefix(objectUri);\n\n const chapterTarget = parseChapterTarget(objectUri);\n if (chapterTarget !== undefined) {\n switch (chapterTarget.kind) {\n case \"collection\":\n case \"chapter\":\n case \"lens\":\n case \"triple-pattern-lens\":\n case \"chapter-lens\":\n case \"chapter-triple-pattern-lens\":\n case \"source-locator-scope\":\n return \"scope\";\n case \"tree\":\n case \"chapter-resource\":\n case \"chapter-state\":\n return \"object\";\n }\n }\n if (isTripleScopePath(path)) {\n return \"scope\";\n }\n if (/^(?:chunk|entity)$/u.test(path)) {\n return \"scope\";\n }\n\n return \"object\";\n}\n\nfunction classifyArchiveUriHelpTarget(uri: string): UriHelpTargetName {\n const parsed = parseLocatedWikiGraphUri(uri);\n const objectUri = parsed.objectUri;\n\n if (objectUri === undefined) {\n return \"archive-scope\";\n }\n\n const path = stripObjectUriPrefix(objectUri);\n rejectPredicateLikeObjectSuffix(uri, path);\n\n if (parseMetadataTarget(objectUri) !== undefined) {\n return \"metadata-object\";\n }\n if (path === \"cover\") {\n return \"cover-object\";\n }\n if (path === \"index\") {\n return \"index-object\";\n }\n if (/^artifact\\/[0-9a-f]{12,64}(?:#.+)?$/iu.test(path)) {\n return \"artifact-object\";\n }\n const chapterTarget = parseChapterTarget(objectUri);\n if (chapterTarget !== undefined) {\n switch (chapterTarget.kind) {\n case \"collection\":\n return \"chapter-collection-scope\";\n case \"chapter\":\n return \"chapter-scope\";\n case \"tree\":\n return \"chapter-tree-object\";\n case \"chapter-state\":\n return \"chapter-state-object\";\n case \"chapter-index-artifact\":\n return \"chapter-index-artifact\";\n case \"source-locator-scope\":\n return \"chapter-source-locator-scope\";\n case \"chapter-resource\":\n switch (chapterTarget.resource) {\n case \"source\":\n return hasUriFragment(uri)\n ? \"chapter-source-range-object\"\n : \"chapter-source-object\";\n case \"summary\":\n return hasUriFragment(uri)\n ? \"chapter-summary-range-object\"\n : \"chapter-summary-object\";\n case \"title\":\n return \"chapter-title-object\";\n }\n break;\n case \"lens\":\n case \"chapter-lens\":\n switch (chapterTarget.lens) {\n case \"chunk\":\n return \"chunk-scope\";\n case \"entity\":\n return \"entity-scope\";\n case \"source\":\n return \"chapter-source-object\";\n case \"summary\":\n return \"chapter-summary-object\";\n case \"triple\":\n return \"triple-scope\";\n }\n break;\n case \"triple-pattern-lens\":\n case \"chapter-triple-pattern-lens\":\n return \"triple-scope\";\n }\n }\n if (/^(?:chapter\\/[1-9][0-9]*\\/)?chunk$/u.test(path)) {\n return \"chunk-scope\";\n }\n if (/^(?:chapter\\/[1-9][0-9]*\\/)?chunk\\/.+$/u.test(path)) {\n return \"chunk-object\";\n }\n if (/^(?:chapter\\/[1-9][0-9]*\\/)?entity$/u.test(path)) {\n return \"entity-scope\";\n }\n if (/^(?:chapter\\/[1-9][0-9]*\\/)?entity\\/[^/]+\\/wikipage$/u.test(path)) {\n return \"entity-wikipage-object\";\n }\n if (/^(?:chapter\\/[1-9][0-9]*\\/)?entity\\/.+$/u.test(path)) {\n return \"entity-object\";\n }\n if (isTripleScopePath(path)) {\n return \"triple-scope\";\n }\n if (/^(?:chapter\\/[1-9][0-9]*\\/)?triple\\/[^/]+\\/[^/]+\\/[^/]+$/u.test(path)) {\n return \"triple-object\";\n }\n\n throw new Error(\n withHelpRoute(\n `Unknown Wiki Graph URI target: ${uri}. Use the archive root help or URI guide to choose a valid target.`,\n CLI_HELP_ROUTES.uri,\n ),\n );\n}\n\nfunction rejectPredicateLikeObjectSuffix(uri: string, path: string): void {\n const suggestion = getPredicateLikeObjectSuffixSuggestion(uri, path);\n if (suggestion === undefined) {\n return;\n }\n throw new Error(\n withHelpRoute(\n `Predicate-like URI suffixes are not object URIs: ${uri}. Use predicate form: ${suggestion}`,\n CLI_HELP_ROUTES.uri,\n ),\n );\n}\n\nfunction getPredicateLikeObjectSuffixSuggestion(\n uri: string,\n path: string,\n): string | undefined {\n const parts = path.split(\"/\");\n const suffix = parts.at(-1);\n if (suffix !== \"evidence\" && suffix !== \"related\" && suffix !== \"pack\") {\n return undefined;\n }\n const objectParts = stripOptionalChapterObjectPrefix(parts.slice(0, -1));\n if (objectParts[0] === \"entity\" && objectParts.length === 2) {\n return `${uri.slice(0, -suffix.length - 1)} ${suffix}`;\n }\n if (objectParts[0] === \"chunk\" && objectParts.length === 2) {\n return `${uri.slice(0, -suffix.length - 1)} ${suffix}`;\n }\n if (objectParts[0] === \"triple\" && objectParts.length === 4) {\n return `${uri.slice(0, -suffix.length - 1)} ${suffix}`;\n }\n return undefined;\n}\n\nfunction stripOptionalChapterObjectPrefix(\n parts: readonly string[],\n): readonly string[] {\n if (parts[0] === \"chapter\" && parts[1] !== undefined) {\n return parts.slice(2);\n }\n return parts;\n}\n\nfunction hasUriFragment(uri: string): boolean {\n return uri.includes(\"#\");\n}\n\nfunction parseArchiveUriTargetArguments(\n uri: string,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const parsed = parseLocatedWikiGraphUri(uri);\n const libraryArchiveObjectTarget = parseLibraryArchiveObjectTarget(uri);\n const archivePath =\n libraryArchiveObjectTarget === undefined\n ? parsed.archivePath\n : formatLibraryArchiveLocator(libraryArchiveObjectTarget);\n const objectUri = libraryArchiveObjectTarget?.objectUri ?? parsed.objectUri;\n const helpRoute = isImplicitArchiveReadAction(action)\n ? formatWikiGraphHelpCommand(uri)\n : formatWikiGraphHelpCommand(uri, action);\n\n if (archivePath === undefined) {\n throw new Error(formatMissingArchiveLocatorMessage(uri));\n }\n rejectUnsupportedArchiveReverse(action, values.reverse, helpRoute);\n\n if (objectUri === undefined) {\n return parseArchiveUriArchiveArguments(\n uri,\n archivePath,\n action,\n tail,\n values,\n helpRoute,\n );\n }\n\n const metadataTarget = parseMetadataTarget(objectUri);\n if (metadataTarget !== undefined) {\n return parseMetadataUriArguments(\n archivePath,\n metadataTarget,\n action,\n tail,\n values,\n helpRoute,\n );\n }\n\n if (containsMetadataKeySuffix(objectUri)) {\n throw new Error(\n withHelpRoute(\n \"Metadata keys are not addressed in the URI. Read `<object>/meta` and filter the output, or use `<object>/meta put <key> ...`.\",\n \"wg <object-uri>/meta --help\",\n ),\n );\n }\n\n if (objectUri === \"wikg://cover\") {\n return parseArchiveCoverUriArguments(\n uri,\n archivePath,\n action,\n tail,\n values,\n );\n }\n\n if (objectUri === \"wikg://index\") {\n return parseArchiveIndexUriArguments(archivePath, action, tail, values);\n }\n\n const chapterTarget = parseChapterTarget(objectUri);\n if (chapterTarget !== undefined) {\n return parseArchiveChapterUriArguments(\n uri,\n archivePath,\n chapterTarget,\n action,\n tail,\n values,\n );\n }\n\n const uriKind = classifyArchiveUri(objectUri);\n if (uriKind === \"object\" && (action === \"list\" || action === \"search\")) {\n throw new Error(\n withHelpRoute(\n `The object URI ${uri} does not support \\`${action}\\`. Use a scope URI directly, or add --query to a scope URI.`,\n CLI_HELP_ROUTES.uri,\n ),\n );\n }\n if (uriKind === \"scope\" && action === \"get\") {\n throw new Error(\n withHelpRoute(\n `The scope URI ${uri} cannot be read as one object. Use a concrete object URI.`,\n CLI_HELP_ROUTES.uri,\n ),\n );\n }\n\n if (!isUriFirstArchiveAction(action)) {\n const helpCommand = formatWikiGraphHelpCommand(uri);\n\n throw new Error(\n withHelpRoute(\n `The URI target ${uri} does not support \\`${action}\\`. Use \\`${helpCommand}\\` to inspect valid predicates.`,\n helpCommand,\n ),\n );\n }\n\n return parseArchiveArguments(action, [uri, ...tail], values, helpRoute);\n}\n\nfunction parseLibraryArchiveObjectTarget(\n uri: string,\n): ParsedWikiGraphLibraryUri | undefined {\n const target = parseWikiGraphLibraryUri(uri);\n\n if (target?.kind === \"archive\" && target.objectUri !== undefined) {\n return target;\n }\n\n return undefined;\n}\n\nfunction formatLibraryArchiveLocator(\n target: ParsedWikiGraphLibraryUri,\n): string {\n if (target.kind !== \"archive\" || target.archivePublicId === undefined) {\n throw new Error(\"Internal error: expected library archive object target.\");\n }\n\n return target.publicId === undefined\n ? `wikg://lib/arc/${target.archivePublicId}`\n : `wikg://lib/${target.publicId}/arc/${target.archivePublicId}`;\n}\n\nfunction rejectUnsupportedArchiveReverse(\n action: CLIArchiveUriAction,\n reverse: boolean | undefined,\n helpRoute: string,\n): void {\n if (reverse !== true) {\n return;\n }\n if (action === \"search\") {\n throw new Error(\n withHelpRoute(\"`--reverse` cannot be combined with --query.\", helpRoute),\n );\n }\n if (\n action === \"evidence\" ||\n action === \"get\" ||\n action === \"list\" ||\n action === \"related\"\n ) {\n return;\n }\n\n rejectArchiveBooleanFlag(action, \"--reverse\", reverse, helpRoute);\n}\n","import { CLI_HELP_ROUTES, withHelpRoute } from \"../../support/index.js\";\nimport {\n renderArchiveMaintenanceCommandHelpText,\n renderUriHelpText,\n} from \"../help.js\";\nimport { parseArchiveArguments } from \"../archive.js\";\nimport type {\n ArchiveArgumentValues,\n CLIArchiveUriAction,\n ParsedCLIArguments,\n} from \"../types.js\";\nimport {\n formatWikiGraphHelpCommand,\n isArchiveAction,\n isArchiveIndexAction,\n rejectArchiveBooleanFlag,\n rejectArchiveExtraPositionals,\n rejectArchiveFlag,\n rejectArchiveMaintenanceExtraPositionals,\n rejectArchiveNonReadFlags,\n rejectCommandMetaFlags,\n rejectCoverCommandBooleanFlag,\n rejectCoverCommandFlag,\n rejectCoverMetaFlags,\n rejectStreamingJSONFlag,\n} from \"../helpers.js\";\n\nexport function parseArchiveUriArchiveArguments(\n uri: string,\n archivePath: string,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n if (!isArchiveAction(action)) {\n throw new Error(\n withHelpRoute(\n `The archive URI form does not support \\`${action}\\`. Use \\`wg <archive-uri> --help\\` to inspect valid verbs.`,\n \"wg <archive-uri> --help\",\n ),\n );\n }\n\n if (action === \"get\") {\n return parseArchiveArguments(action, [uri, ...tail], values, helpRoute);\n }\n\n if (\n action !== \"create\" &&\n action !== \"export\" &&\n action !== \"inspect\" &&\n action !== \"list\" &&\n action !== \"search\"\n ) {\n throw new Error(\n withHelpRoute(\n `The archive URI ${uri} cannot be used with \\`${action}\\`; use a concrete object URI. Use \\`wg <archive-uri> --help\\` to inspect valid archive verbs.`,\n \"wg <archive-uri> --help\",\n ),\n );\n }\n\n return parseArchiveArguments(\n action,\n [action === \"create\" || action === \"export\" ? archivePath : uri, ...tail],\n values,\n helpRoute,\n );\n}\n\nexport function parseArchiveCoverUriArguments(\n uri: string,\n archivePath: string,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const helpRoute = formatWikiGraphHelpCommand(uri, action);\n\n if (values.help === true) {\n return {\n help: true,\n helpText: renderArchiveMaintenanceCommandHelpText(\"cover\"),\n kind: \"maintenance\",\n };\n }\n\n if (action !== \"get\") {\n throw new Error(\n withHelpRoute(\n `The cover object does not support \\`${action}\\`. Read the cover URI directly.`,\n \"wg <cover-uri> --help\",\n ),\n );\n }\n\n rejectArchiveMaintenanceExtraPositionals(\"cover\", tail, 0, helpRoute);\n rejectCoverCommandFlag(\"budget\", values.budget, helpRoute);\n rejectCoverCommandFlag(\"chapter\", values.chapter, helpRoute);\n rejectCoverCommandFlag(\"cursor\", values.cursor, helpRoute);\n rejectCoverCommandFlag(\"digest-dir\", values[\"digest-dir\"], helpRoute);\n rejectCoverCommandFlag(\"import\", values.import, helpRoute);\n rejectCoverCommandFlag(\"input\", values.input, helpRoute);\n rejectCoverCommandFlag(\"input-format\", values[\"input-format\"], helpRoute);\n rejectCoverCommandFlag(\"limit\", values.limit, helpRoute);\n rejectCoverCommandFlag(\"output\", values.output, helpRoute);\n rejectCoverCommandFlag(\"output-format\", values[\"output-format\"], helpRoute);\n rejectCoverCommandFlag(\"prompt\", values.prompt, helpRoute);\n rejectCoverCommandFlag(\"stage\", values.stage, helpRoute);\n rejectCoverCommandFlag(\"to\", values.to, helpRoute);\n rejectCoverCommandBooleanFlag(\"confirm\", values.confirm, helpRoute);\n rejectCoverCommandBooleanFlag(\"json\", values.json, helpRoute);\n rejectCoverMetaFlags(values);\n\n if (values.verbose === true) {\n throw new Error(\n withHelpRoute(\"The cover command does not support --verbose.\", helpRoute),\n );\n }\n\n return {\n args: {\n inputPath: archivePath,\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n },\n help: false,\n kind: \"cover\",\n };\n}\n\nexport function parseArchiveIndexUriArguments(\n archivePath: string,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const helpRoute = `wg wikg://<archive.wikg>/index ${action} --help`;\n\n if (values.help === true) {\n return {\n help: true,\n helpText: renderUriHelpText(\n \"index-object\",\n \"wikg://<archive.wikg>/index\",\n ),\n kind: \"help\",\n };\n }\n\n if (!isArchiveIndexAction(action)) {\n throw new Error(\n withHelpRoute(\n `The index cache does not support \\`${action}\\`. Read the index cache directly, or use sync or clean.`,\n CLI_HELP_ROUTES.uri,\n ),\n );\n }\n rejectArchiveExtraPositionals(action, tail, 0, helpRoute);\n rejectArchiveNonReadFlags(action, values, helpRoute);\n rejectArchiveFlag(action, \"--after\", values.after, helpRoute);\n rejectArchiveFlag(action, \"--budget\", values.budget, helpRoute);\n rejectArchiveFlag(action, \"--before\", values.before, helpRoute);\n rejectArchiveFlag(action, \"--chapter\", values.chapter, helpRoute);\n rejectArchiveFlag(action, \"--context\", values.context, helpRoute);\n rejectArchiveFlag(action, \"--cursor\", values.cursor, helpRoute);\n rejectArchiveFlag(action, \"--digest-dir\", values[\"digest-dir\"], helpRoute);\n rejectArchiveFlag(action, \"--evidence\", values.evidence, helpRoute);\n rejectArchiveFlag(action, \"--from\", values.from, helpRoute);\n rejectArchiveFlag(action, \"--json-input\", values[\"json-input\"], helpRoute);\n rejectArchiveFlag(action, \"--limit\", values.limit, helpRoute);\n rejectArchiveFlag(action, \"--parent\", values.parent, helpRoute);\n rejectArchiveFlag(action, \"--predicate\", values.predicate, helpRoute);\n rejectArchiveFlag(action, \"--role\", values.role, helpRoute);\n rejectArchiveFlag(action, \"--stage\", values.stage, helpRoute);\n rejectArchiveFlag(action, \"--task\", values.task, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveBooleanFlag(\n action,\n \"--accept-cost\",\n values[\"accept-cost\"],\n helpRoute,\n );\n rejectArchiveBooleanFlag(action, \"--active\", values.active, helpRoute);\n rejectArchiveBooleanFlag(action, \"--all\", values.all, helpRoute);\n rejectArchiveBooleanFlag(action, \"--backlinks\", values.backlinks, helpRoute);\n rejectArchiveBooleanFlag(action, \"--boost\", values.boost, helpRoute);\n rejectArchiveBooleanFlag(action, \"--clear\", values.clear, helpRoute);\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n rejectArchiveBooleanFlag(action, \"--dry-run\", values[\"dry-run\"], helpRoute);\n rejectArchiveBooleanFlag(action, \"--first\", values.first, helpRoute);\n if (action === \"sync\") {\n rejectStreamingJSONFlag(action, values.json, helpRoute);\n } else {\n rejectArchiveFlag(action, \"--indexes\", values.indexes, helpRoute);\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n rejectArchiveBooleanFlag(\n action,\n \"--skip-unindexed\",\n values[\"skip-unindexed\"],\n helpRoute,\n );\n }\n rejectArchiveBooleanFlag(action, \"--last\", values.last, helpRoute);\n rejectArchiveBooleanFlag(action, \"--reverse\", values.reverse, helpRoute);\n rejectArchiveBooleanFlag(action, \"--root\", values.root, helpRoute);\n rejectArchiveBooleanFlag(action, \"--verbose\", values.verbose, helpRoute);\n rejectCommandMetaFlags(values, action, helpRoute);\n\n return {\n args: {\n action,\n archivePath,\n ...(values.json === undefined ? {} : { json: values.json }),\n ...(values.jsonl === undefined ? {} : { jsonl: values.jsonl }),\n ...(values[\"skip-unindexed\"] === true ? { skipUnindexed: true } : {}),\n },\n help: false,\n kind: \"archive-index\",\n };\n}\n","import { withHelpRoute } from \"../../support/index.js\";\nimport type {\n ArchiveArgumentValues,\n CLIArchiveUriAction,\n CLIMetadataAction,\n ParsedCLIArguments,\n} from \"../types.js\";\nimport {\n rejectArchiveChapterMetaFlags,\n rejectArchiveMaintenanceExtraPositionals,\n rejectMetaCommandBooleanFlag,\n rejectMetaCommandFlag,\n stripObjectUriPrefix,\n} from \"../helpers.js\";\nimport { isMetadataAction } from \"../helpers.js\";\n\nexport function parseMetadataUriArguments(\n archivePath: string,\n objectPath: string,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n if (!isMetadataAction(action)) {\n throw new Error(\n withHelpRoute(\n `The metadata object does not support \\`${action}\\`. Read it directly, or use set, put, delete, or clear.`,\n \"wg <object-uri>/meta --help\",\n ),\n );\n }\n rejectMetadataFlags(action, values, helpRoute);\n\n switch (action) {\n case \"get\":\n case \"clear\":\n rejectArchiveMaintenanceExtraPositionals(\"meta\", tail, 0, helpRoute);\n break;\n case \"delete\":\n rejectArchiveMaintenanceExtraPositionals(\"meta\", tail, 1, helpRoute);\n if (tail[0] === undefined) {\n throw new Error(withHelpRoute(\"Missing metadata key.\", helpRoute));\n }\n break;\n case \"put\":\n rejectArchiveMaintenanceExtraPositionals(\"meta\", tail, 2, helpRoute);\n if (tail[0] === undefined) {\n throw new Error(withHelpRoute(\"Missing metadata key.\", helpRoute));\n }\n break;\n case \"set\":\n rejectArchiveMaintenanceExtraPositionals(\"meta\", tail, 1, helpRoute);\n break;\n }\n\n return {\n args: {\n action,\n archivePath,\n ...(values.input === undefined ? {} : { inputPath: values.input }),\n ...(action !== \"set\" && action !== \"put\"\n ? {}\n : tail[action === \"put\" ? 1 : 0] === undefined\n ? {}\n : { inputValue: tail[action === \"put\" ? 1 : 0] }),\n ...(values.json === undefined ? {} : { json: values.json }),\n ...(values[\"json-input\"] === undefined\n ? {}\n : { jsonInputValue: values[\"json-input\"] }),\n ...(tail[0] === undefined || (action !== \"put\" && action !== \"delete\")\n ? {}\n : { key: tail[0] }),\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n objectPath,\n },\n help: false,\n kind: \"object-metadata\",\n };\n}\n\nfunction rejectMetadataFlags(\n action: CLIMetadataAction,\n values: ArchiveArgumentValues,\n helpRoute: string,\n): void {\n rejectMetaCommandFlag(\"budget\", values.budget, helpRoute);\n rejectMetaCommandFlag(\"chapter\", values.chapter, helpRoute);\n rejectMetaCommandFlag(\"cursor\", values.cursor, helpRoute);\n rejectMetaCommandFlag(\"digest-dir\", values[\"digest-dir\"], helpRoute);\n rejectMetaCommandFlag(\"import\", values.import, helpRoute);\n rejectMetaCommandFlag(\"input-format\", values[\"input-format\"], helpRoute);\n rejectMetaCommandFlag(\"limit\", values.limit, helpRoute);\n rejectMetaCommandFlag(\"output\", values.output, helpRoute);\n rejectMetaCommandFlag(\"output-format\", values[\"output-format\"], helpRoute);\n rejectMetaCommandFlag(\"prompt\", values.prompt, helpRoute);\n rejectMetaCommandFlag(\"stage\", values.stage, helpRoute);\n rejectMetaCommandFlag(\"to\", values.to, helpRoute);\n rejectMetaCommandBooleanFlag(\"confirm\", values.confirm, helpRoute);\n rejectMetaCommandBooleanFlag(\"jsonl\", values.jsonl, helpRoute);\n rejectArchiveChapterMetaFlags(values, helpRoute);\n if (values.verbose === true) {\n throw new Error(\n withHelpRoute(\n \"The metadata command does not support --verbose.\",\n helpRoute,\n ),\n );\n }\n if (action === \"get\") {\n rejectMetaCommandFlag(\"input\", values.input, helpRoute);\n rejectMetaCommandFlag(\"json-input\", values[\"json-input\"], helpRoute);\n return;\n }\n if (action === \"clear\" || action === \"delete\") {\n rejectMetaCommandFlag(\"input\", values.input, helpRoute);\n rejectMetaCommandFlag(\"json-input\", values[\"json-input\"], helpRoute);\n }\n}\n\nexport function parseMetadataTarget(objectUri: string): string | undefined {\n const path = stripObjectUriPrefix(objectUri);\n\n if (path === \"meta\") {\n return \"\";\n }\n if (!path.endsWith(\"/meta\")) {\n return undefined;\n }\n\n return path.slice(0, -\"/meta\".length);\n}\n\nexport function containsMetadataKeySuffix(objectUri: string): boolean {\n return /(?:^|\\/)meta\\/.+/u.test(stripObjectUriPrefix(objectUri));\n}\n","import { renderGcCommandHelpText } from \"../help.js\";\nimport { withHelpRoute } from \"../../support/index.js\";\nimport type {\n ArchiveArgumentValues,\n ArchiveMetaFlagValues,\n ParsedCLIArguments,\n} from \"../types.js\";\nimport { rejectGcFlag, rejectGcMetaFlags } from \"../helpers.js\";\n\nexport function parseGcArguments(\n positionals: readonly string[],\n values: ArchiveArgumentValues & ArchiveMetaFlagValues,\n): ParsedCLIArguments {\n const helpRoute = \"wg gc --help\";\n\n if (values.help === true) {\n return {\n help: true,\n helpText: renderGcCommandHelpText(),\n kind: \"help\",\n };\n }\n\n rejectGcFlag(\"digest-dir\", values[\"digest-dir\"], helpRoute);\n rejectGcFlag(\"import\", values.import, helpRoute);\n rejectGcFlag(\"input\", values.input, helpRoute);\n rejectGcFlag(\"input-format\", values[\"input-format\"], helpRoute);\n rejectGcFlag(\"jsonl\", values.jsonl, helpRoute);\n rejectGcFlag(\"limit\", values.limit, helpRoute);\n rejectGcFlag(\"llm\", values.llm, helpRoute);\n rejectGcFlag(\"output\", values.output, helpRoute);\n rejectGcFlag(\"output-format\", values[\"output-format\"], helpRoute);\n rejectGcFlag(\"prompt\", values.prompt, helpRoute);\n rejectGcFlag(\"stage\", values.stage, helpRoute);\n rejectGcMetaFlags(values);\n\n if (values.verbose === true) {\n throw new Error(\n withHelpRoute(\"The `gc` command does not support --verbose.\", helpRoute),\n );\n }\n if (positionals.length > 0) {\n throw new Error(\n withHelpRoute(\n `Unexpected positional arguments for \\`gc\\`: ${positionals.join(\" \")}.`,\n helpRoute,\n ),\n );\n }\n\n return {\n args: {\n ...(values[\"dry-run\"] === undefined ? {} : { dryRun: values[\"dry-run\"] }),\n ...(values.force === undefined ? {} : { force: values.force }),\n ...(values.json === undefined ? {} : { json: values.json }),\n },\n help: false,\n kind: \"gc\",\n };\n}\n","import {\n parseHelpTopic,\n renderArchiveCommandHelpText,\n renderHelpTopicText,\n renderMainHelpText,\n} from \"../help.js\";\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../../support/index.js\";\nimport type { ParsedCLIArguments } from \"../types.js\";\nimport {\n isPublicArchiveCommandHelpAction,\n rejectHelpFlag,\n rejectHelpMetaFlags,\n} from \"../helpers.js\";\n\nexport function parseHelpArguments(\n positionals: readonly string[],\n values: {\n readonly author?: readonly string[];\n readonly \"clear-authors\"?: boolean;\n readonly \"clear-description\"?: boolean;\n readonly \"clear-identifier\"?: boolean;\n readonly \"clear-language\"?: boolean;\n readonly \"clear-published-at\"?: boolean;\n readonly \"clear-publisher\"?: boolean;\n readonly \"clear-title\"?: boolean;\n readonly description?: string;\n readonly \"digest-dir\"?: string;\n readonly help?: boolean;\n readonly import?: string;\n readonly identifier?: string;\n readonly input?: string;\n readonly \"input-format\"?: string;\n readonly json?: boolean;\n readonly language?: string;\n readonly limit?: string;\n readonly llm?: string;\n readonly output?: string;\n readonly \"output-format\"?: string;\n readonly \"published-at\"?: string;\n readonly publisher?: string;\n readonly prompt?: string;\n readonly stage?: string;\n readonly verbose?: boolean;\n },\n): ParsedCLIArguments {\n rejectHelpFlag(\"digest-dir\", values[\"digest-dir\"]);\n rejectHelpFlag(\"import\", values.import);\n rejectHelpFlag(\"input\", values.input);\n rejectHelpFlag(\"input-format\", values[\"input-format\"]);\n rejectHelpFlag(\"json\", values.json);\n rejectHelpFlag(\"limit\", values.limit);\n rejectHelpFlag(\"llm\", values.llm);\n rejectHelpFlag(\"output\", values.output);\n rejectHelpFlag(\"output-format\", values[\"output-format\"]);\n rejectHelpFlag(\"prompt\", values.prompt);\n rejectHelpFlag(\"stage\", values.stage);\n rejectHelpMetaFlags(values);\n\n if (values.verbose) {\n throw new Error(\n withHelpRoute(\n \"The `help` command does not support --verbose.\",\n CLI_HELP_ROUTES.root,\n ),\n );\n }\n\n if (positionals.length > 1) {\n throw new Error(\n withHelpRoute(\n `Unexpected positional arguments: ${positionals.slice(1).join(\" \")}.`,\n CLI_HELP_ROUTES.root,\n ),\n );\n }\n\n if (positionals[0] === undefined) {\n return {\n help: true,\n helpText: renderMainHelpText(),\n kind: \"help\",\n };\n }\n\n if (isPublicArchiveCommandHelpAction(positionals[0])) {\n return {\n help: true,\n helpText: renderArchiveCommandHelpText(positionals[0]),\n kind: \"help\",\n };\n }\n\n return {\n help: true,\n helpText: renderHelpTopicText(parseHelpTopic(positionals[0])),\n kind: \"help\",\n };\n}\n","import { renderLegacyCommandHelpText } from \"../help.js\";\nimport { withHelpRoute } from \"../../support/index.js\";\nimport type { ArchiveArgumentValues, ParsedCLIArguments } from \"../types.js\";\n\nexport function parseLegacyArguments(\n positionals: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const action = positionals[0];\n\n if (values.help === true && action === undefined) {\n return {\n help: true,\n helpText: renderLegacyCommandHelpText(),\n kind: \"help\",\n };\n }\n if (action === \"migrate\") {\n if (values.help === true) {\n return {\n help: true,\n helpText: renderLegacyCommandHelpText(\"migrate\"),\n kind: \"help\",\n };\n }\n\n rejectLegacyFlag(\"--input\", values.input);\n rejectLegacyFlag(\"--import\", values.import);\n rejectLegacyFlag(\"--input-format\", values[\"input-format\"]);\n rejectLegacyFlag(\"--output-format\", values[\"output-format\"]);\n rejectLegacyFlag(\"--llm\", values.llm);\n rejectLegacyFlag(\"--prompt\", values.prompt);\n rejectLegacyBooleanFlag(\"--json\", values.json);\n rejectLegacyBooleanFlag(\"--jsonl\", values.jsonl);\n rejectLegacyBooleanFlag(\"--verbose\", values.verbose);\n\n const inputPath = positionals[1];\n\n if (inputPath === undefined) {\n throw new Error(\n withHelpRoute(\"Missing legacy input path.\", \"wg legacy migrate --help\"),\n );\n }\n if (positionals.length > 2) {\n throw new Error(\n withHelpRoute(\n `Unexpected positional arguments: ${positionals.slice(2).join(\" \")}.`,\n \"wg legacy migrate --help\",\n ),\n );\n }\n\n return {\n args: {\n action,\n inputPath,\n ...(values.output === undefined ? {} : { outputPath: values.output }),\n },\n help: false,\n kind: \"legacy\",\n };\n }\n\n throw new Error(\n withHelpRoute(\n action === undefined\n ? \"Missing legacy command.\"\n : `Invalid legacy command: ${action}.`,\n \"wg legacy --help\",\n ),\n );\n}\n\nfunction rejectLegacyFlag(flag: string, value: unknown): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `\\`wg legacy migrate\\` does not support ${flag}.`,\n \"wg legacy migrate --help\",\n ),\n );\n }\n}\n\nfunction rejectLegacyBooleanFlag(\n flag: string,\n value: boolean | undefined,\n): void {\n if (value === true) {\n rejectLegacyFlag(flag, value);\n }\n}\n","import {\n isUriHelpPredicate,\n renderUriHelpText,\n renderUriPredicateHelpText,\n} from \"../help.js\";\nimport type { LocalConfigSection } from \"../../runtime/local-config.js\";\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../../support/index.js\";\nimport type {\n ArchiveArgumentValues,\n CLILocalConfigAction,\n ParsedCLIArguments,\n} from \"../types.js\";\nimport {\n formatRemovedImplicitVerbMessage,\n formatWikiGraphHelpCommand,\n isRemovedImplicitArchiveAction,\n parseLocalConfigUriSection,\n rejectArchiveExtraPositionals,\n rejectCommandMetaFlags,\n rejectMetaCommandBooleanFlag,\n rejectMetaCommandFlag,\n} from \"../helpers.js\";\n\nexport function parseLocalConfigUriFirstArguments(\n positionals: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const uri = positionals[0];\n\n if (uri === undefined) {\n throw new Error(\"Internal error: missing local config URI.\");\n }\n\n const section = parseLocalConfigUriSection(uri);\n const explicitAction = positionals[1];\n\n if (isRemovedImplicitArchiveAction(explicitAction)) {\n throw new Error(formatRemovedImplicitVerbMessage(explicitAction));\n }\n\n const action = explicitAction ?? \"get\";\n const helpRoute =\n explicitAction === undefined\n ? formatWikiGraphHelpCommand(uri)\n : formatWikiGraphHelpCommand(uri, action);\n\n if (section === undefined) {\n if (\n values.help === true &&\n explicitAction === undefined &&\n parseLocalConfigUriSection(uri) === undefined\n ) {\n return {\n help: true,\n helpText: renderUriHelpText(\"local-config-namespace\", uri),\n kind: \"help\",\n };\n }\n throw new Error(\n withHelpRoute(\n \"Expected a local config section URI such as wikg://local/config/llm.\",\n CLI_HELP_ROUTES.config,\n ),\n );\n }\n if (values.help === true && explicitAction === undefined) {\n return {\n help: true,\n helpText: renderUriHelpText(\"local-config-section\", uri),\n kind: \"help\",\n };\n }\n if (values.help === true && explicitAction !== undefined) {\n if (!isUriHelpPredicate(\"local-config-section\", action)) {\n throw new Error(\n withHelpRoute(\n `The URI target ${uri} does not support \\`${action}\\`.`,\n formatWikiGraphHelpCommand(uri),\n ),\n );\n }\n return {\n help: true,\n helpText: renderUriPredicateHelpText(\"local-config-section\", action, uri),\n kind: \"help\",\n };\n }\n if (!isLocalConfigAction(action)) {\n throw new Error(\n withHelpRoute(\n `The local config URI form does not support \\`${action}\\`. Pass the URI directly to read it, or use set, put, delete, clear, or test.`,\n helpRoute,\n ),\n );\n }\n\n return parseLocalConfigArguments(\n section,\n action,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n helpRoute,\n );\n}\n\nfunction parseLocalConfigArguments(\n section: LocalConfigSection,\n action: CLILocalConfigAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n rejectLocalConfigFlags(action, values, helpRoute);\n\n switch (action) {\n case \"get\":\n case \"clear\":\n case \"test\":\n rejectArchiveExtraPositionals(action, tail, 0, helpRoute);\n break;\n case \"delete\":\n rejectArchiveExtraPositionals(action, tail, 1, helpRoute);\n if (tail[0] === undefined) {\n throw new Error(withHelpRoute(\"Missing config key.\", helpRoute));\n }\n break;\n case \"put\":\n rejectArchiveExtraPositionals(\n action,\n tail,\n values.secret === true ? 1 : 2,\n helpRoute,\n );\n if (tail[0] === undefined) {\n throw new Error(withHelpRoute(\"Missing config key.\", helpRoute));\n }\n if (\n values.secret !== true &&\n tail[1] === undefined &&\n values[\"json-input\"] === undefined\n ) {\n throw new Error(withHelpRoute(\"Missing config value.\", helpRoute));\n }\n break;\n case \"set\":\n rejectArchiveExtraPositionals(action, tail, 1, helpRoute);\n break;\n }\n\n return {\n args: {\n action,\n ...(tail[0] === undefined || (action !== \"put\" && action !== \"delete\")\n ? {}\n : { key: tail[0] }),\n ...(values.json === undefined ? {} : { json: values.json }),\n ...(values[\"json-input\"] === undefined\n ? {}\n : { jsonInputValue: values[\"json-input\"] }),\n ...(action !== \"set\" && action !== \"put\"\n ? {}\n : tail[action === \"put\" ? 1 : 0] === undefined\n ? {}\n : { inputValue: tail[action === \"put\" ? 1 : 0] }),\n section,\n ...(values.secret === undefined ? {} : { secret: values.secret }),\n },\n help: false,\n kind: \"local-config\",\n };\n}\n\nfunction rejectLocalConfigFlags(\n action: CLILocalConfigAction,\n values: ArchiveArgumentValues,\n helpRoute: string,\n): void {\n rejectMetaCommandFlag(\"input\", values.input, helpRoute);\n rejectMetaCommandFlag(\"llm\", values.llm, helpRoute);\n rejectMetaCommandFlag(\"output\", values.output, helpRoute);\n rejectMetaCommandFlag(\"prompt\", values.prompt, helpRoute);\n rejectMetaCommandFlag(\"task\", values.task, helpRoute);\n rejectMetaCommandBooleanFlag(\"jsonl\", values.jsonl, helpRoute);\n rejectMetaCommandBooleanFlag(\"verbose\", values.verbose, helpRoute);\n rejectCommandMetaFlags(values, action, helpRoute);\n\n if (values.secret === true && action !== \"put\") {\n throw new Error(\n withHelpRoute(\"`--secret` is only valid for config put.\", helpRoute),\n );\n }\n if (action === \"get\" || action === \"test\") {\n return;\n }\n if (values.json === true && action !== \"set\" && action !== \"put\") {\n throw new Error(\n withHelpRoute(`\\`${action}\\` does not support --json.`, helpRoute),\n );\n }\n}\n\nfunction isLocalConfigAction(\n value: string | undefined,\n): value is CLILocalConfigAction {\n return (\n value === \"clear\" ||\n value === \"delete\" ||\n value === \"get\" ||\n value === \"put\" ||\n value === \"set\" ||\n value === \"test\"\n );\n}\n","import { renderMaintenanceCommandHelpText } from \"../help.js\";\nimport { withHelpRoute } from \"../../support/index.js\";\nimport type { ArchiveArgumentValues, ParsedCLIArguments } from \"../types.js\";\n\nexport function parseMaintenanceArguments(\n positionals: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const action = positionals[0];\n\n if (values.help === true && action === undefined) {\n return {\n help: true,\n helpText: renderMaintenanceCommandHelpText(),\n kind: \"help\",\n };\n }\n\n if (action !== \"upgrade\") {\n throw new Error(\n withHelpRoute(\n action === undefined\n ? \"Missing maintenance command.\"\n : `Invalid maintenance command: ${action}.`,\n \"wg maintenance --help\",\n ),\n );\n }\n\n if (values.help === true) {\n return {\n help: true,\n helpText: renderMaintenanceCommandHelpText(\"upgrade\"),\n kind: \"help\",\n };\n }\n\n rejectMaintenanceFlag(\"--input\", values.input);\n rejectMaintenanceFlag(\"--import\", values.import);\n rejectMaintenanceFlag(\"--input-format\", values[\"input-format\"]);\n rejectMaintenanceFlag(\"--output-format\", values[\"output-format\"]);\n rejectMaintenanceFlag(\"--llm\", values.llm);\n rejectMaintenanceFlag(\"--prompt\", values.prompt);\n rejectMaintenanceBooleanFlag(\"--jsonl\", values.jsonl);\n rejectMaintenanceBooleanFlag(\"--verbose\", values.verbose);\n\n const target = positionals[1];\n if (target === undefined) {\n throw new Error(\n withHelpRoute(\n \"Missing maintenance upgrade target.\",\n \"wg maintenance upgrade --help\",\n ),\n );\n }\n if (positionals.length > 2) {\n throw new Error(\n withHelpRoute(\n `Unexpected positional arguments: ${positionals.slice(2).join(\" \")}.`,\n \"wg maintenance upgrade --help\",\n ),\n );\n }\n\n return {\n args: {\n action,\n ...(values.json === undefined ? {} : { json: values.json }),\n ...(values.output === undefined ? {} : { outputPath: values.output }),\n target,\n },\n help: false,\n kind: \"maintenance-command\",\n };\n}\n\nfunction rejectMaintenanceFlag(flag: string, value: unknown): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `\\`wg maintenance upgrade\\` does not support ${flag}.`,\n \"wg maintenance upgrade --help\",\n ),\n );\n }\n}\n\nfunction rejectMaintenanceBooleanFlag(\n flag: string,\n value: boolean | undefined,\n): void {\n if (value === true) {\n rejectMaintenanceFlag(flag, value);\n }\n}\n","import {\n renderArchiveMaintenanceChapterActionHelpText,\n renderArchiveMaintenanceCommandHelpText,\n} from \"../help.js\";\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../../support/index.js\";\nimport type {\n ArchiveArgumentValues,\n CLIArchiveMaintenanceCommand,\n ParsedCLIArguments,\n} from \"../types.js\";\nimport { isArchiveChapterAction } from \"../helpers.js\";\n\nexport function parseArchiveMaintenanceArguments(\n command: CLIArchiveMaintenanceCommand,\n positionals: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n if (values.help !== true) {\n throw new Error(\n withHelpRoute(`Unknown command: ${command}.`, CLI_HELP_ROUTES.command),\n );\n }\n\n switch (command) {\n case \"cover\":\n case \"meta\":\n if (positionals.length > 0) {\n throw new Error(\n withHelpRoute(\n `Unexpected positional arguments: ${positionals.join(\" \")}.`,\n CLI_HELP_ROUTES.command,\n ),\n );\n }\n return {\n help: true,\n helpText: renderArchiveMaintenanceCommandHelpText(command),\n kind: \"maintenance\",\n };\n case \"chapter\": {\n const action = positionals[0];\n if (action === undefined) {\n return {\n help: true,\n helpText: renderArchiveMaintenanceCommandHelpText(\"chapter\"),\n kind: \"chapter\",\n };\n }\n if (!isArchiveChapterAction(action)) {\n throw new Error(\n withHelpRoute(\n `Invalid chapter action: ${action}. Use the chapter collection URI directly, add --query, or use add, move, remove, reset, or tree. Use concrete chapter resource URIs such as /source, /summary, or /title for set operations.`,\n CLI_HELP_ROUTES.command,\n ),\n );\n }\n if (\n action === \"set-source\" ||\n action === \"set-summary\" ||\n action === \"set-title\"\n ) {\n throw new Error(\n withHelpRoute(\n `Invalid chapter action: ${action}. Use concrete chapter resource URIs such as /source, /summary, or /title for set operations.`,\n CLI_HELP_ROUTES.command,\n ),\n );\n }\n if (positionals.length > 1) {\n throw new Error(\n withHelpRoute(\n `Unexpected positional arguments: ${positionals.slice(1).join(\" \")}.`,\n CLI_HELP_ROUTES.command,\n ),\n );\n }\n return {\n help: true,\n helpText: renderArchiveMaintenanceChapterActionHelpText(action),\n kind: \"chapter\",\n };\n }\n }\n}\n","import { parseCLIFormat, withHelpRoute } from \"../../support/index.js\";\nimport { renderTransformHelpText } from \"../help.js\";\nimport type {\n ArchiveArgumentValues,\n CLIArguments,\n ParsedCLIArguments,\n} from \"../types.js\";\nimport {\n parseChapterStage,\n rejectTransformFlag,\n rejectTransformMetaFlags,\n} from \"../helpers.js\";\n\nexport function parseTransformArguments(\n positionals: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const helpRoute = \"wg transform --help\";\n\n if (positionals.length > 0) {\n throw new Error(\n withHelpRoute(\n `Unexpected positional arguments: ${positionals.join(\" \")}.`,\n helpRoute,\n ),\n );\n }\n rejectTransformMetaFlags(values);\n rejectTransformFlag(\"budget\", values.budget, helpRoute);\n rejectTransformFlag(\"chapter\", values.chapter, helpRoute);\n rejectTransformFlag(\"confirm\", values.confirm, helpRoute);\n rejectTransformFlag(\"cursor\", values.cursor, helpRoute);\n rejectTransformFlag(\"evidence\", values.evidence, helpRoute);\n rejectTransformFlag(\"json\", values.json, helpRoute);\n rejectTransformFlag(\"import\", values.import, helpRoute);\n rejectTransformFlag(\"limit\", values.limit, helpRoute);\n rejectTransformFlag(\"parent\", values.parent, helpRoute);\n rejectTransformFlag(\"to\", values.to, helpRoute);\n\n const args = {\n ...(values[\"digest-dir\"] === undefined\n ? {}\n : { digestDirPath: values[\"digest-dir\"] }),\n help: values.help ?? false,\n ...(values.input === undefined ? {} : { inputPath: values.input }),\n ...(values[\"input-format\"] === undefined\n ? {}\n : {\n inputFormat: parseCLIFormat(values[\"input-format\"], \"--input-format\"),\n }),\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n ...(values.output === undefined ? {} : { outputPath: values.output }),\n ...(values[\"output-format\"] === undefined\n ? {}\n : {\n outputFormat: parseCLIFormat(\n values[\"output-format\"],\n \"--output-format\",\n ),\n }),\n ...(values.prompt === undefined ? {} : { prompt: values.prompt }),\n ...(values.stage === undefined\n ? {}\n : {\n targetStage: parseChapterStage(values.stage, \"--stage\", helpRoute),\n }),\n verbose: values.verbose ?? false,\n } satisfies CLIArguments;\n\n if (values.help ?? false) {\n return {\n args,\n help: true,\n helpText: renderTransformHelpText(),\n kind: \"convert\",\n };\n }\n\n return {\n args,\n help: false,\n kind: \"convert\",\n };\n}\n","import {\n parseWikiGraphLibraryUri,\n type ArchiveTriplePattern,\n type ParsedWikiGraphLibraryUri,\n} from \"wiki-graph-sdk\";\n\nimport { withHelpRoute } from \"../../support/index.js\";\nimport {\n renderLibraryPredicateHelpText,\n renderLibraryUriHelpText,\n renderUriHelpText,\n renderUriPredicateHelpText,\n isUriHelpPredicate,\n type LibraryHelpPredicateName,\n type UriHelpTargetName,\n} from \"../help.js\";\nimport type {\n ArchiveArgumentValues,\n CLILibraryAction,\n CLIObjectKind,\n ParsedCLIArguments,\n} from \"../types.js\";\nimport {\n formatWikiGraphHelpCommand,\n rejectArchiveBooleanFlag,\n rejectArchiveFlag,\n stripObjectUriPrefix,\n} from \"../helpers.js\";\nimport { parseNonNegativeIntegerFlag } from \"../helper/parse.js\";\nimport { parseArchiveArguments } from \"../archive.js\";\nimport { parseChapterTarget } from \"./chapter/target.js\";\nimport { isTripleScopePath } from \"./triple-pattern.js\";\n\nconst LIBRARY_ARCHIVE_ACTIONS = new Set([\"get\", \"remove\"]);\nconst LIBRARY_ARCHIVE_COLLECTION_ACTIONS = new Set([\"add\", \"get\", \"scan\"]);\nconst LIBRARY_ARCHIVE_PATH_ACTIONS = new Set([\"get\", \"set\"]);\nconst LIBRARY_ARCHIVE_TREE_ACTIONS = new Set([\"archive-tree\"]);\nconst LIBRARY_METADATA_ACTIONS = new Set([\n \"clear\",\n \"delete\",\n \"get\",\n \"put\",\n \"set\",\n]);\nconst LIBRARY_PATH_ACTIONS = new Set([\"get\", \"set\"]);\nconst LIBRARY_REGISTRY_ACTIONS = new Set([\"add\", \"list\"]);\nconst LIBRARY_SCOPE_ACTIONS = new Set([\"get\", \"remove\"]);\nconst LIBRARY_INDEX_ACTIONS = new Set([\"clean\", \"get\", \"sync\"]);\nconst LIBRARY_QUERY_ACTIONS = new Set([\n \"evidence\",\n \"get\",\n \"list\",\n \"pack\",\n \"related\",\n \"search\",\n]);\n\nexport function parseLibraryUriFirstArguments(\n positionals: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const uri = positionals[0];\n const explicitAction = positionals[1];\n\n if (uri === undefined) {\n throw new Error(\"Internal error: missing library URI.\");\n }\n\n const target = parseWikiGraphLibraryUri(uri);\n if (target === undefined) {\n throw new Error(`Expected a Wiki Graph library URI: ${uri}`);\n }\n\n const action =\n explicitAction ??\n (target.kind === \"scope\" &&\n ((target.objectUri !== undefined && target.objectUri !== \"wikg://index\") ||\n values.query !== undefined ||\n values.limit !== undefined ||\n values.cursor !== undefined)\n ? resolveImplicitLibraryQueryAction(target.objectUri, values.query)\n : target.kind === \"scope\" ||\n target.kind === \"archive-collection\" ||\n target.kind === \"metadata\" ||\n target.kind === \"path\" ||\n target.kind === \"archive\" ||\n target.kind === \"archive-path\" ||\n target.objectUri === \"wikg://index\"\n ? \"get\"\n : target.kind === \"archive-tree\"\n ? \"archive-tree\"\n : \"list\");\n\n if (action === \"inspect\" && target.kind !== \"archive\") {\n throw new Error(\n withHelpRoute(\n \"Library-level inspection is not supported. Inspect one managed archive with `wg wikg://lib/arc/<archive-id> inspect`.\",\n formatWikiGraphHelpCommand(uri),\n ),\n );\n }\n\n if (values.help === true) {\n return parseLibraryHelpArguments(uri, target, action, explicitAction);\n }\n\n if (target.kind === \"archive\" && action === \"inspect\") {\n return parseLibraryArchiveInspectArguments(\n uri,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n );\n }\n\n if (\n target.kind === \"archive\" &&\n target.objectUri === undefined &&\n (action === \"search\" || values.query !== undefined)\n ) {\n return parseLibraryArchiveRootQueryArguments(\n uri,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n );\n }\n\n if (target.kind === \"registry\") {\n return parseLibraryRegistryArguments(\n uri,\n target,\n action,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n );\n }\n\n if (target.kind === \"path\" || target.kind === \"archive-path\") {\n return parseLibraryPathArguments(\n uri,\n target,\n action,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n );\n }\n\n if (target.kind === \"archive-tree\") {\n return parseLibraryArchiveTreeArguments(\n uri,\n target,\n action,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n );\n }\n\n if (target.kind === \"archive-collection\") {\n return parseLibraryArchiveCollectionArguments(\n uri,\n target,\n action,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n );\n }\n\n if (target.kind === \"scope\" && target.objectUri === \"wikg://index\") {\n return parseLibraryIndexArguments(\n uri,\n target,\n action,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n );\n }\n\n if (\n target.kind === \"scope\" &&\n (target.objectUri !== undefined ||\n action === \"related\" ||\n action === \"evidence\" ||\n action === \"pack\" ||\n action === \"search\" ||\n (action === \"list\" && explicitAction === undefined))\n ) {\n return parseLibraryQueryArguments(\n uri,\n target,\n action,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n );\n }\n\n if (!isLibraryAction(action)) {\n throw new Error(\n withHelpRoute(\n `The library URI target ${uri} does not support \\`${action}\\`.`,\n formatWikiGraphHelpCommand(uri),\n ),\n );\n }\n validateLibraryActionForTarget(uri, target, action);\n\n if (target.kind === \"archive\") {\n return parseLibraryArchiveArguments(\n uri,\n target,\n action,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n );\n }\n\n if (target.kind === \"metadata\") {\n return parseLibraryMetadataArguments(\n uri,\n target,\n action,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n );\n }\n\n return parseLibraryScopeArguments(\n uri,\n target,\n action,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n );\n}\n\nfunction parseLibraryHelpArguments(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n action: string,\n explicitAction: string | undefined,\n): ParsedCLIArguments {\n if (target.kind === \"archive\" && action === \"inspect\") {\n return {\n help: true,\n helpText: renderUriPredicateHelpText(\"archive-scope\", \"inspect\", uri),\n kind: \"help\",\n };\n }\n\n if (\n target.kind === \"scope\" &&\n target.objectUri === undefined &&\n action === \"search\" &&\n explicitAction === undefined\n ) {\n return {\n help: true,\n helpText: renderLibraryUriHelpText(uri, target),\n kind: \"help\",\n };\n }\n\n if (\n target.kind === \"registry\" ||\n target.kind === \"path\" ||\n target.kind === \"archive-collection\" ||\n target.kind === \"archive-tree\" ||\n target.kind === \"archive-path\"\n ) {\n if (explicitAction !== undefined && !isLibraryAction(action)) {\n throw new Error(\n withHelpRoute(\n `The library URI target ${uri} does not support \\`${action}\\`.`,\n formatWikiGraphHelpCommand(uri),\n ),\n );\n }\n if (isLibraryAction(action)) {\n validateLibraryActionForTarget(uri, target, action);\n }\n return {\n help: true,\n helpText:\n explicitAction === undefined\n ? renderLibraryUriHelpText(uri, target)\n : renderLibraryPredicateHelpText(\n uri,\n target,\n action as LibraryHelpPredicateName,\n ),\n kind: \"help\",\n };\n }\n\n if (target.kind === \"scope\" && target.objectUri === \"wikg://index\") {\n if (explicitAction === undefined) {\n return {\n help: true,\n helpText: renderLibraryUriHelpText(uri, target),\n kind: \"help\",\n };\n }\n if (!LIBRARY_INDEX_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The library index ${uri} does not support \\`${action}\\`.`,\n formatWikiGraphHelpCommand(uri),\n ),\n );\n }\n return {\n help: true,\n helpText: renderLibraryPredicateHelpText(\n uri,\n target,\n action as LibraryHelpPredicateName,\n ),\n kind: \"help\",\n };\n }\n\n if (target.kind === \"scope\" && target.objectUri !== undefined) {\n const helpTarget = classifyLibraryObjectHelpTarget(target.objectUri);\n if (explicitAction === undefined) {\n return {\n help: true,\n helpText: renderUriHelpText(helpTarget, uri),\n kind: \"help\",\n };\n }\n if (isReadOnlyLibraryChapterHelpTarget(helpTarget)) {\n throw new Error(\n withHelpRoute(\n `The library-wide chapter target ${uri} is read-only and does not support \\`${action}\\`. Use a standalone archive URI or a library archive shortcut such as wikg://lib/arc/<archive-id>/chapter/... for chapter maintenance.`,\n formatWikiGraphHelpCommand(uri),\n ),\n );\n }\n if (!isUriHelpPredicate(helpTarget, action)) {\n throw new Error(\n withHelpRoute(\n `The library URI target ${uri} does not support \\`${action}\\`.`,\n formatWikiGraphHelpCommand(uri),\n ),\n );\n }\n return {\n help: true,\n helpText: renderUriPredicateHelpText(helpTarget, action, uri),\n kind: \"help\",\n };\n }\n\n if (!isLibraryAction(action)) {\n throw new Error(\n withHelpRoute(\n `The library URI target ${uri} does not support \\`${action}\\`.`,\n formatWikiGraphHelpCommand(uri),\n ),\n );\n }\n validateLibraryActionForTarget(uri, target, action);\n return {\n help: true,\n helpText:\n explicitAction === undefined\n ? renderLibraryUriHelpText(uri, target)\n : renderLibraryPredicateHelpText(uri, target, action),\n kind: \"help\",\n };\n}\n\nfunction classifyLibraryObjectHelpTarget(objectUri: string): UriHelpTargetName {\n const path = stripObjectUriPrefix(objectUri);\n const chapterTarget = parseChapterTarget(objectUri);\n if (chapterTarget !== undefined) {\n switch (chapterTarget.kind) {\n case \"collection\":\n return \"chapter-collection-scope\";\n case \"chapter\":\n return \"chapter-scope\";\n case \"tree\":\n return \"chapter-tree-object\";\n case \"chapter-state\":\n return \"chapter-state-object\";\n case \"chapter-resource\":\n switch (chapterTarget.resource) {\n case \"source\":\n return hasObjectUriFragment(objectUri)\n ? \"chapter-source-range-object\"\n : \"chapter-source-object\";\n case \"summary\":\n return hasObjectUriFragment(objectUri)\n ? \"chapter-summary-range-object\"\n : \"chapter-summary-object\";\n case \"title\":\n return \"chapter-title-object\";\n }\n break;\n case \"lens\":\n case \"chapter-lens\":\n switch (chapterTarget.lens) {\n case \"chunk\":\n return \"chunk-scope\";\n case \"entity\":\n return \"entity-scope\";\n case \"source\":\n return \"chapter-source-object\";\n case \"summary\":\n return \"chapter-summary-object\";\n case \"triple\":\n return \"triple-scope\";\n }\n break;\n case \"triple-pattern-lens\":\n case \"chapter-triple-pattern-lens\":\n return \"triple-scope\";\n }\n }\n if (path === \"chunk\") {\n return \"chunk-scope\";\n }\n if (/^chunk\\/.+$/u.test(path)) {\n return \"chunk-object\";\n }\n if (path === \"entity\") {\n return \"entity-scope\";\n }\n if (/^entity\\/[^/]+\\/wikipage$/u.test(path)) {\n return \"entity-wikipage-object\";\n }\n if (/^entity\\/.+$/u.test(path)) {\n return \"entity-object\";\n }\n if (isTripleScopePath(path)) {\n return \"triple-scope\";\n }\n if (/^triple(?:\\/.*)?$/u.test(path)) {\n return \"triple-object\";\n }\n\n return \"archive-scope\";\n}\n\nfunction hasObjectUriFragment(objectUri: string): boolean {\n return objectUri.includes(\"#\");\n}\n\nfunction isReadOnlyLibraryChapterHelpTarget(\n targetName: UriHelpTargetName,\n): boolean {\n return (\n targetName === \"chapter-collection-scope\" ||\n targetName === \"chapter-scope\" ||\n targetName === \"chapter-source-object\" ||\n targetName === \"chapter-summary-object\" ||\n targetName === \"chapter-title-object\" ||\n targetName === \"chapter-tree-object\"\n );\n}\n\nfunction parseLibraryQueryArguments(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n action: string,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n if (!LIBRARY_QUERY_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The library scope ${uri} does not support \\`${action}\\`.`,\n formatWikiGraphHelpCommand(uri, action),\n ),\n );\n }\n if (\n target.objectUri === undefined &&\n action !== \"search\" &&\n action !== \"list\"\n ) {\n throw new Error(\n withHelpRoute(\n formatMissingLibraryQueryObjectUriMessage(action),\n formatWikiGraphHelpCommand(uri, action),\n ),\n );\n }\n\n const parsed = parseArchiveArguments(\n action as \"evidence\" | \"get\" | \"list\" | \"pack\" | \"related\" | \"search\",\n [\n target.objectUri === undefined\n ? \"wikg://__library_index__.wikg\"\n : formatTemporaryLocatedLibraryQueryUri(target.objectUri),\n ...tail,\n ],\n values,\n formatWikiGraphHelpCommand(uri, action),\n {\n ...optionalDefaultKinds(getLibraryQueryDefaultKinds(target.objectUri)),\n ...optionalTriplePattern(getLibraryQueryTriplePattern(target.objectUri)),\n },\n );\n\n if (parsed.kind !== \"archive\") {\n return parsed;\n }\n\n const temporaryArchivePath = parsed.args.archivePath;\n const replaceTemporaryUri = (\n value: string | undefined,\n ): string | undefined =>\n value === undefined\n ? undefined\n : value === temporaryArchivePath\n ? uri\n : value.replace(temporaryArchivePath, uri);\n\n return {\n ...parsed,\n args: {\n ...parsed.args,\n archivePath: uri,\n ...optionalObjectId(replaceTemporaryUri(parsed.args.objectId)),\n },\n };\n}\n\nfunction formatMissingLibraryQueryObjectUriMessage(action: string): string {\n return `The library \\`${action}\\` predicate requires a concrete library object URI.`;\n}\n\nfunction optionalDefaultKinds(\n defaultKinds: readonly CLIObjectKind[] | undefined,\n): { readonly defaultKinds?: readonly CLIObjectKind[] } {\n return defaultKinds === undefined ? {} : { defaultKinds };\n}\n\nfunction optionalTriplePattern(\n triplePattern: ArchiveTriplePattern | undefined,\n): { readonly triplePattern?: ArchiveTriplePattern } {\n return triplePattern === undefined ? {} : { triplePattern };\n}\n\nfunction optionalObjectId(objectId: string | undefined): {\n readonly objectId?: string;\n} {\n return objectId === undefined ? {} : { objectId };\n}\n\nfunction formatTemporaryLocatedLibraryQueryUri(objectUri: string): string {\n const path = stripObjectUriPrefix(objectUri);\n return `wikg://__library_index__.wikg/${path}`;\n}\n\nfunction getLibraryQueryDefaultKinds(\n objectUri: string | undefined,\n): readonly CLIObjectKind[] | undefined {\n if (objectUri === undefined) {\n return undefined;\n }\n const chapterTarget = parseChapterTarget(objectUri);\n if (chapterTarget !== undefined) {\n switch (chapterTarget.kind) {\n case \"collection\":\n case \"chapter\":\n return [\"chapter\"];\n case \"lens\":\n case \"chapter-lens\":\n return [chapterTarget.lens];\n case \"triple-pattern-lens\":\n case \"chapter-triple-pattern-lens\":\n return [\"triple\"];\n case \"chapter-resource\":\n return chapterTarget.resource === \"title\"\n ? undefined\n : [chapterTarget.resource];\n case \"chapter-state\":\n case \"tree\":\n return undefined;\n }\n }\n const path = stripObjectUriPrefix(objectUri);\n const [head] = path.split(\"/\");\n\n switch (head) {\n case \"chapter\":\n return [\"chapter\"];\n case \"chunk\":\n return [\"chunk\"];\n case \"entity\":\n return [\"entity\"];\n case \"source\":\n return [\"source\"];\n case \"summary\":\n return [\"summary\"];\n case \"triple\":\n return [\"triple\"];\n default:\n return undefined;\n }\n}\n\nfunction getLibraryQueryTriplePattern(\n objectUri: string | undefined,\n): ArchiveTriplePattern | undefined {\n if (objectUri === undefined) {\n return undefined;\n }\n const chapterTarget = parseChapterTarget(objectUri);\n if (chapterTarget === undefined) {\n return undefined;\n }\n\n switch (chapterTarget.kind) {\n case \"triple-pattern-lens\":\n case \"chapter-triple-pattern-lens\":\n return chapterTarget.pattern;\n default:\n return undefined;\n }\n}\n\nfunction resolveImplicitLibraryQueryAction(\n objectUri: string | undefined,\n query: string | undefined,\n): \"get\" | \"list\" | \"search\" {\n if (objectUri === undefined) {\n return query === undefined ? \"list\" : \"search\";\n }\n if (isLibraryScopeObjectUri(objectUri)) {\n return query === undefined ? \"list\" : \"search\";\n }\n\n return \"get\";\n}\n\nfunction isLibraryScopeObjectUri(objectUri: string): boolean {\n const chapterTarget = parseChapterTarget(objectUri);\n if (chapterTarget !== undefined) {\n switch (chapterTarget.kind) {\n case \"collection\":\n case \"chapter\":\n case \"lens\":\n case \"triple-pattern-lens\":\n case \"chapter-lens\":\n case \"chapter-triple-pattern-lens\":\n return true;\n case \"chapter-resource\":\n case \"chapter-state\":\n case \"tree\":\n return false;\n }\n }\n\n const path = stripObjectUriPrefix(objectUri);\n return /^(?:chunk|entity|source|summary|triple)$/u.test(path)\n ? true\n : isTripleScopePath(path);\n}\n\nfunction parseLibraryRegistryArguments(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n action: string,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const helpRoute = formatWikiGraphHelpCommand(uri, action);\n if (!LIBRARY_REGISTRY_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The library registry ${uri} does not support \\`${action}\\`.`,\n helpRoute,\n ),\n );\n }\n rejectExtraPositionals(action, tail, 0, helpRoute);\n rejectCommonLibraryFlags(action, values, helpRoute);\n rejectArchiveFlag(action, \"--input\", values.input, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveFlag(action, \"--json-input\", values[\"json-input\"], helpRoute);\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n if (action === \"add\") {\n if (values.path === undefined) {\n throw new Error(withHelpRoute(\"Missing --path <folder>.\", helpRoute));\n }\n return {\n args: { action: \"create\", json: values.json, path: values.path, target },\n help: false,\n kind: \"library\",\n };\n }\n rejectArchiveFlag(action, \"--path\", values.path, helpRoute);\n return {\n args: { action: \"list\", json: values.json, target },\n help: false,\n kind: \"library\",\n };\n}\n\nfunction parseLibraryPathArguments(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n action: string,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const helpRoute = formatWikiGraphHelpCommand(uri, action);\n if (!LIBRARY_PATH_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The library path object ${uri} does not support \\`${action}\\`.`,\n helpRoute,\n ),\n );\n }\n rejectCommonLibraryFlags(action, values, helpRoute);\n rejectArchiveFlag(action, \"--path\", values.path, helpRoute);\n rejectArchiveFlag(action, \"--input\", values.input, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveFlag(action, \"--json-input\", values[\"json-input\"], helpRoute);\n if (action === \"get\") {\n rejectExtraPositionals(action, tail, 0, helpRoute);\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n return {\n args: { action: \"get\", json: values.json, target },\n help: false,\n kind: \"library\",\n };\n }\n rejectExtraPositionals(action, tail, 1, helpRoute);\n if (tail[0] === undefined) {\n throw new Error(withHelpRoute(\"Missing path value.\", helpRoute));\n }\n if (target.kind === \"archive-path\") {\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n return {\n args: { action: \"set\", json: values.json, target, to: tail[0] },\n help: false,\n kind: \"library\",\n };\n }\n return {\n args: {\n action: \"rebind\",\n json: values.json,\n jsonl: values.jsonl,\n path: tail[0],\n target: getLibraryScopeForPathTarget(target),\n },\n help: false,\n kind: \"library\",\n };\n}\n\nfunction getLibraryScopeForPathTarget(\n target: ParsedWikiGraphLibraryUri,\n): ParsedWikiGraphLibraryUri {\n if (target.kind !== \"path\") {\n throw new Error(\"Internal error: expected library path target.\");\n }\n return {\n isDefault: target.isDefault,\n kind: \"scope\",\n ...(target.publicId === undefined ? {} : { publicId: target.publicId }),\n };\n}\n\nfunction parseLibraryArchiveCollectionArguments(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n action: string,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const helpRoute = formatWikiGraphHelpCommand(uri, action);\n if (!LIBRARY_ARCHIVE_COLLECTION_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The archive member collection ${uri} does not support \\`${action}\\`.`,\n helpRoute,\n ),\n );\n }\n rejectExtraPositionals(action, tail, 0, helpRoute);\n rejectCommonLibraryFlags(action, values, helpRoute);\n rejectArchiveFlag(action, \"--path\", values.path, helpRoute);\n rejectArchiveFlag(action, \"--json-input\", values[\"json-input\"], helpRoute);\n if (action === \"add\") {\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n if (values.input === undefined) {\n throw new Error(withHelpRoute(\"Missing --input <path>.\", helpRoute));\n }\n return {\n args: {\n action: \"add\",\n inputPath: values.input,\n json: values.json,\n target,\n ...(values.to === undefined ? {} : { to: values.to }),\n },\n help: false,\n kind: \"library\",\n };\n }\n rejectArchiveFlag(action, \"--input\", values.input, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n return {\n args: {\n action: action === \"get\" ? \"get\" : \"scan\",\n json: values.json,\n jsonl: values.jsonl,\n target,\n },\n help: false,\n kind: \"library\",\n };\n}\n\nfunction parseLibraryArchiveTreeArguments(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n action: string,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const helpRoute = formatWikiGraphHelpCommand(uri, action);\n if (!LIBRARY_ARCHIVE_TREE_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The archive member tree ${uri} is read-only and does not support \\`${action}\\`.`,\n helpRoute,\n ),\n );\n }\n rejectExtraPositionals(action, tail, 0, helpRoute);\n rejectCommonLibraryFlags(action, values, helpRoute);\n rejectArchiveFlag(action, \"--path\", values.path, helpRoute);\n rejectArchiveFlag(action, \"--input\", values.input, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveFlag(action, \"--json-input\", values[\"json-input\"], helpRoute);\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n return {\n args: {\n action: \"archive-tree\",\n ...(values.depth === undefined\n ? {}\n : {\n depth: parseNonNegativeIntegerFlag(\n values.depth,\n \"--depth\",\n helpRoute,\n ),\n }),\n json: values.json,\n ...(values.parent === undefined ? {} : { parent: values.parent }),\n target,\n },\n help: false,\n kind: \"library\",\n };\n}\n\nfunction parseLibraryIndexArguments(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n action: string,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const helpRoute = formatWikiGraphHelpCommand(uri, action);\n if (!LIBRARY_INDEX_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The library index ${uri} does not support \\`${action}\\`.`,\n formatWikiGraphHelpCommand(uri),\n ),\n );\n }\n\n rejectExtraPositionals(action, tail, 0, helpRoute);\n rejectCommonLibraryFlags(action, values, helpRoute);\n rejectArchiveFlag(action, \"--path\", values.path, helpRoute);\n rejectArchiveFlag(action, \"--input\", values.input, helpRoute);\n rejectArchiveFlag(action, \"--json-input\", values[\"json-input\"], helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n\n if (action === \"sync\") {\n if (values.json === true) {\n throw new Error(\n withHelpRoute(\n \"The `sync` command does not support --json because it streams progress events. Use --jsonl for line-delimited progress output.\",\n helpRoute,\n ),\n );\n }\n return {\n args: {\n action: \"sync-index\",\n ...(values.jsonl === undefined ? {} : { jsonl: values.jsonl }),\n target,\n },\n help: false,\n kind: \"library\",\n };\n }\n\n rejectArchiveFlag(action, \"--indexes\", values.indexes, helpRoute);\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n return {\n args: {\n action: action === \"clean\" ? \"clean-index\" : \"get-index\",\n ...(values.json === undefined ? {} : { json: values.json }),\n target,\n },\n help: false,\n kind: \"library\",\n };\n}\n\nfunction parseLibraryArchiveArguments(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n action: CLILibraryAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const helpRoute = formatWikiGraphHelpCommand(uri, action);\n if (!LIBRARY_ARCHIVE_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The library archive ${uri} does not support \\`${action}\\`.`,\n helpRoute,\n ),\n );\n }\n rejectCommonLibraryFlags(action, values, helpRoute, {\n allowConfirm: action === \"remove\",\n });\n rejectArchiveFlag(action, \"--path\", values.path, helpRoute);\n rejectArchiveFlag(action, \"--input\", values.input, helpRoute);\n rejectArchiveFlag(action, \"--json-input\", values[\"json-input\"], helpRoute);\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n rejectExtraPositionals(action, tail, 0, helpRoute);\n\n if (action === \"get\") {\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n return {\n args: { action, json: values.json, target },\n help: false,\n kind: \"library\",\n };\n }\n\n if (action === \"remove\") {\n if (values.confirm !== true) {\n throw new Error(withHelpRoute(\"Missing --confirm.\", helpRoute));\n }\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n return {\n args: { action, confirm: true, json: values.json, target },\n help: false,\n kind: \"library\",\n };\n }\n\n throw new Error(\n \"Internal error: unsupported action routed to library archive.\",\n );\n}\n\nfunction parseLibraryArchiveInspectArguments(\n uri: string,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n return parseArchiveArguments(\n \"inspect\",\n [uri, ...tail],\n values,\n formatWikiGraphHelpCommand(uri, \"inspect\"),\n );\n}\n\nfunction parseLibraryArchiveRootQueryArguments(\n uri: string,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n return parseArchiveArguments(\n \"search\",\n [uri, ...tail],\n values,\n formatWikiGraphHelpCommand(uri, \"search\"),\n );\n}\n\nfunction parseLibraryScopeArguments(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n action: CLILibraryAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const helpRoute = formatWikiGraphHelpCommand(uri, action);\n if (!LIBRARY_SCOPE_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The library scope ${uri} does not support \\`${action}\\`.`,\n helpRoute,\n ),\n );\n }\n rejectCommonLibraryFlags(action, values, helpRoute, {\n allowConfirm: action === \"remove\",\n });\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n rejectArchiveFlag(action, \"--json-input\", values[\"json-input\"], helpRoute);\n\n switch (action) {\n case \"remove\":\n rejectExtraPositionals(action, tail, 0, helpRoute);\n rejectArchiveFlag(action, \"--path\", values.path, helpRoute);\n rejectArchiveFlag(action, \"--input\", values.input, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n if (!target.isDefault && values.confirm !== true) {\n throw new Error(withHelpRoute(\"Missing --confirm.\", helpRoute));\n }\n return {\n args: {\n action,\n ...(values.confirm === undefined ? {} : { confirm: values.confirm }),\n json: values.json,\n target,\n },\n help: false,\n kind: \"library\",\n };\n case \"get\":\n case \"list\":\n rejectExtraPositionals(action, tail, 0, helpRoute);\n rejectArchiveFlag(action, \"--path\", values.path, helpRoute);\n rejectArchiveFlag(action, \"--input\", values.input, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n return {\n args: { action, json: values.json, target },\n help: false,\n kind: \"library\",\n };\n case \"set\":\n case \"put\":\n case \"delete\":\n case \"clean-index\":\n case \"get-index\":\n case \"sync-index\":\n case \"clear\":\n case \"archive-tree\":\n case \"add\":\n case \"create\":\n case \"rebind\":\n case \"scan\":\n throw new Error(\n \"Internal error: unsupported action routed to library scope.\",\n );\n }\n}\n\nfunction parseLibraryMetadataArguments(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n action: CLILibraryAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const helpRoute = formatWikiGraphHelpCommand(uri, action);\n if (!LIBRARY_METADATA_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The library metadata object ${uri} does not support \\`${action}\\`.`,\n helpRoute,\n ),\n );\n }\n rejectCommonLibraryFlags(action, values, helpRoute);\n rejectArchiveFlag(action, \"--path\", values.path, helpRoute);\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n\n switch (action) {\n case \"get\":\n case \"clear\":\n rejectExtraPositionals(action, tail, 0, helpRoute);\n return {\n args: { action, json: values.json, target },\n help: false,\n kind: \"library\",\n };\n case \"set\":\n rejectExtraPositionals(action, tail, 1, helpRoute);\n return {\n args: {\n action,\n inputPath: values.input,\n inputValue: tail[0],\n json: values.json,\n jsonInputValue: values[\"json-input\"],\n target,\n },\n help: false,\n kind: \"library\",\n };\n case \"put\":\n rejectExtraPositionals(action, tail, 2, helpRoute);\n return {\n args: {\n action,\n inputPath: values.input,\n inputValue: tail[1],\n json: values.json,\n jsonInputValue: values[\"json-input\"],\n key: tail[0],\n target,\n },\n help: false,\n kind: \"library\",\n };\n case \"delete\":\n rejectExtraPositionals(action, tail, 1, helpRoute);\n return {\n args: { action, json: values.json, key: tail[0], target },\n help: false,\n kind: \"library\",\n };\n case \"create\":\n case \"list\":\n case \"remove\":\n case \"add\":\n case \"rebind\":\n case \"clean-index\":\n case \"get-index\":\n case \"sync-index\":\n case \"scan\":\n case \"archive-tree\":\n throw new Error(\n \"Internal error: scope action routed to library metadata.\",\n );\n }\n}\n\nfunction rejectCommonLibraryFlags(\n action: string,\n values: ArchiveArgumentValues,\n helpRoute: string,\n options: { readonly allowConfirm?: boolean } = {},\n): void {\n rejectArchiveFlag(action, \"--query\", values.query, helpRoute);\n rejectArchiveFlag(action, \"--limit\", values.limit, helpRoute);\n rejectArchiveFlag(action, \"--cursor\", values.cursor, helpRoute);\n rejectArchiveFlag(action, \"--context\", values.context, helpRoute);\n rejectArchiveFlag(action, \"--evidence\", values.evidence, helpRoute);\n rejectArchiveFlag(action, \"--llm\", values.llm, helpRoute);\n rejectArchiveFlag(action, \"--output\", values.output, helpRoute);\n rejectArchiveFlag(\n action,\n \"--output-format\",\n values[\"output-format\"],\n helpRoute,\n );\n rejectArchiveBooleanFlag(action, \"--all\", values.all, helpRoute);\n rejectArchiveBooleanFlag(action, \"--backlinks\", values.backlinks, helpRoute);\n rejectArchiveBooleanFlag(action, \"--reverse\", values.reverse, helpRoute);\n if (options.allowConfirm !== true) {\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n }\n}\n\nfunction rejectExtraPositionals(\n action: string,\n positionals: readonly string[],\n expected: number,\n helpRoute: string,\n): void {\n if (positionals.length > expected) {\n throw new Error(\n withHelpRoute(\n `The \\`${action}\\` command received too many positional arguments.`,\n helpRoute,\n ),\n );\n }\n}\n\nfunction isLibraryAction(action: string): action is CLILibraryAction {\n return (\n action === \"add\" ||\n action === \"archive-tree\" ||\n action === \"clear\" ||\n action === \"clean-index\" ||\n action === \"create\" ||\n action === \"delete\" ||\n action === \"get\" ||\n action === \"get-index\" ||\n action === \"list\" ||\n action === \"put\" ||\n action === \"rebind\" ||\n action === \"remove\" ||\n action === \"scan\" ||\n action === \"set\" ||\n action === \"sync-index\"\n );\n}\n\nfunction validateTargetAction(\n uri: string,\n label: string,\n actions: ReadonlySet<string>,\n action: CLILibraryAction,\n): void {\n if (!actions.has(action)) {\n throw new Error(\n withHelpRoute(\n `The ${label} ${uri} does not support \\`${action}\\`.`,\n formatWikiGraphHelpCommand(uri),\n ),\n );\n }\n}\n\nfunction validateLibraryActionForTarget(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n action: CLILibraryAction,\n): void {\n const helpRoute = formatWikiGraphHelpCommand(uri);\n if (target.kind === \"metadata\") {\n if (!LIBRARY_METADATA_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The library metadata object ${uri} does not support \\`${action}\\`.`,\n helpRoute,\n ),\n );\n }\n return;\n }\n\n if (target.kind === \"archive\") {\n if (!LIBRARY_ARCHIVE_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The library archive ${uri} does not support \\`${action}\\`.`,\n helpRoute,\n ),\n );\n }\n return;\n }\n if (target.kind === \"registry\") {\n validateTargetAction(\n uri,\n \"library registry\",\n LIBRARY_REGISTRY_ACTIONS,\n action,\n );\n return;\n }\n\n if (target.kind === \"path\") {\n validateTargetAction(\n uri,\n \"library path object\",\n LIBRARY_PATH_ACTIONS,\n action,\n );\n return;\n }\n\n if (target.kind === \"archive-collection\") {\n validateTargetAction(\n uri,\n \"archive member collection\",\n LIBRARY_ARCHIVE_COLLECTION_ACTIONS,\n action,\n );\n return;\n }\n\n if (target.kind === \"archive-tree\") {\n validateTargetAction(\n uri,\n \"archive member tree\",\n LIBRARY_ARCHIVE_TREE_ACTIONS,\n action,\n );\n return;\n }\n\n if (target.kind === \"archive-path\") {\n validateTargetAction(\n uri,\n \"archive path object\",\n LIBRARY_ARCHIVE_PATH_ACTIONS,\n action,\n );\n return;\n }\n\n if (!LIBRARY_SCOPE_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The library scope ${uri} does not support \\`${action}\\`.`,\n helpRoute,\n ),\n );\n }\n if (action === \"create\" && !target.isDefault) {\n throw new Error(\n withHelpRoute(\"Create libraries from wikg://lib.\", helpRoute),\n );\n }\n if (action === \"remove\" && target.isDefault) {\n throw new Error(\n withHelpRoute(\n \"The default library cannot be removed. Use a non-default library URI such as wikg://lib/<lib-id> for library registry removal.\",\n helpRoute,\n ),\n );\n }\n}\n","import type {\n CLIArguments,\n CLIArchiveArguments,\n CLIArchiveChapterArguments,\n CLIArchiveCoverArguments,\n CLIArchiveIndexArguments,\n CLIArchiveMetadataArguments,\n CLILibraryArguments,\n CLIGcArguments,\n CLILegacyArguments,\n CLILocalConfigArguments,\n CLIMaintenanceArguments,\n CLIObjectMetadataArguments,\n CLIQueueArguments,\n} from \"../args/index.js\";\n\nexport async function runArchiveCommand(\n args: CLIArchiveArguments,\n): Promise<void> {\n const command = await import(\"./archive-command/index.js\");\n\n return command.runArchiveCommand(args);\n}\n\nexport async function runArchiveChapterCommand(\n args: CLIArchiveChapterArguments,\n): Promise<void> {\n const command = await import(\"./archive-command/chapter.js\");\n\n return command.runArchiveChapterCommand(args);\n}\n\nexport async function runArchiveIndexCommand(\n args: CLIArchiveIndexArguments,\n): Promise<void> {\n const command = await import(\"./archive-command/search-index.js\");\n\n return command.runArchiveIndexCommand(args);\n}\n\nexport async function runArchiveCoverCommand(\n args: CLIArchiveCoverArguments,\n): Promise<void> {\n const command = await import(\"./archive-command/maintenance.js\");\n\n return command.runArchiveCoverCommand(args);\n}\n\nexport async function runArchiveMetaCommand(\n args: CLIArchiveMetadataArguments,\n): Promise<void> {\n const command = await import(\"./archive-command/maintenance.js\");\n\n return command.runArchiveMetaCommand(args);\n}\n\nexport async function runConvertCommand(args: CLIArguments): Promise<void> {\n const command = await import(\"./convert.js\");\n\n return command.runConvertCommand(args);\n}\n\nexport async function runGcCommand(args: CLIGcArguments): Promise<void> {\n const command = await import(\"./gc.js\");\n\n return command.runGcCommand(args);\n}\n\nexport async function runLegacyCommand(\n args: CLILegacyArguments,\n): Promise<void> {\n const command = await import(\"./legacy.js\");\n\n return command.runLegacyCommand(args);\n}\n\nexport async function runMaintenanceCommand(\n args: CLIMaintenanceArguments,\n): Promise<void> {\n const command = await import(\"./maintenance.js\");\n\n return command.runMaintenanceCommand(args);\n}\n\nexport async function runLocalConfigCommand(\n args: CLILocalConfigArguments,\n): Promise<void> {\n const command = await import(\"./local-config.js\");\n\n return command.runLocalConfigCommand(args);\n}\n\nexport async function runLibraryCommand(\n args: CLILibraryArguments,\n): Promise<void> {\n const command = await import(\"./library.js\");\n\n return command.runLibraryCommand(args);\n}\n\nexport async function runObjectMetadataCommand(\n args: CLIObjectMetadataArguments,\n): Promise<void> {\n const command = await import(\"./object-metadata.js\");\n\n return command.runObjectMetadataCommand(args);\n}\n\nexport async function runQueueCommand(args: CLIQueueArguments): Promise<void> {\n const command = await import(\"./queue/index.js\");\n\n return command.runQueueCommand(args);\n}\n\nexport async function runQueueWorker(): Promise<void> {\n const command = await import(\"./queue/index.js\");\n\n return command.runQueueWorker();\n}\n","import { renderMainHelpText } from \"../args/help.js\";\nimport { parseCLIArguments } from \"../args/index.js\";\nimport {\n runArchiveChapterCommand,\n runArchiveCommand,\n runArchiveCoverCommand,\n runArchiveIndexCommand,\n runArchiveMetaCommand,\n runConvertCommand,\n runGcCommand,\n runLegacyCommand,\n runLibraryCommand,\n runLocalConfigCommand,\n runMaintenanceCommand,\n runObjectMetadataCommand,\n runQueueCommand,\n} from \"../commands/index.js\";\nimport {\n formatCLIJSON,\n formatCLIJSONLine,\n getRelativeArchiveUriResolution,\n} from \"../support/index.js\";\nimport { readCLIVersion } from \"../support/index.js\";\nimport { isWikiGraphHomeTarget } from \"../runtime/home-target.js\";\nimport {\n formatError,\n LLMPaymentRequiredError,\n WikiGraphError,\n} from \"wiki-graph-sdk\";\nimport { getWikiGraphSDK } from \"../runtime/context.js\";\n\nexport interface WikiGraphCLIDispatchInput {\n readonly argv: readonly string[];\n readonly stdinIsTTY?: boolean | undefined;\n readonly stderr: NodeJS.WritableStream;\n readonly stdout: NodeJS.WritableStream;\n}\n\nexport interface WikiGraphCLIDispatchResult {\n readonly exitCode: number;\n}\n\nexport async function dispatchWikiGraphCLI(\n input: WikiGraphCLIDispatchInput,\n): Promise<WikiGraphCLIDispatchResult> {\n try {\n if (shouldPrintDefaultHelp(input.argv, input.stdinIsTTY)) {\n input.stdout.write(`${renderMainHelpText()}\\n`);\n return { exitCode: 0 };\n }\n\n const parsed = parseCLIArguments([...input.argv]);\n\n if (parsed.help) {\n input.stdout.write(`${parsed.helpText}\\n`);\n return { exitCode: 0 };\n }\n\n switch (parsed.kind) {\n case \"version\":\n input.stdout.write(`${readCLIVersion()}\\n`);\n return { exitCode: 0 };\n }\n\n if (\n parsed.kind !== \"maintenance-command\" ||\n !isWikiGraphHomeTarget(parsed.args.target)\n ) {\n await getWikiGraphSDK().run(() => undefined);\n }\n\n switch (parsed.kind) {\n case \"convert\":\n await runConvertCommand(parsed.args);\n return { exitCode: 0 };\n case \"meta\":\n await runArchiveMetaCommand(parsed.args);\n return { exitCode: 0 };\n case \"cover\":\n await runArchiveCoverCommand(parsed.args);\n return { exitCode: 0 };\n case \"object-metadata\":\n await runObjectMetadataCommand(parsed.args);\n return { exitCode: 0 };\n case \"library\":\n await runLibraryCommand(parsed.args);\n return { exitCode: 0 };\n case \"chapter\":\n await runArchiveChapterCommand(parsed.args);\n return { exitCode: 0 };\n case \"archive\":\n await runArchiveCommand(parsed.args);\n return { exitCode: 0 };\n case \"archive-index\":\n await runArchiveIndexCommand(parsed.args);\n return { exitCode: 0 };\n case \"queue\":\n await runQueueCommand(parsed.args);\n return { exitCode: 0 };\n case \"gc\":\n await runGcCommand(parsed.args);\n return { exitCode: 0 };\n case \"legacy\":\n await runLegacyCommand(parsed.args);\n return { exitCode: 0 };\n case \"maintenance-command\":\n await runMaintenanceCommand(parsed.args);\n return { exitCode: 0 };\n case \"local-config\":\n await runLocalConfigCommand(parsed.args);\n return { exitCode: 0 };\n }\n } catch (error) {\n if (shouldWriteJSONError(input.argv)) {\n input.stdout.write(\n formatCLIJSON(createCLIErrorObject(error, input.argv)),\n );\n return { exitCode: 1 };\n }\n if (shouldWriteJSONLError(input.argv)) {\n input.stdout.write(\n formatCLIJSONLine(createCLIErrorObject(error, input.argv)),\n );\n return { exitCode: 1 };\n }\n input.stderr.write(`${formatCLIError(error, input.argv)}\\n`);\n return { exitCode: 1 };\n }\n}\n\nfunction shouldPrintDefaultHelp(\n argv: readonly string[],\n stdinIsTTY: boolean | undefined,\n): boolean {\n return argv.length === 0 && stdinIsTTY === true;\n}\n\nfunction formatCLIError(error: unknown, argv: readonly string[]): string {\n if (error instanceof LLMPaymentRequiredError) {\n return \"LLM payment required. Check your provider billing status or account balance.\";\n }\n\n const message = formatTerminalRemediation(error, formatError(error));\n const relativeResolution = hasErrorCode(error, \"ENOENT\")\n ? getRelativeArchiveUriResolution(argv[0] ?? \"\")\n : undefined;\n if (relativeResolution === undefined) {\n return message;\n }\n\n return `${message}\\nArchive URI \\`${relativeResolution.inputUri}\\` is relative to the current working directory:\\n ${relativeResolution.workingDirectory}\\nResolved archive path:\\n ${relativeResolution.resolvedArchivePath}\\nSee: wg help uri`;\n}\n\nfunction formatTerminalRemediation(error: unknown, message: string): string {\n if (error instanceof WikiGraphError) {\n const chapterId = error.details.chapterId;\n switch (error.code) {\n case \"chapter_has_children\":\n return `${message} Use --recursive to remove it and its descendants.`;\n case \"chapter_key_missing\":\n return \"Missing chapter key in TOC. Run a writable chapter operation or `wg maintenance upgrade` before using read-only chapter paths.\";\n case \"chapter_not_found_ids\":\n return `${message} Use \\`wg <archive-uri>/chapter list\\` to discover chapter ids.`;\n case \"chapter_not_found_uris\":\n return `${message} Use \\`wg <archive-uri>/chapter\\` to discover chapter URIs.`;\n case \"parent_chapter_not_found\":\n return `${message} Use \\`wg <archive-uri>/chapter\\` to discover chapter URIs.`;\n case \"chapter_summary_missing_source\":\n return `${message} Run \\`wg wikg://local/job add --input <chapter-uri> --task reading-summary --accept-cost\\` before export, or inspect the chapter with \\`wg <archive-uri>/chapter/${chapterId}/source get\\`.`;\n case \"chapter_summary_missing_tree\":\n return `${message} Run \\`wg wikg://local/job add --input <chapter-uri> --task reading-summary --accept-cost\\` before export, or inspect the archive with \\`wg <archive-uri>/chapter/tree get\\`.`;\n case \"graph_node_not_found\":\n return `${message} Use \\`wg <archive-uri>/chapter/${chapterId}/chunk list\\` to discover chunk ids.`;\n case \"home_upgrade_blocked\":\n return `${message} Stop the active operation, then run \\`wg maintenance upgrade home\\`. See: \\`wg maintenance upgrade --help\\`.`;\n case \"library_query_unindexed\":\n return `${message} Build missing chapter index artifacts, or rerun with --skip-unindexed to search indexed chapters only.`;\n case \"summary_not_completed\":\n return `${message} Use \\`wg wikg://<archive.wikg>/chapter list\\` to discover chapter ids, then \\`wg wikg://<archive.wikg>/chapter/${chapterId}/summary get\\` after summary is ready.`;\n case \"uri_expected\":\n break;\n }\n }\n\n if (\n message.startsWith(\n \"Expected a Wiki Graph URI with a .wikg archive locator:\",\n ) &&\n message.includes(\"\\nExample:\")\n ) {\n return `${message}\\nSee: wg help uri`;\n }\n const roleMatch =\n /^Role filtering is only available for related entities: (.+)$/u.exec(\n message,\n );\n return roleMatch === null\n ? message\n : `--role is only available for entity related: ${roleMatch[1]}`;\n}\n\nfunction createCLIErrorObject(\n error: unknown,\n argv: readonly string[],\n): {\n readonly error: {\n readonly message: string;\n readonly type: string;\n };\n} {\n return {\n error: {\n message: formatCLIError(error, argv),\n type:\n error instanceof LLMPaymentRequiredError\n ? \"llm_payment_required\"\n : \"error\",\n },\n };\n}\n\nfunction hasErrorCode(error: unknown, code: string): boolean {\n const visited = new Set<unknown>();\n let current: unknown = error;\n\n while (current !== undefined && !visited.has(current)) {\n visited.add(current);\n if (\n current instanceof Error &&\n \"code\" in current &&\n (current as Error & { readonly code?: unknown }).code === code\n ) {\n return true;\n }\n current = current instanceof Error ? current.cause : undefined;\n }\n\n return false;\n}\n\nfunction shouldWriteJSONError(argv: readonly string[]): boolean {\n return argv.some((item) => item === \"--json\" || item.startsWith(\"--json=\"));\n}\n\nfunction shouldWriteJSONLError(argv: readonly string[]): boolean {\n return argv.includes(\"--jsonl\");\n}\n","import {\n runWikiGraphCLIWithEntryPolicy,\n type RunWikiGraphCLIInput,\n} from \"./runner.js\";\nimport type { WikiGraphEntryEnvPolicy } from \"../runtime/entry-context.js\";\nimport { installNodeWikiGraphPlatform } from \"../runtime/node-platform.js\";\n\nexport async function main(\n input: RunWikiGraphCLIInput = {},\n envPolicy: WikiGraphEntryEnvPolicy = \"production\",\n): Promise<void> {\n installNodeWikiGraphPlatform();\n const result = await runWikiGraphCLIWithEntryPolicy(input, envPolicy);\n process.exitCode = result.exitCode;\n}\n"],"mappings":"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","names":["resolve","join","resolve","init_uri","init_uri","init_uri","init_uri","init_evidence","init_page","init_evidence","init_page","DEFAULT_GET_EVIDENCE_LIMIT","init_types","parseWikiGraphLibraryUri","location","init_uri","parseLocatedWikiGraphUri","DEFAULT_GET_EVIDENCE_LIMIT","init_types","init_uri","init_uri","init_types","init_uri","formatWikiGraphLibraryUri","parseWikiGraphLibraryUri","context","readPage","existsSync","join","resolve","formatLocatedChapterUri","homedir","join","formatLocatedChapterUri","requireChapterPath","homedir","join","resolve","maintenance_exports","init_maintenance","local_config_exports","init_local_config","readFile","formatWikiGraphLibraryUri","INDEX_PROGRESS_OUTPUT_INTERVAL_MS","formatIndexCounter","result","parseJSONInput","readFile","writeMetadataMap","readMetadataInput","parseMetadataMap","normalizeMetadataKey","readRawInput","parseJSONInput","formatMetadataTextValue","Writable","createWikiGraphSDK","existsSync","dirname","join","parse","resolve","resolve","parse","join","dirname","existsSync","parseChapterPath","parseChapterPath","WIKI_GRAPH_URI_PREFIX","value","parseWikiGraphLibraryUri","parseWikiGraphLibraryUri","parseWikiGraphLibraryUri","parseWikiGraphLibraryUri","runArchiveCommand","runArchiveChapterCommand","runArchiveIndexCommand","runArchiveCoverCommand","runArchiveMetaCommand","runConvertCommand","runGcCommand","runLegacyCommand","runMaintenanceCommand","runLocalConfigCommand","runLibraryCommand","runObjectMetadataCommand","runQueueCommand","runConvertCommand","runArchiveMetaCommand","runArchiveCoverCommand","runObjectMetadataCommand","runLibraryCommand","runArchiveChapterCommand","runArchiveCommand","runArchiveIndexCommand","runQueueCommand","runGcCommand","runLegacyCommand","runMaintenanceCommand","runLocalConfigCommand","createWikiGraphSDK","Writable"]}
|