create-strapi-app
Version:
Generate a new Strapi application.
1 lines • 16.3 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import { join, basename } from 'node:path';\nimport os from 'node:os';\nimport chalk from 'chalk';\nimport commander from 'commander';\nimport crypto from 'crypto';\nimport fse from 'fs-extra';\n\nimport * as prompts from './prompts';\nimport { handleCloudLogin } from './cloud';\nimport { createStrapi } from './create-strapi';\nimport { checkNodeRequirements } from './utils/check-requirements';\nimport { checkInstallPath } from './utils/check-install-path';\nimport { installID } from './utils/install-id';\nimport { trackError } from './utils/usage';\nimport { addDatabaseDependencies, getDatabaseInfos } from './utils/database';\n\nimport type { Options, Scope } from './types';\nimport { logger } from './utils/logger';\n\nconst { version } = fse.readJSONSync(join(__dirname, '..', 'package.json'));\n\nconst command = new commander.Command('create-strapi-app')\n .version(version)\n .arguments('[directory]')\n .usage('[directory] [options]')\n .option('--quickstart', 'Quickstart app creation (deprecated)')\n .option('--no-run', 'Do not start the application after it is created.')\n\n // setup options\n .option('--ts, --typescript', 'Initialize the project with TypeScript (default)')\n .option('--js, --javascript', 'Initialize the project with Javascript')\n\n // Package manager options\n .option('--use-npm', 'Use npm as the project package manager')\n .option('--use-yarn', 'Use yarn as the project package manager')\n .option('--use-pnpm', 'Use pnpm as the project package manager')\n\n // dependencies options\n .option('--install', 'Install dependencies')\n .option('--no-install', 'Do not install dependencies')\n\n // Cloud options\n .option('--skip-cloud', 'Skip cloud login and project creation')\n\n // Example app\n .option('--example', 'Use an example app')\n .option('--no-example', 'Do not use an example app')\n\n // git options\n .option('--git-init', 'Initialize a git repository')\n .option('--no-git-init', 'Do no initialize a git repository')\n\n // Database options\n .option('--dbclient <dbclient>', 'Database client')\n .option('--dbhost <dbhost>', 'Database host')\n .option('--dbport <dbport>', 'Database port')\n .option('--dbname <dbname>', 'Database name')\n .option('--dbusername <dbusername>', 'Database username')\n .option('--dbpassword <dbpassword>', 'Database password')\n .option('--dbssl <dbssl>', 'Database SSL')\n .option('--dbfile <dbfile>', 'Database file path for sqlite')\n .option('--skip-db', 'Skip database configuration')\n\n .option('--template <template>', 'Specify a Strapi template')\n .option('--template-branch <templateBranch>', 'Specify a branch for the template')\n .option('--template-path <templatePath>', 'Specify a path to the template inside the repository')\n\n .description('create a new application');\n\nasync function run(args: string[]): Promise<void> {\n const options = command.parse(args).opts<Options>();\n const directory = command.args[0];\n\n logger.title(\n 'Strapi',\n `${chalk.green(chalk.bold(`v${version}`))} ${chalk.bold(\"🚀 Let's create your new project\")}\\n`\n );\n\n if (\n (options.javascript !== undefined || options.typescript !== undefined) &&\n options.template !== undefined\n ) {\n logger.fatal(\n `You cannot use ${chalk.bold('--javascript')} or ${chalk.bold('--typescript')} with ${chalk.bold('--template')}`\n );\n }\n\n if (options.javascript === true && options.typescript === true) {\n logger.fatal(\n `You cannot use both ${chalk.bold('--typescript')} (--ts) and ${chalk.bold('--javascript')} (--js) flags together`\n );\n }\n\n // Only prompt the example app option if there is no template option\n if (options.example === true && options.template !== undefined) {\n logger.fatal(`You cannot use ${chalk.bold('--example')} with ${chalk.bold('--template')}`);\n }\n\n if (options.template !== undefined && options.template.startsWith('-')) {\n logger.fatal(`Template name ${chalk.bold(`\"${options.template}\"`)} is invalid`);\n }\n\n if ([options.useNpm, options.usePnpm, options.useYarn].filter(Boolean).length > 1) {\n logger.fatal(\n `You cannot specify multiple package managers at the same time ${chalk.bold('(--use-npm, --use-pnpm, --use-yarn)')}`\n );\n }\n\n if (options.quickstart && !directory) {\n logger.fatal(\n `Please specify the ${chalk.bold('<directory>')} of your project when using ${chalk.bold('--quickstart')}`\n );\n }\n\n checkNodeRequirements();\n\n const appDirectory = directory || (await prompts.directory());\n\n const rootPath = await checkInstallPath(appDirectory);\n\n let shouldCreateGrowthSsoTrial = false;\n if (!options.skipCloud) {\n shouldCreateGrowthSsoTrial = await handleCloudLogin();\n }\n\n const tmpPath = join(os.tmpdir(), `strapi${crypto.randomBytes(6).toString('hex')}`);\n\n const randomUUID = crypto.randomUUID();\n const uuid = (process.env.STRAPI_UUID_PREFIX || '') + randomUUID;\n const installId = installID(uuid);\n\n const scope: Scope = {\n rootPath,\n name: basename(rootPath),\n packageManager: getPkgManager(options),\n database: await getDatabaseInfos(options),\n template: options.template,\n templateBranch: options.templateBranch,\n templatePath: options.templatePath,\n isQuickstart: options.quickstart,\n useExample: false,\n runApp: options.quickstart === true && options.run !== false,\n strapiVersion: version,\n packageJsonStrapi: {\n template: options.template,\n },\n uuid,\n docker: process.env.DOCKER === 'true',\n installId,\n tmpPath,\n gitInit: true,\n devDependencies: {},\n dependencies: {\n '@strapi/strapi': version,\n '@strapi/plugin-users-permissions': version,\n '@strapi/plugin-cloud': version,\n // third party\n react: '^18.0.0',\n 'react-dom': '^18.0.0',\n 'react-router-dom': '^6.0.0',\n 'styled-components': '^6.0.0',\n },\n shouldCreateGrowthSsoTrial,\n isABTestEnabled: false,\n };\n\n if (options.template !== undefined) {\n scope.useExample = false;\n } else if (options.example === true) {\n scope.useExample = true;\n } else if (options.example === false || options.quickstart === true) {\n scope.useExample = false;\n } else {\n scope.useExample = await prompts.example();\n }\n\n if (options.javascript === true) {\n scope.useTypescript = false;\n } else if (options.typescript === true || options.quickstart) {\n scope.useTypescript = true;\n } else if (!options.template) {\n scope.useTypescript = await prompts.typescript();\n }\n\n if (options.install === true || options.quickstart) {\n scope.installDependencies = true;\n } else if (options.install === false) {\n scope.installDependencies = false;\n } else {\n scope.installDependencies = await prompts.installDependencies(scope.packageManager);\n }\n\n if (scope.useTypescript) {\n scope.devDependencies = {\n ...scope.devDependencies,\n typescript: '^5',\n '@types/node': '^20',\n '@types/react': '^18',\n '@types/react-dom': '^18',\n };\n }\n\n if (options.gitInit === true || options.quickstart) {\n scope.gitInit = true;\n } else if (options.gitInit === false) {\n scope.gitInit = false;\n } else {\n scope.gitInit = await prompts.gitInit();\n }\n\n scope.isABTestEnabled = await prompts.enableABTests();\n\n addDatabaseDependencies(scope);\n\n try {\n await createStrapi(scope);\n } catch (error: unknown) {\n if (!(error instanceof Error)) {\n throw error;\n }\n\n await trackError({ scope, error });\n\n logger.fatal(error.message);\n }\n}\n\nfunction getPkgManager(options: Options) {\n if (options.useNpm === true) {\n return 'npm';\n }\n\n if (options.usePnpm === true) {\n return 'pnpm';\n }\n\n if (options.useYarn === true) {\n return 'yarn';\n }\n\n const userAgent = process.env.npm_config_user_agent || '';\n\n if (userAgent.startsWith('yarn')) {\n return 'yarn';\n }\n\n if (userAgent.startsWith('pnpm')) {\n return 'pnpm';\n }\n\n return 'npm';\n}\n\nexport { run, createStrapi };\nexport type { Scope };\n"],"names":["version","fse","readJSONSync","join","__dirname","command","commander","Command","arguments","usage","option","description","run","args","options","parse","opts","directory","logger","title","chalk","green","bold","javascript","undefined","typescript","template","fatal","example","startsWith","useNpm","usePnpm","useYarn","filter","Boolean","length","quickstart","checkNodeRequirements","appDirectory","prompts","rootPath","checkInstallPath","shouldCreateGrowthSsoTrial","skipCloud","handleCloudLogin","tmpPath","os","tmpdir","crypto","randomBytes","toString","randomUUID","uuid","process","env","STRAPI_UUID_PREFIX","installId","installID","scope","name","basename","packageManager","getPkgManager","database","getDatabaseInfos","templateBranch","templatePath","isQuickstart","useExample","runApp","strapiVersion","packageJsonStrapi","docker","DOCKER","gitInit","devDependencies","dependencies","react","isABTestEnabled","useTypescript","install","installDependencies","addDatabaseDependencies","createStrapi","error","Error","trackError","message","userAgent","npm_config_user_agent"],"mappings":";;;;;;;;;;;;;;;;AAmBA,MAAM,EAAEA,OAAO,EAAE,GAAGC,IAAIC,YAAY,CAACC,IAAKC,CAAAA,SAAAA,EAAW,IAAM,EAAA,cAAA,CAAA,CAAA;AAE3D,MAAMC,OAAAA,GAAU,IAAIC,SAAUC,CAAAA,OAAO,CAAC,mBACnCP,CAAAA,CAAAA,OAAO,CAACA,OAAAA,CAAAA,CACRQ,SAAS,CAAC,eACVC,KAAK,CAAC,uBACNC,CAAAA,CAAAA,MAAM,CAAC,cAAA,EAAgB,wCACvBA,MAAM,CAAC,UAAY,EAAA,mDAAA,CAEpB;AACCA,CAAAA,MAAM,CAAC,oBAAsB,EAAA,kDAAA,CAAA,CAC7BA,MAAM,CAAC,oBAAA,EAAsB,yCAE9B;CACCA,MAAM,CAAC,WAAa,EAAA,wCAAA,CAAA,CACpBA,MAAM,CAAC,YAAc,EAAA,yCAAA,CAAA,CACrBA,MAAM,CAAC,YAAc,EAAA,yCAAA,CAEtB;AACCA,CAAAA,MAAM,CAAC,WAAa,EAAA,sBAAA,CAAA,CACpBA,MAAM,CAAC,cAAA,EAAgB,8BAExB;CACCA,MAAM,CAAC,cAAgB,EAAA,uCAAA,CAExB;AACCA,CAAAA,MAAM,CAAC,WAAa,EAAA,oBAAA,CAAA,CACpBA,MAAM,CAAC,cAAA,EAAgB,4BAExB;AACCA,CAAAA,MAAM,CAAC,YAAc,EAAA,6BAAA,CAAA,CACrBA,MAAM,CAAC,eAAA,EAAiB,oCAEzB;CACCA,MAAM,CAAC,yBAAyB,iBAChCA,CAAAA,CAAAA,MAAM,CAAC,mBAAqB,EAAA,eAAA,CAAA,CAC5BA,MAAM,CAAC,mBAAqB,EAAA,eAAA,CAAA,CAC5BA,MAAM,CAAC,mBAAA,EAAqB,iBAC5BA,MAAM,CAAC,6BAA6B,mBACpCA,CAAAA,CAAAA,MAAM,CAAC,2BAAA,EAA6B,mBACpCA,CAAAA,CAAAA,MAAM,CAAC,iBAAmB,EAAA,cAAA,CAAA,CAC1BA,MAAM,CAAC,mBAAA,EAAqB,iCAC5BA,MAAM,CAAC,WAAa,EAAA,6BAAA,CAAA,CAEpBA,MAAM,CAAC,yBAAyB,2BAChCA,CAAAA,CAAAA,MAAM,CAAC,oCAAsC,EAAA,mCAAA,CAAA,CAC7CA,MAAM,CAAC,gCAAA,EAAkC,sDAEzCC,CAAAA,CAAAA,WAAW,CAAC,0BAAA,CAAA;AAEf,eAAeC,IAAIC,IAAc,EAAA;AAC/B,IAAA,MAAMC,OAAUT,GAAAA,OAAAA,CAAQU,KAAK,CAACF,MAAMG,IAAI,EAAA;AACxC,IAAA,MAAMC,WAAYZ,GAAAA,OAAAA,CAAQQ,IAAI,CAAC,CAAE,CAAA;IAEjCK,MAAOC,CAAAA,KAAK,CACV,QACA,EAAA,CAAA,EAAGC,MAAMC,KAAK,CAACD,KAAME,CAAAA,IAAI,CAAC,CAAC,CAAC,EAAEtB,OAAAA,CAAAA,CAAS,GAAG,CAAC,EAAEoB,MAAME,IAAI,CAAC,kCAAoC,CAAA,CAAA,EAAE,CAAC,CAAA;AAGjG,IAAA,IACE,CAACR,OAAQS,CAAAA,UAAU,KAAKC,SAAaV,IAAAA,OAAAA,CAAQW,UAAU,KAAKD,SAAQ,KACpEV,OAAQY,CAAAA,QAAQ,KAAKF,SACrB,EAAA;QACAN,MAAOS,CAAAA,KAAK,CACV,CAAC,eAAe,EAAEP,KAAME,CAAAA,IAAI,CAAC,cAAgB,CAAA,CAAA,IAAI,EAAEF,KAAME,CAAAA,IAAI,CAAC,cAAgB,CAAA,CAAA,MAAM,EAAEF,KAAME,CAAAA,IAAI,CAAC,YAAe,CAAA,CAAA,CAAA,CAAA;AAEpH;AAEA,IAAA,IAAIR,QAAQS,UAAU,KAAK,QAAQT,OAAQW,CAAAA,UAAU,KAAK,IAAM,EAAA;AAC9DP,QAAAA,MAAAA,CAAOS,KAAK,CACV,CAAC,oBAAoB,EAAEP,MAAME,IAAI,CAAC,cAAgB,CAAA,CAAA,YAAY,EAAEF,KAAME,CAAAA,IAAI,CAAC,cAAA,CAAA,CAAgB,sBAAsB,CAAC,CAAA;AAEtH;;AAGA,IAAA,IAAIR,QAAQc,OAAO,KAAK,QAAQd,OAAQY,CAAAA,QAAQ,KAAKF,SAAW,EAAA;AAC9DN,QAAAA,MAAAA,CAAOS,KAAK,CAAC,CAAC,eAAe,EAAEP,KAAME,CAAAA,IAAI,CAAC,WAAA,CAAA,CAAa,MAAM,EAAEF,KAAME,CAAAA,IAAI,CAAC,YAAe,CAAA,CAAA,CAAA,CAAA;AAC3F;IAEA,IAAIR,OAAAA,CAAQY,QAAQ,KAAKF,SAAAA,IAAaV,QAAQY,QAAQ,CAACG,UAAU,CAAC,GAAM,CAAA,EAAA;AACtEX,QAAAA,MAAAA,CAAOS,KAAK,CAAC,CAAC,cAAc,EAAEP,KAAAA,CAAME,IAAI,CAAC,CAAC,CAAC,EAAER,QAAQY,QAAQ,CAAC,CAAC,CAAC,CAAA,CAAE,WAAW,CAAC,CAAA;AAChF;IAEA,IAAI;AAACZ,QAAAA,OAAAA,CAAQgB,MAAM;AAAEhB,QAAAA,OAAAA,CAAQiB,OAAO;AAAEjB,QAAAA,OAAAA,CAAQkB;AAAQ,KAAA,CAACC,MAAM,CAACC,OAASC,CAAAA,CAAAA,MAAM,GAAG,CAAG,EAAA;QACjFjB,MAAOS,CAAAA,KAAK,CACV,CAAC,8DAA8D,EAAEP,KAAME,CAAAA,IAAI,CAAC,qCAAwC,CAAA,CAAA,CAAA,CAAA;AAExH;AAEA,IAAA,IAAIR,OAAQsB,CAAAA,UAAU,IAAI,CAACnB,WAAW,EAAA;AACpCC,QAAAA,MAAAA,CAAOS,KAAK,CACV,CAAC,mBAAmB,EAAEP,KAAME,CAAAA,IAAI,CAAC,aAAA,CAAA,CAAe,4BAA4B,EAAEF,KAAME,CAAAA,IAAI,CAAC,cAAiB,CAAA,CAAA,CAAA,CAAA;AAE9G;AAEAe,IAAAA,qBAAAA,EAAAA;AAEA,IAAA,MAAMC,YAAerB,GAAAA,WAAAA,IAAc,MAAMsB,SAAiB,EAAA;IAE1D,MAAMC,QAAAA,GAAW,MAAMC,gBAAiBH,CAAAA,YAAAA,CAAAA;AAExC,IAAA,IAAII,0BAA6B,GAAA,KAAA;IACjC,IAAI,CAAC5B,OAAQ6B,CAAAA,SAAS,EAAE;AACtBD,QAAAA,0BAAAA,GAA6B,MAAME,gBAAAA,EAAAA;AACrC;AAEA,IAAA,MAAMC,OAAU1C,GAAAA,IAAAA,CAAK2C,EAAGC,CAAAA,MAAM,IAAI,CAAC,MAAM,EAAEC,MAAAA,CAAOC,WAAW,CAAC,CAAGC,CAAAA,CAAAA,QAAQ,CAAC,KAAQ,CAAA,CAAA,CAAA,CAAA;IAElF,MAAMC,UAAAA,GAAaH,OAAOG,UAAU,EAAA;IACpC,MAAMC,IAAAA,GAAO,CAACC,OAAAA,CAAQC,GAAG,CAACC,kBAAkB,IAAI,EAAC,IAAKJ,UAAAA;AACtD,IAAA,MAAMK,YAAYC,SAAUL,CAAAA,IAAAA,CAAAA;AAE5B,IAAA,MAAMM,KAAe,GAAA;AACnBlB,QAAAA,QAAAA;AACAmB,QAAAA,IAAAA,EAAMC,QAASpB,CAAAA,QAAAA,CAAAA;AACfqB,QAAAA,cAAAA,EAAgBC,aAAchD,CAAAA,OAAAA,CAAAA;AAC9BiD,QAAAA,QAAAA,EAAU,MAAMC,gBAAiBlD,CAAAA,OAAAA,CAAAA;AACjCY,QAAAA,QAAAA,EAAUZ,QAAQY,QAAQ;AAC1BuC,QAAAA,cAAAA,EAAgBnD,QAAQmD,cAAc;AACtCC,QAAAA,YAAAA,EAAcpD,QAAQoD,YAAY;AAClCC,QAAAA,YAAAA,EAAcrD,QAAQsB,UAAU;QAChCgC,UAAY,EAAA,KAAA;AACZC,QAAAA,MAAAA,EAAQvD,QAAQsB,UAAU,KAAK,IAAQtB,IAAAA,OAAAA,CAAQF,GAAG,KAAK,KAAA;QACvD0D,aAAetE,EAAAA,OAAAA;QACfuE,iBAAmB,EAAA;AACjB7C,YAAAA,QAAAA,EAAUZ,QAAQY;AACpB,SAAA;AACA0B,QAAAA,IAAAA;AACAoB,QAAAA,MAAAA,EAAQnB,OAAQC,CAAAA,GAAG,CAACmB,MAAM,KAAK,MAAA;AAC/BjB,QAAAA,SAAAA;AACAX,QAAAA,OAAAA;QACA6B,OAAS,EAAA,IAAA;AACTC,QAAAA,eAAAA,EAAiB,EAAC;QAClBC,YAAc,EAAA;YACZ,gBAAkB5E,EAAAA,OAAAA;YAClB,kCAAoCA,EAAAA,OAAAA;YACpC,sBAAwBA,EAAAA,OAAAA;;YAExB6E,KAAO,EAAA,SAAA;YACP,WAAa,EAAA,SAAA;YACb,kBAAoB,EAAA,QAAA;YACpB,mBAAqB,EAAA;AACvB,SAAA;AACAnC,QAAAA,0BAAAA;QACAoC,eAAiB,EAAA;AACnB,KAAA;IAEA,IAAIhE,OAAAA,CAAQY,QAAQ,KAAKF,SAAW,EAAA;AAClCkC,QAAAA,KAAAA,CAAMU,UAAU,GAAG,KAAA;AACrB,KAAA,MAAO,IAAItD,OAAAA,CAAQc,OAAO,KAAK,IAAM,EAAA;AACnC8B,QAAAA,KAAAA,CAAMU,UAAU,GAAG,IAAA;KACd,MAAA,IAAItD,QAAQc,OAAO,KAAK,SAASd,OAAQsB,CAAAA,UAAU,KAAK,IAAM,EAAA;AACnEsB,QAAAA,KAAAA,CAAMU,UAAU,GAAG,KAAA;KACd,MAAA;AACLV,QAAAA,KAAAA,CAAMU,UAAU,GAAG,MAAM7B,OAAe,EAAA;AAC1C;IAEA,IAAIzB,OAAAA,CAAQS,UAAU,KAAK,IAAM,EAAA;AAC/BmC,QAAAA,KAAAA,CAAMqB,aAAa,GAAG,KAAA;AACxB,KAAA,MAAO,IAAIjE,OAAQW,CAAAA,UAAU,KAAK,IAAQX,IAAAA,OAAAA,CAAQsB,UAAU,EAAE;AAC5DsB,QAAAA,KAAAA,CAAMqB,aAAa,GAAG,IAAA;AACxB,KAAA,MAAO,IAAI,CAACjE,OAAQY,CAAAA,QAAQ,EAAE;AAC5BgC,QAAAA,KAAAA,CAAMqB,aAAa,GAAG,MAAMxC,UAAkB,EAAA;AAChD;AAEA,IAAA,IAAIzB,QAAQkE,OAAO,KAAK,IAAQlE,IAAAA,OAAAA,CAAQsB,UAAU,EAAE;AAClDsB,QAAAA,KAAAA,CAAMuB,mBAAmB,GAAG,IAAA;AAC9B,KAAA,MAAO,IAAInE,OAAAA,CAAQkE,OAAO,KAAK,KAAO,EAAA;AACpCtB,QAAAA,KAAAA,CAAMuB,mBAAmB,GAAG,KAAA;KACvB,MAAA;AACLvB,QAAAA,KAAAA,CAAMuB,mBAAmB,GAAG,MAAM1C,mBAA2B,CAACmB,MAAMG,cAAc,CAAA;AACpF;IAEA,IAAIH,KAAAA,CAAMqB,aAAa,EAAE;AACvBrB,QAAAA,KAAAA,CAAMiB,eAAe,GAAG;AACtB,YAAA,GAAGjB,MAAMiB,eAAe;YACxBlD,UAAY,EAAA,IAAA;YACZ,aAAe,EAAA,KAAA;YACf,cAAgB,EAAA,KAAA;YAChB,kBAAoB,EAAA;AACtB,SAAA;AACF;AAEA,IAAA,IAAIX,QAAQ4D,OAAO,KAAK,IAAQ5D,IAAAA,OAAAA,CAAQsB,UAAU,EAAE;AAClDsB,QAAAA,KAAAA,CAAMgB,OAAO,GAAG,IAAA;AAClB,KAAA,MAAO,IAAI5D,OAAAA,CAAQ4D,OAAO,KAAK,KAAO,EAAA;AACpChB,QAAAA,KAAAA,CAAMgB,OAAO,GAAG,KAAA;KACX,MAAA;AACLhB,QAAAA,KAAAA,CAAMgB,OAAO,GAAG,MAAMnC,OAAe,EAAA;AACvC;AAEAmB,IAAAA,KAAAA,CAAMoB,eAAe,GAAG,MAAMvC,aAAqB,EAAA;IAEnD2C,uBAAwBxB,CAAAA,KAAAA,CAAAA;IAExB,IAAI;AACF,QAAA,MAAMyB,YAAazB,CAAAA,KAAAA,CAAAA;AACrB,KAAA,CAAE,OAAO0B,KAAgB,EAAA;AACvB,QAAA,IAAI,EAAEA,KAAiBC,YAAAA,KAAI,CAAI,EAAA;YAC7B,MAAMD,KAAAA;AACR;AAEA,QAAA,MAAME,UAAW,CAAA;AAAE5B,YAAAA,KAAAA;AAAO0B,YAAAA;AAAM,SAAA,CAAA;QAEhClE,MAAOS,CAAAA,KAAK,CAACyD,KAAAA,CAAMG,OAAO,CAAA;AAC5B;AACF;AAEA,SAASzB,cAAchD,OAAgB,EAAA;IACrC,IAAIA,OAAAA,CAAQgB,MAAM,KAAK,IAAM,EAAA;QAC3B,OAAO,KAAA;AACT;IAEA,IAAIhB,OAAAA,CAAQiB,OAAO,KAAK,IAAM,EAAA;QAC5B,OAAO,MAAA;AACT;IAEA,IAAIjB,OAAAA,CAAQkB,OAAO,KAAK,IAAM,EAAA;QAC5B,OAAO,MAAA;AACT;AAEA,IAAA,MAAMwD,SAAYnC,GAAAA,OAAAA,CAAQC,GAAG,CAACmC,qBAAqB,IAAI,EAAA;IAEvD,IAAID,SAAAA,CAAU3D,UAAU,CAAC,MAAS,CAAA,EAAA;QAChC,OAAO,MAAA;AACT;IAEA,IAAI2D,SAAAA,CAAU3D,UAAU,CAAC,MAAS,CAAA,EAAA;QAChC,OAAO,MAAA;AACT;IAEA,OAAO,KAAA;AACT;;;;"}