@protomarkdown/parser 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/parser/MarkdownParser.ts","../src/ShadcnCodeGenerator.ts"],"sourcesContent":["import { MarkdownNode, ParserOptions, ParseResult } from \"./types\";\n\nexport class MarkdownParser {\n private options: ParserOptions;\n\n constructor(options: ParserOptions = {}) {\n this.options = {\n strict: false,\n preserveWhitespace: false,\n ...options,\n };\n }\n\n parse(markdown: string): ParseResult {\n const lines = markdown.split(\"\\n\");\n const nodes: MarkdownNode[] = [];\n const errors: string[] = [];\n let i = 0;\n\n while (i < lines.length) {\n const line = this.options.preserveWhitespace ? lines[i] : lines[i].trim();\n\n if (!line) {\n i++;\n continue;\n }\n\n // Check for table (line with pipes)\n if (line.includes(\"|\") && line.trim().startsWith(\"|\")) {\n const headers = line\n .split(\"|\")\n .map((h) => h.trim())\n .filter((h) => h.length > 0);\n\n i++;\n // Skip separator line (|---|---|)\n if (i < lines.length) {\n const separatorLine = this.options.preserveWhitespace\n ? lines[i]\n : lines[i].trim();\n if (separatorLine.includes(\"-\") && separatorLine.includes(\"|\")) {\n i++;\n }\n }\n\n // Parse table rows\n const rows: string[][] = [];\n while (i < lines.length) {\n const rowLine = this.options.preserveWhitespace\n ? lines[i]\n : lines[i].trim();\n\n if (!rowLine || !rowLine.includes(\"|\")) {\n break;\n }\n\n const cells = rowLine\n .split(\"|\")\n .map((c) => c.trim())\n .filter((c) => c.length > 0);\n rows.push(cells);\n i++;\n }\n\n nodes.push({\n type: \"table\",\n headers,\n rows,\n });\n continue;\n }\n\n // Check for workflow start\n if (line === '[workflow' || line.startsWith('[workflow ')) {\n const result = this.parseWorkflow(lines, i);\n nodes.push(result.node);\n i = result.nextIndex;\n continue;\n }\n\n // Check for card start\n const cardMatch = line.match(/^\\[--\\s*(.*)$/);\n if (cardMatch) {\n const result = this.parseCard(lines, i, cardMatch[1] || undefined);\n nodes.push(result.node);\n i = result.nextIndex;\n continue;\n }\n\n // Check for grid start ([grid cols-2 gap-4)\n const gridMatch = line.match(/^\\[grid\\s+(.*)$/);\n if (gridMatch) {\n const result = this.parseContainer(lines, i, 'grid', gridMatch[1]);\n nodes.push(result.node);\n i = result.nextIndex;\n continue;\n }\n\n // Check for plain div start ([ or [ class-name)\n const divMatch = line.match(/^\\[\\s*(.*)$/);\n if (divMatch && !line.includes(\"]\")) {\n const result = this.parseContainer(lines, i, 'div', divMatch[1] || '');\n nodes.push(result.node);\n i = result.nextIndex;\n continue;\n }\n\n const node = this.parseLine(line);\n if (node) {\n nodes.push(node);\n } else if (this.options.strict) {\n errors.push(`Line ${i + 1}: Unable to parse \"${line}\"`);\n }\n i++;\n }\n\n return { nodes, errors: errors.length > 0 ? errors : undefined };\n }\n\n private parseWorkflow(\n lines: string[],\n startIndex: number\n ): { node: MarkdownNode; nextIndex: number } {\n const screens: MarkdownNode[] = [];\n let i = startIndex + 1;\n let depth = 1;\n let initialScreen: string | undefined;\n\n // Parse workflow content until we find the matching closing ]\n while (i < lines.length && depth > 0) {\n const workflowLine = this.options.preserveWhitespace ? lines[i] : lines[i].trim();\n\n // Check for workflow closing\n if (workflowLine === \"]\") {\n depth--;\n if (depth === 0) {\n break;\n }\n }\n\n // Check for screen opening ([screen id)\n const screenMatch = workflowLine.match(/^\\[screen\\s+(.+)$/);\n if (screenMatch) {\n const screenId = screenMatch[1].trim();\n const result = this.parseScreen(lines, i, screenId);\n screens.push(result.node);\n\n // First screen becomes the initial screen\n if (!initialScreen) {\n initialScreen = screenId;\n }\n\n i = result.nextIndex;\n continue;\n }\n\n i++;\n }\n\n return {\n node: {\n type: \"workflow\",\n children: screens,\n initialScreen: initialScreen || (screens[0]?.id),\n },\n nextIndex: i + 1,\n };\n }\n\n private parseScreen(\n lines: string[],\n startIndex: number,\n screenId: string\n ): { node: MarkdownNode; nextIndex: number } {\n const screenChildren: MarkdownNode[] = [];\n let i = startIndex + 1;\n let depth = 1;\n\n // Parse screen content until we find the matching closing ]\n while (i < lines.length && depth > 0) {\n const screenLine = this.options.preserveWhitespace ? lines[i] : lines[i].trim();\n\n // Check for screen closing\n if (screenLine === \"]\") {\n depth--;\n if (depth === 0) {\n break;\n }\n }\n\n // Check for nested card opening\n if (screenLine.match(/^\\[--\\s*(.*)$/)) {\n const nestedTitle = screenLine.match(/^\\[--\\s*(.*)$/)?.[1] || undefined;\n const result = this.parseCard(lines, i, nestedTitle);\n screenChildren.push(result.node);\n i = result.nextIndex;\n continue;\n }\n\n // Check for nested grid opening\n if (screenLine.match(/^\\[grid\\s+(.*)$/)) {\n const nestedConfig = screenLine.match(/^\\[grid\\s+(.*)$/)?.[1] || '';\n const result = this.parseContainer(lines, i, 'grid', nestedConfig);\n screenChildren.push(result.node);\n i = result.nextIndex;\n continue;\n }\n\n // Check for nested div opening\n if (screenLine.match(/^\\[\\s*(.*)$/) && !screenLine.includes(\"]\")) {\n const nestedConfig = screenLine.match(/^\\[\\s*(.*)$/)?.[1] || '';\n const result = this.parseContainer(lines, i, 'div', nestedConfig);\n screenChildren.push(result.node);\n i = result.nextIndex;\n continue;\n }\n\n if (screenLine) {\n const childNode = this.parseLine(screenLine);\n if (childNode) {\n screenChildren.push(childNode);\n }\n }\n i++;\n }\n\n return {\n node: {\n type: \"screen\",\n id: screenId,\n children: screenChildren,\n },\n nextIndex: i + 1,\n };\n }\n\n private parseCard(\n lines: string[],\n startIndex: number,\n title: string | undefined\n ): { node: MarkdownNode; nextIndex: number } {\n const cardChildren: MarkdownNode[] = [];\n let i = startIndex + 1;\n let depth = 1;\n\n // Parse card content until we find the matching closing --]\n while (i < lines.length && depth > 0) {\n const cardLine = this.options.preserveWhitespace ? lines[i] : lines[i].trim();\n\n // Check for card closing\n if (cardLine === \"--]\") {\n depth--;\n if (depth === 0) {\n break;\n }\n }\n\n // Check for nested card opening (must be before div check)\n if (cardLine.match(/^\\[--\\s*(.*)$/)) {\n const nestedTitle = cardLine.match(/^\\[--\\s*(.*)$/)?.[1] || undefined;\n const result = this.parseCard(lines, i, nestedTitle);\n cardChildren.push(result.node);\n i = result.nextIndex;\n continue;\n }\n\n // Check for nested grid opening\n if (cardLine.match(/^\\[grid\\s+(.*)$/)) {\n const nestedConfig = cardLine.match(/^\\[grid\\s+(.*)$/)?.[1] || '';\n const result = this.parseContainer(lines, i, 'grid', nestedConfig);\n cardChildren.push(result.node);\n i = result.nextIndex;\n continue;\n }\n\n // Check for nested div opening\n if (cardLine.match(/^\\[\\s*(.*)$/) && !cardLine.includes(\"]\")) {\n const nestedConfig = cardLine.match(/^\\[\\s*(.*)$/)?.[1] || '';\n const result = this.parseContainer(lines, i, 'div', nestedConfig);\n cardChildren.push(result.node);\n i = result.nextIndex;\n continue;\n }\n\n if (cardLine) {\n const childNode = this.parseLine(cardLine);\n if (childNode) {\n cardChildren.push(childNode);\n }\n }\n i++;\n }\n\n return {\n node: {\n type: \"card\",\n titleChildren: title ? this.parseInlineEmphasis(title) : undefined,\n children: cardChildren,\n },\n nextIndex: i + 1,\n };\n }\n\n private parseContainer(\n lines: string[],\n startIndex: number,\n type: 'grid' | 'div',\n config: string\n ): { node: MarkdownNode; nextIndex: number } {\n const containerChildren: MarkdownNode[] = [];\n let i = startIndex + 1;\n let depth = 1;\n\n // Parse container content until we find the matching closing ]\n while (i < lines.length && depth > 0) {\n const containerLine = this.options.preserveWhitespace ? lines[i] : lines[i].trim();\n\n // Check for container closing\n if (containerLine === \"]\") {\n depth--;\n if (depth === 0) {\n break;\n }\n }\n\n // Check for nested card opening (must be before div check)\n if (containerLine.match(/^\\[--\\s*(.*)$/)) {\n const nestedTitle = containerLine.match(/^\\[--\\s*(.*)$/)?.[1] || undefined;\n const result = this.parseCard(lines, i, nestedTitle);\n containerChildren.push(result.node);\n i = result.nextIndex;\n continue;\n }\n\n // Check for nested grid opening\n if (containerLine.match(/^\\[grid\\s+(.*)$/)) {\n const nestedConfig = containerLine.match(/^\\[grid\\s+(.*)$/)?.[1] || '';\n const result = this.parseContainer(lines, i, 'grid', nestedConfig);\n containerChildren.push(result.node);\n i = result.nextIndex;\n continue;\n }\n\n // Check for nested div opening\n if (containerLine.match(/^\\[\\s*(.*)$/) && !containerLine.includes(\"]\")) {\n const nestedConfig = containerLine.match(/^\\[\\s*(.*)$/)?.[1] || '';\n const result = this.parseContainer(lines, i, 'div', nestedConfig);\n containerChildren.push(result.node);\n i = result.nextIndex;\n continue;\n }\n\n if (containerLine) {\n const childNode = this.parseLine(containerLine);\n if (childNode) {\n containerChildren.push(childNode);\n }\n }\n i++;\n }\n\n const node: MarkdownNode = {\n type,\n children: containerChildren,\n };\n\n if (type === 'grid') {\n node.gridConfig = config;\n } else if (type === 'div' && config) {\n node.className = config;\n }\n\n return {\n node,\n nextIndex: i + 1,\n };\n }\n\n private parseLine(line: string): MarkdownNode | null {\n // Parse headers (# H1, ## H2, etc.)\n const headerMatch = line.match(/^(#{1,6})\\s+(.+)$/);\n if (headerMatch) {\n return {\n type: \"header\",\n level: headerMatch[1].length,\n children: this.parseInlineEmphasis(headerMatch[2]),\n };\n }\n\n // Parse multiple form fields on one line (inputs, textareas, dropdowns, checkboxes)\n // This must be checked BEFORE single field patterns\n const fieldPattern = /(.+?)\\s+(___|\\|___\\||__\\*|__>(?:\\s*\\[[^\\]]+\\])?|__\\[\\])/g;\n const fieldMatches = [...line.matchAll(fieldPattern)];\n\n if (fieldMatches.length > 1) {\n return {\n type: \"container\",\n children: fieldMatches.map((match) => {\n const label = match[1].trim();\n const marker = match[2];\n\n if (marker === '__*') {\n return {\n type: \"input\",\n label,\n inputType: \"password\",\n } as MarkdownNode;\n } else if (marker === '|___|') {\n return {\n type: \"textarea\",\n label,\n } as MarkdownNode;\n } else if (marker === '__[]') {\n return {\n type: \"checkbox\",\n label,\n } as MarkdownNode;\n } else if (marker.startsWith('__>')) {\n // Handle dropdown with or without options\n const optionsMatch = marker.match(/\\[([^\\]]+)\\]/);\n if (optionsMatch) {\n const options = optionsMatch[1]\n .split(\",\")\n .map((opt) => opt.trim())\n .filter((opt) => opt.length > 0);\n return {\n type: \"dropdown\",\n label,\n options,\n } as MarkdownNode;\n } else {\n return {\n type: \"dropdown\",\n label,\n } as MarkdownNode;\n }\n } else { // ___\n return {\n type: \"input\",\n label,\n inputType: \"text\",\n } as MarkdownNode;\n }\n }),\n };\n }\n\n // Parse password inputs (Label __*)\n const passwordMatch = line.match(/^(.+?)\\s+__\\*$/);\n if (passwordMatch) {\n return {\n type: \"input\",\n label: passwordMatch[1],\n inputType: \"password\",\n };\n }\n\n // Parse textarea (Label |___|)\n const textareaMatch = line.match(/^(.+?)\\s+\\|___\\|$/);\n if (textareaMatch) {\n return {\n type: \"textarea\",\n label: textareaMatch[1],\n };\n }\n\n // Parse text inputs (Label ___)\n const inputMatch = line.match(/^(.+?)\\s+___$/);\n if (inputMatch) {\n return {\n type: \"input\",\n label: inputMatch[1],\n inputType: \"text\",\n };\n }\n\n // Parse checkbox (Label __[])\n const checkboxMatch = line.match(/^(.+?)\\s+__\\[\\]$/);\n if (checkboxMatch) {\n return {\n type: \"checkbox\",\n label: checkboxMatch[1],\n };\n }\n\n // Parse radio group (Label __() [option1, option2, option3])\n const radioGroupMatch = line.match(/^(.+?)\\s+__\\(\\)\\s+\\[(.+?)\\]$/);\n if (radioGroupMatch) {\n const options = radioGroupMatch[2]\n .split(\",\")\n .map((opt) => opt.trim())\n .filter((opt) => opt.length > 0);\n return {\n type: \"radiogroup\",\n label: radioGroupMatch[1],\n options,\n };\n }\n\n // Parse dropdowns with options (Label __> [option1, option2, option3])\n const dropdownWithOptionsMatch = line.match(/^(.+?)\\s+__>\\s+\\[(.+?)\\]$/);\n if (dropdownWithOptionsMatch) {\n const options = dropdownWithOptionsMatch[2]\n .split(\",\")\n .map((opt) => opt.trim())\n .filter((opt) => opt.length > 0);\n return {\n type: \"dropdown\",\n label: dropdownWithOptionsMatch[1],\n options,\n };\n }\n\n // Parse dropdowns without options (Label __>)\n const dropdownMatch = line.match(/^(.+?)\\s+__>$/);\n if (dropdownMatch) {\n return {\n type: \"dropdown\",\n label: dropdownMatch[1],\n };\n }\n\n // Parse image (![alt text](url))\n const imageMatch = line.match(/^!\\[([^\\]]*)\\]\\(([^)]+)\\)$/);\n if (imageMatch) {\n return {\n type: \"image\",\n alt: imageMatch[1],\n src: imageMatch[2],\n };\n }\n\n // Parse multiple buttons on one line ([btn1][(btn2)])\n const multiButtonMatch = line.match(/^(\\[\\(?[^\\[\\]]+\\)?\\]\\s*)+$/);\n if (multiButtonMatch) {\n const buttons = line.match(/\\[(\\(?)[^\\[\\]]+?(\\)?)\\]/g);\n if (buttons && buttons.length > 1) {\n return {\n type: \"container\",\n children: buttons.map((btn) => {\n // Check for navigation syntax: [(text) -> target] or [text -> target]\n const navMatch = btn.match(/\\[(\\(?)(.+?)(\\)?)\\s*->\\s*([^\\]]+)\\]/);\n if (navMatch) {\n const isDefault = navMatch[1] === \"(\" && navMatch[3] === \")\";\n const content = navMatch[2].trim();\n const navigateTo = navMatch[4].trim();\n\n return {\n type: \"button\",\n content,\n variant: isDefault ? \"default\" : \"outline\",\n navigateTo,\n };\n }\n\n const innerMatch = btn.match(/\\[(\\(?)(.+?)(\\)?)\\]/);\n if (innerMatch) {\n const isDefault = innerMatch[1] === \"(\" && innerMatch[3] === \")\";\n const content = innerMatch[2];\n\n return {\n type: \"button\",\n content,\n variant: isDefault ? \"default\" : \"outline\",\n };\n }\n return {\n type: \"button\",\n content: btn.slice(1, -1),\n variant: \"outline\",\n };\n }),\n };\n }\n }\n\n // Parse default button with navigation [(button text) -> target]\n const defaultButtonNavMatch = line.match(/^\\[\\((.+?)\\)\\s*->\\s*([^\\]]+)\\]$/);\n if (defaultButtonNavMatch) {\n const content = defaultButtonNavMatch[1].trim();\n const navigateTo = defaultButtonNavMatch[2].trim();\n\n return {\n type: \"button\",\n content,\n variant: \"default\",\n navigateTo,\n };\n }\n\n // Parse default button [(button text)] or [(button text) | classes]\n const defaultButtonMatch = line.match(/^\\[\\((.+?)\\)(?:\\s*\\|\\s*(.+))?\\]$/);\n if (defaultButtonMatch) {\n const content = defaultButtonMatch[1];\n const className = defaultButtonMatch[2]?.trim();\n\n return {\n type: \"button\",\n content,\n variant: \"default\",\n ...(className && { className }),\n };\n }\n\n // Parse outline button with navigation [button text -> target]\n const buttonNavMatch = line.match(/^\\[([^|]+?)\\s*->\\s*([^\\]]+)\\]$/);\n if (buttonNavMatch) {\n const content = buttonNavMatch[1].trim();\n const navigateTo = buttonNavMatch[2].trim();\n\n return {\n type: \"button\",\n content,\n variant: \"outline\",\n navigateTo,\n };\n }\n\n // Parse outline button [button text] or [button text | classes]\n const buttonMatch = line.match(/^\\[([^|]+?)(?:\\s*\\|\\s*(.+))?\\]$/);\n if (buttonMatch) {\n const content = buttonMatch[1].trim();\n const className = buttonMatch[2]?.trim();\n\n return {\n type: \"button\",\n content,\n variant: \"outline\",\n ...(className && { className }),\n };\n }\n\n // Plain text\n return {\n type: \"text\",\n children: this.parseInlineEmphasis(line),\n };\n }\n\n private parseInlineEmphasis(text: string): MarkdownNode[] {\n const nodes: MarkdownNode[] = [];\n let remaining = text;\n let position = 0;\n\n while (position < remaining.length) {\n // Try to match bold-italic (_*text*_)\n const boldItalicMatch = remaining\n .slice(position)\n .match(/^_\\*(.+?)\\*_/);\n if (boldItalicMatch) {\n const content = boldItalicMatch[1];\n nodes.push({\n type: \"bold\",\n children: [{ type: \"italic\", content }],\n });\n position += boldItalicMatch[0].length;\n continue;\n }\n\n // Try to match bold (*text*)\n const boldMatch = remaining.slice(position).match(/^\\*(.+?)\\*/);\n if (boldMatch) {\n nodes.push({\n type: \"bold\",\n content: boldMatch[1],\n });\n position += boldMatch[0].length;\n continue;\n }\n\n // Try to match italic (_text_)\n const italicMatch = remaining.slice(position).match(/^_(.+?)_/);\n if (italicMatch) {\n nodes.push({\n type: \"italic\",\n content: italicMatch[1],\n });\n position += italicMatch[0].length;\n continue;\n }\n\n // No emphasis found, consume until next emphasis marker or end of string\n const nextAsterisk = remaining.slice(position).indexOf(\"*\");\n const nextUnderscore = remaining.slice(position).indexOf(\"_\");\n\n // Find the nearest marker\n let nextMarker = -1;\n if (nextAsterisk !== -1 && nextUnderscore !== -1) {\n nextMarker = Math.min(nextAsterisk, nextUnderscore);\n } else if (nextAsterisk !== -1) {\n nextMarker = nextAsterisk;\n } else if (nextUnderscore !== -1) {\n nextMarker = nextUnderscore;\n }\n\n const textEnd =\n nextMarker === -1\n ? remaining.length\n : position + nextMarker;\n\n if (textEnd > position) {\n nodes.push({\n type: \"text\",\n content: remaining.slice(position, textEnd),\n });\n position = textEnd;\n } else {\n // Edge case: marker that doesn't form emphasis\n nodes.push({\n type: \"text\",\n content: remaining.slice(position, position + 1),\n });\n position++;\n }\n }\n\n return nodes;\n }\n}\n","import { MarkdownNode } from \"./parser/types\";\n\n/**\n * Generates React component code from a Proto Markdown AST using Shadcn UI components\n */\nexport class ShadcnCodeGenerator {\n private indentLevel = 0;\n private readonly indentSize = 2;\n private requiredImports = new Set<string>();\n\n /**\n * Generate complete React component code from markdown AST\n */\n generate(nodes: MarkdownNode[]): string {\n this.indentLevel = 0;\n this.requiredImports.clear();\n\n // Check if the component contains a workflow\n const hasWorkflow = nodes.some(node => node.type === 'workflow');\n\n // Generate component body\n const componentBody = this.generateNodes(nodes);\n\n // Add base indentation (6 spaces = 3 levels for proper JSX nesting)\n const indentedBody = componentBody\n .split('\\n')\n .map(line => line ? ` ${line}` : line)\n .join('\\n');\n\n // Collect imports\n const imports = this.generateImports();\n const reactImport = hasWorkflow ? \"import { useState } from 'react';\\n\" : \"\";\n\n return `${reactImport}${imports}\n\nexport function GeneratedComponent() {\n return (\n <div className=\"space-y-2\">\n${indentedBody}\n </div>\n );\n}\n`;\n }\n\n /**\n * Generate imports based on used components\n */\n private generateImports(): string {\n const imports: string[] = [];\n\n if (this.requiredImports.has(\"Button\")) {\n imports.push('import { Button } from \"@/components/ui/button\";');\n }\n if (this.requiredImports.has(\"Input\")) {\n imports.push('import { Input } from \"@/components/ui/input\";');\n }\n if (this.requiredImports.has(\"Textarea\")) {\n imports.push('import { Textarea } from \"@/components/ui/textarea\";');\n }\n if (this.requiredImports.has(\"Card\")) {\n imports.push('import { Card, CardHeader, CardTitle, CardContent } from \"@/components/ui/card\";');\n }\n if (this.requiredImports.has(\"Checkbox\")) {\n imports.push('import { Checkbox } from \"@/components/ui/checkbox\";');\n }\n if (this.requiredImports.has(\"RadioGroup\")) {\n imports.push('import { RadioGroup, RadioGroupItem } from \"@/components/ui/radio-group\";');\n }\n if (this.requiredImports.has(\"Select\")) {\n imports.push('import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/ui/select\";');\n }\n if (this.requiredImports.has(\"Table\")) {\n imports.push('import { Table, TableHeader, TableBody, TableRow, TableHead, TableCell } from \"@/components/ui/table\";');\n }\n if (this.requiredImports.has(\"Label\")) {\n imports.push('import { Label } from \"@/components/ui/label\";');\n }\n\n return imports.join(\"\\n\");\n }\n\n /**\n * Generate code for multiple nodes\n */\n private generateNodes(nodes: MarkdownNode[]): string {\n return nodes.map((node, index) => this.generateNode(node, index)).join(\"\\n\");\n }\n\n /**\n * Generate code for a single node\n */\n private generateNode(node: MarkdownNode, index: number): string {\n switch (node.type) {\n case \"header\":\n return this.generateHeader(node, index);\n case \"input\":\n return this.generateInput(node, index);\n case \"textarea\":\n return this.generateTextarea(node, index);\n case \"dropdown\":\n return this.generateDropdown(node, index);\n case \"checkbox\":\n return this.generateCheckbox(node, index);\n case \"radiogroup\":\n return this.generateRadioGroup(node, index);\n case \"button\":\n return this.generateButton(node, index);\n case \"container\":\n return this.generateContainer(node, index);\n case \"card\":\n return this.generateCard(node, index);\n case \"table\":\n return this.generateTable(node, index);\n case \"grid\":\n return this.generateGrid(node, index);\n case \"div\":\n return this.generateDiv(node, index);\n case \"text\":\n return this.generateText(node, index);\n case \"bold\":\n return this.generateBold(node, index);\n case \"italic\":\n return this.generateItalic(node, index);\n case \"image\":\n return this.generateImage(node, index);\n case \"workflow\":\n return this.generateWorkflow(node, index);\n case \"screen\":\n return this.generateScreen(node, index);\n default:\n return \"\";\n }\n }\n\n private indent(): string {\n return \" \".repeat(this.indentLevel * this.indentSize);\n }\n\n private escapeJSX(text: string): string {\n return text\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/{/g, \"&#123;\")\n .replace(/}/g, \"&#125;\");\n }\n\n private generateHeader(node: MarkdownNode, index: number): string {\n const Tag = `h${node.level}`;\n const className = `text-${node.level === 1 ? \"4xl\" : node.level === 2 ? \"3xl\" : node.level === 3 ? \"2xl\" : node.level === 4 ? \"xl\" : node.level === 5 ? \"lg\" : \"base\"} font-bold`;\n\n let content: string;\n if (node.children && node.children.length > 0) {\n // Inline children (emphasis)\n content = node.children.map((child, i) => this.generateInlineNode(child, i)).join(\"\");\n } else {\n content = this.escapeJSX(node.content || \"\");\n }\n\n return `${this.indent()}<${Tag} key={${index}} className=\"${className}\">${content}</${Tag}>`;\n }\n\n private generateInlineNode(node: MarkdownNode, index: number): string {\n switch (node.type) {\n case \"bold\":\n const boldContent = node.children?.map((child, i) => this.generateInlineNode(child, i)).join(\"\") || this.escapeJSX(node.content || \"\");\n return `<strong key={${index}}>${boldContent}</strong>`;\n case \"italic\":\n const italicContent = node.children?.map((child, i) => this.generateInlineNode(child, i)).join(\"\") || this.escapeJSX(node.content || \"\");\n return `<em key={${index}}>${italicContent}</em>`;\n case \"text\":\n if (node.children && node.children.length > 0) {\n return node.children.map((child, i) => this.generateInlineNode(child, i)).join(\"\");\n }\n return this.escapeJSX(node.content || \"\");\n default:\n return this.escapeJSX(node.content || \"\");\n }\n }\n\n private generateInput(node: MarkdownNode, index: number): string {\n this.requiredImports.add(\"Input\");\n this.requiredImports.add(\"Label\");\n const id = node.id || `input-${index}`;\n const type = node.inputType || \"text\";\n\n return `${this.indent()}<div key={${index}} className=\"space-y-2\">\n${this.indent()} <Label htmlFor=\"${id}\">${this.escapeJSX(node.label || \"\")}</Label>\n${this.indent()} <Input id=\"${id}\" type=\"${type}\" />\n${this.indent()}</div>`;\n }\n\n private generateTextarea(node: MarkdownNode, index: number): string {\n this.requiredImports.add(\"Textarea\");\n this.requiredImports.add(\"Label\");\n const id = node.id || `textarea-${index}`;\n\n return `${this.indent()}<div key={${index}} className=\"space-y-2\">\n${this.indent()} <Label htmlFor=\"${id}\">${this.escapeJSX(node.label || \"\")}</Label>\n${this.indent()} <Textarea id=\"${id}\" />\n${this.indent()}</div>`;\n }\n\n private generateDropdown(node: MarkdownNode, index: number): string {\n this.requiredImports.add(\"Select\");\n this.requiredImports.add(\"Label\");\n const id = node.id || `select-${index}`;\n const options = node.options || [];\n\n return `${this.indent()}<div key={${index}} className=\"space-y-2\">\n${this.indent()} <Label htmlFor=\"${id}\">${this.escapeJSX(node.label || \"\")}</Label>\n${this.indent()} <Select>\n${this.indent()} <SelectTrigger id=\"${id}\">\n${this.indent()} <SelectValue placeholder=\"Select an option\" />\n${this.indent()} </SelectTrigger>\n${this.indent()} <SelectContent>\n${options.map((opt, i) => `${this.indent()} <SelectItem key={${i}} value=\"${opt.toLowerCase().replace(/\\s+/g, \"-\")}\">${this.escapeJSX(opt)}</SelectItem>`).join(\"\\n\")}\n${this.indent()} </SelectContent>\n${this.indent()} </Select>\n${this.indent()}</div>`;\n }\n\n private generateCheckbox(node: MarkdownNode, index: number): string {\n this.requiredImports.add(\"Checkbox\");\n this.requiredImports.add(\"Label\");\n const id = node.id || `checkbox-${index}`;\n\n return `${this.indent()}<div key={${index}} className=\"flex items-center space-x-2\">\n${this.indent()} <Checkbox id=\"${id}\" />\n${this.indent()} <Label htmlFor=\"${id}\" className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\">\n${this.indent()} ${this.escapeJSX(node.label || \"\")}\n${this.indent()} </Label>\n${this.indent()}</div>`;\n }\n\n private generateRadioGroup(node: MarkdownNode, index: number): string {\n this.requiredImports.add(\"RadioGroup\");\n this.requiredImports.add(\"Label\");\n const options = node.options || [];\n\n return `${this.indent()}<div key={${index}} className=\"space-y-2\">\n${this.indent()} <Label>${this.escapeJSX(node.label || \"\")}</Label>\n${this.indent()} <RadioGroup>\n${options.map((opt, i) => {\n const optId = `radio-${index}-${i}`;\n const value = opt.toLowerCase().replace(/\\s+/g, \"-\");\n return `${this.indent()} <div className=\"flex items-center space-x-2\">\n${this.indent()} <RadioGroupItem id=\"${optId}\" value=\"${value}\" />\n${this.indent()} <Label htmlFor=\"${optId}\">${this.escapeJSX(opt)}</Label>\n${this.indent()} </div>`;\n }).join(\"\\n\")}\n${this.indent()} </RadioGroup>\n${this.indent()}</div>`;\n }\n\n private generateButton(node: MarkdownNode, index: number): string {\n this.requiredImports.add(\"Button\");\n const variant = node.variant || \"default\";\n const className = node.className ? ` className=\"${node.className}\"` : \"\";\n\n // Add onClick handler if button has navigation\n const onClick = node.navigateTo ? ` onClick={() => setCurrentScreen('${node.navigateTo}')}` : \"\";\n\n return `${this.indent()}<Button key={${index}} variant=\"${variant}\"${className}${onClick}>${this.escapeJSX(node.content || \"\")}</Button>`;\n }\n\n private generateContainer(node: MarkdownNode, index: number): string {\n this.indentLevel++;\n const children = node.children ? this.generateNodes(node.children) : \"\";\n this.indentLevel--;\n\n return `${this.indent()}<div key={${index}} className=\"flex gap-2\">\n${children}\n${this.indent()}</div>`;\n }\n\n private generateCard(node: MarkdownNode, index: number): string {\n this.requiredImports.add(\"Card\");\n\n let titleContent = \"\";\n if (node.titleChildren && node.titleChildren.length > 0) {\n titleContent = node.titleChildren.map((child, i) => this.generateInlineNode(child, i)).join(\"\");\n } else if (node.title) {\n titleContent = this.escapeJSX(node.title);\n }\n\n // Increment by 2 to account for Card wrapper + CardContent nesting\n this.indentLevel += 2;\n const children = node.children ? this.generateNodes(node.children) : \"\";\n this.indentLevel -= 2;\n\n const cardContent = titleContent\n ? `${this.indent()}<Card key={${index}}>\n${this.indent()} <CardHeader>\n${this.indent()} <CardTitle>${titleContent}</CardTitle>\n${this.indent()} </CardHeader>\n${this.indent()} <CardContent className=\"space-y-2\">\n${children}\n${this.indent()} </CardContent>\n${this.indent()}</Card>`\n : `${this.indent()}<Card key={${index}}>\n${this.indent()} <CardContent className=\"pt-6 space-y-2\">\n${children}\n${this.indent()} </CardContent>\n${this.indent()}</Card>`;\n\n return cardContent;\n }\n\n private generateTable(node: MarkdownNode, index: number): string {\n this.requiredImports.add(\"Table\");\n const headers = node.headers || [];\n const rows = node.rows || [];\n\n return `${this.indent()}<Table key={${index}}>\n${this.indent()} <TableHeader>\n${this.indent()} <TableRow>\n${headers.map((header, i) => `${this.indent()} <TableHead key={${i}}>${this.escapeJSX(header)}</TableHead>`).join(\"\\n\")}\n${this.indent()} </TableRow>\n${this.indent()} </TableHeader>\n${this.indent()} <TableBody>\n${rows.map((row, i) => `${this.indent()} <TableRow key={${i}}>\n${row.map((cell, j) => `${this.indent()} <TableCell key={${j}}>${this.escapeJSX(cell)}</TableCell>`).join(\"\\n\")}\n${this.indent()} </TableRow>`).join(\"\\n\")}\n${this.indent()} </TableBody>\n${this.indent()}</Table>`;\n }\n\n private generateGrid(node: MarkdownNode, index: number): string {\n const gridClasses = `grid ${node.gridConfig || \"\"}`;\n\n this.indentLevel++;\n const children = node.children ? this.generateNodes(node.children) : \"\";\n this.indentLevel--;\n\n return `${this.indent()}<div key={${index}} className=\"${gridClasses}\">\n${children}\n${this.indent()}</div>`;\n }\n\n private generateDiv(node: MarkdownNode, index: number): string {\n const className = node.className || \"\";\n\n this.indentLevel++;\n const children = node.children ? this.generateNodes(node.children) : \"\";\n this.indentLevel--;\n\n return `${this.indent()}<div key={${index}} className=\"${className}\">\n${children}\n${this.indent()}</div>`;\n }\n\n private generateText(node: MarkdownNode, index: number): string {\n if (node.children && node.children.length > 0) {\n // Text with inline emphasis\n const inlineContent = node.children.map((child, i) => this.generateInlineNode(child, i)).join(\"\");\n return `${this.indent()}<p key={${index}}>${inlineContent}</p>`;\n }\n return `${this.indent()}<p key={${index}}>${this.escapeJSX(node.content || \"\")}</p>`;\n }\n\n private generateBold(node: MarkdownNode, index: number): string {\n if (node.children && node.children.length > 0) {\n const content = node.children.map((child, i) => this.generateInlineNode(child, i)).join(\"\");\n return `${this.indent()}<strong key={${index}}>${content}</strong>`;\n }\n return `${this.indent()}<strong key={${index}}>${this.escapeJSX(node.content || \"\")}</strong>`;\n }\n\n private generateItalic(node: MarkdownNode, index: number): string {\n if (node.children && node.children.length > 0) {\n const content = node.children.map((child, i) => this.generateInlineNode(child, i)).join(\"\");\n return `${this.indent()}<em key={${index}}>${content}</em>`;\n }\n return `${this.indent()}<em key={${index}}>${this.escapeJSX(node.content || \"\")}</em>`;\n }\n\n private generateImage(node: MarkdownNode, index: number): string {\n const src = node.src || \"\";\n const alt = node.alt || \"\";\n\n return `${this.indent()}<img key={${index}} src=\"${src}\" alt=\"${this.escapeJSX(alt)}\" className=\"max-w-full h-auto\" />`;\n }\n\n private generateWorkflow(node: MarkdownNode, index: number): string {\n const screens = node.children || [];\n const initialScreen = node.initialScreen || screens[0]?.id || \"home\";\n\n // Generate state management\n const stateDeclaration = `${this.indent()}const [currentScreen, setCurrentScreen] = useState('${initialScreen}');`;\n\n // Generate screen rendering\n this.indentLevel++;\n const screenCases = screens.map((screen, i) => {\n const screenId = screen.id || `screen-${i}`;\n const screenContent = screen.children ? this.generateNodes(screen.children) : \"\";\n\n return `${this.indent()}${i === 0 ? '' : 'else '}if (currentScreen === '${screenId}') {\n${this.indent()} return (\n${this.indent()} <div className=\"space-y-2\">\n${screenContent}\n${this.indent()} </div>\n${this.indent()} );\n${this.indent()}}`;\n }).join('\\n');\n this.indentLevel--;\n\n // Return fallback if no screen matches\n const fallback = `${this.indent()}return <div>Screen not found</div>;`;\n\n return `${this.indent()}<div key={${index}}>\n${this.indent()} {(() => {\n${stateDeclaration}\n\n${screenCases}\n${fallback}\n${this.indent()} })()}\n${this.indent()}</div>`;\n }\n\n private generateScreen(node: MarkdownNode, index: number): string {\n // Screens are handled within workflow generation\n // This method is for standalone screen nodes (if used outside workflow)\n this.indentLevel++;\n const children = node.children ? this.generateNodes(node.children) : \"\";\n this.indentLevel--;\n\n return `${this.indent()}<div key={${index}} data-screen-id=\"${node.id || index}\" className=\"space-y-2\">\n${children}\n${this.indent()}</div>`;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/parser/MarkdownParser.ts","../src/ShadcnCodeGenerator.ts","../src/HtmlGenerator.ts"],"sourcesContent":["import { MarkdownNode, ParserOptions, ParseResult } from \"./types\";\n\nexport class MarkdownParser {\n private options: ParserOptions;\n\n constructor(options: ParserOptions = {}) {\n this.options = {\n strict: false,\n preserveWhitespace: false,\n ...options,\n };\n }\n\n parse(markdown: string): ParseResult {\n const lines = markdown.split(\"\\n\");\n const nodes: MarkdownNode[] = [];\n const errors: string[] = [];\n let i = 0;\n\n while (i < lines.length) {\n const line = this.options.preserveWhitespace ? lines[i] : lines[i].trim();\n\n if (!line) {\n i++;\n continue;\n }\n\n // Check for table (line with pipes)\n if (line.includes(\"|\") && line.trim().startsWith(\"|\")) {\n const headers = line\n .split(\"|\")\n .map((h) => h.trim())\n .filter((h) => h.length > 0);\n\n i++;\n // Skip separator line (|---|---|)\n if (i < lines.length) {\n const separatorLine = this.options.preserveWhitespace\n ? lines[i]\n : lines[i].trim();\n if (separatorLine.includes(\"-\") && separatorLine.includes(\"|\")) {\n i++;\n }\n }\n\n // Parse table rows\n const rows: string[][] = [];\n while (i < lines.length) {\n const rowLine = this.options.preserveWhitespace\n ? lines[i]\n : lines[i].trim();\n\n if (!rowLine || !rowLine.includes(\"|\")) {\n break;\n }\n\n const cells = rowLine\n .split(\"|\")\n .map((c) => c.trim())\n .filter((c) => c.length > 0);\n rows.push(cells);\n i++;\n }\n\n nodes.push({\n type: \"table\",\n headers,\n rows,\n });\n continue;\n }\n\n // Check for workflow start\n if (line === '[workflow' || line.startsWith('[workflow ')) {\n const result = this.parseWorkflow(lines, i);\n nodes.push(result.node);\n i = result.nextIndex;\n continue;\n }\n\n // Check for card start\n const cardMatch = line.match(/^\\[--\\s*(.*)$/);\n if (cardMatch) {\n const result = this.parseCard(lines, i, cardMatch[1] || undefined);\n nodes.push(result.node);\n i = result.nextIndex;\n continue;\n }\n\n // Check for grid start ([grid cols-2 gap-4)\n const gridMatch = line.match(/^\\[grid\\s+(.*)$/);\n if (gridMatch) {\n const result = this.parseContainer(lines, i, 'grid', gridMatch[1]);\n nodes.push(result.node);\n i = result.nextIndex;\n continue;\n }\n\n // Check for plain div start ([ or [ class-name)\n const divMatch = line.match(/^\\[\\s*(.*)$/);\n if (divMatch && !line.includes(\"]\")) {\n const result = this.parseContainer(lines, i, 'div', divMatch[1] || '');\n nodes.push(result.node);\n i = result.nextIndex;\n continue;\n }\n\n const node = this.parseLine(line);\n if (node) {\n nodes.push(node);\n } else if (this.options.strict) {\n errors.push(`Line ${i + 1}: Unable to parse \"${line}\"`);\n }\n i++;\n }\n\n return { nodes, errors: errors.length > 0 ? errors : undefined };\n }\n\n private parseWorkflow(\n lines: string[],\n startIndex: number\n ): { node: MarkdownNode; nextIndex: number } {\n const screens: MarkdownNode[] = [];\n let i = startIndex + 1;\n let depth = 1;\n let initialScreen: string | undefined;\n\n // Parse workflow content until we find the matching closing ]\n while (i < lines.length && depth > 0) {\n const workflowLine = this.options.preserveWhitespace ? lines[i] : lines[i].trim();\n\n // Check for workflow closing\n if (workflowLine === \"]\") {\n depth--;\n if (depth === 0) {\n break;\n }\n }\n\n // Check for screen opening ([screen id)\n const screenMatch = workflowLine.match(/^\\[screen\\s+(.+)$/);\n if (screenMatch) {\n const screenId = screenMatch[1].trim();\n const result = this.parseScreen(lines, i, screenId);\n screens.push(result.node);\n\n // First screen becomes the initial screen\n if (!initialScreen) {\n initialScreen = screenId;\n }\n\n i = result.nextIndex;\n continue;\n }\n\n i++;\n }\n\n return {\n node: {\n type: \"workflow\",\n children: screens,\n initialScreen: initialScreen || (screens[0]?.id),\n },\n nextIndex: i + 1,\n };\n }\n\n private parseScreen(\n lines: string[],\n startIndex: number,\n screenId: string\n ): { node: MarkdownNode; nextIndex: number } {\n const screenChildren: MarkdownNode[] = [];\n let i = startIndex + 1;\n let depth = 1;\n\n // Parse screen content until we find the matching closing ]\n while (i < lines.length && depth > 0) {\n const screenLine = this.options.preserveWhitespace ? lines[i] : lines[i].trim();\n\n // Check for screen closing\n if (screenLine === \"]\") {\n depth--;\n if (depth === 0) {\n break;\n }\n }\n\n // Check for nested card opening\n if (screenLine.match(/^\\[--\\s*(.*)$/)) {\n const nestedTitle = screenLine.match(/^\\[--\\s*(.*)$/)?.[1] || undefined;\n const result = this.parseCard(lines, i, nestedTitle);\n screenChildren.push(result.node);\n i = result.nextIndex;\n continue;\n }\n\n // Check for nested grid opening\n if (screenLine.match(/^\\[grid\\s+(.*)$/)) {\n const nestedConfig = screenLine.match(/^\\[grid\\s+(.*)$/)?.[1] || '';\n const result = this.parseContainer(lines, i, 'grid', nestedConfig);\n screenChildren.push(result.node);\n i = result.nextIndex;\n continue;\n }\n\n // Check for nested div opening\n if (screenLine.match(/^\\[\\s*(.*)$/) && !screenLine.includes(\"]\")) {\n const nestedConfig = screenLine.match(/^\\[\\s*(.*)$/)?.[1] || '';\n const result = this.parseContainer(lines, i, 'div', nestedConfig);\n screenChildren.push(result.node);\n i = result.nextIndex;\n continue;\n }\n\n if (screenLine) {\n const childNode = this.parseLine(screenLine);\n if (childNode) {\n screenChildren.push(childNode);\n }\n }\n i++;\n }\n\n return {\n node: {\n type: \"screen\",\n id: screenId,\n children: screenChildren,\n },\n nextIndex: i + 1,\n };\n }\n\n private parseCard(\n lines: string[],\n startIndex: number,\n title: string | undefined\n ): { node: MarkdownNode; nextIndex: number } {\n const cardChildren: MarkdownNode[] = [];\n let i = startIndex + 1;\n let depth = 1;\n\n // Parse card content until we find the matching closing --]\n while (i < lines.length && depth > 0) {\n const cardLine = this.options.preserveWhitespace ? lines[i] : lines[i].trim();\n\n // Check for card closing\n if (cardLine === \"--]\") {\n depth--;\n if (depth === 0) {\n break;\n }\n }\n\n // Check for nested card opening (must be before div check)\n if (cardLine.match(/^\\[--\\s*(.*)$/)) {\n const nestedTitle = cardLine.match(/^\\[--\\s*(.*)$/)?.[1] || undefined;\n const result = this.parseCard(lines, i, nestedTitle);\n cardChildren.push(result.node);\n i = result.nextIndex;\n continue;\n }\n\n // Check for nested grid opening\n if (cardLine.match(/^\\[grid\\s+(.*)$/)) {\n const nestedConfig = cardLine.match(/^\\[grid\\s+(.*)$/)?.[1] || '';\n const result = this.parseContainer(lines, i, 'grid', nestedConfig);\n cardChildren.push(result.node);\n i = result.nextIndex;\n continue;\n }\n\n // Check for nested div opening\n if (cardLine.match(/^\\[\\s*(.*)$/) && !cardLine.includes(\"]\")) {\n const nestedConfig = cardLine.match(/^\\[\\s*(.*)$/)?.[1] || '';\n const result = this.parseContainer(lines, i, 'div', nestedConfig);\n cardChildren.push(result.node);\n i = result.nextIndex;\n continue;\n }\n\n if (cardLine) {\n const childNode = this.parseLine(cardLine);\n if (childNode) {\n cardChildren.push(childNode);\n }\n }\n i++;\n }\n\n return {\n node: {\n type: \"card\",\n titleChildren: title ? this.parseInlineEmphasis(title) : undefined,\n children: cardChildren,\n },\n nextIndex: i + 1,\n };\n }\n\n private parseContainer(\n lines: string[],\n startIndex: number,\n type: 'grid' | 'div',\n config: string\n ): { node: MarkdownNode; nextIndex: number } {\n const containerChildren: MarkdownNode[] = [];\n let i = startIndex + 1;\n let depth = 1;\n\n // Parse container content until we find the matching closing ]\n while (i < lines.length && depth > 0) {\n const containerLine = this.options.preserveWhitespace ? lines[i] : lines[i].trim();\n\n // Check for container closing\n if (containerLine === \"]\") {\n depth--;\n if (depth === 0) {\n break;\n }\n }\n\n // Check for nested card opening (must be before div check)\n if (containerLine.match(/^\\[--\\s*(.*)$/)) {\n const nestedTitle = containerLine.match(/^\\[--\\s*(.*)$/)?.[1] || undefined;\n const result = this.parseCard(lines, i, nestedTitle);\n containerChildren.push(result.node);\n i = result.nextIndex;\n continue;\n }\n\n // Check for nested grid opening\n if (containerLine.match(/^\\[grid\\s+(.*)$/)) {\n const nestedConfig = containerLine.match(/^\\[grid\\s+(.*)$/)?.[1] || '';\n const result = this.parseContainer(lines, i, 'grid', nestedConfig);\n containerChildren.push(result.node);\n i = result.nextIndex;\n continue;\n }\n\n // Check for nested div opening\n if (containerLine.match(/^\\[\\s*(.*)$/) && !containerLine.includes(\"]\")) {\n const nestedConfig = containerLine.match(/^\\[\\s*(.*)$/)?.[1] || '';\n const result = this.parseContainer(lines, i, 'div', nestedConfig);\n containerChildren.push(result.node);\n i = result.nextIndex;\n continue;\n }\n\n if (containerLine) {\n const childNode = this.parseLine(containerLine);\n if (childNode) {\n containerChildren.push(childNode);\n }\n }\n i++;\n }\n\n const node: MarkdownNode = {\n type,\n children: containerChildren,\n };\n\n if (type === 'grid') {\n node.gridConfig = config;\n } else if (type === 'div' && config) {\n node.className = config;\n }\n\n return {\n node,\n nextIndex: i + 1,\n };\n }\n\n private parseLine(line: string): MarkdownNode | null {\n // Parse headers (# H1, ## H2, etc.)\n const headerMatch = line.match(/^(#{1,6})\\s+(.+)$/);\n if (headerMatch) {\n return {\n type: \"header\",\n level: headerMatch[1].length,\n children: this.parseInlineEmphasis(headerMatch[2]),\n };\n }\n\n // Parse multiple form fields on one line (inputs, textareas, dropdowns, checkboxes)\n // This must be checked BEFORE single field patterns\n const fieldPattern = /(.+?)\\s+(___|\\|___\\||__\\*|__>(?:\\s*\\[[^\\]]+\\])?|__\\[\\])/g;\n const fieldMatches = [...line.matchAll(fieldPattern)];\n\n if (fieldMatches.length > 1) {\n return {\n type: \"container\",\n children: fieldMatches.map((match) => {\n const label = match[1].trim();\n const marker = match[2];\n\n if (marker === '__*') {\n return {\n type: \"input\",\n label,\n inputType: \"password\",\n } as MarkdownNode;\n } else if (marker === '|___|') {\n return {\n type: \"textarea\",\n label,\n } as MarkdownNode;\n } else if (marker === '__[]') {\n return {\n type: \"checkbox\",\n label,\n } as MarkdownNode;\n } else if (marker.startsWith('__>')) {\n // Handle dropdown with or without options\n const optionsMatch = marker.match(/\\[([^\\]]+)\\]/);\n if (optionsMatch) {\n const options = optionsMatch[1]\n .split(\",\")\n .map((opt) => opt.trim())\n .filter((opt) => opt.length > 0);\n return {\n type: \"dropdown\",\n label,\n options,\n } as MarkdownNode;\n } else {\n return {\n type: \"dropdown\",\n label,\n } as MarkdownNode;\n }\n } else { // ___\n return {\n type: \"input\",\n label,\n inputType: \"text\",\n } as MarkdownNode;\n }\n }),\n };\n }\n\n // Parse password inputs (Label __*)\n const passwordMatch = line.match(/^(.+?)\\s+__\\*$/);\n if (passwordMatch) {\n return {\n type: \"input\",\n label: passwordMatch[1],\n inputType: \"password\",\n };\n }\n\n // Parse textarea (Label |___|)\n const textareaMatch = line.match(/^(.+?)\\s+\\|___\\|$/);\n if (textareaMatch) {\n return {\n type: \"textarea\",\n label: textareaMatch[1],\n };\n }\n\n // Parse text inputs (Label ___)\n const inputMatch = line.match(/^(.+?)\\s+___$/);\n if (inputMatch) {\n return {\n type: \"input\",\n label: inputMatch[1],\n inputType: \"text\",\n };\n }\n\n // Parse checkbox (Label __[])\n const checkboxMatch = line.match(/^(.+?)\\s+__\\[\\]$/);\n if (checkboxMatch) {\n return {\n type: \"checkbox\",\n label: checkboxMatch[1],\n };\n }\n\n // Parse radio group (Label __() [option1, option2, option3])\n const radioGroupMatch = line.match(/^(.+?)\\s+__\\(\\)\\s+\\[(.+?)\\]$/);\n if (radioGroupMatch) {\n const options = radioGroupMatch[2]\n .split(\",\")\n .map((opt) => opt.trim())\n .filter((opt) => opt.length > 0);\n return {\n type: \"radiogroup\",\n label: radioGroupMatch[1],\n options,\n };\n }\n\n // Parse dropdowns with options (Label __> [option1, option2, option3])\n const dropdownWithOptionsMatch = line.match(/^(.+?)\\s+__>\\s+\\[(.+?)\\]$/);\n if (dropdownWithOptionsMatch) {\n const options = dropdownWithOptionsMatch[2]\n .split(\",\")\n .map((opt) => opt.trim())\n .filter((opt) => opt.length > 0);\n return {\n type: \"dropdown\",\n label: dropdownWithOptionsMatch[1],\n options,\n };\n }\n\n // Parse dropdowns without options (Label __>)\n const dropdownMatch = line.match(/^(.+?)\\s+__>$/);\n if (dropdownMatch) {\n return {\n type: \"dropdown\",\n label: dropdownMatch[1],\n };\n }\n\n // Parse image (![alt text](url))\n const imageMatch = line.match(/^!\\[([^\\]]*)\\]\\(([^)]+)\\)$/);\n if (imageMatch) {\n return {\n type: \"image\",\n alt: imageMatch[1],\n src: imageMatch[2],\n };\n }\n\n // Parse multiple buttons on one line ([btn1][(btn2)])\n const multiButtonMatch = line.match(/^(\\[\\(?[^\\[\\]]+\\)?\\]\\s*)+$/);\n if (multiButtonMatch) {\n const buttons = line.match(/\\[(\\(?)[^\\[\\]]+?(\\)?)\\]/g);\n if (buttons && buttons.length > 1) {\n return {\n type: \"container\",\n children: buttons.map((btn) => {\n // Check for navigation syntax: [(text) -> target] or [text -> target]\n const navMatch = btn.match(/\\[(\\(?)(.+?)(\\)?)\\s*->\\s*([^\\]]+)\\]/);\n if (navMatch) {\n const isDefault = navMatch[1] === \"(\" && navMatch[3] === \")\";\n const content = navMatch[2].trim();\n const navigateTo = navMatch[4].trim();\n\n return {\n type: \"button\",\n content,\n variant: isDefault ? \"default\" : \"outline\",\n navigateTo,\n };\n }\n\n const innerMatch = btn.match(/\\[(\\(?)(.+?)(\\)?)\\]/);\n if (innerMatch) {\n const isDefault = innerMatch[1] === \"(\" && innerMatch[3] === \")\";\n const content = innerMatch[2];\n\n return {\n type: \"button\",\n content,\n variant: isDefault ? \"default\" : \"outline\",\n };\n }\n return {\n type: \"button\",\n content: btn.slice(1, -1),\n variant: \"outline\",\n };\n }),\n };\n }\n }\n\n // Parse default button with navigation [(button text) -> target]\n const defaultButtonNavMatch = line.match(/^\\[\\((.+?)\\)\\s*->\\s*([^\\]]+)\\]$/);\n if (defaultButtonNavMatch) {\n const content = defaultButtonNavMatch[1].trim();\n const navigateTo = defaultButtonNavMatch[2].trim();\n\n return {\n type: \"button\",\n content,\n variant: \"default\",\n navigateTo,\n };\n }\n\n // Parse default button [(button text)] or [(button text) | classes]\n const defaultButtonMatch = line.match(/^\\[\\((.+?)\\)(?:\\s*\\|\\s*(.+))?\\]$/);\n if (defaultButtonMatch) {\n const content = defaultButtonMatch[1];\n const className = defaultButtonMatch[2]?.trim();\n\n return {\n type: \"button\",\n content,\n variant: \"default\",\n ...(className && { className }),\n };\n }\n\n // Parse outline button with navigation [button text -> target]\n const buttonNavMatch = line.match(/^\\[([^|]+?)\\s*->\\s*([^\\]]+)\\]$/);\n if (buttonNavMatch) {\n const content = buttonNavMatch[1].trim();\n const navigateTo = buttonNavMatch[2].trim();\n\n return {\n type: \"button\",\n content,\n variant: \"outline\",\n navigateTo,\n };\n }\n\n // Parse outline button [button text] or [button text | classes]\n const buttonMatch = line.match(/^\\[([^|]+?)(?:\\s*\\|\\s*(.+))?\\]$/);\n if (buttonMatch) {\n const content = buttonMatch[1].trim();\n const className = buttonMatch[2]?.trim();\n\n return {\n type: \"button\",\n content,\n variant: \"outline\",\n ...(className && { className }),\n };\n }\n\n // Plain text\n return {\n type: \"text\",\n children: this.parseInlineEmphasis(line),\n };\n }\n\n private parseInlineEmphasis(text: string): MarkdownNode[] {\n const nodes: MarkdownNode[] = [];\n let remaining = text;\n let position = 0;\n\n while (position < remaining.length) {\n // Try to match bold-italic (_*text*_)\n const boldItalicMatch = remaining\n .slice(position)\n .match(/^_\\*(.+?)\\*_/);\n if (boldItalicMatch) {\n const content = boldItalicMatch[1];\n nodes.push({\n type: \"bold\",\n children: [{ type: \"italic\", content }],\n });\n position += boldItalicMatch[0].length;\n continue;\n }\n\n // Try to match bold (*text*)\n const boldMatch = remaining.slice(position).match(/^\\*(.+?)\\*/);\n if (boldMatch) {\n nodes.push({\n type: \"bold\",\n content: boldMatch[1],\n });\n position += boldMatch[0].length;\n continue;\n }\n\n // Try to match italic (_text_)\n const italicMatch = remaining.slice(position).match(/^_(.+?)_/);\n if (italicMatch) {\n nodes.push({\n type: \"italic\",\n content: italicMatch[1],\n });\n position += italicMatch[0].length;\n continue;\n }\n\n // No emphasis found, consume until next emphasis marker or end of string\n const nextAsterisk = remaining.slice(position).indexOf(\"*\");\n const nextUnderscore = remaining.slice(position).indexOf(\"_\");\n\n // Find the nearest marker\n let nextMarker = -1;\n if (nextAsterisk !== -1 && nextUnderscore !== -1) {\n nextMarker = Math.min(nextAsterisk, nextUnderscore);\n } else if (nextAsterisk !== -1) {\n nextMarker = nextAsterisk;\n } else if (nextUnderscore !== -1) {\n nextMarker = nextUnderscore;\n }\n\n const textEnd =\n nextMarker === -1\n ? remaining.length\n : position + nextMarker;\n\n if (textEnd > position) {\n nodes.push({\n type: \"text\",\n content: remaining.slice(position, textEnd),\n });\n position = textEnd;\n } else {\n // Edge case: marker that doesn't form emphasis\n nodes.push({\n type: \"text\",\n content: remaining.slice(position, position + 1),\n });\n position++;\n }\n }\n\n return nodes;\n }\n}\n","import { MarkdownNode } from \"./parser/types\";\n\n/**\n * Generates React component code from a Proto Markdown AST using Shadcn UI components\n */\nexport class ShadcnCodeGenerator {\n private indentLevel = 0;\n private readonly indentSize = 2;\n private requiredImports = new Set<string>();\n\n /**\n * Generate complete React component code from markdown AST\n */\n generate(nodes: MarkdownNode[]): string {\n this.indentLevel = 0;\n this.requiredImports.clear();\n\n // Check if the component contains a workflow\n const hasWorkflow = nodes.some(node => node.type === 'workflow');\n\n // Generate component body\n const componentBody = this.generateNodes(nodes);\n\n // Add base indentation (6 spaces = 3 levels for proper JSX nesting)\n const indentedBody = componentBody\n .split('\\n')\n .map(line => line ? ` ${line}` : line)\n .join('\\n');\n\n // Collect imports\n const imports = this.generateImports();\n const reactImport = hasWorkflow ? \"import { useState } from 'react';\\n\" : \"\";\n\n return `${reactImport}${imports}\n\nexport function GeneratedComponent() {\n return (\n <div className=\"space-y-2\">\n${indentedBody}\n </div>\n );\n}\n`;\n }\n\n /**\n * Generate imports based on used components\n */\n private generateImports(): string {\n const imports: string[] = [];\n\n if (this.requiredImports.has(\"Button\")) {\n imports.push('import { Button } from \"@/components/ui/button\";');\n }\n if (this.requiredImports.has(\"Input\")) {\n imports.push('import { Input } from \"@/components/ui/input\";');\n }\n if (this.requiredImports.has(\"Textarea\")) {\n imports.push('import { Textarea } from \"@/components/ui/textarea\";');\n }\n if (this.requiredImports.has(\"Card\")) {\n imports.push('import { Card, CardHeader, CardTitle, CardContent } from \"@/components/ui/card\";');\n }\n if (this.requiredImports.has(\"Checkbox\")) {\n imports.push('import { Checkbox } from \"@/components/ui/checkbox\";');\n }\n if (this.requiredImports.has(\"RadioGroup\")) {\n imports.push('import { RadioGroup, RadioGroupItem } from \"@/components/ui/radio-group\";');\n }\n if (this.requiredImports.has(\"Select\")) {\n imports.push('import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/ui/select\";');\n }\n if (this.requiredImports.has(\"Table\")) {\n imports.push('import { Table, TableHeader, TableBody, TableRow, TableHead, TableCell } from \"@/components/ui/table\";');\n }\n if (this.requiredImports.has(\"Label\")) {\n imports.push('import { Label } from \"@/components/ui/label\";');\n }\n\n return imports.join(\"\\n\");\n }\n\n /**\n * Generate code for multiple nodes\n */\n private generateNodes(nodes: MarkdownNode[]): string {\n return nodes.map((node, index) => this.generateNode(node, index)).join(\"\\n\");\n }\n\n /**\n * Generate code for a single node\n */\n private generateNode(node: MarkdownNode, index: number): string {\n switch (node.type) {\n case \"header\":\n return this.generateHeader(node, index);\n case \"input\":\n return this.generateInput(node, index);\n case \"textarea\":\n return this.generateTextarea(node, index);\n case \"dropdown\":\n return this.generateDropdown(node, index);\n case \"checkbox\":\n return this.generateCheckbox(node, index);\n case \"radiogroup\":\n return this.generateRadioGroup(node, index);\n case \"button\":\n return this.generateButton(node, index);\n case \"container\":\n return this.generateContainer(node, index);\n case \"card\":\n return this.generateCard(node, index);\n case \"table\":\n return this.generateTable(node, index);\n case \"grid\":\n return this.generateGrid(node, index);\n case \"div\":\n return this.generateDiv(node, index);\n case \"text\":\n return this.generateText(node, index);\n case \"bold\":\n return this.generateBold(node, index);\n case \"italic\":\n return this.generateItalic(node, index);\n case \"image\":\n return this.generateImage(node, index);\n case \"workflow\":\n return this.generateWorkflow(node, index);\n case \"screen\":\n return this.generateScreen(node, index);\n default:\n return \"\";\n }\n }\n\n private indent(): string {\n return \" \".repeat(this.indentLevel * this.indentSize);\n }\n\n private escapeJSX(text: string): string {\n return text\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/{/g, \"&#123;\")\n .replace(/}/g, \"&#125;\");\n }\n\n private generateHeader(node: MarkdownNode, index: number): string {\n const Tag = `h${node.level}`;\n const className = `text-${node.level === 1 ? \"4xl\" : node.level === 2 ? \"3xl\" : node.level === 3 ? \"2xl\" : node.level === 4 ? \"xl\" : node.level === 5 ? \"lg\" : \"base\"} font-bold`;\n\n let content: string;\n if (node.children && node.children.length > 0) {\n // Inline children (emphasis)\n content = node.children.map((child, i) => this.generateInlineNode(child, i)).join(\"\");\n } else {\n content = this.escapeJSX(node.content || \"\");\n }\n\n return `${this.indent()}<${Tag} key={${index}} className=\"${className}\">${content}</${Tag}>`;\n }\n\n private generateInlineNode(node: MarkdownNode, index: number): string {\n switch (node.type) {\n case \"bold\":\n const boldContent = node.children?.map((child, i) => this.generateInlineNode(child, i)).join(\"\") || this.escapeJSX(node.content || \"\");\n return `<strong key={${index}}>${boldContent}</strong>`;\n case \"italic\":\n const italicContent = node.children?.map((child, i) => this.generateInlineNode(child, i)).join(\"\") || this.escapeJSX(node.content || \"\");\n return `<em key={${index}}>${italicContent}</em>`;\n case \"text\":\n if (node.children && node.children.length > 0) {\n return node.children.map((child, i) => this.generateInlineNode(child, i)).join(\"\");\n }\n return this.escapeJSX(node.content || \"\");\n default:\n return this.escapeJSX(node.content || \"\");\n }\n }\n\n private generateInput(node: MarkdownNode, index: number): string {\n this.requiredImports.add(\"Input\");\n this.requiredImports.add(\"Label\");\n const id = node.id || `input-${index}`;\n const type = node.inputType || \"text\";\n\n return `${this.indent()}<div key={${index}} className=\"space-y-2\">\n${this.indent()} <Label htmlFor=\"${id}\">${this.escapeJSX(node.label || \"\")}</Label>\n${this.indent()} <Input id=\"${id}\" type=\"${type}\" />\n${this.indent()}</div>`;\n }\n\n private generateTextarea(node: MarkdownNode, index: number): string {\n this.requiredImports.add(\"Textarea\");\n this.requiredImports.add(\"Label\");\n const id = node.id || `textarea-${index}`;\n\n return `${this.indent()}<div key={${index}} className=\"space-y-2\">\n${this.indent()} <Label htmlFor=\"${id}\">${this.escapeJSX(node.label || \"\")}</Label>\n${this.indent()} <Textarea id=\"${id}\" />\n${this.indent()}</div>`;\n }\n\n private generateDropdown(node: MarkdownNode, index: number): string {\n this.requiredImports.add(\"Select\");\n this.requiredImports.add(\"Label\");\n const id = node.id || `select-${index}`;\n const options = node.options || [];\n\n return `${this.indent()}<div key={${index}} className=\"space-y-2\">\n${this.indent()} <Label htmlFor=\"${id}\">${this.escapeJSX(node.label || \"\")}</Label>\n${this.indent()} <Select>\n${this.indent()} <SelectTrigger id=\"${id}\">\n${this.indent()} <SelectValue placeholder=\"Select an option\" />\n${this.indent()} </SelectTrigger>\n${this.indent()} <SelectContent>\n${options.map((opt, i) => `${this.indent()} <SelectItem key={${i}} value=\"${opt.toLowerCase().replace(/\\s+/g, \"-\")}\">${this.escapeJSX(opt)}</SelectItem>`).join(\"\\n\")}\n${this.indent()} </SelectContent>\n${this.indent()} </Select>\n${this.indent()}</div>`;\n }\n\n private generateCheckbox(node: MarkdownNode, index: number): string {\n this.requiredImports.add(\"Checkbox\");\n this.requiredImports.add(\"Label\");\n const id = node.id || `checkbox-${index}`;\n\n return `${this.indent()}<div key={${index}} className=\"flex items-center space-x-2\">\n${this.indent()} <Checkbox id=\"${id}\" />\n${this.indent()} <Label htmlFor=\"${id}\" className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\">\n${this.indent()} ${this.escapeJSX(node.label || \"\")}\n${this.indent()} </Label>\n${this.indent()}</div>`;\n }\n\n private generateRadioGroup(node: MarkdownNode, index: number): string {\n this.requiredImports.add(\"RadioGroup\");\n this.requiredImports.add(\"Label\");\n const options = node.options || [];\n\n return `${this.indent()}<div key={${index}} className=\"space-y-2\">\n${this.indent()} <Label>${this.escapeJSX(node.label || \"\")}</Label>\n${this.indent()} <RadioGroup>\n${options.map((opt, i) => {\n const optId = `radio-${index}-${i}`;\n const value = opt.toLowerCase().replace(/\\s+/g, \"-\");\n return `${this.indent()} <div className=\"flex items-center space-x-2\">\n${this.indent()} <RadioGroupItem id=\"${optId}\" value=\"${value}\" />\n${this.indent()} <Label htmlFor=\"${optId}\">${this.escapeJSX(opt)}</Label>\n${this.indent()} </div>`;\n }).join(\"\\n\")}\n${this.indent()} </RadioGroup>\n${this.indent()}</div>`;\n }\n\n private generateButton(node: MarkdownNode, index: number): string {\n this.requiredImports.add(\"Button\");\n const variant = node.variant || \"default\";\n const className = node.className ? ` className=\"${node.className}\"` : \"\";\n\n // Add onClick handler if button has navigation\n const onClick = node.navigateTo ? ` onClick={() => setCurrentScreen('${node.navigateTo}')}` : \"\";\n\n return `${this.indent()}<Button key={${index}} variant=\"${variant}\"${className}${onClick}>${this.escapeJSX(node.content || \"\")}</Button>`;\n }\n\n private generateContainer(node: MarkdownNode, index: number): string {\n this.indentLevel++;\n const children = node.children ? this.generateNodes(node.children) : \"\";\n this.indentLevel--;\n\n return `${this.indent()}<div key={${index}} className=\"flex gap-2\">\n${children}\n${this.indent()}</div>`;\n }\n\n private generateCard(node: MarkdownNode, index: number): string {\n this.requiredImports.add(\"Card\");\n\n let titleContent = \"\";\n if (node.titleChildren && node.titleChildren.length > 0) {\n titleContent = node.titleChildren.map((child, i) => this.generateInlineNode(child, i)).join(\"\");\n } else if (node.title) {\n titleContent = this.escapeJSX(node.title);\n }\n\n // Increment by 2 to account for Card wrapper + CardContent nesting\n this.indentLevel += 2;\n const children = node.children ? this.generateNodes(node.children) : \"\";\n this.indentLevel -= 2;\n\n const cardContent = titleContent\n ? `${this.indent()}<Card key={${index}}>\n${this.indent()} <CardHeader>\n${this.indent()} <CardTitle>${titleContent}</CardTitle>\n${this.indent()} </CardHeader>\n${this.indent()} <CardContent className=\"space-y-2\">\n${children}\n${this.indent()} </CardContent>\n${this.indent()}</Card>`\n : `${this.indent()}<Card key={${index}}>\n${this.indent()} <CardContent className=\"pt-6 space-y-2\">\n${children}\n${this.indent()} </CardContent>\n${this.indent()}</Card>`;\n\n return cardContent;\n }\n\n private generateTable(node: MarkdownNode, index: number): string {\n this.requiredImports.add(\"Table\");\n const headers = node.headers || [];\n const rows = node.rows || [];\n\n return `${this.indent()}<Table key={${index}}>\n${this.indent()} <TableHeader>\n${this.indent()} <TableRow>\n${headers.map((header, i) => `${this.indent()} <TableHead key={${i}}>${this.escapeJSX(header)}</TableHead>`).join(\"\\n\")}\n${this.indent()} </TableRow>\n${this.indent()} </TableHeader>\n${this.indent()} <TableBody>\n${rows.map((row, i) => `${this.indent()} <TableRow key={${i}}>\n${row.map((cell, j) => `${this.indent()} <TableCell key={${j}}>${this.escapeJSX(cell)}</TableCell>`).join(\"\\n\")}\n${this.indent()} </TableRow>`).join(\"\\n\")}\n${this.indent()} </TableBody>\n${this.indent()}</Table>`;\n }\n\n private generateGrid(node: MarkdownNode, index: number): string {\n const gridClasses = `grid ${node.gridConfig || \"\"}`;\n\n this.indentLevel++;\n const children = node.children ? this.generateNodes(node.children) : \"\";\n this.indentLevel--;\n\n return `${this.indent()}<div key={${index}} className=\"${gridClasses}\">\n${children}\n${this.indent()}</div>`;\n }\n\n private generateDiv(node: MarkdownNode, index: number): string {\n const className = node.className || \"\";\n\n this.indentLevel++;\n const children = node.children ? this.generateNodes(node.children) : \"\";\n this.indentLevel--;\n\n return `${this.indent()}<div key={${index}} className=\"${className}\">\n${children}\n${this.indent()}</div>`;\n }\n\n private generateText(node: MarkdownNode, index: number): string {\n if (node.children && node.children.length > 0) {\n // Text with inline emphasis\n const inlineContent = node.children.map((child, i) => this.generateInlineNode(child, i)).join(\"\");\n return `${this.indent()}<p key={${index}}>${inlineContent}</p>`;\n }\n return `${this.indent()}<p key={${index}}>${this.escapeJSX(node.content || \"\")}</p>`;\n }\n\n private generateBold(node: MarkdownNode, index: number): string {\n if (node.children && node.children.length > 0) {\n const content = node.children.map((child, i) => this.generateInlineNode(child, i)).join(\"\");\n return `${this.indent()}<strong key={${index}}>${content}</strong>`;\n }\n return `${this.indent()}<strong key={${index}}>${this.escapeJSX(node.content || \"\")}</strong>`;\n }\n\n private generateItalic(node: MarkdownNode, index: number): string {\n if (node.children && node.children.length > 0) {\n const content = node.children.map((child, i) => this.generateInlineNode(child, i)).join(\"\");\n return `${this.indent()}<em key={${index}}>${content}</em>`;\n }\n return `${this.indent()}<em key={${index}}>${this.escapeJSX(node.content || \"\")}</em>`;\n }\n\n private generateImage(node: MarkdownNode, index: number): string {\n const src = node.src || \"\";\n const alt = node.alt || \"\";\n\n return `${this.indent()}<img key={${index}} src=\"${src}\" alt=\"${this.escapeJSX(alt)}\" className=\"max-w-full h-auto\" />`;\n }\n\n private generateWorkflow(node: MarkdownNode, index: number): string {\n const screens = node.children || [];\n const initialScreen = node.initialScreen || screens[0]?.id || \"home\";\n\n // Generate state management\n const stateDeclaration = `${this.indent()}const [currentScreen, setCurrentScreen] = useState('${initialScreen}');`;\n\n // Generate screen rendering\n this.indentLevel++;\n const screenCases = screens.map((screen, i) => {\n const screenId = screen.id || `screen-${i}`;\n const screenContent = screen.children ? this.generateNodes(screen.children) : \"\";\n\n return `${this.indent()}${i === 0 ? '' : 'else '}if (currentScreen === '${screenId}') {\n${this.indent()} return (\n${this.indent()} <div className=\"space-y-2\">\n${screenContent}\n${this.indent()} </div>\n${this.indent()} );\n${this.indent()}}`;\n }).join('\\n');\n this.indentLevel--;\n\n // Return fallback if no screen matches\n const fallback = `${this.indent()}return <div>Screen not found</div>;`;\n\n return `${this.indent()}<div key={${index}}>\n${this.indent()} {(() => {\n${stateDeclaration}\n\n${screenCases}\n${fallback}\n${this.indent()} })()}\n${this.indent()}</div>`;\n }\n\n private generateScreen(node: MarkdownNode, index: number): string {\n // Screens are handled within workflow generation\n // This method is for standalone screen nodes (if used outside workflow)\n this.indentLevel++;\n const children = node.children ? this.generateNodes(node.children) : \"\";\n this.indentLevel--;\n\n return `${this.indent()}<div key={${index}} data-screen-id=\"${node.id || index}\" className=\"space-y-2\">\n${children}\n${this.indent()}</div>`;\n }\n}\n","import { MarkdownNode } from \"./parser/types\";\n\n/**\n * Generates HTML from a Proto Markdown AST\n * Used for VS Code extension preview rendering\n */\nexport class HtmlGenerator {\n /**\n * Generate HTML from markdown AST\n */\n generate(nodes: MarkdownNode[]): string {\n return nodes.map((node) => this.renderNode(node)).join(\"\\n\");\n }\n\n private renderNode(node: MarkdownNode): string {\n switch (node.type) {\n case \"header\":\n return this.renderHeader(node);\n case \"text\":\n return this.renderText(node);\n case \"bold\":\n return this.renderBold(node);\n case \"italic\":\n return this.renderItalic(node);\n case \"input\":\n return this.renderInput(node);\n case \"textarea\":\n return this.renderTextarea(node);\n case \"checkbox\":\n return this.renderCheckbox(node);\n case \"radiogroup\":\n return this.renderRadioGroup(node);\n case \"dropdown\":\n return this.renderDropdown(node);\n case \"button\":\n return this.renderButton(node);\n case \"card\":\n return this.renderCard(node);\n case \"container\":\n return this.renderContainer(node);\n case \"grid\":\n return this.renderGrid(node);\n case \"div\":\n return this.renderDiv(node);\n case \"table\":\n return this.renderTable(node);\n case \"image\":\n return this.renderImage(node);\n case \"workflow\":\n return this.renderWorkflow(node);\n case \"screen\":\n return this.renderScreen(node);\n default:\n return `<div class=\"proto-unknown\">${JSON.stringify(node)}</div>`;\n }\n }\n\n private renderHeader(node: MarkdownNode): string {\n const level = node.level || 1;\n let content: string;\n\n if (node.children && node.children.length > 0) {\n content = this.renderInlineNodes(node.children);\n } else {\n content = this.escapeHtml(node.content || \"\");\n }\n\n return `<h${level} class=\"proto-header\">${content}</h${level}>`;\n }\n\n private renderText(node: MarkdownNode): string {\n if (node.children && node.children.length > 0) {\n const content = this.renderInlineNodes(node.children);\n return `<p class=\"proto-text\">${content}</p>`;\n }\n return `<p class=\"proto-text\">${this.escapeHtml(node.content || \"\")}</p>`;\n }\n\n private renderBold(node: MarkdownNode): string {\n if (node.children && node.children.length > 0) {\n return `<strong>${this.renderInlineNodes(node.children)}</strong>`;\n }\n return `<strong>${this.escapeHtml(node.content || \"\")}</strong>`;\n }\n\n private renderItalic(node: MarkdownNode): string {\n if (node.children && node.children.length > 0) {\n return `<em>${this.renderInlineNodes(node.children)}</em>`;\n }\n return `<em>${this.escapeHtml(node.content || \"\")}</em>`;\n }\n\n private renderInlineNodes(nodes: MarkdownNode[]): string {\n return nodes.map((node) => this.renderInlineNode(node)).join(\"\");\n }\n\n private renderInlineNode(node: MarkdownNode): string {\n switch (node.type) {\n case \"bold\":\n if (node.children && node.children.length > 0) {\n return `<strong>${this.renderInlineNodes(node.children)}</strong>`;\n }\n return `<strong>${this.escapeHtml(node.content || \"\")}</strong>`;\n case \"italic\":\n if (node.children && node.children.length > 0) {\n return `<em>${this.renderInlineNodes(node.children)}</em>`;\n }\n return `<em>${this.escapeHtml(node.content || \"\")}</em>`;\n case \"text\":\n if (node.children && node.children.length > 0) {\n return this.renderInlineNodes(node.children);\n }\n return this.escapeHtml(node.content || \"\");\n default:\n return this.escapeHtml(node.content || \"\");\n }\n }\n\n private renderInput(node: MarkdownNode): string {\n const placeholder = node.inputType === \"password\" ? \"••••••••\" : \"\";\n return `\n <div class=\"proto-field\">\n <label class=\"proto-label\">${this.escapeHtml(node.label || \"\")}</label>\n <input type=\"${\n node.inputType || \"text\"\n }\" class=\"proto-input\" placeholder=\"${placeholder}\" disabled />\n </div>`;\n }\n\n private renderTextarea(node: MarkdownNode): string {\n return `\n <div class=\"proto-field\">\n <label class=\"proto-label\">${this.escapeHtml(node.label || \"\")}</label>\n <textarea class=\"proto-textarea\" disabled></textarea>\n </div>`;\n }\n\n private renderCheckbox(node: MarkdownNode): string {\n return `\n <div class=\"proto-checkbox\">\n <input type=\"checkbox\" class=\"proto-checkbox-input\" disabled />\n <label class=\"proto-checkbox-label\">${this.escapeHtml(\n node.label || \"\"\n )}</label>\n </div>`;\n }\n\n private renderRadioGroup(node: MarkdownNode): string {\n const options = (node.options || [])\n .map(\n (opt) => `\n <div class=\"proto-radio-option\">\n <input type=\"radio\" class=\"proto-radio-input\" name=\"${this.escapeHtml(\n node.label || \"\"\n )}\" disabled />\n <label class=\"proto-radio-label\">${this.escapeHtml(opt)}</label>\n </div>`\n )\n .join(\"\");\n\n return `\n <div class=\"proto-radiogroup\">\n <label class=\"proto-label\">${this.escapeHtml(node.label || \"\")}</label>\n <div class=\"proto-radio-options\">${options}</div>\n </div>`;\n }\n\n private renderDropdown(node: MarkdownNode): string {\n const options = (node.options || [\"Select an option\"])\n .map((opt) => `<option>${this.escapeHtml(opt)}</option>`)\n .join(\"\");\n\n return `\n <div class=\"proto-field\">\n <label class=\"proto-label\">${this.escapeHtml(node.label || \"\")}</label>\n <select class=\"proto-select\" disabled>${options}</select>\n </div>`;\n }\n\n private renderButton(node: MarkdownNode): string {\n const btnClass =\n node.variant === \"default\"\n ? \"proto-button-default\"\n : \"proto-button-outline\";\n\n const navIndicator = node.navigateTo\n ? ` <span class=\"proto-nav-indicator\">→ ${this.escapeHtml(\n node.navigateTo\n )}</span>`\n : \"\";\n\n return `<button class=\"proto-button ${btnClass}\" disabled>${this.escapeHtml(\n node.content || \"\"\n )}${navIndicator}</button>`;\n }\n\n private renderCard(node: MarkdownNode): string {\n let cardTitle = \"\";\n\n if (node.titleChildren && node.titleChildren.length > 0) {\n cardTitle = `<div class=\"proto-card-header\">${this.renderInlineNodes(\n node.titleChildren\n )}</div>`;\n } else if (node.title) {\n cardTitle = `<div class=\"proto-card-header\">${this.escapeHtml(\n node.title\n )}</div>`;\n }\n\n const cardChildren = node.children ? this.generate(node.children) : \"\";\n\n return `\n <div class=\"proto-card\">\n ${cardTitle}\n <div class=\"proto-card-content\">${cardChildren}</div>\n </div>`;\n }\n\n private renderContainer(node: MarkdownNode): string {\n const children = node.children ? this.generate(node.children) : \"\";\n return `<div class=\"proto-container\">${children}</div>`;\n }\n\n private renderGrid(node: MarkdownNode): string {\n const children = node.children ? this.generate(node.children) : \"\";\n const gridConfig = this.parseGridConfig(node.gridConfig || \"\");\n return `<div class=\"proto-grid\" style=\"${gridConfig}\">${children}</div>`;\n }\n\n private renderDiv(node: MarkdownNode): string {\n const children = node.children ? this.generate(node.children) : \"\";\n return `<div class=\"proto-div ${this.escapeHtml(\n node.className || \"\"\n )}\">${children}</div>`;\n }\n\n private renderTable(node: MarkdownNode): string {\n const headerCells = (node.headers || [])\n .map((h) => `<th class=\"proto-table-th\">${this.escapeHtml(h)}</th>`)\n .join(\"\");\n\n const bodyRows = (node.rows || [])\n .map(\n (row) =>\n `<tr>${row\n .map(\n (cell) =>\n `<td class=\"proto-table-td\">${this.escapeHtml(cell)}</td>`\n )\n .join(\"\")}</tr>`\n )\n .join(\"\");\n\n return `\n <table class=\"proto-table\">\n <thead><tr>${headerCells}</tr></thead>\n <tbody>${bodyRows}</tbody>\n </table>`;\n }\n\n private renderImage(node: MarkdownNode): string {\n return `<img class=\"proto-image\" src=\"${this.escapeHtml(\n node.src || \"\"\n )}\" alt=\"${this.escapeHtml(node.alt || \"\")}\" />`;\n }\n\n private renderWorkflow(node: MarkdownNode): string {\n const screens = (node.children || [])\n .map((screen, idx) => {\n const isInitial = screen.id === node.initialScreen || idx === 0;\n const screenContent = screen.children\n ? this.generate(screen.children)\n : \"\";\n const screenId = screen.id || \"\";\n\n return `\n <div class=\"proto-screen${\n isInitial ? \" proto-screen-active\" : \"\"\n }\" data-screen-id=\"${this.escapeHtml(screenId)}\">\n <div class=\"proto-screen-header\">\n <span class=\"proto-screen-badge\">${this.escapeHtml(\n screenId\n )}</span>\n ${\n isInitial\n ? '<span class=\"proto-screen-initial\">Initial</span>'\n : \"\"\n }\n </div>\n <div class=\"proto-screen-content\">${screenContent}</div>\n </div>`;\n })\n .join(\"\");\n\n return `<div class=\"proto-workflow\">${screens}</div>`;\n }\n\n private renderScreen(node: MarkdownNode): string {\n const screenChildren = node.children ? this.generate(node.children) : \"\";\n const screenId = node.id || \"\";\n\n return `\n <div class=\"proto-screen\" data-screen-id=\"${this.escapeHtml(screenId)}\">\n <div class=\"proto-screen-header\">\n <span class=\"proto-screen-badge\">${this.escapeHtml(screenId)}</span>\n </div>\n <div class=\"proto-screen-content\">${screenChildren}</div>\n </div>`;\n }\n\n private parseGridConfig(config: string): string {\n const styles: string[] = [];\n\n // Parse cols-N\n const colsMatch = config.match(/cols-(\\d+)/);\n if (colsMatch) {\n styles.push(`grid-template-columns: repeat(${colsMatch[1]}, 1fr)`);\n }\n\n // Parse gap-N\n const gapMatch = config.match(/gap-(\\d+)/);\n if (gapMatch) {\n styles.push(`gap: ${parseInt(gapMatch[1]) * 4}px`);\n }\n\n return styles.join(\"; \");\n }\n\n private escapeHtml(text: string): string {\n return text\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/'/g, \"&#039;\");\n }\n}\n"],"names":[],"mappings":";;MAEa,cAAc,CAAA;AAGzB,IAAA,WAAA,CAAY,UAAyB,EAAE,EAAA;QACrC,IAAI,CAAC,OAAO,GAAG;AACb,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,kBAAkB,EAAE,KAAK;AACzB,YAAA,GAAG,OAAO;SACX;IACH;AAEA,IAAA,KAAK,CAAC,QAAgB,EAAA;QACpB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;QAClC,MAAM,KAAK,GAAmB,EAAE;QAChC,MAAM,MAAM,GAAa,EAAE;QAC3B,IAAI,CAAC,GAAG,CAAC;AAET,QAAA,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE;YACvB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YAEzE,IAAI,CAAC,IAAI,EAAE;AACT,gBAAA,CAAC,EAAE;gBACH;YACF;;AAGA,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;gBACrD,MAAM,OAAO,GAAG;qBACb,KAAK,CAAC,GAAG;qBACT,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;AACnB,qBAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAE9B,gBAAA,CAAC,EAAE;;AAEH,gBAAA,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE;AACpB,oBAAA,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC;AACjC,0BAAE,KAAK,CAAC,CAAC;0BACP,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AACnB,oBAAA,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC9D,wBAAA,CAAC,EAAE;oBACL;gBACF;;gBAGA,MAAM,IAAI,GAAe,EAAE;AAC3B,gBAAA,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE;AACvB,oBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC3B,0BAAE,KAAK,CAAC,CAAC;0BACP,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;oBAEnB,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;wBACtC;oBACF;oBAEA,MAAM,KAAK,GAAG;yBACX,KAAK,CAAC,GAAG;yBACT,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;AACnB,yBAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9B,oBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAChB,oBAAA,CAAC,EAAE;gBACL;gBAEA,KAAK,CAAC,IAAI,CAAC;AACT,oBAAA,IAAI,EAAE,OAAO;oBACb,OAAO;oBACP,IAAI;AACL,iBAAA,CAAC;gBACF;YACF;;YAGA,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;gBACzD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3C,gBAAA,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACvB,gBAAA,CAAC,GAAG,MAAM,CAAC,SAAS;gBACpB;YACF;;YAGA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;YAC7C,IAAI,SAAS,EAAE;AACb,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;AAClE,gBAAA,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACvB,gBAAA,CAAC,GAAG,MAAM,CAAC,SAAS;gBACpB;YACF;;YAGA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;YAC/C,IAAI,SAAS,EAAE;AACb,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAClE,gBAAA,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACvB,gBAAA,CAAC,GAAG,MAAM,CAAC,SAAS;gBACpB;YACF;;YAGA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;YAC1C,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACnC,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACtE,gBAAA,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACvB,gBAAA,CAAC,GAAG,MAAM,CAAC,SAAS;gBACpB;YACF;YAEA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YACjC,IAAI,IAAI,EAAE;AACR,gBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAClB;AAAO,iBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBAC9B,MAAM,CAAC,IAAI,CAAC,CAAA,KAAA,EAAQ,CAAC,GAAG,CAAC,CAAA,mBAAA,EAAsB,IAAI,CAAA,CAAA,CAAG,CAAC;YACzD;AACA,YAAA,CAAC,EAAE;QACL;AAEA,QAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,SAAS,EAAE;IAClE;IAEQ,aAAa,CACnB,KAAe,EACf,UAAkB,EAAA;QAElB,MAAM,OAAO,GAAmB,EAAE;AAClC,QAAA,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC;QACtB,IAAI,KAAK,GAAG,CAAC;AACb,QAAA,IAAI,aAAiC;;QAGrC,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC,EAAE;YACpC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;;AAGjF,YAAA,IAAI,YAAY,KAAK,GAAG,EAAE;AACxB,gBAAA,KAAK,EAAE;AACP,gBAAA,IAAI,KAAK,KAAK,CAAC,EAAE;oBACf;gBACF;YACF;;YAGA,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC,mBAAmB,CAAC;YAC3D,IAAI,WAAW,EAAE;gBACf,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AACtC,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC;AACnD,gBAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;;gBAGzB,IAAI,CAAC,aAAa,EAAE;oBAClB,aAAa,GAAG,QAAQ;gBAC1B;AAEA,gBAAA,CAAC,GAAG,MAAM,CAAC,SAAS;gBACpB;YACF;AAEA,YAAA,CAAC,EAAE;QACL;QAEA,OAAO;AACL,YAAA,IAAI,EAAE;AACJ,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,QAAQ,EAAE,OAAO;gBACjB,aAAa,EAAE,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACjD,aAAA;YACD,SAAS,EAAE,CAAC,GAAG,CAAC;SACjB;IACH;AAEQ,IAAA,WAAW,CACjB,KAAe,EACf,UAAkB,EAClB,QAAgB,EAAA;QAEhB,MAAM,cAAc,GAAmB,EAAE;AACzC,QAAA,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC;QACtB,IAAI,KAAK,GAAG,CAAC;;QAGb,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC,EAAE;YACpC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;;AAG/E,YAAA,IAAI,UAAU,KAAK,GAAG,EAAE;AACtB,gBAAA,KAAK,EAAE;AACP,gBAAA,IAAI,KAAK,KAAK,CAAC,EAAE;oBACf;gBACF;YACF;;AAGA,YAAA,IAAI,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE;AACrC,gBAAA,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS;AACvE,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,WAAW,CAAC;AACpD,gBAAA,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAChC,gBAAA,CAAC,GAAG,MAAM,CAAC,SAAS;gBACpB;YACF;;AAGA,YAAA,IAAI,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE;AACvC,gBAAA,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;AACnE,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC;AAClE,gBAAA,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAChC,gBAAA,CAAC,GAAG,MAAM,CAAC,SAAS;gBACpB;YACF;;AAGA,YAAA,IAAI,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAChE,gBAAA,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;AAC/D,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC;AACjE,gBAAA,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAChC,gBAAA,CAAC,GAAG,MAAM,CAAC,SAAS;gBACpB;YACF;YAEA,IAAI,UAAU,EAAE;gBACd,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;gBAC5C,IAAI,SAAS,EAAE;AACb,oBAAA,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;gBAChC;YACF;AACA,YAAA,CAAC,EAAE;QACL;QAEA,OAAO;AACL,YAAA,IAAI,EAAE;AACJ,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,EAAE,EAAE,QAAQ;AACZ,gBAAA,QAAQ,EAAE,cAAc;AACzB,aAAA;YACD,SAAS,EAAE,CAAC,GAAG,CAAC;SACjB;IACH;AAEQ,IAAA,SAAS,CACf,KAAe,EACf,UAAkB,EAClB,KAAyB,EAAA;QAEzB,MAAM,YAAY,GAAmB,EAAE;AACvC,QAAA,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC;QACtB,IAAI,KAAK,GAAG,CAAC;;QAGb,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC,EAAE;YACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;;AAG7E,YAAA,IAAI,QAAQ,KAAK,KAAK,EAAE;AACtB,gBAAA,KAAK,EAAE;AACP,gBAAA,IAAI,KAAK,KAAK,CAAC,EAAE;oBACf;gBACF;YACF;;AAGA,YAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE;AACnC,gBAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS;AACrE,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,WAAW,CAAC;AACpD,gBAAA,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC9B,gBAAA,CAAC,GAAG,MAAM,CAAC,SAAS;gBACpB;YACF;;AAGA,YAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE;AACrC,gBAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;AACjE,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC;AAClE,gBAAA,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC9B,gBAAA,CAAC,GAAG,MAAM,CAAC,SAAS;gBACpB;YACF;;AAGA,YAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC5D,gBAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;AAC7D,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC;AACjE,gBAAA,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AAC9B,gBAAA,CAAC,GAAG,MAAM,CAAC,SAAS;gBACpB;YACF;YAEA,IAAI,QAAQ,EAAE;gBACZ,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;gBAC1C,IAAI,SAAS,EAAE;AACb,oBAAA,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;gBAC9B;YACF;AACA,YAAA,CAAC,EAAE;QACL;QAEA,OAAO;AACL,YAAA,IAAI,EAAE;AACJ,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,aAAa,EAAE,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,SAAS;AAClE,gBAAA,QAAQ,EAAE,YAAY;AACvB,aAAA;YACD,SAAS,EAAE,CAAC,GAAG,CAAC;SACjB;IACH;AAEQ,IAAA,cAAc,CACpB,KAAe,EACf,UAAkB,EAClB,IAAoB,EACpB,MAAc,EAAA;QAEd,MAAM,iBAAiB,GAAmB,EAAE;AAC5C,QAAA,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC;QACtB,IAAI,KAAK,GAAG,CAAC;;QAGb,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC,EAAE;YACpC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;;AAGlF,YAAA,IAAI,aAAa,KAAK,GAAG,EAAE;AACzB,gBAAA,KAAK,EAAE;AACP,gBAAA,IAAI,KAAK,KAAK,CAAC,EAAE;oBACf;gBACF;YACF;;AAGA,YAAA,IAAI,aAAa,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE;AACxC,gBAAA,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS;AAC1E,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,WAAW,CAAC;AACpD,gBAAA,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACnC,gBAAA,CAAC,GAAG,MAAM,CAAC,SAAS;gBACpB;YACF;;AAGA,YAAA,IAAI,aAAa,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE;AAC1C,gBAAA,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;AACtE,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC;AAClE,gBAAA,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACnC,gBAAA,CAAC,GAAG,MAAM,CAAC,SAAS;gBACpB;YACF;;AAGA,YAAA,IAAI,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACtE,gBAAA,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;AAClE,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC;AACjE,gBAAA,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACnC,gBAAA,CAAC,GAAG,MAAM,CAAC,SAAS;gBACpB;YACF;YAEA,IAAI,aAAa,EAAE;gBACjB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;gBAC/C,IAAI,SAAS,EAAE;AACb,oBAAA,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC;gBACnC;YACF;AACA,YAAA,CAAC,EAAE;QACL;AAEA,QAAA,MAAM,IAAI,GAAiB;YACzB,IAAI;AACJ,YAAA,QAAQ,EAAE,iBAAiB;SAC5B;AAED,QAAA,IAAI,IAAI,KAAK,MAAM,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,GAAG,MAAM;QAC1B;AAAO,aAAA,IAAI,IAAI,KAAK,KAAK,IAAI,MAAM,EAAE;AACnC,YAAA,IAAI,CAAC,SAAS,GAAG,MAAM;QACzB;QAEA,OAAO;YACL,IAAI;YACJ,SAAS,EAAE,CAAC,GAAG,CAAC;SACjB;IACH;AAEQ,IAAA,SAAS,CAAC,IAAY,EAAA;;QAE5B,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC;QACnD,IAAI,WAAW,EAAE;YACf,OAAO;AACL,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM;gBAC5B,QAAQ,EAAE,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;aACnD;QACH;;;QAIA,MAAM,YAAY,GAAG,0DAA0D;QAC/E,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAErD,QAAA,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3B,OAAO;AACL,gBAAA,IAAI,EAAE,WAAW;gBACjB,QAAQ,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,KAAI;oBACnC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC7B,oBAAA,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;AAEvB,oBAAA,IAAI,MAAM,KAAK,KAAK,EAAE;wBACpB,OAAO;AACL,4BAAA,IAAI,EAAE,OAAO;4BACb,KAAK;AACL,4BAAA,SAAS,EAAE,UAAU;yBACN;oBACnB;AAAO,yBAAA,IAAI,MAAM,KAAK,OAAO,EAAE;wBAC7B,OAAO;AACL,4BAAA,IAAI,EAAE,UAAU;4BAChB,KAAK;yBACU;oBACnB;AAAO,yBAAA,IAAI,MAAM,KAAK,MAAM,EAAE;wBAC5B,OAAO;AACL,4BAAA,IAAI,EAAE,UAAU;4BAChB,KAAK;yBACU;oBACnB;AAAO,yBAAA,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;;wBAEnC,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC;wBACjD,IAAI,YAAY,EAAE;AAChB,4BAAA,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC;iCAC3B,KAAK,CAAC,GAAG;iCACT,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,EAAE;AACvB,iCAAA,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;4BAClC,OAAO;AACL,gCAAA,IAAI,EAAE,UAAU;gCAChB,KAAK;gCACL,OAAO;6BACQ;wBACnB;6BAAO;4BACL,OAAO;AACL,gCAAA,IAAI,EAAE,UAAU;gCAChB,KAAK;6BACU;wBACnB;oBACF;AAAO,yBAAA;wBACL,OAAO;AACL,4BAAA,IAAI,EAAE,OAAO;4BACb,KAAK;AACL,4BAAA,SAAS,EAAE,MAAM;yBACF;oBACnB;AACF,gBAAA,CAAC,CAAC;aACH;QACH;;QAGA,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;QAClD,IAAI,aAAa,EAAE;YACjB,OAAO;AACL,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;AACvB,gBAAA,SAAS,EAAE,UAAU;aACtB;QACH;;QAGA,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC;QACrD,IAAI,aAAa,EAAE;YACjB,OAAO;AACL,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;aACxB;QACH;;QAGA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;QAC9C,IAAI,UAAU,EAAE;YACd,OAAO;AACL,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;AACpB,gBAAA,SAAS,EAAE,MAAM;aAClB;QACH;;QAGA,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC;QACpD,IAAI,aAAa,EAAE;YACjB,OAAO;AACL,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;aACxB;QACH;;QAGA,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,8BAA8B,CAAC;QAClE,IAAI,eAAe,EAAE;AACnB,YAAA,MAAM,OAAO,GAAG,eAAe,CAAC,CAAC;iBAC9B,KAAK,CAAC,GAAG;iBACT,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,EAAE;AACvB,iBAAA,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;YAClC,OAAO;AACL,gBAAA,IAAI,EAAE,YAAY;AAClB,gBAAA,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC;gBACzB,OAAO;aACR;QACH;;QAGA,MAAM,wBAAwB,GAAG,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC;QACxE,IAAI,wBAAwB,EAAE;AAC5B,YAAA,MAAM,OAAO,GAAG,wBAAwB,CAAC,CAAC;iBACvC,KAAK,CAAC,GAAG;iBACT,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,EAAE;AACvB,iBAAA,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;YAClC,OAAO;AACL,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,KAAK,EAAE,wBAAwB,CAAC,CAAC,CAAC;gBAClC,OAAO;aACR;QACH;;QAGA,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;QACjD,IAAI,aAAa,EAAE;YACjB,OAAO;AACL,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;aACxB;QACH;;QAGA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,4BAA4B,CAAC;QAC3D,IAAI,UAAU,EAAE;YACd,OAAO;AACL,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;AAClB,gBAAA,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;aACnB;QACH;;QAGA,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,4BAA4B,CAAC;QACjE,IAAI,gBAAgB,EAAE;YACpB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC;YACtD,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBACjC,OAAO;AACL,oBAAA,IAAI,EAAE,WAAW;oBACjB,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;;wBAE5B,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,qCAAqC,CAAC;wBACjE,IAAI,QAAQ,EAAE;AACZ,4BAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG;4BAC5D,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;4BAClC,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;4BAErC,OAAO;AACL,gCAAA,IAAI,EAAE,QAAQ;gCACd,OAAO;gCACP,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS;gCAC1C,UAAU;6BACX;wBACH;wBAEA,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,qBAAqB,CAAC;wBACnD,IAAI,UAAU,EAAE;AACd,4BAAA,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,GAAG;AAChE,4BAAA,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC;4BAE7B,OAAO;AACL,gCAAA,IAAI,EAAE,QAAQ;gCACd,OAAO;gCACP,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS;6BAC3C;wBACH;wBACA,OAAO;AACL,4BAAA,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;AACzB,4BAAA,OAAO,EAAE,SAAS;yBACnB;AACH,oBAAA,CAAC,CAAC;iBACH;YACH;QACF;;QAGA,MAAM,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,iCAAiC,CAAC;QAC3E,IAAI,qBAAqB,EAAE;YACzB,MAAM,OAAO,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YAC/C,MAAM,UAAU,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YAElD,OAAO;AACL,gBAAA,IAAI,EAAE,QAAQ;gBACd,OAAO;AACP,gBAAA,OAAO,EAAE,SAAS;gBAClB,UAAU;aACX;QACH;;QAGA,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,kCAAkC,CAAC;QACzE,IAAI,kBAAkB,EAAE;AACtB,YAAA,MAAM,OAAO,GAAG,kBAAkB,CAAC,CAAC,CAAC;YACrC,MAAM,SAAS,GAAG,kBAAkB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE;YAE/C,OAAO;AACL,gBAAA,IAAI,EAAE,QAAQ;gBACd,OAAO;AACP,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,IAAI,SAAS,IAAI,EAAE,SAAS,EAAE,CAAC;aAChC;QACH;;QAGA,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,gCAAgC,CAAC;QACnE,IAAI,cAAc,EAAE;YAClB,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YACxC,MAAM,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YAE3C,OAAO;AACL,gBAAA,IAAI,EAAE,QAAQ;gBACd,OAAO;AACP,gBAAA,OAAO,EAAE,SAAS;gBAClB,UAAU;aACX;QACH;;QAGA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,iCAAiC,CAAC;QACjE,IAAI,WAAW,EAAE;YACf,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YACrC,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE;YAExC,OAAO;AACL,gBAAA,IAAI,EAAE,QAAQ;gBACd,OAAO;AACP,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,IAAI,SAAS,IAAI,EAAE,SAAS,EAAE,CAAC;aAChC;QACH;;QAGA,OAAO;AACL,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,QAAQ,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;SACzC;IACH;AAEQ,IAAA,mBAAmB,CAAC,IAAY,EAAA;QACtC,MAAM,KAAK,GAAmB,EAAE;QAChC,IAAI,SAAS,GAAG,IAAI;QACpB,IAAI,QAAQ,GAAG,CAAC;AAEhB,QAAA,OAAO,QAAQ,GAAG,SAAS,CAAC,MAAM,EAAE;;YAElC,MAAM,eAAe,GAAG;iBACrB,KAAK,CAAC,QAAQ;iBACd,KAAK,CAAC,cAAc,CAAC;YACxB,IAAI,eAAe,EAAE;AACnB,gBAAA,MAAM,OAAO,GAAG,eAAe,CAAC,CAAC,CAAC;gBAClC,KAAK,CAAC,IAAI,CAAC;AACT,oBAAA,IAAI,EAAE,MAAM;oBACZ,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AACxC,iBAAA,CAAC;AACF,gBAAA,QAAQ,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM;gBACrC;YACF;;AAGA,YAAA,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;YAC/D,IAAI,SAAS,EAAE;gBACb,KAAK,CAAC,IAAI,CAAC;AACT,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;AACtB,iBAAA,CAAC;AACF,gBAAA,QAAQ,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM;gBAC/B;YACF;;AAGA,YAAA,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;YAC/D,IAAI,WAAW,EAAE;gBACf,KAAK,CAAC,IAAI,CAAC;AACT,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;AACxB,iBAAA,CAAC;AACF,gBAAA,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM;gBACjC;YACF;;AAGA,YAAA,MAAM,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;AAC3D,YAAA,MAAM,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;;AAG7D,YAAA,IAAI,UAAU,GAAG,EAAE;YACnB,IAAI,YAAY,KAAK,EAAE,IAAI,cAAc,KAAK,EAAE,EAAE;gBAChD,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,cAAc,CAAC;YACrD;AAAO,iBAAA,IAAI,YAAY,KAAK,EAAE,EAAE;gBAC9B,UAAU,GAAG,YAAY;YAC3B;AAAO,iBAAA,IAAI,cAAc,KAAK,EAAE,EAAE;gBAChC,UAAU,GAAG,cAAc;YAC7B;AAEA,YAAA,MAAM,OAAO,GACX,UAAU,KAAK;kBACX,SAAS,CAAC;AACZ,kBAAE,QAAQ,GAAG,UAAU;AAE3B,YAAA,IAAI,OAAO,GAAG,QAAQ,EAAE;gBACtB,KAAK,CAAC,IAAI,CAAC;AACT,oBAAA,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC;AAC5C,iBAAA,CAAC;gBACF,QAAQ,GAAG,OAAO;YACpB;iBAAO;;gBAEL,KAAK,CAAC,IAAI,CAAC;AACT,oBAAA,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,CAAC,CAAC;AACjD,iBAAA,CAAC;AACF,gBAAA,QAAQ,EAAE;YACZ;QACF;AAEA,QAAA,OAAO,KAAK;IACd;AACD;;AC5sBD;;AAEG;MACU,mBAAmB,CAAA;AAAhC,IAAA,WAAA,GAAA;QACU,IAAA,CAAA,WAAW,GAAG,CAAC;QACN,IAAA,CAAA,UAAU,GAAG,CAAC;AACvB,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,GAAG,EAAU;IAya7C;AAvaE;;AAEG;AACH,IAAA,QAAQ,CAAC,KAAqB,EAAA;AAC5B,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC;AACpB,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;;AAG5B,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC;;QAGhE,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;;QAG/C,MAAM,YAAY,GAAG;aAClB,KAAK,CAAC,IAAI;AACV,aAAA,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,CAAA,MAAA,EAAS,IAAI,CAAA,CAAE,GAAG,IAAI;aACzC,IAAI,CAAC,IAAI,CAAC;;AAGb,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE;QACtC,MAAM,WAAW,GAAG,WAAW,GAAG,qCAAqC,GAAG,EAAE;QAE5E,OAAO,CAAA,EAAG,WAAW,CAAA,EAAG,OAAO;;;;;EAKjC,YAAY;;;;CAIb;IACC;AAEA;;AAEG;IACK,eAAe,GAAA;QACrB,MAAM,OAAO,GAAa,EAAE;QAE5B,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AACtC,YAAA,OAAO,CAAC,IAAI,CAAC,kDAAkD,CAAC;QAClE;QACA,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AACrC,YAAA,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC;QAChE;QACA,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AACxC,YAAA,OAAO,CAAC,IAAI,CAAC,sDAAsD,CAAC;QACtE;QACA,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AACpC,YAAA,OAAO,CAAC,IAAI,CAAC,kFAAkF,CAAC;QAClG;QACA,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AACxC,YAAA,OAAO,CAAC,IAAI,CAAC,sDAAsD,CAAC;QACtE;QACA,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;AAC1C,YAAA,OAAO,CAAC,IAAI,CAAC,2EAA2E,CAAC;QAC3F;QACA,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AACtC,YAAA,OAAO,CAAC,IAAI,CAAC,yGAAyG,CAAC;QACzH;QACA,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AACrC,YAAA,OAAO,CAAC,IAAI,CAAC,wGAAwG,CAAC;QACxH;QACA,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AACrC,YAAA,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC;QAChE;AAEA,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;IAC3B;AAEA;;AAEG;AACK,IAAA,aAAa,CAAC,KAAqB,EAAA;QACzC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IAC9E;AAEA;;AAEG;IACK,YAAY,CAAC,IAAkB,EAAE,KAAa,EAAA;AACpD,QAAA,QAAQ,IAAI,CAAC,IAAI;AACf,YAAA,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC;AACzC,YAAA,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC;AACxC,YAAA,KAAK,UAAU;gBACb,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC;AAC3C,YAAA,KAAK,UAAU;gBACb,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC;AAC3C,YAAA,KAAK,UAAU;gBACb,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC;AAC3C,YAAA,KAAK,YAAY;gBACf,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC;AAC7C,YAAA,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC;AACzC,YAAA,KAAK,WAAW;gBACd,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC;AAC5C,YAAA,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC;AACvC,YAAA,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC;AACxC,YAAA,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC;AACvC,YAAA,KAAK,KAAK;gBACR,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC;AACtC,YAAA,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC;AACvC,YAAA,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC;AACvC,YAAA,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC;AACzC,YAAA,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC;AACxC,YAAA,KAAK,UAAU;gBACb,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC;AAC3C,YAAA,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC;AACzC,YAAA;AACE,gBAAA,OAAO,EAAE;;IAEf;IAEQ,MAAM,GAAA;AACZ,QAAA,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC;IACvD;AAEQ,IAAA,SAAS,CAAC,IAAY,EAAA;AAC5B,QAAA,OAAO;AACJ,aAAA,OAAO,CAAC,IAAI,EAAE,OAAO;AACrB,aAAA,OAAO,CAAC,IAAI,EAAE,MAAM;AACpB,aAAA,OAAO,CAAC,IAAI,EAAE,MAAM;AACpB,aAAA,OAAO,CAAC,IAAI,EAAE,QAAQ;AACtB,aAAA,OAAO,CAAC,IAAI,EAAE,QAAQ;AACtB,aAAA,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;IAC5B;IAEQ,cAAc,CAAC,IAAkB,EAAE,KAAa,EAAA;AACtD,QAAA,MAAM,GAAG,GAAG,CAAA,CAAA,EAAI,IAAI,CAAC,KAAK,EAAE;AAC5B,QAAA,MAAM,SAAS,GAAG,CAAA,KAAA,EAAQ,IAAI,CAAC,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC,GAAG,IAAI,GAAG,MAAM,YAAY;AAEjL,QAAA,IAAI,OAAe;AACnB,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;;AAE7C,YAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACvF;aAAO;YACL,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;QAC9C;AAEA,QAAA,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,CAAA,MAAA,EAAS,KAAK,CAAA,aAAA,EAAgB,SAAS,CAAA,EAAA,EAAK,OAAO,CAAA,EAAA,EAAK,GAAG,GAAG;IAC9F;IAEQ,kBAAkB,CAAC,IAAkB,EAAE,KAAa,EAAA;AAC1D,QAAA,QAAQ,IAAI,CAAC,IAAI;AACf,YAAA,KAAK,MAAM;AACT,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;AACtI,gBAAA,OAAO,CAAA,aAAA,EAAgB,KAAK,CAAA,EAAA,EAAK,WAAW,WAAW;AACzD,YAAA,KAAK,QAAQ;AACX,gBAAA,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;AACxI,gBAAA,OAAO,CAAA,SAAA,EAAY,KAAK,CAAA,EAAA,EAAK,aAAa,OAAO;AACnD,YAAA,KAAK,MAAM;AACT,gBAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC7C,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpF;gBACA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;AAC3C,YAAA;gBACE,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;;IAE/C;IAEQ,aAAa,CAAC,IAAkB,EAAE,KAAa,EAAA;AACrD,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC;AACjC,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC;QACjC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,CAAA,MAAA,EAAS,KAAK,CAAA,CAAE;AACtC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,IAAI,MAAM;AAErC,QAAA,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,aAAa,KAAK,CAAA;AAC3C,EAAA,IAAI,CAAC,MAAM,EAAE,CAAA,kBAAA,EAAqB,EAAE,CAAA,EAAA,EAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;AACzE,EAAA,IAAI,CAAC,MAAM,EAAE,CAAA,aAAA,EAAgB,EAAE,WAAW,IAAI,CAAA;AAC9C,EAAA,IAAI,CAAC,MAAM,EAAE,CAAA,MAAA,CAAQ;IACrB;IAEQ,gBAAgB,CAAC,IAAkB,EAAE,KAAa,EAAA;AACxD,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC;AACpC,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC;QACjC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,CAAA,SAAA,EAAY,KAAK,CAAA,CAAE;AAEzC,QAAA,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,aAAa,KAAK,CAAA;AAC3C,EAAA,IAAI,CAAC,MAAM,EAAE,CAAA,kBAAA,EAAqB,EAAE,CAAA,EAAA,EAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;AACzE,EAAA,IAAI,CAAC,MAAM,EAAE,CAAA,gBAAA,EAAmB,EAAE,CAAA;AAClC,EAAA,IAAI,CAAC,MAAM,EAAE,CAAA,MAAA,CAAQ;IACrB;IAEQ,gBAAgB,CAAC,IAAkB,EAAE,KAAa,EAAA;AACxD,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC;AAClC,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC;QACjC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,CAAA,OAAA,EAAU,KAAK,CAAA,CAAE;AACvC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE;AAElC,QAAA,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,aAAa,KAAK,CAAA;AAC3C,EAAA,IAAI,CAAC,MAAM,EAAE,CAAA,kBAAA,EAAqB,EAAE,CAAA,EAAA,EAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;EACzE,IAAI,CAAC,MAAM,EAAE,CAAA;AACb,EAAA,IAAI,CAAC,MAAM,EAAE,CAAA,uBAAA,EAA0B,EAAE,CAAA;EACzC,IAAI,CAAC,MAAM,EAAE,CAAA;EACb,IAAI,CAAC,MAAM,EAAE,CAAA;EACb,IAAI,CAAC,MAAM,EAAE,CAAA;AACb,EAAA,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAA,EAAG,IAAI,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAA,SAAA,EAAY,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA,aAAA,CAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;EACxK,IAAI,CAAC,MAAM,EAAE,CAAA;EACb,IAAI,CAAC,MAAM,EAAE,CAAA;AACb,EAAA,IAAI,CAAC,MAAM,EAAE,CAAA,MAAA,CAAQ;IACrB;IAEQ,gBAAgB,CAAC,IAAkB,EAAE,KAAa,EAAA;AACxD,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC;AACpC,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC;QACjC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,CAAA,SAAA,EAAY,KAAK,CAAA,CAAE;AAEzC,QAAA,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,aAAa,KAAK,CAAA;AAC3C,EAAA,IAAI,CAAC,MAAM,EAAE,CAAA,gBAAA,EAAmB,EAAE,CAAA;AAClC,EAAA,IAAI,CAAC,MAAM,EAAE,CAAA,kBAAA,EAAqB,EAAE,CAAA;AACpC,EAAA,IAAI,CAAC,MAAM,EAAE,CAAA,IAAA,EAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;EACpD,IAAI,CAAC,MAAM,EAAE,CAAA;AACb,EAAA,IAAI,CAAC,MAAM,EAAE,CAAA,MAAA,CAAQ;IACrB;IAEQ,kBAAkB,CAAC,IAAkB,EAAE,KAAa,EAAA;AAC1D,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC;AACtC,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC;AACjC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE;AAElC,QAAA,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,aAAa,KAAK,CAAA;AAC3C,EAAA,IAAI,CAAC,MAAM,EAAE,CAAA,SAAA,EAAY,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;EACzD,IAAI,CAAC,MAAM,EAAE,CAAA;EACb,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,KAAI;AACnB,YAAA,MAAM,KAAK,GAAG,CAAA,MAAA,EAAS,KAAK,CAAA,CAAA,EAAI,CAAC,EAAE;AACnC,YAAA,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;AACpD,YAAA,OAAO,CAAA,EAAG,IAAI,CAAC,MAAM,EAAE,CAAA;AAC3B,EAAA,IAAI,CAAC,MAAM,EAAE,CAAA,0BAAA,EAA6B,KAAK,YAAY,KAAK,CAAA;EAChE,IAAI,CAAC,MAAM,EAAE,CAAA,sBAAA,EAAyB,KAAK,CAAA,EAAA,EAAK,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;AACnE,EAAA,IAAI,CAAC,MAAM,EAAE,CAAA,UAAA,CAAY;AACvB,QAAA,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;EACf,IAAI,CAAC,MAAM,EAAE,CAAA;AACb,EAAA,IAAI,CAAC,MAAM,EAAE,CAAA,MAAA,CAAQ;IACrB;IAEQ,cAAc,CAAC,IAAkB,EAAE,KAAa,EAAA;AACtD,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC;AAClC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,SAAS;AACzC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,CAAA,YAAA,EAAe,IAAI,CAAC,SAAS,CAAA,CAAA,CAAG,GAAG,EAAE;;AAGxE,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,GAAG,CAAA,kCAAA,EAAqC,IAAI,CAAC,UAAU,CAAA,GAAA,CAAK,GAAG,EAAE;QAEhG,OAAO,CAAA,EAAG,IAAI,CAAC,MAAM,EAAE,gBAAgB,KAAK,CAAA,WAAA,EAAc,OAAO,CAAA,CAAA,EAAI,SAAS,CAAA,EAAG,OAAO,CAAA,CAAA,EAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA,SAAA,CAAW;IAC3I;IAEQ,iBAAiB,CAAC,IAAkB,EAAE,KAAa,EAAA;QACzD,IAAI,CAAC,WAAW,EAAE;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;QACvE,IAAI,CAAC,WAAW,EAAE;AAElB,QAAA,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,aAAa,KAAK,CAAA;EAC3C,QAAQ;AACR,EAAA,IAAI,CAAC,MAAM,EAAE,CAAA,MAAA,CAAQ;IACrB;IAEQ,YAAY,CAAC,IAAkB,EAAE,KAAa,EAAA;AACpD,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC;QAEhC,IAAI,YAAY,GAAG,EAAE;AACrB,QAAA,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AACvD,YAAA,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACjG;AAAO,aAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACrB,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;QAC3C;;AAGA,QAAA,IAAI,CAAC,WAAW,IAAI,CAAC;QACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;AACvE,QAAA,IAAI,CAAC,WAAW,IAAI,CAAC;QAErB,MAAM,WAAW,GAAG;AAClB,cAAE,CAAA,EAAG,IAAI,CAAC,MAAM,EAAE,cAAc,KAAK,CAAA;EACzC,IAAI,CAAC,MAAM,EAAE,CAAA;AACb,EAAA,IAAI,CAAC,MAAM,EAAE,CAAA,eAAA,EAAkB,YAAY,CAAA;EAC3C,IAAI,CAAC,MAAM,EAAE,CAAA;EACb,IAAI,CAAC,MAAM,EAAE,CAAA;EACb,QAAQ;EACR,IAAI,CAAC,MAAM,EAAE,CAAA;EACb,IAAI,CAAC,MAAM,EAAE,CAAA,OAAA;AACT,cAAE,CAAA,EAAG,IAAI,CAAC,MAAM,EAAE,cAAc,KAAK,CAAA;EACzC,IAAI,CAAC,MAAM,EAAE,CAAA;EACb,QAAQ;EACR,IAAI,CAAC,MAAM,EAAE,CAAA;AACb,EAAA,IAAI,CAAC,MAAM,EAAE,CAAA,OAAA,CAAS;AAEpB,QAAA,OAAO,WAAW;IACpB;IAEQ,aAAa,CAAC,IAAkB,EAAE,KAAa,EAAA;AACrD,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC;AACjC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE;AAClC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE;AAE5B,QAAA,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,eAAe,KAAK,CAAA;EAC7C,IAAI,CAAC,MAAM,EAAE,CAAA;EACb,IAAI,CAAC,MAAM,EAAE,CAAA;AACb,EAAA,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAA,EAAG,IAAI,CAAC,MAAM,EAAE,CAAA,sBAAA,EAAyB,CAAC,CAAA,EAAA,EAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA,YAAA,CAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;EAC1H,IAAI,CAAC,MAAM,EAAE,CAAA;EACb,IAAI,CAAC,MAAM,EAAE,CAAA;EACb,IAAI,CAAC,MAAM,EAAE,CAAA;AACb,EAAA,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAA;AAC5D,EAAA,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAA,EAAG,IAAI,CAAC,MAAM,EAAE,CAAA,sBAAA,EAAyB,CAAC,CAAA,EAAA,EAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA,YAAA,CAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;EAClH,IAAI,CAAC,MAAM,EAAE,CAAA,eAAA,CAAiB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;EAC1C,IAAI,CAAC,MAAM,EAAE,CAAA;AACb,EAAA,IAAI,CAAC,MAAM,EAAE,CAAA,QAAA,CAAU;IACvB;IAEQ,YAAY,CAAC,IAAkB,EAAE,KAAa,EAAA;QACpD,MAAM,WAAW,GAAG,CAAA,KAAA,EAAQ,IAAI,CAAC,UAAU,IAAI,EAAE,CAAA,CAAE;QAEnD,IAAI,CAAC,WAAW,EAAE;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;QACvE,IAAI,CAAC,WAAW,EAAE;QAElB,OAAO,CAAA,EAAG,IAAI,CAAC,MAAM,EAAE,CAAA,UAAA,EAAa,KAAK,gBAAgB,WAAW,CAAA;EACtE,QAAQ;AACR,EAAA,IAAI,CAAC,MAAM,EAAE,CAAA,MAAA,CAAQ;IACrB;IAEQ,WAAW,CAAC,IAAkB,EAAE,KAAa,EAAA;AACnD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE;QAEtC,IAAI,CAAC,WAAW,EAAE;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;QACvE,IAAI,CAAC,WAAW,EAAE;QAElB,OAAO,CAAA,EAAG,IAAI,CAAC,MAAM,EAAE,CAAA,UAAA,EAAa,KAAK,gBAAgB,SAAS,CAAA;EACpE,QAAQ;AACR,EAAA,IAAI,CAAC,MAAM,EAAE,CAAA,MAAA,CAAQ;IACrB;IAEQ,YAAY,CAAC,IAAkB,EAAE,KAAa,EAAA;AACpD,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;;AAE7C,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YACjG,OAAO,CAAA,EAAG,IAAI,CAAC,MAAM,EAAE,WAAW,KAAK,CAAA,EAAA,EAAK,aAAa,CAAA,IAAA,CAAM;QACjE;AACA,QAAA,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA,QAAA,EAAW,KAAK,CAAA,EAAA,EAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,MAAM;IACtF;IAEQ,YAAY,CAAC,IAAkB,EAAE,KAAa,EAAA;AACpD,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7C,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3F,OAAO,CAAA,EAAG,IAAI,CAAC,MAAM,EAAE,gBAAgB,KAAK,CAAA,EAAA,EAAK,OAAO,CAAA,SAAA,CAAW;QACrE;AACA,QAAA,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA,aAAA,EAAgB,KAAK,CAAA,EAAA,EAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,WAAW;IAChG;IAEQ,cAAc,CAAC,IAAkB,EAAE,KAAa,EAAA;AACtD,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7C,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3F,OAAO,CAAA,EAAG,IAAI,CAAC,MAAM,EAAE,YAAY,KAAK,CAAA,EAAA,EAAK,OAAO,CAAA,KAAA,CAAO;QAC7D;AACA,QAAA,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA,SAAA,EAAY,KAAK,CAAA,EAAA,EAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO;IACxF;IAEQ,aAAa,CAAC,IAAkB,EAAE,KAAa,EAAA;AACrD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE;AAC1B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE;AAE1B,QAAA,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,aAAa,KAAK,CAAA,OAAA,EAAU,GAAG,CAAA,OAAA,EAAU,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,oCAAoC;IACzH;IAEQ,gBAAgB,CAAC,IAAkB,EAAE,KAAa,EAAA;AACxD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE;AACnC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,MAAM;;QAGpE,MAAM,gBAAgB,GAAG,CAAA,EAAG,IAAI,CAAC,MAAM,EAAE,CAAA,oDAAA,EAAuD,aAAa,CAAA,GAAA,CAAK;;QAGlH,IAAI,CAAC,WAAW,EAAE;QAClB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAI;YAC5C,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,IAAI,CAAA,OAAA,EAAU,CAAC,CAAA,CAAE;YAC3C,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE;AAEhF,YAAA,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA,EAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,OAAO,0BAA0B,QAAQ,CAAA;EACtF,IAAI,CAAC,MAAM,EAAE,CAAA;EACb,IAAI,CAAC,MAAM,EAAE,CAAA;EACb,aAAa;EACb,IAAI,CAAC,MAAM,EAAE,CAAA;EACb,IAAI,CAAC,MAAM,EAAE,CAAA;AACb,EAAA,IAAI,CAAC,MAAM,EAAE,CAAA,CAAA,CAAG;AACd,QAAA,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACb,IAAI,CAAC,WAAW,EAAE;;QAGlB,MAAM,QAAQ,GAAG,CAAA,EAAG,IAAI,CAAC,MAAM,EAAE,qCAAqC;AAEtE,QAAA,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,aAAa,KAAK,CAAA;EAC3C,IAAI,CAAC,MAAM,EAAE,CAAA;EACb,gBAAgB;;EAEhB,WAAW;EACX,QAAQ;EACR,IAAI,CAAC,MAAM,EAAE,CAAA;AACb,EAAA,IAAI,CAAC,MAAM,EAAE,CAAA,MAAA,CAAQ;IACrB;IAEQ,cAAc,CAAC,IAAkB,EAAE,KAAa,EAAA;;;QAGtD,IAAI,CAAC,WAAW,EAAE;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;QACvE,IAAI,CAAC,WAAW,EAAE;AAElB,QAAA,OAAO,CAAA,EAAG,IAAI,CAAC,MAAM,EAAE,CAAA,UAAA,EAAa,KAAK,CAAA,kBAAA,EAAqB,IAAI,CAAC,EAAE,IAAI,KAAK,CAAA;EAChF,QAAQ;AACR,EAAA,IAAI,CAAC,MAAM,EAAE,CAAA,MAAA,CAAQ;IACrB;AACD;;AC/aD;;;AAGG;MACU,aAAa,CAAA;AACxB;;AAEG;AACH,IAAA,QAAQ,CAAC,KAAqB,EAAA;QAC5B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IAC9D;AAEQ,IAAA,UAAU,CAAC,IAAkB,EAAA;AACnC,QAAA,QAAQ,IAAI,CAAC,IAAI;AACf,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAChC,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AAC9B,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AAC9B,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAChC,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AAC/B,YAAA,KAAK,UAAU;AACb,gBAAA,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AAClC,YAAA,KAAK,UAAU;AACb,gBAAA,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AAClC,YAAA,KAAK,YAAY;AACf,gBAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACpC,YAAA,KAAK,UAAU;AACb,gBAAA,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AAClC,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAChC,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AAC9B,YAAA,KAAK,WAAW;AACd,gBAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACnC,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AAC9B,YAAA,KAAK,KAAK;AACR,gBAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAC7B,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AAC/B,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AAC/B,YAAA,KAAK,UAAU;AACb,gBAAA,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AAClC,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAChC,YAAA;gBACE,OAAO,CAAA,2BAAA,EAA8B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ;;IAEvE;AAEQ,IAAA,YAAY,CAAC,IAAkB,EAAA;AACrC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC;AAC7B,QAAA,IAAI,OAAe;AAEnB,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7C,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC;QACjD;aAAO;YACL,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;QAC/C;AAEA,QAAA,OAAO,KAAK,KAAK,CAAA,sBAAA,EAAyB,OAAO,CAAA,GAAA,EAAM,KAAK,GAAG;IACjE;AAEQ,IAAA,UAAU,CAAC,IAAkB,EAAA;AACnC,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC;YACrD,OAAO,CAAA,sBAAA,EAAyB,OAAO,CAAA,IAAA,CAAM;QAC/C;AACA,QAAA,OAAO,CAAA,sBAAA,EAAyB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA,IAAA,CAAM;IAC3E;AAEQ,IAAA,UAAU,CAAC,IAAkB,EAAA;AACnC,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7C,OAAO,CAAA,QAAA,EAAW,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA,SAAA,CAAW;QACpE;AACA,QAAA,OAAO,CAAA,QAAA,EAAW,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA,SAAA,CAAW;IAClE;AAEQ,IAAA,YAAY,CAAC,IAAkB,EAAA;AACrC,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7C,OAAO,CAAA,IAAA,EAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA,KAAA,CAAO;QAC5D;AACA,QAAA,OAAO,CAAA,IAAA,EAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA,KAAA,CAAO;IAC1D;AAEQ,IAAA,iBAAiB,CAAC,KAAqB,EAAA;QAC7C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;IAClE;AAEQ,IAAA,gBAAgB,CAAC,IAAkB,EAAA;AACzC,QAAA,QAAQ,IAAI,CAAC,IAAI;AACf,YAAA,KAAK,MAAM;AACT,gBAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC7C,OAAO,CAAA,QAAA,EAAW,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA,SAAA,CAAW;gBACpE;AACA,gBAAA,OAAO,CAAA,QAAA,EAAW,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA,SAAA,CAAW;AAClE,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC7C,OAAO,CAAA,IAAA,EAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA,KAAA,CAAO;gBAC5D;AACA,gBAAA,OAAO,CAAA,IAAA,EAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA,KAAA,CAAO;AAC1D,YAAA,KAAK,MAAM;AACT,gBAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC7C,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAC9C;gBACA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;AAC5C,YAAA;gBACE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;;IAEhD;AAEQ,IAAA,WAAW,CAAC,IAAkB,EAAA;AACpC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,KAAK,UAAU,GAAG,UAAU,GAAG,EAAE;QACnE,OAAO;;qCAE0B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;AAE5D,qBAAA,EAAA,IAAI,CAAC,SAAS,IAAI,MACpB,sCAAsC,WAAW,CAAA;aAC5C;IACX;AAEQ,IAAA,cAAc,CAAC,IAAkB,EAAA;QACvC,OAAO;;qCAE0B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;;aAEzD;IACX;AAEQ,IAAA,cAAc,CAAC,IAAkB,EAAA;QACvC,OAAO;;;8CAGmC,IAAI,CAAC,UAAU,CACnD,IAAI,CAAC,KAAK,IAAI,EAAE,CACjB,CAAA;aACI;IACX;AAEQ,IAAA,gBAAgB,CAAC,IAAkB,EAAA;QACzC,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE;AAChC,aAAA,GAAG,CACF,CAAC,GAAG,KAAK;;gEAE+C,IAAI,CAAC,UAAU,CACnE,IAAI,CAAC,KAAK,IAAI,EAAE,CACjB,CAAA;AACkC,2CAAA,EAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;eAClD;aAER,IAAI,CAAC,EAAE,CAAC;QAEX,OAAO;;qCAE0B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;2CAC3B,OAAO,CAAA;aACrC;IACX;AAEQ,IAAA,cAAc,CAAC,IAAkB,EAAA;QACvC,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,kBAAkB,CAAC;AAClD,aAAA,GAAG,CAAC,CAAC,GAAG,KAAK,CAAA,QAAA,EAAW,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW;aACvD,IAAI,CAAC,EAAE,CAAC;QAEX,OAAO;;qCAE0B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;gDACtB,OAAO,CAAA;aAC1C;IACX;AAEQ,IAAA,YAAY,CAAC,IAAkB,EAAA;AACrC,QAAA,MAAM,QAAQ,GACZ,IAAI,CAAC,OAAO,KAAK;AACf,cAAE;cACA,sBAAsB;AAE5B,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC;cACtB,CAAA,qCAAA,EAAwC,IAAI,CAAC,UAAU,CACrD,IAAI,CAAC,UAAU,CAChB,CAAA,OAAA;cACD,EAAE;AAEN,QAAA,OAAO,+BAA+B,QAAQ,CAAA,WAAA,EAAc,IAAI,CAAC,UAAU,CACzE,IAAI,CAAC,OAAO,IAAI,EAAE,CACnB,CAAA,EAAG,YAAY,WAAW;IAC7B;AAEQ,IAAA,UAAU,CAAC,IAAkB,EAAA;QACnC,IAAI,SAAS,GAAG,EAAE;AAElB,QAAA,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YACvD,SAAS,GAAG,CAAA,+BAAA,EAAkC,IAAI,CAAC,iBAAiB,CAClE,IAAI,CAAC,aAAa,CACnB,CAAA,MAAA,CAAQ;QACX;AAAO,aAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACrB,SAAS,GAAG,CAAA,+BAAA,EAAkC,IAAI,CAAC,UAAU,CAC3D,IAAI,CAAC,KAAK,CACX,CAAA,MAAA,CAAQ;QACX;QAEA,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;QAEtE,OAAO;;UAED,SAAS;0CACuB,YAAY,CAAA;aACzC;IACX;AAEQ,IAAA,eAAe,CAAC,IAAkB,EAAA;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;QAClE,OAAO,CAAA,6BAAA,EAAgC,QAAQ,CAAA,MAAA,CAAQ;IACzD;AAEQ,IAAA,UAAU,CAAC,IAAkB,EAAA;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;AAClE,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;AAC9D,QAAA,OAAO,CAAA,+BAAA,EAAkC,UAAU,CAAA,EAAA,EAAK,QAAQ,QAAQ;IAC1E;AAEQ,IAAA,SAAS,CAAC,IAAkB,EAAA;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;AAClE,QAAA,OAAO,CAAA,sBAAA,EAAyB,IAAI,CAAC,UAAU,CAC7C,IAAI,CAAC,SAAS,IAAI,EAAE,CACrB,CAAA,EAAA,EAAK,QAAQ,QAAQ;IACxB;AAEQ,IAAA,WAAW,CAAC,IAAkB,EAAA;QACpC,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE;AACpC,aAAA,GAAG,CAAC,CAAC,CAAC,KAAK,CAAA,2BAAA,EAA8B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO;aAClE,IAAI,CAAC,EAAE,CAAC;QAEX,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;AAC9B,aAAA,GAAG,CACF,CAAC,GAAG,KACF,OAAO;AACJ,aAAA,GAAG,CACF,CAAC,IAAI,KACH,CAAA,2BAAA,EAA8B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO;AAE7D,aAAA,IAAI,CAAC,EAAE,CAAC,CAAA,KAAA,CAAO;aAErB,IAAI,CAAC,EAAE,CAAC;QAEX,OAAO;;qBAEU,WAAW,CAAA;iBACf,QAAQ,CAAA;eACV;IACb;AAEQ,IAAA,WAAW,CAAC,IAAkB,EAAA;QACpC,OAAO,CAAA,8BAAA,EAAiC,IAAI,CAAC,UAAU,CACrD,IAAI,CAAC,GAAG,IAAI,EAAE,CACf,UAAU,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAA,IAAA,CAAM;IAClD;AAEQ,IAAA,cAAc,CAAC,IAAkB,EAAA;QACvC,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE;AACjC,aAAA,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,KAAI;AACnB,YAAA,MAAM,SAAS,GAAG,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC,aAAa,IAAI,GAAG,KAAK,CAAC;AAC/D,YAAA,MAAM,aAAa,GAAG,MAAM,CAAC;kBACzB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ;kBAC7B,EAAE;AACN,YAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,IAAI,EAAE;YAEhC,OAAO;AAEH,kCAAA,EAAA,SAAS,GAAG,sBAAsB,GAAG,EACvC,CAAA,kBAAA,EAAqB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;;AAEP,+CAAA,EAAA,IAAI,CAAC,UAAU,CAChD,QAAQ,CACT,CAAA;gBAEC;AACE,kBAAE;AACF,kBAAE,EACN;;gDAEkC,aAAa,CAAA;iBAC5C;AACX,QAAA,CAAC;aACA,IAAI,CAAC,EAAE,CAAC;QAEX,OAAO,CAAA,4BAAA,EAA+B,OAAO,CAAA,MAAA,CAAQ;IACvD;AAEQ,IAAA,YAAY,CAAC,IAAkB,EAAA;QACrC,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;AACxE,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE;QAE9B,OAAO;AACuC,gDAAA,EAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;;AAE9B,2CAAA,EAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;;4CAE1B,cAAc,CAAA;aAC7C;IACX;AAEQ,IAAA,eAAe,CAAC,MAAc,EAAA;QACpC,MAAM,MAAM,GAAa,EAAE;;QAG3B,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC;QAC5C,IAAI,SAAS,EAAE;YACb,MAAM,CAAC,IAAI,CAAC,CAAA,8BAAA,EAAiC,SAAS,CAAC,CAAC,CAAC,CAAA,MAAA,CAAQ,CAAC;QACpE;;QAGA,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC;QAC1C,IAAI,QAAQ,EAAE;AACZ,YAAA,MAAM,CAAC,IAAI,CAAC,CAAA,KAAA,EAAQ,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA,EAAA,CAAI,CAAC;QACpD;AAEA,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IAC1B;AAEQ,IAAA,UAAU,CAAC,IAAY,EAAA;AAC7B,QAAA,OAAO;AACJ,aAAA,OAAO,CAAC,IAAI,EAAE,OAAO;AACrB,aAAA,OAAO,CAAC,IAAI,EAAE,MAAM;AACpB,aAAA,OAAO,CAAC,IAAI,EAAE,MAAM;AACpB,aAAA,OAAO,CAAC,IAAI,EAAE,QAAQ;AACtB,aAAA,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;IAC5B;AACD;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@protomarkdown/parser",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "type": "module",
5
5
  "description": "Parser and renderer for proto markdown syntax",
6
6
  "main": "dist/index.js",