create-rakta-app 0.1.5 → 0.1.6

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,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["..\\..\\..\\node_modules\\.bun\\sisteransi@1.0.5\\node_modules\\sisteransi\\src\\index.js", "..\\..\\..\\node_modules\\.bun\\picocolors@1.1.1\\node_modules\\picocolors\\picocolors.js", "..\\src\\index.ts", "..\\..\\..\\node_modules\\.bun\\@clack+core@1.4.2\\node_modules\\@clack\\core\\dist\\index.mjs", "..\\..\\..\\node_modules\\.bun\\fast-string-truncated-width@3.0.3\\node_modules\\fast-string-truncated-width\\dist\\utils.js", "..\\..\\..\\node_modules\\.bun\\fast-string-truncated-width@3.0.3\\node_modules\\fast-string-truncated-width\\dist\\index.js", "..\\..\\..\\node_modules\\.bun\\fast-string-width@3.0.2\\node_modules\\fast-string-width\\dist\\index.js", "..\\..\\..\\node_modules\\.bun\\fast-wrap-ansi@0.2.2\\node_modules\\fast-wrap-ansi\\lib\\main.js", "..\\..\\..\\node_modules\\.bun\\@clack+prompts@1.6.0\\node_modules\\@clack\\prompts\\dist\\index.mjs", "..\\src\\ascii.ts", "..\\src\\fileSystem.ts", "..\\src\\generator.ts", "..\\src\\types.ts", "..\\src\\prompts.ts"],
3
+ "sources": ["..\\..\\..\\node_modules\\.bun\\sisteransi@1.0.5\\node_modules\\sisteransi\\src\\index.js", "..\\..\\..\\node_modules\\.bun\\picocolors@1.1.1\\node_modules\\picocolors\\picocolors.js", "..\\src\\index.ts", "..\\..\\..\\node_modules\\.bun\\@clack+core@1.4.2\\node_modules\\@clack\\core\\dist\\index.mjs", "..\\..\\..\\node_modules\\.bun\\fast-string-truncated-width@3.0.3\\node_modules\\fast-string-truncated-width\\dist\\utils.js", "..\\..\\..\\node_modules\\.bun\\fast-string-truncated-width@3.0.3\\node_modules\\fast-string-truncated-width\\dist\\index.js", "..\\..\\..\\node_modules\\.bun\\fast-string-width@3.0.2\\node_modules\\fast-string-width\\dist\\index.js", "..\\..\\..\\node_modules\\.bun\\fast-wrap-ansi@0.2.2\\node_modules\\fast-wrap-ansi\\lib\\main.js", "..\\..\\..\\node_modules\\.bun\\@clack+prompts@1.6.0\\node_modules\\@clack\\prompts\\dist\\index.mjs", "..\\src\\ascii.ts", "..\\src\\fileSystem.ts", "..\\src\\generator.ts", "..\\src\\types.ts", "..\\src\\welcomeComponents.ts", "..\\src\\prompts.ts"],
4
4
  "sourcesContent": [
5
5
  "'use strict';\n\nconst ESC = '\\x1B';\nconst CSI = `${ESC}[`;\nconst beep = '\\u0007';\n\nconst cursor = {\n to(x, y) {\n if (!y) return `${CSI}${x + 1}G`;\n return `${CSI}${y + 1};${x + 1}H`;\n },\n move(x, y) {\n let ret = '';\n\n if (x < 0) ret += `${CSI}${-x}D`;\n else if (x > 0) ret += `${CSI}${x}C`;\n\n if (y < 0) ret += `${CSI}${-y}A`;\n else if (y > 0) ret += `${CSI}${y}B`;\n\n return ret;\n },\n up: (count = 1) => `${CSI}${count}A`,\n down: (count = 1) => `${CSI}${count}B`,\n forward: (count = 1) => `${CSI}${count}C`,\n backward: (count = 1) => `${CSI}${count}D`,\n nextLine: (count = 1) => `${CSI}E`.repeat(count),\n prevLine: (count = 1) => `${CSI}F`.repeat(count),\n left: `${CSI}G`,\n hide: `${CSI}?25l`,\n show: `${CSI}?25h`,\n save: `${ESC}7`,\n restore: `${ESC}8`\n}\n\nconst scroll = {\n up: (count = 1) => `${CSI}S`.repeat(count),\n down: (count = 1) => `${CSI}T`.repeat(count)\n}\n\nconst erase = {\n screen: `${CSI}2J`,\n up: (count = 1) => `${CSI}1J`.repeat(count),\n down: (count = 1) => `${CSI}J`.repeat(count),\n line: `${CSI}2K`,\n lineEnd: `${CSI}K`,\n lineStart: `${CSI}1K`,\n lines(count) {\n let clear = '';\n for (let i = 0; i < count; i++)\n clear += this.line + (i < count - 1 ? cursor.up() : '');\n if (count)\n clear += cursor.left;\n return clear;\n }\n}\n\nmodule.exports = { cursor, scroll, erase, beep };\n",
6
6
  "let p = process || {}, argv = p.argv || [], env = p.env || {}\nlet isColorSupported =\n\t!(!!env.NO_COLOR || argv.includes(\"--no-color\")) &&\n\t(!!env.FORCE_COLOR || argv.includes(\"--color\") || p.platform === \"win32\" || ((p.stdout || {}).isTTY && env.TERM !== \"dumb\") || !!env.CI)\n\nlet formatter = (open, close, replace = open) =>\n\tinput => {\n\t\tlet string = \"\" + input, index = string.indexOf(close, open.length)\n\t\treturn ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close\n\t}\n\nlet replaceClose = (string, close, replace, index) => {\n\tlet result = \"\", cursor = 0\n\tdo {\n\t\tresult += string.substring(cursor, index) + replace\n\t\tcursor = index + close.length\n\t\tindex = string.indexOf(close, cursor)\n\t} while (~index)\n\treturn result + string.substring(cursor)\n}\n\nlet createColors = (enabled = isColorSupported) => {\n\tlet f = enabled ? formatter : () => String\n\treturn {\n\t\tisColorSupported: enabled,\n\t\treset: f(\"\\x1b[0m\", \"\\x1b[0m\"),\n\t\tbold: f(\"\\x1b[1m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[1m\"),\n\t\tdim: f(\"\\x1b[2m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[2m\"),\n\t\titalic: f(\"\\x1b[3m\", \"\\x1b[23m\"),\n\t\tunderline: f(\"\\x1b[4m\", \"\\x1b[24m\"),\n\t\tinverse: f(\"\\x1b[7m\", \"\\x1b[27m\"),\n\t\thidden: f(\"\\x1b[8m\", \"\\x1b[28m\"),\n\t\tstrikethrough: f(\"\\x1b[9m\", \"\\x1b[29m\"),\n\n\t\tblack: f(\"\\x1b[30m\", \"\\x1b[39m\"),\n\t\tred: f(\"\\x1b[31m\", \"\\x1b[39m\"),\n\t\tgreen: f(\"\\x1b[32m\", \"\\x1b[39m\"),\n\t\tyellow: f(\"\\x1b[33m\", \"\\x1b[39m\"),\n\t\tblue: f(\"\\x1b[34m\", \"\\x1b[39m\"),\n\t\tmagenta: f(\"\\x1b[35m\", \"\\x1b[39m\"),\n\t\tcyan: f(\"\\x1b[36m\", \"\\x1b[39m\"),\n\t\twhite: f(\"\\x1b[37m\", \"\\x1b[39m\"),\n\t\tgray: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\n\t\tbgBlack: f(\"\\x1b[40m\", \"\\x1b[49m\"),\n\t\tbgRed: f(\"\\x1b[41m\", \"\\x1b[49m\"),\n\t\tbgGreen: f(\"\\x1b[42m\", \"\\x1b[49m\"),\n\t\tbgYellow: f(\"\\x1b[43m\", \"\\x1b[49m\"),\n\t\tbgBlue: f(\"\\x1b[44m\", \"\\x1b[49m\"),\n\t\tbgMagenta: f(\"\\x1b[45m\", \"\\x1b[49m\"),\n\t\tbgCyan: f(\"\\x1b[46m\", \"\\x1b[49m\"),\n\t\tbgWhite: f(\"\\x1b[47m\", \"\\x1b[49m\"),\n\n\t\tblackBright: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\t\tredBright: f(\"\\x1b[91m\", \"\\x1b[39m\"),\n\t\tgreenBright: f(\"\\x1b[92m\", \"\\x1b[39m\"),\n\t\tyellowBright: f(\"\\x1b[93m\", \"\\x1b[39m\"),\n\t\tblueBright: f(\"\\x1b[94m\", \"\\x1b[39m\"),\n\t\tmagentaBright: f(\"\\x1b[95m\", \"\\x1b[39m\"),\n\t\tcyanBright: f(\"\\x1b[96m\", \"\\x1b[39m\"),\n\t\twhiteBright: f(\"\\x1b[97m\", \"\\x1b[39m\"),\n\n\t\tbgBlackBright: f(\"\\x1b[100m\", \"\\x1b[49m\"),\n\t\tbgRedBright: f(\"\\x1b[101m\", \"\\x1b[49m\"),\n\t\tbgGreenBright: f(\"\\x1b[102m\", \"\\x1b[49m\"),\n\t\tbgYellowBright: f(\"\\x1b[103m\", \"\\x1b[49m\"),\n\t\tbgBlueBright: f(\"\\x1b[104m\", \"\\x1b[49m\"),\n\t\tbgMagentaBright: f(\"\\x1b[105m\", \"\\x1b[49m\"),\n\t\tbgCyanBright: f(\"\\x1b[106m\", \"\\x1b[49m\"),\n\t\tbgWhiteBright: f(\"\\x1b[107m\", \"\\x1b[49m\"),\n\t}\n}\n\nmodule.exports = createColors()\nmodule.exports.createColors = createColors\n",
@@ -13,11 +13,12 @@
13
13
  "import { getColumns, getRows, AutocompletePrompt, settings, ConfirmPrompt, wrapTextWithPrefix, DatePrompt, runValidation, isCancel, MultiSelectPrompt, GroupMultiSelectPrompt, MultiLinePrompt, PasswordPrompt, block, SelectPrompt, SelectKeyPrompt, TextPrompt } from '@clack/core';\nexport { isCancel, settings, updateSettings } from '@clack/core';\nimport { styleText, stripVTControlCharacters } from 'node:util';\nimport process$1 from 'node:process';\nimport { wrapAnsi } from 'fast-wrap-ansi';\nimport l from 'fast-string-width';\nimport { existsSync, lstatSync, readdirSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\nimport { cursor, erase } from 'sisteransi';\n\nfunction isUnicodeSupported() {\n\tif (process$1.platform !== 'win32') {\n\t\treturn process$1.env.TERM !== 'linux'; // Linux console (kernel)\n\t}\n\n\treturn Boolean(process$1.env.CI)\n\t\t|| Boolean(process$1.env.WT_SESSION) // Windows Terminal\n\t\t|| Boolean(process$1.env.TERMINUS_SUBLIME) // Terminus (<0.2.27)\n\t\t|| process$1.env.ConEmuTask === '{cmd::Cmder}' // ConEmu and cmder\n\t\t|| process$1.env.TERM_PROGRAM === 'Terminus-Sublime'\n\t\t|| process$1.env.TERM_PROGRAM === 'vscode'\n\t\t|| process$1.env.TERM === 'xterm-256color'\n\t\t|| process$1.env.TERM === 'alacritty'\n\t\t|| process$1.env.TERMINAL_EMULATOR === 'JetBrains-JediTerm';\n}\n\nconst unicode = isUnicodeSupported(), isCI = () => process.env.CI === \"true\", isTTY = (o) => o.isTTY === true, unicodeOr = (o, e) => unicode ? o : e, S_STEP_ACTIVE = unicodeOr(\"\\u25C6\", \"*\"), S_STEP_CANCEL = unicodeOr(\"\\u25A0\", \"x\"), S_STEP_ERROR = unicodeOr(\"\\u25B2\", \"x\"), S_STEP_SUBMIT = unicodeOr(\"\\u25C7\", \"o\"), S_BAR_START = unicodeOr(\"\\u250C\", \"T\"), S_BAR = unicodeOr(\"\\u2502\", \"|\"), S_BAR_END = unicodeOr(\"\\u2514\", \"\\u2014\"), S_BAR_START_RIGHT = unicodeOr(\"\\u2510\", \"T\"), S_BAR_END_RIGHT = unicodeOr(\"\\u2518\", \"\\u2014\"), S_RADIO_ACTIVE = unicodeOr(\"\\u25CF\", \">\"), S_RADIO_INACTIVE = unicodeOr(\"\\u25CB\", \" \"), S_CHECKBOX_ACTIVE = unicodeOr(\"\\u25FB\", \"[\\u2022]\"), S_CHECKBOX_SELECTED = unicodeOr(\"\\u25FC\", \"[+]\"), S_CHECKBOX_INACTIVE = unicodeOr(\"\\u25FB\", \"[ ]\"), S_PASSWORD_MASK = unicodeOr(\"\\u25AA\", \"\\u2022\"), S_BAR_H = unicodeOr(\"\\u2500\", \"-\"), S_CORNER_TOP_RIGHT = unicodeOr(\"\\u256E\", \"+\"), S_CONNECT_LEFT = unicodeOr(\"\\u251C\", \"+\"), S_CORNER_BOTTOM_RIGHT = unicodeOr(\"\\u256F\", \"+\"), S_CORNER_BOTTOM_LEFT = unicodeOr(\"\\u2570\", \"+\"), S_CORNER_TOP_LEFT = unicodeOr(\"\\u256D\", \"+\"), S_INFO = unicodeOr(\"\\u25CF\", \"\\u2022\"), S_SUCCESS = unicodeOr(\"\\u25C6\", \"*\"), S_WARN = unicodeOr(\"\\u25B2\", \"!\"), S_ERROR = unicodeOr(\"\\u25A0\", \"x\"), symbol = (o) => {\n switch (o) {\n case \"initial\":\n case \"active\":\n return styleText(\"cyan\", S_STEP_ACTIVE);\n case \"cancel\":\n return styleText(\"red\", S_STEP_CANCEL);\n case \"error\":\n return styleText(\"yellow\", S_STEP_ERROR);\n case \"submit\":\n return styleText(\"green\", S_STEP_SUBMIT);\n }\n}, symbolBar = (o) => {\n switch (o) {\n case \"initial\":\n case \"active\":\n return styleText(\"cyan\", S_BAR);\n case \"cancel\":\n return styleText(\"red\", S_BAR);\n case \"error\":\n return styleText(\"yellow\", S_BAR);\n case \"submit\":\n return styleText(\"green\", S_BAR);\n }\n};\nfunction formatInstructionFooter(o, e) {\n const r = [`${e ? `${styleText(\"cyan\", S_BAR)} ` : \"\"}${o.join(\" \\u2022 \")}`];\n return e && r.push(styleText(\"cyan\", S_BAR_END)), r;\n}\n\nconst E$1 = (l, o, g, c, h, O = false) => {\n let r = o, w = 0;\n if (O)\n for (let i = c - 1; i >= g && (r -= l[i].length, w++, !(r <= h)); i--)\n ;\n else\n for (let i = g; i < c && (r -= l[i].length, w++, !(r <= h)); i++)\n ;\n return { lineCount: r, removals: w };\n};\nconst limitOptions = ({\n cursor: l,\n options: o,\n style: g,\n output: c = process.stdout,\n maxItems: h = Number.POSITIVE_INFINITY,\n columnPadding: O = 0,\n rowPadding: r = 4\n}) => {\n const i = getColumns(c) - O, I = getRows(c), C = styleText(\"dim\", \"...\"), x = Math.max(I - r, 0), m = Math.max(Math.min(h, x), 5);\n let p = 0;\n l >= m - 3 && (p = Math.max(\n Math.min(l - m + 3, o.length - m),\n 0\n ));\n let f = m < o.length && p > 0, u = m < o.length && p + m < o.length;\n const W = Math.min(\n p + m,\n o.length\n ), e = [];\n let d = 0;\n f && d++, u && d++;\n const v = p + (f ? 1 : 0), P = W - (u ? 1 : 0);\n for (let t = v; t < P; t++) {\n const n = wrapAnsi(g(o[t], t === l), i, {\n hard: true,\n trim: false\n }).split(`\n`);\n e.push(n), d += n.length;\n }\n if (d > x) {\n let t = 0, n = 0, s = d;\n const M = l - v;\n let a = x;\n const T = () => E$1(e, s, 0, M, a), L = () => E$1(\n e,\n s,\n M + 1,\n e.length,\n a,\n true\n );\n f ? ({ lineCount: s, removals: t } = T(), s > a && (u || (a -= 1), { lineCount: s, removals: n } = L())) : (u || (a -= 1), { lineCount: s, removals: n } = L(), s > a && (a -= 1, { lineCount: s, removals: t } = T())), t > 0 && (f = true, e.splice(0, t)), n > 0 && (u = true, e.splice(e.length - n, n));\n }\n const b = [];\n f && b.push(C);\n for (const t of e)\n for (const n of t)\n b.push(n);\n return u && b.push(C), b;\n};\n\nfunction P(t) {\n return t.label ?? String(t.value ?? \"\");\n}\nfunction E(t, c) {\n if (!t)\n return true;\n const n = (c.label ?? String(c.value ?? \"\")).toLowerCase(), i = (c.hint ?? \"\").toLowerCase(), l = String(c.value).toLowerCase(), o = t.toLowerCase();\n return n.includes(o) || i.includes(o) || l.includes(o);\n}\nfunction N(t, c) {\n const n = [];\n for (const i of c)\n t.includes(i.value) && n.push(i);\n return n;\n}\nconst autocomplete = (t) => new AutocompletePrompt({\n options: t.options,\n initialValue: t.initialValue ? [t.initialValue] : void 0,\n initialUserInput: t.initialUserInput,\n placeholder: t.placeholder,\n filter: t.filter ?? ((n, i) => E(n, i)),\n signal: t.signal,\n input: t.input,\n output: t.output,\n validate: t.validate,\n render() {\n const n = t.withGuide ?? settings.withGuide, i = n ? [`${styleText(\"gray\", S_BAR)}`, `${symbol(this.state)} ${t.message}`] : [`${symbol(this.state)} ${t.message}`], l = this.userInput, o = this.options, m = t.placeholder, p = l === \"\" && m !== void 0, $ = (r, s) => {\n const a = P(r), u = r.hint && r.value === this.focusedValue ? styleText(\"dim\", ` (${r.hint})`) : \"\";\n switch (s) {\n case \"active\":\n return `${styleText(\"green\", S_RADIO_ACTIVE)} ${a}${u}`;\n case \"inactive\":\n return `${styleText(\"dim\", S_RADIO_INACTIVE)} ${styleText(\"dim\", a)}`;\n case \"disabled\":\n return `${styleText(\"gray\", S_RADIO_INACTIVE)} ${styleText([\"strikethrough\", \"gray\"], a)}`;\n }\n };\n switch (this.state) {\n case \"submit\": {\n const r = N(this.selectedValues, o), s = r.length > 0 ? ` ${styleText(\"dim\", r.map(P).join(\", \"))}` : \"\", a = n ? styleText(\"gray\", S_BAR) : \"\";\n return `${i.join(`\n`)}\n${a}${s}`;\n }\n case \"cancel\": {\n const r = l ? ` ${styleText([\"strikethrough\", \"dim\"], l)}` : \"\", s = n ? styleText(\"gray\", S_BAR) : \"\";\n return `${i.join(`\n`)}\n${s}${r}`;\n }\n default: {\n const r = this.state === \"error\" ? \"yellow\" : \"cyan\", s = n ? `${styleText(r, S_BAR)} ` : \"\", a = n ? styleText(r, S_BAR_END) : \"\";\n let u = \"\";\n if (this.isNavigating || p) {\n const d = p ? m : l;\n u = d !== \"\" ? ` ${styleText(\"dim\", d)}` : \"\";\n } else\n u = ` ${this.userInputWithCursor}`;\n const V = this.filteredOptions.length !== o.length ? styleText(\n \"dim\",\n ` (${this.filteredOptions.length} match${this.filteredOptions.length === 1 ? \"\" : \"es\"})`\n ) : \"\", y = this.filteredOptions.length === 0 && l ? [`${s}${styleText(\"yellow\", \"No matches found\")}`] : [], b = this.state === \"error\" ? [`${s}${styleText(\"yellow\", this.error)}`] : [];\n n && i.push(`${s.trimEnd()}`), i.push(\n `${s}${styleText(\"dim\", \"Search:\")}${u}${V}`,\n ...y,\n ...b\n );\n const v = [\n `${styleText(\"dim\", \"\\u2191/\\u2193\")} to select`,\n `${styleText(\"dim\", \"Enter:\")} confirm`,\n `${styleText(\"dim\", \"Type:\")} to search`\n ], g = [`${s}${v.join(\" \\u2022 \")}`, a], O = this.filteredOptions.length === 0 ? [] : limitOptions({\n cursor: this.cursor,\n options: this.filteredOptions,\n columnPadding: n ? 3 : 0,\n // for `| ` when guide is shown\n rowPadding: i.length + g.length,\n style: (d, f) => $(\n d,\n d.disabled ? \"disabled\" : f ? \"active\" : \"inactive\"\n ),\n maxItems: t.maxItems,\n output: t.output\n });\n return [\n ...i,\n ...O.map((d) => `${s}${d}`),\n ...g\n ].join(`\n`);\n }\n }\n }\n}).prompt(), autocompleteMultiselect = (t) => {\n const c = (i, l, o, m) => {\n const p = o.includes(i.value), $ = i.label ?? String(i.value ?? \"\"), r = i.hint && m !== void 0 && i.value === m ? styleText(\"dim\", ` (${i.hint})`) : \"\", s = p ? styleText(\"green\", S_CHECKBOX_SELECTED) : styleText(\"dim\", S_CHECKBOX_INACTIVE);\n return i.disabled ? `${styleText(\"gray\", S_CHECKBOX_INACTIVE)} ${styleText([\"strikethrough\", \"gray\"], $)}` : l ? `${s} ${$}${r}` : `${s} ${styleText(\"dim\", $)}`;\n }, n = new AutocompletePrompt({\n options: t.options,\n multiple: true,\n placeholder: t.placeholder,\n filter: t.filter ?? ((i, l) => E(i, l)),\n validate: () => {\n if (t.required && n.selectedValues.length === 0)\n return \"Please select at least one item\";\n },\n initialValue: t.initialValues,\n signal: t.signal,\n input: t.input,\n output: t.output,\n render() {\n const i = t.withGuide ?? settings.withGuide, l = `${i ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${symbol(this.state)} ${t.message}\n`, o = this.userInput, m = t.placeholder, p = o === \"\" && m !== void 0, $ = this.isNavigating || p ? styleText(\"dim\", p ? m : o) : this.userInputWithCursor, r = this.options, s = this.filteredOptions.length !== r.length ? styleText(\n \"dim\",\n ` (${this.filteredOptions.length} match${this.filteredOptions.length === 1 ? \"\" : \"es\"})`\n ) : \"\";\n switch (this.state) {\n case \"submit\":\n return `${l}${i ? `${styleText(\"gray\", S_BAR)} ` : \"\"}${styleText(\n \"dim\",\n `${this.selectedValues.length} items selected`\n )}`;\n case \"cancel\":\n return `${l}${i ? `${styleText(\"gray\", S_BAR)} ` : \"\"}${styleText(\n [\"strikethrough\", \"dim\"],\n o\n )}`;\n default: {\n const a = this.state === \"error\" ? \"yellow\" : \"cyan\", u = i ? `${styleText(a, S_BAR)} ` : \"\", V = i ? styleText(a, S_BAR_END) : \"\", y = [\n `${styleText(\"dim\", \"\\u2191/\\u2193\")} to navigate`,\n `${styleText(\"dim\", this.isNavigating ? \"Space/Tab:\" : \"Tab:\")} select`,\n `${styleText(\"dim\", \"Enter:\")} confirm`,\n `${styleText(\"dim\", \"Type:\")} to search`\n ], b = this.filteredOptions.length === 0 && o ? [`${u}${styleText(\"yellow\", \"No matches found\")}`] : [], v = this.state === \"error\" ? [`${u}${styleText(\"yellow\", this.error)}`] : [], g = [\n ...`${l}${i ? styleText(a, S_BAR) : \"\"}`.split(`\n`),\n `${u}${styleText(\"dim\", \"Search:\")} ${$}${s}`,\n ...b,\n ...v\n ], O = [`${u}${y.join(\" \\u2022 \")}`, V], d = limitOptions({\n cursor: this.cursor,\n options: this.filteredOptions,\n style: (f, _) => c(f, _, this.selectedValues, this.focusedValue),\n maxItems: t.maxItems,\n output: t.output,\n rowPadding: g.length + O.length\n });\n return [\n ...g,\n ...d.map((f) => `${u}${f}`),\n ...O\n ].join(`\n`);\n }\n }\n }\n });\n return n.prompt();\n};\n\nconst J = [\n S_CORNER_TOP_LEFT,\n S_CORNER_TOP_RIGHT,\n S_CORNER_BOTTOM_LEFT,\n S_CORNER_BOTTOM_RIGHT\n], K = [S_BAR_START, S_BAR_START_RIGHT, S_BAR_END, S_BAR_END_RIGHT];\nfunction A$1(n, e, t, o) {\n let i = t, f = t;\n return o === \"center\" ? i = Math.floor((e - n) / 2) : o === \"right\" && (i = e - n - t), f = e - i - n, [i, f];\n}\nconst Q = (n) => n;\nconst box = (n = \"\", e = \"\", t) => {\n const o = t?.output ?? process.stdout, i = getColumns(o), R = 1 * 2, u = t?.titlePadding ?? 1, h = t?.contentPadding ?? 2, w = t?.width === void 0 || t.width === \"auto\" ? 1 : Math.min(1, t.width), m = t?.withGuide ?? settings.withGuide ? `${S_BAR} ` : \"\", b = t?.formatBorder ?? Q, a = (t?.rounded ? J : K).map(b), _ = b(S_BAR_H), B = b(S_BAR), p = l(m), x = l(e), O = i - p;\n let r = Math.floor(i * w) - p;\n if (t?.width === \"auto\") {\n const c = n.split(`\n`);\n let s = x + u * 2;\n for (const G of c) {\n const P = l(G) + h * 2;\n P > s && (s = P);\n }\n const g = s + R;\n g < r && (r = g);\n }\n r % 2 !== 0 && (r < O ? r++ : r--);\n const d = r - R, S = d - u * 2, T = x > S ? `${e.slice(0, S - 3)}...` : e, [y, W] = A$1(\n l(T),\n d,\n u,\n t?.titleAlign\n ), L = wrapAnsi(n, d - h * 2, {\n hard: true,\n trim: false\n });\n o.write(\n `${m}${a[0]}${_.repeat(y)}${T}${_.repeat(W)}${a[1]}\n`\n );\n const E = L.split(`\n`);\n for (const c of E) {\n const [s, g] = A$1(\n l(c),\n d,\n h,\n t?.contentAlign\n );\n o.write(\n `${m}${B}${\" \".repeat(s)}${c}${\" \".repeat(g)}${B}\n`\n );\n }\n o.write(`${m}${a[2]}${_.repeat(d)}${a[3]}\n`);\n};\n\nconst confirm = (i) => {\n const a = i.active ?? \"Yes\", s = i.inactive ?? \"No\";\n return new ConfirmPrompt({\n active: a,\n inactive: s,\n signal: i.signal,\n input: i.input,\n output: i.output,\n initialValue: i.initialValue ?? true,\n render() {\n const e = i.withGuide ?? settings.withGuide, u = `${symbol(this.state)} `, l = e ? `${styleText(\"gray\", S_BAR)} ` : \"\", f = wrapTextWithPrefix(\n i.output,\n i.message,\n l,\n u\n ), o = `${e ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${f}\n`, c = this.value ? a : s;\n switch (this.state) {\n case \"submit\": {\n const r = e ? `${styleText(\"gray\", S_BAR)} ` : \"\";\n return `${o}${r}${styleText(\"dim\", c)}`;\n }\n case \"cancel\": {\n const r = e ? `${styleText(\"gray\", S_BAR)} ` : \"\";\n return `${o}${r}${styleText([\"strikethrough\", \"dim\"], c)}${e ? `\n${styleText(\"gray\", S_BAR)}` : \"\"}`;\n }\n default: {\n const r = e ? `${styleText(\"cyan\", S_BAR)} ` : \"\", g = e ? styleText(\"cyan\", S_BAR_END) : \"\";\n return `${o}${r}${this.value ? `${styleText(\"green\", S_RADIO_ACTIVE)} ${a}` : `${styleText(\"dim\", S_RADIO_INACTIVE)} ${styleText(\"dim\", a)}`}${i.vertical ? e ? `\n${styleText(\"cyan\", S_BAR)} ` : `\n` : ` ${styleText(\"dim\", \"/\")} `}${this.value ? `${styleText(\"dim\", S_RADIO_INACTIVE)} ${styleText(\"dim\", s)}` : `${styleText(\"green\", S_RADIO_ACTIVE)} ${s}`}\n${g}\n`;\n }\n }\n }\n }).prompt();\n};\n\nconst date = (e) => {\n const r = e.validate;\n return new DatePrompt({\n ...e,\n validate(t) {\n if (t === void 0)\n return e.defaultValue !== void 0 ? void 0 : r ? runValidation(r, t) : settings.date.messages.required;\n const o = (i) => i.toISOString().slice(0, 10);\n if (e.minDate && o(t) < o(e.minDate))\n return settings.date.messages.afterMin(e.minDate);\n if (e.maxDate && o(t) > o(e.maxDate))\n return settings.date.messages.beforeMax(e.maxDate);\n if (r) return runValidation(r, t);\n },\n render() {\n const t = (e?.withGuide ?? settings.withGuide) !== false, i = `${`${t ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${symbol(this.state)} `}${e.message}\n`, l = this.state !== \"initial\" ? this.state : \"active\", d = b(this, l), c = this.value instanceof Date ? this.formattedValue : \"\";\n switch (this.state) {\n case \"error\": {\n const a = this.error ? ` ${styleText(\"yellow\", this.error)}` : \"\", s = t ? `${styleText(\"yellow\", S_BAR)} ` : \"\", f = t ? styleText(\"yellow\", S_BAR_END) : \"\";\n return `${i.trim()}\n${s}${d}\n${f}${a}\n`;\n }\n case \"submit\": {\n const a = c ? ` ${styleText(\"dim\", c)}` : \"\", s = t ? styleText(\"gray\", S_BAR) : \"\";\n return `${i}${s}${a}`;\n }\n case \"cancel\": {\n const a = c ? ` ${styleText([\"strikethrough\", \"dim\"], c)}` : \"\", s = t ? styleText(\"gray\", S_BAR) : \"\";\n return `${i}${s}${a}${c.trim() ? `\n${s}` : \"\"}`;\n }\n default: {\n const a = t ? `${styleText(\"cyan\", S_BAR)} ` : \"\", s = t ? styleText(\"cyan\", S_BAR_END) : \"\", f = t ? `${styleText(\"cyan\", S_BAR)} ` : \"\", g = this.inlineError ? `\n${f}${styleText(\"yellow\", this.inlineError)}` : \"\";\n return `${i}${a}${d}${g}\n${s}\n`;\n }\n }\n }\n }).prompt();\n};\nfunction b(e, r) {\n const t = e.segmentValues, o = e.segmentCursor;\n if (r === \"submit\" || r === \"cancel\")\n return e.formattedValue;\n const i = styleText(\"gray\", e.separator);\n return e.segments.map((l, d) => {\n const c = d === o.segmentIndex && ![\"submit\", \"cancel\"].includes(r), a = p[l.type];\n return x(t[l.type], { isActive: c, label: a });\n }).join(i);\n}\nfunction x(e, r) {\n const t = !e || e.replace(/_/g, \"\") === \"\";\n return r.isActive ? styleText(\"inverse\", t ? r.label : e.replace(/_/g, \" \")) : t ? styleText(\"dim\", r.label) : e.replace(/_/g, styleText(\"dim\", \" \"));\n}\nconst p = {\n year: \"yyyy\",\n month: \"mm\",\n day: \"dd\"\n};\n\nconst group = async (o, r) => {\n const t = {}, p = Object.keys(o);\n for (const e of p) {\n const i = o[e], n = await i({ results: t })?.catch((a) => {\n throw a;\n });\n if (typeof r?.onCancel == \"function\" && isCancel(n)) {\n t[e] = \"canceled\", r.onCancel({ results: t });\n continue;\n }\n t[e] = n;\n }\n return t;\n};\n\nconst MULTISELECT_INSTRUCTIONS = [\n `${styleText(\"dim\", \"\\u2191/\\u2193\")} to navigate`,\n `${styleText(\"dim\", \"Space:\")} select`,\n `${styleText(\"dim\", \"Enter:\")} confirm`\n];\nconst m = (n, o) => n.split(`\n`).map((d) => o(d)).join(`\n`);\nconst multiselect = (n) => {\n const o = (t, a) => {\n const r = t.label ?? String(t.value);\n return a === \"disabled\" ? `${styleText(\"gray\", S_CHECKBOX_INACTIVE)} ${m(r, (l) => styleText([\"strikethrough\", \"gray\"], l))}${t.hint ? ` ${styleText(\"dim\", `(${t.hint ?? \"disabled\"})`)}` : \"\"}` : a === \"active\" ? `${styleText(\"cyan\", S_CHECKBOX_ACTIVE)} ${r}${t.hint ? ` ${styleText(\"dim\", `(${t.hint})`)}` : \"\"}` : a === \"selected\" ? `${styleText(\"green\", S_CHECKBOX_SELECTED)} ${m(r, (l) => styleText(\"dim\", l))}${t.hint ? ` ${styleText(\"dim\", `(${t.hint})`)}` : \"\"}` : a === \"cancelled\" ? `${m(r, (l) => styleText([\"strikethrough\", \"dim\"], l))}` : a === \"active-selected\" ? `${styleText(\"green\", S_CHECKBOX_SELECTED)} ${r}${t.hint ? ` ${styleText(\"dim\", `(${t.hint})`)}` : \"\"}` : a === \"submitted\" ? `${m(r, (l) => styleText(\"dim\", l))}` : `${styleText(\"dim\", S_CHECKBOX_INACTIVE)} ${m(r, (l) => styleText(\"dim\", l))}`;\n }, d = n.required ?? true;\n return new MultiSelectPrompt({\n options: n.options,\n signal: n.signal,\n input: n.input,\n output: n.output,\n initialValues: n.initialValues,\n required: d,\n cursorAt: n.cursorAt,\n validate(t) {\n if (d && (t === void 0 || t.length === 0))\n return `Please select at least one option.\n${styleText(\n \"reset\",\n styleText(\n \"dim\",\n `Press ${styleText([\"gray\", \"bgWhite\", \"inverse\"], \" space \")} to select, ${styleText(\n \"gray\",\n styleText(\"bgWhite\", styleText(\"inverse\", \" enter \"))\n )} to submit`\n )\n )}`;\n },\n render() {\n const t = n.withGuide ?? settings.withGuide, a = wrapTextWithPrefix(\n n.output,\n n.message,\n t ? `${symbolBar(this.state)} ` : \"\",\n `${symbol(this.state)} `\n ), r = `${t ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${a}\n`, l = this.value ?? [], p = (i, u) => {\n if (i.disabled)\n return o(i, \"disabled\");\n const s = l.includes(i.value);\n return u && s ? o(i, \"active-selected\") : s ? o(i, \"selected\") : o(i, u ? \"active\" : \"inactive\");\n };\n switch (this.state) {\n case \"submit\": {\n const i = this.options.filter(({ value: s }) => l.includes(s)).map((s) => o(s, \"submitted\")).join(styleText(\"dim\", \", \")) || styleText(\"dim\", \"none\"), u = wrapTextWithPrefix(\n n.output,\n i,\n t ? `${styleText(\"gray\", S_BAR)} ` : \"\"\n );\n return `${r}${u}`;\n }\n case \"cancel\": {\n const i = this.options.filter(({ value: s }) => l.includes(s)).map((s) => o(s, \"cancelled\")).join(styleText(\"dim\", \", \"));\n if (i.trim() === \"\")\n return `${r}${styleText(\"gray\", S_BAR)}`;\n const u = wrapTextWithPrefix(\n n.output,\n i,\n t ? `${styleText(\"gray\", S_BAR)} ` : \"\"\n );\n return `${r}${u}${t ? `\n${styleText(\"gray\", S_BAR)}` : \"\"}`;\n }\n case \"error\": {\n const i = t ? `${styleText(\"yellow\", S_BAR)} ` : \"\", u = this.error.split(`\n`).map(\n ($, x) => x === 0 ? `${t ? `${styleText(\"yellow\", S_BAR_END)} ` : \"\"}${styleText(\"yellow\", $)}` : ` ${$}`\n ).join(`\n`), s = r.split(`\n`).length, g = u.split(`\n`).length + 1;\n return `${r}${i}${limitOptions({\n output: n.output,\n options: this.options,\n cursor: this.cursor,\n maxItems: n.maxItems,\n columnPadding: i.length,\n rowPadding: s + g,\n style: p\n }).join(`\n${i}`)}\n${u}\n`;\n }\n default: {\n const i = t ? `${styleText(\"cyan\", S_BAR)} ` : \"\", u = r.split(`\n`).length, s = formatInstructionFooter(MULTISELECT_INSTRUCTIONS, t), g = s.join(`\n`), $ = s.length + 1;\n return `${r}${i}${limitOptions({\n output: n.output,\n options: this.options,\n cursor: this.cursor,\n maxItems: n.maxItems,\n columnPadding: i.length,\n rowPadding: u + $,\n style: p\n }).join(`\n${i}`)}\n${g}\n`;\n }\n }\n }\n }).prompt();\n};\n\nconst groupMultiselect = (o) => {\n const { selectableGroups: f = true, groupSpacing: b = 0 } = o, m = (n, l, g = []) => {\n const a = n.label ?? String(n.value), t = typeof n.group == \"string\", u = t && (g[g.indexOf(n) + 1] ?? { group: true }), s = t && u && u.group === true;\n let r = \"\", c = \"\";\n t && (f ? (r = s ? `${S_BAR_END} ` : `${S_BAR} `, c = s ? \" \" : `${S_BAR} `) : r = \" \");\n let i = \"\";\n if (b > 0 && !t && (i = `\n`.repeat(b)), l === \"active\")\n return wrapTextWithPrefix(\n o.output,\n `${a}${n.hint ? ` ${styleText(\"dim\", `(${n.hint})`)}` : \"\"}`,\n `${i}${styleText(\"dim\", r)} `,\n `${i}${styleText(\"dim\", r)}${styleText(\"cyan\", S_CHECKBOX_ACTIVE)} `,\n `${i}${styleText(\"dim\", c)} `\n );\n if (l === \"group-active\")\n return wrapTextWithPrefix(\n o.output,\n a,\n `${i}${r} `,\n `${i}${r}${styleText(\"cyan\", S_CHECKBOX_ACTIVE)} `,\n `${i}${c} `,\n (d) => styleText(\"dim\", d)\n );\n if (l === \"group-active-selected\")\n return wrapTextWithPrefix(\n o.output,\n a,\n `${i}${r} `,\n `${i}${r}${styleText(\"green\", S_CHECKBOX_SELECTED)} `,\n `${i}${c} `,\n (d) => styleText(\"dim\", d)\n );\n if (l === \"selected\") {\n const d = t || f ? styleText(\"green\", S_CHECKBOX_SELECTED) : \"\";\n return wrapTextWithPrefix(\n o.output,\n `${a}${n.hint ? ` (${n.hint})` : \"\"}`,\n `${i}${styleText(\"dim\", r)} `,\n `${i}${styleText(\"dim\", r)}${d} `,\n `${i}${styleText(\"dim\", c)} `,\n (S) => styleText(\"dim\", S)\n );\n }\n if (l === \"cancelled\")\n return `${styleText([\"strikethrough\", \"dim\"], a)}`;\n if (l === \"active-selected\")\n return wrapTextWithPrefix(\n o.output,\n `${a}${n.hint ? ` ${styleText(\"dim\", `(${n.hint})`)}` : \"\"}`,\n `${i}${styleText(\"dim\", r)} `,\n `${i}${styleText(\"dim\", r)}${styleText(\"green\", S_CHECKBOX_SELECTED)} `,\n `${i}${styleText(\"dim\", c)} `\n );\n if (l === \"submitted\")\n return `${styleText(\"dim\", a)}`;\n const h = t || f ? styleText(\"dim\", S_CHECKBOX_INACTIVE) : \"\";\n return wrapTextWithPrefix(\n o.output,\n a,\n `${i}${styleText(\"dim\", r)} `,\n `${i}${styleText(\"dim\", r)}${h} `,\n `${i}${styleText(\"dim\", c)} `,\n (d) => styleText(\"dim\", d)\n );\n }, x = o.required ?? true;\n return new GroupMultiSelectPrompt({\n options: o.options,\n signal: o.signal,\n input: o.input,\n output: o.output,\n initialValues: o.initialValues,\n required: x,\n cursorAt: o.cursorAt,\n selectableGroups: f,\n validate(n) {\n if (x && (n === void 0 || n.length === 0))\n return `Please select at least one option.\n${styleText(\n \"reset\",\n styleText(\n \"dim\",\n `Press ${styleText([\"gray\", \"bgWhite\", \"inverse\"], \" space \")} to select, ${styleText(\n \"gray\",\n styleText([\"bgWhite\", \"inverse\"], \" enter \")\n )} to submit`\n )\n )}`;\n },\n render() {\n const n = o.withGuide ?? settings.withGuide, l = `${n ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${symbol(this.state)} ${o.message}\n`, g = this.value ?? [], a = (t, u) => {\n const s = this.options, r = g.includes(t.value) || t.group === true && this.isGroupSelected(`${t.value}`);\n return !u && typeof t.group == \"string\" && this.options[this.cursor].value === t.group ? m(t, r ? \"group-active-selected\" : \"group-active\", s) : u && r ? m(t, \"active-selected\", s) : r ? m(t, \"selected\", s) : m(t, u ? \"active\" : \"inactive\", s);\n };\n switch (this.state) {\n case \"submit\": {\n const t = this.options.filter(({ value: s }) => g.includes(s)).map((s) => m(s, \"submitted\")), u = t.length === 0 ? \"\" : ` ${t.join(styleText(\"dim\", \", \"))}`;\n return `${l}${n ? styleText(\"gray\", S_BAR) : \"\"}${u}`;\n }\n case \"cancel\": {\n const t = this.options.filter(({ value: u }) => g.includes(u)).map((u) => m(u, \"cancelled\")).join(styleText(\"dim\", \", \"));\n return `${l}${n ? `${styleText(\"gray\", S_BAR)} ` : \"\"}${t.trim() ? `${t}${n ? `\n${styleText(\"gray\", S_BAR)}` : \"\"}` : \"\"}`;\n }\n case \"error\": {\n const t = n ? `${styleText(\"yellow\", S_BAR)} ` : \"\", u = this.error.split(`\n`).map(\n (i, h) => h === 0 ? `${n ? `${styleText(\"yellow\", S_BAR_END)} ` : \"\"}${styleText(\"yellow\", i)}` : ` ${i}`\n ).join(`\n`), s = l.split(`\n`).length, r = u.split(`\n`).length + 1, c = limitOptions({\n output: o.output,\n options: this.options,\n cursor: this.cursor,\n maxItems: o.maxItems,\n columnPadding: t.length,\n rowPadding: s + r,\n style: a\n }).join(`\n${t}`);\n return `${l}${t}${c}\n${u}\n`;\n }\n default: {\n const t = n ? `${styleText(\"cyan\", S_BAR)} ` : \"\", u = l.split(`\n`).length, s = formatInstructionFooter(MULTISELECT_INSTRUCTIONS, n), r = s.join(`\n`), c = s.length + 1, i = limitOptions({\n output: o.output,\n options: this.options,\n cursor: this.cursor,\n maxItems: o.maxItems,\n columnPadding: t.length,\n rowPadding: u + c,\n style: a\n }).join(`\n${t}`);\n return `${l}${t}${i}\n${r}\n`;\n }\n }\n }\n }).prompt();\n};\n\nconst log = {\n message: (s = [], {\n symbol: e = styleText(\"gray\", S_BAR),\n secondarySymbol: r = styleText(\"gray\", S_BAR),\n output: m = process.stdout,\n spacing: l = 1,\n withGuide: c\n } = {}) => {\n const t = [], o = c ?? settings.withGuide, f = o ? r : \"\", O = o ? `${e} ` : \"\", u = o ? `${r} ` : \"\";\n for (let i = 0; i < l; i++)\n t.push(f);\n const g = Array.isArray(s) ? s : s.split(`\n`);\n if (g.length > 0) {\n const [i, ...y] = g;\n i.length > 0 ? t.push(`${O}${i}`) : t.push(o ? e : \"\");\n for (const p of y)\n p.length > 0 ? t.push(`${u}${p}`) : t.push(o ? r : \"\");\n }\n m.write(`${t.join(`\n`)}\n`);\n },\n info: (s, e) => {\n log.message(s, { ...e, symbol: styleText(\"blue\", S_INFO) });\n },\n success: (s, e) => {\n log.message(s, { ...e, symbol: styleText(\"green\", S_SUCCESS) });\n },\n step: (s, e) => {\n log.message(s, { ...e, symbol: styleText(\"green\", S_STEP_SUBMIT) });\n },\n warn: (s, e) => {\n log.message(s, { ...e, symbol: styleText(\"yellow\", S_WARN) });\n },\n /** alias for `log.warn()`. */\n warning: (s, e) => {\n log.warn(s, e);\n },\n error: (s, e) => {\n log.message(s, { ...e, symbol: styleText(\"red\", S_ERROR) });\n }\n};\n\nconst cancel = (o = \"\", t) => {\n const i = t?.output ?? process.stdout, e = t?.withGuide ?? settings.withGuide ? `${styleText(\"gray\", S_BAR_END)} ` : \"\";\n i.write(`${e}${styleText(\"red\", o)}\n\n`);\n}, intro = (o = \"\", t) => {\n const i = t?.output ?? process.stdout, e = t?.withGuide ?? settings.withGuide ? `${styleText(\"gray\", S_BAR_START)} ` : \"\";\n i.write(`${e}${o}\n`);\n}, outro = (o = \"\", t) => {\n const i = t?.output ?? process.stdout, e = t?.withGuide ?? settings.withGuide ? `${styleText(\"gray\", S_BAR)}\n${styleText(\"gray\", S_BAR_END)} ` : \"\";\n i.write(`${e}${o}\n\n`);\n};\n\nconst multiline = (e) => new MultiLinePrompt({\n validate: e.validate,\n placeholder: e.placeholder,\n defaultValue: e.defaultValue,\n initialValue: e.initialValue,\n showSubmit: e.showSubmit,\n output: e.output,\n signal: e.signal,\n input: e.input,\n render() {\n const i = e?.withGuide ?? settings.withGuide, o = `${`${i ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${symbol(this.state)} `}${e.message}\n`, h = e.placeholder ? styleText(\"inverse\", e.placeholder[0]) + styleText(\"dim\", e.placeholder.slice(1)) : styleText([\"inverse\", \"hidden\"], \"_\"), a = this.userInput ? this.userInputWithCursor : h, s = this.value ?? \"\", c = e.showSubmit ? `\n ${styleText(this.focused === \"submit\" ? \"cyan\" : \"dim\", \"[ submit ]\")}` : \"\";\n switch (this.state) {\n case \"error\": {\n const n = `${styleText(\"yellow\", S_BAR)} `, r = i ? wrapTextWithPrefix(e.output, a, n, void 0) : a, u = styleText(\"yellow\", S_BAR_END);\n return `${o}${r}\n${u} ${styleText(\"yellow\", this.error)}${c}\n`;\n }\n case \"submit\": {\n const n = `${styleText(\"gray\", S_BAR)} `, r = i ? wrapTextWithPrefix(\n e.output,\n s,\n n,\n void 0,\n void 0,\n (u) => styleText(\"dim\", u)\n ) : s ? styleText(\"dim\", s) : \"\";\n return `${o}${r}`;\n }\n case \"cancel\": {\n const n = `${styleText(\"gray\", S_BAR)} `, r = i ? wrapTextWithPrefix(\n e.output,\n s,\n n,\n void 0,\n void 0,\n (u) => styleText([\"strikethrough\", \"dim\"], u)\n ) : s ? styleText([\"strikethrough\", \"dim\"], s) : \"\";\n return `${o}${r}`;\n }\n default: {\n const n = i ? `${styleText(\"cyan\", S_BAR)} ` : \"\", r = i ? styleText(\"cyan\", S_BAR_END) : \"\", u = i ? wrapTextWithPrefix(e.output, a, n) : a;\n return `${o}${u}\n${r}${c}\n`;\n }\n }\n }\n}).prompt();\n\nconst W$1 = (o) => o, C = (o, e, s) => {\n const a = {\n hard: true,\n trim: false\n }, i = wrapAnsi(o, e, a).split(`\n`), c = i.reduce((n, t) => Math.max(l(t), n), 0), u = i.map(s).reduce((n, t) => Math.max(l(t), n), 0), g = e - (u - c);\n return wrapAnsi(o, g, a);\n};\nconst note = (o = \"\", e = \"\", s) => {\n const a = s?.output ?? process$1.stdout, i = s?.withGuide ?? settings.withGuide, c = s?.format ?? W$1, g = [\"\", ...C(o, getColumns(a) - 6, c).split(`\n`).map(c), \"\"], n = l(e), t = Math.max(\n g.reduce((m, F) => {\n const O = l(F);\n return O > m ? O : m;\n }, 0),\n n\n ) + 2, h = g.map(\n (m) => `${styleText(\"gray\", S_BAR)} ${m}${\" \".repeat(t - l(m))}${styleText(\"gray\", S_BAR)}`\n ).join(`\n`), T = i ? `${styleText(\"gray\", S_BAR)}\n` : \"\", l$1 = i ? S_CONNECT_LEFT : S_CORNER_BOTTOM_LEFT;\n a.write(\n `${T}${styleText(\"green\", S_STEP_SUBMIT)} ${styleText(\"reset\", e)} ${styleText(\n \"gray\",\n S_BAR_H.repeat(Math.max(t - n - 1, 1)) + S_CORNER_TOP_RIGHT\n )}\n${h}\n${styleText(\"gray\", l$1 + S_BAR_H.repeat(t + 2) + S_CORNER_BOTTOM_RIGHT)}\n`\n );\n};\n\nconst password = (r) => new PasswordPrompt({\n validate: r.validate,\n mask: r.mask ?? S_PASSWORD_MASK,\n signal: r.signal,\n input: r.input,\n output: r.output,\n render() {\n const e = r.withGuide ?? settings.withGuide, o = `${e ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${symbol(this.state)} ${r.message}\n`, c = this.userInputWithCursor, i = this.masked;\n switch (this.state) {\n case \"error\": {\n const s = e ? `${styleText(\"yellow\", S_BAR)} ` : \"\", n = e ? `${styleText(\"yellow\", S_BAR_END)} ` : \"\", l = i ?? \"\";\n return r.clearOnError && this.clear(), `${o.trim()}\n${s}${l}\n${n}${styleText(\"yellow\", this.error)}\n`;\n }\n case \"submit\": {\n const s = e ? `${styleText(\"gray\", S_BAR)} ` : \"\", n = i ? styleText(\"dim\", i) : \"\";\n return `${o}${s}${n}`;\n }\n case \"cancel\": {\n const s = e ? `${styleText(\"gray\", S_BAR)} ` : \"\", n = i ? styleText([\"strikethrough\", \"dim\"], i) : \"\";\n return `${o}${s}${n}${i && e ? `\n${styleText(\"gray\", S_BAR)}` : \"\"}`;\n }\n default: {\n const s = e ? `${styleText(\"cyan\", S_BAR)} ` : \"\", n = e ? styleText(\"cyan\", S_BAR_END) : \"\";\n return `${o}${s}${c}\n${n}\n`;\n }\n }\n }\n}).prompt();\n\nconst path = (e) => {\n const a = e.validate;\n return autocomplete({\n ...e,\n initialUserInput: e.initialValue ?? e.root ?? process.cwd(),\n maxItems: 5,\n validate(t) {\n if (!Array.isArray(t)) {\n if (!t)\n return \"Please select a path\";\n if (a)\n return runValidation(a, t);\n }\n },\n options() {\n const t = this.userInput;\n if (t === \"\")\n return [];\n try {\n let i;\n existsSync(t) ? lstatSync(t).isDirectory() && (!e.directory || t.endsWith(\"/\")) ? i = t : i = dirname(t) : i = dirname(t);\n const c = t.length > 1 && t.endsWith(\"/\") ? t.slice(0, -1) : t;\n return readdirSync(i).map((r) => {\n const n = join(i, r), m = lstatSync(n);\n return {\n name: r,\n path: n,\n isDirectory: m.isDirectory()\n };\n }).filter(\n ({ path: r, isDirectory: n }) => r.startsWith(c) && (n || !e.directory)\n ).map((r) => ({\n value: r.path\n }));\n } catch {\n return [];\n }\n }\n });\n};\n\nconst W = (l) => styleText(\"magenta\", l);\nconst spinner = ({\n indicator: l = \"dots\",\n onCancel: h,\n output: n = process.stdout,\n cancelMessage: G,\n errorMessage: O,\n frames: E = unicode ? [\"\\u25D2\", \"\\u25D0\", \"\\u25D3\", \"\\u25D1\"] : [\"\\u2022\", \"o\", \"O\", \"0\"],\n delay: F = unicode ? 80 : 120,\n signal: m,\n ...I\n} = {}) => {\n const u = isCI();\n let M, T, d = false, S = false, s = \"\", p, w = performance.now();\n const x = getColumns(n), k = I?.styleFrame ?? W, g = (e) => {\n const r = e > 1 ? O ?? settings.messages.error : G ?? settings.messages.cancel;\n S = e === 1, d && (a(r, e), S && typeof h == \"function\" && h());\n }, f = () => g(2), i = () => g(1), A = () => {\n process.on(\"uncaughtExceptionMonitor\", f), process.on(\"unhandledRejection\", f), process.on(\"SIGINT\", i), process.on(\"SIGTERM\", i), process.on(\"exit\", g), m && m.addEventListener(\"abort\", i);\n }, H = () => {\n process.removeListener(\"uncaughtExceptionMonitor\", f), process.removeListener(\"unhandledRejection\", f), process.removeListener(\"SIGINT\", i), process.removeListener(\"SIGTERM\", i), process.removeListener(\"exit\", g), m && m.removeEventListener(\"abort\", i);\n }, y = () => {\n if (p === void 0) return;\n u && n.write(`\n`);\n const r = wrapAnsi(p, x, {\n hard: true,\n trim: false\n }).split(`\n`);\n r.length > 1 && n.write(cursor.up(r.length - 1)), n.write(cursor.to(0)), n.write(erase.down());\n }, C = (e) => e.replace(/\\.+$/, \"\"), _ = (e) => {\n const r = (performance.now() - e) / 1e3, t = Math.floor(r / 60), o = Math.floor(r % 60);\n return t > 0 ? `[${t}m ${o}s]` : `[${o}s]`;\n }, N = I.withGuide ?? settings.withGuide, P = (e = \"\") => {\n d = true, M = block({ output: n }), s = C(e), w = performance.now(), N && n.write(`${styleText(\"gray\", S_BAR)}\n`);\n let r = 0, t = 0;\n A(), T = setInterval(() => {\n if (u && s === p)\n return;\n y(), p = s;\n const o = k(E[r]);\n let v;\n if (u)\n v = `${o} ${s}...`;\n else if (l === \"timer\")\n v = `${o} ${s} ${_(w)}`;\n else {\n const B = \".\".repeat(Math.floor(t)).slice(0, 3);\n v = `${o} ${s}${B}`;\n }\n const j = wrapAnsi(v, x, {\n hard: true,\n trim: false\n });\n n.write(j), r = r + 1 < E.length ? r + 1 : 0, t = t < 4 ? t + 0.125 : 0;\n }, F);\n }, a = (e = \"\", r = 0, t = false) => {\n if (!d) return;\n d = false, clearInterval(T), y();\n const o = r === 0 ? styleText(\"green\", S_STEP_SUBMIT) : r === 1 ? styleText(\"red\", S_STEP_CANCEL) : styleText(\"red\", S_STEP_ERROR);\n s = e ?? s, t || (l === \"timer\" ? n.write(`${o} ${s} ${_(w)}\n`) : n.write(`${o} ${s}\n`)), H(), M();\n };\n return {\n start: P,\n stop: (e = \"\") => a(e, 0),\n message: (e = \"\") => {\n s = C(e ?? s);\n },\n cancel: (e = \"\") => a(e, 1),\n error: (e = \"\") => a(e, 2),\n clear: () => a(\"\", 0, true),\n get isCancelled() {\n return S;\n }\n };\n};\n\nconst u = {\n light: unicodeOr(\"\\u2500\", \"-\"),\n heavy: unicodeOr(\"\\u2501\", \"=\"),\n block: unicodeOr(\"\\u2588\", \"#\")\n};\nfunction progress({\n style: o = \"heavy\",\n max: d = 100,\n size: v = 40,\n ...x\n} = {}) {\n const r = spinner(x);\n let a = 0, n = \"\";\n const c = Math.max(1, d), l = Math.max(1, v), S = (t) => {\n switch (t) {\n case \"initial\":\n case \"active\":\n return (e) => styleText(\"magenta\", e);\n case \"error\":\n case \"cancel\":\n return (e) => styleText(\"red\", e);\n case \"submit\":\n return (e) => styleText(\"green\", e);\n default:\n return (e) => styleText(\"magenta\", e);\n }\n }, p = (t, e) => {\n const m = Math.floor(a / c * l);\n return `${S(t)(u[o].repeat(m))}${styleText(\"dim\", u[o].repeat(l - m))} ${e}`;\n }, h = (t = \"\") => {\n n = t, r.start(p(\"initial\", t));\n }, g = (t = 1, e) => {\n a = Math.min(c, t + a), r.message(p(\"active\", e ?? n)), n = e ?? n;\n };\n return {\n start: h,\n stop: r.stop,\n cancel: r.cancel,\n error: r.error,\n clear: r.clear,\n advance: g,\n isCancelled: r.isCancelled,\n message: (t) => g(0, t)\n };\n}\n\nconst SELECT_INSTRUCTIONS = [\n `${styleText(\"dim\", \"\\u2191/\\u2193\")} to navigate`,\n `${styleText(\"dim\", \"Enter:\")} confirm`\n];\nconst c = (t, a) => t.includes(`\n`) ? t.split(`\n`).map((i) => a(i)).join(`\n`) : a(t);\nconst select = (t) => {\n const a = (i, m) => {\n const s = i.label ?? String(i.value);\n switch (m) {\n case \"disabled\":\n return `${styleText(\"gray\", S_RADIO_INACTIVE)} ${c(s, (n) => styleText(\"gray\", n))}${i.hint ? ` ${styleText(\"dim\", `(${i.hint ?? \"disabled\"})`)}` : \"\"}`;\n case \"selected\":\n return `${c(s, (n) => styleText(\"dim\", n))}`;\n case \"active\":\n return `${styleText(\"green\", S_RADIO_ACTIVE)} ${s}${i.hint ? ` ${styleText(\"dim\", `(${i.hint})`)}` : \"\"}`;\n case \"cancelled\":\n return `${c(s, (n) => styleText([\"strikethrough\", \"dim\"], n))}`;\n default:\n return `${styleText(\"dim\", S_RADIO_INACTIVE)} ${c(s, (n) => styleText(\"dim\", n))}`;\n }\n };\n return new SelectPrompt({\n options: t.options,\n signal: t.signal,\n input: t.input,\n output: t.output,\n initialValue: t.initialValue,\n render() {\n const i = t.withGuide ?? settings.withGuide, m = `${symbol(this.state)} `, s = `${symbolBar(this.state)} `, n = wrapTextWithPrefix(\n t.output,\n t.message,\n s,\n m\n ), u = `${i ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${n}\n`;\n switch (this.state) {\n case \"submit\": {\n const r = i ? `${styleText(\"gray\", S_BAR)} ` : \"\", o = wrapTextWithPrefix(\n t.output,\n a(this.options[this.cursor], \"selected\"),\n r\n );\n return `${u}${o}`;\n }\n case \"cancel\": {\n const r = i ? `${styleText(\"gray\", S_BAR)} ` : \"\", o = wrapTextWithPrefix(\n t.output,\n a(this.options[this.cursor], \"cancelled\"),\n r\n );\n return `${u}${o}${i ? `\n${styleText(\"gray\", S_BAR)}` : \"\"}`;\n }\n default: {\n const r = i ? `${styleText(\"cyan\", S_BAR)} ` : \"\", o = u.split(`\n`).length, $ = formatInstructionFooter(SELECT_INSTRUCTIONS, i), h = $.join(`\n`), b = $.length + 1;\n return `${u}${r}${limitOptions({\n output: t.output,\n cursor: this.cursor,\n options: this.options,\n maxItems: t.maxItems,\n columnPadding: r.length,\n rowPadding: o + b,\n style: (p, x) => a(p, p.disabled ? \"disabled\" : x ? \"active\" : \"inactive\")\n }).join(`\n${r}`)}\n${h}\n`;\n }\n }\n }\n }).prompt();\n};\n\nconst selectKey = (t) => {\n const l = (e, a = \"inactive\") => {\n const n = e.label ?? String(e.value);\n return a === \"selected\" ? `${styleText(\"dim\", n)}` : a === \"cancelled\" ? `${styleText([\"strikethrough\", \"dim\"], n)}` : a === \"active\" ? `${styleText([\"bgCyan\", \"gray\"], ` ${e.value} `)} ${n}${e.hint ? ` ${styleText(\"dim\", `(${e.hint})`)}` : \"\"}` : `${styleText([\"gray\", \"bgWhite\", \"inverse\"], ` ${e.value} `)} ${n}${e.hint ? ` ${styleText(\"dim\", `(${e.hint})`)}` : \"\"}`;\n };\n return new SelectKeyPrompt({\n options: t.options,\n signal: t.signal,\n input: t.input,\n output: t.output,\n initialValue: t.initialValue,\n caseSensitive: t.caseSensitive,\n render() {\n const e = t.withGuide ?? settings.withGuide, a = `${e ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${symbol(this.state)} ${t.message}\n`;\n switch (this.state) {\n case \"submit\": {\n const n = e ? `${styleText(\"gray\", S_BAR)} ` : \"\", s = this.options.find((u) => u.value === this.value) ?? t.options[0], c = wrapTextWithPrefix(\n t.output,\n l(s, \"selected\"),\n n\n );\n return `${a}${c}`;\n }\n case \"cancel\": {\n const n = e ? `${styleText(\"gray\", S_BAR)} ` : \"\", s = wrapTextWithPrefix(\n t.output,\n l(this.options[0], \"cancelled\"),\n n\n );\n return `${a}${s}${e ? `\n${styleText(\"gray\", S_BAR)}` : \"\"}`;\n }\n default: {\n const n = e ? `${styleText(\"cyan\", S_BAR)} ` : \"\", s = e ? styleText(\"cyan\", S_BAR_END) : \"\", c = this.options.map(\n (u, $) => wrapTextWithPrefix(\n t.output,\n l(u, $ === this.cursor ? \"active\" : \"inactive\"),\n n\n )\n ).join(`\n`);\n return `${a}${c}\n${s}\n`;\n }\n }\n }\n }).prompt();\n};\n\nconst i = `${styleText(\"gray\", S_BAR)} `;\nconst stream = {\n message: async (e, { symbol: l = styleText(\"gray\", S_BAR) } = {}) => {\n process.stdout.write(`${styleText(\"gray\", S_BAR)}\n${l} `);\n let s = 3;\n for await (let r of e) {\n r = r.replace(/\\n/g, `\n${i}`), r.includes(`\n`) && (s = 3 + stripVTControlCharacters(r.slice(r.lastIndexOf(`\n`))).length);\n const o = stripVTControlCharacters(r).length;\n s + o < process.stdout.columns ? (s += o, process.stdout.write(r)) : (process.stdout.write(`\n${i}${r.trimStart()}`), s = 3 + stripVTControlCharacters(r.trimStart()).length);\n }\n process.stdout.write(`\n`);\n },\n info: (e) => stream.message(e, { symbol: styleText(\"blue\", S_INFO) }),\n success: (e) => stream.message(e, { symbol: styleText(\"green\", S_SUCCESS) }),\n step: (e) => stream.message(e, { symbol: styleText(\"green\", S_STEP_SUBMIT) }),\n warn: (e) => stream.message(e, { symbol: styleText(\"yellow\", S_WARN) }),\n /** alias for `log.warn()`. */\n warning: (e) => stream.warn(e),\n error: (e) => stream.message(e, { symbol: styleText(\"red\", S_ERROR) })\n};\n\nconst tasks = async (o, e) => {\n for (const t of o) {\n if (t.enabled === false) continue;\n const s = spinner(e);\n s.start(t.title);\n const n = await t.task(s.message);\n s.stop(n || t.title);\n }\n};\n\nconst A = (l) => l.replace(/\\x1b\\[(?:\\d+;)*\\d*[ABCDEFGHfJKSTsu]|\\x1b\\[(s|u)/g, \"\");\nconst taskLog = (l) => {\n const r = l.output ?? process.stdout, O = getColumns(r), i = styleText(\"gray\", S_BAR), p = l.spacing ?? 1, k = 3, m = l.retainLog === true, d = !isCI() && isTTY(r);\n r.write(`${i}\n`), r.write(`${styleText(\"green\", S_STEP_SUBMIT)} ${l.title}\n`);\n for (let e = 0; e < p; e++)\n r.write(`${i}\n`);\n const n = [\n {\n value: \"\",\n full: \"\"\n }\n ];\n let v = false;\n const f = (e) => {\n if (n.length === 0)\n return;\n let s = 0;\n e && (s += p + 2);\n for (const t of n) {\n const { value: o, result: a } = t;\n let g = a?.message ?? o;\n if (g.length === 0)\n continue;\n a === void 0 && t.header !== void 0 && t.header !== \"\" && (g += `\n${t.header}`);\n const x = g.split(`\n`).reduce((b, w) => w === \"\" ? b + 1 : b + Math.ceil((w.length + k) / O), 0);\n s += x;\n }\n s > 0 && (s += 1, r.write(erase.lines(s)));\n }, h = (e, s, t) => {\n const o = t ? `${e.full}\n${e.value}` : e.value;\n e.header !== void 0 && e.header !== \"\" && log.message(\n e.header.split(`\n`).map((a) => styleText(\"bold\", a)),\n {\n output: r,\n secondarySymbol: i,\n symbol: i,\n spacing: 0\n }\n ), log.message(\n o.split(`\n`).map((a) => styleText(\"dim\", a)),\n {\n output: r,\n secondarySymbol: i,\n symbol: i,\n spacing: s ?? p\n }\n );\n }, T = () => {\n for (const e of n) {\n const { header: s, value: t, full: o } = e;\n (s === void 0 || s.length === 0) && t.length === 0 || h(e, void 0, m === true && o.length > 0);\n }\n }, L = (e, s, t) => {\n if (f(false), (t?.raw !== true || !v) && e.value !== \"\" && (e.value += `\n`), e.value += A(s), v = t?.raw === true, l.limit !== void 0) {\n const o = e.value.split(`\n`), a = o.length - l.limit;\n if (a > 0) {\n const g = o.splice(0, a);\n m && (e.full += (e.full === \"\" ? \"\" : `\n`) + g.join(`\n`));\n }\n e.value = o.join(`\n`);\n }\n d && y();\n }, y = () => {\n for (const e of n)\n e.result ? e.result.status === \"error\" ? log.error(e.result.message, { output: r, secondarySymbol: i, spacing: 0 }) : log.success(e.result.message, { output: r, secondarySymbol: i, spacing: 0 }) : e.value !== \"\" && h(e, 0);\n }, B = (e, s) => {\n f(false), e.result = s, d && y();\n };\n return {\n message(e, s) {\n L(n[0], e, s);\n },\n group(e) {\n const s = {\n header: e,\n value: \"\",\n full: \"\"\n };\n return n.push(s), {\n message(t, o) {\n L(s, t, o);\n },\n error(t) {\n B(s, {\n status: \"error\",\n message: t\n });\n },\n success(t) {\n B(s, {\n status: \"success\",\n message: t\n });\n }\n };\n },\n error(e, s) {\n f(true), log.error(e, { output: r, secondarySymbol: i, spacing: 1 }), s?.showLog !== false && T(), n.splice(1, n.length - 1), n[0].value = \"\", n[0].full = \"\";\n },\n success(e, s) {\n f(true), log.success(e, { output: r, secondarySymbol: i, spacing: 1 }), s?.showLog === true && T(), n.splice(1, n.length - 1), n[0].value = \"\", n[0].full = \"\";\n }\n };\n};\n\nconst text = (t) => new TextPrompt({\n validate: t.validate,\n placeholder: t.placeholder,\n defaultValue: t.defaultValue,\n initialValue: t.initialValue,\n output: t.output,\n signal: t.signal,\n input: t.input,\n render() {\n const i = t?.withGuide ?? settings.withGuide, s = `${`${i ? `${styleText(\"gray\", S_BAR)}\n` : \"\"}${symbol(this.state)} `}${t.message}\n`, c = t.placeholder ? styleText(\"inverse\", t.placeholder[0]) + styleText(\"dim\", t.placeholder.slice(1)) : styleText([\"inverse\", \"hidden\"], \"_\"), o = this.userInput ? this.userInputWithCursor : c, a = this.value ?? \"\";\n switch (this.state) {\n case \"error\": {\n const n = this.error ? ` ${styleText(\"yellow\", this.error)}` : \"\", r = i ? `${styleText(\"yellow\", S_BAR)} ` : \"\", d = i ? styleText(\"yellow\", S_BAR_END) : \"\";\n return `${s.trim()}\n${r}${o}\n${d}${n}\n`;\n }\n case \"submit\": {\n const n = a ? ` ${styleText(\"dim\", a)}` : \"\", r = i ? styleText(\"gray\", S_BAR) : \"\";\n return `${s}${r}${n}`;\n }\n case \"cancel\": {\n const n = a ? ` ${styleText([\"strikethrough\", \"dim\"], a)}` : \"\", r = i ? styleText(\"gray\", S_BAR) : \"\";\n return `${s}${r}${n}${a.trim() ? `\n${r}` : \"\"}`;\n }\n default: {\n const n = i ? `${styleText(\"cyan\", S_BAR)} ` : \"\", r = i ? styleText(\"cyan\", S_BAR_END) : \"\";\n return `${s}${n}${o}\n${r}\n`;\n }\n }\n }\n}).prompt();\n\nexport { MULTISELECT_INSTRUCTIONS, SELECT_INSTRUCTIONS, S_BAR, S_BAR_END, S_BAR_END_RIGHT, S_BAR_H, S_BAR_START, S_BAR_START_RIGHT, S_CHECKBOX_ACTIVE, S_CHECKBOX_INACTIVE, S_CHECKBOX_SELECTED, S_CONNECT_LEFT, S_CORNER_BOTTOM_LEFT, S_CORNER_BOTTOM_RIGHT, S_CORNER_TOP_LEFT, S_CORNER_TOP_RIGHT, S_ERROR, S_INFO, S_PASSWORD_MASK, S_RADIO_ACTIVE, S_RADIO_INACTIVE, S_STEP_ACTIVE, S_STEP_CANCEL, S_STEP_ERROR, S_STEP_SUBMIT, S_SUCCESS, S_WARN, autocomplete, autocompleteMultiselect, box, cancel, confirm, date, formatInstructionFooter, group, groupMultiselect, intro, isCI, isTTY, limitOptions, log, multiline, multiselect, note, outro, password, path, progress, select, selectKey, spinner, stream, symbol, symbolBar, taskLog, tasks, text, unicode, unicodeOr };\n",
14
14
  "const RED = \"\\x1b[31m\";\nconst BOLD = \"\\x1b[1m\";\nconst RESET = \"\\x1b[0m\";\n\nexport const BANNER = [\n\t\"\",\n\t`${BOLD}${RED} ██████╗ █████╗ ██╗ ██╗ ████████╗ █████╗ ██╗ ███████╗${RESET}`,\n\t`${BOLD}${RED} ██╔══██╗ ██╔══██╗ ██║ ██╔╝ ╚══██╔══╝ ██╔══██╗ ██║ ██╔════╝${RESET}`,\n\t`${BOLD}${RED} ██████╔╝ ███████║ █████╔╝ ██║ ███████║ ██║ ███████╗${RESET}`,\n\t`${BOLD}${RED} ██╔══██╗ ██╔══██║ ██╔═██╗ ██║ ██╔══██║ ██ ██║ ╚════██║${RESET}`,\n\t`${BOLD}${RED} ██║ ██║ ██║ ██║ ██║ ██╗ ██║ ██║ ██║ ██╗╚█████╔╝ ███████║${RESET}`,\n\t`${BOLD}${RED} ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚════╝ ╚══════╝${RESET}`,\n\t\"\",\n\t`${BOLD} ────────────────────────Rhein Sullivan──────────────────────────────────${RESET}`,\n\t`${BOLD} Rakta.js — React.js, Bun, TypeScript, Easy Router, and Fullstack Generator${RESET}`,\n\t`${BOLD} Small in size. Fierce in speed. Alive in every route.${RESET}`,\n\t`${BOLD} ────────────────────────Vyagra Nexus™──────────────────────────────────${RESET}`,\n\t\"\",\n].join(\"\\n\");\n\nexport function printBanner(): void {\n\tconsole.log(BANNER);\n}\n",
15
15
  "import { existsSync, mkdirSync, writeFileSync } from \"node:fs\";\nimport { dirname, join, resolve } from \"node:path\";\nimport type { ProjectFile } from \"./types\";\n\nexport function ensureDirectory(dirPath: string): void {\n\tif (!existsSync(dirPath)) {\n\t\tmkdirSync(dirPath, {\n\t\t\trecursive: true,\n\t\t});\n\t}\n}\n\nexport function writeFile(\n\tabsolutePath: string,\n\tfileContent: string | Uint8Array,\n): void {\n\tensureDirectory(dirname(absolutePath));\n\twriteFileSync(absolutePath, fileContent);\n}\n\nexport function writeProjectFiles(\n\tprojectRoot: string,\n\tgeneratedFiles: ProjectFile[],\n): void {\n\tfor (const projectFile of generatedFiles) {\n\t\tconst absolutePath = join(resolve(projectRoot), projectFile.path);\n\t\twriteFile(absolutePath, projectFile.content);\n\t}\n}\n\nexport function projectDirectoryExists(projectName: string): boolean {\n\treturn existsSync(resolve(process.cwd(), projectName));\n}\n",
16
- "import { readFileSync } from \"node:fs\";\nimport type {\n\tBackendFramework,\n\tCssFramework,\n\tDatabase,\n\tProjectConfig,\n\tProjectFile,\n} from \"./types\";\nimport { BACKEND_DISPLAY, CSS_DISPLAY, DATABASE_DISPLAY } from \"./types\";\n\nconst DEFAULT_METADATA_TITLE =\n\t\"Rakta.js | Small in size. Fierce in speed. Alive in every route\";\nconst FAVICON_BYTES = readFileSync(\n\tnew URL(\"../assets/favicon.ico\", import.meta.url),\n);\n\n// ─── Root files ─────────────────────────────────────────────────────────────\n\nfunction getRootFiles(projectConfig: ProjectConfig): ProjectFile[] {\n\tconst { projectName, projectMode } = projectConfig;\n\n\tconst workspaces =\n\t\tprojectMode === \"fullstack\" ? [\"frontend\", \"backend\", \"shared\"] : [];\n\n\treturn [\n\t\t{\n\t\t\tpath: \"package.json\",\n\t\t\tcontent: JSON.stringify(\n\t\t\t\t{\n\t\t\t\t\tname: projectName,\n\t\t\t\t\tversion: \"0.1.0\",\n\t\t\t\t\tprivate: true,\n\t\t\t\t\t...(projectMode === \"fullstack\" ? { workspaces } : {}),\n\t\t\t\t\tscripts:\n\t\t\t\t\t\tprojectMode === \"fullstack\"\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\"dev:frontend\": \"cd frontend && bun run dev\",\n\t\t\t\t\t\t\t\t\t\"dev:backend\": \"cd backend && bun run dev\",\n\t\t\t\t\t\t\t\t\t\"build:frontend\": \"cd frontend && bun run build\",\n\t\t\t\t\t\t\t\t\t\"build:backend\": \"cd backend && bun run build\",\n\t\t\t\t\t\t\t\t\tbuild: \"bun run build:frontend && bun run build:backend\",\n\t\t\t\t\t\t\t\t\tstart: \"cd backend && bun run start\",\n\t\t\t\t\t\t\t\t\ttypecheck:\n\t\t\t\t\t\t\t\t\t\t\"cd frontend && bun run typecheck && cd ../backend && bun run typecheck\",\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\tdev: \"rakta dev\",\n\t\t\t\t\t\t\t\t\tbuild: \"rakta build\",\n\t\t\t\t\t\t\t\t\tstart: \"rakta start\",\n\t\t\t\t\t\t\t\t\ttypecheck: \"tsc --noEmit\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\tdescription: `${projectName} — built with Rakta.js`,\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2,\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tpath: \"tsconfig.base.json\",\n\t\t\tcontent: JSON.stringify(\n\t\t\t\t{\n\t\t\t\t\tcompilerOptions: {\n\t\t\t\t\t\ttarget: \"ESNext\",\n\t\t\t\t\t\tmodule: \"ESNext\",\n\t\t\t\t\t\tmoduleResolution: \"Bundler\",\n\t\t\t\t\t\tjsx: \"react-jsx\",\n\t\t\t\t\t\tlib: [\"ESNext\", \"DOM\", \"DOM.Iterable\"],\n\t\t\t\t\t\tstrict: true,\n\t\t\t\t\t\tnoUncheckedIndexedAccess: true,\n\t\t\t\t\t\texactOptionalPropertyTypes: true,\n\t\t\t\t\t\tskipLibCheck: true,\n\t\t\t\t\t\tesModuleInterop: true,\n\t\t\t\t\t\tallowSyntheticDefaultImports: true,\n\t\t\t\t\t\tresolveJsonModule: true,\n\t\t\t\t\t\tverbatimModuleSyntax: true,\n\t\t\t\t\t\tisolatedModules: true,\n\t\t\t\t\t},\n\t\t\t\t\texclude: [\"node_modules\", \"dist\", \"**/dist/**\"],\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2,\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tpath: \"bunfig.toml\",\n\t\t\tcontent: `[install]\\nauto = \"fallback\"\\nexact = false\\nregistry = \"https://registry.npmjs.org/\"\\n\\n[run]\\nbun = true\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \".npmrc\",\n\t\t\tcontent: `registry=https://registry.npmjs.org/\\nstrict-ssl=true\\nfetch-retries=5\\nfetch-retry-mintimeout=20000\\nfetch-retry-maxtimeout=120000\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \".env.example\",\n\t\t\tcontent: `NODE_ENV=development\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \".gitignore\",\n\t\t\tcontent: `node_modules/\\ndist/\\n.env\\n.env.*\\n!.env.example\\n.DS_Store\\n*.log\\n.rakta/\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"README.md\",\n\t\t\tcontent: generateProjectReadme(projectConfig),\n\t\t},\n\t];\n}\n\n// ─── Frontend-only starter (ShrimpRun game) ─────────────────────────────────\n\nfunction getFrontendOnlyFiles(projectConfig: ProjectConfig): ProjectFile[] {\n\tconst { projectName, cssFramework } = projectConfig;\n\tconst styleFileName =\n\t\tcssFramework === \"sass\" ? \"globals.scss\" : \"globals.css\";\n\n\treturn [\n\t\t{\n\t\t\tpath: \"package.json\",\n\t\t\tcontent: JSON.stringify(\n\t\t\t\t{\n\t\t\t\t\tname: projectName,\n\t\t\t\t\tversion: \"0.1.0\",\n\t\t\t\t\tprivate: true,\n\t\t\t\t\ttype: \"module\",\n\t\t\t\t\tscripts: {\n\t\t\t\t\t\tdev: \"rakta dev\",\n\t\t\t\t\t\tbuild: \"rakta build\",\n\t\t\t\t\t\tstart: \"rakta start\",\n\t\t\t\t\t\troutes: \"rakta routes\",\n\t\t\t\t\t\ttypecheck: \"tsc --noEmit\",\n\t\t\t\t\t},\n\t\t\t\t\tdependencies: {\n\t\t\t\t\t\traktajs: \"^0.1.5\",\n\t\t\t\t\t\treact: \"^19.2.7\",\n\t\t\t\t\t\t\"react-dom\": \"^19.2.7\",\n\t\t\t\t\t\t...getCssDependencies(cssFramework),\n\t\t\t\t\t},\n\t\t\t\t\tdevDependencies: {\n\t\t\t\t\t\t\"@types/react\": \"^19.2.17\",\n\t\t\t\t\t\t\"@types/react-dom\": \"^19.2.3\",\n\t\t\t\t\t\ttypescript: \"^6.0.3\",\n\t\t\t\t\t\t...getCssDevDependencies(cssFramework),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2,\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tpath: \"tsconfig.json\",\n\t\t\tcontent: JSON.stringify(\n\t\t\t\t{\n\t\t\t\t\textends: \"./tsconfig.base.json\",\n\t\t\t\t\tcompilerOptions: {\n\t\t\t\t\t\toutDir: \"./dist\",\n\t\t\t\t\t\trootDir: \"./\",\n\t\t\t\t\t\ttypes: [\"react\", \"react-dom\"],\n\t\t\t\t\t},\n\t\t\t\t\tinclude: [\n\t\t\t\t\t\t\"rakta-env.d.ts\",\n\t\t\t\t\t\t\"app/**/*\",\n\t\t\t\t\t\t\"components/**/*\",\n\t\t\t\t\t\t\"styles/**/*\",\n\t\t\t\t\t\t\"rakta.config.ts\",\n\t\t\t\t\t],\n\t\t\t\t\texclude: [\"node_modules\", \"dist\"],\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2,\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tpath: \"rakta-env.d.ts\",\n\t\t\tcontent: generateFrontendOnlyRaktaEnv(),\n\t\t},\n\t\t{\n\t\t\tpath: \"rakta.config.ts\",\n\t\t\tcontent: `import { defineRaktaConfig } from \"raktajs\";\\n\\nexport default defineRaktaConfig({\\n appName: \"${projectName}\",\\n seo: {\\n defaultTitle: \"${DEFAULT_METADATA_TITLE}\",\\n defaultDescription: \"Built with Rakta.js — Small in size. Fierce in speed. Alive in every route.\",\\n },\\n render: {\\n defaultMode: \"csr\",\\n routes: {},\\n },\\n});\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"app/layout.tsx\",\n\t\t\tcontent: generateFrontendOnlyLayout(),\n\t\t},\n\t\t{\n\t\t\tpath: \"app/page.tsx\",\n\t\t\tcontent: generateFrontendOnlyPage(projectName),\n\t\t},\n\t\t{\n\t\t\tpath: \"app/loading.tsx\",\n\t\t\tcontent: generateFrontendOnlyLoading(),\n\t\t},\n\t\t{\n\t\t\tpath: \"app/error.tsx\",\n\t\t\tcontent: generateFrontendOnlyError(),\n\t\t},\n\t\t{\n\t\t\tpath: \"app/notFound.tsx\",\n\t\t\tcontent: generateFrontendOnlyNotFound(),\n\t\t},\n\t\t{\n\t\t\tpath: \"app/components/raktaShrimpMascot.tsx\",\n\t\t\tcontent: generateShrimpMascotComponent(),\n\t\t},\n\t\t{\n\t\t\tpath: \"app/components/shrimpRunGame.tsx\",\n\t\t\tcontent: generateShrimpRunGameComponent(),\n\t\t},\n\t\t{\n\t\t\tpath: `styles/${styleFileName}`,\n\t\t\tcontent: getFrontendOnlyCssGlobals(cssFramework),\n\t\t},\n\t\t{\n\t\t\tpath: \"public/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"public/favicon.ico\",\n\t\t\tcontent: FAVICON_BYTES,\n\t\t},\n\t];\n}\n\n// ─── Fullstack frontend files ────────────────────────────────────────────────\n\nfunction getFullstackFrontendFiles(\n\tprojectConfig: ProjectConfig,\n): ProjectFile[] {\n\tconst { projectName, cssFramework } = projectConfig;\n\tconst styleFileName =\n\t\tcssFramework === \"sass\" ? \"globals.scss\" : \"globals.css\";\n\n\treturn [\n\t\t{\n\t\t\tpath: \"frontend/package.json\",\n\t\t\tcontent: JSON.stringify(\n\t\t\t\t{\n\t\t\t\t\tname: `${projectName}-frontend`,\n\t\t\t\t\tversion: \"0.1.0\",\n\t\t\t\t\tprivate: true,\n\t\t\t\t\tscripts: {\n\t\t\t\t\t\tdev: \"rakta dev\",\n\t\t\t\t\t\tbuild: \"rakta build\",\n\t\t\t\t\t\tstart: \"rakta start\",\n\t\t\t\t\t\troutes: \"rakta routes\",\n\t\t\t\t\t\t\"imports:generate\": \"rakta imports:generate\",\n\t\t\t\t\t\t\"rpc:types\": \"rakta rpc:types\",\n\t\t\t\t\t\ttypecheck: \"tsc --noEmit\",\n\t\t\t\t\t},\n\t\t\t\t\tdependencies: {\n\t\t\t\t\t\traktajs: \"^0.1.5\",\n\t\t\t\t\t\treact: \"^19.2.7\",\n\t\t\t\t\t\t\"react-dom\": \"^19.2.7\",\n\t\t\t\t\t\t...getCssDependencies(cssFramework),\n\t\t\t\t\t},\n\t\t\t\t\tdevDependencies: {\n\t\t\t\t\t\t\"@types/react\": \"^19.2.17\",\n\t\t\t\t\t\t\"@types/react-dom\": \"^19.2.3\",\n\t\t\t\t\t\ttypescript: \"^6.0.3\",\n\t\t\t\t\t\t...getCssDevDependencies(cssFramework),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2,\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/tsconfig.json\",\n\t\t\tcontent: JSON.stringify(\n\t\t\t\t{\n\t\t\t\t\textends: \"../tsconfig.base.json\",\n\t\t\t\t\tcompilerOptions: {\n\t\t\t\t\t\toutDir: \"./dist\",\n\t\t\t\t\t\trootDir: \"./\",\n\t\t\t\t\t},\n\t\t\t\t\tinclude: [\n\t\t\t\t\t\t\"app/**/*\",\n\t\t\t\t\t\t\"components/**/*\",\n\t\t\t\t\t\t\"lib/**/*\",\n\t\t\t\t\t\t\"stores/**/*\",\n\t\t\t\t\t\t\"schemas/**/*\",\n\t\t\t\t\t\t\"rakta.config.ts\",\n\t\t\t\t\t],\n\t\t\t\t\texclude: [\"node_modules\", \"dist\"],\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2,\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/rakta.config.ts\",\n\t\t\tcontent: `import { defineRaktaConfig } from \"raktajs\";\\n\\nexport default defineRaktaConfig({\\n appName: \"${projectName}\",\\n seo: {\\n defaultTitle: \"${DEFAULT_METADATA_TITLE}\",\\n defaultDescription: \"Built with Rakta.js — Small in size. Fierce in speed. Alive in every route.\",\\n },\\n render: {\\n defaultMode: \"csr\",\\n routes: {\\n \"/\": \"ssg\",\\n \"/about\": \"ssg\",\\n \"/blog\": \"csg\",\\n \"/blog/:slug\": \"csg\",\\n \"/dashboard\": \"csr\"\\n }\\n }\\n});\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/app/layout.tsx\",\n\t\t\tcontent: `import React from \"react\";\\nimport \"../styles/${styleFileName}\";\\n\\ninterface RootLayoutProps {\\n readonly children: React.ReactNode;\\n}\\n\\nexport default function RootLayout({ children }: RootLayoutProps) {\\n return (\\n <html lang=\"en\">\\n <body>{children}</body>\\n </html>\\n );\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/app/page.tsx\",\n\t\t\tcontent: generateFullstackHomePage(projectName),\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/app/about/page.tsx\",\n\t\t\tcontent: `import React from \"react\";\\n\\nexport default function AboutPage() {\\n return (\\n <main className=\"page-shell\">\\n <section className=\"hero-card\">\\n <p className=\"eyebrow\">ABOUT</p>\\n <h1>About ${projectName}</h1>\\n <p>This project is built with Rakta.js, React, Bun, and TypeScript.</p>\\n <a href=\"/\">Back to home</a>\\n </section>\\n </main>\\n );\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/app/blog/page.tsx\",\n\t\t\tcontent: `import React from \"react\";\\n\\nconst BLOG_POSTS = [\\n { slug: \"getting-started\", title: \"Getting started with Rakta.js\" },\\n { slug: \"file-based-routing\", title: \"File-based routing explained\" },\\n { slug: \"type-safe-rpc\", title: \"Type-safe API with CarubanWire\" },\\n];\\n\\nexport default function BlogPage() {\\n return (\\n <main className=\"page-shell\">\\n <section className=\"hero-card\">\\n <p className=\"eyebrow\">BLOG</p>\\n <h1>Articles</h1>\\n <ul>\\n {BLOG_POSTS.map((post) => (\\n <li key={post.slug}>\\n <a href={\\`/blog/\\${post.slug}\\`}>{post.title}</a>\\n </li>\\n ))}\\n </ul>\\n </section>\\n </main>\\n );\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/app/blog/[slug]/page.tsx\",\n\t\t\tcontent: `import React from \"react\";\\n\\ninterface BlogPostPageProps {\\n readonly params: {\\n readonly slug?: string;\\n };\\n}\\n\\nexport default function BlogPostPage({ params }: BlogPostPageProps) {\\n const postTitle = params.slug?.replaceAll(\"-\", \" \") ?? \"Article\";\\n\\n return (\\n <main className=\"page-shell\">\\n <section className=\"hero-card\">\\n <p className=\"eyebrow\">BLOG POST</p>\\n <h1>{postTitle}</h1>\\n <p>Slug: <code>{params.slug}</code></p>\\n <a href=\"/blog\">Back to blog</a>\\n </section>\\n </main>\\n );\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/app/loading.tsx\",\n\t\t\tcontent: `import React from \"react\";\\n\\nexport default function Loading() {\\n return (\\n <main className=\"page-shell\">\\n <p>Loading...</p>\\n </main>\\n );\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/app/error.tsx\",\n\t\t\tcontent: `import React from \"react\";\\n\\ninterface ErrorPageProps {\\n readonly error: Error;\\n readonly reset: () => void;\\n}\\n\\nexport default function ErrorPage({ error, reset }: ErrorPageProps) {\\n return (\\n <main className=\"page-shell\">\\n <section className=\"hero-card\">\\n <h1>Something went wrong</h1>\\n <p>{error.message}</p>\\n <button type=\"button\" onClick={reset}>Try again</button>\\n </section>\\n </main>\\n );\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/app/not-found.tsx\",\n\t\t\tcontent: `import React from \"react\";\\n\\nexport default function NotFound() {\\n return (\\n <main className=\"page-shell\">\\n <section className=\"hero-card\">\\n <h1>404</h1>\\n <p>The page you are looking for does not exist.</p>\\n <a href=\"/\">Return home</a>\\n </section>\\n </main>\\n );\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/app/api/hello/route.ts\",\n\t\t\tcontent: `export async function GET(request: Request): Promise<Response> {\\n const requestUrl = new URL(request.url);\\n\\n return Response.json({\\n message: \"Hello from Rakta.js API\",\\n pathname: requestUrl.pathname,\\n timestamp: new Date().toISOString(),\\n });\\n}\\n\\nexport async function POST(request: Request): Promise<Response> {\\n const requestBody = await request.json() as Record<string, unknown>;\\n\\n return Response.json({\\n received: requestBody,\\n timestamp: new Date().toISOString(),\\n });\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/lib/http.ts\",\n\t\t\tcontent: `export const API_URL = process.env[\"API_URL\"] ?? \"http://localhost:4000\";\\n\\nexport async function apiGet<TData>(path: string): Promise<TData> {\\n const response = await fetch(\\`\\${API_URL}\\${path}\\`);\\n\\n if (!response.ok) {\\n throw new Error(\\`Request failed with status \\${response.status}\\`);\\n }\\n\\n return response.json() as Promise<TData>;\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/lib/routes.ts\",\n\t\t\tcontent: `export const ROUTES = {\\n home: \"/\",\\n about: \"/about\",\\n blog: \"/blog\",\\n blogPost: (slug: string) => \\`/blog/\\${slug}\\`,\\n apiHello: \"/api/hello\",\\n} as const;\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/lib/utils.ts\",\n\t\t\tcontent: `export function cn(...classNames: Array<string | undefined | null | false>): string {\\n return classNames.filter(Boolean).join(\" \");\\n}\\n\\nexport function slugify(text: string): string {\\n return text\\n .toLowerCase()\\n .replace(/[^a-z0-9]+/g, \"-\")\\n .replace(/(^-|-$)/g, \"\");\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/stores/counter.store.ts\",\n\t\t\tcontent: `import { createRaktaStore } from \"raktajs\";\\n\\ninterface CounterState {\\n readonly count: number;\\n readonly increment: () => void;\\n readonly decrement: () => void;\\n}\\n\\nexport const useCounterStore = createRaktaStore<CounterState>((setState, getState) => ({\\n count: 0,\\n increment: () => setState({ count: getState().count + 1 }),\\n decrement: () => setState({ count: getState().count - 1 }),\\n}));\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/schemas/user.schema.ts\",\n\t\t\tcontent: `import { object, string, number } from \"raktajs\";\\n\\nexport const userSchema = object({\\n name: string().min(1),\\n email: string().min(5),\\n age: number().min(0).max(120),\\n});\\n\\nexport type UserSchema = typeof userSchema;\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: `frontend/styles/${styleFileName}`,\n\t\t\tcontent: getCssGlobals(cssFramework),\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/public/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/public/favicon.ico\",\n\t\t\tcontent: FAVICON_BYTES,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/components/ui/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/components/layout/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t];\n}\n\n// ─── Backend files ───────────────────────────────────────────────────────────\n\nfunction getBackendFiles(projectConfig: ProjectConfig): ProjectFile[] {\n\treturn [\n\t\t...getBackendCommonFiles(projectConfig),\n\t\t...getBackendFrameworkFiles(projectConfig.backendFramework, projectConfig),\n\t];\n}\n\nfunction getBackendCommonFiles(projectConfig: ProjectConfig): ProjectFile[] {\n\treturn [\n\t\t{\n\t\t\tpath: \"backend/src/env.ts\",\n\t\t\tcontent: `function optionalEnv(envKey: string, fallbackValue: string): string {\\n return process.env[envKey] ?? fallbackValue;\\n}\\n\\nexport const env = {\\n port: Number(optionalEnv(\"PORT\", \"4000\")),\\n nodeEnv: optionalEnv(\"NODE_ENV\", \"development\"),\\n corsOrigin: optionalEnv(\"CORS_ORIGIN\", \"http://localhost:3000\"),\\n databaseUrl: optionalEnv(\"DATABASE_URL\", \"\"),\\n} as const;\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/config/app.config.ts\",\n\t\t\tcontent: `import { env } from \"../env\";\\n\\nexport const appConfig = {\\n name: \"${projectConfig.projectName} API\",\\n version: \"0.1.0\",\\n port: env.port,\\n nodeEnv: env.nodeEnv,\\n corsOrigin: env.corsOrigin,\\n isDev: env.nodeEnv === \"development\",\\n} as const;\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/config/database.config.ts\",\n\t\t\tcontent: getDatabaseConfig(projectConfig.database),\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/database/client.ts\",\n\t\t\tcontent: getDatabaseClient(projectConfig.database),\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/controllers/hello.controller.ts\",\n\t\t\tcontent: `export interface HelloResponse {\\n readonly success: boolean;\\n readonly message: string;\\n readonly framework: string;\\n readonly version: string;\\n readonly timestamp: string;\\n}\\n\\nexport function helloController(): HelloResponse {\\n return {\\n success: true,\\n message: \"Hello from ${projectConfig.projectName} API\",\\n framework: \"${BACKEND_DISPLAY[projectConfig.backendFramework]}\",\\n version: \"0.1.0\",\\n timestamp: new Date().toISOString(),\\n };\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/.env.example\",\n\t\t\tcontent: getDatabaseEnvExample(projectConfig.database),\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/tsconfig.json\",\n\t\t\tcontent: JSON.stringify(\n\t\t\t\t{\n\t\t\t\t\textends: \"../tsconfig.base.json\",\n\t\t\t\t\tcompilerOptions: {\n\t\t\t\t\t\toutDir: \"./dist\",\n\t\t\t\t\t\trootDir: \"./src\",\n\t\t\t\t\t\ttypes: [\"node\", \"bun\"],\n\t\t\t\t\t},\n\t\t\t\t\tinclude: [\"src/**/*\"],\n\t\t\t\t\texclude: [\"node_modules\", \"dist\"],\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2,\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/database/schema/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t];\n}\n\nfunction getBackendFrameworkFiles(\n\tselectedFramework: BackendFramework,\n\tprojectConfig: ProjectConfig,\n): ProjectFile[] {\n\tswitch (selectedFramework) {\n\t\tcase \"gaman\":\n\t\t\treturn getGamanFiles(projectConfig);\n\t\tcase \"express\":\n\t\t\treturn getExpressFiles(projectConfig);\n\t\tcase \"nest\":\n\t\t\treturn getNestFiles(projectConfig);\n\t\tcase \"adonis\":\n\t\t\treturn getAdonisFiles(projectConfig);\n\t\tdefault:\n\t\t\treturn getGamanFiles(projectConfig);\n\t}\n}\n\nfunction getGamanFiles(projectConfig: ProjectConfig): ProjectFile[] {\n\treturn [\n\t\t{\n\t\t\tpath: \"backend/package.json\",\n\t\t\tcontent: getBackendPackageJson(projectConfig, {\n\t\t\t\tdependencies: { ...getDatabaseDependencies(projectConfig.database) },\n\t\t\t\tdevDependencies: { \"@types/bun\": \"^1.3.14\" },\n\t\t\t}),\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/app.ts\",\n\t\t\tcontent: `import { appConfig } from \"./config/app.config\";\\nimport { helloController } from \"./controllers/hello.controller\";\\n\\nconst corsHeaders = {\\n \"Access-Control-Allow-Origin\": appConfig.corsOrigin,\\n \"Access-Control-Allow-Methods\": \"GET, POST, PUT, PATCH, DELETE, OPTIONS\",\\n \"Access-Control-Allow-Headers\": \"Content-Type, Authorization\",\\n};\\n\\nconst server = Bun.serve({\\n port: appConfig.port,\\n fetch(request: Request): Response {\\n const requestUrl = new URL(request.url);\\n\\n if (request.method === \"OPTIONS\") {\\n return new Response(null, { status: 204, headers: corsHeaders });\\n }\\n\\n if (requestUrl.pathname === \"/api/hello\" && request.method === \"GET\") {\\n return Response.json(helloController(), { headers: corsHeaders });\\n }\\n\\n return Response.json(\\n { success: false, error: \"Not found\" },\\n { status: 404, headers: corsHeaders }\\n );\\n },\\n});\\n\\nconsole.log(\\`[${projectConfig.projectName}] Backend running at http://localhost:\\${server.port}\\`);\\n`,\n\t\t},\n\t];\n}\n\nfunction getExpressFiles(projectConfig: ProjectConfig): ProjectFile[] {\n\treturn [\n\t\t{\n\t\t\tpath: \"backend/package.json\",\n\t\t\tcontent: getBackendPackageJson(projectConfig, {\n\t\t\t\tdependencies: {\n\t\t\t\t\texpress: \"^4.19.2\",\n\t\t\t\t\tcors: \"^2.8.5\",\n\t\t\t\t\t...getDatabaseDependencies(projectConfig.database),\n\t\t\t\t},\n\t\t\t\tdevDependencies: {\n\t\t\t\t\t\"@types/express\": \"^4.17.21\",\n\t\t\t\t\t\"@types/cors\": \"^2.8.17\",\n\t\t\t\t\t\"@types/node\": \"^26.0.1\",\n\t\t\t\t},\n\t\t\t}),\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/app.ts\",\n\t\t\tcontent: `import cors from \"cors\";\\nimport express from \"express\";\\nimport { appConfig } from \"./config/app.config\";\\nimport { helloController } from \"./controllers/hello.controller\";\\n\\nconst app = express();\\n\\napp.use(cors({ origin: appConfig.corsOrigin }));\\napp.use(express.json());\\n\\napp.get(\"/api/hello\", (_request, response) => {\\n response.json(helloController());\\n});\\n\\napp.use((_request, response) => {\\n response.status(404).json({ success: false, error: \"Not found\" });\\n});\\n\\napp.listen(appConfig.port, () => {\\n console.log(\\`[${projectConfig.projectName}] Backend running at http://localhost:\\${appConfig.port}\\`);\\n});\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/middlewares/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/routes/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/services/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t];\n}\n\nfunction getNestFiles(projectConfig: ProjectConfig): ProjectFile[] {\n\treturn [\n\t\t{\n\t\t\tpath: \"backend/package.json\",\n\t\t\tcontent: getBackendPackageJson(projectConfig, {\n\t\t\t\tdependencies: {\n\t\t\t\t\t\"@nestjs/common\": \"^10.3.0\",\n\t\t\t\t\t\"@nestjs/core\": \"^10.3.0\",\n\t\t\t\t\t\"@nestjs/platform-express\": \"^10.3.0\",\n\t\t\t\t\t\"reflect-metadata\": \"^0.2.2\",\n\t\t\t\t\t...getDatabaseDependencies(projectConfig.database),\n\t\t\t\t},\n\t\t\t\tdevDependencies: {\n\t\t\t\t\t\"@types/node\": \"^26.0.1\",\n\t\t\t\t},\n\t\t\t}),\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/nest-cli.json\",\n\t\t\tcontent: JSON.stringify(\n\t\t\t\t{\n\t\t\t\t\t$schema: \"https://json.schemastore.org/nest-cli\",\n\t\t\t\t\tcollection: \"@nestjs/schematics\",\n\t\t\t\t\tsourceRoot: \"src\",\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2,\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/app.module.ts\",\n\t\t\tcontent: `import { Module } from \"@nestjs/common\";\\nimport { AppController } from \"./app.controller\";\\n\\n@Module({\\n controllers: [AppController],\\n})\\nexport class AppModule {}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/app.controller.ts\",\n\t\t\tcontent: `import { Controller, Get } from \"@nestjs/common\";\\nimport { helloController } from \"./controllers/hello.controller\";\\n\\n@Controller(\"api\")\\nexport class AppController {\\n @Get(\"hello\")\\n hello() {\\n return helloController();\\n }\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/main.ts\",\n\t\t\tcontent: `import \"reflect-metadata\";\\nimport { NestFactory } from \"@nestjs/core\";\\nimport { AppModule } from \"./app.module\";\\nimport { appConfig } from \"./config/app.config\";\\n\\nasync function bootstrap(): Promise<void> {\\n const app = await NestFactory.create(AppModule);\\n app.enableCors({ origin: appConfig.corsOrigin });\\n await app.listen(appConfig.port);\\n console.log(\\`[${projectConfig.projectName}] Backend running at http://localhost:\\${appConfig.port}\\`);\\n}\\n\\nbootstrap().catch(console.error);\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/modules/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/common/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t];\n}\n\nfunction getAdonisFiles(projectConfig: ProjectConfig): ProjectFile[] {\n\treturn [\n\t\t{\n\t\t\tpath: \"backend/package.json\",\n\t\t\tcontent: getBackendPackageJson(projectConfig, {\n\t\t\t\tdependencies: {\n\t\t\t\t\t\"@adonisjs/core\": \"^6.9.0\",\n\t\t\t\t\t...getDatabaseDependencies(projectConfig.database),\n\t\t\t\t},\n\t\t\t\tdevDependencies: {\n\t\t\t\t\t\"@adonisjs/assembler\": \"^7.7.0\",\n\t\t\t\t\t\"@types/node\": \"^26.0.1\",\n\t\t\t\t},\n\t\t\t}),\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/app/controllers/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/app/middleware/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/app/services/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/start/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/config/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/app.ts\",\n\t\t\tcontent: `import { appConfig } from \"./config/app.config\";\\nimport { helloController } from \"./controllers/hello.controller\";\\n\\nconst corsHeaders = {\\n \"Access-Control-Allow-Origin\": appConfig.corsOrigin,\\n \"Access-Control-Allow-Methods\": \"GET, POST, PUT, PATCH, DELETE, OPTIONS\",\\n \"Access-Control-Allow-Headers\": \"Content-Type, Authorization\",\\n};\\n\\nconst server = Bun.serve({\\n port: appConfig.port,\\n fetch(request: Request): Response {\\n const requestUrl = new URL(request.url);\\n\\n if (request.method === \"OPTIONS\") {\\n return new Response(null, { status: 204, headers: corsHeaders });\\n }\\n\\n if (requestUrl.pathname === \"/api/hello\" && request.method === \"GET\") {\\n return Response.json(helloController(), { headers: corsHeaders });\\n }\\n\\n return Response.json(\\n { success: false, error: \"Not found\" },\\n { status: 404, headers: corsHeaders }\\n );\\n },\\n});\\n\\nconsole.log(\\`[${projectConfig.projectName}] Backend running at http://localhost:\\${server.port}\\`);\\n`,\n\t\t},\n\t];\n}\n\nfunction getBackendPackageJson(\n\tprojectConfig: ProjectConfig,\n\tpackageDeps: {\n\t\treadonly dependencies: Record<string, string>;\n\t\treadonly devDependencies: Record<string, string>;\n\t},\n): string {\n\treturn JSON.stringify(\n\t\t{\n\t\t\tname: `${projectConfig.projectName}-backend`,\n\t\t\tversion: \"0.1.0\",\n\t\t\tprivate: true,\n\t\t\ttype: \"module\",\n\t\t\tscripts: {\n\t\t\t\tdev: \"bun run --watch src/app.ts\",\n\t\t\t\tbuild: \"bun build src/app.ts --outfile dist/app.js --target bun\",\n\t\t\t\tstart: \"bun run dist/app.js\",\n\t\t\t\ttypecheck: \"tsc --noEmit\",\n\t\t\t},\n\t\t\tdependencies: {\n\t\t\t\t...packageDeps.dependencies,\n\t\t\t},\n\t\t\tdevDependencies: {\n\t\t\t\t\"@types/bun\": \"^1.3.14\",\n\t\t\t\ttypescript: \"^6.0.3\",\n\t\t\t\t...packageDeps.devDependencies,\n\t\t\t},\n\t\t},\n\t\tnull,\n\t\t2,\n\t);\n}\n\n// ─── Shared files (fullstack only) ──────────────────────────────────────────\n\nfunction getSharedFiles(projectConfig: ProjectConfig): ProjectFile[] {\n\treturn [\n\t\t{\n\t\t\tpath: \"shared/types/index.ts\",\n\t\t\tcontent: `export interface ApiResponse<TData = unknown> {\\n readonly success: boolean;\\n readonly data?: TData;\\n readonly error?: string;\\n readonly message?: string;\\n}\\n\\nexport interface User {\\n readonly id: string;\\n readonly name: string;\\n readonly email: string;\\n readonly createdAt: string;\\n readonly updatedAt: string;\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"shared/constants/index.ts\",\n\t\t\tcontent: `export const APP_NAME = \"${projectConfig.projectName}\";\\nexport const API_VERSION = \"v1\";\\nexport const DEFAULT_PAGE_SIZE = 20;\\n`,\n\t\t},\n\t];\n}\n\n// ─── CSS helpers ─────────────────────────────────────────────────────────────\n\nfunction getCssDependencies(\n\tcssFramework: CssFramework,\n): Record<string, string> {\n\tswitch (cssFramework) {\n\t\tcase \"tailwind\":\n\t\t\treturn { tailwindcss: \"^4.3.1\" };\n\t\tcase \"bootstrap\":\n\t\t\treturn { bootstrap: \"^5.3.3\" };\n\t\tcase \"sass\":\n\t\tcase \"none\":\n\t\t\treturn {};\n\t}\n}\n\nfunction getCssDevDependencies(\n\tcssFramework: CssFramework,\n): Record<string, string> {\n\tswitch (cssFramework) {\n\t\tcase \"sass\":\n\t\t\treturn { sass: \"^1.77.0\" };\n\t\tdefault:\n\t\t\treturn {};\n\t}\n}\n\nfunction getFrontendOnlyCssGlobals(cssFramework: CssFramework): string {\n\tconst cssImport =\n\t\tcssFramework === \"tailwind\"\n\t\t\t? `@import \"tailwindcss\";\\n\\n`\n\t\t\t: cssFramework === \"bootstrap\"\n\t\t\t\t? `@import url(\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css\");\\n\\n`\n\t\t\t\t: cssFramework === \"sass\"\n\t\t\t\t\t? `$color-primary: #dc2626;\\n$color-background: #050505;\\n$color-foreground: #f8fafc;\\n\\n`\n\t\t\t\t\t: \"\";\n\n\treturn `${cssImport}:root {\n --color-primary: #dc2626;\n --color-background: #050505;\n --color-foreground: #f8fafc;\n --color-surface: #0e111a;\n --color-border: rgba(255, 255, 255, 0.1);\n --color-muted: #94a3b8;\n color-scheme: dark;\n}\n\nhtml {\n scroll-behavior: smooth;\n}\n\nbody {\n margin: 0;\n min-width: 320px;\n min-height: 100vh;\n color: var(--color-foreground);\n background: var(--color-background);\n font-family:\n ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\",\n Roboto, sans-serif;\n -webkit-font-smoothing: antialiased;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n@keyframes shrimpLegs {\n 0% {\n transform: translateY(0);\n }\n\n 50% {\n transform: translateY(2px);\n }\n}\n\n#rakta-root {\n min-height: 100vh;\n}\n\nmain {\n width: min(1120px, calc(100% - 32px));\n min-height: 100vh;\n margin: 0 auto;\n padding: 56px 0;\n}\n\nsection {\n margin: 0 0 24px;\n border: 1px solid rgba(248, 113, 113, 0.18);\n border-radius: 18px;\n background:\n linear-gradient(135deg, rgba(220, 38, 38, 0.16), transparent 34%),\n #0e111a;\n box-shadow: 0 24px 80px rgba(127, 29, 29, 0.2);\n padding: clamp(24px, 4vw, 44px);\n}\n\np {\n margin: 0 0 12px;\n color: #cbd5e1;\n line-height: 1.7;\n}\n\nh1,\nh2 {\n margin: 0 0 12px;\n color: #ffffff;\n line-height: 1;\n}\n\nh1 {\n max-width: 760px;\n font-size: clamp(42px, 8vw, 84px);\n letter-spacing: 0;\n}\n\nh2 {\n font-size: clamp(28px, 4vw, 44px);\n}\n\nclick {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-height: 42px;\n margin: 16px 12px 0 0;\n border: 1px solid rgba(248, 113, 113, 0.42);\n border-radius: 12px;\n padding: 0 16px;\n color: #fecaca;\n font-weight: 700;\n text-decoration: none;\n cursor: pointer;\n transition:\n transform 160ms ease,\n border-color 160ms ease,\n background 160ms ease;\n}\n\nclick:hover {\n border-color: #f87171;\n background: rgba(220, 38, 38, 0.12);\n transform: translateY(-1px);\n}\n\nbutton {\n font: inherit;\n}\n\n.relative {\n position: relative;\n}\n\n.absolute {\n position: absolute;\n}\n\n.inset-0 {\n inset: 0;\n}\n\n.bottom-0 {\n bottom: 0;\n}\n\n.left-0 {\n left: 0;\n}\n\n.top-2 {\n top: 8px;\n}\n\n.right-3 {\n right: 12px;\n}\n\n.block {\n display: block;\n}\n\n.flex {\n display: flex;\n}\n\n.flex-col {\n flex-direction: column;\n}\n\n.flex-wrap {\n flex-wrap: wrap;\n}\n\n.items-center {\n align-items: center;\n}\n\n.items-start {\n align-items: flex-start;\n}\n\n.justify-center {\n justify-content: center;\n}\n\n.gap-2 {\n gap: 8px;\n}\n\n.gap-4 {\n gap: 16px;\n}\n\n.gap-8 {\n gap: 32px;\n}\n\n.w-full {\n width: 100%;\n}\n\n.max-w-full {\n max-width: 100%;\n}\n\n.overflow-hidden {\n overflow: hidden;\n}\n\n.select-none {\n user-select: none;\n}\n\n.cursor-pointer {\n cursor: pointer;\n}\n\n.text-left {\n text-align: left;\n}\n\n.text-sm {\n font-size: 14px;\n}\n\n.text-lg {\n font-size: 18px;\n}\n\n.text-xl {\n font-size: 20px;\n}\n\n.font-bold {\n font-weight: 800;\n}\n\n.font-semibold {\n font-weight: 700;\n}\n\n.font-mono {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n}\n\n.text-white {\n color: #fff;\n}\n\n.text-slate-400 {\n color: #94a3b8;\n}\n\n.text-red-600 {\n color: #dc2626;\n}\n\n.bg-red-600 {\n background: #dc2626;\n}\n\n.bg-black\\\\/75 {\n background: rgba(0, 0, 0, 0.75);\n}\n\n.pointer-events-none {\n pointer-events: none;\n}\n\n.rounded-sm {\n border-radius: 2px;\n}\n\n.rounded-lg {\n border-radius: 8px;\n}\n\n.min-h-5 {\n min-height: 20px;\n}\n\n.tabular-nums {\n font-variant-numeric: tabular-nums;\n}\n\nbutton[aria-label^=\"ShrimpRun\"] {\n border: 2px solid rgba(248, 113, 113, 0.28);\n border-radius: 16px;\n background:\n linear-gradient(180deg, rgba(15, 23, 42, 0.96), rgba(7, 10, 18, 0.98)),\n radial-gradient(circle at 18% 22%, rgba(248, 113, 113, 0.16), transparent 30%);\n box-shadow:\n inset 0 0 0 1px rgba(255, 255, 255, 0.04),\n 0 20px 60px rgba(0, 0, 0, 0.28);\n}\n\nbutton[aria-label^=\"ShrimpRun\"] > .bottom-0.left-0 {\n background: linear-gradient(90deg, #7f1d1d, #dc2626, #fecaca);\n}\n\nbutton:not([aria-label]) {\n border: 0;\n border-radius: 10px;\n background: #dc2626;\n color: #fff;\n cursor: pointer;\n font-weight: 800;\n}\n\n.shrimp-sprite {\n filter: drop-shadow(0 8px 12px rgba(0, 0, 0, 0.32));\n}\n\n.shrimp-run-obstacle {\n border-radius: 8px 8px 2px 2px;\n background:\n radial-gradient(circle at 50% 8px, #fecaca 0 4px, transparent 5px),\n linear-gradient(135deg, #fb7185 0%, #dc2626 46%, #7f1d1d 100%);\n box-shadow:\n inset -6px -8px 0 rgba(69, 10, 10, 0.32),\n 0 0 0 2px rgba(254, 202, 202, 0.18);\n}\n\n.shrimp-run-obstacle::before,\n.shrimp-run-obstacle::after {\n position: absolute;\n bottom: 8px;\n width: 10px;\n height: 22px;\n border-radius: 999px 999px 4px 4px;\n background: #ef4444;\n content: \"\";\n}\n\n.shrimp-run-obstacle::before {\n left: -7px;\n transform: rotate(-18deg);\n}\n\n.shrimp-run-obstacle::after {\n right: -7px;\n transform: rotate(18deg);\n}\n\n@media (max-width: 720px) {\n main {\n width: min(100% - 20px, 1120px);\n padding: 24px 0;\n }\n\n section {\n padding: 20px;\n }\n}\n`;\n}\n\nfunction getCssGlobals(cssFramework: CssFramework): string {\n\tconst sharedBase = `\n:root {\n --color-primary: #dc2626;\n --color-background: #050505;\n --color-foreground: #f8fafc;\n}\n\n* {\n box-sizing: border-box;\n}\n\nbody {\n margin: 0;\n color: var(--color-foreground);\n background: var(--color-background);\n font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n}\n\n.page-shell {\n width: min(100% - 2rem, 960px);\n margin: 0 auto;\n padding: 4rem 0;\n}\n\n.hero-card,\n.feature-card {\n border: 1px solid rgba(255, 255, 255, 0.1);\n background: #0e111a;\n border-radius: 24px;\n padding: 2rem;\n margin-bottom: 1.5rem;\n}\n\n.eyebrow {\n color: #dc2626;\n font-weight: 700;\n letter-spacing: 0.12em;\n font-size: 0.75rem;\n text-transform: uppercase;\n}\n\n.button-row {\n display: flex;\n gap: 0.75rem;\n flex-wrap: wrap;\n margin-top: 1rem;\n}\n\na {\n color: #dc2626;\n}\n\nbutton {\n cursor: pointer;\n}\n`;\n\n\tswitch (cssFramework) {\n\t\tcase \"tailwind\":\n\t\t\treturn `@import \"tailwindcss\";\\n${sharedBase}`;\n\t\tcase \"bootstrap\":\n\t\t\treturn `@import url(\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css\");\\n${sharedBase}`;\n\t\tcase \"sass\":\n\t\t\treturn `$color-primary: #dc2626;\\n$color-background: #050505;\\n$color-foreground: #f8fafc;\\n${sharedBase}`;\n\t\tcase \"none\":\n\t\t\treturn sharedBase;\n\t}\n}\n\n// ─── Inline template generators ──────────────────────────────────────────────\n\nfunction generateFrontendOnlyRaktaEnv(): string {\n\treturn `declare module \"*.css\";\ndeclare module \"*.scss\";\ndeclare module \"*.sass\";\n\ntype RaktaClickAttributes = Omit<\n import(\"react\").AnchorHTMLAttributes<HTMLAnchorElement>,\n \"href\"\n> & {\n readonly to: string;\n};\n\ndeclare global {\n namespace JSX {\n interface IntrinsicElements {\n click: RaktaClickAttributes;\n }\n }\n\n const useCallback: typeof import(\"react\").useCallback;\n const useEffect: typeof import(\"react\").useEffect;\n const useRef: typeof import(\"react\").useRef;\n const useState: typeof import(\"react\").useState;\n\n const ShrimpRunGame: typeof import(\"./app/components/shrimpRunGame\").default;\n const RaktaShrimpMascot: typeof import(\"./app/components/raktaShrimpMascot\").default;\n}\n\ndeclare module \"react/jsx-runtime\" {\n namespace JSX {\n interface IntrinsicElements {\n click: RaktaClickAttributes;\n }\n }\n}\n\ndeclare module \"react/jsx-dev-runtime\" {\n namespace JSX {\n interface IntrinsicElements {\n click: RaktaClickAttributes;\n }\n }\n}\n\nexport {};\n`;\n}\n\nfunction generateFrontendOnlyLayout(): string {\n\treturn `interface RootLayoutProps {\n readonly children: import(\"react\").ReactNode;\n}\n\nexport default function RootLayout({ children }: RootLayoutProps) {\n return (\n <html lang=\"en\">\n <head>\n <meta charSet=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <title>Rakta.js App</title>\n </head>\n <body className=\"min-h-screen bg-[#050505] text-slate-50 antialiased\">\n {children}\n </body>\n </html>\n );\n}\n`;\n}\n\nfunction generateFrontendOnlyPage(projectName: string): string {\n\treturn `import ShrimpRunGame from \"./components/shrimpRunGame\";\n\nexport default function HomePage() {\n return (\n <main className=\"mx-auto flex min-h-screen w-full max-w-4xl flex-col gap-6 px-4 py-16 sm:px-6 lg:px-8\">\n <section className=\"rounded-3xl border border-white/10 bg-[#0e111a] p-8 shadow-2xl shadow-red-950/20\">\n <p className=\"mb-2 text-xs font-bold uppercase tracking-[0.3em] text-red-600\">\n THE RED ROUTER FRAMEWORK\n </p>\n <h1 className=\"mb-3 text-4xl font-extrabold leading-tight text-white md:text-6xl\">\n Welcome to ${projectName}\n </h1>\n <p className=\"max-w-2xl text-base leading-7 text-slate-400\">\n Built with Rakta.js — Small in size. Fierce in speed. Alive in every route.\n </p>\n\n <div className=\"mt-6 flex flex-wrap gap-3\">\n <click\n to=\"/offline\"\n className=\"rounded-xl border border-red-500/40 px-4 py-2 text-sm font-semibold text-red-400 transition hover:border-red-400 hover:text-red-300\"\n >\n Open offline page\n </click>\n <click\n to=\"/dashboard\"\n className=\"rounded-xl bg-red-600 px-4 py-2 text-sm font-semibold text-white transition hover:bg-red-700\"\n >\n View dashboard\n </click>\n </div>\n </section>\n\n <section className=\"rounded-3xl border border-white/10 bg-[#0e111a] p-8 shadow-2xl shadow-red-950/20\">\n <p className=\"mb-2 text-xs font-bold uppercase tracking-[0.3em] text-red-600\">\n SHRIMPRUN\n </p>\n <h2 className=\"mb-1 text-2xl font-bold text-white\">Play ShrimpRun</h2>\n <p className=\"mb-6 text-sm leading-6 text-slate-400\">\n Press Space or click the game area to jump. Avoid the red obstacles!\n </p>\n\n <ShrimpRunGame />\n </section>\n </main>\n );\n}\n`;\n}\n\nfunction generateFrontendOnlyLoading(): string {\n\treturn `export default function Loading() {\n return (\n <main className=\"flex min-h-screen items-center justify-center bg-[#050505] px-4\">\n <p className=\"text-sm font-medium text-slate-400\">Loading...</p>\n </main>\n );\n}\n`;\n}\n\nfunction generateFrontendOnlyError(): string {\n\treturn `interface ErrorPageProps {\n readonly error: Error;\n readonly reset: () => void;\n}\n\nexport default function ErrorPage({ error, reset }: ErrorPageProps) {\n return (\n <main className=\"mx-auto flex min-h-screen w-full max-w-3xl items-center px-4 py-16\">\n <section className=\"w-full rounded-3xl border border-white/10 bg-[#0e111a] p-8 shadow-2xl shadow-red-950/20\">\n <p className=\"mb-2 text-xs font-bold uppercase tracking-[0.3em] text-red-600\">\n ERROR\n </p>\n <h1 className=\"mb-3 text-3xl font-extrabold text-white\">\n Something went wrong\n </h1>\n <p className=\"mb-6 wrap-break-word text-sm leading-6 text-slate-400\">\n {error.message}\n </p>\n <button\n type=\"button\"\n onClick={reset}\n className=\"rounded-lg bg-red-600 px-6 py-2 font-semibold text-white transition hover:bg-red-700 active:bg-red-800 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-red-500\"\n >\n Try again\n </button>\n </section>\n </main>\n );\n}\n`;\n}\n\nfunction generateFrontendOnlyNotFound(): string {\n\treturn `export default function NotFound() {\n return (\n <main className=\"mx-auto flex min-h-screen w-full max-w-3xl items-center px-4 py-16\">\n <section className=\"w-full rounded-3xl border border-white/10 bg-[#0e111a] p-8 shadow-2xl shadow-red-950/20\">\n <p className=\"mb-2 text-xs font-bold uppercase tracking-[0.3em] text-red-600\">\n 404\n </p>\n <h1 className=\"mb-3 text-3xl font-extrabold text-white\">\n Page not found\n </h1>\n <p className=\"mb-6 text-sm leading-6 text-slate-400\">\n The page you are looking for does not exist.\n </p>\n <click\n to=\"/\"\n className=\"font-semibold text-red-500 underline-offset-4 transition hover:text-red-400 hover:underline\"\n >\n Return home\n </click>\n </section>\n </main>\n );\n}\n`;\n}\n\nfunction generateShrimpMascotComponent(): string {\n\treturn `interface RaktaShrimpMascotProps {\n readonly isJumping: boolean;\n readonly isDead: boolean;\n readonly style?: import(\"react\").CSSProperties;\n}\n\n/**\n * RaktaShrimpMascot — The animated shrimp hero of ShrimpRun.\n * Drawn entirely with inline SVG. No external assets required.\n */\nexport default function RaktaShrimpMascot({\n isJumping,\n isDead,\n style,\n}: RaktaShrimpMascotProps) {\n const bodyColor = isDead ? \"#6b7280\" : \"#dc2626\";\n const eyeColor = isDead ? \"#374151\" : \"#fff\";\n const legAnimation =\n isJumping || isDead ? \"none\" : \"shrimpLegs 0.3s steps(2) infinite\";\n\n return (\n <svg\n viewBox=\"0 0 48 48\"\n width=\"48\"\n height=\"48\"\n style={{ display: \"block\", ...style }}\n aria-label={\n isDead ? \"dead shrimp\" : isJumping ? \"shrimp jumping\" : \"running shrimp\"\n }\n role=\"img\"\n >\n <style>{\\`\n @keyframes shrimpLegs {\n 0% { transform: translateY(0); }\n 50% { transform: translateY(2px); }\n }\n \\`}</style>\n\n {/* Body */}\n <path\n d=\"M8 30 Q10 14 24 12 Q38 10 40 22 Q42 32 32 36 Q20 40 8 30Z\"\n fill={bodyColor}\n />\n\n {/* Shell segments */}\n <path\n d=\"M12 28 Q16 20 24 18 Q30 17 34 22\"\n stroke=\"#b91c1c\"\n strokeWidth=\"1.5\"\n fill=\"none\"\n opacity={isDead ? 0.3 : 0.6}\n />\n <path\n d=\"M14 32 Q19 24 28 22 Q33 21 36 26\"\n stroke=\"#b91c1c\"\n strokeWidth=\"1.5\"\n fill=\"none\"\n opacity={isDead ? 0.3 : 0.6}\n />\n\n {/* Eye */}\n <circle cx=\"34\" cy=\"18\" r=\"4\" fill=\"#1e293b\" />\n <circle cx=\"35\" cy=\"17\" r=\"2\" fill={eyeColor} />\n\n {isDead && (\n <>\n <line\n x1=\"32\"\n y1=\"16\"\n x2=\"36\"\n y2=\"20\"\n stroke=\"#374151\"\n strokeWidth=\"1.5\"\n />\n <line\n x1=\"36\"\n y1=\"16\"\n x2=\"32\"\n y2=\"20\"\n stroke=\"#374151\"\n strokeWidth=\"1.5\"\n />\n </>\n )}\n\n {/* Antennae */}\n <line\n x1=\"34\"\n y1=\"14\"\n x2=\"40\"\n y2=\"6\"\n stroke={bodyColor}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"32\"\n y1=\"13\"\n x2=\"36\"\n y2=\"4\"\n stroke={bodyColor}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n\n {/* Tail */}\n <path\n d=\"M10 30 Q4 26 6 20\"\n stroke={bodyColor}\n strokeWidth=\"2\"\n fill=\"none\"\n strokeLinecap=\"round\"\n />\n <path\n d=\"M10 30 Q2 30 4 36\"\n stroke={bodyColor}\n strokeWidth=\"2\"\n fill=\"none\"\n strokeLinecap=\"round\"\n />\n <path\n d=\"M10 30 Q6 34 8 40\"\n stroke={bodyColor}\n strokeWidth=\"2\"\n fill=\"none\"\n strokeLinecap=\"round\"\n />\n\n {/* Legs */}\n <g\n style={{\n animation: legAnimation,\n transformOrigin: \"24px 36px\",\n }}\n >\n <line\n x1=\"18\"\n y1=\"36\"\n x2=\"14\"\n y2=\"44\"\n stroke={bodyColor}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"22\"\n y1=\"38\"\n x2=\"18\"\n y2=\"46\"\n stroke={bodyColor}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"26\"\n y1=\"38\"\n x2=\"24\"\n y2=\"46\"\n stroke={bodyColor}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"30\"\n y1=\"37\"\n x2=\"28\"\n y2=\"45\"\n stroke={bodyColor}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </g>\n </svg>\n );\n}\n`;\n}\n\nfunction generateShrimpRunGameComponent(): string {\n\treturn `import { useCallback, useEffect, useRef, useState } from \"react\";\nimport RaktaShrimpMascot from \"./raktaShrimpMascot\";\n// ─── Types ────────────────────────────────────────────────────────────────────\n\ntype GameStatus = \"idle\" | \"running\" | \"dead\";\n\ninterface ObstacleState {\n readonly id: number;\n readonly xPosition: number;\n readonly width: number;\n readonly height: number;\n}\n\ninterface ShrimpState {\n readonly yPosition: number;\n readonly velocityY: number;\n readonly isJumping: boolean;\n}\n\n// ─── Constants ────────────────────────────────────────────────────────────────\n\nconst CANVAS_WIDTH = 640;\nconst CANVAS_HEIGHT = 160;\nconst GROUND_STRIP_HEIGHT = 4;\nconst SHRIMP_START_X = 60;\nconst SHRIMP_WIDTH = 48;\nconst SHRIMP_HEIGHT = 48;\nconst GRAVITY = 1.4;\nconst JUMP_VELOCITY = -18;\nconst INITIAL_OBSTACLE_SPEED = 5;\nconst SPEED_INCREMENT_PER_SCORE = 0.003;\nconst OBSTACLE_SPAWN_INTERVAL_MS = 1600;\nconst SCORE_TICK_MS = 80;\nconst COLLISION_MARGIN = 8;\nconst MAX_CONCURRENT_OBSTACLES = 3;\nconst FRAME_SKIP_THRESHOLD_MS = 100;\n\n// ─── Physics helpers ──────────────────────────────────────────────────────────\n\nfunction getObstacleSpeed(currentScore: number): number {\n return INITIAL_OBSTACLE_SPEED + currentScore * SPEED_INCREMENT_PER_SCORE;\n}\n\nfunction checkCollision(\n shrimpYPosition: number,\n obstacle: ObstacleState,\n): boolean {\n const shrimpLeft = SHRIMP_START_X + COLLISION_MARGIN;\n const shrimpRight = SHRIMP_START_X + SHRIMP_WIDTH - COLLISION_MARGIN;\n const shrimpTop =\n CANVAS_HEIGHT -\n GROUND_STRIP_HEIGHT -\n shrimpYPosition -\n SHRIMP_HEIGHT +\n COLLISION_MARGIN;\n const shrimpBottom = CANVAS_HEIGHT - GROUND_STRIP_HEIGHT - shrimpYPosition;\n\n const obstacleLeft = obstacle.xPosition + COLLISION_MARGIN;\n const obstacleRight = obstacle.xPosition + obstacle.width - COLLISION_MARGIN;\n const obstacleTop = CANVAS_HEIGHT - GROUND_STRIP_HEIGHT - obstacle.height;\n const obstacleBottom = CANVAS_HEIGHT - GROUND_STRIP_HEIGHT;\n\n return (\n shrimpLeft < obstacleRight &&\n shrimpRight > obstacleLeft &&\n shrimpTop < obstacleBottom &&\n shrimpBottom > obstacleTop\n );\n}\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\n/**\n * ShrimpRun — Default Rakta.js interactive starter game.\n *\n * Like the Chrome offline Dino game, but the dinosaur is an animated shrimp.\n * Press Space or click the game canvas to jump. Avoid the red obstacles!\n *\n * Features:\n * - React state only — no external game library\n * - requestAnimationFrame game loop\n * - Physics: gravity + jump velocity\n * - Score that increases over time\n * - Speed ramps up as score grows\n * - Collision detection with margin\n * - High score tracked in component state\n * - Keyboard (Space) and click/tap support\n * - Accessible button game canvas\n * - SVG shrimp mascot — no external assets\n */\nexport default function ShrimpRunGame() {\n const [gameStatus, setGameStatus] = useState<GameStatus>(\"idle\");\n const [score, setScore] = useState(0);\n const [highScore, setHighScore] = useState(0);\n const [obstacles, setObstacles] = useState<ObstacleState[]>([]);\n const [shrimp, setShrimp] = useState<ShrimpState>({\n yPosition: 0,\n velocityY: 0,\n isJumping: false,\n });\n\n const gameStatusRef = useRef<GameStatus>(\"idle\");\n const scoreRef = useRef(0);\n const shrimpRef = useRef<ShrimpState>({\n yPosition: 0,\n velocityY: 0,\n isJumping: false,\n });\n const obstaclesRef = useRef<ObstacleState[]>([]);\n const obstacleIdRef = useRef(0);\n const animationFrameRef = useRef<number>(0);\n const lastObstacleTimeRef = useRef(0);\n const lastScoreTickRef = useRef(0);\n\n const jump = useCallback((): void => {\n if (gameStatusRef.current === \"dead\") {\n return;\n }\n\n if (gameStatusRef.current === \"idle\") {\n gameStatusRef.current = \"running\";\n setGameStatus(\"running\");\n }\n\n if (!shrimpRef.current.isJumping) {\n const nextShrimp: ShrimpState = {\n ...shrimpRef.current,\n velocityY: JUMP_VELOCITY,\n isJumping: true,\n };\n\n shrimpRef.current = nextShrimp;\n setShrimp(nextShrimp);\n }\n }, []);\n\n const resetGame = useCallback((): void => {\n const freshShrimp: ShrimpState = {\n yPosition: 0,\n velocityY: 0,\n isJumping: false,\n };\n\n shrimpRef.current = freshShrimp;\n obstaclesRef.current = [];\n obstacleIdRef.current = 0;\n scoreRef.current = 0;\n gameStatusRef.current = \"idle\";\n lastObstacleTimeRef.current = 0;\n lastScoreTickRef.current = 0;\n\n setShrimp(freshShrimp);\n setObstacles([]);\n setScore(0);\n setGameStatus(\"idle\");\n }, []);\n\n useEffect(() => {\n let previousTimestamp = 0;\n\n function gameTick(timestamp: number): void {\n if (gameStatusRef.current !== \"running\") {\n animationFrameRef.current = requestAnimationFrame(gameTick);\n return;\n }\n\n const deltaTime = timestamp - previousTimestamp;\n previousTimestamp = timestamp;\n\n if (deltaTime > FRAME_SKIP_THRESHOLD_MS) {\n animationFrameRef.current = requestAnimationFrame(gameTick);\n return;\n }\n\n const currentShrimp = shrimpRef.current;\n let nextVelocityY = currentShrimp.velocityY + GRAVITY;\n let nextYPosition = currentShrimp.yPosition - nextVelocityY;\n\n if (nextYPosition <= 0) {\n nextYPosition = 0;\n nextVelocityY = 0;\n }\n\n const nextShrimp: ShrimpState = {\n yPosition: nextYPosition,\n velocityY: nextVelocityY,\n isJumping: nextYPosition > 0,\n };\n\n shrimpRef.current = nextShrimp;\n setShrimp(nextShrimp);\n\n const obstacleSpeed = getObstacleSpeed(scoreRef.current);\n\n const movedObstacles = obstaclesRef.current\n .map(\n (obstacle): ObstacleState => ({\n ...obstacle,\n xPosition: obstacle.xPosition - obstacleSpeed,\n }),\n )\n .filter((obstacle) => obstacle.xPosition + obstacle.width > -10);\n\n if (\n timestamp - lastObstacleTimeRef.current > OBSTACLE_SPAWN_INTERVAL_MS &&\n movedObstacles.length < MAX_CONCURRENT_OBSTACLES\n ) {\n const obstacleHeight = 30 + Math.floor(Math.random() * 30);\n const obstacleWidth = 20 + Math.floor(Math.random() * 20);\n\n movedObstacles.push({\n id: obstacleIdRef.current,\n xPosition: CANVAS_WIDTH + 20,\n width: obstacleWidth,\n height: obstacleHeight,\n });\n\n obstacleIdRef.current += 1;\n lastObstacleTimeRef.current = timestamp;\n }\n\n obstaclesRef.current = movedObstacles;\n setObstacles([...movedObstacles]);\n\n for (const obstacle of movedObstacles) {\n if (checkCollision(nextShrimp.yPosition, obstacle)) {\n gameStatusRef.current = \"dead\";\n setGameStatus(\"dead\");\n setHighScore((previousHighScore: number) =>\n Math.max(previousHighScore, scoreRef.current),\n );\n animationFrameRef.current = requestAnimationFrame(gameTick);\n return;\n }\n }\n\n if (timestamp - lastScoreTickRef.current > SCORE_TICK_MS) {\n scoreRef.current += 1;\n setScore(scoreRef.current);\n lastScoreTickRef.current = timestamp;\n }\n\n animationFrameRef.current = requestAnimationFrame(gameTick);\n }\n\n animationFrameRef.current = requestAnimationFrame(gameTick);\n\n return () => {\n cancelAnimationFrame(animationFrameRef.current);\n };\n }, []);\n\n useEffect(() => {\n function handleKeyDown(keyboardEvent: KeyboardEvent): void {\n if (keyboardEvent.code === \"Space\") {\n keyboardEvent.preventDefault();\n jump();\n }\n }\n\n window.addEventListener(\"keydown\", handleKeyDown);\n\n return () => {\n window.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [jump]);\n\n const shrimpBottomOffset = GROUND_STRIP_HEIGHT + shrimp.yPosition;\n const isDead = gameStatus === \"dead\";\n const isIdle = gameStatus === \"idle\";\n const isRunning = gameStatus === \"running\";\n\n return (\n <div className=\"flex flex-col items-start gap-4 py-4\">\n <div className=\"flex flex-wrap items-center gap-8\">\n <span className=\"font-mono text-xl font-bold tabular-nums text-red-600\">\n Score: {score}\n </span>\n {highScore > 0 && (\n <span className=\"text-sm text-slate-400\">Best: {highScore}</span>\n )}\n </div>\n\n <button\n type=\"button\"\n className=\"relative block max-w-full cursor-pointer select-none overflow-hidden rounded-2xl border-2 border-red-600/30 bg-[#0e111a] p-0 text-left focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-red-500\"\n aria-label=\"ShrimpRun game area. Click or press Space to jump.\"\n onClick={jump}\n onKeyDown={(keyboardEvent: import(\"react\").KeyboardEvent) => {\n if (keyboardEvent.code === \"Space\") {\n keyboardEvent.preventDefault();\n jump();\n }\n }}\n style={{\n width: CANVAS_WIDTH,\n height: CANVAS_HEIGHT,\n }}\n >\n <span\n className=\"absolute bottom-0 left-0 w-full rounded-sm bg-red-600\"\n style={{\n height: GROUND_STRIP_HEIGHT,\n }}\n />\n\n <span\n className=\"absolute shrimp-sprite\"\n style={{\n left: SHRIMP_START_X,\n bottom: shrimpBottomOffset,\n width: SHRIMP_WIDTH,\n height: SHRIMP_HEIGHT,\n transform: isDead\n ? \"rotate(18deg) translateY(8px)\"\n : shrimp.isJumping\n ? \"rotate(-8deg) translateY(-4px)\"\n : \"rotate(0deg)\",\n transition: \"transform 120ms ease\",\n }}\n >\n <RaktaShrimpMascot isJumping={shrimp.isJumping} isDead={isDead} />\n </span>\n\n {obstacles.map((obstacle) => (\n <span\n key={obstacle.id}\n className=\"absolute shrimp-run-obstacle\"\n style={{\n left: obstacle.xPosition,\n bottom: GROUND_STRIP_HEIGHT,\n width: obstacle.width,\n height: obstacle.height,\n }}\n />\n ))}\n\n {isIdle && (\n <span className=\"pointer-events-none absolute inset-0 flex items-center justify-center text-sm text-slate-400\">\n Press Space or click to start\n </span>\n )}\n\n {isDead && (\n <span className=\"absolute inset-0 flex flex-col items-center justify-center gap-2 bg-black/75\">\n <span className=\"text-lg font-bold tracking-widest text-red-600\">\n GAME OVER\n </span>\n <span className=\"text-sm text-slate-400\">Score: {score}</span>\n </span>\n )}\n\n {isRunning && score > 0 && score % 50 === 0 && (\n <span className=\"absolute right-3 top-2 text-xs font-bold tracking-widest text-red-600 opacity-80\">\n {score}!\n </span>\n )}\n </button>\n\n <p className=\"min-h-5 text-sm text-slate-400\">\n {isIdle && \"🦐 Click or press Space to make the shrimp jump!\"}\n {isRunning && \"🦐 Don't hit the obstacles!\"}\n {isDead && \"The shrimp got cooked. Try again!\"}\n </p>\n\n {isDead && (\n <button\n type=\"button\"\n className=\"w-fit rounded-lg bg-red-600 px-6 py-2 font-semibold text-white transition hover:bg-red-700 active:bg-red-800 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-red-500\"\n onClick={resetGame}\n >\n Restart\n </button>\n )}\n </div>\n );\n}\n`;\n}\n\nfunction generateFullstackHomePage(projectName: string): string {\n\treturn `import React from \"react\";\n\nexport default function HomePage() {\n return (\n <main className=\"page-shell\">\n <section className=\"hero-card\">\n <p className=\"eyebrow\">THE RED ROUTER FRAMEWORK</p>\n <h1>Welcome to ${projectName}</h1>\n <p>\n Built with Rakta.js — Small in size. Fierce in speed. Alive in every route.\n </p>\n <div className=\"button-row\">\n <a href=\"/about\">About</a>\n <a href=\"/blog\">Blog</a>\n </div>\n </section>\n </main>\n );\n}\n`;\n}\n\n// ─── Database helpers ─────────────────────────────────────────────────────────\n\nfunction getDatabaseDependencies(\n\tselectedDatabase: Database,\n): Record<string, string> {\n\tswitch (selectedDatabase) {\n\t\tcase \"postgresql\":\n\t\t\treturn { postgres: \"^3.4.4\" };\n\t\tcase \"mysql\":\n\t\tcase \"mariadb\":\n\t\t\treturn { mysql2: \"^3.9.8\" };\n\t\tcase \"mongodb\":\n\t\t\treturn { mongodb: \"^6.8.0\" };\n\t\tcase \"firebase\":\n\t\t\treturn { \"firebase-admin\": \"^12.7.0\" };\n\t\tcase \"sqlite\":\n\t\t\treturn {};\n\t\tcase \"redis\":\n\t\t\treturn { ioredis: \"^5.4.1\" };\n\t\tcase \"planetscale\":\n\t\t\treturn { \"@planetscale/database\": \"^1.18.0\" };\n\t\tcase \"neon\":\n\t\t\treturn { \"@neondatabase/serverless\": \"^0.9.4\" };\n\t\tcase \"turso\":\n\t\t\treturn { \"@libsql/client\": \"^0.6.2\" };\n\t\tdefault:\n\t\t\treturn {};\n\t}\n}\n\nfunction getDatabaseConfig(selectedDatabase: Database): string {\n\tswitch (selectedDatabase) {\n\t\tcase \"sqlite\":\n\t\t\treturn `export const databaseConfig = {\\n path: process.env[\"DATABASE_PATH\"] ?? \"./database.sqlite\",\\n provider: \"sqlite\" as const,\\n} as const;\\n`;\n\t\tcase \"firebase\":\n\t\t\treturn `export const databaseConfig = {\\n projectId: process.env[\"FIREBASE_PROJECT_ID\"] ?? \"\",\\n clientEmail: process.env[\"FIREBASE_CLIENT_EMAIL\"] ?? \"\",\\n privateKey: process.env[\"FIREBASE_PRIVATE_KEY\"]?.replace(/\\\\\\\\\\\\\\\\n/g, \"\\\\\\\\n\") ?? \"\",\\n databaseUrl: process.env[\"FIREBASE_DATABASE_URL\"] ?? \"\",\\n provider: \"firebase\" as const,\\n} as const;\\n`;\n\t\tcase \"turso\":\n\t\t\treturn `export const databaseConfig = {\\n url: process.env[\"TURSO_DATABASE_URL\"] ?? \"\",\\n authToken: process.env[\"TURSO_AUTH_TOKEN\"] ?? \"\",\\n provider: \"turso\" as const,\\n} as const;\\n`;\n\t\tdefault:\n\t\t\treturn `import { env } from \"../env\";\\n\\nexport const databaseConfig = {\\n url: env.databaseUrl,\\n provider: \"${selectedDatabase}\" as const,\\n} as const;\\n`;\n\t}\n}\n\nfunction getDatabaseClient(selectedDatabase: Database): string {\n\tswitch (selectedDatabase) {\n\t\tcase \"postgresql\":\n\t\t\treturn `import postgres from \"postgres\";\\nimport { databaseConfig } from \"../config/database.config\";\\n\\nexport const sql = databaseConfig.url ? postgres(databaseConfig.url) : null;\\n`;\n\t\tcase \"mysql\":\n\t\tcase \"mariadb\":\n\t\t\treturn `import mysql from \"mysql2/promise\";\\nimport { databaseConfig } from \"../config/database.config\";\\n\\nexport const pool = databaseConfig.url\\n ? mysql.createPool({ uri: databaseConfig.url, connectionLimit: 10 })\\n : null;\\n`;\n\t\tcase \"mongodb\":\n\t\t\treturn `import { MongoClient } from \"mongodb\";\\nimport { databaseConfig } from \"../config/database.config\";\\n\\nexport const mongoClient = databaseConfig.url\\n ? new MongoClient(databaseConfig.url)\\n : null;\\n`;\n\t\tcase \"firebase\":\n\t\t\treturn `import { cert, getApps, initializeApp } from \"firebase-admin/app\";\\nimport { getFirestore } from \"firebase-admin/firestore\";\\nimport { databaseConfig } from \"../config/database.config\";\\n\\nconst credentialReady =\\n databaseConfig.projectId.length > 0 &&\\n databaseConfig.clientEmail.length > 0 &&\\n databaseConfig.privateKey.length > 0;\\n\\nexport const firebaseApp = getApps()[0] ?? initializeApp(\\n credentialReady\\n ? {\\n credential: cert({\\n projectId: databaseConfig.projectId,\\n clientEmail: databaseConfig.clientEmail,\\n privateKey: databaseConfig.privateKey,\\n }),\\n databaseURL: databaseConfig.databaseUrl || undefined,\\n }\\n : undefined\\n);\\n\\nexport const firestore = getFirestore(firebaseApp);\\n`;\n\t\tcase \"sqlite\":\n\t\t\treturn `import { Database } from \"bun:sqlite\";\\nimport { databaseConfig } from \"../config/database.config\";\\n\\nexport const db = new Database(databaseConfig.path, { create: true });\\n`;\n\t\tcase \"redis\":\n\t\t\treturn `import Redis from \"ioredis\";\\nimport { databaseConfig } from \"../config/database.config\";\\n\\nexport const redis = databaseConfig.url ? new Redis(databaseConfig.url) : null;\\n`;\n\t\tcase \"planetscale\":\n\t\t\treturn `import { connect } from \"@planetscale/database\";\\nimport { databaseConfig } from \"../config/database.config\";\\n\\nexport const connection = databaseConfig.url\\n ? connect({ url: databaseConfig.url })\\n : null;\\n`;\n\t\tcase \"neon\":\n\t\t\treturn `import { neon } from \"@neondatabase/serverless\";\\nimport { databaseConfig } from \"../config/database.config\";\\n\\nexport const sql = databaseConfig.url ? neon(databaseConfig.url) : null;\\n`;\n\t\tcase \"turso\":\n\t\t\treturn `import { createClient } from \"@libsql/client\";\\nimport { databaseConfig } from \"../config/database.config\";\\n\\nexport const db =\\n databaseConfig.url && databaseConfig.authToken\\n ? createClient({ url: databaseConfig.url, authToken: databaseConfig.authToken })\\n : null;\\n`;\n\t\tdefault:\n\t\t\treturn `export const databaseClient = null;\\n`;\n\t}\n}\n\nfunction getDatabaseEnvExample(selectedDatabase: Database): string {\n\tconst baseEnv = `NODE_ENV=development\\nPORT=4000\\nCORS_ORIGIN=http://localhost:3000\\n`;\n\n\tswitch (selectedDatabase) {\n\t\tcase \"postgresql\":\n\t\t\treturn `${baseEnv}DATABASE_URL=postgresql://user:password@localhost:5432/dbname\\n`;\n\t\tcase \"mysql\":\n\t\t\treturn `${baseEnv}DATABASE_URL=mysql://user:password@localhost:3306/dbname\\n`;\n\t\tcase \"mariadb\":\n\t\t\treturn `${baseEnv}DATABASE_URL=mysql://user:password@localhost:3306/dbname\\n`;\n\t\tcase \"mongodb\":\n\t\t\treturn `${baseEnv}DATABASE_URL=mongodb://localhost:27017/dbname\\n`;\n\t\tcase \"firebase\":\n\t\t\treturn `${baseEnv}FIREBASE_PROJECT_ID=your-project-id\\nFIREBASE_CLIENT_EMAIL=firebase-adminsdk@your-project.iam.gserviceaccount.com\\nFIREBASE_PRIVATE_KEY=\"-----BEGIN PRIVATE KEY-----\\\\nyour-key\\\\n-----END PRIVATE KEY-----\\\\n\"\\nFIREBASE_DATABASE_URL=https://your-project.firebaseio.com\\n`;\n\t\tcase \"sqlite\":\n\t\t\treturn `${baseEnv}DATABASE_PATH=./database.sqlite\\n`;\n\t\tcase \"redis\":\n\t\t\treturn `${baseEnv}DATABASE_URL=redis://localhost:6379\\n`;\n\t\tcase \"planetscale\":\n\t\t\treturn `${baseEnv}DATABASE_URL=mysql://user:password@aws.connect.psdb.cloud/dbname\\n`;\n\t\tcase \"neon\":\n\t\t\treturn `${baseEnv}DATABASE_URL=postgresql://user:password@ep-xxx.neon.tech/neondb?sslmode=require\\n`;\n\t\tcase \"turso\":\n\t\t\treturn `${baseEnv}TURSO_DATABASE_URL=libsql://your-db.turso.io\\nTURSO_AUTH_TOKEN=your-auth-token\\n`;\n\t\tdefault:\n\t\t\treturn `${baseEnv}DATABASE_URL=\\n`;\n\t}\n}\n\n// ─── README ──────────────────────────────────────────────────────────────────\n\nfunction generateProjectReadme(projectConfig: ProjectConfig): string {\n\tconst { projectName, projectMode } = projectConfig;\n\n\tif (projectMode === \"frontend-only\") {\n\t\treturn `# ${projectName}\\n\\nBuilt with Rakta.js — Small in size. Fierce in speed. Alive in every route.\\n\\n## Stack\\n\\n| Layer | Technology |\\n| --- | --- |\\n| Frontend | Rakta.js + React + TypeScript |\\n| CSS | ${CSS_DISPLAY[projectConfig.cssFramework]} |\\n| Runtime | Bun |\\n\\n## Run\\n\\n\\`\\`\\`bash\\nbun install\\nbun run dev\\n\\`\\`\\`\\n\\n## ShrimpRun\\n\\nYour starter includes ShrimpRun — an interactive game where a shrimp dodges obstacles. Press Space or click to jump!\\n`;\n\t}\n\n\treturn `# ${projectName}\\n\\nBuilt with Rakta.js — Small in size. Fierce in speed. Alive in every route.\\n\\n## Stack\\n\\n| Layer | Technology |\\n| --- | --- |\\n| Frontend | Rakta.js + React + TypeScript |\\n| CSS | ${CSS_DISPLAY[projectConfig.cssFramework]} |\\n| Backend | ${BACKEND_DISPLAY[projectConfig.backendFramework]} |\\n| Database | ${DATABASE_DISPLAY[projectConfig.database]} |\\n| Runtime | Bun |\\n\\n## Run\\n\\n\\`\\`\\`bash\\nbun install\\n\\n# Terminal 1\\nbun run dev:frontend\\n\\n# Terminal 2\\nbun run dev:backend\\n\\`\\`\\`\\n\\n## Endpoints\\n\\n- Frontend: http://localhost:3000\\n- Backend: http://localhost:4000\\n`;\n}\n\n// ─── Main export ─────────────────────────────────────────────────────────────\n\nexport function generateProjectFiles(\n\tprojectConfig: ProjectConfig,\n): ProjectFile[] {\n\tif (projectConfig.projectMode === \"frontend-only\") {\n\t\treturn [\n\t\t\t...getRootFiles(projectConfig),\n\t\t\t...getFrontendOnlyFiles(projectConfig),\n\t\t];\n\t}\n\n\treturn [\n\t\t...getRootFiles(projectConfig),\n\t\t...getFullstackFrontendFiles(projectConfig),\n\t\t...getBackendFiles(projectConfig),\n\t\t...getSharedFiles(projectConfig),\n\t];\n}\n",
17
- "export type CssFramework = \"tailwind\" | \"bootstrap\" | \"sass\" | \"none\";\n\nexport type BackendFramework = \"gaman\" | \"express\" | \"nest\" | \"adonis\";\n\nexport type Database =\n\t| \"postgresql\"\n\t| \"mysql\"\n\t| \"mongodb\"\n\t| \"firebase\"\n\t| \"sqlite\"\n\t| \"mariadb\"\n\t| \"redis\"\n\t| \"planetscale\"\n\t| \"neon\"\n\t| \"turso\";\n\nexport type RenderMode = \"csr\" | \"ssr\" | \"ssg\" | \"csg\" | \"spa\" | \"hybrid\";\n\nexport type ProjectMode = \"fullstack\" | \"frontend-only\";\n\nexport interface ProjectFile {\n\treadonly path: string;\n\treadonly content: string | Uint8Array;\n}\n\nexport interface ProjectConfig {\n\treadonly projectName: string;\n\treadonly projectMode: ProjectMode;\n\treadonly cssFramework: CssFramework;\n\treadonly renderMode: RenderMode;\n\treadonly backendFramework: BackendFramework;\n\treadonly database: Database;\n}\n\nexport const CSS_DISPLAY: Record<CssFramework, string> = {\n\ttailwind: \"Tailwind CSS\",\n\tbootstrap: \"Bootstrap\",\n\tsass: \"SASS\",\n\tnone: \"None\",\n};\n\nexport const BACKEND_DISPLAY: Record<BackendFramework, string> = {\n\tgaman: \"Gaman.js\",\n\texpress: \"Express.js\",\n\tnest: \"Nest.js\",\n\tadonis: \"Adonis.js\",\n};\n\nexport const DATABASE_DISPLAY: Record<Database, string> = {\n\tpostgresql: \"PostgreSQL\",\n\tmysql: \"MySQL\",\n\tmongodb: \"MongoDB\",\n\tfirebase: \"Firebase\",\n\tsqlite: \"SQLite\",\n\tmariadb: \"MariaDB\",\n\tredis: \"Redis\",\n\tplanetscale: \"PlanetScale\",\n\tneon: \"Neon\",\n\tturso: \"Turso\",\n};\n\nexport const RENDER_MODE_DISPLAY: Record<RenderMode, string> = {\n\tcsr: \"CSR — Client-Side Rendering\",\n\tssr: \"SSR — Server-Side Rendering\",\n\tssg: \"SSG — Static Site Generation\",\n\tcsg: \"CSG — Configurable Static Generation\",\n\tspa: \"SPA — Single Page Application\",\n\thybrid: \"Hybrid — Mixed per-route\",\n};\n\nexport const PROJECT_MODE_DISPLAY: Record<ProjectMode, string> = {\n\tfullstack: \"Fullstack app (frontend + backend + database)\",\n\t\"frontend-only\": \"Frontend only (no backend, no database)\",\n};\n",
18
- "import * as clack from \"@clack/prompts\";\nimport type {\n\tBackendFramework,\n\tCssFramework,\n\tDatabase,\n\tProjectConfig,\n\tProjectMode,\n\tRenderMode,\n} from \"./types\";\nimport {\n\tBACKEND_DISPLAY,\n\tCSS_DISPLAY,\n\tDATABASE_DISPLAY,\n\tPROJECT_MODE_DISPLAY,\n\tRENDER_MODE_DISPLAY,\n} from \"./types\";\n\nfunction getPromptValue<TValue>(promptResult: TValue | symbol): TValue {\n\tif (clack.isCancel(promptResult)) {\n\t\tclack.cancel(\"Setup cancelled.\");\n\t\tprocess.exit(0);\n\t}\n\n\treturn promptResult;\n}\n\nexport async function promptProjectName(fallbackName: string): Promise<string> {\n\tconst promptResult = await clack.text({\n\t\tmessage: \"Project name:\",\n\t\tplaceholder: fallbackName,\n\t\tdefaultValue: fallbackName,\n\t\tvalidate(inputValue) {\n\t\t\tconst trimmedInput = (inputValue ?? \"\").trim();\n\n\t\t\tif (trimmedInput.length === 0) {\n\t\t\t\treturn \"Project name cannot be empty.\";\n\t\t\t}\n\n\t\t\tif (!/^[a-z0-9-_]+$/i.test(trimmedInput)) {\n\t\t\t\treturn \"Use only letters, numbers, hyphens, and underscores.\";\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t},\n\t});\n\n\treturn getPromptValue(promptResult).trim();\n}\n\nexport async function promptProjectMode(): Promise<ProjectMode> {\n\tconst promptResult = await clack.select<ProjectMode>({\n\t\tmessage: \"What do you want to create?\",\n\t\toptions: [\n\t\t\t{\n\t\t\t\tvalue: \"frontend-only\",\n\t\t\t\tlabel: PROJECT_MODE_DISPLAY[\"frontend-only\"],\n\t\t\t\thint: \"recommended for starters\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"fullstack\",\n\t\t\t\tlabel: PROJECT_MODE_DISPLAY.fullstack,\n\t\t\t},\n\t\t],\n\t\tinitialValue: \"frontend-only\",\n\t});\n\n\treturn getPromptValue(promptResult);\n}\n\nexport async function promptCssFramework(): Promise<CssFramework> {\n\tconst promptResult = await clack.select<CssFramework>({\n\t\tmessage: \"Choose a CSS framework:\",\n\t\toptions: [\n\t\t\t{\n\t\t\t\tvalue: \"tailwind\",\n\t\t\t\tlabel: CSS_DISPLAY.tailwind,\n\t\t\t\thint: \"recommended\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"bootstrap\",\n\t\t\t\tlabel: CSS_DISPLAY.bootstrap,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"sass\",\n\t\t\t\tlabel: CSS_DISPLAY.sass,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"none\",\n\t\t\t\tlabel: CSS_DISPLAY.none,\n\t\t\t},\n\t\t],\n\t\tinitialValue: \"tailwind\",\n\t});\n\n\treturn getPromptValue(promptResult);\n}\n\nexport async function promptRenderMode(): Promise<RenderMode> {\n\tconst promptResult = await clack.select<RenderMode>({\n\t\tmessage: \"Choose a render mode:\",\n\t\toptions: [\n\t\t\t{\n\t\t\t\tvalue: \"csr\",\n\t\t\t\tlabel: RENDER_MODE_DISPLAY.csr,\n\t\t\t\thint: \"recommended\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"spa\",\n\t\t\t\tlabel: RENDER_MODE_DISPLAY.spa,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"hybrid\",\n\t\t\t\tlabel: RENDER_MODE_DISPLAY.hybrid,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"ssr\",\n\t\t\t\tlabel: RENDER_MODE_DISPLAY.ssr,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"ssg\",\n\t\t\t\tlabel: RENDER_MODE_DISPLAY.ssg,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"csg\",\n\t\t\t\tlabel: RENDER_MODE_DISPLAY.csg,\n\t\t\t},\n\t\t],\n\t\tinitialValue: \"csr\",\n\t});\n\n\treturn getPromptValue(promptResult);\n}\n\nexport async function promptBackendFramework(): Promise<BackendFramework> {\n\tconst promptResult = await clack.select<BackendFramework>({\n\t\tmessage: \"Choose a backend framework:\",\n\t\toptions: [\n\t\t\t{\n\t\t\t\tvalue: \"gaman\",\n\t\t\t\tlabel: BACKEND_DISPLAY.gaman,\n\t\t\t\thint: \"recommended\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"express\",\n\t\t\t\tlabel: BACKEND_DISPLAY.express,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"nest\",\n\t\t\t\tlabel: BACKEND_DISPLAY.nest,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"adonis\",\n\t\t\t\tlabel: BACKEND_DISPLAY.adonis,\n\t\t\t},\n\t\t],\n\t\tinitialValue: \"gaman\",\n\t});\n\n\treturn getPromptValue(promptResult);\n}\n\nexport async function promptDatabase(): Promise<Database> {\n\tconst promptResult = await clack.select<Database>({\n\t\tmessage: \"Choose a database:\",\n\t\toptions: [\n\t\t\t{\n\t\t\t\tvalue: \"postgresql\",\n\t\t\t\tlabel: DATABASE_DISPLAY.postgresql,\n\t\t\t\thint: \"recommended\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"mysql\",\n\t\t\t\tlabel: DATABASE_DISPLAY.mysql,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"mongodb\",\n\t\t\t\tlabel: DATABASE_DISPLAY.mongodb,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"firebase\",\n\t\t\t\tlabel: DATABASE_DISPLAY.firebase,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"sqlite\",\n\t\t\t\tlabel: DATABASE_DISPLAY.sqlite,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"mariadb\",\n\t\t\t\tlabel: DATABASE_DISPLAY.mariadb,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"redis\",\n\t\t\t\tlabel: DATABASE_DISPLAY.redis,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"planetscale\",\n\t\t\t\tlabel: DATABASE_DISPLAY.planetscale,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"neon\",\n\t\t\t\tlabel: DATABASE_DISPLAY.neon,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"turso\",\n\t\t\t\tlabel: DATABASE_DISPLAY.turso,\n\t\t\t},\n\t\t],\n\t\tinitialValue: \"postgresql\",\n\t});\n\n\treturn getPromptValue(promptResult);\n}\n\nexport async function runPrompts(projectName: string): Promise<ProjectConfig> {\n\tconst projectMode = await promptProjectMode();\n\tconst cssFramework = await promptCssFramework();\n\tconst renderMode = await promptRenderMode();\n\n\tif (projectMode === \"frontend-only\") {\n\t\treturn {\n\t\t\tprojectName,\n\t\t\tprojectMode,\n\t\t\tcssFramework,\n\t\t\trenderMode,\n\t\t\tbackendFramework: \"gaman\",\n\t\t\tdatabase: \"postgresql\",\n\t\t};\n\t}\n\n\tconst backendFramework = await promptBackendFramework();\n\tconst selectedDatabase = await promptDatabase();\n\n\treturn {\n\t\tprojectName,\n\t\tprojectMode,\n\t\tcssFramework,\n\t\trenderMode,\n\t\tbackendFramework,\n\t\tdatabase: selectedDatabase,\n\t};\n}\n"
16
+ "import { readFileSync } from \"node:fs\";\nimport type {\n\tBackendFramework,\n\tCssFramework,\n\tDatabase,\n\tProjectConfig,\n\tProjectFile,\n} from \"./types\";\nimport { BACKEND_DISPLAY, CSS_DISPLAY, DATABASE_DISPLAY } from \"./types\";\nimport {\n\tCOMPONENTS_MODAL_CODE,\n\tCORAL_OBSTACLE_CODE,\n\tDEPLOY_MODAL_CODE,\n\tDOCS_MODAL_CODE,\n\tSHRIMP_CHARACTER_CODE,\n\tWELCOME_PAGE_CODE,\n} from \"./welcomeComponents\";\n\nconst DEFAULT_METADATA_TITLE =\n\t\"Rakta.js | Small in size. Fierce in speed. Alive in every route\";\nconst FAVICON_BYTES = readFileSync(\n\tnew URL(\"../assets/favicon.ico\", import.meta.url),\n);\n\n// ─── Root files ─────────────────────────────────────────────────────────────\n\nfunction getRootFiles(projectConfig: ProjectConfig): ProjectFile[] {\n\tconst { projectName, projectMode } = projectConfig;\n\n\tconst workspaces =\n\t\tprojectMode === \"fullstack\" ? [\"frontend\", \"backend\", \"shared\"] : [];\n\n\treturn [\n\t\t{\n\t\t\tpath: \"package.json\",\n\t\t\tcontent: JSON.stringify(\n\t\t\t\t{\n\t\t\t\t\tname: projectName,\n\t\t\t\t\tversion: \"0.1.0\",\n\t\t\t\t\tprivate: true,\n\t\t\t\t\t...(projectMode === \"fullstack\" ? { workspaces } : {}),\n\t\t\t\t\tscripts:\n\t\t\t\t\t\tprojectMode === \"fullstack\"\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\"dev:frontend\": \"cd frontend && bun run dev\",\n\t\t\t\t\t\t\t\t\t\"dev:backend\": \"cd backend && bun run dev\",\n\t\t\t\t\t\t\t\t\t\"build:frontend\": \"cd frontend && bun run build\",\n\t\t\t\t\t\t\t\t\t\"build:backend\": \"cd backend && bun run build\",\n\t\t\t\t\t\t\t\t\tbuild: \"bun run build:frontend && bun run build:backend\",\n\t\t\t\t\t\t\t\t\tstart: \"cd backend && bun run start\",\n\t\t\t\t\t\t\t\t\ttypecheck:\n\t\t\t\t\t\t\t\t\t\t\"cd frontend && bun run typecheck && cd ../backend && bun run typecheck\",\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\tdev: \"rakta dev\",\n\t\t\t\t\t\t\t\t\tbuild: \"rakta build\",\n\t\t\t\t\t\t\t\t\tstart: \"rakta start\",\n\t\t\t\t\t\t\t\t\ttypecheck: \"tsc --noEmit\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\tdescription: `${projectName} — built with Rakta.js`,\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2,\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tpath: \"tsconfig.base.json\",\n\t\t\tcontent: JSON.stringify(\n\t\t\t\t{\n\t\t\t\t\tcompilerOptions: {\n\t\t\t\t\t\ttarget: \"ESNext\",\n\t\t\t\t\t\tmodule: \"ESNext\",\n\t\t\t\t\t\tmoduleResolution: \"Bundler\",\n\t\t\t\t\t\tjsx: \"react-jsx\",\n\t\t\t\t\t\tlib: [\"ESNext\", \"DOM\", \"DOM.Iterable\"],\n\t\t\t\t\t\tstrict: true,\n\t\t\t\t\t\tnoUncheckedIndexedAccess: true,\n\t\t\t\t\t\texactOptionalPropertyTypes: true,\n\t\t\t\t\t\tskipLibCheck: true,\n\t\t\t\t\t\tesModuleInterop: true,\n\t\t\t\t\t\tallowSyntheticDefaultImports: true,\n\t\t\t\t\t\tresolveJsonModule: true,\n\t\t\t\t\t\tverbatimModuleSyntax: true,\n\t\t\t\t\t\tisolatedModules: true,\n\t\t\t\t\t},\n\t\t\t\t\texclude: [\"node_modules\", \"dist\", \"**/dist/**\"],\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2,\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tpath: \"bunfig.toml\",\n\t\t\tcontent: `[install]\\nauto = \"fallback\"\\nexact = false\\nregistry = \"https://registry.npmjs.org/\"\\n\\n[run]\\nbun = true\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \".npmrc\",\n\t\t\tcontent: `registry=https://registry.npmjs.org/\\nstrict-ssl=true\\nfetch-retries=5\\nfetch-retry-mintimeout=20000\\nfetch-retry-maxtimeout=120000\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \".env.example\",\n\t\t\tcontent: `NODE_ENV=development\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \".gitignore\",\n\t\t\tcontent: `node_modules/\\ndist/\\n.env\\n.env.*\\n!.env.example\\n.DS_Store\\n*.log\\n.rakta/\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"README.md\",\n\t\t\tcontent: generateProjectReadme(projectConfig),\n\t\t},\n\t];\n}\n\n// ─── Frontend-only starter (ShrimpRun game) ─────────────────────────────────\n\nfunction getFrontendOnlyFiles(projectConfig: ProjectConfig): ProjectFile[] {\n\tconst { projectName, cssFramework } = projectConfig;\n\tconst styleFileName =\n\t\tcssFramework === \"sass\" ? \"globals.scss\" : \"globals.css\";\n\n\tconst files: ProjectFile[] = [\n\t\t{\n\t\t\tpath: \"package.json\",\n\t\t\tcontent: JSON.stringify(\n\t\t\t\t{\n\t\t\t\t\tname: projectName,\n\t\t\t\t\tversion: \"0.1.0\",\n\t\t\t\t\tprivate: true,\n\t\t\t\t\ttype: \"module\",\n\t\t\t\t\tscripts: {\n\t\t\t\t\t\tdev: \"rakta dev\",\n\t\t\t\t\t\tbuild: \"rakta build\",\n\t\t\t\t\t\tstart: \"rakta start\",\n\t\t\t\t\t\troutes: \"rakta routes\",\n\t\t\t\t\t\ttypecheck: \"tsc --noEmit\",\n\t\t\t\t\t},\n\t\t\t\t\tdependencies: {\n\t\t\t\t\t\traktajs: \"^0.1.6\",\n\t\t\t\t\t\treact: \"^19.2.7\",\n\t\t\t\t\t\t\"react-dom\": \"^19.2.7\",\n\t\t\t\t\t\t\"react-icons\": \"^5.2.1\",\n\t\t\t\t\t\tmotion: \"^12.0.0\",\n\t\t\t\t\t\t...getCssDependencies(cssFramework),\n\t\t\t\t\t},\n\t\t\t\t\tdevDependencies: {\n\t\t\t\t\t\t\"@types/react\": \"^19.2.17\",\n\t\t\t\t\t\t\"@types/react-dom\": \"^19.2.3\",\n\t\t\t\t\t\ttypescript: \"^6.0.3\",\n\t\t\t\t\t\t...getCssDevDependencies(cssFramework),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2,\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tpath: \"tsconfig.json\",\n\t\t\tcontent: JSON.stringify(\n\t\t\t\t{\n\t\t\t\t\textends: \"./tsconfig.base.json\",\n\t\t\t\t\tcompilerOptions: {\n\t\t\t\t\t\toutDir: \"./dist\",\n\t\t\t\t\t\trootDir: \"./\",\n\t\t\t\t\t\ttypes: [\"react\", \"react-dom\"],\n\t\t\t\t\t},\n\t\t\t\t\tinclude: [\n\t\t\t\t\t\t\"rakta-env.d.ts\",\n\t\t\t\t\t\t\"app/**/*\",\n\t\t\t\t\t\t\"components/**/*\",\n\t\t\t\t\t\t\"styles/**/*\",\n\t\t\t\t\t\t\"rakta.config.ts\",\n\t\t\t\t\t],\n\t\t\t\t\texclude: [\"node_modules\", \"dist\"],\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2,\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tpath: \"rakta-env.d.ts\",\n\t\t\tcontent: generateFrontendOnlyRaktaEnv(),\n\t\t},\n\t\t{\n\t\t\tpath: \"rakta.config.ts\",\n\t\t\tcontent: `import { defineRaktaConfig } from \"raktajs\";\\n\\nexport default defineRaktaConfig({\\n appName: \"${projectName}\",\\n seo: {\\n defaultTitle: \"${DEFAULT_METADATA_TITLE}\",\\n defaultDescription: \"Built with Rakta.js — Small in size. Fierce in speed. Alive in every route.\",\\n },\\n render: {\\n defaultMode: \"csr\",\\n routes: {},\\n },\\n});\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"app/layout.tsx\",\n\t\t\tcontent: generateFrontendOnlyLayout(),\n\t\t},\n\t\t{\n\t\t\tpath: \"app/page.tsx\",\n\t\t\tcontent: generateFrontendOnlyPage(projectName),\n\t\t},\n\t\t{\n\t\t\tpath: \"app/loading.tsx\",\n\t\t\tcontent: generateFrontendOnlyLoading(),\n\t\t},\n\t\t{\n\t\t\tpath: \"app/error.tsx\",\n\t\t\tcontent: generateFrontendOnlyError(),\n\t\t},\n\t\t{\n\t\t\tpath: \"app/notFound.tsx\",\n\t\t\tcontent: generateFrontendOnlyNotFound(),\n\t\t},\n\t\t{\n\t\t\tpath: \"app/components/ComponentsModal.tsx\",\n\t\t\tcontent: COMPONENTS_MODAL_CODE,\n\t\t},\n\t\t{\n\t\t\tpath: \"app/components/CoralObstacle.tsx\",\n\t\t\tcontent: CORAL_OBSTACLE_CODE,\n\t\t},\n\t\t{\n\t\t\tpath: \"app/components/DeployModal.tsx\",\n\t\t\tcontent: DEPLOY_MODAL_CODE,\n\t\t},\n\t\t{\n\t\t\tpath: \"app/components/DocsModal.tsx\",\n\t\t\tcontent: DOCS_MODAL_CODE,\n\t\t},\n\t\t{\n\t\t\tpath: \"app/components/ShrimpCharacter.tsx\",\n\t\t\tcontent: SHRIMP_CHARACTER_CODE,\n\t\t},\n\t\t{\n\t\t\tpath: `styles/${styleFileName}`,\n\t\t\tcontent: getFrontendOnlyCssGlobals(cssFramework),\n\t\t},\n\t\t{\n\t\t\tpath: \"public/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"public/favicon.ico\",\n\t\t\tcontent: FAVICON_BYTES,\n\t\t},\n\t];\n\n\treturn processFilesForLanguage(files, projectConfig.useTypeScript);\n}\n\n// ─── Fullstack frontend files ────────────────────────────────────────────────\n\nfunction getFullstackFrontendFiles(\n\tprojectConfig: ProjectConfig,\n): ProjectFile[] {\n\tconst { projectName, cssFramework } = projectConfig;\n\tconst styleFileName =\n\t\tcssFramework === \"sass\" ? \"globals.scss\" : \"globals.css\";\n\n\tconst files: ProjectFile[] = [\n\t\t{\n\t\t\tpath: \"frontend/package.json\",\n\t\t\tcontent: JSON.stringify(\n\t\t\t\t{\n\t\t\t\t\tname: `${projectName}-frontend`,\n\t\t\t\t\tversion: \"0.1.0\",\n\t\t\t\t\tprivate: true,\n\t\t\t\t\tscripts: {\n\t\t\t\t\t\tdev: \"rakta dev\",\n\t\t\t\t\t\tbuild: \"rakta build\",\n\t\t\t\t\t\tstart: \"rakta start\",\n\t\t\t\t\t\troutes: \"rakta routes\",\n\t\t\t\t\t\t\"imports:generate\": \"rakta imports:generate\",\n\t\t\t\t\t\t\"rpc:types\": \"rakta rpc:types\",\n\t\t\t\t\t\ttypecheck: \"tsc --noEmit\",\n\t\t\t\t\t},\n\t\t\t\t\tdependencies: {\n\t\t\t\t\t\traktajs: \"^0.1.6\",\n\t\t\t\t\t\treact: \"^19.2.7\",\n\t\t\t\t\t\t\"react-dom\": \"^19.2.7\",\n\t\t\t\t\t\t\"react-icons\": \"^5.2.1\",\n\t\t\t\t\t\tmotion: \"^12.0.0\",\n\t\t\t\t\t\t...getCssDependencies(cssFramework),\n\t\t\t\t\t},\n\t\t\t\t\tdevDependencies: {\n\t\t\t\t\t\t\"@types/react\": \"^19.2.17\",\n\t\t\t\t\t\t\"@types/react-dom\": \"^19.2.3\",\n\t\t\t\t\t\ttypescript: \"^6.0.3\",\n\t\t\t\t\t\t...getCssDevDependencies(cssFramework),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2,\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/tsconfig.json\",\n\t\t\tcontent: JSON.stringify(\n\t\t\t\t{\n\t\t\t\t\textends: \"../tsconfig.base.json\",\n\t\t\t\t\tcompilerOptions: {\n\t\t\t\t\t\toutDir: \"./dist\",\n\t\t\t\t\t\trootDir: \"./\",\n\t\t\t\t\t},\n\t\t\t\t\tinclude: [\n\t\t\t\t\t\t\"app/**/*\",\n\t\t\t\t\t\t\"components/**/*\",\n\t\t\t\t\t\t\"lib/**/*\",\n\t\t\t\t\t\t\"stores/**/*\",\n\t\t\t\t\t\t\"schemas/**/*\",\n\t\t\t\t\t\t\"rakta.config.ts\",\n\t\t\t\t\t],\n\t\t\t\t\texclude: [\"node_modules\", \"dist\"],\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2,\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/rakta.config.ts\",\n\t\t\tcontent: `import { defineRaktaConfig } from \"raktajs\";\\n\\nexport default defineRaktaConfig({\\n appName: \"${projectName}\",\\n seo: {\\n defaultTitle: \"${DEFAULT_METADATA_TITLE}\",\\n defaultDescription: \"Built with Rakta.js — Small in size. Fierce in speed. Alive in every route.\",\\n },\\n render: {\\n defaultMode: \"csr\",\\n routes: {\\n \"/\": \"ssg\",\\n \"/about\": \"ssg\",\\n \"/blog\": \"csg\",\\n \"/blog/:slug\": \"csg\",\\n \"/dashboard\": \"csr\"\\n }\\n }\\n});\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/app/layout.tsx\",\n\t\t\tcontent: `import React from \"react\";\\nimport \"../styles/${styleFileName}\";\\n\\ninterface RootLayoutProps {\\n readonly children: React.ReactNode;\\n}\\n\\nexport default function RootLayout({ children }: RootLayoutProps) {\\n return (\\n <html lang=\"en\">\\n <body>{children}</body>\\n </html>\\n );\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/app/page.tsx\",\n\t\t\tcontent: generateFullstackHomePage(projectName),\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/app/about/page.tsx\",\n\t\t\tcontent: `import React from \"react\";\\n\\nexport default function AboutPage() {\\n return (\\n <main className=\"page-shell\">\\n <section className=\"hero-card\">\\n <p className=\"eyebrow\">ABOUT</p>\\n <h1>About ${projectName}</h1>\\n <p>This project is built with Rakta.js, React, Bun, and TypeScript.</p>\\n <a href=\"/\">Back to home</a>\\n </section>\\n </main>\\n );\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/app/blog/page.tsx\",\n\t\t\tcontent: `import React from \"react\";\\n\\nconst BLOG_POSTS = [\\n { slug: \"getting-started\", title: \"Getting started with Rakta.js\" },\\n { slug: \"file-based-routing\", title: \"File-based routing explained\" },\\n { slug: \"type-safe-rpc\", title: \"Type-safe API with CarubanWire\" },\\n];\\n\\nexport default function BlogPage() {\\n return (\\n <main className=\"page-shell\">\\n <section className=\"hero-card\">\\n <p className=\"eyebrow\">BLOG</p>\\n <h1>Articles</h1>\\n <ul>\\n {BLOG_POSTS.map((post) => (\\n <li key={post.slug}>\\n <a href={\\`/blog/\\${post.slug}\\`}>{post.title}</a>\\n </li>\\n ))}\\n </ul>\\n </section>\\n </main>\\n );\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/app/blog/[slug]/page.tsx\",\n\t\t\tcontent: `import React from \"react\";\\n\\ninterface BlogPostPageProps {\\n readonly params: {\\n readonly slug?: string;\\n };\\n}\\n\\nexport default function BlogPostPage({ params }: BlogPostPageProps) {\\n const postTitle = params.slug?.replaceAll(\"-\", \" \") ?? \"Article\";\\n\\n return (\\n <main className=\"page-shell\">\\n <section className=\"hero-card\">\\n <p className=\"eyebrow\">BLOG POST</p>\\n <h1>{postTitle}</h1>\\n <p>Slug: <code>{params.slug}</code></p>\\n <a href=\"/blog\">Back to blog</a>\\n </section>\\n </main>\\n );\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/app/loading.tsx\",\n\t\t\tcontent: `import React from \"react\";\\n\\nexport default function Loading() {\\n return (\\n <main className=\"page-shell\">\\n <p>Loading...</p>\\n </main>\\n );\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/app/error.tsx\",\n\t\t\tcontent: `import React from \"react\";\\n\\ninterface ErrorPageProps {\\n readonly error: Error;\\n readonly reset: () => void;\\n}\\n\\nexport default function ErrorPage({ error, reset }: ErrorPageProps) {\\n return (\\n <main className=\"page-shell\">\\n <section className=\"hero-card\">\\n <h1>Something went wrong</h1>\\n <p>{error.message}</p>\\n <button type=\"button\" onClick={reset}>Try again</button>\\n </section>\\n </main>\\n );\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/app/not-found.tsx\",\n\t\t\tcontent: `import React from \"react\";\\n\\nexport default function NotFound() {\\n return (\\n <main className=\"page-shell\">\\n <section className=\"hero-card\">\\n <h1>404</h1>\\n <p>The page you are looking for does not exist.</p>\\n <a href=\"/\">Return home</a>\\n </section>\\n </main>\\n );\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/app/api/hello/route.ts\",\n\t\t\tcontent: `export async function GET(request: Request): Promise<Response> {\\n const requestUrl = new URL(request.url);\\n\\n return Response.json({\\n message: \"Hello from Rakta.js API\",\\n pathname: requestUrl.pathname,\\n timestamp: new Date().toISOString(),\\n });\\n}\\n\\nexport async function POST(request: Request): Promise<Response> {\\n const requestBody = await request.json() as Record<string, unknown>;\\n\\n return Response.json({\\n received: requestBody,\\n timestamp: new Date().toISOString(),\\n });\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/lib/http.ts\",\n\t\t\tcontent: `export const API_URL = process.env[\"API_URL\"] ?? \"http://localhost:4000\";\\n\\nexport async function apiGet<TData>(path: string): Promise<TData> {\\n const response = await fetch(\\`\\${API_URL}\\${path}\\`);\\n\\n if (!response.ok) {\\n throw new Error(\\`Request failed with status \\${response.status}\\`);\\n }\\n\\n return response.json() as Promise<TData>;\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/lib/routes.ts\",\n\t\t\tcontent: `export const ROUTES = {\\n home: \"/\",\\n about: \"/about\",\\n blog: \"/blog\",\\n blogPost: (slug: string) => \\`/blog/\\${slug}\\`,\\n apiHello: \"/api/hello\",\\n} as const;\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/lib/utils.ts\",\n\t\t\tcontent: `export function cn(...classNames: Array<string | undefined | null | false>): string {\\n return classNames.filter(Boolean).join(\" \");\\n}\\n\\nexport function slugify(text: string): string {\\n return text\\n .toLowerCase()\\n .replace(/[^a-z0-9]+/g, \"-\")\\n .replace(/(^-|-$)/g, \"\");\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/stores/counter.store.ts\",\n\t\t\tcontent: `import { createRaktaStore } from \"raktajs\";\\n\\ninterface CounterState {\\n readonly count: number;\\n readonly increment: () => void;\\n readonly decrement: () => void;\\n}\\n\\nexport const useCounterStore = createRaktaStore<CounterState>((setState, getState) => ({\\n count: 0,\\n increment: () => setState({ count: getState().count + 1 }),\\n decrement: () => setState({ count: getState().count - 1 }),\\n}));\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/schemas/user.schema.ts\",\n\t\t\tcontent: `import { object, string, number } from \"raktajs\";\\n\\nexport const userSchema = object({\\n name: string().min(1),\\n email: string().min(5),\\n age: number().min(0).max(120),\\n});\\n\\nexport type UserSchema = typeof userSchema;\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: `frontend/styles/${styleFileName}`,\n\t\t\tcontent: getCssGlobals(cssFramework),\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/public/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/public/favicon.ico\",\n\t\t\tcontent: FAVICON_BYTES,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/components/ComponentsModal.tsx\",\n\t\t\tcontent: COMPONENTS_MODAL_CODE,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/components/CoralObstacle.tsx\",\n\t\t\tcontent: CORAL_OBSTACLE_CODE,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/components/DeployModal.tsx\",\n\t\t\tcontent: DEPLOY_MODAL_CODE,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/components/DocsModal.tsx\",\n\t\t\tcontent: DOCS_MODAL_CODE,\n\t\t},\n\t\t{\n\t\t\tpath: \"frontend/components/ShrimpCharacter.tsx\",\n\t\t\tcontent: SHRIMP_CHARACTER_CODE,\n\t\t},\n\t];\n\n\treturn processFilesForLanguage(files, projectConfig.useTypeScript);\n}\n\nfunction processFilesForLanguage(\n\tfiles: ProjectFile[],\n\tuseTypeScript: boolean,\n): ProjectFile[] {\n\tif (useTypeScript) return files;\n\n\treturn files.map((file) => {\n\t\tif (typeof file.content === \"string\") {\n\t\t\tlet path = file.path;\n\t\t\tif (path.endsWith(\".tsx\")) path = path.replace(\".tsx\", \".jsx\");\n\t\t\telse if (path.endsWith(\".ts\")) path = path.replace(\".ts\", \".js\");\n\n\t\t\t// Simple TS stripping regex\n\t\t\tlet code = file.content;\n\t\t\tcode = code.replace(/^interface\\s+\\w+\\s*\\{[\\s\\S]*?\\n\\}\\n/gm, \"\");\n\t\t\tcode = code.replace(/^type\\s+\\w+\\s*=[\\s\\S]*?;\\n/gm, \"\");\n\t\t\t// Remove types like: `function Foo({ a }: FooProps) {` -> `function Foo({ a }) {`\n\t\t\tcode = code.replace(/:\\s*[A-Z]\\w*(Props|State)\\b/g, \"\");\n\t\t\t// Remove `(request: Request): Promise<Response>` -> `(request)`\n\t\t\tcode = code.replace(\n\t\t\t\t/:\\s*(Request|Response|Promise<[^>]+>|string|number|boolean|any|unknown)/g,\n\t\t\t\t\"\",\n\t\t\t);\n\n\t\t\treturn { ...file, path, content: code };\n\t\t}\n\t\treturn file;\n\t});\n}\n\n// ─── Backend files ───────────────────────────────────────────────────────────\n\nfunction getBackendFiles(projectConfig: ProjectConfig): ProjectFile[] {\n\treturn [\n\t\t...getBackendCommonFiles(projectConfig),\n\t\t...getBackendFrameworkFiles(projectConfig.backendFramework, projectConfig),\n\t];\n}\n\nfunction getBackendCommonFiles(projectConfig: ProjectConfig): ProjectFile[] {\n\treturn [\n\t\t{\n\t\t\tpath: \"backend/src/env.ts\",\n\t\t\tcontent: `function optionalEnv(envKey: string, fallbackValue: string): string {\\n return process.env[envKey] ?? fallbackValue;\\n}\\n\\nexport const env = {\\n port: Number(optionalEnv(\"PORT\", \"4000\")),\\n nodeEnv: optionalEnv(\"NODE_ENV\", \"development\"),\\n corsOrigin: optionalEnv(\"CORS_ORIGIN\", \"http://localhost:3000\"),\\n databaseUrl: optionalEnv(\"DATABASE_URL\", \"\"),\\n} as const;\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/config/app.config.ts\",\n\t\t\tcontent: `import { env } from \"../env\";\\n\\nexport const appConfig = {\\n name: \"${projectConfig.projectName} API\",\\n version: \"0.1.0\",\\n port: env.port,\\n nodeEnv: env.nodeEnv,\\n corsOrigin: env.corsOrigin,\\n isDev: env.nodeEnv === \"development\",\\n} as const;\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/config/database.config.ts\",\n\t\t\tcontent: getDatabaseConfig(projectConfig.database),\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/database/client.ts\",\n\t\t\tcontent: getDatabaseClient(projectConfig.database),\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/controllers/hello.controller.ts\",\n\t\t\tcontent: `export interface HelloResponse {\\n readonly success: boolean;\\n readonly message: string;\\n readonly framework: string;\\n readonly version: string;\\n readonly timestamp: string;\\n}\\n\\nexport function helloController(): HelloResponse {\\n return {\\n success: true,\\n message: \"Hello from ${projectConfig.projectName} API\",\\n framework: \"${BACKEND_DISPLAY[projectConfig.backendFramework]}\",\\n version: \"0.1.0\",\\n timestamp: new Date().toISOString(),\\n };\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/.env.example\",\n\t\t\tcontent: getDatabaseEnvExample(projectConfig.database),\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/tsconfig.json\",\n\t\t\tcontent: JSON.stringify(\n\t\t\t\t{\n\t\t\t\t\textends: \"../tsconfig.base.json\",\n\t\t\t\t\tcompilerOptions: {\n\t\t\t\t\t\toutDir: \"./dist\",\n\t\t\t\t\t\trootDir: \"./src\",\n\t\t\t\t\t\ttypes: [\"node\", \"bun\"],\n\t\t\t\t\t},\n\t\t\t\t\tinclude: [\"src/**/*\"],\n\t\t\t\t\texclude: [\"node_modules\", \"dist\"],\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2,\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/database/schema/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t];\n}\n\nfunction getBackendFrameworkFiles(\n\tselectedFramework: BackendFramework,\n\tprojectConfig: ProjectConfig,\n): ProjectFile[] {\n\tswitch (selectedFramework) {\n\t\tcase \"gaman\":\n\t\t\treturn getGamanFiles(projectConfig);\n\t\tcase \"express\":\n\t\t\treturn getExpressFiles(projectConfig);\n\t\tcase \"nest\":\n\t\t\treturn getNestFiles(projectConfig);\n\t\tcase \"adonis\":\n\t\t\treturn getAdonisFiles(projectConfig);\n\t\tdefault:\n\t\t\treturn getGamanFiles(projectConfig);\n\t}\n}\n\nfunction getGamanFiles(projectConfig: ProjectConfig): ProjectFile[] {\n\treturn [\n\t\t{\n\t\t\tpath: \"backend/package.json\",\n\t\t\tcontent: getBackendPackageJson(projectConfig, {\n\t\t\t\tdependencies: { ...getDatabaseDependencies(projectConfig.database) },\n\t\t\t\tdevDependencies: { \"@types/bun\": \"^1.3.14\" },\n\t\t\t}),\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/app.ts\",\n\t\t\tcontent: `import { appConfig } from \"./config/app.config\";\\nimport { helloController } from \"./controllers/hello.controller\";\\n\\nconst corsHeaders = {\\n \"Access-Control-Allow-Origin\": appConfig.corsOrigin,\\n \"Access-Control-Allow-Methods\": \"GET, POST, PUT, PATCH, DELETE, OPTIONS\",\\n \"Access-Control-Allow-Headers\": \"Content-Type, Authorization\",\\n};\\n\\nconst server = Bun.serve({\\n port: appConfig.port,\\n fetch(request: Request): Response {\\n const requestUrl = new URL(request.url);\\n\\n if (request.method === \"OPTIONS\") {\\n return new Response(null, { status: 204, headers: corsHeaders });\\n }\\n\\n if (requestUrl.pathname === \"/api/hello\" && request.method === \"GET\") {\\n return Response.json(helloController(), { headers: corsHeaders });\\n }\\n\\n return Response.json(\\n { success: false, error: \"Not found\" },\\n { status: 404, headers: corsHeaders }\\n );\\n },\\n});\\n\\nconsole.log(\\`[${projectConfig.projectName}] Backend running at http://localhost:\\${server.port}\\`);\\n`,\n\t\t},\n\t];\n}\n\nfunction getExpressFiles(projectConfig: ProjectConfig): ProjectFile[] {\n\treturn [\n\t\t{\n\t\t\tpath: \"backend/package.json\",\n\t\t\tcontent: getBackendPackageJson(projectConfig, {\n\t\t\t\tdependencies: {\n\t\t\t\t\texpress: \"^4.19.2\",\n\t\t\t\t\tcors: \"^2.8.5\",\n\t\t\t\t\t...getDatabaseDependencies(projectConfig.database),\n\t\t\t\t},\n\t\t\t\tdevDependencies: {\n\t\t\t\t\t\"@types/express\": \"^4.17.21\",\n\t\t\t\t\t\"@types/cors\": \"^2.8.17\",\n\t\t\t\t\t\"@types/node\": \"^26.0.1\",\n\t\t\t\t},\n\t\t\t}),\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/app.ts\",\n\t\t\tcontent: `import cors from \"cors\";\\nimport express from \"express\";\\nimport { appConfig } from \"./config/app.config\";\\nimport { helloController } from \"./controllers/hello.controller\";\\n\\nconst app = express();\\n\\napp.use(cors({ origin: appConfig.corsOrigin }));\\napp.use(express.json());\\n\\napp.get(\"/api/hello\", (_request, response) => {\\n response.json(helloController());\\n});\\n\\napp.use((_request, response) => {\\n response.status(404).json({ success: false, error: \"Not found\" });\\n});\\n\\napp.listen(appConfig.port, () => {\\n console.log(\\`[${projectConfig.projectName}] Backend running at http://localhost:\\${appConfig.port}\\`);\\n});\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/middlewares/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/routes/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/services/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t];\n}\n\nfunction getNestFiles(projectConfig: ProjectConfig): ProjectFile[] {\n\treturn [\n\t\t{\n\t\t\tpath: \"backend/package.json\",\n\t\t\tcontent: getBackendPackageJson(projectConfig, {\n\t\t\t\tdependencies: {\n\t\t\t\t\t\"@nestjs/common\": \"^10.3.0\",\n\t\t\t\t\t\"@nestjs/core\": \"^10.3.0\",\n\t\t\t\t\t\"@nestjs/platform-express\": \"^10.3.0\",\n\t\t\t\t\t\"reflect-metadata\": \"^0.2.2\",\n\t\t\t\t\t...getDatabaseDependencies(projectConfig.database),\n\t\t\t\t},\n\t\t\t\tdevDependencies: {\n\t\t\t\t\t\"@types/node\": \"^26.0.1\",\n\t\t\t\t},\n\t\t\t}),\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/nest-cli.json\",\n\t\t\tcontent: JSON.stringify(\n\t\t\t\t{\n\t\t\t\t\t$schema: \"https://json.schemastore.org/nest-cli\",\n\t\t\t\t\tcollection: \"@nestjs/schematics\",\n\t\t\t\t\tsourceRoot: \"src\",\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2,\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/app.module.ts\",\n\t\t\tcontent: `import { Module } from \"@nestjs/common\";\\nimport { AppController } from \"./app.controller\";\\n\\n@Module({\\n controllers: [AppController],\\n})\\nexport class AppModule {}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/app.controller.ts\",\n\t\t\tcontent: `import { Controller, Get } from \"@nestjs/common\";\\nimport { helloController } from \"./controllers/hello.controller\";\\n\\n@Controller(\"api\")\\nexport class AppController {\\n @Get(\"hello\")\\n hello() {\\n return helloController();\\n }\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/main.ts\",\n\t\t\tcontent: `import \"reflect-metadata\";\\nimport { NestFactory } from \"@nestjs/core\";\\nimport { AppModule } from \"./app.module\";\\nimport { appConfig } from \"./config/app.config\";\\n\\nasync function bootstrap(): Promise<void> {\\n const app = await NestFactory.create(AppModule);\\n app.enableCors({ origin: appConfig.corsOrigin });\\n await app.listen(appConfig.port);\\n console.log(\\`[${projectConfig.projectName}] Backend running at http://localhost:\\${appConfig.port}\\`);\\n}\\n\\nbootstrap().catch(console.error);\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/modules/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/common/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t];\n}\n\nfunction getAdonisFiles(projectConfig: ProjectConfig): ProjectFile[] {\n\treturn [\n\t\t{\n\t\t\tpath: \"backend/package.json\",\n\t\t\tcontent: getBackendPackageJson(projectConfig, {\n\t\t\t\tdependencies: {\n\t\t\t\t\t\"@adonisjs/core\": \"^6.9.0\",\n\t\t\t\t\t...getDatabaseDependencies(projectConfig.database),\n\t\t\t\t},\n\t\t\t\tdevDependencies: {\n\t\t\t\t\t\"@adonisjs/assembler\": \"^7.7.0\",\n\t\t\t\t\t\"@types/node\": \"^26.0.1\",\n\t\t\t\t},\n\t\t\t}),\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/app/controllers/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/app/middleware/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/app/services/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/start/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/config/.gitkeep\",\n\t\t\tcontent: \"\",\n\t\t},\n\t\t{\n\t\t\tpath: \"backend/src/app.ts\",\n\t\t\tcontent: `import { appConfig } from \"./config/app.config\";\\nimport { helloController } from \"./controllers/hello.controller\";\\n\\nconst corsHeaders = {\\n \"Access-Control-Allow-Origin\": appConfig.corsOrigin,\\n \"Access-Control-Allow-Methods\": \"GET, POST, PUT, PATCH, DELETE, OPTIONS\",\\n \"Access-Control-Allow-Headers\": \"Content-Type, Authorization\",\\n};\\n\\nconst server = Bun.serve({\\n port: appConfig.port,\\n fetch(request: Request): Response {\\n const requestUrl = new URL(request.url);\\n\\n if (request.method === \"OPTIONS\") {\\n return new Response(null, { status: 204, headers: corsHeaders });\\n }\\n\\n if (requestUrl.pathname === \"/api/hello\" && request.method === \"GET\") {\\n return Response.json(helloController(), { headers: corsHeaders });\\n }\\n\\n return Response.json(\\n { success: false, error: \"Not found\" },\\n { status: 404, headers: corsHeaders }\\n );\\n },\\n});\\n\\nconsole.log(\\`[${projectConfig.projectName}] Backend running at http://localhost:\\${server.port}\\`);\\n`,\n\t\t},\n\t];\n}\n\nfunction getBackendPackageJson(\n\tprojectConfig: ProjectConfig,\n\tpackageDeps: {\n\t\treadonly dependencies: Record<string, string>;\n\t\treadonly devDependencies: Record<string, string>;\n\t},\n): string {\n\treturn JSON.stringify(\n\t\t{\n\t\t\tname: `${projectConfig.projectName}-backend`,\n\t\t\tversion: \"0.1.0\",\n\t\t\tprivate: true,\n\t\t\ttype: \"module\",\n\t\t\tscripts: {\n\t\t\t\tdev: \"bun run --watch src/app.ts\",\n\t\t\t\tbuild: \"bun build src/app.ts --outfile dist/app.js --target bun\",\n\t\t\t\tstart: \"bun run dist/app.js\",\n\t\t\t\ttypecheck: \"tsc --noEmit\",\n\t\t\t},\n\t\t\tdependencies: {\n\t\t\t\t...packageDeps.dependencies,\n\t\t\t},\n\t\t\tdevDependencies: {\n\t\t\t\t\"@types/bun\": \"^1.3.14\",\n\t\t\t\ttypescript: \"^6.0.3\",\n\t\t\t\t...packageDeps.devDependencies,\n\t\t\t},\n\t\t},\n\t\tnull,\n\t\t2,\n\t);\n}\n\n// ─── Shared files (fullstack only) ──────────────────────────────────────────\n\nfunction getSharedFiles(projectConfig: ProjectConfig): ProjectFile[] {\n\treturn [\n\t\t{\n\t\t\tpath: \"shared/types/index.ts\",\n\t\t\tcontent: `export interface ApiResponse<TData = unknown> {\\n readonly success: boolean;\\n readonly data?: TData;\\n readonly error?: string;\\n readonly message?: string;\\n}\\n\\nexport interface User {\\n readonly id: string;\\n readonly name: string;\\n readonly email: string;\\n readonly createdAt: string;\\n readonly updatedAt: string;\\n}\\n`,\n\t\t},\n\t\t{\n\t\t\tpath: \"shared/constants/index.ts\",\n\t\t\tcontent: `export const APP_NAME = \"${projectConfig.projectName}\";\\nexport const API_VERSION = \"v1\";\\nexport const DEFAULT_PAGE_SIZE = 20;\\n`,\n\t\t},\n\t];\n}\n\n// ─── CSS helpers ─────────────────────────────────────────────────────────────\n\nfunction getCssDependencies(\n\tcssFramework: CssFramework,\n): Record<string, string> {\n\tswitch (cssFramework) {\n\t\tcase \"tailwind\":\n\t\t\treturn { tailwindcss: \"^4.3.1\" };\n\t\tcase \"bootstrap\":\n\t\t\treturn { bootstrap: \"^5.3.3\" };\n\t\tcase \"sass\":\n\t\tcase \"none\":\n\t\t\treturn {};\n\t}\n}\n\nfunction getCssDevDependencies(\n\tcssFramework: CssFramework,\n): Record<string, string> {\n\tswitch (cssFramework) {\n\t\tcase \"sass\":\n\t\t\treturn { sass: \"^1.77.0\" };\n\t\tdefault:\n\t\t\treturn {};\n\t}\n}\n\nfunction getFrontendOnlyCssGlobals(cssFramework: CssFramework): string {\n\tconst cssImport =\n\t\tcssFramework === \"tailwind\"\n\t\t\t? `@import \"tailwindcss\";\\n\\n`\n\t\t\t: cssFramework === \"bootstrap\"\n\t\t\t\t? `@import url(\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css\");\\n\\n`\n\t\t\t\t: cssFramework === \"sass\"\n\t\t\t\t\t? `$color-primary: #dc2626;\\n$color-background: #050505;\\n$color-foreground: #f8fafc;\\n\\n`\n\t\t\t\t\t: \"\";\n\n\treturn `${cssImport}:root {\n --color-primary: #dc2626;\n --color-background: #050505;\n --color-foreground: #f8fafc;\n --color-surface: #0e111a;\n --color-border: rgba(255, 255, 255, 0.1);\n --color-muted: #94a3b8;\n color-scheme: dark;\n}\n\nhtml {\n scroll-behavior: smooth;\n}\n\nbody {\n margin: 0;\n min-width: 320px;\n min-height: 100vh;\n color: var(--color-foreground);\n background: var(--color-background);\n font-family:\n ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\",\n Roboto, sans-serif;\n -webkit-font-smoothing: antialiased;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n@keyframes shrimpLegs {\n 0% {\n transform: translateY(0);\n }\n\n 50% {\n transform: translateY(2px);\n }\n}\n\n#rakta-root {\n min-height: 100vh;\n}\n\nmain {\n width: min(1120px, calc(100% - 32px));\n min-height: 100vh;\n margin: 0 auto;\n padding: 56px 0;\n}\n\nsection {\n margin: 0 0 24px;\n border: 1px solid rgba(248, 113, 113, 0.18);\n border-radius: 18px;\n background:\n linear-gradient(135deg, rgba(220, 38, 38, 0.16), transparent 34%),\n #0e111a;\n box-shadow: 0 24px 80px rgba(127, 29, 29, 0.2);\n padding: clamp(24px, 4vw, 44px);\n}\n\np {\n margin: 0 0 12px;\n color: #cbd5e1;\n line-height: 1.7;\n}\n\nh1,\nh2 {\n margin: 0 0 12px;\n color: #ffffff;\n line-height: 1;\n}\n\nh1 {\n max-width: 760px;\n font-size: clamp(42px, 8vw, 84px);\n letter-spacing: 0;\n}\n\nh2 {\n font-size: clamp(28px, 4vw, 44px);\n}\n\nclick {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-height: 42px;\n margin: 16px 12px 0 0;\n border: 1px solid rgba(248, 113, 113, 0.42);\n border-radius: 12px;\n padding: 0 16px;\n color: #fecaca;\n font-weight: 700;\n text-decoration: none;\n cursor: pointer;\n transition:\n transform 160ms ease,\n border-color 160ms ease,\n background 160ms ease;\n}\n\nclick:hover {\n border-color: #f87171;\n background: rgba(220, 38, 38, 0.12);\n transform: translateY(-1px);\n}\n\nbutton {\n font: inherit;\n}\n\n.relative {\n position: relative;\n}\n\n.absolute {\n position: absolute;\n}\n\n.inset-0 {\n inset: 0;\n}\n\n.bottom-0 {\n bottom: 0;\n}\n\n.left-0 {\n left: 0;\n}\n\n.top-2 {\n top: 8px;\n}\n\n.right-3 {\n right: 12px;\n}\n\n.block {\n display: block;\n}\n\n.flex {\n display: flex;\n}\n\n.flex-col {\n flex-direction: column;\n}\n\n.flex-wrap {\n flex-wrap: wrap;\n}\n\n.items-center {\n align-items: center;\n}\n\n.items-start {\n align-items: flex-start;\n}\n\n.justify-center {\n justify-content: center;\n}\n\n.gap-2 {\n gap: 8px;\n}\n\n.gap-4 {\n gap: 16px;\n}\n\n.gap-8 {\n gap: 32px;\n}\n\n.w-full {\n width: 100%;\n}\n\n.max-w-full {\n max-width: 100%;\n}\n\n.overflow-hidden {\n overflow: hidden;\n}\n\n.select-none {\n user-select: none;\n}\n\n.cursor-pointer {\n cursor: pointer;\n}\n\n.text-left {\n text-align: left;\n}\n\n.text-sm {\n font-size: 14px;\n}\n\n.text-lg {\n font-size: 18px;\n}\n\n.text-xl {\n font-size: 20px;\n}\n\n.font-bold {\n font-weight: 800;\n}\n\n.font-semibold {\n font-weight: 700;\n}\n\n.font-mono {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n}\n\n.text-white {\n color: #fff;\n}\n\n.text-slate-400 {\n color: #94a3b8;\n}\n\n.text-red-600 {\n color: #dc2626;\n}\n\n.bg-red-600 {\n background: #dc2626;\n}\n\n.bg-black\\\\/75 {\n background: rgba(0, 0, 0, 0.75);\n}\n\n.pointer-events-none {\n pointer-events: none;\n}\n\n.rounded-sm {\n border-radius: 2px;\n}\n\n.rounded-lg {\n border-radius: 8px;\n}\n\n.min-h-5 {\n min-height: 20px;\n}\n\n.tabular-nums {\n font-variant-numeric: tabular-nums;\n}\n\nbutton[aria-label^=\"ShrimpRun\"] {\n border: 2px solid rgba(248, 113, 113, 0.28);\n border-radius: 16px;\n background:\n linear-gradient(180deg, rgba(15, 23, 42, 0.96), rgba(7, 10, 18, 0.98)),\n radial-gradient(circle at 18% 22%, rgba(248, 113, 113, 0.16), transparent 30%);\n box-shadow:\n inset 0 0 0 1px rgba(255, 255, 255, 0.04),\n 0 20px 60px rgba(0, 0, 0, 0.28);\n}\n\nbutton[aria-label^=\"ShrimpRun\"] > .bottom-0.left-0 {\n background: linear-gradient(90deg, #7f1d1d, #dc2626, #fecaca);\n}\n\nbutton:not([aria-label]) {\n border: 0;\n border-radius: 10px;\n background: #dc2626;\n color: #fff;\n cursor: pointer;\n font-weight: 800;\n}\n\n.shrimp-sprite {\n filter: drop-shadow(0 8px 12px rgba(0, 0, 0, 0.32));\n}\n\n.shrimp-run-obstacle {\n border-radius: 8px 8px 2px 2px;\n background:\n radial-gradient(circle at 50% 8px, #fecaca 0 4px, transparent 5px),\n linear-gradient(135deg, #fb7185 0%, #dc2626 46%, #7f1d1d 100%);\n box-shadow:\n inset -6px -8px 0 rgba(69, 10, 10, 0.32),\n 0 0 0 2px rgba(254, 202, 202, 0.18);\n}\n\n.shrimp-run-obstacle::before,\n.shrimp-run-obstacle::after {\n position: absolute;\n bottom: 8px;\n width: 10px;\n height: 22px;\n border-radius: 999px 999px 4px 4px;\n background: #ef4444;\n content: \"\";\n}\n\n.shrimp-run-obstacle::before {\n left: -7px;\n transform: rotate(-18deg);\n}\n\n.shrimp-run-obstacle::after {\n right: -7px;\n transform: rotate(18deg);\n}\n\n@media (max-width: 720px) {\n main {\n width: min(100% - 20px, 1120px);\n padding: 24px 0;\n }\n\n section {\n padding: 20px;\n }\n}\n`;\n}\n\nfunction getCssGlobals(cssFramework: CssFramework): string {\n\tconst sharedBase = `\n:root {\n --color-primary: #dc2626;\n --color-background: #050505;\n --color-foreground: #f8fafc;\n}\n\n* {\n box-sizing: border-box;\n}\n\nbody {\n margin: 0;\n color: var(--color-foreground);\n background: var(--color-background);\n font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n}\n\n.page-shell {\n width: min(100% - 2rem, 960px);\n margin: 0 auto;\n padding: 4rem 0;\n}\n\n.hero-card,\n.feature-card {\n border: 1px solid rgba(255, 255, 255, 0.1);\n background: #0e111a;\n border-radius: 24px;\n padding: 2rem;\n margin-bottom: 1.5rem;\n}\n\n.eyebrow {\n color: #dc2626;\n font-weight: 700;\n letter-spacing: 0.12em;\n font-size: 0.75rem;\n text-transform: uppercase;\n}\n\n.button-row {\n display: flex;\n gap: 0.75rem;\n flex-wrap: wrap;\n margin-top: 1rem;\n}\n\na {\n color: #dc2626;\n}\n\nbutton {\n cursor: pointer;\n}\n`;\n\n\tswitch (cssFramework) {\n\t\tcase \"tailwind\":\n\t\t\treturn `@import \"tailwindcss\";\\n${sharedBase}`;\n\t\tcase \"bootstrap\":\n\t\t\treturn `@import url(\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css\");\\n${sharedBase}`;\n\t\tcase \"sass\":\n\t\t\treturn `$color-primary: #dc2626;\\n$color-background: #050505;\\n$color-foreground: #f8fafc;\\n${sharedBase}`;\n\t\tcase \"none\":\n\t\t\treturn sharedBase;\n\t}\n}\n\n// ─── Inline template generators ──────────────────────────────────────────────\n\nfunction generateFrontendOnlyRaktaEnv(): string {\n\treturn `declare module \"*.css\";\ndeclare module \"*.scss\";\ndeclare module \"*.sass\";\n\ntype RaktaClickAttributes = Omit<\n import(\"react\").AnchorHTMLAttributes<HTMLAnchorElement>,\n \"href\"\n> & {\n readonly to: string;\n};\n\ndeclare global {\n namespace JSX {\n interface IntrinsicElements {\n click: RaktaClickAttributes;\n }\n }\n\n const useCallback: typeof import(\"react\").useCallback;\n const useEffect: typeof import(\"react\").useEffect;\n const useRef: typeof import(\"react\").useRef;\n const useState: typeof import(\"react\").useState;\n\n const ComponentsModal: typeof import(\"./app/components/ComponentsModal\").default;\n const CoralObstacle: typeof import(\"./app/components/CoralObstacle\").default;\n const DeployModal: typeof import(\"./app/components/DeployModal\").default;\n const DocsModal: typeof import(\"./app/components/DocsModal\").default;\n const ShrimpCharacter: typeof import(\"./app/components/ShrimpCharacter\").default;\n}\n\ndeclare module \"react/jsx-runtime\" {\n namespace JSX {\n interface IntrinsicElements {\n click: RaktaClickAttributes;\n }\n }\n}\n\ndeclare module \"react/jsx-dev-runtime\" {\n namespace JSX {\n interface IntrinsicElements {\n click: RaktaClickAttributes;\n }\n }\n}\n\nexport {};\n`;\n}\n\nfunction generateFrontendOnlyLayout(): string {\n\treturn `interface RootLayoutProps {\n readonly children: import(\"react\").ReactNode;\n}\n\nexport default function RootLayout({ children }: RootLayoutProps) {\n return (\n <html lang=\"en\">\n <head>\n <meta charSet=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <title>Rakta.js App</title>\n </head>\n <body className=\"min-h-screen bg-[#050505] text-slate-50 antialiased\">\n {children}\n </body>\n </html>\n );\n}\n`;\n}\n\nfunction generateFrontendOnlyPage(_projectName: string): string {\n\treturn WELCOME_PAGE_CODE;\n}\n\nfunction generateFrontendOnlyLoading(): string {\n\treturn `export default function Loading() {\n return (\n <main className=\"flex min-h-screen items-center justify-center bg-[#050505] px-4\">\n <p className=\"text-sm font-medium text-slate-400\">Loading...</p>\n </main>\n );\n}\n`;\n}\n\nfunction generateFrontendOnlyError(): string {\n\treturn `interface ErrorPageProps {\n readonly error: Error;\n readonly reset: () => void;\n}\n\nexport default function ErrorPage({ error, reset }: ErrorPageProps) {\n return (\n <main className=\"mx-auto flex min-h-screen w-full max-w-3xl items-center px-4 py-16\">\n <section className=\"w-full rounded-3xl border border-white/10 bg-[#0e111a] p-8 shadow-2xl shadow-red-950/20\">\n <p className=\"mb-2 text-xs font-bold uppercase tracking-[0.3em] text-red-600\">\n ERROR\n </p>\n <h1 className=\"mb-3 text-3xl font-extrabold text-white\">\n Something went wrong\n </h1>\n <p className=\"mb-6 wrap-break-word text-sm leading-6 text-slate-400\">\n {error.message}\n </p>\n <button\n type=\"button\"\n onClick={reset}\n className=\"rounded-lg bg-red-600 px-6 py-2 font-semibold text-white transition hover:bg-red-700 active:bg-red-800 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-red-500\"\n >\n Try again\n </button>\n </section>\n </main>\n );\n}\n`;\n}\n\nfunction generateFrontendOnlyNotFound(): string {\n\treturn `export default function NotFound() {\n return (\n <main className=\"mx-auto flex min-h-screen w-full max-w-3xl items-center px-4 py-16\">\n <section className=\"w-full rounded-3xl border border-white/10 bg-[#0e111a] p-8 shadow-2xl shadow-red-950/20\">\n <p className=\"mb-2 text-xs font-bold uppercase tracking-[0.3em] text-red-600\">\n 404\n </p>\n <h1 className=\"mb-3 text-3xl font-extrabold text-white\">\n Page not found\n </h1>\n <p className=\"mb-6 text-sm leading-6 text-slate-400\">\n The page you are looking for does not exist.\n </p>\n <click\n to=\"/\"\n className=\"font-semibold text-red-500 underline-offset-4 transition hover:text-red-400 hover:underline\"\n >\n Return home\n </click>\n </section>\n </main>\n );\n}\n`;\n}\n\nfunction _generateShrimpMascotComponent(): string {\n\treturn `interface RaktaShrimpMascotProps {\n readonly isJumping: boolean;\n readonly isDead: boolean;\n readonly style?: import(\"react\").CSSProperties;\n}\n\n/**\n * RaktaShrimpMascot — The animated shrimp hero of ShrimpRun.\n * Drawn entirely with inline SVG. No external assets required.\n */\nexport default function RaktaShrimpMascot({\n isJumping,\n isDead,\n style,\n}: RaktaShrimpMascotProps) {\n const bodyColor = isDead ? \"#6b7280\" : \"#dc2626\";\n const eyeColor = isDead ? \"#374151\" : \"#fff\";\n const legAnimation =\n isJumping || isDead ? \"none\" : \"shrimpLegs 0.3s steps(2) infinite\";\n\n return (\n <svg\n viewBox=\"0 0 48 48\"\n width=\"48\"\n height=\"48\"\n style={{ display: \"block\", ...style }}\n aria-label={\n isDead ? \"dead shrimp\" : isJumping ? \"shrimp jumping\" : \"running shrimp\"\n }\n role=\"img\"\n >\n <style>{\\`\n @keyframes shrimpLegs {\n 0% { transform: translateY(0); }\n 50% { transform: translateY(2px); }\n }\n \\`}</style>\n\n {/* Body */}\n <path\n d=\"M8 30 Q10 14 24 12 Q38 10 40 22 Q42 32 32 36 Q20 40 8 30Z\"\n fill={bodyColor}\n />\n\n {/* Shell segments */}\n <path\n d=\"M12 28 Q16 20 24 18 Q30 17 34 22\"\n stroke=\"#b91c1c\"\n strokeWidth=\"1.5\"\n fill=\"none\"\n opacity={isDead ? 0.3 : 0.6}\n />\n <path\n d=\"M14 32 Q19 24 28 22 Q33 21 36 26\"\n stroke=\"#b91c1c\"\n strokeWidth=\"1.5\"\n fill=\"none\"\n opacity={isDead ? 0.3 : 0.6}\n />\n\n {/* Eye */}\n <circle cx=\"34\" cy=\"18\" r=\"4\" fill=\"#1e293b\" />\n <circle cx=\"35\" cy=\"17\" r=\"2\" fill={eyeColor} />\n\n {isDead && (\n <>\n <line\n x1=\"32\"\n y1=\"16\"\n x2=\"36\"\n y2=\"20\"\n stroke=\"#374151\"\n strokeWidth=\"1.5\"\n />\n <line\n x1=\"36\"\n y1=\"16\"\n x2=\"32\"\n y2=\"20\"\n stroke=\"#374151\"\n strokeWidth=\"1.5\"\n />\n </>\n )}\n\n {/* Antennae */}\n <line\n x1=\"34\"\n y1=\"14\"\n x2=\"40\"\n y2=\"6\"\n stroke={bodyColor}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"32\"\n y1=\"13\"\n x2=\"36\"\n y2=\"4\"\n stroke={bodyColor}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n\n {/* Tail */}\n <path\n d=\"M10 30 Q4 26 6 20\"\n stroke={bodyColor}\n strokeWidth=\"2\"\n fill=\"none\"\n strokeLinecap=\"round\"\n />\n <path\n d=\"M10 30 Q2 30 4 36\"\n stroke={bodyColor}\n strokeWidth=\"2\"\n fill=\"none\"\n strokeLinecap=\"round\"\n />\n <path\n d=\"M10 30 Q6 34 8 40\"\n stroke={bodyColor}\n strokeWidth=\"2\"\n fill=\"none\"\n strokeLinecap=\"round\"\n />\n\n {/* Legs */}\n <g\n style={{\n animation: legAnimation,\n transformOrigin: \"24px 36px\",\n }}\n >\n <line\n x1=\"18\"\n y1=\"36\"\n x2=\"14\"\n y2=\"44\"\n stroke={bodyColor}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"22\"\n y1=\"38\"\n x2=\"18\"\n y2=\"46\"\n stroke={bodyColor}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"26\"\n y1=\"38\"\n x2=\"24\"\n y2=\"46\"\n stroke={bodyColor}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n <line\n x1=\"30\"\n y1=\"37\"\n x2=\"28\"\n y2=\"45\"\n stroke={bodyColor}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </g>\n </svg>\n );\n}\n`;\n}\n\nfunction _generateShrimpRunGameComponent(): string {\n\treturn `import { useCallback, useEffect, useRef, useState } from \"react\";\nimport RaktaShrimpMascot from \"./raktaShrimpMascot\";\n// ─── Types ────────────────────────────────────────────────────────────────────\n\ntype GameStatus = \"idle\" | \"running\" | \"dead\";\n\ninterface ObstacleState {\n readonly id: number;\n readonly xPosition: number;\n readonly width: number;\n readonly height: number;\n}\n\ninterface ShrimpState {\n readonly yPosition: number;\n readonly velocityY: number;\n readonly isJumping: boolean;\n}\n\n// ─── Constants ────────────────────────────────────────────────────────────────\n\nconst CANVAS_WIDTH = 640;\nconst CANVAS_HEIGHT = 160;\nconst GROUND_STRIP_HEIGHT = 4;\nconst SHRIMP_START_X = 60;\nconst SHRIMP_WIDTH = 48;\nconst SHRIMP_HEIGHT = 48;\nconst GRAVITY = 1.4;\nconst JUMP_VELOCITY = -18;\nconst INITIAL_OBSTACLE_SPEED = 5;\nconst SPEED_INCREMENT_PER_SCORE = 0.003;\nconst OBSTACLE_SPAWN_INTERVAL_MS = 1600;\nconst SCORE_TICK_MS = 80;\nconst COLLISION_MARGIN = 8;\nconst MAX_CONCURRENT_OBSTACLES = 3;\nconst FRAME_SKIP_THRESHOLD_MS = 100;\n\n// ─── Physics helpers ──────────────────────────────────────────────────────────\n\nfunction getObstacleSpeed(currentScore: number): number {\n return INITIAL_OBSTACLE_SPEED + currentScore * SPEED_INCREMENT_PER_SCORE;\n}\n\nfunction checkCollision(\n shrimpYPosition: number,\n obstacle: ObstacleState,\n): boolean {\n const shrimpLeft = SHRIMP_START_X + COLLISION_MARGIN;\n const shrimpRight = SHRIMP_START_X + SHRIMP_WIDTH - COLLISION_MARGIN;\n const shrimpTop =\n CANVAS_HEIGHT -\n GROUND_STRIP_HEIGHT -\n shrimpYPosition -\n SHRIMP_HEIGHT +\n COLLISION_MARGIN;\n const shrimpBottom = CANVAS_HEIGHT - GROUND_STRIP_HEIGHT - shrimpYPosition;\n\n const obstacleLeft = obstacle.xPosition + COLLISION_MARGIN;\n const obstacleRight = obstacle.xPosition + obstacle.width - COLLISION_MARGIN;\n const obstacleTop = CANVAS_HEIGHT - GROUND_STRIP_HEIGHT - obstacle.height;\n const obstacleBottom = CANVAS_HEIGHT - GROUND_STRIP_HEIGHT;\n\n return (\n shrimpLeft < obstacleRight &&\n shrimpRight > obstacleLeft &&\n shrimpTop < obstacleBottom &&\n shrimpBottom > obstacleTop\n );\n}\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\n/**\n * ShrimpRun — Default Rakta.js interactive starter game.\n *\n * Like the Chrome offline Dino game, but the dinosaur is an animated shrimp.\n * Press Space or click the game canvas to jump. Avoid the red obstacles!\n *\n * Features:\n * - React state only — no external game library\n * - requestAnimationFrame game loop\n * - Physics: gravity + jump velocity\n * - Score that increases over time\n * - Speed ramps up as score grows\n * - Collision detection with margin\n * - High score tracked in component state\n * - Keyboard (Space) and click/tap support\n * - Accessible button game canvas\n * - SVG shrimp mascot — no external assets\n */\nexport default function ShrimpRunGame() {\n const [gameStatus, setGameStatus] = useState<GameStatus>(\"idle\");\n const [score, setScore] = useState(0);\n const [highScore, setHighScore] = useState(0);\n const [obstacles, setObstacles] = useState<ObstacleState[]>([]);\n const [shrimp, setShrimp] = useState<ShrimpState>({\n yPosition: 0,\n velocityY: 0,\n isJumping: false,\n });\n\n const gameStatusRef = useRef<GameStatus>(\"idle\");\n const scoreRef = useRef(0);\n const shrimpRef = useRef<ShrimpState>({\n yPosition: 0,\n velocityY: 0,\n isJumping: false,\n });\n const obstaclesRef = useRef<ObstacleState[]>([]);\n const obstacleIdRef = useRef(0);\n const animationFrameRef = useRef<number>(0);\n const lastObstacleTimeRef = useRef(0);\n const lastScoreTickRef = useRef(0);\n\n const jump = useCallback((): void => {\n if (gameStatusRef.current === \"dead\") {\n return;\n }\n\n if (gameStatusRef.current === \"idle\") {\n gameStatusRef.current = \"running\";\n setGameStatus(\"running\");\n }\n\n if (!shrimpRef.current.isJumping) {\n const nextShrimp: ShrimpState = {\n ...shrimpRef.current,\n velocityY: JUMP_VELOCITY,\n isJumping: true,\n };\n\n shrimpRef.current = nextShrimp;\n setShrimp(nextShrimp);\n }\n }, []);\n\n const resetGame = useCallback((): void => {\n const freshShrimp: ShrimpState = {\n yPosition: 0,\n velocityY: 0,\n isJumping: false,\n };\n\n shrimpRef.current = freshShrimp;\n obstaclesRef.current = [];\n obstacleIdRef.current = 0;\n scoreRef.current = 0;\n gameStatusRef.current = \"idle\";\n lastObstacleTimeRef.current = 0;\n lastScoreTickRef.current = 0;\n\n setShrimp(freshShrimp);\n setObstacles([]);\n setScore(0);\n setGameStatus(\"idle\");\n }, []);\n\n useEffect(() => {\n let previousTimestamp = 0;\n\n function gameTick(timestamp: number): void {\n if (gameStatusRef.current !== \"running\") {\n animationFrameRef.current = requestAnimationFrame(gameTick);\n return;\n }\n\n const deltaTime = timestamp - previousTimestamp;\n previousTimestamp = timestamp;\n\n if (deltaTime > FRAME_SKIP_THRESHOLD_MS) {\n animationFrameRef.current = requestAnimationFrame(gameTick);\n return;\n }\n\n const currentShrimp = shrimpRef.current;\n let nextVelocityY = currentShrimp.velocityY + GRAVITY;\n let nextYPosition = currentShrimp.yPosition - nextVelocityY;\n\n if (nextYPosition <= 0) {\n nextYPosition = 0;\n nextVelocityY = 0;\n }\n\n const nextShrimp: ShrimpState = {\n yPosition: nextYPosition,\n velocityY: nextVelocityY,\n isJumping: nextYPosition > 0,\n };\n\n shrimpRef.current = nextShrimp;\n setShrimp(nextShrimp);\n\n const obstacleSpeed = getObstacleSpeed(scoreRef.current);\n\n const movedObstacles = obstaclesRef.current\n .map(\n (obstacle): ObstacleState => ({\n ...obstacle,\n xPosition: obstacle.xPosition - obstacleSpeed,\n }),\n )\n .filter((obstacle) => obstacle.xPosition + obstacle.width > -10);\n\n if (\n timestamp - lastObstacleTimeRef.current > OBSTACLE_SPAWN_INTERVAL_MS &&\n movedObstacles.length < MAX_CONCURRENT_OBSTACLES\n ) {\n const obstacleHeight = 30 + Math.floor(Math.random() * 30);\n const obstacleWidth = 20 + Math.floor(Math.random() * 20);\n\n movedObstacles.push({\n id: obstacleIdRef.current,\n xPosition: CANVAS_WIDTH + 20,\n width: obstacleWidth,\n height: obstacleHeight,\n });\n\n obstacleIdRef.current += 1;\n lastObstacleTimeRef.current = timestamp;\n }\n\n obstaclesRef.current = movedObstacles;\n setObstacles([...movedObstacles]);\n\n for (const obstacle of movedObstacles) {\n if (checkCollision(nextShrimp.yPosition, obstacle)) {\n gameStatusRef.current = \"dead\";\n setGameStatus(\"dead\");\n setHighScore((previousHighScore: number) =>\n Math.max(previousHighScore, scoreRef.current),\n );\n animationFrameRef.current = requestAnimationFrame(gameTick);\n return;\n }\n }\n\n if (timestamp - lastScoreTickRef.current > SCORE_TICK_MS) {\n scoreRef.current += 1;\n setScore(scoreRef.current);\n lastScoreTickRef.current = timestamp;\n }\n\n animationFrameRef.current = requestAnimationFrame(gameTick);\n }\n\n animationFrameRef.current = requestAnimationFrame(gameTick);\n\n return () => {\n cancelAnimationFrame(animationFrameRef.current);\n };\n }, []);\n\n useEffect(() => {\n function handleKeyDown(keyboardEvent: KeyboardEvent): void {\n if (keyboardEvent.code === \"Space\") {\n keyboardEvent.preventDefault();\n jump();\n }\n }\n\n window.addEventListener(\"keydown\", handleKeyDown);\n\n return () => {\n window.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [jump]);\n\n const shrimpBottomOffset = GROUND_STRIP_HEIGHT + shrimp.yPosition;\n const isDead = gameStatus === \"dead\";\n const isIdle = gameStatus === \"idle\";\n const isRunning = gameStatus === \"running\";\n\n return (\n <div className=\"flex flex-col items-start gap-4 py-4\">\n <div className=\"flex flex-wrap items-center gap-8\">\n <span className=\"font-mono text-xl font-bold tabular-nums text-red-600\">\n Score: {score}\n </span>\n {highScore > 0 && (\n <span className=\"text-sm text-slate-400\">Best: {highScore}</span>\n )}\n </div>\n\n <button\n type=\"button\"\n className=\"relative block max-w-full cursor-pointer select-none overflow-hidden rounded-2xl border-2 border-red-600/30 bg-[#0e111a] p-0 text-left focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-red-500\"\n aria-label=\"ShrimpRun game area. Click or press Space to jump.\"\n onClick={jump}\n onKeyDown={(keyboardEvent: import(\"react\").KeyboardEvent) => {\n if (keyboardEvent.code === \"Space\") {\n keyboardEvent.preventDefault();\n jump();\n }\n }}\n style={{\n width: CANVAS_WIDTH,\n height: CANVAS_HEIGHT,\n }}\n >\n <span\n className=\"absolute bottom-0 left-0 w-full rounded-sm bg-red-600\"\n style={{\n height: GROUND_STRIP_HEIGHT,\n }}\n />\n\n <span\n className=\"absolute shrimp-sprite\"\n style={{\n left: SHRIMP_START_X,\n bottom: shrimpBottomOffset,\n width: SHRIMP_WIDTH,\n height: SHRIMP_HEIGHT,\n transform: isDead\n ? \"rotate(18deg) translateY(8px)\"\n : shrimp.isJumping\n ? \"rotate(-8deg) translateY(-4px)\"\n : \"rotate(0deg)\",\n transition: \"transform 120ms ease\",\n }}\n >\n <RaktaShrimpMascot isJumping={shrimp.isJumping} isDead={isDead} />\n </span>\n\n {obstacles.map((obstacle) => (\n <span\n key={obstacle.id}\n className=\"absolute shrimp-run-obstacle\"\n style={{\n left: obstacle.xPosition,\n bottom: GROUND_STRIP_HEIGHT,\n width: obstacle.width,\n height: obstacle.height,\n }}\n />\n ))}\n\n {isIdle && (\n <span className=\"pointer-events-none absolute inset-0 flex items-center justify-center text-sm text-slate-400\">\n Press Space or click to start\n </span>\n )}\n\n {isDead && (\n <span className=\"absolute inset-0 flex flex-col items-center justify-center gap-2 bg-black/75\">\n <span className=\"text-lg font-bold tracking-widest text-red-600\">\n GAME OVER\n </span>\n <span className=\"text-sm text-slate-400\">Score: {score}</span>\n </span>\n )}\n\n {isRunning && score > 0 && score % 50 === 0 && (\n <span className=\"absolute right-3 top-2 text-xs font-bold tracking-widest text-red-600 opacity-80\">\n {score}!\n </span>\n )}\n </button>\n\n <p className=\"min-h-5 text-sm text-slate-400\">\n {isIdle && \"🦐 Click or press Space to make the shrimp jump!\"}\n {isRunning && \"🦐 Don't hit the obstacles!\"}\n {isDead && \"The shrimp got cooked. Try again!\"}\n </p>\n\n {isDead && (\n <button\n type=\"button\"\n className=\"w-fit rounded-lg bg-red-600 px-6 py-2 font-semibold text-white transition hover:bg-red-700 active:bg-red-800 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-red-500\"\n onClick={resetGame}\n >\n Restart\n </button>\n )}\n </div>\n );\n}\n`;\n}\n\nfunction generateFullstackHomePage(_projectName: string): string {\n\treturn WELCOME_PAGE_CODE;\n}\n\n// ─── Database helpers ─────────────────────────────────────────────────────────\n\nfunction getDatabaseDependencies(\n\tselectedDatabase: Database,\n): Record<string, string> {\n\tswitch (selectedDatabase) {\n\t\tcase \"postgresql\":\n\t\t\treturn { postgres: \"^3.4.4\" };\n\t\tcase \"mysql\":\n\t\tcase \"mariadb\":\n\t\t\treturn { mysql2: \"^3.9.8\" };\n\t\tcase \"mongodb\":\n\t\t\treturn { mongodb: \"^6.8.0\" };\n\t\tcase \"firebase\":\n\t\t\treturn { \"firebase-admin\": \"^12.7.0\" };\n\t\tcase \"sqlite\":\n\t\t\treturn {};\n\t\tcase \"redis\":\n\t\t\treturn { ioredis: \"^5.4.1\" };\n\t\tcase \"planetscale\":\n\t\t\treturn { \"@planetscale/database\": \"^1.18.0\" };\n\t\tcase \"neon\":\n\t\t\treturn { \"@neondatabase/serverless\": \"^0.9.4\" };\n\t\tcase \"turso\":\n\t\t\treturn { \"@libsql/client\": \"^0.6.2\" };\n\t\tdefault:\n\t\t\treturn {};\n\t}\n}\n\nfunction getDatabaseConfig(selectedDatabase: Database): string {\n\tswitch (selectedDatabase) {\n\t\tcase \"sqlite\":\n\t\t\treturn `export const databaseConfig = {\\n path: process.env[\"DATABASE_PATH\"] ?? \"./database.sqlite\",\\n provider: \"sqlite\" as const,\\n} as const;\\n`;\n\t\tcase \"firebase\":\n\t\t\treturn `export const databaseConfig = {\\n projectId: process.env[\"FIREBASE_PROJECT_ID\"] ?? \"\",\\n clientEmail: process.env[\"FIREBASE_CLIENT_EMAIL\"] ?? \"\",\\n privateKey: process.env[\"FIREBASE_PRIVATE_KEY\"]?.replace(/\\\\\\\\\\\\\\\\n/g, \"\\\\\\\\n\") ?? \"\",\\n databaseUrl: process.env[\"FIREBASE_DATABASE_URL\"] ?? \"\",\\n provider: \"firebase\" as const,\\n} as const;\\n`;\n\t\tcase \"turso\":\n\t\t\treturn `export const databaseConfig = {\\n url: process.env[\"TURSO_DATABASE_URL\"] ?? \"\",\\n authToken: process.env[\"TURSO_AUTH_TOKEN\"] ?? \"\",\\n provider: \"turso\" as const,\\n} as const;\\n`;\n\t\tdefault:\n\t\t\treturn `import { env } from \"../env\";\\n\\nexport const databaseConfig = {\\n url: env.databaseUrl,\\n provider: \"${selectedDatabase}\" as const,\\n} as const;\\n`;\n\t}\n}\n\nfunction getDatabaseClient(selectedDatabase: Database): string {\n\tswitch (selectedDatabase) {\n\t\tcase \"postgresql\":\n\t\t\treturn `import postgres from \"postgres\";\\nimport { databaseConfig } from \"../config/database.config\";\\n\\nexport const sql = databaseConfig.url ? postgres(databaseConfig.url) : null;\\n`;\n\t\tcase \"mysql\":\n\t\tcase \"mariadb\":\n\t\t\treturn `import mysql from \"mysql2/promise\";\\nimport { databaseConfig } from \"../config/database.config\";\\n\\nexport const pool = databaseConfig.url\\n ? mysql.createPool({ uri: databaseConfig.url, connectionLimit: 10 })\\n : null;\\n`;\n\t\tcase \"mongodb\":\n\t\t\treturn `import { MongoClient } from \"mongodb\";\\nimport { databaseConfig } from \"../config/database.config\";\\n\\nexport const mongoClient = databaseConfig.url\\n ? new MongoClient(databaseConfig.url)\\n : null;\\n`;\n\t\tcase \"firebase\":\n\t\t\treturn `import { cert, getApps, initializeApp } from \"firebase-admin/app\";\\nimport { getFirestore } from \"firebase-admin/firestore\";\\nimport { databaseConfig } from \"../config/database.config\";\\n\\nconst credentialReady =\\n databaseConfig.projectId.length > 0 &&\\n databaseConfig.clientEmail.length > 0 &&\\n databaseConfig.privateKey.length > 0;\\n\\nexport const firebaseApp = getApps()[0] ?? initializeApp(\\n credentialReady\\n ? {\\n credential: cert({\\n projectId: databaseConfig.projectId,\\n clientEmail: databaseConfig.clientEmail,\\n privateKey: databaseConfig.privateKey,\\n }),\\n databaseURL: databaseConfig.databaseUrl || undefined,\\n }\\n : undefined\\n);\\n\\nexport const firestore = getFirestore(firebaseApp);\\n`;\n\t\tcase \"sqlite\":\n\t\t\treturn `import { Database } from \"bun:sqlite\";\\nimport { databaseConfig } from \"../config/database.config\";\\n\\nexport const db = new Database(databaseConfig.path, { create: true });\\n`;\n\t\tcase \"redis\":\n\t\t\treturn `import Redis from \"ioredis\";\\nimport { databaseConfig } from \"../config/database.config\";\\n\\nexport const redis = databaseConfig.url ? new Redis(databaseConfig.url) : null;\\n`;\n\t\tcase \"planetscale\":\n\t\t\treturn `import { connect } from \"@planetscale/database\";\\nimport { databaseConfig } from \"../config/database.config\";\\n\\nexport const connection = databaseConfig.url\\n ? connect({ url: databaseConfig.url })\\n : null;\\n`;\n\t\tcase \"neon\":\n\t\t\treturn `import { neon } from \"@neondatabase/serverless\";\\nimport { databaseConfig } from \"../config/database.config\";\\n\\nexport const sql = databaseConfig.url ? neon(databaseConfig.url) : null;\\n`;\n\t\tcase \"turso\":\n\t\t\treturn `import { createClient } from \"@libsql/client\";\\nimport { databaseConfig } from \"../config/database.config\";\\n\\nexport const db =\\n databaseConfig.url && databaseConfig.authToken\\n ? createClient({ url: databaseConfig.url, authToken: databaseConfig.authToken })\\n : null;\\n`;\n\t\tdefault:\n\t\t\treturn `export const databaseClient = null;\\n`;\n\t}\n}\n\nfunction getDatabaseEnvExample(selectedDatabase: Database): string {\n\tconst baseEnv = `NODE_ENV=development\\nPORT=4000\\nCORS_ORIGIN=http://localhost:3000\\n`;\n\n\tswitch (selectedDatabase) {\n\t\tcase \"postgresql\":\n\t\t\treturn `${baseEnv}DATABASE_URL=postgresql://user:password@localhost:5432/dbname\\n`;\n\t\tcase \"mysql\":\n\t\t\treturn `${baseEnv}DATABASE_URL=mysql://user:password@localhost:3306/dbname\\n`;\n\t\tcase \"mariadb\":\n\t\t\treturn `${baseEnv}DATABASE_URL=mysql://user:password@localhost:3306/dbname\\n`;\n\t\tcase \"mongodb\":\n\t\t\treturn `${baseEnv}DATABASE_URL=mongodb://localhost:27017/dbname\\n`;\n\t\tcase \"firebase\":\n\t\t\treturn `${baseEnv}FIREBASE_PROJECT_ID=your-project-id\\nFIREBASE_CLIENT_EMAIL=firebase-adminsdk@your-project.iam.gserviceaccount.com\\nFIREBASE_PRIVATE_KEY=\"-----BEGIN PRIVATE KEY-----\\\\nyour-key\\\\n-----END PRIVATE KEY-----\\\\n\"\\nFIREBASE_DATABASE_URL=https://your-project.firebaseio.com\\n`;\n\t\tcase \"sqlite\":\n\t\t\treturn `${baseEnv}DATABASE_PATH=./database.sqlite\\n`;\n\t\tcase \"redis\":\n\t\t\treturn `${baseEnv}DATABASE_URL=redis://localhost:6379\\n`;\n\t\tcase \"planetscale\":\n\t\t\treturn `${baseEnv}DATABASE_URL=mysql://user:password@aws.connect.psdb.cloud/dbname\\n`;\n\t\tcase \"neon\":\n\t\t\treturn `${baseEnv}DATABASE_URL=postgresql://user:password@ep-xxx.neon.tech/neondb?sslmode=require\\n`;\n\t\tcase \"turso\":\n\t\t\treturn `${baseEnv}TURSO_DATABASE_URL=libsql://your-db.turso.io\\nTURSO_AUTH_TOKEN=your-auth-token\\n`;\n\t\tdefault:\n\t\t\treturn `${baseEnv}DATABASE_URL=\\n`;\n\t}\n}\n\n// ─── README ──────────────────────────────────────────────────────────────────\n\nfunction generateProjectReadme(projectConfig: ProjectConfig): string {\n\tconst { projectName, projectMode } = projectConfig;\n\n\tif (projectMode === \"frontend-only\") {\n\t\treturn `# ${projectName}\\n\\nBuilt with Rakta.js — Small in size. Fierce in speed. Alive in every route.\\n\\n## Stack\\n\\n| Layer | Technology |\\n| --- | --- |\\n| Frontend | Rakta.js + React + TypeScript |\\n| CSS | ${CSS_DISPLAY[projectConfig.cssFramework]} |\\n| Runtime | Bun |\\n\\n## Run\\n\\n\\`\\`\\`bash\\nbun install\\nbun run dev\\n\\`\\`\\`\\n\\n## ShrimpRun\\n\\nYour starter includes ShrimpRun — an interactive game where a shrimp dodges obstacles. Press Space or click to jump!\\n`;\n\t}\n\n\treturn `# ${projectName}\\n\\nBuilt with Rakta.js — Small in size. Fierce in speed. Alive in every route.\\n\\n## Stack\\n\\n| Layer | Technology |\\n| --- | --- |\\n| Frontend | Rakta.js + React + TypeScript |\\n| CSS | ${CSS_DISPLAY[projectConfig.cssFramework]} |\\n| Backend | ${BACKEND_DISPLAY[projectConfig.backendFramework]} |\\n| Database | ${DATABASE_DISPLAY[projectConfig.database]} |\\n| Runtime | Bun |\\n\\n## Run\\n\\n\\`\\`\\`bash\\nbun install\\n\\n# Terminal 1\\nbun run dev:frontend\\n\\n# Terminal 2\\nbun run dev:backend\\n\\`\\`\\`\\n\\n## Endpoints\\n\\n- Frontend: http://localhost:3000\\n- Backend: http://localhost:4000\\n`;\n}\n\n// ─── Main export ─────────────────────────────────────────────────────────────\n\nexport function generateProjectFiles(\n\tprojectConfig: ProjectConfig,\n): ProjectFile[] {\n\tif (projectConfig.projectMode === \"frontend-only\") {\n\t\treturn [\n\t\t\t...getRootFiles(projectConfig),\n\t\t\t...getFrontendOnlyFiles(projectConfig),\n\t\t];\n\t}\n\n\treturn [\n\t\t...getRootFiles(projectConfig),\n\t\t...getFullstackFrontendFiles(projectConfig),\n\t\t...getBackendFiles(projectConfig),\n\t\t...getSharedFiles(projectConfig),\n\t];\n}\n",
17
+ "export type CssFramework = \"tailwind\" | \"bootstrap\" | \"sass\" | \"none\";\n\nexport type BackendFramework = \"gaman\" | \"express\" | \"nest\" | \"adonis\";\n\nexport type Database =\n\t| \"postgresql\"\n\t| \"mysql\"\n\t| \"mongodb\"\n\t| \"firebase\"\n\t| \"sqlite\"\n\t| \"mariadb\"\n\t| \"redis\"\n\t| \"planetscale\"\n\t| \"neon\"\n\t| \"turso\";\n\nexport type RenderMode = \"csr\" | \"ssr\" | \"ssg\" | \"csg\" | \"spa\" | \"hybrid\";\n\nexport type ProjectMode = \"fullstack\" | \"frontend-only\";\n\nexport interface ProjectFile {\n\treadonly path: string;\n\treadonly content: string | Uint8Array;\n}\n\nexport interface ProjectConfig {\n\treadonly projectName: string;\n\treadonly projectMode: ProjectMode;\n\treadonly useTypeScript: boolean;\n\treadonly cssFramework: CssFramework;\n\treadonly renderMode: RenderMode;\n\treadonly backendFramework: BackendFramework;\n\treadonly database: Database;\n}\n\nexport const CSS_DISPLAY: Record<CssFramework, string> = {\n\ttailwind: \"Tailwind CSS\",\n\tbootstrap: \"Bootstrap\",\n\tsass: \"SASS\",\n\tnone: \"None\",\n};\n\nexport const BACKEND_DISPLAY: Record<BackendFramework, string> = {\n\tgaman: \"Gaman.js\",\n\texpress: \"Express.js\",\n\tnest: \"Nest.js\",\n\tadonis: \"Adonis.js\",\n};\n\nexport const DATABASE_DISPLAY: Record<Database, string> = {\n\tpostgresql: \"PostgreSQL\",\n\tmysql: \"MySQL\",\n\tmongodb: \"MongoDB\",\n\tfirebase: \"Firebase\",\n\tsqlite: \"SQLite\",\n\tmariadb: \"MariaDB\",\n\tredis: \"Redis\",\n\tplanetscale: \"PlanetScale\",\n\tneon: \"Neon\",\n\tturso: \"Turso\",\n};\n\nexport const RENDER_MODE_DISPLAY: Record<RenderMode, string> = {\n\tcsr: \"CSR — Client-Side Rendering\",\n\tssr: \"SSR — Server-Side Rendering\",\n\tssg: \"SSG — Static Site Generation\",\n\tcsg: \"CSG — Configurable Static Generation\",\n\tspa: \"SPA — Single Page Application\",\n\thybrid: \"Hybrid — Mixed per-route\",\n};\n\nexport const PROJECT_MODE_DISPLAY: Record<ProjectMode, string> = {\n\tfullstack: \"Fullstack app (frontend + backend + database)\",\n\t\"frontend-only\": \"Frontend only (no backend, no database)\",\n};\n",
18
+ "export const COMPONENTS_MODAL_CODE = `import React, { useState } from 'react';\nimport { LuX as X, LuCopy as Copy, LuCheck as Check, LuCode as Code, LuCpu as Cpu } from 'react-icons/lu';\nimport { motion } from 'motion/react';\n// import { playJumpSound, playScoreSound } from '../utils/audio'; // Removed to prevent error if not exists\n\ninterface ComponentsModalProps {\n isOpen: boolean;\n onClose: () => void;\n}\n\ninterface ComponentItem {\n id: string;\n name: string;\n description: string;\n preview: (state: any, setState: any) => React.ReactNode;\n code: string;\n}\n\nconst BRUTALIST_COMPONENTS: ComponentItem[] = [\n {\n id: 'button',\n name: 'Brutalist Button',\n description: 'A solid, high-contrast action trigger with raw borders and active scaling.',\n code: \\`<button class=\"bg-rose-600 hover:bg-white text-white hover:text-black px-6 py-3 font-mono text-xs font-bold uppercase transition-all duration-150 border border-transparent hover:border-black active:scale-95 shadow-[4px_4px_0px_0px_rgba(255,255,255,0.25)]\">\n TRIGGER PIPELINE\n</button>\\`,\n preview: (state, setState) => (\n <button \n onClick={() => {\n setState({ ...state, clickCount: (state.clickCount || 0) + 1 });\n }}\n className=\"bg-brand-pink hover:bg-white text-white hover:text-black px-6 py-3 font-mono text-xs font-bold uppercase transition-all duration-150 border border-transparent hover:border-black active:scale-95 shadow-[4px_4px_0px_0px_rgba(255,255,255,0.25)] cursor-pointer\"\n >\n TRIGGER PIPELINE ({state.clickCount || 0})\n </button>\n )\n },\n {\n id: 'badge',\n name: 'Performance Badge',\n description: 'A high-visibility mono badge with a pulsing live status indicator.',\n code: \\`<div class=\"flex items-center gap-2 border border-emerald-500/30 bg-emerald-950/20 px-3 py-1 font-mono text-xs text-emerald-400\">\n <span class=\"w-1.5 h-1.5 bg-emerald-500 rounded-full animate-ping\"></span>\n OPERATIONAL :: 100%\n</div>\\`,\n preview: (state, setState) => (\n <div className=\"flex items-center gap-2 border border-emerald-500/30 bg-emerald-950/20 px-3 py-1.5 font-mono text-xs text-emerald-400\">\n <span className=\"relative flex h-2 w-2\">\n <span className=\"animate-ping absolute inline-flex h-full w-full rounded-full bg-emerald-400 opacity-75\"></span>\n <span className=\"relative inline-flex rounded-full h-2 w-2 bg-emerald-500\"></span>\n </span>\n OPERATIONAL :: 100%\n </div>\n )\n },\n {\n id: 'switch',\n name: 'Monochrome Toggle',\n description: 'A structural, rectangular switch that flips states with tactile audio feedback.',\n code: \\`<button class=\"flex items-center border border-white p-1 w-16 h-8 bg-zinc-900\">\n <div class=\"w-6 h-6 bg-white transition-all transform translate-x-8\"></div>\n</button>\\`,\n preview: (state, setState) => {\n const isChecked = state.isChecked ?? false;\n const handleToggle = () => {\n setState({ ...state, isChecked: !isChecked });\n };\n return (\n <div className=\"flex items-center gap-4\">\n <button \n onClick={handleToggle}\n className={\\`flex items-center border-2 border-white p-0.5 w-16 h-8 transition-colors cursor-pointer \\${isChecked ? 'bg-brand-pink' : 'bg-zinc-900'}\\`}\n >\n <div className={\\`w-6 h-6 bg-white transition-transform \\${isChecked ? 'translate-x-8' : 'translate-x-0'}\\`}></div>\n </button>\n <span className=\"font-mono text-xs uppercase text-gray-400\">\n STATE: <span className=\"text-white font-bold\">{isChecked ? 'ENABLED' : 'DISABLED'}</span>\n </span>\n </div>\n );\n }\n },\n {\n id: 'slider',\n name: 'Frequency Slider',\n description: 'A pixelated level adjuster with raw visual increments.',\n code: \\`<div class=\"w-full max-w-xs font-mono\">\n <input type=\"range\" class=\"accent-rose-600 bg-zinc-800 h-2 w-full border border-zinc-700 appearance-none cursor-pointer\" />\n</div>\\`,\n preview: (state, setState) => {\n const value = state.sliderVal ?? 60;\n return (\n <div className=\"w-full max-w-sm font-mono text-xs\">\n <div className=\"flex justify-between mb-2\">\n <span className=\"text-gray-400 uppercase\">SYS_SPEED</span>\n <span className=\"text-brand-green font-bold\">{value} MHz</span>\n </div>\n <input \n type=\"range\" \n min=\"10\"\n max=\"200\"\n value={value}\n onChange={(e) => setState({ ...state, sliderVal: parseInt(e.target.value) })}\n className=\"accent-brand-pink bg-zinc-900 h-2 w-full border border-zinc-700 appearance-none cursor-pointer\" \n />\n <div className=\"flex justify-between mt-1 text-[9px] text-gray-600\">\n <span>MIN</span>\n <span>MID_GRID</span>\n <span>MAX</span>\n </div>\n </div>\n );\n }\n },\n {\n id: 'input',\n name: 'Brutalist Input',\n description: 'Minimal text box with bright validation focus indicators.',\n code: \\`<div class=\"relative font-mono\">\n <input type=\"text\" placeholder=\"ENTER NODE NAME...\" class=\"bg-black border border-zinc-700 focus:border-rose-600 text-white px-4 py-2 w-full outline-none\" />\n</div>\\`,\n preview: (state, setState) => {\n const text = state.inputValue ?? '';\n return (\n <div className=\"w-full max-w-xs font-mono text-xs\">\n <label className=\"block text-gray-500 uppercase mb-1.5\">Node Configuration</label>\n <input \n type=\"text\" \n placeholder=\"ENTER NODE NAME...\"\n value={text}\n onChange={(e) => setState({ ...state, inputValue: e.target.value })}\n className=\"bg-black border border-zinc-700 focus:border-brand-pink text-white px-4 py-2 w-full outline-none\" \n />\n {text && (\n <p className=\"text-[10px] text-brand-green mt-1\">✓ Validating: {text.toUpperCase()}.local</p>\n )}\n </div>\n );\n }\n }\n];\n\nexport default function ComponentsModal({ isOpen, onClose }: ComponentsModalProps) {\n const [activeCompId, setActiveCompId] = useState('button');\n const [componentStates, setComponentStates] = useState<Record<string, any>>({});\n const [copiedId, setCopiedId] = useState<string | null>(null);\n\n if (!isOpen) return null;\n\n const activeComp = (BRUTALIST_COMPONENTS.find(c => c.id === activeCompId) || BRUTALIST_COMPONENTS[0])!;\n const activeState = componentStates[activeCompId] || {};\n\n const handleSetState = (newState: any) => {\n setComponentStates({\n ...componentStates,\n [activeCompId]: newState\n });\n };\n\n const handleCopyCode = (code: string) => {\n navigator.clipboard.writeText(code);\n setCopiedId(activeCompId);\n setTimeout(() => setCopiedId(null), 2000);\n };\n\n return (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/85 backdrop-blur-sm\" id=\"components-modal-container\">\n <motion.div \n initial={{ opacity: 0, scale: 0.95, y: 15 }}\n animate={{ opacity: 1, scale: 1, y: 0 }}\n exit={{ opacity: 0, scale: 0.95, y: 15 }}\n transition={{ duration: 0.2 }}\n className=\"w-full max-w-4xl h-[75vh] bg-black border-2 border-white flex flex-col relative\"\n >\n <div className=\"flex items-center justify-between border-b border-white p-5\">\n <div className=\"flex items-center gap-3\">\n <Cpu className=\"w-5 h-5 text-rose-500\" />\n <h2 className=\"text-xl font-bold font-mono tracking-tight uppercase\">\n Rakta <span className=\"text-rose-500\">Component Library</span>\n </h2>\n </div>\n <button \n onClick={onClose}\n className=\"p-2 border border-white hover:bg-rose-500 hover:text-white transition-colors cursor-pointer\"\n >\n <X className=\"w-5 h-5\" />\n </button>\n </div>\n\n <div className=\"flex-1 flex flex-col md:flex-row overflow-hidden\">\n <div className=\"w-full md:w-56 border-r border-white overflow-y-auto bg-[#080808] divide-y divide-white/20\">\n {BRUTALIST_COMPONENTS.map((comp) => {\n const isSelected = comp.id === activeCompId;\n return (\n <button\n key={comp.id}\n onClick={() => setActiveCompId(comp.id)}\n className={\\`w-full text-left p-4 transition-colors font-mono text-xs uppercase cursor-pointer \\${\n isSelected \n ? 'bg-rose-500 text-white font-bold' \n : 'text-gray-400 hover:bg-white/5 hover:text-white'\n }\\`}\n >\n {comp.name}\n </button>\n );\n })}\n </div>\n\n <div className=\"flex-1 flex flex-col overflow-y-auto bg-black p-6 md:p-8\">\n <div className=\"mb-6\">\n <h3 className=\"text-xl font-bold text-white uppercase font-mono tracking-tight\">{activeComp.name}</h3>\n <p className=\"text-sm text-gray-400 mt-1\">{activeComp.description}</p>\n </div>\n\n <div className=\"border border-white/30 bg-[#050505] p-12 flex items-center justify-center min-h-[160px] relative\">\n <span className=\"absolute top-2 left-2 text-[8px] font-mono text-gray-600 uppercase tracking-widest\">LIVE PLAYGROUND</span>\n {activeComp.preview(activeState, handleSetState)}\n </div>\n\n <div className=\"mt-8 flex-1 flex flex-col min-h-[150px]\">\n <div className=\"flex items-center justify-between bg-zinc-900 border-t border-x border-white/20 px-4 py-2\">\n <span className=\"text-[10px] font-mono text-gray-500 uppercase tracking-widest flex items-center gap-1.5\">\n <Code className=\"w-3.5 h-3.5\" /> HTML/Tailwind Markup\n </span>\n <button\n onClick={() => handleCopyCode(activeComp.code)}\n className=\"flex items-center gap-1.5 text-[10px] font-mono text-rose-500 hover:text-white transition-colors cursor-pointer\"\n >\n {copiedId === activeComp.id ? (\n <>\n <Check className=\"w-3.5 h-3.5 text-green-500\" /> COPIED!\n </>\n ) : (\n <>\n <Copy className=\"w-3.5 h-3.5\" /> COPY TO CLIPBOARD\n </>\n )}\n </button>\n </div>\n <pre className=\"flex-1 bg-zinc-950 border border-white/20 p-4 font-mono text-xs text-green-400 overflow-x-auto whitespace-pre leading-5 select-all\">\n <code>{activeComp.code}</code>\n </pre>\n </div>\n </div>\n </div>\n </motion.div>\n </div>\n );\n}\n`;\n\nexport const CORAL_OBSTACLE_CODE = `import React from 'react';\n\ninterface CoralObstacleProps {\n position: 'TOP' | 'BOTTOM';\n height: number;\n width?: number;\n paletteIndex?: number;\n variant?: number;\n scaleX?: number;\n}\n\nexport default function CoralObstacle({ \n position, \n height, \n width = 64,\n paletteIndex = 0, \n variant = 0, \n scaleX = 1 \n}: CoralObstacleProps) {\n const palettes = [\n { primary: '#f43f5e', secondary: '#fda4af', shadow: '#9f1239', polyps: '#ffe4e6', name: 'rose' },\n { primary: '#06b6d4', secondary: '#67e8f9', shadow: '#155e75', polyps: '#ecfeff', name: 'cyan' },\n { primary: '#a855f7', secondary: '#d8b4fe', shadow: '#581c87', polyps: '#faf5ff', name: 'amethyst' },\n { primary: '#f59e0b', secondary: '#fde047', shadow: '#78350f', polyps: '#fefce8', name: 'amber' },\n { primary: '#10b981', secondary: '#6ee7b7', shadow: '#065f46', polyps: '#e6fffa', name: 'emerald' },\n ];\n const palette = palettes[paletteIndex % palettes.length]!;\n\n return (\n <div \n className=\"absolute flex items-center justify-center pointer-events-none\"\n style={{ height: \\`\\${height}px\\`, width: \\`\\${width}px\\`, transform: \\`scaleX(\\${scaleX})\\` }}\n >\n <svg \n viewBox=\"0 0 80 120\" \n className=\"w-full h-full drop-shadow-[0_6px_14px_rgba(0,0,0,0.7)]\"\n preserveAspectRatio=\"none\"\n >\n <defs>\n <linearGradient id={\\`coralGrad-\\${palette.name}\\`} x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"100%\">\n <stop offset=\"0%\" stopColor={palette.secondary} />\n <stop offset=\"50%\" stopColor={palette.primary} />\n <stop offset=\"100%\" stopColor={palette.shadow} />\n </linearGradient>\n </defs>\n\n <g transform={position === 'TOP' ? 'scale(1, -1) translate(0, -120)' : undefined}>\n <path d=\"M 40 120 C 35 90, 20 80, 24 55 C 28 30, 15 20, 22 10 C 29 0, 37 15, 35 30 C 33 45, 42 55, 40 75 C 38 95, 42 110, 40 120 Z\" fill={\\`url(#coralGrad-\\${palette.name})\\`} />\n <path d=\"M 40 120 C 45 95, 55 85, 52 65 C 49 45, 62 35, 58 20 C 54 5, 46 12, 48 25 C 50 38, 42 50, 44 70 C 46 90, 42 105, 40 120 Z\" fill={\\`url(#coralGrad-\\${palette.name})\\`} />\n </g>\n </svg>\n </div>\n );\n}\n`;\n\nexport const DEPLOY_MODAL_CODE = `import React, { useState, useEffect, useRef } from 'react';\nimport { LuX as X, LuPlay as Play, LuCheckCircle as CheckCircle2, LuRotateCcw as RotateCcw, LuCloud as Cloud } from 'react-icons/lu';\nimport { motion } from 'motion/react';\n\ninterface DeployModalProps {\n isOpen: boolean;\n onClose: () => void;\n}\n\nconst DEPLOY_LOGS = [\n { text: ':: RAKTA CORE PIPELINE INITIALIZED ::', type: 'system' },\n { text: '[SYS] Resolving package.json manifest dependencies...', type: 'info' },\n { text: '[VITE] Starting asset compilation & typescript check...', type: 'info' },\n { text: '[VITE] ✓ Production dist/ folder generated successfully [384ms]', type: 'success' },\n { text: '[ESBUILD] Compiling full-stack backend entrypoint: server.ts', type: 'info' },\n { text: '[ESBUILD] ✓ Bundled server.ts into dist/server.cjs [120ms]', type: 'success' },\n { text: '[CLOUD RUN] Pushing build payload to regional edge registry...', type: 'info' },\n { text: '[CLOUD RUN] Ingress configured: routing all traffic exclusively to Port 3000', type: 'info' },\n { text: ':: SYSTEM DEPLOYMENT COMPLETED ON EDGE NODES ::', type: 'success' },\n];\n\nexport default function DeployModal({ isOpen, onClose }: DeployModalProps) {\n const [status, setStatus] = useState<'idle' | 'building' | 'success' | 'error'>('idle');\n const [logs, setLogs] = useState<Array<{ text: string; type: string }>>([]);\n const [progress, setProgress] = useState(0);\n const terminalEndRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (terminalEndRef.current) {\n terminalEndRef.current.scrollIntoView({ behavior: 'smooth' });\n }\n }, [logs]);\n\n if (!isOpen) return null;\n\n const startDeployment = () => {\n setStatus('building');\n setLogs([]);\n setProgress(0);\n\n let currentLogIndex = 0;\n \n const runStep = () => {\n if (currentLogIndex < DEPLOY_LOGS.length) {\n setLogs(prev => [...prev, DEPLOY_LOGS[currentLogIndex]!]);\n setProgress(Math.round(((currentLogIndex + 1) / DEPLOY_LOGS.length) * 100));\n currentLogIndex++;\n setTimeout(runStep, Math.random() * 250 + 150);\n } else {\n setStatus('success');\n }\n };\n setTimeout(runStep, 400);\n };\n\n const resetDeploy = () => {\n setStatus('idle');\n setLogs([]);\n setProgress(0);\n };\n\n return (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/85 backdrop-blur-sm\" id=\"deploy-modal-container\">\n <motion.div \n initial={{ opacity: 0, scale: 0.95, y: 15 }}\n animate={{ opacity: 1, scale: 1, y: 0 }}\n exit={{ opacity: 0, scale: 0.95, y: 15 }}\n transition={{ duration: 0.2 }}\n className=\"w-full max-w-3xl h-[70vh] bg-black border-2 border-white flex flex-col relative\"\n >\n <div className=\"flex items-center justify-between border-b border-white/30 p-5\">\n <div className=\"flex items-center gap-3\">\n <Cloud className=\"w-5 h-5 text-rose-500\" />\n <h2 className=\"text-xl font-bold font-mono tracking-tight uppercase\">\n Rakta <span className=\"text-rose-500\">Edge Deployment</span>\n </h2>\n </div>\n <button \n onClick={onClose}\n className=\"p-2 border border-white/30 hover:bg-rose-500 hover:text-white transition-colors cursor-pointer\"\n >\n <X className=\"w-5 h-5\" />\n </button>\n </div>\n\n <div className=\"bg-zinc-900 p-6 border-b border-white/20 flex flex-col sm:flex-row sm:items-center justify-between gap-4\">\n <div>\n <span className=\"text-[10px] font-mono text-gray-500 uppercase tracking-widest block\">PIPELINE STATUS</span>\n <div className=\"flex items-center gap-2 mt-1\">\n {status === 'idle' && <span className=\"font-mono text-sm text-yellow-500 font-bold uppercase\">IDLE - READY TO LAUNCH</span>}\n {status === 'building' && <span className=\"font-mono text-sm text-rose-500 font-bold uppercase\">COMPILES IN PROGRESS ({progress}%)</span>}\n {status === 'success' && <span className=\"font-mono text-sm text-green-500 font-bold uppercase\">LIVE - PRODUCTION DEPLOYED</span>}\n </div>\n </div>\n <div className=\"flex items-center gap-3\">\n {status === 'idle' && (\n <button onClick={startDeployment} className=\"bg-rose-500 hover:bg-white text-white hover:text-black px-6 py-2.5 font-mono text-xs font-bold uppercase transition-all duration-150 border border-transparent active:scale-95 flex items-center gap-2 cursor-pointer\">\n <Play className=\"w-4 h-4 fill-current\" /> INITIATE LAUNCH\n </button>\n )}\n {status === 'success' && (\n <button onClick={resetDeploy} className=\"border border-white hover:bg-white hover:text-black px-4 py-2.5 font-mono text-xs uppercase transition-all duration-150 flex items-center gap-1.5 cursor-pointer\">\n <RotateCcw className=\"w-3.5 h-3.5\" /> RE-BUILD PIPELINE\n </button>\n )}\n </div>\n </div>\n\n <div className=\"flex-1 bg-black p-5 font-mono text-xs overflow-y-auto flex flex-col gap-2 select-text selection:bg-rose-500/30\">\n {logs.map((log, index) => {\n let textColor = 'text-gray-400';\n if (log.type === 'system') textColor = 'text-rose-500 font-bold border-b border-rose-500/20 pb-1 mb-2';\n if (log.type === 'success') textColor = 'text-green-500 font-bold';\n if (log.type === 'info') textColor = 'text-gray-300';\n return <div key={index} className={\\`leading-relaxed whitespace-pre-wrap \\${textColor}\\`}>{log.text}</div>;\n })}\n {status === 'idle' && <div className=\"text-gray-600 italic mt-4 text-center\">Click 'INITIATE LAUNCH' to begin.</div>}\n <div ref={terminalEndRef} />\n </div>\n </motion.div>\n </div>\n );\n}\n`;\n\nexport const DOCS_MODAL_CODE = `import React, { useState } from 'react';\nimport { LuX as X, LuBook as Book, LuArrowRight as ArrowRight, LuSearch as Search } from 'react-icons/lu';\nimport { motion } from 'motion/react';\n\ninterface DocsModalProps {\n isOpen: boolean;\n onClose: () => void;\n}\n\nconst ARTICLES = [\n { id: 'intro', title: '1. Welcome to Rakta.js', category: 'Getting Started', content: 'Rakta.js is a zero-dependency, ultra-fast structural core designed for creating high-performance, single-page web experiences.' }\n];\n\nexport default function DocsModal({ isOpen, onClose }: DocsModalProps) {\n if (!isOpen) return null;\n return (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/80 backdrop-blur-sm\">\n <motion.div initial={{ opacity: 0, y: 15 }} animate={{ opacity: 1, y: 0 }} className=\"w-full max-w-5xl h-[80vh] bg-black border-2 border-white flex flex-col relative\">\n <div className=\"flex items-center justify-between border-b border-white/30 p-5\">\n <div className=\"flex items-center gap-3\">\n <Book className=\"w-5 h-5 text-rose-500\" />\n <h2 className=\"text-xl font-bold font-mono tracking-tight uppercase\">Rakta.js <span className=\"text-rose-500\">System Manual</span></h2>\n </div>\n <button onClick={onClose} className=\"p-2 border border-white/30 hover:bg-rose-500 hover:text-white transition-colors cursor-pointer\"><X className=\"w-5 h-5\" /></button>\n </div>\n <div className=\"p-10 text-white font-mono text-sm leading-relaxed max-w-3xl\">\n <h3 className=\"text-3xl font-extrabold text-rose-500 mb-6\">Welcome to Rakta.js</h3>\n <p className=\"mb-4\">You have successfully generated your project.</p>\n <p className=\"mb-4\">Use the CLI generator to expand your codebase, or start editing files in the app/ directory.</p>\n <ul className=\"list-disc pl-5 mt-4 space-y-2 text-gray-400\">\n <li>Instant Engine Boot: Sub-1ms load time.</li>\n <li>Brutalist Aesthetics natively supported.</li>\n <li>Hot Reload available globally via WebSockets.</li>\n </ul>\n </div>\n </motion.div>\n </div>\n );\n}\n`;\n\nexport const SHRIMP_CHARACTER_CODE = `import React from 'react';\n\ninterface ShrimpCharacterProps {\n status: 'IDLE' | 'SWIMMING' | 'JUMPING' | 'DEAD';\n playerY: number;\n rotation?: number;\n}\n\nexport default function ShrimpCharacter({ status, playerY, rotation }: ShrimpCharacterProps) {\n let bodyClass = '';\n let isDead = status === 'DEAD';\n\n if (isDead) bodyClass = 'animate-bounce';\n else if (status === 'SWIMMING') bodyClass = 'animate-pulse';\n else bodyClass = '';\n\n const finalRotation = rotation !== undefined ? rotation : (isDead ? 180 : 0);\n const shrimpColor = isDead ? 'fill-orange-400' : 'fill-rose-500';\n\n return (\n <div \n className=\"relative w-16 h-16 flex items-center justify-center select-none pointer-events-none transition-transform duration-75\"\n style={{ transform: \\`rotate(\\${finalRotation}deg)\\` }}\n >\n <svg viewBox=\"0 0 100 100\" className={\\`w-full h-full drop-shadow-[0_4px_12px_rgba(244,63,94,0.3)] \\${bodyClass}\\`}>\n <path d=\"M 30 46 C 25 32, 45 22, 58 28 C 65 31, 62 48, 55 54 C 44 58, 35 55, 30 46 Z\" className={shrimpColor} />\n <path d=\"M 55 30 C 65 24, 76 34, 74 46 C 72 54, 62 55, 55 48 Z\" className={shrimpColor} />\n <circle cx=\"66\" cy=\"38\" r=\"4.5\" fill={isDead ? '#18181b' : '#000'} />\n </svg>\n <style>{\\`\n @keyframes bubble-up {\n 0% { transform: translateY(0) scale(1); opacity: 0.8; }\n 100% { transform: translateY(-20px) scale(1.5); opacity: 0; }\n }\n \\`}</style>\n </div>\n );\n}\n`;\n\nexport const WELCOME_PAGE_CODE = `import { useState } from \"react\";\nimport { LuPlay as Play, LuBook as Book, LuCpu as Cpu, LuCloud as Cloud } from \"react-icons/lu\";\n\nexport default function WelcomePage() {\n const [modalOpen, setModalOpen] = useState<'components' | 'deploy' | 'docs' | null>(null);\n\n return (\n <main className=\"min-h-screen bg-[#050505] flex flex-col items-center justify-center text-white font-mono p-4\">\n <div className=\"absolute top-10 pointer-events-none opacity-20\">\n <ShrimpCharacter status=\"IDLE\" playerY={0} />\n </div>\n\n <div className=\"text-center z-10 max-w-2xl\">\n <h1 className=\"text-5xl md:text-7xl font-extrabold uppercase tracking-tighter mb-4\">\n Welcome to <span className=\"text-rose-500\">Rakta.js</span>\n </h1>\n <p className=\"text-gray-400 text-sm md:text-base mb-10 leading-relaxed\">\n Small in size. Fierce in speed. Alive in every route.\n <br/>\n Your neo-brutalist web application is ready for action.\n </p>\n\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-4\">\n <button \n onClick={() => setModalOpen('components')}\n className=\"flex flex-col items-center justify-center gap-3 p-6 border-2 border-zinc-800 bg-zinc-900/50 hover:border-rose-500 hover:bg-rose-500/10 transition-colors cursor-pointer group\"\n >\n <Cpu className=\"w-8 h-8 text-gray-400 group-hover:text-rose-500\" />\n <span className=\"font-bold text-sm uppercase\">Components</span>\n </button>\n \n <button \n onClick={() => setModalOpen('docs')}\n className=\"flex flex-col items-center justify-center gap-3 p-6 border-2 border-zinc-800 bg-zinc-900/50 hover:border-blue-500 hover:bg-blue-500/10 transition-colors cursor-pointer group\"\n >\n <Book className=\"w-8 h-8 text-gray-400 group-hover:text-blue-500\" />\n <span className=\"font-bold text-sm uppercase\">Documentation</span>\n </button>\n\n <button \n onClick={() => setModalOpen('deploy')}\n className=\"flex flex-col items-center justify-center gap-3 p-6 border-2 border-zinc-800 bg-zinc-900/50 hover:border-green-500 hover:bg-green-500/10 transition-colors cursor-pointer group\"\n >\n <Cloud className=\"w-8 h-8 text-gray-400 group-hover:text-green-500\" />\n <span className=\"font-bold text-sm uppercase\">Deployment</span>\n </button>\n </div>\n </div>\n\n <div className=\"absolute bottom-6 text-[10px] text-gray-600 uppercase tracking-widest text-center\">\n Running on http://localhost:3000 • Hot Reload Active\n </div>\n\n {modalOpen === 'components' && <ComponentsModal isOpen={true} onClose={() => setModalOpen(null)} />}\n {modalOpen === 'deploy' && <DeployModal isOpen={true} onClose={() => setModalOpen(null)} />}\n {modalOpen === 'docs' && <DocsModal isOpen={true} onClose={() => setModalOpen(null)} />}\n </main>\n );\n}\n`;\n",
19
+ "import * as clack from \"@clack/prompts\";\nimport type {\n\tBackendFramework,\n\tCssFramework,\n\tDatabase,\n\tProjectConfig,\n\tProjectMode,\n\tRenderMode,\n} from \"./types\";\nimport {\n\tBACKEND_DISPLAY,\n\tCSS_DISPLAY,\n\tDATABASE_DISPLAY,\n\tPROJECT_MODE_DISPLAY,\n\tRENDER_MODE_DISPLAY,\n} from \"./types\";\n\nfunction getPromptValue<TValue>(promptResult: TValue | symbol): TValue {\n\tif (clack.isCancel(promptResult)) {\n\t\tclack.cancel(\"Setup cancelled.\");\n\t\tprocess.exit(0);\n\t}\n\n\treturn promptResult;\n}\n\nexport async function promptProjectName(fallbackName: string): Promise<string> {\n\tconst promptResult = await clack.text({\n\t\tmessage: \"Project name:\",\n\t\tplaceholder: fallbackName,\n\t\tdefaultValue: fallbackName,\n\t\tvalidate(inputValue) {\n\t\t\tconst trimmedInput = (inputValue ?? \"\").trim();\n\n\t\t\tif (trimmedInput.length === 0) {\n\t\t\t\treturn \"Project name cannot be empty.\";\n\t\t\t}\n\n\t\t\tif (!/^[a-z0-9-_]+$/i.test(trimmedInput)) {\n\t\t\t\treturn \"Use only letters, numbers, hyphens, and underscores.\";\n\t\t\t}\n\n\t\t\treturn undefined;\n\t\t},\n\t});\n\n\treturn getPromptValue(promptResult).trim();\n}\n\nexport async function promptProjectMode(): Promise<ProjectMode> {\n\tconst promptResult = await clack.select<ProjectMode>({\n\t\tmessage: \"What do you want to create?\",\n\t\toptions: [\n\t\t\t{\n\t\t\t\tvalue: \"frontend-only\",\n\t\t\t\tlabel: PROJECT_MODE_DISPLAY[\"frontend-only\"],\n\t\t\t\thint: \"recommended for starters\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"fullstack\",\n\t\t\t\tlabel: PROJECT_MODE_DISPLAY.fullstack,\n\t\t\t},\n\t\t],\n\t\tinitialValue: \"frontend-only\",\n\t});\n\n\treturn getPromptValue(promptResult);\n}\n\nexport async function promptTypeScript(): Promise<boolean> {\n\tconst promptResult = await clack.confirm({\n\t\tmessage: \"Would you like to use TypeScript? (recommended)\",\n\t\tinitialValue: true,\n\t});\n\n\treturn getPromptValue(promptResult);\n}\n\nexport async function promptCssFramework(): Promise<CssFramework> {\n\tconst promptResult = await clack.select<CssFramework>({\n\t\tmessage: \"Choose a CSS framework:\",\n\t\toptions: [\n\t\t\t{\n\t\t\t\tvalue: \"tailwind\",\n\t\t\t\tlabel: CSS_DISPLAY.tailwind,\n\t\t\t\thint: \"recommended\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"bootstrap\",\n\t\t\t\tlabel: CSS_DISPLAY.bootstrap,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"sass\",\n\t\t\t\tlabel: CSS_DISPLAY.sass,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"none\",\n\t\t\t\tlabel: CSS_DISPLAY.none,\n\t\t\t},\n\t\t],\n\t\tinitialValue: \"tailwind\",\n\t});\n\n\treturn getPromptValue(promptResult);\n}\n\nexport async function promptRenderMode(): Promise<RenderMode> {\n\tconst promptResult = await clack.select<RenderMode>({\n\t\tmessage: \"Choose a render mode:\",\n\t\toptions: [\n\t\t\t{\n\t\t\t\tvalue: \"csr\",\n\t\t\t\tlabel: RENDER_MODE_DISPLAY.csr,\n\t\t\t\thint: \"recommended\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"spa\",\n\t\t\t\tlabel: RENDER_MODE_DISPLAY.spa,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"hybrid\",\n\t\t\t\tlabel: RENDER_MODE_DISPLAY.hybrid,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"ssr\",\n\t\t\t\tlabel: RENDER_MODE_DISPLAY.ssr,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"ssg\",\n\t\t\t\tlabel: RENDER_MODE_DISPLAY.ssg,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"csg\",\n\t\t\t\tlabel: RENDER_MODE_DISPLAY.csg,\n\t\t\t},\n\t\t],\n\t\tinitialValue: \"csr\",\n\t});\n\n\treturn getPromptValue(promptResult);\n}\n\nexport async function promptBackendFramework(): Promise<BackendFramework> {\n\tconst promptResult = await clack.select<BackendFramework>({\n\t\tmessage: \"Choose a backend framework:\",\n\t\toptions: [\n\t\t\t{\n\t\t\t\tvalue: \"gaman\",\n\t\t\t\tlabel: BACKEND_DISPLAY.gaman,\n\t\t\t\thint: \"recommended\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"express\",\n\t\t\t\tlabel: BACKEND_DISPLAY.express,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"nest\",\n\t\t\t\tlabel: BACKEND_DISPLAY.nest,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"adonis\",\n\t\t\t\tlabel: BACKEND_DISPLAY.adonis,\n\t\t\t},\n\t\t],\n\t\tinitialValue: \"gaman\",\n\t});\n\n\treturn getPromptValue(promptResult);\n}\n\nexport async function promptDatabase(): Promise<Database> {\n\tconst promptResult = await clack.select<Database>({\n\t\tmessage: \"Choose a database:\",\n\t\toptions: [\n\t\t\t{\n\t\t\t\tvalue: \"postgresql\",\n\t\t\t\tlabel: DATABASE_DISPLAY.postgresql,\n\t\t\t\thint: \"recommended\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"mysql\",\n\t\t\t\tlabel: DATABASE_DISPLAY.mysql,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"mongodb\",\n\t\t\t\tlabel: DATABASE_DISPLAY.mongodb,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"firebase\",\n\t\t\t\tlabel: DATABASE_DISPLAY.firebase,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"sqlite\",\n\t\t\t\tlabel: DATABASE_DISPLAY.sqlite,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"mariadb\",\n\t\t\t\tlabel: DATABASE_DISPLAY.mariadb,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"redis\",\n\t\t\t\tlabel: DATABASE_DISPLAY.redis,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"planetscale\",\n\t\t\t\tlabel: DATABASE_DISPLAY.planetscale,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"neon\",\n\t\t\t\tlabel: DATABASE_DISPLAY.neon,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: \"turso\",\n\t\t\t\tlabel: DATABASE_DISPLAY.turso,\n\t\t\t},\n\t\t],\n\t\tinitialValue: \"postgresql\",\n\t});\n\n\treturn getPromptValue(promptResult);\n}\n\nexport async function runPrompts(projectName: string): Promise<ProjectConfig> {\n\tconst projectMode = await promptProjectMode();\n\tconst useTypeScript = await promptTypeScript();\n\tconst cssFramework = await promptCssFramework();\n\tconst renderMode = await promptRenderMode();\n\n\tif (projectMode === \"frontend-only\") {\n\t\treturn {\n\t\t\tprojectName,\n\t\t\tprojectMode,\n\t\t\tuseTypeScript,\n\t\t\tcssFramework,\n\t\t\trenderMode,\n\t\t\tbackendFramework: \"gaman\",\n\t\t\tdatabase: \"postgresql\",\n\t\t};\n\t}\n\n\tconst backendFramework = await promptBackendFramework();\n\tconst selectedDatabase = await promptDatabase();\n\n\treturn {\n\t\tprojectName,\n\t\tprojectMode,\n\t\tuseTypeScript,\n\t\tcssFramework,\n\t\trenderMode,\n\t\tbackendFramework,\n\t\tdatabase: selectedDatabase,\n\t};\n}\n"
19
20
  ],
20
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEA,IAAM,OAAM;AAAA,EACZ,IAAM,OAAM,GAAG;AAAA,EACf,IAAM,OAAO;AAAA,EAEb,IAAM,SAAS;AAAA,IACb,EAAE,CAAC,GAAG,GAAG;AAAA,MACP,IAAI,CAAC;AAAA,QAAG,OAAO,GAAG,OAAM,IAAI;AAAA,MAC5B,OAAO,GAAG,OAAM,IAAI,KAAK,IAAI;AAAA;AAAA,IAE/B,IAAI,CAAC,GAAG,GAAG;AAAA,MACT,IAAI,MAAM;AAAA,MAEV,IAAI,IAAI;AAAA,QAAG,OAAO,GAAG,OAAM,CAAC;AAAA,MACvB,SAAI,IAAI;AAAA,QAAG,OAAO,GAAG,OAAM;AAAA,MAEhC,IAAI,IAAI;AAAA,QAAG,OAAO,GAAG,OAAM,CAAC;AAAA,MACvB,SAAI,IAAI;AAAA,QAAG,OAAO,GAAG,OAAM;AAAA,MAEhC,OAAO;AAAA;AAAA,IAET,IAAI,CAAC,QAAQ,MAAM,GAAG,OAAM;AAAA,IAC5B,MAAM,CAAC,QAAQ,MAAM,GAAG,OAAM;AAAA,IAC9B,SAAS,CAAC,QAAQ,MAAM,GAAG,OAAM;AAAA,IACjC,UAAU,CAAC,QAAQ,MAAM,GAAG,OAAM;AAAA,IAClC,UAAU,CAAC,QAAQ,MAAM,GAAG,QAAO,OAAO,KAAK;AAAA,IAC/C,UAAU,CAAC,QAAQ,MAAM,GAAG,QAAO,OAAO,KAAK;AAAA,IAC/C,MAAM,GAAG;AAAA,IACT,MAAM,GAAG;AAAA,IACT,MAAM,GAAG;AAAA,IACT,MAAM,GAAG;AAAA,IACT,SAAS,GAAG;AAAA,EACd;AAAA,EAEA,IAAM,SAAS;AAAA,IACb,IAAI,CAAC,QAAQ,MAAM,GAAG,QAAO,OAAO,KAAK;AAAA,IACzC,MAAM,CAAC,QAAQ,MAAM,GAAG,QAAO,OAAO,KAAK;AAAA,EAC7C;AAAA,EAEA,IAAM,QAAQ;AAAA,IACZ,QAAQ,GAAG;AAAA,IACX,IAAI,CAAC,QAAQ,MAAM,GAAG,SAAQ,OAAO,KAAK;AAAA,IAC1C,MAAM,CAAC,QAAQ,MAAM,GAAG,QAAO,OAAO,KAAK;AAAA,IAC3C,MAAM,GAAG;AAAA,IACT,SAAS,GAAG;AAAA,IACZ,WAAW,GAAG;AAAA,IACd,KAAK,CAAC,OAAO;AAAA,MACX,IAAI,QAAQ;AAAA,MACZ,SAAS,IAAI,EAAG,IAAI,OAAO;AAAA,QACzB,SAAS,KAAK,QAAQ,IAAI,QAAQ,IAAI,OAAO,GAAG,IAAI;AAAA,MACtD,IAAI;AAAA,QACF,SAAS,OAAO;AAAA,MAClB,OAAO;AAAA;AAAA,EAEX;AAAA,EAEA,OAAO,UAAU,EAAE,QAAQ,QAAQ,OAAO,KAAK;AAAA;;;;ECzD/C,IAAI,KAAI,WAAW,CAAC;AAAA,EAApB,IAAuB,OAAO,GAAE,QAAQ,CAAC;AAAA,EAAzC,IAA4C,MAAM,GAAE,OAAO,CAAC;AAAA,EAC5D,IAAI,mBACH,EAAE,CAAC,CAAC,IAAI,YAAY,KAAK,SAAS,YAAY,OAC7C,CAAC,CAAC,IAAI,eAAe,KAAK,SAAS,SAAS,KAAK,GAAE,aAAa,YAAa,GAAE,UAAU,CAAC,GAAG,SAAS,IAAI,SAAS,UAAW,CAAC,CAAC,IAAI;AAAA,EAEtI,IAAI,YAAY,CAAC,MAAM,OAAO,UAAU,SACvC,WAAS;AAAA,IACR,IAAI,SAAS,KAAK,OAAO,QAAQ,OAAO,QAAQ,OAAO,KAAK,MAAM;AAAA,IAClE,OAAO,CAAC,QAAQ,OAAO,aAAa,QAAQ,OAAO,SAAS,KAAK,IAAI,QAAQ,OAAO,SAAS;AAAA;AAAA,EAG/F,IAAI,eAAe,CAAC,QAAQ,OAAO,SAAS,UAAU;AAAA,IACrD,IAAI,SAAS,IAAI,UAAS;AAAA,IAC1B,GAAG;AAAA,MACF,UAAU,OAAO,UAAU,SAAQ,KAAK,IAAI;AAAA,MAC5C,UAAS,QAAQ,MAAM;AAAA,MACvB,QAAQ,OAAO,QAAQ,OAAO,OAAM;AAAA,IACrC,SAAS,CAAC;AAAA,IACV,OAAO,SAAS,OAAO,UAAU,OAAM;AAAA;AAAA,EAGxC,IAAI,eAAe,CAAC,UAAU,qBAAqB;AAAA,IAClD,IAAI,KAAI,UAAU,YAAY,MAAM;AAAA,IACpC,OAAO;AAAA,MACN,kBAAkB;AAAA,MAClB,OAAO,GAAE,WAAW,SAAS;AAAA,MAC7B,MAAM,GAAE,WAAW,YAAY,iBAAiB;AAAA,MAChD,KAAK,GAAE,WAAW,YAAY,iBAAiB;AAAA,MAC/C,QAAQ,GAAE,WAAW,UAAU;AAAA,MAC/B,WAAW,GAAE,WAAW,UAAU;AAAA,MAClC,SAAS,GAAE,WAAW,UAAU;AAAA,MAChC,QAAQ,GAAE,WAAW,UAAU;AAAA,MAC/B,eAAe,GAAE,WAAW,UAAU;AAAA,MAEtC,OAAO,GAAE,YAAY,UAAU;AAAA,MAC/B,KAAK,GAAE,YAAY,UAAU;AAAA,MAC7B,OAAO,GAAE,YAAY,UAAU;AAAA,MAC/B,QAAQ,GAAE,YAAY,UAAU;AAAA,MAChC,MAAM,GAAE,YAAY,UAAU;AAAA,MAC9B,SAAS,GAAE,YAAY,UAAU;AAAA,MACjC,MAAM,GAAE,YAAY,UAAU;AAAA,MAC9B,OAAO,GAAE,YAAY,UAAU;AAAA,MAC/B,MAAM,GAAE,YAAY,UAAU;AAAA,MAE9B,SAAS,GAAE,YAAY,UAAU;AAAA,MACjC,OAAO,GAAE,YAAY,UAAU;AAAA,MAC/B,SAAS,GAAE,YAAY,UAAU;AAAA,MACjC,UAAU,GAAE,YAAY,UAAU;AAAA,MAClC,QAAQ,GAAE,YAAY,UAAU;AAAA,MAChC,WAAW,GAAE,YAAY,UAAU;AAAA,MACnC,QAAQ,GAAE,YAAY,UAAU;AAAA,MAChC,SAAS,GAAE,YAAY,UAAU;AAAA,MAEjC,aAAa,GAAE,YAAY,UAAU;AAAA,MACrC,WAAW,GAAE,YAAY,UAAU;AAAA,MACnC,aAAa,GAAE,YAAY,UAAU;AAAA,MACrC,cAAc,GAAE,YAAY,UAAU;AAAA,MACtC,YAAY,GAAE,YAAY,UAAU;AAAA,MACpC,eAAe,GAAE,YAAY,UAAU;AAAA,MACvC,YAAY,GAAE,YAAY,UAAU;AAAA,MACpC,aAAa,GAAE,YAAY,UAAU;AAAA,MAErC,eAAe,GAAE,aAAa,UAAU;AAAA,MACxC,aAAa,GAAE,aAAa,UAAU;AAAA,MACtC,eAAe,GAAE,aAAa,UAAU;AAAA,MACxC,gBAAgB,GAAE,aAAa,UAAU;AAAA,MACzC,cAAc,GAAE,aAAa,UAAU;AAAA,MACvC,iBAAiB,GAAE,aAAa,UAAU;AAAA,MAC1C,cAAc,GAAE,aAAa,UAAU;AAAA,MACvC,eAAe,GAAE,aAAa,UAAU;AAAA,IACzC;AAAA;AAAA,EAGD,OAAO,UAAU,aAAa;AAAA,EAC9B,OAAO,QAAQ,eAAe;AAAA;;;ACxE9B,uBAAS;AACT,oBAAS;;;ACHT;AACA;AACA;AACA;;;ACFA,IAAM,uBAAuB,MAAM;AAAA,EAC/B,MAAM,oBAAoB;AAAA,EAC1B,OAAO,CAAC,UAAU;AAAA,IACd,IAAI,mBAAmB;AAAA,IACvB,kBAAkB,YAAY;AAAA,IAC9B,OAAO,kBAAkB,KAAK,KAAK,GAAG;AAAA,MAClC,oBAAoB;AAAA,IACxB;AAAA,IACA,OAAO,MAAM,SAAS;AAAA;AAAA,GAE3B;AACH,IAAM,cAAc,CAAC,MAAM;AAAA,EACvB,OAAO,MAAM,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK;AAAA;AAE7E,IAAM,wBAAwB,CAAC,MAAM;AAAA,EACjC,OAAO,MAAM,QAAU,MAAM,QAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,SAAU,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK,UAAW,KAAK;AAAA;;;ACbtkB,IAAM,UAAU;AAChB,IAAM,aAAa;AACnB,IAAM,eAAe;AACrB,IAAM,SAAS;AACf,IAAM,WAAW;AACjB,IAAM,WAAW;AACjB,IAAM,cAAc;AACpB,IAAM,gBAAgB,EAAE,OAAO,UAAU,UAAU,GAAG;AAEtD,IAAM,0BAA0B,CAAC,OAAO,oBAAoB,CAAC,GAAG,eAAe,CAAC,MAAM;AAAA,EAElF,MAAM,QAAQ,kBAAkB,SAAS;AAAA,EACzC,MAAM,WAAW,kBAAkB,YAAY;AAAA,EAC/C,MAAM,iBAAiB,mBAAmB,kBAAkB,WAAW,wBAAwB,UAAU,eAAe,YAAY,EAAE,QAAQ;AAAA,EAC9I,MAAM,aAAa;AAAA,EACnB,MAAM,gBAAgB,aAAa,gBAAgB;AAAA,EACnD,MAAM,YAAY,aAAa,YAAY;AAAA,EAC3C,MAAM,cAAc,aAAa,cAAc;AAAA,EAC/C,MAAM,mBAAmB;AAAA,EACzB,MAAM,gBAAgB,aAAa,gBAAgB;AAAA,EACnD,MAAM,aAAa,aAAa,aAAa;AAAA,EAC7C,MAAM,eAAe;AAAA,IACjB,CAAC,UAAU,aAAa;AAAA,IACxB,CAAC,SAAS,UAAU;AAAA,IACpB,CAAC,YAAY,aAAa;AAAA,IAC1B,CAAC,QAAQ,SAAS;AAAA,IAClB,CAAC,UAAU,WAAW;AAAA,IACtB,CAAC,cAAc,UAAU;AAAA,EAC7B;AAAA,EAEA,IAAI,YAAY;AAAA,EAChB,IAAI,QAAQ;AAAA,EACZ,IAAI,SAAS,MAAM;AAAA,EACnB,IAAI,cAAc;AAAA,EAClB,IAAI,oBAAoB;AAAA,EACxB,IAAI,kBAAkB;AAAA,EACtB,IAAI,kBAAkB,KAAK,IAAI,GAAG,QAAQ,cAAc;AAAA,EACxD,IAAI,iBAAiB;AAAA,EACrB,IAAI,eAAe;AAAA,EACnB,IAAI,QAAQ;AAAA,EACZ,IAAI,aAAa;AAAA,EAEjB;AAAA,IAAO,OAAO,MAAM;AAAA,MAEhB,IAAK,eAAe,kBAAoB,SAAS,UAAU,QAAQ,WAAY;AAAA,QAC3E,MAAM,YAAY,MAAM,MAAM,gBAAgB,YAAY,KAAK,MAAM,MAAM,WAAW,KAAK;AAAA,QAC3F,cAAc;AAAA,QACd,WAAW,QAAQ,UAAU,WAAW,aAAa,EAAE,GAAG;AAAA,UACtD,MAAM,YAAY,KAAK,YAAY,CAAC,KAAK;AAAA,UACzC,IAAI,YAAY,SAAS,GAAG;AAAA,YACxB,aAAa;AAAA,UACjB,EACK,SAAI,sBAAsB,SAAS,GAAG;AAAA,YACvC,aAAa;AAAA,UACjB,EACK;AAAA,YACD,aAAa;AAAA;AAAA,UAEjB,IAAK,QAAQ,aAAc,iBAAiB;AAAA,YACxC,kBAAkB,KAAK,IAAI,iBAAiB,KAAK,IAAI,gBAAgB,SAAS,IAAI,WAAW;AAAA,UACjG;AAAA,UACA,IAAK,QAAQ,aAAc,OAAO;AAAA,YAC9B,oBAAoB;AAAA,YACpB;AAAA,UACJ;AAAA,UACA,eAAe,KAAK;AAAA,UACpB,SAAS;AAAA,QACb;AAAA,QACA,iBAAiB,eAAe;AAAA,MACpC;AAAA,MAEA,IAAI,SAAS,QAAQ;AAAA,QACjB;AAAA,MACJ;AAAA,MAEA,SAAS,IAAI,GAAG,IAAI,aAAa,OAAQ,IAAI,GAAG,KAAK;AAAA,QACjD,OAAO,UAAU,eAAe,aAAa;AAAA,QAC7C,SAAS,YAAY;AAAA,QACrB,IAAI,SAAS,KAAK,KAAK,GAAG;AAAA,UACtB,cAAc,aAAa,eAAe,oBAAoB,MAAM,MAAM,OAAO,SAAS,SAAS,CAAC,IAAI,aAAa,WAAW,IAAI,SAAS,YAAY;AAAA,UACzJ,aAAa,cAAc;AAAA,UAC3B,IAAK,QAAQ,aAAc,iBAAiB;AAAA,YACxC,kBAAkB,KAAK,IAAI,iBAAiB,QAAQ,KAAK,OAAO,kBAAkB,SAAS,WAAW,CAAC;AAAA,UAC3G;AAAA,UACA,IAAK,QAAQ,aAAc,OAAO;AAAA,YAC9B,oBAAoB;AAAA,YACpB;AAAA,UACJ;AAAA,UACA,SAAS;AAAA,UACT,iBAAiB;AAAA,UACjB,eAAe;AAAA,UACf,QAAQ,YAAY,SAAS;AAAA,UAC7B;AAAA,QACJ;AAAA,MACJ;AAAA,MAEA,SAAS;AAAA,IACb;AAAA,EAEA,OAAO;AAAA,IACH,OAAO,oBAAoB,kBAAkB;AAAA,IAC7C,OAAO,oBAAoB,kBAAkB;AAAA,IAC7C,WAAW;AAAA,IACX,UAAU,qBAAqB,SAAS;AAAA,EAC5C;AAAA;AAGJ,IAAe;;;AC3Gf,IAAM,iBAAgB;AAAA,EAClB,OAAO;AAAA,EACP,UAAU;AAAA,EACV,eAAe;AACnB;AAEA,IAAM,kBAAkB,CAAC,OAAO,UAAU,CAAC,MAAM;AAAA,EAC7C,OAAO,aAAyB,OAAO,gBAAe,OAAO,EAAE;AAAA;AAGnE,IAAe;;;ACZf,IAAM,MAAM;AACZ,IAAM,MAAM;AACZ,IAAM,WAAW;AACjB,IAAM,mBAAmB;AACzB,IAAM,WAAW;AACjB,IAAM,WAAW;AACjB,IAAM,sBAAsB;AAC5B,IAAM,mBAAmB,GAAG;AAC5B,IAAM,cAAc,IAAI,OAAO,QAAQ,4BAA4B,6BAA6B,qBAAqB,GAAG;AACxH,IAAM,iBAAiB,CAAC,gBAAgB;AAAA,EACpC,IAAI,eAAe,MAAM,eAAe;AAAA,IACpC,OAAO;AAAA,EACX,IAAI,eAAe,MAAM,eAAe;AAAA,IACpC,OAAO;AAAA,EACX,IAAI,eAAe,MAAM,eAAe;AAAA,IACpC,OAAO;AAAA,EACX,IAAI,eAAe,OAAO,eAAe;AAAA,IACrC,OAAO;AAAA,EACX,IAAI,gBAAgB,KAAK,gBAAgB;AAAA,IACrC,OAAO;AAAA,EACX,IAAI,gBAAgB;AAAA,IAChB,OAAO;AAAA,EACX,IAAI,gBAAgB;AAAA,IAChB,OAAO;AAAA,EACX,IAAI,gBAAgB;AAAA,IAChB,OAAO;AAAA,EACX,IAAI,gBAAgB;AAAA,IAChB,OAAO;AAAA,EACX,IAAI,gBAAgB;AAAA,IAChB,OAAO;AAAA,EACX,IAAI,gBAAgB;AAAA,IAChB,OAAO;AAAA,EACX;AAAA;AAEJ,IAAM,eAAe,CAAC,SAAS,GAAG,MAAM,WAAW,OAAO;AAC1D,IAAM,oBAAoB,CAAC,QAAQ,GAAG,MAAM,mBAAmB,MAAM;AACrE,IAAM,WAAW,CAAC,MAAM,MAAM,YAAY;AAAA,EACtC,MAAM,aAAa,KAAK,OAAO,UAAU;AAAA,EACzC,IAAI,iBAAiB;AAAA,EACrB,IAAI,qBAAqB;AAAA,EACzB,IAAI,UAAU,KAAK,GAAG,EAAE;AAAA,EACxB,IAAI,UAAU,YAAY,YAAY,IAAI,cAAY,OAAO;AAAA,EAC7D,IAAI,mBAAmB,WAAW,KAAK;AAAA,EACvC,IAAI,gBAAgB,WAAW,KAAK;AAAA,EACpC,IAAI,oBAAoB;AAAA,EACxB,OAAO,CAAC,iBAAiB,MAAM;AAAA,IAC3B,MAAM,YAAY,iBAAiB;AAAA,IACnC,MAAM,kBAAkB,cAAY,SAAS;AAAA,IAC7C,IAAI,UAAU,mBAAmB,SAAS;AAAA,MACtC,KAAK,KAAK,SAAS,MAAM;AAAA,IAC7B,EACK;AAAA,MACD,KAAK,KAAK,SAAS;AAAA,MACnB,UAAU;AAAA;AAAA,IAEd,IAAI,cAAc,OAAO,cAAc,KAAK;AAAA,MACxC,iBAAiB;AAAA,MACjB,qBAAqB,KAAK,WAAW,kBAAkB,oBAAoB,CAAC;AAAA,IAChF;AAAA,IACA,IAAI,gBAAgB;AAAA,MAChB,IAAI,oBAAoB;AAAA,QACpB,IAAI,cAAc,kBAAkB;AAAA,UAChC,iBAAiB;AAAA,UACjB,qBAAqB;AAAA,QACzB;AAAA,MACJ,EACK,SAAI,cAAc,qBAAqB;AAAA,QACxC,iBAAiB;AAAA,MACrB;AAAA,IACJ,EACK;AAAA,MACD,WAAW;AAAA,MACX,IAAI,YAAY,WAAW,CAAC,cAAc,MAAM;AAAA,QAC5C,KAAK,KAAK,EAAE;AAAA,QACZ,UAAU;AAAA,MACd;AAAA;AAAA,IAEJ,mBAAmB;AAAA,IACnB,gBAAgB,WAAW,KAAK;AAAA,IAChC,qBAAqB,UAAU;AAAA,EACnC;AAAA,EACA,UAAU,KAAK,GAAG,EAAE;AAAA,EACpB,IAAI,CAAC,WAAW,YAAY,aAAa,QAAQ,UAAU,KAAK,SAAS,GAAG;AAAA,IACxE,KAAK,KAAK,SAAS,MAAM,KAAK,IAAI;AAAA,EACtC;AAAA;AAEJ,IAAM,+BAA+B,CAAC,WAAW;AAAA,EAC7C,MAAM,QAAQ,OAAO,MAAM,GAAG;AAAA,EAC9B,IAAI,OAAO,MAAM;AAAA,EACjB,OAAO,MAAM;AAAA,IACT,IAAI,cAAY,MAAM,OAAO,EAAE,GAAG;AAAA,MAC9B;AAAA,IACJ;AAAA,IACA;AAAA,EACJ;AAAA,EACA,IAAI,SAAS,MAAM,QAAQ;AAAA,IACvB,OAAO;AAAA,EACX;AAAA,EACA,OAAO,MAAM,MAAM,GAAG,IAAI,EAAE,KAAK,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,KAAK,EAAE;AAAA;AAErE,IAAM,OAAO,CAAC,QAAQ,SAAS,UAAU,CAAC,MAAM;AAAA,EAC5C,IAAI,QAAQ,SAAS,SAAS,OAAO,KAAK,MAAM,IAAI;AAAA,IAChD,OAAO;AAAA,EACX;AAAA,EACA,IAAI,cAAc;AAAA,EAClB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,MAAM,QAAQ,OAAO,MAAM,GAAG;AAAA,EAC9B,IAAI,OAAO,CAAC,EAAE;AAAA,EACd,IAAI,YAAY;AAAA,EAChB,SAAS,QAAQ,EAAG,QAAQ,MAAM,QAAQ,SAAS;AAAA,IAC/C,MAAM,OAAO,MAAM;AAAA,IACnB,IAAI,QAAQ,SAAS,OAAO;AAAA,MACxB,MAAM,MAAM,KAAK,GAAG,EAAE,KAAK;AAAA,MAC3B,MAAM,UAAU,IAAI,UAAU;AAAA,MAC9B,IAAI,IAAI,WAAW,QAAQ,QAAQ;AAAA,QAC/B,KAAK,KAAK,SAAS,KAAK;AAAA,QACxB,YAAY,cAAY,OAAO;AAAA,MACnC;AAAA,IACJ;AAAA,IACA,IAAI,UAAU,GAAG;AAAA,MACb,IAAI,aAAa,YACZ,QAAQ,aAAa,SAAS,QAAQ,SAAS,QAAQ;AAAA,QACxD,KAAK,KAAK,EAAE;AAAA,QACZ,YAAY;AAAA,MAChB;AAAA,MACA,IAAI,aAAa,QAAQ,SAAS,OAAO;AAAA,QACrC,KAAK,KAAK,SAAS,MAAM;AAAA,QACzB;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,MAAM,aAAa,cAAY,IAAI;AAAA,IACnC,IAAI,QAAQ,QAAQ,aAAa,SAAS;AAAA,MACtC,MAAM,mBAAmB,UAAU;AAAA,MACnC,MAAM,yBAAyB,IAAI,KAAK,OAAO,aAAa,mBAAmB,KAAK,OAAO;AAAA,MAC3F,MAAM,yBAAyB,KAAK,OAAO,aAAa,KAAK,OAAO;AAAA,MACpE,IAAI,yBAAyB,wBAAwB;AAAA,QACjD,KAAK,KAAK,EAAE;AAAA,MAChB;AAAA,MACA,SAAS,MAAM,MAAM,OAAO;AAAA,MAC5B,YAAY,cAAY,KAAK,GAAG,EAAE,KAAK,EAAE;AAAA,MACzC;AAAA,IACJ;AAAA,IACA,IAAI,YAAY,aAAa,WAAW,aAAa,YAAY;AAAA,MAC7D,IAAI,QAAQ,aAAa,SAAS,YAAY,SAAS;AAAA,QACnD,SAAS,MAAM,MAAM,OAAO;AAAA,QAC5B,YAAY,cAAY,KAAK,GAAG,EAAE,KAAK,EAAE;AAAA,QACzC;AAAA,MACJ;AAAA,MACA,KAAK,KAAK,EAAE;AAAA,MACZ,YAAY;AAAA,IAChB;AAAA,IACA,IAAI,YAAY,aAAa,WAAW,QAAQ,aAAa,OAAO;AAAA,MAChE,SAAS,MAAM,MAAM,OAAO;AAAA,MAC5B,YAAY,cAAY,KAAK,GAAG,EAAE,KAAK,EAAE;AAAA,MACzC;AAAA,IACJ;AAAA,IACA,KAAK,KAAK,SAAS,MAAM;AAAA,IACzB,aAAa;AAAA,EACjB;AAAA,EACA,IAAI,QAAQ,SAAS,OAAO;AAAA,IACxB,OAAO,KAAK,IAAI,CAAC,QAAQ,6BAA6B,GAAG,CAAC;AAAA,EAC9D;AAAA,EACA,MAAM,YAAY,KAAK,KAAK;AAAA,CAAI;AAAA,EAChC,IAAI,cAAc;AAAA,EAClB,SAAS,IAAI,EAAG,IAAI,UAAU,QAAQ,KAAK;AAAA,IACvC,MAAM,YAAY,UAAU;AAAA,IAC5B,eAAe;AAAA,IACf,IAAI,CAAC,aAAa;AAAA,MACd,cAAc,aAAa,YAAY,aAAa;AAAA,MACpD,IAAI,aAAa;AAAA,QACb;AAAA,MACJ;AAAA,IACJ,EACK;AAAA,MACD,cAAc;AAAA;AAAA,IAElB,IAAI,cAAc,OAAO,cAAc,KAAK;AAAA,MACxC,YAAY,YAAY,IAAI;AAAA,MAC5B,MAAM,eAAe,YAAY,KAAK,SAAS;AAAA,MAC/C,MAAM,SAAS,cAAc;AAAA,MAC7B,IAAI,QAAQ,SAAS,WAAW;AAAA,QAC5B,MAAM,OAAO,OAAO,WAAW,OAAO,IAAI;AAAA,QAC1C,aAAa,SAAS,WAAW,YAAY;AAAA,MACjD,EACK,SAAI,QAAQ,QAAQ,WAAW;AAAA,QAChC,YAAY,OAAO,IAAI,WAAW,IAAI,YAAY,OAAO;AAAA,MAC7D;AAAA,IACJ;AAAA,IACA,IAAI,UAAU,IAAI,OAAO;AAAA,GAAM;AAAA,MAC3B,IAAI,WAAW;AAAA,QACX,eAAe,kBAAkB,EAAE;AAAA,MACvC;AAAA,MACA,MAAM,cAAc,aAAa,eAAe,UAAU,IAAI;AAAA,MAC9D,IAAI,cAAc,aAAa;AAAA,QAC3B,eAAe,aAAa,WAAW;AAAA,MAC3C;AAAA,IACJ,EACK,SAAI,cAAc;AAAA,GAAM;AAAA,MACzB,IAAI,cAAc,eAAe,UAAU,GAAG;AAAA,QAC1C,eAAe,aAAa,UAAU;AAAA,MAC1C;AAAA,MACA,IAAI,WAAW;AAAA,QACX,eAAe,kBAAkB,SAAS;AAAA,MAC9C;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,OAAO;AAAA;AAEX,IAAM,aAAa;AACZ,SAAS,QAAQ,CAAC,QAAQ,SAAS,SAAS;AAAA,EAC/C,OAAO,OAAO,MAAM,EACf,UAAU,EACV,MAAM,UAAU,EAChB,IAAI,CAAC,SAAS,KAAK,MAAM,SAAS,OAAO,CAAC,EAC1C,KAAK;AAAA,CAAI;AAAA;;;AJnNlB;AACA;AAEA,SAAS,UAAU,CAAC,GAAG,GAAG,IAAG;AAAA,EAC3B,IAAI,CAAC,GAAE,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ;AAAA,IAC5B,OAAO;AAAA,EACT,MAAM,IAAI,IAAI,GAAG,IAAI,KAAK,IAAI,GAAE,SAAS,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AAAA,EAC5E,OAAO,GAAE,GAAG,WAAW,WAAW,GAAG,IAAI,IAAI,KAAK,GAAG,EAAC,IAAI;AAAA;AAE5D,SAAS,cAAc,CAAC,GAAG,GAAG,IAAG,GAAG;AAAA,EAClC,MAAM,IAAI,EAAE,MAAM;AAAA,CACnB;AAAA,EACC,IAAI,IAAI,GAAG,IAAI;AAAA,EACf,WAAW,KAAK,GAAG;AAAA,IACjB,IAAI,KAAK,EAAE;AAAA,MACT;AAAA,IACF,KAAK,EAAE,SAAS,GAAG;AAAA,EACrB;AAAA,EACA,KAAK,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,EAAE,SAAS,GAAG,IAAI,EAAC,CAAC,GAAG,IAAI,KAAK,IAAI,GAAG,EAAE,GAAG,MAAM,IAAI,EAAG,IAAI,KAAK,IAAI;AAAA,IAClG,KAAK,KAAK,EAAE,GAAG,SAAS;AAAA,EAC1B,MAAO,IAAI,EAAE,GAAG,UAAU,IAAI,EAAE,SAAS;AAAA,IACvC,KAAK,EAAE,GAAG,SAAS,GAAG;AAAA,EACxB,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC;AAAA,EACxC,IAAI,IAAI;AAAA,EACR,SAAS,IAAI,EAAG,IAAI,GAAG;AAAA,IACrB,KAAK,EAAE,GAAG,SAAS;AAAA,EACrB,OAAO,IAAI;AAAA;AAGb,IAAM,MAAM,CAAC,MAAM,QAAQ,QAAQ,SAAS,SAAS,SAAS,QAAQ;AAAtE,IAAyE,IAAI;AAAA,EAC3E;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACA,IAAM,WAAW;AAAA,EACf,SAAS,IAAI,IAAI,GAAG;AAAA,EACpB,yBAAyB,IAAI,IAAI;AAAA,IAE/B,CAAC,KAAK,IAAI;AAAA,IACV,CAAC,KAAK,MAAM;AAAA,IACZ,CAAC,KAAK,MAAM;AAAA,IACZ,CAAC,KAAK,OAAO;AAAA,IACb,CAAC,QAAK,QAAQ;AAAA,IAEd,CAAC,UAAU,QAAQ;AAAA,EACrB,CAAC;AAAA,EACD,UAAU;AAAA,IACR,QAAQ;AAAA,IACR,OAAO;AAAA,EACT;AAAA,EACA,WAAW;AAAA,EACX,MAAM;AAAA,IACJ,YAAY,CAAC,GAAG,CAAC;AAAA,IACjB,UAAU;AAAA,MACR,UAAU;AAAA,MACV,cAAc;AAAA,MACd,YAAY,CAAC,GAAG,MAAM,kBAAkB,aAAa;AAAA,MACrD,UAAU,CAAC,MAAM,4BAA4B,EAAE,YAAY,EAAE,MAAM,GAAG,EAAE;AAAA,MACxE,WAAW,CAAC,MAAM,6BAA6B,EAAE,YAAY,EAAE,MAAM,GAAG,EAAE;AAAA,IAC5E;AAAA,EACF;AACF;AAmBA,SAAS,WAAW,CAAC,GAAG,GAAG;AAAA,EACzB,IAAI,OAAO,KAAK;AAAA,IACd,OAAO,SAAS,QAAQ,IAAI,CAAC,MAAM;AAAA,EACrC,WAAW,KAAK;AAAA,IACd,IAAI,MAAW,aAAK,YAAY,GAAG,CAAC;AAAA,MAClC,OAAO;AAAA,EACX,OAAO;AAAA;AAGT,SAAS,SAAS,CAAC,GAAG,GAAG;AAAA,EACvB,IAAI,MAAM;AAAA,IAAG;AAAA,EACb,MAAM,IAAI,EAAE,MAAM;AAAA,CACnB,GAAG,KAAI,EAAE,MAAM;AAAA,CACf,GAAG,IAAI,KAAK,IAAI,EAAE,QAAQ,GAAE,MAAM,GAAG,IAAI,CAAC;AAAA,EACzC,SAAS,IAAI,EAAG,IAAI,GAAG;AAAA,IACrB,EAAE,OAAO,GAAE,MAAM,EAAE,KAAK,CAAC;AAAA,EAC3B,OAAO;AAAA,IACL,OAAO;AAAA,IACP,gBAAgB,EAAE;AAAA,IAClB,eAAe,GAAE;AAAA,IACjB,UAAU;AAAA,EACZ;AAAA;AAGF,IAAM,IAAI,WAAW,QAAQ,SAAS,WAAW,KAAK;AACtD,IAAM,gBAAgB,OAAO,cAAc;AAC3C,SAAS,QAAQ,CAAC,GAAG;AAAA,EACnB,OAAO,MAAM;AAAA;AAEf,SAAS,UAAU,CAAC,GAAG,GAAG;AAAA,EACxB,MAAM,IAAI;AAAA,EACV,EAAE,SAAS,EAAE,WAAW,CAAC;AAAA;AAE3B,SAAS,KAAK;AAAA,EACZ,OAAO,IAAI;AAAA,EACX,QAAQ,IAAI;AAAA,EACZ,WAAW,IAAI;AAAA,EACf,YAAY,KAAI;AAAA,IACd,CAAC,GAAG;AAAA,EACN,MAAM,IAAM,kBAAgB;AAAA,IAC1B,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,EACX,CAAC;AAAA,EACC,qBAAmB,GAAG,CAAC,GAAG,aAAa,cAAc,EAAE,SAAS,EAAE,WAAW,IAAI;AAAA,EACnF,MAAM,IAAI,CAAC,KAAK,MAAM,GAAG,UAAU,QAAQ;AAAA,IACzC,MAAM,IAAI,OAAO,CAAC;AAAA,IAClB,IAAI,YAAY,CAAC,GAAG,GAAG,CAAC,GAAG,QAAQ,GAAG;AAAA,MACpC,MAAK,EAAE,MAAM,yBAAO,IAAI,GAAG,QAAQ,KAAK,CAAC;AAAA,MACzC;AAAA,IACF;AAAA,IACA,IAAI,CAAC;AAAA,MAAG;AAAA,IACR,MAAM,IAAI,MAAM,WAAW,IAAI,IAAI,IAAI,MAAM,WAAW,KAAK;AAAA,IAC3D,aAAW,GAAG,GAAG,GAAG,MAAM;AAAA,MACxB,YAAU,GAAG,GAAG,MAAM;AAAA,QACtB,EAAE,KAAK,YAAY,CAAC;AAAA,OACrB;AAAA,KACF;AAAA;AAAA,EAEH,OAAO,MAAK,EAAE,MAAM,yBAAO,IAAI,GAAG,EAAE,KAAK,YAAY,CAAC,GAAG,MAAM;AAAA,IAC7D,EAAE,IAAI,YAAY,CAAC,GAAG,MAAK,EAAE,MAAM,yBAAO,IAAI,GAAG,aAAa,cAAc,EAAE,SAAS,CAAC,KAAK,EAAE,WAAW,KAAK,GAAG,EAAE,WAAW,OAAO,EAAE,MAAM;AAAA;AAAA;AAGlJ,IAAM,aAAa,CAAC,OAAM,aAAa,MAAK,OAAO,EAAE,WAAW,WAAW,EAAE,UAAU;AAAvF,IAA2F,UAAU,CAAC,OAAM,UAAU,MAAK,OAAO,EAAE,QAAQ,WAAW,EAAE,OAAO;AAChK,SAAS,kBAAkB,CAAC,GAAG,GAAG,GAAG,KAAI,GAAG,IAAI,GAAG,GAAG;AAAA,EACpD,MAAM,IAAI,WAAW,KAAK,MAAM;AAAA,EAChC,OAAO,SAAS,GAAG,IAAI,EAAE,QAAQ;AAAA,IAC/B,MAAM;AAAA,IACN,MAAM;AAAA,EACR,CAAC,EAAE,MAAM;AAAA,CACV,EAAE,IAAI,CAAC,GAAG,GAAG,MAAM;AAAA,IAChB,MAAM,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI;AAAA,IACxB,OAAO,MAAM,IAAI,GAAG,KAAI,MAAM,MAAM,EAAE,SAAS,IAAI,GAAG,IAAI,MAAM,GAAG,IAAI;AAAA,GACxE,EAAE,KAAK;AAAA,CACT;AAAA;AAGD,SAAS,aAAa,CAAC,GAAG,GAAG;AAAA,EAC3B,IAAI,eAAe,GAAG;AAAA,IACpB,MAAM,IAAI,EAAE,aAAa,SAAS,CAAC;AAAA,IACnC,IAAI,aAAa;AAAA,MACf,MAAM,IAAI,UACR,+FACF;AAAA,IACF,OAAO,EAAE,QAAQ,GAAG,CAAC,GAAG;AAAA,EAC1B;AAAA,EACA,OAAO,EAAE,CAAC;AAAA;AAAA;AAGZ,MAAM,EAAE;AAAA,EACN;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT,aAAa;AAAA,EACb,+BAA+B,IAAI;AAAA,EACnC,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR;AAAA,EACA,YAAY;AAAA,EACZ,WAAW,CAAC,IAAG,IAAI,MAAM;AAAA,IACvB,QAAQ,OAAO,IAAI,OAAO,QAAQ,IAAI,QAAQ,QAAQ,GAAG,QAAQ,MAAM,MAAM;AAAA,IAC7E,KAAK,OAAO,GAAG,KAAK,aAAa,KAAK,WAAW,KAAK,IAAI,GAAG,KAAK,QAAQ,KAAK,MAAM,KAAK,IAAI,GAAG,KAAK,SAAS,KAAK,OAAO,KAAK,IAAI,GAAG,KAAK,UAAU,EAAE,KAAK,IAAI,GAAG,KAAK,SAAS,GAAG,KAAK,eAAe,GAAG,KAAK,QAAQ,GAAG,KAAK,SAAS;AAAA;AAAA,EAK5O,WAAW,GAAG;AAAA,IACZ,KAAK,aAAa,MAAM;AAAA;AAAA,EAM1B,aAAa,CAAC,IAAG,GAAG;AAAA,IAClB,MAAM,IAAI,KAAK,aAAa,IAAI,EAAC,KAAK,CAAC;AAAA,IACvC,EAAE,KAAK,CAAC,GAAG,KAAK,aAAa,IAAI,IAAG,CAAC;AAAA;AAAA,EAOvC,EAAE,CAAC,IAAG,GAAG;AAAA,IACP,KAAK,cAAc,IAAG,EAAE,IAAI,EAAE,CAAC;AAAA;AAAA,EAOjC,IAAI,CAAC,IAAG,GAAG;AAAA,IACT,KAAK,cAAc,IAAG,EAAE,IAAI,GAAG,MAAM,KAAK,CAAC;AAAA;AAAA,EAO7C,IAAI,CAAC,OAAM,GAAG;AAAA,IACZ,MAAM,IAAI,KAAK,aAAa,IAAI,EAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AAAA,IAC/C,WAAW,KAAK;AAAA,MACd,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;AAAA,IAC9D,WAAW,KAAK;AAAA,MACd,EAAE;AAAA;AAAA,EAEN,MAAM,GAAG;AAAA,IACP,OAAO,IAAI,QAAQ,CAAC,OAAM;AAAA,MACxB,IAAI,KAAK,cAAc;AAAA,QACrB,IAAI,KAAK,aAAa;AAAA,UACpB,OAAO,KAAK,QAAQ,UAAU,KAAK,MAAM,GAAG,GAAE,aAAa;AAAA,QAC7D,KAAK,aAAa,iBAChB,SACA,MAAM;AAAA,UACJ,KAAK,QAAQ,UAAU,KAAK,MAAM;AAAA,WAEpC,EAAE,MAAM,KAAK,CACf;AAAA,MACF;AAAA,MACA,KAAK,KAAK,WAAW,gBAAgB;AAAA,QACnC,OAAO,KAAK;AAAA,QACZ,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,mBAAmB;AAAA,QACnB,UAAU;AAAA,MACZ,CAAC,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,KAAK,qBAA0B,aAAK,KAAK,cAAc,KAAK,KAAK,kBAAkB,IAAI,GAAG,KAAK,MAAM,GAAG,YAAY,KAAK,UAAU,GAAG,WAAW,KAAK,OAAO,IAAI,GAAG,KAAK,OAAO,GAAG,UAAU,KAAK,MAAM,GAAG,KAAK,OAAO,GAAG,KAAK,KAAK,UAAU,MAAM;AAAA,QAC7Q,KAAK,OAAO,MAAM,yBAAO,IAAI,GAAG,KAAK,OAAO,IAAI,UAAU,KAAK,MAAM,GAAG,WAAW,KAAK,OAAO,KAAK,GAAG,GAAE,KAAK,KAAK;AAAA,OACpH,GAAG,KAAK,KAAK,UAAU,MAAM;AAAA,QAC5B,KAAK,OAAO,MAAM,yBAAO,IAAI,GAAG,KAAK,OAAO,IAAI,UAAU,KAAK,MAAM,GAAG,WAAW,KAAK,OAAO,KAAK,GAAG,GAAE,aAAa;AAAA,OACvH;AAAA,KACF;AAAA;AAAA,EAEH,YAAY,CAAC,IAAG,GAAG;AAAA,IACjB,OAAO,OAAM;AAAA;AAAA,EAEf,aAAa,CAAC,IAAG,GAAG;AAAA,IAClB,OAAO;AAAA;AAAA,EAET,SAAS,CAAC,IAAG;AAAA,IACX,KAAK,QAAQ,IAAG,KAAK,KAAK,SAAS,KAAK,KAAK;AAAA;AAAA,EAE/C,aAAa,CAAC,IAAG,GAAG;AAAA,IAClB,KAAK,YAAY,MAAK,IAAI,KAAK,KAAK,aAAa,KAAK,SAAS,GAAG,KAAK,KAAK,UAAU,KAAK,OAAO,KAAK,GAAG,MAAM,KAAK,SAAS,GAAG,KAAK,UAAU,KAAK,GAAG;AAAA;AAAA,EAE1J,eAAe,GAAG;AAAA,IAChB,KAAK,IAAI,MAAM,MAAM,EAAE,MAAM,MAAM,MAAM,IAAI,CAAC,GAAG,KAAK,cAAc,EAAE;AAAA;AAAA,EAExE,UAAU,CAAC,IAAG,GAAG;AAAA,IACf,IAAI,KAAK,UAAU,EAAE,SAAS,aAAa,EAAE,QAAQ,KAAK,aAAa,IAAG,CAAC,KAAK,KAAK,IAAI,MAAM,MAAM,EAAE,MAAM,MAAM,MAAM,IAAI,CAAC,GAAG,KAAK,UAAU,KAAK,IAAI,UAAU,GAAG,KAAK,cAAc,KAAK,IAAI,IAAI,IAAI,KAAK,UAAU,YAAY,KAAK,QAAQ,WAAW,GAAG,SAAS,CAAC,KAAK,UAAU,SAAS,QAAQ,IAAI,EAAE,IAAI,KAAK,KAAK,KAAK,UAAU,SAAS,QAAQ,IAAI,EAAE,IAAI,CAAC,GAAG,SAAS,QAAQ,IAAI,EAAE,IAAI,KAAK,KAAK,KAAK,UAAU,EAAE,IAAI,IAAI,OAAM,GAAE,YAAY,MAAM,OAAO,GAAE,YAAY,MAAM,QAAQ,KAAK,KAAK,WAAW,GAAE,YAAY,MAAM,GAAG,GAAG,KAAK,KAAK,OAAO,IAAG,CAAC,GAAG,GAAG,SAAS,YAAY,KAAK,cAAc,IAAG,CAAC,GAAG;AAAA,MAC9lB,IAAI,KAAK,KAAK,UAAU;AAAA,QACtB,MAAM,IAAI,cAAc,KAAK,KAAK,UAAU,KAAK,KAAK;AAAA,QACtD,MAAM,KAAK,QAAQ,aAAa,QAAQ,EAAE,UAAU,GAAG,KAAK,QAAQ,SAAS,KAAK,IAAI,MAAM,KAAK,SAAS;AAAA,MAC5G;AAAA,MACA,KAAK,UAAU,YAAY,KAAK,QAAQ;AAAA,IAC1C;AAAA,IACA,YAAY,CAAC,IAAG,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,MAAM,KAAK,QAAQ,YAAY,KAAK,UAAU,YAAY,KAAK,UAAU,aAAa,KAAK,KAAK,UAAU,GAAG,KAAK,OAAO,IAAI,KAAK,UAAU,YAAY,KAAK,UAAU,aAAa,KAAK,MAAM;AAAA;AAAA,EAEhP,KAAK,GAAG;AAAA,IACN,KAAK,MAAM,OAAO,GAAG,KAAK,MAAM,eAAe,YAAY,KAAK,UAAU,GAAG,KAAK,OAAO,MAAM;AAAA,CAClG,GAAG,WAAW,KAAK,OAAO,KAAK,GAAG,KAAK,IAAI,MAAM,GAAG,KAAK,KAAU,WAAG,KAAK,KAAK,GAAG,KAAK,SAAS,KAAK,KAAK,GAAG,KAAK,YAAY;AAAA;AAAA,EAE9H,aAAa,GAAG;AAAA,IACd,MAAM,KAAI,SAAS,KAAK,YAAY,QAAQ,OAAO,SAAS,EAAE,MAAM,MAAM,MAAM,MAAM,CAAC,EAAE,MAAM;AAAA,CAClG,EAAE,SAAS;AAAA,IACR,KAAK,OAAO,MAAM,yBAAO,KAAK,MAAM,KAAI,EAAE,CAAC;AAAA;AAAA,EAE7C,MAAM,GAAG;AAAA,IACP,MAAM,KAAI,SAAS,KAAK,QAAQ,IAAI,KAAK,IAAI,QAAQ,OAAO,SAAS;AAAA,MACnE,MAAM;AAAA,MACN,MAAM;AAAA,IACR,CAAC;AAAA,IACD,IAAI,OAAM,KAAK,YAAY;AAAA,MACzB,IAAI,KAAK,UAAU;AAAA,QACjB,KAAK,OAAO,MAAM,yBAAO,IAAI;AAAA,MAC1B;AAAA,QACH,MAAM,IAAI,UAAU,KAAK,YAAY,EAAC,GAAG,IAAI,QAAQ,KAAK,MAAM;AAAA,QAChE,IAAI,KAAK,cAAc,GAAG,GAAG;AAAA,UAC3B,MAAM,IAAI,KAAK,IAAI,GAAG,EAAE,gBAAgB,CAAC,GAAG,IAAI,KAAK,IAAI,GAAG,EAAE,iBAAiB,CAAC;AAAA,UAChF,IAAI,IAAI,EAAE,MAAM,KAAK,CAAC,MAAM,KAAK,CAAC;AAAA,UAClC,IAAI,MAAW,WAAG;AAAA,YAChB,KAAK,aAAa;AAAA,YAClB;AAAA,UACF;AAAA,UACA,IAAI,EAAE,MAAM,WAAW,GAAG;AAAA,YACxB,KAAK,OAAO,MAAM,yBAAO,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,MAAM,wBAAM,MAAM,CAAC,CAAC;AAAA,YAC1E,MAAM,IAAI,GAAE,MAAM;AAAA,CAC7B;AAAA,YACW,KAAK,OAAO,MAAM,EAAE,EAAE,GAAG,KAAK,aAAa,IAAG,KAAK,OAAO,MAAM,yBAAO,KAAK,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC;AAAA,YAChG;AAAA,UACF,EAAO,SAAI,EAAE,MAAM,SAAS,GAAG;AAAA,YAC7B,IAAI,IAAI;AAAA,cACN,IAAI;AAAA,YACD;AAAA,cACH,MAAM,IAAI,IAAI;AAAA,cACd,IAAI,KAAK,KAAK,OAAO,MAAM,yBAAO,KAAK,GAAG,CAAC,CAAC;AAAA;AAAA,YAE9C,KAAK,OAAO,MAAM,wBAAM,KAAK,CAAC;AAAA,YAC9B,MAAM,IAAI,GAAE,MAAM;AAAA,CAC7B,EAAE,MAAM,CAAC;AAAA,YACE,KAAK,OAAO,MAAM,EAAE,KAAK;AAAA,CACpC,CAAC,GAAG,KAAK,aAAa;AAAA,YACX;AAAA,UACF;AAAA,QACF;AAAA,QACA,KAAK,OAAO,MAAM,wBAAM,KAAK,CAAC;AAAA;AAAA,MAEhC,KAAK,OAAO,MAAM,EAAC,GAAG,KAAK,UAAU,cAAc,KAAK,QAAQ,WAAW,KAAK,aAAa;AAAA,IAC/F;AAAA;AAEJ;AAEA,SAAS,GAAG,CAAC,IAAG,GAAG;AAAA,EACjB,IAAI,OAAW,aAAK,EAAE,WAAW;AAAA,IAC/B,OAAO;AAAA,EACT,MAAM,IAAI,EAAE,UAAU,CAAC,MAAM,EAAE,UAAU,EAAC;AAAA,EAC1C,OAAO,MAAM,KAAK,IAAI;AAAA;AAExB,SAAS,CAAC,CAAC,IAAG,GAAG;AAAA,EACf,QAAQ,EAAE,SAAS,OAAO,EAAE,KAAK,GAAG,YAAY,EAAE,SAAS,GAAE,YAAY,CAAC;AAAA;AAE5E,SAAS,CAAC,CAAC,IAAG,GAAG;AAAA,EACf,IAAI;AAAA,IACF,OAAO,KAAI,IAAI,EAAE;AAAA;AAErB,IAAI,MAAM,MAAM,UAAU,EAAE;AAAA,EAC1B;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,iBAAiB,CAAC;AAAA,EAClB;AAAA,EACA,KAAK;AAAA,EACL,KAAK;AAAA,EACL;AAAA,EACA;AAAA,EACA;AAAA,MACI,MAAM,GAAG;AAAA,IACX,OAAO,KAAK;AAAA;AAAA,MAEV,mBAAmB,GAAG;AAAA,IACxB,IAAI,CAAC,KAAK;AAAA,MACR,OAAO,UAAU,CAAC,WAAW,QAAQ,GAAG,GAAG;AAAA,IAC7C,IAAI,KAAK,WAAW,KAAK,UAAU;AAAA,MACjC,OAAO,GAAG,KAAK;AAAA,IACjB,MAAM,IAAI,KAAK,UAAU,MAAM,GAAG,KAAK,OAAO,IAAI,OAAM,KAAK,KAAK,UAAU,MAAM,KAAK,OAAO;AAAA,IAC9F,OAAO,GAAG,IAAI,UAAU,WAAW,EAAC,IAAI,EAAE,KAAK,EAAE;AAAA;AAAA,MAE/C,OAAO,GAAG;AAAA,IACZ,OAAO,OAAO,KAAK,MAAM,aAAa,KAAK,GAAG,IAAI,KAAK;AAAA;AAAA,EAEzD,WAAW,CAAC,GAAG;AAAA,IACb,MAAM,CAAC,GAAG,KAAK,KAAK,EAAE,SAAS,KAAK,KAAK,EAAE;AAAA,IAC3C,MAAM,KAAI,KAAK;AAAA,IACf,KAAK,kBAAkB,CAAC,GAAG,EAAC,GAAG,KAAK,WAAW,EAAE,aAAa,MAAM,KAAK,KAAK,OAAO,EAAE,WAAW,aAAa,EAAE,SAAS,EAAE,UAAU;AAAA,IACtI,IAAI;AAAA,IACJ,IAAI,EAAE,gBAAgB,MAAM,QAAQ,EAAE,YAAY,IAAI,KAAK,WAAW,IAAI,EAAE,eAAe,IAAI,EAAE,aAAa,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,YAAY,KAAK,QAAQ,SAAS,MAAM,IAAI,CAAC,KAAK,QAAQ,GAAG,KAAK,IAAI;AAAA,MACtM,WAAW,KAAK,GAAG;AAAA,QACjB,MAAM,IAAI,GAAE,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC;AAAA,QAC1C,MAAM,OAAO,KAAK,eAAe,CAAC,GAAG,KAAK,KAAK;AAAA,MACjD;AAAA,IACF,KAAK,eAAe,KAAK,QAAQ,KAAK,KAAK,OAAO,KAAK,GAAG,OAAO,CAAC,GAAG,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,aAAa,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC;AAAA;AAAA,EAEnI,YAAY,CAAC,GAAG,IAAG;AAAA,IACjB,OAAO,MAAM,QAAO,KAAK,YAAY,KAAK,gBAAgB,GAAE,SAAS,WAAW,MAAW,aAAK,MAAM;AAAA;AAAA,EAExG,EAAE,CAAC,GAAG,IAAG;AAAA,IACP,MAAM,IAAI,GAAE,SAAS,MAAM,IAAI,GAAE,SAAS,QAAQ,IAAI,GAAE,SAAS,UAAU,IAAI,KAAK,cAAc,MAAM,KAAK,cAAc,MAAK,IAAI,KAAK,IAAI,IAAI,KAAK,SAAS,IAAI,MAAW,aAAK,MAAM,MAAM,EAAE,KAC/L,CAAC,MAAM,CAAC,EAAE,aAAa,KAAK,KAAK,KAAK,GAAG,GAAG,CAAC,IAAI,KACnD;AAAA,IACA,IAAI,GAAE,SAAS,SAAS,KAAK,GAAG;AAAA,MAC9B,KAAK,cAAc,QAAO,KAAK,gBAAgB,GAAG,KAAK,cAAc,GAAG,IAAI,GAAG,KAAK,eAAe;AAAA,MACnG;AAAA,IACF;AAAA,IACA,KAAK,KAAK,KAAK,KAAK,WAAW,KAAK,IAAI,IAAI,KAAK,GAAG,KAAK,eAAe,GAAG,KAAK,eAAe,KAAK,gBAAgB,KAAK,KAAK,OAAO,KAAK,aAAa,KAAK,iBAAiB,CAAC,KAAK,YAAY,IAAI,KAAK,eAAe,QAAQ,IAAI,KAAK,QAAQ,EAAE,KAAK,UAAU,KAAK,cAAc,IAAI,KAAK,WAAW,KAAK,iBAAsB,cAAM,GAAE,SAAS,SAAS,KAAK,gBAAgB,GAAE,SAAS,WAAW,KAAK,eAAe,KAAK,YAAY,IAAI,KAAK,eAAe,SAAS,KAAK,iBAAiB,KAAK,iBAAiB,CAAC,KAAK,YAAY,IAAI,KAAK,eAAe;AAAA;AAAA,EAEtiB,WAAW,GAAG;AAAA,IACZ,KAAK,iBAAiB,CAAC;AAAA;AAAA,EAEzB,cAAc,CAAC,GAAG;AAAA,IAChB,KAAK,gBAAgB,WAAW,MAAM,KAAK,WAAW,KAAK,eAAe,SAAS,CAAC,IAAI,KAAK,iBAAiB,KAAK,eAAe,OAAO,CAAC,OAAM,OAAM,CAAC,IAAI,KAAK,iBAAiB,CAAC,GAAG,KAAK,gBAAgB,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;AAAA;AAAA,EAEzO,EAAE,CAAC,GAAG;AAAA,IACJ,IAAI,MAAM,KAAK,IAAI;AAAA,MACjB,KAAK,KAAK;AAAA,MACV,MAAM,KAAI,KAAK;AAAA,MACf,KAAK,KAAK,KAAK,KAAK,kBAAkB,GAAE,OAAO,CAAC,MAAM,KAAK,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAAC,GAAG,EAAC;AAAA,MACrG,MAAM,IAAI,IAAI,KAAK,cAAc,KAAK,eAAe;AAAA,MACrD,KAAK,KAAK,WAAW,GAAG,GAAG,KAAK,eAAe;AAAA,MAC/C,MAAM,IAAI,KAAK,gBAAgB,KAAK;AAAA,MACpC,KAAK,CAAC,EAAE,WAAW,KAAK,eAAe,EAAE,QAAQ,KAAK,eAAoB,WAAG,KAAK,aAAa,KAAK,iBAAsB,YAAI,KAAK,eAAe,KAAK,YAAY,IAAI,KAAK,YAAY;AAAA,IAC1L;AAAA;AAEJ;AAoBA,IAAM,IAAI;AAAA,EACR,GAAG,EAAE,MAAM,QAAQ,KAAK,EAAE;AAAA,EAC1B,GAAG,EAAE,MAAM,SAAS,KAAK,EAAE;AAAA,EAC3B,GAAG,EAAE,MAAM,OAAO,KAAK,EAAE;AAC3B;AACA,SAAS,CAAC,CAAC,GAAG;AAAA,EACZ,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,OAAM,EAAE,GAAE;AAAA;AAE/B,SAAS,CAAC,CAAC,GAAG;AAAA,EACZ,MAAM,IAAI,IAAI,KAAK,eAAe,GAAG;AAAA,IACnC,MAAM;AAAA,IACN,OAAO;AAAA,IACP,KAAK;AAAA,EACP,CAAC,EAAE,cAAc,IAAI,KAAK,MAAK,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;AAAA,EAC7C,IAAI,IAAI;AAAA,EACR,WAAW,KAAK;AAAA,IACd,EAAE,SAAS,YAAY,IAAI,EAAE,MAAM,KAAK,KAAK,EAAE,SAAS,EAAE,SAAS,UAAU,EAAE,SAAS,WAAW,EAAE,SAAS,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,EAAE,SAAS,SAAS,IAAI,EAAE,CAAC;AAAA,EACjL,OAAO,EAAE,UAAU,GAAG,WAAW,EAAE;AAAA;AAErC,SAAS,CAAC,CAAC,GAAG;AAAA,EACZ,OAAO,OAAO,UAAU,KAAK,KAAK,QAAQ,MAAM,GAAG,GAAG,EAAE,KAAK;AAAA;AAE/D,SAAS,CAAC,CAAC,GAAG;AAAA,EACZ,OAAO;AAAA,IACL,MAAM,EAAE,EAAE,IAAI;AAAA,IACd,OAAO,EAAE,EAAE,KAAK;AAAA,IAChB,KAAK,EAAE,EAAE,GAAG;AAAA,EACd;AAAA;AAEF,SAAS,CAAC,CAAC,GAAG,IAAG;AAAA,EACf,OAAO,IAAI,KAAK,KAAK,MAAM,MAAK,GAAG,CAAC,EAAE,QAAQ;AAAA;AAEhD,SAAS,CAAC,CAAC,GAAG;AAAA,EACZ,QAAQ,MAAM,IAAG,OAAO,GAAG,KAAK,MAAM,EAAE,CAAC;AAAA,EACzC,IAAI,CAAC,MAAK,KAAI,KAAK,KAAI,QAAQ,CAAC,KAAK,IAAI,KAAK,IAAI,MAAM,CAAC,KAAK,IAAI;AAAA,IAAG;AAAA,EACrE,MAAM,IAAI,IAAI,KAAK,KAAK,IAAI,IAAG,IAAI,GAAG,CAAC,CAAC;AAAA,EACxC,IAAI,EAAE,EAAE,eAAe,MAAM,MAAK,EAAE,YAAY,MAAM,IAAI,KAAK,EAAE,WAAW,MAAM;AAAA,IAChF,OAAO,EAAE,MAAM,IAAG,OAAO,GAAG,KAAK,EAAE;AAAA;AAEvC,SAAS,CAAC,CAAC,GAAG;AAAA,EACZ,MAAM,KAAI,EAAE,CAAC;AAAA,EACb,OAAO,KAAI,IAAI,KAAK,KAAK,IAAI,GAAE,MAAM,GAAE,QAAQ,GAAG,GAAE,GAAG,CAAC,IAAS;AAAA;AAEnE,SAAS,EAAC,CAAC,GAAG,IAAG,GAAG,GAAG;AAAA,EACrB,MAAM,IAAI,IAAI;AAAA,IACZ,MAAM,EAAE,eAAe;AAAA,IACvB,OAAO,EAAE,YAAY,IAAI;AAAA,IACzB,KAAK,EAAE,WAAW;AAAA,EACpB,IAAI,MAAM,IAAI,IAAI;AAAA,IAChB,MAAM,EAAE,eAAe;AAAA,IACvB,OAAO,EAAE,YAAY,IAAI;AAAA,IACzB,KAAK,EAAE,WAAW;AAAA,EACpB,IAAI;AAAA,EACJ,OAAO,MAAM,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,KAAK,IAAI,MAAM,UAAU;AAAA,IAClF,KAAK,KAAK,GAAE,SAAS,EAAE,OAAO,EAAE,QAAQ;AAAA,IACxC,KAAK,KAAK,GAAE,SAAS,EAAE,OAAO,EAAE,QAAQ;AAAA,EAC1C,IAAI;AAAA,IACF,KAAK,KAAK,GAAE,SAAS,EAAE,QAAQ,GAAE,UAAU,EAAE,QAAQ,EAAE,MAAM;AAAA,IAC7D,KAAK,KAAK,GAAE,SAAS,EAAE,QAAQ,GAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAE,MAAM,GAAE,KAAK;AAAA,EAChF;AAAA;AAAA;AAEF,MAAM,UAAU,EAAE;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,KAAK,EAAE,cAAc,GAAG,mBAAmB,EAAE;AAAA,EAC7C,KAAK;AAAA,EACL,KAAK;AAAA,EACL,cAAc;AAAA,MACV,aAAa,GAAG;AAAA,IAClB,OAAO,KAAK,KAAK,GAAG;AAAA;AAAA,MAElB,aAAa,GAAG;AAAA,IAClB,OAAO,KAAK,KAAK,GAAG;AAAA;AAAA,MAElB,QAAQ,GAAG;AAAA,IACb,OAAO,KAAK;AAAA;AAAA,MAEV,SAAS,GAAG;AAAA,IACd,OAAO,KAAK;AAAA;AAAA,MAEV,cAAc,GAAG;AAAA,IACnB,OAAO,KAAK,GAAG,KAAK,EAAE;AAAA;AAAA,EAExB,EAAE,CAAC,IAAG;AAAA,IACJ,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,GAAE,EAAE,KAAK,EAAE,KAAK,KAAK,EAAE;AAAA;AAAA,EAEnD,EAAE,GAAG;AAAA,IACH,KAAK,cAAc,KAAK,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,UAAU,EAAE,KAAK,EAAE,KAAU,SAAC;AAAA;AAAA,EAE3E,WAAW,CAAC,IAAG;AAAA,IACb,MAAM,IAAI,GAAE,SAAS,EAAE,UAAU,EAAE,GAAE,MAAM,GAAG,WAAW,GAAE,aAAa,IAAI,IAAI,EAAE,GAAE,MAAM,GAAG,IAAI,GAAE,aAAa,EAAE,WAAW,IAAI,GAAE,SAAS,EAAE,GAAE,MAAM,IAAI,EAAE,UAAU,IAAI,GAAE,gBAAgB,GAAE,cAAc,KAAI,IAAI;AAAA,MAClN,MAAM,OAAO,EAAE,eAAe,CAAC,EAAE,SAAS,GAAG,GAAG;AAAA,MAChD,OAAO,OAAO,EAAE,YAAY,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG;AAAA,MAClD,KAAK,OAAO,EAAE,WAAW,CAAC,EAAE,SAAS,GAAG,GAAG;AAAA,IAC7C,IAAI,EAAE,MAAM,QAAQ,OAAO,MAAM,KAAK,KAAK,GAAG,IAAI,EAAE,IAAI,CAAC,MAAM,GAAE,EAAE,KAAK,EAAE,KAAK,CAAC;AAAA,IAChF,MAAM,KAAK,IAAG,kBAAkB,EAAE,GAAG,KAAK,GAAG,KAAK,KAAK,GAAG,KAAK,KAAK,GAAG,KAAK,KAAK,IAAG,KAAK,KAAK,GAAE,SAAS,KAAK,KAAK,GAAE,SAAS,KAAK,GAAG,GAAG,KAAK,GAAG,UAAU,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,OAAO,CAAC,GAAG,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,YAAY,MAAM,KAAK,GAAG,EAAC,CAAC;AAAA;AAAA,EAE9P,EAAE,GAAG;AAAA,IACH,MAAM,KAAI,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,GAAG,cAAc,KAAK,GAAG,SAAS,CAAC,CAAC,GAAG,IAAI,KAAK,GAAG;AAAA,IACvF,IAAI;AAAA,MACF,OAAO,KAAK,GAAG,oBAAoB,KAAK,IACtC,GACA,KAAK,IAAI,KAAK,GAAG,mBAAmB,EAAE,MAAM,CAAC,CAC/C,GAAG,EAAE,SAAS,GAAG,OAAO,GAAE;AAAA;AAAA,EAE9B,EAAE,CAAC,IAAG;AAAA,IACJ,KAAK,cAAc,IAAI,KAAK,KAAK;AAAA,IACjC,MAAM,IAAI,KAAK,GAAG;AAAA,IAClB,MAAM,KAAK,GAAG,eAAe,KAAK,IAChC,GACA,KAAK,IAAI,KAAK,GAAG,SAAS,GAAG,EAAE,QAAQ,EAAC,CAC1C,GAAG,KAAK,GAAG,oBAAoB,GAAG,KAAK,KAAK;AAAA;AAAA,EAE9C,EAAE,CAAC,IAAG;AAAA,IACJ,MAAM,IAAI,KAAK,GAAG;AAAA,IAClB,IAAI,CAAC;AAAA,MAAG;AAAA,IACR,QAAQ,SAAS,MAAM,GAAG,IAAI,KAAK,GAAG,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE,QAAQ,MAAM,EAAE,MAAM,IAAI,KAAI,OAAO,UAAU,KAAK,KAAK,QAAQ,MAAM,GAAG,GAAG,EAAE,KAAK,GAAG,IAAI,GACpJ,EAAE,MACF,EAAE,KAAK,EAAE,GACT,KAAK,IACL,KAAK,EACP;AAAA,IACA,IAAI;AAAA,IACJ,IAAI,IAAI,OAAM,IAAI,EAAE,MAAM,EAAE,MAAM,IAAI,KAAK,IAAI,KAAK,IAAI,EAAE,KAAK,KAAI,EAAC,GAAG,EAAE,GAAG,GAAG,KAAK,KAAK;AAAA,SACpF,KAAK;AAAA,OACP,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,GAAG;AAAA,IAC5C,GAAG,KAAK,KAAK,MAAM,KAAK,KAAK,MAAM,KAAK,GAAG;AAAA;AAAA,EAE7C,EAAE,CAAC,IAAG;AAAA,IACJ,IAAI;AAAA,MACF,QAAQ;AAAA,aACD;AAAA,UACH,OAAO,KAAK,GAAG,CAAC;AAAA,aACb;AAAA,UACH,OAAO,KAAK,GAAG,EAAE;AAAA,aACd;AAAA,UACH,OAAO,KAAK,GAAG,CAAC;AAAA,aACb;AAAA,UACH,OAAO,KAAK,GAAG,EAAE;AAAA;AAAA;AAAA,EAGzB,EAAE,CAAC,IAAG,GAAG;AAAA,IACP,IAAI,GAAG,SAAS,eAAe,GAAG,aAAa,UAAU,GAAG,aAAa,QAAQ,OAAM,UAAU,OAAM,MAAM;AAAA,MAC3G,KAAK,cAAc;AAAA,MACnB,MAAM,IAAI,KAAK,GAAG;AAAA,MAClB,IAAI,CAAC;AAAA,QAAG;AAAA,MACR,IAAI,CAAC,KAAK,GAAG,EAAE,QAAQ,MAAM,QAAQ,MAAM,EAAE,GAAG;AAAA,QAC9C,KAAK,GAAG,EAAE;AAAA,QACV;AAAA,MACF;AAAA,MACA,KAAK,GAAG,EAAE,QAAQ,QAAQ,IAAI,OAAO,EAAE,QAAQ,GAAG,GAAG,KAAK,KAAK,MAAM,KAAK,GAAG,oBAAoB,GAAG,KAAK,GAAG;AAAA,MAC5G;AAAA,IACF;AAAA,IACA,IAAI,GAAG,SAAS,OAAO;AAAA,MACrB,KAAK,cAAc;AAAA,MACnB,MAAM,IAAI,KAAK,GAAG;AAAA,MAClB,IAAI,CAAC;AAAA,QAAG;AAAA,MACR,MAAM,IAAI,EAAE,QAAQ,KAAK,GAAG,KAAI,EAAE,QAAQ;AAAA,MAC1C,MAAK,KAAK,KAAI,KAAK,GAAG,WAAW,KAAK,GAAG,eAAe,IAAG,KAAK,GAAG,oBAAoB,GAAG,KAAK,KAAK;AAAA,MACpG;AAAA,IACF;AAAA,IACA,IAAI,MAAK,UAAU,KAAK,EAAC,GAAG;AAAA,MAC1B,MAAM,IAAI,KAAK,GAAG;AAAA,MAClB,IAAI,CAAC;AAAA,QAAG;AAAA,MACR,QAAQ,SAAS,MAAM,GAAG,KAAI,CAAC,KAAK,GAAG,EAAE,MAAM,QAAQ,MAAM,EAAE;AAAA,MAC/D,IAAI,KAAK,MAAM,KAAK,OAAO,QAAQ,CAAC,IAAG;AAAA,QACrC,MAAM,IAAI,KAAK,KAAK,IAAG,IAAI,KAAK,KAAK,KAAK,EAAE,OAAO,EAAE,GAAG,KAAI,KAAK,GAAG,GAAG,CAAC;AAAA,QACxE,IAAI,IAAG;AAAA,UACL,KAAK,cAAc,IAAG,KAAK,KAAK,MAAM,KAAK,KAAK;AAAA,UAChD;AAAA,QACF;AAAA,QACA,KAAK,cAAc,IAAI,KAAK,GAAG,EAAE,QAAQ,GAAG,KAAK,KAAK,MAAM,KAAK,KAAK,OAAO,KAAK,GAAG,GAAG,EAAE,QAAQ,KAAK,GAAG,SAAS,MAAM,KAAK,GAAG,eAAe,EAAE,QAAQ,GAAG,KAAK,GAAG,oBAAoB,GAAG,KAAK,KAAK;AAAA,QACtM;AAAA,MACF;AAAA,MACA,KAAK,MAAM,CAAC,OAAM,KAAK,GAAG,EAAE,QAAQ,IAAI,OAAO,EAAE,GAAG,GAAG,KAAK,GAAG,oBAAoB,IAAI,KAAK,KAAK,OAAO,KAAK,KAAK;AAAA,MAClH,MAAM,IAAI,KAAK,GAAG,EAAE,OAAO,IAAI,EAAE,QAAQ,GAAG,GAAG,IAAI,KAAK,IAAI,IAAI,KAAK,IAAI,KAAK,GAAG,mBAAmB,EAAE,MAAM,CAAC;AAAA,MAC7G,IAAI,IAAI,KAAK,KAAK,EAAE;AAAA,QAAK;AAAA,MACzB,IAAI,KAAI,EAAE,MAAM,GAAG,CAAC,IAAI,KAAI,EAAE,MAAM,IAAI,CAAC,GAAG,IAAI;AAAA,MAChD,IAAI,MAAM,KAAK,MAAM,SAAS,EAAE,SAAS,WAAW,EAAE,SAAS,QAAQ;AAAA,QACrE,MAAM,IAAI,OAAO,SAAS,IAAG,EAAE;AAAA,QAC/B,KAAI,IAAI,MAAK,IAAI,MAAM,EAAE,SAAS,UAAU,IAAI;AAAA,MAClD;AAAA,MACA,IAAI,EAAE,SAAS,WAAW,MAAK,EAAE,QAAQ,MAAM,EAAE,IAAI,IAAG,SAAS,EAAE,KAAK,GAAG,IAAI,CAAC,GAAE,SAAS,GAAG,GAAG;AAAA,QAC/F,MAAM,IAAI,KAAK,KAAK,KAAK,EAAE,OAAO,GAAE,GAAG,IAAI,KAAK,GAAG,GAAG,CAAC;AAAA,QACvD,IAAI,GAAG;AAAA,UACL,KAAK,cAAc;AAAA,UACnB;AAAA,QACF;AAAA,MACF;AAAA,MACA,KAAK,cAAc,IAAI,KAAK,GAAG,EAAE,QAAQ;AAAA,MACzC,MAAM,IAAI,GAAE,SAAS,GAAG,IAAS,YAAI,EAAE,KAAK,EAAE;AAAA,MAC9C,IAAI,GAAG;AAAA,QACL,QAAQ,MAAM,GAAG,OAAO,MAAM,GAAG,KAAI,EAAE,GAAG,CAAC;AAAA,QAC3C,KAAK,KAAK;AAAA,UACR,MAAM,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,GAAG,GAAG;AAAA,UAC5D,OAAO,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,GAAG,GAAG;AAAA,UAC3D,KAAK,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,IAAG,EAAE,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,GAAG;AAAA,QAC9D;AAAA,MACF;AAAA,MACA,KAAK,GAAG;AAAA,MACR,MAAM,IAAI,GAAE,QAAQ,GAAG;AAAA,MACvB,KAAK,KAAK,KAAK,MAAM,KAAK,KAAK,MAAK,KAAK,IAAI,KAAK,GAAG,oBAAoB,IAAI,KAAK,KAAK,EAAE,QAAQ,KAAK,GAAG,SAAS,KAAK,KAAK,GAAG,eAAe,EAAE,QAAQ,GAAG,KAAK,GAAG,oBAAoB,GAAG,KAAK,KAAK,QAAQ,KAAK,GAAG,oBAAoB,KAAK,IAAI,IAAI,GAAG,EAAE,MAAM,CAAC;AAAA,IACnQ;AAAA;AAAA,EAEF,EAAE,CAAC,IAAG,GAAG;AAAA,IACP,QAAQ,OAAO,GAAG,KAAK,MAAM,EAAE,EAAC;AAAA,IAChC,IAAI,EAAE,SAAS,YAAY,IAAI,KAAK,IAAI;AAAA,MACtC,OAAO,SAAS,KAAK,SAAS;AAAA,IAChC,IAAI,EAAE,SAAS,UAAU,IAAI,KAAK,IAAI;AAAA,MACpC,OAAO,SAAS,KAAK,SAAS,WAAW,IAAI,WAAW;AAAA;AAAA,EAE5D,EAAE,CAAC,IAAG;AAAA,IACJ,QAAQ,MAAM,GAAG,OAAO,GAAG,KAAK,MAAM,EAAE,KAAK,EAAE;AAAA,IAC/C,IAAI,KAAK,KAAK,GAAG;AAAA,MACf,MAAM,IAAI,EAAE,GAAG,CAAC;AAAA,MAChB,KAAK,KAAK;AAAA,WACL,KAAK;AAAA,QACR,KAAK,OAAO,KAAK,IAAI,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,GAAG;AAAA,MAC7C;AAAA,IACF;AAAA,IACA,KAAK,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAE,gBAAqB;AAAA;AAEtD;AAEA,IAAI,MAAM,MAAM,UAAU,EAAE;AAAA,EAC1B;AAAA,EACA,SAAS;AAAA,EACT;AAAA,EACA,aAAa,CAAC,IAAG;AAAA,IACf,OAAO,KAAK,QAAQ,OAAO,CAAC,MAAM,EAAE,UAAU,EAAC;AAAA;AAAA,EAEjD,eAAe,CAAC,IAAG;AAAA,IACjB,MAAM,IAAI,KAAK,cAAc,EAAC,GAAG,IAAI,KAAK;AAAA,IAC1C,OAAO,MAAW,YAAI,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC;AAAA;AAAA,EAElE,WAAW,GAAG;AAAA,IACZ,MAAM,KAAI,KAAK,QAAQ,KAAK;AAAA,IAC5B,IAAI,KAAK,UAAe,cAAM,KAAK,QAAQ,CAAC,IAAI,GAAE,UAAU,MAAM;AAAA,MAChE,MAAM,IAAI,GAAE,OAAO,IAAI,KAAK,cAAc,CAAC;AAAA,MAC3C,KAAK,gBAAgB,CAAC,IAAI,KAAK,QAAQ,KAAK,MAAM,OAChD,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,EAC/C,IAAI,KAAK,QAAQ,CAAC,GAAG,KAAK,OAAO,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,KAAK,QAAQ,MAAM,KAAK,IAAI,IAAI,KAAK,KAAK,CAAC;AAAA,IACzG,EAAO;AAAA,MACL,MAAM,IAAI,KAAK,MAAM,SAAS,GAAE,KAAK;AAAA,MACrC,KAAK,QAAQ,IAAI,KAAK,MAAM,OAAO,CAAC,MAAM,MAAM,GAAE,KAAK,IAAI,CAAC,GAAG,KAAK,OAAO,GAAE,KAAK;AAAA;AAAA;AAAA,EAGtF,WAAW,CAAC,IAAG;AAAA,IACb,MAAM,IAAG,KAAK;AAAA,IACd,QAAQ,SAAS,MAAM;AAAA,IACvB,KAAK,KAAK,GAAE,qBAAqB,OAAO,KAAK,UAAU,OAAO,QAAQ,CAAC,EAAE,QAAQ,EAAE,GAAG,OAAO;AAAA,MAC3F,EAAE,OAAO,GAAG,OAAO,MAAM,OAAO,EAAE;AAAA,MAClC,GAAG,EAAE,IAAI,CAAC,OAAO,KAAK,GAAG,OAAO,EAAE,EAAE;AAAA,IACtC,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG,GAAE,iBAAiB,CAAC,CAAC,GAAG,KAAK,SAAS,KAAK,IAC9D,KAAK,QAAQ,UAAU,GAAG,OAAO,QAAQ,MAAM,GAAE,QAAQ,GACzD,KAAK,KAAK,IAAI,CAChB,GAAG,KAAK,GAAG,UAAU,CAAC,MAAM;AAAA,MAC1B,QAAQ;AAAA,aACD;AAAA,aACA,MAAM;AAAA,UACT,KAAK,SAAS,KAAK,WAAW,IAAI,KAAK,QAAQ,SAAS,IAAI,KAAK,SAAS;AAAA,UAC1E,MAAM,IAAI,KAAK,QAAQ,KAAK,SAAS,UAAU;AAAA,UAC/C,CAAC,KAAK,MAAM,MAAM,KAAK,SAAS,KAAK,WAAW,IAAI,KAAK,QAAQ,SAAS,IAAI,KAAK,SAAS;AAAA,UAC5F;AAAA,QACF;AAAA,aACK;AAAA,aACA,SAAS;AAAA,UACZ,KAAK,SAAS,KAAK,WAAW,KAAK,QAAQ,SAAS,IAAI,IAAI,KAAK,SAAS;AAAA,UAC1E,MAAM,IAAI,KAAK,QAAQ,KAAK,SAAS,UAAU;AAAA,UAC/C,CAAC,KAAK,MAAM,MAAM,KAAK,SAAS,KAAK,WAAW,KAAK,QAAQ,SAAS,IAAI,IAAI,KAAK,SAAS;AAAA,UAC5F;AAAA,QACF;AAAA,aACK;AAAA,UACH,KAAK,YAAY;AAAA,UACjB;AAAA;AAAA,KAEL;AAAA;AAEL;AAEA,IAAM,sBAAsB,IAAI,IAAI,CAAC,MAAM,QAAQ,QAAQ,OAAO,CAAC;AAAA;AACnE,MAAM,UAAU,EAAE;AAAA,EAChB,KAAK;AAAA,EACL;AAAA,EACA,UAAU;AAAA,MACN,mBAAmB,GAAG;AAAA,IACxB,IAAI,KAAK,UAAU;AAAA,MACjB,OAAO,KAAK;AAAA,IACd,MAAM,KAAI,KAAK;AAAA,IACf,IAAI,KAAK,UAAU,GAAE;AAAA,MACnB,OAAO,GAAG;AAAA,IACZ,MAAM,IAAI,GAAE,MAAM,GAAG,KAAK,MAAM,GAAG,IAAI,GAAE,KAAK,SAAS,IAAI,GAAE,MAAM,KAAK,SAAS,CAAC;AAAA,IAClF,OAAO,MAAM;AAAA,IACb,GAAG;AAAA,EACL,MAAM,GAAG,IAAI,UAAU,WAAW,CAAC,IAAI;AAAA;AAAA,MAEnC,MAAM,GAAG;AAAA,IACX,OAAO,KAAK;AAAA;AAAA,EAEd,EAAE,CAAC,IAAG;AAAA,IACJ,IAAI,KAAK,UAAU,WAAW,GAAG;AAAA,MAC/B,KAAK,cAAc,EAAC;AAAA,MACpB;AAAA,IACF;AAAA,IACA,KAAK,cACH,KAAK,UAAU,MAAM,GAAG,KAAK,MAAM,IAAI,KAAI,KAAK,UAAU,MAAM,KAAK,MAAM,CAC7E;AAAA;AAAA,EAEF,EAAE,CAAC,IAAG;AAAA,IACJ,MAAM,IAAI,KAAK,SAAS;AAAA,IACxB,QAAQ;AAAA,WACD;AAAA,QACH,KAAK,UAAU,eAAe,KAAK,SAAS,GAAG,IAAI,CAAC;AAAA,QACpD;AAAA,WACG;AAAA,QACH,KAAK,UAAU,eAAe,KAAK,SAAS,GAAG,GAAG,CAAC;AAAA,QACnD;AAAA,WACG;AAAA,QACH,KAAK,UAAU,eAAe,KAAK,SAAS,IAAI,GAAG,CAAC;AAAA,QACpD;AAAA,WACG;AAAA,QACH,KAAK,UAAU,eAAe,KAAK,SAAS,GAAG,GAAG,CAAC;AAAA,QACnD;AAAA;AAAA;AAAA,EAGN,aAAa,CAAC,IAAG,GAAG;AAAA,IAClB,IAAI,KAAK;AAAA,MACP,OAAO,KAAK,YAAY,WAAW,QAAQ,KAAK,GAAG;AAAA,CACxD,GAAG,KAAK,WAAW;AAAA,IAChB,MAAM,IAAI,KAAK;AAAA,IACf,OAAO,KAAK,KAAK,MAAM,KAAK,KAAK,WAAW,KAAK,UAAU,UAAU,KAAK,UAAU,KAAK,SAAS,OAAO;AAAA,MACvG,KAAK,cACL,KAAK,UAAU,MAAM,GAAG,KAAK,SAAS,CAAC,IAAI,KAAK,UAAU,MAAM,KAAK,MAAM,CAC7E,GAAG,KAAK,YAAY,SAAS,KAAK,GAAG;AAAA,CACxC,GAAG,KAAK,WAAW;AAAA;AAAA,EAElB,WAAW,CAAC,IAAG;AAAA,IACb,MAAM,IAAI,GAAE,oBAAoB,GAAE;AAAA,IAClC,MACE;AAAA,SACK;AAAA,MACH,kBAAkB;AAAA,IACpB,GACA,KACF,GAAG,MAAW,cAAM,KAAK,UAAU,EAAE,SAAS,KAAK,KAAK,GAAE,cAAc,OAAO,KAAK,GAAG,OAAO,CAAC,GAAG,MAAM;AAAA,MACtG,IAAI,GAAG,QAAQ,IAAI,IAAI,EAAE,IAAI,GAAG;AAAA,QAC9B,KAAK,KAAK,OAAO,KAAK,GAAG,EAAE,IAAI;AAAA,QAC/B;AAAA,MACF;AAAA,MACA,IAAI,MAAM,QAAO,KAAK,IAAI;AAAA,QACxB,KAAK,UAAU,KAAK,YAAY,WAAW,WAAW;AAAA,QACtD;AAAA,MACF;AAAA,MACA,IAAI,GAAG,SAAS,UAAU;AAAA,QACxB,IAAI,KAAK,KAAK,OAAO,GAAG,SAAS,eAAe,KAAK,SAAS,GAAG;AAAA,UAC/D,KAAK,cACH,KAAK,UAAU,MAAM,GAAG,KAAK,SAAS,CAAC,IAAI,KAAK,UAAU,MAAM,KAAK,MAAM,CAC7E,GAAG,KAAK;AAAA,UACR;AAAA,QACF;AAAA,QACA,IAAI,GAAG,SAAS,YAAY,KAAK,SAAS,KAAK,UAAU,QAAQ;AAAA,UAC/D,KAAK,cACH,KAAK,UAAU,MAAM,GAAG,KAAK,MAAM,IAAI,KAAK,UAAU,MAAM,KAAK,SAAS,CAAC,CAC7E;AAAA,UACA;AAAA,QACF;AAAA,QACA,MAAM,KAAK,MAAM,KAAK,YAAY,aAAa,KAAK,UAAU,WAAW,KAAK,GAAG,KAAK,EAAE,GAAG,KAAK;AAAA,MAClG;AAAA,KACD,GAAG,KAAK,GAAG,aAAa,CAAC,MAAM;AAAA,MAC9B,KAAK,UAAU,CAAC;AAAA,KACjB,GAAG,KAAK,GAAG,YAAY,MAAM;AAAA,MAC5B,KAAK,UAAU,KAAK,QAAQ,GAAE,eAAe,KAAK,UAAe,cAAM,KAAK,QAAQ;AAAA,KACrF;AAAA;AAEL;AAkFA,MAAM,UAAU,EAAE;AAAA,EAChB;AAAA,EACA,SAAS;AAAA,MACL,cAAc,GAAG;AAAA,IACnB,OAAO,KAAK,QAAQ,KAAK;AAAA;AAAA,EAE3B,WAAW,GAAG;AAAA,IACZ,KAAK,QAAQ,KAAK,eAAe;AAAA;AAAA,EAEnC,WAAW,CAAC,IAAG;AAAA,IACb,MAAM,IAAG,KAAK,GAAG,KAAK,UAAU,GAAE;AAAA,IAClC,MAAM,IAAI,KAAK,QAAQ,UAAU,GAAG,OAAO,QAAQ,MAAM,GAAE,YAAY,GAAG,IAAI,MAAM,KAAK,IAAI;AAAA,IAC7F,KAAK,SAAS,KAAK,QAAQ,GAAG,WAAW,WAAW,GAAG,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,YAAY,GAAG,KAAK,GAAG,UAAU,CAAC,MAAM;AAAA,MACxH,QAAQ;AAAA,aACD;AAAA,aACA;AAAA,UACH,KAAK,SAAS,WAAW,KAAK,QAAQ,IAAI,KAAK,OAAO;AAAA,UACtD;AAAA,aACG;AAAA,aACA;AAAA,UACH,KAAK,SAAS,WAAW,KAAK,QAAQ,GAAG,KAAK,OAAO;AAAA,UACrD;AAAA;AAAA,MAEJ,KAAK,YAAY;AAAA,KAClB;AAAA;AAEL;AAoBA,MAAM,UAAU,EAAE;AAAA,MACZ,mBAAmB,GAAG;AAAA,IACxB,IAAI,KAAK,UAAU;AAAA,MACjB,OAAO,KAAK;AAAA,IACd,MAAM,KAAI,KAAK;AAAA,IACf,IAAI,KAAK,UAAU,GAAE;AAAA,MACnB,OAAO,GAAG,KAAK;AAAA,IACjB,MAAM,IAAI,GAAE,MAAM,GAAG,KAAK,MAAM,IAAI,MAAM,KAAK,GAAE,MAAM,KAAK,MAAM;AAAA,IAClE,OAAO,GAAG,IAAI,UAAU,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE;AAAA;AAAA,MAE/C,MAAM,GAAG;AAAA,IACX,OAAO,KAAK;AAAA;AAAA,EAEd,WAAW,CAAC,IAAG;AAAA,IACb,MAAM;AAAA,SACD;AAAA,MACH,kBAAkB,GAAE,oBAAoB,GAAE;AAAA,IAC5C,CAAC,GAAG,KAAK,GAAG,aAAa,CAAC,MAAM;AAAA,MAC9B,KAAK,UAAU,CAAC;AAAA,KACjB,GAAG,KAAK,GAAG,YAAY,MAAM;AAAA,MAC5B,KAAK,UAAU,KAAK,QAAQ,GAAE,eAAe,KAAK,UAAe,cAAM,KAAK,QAAQ;AAAA,KACrF;AAAA;AAEL;;;AKh9BA,sBAAS;AACT;AAKA;AAEA,SAAS,kBAAkB,GAAG;AAAA,EAC7B,IAAI,UAAU,aAAa,SAAS;AAAA,IACnC,OAAO,UAAU,IAAI,SAAS;AAAA,EAC/B;AAAA,EAEA,OAAO,QAAQ,UAAU,IAAI,EAAE,KAC3B,QAAQ,UAAU,IAAI,UAAU,KAChC,QAAQ,UAAU,IAAI,gBAAgB,KACtC,UAAU,IAAI,eAAe,kBAC7B,UAAU,IAAI,iBAAiB,sBAC/B,UAAU,IAAI,iBAAiB,YAC/B,UAAU,IAAI,SAAS,oBACvB,UAAU,IAAI,SAAS,eACvB,UAAU,IAAI,sBAAsB;AAAA;AAGzC,IAAM,UAAU,mBAAmB;AAAnC,IAAsC,OAAO,MAAM,QAAQ,IAAI,OAAO;AAAtE,IAA+G,YAAY,CAAC,IAAG,MAAM,UAAU,KAAI;AAAnJ,IAAsJ,gBAAgB,UAAU,UAAU,GAAG;AAA7L,IAAgM,gBAAgB,UAAU,UAAU,GAAG;AAAvO,IAA0O,eAAe,UAAU,UAAU,GAAG;AAAhR,IAAmR,gBAAgB,UAAU,UAAU,GAAG;AAA1T,IAA6T,cAAc,UAAU,UAAU,GAAG;AAAlW,IAAqW,QAAQ,UAAU,UAAU,GAAG;AAApY,IAAuY,YAAY,UAAU,UAAU,QAAQ;AAA/a,IAAkb,oBAAoB,UAAU,UAAU,GAAG;AAA7d,IAAge,kBAAkB,UAAU,UAAU,QAAQ;AAA9gB,IAAihB,iBAAiB,UAAU,UAAU,GAAG;AAAzjB,IAA4jB,mBAAmB,UAAU,UAAU,GAAG;AAAtmB,IAAymB,oBAAoB,UAAU,UAAU,UAAU;AAA3pB,IAA8pB,sBAAsB,UAAU,UAAU,KAAK;AAA7sB,IAAgtB,sBAAsB,UAAU,UAAU,KAAK;AAA/vB,IAAkwB,kBAAkB,UAAU,UAAU,QAAQ;AAAhzB,IAAmzB,UAAU,UAAU,UAAU,GAAG;AAAp1B,IAAu1B,qBAAqB,UAAU,UAAU,GAAG;AAAn4B,IAAs4B,iBAAiB,UAAU,UAAU,GAAG;AAA96B,IAAi7B,wBAAwB,UAAU,UAAU,GAAG;AAAh+B,IAAm+B,uBAAuB,UAAU,UAAU,GAAG;AAAjhC,IAAohC,oBAAoB,UAAU,UAAU,GAAG;AAA/jC,IAAkkC,SAAS,UAAU,UAAU,QAAQ;AAAvmC,IAA0mC,YAAY,UAAU,UAAU,GAAG;AAA7oC,IAAgpC,SAAS,UAAU,UAAU,GAAG;AAAhrC,IAAmrC,UAAU,UAAU,UAAU,GAAG;AAAptC,IAAutC,SAAS,CAAC,OAAM;AAAA,EACruC,QAAQ;AAAA,SACD;AAAA,SACA;AAAA,MACH,OAAO,WAAU,QAAQ,aAAa;AAAA,SACnC;AAAA,MACH,OAAO,WAAU,OAAO,aAAa;AAAA,SAClC;AAAA,MACH,OAAO,WAAU,UAAU,YAAY;AAAA,SACpC;AAAA,MACH,OAAO,WAAU,SAAS,aAAa;AAAA;AAAA;AAV7C,IAYG,YAAY,CAAC,OAAM;AAAA,EACpB,QAAQ;AAAA,SACD;AAAA,SACA;AAAA,MACH,OAAO,WAAU,QAAQ,KAAK;AAAA,SAC3B;AAAA,MACH,OAAO,WAAU,OAAO,KAAK;AAAA,SAC1B;AAAA,MACH,OAAO,WAAU,UAAU,KAAK;AAAA,SAC7B;AAAA,MACH,OAAO,WAAU,SAAS,KAAK;AAAA;AAAA;AAGrC,SAAS,uBAAuB,CAAC,IAAG,GAAG;AAAA,EACrC,MAAM,KAAI,CAAC,GAAG,IAAI,GAAG,WAAU,QAAQ,KAAK,QAAQ,KAAK,GAAE,KAAK,UAAU,GAAG;AAAA,EAC7E,OAAO,KAAK,GAAE,KAAK,WAAU,QAAQ,SAAS,CAAC,GAAG;AAAA;AAGpD,IAAM,MAAM,CAAC,IAAG,IAAG,IAAG,IAAG,IAAG,IAAI,UAAU;AAAA,EACxC,IAAI,KAAI,IAAG,IAAI;AAAA,EACf,IAAI;AAAA,IACF,SAAS,IAAI,KAAI,EAAG,KAAK,OAAM,MAAK,GAAE,GAAG,QAAQ,KAAK,EAAE,MAAK,MAAK;AAAA;AAAA,EAGlE;AAAA,aAAS,IAAI,GAAG,IAAI,OAAM,MAAK,GAAE,GAAG,QAAQ,KAAK,EAAE,MAAK,MAAK;AAAA;AAAA,EAE/D,OAAO,EAAE,WAAW,IAAG,UAAU,EAAE;AAAA;AAErC,IAAM,eAAe;AAAA,EACnB,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,OAAO;AAAA,EACP,QAAQ,KAAI,QAAQ;AAAA,EACpB,UAAU,KAAI,OAAO;AAAA,EACrB,eAAe,IAAI;AAAA,EACnB,YAAY,KAAI;AAAA,MACZ;AAAA,EACJ,MAAM,IAAI,WAAW,EAAC,IAAI,GAAG,IAAI,QAAQ,EAAC,GAAG,KAAI,WAAU,OAAO,KAAK,GAAG,IAAI,KAAK,IAAI,IAAI,IAAG,CAAC,GAAG,KAAI,KAAK,IAAI,KAAK,IAAI,IAAG,CAAC,GAAG,CAAC;AAAA,EAChI,IAAI,KAAI;AAAA,EACR,MAAK,KAAI,MAAM,KAAI,KAAK,IACtB,KAAK,IAAI,KAAI,KAAI,GAAG,GAAE,SAAS,EAAC,GAChC,CACF;AAAA,EACA,IAAI,KAAI,KAAI,GAAE,UAAU,KAAI,GAAG,KAAI,KAAI,GAAE,UAAU,KAAI,KAAI,GAAE;AAAA,EAC7D,MAAM,IAAI,KAAK,IACb,KAAI,IACJ,GAAE,MACJ,GAAG,IAAI,CAAC;AAAA,EACR,IAAI,IAAI;AAAA,EACR,MAAK,KAAK,MAAK;AAAA,EACf,MAAM,IAAI,MAAK,KAAI,IAAI,IAAI,KAAI,KAAK,KAAI,IAAI;AAAA,EAC5C,SAAS,KAAI,EAAG,KAAI,IAAG,MAAK;AAAA,IAC1B,MAAM,KAAI,SAAS,GAAE,GAAE,KAAI,OAAM,EAAC,GAAG,GAAG;AAAA,MACtC,MAAM;AAAA,MACN,MAAM;AAAA,IACR,CAAC,EAAE,MAAM;AAAA,CACZ;AAAA,IACG,EAAE,KAAK,EAAC,GAAG,KAAK,GAAE;AAAA,EACpB;AAAA,EACA,IAAI,IAAI,GAAG;AAAA,IACT,IAAI,KAAI,GAAG,KAAI,GAAG,IAAI;AAAA,IACtB,MAAM,KAAI,KAAI;AAAA,IACd,IAAI,KAAI;AAAA,IACR,MAAM,KAAI,MAAM,IAAI,GAAG,GAAG,GAAG,IAAG,EAAC,GAAG,IAAI,MAAM,IAC5C,GACA,GACA,KAAI,GACJ,EAAE,QACF,IACA,IACF;AAAA,IACA,MAAK,EAAE,WAAW,GAAG,UAAU,GAAE,IAAI,GAAE,GAAG,IAAI,OAAM,OAAM,MAAK,IAAI,EAAE,WAAW,GAAG,UAAU,GAAE,IAAI,EAAE,OAAO,OAAM,MAAK,IAAI,EAAE,WAAW,GAAG,UAAU,GAAE,IAAI,EAAE,GAAG,IAAI,OAAM,MAAK,GAAG,EAAE,WAAW,GAAG,UAAU,GAAE,IAAI,GAAE,KAAK,KAAI,MAAM,KAAI,MAAM,EAAE,OAAO,GAAG,EAAC,IAAI,KAAI,MAAM,KAAI,MAAM,EAAE,OAAO,EAAE,SAAS,IAAG,EAAC;AAAA,EAC5S;AAAA,EACA,MAAM,KAAI,CAAC;AAAA,EACX,MAAK,GAAE,KAAK,EAAC;AAAA,EACb,WAAW,MAAK;AAAA,IACd,WAAW,MAAK;AAAA,MACd,GAAE,KAAK,EAAC;AAAA,EACZ,OAAO,MAAK,GAAE,KAAK,EAAC,GAAG;AAAA;AAuVzB,IAAM,2BAA2B;AAAA,EAC/B,GAAG,WAAU,OAAO,eAAe;AAAA,EACnC,GAAG,WAAU,OAAO,QAAQ;AAAA,EAC5B,GAAG,WAAU,OAAO,QAAQ;AAC9B;AA8SA,IAAM,SAAS,CAAC,KAAI,IAAI,OAAM;AAAA,EAC5B,MAAM,IAAI,IAAG,UAAU,QAAQ,QAAQ,IAAI,IAAG,aAAa,SAAS,YAAY,GAAG,WAAU,QAAQ,SAAS,QAAQ;AAAA,EACtH,EAAE,MAAM,GAAG,IAAI,WAAU,OAAO,EAAC;AAAA;AAAA,CAElC;AAAA;AAgLD,IAAM,IAAI,CAAC,OAAM,WAAU,WAAW,EAAC;AACvC,IAAM,UAAU;AAAA,EACd,WAAW,KAAI;AAAA,EACf,UAAU;AAAA,EACV,QAAQ,KAAI,QAAQ;AAAA,EACpB,eAAe;AAAA,EACf,cAAc;AAAA,EACd,QAAQ,IAAI,UAAU,CAAC,UAAU,UAAU,UAAU,QAAQ,IAAI,CAAC,UAAU,KAAK,KAAK,GAAG;AAAA,EACzF,OAAO,IAAI,UAAU,KAAK;AAAA,EAC1B,QAAQ;AAAA,KACL;AAAA,IACD,CAAC,MAAM;AAAA,EACT,MAAM,KAAI,KAAK;AAAA,EACf,IAAI,IAAG,IAAG,IAAI,OAAO,IAAI,OAAO,IAAI,IAAI,IAAG,IAAI,YAAY,IAAI;AAAA,EAC/D,MAAM,IAAI,WAAW,EAAC,GAAG,IAAI,GAAG,cAAc,GAAG,KAAI,CAAC,MAAM;AAAA,IAC1D,MAAM,KAAI,IAAI,IAAI,KAAK,SAAS,SAAS,QAAQ,KAAK,SAAS,SAAS;AAAA,IACxE,IAAI,MAAM,GAAG,MAAM,GAAE,IAAG,CAAC,GAAG,KAAK,OAAO,MAAK,cAAc,GAAE;AAAA,KAC5D,KAAI,MAAM,GAAE,CAAC,GAAG,IAAI,MAAM,GAAE,CAAC,GAAG,IAAI,MAAM;AAAA,IAC3C,QAAQ,GAAG,4BAA4B,EAAC,GAAG,QAAQ,GAAG,sBAAsB,EAAC,GAAG,QAAQ,GAAG,UAAU,CAAC,GAAG,QAAQ,GAAG,WAAW,CAAC,GAAG,QAAQ,GAAG,QAAQ,EAAC,GAAG,MAAK,GAAE,iBAAiB,SAAS,CAAC;AAAA,KAC3L,IAAI,MAAM;AAAA,IACX,QAAQ,eAAe,4BAA4B,EAAC,GAAG,QAAQ,eAAe,sBAAsB,EAAC,GAAG,QAAQ,eAAe,UAAU,CAAC,GAAG,QAAQ,eAAe,WAAW,CAAC,GAAG,QAAQ,eAAe,QAAQ,EAAC,GAAG,MAAK,GAAE,oBAAoB,SAAS,CAAC;AAAA,KAC1P,IAAI,MAAM;AAAA,IACX,IAAI,OAAW;AAAA,MAAG;AAAA,IAClB,MAAK,GAAE,MAAM;AAAA,CAChB;AAAA,IACG,MAAM,KAAI,SAAS,IAAG,GAAG;AAAA,MACvB,MAAM;AAAA,MACN,MAAM;AAAA,IACR,CAAC,EAAE,MAAM;AAAA,CACZ;AAAA,IACG,GAAE,SAAS,KAAK,GAAE,MAAM,0BAAO,GAAG,GAAE,SAAS,CAAC,CAAC,GAAG,GAAE,MAAM,0BAAO,GAAG,CAAC,CAAC,GAAG,GAAE,MAAM,yBAAM,KAAK,CAAC;AAAA,KAC5F,KAAI,CAAC,MAAM,EAAE,QAAQ,QAAQ,EAAE,GAAG,KAAI,CAAC,MAAM;AAAA,IAC9C,MAAM,MAAK,YAAY,IAAI,IAAI,KAAK,MAAK,KAAI,KAAK,MAAM,KAAI,EAAE,GAAG,KAAI,KAAK,MAAM,KAAI,EAAE;AAAA,IACtF,OAAO,KAAI,IAAI,IAAI,OAAM,SAAQ,IAAI;AAAA,KACpC,IAAI,EAAE,aAAa,SAAS,WAAW,KAAI,CAAC,IAAI,OAAO;AAAA,IACxD,IAAI,MAAM,KAAI,MAAM,EAAE,QAAQ,GAAE,CAAC,GAAG,IAAI,GAAE,CAAC,GAAG,IAAI,YAAY,IAAI,GAAG,KAAK,GAAE,MAAM,GAAG,WAAU,QAAQ,KAAK;AAAA,CAC/G;AAAA,IACG,IAAI,KAAI,GAAG,KAAI;AAAA,IACf,EAAE,GAAG,KAAI,YAAY,MAAM;AAAA,MACzB,IAAI,MAAK,MAAM;AAAA,QACb;AAAA,MACF,EAAE,GAAG,KAAI;AAAA,MACT,MAAM,KAAI,EAAE,EAAE,GAAE;AAAA,MAChB,IAAI;AAAA,MACJ,IAAI;AAAA,QACF,IAAI,GAAG,OAAM;AAAA,MACV,SAAI,OAAM;AAAA,QACb,IAAI,GAAG,OAAM,KAAK,GAAE,CAAC;AAAA,MAClB;AAAA,QACH,MAAM,IAAI,IAAI,OAAO,KAAK,MAAM,EAAC,CAAC,EAAE,MAAM,GAAG,CAAC;AAAA,QAC9C,IAAI,GAAG,OAAM,IAAI;AAAA;AAAA,MAEnB,MAAM,IAAI,SAAS,GAAG,GAAG;AAAA,QACvB,MAAM;AAAA,QACN,MAAM;AAAA,MACR,CAAC;AAAA,MACD,GAAE,MAAM,CAAC,GAAG,KAAI,KAAI,IAAI,EAAE,SAAS,KAAI,IAAI,GAAG,KAAI,KAAI,IAAI,KAAI,QAAQ;AAAA,OACrE,CAAC;AAAA,KACH,KAAI,CAAC,IAAI,IAAI,KAAI,GAAG,KAAI,UAAU;AAAA,IACnC,IAAI,CAAC;AAAA,MAAG;AAAA,IACR,IAAI,OAAO,cAAc,EAAC,GAAG,EAAE;AAAA,IAC/B,MAAM,KAAI,OAAM,IAAI,WAAU,SAAS,aAAa,IAAI,OAAM,IAAI,WAAU,OAAO,aAAa,IAAI,WAAU,OAAO,YAAY;AAAA,IACjI,IAAI,KAAK,GAAG,OAAM,OAAM,UAAU,GAAE,MAAM,GAAG,OAAM,KAAK,GAAE,CAAC;AAAA,CAC9D,IAAI,GAAE,MAAM,GAAG,OAAM;AAAA,CACrB,IAAI,EAAE,GAAG,GAAE;AAAA;AAAA,EAEV,OAAO;AAAA,IACL,OAAO;AAAA,IACP,MAAM,CAAC,IAAI,OAAO,GAAE,GAAG,CAAC;AAAA,IACxB,SAAS,CAAC,IAAI,OAAO;AAAA,MACnB,IAAI,GAAE,KAAK,CAAC;AAAA;AAAA,IAEd,QAAQ,CAAC,IAAI,OAAO,GAAE,GAAG,CAAC;AAAA,IAC1B,OAAO,CAAC,IAAI,OAAO,GAAE,GAAG,CAAC;AAAA,IACzB,OAAO,MAAM,GAAE,IAAI,GAAG,IAAI;AAAA,QACtB,WAAW,GAAG;AAAA,MAChB,OAAO;AAAA;AAAA,EAEX;AAAA;AAGF,IAAM,KAAI;AAAA,EACR,OAAO,UAAU,UAAU,GAAG;AAAA,EAC9B,OAAO,UAAU,UAAU,GAAG;AAAA,EAC9B,OAAO,UAAU,UAAU,GAAG;AAChC;AA0CA,IAAM,sBAAsB;AAAA,EAC1B,GAAG,WAAU,OAAO,eAAe;AAAA,EACnC,GAAG,WAAU,OAAO,QAAQ;AAC9B;AACA,IAAM,KAAI,CAAC,IAAG,OAAM,GAAE,SAAS;AAAA,CAC9B,IAAI,GAAE,MAAM;AAAA,CACZ,EAAE,IAAI,CAAC,MAAM,GAAE,CAAC,CAAC,EAAE,KAAK;AAAA,CACxB,IAAI,GAAE,EAAC;AACR,IAAM,SAAS,CAAC,OAAM;AAAA,EACpB,MAAM,KAAI,CAAC,GAAG,OAAM;AAAA,IAClB,MAAM,IAAI,EAAE,SAAS,OAAO,EAAE,KAAK;AAAA,IACnC,QAAQ;AAAA,WACD;AAAA,QACH,OAAO,GAAG,WAAU,QAAQ,gBAAgB,KAAK,GAAE,GAAG,CAAC,OAAM,WAAU,QAAQ,EAAC,CAAC,IAAI,EAAE,OAAO,IAAI,WAAU,OAAO,IAAI,EAAE,QAAQ,aAAa,MAAM;AAAA,WACjJ;AAAA,QACH,OAAO,GAAG,GAAE,GAAG,CAAC,OAAM,WAAU,OAAO,EAAC,CAAC;AAAA,WACtC;AAAA,QACH,OAAO,GAAG,WAAU,SAAS,cAAc,KAAK,IAAI,EAAE,OAAO,IAAI,WAAU,OAAO,IAAI,EAAE,OAAO,MAAM;AAAA,WAClG;AAAA,QACH,OAAO,GAAG,GAAE,GAAG,CAAC,OAAM,WAAU,CAAC,iBAAiB,KAAK,GAAG,EAAC,CAAC;AAAA;AAAA,QAE5D,OAAO,GAAG,WAAU,OAAO,gBAAgB,KAAK,GAAE,GAAG,CAAC,OAAM,WAAU,OAAO,EAAC,CAAC;AAAA;AAAA;AAAA,EAGrF,OAAO,IAAI,EAAa;AAAA,IACtB,SAAS,GAAE;AAAA,IACX,QAAQ,GAAE;AAAA,IACV,OAAO,GAAE;AAAA,IACT,QAAQ,GAAE;AAAA,IACV,cAAc,GAAE;AAAA,IAChB,MAAM,GAAG;AAAA,MACP,MAAM,IAAI,GAAE,aAAa,SAAS,WAAW,KAAI,GAAG,OAAO,KAAK,KAAK,OAAO,IAAI,GAAG,UAAU,KAAK,KAAK,OAAO,KAAI,mBAChH,GAAE,QACF,GAAE,SACF,GACA,EACF,GAAG,KAAI,GAAG,IAAI,GAAG,WAAU,QAAQ,KAAK;AAAA,IAC1C,KAAK;AAAA;AAAA,MAEH,QAAQ,KAAK;AAAA,aACN,UAAU;AAAA,UACb,MAAM,KAAI,IAAI,GAAG,WAAU,QAAQ,KAAK,QAAQ,IAAI,KAAI,mBACtD,GAAE,QACF,GAAE,KAAK,QAAQ,KAAK,SAAS,UAAU,GACvC,EACF;AAAA,UACA,OAAO,GAAG,KAAI;AAAA,QAChB;AAAA,aACK,UAAU;AAAA,UACb,MAAM,KAAI,IAAI,GAAG,WAAU,QAAQ,KAAK,QAAQ,IAAI,KAAI,mBACtD,GAAE,QACF,GAAE,KAAK,QAAQ,KAAK,SAAS,WAAW,GACxC,EACF;AAAA,UACA,OAAO,GAAG,KAAI,KAAI,IAAI;AAAA,EAC9B,WAAU,QAAQ,KAAK,MAAM;AAAA,QACvB;AAAA,iBACS;AAAA,UACP,MAAM,KAAI,IAAI,GAAG,WAAU,QAAQ,KAAK,QAAQ,IAAI,KAAI,GAAE,MAAM;AAAA,CACzE,EAAE,QAAQ,IAAI,wBAAwB,qBAAqB,CAAC,GAAG,KAAI,EAAE,KAAK;AAAA,CAC1E,GAAG,KAAI,EAAE,SAAS;AAAA,UACT,OAAO,GAAG,KAAI,KAAI,aAAa;AAAA,YAC7B,QAAQ,GAAE;AAAA,YACV,QAAQ,KAAK;AAAA,YACb,SAAS,KAAK;AAAA,YACd,UAAU,GAAE;AAAA,YACZ,eAAe,GAAE;AAAA,YACjB,YAAY,KAAI;AAAA,YAChB,OAAO,CAAC,IAAG,MAAM,GAAE,IAAG,GAAE,WAAW,aAAa,IAAI,WAAW,UAAU;AAAA,UAC3E,CAAC,EAAE,KAAK;AAAA,EAChB,IAAG;AAAA,EACH;AAAA;AAAA,QAEM;AAAA;AAAA;AAAA,EAGN,CAAC,EAAE,OAAO;AAAA;AAuDZ,IAAM,IAAI,GAAG,WAAU,QAAQ,KAAK;AA2JpC,IAAM,OAAO,CAAC,OAAM,IAAI,EAAW;AAAA,EACjC,UAAU,GAAE;AAAA,EACZ,aAAa,GAAE;AAAA,EACf,cAAc,GAAE;AAAA,EAChB,cAAc,GAAE;AAAA,EAChB,QAAQ,GAAE;AAAA,EACV,QAAQ,GAAE;AAAA,EACV,OAAO,GAAE;AAAA,EACT,MAAM,GAAG;AAAA,IACP,MAAM,KAAI,IAAG,aAAa,SAAS,WAAW,IAAI,GAAG,GAAG,KAAI,GAAG,WAAU,QAAQ,KAAK;AAAA,IACtF,KAAK,OAAO,KAAK,KAAK,QAAQ,GAAE;AAAA,GACjC,KAAI,GAAE,cAAc,WAAU,WAAW,GAAE,YAAY,EAAE,IAAI,WAAU,OAAO,GAAE,YAAY,MAAM,CAAC,CAAC,IAAI,WAAU,CAAC,WAAW,QAAQ,GAAG,GAAG,GAAG,KAAI,KAAK,YAAY,KAAK,sBAAsB,IAAG,KAAI,KAAK,SAAS;AAAA,IACnN,QAAQ,KAAK;AAAA,WACN,SAAS;AAAA,QACZ,MAAM,KAAI,KAAK,QAAQ,KAAK,WAAU,UAAU,KAAK,KAAK,MAAM,IAAI,KAAI,KAAI,GAAG,WAAU,UAAU,KAAK,QAAQ,IAAI,IAAI,KAAI,WAAU,UAAU,SAAS,IAAI;AAAA,QAC7J,OAAO,GAAG,EAAE,KAAK;AAAA,EACvB,KAAI;AAAA,EACJ,IAAI;AAAA;AAAA,MAEA;AAAA,WACK,UAAU;AAAA,QACb,MAAM,KAAI,KAAI,KAAK,WAAU,OAAO,EAAC,MAAM,IAAI,KAAI,KAAI,WAAU,QAAQ,KAAK,IAAI;AAAA,QAClF,OAAO,GAAG,IAAI,KAAI;AAAA,MACpB;AAAA,WACK,UAAU;AAAA,QACb,MAAM,KAAI,KAAI,KAAK,WAAU,CAAC,iBAAiB,KAAK,GAAG,EAAC,MAAM,IAAI,KAAI,KAAI,WAAU,QAAQ,KAAK,IAAI;AAAA,QACrG,OAAO,GAAG,IAAI,KAAI,KAAI,GAAE,KAAK,IAAI;AAAA,EACvC,OAAM;AAAA,MACF;AAAA,eACS;AAAA,QACP,MAAM,KAAI,KAAI,GAAG,WAAU,QAAQ,KAAK,QAAQ,IAAI,KAAI,KAAI,WAAU,QAAQ,SAAS,IAAI;AAAA,QAC3F,OAAO,GAAG,IAAI,KAAI;AAAA,EACxB;AAAA;AAAA,MAEI;AAAA;AAAA;AAGN,CAAC,EAAE,OAAO;;;AN92CV;;;AOLA,IAAM,MAAM;AACZ,IAAM,OAAO;AACb,IAAM,QAAQ;AAEP,IAAM,SAAS;AAAA,EACrB;AAAA,EACA,GAAG,OAAO,0SAAwE;AAAA,EAClF,GAAG,OAAO,wUAAwE;AAAA,EAClF,GAAG,OAAO,0SAAwE;AAAA,EAClF,GAAG,OAAO,oTAAwE;AAAA,EAClF,GAAG,OAAO,+SAAwE;AAAA,EAClF,GAAG,OAAO,qSAAwE;AAAA,EAClF;AAAA,EACA,GAAG,kXAA+E;AAAA,EAClF,GAAG,uFAAiF;AAAA,EACpF,GAAG,6DAA6D;AAAA,EAChE,GAAG,sXAA8E;AAAA,EACjF;AACD,EAAE,KAAK;AAAA,CAAI;AAEJ,SAAS,WAAW,GAAS;AAAA,EACnC,QAAQ,IAAI,MAAM;AAAA;;;ACrBnB;AACA;AAGO,SAAS,eAAe,CAAC,SAAuB;AAAA,EACtD,IAAI,CAAC,WAAW,OAAO,GAAG;AAAA,IACzB,UAAU,SAAS;AAAA,MAClB,WAAW;AAAA,IACZ,CAAC;AAAA,EACF;AAAA;AAGM,SAAS,SAAS,CACxB,cACA,aACO;AAAA,EACP,gBAAgB,QAAQ,YAAY,CAAC;AAAA,EACrC,cAAc,cAAc,WAAW;AAAA;AAGjC,SAAS,iBAAiB,CAChC,aACA,gBACO;AAAA,EACP,WAAW,eAAe,gBAAgB;AAAA,IACzC,MAAM,eAAe,KAAK,QAAQ,WAAW,GAAG,YAAY,IAAI;AAAA,IAChE,UAAU,cAAc,YAAY,OAAO;AAAA,EAC5C;AAAA;;;AC3BD;;;ACkCO,IAAM,cAA4C;AAAA,EACxD,UAAU;AAAA,EACV,WAAW;AAAA,EACX,MAAM;AAAA,EACN,MAAM;AACP;AAEO,IAAM,kBAAoD;AAAA,EAChE,OAAO;AAAA,EACP,SAAS;AAAA,EACT,MAAM;AAAA,EACN,QAAQ;AACT;AAEO,IAAM,mBAA6C;AAAA,EACzD,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,SAAS;AAAA,EACT,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,OAAO;AAAA,EACP,aAAa;AAAA,EACb,MAAM;AAAA,EACN,OAAO;AACR;AAEO,IAAM,sBAAkD;AAAA,EAC9D,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,QAAQ;AACT;AAEO,IAAM,uBAAoD;AAAA,EAChE,WAAW;AAAA,EACX,iBAAiB;AAClB;;;AD/DA,IAAM,yBACL;AACD,IAAM,gBAAgB,aACrB,IAAI,IAAI,yBAAyB,YAAY,GAAG,CACjD;AAIA,SAAS,YAAY,CAAC,eAA6C;AAAA,EAClE,QAAQ,aAAa,gBAAgB;AAAA,EAErC,MAAM,aACL,gBAAgB,cAAc,CAAC,YAAY,WAAW,QAAQ,IAAI,CAAC;AAAA,EAEpE,OAAO;AAAA,IACN;AAAA,MACC,MAAM;AAAA,MACN,SAAS,KAAK,UACb;AAAA,QACC,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,WACL,gBAAgB,cAAc,EAAE,WAAW,IAAI,CAAC;AAAA,QACpD,SACC,gBAAgB,cACb;AAAA,UACA,gBAAgB;AAAA,UAChB,eAAe;AAAA,UACf,kBAAkB;AAAA,UAClB,iBAAiB;AAAA,UACjB,OAAO;AAAA,UACP,OAAO;AAAA,UACP,WACC;AAAA,QACF,IACC;AAAA,UACA,KAAK;AAAA,UACL,OAAO;AAAA,UACP,OAAO;AAAA,UACP,WAAW;AAAA,QACZ;AAAA,QACH,aAAa,GAAG;AAAA,MACjB,GACA,MACA,CACD;AAAA,IACD;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS,KAAK,UACb;AAAA,QACC,iBAAiB;AAAA,UAChB,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR,kBAAkB;AAAA,UAClB,KAAK;AAAA,UACL,KAAK,CAAC,UAAU,OAAO,cAAc;AAAA,UACrC,QAAQ;AAAA,UACR,0BAA0B;AAAA,UAC1B,4BAA4B;AAAA,UAC5B,cAAc;AAAA,UACd,iBAAiB;AAAA,UACjB,8BAA8B;AAAA,UAC9B,mBAAmB;AAAA,UACnB,sBAAsB;AAAA,UACtB,iBAAiB;AAAA,QAClB;AAAA,QACA,SAAS,CAAC,gBAAgB,QAAQ,YAAY;AAAA,MAC/C,GACA,MACA,CACD;AAAA,IACD;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IACV;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IACV;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA;AAAA,IACV;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IACV;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS,sBAAsB,aAAa;AAAA,IAC7C;AAAA,EACD;AAAA;AAKD,SAAS,oBAAoB,CAAC,eAA6C;AAAA,EAC1E,QAAQ,aAAa,iBAAiB;AAAA,EACtC,MAAM,gBACL,iBAAiB,SAAS,iBAAiB;AAAA,EAE5C,OAAO;AAAA,IACN;AAAA,MACC,MAAM;AAAA,MACN,SAAS,KAAK,UACb;AAAA,QACC,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,QACT,MAAM;AAAA,QACN,SAAS;AAAA,UACR,KAAK;AAAA,UACL,OAAO;AAAA,UACP,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,WAAW;AAAA,QACZ;AAAA,QACA,cAAc;AAAA,UACb,SAAS;AAAA,UACT,OAAO;AAAA,UACP,aAAa;AAAA,aACV,mBAAmB,YAAY;AAAA,QACnC;AAAA,QACA,iBAAiB;AAAA,UAChB,gBAAgB;AAAA,UAChB,oBAAoB;AAAA,UACpB,YAAY;AAAA,aACT,sBAAsB,YAAY;AAAA,QACtC;AAAA,MACD,GACA,MACA,CACD;AAAA,IACD;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS,KAAK,UACb;AAAA,QACC,SAAS;AAAA,QACT,iBAAiB;AAAA,UAChB,QAAQ;AAAA,UACR,SAAS;AAAA,UACT,OAAO,CAAC,SAAS,WAAW;AAAA,QAC7B;AAAA,QACA,SAAS;AAAA,UACR;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA,QACA,SAAS,CAAC,gBAAgB,MAAM;AAAA,MACjC,GACA,MACA,CACD;AAAA,IACD;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS,6BAA6B;AAAA,IACvC;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA;AAAA;AAAA,cAAmG;AAAA;AAAA,qBAA+C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAC5J;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS,2BAA2B;AAAA,IACrC;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS,yBAAyB,WAAW;AAAA,IAC9C;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS,4BAA4B;AAAA,IACtC;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS,0BAA0B;AAAA,IACpC;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS,6BAA6B;AAAA,IACvC;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS,8BAA8B;AAAA,IACxC;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS,+BAA+B;AAAA,IACzC;AAAA,IACA;AAAA,MACC,MAAM,UAAU;AAAA,MAChB,SAAS,0BAA0B,YAAY;AAAA,IAChD;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,EACD;AAAA;AAKD,SAAS,yBAAyB,CACjC,eACgB;AAAA,EAChB,QAAQ,aAAa,iBAAiB;AAAA,EACtC,MAAM,gBACL,iBAAiB,SAAS,iBAAiB;AAAA,EAE5C,OAAO;AAAA,IACN;AAAA,MACC,MAAM;AAAA,MACN,SAAS,KAAK,UACb;AAAA,QACC,MAAM,GAAG;AAAA,QACT,SAAS;AAAA,QACT,SAAS;AAAA,QACT,SAAS;AAAA,UACR,KAAK;AAAA,UACL,OAAO;AAAA,UACP,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,oBAAoB;AAAA,UACpB,aAAa;AAAA,UACb,WAAW;AAAA,QACZ;AAAA,QACA,cAAc;AAAA,UACb,SAAS;AAAA,UACT,OAAO;AAAA,UACP,aAAa;AAAA,aACV,mBAAmB,YAAY;AAAA,QACnC;AAAA,QACA,iBAAiB;AAAA,UAChB,gBAAgB;AAAA,UAChB,oBAAoB;AAAA,UACpB,YAAY;AAAA,aACT,sBAAsB,YAAY;AAAA,QACtC;AAAA,MACD,GACA,MACA,CACD;AAAA,IACD;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS,KAAK,UACb;AAAA,QACC,SAAS;AAAA,QACT,iBAAiB;AAAA,UAChB,QAAQ;AAAA,UACR,SAAS;AAAA,QACV;AAAA,QACA,SAAS;AAAA,UACR;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA,QACA,SAAS,CAAC,gBAAgB,MAAM;AAAA,MACjC,GACA,MACA,CACD;AAAA,IACD;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA;AAAA;AAAA,cAAmG;AAAA;AAAA,qBAA+C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAC5J;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA,oBAAiD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAC3D;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS,0BAA0B,WAAW;AAAA,IAC/C;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA0N;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IACpO;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IACV;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IACV;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IACV;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IACV;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IACV;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IACV;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IACV;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IACV;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IACV;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IACV;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IACV;AAAA,IACA;AAAA,MACC,MAAM,mBAAmB;AAAA,MACzB,SAAS,cAAc,YAAY;AAAA,IACpC;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,EACD;AAAA;AAKD,SAAS,eAAe,CAAC,eAA6C;AAAA,EACrE,OAAO;AAAA,IACN,GAAG,sBAAsB,aAAa;AAAA,IACtC,GAAG,yBAAyB,cAAc,kBAAkB,aAAa;AAAA,EAC1E;AAAA;AAGD,SAAS,qBAAqB,CAAC,eAA6C;AAAA,EAC3E,OAAO;AAAA,IACN;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IACV;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA;AAAA;AAAA,WAAyE,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IACjG;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS,kBAAkB,cAAc,QAAQ;AAAA,IAClD;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS,kBAAkB,cAAc,QAAQ;AAAA,IAClD;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAA6S,cAAc;AAAA,kBAAsC,gBAAgB,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IACzY;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS,sBAAsB,cAAc,QAAQ;AAAA,IACtD;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS,KAAK,UACb;AAAA,QACC,SAAS;AAAA,QACT,iBAAiB;AAAA,UAChB,QAAQ;AAAA,UACR,SAAS;AAAA,UACT,OAAO,CAAC,QAAQ,KAAK;AAAA,QACtB;AAAA,QACA,SAAS,CAAC,UAAU;AAAA,QACpB,SAAS,CAAC,gBAAgB,MAAM;AAAA,MACjC,GACA,MACA,CACD;AAAA,IACD;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,EACD;AAAA;AAGD,SAAS,wBAAwB,CAChC,mBACA,eACgB;AAAA,EAChB,QAAQ;AAAA,SACF;AAAA,MACJ,OAAO,cAAc,aAAa;AAAA,SAC9B;AAAA,MACJ,OAAO,gBAAgB,aAAa;AAAA,SAChC;AAAA,MACJ,OAAO,aAAa,aAAa;AAAA,SAC7B;AAAA,MACJ,OAAO,eAAe,aAAa;AAAA;AAAA,MAEnC,OAAO,cAAc,aAAa;AAAA;AAAA;AAIrC,SAAS,aAAa,CAAC,eAA6C;AAAA,EACnE,OAAO;AAAA,IACN;AAAA,MACC,MAAM;AAAA,MACN,SAAS,sBAAsB,eAAe;AAAA,QAC7C,cAAc,KAAK,wBAAwB,cAAc,QAAQ,EAAE;AAAA,QACnE,iBAAiB,EAAE,cAAc,UAAU;AAAA,MAC5C,CAAC;AAAA,IACF;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAg6B,cAAc;AAAA;AAAA,IACx7B;AAAA,EACD;AAAA;AAGD,SAAS,eAAe,CAAC,eAA6C;AAAA,EACrE,OAAO;AAAA,IACN;AAAA,MACC,MAAM;AAAA,MACN,SAAS,sBAAsB,eAAe;AAAA,QAC7C,cAAc;AAAA,UACb,SAAS;AAAA,UACT,MAAM;AAAA,aACH,wBAAwB,cAAc,QAAQ;AAAA,QAClD;AAAA,QACA,iBAAiB;AAAA,UAChB,kBAAkB;AAAA,UAClB,eAAe;AAAA,UACf,eAAe;AAAA,QAChB;AAAA,MACD,CAAC;AAAA,IACF;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA8hB,cAAc;AAAA;AAAA;AAAA,IACtjB;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,EACD;AAAA;AAGD,SAAS,YAAY,CAAC,eAA6C;AAAA,EAClE,OAAO;AAAA,IACN;AAAA,MACC,MAAM;AAAA,MACN,SAAS,sBAAsB,eAAe;AAAA,QAC7C,cAAc;AAAA,UACb,kBAAkB;AAAA,UAClB,gBAAgB;AAAA,UAChB,4BAA4B;AAAA,UAC5B,oBAAoB;AAAA,aACjB,wBAAwB,cAAc,QAAQ;AAAA,QAClD;AAAA,QACA,iBAAiB;AAAA,UAChB,eAAe;AAAA,QAChB;AAAA,MACD,CAAC;AAAA,IACF;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS,KAAK,UACb;AAAA,QACC,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,YAAY;AAAA,MACb,GACA,MACA,CACD;AAAA,IACD;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IACV;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IACV;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAuX,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA,IAC/Y;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,EACD;AAAA;AAGD,SAAS,cAAc,CAAC,eAA6C;AAAA,EACpE,OAAO;AAAA,IACN;AAAA,MACC,MAAM;AAAA,MACN,SAAS,sBAAsB,eAAe;AAAA,QAC7C,cAAc;AAAA,UACb,kBAAkB;AAAA,aACf,wBAAwB,cAAc,QAAQ;AAAA,QAClD;AAAA,QACA,iBAAiB;AAAA,UAChB,uBAAuB;AAAA,UACvB,eAAe;AAAA,QAChB;AAAA,MACD,CAAC;AAAA,IACF;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAg6B,cAAc;AAAA;AAAA,IACx7B;AAAA,EACD;AAAA;AAGD,SAAS,qBAAqB,CAC7B,eACA,aAIS;AAAA,EACT,OAAO,KAAK,UACX;AAAA,IACC,MAAM,GAAG,cAAc;AAAA,IACvB,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACR,KAAK;AAAA,MACL,OAAO;AAAA,MACP,OAAO;AAAA,MACP,WAAW;AAAA,IACZ;AAAA,IACA,cAAc;AAAA,SACV,YAAY;AAAA,IAChB;AAAA,IACA,iBAAiB;AAAA,MAChB,cAAc;AAAA,MACd,YAAY;AAAA,SACT,YAAY;AAAA,IAChB;AAAA,EACD,GACA,MACA,CACD;AAAA;AAKD,SAAS,cAAc,CAAC,eAA6C;AAAA,EACpE,OAAO;AAAA,IACN;AAAA,MACC,MAAM;AAAA,MACN,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IACV;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,SAAS,4BAA4B,cAAc;AAAA;AAAA;AAAA;AAAA,IACpD;AAAA,EACD;AAAA;AAKD,SAAS,kBAAkB,CAC1B,cACyB;AAAA,EACzB,QAAQ;AAAA,SACF;AAAA,MACJ,OAAO,EAAE,aAAa,SAAS;AAAA,SAC3B;AAAA,MACJ,OAAO,EAAE,WAAW,SAAS;AAAA,SACzB;AAAA,SACA;AAAA,MACJ,OAAO,CAAC;AAAA;AAAA;AAIX,SAAS,qBAAqB,CAC7B,cACyB;AAAA,EACzB,QAAQ;AAAA,SACF;AAAA,MACJ,OAAO,EAAE,MAAM,UAAU;AAAA;AAAA,MAEzB,OAAO,CAAC;AAAA;AAAA;AAIX,SAAS,yBAAyB,CAAC,cAAoC;AAAA,EACtE,MAAM,YACL,iBAAiB,aACd;AAAA;AAAA,IACA,iBAAiB,cAChB;AAAA;AAAA,IACA,iBAAiB,SAChB;AAAA;AAAA;AAAA;AAAA,IACA;AAAA,EAEN,OAAO,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAwVX,SAAS,aAAa,CAAC,cAAoC;AAAA,EAC1D,MAAM,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAyDnB,QAAQ;AAAA,SACF;AAAA,MACJ,OAAO;AAAA,EAA2B;AAAA,SAC9B;AAAA,MACJ,OAAO;AAAA,EAA4F;AAAA,SAC/F;AAAA,MACJ,OAAO;AAAA;AAAA;AAAA,EAAuF;AAAA,SAC1F;AAAA,MACJ,OAAO;AAAA;AAAA;AAMV,SAAS,4BAA4B,GAAW;AAAA,EAC/C,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA+CR,SAAS,0BAA0B,GAAW;AAAA,EAC7C,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqBR,SAAS,wBAAwB,CAAC,aAA6B;AAAA,EAC9D,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAUe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAuCvB,SAAS,2BAA2B,GAAW;AAAA,EAC9C,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUR,SAAS,yBAAyB,GAAW;AAAA,EAC5C,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgCR,SAAS,4BAA4B,GAAW;AAAA,EAC/C,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0BR,SAAS,6BAA6B,GAAW;AAAA,EAChD,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkLR,SAAS,8BAA8B,GAAW;AAAA,EACjD,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA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",
21
- "debugId": "7E0E06BF6F6CB6FA64756E2164756E21",
21
+ "mappings": "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A;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA4P9B,IAAM,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAwD5B,IAAM,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA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",
22
+ "debugId": "2F1EA54A681DEF9664756E2164756E21",
22
23
  "names": []
23
24
  }