@rabbitai-lab/agent-browser-mcp 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server.ts","../src/executor.ts","../src/utils.ts","../src/tools/navigation.ts","../src/tools/schemas.ts","../src/tools/interaction.ts","../src/tools/query.ts","../src/tools/visual.ts","../src/tools/mouse.ts","../src/tools/keyboard.ts","../src/tools/browser-settings.ts","../src/tools/network.ts","../src/tools/storage.ts","../src/tools/tabs.ts","../src/tools/debug.ts","../src/tools/auth.ts","../src/tools/batch.ts","../src/tools/sessions.ts","../src/tools/dialog.ts","../src/tools/confirmation.ts","../src/tools/state.ts","../src/tools/dashboard.ts","../src/tools/react.ts","../src/tools/misc.ts","../src/tools/index.ts","../src/index.ts"],"sourcesContent":["import { createServer, IncomingMessage, ServerResponse, Server as HttpServer } from 'http';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';\nimport { randomUUID } from 'crypto';\nimport { CliExecutor } from './executor.js';\nimport { getRequestBody } from './utils.js';\nimport { registerAllTools } from './tools/index.js';\n\nexport interface McpServerInstance {\n httpServer: HttpServer;\n executor: CliExecutor;\n close: () => Promise<void>;\n}\n\ninterface Session {\n transport: StreamableHTTPServerTransport;\n server: McpServer;\n}\n\n/**\n * 创建一个注册了所有 tools 的 McpServer\n */\nfunction createMcpServerWithTools(executor: CliExecutor): McpServer {\n const server = new McpServer(\n { name: 'agent-browser', version: '0.1.0' },\n { capabilities: { tools: {} } },\n );\n registerAllTools(server, executor);\n return server;\n}\n\n/**\n * 创建 MCP Server(支持依赖注入,用于单元测试的 InMemoryTransport 模式)\n */\nexport function createMcpServer(executor: CliExecutor): {\n server: McpServer;\n transport: StreamableHTTPServerTransport;\n} {\n const server = createMcpServerWithTools(executor);\n const transport = new StreamableHTTPServerTransport({\n sessionIdGenerator: () => randomUUID(),\n });\n return { server, transport };\n}\n\n/**\n * 启动完整的 HTTP + MCP Server(有状态 session 模式)\n */\nexport async function startServer(port: number, executor?: CliExecutor): Promise<McpServerInstance> {\n const cliExecutor = executor ?? new CliExecutor();\n const sessions = new Map<string, Session>();\n\n const httpServer = createServer(async (req: IncomingMessage, res: ServerResponse) => {\n const url = new URL(req.url ?? '/', `http://localhost:${port}`);\n\n if (url.pathname !== '/mcp') {\n res.writeHead(404, { 'Content-Type': 'application/json' });\n res.end(JSON.stringify({ error: 'Not found. Use POST /mcp for MCP requests.' }));\n return;\n }\n\n try {\n const sessionId = req.headers['mcp-session-id'] as string | undefined;\n\n if (sessionId && sessions.has(sessionId)) {\n // 已有 session,路由到对应 transport\n const session = sessions.get(sessionId)!;\n if (req.method === 'POST') {\n const body = await getRequestBody(req);\n await session.transport.handleRequest(req, res, body);\n } else {\n await session.transport.handleRequest(req, res);\n }\n } else if (req.method === 'POST') {\n // 新 session:创建 transport + server\n let newSessionId: string | undefined;\n\n const transport = new StreamableHTTPServerTransport({\n sessionIdGenerator: () => {\n const id = randomUUID();\n newSessionId = id;\n return id;\n },\n });\n\n const server = createMcpServerWithTools(cliExecutor);\n await server.connect(transport);\n\n const body = await getRequestBody(req);\n await transport.handleRequest(req, res, body);\n\n // 请求处理后保存 session\n if (newSessionId) {\n sessions.set(newSessionId, { transport, server });\n }\n\n transport.onclose = () => {\n if (newSessionId) {\n sessions.delete(newSessionId);\n }\n };\n } else if (req.method === 'GET') {\n // GET 请求无 session,返回 400\n res.writeHead(400, { 'Content-Type': 'application/json' });\n res.end(JSON.stringify({ error: 'Valid session ID required for GET requests' }));\n } else if (req.method === 'DELETE') {\n // DELETE 无 session,直接结束\n res.writeHead(200);\n res.end();\n }\n } catch (error) {\n const errMsg = error instanceof Error ? `${error.message}\\n${error.stack}` : String(error);\n console.error('[MCP] Request handling error:', errMsg);\n if (!res.headersSent) {\n res.writeHead(500, { 'Content-Type': 'text/plain' });\n res.end(errMsg);\n }\n }\n });\n\n const close = async () => {\n await cliExecutor.close();\n for (const [, session] of sessions) {\n await session.transport.close();\n }\n sessions.clear();\n httpServer.close();\n };\n\n return new Promise((resolve) => {\n httpServer.listen(port, () => {\n resolve({ httpServer, executor: cliExecutor, close });\n });\n });\n}\n","import { spawn, ChildProcess } from 'child_process';\nimport { buildGlobalArgs, type GlobalOptions } from './utils.js';\n\nexport interface CliResult {\n stdout: string;\n stderr: string;\n exitCode: number;\n error?: string;\n}\n\nexport interface CliExecutorOptions {\n cliPath?: string;\n timeout?: number;\n}\n\nconst DEFAULT_OPTIONS: Required<CliExecutorOptions> = {\n cliPath: 'agent-browser',\n timeout: 120_000,\n};\n\nexport class CliExecutor {\n private options: Required<CliExecutorOptions>;\n private activeProcesses = new Set<ChildProcess>();\n\n constructor(options?: CliExecutorOptions) {\n this.options = { ...DEFAULT_OPTIONS, ...options };\n }\n\n async execute(command: string, globalOptions?: GlobalOptions): Promise<CliResult> {\n const cliPath = this.options.cliPath;\n const timeout = this.options.timeout;\n\n // 拼接全局选项到命令字符串\n const globalArgs = buildGlobalArgs(globalOptions);\n const fullCommand = globalArgs ? `${command} ${globalArgs}` : command;\n\n return new Promise((resolve) => {\n const proc = spawn(cliPath, [fullCommand], {\n shell: true,\n env: { ...process.env },\n });\n\n this.activeProcesses.add(proc);\n\n let stdout = '';\n let stderr = '';\n let settled = false;\n\n const finish = (error?: string) => {\n if (settled) return;\n settled = true;\n this.activeProcesses.delete(proc);\n resolve({ stdout, stderr, exitCode: proc.exitCode ?? -1, error });\n };\n\n proc.stdout?.on('data', (chunk: Buffer) => {\n stdout += chunk.toString();\n });\n\n proc.stderr?.on('data', (chunk: Buffer) => {\n stderr += chunk.toString();\n });\n\n proc.on('close', (code) => {\n if (code === 0) {\n finish();\n } else {\n finish(stderr || `Process exited with code ${code}`);\n }\n });\n\n proc.on('error', (err) => {\n finish(err.message);\n });\n\n // 超时处理\n setTimeout(() => {\n if (!settled) {\n proc.kill('SIGTERM');\n finish(`Command timed out after ${timeout}ms`);\n }\n }, timeout);\n });\n }\n\n async close(): Promise<void> {\n for (const proc of this.activeProcesses) {\n proc.kill('SIGTERM');\n }\n this.activeProcesses.clear();\n }\n}\n","import { IncomingMessage } from 'http';\n\n/**\n * Shell 转义:对包含特殊字符的字符串加单引号包裹\n */\nexport function shellEscape(str: string): string {\n if (!str) return \"''\";\n // 纯字母数字、点、斜杠、冒号、@、下划线、短横线不需要转义\n if (/^[a-zA-Z0-9./:@_\\-+%*=~]+$/.test(str)) return str;\n // 用单引号包裹,内部单引号替换为 '\\''\n return \"'\" + str.replace(/'/g, \"'\\\\''\") + \"'\";\n}\n\n/**\n * 从 HTTP 请求中读取 JSON body\n */\nexport function getRequestBody(req: IncomingMessage): Promise<unknown> {\n return new Promise((resolve, reject) => {\n const chunks: Buffer[] = [];\n req.on('data', (chunk: Buffer) => chunks.push(chunk));\n req.on('end', () => {\n const raw = Buffer.concat(chunks).toString('utf-8');\n if (!raw) {\n resolve(undefined);\n return;\n }\n try {\n resolve(JSON.parse(raw));\n } catch (e) {\n reject(new Error(`Invalid JSON body: ${(e as Error).message}`));\n }\n });\n req.on('error', reject);\n });\n}\n\n/**\n * 从全局选项对象构建 CLI flags 字符串数组\n */\nexport interface GlobalOptions {\n session?: string;\n headed?: boolean;\n cdp?: string;\n profile?: string;\n proxy?: string;\n json?: boolean;\n debug?: boolean;\n}\n\nexport function buildGlobalArgs(options?: GlobalOptions): string {\n if (!options) return '';\n const args: string[] = [];\n\n if (options.session) args.push(`--session ${shellEscape(options.session)}`);\n if (options.headed) args.push('--headed');\n if (options.cdp) args.push(`--cdp ${shellEscape(options.cdp)}`);\n if (options.profile) args.push(`--profile ${shellEscape(options.profile)}`);\n if (options.proxy) args.push(`--proxy ${shellEscape(options.proxy)}`);\n if (options.json) args.push('--json');\n if (options.debug) args.push('--debug');\n\n return args.join(' ');\n}\n\n/**\n * 构建 boolean flag 字符串\n */\nexport function boolFlag(name: string, value: boolean | undefined): string {\n return value ? `--${name}` : '';\n}\n\n/**\n * 构建 key-value flag 字符串\n */\nexport function kvFlag(name: string, value: string | number | undefined): string {\n if (value === undefined) return '';\n return `--${name} ${shellEscape(String(value))}`;\n}\n\n/**\n * 从参数对象中分离全局选项\n */\nexport function extractGlobalOptions(args: Record<string, unknown>): { global: GlobalOptions; rest: Record<string, unknown> } {\n const globalKeys = new Set(['session', 'headed', 'cdp', 'profile', 'proxy', 'json', 'debug']);\n const global: GlobalOptions = {};\n const rest: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(args)) {\n if (globalKeys.has(key)) {\n (global as Record<string, unknown>)[key] = value;\n } else {\n rest[key] = value;\n }\n }\n\n return { global, rest };\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { shellEscape, extractGlobalOptions, boolFlag, kvFlag } from '../utils.js';\nimport { CliExecutor } from '../executor.js';\nimport { GlobalOptionsSchema, SelectorSchema } from './schemas.js';\n\n// ===== 命令构建纯函数(用于单元测试)=====\n\nexport function buildOpenCommand(params: Record<string, unknown>): string {\n const parts = [`open ${shellEscape(params.url as string)}`];\n if (params.headers) parts.push(`--headers ${shellEscape(params.headers as string)}`);\n return parts.join(' ');\n}\n\nexport function buildConnectCommand(params: Record<string, unknown>): string {\n return `connect ${shellEscape(params.target as string)}`;\n}\n\nexport function buildCloseCommand(params: Record<string, unknown>): string {\n const parts = ['close'];\n if (params.all) parts.push('--all');\n return parts.join(' ');\n}\n\nexport function buildBackCommand(): string { return 'back'; }\nexport function buildForwardCommand(): string { return 'forward'; }\nexport function buildReloadCommand(): string { return 'reload'; }\n\n// ===== Tool 注册 =====\n\nexport function registerNavigationTools(server: McpServer, executor: CliExecutor): void {\n server.tool(\n 'open',\n 'Navigate to a URL',\n {\n url: z.string().describe('URL to navigate to'),\n headers: z.string().optional().describe('HTTP headers as JSON string'),\n ...GlobalOptionsSchema,\n },\n async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const cmd = buildOpenCommand(rest);\n const result = await executor.execute(cmd, global);\n return {\n content: [{ type: 'text' as const, text: result.stdout || 'OK' }],\n ...(result.error ? { isError: true } : {}),\n };\n },\n );\n\n server.tool(\n 'back',\n 'Go back to the previous page',\n { ...GlobalOptionsSchema },\n async (args) => {\n const { global } = extractGlobalOptions(args);\n const result = await executor.execute(buildBackCommand(), global);\n return {\n content: [{ type: 'text' as const, text: result.stdout || 'OK' }],\n ...(result.error ? { isError: true } : {}),\n };\n },\n );\n\n server.tool(\n 'forward',\n 'Go forward to the next page',\n { ...GlobalOptionsSchema },\n async (args) => {\n const { global } = extractGlobalOptions(args);\n const result = await executor.execute(buildForwardCommand(), global);\n return {\n content: [{ type: 'text' as const, text: result.stdout || 'OK' }],\n ...(result.error ? { isError: true } : {}),\n };\n },\n );\n\n server.tool(\n 'reload',\n 'Reload the current page',\n { ...GlobalOptionsSchema },\n async (args) => {\n const { global } = extractGlobalOptions(args);\n const result = await executor.execute(buildReloadCommand(), global);\n return {\n content: [{ type: 'text' as const, text: result.stdout || 'OK' }],\n ...(result.error ? { isError: true } : {}),\n };\n },\n );\n\n server.tool(\n 'close',\n 'Close the browser session',\n {\n all: z.boolean().optional().describe('Close every browser session'),\n ...GlobalOptionsSchema,\n },\n async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const cmd = buildCloseCommand(rest);\n const result = await executor.execute(cmd, global);\n return {\n content: [{ type: 'text' as const, text: result.stdout || 'OK' }],\n ...(result.error ? { isError: true } : {}),\n };\n },\n );\n\n server.tool(\n 'connect',\n 'Connect to a browser via CDP (Chrome DevTools Protocol)',\n {\n target: z.string().describe('CDP port number or URL to connect to'),\n ...GlobalOptionsSchema,\n },\n async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const cmd = buildConnectCommand(rest);\n const result = await executor.execute(cmd, global);\n return {\n content: [{ type: 'text' as const, text: result.stdout || 'OK' }],\n ...(result.error ? { isError: true } : {}),\n };\n },\n );\n}\n","import { z } from 'zod';\n\n/**\n * 全局选项 — 每个 tool 都可用的 CLI flags\n */\nexport const GlobalOptionsSchema = {\n session: z.string().optional().describe('Isolated browser session name (--session)'),\n headed: z.boolean().optional().describe('Show browser window, not headless (--headed)'),\n cdp: z.string().optional().describe('Connect via Chrome DevTools Protocol port or URL (--cdp)'),\n profile: z.string().optional().describe('Chrome profile name or directory path (--profile)'),\n proxy: z.string().optional().describe('Proxy server URL (--proxy)'),\n json: z.boolean().optional().describe('JSON output (--json)'),\n debug: z.boolean().optional().describe('Debug output (--debug)'),\n};\n\n/**\n * 通用选择器 schema\n */\nexport const SelectorSchema = z.string().describe('CSS selector, XPath, or @ref from snapshot (e.g., @e1)');\n\n/**\n * 方向 enum\n */\nexport const DirectionSchema = z.enum(['up', 'down', 'left', 'right']);\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { shellEscape, extractGlobalOptions, boolFlag } from '../utils.js';\nimport { CliExecutor } from '../executor.js';\nimport { GlobalOptionsSchema, SelectorSchema } from './schemas.js';\n\n// ===== 命令构建纯函数 =====\n\nexport function buildClickCommand(params: Record<string, unknown>): string {\n const parts = [`click ${shellEscape(params.selector as string)}`];\n if (params.newTab) parts.push('--new-tab');\n return parts.join(' ');\n}\n\nexport function buildDblclickCommand(params: Record<string, unknown>): string {\n return `dblclick ${shellEscape(params.selector as string)}`;\n}\n\nexport function buildTypeCommand(params: Record<string, unknown>): string {\n return `type ${shellEscape(params.selector as string)} ${shellEscape(params.text as string)}`;\n}\n\nexport function buildFillCommand(params: Record<string, unknown>): string {\n return `fill ${shellEscape(params.selector as string)} ${shellEscape(params.text as string)}`;\n}\n\nexport function buildPressCommand(params: Record<string, unknown>): string {\n return `press ${shellEscape(params.key as string)}`;\n}\n\nexport function buildHoverCommand(params: Record<string, unknown>): string {\n return `hover ${shellEscape(params.selector as string)}`;\n}\n\nexport function buildFocusCommand(params: Record<string, unknown>): string {\n return `focus ${shellEscape(params.selector as string)}`;\n}\n\nexport function buildCheckCommand(params: Record<string, unknown>): string {\n return `check ${shellEscape(params.selector as string)}`;\n}\n\nexport function buildUncheckCommand(params: Record<string, unknown>): string {\n return `uncheck ${shellEscape(params.selector as string)}`;\n}\n\nexport function buildSelectCommand(params: Record<string, unknown>): string {\n const values = (params.values as string[]).map((v: string) => shellEscape(v)).join(' ');\n return `select ${shellEscape(params.selector as string)} ${values}`;\n}\n\nexport function buildDragCommand(params: Record<string, unknown>): string {\n return `drag ${shellEscape(params.source as string)} ${shellEscape(params.target as string)}`;\n}\n\nexport function buildUploadCommand(params: Record<string, unknown>): string {\n const files = (params.files as string[]).map((f: string) => shellEscape(f)).join(' ');\n return `upload ${shellEscape(params.selector as string)} ${files}`;\n}\n\nexport function buildDownloadCommand(params: Record<string, unknown>): string {\n return `download ${shellEscape(params.selector as string)} ${shellEscape(params.path as string)}`;\n}\n\nexport function buildScrollCommand(params: Record<string, unknown>): string {\n const dir = (params.direction as string) || 'down';\n const amount = (params.amount as number) || 300;\n let cmd = `scroll ${dir} ${amount}`;\n if (params.selector) cmd += ` -s ${shellEscape(params.selector as string)}`;\n return cmd;\n}\n\nexport function buildScrollIntoViewCommand(params: Record<string, unknown>): string {\n return `scrollintoview ${shellEscape(params.selector as string)}`;\n}\n\nexport function buildWaitCommand(params: Record<string, unknown>): string {\n const target = params.target as string;\n // If target is a number string, treat as milliseconds\n if (/^\\d+$/.test(target)) return `wait ${target}`;\n // Otherwise treat as selector\n return `wait ${shellEscape(target)}`;\n}\n\n// ===== Tool 注册 =====\n\nexport function registerInteractionTools(server: McpServer, executor: CliExecutor): void {\n server.tool(\n 'click',\n 'Click an element by selector or @ref',\n {\n selector: SelectorSchema,\n newTab: z.boolean().optional().describe('Open link in new tab'),\n ...GlobalOptionsSchema,\n },\n async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildClickCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n },\n );\n\n server.tool(\n 'dblclick',\n 'Double-click an element',\n {\n selector: SelectorSchema,\n ...GlobalOptionsSchema,\n },\n async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildDblclickCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n },\n );\n\n server.tool(\n 'type',\n 'Type text into an element (appends to existing content)',\n {\n selector: SelectorSchema,\n text: z.string().describe('Text to type'),\n ...GlobalOptionsSchema,\n },\n async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildTypeCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n },\n );\n\n server.tool(\n 'fill',\n 'Clear and fill an element with text',\n {\n selector: SelectorSchema,\n text: z.string().describe('Text to fill'),\n ...GlobalOptionsSchema,\n },\n async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildFillCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n },\n );\n\n server.tool(\n 'press',\n 'Press a keyboard key (e.g., Enter, Tab, Control+a)',\n {\n key: z.string().describe('Key to press (e.g., Enter, Tab, Control+a)'),\n ...GlobalOptionsSchema,\n },\n async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildPressCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n },\n );\n\n server.tool(\n 'hover',\n 'Hover over an element',\n {\n selector: SelectorSchema,\n ...GlobalOptionsSchema,\n },\n async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildHoverCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n },\n );\n\n server.tool(\n 'focus',\n 'Focus an element',\n {\n selector: SelectorSchema,\n ...GlobalOptionsSchema,\n },\n async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildFocusCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n },\n );\n\n server.tool(\n 'check',\n 'Check a checkbox',\n {\n selector: SelectorSchema,\n ...GlobalOptionsSchema,\n },\n async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildCheckCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n },\n );\n\n server.tool(\n 'uncheck',\n 'Uncheck a checkbox',\n {\n selector: SelectorSchema,\n ...GlobalOptionsSchema,\n },\n async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildUncheckCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n },\n );\n\n server.tool(\n 'select',\n 'Select dropdown option(s)',\n {\n selector: SelectorSchema,\n values: z.array(z.string()).describe('Option value(s) to select'),\n ...GlobalOptionsSchema,\n },\n async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildSelectCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n },\n );\n\n server.tool(\n 'drag',\n 'Drag and drop from source to target element',\n {\n source: z.string().describe('Source element selector or @ref'),\n target: z.string().describe('Target element selector or @ref'),\n ...GlobalOptionsSchema,\n },\n async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildDragCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n },\n );\n\n server.tool(\n 'upload',\n 'Upload file(s) to an element',\n {\n selector: SelectorSchema,\n files: z.array(z.string()).describe('File path(s) to upload'),\n ...GlobalOptionsSchema,\n },\n async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildUploadCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n },\n );\n\n server.tool(\n 'download',\n 'Download a file by clicking an element',\n {\n selector: SelectorSchema,\n path: z.string().describe('Download destination path'),\n ...GlobalOptionsSchema,\n },\n async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildDownloadCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n },\n );\n\n server.tool(\n 'scroll',\n 'Scroll the page or a scrollable container',\n {\n direction: z.enum(['up', 'down', 'left', 'right']).optional().describe('Scroll direction (default: down)'),\n amount: z.number().optional().describe('Pixels to scroll (default: 300)'),\n selector: z.string().optional().describe('Scrollable container selector'),\n ...GlobalOptionsSchema,\n },\n async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildScrollCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n },\n );\n\n server.tool(\n 'scroll_into_view',\n 'Scroll an element into view',\n {\n selector: SelectorSchema,\n ...GlobalOptionsSchema,\n },\n async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildScrollIntoViewCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n },\n );\n\n server.tool(\n 'wait',\n 'Wait for an element, timeout, or condition',\n {\n target: z.string().describe('CSS selector, @ref, or milliseconds to wait'),\n ...GlobalOptionsSchema,\n },\n async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildWaitCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n },\n );\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { shellEscape, extractGlobalOptions, boolFlag } from '../utils.js';\nimport { CliExecutor } from '../executor.js';\nimport { GlobalOptionsSchema, SelectorSchema } from './schemas.js';\n\n// ===== 命令构建纯函数 =====\n\nexport function buildSnapshotCommand(params: Record<string, unknown>): string {\n const parts = ['snapshot'];\n if (params.interactive) parts.push('-i');\n if (params.compact) parts.push('-c');\n if (params.depth) parts.push(`-d ${params.depth}`);\n if (params.selector) parts.push(`-s ${shellEscape(params.selector as string)}`);\n return parts.join(' ');\n}\n\nexport function buildGetCommand(params: Record<string, unknown>): string {\n const what = params.what as string;\n const parts = [`get ${what}`];\n if (params.selector) parts.push(shellEscape(params.selector as string));\n if (what === 'attr' && params.attribute) parts.push(shellEscape(params.attribute as string));\n return parts.join(' ');\n}\n\nexport function buildIsCommand(params: Record<string, unknown>): string {\n return `is ${params.what} ${shellEscape(params.selector as string)}`;\n}\n\nexport function buildFindCommand(params: Record<string, unknown>): string {\n const parts = [`find ${params.locator} ${shellEscape(params.value as string)}`];\n if (params.action) parts.push(params.action as string);\n if (params.actionText) parts.push(shellEscape(params.actionText as string));\n if (params.name) parts.push(`--name ${shellEscape(params.name as string)}`);\n if (params.exact) parts.push('--exact');\n return parts.join(' ');\n}\n\nexport function buildEvalCommand(params: Record<string, unknown>): string {\n return `eval ${shellEscape(params.script as string)}`;\n}\n\n// ===== Tool 注册 =====\n\nexport function registerQueryTools(server: McpServer, executor: CliExecutor): void {\n server.tool(\n 'snapshot',\n 'Capture accessibility tree with element refs (for AI agents)',\n {\n interactive: z.boolean().optional().describe('Only interactive elements (-i)'),\n compact: z.boolean().optional().describe('Remove empty structural elements (-c)'),\n depth: z.number().optional().describe('Limit tree depth (-d)'),\n selector: z.string().optional().describe('Scope to CSS selector (-s)'),\n ...GlobalOptionsSchema,\n },\n async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildSnapshotCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n },\n );\n\n server.tool(\n 'get',\n 'Get element information (text, html, value, attribute, title, URL, etc.)',\n {\n what: z.enum(['text', 'html', 'value', 'attr', 'title', 'url', 'count', 'box', 'styles', 'cdp-url']).describe('What to get'),\n selector: z.string().optional().describe('Element selector or @ref (required for most properties)'),\n attribute: z.string().optional().describe('Attribute name (required when what=attr)'),\n ...GlobalOptionsSchema,\n },\n async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildGetCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n },\n );\n\n server.tool(\n 'is',\n 'Check element state (visible, enabled, checked)',\n {\n what: z.enum(['visible', 'enabled', 'checked']).describe('State to check'),\n selector: SelectorSchema,\n ...GlobalOptionsSchema,\n },\n async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildIsCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n },\n );\n\n server.tool(\n 'find',\n 'Find elements by locator and perform an action',\n {\n locator: z.enum(['role', 'text', 'label', 'placeholder', 'alt', 'title', 'testid', 'first', 'last', 'nth']).describe('Locator strategy'),\n value: z.string().describe('Locator value to search for'),\n action: z.enum(['click', 'fill', 'type', 'hover', 'focus', 'check', 'uncheck']).optional().describe('Action to perform on found element'),\n actionText: z.string().optional().describe('Text for fill/type actions'),\n name: z.string().optional().describe('Name filter (for role locator)'),\n exact: z.boolean().optional().describe('Exact match'),\n ...GlobalOptionsSchema,\n },\n async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildFindCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n },\n );\n\n server.tool(\n 'eval',\n 'Run JavaScript in the browser page',\n {\n script: z.string().describe('JavaScript expression to evaluate'),\n ...GlobalOptionsSchema,\n },\n async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildEvalCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n },\n );\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { shellEscape, extractGlobalOptions, boolFlag } from '../utils.js';\nimport { CliExecutor } from '../executor.js';\nimport { GlobalOptionsSchema, SelectorSchema } from './schemas.js';\n\n// ===== 命令构建纯函数 =====\n\nexport function buildScreenshotCommand(params: Record<string, unknown>): string {\n const parts = ['screenshot'];\n if (params.full) parts.push('--full');\n if (params.annotate) parts.push('--annotate');\n if (params.selector) parts.push(shellEscape(params.selector as string));\n if (params.path) parts.push(shellEscape(params.path as string));\n if (params.format) parts.push(`--screenshot-format ${params.format}`);\n if (params.quality !== undefined) parts.push(`--screenshot-quality ${params.quality}`);\n return parts.join(' ');\n}\n\nexport function buildPdfCommand(params: Record<string, unknown>): string {\n return `pdf ${shellEscape(params.path as string)}`;\n}\n\nexport function buildDiffSnapshotCommand(params: Record<string, unknown>): string {\n return 'diff snapshot';\n}\n\nexport function buildDiffScreenshotCommand(params: Record<string, unknown>): string {\n const parts = ['diff screenshot'];\n if (params.baseline) parts.push(`--baseline ${shellEscape(params.baseline as string)}`);\n return parts.join(' ');\n}\n\nexport function buildDiffUrlCommand(params: Record<string, unknown>): string {\n return `diff url ${shellEscape(params.url1 as string)} ${shellEscape(params.url2 as string)}`;\n}\n\nexport function buildHighlightCommand(params: Record<string, unknown>): string {\n return `highlight ${shellEscape(params.selector as string)}`;\n}\n\n// ===== Tool 注册 =====\n\nexport function registerVisualTools(server: McpServer, executor: CliExecutor): void {\n server.tool(\n 'screenshot',\n 'Take a screenshot of the current page',\n {\n selector: z.string().optional().describe('Element selector to screenshot'),\n path: z.string().optional().describe('Output file path'),\n full: z.boolean().optional().describe('Full page screenshot (--full)'),\n annotate: z.boolean().optional().describe('Annotated screenshot with numbered labels (--annotate)'),\n format: z.enum(['png', 'jpeg']).optional().describe('Screenshot format'),\n quality: z.number().optional().describe('JPEG quality 0-100'),\n ...GlobalOptionsSchema,\n },\n async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildScreenshotCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n },\n );\n\n server.tool(\n 'pdf',\n 'Save the current page as PDF',\n {\n path: z.string().describe('Output PDF file path'),\n ...GlobalOptionsSchema,\n },\n async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildPdfCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n },\n );\n\n server.tool(\n 'diff_snapshot',\n 'Compare current accessibility snapshot vs last snapshot',\n { ...GlobalOptionsSchema },\n async (args) => {\n const { global } = extractGlobalOptions(args);\n const result = await executor.execute(buildDiffSnapshotCommand({}), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n },\n );\n\n server.tool(\n 'diff_screenshot',\n 'Compare current screenshot vs baseline image',\n {\n baseline: z.string().describe('Path to baseline image'),\n ...GlobalOptionsSchema,\n },\n async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildDiffScreenshotCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n },\n );\n\n server.tool(\n 'diff_url',\n 'Compare two URLs side by side',\n {\n url1: z.string().describe('First URL'),\n url2: z.string().describe('Second URL'),\n ...GlobalOptionsSchema,\n },\n async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildDiffUrlCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n },\n );\n\n server.tool(\n 'highlight',\n 'Highlight an element on the page (for debugging)',\n {\n selector: SelectorSchema,\n ...GlobalOptionsSchema,\n },\n async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildHighlightCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n },\n );\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { extractGlobalOptions } from '../utils.js';\nimport { CliExecutor } from '../executor.js';\nimport { GlobalOptionsSchema } from './schemas.js';\n\n// ===== 命令构建纯函数 =====\n\nexport function buildMouseMoveCommand(params: Record<string, unknown>): string {\n return `mouse move ${params.x} ${params.y}`;\n}\n\nexport function buildMouseDownCommand(params: Record<string, unknown>): string {\n const btn = params.button ? ` ${params.button}` : '';\n return `mouse down${btn}`;\n}\n\nexport function buildMouseUpCommand(params: Record<string, unknown>): string {\n const btn = params.button ? ` ${params.button}` : '';\n return `mouse up${btn}`;\n}\n\nexport function buildMouseWheelCommand(params: Record<string, unknown>): string {\n const dx = params.deltaX ? ` ${params.deltaX}` : '';\n return `mouse wheel ${params.deltaY}${dx}`;\n}\n\n// ===== Tool 注册 =====\n\nexport function registerMouseTools(server: McpServer, executor: CliExecutor): void {\n server.tool(\n 'mouse_move',\n 'Move mouse to coordinates',\n {\n x: z.number().describe('X coordinate'),\n y: z.number().describe('Y coordinate'),\n ...GlobalOptionsSchema,\n },\n async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildMouseMoveCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n },\n );\n\n server.tool(\n 'mouse_down',\n 'Press a mouse button',\n {\n button: z.enum(['left', 'right', 'middle']).optional().describe('Mouse button (default: left)'),\n ...GlobalOptionsSchema,\n },\n async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildMouseDownCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n },\n );\n\n server.tool(\n 'mouse_up',\n 'Release a mouse button',\n {\n button: z.enum(['left', 'right', 'middle']).optional().describe('Mouse button (default: left)'),\n ...GlobalOptionsSchema,\n },\n async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildMouseUpCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n },\n );\n\n server.tool(\n 'mouse_wheel',\n 'Scroll the mouse wheel',\n {\n deltaY: z.number().describe('Vertical scroll amount'),\n deltaX: z.number().optional().describe('Horizontal scroll amount'),\n ...GlobalOptionsSchema,\n },\n async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildMouseWheelCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n },\n );\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { shellEscape, extractGlobalOptions } from '../utils.js';\nimport { CliExecutor } from '../executor.js';\nimport { GlobalOptionsSchema } from './schemas.js';\n\n// ===== 命令构建纯函数 =====\n\nexport function buildKeyboardTypeCommand(params: Record<string, unknown>): string {\n return `keyboard type ${shellEscape(params.text as string)}`;\n}\n\nexport function buildKeyboardInsertCommand(params: Record<string, unknown>): string {\n return `keyboard inserttext ${shellEscape(params.text as string)}`;\n}\n\nexport function buildKeydownCommand(params: Record<string, unknown>): string {\n return `keydown ${shellEscape(params.key as string)}`;\n}\n\nexport function buildKeyupCommand(params: Record<string, unknown>): string {\n return `keyup ${shellEscape(params.key as string)}`;\n}\n\n// ===== Tool 注册 =====\n\nexport function registerKeyboardTools(server: McpServer, executor: CliExecutor): void {\n server.tool(\n 'keyboard_type',\n 'Type text with real keystrokes (no selector needed)',\n {\n text: z.string().describe('Text to type'),\n ...GlobalOptionsSchema,\n },\n async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildKeyboardTypeCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n },\n );\n\n server.tool(\n 'keyboard_insert',\n 'Insert text without key events (no selector needed)',\n {\n text: z.string().describe('Text to insert'),\n ...GlobalOptionsSchema,\n },\n async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildKeyboardInsertCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n },\n );\n\n server.tool(\n 'keydown',\n 'Press and hold a key (without releasing)',\n {\n key: z.string().describe('Key to hold down (e.g., Shift, Control, Alt)'),\n ...GlobalOptionsSchema,\n },\n async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildKeydownCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n },\n );\n\n server.tool(\n 'keyup',\n 'Release a previously held key',\n {\n key: z.string().describe('Key to release (e.g., Shift, Control, Alt)'),\n ...GlobalOptionsSchema,\n },\n async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildKeyupCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n },\n );\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { shellEscape, extractGlobalOptions } from '../utils.js';\nimport { CliExecutor } from '../executor.js';\nimport { GlobalOptionsSchema } from './schemas.js';\n\n// ===== 命令构建纯函数 =====\n\nexport function buildSetViewportCommand(params: Record<string, unknown>): string {\n return `set viewport ${params.width} ${params.height}`;\n}\n\nexport function buildSetDeviceCommand(params: Record<string, unknown>): string {\n return `set device ${shellEscape(params.device as string)}`;\n}\n\nexport function buildSetGeolocationCommand(params: Record<string, unknown>): string {\n return `set geo ${params.latitude} ${params.longitude}`;\n}\n\nexport function buildSetOfflineCommand(params: Record<string, unknown>): string {\n const enabled = params.enabled !== false;\n return `set offline ${enabled ? 'on' : 'off'}`;\n}\n\nexport function buildSetHeadersCommand(params: Record<string, unknown>): string {\n return `set headers ${shellEscape(params.headers as string)}`;\n}\n\nexport function buildSetCredentialsCommand(params: Record<string, unknown>): string {\n return `set credentials ${shellEscape(params.username as string)} ${shellEscape(params.password as string)}`;\n}\n\nexport function buildSetColorSchemeCommand(params: Record<string, unknown>): string {\n const parts = ['set media'];\n if (params.scheme) parts.push(params.scheme as string);\n return parts.join(' ');\n}\n\n// ===== Tool 注册 =====\n\nexport function registerBrowserSettingsTools(server: McpServer, executor: CliExecutor): void {\n server.tool('set_viewport', 'Set browser viewport size', {\n width: z.number().describe('Viewport width'),\n height: z.number().describe('Viewport height'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildSetViewportCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('set_device', 'Emulate a device', {\n device: z.string().describe('Device name (e.g., \"iPhone 15 Pro\")'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildSetDeviceCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('set_geolocation', 'Set geolocation', {\n latitude: z.number().describe('Latitude'),\n longitude: z.number().describe('Longitude'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildSetGeolocationCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('set_offline', 'Toggle offline mode', {\n enabled: z.boolean().optional().describe('Enable offline mode (default: true)'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildSetOfflineCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('set_headers', 'Set HTTP headers', {\n headers: z.string().describe('Headers as JSON string'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildSetHeadersCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('set_credentials', 'Set HTTP authentication credentials', {\n username: z.string().describe('Username'),\n password: z.string().describe('Password'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildSetCredentialsCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('set_color_scheme', 'Set color scheme preference', {\n scheme: z.enum(['dark', 'light']).optional().describe('Color scheme'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildSetColorSchemeCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { shellEscape, extractGlobalOptions } from '../utils.js';\nimport { CliExecutor } from '../executor.js';\nimport { GlobalOptionsSchema } from './schemas.js';\n\n// ===== 命令构建纯函数 =====\n\nexport function buildNetworkRouteCommand(params: Record<string, unknown>): string {\n const parts = [`network route ${shellEscape(params.url as string)}`];\n if (params.abort) parts.push('--abort');\n if (params.body) parts.push(`--body ${shellEscape(params.body as string)}`);\n return parts.join(' ');\n}\n\nexport function buildNetworkUnrouteCommand(params: Record<string, unknown>): string {\n if (params.url) return `network unroute ${shellEscape(params.url as string)}`;\n return 'network unroute';\n}\n\nexport function buildNetworkRequestsCommand(params: Record<string, unknown>): string {\n const parts = ['network requests'];\n if (params.clear) parts.push('--clear');\n if (params.filter) parts.push(`--filter ${shellEscape(params.filter as string)}`);\n return parts.join(' ');\n}\n\nexport function buildNetworkRequestDetailCommand(params: Record<string, unknown>): string {\n return `network request ${shellEscape(params.requestId as string)}`;\n}\n\nexport function buildNetworkHarCommand(params: Record<string, unknown>): string {\n const parts = [`network har ${params.action}`];\n if (params.path) parts.push(shellEscape(params.path as string));\n return parts.join(' ');\n}\n\n// ===== Tool 注册 =====\n\nexport function registerNetworkTools(server: McpServer, executor: CliExecutor): void {\n server.tool('network_route', 'Intercept network requests by URL pattern', {\n url: z.string().describe('URL pattern to intercept'),\n abort: z.boolean().optional().describe('Abort the request'),\n body: z.string().optional().describe('Response body as JSON (--body)'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildNetworkRouteCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('network_unroute', 'Remove a network route', {\n url: z.string().optional().describe('URL pattern to remove (omit to remove all)'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildNetworkUnrouteCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('network_requests', 'List network requests', {\n clear: z.boolean().optional().describe('Clear request log (--clear)'),\n filter: z.string().optional().describe('Filter pattern (--filter)'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildNetworkRequestsCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('network_request_detail', 'Get full details of a network request', {\n requestId: z.string().describe('Request ID from network requests list'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildNetworkRequestDetailCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('network_har', 'Start or stop HAR recording', {\n action: z.enum(['start', 'stop']).describe('Start or stop recording'),\n path: z.string().optional().describe('HAR file output path'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildNetworkHarCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { shellEscape, extractGlobalOptions } from '../utils.js';\nimport { CliExecutor } from '../executor.js';\nimport { GlobalOptionsSchema } from './schemas.js';\n\n// ===== 命令构建纯函数 =====\n\nexport function buildCookiesGetCommand(): string { return 'cookies get'; }\n\nexport function buildCookiesSetCommand(params: Record<string, unknown>): string {\n const parts = [`cookies set ${shellEscape(params.name as string)} ${shellEscape(params.value as string)}`];\n if (params.url) parts.push(`--url ${shellEscape(params.url as string)}`);\n if (params.domain) parts.push(`--domain ${shellEscape(params.domain as string)}`);\n if (params.path) parts.push(`--path ${shellEscape(params.path as string)}`);\n if (params.httpOnly) parts.push('--httpOnly');\n if (params.secure) parts.push('--secure');\n if (params.sameSite) parts.push(`--sameSite ${params.sameSite}`);\n if (params.expires !== undefined) parts.push(`--expires ${params.expires}`);\n return parts.join(' ');\n}\n\nexport function buildCookiesClearCommand(): string { return 'cookies clear'; }\n\nexport function buildStorageGetCommand(params: Record<string, unknown>): string {\n const parts = [`storage ${params.type} get`];\n if (params.key) parts.push(shellEscape(params.key as string));\n return parts.join(' ');\n}\n\nexport function buildStorageSetCommand(params: Record<string, unknown>): string {\n return `storage ${params.type} set ${shellEscape(params.key as string)} ${shellEscape(params.value as string)}`;\n}\n\nexport function buildStorageClearCommand(params: Record<string, unknown>): string {\n return `storage ${params.type} clear`;\n}\n\n// ===== Tool 注册 =====\n\nexport function registerStorageTools(server: McpServer, executor: CliExecutor): void {\n server.tool('cookies_get', 'Get all cookies', { ...GlobalOptionsSchema }, async (args) => {\n const { global } = extractGlobalOptions(args);\n const result = await executor.execute(buildCookiesGetCommand(), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('cookies_set', 'Set a cookie', {\n name: z.string().describe('Cookie name'),\n value: z.string().describe('Cookie value'),\n url: z.string().optional().describe('Cookie URL'),\n domain: z.string().optional().describe('Cookie domain'),\n path: z.string().optional().describe('Cookie path'),\n httpOnly: z.boolean().optional().describe('HTTP only'),\n secure: z.boolean().optional().describe('Secure only'),\n sameSite: z.enum(['Strict', 'Lax', 'None']).optional().describe('SameSite policy'),\n expires: z.number().optional().describe('Expiration timestamp'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildCookiesSetCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('cookies_clear', 'Clear all cookies', { ...GlobalOptionsSchema }, async (args) => {\n const { global } = extractGlobalOptions(args);\n const result = await executor.execute(buildCookiesClearCommand(), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('storage_get', 'Get web storage value(s)', {\n type: z.enum(['local', 'session']).describe('Storage type'),\n key: z.string().optional().describe('Key to get (omit to get all)'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildStorageGetCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('storage_set', 'Set a web storage value', {\n type: z.enum(['local', 'session']).describe('Storage type'),\n key: z.string().describe('Storage key'),\n value: z.string().describe('Storage value'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildStorageSetCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('storage_clear', 'Clear web storage', {\n type: z.enum(['local', 'session']).describe('Storage type'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildStorageClearCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { shellEscape, extractGlobalOptions } from '../utils.js';\nimport { CliExecutor } from '../executor.js';\nimport { GlobalOptionsSchema } from './schemas.js';\n\n// ===== 命令构建纯函数 =====\n\nexport function buildTabListCommand(): string { return 'tab list'; }\n\nexport function buildTabNewCommand(params: Record<string, unknown>): string {\n const parts = ['tab new'];\n if (params.url) parts.push(shellEscape(params.url as string));\n if (params.label) parts.push(`--label ${shellEscape(params.label as string)}`);\n return parts.join(' ');\n}\n\nexport function buildTabCloseCommand(params: Record<string, unknown>): string {\n if (params.ref) return `tab close ${shellEscape(params.ref as string)}`;\n return 'tab close';\n}\n\nexport function buildTabSwitchCommand(params: Record<string, unknown>): string {\n return `tab ${shellEscape(params.ref as string)}`;\n}\n\nexport function buildFrameCommand(params: Record<string, unknown>): string {\n return `frame ${shellEscape(params.target as string)}`;\n}\n\nexport function buildWindowNewCommand(): string { return 'window new'; }\n\n// ===== Tool 注册 =====\n\nexport function registerTabTools(server: McpServer, executor: CliExecutor): void {\n server.tool('tab_list', 'List all browser tabs', { ...GlobalOptionsSchema }, async (args) => {\n const { global } = extractGlobalOptions(args);\n const result = await executor.execute(buildTabListCommand(), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('tab_new', 'Open a new tab', {\n url: z.string().optional().describe('URL to open in new tab'),\n label: z.string().optional().describe('Tab label (--label)'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildTabNewCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('tab_close', 'Close a tab', {\n ref: z.string().optional().describe('Tab reference or label (omit to close current)'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildTabCloseCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('tab_switch', 'Switch to a tab by reference or label', {\n ref: z.string().describe('Tab reference (e.g., t1) or label'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildTabSwitchCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('frame', 'Switch frame context (iframe or main)', {\n target: z.string().describe('CSS selector, @ref for iframe, or \"main\" to return to top-level frame'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildFrameCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('window_new', 'Open a new browser window', { ...GlobalOptionsSchema }, async (args) => {\n const { global } = extractGlobalOptions(args);\n const result = await executor.execute(buildWindowNewCommand(), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { shellEscape, extractGlobalOptions } from '../utils.js';\nimport { CliExecutor } from '../executor.js';\nimport { GlobalOptionsSchema } from './schemas.js';\n\n// ===== 命令构建纯函数 =====\n\nexport function buildConsoleCommand(params: Record<string, unknown>): string {\n const parts = ['console'];\n if (params.clear) parts.push('--clear');\n return parts.join(' ');\n}\n\nexport function buildErrorsCommand(params: Record<string, unknown>): string {\n const parts = ['errors'];\n if (params.clear) parts.push('--clear');\n return parts.join(' ');\n}\n\nexport function buildTraceCommand(params: Record<string, unknown>): string {\n const parts = [`trace ${params.action}`];\n if (params.path) parts.push(shellEscape(params.path as string));\n return parts.join(' ');\n}\n\nexport function buildProfilerCommand(params: Record<string, unknown>): string {\n const parts = [`profiler ${params.action}`];\n if (params.path) parts.push(shellEscape(params.path as string));\n return parts.join(' ');\n}\n\nexport function buildRecordCommand(params: Record<string, unknown>): string {\n if (params.action === 'stop') return 'record stop';\n if (params.action === 'restart') return `record restart ${shellEscape(params.path as string)}`;\n const parts = [`record start ${shellEscape(params.path as string)}`];\n if (params.url) parts.push(shellEscape(params.url as string));\n return parts.join(' ');\n}\n\nexport function buildClipboardCommand(params: Record<string, unknown>): string {\n const parts = [`clipboard ${params.operation}`];\n if (params.text) parts.push(shellEscape(params.text as string));\n return parts.join(' ');\n}\n\nexport function buildInspectCommand(): string { return 'inspect'; }\n\n// ===== Tool 注册 =====\n\nexport function registerDebugTools(server: McpServer, executor: CliExecutor): void {\n server.tool('console', 'View console logs', {\n clear: z.boolean().optional().describe('Clear console log'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildConsoleCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('errors', 'View page errors', {\n clear: z.boolean().optional().describe('Clear errors'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildErrorsCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('trace', 'Record Chrome DevTools trace', {\n action: z.enum(['start', 'stop']).describe('Start or stop tracing'),\n path: z.string().optional().describe('Output trace file path'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildTraceCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('profiler', 'Record Chrome DevTools profile', {\n action: z.enum(['start', 'stop']).describe('Start or stop profiling'),\n path: z.string().optional().describe('Output profile file path'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildProfilerCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('record', 'Record browser session as video (WebM)', {\n action: z.enum(['start', 'stop', 'restart']).describe('Start, stop, or restart recording'),\n path: z.string().optional().describe('Output video file path (required for start)'),\n url: z.string().optional().describe('URL to open when recording starts'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildRecordCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('clipboard', 'Read or write the clipboard', {\n operation: z.enum(['read', 'write', 'copy', 'paste']).describe('Clipboard operation'),\n text: z.string().optional().describe('Text for write operation'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildClipboardCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('inspect', 'Open Chrome DevTools for the active page', { ...GlobalOptionsSchema }, async (args) => {\n const { global } = extractGlobalOptions(args);\n const result = await executor.execute(buildInspectCommand(), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { shellEscape, extractGlobalOptions } from '../utils.js';\nimport { CliExecutor } from '../executor.js';\nimport { GlobalOptionsSchema } from './schemas.js';\n\n// ===== 命令构建纯函数 =====\n\nexport function buildAuthSaveCommand(params: Record<string, unknown>): string {\n const parts = [`auth save ${shellEscape(params.name as string)}`];\n if (params.url) parts.push(`--url ${shellEscape(params.url as string)}`);\n if (params.username) parts.push(`--username ${shellEscape(params.username as string)}`);\n if (params.password) parts.push(`--password ${shellEscape(params.password as string)}`);\n return parts.join(' ');\n}\n\nexport function buildAuthLoginCommand(params: Record<string, unknown>): string {\n return `auth login ${shellEscape(params.name as string)}`;\n}\n\nexport function buildAuthListCommand(): string { return 'auth list'; }\n\nexport function buildAuthShowCommand(params: Record<string, unknown>): string {\n return `auth show ${shellEscape(params.name as string)}`;\n}\n\nexport function buildAuthDeleteCommand(params: Record<string, unknown>): string {\n return `auth delete ${shellEscape(params.name as string)}`;\n}\n\n// ===== Tool 注册 =====\n\nexport function registerAuthTools(server: McpServer, executor: CliExecutor): void {\n server.tool('auth_save', 'Save an authentication profile', {\n name: z.string().describe('Profile name'),\n url: z.string().optional().describe('Login page URL (--url)'),\n username: z.string().optional().describe('Username (--username)'),\n password: z.string().optional().describe('Password (--password)'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildAuthSaveCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('auth_login', 'Login using a saved auth profile', {\n name: z.string().describe('Profile name'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildAuthLoginCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('auth_list', 'List saved auth profiles', { ...GlobalOptionsSchema }, async (args) => {\n const { global } = extractGlobalOptions(args);\n const result = await executor.execute(buildAuthListCommand(), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('auth_show', 'Show auth profile metadata', {\n name: z.string().describe('Profile name'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildAuthShowCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('auth_delete', 'Delete a saved auth profile', {\n name: z.string().describe('Profile name'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildAuthDeleteCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { shellEscape, extractGlobalOptions } from '../utils.js';\nimport { CliExecutor } from '../executor.js';\nimport { GlobalOptionsSchema } from './schemas.js';\n\n// ===== 命令构建纯函数 =====\n\nexport function buildBatchCommand(params: Record<string, unknown>): string {\n const commands = (params.commands as string[]).map((c: string) => `\"${c}\"`).join(' ');\n const parts = [`batch ${commands}`];\n if (params.bail) parts.push('--bail');\n return parts.join(' ');\n}\n\n// ===== Tool 注册 =====\n\nexport function registerBatchTools(server: McpServer, executor: CliExecutor): void {\n server.tool('batch', 'Execute multiple browser commands sequentially', {\n commands: z.array(z.string()).describe('Array of agent-browser commands to execute'),\n bail: z.boolean().optional().describe('Stop on first error (--bail)'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildBatchCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { extractGlobalOptions } from '../utils.js';\nimport { CliExecutor } from '../executor.js';\nimport { GlobalOptionsSchema } from './schemas.js';\n\n// ===== 命令构建纯函数 =====\n\nexport function buildSessionListCommand(): string { return 'session list'; }\n\nexport function buildStreamEnableCommand(params: Record<string, unknown>): string {\n const parts = ['stream enable'];\n if (params.port) parts.push(`--port ${params.port}`);\n return parts.join(' ');\n}\n\nexport function buildStreamDisableCommand(): string { return 'stream disable'; }\n\nexport function buildStreamStatusCommand(): string { return 'stream status'; }\n\n// ===== Tool 注册 =====\n\nexport function registerSessionTools(server: McpServer, executor: CliExecutor): void {\n server.tool('session_list', 'List active browser sessions', { ...GlobalOptionsSchema }, async (args) => {\n const { global } = extractGlobalOptions(args);\n const result = await executor.execute(buildSessionListCommand(), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('stream_enable', 'Start runtime WebSocket streaming', {\n port: z.number().optional().describe('WebSocket streaming port (--port)'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildStreamEnableCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('stream_disable', 'Stop runtime WebSocket streaming', { ...GlobalOptionsSchema }, async (args) => {\n const { global } = extractGlobalOptions(args);\n const result = await executor.execute(buildStreamDisableCommand(), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('stream_status', 'Show streaming status and active port', { ...GlobalOptionsSchema }, async (args) => {\n const { global } = extractGlobalOptions(args);\n const result = await executor.execute(buildStreamStatusCommand(), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { shellEscape, extractGlobalOptions } from '../utils.js';\nimport { CliExecutor } from '../executor.js';\nimport { GlobalOptionsSchema } from './schemas.js';\n\n// ===== 命令构建纯函数 =====\n\nexport function buildDialogAcceptCommand(params: Record<string, unknown>): string {\n if (params.text) return `dialog accept ${shellEscape(params.text as string)}`;\n return 'dialog accept';\n}\n\nexport function buildDialogDismissCommand(): string { return 'dialog dismiss'; }\nexport function buildDialogStatusCommand(): string { return 'dialog status'; }\n\n// ===== Tool 注册 =====\n\nexport function registerDialogTools(server: McpServer, executor: CliExecutor): void {\n server.tool('dialog_accept', 'Accept a dialog (alert/confirm/prompt)', {\n text: z.string().optional().describe('Response text for prompt dialogs'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildDialogAcceptCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('dialog_dismiss', 'Dismiss a dialog', { ...GlobalOptionsSchema }, async (args) => {\n const { global } = extractGlobalOptions(args);\n const result = await executor.execute(buildDialogDismissCommand(), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('dialog_status', 'Check if a dialog is currently open', { ...GlobalOptionsSchema }, async (args) => {\n const { global } = extractGlobalOptions(args);\n const result = await executor.execute(buildDialogStatusCommand(), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { shellEscape, extractGlobalOptions } from '../utils.js';\nimport { CliExecutor } from '../executor.js';\nimport { GlobalOptionsSchema } from './schemas.js';\n\n// ===== 命令构建纯函数 =====\n\nexport function buildConfirmCommand(params: Record<string, unknown>): string {\n return `confirm ${shellEscape(params.id as string)}`;\n}\n\nexport function buildDenyCommand(params: Record<string, unknown>): string {\n return `deny ${shellEscape(params.id as string)}`;\n}\n\n// ===== Tool 注册 =====\n\nexport function registerConfirmationTools(server: McpServer, executor: CliExecutor): void {\n server.tool('confirm', 'Approve a pending confirmation action', {\n id: z.string().describe('Confirmation ID to approve'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildConfirmCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('deny', 'Deny a pending confirmation action', {\n id: z.string().describe('Confirmation ID to deny'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildDenyCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { shellEscape, extractGlobalOptions } from '../utils.js';\nimport { CliExecutor } from '../executor.js';\nimport { GlobalOptionsSchema } from './schemas.js';\n\n// ===== 命令构建纯函数 =====\n\nexport function buildStateSaveCommand(params: Record<string, unknown>): string {\n return `state save ${shellEscape(params.path as string)}`;\n}\n\nexport function buildStateLoadCommand(params: Record<string, unknown>): string {\n return `state load ${shellEscape(params.path as string)}`;\n}\n\nexport function buildStateListCommand(): string { return 'state list'; }\n\nexport function buildStateShowCommand(params: Record<string, unknown>): string {\n return `state show ${shellEscape(params.file as string)}`;\n}\n\nexport function buildStateRenameCommand(params: Record<string, unknown>): string {\n return `state rename ${shellEscape(params.oldName as string)} ${shellEscape(params.newName as string)}`;\n}\n\nexport function buildStateClearCommand(params: Record<string, unknown>): string {\n if (params.all) return 'state clear --all';\n if (params.name) return `state clear ${shellEscape(params.name as string)}`;\n return 'state clear';\n}\n\nexport function buildStateCleanCommand(params: Record<string, unknown>): string {\n const parts = ['state clean'];\n if (params.olderThan) parts.push(`--older-than ${params.olderThan}`);\n return parts.join(' ');\n}\n\n// ===== Tool 注册 =====\n\nexport function registerStateTools(server: McpServer, executor: CliExecutor): void {\n server.tool('state_save', 'Save browser auth state (cookies + storage) to a file', {\n path: z.string().describe('Output file path for saved state'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildStateSaveCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('state_load', 'Load browser auth state from a file', {\n path: z.string().describe('State file path to load'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildStateLoadCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('state_list', 'List saved state files', { ...GlobalOptionsSchema }, async (args) => {\n const { global } = extractGlobalOptions(args);\n const result = await executor.execute(buildStateListCommand(), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('state_show', 'Show state file summary', {\n file: z.string().describe('State file to inspect'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildStateShowCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('state_rename', 'Rename a state file', {\n oldName: z.string().describe('Current state file name'),\n newName: z.string().describe('New state file name'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildStateRenameCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('state_clear', 'Clear saved states', {\n name: z.string().optional().describe('Session name to clear (omit for current session)'),\n all: z.boolean().optional().describe('Clear all saved states (--all)'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildStateClearCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('state_clean', 'Delete old state files', {\n olderThan: z.number().optional().describe('Delete states older than N days (--older-than)'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildStateCleanCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { extractGlobalOptions } from '../utils.js';\nimport { CliExecutor } from '../executor.js';\nimport { GlobalOptionsSchema } from './schemas.js';\n\n// ===== 命令构建纯函数 =====\n\nexport function buildDashboardStartCommand(params: Record<string, unknown>): string {\n const parts = ['dashboard start'];\n if (params.port) parts.push(`--port ${params.port}`);\n return parts.join(' ');\n}\n\nexport function buildDashboardStopCommand(): string { return 'dashboard stop'; }\n\n// ===== Tool 注册 =====\n\nexport function registerDashboardTools(server: McpServer, executor: CliExecutor): void {\n server.tool('dashboard_start', 'Start the observability dashboard server', {\n port: z.number().optional().describe('Dashboard port (default: 4848) (--port)'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildDashboardStartCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('dashboard_stop', 'Stop the dashboard server', { ...GlobalOptionsSchema }, async (args) => {\n const { global } = extractGlobalOptions(args);\n const result = await executor.execute(buildDashboardStopCommand(), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { shellEscape, extractGlobalOptions } from '../utils.js';\nimport { CliExecutor } from '../executor.js';\nimport { GlobalOptionsSchema } from './schemas.js';\n\n// ===== 命令构建纯函数 =====\n\nexport function buildReactTreeCommand(): string { return 'react tree'; }\n\nexport function buildReactInspectCommand(params: Record<string, unknown>): string {\n return `react inspect ${shellEscape(params.fiberId as string)}`;\n}\n\nexport function buildReactRendersCommand(params: Record<string, unknown>): string {\n return `react renders ${params.action}`;\n}\n\nexport function buildReactSuspenseCommand(params: Record<string, unknown>): string {\n const parts = ['react suspense'];\n if (params.onlyDynamic) parts.push('--only-dynamic');\n return parts.join(' ');\n}\n\n// ===== Tool 注册 =====\n\nexport function registerReactTools(server: McpServer, executor: CliExecutor): void {\n server.tool('react_tree', 'Show full React component tree (requires --enable react-devtools)', { ...GlobalOptionsSchema }, async (args) => {\n const { global } = extractGlobalOptions(args);\n const result = await executor.execute(buildReactTreeCommand(), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('react_inspect', 'Inspect a single React component by fiber ID', {\n fiberId: z.string().describe('React fiber ID to inspect'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildReactInspectCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('react_renders', 'Start or stop React fiber render recording', {\n action: z.enum(['start', 'stop']).describe('Start or stop render recording'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildReactRendersCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('react_suspense', 'List React Suspense boundaries', {\n onlyDynamic: z.boolean().optional().describe('Hide static boundaries (--only-dynamic)'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildReactSuspenseCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { shellEscape, extractGlobalOptions } from '../utils.js';\nimport { CliExecutor } from '../executor.js';\nimport { GlobalOptionsSchema } from './schemas.js';\n\n// ===== 命令构建纯函数 =====\n\nexport function buildDoctorCommand(params: Record<string, unknown>): string {\n const parts = ['doctor'];\n if (params.fix) parts.push('--fix');\n return parts.join(' ');\n}\n\nexport function buildChatCommand(params: Record<string, unknown>): string {\n const parts = ['chat'];\n if (params.message) parts.push(shellEscape(params.message as string));\n if (params.model) parts.push(`--model ${shellEscape(params.model as string)}`);\n return parts.join(' ');\n}\n\nexport function buildPushstateCommand(params: Record<string, unknown>): string {\n return `pushstate ${shellEscape(params.url as string)}`;\n}\n\nexport function buildProfilesCommand(): string { return 'profiles'; }\n\nexport function buildSessionCommand(): string { return 'session'; }\n\nexport function buildVitalsCommand(params: Record<string, unknown>): string {\n const parts = ['vitals'];\n if (params.url) parts.push(shellEscape(params.url as string));\n return parts.join(' ');\n}\n\nexport function buildAddinitscriptCommand(params: Record<string, unknown>): string {\n return `addinitscript ${shellEscape(params.script as string)}`;\n}\n\nexport function buildRemoveinitscriptCommand(params: Record<string, unknown>): string {\n return `removeinitscript ${shellEscape(params.identifier as string)}`;\n}\n\n// ===== Tool 注册 =====\n\nexport function registerMiscTools(server: McpServer, executor: CliExecutor): void {\n server.tool('doctor', 'Diagnose agent-browser installation and configuration', {\n fix: z.boolean().optional().describe('Auto-fix issues (--fix)'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildDoctorCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('chat', 'Send a natural language instruction to the AI agent', {\n message: z.string().describe('Natural language instruction'),\n model: z.string().optional().describe('AI model name (--model)'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildChatCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('pushstate', 'SPA client-side navigation via history.pushState', {\n url: z.string().describe('URL to push to browser history'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildPushstateCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('profiles', 'List available Chrome profiles', { ...GlobalOptionsSchema }, async (args) => {\n const { global } = extractGlobalOptions(args);\n const result = await executor.execute(buildProfilesCommand(), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('session', 'Show current session name', { ...GlobalOptionsSchema }, async (args) => {\n const { global } = extractGlobalOptions(args);\n const result = await executor.execute(buildSessionCommand(), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('vitals', 'Measure Web Vitals (LCP/CLS/TTFB/FCP/INP)', {\n url: z.string().optional().describe('URL to measure (optional, uses current page)'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildVitalsCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('addinitscript', 'Register an init script at runtime', {\n script: z.string().describe('JavaScript code for the init script'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildAddinitscriptCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n\n server.tool('removeinitscript', 'Remove a previously registered init script', {\n identifier: z.string().describe('Init script identifier to remove'),\n ...GlobalOptionsSchema,\n }, async (args) => {\n const { global, rest } = extractGlobalOptions(args);\n const result = await executor.execute(buildRemoveinitscriptCommand(rest), global);\n return { content: [{ type: 'text' as const, text: result.stdout || 'OK' }], ...(result.error ? { isError: true } : {}) };\n });\n}\n","import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { CliExecutor } from '../executor.js';\nimport { registerNavigationTools } from './navigation.js';\nimport { registerInteractionTools } from './interaction.js';\nimport { registerQueryTools } from './query.js';\nimport { registerVisualTools } from './visual.js';\nimport { registerMouseTools } from './mouse.js';\nimport { registerKeyboardTools } from './keyboard.js';\nimport { registerBrowserSettingsTools } from './browser-settings.js';\nimport { registerNetworkTools } from './network.js';\nimport { registerStorageTools } from './storage.js';\nimport { registerTabTools } from './tabs.js';\nimport { registerDebugTools } from './debug.js';\nimport { registerAuthTools } from './auth.js';\nimport { registerBatchTools } from './batch.js';\nimport { registerSessionTools } from './sessions.js';\nimport { registerDialogTools } from './dialog.js';\nimport { registerConfirmationTools } from './confirmation.js';\nimport { registerStateTools } from './state.js';\nimport { registerDashboardTools } from './dashboard.js';\nimport { registerReactTools } from './react.js';\nimport { registerMiscTools } from './misc.js';\n\nexport function registerAllTools(server: McpServer, executor: CliExecutor): void {\n registerNavigationTools(server, executor);\n registerInteractionTools(server, executor);\n registerQueryTools(server, executor);\n registerVisualTools(server, executor);\n registerMouseTools(server, executor);\n registerKeyboardTools(server, executor);\n registerBrowserSettingsTools(server, executor);\n registerNetworkTools(server, executor);\n registerStorageTools(server, executor);\n registerTabTools(server, executor);\n registerDebugTools(server, executor);\n registerAuthTools(server, executor);\n registerBatchTools(server, executor);\n registerSessionTools(server, executor);\n registerDialogTools(server, executor);\n registerConfirmationTools(server, executor);\n registerStateTools(server, executor);\n registerDashboardTools(server, executor);\n registerReactTools(server, executor);\n registerMiscTools(server, executor);\n}\n","import { startServer } from './server.js';\n\nconst DEFAULT_PORT = 12347;\n\nfunction parsePort(): number {\n const args = process.argv.slice(2);\n const portIndex = args.indexOf('--port');\n if (portIndex !== -1 && args[portIndex + 1]) {\n const port = parseInt(args[portIndex + 1], 10);\n if (!isNaN(port) && port > 0 && port < 65536) return port;\n console.error(`Invalid port: ${args[portIndex + 1]}`);\n process.exit(1);\n }\n const envPort = process.env.PORT;\n if (envPort) {\n const port = parseInt(envPort, 10);\n if (!isNaN(port) && port > 0 && port < 65536) return port;\n }\n return DEFAULT_PORT;\n}\n\nasync function main() {\n const port = parsePort();\n\n const instance = await startServer(port);\n\n console.log(`Agent Browser MCP server running on http://localhost:${port}/mcp`);\n\n // 优雅关闭\n const shutdown = async () => {\n console.log('\\nShutting down...');\n await instance.close();\n process.exit(0);\n };\n\n process.on('SIGINT', shutdown);\n process.on('SIGTERM', shutdown);\n}\n\nmain().catch((err) => {\n console.error('Failed to start server:', err);\n process.exit(1);\n});\n"],"mappings":";;;AAAA,SAAS,oBAA2E;AACpF,SAAS,iBAAiB;AAC1B,SAAS,qCAAqC;AAC9C,SAAS,kBAAkB;;;ACH3B,SAAS,aAA2B;;;ACK7B,SAAS,YAAY,KAAqB;AAC/C,MAAI,CAAC,IAAK,QAAO;AAEjB,MAAI,6BAA6B,KAAK,GAAG,EAAG,QAAO;AAEnD,SAAO,MAAM,IAAI,QAAQ,MAAM,OAAO,IAAI;AAC5C;AAKO,SAAS,eAAe,KAAwC;AACrE,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,UAAM,SAAmB,CAAC;AAC1B,QAAI,GAAG,QAAQ,CAAC,UAAkB,OAAO,KAAK,KAAK,CAAC;AACpD,QAAI,GAAG,OAAO,MAAM;AAClB,YAAM,MAAM,OAAO,OAAO,MAAM,EAAE,SAAS,OAAO;AAClD,UAAI,CAAC,KAAK;AACR,gBAAQ,MAAS;AACjB;AAAA,MACF;AACA,UAAI;AACF,gBAAQ,KAAK,MAAM,GAAG,CAAC;AAAA,MACzB,SAAS,GAAG;AACV,eAAO,IAAI,MAAM,sBAAuB,EAAY,OAAO,EAAE,CAAC;AAAA,MAChE;AAAA,IACF,CAAC;AACD,QAAI,GAAG,SAAS,MAAM;AAAA,EACxB,CAAC;AACH;AAeO,SAAS,gBAAgB,SAAiC;AAC/D,MAAI,CAAC,QAAS,QAAO;AACrB,QAAM,OAAiB,CAAC;AAExB,MAAI,QAAQ,QAAS,MAAK,KAAK,aAAa,YAAY,QAAQ,OAAO,CAAC,EAAE;AAC1E,MAAI,QAAQ,OAAQ,MAAK,KAAK,UAAU;AACxC,MAAI,QAAQ,IAAK,MAAK,KAAK,SAAS,YAAY,QAAQ,GAAG,CAAC,EAAE;AAC9D,MAAI,QAAQ,QAAS,MAAK,KAAK,aAAa,YAAY,QAAQ,OAAO,CAAC,EAAE;AAC1E,MAAI,QAAQ,MAAO,MAAK,KAAK,WAAW,YAAY,QAAQ,KAAK,CAAC,EAAE;AACpE,MAAI,QAAQ,KAAM,MAAK,KAAK,QAAQ;AACpC,MAAI,QAAQ,MAAO,MAAK,KAAK,SAAS;AAEtC,SAAO,KAAK,KAAK,GAAG;AACtB;AAoBO,SAAS,qBAAqB,MAAyF;AAC5H,QAAM,aAAa,oBAAI,IAAI,CAAC,WAAW,UAAU,OAAO,WAAW,SAAS,QAAQ,OAAO,CAAC;AAC5F,QAAM,SAAwB,CAAC;AAC/B,QAAM,OAAgC,CAAC;AAEvC,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,IAAI,GAAG;AAC/C,QAAI,WAAW,IAAI,GAAG,GAAG;AACvB,MAAC,OAAmC,GAAG,IAAI;AAAA,IAC7C,OAAO;AACL,WAAK,GAAG,IAAI;AAAA,IACd;AAAA,EACF;AAEA,SAAO,EAAE,QAAQ,KAAK;AACxB;;;ADjFA,IAAM,kBAAgD;AAAA,EACpD,SAAS;AAAA,EACT,SAAS;AACX;AAEO,IAAM,cAAN,MAAkB;AAAA,EACf;AAAA,EACA,kBAAkB,oBAAI,IAAkB;AAAA,EAEhD,YAAY,SAA8B;AACxC,SAAK,UAAU,EAAE,GAAG,iBAAiB,GAAG,QAAQ;AAAA,EAClD;AAAA,EAEA,MAAM,QAAQ,SAAiB,eAAmD;AAChF,UAAM,UAAU,KAAK,QAAQ;AAC7B,UAAM,UAAU,KAAK,QAAQ;AAG7B,UAAM,aAAa,gBAAgB,aAAa;AAChD,UAAM,cAAc,aAAa,GAAG,OAAO,IAAI,UAAU,KAAK;AAE9D,WAAO,IAAI,QAAQ,CAAC,YAAY;AAC9B,YAAM,OAAO,MAAM,SAAS,CAAC,WAAW,GAAG;AAAA,QACzC,OAAO;AAAA,QACP,KAAK,EAAE,GAAG,QAAQ,IAAI;AAAA,MACxB,CAAC;AAED,WAAK,gBAAgB,IAAI,IAAI;AAE7B,UAAI,SAAS;AACb,UAAI,SAAS;AACb,UAAI,UAAU;AAEd,YAAM,SAAS,CAAC,UAAmB;AACjC,YAAI,QAAS;AACb,kBAAU;AACV,aAAK,gBAAgB,OAAO,IAAI;AAChC,gBAAQ,EAAE,QAAQ,QAAQ,UAAU,KAAK,YAAY,IAAI,MAAM,CAAC;AAAA,MAClE;AAEA,WAAK,QAAQ,GAAG,QAAQ,CAAC,UAAkB;AACzC,kBAAU,MAAM,SAAS;AAAA,MAC3B,CAAC;AAED,WAAK,QAAQ,GAAG,QAAQ,CAAC,UAAkB;AACzC,kBAAU,MAAM,SAAS;AAAA,MAC3B,CAAC;AAED,WAAK,GAAG,SAAS,CAAC,SAAS;AACzB,YAAI,SAAS,GAAG;AACd,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO,UAAU,4BAA4B,IAAI,EAAE;AAAA,QACrD;AAAA,MACF,CAAC;AAED,WAAK,GAAG,SAAS,CAAC,QAAQ;AACxB,eAAO,IAAI,OAAO;AAAA,MACpB,CAAC;AAGD,iBAAW,MAAM;AACf,YAAI,CAAC,SAAS;AACZ,eAAK,KAAK,SAAS;AACnB,iBAAO,2BAA2B,OAAO,IAAI;AAAA,QAC/C;AAAA,MACF,GAAG,OAAO;AAAA,IACZ,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,QAAuB;AAC3B,eAAW,QAAQ,KAAK,iBAAiB;AACvC,WAAK,KAAK,SAAS;AAAA,IACrB;AACA,SAAK,gBAAgB,MAAM;AAAA,EAC7B;AACF;;;AE3FA,SAAS,KAAAA,UAAS;;;ACAlB,SAAS,SAAS;AAKX,IAAM,sBAAsB;AAAA,EACjC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,2CAA2C;AAAA,EACnF,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,8CAA8C;AAAA,EACtF,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,0DAA0D;AAAA,EAC9F,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,mDAAmD;AAAA,EAC3F,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,4BAA4B;AAAA,EAClE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,sBAAsB;AAAA,EAC5D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,wBAAwB;AACjE;AAKO,IAAM,iBAAiB,EAAE,OAAO,EAAE,SAAS,wDAAwD;AAKnG,IAAM,kBAAkB,EAAE,KAAK,CAAC,MAAM,QAAQ,QAAQ,OAAO,CAAC;;;ADf9D,SAAS,iBAAiB,QAAyC;AACxE,QAAM,QAAQ,CAAC,QAAQ,YAAY,OAAO,GAAa,CAAC,EAAE;AAC1D,MAAI,OAAO,QAAS,OAAM,KAAK,aAAa,YAAY,OAAO,OAAiB,CAAC,EAAE;AACnF,SAAO,MAAM,KAAK,GAAG;AACvB;AAEO,SAAS,oBAAoB,QAAyC;AAC3E,SAAO,WAAW,YAAY,OAAO,MAAgB,CAAC;AACxD;AAEO,SAAS,kBAAkB,QAAyC;AACzE,QAAM,QAAQ,CAAC,OAAO;AACtB,MAAI,OAAO,IAAK,OAAM,KAAK,OAAO;AAClC,SAAO,MAAM,KAAK,GAAG;AACvB;AAEO,SAAS,mBAA2B;AAAE,SAAO;AAAQ;AACrD,SAAS,sBAA8B;AAAE,SAAO;AAAW;AAC3D,SAAS,qBAA6B;AAAE,SAAO;AAAU;AAIzD,SAAS,wBAAwB,QAAmB,UAA6B;AACtF,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,KAAKC,GAAE,OAAO,EAAE,SAAS,oBAAoB;AAAA,MAC7C,SAASA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS,6BAA6B;AAAA,MACrE,GAAG;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AACd,YAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,YAAM,MAAM,iBAAiB,IAAI;AACjC,YAAM,SAAS,MAAM,SAAS,QAAQ,KAAK,MAAM;AACjD,aAAO;AAAA,QACL,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC;AAAA,QAChE,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC;AAAA,MAC1C;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,EAAE,GAAG,oBAAoB;AAAA,IACzB,OAAO,SAAS;AACd,YAAM,EAAE,OAAO,IAAI,qBAAqB,IAAI;AAC5C,YAAM,SAAS,MAAM,SAAS,QAAQ,iBAAiB,GAAG,MAAM;AAChE,aAAO;AAAA,QACL,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC;AAAA,QAChE,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC;AAAA,MAC1C;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,EAAE,GAAG,oBAAoB;AAAA,IACzB,OAAO,SAAS;AACd,YAAM,EAAE,OAAO,IAAI,qBAAqB,IAAI;AAC5C,YAAM,SAAS,MAAM,SAAS,QAAQ,oBAAoB,GAAG,MAAM;AACnE,aAAO;AAAA,QACL,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC;AAAA,QAChE,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC;AAAA,MAC1C;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,EAAE,GAAG,oBAAoB;AAAA,IACzB,OAAO,SAAS;AACd,YAAM,EAAE,OAAO,IAAI,qBAAqB,IAAI;AAC5C,YAAM,SAAS,MAAM,SAAS,QAAQ,mBAAmB,GAAG,MAAM;AAClE,aAAO;AAAA,QACL,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC;AAAA,QAChE,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC;AAAA,MAC1C;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,KAAKA,GAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,6BAA6B;AAAA,MAClE,GAAG;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AACd,YAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,YAAM,MAAM,kBAAkB,IAAI;AAClC,YAAM,SAAS,MAAM,SAAS,QAAQ,KAAK,MAAM;AACjD,aAAO;AAAA,QACL,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC;AAAA,QAChE,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC;AAAA,MAC1C;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,QAAQA,GAAE,OAAO,EAAE,SAAS,sCAAsC;AAAA,MAClE,GAAG;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AACd,YAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,YAAM,MAAM,oBAAoB,IAAI;AACpC,YAAM,SAAS,MAAM,SAAS,QAAQ,KAAK,MAAM;AACjD,aAAO;AAAA,QACL,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC;AAAA,QAChE,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC;AAAA,MAC1C;AAAA,IACF;AAAA,EACF;AACF;;;AE/HA,SAAS,KAAAC,UAAS;AAQX,SAAS,kBAAkB,QAAyC;AACzE,QAAM,QAAQ,CAAC,SAAS,YAAY,OAAO,QAAkB,CAAC,EAAE;AAChE,MAAI,OAAO,OAAQ,OAAM,KAAK,WAAW;AACzC,SAAO,MAAM,KAAK,GAAG;AACvB;AAEO,SAAS,qBAAqB,QAAyC;AAC5E,SAAO,YAAY,YAAY,OAAO,QAAkB,CAAC;AAC3D;AAEO,SAAS,iBAAiB,QAAyC;AACxE,SAAO,QAAQ,YAAY,OAAO,QAAkB,CAAC,IAAI,YAAY,OAAO,IAAc,CAAC;AAC7F;AAEO,SAAS,iBAAiB,QAAyC;AACxE,SAAO,QAAQ,YAAY,OAAO,QAAkB,CAAC,IAAI,YAAY,OAAO,IAAc,CAAC;AAC7F;AAEO,SAAS,kBAAkB,QAAyC;AACzE,SAAO,SAAS,YAAY,OAAO,GAAa,CAAC;AACnD;AAEO,SAAS,kBAAkB,QAAyC;AACzE,SAAO,SAAS,YAAY,OAAO,QAAkB,CAAC;AACxD;AAEO,SAAS,kBAAkB,QAAyC;AACzE,SAAO,SAAS,YAAY,OAAO,QAAkB,CAAC;AACxD;AAEO,SAAS,kBAAkB,QAAyC;AACzE,SAAO,SAAS,YAAY,OAAO,QAAkB,CAAC;AACxD;AAEO,SAAS,oBAAoB,QAAyC;AAC3E,SAAO,WAAW,YAAY,OAAO,QAAkB,CAAC;AAC1D;AAEO,SAAS,mBAAmB,QAAyC;AAC1E,QAAM,SAAU,OAAO,OAAoB,IAAI,CAAC,MAAc,YAAY,CAAC,CAAC,EAAE,KAAK,GAAG;AACtF,SAAO,UAAU,YAAY,OAAO,QAAkB,CAAC,IAAI,MAAM;AACnE;AAEO,SAAS,iBAAiB,QAAyC;AACxE,SAAO,QAAQ,YAAY,OAAO,MAAgB,CAAC,IAAI,YAAY,OAAO,MAAgB,CAAC;AAC7F;AAEO,SAAS,mBAAmB,QAAyC;AAC1E,QAAM,QAAS,OAAO,MAAmB,IAAI,CAAC,MAAc,YAAY,CAAC,CAAC,EAAE,KAAK,GAAG;AACpF,SAAO,UAAU,YAAY,OAAO,QAAkB,CAAC,IAAI,KAAK;AAClE;AAEO,SAAS,qBAAqB,QAAyC;AAC5E,SAAO,YAAY,YAAY,OAAO,QAAkB,CAAC,IAAI,YAAY,OAAO,IAAc,CAAC;AACjG;AAEO,SAAS,mBAAmB,QAAyC;AAC1E,QAAM,MAAO,OAAO,aAAwB;AAC5C,QAAM,SAAU,OAAO,UAAqB;AAC5C,MAAI,MAAM,UAAU,GAAG,IAAI,MAAM;AACjC,MAAI,OAAO,SAAU,QAAO,OAAO,YAAY,OAAO,QAAkB,CAAC;AACzE,SAAO;AACT;AAEO,SAAS,2BAA2B,QAAyC;AAClF,SAAO,kBAAkB,YAAY,OAAO,QAAkB,CAAC;AACjE;AAEO,SAAS,iBAAiB,QAAyC;AACxE,QAAM,SAAS,OAAO;AAEtB,MAAI,QAAQ,KAAK,MAAM,EAAG,QAAO,QAAQ,MAAM;AAE/C,SAAO,QAAQ,YAAY,MAAM,CAAC;AACpC;AAIO,SAAS,yBAAyB,QAAmB,UAA6B;AACvF,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,UAAU;AAAA,MACV,QAAQC,GAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,sBAAsB;AAAA,MAC9D,GAAG;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AACd,YAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,YAAM,SAAS,MAAM,SAAS,QAAQ,kBAAkB,IAAI,GAAG,MAAM;AACrE,aAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,IACzH;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,UAAU;AAAA,MACV,GAAG;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AACd,YAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,YAAM,SAAS,MAAM,SAAS,QAAQ,qBAAqB,IAAI,GAAG,MAAM;AACxE,aAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,IACzH;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,UAAU;AAAA,MACV,MAAMA,GAAE,OAAO,EAAE,SAAS,cAAc;AAAA,MACxC,GAAG;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AACd,YAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,YAAM,SAAS,MAAM,SAAS,QAAQ,iBAAiB,IAAI,GAAG,MAAM;AACpE,aAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,IACzH;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,UAAU;AAAA,MACV,MAAMA,GAAE,OAAO,EAAE,SAAS,cAAc;AAAA,MACxC,GAAG;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AACd,YAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,YAAM,SAAS,MAAM,SAAS,QAAQ,iBAAiB,IAAI,GAAG,MAAM;AACpE,aAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,IACzH;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,KAAKA,GAAE,OAAO,EAAE,SAAS,4CAA4C;AAAA,MACrE,GAAG;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AACd,YAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,YAAM,SAAS,MAAM,SAAS,QAAQ,kBAAkB,IAAI,GAAG,MAAM;AACrE,aAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,IACzH;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,UAAU;AAAA,MACV,GAAG;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AACd,YAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,YAAM,SAAS,MAAM,SAAS,QAAQ,kBAAkB,IAAI,GAAG,MAAM;AACrE,aAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,IACzH;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,UAAU;AAAA,MACV,GAAG;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AACd,YAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,YAAM,SAAS,MAAM,SAAS,QAAQ,kBAAkB,IAAI,GAAG,MAAM;AACrE,aAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,IACzH;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,UAAU;AAAA,MACV,GAAG;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AACd,YAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,YAAM,SAAS,MAAM,SAAS,QAAQ,kBAAkB,IAAI,GAAG,MAAM;AACrE,aAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,IACzH;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,UAAU;AAAA,MACV,GAAG;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AACd,YAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,YAAM,SAAS,MAAM,SAAS,QAAQ,oBAAoB,IAAI,GAAG,MAAM;AACvE,aAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,IACzH;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,UAAU;AAAA,MACV,QAAQA,GAAE,MAAMA,GAAE,OAAO,CAAC,EAAE,SAAS,2BAA2B;AAAA,MAChE,GAAG;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AACd,YAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,YAAM,SAAS,MAAM,SAAS,QAAQ,mBAAmB,IAAI,GAAG,MAAM;AACtE,aAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,IACzH;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,QAAQA,GAAE,OAAO,EAAE,SAAS,iCAAiC;AAAA,MAC7D,QAAQA,GAAE,OAAO,EAAE,SAAS,iCAAiC;AAAA,MAC7D,GAAG;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AACd,YAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,YAAM,SAAS,MAAM,SAAS,QAAQ,iBAAiB,IAAI,GAAG,MAAM;AACpE,aAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,IACzH;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,UAAU;AAAA,MACV,OAAOA,GAAE,MAAMA,GAAE,OAAO,CAAC,EAAE,SAAS,wBAAwB;AAAA,MAC5D,GAAG;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AACd,YAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,YAAM,SAAS,MAAM,SAAS,QAAQ,mBAAmB,IAAI,GAAG,MAAM;AACtE,aAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,IACzH;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,UAAU;AAAA,MACV,MAAMA,GAAE,OAAO,EAAE,SAAS,2BAA2B;AAAA,MACrD,GAAG;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AACd,YAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,YAAM,SAAS,MAAM,SAAS,QAAQ,qBAAqB,IAAI,GAAG,MAAM;AACxE,aAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,IACzH;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,WAAWA,GAAE,KAAK,CAAC,MAAM,QAAQ,QAAQ,OAAO,CAAC,EAAE,SAAS,EAAE,SAAS,kCAAkC;AAAA,MACzG,QAAQA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS,iCAAiC;AAAA,MACxE,UAAUA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS,+BAA+B;AAAA,MACxE,GAAG;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AACd,YAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,YAAM,SAAS,MAAM,SAAS,QAAQ,mBAAmB,IAAI,GAAG,MAAM;AACtE,aAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,IACzH;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,UAAU;AAAA,MACV,GAAG;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AACd,YAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,YAAM,SAAS,MAAM,SAAS,QAAQ,2BAA2B,IAAI,GAAG,MAAM;AAC9E,aAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,IACzH;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,QAAQA,GAAE,OAAO,EAAE,SAAS,6CAA6C;AAAA,MACzE,GAAG;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AACd,YAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,YAAM,SAAS,MAAM,SAAS,QAAQ,iBAAiB,IAAI,GAAG,MAAM;AACpE,aAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,IACzH;AAAA,EACF;AACF;;;AC/TA,SAAS,KAAAC,UAAS;AAQX,SAAS,qBAAqB,QAAyC;AAC5E,QAAM,QAAQ,CAAC,UAAU;AACzB,MAAI,OAAO,YAAa,OAAM,KAAK,IAAI;AACvC,MAAI,OAAO,QAAS,OAAM,KAAK,IAAI;AACnC,MAAI,OAAO,MAAO,OAAM,KAAK,MAAM,OAAO,KAAK,EAAE;AACjD,MAAI,OAAO,SAAU,OAAM,KAAK,MAAM,YAAY,OAAO,QAAkB,CAAC,EAAE;AAC9E,SAAO,MAAM,KAAK,GAAG;AACvB;AAEO,SAAS,gBAAgB,QAAyC;AACvE,QAAM,OAAO,OAAO;AACpB,QAAM,QAAQ,CAAC,OAAO,IAAI,EAAE;AAC5B,MAAI,OAAO,SAAU,OAAM,KAAK,YAAY,OAAO,QAAkB,CAAC;AACtE,MAAI,SAAS,UAAU,OAAO,UAAW,OAAM,KAAK,YAAY,OAAO,SAAmB,CAAC;AAC3F,SAAO,MAAM,KAAK,GAAG;AACvB;AAEO,SAAS,eAAe,QAAyC;AACtE,SAAO,MAAM,OAAO,IAAI,IAAI,YAAY,OAAO,QAAkB,CAAC;AACpE;AAEO,SAAS,iBAAiB,QAAyC;AACxE,QAAM,QAAQ,CAAC,QAAQ,OAAO,OAAO,IAAI,YAAY,OAAO,KAAe,CAAC,EAAE;AAC9E,MAAI,OAAO,OAAQ,OAAM,KAAK,OAAO,MAAgB;AACrD,MAAI,OAAO,WAAY,OAAM,KAAK,YAAY,OAAO,UAAoB,CAAC;AAC1E,MAAI,OAAO,KAAM,OAAM,KAAK,UAAU,YAAY,OAAO,IAAc,CAAC,EAAE;AAC1E,MAAI,OAAO,MAAO,OAAM,KAAK,SAAS;AACtC,SAAO,MAAM,KAAK,GAAG;AACvB;AAEO,SAAS,iBAAiB,QAAyC;AACxE,SAAO,QAAQ,YAAY,OAAO,MAAgB,CAAC;AACrD;AAIO,SAAS,mBAAmB,QAAmB,UAA6B;AACjF,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,aAAaC,GAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,gCAAgC;AAAA,MAC7E,SAASA,GAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,uCAAuC;AAAA,MAChF,OAAOA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS,uBAAuB;AAAA,MAC7D,UAAUA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS,4BAA4B;AAAA,MACrE,GAAG;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AACd,YAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,YAAM,SAAS,MAAM,SAAS,QAAQ,qBAAqB,IAAI,GAAG,MAAM;AACxE,aAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,IACzH;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,MAAMA,GAAE,KAAK,CAAC,QAAQ,QAAQ,SAAS,QAAQ,SAAS,OAAO,SAAS,OAAO,UAAU,SAAS,CAAC,EAAE,SAAS,aAAa;AAAA,MAC3H,UAAUA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS,yDAAyD;AAAA,MAClG,WAAWA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS,0CAA0C;AAAA,MACpF,GAAG;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AACd,YAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,YAAM,SAAS,MAAM,SAAS,QAAQ,gBAAgB,IAAI,GAAG,MAAM;AACnE,aAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,IACzH;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,MAAMA,GAAE,KAAK,CAAC,WAAW,WAAW,SAAS,CAAC,EAAE,SAAS,gBAAgB;AAAA,MACzE,UAAU;AAAA,MACV,GAAG;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AACd,YAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,YAAM,SAAS,MAAM,SAAS,QAAQ,eAAe,IAAI,GAAG,MAAM;AAClE,aAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,IACzH;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,SAASA,GAAE,KAAK,CAAC,QAAQ,QAAQ,SAAS,eAAe,OAAO,SAAS,UAAU,SAAS,QAAQ,KAAK,CAAC,EAAE,SAAS,kBAAkB;AAAA,MACvI,OAAOA,GAAE,OAAO,EAAE,SAAS,6BAA6B;AAAA,MACxD,QAAQA,GAAE,KAAK,CAAC,SAAS,QAAQ,QAAQ,SAAS,SAAS,SAAS,SAAS,CAAC,EAAE,SAAS,EAAE,SAAS,oCAAoC;AAAA,MACxI,YAAYA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS,4BAA4B;AAAA,MACvE,MAAMA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS,gCAAgC;AAAA,MACrE,OAAOA,GAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,aAAa;AAAA,MACpD,GAAG;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AACd,YAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,YAAM,SAAS,MAAM,SAAS,QAAQ,iBAAiB,IAAI,GAAG,MAAM;AACpE,aAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,IACzH;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,QAAQA,GAAE,OAAO,EAAE,SAAS,mCAAmC;AAAA,MAC/D,GAAG;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AACd,YAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,YAAM,SAAS,MAAM,SAAS,QAAQ,iBAAiB,IAAI,GAAG,MAAM;AACpE,aAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,IACzH;AAAA,EACF;AACF;;;AC7HA,SAAS,KAAAC,UAAS;AAQX,SAAS,uBAAuB,QAAyC;AAC9E,QAAM,QAAQ,CAAC,YAAY;AAC3B,MAAI,OAAO,KAAM,OAAM,KAAK,QAAQ;AACpC,MAAI,OAAO,SAAU,OAAM,KAAK,YAAY;AAC5C,MAAI,OAAO,SAAU,OAAM,KAAK,YAAY,OAAO,QAAkB,CAAC;AACtE,MAAI,OAAO,KAAM,OAAM,KAAK,YAAY,OAAO,IAAc,CAAC;AAC9D,MAAI,OAAO,OAAQ,OAAM,KAAK,uBAAuB,OAAO,MAAM,EAAE;AACpE,MAAI,OAAO,YAAY,OAAW,OAAM,KAAK,wBAAwB,OAAO,OAAO,EAAE;AACrF,SAAO,MAAM,KAAK,GAAG;AACvB;AAEO,SAAS,gBAAgB,QAAyC;AACvE,SAAO,OAAO,YAAY,OAAO,IAAc,CAAC;AAClD;AAEO,SAAS,yBAAyB,QAAyC;AAChF,SAAO;AACT;AAEO,SAAS,2BAA2B,QAAyC;AAClF,QAAM,QAAQ,CAAC,iBAAiB;AAChC,MAAI,OAAO,SAAU,OAAM,KAAK,cAAc,YAAY,OAAO,QAAkB,CAAC,EAAE;AACtF,SAAO,MAAM,KAAK,GAAG;AACvB;AAEO,SAAS,oBAAoB,QAAyC;AAC3E,SAAO,YAAY,YAAY,OAAO,IAAc,CAAC,IAAI,YAAY,OAAO,IAAc,CAAC;AAC7F;AAEO,SAAS,sBAAsB,QAAyC;AAC7E,SAAO,aAAa,YAAY,OAAO,QAAkB,CAAC;AAC5D;AAIO,SAAS,oBAAoB,QAAmB,UAA6B;AAClF,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,UAAUC,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS,gCAAgC;AAAA,MACzE,MAAMA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS,kBAAkB;AAAA,MACvD,MAAMA,GAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,+BAA+B;AAAA,MACrE,UAAUA,GAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,wDAAwD;AAAA,MAClG,QAAQA,GAAE,KAAK,CAAC,OAAO,MAAM,CAAC,EAAE,SAAS,EAAE,SAAS,mBAAmB;AAAA,MACvE,SAASA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS,oBAAoB;AAAA,MAC5D,GAAG;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AACd,YAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,YAAM,SAAS,MAAM,SAAS,QAAQ,uBAAuB,IAAI,GAAG,MAAM;AAC1E,aAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,IACzH;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,MAAMA,GAAE,OAAO,EAAE,SAAS,sBAAsB;AAAA,MAChD,GAAG;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AACd,YAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,YAAM,SAAS,MAAM,SAAS,QAAQ,gBAAgB,IAAI,GAAG,MAAM;AACnE,aAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,IACzH;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,EAAE,GAAG,oBAAoB;AAAA,IACzB,OAAO,SAAS;AACd,YAAM,EAAE,OAAO,IAAI,qBAAqB,IAAI;AAC5C,YAAM,SAAS,MAAM,SAAS,QAAQ,yBAAyB,CAAC,CAAC,GAAG,MAAM;AAC1E,aAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,IACzH;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,UAAUA,GAAE,OAAO,EAAE,SAAS,wBAAwB;AAAA,MACtD,GAAG;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AACd,YAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,YAAM,SAAS,MAAM,SAAS,QAAQ,2BAA2B,IAAI,GAAG,MAAM;AAC9E,aAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,IACzH;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,MAAMA,GAAE,OAAO,EAAE,SAAS,WAAW;AAAA,MACrC,MAAMA,GAAE,OAAO,EAAE,SAAS,YAAY;AAAA,MACtC,GAAG;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AACd,YAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,YAAM,SAAS,MAAM,SAAS,QAAQ,oBAAoB,IAAI,GAAG,MAAM;AACvE,aAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,IACzH;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,UAAU;AAAA,MACV,GAAG;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AACd,YAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,YAAM,SAAS,MAAM,SAAS,QAAQ,sBAAsB,IAAI,GAAG,MAAM;AACzE,aAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,IACzH;AAAA,EACF;AACF;;;AClIA,SAAS,KAAAC,UAAS;AAQX,SAAS,sBAAsB,QAAyC;AAC7E,SAAO,cAAc,OAAO,CAAC,IAAI,OAAO,CAAC;AAC3C;AAEO,SAAS,sBAAsB,QAAyC;AAC7E,QAAM,MAAM,OAAO,SAAS,IAAI,OAAO,MAAM,KAAK;AAClD,SAAO,aAAa,GAAG;AACzB;AAEO,SAAS,oBAAoB,QAAyC;AAC3E,QAAM,MAAM,OAAO,SAAS,IAAI,OAAO,MAAM,KAAK;AAClD,SAAO,WAAW,GAAG;AACvB;AAEO,SAAS,uBAAuB,QAAyC;AAC9E,QAAM,KAAK,OAAO,SAAS,IAAI,OAAO,MAAM,KAAK;AACjD,SAAO,eAAe,OAAO,MAAM,GAAG,EAAE;AAC1C;AAIO,SAAS,mBAAmB,QAAmB,UAA6B;AACjF,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,GAAGC,GAAE,OAAO,EAAE,SAAS,cAAc;AAAA,MACrC,GAAGA,GAAE,OAAO,EAAE,SAAS,cAAc;AAAA,MACrC,GAAG;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AACd,YAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,YAAM,SAAS,MAAM,SAAS,QAAQ,sBAAsB,IAAI,GAAG,MAAM;AACzE,aAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,IACzH;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,QAAQA,GAAE,KAAK,CAAC,QAAQ,SAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,SAAS,8BAA8B;AAAA,MAC9F,GAAG;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AACd,YAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,YAAM,SAAS,MAAM,SAAS,QAAQ,sBAAsB,IAAI,GAAG,MAAM;AACzE,aAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,IACzH;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,QAAQA,GAAE,KAAK,CAAC,QAAQ,SAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,SAAS,8BAA8B;AAAA,MAC9F,GAAG;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AACd,YAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,YAAM,SAAS,MAAM,SAAS,QAAQ,oBAAoB,IAAI,GAAG,MAAM;AACvE,aAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,IACzH;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,QAAQA,GAAE,OAAO,EAAE,SAAS,wBAAwB;AAAA,MACpD,QAAQA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS,0BAA0B;AAAA,MACjE,GAAG;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AACd,YAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,YAAM,SAAS,MAAM,SAAS,QAAQ,uBAAuB,IAAI,GAAG,MAAM;AAC1E,aAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,IACzH;AAAA,EACF;AACF;;;ACvFA,SAAS,KAAAC,UAAS;AAQX,SAAS,yBAAyB,QAAyC;AAChF,SAAO,iBAAiB,YAAY,OAAO,IAAc,CAAC;AAC5D;AAEO,SAAS,2BAA2B,QAAyC;AAClF,SAAO,uBAAuB,YAAY,OAAO,IAAc,CAAC;AAClE;AAEO,SAAS,oBAAoB,QAAyC;AAC3E,SAAO,WAAW,YAAY,OAAO,GAAa,CAAC;AACrD;AAEO,SAAS,kBAAkB,QAAyC;AACzE,SAAO,SAAS,YAAY,OAAO,GAAa,CAAC;AACnD;AAIO,SAAS,sBAAsB,QAAmB,UAA6B;AACpF,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,MAAMC,GAAE,OAAO,EAAE,SAAS,cAAc;AAAA,MACxC,GAAG;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AACd,YAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,YAAM,SAAS,MAAM,SAAS,QAAQ,yBAAyB,IAAI,GAAG,MAAM;AAC5E,aAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,IACzH;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,MAAMA,GAAE,OAAO,EAAE,SAAS,gBAAgB;AAAA,MAC1C,GAAG;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AACd,YAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,YAAM,SAAS,MAAM,SAAS,QAAQ,2BAA2B,IAAI,GAAG,MAAM;AAC9E,aAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,IACzH;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,KAAKA,GAAE,OAAO,EAAE,SAAS,8CAA8C;AAAA,MACvE,GAAG;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AACd,YAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,YAAM,SAAS,MAAM,SAAS,QAAQ,oBAAoB,IAAI,GAAG,MAAM;AACvE,aAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,IACzH;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,MACE,KAAKA,GAAE,OAAO,EAAE,SAAS,4CAA4C;AAAA,MACrE,GAAG;AAAA,IACL;AAAA,IACA,OAAO,SAAS;AACd,YAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,YAAM,SAAS,MAAM,SAAS,QAAQ,kBAAkB,IAAI,GAAG,MAAM;AACrE,aAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,IACzH;AAAA,EACF;AACF;;;AClFA,SAAS,KAAAC,UAAS;AAQX,SAAS,wBAAwB,QAAyC;AAC/E,SAAO,gBAAgB,OAAO,KAAK,IAAI,OAAO,MAAM;AACtD;AAEO,SAAS,sBAAsB,QAAyC;AAC7E,SAAO,cAAc,YAAY,OAAO,MAAgB,CAAC;AAC3D;AAEO,SAAS,2BAA2B,QAAyC;AAClF,SAAO,WAAW,OAAO,QAAQ,IAAI,OAAO,SAAS;AACvD;AAEO,SAAS,uBAAuB,QAAyC;AAC9E,QAAM,UAAU,OAAO,YAAY;AACnC,SAAO,eAAe,UAAU,OAAO,KAAK;AAC9C;AAEO,SAAS,uBAAuB,QAAyC;AAC9E,SAAO,eAAe,YAAY,OAAO,OAAiB,CAAC;AAC7D;AAEO,SAAS,2BAA2B,QAAyC;AAClF,SAAO,mBAAmB,YAAY,OAAO,QAAkB,CAAC,IAAI,YAAY,OAAO,QAAkB,CAAC;AAC5G;AAEO,SAAS,2BAA2B,QAAyC;AAClF,QAAM,QAAQ,CAAC,WAAW;AAC1B,MAAI,OAAO,OAAQ,OAAM,KAAK,OAAO,MAAgB;AACrD,SAAO,MAAM,KAAK,GAAG;AACvB;AAIO,SAAS,6BAA6B,QAAmB,UAA6B;AAC3F,SAAO,KAAK,gBAAgB,6BAA6B;AAAA,IACvD,OAAOC,GAAE,OAAO,EAAE,SAAS,gBAAgB;AAAA,IAC3C,QAAQA,GAAE,OAAO,EAAE,SAAS,iBAAiB;AAAA,IAC7C,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,wBAAwB,IAAI,GAAG,MAAM;AAC3E,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,cAAc,oBAAoB;AAAA,IAC5C,QAAQA,GAAE,OAAO,EAAE,SAAS,qCAAqC;AAAA,IACjE,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,sBAAsB,IAAI,GAAG,MAAM;AACzE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,mBAAmB,mBAAmB;AAAA,IAChD,UAAUA,GAAE,OAAO,EAAE,SAAS,UAAU;AAAA,IACxC,WAAWA,GAAE,OAAO,EAAE,SAAS,WAAW;AAAA,IAC1C,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,2BAA2B,IAAI,GAAG,MAAM;AAC9E,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,eAAe,uBAAuB;AAAA,IAChD,SAASA,GAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,qCAAqC;AAAA,IAC9E,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,uBAAuB,IAAI,GAAG,MAAM;AAC1E,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,eAAe,oBAAoB;AAAA,IAC7C,SAASA,GAAE,OAAO,EAAE,SAAS,wBAAwB;AAAA,IACrD,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,uBAAuB,IAAI,GAAG,MAAM;AAC1E,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,mBAAmB,uCAAuC;AAAA,IACpE,UAAUA,GAAE,OAAO,EAAE,SAAS,UAAU;AAAA,IACxC,UAAUA,GAAE,OAAO,EAAE,SAAS,UAAU;AAAA,IACxC,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,2BAA2B,IAAI,GAAG,MAAM;AAC9E,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,oBAAoB,+BAA+B;AAAA,IAC7D,QAAQA,GAAE,KAAK,CAAC,QAAQ,OAAO,CAAC,EAAE,SAAS,EAAE,SAAS,cAAc;AAAA,IACpE,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,2BAA2B,IAAI,GAAG,MAAM;AAC9E,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AACH;;;AC3GA,SAAS,KAAAC,UAAS;AAQX,SAAS,yBAAyB,QAAyC;AAChF,QAAM,QAAQ,CAAC,iBAAiB,YAAY,OAAO,GAAa,CAAC,EAAE;AACnE,MAAI,OAAO,MAAO,OAAM,KAAK,SAAS;AACtC,MAAI,OAAO,KAAM,OAAM,KAAK,UAAU,YAAY,OAAO,IAAc,CAAC,EAAE;AAC1E,SAAO,MAAM,KAAK,GAAG;AACvB;AAEO,SAAS,2BAA2B,QAAyC;AAClF,MAAI,OAAO,IAAK,QAAO,mBAAmB,YAAY,OAAO,GAAa,CAAC;AAC3E,SAAO;AACT;AAEO,SAAS,4BAA4B,QAAyC;AACnF,QAAM,QAAQ,CAAC,kBAAkB;AACjC,MAAI,OAAO,MAAO,OAAM,KAAK,SAAS;AACtC,MAAI,OAAO,OAAQ,OAAM,KAAK,YAAY,YAAY,OAAO,MAAgB,CAAC,EAAE;AAChF,SAAO,MAAM,KAAK,GAAG;AACvB;AAEO,SAAS,iCAAiC,QAAyC;AACxF,SAAO,mBAAmB,YAAY,OAAO,SAAmB,CAAC;AACnE;AAEO,SAAS,uBAAuB,QAAyC;AAC9E,QAAM,QAAQ,CAAC,eAAe,OAAO,MAAM,EAAE;AAC7C,MAAI,OAAO,KAAM,OAAM,KAAK,YAAY,OAAO,IAAc,CAAC;AAC9D,SAAO,MAAM,KAAK,GAAG;AACvB;AAIO,SAAS,qBAAqB,QAAmB,UAA6B;AACnF,SAAO,KAAK,iBAAiB,6CAA6C;AAAA,IACxE,KAAKC,GAAE,OAAO,EAAE,SAAS,0BAA0B;AAAA,IACnD,OAAOA,GAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,mBAAmB;AAAA,IAC1D,MAAMA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS,gCAAgC;AAAA,IACrE,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,yBAAyB,IAAI,GAAG,MAAM;AAC5E,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,mBAAmB,0BAA0B;AAAA,IACvD,KAAKA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS,4CAA4C;AAAA,IAChF,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,2BAA2B,IAAI,GAAG,MAAM;AAC9E,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,oBAAoB,yBAAyB;AAAA,IACvD,OAAOA,GAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,6BAA6B;AAAA,IACpE,QAAQA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS,2BAA2B;AAAA,IAClE,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,4BAA4B,IAAI,GAAG,MAAM;AAC/E,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,0BAA0B,yCAAyC;AAAA,IAC7E,WAAWA,GAAE,OAAO,EAAE,SAAS,uCAAuC;AAAA,IACtE,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,iCAAiC,IAAI,GAAG,MAAM;AACpF,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,eAAe,+BAA+B;AAAA,IACxD,QAAQA,GAAE,KAAK,CAAC,SAAS,MAAM,CAAC,EAAE,SAAS,yBAAyB;AAAA,IACpE,MAAMA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS,sBAAsB;AAAA,IAC3D,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,uBAAuB,IAAI,GAAG,MAAM;AAC1E,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AACH;;;ACxFA,SAAS,KAAAC,WAAS;AAQX,SAAS,yBAAiC;AAAE,SAAO;AAAe;AAElE,SAAS,uBAAuB,QAAyC;AAC9E,QAAM,QAAQ,CAAC,eAAe,YAAY,OAAO,IAAc,CAAC,IAAI,YAAY,OAAO,KAAe,CAAC,EAAE;AACzG,MAAI,OAAO,IAAK,OAAM,KAAK,SAAS,YAAY,OAAO,GAAa,CAAC,EAAE;AACvE,MAAI,OAAO,OAAQ,OAAM,KAAK,YAAY,YAAY,OAAO,MAAgB,CAAC,EAAE;AAChF,MAAI,OAAO,KAAM,OAAM,KAAK,UAAU,YAAY,OAAO,IAAc,CAAC,EAAE;AAC1E,MAAI,OAAO,SAAU,OAAM,KAAK,YAAY;AAC5C,MAAI,OAAO,OAAQ,OAAM,KAAK,UAAU;AACxC,MAAI,OAAO,SAAU,OAAM,KAAK,cAAc,OAAO,QAAQ,EAAE;AAC/D,MAAI,OAAO,YAAY,OAAW,OAAM,KAAK,aAAa,OAAO,OAAO,EAAE;AAC1E,SAAO,MAAM,KAAK,GAAG;AACvB;AAEO,SAAS,2BAAmC;AAAE,SAAO;AAAiB;AAEtE,SAAS,uBAAuB,QAAyC;AAC9E,QAAM,QAAQ,CAAC,WAAW,OAAO,IAAI,MAAM;AAC3C,MAAI,OAAO,IAAK,OAAM,KAAK,YAAY,OAAO,GAAa,CAAC;AAC5D,SAAO,MAAM,KAAK,GAAG;AACvB;AAEO,SAAS,uBAAuB,QAAyC;AAC9E,SAAO,WAAW,OAAO,IAAI,QAAQ,YAAY,OAAO,GAAa,CAAC,IAAI,YAAY,OAAO,KAAe,CAAC;AAC/G;AAEO,SAAS,yBAAyB,QAAyC;AAChF,SAAO,WAAW,OAAO,IAAI;AAC/B;AAIO,SAAS,qBAAqB,QAAmB,UAA6B;AACnF,SAAO,KAAK,eAAe,mBAAmB,EAAE,GAAG,oBAAoB,GAAG,OAAO,SAAS;AACxF,UAAM,EAAE,OAAO,IAAI,qBAAqB,IAAI;AAC5C,UAAM,SAAS,MAAM,SAAS,QAAQ,uBAAuB,GAAG,MAAM;AACtE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,eAAe,gBAAgB;AAAA,IACzC,MAAMC,IAAE,OAAO,EAAE,SAAS,aAAa;AAAA,IACvC,OAAOA,IAAE,OAAO,EAAE,SAAS,cAAc;AAAA,IACzC,KAAKA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS,YAAY;AAAA,IAChD,QAAQA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS,eAAe;AAAA,IACtD,MAAMA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS,aAAa;AAAA,IAClD,UAAUA,IAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,WAAW;AAAA,IACrD,QAAQA,IAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,aAAa;AAAA,IACrD,UAAUA,IAAE,KAAK,CAAC,UAAU,OAAO,MAAM,CAAC,EAAE,SAAS,EAAE,SAAS,iBAAiB;AAAA,IACjF,SAASA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS,sBAAsB;AAAA,IAC9D,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,uBAAuB,IAAI,GAAG,MAAM;AAC1E,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,iBAAiB,qBAAqB,EAAE,GAAG,oBAAoB,GAAG,OAAO,SAAS;AAC5F,UAAM,EAAE,OAAO,IAAI,qBAAqB,IAAI;AAC5C,UAAM,SAAS,MAAM,SAAS,QAAQ,yBAAyB,GAAG,MAAM;AACxE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,eAAe,4BAA4B;AAAA,IACrD,MAAMA,IAAE,KAAK,CAAC,SAAS,SAAS,CAAC,EAAE,SAAS,cAAc;AAAA,IAC1D,KAAKA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS,8BAA8B;AAAA,IAClE,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,uBAAuB,IAAI,GAAG,MAAM;AAC1E,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,eAAe,2BAA2B;AAAA,IACpD,MAAMA,IAAE,KAAK,CAAC,SAAS,SAAS,CAAC,EAAE,SAAS,cAAc;AAAA,IAC1D,KAAKA,IAAE,OAAO,EAAE,SAAS,aAAa;AAAA,IACtC,OAAOA,IAAE,OAAO,EAAE,SAAS,eAAe;AAAA,IAC1C,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,uBAAuB,IAAI,GAAG,MAAM;AAC1E,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,iBAAiB,qBAAqB;AAAA,IAChD,MAAMA,IAAE,KAAK,CAAC,SAAS,SAAS,CAAC,EAAE,SAAS,cAAc;AAAA,IAC1D,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,yBAAyB,IAAI,GAAG,MAAM;AAC5E,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AACH;;;ACnGA,SAAS,KAAAC,WAAS;AAQX,SAAS,sBAA8B;AAAE,SAAO;AAAY;AAE5D,SAAS,mBAAmB,QAAyC;AAC1E,QAAM,QAAQ,CAAC,SAAS;AACxB,MAAI,OAAO,IAAK,OAAM,KAAK,YAAY,OAAO,GAAa,CAAC;AAC5D,MAAI,OAAO,MAAO,OAAM,KAAK,WAAW,YAAY,OAAO,KAAe,CAAC,EAAE;AAC7E,SAAO,MAAM,KAAK,GAAG;AACvB;AAEO,SAAS,qBAAqB,QAAyC;AAC5E,MAAI,OAAO,IAAK,QAAO,aAAa,YAAY,OAAO,GAAa,CAAC;AACrE,SAAO;AACT;AAEO,SAAS,sBAAsB,QAAyC;AAC7E,SAAO,OAAO,YAAY,OAAO,GAAa,CAAC;AACjD;AAEO,SAAS,kBAAkB,QAAyC;AACzE,SAAO,SAAS,YAAY,OAAO,MAAgB,CAAC;AACtD;AAEO,SAAS,wBAAgC;AAAE,SAAO;AAAc;AAIhE,SAAS,iBAAiB,QAAmB,UAA6B;AAC/E,SAAO,KAAK,YAAY,yBAAyB,EAAE,GAAG,oBAAoB,GAAG,OAAO,SAAS;AAC3F,UAAM,EAAE,OAAO,IAAI,qBAAqB,IAAI;AAC5C,UAAM,SAAS,MAAM,SAAS,QAAQ,oBAAoB,GAAG,MAAM;AACnE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,WAAW,kBAAkB;AAAA,IACvC,KAAKC,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS,wBAAwB;AAAA,IAC5D,OAAOA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS,qBAAqB;AAAA,IAC3D,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,mBAAmB,IAAI,GAAG,MAAM;AACtE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,aAAa,eAAe;AAAA,IACtC,KAAKA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS,gDAAgD;AAAA,IACpF,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,qBAAqB,IAAI,GAAG,MAAM;AACxE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,cAAc,yCAAyC;AAAA,IACjE,KAAKA,IAAE,OAAO,EAAE,SAAS,mCAAmC;AAAA,IAC5D,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,sBAAsB,IAAI,GAAG,MAAM;AACzE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,SAAS,yCAAyC;AAAA,IAC5D,QAAQA,IAAE,OAAO,EAAE,SAAS,uEAAuE;AAAA,IACnG,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,kBAAkB,IAAI,GAAG,MAAM;AACrE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,cAAc,6BAA6B,EAAE,GAAG,oBAAoB,GAAG,OAAO,SAAS;AACjG,UAAM,EAAE,OAAO,IAAI,qBAAqB,IAAI;AAC5C,UAAM,SAAS,MAAM,SAAS,QAAQ,sBAAsB,GAAG,MAAM;AACrE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AACH;;;ACnFA,SAAS,KAAAC,WAAS;AAQX,SAAS,oBAAoB,QAAyC;AAC3E,QAAM,QAAQ,CAAC,SAAS;AACxB,MAAI,OAAO,MAAO,OAAM,KAAK,SAAS;AACtC,SAAO,MAAM,KAAK,GAAG;AACvB;AAEO,SAAS,mBAAmB,QAAyC;AAC1E,QAAM,QAAQ,CAAC,QAAQ;AACvB,MAAI,OAAO,MAAO,OAAM,KAAK,SAAS;AACtC,SAAO,MAAM,KAAK,GAAG;AACvB;AAEO,SAAS,kBAAkB,QAAyC;AACzE,QAAM,QAAQ,CAAC,SAAS,OAAO,MAAM,EAAE;AACvC,MAAI,OAAO,KAAM,OAAM,KAAK,YAAY,OAAO,IAAc,CAAC;AAC9D,SAAO,MAAM,KAAK,GAAG;AACvB;AAEO,SAAS,qBAAqB,QAAyC;AAC5E,QAAM,QAAQ,CAAC,YAAY,OAAO,MAAM,EAAE;AAC1C,MAAI,OAAO,KAAM,OAAM,KAAK,YAAY,OAAO,IAAc,CAAC;AAC9D,SAAO,MAAM,KAAK,GAAG;AACvB;AAEO,SAAS,mBAAmB,QAAyC;AAC1E,MAAI,OAAO,WAAW,OAAQ,QAAO;AACrC,MAAI,OAAO,WAAW,UAAW,QAAO,kBAAkB,YAAY,OAAO,IAAc,CAAC;AAC5F,QAAM,QAAQ,CAAC,gBAAgB,YAAY,OAAO,IAAc,CAAC,EAAE;AACnE,MAAI,OAAO,IAAK,OAAM,KAAK,YAAY,OAAO,GAAa,CAAC;AAC5D,SAAO,MAAM,KAAK,GAAG;AACvB;AAEO,SAAS,sBAAsB,QAAyC;AAC7E,QAAM,QAAQ,CAAC,aAAa,OAAO,SAAS,EAAE;AAC9C,MAAI,OAAO,KAAM,OAAM,KAAK,YAAY,OAAO,IAAc,CAAC;AAC9D,SAAO,MAAM,KAAK,GAAG;AACvB;AAEO,SAAS,sBAA8B;AAAE,SAAO;AAAW;AAI3D,SAAS,mBAAmB,QAAmB,UAA6B;AACjF,SAAO,KAAK,WAAW,qBAAqB;AAAA,IAC1C,OAAOC,IAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,mBAAmB;AAAA,IAC1D,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,oBAAoB,IAAI,GAAG,MAAM;AACvE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,UAAU,oBAAoB;AAAA,IACxC,OAAOA,IAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,cAAc;AAAA,IACrD,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,mBAAmB,IAAI,GAAG,MAAM;AACtE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,SAAS,gCAAgC;AAAA,IACnD,QAAQA,IAAE,KAAK,CAAC,SAAS,MAAM,CAAC,EAAE,SAAS,uBAAuB;AAAA,IAClE,MAAMA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS,wBAAwB;AAAA,IAC7D,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,kBAAkB,IAAI,GAAG,MAAM;AACrE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,YAAY,kCAAkC;AAAA,IACxD,QAAQA,IAAE,KAAK,CAAC,SAAS,MAAM,CAAC,EAAE,SAAS,yBAAyB;AAAA,IACpE,MAAMA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS,0BAA0B;AAAA,IAC/D,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,qBAAqB,IAAI,GAAG,MAAM;AACxE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,UAAU,0CAA0C;AAAA,IAC9D,QAAQA,IAAE,KAAK,CAAC,SAAS,QAAQ,SAAS,CAAC,EAAE,SAAS,mCAAmC;AAAA,IACzF,MAAMA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS,6CAA6C;AAAA,IAClF,KAAKA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS,mCAAmC;AAAA,IACvE,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,mBAAmB,IAAI,GAAG,MAAM;AACtE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,aAAa,+BAA+B;AAAA,IACtD,WAAWA,IAAE,KAAK,CAAC,QAAQ,SAAS,QAAQ,OAAO,CAAC,EAAE,SAAS,qBAAqB;AAAA,IACpF,MAAMA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS,0BAA0B;AAAA,IAC/D,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,sBAAsB,IAAI,GAAG,MAAM;AACzE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,WAAW,4CAA4C,EAAE,GAAG,oBAAoB,GAAG,OAAO,SAAS;AAC7G,UAAM,EAAE,OAAO,IAAI,qBAAqB,IAAI;AAC5C,UAAM,SAAS,MAAM,SAAS,QAAQ,oBAAoB,GAAG,MAAM;AACnE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AACH;;;ACnHA,SAAS,KAAAC,WAAS;AAQX,SAAS,qBAAqB,QAAyC;AAC5E,QAAM,QAAQ,CAAC,aAAa,YAAY,OAAO,IAAc,CAAC,EAAE;AAChE,MAAI,OAAO,IAAK,OAAM,KAAK,SAAS,YAAY,OAAO,GAAa,CAAC,EAAE;AACvE,MAAI,OAAO,SAAU,OAAM,KAAK,cAAc,YAAY,OAAO,QAAkB,CAAC,EAAE;AACtF,MAAI,OAAO,SAAU,OAAM,KAAK,cAAc,YAAY,OAAO,QAAkB,CAAC,EAAE;AACtF,SAAO,MAAM,KAAK,GAAG;AACvB;AAEO,SAAS,sBAAsB,QAAyC;AAC7E,SAAO,cAAc,YAAY,OAAO,IAAc,CAAC;AACzD;AAEO,SAAS,uBAA+B;AAAE,SAAO;AAAa;AAE9D,SAAS,qBAAqB,QAAyC;AAC5E,SAAO,aAAa,YAAY,OAAO,IAAc,CAAC;AACxD;AAEO,SAAS,uBAAuB,QAAyC;AAC9E,SAAO,eAAe,YAAY,OAAO,IAAc,CAAC;AAC1D;AAIO,SAAS,kBAAkB,QAAmB,UAA6B;AAChF,SAAO,KAAK,aAAa,kCAAkC;AAAA,IACzD,MAAMC,IAAE,OAAO,EAAE,SAAS,cAAc;AAAA,IACxC,KAAKA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS,wBAAwB;AAAA,IAC5D,UAAUA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS,uBAAuB;AAAA,IAChE,UAAUA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS,uBAAuB;AAAA,IAChE,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,qBAAqB,IAAI,GAAG,MAAM;AACxE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,cAAc,oCAAoC;AAAA,IAC5D,MAAMA,IAAE,OAAO,EAAE,SAAS,cAAc;AAAA,IACxC,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,sBAAsB,IAAI,GAAG,MAAM;AACzE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,aAAa,4BAA4B,EAAE,GAAG,oBAAoB,GAAG,OAAO,SAAS;AAC/F,UAAM,EAAE,OAAO,IAAI,qBAAqB,IAAI;AAC5C,UAAM,SAAS,MAAM,SAAS,QAAQ,qBAAqB,GAAG,MAAM;AACpE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,aAAa,8BAA8B;AAAA,IACrD,MAAMA,IAAE,OAAO,EAAE,SAAS,cAAc;AAAA,IACxC,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,qBAAqB,IAAI,GAAG,MAAM;AACxE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,eAAe,+BAA+B;AAAA,IACxD,MAAMA,IAAE,OAAO,EAAE,SAAS,cAAc;AAAA,IACxC,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,uBAAuB,IAAI,GAAG,MAAM;AAC1E,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AACH;;;AC7EA,SAAS,KAAAC,WAAS;AAQX,SAAS,kBAAkB,QAAyC;AACzE,QAAM,WAAY,OAAO,SAAsB,IAAI,CAAC,MAAc,IAAI,CAAC,GAAG,EAAE,KAAK,GAAG;AACpF,QAAM,QAAQ,CAAC,SAAS,QAAQ,EAAE;AAClC,MAAI,OAAO,KAAM,OAAM,KAAK,QAAQ;AACpC,SAAO,MAAM,KAAK,GAAG;AACvB;AAIO,SAAS,mBAAmB,QAAmB,UAA6B;AACjF,SAAO,KAAK,SAAS,kDAAkD;AAAA,IACrE,UAAUC,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS,4CAA4C;AAAA,IACnF,MAAMA,IAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,8BAA8B;AAAA,IACpE,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,kBAAkB,IAAI,GAAG,MAAM;AACrE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AACH;;;AC3BA,SAAS,KAAAC,WAAS;AAQX,SAAS,0BAAkC;AAAE,SAAO;AAAgB;AAEpE,SAAS,yBAAyB,QAAyC;AAChF,QAAM,QAAQ,CAAC,eAAe;AAC9B,MAAI,OAAO,KAAM,OAAM,KAAK,UAAU,OAAO,IAAI,EAAE;AACnD,SAAO,MAAM,KAAK,GAAG;AACvB;AAEO,SAAS,4BAAoC;AAAE,SAAO;AAAkB;AAExE,SAAS,2BAAmC;AAAE,SAAO;AAAiB;AAItE,SAAS,qBAAqB,QAAmB,UAA6B;AACnF,SAAO,KAAK,gBAAgB,gCAAgC,EAAE,GAAG,oBAAoB,GAAG,OAAO,SAAS;AACtG,UAAM,EAAE,OAAO,IAAI,qBAAqB,IAAI;AAC5C,UAAM,SAAS,MAAM,SAAS,QAAQ,wBAAwB,GAAG,MAAM;AACvE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,iBAAiB,qCAAqC;AAAA,IAChE,MAAMC,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS,mCAAmC;AAAA,IACxE,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,yBAAyB,IAAI,GAAG,MAAM;AAC5E,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,kBAAkB,oCAAoC,EAAE,GAAG,oBAAoB,GAAG,OAAO,SAAS;AAC5G,UAAM,EAAE,OAAO,IAAI,qBAAqB,IAAI;AAC5C,UAAM,SAAS,MAAM,SAAS,QAAQ,0BAA0B,GAAG,MAAM;AACzE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,iBAAiB,yCAAyC,EAAE,GAAG,oBAAoB,GAAG,OAAO,SAAS;AAChH,UAAM,EAAE,OAAO,IAAI,qBAAqB,IAAI;AAC5C,UAAM,SAAS,MAAM,SAAS,QAAQ,yBAAyB,GAAG,MAAM;AACxE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AACH;;;ACjDA,SAAS,KAAAC,WAAS;AAQX,SAAS,yBAAyB,QAAyC;AAChF,MAAI,OAAO,KAAM,QAAO,iBAAiB,YAAY,OAAO,IAAc,CAAC;AAC3E,SAAO;AACT;AAEO,SAAS,4BAAoC;AAAE,SAAO;AAAkB;AACxE,SAAS,2BAAmC;AAAE,SAAO;AAAiB;AAItE,SAAS,oBAAoB,QAAmB,UAA6B;AAClF,SAAO,KAAK,iBAAiB,0CAA0C;AAAA,IACrE,MAAMC,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS,kCAAkC;AAAA,IACvE,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,yBAAyB,IAAI,GAAG,MAAM;AAC5E,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,kBAAkB,oBAAoB,EAAE,GAAG,oBAAoB,GAAG,OAAO,SAAS;AAC5F,UAAM,EAAE,OAAO,IAAI,qBAAqB,IAAI;AAC5C,UAAM,SAAS,MAAM,SAAS,QAAQ,0BAA0B,GAAG,MAAM;AACzE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,iBAAiB,uCAAuC,EAAE,GAAG,oBAAoB,GAAG,OAAO,SAAS;AAC9G,UAAM,EAAE,OAAO,IAAI,qBAAqB,IAAI;AAC5C,UAAM,SAAS,MAAM,SAAS,QAAQ,yBAAyB,GAAG,MAAM;AACxE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AACH;;;ACvCA,SAAS,KAAAC,WAAS;AAQX,SAAS,oBAAoB,QAAyC;AAC3E,SAAO,WAAW,YAAY,OAAO,EAAY,CAAC;AACpD;AAEO,SAAS,iBAAiB,QAAyC;AACxE,SAAO,QAAQ,YAAY,OAAO,EAAY,CAAC;AACjD;AAIO,SAAS,0BAA0B,QAAmB,UAA6B;AACxF,SAAO,KAAK,WAAW,yCAAyC;AAAA,IAC9D,IAAIC,IAAE,OAAO,EAAE,SAAS,4BAA4B;AAAA,IACpD,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,oBAAoB,IAAI,GAAG,MAAM;AACvE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,QAAQ,sCAAsC;AAAA,IACxD,IAAIA,IAAE,OAAO,EAAE,SAAS,yBAAyB;AAAA,IACjD,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,iBAAiB,IAAI,GAAG,MAAM;AACpE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AACH;;;ACpCA,SAAS,KAAAC,WAAS;AAQX,SAAS,sBAAsB,QAAyC;AAC7E,SAAO,cAAc,YAAY,OAAO,IAAc,CAAC;AACzD;AAEO,SAAS,sBAAsB,QAAyC;AAC7E,SAAO,cAAc,YAAY,OAAO,IAAc,CAAC;AACzD;AAEO,SAAS,wBAAgC;AAAE,SAAO;AAAc;AAEhE,SAAS,sBAAsB,QAAyC;AAC7E,SAAO,cAAc,YAAY,OAAO,IAAc,CAAC;AACzD;AAEO,SAAS,wBAAwB,QAAyC;AAC/E,SAAO,gBAAgB,YAAY,OAAO,OAAiB,CAAC,IAAI,YAAY,OAAO,OAAiB,CAAC;AACvG;AAEO,SAAS,uBAAuB,QAAyC;AAC9E,MAAI,OAAO,IAAK,QAAO;AACvB,MAAI,OAAO,KAAM,QAAO,eAAe,YAAY,OAAO,IAAc,CAAC;AACzE,SAAO;AACT;AAEO,SAAS,uBAAuB,QAAyC;AAC9E,QAAM,QAAQ,CAAC,aAAa;AAC5B,MAAI,OAAO,UAAW,OAAM,KAAK,gBAAgB,OAAO,SAAS,EAAE;AACnE,SAAO,MAAM,KAAK,GAAG;AACvB;AAIO,SAAS,mBAAmB,QAAmB,UAA6B;AACjF,SAAO,KAAK,cAAc,yDAAyD;AAAA,IACjF,MAAMC,IAAE,OAAO,EAAE,SAAS,kCAAkC;AAAA,IAC5D,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,sBAAsB,IAAI,GAAG,MAAM;AACzE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,cAAc,uCAAuC;AAAA,IAC/D,MAAMA,IAAE,OAAO,EAAE,SAAS,yBAAyB;AAAA,IACnD,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,sBAAsB,IAAI,GAAG,MAAM;AACzE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,cAAc,0BAA0B,EAAE,GAAG,oBAAoB,GAAG,OAAO,SAAS;AAC9F,UAAM,EAAE,OAAO,IAAI,qBAAqB,IAAI;AAC5C,UAAM,SAAS,MAAM,SAAS,QAAQ,sBAAsB,GAAG,MAAM;AACrE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,cAAc,2BAA2B;AAAA,IACnD,MAAMA,IAAE,OAAO,EAAE,SAAS,uBAAuB;AAAA,IACjD,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,sBAAsB,IAAI,GAAG,MAAM;AACzE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,gBAAgB,uBAAuB;AAAA,IACjD,SAASA,IAAE,OAAO,EAAE,SAAS,yBAAyB;AAAA,IACtD,SAASA,IAAE,OAAO,EAAE,SAAS,qBAAqB;AAAA,IAClD,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,wBAAwB,IAAI,GAAG,MAAM;AAC3E,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,eAAe,sBAAsB;AAAA,IAC/C,MAAMA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS,kDAAkD;AAAA,IACvF,KAAKA,IAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,gCAAgC;AAAA,IACrE,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,uBAAuB,IAAI,GAAG,MAAM;AAC1E,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,eAAe,0BAA0B;AAAA,IACnD,WAAWA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS,gDAAgD;AAAA,IAC1F,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,uBAAuB,IAAI,GAAG,MAAM;AAC1E,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AACH;;;ACtGA,SAAS,KAAAC,WAAS;AAQX,SAAS,2BAA2B,QAAyC;AAClF,QAAM,QAAQ,CAAC,iBAAiB;AAChC,MAAI,OAAO,KAAM,OAAM,KAAK,UAAU,OAAO,IAAI,EAAE;AACnD,SAAO,MAAM,KAAK,GAAG;AACvB;AAEO,SAAS,4BAAoC;AAAE,SAAO;AAAkB;AAIxE,SAAS,uBAAuB,QAAmB,UAA6B;AACrF,SAAO,KAAK,mBAAmB,4CAA4C;AAAA,IACzE,MAAMC,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS,yCAAyC;AAAA,IAC9E,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,2BAA2B,IAAI,GAAG,MAAM;AAC9E,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,kBAAkB,6BAA6B,EAAE,GAAG,oBAAoB,GAAG,OAAO,SAAS;AACrG,UAAM,EAAE,OAAO,IAAI,qBAAqB,IAAI;AAC5C,UAAM,SAAS,MAAM,SAAS,QAAQ,0BAA0B,GAAG,MAAM;AACzE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AACH;;;ACjCA,SAAS,KAAAC,WAAS;AAQX,SAAS,wBAAgC;AAAE,SAAO;AAAc;AAEhE,SAAS,yBAAyB,QAAyC;AAChF,SAAO,iBAAiB,YAAY,OAAO,OAAiB,CAAC;AAC/D;AAEO,SAAS,yBAAyB,QAAyC;AAChF,SAAO,iBAAiB,OAAO,MAAM;AACvC;AAEO,SAAS,0BAA0B,QAAyC;AACjF,QAAM,QAAQ,CAAC,gBAAgB;AAC/B,MAAI,OAAO,YAAa,OAAM,KAAK,gBAAgB;AACnD,SAAO,MAAM,KAAK,GAAG;AACvB;AAIO,SAAS,mBAAmB,QAAmB,UAA6B;AACjF,SAAO,KAAK,cAAc,qEAAqE,EAAE,GAAG,oBAAoB,GAAG,OAAO,SAAS;AACzI,UAAM,EAAE,OAAO,IAAI,qBAAqB,IAAI;AAC5C,UAAM,SAAS,MAAM,SAAS,QAAQ,sBAAsB,GAAG,MAAM;AACrE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,iBAAiB,gDAAgD;AAAA,IAC3E,SAASC,IAAE,OAAO,EAAE,SAAS,2BAA2B;AAAA,IACxD,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,yBAAyB,IAAI,GAAG,MAAM;AAC5E,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,iBAAiB,8CAA8C;AAAA,IACzE,QAAQA,IAAE,KAAK,CAAC,SAAS,MAAM,CAAC,EAAE,SAAS,gCAAgC;AAAA,IAC3E,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,yBAAyB,IAAI,GAAG,MAAM;AAC5E,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,kBAAkB,kCAAkC;AAAA,IAC9D,aAAaA,IAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,yCAAyC;AAAA,IACtF,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,0BAA0B,IAAI,GAAG,MAAM;AAC7E,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AACH;;;AC3DA,SAAS,KAAAC,WAAS;AAQX,SAAS,mBAAmB,QAAyC;AAC1E,QAAM,QAAQ,CAAC,QAAQ;AACvB,MAAI,OAAO,IAAK,OAAM,KAAK,OAAO;AAClC,SAAO,MAAM,KAAK,GAAG;AACvB;AAEO,SAAS,iBAAiB,QAAyC;AACxE,QAAM,QAAQ,CAAC,MAAM;AACrB,MAAI,OAAO,QAAS,OAAM,KAAK,YAAY,OAAO,OAAiB,CAAC;AACpE,MAAI,OAAO,MAAO,OAAM,KAAK,WAAW,YAAY,OAAO,KAAe,CAAC,EAAE;AAC7E,SAAO,MAAM,KAAK,GAAG;AACvB;AAEO,SAAS,sBAAsB,QAAyC;AAC7E,SAAO,aAAa,YAAY,OAAO,GAAa,CAAC;AACvD;AAEO,SAAS,uBAA+B;AAAE,SAAO;AAAY;AAE7D,SAAS,sBAA8B;AAAE,SAAO;AAAW;AAE3D,SAAS,mBAAmB,QAAyC;AAC1E,QAAM,QAAQ,CAAC,QAAQ;AACvB,MAAI,OAAO,IAAK,OAAM,KAAK,YAAY,OAAO,GAAa,CAAC;AAC5D,SAAO,MAAM,KAAK,GAAG;AACvB;AAEO,SAAS,0BAA0B,QAAyC;AACjF,SAAO,iBAAiB,YAAY,OAAO,MAAgB,CAAC;AAC9D;AAEO,SAAS,6BAA6B,QAAyC;AACpF,SAAO,oBAAoB,YAAY,OAAO,UAAoB,CAAC;AACrE;AAIO,SAAS,kBAAkB,QAAmB,UAA6B;AAChF,SAAO,KAAK,UAAU,yDAAyD;AAAA,IAC7E,KAAKC,IAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,yBAAyB;AAAA,IAC9D,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,mBAAmB,IAAI,GAAG,MAAM;AACtE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,QAAQ,uDAAuD;AAAA,IACzE,SAASA,IAAE,OAAO,EAAE,SAAS,8BAA8B;AAAA,IAC3D,OAAOA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS,yBAAyB;AAAA,IAC/D,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,iBAAiB,IAAI,GAAG,MAAM;AACpE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,aAAa,oDAAoD;AAAA,IAC3E,KAAKA,IAAE,OAAO,EAAE,SAAS,gCAAgC;AAAA,IACzD,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,sBAAsB,IAAI,GAAG,MAAM;AACzE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,YAAY,kCAAkC,EAAE,GAAG,oBAAoB,GAAG,OAAO,SAAS;AACpG,UAAM,EAAE,OAAO,IAAI,qBAAqB,IAAI;AAC5C,UAAM,SAAS,MAAM,SAAS,QAAQ,qBAAqB,GAAG,MAAM;AACpE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,WAAW,6BAA6B,EAAE,GAAG,oBAAoB,GAAG,OAAO,SAAS;AAC9F,UAAM,EAAE,OAAO,IAAI,qBAAqB,IAAI;AAC5C,UAAM,SAAS,MAAM,SAAS,QAAQ,oBAAoB,GAAG,MAAM;AACnE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,UAAU,6CAA6C;AAAA,IACjE,KAAKA,IAAE,OAAO,EAAE,SAAS,EAAE,SAAS,8CAA8C;AAAA,IAClF,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,mBAAmB,IAAI,GAAG,MAAM;AACtE,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,iBAAiB,sCAAsC;AAAA,IACjE,QAAQA,IAAE,OAAO,EAAE,SAAS,qCAAqC;AAAA,IACjE,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,0BAA0B,IAAI,GAAG,MAAM;AAC7E,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AAED,SAAO,KAAK,oBAAoB,8CAA8C;AAAA,IAC5E,YAAYA,IAAE,OAAO,EAAE,SAAS,kCAAkC;AAAA,IAClE,GAAG;AAAA,EACL,GAAG,OAAO,SAAS;AACjB,UAAM,EAAE,QAAQ,KAAK,IAAI,qBAAqB,IAAI;AAClD,UAAM,SAAS,MAAM,SAAS,QAAQ,6BAA6B,IAAI,GAAG,MAAM;AAChF,WAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,OAAO,UAAU,KAAK,CAAC,GAAG,GAAI,OAAO,QAAQ,EAAE,SAAS,KAAK,IAAI,CAAC,EAAG;AAAA,EACzH,CAAC;AACH;;;ACzFO,SAAS,iBAAiB,QAAmB,UAA6B;AAC/E,0BAAwB,QAAQ,QAAQ;AACxC,2BAAyB,QAAQ,QAAQ;AACzC,qBAAmB,QAAQ,QAAQ;AACnC,sBAAoB,QAAQ,QAAQ;AACpC,qBAAmB,QAAQ,QAAQ;AACnC,wBAAsB,QAAQ,QAAQ;AACtC,+BAA6B,QAAQ,QAAQ;AAC7C,uBAAqB,QAAQ,QAAQ;AACrC,uBAAqB,QAAQ,QAAQ;AACrC,mBAAiB,QAAQ,QAAQ;AACjC,qBAAmB,QAAQ,QAAQ;AACnC,oBAAkB,QAAQ,QAAQ;AAClC,qBAAmB,QAAQ,QAAQ;AACnC,uBAAqB,QAAQ,QAAQ;AACrC,sBAAoB,QAAQ,QAAQ;AACpC,4BAA0B,QAAQ,QAAQ;AAC1C,qBAAmB,QAAQ,QAAQ;AACnC,yBAAuB,QAAQ,QAAQ;AACvC,qBAAmB,QAAQ,QAAQ;AACnC,oBAAkB,QAAQ,QAAQ;AACpC;;;AxBtBA,SAAS,yBAAyB,UAAkC;AAClE,QAAM,SAAS,IAAI;AAAA,IACjB,EAAE,MAAM,iBAAiB,SAAS,QAAQ;AAAA,IAC1C,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,EAAE;AAAA,EAChC;AACA,mBAAiB,QAAQ,QAAQ;AACjC,SAAO;AACT;AAmBA,eAAsB,YAAY,MAAc,UAAoD;AAClG,QAAM,cAAc,YAAY,IAAI,YAAY;AAChD,QAAM,WAAW,oBAAI,IAAqB;AAE1C,QAAM,aAAa,aAAa,OAAO,KAAsB,QAAwB;AACnF,UAAM,MAAM,IAAI,IAAI,IAAI,OAAO,KAAK,oBAAoB,IAAI,EAAE;AAE9D,QAAI,IAAI,aAAa,QAAQ;AAC3B,UAAI,UAAU,KAAK,EAAE,gBAAgB,mBAAmB,CAAC;AACzD,UAAI,IAAI,KAAK,UAAU,EAAE,OAAO,6CAA6C,CAAC,CAAC;AAC/E;AAAA,IACF;AAEA,QAAI;AACF,YAAM,YAAY,IAAI,QAAQ,gBAAgB;AAE9C,UAAI,aAAa,SAAS,IAAI,SAAS,GAAG;AAExC,cAAM,UAAU,SAAS,IAAI,SAAS;AACtC,YAAI,IAAI,WAAW,QAAQ;AACzB,gBAAM,OAAO,MAAM,eAAe,GAAG;AACrC,gBAAM,QAAQ,UAAU,cAAc,KAAK,KAAK,IAAI;AAAA,QACtD,OAAO;AACL,gBAAM,QAAQ,UAAU,cAAc,KAAK,GAAG;AAAA,QAChD;AAAA,MACF,WAAW,IAAI,WAAW,QAAQ;AAEhC,YAAI;AAEJ,cAAM,YAAY,IAAI,8BAA8B;AAAA,UAClD,oBAAoB,MAAM;AACxB,kBAAM,KAAK,WAAW;AACtB,2BAAe;AACf,mBAAO;AAAA,UACT;AAAA,QACF,CAAC;AAED,cAAM,SAAS,yBAAyB,WAAW;AACnD,cAAM,OAAO,QAAQ,SAAS;AAE9B,cAAM,OAAO,MAAM,eAAe,GAAG;AACrC,cAAM,UAAU,cAAc,KAAK,KAAK,IAAI;AAG5C,YAAI,cAAc;AAChB,mBAAS,IAAI,cAAc,EAAE,WAAW,OAAO,CAAC;AAAA,QAClD;AAEA,kBAAU,UAAU,MAAM;AACxB,cAAI,cAAc;AAChB,qBAAS,OAAO,YAAY;AAAA,UAC9B;AAAA,QACF;AAAA,MACF,WAAW,IAAI,WAAW,OAAO;AAE/B,YAAI,UAAU,KAAK,EAAE,gBAAgB,mBAAmB,CAAC;AACzD,YAAI,IAAI,KAAK,UAAU,EAAE,OAAO,6CAA6C,CAAC,CAAC;AAAA,MACjF,WAAW,IAAI,WAAW,UAAU;AAElC,YAAI,UAAU,GAAG;AACjB,YAAI,IAAI;AAAA,MACV;AAAA,IACF,SAAS,OAAO;AACd,YAAM,SAAS,iBAAiB,QAAQ,GAAG,MAAM,OAAO;AAAA,EAAK,MAAM,KAAK,KAAK,OAAO,KAAK;AACzF,cAAQ,MAAM,iCAAiC,MAAM;AACrD,UAAI,CAAC,IAAI,aAAa;AACpB,YAAI,UAAU,KAAK,EAAE,gBAAgB,aAAa,CAAC;AACnD,YAAI,IAAI,MAAM;AAAA,MAChB;AAAA,IACF;AAAA,EACF,CAAC;AAED,QAAM,QAAQ,YAAY;AACxB,UAAM,YAAY,MAAM;AACxB,eAAW,CAAC,EAAE,OAAO,KAAK,UAAU;AAClC,YAAM,QAAQ,UAAU,MAAM;AAAA,IAChC;AACA,aAAS,MAAM;AACf,eAAW,MAAM;AAAA,EACnB;AAEA,SAAO,IAAI,QAAQ,CAAC,YAAY;AAC9B,eAAW,OAAO,MAAM,MAAM;AAC5B,cAAQ,EAAE,YAAY,UAAU,aAAa,MAAM,CAAC;AAAA,IACtD,CAAC;AAAA,EACH,CAAC;AACH;;;AyBpIA,IAAM,eAAe;AAErB,SAAS,YAAoB;AAC3B,QAAM,OAAO,QAAQ,KAAK,MAAM,CAAC;AACjC,QAAM,YAAY,KAAK,QAAQ,QAAQ;AACvC,MAAI,cAAc,MAAM,KAAK,YAAY,CAAC,GAAG;AAC3C,UAAM,OAAO,SAAS,KAAK,YAAY,CAAC,GAAG,EAAE;AAC7C,QAAI,CAAC,MAAM,IAAI,KAAK,OAAO,KAAK,OAAO,MAAO,QAAO;AACrD,YAAQ,MAAM,iBAAiB,KAAK,YAAY,CAAC,CAAC,EAAE;AACpD,YAAQ,KAAK,CAAC;AAAA,EAChB;AACA,QAAM,UAAU,QAAQ,IAAI;AAC5B,MAAI,SAAS;AACX,UAAM,OAAO,SAAS,SAAS,EAAE;AACjC,QAAI,CAAC,MAAM,IAAI,KAAK,OAAO,KAAK,OAAO,MAAO,QAAO;AAAA,EACvD;AACA,SAAO;AACT;AAEA,eAAe,OAAO;AACpB,QAAM,OAAO,UAAU;AAEvB,QAAM,WAAW,MAAM,YAAY,IAAI;AAEvC,UAAQ,IAAI,wDAAwD,IAAI,MAAM;AAG9E,QAAM,WAAW,YAAY;AAC3B,YAAQ,IAAI,oBAAoB;AAChC,UAAM,SAAS,MAAM;AACrB,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,UAAQ,GAAG,UAAU,QAAQ;AAC7B,UAAQ,GAAG,WAAW,QAAQ;AAChC;AAEA,KAAK,EAAE,MAAM,CAAC,QAAQ;AACpB,UAAQ,MAAM,2BAA2B,GAAG;AAC5C,UAAQ,KAAK,CAAC;AAChB,CAAC;","names":["z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z"]}
package/package.json ADDED
@@ -0,0 +1,44 @@
1
+ {
2
+ "name": "@rabbitai-lab/agent-browser-mcp",
3
+ "version": "0.1.0",
4
+ "description": "MCP server for agent-browser CLI - fast browser automation for AI agents",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "bin": {
8
+ "agent-browser-mcp": "dist/index.js"
9
+ },
10
+ "files": [
11
+ "dist"
12
+ ],
13
+ "scripts": {
14
+ "build": "tsup",
15
+ "setup": "npm run build && npm link",
16
+ "dev": "tsx src/index.ts",
17
+ "start": "node dist/index.js",
18
+ "test": "npm run test:unit",
19
+ "test:unit": "vitest run --project unit",
20
+ "test:e2e": "vitest run --project e2e",
21
+ "test:watch": "vitest --project unit",
22
+ "typecheck": "tsc --noEmit",
23
+ "prepublishOnly": "npm run typecheck && npm run build && npm run test:unit"
24
+ },
25
+ "dependencies": {
26
+ "@modelcontextprotocol/sdk": "^1.29.0",
27
+ "zod": "^3.25.0"
28
+ },
29
+ "devDependencies": {
30
+ "@types/node": "^22.0.0",
31
+ "tsup": "^8.0.0",
32
+ "tsx": "^4.0.0",
33
+ "typescript": "^5.0.0",
34
+ "vitest": "^3.0.0"
35
+ },
36
+ "engines": {
37
+ "node": ">=20.0.0"
38
+ },
39
+ "license": "Apache-2.0",
40
+ "repository": {
41
+ "type": "git",
42
+ "url": "https://github.com/RabbitAI-Lab/Agent-Browser-MCP"
43
+ }
44
+ }