reroute-js 0.45.11 → 0.45.12-beta.1
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/cli/bin.js +227 -126
- package/cli/bin.js.map +9 -8
- package/cli/index.js +2 -2
- package/cli/index.js.map +1 -1
- package/cli/src/commands/gen.d.ts.map +1 -1
- package/core/index.js +166 -81
- package/core/index.js.map +8 -7
- package/core/src/og/discovery.d.ts.map +1 -1
- package/core/src/ssr/lib/compute/index.d.ts.map +1 -1
- package/core/src/ssr/lib/data.d.ts.map +1 -1
- package/core/src/ssr/lib/index.d.ts +1 -0
- package/core/src/ssr/lib/index.d.ts.map +1 -1
- package/core/src/ssr/lib/route-match.d.ts +20 -0
- package/core/src/ssr/lib/route-match.d.ts.map +1 -0
- package/elysia/index.js +206 -105
- package/elysia/index.js.map +9 -8
- package/elysia/src/routes/og.d.ts.map +1 -1
- package/package.json +1 -1
- package/react/index.js +6 -2
- package/react/index.js.map +2 -2
- package/telemetry/react.js +6 -2
- package/telemetry/react.js.map +2 -2
- package/telemetry/server.js +6 -3
- package/telemetry/server.js.map +5 -5
package/elysia/index.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../packages/core/src/bundler/hash.ts", "../../packages/core/src/config.ts", "../../packages/core/src/ssr/lib/path.ts", "../../packages/core/src/content/discovery.ts", "../../packages/core/src/content/metadata.ts", "../../packages/core/src/content/index.ts", "../../packages/telemetry/src/server/context.ts", "../../packages/telemetry/src/server/headers/index.ts", "../../packages/telemetry/src/server/instrumentation.ts", "../../packages/telemetry/src/server/sourcemap.ts", "../../packages/telemetry/src/server/plugin.ts", "../../packages/telemetry/src/server/index.ts", "../../packages/telemetry/server.ts", "../../packages/core/src/ssr/lib/cache.ts", "../../packages/core/src/ssr/lib/cleanup.ts", "../../packages/core/src/ssr/lib/imports.ts", "../../packages/core/src/ssr/lib/collections.ts", "../../packages/core/src/ssr/lib/mime.ts", "../../packages/core/src/ssr/lib/compression.ts", "../../packages/core/src/ssr/lib/compute/content.ts", "../../packages/core/src/ssr/lib/layouts.ts", "../../packages/core/src/ssr/lib/compute/layouts.ts", "../../packages/core/src/ssr/lib/compute/routes.ts", "../../packages/core/src/ssr/lib/compute/index.ts", "../../packages/core/src/ssr/lib/modules.ts", "../../packages/core/src/ssr/lib/seed.ts", "../../packages/core/src/ssr/lib/data.ts", "../../packages/core/src/ssr/lib/html.ts", "../../packages/core/src/og/discovery.ts", "../../packages/core/src/og/meta.ts", "../../packages/core/src/ssr/lib/metadata.ts", "../../packages/core/src/ssr/lib/preload.ts", "../../packages/core/src/ssr/lib/scripts/escape.ts", "../../packages/core/src/ssr/lib/scripts/collections.ts", "../../packages/core/src/ssr/lib/scripts/data.ts", "../../packages/core/src/ssr/lib/scripts/feeds.ts", "../../packages/core/src/ssr/lib/scripts/index.ts", "../../packages/core/src/ssr/lib/styles.ts", "../../packages/core/src/ssr/lib/setup.ts", "../../packages/core/src/ssr/lib/template.ts", "../../packages/core/src/ssr/lib/index.ts", "../../packages/core/src/ssr/lib/serialize.ts", "../../packages/core/src/ssr/render.ts", "../../packages/core/src/llms/formatter.ts", "../../packages/core/src/llms/extractor.ts", "../../packages/core/src/llms/index-generator.ts", "../../packages/core/src/llms/full-generator.ts", "../../packages/core/src/llms/index.ts", "../../packages/core/src/og/render.ts", "../../packages/core/src/og/index.ts", "../../packages/core/src/robots/discovery.ts", "../../packages/core/src/robots/generator.ts", "../../packages/core/src/robots/policies.ts", "../../packages/core/src/robots/index.ts", "../../packages/core/src/sitemap/discovery.ts", "../../packages/core/src/rss/discovery.ts", "../../packages/core/src/rss/generator.ts", "../../packages/core/src/rss/index.ts", "../../packages/core/src/sitemap/generator.ts", "../../packages/core/src/sitemap/index.ts", "../../packages/core/src/ssr/stream.ts", "../../packages/core/src/ssr/index.ts", "../../packages/core/src/index.ts", "../../packages/core/index.ts", "../../packages/elysia/src/plugin.ts", "../../packages/elysia/src/libs/image.ts", "../../packages/elysia/src/routes/artifacts.ts", "../../packages/elysia/src/libs/serving.ts", "../../packages/elysia/src/libs/cache.ts", "../../packages/elysia/src/libs/response.ts", "../../packages/elysia/src/routes/content.ts", "../../packages/elysia/src/routes/image.ts", "../../packages/elysia/src/routes/internal.ts", "../../packages/elysia/src/libs/http.ts", "../../packages/elysia/src/routes/llms.ts", "../../packages/elysia/src/libs/llms.ts", "../../packages/elysia/src/routes/og.ts", "../../packages/elysia/src/routes/redirects.ts", "../../packages/elysia/src/routes/robots.ts", "../../packages/elysia/src/routes/rss.ts", "../../packages/elysia/src/libs/caching.ts", "../../packages/elysia/src/routes/search.ts", "../../packages/elysia/src/routes/sitemap.ts", "../../packages/elysia/src/routes/ssr.ts", "../../packages/elysia/src/routes/static.ts"],
|
|
3
|
+
"sources": ["../../packages/core/src/bundler/hash.ts", "../../packages/core/src/config.ts", "../../packages/core/src/ssr/lib/path.ts", "../../packages/core/src/content/discovery.ts", "../../packages/core/src/content/metadata.ts", "../../packages/core/src/content/index.ts", "../../packages/telemetry/src/server/context.ts", "../../packages/telemetry/src/server/headers/index.ts", "../../packages/telemetry/src/server/instrumentation.ts", "../../packages/telemetry/src/server/sourcemap.ts", "../../packages/telemetry/src/server/plugin.ts", "../../packages/telemetry/src/server/index.ts", "../../packages/telemetry/server.ts", "../../packages/core/src/ssr/lib/cache.ts", "../../packages/core/src/ssr/lib/cleanup.ts", "../../packages/core/src/ssr/lib/imports.ts", "../../packages/core/src/ssr/lib/collections.ts", "../../packages/core/src/ssr/lib/mime.ts", "../../packages/core/src/ssr/lib/compression.ts", "../../packages/core/src/ssr/lib/route-match.ts", "../../packages/core/src/ssr/lib/compute/content.ts", "../../packages/core/src/ssr/lib/layouts.ts", "../../packages/core/src/ssr/lib/compute/layouts.ts", "../../packages/core/src/ssr/lib/compute/routes.ts", "../../packages/core/src/ssr/lib/compute/index.ts", "../../packages/core/src/ssr/lib/modules.ts", "../../packages/core/src/ssr/lib/seed.ts", "../../packages/core/src/ssr/lib/data.ts", "../../packages/core/src/ssr/lib/html.ts", "../../packages/core/src/og/discovery.ts", "../../packages/core/src/og/meta.ts", "../../packages/core/src/ssr/lib/metadata.ts", "../../packages/core/src/ssr/lib/preload.ts", "../../packages/core/src/ssr/lib/scripts/escape.ts", "../../packages/core/src/ssr/lib/scripts/collections.ts", "../../packages/core/src/ssr/lib/scripts/data.ts", "../../packages/core/src/ssr/lib/scripts/feeds.ts", "../../packages/core/src/ssr/lib/scripts/index.ts", "../../packages/core/src/ssr/lib/styles.ts", "../../packages/core/src/ssr/lib/setup.ts", "../../packages/core/src/ssr/lib/template.ts", "../../packages/core/src/ssr/lib/index.ts", "../../packages/core/src/ssr/lib/serialize.ts", "../../packages/core/src/ssr/render.ts", "../../packages/core/src/llms/formatter.ts", "../../packages/core/src/llms/extractor.ts", "../../packages/core/src/llms/index-generator.ts", "../../packages/core/src/llms/full-generator.ts", "../../packages/core/src/llms/index.ts", "../../packages/core/src/og/render.ts", "../../packages/core/src/og/index.ts", "../../packages/core/src/robots/discovery.ts", "../../packages/core/src/robots/generator.ts", "../../packages/core/src/robots/policies.ts", "../../packages/core/src/robots/index.ts", "../../packages/core/src/sitemap/discovery.ts", "../../packages/core/src/rss/discovery.ts", "../../packages/core/src/rss/generator.ts", "../../packages/core/src/rss/index.ts", "../../packages/core/src/sitemap/generator.ts", "../../packages/core/src/sitemap/index.ts", "../../packages/core/src/ssr/stream.ts", "../../packages/core/src/ssr/index.ts", "../../packages/core/src/index.ts", "../../packages/core/index.ts", "../../packages/elysia/src/plugin.ts", "../../packages/elysia/src/libs/image.ts", "../../packages/elysia/src/routes/artifacts.ts", "../../packages/elysia/src/libs/serving.ts", "../../packages/elysia/src/libs/cache.ts", "../../packages/elysia/src/libs/response.ts", "../../packages/elysia/src/routes/content.ts", "../../packages/elysia/src/routes/image.ts", "../../packages/elysia/src/routes/internal.ts", "../../packages/elysia/src/libs/http.ts", "../../packages/elysia/src/routes/llms.ts", "../../packages/elysia/src/libs/llms.ts", "../../packages/elysia/src/routes/og.ts", "../../packages/elysia/src/routes/redirects.ts", "../../packages/elysia/src/routes/robots.ts", "../../packages/elysia/src/routes/rss.ts", "../../packages/elysia/src/libs/caching.ts", "../../packages/elysia/src/routes/search.ts", "../../packages/elysia/src/routes/sitemap.ts", "../../packages/elysia/src/routes/ssr.ts", "../../packages/elysia/src/routes/static.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"export async function generateContentHash(content: string): Promise<string> {\n\tconst data = new TextEncoder().encode(content);\n\tconst buf = await crypto.subtle.digest('SHA-256', data);\n\tlet hex = '';\n\tfor (const b of new Uint8Array(buf)) hex += b.toString(16).padStart(2, '0');\n\treturn hex.slice(0, 8);\n}\n",
|
|
6
6
|
"import { pathToFileURL } from 'node:url';\nimport type { ComponentType } from 'react';\n\n// biome-ignore lint/suspicious/noExplicitAny: The user document\ntype Doc = any;\ninterface StreamingOptions {\n\tenabled?: boolean;\n\tdefaultSkeleton?: ComponentType | string;\n\tdefaultLayoutSkeleton?: ComponentType | string;\n\ttimeout?: number;\n}\n\ninterface StaticOptions {\n\t/**\n\t * Patterns to ignore when serving static files\n\t * @default ['.DS_Store', '.git', '.env']\n\t */\n\tignorePatterns?: (string | RegExp)[];\n\t/**\n\t * Custom headers to add to static file responses\n\t */\n\theaders?: Record<string, string>;\n\t/**\n\t * Cache duration in seconds for static assets\n\t * @default 3600 (1 hour)\n\t */\n\tmaxAge?: number;\n\t/**\n\t * Cache-Control directive\n\t * @default 'public'\n\t */\n\tdirective?: string;\n}\n\ninterface ImageOptions {\n\t/**\n\t * Cache duration in seconds for optimized images\n\t * @default 31536000 (1 year)\n\t */\n\tmaxAge?: number;\n\t/**\n\t * Allowed external domains for image optimization\n\t * @default []\n\t */\n\tallowedDomains?: string[];\n\t/**\n\t * Maximum image width in pixels\n\t * @default 3840\n\t */\n\tmaxWidth?: number;\n\t/**\n\t * Maximum image height in pixels\n\t * @default 2160\n\t */\n\tmaxHeight?: number;\n}\n\n/**\n * Sitemap configuration options\n */\ninterface SitemapOptions {\n\t/** Enable sitemap generation (default: false) */\n\tenabled?: boolean;\n\n\t/** Base URL for sitemap generation (e.g., 'https://example.com') - required when enabled */\n\tbaseUrl?: string;\n\n\t/**\n\t * Maximum URLs per sitemap file before pagination (default: 50000)\n\t * When exceeded, creates multiple sitemap files with a sitemap index\n\t * Set lower for testing (e.g., 10) to verify pagination works\n\t */\n\tmaxUrlsPerPage?: number;\n\n\t/**\n\t * Completely exclude specific routes from the sitemap\n\t * Routes listed here will not appear in the sitemap at all\n\t * @example ['/admin', '/api']\n\t */\n\texcludeRoutes?: string[];\n\n\t/**\n\t * Exclude specific routes from SSR data array discovery\n\t * Routes listed here will still appear in the sitemap as single entries,\n\t * but won't generate multiple URLs from arrays found in their SSR data\n\t * @example ['/download', '/pricing'] - these routes appear once, not per array item\n\t */\n\texcludeDiscovery?: string[];\n\n\t/**\n\t * Extract urls from ssr.data result (full control over data shape)\n\t * If provided, this takes precedence over automatic array discovery\n\t * @param data - Full ssr.data result\n\t * @param routePattern - The route pattern (e.g., '/changelog')\n\t * @returns Array of items to process, or null/undefined to skip this route\n\t */\n\textractUrls?: (data: Doc, routePattern: string) => Doc[] | null | undefined;\n\n\t/**\n\t * Extract URL segment from ssr.data items\n\t * @param item - Data item from ssr.data result\n\t * @param routePattern - The route pattern (e.g., '/changelog')\n\t * @returns URL segment to append to routePattern (e.g., '0.1.0' -> '/changelog/0.1.0'),\n\t * null/undefined to use default extraction, or false to skip this item entirely\n\t */\n\textractUrl?: (\n\t\titem: Doc,\n\t\troutePattern: string,\n\t) => string | null | undefined | false;\n\n\t/**\n\t * Extract lastmod date from ssr.data items\n\t * @param item - Data item from ssr.data result\n\t * @returns ISO date string or undefined\n\t */\n\textractLastmod?: (item: Doc) => string | undefined;\n\n\t/** Default changefreq for URLs */\n\tchangefreq?:\n\t\t| 'always'\n\t\t| 'hourly'\n\t\t| 'daily'\n\t\t| 'weekly'\n\t\t| 'monthly'\n\t\t| 'yearly'\n\t\t| 'never';\n\n\t/** Default priority for URLs */\n\tpriority?: number;\n}\n\n/**\n * RSS feed configuration options\n */\ninterface RSSOptions {\n\t/** Enable RSS feed generation (default: false) */\n\tenabled?: boolean;\n\n\t/** Base URL for RSS feeds (e.g., 'https://example.com') - required when enabled */\n\tbaseUrl?: string;\n\n\t/** Feed title (e.g., 'My Blog') */\n\ttitle?: string;\n\n\t/** Feed description */\n\tdescription?: string;\n\n\t/** Maximum number of items per feed (default: 50) */\n\tlimit?: number;\n\n\t/** Feed format: 'rss' or 'atom' (default: 'rss') */\n\tformat?: 'rss' | 'atom';\n\n\t/**\n\t * Completely exclude specific routes from the RSS feed\n\t * Routes listed here will not appear in the feed at all\n\t * @example ['/admin', '/api']\n\t */\n\texcludeRoutes?: string[];\n\n\t/**\n\t * Exclude specific routes from SSR data array discovery\n\t * Routes listed here won't generate multiple feed items from arrays in their SSR data,\n\t * but may still generate a single feed item if appropriate\n\t * @example ['/download', '/pricing'] - won't generate items per array entry\n\t */\n\texcludeDiscovery?: string[];\n\n\t/**\n\t * Extract items from ssr.data result (full control over data shape)\n\t * If provided, this takes precedence over automatic array discovery\n\t * @param data - Full ssr.data result\n\t * @param routePattern - The route pattern (e.g., '/changelog')\n\t * @returns Array of items to process, or null/undefined to skip this route\n\t */\n\textractUrls?: (data: Doc, routePattern: string) => Doc[] | null | undefined;\n\n\t/**\n\t * Extract URL segment from ssr.data items (same as sitemap)\n\t * @returns URL segment, null/undefined for default extraction, or false to skip item\n\t */\n\textractUrl?: (\n\t\titem: Doc,\n\t\troutePattern: string,\n\t) => string | null | undefined | false;\n\n\t/**\n\t * Extract publication date from items\n\t */\n\textractPubDate?: (item: Doc) => string | undefined;\n\n\t/**\n\t * Extract author from items\n\t */\n\textractAuthor?: (item: Doc) => string | undefined;\n\n\t/**\n\t * Extract content/body from items\n\t */\n\textractContent?: (item: Doc) => string | undefined;\n\n\t/**\n\t * Extract description/summary from items\n\t * Falls back to item.description or item.excerpt if not provided\n\t */\n\textractDescription?: (item: Doc) => string | undefined;\n}\n\n/**\n * Markdown configuration options\n */\ninterface MarkdownOptions {\n\t/**\n\t * Custom components to use when rendering markdown\n\t * Path to a module that exports a components object compatible with Streamdown\n\t * @example './src/client/lib/markdown-components'\n\t */\n\tcomponents?: string;\n\n\t/** Enable GitHub Flavored Markdown (default: true if remark-gfm is installed) */\n\tenableGfm?: boolean;\n\n\t/** Shiki theme for syntax highlighting (default: 'github-dark') */\n\ttheme?: string;\n}\n\n/**\n * Search index configuration options\n */\ninterface SearchOptions {\n\t/** Enable search index generation (default: false) */\n\tenabled?: boolean;\n\n\t/**\n\t * Collections to include in search index\n\t * @default [] - all collections will be indexed\n\t * @example ['blog', 'docs']\n\t */\n\tcollections?: string[];\n\n\t/**\n\t * Include full content text in search (increases index size significantly)\n\t * @default false - only index headings and metadata\n\t */\n\tincludeContent?: boolean;\n\n\t/**\n\t * Maximum content length to index per item (characters)\n\t * @default 5000 - prevents huge content from bloating index\n\t */\n\tcontentLimit?: number;\n\n\t/**\n\t * Fields to index from frontmatter metadata\n\t * @default ['title', 'description', 'excerpt', 'tags']\n\t */\n\tmetaFields?: string[];\n\n\t/**\n\t * Minimum heading level to index (1-6)\n\t * @default 1 - index all headings\n\t */\n\tminHeadingLevel?: number;\n\n\t/**\n\t * Maximum heading level to index (1-6)\n\t * @default 6 - index all headings\n\t */\n\tmaxHeadingLevel?: number;\n\n\t/**\n\t * Default page size for paginated results\n\t * @default 20\n\t */\n\tdefaultPageSize?: number;\n\n\t/**\n\t * Maximum allowed page size (prevents excessive results)\n\t * @default 100\n\t */\n\tmaxPageSize?: number;\n}\n\ninterface OGImageFont {\n\t/** Font family name (e.g., 'Inter') */\n\tname: string;\n\t/** Path to font file (TTF, OTF, or WOFF) relative to project root */\n\tpath: string;\n\t/** Font weight (e.g., 400, 700, 900) */\n\tweight?: number;\n\t/** Font style (default: 'normal') */\n\tstyle?:\n\t\t| 'normal'\n\t\t| 'italic'\n\t\t| 'bold'\n\t\t| 'bold-italic'\n\t\t| 'medium'\n\t\t| 'medium-italic'\n\t\t| 'semibold'\n\t\t| 'semibold-italic'\n\t\t| 'light'\n\t\t| 'light-italic'\n\t\t| 'thin'\n\t\t| 'thin-italic'\n\t\t| 'black'\n\t\t| 'black-italic'\n\t\t| 'extra-bold'\n\t\t| 'extra-bold-italic'\n\t\t| 'extra-light'\n\t\t| 'extra-light-italic'\n\t\t| 'extra-medium'\n\t\t| 'extra-medium-italic'\n\t\t| 'extra-semibold'\n\t\t| 'extra-semibold-italic'\n\t\t| 'extra-light'\n\t\t| 'extra-light-italic'\n\t\t| 'extra-medium'\n\t\t| 'extra-medium-italic'\n\t\t| 'extra-semibold'\n\t\t| 'extra-semibold-italic';\n\tdata?: ArrayBuffer | undefined;\n}\n\n/**\n * Open Graph and social meta tags configuration\n */\ninterface OGOptions {\n\t/**\n\t * Site name used for og:site_name meta tag\n\t * This appears as the website name in social media shares\n\t * @example 'My Awesome Site'\n\t */\n\tsiteName?: string;\n\n\t/**\n\t * Default site description used as fallback for og:description\n\t * when a page doesn't define its own description\n\t * @example 'A modern web application built with Reroute'\n\t */\n\tsiteDescription?: string;\n\n\t/**\n\t * Default Open Graph type for pages without explicit og:type\n\t * Common types: 'website', 'article', 'product', 'profile'\n\t * @default 'website'\n\t * @see https://ogp.me/#types\n\t */\n\tdefaultType?: string;\n\n\t/**\n\t * Twitter/X handle for twitter:site meta tag (with or without @)\n\t * @example '@mysite' or 'mysite'\n\t */\n\ttwitterSite?: string;\n\n\t/**\n\t * Twitter/X card type (default: 'summary_large_image')\n\t * @default 'summary_large_image'\n\t */\n\ttwitterCard?: 'summary' | 'summary_large_image' | 'app' | 'player';\n\n\t/**\n\t * Default locale for og:locale meta tag\n\t * @example 'en_US', 'en_GB', 'es_ES'\n\t */\n\tlocale?: string;\n}\n\n/**\n * OG Image generation configuration options\n */\ninterface OGImageOptions {\n\t/** Enable OG image generation (default: false) */\n\tenabled?: boolean;\n\n\t/** Base URL for absolute OG image URLs (e.g., 'https://example.com') - required when enabled */\n\tbaseUrl?: string;\n\n\t/** Path to default template component or 'default' for built-in template */\n\tdefaultTemplate?: string;\n\n\t/** Image width in pixels (default: 1200) */\n\twidth?: number;\n\n\t/** Image height in pixels (default: 630) */\n\theight?: number;\n\n\t/** Cache duration in seconds (default: 3600 = 1 hour) */\n\tmaxAge?: number;\n\n\t/** Default avatar/logo URL (can be external or local path) */\n\tavatar?: string;\n\n\t/** Site name to display */\n\tsiteName?: string;\n\n\t/** Custom fonts to load for OG images */\n\tfonts?: OGImageFont[];\n}\n\n/**\n * LLMs content configuration options\n */\ninterface LLMsOptions {\n\t/** Enable LLM content features (default: false) */\n\tenabled?: boolean;\n\n\t/** Base URL for absolute URLs in llms.txt index (e.g., 'https://example.com') */\n\tbaseUrl?: string;\n\n\t/** Enable .txt extension for routes (default: true when enabled) */\n\tenableTextExtension?: boolean;\n\n\t/** Enable .md extension for routes (default: true when enabled) */\n\tenableMarkdownExtension?: boolean;\n\n\t/** Enable Accept header content negotiation (default: true when enabled) */\n\tenableContentNegotiation?: boolean;\n\n\t/** Enable /llms.txt index generation (default: true when enabled) */\n\tenableIndex?: boolean;\n\n\t/** Enable /llms-full.txt generation (default: true when enabled) */\n\tenableFullContent?: boolean;\n\n\t/** Cache duration in seconds for LLM content (default: 86400 = 24 hours, or falls back to options.maxAge) */\n\tmaxAge?: number;\n\n\t/** Cache duration in seconds for llms-full.txt specifically (default: 604800 = 7 days, or falls back to llms.maxAge) */\n\tmaxAgeFull?: number;\n\n\t/** Maximum items in full content bundle (default: 10000) */\n\tmaxItems?: number;\n\n\t/** Maximum file size for full content in bytes (default: 50MB) */\n\tmaxSize?: number;\n\n\t/**\n\t * Exclude specific routes from LLM features\n\t * Supports strings (exact match or substring), RegExp, or custom functions\n\t * @example ['/admin', '/api', /^\\/private/, (path) => path.includes('draft')]\n\t */\n\texcludeRoutes?: (string | RegExp | ((pathname: string) => boolean))[];\n\n\t/**\n\t * Exclude collections from LLM features\n\t * @example ['drafts', 'private']\n\t */\n\texcludeCollections?: string[];\n\n\t/** Site name for index header */\n\tsiteName?: string;\n\n\t/** Site description for index header (brief context for LLMs) */\n\tsiteDescription?: string;\n\n\t/**\n\t * Per-collection customization for titles and descriptions\n\t * @example\n\t * ```ts\n\t * collections: {\n\t * blog: {\n\t * title: 'My Awesome Blog',\n\t * description: 'Insights and tutorials about web development'\n\t * },\n\t * docs: {\n\t * title: 'Documentation',\n\t * description: 'Complete API reference and guides'\n\t * }\n\t * }\n\t * ```\n\t */\n\tcollections?: Record<\n\t\tstring,\n\t\t{\n\t\t\t/** Custom title for this collection's LLMS index */\n\t\t\ttitle?: string;\n\t\t\t/** Custom description for this collection's LLMS index */\n\t\t\tdescription?: string;\n\t\t}\n\t>;\n}\n\n/**\n * Robots policy for specific user-agents\n */\ninterface RobotsPolicy {\n\t/** User-Agent (e.g., '*', 'Googlebot', 'GPTBot') */\n\tuserAgent: string;\n\n\t/** Paths to explicitly allow */\n\tallow?: string[];\n\n\t/** Paths to disallow */\n\tdisallow?: string[];\n\n\t/** Crawl delay for this user-agent (seconds) */\n\tcrawlDelay?: number;\n}\n\n/**\n * Robots.txt generation configuration options\n */\ninterface RobotsOptions {\n\t/** Enable robots.txt generation (default: false) */\n\tenabled?: boolean;\n\n\t/** Base URL for sitemap reference (e.g., 'https://example.com') - required when enabled */\n\tbaseUrl?: string;\n\n\t/** Cache duration in seconds (default: 86400 = 24 hours) */\n\tmaxAge?: number;\n\n\t/** Custom policies per user-agent (default: permissive) */\n\tpolicies?: RobotsPolicy[];\n\n\t/** Auto-reference sitemap.xml if sitemap is enabled (default: true) */\n\treferenceSitemap?: boolean;\n\n\t/** Auto-disallow routes excluded from sitemap (default: true) */\n\tsitemapExclusion?: boolean;\n\n\t/** Auto-disallow old redirect source paths (default: true) */\n\tredirectExclusion?: boolean;\n\n\t/** Additional raw text appended to robots.txt */\n\tcustomRules?: string;\n\n\t/** Global crawl delay in seconds (optional) */\n\tcrawlDelay?: number;\n}\n\n/**\n * Telemetry proxy configuration for forwarding browser telemetry\n */\ninterface TelemetryProxyOptions {\n\t/**\n\t * Enable browser telemetry proxy (default: true when proxy config exists)\n\t * Creates endpoints to forward browser traces/metrics/logs to OTLP backend\n\t * This avoids CORS issues and ad blockers\n\t */\n\tenabled?: boolean;\n\n\t/**\n\t * Base path for proxy endpoints (default: '/__reroute_telemetry')\n\t * Creates:\n\t * - {pathname}/v1/traces\n\t * - {pathname}/v1/metrics\n\t * - {pathname}/v1/logs\n\t * - {pathname}/health\n\t */\n\tpathname?: string;\n\n\t/**\n\t * Enable verbose logging for proxy requests\n\t * @default false\n\t */\n\tverbose?: boolean;\n\n\t/**\n\t * Custom handler for proxy requests (advanced)\n\t * If provided, replaces default OTLP forwarding logic\n\t *\n\t * @example\n\t * ```ts\n\t * handler: async ({ body, endpoint, headers }) => {\n\t * // Custom logic: filter, transform, or route to different backends\n\t * await fetch(`https://custom-backend${endpoint}`, {\n\t * method: 'POST',\n\t * headers,\n\t * body: JSON.stringify(body),\n\t * });\n\t * return { status: 200 };\n\t * }\n\t * ```\n\t */\n\thandler?: (params: {\n\t\tbody: unknown;\n\t\tendpoint: string;\n\t\theaders: Record<string, string>;\n\t\totlpEndpoint: string;\n\t}) => Promise<{ status: number }>;\n}\n\n/**\n * Browser telemetry configuration options\n */\ninterface BrowserTelemetryOptions {\n\t/**\n\t * Enable browser telemetry\n\t * @default true\n\t */\n\tenabled?: boolean;\n\n\t/**\n\t * Service name for browser telemetry\n\t * @default 'reroute-app-browser'\n\t */\n\tserviceName?: string;\n\n\t/**\n\t * Service version\n\t * @default '1.0.0'\n\t */\n\tserviceVersion?: string;\n\n\t/**\n\t * OTLP endpoint URL (use relative URL for same-origin proxy)\n\t * @default '/__reroute_telemetry'\n\t */\n\totlpEndpoint?: string;\n\n\t/**\n\t * API key for authentication (optional)\n\t */\n\tapiKey?: string;\n\n\t/**\n\t * Deployment environment (e.g., 'production', 'staging', 'development')\n\t * @default 'development'\n\t */\n\tenvironment?: string;\n\n\t/**\n\t * Enable console.error capture\n\t * @default true\n\t */\n\tenableConsoleCapture?: boolean;\n\n\t/**\n\t * Ignore specific routes/URLs from breadcrumbs and network tracking\n\t *\n\t * Note: Functions are NOT supported for browser telemetry (closures cannot be serialized)\n\t * Use strings or regex patterns instead\n\t *\n\t * @example\n\t * ```ts\n\t * ignoreRoutes: [\n\t * '/bundles/', // String prefix match\n\t * /\\.(js|css|png)$/, // Regex pattern\n\t * /^\\/assets\\//, // Regex for path prefix\n\t * ]\n\t * ```\n\t */\n\tignoreRoutes?: Array<string | RegExp>;\n}\n\n/**\n * Telemetry configuration options for OpenTelemetry integration\n */\ninterface TelemetryOptions {\n\t/**\n\t * Enable server telemetry collection (default: false)\n\t * Must be explicitly enabled to start collecting traces, metrics, and logs\n\t */\n\tenabled?: boolean;\n\n\t/**\n\t * Browser telemetry configuration\n\t * Configure browser-side telemetry separately from server\n\t */\n\tbrowser?: BrowserTelemetryOptions;\n\n\t/**\n\t * Service name for server telemetry\n\t * @default 'reroute-app'\n\t */\n\tserviceName?: string;\n\n\t/**\n\t * Service version\n\t * @default process.env.npm_package_version || '1.0.0'\n\t */\n\tserviceVersion?: string;\n\n\t/**\n\t * OTLP endpoint URL\n\t * @default process.env.OTEL_EXPORTER_OTLP_ENDPOINT || 'http://localhost:4318'\n\t */\n\totlpEndpoint?: string;\n\n\t/**\n\t * API key for authentication (optional, only needed for SigNoz Cloud)\n\t */\n\tapiKey?: string;\n\n\t/**\n\t * Deployment environment (e.g., 'production', 'staging', 'development')\n\t * Used as a deployment.environment attribute on all telemetry\n\t * @default process.env.NODE_ENV || 'development'\n\t */\n\tenvironment?: string;\n\n\t/**\n\t * Metric export interval in milliseconds\n\t * @default 5000\n\t */\n\tmetricsInterval?: number;\n\n\t/**\n\t * Browser telemetry proxy configuration\n\t * When configured, creates endpoints to forward browser telemetry to OTLP backend\n\t * This avoids CORS issues and ad blockers\n\t */\n\tproxy?: TelemetryProxyOptions;\n\n\t/**\n\t * Ignore specific routes from telemetry collection\n\t * Supports flexible pattern matching:\n\t * - String: Matches if pathname contains the string (e.g., '/assets' matches '/assets/logo.png')\n\t * - RegExp: Tests pathname against regex (e.g., /\\.(js|css)$/ matches file extensions)\n\t * - Function: Custom logic with pathname and method (server-side only)\n\t *\n\t * Note: For browser telemetry, only strings and regex are supported (functions use closures that cannot be serialized)\n\t *\n\t * @example\n\t * ```ts\n\t * ignoreRoutes: [\n\t * '/health', // String match\n\t * /\\.(js|css|png|jpg|svg|ico|woff2?)$/, // Regex for static assets\n\t * (pathname) => pathname.startsWith('/assets/'), // Function (server-side only)\n\t * (pathname, method) => method === 'OPTIONS', // Access to HTTP method (server-side only)\n\t * ]\n\t * ```\n\t */\n\tignoreRoutes?: (\n\t\t| string\n\t\t| RegExp\n\t\t| ((pathname: string, method: string) => boolean)\n\t)[];\n\n\t/**\n\t * Enable distributed tracing (default: true)\n\t * Captures request flows across services with OpenTelemetry traces\n\t */\n\tenableTraces?: boolean;\n\n\t/**\n\t * Enable metrics collection (default: true)\n\t * Captures counters, gauges, and histograms for request volume, duration, etc.\n\t */\n\tenableMetrics?: boolean;\n\n\t/**\n\t * Enable structured logging (default: true)\n\t * Captures log events with structured attributes for better querying\n\t */\n\tenableLogs?: boolean;\n\n\t/**\n\t * Enable system metrics collection (default: true)\n\t * Captures CPU usage, memory consumption, and process metrics\n\t */\n\tenableSystemMetrics?: boolean;\n\n\t/**\n\t * Enable console.error and console.warn capture (default: true)\n\t * Automatically creates telemetry spans for console.error/warn calls\n\t * Useful for catching errors that are logged but not thrown\n\t */\n\tenableConsoleCapture?: boolean;\n\n\t/**\n\t * Sample rate for regular requests (default: 1.0)\n\t * Controls what percentage of requests to track (0.0 = 0%, 1.0 = 100%)\n\t *\n\t * Use sampling to reduce telemetry volume and costs on high-traffic applications:\n\t * - 1.0 = Track every request (100%)\n\t * - 0.5 = Track half of requests (50%)\n\t * - 0.1 = Track 10% of requests\n\t * - 0.01 = Track 1% of requests\n\t *\n\t * Sampling uses random selection, so a 10% sample of 100,000 requests\n\t * still provides ~10,000 data points for statistical analysis\n\t *\n\t * @example sampleRate: 0.1 // Track 10% of requests\n\t */\n\tsampleRate?: number;\n\n\t/**\n\t * Sample rate for error requests (default: 1.0)\n\t * Controls what percentage of errors to track (0.0 = 0%, 1.0 = 100%)\n\t *\n\t * Typically set higher than sampleRate since errors are more important to track.\n\t * Common pattern: low sample rate for normal requests, 100% for errors\n\t *\n\t * @example\n\t * ```ts\n\t * sampleRate: 0.1, // Track 10% of normal requests\n\t * errorSampleRate: 1.0, // Track 100% of errors\n\t * ```\n\t */\n\terrorSampleRate?: number;\n\n\t/**\n\t * Capture and map HTTP headers to custom telemetry attributes\n\t * Provides fine-grained control over header extraction and attribute naming\n\t *\n\t * Use presets for common scenarios or define custom mappings for any header\n\t *\n\t * @example\n\t * ```ts\n\t * import { RerouteHeaders, CloudflareHeaders } from 'reroute-js/telemetry/server';\n\t *\n\t * capture: [\n\t * ...RerouteHeaders.http(), // user-agent, referer, accept-language, etc.\n\t * ...CloudflareHeaders.geo(), // Cloudflare geolocation (IP, country, city, etc.)\n\t * { header: 'x-custom', as: 'custom.value' }, // Custom mapping\n\t * ]\n\t * ```\n\t */\n\tcapture?: Array<{ header: string; as: string }>;\n\n\t/**\n\t * Custom attributes to add to all spans and logs\n\t * Useful for tagging telemetry with environment, region, version, etc.\n\t *\n\t * @example\n\t * ```ts\n\t * customAttributes: {\n\t * environment: 'production',\n\t * region: 'us-east-1',\n\t * version: '1.2.3',\n\t * }\n\t * ```\n\t */\n\tcustomAttributes?: Record<string, string | number | boolean>;\n\n\t/**\n\t * Source map configuration for production error tracking\n\t * When enabled, error stack traces are mapped to original source files\n\t * instead of compiled/minified code\n\t *\n\t * @example\n\t * ```ts\n\t * sourcemaps: {\n\t * enabled: true, // Enable sourcemap resolution\n\t * }\n\t * ```\n\t */\n\tsourcemaps?: {\n\t\t/**\n\t\t * Enable sourcemap resolution\n\t\t * @default true in production, false in development\n\t\t */\n\t\tenabled?: boolean;\n\t};\n}\n\n/**\n * Redirect handler function that can dynamically determine destination\n * @param url - The original URL object\n * @returns The destination path/url or null to skip redirect\n */\ntype RedirectHandler = (url: URL) => string | null | Promise<string | null>;\n\n/**\n * Individual redirect rule\n */\ninterface RedirectRule {\n\t/** Enable or disable this redirect rule (default: true) */\n\tenabled?: boolean;\n\t/** Source path (string or regex pattern) */\n\tsource: string | RegExp;\n\t/** Destination path or handler function */\n\tdestination: string | RedirectHandler;\n\t/** HTTP status code (301 = permanent, 302 = temporary, 307 = preserve method, 308 = permanent preserve method) */\n\tstatus?: 301 | 302 | 307 | 308;\n\t/** Whether source is a regex pattern (auto-detected if source is RegExp) */\n\tregex?: boolean;\n}\n\n/**\n * Server-side caching configuration\n * Controls internal LRU cache for rendered HTML and data\n */\ninterface ServerOptions {\n\t/**\n\t * Enable server-side caching\n\t * @default true\n\t */\n\tcache?: boolean;\n\n\t/**\n\t * Cache duration in seconds for server-side cache\n\t * @default 3600 (1 hour)\n\t */\n\tmaxAge?: number;\n}\n\n/**\n * Browser caching configuration\n * Controls Cache-Control headers sent to browsers\n */\ninterface BrowserOptions {\n\t/**\n\t * Enable sending Cache-Control headers to browsers\n\t * Set to false when running behind a CDN like Cloudflare that handles caching\n\t * @default true\n\t */\n\tcache?: boolean;\n\n\t/**\n\t * Cache duration in seconds for browser caching\n\t * @default 300 (5 minutes)\n\t */\n\tmaxAge?: number;\n\n\t/**\n\t * Cache-Control directive ('public' | 'private')\n\t * @default 'public'\n\t */\n\tdirective?: 'public' | 'private';\n}\n\ninterface AppOptions {\n\t/** App component path (e.g., './src/client/App') */\n\tsrc?: string;\n\n\t/**\n\t * Base URL for the application (e.g., 'https://example.com')\n\t * Used for canonical URLs, social meta tags, and other absolute URLs\n\t */\n\tbaseUrl?: string;\n\n\t/** Custom HTML to inject into <head> */\n\thead?: string;\n\n\t/** HTML lang attribute @default 'en' */\n\tlang?: string;\n\n\t/** Root element ID @default 'root' */\n\tappId?: string;\n\n\t/** Enable automatic canonical URL generation @default true when baseUrl is set */\n\tautoCanonical?: boolean;\n\n\t/**\n\t * Suffix to append to all page titles (e.g., ' | My Site')\n\t * Applied automatically to page titles and og:title meta tags\n\t */\n\ttitleSuffix?: string;\n\n\t/** Minify HTML output */\n\tminify?: boolean;\n\n\t/** Enable compression for SSR responses @default true */\n\tcompression?: boolean;\n\n\t/** Enable detailed performance logging */\n\tdebug?: boolean;\n\n\t/** Cache duration for JS bundles in seconds @default 31536000 (1 year) */\n\tbundleMaxAge?: number;\n}\n\ninterface RerouteConfig {\n\tapp?: AppOptions;\n\tstatic?: StaticOptions;\n\tstreaming?: StreamingOptions;\n\tredirects?: RedirectRule[];\n\timage?: ImageOptions;\n\tog?: OGOptions;\n\togImage?: OGImageOptions;\n\tsitemap?: SitemapOptions;\n\trss?: RSSOptions;\n\tmarkdown?: MarkdownOptions;\n\tsearch?: SearchOptions;\n\tllms?: LLMsOptions;\n\trobots?: RobotsOptions;\n\ttelemetry?: TelemetryOptions;\n\n\t/**\n\t * Server-side caching configuration\n\t * Controls internal LRU cache for rendered HTML\n\t *\n\t * @example\n\t * ```ts\n\t * // Disable server caching\n\t * server: { cache: false }\n\t *\n\t * // Custom server cache TTL\n\t * server: { cache: true, maxAge: 3600 }\n\t * ```\n\t */\n\tserver?: ServerOptions;\n\n\t/**\n\t * Browser caching configuration\n\t * Controls Cache-Control headers sent to browsers\n\t *\n\t * @example\n\t * ```ts\n\t * // Disable browser caching (recommended when using Cloudflare)\n\t * browser: { cache: false }\n\t *\n\t * // Custom browser cache settings\n\t * browser: { cache: true, maxAge: 60, directive: 'private' }\n\t * ```\n\t */\n\tbrowser?: BrowserOptions;\n}\n\nfunction defineConfig(config: RerouteConfig): RerouteConfig {\n\treturn config;\n}\n\nasync function loadConfig(cwd: string): Promise<RerouteConfig> {\n\t// Check for bundled config first (compiled binary support)\n\tconst bundledConfig = (globalThis as Record<string, unknown>)\n\t\t.__REROUTE_CONFIG__ as RerouteConfig | undefined;\n\tif (bundledConfig) {\n\t\treturn bundledConfig;\n\t}\n\n\t// Fallback to filesystem read (dev mode)\n\tconst configPath = `${cwd}/reroute.config.ts`;\n\tconst configFile = Bun.file(configPath);\n\n\tif (!(await configFile.exists())) {\n\t\treturn {};\n\t}\n\n\ttry {\n\t\tconst mod = await import(\n\t\t\t`${pathToFileURL(configPath).href}?t=${Date.now()}`\n\t\t);\n\t\treturn (mod.default || mod) as RerouteConfig;\n\t} catch (error) {\n\t\tconsole.warn('[reroute] Failed to load reroute.config.ts:', error);\n\t\treturn {};\n\t}\n}\n\nexport {\n\tdefineConfig,\n\tloadConfig,\n\ttype AppOptions,\n\ttype BrowserOptions,\n\ttype ImageOptions,\n\ttype LLMsOptions,\n\ttype MarkdownOptions,\n\ttype OGOptions,\n\ttype OGImageOptions,\n\ttype OGImageFont,\n\ttype RedirectRule,\n\ttype RerouteConfig,\n\ttype RobotsOptions,\n\ttype RobotsPolicy,\n\ttype RSSOptions,\n\ttype SearchOptions,\n\ttype ServerOptions,\n\ttype SitemapOptions,\n\ttype StaticOptions,\n\ttype StreamingOptions,\n\ttype TelemetryOptions,\n\ttype TelemetryProxyOptions,\n\ttype BrowserTelemetryOptions,\n};\n",
|
|
@@ -21,16 +21,17 @@
|
|
|
21
21
|
"import { dynamicImport } from './imports';\nimport { join } from './path';\nimport type { Doc } from './types';\n\n/**\n * Load content collections for SSR rendering\n */\nexport async function loadCollections(\n\tcwd: string,\n\tisWatchMode: boolean,\n): Promise<Record<string, unknown[]>> {\n\ttry {\n\t\tconst p = join(cwd, '.reroute', 'content.ts');\n\t\tconst mod = await dynamicImport(p, isWatchMode);\n\t\treturn (mod?.byCollection || {}) as Record<string, unknown[]>;\n\t} catch {\n\t\treturn {};\n\t}\n}\n\n/**\n * Set global collections for SSR\n */\nexport function setGlobalCollections(\n\tbyCollectionForSSR: Record<string, unknown[]>,\n): void {\n\ttry {\n\t\t(globalThis as Doc).__REROUTE_COLLECTIONS__ = byCollectionForSSR;\n\t} catch {\n\t\t// Ignore errors in restricted environments\n\t}\n}\n",
|
|
22
22
|
"export function getMimeType(filePath: string): string {\n\tconst ext = filePath.split('.').pop()?.toLowerCase();\n\tconst mimeTypes: Record<string, string> = {\n\t\thtml: 'text/html',\n\t\tcss: 'text/css',\n\t\tjs: 'application/javascript',\n\t\tts: 'application/javascript',\n\t\tjson: 'application/json',\n\t\tpng: 'image/png',\n\t\tjpg: 'image/jpeg',\n\t\tjpeg: 'image/jpeg',\n\t\tgif: 'image/gif',\n\t\tsvg: 'image/svg+xml',\n\t\tico: 'image/x-icon',\n\t\twoff: 'font/woff',\n\t\twoff2: 'font/woff2',\n\t\tttf: 'font/ttf',\n\t};\n\treturn mimeTypes[ext || ''] || 'application/octet-stream';\n}\n\nexport function isCompressible(contentType: string): boolean {\n\tif (!contentType) return false;\n\tconst ct = contentType.split(';')[0].trim();\n\treturn (\n\t\tct.startsWith('text/') ||\n\t\tct === 'application/javascript' ||\n\t\tct === 'application/json' ||\n\t\tct === 'application/xml' ||\n\t\tct === 'image/svg+xml' ||\n\t\t// Compress TTF and WOFF fonts (50-60% reduction for TTF)\n\t\t// WOFF2 is already highly compressed, so skip it to avoid overhead\n\t\tct === 'font/ttf' ||\n\t\tct === 'font/woff'\n\t);\n}\n",
|
|
23
23
|
"import { brotliCompressSync } from 'node:zlib';\nimport { isCompressible } from './mime';\nimport type { CompressionResult, StreamCompressionResult } from './types';\n\nexport function acceptsGzip(acceptEncoding?: string): boolean {\n\treturn Boolean(acceptEncoding && /gzip/i.test(acceptEncoding));\n}\n\nexport function acceptsBrotli(acceptEncoding?: string): boolean {\n\treturn Boolean(acceptEncoding && /\\bbr\\b/i.test(acceptEncoding));\n}\n\nexport function toBytes(\n\tinput: string | Uint8Array,\n): Uint8Array<ArrayBuffer> | string {\n\treturn typeof input === 'string'\n\t\t? new TextEncoder().encode(input)\n\t\t: (input as Uint8Array<ArrayBuffer>);\n}\n\nexport function gzipIfAccepted(\n\tbody: string | Uint8Array,\n\tcontentType: string,\n\tacceptEncoding?: string,\n): CompressionResult {\n\tconst extraHeaders: Record<string, string> = {};\n\n\tif (isCompressible(contentType)) {\n\t\t// Prefer Brotli if supported\n\t\tif (acceptsBrotli(acceptEncoding)) {\n\t\t\ttry {\n\t\t\t\tconst compressed = brotliCompressSync(toBytes(body) as Uint8Array);\n\t\t\t\textraHeaders['Content-Encoding'] = 'br';\n\t\t\t\textraHeaders.Vary = 'Accept-Encoding';\n\t\t\t\treturn { body: compressed, extraHeaders };\n\t\t\t} catch {\n\t\t\t\t// Fallthrough to gzip\n\t\t\t}\n\t\t}\n\n\t\t// Fallback to gzip\n\t\tif (acceptsGzip(acceptEncoding)) {\n\t\t\ttry {\n\t\t\t\tconst compressed = Bun.gzipSync(toBytes(body));\n\t\t\t\textraHeaders['Content-Encoding'] = 'gzip';\n\t\t\t\textraHeaders.Vary = 'Accept-Encoding';\n\t\t\t\treturn { body: compressed, extraHeaders };\n\t\t\t} catch {\n\t\t\t\t// Return uncompressed\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { body, extraHeaders };\n}\n\n/**\n * Compress stream if accepted (currently not supported in Bun)\n */\nexport function compressStreamIfAccepted(\n\tstream: ReadableStream<Uint8Array>,\n\tcontentType: string,\n\t_acceptEncoding?: string,\n): StreamCompressionResult {\n\tconst extraHeaders: Record<string, string> = {};\n\n\tif (!isCompressible(contentType)) {\n\t\treturn { stream, extraHeaders };\n\t}\n\n\t// Streaming compression not yet supported in Bun\n\treturn { stream, extraHeaders };\n}\n",
|
|
24
|
+
"type MatchableRoute = {\n\tpattern: string;\n};\n\nfunction getPatternParts(pattern: string): string[] {\n\treturn pattern.split('/').filter(Boolean);\n}\n\nfunction isDynamicPatternPart(patternPart: string): boolean {\n\treturn patternPart.startsWith(':');\n}\n\nfunction isCatchAllPatternPart(patternPart: string): boolean {\n\treturn patternPart.startsWith(':...');\n}\n\nfunction isCatchAllParamName(paramName: string): boolean {\n\treturn paramName.startsWith('...');\n}\n\nfunction getPatternPartSpecificity(patternPart: string): number {\n\tif (isCatchAllPatternPart(patternPart)) {\n\t\treturn 2;\n\t}\n\n\tif (isDynamicPatternPart(patternPart)) {\n\t\treturn 1;\n\t}\n\n\treturn 0;\n}\n\nexport function compareRouteSpecificity(\n\ta: MatchableRoute,\n\tb: MatchableRoute,\n): number {\n\tconst aPatternParts = getPatternParts(a.pattern);\n\tconst bPatternParts = getPatternParts(b.pattern);\n\tconst aDepth = aPatternParts.length;\n\tconst bDepth = bPatternParts.length;\n\n\tif (aDepth !== bDepth) {\n\t\treturn bDepth - aDepth;\n\t}\n\n\tfor (let i = 0; i < aPatternParts.length; i++) {\n\t\tconst aSpecificity = getPatternPartSpecificity(aPatternParts[i]);\n\t\tconst bSpecificity = getPatternPartSpecificity(bPatternParts[i]);\n\n\t\tif (aSpecificity !== bSpecificity) {\n\t\t\treturn aSpecificity - bSpecificity;\n\t\t}\n\n\t\tif (aSpecificity === 0 && aPatternParts[i] !== bPatternParts[i]) {\n\t\t\treturn aPatternParts[i].localeCompare(bPatternParts[i]);\n\t\t}\n\t}\n\n\treturn a.pattern.localeCompare(b.pattern);\n}\n\nfunction matchCatchAllParam(\n\tparamName: string,\n\tpatternIndex: number,\n\tpatternLength: number,\n\tpathnameParts: string[],\n\tpathnameIndex: number,\n\tparams: Record<string, string>,\n): boolean {\n\tif (\n\t\tpatternIndex !== patternLength - 1 ||\n\t\tpathnameIndex >= pathnameParts.length\n\t) {\n\t\treturn false;\n\t}\n\n\tparams[paramName.slice(3)] = pathnameParts.slice(pathnameIndex).join('/');\n\treturn true;\n}\n\nfunction matchDynamicParam(\n\tparamName: string,\n\tpathnameParts: string[],\n\tpathnameIndex: number,\n\tparams: Record<string, string>,\n): number | null {\n\tconst pathnamePart = pathnameParts[pathnameIndex];\n\tif (pathnamePart === undefined) {\n\t\treturn null;\n\t}\n\n\tparams[paramName] = pathnamePart;\n\treturn pathnameIndex + 1;\n}\n\nfunction matchPatternPart(\n\tpatternPart: string,\n\tpatternIndex: number,\n\tpatternLength: number,\n\tpathnameParts: string[],\n\tpathnameIndex: number,\n\tparams: Record<string, string>,\n): number | 'catch-all' | null {\n\tif (isDynamicPatternPart(patternPart)) {\n\t\tconst paramName = patternPart.slice(1);\n\n\t\tif (isCatchAllParamName(paramName)) {\n\t\t\treturn matchCatchAllParam(\n\t\t\t\tparamName,\n\t\t\t\tpatternIndex,\n\t\t\t\tpatternLength,\n\t\t\t\tpathnameParts,\n\t\t\t\tpathnameIndex,\n\t\t\t\tparams,\n\t\t\t)\n\t\t\t\t? 'catch-all'\n\t\t\t\t: null;\n\t\t}\n\n\t\treturn matchDynamicParam(paramName, pathnameParts, pathnameIndex, params);\n\t}\n\n\tif (patternPart !== pathnameParts[pathnameIndex]) {\n\t\treturn null;\n\t}\n\n\treturn pathnameIndex + 1;\n}\n\nexport function matchRoutePattern(\n\tpattern: string,\n\tpathname: string,\n): Record<string, string> | null {\n\tconst patternParts = getPatternParts(pattern);\n\tconst pathnameParts = pathname.split('/').filter(Boolean);\n\tconst params: Record<string, string> = {};\n\tlet pathnameIndex = 0;\n\n\tfor (let i = 0; i < patternParts.length; i++) {\n\t\tconst nextPathnameIndex = matchPatternPart(\n\t\t\tpatternParts[i],\n\t\t\ti,\n\t\t\tpatternParts.length,\n\t\t\tpathnameParts,\n\t\t\tpathnameIndex,\n\t\t\tparams,\n\t\t);\n\t\tif (nextPathnameIndex === null) {\n\t\t\treturn null;\n\t\t}\n\t\tif (nextPathnameIndex === 'catch-all') {\n\t\t\treturn params;\n\t\t}\n\n\t\tpathnameIndex = nextPathnameIndex;\n\t}\n\n\treturn pathnameIndex === pathnameParts.length ? params : null;\n}\n\nexport function matchRoutes<T extends MatchableRoute>(\n\troutes: readonly T[],\n\tpathname: string,\n): { route: T; params: Record<string, string> } | null {\n\tfor (const route of routes) {\n\t\tconst params = matchRoutePattern(route.pattern, pathname);\n\t\tif (params) {\n\t\t\treturn { route, params };\n\t\t}\n\t}\n\n\treturn null;\n}\n",
|
|
24
25
|
"import { ssrCache, statusCache } from '../cache';\nimport { toPromise } from '../imports';\nimport type { ComputeOptions, Doc, SSR, SSRContext } from '../types';\n\ntype ContentComputeResult = {\n\tdata: Record<string, unknown>;\n\terror?: string;\n\tstatusOverride?: number;\n\tpendingTasks: Promise<unknown>[];\n};\n\nfunction checkStatusCache(\n\tstatusCacheKey: string,\n\tmaxAgeMs: number,\n): number | undefined {\n\tif (maxAgeMs <= 0) return undefined;\n\treturn statusCache.get<number>(statusCacheKey);\n}\n\nfunction checkDataCache(cacheKey: string, maxAgeMs: number): unknown {\n\tif (maxAgeMs <= 0) return undefined;\n\treturn ssrCache.get(cacheKey);\n}\n\nfunction createDataTask(\n\tdataFn: NonNullable<SSR['data']>,\n\tpathname: string,\n\tparts: string[],\n\tsearchParams: URLSearchParams | undefined,\n\tset: { status: number },\n\theaders?: Record<string, string>,\n): Promise<unknown> {\n\treturn toPromise(\n\t\tdataFn({\n\t\t\tpathname,\n\t\t\tparams: { name: parts[1] },\n\t\t\tset,\n\t\t\tsearchParams,\n\t\t\theaders,\n\t\t} satisfies SSRContext),\n\t).catch((err) => {\n\t\tconst msg = err instanceof Error ? err.message : String(err);\n\t\tconst error = `SSR data() failed: ${msg}`;\n\t\tconsole.error(`[reroute] ${error}`);\n\t\tthrow err;\n\t});\n}\n\nfunction handleStreamingMode(\n\tssrData: Record<string, unknown>,\n\tpathname: string,\n\ttask: Promise<unknown>,\n\tset: { status: number },\n\tcacheKey: string,\n\tstatusCacheKey: string,\n\tmaxAgeMs: number,\n\tpendingTasks: Promise<unknown>[],\n): void {\n\tssrData[pathname] = task;\n\n\tconst storeTask = task.then((value) => {\n\t\tif (set.status !== 200) {\n\t\t\t// statusOverride handled by caller\n\t\t}\n\t\tif (maxAgeMs > 0) {\n\t\t\tstatusCache.set(statusCacheKey, set.status, maxAgeMs);\n\t\t}\n\t\tif (maxAgeMs > 0 && set.status === 200) {\n\t\t\tssrCache.set(cacheKey, value, maxAgeMs);\n\t\t}\n\t\treturn value;\n\t});\n\n\tpendingTasks.push(\n\t\tstoreTask\n\t\t\t.then((value) => {\n\t\t\t\tssrData[pathname] = value;\n\t\t\t})\n\t\t\t.catch(() => {}),\n\t);\n}\n\nasync function handleNonStreamingMode(\n\tssrData: Record<string, unknown>,\n\tpathname: string,\n\ttask: Promise<unknown>,\n\tcacheKey: string,\n\tstatusCacheKey: string,\n\tmaxAgeMs: number,\n): Promise<unknown> {\n\tconst result = await task;\n\tssrData[pathname] = result;\n\n\tif (maxAgeMs > 0) {\n\t\tstatusCache.set(\n\t\t\tstatusCacheKey,\n\t\t\t(result as { status?: number }).status || 200,\n\t\t\tmaxAgeMs,\n\t\t);\n\t}\n\tif (maxAgeMs > 0) {\n\t\tssrCache.set(cacheKey, result, maxAgeMs);\n\t}\n\n\treturn result;\n}\n\n/**\n * Compute SSR data for content pages (e.g., /blog/my-post).\n * Content pages export ssr.data via __REROUTE_SSR_EXPORTS__.\n *\n * @param sharedSsrData - In streaming mode, the shared ssrData object that gets passed to React.\n * Promise resolution callbacks must update THIS object directly.\n */\nexport async function computeContentData(\n\tpathname: string,\n\toptions: ComputeOptions,\n\tsearchParams?: URLSearchParams,\n\tsharedSsrData?: Record<string, unknown>,\n): Promise<ContentComputeResult> {\n\tconst streaming = options.streaming === true;\n\tconst ssrData: Record<string, unknown> =\n\t\tstreaming && sharedSsrData ? sharedSsrData : {};\n\tconst pendingTasks: Promise<unknown>[] = [];\n\tlet error: string | undefined;\n\tlet statusOverride: number | undefined;\n\n\tconst maxAge = options.maxAge || 0;\n\tconst maxAgeMs = maxAge * 1000;\n\n\ttry {\n\t\tconst parts = pathname.split('/').filter(Boolean);\n\t\tif (parts.length < 2) {\n\t\t\treturn { data: ssrData, pendingTasks };\n\t\t}\n\n\t\tconst g = globalThis as Doc;\n\t\tconst key = `${parts[0]}:${parts[1]}`;\n\t\tconst exp = g.__REROUTE_SSR_EXPORTS__?.[key] as { ssr?: SSR } | undefined;\n\n\t\tconst dataFn = exp?.ssr?.data;\n\n\t\tif (typeof dataFn !== 'function') {\n\t\t\treturn { data: ssrData, pendingTasks };\n\t\t}\n\n\t\tconst cacheKey = `content:${pathname}:${parts[1]}`;\n\t\tconst statusCacheKey = `status:${cacheKey}`;\n\n\t\tconst cachedStatus = checkStatusCache(statusCacheKey, maxAgeMs);\n\t\tif (cachedStatus && cachedStatus !== 200) {\n\t\t\tstatusOverride = cachedStatus;\n\t\t}\n\n\t\tconst cached = checkDataCache(cacheKey, maxAgeMs);\n\t\tif (cached !== undefined) {\n\t\t\tssrData[pathname] = cached;\n\t\t\treturn { data: ssrData, statusOverride, pendingTasks };\n\t\t}\n\n\t\tconst set = { status: 200 };\n\t\tconst task = createDataTask(\n\t\t\tdataFn,\n\t\t\tpathname,\n\t\t\tparts,\n\t\t\tsearchParams,\n\t\t\tset,\n\t\t\toptions.headers,\n\t\t);\n\n\t\tif (streaming) {\n\t\t\thandleStreamingMode(\n\t\t\t\tssrData,\n\t\t\t\tpathname,\n\t\t\t\ttask,\n\t\t\t\tset,\n\t\t\t\tcacheKey,\n\t\t\t\tstatusCacheKey,\n\t\t\t\tmaxAgeMs,\n\t\t\t\tpendingTasks,\n\t\t\t);\n\t\t\tif (set.status !== 200) {\n\t\t\t\tstatusOverride = set.status;\n\t\t\t}\n\t\t} else {\n\t\t\tawait handleNonStreamingMode(\n\t\t\t\tssrData,\n\t\t\t\tpathname,\n\t\t\t\ttask,\n\t\t\t\tcacheKey,\n\t\t\t\tstatusCacheKey,\n\t\t\t\tmaxAgeMs,\n\t\t\t);\n\t\t\tif (set.status !== 200) {\n\t\t\t\tstatusOverride = set.status;\n\t\t\t}\n\t\t}\n\t} catch {\n\t\t// Return what we have on error\n\t}\n\n\treturn { data: ssrData, error, statusOverride, pendingTasks };\n}\n",
|
|
25
26
|
"import type { Doc, LayoutDef } from './types';\n\n/**\n * Filter and sort layouts that match a given pathname.\n * Layouts are sorted by depth (root → nested) for hierarchical processing.\n */\nexport function getMatchingLayouts(\n\tpathname: string,\n\tlayouts: Doc[] | undefined,\n): LayoutDef[] {\n\tif (!Array.isArray(layouts)) return [];\n\n\treturn layouts\n\t\t.filter((layout: Doc) => {\n\t\t\tconst pattern = String(layout?.pattern || '/');\n\t\t\tif (pattern === '/') return true;\n\t\t\treturn pathname.startsWith(pattern);\n\t\t})\n\t\t.sort((a: Doc, b: Doc) => {\n\t\t\tconst aDepth = getPatternDepth(a?.pattern);\n\t\t\tconst bDepth = getPatternDepth(b?.pattern);\n\t\t\treturn aDepth - bDepth;\n\t\t}) as LayoutDef[];\n}\n\n/**\n * Calculate the depth of a route pattern (number of path segments)\n */\nexport function getPatternDepth(pattern: unknown): number {\n\treturn String(pattern || '/')\n\t\t.split('/')\n\t\t.filter(Boolean).length;\n}\n\n/**\n * Generate a cache key for layout data\n */\nexport function createLayoutCacheKey(\n\tpattern: string,\n\tpathname: string,\n): string {\n\treturn `layout:${pattern}:${pathname}`;\n}\n\n/**\n * Generate the SSR data key for a layout\n */\nexport function createLayoutDataKey(pattern: string): string {\n\treturn `__layout:${pattern}`;\n}\n",
|
|
26
27
|
"import { ssrCache, statusCache } from '../cache';\nimport { dynamicImport, toPromise } from '../imports';\nimport {\n\tcreateLayoutCacheKey,\n\tcreateLayoutDataKey,\n\tgetMatchingLayouts,\n} from '../layouts';\nimport { join } from '../path';\nimport type { ComputeOptions, Doc, SSR, SSRContext } from '../types';\n\ntype LayoutComputeResult = {\n\tdata: Record<string, unknown>;\n\tstatusOverride?: number;\n\tpendingTasks: Promise<unknown>[];\n};\n\nasync function loadLayoutSSRExport(\n\tlayout: Doc,\n\tclientDir: string,\n\tisWatchMode: boolean,\n): Promise<SSR | undefined> {\n\tlet ssrExport = (layout as Doc)?.ssr as SSR | undefined;\n\n\tif (!ssrExport) {\n\t\tconst abs = join(clientDir, 'routes', String(layout.path));\n\t\tconst mod = await dynamicImport(abs, isWatchMode);\n\t\tssrExport = (mod as Doc)?.ssr as SSR | undefined;\n\t}\n\n\treturn ssrExport;\n}\n\nfunction checkLayoutCache(\n\tcacheKey: string,\n\tstatusCacheKey: string,\n\tmaxAgeMs: number,\n): { cachedData?: unknown; cachedStatus?: number } {\n\tconst cachedStatus =\n\t\tmaxAgeMs > 0 ? statusCache.get<number>(statusCacheKey) : undefined;\n\tconst cachedData = maxAgeMs > 0 ? ssrCache.get(cacheKey) : undefined;\n\n\treturn { cachedData, cachedStatus };\n}\n\nfunction createLayoutDataTask(\n\tdataFn: NonNullable<SSR['data']>,\n\tpathname: string,\n\tsearchParams: URLSearchParams | undefined,\n\tlayoutPattern: string,\n\theaders?: Record<string, string>,\n): Promise<unknown> {\n\tconst set = { status: 200 };\n\treturn toPromise(\n\t\tdataFn({\n\t\t\tpathname,\n\t\t\tparams: {},\n\t\t\tset,\n\t\t\tsearchParams,\n\t\t\theaders,\n\t\t} satisfies SSRContext),\n\t).catch((err) => {\n\t\tconst msg = err instanceof Error ? err.message : String(err);\n\t\tconsole.error(\n\t\t\t`[reroute] Layout SSR data() failed for ${layoutPattern}:`,\n\t\t\tmsg,\n\t\t);\n\t\tthrow err;\n\t});\n}\n\nfunction handleLayoutStreamingMode(\n\tssrData: Record<string, unknown>,\n\tlayoutKey: string,\n\ttask: Promise<unknown>,\n\tset: { status: number },\n\tcacheKey: string,\n\tstatusCacheKey: string,\n\tmaxAgeMs: number,\n\tpendingTasks: Promise<unknown>[],\n): void {\n\tssrData[layoutKey] = task;\n\n\t// Ensure global store mirrors streaming promises so useLayoutData() can suspend\n\t// and later resume once the promise resolves.\n\tconst g = globalThis as unknown as Record<string, Record<string, unknown>>;\n\tg.__REROUTE_DATA__ = g.__REROUTE_DATA__ || {};\n\tg.__REROUTE_DATA__[layoutKey] = task;\n\n\tconst storeTask = task.then((value) => {\n\t\tif (maxAgeMs > 0) {\n\t\t\tstatusCache.set(statusCacheKey, set.status, maxAgeMs);\n\t\t}\n\t\tif (maxAgeMs > 0 && set.status === 200) {\n\t\t\tssrCache.set(cacheKey, value, maxAgeMs);\n\t\t}\n\t\treturn value;\n\t});\n\n\tpendingTasks.push(\n\t\tstoreTask\n\t\t\t.then((value) => {\n\t\t\t\tssrData[layoutKey] = value;\n\t\t\t\t// Keep global store in sync after resolution for Suspense retries\n\t\t\t\tif (g.__REROUTE_DATA__) {\n\t\t\t\t\tg.__REROUTE_DATA__[layoutKey] = value;\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(() => {}),\n\t);\n}\n\nasync function handleLayoutNonStreamingMode(\n\tssrData: Record<string, unknown>,\n\tlayoutKey: string,\n\ttask: Promise<unknown>,\n\tcacheKey: string,\n\tstatusCacheKey: string,\n\tmaxAgeMs: number,\n): Promise<unknown> {\n\tconst result = await task;\n\tssrData[layoutKey] = result;\n\n\tif (maxAgeMs > 0) {\n\t\tstatusCache.set(\n\t\t\tstatusCacheKey,\n\t\t\t(result as { status?: number }).status || 200,\n\t\t\tmaxAgeMs,\n\t\t);\n\t}\n\tif (maxAgeMs > 0) {\n\t\tssrCache.set(cacheKey, result, maxAgeMs);\n\t}\n\n\treturn result;\n}\n\nasync function processLayout(\n\tlayout: Doc,\n\tpathname: string,\n\tclientDir: string,\n\tisWatchMode: boolean,\n\tstreaming: boolean,\n\tmaxAgeMs: number,\n\tsearchParams: URLSearchParams | undefined,\n\tssrData: Record<string, unknown>,\n\tpendingTasks: Promise<unknown>[],\n\theaders?: Record<string, string>,\n): Promise<number | undefined> {\n\tif (typeof layout?.path !== 'string') return undefined;\n\n\tconst ssrExport = await loadLayoutSSRExport(layout, clientDir, isWatchMode);\n\tconst dataFn = ssrExport?.data;\n\n\tif (typeof dataFn !== 'function') return undefined;\n\n\tconst pattern = String(layout.pattern || '/');\n\tconst layoutKey = createLayoutDataKey(pattern);\n\tconst cacheKey = createLayoutCacheKey(pattern, pathname);\n\tconst statusCacheKey = `status:${cacheKey}`;\n\n\tconst { cachedData, cachedStatus } = checkLayoutCache(\n\t\tcacheKey,\n\t\tstatusCacheKey,\n\t\tmaxAgeMs,\n\t);\n\n\tif (cachedStatus && cachedStatus !== 200) {\n\t\treturn cachedStatus;\n\t}\n\n\tif (cachedData !== undefined) {\n\t\tssrData[layoutKey] = cachedData;\n\t\treturn undefined;\n\t}\n\n\tconst set = { status: 200 };\n\tconst task = createLayoutDataTask(\n\t\tdataFn,\n\t\tpathname,\n\t\tsearchParams,\n\t\tpattern,\n\t\theaders,\n\t);\n\n\tif (streaming) {\n\t\thandleLayoutStreamingMode(\n\t\t\tssrData,\n\t\t\tlayoutKey,\n\t\t\ttask,\n\t\t\tset,\n\t\t\tcacheKey,\n\t\t\tstatusCacheKey,\n\t\t\tmaxAgeMs,\n\t\t\tpendingTasks,\n\t\t);\n\t} else {\n\t\tawait handleLayoutNonStreamingMode(\n\t\t\tssrData,\n\t\t\tlayoutKey,\n\t\t\ttask,\n\t\t\tcacheKey,\n\t\t\tstatusCacheKey,\n\t\t\tmaxAgeMs,\n\t\t);\n\t}\n\n\treturn set.status !== 200 ? set.status : undefined;\n}\n\n/**\n * Compute SSR data from all matching layouts for a pathname.\n * Executes layout ssr.data() functions in hierarchical order (root → nested).\n *\n * @param sharedSsrData - In streaming mode, the shared ssrData object that gets passed to React.\n * Promise resolution callbacks must update THIS object directly.\n */\nexport async function computeLayoutData(\n\tpathname: string,\n\tclientDir: string,\n\t_cwd: string,\n\tisWatchMode: boolean,\n\toptions: ComputeOptions,\n\tsearchParams?: URLSearchParams,\n\troutesModule?: Doc,\n\tsharedSsrData?: Record<string, unknown>,\n): Promise<LayoutComputeResult> {\n\tconst streaming = options.streaming === true;\n\tconst ssrData: Record<string, unknown> =\n\t\tstreaming && sharedSsrData ? sharedSsrData : {};\n\tconst pendingTasks: Promise<unknown>[] = [];\n\tlet statusOverride: number | undefined;\n\n\tconst maxAge = options.maxAge || 0;\n\tconst maxAgeMs = maxAge * 1000;\n\n\ttry {\n\t\tconst layouts = routesModule?.layouts as Doc[] | undefined;\n\t\tconst matchingLayouts = getMatchingLayouts(pathname, layouts);\n\n\t\tfor (const layout of matchingLayouts) {\n\t\t\ttry {\n\t\t\t\tconst layoutStatus = await processLayout(\n\t\t\t\t\tlayout,\n\t\t\t\t\tpathname,\n\t\t\t\t\tclientDir,\n\t\t\t\t\tisWatchMode,\n\t\t\t\t\tstreaming,\n\t\t\t\t\tmaxAgeMs,\n\t\t\t\t\tsearchParams,\n\t\t\t\t\tssrData,\n\t\t\t\t\tpendingTasks,\n\t\t\t\t\toptions.headers,\n\t\t\t\t);\n\n\t\t\t\tif (layoutStatus && !statusOverride) {\n\t\t\t\t\tstatusOverride = layoutStatus;\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t// Continue to next layout on error\n\t\t\t}\n\t\t}\n\t} catch {\n\t\t// Return empty data on failure\n\t}\n\n\treturn { data: ssrData, statusOverride, pendingTasks };\n}\n\n/**\n * Merge layout data into route data for non-streaming mode.\n * Users can call useData() without knowing about layout keys.\n */\nexport function mergeLayoutData(\n\tssrData: Record<string, unknown>,\n\tpathname: string,\n): void {\n\tconst layoutKeys = Object.keys(ssrData).filter((key) =>\n\t\tkey.startsWith('__layout:'),\n\t);\n\n\tconst layoutData: Record<string, unknown> = {};\n\tfor (const key of layoutKeys) {\n\t\tObject.assign(layoutData, ssrData[key] as Record<string, unknown>);\n\t}\n\n\tif (pathname in ssrData) {\n\t\tssrData[pathname] = {\n\t\t\t...layoutData,\n\t\t\t...(typeof ssrData[pathname] === 'object' && ssrData[pathname] !== null\n\t\t\t\t? (ssrData[pathname] as Record<string, unknown>)\n\t\t\t\t: {}),\n\t\t};\n\t} else if (Object.keys(layoutData).length > 0) {\n\t\tssrData[pathname] = layoutData;\n\t}\n}\n",
|
|
27
28
|
"import { ssrCache, statusCache } from '../cache';\nimport { dynamicImport, isThenable, toPromise } from '../imports';\nimport { join } from '../path';\nimport type {\n\tComputeOptions,\n\tDoc,\n\tRouteMatch,\n\tSSR,\n\tSSRContext,\n} from '../types';\n\ntype RouteComputeResult = {\n\tdata: Record<string, unknown>;\n\terror?: string;\n\tstatusOverride?: number;\n\tpendingTasks: Promise<unknown>[];\n};\n\n/**\n * Compute SSR data for route-level ssr.data() functions.\n * Handles both streaming and non-streaming modes with promise flattening.\n *\n * @param sharedSsrData - In streaming mode, the shared ssrData object that gets passed to React.\n * Promise resolution callbacks must update THIS object directly.\n */\nfunction checkCache(\n\tcacheKey: string,\n\tstatusCacheKey: string,\n\tmaxAgeMs: number,\n\tpathname: string,\n\tssrData: Record<string, unknown>,\n): { cached: boolean; statusOverride?: number } {\n\t// Check status cache first\n\tconst cachedStatus =\n\t\tmaxAgeMs > 0 ? statusCache.get<number>(statusCacheKey) : undefined;\n\tconst statusOverride =\n\t\tcachedStatus && cachedStatus !== 200 ? cachedStatus : undefined;\n\n\t// Check data cache\n\tconst cached = maxAgeMs > 0 ? ssrCache.get(cacheKey) : undefined;\n\n\tif (cached !== undefined) {\n\t\tssrData[pathname] = cached;\n\t\treturn { cached: true, statusOverride };\n\t}\n\n\treturn { cached: false, statusOverride };\n}\n\nasync function loadRouteSSRExport(\n\troute: Doc,\n\tclientDir: string,\n\tisWatchMode: boolean,\n): Promise<SSR | undefined> {\n\t// Try to use bundled ssr export first (compiled binary)\n\tlet ssrExport = (route as Doc)?.ssr as SSR | undefined;\n\n\t// Fallback to dynamic import if not bundled (dev mode)\n\tif (!ssrExport) {\n\t\tconst routePath = String(route.path);\n\t\tconst cwd = join(clientDir, '..');\n\n\t\t// Try streaming wrapper first (for routes with ssr.data())\n\t\tlet abs = join(cwd, '.reroute', 'streaming', routePath);\n\t\tlet mod = await dynamicImport(abs, isWatchMode).catch(() => null);\n\n\t\t// Fallback to source if streaming doesn't exist\n\t\tif (!mod) {\n\t\t\tabs = join(clientDir, 'routes', routePath);\n\t\t\tmod = await dynamicImport(abs, isWatchMode);\n\t\t}\n\n\t\tssrExport = (mod as Doc)?.ssr as SSR | undefined;\n\t}\n\n\treturn ssrExport;\n}\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Route data computation handles caching, streaming, and promise flattening\nexport async function computeRouteData(\n\tpathname: string,\n\tclientDir: string,\n\t_cwd: string,\n\tisWatchMode: boolean,\n\toptions: ComputeOptions,\n\tsearchParams?: URLSearchParams,\n\troutesModule?: Doc,\n\tsharedSsrData?: Record<string, unknown>,\n): Promise<RouteComputeResult> {\n\tconst streaming = options.streaming === true;\n\tconst ssrData: Record<string, unknown> =\n\t\tstreaming && sharedSsrData ? sharedSsrData : {};\n\tconst pendingTasks: Promise<unknown>[] = [];\n\tlet error: string | undefined;\n\tlet statusOverride: number | undefined;\n\n\tconst maxAge = options.maxAge || 0;\n\tconst maxAgeMs = maxAge * 1000;\n\n\tconst storeResult = (key: string, task: Promise<unknown>) => {\n\t\tpendingTasks.push(\n\t\t\ttask\n\t\t\t\t.then((value) => {\n\t\t\t\t\tssrData[key] = value;\n\t\t\t\t})\n\t\t\t\t.catch(() => {}),\n\t\t);\n\t};\n\n\ttry {\n\t\t// Strip query string for route matching\n\t\tconst pathnameOnly = pathname.split('?')[0];\n\t\tconst match: RouteMatch =\n\t\t\ttypeof routesModule?.matchRoute === 'function'\n\t\t\t\t? routesModule.matchRoute(pathnameOnly)\n\t\t\t\t: null;\n\n\t\tconst route = match?.route;\n\t\tconst params = match?.params || {};\n\n\t\tif (!route || typeof route.path !== 'string') {\n\t\t\treturn { data: ssrData, pendingTasks };\n\t\t}\n\n\t\t// Load SSR export\n\t\tconst ssrExport = await loadRouteSSRExport(route, clientDir, isWatchMode);\n\n\t\tconst dataFn = ssrExport?.data;\n\n\t\tif (typeof dataFn !== 'function') {\n\t\t\treturn { data: ssrData, pendingTasks };\n\t\t}\n\n\t\t// Include search params in cache key\n\t\tconst searchQuery = searchParams ? `?${searchParams.toString()}` : '';\n\t\tconst cacheKey = `route:${pathname}${searchQuery}:${JSON.stringify(params)}`;\n\t\tconst statusCacheKey = `status:${cacheKey}`;\n\n\t\tconst cacheResult = checkCache(\n\t\t\tcacheKey,\n\t\t\tstatusCacheKey,\n\t\t\tmaxAgeMs,\n\t\t\tpathname,\n\t\t\tssrData,\n\t\t);\n\n\t\tif (cacheResult.cached) {\n\t\t\treturn {\n\t\t\t\tdata: ssrData,\n\t\t\t\tstatusOverride: cacheResult.statusOverride,\n\t\t\t\tpendingTasks,\n\t\t\t};\n\t\t}\n\n\t\tif (cacheResult.statusOverride) {\n\t\t\tstatusOverride = cacheResult.statusOverride;\n\t\t}\n\n\t\t// Execute data function\n\t\tconst set = { status: 200 };\n\t\tconst rawResult = dataFn({\n\t\t\tpathname,\n\t\t\tparams,\n\t\t\tset,\n\t\t\tsearchParams,\n\t\t\theaders: options.headers,\n\t\t} satisfies SSRContext);\n\t\tconst isPromise = rawResult instanceof Promise;\n\n\t\tif (streaming) {\n\t\t\tconst result = await handleStreamingRouteData(\n\t\t\t\trawResult,\n\t\t\t\tisPromise,\n\t\t\t\tpathname,\n\t\t\t\tset,\n\t\t\t\t{ ssrData, pendingTasks, storeResult },\n\t\t\t\t{ cacheKey, statusCacheKey, maxAgeMs },\n\t\t\t\t(msg) => {\n\t\t\t\t\terror = msg;\n\t\t\t\t},\n\t\t\t\t(val) => {\n\t\t\t\t\tif (!statusOverride) statusOverride = val;\n\t\t\t\t},\n\t\t\t);\n\t\t\tObject.assign(ssrData, result);\n\t\t} else {\n\t\t\tconst task = toPromise(rawResult).catch((err) => {\n\t\t\t\tconst msg = err instanceof Error ? err.message : String(err);\n\t\t\t\terror = `SSR data() failed: ${msg}`;\n\t\t\t\tconsole.error(`[reroute] ${error}`);\n\t\t\t\tthrow err;\n\t\t\t});\n\n\t\t\tconst result = await task;\n\t\t\tif (set.status !== 200 && !statusOverride) {\n\t\t\t\tstatusOverride = set.status;\n\t\t\t}\n\t\t\tssrData[pathname] = result;\n\t\t\tif (maxAgeMs > 0) {\n\t\t\t\tstatusCache.set(statusCacheKey, set.status, maxAgeMs);\n\t\t\t}\n\t\t\tif (maxAgeMs > 0 && set.status === 200) {\n\t\t\t\tssrCache.set(cacheKey, result, maxAgeMs);\n\t\t\t}\n\t\t}\n\t} catch {\n\t\t// Return what we have on error\n\t}\n\n\treturn { data: ssrData, error, statusOverride, pendingTasks };\n}\n\ntype StreamingContext = {\n\tssrData: Record<string, unknown>;\n\tpendingTasks: Promise<unknown>[];\n\tstoreResult: (key: string, task: Promise<unknown>) => void;\n};\n\ntype CacheContext = {\n\tcacheKey: string;\n\tstatusCacheKey: string;\n\tmaxAgeMs: number;\n};\n\nfunction shouldFlattenResult(\n\trawResult: unknown,\n\tisPromise: boolean,\n): { should: boolean; entries?: [string, unknown][] } {\n\tif (\n\t\ttypeof rawResult === 'object' &&\n\t\trawResult !== null &&\n\t\t!Array.isArray(rawResult) &&\n\t\t!isPromise\n\t) {\n\t\tconst entries = Object.entries(rawResult as Record<string, unknown>);\n\t\tconst hasMultipleKeys = entries.length > 1;\n\t\tconst hasPromises = entries.some(([_, v]) => isThenable(v));\n\n\t\tif (hasMultipleKeys || hasPromises) {\n\t\t\treturn { should: true, entries };\n\t\t}\n\t}\n\n\treturn { should: false };\n}\n\nfunction handleCaching(\n\tvalue: unknown,\n\tset: { status: number },\n\tcache: CacheContext,\n\tsetStatus: (val: number) => void,\n) {\n\tconst { cacheKey, statusCacheKey, maxAgeMs } = cache;\n\n\tif (set.status !== 200) {\n\t\tsetStatus(set.status);\n\t}\n\tif (maxAgeMs > 0) {\n\t\tstatusCache.set(statusCacheKey, set.status, maxAgeMs);\n\t}\n\tif (maxAgeMs > 0 && set.status === 200) {\n\t\tssrCache.set(cacheKey, value, maxAgeMs);\n\t}\n}\n\nasync function handleStreamingRouteData(\n\trawResult: unknown,\n\tisPromise: boolean,\n\tpathname: string,\n\tset: { status: number },\n\tctx: StreamingContext,\n\tcache: CacheContext,\n\tsetError: (msg: string) => void,\n\tsetStatus: (val: number) => void,\n): Promise<Record<string, unknown>> {\n\tconst { ssrData, storeResult } = ctx;\n\n\t// Check if this is a plain object with promises (flattening candidate)\n\tconst flattenCheck = shouldFlattenResult(rawResult, isPromise);\n\tif (flattenCheck.should && flattenCheck.entries) {\n\t\treturn handleFlattenedResult(\n\t\t\tflattenCheck.entries,\n\t\t\tset,\n\t\t\tctx,\n\t\t\tcache,\n\t\t\tsetError,\n\t\t\tsetStatus,\n\t\t);\n\t}\n\n\t// Single value, promise, or array - handle normally\n\tconst task = toPromise(rawResult).catch((err) => {\n\t\tconst msg = err instanceof Error ? err.message : String(err);\n\t\tsetError(`SSR data() failed: ${msg}`);\n\t\tconsole.error(`[reroute] SSR data() failed: ${msg}`);\n\t\tthrow err;\n\t});\n\n\t// Store Promise in both ssrData AND globalThis to handle concurrent requests\n\t// The global is what useData reads from during SSR\n\tssrData[pathname] = task;\n\tconst g = globalThis as unknown as Record<string, Record<string, unknown>>;\n\tif (!g.__REROUTE_DATA__) g.__REROUTE_DATA__ = {};\n\tg.__REROUTE_DATA__[pathname] = task;\n\n\tstoreResult(\n\t\tpathname,\n\t\ttask.then((value) => {\n\t\t\thandleCaching(value, set, cache, setStatus);\n\t\t\t// Update BOTH the local ssrData AND the global\n\t\t\tssrData[pathname] = value;\n\t\t\tif (g.__REROUTE_DATA__) {\n\t\t\t\tg.__REROUTE_DATA__[pathname] = value;\n\t\t\t}\n\t\t\treturn value;\n\t\t}),\n\t);\n\n\treturn {};\n}\n\n/**\n * Handle flattened object result where each key streams independently.\n */\nfunction handleFlattenedResult(\n\tentries: [string, unknown][],\n\tset: { status: number },\n\tctx: StreamingContext,\n\tcache: CacheContext,\n\tsetError: (msg: string) => void,\n\tsetStatus: (val: number) => void,\n): Record<string, unknown> {\n\tconst { ssrData, storeResult } = ctx;\n\tconst { cacheKey, statusCacheKey, maxAgeMs } = cache;\n\n\t// Ensure globalThis.__REROUTE_DATA__ exists for useData to read from\n\tconst g = globalThis as unknown as Record<string, Record<string, unknown>>;\n\tif (!g.__REROUTE_DATA__) g.__REROUTE_DATA__ = {};\n\n\tconst promisesToResolve: Promise<[string, unknown]>[] = [];\n\n\tfor (const [key, val] of entries) {\n\t\tif (isThenable(val)) {\n\t\t\tconst wrappedPromise = (val as Promise<unknown>)\n\t\t\t\t.then((resolved) => {\n\t\t\t\t\tif (set.status !== 200) {\n\t\t\t\t\t\tsetStatus(set.status);\n\t\t\t\t\t}\n\t\t\t\t\t// CRITICAL: Update both ssrData and globalThis with resolved value\n\t\t\t\t\t// This allows React's Suspense retry to find the resolved data\n\t\t\t\t\tssrData[key] = resolved;\n\t\t\t\t\tg.__REROUTE_DATA__[key] = resolved;\n\t\t\t\t\treturn resolved;\n\t\t\t\t})\n\t\t\t\t.catch((err) => {\n\t\t\t\t\tconst msg = err instanceof Error ? err.message : String(err);\n\t\t\t\t\tsetError(`SSR data() failed for key ${key}: ${msg}`);\n\t\t\t\t\tconsole.error(`[reroute] SSR data() failed for key ${key}: ${msg}`);\n\t\t\t\t\tthrow err;\n\t\t\t\t});\n\n\t\t\t// Store Promise initially - useData will throw it for Suspense\n\t\t\tssrData[key] = wrappedPromise;\n\t\t\tg.__REROUTE_DATA__[key] = wrappedPromise;\n\t\t\tstoreResult(key, wrappedPromise);\n\t\t\tpromisesToResolve.push(\n\t\t\t\twrappedPromise.then((resolved) => [key, resolved] as [string, unknown]),\n\t\t\t);\n\t\t} else {\n\t\t\tssrData[key] = val;\n\t\t\tg.__REROUTE_DATA__[key] = val;\n\t\t\tpromisesToResolve.push(Promise.resolve([key, val] as [string, unknown]));\n\t\t}\n\t}\n\n\t// Cache when all promises resolve\n\tif (maxAgeMs > 0) {\n\t\tPromise.all(promisesToResolve)\n\t\t\t.then((resolvedEntries) => {\n\t\t\t\tstatusCache.set(statusCacheKey, set.status, maxAgeMs);\n\t\t\t\tif (set.status === 200) {\n\t\t\t\t\tconst resolvedResult: Record<string, unknown> = {};\n\t\t\t\t\tfor (const [key, value] of resolvedEntries) {\n\t\t\t\t\t\tresolvedResult[key] = value;\n\t\t\t\t\t}\n\t\t\t\t\tssrCache.set(cacheKey, resolvedResult, maxAgeMs);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\t// Don't cache on failure\n\t\t\t});\n\t}\n\n\treturn {};\n}\n",
|
|
28
|
-
"import { dynamicImport } from '../imports';\nimport { join } from '../path';\nimport type { ComputeOptions, ComputeResult, Doc } from '../types';\nimport { computeContentData } from './content';\nimport { computeLayoutData, mergeLayoutData } from './layouts';\nimport { computeRouteData } from './routes';\n\
|
|
29
|
+
"import { dynamicImport } from '../imports';\nimport { join } from '../path';\nimport { matchRoutes } from '../route-match';\nimport type { ComputeOptions, ComputeResult, Doc } from '../types';\nimport { computeContentData } from './content';\nimport { computeLayoutData, mergeLayoutData } from './layouts';\nimport { computeRouteData } from './routes';\n\nexport { computeContentData } from './content';\nexport { computeLayoutData, mergeLayoutData } from './layouts';\nexport { computeRouteData } from './routes';\nexport { loadRoutesModule };\n\nfunction createBundledRoutesModule(\n\tbundledRoutes: unknown,\n\tbundledLayouts: unknown,\n): Doc {\n\tconst bundledNotFoundRoutes = (globalThis as Record<string, unknown>)\n\t\t.__REROUTE_NOT_FOUND_ROUTES__;\n\n\treturn {\n\t\troutes: bundledRoutes,\n\t\tlayouts: bundledLayouts,\n\t\tnotFoundRoutes: bundledNotFoundRoutes,\n\t\tmatchRoute: (pathname: string) =>\n\t\t\tmatchRoutes(bundledRoutes as Doc[], pathname),\n\t};\n}\n\nasync function loadRoutesModule(\n\tcwd: string,\n\tisWatchMode: boolean,\n): Promise<Doc | null> {\n\ttry {\n\t\tconst bundledRoutes = (globalThis as Record<string, unknown>)\n\t\t\t.__REROUTE_ROUTES__;\n\t\tconst bundledLayouts = (globalThis as Record<string, unknown>)\n\t\t\t.__REROUTE_LAYOUTS__;\n\n\t\tif (bundledRoutes && bundledLayouts) {\n\t\t\treturn createBundledRoutesModule(bundledRoutes, bundledLayouts);\n\t\t}\n\n\t\tconst routesPath = join(cwd, '.reroute', 'routes.ts');\n\t\treturn await dynamicImport(routesPath, isWatchMode);\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nfunction mergeComputeResult(\n\tresult: {\n\t\tdata: Record<string, unknown>;\n\t\terror?: string;\n\t\tstatusOverride?: number;\n\t\tpendingTasks: Promise<unknown>[];\n\t},\n\tssrData: Record<string, unknown>,\n\tstatusContainer: { value: number | undefined },\n\tallPendingTasks: Promise<unknown>[],\n\tstreaming: boolean,\n): string | undefined {\n\tif (!streaming) {\n\t\tObject.assign(ssrData, result.data);\n\t}\n\tif (result.statusOverride && !statusContainer.value) {\n\t\tstatusContainer.value = result.statusOverride;\n\t}\n\tallPendingTasks.push(...result.pendingTasks);\n\treturn result.error;\n}\n\n/**\n * Compute SSR data by executing ssr.data() from layouts, routes, and content modules.\n * Orchestrates the full data computation pipeline for a request.\n */\nexport async function computeSSRData(\n\tpathname: string,\n\tclientDir: string,\n\tcwd: string,\n\tisWatchMode: boolean,\n\toptions: ComputeOptions = {},\n\tsearchParams?: URLSearchParams,\n): Promise<ComputeResult> {\n\tconst ssrData: Record<string, unknown> = {};\n\tlet error: string | undefined;\n\tconst statusContainer = { value: undefined as number | undefined };\n\tconst allPendingTasks: Promise<unknown>[] = [];\n\tconst streaming = options.streaming === true;\n\n\tconst routesModule = await loadRoutesModule(cwd, isWatchMode);\n\tif (!routesModule) {\n\t\treturn {\n\t\t\tdata: ssrData,\n\t\t\terror: 'Failed to load routes module',\n\t\t\tstatusContainer,\n\t\t};\n\t}\n\n\ttry {\n\t\tconst layoutResult = await computeLayoutData(\n\t\t\tpathname,\n\t\t\tclientDir,\n\t\t\tcwd,\n\t\t\tisWatchMode,\n\t\t\toptions,\n\t\t\tsearchParams,\n\t\t\troutesModule,\n\t\t\tssrData,\n\t\t);\n\t\tmergeComputeResult(\n\t\t\tlayoutResult,\n\t\t\tssrData,\n\t\t\tstatusContainer,\n\t\t\tallPendingTasks,\n\t\t\tstreaming,\n\t\t);\n\t} catch {\n\t\t// Continue with other data sources\n\t}\n\n\ttry {\n\t\tconst contentResult = await computeContentData(\n\t\t\tpathname,\n\t\t\toptions,\n\t\t\tsearchParams,\n\t\t\tssrData,\n\t\t);\n\t\terror = mergeComputeResult(\n\t\t\tcontentResult,\n\t\t\tssrData,\n\t\t\tstatusContainer,\n\t\t\tallPendingTasks,\n\t\t\tstreaming,\n\t\t);\n\t} catch {\n\t\t// Continue with route data\n\t}\n\n\ttry {\n\t\tconst routeResult = await computeRouteData(\n\t\t\tpathname,\n\t\t\tclientDir,\n\t\t\tcwd,\n\t\t\tisWatchMode,\n\t\t\toptions,\n\t\t\tsearchParams,\n\t\t\troutesModule,\n\t\t\tssrData,\n\t\t);\n\t\tconst routeError = mergeComputeResult(\n\t\t\trouteResult,\n\t\t\tssrData,\n\t\t\tstatusContainer,\n\t\t\tallPendingTasks,\n\t\t\tstreaming,\n\t\t);\n\t\tif (routeError) error = routeError;\n\t} catch {\n\t\t// Return what we have\n\t}\n\n\tif (!streaming) {\n\t\tmergeLayoutData(ssrData, pathname);\n\t}\n\n\tconst pending =\n\t\tstreaming && allPendingTasks.length\n\t\t\t? Promise.allSettled(allPendingTasks).then(() => undefined)\n\t\t\t: undefined;\n\n\treturn { data: ssrData, error, pending, statusContainer };\n}\n\n/**\n * Set global SSR data for client hydration\n * MERGES into existing data to support concurrent streaming requests\n */\nexport function setGlobalSSRData(data: Record<string, unknown>): void {\n\ttry {\n\t\tconst g = globalThis as Doc;\n\t\tif (!g.__REROUTE_DATA__) {\n\t\t\tg.__REROUTE_DATA__ = {};\n\t\t}\n\t\t// Merge new data into existing - don't replace to avoid race conditions\n\t\tObject.assign(g.__REROUTE_DATA__, data);\n\t} catch {\n\t\t// Ignore errors in restricted environments\n\t}\n}\n",
|
|
29
30
|
"import { readdir, stat } from 'node:fs/promises';\nimport { dynamicImport } from './imports';\nimport { join } from './path';\nimport type { Doc } from './types';\n\n/**\n * Import a content module for a given pathname like \"/collection/name\".\n * Prefers the latest built chunk in .reroute, falls back to source TS/TSX.\n */\nexport async function importContentModuleForPath(\n\tpathname: string,\n\tclientDir: string,\n\tcwd: string,\n\tisWatchMode: boolean,\n): Promise<Doc | null> {\n\ttry {\n\t\t// Strip query params and hash\n\t\tconst pathOnly = pathname.split('?')[0].split('#')[0];\n\t\tconst parts = pathOnly.split('/').filter(Boolean);\n\t\tif (parts.length < 2) return null;\n\n\t\tconst collection = parts[0];\n\t\tconst name = parts[1];\n\n\t\t// 1) Try registry mapping for exact chunk path\n\t\tconst registryModule = await tryRegistryImport(\n\t\t\tcollection,\n\t\t\tname,\n\t\t\tcwd,\n\t\t\tisWatchMode,\n\t\t);\n\t\tif (registryModule) return registryModule;\n\n\t\t// 2) Try latest prebuilt chunk from .reroute\n\t\tconst chunkModule = await tryChunkImport(\n\t\t\tcollection,\n\t\t\tname,\n\t\t\tcwd,\n\t\t\tisWatchMode,\n\t\t);\n\t\tif (chunkModule) return chunkModule;\n\n\t\t// 3) Fallback to source files\n\t\tconst sourceModule = await trySourceImport(\n\t\t\tcollection,\n\t\t\tname,\n\t\t\tclientDir,\n\t\t\tisWatchMode,\n\t\t);\n\t\tif (sourceModule) return sourceModule;\n\t} catch {\n\t\t// Return null on any error\n\t}\n\n\treturn null;\n}\n\nasync function tryRegistryImport(\n\tcollection: string,\n\tname: string,\n\tcwd: string,\n\tisWatchMode: boolean,\n): Promise<Doc | null> {\n\ttry {\n\t\tconst registryPath = join(cwd, '.reroute', 'content.ts');\n\t\tconst reg = await dynamicImport(registryPath, isWatchMode);\n\n\t\tconst get = reg?.getContentEntry as\n\t\t\t| ((c: string, n: string) => { module?: string } | undefined)\n\t\t\t| undefined;\n\t\tconst entry = typeof get === 'function' ? get(collection, name) : undefined;\n\t\tconst moduleUrl = (entry as Doc)?.module as string | undefined;\n\n\t\tif (!moduleUrl?.endsWith('.js')) return null;\n\n\t\tconst raw = moduleUrl.split('?')[0] || '';\n\t\tconst normalized = raw.replace(/^\\/+/, '');\n\n\t\tconst candidates: string[] = [];\n\t\tif (normalized) {\n\t\t\tcandidates.push(join(cwd, normalized));\n\t\t\tif (!normalized.startsWith('.reroute/')) {\n\t\t\t\tcandidates.push(join(cwd, '.reroute', normalized));\n\t\t\t}\n\t\t}\n\n\t\tfor (const abs of candidates) {\n\t\t\ttry {\n\t\t\t\tif (!(await Bun.file(abs).exists())) continue;\n\t\t\t\treturn await dynamicImport(abs, isWatchMode);\n\t\t\t} catch {\n\t\t\t\t// Try next candidate\n\t\t\t}\n\t\t}\n\t} catch {\n\t\t// Registry unavailable\n\t}\n\n\treturn null;\n}\n\nasync function tryChunkImport(\n\tcollection: string,\n\tname: string,\n\tcwd: string,\n\tisWatchMode: boolean,\n): Promise<Doc | null> {\n\ttry {\n\t\tconst chunkDir = join(cwd, '.reroute', 'chunks', collection);\n\t\tconst files = await readdir(chunkDir);\n\t\tconst matches = files.filter(\n\t\t\t(n) => n.startsWith(`${name}.`) && n.endsWith('.js'),\n\t\t);\n\n\t\tif (!matches.length) return null;\n\n\t\t// Find latest by modification time\n\t\tlet latest = matches[0];\n\t\tlet latestM = 0;\n\t\tfor (const f of matches) {\n\t\t\ttry {\n\t\t\t\tconst s = await stat(join(chunkDir, f));\n\t\t\t\tif (s.mtimeMs >= latestM) {\n\t\t\t\t\tlatestM = s.mtimeMs;\n\t\t\t\t\tlatest = f;\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t// Skip inaccessible files\n\t\t\t}\n\t\t}\n\n\t\tconst absChunk = join(chunkDir, latest);\n\t\treturn await dynamicImport(absChunk, isWatchMode);\n\t} catch {\n\t\t// Chunk directory doesn't exist\n\t}\n\n\treturn null;\n}\n\nasync function trySourceImport(\n\tcollection: string,\n\tname: string,\n\tclientDir: string,\n\tisWatchMode: boolean,\n): Promise<Doc | null> {\n\ttry {\n\t\tconst srcTsx = join(\n\t\t\tclientDir,\n\t\t\t'routes',\n\t\t\tcollection,\n\t\t\t'content',\n\t\t\t`${name}.tsx`,\n\t\t);\n\t\tconst srcTs = join(\n\t\t\tclientDir,\n\t\t\t'routes',\n\t\t\tcollection,\n\t\t\t'content',\n\t\t\t`${name}.ts`,\n\t\t);\n\n\t\tlet absSrc: string | null = null;\n\t\tif (await Bun.file(srcTsx).exists()) {\n\t\t\tabsSrc = srcTsx;\n\t\t} else if (await Bun.file(srcTs).exists()) {\n\t\t\tabsSrc = srcTs;\n\t\t}\n\n\t\tif (absSrc) {\n\t\t\treturn await dynamicImport(absSrc, isWatchMode);\n\t\t}\n\t} catch {\n\t\t// Source files don't exist\n\t}\n\n\treturn null;\n}\n",
|
|
30
31
|
"import { importContentModuleForPath } from './modules';\nimport type { Doc } from './types';\n\n// LRU cache for SSR modules to prevent unbounded memory growth\n// Max 200 modules (each ~3-5MB) = ~1GB max instead of infinite growth\nconst MAX_SSR_MODULES = 200;\nconst moduleAccessOrder: string[] = [];\n\n/**\n * Evict least recently used modules when cache is full\n */\nfunction evictLRUModule(): void {\n\tif (moduleAccessOrder.length === 0) return;\n\n\tconst keyToEvict = moduleAccessOrder.shift(); // Remove oldest\n\tif (!keyToEvict) return;\n\n\tconst g = globalThis as Doc;\n\tif (g.__REROUTE_SSR_MODULES__) {\n\t\tdelete g.__REROUTE_SSR_MODULES__[keyToEvict];\n\t}\n\tif (g.__REROUTE_SSR_EXPORTS__) {\n\t\tdelete g.__REROUTE_SSR_EXPORTS__[keyToEvict];\n\t}\n}\n\n/**\n * Mark module as recently used (move to end of LRU queue)\n */\nfunction touchModule(key: string): void {\n\t// Remove from current position\n\tconst index = moduleAccessOrder.indexOf(key);\n\tif (index > -1) {\n\t\tmoduleAccessOrder.splice(index, 1);\n\t}\n\t// Add to end (most recently used)\n\tmoduleAccessOrder.push(key);\n\n\t// Evict if over limit\n\twhile (moduleAccessOrder.length > MAX_SSR_MODULES) {\n\t\tevictLRUModule();\n\t}\n}\n\n/**\n * Seed SSR module store for a content path.\n * Makes the content module available for server-side rendering.\n * Uses LRU eviction to prevent unbounded memory growth.\n */\nexport async function seedSSRModuleForPath(\n\tpathname: string,\n\tclientDir: string,\n\tcwd: string,\n\tisWatchMode: boolean,\n): Promise<void> {\n\ttry {\n\t\tconst pathOnly = pathname.split('?')[0].split('#')[0];\n\t\tconst parts = pathOnly.split('/').filter(Boolean);\n\n\t\tif (parts.length < 2) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst collection = parts[0];\n\t\tconst name = parts[1];\n\t\tconst key = `${collection}:${name}`;\n\n\t\tconst mod = await importContentModuleForPath(\n\t\t\tpathname,\n\t\t\tclientDir,\n\t\t\tcwd,\n\t\t\tisWatchMode,\n\t\t);\n\n\t\tif (!mod) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Store full module for hooks like useToc\n\t\t(globalThis as Doc).__REROUTE_SSR_MODULES__ =\n\t\t\t(globalThis as Doc).__REROUTE_SSR_MODULES__ || {};\n\t\t(globalThis as Doc).__REROUTE_SSR_MODULES__[key] = mod;\n\n\t\t// Capture exports for head injection\n\t\ttry {\n\t\t\t(globalThis as Doc).__REROUTE_SSR_EXPORTS__ =\n\t\t\t\t(globalThis as Doc).__REROUTE_SSR_EXPORTS__ || {};\n\t\t\t(globalThis as Doc).__REROUTE_SSR_EXPORTS__[key] = {\n\t\t\t\tmeta: (mod as Doc).meta || {},\n\t\t\t\tssr: (mod as Doc).ssr || {},\n\t\t\t\ttoc: (mod as Doc).toc || [],\n\t\t\t};\n\t\t} catch {\n\t\t\t// Ignore export capture errors\n\t\t}\n\n\t\t// Mark as recently used for LRU eviction\n\t\ttouchModule(key);\n\t} catch {\n\t\t// Ignore seeding errors\n\t}\n}\n",
|
|
31
|
-
"import { dynamicImport } from './imports';\nimport { getMatchingLayouts } from './layouts';\nimport { join } from './path';\nimport { seedSSRModuleForPath } from './seed';\nimport type { ComputeParams, Doc, SSR } from './types';\n\n/**\n * Match a route pattern against a pathname\n * Used in compiled binary mode when matchRoute isn't available\n */\nfunction matchPattern(\n\tpattern: string,\n\tpathname: string,\n): Record<string, string> | null {\n\tconst patternParts = pattern.split('/').filter(Boolean);\n\tconst pathnameParts = pathname.split('/').filter(Boolean);\n\n\tif (patternParts.length !== pathnameParts.length) {\n\t\treturn null;\n\t}\n\n\tconst params: Record<string, string> = {};\n\n\tfor (let i = 0; i < patternParts.length; i++) {\n\t\tconst patternPart = patternParts[i];\n\t\tconst pathnamePart = pathnameParts[i];\n\n\t\tif (patternPart.startsWith(':')) {\n\t\t\tparams[patternPart.slice(1)] = pathnamePart;\n\t\t} else if (patternPart !== pathnamePart) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\treturn params;\n}\n\n/**\n * Compute SSR data for client-side navigation.\n * Returns lazy markers for promises to support progressive loading.\n */\nfunction loadContentData(\n\tpathname: string,\n\tsearchParams?: URLSearchParams,\n): { key: string; data: unknown } | null {\n\ttry {\n\t\tconst parts = pathname.split('/').filter(Boolean);\n\t\tif (parts.length < 2) return null;\n\n\t\tconst key = `${parts[0]}:${parts[1]}`;\n\t\tconst g = globalThis as Doc;\n\t\tconst exp = g.__REROUTE_SSR_EXPORTS__?.[key];\n\t\tconst dataFn = (exp as Doc)?.ssr?.data as SSR['data'] | undefined;\n\n\t\tif (typeof dataFn === 'function') {\n\t\t\tconst rawResult = dataFn({\n\t\t\t\tpathname,\n\t\t\t\tparams: { name: parts[1] },\n\t\t\t\tsearchParams,\n\t\t\t\t// Note: headers are not available in client-side navigation\n\t\t\t});\n\n\t\t\tconst result = processDataResult(rawResult, pathname, pathname);\n\t\t\treturn { key: pathname, data: result };\n\t\t}\n\t} catch {\n\t\t// Content data unavailable\n\t}\n\n\treturn null;\n}\n\nfunction loadMatchedRouteData(\n\tpathname: string,\n\tclientDir: string,\n\tcwd: string,\n\tisWatchMode: boolean,\n\tsearchParams?: URLSearchParams,\n): Promise<{ key: string; data: unknown } | null> {\n\treturn loadRouteDataInternal(\n\t\tpathname,\n\t\tclientDir,\n\t\tcwd,\n\t\tisWatchMode,\n\t\tsearchParams,\n\t);\n}\n\nasync function loadRouteDataInternal(\n\tpathname: string,\n\tclientDir: string,\n\tcwd: string,\n\tisWatchMode: boolean,\n\tsearchParams?: URLSearchParams,\n): Promise<{ key: string; data: unknown } | null> {\n\ttry {\n\t\t// Check for bundled routes first (compiled binary support)\n\t\tlet routes = (globalThis as Record<string, unknown>).__REROUTE_ROUTES__ as\n\t\t\t| Doc[]\n\t\t\t| undefined;\n\t\tlet matchRouteFn: ((pathname: string) => Doc | null) | undefined;\n\n\t\t// Fallback to dynamic import (dev mode)\n\t\tif (!routes) {\n\t\t\tconst routesPath = join(cwd, '.reroute', 'routes.ts');\n\t\t\tconst m = await dynamicImport(routesPath, isWatchMode);\n\t\t\troutes = m?.routes as Doc[] | undefined;\n\t\t\tmatchRouteFn = (m as Doc)?.matchRoute as\n\t\t\t\t| ((pathname: string) => Doc | null)\n\t\t\t\t| undefined;\n\t\t} else {\n\t\t\t// In bundled mode, we need to match manually\n\t\t\tmatchRouteFn = (pathname: string) => {\n\t\t\t\tfor (const route of routes || []) {\n\t\t\t\t\tconst pattern = String(route?.pattern || '');\n\t\t\t\t\tconst match = matchPattern(pattern, pathname);\n\t\t\t\t\tif (match) {\n\t\t\t\t\t\treturn { route, params: match };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t};\n\t\t}\n\n\t\tconst pathnameOnly = pathname.split('?')[0];\n\t\tconst match =\n\t\t\ttypeof matchRouteFn === 'function' ? matchRouteFn(pathnameOnly) : null;\n\n\t\tconst r = (match as Doc | null)?.route;\n\t\tconst paramsValue = ((match as Doc | null)?.params || {}) as Record<\n\t\t\tstring,\n\t\t\tstring\n\t\t>;\n\n\t\tif (r && typeof (r as Doc).path === 'string') {\n\t\t\t// Try to use bundled ssr export first (compiled binary)\n\t\t\tlet ssrExport = (r as Doc)?.ssr as Doc | undefined;\n\n\t\t\t// Fallback to dynamic import if not bundled (dev mode)\n\t\t\tif (!ssrExport) {\n\t\t\t\t// In dev mode, routes might be from .reroute/routes.ts which imports from streaming wrappers\n\t\t\t\t// The streaming wrapper re-exports ssr, so we should try loading from there first\n\t\t\t\tconst routePath = String((r as Doc).path);\n\t\t\t\tlet abs = join(cwd, '.reroute', 'streaming', routePath);\n\n\t\t\t\tlet mod = await dynamicImport(abs, isWatchMode).catch(() => null);\n\n\t\t\t\t// If streaming wrapper doesn't exist or fails, load from source\n\t\t\t\tif (!mod) {\n\t\t\t\t\tabs = join(clientDir, 'routes', routePath);\n\t\t\t\t\tmod = await dynamicImport(abs, isWatchMode);\n\t\t\t\t}\n\n\t\t\t\tssrExport = (mod as Doc)?.ssr as SSR | undefined;\n\t\t\t}\n\n\t\t\tconst dataFn = ssrExport?.data;\n\n\t\t\tif (typeof dataFn === 'function') {\n\t\t\t\tconst rawResult = dataFn({\n\t\t\t\t\tpathname,\n\t\t\t\t\tparams: paramsValue,\n\t\t\t\t\tsearchParams,\n\t\t\t\t\t// Note: headers are not available in client-side navigation\n\t\t\t\t});\n\n\t\t\t\tconst data = processDataResult(rawResult, pathname, pathname);\n\t\t\t\treturn { key: pathname, data };\n\t\t\t}\n\t\t}\n\t} catch {\n\t\t// Route data unavailable\n\t}\n\n\treturn null;\n}\n\nfunction determineReturnStructure(allData: Record<string, unknown>): unknown {\n\tconst dataKeys = Object.keys(allData);\n\n\tif (dataKeys.length > 1) {\n\t\treturn { __reroute_multiple__: true, ...allData };\n\t}\n\n\tif (dataKeys.length === 1) {\n\t\tconst singleKey = dataKeys[0];\n\t\t// Keep layout key structure for proper client-side handling\n\t\tif (singleKey.startsWith('__layout:')) {\n\t\t\treturn allData;\n\t\t}\n\t\treturn allData[singleKey];\n\t}\n\n\treturn null;\n}\n\nexport async function computeSSRDataForPath(\n\tparams: ComputeParams,\n): Promise<unknown> {\n\tconst { pathname, clientDir, cwd, isWatchMode, searchParams } = params;\n\n\t// Seed content modules for potential content pages\n\ttry {\n\t\tawait seedSSRModuleForPath(pathname, clientDir, cwd, isWatchMode);\n\t} catch {\n\t\t// Continue without seeding\n\t}\n\n\t// 1) Layout data\n\tconst allData = await loadLayoutData(\n\t\tpathname,\n\t\tclientDir,\n\t\tcwd,\n\t\tisWatchMode,\n\t\tsearchParams,\n\t);\n\n\t// 2) Content-level data\n\tconst contentResult = loadContentData(pathname, searchParams);\n\tif (contentResult) {\n\t\t// For content pages, return directly if it's the only data\n\t\tif (Object.keys(allData).length === 0) {\n\t\t\treturn contentResult.data;\n\t\t}\n\t\tallData[contentResult.key] = contentResult.data;\n\t}\n\n\t// 3) Route-level data\n\tconst routeResult = await loadMatchedRouteData(\n\t\tpathname,\n\t\tclientDir,\n\t\tcwd,\n\t\tisWatchMode,\n\t\tsearchParams,\n\t);\n\tif (routeResult) {\n\t\tallData[routeResult.key] = routeResult.data;\n\t}\n\n\treturn determineReturnStructure(allData);\n}\n\nfunction processLayoutDataResult(\n\trawResult: unknown,\n\tpathname: string,\n\tlayoutKey: string,\n): unknown {\n\tif (rawResult instanceof Promise) {\n\t\treturn createLazyMarker(pathname, layoutKey);\n\t}\n\n\tif (\n\t\ttypeof rawResult === 'object' &&\n\t\trawResult !== null &&\n\t\t!Array.isArray(rawResult)\n\t) {\n\t\tconst entries = Object.entries(rawResult as Record<string, unknown>);\n\t\tconst hasPromises = entries.some(([_, v]) => v instanceof Promise);\n\n\t\tif (hasPromises) {\n\t\t\tconst flattened: Record<string, unknown> = { __flatten__: true };\n\t\t\tfor (const [k, value] of entries) {\n\t\t\t\tif (value instanceof Promise) {\n\t\t\t\t\tflattened[k] = createLazyMarker(pathname, k);\n\t\t\t\t} else {\n\t\t\t\t\tflattened[k] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn flattened;\n\t\t}\n\t}\n\n\treturn rawResult;\n}\n\nasync function processLayout(\n\tlayout: Doc,\n\tpathname: string,\n\tclientDir: string,\n\tisWatchMode: boolean,\n\tsearchParams?: URLSearchParams,\n): Promise<{ key: string; data: unknown } | null> {\n\tif (typeof layout?.path !== 'string') return null;\n\n\ttry {\n\t\t// Try to use bundled ssr export first (compiled binary)\n\t\tlet ssrExport = (layout as Doc)?.ssr as SSR | undefined;\n\n\t\t// Fallback to dynamic import if not bundled (dev mode)\n\t\tif (!ssrExport) {\n\t\t\tconst abs = join(clientDir, 'routes', String(layout.path));\n\t\t\tconst mod = await dynamicImport(abs, isWatchMode);\n\t\t\tssrExport = (mod as Doc)?.ssr as SSR | undefined;\n\t\t}\n\n\t\tconst dataFn = ssrExport?.data;\n\n\t\tif (typeof dataFn !== 'function') return null;\n\n\t\tconst pattern = String(layout.pattern || '/');\n\t\tconst layoutKey = `__layout:${pattern}`;\n\t\tconst rawResult = dataFn({\n\t\t\tpathname,\n\t\t\tparams: {},\n\t\t\tsearchParams,\n\t\t\t// Note: headers are not available in client-side navigation\n\t\t});\n\n\t\tconst processedData = processLayoutDataResult(\n\t\t\trawResult,\n\t\t\tpathname,\n\t\t\tlayoutKey,\n\t\t);\n\t\treturn { key: layoutKey, data: processedData };\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nasync function loadLayoutData(\n\tpathname: string,\n\tclientDir: string,\n\tcwd: string,\n\tisWatchMode: boolean,\n\tsearchParams?: URLSearchParams,\n): Promise<Record<string, unknown>> {\n\tconst allData: Record<string, unknown> = {};\n\n\ttry {\n\t\t// Check for bundled layouts first (compiled binary support)\n\t\tlet layouts = (globalThis as Record<string, unknown>).__REROUTE_LAYOUTS__ as\n\t\t\t| Doc[]\n\t\t\t| undefined;\n\n\t\t// Fallback to dynamic import (dev mode)\n\t\tif (!layouts) {\n\t\t\tconst routesPath = join(cwd, '.reroute', 'routes.ts');\n\t\t\tconst m = await dynamicImport(routesPath, isWatchMode);\n\t\t\tlayouts = m?.layouts as Doc[] | undefined;\n\t\t}\n\n\t\tconst matchingLayouts = getMatchingLayouts(pathname, layouts);\n\n\t\tfor (const layout of matchingLayouts) {\n\t\t\tconst result = await processLayout(\n\t\t\t\tlayout,\n\t\t\t\tpathname,\n\t\t\t\tclientDir,\n\t\t\t\tisWatchMode,\n\t\t\t\tsearchParams,\n\t\t\t);\n\n\t\t\tif (result) {\n\t\t\t\tallData[result.key] = result.data;\n\t\t\t}\n\t\t}\n\t} catch {\n\t\t// Routes unavailable\n\t}\n\n\treturn allData;\n}\n\nfunction processDataResult(\n\trawResult: unknown,\n\tpathname: string,\n\tkey: string,\n): unknown {\n\treturn processLayoutDataResult(rawResult, pathname, key);\n}\n\nfunction createLazyMarker(pathname: string, key: string): unknown {\n\treturn {\n\t\t__lazy__: true,\n\t\t__fetch__: `/__reroute_data?path=${encodeURIComponent(pathname)}&key=${encodeURIComponent(key)}`,\n\t};\n}\n",
|
|
32
|
+
"import { dynamicImport } from './imports';\nimport { getMatchingLayouts } from './layouts';\nimport { join } from './path';\nimport { matchRoutes } from './route-match';\nimport { seedSSRModuleForPath } from './seed';\nimport type { ComputeParams, Doc, SSR } from './types';\n\n/**\n * Compute SSR data for client-side navigation.\n * Returns lazy markers for promises to support progressive loading.\n */\nfunction loadContentData(\n\tpathname: string,\n\tsearchParams?: URLSearchParams,\n): { key: string; data: unknown } | null {\n\ttry {\n\t\tconst parts = pathname.split('/').filter(Boolean);\n\t\tif (parts.length < 2) return null;\n\n\t\tconst key = `${parts[0]}:${parts[1]}`;\n\t\tconst g = globalThis as Doc;\n\t\tconst exp = g.__REROUTE_SSR_EXPORTS__?.[key];\n\t\tconst dataFn = (exp as Doc)?.ssr?.data as SSR['data'] | undefined;\n\n\t\tif (typeof dataFn === 'function') {\n\t\t\tconst rawResult = dataFn({\n\t\t\t\tpathname,\n\t\t\t\tparams: { name: parts[1] },\n\t\t\t\tsearchParams,\n\t\t\t\t// Note: headers are not available in client-side navigation\n\t\t\t});\n\n\t\t\tconst result = processDataResult(rawResult, pathname, pathname);\n\t\t\treturn { key: pathname, data: result };\n\t\t}\n\t} catch {\n\t\t// Content data unavailable\n\t}\n\n\treturn null;\n}\n\nfunction loadMatchedRouteData(\n\tpathname: string,\n\tclientDir: string,\n\tcwd: string,\n\tisWatchMode: boolean,\n\tsearchParams?: URLSearchParams,\n): Promise<{ key: string; data: unknown } | null> {\n\treturn loadRouteDataInternal(\n\t\tpathname,\n\t\tclientDir,\n\t\tcwd,\n\t\tisWatchMode,\n\t\tsearchParams,\n\t);\n}\n\nasync function loadRouteDataInternal(\n\tpathname: string,\n\tclientDir: string,\n\tcwd: string,\n\tisWatchMode: boolean,\n\tsearchParams?: URLSearchParams,\n): Promise<{ key: string; data: unknown } | null> {\n\ttry {\n\t\t// Check for bundled routes first (compiled binary support)\n\t\tlet routes = (globalThis as Record<string, unknown>).__REROUTE_ROUTES__ as\n\t\t\t| Doc[]\n\t\t\t| undefined;\n\t\tlet matchRouteFn: ((pathname: string) => Doc | null) | undefined;\n\n\t\t// Fallback to dynamic import (dev mode)\n\t\tif (!routes) {\n\t\t\tconst routesPath = join(cwd, '.reroute', 'routes.ts');\n\t\t\tconst m = await dynamicImport(routesPath, isWatchMode);\n\t\t\troutes = m?.routes as Doc[] | undefined;\n\t\t\tmatchRouteFn = (m as Doc)?.matchRoute as\n\t\t\t\t| ((pathname: string) => Doc | null)\n\t\t\t\t| undefined;\n\t\t} else {\n\t\t\t// In bundled mode, we need to match manually\n\t\t\tmatchRouteFn = (pathname: string) =>\n\t\t\t\tmatchRoutes((routes || []) as Doc[], pathname);\n\t\t}\n\n\t\tconst pathnameOnly = pathname.split('?')[0];\n\t\tconst match =\n\t\t\ttypeof matchRouteFn === 'function' ? matchRouteFn(pathnameOnly) : null;\n\n\t\tconst r = (match as Doc | null)?.route;\n\t\tconst paramsValue = ((match as Doc | null)?.params || {}) as Record<\n\t\t\tstring,\n\t\t\tstring\n\t\t>;\n\n\t\tif (r && typeof (r as Doc).path === 'string') {\n\t\t\t// Try to use bundled ssr export first (compiled binary)\n\t\t\tlet ssrExport = (r as Doc)?.ssr as Doc | undefined;\n\n\t\t\t// Fallback to dynamic import if not bundled (dev mode)\n\t\t\tif (!ssrExport) {\n\t\t\t\t// In dev mode, routes might be from .reroute/routes.ts which imports from streaming wrappers\n\t\t\t\t// The streaming wrapper re-exports ssr, so we should try loading from there first\n\t\t\t\tconst routePath = String((r as Doc).path);\n\t\t\t\tlet abs = join(cwd, '.reroute', 'streaming', routePath);\n\n\t\t\t\tlet mod = await dynamicImport(abs, isWatchMode).catch(() => null);\n\n\t\t\t\t// If streaming wrapper doesn't exist or fails, load from source\n\t\t\t\tif (!mod) {\n\t\t\t\t\tabs = join(clientDir, 'routes', routePath);\n\t\t\t\t\tmod = await dynamicImport(abs, isWatchMode);\n\t\t\t\t}\n\n\t\t\t\tssrExport = (mod as Doc)?.ssr as SSR | undefined;\n\t\t\t}\n\n\t\t\tconst dataFn = ssrExport?.data;\n\n\t\t\tif (typeof dataFn === 'function') {\n\t\t\t\tconst rawResult = dataFn({\n\t\t\t\t\tpathname,\n\t\t\t\t\tparams: paramsValue,\n\t\t\t\t\tsearchParams,\n\t\t\t\t\t// Note: headers are not available in client-side navigation\n\t\t\t\t});\n\n\t\t\t\tconst data = processDataResult(rawResult, pathname, pathname);\n\t\t\t\treturn { key: pathname, data };\n\t\t\t}\n\t\t}\n\t} catch {\n\t\t// Route data unavailable\n\t}\n\n\treturn null;\n}\n\nfunction determineReturnStructure(allData: Record<string, unknown>): unknown {\n\tconst dataKeys = Object.keys(allData);\n\n\tif (dataKeys.length > 1) {\n\t\treturn { __reroute_multiple__: true, ...allData };\n\t}\n\n\tif (dataKeys.length === 1) {\n\t\tconst singleKey = dataKeys[0];\n\t\t// Keep layout key structure for proper client-side handling\n\t\tif (singleKey.startsWith('__layout:')) {\n\t\t\treturn allData;\n\t\t}\n\t\treturn allData[singleKey];\n\t}\n\n\treturn null;\n}\n\nexport async function computeSSRDataForPath(\n\tparams: ComputeParams,\n): Promise<unknown> {\n\tconst { pathname, clientDir, cwd, isWatchMode, searchParams } = params;\n\n\t// Seed content modules for potential content pages\n\ttry {\n\t\tawait seedSSRModuleForPath(pathname, clientDir, cwd, isWatchMode);\n\t} catch {\n\t\t// Continue without seeding\n\t}\n\n\t// 1) Layout data\n\tconst allData = await loadLayoutData(\n\t\tpathname,\n\t\tclientDir,\n\t\tcwd,\n\t\tisWatchMode,\n\t\tsearchParams,\n\t);\n\n\t// 2) Content-level data\n\tconst contentResult = loadContentData(pathname, searchParams);\n\tif (contentResult) {\n\t\t// For content pages, return directly if it's the only data\n\t\tif (Object.keys(allData).length === 0) {\n\t\t\treturn contentResult.data;\n\t\t}\n\t\tallData[contentResult.key] = contentResult.data;\n\t}\n\n\t// 3) Route-level data\n\tconst routeResult = await loadMatchedRouteData(\n\t\tpathname,\n\t\tclientDir,\n\t\tcwd,\n\t\tisWatchMode,\n\t\tsearchParams,\n\t);\n\tif (routeResult) {\n\t\tallData[routeResult.key] = routeResult.data;\n\t}\n\n\treturn determineReturnStructure(allData);\n}\n\nfunction processLayoutDataResult(\n\trawResult: unknown,\n\tpathname: string,\n\tlayoutKey: string,\n): unknown {\n\tif (rawResult instanceof Promise) {\n\t\treturn createLazyMarker(pathname, layoutKey);\n\t}\n\n\tif (\n\t\ttypeof rawResult === 'object' &&\n\t\trawResult !== null &&\n\t\t!Array.isArray(rawResult)\n\t) {\n\t\tconst entries = Object.entries(rawResult as Record<string, unknown>);\n\t\tconst hasPromises = entries.some(([_, v]) => v instanceof Promise);\n\n\t\tif (hasPromises) {\n\t\t\tconst flattened: Record<string, unknown> = { __flatten__: true };\n\t\t\tfor (const [k, value] of entries) {\n\t\t\t\tif (value instanceof Promise) {\n\t\t\t\t\tflattened[k] = createLazyMarker(pathname, k);\n\t\t\t\t} else {\n\t\t\t\t\tflattened[k] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn flattened;\n\t\t}\n\t}\n\n\treturn rawResult;\n}\n\nasync function processLayout(\n\tlayout: Doc,\n\tpathname: string,\n\tclientDir: string,\n\tisWatchMode: boolean,\n\tsearchParams?: URLSearchParams,\n): Promise<{ key: string; data: unknown } | null> {\n\tif (typeof layout?.path !== 'string') return null;\n\n\ttry {\n\t\t// Try to use bundled ssr export first (compiled binary)\n\t\tlet ssrExport = (layout as Doc)?.ssr as SSR | undefined;\n\n\t\t// Fallback to dynamic import if not bundled (dev mode)\n\t\tif (!ssrExport) {\n\t\t\tconst abs = join(clientDir, 'routes', String(layout.path));\n\t\t\tconst mod = await dynamicImport(abs, isWatchMode);\n\t\t\tssrExport = (mod as Doc)?.ssr as SSR | undefined;\n\t\t}\n\n\t\tconst dataFn = ssrExport?.data;\n\n\t\tif (typeof dataFn !== 'function') return null;\n\n\t\tconst pattern = String(layout.pattern || '/');\n\t\tconst layoutKey = `__layout:${pattern}`;\n\t\tconst rawResult = dataFn({\n\t\t\tpathname,\n\t\t\tparams: {},\n\t\t\tsearchParams,\n\t\t\t// Note: headers are not available in client-side navigation\n\t\t});\n\n\t\tconst processedData = processLayoutDataResult(\n\t\t\trawResult,\n\t\t\tpathname,\n\t\t\tlayoutKey,\n\t\t);\n\t\treturn { key: layoutKey, data: processedData };\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nasync function loadLayoutData(\n\tpathname: string,\n\tclientDir: string,\n\tcwd: string,\n\tisWatchMode: boolean,\n\tsearchParams?: URLSearchParams,\n): Promise<Record<string, unknown>> {\n\tconst allData: Record<string, unknown> = {};\n\n\ttry {\n\t\t// Check for bundled layouts first (compiled binary support)\n\t\tlet layouts = (globalThis as Record<string, unknown>).__REROUTE_LAYOUTS__ as\n\t\t\t| Doc[]\n\t\t\t| undefined;\n\n\t\t// Fallback to dynamic import (dev mode)\n\t\tif (!layouts) {\n\t\t\tconst routesPath = join(cwd, '.reroute', 'routes.ts');\n\t\t\tconst m = await dynamicImport(routesPath, isWatchMode);\n\t\t\tlayouts = m?.layouts as Doc[] | undefined;\n\t\t}\n\n\t\tconst matchingLayouts = getMatchingLayouts(pathname, layouts);\n\n\t\tfor (const layout of matchingLayouts) {\n\t\t\tconst result = await processLayout(\n\t\t\t\tlayout,\n\t\t\t\tpathname,\n\t\t\t\tclientDir,\n\t\t\t\tisWatchMode,\n\t\t\t\tsearchParams,\n\t\t\t);\n\n\t\t\tif (result) {\n\t\t\t\tallData[result.key] = result.data;\n\t\t\t}\n\t\t}\n\t} catch {\n\t\t// Routes unavailable\n\t}\n\n\treturn allData;\n}\n\nfunction processDataResult(\n\trawResult: unknown,\n\tpathname: string,\n\tkey: string,\n): unknown {\n\treturn processLayoutDataResult(rawResult, pathname, key);\n}\n\nfunction createLazyMarker(pathname: string, key: string): unknown {\n\treturn {\n\t\t__lazy__: true,\n\t\t__fetch__: `/__reroute_data?path=${encodeURIComponent(pathname)}&key=${encodeURIComponent(key)}`,\n\t};\n}\n",
|
|
32
33
|
"import { join } from './path';\nimport type { TemplateContext } from './types';\n\n/**\n * Load the index.html template from the client directory\n */\nexport async function loadIndexHtml(clientDir: string): Promise<string> {\n\t// Check for bundled template first (compiled binary support)\n\tconst bundledTemplate = (globalThis as Record<string, unknown>)\n\t\t.__REROUTE_HTML_TEMPLATE__ as string | undefined;\n\tif (bundledTemplate) {\n\t\treturn bundledTemplate;\n\t}\n\n\t// Fallback to filesystem read (dev mode)\n\tconst templatePath = join(clientDir, 'index.html');\n\ttry {\n\t\tconst content = await Bun.file(templatePath).text();\n\t\treturn content;\n\t} catch {\n\t\t// Minimal fallback template\n\t\treturn `<!doctype html>\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>Reroute</title>\n </head>\n <body>\n <div id=\"root\"></div>\n </body>\n</html>`;\n\t}\n}\n\n/**\n * Apply SSR content to the HTML template\n */\nexport function applyIndexTemplate(\n\ttemplateHtml: string,\n\tappHtml: string,\n\t{\n\t\thead = '',\n\t\thydrationScript = '',\n\t\tlang = 'en',\n\t\tappId = 'root',\n\t}: TemplateContext,\n): string {\n\tlet html = templateHtml;\n\n\t// Ensure <html> has correct lang attribute\n\thtml = html.replace(/<html([^>]*)>/i, (_m, attrs: string) => {\n\t\tconst hasLang = /(^|\\s)lang\\s*=/.test(attrs);\n\t\tconst newAttrs = hasLang\n\t\t\t? attrs.replace(/lang\\s*=\\s*(\"[^\"]*\"|'[^']*'|[^\\s>]+)/i, `lang=\"${lang}\"`)\n\t\t\t: `${attrs} lang=\"${lang}\"`;\n\t\treturn `<html${newAttrs}>`;\n\t});\n\n\t// Handle head injection with deduplication\n\tconst headToInject = head || '';\n\tconst { cleanedTemplate, cleanedHead } = deduplicateHeadContent(\n\t\thtml,\n\t\theadToInject,\n\t);\n\thtml = cleanedTemplate;\n\n\tif (cleanedHead) {\n\t\thtml = html.replace(/<\\/head>/i, `${cleanedHead}\\n\\t</head>`);\n\t}\n\n\t// Remove TS/TSX script tags to avoid double-loading\n\thtml = html.replace(\n\t\t/<script\\b[^>]*src\\s*=\\s*[\"'][^\"']+\\.(ts|tsx)(?:[?#][^\"']*)?[\"'][^>]*>\\s*<\\/script>/gi,\n\t\t'',\n\t);\n\n\t// Extract and move React preload links to head\n\tconst { cleanAppHtml, preloadLinks } = extractPreloadLinks(appHtml);\n\n\tif (preloadLinks.length > 0) {\n\t\tconst preloadHtml = preloadLinks.join('\\n\\t\\t');\n\t\thtml = html.replace(/<\\/head>/i, `\\t\\t${preloadHtml}\\n\\t</head>`);\n\t}\n\n\t// Replace content of the app root\n\thtml = replaceAppRoot(html, cleanAppHtml, appId);\n\n\t// Append hydration scripts before </body>\n\tif (hydrationScript) {\n\t\thtml = html.replace(/<\\/body>/i, `\\t\\t${hydrationScript}\\n\\t</body>`);\n\t}\n\n\treturn html;\n}\n\n/**\n * Deduplicate meta tags within head content\n * Keeps only the last occurrence of each unique meta tag type\n * Handles: <title>, <meta name=\"...\">, <meta property=\"...\">\n */\nfunction deduplicateTitles(headContent: string): string {\n\tconst titleMatches = [...headContent.matchAll(/<title[\\s\\S]*?<\\/title>/gi)];\n\tif (titleMatches.length <= 1) return headContent;\n\n\tlet result = headContent;\n\t// Remove all but the last title tag\n\tfor (let i = 0; i < titleMatches.length - 1; i++) {\n\t\tresult = result.replace(titleMatches[i][0], '');\n\t}\n\treturn result;\n}\n\nfunction deduplicateMetaByName(headContent: string): string {\n\tconst metaNameMatches = [\n\t\t...headContent.matchAll(/<meta\\s+name\\s*=\\s*['\"]([^'\"]+)['\"][^>]*>/gi),\n\t];\n\tconst seenNames = new Map<string, number[]>();\n\n\tfor (let i = 0; i < metaNameMatches.length; i++) {\n\t\tconst match = metaNameMatches[i];\n\t\tconst nameValue = match[1].toLowerCase(); // Case-insensitive\n\t\tif (!seenNames.has(nameValue)) {\n\t\t\tseenNames.set(nameValue, []);\n\t\t}\n\t\tseenNames.get(nameValue)?.push(i);\n\t}\n\n\tlet result = headContent;\n\t// Remove all but the last occurrence of each name\n\tfor (const indices of seenNames.values()) {\n\t\tif (indices.length > 1) {\n\t\t\tfor (let i = 0; i < indices.length - 1; i++) {\n\t\t\t\tresult = result.replace(metaNameMatches[indices[i]][0], '');\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\nfunction deduplicateMetaByProperty(headContent: string): string {\n\tconst metaPropMatches = [\n\t\t...headContent.matchAll(/<meta\\s+property\\s*=\\s*['\"]([^'\"]+)['\"][^>]*>/gi),\n\t];\n\tconst seenProps = new Map<string, number[]>();\n\n\tfor (let i = 0; i < metaPropMatches.length; i++) {\n\t\tconst match = metaPropMatches[i];\n\t\tconst propValue = match[1].toLowerCase(); // Case-insensitive\n\t\tif (!seenProps.has(propValue)) {\n\t\t\tseenProps.set(propValue, []);\n\t\t}\n\t\tseenProps.get(propValue)?.push(i);\n\t}\n\n\tlet result = headContent;\n\t// Remove all but the last occurrence of each property\n\tfor (const indices of seenProps.values()) {\n\t\tif (indices.length > 1) {\n\t\t\tfor (let i = 0; i < indices.length - 1; i++) {\n\t\t\t\tresult = result.replace(metaPropMatches[indices[i]][0], '');\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n\nexport function deduplicateMetaTags(headContent: string): string {\n\ttry {\n\t\tlet result = headContent;\n\t\tresult = deduplicateTitles(result);\n\t\tresult = deduplicateMetaByName(result);\n\t\tresult = deduplicateMetaByProperty(result);\n\t\treturn result;\n\t} catch {\n\t\treturn headContent;\n\t}\n}\n\n/**\n * Remove default title and description tags from template HTML\n */\nfunction removeDefaultMetaTags(templateHtml: string): string {\n\tlet result = templateHtml;\n\n\ttry {\n\t\t// Remove default title tag\n\t\tresult = result.replace(/<title[\\s\\S]*?<\\/title>/i, '');\n\n\t\t// Remove default description meta tag\n\t\tresult = result.replace(\n\t\t\t/<meta\\s+name\\s*=\\s*['\"]description['\"][^>]*>/i,\n\t\t\t'',\n\t\t);\n\t} catch {\n\t\t// Return original on error\n\t}\n\n\treturn result;\n}\n\n/**\n * Remove OG/Twitter meta tags from template that will be overridden by injected head\n * Only removes tags whose property/name values exist in the injected content\n */\nexport function removeOverriddenMetaTags(\n\ttemplateHtml: string,\n\tinjectedHead: string,\n): string {\n\tlet result = templateHtml;\n\n\ttry {\n\t\t// Find all og: property values being injected\n\t\tconst injectedOgProps = [\n\t\t\t...injectedHead.matchAll(\n\t\t\t\t/<meta\\s+property\\s*=\\s*['\"]([^'\"]+)['\"][^>]*>/gi,\n\t\t\t),\n\t\t].map((m) => m[1].toLowerCase());\n\n\t\t// Find all twitter/name meta values being injected\n\t\tconst injectedNameMetas = [\n\t\t\t...injectedHead.matchAll(/<meta\\s+name\\s*=\\s*['\"]([^'\"]+)['\"][^>]*>/gi),\n\t\t].map((m) => m[1].toLowerCase());\n\n\t\t// Remove matching og: property tags from template\n\t\tfor (const prop of injectedOgProps) {\n\t\t\tconst escapedProp = prop.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\t\t\tconst regex = new RegExp(\n\t\t\t\t`<meta\\\\s+property\\\\s*=\\\\s*['\"]${escapedProp}['\"][^>]*>`,\n\t\t\t\t'gi',\n\t\t\t);\n\t\t\tresult = result.replace(regex, '');\n\t\t}\n\n\t\t// Remove matching name meta tags from template (twitter:*, description, etc.)\n\t\tfor (const name of injectedNameMetas) {\n\t\t\tconst escapedName = name.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\t\t\tconst regex = new RegExp(\n\t\t\t\t`<meta\\\\s+name\\\\s*=\\\\s*['\"]${escapedName}['\"][^>]*>`,\n\t\t\t\t'gi',\n\t\t\t);\n\t\t\tresult = result.replace(regex, '');\n\t\t}\n\t} catch {\n\t\t// Return original on error\n\t}\n\n\treturn result;\n}\n\n/**\n * Deduplicate title and description meta tags in head content\n * Returns both the cleaned template HTML and the deduplicated head to inject\n */\nfunction deduplicateHeadContent(\n\ttemplateHtml: string,\n\theadToInject: string,\n): { cleanedTemplate: string; cleanedHead: string } {\n\tlet cleanedTemplate = templateHtml;\n\tlet cleanedHead = headToInject;\n\n\ttry {\n\t\t// First, deduplicate within the injected head itself (e.g., layout vs content meta)\n\t\tcleanedHead = deduplicateMetaTags(headToInject);\n\n\t\t// If we have new title/description tags to inject, remove the defaults from template\n\t\tif (/<title[\\s\\S]*?<\\/title>/i.test(cleanedHead)) {\n\t\t\tcleanedTemplate = removeDefaultMetaTags(cleanedTemplate);\n\t\t} else if (\n\t\t\t/<meta\\s+name\\s*=\\s*['\"]description['\"][^>]*>/i.test(cleanedHead)\n\t\t) {\n\t\t\t// Even if no title, remove description if present\n\t\t\tcleanedTemplate = cleanedTemplate.replace(\n\t\t\t\t/<meta\\s+name\\s*=\\s*['\"]description['\"][^>]*>/i,\n\t\t\t\t'',\n\t\t\t);\n\t\t}\n\n\t\t// Remove OG/Twitter meta tags from template that will be overridden\n\t\tcleanedTemplate = removeOverriddenMetaTags(cleanedTemplate, cleanedHead);\n\t} catch {\n\t\t// Return originals on error\n\t}\n\n\treturn { cleanedTemplate, cleanedHead };\n}\n\n/**\n * Extract React preload links from the beginning of SSR output\n */\nfunction extractPreloadLinks(appHtml: string): {\n\tcleanAppHtml: string;\n\tpreloadLinks: string[];\n} {\n\tconst preloadLinks: string[] = [];\n\tlet cleanAppHtml = appHtml;\n\n\tconst linkPrefixRegex = /^(\\s*(?:<link\\b[^>]*>\\s*)+)/;\n\tconst prefixMatch = appHtml.match(linkPrefixRegex);\n\n\tif (prefixMatch?.[1]) {\n\t\tconst linkMatches = prefixMatch[1].match(/<link\\b[^>]*>/g);\n\t\tif (linkMatches) {\n\t\t\tpreloadLinks.push(...linkMatches);\n\t\t\tcleanAppHtml = appHtml.slice(prefixMatch[1].length);\n\t\t}\n\t}\n\n\treturn { cleanAppHtml, preloadLinks };\n}\n\n/**\n * Replace the app root div content with SSR output\n */\nfunction replaceAppRoot(html: string, appHtml: string, appId: string): string {\n\tconst appIdEscaped = appId.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\tconst rootDivRegex = new RegExp(\n\t\t`(<div[^>]*\\\\bid=(\\\\\"|')${appIdEscaped}\\\\2[^>]*>)([\\\\s\\\\S]*?)(<\\\\/div>)`,\n\t\t'i',\n\t);\n\n\tif (rootDivRegex.test(html)) {\n\t\t// Escape $ in appHtml to prevent backreference interpretation\n\t\tconst escapedAppHtml = appHtml.replace(/\\$/g, '$$$$');\n\t\treturn html.replace(rootDivRegex, `$1${escapedAppHtml}$4`);\n\t}\n\n\t// Fallback: inject before </body>\n\treturn html.replace(\n\t\t/<\\/body>/i,\n\t\t`\\t\\t<div id=\"${appId}\">${appHtml}</div>\\n\\t</body>`,\n\t);\n}\n",
|
|
33
|
-
"import { pathToFileURL } from 'node:url';\nimport { join } from '../ssr/lib/path';\n\
|
|
34
|
+
"import { readdir } from 'node:fs/promises';\nimport { pathToFileURL } from 'node:url';\nimport { join } from '../ssr/lib/path';\n\nconst CATCH_ALL_ROUTE_DIRECTORY = /^\\[\\.\\.\\.([^\\]]+)\\]$/;\nconst DYNAMIC_ROUTE_DIRECTORY = /^\\[(?:\\.\\.\\.)?[^\\]]+\\]$/;\n\nfunction isCatchAllRouteDirectory(name: string): boolean {\n\treturn CATCH_ALL_ROUTE_DIRECTORY.test(name);\n}\n\nasync function listDynamicRouteDirectories(baseDir: string): Promise<string[]> {\n\ttry {\n\t\tconst entries = await readdir(baseDir, { withFileTypes: true });\n\n\t\treturn entries\n\t\t\t.filter((entry) => entry.isDirectory())\n\t\t\t.map((entry) => entry.name)\n\t\t\t.filter((name) => DYNAMIC_ROUTE_DIRECTORY.test(name))\n\t\t\t.sort((a, b) => {\n\t\t\t\tconst aIsCatchAll = isCatchAllRouteDirectory(a);\n\t\t\t\tconst bIsCatchAll = isCatchAllRouteDirectory(b);\n\n\t\t\t\tif (aIsCatchAll !== bIsCatchAll) {\n\t\t\t\t\treturn Number(aIsCatchAll) - Number(bIsCatchAll);\n\t\t\t\t}\n\n\t\t\t\treturn a.localeCompare(b);\n\t\t\t});\n\t} catch {\n\t\treturn [];\n\t}\n}\n\nasync function collectOGCandidatePaths(\n\tcurrentDir: string,\n\tparts: string[],\n\tdepth: number,\n\tpathsToTry: string[],\n\tallowPartialFallback: boolean,\n): Promise<void> {\n\tif (depth === parts.length) {\n\t\tpathsToTry.push(join(currentDir, '[og].tsx'));\n\t\treturn;\n\t}\n\n\tconst literalDir = join(currentDir, parts[depth]);\n\n\ttry {\n\t\tawait readdir(literalDir);\n\t\tawait collectOGCandidatePaths(\n\t\t\tliteralDir,\n\t\t\tparts,\n\t\t\tdepth + 1,\n\t\t\tpathsToTry,\n\t\t\ttrue,\n\t\t);\n\t} catch {\n\t\t// Literal path doesn't exist, continue with dynamic candidates.\n\t}\n\n\tconst dynamicDirs = await listDynamicRouteDirectories(currentDir);\n\n\tfor (const dynamicDir of dynamicDirs) {\n\t\tif (isCatchAllRouteDirectory(dynamicDir)) {\n\t\t\tpathsToTry.push(join(currentDir, dynamicDir, '[og].tsx'));\n\t\t\tcontinue;\n\t\t}\n\n\t\tawait collectOGCandidatePaths(\n\t\t\tjoin(currentDir, dynamicDir),\n\t\t\tparts,\n\t\t\tdepth + 1,\n\t\t\tpathsToTry,\n\t\t\tfalse,\n\t\t);\n\t}\n\n\tif (allowPartialFallback) {\n\t\tpathsToTry.push(join(currentDir, '[og].tsx'));\n\t}\n}\n\n/**\n * Find [og].tsx file for a given pathname\n * Returns the absolute path to the OG image component if found\n */\nexport async function findOGImageForPath(\n\tpathname: string,\n\tclientDir: string,\n): Promise<string | null> {\n\tconst parts = pathname\n\t\t.split('/')\n\t\t.filter(Boolean)\n\t\t.filter((p) => !p.startsWith('__reroute'));\n\tconst routesDir = join(clientDir, 'routes');\n\tconst pathsToTry: string[] = [];\n\n\tawait collectOGCandidatePaths(routesDir, parts, 0, pathsToTry, true);\n\n\tconst uniquePaths = [...new Set(pathsToTry)];\n\n\tfor (const path of uniquePaths) {\n\t\ttry {\n\t\t\tconst file = Bun.file(path);\n\t\t\tif (await file.exists()) {\n\t\t\t\treturn path;\n\t\t\t}\n\t\t} catch {\n\t\t\t// File doesn't exist, continue\n\t\t}\n\t}\n\n\treturn null;\n}\n\n/**\n * Load OG Image component for a given path\n */\n\nexport async function loadOGImageComponent(\n\togPath: string,\n\tisWatchMode: boolean,\n) {\n\ttry {\n\t\tconst mod = await import(\n\t\t\t`${pathToFileURL(ogPath).href}${isWatchMode ? `?t=${Date.now()}` : ''}`\n\t\t);\n\t\treturn mod.default || mod;\n\t} catch (error) {\n\t\tconsole.error(\n\t\t\t`[reroute] Failed to load OG image component: ${ogPath}`,\n\t\t\terror,\n\t\t);\n\t\treturn null;\n\t}\n}\n\n/**\n * Extract route params from pathname based on OG component path\n * e.g., pathname='/blog/my-post', ogPath='pages/blog/[slug]/[og].tsx' -> { slug: 'my-post' }\n */\nexport function extractParamsFromPath(\n\tpathname: string,\n\togPath: string,\n\tclientDir: string,\n): Record<string, string> {\n\tconst params: Record<string, string> = {};\n\tconst ogDir = ogPath.replace(/\\/\\[og\\]\\.tsx$/, '');\n\tconst routesDir = join(clientDir, 'routes');\n\tconst relativePath = ogDir.replace(routesDir, '').split('/').filter(Boolean);\n\tconst pathnameParts = pathname.split('/').filter(Boolean);\n\n\tfor (let i = 0; i < relativePath.length && i < pathnameParts.length; i++) {\n\t\tconst part = relativePath[i];\n\n\t\tconst catchAllMatch = part.match(/^\\[\\.\\.\\.([^\\]]+)\\]$/);\n\t\tif (catchAllMatch) {\n\t\t\tparams[catchAllMatch[1]] = pathnameParts.slice(i).join('/');\n\t\t\tbreak;\n\t\t}\n\n\t\tconst dynamicMatch = part.match(/^\\[([^\\]]+)\\]$/);\n\t\tif (dynamicMatch) {\n\t\t\tparams[dynamicMatch[1]] = pathnameParts[i];\n\t\t}\n\t}\n\n\treturn params;\n}\n",
|
|
34
35
|
"import type { OGImageOptions } from '../config';\nimport { findOGImageForPath } from './discovery';\n\n/**\n * Generate OG image meta tags for SSR\n */\nexport async function generateOGImageMetaTags(\n\tpathname: string,\n\tclientDir: string,\n\togConfig: OGImageOptions | undefined,\n): Promise<string> {\n\tif (!ogConfig?.enabled) {\n\t\treturn '';\n\t}\n\n\tconst width = ogConfig.width || 1200;\n\tconst height = ogConfig.height || 630;\n\n\t// Check if there's an OG image component for this route\n\tconst ogPath = await findOGImageForPath(pathname, clientDir);\n\tconst hasOGImage = ogPath !== null || ogConfig.defaultTemplate;\n\n\tif (!hasOGImage) {\n\t\treturn '';\n\t}\n\n\t// Generate OG image URL (relative path)\n\t// For root (/), use /index.png; for /blog, use /blog/index.png\n\tlet ogImagePath: string;\n\tif (pathname === '/' || pathname === '') {\n\t\togImagePath = '/__reroute_og/index.png';\n\t} else if (pathname.endsWith('/')) {\n\t\togImagePath = `/__reroute_og${pathname}index.png`;\n\t} else {\n\t\togImagePath = `/__reroute_og${pathname}.png`;\n\t}\n\n\t// Convert to absolute URL if baseUrl is provided\n\tconst baseUrl = ogConfig.baseUrl;\n\tif (baseUrl) {\n\t\t// Remove trailing slash from baseUrl if present\n\t\tconst cleanBaseUrl = baseUrl.replace(/\\/$/, '');\n\t\togImagePath = `${cleanBaseUrl}${ogImagePath}`;\n\t} else {\n\t\tconsole.warn(\n\t\t\t'[reroute] OG images require a baseUrl for proper social media sharing. Add baseUrl to ogImage config.',\n\t\t);\n\t}\n\n\t// Generate meta tags\n\t// Note: twitter:card is generated separately in global OG tags based on user config\n\treturn `<meta property=\"og:image\" content=\"${ogImagePath}\" />\n<meta property=\"og:image:width\" content=\"${width}\" />\n<meta property=\"og:image:height\" content=\"${height}\" />\n<meta name=\"twitter:image\" content=\"${ogImagePath}\" />`;\n}\n",
|
|
35
36
|
"import type { OGImageOptions, OGOptions } from '../../config';\nimport { buildHeadFromMeta } from '../../content/metadata';\nimport { generateOGImageMetaTags } from '../../og/meta';\nimport { loadRoutesModule } from './compute';\nimport { dynamicImport } from './imports';\nimport { getMatchingLayouts } from './layouts';\nimport { join } from './path';\nimport type { Doc, MetadataResult, SSR, SSRHeadContext } from './types';\n\n/**\n * Load meta and ssr exports from a route/layout module.\n * Uses bundled values first (for compiled binaries), falls back to dynamic import.\n */\nasync function loadModuleMetaAndSSR(\n\tmoduleObj: Doc | undefined,\n\tabsolutePath: string,\n\tisWatchMode: boolean,\n): Promise<{ meta?: Doc; ssr?: SSR }> {\n\t// Use bundled meta/ssr if available (compiled binary)\n\tconst bundledMeta = moduleObj?.meta as Doc | undefined;\n\tconst bundledSSR = moduleObj?.ssr as SSR | undefined;\n\n\tif (bundledMeta !== undefined || bundledSSR !== undefined) {\n\t\treturn { meta: bundledMeta, ssr: bundledSSR };\n\t}\n\n\t// Fallback to dynamic import (dev mode)\n\ttry {\n\t\tconst mod = await dynamicImport(absolutePath, isWatchMode);\n\t\treturn {\n\t\t\tmeta: (mod as Doc)?.meta as Doc | undefined,\n\t\t\tssr: (mod as Doc)?.ssr as SSR | undefined,\n\t\t};\n\t} catch {\n\t\treturn {};\n\t}\n}\n\n/**\n * Generate canonical URL meta tag\n */\nfunction generateCanonicalUrl(baseUrl: string, pathname: string): string {\n\t// Remove trailing slash from baseUrl if present\n\tconst cleanBaseUrl = baseUrl.replace(/\\/$/, '');\n\t// Remove query parameters from pathname for canonical URL\n\tconst cleanPathname = pathname.split('?')[0];\n\t// Canonical URLs should not have trailing slashes (except for root)\n\tconst normalizedPath =\n\t\tcleanPathname === '/' ? '/' : cleanPathname.replace(/\\/$/, '');\n\tconst canonicalUrl = `${cleanBaseUrl}${normalizedPath}`;\n\treturn `<link rel=\"canonical\" href=\"${canonicalUrl}\" />`;\n}\n\n/**\n * Generate og:url meta tag to match canonical URL\n */\nfunction generateOgUrl(baseUrl: string, pathname: string): string {\n\t// Remove trailing slash from baseUrl if present\n\tconst cleanBaseUrl = baseUrl.replace(/\\/$/, '');\n\t// Remove query parameters from pathname for og:url\n\tconst cleanPathname = pathname.split('?')[0];\n\t// og:url should not have trailing slashes (except for root)\n\tconst normalizedPath =\n\t\tcleanPathname === '/' ? '/' : cleanPathname.replace(/\\/$/, '');\n\tconst ogUrl = `${cleanBaseUrl}${normalizedPath}`;\n\treturn `<meta property=\"og:url\" content=\"${ogUrl}\" />`;\n}\n\n/**\n * Generate global OG tags from config (og:site_name, og:locale, twitter:site)\n */\nfunction generateGlobalOGTags(ogConfig: OGOptions): string {\n\tconst tags: string[] = [];\n\n\tif (ogConfig.siteName) {\n\t\ttags.push(\n\t\t\t`<meta property=\"og:site_name\" content=\"${escapeHtml(ogConfig.siteName)}\" />`,\n\t\t);\n\t}\n\n\tif (ogConfig.locale) {\n\t\ttags.push(\n\t\t\t`<meta property=\"og:locale\" content=\"${escapeHtml(ogConfig.locale)}\" />`,\n\t\t);\n\t}\n\n\tif (ogConfig.twitterSite) {\n\t\t// Normalize: ensure @ prefix for twitter:site\n\t\tconst handle = ogConfig.twitterSite.startsWith('@')\n\t\t\t? ogConfig.twitterSite\n\t\t\t: `@${ogConfig.twitterSite}`;\n\t\ttags.push(`<meta name=\"twitter:site\" content=\"${escapeHtml(handle)}\" />`);\n\t}\n\n\treturn tags.length ? tags.join('\\n') : '';\n}\n\nfunction escapeHtml(input: string): string {\n\treturn input\n\t\t.replace(/&/g, '&')\n\t\t.replace(/</g, '<')\n\t\t.replace(/>/g, '>')\n\t\t.replace(/\"/g, '"')\n\t\t.replace(/'/g, ''');\n}\n\n/**\n * Extract per-page head and metadata from layouts, routes, and content modules\n */\nexport async function extractPageMetadata(\n\tpathname: string,\n\tclientDir: string,\n\tcwd: string,\n\tisWatchMode: boolean,\n\tcurrentStatusOverride?: number,\n\togImageConfig?: OGImageOptions,\n\togConfig?: OGOptions,\n\tbaseUrl?: string,\n\tautoCanonical?: boolean,\n\tssrData?: unknown,\n\ttitleSuffix?: string,\n): Promise<MetadataResult> {\n\tlet perPageHead = '';\n\tlet pageLang: string | undefined;\n\tlet statusOverride = currentStatusOverride;\n\n\t// 1. Extract layout metadata hierarchically\n\tawait extractLayoutMetadata(\n\t\tpathname,\n\t\tclientDir,\n\t\tcwd,\n\t\tisWatchMode,\n\t\t(head) => {\n\t\t\tperPageHead += head;\n\t\t},\n\t\t(lang) => {\n\t\t\tif (!pageLang) pageLang = lang;\n\t\t},\n\t\togConfig,\n\t\ttitleSuffix,\n\t);\n\n\t// 2. Canonical URL and og:url (auto-generated, should be overridable by custom tags)\n\t// Default to true if baseUrl is set, unless explicitly disabled\n\tconst shouldGenerateCanonical =\n\t\tautoCanonical !== false && baseUrl !== undefined;\n\tif (shouldGenerateCanonical) {\n\t\tconst canonicalTag = generateCanonicalUrl(baseUrl, pathname);\n\t\tconst ogUrlTag = generateOgUrl(baseUrl, pathname);\n\t\tperPageHead += `\\n${canonicalTag}`;\n\t\tperPageHead += `\\n${ogUrlTag}`;\n\t}\n\n\t// 3. Global OG tags (og:site_name, og:locale, twitter:site)\n\tif (ogConfig) {\n\t\tconst ogGlobalTags = generateGlobalOGTags(ogConfig);\n\t\tif (ogGlobalTags) {\n\t\t\tperPageHead += `\\n${ogGlobalTags}`;\n\t\t}\n\t}\n\n\t// 4. OG Image meta tags (auto-generated, should be overridable by custom tags)\n\ttry {\n\t\tconst ogMetaTags = await generateOGImageMetaTags(\n\t\t\tpathname,\n\t\t\tclientDir,\n\t\t\togImageConfig,\n\t\t);\n\t\tif (ogMetaTags) {\n\t\t\tperPageHead += `\\n${ogMetaTags}`;\n\t\t}\n\t} catch (error) {\n\t\tconsole.warn('[reroute] Failed to generate OG image meta tags:', error);\n\t}\n\n\t// 5. Content page metadata (can override auto-generated tags)\n\textractContentMetadata(\n\t\tpathname,\n\t\t(head) => {\n\t\t\tperPageHead += head;\n\t\t},\n\t\t(lang) => {\n\t\t\tpageLang = lang;\n\t\t},\n\t\togConfig,\n\t\ttitleSuffix,\n\t);\n\n\t// 6. Route-level metadata (most specific, can override everything)\n\tconst routeResult = await extractRouteMetadata(\n\t\tpathname,\n\t\tclientDir,\n\t\tcwd,\n\t\tisWatchMode,\n\t\tstatusOverride,\n\t\tssrData,\n\t\togConfig,\n\t\ttitleSuffix,\n\t);\n\tperPageHead += routeResult.head;\n\tif (routeResult.lang) pageLang = routeResult.lang;\n\tstatusOverride = routeResult.statusOverride;\n\n\treturn {\n\t\tperPageHead,\n\t\tpageLang,\n\t\tstatusOverride,\n\t\tssrExport: routeResult.ssrExport,\n\t};\n}\n\nasync function processLayoutForMetadata(\n\tlayout: Doc,\n\tclientDir: string,\n\tisWatchMode: boolean,\n\taddHead: (head: string) => void,\n\tsetLang: (lang: string) => void,\n\togConfig?: OGOptions,\n\ttitleSuffix?: string,\n): Promise<void> {\n\tif (typeof layout?.path !== 'string') return;\n\n\ttry {\n\t\tconst abs = join(clientDir, 'routes', String(layout.path));\n\t\tconst { meta, ssr } = await loadModuleMetaAndSSR(layout, abs, isWatchMode);\n\n\t\tif (meta) addHead(buildHeadFromMeta(meta, ogConfig, titleSuffix));\n\n\t\tif (ssr) {\n\t\t\t// Pass meta so head function can access layout metadata\n\t\t\tconst ssrHead = extractSSRHead(\n\t\t\t\tssr,\n\t\t\t\tundefined,\n\t\t\t\togConfig,\n\t\t\t\tundefined,\n\t\t\t\tmeta,\n\t\t\t\ttitleSuffix,\n\t\t\t);\n\t\t\tif (ssrHead) addHead(`\\n${ssrHead}`);\n\n\t\t\tconst lang = extractSSRLang(ssr);\n\t\t\tif (lang) setLang(lang);\n\t\t}\n\t} catch {\n\t\t// Continue to next layout\n\t}\n}\n\nasync function extractLayoutMetadata(\n\tpathname: string,\n\tclientDir: string,\n\tcwd: string,\n\tisWatchMode: boolean,\n\taddHead: (head: string) => void,\n\tsetLang: (lang: string) => void,\n\togConfig?: OGOptions,\n\ttitleSuffix?: string,\n): Promise<void> {\n\ttry {\n\t\t// Use loadRoutesModule which handles bundled globals for compiled binaries\n\t\tconst m = await loadRoutesModule(cwd, isWatchMode);\n\t\tconst matchingLayouts = getMatchingLayouts(pathname, m?.layouts);\n\n\t\tfor (const layout of matchingLayouts) {\n\t\t\tawait processLayoutForMetadata(\n\t\t\t\tlayout,\n\t\t\t\tclientDir,\n\t\t\t\tisWatchMode,\n\t\t\t\taddHead,\n\t\t\t\tsetLang,\n\t\t\t\togConfig,\n\t\t\t\ttitleSuffix,\n\t\t\t);\n\t\t}\n\t} catch {\n\t\t// Routes module unavailable\n\t}\n}\n\nfunction extractContentMetadata(\n\tpathname: string,\n\taddHead: (head: string) => void,\n\tsetLang: (lang: string) => void,\n\togConfig?: OGOptions,\n\ttitleSuffix?: string,\n): void {\n\ttry {\n\t\tconst parts = pathname.split('/').filter(Boolean);\n\t\tif (parts.length < 2) return;\n\n\t\tconst key = `${parts[0]}:${parts[1]}`;\n\t\tconst g = globalThis as Doc;\n\t\tconst exp = g.__REROUTE_SSR_EXPORTS__?.[key] as\n\t\t\t| { meta?: unknown; ssr?: SSR }\n\t\t\t| undefined;\n\n\t\tconst meta = (exp as Doc)?.meta;\n\t\tconst ssr = exp?.ssr;\n\n\t\taddHead(buildHeadFromMeta(meta, ogConfig, titleSuffix));\n\n\t\t// Pass meta to extractSSRHead so head function can access content frontmatter\n\t\tconst ssrHead = extractSSRHead(\n\t\t\tssr,\n\t\t\tundefined,\n\t\t\togConfig,\n\t\t\tundefined,\n\t\t\tmeta,\n\t\t\ttitleSuffix,\n\t\t);\n\t\tif (ssrHead) addHead(`\\n${ssrHead}`);\n\n\t\tconst lang = extractSSRLang(ssr);\n\t\tif (lang) setLang(lang);\n\t} catch {\n\t\t// Content metadata unavailable\n\t}\n}\n\n/**\n * Get content metadata from __REROUTE_SSR_EXPORTS__ for a given pathname.\n * Returns the frontmatter metadata for content pages (e.g., blog posts).\n * Includes the slug derived from the pathname if not already present.\n */\nfunction getContentMetaFromExports(pathname: string): Doc | undefined {\n\ttry {\n\t\tconst parts = pathname.split('/').filter(Boolean);\n\t\tif (parts.length < 2) return undefined;\n\n\t\tconst slug = parts[1];\n\t\tconst key = `${parts[0]}:${slug}`;\n\t\tconst g = globalThis as Doc;\n\t\tconst exp = g.__REROUTE_SSR_EXPORTS__?.[key] as { meta?: Doc } | undefined;\n\n\t\tconst meta = exp?.meta;\n\t\tif (!meta) return undefined;\n\n\t\t// Include slug in metadata if not already present\n\t\tif (!meta.slug) {\n\t\t\treturn { ...meta, slug };\n\t\t}\n\n\t\treturn meta;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Route metadata extraction is complex\nasync function extractMatchedRouteMetadata(\n\tpathname: string,\n\tclientDir: string,\n\tm: Doc,\n\tisWatchMode: boolean,\n\tstatusOverride: number | undefined,\n\tssrData?: unknown,\n\togConfig?: OGOptions,\n\ttitleSuffix?: string,\n): Promise<{\n\thead: string;\n\tlang?: string;\n\tstatusOverride?: number;\n\tssrExport?: SSR;\n}> {\n\tconst pathnameOnly = pathname.split('?')[0];\n\tconst match =\n\t\ttypeof m.matchRoute === 'function' ? m.matchRoute(pathnameOnly) : null;\n\tconst r = match?.route as Doc | undefined;\n\n\tif (!r) {\n\t\treturn { head: '', statusOverride: statusOverride || 404 };\n\t}\n\n\tif (r && typeof r.path === 'string') {\n\t\ttry {\n\t\t\tconst abs = join(clientDir, 'routes', String(r.path));\n\t\t\tconst { meta, ssr } = await loadModuleMetaAndSSR(r, abs, isWatchMode);\n\n\t\t\tlet head = '';\n\t\t\tif (meta) head += buildHeadFromMeta(meta, ogConfig, titleSuffix);\n\n\t\t\tif (ssr) {\n\t\t\t\t// Extract route-specific data from the full ssrData object\n\t\t\t\t// ssrData is keyed by pathname for routes\n\t\t\t\tlet routeData =\n\t\t\t\t\tssrData && typeof ssrData === 'object'\n\t\t\t\t\t\t? (ssrData as Record<string, unknown>)[pathname]\n\t\t\t\t\t\t: undefined;\n\n\t\t\t\t// If data is a Promise, await it for SSR head generation\n\t\t\t\tif (routeData && typeof routeData === 'object' && 'then' in routeData) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\trouteData = await (routeData as Promise<unknown>);\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t'[extractMatchedRouteMetadata] Error awaiting route data for head:',\n\t\t\t\t\t\t\terr,\n\t\t\t\t\t\t);\n\t\t\t\t\t\trouteData = undefined;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// For content pages, use the content's frontmatter metadata instead of route's meta.\n\t\t\t\t// This allows ssr.head() in route files like [slug].tsx to receive blog post metadata.\n\t\t\t\tconst contentMeta = getContentMetaFromExports(pathnameOnly);\n\t\t\t\tconst headMeta = contentMeta || meta;\n\n\t\t\t\t// Pass existing head and meta to avoid duplicate OG tags when both meta and ssr.head() exist\n\t\t\t\tconst ssrHead = extractSSRHead(\n\t\t\t\t\tssr,\n\t\t\t\t\trouteData,\n\t\t\t\t\togConfig,\n\t\t\t\t\thead,\n\t\t\t\t\theadMeta,\n\t\t\t\t\ttitleSuffix,\n\t\t\t\t);\n\t\t\t\tif (ssrHead) head += `\\n${ssrHead}`;\n\t\t\t\t// Return SSR export for dynamic head generation at stream end\n\t\t\t\treturn {\n\t\t\t\t\thead,\n\t\t\t\t\tlang: extractSSRLang(ssr),\n\t\t\t\t\tstatusOverride,\n\t\t\t\t\tssrExport: ssr,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn { head, statusOverride };\n\t\t} catch {\n\t\t\t// Route module unavailable\n\t\t}\n\t}\n\n\treturn { head: '', statusOverride };\n}\n\nasync function extractRouteMetadata(\n\tpathname: string,\n\tclientDir: string,\n\tcwd: string,\n\tisWatchMode: boolean,\n\tcurrentStatusOverride?: number,\n\tssrData?: unknown,\n\togConfig?: OGOptions,\n\ttitleSuffix?: string,\n): Promise<{\n\thead: string;\n\tlang?: string;\n\tstatusOverride?: number;\n\tssrExport?: SSR;\n}> {\n\tlet head = '';\n\tlet lang: string | undefined;\n\tlet statusOverride = currentStatusOverride;\n\tlet ssrExport: SSR | undefined;\n\n\ttry {\n\t\tconst m = await loadRoutesModule(cwd, isWatchMode);\n\t\tif (!m) {\n\t\t\treturn { head, lang, statusOverride: statusOverride || 404 };\n\t\t}\n\n\t\tconst pathnameOnly = pathname.split('?')[0];\n\t\tconst match =\n\t\t\ttypeof m.matchRoute === 'function' ? m.matchRoute(pathnameOnly) : null;\n\t\tconst r = match?.route as Doc | undefined;\n\n\t\tif (!r) {\n\t\t\tstatusOverride = statusOverride || 404;\n\t\t}\n\n\t\tif (r && typeof r.path === 'string') {\n\t\t\tconst result = await extractMatchedRouteMetadata(\n\t\t\t\tpathname,\n\t\t\t\tclientDir,\n\t\t\t\tm,\n\t\t\t\tisWatchMode,\n\t\t\t\tstatusOverride,\n\t\t\t\tssrData,\n\t\t\t\togConfig,\n\t\t\t\ttitleSuffix,\n\t\t\t);\n\n\t\t\thead = result.head;\n\t\t\tlang = result.lang;\n\t\t\tstatusOverride = result.statusOverride;\n\t\t\tssrExport = result.ssrExport;\n\t\t} else {\n\t\t\t// Try notFound route metadata only when no route matched\n\t\t\thead += await extractNotFoundMetadata(\n\t\t\t\tpathname,\n\t\t\t\tclientDir,\n\t\t\t\tm,\n\t\t\t\tisWatchMode,\n\t\t\t\t(l) => {\n\t\t\t\t\tlang = l;\n\t\t\t\t},\n\t\t\t\togConfig,\n\t\t\t\ttitleSuffix,\n\t\t\t);\n\t\t}\n\t} catch {\n\t\t// Routes module unavailable\n\t}\n\n\treturn { head, lang, statusOverride, ssrExport };\n}\n\nfunction findBestNotFoundRoute(list: Doc[], pathname: string): Doc | undefined {\n\tlet chosen: Doc | undefined;\n\tlet bestLen = -1;\n\n\tfor (const nf of list) {\n\t\tconst pat = String((nf as Doc)?.pattern || '/');\n\t\tif (!pathname.startsWith(pat)) continue;\n\n\t\tconst len = pat.split('/').filter(Boolean).length;\n\t\tif (len >= bestLen) {\n\t\t\tbestLen = len;\n\t\t\tchosen = nf;\n\t\t}\n\t}\n\n\treturn chosen;\n}\n\nasync function extractNotFoundMetadata(\n\tpathname: string,\n\tclientDir: string,\n\troutesModule: Doc,\n\tisWatchMode: boolean,\n\tsetLang: (lang: string) => void,\n\togConfig?: OGOptions,\n\ttitleSuffix?: string,\n): Promise<string> {\n\tlet head = '';\n\n\ttry {\n\t\tconst list = routesModule?.notFoundRoutes as Doc[] | undefined;\n\t\tif (!Array.isArray(list)) return head;\n\n\t\tconst chosen = findBestNotFoundRoute(list, pathname);\n\n\t\tif (chosen && typeof (chosen as Doc).path === 'string') {\n\t\t\tconst abs = join(clientDir, 'routes', String((chosen as Doc).path));\n\t\t\tconst { meta, ssr } = await loadModuleMetaAndSSR(\n\t\t\t\tchosen,\n\t\t\t\tabs,\n\t\t\t\tisWatchMode,\n\t\t\t);\n\n\t\t\tif (meta) head += buildHeadFromMeta(meta, ogConfig, titleSuffix);\n\n\t\t\t// Pass meta so head function can access 404 page metadata\n\t\t\tconst ssrHead = extractSSRHead(\n\t\t\t\tssr,\n\t\t\t\tundefined,\n\t\t\t\togConfig,\n\t\t\t\tundefined,\n\t\t\t\tmeta,\n\t\t\t\ttitleSuffix,\n\t\t\t);\n\t\t\tif (ssrHead) head += `\\n${ssrHead}`;\n\n\t\t\tconst lang = extractSSRLang(ssr);\n\t\t\tif (lang) setLang(lang);\n\t\t}\n\t} catch {\n\t\t// NotFound metadata unavailable\n\t}\n\n\treturn head;\n}\n\n/**\n * Parse title from head HTML string\n */\nfunction parseTitleFromHead(head: string): string | undefined {\n\tconst match = head.match(/<title[^>]*>(.*?)<\\/title>/is);\n\tif (match?.[1]) return unescapeHtml(match[1].trim());\n\treturn undefined;\n}\n\n/**\n * Parse description from head HTML string\n * Handles both attribute orders and content with escaped quotes\n */\nfunction parseDescriptionFromHead(head: string): string | undefined {\n\t// Try name-first format: <meta name=\"description\" content=\"...\">\n\tlet match = head.match(\n\t\t/<meta\\s+name=[\"']description[\"']\\s+content=[\"'](.+?)[\"']\\s*\\/?>/i,\n\t);\n\tif (match?.[1]) return unescapeHtml(match[1].trim());\n\n\t// Try content-first format: <meta content=\"...\" name=\"description\">\n\tmatch = head.match(\n\t\t/<meta\\s+content=[\"'](.+?)[\"']\\s+name=[\"']description[\"']\\s*\\/?>/i,\n\t);\n\tif (match?.[1]) return unescapeHtml(match[1].trim());\n\n\treturn undefined;\n}\n\n/**\n * Unescape basic HTML entities in extracted content\n */\nfunction unescapeHtml(input: string): string {\n\treturn input\n\t\t.replace(/"/g, '\"')\n\t\t.replace(/'/g, \"'\")\n\t\t.replace(/</g, '<')\n\t\t.replace(/>/g, '>')\n\t\t.replace(/&/g, '&');\n}\n\n/**\n * Check if a specific meta tag already exists in head HTML\n */\nfunction hasMetaTag(head: string, property: string): boolean {\n\t// Check both property=\"\" and name=\"\" syntax\n\tconst propRegex = new RegExp(\n\t\t`<meta\\\\s+(?:property|name)=[\"']${property}[\"']`,\n\t\t'i',\n\t);\n\tconst contentFirstRegex = new RegExp(\n\t\t`<meta\\\\s+content=[\"'][^\"']*[\"']\\\\s+(?:property|name)=[\"']${property}[\"']`,\n\t\t'i',\n\t);\n\treturn propRegex.test(head) || contentFirstRegex.test(head);\n}\n\n/**\n * Generate OG/Twitter tags from extracted title/description if not already present\n */\nfunction generateMissingOGTags(head: string, ogConfig?: OGOptions): string {\n\tconst title = parseTitleFromHead(head);\n\tconst description = parseDescriptionFromHead(head);\n\n\tconst additionalTags: string[] = [];\n\n\t// Generate og:title if title exists and og:title is missing\n\tif (title && !hasMetaTag(head, 'og:title')) {\n\t\tadditionalTags.push(\n\t\t\t`<meta property=\"og:title\" content=\"${escapeHtml(title)}\" />`,\n\t\t);\n\t}\n\n\t// Generate og:description if description exists and og:description is missing\n\tconst finalDescription = description || ogConfig?.siteDescription;\n\tif (finalDescription && !hasMetaTag(head, 'og:description')) {\n\t\tadditionalTags.push(\n\t\t\t`<meta property=\"og:description\" content=\"${escapeHtml(finalDescription)}\" />`,\n\t\t);\n\t}\n\n\t// Generate twitter:title if title exists and twitter:title is missing\n\tif (title && !hasMetaTag(head, 'twitter:title')) {\n\t\tadditionalTags.push(\n\t\t\t`<meta name=\"twitter:title\" content=\"${escapeHtml(title)}\" />`,\n\t\t);\n\t}\n\n\t// Generate twitter:description if description exists and twitter:description is missing\n\tif (finalDescription && !hasMetaTag(head, 'twitter:description')) {\n\t\tadditionalTags.push(\n\t\t\t`<meta name=\"twitter:description\" content=\"${escapeHtml(finalDescription)}\" />`,\n\t\t);\n\t}\n\n\t// Generate og:type if missing\n\tif (!hasMetaTag(head, 'og:type')) {\n\t\tconst ogType = ogConfig?.defaultType || 'website';\n\t\tadditionalTags.push(\n\t\t\t`<meta property=\"og:type\" content=\"${escapeHtml(ogType)}\" />`,\n\t\t);\n\t}\n\n\t// Generate twitter:card if missing\n\tif (!hasMetaTag(head, 'twitter:card')) {\n\t\tconst twitterCard = ogConfig?.twitterCard || 'summary_large_image';\n\t\tadditionalTags.push(\n\t\t\t`<meta name=\"twitter:card\" content=\"${twitterCard}\" />`,\n\t\t);\n\t}\n\n\treturn additionalTags.length > 0 ? `\\n${additionalTags.join('\\n')}` : '';\n}\n\nfunction extractSSRHead(\n\tssr: SSR | undefined,\n\tdata?: unknown,\n\togConfig?: OGOptions,\n\texistingHead?: string,\n\tmeta?: Doc,\n\ttitleSuffix?: string,\n): string {\n\tif (!ssr) return '';\n\n\tlet headContent = '';\n\n\t// Support function that receives data result and content meta\n\tif (typeof ssr.head === 'function') {\n\t\ttry {\n\t\t\tconst result = ssr.head({ data, meta } satisfies SSRHeadContext);\n\t\t\tif (typeof result === 'string') headContent = result;\n\t\t\telse if (Array.isArray(result))\n\t\t\t\theadContent = String((result as string[]).join('\\n'));\n\t\t} catch (err) {\n\t\t\tconsole.error('[extractSSRHead] Error calling head function:', err);\n\t\t\treturn '';\n\t\t}\n\t} else if (typeof ssr.head === 'string') {\n\t\theadContent = ssr.head;\n\t} else if (Array.isArray(ssr.head)) {\n\t\theadContent = String(ssr.head.join('\\n'));\n\t}\n\n\tif (!headContent) return '';\n\n\t// Apply titleSuffix to any title tags in the head content\n\tif (titleSuffix) {\n\t\theadContent = applyTitleSuffixToHead(headContent, titleSuffix);\n\t}\n\n\t// Auto-generate missing OG/Twitter tags from the head content\n\t// Check against both the ssr.head() output AND any existing head (from const meta)\n\tconst combinedHead = existingHead\n\t\t? `${existingHead}\\n${headContent}`\n\t\t: headContent;\n\tconst additionalOGTags = generateMissingOGTags(combinedHead, ogConfig);\n\n\treturn headContent + additionalOGTags;\n}\n\nfunction extractSSRLang(ssr: SSR | undefined): string | undefined {\n\tif (!ssr) return undefined;\n\n\tif (typeof ssr.lang === 'string' && ssr.lang.trim()) {\n\t\treturn ssr.lang.trim();\n\t}\n\n\treturn undefined;\n}\n\n/**\n * Apply titleSuffix to any title tags in head HTML content.\n * Also updates og:title and twitter:title if they match the original title.\n */\nfunction applyTitleSuffixToHead(\n\theadContent: string,\n\ttitleSuffix: string,\n): string {\n\tlet result = headContent;\n\n\t// Find and update <title> tag\n\tconst titleMatch = result.match(/<title[^>]*>(.*?)<\\/title>/is);\n\tif (titleMatch?.[1]) {\n\t\tconst originalTitle = titleMatch[1].trim();\n\t\tif (originalTitle && !originalTitle.endsWith(titleSuffix)) {\n\t\t\tconst newTitle = `${originalTitle}${titleSuffix}`;\n\t\t\tresult = result.replace(\n\t\t\t\t/<title[^>]*>(.*?)<\\/title>/is,\n\t\t\t\t`<title>${escapeHtml(unescapeHtml(newTitle))}</title>`,\n\t\t\t);\n\n\t\t\t// Also update og:title if it matches the original title (without suffix)\n\t\t\tconst ogTitleRegex =\n\t\t\t\t/<meta\\s+(?:property\\s*=\\s*[\"']og:title[\"']\\s+content\\s*=\\s*[\"']([^\"']+)[\"']|content\\s*=\\s*[\"']([^\"']+)[\"']\\s+property\\s*=\\s*[\"']og:title[\"'])[^>]*>/gi;\n\t\t\tresult = result.replace(ogTitleRegex, (match, content1, content2) => {\n\t\t\t\tconst content = content1 || content2;\n\t\t\t\tif (content && !content.endsWith(titleSuffix)) {\n\t\t\t\t\tconst newContent = `${content}${titleSuffix}`;\n\t\t\t\t\treturn `<meta property=\"og:title\" content=\"${escapeHtml(unescapeHtml(newContent))}\" />`;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Also update twitter:title if it matches the original title (without suffix)\n\t\t\tconst twitterTitleRegex =\n\t\t\t\t/<meta\\s+(?:name\\s*=\\s*[\"']twitter:title[\"']\\s+content\\s*=\\s*[\"']([^\"']+)[\"']|content\\s*=\\s*[\"']([^\"']+)[\"']\\s+name\\s*=\\s*[\"']twitter:title[\"'])[^>]*>/gi;\n\t\t\tresult = result.replace(\n\t\t\t\ttwitterTitleRegex,\n\t\t\t\t(match, content1, content2) => {\n\t\t\t\t\tconst content = content1 || content2;\n\t\t\t\t\tif (content && !content.endsWith(titleSuffix)) {\n\t\t\t\t\t\tconst newContent = `${content}${titleSuffix}`;\n\t\t\t\t\t\treturn `<meta name=\"twitter:title\" content=\"${escapeHtml(unescapeHtml(newContent))}\" />`;\n\t\t\t\t\t}\n\t\t\t\t\treturn match;\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t}\n\n\treturn result;\n}\n",
|
|
36
37
|
"import { readdir, stat } from 'node:fs/promises';\nimport { dynamicImport } from './imports';\nimport { join } from './path';\nimport type { Doc, PreloadResult } from './types';\n\n/**\n * Handle content module preloading for content pages\n */\nexport async function preloadContentModule(\n\tpathname: string,\n\tclientDir: string,\n\tcwd: string,\n\tisWatchMode: boolean,\n): Promise<PreloadResult> {\n\tlet extraHead = '';\n\tlet hydrationScript = '';\n\tlet statusOverride: number | undefined;\n\n\ttry {\n\t\tconst pathOnly = pathname.split('?')[0].split('#')[0];\n\t\tconst parts = pathOnly.split('/').filter(Boolean);\n\n\t\tif (parts.length < 2) {\n\t\t\treturn { extraHead, hydrationScript };\n\t\t}\n\n\t\tconst collection = parts[0];\n\t\tconst name = parts[1];\n\n\t\t// Check if this is a content collection\n\t\tif (!(await isContentCollection(clientDir, collection))) {\n\t\t\treturn { extraHead, hydrationScript };\n\t\t}\n\n\t\t// Try to find module path\n\t\tconst modulePath = await findContentModulePath(\n\t\t\tcollection,\n\t\t\tname,\n\t\t\tclientDir,\n\t\t\tcwd,\n\t\t\tisWatchMode,\n\t\t);\n\n\t\tif (!modulePath) {\n\t\t\tstatusOverride = 404;\n\t\t\treturn { extraHead, hydrationScript, statusOverride };\n\t\t}\n\n\t\tconst key = `${collection}:${name}`;\n\t\textraHead += `\\n<link rel=\"modulepreload\" href=\"${modulePath}\" />`;\n\n\t\t// Store the module path and key for the inline loader\n\t\t// The actual loading happens via a blocking mechanism in the data script\n\t\t// Mark that this content module needs to be preloaded in the hydration script\n\t\thydrationScript += `<script>\n(globalThis.__REROUTE_CONTENT_PRELOAD__ ||= []).push({src:'${modulePath}',key:'${key}'});\n</script>`;\n\t} catch {\n\t\t// Return empty result on error\n\t}\n\n\treturn { extraHead, hydrationScript, statusOverride };\n}\n\nasync function isContentCollection(\n\tclientDir: string,\n\tcollection: string,\n): Promise<boolean> {\n\ttry {\n\t\t// In production (clientDir = .reroute), check for collection files instead of source dirs\n\t\tconst isProduction = clientDir.endsWith('.reroute');\n\n\t\tif (isProduction) {\n\t\t\t// Check if collection file exists in .reroute/collections/\n\t\t\tconst collectionFile = join(clientDir, 'collections', `${collection}.js`);\n\t\t\ttry {\n\t\t\t\tconst s = await stat(collectionFile);\n\t\t\t\treturn s?.isFile() ?? false;\n\t\t\t} catch {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\t// In development, check for content directory\n\t\tconst maybeDir = join(clientDir, 'routes', collection, 'content');\n\t\tconst s = await stat(maybeDir);\n\t\treturn typeof s?.isDirectory === 'function' ? s.isDirectory() : true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nasync function findLatestCandidate(\n\tchunkDir: string,\n\tcandidates: string[],\n): Promise<string> {\n\tlet latest = candidates[0];\n\tlet latestM = 0;\n\n\tfor (const candidateName of candidates) {\n\t\ttry {\n\t\t\tconst s = await stat(join(chunkDir, candidateName));\n\t\t\tif (s.mtimeMs >= latestM) {\n\t\t\t\tlatestM = s.mtimeMs;\n\t\t\t\tlatest = candidateName;\n\t\t\t}\n\t\t} catch {\n\t\t\t// Skip inaccessible files\n\t\t}\n\t}\n\n\treturn latest;\n}\n\nasync function findContentModulePath(\n\tcollection: string,\n\tname: string,\n\tclientDir: string,\n\tcwd: string,\n\tisWatchMode: boolean,\n): Promise<string | null> {\n\t// 1. Try registry mapping\n\ttry {\n\t\tconst registryPath = join(cwd, '.reroute', 'content.ts');\n\t\tconst reg = await dynamicImport(registryPath, isWatchMode);\n\t\tconst get = reg?.getContentEntry as\n\t\t\t| ((c: string, n: string) => { module?: string } | undefined)\n\t\t\t| undefined;\n\t\tconst entry = typeof get === 'function' ? get(collection, name) : undefined;\n\t\tconst moduleUrl = (entry as Doc)?.module as string | undefined;\n\n\t\tif (moduleUrl?.endsWith('.js')) {\n\t\t\treturn moduleUrl;\n\t\t}\n\t} catch {\n\t\t// Registry unavailable\n\t}\n\n\t// 2. Try newest chunk\n\ttry {\n\t\tconst chunkDir = join(cwd, '.reroute', 'chunks', collection);\n\t\tconst files = await readdir(chunkDir);\n\t\tconst candidates = files.filter(\n\t\t\t(n) => n.startsWith(`${name}.`) && n.endsWith('.js'),\n\t\t);\n\n\t\tif (candidates.length) {\n\t\t\tconst latest = await findLatestCandidate(chunkDir, candidates);\n\t\t\treturn `/${join('.reroute', 'chunks', collection, latest).replace(/\\\\+/g, '/')}`;\n\t\t}\n\t} catch {\n\t\t// Chunk directory unavailable\n\t}\n\n\t// 3. Try source files\n\ttry {\n\t\tconst tsx = join(clientDir, 'routes', collection, 'content', `${name}.tsx`);\n\t\tconst ts = join(clientDir, 'routes', collection, 'content', `${name}.ts`);\n\n\t\tif (await Bun.file(tsx).exists()) {\n\t\t\treturn `/${join('routes', collection, 'content', `${name}.tsx`).replace(/\\\\+/g, '/')}`;\n\t\t}\n\t\tif (await Bun.file(ts).exists()) {\n\t\t\treturn `/${join('routes', collection, 'content', `${name}.ts`).replace(/\\\\+/g, '/')}`;\n\t\t}\n\t} catch {\n\t\t// Source files unavailable\n\t}\n\n\treturn null;\n}\n\n/**\n * Reset SSR access tracking for a new request\n */\nexport function resetSSRAccessTracking(): void {\n\ttry {\n\t\t(globalThis as Doc).__REROUTE_SSR_ACCESSED__ = {};\n\t} catch {\n\t\t// Ignore errors in restricted environments\n\t}\n}\n\n/**\n * Create bundle preload link\n */\nexport function createBundlePreload(bundleUrl: string): string {\n\ttry {\n\t\tif (typeof bundleUrl === 'string' && bundleUrl.endsWith('.js')) {\n\t\t\treturn `\\n<link rel=\"modulepreload\" href=\"${bundleUrl}\" />`;\n\t\t}\n\t} catch {\n\t\t// Return empty on error\n\t}\n\treturn '';\n}\n",
|
|
@@ -42,7 +43,7 @@
|
|
|
42
43
|
"import { join } from './path';\n\n/**\n * Find and inline Tailwind CSS from .reroute directory\n * In watch mode, returns a link tag instead of inlining to ensure fresh CSS on every request\n */\nexport async function inlineTailwindCSS(\n\tclientDir: string,\n\tminify = false,\n\tisWatchMode = false,\n): Promise<string> {\n\ttry {\n\t\t// Check for bundled CSS first (compiled binary support)\n\t\tconst bundledCss = (globalThis as Record<string, unknown>)\n\t\t\t.__REROUTE_THEME_CSS__ as string | undefined;\n\n\t\tif (bundledCss) {\n\t\t\tconst css = minify ? minifyCSS(bundledCss) : bundledCss;\n\t\t\treturn `<style data-reroute=\"tailwind\">${css}</style>`;\n\t\t}\n\n\t\t// In watch mode, return a link tag to ensure fresh CSS\n\t\t// The server will serve the CSS from /.reroute/theme.css with no-cache headers\n\t\tif (isWatchMode) {\n\t\t\t// Add timestamp to bust browser cache\n\t\t\tconst timestamp = Date.now();\n\t\t\treturn `<link rel=\"stylesheet\" href=\"/.reroute/theme.css?t=${timestamp}\" data-reroute=\"tailwind\">`;\n\t\t}\n\n\t\t// Production mode: inline the CSS\n\t\tconst candidates = [\n\t\t\tjoin(clientDir, '..', '.reroute', 'theme.css'),\n\t\t\tjoin(clientDir, '..', '..', '.reroute', 'theme.css'),\n\t\t\tjoin(clientDir, '..', '..', '..', '.reroute', 'theme.css'),\n\t\t\tjoin(clientDir, '..', '..', '..', '..', '.reroute', 'theme.css'),\n\t\t];\n\n\t\tlet cssPath = '';\n\t\tfor (const p of candidates) {\n\t\t\tif (await Bun.file(p).exists()) {\n\t\t\t\tcssPath = p;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (!cssPath) return '';\n\n\t\tconst { readFileSync } = await import('node:fs');\n\t\tconst css = readFileSync(cssPath, 'utf-8');\n\n\t\treturn `<style data-reroute=\"tailwind\">${minifyCSS(css)}</style>`;\n\t} catch {\n\t\treturn '';\n\t}\n}\n\n/**\n * Basic CSS minification without external dependencies\n */\nfunction minifyCSS(css: string): string {\n\treturn (\n\t\tcss\n\t\t\t// Remove block comments\n\t\t\t.replace(/\\/\\*[\\s\\S]*?\\*\\//g, '')\n\t\t\t// Collapse whitespace\n\t\t\t.replace(/\\s+/g, ' ')\n\t\t\t// Remove space around selectors and operators\n\t\t\t.replace(/\\s*([{}:;,>+~])\\s*/g, '$1')\n\t\t\t// Remove final semicolons before closing brace\n\t\t\t.replace(/;}/g, '}')\n\t\t\t.trim()\n\t);\n}\n",
|
|
43
44
|
"import type { Span } from '@opentelemetry/api';\nimport { withParentSpan, withSpan } from 'reroute-js/telemetry/server';\nimport type { OGImageOptions, OGOptions } from '../../config';\nimport { cleanupPathScopedSSRData } from './cleanup';\nimport { loadCollections, setGlobalCollections } from './collections';\nimport { computeSSRData, setGlobalSSRData } from './compute';\nimport { extractPageMetadata } from './metadata';\nimport {\n\tcreateBundlePreload,\n\tpreloadContentModule,\n\tresetSSRAccessTracking,\n} from './preload';\nimport {\n\tcreateCollectionScript,\n\tcreateDataScript,\n\tcreateFeedsScript,\n\tcreateLlmsScript,\n\tprocessCollections,\n} from './scripts';\nimport { seedSSRModuleForPath } from './seed';\nimport { inlineTailwindCSS } from './styles';\nimport type { ComputeResult, SSR } from './types';\n\n/**\n * Common SSR options shared between render and stream modes\n */\ntype SSRSetupOptions = {\n\tpathname: string;\n\tclientDir: string;\n\tcwd: string;\n\tisWatchMode: boolean;\n\tbundleUrl: string;\n\tcachedCollections?: Record<string, unknown[]>;\n\tcachedTailwindCSS?: string;\n\tdebug?: boolean;\n\tmaxAge?: number;\n\tsearchParams?: URLSearchParams;\n\togConfig?: OGImageOptions;\n\togMetaConfig?: OGOptions;\n\tbaseUrl?: string;\n\tautoCanonical?: boolean;\n\tparentSpan?: Span | null;\n\t/** Request headers from the incoming HTTP request */\n\theaders?: Record<string, string>;\n\t/** Suffix to append to all page titles */\n\ttitleSuffix?: string;\n\t/** Maximum timeout in milliseconds for SSR setup */\n\ttimeout?: number;\n};\n\n/**\n * Result of SSR setup phase\n */\ntype SSRSetupResult = {\n\tssrData: Record<string, unknown>;\n\tssrError?: string;\n\tstatusContainer: { value: number | undefined };\n\tbyCollectionForSSR: Record<string, unknown[]>;\n\tbundlePreload: string;\n\tpreloadExtraHead: string;\n\tpreloadHydrationScript: string;\n\tpreloadStatusOverride?: number;\n\tinlineStyleTag: string;\n\tmetadataResult: {\n\t\tperPageHead: string;\n\t\tpageLang?: string;\n\t\tstatusOverride?: number;\n\t\t/** SSR export for dynamic head generation at stream end */\n\t\tssrExport?: SSR;\n\t};\n\tpending?: Promise<void>;\n};\n\ntype SSRSetupTimeoutState = {\n\ttimedOut: boolean;\n};\n\n/**\n * Perform common SSR setup steps shared between render and stream modes.\n * This includes seeding modules, computing data, loading collections, and preloading.\n */\nasync function performSSRSetup(\n\toptions: SSRSetupOptions,\n\tstreaming = false,\n): Promise<SSRSetupResult> {\n\tconst { pathname } = options;\n\tconst timeoutState: SSRSetupTimeoutState = { timedOut: false };\n\n\t// Add a global timeout for SSR setup to prevent indefinite hangs.\n\t// Consumer-provided timeout takes precedence.\n\tconst setupTimeout = options.timeout ?? (streaming ? 10000 : 30000);\n\tlet timeoutId: ReturnType<typeof setTimeout> | null = null;\n\tconst timeoutPromise = new Promise<never>((_, reject) => {\n\t\ttimeoutId = setTimeout(() => {\n\t\t\ttimeoutState.timedOut = true;\n\t\t\treject(\n\t\t\t\tnew Error(\n\t\t\t\t\t`[reroute] SSR setup timeout after ${setupTimeout}ms for ${pathname}`,\n\t\t\t\t),\n\t\t\t);\n\t\t}, setupTimeout);\n\t});\n\tconst setupPromise = withParentSpan(options.parentSpan, () =>\n\t\tperformSSRSetupInternal(options, streaming, timeoutState),\n\t);\n\tconst setupPromiseWithCleanup = setupPromise.finally(() => {\n\t\tif (timeoutState.timedOut) {\n\t\t\tcleanupPathScopedSSRData(pathname);\n\t\t}\n\t});\n\n\ttry {\n\t\treturn await Promise.race([setupPromiseWithCleanup, timeoutPromise]);\n\t} catch (error) {\n\t\tcleanupPathScopedSSRData(pathname);\n\t\tconsole.error('[reroute] SSR setup error:', error);\n\t\t// Return minimal setup result to allow page to render with fallback\n\t\treturn {\n\t\t\tssrData: {},\n\t\t\tssrError: error instanceof Error ? error.message : String(error),\n\t\t\tstatusContainer: { value: 500 },\n\t\t\tbyCollectionForSSR: {},\n\t\t\tbundlePreload: '',\n\t\t\tpreloadExtraHead: '',\n\t\t\tpreloadHydrationScript: '',\n\t\t\tinlineStyleTag: '',\n\t\t\tmetadataResult: { perPageHead: '' },\n\t\t};\n\t} finally {\n\t\tif (timeoutId) {\n\t\t\tclearTimeout(timeoutId);\n\t\t}\n\t}\n}\n\n/**\n * Internal SSR setup implementation (wrapped with timeout above)\n */\nasync function performSSRSetupInternal(\n\toptions: SSRSetupOptions,\n\tstreaming: boolean,\n\ttimeoutState: SSRSetupTimeoutState,\n): Promise<SSRSetupResult> {\n\tconst debug = options.debug ?? false;\n\tconst t0 = debug ? performance.now() : 0;\n\tconst {\n\t\tpathname,\n\t\tclientDir,\n\t\tcwd,\n\t\tisWatchMode,\n\t\tbundleUrl,\n\t\tmaxAge = 0,\n\t\tsearchParams,\n\t\togConfig,\n\t} = options;\n\tconst assertNotTimedOut = () => {\n\t\tif (timeoutState.timedOut) {\n\t\t\tthrow new Error(`[reroute] SSR setup cancelled for ${pathname}`);\n\t\t}\n\t};\n\n\t// Note: We don't reset SSR globals here because multiple requests may run concurrently.\n\t// Instead, we use pathname-scoped serialization to ensure each response only includes\n\t// its own data (see createContentHtmlScript and createSSRExportsScript).\n\n\t// 1. Seed content modules for SSR rendering\n\tawait withSpan('ssr.seed', async (span) => {\n\t\tspan.setAttribute('pathname', pathname);\n\t\tspan.setAttribute('streaming', streaming);\n\t\tawait seedSSRModuleForPath(pathname, clientDir, cwd, isWatchMode);\n\t\tif (debug)\n\t\t\tconsole.log(\n\t\t\t\t`[Setup] ${pathname} - seedModule: ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t);\n\t});\n\tassertNotTimedOut();\n\n\t// 2. Reset SSR access tracking and create bundle preload\n\tresetSSRAccessTracking();\n\tconst bundlePreload = createBundlePreload(bundleUrl);\n\n\t// 3. Preload content module\n\tconst preloadResult = await withSpan('ssr.preload', async (span) => {\n\t\tspan.setAttribute('pathname', pathname);\n\t\tconst result = await preloadContentModule(\n\t\t\tpathname,\n\t\t\tclientDir,\n\t\t\tcwd,\n\t\t\tisWatchMode,\n\t\t);\n\t\tspan.setAttribute('has_module', !!result.modulePath);\n\t\tif (debug)\n\t\t\tconsole.log(\n\t\t\t\t`[Setup] ${pathname} - preloadContent: ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t);\n\t\treturn result;\n\t});\n\tassertNotTimedOut();\n\n\t// 4. Compute SSR data\n\tconst computeResult: ComputeResult = await withSpan(\n\t\t'ssr.compute.data',\n\t\tasync (span) => {\n\t\t\tspan.setAttribute('pathname', pathname);\n\t\t\tspan.setAttribute('streaming', streaming);\n\t\t\tconst result = await computeSSRData(\n\t\t\t\tpathname,\n\t\t\t\tclientDir,\n\t\t\t\tcwd,\n\t\t\t\tisWatchMode,\n\t\t\t\t{ streaming, maxAge, headers: options.headers },\n\t\t\t\tsearchParams,\n\t\t\t);\n\t\t\tspan.setAttribute('has_error', !!result.error);\n\t\t\tspan.setAttribute('has_data', Object.keys(result.data).length > 0);\n\t\t\tif (debug)\n\t\t\t\tconsole.log(\n\t\t\t\t\t`[Setup] ${pathname} - computeSSRData: ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t\t);\n\t\t\treturn result;\n\t\t},\n\t);\n\tassertNotTimedOut();\n\n\tsetGlobalSSRData(computeResult.data);\n\n\t// 5. Load content collections (use cached if available)\n\tconst usingCachedCollections = !!options.cachedCollections;\n\tconst byCollectionForSSR = await withSpan(\n\t\t'ssr.load.collections',\n\t\tasync (span) => {\n\t\t\tspan.setAttribute('pathname', pathname);\n\t\t\tspan.setAttribute('cached', usingCachedCollections);\n\t\t\tconst collections = options.cachedCollections\n\t\t\t\t? options.cachedCollections\n\t\t\t\t: await loadCollections(cwd, isWatchMode);\n\t\t\tspan.setAttribute('collection_count', Object.keys(collections).length);\n\t\t\tif (debug)\n\t\t\t\tconsole.log(\n\t\t\t\t\t`[Setup] ${pathname} - loadCollections (cached: ${usingCachedCollections}): ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t\t);\n\t\t\treturn collections;\n\t\t},\n\t);\n\tassertNotTimedOut();\n\tsetGlobalCollections(byCollectionForSSR);\n\n\t// 6. Inline Tailwind CSS (use cached if available)\n\tconst usingCachedCSS = !!options.cachedTailwindCSS;\n\tconst inlineStyleTag = await withSpan('ssr.inline.css', async (span) => {\n\t\tconst css = options.cachedTailwindCSS\n\t\t\t? options.cachedTailwindCSS\n\t\t\t: await inlineTailwindCSS(clientDir, !streaming, isWatchMode);\n\t\tspan.setAttributes({\n\t\t\t'reroute.cached': usingCachedCSS,\n\t\t\t'reroute.css.size': css.length,\n\t\t});\n\t\tif (debug)\n\t\t\tconsole.log(\n\t\t\t\t`[Setup] ${pathname} - inlineTailwindCSS (cached: ${usingCachedCSS}): ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t);\n\t\treturn css;\n\t});\n\tassertNotTimedOut();\n\n\t// 7. Determine initial status override\n\tlet statusOverride = preloadResult.statusOverride;\n\tif (computeResult.statusContainer.value !== undefined) {\n\t\tstatusOverride = computeResult.statusContainer.value;\n\t}\n\n\t// 8. Extract page metadata (with SSR data for dynamic head tags)\n\tconst metadataResult = await withSpan(\n\t\t'ssr.extract.metadata',\n\t\tasync (span) => {\n\t\t\tconst result = await extractPageMetadata(\n\t\t\t\tpathname,\n\t\t\t\tclientDir,\n\t\t\t\tcwd,\n\t\t\t\tisWatchMode,\n\t\t\t\tstatusOverride,\n\t\t\t\togConfig,\n\t\t\t\toptions.ogMetaConfig,\n\t\t\t\toptions.baseUrl,\n\t\t\t\toptions.autoCanonical,\n\t\t\t\tcomputeResult.data,\n\t\t\t\toptions.titleSuffix,\n\t\t\t);\n\t\t\tspan.setAttributes({\n\t\t\t\t'reroute.pathname': pathname,\n\t\t\t\t'reroute.metadata.exists': !!result.perPageHead,\n\t\t\t});\n\t\t\tif (debug)\n\t\t\t\tconsole.log(\n\t\t\t\t\t`[Setup] ${pathname} - extractMetadata: ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t\t);\n\t\t\treturn result;\n\t\t},\n\t);\n\tassertNotTimedOut();\n\n\treturn {\n\t\tssrData: computeResult.data,\n\t\tssrError: computeResult.error,\n\t\tstatusContainer: computeResult.statusContainer,\n\t\tbyCollectionForSSR,\n\t\tbundlePreload,\n\t\tpreloadExtraHead: preloadResult.extraHead,\n\t\tpreloadHydrationScript: preloadResult.hydrationScript,\n\t\tpreloadStatusOverride: preloadResult.statusOverride,\n\t\tinlineStyleTag,\n\t\tmetadataResult,\n\t\tpending: computeResult.pending,\n\t};\n}\n\n/**\n * Generate hydration scripts for collections that were accessed during SSR.\n */\nfunction generateCollectionScripts(\n\tbyCollectionForSSR: Record<string, unknown[]>,\n): string {\n\ttry {\n\t\tconst g = globalThis as unknown as { __REROUTE_SSR_ACCESSED__?: unknown };\n\t\tconst acc = g.__REROUTE_SSR_ACCESSED__;\n\n\t\tif (acc) {\n\t\t\tconst { subset, partial } = processCollections(acc, byCollectionForSSR);\n\t\t\tif (Object.keys(subset).length > 0) {\n\t\t\t\treturn createCollectionScript(subset, partial);\n\t\t\t}\n\t\t}\n\t} catch {\n\t\t// Ignore errors\n\t}\n\treturn '';\n}\n\n/**\n * Generate all hydration scripts for SSR\n */\nfunction generateHydrationScripts(\n\tssrData: Record<string, unknown>,\n\tisWatchMode: boolean,\n\tssrError?: string,\n\tcollectionScripts = '',\n\tpreloadScript = '',\n\tbundleUrl = '',\n\tpathname = '',\n\tbrowserTelemetryConfig?: Record<string, unknown>,\n\ttraceContext?: { traceparent?: string; tracestate?: string },\n\ttitleSuffix?: string,\n): string {\n\tlet scripts = preloadScript;\n\n\t// Add collection scripts\n\tscripts += collectionScripts;\n\n\t// Add SSR data script (pathname is used to scope content HTML and exports to current request)\n\tscripts += createDataScript(\n\t\tssrData,\n\t\tisWatchMode ? ssrError : undefined,\n\t\tpathname,\n\t\tbrowserTelemetryConfig,\n\t\ttraceContext,\n\t\ttitleSuffix,\n\t);\n\n\t// Add feeds and llms scripts\n\tscripts += createFeedsScript();\n\tscripts += createLlmsScript();\n\n\t// Add bundle script\n\tif (bundleUrl) {\n\t\tscripts += `<script type=\"module\" src=\"${bundleUrl}\"></script>`;\n\t}\n\n\t// Add dev watcher in watch mode\n\tif (isWatchMode) {\n\t\tscripts += `<script type=\"module\" src=\"/__reroute_watch.js\"></script>`;\n\t}\n\n\treturn scripts;\n}\n\nexport type { SSRSetupOptions, SSRSetupResult };\nexport { performSSRSetup, generateCollectionScripts, generateHydrationScripts };\n",
|
|
44
45
|
"import type { TemplateParts } from './types';\n\n/**\n * Split HTML template into parts for streaming SSR.\n * Separates the template into head, root div, and tail sections.\n */\nexport function splitTemplate(html: string, appId = 'root'): TemplateParts {\n\tconst appIdEscaped = appId.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\n\tconst rootDivRegex = new RegExp(\n\t\t`(<div[^>]*\\\\bid=[\"']${appIdEscaped}[\"'][^>]*>)([\\\\s\\\\S]*?)(<\\\\/div>)`,\n\t\t'i',\n\t);\n\n\tconst match = html.match(rootDivRegex);\n\tif (!match || match.index === undefined) {\n\t\tthrow new Error(`Could not find app root div with id=\"${appId}\"`);\n\t}\n\n\tconst [fullMatch, rootStart, , rootEnd] = match;\n\tconst matchIndex = match.index;\n\n\treturn {\n\t\thtmlHead: html.substring(0, matchIndex),\n\t\trootStart,\n\t\trootEnd,\n\t\thtmlTail: html.substring(matchIndex + fullMatch.length),\n\t};\n}\n",
|
|
45
|
-
"// Types\n\n// Core utilities\nexport * from './cache';\nexport * from './cleanup';\n// Content handling\nexport * from './collections';\n// HTTP utilities\nexport * from './compression';\n// SSR compute\nexport * from './compute';\nexport { computeSSRDataForPath } from './data';\n// HTML handling\nexport * from './html';\nexport * from './imports';\nexport * from './layouts';\nexport * from './metadata';\nexport * from './mime';\nexport * from './modules';\nexport * from './path';\nexport * from './preload';\n// Script generation\nexport * from './scripts';\nexport * from './seed';\n// Shared setup\nexport * from './setup';\nexport * from './styles';\nexport * from './template';\nexport * from './types';\n",
|
|
46
|
+
"// Types\n\n// Core utilities\nexport * from './cache';\nexport * from './cleanup';\n// Content handling\nexport * from './collections';\n// HTTP utilities\nexport * from './compression';\n// SSR compute\nexport * from './compute';\nexport { computeSSRDataForPath } from './data';\n// HTML handling\nexport * from './html';\nexport * from './imports';\nexport * from './layouts';\nexport * from './metadata';\nexport * from './mime';\nexport * from './modules';\nexport * from './path';\nexport * from './preload';\nexport * from './route-match';\n// Script generation\nexport * from './scripts';\nexport * from './seed';\n// Shared setup\nexport * from './setup';\nexport * from './styles';\nexport * from './template';\nexport * from './types';\n",
|
|
46
47
|
"/** biome-ignore-all lint/suspicious/noExplicitAny: That's fine */\n/**\n * Serialize telemetry config for browser injection\n * Converts functions and RegExps to string representations that can be parsed in browser\n */\nexport function serializeBrowserTelemetryConfig(\n\tconfig: Record<string, unknown> | undefined,\n): Record<string, unknown> | undefined {\n\tif (!config) return undefined;\n\n\tconst serialized: Record<string, unknown> = {};\n\n\tfor (const [key, value] of Object.entries(config)) {\n\t\tif (key === 'shouldIgnoreUrl' && Array.isArray(value)) {\n\t\t\t// Serialize ignore patterns (strings and regexes only - functions not supported)\n\t\t\tserialized[key] = value\n\t\t\t\t.map((pattern) => {\n\t\t\t\t\tif (typeof pattern === 'string') {\n\t\t\t\t\t\treturn { type: 'string', value: pattern };\n\t\t\t\t\t}\n\t\t\t\t\tif (pattern instanceof RegExp) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: 'regex',\n\t\t\t\t\t\t\tvalue: pattern.source,\n\t\t\t\t\t\t\tflags: pattern.flags,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\t// Skip functions - closures cannot be serialized\n\t\t\t\t\treturn null;\n\t\t\t\t})\n\t\t\t\t.filter(Boolean);\n\t\t} else if (key === 'ignoreRoutes' && Array.isArray(value)) {\n\t\t\t// Same handling for ignoreRoutes\n\t\t\tserialized[key] = value\n\t\t\t\t.map((pattern) => {\n\t\t\t\t\tif (typeof pattern === 'string') {\n\t\t\t\t\t\treturn { type: 'string', value: pattern };\n\t\t\t\t\t}\n\t\t\t\t\tif (pattern instanceof RegExp) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttype: 'regex',\n\t\t\t\t\t\t\tvalue: pattern.source,\n\t\t\t\t\t\t\tflags: pattern.flags,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\t// Skip functions\n\t\t\t\t\treturn null;\n\t\t\t\t})\n\t\t\t\t.filter(Boolean);\n\t\t} else {\n\t\t\tserialized[key] = value;\n\t\t}\n\t}\n\n\treturn serialized;\n}\n",
|
|
47
48
|
"import type { Span } from '@opentelemetry/api';\nimport dedent from 'dedent';\nimport { cloneElement, type ReactElement } from 'react';\nimport { renderToString } from 'react-dom/server';\nimport {\n\tgetTraceContextForInjection,\n\twithSpan,\n\twithSpanSync,\n} from 'reroute-js/telemetry/server';\nimport { loadConfig, type OGImageOptions, type OGOptions } from '../config';\nimport {\n\ttype Doc,\n\tduplicateQueryParamData,\n\tgenerateCollectionScripts,\n\tgenerateHydrationScripts,\n\tperformSSRSetup,\n\tsetGlobalSSRData,\n} from './lib';\nimport { applyIndexTemplate, loadIndexHtml } from './lib/html';\n\ntype SSRRenderOptions = {\n\tpathname: string;\n\trootComponent: ReactElement;\n\tclientDir: string;\n\tcwd: string;\n\tisWatchMode: boolean;\n\tbundleUrl: string;\n\tcachedCollections?: Record<string, unknown[]>;\n\tcachedTailwindCSS?: string;\n\thead?: string;\n\tlang?: string;\n\tappId?: string;\n\tminify?: boolean;\n\tmaxAge?: number;\n\tsearchParams?: URLSearchParams;\n\togConfig?: OGImageOptions;\n\togMetaConfig?: OGOptions;\n\tbaseUrl?: string;\n\tautoCanonical?: boolean;\n\tparentSpan?: Span | null;\n\t/** Request headers from the incoming HTTP request */\n\theaders?: Record<string, string>;\n\t/** Suffix to append to all page titles */\n\ttitleSuffix?: string;\n};\n\ntype SSRRenderResult = {\n\thtml: string;\n\tstatus: number;\n};\n\n/**\n * Render a React component to a complete HTML document for SSR.\n * Uses synchronous rendering (renderToString) for full HTML generation.\n */\nasync function renderSSRDocument(\n\toptions: SSRRenderOptions,\n): Promise<SSRRenderResult> {\n\tconst {\n\t\tpathname,\n\t\trootComponent,\n\t\tclientDir,\n\t\tcwd,\n\t\tisWatchMode,\n\t\tbundleUrl,\n\t\thead = '',\n\t\tlang = 'en',\n\t\tappId = 'root',\n\t\tmaxAge = 0,\n\t\tsearchParams,\n\t\togConfig,\n\t} = options;\n\n\t// Perform shared SSR setup\n\tconst setup = await performSSRSetup(\n\t\t{\n\t\t\tpathname,\n\t\t\tclientDir,\n\t\t\tcwd,\n\t\t\tisWatchMode,\n\t\t\tparentSpan: options.parentSpan,\n\t\t\tbundleUrl,\n\t\t\tmaxAge,\n\t\t\tsearchParams,\n\t\t\togConfig,\n\t\t\togMetaConfig: options.ogMetaConfig,\n\t\t\tbaseUrl: options.baseUrl,\n\t\t\tautoCanonical: options.autoCanonical,\n\t\t\tcachedCollections: options.cachedCollections,\n\t\t\tcachedTailwindCSS: options.cachedTailwindCSS,\n\t\t\theaders: options.headers,\n\t\t\ttitleSuffix: options.titleSuffix,\n\t\t},\n\t\tfalse, // not streaming\n\t);\n\n\t// Duplicate data for query param routes\n\tconst duplicatedData = duplicateQueryParamData(setup.ssrData);\n\tsetGlobalSSRData(duplicatedData);\n\n\t// Render React component to string\n\tconst appHtml = await withSpan('ssr.render.react', async (span) => {\n\t\tconst componentWithPathname = cloneElement<Doc>(rootComponent, {\n\t\t\tpathname,\n\t\t\tsearchParams,\n\t\t} as Doc);\n\t\tspan.setAttribute('reroute.pathname', pathname);\n\t\tconst html = renderToString(componentWithPathname);\n\t\tspan.setAttribute('reroute.html.final.size', html.length);\n\t\treturn html;\n\t});\n\n\t// Load base template\n\tconst baseTemplate = await withSpan('ssr.load.template', async (span) => {\n\t\tconst template = await loadIndexHtml(clientDir);\n\t\tspan.setAttribute('reroute.template.size', template.length);\n\t\treturn template;\n\t});\n\n\t// Generate collection scripts from accessed collections\n\tconst collectionScripts = generateCollectionScripts(setup.byCollectionForSSR);\n\n\t// Load config to get browser telemetry settings\n\tconst config = await loadConfig(cwd);\n\tconst browserTelemetryConfigRaw = config.telemetry?.browser as\n\t\t| Record<string, unknown>\n\t\t| undefined;\n\n\t// Serialize browser telemetry config (convert functions to strings for JSON)\n\tconst { serializeBrowserTelemetryConfig } = await import('./lib/serialize');\n\tconst browserTelemetryConfig = serializeBrowserTelemetryConfig(\n\t\tbrowserTelemetryConfigRaw,\n\t);\n\n\t// Extract trace context from parent span for distributed tracing\n\tconst traceContext = getTraceContextForInjection(options.parentSpan);\n\n\t// Generate all hydration scripts\n\tconst hydrationScript = await withSpan(\n\t\t'ssr.generate.scripts',\n\t\tasync (span) => {\n\t\t\tconst script = generateHydrationScripts(\n\t\t\t\tsetup.ssrData,\n\t\t\t\tisWatchMode,\n\t\t\t\tsetup.ssrError,\n\t\t\t\tcollectionScripts,\n\t\t\t\tsetup.preloadHydrationScript,\n\t\t\t\tbundleUrl,\n\t\t\t\tpathname,\n\t\t\t\tbrowserTelemetryConfig,\n\t\t\t\ttraceContext,\n\t\t\t\toptions.titleSuffix,\n\t\t\t);\n\t\t\tspan.setAttribute('reroute.scripts.size', script.length);\n\t\t\treturn script;\n\t\t},\n\t);\n\n\t// Determine final status (only override if value is set)\n\tlet statusOverride = setup.preloadStatusOverride;\n\tif (setup.statusContainer.value !== undefined) {\n\t\tstatusOverride = setup.statusContainer.value;\n\t}\n\tif (setup.metadataResult.statusOverride !== undefined) {\n\t\tstatusOverride = setup.metadataResult.statusOverride;\n\t}\n\n\t// Build combined head content\n\tconst extraHead = setup.bundlePreload + setup.preloadExtraHead;\n\tconst combinedHead = dedent(\n\t\t[\n\t\t\tdedent(head) || '',\n\t\t\tdedent(extraHead),\n\t\t\tdedent(setup.metadataResult.perPageHead),\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join('\\n'),\n\t);\n\n\t// Apply template with SSR content\n\tconst html = withSpanSync('ssr.apply.template', (span) => {\n\t\tconst result = applyIndexTemplate(baseTemplate, appHtml, {\n\t\t\thead: [setup.inlineStyleTag, combinedHead].filter(Boolean).join('\\n'),\n\t\t\thydrationScript,\n\t\t\tlang: setup.metadataResult.pageLang || lang,\n\t\t\tappId,\n\t\t});\n\t\tspan.setAttributes({\n\t\t\t'reroute.html.final.size': result.length,\n\t\t\t'reroute.html.original.size': appHtml.length,\n\t\t});\n\t\treturn result;\n\t});\n\n\treturn {\n\t\thtml,\n\t\tstatus: statusOverride || 200,\n\t};\n}\n\nexport { renderSSRDocument, type SSRRenderOptions, type SSRRenderResult };\n",
|
|
48
49
|
"/**\n * Text and Markdown formatting for LLM-optimized content\n * Focuses on token efficiency: minimal metadata, maximum useful content\n *\n * Zero dependencies - uses lightweight regex-based conversion\n * Works great for 99% of cases without adding runtime deps\n */\n\n/**\n * Format content as plain text (.txt)\n * Token-efficient: No frontmatter, no URLs, just title + body\n */\nexport function formatAsText(content: {\n\ttitle?: string;\n\tbody: string;\n}): string {\n\tconst parts: string[] = [];\n\n\t// Add title if present (single line, no markdown)\n\tif (content.title) {\n\t\tparts.push(content.title);\n\t\tparts.push(''); // Blank line after title\n\t}\n\n\t// Add body (already cleaned text)\n\tparts.push(content.body);\n\n\treturn parts.join('\\n');\n}\n\n/**\n * Format content as markdown (.md)\n * Token-efficient: No frontmatter, but preserves markdown formatting\n */\nexport function formatAsMarkdown(content: {\n\ttitle?: string;\n\tmarkdown: string;\n}): string {\n\tconst parts: string[] = [];\n\n\t// Add title as h1 if present\n\tif (content.title) {\n\t\tparts.push(`# ${content.title}`);\n\t\tparts.push(''); // Blank line after title\n\t}\n\n\t// Add markdown content (preserves formatting)\n\tparts.push(content.markdown);\n\n\treturn parts.join('\\n');\n}\n\n/**\n * Strip HTML tags from text, preserving structure\n * Lightweight regex-based conversion with link preservation\n */\nexport function stripHtmlTags(html: string): string {\n\tlet text = html;\n\n\t// Convert links to readable format: \"text (url)\"\n\ttext = text.replace(\n\t\t/<a[^>]*href=[\"']([^\"']*)[\"'][^>]*>(.*?)<\\/a>/gi,\n\t\t'$2 ($1)',\n\t);\n\n\t// Replace block elements with newlines\n\ttext = text.replace(\n\t\t/<\\/(div|p|h[1-6]|li|tr|section|article|header|footer|nav)>/gi,\n\t\t'\\n',\n\t);\n\ttext = text.replace(/<br\\s*\\/?>/gi, '\\n');\n\ttext = text.replace(/<hr\\s*\\/?>/gi, '\\n---\\n');\n\n\t// Replace list items with bullets\n\ttext = text.replace(/<li[^>]*>/gi, '\\n• ');\n\n\t// Add spacing for headings\n\ttext = text.replace(/<h[1-6][^>]*>/gi, '\\n\\n');\n\ttext = text.replace(/<\\/h[1-6]>/gi, '\\n');\n\n\t// Remove script and style tags completely\n\ttext = text.replace(\n\t\t/<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n\t\t'',\n\t);\n\ttext = text.replace(/<style\\b[^<]*(?:(?!<\\/style>)<[^<]*)*<\\/style>/gi, '');\n\n\t// Remove all other HTML tags\n\ttext = text.replace(/<[^>]+>/g, '');\n\n\t// Decode common HTML entities\n\ttext = text.replace(/ /g, ' ');\n\ttext = text.replace(/&/g, '&');\n\ttext = text.replace(/</g, '<');\n\ttext = text.replace(/>/g, '>');\n\ttext = text.replace(/"/g, '\"');\n\ttext = text.replace(/'/g, \"'\");\n\ttext = text.replace(/'/g, \"'\");\n\ttext = text.replace(/'/g, \"'\");\n\n\t// Clean up excessive whitespace\n\ttext = text.replace(/[ \\t]+/g, ' '); // Multiple spaces → single space\n\ttext = text.replace(/\\n\\s+\\n/g, '\\n\\n'); // Clean blank lines\n\ttext = text.replace(/\\n{3,}/g, '\\n\\n'); // Max 2 consecutive newlines\n\n\treturn text.trim();\n}\n\n/**\n * Extract title from HTML content\n * Looks for h1, title tag, or first heading\n */\nexport function extractTitle(html: string): string | undefined {\n\t// Try h1 first (most common)\n\tconst h1Match = html.match(/<h1[^>]*>(.*?)<\\/h1>/i);\n\tif (h1Match) {\n\t\treturn stripHtmlTags(h1Match[1]).trim();\n\t}\n\n\t// Try title tag\n\tconst titleMatch = html.match(/<title[^>]*>(.*?)<\\/title>/i);\n\tif (titleMatch) {\n\t\treturn stripHtmlTags(titleMatch[1]).trim();\n\t}\n\n\t// Try any heading\n\tconst headingMatch = html.match(/<h[1-6][^>]*>(.*?)<\\/h[1-6]>/i);\n\tif (headingMatch) {\n\t\treturn stripHtmlTags(headingMatch[1]).trim();\n\t}\n\n\treturn undefined;\n}\n\n/**\n * Convert HTML to markdown\n * Lightweight regex-based conversion that preserves links and structure\n */\nexport function htmlToMarkdown(html: string): string {\n\tlet md = html;\n\n\t// Convert headings\n\tmd = md.replace(/<h1[^>]*>(.*?)<\\/h1>/gi, '\\n# $1\\n');\n\tmd = md.replace(/<h2[^>]*>(.*?)<\\/h2>/gi, '\\n## $1\\n');\n\tmd = md.replace(/<h3[^>]*>(.*?)<\\/h3>/gi, '\\n### $1\\n');\n\tmd = md.replace(/<h4[^>]*>(.*?)<\\/h4>/gi, '\\n#### $1\\n');\n\tmd = md.replace(/<h5[^>]*>(.*?)<\\/h5>/gi, '\\n##### $1\\n');\n\tmd = md.replace(/<h6[^>]*>(.*?)<\\/h6>/gi, '\\n###### $1\\n');\n\n\t// Convert links\n\tmd = md.replace(/<a[^>]*href=\"([^\"]*)\"[^>]*>(.*?)<\\/a>/gi, '[$2]($1)');\n\n\t// Convert images\n\tmd = md.replace(\n\t\t/<img[^>]*src=\"([^\"]*)\"[^>]*alt=\"([^\"]*)\"[^>]*\\/?>/gi,\n\t\t'',\n\t);\n\n\t// Convert strong/bold\n\tmd = md.replace(/<(strong|b)(?:\\s+[^>]*)?>(.+?)<\\/\\1>/gi, '**$2**');\n\n\t// Convert emphasis/italic\n\tmd = md.replace(/<(em|i)(?:\\s+[^>]*)?>(.+?)<\\/\\1>/gi, '*$2*');\n\n\t// Convert code blocks\n\tmd = md.replace(\n\t\t/<pre[^>]*><code[^>]*>(.*?)<\\/code><\\/pre>/gis,\n\t\t'\\n```\\n$1\\n```\\n',\n\t);\n\tmd = md.replace(/<code[^>]*>(.*?)<\\/code>/gi, '`$1`');\n\n\t// Convert lists (process li elements first, then containers)\n\tmd = md.replace(/<li[^>]*>(.*?)<\\/li>/gis, '\\n- $1');\n\tmd = md.replace(/<\\/?ul[^>]*>/gi, '\\n');\n\tmd = md.replace(/<\\/?ol[^>]*>/gi, '\\n');\n\n\t// Convert paragraphs\n\tmd = md.replace(/<p[^>]*>/gi, '\\n');\n\tmd = md.replace(/<\\/p>/gi, '\\n');\n\n\t// Convert line breaks\n\tmd = md.replace(/<br\\s*\\/?>/gi, '\\n');\n\tmd = md.replace(/<hr\\s*\\/?>/gi, '\\n---\\n');\n\n\t// Remove script and style tags\n\tmd = md.replace(/<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi, '');\n\tmd = md.replace(/<style\\b[^<]*(?:(?!<\\/style>)<[^<]*)*<\\/style>/gi, '');\n\n\t// Remove remaining HTML tags\n\tmd = md.replace(/<[^>]+>/g, '');\n\n\t// Decode HTML entities\n\tmd = md.replace(/ /g, ' ');\n\tmd = md.replace(/&/g, '&');\n\tmd = md.replace(/</g, '<');\n\tmd = md.replace(/>/g, '>');\n\tmd = md.replace(/"/g, '\"');\n\tmd = md.replace(/'/g, \"'\");\n\tmd = md.replace(/'/g, \"'\");\n\tmd = md.replace(/'/g, \"'\");\n\n\t// Clean up excessive whitespace\n\tmd = md.replace(/[ \\t]+/g, ' ');\n\tmd = md.replace(/\\n\\s+\\n/g, '\\n\\n');\n\tmd = md.replace(/\\n{3,}/g, '\\n\\n');\n\n\treturn md.trim();\n}\n\n/**\n * Generate footer for llms.txt index\n * Educates LLMs about available formats\n */\nexport function generateLLMsFooter(): string {\n\treturn '---\\nFormats: .txt | .md | Accept: text/plain | Accept: text/markdown';\n}\n",
|
|
@@ -78,7 +79,7 @@
|
|
|
78
79
|
"// Small helpers for JSON responses with caching/ETag\n// Keep local to Elysia package to avoid core dependency surface changes\n\n// biome-ignore lint/suspicious/noExplicitAny: Bun env types vary\ntype Any = any;\n\n/**\n * Simple djb2 hash for strings (fallback when Bun.hash unavailable)\n */\nfunction djb2Hash(str: string): number {\n\tlet hash = 5381;\n\tfor (let i = 0; i < str.length; i++) {\n\t\thash = (hash * 33) ^ str.charCodeAt(i);\n\t}\n\treturn hash >>> 0; // Convert to unsigned 32-bit\n}\n\nconst makeETag = (s: string) => {\n\ttry {\n\t\t// Prefer Bun.hash if available (fast)\n\t\tconst bunHash = (globalThis as Any)?.Bun?.hash;\n\t\tconst h = typeof bunHash === 'function' ? bunHash(s) : djb2Hash(s);\n\t\treturn `W/\"${s.length.toString(16)}-${Number(h).toString(36)}\"`;\n\t} catch {\n\t\t// Fallback: djb2 hash\n\t\treturn `W/\"${s.length.toString(16)}-${djb2Hash(s).toString(36)}\"`;\n\t}\n};\n\nconst getIfNoneMatch = (headers?: Headers | Record<string, string>) => {\n\ttry {\n\t\tif (!headers) return undefined;\n\t\t// Elysia provides Headers-like and plain-record in different hooks\n\t\t// Try .get first, then record access in lower/normal case\n\t\tconst h: Any = headers as Any;\n\t\tif (typeof h?.get === 'function')\n\t\t\treturn String(h.get('if-none-match') || '');\n\t\treturn String((h['if-none-match'] || h['If-None-Match'] || '') as string);\n\t} catch {\n\t\treturn undefined;\n\t}\n};\n\nexport function jsonWithCache(\n\tpayload: Any,\n\tcacheControl: string,\n\treqHeaders?: Headers | Record<string, string>,\n\tcacheStatus?: 'HIT' | 'MISS',\n): Response {\n\tconst body = typeof payload === 'string' ? payload : JSON.stringify(payload);\n\tconst etag = makeETag(body);\n\tconst inm = getIfNoneMatch(reqHeaders) || '';\n\n\tconst headers: Record<string, string> = {\n\t\tETag: etag,\n\t\t'Cache-Control': cacheControl,\n\t};\n\n\tif (cacheStatus) {\n\t\theaders['Reroute-Cache'] = cacheStatus;\n\t}\n\n\tif (etag && inm && inm === etag) {\n\t\treturn new Response(null, {\n\t\t\tstatus: 304,\n\t\t\theaders,\n\t\t});\n\t}\n\n\treturn new Response(body, {\n\t\theaders: {\n\t\t\t...headers,\n\t\t\t'Content-Type': 'application/json; charset=utf-8',\n\t\t},\n\t});\n}\n\nexport function jsonError(message: string, status = 500): Response {\n\treturn new Response(JSON.stringify({ error: message }), {\n\t\tstatus,\n\t\theaders: { 'Content-Type': 'application/json; charset=utf-8' },\n\t});\n}\n",
|
|
79
80
|
"import type { Elysia } from 'elysia';\nimport { NotFoundError } from 'elysia';\nimport type { ReactElement } from 'react';\nimport {\n\textractContentForLLMs,\n\tgenerateLLMsFullContent,\n\tgenerateLLMsIndex,\n\ttype LLMsOptions,\n\tTTLCache,\n\ttype TTLCache as TTLCacheType,\n} from 'reroute-js/core';\nimport {\n\tbuildLlmsCacheKey,\n\tbuildLlmsFullCacheKey,\n\tbuildLlmsIndexCacheKey,\n\tcalculateLlmsDefaults,\n\tformatByteSize,\n\tgetCollectionLlmsRoutes,\n\tgetCollectionMeta,\n\tgetRootLlmsRoutes,\n\tisLlmsSpecificRoute,\n\tparseContentFormat,\n\tshouldEnableContentNegotiation,\n} from '../libs/llms';\nimport { markdownResponse, textResponse } from '../libs/response';\nimport type { Any } from '../types';\n\ntype LLMsRouteOptions = {\n\trootComponent: ReactElement;\n\tclientDir: string;\n\tcwd: string;\n\tisWatchMode: boolean;\n\tgetBundleUrl: () => Promise<string>;\n\tmaxAge: number;\n\tdirective: string;\n\tllmsConfig: LLMsOptions;\n\tcollections: string[];\n\tdataCache: TTLCacheType<string, unknown>;\n};\n\nexport function registerLLMsRoutes(\n\tapp: Elysia,\n\toptions: LLMsRouteOptions,\n): Elysia {\n\tconst {\n\t\trootComponent,\n\t\tclientDir,\n\t\tcwd,\n\t\tisWatchMode,\n\t\tgetBundleUrl,\n\t\tmaxAge,\n\t\tdirective,\n\t\tllmsConfig,\n\t\tcollections,\n\t} = options;\n\n\tconst defaults = calculateLlmsDefaults(llmsConfig, maxAge);\n\tconst { ttlMs, ttlMsFull, baseUrl } = defaults;\n\t// Use TTLCache for automatic expiration\n\tconst llmsCache = new TTLCache<string, string>(100, ttlMs);\n\tconst availableLlms: string[] = [];\n\n\tconst responseOpts = {\n\t\tmaxAge: defaults.maxAge,\n\t\tdirective: directive as 'public',\n\t};\n\tconst responseOptsFull = {\n\t\tmaxAge: defaults.maxAgeFull,\n\t\tdirective: directive as 'public',\n\t};\n\n\t// Add root-level routes\n\tavailableLlms.push(...getRootLlmsRoutes(llmsConfig));\n\n\t// /llms.txt index route\n\tif (llmsConfig.enableIndex !== false) {\n\t\tapp.get('/llms.txt', async () => {\n\t\t\tconst cacheKey = buildLlmsIndexCacheKey();\n\n\t\t\ttry {\n\t\t\t\tconst cached = llmsCache.get(cacheKey);\n\t\t\t\tif (cached) {\n\t\t\t\t\treturn textResponse(cached, {\n\t\t\t\t\t\t...responseOpts,\n\t\t\t\t\t\tcacheStatus: 'HIT',\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst content = await generateLLMsIndex({\n\t\t\t\t\tcwd,\n\t\t\t\t\tcollections,\n\t\t\t\t\tbaseUrl,\n\t\t\t\t\tisWatchMode,\n\t\t\t\t\tllmsConfig,\n\t\t\t\t});\n\n\t\t\t\tllmsCache.set(cacheKey, content);\n\n\t\t\t\treturn textResponse(content, { ...responseOpts, cacheStatus: 'MISS' });\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[reroute/llms] Failed to generate index:', error);\n\t\t\t\tthrow new NotFoundError('Failed to generate LLM index');\n\t\t\t}\n\t\t});\n\t}\n\n\t// /llms-full.txt bundle route\n\tif (llmsConfig.enableFullContent !== false) {\n\t\tapp.get('/llms-full.txt', async () => {\n\t\t\tconst cacheKey = buildLlmsFullCacheKey();\n\n\t\t\ttry {\n\t\t\t\tconst cached = llmsCache.get(cacheKey);\n\t\t\t\tif (cached) {\n\t\t\t\t\treturn textResponse(cached, {\n\t\t\t\t\t\t...responseOptsFull,\n\t\t\t\t\t\tcacheStatus: 'HIT',\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconsole.log(\n\t\t\t\t\t'[reroute/llms] Generating llms-full.txt (may take a moment for large sites)...',\n\t\t\t\t);\n\n\t\t\t\tconst bundleUrl = await getBundleUrl();\n\t\t\t\tconst { content, stats } = await generateLLMsFullContent({\n\t\t\t\t\trootComponent,\n\t\t\t\t\tcwd,\n\t\t\t\t\tclientDir,\n\t\t\t\t\tcollections,\n\t\t\t\t\tbaseUrl,\n\t\t\t\t\tisWatchMode,\n\t\t\t\t\tbundleUrl,\n\t\t\t\t\tllmsConfig,\n\t\t\t\t});\n\n\t\t\t\tconsole.log(\n\t\t\t\t\t`[reroute/llms] Generated llms-full.txt: ${stats.itemCount} items, ${formatByteSize(stats.byteSize)}MB`,\n\t\t\t\t);\n\n\t\t\t\tllmsCache.set(cacheKey, content, ttlMsFull);\n\n\t\t\t\treturn textResponse(content, {\n\t\t\t\t\t...responseOptsFull,\n\t\t\t\t\tcacheStatus: 'MISS',\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[reroute/llms] Failed to generate full content:', error);\n\t\t\t\tthrow new NotFoundError('Failed to generate LLM full content');\n\t\t\t}\n\t\t});\n\t}\n\n\t// Collection-specific routes\n\tfor (const collection of collections) {\n\t\tif (llmsConfig.excludeCollections?.includes(collection)) continue;\n\n\t\tconst meta = getCollectionMeta(collection, llmsConfig);\n\n\t\t// Track collection routes\n\t\tavailableLlms.push(...getCollectionLlmsRoutes(collection, llmsConfig));\n\n\t\t// Collection index\n\t\tif (llmsConfig.enableIndex !== false) {\n\t\t\tapp.get(`/${collection}/llms.txt`, async () => {\n\t\t\t\tconst cacheKey = buildLlmsIndexCacheKey(collection);\n\n\t\t\t\ttry {\n\t\t\t\t\tconst cached = llmsCache.get(cacheKey);\n\t\t\t\t\tif (cached) {\n\t\t\t\t\t\treturn textResponse(cached, {\n\t\t\t\t\t\t\t...responseOpts,\n\t\t\t\t\t\t\tcacheStatus: 'HIT',\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tconst content = await generateLLMsIndex({\n\t\t\t\t\t\tcwd,\n\t\t\t\t\t\tcollections: [collection],\n\t\t\t\t\t\tbaseUrl,\n\t\t\t\t\t\tisWatchMode,\n\t\t\t\t\t\tllmsConfig: {\n\t\t\t\t\t\t\t...llmsConfig,\n\t\t\t\t\t\t\tsiteName: meta.title,\n\t\t\t\t\t\t\tsiteDescription: meta.description,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\n\t\t\t\t\tllmsCache.set(cacheKey, content);\n\n\t\t\t\t\treturn textResponse(content, {\n\t\t\t\t\t\t...responseOpts,\n\t\t\t\t\t\tcacheStatus: 'MISS',\n\t\t\t\t\t});\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t`[reroute/llms] Failed to generate ${collection} index:`,\n\t\t\t\t\t\terror,\n\t\t\t\t\t);\n\t\t\t\t\tthrow new NotFoundError('Failed to generate LLM index');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t// Collection full content\n\t\tif (llmsConfig.enableFullContent !== false) {\n\t\t\tapp.get(`/${collection}/llms-full.txt`, async () => {\n\t\t\t\tconst cacheKey = buildLlmsFullCacheKey(collection);\n\n\t\t\t\ttry {\n\t\t\t\t\tconst cached = llmsCache.get(cacheKey);\n\t\t\t\t\tif (cached) {\n\t\t\t\t\t\treturn textResponse(cached, {\n\t\t\t\t\t\t\t...responseOptsFull,\n\t\t\t\t\t\t\tcacheStatus: 'HIT',\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t`[reroute/llms] Generating ${collection}/llms-full.txt...`,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst bundleUrl = await getBundleUrl();\n\t\t\t\t\tconst { content, stats } = await generateLLMsFullContent({\n\t\t\t\t\t\trootComponent,\n\t\t\t\t\t\tcwd,\n\t\t\t\t\t\tclientDir,\n\t\t\t\t\t\tcollections: [collection],\n\t\t\t\t\t\tbaseUrl,\n\t\t\t\t\t\tisWatchMode,\n\t\t\t\t\t\tbundleUrl,\n\t\t\t\t\t\tllmsConfig: {\n\t\t\t\t\t\t\t...llmsConfig,\n\t\t\t\t\t\t\tsiteName: meta.title,\n\t\t\t\t\t\t\tsiteDescription: meta.description,\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\n\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t`[reroute/llms] Generated ${collection}/llms-full.txt: ${stats.itemCount} items, ${formatByteSize(stats.byteSize)}MB`,\n\t\t\t\t\t);\n\n\t\t\t\t\tllmsCache.set(cacheKey, content, ttlMsFull);\n\n\t\t\t\t\treturn textResponse(content, {\n\t\t\t\t\t\t...responseOptsFull,\n\t\t\t\t\t\tcacheStatus: 'MISS',\n\t\t\t\t\t});\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t`[reroute/llms] Failed to generate ${collection} full content:`,\n\t\t\t\t\t\terror,\n\t\t\t\t\t);\n\t\t\t\t\tthrow new NotFoundError('Failed to generate LLM full content');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t// Content negotiation hook\n\tif (shouldEnableContentNegotiation(llmsConfig)) {\n\t\tasync function handleLLMRequest(\n\t\t\tpathname: string,\n\t\t\tformat: 'txt' | 'md',\n\t\t\tacceptEncoding: string,\n\t\t) {\n\t\t\tconst cacheKey = buildLlmsCacheKey(pathname, format, acceptEncoding);\n\n\t\t\tconst cached = llmsCache.get(cacheKey);\n\t\t\tif (cached) {\n\t\t\t\treturn format === 'md'\n\t\t\t\t\t? markdownResponse(cached, {\n\t\t\t\t\t\t\t...responseOpts,\n\t\t\t\t\t\t\tcacheStatus: 'HIT',\n\t\t\t\t\t\t})\n\t\t\t\t\t: textResponse(cached, {\n\t\t\t\t\t\t\t...responseOpts,\n\t\t\t\t\t\t\textraHeaders: { Vary: 'Accept' },\n\t\t\t\t\t\t\tcacheStatus: 'HIT',\n\t\t\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst bundleUrl = await getBundleUrl();\n\t\t\tconst content = await extractContentForLLMs({\n\t\t\t\tpathname,\n\t\t\t\trootComponent,\n\t\t\t\tclientDir,\n\t\t\t\tcwd,\n\t\t\t\tisWatchMode,\n\t\t\t\tbundleUrl,\n\t\t\t\tformat,\n\t\t\t\tllmsConfig,\n\t\t\t});\n\n\t\t\tllmsCache.set(cacheKey, content);\n\n\t\t\treturn format === 'md'\n\t\t\t\t? markdownResponse(content, { ...responseOpts, cacheStatus: 'MISS' })\n\t\t\t\t: textResponse(content, {\n\t\t\t\t\t\t...responseOpts,\n\t\t\t\t\t\textraHeaders: { Vary: 'Accept' },\n\t\t\t\t\t\tcacheStatus: 'MISS',\n\t\t\t\t\t});\n\t\t}\n\n\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Content negotiation involves checking multiple extensions and headers\n\t\tapp.onBeforeHandle(async ({ request }) => {\n\t\t\tconst url = new URL(request.url);\n\t\t\tconst pathname = url.pathname;\n\n\t\t\t// Skip LLM-specific routes\n\t\t\tif (isLlmsSpecificRoute(pathname)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst acceptHeader = request.headers.get('accept') ?? '';\n\t\t\tconst parsed = parseContentFormat(pathname, acceptHeader, llmsConfig);\n\n\t\t\tif (!parsed) return;\n\n\t\t\tconst { format, cleanPath } = parsed;\n\n\t\t\ttry {\n\t\t\t\tconst acceptEncoding = request.headers.get('accept-encoding') ?? '';\n\t\t\t\treturn await handleLLMRequest(\n\t\t\t\t\tcleanPath,\n\t\t\t\t\tformat as 'txt' | 'md',\n\t\t\t\t\tacceptEncoding,\n\t\t\t\t);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(\n\t\t\t\t\t`[reroute/llms] Failed to extract content for ${cleanPath}:`,\n\t\t\t\t\terror,\n\t\t\t\t);\n\n\t\t\t\tif (\n\t\t\t\t\terror instanceof Error &&\n\t\t\t\t\t(error.message.includes('excluded') ||\n\t\t\t\t\t\terror.message.includes('not found'))\n\t\t\t\t) {\n\t\t\t\t\tthrow new NotFoundError(\n\t\t\t\t\t\t'Route not found or excluded from LLM features',\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tthrow new NotFoundError('Failed to extract content');\n\t\t\t}\n\t\t});\n\t}\n\n\t// Store globally for SSR injection\n\t(globalThis as Any).__REROUTE_AVAILABLE_LLMS__ = availableLlms;\n\n\t// Provide cache clearing method\n\t(app as Any)._clearLLMsCache = () => llmsCache.clear();\n\n\treturn app;\n}\n",
|
|
80
81
|
"/**\n * LLMs utilities\n * Testable helper functions for LLMs route handlers\n */\n\nimport type { LLMsOptions } from 'reroute-js/core';\n\n/**\n * Capitalize first letter of a string\n */\nexport function capitalize(str: string): string {\n\treturn str.charAt(0).toUpperCase() + str.slice(1);\n}\n\n/**\n * Collection metadata used for LLMs index generation\n */\nexport interface CollectionMeta {\n\ttitle: string;\n\tdescription?: string;\n}\n\n/**\n * Get title and description for a collection\n */\nexport function getCollectionMeta(\n\tcollection: string,\n\tllmsConfig: LLMsOptions,\n): CollectionMeta {\n\tconst collectionConfig = llmsConfig.collections?.[collection];\n\treturn {\n\t\ttitle:\n\t\t\tcollectionConfig?.title ??\n\t\t\t(llmsConfig.siteName\n\t\t\t\t? `${llmsConfig.siteName} - ${capitalize(collection)}`\n\t\t\t\t: capitalize(collection)),\n\t\tdescription: collectionConfig?.description ?? llmsConfig.siteDescription,\n\t};\n}\n\n/**\n * LLM-specific routes that should be skipped during content negotiation\n */\nconst LLMS_SPECIFIC_ROUTES = [\n\t'/llms.txt',\n\t'/llms-full.txt',\n\t'/robots.txt',\n] as const;\n\n/**\n * Check if a pathname is an LLM-specific route that should be skipped\n */\nexport function isLlmsSpecificRoute(pathname: string): boolean {\n\tif (\n\t\tLLMS_SPECIFIC_ROUTES.includes(\n\t\t\tpathname as (typeof LLMS_SPECIFIC_ROUTES)[number],\n\t\t)\n\t) {\n\t\treturn true;\n\t}\n\treturn pathname.endsWith('/llms.txt') || pathname.endsWith('/llms-full.txt');\n}\n\n/**\n * Parsed content format result\n */\nexport interface ParsedContentFormat {\n\tformat: 'txt' | 'md';\n\tcleanPath: string;\n}\n\n/**\n * Clean a pathname by removing .txt or .md extension\n * and normalizing root paths\n */\nexport function cleanPathname(\n\tpathname: string,\n\textension: '.txt' | '.md',\n): string {\n\tlet cleanPath = pathname.replace(\n\t\tnew RegExp(`${extension.replace('.', '\\\\.')}$`),\n\t\t'',\n\t);\n\tif (cleanPath === '' || cleanPath === '/index') {\n\t\tcleanPath = '/';\n\t}\n\treturn cleanPath;\n}\n\n/**\n * Parse Accept header to extract primary media type\n */\nexport function parseAcceptHeader(acceptHeader: string): string | null {\n\tif (!acceptHeader) return null;\n\tconst acceptTypes = acceptHeader\n\t\t.split(',')\n\t\t.map((t) => t.split(';')[0].trim());\n\treturn acceptTypes[0] || null;\n}\n\n/**\n * Determine content format from Accept header\n */\nexport function getFormatFromAccept(\n\tprimaryType: string | null,\n): 'txt' | 'md' | null {\n\tif (primaryType === 'text/plain') return 'txt';\n\tif (primaryType === 'text/markdown') return 'md';\n\treturn null;\n}\n\n/**\n * Configuration flags for content negotiation\n */\nexport interface ContentNegotiationConfig {\n\tenableTextExtension?: boolean;\n\tenableMarkdownExtension?: boolean;\n\tenableContentNegotiation?: boolean;\n}\n\n/**\n * Parse pathname and Accept header to determine content format\n * Returns null if no LLM format is requested\n */\nexport function parseContentFormat(\n\tpathname: string,\n\tacceptHeader: string,\n\tconfig: ContentNegotiationConfig,\n): ParsedContentFormat | null {\n\t// Check .txt extension\n\tif (config.enableTextExtension !== false && pathname.endsWith('.txt')) {\n\t\treturn {\n\t\t\tformat: 'txt',\n\t\t\tcleanPath: cleanPathname(pathname, '.txt'),\n\t\t};\n\t}\n\n\t// Check .md extension\n\tif (config.enableMarkdownExtension !== false && pathname.endsWith('.md')) {\n\t\treturn {\n\t\t\tformat: 'md',\n\t\t\tcleanPath: cleanPathname(pathname, '.md'),\n\t\t};\n\t}\n\n\t// Check Accept header content negotiation\n\tif (config.enableContentNegotiation !== false) {\n\t\tconst primaryType = parseAcceptHeader(acceptHeader);\n\t\tconst format = getFormatFromAccept(primaryType);\n\n\t\tif (format) {\n\t\t\treturn {\n\t\t\t\tformat,\n\t\t\t\tcleanPath: pathname,\n\t\t\t};\n\t\t}\n\t}\n\n\treturn null;\n}\n\n/**\n * Build cache key for LLMs content\n */\nexport function buildLlmsCacheKey(\n\tpathname: string,\n\tformat: 'txt' | 'md',\n\tacceptEncoding?: string,\n): string {\n\treturn `llms:${pathname}::${format}::${acceptEncoding ?? ''}`;\n}\n\n/**\n * Build cache key for LLMs index\n */\nexport function buildLlmsIndexCacheKey(collection?: string): string {\n\treturn collection ? `llms:index:${collection}` : 'llms:index';\n}\n\n/**\n * Build cache key for LLMs full content\n */\nexport function buildLlmsFullCacheKey(collection?: string): string {\n\treturn collection ? `llms:full:${collection}` : 'llms:full';\n}\n\n/**\n * Calculate available LLMs routes for a collection\n */\nexport function getCollectionLlmsRoutes(\n\tcollection: string,\n\tconfig: {\n\t\tenableIndex?: boolean;\n\t\tenableFullContent?: boolean;\n\t\tenableTextExtension?: boolean;\n\t\tenableMarkdownExtension?: boolean;\n\t},\n): string[] {\n\tconst routes: string[] = [];\n\n\tif (config.enableIndex !== false) {\n\t\troutes.push(`/${collection}/llms.txt`);\n\t}\n\n\tif (config.enableFullContent !== false) {\n\t\troutes.push(`/${collection}/llms-full.txt`);\n\t}\n\n\tif (config.enableTextExtension !== false) {\n\t\troutes.push(`/${collection}.txt`);\n\t}\n\n\tif (config.enableMarkdownExtension !== false) {\n\t\troutes.push(`/${collection}.md`);\n\t}\n\n\treturn routes;\n}\n\n/**\n * Calculate root-level LLMs routes\n */\nexport function getRootLlmsRoutes(config: {\n\tenableIndex?: boolean;\n\tenableFullContent?: boolean;\n}): string[] {\n\tconst routes: string[] = [];\n\n\tif (config.enableIndex !== false) {\n\t\troutes.push('/llms.txt');\n\t}\n\n\tif (config.enableFullContent !== false) {\n\t\troutes.push('/llms-full.txt');\n\t}\n\n\treturn routes;\n}\n\n/**\n * Check if content negotiation should be enabled\n */\nexport function shouldEnableContentNegotiation(config: {\n\tenableTextExtension?: boolean;\n\tenableMarkdownExtension?: boolean;\n\tenableContentNegotiation?: boolean;\n}): boolean {\n\treturn (\n\t\tconfig.enableTextExtension !== false ||\n\t\tconfig.enableMarkdownExtension !== false ||\n\t\tconfig.enableContentNegotiation !== false\n\t);\n}\n\n/**\n * LLMs configuration defaults calculated from options\n */\nexport interface LlmsConfigDefaults {\n\tmaxAge: number;\n\tmaxAgeFull: number;\n\tttlMs: number;\n\tttlMsFull: number;\n\tbaseUrl: string;\n}\n\n/**\n * Calculate LLMs configuration defaults\n */\nexport function calculateLlmsDefaults(\n\tllmsConfig: LLMsOptions,\n\tfallbackMaxAge: number,\n): LlmsConfigDefaults {\n\tconst maxAge = llmsConfig.maxAge ?? fallbackMaxAge ?? 86400;\n\tconst maxAgeFull = llmsConfig.maxAgeFull ?? maxAge ?? 604800;\n\treturn {\n\t\tmaxAge,\n\t\tmaxAgeFull,\n\t\tttlMs: maxAge * 1000,\n\t\tttlMsFull: maxAgeFull * 1000,\n\t\tbaseUrl: llmsConfig.baseUrl ?? '',\n\t};\n}\n\n/**\n * Format byte size to human readable MB string\n */\nexport function formatByteSize(bytes: number): string {\n\treturn (bytes / 1024 / 1024).toFixed(2);\n}\n",
|
|
81
|
-
"import type { Elysia } from 'elysia';\nimport { NotFoundError } from 'elysia';\nimport {\n\tDefaultOGTemplate,\n\textractParamsFromPath,\n\tfindOGImageForPath,\n\tloadOGImageComponent,\n\ttype OGImageFont,\n\ttype OGImageOptions,\n\trenderOGImageToPNG,\n\ttype TTLCache,\n} from 'reroute-js/core';\nimport type { Any } from '../types';\n\ntype OGRouteOptions = {\n\tclientDir: string;\n\tcwd: string;\n\tisWatchMode: boolean;\n\togConfig: OGImageOptions;\n\togCache: TTLCache<string, Buffer>;\n};\n\n/**\n * Get metadata for a route from SSR data and content\n */\nasync function tryLoadPrebuiltCollection(\n\tcwd: string,\n\tcollection: string,\n\tslug: string,\n\tmeta: Any,\n): Promise<boolean> {\n\ttry {\n\t\t// Try .js file (generated by build process)\n\t\tconst jsPath = `${cwd}/.reroute/collections/${collection}.js`;\n\t\tconst { existsSync } = await import('node:fs');\n\n\t\tif (existsSync(jsPath)) {\n\t\t\ttry {\n\t\t\t\t// Import the JavaScript module dynamically\n\t\t\t\t// Use absolute path to ensure it works in both dev and production\n\t\t\t\tconst mod = await import(jsPath);\n\t\t\t\tconst items = mod.items || [];\n\t\t\t\tconst item = items.find((i: Any) => i.slug === slug || i.name === slug);\n\t\t\t\tif (item?.meta) {\n\t\t\t\t\tObject.assign(meta, item.meta);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t} catch (importError) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t`[reroute/og] Failed to import collection ${collection}:`,\n\t\t\t\t\timportError,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t// Fallback to .json file (legacy)\n\t\tconst jsonPath = `${cwd}/.reroute/collections/${collection}.json`;\n\t\tconst jsonFile = Bun.file(jsonPath);\n\t\tif (await jsonFile.exists()) {\n\t\t\tconst items = await jsonFile.json();\n\t\t\tconst item = Array.isArray(items)\n\t\t\t\t? items.find((i: Any) => i.slug === slug)\n\t\t\t\t: null;\n\t\t\tif (item) {\n\t\t\t\tObject.assign(meta, item);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\tconsole.warn(\n\t\t\t`[reroute/og] Failed to load collection metadata for ${collection}/${slug}:`,\n\t\t\terror,\n\t\t);\n\t}\n\treturn false;\n}\n\nasync function tryLoadContentExports(\n\tpathname: string,\n\t_meta: Any,\n): Promise<Any | undefined> {\n\tconst parts = pathname.split('/').filter(Boolean);\n\tif (parts.length >= 2) {\n\t\tconst key = `${parts[0]}:${parts[1]}`;\n\t\tconst exports = (globalThis as Any).__REROUTE_SSR_EXPORTS__?.[key];\n\t\tif (exports?.ssr?.ogImage) {\n\t\t\treturn exports.ssr.ogImage;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nasync function getRouteMetadata(\n\tpathname: string,\n\tcwd: string,\n\tclientDir: string,\n\tisWatchMode: boolean,\n): Promise<{ meta: Any; ogImage?: Any }> {\n\tconst meta: Any = {};\n\tlet ogImage: Any;\n\n\ttry {\n\t\tconst g = globalThis as Any;\n\t\tconst ssrData = g.__REROUTE_SSR_DATA__;\n\n\t\tif (ssrData?.[pathname]) {\n\t\t\tObject.assign(meta, ssrData[pathname]);\n\t\t}\n\n\t\tconst parts = pathname.split('/').filter(Boolean);\n\n\t\tif (parts.length >= 2) {\n\t\t\tconst collection = parts[0];\n\t\t\tconst slug = parts[parts.length - 1];\n\n\t\t\t// Try pre-built collections\n\t\t\tconst foundInPrebuilt = await tryLoadPrebuiltCollection(\n\t\t\t\tcwd,\n\t\t\t\tcollection,\n\t\t\t\tslug,\n\t\t\t\tmeta,\n\t\t\t);\n\n\t\t\t// Try direct content file\n\t\t\tif (!foundInPrebuilt && Object.keys(meta).length === 0) {\n\t\t\t\tawait loadContentMeta(clientDir, collection, slug, isWatchMode, meta);\n\t\t\t}\n\t\t}\n\n\t\t// Get metadata and ogImage from route exports\n\t\tconst routeData = await loadOgImageFromRoute(\n\t\t\tcwd,\n\t\t\tclientDir,\n\t\t\tpathname,\n\t\t\tisWatchMode,\n\t\t);\n\n\t\t// Merge route meta if available - ALWAYS merge, don't skip if meta exists\n\t\tif (routeData.meta) {\n\t\t\tObject.assign(meta, routeData.meta);\n\t\t}\n\n\t\togImage = routeData.ogImage;\n\n\t\t// Check content exports\n\t\tconst contentExportOgImage = await tryLoadContentExports(pathname, meta);\n\t\tif (contentExportOgImage) {\n\t\t\togImage = contentExportOgImage;\n\t\t}\n\t} catch (error) {\n\t\tconsole.warn('[reroute] Failed to get route metadata:', error);\n\t}\n\n\treturn { meta, ogImage };\n}\n\nasync function loadMarkdownMeta(contentFile: Any, meta: Any): Promise<boolean> {\n\ttry {\n\t\tconst matter = await import('gray-matter');\n\t\tconst content = await contentFile.text();\n\t\tconst { data } = matter.default(content);\n\t\tif (data && Object.keys(data).length > 0) {\n\t\t\tObject.assign(meta, data);\n\t\t\treturn true;\n\t\t}\n\t} catch {}\n\treturn false;\n}\n\nasync function loadTsxMeta(\n\tcontentPath: string,\n\tisWatchMode: boolean,\n\tmeta: Any,\n): Promise<boolean> {\n\ttry {\n\t\tconst { getContentMeta } = await import('reroute-js/core');\n\t\tconst contentMeta = await getContentMeta(contentPath, isWatchMode);\n\t\tif (contentMeta && Object.keys(contentMeta).length > 0) {\n\t\t\tObject.assign(meta, contentMeta);\n\t\t\treturn true;\n\t\t}\n\t} catch {}\n\treturn false;\n}\n\nasync function loadContentMeta(\n\tclientDir: string,\n\tcollection: string,\n\tslug: string,\n\tisWatchMode: boolean,\n\tmeta: Any,\n): Promise<void> {\n\tconst contentDir = `${clientDir}/routes/${collection}/content`;\n\tconst extensions = ['.mdx', '.md', '.tsx', '.ts'];\n\n\tfor (const ext of extensions) {\n\t\tconst contentPath = `${contentDir}/${slug}${ext}`;\n\t\tconst contentFile = Bun.file(contentPath);\n\n\t\tif (!(await contentFile.exists())) continue;\n\n\t\tconst isMarkdown = ext === '.md' || ext === '.mdx';\n\t\tconst loaded = isMarkdown\n\t\t\t? await loadMarkdownMeta(contentFile, meta)\n\t\t\t: await loadTsxMeta(contentPath, isWatchMode, meta);\n\n\t\tif (loaded) return;\n\t}\n}\n\nasync function loadOgImageFromRoute(\n\t_cwd: string,\n\tclientDir: string,\n\tpathname: string,\n\tisWatchMode: boolean,\n): Promise<{ meta?: Any; ogImage?: Any }> {\n\ttry {\n\t\t// In production (compiled binary), check for bundled route metadata first\n\t\tconst routesGlobal = (globalThis as Any).__REROUTE_ROUTES__;\n\t\tif (routesGlobal && Array.isArray(routesGlobal)) {\n\t\t\t// Find the route that matches this pathname\n\t\t\tconst matchedRoute = routesGlobal.find((r: Any) => {\n\t\t\t\t// For dynamic routes, we need to match patterns\n\t\t\t\tif (r.isDynamic) {\n\t\t\t\t\t// Convert pattern like \"/blog/:slug\" to match \"/blog/anything\"\n\t\t\t\t\tconst pattern = r.pattern.replace(/:[^/]+/g, '[^/]+');\n\t\t\t\t\tconst regex = new RegExp(`^${pattern}$`);\n\t\t\t\t\treturn regex.test(pathname);\n\t\t\t\t}\n\t\t\t\t// For static routes, exact match\n\t\t\t\treturn r.pattern === pathname;\n\t\t\t});\n\n\t\t\tif (matchedRoute) {\n\t\t\t\treturn {\n\t\t\t\t\tmeta: matchedRoute.meta,\n\t\t\t\t\togImage: matchedRoute.ssr?.ogImage,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// Development mode: try to load from source files\n\t\tconst { pathToFileURL } = await import('node:url');\n\t\tconst { existsSync } = await import('node:fs');\n\n\t\t// Convert pathname to route file path\n\t\t// \"/\" -> \"index.tsx\", \"/about\" -> \"about.tsx\" or \"about/index.tsx\"\n\t\tconst pathnameOnly = pathname.split('?')[0];\n\t\tconst cleanPath =\n\t\t\tpathnameOnly === '/'\n\t\t\t\t? 'index'\n\t\t\t\t: pathnameOnly.replace(/^\\//, '').replace(/\\/$/, '');\n\n\t\t// Try multiple possible file locations\n\t\tconst possiblePaths = [\n\t\t\t`${clientDir}/routes/${cleanPath}.tsx`,\n\t\t\t`${clientDir}/routes/${cleanPath}/index.tsx`,\n\t\t\t`${clientDir}/routes/${cleanPath}.ts`,\n\t\t\t`${clientDir}/routes/${cleanPath}/index.ts`,\n\t\t];\n\n\t\tfor (const routePath of possiblePaths) {\n\t\t\tif (existsSync(routePath)) {\n\t\t\t\tconst routeMod = await import(\n\t\t\t\t\tpathToFileURL(routePath).href +\n\t\t\t\t\t\t(isWatchMode ? `?t=${Date.now()}` : '')\n\t\t\t\t);\n\t\t\t\treturn {\n\t\t\t\t\tmeta: routeMod.meta,\n\t\t\t\t\togImage: routeMod.ssr?.ogImage,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\tconsole.warn('[reroute/og] Error loading route metadata:', error);\n\t}\n\treturn {};\n}\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: OG component loading requires handling production/dev modes and multiple fallback paths\nasync function loadOgComponent(\n\togPath: string | null,\n\togConfig: OGImageOptions,\n\tcwd: string,\n\tisWatchMode: boolean,\n): Promise<Any> {\n\t// If there's a route-specific [og].tsx file\n\tif (ogPath) {\n\t\t// In production (compiled binary), check global mapping first\n\t\tconst ogRoutes = (globalThis as Any).__REROUTE_OG_ROUTES__;\n\t\tif (ogRoutes) {\n\t\t\t// Extract the route path from the og file path\n\t\t\t// e.g., \"/path/to/client/routes/blog/[og].tsx\" -> \"/blog\"\n\t\t\tconst match = ogPath.match(/routes\\/(.+?)\\/?\\[og]\\.(tsx|ts)$/);\n\t\t\tconst routePath = match ? `/${match[1]}` : '/';\n\t\t\tconst bundledOg = ogRoutes[routePath];\n\t\t\tif (bundledOg) {\n\t\t\t\treturn bundledOg;\n\t\t\t}\n\t\t}\n\n\t\t// Development mode or fallback: load from source\n\t\treturn await loadOGImageComponent(ogPath, isWatchMode);\n\t}\n\n\t// No route-specific [og].tsx, use default template\n\tif (ogConfig.defaultTemplate) {\n\t\tif (ogConfig.defaultTemplate === 'default') {\n\t\t\treturn DefaultOGTemplate;\n\t\t}\n\n\t\t// Check for bundled OG template in compiled binary (production mode)\n\t\tconst bundledTemplate = (globalThis as Any).__REROUTE_OG_TEMPLATE__;\n\t\tif (bundledTemplate) {\n\t\t\treturn bundledTemplate;\n\t\t}\n\n\t\t// Development mode: try to load from source\n\t\ttry {\n\t\t\tconst templatePath = ogConfig.defaultTemplate.startsWith('/')\n\t\t\t\t? ogConfig.defaultTemplate\n\t\t\t\t: `${cwd}/${ogConfig.defaultTemplate.replace(/^\\.\\//, '')}`;\n\t\t\treturn await loadOGImageComponent(templatePath, isWatchMode);\n\t\t} catch (error) {\n\t\t\tconsole.warn(\n\t\t\t\t'[reroute] Failed to load default OG template, using built-in:',\n\t\t\t\terror,\n\t\t\t);\n\t\t}\n\t}\n\n\treturn DefaultOGTemplate;\n}\n\nexport function registerOGRoutes(app: Elysia, options: OGRouteOptions): Elysia {\n\tconst { clientDir, cwd, isWatchMode, ogConfig, ogCache } = options;\n\n\tconst width = ogConfig.width ?? 1200;\n\tconst height = ogConfig.height ?? 630;\n\tconst maxAge = ogConfig.maxAge ?? 3600;\n\n\t// Track ongoing generations to prevent duplicates and allow waiting\n\tconst generatingImages = new Map<string, Promise<void>>();\n\n\t// Global font cache - load fonts once and reuse across all image generations\n\tlet fontsCache: OGImageFont[] | undefined;\n\tlet fontsCachePromise: Promise<OGImageFont[] | undefined> | null = null;\n\n\t// Periodic cache stats logging (every 5 minutes)\n\tconst statsInterval = setInterval(() => {\n\t\tif ('stats' in ogCache && typeof ogCache.stats === 'function') {\n\t\t\tconst stats = ogCache.stats();\n\t\t\tconsole.log(\n\t\t\t\t`[reroute/og] Cache stats: ${stats.entries} entries, ${stats.memoryMB}MB / ${stats.maxMemoryMB}MB (${stats.memoryUsagePercent}%)`,\n\t\t\t);\n\t\t}\n\t}, 300_000);\n\n\t// Cleanup on shutdown\n\tif (statsInterval.unref) {\n\t\tstatsInterval.unref();\n\t}\n\n\tfunction normalizeOgPathname(urlPathname: string): string {\n\t\tlet pathname = urlPathname\n\t\t\t.replace(/^\\/__reroute_og/, '')\n\t\t\t.replace(/\\.png$/, '');\n\n\t\t// Handle index.png -> /\n\t\tif (pathname === '/index' || pathname === 'index') {\n\t\t\tpathname = '/';\n\t\t} else if (pathname.endsWith('/index')) {\n\t\t\tpathname = pathname.replace(/\\/index$/, '') || '/';\n\t\t}\n\n\t\treturn pathname;\n\t}\n\n\tfunction checkOgCache(pathname: string, set: Any): Response | undefined {\n\t\t// TTLCache handles expiration automatically\n\t\tconst cached = ogCache.get(pathname) as Buffer | undefined;\n\t\tif (cached) {\n\t\t\tset.headers['content-type'] = 'image/png';\n\t\t\tset.headers['content-length'] = String(cached.byteLength);\n\t\t\tset.headers['cache-control'] = `public, max-age=${maxAge}`;\n\t\t\tset.headers['Reroute-Cache'] = 'HIT';\n\t\t\treturn new Response(cached as BodyInit);\n\t\t}\n\t\treturn undefined;\n\t}\n\n\t// Helper to get possible font paths\n\tfunction getFontPaths(\n\t\tfontPath: string,\n\t\tbaseDir: string,\n\t\tjoin: (...paths: string[]) => string,\n\t): string[] {\n\t\tconst fontRelativePath = fontPath\n\t\t\t.replace(/^(\\.\\/)?src\\/client\\/assets\\//, '')\n\t\t\t.replace(/^assets\\//, '');\n\n\t\treturn [\n\t\t\tjoin(clientDir, 'assets', fontRelativePath),\n\t\t\tjoin(baseDir, '.reroute', 'assets', fontRelativePath),\n\t\t\tjoin(cwd, '.reroute', 'assets', fontRelativePath),\n\t\t\tjoin(cwd, fontPath),\n\t\t\tjoin(baseDir, fontPath),\n\t\t];\n\t}\n\n\t// Helper to load a single font from possible paths\n\tasync function tryLoadFont(\n\t\tfont: { name: string; path: string; weight?: number; style?: string },\n\t\tpossiblePaths: string[],\n\t\texistsSync: (path: string) => boolean,\n\t): Promise<OGImageFont | null> {\n\t\tfor (const fontPath of possiblePaths) {\n\t\t\tif (existsSync(fontPath)) {\n\t\t\t\tconst fontFile = Bun.file(fontPath);\n\t\t\t\tconst data = await fontFile.arrayBuffer();\n\t\t\t\t// console.log(`[reroute/og] Loaded font: ${font.name} from ${fontPath}`);\n\t\t\t\treturn {\n\t\t\t\t\tname: font.name,\n\t\t\t\t\tdata,\n\t\t\t\t\tweight: font.weight || 400,\n\t\t\t\t\tstyle: (font.style as OGImageFont['style']) || 'normal',\n\t\t\t\t\tpath: fontPath as OGImageFont['path'],\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\t// Helper to load all configured fonts\n\tasync function loadAllFonts(): Promise<OGImageFont[]> {\n\t\tif (!ogConfig.fonts || ogConfig.fonts.length === 0) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst { join, dirname } = await import('node:path');\n\t\tconst { existsSync } = await import('node:fs');\n\n\t\tconst isCompiledBinary =\n\t\t\ttypeof Bun !== 'undefined' && process.argv[0]?.endsWith(process.argv[1]);\n\t\tconst baseDir = isCompiledBinary ? dirname(process.argv[1]) : cwd;\n\n\t\tconst loadedFonts: OGImageFont[] = [];\n\n\t\tfor (const font of ogConfig.fonts) {\n\t\t\ttry {\n\t\t\t\tconst possiblePaths = getFontPaths(font.path, baseDir, join);\n\t\t\t\tconst loadedFont = await tryLoadFont(font, possiblePaths, existsSync);\n\n\t\t\t\tif (loadedFont) {\n\t\t\t\t\tloadedFonts.push(loadedFont);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(`[reroute/og] Font file not found: ${font.path}`);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.warn(`[reroute/og] Failed to load font ${font.path}:`, error);\n\t\t\t}\n\t\t}\n\n\t\treturn loadedFonts;\n\t}\n\n\t// Load fonts once and cache them for reuse across all image generations\n\tasync function loadFonts(): Promise<OGImageFont[] | undefined> {\n\t\tif (fontsCache !== undefined) {\n\t\t\treturn fontsCache;\n\t\t}\n\n\t\tif (fontsCachePromise) {\n\t\t\treturn await fontsCachePromise;\n\t\t}\n\n\t\tfontsCachePromise = loadAllFonts().then((fonts) => {\n\t\t\tfontsCache = fonts;\n\t\t\treturn fontsCache;\n\t\t});\n\n\t\treturn await fontsCachePromise;\n\t}\n\n\tasync function generateOgImage(\n\t\tpathname: string,\n\t\tclientDir: string,\n\t\tcwd: string,\n\t\tisWatchMode: boolean,\n\t\togConfig: OGImageOptions,\n\t\twidth: number,\n\t\theight: number,\n\t): Promise<void> {\n\t\tconst ogPath = await findOGImageForPath(pathname, clientDir);\n\t\tconst Component = await loadOgComponent(ogPath, ogConfig, cwd, isWatchMode);\n\n\t\tif (!Component) {\n\t\t\tconsole.warn(`[reroute] No OG image component found for ${pathname}`);\n\t\t\tthrow new NotFoundError('OG image component not found');\n\t\t}\n\n\t\tconst params = ogPath\n\t\t\t? extractParamsFromPath(pathname, ogPath, clientDir)\n\t\t\t: {};\n\n\t\tconst { meta, ogImage: routeOgImage } = await getRouteMetadata(\n\t\t\tpathname,\n\t\t\tcwd,\n\t\t\tclientDir,\n\t\t\tisWatchMode,\n\t\t);\n\n\t\t// Use cached fonts instead of loading them every time\n\t\tconst fonts = await loadFonts();\n\n\t\tconst buffer = await renderOGImageToPNG(\n\t\t\tComponent,\n\t\t\t{\n\t\t\t\tparams,\n\t\t\t\tmeta,\n\t\t\t\tavatar: routeOgImage?.avatar ?? ogConfig.avatar,\n\t\t\t\tsiteName: routeOgImage?.siteName ?? ogConfig.siteName,\n\t\t\t\tbaseUrl: ogConfig.baseUrl,\n\t\t\t},\n\t\t\t{ width, height, fonts },\n\t\t);\n\n\t\t// Cache the generated image (TTLCache handles TTL automatically)\n\t\togCache.set(pathname, buffer);\n\t}\n\n\t// Helper to validate pathname for security\n\t// Block bot spam URLs with excessive length or repetitive patterns\n\tfunction validatePathname(pathname: string): boolean {\n\t\t// Hashtag URLs should be short: /tools/hashtag/somehashtag (~30-50 chars)\n\t\t// Even with encoding, should never exceed 80 chars\n\t\tif (pathname.length > 80) return false;\n\n\t\t// Block repetitive patterns (bot spam indicators)\n\t\t// Pattern 1: \"2525252525...\" - encoded percent signs\n\t\tif (/(25){5,}/.test(pathname)) return false;\n\n\t\t// Pattern 2: Any 2-char sequence repeated 5+ times\n\t\tif (/(.{2})\\1{4,}/.test(pathname)) return false;\n\n\t\t// Block excessive percent-encoding\n\t\tconst percentCount = (pathname.match(/%/g) || []).length;\n\t\tif (percentCount > 3) return false;\n\n\t\treturn true;\n\t}\n\n\t// Helper to handle OG image generation with deduplication\n\tasync function handleOgGeneration(pathname: string): Promise<void> {\n\t\tconst existingGeneration = generatingImages.get(pathname);\n\t\tif (existingGeneration) {\n\t\t\tawait existingGeneration;\n\t\t\treturn;\n\t\t}\n\n\t\tconst generationPromise = generateOgImage(\n\t\t\tpathname,\n\t\t\tclientDir,\n\t\t\tcwd,\n\t\t\tisWatchMode,\n\t\t\togConfig,\n\t\t\twidth,\n\t\t\theight,\n\t\t);\n\n\t\tgeneratingImages.set(pathname, generationPromise);\n\n\t\ttry {\n\t\t\tawait generationPromise;\n\t\t\tconsole.log(`[reroute/og] Generated image for: ${pathname}`);\n\t\t} finally {\n\t\t\tgeneratingImages.delete(pathname);\n\t\t}\n\t}\n\n\tapp.get('/__reroute_og/*', async ({ request, set }) => {\n\t\ttry {\n\t\t\tconst url = new URL(request.url);\n\t\t\tconst pathname = normalizeOgPathname(url.pathname);\n\n\t\t\tif (!validatePathname(pathname)) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t`[reroute/og] Blocked suspicious URL: ${pathname.substring(0, 100)}...`,\n\t\t\t\t);\n\t\t\t\tset.status = 400;\n\t\t\t\treturn new Response('Invalid URL', {\n\t\t\t\t\tstatus: 400,\n\t\t\t\t\theaders: { 'Content-Type': 'text/plain' },\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Check cache first\n\t\t\tconst cachedResponse = checkOgCache(pathname, set);\n\t\t\tif (cachedResponse) return cachedResponse;\n\n\t\t\t// Generate image if needed\n\t\t\ttry {\n\t\t\t\tawait handleOgGeneration(pathname);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(\n\t\t\t\t\t`[reroute/og] Failed to generate image for ${pathname}:`,\n\t\t\t\t\terror,\n\t\t\t\t);\n\t\t\t\tset.status = 500;\n\t\t\t\treturn new Response('Failed to generate image', {\n\t\t\t\t\tstatus: 500,\n\t\t\t\t\theaders: { 'Content-Type': 'text/plain' },\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Return the generated image from cache\n\t\t\tconst generatedResponse = checkOgCache(pathname, set);\n\t\t\tif (generatedResponse) return generatedResponse;\n\n\t\t\t// Should not reach here, but handle gracefully\n\t\t\tset.status = 500;\n\t\t\treturn new Response('Image generation completed but not cached', {\n\t\t\t\tstatus: 500,\n\t\t\t\theaders: { 'Content-Type': 'text/plain' },\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tconsole.error('[reroute] Failed to handle OG image request:', error);\n\t\t\tset.status = 500;\n\t\t\treturn new Response('Internal Server Error', {\n\t\t\t\tstatus: 500,\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'text/plain',\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t});\n\n\treturn app;\n}\n",
|
|
82
|
+
"import type { Elysia } from 'elysia';\nimport { NotFoundError } from 'elysia';\nimport {\n\tDefaultOGTemplate,\n\textractParamsFromPath,\n\tfindOGImageForPath,\n\tloadOGImageComponent,\n\tmatchRoutes,\n\ttype OGImageFont,\n\ttype OGImageOptions,\n\trenderOGImageToPNG,\n\ttype TTLCache,\n} from 'reroute-js/core';\nimport type { Any } from '../types';\n\ntype OGRouteOptions = {\n\tclientDir: string;\n\tcwd: string;\n\tisWatchMode: boolean;\n\togConfig: OGImageOptions;\n\togCache: TTLCache<string, Buffer>;\n};\n\n/**\n * Get metadata for a route from SSR data and content\n */\nasync function tryLoadPrebuiltCollection(\n\tcwd: string,\n\tcollection: string,\n\tslug: string,\n\tmeta: Any,\n): Promise<boolean> {\n\ttry {\n\t\t// Try .js file (generated by build process)\n\t\tconst jsPath = `${cwd}/.reroute/collections/${collection}.js`;\n\t\tconst { existsSync } = await import('node:fs');\n\n\t\tif (existsSync(jsPath)) {\n\t\t\ttry {\n\t\t\t\t// Import the JavaScript module dynamically\n\t\t\t\t// Use absolute path to ensure it works in both dev and production\n\t\t\t\tconst mod = await import(jsPath);\n\t\t\t\tconst items = mod.items || [];\n\t\t\t\tconst item = items.find((i: Any) => i.slug === slug || i.name === slug);\n\t\t\t\tif (item?.meta) {\n\t\t\t\t\tObject.assign(meta, item.meta);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t} catch (importError) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t`[reroute/og] Failed to import collection ${collection}:`,\n\t\t\t\t\timportError,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t// Fallback to .json file (legacy)\n\t\tconst jsonPath = `${cwd}/.reroute/collections/${collection}.json`;\n\t\tconst jsonFile = Bun.file(jsonPath);\n\t\tif (await jsonFile.exists()) {\n\t\t\tconst items = await jsonFile.json();\n\t\t\tconst item = Array.isArray(items)\n\t\t\t\t? items.find((i: Any) => i.slug === slug)\n\t\t\t\t: null;\n\t\t\tif (item) {\n\t\t\t\tObject.assign(meta, item);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\tconsole.warn(\n\t\t\t`[reroute/og] Failed to load collection metadata for ${collection}/${slug}:`,\n\t\t\terror,\n\t\t);\n\t}\n\treturn false;\n}\n\nasync function tryLoadContentExports(\n\tpathname: string,\n\t_meta: Any,\n): Promise<Any | undefined> {\n\tconst parts = pathname.split('/').filter(Boolean);\n\tif (parts.length >= 2) {\n\t\tconst key = `${parts[0]}:${parts[1]}`;\n\t\tconst exports = (globalThis as Any).__REROUTE_SSR_EXPORTS__?.[key];\n\t\tif (exports?.ssr?.ogImage) {\n\t\t\treturn exports.ssr.ogImage;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nasync function getRouteMetadata(\n\tpathname: string,\n\tcwd: string,\n\tclientDir: string,\n\tisWatchMode: boolean,\n): Promise<{ meta: Any; ogImage?: Any }> {\n\tconst meta: Any = {};\n\tlet ogImage: Any;\n\n\ttry {\n\t\tconst g = globalThis as Any;\n\t\tconst ssrData = g.__REROUTE_SSR_DATA__;\n\n\t\tif (ssrData?.[pathname]) {\n\t\t\tObject.assign(meta, ssrData[pathname]);\n\t\t}\n\n\t\tconst parts = pathname.split('/').filter(Boolean);\n\n\t\tif (parts.length >= 2) {\n\t\t\tconst collection = parts[0];\n\t\t\tconst slug = parts[parts.length - 1];\n\n\t\t\t// Try pre-built collections\n\t\t\tconst foundInPrebuilt = await tryLoadPrebuiltCollection(\n\t\t\t\tcwd,\n\t\t\t\tcollection,\n\t\t\t\tslug,\n\t\t\t\tmeta,\n\t\t\t);\n\n\t\t\t// Try direct content file\n\t\t\tif (!foundInPrebuilt && Object.keys(meta).length === 0) {\n\t\t\t\tawait loadContentMeta(clientDir, collection, slug, isWatchMode, meta);\n\t\t\t}\n\t\t}\n\n\t\t// Get metadata and ogImage from route exports\n\t\tconst routeData = await loadOgImageFromRoute(\n\t\t\tcwd,\n\t\t\tclientDir,\n\t\t\tpathname,\n\t\t\tisWatchMode,\n\t\t);\n\n\t\t// Merge route meta if available - ALWAYS merge, don't skip if meta exists\n\t\tif (routeData.meta) {\n\t\t\tObject.assign(meta, routeData.meta);\n\t\t}\n\n\t\togImage = routeData.ogImage;\n\n\t\t// Check content exports\n\t\tconst contentExportOgImage = await tryLoadContentExports(pathname, meta);\n\t\tif (contentExportOgImage) {\n\t\t\togImage = contentExportOgImage;\n\t\t}\n\t} catch (error) {\n\t\tconsole.warn('[reroute] Failed to get route metadata:', error);\n\t}\n\n\treturn { meta, ogImage };\n}\n\nasync function loadMarkdownMeta(contentFile: Any, meta: Any): Promise<boolean> {\n\ttry {\n\t\tconst matter = await import('gray-matter');\n\t\tconst content = await contentFile.text();\n\t\tconst { data } = matter.default(content);\n\t\tif (data && Object.keys(data).length > 0) {\n\t\t\tObject.assign(meta, data);\n\t\t\treturn true;\n\t\t}\n\t} catch {}\n\treturn false;\n}\n\nasync function loadTsxMeta(\n\tcontentPath: string,\n\tisWatchMode: boolean,\n\tmeta: Any,\n): Promise<boolean> {\n\ttry {\n\t\tconst { getContentMeta } = await import('reroute-js/core');\n\t\tconst contentMeta = await getContentMeta(contentPath, isWatchMode);\n\t\tif (contentMeta && Object.keys(contentMeta).length > 0) {\n\t\t\tObject.assign(meta, contentMeta);\n\t\t\treturn true;\n\t\t}\n\t} catch {}\n\treturn false;\n}\n\nasync function loadContentMeta(\n\tclientDir: string,\n\tcollection: string,\n\tslug: string,\n\tisWatchMode: boolean,\n\tmeta: Any,\n): Promise<void> {\n\tconst contentDir = `${clientDir}/routes/${collection}/content`;\n\tconst extensions = ['.mdx', '.md', '.tsx', '.ts'];\n\n\tfor (const ext of extensions) {\n\t\tconst contentPath = `${contentDir}/${slug}${ext}`;\n\t\tconst contentFile = Bun.file(contentPath);\n\n\t\tif (!(await contentFile.exists())) continue;\n\n\t\tconst isMarkdown = ext === '.md' || ext === '.mdx';\n\t\tconst loaded = isMarkdown\n\t\t\t? await loadMarkdownMeta(contentFile, meta)\n\t\t\t: await loadTsxMeta(contentPath, isWatchMode, meta);\n\n\t\tif (loaded) return;\n\t}\n}\n\nasync function loadMatchedRouteModule(\n\tclientDir: string,\n\troutePath: string,\n\tisWatchMode: boolean,\n): Promise<Any | null> {\n\tconst { existsSync } = await import('node:fs');\n\tconst { pathToFileURL } = await import('node:url');\n\tconst normalizedRoutePath = routePath === '' ? 'index' : routePath;\n\tconst possiblePaths = [\n\t\t`${clientDir}/routes/${normalizedRoutePath}.tsx`,\n\t\t`${clientDir}/routes/${normalizedRoutePath}/index.tsx`,\n\t\t`${clientDir}/routes/${normalizedRoutePath}.ts`,\n\t\t`${clientDir}/routes/${normalizedRoutePath}/index.ts`,\n\t\t`${clientDir}/routes/${normalizedRoutePath}.mdx`,\n\t\t`${clientDir}/routes/${normalizedRoutePath}/index.mdx`,\n\t\t`${clientDir}/routes/${normalizedRoutePath}.md`,\n\t\t`${clientDir}/routes/${normalizedRoutePath}/index.md`,\n\t];\n\n\tfor (const possiblePath of possiblePaths) {\n\t\tif (existsSync(possiblePath)) {\n\t\t\treturn await import(\n\t\t\t\tpathToFileURL(possiblePath).href +\n\t\t\t\t\t(isWatchMode ? `?t=${Date.now()}` : '')\n\t\t\t);\n\t\t}\n\t}\n\n\treturn null;\n}\n\nasync function loadOgImageFromRoute(\n\tcwd: string,\n\tclientDir: string,\n\tpathname: string,\n\tisWatchMode: boolean,\n): Promise<{ meta?: Any; ogImage?: Any }> {\n\ttry {\n\t\tconst pathnameOnly = pathname.split('?')[0];\n\n\t\t// In production (compiled binary), check for bundled route metadata first\n\t\tconst routesGlobal = (globalThis as Any).__REROUTE_ROUTES__;\n\t\tif (routesGlobal && Array.isArray(routesGlobal)) {\n\t\t\tconst matchedRoute = matchRoutes(\n\t\t\t\troutesGlobal as Any[],\n\t\t\t\tpathnameOnly,\n\t\t\t)?.route;\n\n\t\t\tif (matchedRoute) {\n\t\t\t\treturn {\n\t\t\t\t\tmeta: matchedRoute.meta,\n\t\t\t\t\togImage: matchedRoute.ssr?.ogImage,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tconst { pathToFileURL } = await import('node:url');\n\n\t\tconst routesPath = `${cwd}/.reroute/routes.ts`;\n\t\tconst routesMod = await import(\n\t\t\tpathToFileURL(routesPath).href + (isWatchMode ? `?t=${Date.now()}` : '')\n\t\t);\n\t\tconst match =\n\t\t\ttypeof routesMod.matchRoute === 'function'\n\t\t\t\t? routesMod.matchRoute(pathnameOnly)\n\t\t\t\t: Array.isArray(routesMod.routes)\n\t\t\t\t\t? matchRoutes(routesMod.routes as Any[], pathnameOnly)\n\t\t\t\t\t: null;\n\t\tconst matchedRoute = match?.route;\n\n\t\tif (matchedRoute && typeof matchedRoute.path === 'string') {\n\t\t\tconst routeMod = await loadMatchedRouteModule(\n\t\t\t\tclientDir,\n\t\t\t\tString(matchedRoute.path),\n\t\t\t\tisWatchMode,\n\t\t\t);\n\t\t\tif (routeMod) {\n\t\t\t\treturn {\n\t\t\t\t\tmeta: routeMod.meta,\n\t\t\t\t\togImage: routeMod.ssr?.ogImage,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif (matchedRoute) {\n\t\t\treturn {\n\t\t\t\tmeta: matchedRoute.meta,\n\t\t\t\togImage: matchedRoute.ssr?.ogImage,\n\t\t\t};\n\t\t}\n\t} catch (error) {\n\t\tconsole.warn('[reroute/og] Error loading route metadata:', error);\n\t}\n\treturn {};\n}\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: OG component loading requires handling production/dev modes and multiple fallback paths\nasync function loadOgComponent(\n\togPath: string | null,\n\togConfig: OGImageOptions,\n\tcwd: string,\n\tisWatchMode: boolean,\n): Promise<Any> {\n\t// If there's a route-specific [og].tsx file\n\tif (ogPath) {\n\t\t// In production (compiled binary), check global mapping first\n\t\tconst ogRoutes = (globalThis as Any).__REROUTE_OG_ROUTES__;\n\t\tif (ogRoutes) {\n\t\t\t// Extract the route path from the og file path\n\t\t\t// e.g., \"/path/to/client/routes/blog/[og].tsx\" -> \"/blog\"\n\t\t\tconst match = ogPath.match(/routes\\/(.+?)\\/?\\[og]\\.(tsx|ts)$/);\n\t\t\tconst routePath = match ? `/${match[1]}` : '/';\n\t\t\tconst bundledOg = ogRoutes[routePath];\n\t\t\tif (bundledOg) {\n\t\t\t\treturn bundledOg;\n\t\t\t}\n\t\t}\n\n\t\t// Development mode or fallback: load from source\n\t\treturn await loadOGImageComponent(ogPath, isWatchMode);\n\t}\n\n\t// No route-specific [og].tsx, use default template\n\tif (ogConfig.defaultTemplate) {\n\t\tif (ogConfig.defaultTemplate === 'default') {\n\t\t\treturn DefaultOGTemplate;\n\t\t}\n\n\t\t// Check for bundled OG template in compiled binary (production mode)\n\t\tconst bundledTemplate = (globalThis as Any).__REROUTE_OG_TEMPLATE__;\n\t\tif (bundledTemplate) {\n\t\t\treturn bundledTemplate;\n\t\t}\n\n\t\t// Development mode: try to load from source\n\t\ttry {\n\t\t\tconst templatePath = ogConfig.defaultTemplate.startsWith('/')\n\t\t\t\t? ogConfig.defaultTemplate\n\t\t\t\t: `${cwd}/${ogConfig.defaultTemplate.replace(/^\\.\\//, '')}`;\n\t\t\treturn await loadOGImageComponent(templatePath, isWatchMode);\n\t\t} catch (error) {\n\t\t\tconsole.warn(\n\t\t\t\t'[reroute] Failed to load default OG template, using built-in:',\n\t\t\t\terror,\n\t\t\t);\n\t\t}\n\t}\n\n\treturn DefaultOGTemplate;\n}\n\nexport function registerOGRoutes(app: Elysia, options: OGRouteOptions): Elysia {\n\tconst { clientDir, cwd, isWatchMode, ogConfig, ogCache } = options;\n\n\tconst width = ogConfig.width ?? 1200;\n\tconst height = ogConfig.height ?? 630;\n\tconst maxAge = ogConfig.maxAge ?? 3600;\n\n\t// Track ongoing generations to prevent duplicates and allow waiting\n\tconst generatingImages = new Map<string, Promise<void>>();\n\n\t// Global font cache - load fonts once and reuse across all image generations\n\tlet fontsCache: OGImageFont[] | undefined;\n\tlet fontsCachePromise: Promise<OGImageFont[] | undefined> | null = null;\n\n\t// Periodic cache stats logging (every 5 minutes)\n\tconst statsInterval = setInterval(() => {\n\t\tif ('stats' in ogCache && typeof ogCache.stats === 'function') {\n\t\t\tconst stats = ogCache.stats();\n\t\t\tconsole.log(\n\t\t\t\t`[reroute/og] Cache stats: ${stats.entries} entries, ${stats.memoryMB}MB / ${stats.maxMemoryMB}MB (${stats.memoryUsagePercent}%)`,\n\t\t\t);\n\t\t}\n\t}, 300_000);\n\n\t// Cleanup on shutdown\n\tif (statsInterval.unref) {\n\t\tstatsInterval.unref();\n\t}\n\n\tfunction normalizeOgPathname(urlPathname: string): string {\n\t\tlet pathname = urlPathname\n\t\t\t.replace(/^\\/__reroute_og/, '')\n\t\t\t.replace(/\\.png$/, '');\n\n\t\t// Handle index.png -> /\n\t\tif (pathname === '/index' || pathname === 'index') {\n\t\t\tpathname = '/';\n\t\t} else if (pathname.endsWith('/index')) {\n\t\t\tpathname = pathname.replace(/\\/index$/, '') || '/';\n\t\t}\n\n\t\treturn pathname;\n\t}\n\n\tfunction checkOgCache(pathname: string, set: Any): Response | undefined {\n\t\t// TTLCache handles expiration automatically\n\t\tconst cached = ogCache.get(pathname) as Buffer | undefined;\n\t\tif (cached) {\n\t\t\tset.headers['content-type'] = 'image/png';\n\t\t\tset.headers['content-length'] = String(cached.byteLength);\n\t\t\tset.headers['cache-control'] = `public, max-age=${maxAge}`;\n\t\t\tset.headers['Reroute-Cache'] = 'HIT';\n\t\t\treturn new Response(cached as BodyInit);\n\t\t}\n\t\treturn undefined;\n\t}\n\n\t// Helper to get possible font paths\n\tfunction getFontPaths(\n\t\tfontPath: string,\n\t\tbaseDir: string,\n\t\tjoin: (...paths: string[]) => string,\n\t): string[] {\n\t\tconst fontRelativePath = fontPath\n\t\t\t.replace(/^(\\.\\/)?src\\/client\\/assets\\//, '')\n\t\t\t.replace(/^assets\\//, '');\n\n\t\treturn [\n\t\t\tjoin(clientDir, 'assets', fontRelativePath),\n\t\t\tjoin(baseDir, '.reroute', 'assets', fontRelativePath),\n\t\t\tjoin(cwd, '.reroute', 'assets', fontRelativePath),\n\t\t\tjoin(cwd, fontPath),\n\t\t\tjoin(baseDir, fontPath),\n\t\t];\n\t}\n\n\t// Helper to load a single font from possible paths\n\tasync function tryLoadFont(\n\t\tfont: { name: string; path: string; weight?: number; style?: string },\n\t\tpossiblePaths: string[],\n\t\texistsSync: (path: string) => boolean,\n\t): Promise<OGImageFont | null> {\n\t\tfor (const fontPath of possiblePaths) {\n\t\t\tif (existsSync(fontPath)) {\n\t\t\t\tconst fontFile = Bun.file(fontPath);\n\t\t\t\tconst data = await fontFile.arrayBuffer();\n\t\t\t\t// console.log(`[reroute/og] Loaded font: ${font.name} from ${fontPath}`);\n\t\t\t\treturn {\n\t\t\t\t\tname: font.name,\n\t\t\t\t\tdata,\n\t\t\t\t\tweight: font.weight || 400,\n\t\t\t\t\tstyle: (font.style as OGImageFont['style']) || 'normal',\n\t\t\t\t\tpath: fontPath as OGImageFont['path'],\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\t// Helper to load all configured fonts\n\tasync function loadAllFonts(): Promise<OGImageFont[]> {\n\t\tif (!ogConfig.fonts || ogConfig.fonts.length === 0) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst { join, dirname } = await import('node:path');\n\t\tconst { existsSync } = await import('node:fs');\n\n\t\tconst isCompiledBinary =\n\t\t\ttypeof Bun !== 'undefined' && process.argv[0]?.endsWith(process.argv[1]);\n\t\tconst baseDir = isCompiledBinary ? dirname(process.argv[1]) : cwd;\n\n\t\tconst loadedFonts: OGImageFont[] = [];\n\n\t\tfor (const font of ogConfig.fonts) {\n\t\t\ttry {\n\t\t\t\tconst possiblePaths = getFontPaths(font.path, baseDir, join);\n\t\t\t\tconst loadedFont = await tryLoadFont(font, possiblePaths, existsSync);\n\n\t\t\t\tif (loadedFont) {\n\t\t\t\t\tloadedFonts.push(loadedFont);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(`[reroute/og] Font file not found: ${font.path}`);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.warn(`[reroute/og] Failed to load font ${font.path}:`, error);\n\t\t\t}\n\t\t}\n\n\t\treturn loadedFonts;\n\t}\n\n\t// Load fonts once and cache them for reuse across all image generations\n\tasync function loadFonts(): Promise<OGImageFont[] | undefined> {\n\t\tif (fontsCache !== undefined) {\n\t\t\treturn fontsCache;\n\t\t}\n\n\t\tif (fontsCachePromise) {\n\t\t\treturn await fontsCachePromise;\n\t\t}\n\n\t\tfontsCachePromise = loadAllFonts().then((fonts) => {\n\t\t\tfontsCache = fonts;\n\t\t\treturn fontsCache;\n\t\t});\n\n\t\treturn await fontsCachePromise;\n\t}\n\n\tasync function generateOgImage(\n\t\tpathname: string,\n\t\tclientDir: string,\n\t\tcwd: string,\n\t\tisWatchMode: boolean,\n\t\togConfig: OGImageOptions,\n\t\twidth: number,\n\t\theight: number,\n\t): Promise<void> {\n\t\tconst ogPath = await findOGImageForPath(pathname, clientDir);\n\t\tconst Component = await loadOgComponent(ogPath, ogConfig, cwd, isWatchMode);\n\n\t\tif (!Component) {\n\t\t\tconsole.warn(`[reroute] No OG image component found for ${pathname}`);\n\t\t\tthrow new NotFoundError('OG image component not found');\n\t\t}\n\n\t\tconst params = ogPath\n\t\t\t? extractParamsFromPath(pathname, ogPath, clientDir)\n\t\t\t: {};\n\n\t\tconst { meta, ogImage: routeOgImage } = await getRouteMetadata(\n\t\t\tpathname,\n\t\t\tcwd,\n\t\t\tclientDir,\n\t\t\tisWatchMode,\n\t\t);\n\n\t\t// Use cached fonts instead of loading them every time\n\t\tconst fonts = await loadFonts();\n\n\t\tconst buffer = await renderOGImageToPNG(\n\t\t\tComponent,\n\t\t\t{\n\t\t\t\tparams,\n\t\t\t\tmeta,\n\t\t\t\tavatar: routeOgImage?.avatar ?? ogConfig.avatar,\n\t\t\t\tsiteName: routeOgImage?.siteName ?? ogConfig.siteName,\n\t\t\t\tbaseUrl: ogConfig.baseUrl,\n\t\t\t},\n\t\t\t{ width, height, fonts },\n\t\t);\n\n\t\t// Cache the generated image (TTLCache handles TTL automatically)\n\t\togCache.set(pathname, buffer);\n\t}\n\n\t// Helper to validate pathname for security\n\t// Block bot spam URLs with excessive length or repetitive patterns\n\tfunction validatePathname(pathname: string): boolean {\n\t\t// Hashtag URLs should be short: /tools/hashtag/somehashtag (~30-50 chars)\n\t\t// Even with encoding, should never exceed 80 chars\n\t\tif (pathname.length > 80) return false;\n\n\t\t// Block repetitive patterns (bot spam indicators)\n\t\t// Pattern 1: \"2525252525...\" - encoded percent signs\n\t\tif (/(25){5,}/.test(pathname)) return false;\n\n\t\t// Pattern 2: Any 2-char sequence repeated 5+ times\n\t\tif (/(.{2})\\1{4,}/.test(pathname)) return false;\n\n\t\t// Block excessive percent-encoding\n\t\tconst percentCount = (pathname.match(/%/g) || []).length;\n\t\tif (percentCount > 3) return false;\n\n\t\treturn true;\n\t}\n\n\t// Helper to handle OG image generation with deduplication\n\tasync function handleOgGeneration(pathname: string): Promise<void> {\n\t\tconst existingGeneration = generatingImages.get(pathname);\n\t\tif (existingGeneration) {\n\t\t\tawait existingGeneration;\n\t\t\treturn;\n\t\t}\n\n\t\tconst generationPromise = generateOgImage(\n\t\t\tpathname,\n\t\t\tclientDir,\n\t\t\tcwd,\n\t\t\tisWatchMode,\n\t\t\togConfig,\n\t\t\twidth,\n\t\t\theight,\n\t\t);\n\n\t\tgeneratingImages.set(pathname, generationPromise);\n\n\t\ttry {\n\t\t\tawait generationPromise;\n\t\t\tconsole.log(`[reroute/og] Generated image for: ${pathname}`);\n\t\t} finally {\n\t\t\tgeneratingImages.delete(pathname);\n\t\t}\n\t}\n\n\tapp.get('/__reroute_og/*', async ({ request, set }) => {\n\t\ttry {\n\t\t\tconst url = new URL(request.url);\n\t\t\tconst pathname = normalizeOgPathname(url.pathname);\n\n\t\t\tif (!validatePathname(pathname)) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t`[reroute/og] Blocked suspicious URL: ${pathname.substring(0, 100)}...`,\n\t\t\t\t);\n\t\t\t\tset.status = 400;\n\t\t\t\treturn new Response('Invalid URL', {\n\t\t\t\t\tstatus: 400,\n\t\t\t\t\theaders: { 'Content-Type': 'text/plain' },\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Check cache first\n\t\t\tconst cachedResponse = checkOgCache(pathname, set);\n\t\t\tif (cachedResponse) return cachedResponse;\n\n\t\t\t// Generate image if needed\n\t\t\ttry {\n\t\t\t\tawait handleOgGeneration(pathname);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(\n\t\t\t\t\t`[reroute/og] Failed to generate image for ${pathname}:`,\n\t\t\t\t\terror,\n\t\t\t\t);\n\t\t\t\tset.status = 500;\n\t\t\t\treturn new Response('Failed to generate image', {\n\t\t\t\t\tstatus: 500,\n\t\t\t\t\theaders: { 'Content-Type': 'text/plain' },\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Return the generated image from cache\n\t\t\tconst generatedResponse = checkOgCache(pathname, set);\n\t\t\tif (generatedResponse) return generatedResponse;\n\n\t\t\t// Should not reach here, but handle gracefully\n\t\t\tset.status = 500;\n\t\t\treturn new Response('Image generation completed but not cached', {\n\t\t\t\tstatus: 500,\n\t\t\t\theaders: { 'Content-Type': 'text/plain' },\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tconsole.error('[reroute] Failed to handle OG image request:', error);\n\t\t\tset.status = 500;\n\t\t\treturn new Response('Internal Server Error', {\n\t\t\t\tstatus: 500,\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'text/plain',\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t});\n\n\treturn app;\n}\n",
|
|
82
83
|
"import type { Elysia } from 'elysia';\nimport type { RedirectRule } from 'reroute-js/core';\n\ninterface CompiledRedirect {\n\tsource: string | RegExp;\n\tdestination: string | ((url: URL) => string | null | Promise<string | null>);\n\tstatus: 301 | 302 | 307 | 308;\n\tisRegex: boolean;\n}\n\n/**\n * Compile redirect rules into optimized matchers\n */\nfunction compileRedirects(rules: RedirectRule[]): CompiledRedirect[] {\n\treturn rules.map((rule) => {\n\t\tconst isRegex = rule.regex ?? rule.source instanceof RegExp;\n\t\treturn {\n\t\t\tsource: rule.source,\n\t\t\tdestination: rule.destination,\n\t\t\tstatus: rule.status ?? 302, // Default to 302 temporary redirect\n\t\t\tisRegex,\n\t\t};\n\t});\n}\n\n/**\n * Match a pathname against a redirect rule\n */\nfunction matchRedirect(\n\tpathname: string,\n\tredirect: CompiledRedirect,\n): null | {\n\tdestination: string | ((url: URL) => string | null | Promise<string | null>);\n\tcaptures: string[];\n} {\n\tif (redirect.isRegex) {\n\t\tconst pattern =\n\t\t\tredirect.source instanceof RegExp\n\t\t\t\t? redirect.source\n\t\t\t\t: new RegExp(redirect.source);\n\t\tconst match = pathname.match(pattern);\n\t\tif (match) {\n\t\t\treturn {\n\t\t\t\tdestination: redirect.destination,\n\t\t\t\tcaptures: match.slice(1), // Capture groups (excluding full match)\n\t\t\t};\n\t\t}\n\t} else {\n\t\t// Exact match for string sources\n\t\tif (pathname === redirect.source) {\n\t\t\treturn {\n\t\t\t\tdestination: redirect.destination,\n\t\t\t\tcaptures: [],\n\t\t\t};\n\t\t}\n\t}\n\treturn null;\n}\n\n/**\n * Replace capture groups in destination string\n * Supports $1, $2, etc. for regex captures\n */\nfunction replaceCaptures(destination: string, captures: string[]): string {\n\treturn destination.replace(/\\$(\\d+)/g, (_, index) => {\n\t\tconst captureIndex = Number.parseInt(index, 10) - 1;\n\t\treturn captures[captureIndex] ?? '';\n\t});\n}\n\n/**\n * Register redirect routes\n * Redirects are checked before all other routes to ensure proper redirect behavior\n */\nexport function registerRedirectRoutes(\n\tapp: Elysia,\n\trules: RedirectRule[],\n): Elysia {\n\tif (!rules || rules.length === 0) {\n\t\treturn app;\n\t}\n\n\t// Filter out disabled redirects (default to enabled if not specified)\n\tconst enabledRules = rules.filter((rule) => rule.enabled !== false);\n\n\tif (enabledRules.length === 0) {\n\t\treturn app;\n\t}\n\n\tconst compiled = compileRedirects(enabledRules);\n\n\tconsole.log(\n\t\t`[reroute] Registered ${compiled.length} redirect rule${compiled.length === 1 ? '' : 's'}`,\n\t);\n\n\t// Use onBeforeHandle hook to intercept requests before route matching\n\tasync function processRedirectDestination(\n\t\tmatch: {\n\t\t\tdestination:\n\t\t\t\t| string\n\t\t\t\t| ((url: URL) => string | Promise<string | null> | null);\n\t\t\tcaptures: string[];\n\t\t},\n\t\turl: URL,\n\t): Promise<{\n\t\tdestination: string | null;\n\t\tisHandlerFunction: boolean;\n\t} | null> {\n\t\t// Handle function-based redirects\n\t\tif (typeof match.destination === 'function') {\n\t\t\ttry {\n\t\t\t\tconst result = await match.destination(url);\n\t\t\t\tif (result === null) {\n\t\t\t\t\t// Skip redirect, continue to normal route handling\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn { destination: result, isHandlerFunction: true };\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('[reroute] Redirect handler error:', error);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\t// Handle string-based redirects with capture group replacement\n\t\tconst destination = match.destination.includes('$')\n\t\t\t? replaceCaptures(match.destination, match.captures)\n\t\t\t: match.destination;\n\n\t\treturn { destination, isHandlerFunction: false };\n\t}\n\n\tfunction buildFinalDestination(\n\t\tdestination: string,\n\t\tisHandlerFunction: boolean,\n\t\turl: URL,\n\t): string {\n\t\tif (!isHandlerFunction && url.search && !destination.includes('?')) {\n\t\t\treturn destination + url.search;\n\t\t}\n\t\treturn destination;\n\t}\n\n\tapp.onBeforeHandle(async ({ request }) => {\n\t\tconst url = new URL(request.url);\n\t\tconst pathname = url.pathname;\n\n\t\t// Try each redirect rule in order\n\t\tfor (const redirectRule of compiled) {\n\t\t\tconst match = matchRedirect(pathname, redirectRule);\n\t\t\tif (!match) continue;\n\n\t\t\tconst processed = await processRedirectDestination(match, url);\n\t\t\tif (!processed) continue;\n\n\t\t\tconst { destination, isHandlerFunction } = processed;\n\n\t\t\t// Apply redirect\n\t\t\tif (destination) {\n\t\t\t\tconst finalDestination = buildFinalDestination(\n\t\t\t\t\tdestination,\n\t\t\t\t\tisHandlerFunction,\n\t\t\t\t\turl,\n\t\t\t\t);\n\n\t\t\t\t// Return redirect response\n\t\t\t\treturn new Response(null, {\n\t\t\t\t\tstatus: redirectRule.status,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\tLocation: finalDestination,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// No redirect matched - continue to route handlers\n\t});\n\n\treturn app;\n}\n",
|
|
83
84
|
"import type { Elysia } from 'elysia';\nimport { NotFoundError } from 'elysia';\nimport {\n\tdiscoverRobotsData,\n\tgenerateRobots,\n\ttype RedirectRule,\n\ttype RobotsOptions,\n\ttype SitemapOptions,\n\ttype TTLCache,\n} from 'reroute-js/core';\nimport { textResponse } from '../libs/response';\n\ntype RobotsRouteOptions = {\n\tcwd: string;\n\tmaxAge: number;\n\tisWatchMode: boolean;\n\trobotsCache: TTLCache<string, string>;\n\trobotsConfig: RobotsOptions;\n\tsitemapConfig?: SitemapOptions;\n\tsitemapEnabled: boolean;\n\tredirects?: RedirectRule[];\n};\n\nexport function registerRobotsRoute(\n\tapp: Elysia,\n\toptions: RobotsRouteOptions,\n): Elysia {\n\tconst {\n\t\tcwd,\n\t\tmaxAge,\n\t\tisWatchMode,\n\t\trobotsCache,\n\t\trobotsConfig,\n\t\tsitemapConfig,\n\t\tsitemapEnabled,\n\t\tredirects,\n\t} = options;\n\n\tapp.get('/robots.txt', async () => {\n\t\ttry {\n\t\t\tconst cached = robotsCache.get('robots:main');\n\t\t\tif (cached) {\n\t\t\t\treturn textResponse(cached, { maxAge, cacheStatus: 'HIT' });\n\t\t\t}\n\n\t\t\tconst discovery = await discoverRobotsData(\n\t\t\t\tcwd,\n\t\t\t\tisWatchMode,\n\t\t\t\trobotsConfig,\n\t\t\t\tsitemapConfig,\n\t\t\t\tredirects,\n\t\t\t);\n\n\t\t\tconst txt = generateRobots(discovery, robotsConfig, sitemapEnabled);\n\n\t\t\trobotsCache.set('robots:main', txt);\n\n\t\t\treturn textResponse(txt, { maxAge, cacheStatus: 'MISS' });\n\t\t} catch (error) {\n\t\t\tconsole.error('[reroute] Failed to generate robots.txt:', error);\n\t\t\tthrow new NotFoundError();\n\t\t}\n\t});\n\n\treturn app;\n}\n",
|
|
84
85
|
"import type { Elysia } from 'elysia';\nimport { NotFoundError } from 'elysia';\nimport {\n\ttype Doc,\n\tdiscoverRSSData,\n\tdiscoverSSRDataFeedItems,\n\tgenerateFeed,\n\tjoin,\n\ttype RSSFeed,\n\ttype RSSOptions,\n\tTTLCache,\n\ttype TTLCache as TTLCacheType,\n} from 'reroute-js/core';\nimport { toTTL } from '../libs/caching';\nimport { feedResponse } from '../libs/response';\n\ntype RSSRouteOptions = {\n\tcwd: string;\n\tclientDir: string;\n\tcollections: string[];\n\tbaseUrl: string;\n\tmaxAge: number;\n\tisWatchMode: boolean;\n\trssCache: TTLCacheType<string, string>;\n\trssConfig?: RSSOptions;\n};\n\n// Cache discovery results separately (structure of feeds, not content)\n// This has a much longer TTL since route structure rarely changes (5 minutes)\nconst rssDiscoveryCache = new TTLCache<\n\tstring,\n\tAwaited<ReturnType<typeof discoverRSSData>>\n>(1, 5 * 60 * 1000);\n\nasync function getOrDiscoverRSSData(\n\tcwd: string,\n\tcollections: string[],\n\tbaseUrl: string,\n\tisWatchMode: boolean,\n\trssConfig?: RSSOptions,\n): Promise<Awaited<ReturnType<typeof discoverRSSData>>> {\n\t// In dev mode, always rediscover (files can change)\n\tif (isWatchMode) {\n\t\treturn discoverRSSData(cwd, collections, baseUrl, isWatchMode, rssConfig);\n\t}\n\n\t// In production, cache discovery (TTLCache handles expiration)\n\tconst cacheKey = 'rss:discovery';\n\tconst cached = rssDiscoveryCache.get(cacheKey);\n\tif (cached) return cached;\n\n\tconst discovery = await discoverRSSData(\n\t\tcwd,\n\t\tcollections,\n\t\tbaseUrl,\n\t\tisWatchMode,\n\t\trssConfig,\n\t);\n\n\trssDiscoveryCache.set(cacheKey, discovery);\n\treturn discovery;\n}\n\nfunction createFeedTitle(\n\tconfigTitle: string | undefined,\n\tname: string,\n): string {\n\treturn configTitle ?? `${name.charAt(0).toUpperCase() + name.slice(1)} Feed`;\n}\n\nasync function discoverSSRRoutes(\n\tcwd: string,\n\tisWatchMode: boolean,\n): Promise<Array<{ pattern: string; path: string; isLayout?: boolean }>> {\n\ttry {\n\t\tconst { discoverSitemapData } = await import('reroute-js/core');\n\t\tconst sitemapData = await discoverSitemapData(cwd, [], '', isWatchMode);\n\t\tconst staticRoutes = sitemapData.staticRoutes\n\t\t\t.filter((r) => !r.pattern.includes(':'))\n\t\t\t.map((r) => ({ pattern: r.pattern, path: r.path }));\n\n\t\tconst routesPath = join(cwd, '.reroute', 'routes.ts');\n\t\tconst routesMod = await import(\n\t\t\t`${Bun.pathToFileURL(routesPath).href}${isWatchMode ? `?t=${Date.now()}` : ''}`\n\t\t);\n\t\tconst layouts = routesMod.layouts ?? [];\n\n\t\tfor (const layout of layouts) {\n\t\t\tconst pattern = String(layout?.pattern ?? '/');\n\t\t\tconst path = String(layout?.path ?? '');\n\t\t\tif (path && pattern !== '/') {\n\t\t\t\tstaticRoutes.push({ pattern, path });\n\t\t\t}\n\t\t}\n\n\t\treturn staticRoutes;\n\t} catch {\n\t\treturn [];\n\t}\n}\n\nasync function registerMainFeedRoute(\n\tapp: Elysia,\n\tcwd: string,\n\tcollections: string[],\n\tbaseUrl: string,\n\tisWatchMode: boolean,\n\trssCache: TTLCacheType<string, string>,\n\tformat: 'rss' | 'atom',\n\tlimit: number,\n\tmaxAge: number,\n\t_ttlMs: number,\n\tfeedTitle: string,\n\tfeedDescription: string,\n\trssConfig: RSSOptions | undefined,\n) {\n\tapp.get('/feed.xml', async () => {\n\t\ttry {\n\t\t\tconst cached = rssCache.get('rss:main');\n\t\t\tif (cached) {\n\t\t\t\treturn feedResponse(cached, format, { maxAge, cacheStatus: 'HIT' });\n\t\t\t}\n\n\t\t\tconst discovery = await getOrDiscoverRSSData(\n\t\t\t\tcwd,\n\t\t\t\tcollections,\n\t\t\t\tbaseUrl,\n\t\t\t\tisWatchMode,\n\t\t\t\trssConfig,\n\t\t\t);\n\n\t\t\tconst allItems = [\n\t\t\t\t...Array.from(discovery.collections.values()).flat(),\n\t\t\t\t...Array.from(discovery.ssrDataFeeds.values()).flat(),\n\t\t\t].sort((a, b) => {\n\t\t\t\tif (!a.pubDate) return 1;\n\t\t\t\tif (!b.pubDate) return -1;\n\t\t\t\treturn new Date(b.pubDate).getTime() - new Date(a.pubDate).getTime();\n\t\t\t});\n\n\t\t\tconst feed: RSSFeed = {\n\t\t\t\ttitle: feedTitle,\n\t\t\t\tlink: `${baseUrl}/feed.xml`,\n\t\t\t\tdescription: feedDescription,\n\t\t\t\titems: allItems,\n\t\t\t};\n\n\t\t\tconst xml = generateFeed(feed, { format, limit });\n\t\t\trssCache.set('rss:main', xml);\n\n\t\t\treturn feedResponse(xml, format, { maxAge, cacheStatus: 'MISS' });\n\t\t} catch (error) {\n\t\t\tconsole.error('[reroute] Failed to generate main feed:', error);\n\t\t\tthrow new NotFoundError();\n\t\t}\n\t});\n}\n\nfunction registerCollectionFeedRoutes(\n\tapp: Elysia,\n\tcollections: string[],\n\toptions: {\n\t\tcwd: string;\n\t\tclientDir: string;\n\t\tbaseUrl: string;\n\t\tisWatchMode: boolean;\n\t\trssCache: TTLCacheType<string, string>;\n\t\tformat: 'rss' | 'atom';\n\t\tlimit: number;\n\t\tmaxAge: number;\n\t\tttlMs: number;\n\t\trssConfig: RSSOptions | undefined;\n\t\tavailableFeeds: string[];\n\t},\n) {\n\tfor (const collection of collections) {\n\t\toptions.availableFeeds.push(`/${collection}/feed.xml`);\n\n\t\tapp.get(`/${collection}/feed.xml`, async () => {\n\t\t\tconst cacheKey = `rss:${collection}`;\n\n\t\t\ttry {\n\t\t\t\tconst cached = options.rssCache.get(cacheKey);\n\t\t\t\tif (cached) {\n\t\t\t\t\treturn feedResponse(cached, options.format, {\n\t\t\t\t\t\tmaxAge: options.maxAge,\n\t\t\t\t\t\tcacheStatus: 'HIT',\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tconst discovery = await getOrDiscoverRSSData(\n\t\t\t\t\toptions.cwd,\n\t\t\t\t\t[collection],\n\t\t\t\t\toptions.baseUrl,\n\t\t\t\t\toptions.isWatchMode,\n\t\t\t\t\toptions.rssConfig,\n\t\t\t\t);\n\n\t\t\t\tconst items = discovery.collections.get(collection) ?? [];\n\t\t\t\tif (items.length === 0) throw new NotFoundError();\n\n\t\t\t\tconst feed: RSSFeed = {\n\t\t\t\t\ttitle: createFeedTitle(options.rssConfig?.title, collection),\n\t\t\t\t\tlink: `${options.baseUrl}/${collection}/feed.xml`,\n\t\t\t\t\tdescription:\n\t\t\t\t\t\toptions.rssConfig?.description ?? `Latest ${collection} updates`,\n\t\t\t\t\titems,\n\t\t\t\t};\n\n\t\t\t\tconst xml = generateFeed(feed, {\n\t\t\t\t\tformat: options.format,\n\t\t\t\t\tlimit: options.limit,\n\t\t\t\t});\n\t\t\t\toptions.rssCache.set(cacheKey, xml);\n\n\t\t\t\treturn feedResponse(xml, options.format, {\n\t\t\t\t\tmaxAge: options.maxAge,\n\t\t\t\t\tcacheStatus: 'MISS',\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof NotFoundError) throw error;\n\t\t\t\tconsole.error(\n\t\t\t\t\t`[reroute] Failed to generate ${collection} feed:`,\n\t\t\t\t\terror,\n\t\t\t\t);\n\t\t\t\tthrow new NotFoundError();\n\t\t\t}\n\t\t});\n\t}\n}\n\nasync function discoverRoutesWithFeeds(\n\tssrDataRoutes: Array<{ pattern: string; path: string; isLayout?: boolean }>,\n\tcollections: string[],\n\toptions: {\n\t\tcwd: string;\n\t\tclientDir: string;\n\t\tbaseUrl: string;\n\t\tisWatchMode: boolean;\n\t\trssConfig: RSSOptions | undefined;\n\t\tavailableFeeds: string[];\n\t},\n): Promise<Array<{ pattern: string; path: string; isLayout?: boolean }>> {\n\tconst routesWithFeeds: typeof ssrDataRoutes = [];\n\n\tfor (const route of ssrDataRoutes) {\n\t\tconst routeName = route.pattern.replace(/^\\//, '') || 'index';\n\t\tif (routeName === 'index' || collections.includes(routeName)) continue;\n\t\tif (options.rssConfig?.excludeRoutes?.includes(route.pattern)) continue;\n\n\t\ttry {\n\t\t\tconst items = await discoverSSRDataFeedItems(\n\t\t\t\toptions.cwd,\n\t\t\t\troute.pattern,\n\t\t\t\troute.path,\n\t\t\t\toptions.isWatchMode,\n\t\t\t\toptions.baseUrl,\n\t\t\t\toptions.rssConfig,\n\t\t\t);\n\n\t\t\tif (items.length > 0) {\n\t\t\t\troutesWithFeeds.push(route);\n\t\t\t\toptions.availableFeeds.push(`${route.pattern}/feed.xml`);\n\t\t\t}\n\t\t} catch {\n\t\t\t// Skip routes that error during discovery\n\t\t}\n\t}\n\n\treturn routesWithFeeds;\n}\n\nasync function generateSSRDataFeed(\n\troute: { pattern: string; path: string; isLayout?: boolean },\n\toptions: {\n\t\tcwd: string;\n\t\tbaseUrl: string;\n\t\tisWatchMode: boolean;\n\t\trssCache: TTLCacheType<string, string>;\n\t\tformat: 'rss' | 'atom';\n\t\tlimit: number;\n\t\tmaxAge: number;\n\t\tttlMs: number;\n\t\trssConfig: RSSOptions | undefined;\n\t},\n): Promise<Response> {\n\tconst routeName = route.pattern.replace(/^\\//, '') || 'index';\n\tconst cacheKey = `rss:${routeName}`;\n\n\tconst cached = options.rssCache.get(cacheKey);\n\tif (cached) {\n\t\treturn feedResponse(cached, options.format, {\n\t\t\tmaxAge: options.maxAge,\n\t\t\tcacheStatus: 'HIT',\n\t\t});\n\t}\n\n\tlet items = await discoverSSRDataFeedItems(\n\t\toptions.cwd,\n\t\troute.pattern,\n\t\troute.path,\n\t\toptions.isWatchMode,\n\t\toptions.baseUrl,\n\t\toptions.rssConfig,\n\t);\n\n\tif (items.length === 0 && route.isLayout) {\n\t\tconst discovery = await getOrDiscoverRSSData(\n\t\t\toptions.cwd,\n\t\t\t[],\n\t\t\toptions.baseUrl,\n\t\t\toptions.isWatchMode,\n\t\t\toptions.rssConfig,\n\t\t);\n\t\titems = discovery.ssrDataFeeds.get(route.pattern) ?? [];\n\t}\n\n\tif (items.length === 0) throw new NotFoundError();\n\n\tconst feed: RSSFeed = {\n\t\ttitle: createFeedTitle(options.rssConfig?.title, routeName),\n\t\tlink: `${options.baseUrl}${route.pattern}/feed.xml`,\n\t\tdescription:\n\t\t\toptions.rssConfig?.description ?? `Latest ${routeName} updates`,\n\t\titems,\n\t};\n\n\tconst xml = generateFeed(feed, {\n\t\tformat: options.format,\n\t\tlimit: options.limit,\n\t});\n\toptions.rssCache.set(cacheKey, xml);\n\n\treturn feedResponse(xml, options.format, {\n\t\tmaxAge: options.maxAge,\n\t\tcacheStatus: 'MISS',\n\t});\n}\n\nfunction registerSSRDataFeedRoutes(\n\tapp: Elysia,\n\troutesWithFeeds: Array<{ pattern: string; path: string; isLayout?: boolean }>,\n\toptions: {\n\t\tcwd: string;\n\t\tbaseUrl: string;\n\t\tisWatchMode: boolean;\n\t\trssCache: TTLCacheType<string, string>;\n\t\tformat: 'rss' | 'atom';\n\t\tlimit: number;\n\t\tmaxAge: number;\n\t\tttlMs: number;\n\t\trssConfig: RSSOptions | undefined;\n\t},\n) {\n\tfor (const route of routesWithFeeds) {\n\t\tapp.get(`${route.pattern}/feed.xml`, async () => {\n\t\t\ttry {\n\t\t\t\treturn await generateSSRDataFeed(route, options);\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof NotFoundError) throw error;\n\t\t\t\tconst routeName = route.pattern.replace(/^\\//, '') || 'index';\n\t\t\t\tconsole.error(`[reroute] Failed to generate ${routeName} feed:`, error);\n\t\t\t\tthrow new NotFoundError();\n\t\t\t}\n\t\t});\n\t}\n}\n\nexport async function registerRSSRoutes(\n\tapp: Elysia,\n\toptions: RSSRouteOptions,\n): Promise<Elysia> {\n\tconst {\n\t\tcwd,\n\t\tclientDir,\n\t\tcollections,\n\t\tbaseUrl,\n\t\tmaxAge,\n\t\tisWatchMode,\n\t\trssCache,\n\t\trssConfig,\n\t} = options;\n\n\tconst ttlMs = toTTL(maxAge);\n\tconst limit = rssConfig?.limit ?? 50;\n\tconst format: 'rss' | 'atom' = (rssConfig?.format as 'rss' | 'atom') ?? 'rss';\n\tconst feedTitle = rssConfig?.title ?? 'Feed';\n\tconst feedDescription = rssConfig?.description ?? 'Latest updates';\n\tconst availableFeeds: string[] = ['/feed.xml'];\n\n\t// Main feed route\n\tregisterMainFeedRoute(\n\t\tapp,\n\t\tcwd,\n\t\tcollections,\n\t\tbaseUrl,\n\t\tisWatchMode,\n\t\trssCache,\n\t\tformat,\n\t\tlimit,\n\t\tmaxAge,\n\t\tttlMs,\n\t\tfeedTitle,\n\t\tfeedDescription,\n\t\trssConfig,\n\t);\n\n\t// Collection-specific feeds\n\tregisterCollectionFeedRoutes(app, collections, {\n\t\tcwd,\n\t\tclientDir,\n\t\tbaseUrl,\n\t\tisWatchMode,\n\t\trssCache,\n\t\tformat,\n\t\tlimit,\n\t\tmaxAge,\n\t\tttlMs,\n\t\trssConfig,\n\t\tavailableFeeds,\n\t});\n\n\t// In dev mode, skip expensive SSR data route discovery\n\t// Collection feeds (blog/feed.xml, etc.) are already registered above\n\t// SSR data route feeds can be accessed via direct route patterns\n\tif (isWatchMode) {\n\t\t// Just set the feeds list with what we know (collections)\n\t\t(globalThis as Doc).__REROUTE_AVAILABLE_FEEDS__ = availableFeeds;\n\t\treturn app;\n\t}\n\n\t// Production mode: do full discovery upfront (cached, one-time cost)\n\tconst ssrDataRoutes = await discoverSSRRoutes(cwd, isWatchMode);\n\n\t// Discover routes with feed items\n\tconst routesWithFeeds = await discoverRoutesWithFeeds(\n\t\tssrDataRoutes,\n\t\tcollections,\n\t\t{\n\t\t\tcwd,\n\t\t\tclientDir,\n\t\t\tbaseUrl,\n\t\t\tisWatchMode,\n\t\t\trssConfig,\n\t\t\tavailableFeeds,\n\t\t},\n\t);\n\n\t// Register SSR data route feeds\n\tregisterSSRDataFeedRoutes(app, routesWithFeeds, {\n\t\tcwd,\n\t\tbaseUrl,\n\t\tisWatchMode,\n\t\trssCache,\n\t\tformat,\n\t\tlimit,\n\t\tmaxAge,\n\t\tttlMs,\n\t\trssConfig,\n\t});\n\n\t(globalThis as Doc).__REROUTE_AVAILABLE_FEEDS__ = availableFeeds;\n\n\treturn app;\n}\n",
|
|
@@ -88,7 +89,7 @@
|
|
|
88
89
|
"import { join } from 'node:path';\nimport { type Span, trace } from '@opentelemetry/api';\nimport type { Elysia } from 'elysia';\nimport { NotFoundError } from 'elysia';\nimport type { ReactElement } from 'react';\nimport {\n\tgzipIfAccepted,\n\tLRUCache,\n\ttype OGImageOptions,\n\ttype OGOptions,\n\trenderSSRDocument,\n\trenderSSRDocumentStream,\n} from 'reroute-js/core';\nimport { withParentSpan, withSpan } from 'reroute-js/telemetry/server';\nimport type { Any } from '../types';\n\n// CRITICAL: Add global handlers to prevent unhandled errors from crashing the server\n// These catch errors that escape all other error handling\nif (typeof process !== 'undefined') {\n\tprocess.on('unhandledRejection', (reason, _promise) => {\n\t\tconsole.error('[reroute] Unhandled Promise Rejection:', reason);\n\t\t// Don't exit - just log and continue\n\t});\n\n\tprocess.on('uncaughtException', (error) => {\n\t\tconsole.error('[reroute] Uncaught Exception:', error);\n\t\t// Don't exit for recoverable errors - just log\n\t\t// The server will continue running\n\t});\n}\n\n// Helper to check if OpenTelemetry is available\nlet otelAvailable: boolean | undefined;\n\nfunction isOtelAvailable(): boolean {\n\tif (otelAvailable !== undefined) return otelAvailable;\n\n\ttry {\n\t\t// Check if @opentelemetry/api is available\n\t\trequire('@opentelemetry/api');\n\t\totelAvailable = true;\n\t\treturn true;\n\t} catch {\n\t\totelAvailable = false;\n\t\treturn false;\n\t}\n}\n\ntype SSRRouteOptions = {\n\trootComponent: ReactElement;\n\tclientDir: string;\n\tcwd: string;\n\tisWatchMode: boolean;\n\tgetBundleUrl: () => Promise<string>;\n\tgetCollections: () => Promise<Record<string, unknown[]>>;\n\tgetTailwindCSS: () => Promise<string>;\n\tgetIndexHtml: () => Promise<string>;\n\tdebug?: boolean;\n\thead?: string;\n\tlang?: string;\n\tappId?: string;\n\tserverCacheEnabled?: boolean;\n\tserverMaxAge?: number;\n\tbrowserCacheEnabled?: boolean;\n\tbrowserMaxAge?: number;\n\tbrowserDirective?: string;\n\tcompression?: boolean;\n\tstreamingEnabled?: boolean;\n\tstreamingTimeout?: number;\n\togConfig?: OGImageOptions;\n\togMetaConfig?: OGOptions;\n\tbaseUrl?: string;\n\tautoCanonical?: boolean;\n\t/** Suffix to append to all page titles */\n\ttitleSuffix?: string;\n};\n\nfunction registerSSRRoutes(app: Elysia, options: SSRRouteOptions): Elysia {\n\tconst {\n\t\trootComponent,\n\t\tclientDir,\n\t\tcwd,\n\t\tisWatchMode,\n\t\tgetBundleUrl,\n\t\tgetCollections,\n\t\tgetTailwindCSS,\n\t\tgetIndexHtml,\n\t\tdebug = false,\n\t\thead = '',\n\t\tlang = 'en',\n\t\tappId = 'root',\n\t\tserverCacheEnabled = true,\n\t\tserverMaxAge = 3600,\n\t\tbrowserCacheEnabled = true,\n\t\tbrowserMaxAge = 300,\n\t\tbrowserDirective = 'public',\n\t\tcompression = true,\n\t\tstreamingEnabled = false,\n\t} = options;\n\n\t// Helper to add Cache-Control header only when browser caching is enabled\n\tconst addCacheControl = (\n\t\theaders: Record<string, string>,\n\t\tcacheControl: string | undefined,\n\t): Record<string, string> => {\n\t\tif (cacheControl) {\n\t\t\theaders['Cache-Control'] = cacheControl;\n\t\t}\n\t\treturn headers;\n\t};\n\n\t// Server-side cache TTL\n\t// If server cache is disabled or maxAge is 0, don't cache\n\tconst SSR_HTML_TTL_MS =\n\t\tserverCacheEnabled && serverMaxAge > 0 ? serverMaxAge * 1000 : 0;\n\tconst htmlCache = new LRUCache<\n\t\tstring,\n\t\t{\n\t\t\tstatus: number;\n\t\t\theaders: Record<string, string>;\n\t\t\tbody: BodyInit;\n\t\t\texp: number;\n\t\t}\n\t>(200);\n\tconst makeKey = (\n\t\tpathname: string,\n\t\tsearchParams: URLSearchParams | undefined,\n\t\tacceptEncoding: string | undefined,\n\t) => {\n\t\tconst queryString = searchParams?.toString();\n\t\tconst fullPath = queryString ? `${pathname}?${queryString}` : pathname;\n\t\treturn `${fullPath}::${acceptEncoding || 'identity'}`;\n\t};\n\n\t// Load routes from manifest.json\n\tlet staticRoutes: string[] = [];\n\tlet contentRoutes: string[] = [];\n\tlet dynamicRoutes: string[] = [];\n\ttry {\n\t\tconst manifestPath = join(cwd, '.reroute', 'manifest.json');\n\t\tconst { readFileSync } = require('node:fs');\n\t\tconst manifestText = readFileSync(manifestPath, 'utf-8');\n\t\tconst manifest = JSON.parse(manifestText);\n\t\tstaticRoutes = manifest.staticRoutes || [];\n\t\tcontentRoutes = manifest.contentRoutes || [];\n\t\tdynamicRoutes = manifest.dynamicRoutes || [];\n\t} catch {\n\t\t// Manifest not found, fallback to root only\n\t\tstaticRoutes = ['/'];\n\t}\n\n\t// Shared SSR handler function\n\n\t// Static file extensions that should never be SSR-rendered\n\t// If these paths don't match a static route, they should 404\n\tconst staticFileExtensions =\n\t\t/\\.(jpe?g|png|gif|webp|avif|svg|ico|bmp|tiff?|woff2?|ttf|otf|eot|mp[34]|wav|ogg|webm|avi|mov|pdf|zip|tar|gz|rar|map)$/i;\n\n\tconst handleSSR = async ({\n\t\trequest,\n\t\tset,\n\t\tstore,\n\t}: {\n\t\trequest: Request;\n\t\tset: Any;\n\t\tstore: Any;\n\t}) => {\n\t\tconst t0 = performance.now();\n\t\tconst method = request.method || 'GET';\n\t\tif (method !== 'GET') throw new NotFoundError();\n\n\t\tconst url = new URL(request.url);\n\t\tconst pathname = url.pathname;\n\n\t\t// Reject requests for static file extensions that weren't caught by earlier routes\n\t\t// These should 404, not return an HTML page with the JS bundle\n\t\tif (staticFileExtensions.test(pathname)) {\n\t\t\tthrow new NotFoundError();\n\t\t}\n\n\t\t// Only handle HTML requests (or Accept: */*)\n\t\tconst accept = request.headers.get('accept') || '';\n\t\t// Accept text/html, */* (any type), or missing Accept header\n\t\tif (accept && !/text\\/html|\\*\\/\\*/i.test(String(accept))) {\n\t\t\tthrow new NotFoundError();\n\t\t}\n\n\t\tconst fullPath = pathname;\n\t\tconst searchParams = url.searchParams;\n\t\tconst acceptEncoding = request.headers.get('accept-encoding') || '';\n\n\t\t// Extract request headers for SSR data functions\n\t\tconst headers: Record<string, string> = {};\n\t\trequest.headers.forEach((value, key) => {\n\t\t\theaders[key.toLowerCase()] = value;\n\t\t});\n\n\t\t// Execute SSR operations within parent span context\n\t\tconst parentSpan = (store as Record<string, unknown>).telemetrySpan as\n\t\t\t| Span\n\t\t\t| undefined;\n\n\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: SSR request handling involves many scenarios - streaming, caching, compression, and error handling\n\t\treturn withParentSpan(parentSpan, async () => {\n\t\t\t// Serve cached HTML if fresh (skip cache in watch mode)\n\t\t\t// For streaming mode, we track whether this is first or subsequent request\n\t\t\tlet isFirstStreamingRequest = false;\n\t\t\tif (!isWatchMode && SSR_HTML_TTL_MS > 0) {\n\t\t\t\ttry {\n\t\t\t\t\tconst ck = makeKey(pathname, searchParams, acceptEncoding);\n\t\t\t\t\tconst cached = htmlCache.get(ck);\n\t\t\t\t\tif (cached && cached.exp > Date.now()) {\n\t\t\t\t\t\tif (isOtelAvailable()) {\n\t\t\t\t\t\t\tconst currentSpan = trace.getActiveSpan();\n\t\t\t\t\t\t\tcurrentSpan?.setAttributes({\n\t\t\t\t\t\t\t\t'reroute.cache.hit': true,\n\t\t\t\t\t\t\t\t'reroute.cache.key': ck,\n\t\t\t\t\t\t\t\t'reroute.pathname': pathname,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tset.status = cached.status;\n\t\t\t\t\t\tObject.assign(set.headers, cached.headers);\n\t\t\t\t\t\tset.headers['Reroute-Cache'] = 'HIT';\n\t\t\t\t\t\treturn new Response(cached.body);\n\t\t\t\t\t}\n\n\t\t\t\t\t// For streaming mode: check if uncompressed version is cached\n\t\t\t\t\t// This helps us determine if it's the first request (no cache) or subsequent (has uncompressed cache)\n\t\t\t\t\tif (streamingEnabled && acceptEncoding) {\n\t\t\t\t\t\tconst uncompressedKey = makeKey(pathname, searchParams, 'identity');\n\t\t\t\t\t\tconst uncompressedCached = htmlCache.get(uncompressedKey);\n\t\t\t\t\t\tisFirstStreamingRequest =\n\t\t\t\t\t\t\t!uncompressedCached || uncompressedCached.exp <= Date.now();\n\t\t\t\t\t}\n\t\t\t\t} catch {}\n\t\t\t}\n\n\t\t\tconst bundleUrl = await withSpan('ssr.get.bundle', async (span) => {\n\t\t\t\tspan.setAttribute('reroute.pathname', pathname);\n\t\t\t\tconst url = await getBundleUrl();\n\t\t\t\tif (debug)\n\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t`[SSR] ${pathname} - bundleUrl: ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t\t\t);\n\t\t\t\treturn url;\n\t\t\t});\n\n\t\t\t// Get cached collections, CSS, and template (instant in prod, reload in dev)\n\t\t\tconst { cachedCollections, cachedTailwindCSS, cachedIndexHtml } =\n\t\t\t\tawait withSpan('ssr.load.cache', async (span) => {\n\t\t\t\t\tconst collections = await getCollections();\n\t\t\t\t\tconst tailwindCSS = await getTailwindCSS();\n\t\t\t\t\tconst indexHtml = await getIndexHtml();\n\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t'reroute.pathname': pathname,\n\t\t\t\t\t\t'reroute.collections.exists': !!collections,\n\t\t\t\t\t\t'reroute.collections.count': Object.keys(collections).length,\n\t\t\t\t\t});\n\t\t\t\t\tif (debug)\n\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t`[SSR] ${pathname} - cached setup: ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t\t\t\t);\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcachedCollections: collections,\n\t\t\t\t\t\tcachedTailwindCSS: tailwindCSS,\n\t\t\t\t\t\tcachedIndexHtml: indexHtml,\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t// Compose Early Hints (103) and Link header for main bundle\n\t\t\ttry {\n\t\t\t\tconst linkValue = `<${bundleUrl}>; rel=modulepreload; as=script`;\n\t\t\t\ttry {\n\t\t\t\t\tconst hints = new Headers({ Link: linkValue });\n\t\t\t\t\t(request as Any)?.sendEarlyHints?.(hints);\n\t\t\t\t} catch {}\n\t\t\t\tset.headers.link = set.headers.link\n\t\t\t\t\t? `${set.headers.link}, ${linkValue}`\n\t\t\t\t\t: linkValue;\n\t\t\t} catch {}\n\n\t\t\t// Build Cache-Control header for browser responses\n\t\t\t// - Watch mode: always no-cache to ensure fresh content during development\n\t\t\t// - Browser cache disabled: no Cache-Control header (let CDN handle it)\n\t\t\t// - Browser cache enabled: use configured maxAge and directive\n\t\t\tconst cacheControlHeader = isWatchMode\n\t\t\t\t? 'no-cache, no-store, must-revalidate'\n\t\t\t\t: browserCacheEnabled\n\t\t\t\t\t? `${browserDirective}, max-age=${browserMaxAge}`\n\t\t\t\t\t: undefined;\n\n\t\t\tlet response: Response;\n\n\t\t\tif (streamingEnabled) {\n\t\t\t\t// Streaming SSR path\n\t\t\t\tif (debug)\n\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t`[SSR] ${pathname} - starting stream: ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t\t\t);\n\n\t\t\t\tconst { stream, status } = await withSpan(\n\t\t\t\t\t'ssr.document.render',\n\t\t\t\t\tasync (renderSpan) => {\n\t\t\t\t\t\trenderSpan?.setAttributes({\n\t\t\t\t\t\t\t'reroute.pathname': pathname,\n\t\t\t\t\t\t\t'reroute.cache.hit': false,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconst result = await renderSSRDocumentStream({\n\t\t\t\t\t\t\tpathname: fullPath,\n\t\t\t\t\t\t\trootComponent,\n\t\t\t\t\t\t\tclientDir,\n\t\t\t\t\t\t\tcwd,\n\t\t\t\t\t\t\tisWatchMode,\n\t\t\t\t\t\t\tbundleUrl,\n\t\t\t\t\t\t\tcachedCollections,\n\t\t\t\t\t\t\tcachedTailwindCSS,\n\t\t\t\t\t\t\tcachedIndexHtml,\n\t\t\t\t\t\t\tdebug,\n\t\t\t\t\t\t\thead,\n\t\t\t\t\t\t\tlang,\n\t\t\t\t\t\t\tappId,\n\t\t\t\t\t\t\tmaxAge: serverMaxAge,\n\t\t\t\t\t\t\tsearchParams,\n\t\t\t\t\t\t\togConfig: options.ogConfig,\n\t\t\t\t\t\t\togMetaConfig: options.ogMetaConfig,\n\t\t\t\t\t\t\tbaseUrl: options.baseUrl,\n\t\t\t\t\t\t\tautoCanonical: options.autoCanonical,\n\t\t\t\t\t\t\tparentSpan: renderSpan,\n\t\t\t\t\t\t\theaders,\n\t\t\t\t\t\t\ttimeout: options.streamingTimeout,\n\t\t\t\t\t\t\ttitleSuffix: options.titleSuffix,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\trenderSpan?.setAttribute(\n\t\t\t\t\t\t\t'http.response.status_code',\n\t\t\t\t\t\t\tresult.status,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif (debug)\n\t\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t\t`[SSR] ${pathname} - render completed: ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t},\n\t\t\t\t);\n\n\t\t\t\t// Determine if we should compress this streaming response\n\t\t\t\t// - First request: No compression (fast TTFB)\n\t\t\t\t// - Subsequent requests: Compress and cache (better transfer size)\n\t\t\t\tconst shouldCompressStream =\n\t\t\t\t\tcompression && acceptEncoding && !isFirstStreamingRequest;\n\n\t\t\t\tif (debug)\n\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t`[SSR] ${pathname} - before compression check: ${(performance.now() - t0).toFixed(2)}ms, compression=${compression}, acceptEncoding=${!!acceptEncoding}, isFirstRequest=${isFirstStreamingRequest}, shouldCompress=${shouldCompressStream}`,\n\t\t\t\t\t);\n\n\t\t\t\t// When compression is enabled and not first request, buffer and compress the stream\n\t\t\t\tif (shouldCompressStream) {\n\t\t\t\t\t// Buffer all chunks with instrumentation\n\t\t\t\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Stream buffering with chunking\n\t\t\t\t\tconst fullHtml = await withSpan('ssr.buffer.stream', async (span) => {\n\t\t\t\t\t\tconst chunks: Uint8Array[] = [];\n\t\t\t\t\t\tconst reader = stream.getReader();\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\twhile (true) {\n\t\t\t\t\t\t\t\tconst { done, value } = await reader.read();\n\t\t\t\t\t\t\t\tif (done) break;\n\t\t\t\t\t\t\t\tchunks.push(new Uint8Array(value));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\treader.releaseLock();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Combine chunks into single buffer\n\t\t\t\t\t\tconst totalLength = chunks.reduce((sum, c) => sum + c.length, 0);\n\t\t\t\t\t\tconst buffer = new Uint8Array(totalLength);\n\t\t\t\t\t\tlet offset = 0;\n\t\t\t\t\t\tfor (const chunk of chunks) {\n\t\t\t\t\t\t\tbuffer.set(chunk, offset);\n\t\t\t\t\t\t\toffset += chunk.length;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\t'reroute.stream.chunks': chunks.length,\n\t\t\t\t\t\t\t'reroute.stream.bytes': totalLength,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn buffer;\n\t\t\t\t\t});\n\n\t\t\t\t\t// Compress the buffered HTML\n\t\t\t\t\tconst { body, extraHeaders } = await withSpan(\n\t\t\t\t\t\t'ssr.compress',\n\t\t\t\t\t\tasync (span) => {\n\t\t\t\t\t\t\tconst result = gzipIfAccepted(\n\t\t\t\t\t\t\t\tfullHtml,\n\t\t\t\t\t\t\t\t'text/html; charset=utf-8',\n\t\t\t\t\t\t\t\tacceptEncoding,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\t\t'reroute.size.original': fullHtml.length,\n\t\t\t\t\t\t\t\t'reroute.size.compressed': (result.body as Uint8Array).length,\n\t\t\t\t\t\t\t\t'reroute.encoding':\n\t\t\t\t\t\t\t\t\tresult.extraHeaders['Content-Encoding'] || 'none',\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\n\t\t\t\t\t// Cache if needed\n\t\t\t\t\tif (!isWatchMode && SSR_HTML_TTL_MS > 0 && status === 200) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst ck = makeKey(pathname, searchParams, acceptEncoding);\n\t\t\t\t\t\t\tconst cacheHeaders: Record<string, string> = {\n\t\t\t\t\t\t\t\t'Content-Type': 'text/html; charset=utf-8',\n\t\t\t\t\t\t\t\t...extraHeaders,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\taddCacheControl(cacheHeaders, cacheControlHeader);\n\t\t\t\t\t\t\tif (set.headers.link) {\n\t\t\t\t\t\t\t\tcacheHeaders.Link = set.headers.link as string;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\thtmlCache.set(ck, {\n\t\t\t\t\t\t\t\tstatus,\n\t\t\t\t\t\t\t\theaders: cacheHeaders,\n\t\t\t\t\t\t\t\tbody: body as BodyInit,\n\t\t\t\t\t\t\t\texp: Date.now() + SSR_HTML_TTL_MS,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} catch {}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst resHeaders: Record<string, string> = {\n\t\t\t\t\t\t'Content-Type': 'text/html; charset=utf-8',\n\t\t\t\t\t\t'Reroute-Cache': 'MISS',\n\t\t\t\t\t\t...extraHeaders,\n\t\t\t\t\t};\n\t\t\t\t\taddCacheControl(resHeaders, cacheControlHeader);\n\t\t\t\t\tif (set.headers.link) {\n\t\t\t\t\t\tresHeaders.Link = set.headers.link as string;\n\t\t\t\t\t}\n\n\t\t\t\t\tset.status = status;\n\n\t\t\t\t\tresponse = new Response(body as BodyInit, {\n\t\t\t\t\t\tstatus,\n\t\t\t\t\t\theaders: resHeaders,\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t// No compression - stream with caching if enabled\n\t\t\t\t\tconst shouldCache =\n\t\t\t\t\t\t!isWatchMode && SSR_HTML_TTL_MS > 0 && status === 200;\n\n\t\t\t\t\tif (debug)\n\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t`[SSR] ${pathname} - no compression path, shouldCache=${shouldCache}`,\n\t\t\t\t\t\t);\n\n\t\t\t\t\tif (shouldCache) {\n\t\t\t\t\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Response creation with transform stream caching\n\t\t\t\t\t\tresponse = await withSpan('ssr.create.response', async (span) => {\n\t\t\t\t\t\t\tif (debug)\n\t\t\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t\t\t`[SSR] ${pathname} - creating caching stream: ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t// Cache the stream as it passes through\n\t\t\t\t\t\t\tconst chunks: Uint8Array[] = [];\n\t\t\t\t\t\t\tconst cachingStream = stream.pipeThrough(\n\t\t\t\t\t\t\t\tnew TransformStream({\n\t\t\t\t\t\t\t\t\ttransform(chunk, controller) {\n\t\t\t\t\t\t\t\t\t\tchunks.push(new Uint8Array(chunk));\n\t\t\t\t\t\t\t\t\t\tcontroller.enqueue(chunk);\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Flush callback handles caching and error recovery for streaming\n\t\t\t\t\t\t\t\t\tflush() {\n\t\t\t\t\t\t\t\t\t\t// Cache the complete HTML after streaming finishes\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tconst totalLength = chunks.reduce(\n\t\t\t\t\t\t\t\t\t\t\t\t(sum, c) => sum + c.length,\n\t\t\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\tconst fullHtml = new Uint8Array(totalLength);\n\t\t\t\t\t\t\t\t\t\t\tlet offset = 0;\n\t\t\t\t\t\t\t\t\t\t\tfor (const chunk of chunks) {\n\t\t\t\t\t\t\t\t\t\t\t\tfullHtml.set(chunk, offset);\n\t\t\t\t\t\t\t\t\t\t\t\toffset += chunk.length;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t// Cache as uncompressed with 'identity' encoding\n\t\t\t\t\t\t\t\t\t\t\t// This allows subsequent requests to detect it's cached and use compression\n\t\t\t\t\t\t\t\t\t\t\tconst ck = makeKey(pathname, searchParams, 'identity');\n\t\t\t\t\t\t\t\t\t\t\tconst cacheHeaders: Record<string, string> = {\n\t\t\t\t\t\t\t\t\t\t\t\t'Content-Type': 'text/html; charset=utf-8',\n\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\t\taddCacheControl(cacheHeaders, cacheControlHeader);\n\t\t\t\t\t\t\t\t\t\t\tif (set.headers.link) {\n\t\t\t\t\t\t\t\t\t\t\t\tcacheHeaders.Link = set.headers.link as string;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\thtmlCache.set(ck, {\n\t\t\t\t\t\t\t\t\t\t\t\tstatus,\n\t\t\t\t\t\t\t\t\t\t\t\theaders: cacheHeaders,\n\t\t\t\t\t\t\t\t\t\t\t\tbody: fullHtml,\n\t\t\t\t\t\t\t\t\t\t\t\texp: Date.now() + SSR_HTML_TTL_MS,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\t\t\tconsole.error('[reroute] Failed to cache stream:', e);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tset.status = status;\n\n\t\t\t\t\t\t\tconst tBeforeResponse = debug ? performance.now() : 0;\n\t\t\t\t\t\t\tconst resHeaders: Record<string, string> = {\n\t\t\t\t\t\t\t\t'Content-Type': 'text/html; charset=utf-8',\n\t\t\t\t\t\t\t\t'Reroute-Cache': 'MISS',\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\taddCacheControl(resHeaders, cacheControlHeader);\n\t\t\t\t\t\t\tconst res = new Response(cachingStream, {\n\t\t\t\t\t\t\t\tstatus,\n\t\t\t\t\t\t\t\theaders: resHeaders,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tif (debug)\n\t\t\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t\t\t`[SSR] ${pathname} - Response created (cached stream): ${(performance.now() - t0).toFixed(2)}ms (creation: ${(performance.now() - tBeforeResponse).toFixed(2)}ms)`,\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tspan.setAttribute('reroute.cached', true);\n\t\t\t\t\t\t\treturn res;\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// No caching - return stream directly\n\t\t\t\t\t\tif (debug)\n\t\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t\t`[SSR] ${pathname} - creating direct stream response: ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\tset.status = status;\n\n\t\t\t\t\t\tconst streamHeaders: Record<string, string> = {\n\t\t\t\t\t\t\t'Content-Type': 'text/html; charset=utf-8',\n\t\t\t\t\t\t\t'Reroute-Cache': 'MISS',\n\t\t\t\t\t\t};\n\t\t\t\t\t\taddCacheControl(streamHeaders, cacheControlHeader);\n\n\t\t\t\t\t\tresponse = new Response(stream, {\n\t\t\t\t\t\t\tstatus,\n\t\t\t\t\t\t\theaders: streamHeaders,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (debug)\n\t\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t\t`[SSR] ${pathname} - Response created (direct stream): ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Non-streaming SSR path\n\t\t\t\tlet html: string;\n\t\t\t\tlet status: number;\n\n\t\t\t\ttry {\n\t\t\t\t\tconst result = await withSpan(\n\t\t\t\t\t\t'ssr.render.sync',\n\t\t\t\t\t\tasync (renderSpan) => {\n\t\t\t\t\t\t\trenderSpan?.setAttributes({\n\t\t\t\t\t\t\t\t'reroute.pathname': pathname,\n\t\t\t\t\t\t\t\t'reroute.cache.hit': false,\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tconst renderResult = await renderSSRDocument({\n\t\t\t\t\t\t\t\tpathname: fullPath,\n\t\t\t\t\t\t\t\trootComponent,\n\t\t\t\t\t\t\t\tclientDir,\n\t\t\t\t\t\t\t\tcwd,\n\t\t\t\t\t\t\t\tisWatchMode,\n\t\t\t\t\t\t\t\tbundleUrl,\n\t\t\t\t\t\t\t\thead,\n\t\t\t\t\t\t\t\tlang,\n\t\t\t\t\t\t\t\tappId,\n\t\t\t\t\t\t\t\tmaxAge: serverMaxAge,\n\t\t\t\t\t\t\t\tsearchParams,\n\t\t\t\t\t\t\t\togConfig: options.ogConfig,\n\t\t\t\t\t\t\t\togMetaConfig: options.ogMetaConfig,\n\t\t\t\t\t\t\t\tbaseUrl: options.baseUrl,\n\t\t\t\t\t\t\t\tautoCanonical: options.autoCanonical,\n\t\t\t\t\t\t\t\tparentSpan: renderSpan, // Pass the ssr.render.sync span as parent\n\t\t\t\t\t\t\t\theaders,\n\t\t\t\t\t\t\t\ttitleSuffix: options.titleSuffix,\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\trenderSpan?.setAttribute(\n\t\t\t\t\t\t\t\t'http.response.status_code',\n\t\t\t\t\t\t\t\trenderResult.status,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn renderResult;\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\n\t\t\t\t\thtml = result.html;\n\t\t\t\t\tstatus = result.status;\n\t\t\t\t} catch (ssrError) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t'[reroute] SSR rendering failed, returning error page:',\n\t\t\t\t\t\tssrError,\n\t\t\t\t\t);\n\t\t\t\t\tset.status = 500; // Ensure telemetry captures 500 status\n\t\t\t\t\tconst errorHtml = `<!DOCTYPE html>\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>Error</title>\n <style>\n body { font-family: system-ui, sans-serif; padding: 2rem; background: #111; color: #fff; }\n h1 { color: #f87171; }\n pre { background: #222; padding: 1rem; border-radius: 0.5rem; overflow: auto; }\n </style>\n</head>\n<body>\n <h1>Server Error</h1>\n <p>An error occurred while rendering this page.</p>\n ${isWatchMode ? `<pre>${ssrError instanceof Error ? ssrError.stack : String(ssrError)}</pre>` : ''}\n <script type=\"module\" src=\"${bundleUrl}\"></script>\n</body>\n</html>`;\n\t\t\t\t\treturn new Response(errorHtml, {\n\t\t\t\t\t\tstatus: 500,\n\t\t\t\t\t\theaders: { 'Content-Type': 'text/html; charset=utf-8' },\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Apply compression if enabled\n\t\t\t\tconst { body, extraHeaders } = compression\n\t\t\t\t\t? await withSpan('ssr.compress', async (span) => {\n\t\t\t\t\t\t\tconst result = gzipIfAccepted(\n\t\t\t\t\t\t\t\thtml,\n\t\t\t\t\t\t\t\t'text/html; charset=utf-8',\n\t\t\t\t\t\t\t\tacceptEncoding,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tspan.setAttributes({\n\t\t\t\t\t\t\t\t'reroute.size.original': html.length,\n\t\t\t\t\t\t\t\t'reroute.size.compressed':\n\t\t\t\t\t\t\t\t\ttypeof result.body === 'string'\n\t\t\t\t\t\t\t\t\t\t? result.body.length\n\t\t\t\t\t\t\t\t\t\t: (result.body as Uint8Array).length,\n\t\t\t\t\t\t\t\t'reroute.encoding':\n\t\t\t\t\t\t\t\t\tresult.extraHeaders['Content-Encoding'] || 'none',\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t})\n\t\t\t\t\t: { body: html, extraHeaders: {} };\n\n\t\t\t\tconst resHeaders: Record<string, string> = {\n\t\t\t\t\t'Content-Type': 'text/html; charset=utf-8',\n\t\t\t\t\t'Reroute-Cache': 'MISS',\n\t\t\t\t\t...extraHeaders,\n\t\t\t\t};\n\t\t\t\taddCacheControl(resHeaders, cacheControlHeader);\n\t\t\t\tif (set.headers.link) {\n\t\t\t\t\tresHeaders.Link = set.headers.link as string;\n\t\t\t\t}\n\n\t\t\t\tset.status = status;\n\n\t\t\t\tresponse = new Response(body as BodyInit, {\n\t\t\t\t\tstatus,\n\t\t\t\t\theaders: resHeaders,\n\t\t\t\t});\n\n\t\t\t\t// Cache the HTML if successful and cacheable\n\t\t\t\tif (\n\t\t\t\t\t!isWatchMode &&\n\t\t\t\t\tSSR_HTML_TTL_MS > 0 &&\n\t\t\t\t\tstatus >= 200 &&\n\t\t\t\t\tstatus < 300\n\t\t\t\t) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst ck = makeKey(pathname, searchParams, acceptEncoding);\n\t\t\t\t\t\thtmlCache.set(ck, {\n\t\t\t\t\t\t\tstatus,\n\t\t\t\t\t\t\theaders: resHeaders,\n\t\t\t\t\t\t\tbody: body as BodyInit,\n\t\t\t\t\t\t\texp: Date.now() + SSR_HTML_TTL_MS,\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch {}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst tBeforeReturn = debug ? performance.now() : 0;\n\t\t\tif (debug)\n\t\t\t\tconsole.log(\n\t\t\t\t\t`[SSR] ${pathname} - about to return response: ${(performance.now() - t0).toFixed(2)}ms`,\n\t\t\t\t);\n\t\t\tconst returnValue = response;\n\t\t\tif (debug)\n\t\t\t\tconsole.log(\n\t\t\t\t\t`[SSR] ${pathname} - response returned: ${(performance.now() - t0).toFixed(2)}ms (return overhead: ${(performance.now() - tBeforeReturn).toFixed(2)}ms)`,\n\t\t\t\t);\n\t\t\treturn returnValue;\n\t\t});\n\t};\n\n\t// Register all routes from manifest\n\tconst allRoutes = [...staticRoutes, ...contentRoutes, ...dynamicRoutes];\n\tfor (const path of allRoutes) {\n\t\tapp.get(path, handleSSR);\n\t}\n\n\t// Register a catch-all route to handle 404s with custom not found pages\n\t// This must come after all other routes\n\tapp.get('*', handleSSR);\n\n\treturn app;\n}\n\nexport { registerSSRRoutes };\n",
|
|
89
90
|
"import { trace } from '@opentelemetry/api';\nimport type { Elysia } from 'elysia';\nimport { NotFoundError } from 'elysia';\nimport {\n\tgetMimeType,\n\tgzipIfAccepted,\n\tjoin,\n\ttype TTLCache,\n} from 'reroute-js/core';\nimport { getEncoding } from '../libs/cache';\nimport { type CachedFileData, getAssetCacheControl } from '../libs/serving';\n\n// Helper to check if OpenTelemetry is available\nlet otelAvailable: boolean | undefined;\n\nfunction isOtelAvailable(): boolean {\n\tif (otelAvailable !== undefined) return otelAvailable;\n\n\ttry {\n\t\trequire('@opentelemetry/api');\n\t\totelAvailable = true;\n\t\treturn true;\n\t} catch {\n\t\totelAvailable = false;\n\t\treturn false;\n\t}\n}\n\ntype StaticRouteOptions = {\n\tstaticAssetsDir: string;\n\tmaxAge: number;\n\tdirective: string;\n\tstaticHeaders?: Record<string, string>;\n\tshouldIgnore: (file: string) => boolean;\n\tfileCache: TTLCache<string, CachedFileData>;\n\tisWatchMode?: boolean;\n\tcompression?: boolean;\n};\n\nexport function registerStaticRoutes(\n\tapp: Elysia,\n\toptions: StaticRouteOptions,\n): Elysia {\n\tconst {\n\t\tstaticAssetsDir,\n\t\tmaxAge,\n\t\tdirective,\n\t\tstaticHeaders = {},\n\t\tshouldIgnore,\n\t\tfileCache,\n\t\tisWatchMode = false,\n\t\tcompression = true,\n\t} = options;\n\n\tfunction setOtelAttributes(\n\t\tstatusCode: number,\n\t\tcachHit: boolean,\n\t\trequestPath: string,\n\t\tencoding?: string,\n\t\treason?: string,\n\t) {\n\t\tif (!isOtelAvailable()) return;\n\n\t\tconst currentSpan = trace.getActiveSpan();\n\t\tconst attrs: Record<string, string | number | boolean> = {\n\t\t\t'reroute.static.path': requestPath,\n\t\t};\n\n\t\tif (statusCode === 200) {\n\t\t\tattrs['reroute.cache.hit'] = cachHit;\n\t\t\tif (encoding) attrs['reroute.encoding'] = encoding;\n\t\t} else if (reason) {\n\t\t\tattrs['reroute.error.reason'] = reason;\n\t\t}\n\n\t\tcurrentSpan?.setAttributes(attrs);\n\t}\n\n\t// Static assets are served from /assets/* URL path\n\t// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Static file serving with caching, compression, and resolution\n\tapp.get('/assets/*', async function serveStaticFile({ params, headers }) {\n\t\tconst requestPath = params['*'];\n\t\t// Route /assets/* strips the prefix, so params['*'] is just the filename\n\t\t// Example: GET /assets/logo.svg -> params['*'] = 'logo.svg'\n\t\t// filePath = staticAssetsDir/logo.svg\n\t\tconst filePath = join(staticAssetsDir, requestPath);\n\n\t\ttry {\n\t\t\tconst acceptEncoding = headers['accept-encoding'] ?? '';\n\t\t\tconst encoding = getEncoding(acceptEncoding);\n\t\t\tconst cacheKey = `${filePath}:${encoding}`;\n\n\t\t\t// TTLCache handles expiration automatically\n\t\t\t// We cache raw data instead of Response objects to avoid issues with\n\t\t\t// Response.clone() failing on concurrent requests (slow connection bug)\n\t\t\tconst cached = fileCache.get(cacheKey);\n\t\t\tif (cached) {\n\t\t\t\tsetOtelAttributes(200, true, requestPath, encoding);\n\t\t\t\tconst cachedCacheControl = getAssetCacheControl(\n\t\t\t\t\tfilePath,\n\t\t\t\t\tcached.contentType,\n\t\t\t\t\tmaxAge,\n\t\t\t\t\tdirective,\n\t\t\t\t\tisWatchMode,\n\t\t\t\t);\n\t\t\t\tconst responseHeaders: Record<string, string> = {\n\t\t\t\t\t'Content-Type': cached.contentType,\n\t\t\t\t\t'Cache-Control': cachedCacheControl,\n\t\t\t\t\t'Reroute-Cache': 'HIT',\n\t\t\t\t\t...staticHeaders,\n\t\t\t\t};\n\t\t\t\tif (cached.contentEncoding) {\n\t\t\t\t\tresponseHeaders['Content-Encoding'] = cached.contentEncoding;\n\t\t\t\t}\n\t\t\t\t// Create fresh Response from cached data - safe for concurrent requests\n\t\t\t\treturn new Response(cached.buffer, { headers: responseHeaders });\n\t\t\t}\n\n\t\t\t// Check if file exists\n\t\t\tconst exists = await Bun.file(filePath).exists();\n\t\t\tif (!exists) {\n\t\t\t\tsetOtelAttributes(\n\t\t\t\t\t404,\n\t\t\t\t\tfalse,\n\t\t\t\t\trequestPath,\n\t\t\t\t\tundefined,\n\t\t\t\t\t'file_not_exists',\n\t\t\t\t);\n\t\t\t\tthrow new NotFoundError();\n\t\t\t}\n\n\t\t\tif (shouldIgnore(filePath)) {\n\t\t\t\tsetOtelAttributes(404, false, requestPath, undefined, 'file_ignored');\n\t\t\t\tthrow new NotFoundError();\n\t\t\t}\n\n\t\t\tconst contentBuf = await Bun.file(filePath).arrayBuffer();\n\t\t\tconst content = new Uint8Array(contentBuf);\n\t\t\tconst contentType = getMimeType(filePath);\n\n\t\t\tconst { body, extraHeaders } = compression\n\t\t\t\t? gzipIfAccepted(content, contentType, acceptEncoding)\n\t\t\t\t: { body: content, extraHeaders: {} };\n\n\t\t\tconst cacheControl = getAssetCacheControl(\n\t\t\t\tfilePath,\n\t\t\t\tcontentType,\n\t\t\t\tmaxAge,\n\t\t\t\tdirective,\n\t\t\t\tisWatchMode,\n\t\t\t);\n\n\t\t\t// Convert body to ArrayBuffer for caching\n\t\t\t// gzipIfAccepted returns string | Uint8Array, we need ArrayBuffer for consistent caching\n\t\t\tlet bodyBuffer: ArrayBuffer;\n\t\t\tif (typeof body === 'string') {\n\t\t\t\tbodyBuffer = new TextEncoder().encode(body).buffer as ArrayBuffer;\n\t\t\t} else if (body instanceof Uint8Array) {\n\t\t\t\t// Use slice to create a proper copy of the ArrayBuffer\n\t\t\t\t// Type assertion is safe - Uint8Array always uses ArrayBuffer, not SharedArrayBuffer\n\t\t\t\tbodyBuffer = body.buffer.slice(\n\t\t\t\t\tbody.byteOffset,\n\t\t\t\t\tbody.byteOffset + body.byteLength,\n\t\t\t\t) as ArrayBuffer;\n\t\t\t} else {\n\t\t\t\tbodyBuffer = body as ArrayBuffer;\n\t\t\t}\n\n\t\t\t// Cache raw data instead of Response object\n\t\t\tfileCache.set(cacheKey, {\n\t\t\t\tbuffer: bodyBuffer,\n\t\t\t\tcontentType,\n\t\t\t\tcontentEncoding: extraHeaders['Content-Encoding'],\n\t\t\t});\n\n\t\t\t// Track static file attributes\n\t\t\tif (isOtelAvailable()) {\n\t\t\t\tconst currentSpan = trace.getActiveSpan();\n\t\t\t\tcurrentSpan?.setAttributes({\n\t\t\t\t\t'reroute.static.path': requestPath,\n\t\t\t\t\t'reroute.content.type': contentType,\n\t\t\t\t\t'reroute.cache.hit': false,\n\t\t\t\t\t'reroute.compressed': !!extraHeaders['Content-Encoding'],\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn new Response(body as BodyInit, {\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': contentType,\n\t\t\t\t\t'Cache-Control': cacheControl,\n\t\t\t\t\t'Reroute-Cache': 'MISS',\n\t\t\t\t\t...extraHeaders,\n\t\t\t\t\t...staticHeaders,\n\t\t\t\t},\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tif (error instanceof NotFoundError) {\n\t\t\t\t// 404 attributes already set above\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tconsole.error(`[reroute] Error serving ${filePath}:`, error);\n\t\t\tif (isOtelAvailable()) {\n\t\t\t\tconst currentSpan = trace.getActiveSpan();\n\t\t\t\tcurrentSpan?.setAttribute('reroute.static.path', requestPath);\n\t\t\t}\n\t\t\tthrow new NotFoundError();\n\t\t}\n\t});\n\n\treturn app;\n}\n"
|
|
90
91
|
],
|
|
91
|
-
"mappings": "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",
|
|
92
|
-
"debugId": "
|
|
92
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,eAAsB,mBAAmB,CAAC,SAAkC;AAAA,EAC3E,MAAM,OAAO,IAAI,YAAY,EAAE,OAAO,OAAO;AAAA,EAC7C,MAAM,MAAM,MAAM,OAAO,OAAO,OAAO,WAAW,IAAI;AAAA,EACtD,IAAI,MAAM;AAAA,EACV,WAAW,KAAK,IAAI,WAAW,GAAG;AAAA,IAAG,OAAO,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AAAA,EAC1E,OAAO,IAAI,MAAM,GAAG,CAAC;AAAA;;;;;;ACLtB;AA2+BA,SAAS,YAAY,CAAC,QAAsC;AAAA,EAC3D,OAAO;AAAA;AAGR,eAAe,UAAU,CAAC,KAAqC;AAAA,EAE9D,MAAM,gBAAiB,WACrB;AAAA,EACF,IAAI,eAAe;AAAA,IAClB,OAAO;AAAA,EACR;AAAA,EAGA,MAAM,aAAa,GAAG;AAAA,EACtB,MAAM,aAAa,IAAI,KAAK,UAAU;AAAA,EAEtC,IAAI,CAAE,MAAM,WAAW,OAAO,GAAI;AAAA,IACjC,OAAO,CAAC;AAAA,EACT;AAAA,EAEA,IAAI;AAAA,IACH,MAAM,MAAM,MACX,UAAG,cAAc,UAAU,EAAE,UAAU,KAAK,IAAI;AAAA,IAEjD,OAAQ,IAAI,WAAW;AAAA,IACtB,OAAO,OAAO;AAAA,IACf,QAAQ,KAAK,+CAA+C,KAAK;AAAA,IACjE,OAAO,CAAC;AAAA;AAAA;AAAA;;;ACtgCH,SAAS,IAAI,IAAI,OAAyB;AAAA,EAChD,OAAO,MAAM,KAAK,GAAG,EAAE,QAAQ,QAAQ,GAAG;AAAA;AAGpC,SAAS,OAAO,CAAC,GAAmB;AAAA,EAC1C,MAAM,IAAI,EAAE,YAAY,GAAG;AAAA,EAC3B,OAAO,KAAK,IAAI,EAAE,MAAM,CAAC,IAAI;AAAA;AAGvB,SAAS,QAAQ,CAAC,GAAW,KAAsB;AAAA,EACzD,MAAM,OAAO,EAAE,QAAQ,OAAO,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI,KAAK;AAAA,EACvD,OAAO,OAAO,KAAK,SAAS,GAAG,IAAI,KAAK,MAAM,GAAG,CAAC,IAAI,MAAM,IAAI;AAAA;AAG1D,SAAS,UAAU,CAAC,GAAW,IAAoB;AAAA,EACzD,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,IAAI;AAAA;AAGzC,SAAS,QAAQ,CAAC,GAAW,IAAoB;AAAA,EACvD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,MAAM,IAAI;AAAA;;;ACnBlD;AAGA,eAAsB,gBAAgB,CACrC,KACA,SACoB;AAAA,EACpB,MAAM,MAAgB,CAAC;AAAA,EACvB,IAAI;AAAA,IACH,MAAM,UAAU,MAAM,QAAQ,KAAK,EAAE,eAAe,KAAK,CAAC;AAAA,IAC1D,WAAW,SAAS,SAAS;AAAA,MAC5B,MAAM,OAAO,KAAK,KAAK,MAAM,IAAI;AAAA,MACjC,MAAM,MAAM,KAAK,SAAS,MAAM,IAAI;AAAA,MACpC,IAAI,MAAM,YAAY,GAAG;AAAA,QACxB,MAAM,SAAS,MAAM,iBAAiB,MAAM,GAAG;AAAA,QAC/C,IAAI,KAAK,GAAG,MAAM;AAAA,MACnB,EAAO,SAAI,MAAM,OAAO,GAAG;AAAA,QAC1B,IAAI,cAAc,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,GAAG,GAAG;AAAA,UAClE,IAAI,KAAK,GAAG;AAAA,QACb;AAAA,MACD;AAAA,IACD;AAAA,IACC,MAAM;AAAA,EAGR,OAAO;AAAA;AAKR,eAAsB,mBAAmB,CACxC,WACoB;AAAA,EACpB,MAAM,cAAc,IAAI;AAAA,EAIxB,MAAM,wBAAwB,KAAK,WAAW,aAAa;AAAA,EAC3D,IAAI;AAAA,IACH,MAAM,iBAAiB,MAAM,QAAQ,uBAAuB;AAAA,MAC3D,eAAe;AAAA,IAChB,CAAC;AAAA,IACD,WAAW,SAAS,gBAAgB;AAAA,MACnC,IAAI,MAAM,OAAO,KAAK,MAAM,KAAK,SAAS,KAAK,GAAG;AAAA,QAEjD,MAAM,iBAAiB,MAAM,KAAK,QAAQ,SAAS,EAAE;AAAA,QACrD,YAAY,IAAI,cAAc;AAAA,MAC/B;AAAA,IACD;AAAA,IAEA,IAAI,YAAY,OAAO,GAAG;AAAA,MACzB,OAAO,MAAM,KAAK,WAAW;AAAA,IAC9B;AAAA,IACC,MAAM;AAAA,EAKR,MAAM,OAAO,KAAK,WAAW,QAAQ;AAAA,EACrC,IAAI;AAAA,IACH,MAAM,UAAU,MAAM,QAAQ,MAAM,EAAE,eAAe,KAAK,CAAC;AAAA,IAC3D,WAAW,SAAS,SAAS;AAAA,MAC5B,IAAI,MAAM,YAAY,GAAG;AAAA,QACxB,MAAM,aAAa,KAAK,MAAM,MAAM,MAAM,SAAS;AAAA,QACnD,IAAI;AAAA,UACH,MAAM,KAAK,UAAU;AAAA,UACrB,YAAY,IAAI,MAAM,IAAI;AAAA,UACzB,MAAM;AAAA,MAGT;AAAA,IACD;AAAA,IACC,MAAM;AAAA,EAGR,OAAO,MAAM,KAAK,WAAW;AAAA;AAAA;;;AC3E9B,iBAAS;AACT,0BAAS;AAIT,eAAsB,cAAc,CACnC,SACA,aACuB;AAAA,EACvB,IAAI;AAAA,IACH,MAAM,MAAM,eAAc,OAAO,EAAE;AAAA,IACnC,MAAM,MAAM,MAAa,UAAG,MAAM,cAAc,MAAM,KAAK,IAAI,MAAM;AAAA,IACrE,MAAM,OAAiB,IAAY,QAAQ,CAAC;AAAA,IAC5C,IAAI,QAAQ,OAAO,SAAS;AAAA,MAAU,OAAO;AAAA,IAC7C,OAAO,CAAC;AAAA,IACP,MAAM;AAAA,IACP,IAAI;AAAA,MACH,MAAM,IAAI,MAAM,MAAK,OAAO;AAAA,MAC5B,OAAO,EAAE,MAAM,IAAI,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE;AAAA,MAChD,MAAM;AAAA,MACP,OAAO,CAAC;AAAA;AAAA;AAAA;AAeJ,SAAS,iBAAiB,CAChC,MACA,UACA,aACS;AAAA,EACT,IAAI,CAAC,QAAQ,OAAO,SAAS;AAAA,IAAU,OAAO;AAAA,EAC9C,MAAM,QAAkB,CAAC;AAAA,EACzB,MAAM,WAAW,OAAO,KAAK,UAAU,WAAW,KAAK,QAAQ;AAAA,EAE/D,MAAM,QACL,YAAY,eAAe,CAAC,SAAS,SAAS,WAAW,IACtD,GAAG,WAAW,gBACd;AAAA,EACJ,MAAM,cACL,OAAO,KAAK,gBAAgB,WACzB,KAAK,cACL,OAAO,KAAK,YAAY,WACvB,KAAK,UACL;AAAA,EAGL,IAAI;AAAA,IAAO,MAAM,KAAK,UAAU,WAAW,KAAK,WAAW;AAAA,EAC3D,IAAI;AAAA,IACH,MAAM,KACL,qCAAqC,WAAW,WAAW,OAC5D;AAAA,EAID,MAAM,SACL,OAAO,KAAK,WAAW,WACpB,KAAK,SACL,UAAU,eAAe;AAAA,EAC7B,MAAM,KAAK,qCAAqC,WAAW,MAAM,OAAO;AAAA,EAExE,IAAI,OAAO;AAAA,IACV,MAAM,KAAK,sCAAsC,WAAW,KAAK,OAAO;AAAA,EACzE;AAAA,EAGA,MAAM,mBAAmB,eAAe,UAAU;AAAA,EAClD,IAAI,kBAAkB;AAAA,IACrB,MAAM,KACL,4CAA4C,WAAW,gBAAgB,OACxE;AAAA,EACD;AAAA,EAIA,MAAM,cAAc,UAAU,eAAe;AAAA,EAC7C,MAAM,KAAK,sCAAsC,iBAAiB;AAAA,EAElE,IAAI,OAAO;AAAA,IACV,MAAM,KAAK,uCAAuC,WAAW,KAAK,OAAO;AAAA,EAC1E;AAAA,EAEA,IAAI,kBAAkB;AAAA,IACrB,MAAM,KACL,6CAA6C,WAAW,gBAAgB,OACzE;AAAA,EACD;AAAA,EAEA,OAAO,MAAM,SAAS;AAAA,EAAK,MAAM,KAAK;AAAA,CAAI,MAAM;AAAA;AAGjD,SAAS,UAAU,CAAC,OAAuB;AAAA,EAC1C,OAAO,MACL,QAAQ,MAAM,OAAO,EACrB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,QAAQ,EACtB,QAAQ,MAAM,OAAO;AAAA;AAAA;;;;EC1GxB;AAAA,EACA;AAAA;;;ACDA;AAAA,IAMM;AAAA;AAAA,mBAAiB,IAAI;AAAA;;;;;;ECL3B;AAAA;;;ACSA;AAKA,SAAS,eAAe,GAAY;AAAA,EACnC,IAAI,kBAAkB;AAAA,IAAW,OAAO;AAAA,EAExC,IAAI;AAAA;AAAA,IAGH,gBAAgB;AAAA,IAChB,OAAO;AAAA,IACN,MAAM;AAAA,IACP,gBAAgB;AAAA,IAChB,OAAO;AAAA;AAAA;AAAA;AAQT,MAAM,SAAyB;AAAA,EAC9B,WAAW,GAAG;AAAA,IACb,OAAO;AAAA,MACN,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,YAAY;AAAA,IACb;AAAA;AAAA,EAED,YAAY,GAAG;AAAA,IACd,OAAO;AAAA;AAAA,EAER,aAAa,GAAG;AAAA,IACf,OAAO;AAAA;AAAA,EAER,QAAQ,GAAG;AAAA,IACV,OAAO;AAAA;AAAA,EAER,OAAO,GAAG;AAAA,IACT,OAAO;AAAA;AAAA,EAER,QAAQ,GAAG;AAAA,IACV,OAAO;AAAA;AAAA,EAER,SAAS,GAAG;AAAA,IACX,OAAO;AAAA;AAAA,EAER,UAAU,GAAG;AAAA,IACZ,OAAO;AAAA;AAAA,EAER,GAAG,GAAG;AAAA,EACN,WAAW,GAAG;AAAA,IACb,OAAO;AAAA;AAAA,EAER,eAAe,GAAG;AACnB;AAgBA,eAAsB,QAAW,CAChC,MACA,IACA,YACa;AAAA,EACb,IAAI,CAAC,gBAAgB,GAAG;AAAA,IACvB,OAAO,GAAG,QAAQ;AAAA,EACnB;AAAA,EAEA,MAAM,SAAS,MAAM,UAAU,SAAS;AAAA,EACxC,OAAO,OAAO,gBAAgB,MAAM,EAAE,WAAW,GAAG,OAAO,SAAS;AAAA,IACnE,IAAI;AAAA,MACH,MAAM,SAAS,MAAM,GAAG,IAAI;AAAA,MAC5B,KAAK,IAAI;AAAA,MACT,OAAO;AAAA,MACN,OAAO,OAAO;AAAA,MACf,KAAK,gBAAgB,KAAc;AAAA,MACnC,KAAK,UAAU;AAAA,QACd,MAAM,eAAe;AAAA,QACrB,SAAS,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,MAC/D,CAAC;AAAA,MACD,KAAK,IAAI;AAAA,MACT,MAAM;AAAA;AAAA,GAEP;AAAA;AAMK,SAAS,YAAe,CAC9B,MACA,IACA,YACI;AAAA,EACJ,IAAI,CAAC,gBAAgB,GAAG;AAAA,IACvB,OAAO,GAAG,QAAQ;AAAA,EACnB;AAAA,EAEA,MAAM,SAAS,MAAM,UAAU,SAAS;AAAA,EACxC,OAAO,OAAO,gBAAgB,MAAM,EAAE,WAAW,GAAG,CAAC,SAAS;AAAA,IAC7D,IAAI;AAAA,MACH,MAAM,SAAS,GAAG,IAAI;AAAA,MACtB,KAAK,IAAI;AAAA,MACT,OAAO;AAAA,MACN,OAAO,OAAO;AAAA,MACf,KAAK,gBAAgB,KAAc;AAAA,MACnC,KAAK,UAAU;AAAA,QACd,MAAM,eAAe;AAAA,QACrB,SAAS,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,MAC/D,CAAC;AAAA,MACD,KAAK,IAAI;AAAA,MACT,MAAM;AAAA;AAAA,GAEP;AAAA;AA6CF,eAAsB,cAAiB,CACtC,YACA,IACa;AAAA,EACb,IAAI,EAAE,gBAAgB,KAAK,aAAa;AAAA,IACvC,OAAO,GAAG;AAAA,EACX;AAAA,EAGA,MAAM,MAAM,MAAM,QAAQ,QAAQ,OAAO,GAAG,UAAU;AAAA,EACtD,OAAO,QAAQ,KAAK,KAAK,EAAE;AAAA;AAsErB,SAAS,2BAA2B,CAC1C,MAC4D;AAAA,EAC5D,IAAI,EAAE,gBAAgB,KAAK;AAAA,IAAO;AAAA,EAElC,IAAI;AAAA,IACH,QAAQ;AAAA,IACR,MAAM,UAA8C,CAAC;AAAA,IAGrD,MAAM,MAAM,MAAM,QAAQ,QAAQ,OAAO,GAAG,IAAI;AAAA,IAChD,YAAY,OAAO,KAAK,OAAO;AAAA,IAE/B,OAAO;AAAA,MACN,aAAa,QAAQ;AAAA,MACrB,YAAY,QAAQ;AAAA,IACrB;AAAA,IACC,OAAO,OAAO;AAAA,IACf,QAAQ,MACP,0DACA,KACD;AAAA,IACA;AAAA;AAAA;AAAA,IA/QE,eAyDE;AAAA;AAAA,aAAW,IAAI;AAAA;;;ACpErB;AAAA,IAqBM;AAAA;AAAA,mBAAiB,IAAI;AAAA;;;ACtB3B;AAAA,aAEC;AAAA;AAAA,oBAIA;AAAA,WACA;AAAA;AAGD;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA;;;;ECtCA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;;;;ECJA;AAAA;;;ACMA,MAAM,aAAa;AAAA,EACV,QAA0C,IAAI;AAAA,SACvC,kBAAyC;AAAA,EAExD,WAAW,GAAG;AAAA,IAEb,IAAI,CAAC,aAAa,iBAAiB;AAAA,MAClC,aAAa,kBAAkB,YAAY,MAAM;AAAA,QAChD,KAAK,QAAQ;AAAA,SACX,KAAM;AAAA,IACV;AAAA;AAAA,EAMD,GAAM,CAAC,KAA4B;AAAA,IAClC,MAAM,QAAQ,KAAK,MAAM,IAAI,GAAG;AAAA,IAChC,IAAI,CAAC;AAAA,MAAO;AAAA,IAEZ,MAAM,MAAM,KAAK,IAAI,IAAI,MAAM;AAAA,IAC/B,IAAI,MAAM,MAAM,QAAQ;AAAA,MACvB,KAAK,MAAM,OAAO,GAAG;AAAA,MACrB;AAAA,IACD;AAAA,IAEA,OAAO,MAAM;AAAA;AAAA,EAMd,GAAM,CAAC,KAAa,MAAS,QAAsB;AAAA,IAClD,IAAI,UAAU;AAAA,MAAG;AAAA,IAEjB,KAAK,MAAM,IAAI,KAAK;AAAA,MACnB;AAAA,MACA,WAAW,KAAK,IAAI;AAAA,MACpB;AAAA,IACD,CAAC;AAAA;AAAA,EAMF,GAAG,CAAC,KAAsB;AAAA,IACzB,OAAO,KAAK,IAAI,GAAG,MAAM;AAAA;AAAA,EAM1B,KAAK,GAAS;AAAA,IACb,KAAK,MAAM,MAAM;AAAA;AAAA,EAMV,OAAO,GAAS;AAAA,IACvB,MAAM,MAAM,KAAK,IAAI;AAAA,IACrB,YAAY,KAAK,UAAU,KAAK,MAAM,QAAQ,GAAG;AAAA,MAChD,IAAI,MAAM,MAAM,YAAY,MAAM,QAAQ;AAAA,QACzC,KAAK,MAAM,OAAO,GAAG;AAAA,MACtB;AAAA,IACD;AAAA;AAAA,EAMD,KAAK,GAAqC;AAAA,IACzC,OAAO;AAAA,MACN,MAAM,KAAK,MAAM;AAAA,MACjB,MAAM,MAAM,KAAK,KAAK,MAAM,KAAK,CAAC;AAAA,IACnC;AAAA;AAAA,EAMD,OAAO,GAAS;AAAA,IACf,IAAI,aAAa,iBAAiB;AAAA,MACjC,cAAc,aAAa,eAAe;AAAA,MAC1C,aAAa,kBAAkB;AAAA,IAChC;AAAA,IACA,KAAK,MAAM;AAAA;AAEb;AAAA;AAOO,MAAM,SAAe;AAAA,EACnB,QAAmB,IAAI;AAAA,EACvB;AAAA,EACA,kBAAyC;AAAA,EAEjD,WAAW,CAAC,UAAU,KAAK;AAAA,IAC1B,KAAK,UAAU;AAAA,IAGf,KAAK,kBAAkB,YAAY,MAAM;AAAA,MACxC,KAAK,QAAQ;AAAA,OACX,KAAM;AAAA,IAGT,IAAI,KAAK,gBAAgB,OAAO;AAAA,MAC/B,KAAK,gBAAgB,MAAM;AAAA,IAC5B;AAAA;AAAA,EAGD,GAAG,CAAC,KAAuB;AAAA,IAC1B,MAAM,QAAQ,KAAK,MAAM,IAAI,GAAG;AAAA,IAChC,IAAI,UAAU,WAAW;AAAA,MAExB,MAAM,QAAQ;AAAA,MACd,IAAI,MAAM,QAAQ,aAAa,MAAM,OAAO,KAAK,IAAI,GAAG;AAAA,QACvD,KAAK,MAAM,OAAO,GAAG;AAAA,QACrB;AAAA,MACD;AAAA,MAGA,KAAK,MAAM,OAAO,GAAG;AAAA,MACrB,KAAK,MAAM,IAAI,KAAK,KAAK;AAAA,IAC1B;AAAA,IACA,OAAO;AAAA;AAAA,EAMA,OAAO,GAAS;AAAA,IACvB,MAAM,MAAM,KAAK,IAAI;AAAA,IACrB,YAAY,KAAK,UAAU,KAAK,MAAM,QAAQ,GAAG;AAAA,MAChD,MAAM,QAAQ;AAAA,MACd,IAAI,MAAM,QAAQ,aAAa,MAAM,OAAO,KAAK;AAAA,QAChD,KAAK,MAAM,OAAO,GAAG;AAAA,MACtB;AAAA,IACD;AAAA;AAAA,EAGD,GAAG,CAAC,KAAQ,OAAgB;AAAA,IAC3B,KAAK,MAAM,OAAO,GAAG;AAAA,IAErB,IAAI,KAAK,MAAM,QAAQ,KAAK,SAAS;AAAA,MACpC,MAAM,WAAW,KAAK,MAAM,KAAK,EAAE,KAAK,EAAE;AAAA,MAC1C,KAAK,MAAM,OAAO,QAAa;AAAA,IAChC;AAAA,IAEA,KAAK,MAAM,IAAI,KAAK,KAAK;AAAA;AAAA,EAG1B,GAAG,CAAC,KAAiB;AAAA,IACpB,OAAO,KAAK,MAAM,IAAI,GAAG;AAAA;AAAA,EAG1B,KAAK,GAAS;AAAA,IACb,KAAK,MAAM,MAAM;AAAA;AAAA,EAMlB,OAAO,GAAS;AAAA,IACf,IAAI,KAAK,iBAAiB;AAAA,MACzB,cAAc,KAAK,eAAe;AAAA,MAClC,KAAK,kBAAkB;AAAA,IACxB;AAAA,IACA,KAAK,MAAM;AAAA;AAEb;AAAA;AAMO,MAAM,SAAe;AAAA,EACnB,QAA0D,IAAI;AAAA,EAC9D;AAAA,EACA;AAAA,EACA,kBAAyC;AAAA,EACzC,iBAAgC;AAAA,EAChC,qBAAqB;AAAA,EAQ7B,WAAW,CACV,UAAU,KACV,eAAe,QACf,oBAAoB,OACpB,aACC;AAAA,IACD,KAAK,UAAU;AAAA,IACf,KAAK,eAAe;AAAA,IACpB,KAAK,iBAAiB,cAAc,cAAc,OAAO,OAAO;AAAA,IAGhE,KAAK,kBAAkB,YAAY,MAAM;AAAA,MACxC,KAAK,QAAQ;AAAA,OACX,iBAAiB;AAAA,IAGpB,IAAI,KAAK,gBAAgB,OAAO;AAAA,MAC/B,KAAK,gBAAgB,MAAM;AAAA,IAC5B;AAAA;AAAA,EAMD,GAAG,CAAC,KAAuB;AAAA,IAC1B,MAAM,QAAQ,KAAK,MAAM,IAAI,GAAG;AAAA,IAChC,IAAI,CAAC;AAAA,MAAO;AAAA,IAEZ,IAAI,MAAM,OAAO,KAAK,IAAI,GAAG;AAAA,MAC5B,KAAK,MAAM,OAAO,GAAG;AAAA,MACrB;AAAA,IACD;AAAA,IAEA,OAAO,MAAM;AAAA;AAAA,EAMN,YAAY,CAAC,OAAkB;AAAA,IACtC,IAAI,iBAAiB,UAAU,iBAAiB,aAAa;AAAA,MAC5D,OAAO,MAAM;AAAA,IACd;AAAA,IACA,IAAI,OAAO,UAAU,UAAU;AAAA,MAC9B,OAAO,MAAM,SAAS;AAAA,IACvB;AAAA,IAEA,IAAI;AAAA,MACH,OAAO,KAAK,UAAU,KAAK,EAAE,SAAS;AAAA,MACrC,MAAM;AAAA,MACP,OAAO;AAAA;AAAA;AAAA,EAUT,GAAG,CAAC,KAAQ,OAAU,OAAsB;AAAA,IAE3C,MAAM,YAAY,KAAK,aAAa,KAAK;AAAA,IAGzC,MAAM,WAAW,KAAK,MAAM,IAAI,GAAG;AAAA,IACnC,IAAI,UAAU;AAAA,MACb,KAAK,MAAM,OAAO,GAAG;AAAA,MACrB,IAAI,SAAS,MAAM;AAAA,QAClB,KAAK,sBAAsB,SAAS;AAAA,MACrC;AAAA,IACD;AAAA,IAGA,IACC,KAAK,kBACL,KAAK,qBAAqB,YAAY,KAAK,gBAC1C;AAAA,MACD,KAAK,eAAe,SAAS;AAAA,IAC9B;AAAA,IAGA,IAAI,KAAK,MAAM,QAAQ,KAAK,SAAS;AAAA,MACpC,MAAM,WAAW,KAAK,MAAM,KAAK,EAAE,KAAK,EAAE;AAAA,MAC1C,IAAI,aAAa,WAAW;AAAA,QAC3B,MAAM,UAAU,KAAK,MAAM,IAAI,QAAQ;AAAA,QACvC,KAAK,MAAM,OAAO,QAAQ;AAAA,QAC1B,IAAI,SAAS,MAAM;AAAA,UAClB,KAAK,sBAAsB,QAAQ;AAAA,QACpC;AAAA,MACD;AAAA,IACD;AAAA,IAEA,KAAK,MAAM,IAAI,KAAK;AAAA,MACnB;AAAA,MACA,KAAK,KAAK,IAAI,KAAK,SAAS,KAAK;AAAA,MACjC,MAAM;AAAA,IACP,CAAC;AAAA,IACD,KAAK,sBAAsB;AAAA;AAAA,EAM5B,GAAG,CAAC,KAAiB;AAAA,IACpB,OAAO,KAAK,IAAI,GAAG,MAAM;AAAA;AAAA,EAMlB,cAAc,CAAC,aAA2B;AAAA,IACjD,IAAI,CAAC,KAAK;AAAA,MAAgB;AAAA,IAC1B,MAAM,cAAc,KAAK,iBAAiB;AAAA,IAC1C,MAAM,OAAO,MAAM,KAAK,KAAK,MAAM,KAAK,CAAC;AAAA,IAEzC,WAAW,OAAO,MAAM;AAAA,MACvB,IAAI,KAAK,qBAAqB,eAAe,aAAa;AAAA,QACzD;AAAA,MACD;AAAA,MACA,MAAM,QAAQ,KAAK,MAAM,IAAI,GAAG;AAAA,MAChC,IAAI,OAAO;AAAA,QACV,KAAK,MAAM,OAAO,GAAG;AAAA,QACrB,IAAI,MAAM,MAAM;AAAA,UACf,KAAK,sBAAsB,MAAM;AAAA,QAClC;AAAA,MACD;AAAA,IACD;AAAA;AAAA,EAMD,MAAM,CAAC,KAAiB;AAAA,IACvB,MAAM,QAAQ,KAAK,MAAM,IAAI,GAAG;AAAA,IAChC,MAAM,UAAU,KAAK,MAAM,OAAO,GAAG;AAAA,IACrC,IAAI,WAAW,OAAO,MAAM;AAAA,MAC3B,KAAK,sBAAsB,MAAM;AAAA,IAClC;AAAA,IACA,OAAO;AAAA;AAAA,EAMR,KAAK,GAAS;AAAA,IACb,KAAK,MAAM,MAAM;AAAA,IACjB,KAAK,qBAAqB;AAAA;AAAA,MAMvB,IAAI,GAAW;AAAA,IAClB,OAAO,KAAK,MAAM;AAAA;AAAA,EAMnB,KAAK,GAKH;AAAA,IACD,MAAM,WAAW,KAAK,sBAAsB,OAAO;AAAA,IACnD,MAAM,cAAc,KAAK,iBACtB,KAAK,kBAAkB,OAAO,QAC9B;AAAA,IACH,MAAM,qBAAqB,cACvB,WAAW,cAAe,MAC3B;AAAA,IAEH,OAAO;AAAA,MACN,SAAS,KAAK,MAAM;AAAA,MACpB,UAAU,KAAK,MAAM,WAAW,GAAG,IAAI;AAAA,MACvC,aAAa,cAAc,KAAK,MAAM,WAAW,IAAI;AAAA,MACrD,oBACC,uBAAuB,OAAO,KAAK,MAAM,kBAAkB,IAAI;AAAA,IACjE;AAAA;AAAA,EAMO,OAAO,GAAS;AAAA,IACvB,MAAM,MAAM,KAAK,IAAI;AAAA,IACrB,YAAY,KAAK,UAAU,KAAK,MAAM,QAAQ,GAAG;AAAA,MAChD,IAAI,MAAM,OAAO,KAAK;AAAA,QACrB,KAAK,MAAM,OAAO,GAAG;AAAA,QACrB,IAAI,MAAM,MAAM;AAAA,UACf,KAAK,sBAAsB,MAAM;AAAA,QAClC;AAAA,MACD;AAAA,IACD;AAAA;AAAA,EAMD,OAAO,GAAS;AAAA,IACf,IAAI,KAAK,iBAAiB;AAAA,MACzB,cAAc,KAAK,eAAe;AAAA,MAClC,KAAK,kBAAkB;AAAA,IACxB;AAAA,IACA,KAAK,MAAM;AAAA;AAEb;AAAA,IAGM,iBAAiB,MAAoB;AAAA,EAC1C,MAAM,IAAI;AAAA,EAIV,IAAI,CAAC,EAAE,uBAAuB;AAAA,IAC7B,EAAE,wBAAwB,IAAI;AAAA,EAC/B;AAAA,EAEA,OAAO,EAAE;AAAA,GAGJ,uBAAuB,MAAoB;AAAA,EAChD,MAAM,IAAI;AAAA,EAIV,IAAI,CAAC,EAAE,0BAA0B;AAAA,IAChC,EAAE,2BAA2B,IAAI;AAAA,EAClC;AAAA,EAEA,OAAO,EAAE;AAAA,GAGJ,UACA;AAAA;AAAA,EADA,WAAW,eAAe;AAAA,EAC1B,cAAc,qBAAqB;AAAA;;;ACjbzC,SAAS,kBAAkB,CAC1B,OACA,UACO;AAAA,EACP,IAAI,YAAY,OAAO;AAAA,IACtB,OAAO,MAAM;AAAA,EACd;AAAA,EAEA,MAAM,uBAAuB,SAAS,MAAM,GAAG,EAAE;AAAA,EACjD,IACC,wBACA,yBAAyB,YACzB,wBAAwB,OACvB;AAAA,IACD,OAAO,MAAM;AAAA,EACd;AAAA;AAOM,SAAS,wBAAwB,CAAC,UAAwB;AAAA,EAChE,IAAI,CAAC;AAAA,IAAU;AAAA,EAEf,IAAI;AAAA,IACH,MAAM,IAAI;AAAA,IACV,MAAM,YAAY,EAAE;AAAA,IACpB,IAAI,CAAC,aAAa,OAAO,cAAc,UAAU;AAAA,MAChD;AAAA,IACD;AAAA,IAEA,mBAAmB,WAAsC,QAAQ;AAAA,IAEjE,IAAI,OAAO,KAAK,SAAoC,EAAE,WAAW,GAAG;AAAA,MACnE,OAAO,EAAE;AAAA,IACV;AAAA,IACC,MAAM;AAAA;;;ACvCT,0BAAS;AAOT,eAAsB,aAAsB,CAC3C,cACA,aACa;AAAA,EACb,MAAM,OAAO,eAAc,YAAY,EAAE;AAAA,EACzC,MAAM,MAAM,cAAc,GAAG,UAAU,KAAK,IAAI,MAAM;AAAA,EACtD,OAAQ,MAAa;AAAA;AAMf,SAAS,UAAU,CAAC,OAA2C;AAAA,EACrE,OACC,OAAO,UAAU,YACjB,UAAU,QACV,OAAQ,MAA6B,SAAS;AAAA;AAOzC,SAAS,SAAY,CAAC,OAAmC;AAAA,EAC/D,OAAO,iBAAiB,UAAU,QAAQ,QAAQ,QAAQ,KAAK;AAAA;AAAA;;;ACxBhE,eAAsB,eAAe,CACpC,KACA,aACqC;AAAA,EACrC,IAAI;AAAA,IACH,MAAM,IAAI,KAAK,KAAK,YAAY,YAAY;AAAA,IAC5C,MAAM,MAAM,MAAM,cAAc,GAAG,WAAW;AAAA,IAC9C,OAAQ,KAAK,gBAAgB,CAAC;AAAA,IAC7B,MAAM;AAAA,IACP,OAAO,CAAC;AAAA;AAAA;AAOH,SAAS,oBAAoB,CACnC,oBACO;AAAA,EACP,IAAI;AAAA,IACF,WAAmB,0BAA0B;AAAA,IAC7C,MAAM;AAAA;AAAA;AAAA,EA5BT;AAAA;;;ACAO,SAAS,WAAW,CAAC,UAA0B;AAAA,EACrD,MAAM,MAAM,SAAS,MAAM,GAAG,EAAE,IAAI,GAAG,YAAY;AAAA,EACnD,MAAM,YAAoC;AAAA,IACzC,MAAM;AAAA,IACN,KAAK;AAAA,IACL,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,KAAK;AAAA,EACN;AAAA,EACA,OAAO,UAAU,OAAO,OAAO;AAAA;AAGzB,SAAS,cAAc,CAAC,aAA8B;AAAA,EAC5D,IAAI,CAAC;AAAA,IAAa,OAAO;AAAA,EACzB,MAAM,KAAK,YAAY,MAAM,GAAG,EAAE,GAAG,KAAK;AAAA,EAC1C,OACC,GAAG,WAAW,OAAO,KACrB,OAAO,4BACP,OAAO,sBACP,OAAO,qBACP,OAAO,mBAGP,OAAO,cACP,OAAO;AAAA;;;ACjCT;AAIO,SAAS,WAAW,CAAC,gBAAkC;AAAA,EAC7D,OAAO,QAAQ,kBAAkB,QAAQ,KAAK,cAAc,CAAC;AAAA;AAGvD,SAAS,aAAa,CAAC,gBAAkC;AAAA,EAC/D,OAAO,QAAQ,kBAAkB,UAAU,KAAK,cAAc,CAAC;AAAA;AAGzD,SAAS,OAAO,CACtB,OACmC;AAAA,EACnC,OAAO,OAAO,UAAU,WACrB,IAAI,YAAY,EAAE,OAAO,KAAK,IAC7B;AAAA;AAGE,SAAS,cAAc,CAC7B,MACA,aACA,gBACoB;AAAA,EACpB,MAAM,eAAuC,CAAC;AAAA,EAE9C,IAAI,eAAe,WAAW,GAAG;AAAA,IAEhC,IAAI,cAAc,cAAc,GAAG;AAAA,MAClC,IAAI;AAAA,QACH,MAAM,aAAa,mBAAmB,QAAQ,IAAI,CAAe;AAAA,QACjE,aAAa,sBAAsB;AAAA,QACnC,aAAa,OAAO;AAAA,QACpB,OAAO,EAAE,MAAM,YAAY,aAAa;AAAA,QACvC,MAAM;AAAA,IAGT;AAAA,IAGA,IAAI,YAAY,cAAc,GAAG;AAAA,MAChC,IAAI;AAAA,QACH,MAAM,aAAa,IAAI,SAAS,QAAQ,IAAI,CAAC;AAAA,QAC7C,aAAa,sBAAsB;AAAA,QACnC,aAAa,OAAO;AAAA,QACpB,OAAO,EAAE,MAAM,YAAY,aAAa;AAAA,QACvC,MAAM;AAAA,IAGT;AAAA,EACD;AAAA,EAEA,OAAO,EAAE,MAAM,aAAa;AAAA;AAMtB,SAAS,wBAAwB,CACvC,QACA,aACA,iBAC0B;AAAA,EAC1B,MAAM,eAAuC,CAAC;AAAA,EAE9C,IAAI,CAAC,eAAe,WAAW,GAAG;AAAA,IACjC,OAAO,EAAE,QAAQ,aAAa;AAAA,EAC/B;AAAA,EAGA,OAAO,EAAE,QAAQ,aAAa;AAAA;AAAA;;;ACnE/B,SAAS,eAAe,CAAC,SAA2B;AAAA,EACnD,OAAO,QAAQ,MAAM,GAAG,EAAE,OAAO,OAAO;AAAA;AAGzC,SAAS,oBAAoB,CAAC,aAA8B;AAAA,EAC3D,OAAO,YAAY,WAAW,GAAG;AAAA;AAGlC,SAAS,qBAAqB,CAAC,aAA8B;AAAA,EAC5D,OAAO,YAAY,WAAW,MAAM;AAAA;AAGrC,SAAS,mBAAmB,CAAC,WAA4B;AAAA,EACxD,OAAO,UAAU,WAAW,KAAK;AAAA;AAGlC,SAAS,yBAAyB,CAAC,aAA6B;AAAA,EAC/D,IAAI,sBAAsB,WAAW,GAAG;AAAA,IACvC,OAAO;AAAA,EACR;AAAA,EAEA,IAAI,qBAAqB,WAAW,GAAG;AAAA,IACtC,OAAO;AAAA,EACR;AAAA,EAEA,OAAO;AAAA;AAGD,SAAS,uBAAuB,CACtC,GACA,GACS;AAAA,EACT,MAAM,gBAAgB,gBAAgB,EAAE,OAAO;AAAA,EAC/C,MAAM,gBAAgB,gBAAgB,EAAE,OAAO;AAAA,EAC/C,MAAM,SAAS,cAAc;AAAA,EAC7B,MAAM,SAAS,cAAc;AAAA,EAE7B,IAAI,WAAW,QAAQ;AAAA,IACtB,OAAO,SAAS;AAAA,EACjB;AAAA,EAEA,SAAS,IAAI,EAAG,IAAI,cAAc,QAAQ,KAAK;AAAA,IAC9C,MAAM,eAAe,0BAA0B,cAAc,EAAE;AAAA,IAC/D,MAAM,eAAe,0BAA0B,cAAc,EAAE;AAAA,IAE/D,IAAI,iBAAiB,cAAc;AAAA,MAClC,OAAO,eAAe;AAAA,IACvB;AAAA,IAEA,IAAI,iBAAiB,KAAK,cAAc,OAAO,cAAc,IAAI;AAAA,MAChE,OAAO,cAAc,GAAG,cAAc,cAAc,EAAE;AAAA,IACvD;AAAA,EACD;AAAA,EAEA,OAAO,EAAE,QAAQ,cAAc,EAAE,OAAO;AAAA;AAGzC,SAAS,kBAAkB,CAC1B,WACA,cACA,eACA,eACA,eACA,QACU;AAAA,EACV,IACC,iBAAiB,gBAAgB,KACjC,iBAAiB,cAAc,QAC9B;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EAEA,OAAO,UAAU,MAAM,CAAC,KAAK,cAAc,MAAM,aAAa,EAAE,KAAK,GAAG;AAAA,EACxE,OAAO;AAAA;AAGR,SAAS,iBAAiB,CACzB,WACA,eACA,eACA,QACgB;AAAA,EAChB,MAAM,eAAe,cAAc;AAAA,EACnC,IAAI,iBAAiB,WAAW;AAAA,IAC/B,OAAO;AAAA,EACR;AAAA,EAEA,OAAO,aAAa;AAAA,EACpB,OAAO,gBAAgB;AAAA;AAGxB,SAAS,gBAAgB,CACxB,aACA,cACA,eACA,eACA,eACA,QAC8B;AAAA,EAC9B,IAAI,qBAAqB,WAAW,GAAG;AAAA,IACtC,MAAM,YAAY,YAAY,MAAM,CAAC;AAAA,IAErC,IAAI,oBAAoB,SAAS,GAAG;AAAA,MACnC,OAAO,mBACN,WACA,cACA,eACA,eACA,eACA,MACD,IACG,cACA;AAAA,IACJ;AAAA,IAEA,OAAO,kBAAkB,WAAW,eAAe,eAAe,MAAM;AAAA,EACzE;AAAA,EAEA,IAAI,gBAAgB,cAAc,gBAAgB;AAAA,IACjD,OAAO;AAAA,EACR;AAAA,EAEA,OAAO,gBAAgB;AAAA;AAGjB,SAAS,iBAAiB,CAChC,SACA,UACgC;AAAA,EAChC,MAAM,eAAe,gBAAgB,OAAO;AAAA,EAC5C,MAAM,gBAAgB,SAAS,MAAM,GAAG,EAAE,OAAO,OAAO;AAAA,EACxD,MAAM,SAAiC,CAAC;AAAA,EACxC,IAAI,gBAAgB;AAAA,EAEpB,SAAS,IAAI,EAAG,IAAI,aAAa,QAAQ,KAAK;AAAA,IAC7C,MAAM,oBAAoB,iBACzB,aAAa,IACb,GACA,aAAa,QACb,eACA,eACA,MACD;AAAA,IACA,IAAI,sBAAsB,MAAM;AAAA,MAC/B,OAAO;AAAA,IACR;AAAA,IACA,IAAI,sBAAsB,aAAa;AAAA,MACtC,OAAO;AAAA,IACR;AAAA,IAEA,gBAAgB;AAAA,EACjB;AAAA,EAEA,OAAO,kBAAkB,cAAc,SAAS,SAAS;AAAA;AAGnD,SAAS,WAAqC,CACpD,QACA,UACsD;AAAA,EACtD,WAAW,SAAS,QAAQ;AAAA,IAC3B,MAAM,SAAS,kBAAkB,MAAM,SAAS,QAAQ;AAAA,IACxD,IAAI,QAAQ;AAAA,MACX,OAAO,EAAE,OAAO,OAAO;AAAA,IACxB;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;;;AChKR,SAAS,gBAAgB,CACxB,gBACA,UACqB;AAAA,EACrB,IAAI,YAAY;AAAA,IAAG;AAAA,EACnB,OAAO,YAAY,IAAY,cAAc;AAAA;AAG9C,SAAS,cAAc,CAAC,UAAkB,UAA2B;AAAA,EACpE,IAAI,YAAY;AAAA,IAAG;AAAA,EACnB,OAAO,SAAS,IAAI,QAAQ;AAAA;AAG7B,SAAS,cAAc,CACtB,QACA,UACA,OACA,cACA,KACA,UACmB;AAAA,EACnB,OAAO,UACN,OAAO;AAAA,IACN;AAAA,IACA,QAAQ,EAAE,MAAM,MAAM,GAAG;AAAA,IACzB;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAsB,CACvB,EAAE,MAAM,CAAC,QAAQ;AAAA,IAChB,MAAM,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,IAC3D,MAAM,QAAQ,sBAAsB;AAAA,IACpC,QAAQ,MAAM,aAAa,OAAO;AAAA,IAClC,MAAM;AAAA,GACN;AAAA;AAGF,SAAS,mBAAmB,CAC3B,SACA,UACA,MACA,KACA,UACA,gBACA,UACA,cACO;AAAA,EACP,QAAQ,YAAY;AAAA,EAEpB,MAAM,YAAY,KAAK,KAAK,CAAC,UAAU;AAAA,IACtC,IAAI,IAAI,WAAW,KAAK,CAExB;AAAA,IACA,IAAI,WAAW,GAAG;AAAA,MACjB,YAAY,IAAI,gBAAgB,IAAI,QAAQ,QAAQ;AAAA,IACrD;AAAA,IACA,IAAI,WAAW,KAAK,IAAI,WAAW,KAAK;AAAA,MACvC,SAAS,IAAI,UAAU,OAAO,QAAQ;AAAA,IACvC;AAAA,IACA,OAAO;AAAA,GACP;AAAA,EAED,aAAa,KACZ,UACE,KAAK,CAAC,UAAU;AAAA,IAChB,QAAQ,YAAY;AAAA,GACpB,EACA,MAAM,MAAM,EAAE,CACjB;AAAA;AAGD,eAAe,sBAAsB,CACpC,SACA,UACA,MACA,UACA,gBACA,UACmB;AAAA,EACnB,MAAM,SAAS,MAAM;AAAA,EACrB,QAAQ,YAAY;AAAA,EAEpB,IAAI,WAAW,GAAG;AAAA,IACjB,YAAY,IACX,gBACC,OAA+B,UAAU,KAC1C,QACD;AAAA,EACD;AAAA,EACA,IAAI,WAAW,GAAG;AAAA,IACjB,SAAS,IAAI,UAAU,QAAQ,QAAQ;AAAA,EACxC;AAAA,EAEA,OAAO;AAAA;AAUR,eAAsB,kBAAkB,CACvC,UACA,SACA,cACA,eACgC;AAAA,EAChC,MAAM,YAAY,QAAQ,cAAc;AAAA,EACxC,MAAM,UACL,aAAa,gBAAgB,gBAAgB,CAAC;AAAA,EAC/C,MAAM,eAAmC,CAAC;AAAA,EAC1C,IAAI;AAAA,EACJ,IAAI;AAAA,EAEJ,MAAM,SAAS,QAAQ,UAAU;AAAA,EACjC,MAAM,WAAW,SAAS;AAAA,EAE1B,IAAI;AAAA,IACH,MAAM,QAAQ,SAAS,MAAM,GAAG,EAAE,OAAO,OAAO;AAAA,IAChD,IAAI,MAAM,SAAS,GAAG;AAAA,MACrB,OAAO,EAAE,MAAM,SAAS,aAAa;AAAA,IACtC;AAAA,IAEA,MAAM,IAAI;AAAA,IACV,MAAM,MAAM,GAAG,MAAM,MAAM,MAAM;AAAA,IACjC,MAAM,MAAM,EAAE,0BAA0B;AAAA,IAExC,MAAM,SAAS,KAAK,KAAK;AAAA,IAEzB,IAAI,OAAO,WAAW,YAAY;AAAA,MACjC,OAAO,EAAE,MAAM,SAAS,aAAa;AAAA,IACtC;AAAA,IAEA,MAAM,WAAW,WAAW,YAAY,MAAM;AAAA,IAC9C,MAAM,iBAAiB,UAAU;AAAA,IAEjC,MAAM,eAAe,iBAAiB,gBAAgB,QAAQ;AAAA,IAC9D,IAAI,gBAAgB,iBAAiB,KAAK;AAAA,MACzC,iBAAiB;AAAA,IAClB;AAAA,IAEA,MAAM,SAAS,eAAe,UAAU,QAAQ;AAAA,IAChD,IAAI,WAAW,WAAW;AAAA,MACzB,QAAQ,YAAY;AAAA,MACpB,OAAO,EAAE,MAAM,SAAS,gBAAgB,aAAa;AAAA,IACtD;AAAA,IAEA,MAAM,MAAM,EAAE,QAAQ,IAAI;AAAA,IAC1B,MAAM,OAAO,eACZ,QACA,UACA,OACA,cACA,KACA,QAAQ,OACT;AAAA,IAEA,IAAI,WAAW;AAAA,MACd,oBACC,SACA,UACA,MACA,KACA,UACA,gBACA,UACA,YACD;AAAA,MACA,IAAI,IAAI,WAAW,KAAK;AAAA,QACvB,iBAAiB,IAAI;AAAA,MACtB;AAAA,IACD,EAAO;AAAA,MACN,MAAM,uBACL,SACA,UACA,MACA,UACA,gBACA,QACD;AAAA,MACA,IAAI,IAAI,WAAW,KAAK;AAAA,QACvB,iBAAiB,IAAI;AAAA,MACtB;AAAA;AAAA,IAEA,MAAM;AAAA,EAIR,OAAO,EAAE,MAAM,SAAS,OAAO,gBAAgB,aAAa;AAAA;AAAA;AAAA,EAzM7D;AAAA,EACA;AAAA;;;ACKO,SAAS,kBAAkB,CACjC,UACA,SACc;AAAA,EACd,IAAI,CAAC,MAAM,QAAQ,OAAO;AAAA,IAAG,OAAO,CAAC;AAAA,EAErC,OAAO,QACL,OAAO,CAAC,WAAgB;AAAA,IACxB,MAAM,UAAU,OAAO,QAAQ,WAAW,GAAG;AAAA,IAC7C,IAAI,YAAY;AAAA,MAAK,OAAO;AAAA,IAC5B,OAAO,SAAS,WAAW,OAAO;AAAA,GAClC,EACA,KAAK,CAAC,GAAQ,MAAW;AAAA,IACzB,MAAM,SAAS,gBAAgB,GAAG,OAAO;AAAA,IACzC,MAAM,SAAS,gBAAgB,GAAG,OAAO;AAAA,IACzC,OAAO,SAAS;AAAA,GAChB;AAAA;AAMI,SAAS,eAAe,CAAC,SAA0B;AAAA,EACzD,OAAO,OAAO,WAAW,GAAG,EAC1B,MAAM,GAAG,EACT,OAAO,OAAO,EAAE;AAAA;AAMZ,SAAS,oBAAoB,CACnC,SACA,UACS;AAAA,EACT,OAAO,UAAU,WAAW;AAAA;AAMtB,SAAS,mBAAmB,CAAC,SAAyB;AAAA,EAC5D,OAAO,YAAY;AAAA;;;AChCpB,eAAe,mBAAmB,CACjC,QACA,WACA,aAC2B;AAAA,EAC3B,IAAI,YAAa,QAAgB;AAAA,EAEjC,IAAI,CAAC,WAAW;AAAA,IACf,MAAM,MAAM,KAAK,WAAW,UAAU,OAAO,OAAO,IAAI,CAAC;AAAA,IACzD,MAAM,MAAM,MAAM,cAAc,KAAK,WAAW;AAAA,IAChD,YAAa,KAAa;AAAA,EAC3B;AAAA,EAEA,OAAO;AAAA;AAGR,SAAS,gBAAgB,CACxB,UACA,gBACA,UACkD;AAAA,EAClD,MAAM,eACL,WAAW,IAAI,YAAY,IAAY,cAAc,IAAI;AAAA,EAC1D,MAAM,aAAa,WAAW,IAAI,SAAS,IAAI,QAAQ,IAAI;AAAA,EAE3D,OAAO,EAAE,YAAY,aAAa;AAAA;AAGnC,SAAS,oBAAoB,CAC5B,QACA,UACA,cACA,eACA,UACmB;AAAA,EACnB,MAAM,MAAM,EAAE,QAAQ,IAAI;AAAA,EAC1B,OAAO,UACN,OAAO;AAAA,IACN;AAAA,IACA,QAAQ,CAAC;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAsB,CACvB,EAAE,MAAM,CAAC,QAAQ;AAAA,IAChB,MAAM,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,IAC3D,QAAQ,MACP,0CAA0C,kBAC1C,GACD;AAAA,IACA,MAAM;AAAA,GACN;AAAA;AAGF,SAAS,yBAAyB,CACjC,SACA,WACA,MACA,KACA,UACA,gBACA,UACA,cACO;AAAA,EACP,QAAQ,aAAa;AAAA,EAIrB,MAAM,IAAI;AAAA,EACV,EAAE,mBAAmB,EAAE,oBAAoB,CAAC;AAAA,EAC5C,EAAE,iBAAiB,aAAa;AAAA,EAEhC,MAAM,YAAY,KAAK,KAAK,CAAC,UAAU;AAAA,IACtC,IAAI,WAAW,GAAG;AAAA,MACjB,YAAY,IAAI,gBAAgB,IAAI,QAAQ,QAAQ;AAAA,IACrD;AAAA,IACA,IAAI,WAAW,KAAK,IAAI,WAAW,KAAK;AAAA,MACvC,SAAS,IAAI,UAAU,OAAO,QAAQ;AAAA,IACvC;AAAA,IACA,OAAO;AAAA,GACP;AAAA,EAED,aAAa,KACZ,UACE,KAAK,CAAC,UAAU;AAAA,IAChB,QAAQ,aAAa;AAAA,IAErB,IAAI,EAAE,kBAAkB;AAAA,MACvB,EAAE,iBAAiB,aAAa;AAAA,IACjC;AAAA,GACA,EACA,MAAM,MAAM,EAAE,CACjB;AAAA;AAGD,eAAe,4BAA4B,CAC1C,SACA,WACA,MACA,UACA,gBACA,UACmB;AAAA,EACnB,MAAM,SAAS,MAAM;AAAA,EACrB,QAAQ,aAAa;AAAA,EAErB,IAAI,WAAW,GAAG;AAAA,IACjB,YAAY,IACX,gBACC,OAA+B,UAAU,KAC1C,QACD;AAAA,EACD;AAAA,EACA,IAAI,WAAW,GAAG;AAAA,IACjB,SAAS,IAAI,UAAU,QAAQ,QAAQ;AAAA,EACxC;AAAA,EAEA,OAAO;AAAA;AAGR,eAAe,aAAa,CAC3B,QACA,UACA,WACA,aACA,WACA,UACA,cACA,SACA,cACA,UAC8B;AAAA,EAC9B,IAAI,OAAO,QAAQ,SAAS;AAAA,IAAU;AAAA,EAEtC,MAAM,YAAY,MAAM,oBAAoB,QAAQ,WAAW,WAAW;AAAA,EAC1E,MAAM,SAAS,WAAW;AAAA,EAE1B,IAAI,OAAO,WAAW;AAAA,IAAY;AAAA,EAElC,MAAM,UAAU,OAAO,OAAO,WAAW,GAAG;AAAA,EAC5C,MAAM,YAAY,oBAAoB,OAAO;AAAA,EAC7C,MAAM,WAAW,qBAAqB,SAAS,QAAQ;AAAA,EACvD,MAAM,iBAAiB,UAAU;AAAA,EAEjC,QAAQ,YAAY,iBAAiB,iBACpC,UACA,gBACA,QACD;AAAA,EAEA,IAAI,gBAAgB,iBAAiB,KAAK;AAAA,IACzC,OAAO;AAAA,EACR;AAAA,EAEA,IAAI,eAAe,WAAW;AAAA,IAC7B,QAAQ,aAAa;AAAA,IACrB;AAAA,EACD;AAAA,EAEA,MAAM,MAAM,EAAE,QAAQ,IAAI;AAAA,EAC1B,MAAM,OAAO,qBACZ,QACA,UACA,cACA,SACA,QACD;AAAA,EAEA,IAAI,WAAW;AAAA,IACd,0BACC,SACA,WACA,MACA,KACA,UACA,gBACA,UACA,YACD;AAAA,EACD,EAAO;AAAA,IACN,MAAM,6BACL,SACA,WACA,MACA,UACA,gBACA,QACD;AAAA;AAAA,EAGD,OAAO,IAAI,WAAW,MAAM,IAAI,SAAS;AAAA;AAU1C,eAAsB,iBAAiB,CACtC,UACA,WACA,MACA,aACA,SACA,cACA,cACA,eAC+B;AAAA,EAC/B,MAAM,YAAY,QAAQ,cAAc;AAAA,EACxC,MAAM,UACL,aAAa,gBAAgB,gBAAgB,CAAC;AAAA,EAC/C,MAAM,eAAmC,CAAC;AAAA,EAC1C,IAAI;AAAA,EAEJ,MAAM,SAAS,QAAQ,UAAU;AAAA,EACjC,MAAM,WAAW,SAAS;AAAA,EAE1B,IAAI;AAAA,IACH,MAAM,UAAU,cAAc;AAAA,IAC9B,MAAM,kBAAkB,mBAAmB,UAAU,OAAO;AAAA,IAE5D,WAAW,UAAU,iBAAiB;AAAA,MACrC,IAAI;AAAA,QACH,MAAM,eAAe,MAAM,cAC1B,QACA,UACA,WACA,aACA,WACA,UACA,cACA,SACA,cACA,QAAQ,OACT;AAAA,QAEA,IAAI,gBAAgB,CAAC,gBAAgB;AAAA,UACpC,iBAAiB;AAAA,QAClB;AAAA,QACC,MAAM;AAAA,IAGT;AAAA,IACC,MAAM;AAAA,EAIR,OAAO,EAAE,MAAM,SAAS,gBAAgB,aAAa;AAAA;AAO/C,SAAS,eAAe,CAC9B,SACA,UACO;AAAA,EACP,MAAM,aAAa,OAAO,KAAK,OAAO,EAAE,OAAO,CAAC,QAC/C,IAAI,WAAW,WAAW,CAC3B;AAAA,EAEA,MAAM,aAAsC,CAAC;AAAA,EAC7C,WAAW,OAAO,YAAY;AAAA,IAC7B,OAAO,OAAO,YAAY,QAAQ,IAA+B;AAAA,EAClE;AAAA,EAEA,IAAI,YAAY,SAAS;AAAA,IACxB,QAAQ,YAAY;AAAA,SAChB;AAAA,SACC,OAAO,QAAQ,cAAc,YAAY,QAAQ,cAAc,OAC/D,QAAQ,YACT,CAAC;AAAA,IACL;AAAA,EACD,EAAO,SAAI,OAAO,KAAK,UAAU,EAAE,SAAS,GAAG;AAAA,IAC9C,QAAQ,YAAY;AAAA,EACrB;AAAA;AAAA;AAAA,EAtSD;AAAA,EACA;AAAA;;;ACwBA,SAAS,UAAU,CAClB,UACA,gBACA,UACA,UACA,SAC+C;AAAA,EAE/C,MAAM,eACL,WAAW,IAAI,YAAY,IAAY,cAAc,IAAI;AAAA,EAC1D,MAAM,iBACL,gBAAgB,iBAAiB,MAAM,eAAe;AAAA,EAGvD,MAAM,SAAS,WAAW,IAAI,SAAS,IAAI,QAAQ,IAAI;AAAA,EAEvD,IAAI,WAAW,WAAW;AAAA,IACzB,QAAQ,YAAY;AAAA,IACpB,OAAO,EAAE,QAAQ,MAAM,eAAe;AAAA,EACvC;AAAA,EAEA,OAAO,EAAE,QAAQ,OAAO,eAAe;AAAA;AAGxC,eAAe,kBAAkB,CAChC,OACA,WACA,aAC2B;AAAA,EAE3B,IAAI,YAAa,OAAe;AAAA,EAGhC,IAAI,CAAC,WAAW;AAAA,IACf,MAAM,YAAY,OAAO,MAAM,IAAI;AAAA,IACnC,MAAM,MAAM,KAAK,WAAW,IAAI;AAAA,IAGhC,IAAI,MAAM,KAAK,KAAK,YAAY,aAAa,SAAS;AAAA,IACtD,IAAI,MAAM,MAAM,cAAc,KAAK,WAAW,EAAE,MAAM,MAAM,IAAI;AAAA,IAGhE,IAAI,CAAC,KAAK;AAAA,MACT,MAAM,KAAK,WAAW,UAAU,SAAS;AAAA,MACzC,MAAM,MAAM,cAAc,KAAK,WAAW;AAAA,IAC3C;AAAA,IAEA,YAAa,KAAa;AAAA,EAC3B;AAAA,EAEA,OAAO;AAAA;AAIR,eAAsB,gBAAgB,CACrC,UACA,WACA,MACA,aACA,SACA,cACA,cACA,eAC8B;AAAA,EAC9B,MAAM,YAAY,QAAQ,cAAc;AAAA,EACxC,MAAM,UACL,aAAa,gBAAgB,gBAAgB,CAAC;AAAA,EAC/C,MAAM,eAAmC,CAAC;AAAA,EAC1C,IAAI;AAAA,EACJ,IAAI;AAAA,EAEJ,MAAM,SAAS,QAAQ,UAAU;AAAA,EACjC,MAAM,WAAW,SAAS;AAAA,EAE1B,MAAM,cAAc,CAAC,KAAa,SAA2B;AAAA,IAC5D,aAAa,KACZ,KACE,KAAK,CAAC,UAAU;AAAA,MAChB,QAAQ,OAAO;AAAA,KACf,EACA,MAAM,MAAM,EAAE,CACjB;AAAA;AAAA,EAGD,IAAI;AAAA,IAEH,MAAM,eAAe,SAAS,MAAM,GAAG,EAAE;AAAA,IACzC,MAAM,QACL,OAAO,cAAc,eAAe,aACjC,aAAa,WAAW,YAAY,IACpC;AAAA,IAEJ,MAAM,QAAQ,OAAO;AAAA,IACrB,MAAM,SAAS,OAAO,UAAU,CAAC;AAAA,IAEjC,IAAI,CAAC,SAAS,OAAO,MAAM,SAAS,UAAU;AAAA,MAC7C,OAAO,EAAE,MAAM,SAAS,aAAa;AAAA,IACtC;AAAA,IAGA,MAAM,YAAY,MAAM,mBAAmB,OAAO,WAAW,WAAW;AAAA,IAExE,MAAM,SAAS,WAAW;AAAA,IAE1B,IAAI,OAAO,WAAW,YAAY;AAAA,MACjC,OAAO,EAAE,MAAM,SAAS,aAAa;AAAA,IACtC;AAAA,IAGA,MAAM,cAAc,eAAe,IAAI,aAAa,SAAS,MAAM;AAAA,IACnE,MAAM,WAAW,SAAS,WAAW,eAAe,KAAK,UAAU,MAAM;AAAA,IACzE,MAAM,iBAAiB,UAAU;AAAA,IAEjC,MAAM,cAAc,WACnB,UACA,gBACA,UACA,UACA,OACD;AAAA,IAEA,IAAI,YAAY,QAAQ;AAAA,MACvB,OAAO;AAAA,QACN,MAAM;AAAA,QACN,gBAAgB,YAAY;AAAA,QAC5B;AAAA,MACD;AAAA,IACD;AAAA,IAEA,IAAI,YAAY,gBAAgB;AAAA,MAC/B,iBAAiB,YAAY;AAAA,IAC9B;AAAA,IAGA,MAAM,MAAM,EAAE,QAAQ,IAAI;AAAA,IAC1B,MAAM,YAAY,OAAO;AAAA,MACxB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS,QAAQ;AAAA,IAClB,CAAsB;AAAA,IACtB,MAAM,YAAY,qBAAqB;AAAA,IAEvC,IAAI,WAAW;AAAA,MACd,MAAM,SAAS,MAAM,yBACpB,WACA,WACA,UACA,KACA,EAAE,SAAS,cAAc,YAAY,GACrC,EAAE,UAAU,gBAAgB,SAAS,GACrC,CAAC,QAAQ;AAAA,QACR,QAAQ;AAAA,SAET,CAAC,QAAQ;AAAA,QACR,IAAI,CAAC;AAAA,UAAgB,iBAAiB;AAAA,OAExC;AAAA,MACA,OAAO,OAAO,SAAS,MAAM;AAAA,IAC9B,EAAO;AAAA,MACN,MAAM,OAAO,UAAU,SAAS,EAAE,MAAM,CAAC,QAAQ;AAAA,QAChD,MAAM,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,QAC3D,QAAQ,sBAAsB;AAAA,QAC9B,QAAQ,MAAM,aAAa,OAAO;AAAA,QAClC,MAAM;AAAA,OACN;AAAA,MAED,MAAM,SAAS,MAAM;AAAA,MACrB,IAAI,IAAI,WAAW,OAAO,CAAC,gBAAgB;AAAA,QAC1C,iBAAiB,IAAI;AAAA,MACtB;AAAA,MACA,QAAQ,YAAY;AAAA,MACpB,IAAI,WAAW,GAAG;AAAA,QACjB,YAAY,IAAI,gBAAgB,IAAI,QAAQ,QAAQ;AAAA,MACrD;AAAA,MACA,IAAI,WAAW,KAAK,IAAI,WAAW,KAAK;AAAA,QACvC,SAAS,IAAI,UAAU,QAAQ,QAAQ;AAAA,MACxC;AAAA;AAAA,IAEA,MAAM;AAAA,EAIR,OAAO,EAAE,MAAM,SAAS,OAAO,gBAAgB,aAAa;AAAA;AAe7D,SAAS,mBAAmB,CAC3B,WACA,WACqD;AAAA,EACrD,IACC,OAAO,cAAc,YACrB,cAAc,QACd,CAAC,MAAM,QAAQ,SAAS,KACxB,CAAC,WACA;AAAA,IACD,MAAM,UAAU,OAAO,QAAQ,SAAoC;AAAA,IACnE,MAAM,kBAAkB,QAAQ,SAAS;AAAA,IACzC,MAAM,cAAc,QAAQ,KAAK,EAAE,GAAG,OAAO,WAAW,CAAC,CAAC;AAAA,IAE1D,IAAI,mBAAmB,aAAa;AAAA,MACnC,OAAO,EAAE,QAAQ,MAAM,QAAQ;AAAA,IAChC;AAAA,EACD;AAAA,EAEA,OAAO,EAAE,QAAQ,MAAM;AAAA;AAGxB,SAAS,aAAa,CACrB,OACA,KACA,OACA,WACC;AAAA,EACD,QAAQ,UAAU,gBAAgB,aAAa;AAAA,EAE/C,IAAI,IAAI,WAAW,KAAK;AAAA,IACvB,UAAU,IAAI,MAAM;AAAA,EACrB;AAAA,EACA,IAAI,WAAW,GAAG;AAAA,IACjB,YAAY,IAAI,gBAAgB,IAAI,QAAQ,QAAQ;AAAA,EACrD;AAAA,EACA,IAAI,WAAW,KAAK,IAAI,WAAW,KAAK;AAAA,IACvC,SAAS,IAAI,UAAU,OAAO,QAAQ;AAAA,EACvC;AAAA;AAGD,eAAe,wBAAwB,CACtC,WACA,WACA,UACA,KACA,KACA,OACA,UACA,WACmC;AAAA,EACnC,QAAQ,SAAS,gBAAgB;AAAA,EAGjC,MAAM,eAAe,oBAAoB,WAAW,SAAS;AAAA,EAC7D,IAAI,aAAa,UAAU,aAAa,SAAS;AAAA,IAChD,OAAO,sBACN,aAAa,SACb,KACA,KACA,OACA,UACA,SACD;AAAA,EACD;AAAA,EAGA,MAAM,OAAO,UAAU,SAAS,EAAE,MAAM,CAAC,QAAQ;AAAA,IAChD,MAAM,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,IAC3D,SAAS,sBAAsB,KAAK;AAAA,IACpC,QAAQ,MAAM,gCAAgC,KAAK;AAAA,IACnD,MAAM;AAAA,GACN;AAAA,EAID,QAAQ,YAAY;AAAA,EACpB,MAAM,IAAI;AAAA,EACV,IAAI,CAAC,EAAE;AAAA,IAAkB,EAAE,mBAAmB,CAAC;AAAA,EAC/C,EAAE,iBAAiB,YAAY;AAAA,EAE/B,YACC,UACA,KAAK,KAAK,CAAC,UAAU;AAAA,IACpB,cAAc,OAAO,KAAK,OAAO,SAAS;AAAA,IAE1C,QAAQ,YAAY;AAAA,IACpB,IAAI,EAAE,kBAAkB;AAAA,MACvB,EAAE,iBAAiB,YAAY;AAAA,IAChC;AAAA,IACA,OAAO;AAAA,GACP,CACF;AAAA,EAEA,OAAO,CAAC;AAAA;AAMT,SAAS,qBAAqB,CAC7B,SACA,KACA,KACA,OACA,UACA,WAC0B;AAAA,EAC1B,QAAQ,SAAS,gBAAgB;AAAA,EACjC,QAAQ,UAAU,gBAAgB,aAAa;AAAA,EAG/C,MAAM,IAAI;AAAA,EACV,IAAI,CAAC,EAAE;AAAA,IAAkB,EAAE,mBAAmB,CAAC;AAAA,EAE/C,MAAM,oBAAkD,CAAC;AAAA,EAEzD,YAAY,KAAK,QAAQ,SAAS;AAAA,IACjC,IAAI,WAAW,GAAG,GAAG;AAAA,MACpB,MAAM,iBAAkB,IACtB,KAAK,CAAC,aAAa;AAAA,QACnB,IAAI,IAAI,WAAW,KAAK;AAAA,UACvB,UAAU,IAAI,MAAM;AAAA,QACrB;AAAA,QAGA,QAAQ,OAAO;AAAA,QACf,EAAE,iBAAiB,OAAO;AAAA,QAC1B,OAAO;AAAA,OACP,EACA,MAAM,CAAC,QAAQ;AAAA,QACf,MAAM,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,QAC3D,SAAS,6BAA6B,QAAQ,KAAK;AAAA,QACnD,QAAQ,MAAM,uCAAuC,QAAQ,KAAK;AAAA,QAClE,MAAM;AAAA,OACN;AAAA,MAGF,QAAQ,OAAO;AAAA,MACf,EAAE,iBAAiB,OAAO;AAAA,MAC1B,YAAY,KAAK,cAAc;AAAA,MAC/B,kBAAkB,KACjB,eAAe,KAAK,CAAC,aAAa,CAAC,KAAK,QAAQ,CAAsB,CACvE;AAAA,IACD,EAAO;AAAA,MACN,QAAQ,OAAO;AAAA,MACf,EAAE,iBAAiB,OAAO;AAAA,MAC1B,kBAAkB,KAAK,QAAQ,QAAQ,CAAC,KAAK,GAAG,CAAsB,CAAC;AAAA;AAAA,EAEzE;AAAA,EAGA,IAAI,WAAW,GAAG;AAAA,IACjB,QAAQ,IAAI,iBAAiB,EAC3B,KAAK,CAAC,oBAAoB;AAAA,MAC1B,YAAY,IAAI,gBAAgB,IAAI,QAAQ,QAAQ;AAAA,MACpD,IAAI,IAAI,WAAW,KAAK;AAAA,QACvB,MAAM,iBAA0C,CAAC;AAAA,QACjD,YAAY,KAAK,UAAU,iBAAiB;AAAA,UAC3C,eAAe,OAAO;AAAA,QACvB;AAAA,QACA,SAAS,IAAI,UAAU,gBAAgB,QAAQ;AAAA,MAChD;AAAA,KACA,EACA,MAAM,MAAM,EAEZ;AAAA,EACH;AAAA,EAEA,OAAO,CAAC;AAAA;AAAA;AAAA,EAzYT;AAAA,EACA;AAAA;;;ACYA,SAAS,yBAAyB,CACjC,eACA,gBACM;AAAA,EACN,MAAM,wBAAyB,WAC7B;AAAA,EAEF,OAAO;AAAA,IACN,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,YAAY,CAAC,aACZ,YAAY,eAAwB,QAAQ;AAAA,EAC9C;AAAA;AAGD,eAAe,gBAAgB,CAC9B,KACA,aACsB;AAAA,EACtB,IAAI;AAAA,IACH,MAAM,gBAAiB,WACrB;AAAA,IACF,MAAM,iBAAkB,WACtB;AAAA,IAEF,IAAI,iBAAiB,gBAAgB;AAAA,MACpC,OAAO,0BAA0B,eAAe,cAAc;AAAA,IAC/D;AAAA,IAEA,MAAM,aAAa,KAAK,KAAK,YAAY,WAAW;AAAA,IACpD,OAAO,MAAM,cAAc,YAAY,WAAW;AAAA,IACjD,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAIT,SAAS,kBAAkB,CAC1B,QAMA,SACA,iBACA,iBACA,WACqB;AAAA,EACrB,IAAI,CAAC,WAAW;AAAA,IACf,OAAO,OAAO,SAAS,OAAO,IAAI;AAAA,EACnC;AAAA,EACA,IAAI,OAAO,kBAAkB,CAAC,gBAAgB,OAAO;AAAA,IACpD,gBAAgB,QAAQ,OAAO;AAAA,EAChC;AAAA,EACA,gBAAgB,KAAK,GAAG,OAAO,YAAY;AAAA,EAC3C,OAAO,OAAO;AAAA;AAOf,eAAsB,cAAc,CACnC,UACA,WACA,KACA,aACA,UAA0B,CAAC,GAC3B,cACyB;AAAA,EACzB,MAAM,UAAmC,CAAC;AAAA,EAC1C,IAAI;AAAA,EACJ,MAAM,kBAAkB,EAAE,OAAO,UAAgC;AAAA,EACjE,MAAM,kBAAsC,CAAC;AAAA,EAC7C,MAAM,YAAY,QAAQ,cAAc;AAAA,EAExC,MAAM,eAAe,MAAM,iBAAiB,KAAK,WAAW;AAAA,EAC5D,IAAI,CAAC,cAAc;AAAA,IAClB,OAAO;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP;AAAA,IACD;AAAA,EACD;AAAA,EAEA,IAAI;AAAA,IACH,MAAM,eAAe,MAAM,kBAC1B,UACA,WACA,KACA,aACA,SACA,cACA,cACA,OACD;AAAA,IACA,mBACC,cACA,SACA,iBACA,iBACA,SACD;AAAA,IACC,MAAM;AAAA,EAIR,IAAI;AAAA,IACH,MAAM,gBAAgB,MAAM,mBAC3B,UACA,SACA,cACA,OACD;AAAA,IACA,QAAQ,mBACP,eACA,SACA,iBACA,iBACA,SACD;AAAA,IACC,MAAM;AAAA,EAIR,IAAI;AAAA,IACH,MAAM,cAAc,MAAM,iBACzB,UACA,WACA,KACA,aACA,SACA,cACA,cACA,OACD;AAAA,IACA,MAAM,aAAa,mBAClB,aACA,SACA,iBACA,iBACA,SACD;AAAA,IACA,IAAI;AAAA,MAAY,QAAQ;AAAA,IACvB,MAAM;AAAA,EAIR,IAAI,CAAC,WAAW;AAAA,IACf,gBAAgB,SAAS,QAAQ;AAAA,EAClC;AAAA,EAEA,MAAM,UACL,aAAa,gBAAgB,SAC1B,QAAQ,WAAW,eAAe,EAAE,KAAK,MAAG;AAAA,IAAG;AAAA,GAAS,IACxD;AAAA,EAEJ,OAAO,EAAE,MAAM,SAAS,OAAO,SAAS,gBAAgB;AAAA;AAOlD,SAAS,gBAAgB,CAAC,MAAqC;AAAA,EACrE,IAAI;AAAA,IACH,MAAM,IAAI;AAAA,IACV,IAAI,CAAC,EAAE,kBAAkB;AAAA,MACxB,EAAE,mBAAmB,CAAC;AAAA,IACvB;AAAA,IAEA,OAAO,OAAO,EAAE,kBAAkB,IAAI;AAAA,IACrC,MAAM;AAAA;AAAA;AAAA,EA1LT;AAAA,EAIA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA;;;ACVA,oBAAS,kBAAS;AASlB,eAAsB,0BAA0B,CAC/C,UACA,WACA,KACA,aACsB;AAAA,EACtB,IAAI;AAAA,IAEH,MAAM,WAAW,SAAS,MAAM,GAAG,EAAE,GAAG,MAAM,GAAG,EAAE;AAAA,IACnD,MAAM,QAAQ,SAAS,MAAM,GAAG,EAAE,OAAO,OAAO;AAAA,IAChD,IAAI,MAAM,SAAS;AAAA,MAAG,OAAO;AAAA,IAE7B,MAAM,aAAa,MAAM;AAAA,IACzB,MAAM,OAAO,MAAM;AAAA,IAGnB,MAAM,iBAAiB,MAAM,kBAC5B,YACA,MACA,KACA,WACD;AAAA,IACA,IAAI;AAAA,MAAgB,OAAO;AAAA,IAG3B,MAAM,cAAc,MAAM,eACzB,YACA,MACA,KACA,WACD;AAAA,IACA,IAAI;AAAA,MAAa,OAAO;AAAA,IAGxB,MAAM,eAAe,MAAM,gBAC1B,YACA,MACA,WACA,WACD;AAAA,IACA,IAAI;AAAA,MAAc,OAAO;AAAA,IACxB,MAAM;AAAA,EAIR,OAAO;AAAA;AAGR,eAAe,iBAAiB,CAC/B,YACA,MACA,KACA,aACsB;AAAA,EACtB,IAAI;AAAA,IACH,MAAM,eAAe,KAAK,KAAK,YAAY,YAAY;AAAA,IACvD,MAAM,MAAM,MAAM,cAAc,cAAc,WAAW;AAAA,IAEzD,MAAM,MAAM,KAAK;AAAA,IAGjB,MAAM,QAAQ,OAAO,QAAQ,aAAa,IAAI,YAAY,IAAI,IAAI;AAAA,IAClE,MAAM,YAAa,OAAe;AAAA,IAElC,IAAI,CAAC,WAAW,SAAS,KAAK;AAAA,MAAG,OAAO;AAAA,IAExC,MAAM,MAAM,UAAU,MAAM,GAAG,EAAE,MAAM;AAAA,IACvC,MAAM,aAAa,IAAI,QAAQ,QAAQ,EAAE;AAAA,IAEzC,MAAM,aAAuB,CAAC;AAAA,IAC9B,IAAI,YAAY;AAAA,MACf,WAAW,KAAK,KAAK,KAAK,UAAU,CAAC;AAAA,MACrC,IAAI,CAAC,WAAW,WAAW,WAAW,GAAG;AAAA,QACxC,WAAW,KAAK,KAAK,KAAK,YAAY,UAAU,CAAC;AAAA,MAClD;AAAA,IACD;AAAA,IAEA,WAAW,OAAO,YAAY;AAAA,MAC7B,IAAI;AAAA,QACH,IAAI,CAAE,MAAM,IAAI,KAAK,GAAG,EAAE,OAAO;AAAA,UAAI;AAAA,QACrC,OAAO,MAAM,cAAc,KAAK,WAAW;AAAA,QAC1C,MAAM;AAAA,IAGT;AAAA,IACC,MAAM;AAAA,EAIR,OAAO;AAAA;AAGR,eAAe,cAAc,CAC5B,YACA,MACA,KACA,aACsB;AAAA,EACtB,IAAI;AAAA,IACH,MAAM,WAAW,KAAK,KAAK,YAAY,UAAU,UAAU;AAAA,IAC3D,MAAM,QAAQ,MAAM,SAAQ,QAAQ;AAAA,IACpC,MAAM,UAAU,MAAM,OACrB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,KAAK,EAAE,SAAS,KAAK,CACpD;AAAA,IAEA,IAAI,CAAC,QAAQ;AAAA,MAAQ,OAAO;AAAA,IAG5B,IAAI,SAAS,QAAQ;AAAA,IACrB,IAAI,UAAU;AAAA,IACd,WAAW,KAAK,SAAS;AAAA,MACxB,IAAI;AAAA,QACH,MAAM,IAAI,MAAM,MAAK,KAAK,UAAU,CAAC,CAAC;AAAA,QACtC,IAAI,EAAE,WAAW,SAAS;AAAA,UACzB,UAAU,EAAE;AAAA,UACZ,SAAS;AAAA,QACV;AAAA,QACC,MAAM;AAAA,IAGT;AAAA,IAEA,MAAM,WAAW,KAAK,UAAU,MAAM;AAAA,IACtC,OAAO,MAAM,cAAc,UAAU,WAAW;AAAA,IAC/C,MAAM;AAAA,EAIR,OAAO;AAAA;AAGR,eAAe,eAAe,CAC7B,YACA,MACA,WACA,aACsB;AAAA,EACtB,IAAI;AAAA,IACH,MAAM,SAAS,KACd,WACA,UACA,YACA,WACA,GAAG,UACJ;AAAA,IACA,MAAM,QAAQ,KACb,WACA,UACA,YACA,WACA,GAAG,SACJ;AAAA,IAEA,IAAI,SAAwB;AAAA,IAC5B,IAAI,MAAM,IAAI,KAAK,MAAM,EAAE,OAAO,GAAG;AAAA,MACpC,SAAS;AAAA,IACV,EAAO,SAAI,MAAM,IAAI,KAAK,KAAK,EAAE,OAAO,GAAG;AAAA,MAC1C,SAAS;AAAA,IACV;AAAA,IAEA,IAAI,QAAQ;AAAA,MACX,OAAO,MAAM,cAAc,QAAQ,WAAW;AAAA,IAC/C;AAAA,IACC,MAAM;AAAA,EAIR,OAAO;AAAA;AAAA;AAAA,EA/KR;AAAA;;;ACUA,SAAS,cAAc,GAAS;AAAA,EAC/B,IAAI,kBAAkB,WAAW;AAAA,IAAG;AAAA,EAEpC,MAAM,aAAa,kBAAkB,MAAM;AAAA,EAC3C,IAAI,CAAC;AAAA,IAAY;AAAA,EAEjB,MAAM,IAAI;AAAA,EACV,IAAI,EAAE,yBAAyB;AAAA,IAC9B,OAAO,EAAE,wBAAwB;AAAA,EAClC;AAAA,EACA,IAAI,EAAE,yBAAyB;AAAA,IAC9B,OAAO,EAAE,wBAAwB;AAAA,EAClC;AAAA;AAMD,SAAS,WAAW,CAAC,KAAmB;AAAA,EAEvC,MAAM,QAAQ,kBAAkB,QAAQ,GAAG;AAAA,EAC3C,IAAI,QAAQ,IAAI;AAAA,IACf,kBAAkB,OAAO,OAAO,CAAC;AAAA,EAClC;AAAA,EAEA,kBAAkB,KAAK,GAAG;AAAA,EAG1B,OAAO,kBAAkB,SAAS,iBAAiB;AAAA,IAClD,eAAe;AAAA,EAChB;AAAA;AAQD,eAAsB,oBAAoB,CACzC,UACA,WACA,KACA,aACgB;AAAA,EAChB,IAAI;AAAA,IACH,MAAM,WAAW,SAAS,MAAM,GAAG,EAAE,GAAG,MAAM,GAAG,EAAE;AAAA,IACnD,MAAM,QAAQ,SAAS,MAAM,GAAG,EAAE,OAAO,OAAO;AAAA,IAEhD,IAAI,MAAM,SAAS,GAAG;AAAA,MACrB;AAAA,IACD;AAAA,IAEA,MAAM,aAAa,MAAM;AAAA,IACzB,MAAM,OAAO,MAAM;AAAA,IACnB,MAAM,MAAM,GAAG,cAAc;AAAA,IAE7B,MAAM,MAAM,MAAM,2BACjB,UACA,WACA,KACA,WACD;AAAA,IAEA,IAAI,CAAC,KAAK;AAAA,MACT;AAAA,IACD;AAAA,IAGC,WAAmB,0BAClB,WAAmB,2BAA2B,CAAC;AAAA,IAChD,WAAmB,wBAAwB,OAAO;AAAA,IAGnD,IAAI;AAAA,MACF,WAAmB,0BAClB,WAAmB,2BAA2B,CAAC;AAAA,MAChD,WAAmB,wBAAwB,OAAO;AAAA,QAClD,MAAO,IAAY,QAAQ,CAAC;AAAA,QAC5B,KAAM,IAAY,OAAO,CAAC;AAAA,QAC1B,KAAM,IAAY,OAAO,CAAC;AAAA,MAC3B;AAAA,MACC,MAAM;AAAA,IAKR,YAAY,GAAG;AAAA,IACd,MAAM;AAAA;AAAA,IA7FH,kBAAkB,KAClB;AAAA;AAAA,EANN;AAAA,EAMM,oBAA8B,CAAC;AAAA;;;ACKrC,SAAS,eAAe,CACvB,UACA,cACwC;AAAA,EACxC,IAAI;AAAA,IACH,MAAM,QAAQ,SAAS,MAAM,GAAG,EAAE,OAAO,OAAO;AAAA,IAChD,IAAI,MAAM,SAAS;AAAA,MAAG,OAAO;AAAA,IAE7B,MAAM,MAAM,GAAG,MAAM,MAAM,MAAM;AAAA,IACjC,MAAM,IAAI;AAAA,IACV,MAAM,MAAM,EAAE,0BAA0B;AAAA,IACxC,MAAM,SAAU,KAAa,KAAK;AAAA,IAElC,IAAI,OAAO,WAAW,YAAY;AAAA,MACjC,MAAM,YAAY,OAAO;AAAA,QACxB;AAAA,QACA,QAAQ,EAAE,MAAM,MAAM,GAAG;AAAA,QACzB;AAAA,MAED,CAAC;AAAA,MAED,MAAM,SAAS,kBAAkB,WAAW,UAAU,QAAQ;AAAA,MAC9D,OAAO,EAAE,KAAK,UAAU,MAAM,OAAO;AAAA,IACtC;AAAA,IACC,MAAM;AAAA,EAIR,OAAO;AAAA;AAGR,SAAS,oBAAoB,CAC5B,UACA,WACA,KACA,aACA,cACiD;AAAA,EACjD,OAAO,sBACN,UACA,WACA,KACA,aACA,YACD;AAAA;AAGD,eAAe,qBAAqB,CACnC,UACA,WACA,KACA,aACA,cACiD;AAAA,EACjD,IAAI;AAAA,IAEH,IAAI,SAAU,WAAuC;AAAA,IAGrD,IAAI;AAAA,IAGJ,IAAI,CAAC,QAAQ;AAAA,MACZ,MAAM,aAAa,KAAK,KAAK,YAAY,WAAW;AAAA,MACpD,MAAM,IAAI,MAAM,cAAc,YAAY,WAAW;AAAA,MACrD,SAAS,GAAG;AAAA,MACZ,eAAgB,GAAW;AAAA,IAG5B,EAAO;AAAA,MAEN,eAAe,CAAC,cACf,YAAa,UAAU,CAAC,GAAa,SAAQ;AAAA;AAAA,IAG/C,MAAM,eAAe,SAAS,MAAM,GAAG,EAAE;AAAA,IACzC,MAAM,QACL,OAAO,iBAAiB,aAAa,aAAa,YAAY,IAAI;AAAA,IAEnE,MAAM,IAAK,OAAsB;AAAA,IACjC,MAAM,cAAgB,OAAsB,UAAU,CAAC;AAAA,IAKvD,IAAI,KAAK,OAAQ,EAAU,SAAS,UAAU;AAAA,MAE7C,IAAI,YAAa,GAAW;AAAA,MAG5B,IAAI,CAAC,WAAW;AAAA,QAGf,MAAM,YAAY,OAAQ,EAAU,IAAI;AAAA,QACxC,IAAI,MAAM,KAAK,KAAK,YAAY,aAAa,SAAS;AAAA,QAEtD,IAAI,MAAM,MAAM,cAAc,KAAK,WAAW,EAAE,MAAM,MAAM,IAAI;AAAA,QAGhE,IAAI,CAAC,KAAK;AAAA,UACT,MAAM,KAAK,WAAW,UAAU,SAAS;AAAA,UACzC,MAAM,MAAM,cAAc,KAAK,WAAW;AAAA,QAC3C;AAAA,QAEA,YAAa,KAAa;AAAA,MAC3B;AAAA,MAEA,MAAM,SAAS,WAAW;AAAA,MAE1B,IAAI,OAAO,WAAW,YAAY;AAAA,QACjC,MAAM,YAAY,OAAO;AAAA,UACxB;AAAA,UACA,QAAQ;AAAA,UACR;AAAA,QAED,CAAC;AAAA,QAED,MAAM,OAAO,kBAAkB,WAAW,UAAU,QAAQ;AAAA,QAC5D,OAAO,EAAE,KAAK,UAAU,KAAK;AAAA,MAC9B;AAAA,IACD;AAAA,IACC,MAAM;AAAA,EAIR,OAAO;AAAA;AAGR,SAAS,wBAAwB,CAAC,SAA2C;AAAA,EAC5E,MAAM,WAAW,OAAO,KAAK,OAAO;AAAA,EAEpC,IAAI,SAAS,SAAS,GAAG;AAAA,IACxB,OAAO,EAAE,sBAAsB,SAAS,QAAQ;AAAA,EACjD;AAAA,EAEA,IAAI,SAAS,WAAW,GAAG;AAAA,IAC1B,MAAM,YAAY,SAAS;AAAA,IAE3B,IAAI,UAAU,WAAW,WAAW,GAAG;AAAA,MACtC,OAAO;AAAA,IACR;AAAA,IACA,OAAO,QAAQ;AAAA,EAChB;AAAA,EAEA,OAAO;AAAA;AAGR,eAAsB,qBAAqB,CAC1C,QACmB;AAAA,EACnB,QAAQ,UAAU,WAAW,KAAK,aAAa,iBAAiB;AAAA,EAGhE,IAAI;AAAA,IACH,MAAM,qBAAqB,UAAU,WAAW,KAAK,WAAW;AAAA,IAC/D,MAAM;AAAA,EAKR,MAAM,UAAU,MAAM,eACrB,UACA,WACA,KACA,aACA,YACD;AAAA,EAGA,MAAM,gBAAgB,gBAAgB,UAAU,YAAY;AAAA,EAC5D,IAAI,eAAe;AAAA,IAElB,IAAI,OAAO,KAAK,OAAO,EAAE,WAAW,GAAG;AAAA,MACtC,OAAO,cAAc;AAAA,IACtB;AAAA,IACA,QAAQ,cAAc,OAAO,cAAc;AAAA,EAC5C;AAAA,EAGA,MAAM,cAAc,MAAM,qBACzB,UACA,WACA,KACA,aACA,YACD;AAAA,EACA,IAAI,aAAa;AAAA,IAChB,QAAQ,YAAY,OAAO,YAAY;AAAA,EACxC;AAAA,EAEA,OAAO,yBAAyB,OAAO;AAAA;AAGxC,SAAS,uBAAuB,CAC/B,WACA,UACA,WACU;AAAA,EACV,IAAI,qBAAqB,SAAS;AAAA,IACjC,OAAO,iBAAiB,UAAU,SAAS;AAAA,EAC5C;AAAA,EAEA,IACC,OAAO,cAAc,YACrB,cAAc,QACd,CAAC,MAAM,QAAQ,SAAS,GACvB;AAAA,IACD,MAAM,UAAU,OAAO,QAAQ,SAAoC;AAAA,IACnE,MAAM,cAAc,QAAQ,KAAK,EAAE,GAAG,OAAO,aAAa,OAAO;AAAA,IAEjE,IAAI,aAAa;AAAA,MAChB,MAAM,YAAqC,EAAE,aAAa,KAAK;AAAA,MAC/D,YAAY,GAAG,UAAU,SAAS;AAAA,QACjC,IAAI,iBAAiB,SAAS;AAAA,UAC7B,UAAU,KAAK,iBAAiB,UAAU,CAAC;AAAA,QAC5C,EAAO;AAAA,UACN,UAAU,KAAK;AAAA;AAAA,MAEjB;AAAA,MACA,OAAO;AAAA,IACR;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAGR,eAAe,cAAa,CAC3B,QACA,UACA,WACA,aACA,cACiD;AAAA,EACjD,IAAI,OAAO,QAAQ,SAAS;AAAA,IAAU,OAAO;AAAA,EAE7C,IAAI;AAAA,IAEH,IAAI,YAAa,QAAgB;AAAA,IAGjC,IAAI,CAAC,WAAW;AAAA,MACf,MAAM,MAAM,KAAK,WAAW,UAAU,OAAO,OAAO,IAAI,CAAC;AAAA,MACzD,MAAM,MAAM,MAAM,cAAc,KAAK,WAAW;AAAA,MAChD,YAAa,KAAa;AAAA,IAC3B;AAAA,IAEA,MAAM,SAAS,WAAW;AAAA,IAE1B,IAAI,OAAO,WAAW;AAAA,MAAY,OAAO;AAAA,IAEzC,MAAM,UAAU,OAAO,OAAO,WAAW,GAAG;AAAA,IAC5C,MAAM,YAAY,YAAY;AAAA,IAC9B,MAAM,YAAY,OAAO;AAAA,MACxB;AAAA,MACA,QAAQ,CAAC;AAAA,MACT;AAAA,IAED,CAAC;AAAA,IAED,MAAM,gBAAgB,wBACrB,WACA,UACA,SACD;AAAA,IACA,OAAO,EAAE,KAAK,WAAW,MAAM,cAAc;AAAA,IAC5C,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAIT,eAAe,cAAc,CAC5B,UACA,WACA,KACA,aACA,cACmC;AAAA,EACnC,MAAM,UAAmC,CAAC;AAAA,EAE1C,IAAI;AAAA,IAEH,IAAI,UAAW,WAAuC;AAAA,IAKtD,IAAI,CAAC,SAAS;AAAA,MACb,MAAM,aAAa,KAAK,KAAK,YAAY,WAAW;AAAA,MACpD,MAAM,IAAI,MAAM,cAAc,YAAY,WAAW;AAAA,MACrD,UAAU,GAAG;AAAA,IACd;AAAA,IAEA,MAAM,kBAAkB,mBAAmB,UAAU,OAAO;AAAA,IAE5D,WAAW,UAAU,iBAAiB;AAAA,MACrC,MAAM,SAAS,MAAM,eACpB,QACA,UACA,WACA,aACA,YACD;AAAA,MAEA,IAAI,QAAQ;AAAA,QACX,QAAQ,OAAO,OAAO,OAAO;AAAA,MAC9B;AAAA,IACD;AAAA,IACC,MAAM;AAAA,EAIR,OAAO;AAAA;AAGR,SAAS,iBAAiB,CACzB,WACA,UACA,KACU;AAAA,EACV,OAAO,wBAAwB,WAAW,UAAU,GAAG;AAAA;AAGxD,SAAS,gBAAgB,CAAC,UAAkB,KAAsB;AAAA,EACjE,OAAO;AAAA,IACN,UAAU;AAAA,IACV,WAAW,wBAAwB,mBAAmB,QAAQ,SAAS,mBAAmB,GAAG;AAAA,EAC9F;AAAA;AAAA;AAAA,EAjVD;AAAA,EAIA;AAAA;;;ACEA,eAAsB,aAAa,CAAC,WAAoC;AAAA,EAEvE,MAAM,kBAAmB,WACvB;AAAA,EACF,IAAI,iBAAiB;AAAA,IACpB,OAAO;AAAA,EACR;AAAA,EAGA,MAAM,eAAe,KAAK,WAAW,YAAY;AAAA,EACjD,IAAI;AAAA,IACH,MAAM,UAAU,MAAM,IAAI,KAAK,YAAY,EAAE,KAAK;AAAA,IAClD,OAAO;AAAA,IACN,MAAM;AAAA,IAEP,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiBF,SAAS,kBAAkB,CACjC,cACA;AAAA,EAEC,OAAO;AAAA,EACP,kBAAkB;AAAA,EAClB,OAAO;AAAA,EACP,QAAQ;AAAA,GAEA;AAAA,EACT,IAAI,OAAO;AAAA,EAGX,OAAO,KAAK,QAAQ,kBAAkB,CAAC,IAAI,UAAkB;AAAA,IAC5D,MAAM,UAAU,iBAAiB,KAAK,KAAK;AAAA,IAC3C,MAAM,WAAW,UACd,MAAM,QAAQ,yCAAyC,SAAS,OAAO,IACvE,GAAG,eAAe;AAAA,IACrB,OAAO,QAAQ;AAAA,GACf;AAAA,EAGD,MAAM,eAAe,QAAQ;AAAA,EAC7B,QAAQ,iBAAiB,gBAAgB,uBACxC,MACA,YACD;AAAA,EACA,OAAO;AAAA,EAEP,IAAI,aAAa;AAAA,IAChB,OAAO,KAAK,QAAQ,aAAa,GAAG;AAAA,SAAwB;AAAA,EAC7D;AAAA,EAGA,OAAO,KAAK,QACX,wFACA,EACD;AAAA,EAGA,QAAQ,cAAc,iBAAiB,oBAAoB,OAAO;AAAA,EAElE,IAAI,aAAa,SAAS,GAAG;AAAA,IAC5B,MAAM,cAAc,aAAa,KAAK;AAAA,GAAQ;AAAA,IAC9C,OAAO,KAAK,QAAQ,aAAa,KAAO;AAAA,SAAwB;AAAA,EACjE;AAAA,EAGA,OAAO,eAAe,MAAM,cAAc,KAAK;AAAA,EAG/C,IAAI,iBAAiB;AAAA,IACpB,OAAO,KAAK,QAAQ,aAAa,KAAO;AAAA,SAA4B;AAAA,EACrE;AAAA,EAEA,OAAO;AAAA;AAQR,SAAS,iBAAiB,CAAC,aAA6B;AAAA,EACvD,MAAM,eAAe,CAAC,GAAG,YAAY,SAAS,2BAA2B,CAAC;AAAA,EAC1E,IAAI,aAAa,UAAU;AAAA,IAAG,OAAO;AAAA,EAErC,IAAI,SAAS;AAAA,EAEb,SAAS,IAAI,EAAG,IAAI,aAAa,SAAS,GAAG,KAAK;AAAA,IACjD,SAAS,OAAO,QAAQ,aAAa,GAAG,IAAI,EAAE;AAAA,EAC/C;AAAA,EACA,OAAO;AAAA;AAGR,SAAS,qBAAqB,CAAC,aAA6B;AAAA,EAC3D,MAAM,kBAAkB;AAAA,IACvB,GAAG,YAAY,SAAS,6CAA6C;AAAA,EACtE;AAAA,EACA,MAAM,YAAY,IAAI;AAAA,EAEtB,SAAS,IAAI,EAAG,IAAI,gBAAgB,QAAQ,KAAK;AAAA,IAChD,MAAM,QAAQ,gBAAgB;AAAA,IAC9B,MAAM,YAAY,MAAM,GAAG,YAAY;AAAA,IACvC,IAAI,CAAC,UAAU,IAAI,SAAS,GAAG;AAAA,MAC9B,UAAU,IAAI,WAAW,CAAC,CAAC;AAAA,IAC5B;AAAA,IACA,UAAU,IAAI,SAAS,GAAG,KAAK,CAAC;AAAA,EACjC;AAAA,EAEA,IAAI,SAAS;AAAA,EAEb,WAAW,WAAW,UAAU,OAAO,GAAG;AAAA,IACzC,IAAI,QAAQ,SAAS,GAAG;AAAA,MACvB,SAAS,IAAI,EAAG,IAAI,QAAQ,SAAS,GAAG,KAAK;AAAA,QAC5C,SAAS,OAAO,QAAQ,gBAAgB,QAAQ,IAAI,IAAI,EAAE;AAAA,MAC3D;AAAA,IACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAGR,SAAS,yBAAyB,CAAC,aAA6B;AAAA,EAC/D,MAAM,kBAAkB;AAAA,IACvB,GAAG,YAAY,SAAS,iDAAiD;AAAA,EAC1E;AAAA,EACA,MAAM,YAAY,IAAI;AAAA,EAEtB,SAAS,IAAI,EAAG,IAAI,gBAAgB,QAAQ,KAAK;AAAA,IAChD,MAAM,QAAQ,gBAAgB;AAAA,IAC9B,MAAM,YAAY,MAAM,GAAG,YAAY;AAAA,IACvC,IAAI,CAAC,UAAU,IAAI,SAAS,GAAG;AAAA,MAC9B,UAAU,IAAI,WAAW,CAAC,CAAC;AAAA,IAC5B;AAAA,IACA,UAAU,IAAI,SAAS,GAAG,KAAK,CAAC;AAAA,EACjC;AAAA,EAEA,IAAI,SAAS;AAAA,EAEb,WAAW,WAAW,UAAU,OAAO,GAAG;AAAA,IACzC,IAAI,QAAQ,SAAS,GAAG;AAAA,MACvB,SAAS,IAAI,EAAG,IAAI,QAAQ,SAAS,GAAG,KAAK;AAAA,QAC5C,SAAS,OAAO,QAAQ,gBAAgB,QAAQ,IAAI,IAAI,EAAE;AAAA,MAC3D;AAAA,IACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAGD,SAAS,mBAAmB,CAAC,aAA6B;AAAA,EAChE,IAAI;AAAA,IACH,IAAI,SAAS;AAAA,IACb,SAAS,kBAAkB,MAAM;AAAA,IACjC,SAAS,sBAAsB,MAAM;AAAA,IACrC,SAAS,0BAA0B,MAAM;AAAA,IACzC,OAAO;AAAA,IACN,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAOT,SAAS,qBAAqB,CAAC,cAA8B;AAAA,EAC5D,IAAI,SAAS;AAAA,EAEb,IAAI;AAAA,IAEH,SAAS,OAAO,QAAQ,4BAA4B,EAAE;AAAA,IAGtD,SAAS,OAAO,QACf,iDACA,EACD;AAAA,IACC,MAAM;AAAA,EAIR,OAAO;AAAA;AAOD,SAAS,wBAAwB,CACvC,cACA,cACS;AAAA,EACT,IAAI,SAAS;AAAA,EAEb,IAAI;AAAA,IAEH,MAAM,kBAAkB;AAAA,MACvB,GAAG,aAAa,SACf,iDACD;AAAA,IACD,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,YAAY,CAAC;AAAA,IAG/B,MAAM,oBAAoB;AAAA,MACzB,GAAG,aAAa,SAAS,6CAA6C;AAAA,IACvE,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,YAAY,CAAC;AAAA,IAG/B,WAAW,QAAQ,iBAAiB;AAAA,MACnC,MAAM,cAAc,KAAK,QAAQ,uBAAuB,MAAM;AAAA,MAC9D,MAAM,QAAQ,IAAI,OACjB,iCAAiC,yBACjC,IACD;AAAA,MACA,SAAS,OAAO,QAAQ,OAAO,EAAE;AAAA,IAClC;AAAA,IAGA,WAAW,QAAQ,mBAAmB;AAAA,MACrC,MAAM,cAAc,KAAK,QAAQ,uBAAuB,MAAM;AAAA,MAC9D,MAAM,QAAQ,IAAI,OACjB,6BAA6B,yBAC7B,IACD;AAAA,MACA,SAAS,OAAO,QAAQ,OAAO,EAAE;AAAA,IAClC;AAAA,IACC,MAAM;AAAA,EAIR,OAAO;AAAA;AAOR,SAAS,sBAAsB,CAC9B,cACA,cACmD;AAAA,EACnD,IAAI,kBAAkB;AAAA,EACtB,IAAI,cAAc;AAAA,EAElB,IAAI;AAAA,IAEH,cAAc,oBAAoB,YAAY;AAAA,IAG9C,IAAI,2BAA2B,KAAK,WAAW,GAAG;AAAA,MACjD,kBAAkB,sBAAsB,eAAe;AAAA,IACxD,EAAO,SACN,gDAAgD,KAAK,WAAW,GAC/D;AAAA,MAED,kBAAkB,gBAAgB,QACjC,iDACA,EACD;AAAA,IACD;AAAA,IAGA,kBAAkB,yBAAyB,iBAAiB,WAAW;AAAA,IACtE,MAAM;AAAA,EAIR,OAAO,EAAE,iBAAiB,YAAY;AAAA;AAMvC,SAAS,mBAAmB,CAAC,SAG3B;AAAA,EACD,MAAM,eAAyB,CAAC;AAAA,EAChC,IAAI,eAAe;AAAA,EAEnB,MAAM,kBAAkB;AAAA,EACxB,MAAM,cAAc,QAAQ,MAAM,eAAe;AAAA,EAEjD,IAAI,cAAc,IAAI;AAAA,IACrB,MAAM,cAAc,YAAY,GAAG,MAAM,gBAAgB;AAAA,IACzD,IAAI,aAAa;AAAA,MAChB,aAAa,KAAK,GAAG,WAAW;AAAA,MAChC,eAAe,QAAQ,MAAM,YAAY,GAAG,MAAM;AAAA,IACnD;AAAA,EACD;AAAA,EAEA,OAAO,EAAE,cAAc,aAAa;AAAA;AAMrC,SAAS,cAAc,CAAC,MAAc,SAAiB,OAAuB;AAAA,EAC7E,MAAM,eAAe,MAAM,QAAQ,uBAAuB,MAAM;AAAA,EAChE,MAAM,eAAe,IAAI,OACxB,0BAA0B,gDAC1B,GACD;AAAA,EAEA,IAAI,aAAa,KAAK,IAAI,GAAG;AAAA,IAE5B,MAAM,iBAAiB,QAAQ,QAAQ,OAAO,MAAM;AAAA,IACpD,OAAO,KAAK,QAAQ,cAAc,KAAK,kBAAkB;AAAA,EAC1D;AAAA,EAGA,OAAO,KAAK,QACX,aACA,cAAgB,UAAU;AAAA,SAC3B;AAAA;AAAA;;;AC7UD,oBAAS;AACT,0BAAS;AAMT,SAAS,wBAAwB,CAAC,MAAuB;AAAA,EACxD,OAAO,0BAA0B,KAAK,IAAI;AAAA;AAG3C,eAAe,2BAA2B,CAAC,SAAoC;AAAA,EAC9E,IAAI;AAAA,IACH,MAAM,UAAU,MAAM,SAAQ,SAAS,EAAE,eAAe,KAAK,CAAC;AAAA,IAE9D,OAAO,QACL,OAAO,CAAC,UAAU,MAAM,YAAY,CAAC,EACrC,IAAI,CAAC,UAAU,MAAM,IAAI,EACzB,OAAO,CAAC,SAAS,wBAAwB,KAAK,IAAI,CAAC,EACnD,KAAK,CAAC,GAAG,MAAM;AAAA,MACf,MAAM,cAAc,yBAAyB,CAAC;AAAA,MAC9C,MAAM,cAAc,yBAAyB,CAAC;AAAA,MAE9C,IAAI,gBAAgB,aAAa;AAAA,QAChC,OAAO,OAAO,WAAW,IAAI,OAAO,WAAW;AAAA,MAChD;AAAA,MAEA,OAAO,EAAE,cAAc,CAAC;AAAA,KACxB;AAAA,IACD,MAAM;AAAA,IACP,OAAO,CAAC;AAAA;AAAA;AAIV,eAAe,uBAAuB,CACrC,YACA,OACA,OACA,YACA,sBACgB;AAAA,EAChB,IAAI,UAAU,MAAM,QAAQ;AAAA,IAC3B,WAAW,KAAK,KAAK,YAAY,UAAU,CAAC;AAAA,IAC5C;AAAA,EACD;AAAA,EAEA,MAAM,aAAa,KAAK,YAAY,MAAM,MAAM;AAAA,EAEhD,IAAI;AAAA,IACH,MAAM,SAAQ,UAAU;AAAA,IACxB,MAAM,wBACL,YACA,OACA,QAAQ,GACR,YACA,IACD;AAAA,IACC,MAAM;AAAA,EAIR,MAAM,cAAc,MAAM,4BAA4B,UAAU;AAAA,EAEhE,WAAW,cAAc,aAAa;AAAA,IACrC,IAAI,yBAAyB,UAAU,GAAG;AAAA,MACzC,WAAW,KAAK,KAAK,YAAY,YAAY,UAAU,CAAC;AAAA,MACxD;AAAA,IACD;AAAA,IAEA,MAAM,wBACL,KAAK,YAAY,UAAU,GAC3B,OACA,QAAQ,GACR,YACA,KACD;AAAA,EACD;AAAA,EAEA,IAAI,sBAAsB;AAAA,IACzB,WAAW,KAAK,KAAK,YAAY,UAAU,CAAC;AAAA,EAC7C;AAAA;AAOD,eAAsB,kBAAkB,CACvC,UACA,WACyB;AAAA,EACzB,MAAM,QAAQ,SACZ,MAAM,GAAG,EACT,OAAO,OAAO,EACd,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,WAAW,CAAC;AAAA,EAC1C,MAAM,YAAY,KAAK,WAAW,QAAQ;AAAA,EAC1C,MAAM,aAAuB,CAAC;AAAA,EAE9B,MAAM,wBAAwB,WAAW,OAAO,GAAG,YAAY,IAAI;AAAA,EAEnE,MAAM,cAAc,CAAC,GAAG,IAAI,IAAI,UAAU,CAAC;AAAA,EAE3C,WAAW,QAAQ,aAAa;AAAA,IAC/B,IAAI;AAAA,MACH,MAAM,OAAO,IAAI,KAAK,IAAI;AAAA,MAC1B,IAAI,MAAM,KAAK,OAAO,GAAG;AAAA,QACxB,OAAO;AAAA,MACR;AAAA,MACC,MAAM;AAAA,EAGT;AAAA,EAEA,OAAO;AAAA;AAOR,eAAsB,oBAAoB,CACzC,QACA,aACC;AAAA,EACD,IAAI;AAAA,IACH,MAAM,MAAM,MACX,UAAG,eAAc,MAAM,EAAE,OAAO,cAAc,MAAM,KAAK,IAAI,MAAM;AAAA,IAEpE,OAAO,IAAI,WAAW;AAAA,IACrB,OAAO,OAAO;AAAA,IACf,QAAQ,MACP,gDAAgD,UAChD,KACD;AAAA,IACA,OAAO;AAAA;AAAA;AAQF,SAAS,qBAAqB,CACpC,UACA,QACA,WACyB;AAAA,EACzB,MAAM,SAAiC,CAAC;AAAA,EACxC,MAAM,QAAQ,OAAO,QAAQ,kBAAkB,EAAE;AAAA,EACjD,MAAM,YAAY,KAAK,WAAW,QAAQ;AAAA,EAC1C,MAAM,eAAe,MAAM,QAAQ,WAAW,EAAE,EAAE,MAAM,GAAG,EAAE,OAAO,OAAO;AAAA,EAC3E,MAAM,gBAAgB,SAAS,MAAM,GAAG,EAAE,OAAO,OAAO;AAAA,EAExD,SAAS,IAAI,EAAG,IAAI,aAAa,UAAU,IAAI,cAAc,QAAQ,KAAK;AAAA,IACzE,MAAM,OAAO,aAAa;AAAA,IAE1B,MAAM,gBAAgB,KAAK,MAAM,sBAAsB;AAAA,IACvD,IAAI,eAAe;AAAA,MAClB,OAAO,cAAc,MAAM,cAAc,MAAM,CAAC,EAAE,KAAK,GAAG;AAAA,MAC1D;AAAA,IACD;AAAA,IAEA,MAAM,eAAe,KAAK,MAAM,gBAAgB;AAAA,IAChD,IAAI,cAAc;AAAA,MACjB,OAAO,aAAa,MAAM,cAAc;AAAA,IACzC;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAAA,IApKF,2BACA;AAAA;AAAA,EADA,4BAA4B;AAAA,EAC5B,0BAA0B;AAAA;;;ACChC,eAAsB,uBAAuB,CAC5C,UACA,WACA,UACkB;AAAA,EAClB,IAAI,CAAC,UAAU,SAAS;AAAA,IACvB,OAAO;AAAA,EACR;AAAA,EAEA,MAAM,QAAQ,SAAS,SAAS;AAAA,EAChC,MAAM,SAAS,SAAS,UAAU;AAAA,EAGlC,MAAM,SAAS,MAAM,mBAAmB,UAAU,SAAS;AAAA,EAC3D,MAAM,aAAa,WAAW,QAAQ,SAAS;AAAA,EAE/C,IAAI,CAAC,YAAY;AAAA,IAChB,OAAO;AAAA,EACR;AAAA,EAIA,IAAI;AAAA,EACJ,IAAI,aAAa,OAAO,aAAa,IAAI;AAAA,IACxC,cAAc;AAAA,EACf,EAAO,SAAI,SAAS,SAAS,GAAG,GAAG;AAAA,IAClC,cAAc,gBAAgB;AAAA,EAC/B,EAAO;AAAA,IACN,cAAc,gBAAgB;AAAA;AAAA,EAI/B,MAAM,UAAU,SAAS;AAAA,EACzB,IAAI,SAAS;AAAA,IAEZ,MAAM,eAAe,QAAQ,QAAQ,OAAO,EAAE;AAAA,IAC9C,cAAc,GAAG,eAAe;AAAA,EACjC,EAAO;AAAA,IACN,QAAQ,KACP,uGACD;AAAA;AAAA,EAKD,OAAO,sCAAsC;AAAA,2CACH;AAAA,4CACC;AAAA,sCACN;AAAA;AAAA;AAAA,EArDtC;AAAA;;;ACYA,eAAe,oBAAoB,CAClC,WACA,cACA,aACqC;AAAA,EAErC,MAAM,cAAc,WAAW;AAAA,EAC/B,MAAM,aAAa,WAAW;AAAA,EAE9B,IAAI,gBAAgB,aAAa,eAAe,WAAW;AAAA,IAC1D,OAAO,EAAE,MAAM,aAAa,KAAK,WAAW;AAAA,EAC7C;AAAA,EAGA,IAAI;AAAA,IACH,MAAM,MAAM,MAAM,cAAc,cAAc,WAAW;AAAA,IACzD,OAAO;AAAA,MACN,MAAO,KAAa;AAAA,MACpB,KAAM,KAAa;AAAA,IACpB;AAAA,IACC,MAAM;AAAA,IACP,OAAO,CAAC;AAAA;AAAA;AAOV,SAAS,oBAAoB,CAAC,SAAiB,UAA0B;AAAA,EAExE,MAAM,eAAe,QAAQ,QAAQ,OAAO,EAAE;AAAA,EAE9C,MAAM,gBAAgB,SAAS,MAAM,GAAG,EAAE;AAAA,EAE1C,MAAM,iBACL,kBAAkB,MAAM,MAAM,cAAc,QAAQ,OAAO,EAAE;AAAA,EAC9D,MAAM,eAAe,GAAG,eAAe;AAAA,EACvC,OAAO,+BAA+B;AAAA;AAMvC,SAAS,aAAa,CAAC,SAAiB,UAA0B;AAAA,EAEjE,MAAM,eAAe,QAAQ,QAAQ,OAAO,EAAE;AAAA,EAE9C,MAAM,gBAAgB,SAAS,MAAM,GAAG,EAAE;AAAA,EAE1C,MAAM,iBACL,kBAAkB,MAAM,MAAM,cAAc,QAAQ,OAAO,EAAE;AAAA,EAC9D,MAAM,QAAQ,GAAG,eAAe;AAAA,EAChC,OAAO,oCAAoC;AAAA;AAM5C,SAAS,oBAAoB,CAAC,UAA6B;AAAA,EAC1D,MAAM,OAAiB,CAAC;AAAA,EAExB,IAAI,SAAS,UAAU;AAAA,IACtB,KAAK,KACJ,0CAA0C,YAAW,SAAS,QAAQ,OACvE;AAAA,EACD;AAAA,EAEA,IAAI,SAAS,QAAQ;AAAA,IACpB,KAAK,KACJ,uCAAuC,YAAW,SAAS,MAAM,OAClE;AAAA,EACD;AAAA,EAEA,IAAI,SAAS,aAAa;AAAA,IAEzB,MAAM,SAAS,SAAS,YAAY,WAAW,GAAG,IAC/C,SAAS,cACT,IAAI,SAAS;AAAA,IAChB,KAAK,KAAK,sCAAsC,YAAW,MAAM,OAAO;AAAA,EACzE;AAAA,EAEA,OAAO,KAAK,SAAS,KAAK,KAAK;AAAA,CAAI,IAAI;AAAA;AAGxC,SAAS,WAAU,CAAC,OAAuB;AAAA,EAC1C,OAAO,MACL,QAAQ,MAAM,OAAO,EACrB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,QAAQ,EACtB,QAAQ,MAAM,OAAO;AAAA;AAMxB,eAAsB,mBAAmB,CACxC,UACA,WACA,KACA,aACA,uBACA,eACA,UACA,SACA,eACA,SACA,aAC0B;AAAA,EAC1B,IAAI,cAAc;AAAA,EAClB,IAAI;AAAA,EACJ,IAAI,iBAAiB;AAAA,EAGrB,MAAM,sBACL,UACA,WACA,KACA,aACA,CAAC,SAAS;AAAA,IACT,eAAe;AAAA,KAEhB,CAAC,SAAS;AAAA,IACT,IAAI,CAAC;AAAA,MAAU,WAAW;AAAA,KAE3B,UACA,WACD;AAAA,EAIA,MAAM,0BACL,kBAAkB,SAAS,YAAY;AAAA,EACxC,IAAI,yBAAyB;AAAA,IAC5B,MAAM,eAAe,qBAAqB,SAAS,QAAQ;AAAA,IAC3D,MAAM,WAAW,cAAc,SAAS,QAAQ;AAAA,IAChD,eAAe;AAAA,EAAK;AAAA,IACpB,eAAe;AAAA,EAAK;AAAA,EACrB;AAAA,EAGA,IAAI,UAAU;AAAA,IACb,MAAM,eAAe,qBAAqB,QAAQ;AAAA,IAClD,IAAI,cAAc;AAAA,MACjB,eAAe;AAAA,EAAK;AAAA,IACrB;AAAA,EACD;AAAA,EAGA,IAAI;AAAA,IACH,MAAM,aAAa,MAAM,wBACxB,UACA,WACA,aACD;AAAA,IACA,IAAI,YAAY;AAAA,MACf,eAAe;AAAA,EAAK;AAAA,IACrB;AAAA,IACC,OAAO,OAAO;AAAA,IACf,QAAQ,KAAK,oDAAoD,KAAK;AAAA;AAAA,EAIvE,uBACC,UACA,CAAC,SAAS;AAAA,IACT,eAAe;AAAA,KAEhB,CAAC,SAAS;AAAA,IACT,WAAW;AAAA,KAEZ,UACA,WACD;AAAA,EAGA,MAAM,cAAc,MAAM,qBACzB,UACA,WACA,KACA,aACA,gBACA,SACA,UACA,WACD;AAAA,EACA,eAAe,YAAY;AAAA,EAC3B,IAAI,YAAY;AAAA,IAAM,WAAW,YAAY;AAAA,EAC7C,iBAAiB,YAAY;AAAA,EAE7B,OAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW,YAAY;AAAA,EACxB;AAAA;AAGD,eAAe,wBAAwB,CACtC,QACA,WACA,aACA,SACA,SACA,UACA,aACgB;AAAA,EAChB,IAAI,OAAO,QAAQ,SAAS;AAAA,IAAU;AAAA,EAEtC,IAAI;AAAA,IACH,MAAM,MAAM,KAAK,WAAW,UAAU,OAAO,OAAO,IAAI,CAAC;AAAA,IACzD,QAAQ,MAAM,QAAQ,MAAM,qBAAqB,QAAQ,KAAK,WAAW;AAAA,IAEzE,IAAI;AAAA,MAAM,QAAQ,kBAAkB,MAAM,UAAU,WAAW,CAAC;AAAA,IAEhE,IAAI,KAAK;AAAA,MAER,MAAM,UAAU,eACf,KACA,WACA,UACA,WACA,MACA,WACD;AAAA,MACA,IAAI;AAAA,QAAS,QAAQ;AAAA,EAAK,SAAS;AAAA,MAEnC,MAAM,OAAO,eAAe,GAAG;AAAA,MAC/B,IAAI;AAAA,QAAM,QAAQ,IAAI;AAAA,IACvB;AAAA,IACC,MAAM;AAAA;AAKT,eAAe,qBAAqB,CACnC,UACA,WACA,KACA,aACA,SACA,SACA,UACA,aACgB;AAAA,EAChB,IAAI;AAAA,IAEH,MAAM,IAAI,MAAM,iBAAiB,KAAK,WAAW;AAAA,IACjD,MAAM,kBAAkB,mBAAmB,UAAU,GAAG,OAAO;AAAA,IAE/D,WAAW,UAAU,iBAAiB;AAAA,MACrC,MAAM,yBACL,QACA,WACA,aACA,SACA,SACA,UACA,WACD;AAAA,IACD;AAAA,IACC,MAAM;AAAA;AAKT,SAAS,sBAAsB,CAC9B,UACA,SACA,SACA,UACA,aACO;AAAA,EACP,IAAI;AAAA,IACH,MAAM,QAAQ,SAAS,MAAM,GAAG,EAAE,OAAO,OAAO;AAAA,IAChD,IAAI,MAAM,SAAS;AAAA,MAAG;AAAA,IAEtB,MAAM,MAAM,GAAG,MAAM,MAAM,MAAM;AAAA,IACjC,MAAM,IAAI;AAAA,IACV,MAAM,MAAM,EAAE,0BAA0B;AAAA,IAIxC,MAAM,OAAQ,KAAa;AAAA,IAC3B,MAAM,MAAM,KAAK;AAAA,IAEjB,QAAQ,kBAAkB,MAAM,UAAU,WAAW,CAAC;AAAA,IAGtD,MAAM,UAAU,eACf,KACA,WACA,UACA,WACA,MACA,WACD;AAAA,IACA,IAAI;AAAA,MAAS,QAAQ;AAAA,EAAK,SAAS;AAAA,IAEnC,MAAM,OAAO,eAAe,GAAG;AAAA,IAC/B,IAAI;AAAA,MAAM,QAAQ,IAAI;AAAA,IACrB,MAAM;AAAA;AAUT,SAAS,yBAAyB,CAAC,UAAmC;AAAA,EACrE,IAAI;AAAA,IACH,MAAM,QAAQ,SAAS,MAAM,GAAG,EAAE,OAAO,OAAO;AAAA,IAChD,IAAI,MAAM,SAAS;AAAA,MAAG;AAAA,IAEtB,MAAM,OAAO,MAAM;AAAA,IACnB,MAAM,MAAM,GAAG,MAAM,MAAM;AAAA,IAC3B,MAAM,IAAI;AAAA,IACV,MAAM,MAAM,EAAE,0BAA0B;AAAA,IAExC,MAAM,OAAO,KAAK;AAAA,IAClB,IAAI,CAAC;AAAA,MAAM;AAAA,IAGX,IAAI,CAAC,KAAK,MAAM;AAAA,MACf,OAAO,KAAK,MAAM,KAAK;AAAA,IACxB;AAAA,IAEA,OAAO;AAAA,IACN,MAAM;AAAA,IACP;AAAA;AAAA;AAKF,eAAe,2BAA2B,CACzC,UACA,WACA,GACA,aACA,gBACA,SACA,UACA,aAME;AAAA,EACF,MAAM,eAAe,SAAS,MAAM,GAAG,EAAE;AAAA,EACzC,MAAM,QACL,OAAO,EAAE,eAAe,aAAa,EAAE,WAAW,YAAY,IAAI;AAAA,EACnE,MAAM,IAAI,OAAO;AAAA,EAEjB,IAAI,CAAC,GAAG;AAAA,IACP,OAAO,EAAE,MAAM,IAAI,gBAAgB,kBAAkB,IAAI;AAAA,EAC1D;AAAA,EAEA,IAAI,KAAK,OAAO,EAAE,SAAS,UAAU;AAAA,IACpC,IAAI;AAAA,MACH,MAAM,MAAM,KAAK,WAAW,UAAU,OAAO,EAAE,IAAI,CAAC;AAAA,MACpD,QAAQ,MAAM,QAAQ,MAAM,qBAAqB,GAAG,KAAK,WAAW;AAAA,MAEpE,IAAI,OAAO;AAAA,MACX,IAAI;AAAA,QAAM,QAAQ,kBAAkB,MAAM,UAAU,WAAW;AAAA,MAE/D,IAAI,KAAK;AAAA,QAGR,IAAI,YACH,WAAW,OAAO,YAAY,WAC1B,QAAoC,YACrC;AAAA,QAGJ,IAAI,aAAa,OAAO,cAAc,YAAY,UAAU,WAAW;AAAA,UACtE,IAAI;AAAA,YACH,YAAY,MAAO;AAAA,YAClB,OAAO,KAAK;AAAA,YACb,QAAQ,MACP,qEACA,GACD;AAAA,YACA,YAAY;AAAA;AAAA,QAEd;AAAA,QAIA,MAAM,cAAc,0BAA0B,YAAY;AAAA,QAC1D,MAAM,WAAW,eAAe;AAAA,QAGhC,MAAM,UAAU,eACf,KACA,WACA,UACA,MACA,UACA,WACD;AAAA,QACA,IAAI;AAAA,UAAS,QAAQ;AAAA,EAAK;AAAA,QAE1B,OAAO;AAAA,UACN;AAAA,UACA,MAAM,eAAe,GAAG;AAAA,UACxB;AAAA,UACA,WAAW;AAAA,QACZ;AAAA,MACD;AAAA,MAEA,OAAO,EAAE,MAAM,eAAe;AAAA,MAC7B,MAAM;AAAA,EAGT;AAAA,EAEA,OAAO,EAAE,MAAM,IAAI,eAAe;AAAA;AAGnC,eAAe,oBAAoB,CAClC,UACA,WACA,KACA,aACA,uBACA,SACA,UACA,aAME;AAAA,EACF,IAAI,OAAO;AAAA,EACX,IAAI;AAAA,EACJ,IAAI,iBAAiB;AAAA,EACrB,IAAI;AAAA,EAEJ,IAAI;AAAA,IACH,MAAM,IAAI,MAAM,iBAAiB,KAAK,WAAW;AAAA,IACjD,IAAI,CAAC,GAAG;AAAA,MACP,OAAO,EAAE,MAAM,MAAM,gBAAgB,kBAAkB,IAAI;AAAA,IAC5D;AAAA,IAEA,MAAM,eAAe,SAAS,MAAM,GAAG,EAAE;AAAA,IACzC,MAAM,QACL,OAAO,EAAE,eAAe,aAAa,EAAE,WAAW,YAAY,IAAI;AAAA,IACnE,MAAM,IAAI,OAAO;AAAA,IAEjB,IAAI,CAAC,GAAG;AAAA,MACP,iBAAiB,kBAAkB;AAAA,IACpC;AAAA,IAEA,IAAI,KAAK,OAAO,EAAE,SAAS,UAAU;AAAA,MACpC,MAAM,SAAS,MAAM,4BACpB,UACA,WACA,GACA,aACA,gBACA,SACA,UACA,WACD;AAAA,MAEA,OAAO,OAAO;AAAA,MACd,OAAO,OAAO;AAAA,MACd,iBAAiB,OAAO;AAAA,MACxB,YAAY,OAAO;AAAA,IACpB,EAAO;AAAA,MAEN,QAAQ,MAAM,wBACb,UACA,WACA,GACA,aACA,CAAC,MAAM;AAAA,QACN,OAAO;AAAA,SAER,UACA,WACD;AAAA;AAAA,IAEA,MAAM;AAAA,EAIR,OAAO,EAAE,MAAM,MAAM,gBAAgB,UAAU;AAAA;AAGhD,SAAS,qBAAqB,CAAC,MAAa,UAAmC;AAAA,EAC9E,IAAI;AAAA,EACJ,IAAI,UAAU;AAAA,EAEd,WAAW,MAAM,MAAM;AAAA,IACtB,MAAM,MAAM,OAAQ,IAAY,WAAW,GAAG;AAAA,IAC9C,IAAI,CAAC,SAAS,WAAW,GAAG;AAAA,MAAG;AAAA,IAE/B,MAAM,MAAM,IAAI,MAAM,GAAG,EAAE,OAAO,OAAO,EAAE;AAAA,IAC3C,IAAI,OAAO,SAAS;AAAA,MACnB,UAAU;AAAA,MACV,SAAS;AAAA,IACV;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAGR,eAAe,uBAAuB,CACrC,UACA,WACA,cACA,aACA,SACA,UACA,aACkB;AAAA,EAClB,IAAI,OAAO;AAAA,EAEX,IAAI;AAAA,IACH,MAAM,OAAO,cAAc;AAAA,IAC3B,IAAI,CAAC,MAAM,QAAQ,IAAI;AAAA,MAAG,OAAO;AAAA,IAEjC,MAAM,SAAS,sBAAsB,MAAM,QAAQ;AAAA,IAEnD,IAAI,UAAU,OAAQ,OAAe,SAAS,UAAU;AAAA,MACvD,MAAM,MAAM,KAAK,WAAW,UAAU,OAAQ,OAAe,IAAI,CAAC;AAAA,MAClE,QAAQ,MAAM,QAAQ,MAAM,qBAC3B,QACA,KACA,WACD;AAAA,MAEA,IAAI;AAAA,QAAM,QAAQ,kBAAkB,MAAM,UAAU,WAAW;AAAA,MAG/D,MAAM,UAAU,eACf,KACA,WACA,UACA,WACA,MACA,WACD;AAAA,MACA,IAAI;AAAA,QAAS,QAAQ;AAAA,EAAK;AAAA,MAE1B,MAAM,OAAO,eAAe,GAAG;AAAA,MAC/B,IAAI;AAAA,QAAM,QAAQ,IAAI;AAAA,IACvB;AAAA,IACC,MAAM;AAAA,EAIR,OAAO;AAAA;AAMR,SAAS,kBAAkB,CAAC,MAAkC;AAAA,EAC7D,MAAM,QAAQ,KAAK,MAAM,8BAA8B;AAAA,EACvD,IAAI,QAAQ;AAAA,IAAI,OAAO,aAAa,MAAM,GAAG,KAAK,CAAC;AAAA,EACnD;AAAA;AAOD,SAAS,wBAAwB,CAAC,MAAkC;AAAA,EAEnE,IAAI,QAAQ,KAAK,MAChB,kEACD;AAAA,EACA,IAAI,QAAQ;AAAA,IAAI,OAAO,aAAa,MAAM,GAAG,KAAK,CAAC;AAAA,EAGnD,QAAQ,KAAK,MACZ,kEACD;AAAA,EACA,IAAI,QAAQ;AAAA,IAAI,OAAO,aAAa,MAAM,GAAG,KAAK,CAAC;AAAA,EAEnD;AAAA;AAMD,SAAS,YAAY,CAAC,OAAuB;AAAA,EAC5C,OAAO,MACL,QAAQ,WAAW,GAAG,EACtB,QAAQ,UAAU,GAAG,EACrB,QAAQ,SAAS,GAAG,EACpB,QAAQ,SAAS,GAAG,EACpB,QAAQ,UAAU,GAAG;AAAA;AAMxB,SAAS,UAAU,CAAC,MAAc,UAA2B;AAAA,EAE5D,MAAM,YAAY,IAAI,OACrB,kCAAkC,gBAClC,GACD;AAAA,EACA,MAAM,oBAAoB,IAAI,OAC7B,4DAA4D,gBAC5D,GACD;AAAA,EACA,OAAO,UAAU,KAAK,IAAI,KAAK,kBAAkB,KAAK,IAAI;AAAA;AAM3D,SAAS,qBAAqB,CAAC,MAAc,UAA8B;AAAA,EAC1E,MAAM,QAAQ,mBAAmB,IAAI;AAAA,EACrC,MAAM,cAAc,yBAAyB,IAAI;AAAA,EAEjD,MAAM,iBAA2B,CAAC;AAAA,EAGlC,IAAI,SAAS,CAAC,WAAW,MAAM,UAAU,GAAG;AAAA,IAC3C,eAAe,KACd,sCAAsC,YAAW,KAAK,OACvD;AAAA,EACD;AAAA,EAGA,MAAM,mBAAmB,eAAe,UAAU;AAAA,EAClD,IAAI,oBAAoB,CAAC,WAAW,MAAM,gBAAgB,GAAG;AAAA,IAC5D,eAAe,KACd,4CAA4C,YAAW,gBAAgB,OACxE;AAAA,EACD;AAAA,EAGA,IAAI,SAAS,CAAC,WAAW,MAAM,eAAe,GAAG;AAAA,IAChD,eAAe,KACd,uCAAuC,YAAW,KAAK,OACxD;AAAA,EACD;AAAA,EAGA,IAAI,oBAAoB,CAAC,WAAW,MAAM,qBAAqB,GAAG;AAAA,IACjE,eAAe,KACd,6CAA6C,YAAW,gBAAgB,OACzE;AAAA,EACD;AAAA,EAGA,IAAI,CAAC,WAAW,MAAM,SAAS,GAAG;AAAA,IACjC,MAAM,SAAS,UAAU,eAAe;AAAA,IACxC,eAAe,KACd,qCAAqC,YAAW,MAAM,OACvD;AAAA,EACD;AAAA,EAGA,IAAI,CAAC,WAAW,MAAM,cAAc,GAAG;AAAA,IACtC,MAAM,cAAc,UAAU,eAAe;AAAA,IAC7C,eAAe,KACd,sCAAsC,iBACvC;AAAA,EACD;AAAA,EAEA,OAAO,eAAe,SAAS,IAAI;AAAA,EAAK,eAAe,KAAK;AAAA,CAAI,MAAM;AAAA;AAGvE,SAAS,cAAc,CACtB,KACA,MACA,UACA,cACA,MACA,aACS;AAAA,EACT,IAAI,CAAC;AAAA,IAAK,OAAO;AAAA,EAEjB,IAAI,cAAc;AAAA,EAGlB,IAAI,OAAO,IAAI,SAAS,YAAY;AAAA,IACnC,IAAI;AAAA,MACH,MAAM,SAAS,IAAI,KAAK,EAAE,MAAM,KAAK,CAA0B;AAAA,MAC/D,IAAI,OAAO,WAAW;AAAA,QAAU,cAAc;AAAA,MACzC,SAAI,MAAM,QAAQ,MAAM;AAAA,QAC5B,cAAc,OAAQ,OAAoB,KAAK;AAAA,CAAI,CAAC;AAAA,MACpD,OAAO,KAAK;AAAA,MACb,QAAQ,MAAM,iDAAiD,GAAG;AAAA,MAClE,OAAO;AAAA;AAAA,EAET,EAAO,SAAI,OAAO,IAAI,SAAS,UAAU;AAAA,IACxC,cAAc,IAAI;AAAA,EACnB,EAAO,SAAI,MAAM,QAAQ,IAAI,IAAI,GAAG;AAAA,IACnC,cAAc,OAAO,IAAI,KAAK,KAAK;AAAA,CAAI,CAAC;AAAA,EACzC;AAAA,EAEA,IAAI,CAAC;AAAA,IAAa,OAAO;AAAA,EAGzB,IAAI,aAAa;AAAA,IAChB,cAAc,uBAAuB,aAAa,WAAW;AAAA,EAC9D;AAAA,EAIA,MAAM,eAAe,eAClB,GAAG;AAAA,EAAiB,gBACpB;AAAA,EACH,MAAM,mBAAmB,sBAAsB,cAAc,QAAQ;AAAA,EAErE,OAAO,cAAc;AAAA;AAGtB,SAAS,cAAc,CAAC,KAA0C;AAAA,EACjE,IAAI,CAAC;AAAA,IAAK;AAAA,EAEV,IAAI,OAAO,IAAI,SAAS,YAAY,IAAI,KAAK,KAAK,GAAG;AAAA,IACpD,OAAO,IAAI,KAAK,KAAK;AAAA,EACtB;AAAA,EAEA;AAAA;AAOD,SAAS,sBAAsB,CAC9B,aACA,aACS;AAAA,EACT,IAAI,SAAS;AAAA,EAGb,MAAM,aAAa,OAAO,MAAM,8BAA8B;AAAA,EAC9D,IAAI,aAAa,IAAI;AAAA,IACpB,MAAM,gBAAgB,WAAW,GAAG,KAAK;AAAA,IACzC,IAAI,iBAAiB,CAAC,cAAc,SAAS,WAAW,GAAG;AAAA,MAC1D,MAAM,WAAW,GAAG,gBAAgB;AAAA,MACpC,SAAS,OAAO,QACf,gCACA,UAAU,YAAW,aAAa,QAAQ,CAAC,WAC5C;AAAA,MAGA,MAAM,eACL;AAAA,MACD,SAAS,OAAO,QAAQ,cAAc,CAAC,OAAO,UAAU,aAAa;AAAA,QACpE,MAAM,UAAU,YAAY;AAAA,QAC5B,IAAI,WAAW,CAAC,QAAQ,SAAS,WAAW,GAAG;AAAA,UAC9C,MAAM,aAAa,GAAG,UAAU;AAAA,UAChC,OAAO,sCAAsC,YAAW,aAAa,UAAU,CAAC;AAAA,QACjF;AAAA,QACA,OAAO;AAAA,OACP;AAAA,MAGD,MAAM,oBACL;AAAA,MACD,SAAS,OAAO,QACf,mBACA,CAAC,OAAO,UAAU,aAAa;AAAA,QAC9B,MAAM,UAAU,YAAY;AAAA,QAC5B,IAAI,WAAW,CAAC,QAAQ,SAAS,WAAW,GAAG;AAAA,UAC9C,MAAM,aAAa,GAAG,UAAU;AAAA,UAChC,OAAO,uCAAuC,YAAW,aAAa,UAAU,CAAC;AAAA,QAClF;AAAA,QACA,OAAO;AAAA,OAET;AAAA,IACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAAA;AAAA,EAxxBR;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;;;ACJA,oBAAS,kBAAS;AAQlB,eAAsB,oBAAoB,CACzC,UACA,WACA,KACA,aACyB;AAAA,EACzB,IAAI,YAAY;AAAA,EAChB,IAAI,kBAAkB;AAAA,EACtB,IAAI;AAAA,EAEJ,IAAI;AAAA,IACH,MAAM,WAAW,SAAS,MAAM,GAAG,EAAE,GAAG,MAAM,GAAG,EAAE;AAAA,IACnD,MAAM,QAAQ,SAAS,MAAM,GAAG,EAAE,OAAO,OAAO;AAAA,IAEhD,IAAI,MAAM,SAAS,GAAG;AAAA,MACrB,OAAO,EAAE,WAAW,gBAAgB;AAAA,IACrC;AAAA,IAEA,MAAM,aAAa,MAAM;AAAA,IACzB,MAAM,OAAO,MAAM;AAAA,IAGnB,IAAI,CAAE,MAAM,oBAAoB,WAAW,UAAU,GAAI;AAAA,MACxD,OAAO,EAAE,WAAW,gBAAgB;AAAA,IACrC;AAAA,IAGA,MAAM,aAAa,MAAM,sBACxB,YACA,MACA,WACA,KACA,WACD;AAAA,IAEA,IAAI,CAAC,YAAY;AAAA,MAChB,iBAAiB;AAAA,MACjB,OAAO,EAAE,WAAW,iBAAiB,eAAe;AAAA,IACrD;AAAA,IAEA,MAAM,MAAM,GAAG,cAAc;AAAA,IAC7B,aAAa;AAAA,kCAAqC;AAAA,IAKlD,mBAAmB;AAAA,6DACwC,oBAAoB;AAAA;AAAA,IAE9E,MAAM;AAAA,EAIR,OAAO,EAAE,WAAW,iBAAiB,eAAe;AAAA;AAGrD,eAAe,mBAAmB,CACjC,WACA,YACmB;AAAA,EACnB,IAAI;AAAA,IAEH,MAAM,eAAe,UAAU,SAAS,UAAU;AAAA,IAElD,IAAI,cAAc;AAAA,MAEjB,MAAM,iBAAiB,KAAK,WAAW,eAAe,GAAG,eAAe;AAAA,MACxE,IAAI;AAAA,QACH,MAAM,KAAI,MAAM,MAAK,cAAc;AAAA,QACnC,OAAO,IAAG,OAAO,KAAK;AAAA,QACrB,MAAM;AAAA,QACP,OAAO;AAAA;AAAA,IAET;AAAA,IAGA,MAAM,WAAW,KAAK,WAAW,UAAU,YAAY,SAAS;AAAA,IAChE,MAAM,IAAI,MAAM,MAAK,QAAQ;AAAA,IAC7B,OAAO,OAAO,GAAG,gBAAgB,aAAa,EAAE,YAAY,IAAI;AAAA,IAC/D,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAIT,eAAe,mBAAmB,CACjC,UACA,YACkB;AAAA,EAClB,IAAI,SAAS,WAAW;AAAA,EACxB,IAAI,UAAU;AAAA,EAEd,WAAW,iBAAiB,YAAY;AAAA,IACvC,IAAI;AAAA,MACH,MAAM,IAAI,MAAM,MAAK,KAAK,UAAU,aAAa,CAAC;AAAA,MAClD,IAAI,EAAE,WAAW,SAAS;AAAA,QACzB,UAAU,EAAE;AAAA,QACZ,SAAS;AAAA,MACV;AAAA,MACC,MAAM;AAAA,EAGT;AAAA,EAEA,OAAO;AAAA;AAGR,eAAe,qBAAqB,CACnC,YACA,MACA,WACA,KACA,aACyB;AAAA,EAEzB,IAAI;AAAA,IACH,MAAM,eAAe,KAAK,KAAK,YAAY,YAAY;AAAA,IACvD,MAAM,MAAM,MAAM,cAAc,cAAc,WAAW;AAAA,IACzD,MAAM,MAAM,KAAK;AAAA,IAGjB,MAAM,QAAQ,OAAO,QAAQ,aAAa,IAAI,YAAY,IAAI,IAAI;AAAA,IAClE,MAAM,YAAa,OAAe;AAAA,IAElC,IAAI,WAAW,SAAS,KAAK,GAAG;AAAA,MAC/B,OAAO;AAAA,IACR;AAAA,IACC,MAAM;AAAA,EAKR,IAAI;AAAA,IACH,MAAM,WAAW,KAAK,KAAK,YAAY,UAAU,UAAU;AAAA,IAC3D,MAAM,QAAQ,MAAM,SAAQ,QAAQ;AAAA,IACpC,MAAM,aAAa,MAAM,OACxB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,KAAK,EAAE,SAAS,KAAK,CACpD;AAAA,IAEA,IAAI,WAAW,QAAQ;AAAA,MACtB,MAAM,SAAS,MAAM,oBAAoB,UAAU,UAAU;AAAA,MAC7D,OAAO,IAAI,KAAK,YAAY,UAAU,YAAY,MAAM,EAAE,QAAQ,QAAQ,GAAG;AAAA,IAC9E;AAAA,IACC,MAAM;AAAA,EAKR,IAAI;AAAA,IACH,MAAM,MAAM,KAAK,WAAW,UAAU,YAAY,WAAW,GAAG,UAAU;AAAA,IAC1E,MAAM,KAAK,KAAK,WAAW,UAAU,YAAY,WAAW,GAAG,SAAS;AAAA,IAExE,IAAI,MAAM,IAAI,KAAK,GAAG,EAAE,OAAO,GAAG;AAAA,MACjC,OAAO,IAAI,KAAK,UAAU,YAAY,WAAW,GAAG,UAAU,EAAE,QAAQ,QAAQ,GAAG;AAAA,IACpF;AAAA,IACA,IAAI,MAAM,IAAI,KAAK,EAAE,EAAE,OAAO,GAAG;AAAA,MAChC,OAAO,IAAI,KAAK,UAAU,YAAY,WAAW,GAAG,SAAS,EAAE,QAAQ,QAAQ,GAAG;AAAA,IACnF;AAAA,IACC,MAAM;AAAA,EAIR,OAAO;AAAA;AAMD,SAAS,sBAAsB,GAAS;AAAA,EAC9C,IAAI;AAAA,IACF,WAAmB,2BAA2B,CAAC;AAAA,IAC/C,MAAM;AAAA;AAQF,SAAS,mBAAmB,CAAC,WAA2B;AAAA,EAC9D,IAAI;AAAA,IACH,IAAI,OAAO,cAAc,YAAY,UAAU,SAAS,KAAK,GAAG;AAAA,MAC/D,OAAO;AAAA,kCAAqC;AAAA,IAC7C;AAAA,IACC,MAAM;AAAA,EAGR,OAAO;AAAA;AAAA;AAAA,EAjMR;AAAA;;;ACGO,SAAS,mBAAmB,CAAC,MAAsB;AAAA,EACzD,OAAO,KACL,QAAQ,MAAM,SAAS,EACvB,QAAQ,MAAM,SAAS,EACvB,QAAQ,MAAM,SAAS;AAAA;;;ACFnB,SAAS,sBAAsB,CACrC,QACA,SACS;AAAA,EACT,MAAM,aAAa,oBAAoB,KAAK,UAAU,MAAM,CAAC;AAAA,EAC7D,MAAM,cAAc,oBAAoB,KAAK,UAAU,OAAO,CAAC;AAAA,EAC/D,OAAO,iLAAiL,uIAAuI;AAAA;AAOhU,SAAS,cAAc,CAAC,KAAU,OAAiB,KAAgB;AAAA,EAClE,IAAI,aAAa;AAAA,EACjB,IAAI,aAAa;AAAA,EAEjB,SAAS,IAAI,EAAG,IAAI,MAAM,SAAS,GAAG,KAAK;AAAA,IAC1C,MAAM,MAAM,MAAM;AAAA,IAClB,aAAa,aAAa;AAAA,IAC1B,IAAI,eAAe,WAAW;AAAA,MAC7B;AAAA,IACD;AAAA,IACA,IAAI,CAAC,WAAW;AAAA,MAAM,WAAW,OAAO,CAAC;AAAA,IACzC,aAAa,WAAW;AAAA,EACzB;AAAA,EAEA,MAAM,UAAU,MAAM,MAAM,SAAS;AAAA,EACrC,IAAI,cAAc,WAAW,aAAa,WAAW;AAAA,IACpD,WAAW,WAAW,WAAW;AAAA,EAClC;AAAA;AAGD,SAAS,UAAU,CAAC,MAAW,QAA0B;AAAA,EACxD,MAAM,SAAc,CAAC;AAAA,EACrB,MAAM,YAAY,CAAC,cAAc,QAAQ,QAAQ,QAAQ,QAAQ;AAAA,EAEjE,WAAW,SAAS,WAAW;AAAA,IAC9B,IAAI,KAAK,WAAW,WAAW;AAAA,MAC9B,OAAO,SAAS,KAAK;AAAA,IACtB;AAAA,EACD;AAAA,EAEA,WAAW,SAAS,QAAQ;AAAA,IAC3B,MAAM,QAAQ,MAAM,MAAM,GAAG;AAAA,IAC7B,eAAe,MAAM,OAAO,MAAM;AAAA,EACnC;AAAA,EAEA,OAAO;AAAA;AAYR,SAAS,oBAAoB,CAC5B,MACA,MACA,YACY;AAAA,EACZ,IACC,CAAC,OAAO,SAAS,KAAK,KAAK,KAC3B,KAAK,SAAS,KACd,KAAK,SAAS,UACb;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EAGA,MAAM,eAAe,KAAK,SAAS,IAAI;AAAA,EACvC,MAAM,kBAAkB,aAAa,OAAO;AAAA,EAE5C,IAAI,iBAAiB;AAAA,IAEpB,MAAM,UAAqB,CAAC;AAAA,IAC5B,MAAM,aAAwB,CAAC;AAAA,IAE/B,WAAW,QAAQ,MAAM;AAAA,MACxB,MAAM,MAAM;AAAA,MACZ,IAAI,IAAI,QAAQ,aAAa,IAAI,IAAI,IAAI,GAAG;AAAA,QAC3C,QAAQ,KAAK,IAAI;AAAA,MAClB,EAAO;AAAA,QACN,WAAW,KAAK,IAAI;AAAA;AAAA,IAEtB;AAAA,IAGA,IAAI,oBAA+B;AAAA,IACnC,IAAI,KAAK,SAAS,aAAa;AAAA,MAC9B,oBAAoB,CAAC,GAAG,UAAU,EAChC,KAAK,WAAW,MAAM,CAAC,EACvB,MAAM,GAAG,KAAK,KAAK;AAAA,IACtB,EAAO,SAAI,KAAK,SAAS,YAAY;AAAA,MACpC,oBAAoB,CAAC,GAAG,UAAU,EAChC,KAAK,WAAW,KAAK,CAAC,EACtB,MAAM,GAAG,KAAK,KAAK;AAAA,IACtB,EAAO,SAAI,KAAK,SAAS,QAAQ;AAAA,MAChC,oBAAoB,WAAW,MAAM,GAAG,KAAK,KAAK;AAAA,IACnD;AAAA,IAGA,OAAO,CAAC,GAAG,SAAS,GAAG,iBAAiB;AAAA,EACzC;AAAA,EAGA,IAAI,KAAK,SAAS,aAAa;AAAA,IAC9B,OAAO,CAAC,GAAG,IAAI,EAAE,KAAK,WAAW,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,KAAK;AAAA,EAC9D;AAAA,EACA,IAAI,KAAK,SAAS,YAAY;AAAA,IAC7B,OAAO,CAAC,GAAG,IAAI,EAAE,KAAK,WAAW,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,KAAK;AAAA,EAC7D;AAAA,EACA,IAAI,KAAK,SAAS,QAAQ;AAAA,IACzB,OAAO,KAAK,MAAM,GAAG,KAAK,KAAK;AAAA,EAChC;AAAA,EAEA,OAAO;AAAA;AAGR,SAAS,mBAAmB,CAC3B,KACA,QACA,OACY;AAAA,EACZ,IAAI,WAAW,SAAS,EAAE,kBAAkB,MAAM;AAAA,IACjD,OAAO;AAAA,EACR;AAAA,EAEA,MAAM,WAAW,SAAS,IAAI;AAAA,EAE9B,OAAO,IAAI,IAAI,CAAC,SAAkB;AAAA,IACjC,MAAM,MAAM;AAAA,IAEZ,IAAI,IAAI,QAAQ,SAAS,IAAI,IAAI,IAAI,GAAG;AAAA,MACvC,OAAO;AAAA,IACR;AAAA,IACA,OAAO,WAAW,KAAK,MAAM;AAAA,GAC7B;AAAA;AAGF,SAAS,mBAAmB,CAC3B,KACA,MACA,QACU;AAAA,EACV,OACE,MAAM,QAAQ,GAAG,KAAK,MAAM,QAAQ,IAAI,KAAK,IAAI,SAAS,KAAK,UAChE,WAAW;AAAA;AAKb,SAAS,mBAAmB,CAAC,qBAS3B;AAAA,EACD,MAAM,QASF,CAAC;AAAA,EAGL,IAAI,qBAAqB,SAAS;AAAA,IAChC,oBAAoC,QAAQ,CAAC,MAAM;AAAA,MACnD,IAAI,OAAO,MAAM,UAAU;AAAA,QAC1B,MAAM,KAAK;AAAA,UACV,OAAO,OAAO;AAAA,UACd,MAAM;AAAA,UACN,QAAQ;AAAA,QACT;AAAA,MACD;AAAA,KACA;AAAA,EACF,EAAO,SAAI,uBAAuB,OAAO,wBAAwB,UAAU;AAAA,IAC1E,YAAY,GAAG,MAAM,OAAO,QAC3B,mBACD,GAAG;AAAA,MACF,MAAM,KAAK;AAAA,QACV,OACC,OAAO,GAAG,UAAU,WAAW,EAAE,QAAQ,OAAO;AAAA,QACjD,MAAM,OAAO,GAAG,SAAS,WAAW,EAAE,OAAO;AAAA,QAC7C,OAAO,GAAG,iBAAiB,MAAM,EAAE,QAAQ;AAAA,QAC3C,eACC,GAAG,yBAAyB,MAAM,EAAE,gBAAgB;AAAA,QACrD,QACC,GAAG,WAAW,SAAS,GAAG,kBAAkB,MAAM,EAAE,SAAS;AAAA,MAC/D;AAAA,IACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAGD,SAAS,kBAAkB,CACjC,qBACA,oBAC0E;AAAA,EAC1E,MAAM,SAAoC,CAAC;AAAA,EAC3C,MAAM,UAAmC,CAAC;AAAA,EAG1C,IAAI;AAAA,IACH,MAAM,IAAI;AAAA,IACV,MAAM,aAAa,EAAE;AAAA,IAIrB,IAAI,cAAc,OAAO,eAAe,UAAU;AAAA,MAEjD,YAAY,YAAY,UAAU,OAAO,QAAQ,UAAU,GAAG;AAAA,QAC7D,IAAI,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,GAAG;AAAA,UAC7C,OAAO,cAAc;AAAA,UACrB,MAAM,OAAO,qBAAqB,eAAe,CAAC;AAAA,UAClD,QAAQ,cAAc,MAAM,SAAS,KAAK;AAAA,QAC3C;AAAA,MACD;AAAA,MACA,OAAO,EAAE,QAAQ,QAAQ;AAAA,IAC1B;AAAA,IACC,MAAM;AAAA,EAKR,MAAM,aAAa,CAAC,UAA0B,CAAC,GAAQ,MAAW;AAAA,IACjE,MAAM,KAAK,GAAG,MAAM,OAAO,KAAK,MAAM,OAAO,EAAE,KAAK,IAAI,CAAC,IAAI;AAAA,IAC7D,MAAM,KAAK,GAAG,MAAM,OAAO,KAAK,MAAM,OAAO,EAAE,KAAK,IAAI,CAAC,IAAI;AAAA,IAC7D,OAAO,UAAU,QAAQ,KAAK,KAAK,KAAK;AAAA;AAAA,EAGzC,MAAM,QAAQ,oBAAoB,mBAAmB;AAAA,EACrD,MAAM,cAAc,OAAO,KAAK,KAAK;AAAA,EAErC,WAAW,KAAK,aAAa;AAAA,IAC5B,MAAM,OAAO,MAAM;AAAA,IACnB,MAAM,OAAO,qBAAqB,MAAM,CAAC;AAAA,IAEzC,IAAI,MAAM,qBACT,MACA,KAAK,MAAM,OAAO,KAAK,MAAM,GAC7B,UACD;AAAA,IAEA,MAAM,oBAAoB,KAAK,KAAK,UAAU,OAAO,KAAK,KAAK;AAAA,IAE/D,OAAO,KAAK;AAAA,IACZ,QAAQ,KAAK,oBAAoB,KAAK,MAAM,KAAK,UAAU,KAAK;AAAA,EACjE;AAAA,EAEA,OAAO,EAAE,QAAQ,QAAQ;AAAA;AAAA;;;ACvQnB,SAAS,uBAAuB,CACtC,SAC0B;AAAA,EAC1B,MAAM,aAAsC,CAAC;AAAA,EAC7C,YAAY,KAAK,UAAU,OAAO,QAAQ,OAAO,GAAG;AAAA,IACnD,WAAW,OAAO;AAAA,IAClB,MAAM,eAAe,IAAI,MAAM,GAAG,EAAE;AAAA,IACpC,IAAI,iBAAiB,KAAK;AAAA,MACzB,WAAW,gBAAgB;AAAA,IAC5B;AAAA,EACD;AAAA,EACA,OAAO;AAAA;AAOR,SAAS,yBAAyB,CAAC,UAAiC;AAAA,EAEnE,MAAM,WAAW,SAAS,MAAM,GAAG,EAAE,GAAG,MAAM,GAAG,EAAE;AAAA,EACnD,MAAM,QAAQ,SAAS,MAAM,GAAG,EAAE,OAAO,OAAO;AAAA,EAChD,IAAI,MAAM,SAAS;AAAA,IAAG,OAAO;AAAA,EAC7B,OAAO,GAAG,MAAM,MAAM,MAAM;AAAA;AAWtB,SAAS,0BAA0B,GAAW;AAAA,EAOpD,OAAO;AAAA;AAQD,SAAS,sBAAsB,CAAC,UAA0B;AAAA,EAChE,IAAI;AAAA,IAEH,MAAM,IAAI;AAAA,IACV,MAAM,aAAa,EAAE;AAAA,IAErB,IAAI,CAAC,cAAc,OAAO,eAAe,UAAU;AAAA,MAClD,OAAO;AAAA,IACR;AAAA,IAGA,MAAM,aAAa,0BAA0B,QAAQ;AAAA,IACrD,IAAI,CAAC,YAAY;AAAA,MAChB,OAAO;AAAA,IACR;AAAA,IAEA,MAAM,iBAAiB,WAAW;AAAA,IAClC,IAAI,CAAC,gBAAgB;AAAA,MACpB,OAAO;AAAA,IACR;AAAA,IAEA,MAAM,kBAAkB,GAAG,aAAa,eAAe;AAAA,IACvD,MAAM,cAAc,oBAAoB,KAAK,UAAU,eAAe,CAAC;AAAA,IAEvE,OAAO,2GAA2G;AAAA,IACjH,OAAO,OAAO;AAAA,IACf,QAAQ,MAAM,kDAAkD,KAAK;AAAA,IACrE,OAAO;AAAA;AAAA;AAQT,SAAS,2BAA2B,CACnC,wBACS;AAAA,EACT,IACC,CAAC,0BACD,OAAO,KAAK,sBAAsB,EAAE,WAAW,GAC9C;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EAEA,IAAI;AAAA,IACH,MAAM,aAAa,oBAClB,KAAK,UAAU,sBAAsB,CACtC;AAAA,IACA,OAAO,iHAAiH;AAAA,IACvH,OAAO,OAAO;AAAA,IACf,QAAQ,MACP,2DACA,KACD;AAAA,IACA,OAAO;AAAA;AAAA;AAQT,SAAS,wBAAwB,CAAC,cAGvB;AAAA,EACV,IACC,CAAC,cAAc,eACf,OAAO,aAAa,gBAAgB,UACnC;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EAEA,IAAI;AAAA,IACH,MAAM,cAAc,oBAAoB,KAAK,UAAU,YAAY,CAAC;AAAA,IACpE,OAAO,6GAA6G;AAAA,IACnH,OAAO,OAAO;AAAA,IACf,QAAQ,MAAM,gDAAgD,KAAK;AAAA,IACnE,OAAO;AAAA;AAAA;AAQT,SAAS,uBAAuB,CAAC,aAA8B;AAAA,EAC9D,IAAI,CAAC,aAAa;AAAA,IACjB,OAAO;AAAA,EACR;AAAA,EAEA,IAAI;AAAA,IACH,MAAM,aAAa,oBAAoB,KAAK,UAAU,WAAW,CAAC;AAAA,IAClE,OAAO,4GAA4G;AAAA,IAClH,OAAO,OAAO;AAAA,IACf,QAAQ,MAAM,+CAA+C,KAAK;AAAA,IAClE,OAAO;AAAA;AAAA;AAST,SAAS,uBAAuB,CAAC,UAA2B;AAAA,EAC3D,IAAI,CAAC,UAAU;AAAA,IACd,OAAO;AAAA,EACR;AAAA,EAEA,IAAI;AAAA,IACH,MAAM,eAAe,oBAAoB,KAAK,UAAU,QAAQ,CAAC;AAAA,IACjE,OAAO,4GAA4G;AAAA,IAClH,OAAO,OAAO;AAAA,IACf,QAAQ,MAAM,+CAA+C,KAAK;AAAA,IAClE,OAAO;AAAA;AAAA;AAOF,SAAS,gBAAgB,CAC/B,SACA,UACA,UACA,wBACA,cACA,aACS;AAAA,EACT,IAAI,SAAS;AAAA,EAGb,UAAU,2BAA2B;AAAA,EAGrC,UAAU,wBAAwB,QAAQ;AAAA,EAG1C,IAAI,UAAU;AAAA,IACb,UAAU,uBAAuB,QAAQ;AAAA,EAC1C;AAAA,EAGA,UAAU,4BAA4B,sBAAsB;AAAA,EAG5D,UAAU,yBAAyB,YAAY;AAAA,EAG/C,UAAU,wBAAwB,WAAW;AAAA,EAE7C,IAAI,WAAW,OAAO,KAAK,OAAO,EAAE,SAAS,GAAG;AAAA,IAC/C,IAAI;AAAA,MACH,MAAM,iBAAiB,wBAAwB,OAAO;AAAA,MACtD,MAAM,WAAW,oBAAoB,KAAK,UAAU,cAAc,CAAC;AAAA,MACnE,MAAM,WAAW,oBAChB,KAAK,UAAU,OAAO,KAAK,OAAO,CAAC,CACpC;AAAA,MACA,UAAU,4IAA4I,kFAAkF;AAAA,MACvO,OAAO,OAAO;AAAA,MACf,QAAQ,MAAM,2CAA2C,KAAK;AAAA;AAAA,EAEhE;AAAA,EAEA,IAAI,UAAU;AAAA,IACb,MAAM,aAAa,KAAK,UAAU,QAAQ;AAAA,IAC1C,UAAU,gJAAgJ;AAAA,EAC3J;AAAA,EAEA,OAAO;AAAA;AAAA;;;AC5ND,SAAS,iBAAiB,GAAW;AAAA,EAC3C,IAAI;AAAA,IACH,MAAM,QAAS,WAAmB,+BAA+B,CAAC;AAAA,IAClE,IAAI,MAAM,WAAW;AAAA,MAAG,OAAO;AAAA,IAE/B,MAAM,YAAY,oBAAoB,KAAK,UAAU,KAAK,CAAC;AAAA,IAC3D,OAAO,qGAAqG;AAAA,IAC3G,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAOF,SAAS,gBAAgB,GAAW;AAAA,EAC1C,IAAI;AAAA,IACH,MAAM,OAAQ,WAAmB,8BAA8B,CAAC;AAAA,IAChE,IAAI,KAAK,WAAW;AAAA,MAAG,OAAO;AAAA,IAE9B,MAAM,WAAW,oBAAoB,KAAK,UAAU,IAAI,CAAC;AAAA,IACzD,OAAO,oGAAoG;AAAA,IAC1G,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAAA;;;;EC7BT;AAAA,EACA;AAAA,EAEA;AAAA;;;ACGA,eAAsB,iBAAiB,CACtC,WACA,SAAS,OACT,cAAc,OACI;AAAA,EAClB,IAAI;AAAA,IAEH,MAAM,aAAc,WAClB;AAAA,IAEF,IAAI,YAAY;AAAA,MACf,MAAM,OAAM,SAAS,UAAU,UAAU,IAAI;AAAA,MAC7C,OAAO,kCAAkC;AAAA,IAC1C;AAAA,IAIA,IAAI,aAAa;AAAA,MAEhB,MAAM,YAAY,KAAK,IAAI;AAAA,MAC3B,OAAO,sDAAsD;AAAA,IAC9D;AAAA,IAGA,MAAM,aAAa;AAAA,MAClB,KAAK,WAAW,MAAM,YAAY,WAAW;AAAA,MAC7C,KAAK,WAAW,MAAM,MAAM,YAAY,WAAW;AAAA,MACnD,KAAK,WAAW,MAAM,MAAM,MAAM,YAAY,WAAW;AAAA,MACzD,KAAK,WAAW,MAAM,MAAM,MAAM,MAAM,YAAY,WAAW;AAAA,IAChE;AAAA,IAEA,IAAI,UAAU;AAAA,IACd,WAAW,KAAK,YAAY;AAAA,MAC3B,IAAI,MAAM,IAAI,KAAK,CAAC,EAAE,OAAO,GAAG;AAAA,QAC/B,UAAU;AAAA,QACV;AAAA,MACD;AAAA,IACD;AAAA,IAEA,IAAI,CAAC;AAAA,MAAS,OAAO;AAAA,IAErB,QAAQ,iBAAiB,MAAa;AAAA,IACtC,MAAM,MAAM,aAAa,SAAS,OAAO;AAAA,IAEzC,OAAO,kCAAkC,UAAU,GAAG;AAAA,IACrD,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAOT,SAAS,SAAS,CAAC,KAAqB;AAAA,EACvC,OACC,IAEE,QAAQ,qBAAqB,EAAE,EAE/B,QAAQ,QAAQ,GAAG,EAEnB,QAAQ,uBAAuB,IAAI,EAEnC,QAAQ,OAAO,GAAG,EAClB,KAAK;AAAA;AAAA;;;ACWT,eAAe,eAAe,CAC7B,SACA,YAAY,OACc;AAAA,EAC1B,QAAQ,aAAa;AAAA,EACrB,MAAM,eAAqC,EAAE,UAAU,MAAM;AAAA,EAI7D,MAAM,eAAe,QAAQ,YAAY,YAAY,MAAQ;AAAA,EAC7D,IAAI,YAAkD;AAAA,EACtD,MAAM,iBAAiB,IAAI,QAAe,CAAC,GAAG,WAAW;AAAA,IACxD,YAAY,WAAW,MAAM;AAAA,MAC5B,aAAa,WAAW;AAAA,MACxB,OACC,IAAI,MACH,qCAAqC,sBAAsB,UAC5D,CACD;AAAA,OACE,YAAY;AAAA,GACf;AAAA,EACD,MAAM,eAAe,eAAe,QAAQ,YAAY,MACvD,wBAAwB,SAAS,WAAW,YAAY,CACzD;AAAA,EACA,MAAM,0BAA0B,aAAa,QAAQ,MAAM;AAAA,IAC1D,IAAI,aAAa,UAAU;AAAA,MAC1B,yBAAyB,QAAQ;AAAA,IAClC;AAAA,GACA;AAAA,EAED,IAAI;AAAA,IACH,OAAO,MAAM,QAAQ,KAAK,CAAC,yBAAyB,cAAc,CAAC;AAAA,IAClE,OAAO,OAAO;AAAA,IACf,yBAAyB,QAAQ;AAAA,IACjC,QAAQ,MAAM,8BAA8B,KAAK;AAAA,IAEjD,OAAO;AAAA,MACN,SAAS,CAAC;AAAA,MACV,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,MAC/D,iBAAiB,EAAE,OAAO,IAAI;AAAA,MAC9B,oBAAoB,CAAC;AAAA,MACrB,eAAe;AAAA,MACf,kBAAkB;AAAA,MAClB,wBAAwB;AAAA,MACxB,gBAAgB;AAAA,MAChB,gBAAgB,EAAE,aAAa,GAAG;AAAA,IACnC;AAAA,YACC;AAAA,IACD,IAAI,WAAW;AAAA,MACd,aAAa,SAAS;AAAA,IACvB;AAAA;AAAA;AAOF,eAAe,uBAAuB,CACrC,SACA,WACA,cAC0B;AAAA,EAC1B,MAAM,QAAQ,QAAQ,SAAS;AAAA,EAC/B,MAAM,KAAK,QAAQ,YAAY,IAAI,IAAI;AAAA,EACvC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,MACG;AAAA,EACJ,MAAM,oBAAoB,MAAM;AAAA,IAC/B,IAAI,aAAa,UAAU;AAAA,MAC1B,MAAM,IAAI,MAAM,qCAAqC,UAAU;AAAA,IAChE;AAAA;AAAA,EAQD,MAAM,SAAS,YAAY,OAAO,SAAS;AAAA,IAC1C,KAAK,aAAa,YAAY,QAAQ;AAAA,IACtC,KAAK,aAAa,aAAa,SAAS;AAAA,IACxC,MAAM,qBAAqB,UAAU,WAAW,KAAK,WAAW;AAAA,IAChE,IAAI;AAAA,MACH,QAAQ,IACP,WAAW,2BAA2B,YAAY,IAAI,IAAI,IAAI,QAAQ,CAAC,KACxE;AAAA,GACD;AAAA,EACD,kBAAkB;AAAA,EAGlB,uBAAuB;AAAA,EACvB,MAAM,gBAAgB,oBAAoB,SAAS;AAAA,EAGnD,MAAM,gBAAgB,MAAM,SAAS,eAAe,OAAO,SAAS;AAAA,IACnE,KAAK,aAAa,YAAY,QAAQ;AAAA,IACtC,MAAM,SAAS,MAAM,qBACpB,UACA,WACA,KACA,WACD;AAAA,IACA,KAAK,aAAa,cAAc,CAAC,CAAC,OAAO,UAAU;AAAA,IACnD,IAAI;AAAA,MACH,QAAQ,IACP,WAAW,+BAA+B,YAAY,IAAI,IAAI,IAAI,QAAQ,CAAC,KAC5E;AAAA,IACD,OAAO;AAAA,GACP;AAAA,EACD,kBAAkB;AAAA,EAGlB,MAAM,gBAA+B,MAAM,SAC1C,oBACA,OAAO,SAAS;AAAA,IACf,KAAK,aAAa,YAAY,QAAQ;AAAA,IACtC,KAAK,aAAa,aAAa,SAAS;AAAA,IACxC,MAAM,SAAS,MAAM,eACpB,UACA,WACA,KACA,aACA,EAAE,WAAW,QAAQ,SAAS,QAAQ,QAAQ,GAC9C,YACD;AAAA,IACA,KAAK,aAAa,aAAa,CAAC,CAAC,OAAO,KAAK;AAAA,IAC7C,KAAK,aAAa,YAAY,OAAO,KAAK,OAAO,IAAI,EAAE,SAAS,CAAC;AAAA,IACjE,IAAI;AAAA,MACH,QAAQ,IACP,WAAW,+BAA+B,YAAY,IAAI,IAAI,IAAI,QAAQ,CAAC,KAC5E;AAAA,IACD,OAAO;AAAA,GAET;AAAA,EACA,kBAAkB;AAAA,EAElB,iBAAiB,cAAc,IAAI;AAAA,EAGnC,MAAM,yBAAyB,CAAC,CAAC,QAAQ;AAAA,EACzC,MAAM,qBAAqB,MAAM,SAChC,wBACA,OAAO,SAAS;AAAA,IACf,KAAK,aAAa,YAAY,QAAQ;AAAA,IACtC,KAAK,aAAa,UAAU,sBAAsB;AAAA,IAClD,MAAM,cAAc,QAAQ,oBACzB,QAAQ,oBACR,MAAM,gBAAgB,KAAK,WAAW;AAAA,IACzC,KAAK,aAAa,oBAAoB,OAAO,KAAK,WAAW,EAAE,MAAM;AAAA,IACrE,IAAI;AAAA,MACH,QAAQ,IACP,WAAW,uCAAuC,6BAA6B,YAAY,IAAI,IAAI,IAAI,QAAQ,CAAC,KACjH;AAAA,IACD,OAAO;AAAA,GAET;AAAA,EACA,kBAAkB;AAAA,EAClB,qBAAqB,kBAAkB;AAAA,EAGvC,MAAM,iBAAiB,CAAC,CAAC,QAAQ;AAAA,EACjC,MAAM,iBAAiB,MAAM,SAAS,kBAAkB,OAAO,SAAS;AAAA,IACvE,MAAM,MAAM,QAAQ,oBACjB,QAAQ,oBACR,MAAM,kBAAkB,WAAW,CAAC,WAAW,WAAW;AAAA,IAC7D,KAAK,cAAc;AAAA,MAClB,kBAAkB;AAAA,MAClB,oBAAoB,IAAI;AAAA,IACzB,CAAC;AAAA,IACD,IAAI;AAAA,MACH,QAAQ,IACP,WAAW,yCAAyC,qBAAqB,YAAY,IAAI,IAAI,IAAI,QAAQ,CAAC,KAC3G;AAAA,IACD,OAAO;AAAA,GACP;AAAA,EACD,kBAAkB;AAAA,EAGlB,IAAI,iBAAiB,cAAc;AAAA,EACnC,IAAI,cAAc,gBAAgB,UAAU,WAAW;AAAA,IACtD,iBAAiB,cAAc,gBAAgB;AAAA,EAChD;AAAA,EAGA,MAAM,iBAAiB,MAAM,SAC5B,wBACA,OAAO,SAAS;AAAA,IACf,MAAM,SAAS,MAAM,oBACpB,UACA,WACA,KACA,aACA,gBACA,UACA,QAAQ,cACR,QAAQ,SACR,QAAQ,eACR,cAAc,MACd,QAAQ,WACT;AAAA,IACA,KAAK,cAAc;AAAA,MAClB,oBAAoB;AAAA,MACpB,2BAA2B,CAAC,CAAC,OAAO;AAAA,IACrC,CAAC;AAAA,IACD,IAAI;AAAA,MACH,QAAQ,IACP,WAAW,gCAAgC,YAAY,IAAI,IAAI,IAAI,QAAQ,CAAC,KAC7E;AAAA,IACD,OAAO;AAAA,GAET;AAAA,EACA,kBAAkB;AAAA,EAElB,OAAO;AAAA,IACN,SAAS,cAAc;AAAA,IACvB,UAAU,cAAc;AAAA,IACxB,iBAAiB,cAAc;AAAA,IAC/B;AAAA,IACA;AAAA,IACA,kBAAkB,cAAc;AAAA,IAChC,wBAAwB,cAAc;AAAA,IACtC,uBAAuB,cAAc;AAAA,IACrC;AAAA,IACA;AAAA,IACA,SAAS,cAAc;AAAA,EACxB;AAAA;AAMD,SAAS,yBAAyB,CACjC,oBACS;AAAA,EACT,IAAI;AAAA,IACH,MAAM,IAAI;AAAA,IACV,MAAM,MAAM,EAAE;AAAA,IAEd,IAAI,KAAK;AAAA,MACR,QAAQ,QAAQ,YAAY,mBAAmB,KAAK,kBAAkB;AAAA,MACtE,IAAI,OAAO,KAAK,MAAM,EAAE,SAAS,GAAG;AAAA,QACnC,OAAO,uBAAuB,QAAQ,OAAO;AAAA,MAC9C;AAAA,IACD;AAAA,IACC,MAAM;AAAA,EAGR,OAAO;AAAA;AAMR,SAAS,wBAAwB,CAChC,SACA,aACA,UACA,oBAAoB,IACpB,gBAAgB,IAChB,YAAY,IACZ,WAAW,IACX,wBACA,cACA,aACS;AAAA,EACT,IAAI,UAAU;AAAA,EAGd,WAAW;AAAA,EAGX,WAAW,iBACV,SACA,cAAc,WAAW,WACzB,UACA,wBACA,cACA,WACD;AAAA,EAGA,WAAW,kBAAkB;AAAA,EAC7B,WAAW,iBAAiB;AAAA,EAG5B,IAAI,WAAW;AAAA,IACd,WAAW,8BAA8B;AAAA,EAC1C;AAAA,EAGA,IAAI,aAAa;AAAA,IAChB,WAAW;AAAA,EACZ;AAAA,EAEA,OAAO;AAAA;AAAA;AAAA,EA7XR;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAKA;AAAA,EAOA;AAAA,EACA;AAAA;;;ACdO,SAAS,aAAa,CAAC,MAAc,QAAQ,QAAuB;AAAA,EAC1E,MAAM,eAAe,MAAM,QAAQ,uBAAuB,MAAM;AAAA,EAEhE,MAAM,eAAe,IAAI,OACxB,uBAAuB,iDACvB,GACD;AAAA,EAEA,MAAM,QAAQ,KAAK,MAAM,YAAY;AAAA,EACrC,IAAI,CAAC,SAAS,MAAM,UAAU,WAAW;AAAA,IACxC,MAAM,IAAI,MAAM,wCAAwC,QAAQ;AAAA,EACjE;AAAA,EAEA,OAAO,WAAW,aAAa,WAAW;AAAA,EAC1C,MAAM,aAAa,MAAM;AAAA,EAEzB,OAAO;AAAA,IACN,UAAU,KAAK,UAAU,GAAG,UAAU;AAAA,IACtC;AAAA,IACA;AAAA,IACA,UAAU,KAAK,UAAU,aAAa,UAAU,MAAM;AAAA,EACvD;AAAA;;;EChBD;AAAA,EARA;AAAA,EAGA;AAAA,EAEA;AAAA,EAEA;AAAA,EAGA;AAAA,EACA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAGA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA;;;;;;;ACtBO,SAAS,+BAA+B,CAC9C,QACsC;AAAA,EACtC,IAAI,CAAC;AAAA,IAAQ;AAAA,EAEb,MAAM,aAAsC,CAAC;AAAA,EAE7C,YAAY,KAAK,UAAU,OAAO,QAAQ,MAAM,GAAG;AAAA,IAClD,IAAI,QAAQ,qBAAqB,MAAM,QAAQ,KAAK,GAAG;AAAA,MAEtD,WAAW,OAAO,MAChB,IAAI,CAAC,YAAY;AAAA,QACjB,IAAI,OAAO,YAAY,UAAU;AAAA,UAChC,OAAO,EAAE,MAAM,UAAU,OAAO,QAAQ;AAAA,QACzC;AAAA,QACA,IAAI,mBAAmB,QAAQ;AAAA,UAC9B,OAAO;AAAA,YACN,MAAM;AAAA,YACN,OAAO,QAAQ;AAAA,YACf,OAAO,QAAQ;AAAA,UAChB;AAAA,QACD;AAAA,QAEA,OAAO;AAAA,OACP,EACA,OAAO,OAAO;AAAA,IACjB,EAAO,SAAI,QAAQ,kBAAkB,MAAM,QAAQ,KAAK,GAAG;AAAA,MAE1D,WAAW,OAAO,MAChB,IAAI,CAAC,YAAY;AAAA,QACjB,IAAI,OAAO,YAAY,UAAU;AAAA,UAChC,OAAO,EAAE,MAAM,UAAU,OAAO,QAAQ;AAAA,QACzC;AAAA,QACA,IAAI,mBAAmB,QAAQ;AAAA,UAC9B,OAAO;AAAA,YACN,MAAM;AAAA,YACN,OAAO,QAAQ;AAAA,YACf,OAAO,QAAQ;AAAA,UAChB;AAAA,QACD;AAAA,QAEA,OAAO;AAAA,OACP,EACA,OAAO,OAAO;AAAA,IACjB,EAAO;AAAA,MACN,WAAW,OAAO;AAAA;AAAA,EAEpB;AAAA,EAEA,OAAO;AAAA;;;ACrDR;AACA;AACA;AAoDA,eAAe,iBAAiB,CAC/B,SAC2B;AAAA,EAC3B;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,SAAS;AAAA,IACT;AAAA,IACA;AAAA,MACG;AAAA,EAGJ,MAAM,SAAQ,MAAM,gBACnB;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY,QAAQ;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc,QAAQ;AAAA,IACtB,SAAS,QAAQ;AAAA,IACjB,eAAe,QAAQ;AAAA,IACvB,mBAAmB,QAAQ;AAAA,IAC3B,mBAAmB,QAAQ;AAAA,IAC3B,SAAS,QAAQ;AAAA,IACjB,aAAa,QAAQ;AAAA,EACtB,GACA,KACD;AAAA,EAGA,MAAM,iBAAiB,wBAAwB,OAAM,OAAO;AAAA,EAC5D,iBAAiB,cAAc;AAAA,EAG/B,MAAM,UAAU,MAAM,SAAS,oBAAoB,OAAO,SAAS;AAAA,IAClE,MAAM,wBAAwB,aAAkB,eAAe;AAAA,MAC9D;AAAA,MACA;AAAA,IACD,CAAQ;AAAA,IACR,KAAK,aAAa,oBAAoB,QAAQ;AAAA,IAC9C,MAAM,QAAO,eAAe,qBAAqB;AAAA,IACjD,KAAK,aAAa,2BAA2B,MAAK,MAAM;AAAA,IACxD,OAAO;AAAA,GACP;AAAA,EAGD,MAAM,eAAe,MAAM,SAAS,qBAAqB,OAAO,SAAS;AAAA,IACxE,MAAM,YAAW,MAAM,cAAc,SAAS;AAAA,IAC9C,KAAK,aAAa,yBAAyB,UAAS,MAAM;AAAA,IAC1D,OAAO;AAAA,GACP;AAAA,EAGD,MAAM,oBAAoB,0BAA0B,OAAM,kBAAkB;AAAA,EAG5E,MAAM,SAAS,MAAM,WAAW,GAAG;AAAA,EACnC,MAAM,4BAA4B,OAAO,WAAW;AAAA,EAKpD,QAAQ,sEAAoC;AAAA,EAC5C,MAAM,yBAAyB,iCAC9B,yBACD;AAAA,EAGA,MAAM,eAAe,4BAA4B,QAAQ,UAAU;AAAA,EAGnE,MAAM,kBAAkB,MAAM,SAC7B,wBACA,OAAO,SAAS;AAAA,IACf,MAAM,SAAS,yBACd,OAAM,SACN,aACA,OAAM,UACN,mBACA,OAAM,wBACN,WACA,UACA,wBACA,cACA,QAAQ,WACT;AAAA,IACA,KAAK,aAAa,wBAAwB,OAAO,MAAM;AAAA,IACvD,OAAO;AAAA,GAET;AAAA,EAGA,IAAI,iBAAiB,OAAM;AAAA,EAC3B,IAAI,OAAM,gBAAgB,UAAU,WAAW;AAAA,IAC9C,iBAAiB,OAAM,gBAAgB;AAAA,EACxC;AAAA,EACA,IAAI,OAAM,eAAe,mBAAmB,WAAW;AAAA,IACtD,iBAAiB,OAAM,eAAe;AAAA,EACvC;AAAA,EAGA,MAAM,YAAY,OAAM,gBAAgB,OAAM;AAAA,EAC9C,MAAM,eAAe,OACpB;AAAA,IACC,OAAO,IAAI,KAAK;AAAA,IAChB,OAAO,SAAS;AAAA,IAChB,OAAO,OAAM,eAAe,WAAW;AAAA,EACxC,EACE,OAAO,OAAO,EACd,KAAK;AAAA,CAAI,CACZ;AAAA,EAGA,MAAM,QAAO,aAAa,sBAAsB,CAAC,SAAS;AAAA,IACzD,MAAM,SAAS,mBAAmB,cAAc,SAAS;AAAA,MACxD,MAAM,CAAC,OAAM,gBAAgB,YAAY,EAAE,OAAO,OAAO,EAAE,KAAK;AAAA,CAAI;AAAA,MACpE;AAAA,MACA,MAAM,OAAM,eAAe,YAAY;AAAA,MACvC;AAAA,IACD,CAAC;AAAA,IACD,KAAK,cAAc;AAAA,MAClB,2BAA2B,OAAO;AAAA,MAClC,8BAA8B,QAAQ;AAAA,IACvC,CAAC;AAAA,IACD,OAAO;AAAA,GACP;AAAA,EAED,OAAO;AAAA,IACN;AAAA,IACA,QAAQ,kBAAkB;AAAA,EAC3B;AAAA;AAAA;AAAA,EAjMD;AAAA,EAKA;AAAA,EACA;AAAA,EAQA;AAAA;;;ACNO,SAAS,YAAY,CAAC,SAGlB;AAAA,EACV,MAAM,QAAkB,CAAC;AAAA,EAGzB,IAAI,QAAQ,OAAO;AAAA,IAClB,MAAM,KAAK,QAAQ,KAAK;AAAA,IACxB,MAAM,KAAK,EAAE;AAAA,EACd;AAAA,EAGA,MAAM,KAAK,QAAQ,IAAI;AAAA,EAEvB,OAAO,MAAM,KAAK;AAAA,CAAI;AAAA;AAOhB,SAAS,gBAAgB,CAAC,SAGtB;AAAA,EACV,MAAM,QAAkB,CAAC;AAAA,EAGzB,IAAI,QAAQ,OAAO;AAAA,IAClB,MAAM,KAAK,KAAK,QAAQ,OAAO;AAAA,IAC/B,MAAM,KAAK,EAAE;AAAA,EACd;AAAA,EAGA,MAAM,KAAK,QAAQ,QAAQ;AAAA,EAE3B,OAAO,MAAM,KAAK;AAAA,CAAI;AAAA;AAOhB,SAAS,aAAa,CAAC,OAAsB;AAAA,EACnD,IAAI,OAAO;AAAA,EAGX,OAAO,KAAK,QACX,kDACA,SACD;AAAA,EAGA,OAAO,KAAK,QACX,gEACA;AAAA,CACD;AAAA,EACA,OAAO,KAAK,QAAQ,gBAAgB;AAAA,CAAI;AAAA,EACxC,OAAO,KAAK,QAAQ,gBAAgB;AAAA;AAAA,CAAS;AAAA,EAG7C,OAAO,KAAK,QAAQ,eAAe;AAAA,GAAK;AAAA,EAGxC,OAAO,KAAK,QAAQ,mBAAmB;AAAA;AAAA,CAAM;AAAA,EAC7C,OAAO,KAAK,QAAQ,gBAAgB;AAAA,CAAI;AAAA,EAGxC,OAAO,KAAK,QACX,uDACA,EACD;AAAA,EACA,OAAO,KAAK,QAAQ,oDAAoD,EAAE;AAAA,EAG1E,OAAO,KAAK,QAAQ,YAAY,EAAE;AAAA,EAGlC,OAAO,KAAK,QAAQ,WAAW,GAAG;AAAA,EAClC,OAAO,KAAK,QAAQ,UAAU,GAAG;AAAA,EACjC,OAAO,KAAK,QAAQ,SAAS,GAAG;AAAA,EAChC,OAAO,KAAK,QAAQ,SAAS,GAAG;AAAA,EAChC,OAAO,KAAK,QAAQ,WAAW,GAAG;AAAA,EAClC,OAAO,KAAK,QAAQ,UAAU,GAAG;AAAA,EACjC,OAAO,KAAK,QAAQ,WAAW,GAAG;AAAA,EAClC,OAAO,KAAK,QAAQ,WAAW,GAAG;AAAA,EAGlC,OAAO,KAAK,QAAQ,WAAW,GAAG;AAAA,EAClC,OAAO,KAAK,QAAQ,YAAY;AAAA;AAAA,CAAM;AAAA,EACtC,OAAO,KAAK,QAAQ,WAAW;AAAA;AAAA,CAAM;AAAA,EAErC,OAAO,KAAK,KAAK;AAAA;AAOX,SAAS,YAAY,CAAC,OAAkC;AAAA,EAE9D,MAAM,UAAU,MAAK,MAAM,uBAAuB;AAAA,EAClD,IAAI,SAAS;AAAA,IACZ,OAAO,cAAc,QAAQ,EAAE,EAAE,KAAK;AAAA,EACvC;AAAA,EAGA,MAAM,aAAa,MAAK,MAAM,6BAA6B;AAAA,EAC3D,IAAI,YAAY;AAAA,IACf,OAAO,cAAc,WAAW,EAAE,EAAE,KAAK;AAAA,EAC1C;AAAA,EAGA,MAAM,eAAe,MAAK,MAAM,+BAA+B;AAAA,EAC/D,IAAI,cAAc;AAAA,IACjB,OAAO,cAAc,aAAa,EAAE,EAAE,KAAK;AAAA,EAC5C;AAAA,EAEA;AAAA;AAOM,SAAS,cAAc,CAAC,OAAsB;AAAA,EACpD,IAAI,KAAK;AAAA,EAGT,KAAK,GAAG,QAAQ,0BAA0B;AAAA;AAAA,CAAU;AAAA,EACpD,KAAK,GAAG,QAAQ,0BAA0B;AAAA;AAAA,CAAW;AAAA,EACrD,KAAK,GAAG,QAAQ,0BAA0B;AAAA;AAAA,CAAY;AAAA,EACtD,KAAK,GAAG,QAAQ,0BAA0B;AAAA;AAAA,CAAa;AAAA,EACvD,KAAK,GAAG,QAAQ,0BAA0B;AAAA;AAAA,CAAc;AAAA,EACxD,KAAK,GAAG,QAAQ,0BAA0B;AAAA;AAAA,CAAe;AAAA,EAGzD,KAAK,GAAG,QAAQ,2CAA2C,UAAU;AAAA,EAGrE,KAAK,GAAG,QACP,uDACA,WACD;AAAA,EAGA,KAAK,GAAG,QAAQ,0CAA0C,QAAQ;AAAA,EAGlE,KAAK,GAAG,QAAQ,sCAAsC,MAAM;AAAA,EAG5D,KAAK,GAAG,QACP,gDACA,kBACD;AAAA,EACA,KAAK,GAAG,QAAQ,8BAA8B,MAAM;AAAA,EAGpD,KAAK,GAAG,QAAQ,2BAA2B;AAAA,KAAQ;AAAA,EACnD,KAAK,GAAG,QAAQ,kBAAkB;AAAA,CAAI;AAAA,EACtC,KAAK,GAAG,QAAQ,kBAAkB;AAAA,CAAI;AAAA,EAGtC,KAAK,GAAG,QAAQ,cAAc;AAAA,CAAI;AAAA,EAClC,KAAK,GAAG,QAAQ,WAAW;AAAA,CAAI;AAAA,EAG/B,KAAK,GAAG,QAAQ,gBAAgB;AAAA,CAAI;AAAA,EACpC,KAAK,GAAG,QAAQ,gBAAgB;AAAA;AAAA,CAAS;AAAA,EAGzC,KAAK,GAAG,QAAQ,uDAAuD,EAAE;AAAA,EACzE,KAAK,GAAG,QAAQ,oDAAoD,EAAE;AAAA,EAGtE,KAAK,GAAG,QAAQ,YAAY,EAAE;AAAA,EAG9B,KAAK,GAAG,QAAQ,WAAW,GAAG;AAAA,EAC9B,KAAK,GAAG,QAAQ,UAAU,GAAG;AAAA,EAC7B,KAAK,GAAG,QAAQ,SAAS,GAAG;AAAA,EAC5B,KAAK,GAAG,QAAQ,SAAS,GAAG;AAAA,EAC5B,KAAK,GAAG,QAAQ,WAAW,GAAG;AAAA,EAC9B,KAAK,GAAG,QAAQ,UAAU,GAAG;AAAA,EAC7B,KAAK,GAAG,QAAQ,WAAW,GAAG;AAAA,EAC9B,KAAK,GAAG,QAAQ,WAAW,GAAG;AAAA,EAG9B,KAAK,GAAG,QAAQ,WAAW,GAAG;AAAA,EAC9B,KAAK,GAAG,QAAQ,YAAY;AAAA;AAAA,CAAM;AAAA,EAClC,KAAK,GAAG,QAAQ,WAAW;AAAA;AAAA,CAAM;AAAA,EAEjC,OAAO,GAAG,KAAK;AAAA;AAOT,SAAS,kBAAkB,GAAW;AAAA,EAC5C,OAAO;AAAA;AAAA;;;ACtNR,0BAAS;AAET;AAWO,SAAS,kBAAkB,CACjC,UACA,eACU;AAAA,EACV,IAAI,CAAC,iBAAiB,cAAc,WAAW,GAAG;AAAA,IACjD,OAAO;AAAA,EACR;AAAA,EAEA,OAAO,QACN,cAAc,KAAK,CAAC,YAAY;AAAA,IAC/B,IAAI,OAAO,YAAY,UAAU;AAAA,MAEhC,OAAO,SAAS,SAAS,OAAO;AAAA,IACjC;AAAA,IACA,IAAI,mBAAmB,QAAQ;AAAA,MAC9B,OAAO,QAAQ,KAAK,QAAQ;AAAA,IAC7B;AAAA,IACA,IAAI,OAAO,YAAY,YAAY;AAAA,MAClC,OAAO,QAAQ,QAAQ;AAAA,IACxB;AAAA,IACA,OAAO;AAAA,GACP,CACF;AAAA;AAGD,eAAe,kBAAkB,CAChC,KACA,UACA,aACoD;AAAA,EACpD,MAAM,QAAQ,SAAS,MAAM,GAAG,EAAE,OAAO,OAAO;AAAA,EAChD,IAAI,MAAM,SAAS;AAAA,IAAG,OAAO;AAAA,EAE7B,MAAM,aAAa,MAAM;AAAA,EACzB,MAAM,iBAAiB,KACtB,KACA,YACA,eACA,GAAG,eACJ;AAAA,EACA,MAAM,SAAS,MAAM,IAAI,KAAK,cAAc,EAAE,OAAO;AAAA,EACrD,IAAI,CAAC;AAAA,IAAQ,OAAO;AAAA,EAEpB,MAAM,MAAM,GAAG,eAAc,cAAc,EAAE,OAAO,cAAc,MAAM,KAAK,IAAI,MAAM;AAAA,EACvF,MAAM,MAAM,MAAa;AAAA,EACzB,MAAM,QAAQ,IAAI,SAAS,CAAC;AAAA,EAE5B,MAAM,OAAO,MAAM,KAAK,CAAC,MAAW,EAAE,SAAS,QAAQ;AAAA,EACvD,IAAI,CAAC;AAAA,IAAM,OAAO;AAAA,EAElB,OAAO,EAAE,MAAM,WAAW;AAAA;AAG3B,eAAe,iBAAiB,CAC/B,WACA,YACA,MACyB;AAAA,EACzB,MAAM,aAAa,CAAC,QAAQ,OAAO,QAAQ,MAAM;AAAA,EAEjD,WAAW,OAAO,YAAY;AAAA,IAC7B,MAAM,WAAW,KAChB,WACA,UACA,YACA,WACA,GAAG,OAAO,KACX;AAAA,IACA,MAAM,OAAO,IAAI,KAAK,QAAQ;AAAA,IAC9B,IAAI,MAAM,KAAK,OAAO,GAAG;AAAA,MACxB,OAAO;AAAA,IACR;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAGR,SAAS,sBAAsB,CAAC,SAAiB,OAAwB;AAAA,EACxE,IAAI,aAAa,QAAQ,QAAQ,yBAAyB,EAAE;AAAA,EAE5D,IAAI,OAAO;AAAA,IACV,aAAa,WAAW,QACvB,2CACA,EACD;AAAA,IACA,aAAa,WAAW,QAAQ,wBAAwB,EAAE;AAAA,IAC1D,aAAa,WAAW,QACvB,4CACA,EACD;AAAA,EACD;AAAA,EAEA,OAAO,WAAW,KAAK;AAAA;AAGxB,eAAe,sBAAsB,CACpC,eACA,MAC8D;AAAA,EAC9D,MAAM,OAAO,IAAI,KAAK,aAAa;AAAA,EACnC,IAAI,aAAa,MAAM,KAAK,KAAK;AAAA,EAEjC,MAAM,QAAQ,cAAc,SAAS,MAAM;AAAA,EAC3C,aAAa,uBAAuB,YAAY,KAAK;AAAA,EAErD,OAAO;AAAA,IACN,OAAQ,KAAK,SAAoB,aAAa,UAAU;AAAA,IACxD,MAAM,cAAc,UAAU;AAAA,IAC9B,UAAU;AAAA,EACX;AAAA;AAGD,eAAe,uBAAuB,CACrC,eACA,MACA,aACqE;AAAA,EACrE,IAAI;AAAA,IACH,MAAM,eAAe,GAAG,eAAc,aAAa,EAAE,OAAO,cAAc,MAAM,KAAK,IAAI,MAAM;AAAA,IAC/F,MAAM,eAAe,MAAa;AAAA,IAElC,MAAM,YAAY,aAAa;AAAA,IAC/B,IAAI,CAAC,aAAa,OAAO,cAAc;AAAA,MAAY,OAAO;AAAA,IAE1D,MAAM,QAAO,qBAAqB,UAAU,CAAC,CAAC,CAAC;AAAA,IAE/C,OAAO;AAAA,MACN,OAAQ,KAAK,SAAoB,aAAa,KAAI;AAAA,MAClD,MAAM,cAAc,KAAI;AAAA,MACxB,UAAU,eAAe,KAAI;AAAA,IAC9B;AAAA,IACC,OAAO,OAAO;AAAA,IACf,QAAQ,MACP,6CAA6C,kBAC7C,KACD;AAAA,IACA,OAAO;AAAA;AAAA;AAOT,eAAe,wBAAwB,CACtC,KACA,WACA,UACA,aACA,SACqE;AAAA,EACrE,IAAI;AAAA,IACH,MAAM,iBAAiB,MAAM,mBAAmB,KAAK,UAAU,WAAW;AAAA,IAC1E,IAAI,CAAC;AAAA,MAAgB,OAAO;AAAA,IAE5B,QAAQ,MAAM,eAAe;AAAA,IAC7B,MAAM,OAAO,KAAK,QAAQ,KAAK;AAAA,IAC/B,IAAI,CAAC;AAAA,MAAM,OAAO;AAAA,IAElB,MAAM,gBAAgB,MAAM,kBAAkB,WAAW,YAAY,IAAI;AAAA,IACzE,IAAI,CAAC;AAAA,MAAe,OAAO;AAAA,IAE3B,MAAM,OAAO,KAAK,QAAQ,CAAC;AAAA,IAE3B,IAAI,cAAc,SAAS,KAAK,KAAK,cAAc,SAAS,MAAM,GAAG;AAAA,MACpE,OAAO,MAAM,uBAAuB,eAAe,IAAI;AAAA,IACxD;AAAA,IAEA,OAAO,MAAM,wBAAwB,eAAe,MAAM,WAAW;AAAA,IACpE,OAAO,OAAO;AAAA,IACf,QAAQ,MACP,2DAA2D,aAC3D,KACD;AAAA,IACA,OAAO;AAAA;AAAA;AAOT,eAAe,iBAAiB,CAC/B,UACA,eACA,WACA,KACA,aACA,WACA,SACqE;AAAA,EACrE,IAAI;AAAA,IAGH,QAAQ,gBAAS,MAAM,kBAAkB;AAAA,MACxC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQ;AAAA,MACR,QAAQ;AAAA,IACT,CAAC;AAAA,IAID,IAAI,cAAc;AAAA,IAGlB,MAAM,cAAc,MAAK,MAAM,yCAAyC;AAAA,IACxE,IAAI,aAAa;AAAA,MAChB,cAAc,YAAY;AAAA,IAC3B;AAAA,IAGA,cAAc,YAAY,QAAQ,yBAAyB,EAAE;AAAA,IAC7D,cAAc,YAAY,QAAQ,+BAA+B,EAAE;AAAA,IACnE,cAAc,YAAY,QAAQ,+BAA+B,EAAE;AAAA,IACnE,cAAc,YAAY,QAAQ,6BAA6B,EAAE;AAAA,IAEjE,OAAO;AAAA,MACN,OAAO,aAAa,KAAI;AAAA,MACxB,MAAM,cAAc,WAAW;AAAA,MAC/B,UAAU,eAAe,WAAW;AAAA,IACrC;AAAA,IACC,OAAO,OAAO;AAAA,IACf,QAAQ,MACP,oDAAoD,aACpD,KACD;AAAA,IACA,OAAO;AAAA;AAAA;AAQT,eAAsB,qBAAqB,CAAC,SASxB;AAAA,EACnB;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MACG;AAAA,EAGJ,IAAI,mBAAmB,UAAU,YAAY,aAAa,GAAG;AAAA,IAC5D,MAAM,IAAI,MAAM,kCAAkC;AAAA,EACnD;AAAA,EAGA,IAAI,UAAU,MAAM,yBACnB,KACA,WACA,UACA,aACA,MACD;AAAA,EAGA,IAAI,CAAC,WAAW,iBAAiB,WAAW;AAAA,IAC3C,UAAU,MAAM,kBACf,UACA,eACA,WACA,KACA,aACA,WACA,MACD;AAAA,EACD;AAAA,EAGA,IAAI,CAAC,SAAS;AAAA,IACb,MAAM,IAAI,MAAM,mBAAmB;AAAA,EACpC;AAAA,EAGA,IAAI,WAAW,MAAM;AAAA,IAEpB,MAAM,SAAkB,CAAC;AAAA,IACzB,IAAI,QAAQ,OAAO;AAAA,MAClB,OAAM,KAAK,KAAK,QAAQ,OAAO;AAAA,MAC/B,OAAM,KAAK,EAAE;AAAA,IACd;AAAA,IACA,OAAM,KAAK,QAAQ,QAAQ;AAAA,IAC3B,OAAO,OAAM,KAAK;AAAA,CAAI;AAAA,EACvB;AAAA,EAGA,MAAM,QAAkB,CAAC;AAAA,EACzB,IAAI,QAAQ,OAAO;AAAA,IAClB,MAAM,KAAK,QAAQ,KAAK;AAAA,IACxB,MAAM,KAAK,EAAE;AAAA,EACd;AAAA,EACA,MAAM,KAAK,QAAQ,IAAI;AAAA,EACvB,OAAO,MAAM,KAAK;AAAA,CAAI;AAAA;AAAA;AAAA,EA5TvB;AAAA;;;;;;;;;;ACNA,0BAAS;AAeT,eAAsB,oBAAoB,CACzC,KACA,aACwB;AAAA,EACxB,MAAM,SAAuB,CAAC;AAAA,EAE9B,IAAI;AAAA,IAEH,IAAI,aAAc,WAChB;AAAA,IAGF,IAAI,CAAC,YAAY;AAAA,MAChB,MAAM,aAAa,KAAK,KAAK,YAAY,WAAW;AAAA,MACpD,MAAM,MAAM,eAAc,UAAU,EAAE;AAAA,MACtC,MAAM,MAAM,MACX,UAAG,MAAM,cAAc,MAAM,KAAK,IAAI,MAAM;AAAA,MAE7C,aAAc,KAAa;AAAA,IAC5B;AAAA,IACA,IAAI,MAAM,QAAQ,UAAU,GAAG;AAAA,MAC9B,WAAW,SAAS,YAAY;AAAA,QAC/B,MAAM,UAAU,OAAO,OAAO,WAAW,EAAE;AAAA,QAG3C,IACC,QAAQ,SAAS,OAAO,KACxB,QAAQ,SAAS,UAAU,KAC3B,QAAQ,SAAS,YAAY,KAC7B,QAAQ,SAAS,GAAG,GACnB;AAAA,UACD;AAAA,QACD;AAAA,QAEA,OAAO,KAAK;AAAA,UACX,MAAM;AAAA,QACP,CAAC;AAAA,MACF;AAAA,IACD;AAAA,IACC,OAAO,OAAO;AAAA,IACf,QAAQ,MAAM,uDAAuD,KAAK;AAAA;AAAA,EAG3E,OAAO;AAAA;AAGR,eAAe,oBAAoB,CAClC,KACA,YACA,aACwB;AAAA,EACxB,MAAM,iBAAiB,KACtB,KACA,YACA,eACA,GAAG,eACJ;AAAA,EACA,MAAM,SAAS,MAAM,IAAI,KAAK,cAAc,EAAE,OAAO;AAAA,EAErD,IAAI,CAAC;AAAA,IAAQ,OAAO;AAAA,EAEpB,MAAM,MAAM,GAAG,eAAc,cAAc,EAAE,OAAO,cAAc,MAAM,KAAK,IAAI,MAAM;AAAA,EACvF,MAAM,MAAM,MAAa;AAAA,EACzB,OAAO,IAAI,SAAS,CAAC;AAAA;AAGtB,SAAS,2BAA2B,CACnC,OACA,YACe;AAAA,EACf,MAAM,SAAuB,CAAC;AAAA,EAE9B,WAAW,QAAQ,OAAO;AAAA,IACzB,MAAM,OAAO,OAAO,KAAK,QAAQ,EAAE;AAAA,IACnC,IAAI,MAAM;AAAA,MACT,MAAM,QAAQ,KAAK,MAAM,SAAS,KAAK,MAAM,QAAQ,KAAK;AAAA,MAC1D,OAAO,KAAK;AAAA,QACX,MAAM;AAAA,QACN,SAAS;AAAA,QACT;AAAA,MACD,CAAC;AAAA,IACF;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAGR,SAAS,gBAAgB,CAAC,QAAsB,OAAoB;AAAA,EACnE,OAAO,KAAK,CAAC,GAAG,MAAM;AAAA,IACrB,MAAM,QAAQ,MAAM,KAAK,CAAC,MAAW,EAAE,SAAS,EAAE,IAAI;AAAA,IACtD,MAAM,QAAQ,MAAM,KAAK,CAAC,MAAW,EAAE,SAAS,EAAE,IAAI;AAAA,IAEtD,MAAM,QAAQ,OAAO,MAAM;AAAA,IAC3B,MAAM,QAAQ,OAAO,MAAM;AAAA,IAE3B,IAAI,SAAS,OAAO;AAAA,MACnB,OAAO,IAAI,KAAK,KAAK,EAAE,QAAQ,IAAI,IAAI,KAAK,KAAK,EAAE,QAAQ;AAAA,IAC5D;AAAA,IAEA,OAAO;AAAA,GACP;AAAA;AAMF,eAAsB,wBAAwB,CAC7C,KACA,cACA,aACA,YACqC;AAAA,EACrC,MAAM,iBAAiB,IAAI;AAAA,EAE3B,WAAW,cAAc,cAAa;AAAA,IACrC,IAAI,YAAY,oBAAoB,SAAS,UAAU,GAAG;AAAA,MACzD;AAAA,IACD;AAAA,IAEA,IAAI;AAAA,MACH,MAAM,QAAQ,MAAM,qBAAqB,KAAK,YAAY,WAAW;AAAA,MACrE,IAAI,CAAC;AAAA,QAAO;AAAA,MAEZ,MAAM,SAAS,4BAA4B,OAAO,UAAU;AAAA,MAE5D,IAAI,OAAO,SAAS,GAAG;AAAA,QACtB,iBAAiB,QAAQ,KAAK;AAAA,QAC9B,eAAe,IAAI,YAAY,MAAM;AAAA,MACtC;AAAA,MACC,OAAO,OAAO;AAAA,MACf,QAAQ,MACP,gDAAgD,eAChD,KACD;AAAA;AAAA,EAEF;AAAA,EAEA,OAAO;AAAA;AAGR,eAAe,eAAe,CAC7B,KACA,WACA,aACsB;AAAA,EACtB,IAAI;AAAA,IACH,MAAM,MAAM,KAAK,KAAK,OAAO,UAAU,UAAU,SAAS;AAAA,IAC1D,MAAM,SAAS,GAAG,eAAc,GAAG,EAAE,OAAO,cAAc,MAAM,KAAK,IAAI,MAAM;AAAA,IAC/E,OAAQ,MAAa;AAAA,IACpB,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAIT,eAAe,gBAAgB,CAC9B,QACA,WACmB;AAAA,EACnB,MAAM,UAAU,EAAE,QAAQ,IAAI;AAAA,EAC9B,OAAO,MAAM,OAAO;AAAA,IACnB,UAAU;AAAA,IACV,QAAQ,CAAC;AAAA,IACT,KAAK;AAAA,EACN,CAAC;AAAA;AAGF,SAAS,iBAAiB,CAAC,MAAmD;AAAA,EAC7E,OAAQ,KAAK,WAAW,KAAK,QAAQ,KAAK,MAAM,KAAK,QAAQ,KAAK;AAAA;AAKnE,SAAS,sBAAsB,CAAC,OAAc,WAAiC;AAAA,EAC9E,MAAM,UAAwB,CAAC;AAAA,EAE/B,WAAW,QAAQ,OAAO;AAAA,IACzB,IAAI,OAAO,SAAS,YAAY,SAAS;AAAA,MAAM;AAAA,IAE/C,MAAM,aAAa,kBAAkB,IAAI;AAAA,IACzC,IAAI,YAAY;AAAA,MACf,QAAQ,KAAK;AAAA,QACZ,MAAM,GAAG,aAAa;AAAA,QACtB,SAAS,UAAU,MAAM,GAAG,EAAE,OAAO,OAAO,EAAE;AAAA,MAC/C,CAAC;AAAA,IACF;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAOR,eAAsB,qBAAqB,CAC1C,KACA,cACA,aACqC;AAAA,EACrC,MAAM,gBAAgB,IAAI;AAAA,EAG1B,MAAM,gBAAiB,WACrB;AAAA,EAEF,IAAI,iBAAiB,MAAM,QAAQ,aAAa,GAAG;AAAA,IAGlD,WAAW,SAAS,cAAc;AAAA,MAEjC,MAAM,eAAe,cAAc,KAAK,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;AAAA,MAErE,IAAI,CAAC;AAAA,QAAc;AAAA,MAEnB,MAAM,MAAO,cAAsB;AAAA,MACnC,MAAM,SAAU,KAAa;AAAA,MAI7B,IAAI,OAAO,WAAW;AAAA,QAAY;AAAA,MAElC,MAAM,SAAS,MAAM,iBAAiB,QAAQ,MAAM,IAAI;AAAA,MACxD,MAAM,SAAS,iBAAiB,MAAM;AAAA,MAEtC,WAAW,SAAS,QAAQ;AAAA,QAC3B,IAAI,MAAM,WAAW;AAAA,UAAG;AAAA,QAExB,MAAM,UAAU,uBAAuB,OAAO,MAAM,IAAI;AAAA,QACxD,IAAI,QAAQ,SAAS,GAAG;AAAA,UACvB,cAAc,IAAI,MAAM,MAAM,OAAO;AAAA,QACtC;AAAA,MACD;AAAA,IACD;AAAA,EACD,EAAO;AAAA,IAEN,WAAW,SAAS,cAAc;AAAA,MACjC,MAAM,MAAM,MAAM,gBAAgB,KAAK,MAAM,MAAM,WAAW;AAAA,MAC9D,IAAI,CAAC;AAAA,QAAK;AAAA,MAEV,MAAM,MAAO,KAAa;AAAA,MAC1B,MAAM,SAAS,KAAK;AAAA,MAEpB,IAAI,OAAO,WAAW;AAAA,QAAY;AAAA,MAElC,MAAM,SAAS,MAAM,iBAAiB,QAAQ,MAAM,IAAI;AAAA,MACxD,MAAM,SAAS,iBAAiB,MAAM;AAAA,MAEtC,WAAW,SAAS,QAAQ;AAAA,QAC3B,IAAI,MAAM,WAAW;AAAA,UAAG;AAAA,QAExB,MAAM,UAAU,uBAAuB,OAAO,MAAM,IAAI;AAAA,QACxD,IAAI,QAAQ,SAAS,GAAG;AAAA,UACvB,cAAc,IAAI,MAAM,MAAM,OAAO;AAAA,QACtC;AAAA,MACD;AAAA,IACD;AAAA;AAAA,EAGD,OAAO;AAAA;AAMR,SAAS,gBAAgB,CAAC,KAAqB;AAAA,EAC9C,MAAM,SAAgB,CAAC;AAAA,EAEvB,IAAI,CAAC,OAAO,OAAO,QAAQ,UAAU;AAAA,IACpC,OAAO;AAAA,EACR;AAAA,EAEA,WAAW,SAAS,OAAO,OAAO,GAAG,GAAG;AAAA,IACvC,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,MACzB,OAAO,KAAK,KAAK;AAAA,IAClB,EAAO,SAAI,SAAS,OAAO,UAAU,UAAU;AAAA,MAC9C,OAAO,KAAK,GAAG,iBAAiB,KAAK,CAAC;AAAA,IACvC;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAGR,SAAS,cAAc,CAAC,OAAiB,YAAgC;AAAA,EACxE,IAAI,YAAY,UAAU;AAAA,IACzB,MAAM,KAAK,KAAK,WAAW,UAAU;AAAA,IACrC,MAAM,KAAK,EAAE;AAAA,EACd;AAAA,EAEA,IAAI,YAAY,iBAAiB;AAAA,IAChC,MAAM,KAAK,WAAW,eAAe;AAAA,IACrC,MAAM,KAAK,EAAE;AAAA,EACd;AAAA;AAGD,SAAS,iBAAiB,CACzB,cACA,YACoE;AAAA,EACpE,MAAM,WAAW,IAAI;AAAA,EACrB,MAAM,aAA2B,CAAC;AAAA,EAElC,WAAW,SAAS,cAAc;AAAA,IACjC,IAAI,mBAAmB,MAAM,MAAM,YAAY,aAAa,GAAG;AAAA,MAC9D;AAAA,IACD;AAAA,IAEA,IAAI,MAAM,SAAS,KAAK;AAAA,MACvB,WAAW,KAAK,KAAK;AAAA,MACrB;AAAA,IACD;AAAA,IAEA,MAAM,eAAe,MAAM,KAAK,MAAM,GAAG,EAAE,OAAO,OAAO,EAAE;AAAA,IAC3D,IAAI,CAAC,cAAc;AAAA,MAClB,WAAW,KAAK,KAAK;AAAA,IACtB,EAAO;AAAA,MACN,IAAI,CAAC,SAAS,IAAI,YAAY,GAAG;AAAA,QAChC,SAAS,IAAI,cAAc,CAAC,CAAC;AAAA,MAC9B;AAAA,MACA,SAAS,IAAI,YAAY,GAAG,KAAK,KAAK;AAAA;AAAA,EAExC;AAAA,EAEA,OAAO,EAAE,UAAU,WAAW;AAAA;AAG/B,SAAS,cAAc,CAAC,WAAmB,SAAyB;AAAA,EACnE,MAAM,UAAU,cAAc,MAAM,WAAW;AAAA,EAC/C,OAAO,GAAG,UAAU;AAAA;AAGrB,SAAS,aAAa,CAAC,OAA2B;AAAA,EACjD,OACC,MAAM,UACL,MAAM,SAAS,MAAM,SAAS,MAAM,KAAK,MAAM,GAAG,EAAE,IAAI,KAAK;AAAA;AAIhE,SAAS,aAAa,CACrB,OACA,YACA,SACA,oBACO;AAAA,EACP,IAAI,sBAAsB,WAAW,WAAW;AAAA,IAAG;AAAA,EAEnD,WAAW,SAAS,YAAY;AAAA,IAC/B,MAAM,QAAQ,cAAc,KAAK;AAAA,IACjC,MAAM,MAAM,eAAe,MAAM,MAAM,OAAO;AAAA,IAC9C,MAAM,KAAK,MAAM,UAAU,MAAM;AAAA,EAClC;AAAA,EACA,MAAM,KAAK,EAAE;AAAA;AAGd,SAAS,oBAAoB,CAC5B,OACA,YACA,QACA,SACA,YACO;AAAA,EACP,MAAM,iBAAiB,OAAO,OAC7B,CAAC,MAAM,CAAC,mBAAmB,EAAE,MAAM,YAAY,aAAa,CAC7D;AAAA,EAEA,IAAI,eAAe,WAAW;AAAA,IAAG;AAAA,EAEjC,MAAM,cAAc,WAAW,OAAO,CAAC,EAAE,YAAY,IAAI,WAAW,MAAM,CAAC;AAAA,EAC3E,MAAM,KAAK,MAAM,aAAa;AAAA,EAC9B,MAAM,KAAK,EAAE;AAAA,EAEb,WAAW,SAAS,gBAAgB;AAAA,IACnC,MAAM,QAAQ,MAAM,SAAS,MAAM,KAAK,MAAM,GAAG,EAAE,IAAI,KAAK;AAAA,IAC5D,MAAM,MAAM,GAAG,UAAU,MAAM;AAAA,IAC/B,MAAM,KAAK,MAAM,UAAU,MAAM;AAAA,EAClC;AAAA,EACA,MAAM,KAAK,EAAE;AAAA;AAGd,SAAS,oBAAoB,CAC5B,SACA,oBACA,kBACU;AAAA,EACV,OAAO,CAAC,sBAAsB,YAAY;AAAA;AAG3C,SAAS,iBAAiB,CACzB,OACA,cACA,QACA,SACA,oBACA,kBACA,YACO;AAAA,EACP,MAAM,eAAe,aAAa,MAAM,GAAG,EAAE,OAAO,OAAO,EAAE;AAAA,EAE7D,IACC,CAAC,qBAAqB,cAAc,oBAAoB,gBAAgB,GACvE;AAAA,IACD;AAAA,EACD;AAAA,EAEA,MAAM,iBAAiB,OAAO,OAC7B,CAAC,MAAM,CAAC,mBAAmB,EAAE,MAAM,YAAY,aAAa,CAC7D;AAAA,EAEA,IAAI,eAAe,WAAW;AAAA,IAAG;AAAA,EAEjC,MAAM,cACL,cAAc,OAAO,CAAC,EAAE,YAAY,IAAI,cAAc,MAAM,CAAC,KAAK;AAAA,EACnE,MAAM,KAAK,MAAM,aAAa;AAAA,EAC9B,MAAM,KAAK,EAAE;AAAA,EAEb,WAAW,SAAS,gBAAgB;AAAA,IACnC,MAAM,QAAQ,MAAM,SAAS,MAAM,KAAK,MAAM,GAAG,EAAE,IAAI,KAAK;AAAA,IAC5D,MAAM,MAAM,GAAG,UAAU,MAAM;AAAA,IAC/B,MAAM,KAAK,MAAM,UAAU,MAAM;AAAA,EAClC;AAAA,EACA,MAAM,KAAK,EAAE;AAAA;AAGd,SAAS,gBAAgB,CACxB,OACA,SACA,QACA,SACA,oBACA,kBACA,gBACA,YACO;AAAA,EACP,IAAI,CAAC,qBAAqB,SAAS,oBAAoB,gBAAgB,GAAG;AAAA,IACzE;AAAA,EACD;AAAA,EAEA,MAAM,iBAAiB,OAAO,OAC7B,CAAC,MAAM,CAAC,mBAAmB,EAAE,MAAM,YAAY,aAAa,CAC7D;AAAA,EAEA,IAAI,eAAe,WAAW,KAAK,eAAe,IAAI,OAAO;AAAA,IAAG;AAAA,EAEhE,MAAM,cAAc,QAAQ,OAAO,CAAC,EAAE,YAAY,IAAI,QAAQ,MAAM,CAAC;AAAA,EACrE,MAAM,KAAK,MAAM,aAAa;AAAA,EAC9B,MAAM,KAAK,EAAE;AAAA,EAEb,WAAW,SAAS,gBAAgB;AAAA,IACnC,MAAM,QAAQ,MAAM,SAAS,MAAM,KAAK,MAAM,GAAG,EAAE,IAAI,KAAK;AAAA,IAC5D,MAAM,MAAM,GAAG,UAAU,MAAM;AAAA,IAC/B,MAAM,KAAK,MAAM,UAAU,MAAM;AAAA,EAClC;AAAA,EACA,MAAM,KAAK,EAAE;AAAA;AAOd,eAAsB,iBAAiB,CAAC,SAMpB;AAAA,EACnB,QAAQ,KAAK,2BAAa,SAAS,aAAa,eAAe;AAAA,EAE/D,MAAM,QAAkB,CAAC;AAAA,EACzB,eAAe,OAAO,UAAU;AAAA,EAEhC,MAAM,eAAe,MAAM,qBAAqB,KAAK,WAAW;AAAA,EAChE,MAAM,iBAAiB,MAAM,yBAC5B,KACA,cACA,aACA,UACD;AAAA,EACA,MAAM,gBAAgB,MAAM,sBAC3B,KACA,cACA,WACD;AAAA,EAEA,MAAM,qBAAqB,aAAY,WAAW;AAAA,EAClD,MAAM,mBAAmB,qBAAqB,aAAY,KAAK;AAAA,EAE/D,QAAQ,UAAU,eAAe,kBAAkB,cAAc,UAAU;AAAA,EAE3E,cAAc,OAAO,YAAY,SAAS,kBAAkB;AAAA,EAE5D,YAAY,YAAY,WAAW,eAAe,QAAQ,GAAG;AAAA,IAC5D,IAAI,OAAO,SAAS,GAAG;AAAA,MACtB,qBAAqB,OAAO,YAAY,QAAQ,SAAS,UAAU;AAAA,IACpE;AAAA,EACD;AAAA,EAEA,YAAY,cAAc,WAAW,cAAc,QAAQ,GAAG;AAAA,IAC7D,IAAI,OAAO,SAAS,GAAG;AAAA,MACtB,kBACC,OACA,cACA,QACA,SACA,oBACA,kBACA,UACD;AAAA,IACD;AAAA,EACD;AAAA,EAEA,YAAY,SAAS,WAAW,SAAS,QAAQ,GAAG;AAAA,IACnD,IAAI,OAAO,SAAS,GAAG;AAAA,MACtB,iBACC,OACA,SACA,QACA,SACA,oBACA,kBACA,gBACA,UACD;AAAA,IACD;AAAA,EACD;AAAA,EAEA,MAAM,KAAK,KAAK;AAAA,EAChB,MAAM,KAAK,EAAE;AAAA,EACb,MAAM,KACL,kEACD;AAAA,EAEA,OAAO,MAAM,KAAK;AAAA,CAAI;AAAA;AAAA;AAAA,EA9hBvB;AAAA;;;ACKA,SAAS,WAAW,CAAC,SAAiB,YAAoC;AAAA,EACzE,MAAM,QAAkB,CAAC;AAAA,EAEzB,IAAI,YAAY,UAAU;AAAA,IACzB,MAAM,KAAK,KAAK,WAAW,UAAU;AAAA,IACrC,MAAM,KAAK,EAAE;AAAA,EACd;AAAA,EAEA,IAAI,YAAY,iBAAiB;AAAA,IAChC,MAAM,KAAK,WAAW,eAAe;AAAA,IACrC,MAAM,KAAK,EAAE;AAAA,EACd;AAAA,EAEA,IAAI,MAAM,SAAS,GAAG;AAAA,IACrB,MAAM,KAAK,GAAG,mBAAmB;AAAA,IACjC,MAAM,KAAK,EAAE;AAAA,IACb,MAAM,KAAK,KAAK;AAAA,IAChB,MAAM,KAAK,EAAE;AAAA,EACd;AAAA,EAEA,OAAO;AAAA;AAGR,eAAe,iBAAiB,CAC/B,KACA,cACA,aACA,YACwB;AAAA,EACxB;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,MACG;AAAA,EAEJ,MAAM,eAAe,MAAM,sBAAqB,KAAK,WAAW;AAAA,EAChE,MAAM,iBAAiB,MAAM,0BAC5B,KACA,cACA,aACA,UACD;AAAA,EACA,MAAM,gBAAgB,MAAM,uBAC3B,KACA,cACA,WACD;AAAA,EAEA,MAAM,YAA0B,CAAC;AAAA,EAEjC,WAAW,SAAS,cAAc;AAAA,IACjC,IAAI,CAAC,mBAAmB,MAAM,MAAM,YAAY,aAAa,GAAG;AAAA,MAC/D,UAAU,KAAK,EAAE,MAAM,MAAM,KAAK,CAAC;AAAA,IACpC;AAAA,EACD;AAAA,EAEA,YAAY,aAAa,WAAW,eAAe,QAAQ,GAAG;AAAA,IAC7D,WAAW,SAAS,QAAQ;AAAA,MAC3B,IAAI,CAAC,mBAAmB,MAAM,MAAM,YAAY,aAAa,GAAG;AAAA,QAC/D,UAAU,KAAK,EAAE,MAAM,MAAM,KAAK,CAAC;AAAA,MACpC;AAAA,IACD;AAAA,EACD;AAAA,EAEA,YAAY,eAAe,WAAW,cAAc,QAAQ,GAAG;AAAA,IAC9D,WAAW,SAAS,QAAQ;AAAA,MAC3B,IAAI,CAAC,mBAAmB,MAAM,MAAM,YAAY,aAAa,GAAG;AAAA,QAC/D,UAAU,KAAK,EAAE,MAAM,MAAM,KAAK,CAAC;AAAA,MACpC;AAAA,IACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAGR,SAAS,kBAAkB,CAC1B,SACA,WACA,SACW;AAAA,EACX,MAAM,QAAkB,CAAC;AAAA,EACzB,MAAM,QAAQ,QAAQ,MAAM;AAAA,CAAI;AAAA,EAChC,MAAM,QAAQ,MAAM,MAAM;AAAA,EAC1B,MAAM,OAAO,MAAM,MAAM,MAAM,OAAO,KAAK,IAAI,CAAC,EAAE,KAAK;AAAA,CAAI;AAAA,EAE3D,MAAM,UAAU,cAAc,MAAM,WAAW;AAAA,EAC/C,MAAM,MAAM,GAAG,UAAU;AAAA,EAEzB,MAAM,KAAK,KAAK;AAAA,EAChB,MAAM,KAAK,EAAE;AAAA,EACb,MAAM,KAAK,GAAG;AAAA,EACd,MAAM,KAAK,EAAE;AAAA,EACb,IAAI,KAAK,KAAK,GAAG;AAAA,IAChB,MAAM,KAAK,IAAI;AAAA,IACf,MAAM,KAAK,EAAE;AAAA,EACd;AAAA,EACA,MAAM,KAAK,KAAK;AAAA,EAChB,MAAM,KAAK,EAAE;AAAA,EAEb,OAAO;AAAA;AAGR,eAAe,oBAAoB,CAClC,QACA,SASuE;AAAA,EACvE,MAAM,QAAkB,CAAC;AAAA,EACzB,MAAM,UAAU,QAAQ,YAAY,WAAW;AAAA,EAC/C,IAAI,YAAY;AAAA,EAChB,IAAI,cAAc;AAAA,EAElB,WAAW,SAAS,QAAQ;AAAA,IAC3B,IAAI;AAAA,MACH,MAAM,UAAU,MAAM,sBAAsB;AAAA,QAC3C,UAAU,MAAM;AAAA,QAChB,eAAe,QAAQ;AAAA,QACvB,WAAW,QAAQ;AAAA,QACnB,KAAK,QAAQ;AAAA,QACb,aAAa,QAAQ;AAAA,QACrB,WAAW,QAAQ;AAAA,QACnB,QAAQ;AAAA,QACR,YAAY,QAAQ;AAAA,MACrB,CAAC;AAAA,MAED,MAAM,cAAc,OAAO,WAAW,SAAS,MAAM;AAAA,MACrD,IAAI,cAAc,cAAc,SAAS;AAAA,QACxC,QAAQ,KACP,sCAAsC,+BAA+B,iBACtE;AAAA,QACA;AAAA,MACD;AAAA,MAEA,MAAM,aAAa,mBAClB,SACA,MAAM,MACN,QAAQ,OACT;AAAA,MACA,MAAM,KAAK,GAAG,UAAU;AAAA,MAExB;AAAA,MACA,eAAe;AAAA,MACd,OAAO,OAAO;AAAA,MACf,QAAQ,KACP,gDAAgD,MAAM,SACtD,KACD;AAAA;AAAA,EAEF;AAAA,EAEA,OAAO,EAAE,OAAO,WAAW,YAAY;AAAA;AAGxC,SAAS,WAAW,CAAC,OAAuB;AAAA,EAC3C,IAAI,MAAM,WAAW;AAAA,IAAG;AAAA,EAGxB,IAAI,MAAM,MAAM,SAAS,OAAO;AAAA,IAAI,MAAM,IAAI;AAAA,EAC9C,IAAI,MAAM,MAAM,SAAS,OAAO;AAAA,IAAO,MAAM,IAAI;AAAA,EACjD,IAAI,MAAM,MAAM,SAAS,OAAO;AAAA,IAAI,MAAM,IAAI;AAAA,EAE9C,MAAM,KAAK,KAAK;AAAA,EAChB,MAAM,KAAK,EAAE;AAAA,EACb,MAAM,KACL,kEACD;AAAA;AAOD,eAAsB,uBAAuB,CAAC,SAY3C;AAAA,EACF,QAAQ,KAAK,2BAAa,SAAS,aAAa,eAAe;AAAA,EAE/D,MAAM,QAAQ,YAAY,SAAS,UAAU;AAAA,EAE7C,MAAM,YAAY,MAAM,kBACvB,KACA,cACA,aACA,UACD;AAAA,EAEA,MAAM,WAAW,YAAY,YAAY;AAAA,EACzC,MAAM,kBAAkB,UAAU,MAAM,GAAG,QAAQ;AAAA,EAEnD,MAAM,YAAY,MAAM,qBAAqB,iBAAiB,OAAO;AAAA,EACrE,MAAM,KAAK,GAAG,UAAU,KAAK;AAAA,EAE7B,YAAY,KAAK;AAAA,EAEjB,MAAM,cAAc,MAAM,KAAK;AAAA,CAAI;AAAA,EACnC,MAAM,WAAW,OAAO,WAAW,aAAa,MAAM;AAAA,EAEtD,OAAO;AAAA,IACN,SAAS;AAAA,IACT,OAAO,EAAE,WAAW,UAAU,WAAW,SAAS;AAAA,EACnD;AAAA;AAAA;AAAA,EAhOD;AAAA;;;;ECUA;AAAA,EASA;AAAA,EACA;AAAA;;;ACrBA;AAUA,eAAsB,kBAAkB,CACvC,WACA,OACA,UAII,CAAC,GACa;AAAA,EAClB,MAAM,QAAQ,QAAQ,SAAS;AAAA,EAC/B,MAAM,SAAS,QAAQ,UAAU;AAAA,EAEjC,IAAI;AAAA,IAEH,QAAQ,kBAAkB,MAAa;AAAA,IAGvC,MAAM,UAAU,cAAc,WAAW,KAAK;AAAA,IAG9C,MAAM,gBAAgB,IAAI,cAAc,SAAS;AAAA,MAChD;AAAA,MACA;AAAA,MACA,OACC,QAAQ,OAAO,UAAU,QAAQ,MAAM,SAAS,IAC5C,QAAQ,QACT;AAAA,IACL,CAAC;AAAA,IAGD,MAAM,cAAc,MAAM,cAAc,YAAY;AAAA,IACpD,OAAO,OAAO,KAAK,WAAW;AAAA,IAC7B,OAAO,OAAO;AAAA,IACf,QAAQ,MAAM,wCAAwC,KAAK;AAAA,IAC3D,MAAM,IAAI,MACT,8BAA8B,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,GACpF;AAAA;AAAA;AAQK,SAAS,iBAAiB;AAAA,EAChC;AAAA,EACA;AAAA,EACA,UAAU;AAAA,GACM;AAAA,EAChB,MAAM,QAAQ,MAAM,SAAS;AAAA,EAC7B,MAAM,cAAc,MAAM,eAAe;AAAA,EACzC,MAAM,WAAW,gBAAgB,MAAM,aAAa,MAAM,YAAY;AAAA,EAEtE,OAAO,cACN,OACA;AAAA,IACC,OAAO;AAAA,MACN,SAAS;AAAA,MACT,eAAe;AAAA,MACf,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,iBAAiB;AAAA,MACjB,SAAS;AAAA,MACT,YAAY;AAAA,IACb;AAAA,EACD,GACA,cACC,OACA;AAAA,IACC,OAAO;AAAA,MACN,SAAS;AAAA,MACT,eAAe;AAAA,MACf,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,SAAS;AAAA,MACT,gBAAgB;AAAA,IACjB;AAAA,EACD,GACA,cACC,OACA;AAAA,IACC,OAAO;AAAA,MACN,SAAS;AAAA,MACT,eAAe;AAAA,MACf,KAAK;AAAA,IACN;AAAA,EACD,GACA,cACC,MACA;AAAA,IACC,OAAO;AAAA,MACN,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,OAAO;AAAA,IACR;AAAA,EACD,GACA,KACD,GACA,eACC,cACC,KACA;AAAA,IACC,OAAO;AAAA,MACN,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,OAAO;AAAA,IACR;AAAA,EACD,GACA,WACD,CACF,GACA,cACC,OACA;AAAA,IACC,OAAO;AAAA,MACN,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,gBAAgB;AAAA,IACjB;AAAA,EACD,GACA,YACC,cACC,OACA;AAAA,IACC,OAAO;AAAA,MACN,SAAS;AAAA,MACT,UAAU;AAAA,MACV,OAAO;AAAA,IACR;AAAA,EACD,GACA,QACD,GACD,UACC,cAAc,OAAO;AAAA,IACpB,KAAK;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO;AAAA,MACN,cAAc;AAAA,MACd,WAAW;AAAA,IACZ;AAAA,EACD,CAAC,GACF,CAAC,UACA,cAAc,OAAO;AAAA,IACpB,OAAO;AAAA,MACN,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,iBAAiB;AAAA,IAClB;AAAA,EACD,CAAC,CACH,CACD,CACD;AAAA;AAAA;;;;ECzKD;AAAA,EAKA;AAAA,EACA;AAAA;;;ACUA,eAAe,uBAAuB,CACrC,KACA,aACoB;AAAA,EACpB,MAAM,SAAmB,CAAC;AAAA,EAE1B,IAAI;AAAA,IAEH,IAAI,cAAe,WACjB;AAAA,IAGF,IAAI,CAAC,aAAa;AAAA,MACjB,MAAM,aAAa,KAAK,KAAK,YAAY,WAAW;AAAA,MACpD,MAAM,MAAM,IAAI,cAAc,UAAU,EAAE;AAAA,MAC1C,MAAM,MAAM,MACX,UAAG,MAAM,cAAc,MAAM,KAAK,IAAI,MAAM;AAAA,MAE7C,cAAe,KAAa;AAAA,IAC7B;AAAA,IACA,IAAI,MAAM,QAAQ,WAAW,GAAG;AAAA,MAC/B,WAAW,SAAS,aAAa;AAAA,QAChC,MAAM,UAAU,OAAO,OAAO,WAAW,EAAE;AAAA,QAG3C,IACC,QAAQ,SAAS,OAAO,KACxB,QAAQ,SAAS,UAAU,KAC3B,QAAQ,SAAS,YAAY,GAC5B;AAAA,UACD;AAAA,QACD;AAAA,QAGA,OAAO,KAAK,OAAO;AAAA,MACpB;AAAA,IACD;AAAA,IACC,OAAO,OAAO;AAAA,IACf,QAAQ,MAAM,uDAAuD,KAAK;AAAA;AAAA,EAG3E,OAAO;AAAA;AAMR,SAAS,wBAAwB,CAAC,eAA0C;AAAA,EAC3E,OAAO,eAAe,iBAAiB,CAAC;AAAA;AAMzC,SAAS,sBAAsB,CAAC,WAAsC;AAAA,EACrE,IAAI,CAAC,aAAa,UAAU,WAAW,GAAG;AAAA,IACzC,OAAO,CAAC;AAAA,EACT;AAAA,EAEA,MAAM,UAAoB,CAAC;AAAA,EAC3B,WAAW,YAAY,WAAW;AAAA,IAEjC,IAAI,SAAS,YAAY,OAAO;AAAA,MAC/B;AAAA,IACD;AAAA,IAGA,IAAI,OAAO,SAAS,WAAW,UAAU;AAAA,MACxC,QAAQ,KAAK,SAAS,MAAM;AAAA,IAC7B;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAMR,eAAe,kBAAkB,CAChC,KACA,aACA,cACA,eACA,WACiC;AAAA,EAEjC,MAAM,SAAS,MAAM,wBAAwB,KAAK,WAAW;AAAA,EAG7D,MAAM,wBACL,aAAa,qBAAqB,QAC/B,yBAAyB,aAAa,IACtC,CAAC;AAAA,EAGL,MAAM,sBACL,aAAa,sBAAsB,QAChC,uBAAuB,SAAS,IAChC,CAAC;AAAA,EAEL,OAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA;AAAA;;;ACrHD,SAAS,oBAAoB,CAAC,UAA0C;AAAA,EACvE,IAAI,SAAS,SAAS;AAAA,IAAG,OAAO;AAAA,EAEhC,OAAO;AAAA,IACN;AAAA,MACC,WAAW;AAAA,MACX,OAAO,CAAC,GAAG;AAAA,IACZ;AAAA,EACD;AAAA;AAGD,SAAS,gBAAgB,CAAC,YAA+C;AAAA,EACxE,OAAO,IAAI,IAAY;AAAA,IACtB,GAAG,WAAU;AAAA,IACb,GAAG,WAAU;AAAA,EACd,CAAC;AAAA;AAGF,SAAS,kBAAkB,CAAC,OAAiB,QAA4B;AAAA,EACxE,IAAI,CAAC,OAAO,SAAS,OAAO,MAAM,WAAW;AAAA,IAAG;AAAA,EAEhD,WAAW,SAAQ,OAAO,OAAO;AAAA,IAChC,MAAM,KAAK,UAAU,OAAM;AAAA,EAC5B;AAAA;AAGD,SAAS,YAAY,CACpB,QACA,eACc;AAAA,EACd,MAAM,YAAY,IAAI,IAAI,OAAO,YAAY,CAAC,CAAC;AAAA,EAE/C,IAAI,OAAO,cAAc,KAAK;AAAA,IAC7B,WAAW,SAAQ,eAAe;AAAA,MACjC,UAAU,IAAI,KAAI;AAAA,IACnB;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAGR,SAAS,qBAAqB,CAC7B,OACA,QACA,eACO;AAAA,EACP,MAAM,YAAY,aAAa,QAAQ,aAAa;AAAA,EAEpD,IAAI,UAAU,OAAO,GAAG;AAAA,IACvB,WAAW,SAAQ,MAAM,KAAK,SAAS,EAAE,KAAK,GAAG;AAAA,MAChD,MAAM,KAAK,aAAa,OAAM;AAAA,IAC/B;AAAA,EACD;AAAA;AAGD,SAAS,cAAc,CACtB,OACA,QACA,eACO;AAAA,EACP,MAAM,KAAK,eAAe,OAAO,WAAW;AAAA,EAE5C,mBAAmB,OAAO,MAAM;AAAA,EAChC,sBAAsB,OAAO,QAAQ,aAAa;AAAA,EAElD,IAAI,OAAO,eAAe,WAAW;AAAA,IACpC,MAAM,KAAK,gBAAgB,OAAO,YAAY;AAAA,EAC/C;AAAA,EAEA,MAAM,KAAK,EAAE;AAAA;AAGd,SAAS,mBAAmB,CAC3B,OACA,YACA,mBACO;AAAA,EACP,MAAM,wBAAwB,kBAAkB,KAC/C,CAAC,MAAM,EAAE,cAAc,OAAO,EAAE,eAAe,SAChD;AAAA,EAEA,IAAI,eAAe,aAAa,CAAC,uBAAuB;AAAA,IACvD,MAAM,KAAK,gBAAgB,YAAY;AAAA,IACvC,MAAM,KAAK,EAAE;AAAA,EACd;AAAA;AAGD,SAAS,mBAAmB,CAC3B,OACA,cACA,gBACO;AAAA,EACP,IACC,aAAa,qBAAqB,SAClC,kBACA,aAAa,SACZ;AAAA,IACD,MAAM,KAAK,YAAY,aAAa,qBAAqB;AAAA,EAC1D;AAAA;AAMM,SAAS,cAAc,CAC7B,YACA,cACA,gBACS;AAAA,EACT,MAAM,QAAkB,CAAC;AAAA,EACzB,QAAQ,WAAW,CAAC,GAAG,aAAa,eAAe;AAAA,EAEnD,MAAM,oBAAoB,qBAAqB,QAAQ;AAAA,EACvD,MAAM,gBAAgB,iBAAiB,UAAS;AAAA,EAEhD,WAAW,UAAU,mBAAmB;AAAA,IACvC,eAAe,OAAO,QAAQ,aAAa;AAAA,EAC5C;AAAA,EAEA,oBAAoB,OAAO,YAAY,iBAAiB;AAAA,EAExD,IAAI,aAAa;AAAA,IAChB,MAAM,KAAK,YAAY,KAAK,CAAC;AAAA,IAC7B,MAAM,KAAK,EAAE;AAAA,EACd;AAAA,EAEA,oBAAoB,OAAO,cAAc,cAAc;AAAA,EAEvD,OAAO,GAAG,MAAM,KAAK;AAAA,CAAI,EAAE,KAAK;AAAA;AAAA;;;AC9FjC,SAAS,eAAe,CAAC,UAAqC;AAAA,EAC7D,MAAM,SAAS,YAAY,OAAO,OAAO,WAAW;AAAA,EACpD,OAAO,OAAO,IAAI,CAAC,WAAW;AAAA,IAC7B,WAAW;AAAA,IACX,UAAU,CAAC,GAAG;AAAA,EACf,EAAE;AAAA;AAQH,SAAS,eAAe,CAAC,UAAqC;AAAA,EAC7D,MAAM,SAAS,YAAY,OAAO,OAAO,WAAW;AAAA,EACpD,OAAO,OAAO,IAAI,CAAC,WAAW;AAAA,IAC7B,WAAW;AAAA,IACX,OAAO,CAAC,GAAG;AAAA,EACZ,EAAE;AAAA;AAOH,SAAS,uBAAuB,GAAmB;AAAA,EAClD,MAAM,mBAAmB;AAAA,IACxB,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,YAAY;AAAA,EACb;AAAA,EAEA,OAAO,iBAAiB,IAAI,CAAC,WAAW;AAAA,IACvC,WAAW;AAAA,IACX,UAAU,CAAC,GAAG;AAAA,EACf,EAAE;AAAA;AAQH,SAAS,mBAAmB,CAAC,UAAqC;AAAA,EACjE,MAAM,SAAS,YAAY,OAAO,OAAO,eAAe;AAAA,EACxD,OAAO,OAAO,IAAI,CAAC,WAAW;AAAA,IAC7B,WAAW;AAAA,IACX,OAAO,CAAC,GAAG;AAAA,EACZ,EAAE;AAAA;AAQH,SAAS,mBAAmB,CAAC,UAAqC;AAAA,EACjE,MAAM,SAAS,YAAY,OAAO,OAAO,eAAe;AAAA,EACxD,OAAO,OAAO,IAAI,CAAC,WAAW;AAAA,IAC7B,WAAW;AAAA,IACX,UAAU,CAAC,GAAG;AAAA,EACf,EAAE;AAAA;AAAA,IA9FG,aAkBA;AAAA;AAAA,EAlBA,cAAc;AAAA,IACnB,KAAK;AAAA,IACL,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,iBAAiB;AAAA,IACjB,UAAU;AAAA,IACV,gBAAgB;AAAA,IAChB,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,cAAc;AAAA,IACd,QAAQ;AAAA,EACT;AAAA,EAKM,kBAAkB;AAAA,IACvB,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,IACP,aAAa;AAAA,IACb,aAAa;AAAA,IACb,WAAW;AAAA,EACZ;AAAA;;;;EC9BA;AAAA,EAEA;AAAA;;;;;;;;;;ACuCA,eAAe,iBAAgB,CAC9B,KACA,aAC6B;AAAA,EAC7B,IAAI,SAAU,WAAuC;AAAA,EAIrD,IAAI,CAAC,QAAQ;AAAA,IACZ,MAAM,aAAa,KAAK,KAAK,YAAY,WAAW;AAAA,IACpD,MAAM,MAAM,IAAI,cAAc,UAAU,EAAE;AAAA,IAC1C,MAAM,MAAM,MAAa,UAAG,MAAM,cAAc,MAAM,KAAK,IAAI,MAAM;AAAA,IACrE,SAAU,KAAa;AAAA,EACxB;AAAA,EAEA,OAAO;AAAA;AAGR,SAAS,eAAe,CAAC,SAA0B;AAAA,EAClD,OACC,QAAQ,SAAS,OAAO,KACxB,QAAQ,SAAS,UAAU,KAC3B,QAAQ,SAAS,YAAY;AAAA;AAI/B,SAAS,eAAe,CACvB,OACA,cACA,eACO;AAAA,EACP,MAAM,UAAU,OAAO,OAAO,WAAW,EAAE;AAAA,EAC3C,MAAM,QAAO,OAAO,OAAO,QAAQ,EAAE;AAAA,EAErC,IAAI,gBAAgB,OAAO;AAAA,IAAG;AAAA,EAE9B,MAAM,YAAY,QAAQ,SAAS,GAAG;AAAA,EACtC,MAAM,eAA6B,EAAE,aAAM,SAAS,UAAU;AAAA,EAE9D,IAAI,WAAW;AAAA,IACd,cAAc,KAAK,YAAY;AAAA,EAChC,EAAO;AAAA,IACN,aAAa,KAAK,YAAY;AAAA;AAAA;AAOhC,eAAe,cAAc,CAC5B,KACA,aAC2E;AAAA,EAC3E,MAAM,eAA+B,CAAC;AAAA,EACtC,MAAM,gBAAgC,CAAC;AAAA,EAEvC,IAAI;AAAA,IACH,MAAM,SAAS,MAAM,kBAAiB,KAAK,WAAW;AAAA,IAEtD,IAAI,MAAM,QAAQ,MAAM,GAAG;AAAA,MAC1B,WAAW,SAAS,QAAQ;AAAA,QAC3B,gBAAgB,OAAO,cAAc,aAAa;AAAA,MACnD;AAAA,IACD;AAAA,IACC,OAAO,OAAO;AAAA,IACf,QAAQ,MAAM,oDAAoD,KAAK;AAAA;AAAA,EAGxE,OAAO,EAAE,cAAc,cAAc;AAAA;AAMtC,eAAe,yBAAyB,CACvC,KACA,YACA,aACA,SAC0B;AAAA,EAC1B,MAAM,UAA0B,CAAC;AAAA,EAEjC,IAAI;AAAA,IAEH,MAAM,iBAAiB,KACtB,KACA,YACA,eACA,GAAG,eACJ;AAAA,IACA,MAAM,SAAS,MAAM,IAAI,KAAK,cAAc,EAAE,OAAO;AAAA,IAErD,IAAI,CAAC,QAAQ;AAAA,MACZ,OAAO;AAAA,IACR;AAAA,IAEA,MAAM,MAAM,GAAG,IAAI,cAAc,cAAc,EAAE,OAAO,cAAc,MAAM,KAAK,IAAI,MAAM;AAAA,IAC3F,MAAM,MAAM,MAAa;AAAA,IACzB,MAAM,QAAQ,IAAI,SAAS,CAAC;AAAA,IAE5B,WAAW,QAAQ,OAAO;AAAA,MACzB,MAAM,OAAO,OAAO,KAAK,QAAQ,EAAE;AAAA,MACnC,MAAM,OAAO,KAAK,QAAQ,CAAC;AAAA,MAE3B,IAAI,MAAM;AAAA,QACT,MAAM,QAAsB;AAAA,UAC3B,KAAK,GAAG,UAAU;AAAA,UAClB,SAAS,KAAK,OAAO,IAAI,KAAK,KAAK,IAAI,EAAE,YAAY,IAAI;AAAA,UACzD,YAAY;AAAA,UACZ,UAAU;AAAA,QACX;AAAA,QACA,QAAQ,KAAK,KAAK;AAAA,MACnB;AAAA,IACD;AAAA,IACC,OAAO,OAAO;AAAA,IACf,QAAQ,MACP,2CAA2C,eAC3C,KACD;AAAA;AAAA,EAGD,OAAO;AAAA;AAMR,eAAe,sBAAqB,CACnC,KACA,cACA,aACA,SACA,eACuC;AAAA,EACvC,MAAM,gBAAgB,IAAI;AAAA,EAG1B,MAAM,gBAAiB,WACrB;AAAA,EAEF,IAAI,iBAAiB,MAAM,QAAQ,aAAa,GAAG;AAAA,IAIlD,MAAM,gBAAgB,aAAa,IAAI,OAAO,UAAU;AAAA,MAEvD,IACC,eAAe,kBAAkB,KAAK,CAAC,aACtC,MAAM,QAAQ,WAAW,QAAQ,CAClC,GACC;AAAA,QACD,OAAO;AAAA,MACR;AAAA,MAGA,MAAM,eAAe,cAAc,KAClC,CAAC,MAAM,GAAG,YAAY,MAAM,OAC7B;AAAA,MAEA,IAAI,CAAC;AAAA,QAAc,OAAO;AAAA,MAE1B,MAAM,MAAO,cAAsB;AAAA,MACnC,MAAM,SAAU,KAAa;AAAA,MAI7B,IAAI,OAAO,WAAW,YAAY;AAAA,QACjC,IAAI;AAAA,UAEH,MAAM,UAAU,EAAE,QAAQ,IAAI;AAAA,UAC9B,MAAM,SAAS,MAAM,OAAO;AAAA,YAC3B,UAAU,MAAM;AAAA,YAChB,QAAQ,CAAC;AAAA,YACT,KAAK;AAAA,UACN,CAAC;AAAA,UAGD,MAAM,UAAU,uBACf,QACA,MAAM,SACN,SACA,aACD;AAAA,UAEA,IAAI,QAAQ,SAAS,GAAG;AAAA,YACvB,OAAO,EAAE,SAAS,MAAM,SAAS,QAAQ;AAAA,UAC1C;AAAA,UACC,MAAM;AAAA,MAGT;AAAA,MAEA,OAAO;AAAA,KACP;AAAA,IAED,MAAM,UAAU,MAAM,QAAQ,IAAI,aAAa;AAAA,IAC/C,WAAW,UAAU,SAAS;AAAA,MAC7B,IAAI,QAAQ;AAAA,QACX,cAAc,IAAI,OAAO,SAAS,OAAO,OAAO;AAAA,MACjD;AAAA,IACD;AAAA,EACD,EAAO;AAAA,IAGN,MAAM,gBAAgB,aAAa,IAAI,OAAO,UAAU;AAAA,MAEvD,IACC,eAAe,kBAAkB,KAAK,CAAC,aACtC,MAAM,QAAQ,WAAW,QAAQ,CAClC,GACC;AAAA,QACD,OAAO;AAAA,MACR;AAAA,MAEA,IAAI;AAAA,QACH,MAAM,kBAAkB,KACvB,KACA,OACA,UACA,UACA,MAAM,IACP;AAAA,QACA,MAAM,MAAO,MACZ,WAAI,cAAc,eAAe,EAAE,QACjC,cAAc,MAAM,KAAK,IAAI,MAAM;AAAA,QAGtC,MAAM,MAAO,KAAa;AAAA,QAC1B,MAAM,SAAS,KAAK;AAAA,QAEpB,IAAI,OAAO,WAAW,YAAY;AAAA,UAEjC,MAAM,UAAU,EAAE,QAAQ,IAAI;AAAA,UAC9B,MAAM,SAAS,MAAM,OAAO;AAAA,YAC3B,UAAU,MAAM;AAAA,YAChB,QAAQ,CAAC;AAAA,YACT,KAAK;AAAA,UACN,CAAC;AAAA,UAGD,MAAM,UAAU,uBACf,QACA,MAAM,SACN,SACA,aACD;AAAA,UAEA,IAAI,QAAQ,SAAS,GAAG;AAAA,YACvB,OAAO,EAAE,SAAS,MAAM,SAAS,QAAQ;AAAA,UAC1C;AAAA,QACD;AAAA,QACC,MAAM;AAAA,MAIR,OAAO;AAAA,KACP;AAAA,IAED,MAAM,UAAU,MAAM,QAAQ,IAAI,aAAa;AAAA,IAC/C,WAAW,UAAU,SAAS;AAAA,MAC7B,IAAI,QAAQ;AAAA,QACX,cAAc,IAAI,OAAO,SAAS,OAAO,OAAO;AAAA,MACjD;AAAA,IACD;AAAA;AAAA,EAGD,OAAO;AAAA;AAGR,SAAS,kBAAkB,CAAC,KAAiB;AAAA,EAC5C,MAAM,SAAgB,CAAC;AAAA,EAEvB,WAAW,SAAS,OAAO,OAAO,GAAG,GAAG;AAAA,IACvC,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,MACzB,OAAO,KAAK,KAAK;AAAA,IAClB,EAAO,SAAI,SAAS,OAAO,UAAU,UAAU;AAAA,MAC9C,OAAO,KAAK,GAAG,mBAAmB,KAAK,CAAC;AAAA,IACzC;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAGR,SAAS,qBAAqB,CAC7B,OACA,cACA,SACA,eACiB;AAAA,EACjB,MAAM,UAA0B,CAAC;AAAA,EAEjC,WAAW,QAAQ,OAAO;AAAA,IACzB,IAAI,OAAO,SAAS,YAAY,SAAS;AAAA,MAAM;AAAA,IAE/C,MAAM,QAAQ,oBACb,MACA,cACA,SACA,aACD;AAAA,IACA,IAAI,OAAO;AAAA,MACV,QAAQ,KAAK,KAAK;AAAA,IACnB;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAGR,SAAS,yBAAyB,CACjC,MACA,cACA,SACA,eACiB;AAAA,EACjB,IAAI;AAAA,IACH,MAAM,QAAQ,cAAc,cAAc,MAAM,YAAY;AAAA,IAC5D,IAAI,CAAC,MAAM,QAAQ,KAAK;AAAA,MAAG,OAAO,CAAC;AAAA,IAEnC,OAAO,sBAAsB,OAAO,cAAc,SAAS,aAAa;AAAA,IACvE,OAAO,OAAO;AAAA,IACf,QAAQ,KAAK,yCAAyC,KAAK;AAAA,IAC3D,OAAO,CAAC;AAAA;AAAA;AAIV,SAAS,wBAAwB,CAChC,MACA,cACA,SACA,eACiB;AAAA,EACjB,MAAM,UAA0B,CAAC;AAAA,EACjC,MAAM,SAAS,mBAAmB,IAAW;AAAA,EAE7C,WAAW,SAAS,QAAQ;AAAA,IAC3B,IAAI,MAAM,SAAS,GAAG;AAAA,MACrB,MAAM,eAAe,sBACpB,OACA,cACA,SACA,aACD;AAAA,MACA,QAAQ,KAAK,GAAG,YAAY;AAAA,IAC7B;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAOR,SAAS,sBAAsB,CAC9B,MACA,cACA,SACA,eACiB;AAAA,EACjB,IAAI,CAAC,QAAQ,OAAO,SAAS,UAAU;AAAA,IACtC,OAAO,CAAC;AAAA,EACT;AAAA,EAEA,IAAI,eAAe,aAAa;AAAA,IAC/B,OAAO,0BACN,MACA,cACA,SACA,aACD;AAAA,EACD;AAAA,EAEA,OAAO,yBAAyB,MAAM,cAAc,SAAS,aAAa;AAAA;AAG3E,SAAS,yBAAyB,CACjC,MACA,cACA,eACgB;AAAA,EAChB,IAAI,eAAe,YAAY;AAAA,IAC9B,IAAI;AAAA,MACH,MAAM,cAAa,cAAc,WAAW,MAAM,YAAY;AAAA,MAE9D,IAAI,gBAAe;AAAA,QAAO,OAAO;AAAA,MACjC,IAAI;AAAA,QAAY,OAAO;AAAA,MACtB,OAAO,OAAO;AAAA,MACf,QAAQ,KAAK,wCAAwC,KAAK;AAAA;AAAA,EAE5D;AAAA,EAEA,MAAM,aACL,KAAK,WAAW,KAAK,QAAQ,KAAK,MAAM,KAAK,QAAQ,KAAK;AAAA,EAC3D,OAAO,aAAc,aAAwB;AAAA;AAG9C,SAAS,sBAAsB,CAC9B,MACA,eACqB;AAAA,EACrB,IAAI,eAAe,gBAAgB;AAAA,IAClC,IAAI;AAAA,MACH,MAAM,UAAU,cAAc,eAAe,IAAI;AAAA,MACjD,IAAI,SAAS;AAAA,QACZ,OAAO,IAAI,KAAK,OAAO,EAAE,YAAY;AAAA,MACtC;AAAA,MACC,OAAO,OAAO;AAAA,MACf,QAAQ,KAAK,4CAA4C,KAAK;AAAA;AAAA,EAEhE;AAAA,EAEA,IAAI,KAAK,eAAe,OAAO,KAAK,gBAAgB,UAAU;AAAA,IAC7D,OAAO,IAAI,KAAK,KAAK,WAAW,EAAE,YAAY;AAAA,EAC/C;AAAA,EACA,IAAI,KAAK,QAAQ,OAAO,KAAK,SAAS,UAAU;AAAA,IAC/C,OAAO,IAAI,KAAK,KAAK,IAAI,EAAE,YAAY;AAAA,EACxC;AAAA,EACA,IAAI,KAAK,aAAa,OAAO,KAAK,cAAc,UAAU;AAAA,IACzD,OAAO,IAAI,KAAK,KAAK,SAAS,EAAE,YAAY;AAAA,EAC7C;AAAA,EAEA;AAAA;AAMD,SAAS,mBAAmB,CAC3B,MACA,cACA,SACA,eACsB;AAAA,EACtB,MAAM,aAAa,0BAClB,MACA,cACA,aACD;AAAA,EAEA,IAAI,CAAC,YAAY;AAAA,IAChB,OAAO;AAAA,EACR;AAAA,EAEA,MAAM,MAAM,GAAG,UAAU,gBAAgB;AAAA,EAEzC,MAAM,QAAsB;AAAA,IAC3B,KAAK;AAAA,IACL,YAAY,eAAe,cAAc;AAAA,IACzC,UACC,eAAe,aAAa,YAAY,cAAc,WAAW;AAAA,EACnE;AAAA,EAEA,MAAM,UAAU,uBAAuB,MAAM,aAAa;AAAA,EAC1D,IAAI,SAAS;AAAA,IACZ,MAAM,UAAU;AAAA,EACjB;AAAA,EAEA,OAAO;AAAA;AAMR,eAAsB,mBAAmB,CACxC,KACA,cACA,SACA,aACA,eACkC;AAAA,EAClC,QAAQ,cAAc,kBAAkB,MAAM,eAC7C,KACA,WACD;AAAA,EAIA,MAAM,iBAAiB,IAAI;AAAA,EAC3B,WAAW,cAAc,cAAa;AAAA,IACrC,MAAM,UAAU,MAAM,0BACrB,KACA,YACA,aACA,OACD;AAAA,IACA,IAAI,QAAQ,SAAS,GAAG;AAAA,MACvB,eAAe,IAAI,YAAY,OAAO;AAAA,IACvC;AAAA,EACD;AAAA,EAGA,MAAM,gBAAgB,MAAM,uBAC3B,KACA,cACA,aACA,SACA,aACD;AAAA,EAEA,OAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA,aAAa;AAAA,IACb;AAAA,EACD;AAAA;AAAA;;;ACjiBD,0BAAS;AA8BT,SAAS,kBAAkB,CAC1B,MACA,WACS;AAAA,EACT,IAAI,WAAW,oBAAoB;AAAA,IAClC,IAAI;AAAA,MACH,OAAO,UAAU,mBAAmB,IAAI,KAAK;AAAA,MAC5C,OAAO,OAAO;AAAA,MACf,QAAQ,KAAK,4CAA4C,KAAK;AAAA;AAAA,EAEhE;AAAA,EACA,OAAQ,KAAK,eAAe,KAAK,WAAW;AAAA;AAG7C,SAAS,cAAc,CACtB,MACA,WACqB;AAAA,EACrB,IAAI,WAAW,gBAAgB;AAAA,IAC9B,IAAI;AAAA,MACH,MAAM,UAAU,UAAU,eAAe,IAAI;AAAA,MAC7C,IAAI,SAAS;AAAA,QACZ,OAAO,IAAI,KAAK,OAAO,EAAE,YAAY;AAAA,MACtC;AAAA,MACC,OAAO,OAAO;AAAA,MACf,QAAQ,KAAK,wCAAwC,KAAK;AAAA;AAAA,EAE5D;AAAA,EAEA,IAAI,KAAK,MAAM;AAAA,IACd,OAAO,IAAI,KAAK,KAAK,IAAc,EAAE,YAAY;AAAA,EAClD;AAAA,EACA,IAAI,KAAK,aAAa;AAAA,IACrB,OAAO,IAAI,KAAK,KAAK,WAAqB,EAAE,YAAY;AAAA,EACzD;AAAA,EACA;AAAA;AAGD,SAAS,aAAa,CACrB,MACA,WACqB;AAAA,EACrB,IAAI,WAAW,eAAe;AAAA,IAC7B,IAAI;AAAA,MACH,MAAM,SAAS,UAAU,cAAc,IAAI;AAAA,MAC3C,IAAI,QAAQ;AAAA,QACX,OAAO;AAAA,MACR;AAAA,MACC,OAAO,OAAO;AAAA,MACf,QAAQ,KAAK,uCAAuC,KAAK;AAAA;AAAA,EAE3D;AAAA,EAEA,IAAI,KAAK,QAAQ;AAAA,IAChB,OAAO,OAAO,KAAK,MAAM;AAAA,EAC1B;AAAA,EACA;AAAA;AAGD,SAAS,cAAc,CACtB,MACA,WACqB;AAAA,EACrB,IAAI,WAAW,gBAAgB;AAAA,IAC9B,IAAI;AAAA,MACH,MAAM,UAAU,UAAU,eAAe,IAAI;AAAA,MAC7C,IAAI,SAAS;AAAA,QACZ,OAAO;AAAA,MACR;AAAA,MACC,OAAO,OAAO;AAAA,MACf,QAAQ,KAAK,wCAAwC,KAAK;AAAA;AAAA,EAE5D;AAAA,EACA;AAAA;AAGD,SAAS,4BAA4B,CACpC,MACA,MACA,SACA,MACA,WACU;AAAA,EACV,MAAM,UAAmB;AAAA,IACxB,OAAQ,KAAK,SAAS,KAAK,QAAQ;AAAA,IACnC,MAAM,GAAG,UAAU;AAAA,IACnB,MAAM,GAAG,UAAU;AAAA,IACnB,aAAa,mBAAmB,MAAM,SAAS;AAAA,EAChD;AAAA,EAEA,MAAM,UAAU,eAAe,MAAM,SAAS;AAAA,EAC9C,IAAI,SAAS;AAAA,IACZ,QAAQ,UAAU;AAAA,EACnB;AAAA,EAEA,MAAM,SAAS,cAAc,MAAM,SAAS;AAAA,EAC5C,IAAI,QAAQ;AAAA,IACX,QAAQ,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,UAAU,eAAe,MAAM,SAAS;AAAA,EAC9C,IAAI,SAAS;AAAA,IACZ,QAAQ,UAAU;AAAA,EACnB;AAAA,EAEA,OAAO;AAAA;AAGR,eAAe,2BAA2B,CACzC,KACA,YACA,aACA,SACA,WACqB;AAAA,EACrB,MAAM,QAAmB,CAAC;AAAA,EAE1B,IAAI;AAAA,IAEH,MAAM,iBAAiB,KACtB,KACA,YACA,eACA,GAAG,eACJ;AAAA,IACA,MAAM,SAAS,MAAM,IAAI,KAAK,cAAc,EAAE,OAAO;AAAA,IAErD,IAAI,CAAC,QAAQ;AAAA,MACZ,OAAO;AAAA,IACR;AAAA,IAEA,MAAM,MAAM,GAAG,IAAI,cAAc,cAAc,EAAE,OAAO,cAAc,MAAM,KAAK,IAAI,MAAM;AAAA,IAC3F,MAAM,MAAM,MAAa;AAAA,IACzB,MAAM,eAAe,IAAI,SAAS,CAAC;AAAA,IAEnC,WAAW,QAAQ,cAAc;AAAA,MAChC,MAAM,OAAO,OAAO,KAAK,QAAQ,EAAE;AAAA,MACnC,MAAM,OAAO,KAAK,QAAQ,CAAC;AAAA,MAE3B,IAAI,MAAM;AAAA,QACT,MAAM,KACL,6BAA6B,MAAM,MAAM,SAAS,MAAM,SAAS,CAClE;AAAA,MACD;AAAA,IACD;AAAA,IACC,OAAO,OAAO;AAAA,IACf,QAAQ,MACP,+CAA+C,eAC/C,KACD;AAAA;AAAA,EAID,cAAc,KAAK;AAAA,EAEnB,OAAO;AAAA;AAMR,eAAe,wBAAwB,CACtC,KACA,cACA,WACA,aACA,SACA,WACqB;AAAA,EACrB,MAAM,QAAmB,CAAC;AAAA,EAE1B,IAAI;AAAA,IACH,MAAM,MAAM,KAAK,KAAK,OAAO,UAAU,UAAU,SAAS;AAAA,IAC1D,MAAM,MAAO,MACZ,sBAAc,GAAG,EAAE,QAAQ,cAAc,MAAM,KAAK,IAAI,MAAM;AAAA,IAG/D,MAAM,MAAO,KAAa;AAAA,IAC1B,MAAM,SAAS,KAAK;AAAA,IAEpB,IAAI,OAAO,WAAW,YAAY;AAAA,MAEjC,MAAM,UAAU,EAAE,QAAQ,IAAI;AAAA,MAC9B,MAAM,SAAS,MAAM,OAAO;AAAA,QAC3B,UAAU;AAAA,QACV,QAAQ,CAAC;AAAA,QACT,KAAK;AAAA,MACN,CAAC;AAAA,MAGD,MAAM,iBAAiB,wBACtB,QACA,cACA,SACA,SACD;AAAA,MACA,MAAM,KAAK,GAAG,cAAc;AAAA,IAC7B;AAAA,IACC,MAAM;AAAA,EAIR,OAAO;AAAA;AAOR,SAAS,aAAa,CAAC,OAAwB;AAAA,EAC9C,MAAM,KAAK,CAAC,GAAG,MAAM;AAAA,IACpB,IAAI,CAAC,EAAE;AAAA,MAAS,OAAO;AAAA,IACvB,IAAI,CAAC,EAAE;AAAA,MAAS,OAAO;AAAA,IACvB,OAAO,IAAI,KAAK,EAAE,OAAO,EAAE,QAAQ,IAAI,IAAI,KAAK,EAAE,OAAO,EAAE,QAAQ;AAAA,GACnE;AAAA;AAGF,SAAS,qBAAqB,CAC7B,gBACA,cACA,SACA,WACY;AAAA,EACZ,MAAM,QAAmB,CAAC;AAAA,EAE1B,WAAW,QAAQ,gBAAgB;AAAA,IAClC,IAAI,OAAO,SAAS,YAAY,SAAS,MAAM;AAAA,MAC9C,MAAM,UAAU,sBACf,MACA,cACA,SACA,SACD;AAAA,MACA,IAAI,SAAS;AAAA,QACZ,MAAM,KAAK,OAAO;AAAA,MACnB;AAAA,IACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAGR,SAAS,UAAU,CAAC,KAAiB;AAAA,EACpC,MAAM,SAAgB,CAAC;AAAA,EAEvB,WAAW,SAAS,OAAO,OAAO,GAAG,GAAG;AAAA,IACvC,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,MACzB,OAAO,KAAK,KAAK;AAAA,IAClB,EAAO,SAAI,SAAS,OAAO,UAAU,UAAU;AAAA,MAC9C,OAAO,KAAK,GAAG,WAAW,KAAK,CAAC;AAAA,IACjC;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAGR,SAAS,uBAAuB,CAC/B,MACA,cACA,SACA,WACY;AAAA,EACZ,IAAI,CAAC,QAAQ,OAAO,SAAS,UAAU;AAAA,IACtC,OAAO,CAAC;AAAA,EACT;AAAA,EAGA,IAAI,WAAW,aAAa;AAAA,IAC3B,IAAI;AAAA,MACH,MAAM,iBAAiB,UAAU,YAAY,MAAM,YAAY;AAAA,MAC/D,IAAI,MAAM,QAAQ,cAAc,GAAG;AAAA,QAClC,MAAM,SAAQ,sBACb,gBACA,cACA,SACA,SACD;AAAA,QACA,cAAc,MAAK;AAAA,QACnB,OAAO;AAAA,MACR;AAAA,MACC,OAAO,OAAO;AAAA,MACf,QAAQ,KAAK,qCAAqC,KAAK;AAAA,MACvD,OAAO,CAAC;AAAA;AAAA,EAEV;AAAA,EAGA,MAAM,SAAS,WAAW,IAAI;AAAA,EAC9B,MAAM,QAAmB,CAAC;AAAA,EAE1B,WAAW,SAAS,QAAQ;AAAA,IAC3B,IAAI,MAAM,SAAS,GAAG;AAAA,MACrB,MAAM,KACL,GAAG,sBAAsB,OAAO,cAAc,SAAS,SAAS,CACjE;AAAA,IACD;AAAA,EACD;AAAA,EAEA,cAAc,KAAK;AAAA,EACnB,OAAO;AAAA;AAMR,SAAS,kBAAiB,CACzB,MACA,cACA,WACgB;AAAA,EAChB,IAAI,WAAW,YAAY;AAAA,IAC1B,IAAI;AAAA,MACH,MAAM,aAAa,UAAU,WAAW,MAAM,YAAY;AAAA,MAE1D,IAAI,eAAe;AAAA,QAAO,OAAO;AAAA,MACjC,IAAI;AAAA,QAAY,OAAO,OAAO,UAAU;AAAA,MACvC,OAAO,OAAO;AAAA,MACf,QAAQ,KAAK,oCAAoC,KAAK;AAAA;AAAA,EAExD;AAAA,EAEA,OAAO,OACN,KAAK,WAAW,KAAK,QAAQ,KAAK,MAAM,KAAK,QAAQ,KAAK,OAAO,EAClE;AAAA;AAGD,SAAS,sBAAsB,CAC9B,MACA,WACqB;AAAA,EACrB,IAAI,WAAW,gBAAgB;AAAA,IAC9B,IAAI;AAAA,MACH,MAAM,UAAU,UAAU,eAAe,IAAI;AAAA,MAC7C,IAAI,SAAS;AAAA,QACZ,OAAO,IAAI,KAAK,OAAO,EAAE,YAAY;AAAA,MACtC;AAAA,MACC,OAAO,OAAO;AAAA,MACf,QAAQ,KAAK,wCAAwC,KAAK;AAAA;AAAA,EAE5D;AAAA,EAEA,IAAI,KAAK,eAAe,OAAO,KAAK,gBAAgB,UAAU;AAAA,IAC7D,OAAO,IAAI,KAAK,KAAK,WAAW,EAAE,YAAY;AAAA,EAC/C;AAAA,EACA,IAAI,KAAK,QAAQ,OAAO,KAAK,SAAS,UAAU;AAAA,IAC/C,OAAO,IAAI,KAAK,KAAK,IAAI,EAAE,YAAY;AAAA,EACxC;AAAA,EACA,IAAI,KAAK,aAAa,OAAO,KAAK,cAAc,UAAU;AAAA,IACzD,OAAO,IAAI,KAAK,KAAK,SAAS,EAAE,YAAY;AAAA,EAC7C;AAAA,EACA;AAAA;AAGD,SAAS,qBAAqB,CAC7B,MACA,cACA,SACA,WACiB;AAAA,EACjB,MAAM,aAAa,mBAAkB,MAAM,cAAc,SAAS;AAAA,EAElE,IAAI,CAAC,YAAY;AAAA,IAChB,OAAO;AAAA,EACR;AAAA,EAEA,MAAM,OAAO,GAAG,UAAU,gBAAgB;AAAA,EAE1C,MAAM,UAAmB;AAAA,IACxB,OAAO,OAAO,KAAK,SAAS,KAAK,QAAQ,UAAU;AAAA,IACnD;AAAA,IACA,MAAM;AAAA,IACN,aAAa,mBAAmB,MAAM,SAAS;AAAA,EAChD;AAAA,EAEA,MAAM,UAAU,uBAAuB,MAAM,SAAS;AAAA,EACtD,IAAI,SAAS;AAAA,IACZ,QAAQ,UAAU;AAAA,EACnB;AAAA,EAEA,MAAM,SAAS,cAAc,MAAM,SAAS;AAAA,EAC5C,IAAI,QAAQ;AAAA,IACX,QAAQ,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,UAAU,eAAe,MAAM,SAAS;AAAA,EAC9C,IAAI,SAAS;AAAA,IACZ,QAAQ,UAAU;AAAA,EACnB;AAAA,EAEA,OAAO;AAAA;AAOR,eAAe,eAAe,CAC7B,KACA,cACA,SACA,aACA,WAC8B;AAAA,EAE9B,MAAM,iBAAiB,IAAI;AAAA,EAC3B,MAAM,qBAAqB,aAAY,IAAI,OAAO,eAAe;AAAA,IAChE,MAAM,QAAQ,MAAM,4BACnB,KACA,YACA,aACA,SACA,SACD;AAAA,IACA,OAAO,MAAM,SAAS,IAAI,EAAE,YAAY,MAAM,IAAI;AAAA,GAClD;AAAA,EAED,MAAM,oBAAoB,MAAM,QAAQ,IAAI,kBAAkB;AAAA,EAC9D,WAAW,UAAU,mBAAmB;AAAA,IACvC,IAAI,QAAQ;AAAA,MACX,eAAe,IAAI,OAAO,YAAY,OAAO,KAAK;AAAA,IACnD;AAAA,EACD;AAAA,EAGA,MAAM,eAAe,IAAI;AAAA,EAGzB,MAAM,gBAAiB,WACrB;AAAA,EAEF,QAAQ,oCAAmB;AAAA,EAC3B,QAAQ,iBAAiB,MAAM,gBAAe,KAAK,WAAW;AAAA,EAE9D,IAAI,iBAAiB,MAAM,QAAQ,aAAa,GAAG;AAAA,IAIlD,MAAM,gBAAgB,aAAa,IAAI,OAAO,UAAU;AAAA,MAEvD,IACC,WAAW,kBAAkB,KAAK,CAAC,aAClC,MAAM,QAAQ,WAAW,QAAQ,CAClC,GACC;AAAA,QACD,OAAO;AAAA,MACR;AAAA,MAGA,MAAM,eAAe,cAAc,KAClC,CAAC,MAAM,GAAG,YAAY,MAAM,OAC7B;AAAA,MAEA,IAAI,CAAC;AAAA,QAAc,OAAO;AAAA,MAE1B,MAAM,MAAO,cAAsB;AAAA,MACnC,MAAM,SAAU,KAAa;AAAA,MAI7B,IAAI,OAAO,WAAW,YAAY;AAAA,QACjC,IAAI;AAAA,UACH,MAAM,UAAU,EAAE,QAAQ,IAAI;AAAA,UAC9B,MAAM,SAAS,MAAM,OAAO;AAAA,YAC3B,UAAU,MAAM;AAAA,YAChB,QAAQ,CAAC;AAAA,YACT,KAAK;AAAA,UACN,CAAC;AAAA,UAED,MAAM,QAAQ,wBACb,QACA,MAAM,SACN,SACA,SACD;AAAA,UAEA,IAAI,MAAM,SAAS,GAAG;AAAA,YACrB,OAAO,EAAE,SAAS,MAAM,SAAS,MAAM;AAAA,UACxC;AAAA,UACC,MAAM;AAAA,MAGT;AAAA,MAEA,OAAO;AAAA,KACP;AAAA,IAED,MAAM,UAAU,MAAM,QAAQ,IAAI,aAAa;AAAA,IAC/C,WAAW,UAAU,SAAS;AAAA,MAC7B,IAAI,QAAQ;AAAA,QACX,aAAa,IAAI,OAAO,SAAS,OAAO,KAAK;AAAA,MAC9C;AAAA,IACD;AAAA,EACD,EAAO;AAAA,IAEN,MAAM,gBAAgB,aAAa,IAAI,OAAO,UAAU;AAAA,MAEvD,IACC,WAAW,kBAAkB,KAAK,CAAC,aAClC,MAAM,QAAQ,WAAW,QAAQ,CAClC,GACC;AAAA,QACD,OAAO;AAAA,MACR;AAAA,MAEA,MAAM,QAAQ,MAAM,yBACnB,KACA,MAAM,SACN,MAAM,MACN,aACA,SACA,SACD;AAAA,MAEA,IAAI,MAAM,SAAS,GAAG;AAAA,QACrB,OAAO,EAAE,SAAS,MAAM,SAAS,MAAM;AAAA,MACxC;AAAA,MAEA,OAAO;AAAA,KACP;AAAA,IAED,MAAM,UAAU,MAAM,QAAQ,IAAI,aAAa;AAAA,IAC/C,WAAW,UAAU,SAAS;AAAA,MAC7B,IAAI,QAAQ;AAAA,QACX,aAAa,IAAI,OAAO,SAAS,OAAO,KAAK;AAAA,MAC9C;AAAA,IACD;AAAA;AAAA,EAGD,OAAO;AAAA,IACN,aAAa;AAAA,IACb;AAAA,EACD;AAAA;AAAA;;;ACriBM,SAAS,cAAc,CAC7B,MACA,UAA+B,CAAC,GACvB;AAAA,EACT,QAAQ,UAAU;AAAA,EAClB,MAAM,QAAQ,QAAQ,KAAK,MAAM,MAAM,GAAG,KAAK,IAAI,KAAK;AAAA,EAExD,MAAM,WAAW,MACf,IAAI,CAAC,SAAS;AAAA,IACd,IAAI,MAAM;AAAA;AAAA,IACV,OAAO,gBAAgB,UAAU,KAAK,KAAK;AAAA;AAAA,IAC3C,OAAO,eAAe,UAAU,KAAK,IAAI;AAAA;AAAA,IAEzC,IAAI,KAAK,aAAa;AAAA,MACrB,OAAO,sBAAsB,UAAU,KAAK,WAAW;AAAA;AAAA,IACxD;AAAA,IAEA,IAAI,KAAK,SAAS;AAAA,MACjB,OAAO,kBAAkB,KAAK;AAAA;AAAA,IAC/B;AAAA,IAEA,IAAI,KAAK,MAAM;AAAA,MACd,OAAO,kCAAkC,UAAU,KAAK,IAAI;AAAA;AAAA,IAC7D;AAAA,IAEA,IAAI,KAAK,QAAQ;AAAA,MAChB,OAAO,iBAAiB,UAAU,KAAK,MAAM;AAAA;AAAA,IAC9C;AAAA,IAEA,IAAI,KAAK,SAAS;AAAA,MACjB,OAAO,mCAAmC,KAAK;AAAA;AAAA,IAChD;AAAA,IAEA,OAAO;AAAA,IACP,OAAO;AAAA,GACP,EACA,KAAK;AAAA,CAAI;AAAA,EAEX,MAAM,gBAAgB,IAAI,KAAK,EAAE,YAAY;AAAA,EAE7C,OAAO;AAAA;AAAA;AAAA,aAGK,UAAU,KAAK,KAAK;AAAA,YACrB,UAAU,KAAK,IAAI;AAAA,mBACZ,UAAU,KAAK,WAAW;AAAA,qBACxB;AAAA;AAAA,uBAEE,UAAU,KAAK,IAAI;AAAA,EACxC;AAAA;AAAA;AAAA;AAQK,SAAS,eAAe,CAC9B,MACA,UAA+B,CAAC,GACvB;AAAA,EACT,QAAQ,UAAU;AAAA,EAClB,MAAM,QAAQ,QAAQ,KAAK,MAAM,MAAM,GAAG,KAAK,IAAI,KAAK;AAAA,EAExD,MAAM,aAAa,MACjB,IAAI,CAAC,SAAS;AAAA,IACd,IAAI,MAAM;AAAA;AAAA,IACV,OAAO,cAAc,UAAU,KAAK,KAAK;AAAA;AAAA,IACzC,OAAO,mBAAmB,UAAU,KAAK,IAAI;AAAA;AAAA,IAC7C,OAAO,WAAW,UAAU,KAAK,QAAQ,KAAK,IAAI;AAAA;AAAA,IAElD,IAAI,KAAK,SAAS;AAAA,MAEjB,MAAM,UAAU,IAAI,KAAK,KAAK,OAAO,EAAE,YAAY;AAAA,MACnD,OAAO,kBAAkB;AAAA;AAAA,MACzB,OAAO,gBAAgB;AAAA;AAAA,IACxB;AAAA,IAEA,IAAI,KAAK,QAAQ;AAAA,MAChB,OAAO;AAAA;AAAA,MACP,OAAO,eAAe,UAAU,KAAK,MAAM;AAAA;AAAA,MAC3C,OAAO;AAAA;AAAA,IACR;AAAA,IAEA,IAAI,KAAK,aAAa;AAAA,MACrB,OAAO,gBAAgB,UAAU,KAAK,WAAW;AAAA;AAAA,IAClD;AAAA,IAEA,IAAI,KAAK,SAAS;AAAA,MACjB,OAAO,qCAAqC,KAAK;AAAA;AAAA,IAClD;AAAA,IAEA,OAAO;AAAA,IACP,OAAO;AAAA,GACP,EACA,KAAK;AAAA,CAAI;AAAA,EAEX,MAAM,UAAU,IAAI,KAAK,EAAE,YAAY;AAAA,EAEvC,OAAO;AAAA;AAAA,WAEG,UAAU,KAAK,KAAK;AAAA,gBACf,UAAU,KAAK,IAAI;AAAA,aACtB;AAAA,QACL,UAAU,KAAK,IAAI;AAAA,EACzB;AAAA;AAAA;AAOK,SAAS,YAAY,CAC3B,MACA,UAA+B,CAAC,GACvB;AAAA,EACT,MAAM,SAAS,QAAQ,UAAU;AAAA,EAEjC,IAAI,WAAW,QAAQ;AAAA,IACtB,OAAO,gBAAgB,MAAM,OAAO;AAAA,EACrC;AAAA,EAEA,OAAO,eAAe,MAAM,OAAO;AAAA;AAMpC,SAAS,SAAS,CAAC,QAAwB;AAAA,EAC1C,OAAO,OACL,QAAQ,MAAM,OAAO,EACrB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,QAAQ,EACtB,QAAQ,MAAM,QAAQ;AAAA;;;;EClJzB;AAAA;;;ACgBA,SAAS,sBAAsB,CAAC,KAAqB;AAAA,EACpD,IAAI,QAAQ,UAAU;AAAA,IACrB,OAAO;AAAA,EACR;AAAA,EACA,IAAI,IAAI,SAAS,QAAQ,GAAG;AAAA,IAC3B,OAAO,IAAI,MAAM,GAAG,EAAE,KAAK;AAAA,EAC5B;AAAA,EACA,OAAO,IAAI,QAAQ,kBAAkB,EAAE;AAAA;AAGxC,SAAS,kBAAkB,CAC1B,SACA,eACU;AAAA,EACV,IAAI,QAAQ,SAAS,GAAG;AAAA,IAAG,OAAO;AAAA,EAClC,IAAI,eAAe,SAAS,OAAO;AAAA,IAAG,OAAO;AAAA,EAC7C,OAAO;AAAA;AAGR,SAAS,iBAAiB,CACzB,OACA,SACA,mBACA,iBACe;AAAA,EACf,MAAM,MAAM,uBAAuB,MAAM,OAAO;AAAA,EAEhD,OAAO;AAAA,IACN,KAAK,GAAG,UAAU;AAAA,IAClB,YAAa,MAAM,cAClB;AAAA,IACD,UACC,MAAM,aAAa,YAChB,MAAM,WACN,QAAQ,MACP,IACA;AAAA,EACN;AAAA;AAGD,SAAS,iBAAiB,CACzB,YACA,SACA,YACA,UACA,eACiB;AAAA,EACjB,MAAM,aAA6B,CAAC;AAAA,EAEpC,WAAW,SAAS,WAAU,cAAc;AAAA,IAC3C,IAAI,mBAAmB,MAAM,SAAS,aAAa,GAAG;AAAA,MACrD,WAAW,KAAK,kBAAkB,OAAO,SAAS,YAAY,QAAQ,CAAC;AAAA,IACxE;AAAA,EACD;AAAA,EAEA,YAAY,aAAa,YAAY,WAAU,YAAY,QAAQ,GAAG;AAAA,IACrE,WAAW,KAAK,GAAG,OAAO;AAAA,EAC3B;AAAA,EAEA,YAAY,UAAU,YAAY,WAAU,cAAc,QAAQ,GAAG;AAAA,IACpE,WAAW,KAAK,GAAG,OAAO;AAAA,EAC3B;AAAA,EAEA,OAAO;AAAA;AAGR,SAAS,WAAW,CAAC,SAA+B;AAAA,EACnD,QAAQ,KAAK,CAAC,GAAG,MAAM;AAAA,IACtB,MAAM,gBAAgB,EAAE,YAAY,QAAQ,EAAE,YAAY;AAAA,IAC1D,IAAI,iBAAiB;AAAA,MAAG,OAAO;AAAA,IAC/B,OAAO,EAAE,IAAI,cAAc,EAAE,GAAG;AAAA,GAChC;AAAA;AAGF,SAAS,uBAAuB,CAC/B,YACA,gBACA,SACgB;AAAA,EAChB,MAAM,QAAuB,CAAC;AAAA,EAC9B,IAAI,UAAU;AAAA,EAEd,SAAS,IAAI,EAAG,IAAI,WAAW,QAAQ,KAAK,gBAAgB;AAAA,IAC3D,MAAM,cAAc,WAAW,MAAM,GAAG,IAAI,cAAc;AAAA,IAC1D,MAAM,MAAM,mBAAmB,WAAW;AAAA,IAC1C,MAAM,WAAW,WAAW;AAAA,IAE5B,MAAM,KAAK;AAAA,MACV;AAAA,MACA;AAAA,MACA,YAAY,YAAY;AAAA,IACzB,CAAC;AAAA,IACD;AAAA,EACD;AAAA,EAEA,MAAM,WAAW,wBAAwB,OAAO,OAAO;AAAA,EACvD,OAAO,EAAE,OAAO,UAAU,YAAY,KAAK;AAAA;AAG5C,SAAS,mBAAmB,CAAC,YAA2C;AAAA,EACvE,MAAM,MAAM,mBAAmB,UAAU;AAAA,EACzC,MAAM,QAAuB;AAAA,IAC5B;AAAA,MACC,UAAU;AAAA,MACV;AAAA,MACA,YAAY,WAAW;AAAA,IACxB;AAAA,EACD;AAAA,EAEA,OAAO,EAAE,OAAO,YAAY,MAAM;AAAA;AAMnC,eAAe,eAAe,CAC7B,YACA,SACA,UAYI,CAAC,GACoB;AAAA,EACzB;AAAA,IACC,aAAa;AAAA,IACb,WAAW;AAAA,IACX,iBAAiB;AAAA,MACd;AAAA,EAEJ,MAAM,aAAa,kBAClB,YACA,SACA,YACA,UACA,QAAQ,aACT;AAAA,EAEA,YAAY,UAAU;AAAA,EAEtB,MAAM,aAAa,WAAW,SAAS;AAAA,EAEvC,IAAI,YAAY;AAAA,IACf,OAAO,wBAAwB,YAAY,gBAAgB,OAAO;AAAA,EACnE;AAAA,EAEA,OAAO,oBAAoB,UAAU;AAAA;AAMtC,SAAS,kBAAkB,CAAC,SAAiC;AAAA,EAC5D,MAAM,gBAAgB,QACpB,IAAI,CAAC,UAAU;AAAA,IACf,IAAI,MAAM;AAAA,WAAqB,WAAU,MAAM,GAAG;AAAA,IAElD,IAAI,MAAM,SAAS;AAAA,MAClB,OAAO;AAAA,eAAkB,MAAM,QAAQ,MAAM,GAAG,EAAE;AAAA,IACnD;AAAA,IAEA,IAAI,MAAM,YAAY;AAAA,MACrB,OAAO;AAAA,kBAAqB,MAAM;AAAA,IACnC;AAAA,IAEA,IAAI,MAAM,aAAa,WAAW;AAAA,MACjC,OAAO;AAAA,gBAAmB,MAAM,SAAS,QAAQ,CAAC;AAAA,IACnD;AAAA,IAEA,OAAO;AAAA;AAAA,IACP,OAAO;AAAA,GACP,EACA,KAAK;AAAA,CAAI;AAAA,EAEX,OAAO;AAAA;AAAA,EAEN;AAAA;AAAA;AAOF,SAAS,uBAAuB,CAC/B,OACA,SACS;AAAA,EACT,MAAM,UAAU,IAAI,KAAK,EAAE,YAAY,EAAE,MAAM,GAAG,EAAE;AAAA,EAEpD,MAAM,iBAAiB,MACrB,IAAI,CAAC,SAAS;AAAA,IACd,OAAO;AAAA,WACC,WAAU,GAAG,WAAW,KAAK,UAAU;AAAA,eACnC;AAAA;AAAA,GAEZ,EACA,KAAK;AAAA,CAAI;AAAA,EAEX,OAAO;AAAA;AAAA,EAEN;AAAA;AAAA;AAOF,SAAS,UAAS,CAAC,QAAwB;AAAA,EAC1C,OAAO,OACL,QAAQ,MAAM,OAAO,EACrB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,QAAQ,EACtB,QAAQ,MAAM,QAAQ;AAAA;AAAA,IA3OnB,mBAAmB;AAAA;;;;ECFzB;AAAA,EACA;AAAA;;;ACAA,yBAAS;AACT;AA+DA,eAAe,uBAAuB,CACrC,SAC8B;AAAA,EAC9B,MAAM,QAAQ,QAAQ,SAAS;AAAA,EAC/B,MAAM,KAAK,QAAQ,YAAY,IAAI,IAAI;AAAA,EACvC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,SAAS;AAAA,IACT;AAAA,IACA;AAAA,MACG;AAAA,EAEJ,IAAI;AAAA,IAAO,QAAQ,IAAI,kBAAkB,uBAAuB;AAAA,EAGhE,MAAM,SAAQ,MAAM,gBACnB;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY,QAAQ;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc,QAAQ;AAAA,IACtB,SAAS,QAAQ;AAAA,IACjB,eAAe,QAAQ;AAAA,IACvB,mBAAmB,QAAQ;AAAA,IAC3B,mBAAmB,QAAQ;AAAA,IAC3B;AAAA,IACA,SAAS,QAAQ;AAAA,IACjB,aAAa,QAAQ;AAAA,IACrB,SAAS,QAAQ;AAAA,EAClB,GACA,IACD;AAAA,EACA,IAAI;AAAA,IACH,QAAQ,IACP,kBAAkB,gCAAgC,YAAY,IAAI,IAAI,IAAI,QAAQ,CAAC,KACpF;AAAA,EAGD,IAAI,iBAAiB,OAAM;AAAA,EAC3B,IAAI,OAAM,gBAAgB,UAAU,WAAW;AAAA,IAC9C,iBAAiB,OAAM,gBAAgB;AAAA,EACxC;AAAA,EACA,IAAI,OAAM,eAAe,mBAAmB,WAAW;AAAA,IACtD,iBAAiB,OAAM,eAAe;AAAA,EACvC;AAAA,EAGA,MAAM,UAAU,IAAI;AAAA,EACpB,QAAQ,UAAU,aAAa,IAAI;AAAA,EACnC,MAAM,SAAS,SAAS,UAAU;AAAA,EAGlC,MAAM,aAAa,CAAC,CAAC,QAAQ;AAAA,EAC7B,QAAQ,UAAU,WAAW,SAAS,aAAa,MAAM,SACxD,qBACA,OAAO,SAAS;AAAA,IACf,MAAM,YAAW,QAAQ,kBACtB,QAAQ,kBACR,MAAM,cAAc,SAAS;AAAA,IAEhC,KAAK,aAAa,kBAAkB,UAAU;AAAA,IAC9C,KAAK,aAAa,yBAAyB,UAAS,MAAM;AAAA,IAE1D,IAAI;AAAA,MACH,QAAQ,IACP,kBAAkB,qCAAqC,iBAAiB,YAAY,IAAI,IAAI,IAAI,QAAQ,CAAC,KAC1G;AAAA,IAED,MAAM,QAAQ,cAAc,WAAU,KAAK;AAAA,IAE3C,IAAI;AAAA,MACH,QAAQ,IACP,kBAAkB,8BAA8B,YAAY,IAAI,IAAI,IAAI,QAAQ,CAAC,KAClF;AAAA,IAED,OAAO;AAAA,SACH;AAAA,IACJ;AAAA,GAEF;AAAA,EAGA,MAAM,WAAW,OAAM,eAAe,YAAY;AAAA,EAClD,IAAI,eAAe,SAAS,QAAQ,kBAAkB,CAAC,IAAI,UAAkB;AAAA,IAC5E,MAAM,UAAU,iBAAiB,KAAK,KAAK;AAAA,IAC3C,MAAM,WAAW,UACd,MAAM,QACN,yCACA,SAAS,WACV,IACC,GAAG,eAAe;AAAA,IACrB,OAAO,QAAQ;AAAA,GACf;AAAA,EAGD,MAAM,YACL,OAAM,gBACN,OAAM,mBACN,OAAM,eAAe;AAAA,EAGtB,IAAI,2BAA2B,KAAK,SAAS,GAAG;AAAA,IAC/C,eAAe,aAAa,QAAQ,4BAA4B,EAAE;AAAA,EACnE;AAAA,EACA,IAAI,gDAAgD,KAAK,SAAS,GAAG;AAAA,IACpE,eAAe,aAAa,QAC3B,iDACA,EACD;AAAA,EACD;AAAA,EAGA,eAAe,yBAAyB,cAAc,SAAS;AAAA,EAG/D,MAAM,SAAS,MAAM,WAAW,GAAG;AAAA,EACnC,MAAM,4BAA4B,OAAO,WAAW;AAAA,EAKpD,QAAQ,sEAAoC;AAAA,EAC5C,MAAM,yBAAyB,iCAC9B,yBACD;AAAA,EAGA,MAAM,eAAe,4BAA4B,QAAQ,UAAU;AAAA,EAGnE,iBAAiB,QAAQ,SAAS;AAAA,IACjC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,gBAAgB,OAAM;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS,OAAM;AAAA,IACf,UAAU,OAAM;AAAA,IAChB,oBAAoB,OAAM;AAAA,IAC1B,wBAAwB,OAAM;AAAA,IAC9B;AAAA,IACA;AAAA,IACA,YAAY,QAAQ;AAAA,IACpB,SAAS,QAAQ;AAAA,IACjB,WAAW,OAAM,eAAe;AAAA,IAChC,aAAa,QAAQ;AAAA,EACtB,CAAC;AAAA,EAED,IAAI;AAAA,IACH,QAAQ,IACP,kBAAkB,iCAAiC,YAAY,IAAI,IAAI,IAAI,QAAQ,CAAC,KACrF;AAAA,EACD,OAAO,EAAE,QAAQ,UAAU,QAAQ,kBAAkB,IAAI;AAAA;AAqC1D,eAAe,gBAAgB,CAC9B,QACA,SACA,KACgB;AAAA,EAEhB,OAAO,eAAe,IAAI,YAAY,YAAY;AAAA,IACjD,MAAM,KAAK,IAAI,QAAQ,YAAY,IAAI,IAAI;AAAA,IAI3C,MAAM,oBAAoB,IAAI,WAAW;AAAA,IACzC,IAAI,iBAAiB;AAAA,IACrB,IAAI,YAAkD;AAAA,IAEtD,MAAM,WAAU,MAAM;AAAA,MACrB,IAAI,WAAW;AAAA,QACd,aAAa,SAAS;AAAA,QACtB,YAAY;AAAA,MACb;AAAA;AAAA,IAGD,IAAI;AAAA,MAEH,MAAM,eAAe,oBACpB,CAAC,IAAI,gBAAgB,IAAI,MAAM,IAAI,SAAS,EAC1C,OAAO,OAAO,EACd,KAAK;AAAA,CAAI,CACZ;AAAA,MAEA,MAAM,yBAAyB,IAAI,aAAa,QAC/C,aACA,GAAG,eAAe,GAAG;AAAA,IAAmB,WACzC;AAAA,MACA,MAAM,cAAc,GAAG;AAAA,MACvB,MAAM,OAAO,MAAM,QAAQ,OAAO,WAAW,CAAC;AAAA,MAC9C,IAAI,IAAI;AAAA,QACP,QAAQ,IACP,YAAY,IAAI,mCAAmC,YAAY,IAAI,IAAI,IAAI,QAAQ,CAAC,KACrF;AAAA,MAGD,MAAM,OAAO,MAAM,QAAQ,OAAO,IAAI,SAAS,CAAC;AAAA,MAIhD,MAAM,SAAS,uBAAuB,OAAO,SAAS;AAAA,QACrD,MAAM,wBAAwB,cAAa,IAAI,eAAe;AAAA,UAC7D,UAAU,IAAI;AAAA,UACd,cAAc,IAAI;AAAA,QACnB,CAAQ;AAAA,QAER,KAAK,aAAa,oBAAoB,IAAI,QAAQ;AAAA,QAElD,IAAI,cAA4B;AAAA,QAChC,MAAM,gBAAgB,uBAAuB,uBAAuB;AAAA,UACnE,OAAO,CAAC,OAAO;AAAA,YACd,QAAQ,MAAM,+BAA+B,KAAK;AAAA,YAClD,cACC,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC;AAAA;AAAA,QAE3D,CAAC,EAAE,MAAM,CAAC,QAAQ;AAAA,UACjB,cAAc;AAAA,UACd,MAAM;AAAA,SACN;AAAA,QAED,MAAM,cAAc,MAAM;AAAA,QAC1B,IAAI;AAAA,UAAa,MAAM;AAAA,QAIvB,MAAM,uBAAuB,IAAI,QAG9B,CAAC,YAAY;AAAA,UACf,YAAY,WAAW,MAAM;AAAA,YAC5B,QAAQ,KACP,kCAAkC,2BAA2B,IAAI,yBAClE;AAAA,YACA,iBAAiB;AAAA,YACjB,QAAQ,EAAE,MAAM,MAAM,OAAO,UAAU,CAAC;AAAA,aACtC,iBAAiB;AAAA,SACpB;AAAA,QAED,MAAM,SAAS,YAAY,UAAU;AAAA,QACrC,IAAI,aAAa;AAAA,QACjB,OAAO,MAAM;AAAA,UAEZ,MAAM,SAAS,MAAM,QAAQ,KAAK;AAAA,YACjC,OAAO,KAAK;AAAA,YACZ;AAAA,UACD,CAAC;AAAA,UAED,IAAI,OAAO,QAAQ,gBAAgB;AAAA,YAClC,IAAI,gBAAgB;AAAA,cACnB,IAAI;AAAA,gBACH,MAAM,OAAO,OACZ,gCAAgC,IAAI,UACrC;AAAA,gBACC,MAAM;AAAA,YACT;AAAA,YAEA,IAAI;AAAA,cACH,OAAO,YAAY;AAAA,cAClB,MAAM;AAAA,YACR;AAAA,UACD;AAAA,UACA,IAAI,OAAO,OAAO;AAAA,YAEjB,MAAM,OAAO,MAAM,OAAO,KAAK;AAAA,YAC/B;AAAA,UACD;AAAA,QACD;AAAA,QAEA,SAAQ;AAAA,QAER,KAAK,cAAc;AAAA,UAClB,yBAAyB;AAAA,UACzB,2BAA2B;AAAA,QAC5B,CAAC;AAAA,OACD;AAAA,MAED,IAAI,gBAAgB;AAAA,QACnB,yBAAyB,IAAI,QAAQ;AAAA,MACtC;AAAA,MAGA,MAAM,OAAO,MAAM,QAAQ,OAAO,IAAI,OAAO,CAAC;AAAA,MAG9C,MAAM,aAAa,MAAM,SACxB,wBACA,OAAO,SAAS;AAAA,QACf,MAAM,WAAU,sBAAsB,GAAG;AAAA,QACzC,KAAK,aAAa,uBAAuB,SAAQ,MAAM;AAAA,QACvD,OAAO;AAAA,OAET;AAAA,MACA,MAAM,OAAO,MAAM,QAAQ,OAAO,aAAa,IAAI,QAAQ,CAAC;AAAA,MAC5D,MAAM,OAAO,MAAM;AAAA,MAClB,OAAO,OAAO;AAAA,MACf,SAAQ;AAAA,MACR,yBAAyB,IAAI,QAAQ;AAAA,MACrC,QAAQ,MAAM,2BAA2B,KAAK;AAAA,MAC9C,IAAI;AAAA,QACH,MAAM,OAAO,MAAM,KAAK;AAAA,QACvB,MAAM;AAAA;AAAA,GAIT;AAAA;AAMF,SAAS,qBAAqB,CAAC,KAA4B;AAAA,EAE1D,MAAM,oBAAoB,0BAA0B,IAAI,kBAAkB;AAAA,EAG1E,MAAM,kBAA2C,CAAC;AAAA,EAClD,WAAW,OAAO,OAAO,KAAK,IAAI,OAAO,GAAG;AAAA,IAC3C,MAAM,QAAQ,IAAI,QAAQ;AAAA,IAC1B,IAAI,CAAC,WAAW,KAAK,GAAG;AAAA,MACvB,gBAAgB,OAAO;AAAA,IACxB;AAAA,EACD;AAAA,EAGA,MAAM,aAAa,iBAClB,iBACA,IAAI,cAAc,IAAI,WAAW,WACjC,IAAI,UACJ,IAAI,wBACJ,IAAI,cACJ,IAAI,WACL;AAAA,EACA,MAAM,cAAc,kBAAkB;AAAA,EACtC,MAAM,aAAa,iBAAiB;AAAA,EAEpC,IAAI,aACH,aACA,cACA,aACA,oBACA,IAAI;AAAA,EAGL,MAAM,mBAAmB,yBAAyB,KAAK,eAAe;AAAA,EACtE,IAAI,kBAAkB;AAAA,IACrB,cAAc;AAAA,EACf;AAAA,EAGA,cAAc,8BAA8B,IAAI;AAAA,EAGhD,IAAI,IAAI,aAAa;AAAA,IACpB,cAAc;AAAA,EACf;AAAA,EAEA,OAAO;AAAA;AAMR,SAAS,6BAA6B,CACrC,aACA,aACO;AAAA,EACP,IAAI,YAAY,SAAS,CAAC,YAAY,MAAM,SAAS,WAAW,GAAG;AAAA,IAClE,YAAY,QAAQ,YAAY,QAAQ;AAAA,EACzC;AAAA,EACA,IACC,YAAY,eACZ,CAAC,YAAY,YAAY,SAAS,WAAW,GAC5C;AAAA,IACD,YAAY,cAAc,YAAY,cAAc;AAAA,EACrD;AAAA,EACA,IACC,YAAY,oBACZ,CAAC,YAAY,iBAAiB,SAAS,WAAW,GACjD;AAAA,IACD,YAAY,mBAAmB,YAAY,mBAAmB;AAAA,EAC/D;AAAA;AAQD,SAAS,wBAAwB,CAChC,KACA,iBACS;AAAA,EAET,IAAI,OAAO,IAAI,WAAW,SAAS,YAAY;AAAA,IAC9C,OAAO;AAAA,EACR;AAAA,EAGA,MAAM,YAAY,gBAAgB,IAAI;AAAA,EACtC,IAAI,CAAC,WAAW;AAAA,IACf,OAAO;AAAA,EACR;AAAA,EAGA,IAAI;AAAA,EACJ,IAAI;AAAA,IACH,aAAa,IAAI,UAAU,KAAK,EAAE,MAAM,UAAU,CAAC;AAAA,IAClD,OAAO,KAAK;AAAA,IACb,QAAQ,MAAM,qDAAqD,GAAG;AAAA,IACtE,OAAO;AAAA;AAAA,EAGR,IAAI,CAAC,YAAY;AAAA,IAChB,OAAO;AAAA,EACR;AAAA,EAGA,MAAM,WAAW,MAAM,QAAQ,UAAU,IACtC,WAAW,KAAK;AAAA,CAAI,IACpB;AAAA,EACH,IAAI,CAAC,UAAU;AAAA,IACd,OAAO;AAAA,EACR;AAAA,EAGA,MAAM,cAAc,wBAAwB,QAAQ;AAAA,EACpD,IAAI,OAAO,KAAK,WAAW,EAAE,WAAW,GAAG;AAAA,IAC1C,OAAO;AAAA,EACR;AAAA,EAGA,IAAI,IAAI,aAAa;AAAA,IACpB,8BAA8B,aAAa,IAAI,WAAW;AAAA,EAC3D;AAAA,EAGA,MAAM,cAAc,KAAK,UAAU,WAAW;AAAA,EAC9C,OAAO,6BAA6B;AAAA;AAMrC,SAAS,uBAAuB,CAAC,UAA0C;AAAA,EAC1E,MAAM,UAAkC,CAAC;AAAA,EAGzC,MAAM,aAAa,SAAS,MAAM,8BAA8B;AAAA,EAChE,IAAI,aAAa,IAAI;AAAA,IACpB,QAAQ,QAAQ,qBAAqB,WAAW,GAAG,KAAK,CAAC;AAAA,EAC1D;AAAA,EAGA,IAAI,YAAY,SAAS,MACxB,2DACD;AAAA,EACA,IAAI,CAAC,WAAW;AAAA,IACf,YAAY,SAAS,MACpB,2DACD;AAAA,EACD;AAAA,EACA,IAAI,YAAY,IAAI;AAAA,IACnB,QAAQ,cAAc,qBAAqB,UAAU,GAAG,KAAK,CAAC;AAAA,EAC/D;AAAA,EAGA,IAAI,eAAe,SAAS,MAC3B,4DACD;AAAA,EACA,IAAI,CAAC,cAAc;AAAA,IAClB,eAAe,SAAS,MACvB,4DACD;AAAA,EACD;AAAA,EACA,IAAI,eAAe,IAAI;AAAA,IACtB,QAAQ,cAAc,qBAAqB,aAAa,GAAG,KAAK,CAAC;AAAA,EAClE,EAAO,SAAI,QAAQ,OAAO;AAAA,IAEzB,QAAQ,cAAc,QAAQ;AAAA,EAC/B;AAAA,EAGA,IAAI,cAAc,SAAS,MAC1B,kEACD;AAAA,EACA,IAAI,CAAC,aAAa;AAAA,IACjB,cAAc,SAAS,MACtB,kEACD;AAAA,EACD;AAAA,EACA,IAAI,cAAc,IAAI;AAAA,IACrB,QAAQ,oBAAoB,qBAAqB,YAAY,GAAG,KAAK,CAAC;AAAA,EACvE,EAAO,SAAI,QAAQ,aAAa;AAAA,IAE/B,QAAQ,oBAAoB,QAAQ;AAAA,EACrC;AAAA,EAGA,IAAI,oBAAoB,SAAS,MAChC,6DACD;AAAA,EACA,IAAI,CAAC,mBAAmB;AAAA,IACvB,oBAAoB,SAAS,MAC5B,6DACD;AAAA,EACD;AAAA,EACA,IAAI,oBAAoB,IAAI;AAAA,IAC3B,QAAQ,mBAAmB,qBAC1B,kBAAkB,GAAG,KAAK,CAC3B;AAAA,EACD,EAAO,SAAI,QAAQ,OAAO;AAAA,IAEzB,QAAQ,mBAAmB,QAAQ;AAAA,EACpC;AAAA,EAGA,IAAI,mBAAmB,SAAS,MAC/B,mEACD;AAAA,EACA,IAAI,CAAC,kBAAkB;AAAA,IACtB,mBAAmB,SAAS,MAC3B,mEACD;AAAA,EACD;AAAA,EACA,IAAI,mBAAmB,IAAI;AAAA,IAC1B,QAAQ,yBAAyB,qBAChC,iBAAiB,GAAG,KAAK,CAC1B;AAAA,EACD,EAAO,SAAI,QAAQ,aAAa;AAAA,IAE/B,QAAQ,yBAAyB,QAAQ;AAAA,EAC1C;AAAA,EAEA,OAAO;AAAA;AAMR,SAAS,oBAAoB,CAAC,KAAqB;AAAA,EAClD,OAAO,IACL,QAAQ,WAAW,GAAG,EACtB,QAAQ,UAAU,GAAG,EACrB,QAAQ,SAAS,GAAG,EACpB,QAAQ,SAAS,GAAG,EACpB,QAAQ,UAAU,GAAG;AAAA;AAAA;AAAA,EAzpBxB;AAAA,EAKA;AAAA,EACA;AAAA,EAUA;AAAA,EAKA;AAAA;;;;ECxBA;AAAA,EACA;AAAA,EACA;AAAA;;;;ECFA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECRA;AAAA;;;ACMA;AAJA,uBAAS;AACT,0BAAS;AAET,0BAA6B;;;ACL7B;AACA,iBAAS;AACT;AAoBA,IAAM,aAAa,IAAI;AACvB,IAAM,iBAAiB;AAGvB,IAAI,eAA8B;AAK3B,SAAS,cAAc,CAAC,UAAkB;AAAA,EAChD,eAAe;AAAA;AAMhB,SAAS,WAAW,CACnB,WACA,SACS;AAAA,EACT,MAAM,gBAAgB,KAAK,UAAU,OAAO;AAAA,EAC5C,MAAM,SAAS,IAAI,IAAI,aAAa,QAAQ;AAAA,EAC5C,OAAO,OAAO,GAAG,aAAa,eAAe;AAAA,EAC7C,MAAM,QAAO,OAAO,OAAO,KAAK;AAAA,EAChC,OAAO;AAAA;AAMR,SAAS,cAAc,CAAC,QAAwB;AAAA,EAC/C,MAAM,eAAuC;AAAA,IAC5C,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACN;AAAA,EACA,OAAO,aAAa,WAAW;AAAA;AAMhC,SAAS,eAAe,CACvB,cACA,iBACmC;AAAA,EAEnC,IACC,mBACA,CAAC,QAAQ,QAAQ,QAAQ,KAAK,EAAE,SAAS,eAAe,GACvD;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EAGA,MAAM,SAAS,cAAc,YAAY,KAAK;AAAA,EAG9C,IAAI,OAAO,SAAS,YAAY,GAAG;AAAA,IAClC,OAAO;AAAA,EACR;AAAA,EAGA,IAAI,OAAO,SAAS,YAAY,GAAG;AAAA,IAClC,OAAO;AAAA,EACR;AAAA,EAGA,OAAO;AAAA;AAMR,eAAe,iBAAiB,CAC/B,UAC0C;AAAA,EAC1C,IAAI,CAAC;AAAA,IAAc,OAAO;AAAA,EAE1B,IAAI;AAAA,IACH,MAAM,YAAY,MAAK,cAAc,GAAG,eAAe;AAAA,IACvD,MAAM,YAAY,MAAK,cAAc,GAAG,cAAc;AAAA,IAEtD,IAAI,EAAE,WAAW,SAAS,KAAK,WAAW,SAAS,IAAI;AAAA,MACtD,OAAO;AAAA,IACR;AAAA,IAEA,MAAM,YAAW,KAAK,MAAM,MAAM,IAAI,KAAK,SAAS,EAAE,KAAK,CAAC;AAAA,IAC5D,MAAM,SAAS,OAAO,KAAK,MAAM,IAAI,KAAK,SAAS,EAAE,YAAY,CAAC;AAAA,IAElE,OAAO;AAAA,MACN;AAAA,MACA,aAAa,UAAS;AAAA,MACtB,QAAQ,UAAS;AAAA,MACjB,OAAO,UAAS;AAAA,MAChB,QAAQ,UAAS;AAAA,MACjB,MAAM,UAAS;AAAA,IAChB;AAAA,IACC,MAAM;AAAA,IACP,OAAO;AAAA;AAAA;AAOT,eAAe,eAAe,CAC7B,UACA,QACgB;AAAA,EAChB,IAAI,CAAC;AAAA,IAAc;AAAA,EAEnB,IAAI;AAAA,IACH,MAAM,YAAY,MAAK,cAAc,GAAG,eAAe;AAAA,IACvD,MAAM,YAAY,MAAK,cAAc,GAAG,cAAc;AAAA,IAGtD,MAAM,IAAI,MACT,WACA,KAAK,UAAU;AAAA,MACd,aAAa,OAAO;AAAA,MACpB,QAAQ,OAAO;AAAA,MACf,OAAO,OAAO;AAAA,MACd,QAAQ,OAAO;AAAA,MACf,MAAM,OAAO;AAAA,IACd,CAAC,CACF;AAAA,IAGA,MAAM,IAAI,MAAM,WAAW,OAAO,MAAM;AAAA,IACvC,OAAO,OAAO;AAAA,IACf,QAAQ,MAAM,uCAAuC,KAAK;AAAA;AAAA;AAO5D,eAAe,gBAAgB,CAAC,WAAoC;AAAA,EACnE,IAAI,UAAU,WAAW,SAAS,KAAK,UAAU,WAAW,UAAU,GAAG;AAAA,IACxE,MAAM,WAAW,MAAM,MAAM,SAAS;AAAA,IACtC,IAAI,CAAC,SAAS,IAAI;AAAA,MACjB,MAAM,IAAI,MACT,0BAA0B,SAAS,UAAU,SAAS,YACvD;AAAA,IACD;AAAA,IACA,MAAM,cAAc,MAAM,SAAS,YAAY;AAAA,IAC/C,OAAO,OAAO,KAAK,WAAW;AAAA,EAC/B;AAAA,EAEA,OAAO,OAAO,KAAK,MAAM,IAAI,KAAK,SAAS,EAAE,YAAY,CAAC;AAAA;AAG3D,SAAS,oBAAoB,CAC5B,aACA,QACA,SACc;AAAA,EACd,QAAQ;AAAA,SACF;AAAA,MACJ,OAAO,YAAY,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAC;AAAA,SAC1C;AAAA,MACJ,OAAO,YAAY,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAC;AAAA,SAC1C;AAAA,MACJ,OAAO,YAAY,IAAI;AAAA,QACtB;AAAA,QACA,kBAAkB;AAAA,QAClB,mBAAmB;AAAA,MACpB,CAAC;AAAA;AAAA,MAED,OAAO,YAAY,KAAK,EAAE,SAAS,SAAS,KAAK,CAAC;AAAA;AAAA;AAIrD,SAAS,gBAAgB,CAAC,UAAkB,QAAiC;AAAA,EAC5E,IAAI,WAAW,QAAQ,gBAAgB;AAAA,IACtC,MAAM,WAAW,WAAW,KAAK,EAAE,KAAK,EAAE;AAAA,IAC1C,IAAI,UAAU;AAAA,MACb,WAAW,OAAO,QAAQ;AAAA,IAC3B;AAAA,EACD;AAAA,EACA,WAAW,IAAI,UAAU,MAAM;AAAA;AAGhC,eAAsB,aAAa,CAClC,WACA,SACA,cACmC;AAAA,EAEnC,MAAM,WAAW,YAAY,WAAW,OAAO;AAAA,EAG/C,MAAM,YAAY,WAAW,IAAI,QAAQ;AAAA,EACzC,IAAI,WAAW;AAAA,IACd,OAAO;AAAA,EACR;AAAA,EAGA,MAAM,aAAa,MAAM,kBAAkB,QAAQ;AAAA,EACnD,IAAI,YAAY;AAAA,IACf,iBAAiB,UAAU,UAAU;AAAA,IACrC,OAAO;AAAA,EACR;AAAA,EAGA,MAAM,eAAe,MAAM,iBAAiB,SAAS;AAAA,EAGrD,MAAM,SACL,QAAQ,WAAW,UAAU,CAAC,QAAQ,SACnC,gBAAgB,cAAc,SAAS,IACvC,QAAQ;AAAA,EAGZ,IAAI,cAAc,MAAM,YAAY;AAAA,EAGpC,MAAM,YAAW,MAAM,YAAY,SAAS;AAAA,EAG5C,IAAI,QAAQ,SAAS,QAAQ,QAAQ;AAAA,IACpC,MAAM,gBAAqC;AAAA,MAC1C,OAAO,QAAQ;AAAA,MACf,QAAQ,QAAQ;AAAA,MAChB,KAAK,QAAQ,OAAO;AAAA,MACpB,oBAAoB;AAAA,IACrB;AAAA,IACA,cAAc,YAAY,OAAO,aAAa;AAAA,EAC/C;AAAA,EAGA,MAAM,UAAU,QAAQ,WAAW;AAAA,EACnC,cAAc,qBAAqB,aAAa,QAAQ,OAAO;AAAA,EAG/D,MAAM,SAAS,MAAM,YAAY,SAAS;AAAA,EAC1C,MAAM,OAAO,MAAM,MAAM,MAAM,EAAE,SAAS;AAAA,EAE1C,MAAM,SAAkC;AAAA,IACvC;AAAA,IACA,aAAa,eAAe,MAAM;AAAA,IAClC;AAAA,IACA,OAAO,KAAK,SAAS,UAAS,SAAS,QAAQ,SAAS;AAAA,IACxD,QAAQ,KAAK,UAAU,UAAS,UAAU,QAAQ,UAAU;AAAA,IAC5D,MAAM,OAAO;AAAA,EACd;AAAA,EAGA,MAAM,gBAAgB,UAAU,MAAM;AAAA,EAGtC,IAAI,WAAW,QAAQ,gBAAgB;AAAA,IACtC,MAAM,WAAW,WAAW,KAAK,EAAE,KAAK,EAAE;AAAA,IAC1C,IAAI,UAAU;AAAA,MACb,WAAW,OAAO,QAAQ;AAAA,IAC3B;AAAA,EACD;AAAA,EACA,WAAW,IAAI,UAAU,MAAM;AAAA,EAE/B,OAAO;AAAA;AAMD,SAAS,WAAW,CAAC,OAAuB;AAAA,EAClD,MAAM,kBAAkB,CAAC,QAAQ,SAAS,QAAQ,SAAS,SAAS,MAAM;AAAA,EAC1E,MAAM,MAAM,MAAK,YAAY,EAAE,MAAM,GAAG,EAAE,IAAI;AAAA,EAC9C,OAAO,MAAM,gBAAgB,SAAS,IAAI,KAAK,IAAI;AAAA;;;ACpSpD;AADA,0BAAS;;;ACKT;AADA;;;ACFO,SAAS,WAAW,CAAC,gBAA6C;AAAA,EACxE,OAAO,UAAU,KAAK,cAAc,IACjC,OACA,QAAQ,KAAK,cAAc,IAC1B,OACA;AAAA;;;ACQL,IAAM,gBAA6C;AAAA,EAClD,KAAK;AAAA,EACL,MAAM;AAAA,EACN,MAAM;AAAA,EACN,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,KAAK;AAAA,EACL,MAAM;AAAA,EACN,KAAK;AACN;AAcA,SAAS,iBAAiB,CACzB,QACA,YAAkC,UAClC,YAAY,OACH;AAAA,EACT,IAAI,UAAU;AAAA,IAAG,OAAO;AAAA,EACxB,OAAO,GAAG,sBAAsB,SAAS,YAAY,gBAAgB;AAAA;AAMtE,SAAS,oBAAoB,GAAW;AAAA,EACvC,OAAO;AAAA;AAMR,SAAS,cAAc,CACtB,MACA,aACA,UAA2B,CAAC,GACjB;AAAA,EACX;AAAA,IACC,SAAS;AAAA,IACT,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,eAAe,CAAC;AAAA,IAChB;AAAA,IACA;AAAA,MACG;AAAA,EAEJ,MAAM,WAAkC;AAAA,IACvC,gBAAgB,cAAc;AAAA,IAC9B,iBAAiB,kBAAkB,QAAQ,SAAS;AAAA,OACjD;AAAA,EACJ;AAAA,EAEA,IAAI,MAAM;AAAA,IACT,SAAQ,OAAO;AAAA,EAChB;AAAA,EAEA,IAAI,aAAa;AAAA,IAChB,SAAQ,mBAAmB;AAAA,EAC5B;AAAA,EAEA,OAAO,IAAI,SAAS,MAAM,EAAE,QAAQ,kBAAQ,CAAC;AAAA;AAM9C,SAAS,WAAW,CAAC,KAAa,UAA2B,CAAC,GAAa;AAAA,EAC1E,OAAO,eAAe,KAAK,OAAO,OAAO;AAAA;AAM1C,SAAS,YAAY,CACpB,KACA,SAAyB,OACzB,UAA2B,CAAC,GACjB;AAAA,EACX,OAAO,eAAe,KAAK,QAAQ,OAAO;AAAA;AAM3C,SAAS,YAAY,CAAC,MAAc,UAA2B,CAAC,GAAa;AAAA,EAC5E,OAAO,eAAe,MAAM,QAAQ,OAAO;AAAA;AAM5C,SAAS,gBAAgB,CACxB,MACA,UAA2B,CAAC,GACjB;AAAA,EACX,OAAO,eAAe,MAAM,YAAY,KAAK,SAAS,MAAM,SAAS,CAAC;AAAA;;;AF1FvE,eAAsB,SAAS,CAC9B,UACA,gBACA,WACA,SACoB;AAAA,EACpB,QAAQ,cAAc,4BAAc,MAAM,eAAe,CAAC,MAAM;AAAA,EAEhE,MAAM,WAAW,YAAY,cAAc;AAAA,EAC3C,MAAM,WAAW,GAAG,YAAY;AAAA,EAKhC,MAAM,SAAS,UAAU,IAAI,QAAQ;AAAA,EACrC,IAAI,QAAQ;AAAA,IACX,MAAM,WAAkC;AAAA,MACvC,gBAAgB,OAAO;AAAA,MACvB,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,SACd;AAAA,IACJ;AAAA,IACA,IAAI,OAAO,iBAAiB;AAAA,MAC3B,SAAQ,sBAAsB,OAAO;AAAA,MACrC,SAAQ,OAAO;AAAA,IAChB;AAAA,IAEA,OAAO,IAAI,SAAS,OAAO,QAAQ,EAAE,kBAAQ,CAAC;AAAA,EAC/C;AAAA,EAGA,MAAM,OAAO,IAAI,KAAK,QAAQ;AAAA,EAC9B,MAAM,SAAS,MAAM,KAAK,OAAO;AAAA,EACjC,IAAI,CAAC;AAAA,IAAQ,MAAM,IAAI;AAAA,EAEvB,MAAM,cAAc,YAAY,QAAQ;AAAA,EAGxC,IAAI,gBAAe,eAAe,KAAK,QAAQ,GAAG;AAAA,IAEjD,IAAI,UAAU,KAAK,cAAc,GAAG;AAAA,MACnC,MAAM,SAAS,IAAI,KAAK,GAAG,aAAa;AAAA,MACxC,IAAI,MAAM,OAAO,OAAO,GAAG;AAAA,QAC1B,MAAM,YAAY,MAAM,OAAO,YAAY;AAAA,QAE3C,UAAU,IAAI,UAAU;AAAA,UACvB,QAAQ;AAAA,UACR;AAAA,UACA,iBAAiB;AAAA,QAClB,CAAC;AAAA,QACD,OAAO,IAAI,SAAS,WAAW;AAAA,UAC9B,SAAS;AAAA,YACR,gBAAgB;AAAA,YAChB,iBAAiB;AAAA,YACjB,oBAAoB;AAAA,YACpB,iBAAiB;AAAA,YACjB,MAAM;AAAA,eACH;AAAA,UACJ;AAAA,QACD,CAAC;AAAA,MACF;AAAA,IACD;AAAA,IAGA,IAAI,QAAQ,KAAK,cAAc,GAAG;AAAA,MACjC,MAAM,SAAS,IAAI,KAAK,GAAG,aAAa;AAAA,MACxC,IAAI,MAAM,OAAO,OAAO,GAAG;AAAA,QAC1B,MAAM,YAAY,MAAM,OAAO,YAAY;AAAA,QAE3C,UAAU,IAAI,UAAU;AAAA,UACvB,QAAQ;AAAA,UACR;AAAA,UACA,iBAAiB;AAAA,QAClB,CAAC;AAAA,QACD,OAAO,IAAI,SAAS,WAAW;AAAA,UAC9B,SAAS;AAAA,YACR,gBAAgB;AAAA,YAChB,iBAAiB;AAAA,YACjB,oBAAoB;AAAA,YACpB,iBAAiB;AAAA,YACjB,MAAM;AAAA,eACH;AAAA,UACJ;AAAA,QACD,CAAC;AAAA,MACF;AAAA,IACD;AAAA,EACD;AAAA,EAKA,MAAM,MAAM,MAAM,KAAK,YAAY;AAAA,EAGnC,UAAU,IAAI,UAAU;AAAA,IACvB,QAAQ;AAAA,IACR;AAAA,EACD,CAAC;AAAA,EAED,OAAO,IAAI,SAAS,KAAK;AAAA,IACxB,SAAS;AAAA,MACR,gBAAgB;AAAA,MAChB,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,SACd;AAAA,IACJ;AAAA,EACD,CAAC;AAAA;AAMK,SAAS,yBAAyB,CACxC,UACA,eACA,WACA,aACS;AAAA,EACT,IAAI,aAAa;AAAA,IAChB,OAAO,qBAAqB;AAAA,EAC7B;AAAA,EAGA,MAAM,kBAAkB,+BAA+B,KAAK,QAAQ;AAAA,EAEpE,IAAI,iBAAiB;AAAA,IACpB,OAAO;AAAA,EACR;AAAA,EAEA,OAAO,gBAAgB,IACpB,kBAAkB,eAAe,SAAiC,IAClE;AAAA;AAMG,SAAS,oBAAoB,CACnC,UACA,aACA,QACA,WACA,aACS;AAAA,EACT,IAAI,aAAa;AAAA,IAChB,MAAM,eAAe,sBAAsB,KAAK,QAAQ;AAAA,IACxD,OAAO,eACJ,qBAAqB,IACrB,kBAAkB,QAAQ,SAAiC;AAAA,EAC/D;AAAA,EAEA,MAAM,mBACL,YAAY,WAAW,QAAQ,KAC/B,YAAY,WAAW,OAAO,KAC9B,YAAY,SAAS,MAAM,KAC3B,YAAY,SAAS,KAAK,KAC1B,YAAY,SAAS,KAAK;AAAA,EAE3B,MAAM,kBACL,WAAW,IAAI,IAAI,mBAAmB,MAAM,KAAK,KAAK,KAAK;AAAA,EAE5D,IAAI,mBAAmB,GAAG;AAAA,IACzB,OAAO;AAAA,EACR;AAAA,EAEA,OAAO,GAAG,sBAAsB,kBAAkB,mBAAmB,gBAAgB;AAAA;;;ADtL/E,SAAS,uBAAuB,CACtC,KACA,KACA,WACA,SACS;AAAA,EACT,QAAQ,cAAc,WAAW,cAAc,UAAU;AAAA,EAGzD,IAAI,IAAI,uBAAuB,SAAS,wBAAc;AAAA,IACrD,MAAM,WAAW,KAAK,KAAK,YAAY,WAAW;AAAA,IAClD,MAAM,iBAAiB,SAAQ,sBAAsB;AAAA,IAErD,IAAI;AAAA,MAEH,MAAM,eAAe,cAClB,wCACA,GAAG,sBAAsB;AAAA,MAG5B,IAAI,aAAa;AAAA,QAEhB,QAAQ,iBAAiB,MAAa;AAAA,QACtC,MAAM,WAAU,aAAa,QAAQ;AAAA,QAErC,OAAO,IAAI,SAAS,UAAS;AAAA,UAC5B,SAAS;AAAA,YACR,gBAAgB;AAAA,YAChB,iBAAiB;AAAA,UAClB;AAAA,QACD,CAAC;AAAA,MACF;AAAA,MAEA,OAAO,MAAM,UAAU,UAAU,gBAAgB,WAAW;AAAA,QAC3D;AAAA,MACD,CAAC;AAAA,MACA,MAAM;AAAA,GAGR;AAAA,EAGD,IAAI,IAAI,cAAc,SAAS,QAAQ,wBAAc;AAAA,IACpD,MAAM,WAAW,OAAO,OAAO,QAAQ,EAAE,EAAE,QAAQ,QAAQ,EAAE;AAAA,IAC7D,IAAI,CAAC;AAAA,MAAU,MAAM,IAAI;AAAA,IAEzB,MAAM,WAAW,KAAK,KAAK,YAAY,WAAW,QAAQ;AAAA,IAC1D,MAAM,iBAAiB,SAAQ,sBAAsB;AAAA,IAErD,IAAI;AAAA,MACH,MAAM,eAAe,0BACpB,UACA,cACA,WACA,WACD;AAAA,MAIA,OAAO,MAAM,UAAU,UAAU,gBAAgB,WAAW;AAAA,QAC3D;AAAA,MACD,CAAC;AAAA,MACA,OAAO,GAAG;AAAA,MACX,IAAI,aAAa;AAAA,QAAe,MAAM;AAAA,MACtC,QAAQ,MAAM,qCAAqC,UAAU,CAAC;AAAA,MAC9D,MAAM,IAAI;AAAA;AAAA,GAEX;AAAA,EAKD,IAAI,IAAI,2BAA2B,SAAS,QAAQ,wBAAc;AAAA,IACjE,MAAM,WAAW,OAAO,OAAO,QAAQ,EAAE,EAAE,QAAQ,QAAQ,EAAE;AAAA,IAC7D,IAAI,CAAC;AAAA,MAAU,MAAM,IAAI;AAAA,IAEzB,MAAM,WAAW,KAAK,KAAK,YAAY,eAAe,QAAQ;AAAA,IAC9D,MAAM,iBAAiB,SAAQ,sBAAsB;AAAA,IAErD,IAAI;AAAA,MAGH,MAAM,eAAe,cAClB,wCACA;AAAA,MAEH,OAAO,MAAM,UAAU,UAAU,gBAAgB,WAAW;AAAA,QAC3D;AAAA,MACD,CAAC;AAAA,MACA,OAAO,GAAG;AAAA,MACX,IAAI,aAAa;AAAA,QAAe,MAAM;AAAA,MACtC,QAAQ,MAAM,8CAA8C,UAAU,CAAC;AAAA,MACvE,MAAM,IAAI;AAAA;AAAA,GAEX;AAAA,EAED,OAAO;AAAA;;;AI3GR;AAJA,kBAAS;AAET,0BAAS;AAMT,IAAI;AAEJ,SAAS,gBAAe,GAAY;AAAA,EACnC,IAAI,mBAAkB;AAAA,IAAW,OAAO;AAAA,EAExC,IAAI;AAAA;AAAA,IAEH,iBAAgB;AAAA,IAChB,OAAO;AAAA,IACN,MAAM;AAAA,IACP,iBAAgB;AAAA,IAChB,OAAO;AAAA;AAAA;AAIF,SAAS,qBAAqB,CACpC,KACA,KACA,iBACA,WACA,QACA,aACS;AAAA,EAET,IAAI,IAAI,gBAAgB,eAAe,sBAAsB,GAAG,UAAU;AAAA,IACzE,MAAM,iBAAiB,OAAO,OAAO,QAAQ,EAAE,EAAE,KAAK;AAAA,IACtD,IAAI,CAAC;AAAA,MAAgB,MAAM,IAAI;AAAA,IAE/B,MAAM,WAAW,WAAW;AAAA,IAG5B,MAAM,SAAS,gBAAgB,IAAI,QAAQ;AAAA,IAC3C,IAAI,QAAQ;AAAA,MACX,IAAI,iBAAgB,GAAG;AAAA,QACtB,MAAM,cAAc,OAAM,cAAc;AAAA,QACxC,aAAa,cAAc;AAAA,UAC1B,qBAAqB;AAAA,UACrB,sBAAsB;AAAA,QACvB,CAAC;AAAA,MACF;AAAA,MACA,MAAM,WAAW,OAAO,MAAM;AAAA,MAC9B,SAAS,QAAQ,IAAI,iBAAiB,KAAK;AAAA,MAC3C,OAAO;AAAA,IACR;AAAA,IAEA,IAAI;AAAA,MACH,MAAM,iBAAiB,KACtB,KACA,YACA,eACA,GAAG,mBACJ;AAAA,MACA,MAAM,OAAO,IAAI,KAAK,cAAc;AAAA,MAEpC,IAAI,CAAE,MAAM,KAAK,OAAO,GAAI;AAAA,QAC3B,IAAI,iBAAgB,GAAG;AAAA,UACtB,MAAM,cAAc,OAAM,cAAc;AAAA,UACxC,aAAa,aAAa,sBAAsB,cAAc;AAAA,QAC/D;AAAA,QACA,MAAM,IAAI;AAAA,MACX;AAAA,MAGA,MAAM,MAAM,GAAG,IAAI,cAAc,cAAc,EAAE,OAAO,cAAc,MAAM,KAAK,IAAI,MAAM;AAAA,MAC3F,MAAM,MAAM,MAAa;AAAA,MACzB,MAAM,QAAQ,IAAI,SAAS,CAAC;AAAA,MAE5B,MAAM,OAAO,KAAK,UAAU,EAAE,YAAY,gBAAgB,MAAM,CAAC;AAAA,MACjE,MAAM,WAAW,IAAI,SAAS,MAAM;AAAA,QACnC,QAAQ;AAAA,QACR,SAAS;AAAA,UACR,gBAAgB;AAAA,UAChB,iBAAiB,kBAChB,QACA,SACD;AAAA,UACA,iBAAiB;AAAA,QAClB;AAAA,MACD,CAAC;AAAA,MAED,gBAAgB,IAAI,UAAU,QAAQ;AAAA,MAEtC,IAAI,iBAAgB,GAAG;AAAA,QACtB,MAAM,cAAc,OAAM,cAAc;AAAA,QACxC,aAAa,cAAc;AAAA,UAC1B,sBAAsB;AAAA,UACtB,2BAA2B,MAAM;AAAA,UACjC,qBAAqB;AAAA,QACtB,CAAC;AAAA,MACF;AAAA,MAEA,OAAO,SAAS,MAAM;AAAA,MACrB,OAAO,GAAG;AAAA,MACX,IAAI,aAAa;AAAA,QAAe,MAAM;AAAA,MACtC,QAAQ,MACP,wCAAwC,mBACxC,CACD;AAAA,MACA,IAAI,iBAAgB,GAAG;AAAA,QACtB,MAAM,cAAc,OAAM,cAAc;AAAA,QACxC,aAAa,aAAa,sBAAsB,cAAc;AAAA,MAC/D;AAAA,MACA,MAAM,IAAI;AAAA;AAAA,GAEX;AAAA,EAED,OAAO;AAAA;;;AC/GR;AAHA,uBAAS;AACT,iBAAS;AAcT,SAAS,iBAAiB,CAAC,OAA+C;AAAA,EACzE,IAAI,CAAC;AAAA,IAAO;AAAA,EACZ,MAAM,MAAM,OAAO,SAAS,OAAO,EAAE;AAAA,EACrC,OAAO,OAAO,MAAM,GAAG,KAAK,OAAO,IAAI,YAAY;AAAA;AAGpD,SAAS,KAAK,CAAC,OAA2B,KAAiC;AAAA,EAC1E,OAAO,SAAS,QAAQ,MAAM,MAAM;AAAA;AAG9B,SAAS,mBAAmB,CAClC,KACA,SACO;AAAA,EACP;AAAA,IACC;AAAA,IACA,SAAS;AAAA,IACT,iBAAiB,CAAC;AAAA,IAClB,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,4BAAc;AAAA,MACX;AAAA,EAEJ,SAAS,mBAAmB,CAAC,OAMxB;AAAA,IACJ,MAAM,QAAQ,kBAAkB,MAAM,CAAW;AAAA,IACjD,MAAM,SAAS,kBAAkB,MAAM,CAAW;AAAA,IAClD,MAAM,UAAU,kBAAkB,MAAM,CAAW;AAAA,IAEnD,IAAI,MAAM,KAAK,UAAU,WAAW;AAAA,MACnC,OAAO,EAAE,OAAO,0BAA0B;AAAA,IAC3C;AAAA,IAEA,IAAI,MAAM,KAAK,WAAW,WAAW;AAAA,MACpC,OAAO,EAAE,OAAO,2BAA2B;AAAA,IAC5C;AAAA,IAEA,IAAI,MAAM,GAAG;AAAA,MACZ,MAAM,IAAI,OAAO,SAAS,MAAM,GAAa,EAAE;AAAA,MAC/C,IAAI,OAAO,MAAM,CAAC,KAAK,IAAI,KAAK,IAAI,KAAK;AAAA,QACxC,OAAO,EAAE,OAAO,4CAA4C;AAAA,MAC7D;AAAA,IACD;AAAA,IAEA,OAAO,EAAE,OAAO,QAAQ,QAAQ;AAAA;AAAA,EAGjC,SAAS,wBAAwB,CAAC,KAAyC;AAAA,IAC1E,MAAM,SAAS,IAAI,IAAI,GAAG;AAAA,IAC1B,MAAM,YAAY,eAAe,KAChC,CAAC,WACA,OAAO,aAAa,UAAU,OAAO,SAAS,SAAS,IAAI,QAAQ,CACrE;AAAA,IAEA,IAAI,CAAC,WAAW;AAAA,MACf,OAAO,EAAE,OAAO,qBAAqB;AAAA,IACtC;AAAA,IAEA,OAAO;AAAA;AAAA,EAGR,SAAS,wBAAwB,CAChC,KACA,YAC6B;AAAA,IAC7B,MAAM,WAAW,IAAI,WAAW,GAAG,IAAI,IAAI,MAAM,CAAC,IAAI;AAAA,IACtD,MAAM,YAAY,MAAK,YAAW,QAAQ;AAAA,IAC1C,MAAM,iBAAiB,MAAK,YAAW,QAAQ;AAAA,IAE/C,IAAI,CAAC,eAAe,WAAW,UAAS,GAAG;AAAA,MAC1C,OAAO,EAAE,OAAO,gBAAgB;AAAA,IACjC;AAAA,IAEA,IAAI,CAAC,YAAW,SAAS,GAAG;AAAA,MAC3B,OAAO,EAAE,OAAO,kBAAkB;AAAA,IACnC;AAAA,IAEA,IAAI,CAAC,YAAY,SAAS,GAAG;AAAA,MAC5B,OAAO,EAAE,OAAO,uCAAuC;AAAA,IACxD;AAAA,IAEA,OAAO;AAAA;AAAA,EAGR,SAAS,mBAAmB,CAC3B,MACA,aACA,QACA,SACC;AAAA,IACD,OAAO,IAAI,SAAS,MAAkB;AAAA,MACrC,SAAS;AAAA,QACR,gBAAgB;AAAA,QAChB,iBAAiB,mBAAmB;AAAA,QACpC,iBAAiB,OAAO,MAAM,SAAS;AAAA,QACvC,kBAAkB,OAAO,OAAO,SAAS;AAAA,QACzC,kBAAkB,OAAO;AAAA,QACzB,MAAM;AAAA,MACP;AAAA,IACD,CAAC;AAAA;AAAA,EAIF,eAAe,mBAAmB,CACjC,OACA,UACA,YACA,WACA,YACA,cACA,SAKE;AAAA,IACF,MAAM,MAAM,MAAM;AAAA,IAClB,IAAI,CAAC,KAAK;AAAA,MACT,OAAO;AAAA,QACN,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,OAAO,EAAE,OAAO,kCAAkC;AAAA,MACnD;AAAA,IACD;AAAA,IAEA,MAAM,aAAa,oBAAoB,KAAK;AAAA,IAC5C,IAAI,WAAW,YAAY;AAAA,MAC1B,OAAO,EAAE,UAAU,MAAM,QAAQ,KAAK,OAAO,WAAW;AAAA,IACzD;AAAA,IAEA,QAAQ,OAAO,QAAQ,YAAY;AAAA,IACnC,MAAM,cAAc,MAAM;AAAA,IAC1B,MAAM,aAAa,MAAM,OAAO,SAAQ;AAAA,IACxC,MAAM,cAAc,MAAM,QAAQ,UAAS;AAAA,IAG3C,MAAM,YACL,IAAI,WAAW,SAAS,KAAK,IAAI,WAAW,UAAU,IACnD,yBAAyB,GAAG,IAC5B,yBAAyB,KAAK,UAAS;AAAA,IAE3C,IAAI,OAAO,cAAc,YAAY,WAAW,WAAW;AAAA,MAE1D,IAAI,SAAS;AAAA,MACb,IAAI,UAAU,UAAU,mBAAmB;AAAA,QAC1C,SAAS;AAAA,MACV,EAAO,SAAI,UAAU,UAAU,wCAAwC;AAAA,QACtE,SAAS;AAAA,MACV;AAAA,MACA,OAAO,EAAE,UAAU,MAAM,QAAQ,OAAO,UAAU;AAAA,IACnD;AAAA,IAGA,MAAM,eAAe,SAAQ;AAAA,IAC7B,MAAM,SAAS,eAAe;AAAA,IAE9B,MAAM,SAAS,MAAM,cACpB,WACA;AAAA,MACC,OAAO;AAAA,MACP,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA,KAAK;AAAA,IACN,GACA,YACD;AAAA,IAEA,QAAQ,MAAM,iBAAiB,eAC5B,eACA,IAAI,WAAW,OAAO,MAAM,GAC5B,OAAO,aACP,SAAQ,kBACT,IACC,EAAE,MAAM,OAAO,QAAQ,cAAc,CAAC,EAAE;AAAA,IAE3C,MAAM,WAAW,oBAChB,MACA,OAAO,aACP,QACA,OACD;AAAA,IAGA,YAAY,KAAK,UAAU,OAAO,QAAQ,YAAY,GAAG;AAAA,MACxD,SAAS,QAAQ,IAAI,KAAK,KAAK;AAAA,IAChC;AAAA,IAEA,OAAO,EAAE,SAAS;AAAA;AAAA,EAGnB,IAAI,IAAI,oBAAoB,SAAS,OAAO,mBAAS,UAAU;AAAA,IAC9D,IAAI;AAAA,MACH,MAAM,SAAS,MAAM,oBACpB,OACA,UACA,WACA,UACA,WACA,cACA,MACD;AAAA,MAEA,IAAI,OAAO,QAAQ;AAAA,QAClB,IAAI,SAAS,OAAO;AAAA,QACpB,IAAI,OAAO;AAAA,UAAO,OAAO,OAAO;AAAA,MACjC;AAAA,MAEA,IAAI,OAAO,UAAU;AAAA,QAEpB,MAAM,kBAAkB,OAAO,YAC9B,OAAO,SAAS,QAAQ,QAAQ,CACjC;AAAA,QACA,IAAI,UAAU;AAAA,QACd,OAAO,OAAO;AAAA,MACf;AAAA,MACC,OAAO,OAAO;AAAA,MACf,QAAQ,MAAM,6BAA6B,KAAK;AAAA,MAChD,IAAI,SAAS;AAAA,MACb,OAAO,EAAE,OAAO,2BAA2B;AAAA;AAAA,GAE5C;AAAA;;;AChPF,0BAAS;;;ACQT,SAAS,QAAQ,CAAC,KAAqB;AAAA,EACtC,IAAI,QAAO;AAAA,EACX,SAAS,IAAI,EAAG,IAAI,IAAI,QAAQ,KAAK;AAAA,IACpC,QAAQ,QAAO,KAAM,IAAI,WAAW,CAAC;AAAA,EACtC;AAAA,EACA,OAAO,UAAS;AAAA;AAGjB,IAAM,WAAW,CAAC,MAAc;AAAA,EAC/B,IAAI;AAAA,IAEH,MAAM,UAAW,YAAoB,KAAK;AAAA,IAC1C,MAAM,IAAI,OAAO,YAAY,aAAa,QAAQ,CAAC,IAAI,SAAS,CAAC;AAAA,IACjE,OAAO,MAAM,EAAE,OAAO,SAAS,EAAE,KAAK,OAAO,CAAC,EAAE,SAAS,EAAE;AAAA,IAC1D,MAAM;AAAA,IAEP,OAAO,MAAM,EAAE,OAAO,SAAS,EAAE,KAAK,SAAS,CAAC,EAAE,SAAS,EAAE;AAAA;AAAA;AAI/D,IAAM,iBAAiB,CAAC,aAA+C;AAAA,EACtE,IAAI;AAAA,IACH,IAAI,CAAC;AAAA,MAAS;AAAA,IAGd,MAAM,IAAS;AAAA,IACf,IAAI,OAAO,GAAG,QAAQ;AAAA,MACrB,OAAO,OAAO,EAAE,IAAI,eAAe,KAAK,EAAE;AAAA,IAC3C,OAAO,OAAQ,EAAE,oBAAoB,EAAE,oBAAoB,EAAa;AAAA,IACvE,MAAM;AAAA,IACP;AAAA;AAAA;AAIK,SAAS,aAAa,CAC5B,SACA,cACA,YACA,aACW;AAAA,EACX,MAAM,OAAO,OAAO,YAAY,WAAW,UAAU,KAAK,UAAU,OAAO;AAAA,EAC3E,MAAM,OAAO,SAAS,IAAI;AAAA,EAC1B,MAAM,MAAM,eAAe,UAAU,KAAK;AAAA,EAE1C,MAAM,WAAkC;AAAA,IACvC,MAAM;AAAA,IACN,iBAAiB;AAAA,EAClB;AAAA,EAEA,IAAI,aAAa;AAAA,IAChB,SAAQ,mBAAmB;AAAA,EAC5B;AAAA,EAEA,IAAI,QAAQ,OAAO,QAAQ,MAAM;AAAA,IAChC,OAAO,IAAI,SAAS,MAAM;AAAA,MACzB,QAAQ;AAAA,MACR;AAAA,IACD,CAAC;AAAA,EACF;AAAA,EAEA,OAAO,IAAI,SAAS,MAAM;AAAA,IACzB,SAAS;AAAA,SACL;AAAA,MACH,gBAAgB;AAAA,IACjB;AAAA,EACD,CAAC;AAAA;AAGK,SAAS,SAAS,CAAC,SAAiB,SAAS,KAAe;AAAA,EAClE,OAAO,IAAI,SAAS,KAAK,UAAU,EAAE,OAAO,QAAQ,CAAC,GAAG;AAAA,IACvD;AAAA,IACA,SAAS,EAAE,gBAAgB,kCAAkC;AAAA,EAC9D,CAAC;AAAA;;;ADlEF,SAAS,aAAa,CAAC,GAAmB;AAAA,EACzC,IAAI;AAAA,IACH,MAAM,IAAI,IAAI,IAAI,GAAG,kBAAkB;AAAA,IACvC,OAAO,EAAE,WAAW,EAAE;AAAA,IACrB,MAAM;AAAA,IACP,OAAO,OAAO,CAAC;AAAA;AAAA;AAIjB,SAAS,mBAAmB,CAAC,UAA+C;AAAA,EAC3E,IAAI;AAAA,IACH,OAAO,IAAI,IAAI,UAAU,kBAAkB,EAAE;AAAA,IAC5C,MAAM;AAAA,IACP;AAAA;AAAA;AASK,SAAS,sBAAsB,CACrC,KACA,MACS;AAAA,EACT;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,MACN;AAAA,EAGJ,IAAI,IAAI,sBAAsB,SAAS,YAAY;AAAA,IAClD,MAAM,SAAS,OAAO,MAAM,OAAO,EAAE,EAAE,KAAK;AAAA,IAC5C,MAAM,MAAM,OAAO,MAAM,OAAO,EAAE,EAAE,KAAK;AAAA,IAEzC,IAAI,OAAM;AAAA,IACV,IAAI;AAAA,MACH,OAAM,mBAAmB,MAAM;AAAA,MAC9B,MAAM;AAAA,IAIR,MAAM,YACL,KAAI,WAAW,mBAAmB,KAAK,yBAAyB,KAAK,IAAG;AAAA,IACzE,MAAM,aACL,KAAI,WAAW,WAAW,KAAK,yBAAyB,KAAK,IAAG;AAAA,IACjE,MAAM,aACL,KAAI,WAAW,UAAU,KACzB,oCAAoC,KAAK,IAAG;AAAA,IAC7C,MAAM,QAAQ,aAAa,cAAc,eAAe,CAAC,KAAI,SAAS,IAAI;AAAA,IAE1E,IAAI,EAAE,QAAQ;AAAA,MAAM,MAAM,IAAI;AAAA,IAE9B,MAAM,OACL,kBAAkB;AAAA,IAClB,yBAAyB;AAAA,IACzB;AAAA,IACA,mCAAmC;AAAA,IACnC;AAAA,IACA;AAAA,IACA,uCAAuC;AAAA,IACvC;AAAA,IAED,MAAM,eAAe,cAClB,qBAAqB,IACrB;AAAA,IAEH,OAAO,IAAI,SAAS,MAAM;AAAA,MACzB,SAAS;AAAA,QACR,gBAAgB;AAAA,QAChB,iBAAiB;AAAA,MAClB;AAAA,IACD,CAAC;AAAA,GACD;AAAA,EAID,eAAe,gBAAgB,CAC9B,UACA,SACA,UACC;AAAA,IACD,QAAQ,oCAAmB;AAAA,IAC3B,MAAM,WAAW,GAAG;AAAA,IAGpB,IAAI,cAAc,WAAW,IAAI,QAAQ;AAAA,IAIzC,MAAM,oBAAoB,gBAAgB;AAAA,IAE1C,IAAI,CAAC,aAAa;AAAA,MACjB,MAAM,KAAK,oBAAoB,QAAQ;AAAA,MACvC,QAAQ,SAAS,MAAM,gBACtB,UACA,WACA,KACA,aACA,EAAE,WAAW,MAAM,OAAO,GAC1B,EACD;AAAA,MACA,cAAc;AAAA,MACd,WAAW,IAAI,UAAU,WAAW;AAAA,IACrC;AAAA,IAEA,IAAI,eAAe,OAAO,gBAAgB,UAAU;AAAA,MACnD,MAAM,QAAQ,YAAY;AAAA,MAC1B,IAAI,iBAAiB,SAAS;AAAA,QAC7B,MAAM,WAAW,MAAM;AAAA,QACvB,MAAM,mBAAmB,GAAG,YAAY;AAAA,QACxC,WAAW,IAAI,kBAAkB,QAAQ;AAAA,QACzC,OAAO,cACN,EAAE,MAAM,SAAS,GACjB,oBAAoB,YACpB,UACA,oBAAoB,QAAQ,MAC7B;AAAA,MACD;AAAA,MACA,IAAI,UAAU,WAAW;AAAA,QACxB,OAAO,cACN,EAAE,MAAM,MAAM,GACd,oBAAoB,YACpB,UACA,oBAAoB,QAAQ,MAC7B;AAAA,MACD;AAAA,IACD;AAAA,IAEA,OAAO,UAAU,iBAAiB,GAAG;AAAA;AAAA,EAGtC,eAAe,qBAAqB,CACnC,UACgD;AAAA,IAChD,QAAQ,oCAAmB;AAAA,IAG3B,MAAM,WAAW,GAAG;AAAA,IAEpB,IAAI,OAAO,WAAW,IAAI,QAAQ;AAAA,IAClC,MAAM,WAAW,SAAS;AAAA,IAE1B,IAAI,SAAS,WAAW;AAAA,MACvB,MAAM,KAAK,oBAAoB,QAAQ;AAAA,MAEvC,IAAI;AAAA,QAEH,MAAM,SAAS,MAAM,gBACpB,UACA,WACA,KACA,aACA,EAAE,WAAW,MAAM,OAAO,GAC1B,EACD;AAAA,QAGA,OAAO,6BAA6B,OAAO,MAAM,QAAQ;AAAA,QACxD,OAAO,OAAO;AAAA,QACf,QAAQ,MAAM,0CAA0C,KAAK;AAAA,QAC7D,OAAO;AAAA;AAAA,MAGR,WAAW,IAAI,UAAU,IAAI;AAAA,IAC9B;AAAA,IAEA,OAAO,EAAE,MAAM,SAAS;AAAA;AAAA,EAIzB,SAAS,4BAA4B,CACpC,MACA,UACU;AAAA,IASV,IAAI,gBAAgB,SAAS;AAAA,MAG5B,OAAO;AAAA,QACN,UAAU;AAAA,QACV,WAAW,wBAAwB,mBAAmB,QAAQ;AAAA,MAC/D;AAAA,IACD;AAAA,IAEA,IAAI,OAAO,SAAS,YAAY,SAAS,QAAQ,CAAC,MAAM,QAAQ,IAAI,GAAG;AAAA,MACtE,MAAM,SAAkC,CAAC;AAAA,MACzC,IAAI,cAAc;AAAA,MAElB,YAAY,KAAK,UAAU,OAAO,QAAQ,IAAI,GAAG;AAAA,QAEhD,IAAI,iBAAiB,SAAS;AAAA,UAC7B,cAAc;AAAA,UACd,OAAO,OAAO;AAAA,YACb,UAAU;AAAA,YACV,WAAW,wBAAwB,mBAAmB,QAAQ,SAAS,mBAAmB,GAAG;AAAA,UAC9F;AAAA,QACD,EAAO;AAAA,UACN,OAAO,OAAO;AAAA;AAAA,MAEhB;AAAA,MAGA,IAAI,aAAa;AAAA,QAChB,OAAO,cAAc;AAAA,MACtB;AAAA,MAQA,OAAO;AAAA,IACR;AAAA,IAGA,OAAO;AAAA;AAAA,EAGR,IAAI,IAAI,mBAAmB,SAAS,OAAO,wBAAc;AAAA,IACxD,MAAM,IAAI,OAAO,MAAM,QAAQ,MAAM,KAAK,GAAG;AAAA,IAC7C,MAAM,UAAU,OAAO,MAAM,OAAO,EAAE;AAAA,IACtC,MAAM,WAAW,cAAc,CAAC;AAAA,IAEhC,IAAI;AAAA,MAEH,IAAI,SAAS;AAAA,QACZ,OAAO,MAAM,iBACZ,UACA,SACA,QACD;AAAA,MACD;AAAA,MAGA,QAAQ,MAAM,aAAa,MAAM,sBAAsB,QAAQ;AAAA,MAE/D,OAAO,cACN,EAAE,KAAK,GACP,oBAAoB,YACpB,UACA,WAAW,QAAQ,MACpB;AAAA,MACC,MAAM;AAAA,MACP,OAAO,UAAU,UAAU,GAAG;AAAA;AAAA,GAE/B;AAAA,EAED,OAAO;AAAA;AAWR,IAAM,0BAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAwKzB,SAAS,wBAAwB,CACvC,KACA,OACS;AAAA,EACT,QAAQ,IAAI,wDAAwD;AAAA,EAEpE,IAAI,IAAI,oBAAoB,MAAM;AAAA,IACjC,MAAM,UAAU,IAAI;AAAA,IACpB,IAAI;AAAA,IACJ,IAAI,oBAA4D;AAAA,IAEhE,MAAM,UAAS,IAAI,eAAe;AAAA,MACjC,KAAK,CAAC,YAAY;AAAA,QACjB,oBAAoB;AAAA,QACpB,MAAM,QAAQ,IAAI,UAAU;AAAA,QAC5B,QAAQ,IAAI,6CAA6C;AAAA,QAEzD,WAAW,QAAQ,QAAQ,OAAO;AAAA,CAAe,CAAC;AAAA,QAClD,WAAW,QAAQ,QAAQ,OAAO;AAAA;AAAA,CAAqB,CAAC;AAAA,QAExD,IAAI,MAAM,eAAe;AAAA,UACxB,WAAW,QAAQ,QAAQ,OAAO;AAAA;AAAA,CAAkB,CAAC;AAAA,UACrD,MAAM,gBAAgB;AAAA,QACvB;AAAA,QAGA,WAAW,YAAY,MAAM;AAAA,UAC5B,IAAI;AAAA,YACH,WAAW,QAAQ,QAAQ,OAAO;AAAA;AAAA,CAAY,CAAC;AAAA,YAC9C,MAAM;AAAA,WAGN,KAAK;AAAA;AAAA,MAET,MAAM,GAAG;AAAA,QACR,IAAI;AAAA,UAAU,cAAc,QAAQ;AAAA,QACpC,IAAI,mBAAmB;AAAA,UACtB,MAAM,QAAQ,OAAO,iBAAiB;AAAA,QACvC;AAAA,QACA,QAAQ,IAAI,iDAAiD;AAAA;AAAA,IAE/D,CAAC;AAAA,IAED,OAAO,IAAI,SAAS,SAAQ;AAAA,MAC3B,SAAS;AAAA,QACR,gBAAgB;AAAA,QAChB,iBAAiB;AAAA,QACjB,YAAY;AAAA,MACb;AAAA,IACD,CAAC;AAAA,GACD;AAAA,EAED,IAAI,IAAI,uBAAuB,MAAM;AAAA,IACpC,OAAO,IAAI,SAAS,yBAAyB;AAAA,MAC5C,SAAS;AAAA,QACR,gBAAgB;AAAA,QAChB,iBAAiB;AAAA,MAClB;AAAA,IACD,CAAC;AAAA,GACD;AAAA,EAED,OAAO;AAAA;;;AEjgBR;AAFA,0BAAS;;;ACSF,SAAS,UAAU,CAAC,KAAqB;AAAA,EAC/C,OAAO,IAAI,OAAO,CAAC,EAAE,YAAY,IAAI,IAAI,MAAM,CAAC;AAAA;AAc1C,SAAS,iBAAiB,CAChC,YACA,YACiB;AAAA,EACjB,MAAM,mBAAmB,WAAW,cAAc;AAAA,EAClD,OAAO;AAAA,IACN,OACC,kBAAkB,UACjB,WAAW,WACT,GAAG,WAAW,cAAc,WAAW,UAAU,MACjD,WAAW,UAAU;AAAA,IACzB,aAAa,kBAAkB,eAAe,WAAW;AAAA,EAC1D;AAAA;AAMD,IAAM,uBAAuB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AACD;AAKO,SAAS,mBAAmB,CAAC,UAA2B;AAAA,EAC9D,IACC,qBAAqB,SACpB,QACD,GACC;AAAA,IACD,OAAO;AAAA,EACR;AAAA,EACA,OAAO,SAAS,SAAS,WAAW,KAAK,SAAS,SAAS,gBAAgB;AAAA;AAerE,SAAS,aAAa,CAC5B,UACA,WACS;AAAA,EACT,IAAI,YAAY,SAAS,QACxB,IAAI,OAAO,GAAG,UAAU,QAAQ,KAAK,KAAK,IAAI,GAC9C,EACD;AAAA,EACA,IAAI,cAAc,MAAM,cAAc,UAAU;AAAA,IAC/C,YAAY;AAAA,EACb;AAAA,EACA,OAAO;AAAA;AAMD,SAAS,iBAAiB,CAAC,cAAqC;AAAA,EACtE,IAAI,CAAC;AAAA,IAAc,OAAO;AAAA,EAC1B,MAAM,cAAc,aAClB,MAAM,GAAG,EACT,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC;AAAA,EACnC,OAAO,YAAY,MAAM;AAAA;AAMnB,SAAS,mBAAmB,CAClC,aACsB;AAAA,EACtB,IAAI,gBAAgB;AAAA,IAAc,OAAO;AAAA,EACzC,IAAI,gBAAgB;AAAA,IAAiB,OAAO;AAAA,EAC5C,OAAO;AAAA;AAgBD,SAAS,kBAAkB,CACjC,UACA,cACA,SAC6B;AAAA,EAE7B,IAAI,QAAO,wBAAwB,SAAS,SAAS,SAAS,MAAM,GAAG;AAAA,IACtE,OAAO;AAAA,MACN,QAAQ;AAAA,MACR,WAAW,cAAc,UAAU,MAAM;AAAA,IAC1C;AAAA,EACD;AAAA,EAGA,IAAI,QAAO,4BAA4B,SAAS,SAAS,SAAS,KAAK,GAAG;AAAA,IACzE,OAAO;AAAA,MACN,QAAQ;AAAA,MACR,WAAW,cAAc,UAAU,KAAK;AAAA,IACzC;AAAA,EACD;AAAA,EAGA,IAAI,QAAO,6BAA6B,OAAO;AAAA,IAC9C,MAAM,cAAc,kBAAkB,YAAY;AAAA,IAClD,MAAM,SAAS,oBAAoB,WAAW;AAAA,IAE9C,IAAI,QAAQ;AAAA,MACX,OAAO;AAAA,QACN;AAAA,QACA,WAAW;AAAA,MACZ;AAAA,IACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAMD,SAAS,iBAAiB,CAChC,UACA,QACA,gBACS;AAAA,EACT,OAAO,QAAQ,aAAa,WAAW,kBAAkB;AAAA;AAMnD,SAAS,sBAAsB,CAAC,YAA6B;AAAA,EACnE,OAAO,aAAa,cAAc,eAAe;AAAA;AAM3C,SAAS,qBAAqB,CAAC,YAA6B;AAAA,EAClE,OAAO,aAAa,aAAa,eAAe;AAAA;AAM1C,SAAS,uBAAuB,CACtC,YACA,SAMW;AAAA,EACX,MAAM,SAAmB,CAAC;AAAA,EAE1B,IAAI,QAAO,gBAAgB,OAAO;AAAA,IACjC,OAAO,KAAK,IAAI,qBAAqB;AAAA,EACtC;AAAA,EAEA,IAAI,QAAO,sBAAsB,OAAO;AAAA,IACvC,OAAO,KAAK,IAAI,0BAA0B;AAAA,EAC3C;AAAA,EAEA,IAAI,QAAO,wBAAwB,OAAO;AAAA,IACzC,OAAO,KAAK,IAAI,gBAAgB;AAAA,EACjC;AAAA,EAEA,IAAI,QAAO,4BAA4B,OAAO;AAAA,IAC7C,OAAO,KAAK,IAAI,eAAe;AAAA,EAChC;AAAA,EAEA,OAAO;AAAA;AAMD,SAAS,iBAAiB,CAAC,SAGrB;AAAA,EACZ,MAAM,SAAmB,CAAC;AAAA,EAE1B,IAAI,QAAO,gBAAgB,OAAO;AAAA,IACjC,OAAO,KAAK,WAAW;AAAA,EACxB;AAAA,EAEA,IAAI,QAAO,sBAAsB,OAAO;AAAA,IACvC,OAAO,KAAK,gBAAgB;AAAA,EAC7B;AAAA,EAEA,OAAO;AAAA;AAMD,SAAS,8BAA8B,CAAC,SAInC;AAAA,EACX,OACC,QAAO,wBAAwB,SAC/B,QAAO,4BAA4B,SACnC,QAAO,6BAA6B;AAAA;AAkB/B,SAAS,qBAAqB,CACpC,YACA,gBACqB;AAAA,EACrB,MAAM,SAAS,WAAW,UAAU,kBAAkB;AAAA,EACtD,MAAM,aAAa,WAAW,cAAc,UAAU;AAAA,EACtD,OAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA,OAAO,SAAS;AAAA,IAChB,WAAW,aAAa;AAAA,IACxB,SAAS,WAAW,WAAW;AAAA,EAChC;AAAA;AAMM,SAAS,cAAc,CAAC,OAAuB;AAAA,EACrD,QAAQ,QAAQ,OAAO,MAAM,QAAQ,CAAC;AAAA;;;ADvPhC,SAAS,kBAAkB,CACjC,KACA,SACS;AAAA,EACT;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MACG;AAAA,EAEJ,MAAM,WAAW,sBAAsB,YAAY,MAAM;AAAA,EACzD,QAAQ,OAAO,WAAW,YAAY;AAAA,EAEtC,MAAM,YAAY,IAAI,SAAyB,KAAK,KAAK;AAAA,EACzD,MAAM,gBAA0B,CAAC;AAAA,EAEjC,MAAM,eAAe;AAAA,IACpB,QAAQ,SAAS;AAAA,IACjB;AAAA,EACD;AAAA,EACA,MAAM,mBAAmB;AAAA,IACxB,QAAQ,SAAS;AAAA,IACjB;AAAA,EACD;AAAA,EAGA,cAAc,KAAK,GAAG,kBAAkB,UAAU,CAAC;AAAA,EAGnD,IAAI,WAAW,gBAAgB,OAAO;AAAA,IACrC,IAAI,IAAI,aAAa,YAAY;AAAA,MAChC,MAAM,WAAW,uBAAuB;AAAA,MAExC,IAAI;AAAA,QACH,MAAM,SAAS,UAAU,IAAI,QAAQ;AAAA,QACrC,IAAI,QAAQ;AAAA,UACX,OAAO,aAAa,QAAQ;AAAA,eACxB;AAAA,YACH,aAAa;AAAA,UACd,CAAC;AAAA,QACF;AAAA,QAEA,MAAM,WAAU,MAAM,kBAAkB;AAAA,UACvC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD,CAAC;AAAA,QAED,UAAU,IAAI,UAAU,QAAO;AAAA,QAE/B,OAAO,aAAa,UAAS,KAAK,cAAc,aAAa,OAAO,CAAC;AAAA,QACpE,OAAO,OAAO;AAAA,QACf,QAAQ,MAAM,4CAA4C,KAAK;AAAA,QAC/D,MAAM,IAAI,eAAc,8BAA8B;AAAA;AAAA,KAEvD;AAAA,EACF;AAAA,EAGA,IAAI,WAAW,sBAAsB,OAAO;AAAA,IAC3C,IAAI,IAAI,kBAAkB,YAAY;AAAA,MACrC,MAAM,WAAW,sBAAsB;AAAA,MAEvC,IAAI;AAAA,QACH,MAAM,SAAS,UAAU,IAAI,QAAQ;AAAA,QACrC,IAAI,QAAQ;AAAA,UACX,OAAO,aAAa,QAAQ;AAAA,eACxB;AAAA,YACH,aAAa;AAAA,UACd,CAAC;AAAA,QACF;AAAA,QAEA,QAAQ,IACP,gFACD;AAAA,QAEA,MAAM,YAAY,MAAM,aAAa;AAAA,QACrC,QAAQ,mBAAS,UAAU,MAAM,wBAAwB;AAAA,UACxD;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD,CAAC;AAAA,QAED,QAAQ,IACP,2CAA2C,MAAM,oBAAoB,eAAe,MAAM,QAAQ,KACnG;AAAA,QAEA,UAAU,IAAI,UAAU,UAAS,SAAS;AAAA,QAE1C,OAAO,aAAa,UAAS;AAAA,aACzB;AAAA,UACH,aAAa;AAAA,QACd,CAAC;AAAA,QACA,OAAO,OAAO;AAAA,QACf,QAAQ,MAAM,mDAAmD,KAAK;AAAA,QACtE,MAAM,IAAI,eAAc,qCAAqC;AAAA;AAAA,KAE9D;AAAA,EACF;AAAA,EAGA,WAAW,cAAc,cAAa;AAAA,IACrC,IAAI,WAAW,oBAAoB,SAAS,UAAU;AAAA,MAAG;AAAA,IAEzD,MAAM,OAAO,kBAAkB,YAAY,UAAU;AAAA,IAGrD,cAAc,KAAK,GAAG,wBAAwB,YAAY,UAAU,CAAC;AAAA,IAGrE,IAAI,WAAW,gBAAgB,OAAO;AAAA,MACrC,IAAI,IAAI,IAAI,uBAAuB,YAAY;AAAA,QAC9C,MAAM,WAAW,uBAAuB,UAAU;AAAA,QAElD,IAAI;AAAA,UACH,MAAM,SAAS,UAAU,IAAI,QAAQ;AAAA,UACrC,IAAI,QAAQ;AAAA,YACX,OAAO,aAAa,QAAQ;AAAA,iBACxB;AAAA,cACH,aAAa;AAAA,YACd,CAAC;AAAA,UACF;AAAA,UAEA,MAAM,WAAU,MAAM,kBAAkB;AAAA,YACvC;AAAA,YACA,aAAa,CAAC,UAAU;AAAA,YACxB;AAAA,YACA;AAAA,YACA,YAAY;AAAA,iBACR;AAAA,cACH,UAAU,KAAK;AAAA,cACf,iBAAiB,KAAK;AAAA,YACvB;AAAA,UACD,CAAC;AAAA,UAED,UAAU,IAAI,UAAU,QAAO;AAAA,UAE/B,OAAO,aAAa,UAAS;AAAA,eACzB;AAAA,YACH,aAAa;AAAA,UACd,CAAC;AAAA,UACA,OAAO,OAAO;AAAA,UACf,QAAQ,MACP,qCAAqC,qBACrC,KACD;AAAA,UACA,MAAM,IAAI,eAAc,8BAA8B;AAAA;AAAA,OAEvD;AAAA,IACF;AAAA,IAGA,IAAI,WAAW,sBAAsB,OAAO;AAAA,MAC3C,IAAI,IAAI,IAAI,4BAA4B,YAAY;AAAA,QACnD,MAAM,WAAW,sBAAsB,UAAU;AAAA,QAEjD,IAAI;AAAA,UACH,MAAM,SAAS,UAAU,IAAI,QAAQ;AAAA,UACrC,IAAI,QAAQ;AAAA,YACX,OAAO,aAAa,QAAQ;AAAA,iBACxB;AAAA,cACH,aAAa;AAAA,YACd,CAAC;AAAA,UACF;AAAA,UAEA,QAAQ,IACP,6BAA6B,6BAC9B;AAAA,UAEA,MAAM,YAAY,MAAM,aAAa;AAAA,UACrC,QAAQ,mBAAS,UAAU,MAAM,wBAAwB;AAAA,YACxD;AAAA,YACA;AAAA,YACA;AAAA,YACA,aAAa,CAAC,UAAU;AAAA,YACxB;AAAA,YACA;AAAA,YACA;AAAA,YACA,YAAY;AAAA,iBACR;AAAA,cACH,UAAU,KAAK;AAAA,cACf,iBAAiB,KAAK;AAAA,YACvB;AAAA,UACD,CAAC;AAAA,UAED,QAAQ,IACP,4BAA4B,6BAA6B,MAAM,oBAAoB,eAAe,MAAM,QAAQ,KACjH;AAAA,UAEA,UAAU,IAAI,UAAU,UAAS,SAAS;AAAA,UAE1C,OAAO,aAAa,UAAS;AAAA,eACzB;AAAA,YACH,aAAa;AAAA,UACd,CAAC;AAAA,UACA,OAAO,OAAO;AAAA,UACf,QAAQ,MACP,qCAAqC,4BACrC,KACD;AAAA,UACA,MAAM,IAAI,eAAc,qCAAqC;AAAA;AAAA,OAE9D;AAAA,IACF;AAAA,EACD;AAAA,EAGA,IAAI,+BAA+B,UAAU,GAAG;AAAA,IAC/C,eAAe,gBAAgB,CAC9B,UACA,QACA,gBACC;AAAA,MACD,MAAM,WAAW,kBAAkB,UAAU,QAAQ,cAAc;AAAA,MAEnE,MAAM,SAAS,UAAU,IAAI,QAAQ;AAAA,MACrC,IAAI,QAAQ;AAAA,QACX,OAAO,WAAW,OACf,iBAAiB,QAAQ;AAAA,aACtB;AAAA,UACH,aAAa;AAAA,QACd,CAAC,IACA,aAAa,QAAQ;AAAA,aAClB;AAAA,UACH,cAAc,EAAE,MAAM,SAAS;AAAA,UAC/B,aAAa;AAAA,QACd,CAAC;AAAA,MACJ;AAAA,MAEA,MAAM,YAAY,MAAM,aAAa;AAAA,MACrC,MAAM,WAAU,MAAM,sBAAsB;AAAA,QAC3C;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD,CAAC;AAAA,MAED,UAAU,IAAI,UAAU,QAAO;AAAA,MAE/B,OAAO,WAAW,OACf,iBAAiB,UAAS,KAAK,cAAc,aAAa,OAAO,CAAC,IAClE,aAAa,UAAS;AAAA,WACnB;AAAA,QACH,cAAc,EAAE,MAAM,SAAS;AAAA,QAC/B,aAAa;AAAA,MACd,CAAC;AAAA;AAAA,IAIJ,IAAI,eAAe,SAAS,cAAc;AAAA,MACzC,MAAM,MAAM,IAAI,IAAI,QAAQ,GAAG;AAAA,MAC/B,MAAM,WAAW,IAAI;AAAA,MAGrB,IAAI,oBAAoB,QAAQ,GAAG;AAAA,QAClC;AAAA,MACD;AAAA,MAEA,MAAM,eAAe,QAAQ,QAAQ,IAAI,QAAQ,KAAK;AAAA,MACtD,MAAM,SAAS,mBAAmB,UAAU,cAAc,UAAU;AAAA,MAEpE,IAAI,CAAC;AAAA,QAAQ;AAAA,MAEb,QAAQ,QAAQ,cAAc;AAAA,MAE9B,IAAI;AAAA,QACH,MAAM,iBAAiB,QAAQ,QAAQ,IAAI,iBAAiB,KAAK;AAAA,QACjE,OAAO,MAAM,iBACZ,WACA,QACA,cACD;AAAA,QACC,OAAO,OAAO;AAAA,QACf,QAAQ,MACP,gDAAgD,cAChD,KACD;AAAA,QAEA,IACC,iBAAiB,UAChB,MAAM,QAAQ,SAAS,UAAU,KACjC,MAAM,QAAQ,SAAS,WAAW,IAClC;AAAA,UACD,MAAM,IAAI,eACT,+CACD;AAAA,QACD;AAAA,QAEA,MAAM,IAAI,eAAc,2BAA2B;AAAA;AAAA,KAEpD;AAAA,EACF;AAAA,EAGC,WAAmB,6BAA6B;AAAA,EAGhD,IAAY,kBAAkB,MAAM,UAAU,MAAM;AAAA,EAErD,OAAO;AAAA;;;AElWR;AADA,0BAAS;AAyBT,eAAe,yBAAyB,CACvC,KACA,YACA,MACA,MACmB;AAAA,EACnB,IAAI;AAAA,IAEH,MAAM,SAAS,GAAG,4BAA4B;AAAA,IAC9C,QAAQ,4BAAe,MAAa;AAAA,IAEpC,IAAI,YAAW,MAAM,GAAG;AAAA,MACvB,IAAI;AAAA,QAGH,MAAM,MAAM,MAAa;AAAA,QACzB,MAAM,QAAQ,IAAI,SAAS,CAAC;AAAA,QAC5B,MAAM,OAAO,MAAM,KAAK,CAAC,MAAW,EAAE,SAAS,QAAQ,EAAE,SAAS,IAAI;AAAA,QACtE,IAAI,MAAM,MAAM;AAAA,UACf,OAAO,OAAO,MAAM,KAAK,IAAI;AAAA,UAC7B,OAAO;AAAA,QACR;AAAA,QACC,OAAO,aAAa;AAAA,QACrB,QAAQ,KACP,4CAA4C,eAC5C,WACD;AAAA;AAAA,IAEF;AAAA,IAGA,MAAM,WAAW,GAAG,4BAA4B;AAAA,IAChD,MAAM,WAAW,IAAI,KAAK,QAAQ;AAAA,IAClC,IAAI,MAAM,SAAS,OAAO,GAAG;AAAA,MAC5B,MAAM,QAAQ,MAAM,SAAS,KAAK;AAAA,MAClC,MAAM,OAAO,MAAM,QAAQ,KAAK,IAC7B,MAAM,KAAK,CAAC,MAAW,EAAE,SAAS,IAAI,IACtC;AAAA,MACH,IAAI,MAAM;AAAA,QACT,OAAO,OAAO,MAAM,IAAI;AAAA,QACxB,OAAO;AAAA,MACR;AAAA,IACD;AAAA,IACC,OAAO,OAAO;AAAA,IACf,QAAQ,KACP,uDAAuD,cAAc,SACrE,KACD;AAAA;AAAA,EAED,OAAO;AAAA;AAGR,eAAe,qBAAqB,CACnC,UACA,OAC2B;AAAA,EAC3B,MAAM,QAAQ,SAAS,MAAM,GAAG,EAAE,OAAO,OAAO;AAAA,EAChD,IAAI,MAAM,UAAU,GAAG;AAAA,IACtB,MAAM,MAAM,GAAG,MAAM,MAAM,MAAM;AAAA,IACjC,MAAM,UAAW,WAAmB,0BAA0B;AAAA,IAC9D,IAAI,SAAS,KAAK,SAAS;AAAA,MAC1B,OAAO,QAAQ,IAAI;AAAA,IACpB;AAAA,EACD;AAAA,EACA;AAAA;AAGD,eAAe,gBAAgB,CAC9B,UACA,KACA,WACA,aACwC;AAAA,EACxC,MAAM,OAAY,CAAC;AAAA,EACnB,IAAI;AAAA,EAEJ,IAAI;AAAA,IACH,MAAM,IAAI;AAAA,IACV,MAAM,UAAU,EAAE;AAAA,IAElB,IAAI,UAAU,WAAW;AAAA,MACxB,OAAO,OAAO,MAAM,QAAQ,SAAS;AAAA,IACtC;AAAA,IAEA,MAAM,QAAQ,SAAS,MAAM,GAAG,EAAE,OAAO,OAAO;AAAA,IAEhD,IAAI,MAAM,UAAU,GAAG;AAAA,MACtB,MAAM,aAAa,MAAM;AAAA,MACzB,MAAM,OAAO,MAAM,MAAM,SAAS;AAAA,MAGlC,MAAM,kBAAkB,MAAM,0BAC7B,KACA,YACA,MACA,IACD;AAAA,MAGA,IAAI,CAAC,mBAAmB,OAAO,KAAK,IAAI,EAAE,WAAW,GAAG;AAAA,QACvD,MAAM,gBAAgB,WAAW,YAAY,MAAM,aAAa,IAAI;AAAA,MACrE;AAAA,IACD;AAAA,IAGA,MAAM,YAAY,MAAM,qBACvB,KACA,WACA,UACA,WACD;AAAA,IAGA,IAAI,UAAU,MAAM;AAAA,MACnB,OAAO,OAAO,MAAM,UAAU,IAAI;AAAA,IACnC;AAAA,IAEA,UAAU,UAAU;AAAA,IAGpB,MAAM,uBAAuB,MAAM,sBAAsB,UAAU,IAAI;AAAA,IACvE,IAAI,sBAAsB;AAAA,MACzB,UAAU;AAAA,IACX;AAAA,IACC,OAAO,OAAO;AAAA,IACf,QAAQ,KAAK,2CAA2C,KAAK;AAAA;AAAA,EAG9D,OAAO,EAAE,MAAM,QAAQ;AAAA;AAGxB,eAAe,gBAAgB,CAAC,aAAkB,MAA6B;AAAA,EAC9E,IAAI;AAAA,IACH,MAAM,SAAS,MAAa;AAAA,IAC5B,MAAM,WAAU,MAAM,YAAY,KAAK;AAAA,IACvC,QAAQ,SAAS,OAAO,QAAQ,QAAO;AAAA,IACvC,IAAI,QAAQ,OAAO,KAAK,IAAI,EAAE,SAAS,GAAG;AAAA,MACzC,OAAO,OAAO,MAAM,IAAI;AAAA,MACxB,OAAO;AAAA,IACR;AAAA,IACC,MAAM;AAAA,EACR,OAAO;AAAA;AAGR,eAAe,WAAW,CACzB,aACA,aACA,MACmB;AAAA,EACnB,IAAI;AAAA,IACH,QAAQ,oCAAmB;AAAA,IAC3B,MAAM,cAAc,MAAM,gBAAe,aAAa,WAAW;AAAA,IACjE,IAAI,eAAe,OAAO,KAAK,WAAW,EAAE,SAAS,GAAG;AAAA,MACvD,OAAO,OAAO,MAAM,WAAW;AAAA,MAC/B,OAAO;AAAA,IACR;AAAA,IACC,MAAM;AAAA,EACR,OAAO;AAAA;AAGR,eAAe,eAAe,CAC7B,WACA,YACA,MACA,aACA,MACgB;AAAA,EAChB,MAAM,aAAa,GAAG,oBAAoB;AAAA,EAC1C,MAAM,aAAa,CAAC,QAAQ,OAAO,QAAQ,KAAK;AAAA,EAEhD,WAAW,OAAO,YAAY;AAAA,IAC7B,MAAM,cAAc,GAAG,cAAc,OAAO;AAAA,IAC5C,MAAM,cAAc,IAAI,KAAK,WAAW;AAAA,IAExC,IAAI,CAAE,MAAM,YAAY,OAAO;AAAA,MAAI;AAAA,IAEnC,MAAM,aAAa,QAAQ,SAAS,QAAQ;AAAA,IAC5C,MAAM,SAAS,aACZ,MAAM,iBAAiB,aAAa,IAAI,IACxC,MAAM,YAAY,aAAa,aAAa,IAAI;AAAA,IAEnD,IAAI;AAAA,MAAQ;AAAA,EACb;AAAA;AAGD,eAAe,sBAAsB,CACpC,WACA,WACA,aACsB;AAAA,EACtB,QAAQ,4BAAe,MAAa;AAAA,EACpC,QAAQ,kCAAkB,MAAa;AAAA,EACvC,MAAM,sBAAsB,cAAc,KAAK,UAAU;AAAA,EACzD,MAAM,gBAAgB;AAAA,IACrB,GAAG,oBAAoB;AAAA,IACvB,GAAG,oBAAoB;AAAA,IACvB,GAAG,oBAAoB;AAAA,IACvB,GAAG,oBAAoB;AAAA,IACvB,GAAG,oBAAoB;AAAA,IACvB,GAAG,oBAAoB;AAAA,IACvB,GAAG,oBAAoB;AAAA,IACvB,GAAG,oBAAoB;AAAA,EACxB;AAAA,EAEA,WAAW,gBAAgB,eAAe;AAAA,IACzC,IAAI,YAAW,YAAY,GAAG;AAAA,MAC7B,OAAO,MACN,sBAAc,YAAY,EAAE,QAC1B,cAAc,MAAM,KAAK,IAAI,MAAM;AAAA,IAEvC;AAAA,EACD;AAAA,EAEA,OAAO;AAAA;AAGR,eAAe,oBAAoB,CAClC,KACA,WACA,UACA,aACyC;AAAA,EACzC,IAAI;AAAA,IACH,MAAM,eAAe,SAAS,MAAM,GAAG,EAAE;AAAA,IAGzC,MAAM,eAAgB,WAAmB;AAAA,IACzC,IAAI,gBAAgB,MAAM,QAAQ,YAAY,GAAG;AAAA,MAChD,MAAM,gBAAe,YACpB,cACA,YACD,GAAG;AAAA,MAEH,IAAI,eAAc;AAAA,QACjB,OAAO;AAAA,UACN,MAAM,cAAa;AAAA,UACnB,SAAS,cAAa,KAAK;AAAA,QAC5B;AAAA,MACD;AAAA,IACD;AAAA,IAEA,QAAQ,kCAAkB,MAAa;AAAA,IAEvC,MAAM,aAAa,GAAG;AAAA,IACtB,MAAM,YAAY,MACjB,sBAAc,UAAU,EAAE,QAAQ,cAAc,MAAM,KAAK,IAAI,MAAM;AAAA,IAEtE,MAAM,QACL,OAAO,UAAU,eAAe,aAC7B,UAAU,WAAW,YAAY,IACjC,MAAM,QAAQ,UAAU,MAAM,IAC7B,YAAY,UAAU,QAAiB,YAAY,IACnD;AAAA,IACL,MAAM,eAAe,OAAO;AAAA,IAE5B,IAAI,gBAAgB,OAAO,aAAa,SAAS,UAAU;AAAA,MAC1D,MAAM,WAAW,MAAM,uBACtB,WACA,OAAO,aAAa,IAAI,GACxB,WACD;AAAA,MACA,IAAI,UAAU;AAAA,QACb,OAAO;AAAA,UACN,MAAM,SAAS;AAAA,UACf,SAAS,SAAS,KAAK;AAAA,QACxB;AAAA,MACD;AAAA,IACD;AAAA,IAEA,IAAI,cAAc;AAAA,MACjB,OAAO;AAAA,QACN,MAAM,aAAa;AAAA,QACnB,SAAS,aAAa,KAAK;AAAA,MAC5B;AAAA,IACD;AAAA,IACC,OAAO,OAAO;AAAA,IACf,QAAQ,KAAK,8CAA8C,KAAK;AAAA;AAAA,EAEjE,OAAO,CAAC;AAAA;AAIT,eAAe,eAAe,CAC7B,QACA,UACA,KACA,aACe;AAAA,EAEf,IAAI,QAAQ;AAAA,IAEX,MAAM,WAAY,WAAmB;AAAA,IACrC,IAAI,UAAU;AAAA,MAGb,MAAM,QAAQ,OAAO,MAAM,kCAAkC;AAAA,MAC7D,MAAM,YAAY,QAAQ,IAAI,MAAM,OAAO;AAAA,MAC3C,MAAM,YAAY,SAAS;AAAA,MAC3B,IAAI,WAAW;AAAA,QACd,OAAO;AAAA,MACR;AAAA,IACD;AAAA,IAGA,OAAO,MAAM,qBAAqB,QAAQ,WAAW;AAAA,EACtD;AAAA,EAGA,IAAI,SAAS,iBAAiB;AAAA,IAC7B,IAAI,SAAS,oBAAoB,WAAW;AAAA,MAC3C,OAAO;AAAA,IACR;AAAA,IAGA,MAAM,kBAAmB,WAAmB;AAAA,IAC5C,IAAI,iBAAiB;AAAA,MACpB,OAAO;AAAA,IACR;AAAA,IAGA,IAAI;AAAA,MACH,MAAM,eAAe,SAAS,gBAAgB,WAAW,GAAG,IACzD,SAAS,kBACT,GAAG,OAAO,SAAS,gBAAgB,QAAQ,SAAS,EAAE;AAAA,MACzD,OAAO,MAAM,qBAAqB,cAAc,WAAW;AAAA,MAC1D,OAAO,OAAO;AAAA,MACf,QAAQ,KACP,iEACA,KACD;AAAA;AAAA,EAEF;AAAA,EAEA,OAAO;AAAA;AAGD,SAAS,gBAAgB,CAAC,KAAa,SAAiC;AAAA,EAC9E,QAAQ,WAAW,KAAK,aAAa,UAAU,YAAY;AAAA,EAE3D,MAAM,QAAQ,SAAS,SAAS;AAAA,EAChC,MAAM,SAAS,SAAS,UAAU;AAAA,EAClC,MAAM,SAAS,SAAS,UAAU;AAAA,EAGlC,MAAM,mBAAmB,IAAI;AAAA,EAG7B,IAAI;AAAA,EACJ,IAAI,oBAA+D;AAAA,EAGnE,MAAM,gBAAgB,YAAY,MAAM;AAAA,IACvC,IAAI,WAAW,WAAW,OAAO,QAAQ,UAAU,YAAY;AAAA,MAC9D,MAAM,QAAQ,QAAQ,MAAM;AAAA,MAC5B,QAAQ,IACP,6BAA6B,MAAM,oBAAoB,MAAM,gBAAgB,MAAM,kBAAkB,MAAM,sBAC5G;AAAA,IACD;AAAA,KACE,MAAO;AAAA,EAGV,IAAI,cAAc,OAAO;AAAA,IACxB,cAAc,MAAM;AAAA,EACrB;AAAA,EAEA,SAAS,mBAAmB,CAAC,aAA6B;AAAA,IACzD,IAAI,WAAW,YACb,QAAQ,mBAAmB,EAAE,EAC7B,QAAQ,UAAU,EAAE;AAAA,IAGtB,IAAI,aAAa,YAAY,aAAa,SAAS;AAAA,MAClD,WAAW;AAAA,IACZ,EAAO,SAAI,SAAS,SAAS,QAAQ,GAAG;AAAA,MACvC,WAAW,SAAS,QAAQ,YAAY,EAAE,KAAK;AAAA,IAChD;AAAA,IAEA,OAAO;AAAA;AAAA,EAGR,SAAS,YAAY,CAAC,UAAkB,KAAgC;AAAA,IAEvE,MAAM,SAAS,QAAQ,IAAI,QAAQ;AAAA,IACnC,IAAI,QAAQ;AAAA,MACX,IAAI,QAAQ,kBAAkB;AAAA,MAC9B,IAAI,QAAQ,oBAAoB,OAAO,OAAO,UAAU;AAAA,MACxD,IAAI,QAAQ,mBAAmB,mBAAmB;AAAA,MAClD,IAAI,QAAQ,mBAAmB;AAAA,MAC/B,OAAO,IAAI,SAAS,MAAkB;AAAA,IACvC;AAAA,IACA;AAAA;AAAA,EAID,SAAS,YAAY,CACpB,UACA,SACA,OACW;AAAA,IACX,MAAM,mBAAmB,SACvB,QAAQ,iCAAiC,EAAE,EAC3C,QAAQ,aAAa,EAAE;AAAA,IAEzB,OAAO;AAAA,MACN,MAAK,WAAW,UAAU,gBAAgB;AAAA,MAC1C,MAAK,SAAS,YAAY,UAAU,gBAAgB;AAAA,MACpD,MAAK,KAAK,YAAY,UAAU,gBAAgB;AAAA,MAChD,MAAK,KAAK,QAAQ;AAAA,MAClB,MAAK,SAAS,QAAQ;AAAA,IACvB;AAAA;AAAA,EAID,eAAe,WAAW,CACzB,MACA,eACA,aAC8B;AAAA,IAC9B,WAAW,YAAY,eAAe;AAAA,MACrC,IAAI,YAAW,QAAQ,GAAG;AAAA,QACzB,MAAM,WAAW,IAAI,KAAK,QAAQ;AAAA,QAClC,MAAM,OAAO,MAAM,SAAS,YAAY;AAAA,QAExC,OAAO;AAAA,UACN,MAAM,KAAK;AAAA,UACX;AAAA,UACA,QAAQ,KAAK,UAAU;AAAA,UACvB,OAAQ,KAAK,SAAkC;AAAA,UAC/C,MAAM;AAAA,QACP;AAAA,MACD;AAAA,IACD;AAAA,IACA,OAAO;AAAA;AAAA,EAIR,eAAe,YAAY,GAA2B;AAAA,IACrD,IAAI,CAAC,SAAS,SAAS,SAAS,MAAM,WAAW,GAAG;AAAA,MACnD,OAAO,CAAC;AAAA,IACT;AAAA,IAEA,QAAQ,aAAM,YAAY,MAAa;AAAA,IACvC,QAAQ,4BAAe,MAAa;AAAA,IAEpC,MAAM,mBACL,OAAO,QAAQ,eAAe,QAAQ,KAAK,IAAI,SAAS,QAAQ,KAAK,EAAE;AAAA,IACxE,MAAM,UAAU,mBAAmB,QAAQ,QAAQ,KAAK,EAAE,IAAI;AAAA,IAE9D,MAAM,cAA6B,CAAC;AAAA,IAEpC,WAAW,QAAQ,SAAS,OAAO;AAAA,MAClC,IAAI;AAAA,QACH,MAAM,gBAAgB,aAAa,KAAK,MAAM,SAAS,KAAI;AAAA,QAC3D,MAAM,aAAa,MAAM,YAAY,MAAM,eAAe,WAAU;AAAA,QAEpE,IAAI,YAAY;AAAA,UACf,YAAY,KAAK,UAAU;AAAA,QAC5B,EAAO;AAAA,UACN,QAAQ,KAAK,qCAAqC,KAAK,MAAM;AAAA;AAAA,QAE7D,OAAO,OAAO;AAAA,QACf,QAAQ,KAAK,oCAAoC,KAAK,SAAS,KAAK;AAAA;AAAA,IAEtE;AAAA,IAEA,OAAO;AAAA;AAAA,EAIR,eAAe,SAAS,GAAuC;AAAA,IAC9D,IAAI,eAAe,WAAW;AAAA,MAC7B,OAAO;AAAA,IACR;AAAA,IAEA,IAAI,mBAAmB;AAAA,MACtB,OAAO,MAAM;AAAA,IACd;AAAA,IAEA,oBAAoB,aAAa,EAAE,KAAK,CAAC,UAAU;AAAA,MAClD,aAAa;AAAA,MACb,OAAO;AAAA,KACP;AAAA,IAED,OAAO,MAAM;AAAA;AAAA,EAGd,eAAe,eAAe,CAC7B,UACA,YACA,MACA,cACA,WACA,QACA,SACgB;AAAA,IAChB,MAAM,SAAS,MAAM,mBAAmB,UAAU,UAAS;AAAA,IAC3D,MAAM,YAAY,MAAM,gBAAgB,QAAQ,WAAU,MAAK,YAAW;AAAA,IAE1E,IAAI,CAAC,WAAW;AAAA,MACf,QAAQ,KAAK,6CAA6C,UAAU;AAAA,MACpE,MAAM,IAAI,eAAc,8BAA8B;AAAA,IACvD;AAAA,IAEA,MAAM,SAAS,SACZ,sBAAsB,UAAU,QAAQ,UAAS,IACjD,CAAC;AAAA,IAEJ,QAAQ,MAAM,SAAS,iBAAiB,MAAM,iBAC7C,UACA,MACA,YACA,YACD;AAAA,IAGA,MAAM,QAAQ,MAAM,UAAU;AAAA,IAE9B,MAAM,SAAS,MAAM,mBACpB,WACA;AAAA,MACC;AAAA,MACA;AAAA,MACA,QAAQ,cAAc,UAAU,UAAS;AAAA,MACzC,UAAU,cAAc,YAAY,UAAS;AAAA,MAC7C,SAAS,UAAS;AAAA,IACnB,GACA,EAAE,eAAO,iBAAQ,MAAM,CACxB;AAAA,IAGA,QAAQ,IAAI,UAAU,MAAM;AAAA;AAAA,EAK7B,SAAS,gBAAgB,CAAC,UAA2B;AAAA,IAGpD,IAAI,SAAS,SAAS;AAAA,MAAI,OAAO;AAAA,IAIjC,IAAI,WAAW,KAAK,QAAQ;AAAA,MAAG,OAAO;AAAA,IAGtC,IAAI,eAAe,KAAK,QAAQ;AAAA,MAAG,OAAO;AAAA,IAG1C,MAAM,gBAAgB,SAAS,MAAM,IAAI,KAAK,CAAC,GAAG;AAAA,IAClD,IAAI,eAAe;AAAA,MAAG,OAAO;AAAA,IAE7B,OAAO;AAAA;AAAA,EAIR,eAAe,kBAAkB,CAAC,UAAiC;AAAA,IAClE,MAAM,qBAAqB,iBAAiB,IAAI,QAAQ;AAAA,IACxD,IAAI,oBAAoB;AAAA,MACvB,MAAM;AAAA,MACN;AAAA,IACD;AAAA,IAEA,MAAM,oBAAoB,gBACzB,UACA,WACA,KACA,aACA,UACA,OACA,MACD;AAAA,IAEA,iBAAiB,IAAI,UAAU,iBAAiB;AAAA,IAEhD,IAAI;AAAA,MACH,MAAM;AAAA,MACN,QAAQ,IAAI,qCAAqC,UAAU;AAAA,cAC1D;AAAA,MACD,iBAAiB,OAAO,QAAQ;AAAA;AAAA;AAAA,EAIlC,IAAI,IAAI,mBAAmB,SAAS,SAAS,UAAU;AAAA,IACtD,IAAI;AAAA,MACH,MAAM,MAAM,IAAI,IAAI,QAAQ,GAAG;AAAA,MAC/B,MAAM,WAAW,oBAAoB,IAAI,QAAQ;AAAA,MAEjD,IAAI,CAAC,iBAAiB,QAAQ,GAAG;AAAA,QAChC,QAAQ,KACP,wCAAwC,SAAS,UAAU,GAAG,GAAG,MAClE;AAAA,QACA,IAAI,SAAS;AAAA,QACb,OAAO,IAAI,SAAS,eAAe;AAAA,UAClC,QAAQ;AAAA,UACR,SAAS,EAAE,gBAAgB,aAAa;AAAA,QACzC,CAAC;AAAA,MACF;AAAA,MAGA,MAAM,iBAAiB,aAAa,UAAU,GAAG;AAAA,MACjD,IAAI;AAAA,QAAgB,OAAO;AAAA,MAG3B,IAAI;AAAA,QACH,MAAM,mBAAmB,QAAQ;AAAA,QAChC,OAAO,OAAO;AAAA,QACf,QAAQ,MACP,6CAA6C,aAC7C,KACD;AAAA,QACA,IAAI,SAAS;AAAA,QACb,OAAO,IAAI,SAAS,4BAA4B;AAAA,UAC/C,QAAQ;AAAA,UACR,SAAS,EAAE,gBAAgB,aAAa;AAAA,QACzC,CAAC;AAAA;AAAA,MAIF,MAAM,oBAAoB,aAAa,UAAU,GAAG;AAAA,MACpD,IAAI;AAAA,QAAmB,OAAO;AAAA,MAG9B,IAAI,SAAS;AAAA,MACb,OAAO,IAAI,SAAS,6CAA6C;AAAA,QAChE,QAAQ;AAAA,QACR,SAAS,EAAE,gBAAgB,aAAa;AAAA,MACzC,CAAC;AAAA,MACA,OAAO,OAAO;AAAA,MACf,QAAQ,MAAM,gDAAgD,KAAK;AAAA,MACnE,IAAI,SAAS;AAAA,MACb,OAAO,IAAI,SAAS,yBAAyB;AAAA,QAC5C,QAAQ;AAAA,QACR,SAAS;AAAA,UACR,gBAAgB;AAAA,QACjB;AAAA,MACD,CAAC;AAAA;AAAA,GAEF;AAAA,EAED,OAAO;AAAA;;;AC5oBR,SAAS,gBAAgB,CAAC,OAA2C;AAAA,EACpE,OAAO,MAAM,IAAI,CAAC,SAAS;AAAA,IAC1B,MAAM,UAAU,KAAK,SAAS,KAAK,kBAAkB;AAAA,IACrD,OAAO;AAAA,MACN,QAAQ,KAAK;AAAA,MACb,aAAa,KAAK;AAAA,MAClB,QAAQ,KAAK,UAAU;AAAA,MACvB;AAAA,IACD;AAAA,GACA;AAAA;AAMF,SAAS,aAAa,CACrB,UACA,UAIC;AAAA,EACD,IAAI,SAAS,SAAS;AAAA,IACrB,MAAM,UACL,SAAS,kBAAkB,SACxB,SAAS,SACT,IAAI,OAAO,SAAS,MAAM;AAAA,IAC9B,MAAM,QAAQ,SAAS,MAAM,OAAO;AAAA,IACpC,IAAI,OAAO;AAAA,MACV,OAAO;AAAA,QACN,aAAa,SAAS;AAAA,QACtB,UAAU,MAAM,MAAM,CAAC;AAAA,MACxB;AAAA,IACD;AAAA,EACD,EAAO;AAAA,IAEN,IAAI,aAAa,SAAS,QAAQ;AAAA,MACjC,OAAO;AAAA,QACN,aAAa,SAAS;AAAA,QACtB,UAAU,CAAC;AAAA,MACZ;AAAA,IACD;AAAA;AAAA,EAED,OAAO;AAAA;AAOR,SAAS,eAAe,CAAC,aAAqB,UAA4B;AAAA,EACzE,OAAO,YAAY,QAAQ,YAAY,CAAC,GAAG,UAAU;AAAA,IACpD,MAAM,eAAe,OAAO,SAAS,OAAO,EAAE,IAAI;AAAA,IAClD,OAAO,SAAS,iBAAiB;AAAA,GACjC;AAAA;AAOK,SAAS,sBAAsB,CACrC,KACA,OACS;AAAA,EACT,IAAI,CAAC,SAAS,MAAM,WAAW,GAAG;AAAA,IACjC,OAAO;AAAA,EACR;AAAA,EAGA,MAAM,eAAe,MAAM,OAAO,CAAC,SAAS,KAAK,YAAY,KAAK;AAAA,EAElE,IAAI,aAAa,WAAW,GAAG;AAAA,IAC9B,OAAO;AAAA,EACR;AAAA,EAEA,MAAM,WAAW,iBAAiB,YAAY;AAAA,EAE9C,QAAQ,IACP,wBAAwB,SAAS,uBAAuB,SAAS,WAAW,IAAI,KAAK,KACtF;AAAA,EAGA,eAAe,0BAA0B,CACxC,OAMA,KAIS;AAAA,IAET,IAAI,OAAO,MAAM,gBAAgB,YAAY;AAAA,MAC5C,IAAI;AAAA,QACH,MAAM,SAAS,MAAM,MAAM,YAAY,GAAG;AAAA,QAC1C,IAAI,WAAW,MAAM;AAAA,UAEpB,OAAO;AAAA,QACR;AAAA,QACA,OAAO,EAAE,aAAa,QAAQ,mBAAmB,KAAK;AAAA,QACrD,OAAO,OAAO;AAAA,QACf,QAAQ,MAAM,qCAAqC,KAAK;AAAA,QACxD,OAAO;AAAA;AAAA,IAET;AAAA,IAGA,MAAM,cAAc,MAAM,YAAY,SAAS,GAAG,IAC/C,gBAAgB,MAAM,aAAa,MAAM,QAAQ,IACjD,MAAM;AAAA,IAET,OAAO,EAAE,aAAa,mBAAmB,MAAM;AAAA;AAAA,EAGhD,SAAS,qBAAqB,CAC7B,aACA,mBACA,KACS;AAAA,IACT,IAAI,CAAC,qBAAqB,IAAI,UAAU,CAAC,YAAY,SAAS,GAAG,GAAG;AAAA,MACnE,OAAO,cAAc,IAAI;AAAA,IAC1B;AAAA,IACA,OAAO;AAAA;AAAA,EAGR,IAAI,eAAe,SAAS,cAAc;AAAA,IACzC,MAAM,MAAM,IAAI,IAAI,QAAQ,GAAG;AAAA,IAC/B,MAAM,WAAW,IAAI;AAAA,IAGrB,WAAW,gBAAgB,UAAU;AAAA,MACpC,MAAM,QAAQ,cAAc,UAAU,YAAY;AAAA,MAClD,IAAI,CAAC;AAAA,QAAO;AAAA,MAEZ,MAAM,YAAY,MAAM,2BAA2B,OAAO,GAAG;AAAA,MAC7D,IAAI,CAAC;AAAA,QAAW;AAAA,MAEhB,QAAQ,aAAa,sBAAsB;AAAA,MAG3C,IAAI,aAAa;AAAA,QAChB,MAAM,mBAAmB,sBACxB,aACA,mBACA,GACD;AAAA,QAGA,OAAO,IAAI,SAAS,MAAM;AAAA,UACzB,QAAQ,aAAa;AAAA,UACrB,SAAS;AAAA,YACR,UAAU;AAAA,UACX;AAAA,QACD,CAAC;AAAA,MACF;AAAA,IACD;AAAA,GAGA;AAAA,EAED,OAAO;AAAA;;;AC/KR;AADA,0BAAS;AAsBF,SAAS,mBAAmB,CAClC,KACA,SACS;AAAA,EACT;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MACG;AAAA,EAEJ,IAAI,IAAI,eAAe,YAAY;AAAA,IAClC,IAAI;AAAA,MACH,MAAM,SAAS,YAAY,IAAI,aAAa;AAAA,MAC5C,IAAI,QAAQ;AAAA,QACX,OAAO,aAAa,QAAQ,EAAE,QAAQ,aAAa,MAAM,CAAC;AAAA,MAC3D;AAAA,MAEA,MAAM,aAAY,MAAM,mBACvB,KACA,aACA,cACA,eACA,SACD;AAAA,MAEA,MAAM,MAAM,eAAe,YAAW,cAAc,cAAc;AAAA,MAElE,YAAY,IAAI,eAAe,GAAG;AAAA,MAElC,OAAO,aAAa,KAAK,EAAE,QAAQ,aAAa,OAAO,CAAC;AAAA,MACvD,OAAO,OAAO;AAAA,MACf,QAAQ,MAAM,4CAA4C,KAAK;AAAA,MAC/D,MAAM,IAAI;AAAA;AAAA,GAEX;AAAA,EAED,OAAO;AAAA;;;AC9DR;AADA,0BAAS;;;ACSF,SAAS,KAAK,CAAC,SAAyB;AAAA,EAC9C,OAAO,UAAU;AAAA;;;ADkBlB,IAAM,oBAAoB,IAAI,SAG5B,GAAG,IAAI,KAAK,IAAI;AAElB,eAAe,oBAAoB,CAClC,KACA,cACA,SACA,aACA,WACuD;AAAA,EAEvD,IAAI,aAAa;AAAA,IAChB,OAAO,gBAAgB,KAAK,cAAa,SAAS,aAAa,SAAS;AAAA,EACzE;AAAA,EAGA,MAAM,WAAW;AAAA,EACjB,MAAM,SAAS,kBAAkB,IAAI,QAAQ;AAAA,EAC7C,IAAI;AAAA,IAAQ,OAAO;AAAA,EAEnB,MAAM,aAAY,MAAM,gBACvB,KACA,cACA,SACA,aACA,SACD;AAAA,EAEA,kBAAkB,IAAI,UAAU,UAAS;AAAA,EACzC,OAAO;AAAA;AAGR,SAAS,eAAe,CACvB,aACA,MACS;AAAA,EACT,OAAO,eAAe,GAAG,KAAK,OAAO,CAAC,EAAE,YAAY,IAAI,KAAK,MAAM,CAAC;AAAA;AAGrE,eAAe,iBAAiB,CAC/B,KACA,aACwE;AAAA,EACxE,IAAI;AAAA,IACH,QAAQ,8CAAwB;AAAA,IAChC,MAAM,cAAc,MAAM,qBAAoB,KAAK,CAAC,GAAG,IAAI,WAAW;AAAA,IACtE,MAAM,eAAe,YAAY,aAC/B,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,SAAS,GAAG,CAAC,EACtC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,MAAM,EAAE,KAAK,EAAE;AAAA,IAEnD,MAAM,aAAa,KAAK,KAAK,YAAY,WAAW;AAAA,IACpD,MAAM,YAAY,MACjB,UAAG,IAAI,cAAc,UAAU,EAAE,OAAO,cAAc,MAAM,KAAK,IAAI,MAAM;AAAA,IAE5E,MAAM,WAAU,UAAU,WAAW,CAAC;AAAA,IAEtC,WAAW,UAAU,UAAS;AAAA,MAC7B,MAAM,UAAU,OAAO,QAAQ,WAAW,GAAG;AAAA,MAC7C,MAAM,QAAO,OAAO,QAAQ,QAAQ,EAAE;AAAA,MACtC,IAAI,SAAQ,YAAY,KAAK;AAAA,QAC5B,aAAa,KAAK,EAAE,SAAS,YAAK,CAAC;AAAA,MACpC;AAAA,IACD;AAAA,IAEA,OAAO;AAAA,IACN,MAAM;AAAA,IACP,OAAO,CAAC;AAAA;AAAA;AAIV,eAAe,qBAAqB,CACnC,KACA,KACA,cACA,SACA,aACA,UACA,QACA,OACA,QACA,QACA,WACA,iBACA,WACC;AAAA,EACD,IAAI,IAAI,aAAa,YAAY;AAAA,IAChC,IAAI;AAAA,MACH,MAAM,SAAS,SAAS,IAAI,UAAU;AAAA,MACtC,IAAI,QAAQ;AAAA,QACX,OAAO,aAAa,QAAQ,QAAQ,EAAE,QAAQ,aAAa,MAAM,CAAC;AAAA,MACnE;AAAA,MAEA,MAAM,aAAY,MAAM,qBACvB,KACA,cACA,SACA,aACA,SACD;AAAA,MAEA,MAAM,WAAW;AAAA,QAChB,GAAG,MAAM,KAAK,WAAU,YAAY,OAAO,CAAC,EAAE,KAAK;AAAA,QACnD,GAAG,MAAM,KAAK,WAAU,aAAa,OAAO,CAAC,EAAE,KAAK;AAAA,MACrD,EAAE,KAAK,CAAC,GAAG,MAAM;AAAA,QAChB,IAAI,CAAC,EAAE;AAAA,UAAS,OAAO;AAAA,QACvB,IAAI,CAAC,EAAE;AAAA,UAAS,OAAO;AAAA,QACvB,OAAO,IAAI,KAAK,EAAE,OAAO,EAAE,QAAQ,IAAI,IAAI,KAAK,EAAE,OAAO,EAAE,QAAQ;AAAA,OACnE;AAAA,MAED,MAAM,OAAgB;AAAA,QACrB,OAAO;AAAA,QACP,MAAM,GAAG;AAAA,QACT,aAAa;AAAA,QACb,OAAO;AAAA,MACR;AAAA,MAEA,MAAM,MAAM,aAAa,MAAM,EAAE,QAAQ,MAAM,CAAC;AAAA,MAChD,SAAS,IAAI,YAAY,GAAG;AAAA,MAE5B,OAAO,aAAa,KAAK,QAAQ,EAAE,QAAQ,aAAa,OAAO,CAAC;AAAA,MAC/D,OAAO,OAAO;AAAA,MACf,QAAQ,MAAM,2CAA2C,KAAK;AAAA,MAC9D,MAAM,IAAI;AAAA;AAAA,GAEX;AAAA;AAGF,SAAS,4BAA4B,CACpC,KACA,cACA,SAaC;AAAA,EACD,WAAW,cAAc,cAAa;AAAA,IACrC,QAAQ,eAAe,KAAK,IAAI,qBAAqB;AAAA,IAErD,IAAI,IAAI,IAAI,uBAAuB,YAAY;AAAA,MAC9C,MAAM,WAAW,OAAO;AAAA,MAExB,IAAI;AAAA,QACH,MAAM,SAAS,QAAQ,SAAS,IAAI,QAAQ;AAAA,QAC5C,IAAI,QAAQ;AAAA,UACX,OAAO,aAAa,QAAQ,QAAQ,QAAQ;AAAA,YAC3C,QAAQ,QAAQ;AAAA,YAChB,aAAa;AAAA,UACd,CAAC;AAAA,QACF;AAAA,QAEA,MAAM,aAAY,MAAM,qBACvB,QAAQ,KACR,CAAC,UAAU,GACX,QAAQ,SACR,QAAQ,aACR,QAAQ,SACT;AAAA,QAEA,MAAM,QAAQ,WAAU,YAAY,IAAI,UAAU,KAAK,CAAC;AAAA,QACxD,IAAI,MAAM,WAAW;AAAA,UAAG,MAAM,IAAI;AAAA,QAElC,MAAM,OAAgB;AAAA,UACrB,OAAO,gBAAgB,QAAQ,WAAW,OAAO,UAAU;AAAA,UAC3D,MAAM,GAAG,QAAQ,WAAW;AAAA,UAC5B,aACC,QAAQ,WAAW,eAAe,UAAU;AAAA,UAC7C;AAAA,QACD;AAAA,QAEA,MAAM,MAAM,aAAa,MAAM;AAAA,UAC9B,QAAQ,QAAQ;AAAA,UAChB,OAAO,QAAQ;AAAA,QAChB,CAAC;AAAA,QACD,QAAQ,SAAS,IAAI,UAAU,GAAG;AAAA,QAElC,OAAO,aAAa,KAAK,QAAQ,QAAQ;AAAA,UACxC,QAAQ,QAAQ;AAAA,UAChB,aAAa;AAAA,QACd,CAAC;AAAA,QACA,OAAO,OAAO;AAAA,QACf,IAAI,iBAAiB;AAAA,UAAe,MAAM;AAAA,QAC1C,QAAQ,MACP,gCAAgC,oBAChC,KACD;AAAA,QACA,MAAM,IAAI;AAAA;AAAA,KAEX;AAAA,EACF;AAAA;AAGD,eAAe,uBAAuB,CACrC,eACA,cACA,SAQwE;AAAA,EACxE,MAAM,kBAAwC,CAAC;AAAA,EAE/C,WAAW,SAAS,eAAe;AAAA,IAClC,MAAM,YAAY,MAAM,QAAQ,QAAQ,OAAO,EAAE,KAAK;AAAA,IACtD,IAAI,cAAc,WAAW,aAAY,SAAS,SAAS;AAAA,MAAG;AAAA,IAC9D,IAAI,QAAQ,WAAW,eAAe,SAAS,MAAM,OAAO;AAAA,MAAG;AAAA,IAE/D,IAAI;AAAA,MACH,MAAM,QAAQ,MAAM,yBACnB,QAAQ,KACR,MAAM,SACN,MAAM,MACN,QAAQ,aACR,QAAQ,SACR,QAAQ,SACT;AAAA,MAEA,IAAI,MAAM,SAAS,GAAG;AAAA,QACrB,gBAAgB,KAAK,KAAK;AAAA,QAC1B,QAAQ,eAAe,KAAK,GAAG,MAAM,kBAAkB;AAAA,MACxD;AAAA,MACC,MAAM;AAAA,EAGT;AAAA,EAEA,OAAO;AAAA;AAGR,eAAe,mBAAmB,CACjC,OACA,SAWoB;AAAA,EACpB,MAAM,YAAY,MAAM,QAAQ,QAAQ,OAAO,EAAE,KAAK;AAAA,EACtD,MAAM,WAAW,OAAO;AAAA,EAExB,MAAM,SAAS,QAAQ,SAAS,IAAI,QAAQ;AAAA,EAC5C,IAAI,QAAQ;AAAA,IACX,OAAO,aAAa,QAAQ,QAAQ,QAAQ;AAAA,MAC3C,QAAQ,QAAQ;AAAA,MAChB,aAAa;AAAA,IACd,CAAC;AAAA,EACF;AAAA,EAEA,IAAI,QAAQ,MAAM,yBACjB,QAAQ,KACR,MAAM,SACN,MAAM,MACN,QAAQ,aACR,QAAQ,SACR,QAAQ,SACT;AAAA,EAEA,IAAI,MAAM,WAAW,KAAK,MAAM,UAAU;AAAA,IACzC,MAAM,aAAY,MAAM,qBACvB,QAAQ,KACR,CAAC,GACD,QAAQ,SACR,QAAQ,aACR,QAAQ,SACT;AAAA,IACA,QAAQ,WAAU,aAAa,IAAI,MAAM,OAAO,KAAK,CAAC;AAAA,EACvD;AAAA,EAEA,IAAI,MAAM,WAAW;AAAA,IAAG,MAAM,IAAI;AAAA,EAElC,MAAM,OAAgB;AAAA,IACrB,OAAO,gBAAgB,QAAQ,WAAW,OAAO,SAAS;AAAA,IAC1D,MAAM,GAAG,QAAQ,UAAU,MAAM;AAAA,IACjC,aACC,QAAQ,WAAW,eAAe,UAAU;AAAA,IAC7C;AAAA,EACD;AAAA,EAEA,MAAM,MAAM,aAAa,MAAM;AAAA,IAC9B,QAAQ,QAAQ;AAAA,IAChB,OAAO,QAAQ;AAAA,EAChB,CAAC;AAAA,EACD,QAAQ,SAAS,IAAI,UAAU,GAAG;AAAA,EAElC,OAAO,aAAa,KAAK,QAAQ,QAAQ;AAAA,IACxC,QAAQ,QAAQ;AAAA,IAChB,aAAa;AAAA,EACd,CAAC;AAAA;AAGF,SAAS,yBAAyB,CACjC,KACA,iBACA,SAWC;AAAA,EACD,WAAW,SAAS,iBAAiB;AAAA,IACpC,IAAI,IAAI,GAAG,MAAM,oBAAoB,YAAY;AAAA,MAChD,IAAI;AAAA,QACH,OAAO,MAAM,oBAAoB,OAAO,OAAO;AAAA,QAC9C,OAAO,OAAO;AAAA,QACf,IAAI,iBAAiB;AAAA,UAAe,MAAM;AAAA,QAC1C,MAAM,YAAY,MAAM,QAAQ,QAAQ,OAAO,EAAE,KAAK;AAAA,QACtD,QAAQ,MAAM,gCAAgC,mBAAmB,KAAK;AAAA,QACtE,MAAM,IAAI;AAAA;AAAA,KAEX;AAAA,EACF;AAAA;AAGD,eAAsB,iBAAiB,CACtC,KACA,SACkB;AAAA,EAClB;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MACG;AAAA,EAEJ,MAAM,QAAQ,MAAM,MAAM;AAAA,EAC1B,MAAM,QAAQ,WAAW,SAAS;AAAA,EAClC,MAAM,SAA0B,WAAW,UAA6B;AAAA,EACxE,MAAM,YAAY,WAAW,SAAS;AAAA,EACtC,MAAM,kBAAkB,WAAW,eAAe;AAAA,EAClD,MAAM,iBAA2B,CAAC,WAAW;AAAA,EAG7C,sBACC,KACA,KACA,cACA,SACA,aACA,UACA,QACA,OACA,QACA,OACA,WACA,iBACA,SACD;AAAA,EAGA,6BAA6B,KAAK,cAAa;AAAA,IAC9C;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAC;AAAA,EAKD,IAAI,aAAa;AAAA,IAEf,WAAmB,8BAA8B;AAAA,IAClD,OAAO;AAAA,EACR;AAAA,EAGA,MAAM,gBAAgB,MAAM,kBAAkB,KAAK,WAAW;AAAA,EAG9D,MAAM,kBAAkB,MAAM,wBAC7B,eACA,cACA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,CACD;AAAA,EAGA,0BAA0B,KAAK,iBAAiB;AAAA,IAC/C;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAC;AAAA,EAEA,WAAmB,8BAA8B;AAAA,EAElD,OAAO;AAAA;;;AE7cR;AA4CA,SAAS,eAAe,CAAC,OAAe,MAAsB;AAAA,EAC7D,MAAM,aAAa,MAAM,YAAY;AAAA,EACrC,IAAI,CAAC,WAAW,SAAS,IAAI;AAAA,IAAG,OAAO;AAAA,EAEvC,IAAI,QAAQ;AAAA,EACZ,IAAI,eAAe;AAAA,IAAM,SAAS;AAAA,EAClC,OAAO;AAAA;AAGR,SAAS,mBAAmB,CAC3B,UACA,MACA,iBACS;AAAA,EACT,IAAI,QAAQ;AAAA,EACZ,WAAW,WAAW,UAAU;AAAA,IAC/B,IAAI,QAAQ,KAAK,YAAY,EAAE,SAAS,IAAI,GAAG;AAAA,MAC9C,SAAS;AAAA,MACT,IAAI,CAAC,gBAAgB,KAAK,CAAC,MAAM,EAAE,SAAS,QAAQ,IAAI,GAAG;AAAA,QAC1D,gBAAgB,KAAK,OAAO;AAAA,MAC7B;AAAA,IACD;AAAA,EACD;AAAA,EACA,OAAO;AAAA;AAGR,SAAS,cAAc,CAAC,MAA+B,MAAsB;AAAA,EAC5E,IAAI,QAAQ;AAAA,EACZ,WAAW,SAAS,OAAO,OAAO,IAAI,GAAG;AAAA,IACxC,IAAI,OAAO,UAAU,YAAY,MAAM,YAAY,EAAE,SAAS,IAAI,GAAG;AAAA,MACpE,SAAS;AAAA,IACV,EAAO,SACN,MAAM,QAAQ,KAAK,KACnB,MAAM,KAAK,CAAC,MAAM,OAAO,MAAM,YAAY,EAAE,YAAY,EAAE,SAAS,IAAI,CAAC,GACxE;AAAA,MACD,SAAS;AAAA,IACV;AAAA,EACD;AAAA,EACA,OAAO;AAAA;AAGR,SAAS,UAAU,CAClB,OACA,OAIC;AAAA,EACD,IAAI,QAAQ;AAAA,EACZ,MAAM,kBAAmC,CAAC;AAAA,EAE1C,WAAW,QAAQ,OAAO;AAAA,IACzB,SAAS,gBAAgB,MAAM,OAAO,IAAI;AAAA,IAC1C,SAAS,oBAAoB,MAAM,UAAU,MAAM,eAAe;AAAA,IAClE,SAAS,eAAe,MAAM,MAAM,IAAI;AAAA,IAGxC,IAAI,MAAM,SAAS,YAAY,EAAE,SAAS,IAAI,GAAG;AAAA,MAChD,SAAS;AAAA,IACV;AAAA,EACD;AAAA,EAEA,OAAO,EAAE,OAAO,gBAAgB;AAAA;AAGjC,SAAS,aAAa,CACrB,SACA,OACA,UAAyB,CAAC,GACuB;AAAA,EACjD,QAAQ,2BAAa,OAAO,GAAG,WAAW,OAAO;AAAA,EAEjD,MAAM,QAAQ,MACZ,YAAY,EACZ,MAAM,KAAK,EACX,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC;AAAA,EAE5B,IAAI,MAAM,WAAW;AAAA,IAAG,OAAO,EAAE,SAAS,CAAC,GAAG,OAAO,EAAE;AAAA,EAEvD,MAAM,SAAS,QACb,OACA,CAAC,UAAU,CAAC,cAAa,UAAU,aAAY,SAAS,MAAM,UAAU,CACzE,EACC,IAAI,CAAC,WAAW,EAAE,UAAU,WAAW,OAAO,KAAK,EAAE,EAAE,EACvD,OAAO,CAAC,SAAS,KAAK,QAAQ,CAAC,EAC/B,KAAK,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,KAAK;AAAA,EAElC,MAAM,QAAQ,OAAO;AAAA,EACrB,MAAM,cAAc,OAAO,KAAK;AAAA,EAChC,MAAM,kBAAkB,OAAO,MAAM,YAAY,aAAa,QAAQ;AAAA,EAEtE,MAAM,UAAU,gBAAgB,IAAI,CAAC,UAAU;AAAA,IAC9C,IAAI,KAAK,MAAM;AAAA,IACf,YAAY,KAAK,MAAM;AAAA,IACvB,MAAM,KAAK,MAAM;AAAA,IACjB,MAAM,KAAK,MAAM;AAAA,IACjB,OAAO,KAAK,MAAM;AAAA,IAClB,SACC,KAAK,MAAM,WACX,OACC,KAAK,MAAM,KAAK,WAAW,KAAK,MAAM,KAAK,eAAe,EAC3D,EAAE,MAAM,GAAG,GAAG;AAAA,IACf,iBAAiB,KAAK;AAAA,EACvB,EAAE;AAAA,EAEF,OAAO,EAAE,SAAS,MAAM;AAAA;AAGlB,SAAS,mBAAmB,CAClC,KACA,KACA,WACA,QACA,cAIS;AAAA,EACT,MAAM,kBAAkB,cAAc,mBAAmB;AAAA,EACzD,MAAM,cAAc,cAAc,eAAe;AAAA,EAEjD,IAAI,cAAkC;AAAA,EACtC,IAAI,eAA8B;AAAA,EAElC,eAAe,eAAe,GAAgC;AAAA,IAC7D,IAAI;AAAA,MACH,MAAM,YAAY,KAAK,KAAK,YAAY,aAAa;AAAA,MACrD,MAAM,OAAO,IAAI,KAAK,SAAS;AAAA,MAE/B,IAAI,CAAE,MAAM,KAAK,OAAO;AAAA,QAAI,OAAO;AAAA,MAEnC,MAAM,QAAQ,MAAM,KAAK,KAAK;AAAA,MAC9B,IACC,EAAE,eAAe,iBACjB,MAAM,MAAM,QAAQ,IAAI,cACvB;AAAA,QACD,MAAM,OAAO,MAAM,KAAK,KAAK;AAAA,QAC7B,cAAc,KAAK,MAAM,IAAI;AAAA,QAC7B,eAAe,MAAM,MAAM,QAAQ;AAAA,MACpC;AAAA,MAEA,OAAO;AAAA,MACN,OAAO,OAAO;AAAA,MACf,QAAQ,MAAM,0CAA0C,KAAK;AAAA,MAC7D,OAAO;AAAA;AAAA;AAAA,EAIT,IAAI,IAAI,qBAAqB,SAAS,YAAY;AAAA,IACjD,MAAM,cAAc,OAAO,MAAM,KAAK,MAAM,SAAS,EAAE,EAAE,KAAK;AAAA,IAE9D,IAAI,CAAC,aAAa;AAAA,MACjB,OAAO,SAAS,KACf,EAAE,OAAO,kCAAkC,GAC3C,EAAE,QAAQ,IAAI,CACf;AAAA,IACD;AAAA,IAEA,MAAM,QAAQ,MAAM,gBAAgB;AAAA,IAEpC,IAAI,CAAC,OAAO;AAAA,MACX,OAAO,SAAS,KACf,EAAE,OAAO,6DAA6D,GACtE,EAAE,QAAQ,IAAI,CACf;AAAA,IACD;AAAA,IAEA,MAAM,eAAc,MAAM,cACvB,OAAO,MAAM,WAAW,EAAE,MAAM,GAAG,EAAE,OAAO,OAAO,IACnD;AAAA,IAEH,MAAM,OAAO,MAAM,OAChB,KAAK,IAAI,GAAG,OAAO,SAAS,OAAO,MAAM,IAAI,GAAG,EAAE,CAAC,IACnD;AAAA,IAEH,MAAM,oBAAoB,MAAM,WAC7B,OAAO,SAAS,OAAO,MAAM,QAAQ,GAAG,EAAE,IAC1C;AAAA,IAEH,MAAM,WAAW,KAAK,IAAI,KAAK,IAAI,GAAG,iBAAiB,GAAG,WAAW;AAAA,IAErE,QAAQ,SAAS,UAAU,cAAc,MAAM,SAAS,aAAa;AAAA,MACpE;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAAA,IAED,OAAO,SAAS,KACf;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY,KAAK,KAAK,QAAQ,QAAQ;AAAA,MACtC;AAAA,IACD,GACA;AAAA,MACC,SAAS;AAAA,QACR,gBAAgB;AAAA,QAChB,iBAAiB,kBAChB,QACA,SACD;AAAA,MACD;AAAA,IACD,CACD;AAAA,GACA;AAAA,EAED,OAAO;AAAA;;;AC3PR;AADA,0BAAS;AAwBT,IAAM,wBAAwB,IAAI,SAGhC,GAAG,IAAI,KAAK,IAAI;AAElB,eAAe,wBAAwB,CACtC,KACA,cACA,SACA,aACA,eAC2D;AAAA,EAE3D,IAAI,aAAa;AAAA,IAChB,OAAO,oBACN,KACA,cACA,SACA,aACA,aACD;AAAA,EACD;AAAA,EAGA,MAAM,WAAW;AAAA,EACjB,MAAM,SAAS,sBAAsB,IAAI,QAAQ;AAAA,EACjD,IAAI;AAAA,IAAQ,OAAO;AAAA,EAEnB,MAAM,aAAY,MAAM,oBACvB,KACA,cACA,SACA,aACA,aACD;AAAA,EAEA,sBAAsB,IAAI,UAAU,UAAS;AAAA,EAC7C,OAAO;AAAA;AAGR,eAAe,uBAAuB,CACrC,SACA,QAKE;AAAA,EACF,QAAQ,KAAK,2BAAa,SAAS,aAAa,kBAAkB;AAAA,EAElE,MAAM,aAAY,MAAM,yBACvB,KACA,cACA,SACA,aACA,aACD;AAAA,EAEA,MAAM,SAAS,MAAM,gBAAgB,YAAW,SAAS;AAAA,IACxD,YAAY,eAAe;AAAA,IAC3B,UAAU,eAAe;AAAA,IACzB,gBAAgB,eAAe;AAAA,IAC/B,eAAe,eAAe;AAAA,EAC/B,CAAC;AAAA,EAED,OAAO;AAAA,IACN,KAAK,OAAO,aACR,OAAO,YAAY,KACnB,OAAO,MAAM,IAAI,OAAO;AAAA,IAC5B,OAAO,OAAO;AAAA,IACd,YAAY,OAAO;AAAA,EACpB;AAAA;AAGM,SAAS,qBAAqB,CACpC,KACA,SACS;AAAA,EACT,QAAQ,QAAQ,iBAAiB;AAAA,EACjC,MAAM,QAAQ,MAAM,MAAM;AAAA,EAG1B,IAAI,IAAI,gBAAgB,YAAY;AAAA,IACnC,IAAI;AAAA,MACH,MAAM,SAAS,aAAa,IAAI,cAAc;AAAA,MAC9C,IAAI,QAAQ;AAAA,QACX,OAAO,YAAY,QAAQ,EAAE,QAAQ,aAAa,MAAM,CAAC;AAAA,MAC1D;AAAA,MAEA,MAAM,SAAS,MAAM,wBAAwB,SAAS,KAAK;AAAA,MAG3D,IAAI,OAAO,YAAY;AAAA,QACtB,WAAW,QAAQ,OAAO,OAAO;AAAA,UAChC,aAAa,IAAI,WAAW,KAAK,YAAY,KAAK,GAAG;AAAA,QACtD;AAAA,MACD;AAAA,MAGA,aAAa,IAAI,gBAAgB,OAAO,GAAG;AAAA,MAE3C,OAAO,YAAY,OAAO,KAAK,EAAE,QAAQ,aAAa,OAAO,CAAC;AAAA,MAC7D,OAAO,OAAO;AAAA,MACf,QAAQ,MAAM,yCAAyC,KAAK;AAAA,MAC5D,MAAM,IAAI;AAAA;AAAA,GAEX;AAAA,EAGD,IAAI,IAAI,cAAc,SAAS,aAAkB;AAAA,IAChD,MAAM,eAAe,OAAO,QAAQ;AAAA,IACpC,MAAM,YAAY,aAAa,MAAM,cAAc;AAAA,IAEnD,IAAI,CAAC,WAAW;AAAA,MACf,MAAM,IAAI;AAAA,IACX;AAAA,IAEA,MAAM,WAAW,WAAW,UAAU;AAAA,IACtC,MAAM,WAAW,WAAW;AAAA,IAE5B,IAAI;AAAA,MACH,MAAM,SAAS,aAAa,IAAI,QAAQ;AAAA,MACxC,IAAI,QAAQ;AAAA,QACX,OAAO,YAAY,QAAQ,EAAE,QAAQ,aAAa,MAAM,CAAC;AAAA,MAC1D;AAAA,MAEA,MAAM,SAAS,MAAM,wBAAwB,SAAS,KAAK;AAAA,MAC3D,MAAM,WAAW,OAAO,MAAM,KAAK,CAAC,MAAM,EAAE,aAAa,QAAQ;AAAA,MAEjE,IAAI,CAAC,UAAU;AAAA,QACd,MAAM,IAAI;AAAA,MACX;AAAA,MAEA,aAAa,IAAI,UAAU,SAAS,GAAG;AAAA,MAEvC,OAAO,YAAY,SAAS,KAAK,EAAE,QAAQ,aAAa,OAAO,CAAC;AAAA,MAC/D,OAAO,OAAO;AAAA,MACf,IAAI,iBAAiB;AAAA,QAAe,MAAM;AAAA,MAC1C,QAAQ,MAAM,mDAAmD,KAAK;AAAA,MACtE,MAAM,IAAI;AAAA;AAAA,GAEX;AAAA,EAED,OAAO;AAAA;;;ACnKR;AAQA;AAbA,iBAAS;AACT,kBAAoB;AAEpB,0BAAS;AAeT,IAAI,OAAO,YAAY,aAAa;AAAA,EACnC,QAAQ,GAAG,sBAAsB,CAAC,QAAQ,aAAa;AAAA,IACtD,QAAQ,MAAM,0CAA0C,MAAM;AAAA,GAE9D;AAAA,EAED,QAAQ,GAAG,qBAAqB,CAAC,UAAU;AAAA,IAC1C,QAAQ,MAAM,iCAAiC,KAAK;AAAA,GAGpD;AACF;AAGA,IAAI;AAEJ,SAAS,gBAAe,GAAY;AAAA,EACnC,IAAI,mBAAkB;AAAA,IAAW,OAAO;AAAA,EAExC,IAAI;AAAA;AAAA,IAGH,iBAAgB;AAAA,IAChB,OAAO;AAAA,IACN,MAAM;AAAA,IACP,iBAAgB;AAAA,IAChB,OAAO;AAAA;AAAA;AAiCT,SAAS,iBAAiB,CAAC,KAAa,SAAkC;AAAA,EACzE;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,qBAAqB;AAAA,IACrB,eAAe;AAAA,IACf,sBAAsB;AAAA,IACtB,gBAAgB;AAAA,IAChB,mBAAmB;AAAA,IACnB,4BAAc;AAAA,IACd,mBAAmB;AAAA,MAChB;AAAA,EAGJ,MAAM,kBAAkB,CACvB,UACA,iBAC4B;AAAA,IAC5B,IAAI,cAAc;AAAA,MACjB,SAAQ,mBAAmB;AAAA,IAC5B;AAAA,IACA,OAAO;AAAA;AAAA,EAKR,MAAM,kBACL,sBAAsB,eAAe,IAAI,eAAe,OAAO;AAAA,EAChE,MAAM,YAAY,IAAI,SAQpB,GAAG;AAAA,EACL,MAAM,UAAU,CACf,UACA,cACA,mBACI;AAAA,IACJ,MAAM,cAAc,cAAc,SAAS;AAAA,IAC3C,MAAM,WAAW,cAAc,GAAG,YAAY,gBAAgB;AAAA,IAC9D,OAAO,GAAG,aAAa,kBAAkB;AAAA;AAAA,EAI1C,IAAI,eAAyB,CAAC;AAAA,EAC9B,IAAI,gBAA0B,CAAC;AAAA,EAC/B,IAAI,gBAA0B,CAAC;AAAA,EAC/B,IAAI;AAAA,IACH,MAAM,eAAe,MAAK,KAAK,YAAY,eAAe;AAAA,IAC1D,QAAQ;AAAA,IACR,MAAM,eAAe,aAAa,cAAc,OAAO;AAAA,IACvD,MAAM,WAAW,KAAK,MAAM,YAAY;AAAA,IACxC,eAAe,SAAS,gBAAgB,CAAC;AAAA,IACzC,gBAAgB,SAAS,iBAAiB,CAAC;AAAA,IAC3C,gBAAgB,SAAS,iBAAiB,CAAC;AAAA,IAC1C,MAAM;AAAA,IAEP,eAAe,CAAC,GAAG;AAAA;AAAA,EAOpB,MAAM,uBACL;AAAA,EAED,MAAM,YAAY;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,QAKK;AAAA,IACL,MAAM,KAAK,YAAY,IAAI;AAAA,IAC3B,MAAM,SAAS,QAAQ,UAAU;AAAA,IACjC,IAAI,WAAW;AAAA,MAAO,MAAM,IAAI;AAAA,IAEhC,MAAM,MAAM,IAAI,IAAI,QAAQ,GAAG;AAAA,IAC/B,MAAM,WAAW,IAAI;AAAA,IAIrB,IAAI,qBAAqB,KAAK,QAAQ,GAAG;AAAA,MACxC,MAAM,IAAI;AAAA,IACX;AAAA,IAGA,MAAM,SAAS,QAAQ,QAAQ,IAAI,QAAQ,KAAK;AAAA,IAEhD,IAAI,UAAU,CAAC,qBAAqB,KAAK,OAAO,MAAM,CAAC,GAAG;AAAA,MACzD,MAAM,IAAI;AAAA,IACX;AAAA,IAEA,MAAM,WAAW;AAAA,IACjB,MAAM,eAAe,IAAI;AAAA,IACzB,MAAM,iBAAiB,QAAQ,QAAQ,IAAI,iBAAiB,KAAK;AAAA,IAGjE,MAAM,WAAkC,CAAC;AAAA,IACzC,QAAQ,QAAQ,QAAQ,CAAC,OAAO,QAAQ;AAAA,MACvC,SAAQ,IAAI,YAAY,KAAK;AAAA,KAC7B;AAAA,IAGD,MAAM,aAAc,MAAkC;AAAA,IAKtD,OAAO,eAAe,YAAY,YAAY;AAAA,MAG7C,IAAI,0BAA0B;AAAA,MAC9B,IAAI,CAAC,eAAe,kBAAkB,GAAG;AAAA,QACxC,IAAI;AAAA,UACH,MAAM,KAAK,QAAQ,UAAU,cAAc,cAAc;AAAA,UACzD,MAAM,SAAS,UAAU,IAAI,EAAE;AAAA,UAC/B,IAAI,UAAU,OAAO,MAAM,KAAK,IAAI,GAAG;AAAA,YACtC,IAAI,iBAAgB,GAAG;AAAA,cACtB,MAAM,cAAc,OAAM,cAAc;AAAA,cACxC,aAAa,cAAc;AAAA,gBAC1B,qBAAqB;AAAA,gBACrB,qBAAqB;AAAA,gBACrB,oBAAoB;AAAA,cACrB,CAAC;AAAA,YACF;AAAA,YACA,IAAI,SAAS,OAAO;AAAA,YACpB,OAAO,OAAO,IAAI,SAAS,OAAO,OAAO;AAAA,YACzC,IAAI,QAAQ,mBAAmB;AAAA,YAC/B,OAAO,IAAI,SAAS,OAAO,IAAI;AAAA,UAChC;AAAA,UAIA,IAAI,oBAAoB,gBAAgB;AAAA,YACvC,MAAM,kBAAkB,QAAQ,UAAU,cAAc,UAAU;AAAA,YAClE,MAAM,qBAAqB,UAAU,IAAI,eAAe;AAAA,YACxD,0BACC,CAAC,sBAAsB,mBAAmB,OAAO,KAAK,IAAI;AAAA,UAC5D;AAAA,UACC,MAAM;AAAA,MACT;AAAA,MAEA,MAAM,YAAY,MAAM,SAAS,kBAAkB,OAAO,SAAS;AAAA,QAClE,KAAK,aAAa,oBAAoB,QAAQ;AAAA,QAC9C,MAAM,OAAM,MAAM,aAAa;AAAA,QAC/B,IAAI;AAAA,UACH,QAAQ,IACP,SAAS,0BAA0B,YAAY,IAAI,IAAI,IAAI,QAAQ,CAAC,KACrE;AAAA,QACD,OAAO;AAAA,OACP;AAAA,MAGD,QAAQ,mBAAmB,mBAAmB,oBAC7C,MAAM,SAAS,kBAAkB,OAAO,SAAS;AAAA,QAChD,MAAM,eAAc,MAAM,eAAe;AAAA,QACzC,MAAM,cAAc,MAAM,eAAe;AAAA,QACzC,MAAM,YAAY,MAAM,aAAa;AAAA,QACrC,KAAK,cAAc;AAAA,UAClB,oBAAoB;AAAA,UACpB,8BAA8B,CAAC,CAAC;AAAA,UAChC,6BAA6B,OAAO,KAAK,YAAW,EAAE;AAAA,QACvD,CAAC;AAAA,QACD,IAAI;AAAA,UACH,QAAQ,IACP,SAAS,6BAA6B,YAAY,IAAI,IAAI,IAAI,QAAQ,CAAC,KACxE;AAAA,QACD,OAAO;AAAA,UACN,mBAAmB;AAAA,UACnB,mBAAmB;AAAA,UACnB,iBAAiB;AAAA,QAClB;AAAA,OACA;AAAA,MAGF,IAAI;AAAA,QACH,MAAM,YAAY,IAAI;AAAA,QACtB,IAAI;AAAA,UACH,MAAM,QAAQ,IAAI,QAAQ,EAAE,MAAM,UAAU,CAAC;AAAA,UAC5C,SAAiB,iBAAiB,KAAK;AAAA,UACvC,MAAM;AAAA,QACR,IAAI,QAAQ,OAAO,IAAI,QAAQ,OAC5B,GAAG,IAAI,QAAQ,SAAS,cACxB;AAAA,QACF,MAAM;AAAA,MAMR,MAAM,qBAAqB,cACxB,wCACA,sBACC,GAAG,6BAA6B,kBAChC;AAAA,MAEJ,IAAI;AAAA,MAEJ,IAAI,kBAAkB;AAAA,QAErB,IAAI;AAAA,UACH,QAAQ,IACP,SAAS,gCAAgC,YAAY,IAAI,IAAI,IAAI,QAAQ,CAAC,KAC3E;AAAA,QAED,QAAQ,iBAAQ,WAAW,MAAM,SAChC,uBACA,OAAO,eAAe;AAAA,UACrB,YAAY,cAAc;AAAA,YACzB,oBAAoB;AAAA,YACpB,qBAAqB;AAAA,UACtB,CAAC;AAAA,UAED,MAAM,SAAS,MAAM,wBAAwB;AAAA,YAC5C,UAAU;AAAA,YACV;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,QAAQ;AAAA,YACR;AAAA,YACA,UAAU,QAAQ;AAAA,YAClB,cAAc,QAAQ;AAAA,YACtB,SAAS,QAAQ;AAAA,YACjB,eAAe,QAAQ;AAAA,YACvB,YAAY;AAAA,YACZ;AAAA,YACA,SAAS,QAAQ;AAAA,YACjB,aAAa,QAAQ;AAAA,UACtB,CAAC;AAAA,UAED,YAAY,aACX,6BACA,OAAO,MACR;AAAA,UAEA,IAAI;AAAA,YACH,QAAQ,IACP,SAAS,iCAAiC,YAAY,IAAI,IAAI,IAAI,QAAQ,CAAC,KAC5E;AAAA,UAED,OAAO;AAAA,SAET;AAAA,QAKA,MAAM,uBACL,gBAAe,kBAAkB,CAAC;AAAA,QAEnC,IAAI;AAAA,UACH,QAAQ,IACP,SAAS,yCAAyC,YAAY,IAAI,IAAI,IAAI,QAAQ,CAAC,oBAAoB,gCAA+B,CAAC,CAAC,kCAAkC,2CAA2C,sBACtN;AAAA,QAGD,IAAI,sBAAsB;AAAA,UAGzB,MAAM,WAAW,MAAM,SAAS,qBAAqB,OAAO,SAAS;AAAA,YACpE,MAAM,SAAuB,CAAC;AAAA,YAC9B,MAAM,SAAS,QAAO,UAAU;AAAA,YAEhC,IAAI;AAAA,cACH,OAAO,MAAM;AAAA,gBACZ,QAAQ,MAAM,UAAU,MAAM,OAAO,KAAK;AAAA,gBAC1C,IAAI;AAAA,kBAAM;AAAA,gBACV,OAAO,KAAK,IAAI,WAAW,KAAK,CAAC;AAAA,cAClC;AAAA,sBACC;AAAA,cACD,OAAO,YAAY;AAAA;AAAA,YAIpB,MAAM,cAAc,OAAO,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,QAAQ,CAAC;AAAA,YAC/D,MAAM,SAAS,IAAI,WAAW,WAAW;AAAA,YACzC,IAAI,SAAS;AAAA,YACb,WAAW,SAAS,QAAQ;AAAA,cAC3B,OAAO,IAAI,OAAO,MAAM;AAAA,cACxB,UAAU,MAAM;AAAA,YACjB;AAAA,YAEA,KAAK,cAAc;AAAA,cAClB,yBAAyB,OAAO;AAAA,cAChC,wBAAwB;AAAA,YACzB,CAAC;AAAA,YAED,OAAO;AAAA,WACP;AAAA,UAGD,QAAQ,MAAM,iBAAiB,MAAM,SACpC,gBACA,OAAO,SAAS;AAAA,YACf,MAAM,SAAS,eACd,UACA,4BACA,cACD;AAAA,YACA,KAAK,cAAc;AAAA,cAClB,yBAAyB,SAAS;AAAA,cAClC,2BAA4B,OAAO,KAAoB;AAAA,cACvD,oBACC,OAAO,aAAa,uBAAuB;AAAA,YAC7C,CAAC;AAAA,YACD,OAAO;AAAA,WAET;AAAA,UAGA,IAAI,CAAC,eAAe,kBAAkB,KAAK,WAAW,KAAK;AAAA,YAC1D,IAAI;AAAA,cACH,MAAM,KAAK,QAAQ,UAAU,cAAc,cAAc;AAAA,cACzD,MAAM,eAAuC;AAAA,gBAC5C,gBAAgB;AAAA,mBACb;AAAA,cACJ;AAAA,cACA,gBAAgB,cAAc,kBAAkB;AAAA,cAChD,IAAI,IAAI,QAAQ,MAAM;AAAA,gBACrB,aAAa,OAAO,IAAI,QAAQ;AAAA,cACjC;AAAA,cACA,UAAU,IAAI,IAAI;AAAA,gBACjB;AAAA,gBACA,SAAS;AAAA,gBACT;AAAA,gBACA,KAAK,KAAK,IAAI,IAAI;AAAA,cACnB,CAAC;AAAA,cACA,MAAM;AAAA,UACT;AAAA,UAEA,MAAM,aAAqC;AAAA,YAC1C,gBAAgB;AAAA,YAChB,iBAAiB;AAAA,eACd;AAAA,UACJ;AAAA,UACA,gBAAgB,YAAY,kBAAkB;AAAA,UAC9C,IAAI,IAAI,QAAQ,MAAM;AAAA,YACrB,WAAW,OAAO,IAAI,QAAQ;AAAA,UAC/B;AAAA,UAEA,IAAI,SAAS;AAAA,UAEb,WAAW,IAAI,SAAS,MAAkB;AAAA,YACzC;AAAA,YACA,SAAS;AAAA,UACV,CAAC;AAAA,QACF,EAAO;AAAA,UAEN,MAAM,cACL,CAAC,eAAe,kBAAkB,KAAK,WAAW;AAAA,UAEnD,IAAI;AAAA,YACH,QAAQ,IACP,SAAS,+CAA+C,aACzD;AAAA,UAED,IAAI,aAAa;AAAA,YAEhB,WAAW,MAAM,SAAS,uBAAuB,OAAO,SAAS;AAAA,cAChE,IAAI;AAAA,gBACH,QAAQ,IACP,SAAS,wCAAwC,YAAY,IAAI,IAAI,IAAI,QAAQ,CAAC,KACnF;AAAA,cAED,MAAM,SAAuB,CAAC;AAAA,cAC9B,MAAM,gBAAgB,QAAO,YAC5B,IAAI,gBAAgB;AAAA,gBACnB,SAAS,CAAC,OAAO,YAAY;AAAA,kBAC5B,OAAO,KAAK,IAAI,WAAW,KAAK,CAAC;AAAA,kBACjC,WAAW,QAAQ,KAAK;AAAA;AAAA,gBAGzB,KAAK,GAAG;AAAA,kBAEP,IAAI;AAAA,oBACH,MAAM,cAAc,OAAO,OAC1B,CAAC,KAAK,MAAM,MAAM,EAAE,QACpB,CACD;AAAA,oBACA,MAAM,WAAW,IAAI,WAAW,WAAW;AAAA,oBAC3C,IAAI,SAAS;AAAA,oBACb,WAAW,SAAS,QAAQ;AAAA,sBAC3B,SAAS,IAAI,OAAO,MAAM;AAAA,sBAC1B,UAAU,MAAM;AAAA,oBACjB;AAAA,oBAGA,MAAM,KAAK,QAAQ,UAAU,cAAc,UAAU;AAAA,oBACrD,MAAM,eAAuC;AAAA,sBAC5C,gBAAgB;AAAA,oBACjB;AAAA,oBACA,gBAAgB,cAAc,kBAAkB;AAAA,oBAChD,IAAI,IAAI,QAAQ,MAAM;AAAA,sBACrB,aAAa,OAAO,IAAI,QAAQ;AAAA,oBACjC;AAAA,oBACA,UAAU,IAAI,IAAI;AAAA,sBACjB;AAAA,sBACA,SAAS;AAAA,sBACT,MAAM;AAAA,sBACN,KAAK,KAAK,IAAI,IAAI;AAAA,oBACnB,CAAC;AAAA,oBACA,OAAO,GAAG;AAAA,oBACX,QAAQ,MAAM,qCAAqC,CAAC;AAAA;AAAA;AAAA,cAGvD,CAAC,CACF;AAAA,cAEA,IAAI,SAAS;AAAA,cAEb,MAAM,kBAAkB,QAAQ,YAAY,IAAI,IAAI;AAAA,cACpD,MAAM,aAAqC;AAAA,gBAC1C,gBAAgB;AAAA,gBAChB,iBAAiB;AAAA,cAClB;AAAA,cACA,gBAAgB,YAAY,kBAAkB;AAAA,cAC9C,MAAM,MAAM,IAAI,SAAS,eAAe;AAAA,gBACvC;AAAA,gBACA,SAAS;AAAA,cACV,CAAC;AAAA,cACD,IAAI;AAAA,gBACH,QAAQ,IACP,SAAS,iDAAiD,YAAY,IAAI,IAAI,IAAI,QAAQ,CAAC,mBAAmB,YAAY,IAAI,IAAI,iBAAiB,QAAQ,CAAC,MAC7J;AAAA,cAED,KAAK,aAAa,kBAAkB,IAAI;AAAA,cACxC,OAAO;AAAA,aACP;AAAA,UACF,EAAO;AAAA,YAEN,IAAI;AAAA,cACH,QAAQ,IACP,SAAS,gDAAgD,YAAY,IAAI,IAAI,IAAI,QAAQ,CAAC,KAC3F;AAAA,YAED,IAAI,SAAS;AAAA,YAEb,MAAM,gBAAwC;AAAA,cAC7C,gBAAgB;AAAA,cAChB,iBAAiB;AAAA,YAClB;AAAA,YACA,gBAAgB,eAAe,kBAAkB;AAAA,YAEjD,WAAW,IAAI,SAAS,SAAQ;AAAA,cAC/B;AAAA,cACA,SAAS;AAAA,YACV,CAAC;AAAA,YAED,IAAI;AAAA,cACH,QAAQ,IACP,SAAS,iDAAiD,YAAY,IAAI,IAAI,IAAI,QAAQ,CAAC,KAC5F;AAAA;AAAA;AAAA,MAGJ,EAAO;AAAA,QAEN,IAAI;AAAA,QACJ,IAAI;AAAA,QAEJ,IAAI;AAAA,UACH,MAAM,SAAS,MAAM,SACpB,mBACA,OAAO,eAAe;AAAA,YACrB,YAAY,cAAc;AAAA,cACzB,oBAAoB;AAAA,cACpB,qBAAqB;AAAA,YACtB,CAAC;AAAA,YAED,MAAM,eAAe,MAAM,kBAAkB;AAAA,cAC5C,UAAU;AAAA,cACV;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA,QAAQ;AAAA,cACR;AAAA,cACA,UAAU,QAAQ;AAAA,cAClB,cAAc,QAAQ;AAAA,cACtB,SAAS,QAAQ;AAAA,cACjB,eAAe,QAAQ;AAAA,cACvB,YAAY;AAAA,cACZ;AAAA,cACA,aAAa,QAAQ;AAAA,YACtB,CAAC;AAAA,YAED,YAAY,aACX,6BACA,aAAa,MACd;AAAA,YACA,OAAO;AAAA,WAET;AAAA,UAEA,QAAO,OAAO;AAAA,UACd,SAAS,OAAO;AAAA,UACf,OAAO,UAAU;AAAA,UAClB,QAAQ,MACP,yDACA,QACD;AAAA,UACA,IAAI,SAAS;AAAA,UACb,MAAM,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAenB,cAAc,QAAQ,oBAAoB,QAAQ,SAAS,QAAQ,OAAO,QAAQ,YAAY;AAAA,+BACnE;AAAA;AAAA;AAAA,UAG1B,OAAO,IAAI,SAAS,WAAW;AAAA,YAC9B,QAAQ;AAAA,YACR,SAAS,EAAE,gBAAgB,2BAA2B;AAAA,UACvD,CAAC;AAAA;AAAA,QAIF,QAAQ,MAAM,iBAAiB,eAC5B,MAAM,SAAS,gBAAgB,OAAO,SAAS;AAAA,UAC/C,MAAM,SAAS,eACd,OACA,4BACA,cACD;AAAA,UACA,KAAK,cAAc;AAAA,YAClB,yBAAyB,MAAK;AAAA,YAC9B,2BACC,OAAO,OAAO,SAAS,WACpB,OAAO,KAAK,SACX,OAAO,KAAoB;AAAA,YAChC,oBACC,OAAO,aAAa,uBAAuB;AAAA,UAC7C,CAAC;AAAA,UACD,OAAO;AAAA,SACP,IACA,EAAE,MAAM,OAAM,cAAc,CAAC,EAAE;AAAA,QAElC,MAAM,aAAqC;AAAA,UAC1C,gBAAgB;AAAA,UAChB,iBAAiB;AAAA,aACd;AAAA,QACJ;AAAA,QACA,gBAAgB,YAAY,kBAAkB;AAAA,QAC9C,IAAI,IAAI,QAAQ,MAAM;AAAA,UACrB,WAAW,OAAO,IAAI,QAAQ;AAAA,QAC/B;AAAA,QAEA,IAAI,SAAS;AAAA,QAEb,WAAW,IAAI,SAAS,MAAkB;AAAA,UACzC;AAAA,UACA,SAAS;AAAA,QACV,CAAC;AAAA,QAGD,IACC,CAAC,eACD,kBAAkB,KAClB,UAAU,OACV,SAAS,KACR;AAAA,UACD,IAAI;AAAA,YACH,MAAM,KAAK,QAAQ,UAAU,cAAc,cAAc;AAAA,YACzD,UAAU,IAAI,IAAI;AAAA,cACjB;AAAA,cACA,SAAS;AAAA,cACT;AAAA,cACA,KAAK,KAAK,IAAI,IAAI;AAAA,YACnB,CAAC;AAAA,YACA,MAAM;AAAA,QACT;AAAA;AAAA,MAGD,MAAM,gBAAgB,QAAQ,YAAY,IAAI,IAAI;AAAA,MAClD,IAAI;AAAA,QACH,QAAQ,IACP,SAAS,yCAAyC,YAAY,IAAI,IAAI,IAAI,QAAQ,CAAC,KACpF;AAAA,MACD,MAAM,cAAc;AAAA,MACpB,IAAI;AAAA,QACH,QAAQ,IACP,SAAS,kCAAkC,YAAY,IAAI,IAAI,IAAI,QAAQ,CAAC,0BAA0B,YAAY,IAAI,IAAI,eAAe,QAAQ,CAAC,MACnJ;AAAA,MACD,OAAO;AAAA,KACP;AAAA;AAAA,EAIF,MAAM,YAAY,CAAC,GAAG,cAAc,GAAG,eAAe,GAAG,aAAa;AAAA,EACtE,WAAW,SAAQ,WAAW;AAAA,IAC7B,IAAI,IAAI,OAAM,SAAS;AAAA,EACxB;AAAA,EAIA,IAAI,IAAI,KAAK,SAAS;AAAA,EAEtB,OAAO;AAAA;;;ACxsBR;AAHA,kBAAS;AAET,0BAAS;AAWT,IAAI;AAEJ,SAAS,gBAAe,GAAY;AAAA,EACnC,IAAI,mBAAkB;AAAA,IAAW,OAAO;AAAA,EAExC,IAAI;AAAA;AAAA,IAEH,iBAAgB;AAAA,IAChB,OAAO;AAAA,IACN,MAAM;AAAA,IACP,iBAAgB;AAAA,IAChB,OAAO;AAAA;AAAA;AAeF,SAAS,oBAAoB,CACnC,KACA,SACS;AAAA,EACT;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA,gBAAgB,CAAC;AAAA,IACjB;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd,4BAAc;AAAA,MACX;AAAA,EAEJ,SAAS,iBAAiB,CACzB,YACA,SACA,aACA,UACA,QACC;AAAA,IACD,IAAI,CAAC,iBAAgB;AAAA,MAAG;AAAA,IAExB,MAAM,cAAc,OAAM,cAAc;AAAA,IACxC,MAAM,QAAmD;AAAA,MACxD,uBAAuB;AAAA,IACxB;AAAA,IAEA,IAAI,eAAe,KAAK;AAAA,MACvB,MAAM,uBAAuB;AAAA,MAC7B,IAAI;AAAA,QAAU,MAAM,sBAAsB;AAAA,IAC3C,EAAO,SAAI,QAAQ;AAAA,MAClB,MAAM,0BAA0B;AAAA,IACjC;AAAA,IAEA,aAAa,cAAc,KAAK;AAAA;AAAA,EAKjC,IAAI,IAAI,aAAa,eAAe,eAAe,GAAG,QAAQ,qBAAW;AAAA,IACxE,MAAM,cAAc,OAAO;AAAA,IAI3B,MAAM,WAAW,KAAK,iBAAiB,WAAW;AAAA,IAElD,IAAI;AAAA,MACH,MAAM,iBAAiB,SAAQ,sBAAsB;AAAA,MACrD,MAAM,WAAW,YAAY,cAAc;AAAA,MAC3C,MAAM,WAAW,GAAG,YAAY;AAAA,MAKhC,MAAM,SAAS,UAAU,IAAI,QAAQ;AAAA,MACrC,IAAI,QAAQ;AAAA,QACX,kBAAkB,KAAK,MAAM,aAAa,QAAQ;AAAA,QAClD,MAAM,qBAAqB,qBAC1B,UACA,OAAO,aACP,QACA,WACA,WACD;AAAA,QACA,MAAM,kBAA0C;AAAA,UAC/C,gBAAgB,OAAO;AAAA,UACvB,iBAAiB;AAAA,UACjB,iBAAiB;AAAA,aACd;AAAA,QACJ;AAAA,QACA,IAAI,OAAO,iBAAiB;AAAA,UAC3B,gBAAgB,sBAAsB,OAAO;AAAA,QAC9C;AAAA,QAEA,OAAO,IAAI,SAAS,OAAO,QAAQ,EAAE,SAAS,gBAAgB,CAAC;AAAA,MAChE;AAAA,MAGA,MAAM,SAAS,MAAM,IAAI,KAAK,QAAQ,EAAE,OAAO;AAAA,MAC/C,IAAI,CAAC,QAAQ;AAAA,QACZ,kBACC,KACA,OACA,aACA,WACA,iBACD;AAAA,QACA,MAAM,IAAI;AAAA,MACX;AAAA,MAEA,IAAI,aAAa,QAAQ,GAAG;AAAA,QAC3B,kBAAkB,KAAK,OAAO,aAAa,WAAW,cAAc;AAAA,QACpE,MAAM,IAAI;AAAA,MACX;AAAA,MAEA,MAAM,aAAa,MAAM,IAAI,KAAK,QAAQ,EAAE,YAAY;AAAA,MACxD,MAAM,WAAU,IAAI,WAAW,UAAU;AAAA,MACzC,MAAM,cAAc,YAAY,QAAQ;AAAA,MAExC,QAAQ,MAAM,iBAAiB,eAC5B,eAAe,UAAS,aAAa,cAAc,IACnD,EAAE,MAAM,UAAS,cAAc,CAAC,EAAE;AAAA,MAErC,MAAM,eAAe,qBACpB,UACA,aACA,QACA,WACA,WACD;AAAA,MAIA,IAAI;AAAA,MACJ,IAAI,OAAO,SAAS,UAAU;AAAA,QAC7B,aAAa,IAAI,YAAY,EAAE,OAAO,IAAI,EAAE;AAAA,MAC7C,EAAO,SAAI,gBAAgB,YAAY;AAAA,QAGtC,aAAa,KAAK,OAAO,MACxB,KAAK,YACL,KAAK,aAAa,KAAK,UACxB;AAAA,MACD,EAAO;AAAA,QACN,aAAa;AAAA;AAAA,MAId,UAAU,IAAI,UAAU;AAAA,QACvB,QAAQ;AAAA,QACR;AAAA,QACA,iBAAiB,aAAa;AAAA,MAC/B,CAAC;AAAA,MAGD,IAAI,iBAAgB,GAAG;AAAA,QACtB,MAAM,cAAc,OAAM,cAAc;AAAA,QACxC,aAAa,cAAc;AAAA,UAC1B,uBAAuB;AAAA,UACvB,wBAAwB;AAAA,UACxB,qBAAqB;AAAA,UACrB,sBAAsB,CAAC,CAAC,aAAa;AAAA,QACtC,CAAC;AAAA,MACF;AAAA,MAEA,OAAO,IAAI,SAAS,MAAkB;AAAA,QACrC,SAAS;AAAA,UACR,gBAAgB;AAAA,UAChB,iBAAiB;AAAA,UACjB,iBAAiB;AAAA,aACd;AAAA,aACA;AAAA,QACJ;AAAA,MACD,CAAC;AAAA,MACA,OAAO,OAAO;AAAA,MACf,IAAI,iBAAiB,iBAAe;AAAA,QAEnC,MAAM;AAAA,MACP;AAAA,MACA,QAAQ,MAAM,2BAA2B,aAAa,KAAK;AAAA,MAC3D,IAAI,iBAAgB,GAAG;AAAA,QACtB,MAAM,cAAc,OAAM,cAAc;AAAA,QACxC,aAAa,aAAa,uBAAuB,WAAW;AAAA,MAC7D;AAAA,MACA,MAAM,IAAI;AAAA;AAAA,GAEX;AAAA,EAED,OAAO;AAAA;;;ApBvLR,IAAM,UACL,MAEA,OAAO,QAAgB;AAAA,EACtB,MAAM,MACL,OAAO,YAAY,eAAe,OAAO,QAAQ,QAAQ,aACtD,QAAQ,IAAI,IACZ;AAAA,EAIJ,IAAI,UAAU,GAAG,cAAc;AAAA,IAC9B,IAAI,QAAQ,WAAW,QAAQ;AAAA,MAC9B,OAAO,IAAI,SAAS,MAAM;AAAA,QACzB,QAAQ;AAAA,QACR,SAAS,EAAE,gBAAgB,2BAA2B;AAAA,MACvD,CAAC;AAAA,IACF;AAAA,GACA;AAAA,EAGD,MAAM,eAAe,MAAM,WAAW,GAAG;AAAA,EAGzC,IAAI;AAAA,EAGJ,MAAM,YAAa,WACjB;AAAA,EAEF,IAAI,WAAW;AAAA,IAEd,gBAAgB,eAAc,SAAS;AAAA,EACxC,EAAO,SAAI,aAAa,KAAK,KAAK;AAAA,IAEjC,MAAM,UAAU,aAAa,IAAI,IAAI,WAAW,GAAG,IAChD,aAAa,IAAI,MACjB,GAAG,OAAO,aAAa,IAAI,IAAI,QAAQ,SAAS,EAAE;AAAA,IACrD,MAAM,YAAY,MACjB,UAAG,eAAc,OAAO,EAAE,UAAU,KAAK,IAAI;AAAA,IAE9C,gBAAgB,eAAc,UAAU,OAAO;AAAA,EAChD;AAAA,EAEA,IAAI,CAAC,eAAe;AAAA,IACnB,QAAQ,KACP,yEACD;AAAA,EACD;AAAA,EAGA,MAAM,UAAU,aAAa,KAAK,QAAQ;AAAA,EAC1C,MAAM,UAAU,aAAa,KAAK,QAAQ;AAAA,EAC1C,MAAM,WAAW,aAAa,KAAK,SAAS;AAAA,EAM5C,MAAM,kBAAkB,YAAW,GAAG,qBAAqB,IACxD,GAAG,wBACH,GAAG;AAAA,EAEN,MAAM,eAAe,aAAa,UAAU,CAAC;AAAA,EAC7C,MAAM,iBAAiB,aAAa,kBAAkB;AAAA,IACrD;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,MAAM,gBAAgB,aAAa;AAAA,EAGnC,MAAM,UAAS,aAAa;AAAA,EAC5B,MAAM,qBAAqB,SAAQ,SAAS;AAAA,EAC5C,MAAM,eAAe,SAAQ,UAAU;AAAA,EAGvC,MAAM,UAAU,aAAa;AAAA,EAC7B,MAAM,sBAAsB,SAAS,SAAS;AAAA,EAC9C,MAAM,gBAAgB,SAAS,UAAU;AAAA,EACzC,MAAM,mBAAmB,SAAS,aAAa;AAAA,EAG/C,MAAM,eAAe,aAAa,UAAU;AAAA,EAC5C,MAAM,kBAAkB,aAAa,aAAa;AAAA,EAGlD,MAAM,eAAc,aAAa,KAAK,eAAe;AAAA,EAGrD,MAAM,QAAQ,aAAa,KAAK,SAAS;AAAA,EAGzC,MAAM,cAAc,aAAa,SAAS,CAAC;AAAA,EAC3C,MAAM,cAAc,YAAY,UAAU;AAAA,EAC1C,MAAM,sBAAsB,YAAY,kBAAkB,CAAC;AAAA,EAC3D,MAAM,gBAAgB,YAAY,YAAY;AAAA,EAC9C,MAAM,iBAAiB,YAAY,aAAa;AAAA,EAGhD,MAAM,eAAe,aAAa,KAAK,gBAAgB;AAAA,EAGvD,MAAM,mBAAmB,aAAa,WAAW,WAAW;AAAA,EAG5D,MAAM,UAAU,aAAa,KAAK;AAAA,EAClC,MAAM,gBAAgB,aAAa,KAAK;AAAA,EACxC,MAAM,cAAc,aAAa,KAAK;AAAA,EAGtC,MAAM,gBAAgB,aAAa;AAAA,EACnC,MAAM,iBAAiB,eAAe,YAAY;AAAA,EAClD,MAAM,iBAAiB,eAAe;AAAA,EAGtC,MAAM,YAAY,aAAa;AAAA,EAC/B,MAAM,aAAa,WAAW,YAAY;AAAA,EAC1C,MAAM,aAAa,WAAW;AAAA,EAG9B,MAAM,WAAW,aAAa;AAAA,EAC9B,MAAM,YAAY,UAAU,YAAY;AAAA,EAGxC,MAAM,aAAa,aAAa;AAAA,EAChC,MAAM,cAAc,YAAY,YAAY;AAAA,EAG5C,MAAM,eAAe,aAAa;AAAA,EAClC,MAAM,gBAAgB,cAAc,YAAY;AAAA,EAGhD,MAAM,cAAc,eAAe;AAAA,EAEnC,MAAM,WAAW,UAAU,UAAU,gBAAgB;AAAA,EACrD,MAAM,YAAY,IAAI,SAAiC,KAAK,WAAW;AAAA,EACvE,MAAM,YAAY,IAAI,SAA0B,KAAK,WAAW;AAAA,EAChE,MAAM,kBAAkB,IAAI,SAA2B,IAAI,WAAW;AAAA,EACtE,MAAM,eAAe,IAAI,SAAyB,IAAI,WAAW;AAAA,EACjE,MAAM,WAAW,IAAI,SAAyB,IAAI,WAAW;AAAA,EAI7D,MAAM,UAAU,IAAI,SAAyB,MAAM,SAAS,OAAQ,IAAI;AAAA,EACxE,MAAM,cAAc,IAAI,SAAyB,IAAI,WAAW;AAAA,EAGhE,MAAM,kBAAkB;AAAA,IACvB,SAAS,IAAI;AAAA,IACb,eAAe;AAAA,EAChB;AAAA,EACA,MAAM,gBAAgB,IAAI;AAAA,EAC1B,MAAM,gBAAgB,cAAc,OAAO;AAAA;AAAA,CAAkB;AAAA,EAC7D,MAAM,oBAAoB,cAAc,OAAO;AAAA;AAAA,CAAsB;AAAA,EAErE,MAAM,eAAe,MAAM;AAAA,IAC1B,IAAI,YAAY;AAAA,IAChB,WAAW,cAAc,gBAAgB,SAAS;AAAA,MACjD,IAAI;AAAA,QACH,WAAW,QAAQ,aAAa;AAAA,QAChC,YAAY;AAAA,QACX,MAAM;AAAA,QACP,gBAAgB,QAAQ,OAAO,UAAU;AAAA;AAAA,IAE3C;AAAA,IACA,IAAI,CAAC,WAAW;AAAA,MAEf,gBAAgB,gBAAgB;AAAA,IACjC;AAAA;AAAA,EAGD,MAAM,mBAAmB,MAAM;AAAA,IAC9B,WAAW,cAAc,gBAAgB,SAAS;AAAA,MACjD,IAAI;AAAA,QACH,WAAW,QAAQ,iBAAiB;AAAA,QACnC,MAAM;AAAA,QACP,gBAAgB,QAAQ,OAAO,UAAU;AAAA;AAAA,IAE3C;AAAA;AAAA,EAMD,MAAM,YAAY,YAAW,GAAG,qBAAqB,IAClD,GAAG,iBACH,GAAG;AAAA,EAEN,MAAM,eAAe,CAAC,eAAe,SAClC,MAAM,QACN,CAAC,SACD,eAAe,KAAK,CAAC,YACpB,OAAO,YAAY,WAChB,KAAK,SAAS,OAAO,IACrB,QAAQ,KAAK,IAAI,CACrB;AAAA,EAEH,MAAM,cACJ,MAAM,QAAQ,QAAQ,QAAQ,KAC9B,QAAQ,SAAS,SAAS,SAAS,KACnC,MAAM,QAAQ,QAAQ,IAAI,KAAK,QAAQ,KAAK,SAAS,SAAS;AAAA,EAIhE,MAAM,mBAAmB,sBACtB,GAAG,6BAA6B,kBAChC;AAAA,EAEH,IAAI,aAAa;AAAA,IAChB,QAAQ,IAAI,+BAA+B;AAAA,IAK3C,yBAAyB,KAAK,eAAe;AAAA,IAG7C,IAAI,KAAK,yBAAyB,MAAM;AAAA,MACvC,QAAQ,IACP,gEACD;AAAA,MACA,iBAAiB;AAAA,MACjB,OAAO,IAAI,SACV,KAAK,UAAU,EAAE,IAAI,MAAM,SAAS,gBAAgB,QAAQ,KAAK,CAAC,GAClE;AAAA,QACC,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,MAC/C,CACD;AAAA,KACA;AAAA,IAED,IAAI,KAAK,qBAAqB,MAAM;AAAA,MACnC,QAAQ,IACP,qDAAqD,gBAAgB,QAAQ,oBAC9E;AAAA,MACA,aAAa;AAAA,MACb,OAAO,IAAI,SACV,KAAK,UAAU,EAAE,IAAI,MAAM,SAAS,gBAAgB,QAAQ,KAAK,CAAC,GAClE;AAAA,QACC,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,MAC/C,CACD;AAAA,KACA;AAAA,EACF;AAAA,EAIA,MAAM,gBAAgB,YAA6B;AAAA,IAClD,MAAM,aAAa,GAAG;AAAA,IACtB,MAAM,cAAc,cAAc,MAAM;AAAA,IACxC,MAAM,UAAU,cAAc,MAAM;AAAA,IAEpC,SAAS,UAAU,EAAG,UAAU,aAAa,WAAW;AAAA,MACvD,IAAI;AAAA,QACH,MAAM,OAAO,IAAI,IAAI,KAAK,YAAY;AAAA,QACtC,MAAM,QAAQ,MAAM,MAAM,UAAU,KAAK,KAAK,UAAU,CAAC;AAAA,QACzD,MAAM,YACL,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,SAAS,QAAQ,CAAC,KAAK,MAAM;AAAA,QACnD,IAAI,WAAW;AAAA,UACd,OAAO,YAAY;AAAA,QACpB;AAAA,QACC,MAAM;AAAA,MAIR,IAAI,YAAY,GAAG;AAAA,QAClB,QAAQ,KAAK,kDAAkD;AAAA,MAChE;AAAA,MACA,MAAM,IAAI,MAAM,OAAO;AAAA,IACxB;AAAA,IAEA,MAAM,IAAI,MAAM,4CAA4C;AAAA;AAAA,EAI7D,MAAM,mBAAmB,MAAM,cAAc;AAAA,EAC7C,QAAQ,IAAI,qCAAqC,kBAAkB;AAAA,EAGnE,MAAM,eAAe,cAClB,gBACA,YAAY;AAAA,EAIf,QAAQ,mCAAiB,uCAAmB,kCAAkB;AAAA,EAG9D,MAAM,qBAAqB,MAAM,iBAAgB,KAAK,WAAW;AAAA,EACjE,MAAM,qBAAqB,MAAM,mBAChC,WACA,OACA,WACD;AAAA,EACA,MAAM,mBAAmB,MAAM,eAAc,SAAS;AAAA,EAItD,MAAM,mBAAmB,eAAe;AAAA,EACxC,IAAI,mBAGO,qBACR,EAAE,MAAM,oBAAoB,KAAK,KAAK,IAAI,IAAI,iBAAiB,IAC/D;AAAA,EAGH,MAAM,iBAAiB,cACpB,MAAM,iBAAgB,KAAK,WAAW,IACtC,YAAY;AAAA,IAEZ,IAAI,CAAC,oBAAoB;AAAA,MACxB,OAAO,iBAAgB,KAAK,WAAW;AAAA,IACxC;AAAA,IACA,IAAI,oBAAoB,iBAAiB,MAAM,KAAK,IAAI,GAAG;AAAA,MAC1D,OAAO,iBAAiB;AAAA,IACzB;AAAA,IAEA,MAAM,QAAQ,MAAM,iBAAgB,KAAK,WAAW;AAAA,IACpD,mBAAmB;AAAA,MAClB,MAAM;AAAA,MACN,KAAK,KAAK,IAAI,IAAI;AAAA,IACnB;AAAA,IACA,OAAO;AAAA;AAAA,EAGV,MAAM,iBAAiB,cACpB,MAAM,mBAAkB,WAAW,OAAO,WAAW,IACrD,YAAY;AAAA,EAEf,MAAM,eAAe,cAClB,MAAM,eAAc,SAAS,IAC7B,YAAY;AAAA,EAGf,IAAI,aAAa,aAAa,aAAa,UAAU,SAAS,GAAG;AAAA,IAChE,uBAAuB,KAAK,aAAa,SAAS;AAAA,EACnD;AAAA,EAGA,sBACC,KACA,KACA,iBACA,kBACA,eACA,WACD;AAAA,EAGA,oBAAoB,KAAK,KAAK,kBAAkB,eAAe;AAAA,IAC9D,iBAAiB,aAAa,QAAQ;AAAA,IACtC,aAAa,aAAa,QAAQ;AAAA,EACnC,CAAC;AAAA,EAGD,uBAAuB,KAAK;AAAA,IAC3B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,EACT,CAAC;AAAA,EAOD,wBAAwB,KAAK,KAAK,WAAW;AAAA,IAC5C;AAAA,IACA,WAAW;AAAA,IACX;AAAA,EACD,CAAC;AAAA,EAGD,MAAM,gBAAgB,GAAG;AAAA,EACzB,eAAe,aAAa;AAAA,EAC5B,oBAAoB,KAAK;AAAA,IACxB;AAAA,IACA,QAAQ;AAAA,IACR,gBAAgB;AAAA,IAChB,UAAU;AAAA,IACV,WAAW;AAAA,IACX;AAAA,EACD,CAAC;AAAA,EAID,qBAAqB,KAAK;AAAA,IACzB;AAAA,IACA,QAAQ;AAAA,IACR,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAC;AAAA,EAGD,IAAI,eAAe;AAAA,IAClB,IAAI;AAAA,MACH,MAAM,eAAc,MAAM,oBAAoB,SAAS;AAAA,MACvD,IAAI,aAAY,SAAS,GAAG;AAAA,QAC3B,QAAQ,IACP,qCAAqC,aAAY,KAAK,IAAI,GAC3D;AAAA,MACD;AAAA,MAGA,IAAI,iBAAiB,cAAc;AAAA,QAClC,IAAI;AAAA,UACH,oBAAoB,KAAK;AAAA,YACxB;AAAA,YACA,QAAQ,aAAa,UAAU;AAAA,YAC/B;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,WAAW,aAAa;AAAA,UACzB,CAAC;AAAA,UACD,QAAQ,IAAI,yCAAyC;AAAA,UACpD,OAAO,OAAO;AAAA,UACf,QAAQ,MAAM,8CAA8C,KAAK;AAAA;AAAA,MAEnE;AAAA,MAGA,IAAI,kBAAkB,gBAAgB;AAAA,QACrC,IAAI;AAAA,UACH,sBAAsB,KAAK;AAAA,YAC1B;AAAA,YACA;AAAA,YACA,SAAS;AAAA,YACT,QAAQ;AAAA,YACR;AAAA,YACA;AAAA,YACA;AAAA,UACD,CAAC;AAAA,UACD,QAAQ,IACP,gCAAgC,4BACjC;AAAA,UACC,OAAO,OAAO;AAAA,UACf,QAAQ,MACP,gDACA,KACD;AAAA;AAAA,MAEF;AAAA,MAGA,IAAI,cAAc,YAAY;AAAA,QAC7B,IAAI;AAAA,UACH,MAAM,kBAAkB,KAAK;AAAA,YAC5B;AAAA,YACA;AAAA,YACA;AAAA,YACA,SAAS;AAAA,YACT,QAAQ;AAAA,YACR;AAAA,YACA;AAAA,YACA;AAAA,UACD,CAAC;AAAA,UACD,QAAQ,IACP,kCAAkC,qBACnC;AAAA,UACC,OAAO,OAAO;AAAA,UACf,QAAQ,MAAM,4CAA4C,KAAK;AAAA;AAAA,MAEjE;AAAA,MAGA,IAAI,eAAe,YAAY;AAAA,QAC9B,IAAI;AAAA,UACH,mBAAmB,KAAK;AAAA,YACvB;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,QAAQ;AAAA,YACR,WAAW;AAAA,YACX;AAAA,YACA;AAAA,YACA;AAAA,UACD,CAAC;AAAA,UAED,MAAM,WAAqB,CAAC;AAAA,UAC5B,IAAI,WAAW,wBAAwB;AAAA,YAAO,SAAS,KAAK,MAAM;AAAA,UAClE,IAAI,WAAW,4BAA4B;AAAA,YAC1C,SAAS,KAAK,KAAK;AAAA,UACpB,IAAI,WAAW,6BAA6B;AAAA,YAC3C,SAAS,KAAK,gBAAgB;AAAA,UAC/B,IAAI,WAAW,gBAAgB;AAAA,YAAO,SAAS,KAAK,WAAW;AAAA,UAC/D,IAAI,WAAW,sBAAsB;AAAA,YACpC,SAAS,KAAK,gBAAgB;AAAA,UAE/B,QAAQ,IACP,mCAAmC,SAAS,KAAK,IAAI,GACtD;AAAA,UACC,OAAO,OAAO;AAAA,UACf,QAAQ,MAAM,6CAA6C,KAAK;AAAA;AAAA,MAElE;AAAA,MAGA,IAAI,aAAa,UAAU;AAAA,QAC1B,IAAI;AAAA,UACH,iBAAiB,KAAK;AAAA,YACrB;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD,CAAC;AAAA,UACD,QAAQ,IAAI,uCAAuC;AAAA,UAClD,OAAO,OAAO;AAAA,UACf,QAAQ,MAAM,2CAA2C,KAAK;AAAA;AAAA,MAEhE;AAAA,MAGA,kBAAkB,KAAK;AAAA,QACtB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,MAAM;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,kBAAkB,aAAa,WAAW;AAAA,QAC1C;AAAA,QACA,cAAc,aAAa;AAAA,QAC3B;AAAA,QACA;AAAA,QACA;AAAA,MACD,CAAC;AAAA,MACA,OAAO,OAAO;AAAA,MACf,QAAQ,MAAM,4CAA4C,KAAK;AAAA,MAC/D,MAAM;AAAA;AAAA,EAER;AAAA,EAGA,IAAI,QAAQ,GAAG,KAAK,YAAY;AAAA,IAC/B,IAAI,YAAY,SAAS,MAAM,WAAW,KAAK;AAAA,MAC9C,IAAI,SAAS;AAAA,MACb;AAAA,IACD;AAAA,IAEA,IAAI,QAAQ,IAAI,gBAAgB,cAAc;AAAA,MAC7C,QAAQ,MAAM,wCAA6B,KAAK;AAAA,IACjD;AAAA,GACA;AAAA,EAED,OAAO;AAAA;",
|
|
93
|
+
"debugId": "C4FE93DB6E1B24E664756E2164756E21",
|
|
93
94
|
"names": []
|
|
94
95
|
}
|