/opt/canhelp/node_modules/next/dist/server/lib/router-utils
NameSizeModeActions
block-cross-site.d.ts2770644editdlrm
block-cross-site.js32420644editdlrm
block-cross-site.js.map52200644editdlrm
build-data-route.d.ts2360644editdlrm
build-data-route.js19010644editdlrm
build-data-route.js.map26760644editdlrm
build-prefetch-segment-data-route.d.ts7880644editdlrm
build-prefetch-segment-data-route.js26130644editdlrm
build-prefetch-segment-data-route.js.map37020644editdlrm
decode-path-params.d.ts3450644editdlrm
decode-path-params.js14810644editdlrm
decode-path-params.js.map15700644editdlrm
filesystem.d.ts27200644editdlrm
filesystem.js271530644editdlrm
filesystem.js.map376760644editdlrm
instrumentation-globals.external.d.ts5040644editdlrm
instrumentation-globals.external.js36020644editdlrm
instrumentation-globals.external.js.map47580644editdlrm
instrumentation-node-extensions.d.ts1940644editdlrm
instrumentation-node-extensions.js50300644editdlrm
instrumentation-node-extensions.js.map71780644editdlrm
is-postpone.d.ts570644editdlrm
is-postpone.js4360644editdlrm
is-postpone.js.map5970644editdlrm
proxy-request.d.ts3700644editdlrm
proxy-request.js42890644editdlrm
proxy-request.js.map65810644editdlrm
resolve-routes.d.ts11250644editdlrm
resolve-routes.js338990644editdlrm
resolve-routes.js.map471420644editdlrm
route-types-utils.d.ts24280644editdlrm
route-types-utils.js113940644editdlrm
route-types-utils.js.map192130644editdlrm
router-server-context.d.ts11290644editdlrm
router-server-context.js6890644editdlrm
router-server-context.js.map22830644editdlrm
setup-dev-bundler.d.ts27220644editdlrm
setup-dev-bundler.js473040644editdlrm
setup-dev-bundler.js.map681600644editdlrm
typegen.d.ts3370644editdlrm
typegen.js247410644editdlrm
typegen.js.map347410644editdlrm
types.d.ts1810644editdlrm
types.js1150644editdlrm
types.js.map670644editdlrm
Edit: /opt/canhelp/node_modules/next/dist/server/lib/router-utils/resolve-routes.js.map (47142B)
{"version":3,"sources":["../../../../src/server/lib/router-utils/resolve-routes.ts"],"sourcesContent":["import type { FsOutput } from './filesystem'\nimport type { IncomingMessage, ServerResponse } from 'http'\nimport type { NextConfigComplete } from '../../config-shared'\nimport type { RenderServer, initialize } from '../router-server'\nimport type { PatchMatcher } from '../../../shared/lib/router/utils/path-match'\nimport type { Redirect } from '../../../types'\nimport type { Header, Rewrite } from '../../../lib/load-custom-routes'\nimport type { UnwrapPromise } from '../../../lib/coalesced-function'\nimport type { NextUrlWithParsedQuery } from '../../request-meta'\n\nimport url from 'url'\nimport path from 'node:path'\nimport setupDebug from 'next/dist/compiled/debug'\nimport { getCloneableBody } from '../../body-streams'\nimport { filterReqHeaders, ipcForbiddenHeaders } from '../server-ipc/utils'\nimport { stringifyQuery } from '../../server-route-utils'\nimport { formatHostname } from '../format-hostname'\nimport { toNodeOutgoingHttpHeaders } from '../../web/utils'\nimport { isAbortError } from '../../pipe-readable'\nimport { getHostname } from '../../../shared/lib/get-hostname'\nimport {\n getRedirectStatus,\n allowedStatusCodes,\n} from '../../../lib/redirect-status'\nimport { normalizeRepeatedSlashes } from '../../../shared/lib/utils'\nimport { getRelativeURL } from '../../../shared/lib/router/utils/relativize-url'\nimport { addPathPrefix } from '../../../shared/lib/router/utils/add-path-prefix'\nimport { pathHasPrefix } from '../../../shared/lib/router/utils/path-has-prefix'\nimport { detectDomainLocale } from '../../../shared/lib/i18n/detect-domain-locale'\nimport { normalizeLocalePath } from '../../../shared/lib/i18n/normalize-locale-path'\nimport { removePathPrefix } from '../../../shared/lib/router/utils/remove-path-prefix'\nimport { NextDataPathnameNormalizer } from '../../normalizers/request/next-data'\nimport { BasePathPathnameNormalizer } from '../../normalizers/request/base-path'\n\nimport { addRequestMeta } from '../../request-meta'\nimport {\n compileNonPath,\n matchHas,\n prepareDestination,\n} from '../../../shared/lib/router/utils/prepare-destination'\nimport type { TLSSocket } from 'tls'\nimport {\n NEXT_REWRITTEN_PATH_HEADER,\n NEXT_REWRITTEN_QUERY_HEADER,\n NEXT_ROUTER_STATE_TREE_HEADER,\n RSC_HEADER,\n} from '../../../client/components/app-router-headers'\nimport { getSelectedParams } from '../../../client/components/router-reducer/compute-changed-path'\nimport { isInterceptionRouteRewrite } from '../../../lib/generate-interception-routes-rewrites'\nimport { parseAndValidateFlightRouterState } from '../../app-render/parse-and-validate-flight-router-state'\n\nconst debug = setupDebug('next:router-server:resolve-routes')\n\nexport function getResolveRoutes(\n fsChecker: UnwrapPromise<\n ReturnType\n >,\n config: NextConfigComplete,\n opts: Parameters[0],\n renderServer: RenderServer,\n renderServerOpts: Parameters[0],\n ensureMiddleware?: (url?: string) => Promise\n) {\n type Route = {\n /**\n * The path matcher to check if this route applies to this request.\n */\n match: PatchMatcher\n check?: boolean\n name?: string\n } & Partial
&\n Partial\n\n const routes: Route[] = [\n // _next/data with middleware handling\n { match: () => ({}), name: 'middleware_next_data' },\n\n ...(opts.minimalMode ? [] : fsChecker.headers),\n ...(opts.minimalMode ? [] : fsChecker.redirects),\n\n // check middleware (using matchers)\n { match: () => ({}), name: 'middleware' },\n\n ...(opts.minimalMode ? [] : fsChecker.rewrites.beforeFiles),\n\n // check middleware (using matchers)\n { match: () => ({}), name: 'before_files_end' },\n\n // we check exact matches on fs before continuing to\n // after files rewrites\n { match: () => ({}), name: 'check_fs' },\n\n ...(opts.minimalMode ? [] : fsChecker.rewrites.afterFiles),\n\n // we always do the check: true handling before continuing to\n // fallback rewrites\n {\n check: true,\n match: () => ({}),\n name: 'after files check: true',\n },\n\n ...(opts.minimalMode ? [] : fsChecker.rewrites.fallback),\n ]\n\n async function resolveRoutes({\n req,\n res,\n isUpgradeReq,\n invokedOutputs,\n }: {\n req: IncomingMessage\n res: ServerResponse\n isUpgradeReq: boolean\n signal: AbortSignal\n invokedOutputs?: Set\n }): Promise<{\n finished: boolean\n statusCode?: number\n bodyStream?: ReadableStream | null\n resHeaders: Record\n parsedUrl: NextUrlWithParsedQuery\n matchedOutput?: FsOutput | null\n }> {\n let finished = false\n let resHeaders: Record = {}\n let matchedOutput: FsOutput | null = null\n let parsedUrl = url.parse(req.url || '', true) as NextUrlWithParsedQuery\n let didRewrite = false\n\n const urlParts = (req.url || '').split('?', 1)\n const urlNoQuery = urlParts[0]\n\n // this normalizes repeated slashes in the path e.g. hello//world ->\n // hello/world or backslashes to forward slashes, this does not\n // handle trailing slash as that is handled the same as a next.config.js\n // redirect\n if (urlNoQuery?.match(/(\\\\|\\/\\/)/)) {\n parsedUrl = url.parse(normalizeRepeatedSlashes(req.url!), true)\n return {\n parsedUrl,\n resHeaders,\n finished: true,\n statusCode: 308,\n }\n }\n // TODO: inherit this from higher up\n const protocol =\n (req?.socket as TLSSocket)?.encrypted ||\n req.headers['x-forwarded-proto']?.includes('https')\n ? 'https'\n : 'http'\n\n // When there are hostname and port we build an absolute URL\n const initUrl = (config.experimental as any).trustHostHeader\n ? `https://${req.headers.host || 'localhost'}${req.url}`\n : opts.port\n ? `${protocol}://${formatHostname(opts.hostname || 'localhost')}:${\n opts.port\n }${req.url}`\n : req.url || ''\n\n addRequestMeta(req, 'initURL', initUrl)\n addRequestMeta(req, 'initQuery', { ...parsedUrl.query })\n addRequestMeta(req, 'initProtocol', protocol)\n\n if (!isUpgradeReq) {\n const bodySizeLimit = config.experimental.middlewareClientMaxBodySize as\n | number\n | undefined\n addRequestMeta(req, 'clonableBody', getCloneableBody(req, bodySizeLimit))\n }\n\n const maybeAddTrailingSlash = (pathname: string) => {\n if (\n config.trailingSlash &&\n !config.skipMiddlewareUrlNormalize &&\n !pathname.endsWith('/')\n ) {\n return `${pathname}/`\n }\n return pathname\n }\n\n let domainLocale: ReturnType | undefined\n let defaultLocale: string | undefined\n let initialLocaleResult:\n | ReturnType\n | undefined = undefined\n\n if (config.i18n) {\n const hadTrailingSlash = parsedUrl.pathname?.endsWith('/')\n const hadBasePath = pathHasPrefix(\n parsedUrl.pathname || '',\n config.basePath\n )\n let normalizedPath = parsedUrl.pathname || '/'\n\n if (config.basePath && pathHasPrefix(normalizedPath, config.basePath)) {\n normalizedPath = removePathPrefix(normalizedPath, config.basePath)\n } else if (\n config.assetPrefix &&\n pathHasPrefix(normalizedPath, config.assetPrefix)\n ) {\n normalizedPath = removePathPrefix(normalizedPath, config.assetPrefix)\n }\n\n initialLocaleResult = normalizeLocalePath(\n normalizedPath,\n config.i18n.locales\n )\n\n domainLocale = detectDomainLocale(\n config.i18n.domains,\n getHostname(parsedUrl, req.headers)\n )\n defaultLocale = domainLocale?.defaultLocale || config.i18n.defaultLocale\n\n addRequestMeta(req, 'defaultLocale', defaultLocale)\n addRequestMeta(\n req,\n 'locale',\n initialLocaleResult.detectedLocale || defaultLocale\n )\n\n // ensure locale is present for resolving routes\n if (\n !initialLocaleResult.detectedLocale &&\n !initialLocaleResult.pathname.startsWith('/_next/')\n ) {\n parsedUrl.pathname = addPathPrefix(\n initialLocaleResult.pathname === '/'\n ? `/${defaultLocale}`\n : addPathPrefix(\n initialLocaleResult.pathname || '',\n `/${defaultLocale}`\n ),\n hadBasePath ? config.basePath : ''\n )\n\n if (hadTrailingSlash) {\n parsedUrl.pathname = maybeAddTrailingSlash(parsedUrl.pathname)\n }\n }\n }\n\n const checkLocaleApi = (pathname: string) => {\n if (\n config.i18n &&\n pathname === urlNoQuery &&\n initialLocaleResult?.detectedLocale &&\n pathHasPrefix(initialLocaleResult.pathname, '/api')\n ) {\n return true\n }\n }\n\n async function checkTrue() {\n const pathname = parsedUrl.pathname || '/'\n\n if (checkLocaleApi(pathname)) {\n return\n }\n if (!invokedOutputs?.has(pathname)) {\n const output = await fsChecker.getItem(pathname)\n\n if (output) {\n if (\n config.useFileSystemPublicRoutes ||\n didRewrite ||\n (output.type !== 'appFile' && output.type !== 'pageFile')\n ) {\n return output\n }\n }\n }\n const dynamicRoutes = fsChecker.getDynamicRoutes()\n let curPathname = parsedUrl.pathname\n\n if (config.basePath) {\n if (!pathHasPrefix(curPathname || '', config.basePath)) {\n return\n }\n curPathname = curPathname?.substring(config.basePath.length) || '/'\n }\n const localeResult = fsChecker.handleLocale(curPathname || '')\n\n for (const route of dynamicRoutes) {\n // when resolving fallback: false the\n // render worker may return a no-fallback response\n // which signals we need to continue resolving.\n // TODO: optimize this to collect static paths\n // to use at the routing layer\n if (invokedOutputs?.has(route.page)) {\n continue\n }\n const params = route.match(localeResult.pathname)\n\n if (params) {\n const pageOutput = await fsChecker.getItem(\n addPathPrefix(route.page, config.basePath || '')\n )\n\n // i18n locales aren't matched for app dir\n if (\n pageOutput?.type === 'appFile' &&\n initialLocaleResult?.detectedLocale\n ) {\n continue\n }\n\n if (pageOutput && curPathname?.startsWith('/_next/data')) {\n addRequestMeta(req, 'isNextDataReq', true)\n }\n\n if (config.useFileSystemPublicRoutes || didRewrite) {\n return pageOutput\n }\n }\n }\n }\n\n const normalizers = {\n basePath:\n config.basePath && config.basePath !== '/'\n ? new BasePathPathnameNormalizer(config.basePath)\n : undefined,\n data: new NextDataPathnameNormalizer(fsChecker.buildId),\n }\n\n async function handleRoute(\n route: Route\n ): Promise> | void> {\n let curPathname = parsedUrl.pathname || '/'\n\n if (config.i18n && route.internal) {\n const hadTrailingSlash = curPathname.endsWith('/')\n\n if (config.basePath) {\n curPathname = removePathPrefix(curPathname, config.basePath)\n }\n const hadBasePath = curPathname !== parsedUrl.pathname\n\n const localeResult = normalizeLocalePath(\n curPathname,\n config.i18n.locales\n )\n const isDefaultLocale = localeResult.detectedLocale === defaultLocale\n\n if (isDefaultLocale) {\n curPathname =\n localeResult.pathname === '/' && hadBasePath\n ? config.basePath\n : addPathPrefix(\n localeResult.pathname,\n hadBasePath ? config.basePath : ''\n )\n } else if (hadBasePath) {\n curPathname =\n curPathname === '/'\n ? config.basePath\n : addPathPrefix(curPathname, config.basePath)\n }\n\n if ((isDefaultLocale || hadBasePath) && hadTrailingSlash) {\n curPathname = maybeAddTrailingSlash(curPathname)\n }\n }\n let params = route.match(curPathname)\n\n if ((route.has || route.missing) && params) {\n const hasParams = matchHas(\n req,\n parsedUrl.query,\n route.has,\n route.missing\n )\n if (hasParams) {\n Object.assign(params, hasParams)\n } else {\n params = false\n }\n }\n\n if (params) {\n if (\n fsChecker.exportPathMapRoutes &&\n route.name === 'before_files_end'\n ) {\n for (const exportPathMapRoute of fsChecker.exportPathMapRoutes) {\n const result = await handleRoute(exportPathMapRoute)\n\n if (result) {\n return result\n }\n }\n }\n\n if (route.name === 'middleware_next_data' && parsedUrl.pathname) {\n if (fsChecker.getMiddlewareMatchers()?.length) {\n let normalized = parsedUrl.pathname\n\n // Remove the base path if it exists.\n const hadBasePath = normalizers.basePath?.match(parsedUrl.pathname)\n if (hadBasePath && normalizers.basePath) {\n normalized = normalizers.basePath.normalize(normalized, true)\n }\n\n let updated = false\n if (normalizers.data.match(normalized)) {\n updated = true\n addRequestMeta(req, 'isNextDataReq', true)\n normalized = normalizers.data.normalize(normalized, true)\n }\n\n if (config.i18n) {\n const curLocaleResult = normalizeLocalePath(\n normalized,\n config.i18n.locales\n )\n\n if (curLocaleResult.detectedLocale) {\n addRequestMeta(req, 'locale', curLocaleResult.detectedLocale)\n }\n }\n\n // If we updated the pathname, and it had a base path, re-add the\n // base path.\n if (updated) {\n if (hadBasePath) {\n normalized =\n normalized === '/'\n ? config.basePath\n : path.posix.join(config.basePath, normalized)\n }\n\n // Re-add the trailing slash (if required).\n normalized = maybeAddTrailingSlash(normalized)\n\n parsedUrl.pathname = normalized\n }\n }\n }\n\n if (route.name === 'check_fs') {\n const pathname = parsedUrl.pathname || '/'\n\n if (invokedOutputs?.has(pathname) || checkLocaleApi(pathname)) {\n return\n }\n const output = await fsChecker.getItem(pathname)\n\n if (\n output &&\n !(\n config.i18n &&\n initialLocaleResult?.detectedLocale &&\n pathHasPrefix(pathname, '/api')\n )\n ) {\n if (\n config.useFileSystemPublicRoutes ||\n didRewrite ||\n (output.type !== 'appFile' && output.type !== 'pageFile')\n ) {\n matchedOutput = output\n\n if (output.locale) {\n addRequestMeta(req, 'locale', output.locale)\n }\n return {\n parsedUrl,\n resHeaders,\n finished: true,\n matchedOutput,\n }\n }\n }\n }\n\n if (!opts.minimalMode && route.name === 'middleware') {\n const match = fsChecker.getMiddlewareMatchers()\n let maybeDecodedPathname = parsedUrl.pathname || '/'\n\n try {\n maybeDecodedPathname = decodeURIComponent(maybeDecodedPathname)\n } catch {\n /* non-fatal we can't decode so can't match it */\n }\n\n if (\n // @ts-expect-error BaseNextRequest stuff\n match?.(parsedUrl.pathname, req, parsedUrl.query) ||\n match?.(\n maybeDecodedPathname,\n // @ts-expect-error BaseNextRequest stuff\n req,\n parsedUrl.query\n )\n ) {\n if (ensureMiddleware) {\n await ensureMiddleware(req.url)\n }\n\n const serverResult =\n await renderServer?.initialize(renderServerOpts)\n\n if (!serverResult) {\n throw new Error(`Failed to initialize render server \"middleware\"`)\n }\n\n addRequestMeta(req, 'invokePath', '')\n addRequestMeta(req, 'invokeOutput', '')\n addRequestMeta(req, 'invokeQuery', {})\n addRequestMeta(req, 'middlewareInvoke', true)\n debug('invoking middleware', req.url, req.headers)\n\n let middlewareRes: Response | undefined = undefined\n let bodyStream: ReadableStream | undefined = undefined\n try {\n try {\n await serverResult.requestHandler(req, res, parsedUrl)\n } catch (err: any) {\n if (!('result' in err) || !('response' in err.result)) {\n throw err\n }\n middlewareRes = err.result.response as Response\n res.statusCode = middlewareRes.status\n\n if (middlewareRes.body) {\n bodyStream = middlewareRes.body\n } else if (middlewareRes.status) {\n bodyStream = new ReadableStream({\n start(controller) {\n controller.enqueue('')\n controller.close()\n },\n })\n }\n }\n } catch (e) {\n // If the client aborts before we can receive a response object\n // (when the headers are flushed), then we can early exit without\n // further processing.\n if (isAbortError(e)) {\n return {\n parsedUrl,\n resHeaders,\n finished: true,\n }\n }\n throw e\n }\n\n if (res.closed || res.finished || !middlewareRes) {\n return {\n parsedUrl,\n resHeaders,\n finished: true,\n }\n }\n\n const middlewareHeaders = toNodeOutgoingHttpHeaders(\n middlewareRes.headers\n ) as Record\n\n debug('middleware res', middlewareRes.status, middlewareHeaders)\n\n if (middlewareHeaders['x-middleware-override-headers']) {\n const overriddenHeaders: Set = new Set()\n let overrideHeaders: string | string[] =\n middlewareHeaders['x-middleware-override-headers']\n\n if (typeof overrideHeaders === 'string') {\n overrideHeaders = overrideHeaders.split(',')\n }\n\n for (const key of overrideHeaders) {\n overriddenHeaders.add(key.trim())\n }\n delete middlewareHeaders['x-middleware-override-headers']\n\n // Delete headers.\n for (const key of Object.keys(req.headers)) {\n if (!overriddenHeaders.has(key)) {\n delete req.headers[key]\n }\n }\n\n // Update or add headers.\n for (const key of overriddenHeaders.keys()) {\n const valueKey = 'x-middleware-request-' + key\n const newValue = middlewareHeaders[valueKey]\n const oldValue = req.headers[key]\n\n if (oldValue !== newValue) {\n req.headers[key] = newValue === null ? undefined : newValue\n }\n delete middlewareHeaders[valueKey]\n }\n }\n\n if (\n !middlewareHeaders['x-middleware-rewrite'] &&\n !middlewareHeaders['x-middleware-next'] &&\n !middlewareHeaders['location']\n ) {\n middlewareHeaders['x-middleware-refresh'] = '1'\n }\n delete middlewareHeaders['x-middleware-next']\n\n for (const [key, value] of Object.entries({\n ...filterReqHeaders(middlewareHeaders, ipcForbiddenHeaders),\n })) {\n if (\n [\n 'content-length',\n 'x-middleware-rewrite',\n 'x-middleware-redirect',\n 'x-middleware-refresh',\n ].includes(key)\n ) {\n continue\n }\n\n // for set-cookie, the header shouldn't be added to the response\n // as it's only needed for the request to the middleware function.\n if (key === 'x-middleware-set-cookie') {\n req.headers[key] = value\n continue\n }\n\n if (value) {\n resHeaders[key] = value\n req.headers[key] = value\n }\n }\n\n if (middlewareHeaders['x-middleware-rewrite']) {\n const value = middlewareHeaders['x-middleware-rewrite'] as string\n const destination = getRelativeURL(value, initUrl)\n resHeaders['x-middleware-rewrite'] = destination\n\n parsedUrl = url.parse(destination, true)\n\n if (parsedUrl.protocol) {\n return {\n parsedUrl,\n resHeaders,\n finished: true,\n }\n }\n\n if (config.i18n) {\n const curLocaleResult = normalizeLocalePath(\n parsedUrl.pathname || '',\n config.i18n.locales\n )\n\n if (curLocaleResult.detectedLocale) {\n addRequestMeta(req, 'locale', curLocaleResult.detectedLocale)\n }\n }\n }\n\n if (middlewareHeaders['location']) {\n const value = middlewareHeaders['location'] as string\n\n // Only process Location header as a redirect if it has a proper redirect status\n // This prevents a Location header with non-redirect status from being treated as a redirect\n const isRedirectStatus = allowedStatusCodes.has(\n middlewareRes.status\n )\n\n if (isRedirectStatus) {\n // Process as redirect: update parsedUrl and convert to relative URL\n const rel = getRelativeURL(value, initUrl)\n resHeaders['location'] = rel\n parsedUrl = url.parse(rel, true)\n\n return {\n parsedUrl,\n resHeaders,\n finished: true,\n statusCode: middlewareRes.status,\n }\n } else {\n // Not a redirect: just pass through the Location header\n resHeaders['location'] = value\n\n return {\n parsedUrl,\n resHeaders,\n finished: true,\n bodyStream,\n statusCode: middlewareRes.status,\n }\n }\n }\n\n if (middlewareHeaders['x-middleware-refresh']) {\n return {\n parsedUrl,\n resHeaders,\n finished: true,\n bodyStream,\n statusCode: middlewareRes.status,\n }\n }\n }\n }\n\n // handle redirect\n if (\n ('statusCode' in route || 'permanent' in route) &&\n route.destination\n ) {\n const { parsedDestination } = prepareDestination({\n appendParamsToQuery: false,\n destination: route.destination,\n params: params,\n query: parsedUrl.query,\n })\n\n const { query } = parsedDestination\n delete (parsedDestination as any).query\n\n parsedDestination.search = stringifyQuery(req as any, query)\n\n parsedDestination.pathname = normalizeRepeatedSlashes(\n parsedDestination.pathname\n )\n\n return {\n finished: true,\n // @ts-expect-error custom ParsedUrl\n parsedUrl: parsedDestination,\n statusCode: getRedirectStatus(route),\n }\n }\n\n // handle headers\n if (route.headers) {\n const hasParams = Object.keys(params).length > 0\n for (const header of route.headers) {\n let { key, value } = header\n if (hasParams) {\n key = compileNonPath(key, params)\n value = compileNonPath(value, params)\n }\n\n if (key.toLowerCase() === 'set-cookie') {\n if (!Array.isArray(resHeaders[key])) {\n const val = resHeaders[key]\n resHeaders[key] = typeof val === 'string' ? [val] : []\n }\n ;(resHeaders[key] as string[]).push(value)\n } else {\n resHeaders[key] = value\n }\n }\n }\n\n // handle rewrite\n if (route.destination) {\n let rewriteParams = params\n\n try {\n // An interception rewrite might reference a dynamic param for a route the user\n // is currently on, which wouldn't be extractable from the matched route params.\n // This attempts to extract the dynamic params from the provided router state.\n if (isInterceptionRouteRewrite(route as Rewrite)) {\n const stateHeader = req.headers[NEXT_ROUTER_STATE_TREE_HEADER]\n\n if (stateHeader) {\n rewriteParams = {\n ...getSelectedParams(\n parseAndValidateFlightRouterState(stateHeader)\n ),\n ...params,\n }\n }\n }\n } catch (err) {\n // this is a no-op -- we couldn't extract dynamic params from the provided router state,\n // so we'll just use the params from the route matcher\n }\n\n const { parsedDestination } = prepareDestination({\n appendParamsToQuery: true,\n destination: route.destination,\n params: rewriteParams,\n query: parsedUrl.query,\n })\n\n if (parsedDestination.protocol) {\n return {\n // @ts-expect-error custom ParsedUrl\n parsedUrl: parsedDestination,\n finished: true,\n }\n }\n\n // Set the rewrite headers only if this is a RSC request.\n if (req.headers[RSC_HEADER] === '1') {\n // We set the rewritten path and query headers on the response now\n // that we know that the it's not an external rewrite.\n if (parsedUrl.pathname !== parsedDestination.pathname) {\n res.setHeader(\n NEXT_REWRITTEN_PATH_HEADER,\n parsedDestination.pathname\n )\n }\n if (parsedUrl.search !== parsedDestination.search) {\n res.setHeader(\n NEXT_REWRITTEN_QUERY_HEADER,\n // remove the leading ? from the search\n parsedDestination.search.slice(1)\n )\n }\n }\n\n if (config.i18n) {\n const curLocaleResult = normalizeLocalePath(\n removePathPrefix(parsedDestination.pathname, config.basePath),\n config.i18n.locales\n )\n\n if (curLocaleResult.detectedLocale) {\n addRequestMeta(req, 'locale', curLocaleResult.detectedLocale)\n }\n }\n didRewrite = true\n parsedUrl.pathname = parsedDestination.pathname\n Object.assign(parsedUrl.query, parsedDestination.query)\n }\n\n // handle check: true\n if (route.check) {\n const output = await checkTrue()\n\n if (output) {\n return {\n parsedUrl,\n resHeaders,\n finished: true,\n matchedOutput: output,\n }\n }\n }\n }\n }\n\n for (const route of routes) {\n const result = await handleRoute(route)\n if (result) {\n return result\n }\n }\n\n return {\n finished,\n parsedUrl,\n resHeaders,\n matchedOutput,\n }\n }\n\n return resolveRoutes\n}\n"],"names":["getResolveRoutes","debug","setupDebug","fsChecker","config","opts","renderServer","renderServerOpts","ensureMiddleware","routes","match","name","minimalMode","headers","redirects","rewrites","beforeFiles","afterFiles","check","fallback","resolveRoutes","req","res","isUpgradeReq","invokedOutputs","finished","resHeaders","matchedOutput","parsedUrl","url","parse","didRewrite","urlParts","split","urlNoQuery","normalizeRepeatedSlashes","statusCode","protocol","socket","encrypted","includes","initUrl","experimental","trustHostHeader","host","port","formatHostname","hostname","addRequestMeta","query","bodySizeLimit","middlewareClientMaxBodySize","getCloneableBody","maybeAddTrailingSlash","pathname","trailingSlash","skipMiddlewareUrlNormalize","endsWith","domainLocale","defaultLocale","initialLocaleResult","undefined","i18n","hadTrailingSlash","hadBasePath","pathHasPrefix","basePath","normalizedPath","removePathPrefix","assetPrefix","normalizeLocalePath","locales","detectDomainLocale","domains","getHostname","detectedLocale","startsWith","addPathPrefix","checkLocaleApi","checkTrue","has","output","getItem","useFileSystemPublicRoutes","type","dynamicRoutes","getDynamicRoutes","curPathname","substring","length","localeResult","handleLocale","route","page","params","pageOutput","normalizers","BasePathPathnameNormalizer","data","NextDataPathnameNormalizer","buildId","handleRoute","internal","isDefaultLocale","missing","hasParams","matchHas","Object","assign","exportPathMapRoutes","exportPathMapRoute","result","getMiddlewareMatchers","normalized","normalize","updated","curLocaleResult","path","posix","join","locale","maybeDecodedPathname","decodeURIComponent","serverResult","initialize","Error","middlewareRes","bodyStream","requestHandler","err","response","status","body","ReadableStream","start","controller","enqueue","close","e","isAbortError","closed","middlewareHeaders","toNodeOutgoingHttpHeaders","overriddenHeaders","Set","overrideHeaders","key","add","trim","keys","valueKey","newValue","oldValue","value","entries","filterReqHeaders","ipcForbiddenHeaders","destination","getRelativeURL","isRedirectStatus","allowedStatusCodes","rel","parsedDestination","prepareDestination","appendParamsToQuery","search","stringifyQuery","getRedirectStatus","header","compileNonPath","toLowerCase","Array","isArray","val","push","rewriteParams","isInterceptionRouteRewrite","stateHeader","NEXT_ROUTER_STATE_TREE_HEADER","getSelectedParams","parseAndValidateFlightRouterState","RSC_HEADER","setHeader","NEXT_REWRITTEN_PATH_HEADER","NEXT_REWRITTEN_QUERY_HEADER","slice"],"mappings":";;;;+BAqDgBA;;;eAAAA;;;4DA3CA;iEACC;8DACM;6BACU;uBACqB;kCACvB;gCACA;wBACW;8BACb;6BACD;gCAIrB;wBACkC;+BACV;+BACD;+BACA;oCACK;qCACC;kCACH;0BACU;0BACA;6BAEZ;oCAKxB;kCAOA;oCAC2B;oDACS;mDACO;;;;;;AAElD,MAAMC,QAAQC,IAAAA,cAAU,EAAC;AAElB,SAASF,iBACdG,SAEC,EACDC,MAA0B,EAC1BC,IAAsC,EACtCC,YAA0B,EAC1BC,gBAA2D,EAC3DC,gBAAkD;IAYlD,MAAMC,SAAkB;QACtB,sCAAsC;QACtC;YAAEC,OAAO,IAAO,CAAA,CAAC,CAAA;YAAIC,MAAM;QAAuB;WAE9CN,KAAKO,WAAW,GAAG,EAAE,GAAGT,UAAUU,OAAO;WACzCR,KAAKO,WAAW,GAAG,EAAE,GAAGT,UAAUW,SAAS;QAE/C,oCAAoC;QACpC;YAAEJ,OAAO,IAAO,CAAA,CAAC,CAAA;YAAIC,MAAM;QAAa;WAEpCN,KAAKO,WAAW,GAAG,EAAE,GAAGT,UAAUY,QAAQ,CAACC,WAAW;QAE1D,oCAAoC;QACpC;YAAEN,OAAO,IAAO,CAAA,CAAC,CAAA;YAAIC,MAAM;QAAmB;QAE9C,oDAAoD;QACpD,uBAAuB;QACvB;YAAED,OAAO,IAAO,CAAA,CAAC,CAAA;YAAIC,MAAM;QAAW;WAElCN,KAAKO,WAAW,GAAG,EAAE,GAAGT,UAAUY,QAAQ,CAACE,UAAU;QAEzD,6DAA6D;QAC7D,oBAAoB;QACpB;YACEC,OAAO;YACPR,OAAO,IAAO,CAAA,CAAC,CAAA;YACfC,MAAM;QACR;WAEIN,KAAKO,WAAW,GAAG,EAAE,GAAGT,UAAUY,QAAQ,CAACI,QAAQ;KACxD;IAED,eAAeC,cAAc,EAC3BC,GAAG,EACHC,GAAG,EACHC,YAAY,EACZC,cAAc,EAOf;YAgCIH,aACDA;QAzBF,IAAII,WAAW;QACf,IAAIC,aAAgD,CAAC;QACrD,IAAIC,gBAAiC;QACrC,IAAIC,YAAYC,YAAG,CAACC,KAAK,CAACT,IAAIQ,GAAG,IAAI,IAAI;QACzC,IAAIE,aAAa;QAEjB,MAAMC,WAAW,AAACX,CAAAA,IAAIQ,GAAG,IAAI,EAAC,EAAGI,KAAK,CAAC,KAAK;QAC5C,MAAMC,aAAaF,QAAQ,CAAC,EAAE;QAE9B,oEAAoE;QACpE,+DAA+D;QAC/D,wEAAwE;QACxE,WAAW;QACX,IAAIE,8BAAAA,WAAYxB,KAAK,CAAC,cAAc;YAClCkB,YAAYC,YAAG,CAACC,KAAK,CAACK,IAAAA,gCAAwB,EAACd,IAAIQ,GAAG,GAAI;YAC1D,OAAO;gBACLD;gBACAF;gBACAD,UAAU;gBACVW,YAAY;YACd;QACF;QACA,oCAAoC;QACpC,MAAMC,WACJ,CAAChB,wBAAAA,cAAAA,IAAKiB,MAAM,qBAAZ,AAACjB,YAA2BkB,SAAS,OACrClB,+BAAAA,IAAIR,OAAO,CAAC,oBAAoB,qBAAhCQ,6BAAkCmB,QAAQ,CAAC,YACvC,UACA;QAEN,4DAA4D;QAC5D,MAAMC,UAAU,AAACrC,OAAOsC,YAAY,CAASC,eAAe,GACxD,CAAC,QAAQ,EAAEtB,IAAIR,OAAO,CAAC+B,IAAI,IAAI,cAAcvB,IAAIQ,GAAG,EAAE,GACtDxB,KAAKwC,IAAI,GACP,GAAGR,SAAS,GAAG,EAAES,IAAAA,8BAAc,EAACzC,KAAK0C,QAAQ,IAAI,aAAa,CAAC,EAC7D1C,KAAKwC,IAAI,GACRxB,IAAIQ,GAAG,EAAE,GACZR,IAAIQ,GAAG,IAAI;QAEjBmB,IAAAA,2BAAc,EAAC3B,KAAK,WAAWoB;QAC/BO,IAAAA,2BAAc,EAAC3B,KAAK,aAAa;YAAE,GAAGO,UAAUqB,KAAK;QAAC;QACtDD,IAAAA,2BAAc,EAAC3B,KAAK,gBAAgBgB;QAEpC,IAAI,CAACd,cAAc;YACjB,MAAM2B,gBAAgB9C,OAAOsC,YAAY,CAACS,2BAA2B;YAGrEH,IAAAA,2BAAc,EAAC3B,KAAK,gBAAgB+B,IAAAA,6BAAgB,EAAC/B,KAAK6B;QAC5D;QAEA,MAAMG,wBAAwB,CAACC;YAC7B,IACElD,OAAOmD,aAAa,IACpB,CAACnD,OAAOoD,0BAA0B,IAClC,CAACF,SAASG,QAAQ,CAAC,MACnB;gBACA,OAAO,GAAGH,SAAS,CAAC,CAAC;YACvB;YACA,OAAOA;QACT;QAEA,IAAII;QACJ,IAAIC;QACJ,IAAIC,sBAEYC;QAEhB,IAAIzD,OAAO0D,IAAI,EAAE;gBACUlC;YAAzB,MAAMmC,oBAAmBnC,sBAAAA,UAAU0B,QAAQ,qBAAlB1B,oBAAoB6B,QAAQ,CAAC;YACtD,MAAMO,cAAcC,IAAAA,4BAAa,EAC/BrC,UAAU0B,QAAQ,IAAI,IACtBlD,OAAO8D,QAAQ;YAEjB,IAAIC,iBAAiBvC,UAAU0B,QAAQ,IAAI;YAE3C,IAAIlD,OAAO8D,QAAQ,IAAID,IAAAA,4BAAa,EAACE,gBAAgB/D,OAAO8D,QAAQ,GAAG;gBACrEC,iBAAiBC,IAAAA,kCAAgB,EAACD,gBAAgB/D,OAAO8D,QAAQ;YACnE,OAAO,IACL9D,OAAOiE,WAAW,IAClBJ,IAAAA,4BAAa,EAACE,gBAAgB/D,OAAOiE,WAAW,GAChD;gBACAF,iBAAiBC,IAAAA,kCAAgB,EAACD,gBAAgB/D,OAAOiE,WAAW;YACtE;YAEAT,sBAAsBU,IAAAA,wCAAmB,EACvCH,gBACA/D,OAAO0D,IAAI,CAACS,OAAO;YAGrBb,eAAec,IAAAA,sCAAkB,EAC/BpE,OAAO0D,IAAI,CAACW,OAAO,EACnBC,IAAAA,wBAAW,EAAC9C,WAAWP,IAAIR,OAAO;YAEpC8C,gBAAgBD,CAAAA,gCAAAA,aAAcC,aAAa,KAAIvD,OAAO0D,IAAI,CAACH,aAAa;YAExEX,IAAAA,2BAAc,EAAC3B,KAAK,iBAAiBsC;YACrCX,IAAAA,2BAAc,EACZ3B,KACA,UACAuC,oBAAoBe,cAAc,IAAIhB;YAGxC,gDAAgD;YAChD,IACE,CAACC,oBAAoBe,cAAc,IACnC,CAACf,oBAAoBN,QAAQ,CAACsB,UAAU,CAAC,YACzC;gBACAhD,UAAU0B,QAAQ,GAAGuB,IAAAA,4BAAa,EAChCjB,oBAAoBN,QAAQ,KAAK,MAC7B,CAAC,CAAC,EAAEK,eAAe,GACnBkB,IAAAA,4BAAa,EACXjB,oBAAoBN,QAAQ,IAAI,IAChC,CAAC,CAAC,EAAEK,eAAe,GAEzBK,cAAc5D,OAAO8D,QAAQ,GAAG;gBAGlC,IAAIH,kBAAkB;oBACpBnC,UAAU0B,QAAQ,GAAGD,sBAAsBzB,UAAU0B,QAAQ;gBAC/D;YACF;QACF;QAEA,MAAMwB,iBAAiB,CAACxB;YACtB,IACElD,OAAO0D,IAAI,IACXR,aAAapB,eACb0B,uCAAAA,oBAAqBe,cAAc,KACnCV,IAAAA,4BAAa,EAACL,oBAAoBN,QAAQ,EAAE,SAC5C;gBACA,OAAO;YACT;QACF;QAEA,eAAeyB;YACb,MAAMzB,WAAW1B,UAAU0B,QAAQ,IAAI;YAEvC,IAAIwB,eAAexB,WAAW;gBAC5B;YACF;YACA,IAAI,EAAC9B,kCAAAA,eAAgBwD,GAAG,CAAC1B,YAAW;gBAClC,MAAM2B,SAAS,MAAM9E,UAAU+E,OAAO,CAAC5B;gBAEvC,IAAI2B,QAAQ;oBACV,IACE7E,OAAO+E,yBAAyB,IAChCpD,cACCkD,OAAOG,IAAI,KAAK,aAAaH,OAAOG,IAAI,KAAK,YAC9C;wBACA,OAAOH;oBACT;gBACF;YACF;YACA,MAAMI,gBAAgBlF,UAAUmF,gBAAgB;YAChD,IAAIC,cAAc3D,UAAU0B,QAAQ;YAEpC,IAAIlD,OAAO8D,QAAQ,EAAE;gBACnB,IAAI,CAACD,IAAAA,4BAAa,EAACsB,eAAe,IAAInF,OAAO8D,QAAQ,GAAG;oBACtD;gBACF;gBACAqB,cAAcA,CAAAA,+BAAAA,YAAaC,SAAS,CAACpF,OAAO8D,QAAQ,CAACuB,MAAM,MAAK;YAClE;YACA,MAAMC,eAAevF,UAAUwF,YAAY,CAACJ,eAAe;YAE3D,KAAK,MAAMK,SAASP,cAAe;gBACjC,qCAAqC;gBACrC,kDAAkD;gBAClD,+CAA+C;gBAC/C,8CAA8C;gBAC9C,8BAA8B;gBAC9B,IAAI7D,kCAAAA,eAAgBwD,GAAG,CAACY,MAAMC,IAAI,GAAG;oBACnC;gBACF;gBACA,MAAMC,SAASF,MAAMlF,KAAK,CAACgF,aAAapC,QAAQ;gBAEhD,IAAIwC,QAAQ;oBACV,MAAMC,aAAa,MAAM5F,UAAU+E,OAAO,CACxCL,IAAAA,4BAAa,EAACe,MAAMC,IAAI,EAAEzF,OAAO8D,QAAQ,IAAI;oBAG/C,0CAA0C;oBAC1C,IACE6B,CAAAA,8BAAAA,WAAYX,IAAI,MAAK,cACrBxB,uCAAAA,oBAAqBe,cAAc,GACnC;wBACA;oBACF;oBAEA,IAAIoB,eAAcR,+BAAAA,YAAaX,UAAU,CAAC,iBAAgB;wBACxD5B,IAAAA,2BAAc,EAAC3B,KAAK,iBAAiB;oBACvC;oBAEA,IAAIjB,OAAO+E,yBAAyB,IAAIpD,YAAY;wBAClD,OAAOgE;oBACT;gBACF;YACF;QACF;QAEA,MAAMC,cAAc;YAClB9B,UACE9D,OAAO8D,QAAQ,IAAI9D,OAAO8D,QAAQ,KAAK,MACnC,IAAI+B,oCAA0B,CAAC7F,OAAO8D,QAAQ,IAC9CL;YACNqC,MAAM,IAAIC,oCAA0B,CAAChG,UAAUiG,OAAO;QACxD;QAEA,eAAeC,YACbT,KAAY;YAEZ,IAAIL,cAAc3D,UAAU0B,QAAQ,IAAI;YAExC,IAAIlD,OAAO0D,IAAI,IAAI8B,MAAMU,QAAQ,EAAE;gBACjC,MAAMvC,mBAAmBwB,YAAY9B,QAAQ,CAAC;gBAE9C,IAAIrD,OAAO8D,QAAQ,EAAE;oBACnBqB,cAAcnB,IAAAA,kCAAgB,EAACmB,aAAanF,OAAO8D,QAAQ;gBAC7D;gBACA,MAAMF,cAAcuB,gBAAgB3D,UAAU0B,QAAQ;gBAEtD,MAAMoC,eAAepB,IAAAA,wCAAmB,EACtCiB,aACAnF,OAAO0D,IAAI,CAACS,OAAO;gBAErB,MAAMgC,kBAAkBb,aAAaf,cAAc,KAAKhB;gBAExD,IAAI4C,iBAAiB;oBACnBhB,cACEG,aAAapC,QAAQ,KAAK,OAAOU,cAC7B5D,OAAO8D,QAAQ,GACfW,IAAAA,4BAAa,EACXa,aAAapC,QAAQ,EACrBU,cAAc5D,OAAO8D,QAAQ,GAAG;gBAE1C,OAAO,IAAIF,aAAa;oBACtBuB,cACEA,gBAAgB,MACZnF,OAAO8D,QAAQ,GACfW,IAAAA,4BAAa,EAACU,aAAanF,OAAO8D,QAAQ;gBAClD;gBAEA,IAAI,AAACqC,CAAAA,mBAAmBvC,WAAU,KAAMD,kBAAkB;oBACxDwB,cAAclC,sBAAsBkC;gBACtC;YACF;YACA,IAAIO,SAASF,MAAMlF,KAAK,CAAC6E;YAEzB,IAAI,AAACK,CAAAA,MAAMZ,GAAG,IAAIY,MAAMY,OAAO,AAAD,KAAMV,QAAQ;gBAC1C,MAAMW,YAAYC,IAAAA,4BAAQ,EACxBrF,KACAO,UAAUqB,KAAK,EACf2C,MAAMZ,GAAG,EACTY,MAAMY,OAAO;gBAEf,IAAIC,WAAW;oBACbE,OAAOC,MAAM,CAACd,QAAQW;gBACxB,OAAO;oBACLX,SAAS;gBACX;YACF;YAEA,IAAIA,QAAQ;gBACV,IACE3F,UAAU0G,mBAAmB,IAC7BjB,MAAMjF,IAAI,KAAK,oBACf;oBACA,KAAK,MAAMmG,sBAAsB3G,UAAU0G,mBAAmB,CAAE;wBAC9D,MAAME,SAAS,MAAMV,YAAYS;wBAEjC,IAAIC,QAAQ;4BACV,OAAOA;wBACT;oBACF;gBACF;gBAEA,IAAInB,MAAMjF,IAAI,KAAK,0BAA0BiB,UAAU0B,QAAQ,EAAE;wBAC3DnD;oBAAJ,KAAIA,mCAAAA,UAAU6G,qBAAqB,uBAA/B7G,iCAAmCsF,MAAM,EAAE;4BAIzBO;wBAHpB,IAAIiB,aAAarF,UAAU0B,QAAQ;wBAEnC,qCAAqC;wBACrC,MAAMU,eAAcgC,wBAAAA,YAAY9B,QAAQ,qBAApB8B,sBAAsBtF,KAAK,CAACkB,UAAU0B,QAAQ;wBAClE,IAAIU,eAAegC,YAAY9B,QAAQ,EAAE;4BACvC+C,aAAajB,YAAY9B,QAAQ,CAACgD,SAAS,CAACD,YAAY;wBAC1D;wBAEA,IAAIE,UAAU;wBACd,IAAInB,YAAYE,IAAI,CAACxF,KAAK,CAACuG,aAAa;4BACtCE,UAAU;4BACVnE,IAAAA,2BAAc,EAAC3B,KAAK,iBAAiB;4BACrC4F,aAAajB,YAAYE,IAAI,CAACgB,SAAS,CAACD,YAAY;wBACtD;wBAEA,IAAI7G,OAAO0D,IAAI,EAAE;4BACf,MAAMsD,kBAAkB9C,IAAAA,wCAAmB,EACzC2C,YACA7G,OAAO0D,IAAI,CAACS,OAAO;4BAGrB,IAAI6C,gBAAgBzC,cAAc,EAAE;gCAClC3B,IAAAA,2BAAc,EAAC3B,KAAK,UAAU+F,gBAAgBzC,cAAc;4BAC9D;wBACF;wBAEA,iEAAiE;wBACjE,aAAa;wBACb,IAAIwC,SAAS;4BACX,IAAInD,aAAa;gCACfiD,aACEA,eAAe,MACX7G,OAAO8D,QAAQ,GACfmD,iBAAI,CAACC,KAAK,CAACC,IAAI,CAACnH,OAAO8D,QAAQ,EAAE+C;4BACzC;4BAEA,2CAA2C;4BAC3CA,aAAa5D,sBAAsB4D;4BAEnCrF,UAAU0B,QAAQ,GAAG2D;wBACvB;oBACF;gBACF;gBAEA,IAAIrB,MAAMjF,IAAI,KAAK,YAAY;oBAC7B,MAAM2C,WAAW1B,UAAU0B,QAAQ,IAAI;oBAEvC,IAAI9B,CAAAA,kCAAAA,eAAgBwD,GAAG,CAAC1B,cAAawB,eAAexB,WAAW;wBAC7D;oBACF;oBACA,MAAM2B,SAAS,MAAM9E,UAAU+E,OAAO,CAAC5B;oBAEvC,IACE2B,UACA,CACE7E,CAAAA,OAAO0D,IAAI,KACXF,uCAAAA,oBAAqBe,cAAc,KACnCV,IAAAA,4BAAa,EAACX,UAAU,OAAM,GAEhC;wBACA,IACElD,OAAO+E,yBAAyB,IAChCpD,cACCkD,OAAOG,IAAI,KAAK,aAAaH,OAAOG,IAAI,KAAK,YAC9C;4BACAzD,gBAAgBsD;4BAEhB,IAAIA,OAAOuC,MAAM,EAAE;gCACjBxE,IAAAA,2BAAc,EAAC3B,KAAK,UAAU4D,OAAOuC,MAAM;4BAC7C;4BACA,OAAO;gCACL5F;gCACAF;gCACAD,UAAU;gCACVE;4BACF;wBACF;oBACF;gBACF;gBAEA,IAAI,CAACtB,KAAKO,WAAW,IAAIgF,MAAMjF,IAAI,KAAK,cAAc;oBACpD,MAAMD,QAAQP,UAAU6G,qBAAqB;oBAC7C,IAAIS,uBAAuB7F,UAAU0B,QAAQ,IAAI;oBAEjD,IAAI;wBACFmE,uBAAuBC,mBAAmBD;oBAC5C,EAAE,OAAM;oBACN,+CAA+C,GACjD;oBAEA,IACE,yCAAyC;oBACzC/G,CAAAA,yBAAAA,MAAQkB,UAAU0B,QAAQ,EAAEjC,KAAKO,UAAUqB,KAAK,OAChDvC,yBAAAA,MACE+G,sBACA,yCAAyC;oBACzCpG,KACAO,UAAUqB,KAAK,IAEjB;wBACA,IAAIzC,kBAAkB;4BACpB,MAAMA,iBAAiBa,IAAIQ,GAAG;wBAChC;wBAEA,MAAM8F,eACJ,OAAMrH,gCAAAA,aAAcsH,UAAU,CAACrH;wBAEjC,IAAI,CAACoH,cAAc;4BACjB,MAAM,qBAA4D,CAA5D,IAAIE,MAAM,CAAC,+CAA+C,CAAC,GAA3D,qBAAA;uCAAA;4CAAA;8CAAA;4BAA2D;wBACnE;wBAEA7E,IAAAA,2BAAc,EAAC3B,KAAK,cAAc;wBAClC2B,IAAAA,2BAAc,EAAC3B,KAAK,gBAAgB;wBACpC2B,IAAAA,2BAAc,EAAC3B,KAAK,eAAe,CAAC;wBACpC2B,IAAAA,2BAAc,EAAC3B,KAAK,oBAAoB;wBACxCpB,MAAM,uBAAuBoB,IAAIQ,GAAG,EAAER,IAAIR,OAAO;wBAEjD,IAAIiH,gBAAsCjE;wBAC1C,IAAIkE,aAAyClE;wBAC7C,IAAI;4BACF,IAAI;gCACF,MAAM8D,aAAaK,cAAc,CAAC3G,KAAKC,KAAKM;4BAC9C,EAAE,OAAOqG,KAAU;gCACjB,IAAI,CAAE,CAAA,YAAYA,GAAE,KAAM,CAAE,CAAA,cAAcA,IAAIlB,MAAM,AAAD,GAAI;oCACrD,MAAMkB;gCACR;gCACAH,gBAAgBG,IAAIlB,MAAM,CAACmB,QAAQ;gCACnC5G,IAAIc,UAAU,GAAG0F,cAAcK,MAAM;gCAErC,IAAIL,cAAcM,IAAI,EAAE;oCACtBL,aAAaD,cAAcM,IAAI;gCACjC,OAAO,IAAIN,cAAcK,MAAM,EAAE;oCAC/BJ,aAAa,IAAIM,eAAe;wCAC9BC,OAAMC,UAAU;4CACdA,WAAWC,OAAO,CAAC;4CACnBD,WAAWE,KAAK;wCAClB;oCACF;gCACF;4BACF;wBACF,EAAE,OAAOC,GAAG;4BACV,+DAA+D;4BAC/D,iEAAiE;4BACjE,sBAAsB;4BACtB,IAAIC,IAAAA,0BAAY,EAACD,IAAI;gCACnB,OAAO;oCACL9G;oCACAF;oCACAD,UAAU;gCACZ;4BACF;4BACA,MAAMiH;wBACR;wBAEA,IAAIpH,IAAIsH,MAAM,IAAItH,IAAIG,QAAQ,IAAI,CAACqG,eAAe;4BAChD,OAAO;gCACLlG;gCACAF;gCACAD,UAAU;4BACZ;wBACF;wBAEA,MAAMoH,oBAAoBC,IAAAA,iCAAyB,EACjDhB,cAAcjH,OAAO;wBAGvBZ,MAAM,kBAAkB6H,cAAcK,MAAM,EAAEU;wBAE9C,IAAIA,iBAAiB,CAAC,gCAAgC,EAAE;4BACtD,MAAME,oBAAiC,IAAIC;4BAC3C,IAAIC,kBACFJ,iBAAiB,CAAC,gCAAgC;4BAEpD,IAAI,OAAOI,oBAAoB,UAAU;gCACvCA,kBAAkBA,gBAAgBhH,KAAK,CAAC;4BAC1C;4BAEA,KAAK,MAAMiH,OAAOD,gBAAiB;gCACjCF,kBAAkBI,GAAG,CAACD,IAAIE,IAAI;4BAChC;4BACA,OAAOP,iBAAiB,CAAC,gCAAgC;4BAEzD,kBAAkB;4BAClB,KAAK,MAAMK,OAAOvC,OAAO0C,IAAI,CAAChI,IAAIR,OAAO,EAAG;gCAC1C,IAAI,CAACkI,kBAAkB/D,GAAG,CAACkE,MAAM;oCAC/B,OAAO7H,IAAIR,OAAO,CAACqI,IAAI;gCACzB;4BACF;4BAEA,yBAAyB;4BACzB,KAAK,MAAMA,OAAOH,kBAAkBM,IAAI,GAAI;gCAC1C,MAAMC,WAAW,0BAA0BJ;gCAC3C,MAAMK,WAAWV,iBAAiB,CAACS,SAAS;gCAC5C,MAAME,WAAWnI,IAAIR,OAAO,CAACqI,IAAI;gCAEjC,IAAIM,aAAaD,UAAU;oCACzBlI,IAAIR,OAAO,CAACqI,IAAI,GAAGK,aAAa,OAAO1F,YAAY0F;gCACrD;gCACA,OAAOV,iBAAiB,CAACS,SAAS;4BACpC;wBACF;wBAEA,IACE,CAACT,iBAAiB,CAAC,uBAAuB,IAC1C,CAACA,iBAAiB,CAAC,oBAAoB,IACvC,CAACA,iBAAiB,CAAC,WAAW,EAC9B;4BACAA,iBAAiB,CAAC,uBAAuB,GAAG;wBAC9C;wBACA,OAAOA,iBAAiB,CAAC,oBAAoB;wBAE7C,KAAK,MAAM,CAACK,KAAKO,MAAM,IAAI9C,OAAO+C,OAAO,CAAC;4BACxC,GAAGC,IAAAA,uBAAgB,EAACd,mBAAmBe,0BAAmB,CAAC;wBAC7D,GAAI;4BACF,IACE;gCACE;gCACA;gCACA;gCACA;6BACD,CAACpH,QAAQ,CAAC0G,MACX;gCACA;4BACF;4BAEA,gEAAgE;4BAChE,kEAAkE;4BAClE,IAAIA,QAAQ,2BAA2B;gCACrC7H,IAAIR,OAAO,CAACqI,IAAI,GAAGO;gCACnB;4BACF;4BAEA,IAAIA,OAAO;gCACT/H,UAAU,CAACwH,IAAI,GAAGO;gCAClBpI,IAAIR,OAAO,CAACqI,IAAI,GAAGO;4BACrB;wBACF;wBAEA,IAAIZ,iBAAiB,CAAC,uBAAuB,EAAE;4BAC7C,MAAMY,QAAQZ,iBAAiB,CAAC,uBAAuB;4BACvD,MAAMgB,cAAcC,IAAAA,6BAAc,EAACL,OAAOhH;4BAC1Cf,UAAU,CAAC,uBAAuB,GAAGmI;4BAErCjI,YAAYC,YAAG,CAACC,KAAK,CAAC+H,aAAa;4BAEnC,IAAIjI,UAAUS,QAAQ,EAAE;gCACtB,OAAO;oCACLT;oCACAF;oCACAD,UAAU;gCACZ;4BACF;4BAEA,IAAIrB,OAAO0D,IAAI,EAAE;gCACf,MAAMsD,kBAAkB9C,IAAAA,wCAAmB,EACzC1C,UAAU0B,QAAQ,IAAI,IACtBlD,OAAO0D,IAAI,CAACS,OAAO;gCAGrB,IAAI6C,gBAAgBzC,cAAc,EAAE;oCAClC3B,IAAAA,2BAAc,EAAC3B,KAAK,UAAU+F,gBAAgBzC,cAAc;gCAC9D;4BACF;wBACF;wBAEA,IAAIkE,iBAAiB,CAAC,WAAW,EAAE;4BACjC,MAAMY,QAAQZ,iBAAiB,CAAC,WAAW;4BAE3C,gFAAgF;4BAChF,4FAA4F;4BAC5F,MAAMkB,mBAAmBC,kCAAkB,CAAChF,GAAG,CAC7C8C,cAAcK,MAAM;4BAGtB,IAAI4B,kBAAkB;gCACpB,oEAAoE;gCACpE,MAAME,MAAMH,IAAAA,6BAAc,EAACL,OAAOhH;gCAClCf,UAAU,CAAC,WAAW,GAAGuI;gCACzBrI,YAAYC,YAAG,CAACC,KAAK,CAACmI,KAAK;gCAE3B,OAAO;oCACLrI;oCACAF;oCACAD,UAAU;oCACVW,YAAY0F,cAAcK,MAAM;gCAClC;4BACF,OAAO;gCACL,wDAAwD;gCACxDzG,UAAU,CAAC,WAAW,GAAG+H;gCAEzB,OAAO;oCACL7H;oCACAF;oCACAD,UAAU;oCACVsG;oCACA3F,YAAY0F,cAAcK,MAAM;gCAClC;4BACF;wBACF;wBAEA,IAAIU,iBAAiB,CAAC,uBAAuB,EAAE;4BAC7C,OAAO;gCACLjH;gCACAF;gCACAD,UAAU;gCACVsG;gCACA3F,YAAY0F,cAAcK,MAAM;4BAClC;wBACF;oBACF;gBACF;gBAEA,kBAAkB;gBAClB,IACE,AAAC,CAAA,gBAAgBvC,SAAS,eAAeA,KAAI,KAC7CA,MAAMiE,WAAW,EACjB;oBACA,MAAM,EAAEK,iBAAiB,EAAE,GAAGC,IAAAA,sCAAkB,EAAC;wBAC/CC,qBAAqB;wBACrBP,aAAajE,MAAMiE,WAAW;wBAC9B/D,QAAQA;wBACR7C,OAAOrB,UAAUqB,KAAK;oBACxB;oBAEA,MAAM,EAAEA,KAAK,EAAE,GAAGiH;oBAClB,OAAO,AAACA,kBAA0BjH,KAAK;oBAEvCiH,kBAAkBG,MAAM,GAAGC,IAAAA,gCAAc,EAACjJ,KAAY4B;oBAEtDiH,kBAAkB5G,QAAQ,GAAGnB,IAAAA,gCAAwB,EACnD+H,kBAAkB5G,QAAQ;oBAG5B,OAAO;wBACL7B,UAAU;wBACV,oCAAoC;wBACpCG,WAAWsI;wBACX9H,YAAYmI,IAAAA,iCAAiB,EAAC3E;oBAChC;gBACF;gBAEA,iBAAiB;gBACjB,IAAIA,MAAM/E,OAAO,EAAE;oBACjB,MAAM4F,YAAYE,OAAO0C,IAAI,CAACvD,QAAQL,MAAM,GAAG;oBAC/C,KAAK,MAAM+E,UAAU5E,MAAM/E,OAAO,CAAE;wBAClC,IAAI,EAAEqI,GAAG,EAAEO,KAAK,EAAE,GAAGe;wBACrB,IAAI/D,WAAW;4BACbyC,MAAMuB,IAAAA,kCAAc,EAACvB,KAAKpD;4BAC1B2D,QAAQgB,IAAAA,kCAAc,EAAChB,OAAO3D;wBAChC;wBAEA,IAAIoD,IAAIwB,WAAW,OAAO,cAAc;4BACtC,IAAI,CAACC,MAAMC,OAAO,CAAClJ,UAAU,CAACwH,IAAI,GAAG;gCACnC,MAAM2B,MAAMnJ,UAAU,CAACwH,IAAI;gCAC3BxH,UAAU,CAACwH,IAAI,GAAG,OAAO2B,QAAQ,WAAW;oCAACA;iCAAI,GAAG,EAAE;4BACxD;;4BACEnJ,UAAU,CAACwH,IAAI,CAAc4B,IAAI,CAACrB;wBACtC,OAAO;4BACL/H,UAAU,CAACwH,IAAI,GAAGO;wBACpB;oBACF;gBACF;gBAEA,iBAAiB;gBACjB,IAAI7D,MAAMiE,WAAW,EAAE;oBACrB,IAAIkB,gBAAgBjF;oBAEpB,IAAI;wBACF,+EAA+E;wBAC/E,gFAAgF;wBAChF,8EAA8E;wBAC9E,IAAIkF,IAAAA,8DAA0B,EAACpF,QAAmB;4BAChD,MAAMqF,cAAc5J,IAAIR,OAAO,CAACqK,+CAA6B,CAAC;4BAE9D,IAAID,aAAa;gCACfF,gBAAgB;oCACd,GAAGI,IAAAA,qCAAiB,EAClBC,IAAAA,oEAAiC,EAACH,aACnC;oCACD,GAAGnF,MAAM;gCACX;4BACF;wBACF;oBACF,EAAE,OAAOmC,KAAK;oBACZ,wFAAwF;oBACxF,sDAAsD;oBACxD;oBAEA,MAAM,EAAEiC,iBAAiB,EAAE,GAAGC,IAAAA,sCAAkB,EAAC;wBAC/CC,qBAAqB;wBACrBP,aAAajE,MAAMiE,WAAW;wBAC9B/D,QAAQiF;wBACR9H,OAAOrB,UAAUqB,KAAK;oBACxB;oBAEA,IAAIiH,kBAAkB7H,QAAQ,EAAE;wBAC9B,OAAO;4BACL,oCAAoC;4BACpCT,WAAWsI;4BACXzI,UAAU;wBACZ;oBACF;oBAEA,yDAAyD;oBACzD,IAAIJ,IAAIR,OAAO,CAACwK,4BAAU,CAAC,KAAK,KAAK;wBACnC,kEAAkE;wBAClE,sDAAsD;wBACtD,IAAIzJ,UAAU0B,QAAQ,KAAK4G,kBAAkB5G,QAAQ,EAAE;4BACrDhC,IAAIgK,SAAS,CACXC,4CAA0B,EAC1BrB,kBAAkB5G,QAAQ;wBAE9B;wBACA,IAAI1B,UAAUyI,MAAM,KAAKH,kBAAkBG,MAAM,EAAE;4BACjD/I,IAAIgK,SAAS,CACXE,6CAA2B,EAC3B,uCAAuC;4BACvCtB,kBAAkBG,MAAM,CAACoB,KAAK,CAAC;wBAEnC;oBACF;oBAEA,IAAIrL,OAAO0D,IAAI,EAAE;wBACf,MAAMsD,kBAAkB9C,IAAAA,wCAAmB,EACzCF,IAAAA,kCAAgB,EAAC8F,kBAAkB5G,QAAQ,EAAElD,OAAO8D,QAAQ,GAC5D9D,OAAO0D,IAAI,CAACS,OAAO;wBAGrB,IAAI6C,gBAAgBzC,cAAc,EAAE;4BAClC3B,IAAAA,2BAAc,EAAC3B,KAAK,UAAU+F,gBAAgBzC,cAAc;wBAC9D;oBACF;oBACA5C,aAAa;oBACbH,UAAU0B,QAAQ,GAAG4G,kBAAkB5G,QAAQ;oBAC/CqD,OAAOC,MAAM,CAAChF,UAAUqB,KAAK,EAAEiH,kBAAkBjH,KAAK;gBACxD;gBAEA,qBAAqB;gBACrB,IAAI2C,MAAM1E,KAAK,EAAE;oBACf,MAAM+D,SAAS,MAAMF;oBAErB,IAAIE,QAAQ;wBACV,OAAO;4BACLrD;4BACAF;4BACAD,UAAU;4BACVE,eAAesD;wBACjB;oBACF;gBACF;YACF;QACF;QAEA,KAAK,MAAMW,SAASnF,OAAQ;YAC1B,MAAMsG,SAAS,MAAMV,YAAYT;YACjC,IAAImB,QAAQ;gBACV,OAAOA;YACT;QACF;QAEA,OAAO;YACLtF;YACAG;YACAF;YACAC;QACF;IACF;IAEA,OAAOP;AACT","ignoreList":[0]}