@absolutejs/absolute 0.19.0-beta.346 → 0.19.0-beta.347
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/build.js +2 -2
- package/dist/build.js.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/islands/browser.js +2 -2
- package/dist/islands/browser.js.map +3 -3
- package/package.json +1 -5
- package/dist/islands/server.js +0 -30383
- package/dist/islands/server.js.map +0 -30
- package/dist/src/islands/server.d.ts +0 -3
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/core/islandManifest.ts", "../src/core/islands.ts", "../src/angular/injectorPatch.ts", "../src/angular/resolveAngularPackage.ts", "../src/angular/angularPatch.ts", "../src/angular/angularDeps.ts", "../src/utils/stringModifiers.ts", "../src/utils/registerClientScript.ts", "../src/angular/ssrRender.ts", "../node_modules/@angular/compiler/fesm2022/compiler.mjs", "../src/angular/islands.ts", "../src/core/islandSsr.ts", "../src/constants.ts", "../src/svelte/lowerIslandSyntax.ts", "../src/core/svelteServerModule.ts", "../src/core/islandMarkupAttributes.ts", "../src/core/renderIslandMarkup.ts", "../src/islands/server.ts", "../node_modules/zustand/esm/vanilla.mjs", "../node_modules/zustand/esm/middleware.mjs", "../src/client/islandStore.ts"],
|
|
4
|
-
"sourcesContent": [
|
|
5
|
-
"import type { IslandFramework } from '../../types/island';\n\nconst toIslandFrameworkSegment = (framework: IslandFramework) =>\n\tframework[0]?.toUpperCase() + framework.slice(1);\n\nconst collectFrameworkIslands = (\n\tmanifest: Record<string, string>,\n\tprefix: string\n) => {\n\tconst entries: Record<string, string> = {};\n\tlet found = false;\n\n\tfor (const [key, value] of Object.entries(manifest)) {\n\t\tif (!key.startsWith(prefix)) continue;\n\n\t\tconst component = key.slice(prefix.length);\n\t\tif (!component) continue;\n\n\t\tentries[component] = value;\n\t\tfound = true;\n\t}\n\n\treturn found ? entries : undefined;\n};\n\nexport const getIslandManifestEntries = (manifest: Record<string, string>) => {\n\tconst islands: Partial<Record<IslandFramework, Record<string, string>>> =\n\t\t{};\n\tconst frameworks: IslandFramework[] = ['react', 'svelte', 'vue', 'angular'];\n\n\tfor (const framework of frameworks) {\n\t\tconst prefix = `Island${toIslandFrameworkSegment(framework)}`;\n\t\tconst entries = collectFrameworkIslands(manifest, prefix);\n\t\tif (entries) islands[framework] = entries;\n\t}\n\n\treturn islands;\n};\nexport const getIslandManifestKey = (\n\tframework: IslandFramework,\n\tcomponent: string\n) => `Island${toIslandFrameworkSegment(framework)}${component}`;\n",
|
|
6
|
-
"import type {\n\tIslandComponentDefinition,\n\tIslandRegistry,\n\tIslandRegistryInput\n} from '../../types/island';\n\nexport const defineIslandComponent = <Component>(\n\tcomponent: Component,\n\toptions: {\n\t\texport?: string;\n\t\tsource: string;\n\t}\n): IslandComponentDefinition<Component> => ({\n\tcomponent,\n\texport: options.export,\n\tsource: options.source\n});\nexport const defineIslandRegistry = <T extends IslandRegistryInput>(\n\tregistry: IslandRegistry<T>\n) => registry;\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null;\n\nexport const getIslandBuildReference = <Component>(\n\tcomponent: Component | IslandComponentDefinition<Component>\n) => {\n\tif (!isIslandComponentDefinition(component)) return null;\n\n\treturn {\n\t\texport: component.export,\n\t\tsource: component.source\n\t};\n};\nexport const isIslandComponentDefinition = <Component>(\n\tvalue: Component | IslandComponentDefinition<Component>\n): value is IslandComponentDefinition<Component> =>\n\tisRecord(value) &&\n\t'component' in value &&\n\t'source' in value &&\n\ttypeof value.source === 'string';\n\nexport function getIslandComponent<Component>(component: Component): Component;\nexport function getIslandComponent<Component>(\n\tcomponent: IslandComponentDefinition<Component>\n): Component;\nexport function getIslandComponent<Component>(\n\tcomponent: Component | IslandComponentDefinition<Component>\n) {\n\tif (isIslandComponentDefinition(component)) {\n\t\treturn component.component;\n\t}\n\n\treturn component;\n}\nexport const parseIslandProps = (rawProps: string | null) => {\n\tif (!rawProps) return {};\n\n\treturn JSON.parse(rawProps);\n};\nexport const serializeIslandProps = (props: unknown) =>\n\tJSON.stringify(props ?? {});\n\nexport {\n\tgetIslandManifestEntries,\n\tgetIslandManifestKey\n} from './islandManifest';\n",
|
|
7
|
-
"import { existsSync, readFileSync, writeFileSync } from 'node:fs';\nimport { dirname, join, resolve } from 'node:path';\n\n// --- Patch Angular injector singleton for HMR compatibility ---\n// Bun's --hot mode can create duplicate Angular module instances during\n// HMR rebuilds. Angular's _currentInjector is a module-level variable in\n// _not_found-chunk.mjs — when duplicated, R3Injector.get() sets it in\n// instance A while the factory's inject() reads from instance B (undefined),\n// causing NG0203. This patch stores _currentInjector on globalThis so all\n// instances share the same value.\n\nconst applyInjectorPatch = (chunkPath: string, content: string) => {\n\tif (content.includes('Symbol.for(\"angular.currentInjector\")')) {\n\t\treturn;\n\t}\n\n\tconst original = [\n\t\t'let _currentInjector = undefined;',\n\t\t'function getCurrentInjector() {',\n\t\t' return _currentInjector;',\n\t\t'}',\n\t\t'function setCurrentInjector(injector) {',\n\t\t' const former = _currentInjector;',\n\t\t' _currentInjector = injector;',\n\t\t' return former;',\n\t\t'}'\n\t].join('\\n');\n\n\tconst replacement = [\n\t\t'const _injSym = Symbol.for(\"angular.currentInjector\");',\n\t\t'if (!globalThis[_injSym]) globalThis[_injSym] = { v: undefined };',\n\t\t'function getCurrentInjector() {',\n\t\t' return globalThis[_injSym].v;',\n\t\t'}',\n\t\t'function setCurrentInjector(injector) {',\n\t\t' const former = globalThis[_injSym].v;',\n\t\t' globalThis[_injSym].v = injector;',\n\t\t' return former;',\n\t\t'}'\n\t].join('\\n');\n\n\tconst patched = content.replace(original, replacement);\n\n\tif (patched === content) {\n\t\treturn;\n\t}\n\n\twriteFileSync(chunkPath, patched, 'utf-8');\n};\n\nconst resolveAngularCoreDir = () => {\n\tconst fromProject = resolve(process.cwd(), 'node_modules/@angular/core');\n\n\tif (existsSync(join(fromProject, 'package.json'))) {\n\t\treturn fromProject;\n\t}\n\n\treturn dirname(require.resolve('@angular/core/package.json'));\n};\n\nexport const patchAngularInjectorSingleton = () => {\n\ttry {\n\t\tconst coreDir = resolveAngularCoreDir();\n\t\tconst chunkPath = join(coreDir, 'fesm2022', '_not_found-chunk.mjs');\n\t\tconst content = readFileSync(chunkPath, 'utf-8');\n\t\tapplyInjectorPatch(chunkPath, content);\n\t} catch {\n\t\t// Non-fatal — HMR may see NG0203 on second+ edits\n\t}\n};\n\n// Apply immediately at module load so the file is patched before any\n// Angular module is first evaluated by Bun's --hot mode or linker plugin.\npatchAngularInjectorSingleton();\n",
|
|
8
|
-
"import { existsSync } from 'node:fs';\nimport { resolve } from 'node:path';\n\n/**\n * Resolve an Angular package path from process.cwd()/node_modules/ first,\n * falling back to the bare specifier. This prevents Bun's baked import.meta.dir\n * from resolving Angular packages from the absolutejs source tree instead of\n * the consumer's project when running from a published npm package.\n */\nexport const resolveAngularPackage = (specifier: string) => {\n\tconst fromProject = resolve(process.cwd(), 'node_modules', specifier);\n\n\tif (existsSync(fromProject)) {\n\t\treturn fromProject;\n\t}\n\n\treturn specifier;\n};\n",
|
|
9
|
-
"import { resolveAngularPackage } from './resolveAngularPackage';\n\n// Patches Angular SSR's DominoAdapter to guard against null doc.head\n\nconst ensureHead = (doc: Document) => {\n\tif (!doc || doc.head || !doc.documentElement) {\n\t\treturn;\n\t}\n\n\tconst head = doc.createElement('head');\n\tdoc.documentElement.insertBefore(head, doc.documentElement.firstChild);\n};\n\nexport const applyPatches = async () => {\n\tconst { ɵDominoAdapter } = await import(\n\t\tresolveAngularPackage('@angular/platform-server')\n\t);\n\tif (!ɵDominoAdapter?.prototype) {\n\t\tconsole.warn(\n\t\t\t'[Angular Patch] ɵDominoAdapter not found, skipping patches'\n\t\t);\n\n\t\treturn false;\n\t}\n\n\tconst proto = ɵDominoAdapter.prototype;\n\n\tconst origGetBaseHref = proto.getBaseHref;\n\tproto.getBaseHref = function (doc: Document) {\n\t\tif (!doc || !doc.head || typeof doc.head.children === 'undefined') {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn origGetBaseHref.call(this, doc);\n\t};\n\n\tconst origCreateHtmlDocument = proto.createHtmlDocument;\n\tproto.createHtmlDocument = function () {\n\t\tconst doc = origCreateHtmlDocument.call(this);\n\t\tensureHead(doc);\n\n\t\treturn doc;\n\t};\n\n\tconst origGetDefaultDocument = proto.getDefaultDocument;\n\tproto.getDefaultDocument = function () {\n\t\tconst doc = origGetDefaultDocument.call(this);\n\t\tensureHead(doc);\n\n\t\treturn doc;\n\t};\n\n\treturn true;\n};\n",
|
|
10
|
-
"import type { AngularDeps, SsrDepsResult } from '../../types/angular';\nimport { patchAngularInjectorSingleton } from './injectorPatch';\nimport { resolveAngularPackage } from './resolveAngularPackage';\n\nconst initDominoAdapter = (platformServer: SsrDepsResult['platformServer']) => {\n\ttry {\n\t\tconst DominoAdapter: { makeCurrent?: () => void } | undefined =\n\t\t\tplatformServer.ɵDominoAdapter;\n\t\tDominoAdapter?.makeCurrent?.();\n\t} catch (err) {\n\t\tconsole.error('Failed to initialize DominoAdapter:', err);\n\t}\n};\n\nconst loadAngularDeps = async () => {\n\t// Patch Angular's _currentInjector to use globalThis BEFORE any\n\t// Angular module is loaded — this prevents NG0203 when Bun's --hot\n\t// mode creates duplicate module instances during HMR rebuilds.\n\tpatchAngularInjectorSingleton();\n\n\t// JIT compiler MUST be fully loaded before any other Angular import.\n\t// Angular packages like @angular/common contain partially compiled\n\t// injectables (e.g. PlatformLocation) that need the JIT compiler\n\t// facade to be registered first.\n\tawait import(resolveAngularPackage('@angular/compiler'));\n\n\t// angularPatch imports @angular/platform-server internally, so it\n\t// must also run after the compiler is available.\n\tconst { applyPatches } = await import('./angularPatch');\n\tawait applyPatches();\n\n\t// Now safe to load all Angular packages in parallel\n\tconst [platformBrowser, platformServer, common, core] = await Promise.all([\n\t\timport(resolveAngularPackage('@angular/platform-browser')),\n\t\timport(resolveAngularPackage('@angular/platform-server')),\n\t\timport(resolveAngularPackage('@angular/common')),\n\t\timport(resolveAngularPackage('@angular/core'))\n\t]);\n\n\tif (process.env.NODE_ENV !== 'development') {\n\t\tcore.enableProdMode();\n\t}\n\n\tinitDominoAdapter(platformServer);\n\n\treturn {\n\t\tAPP_BASE_HREF: common.APP_BASE_HREF,\n\t\tbootstrapApplication: platformBrowser.bootstrapApplication,\n\t\tDomSanitizer: platformBrowser.DomSanitizer,\n\t\tprovideClientHydration: platformBrowser.provideClientHydration,\n\t\tprovideServerRendering: platformServer.provideServerRendering,\n\t\tprovideZonelessChangeDetection: core.provideZonelessChangeDetection,\n\t\treflectComponentType: core.reflectComponentType,\n\t\trenderApplication: platformServer.renderApplication,\n\t\tSanitizer: core.Sanitizer,\n\t\tSecurityContext: core.SecurityContext\n\t};\n};\n\nlet angularDeps: Promise<AngularDeps> | null = null;\n\nexport const getAngularDeps = () => {\n\tif (!angularDeps) {\n\t\tangularDeps = loadAngularDeps();\n\t}\n\n\treturn angularDeps;\n};\n",
|
|
11
|
-
"const normalizeSlug = (str: string) =>\n\tstr\n\t\t.trim()\n\t\t.replace(/\\s+/g, '-')\n\t\t.replace(/[^A-Za-z0-9\\-_]+/g, '')\n\t\t.replace(/[-_]{2,}/g, '-');\n\nexport const toKebab = (str: string) =>\n\tnormalizeSlug(str)\n\t\t.replace(/([a-z0-9])([A-Z])/g, '$1-$2')\n\t\t.toLowerCase();\nexport const toPascal = (str: string) => {\n\tif (!str.includes('-') && !str.includes('_')) {\n\t\treturn str.charAt(0).toUpperCase() + str.slice(1);\n\t}\n\n\treturn normalizeSlug(str)\n\t\t.split(/[-_]/)\n\t\t.filter(Boolean)\n\t\t.map(\n\t\t\t(segment) =>\n\t\t\t\tsegment.charAt(0).toUpperCase() + segment.slice(1).toLowerCase()\n\t\t)\n\t\t.join('');\n};\nexport const toScreamingSnake = (str: string) =>\n\tstr.replace(/([a-z0-9])([A-Z])/g, '$1_$2').toUpperCase();\n",
|
|
12
|
-
"/**\n * Utility for registering client-side scripts that need to run after Angular SSR hydration.\n *\n * This is necessary because Angular's lifecycle hooks don't always run reliably on the client\n * after SSR hydration, especially for event listeners attached to DOM elements.\n *\n * Usage in Angular components:\n * ```typescript\n * import { registerClientScript } from '@absolutejs/absolute';\n *\n * // Register an event listener script\n * registerClientScript(() => {\n * const element = document.querySelector('.my-element');\n * if (element) {\n * element.addEventListener('click', () => {\n * console.log('Clicked!');\n * });\n * }\n * });\n * ```\n *\n * The script will be automatically injected into the HTML response and executed on the client.\n */\n\n// Request-scoped registry for client scripts\n// Each request gets its own set of scripts to inject\nconst scriptRegistry = new Map<string, Set<() => void>>();\n\n// Generate a unique request ID for tracking scripts per request\nlet requestCounter = 0;\nconst getRequestId = () => `req_${Date.now()}_${++requestCounter}`;\n\n// Allow SSR frameworks to inject a request context getter (e.g. AsyncLocalStorage)\nlet ssrContextGetter: (() => string | undefined) | null = null;\nexport const getSsrContextId = () =>\n\tssrContextGetter?.() ||\n\tObject.getOwnPropertyDescriptor(globalThis, '__absolutejs_requestId')\n\t\t?.value;\nexport const registerClientScript = (\n\tscript: () => void,\n\trequestId?: string\n) => {\n\t// Try to get requestId from explicit arg, then Async Context, then global fallback\n\tconst id = requestId || getSsrContextId() || getRequestId();\n\n\tif (!scriptRegistry.has(id)) {\n\t\tscriptRegistry.set(id, new Set());\n\t}\n\n\tscriptRegistry.get(id)?.add(script);\n\n\treturn id;\n};\nexport const setSsrContextGetter = (getter: () => string | undefined) => {\n\tssrContextGetter = getter;\n};\n\n// Make registerClientScript available globally during SSR for Angular components\n// Using type assertion for globalThis extension\nif (typeof globalThis !== 'undefined') {\n\tObject.assign(globalThis, { registerClientScript });\n}\n\n/**\n * Get all registered scripts for a request and clear them.\n * This is called by the page handler after rendering.\n *\n * @param requestId - The request ID to get scripts for\n * @returns Array of script functions, or empty array if none registered\n */\nexport const clearAllClientScripts = () => {\n\tscriptRegistry.clear();\n};\nexport const generateClientScriptCode = (scripts: (() => void)[]) => {\n\tif (scripts.length === 0) {\n\t\treturn '';\n\t}\n\n\t// Convert functions to strings and wrap in IIFE\n\tconst scriptCode = scripts\n\t\t.map((script, index) => {\n\t\t\t// Get the function body as a string\n\t\t\tconst funcString = script.toString();\n\n\t\t\t// Extract the body (everything between { and })\n\t\t\tconst bodyMatch = funcString.match(/\\{([\\s\\S]*)\\}/);\n\t\t\tif (!bodyMatch || !bodyMatch[1]) {\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\tconst body = bodyMatch[1].trim();\n\n\t\t\t// Wrap in IIFE with MutationObserver for DOM readiness\n\t\t\treturn `\n\t(function() {\n\t\tvar executed = false;\n\t\tfunction executeScript_${index}() {\n\t\t\tif (executed) return;\n\t\t\texecuted = true;\n\t\t\t${body}\n\t\t}\n\n\t\tif (document.readyState === 'complete' || document.readyState === 'interactive') {\n\t\t\texecuteScript_${index}();\n\t\t} else {\n\t\t\tdocument.addEventListener('DOMContentLoaded', executeScript_${index});\n\t\t}\n\n\t\t// Watch for hydration-added elements\n\t\tvar observer = new MutationObserver(function() {\n\t\t\texecuteScript_${index}();\n\t\t\tif (executed) observer.disconnect();\n\t\t});\n\t\tif (!executed) {\n\t\t\tobserver.observe(document.body || document.documentElement, { childList: true, subtree: true });\n\t\t}\n\n\t\t// Single fallback timeout\n\t\tsetTimeout(function() {\n\t\t\texecuteScript_${index}();\n\t\t\tobserver.disconnect();\n\t\t}, 1000);\n\t})();`;\n\t\t})\n\t\t.join('\\n');\n\n\treturn `<script>\n(function() {\n${scriptCode}\n})();\n</script>`;\n};\nexport const getAndClearClientScripts = (requestId?: string) => {\n\tconst id = requestId || ssrContextGetter?.();\n\tif (!id) return [];\n\n\tconst scripts = scriptRegistry.get(id);\n\tif (!scripts) {\n\t\treturn [];\n\t}\n\n\tconst scriptArray = Array.from(scripts);\n\tscriptRegistry.delete(id);\n\n\treturn scriptArray;\n};\n",
|
|
13
|
-
"import type { EnvironmentProviders, Provider, Type } from '@angular/core';\nimport type { BootstrapContext } from '@angular/platform-browser';\nimport type {\n\tAngularDeps,\n\tCachedRouteData,\n\tSsrDepsResult\n} from '../../types/angular';\nimport { toScreamingSnake } from '../utils/stringModifiers';\nimport {\n\tgetAndClearClientScripts,\n\tgenerateClientScriptCode\n} from '../utils/registerClientScript';\n\n// --- Last-used props cache for HMR ---\n// Stores { props, headTag } from the most recent real request per route\n// so HMR re-renders with the same data the user last saw (Vite/Next behavior).\n\nconst routePropsCache = new Map<string, CachedRouteData>();\n\nexport const cacheRouteData = (pagePath: string, data: CachedRouteData) => {\n\tconst cacheKey = pagePath.split('?')[0] ?? pagePath;\n\troutePropsCache.set(cacheKey, data);\n};\nexport const getCachedRouteData = (pagePath: string) =>\n\troutePropsCache.get(pagePath);\n\n// --- Selector cache ---\n\nconst selectorCache = new Map<string, string>();\n\nexport const buildDeps = (\n\tssrResult: SsrDepsResult | null,\n\tbaseDeps: AngularDeps\n) => {\n\tif (!ssrResult?.core) {\n\t\treturn baseDeps;\n\t}\n\n\tconst { common, core, platformBrowser, platformServer } = ssrResult;\n\n\treturn {\n\t\tAPP_BASE_HREF: common?.APP_BASE_HREF ?? baseDeps.APP_BASE_HREF,\n\t\tbootstrapApplication:\n\t\t\tplatformBrowser?.bootstrapApplication ??\n\t\t\tbaseDeps.bootstrapApplication,\n\t\tDomSanitizer: platformBrowser?.DomSanitizer ?? baseDeps.DomSanitizer,\n\t\tprovideClientHydration:\n\t\t\tplatformBrowser?.provideClientHydration ??\n\t\t\tbaseDeps.provideClientHydration,\n\t\tprovideServerRendering:\n\t\t\tplatformServer?.provideServerRendering ??\n\t\t\tbaseDeps.provideServerRendering,\n\t\tprovideZonelessChangeDetection: core.provideZonelessChangeDetection,\n\t\treflectComponentType: core.reflectComponentType,\n\t\trenderApplication:\n\t\t\tplatformServer?.renderApplication ?? baseDeps.renderApplication,\n\t\tSanitizer: core.Sanitizer,\n\t\tSecurityContext: core.SecurityContext\n\t} satisfies AngularDeps;\n};\nexport const buildProviders = (\n\tdeps: AngularDeps,\n\tsanitizer: InstanceType<AngularDeps['DomSanitizer']>,\n\tmaybeProps: Record<string, unknown> | undefined,\n\ttokenMap: Map<string, unknown>\n) => {\n\tconst providers: (Provider | EnvironmentProviders)[] = [\n\t\tdeps.provideServerRendering(),\n\t\tdeps.provideClientHydration(),\n\t\tdeps.provideZonelessChangeDetection(),\n\t\t{ provide: deps.APP_BASE_HREF, useValue: '/' },\n\t\t{\n\t\t\tprovide: deps.DomSanitizer,\n\t\t\tuseValue: sanitizer\n\t\t},\n\t\t{ provide: deps.Sanitizer, useValue: sanitizer }\n\t];\n\n\tif (!maybeProps) {\n\t\treturn providers;\n\t}\n\n\tconst propProviders = Object.entries(maybeProps)\n\t\t.map(([propName, propValue]) => ({\n\t\t\ttoken: tokenMap.get(toScreamingSnake(propName)),\n\t\t\tvalue: propValue\n\t\t}))\n\t\t.filter((entry) => entry.token)\n\t\t.map((entry) => ({ provide: entry.token, useValue: entry.value }));\n\n\treturn [...providers, ...propProviders];\n};\nexport const clearSelectorCache = () => selectorCache.clear();\n\nconst isInjectionToken = (value: unknown) => {\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\n\treturn (\n\t\t'ngMetadataName' in value && value.ngMetadataName === 'InjectionToken'\n\t);\n};\n\nexport const discoverTokens = (pageModule: Record<string, unknown>) =>\n\tnew Map(\n\t\tObject.entries(pageModule).filter(([, value]) =>\n\t\t\tisInjectionToken(value)\n\t\t)\n\t);\nexport const loadSsrDeps = async (pagePath: string) => {\n\tconst ssrDepsPath = (pagePath.split('?')[0] ?? pagePath).replace(\n\t\t/\\.js$/,\n\t\t'.ssr-deps.js'\n\t);\n\n\ttry {\n\t\tconst ssrDeps = await import(ssrDepsPath);\n\n\t\tconst result: SsrDepsResult = {\n\t\t\tcommon: ssrDeps.__angularCommon,\n\t\t\tcore: ssrDeps.__angularCore,\n\t\t\tplatformBrowser: ssrDeps.__angularPlatformBrowser,\n\t\t\tplatformServer: ssrDeps.__angularPlatformServer\n\t\t};\n\n\t\treturn result;\n\t} catch {\n\t\treturn null;\n\t}\n};\nexport const resolveSelector = (\n\tdeps: AngularDeps,\n\tpagePath: string,\n\tPageComponent: Type<unknown>\n) => {\n\tconst cached = selectorCache.get(pagePath);\n\tif (cached) {\n\t\treturn cached;\n\t}\n\n\tconst selector =\n\t\tdeps.reflectComponentType(PageComponent)?.selector ?? 'ng-app';\n\tselectorCache.set(pagePath, selector);\n\n\treturn selector;\n};\n\n// --- Inject HTML helper ---\n\nconst injectBeforeClose = (html: string, snippet: string) => {\n\tif (html.includes('</body>')) {\n\t\treturn html.replace('</body>', `${snippet}</body>`);\n\t}\n\tif (html.includes('</html>')) {\n\t\treturn html.replace('</html>', `${snippet}</html>`);\n\t}\n\n\treturn html + snippet;\n};\n\n// --- Post-render HTML injection ---\n\nexport const injectSsrScripts = (\n\thtml: string,\n\trequestId: string,\n\tindexPath: string,\n\tprops?: Record<string, unknown>\n) => {\n\tlet result = html;\n\n\tconst registeredScripts = getAndClearClientScripts(requestId);\n\tif (registeredScripts.length > 0) {\n\t\tresult = injectBeforeClose(\n\t\t\tresult,\n\t\t\tgenerateClientScriptCode(registeredScripts)\n\t\t);\n\t}\n\n\tif (props) {\n\t\tresult = injectBeforeClose(\n\t\t\tresult,\n\t\t\t`<script>window.__ABS_ANGULAR_PAGE_PROPS__ = ${JSON.stringify(props)};</script>`\n\t\t);\n\t}\n\n\tif (indexPath) {\n\t\tresult = injectBeforeClose(\n\t\t\tresult,\n\t\t\t`<script type=\"module\" src=\"${indexPath}\"></script>`\n\t\t);\n\t}\n\n\treturn result;\n};\nexport const renderAngularApp = async (\n\tdeps: AngularDeps,\n\tPageComponent: Type<unknown>,\n\tproviders: (Provider | EnvironmentProviders)[],\n\tdocument: string | Document\n) => {\n\tconst bootstrap = (context: BootstrapContext) =>\n\t\tdeps.bootstrapApplication(PageComponent, { providers }, context);\n\n\treturn withSuppressedAngularDevLogs(() =>\n\t\tdeps.renderApplication(bootstrap, {\n\t\t\tdocument,\n\t\t\tplatformProviders: [],\n\t\t\turl: '/'\n\t\t})\n\t);\n};\nexport const withSuppressedAngularDevLogs = async <T>(\n\trender: () => Promise<T>\n) => {\n\tconst origLog = console.log;\n\tconsole.log = (...args: unknown[]) => {\n\t\tif (\n\t\t\ttypeof args[0] === 'string' &&\n\t\t\targs[0].includes('development mode')\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t\torigLog.apply(console, args);\n\t};\n\n\ttry {\n\t\treturn await render();\n\t} finally {\n\t\tconsole.log = origLog;\n\t}\n};\n",
|
|
14
|
-
"/**\n * @license Angular v21.2.6\n * (c) 2010-2026 Google LLC. https://angular.dev/\n * License: MIT\n */\n\nconst _SELECTOR_REGEXP = new RegExp('(\\\\:not\\\\()|' + '(([\\\\.\\\\#]?)[-\\\\w]+)|' + '(?:\\\\[([-.\\\\w*\\\\\\\\$]+)(?:=([\"\\']?)([^\\\\]\"\\']*)\\\\5)?\\\\])|' + '(\\\\))|' + '(\\\\s*,\\\\s*)', 'g');\nclass CssSelector {\n element = null;\n classNames = [];\n attrs = [];\n notSelectors = [];\n static parse(selector) {\n const results = [];\n const _addResult = (res, cssSel) => {\n if (cssSel.notSelectors.length > 0 && !cssSel.element && cssSel.classNames.length == 0 && cssSel.attrs.length == 0) {\n cssSel.element = '*';\n }\n res.push(cssSel);\n };\n let cssSelector = new CssSelector();\n let match;\n let current = cssSelector;\n let inNot = false;\n _SELECTOR_REGEXP.lastIndex = 0;\n while (match = _SELECTOR_REGEXP.exec(selector)) {\n if (match[1]) {\n if (inNot) {\n throw new Error('Nesting :not in a selector is not allowed');\n }\n inNot = true;\n current = new CssSelector();\n cssSelector.notSelectors.push(current);\n }\n const tag = match[2];\n if (tag) {\n const prefix = match[3];\n if (prefix === '#') {\n current.addAttribute('id', tag.slice(1));\n } else if (prefix === '.') {\n current.addClassName(tag.slice(1));\n } else {\n current.setElement(tag);\n }\n }\n const attribute = match[4];\n if (attribute) {\n current.addAttribute(current.unescapeAttribute(attribute), match[6]);\n }\n if (match[7]) {\n inNot = false;\n current = cssSelector;\n }\n if (match[8]) {\n if (inNot) {\n throw new Error('Multiple selectors in :not are not supported');\n }\n _addResult(results, cssSelector);\n cssSelector = current = new CssSelector();\n }\n }\n _addResult(results, cssSelector);\n return results;\n }\n unescapeAttribute(attr) {\n let result = '';\n let escaping = false;\n for (let i = 0; i < attr.length; i++) {\n const char = attr.charAt(i);\n if (char === '\\\\') {\n escaping = true;\n continue;\n }\n if (char === '$' && !escaping) {\n throw new Error(`Error in attribute selector \"${attr}\". ` + `Unescaped \"$\" is not supported. Please escape with \"\\\\$\".`);\n }\n escaping = false;\n result += char;\n }\n return result;\n }\n escapeAttribute(attr) {\n return attr.replace(/\\\\/g, '\\\\\\\\').replace(/\\$/g, '\\\\$');\n }\n isElementSelector() {\n return this.hasElementSelector() && this.classNames.length == 0 && this.attrs.length == 0 && this.notSelectors.length === 0;\n }\n hasElementSelector() {\n return !!this.element;\n }\n setElement(element = null) {\n this.element = element;\n }\n getAttrs() {\n const result = [];\n if (this.classNames.length > 0) {\n result.push('class', this.classNames.join(' '));\n }\n return result.concat(this.attrs);\n }\n addAttribute(name, value = '') {\n this.attrs.push(name, value && value.toLowerCase() || '');\n }\n addClassName(name) {\n this.classNames.push(name.toLowerCase());\n }\n toString() {\n let res = this.element || '';\n if (this.classNames) {\n this.classNames.forEach(klass => res += `.${klass}`);\n }\n if (this.attrs) {\n for (let i = 0; i < this.attrs.length; i += 2) {\n const name = this.escapeAttribute(this.attrs[i]);\n const value = this.attrs[i + 1];\n res += `[${name}${value ? '=' + value : ''}]`;\n }\n }\n this.notSelectors.forEach(notSelector => res += `:not(${notSelector})`);\n return res;\n }\n}\nclass SelectorMatcher {\n static createNotMatcher(notSelectors) {\n const notMatcher = new SelectorMatcher();\n notMatcher.addSelectables(notSelectors, null);\n return notMatcher;\n }\n _elementMap = new Map();\n _elementPartialMap = new Map();\n _classMap = new Map();\n _classPartialMap = new Map();\n _attrValueMap = new Map();\n _attrValuePartialMap = new Map();\n _listContexts = [];\n addSelectables(cssSelectors, callbackCtxt) {\n let listContext = null;\n if (cssSelectors.length > 1) {\n listContext = new SelectorListContext(cssSelectors);\n this._listContexts.push(listContext);\n }\n for (let i = 0; i < cssSelectors.length; i++) {\n this._addSelectable(cssSelectors[i], callbackCtxt, listContext);\n }\n }\n _addSelectable(cssSelector, callbackCtxt, listContext) {\n let matcher = this;\n const element = cssSelector.element;\n const classNames = cssSelector.classNames;\n const attrs = cssSelector.attrs;\n const selectable = new SelectorContext(cssSelector, callbackCtxt, listContext);\n if (element) {\n const isTerminal = attrs.length === 0 && classNames.length === 0;\n if (isTerminal) {\n this._addTerminal(matcher._elementMap, element, selectable);\n } else {\n matcher = this._addPartial(matcher._elementPartialMap, element);\n }\n }\n if (classNames) {\n for (let i = 0; i < classNames.length; i++) {\n const isTerminal = attrs.length === 0 && i === classNames.length - 1;\n const className = classNames[i];\n if (isTerminal) {\n this._addTerminal(matcher._classMap, className, selectable);\n } else {\n matcher = this._addPartial(matcher._classPartialMap, className);\n }\n }\n }\n if (attrs) {\n for (let i = 0; i < attrs.length; i += 2) {\n const isTerminal = i === attrs.length - 2;\n const name = attrs[i];\n const value = attrs[i + 1];\n if (isTerminal) {\n const terminalMap = matcher._attrValueMap;\n let terminalValuesMap = terminalMap.get(name);\n if (!terminalValuesMap) {\n terminalValuesMap = new Map();\n terminalMap.set(name, terminalValuesMap);\n }\n this._addTerminal(terminalValuesMap, value, selectable);\n } else {\n const partialMap = matcher._attrValuePartialMap;\n let partialValuesMap = partialMap.get(name);\n if (!partialValuesMap) {\n partialValuesMap = new Map();\n partialMap.set(name, partialValuesMap);\n }\n matcher = this._addPartial(partialValuesMap, value);\n }\n }\n }\n }\n _addTerminal(map, name, selectable) {\n let terminalList = map.get(name);\n if (!terminalList) {\n terminalList = [];\n map.set(name, terminalList);\n }\n terminalList.push(selectable);\n }\n _addPartial(map, name) {\n let matcher = map.get(name);\n if (!matcher) {\n matcher = new SelectorMatcher();\n map.set(name, matcher);\n }\n return matcher;\n }\n match(cssSelector, matchedCallback) {\n let result = false;\n const element = cssSelector.element;\n const classNames = cssSelector.classNames;\n const attrs = cssSelector.attrs;\n for (let i = 0; i < this._listContexts.length; i++) {\n this._listContexts[i].alreadyMatched = false;\n }\n result = this._matchTerminal(this._elementMap, element, cssSelector, matchedCallback) || result;\n result = this._matchPartial(this._elementPartialMap, element, cssSelector, matchedCallback) || result;\n if (classNames) {\n for (let i = 0; i < classNames.length; i++) {\n const className = classNames[i];\n result = this._matchTerminal(this._classMap, className, cssSelector, matchedCallback) || result;\n result = this._matchPartial(this._classPartialMap, className, cssSelector, matchedCallback) || result;\n }\n }\n if (attrs) {\n for (let i = 0; i < attrs.length; i += 2) {\n const name = attrs[i];\n const value = attrs[i + 1];\n const terminalValuesMap = this._attrValueMap.get(name);\n if (value) {\n result = this._matchTerminal(terminalValuesMap, '', cssSelector, matchedCallback) || result;\n }\n result = this._matchTerminal(terminalValuesMap, value, cssSelector, matchedCallback) || result;\n const partialValuesMap = this._attrValuePartialMap.get(name);\n if (value) {\n result = this._matchPartial(partialValuesMap, '', cssSelector, matchedCallback) || result;\n }\n result = this._matchPartial(partialValuesMap, value, cssSelector, matchedCallback) || result;\n }\n }\n return result;\n }\n _matchTerminal(map, name, cssSelector, matchedCallback) {\n if (!map || typeof name !== 'string') {\n return false;\n }\n let selectables = map.get(name) || [];\n const starSelectables = map.get('*');\n if (starSelectables) {\n selectables = selectables.concat(starSelectables);\n }\n if (selectables.length === 0) {\n return false;\n }\n let selectable;\n let result = false;\n for (let i = 0; i < selectables.length; i++) {\n selectable = selectables[i];\n result = selectable.finalize(cssSelector, matchedCallback) || result;\n }\n return result;\n }\n _matchPartial(map, name, cssSelector, matchedCallback) {\n if (!map || typeof name !== 'string') {\n return false;\n }\n const nestedSelector = map.get(name);\n if (!nestedSelector) {\n return false;\n }\n return nestedSelector.match(cssSelector, matchedCallback);\n }\n}\nclass SelectorListContext {\n selectors;\n alreadyMatched = false;\n constructor(selectors) {\n this.selectors = selectors;\n }\n}\nclass SelectorContext {\n selector;\n cbContext;\n listContext;\n notSelectors;\n constructor(selector, cbContext, listContext) {\n this.selector = selector;\n this.cbContext = cbContext;\n this.listContext = listContext;\n this.notSelectors = selector.notSelectors;\n }\n finalize(cssSelector, callback) {\n let result = true;\n if (this.notSelectors.length > 0 && (!this.listContext || !this.listContext.alreadyMatched)) {\n const notMatcher = SelectorMatcher.createNotMatcher(this.notSelectors);\n result = !notMatcher.match(cssSelector, null);\n }\n if (result && callback && (!this.listContext || !this.listContext.alreadyMatched)) {\n if (this.listContext) {\n this.listContext.alreadyMatched = true;\n }\n callback(this.selector, this.cbContext);\n }\n return result;\n }\n}\nclass SelectorlessMatcher {\n registry;\n constructor(registry) {\n this.registry = registry;\n }\n match(name) {\n return this.registry.has(name) ? this.registry.get(name) : [];\n }\n}\n\nconst emitDistinctChangesOnlyDefaultValue = true;\nvar ViewEncapsulation$1;\n(function (ViewEncapsulation) {\n ViewEncapsulation[ViewEncapsulation[\"Emulated\"] = 0] = \"Emulated\";\n ViewEncapsulation[ViewEncapsulation[\"None\"] = 2] = \"None\";\n ViewEncapsulation[ViewEncapsulation[\"ShadowDom\"] = 3] = \"ShadowDom\";\n ViewEncapsulation[ViewEncapsulation[\"ExperimentalIsolatedShadowDom\"] = 4] = \"ExperimentalIsolatedShadowDom\";\n})(ViewEncapsulation$1 || (ViewEncapsulation$1 = {}));\nvar ChangeDetectionStrategy;\n(function (ChangeDetectionStrategy) {\n ChangeDetectionStrategy[ChangeDetectionStrategy[\"OnPush\"] = 0] = \"OnPush\";\n ChangeDetectionStrategy[ChangeDetectionStrategy[\"Default\"] = 1] = \"Default\";\n ChangeDetectionStrategy[ChangeDetectionStrategy[\"Eager\"] = 1] = \"Eager\";\n})(ChangeDetectionStrategy || (ChangeDetectionStrategy = {}));\nvar InputFlags;\n(function (InputFlags) {\n InputFlags[InputFlags[\"None\"] = 0] = \"None\";\n InputFlags[InputFlags[\"SignalBased\"] = 1] = \"SignalBased\";\n InputFlags[InputFlags[\"HasDecoratorInputTransform\"] = 2] = \"HasDecoratorInputTransform\";\n})(InputFlags || (InputFlags = {}));\nconst CUSTOM_ELEMENTS_SCHEMA = {\n name: 'custom-elements'\n};\nconst NO_ERRORS_SCHEMA = {\n name: 'no-errors-schema'\n};\nconst Type$1 = Function;\nvar SecurityContext;\n(function (SecurityContext) {\n SecurityContext[SecurityContext[\"NONE\"] = 0] = \"NONE\";\n SecurityContext[SecurityContext[\"HTML\"] = 1] = \"HTML\";\n SecurityContext[SecurityContext[\"STYLE\"] = 2] = \"STYLE\";\n SecurityContext[SecurityContext[\"SCRIPT\"] = 3] = \"SCRIPT\";\n SecurityContext[SecurityContext[\"URL\"] = 4] = \"URL\";\n SecurityContext[SecurityContext[\"RESOURCE_URL\"] = 5] = \"RESOURCE_URL\";\n SecurityContext[SecurityContext[\"ATTRIBUTE_NO_BINDING\"] = 6] = \"ATTRIBUTE_NO_BINDING\";\n})(SecurityContext || (SecurityContext = {}));\nvar MissingTranslationStrategy;\n(function (MissingTranslationStrategy) {\n MissingTranslationStrategy[MissingTranslationStrategy[\"Error\"] = 0] = \"Error\";\n MissingTranslationStrategy[MissingTranslationStrategy[\"Warning\"] = 1] = \"Warning\";\n MissingTranslationStrategy[MissingTranslationStrategy[\"Ignore\"] = 2] = \"Ignore\";\n})(MissingTranslationStrategy || (MissingTranslationStrategy = {}));\nfunction parserSelectorToSimpleSelector(selector) {\n const classes = selector.classNames && selector.classNames.length ? [8, ...selector.classNames] : [];\n const elementName = selector.element && selector.element !== '*' ? selector.element : '';\n return [elementName, ...selector.attrs, ...classes];\n}\nfunction parserSelectorToNegativeSelector(selector) {\n const classes = selector.classNames && selector.classNames.length ? [8, ...selector.classNames] : [];\n if (selector.element) {\n return [1 | 4, selector.element, ...selector.attrs, ...classes];\n } else if (selector.attrs.length) {\n return [1 | 2, ...selector.attrs, ...classes];\n } else {\n return selector.classNames && selector.classNames.length ? [1 | 8, ...selector.classNames] : [];\n }\n}\nfunction parserSelectorToR3Selector(selector) {\n const positive = parserSelectorToSimpleSelector(selector);\n const negative = selector.notSelectors && selector.notSelectors.length ? selector.notSelectors.map(notSelector => parserSelectorToNegativeSelector(notSelector)) : [];\n return positive.concat(...negative);\n}\nfunction parseSelectorToR3Selector(selector) {\n return selector ? CssSelector.parse(selector).map(parserSelectorToR3Selector) : [];\n}\n\nvar core = /*#__PURE__*/Object.freeze({\n __proto__: null,\n CUSTOM_ELEMENTS_SCHEMA: CUSTOM_ELEMENTS_SCHEMA,\n get ChangeDetectionStrategy () { return ChangeDetectionStrategy; },\n get InputFlags () { return InputFlags; },\n get MissingTranslationStrategy () { return MissingTranslationStrategy; },\n NO_ERRORS_SCHEMA: NO_ERRORS_SCHEMA,\n get SecurityContext () { return SecurityContext; },\n Type: Type$1,\n get ViewEncapsulation () { return ViewEncapsulation$1; },\n emitDistinctChangesOnlyDefaultValue: emitDistinctChangesOnlyDefaultValue,\n parseSelectorToR3Selector: parseSelectorToR3Selector\n});\n\nvar FactoryTarget;\n(function (FactoryTarget) {\n FactoryTarget[FactoryTarget[\"Directive\"] = 0] = \"Directive\";\n FactoryTarget[FactoryTarget[\"Component\"] = 1] = \"Component\";\n FactoryTarget[FactoryTarget[\"Injectable\"] = 2] = \"Injectable\";\n FactoryTarget[FactoryTarget[\"Pipe\"] = 3] = \"Pipe\";\n FactoryTarget[FactoryTarget[\"NgModule\"] = 4] = \"NgModule\";\n})(FactoryTarget || (FactoryTarget = {}));\nvar R3TemplateDependencyKind$1;\n(function (R3TemplateDependencyKind) {\n R3TemplateDependencyKind[R3TemplateDependencyKind[\"Directive\"] = 0] = \"Directive\";\n R3TemplateDependencyKind[R3TemplateDependencyKind[\"Pipe\"] = 1] = \"Pipe\";\n R3TemplateDependencyKind[R3TemplateDependencyKind[\"NgModule\"] = 2] = \"NgModule\";\n})(R3TemplateDependencyKind$1 || (R3TemplateDependencyKind$1 = {}));\nvar ViewEncapsulation;\n(function (ViewEncapsulation) {\n ViewEncapsulation[ViewEncapsulation[\"Emulated\"] = 0] = \"Emulated\";\n ViewEncapsulation[ViewEncapsulation[\"None\"] = 2] = \"None\";\n ViewEncapsulation[ViewEncapsulation[\"ShadowDom\"] = 3] = \"ShadowDom\";\n ViewEncapsulation[ViewEncapsulation[\"ExperimentalIsolatedShadowDom\"] = 4] = \"ExperimentalIsolatedShadowDom\";\n})(ViewEncapsulation || (ViewEncapsulation = {}));\n\nlet textEncoder;\nfunction digest$1(message) {\n return message.id || computeDigest(message);\n}\nfunction computeDigest(message) {\n return sha1(serializeNodes(message.nodes).join('') + `[${message.meaning}]`);\n}\nfunction decimalDigest(message) {\n return message.id || computeDecimalDigest(message);\n}\nfunction computeDecimalDigest(message) {\n const visitor = new _SerializerIgnoreIcuExpVisitor();\n const parts = message.nodes.map(a => a.visit(visitor, null));\n return computeMsgId(parts.join(''), message.meaning);\n}\nclass _SerializerVisitor {\n visitText(text, context) {\n return text.value;\n }\n visitContainer(container, context) {\n return `[${container.children.map(child => child.visit(this)).join(', ')}]`;\n }\n visitIcu(icu, context) {\n const strCases = Object.keys(icu.cases).map(k => `${k} {${icu.cases[k].visit(this)}}`);\n return `{${icu.expression}, ${icu.type}, ${strCases.join(', ')}}`;\n }\n visitTagPlaceholder(ph, context) {\n return ph.isVoid ? `<ph tag name=\"${ph.startName}\"/>` : `<ph tag name=\"${ph.startName}\">${ph.children.map(child => child.visit(this)).join(', ')}</ph name=\"${ph.closeName}\">`;\n }\n visitPlaceholder(ph, context) {\n return ph.value ? `<ph name=\"${ph.name}\">${ph.value}</ph>` : `<ph name=\"${ph.name}\"/>`;\n }\n visitIcuPlaceholder(ph, context) {\n return `<ph icu name=\"${ph.name}\">${ph.value.visit(this)}</ph>`;\n }\n visitBlockPlaceholder(ph, context) {\n return `<ph block name=\"${ph.startName}\">${ph.children.map(child => child.visit(this)).join(', ')}</ph name=\"${ph.closeName}\">`;\n }\n}\nconst serializerVisitor$1 = new _SerializerVisitor();\nfunction serializeNodes(nodes) {\n return nodes.map(a => a.visit(serializerVisitor$1, null));\n}\nclass _SerializerIgnoreIcuExpVisitor extends _SerializerVisitor {\n visitIcu(icu) {\n let strCases = Object.keys(icu.cases).map(k => `${k} {${icu.cases[k].visit(this)}}`);\n return `{${icu.type}, ${strCases.join(', ')}}`;\n }\n}\nfunction sha1(str) {\n textEncoder ??= new TextEncoder();\n const utf8 = [...textEncoder.encode(str)];\n const words32 = bytesToWords32(utf8, Endian.Big);\n const len = utf8.length * 8;\n const w = new Uint32Array(80);\n let a = 0x67452301,\n b = 0xefcdab89,\n c = 0x98badcfe,\n d = 0x10325476,\n e = 0xc3d2e1f0;\n words32[len >> 5] |= 0x80 << 24 - len % 32;\n words32[(len + 64 >> 9 << 4) + 15] = len;\n for (let i = 0; i < words32.length; i += 16) {\n const h0 = a,\n h1 = b,\n h2 = c,\n h3 = d,\n h4 = e;\n for (let j = 0; j < 80; j++) {\n if (j < 16) {\n w[j] = words32[i + j];\n } else {\n w[j] = rol32(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1);\n }\n const fkVal = fk(j, b, c, d);\n const f = fkVal[0];\n const k = fkVal[1];\n const temp = [rol32(a, 5), f, e, k, w[j]].reduce(add32);\n e = d;\n d = c;\n c = rol32(b, 30);\n b = a;\n a = temp;\n }\n a = add32(a, h0);\n b = add32(b, h1);\n c = add32(c, h2);\n d = add32(d, h3);\n e = add32(e, h4);\n }\n return toHexU32(a) + toHexU32(b) + toHexU32(c) + toHexU32(d) + toHexU32(e);\n}\nfunction toHexU32(value) {\n return (value >>> 0).toString(16).padStart(8, '0');\n}\nfunction fk(index, b, c, d) {\n if (index < 20) {\n return [b & c | ~b & d, 0x5a827999];\n }\n if (index < 40) {\n return [b ^ c ^ d, 0x6ed9eba1];\n }\n if (index < 60) {\n return [b & c | b & d | c & d, 0x8f1bbcdc];\n }\n return [b ^ c ^ d, 0xca62c1d6];\n}\nfunction fingerprint(str) {\n textEncoder ??= new TextEncoder();\n const utf8 = textEncoder.encode(str);\n const view = new DataView(utf8.buffer, utf8.byteOffset, utf8.byteLength);\n let hi = hash32(view, utf8.length, 0);\n let lo = hash32(view, utf8.length, 102072);\n if (hi == 0 && (lo == 0 || lo == 1)) {\n hi = hi ^ 0x130f9bef;\n lo = lo ^ -1801410264;\n }\n return BigInt.asUintN(32, BigInt(hi)) << BigInt(32) | BigInt.asUintN(32, BigInt(lo));\n}\nfunction computeMsgId(msg, meaning = '') {\n let msgFingerprint = fingerprint(msg);\n if (meaning) {\n msgFingerprint = BigInt.asUintN(64, msgFingerprint << BigInt(1)) | msgFingerprint >> BigInt(63) & BigInt(1);\n msgFingerprint += fingerprint(meaning);\n }\n return BigInt.asUintN(63, msgFingerprint).toString();\n}\nfunction hash32(view, length, c) {\n let a = 0x9e3779b9,\n b = 0x9e3779b9;\n let index = 0;\n const end = length - 12;\n for (; index <= end; index += 12) {\n a += view.getUint32(index, true);\n b += view.getUint32(index + 4, true);\n c += view.getUint32(index + 8, true);\n const res = mix(a, b, c);\n a = res[0], b = res[1], c = res[2];\n }\n const remainder = length - index;\n c += length;\n if (remainder >= 4) {\n a += view.getUint32(index, true);\n index += 4;\n if (remainder >= 8) {\n b += view.getUint32(index, true);\n index += 4;\n if (remainder >= 9) {\n c += view.getUint8(index++) << 8;\n }\n if (remainder >= 10) {\n c += view.getUint8(index++) << 16;\n }\n if (remainder === 11) {\n c += view.getUint8(index++) << 24;\n }\n } else {\n if (remainder >= 5) {\n b += view.getUint8(index++);\n }\n if (remainder >= 6) {\n b += view.getUint8(index++) << 8;\n }\n if (remainder === 7) {\n b += view.getUint8(index++) << 16;\n }\n }\n } else {\n if (remainder >= 1) {\n a += view.getUint8(index++);\n }\n if (remainder >= 2) {\n a += view.getUint8(index++) << 8;\n }\n if (remainder === 3) {\n a += view.getUint8(index++) << 16;\n }\n }\n return mix(a, b, c)[2];\n}\nfunction mix(a, b, c) {\n a -= b;\n a -= c;\n a ^= c >>> 13;\n b -= c;\n b -= a;\n b ^= a << 8;\n c -= a;\n c -= b;\n c ^= b >>> 13;\n a -= b;\n a -= c;\n a ^= c >>> 12;\n b -= c;\n b -= a;\n b ^= a << 16;\n c -= a;\n c -= b;\n c ^= b >>> 5;\n a -= b;\n a -= c;\n a ^= c >>> 3;\n b -= c;\n b -= a;\n b ^= a << 10;\n c -= a;\n c -= b;\n c ^= b >>> 15;\n return [a, b, c];\n}\nvar Endian;\n(function (Endian) {\n Endian[Endian[\"Little\"] = 0] = \"Little\";\n Endian[Endian[\"Big\"] = 1] = \"Big\";\n})(Endian || (Endian = {}));\nfunction add32(a, b) {\n return add32to64(a, b)[1];\n}\nfunction add32to64(a, b) {\n const low = (a & 0xffff) + (b & 0xffff);\n const high = (a >>> 16) + (b >>> 16) + (low >>> 16);\n return [high >>> 16, high << 16 | low & 0xffff];\n}\nfunction rol32(a, count) {\n return a << count | a >>> 32 - count;\n}\nfunction bytesToWords32(bytes, endian) {\n const size = bytes.length + 3 >>> 2;\n const words32 = [];\n for (let i = 0; i < size; i++) {\n words32[i] = wordAt(bytes, i * 4, endian);\n }\n return words32;\n}\nfunction byteAt(bytes, index) {\n return index >= bytes.length ? 0 : bytes[index];\n}\nfunction wordAt(bytes, index, endian) {\n let word = 0;\n if (endian === Endian.Big) {\n for (let i = 0; i < 4; i++) {\n word += byteAt(bytes, index + i) << 24 - 8 * i;\n }\n } else {\n for (let i = 0; i < 4; i++) {\n word += byteAt(bytes, index + i) << 8 * i;\n }\n }\n return word;\n}\n\nvar TypeModifier;\n(function (TypeModifier) {\n TypeModifier[TypeModifier[\"None\"] = 0] = \"None\";\n TypeModifier[TypeModifier[\"Const\"] = 1] = \"Const\";\n})(TypeModifier || (TypeModifier = {}));\nclass Type {\n modifiers;\n constructor(modifiers = TypeModifier.None) {\n this.modifiers = modifiers;\n }\n hasModifier(modifier) {\n return (this.modifiers & modifier) !== 0;\n }\n}\nvar BuiltinTypeName;\n(function (BuiltinTypeName) {\n BuiltinTypeName[BuiltinTypeName[\"Dynamic\"] = 0] = \"Dynamic\";\n BuiltinTypeName[BuiltinTypeName[\"Bool\"] = 1] = \"Bool\";\n BuiltinTypeName[BuiltinTypeName[\"String\"] = 2] = \"String\";\n BuiltinTypeName[BuiltinTypeName[\"Int\"] = 3] = \"Int\";\n BuiltinTypeName[BuiltinTypeName[\"Number\"] = 4] = \"Number\";\n BuiltinTypeName[BuiltinTypeName[\"Function\"] = 5] = \"Function\";\n BuiltinTypeName[BuiltinTypeName[\"Inferred\"] = 6] = \"Inferred\";\n BuiltinTypeName[BuiltinTypeName[\"None\"] = 7] = \"None\";\n})(BuiltinTypeName || (BuiltinTypeName = {}));\nclass BuiltinType extends Type {\n name;\n constructor(name, modifiers) {\n super(modifiers);\n this.name = name;\n }\n visitType(visitor, context) {\n return visitor.visitBuiltinType(this, context);\n }\n}\nclass ExpressionType extends Type {\n value;\n typeParams;\n constructor(value, modifiers, typeParams = null) {\n super(modifiers);\n this.value = value;\n this.typeParams = typeParams;\n }\n visitType(visitor, context) {\n return visitor.visitExpressionType(this, context);\n }\n}\nclass ArrayType extends Type {\n of;\n constructor(of, modifiers) {\n super(modifiers);\n this.of = of;\n }\n visitType(visitor, context) {\n return visitor.visitArrayType(this, context);\n }\n}\nclass MapType extends Type {\n valueType;\n constructor(valueType, modifiers) {\n super(modifiers);\n this.valueType = valueType || null;\n }\n visitType(visitor, context) {\n return visitor.visitMapType(this, context);\n }\n}\nclass TransplantedType extends Type {\n type;\n constructor(type, modifiers) {\n super(modifiers);\n this.type = type;\n }\n visitType(visitor, context) {\n return visitor.visitTransplantedType(this, context);\n }\n}\nconst DYNAMIC_TYPE = new BuiltinType(BuiltinTypeName.Dynamic);\nconst INFERRED_TYPE = new BuiltinType(BuiltinTypeName.Inferred);\nconst BOOL_TYPE = new BuiltinType(BuiltinTypeName.Bool);\nconst INT_TYPE = new BuiltinType(BuiltinTypeName.Int);\nconst NUMBER_TYPE = new BuiltinType(BuiltinTypeName.Number);\nconst STRING_TYPE = new BuiltinType(BuiltinTypeName.String);\nconst FUNCTION_TYPE = new BuiltinType(BuiltinTypeName.Function);\nconst NONE_TYPE = new BuiltinType(BuiltinTypeName.None);\nvar UnaryOperator;\n(function (UnaryOperator) {\n UnaryOperator[UnaryOperator[\"Minus\"] = 0] = \"Minus\";\n UnaryOperator[UnaryOperator[\"Plus\"] = 1] = \"Plus\";\n})(UnaryOperator || (UnaryOperator = {}));\nvar BinaryOperator;\n(function (BinaryOperator) {\n BinaryOperator[BinaryOperator[\"Equals\"] = 0] = \"Equals\";\n BinaryOperator[BinaryOperator[\"NotEquals\"] = 1] = \"NotEquals\";\n BinaryOperator[BinaryOperator[\"Assign\"] = 2] = \"Assign\";\n BinaryOperator[BinaryOperator[\"Identical\"] = 3] = \"Identical\";\n BinaryOperator[BinaryOperator[\"NotIdentical\"] = 4] = \"NotIdentical\";\n BinaryOperator[BinaryOperator[\"Minus\"] = 5] = \"Minus\";\n BinaryOperator[BinaryOperator[\"Plus\"] = 6] = \"Plus\";\n BinaryOperator[BinaryOperator[\"Divide\"] = 7] = \"Divide\";\n BinaryOperator[BinaryOperator[\"Multiply\"] = 8] = \"Multiply\";\n BinaryOperator[BinaryOperator[\"Modulo\"] = 9] = \"Modulo\";\n BinaryOperator[BinaryOperator[\"And\"] = 10] = \"And\";\n BinaryOperator[BinaryOperator[\"Or\"] = 11] = \"Or\";\n BinaryOperator[BinaryOperator[\"BitwiseOr\"] = 12] = \"BitwiseOr\";\n BinaryOperator[BinaryOperator[\"BitwiseAnd\"] = 13] = \"BitwiseAnd\";\n BinaryOperator[BinaryOperator[\"Lower\"] = 14] = \"Lower\";\n BinaryOperator[BinaryOperator[\"LowerEquals\"] = 15] = \"LowerEquals\";\n BinaryOperator[BinaryOperator[\"Bigger\"] = 16] = \"Bigger\";\n BinaryOperator[BinaryOperator[\"BiggerEquals\"] = 17] = \"BiggerEquals\";\n BinaryOperator[BinaryOperator[\"NullishCoalesce\"] = 18] = \"NullishCoalesce\";\n BinaryOperator[BinaryOperator[\"Exponentiation\"] = 19] = \"Exponentiation\";\n BinaryOperator[BinaryOperator[\"In\"] = 20] = \"In\";\n BinaryOperator[BinaryOperator[\"InstanceOf\"] = 21] = \"InstanceOf\";\n BinaryOperator[BinaryOperator[\"AdditionAssignment\"] = 22] = \"AdditionAssignment\";\n BinaryOperator[BinaryOperator[\"SubtractionAssignment\"] = 23] = \"SubtractionAssignment\";\n BinaryOperator[BinaryOperator[\"MultiplicationAssignment\"] = 24] = \"MultiplicationAssignment\";\n BinaryOperator[BinaryOperator[\"DivisionAssignment\"] = 25] = \"DivisionAssignment\";\n BinaryOperator[BinaryOperator[\"RemainderAssignment\"] = 26] = \"RemainderAssignment\";\n BinaryOperator[BinaryOperator[\"ExponentiationAssignment\"] = 27] = \"ExponentiationAssignment\";\n BinaryOperator[BinaryOperator[\"AndAssignment\"] = 28] = \"AndAssignment\";\n BinaryOperator[BinaryOperator[\"OrAssignment\"] = 29] = \"OrAssignment\";\n BinaryOperator[BinaryOperator[\"NullishCoalesceAssignment\"] = 30] = \"NullishCoalesceAssignment\";\n})(BinaryOperator || (BinaryOperator = {}));\nfunction nullSafeIsEquivalent(base, other) {\n if (base == null || other == null) {\n return base == other;\n }\n return base.isEquivalent(other);\n}\nfunction areAllEquivalentPredicate(base, other, equivalentPredicate) {\n const len = base.length;\n if (len !== other.length) {\n return false;\n }\n for (let i = 0; i < len; i++) {\n if (!equivalentPredicate(base[i], other[i])) {\n return false;\n }\n }\n return true;\n}\nfunction areAllEquivalent(base, other) {\n return areAllEquivalentPredicate(base, other, (baseElement, otherElement) => baseElement.isEquivalent(otherElement));\n}\nclass Expression {\n type;\n sourceSpan;\n constructor(type, sourceSpan) {\n this.type = type || null;\n this.sourceSpan = sourceSpan || null;\n }\n prop(name, sourceSpan) {\n return new ReadPropExpr(this, name, null, sourceSpan);\n }\n key(index, type, sourceSpan) {\n return new ReadKeyExpr(this, index, type, sourceSpan);\n }\n callFn(params, sourceSpan, pure) {\n return new InvokeFunctionExpr(this, params, null, sourceSpan, pure);\n }\n instantiate(params, type, sourceSpan) {\n return new InstantiateExpr(this, params, type, sourceSpan);\n }\n conditional(trueCase, falseCase = null, sourceSpan) {\n return new ConditionalExpr(this, trueCase, falseCase, null, sourceSpan);\n }\n equals(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Equals, this, rhs, null, sourceSpan);\n }\n notEquals(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.NotEquals, this, rhs, null, sourceSpan);\n }\n identical(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Identical, this, rhs, null, sourceSpan);\n }\n notIdentical(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.NotIdentical, this, rhs, null, sourceSpan);\n }\n minus(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Minus, this, rhs, null, sourceSpan);\n }\n plus(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Plus, this, rhs, null, sourceSpan);\n }\n divide(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Divide, this, rhs, null, sourceSpan);\n }\n multiply(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Multiply, this, rhs, null, sourceSpan);\n }\n modulo(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Modulo, this, rhs, null, sourceSpan);\n }\n power(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Exponentiation, this, rhs, null, sourceSpan);\n }\n and(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.And, this, rhs, null, sourceSpan);\n }\n bitwiseOr(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.BitwiseOr, this, rhs, null, sourceSpan);\n }\n bitwiseAnd(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.BitwiseAnd, this, rhs, null, sourceSpan);\n }\n or(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Or, this, rhs, null, sourceSpan);\n }\n lower(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Lower, this, rhs, null, sourceSpan);\n }\n lowerEquals(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.LowerEquals, this, rhs, null, sourceSpan);\n }\n bigger(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Bigger, this, rhs, null, sourceSpan);\n }\n biggerEquals(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.BiggerEquals, this, rhs, null, sourceSpan);\n }\n isBlank(sourceSpan) {\n return this.equals(TYPED_NULL_EXPR, sourceSpan);\n }\n nullishCoalesce(rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.NullishCoalesce, this, rhs, null, sourceSpan);\n }\n toStmt() {\n return new ExpressionStatement(this, null);\n }\n}\nclass ReadVarExpr extends Expression {\n name;\n constructor(name, type, sourceSpan) {\n super(type, sourceSpan);\n this.name = name;\n }\n isEquivalent(e) {\n return e instanceof ReadVarExpr && this.name === e.name;\n }\n isConstant() {\n return false;\n }\n visitExpression(visitor, context) {\n return visitor.visitReadVarExpr(this, context);\n }\n clone() {\n return new ReadVarExpr(this.name, this.type, this.sourceSpan);\n }\n set(value) {\n return new BinaryOperatorExpr(BinaryOperator.Assign, this, value, null, this.sourceSpan);\n }\n}\nclass TypeofExpr extends Expression {\n expr;\n constructor(expr, type, sourceSpan) {\n super(type, sourceSpan);\n this.expr = expr;\n }\n visitExpression(visitor, context) {\n return visitor.visitTypeofExpr(this, context);\n }\n isEquivalent(e) {\n return e instanceof TypeofExpr && e.expr.isEquivalent(this.expr);\n }\n isConstant() {\n return this.expr.isConstant();\n }\n clone() {\n return new TypeofExpr(this.expr.clone());\n }\n}\nclass VoidExpr extends Expression {\n expr;\n constructor(expr, type, sourceSpan) {\n super(type, sourceSpan);\n this.expr = expr;\n }\n visitExpression(visitor, context) {\n return visitor.visitVoidExpr(this, context);\n }\n isEquivalent(e) {\n return e instanceof VoidExpr && e.expr.isEquivalent(this.expr);\n }\n isConstant() {\n return this.expr.isConstant();\n }\n clone() {\n return new VoidExpr(this.expr.clone());\n }\n}\nclass WrappedNodeExpr extends Expression {\n node;\n constructor(node, type, sourceSpan) {\n super(type, sourceSpan);\n this.node = node;\n }\n isEquivalent(e) {\n return e instanceof WrappedNodeExpr && this.node === e.node;\n }\n isConstant() {\n return false;\n }\n visitExpression(visitor, context) {\n return visitor.visitWrappedNodeExpr(this, context);\n }\n clone() {\n return new WrappedNodeExpr(this.node, this.type, this.sourceSpan);\n }\n}\nclass InvokeFunctionExpr extends Expression {\n fn;\n args;\n pure;\n constructor(fn, args, type, sourceSpan, pure = false) {\n super(type, sourceSpan);\n this.fn = fn;\n this.args = args;\n this.pure = pure;\n }\n get receiver() {\n return this.fn;\n }\n isEquivalent(e) {\n return e instanceof InvokeFunctionExpr && this.fn.isEquivalent(e.fn) && areAllEquivalent(this.args, e.args) && this.pure === e.pure;\n }\n isConstant() {\n return false;\n }\n visitExpression(visitor, context) {\n return visitor.visitInvokeFunctionExpr(this, context);\n }\n clone() {\n return new InvokeFunctionExpr(this.fn.clone(), this.args.map(arg => arg.clone()), this.type, this.sourceSpan, this.pure);\n }\n}\nclass TaggedTemplateLiteralExpr extends Expression {\n tag;\n template;\n constructor(tag, template, type, sourceSpan) {\n super(type, sourceSpan);\n this.tag = tag;\n this.template = template;\n }\n isEquivalent(e) {\n return e instanceof TaggedTemplateLiteralExpr && this.tag.isEquivalent(e.tag) && this.template.isEquivalent(e.template);\n }\n isConstant() {\n return false;\n }\n visitExpression(visitor, context) {\n return visitor.visitTaggedTemplateLiteralExpr(this, context);\n }\n clone() {\n return new TaggedTemplateLiteralExpr(this.tag.clone(), this.template.clone(), this.type, this.sourceSpan);\n }\n}\nclass InstantiateExpr extends Expression {\n classExpr;\n args;\n constructor(classExpr, args, type, sourceSpan) {\n super(type, sourceSpan);\n this.classExpr = classExpr;\n this.args = args;\n }\n isEquivalent(e) {\n return e instanceof InstantiateExpr && this.classExpr.isEquivalent(e.classExpr) && areAllEquivalent(this.args, e.args);\n }\n isConstant() {\n return false;\n }\n visitExpression(visitor, context) {\n return visitor.visitInstantiateExpr(this, context);\n }\n clone() {\n return new InstantiateExpr(this.classExpr.clone(), this.args.map(arg => arg.clone()), this.type, this.sourceSpan);\n }\n}\nclass RegularExpressionLiteralExpr extends Expression {\n body;\n flags;\n constructor(body, flags, sourceSpan) {\n super(null, sourceSpan);\n this.body = body;\n this.flags = flags;\n }\n isEquivalent(e) {\n return e instanceof RegularExpressionLiteralExpr && this.body === e.body && this.flags === e.flags;\n }\n isConstant() {\n return true;\n }\n visitExpression(visitor, context) {\n return visitor.visitRegularExpressionLiteral(this, context);\n }\n clone() {\n return new RegularExpressionLiteralExpr(this.body, this.flags, this.sourceSpan);\n }\n}\nclass LiteralExpr extends Expression {\n value;\n constructor(value, type, sourceSpan) {\n super(type, sourceSpan);\n this.value = value;\n }\n isEquivalent(e) {\n return e instanceof LiteralExpr && this.value === e.value;\n }\n isConstant() {\n return true;\n }\n visitExpression(visitor, context) {\n return visitor.visitLiteralExpr(this, context);\n }\n clone() {\n return new LiteralExpr(this.value, this.type, this.sourceSpan);\n }\n}\nclass TemplateLiteralExpr extends Expression {\n elements;\n expressions;\n constructor(elements, expressions, sourceSpan) {\n super(null, sourceSpan);\n this.elements = elements;\n this.expressions = expressions;\n }\n isEquivalent(e) {\n return e instanceof TemplateLiteralExpr && areAllEquivalentPredicate(this.elements, e.elements, (a, b) => a.text === b.text) && areAllEquivalent(this.expressions, e.expressions);\n }\n isConstant() {\n return false;\n }\n visitExpression(visitor, context) {\n return visitor.visitTemplateLiteralExpr(this, context);\n }\n clone() {\n return new TemplateLiteralExpr(this.elements.map(el => el.clone()), this.expressions.map(expr => expr.clone()));\n }\n}\nclass TemplateLiteralElementExpr extends Expression {\n text;\n rawText;\n constructor(text, sourceSpan, rawText) {\n super(STRING_TYPE, sourceSpan);\n this.text = text;\n this.rawText = rawText ?? escapeForTemplateLiteral(escapeSlashes(text));\n }\n visitExpression(visitor, context) {\n return visitor.visitTemplateLiteralElementExpr(this, context);\n }\n isEquivalent(e) {\n return e instanceof TemplateLiteralElementExpr && e.text === this.text && e.rawText === this.rawText;\n }\n isConstant() {\n return true;\n }\n clone() {\n return new TemplateLiteralElementExpr(this.text, this.sourceSpan, this.rawText);\n }\n}\nclass LiteralPiece {\n text;\n sourceSpan;\n constructor(text, sourceSpan) {\n this.text = text;\n this.sourceSpan = sourceSpan;\n }\n}\nclass PlaceholderPiece {\n text;\n sourceSpan;\n associatedMessage;\n constructor(text, sourceSpan, associatedMessage) {\n this.text = text;\n this.sourceSpan = sourceSpan;\n this.associatedMessage = associatedMessage;\n }\n}\nconst MEANING_SEPARATOR$1 = '|';\nconst ID_SEPARATOR$1 = '@@';\nconst LEGACY_ID_INDICATOR = '␟';\nclass LocalizedString extends Expression {\n metaBlock;\n messageParts;\n placeHolderNames;\n expressions;\n constructor(metaBlock, messageParts, placeHolderNames, expressions, sourceSpan) {\n super(STRING_TYPE, sourceSpan);\n this.metaBlock = metaBlock;\n this.messageParts = messageParts;\n this.placeHolderNames = placeHolderNames;\n this.expressions = expressions;\n }\n isEquivalent(e) {\n return false;\n }\n isConstant() {\n return false;\n }\n visitExpression(visitor, context) {\n return visitor.visitLocalizedString(this, context);\n }\n clone() {\n return new LocalizedString(this.metaBlock, this.messageParts, this.placeHolderNames, this.expressions.map(expr => expr.clone()), this.sourceSpan);\n }\n serializeI18nHead() {\n let metaBlock = this.metaBlock.description || '';\n if (this.metaBlock.meaning) {\n metaBlock = `${this.metaBlock.meaning}${MEANING_SEPARATOR$1}${metaBlock}`;\n }\n if (this.metaBlock.customId) {\n metaBlock = `${metaBlock}${ID_SEPARATOR$1}${this.metaBlock.customId}`;\n }\n if (this.metaBlock.legacyIds) {\n this.metaBlock.legacyIds.forEach(legacyId => {\n metaBlock = `${metaBlock}${LEGACY_ID_INDICATOR}${legacyId}`;\n });\n }\n return createCookedRawString(metaBlock, this.messageParts[0].text, this.getMessagePartSourceSpan(0));\n }\n getMessagePartSourceSpan(i) {\n return this.messageParts[i]?.sourceSpan ?? this.sourceSpan;\n }\n getPlaceholderSourceSpan(i) {\n return this.placeHolderNames[i]?.sourceSpan ?? this.expressions[i]?.sourceSpan ?? this.sourceSpan;\n }\n serializeI18nTemplatePart(partIndex) {\n const placeholder = this.placeHolderNames[partIndex - 1];\n const messagePart = this.messageParts[partIndex];\n let metaBlock = placeholder.text;\n if (placeholder.associatedMessage?.legacyIds.length === 0) {\n metaBlock += `${ID_SEPARATOR$1}${computeMsgId(placeholder.associatedMessage.messageString, placeholder.associatedMessage.meaning)}`;\n }\n return createCookedRawString(metaBlock, messagePart.text, this.getMessagePartSourceSpan(partIndex));\n }\n}\nconst escapeSlashes = str => str.replace(/\\\\/g, '\\\\\\\\');\nconst escapeStartingColon = str => str.replace(/^:/, '\\\\:');\nconst escapeColons = str => str.replace(/:/g, '\\\\:');\nconst escapeForTemplateLiteral = str => str.replace(/`/g, '\\\\`').replace(/\\${/g, '$\\\\{');\nfunction createCookedRawString(metaBlock, messagePart, range) {\n if (metaBlock === '') {\n return {\n cooked: messagePart,\n raw: escapeForTemplateLiteral(escapeStartingColon(escapeSlashes(messagePart))),\n range\n };\n } else {\n return {\n cooked: `:${metaBlock}:${messagePart}`,\n raw: escapeForTemplateLiteral(`:${escapeColons(escapeSlashes(metaBlock))}:${escapeSlashes(messagePart)}`),\n range\n };\n }\n}\nclass ExternalExpr extends Expression {\n value;\n typeParams;\n constructor(value, type, typeParams = null, sourceSpan) {\n super(type, sourceSpan);\n this.value = value;\n this.typeParams = typeParams;\n }\n isEquivalent(e) {\n return e instanceof ExternalExpr && this.value.name === e.value.name && this.value.moduleName === e.value.moduleName;\n }\n isConstant() {\n return false;\n }\n visitExpression(visitor, context) {\n return visitor.visitExternalExpr(this, context);\n }\n clone() {\n return new ExternalExpr(this.value, this.type, this.typeParams, this.sourceSpan);\n }\n}\nclass ExternalReference {\n moduleName;\n name;\n constructor(moduleName, name) {\n this.moduleName = moduleName;\n this.name = name;\n }\n}\nclass ConditionalExpr extends Expression {\n condition;\n falseCase;\n trueCase;\n constructor(condition, trueCase, falseCase = null, type, sourceSpan) {\n super(type || trueCase.type, sourceSpan);\n this.condition = condition;\n this.falseCase = falseCase;\n this.trueCase = trueCase;\n }\n isEquivalent(e) {\n return e instanceof ConditionalExpr && this.condition.isEquivalent(e.condition) && this.trueCase.isEquivalent(e.trueCase) && nullSafeIsEquivalent(this.falseCase, e.falseCase);\n }\n isConstant() {\n return false;\n }\n visitExpression(visitor, context) {\n return visitor.visitConditionalExpr(this, context);\n }\n clone() {\n return new ConditionalExpr(this.condition.clone(), this.trueCase.clone(), this.falseCase?.clone(), this.type, this.sourceSpan);\n }\n}\nclass DynamicImportExpr extends Expression {\n url;\n urlComment;\n constructor(url, sourceSpan, urlComment) {\n super(null, sourceSpan);\n this.url = url;\n this.urlComment = urlComment;\n }\n isEquivalent(e) {\n return e instanceof DynamicImportExpr && this.url === e.url && this.urlComment === e.urlComment;\n }\n isConstant() {\n return false;\n }\n visitExpression(visitor, context) {\n return visitor.visitDynamicImportExpr(this, context);\n }\n clone() {\n return new DynamicImportExpr(typeof this.url === 'string' ? this.url : this.url.clone(), this.sourceSpan, this.urlComment);\n }\n}\nclass NotExpr extends Expression {\n condition;\n constructor(condition, sourceSpan) {\n super(BOOL_TYPE, sourceSpan);\n this.condition = condition;\n }\n isEquivalent(e) {\n return e instanceof NotExpr && this.condition.isEquivalent(e.condition);\n }\n isConstant() {\n return false;\n }\n visitExpression(visitor, context) {\n return visitor.visitNotExpr(this, context);\n }\n clone() {\n return new NotExpr(this.condition.clone(), this.sourceSpan);\n }\n}\nclass FnParam {\n name;\n type;\n constructor(name, type = null) {\n this.name = name;\n this.type = type;\n }\n isEquivalent(param) {\n return this.name === param.name;\n }\n clone() {\n return new FnParam(this.name, this.type);\n }\n}\nclass FunctionExpr extends Expression {\n params;\n statements;\n name;\n constructor(params, statements, type, sourceSpan, name) {\n super(type, sourceSpan);\n this.params = params;\n this.statements = statements;\n this.name = name;\n }\n isEquivalent(e) {\n return (e instanceof FunctionExpr || e instanceof DeclareFunctionStmt) && areAllEquivalent(this.params, e.params) && areAllEquivalent(this.statements, e.statements);\n }\n isConstant() {\n return false;\n }\n visitExpression(visitor, context) {\n return visitor.visitFunctionExpr(this, context);\n }\n toDeclStmt(name, modifiers) {\n return new DeclareFunctionStmt(name, this.params, this.statements, this.type, modifiers, this.sourceSpan);\n }\n clone() {\n return new FunctionExpr(this.params.map(p => p.clone()), this.statements, this.type, this.sourceSpan, this.name);\n }\n}\nlet ArrowFunctionExpr$1 = class ArrowFunctionExpr extends Expression {\n params;\n body;\n constructor(params, body, type, sourceSpan) {\n super(type, sourceSpan);\n this.params = params;\n this.body = body;\n }\n isEquivalent(e) {\n if (!(e instanceof ArrowFunctionExpr) || !areAllEquivalent(this.params, e.params)) {\n return false;\n }\n if (this.body instanceof Expression && e.body instanceof Expression) {\n return this.body.isEquivalent(e.body);\n }\n if (Array.isArray(this.body) && Array.isArray(e.body)) {\n return areAllEquivalent(this.body, e.body);\n }\n return false;\n }\n isConstant() {\n return false;\n }\n visitExpression(visitor, context) {\n return visitor.visitArrowFunctionExpr(this, context);\n }\n clone() {\n return new ArrowFunctionExpr(this.params.map(p => p.clone()), Array.isArray(this.body) ? this.body : this.body.clone(), this.type, this.sourceSpan);\n }\n toDeclStmt(name, modifiers) {\n return new DeclareVarStmt(name, this, INFERRED_TYPE, modifiers, this.sourceSpan);\n }\n};\nclass UnaryOperatorExpr extends Expression {\n operator;\n expr;\n parens;\n constructor(operator, expr, type, sourceSpan, parens = true) {\n super(type || NUMBER_TYPE, sourceSpan);\n this.operator = operator;\n this.expr = expr;\n this.parens = parens;\n }\n isEquivalent(e) {\n return e instanceof UnaryOperatorExpr && this.operator === e.operator && this.expr.isEquivalent(e.expr);\n }\n isConstant() {\n return false;\n }\n visitExpression(visitor, context) {\n return visitor.visitUnaryOperatorExpr(this, context);\n }\n clone() {\n return new UnaryOperatorExpr(this.operator, this.expr.clone(), this.type, this.sourceSpan, this.parens);\n }\n}\nclass ParenthesizedExpr extends Expression {\n expr;\n constructor(expr, type, sourceSpan) {\n super(type, sourceSpan);\n this.expr = expr;\n }\n visitExpression(visitor, context) {\n return visitor.visitParenthesizedExpr(this, context);\n }\n isEquivalent(e) {\n return e instanceof ParenthesizedExpr && e.expr.isEquivalent(this.expr);\n }\n isConstant() {\n return this.expr.isConstant();\n }\n clone() {\n return new ParenthesizedExpr(this.expr.clone());\n }\n}\nclass BinaryOperatorExpr extends Expression {\n operator;\n rhs;\n lhs;\n constructor(operator, lhs, rhs, type, sourceSpan) {\n super(type || lhs.type, sourceSpan);\n this.operator = operator;\n this.rhs = rhs;\n this.lhs = lhs;\n }\n isEquivalent(e) {\n return e instanceof BinaryOperatorExpr && this.operator === e.operator && this.lhs.isEquivalent(e.lhs) && this.rhs.isEquivalent(e.rhs);\n }\n isConstant() {\n return false;\n }\n visitExpression(visitor, context) {\n return visitor.visitBinaryOperatorExpr(this, context);\n }\n clone() {\n return new BinaryOperatorExpr(this.operator, this.lhs.clone(), this.rhs.clone(), this.type, this.sourceSpan);\n }\n isAssignment() {\n const op = this.operator;\n return op === BinaryOperator.Assign || op === BinaryOperator.AdditionAssignment || op === BinaryOperator.SubtractionAssignment || op === BinaryOperator.MultiplicationAssignment || op === BinaryOperator.DivisionAssignment || op === BinaryOperator.RemainderAssignment || op === BinaryOperator.ExponentiationAssignment || op === BinaryOperator.AndAssignment || op === BinaryOperator.OrAssignment || op === BinaryOperator.NullishCoalesceAssignment;\n }\n}\nclass ReadPropExpr extends Expression {\n receiver;\n name;\n constructor(receiver, name, type, sourceSpan) {\n super(type, sourceSpan);\n this.receiver = receiver;\n this.name = name;\n }\n get index() {\n return this.name;\n }\n isEquivalent(e) {\n return e instanceof ReadPropExpr && this.receiver.isEquivalent(e.receiver) && this.name === e.name;\n }\n isConstant() {\n return false;\n }\n visitExpression(visitor, context) {\n return visitor.visitReadPropExpr(this, context);\n }\n set(value) {\n return new BinaryOperatorExpr(BinaryOperator.Assign, this.receiver.prop(this.name), value, null, this.sourceSpan);\n }\n clone() {\n return new ReadPropExpr(this.receiver.clone(), this.name, this.type, this.sourceSpan);\n }\n}\nclass ReadKeyExpr extends Expression {\n receiver;\n index;\n constructor(receiver, index, type, sourceSpan) {\n super(type, sourceSpan);\n this.receiver = receiver;\n this.index = index;\n }\n isEquivalent(e) {\n return e instanceof ReadKeyExpr && this.receiver.isEquivalent(e.receiver) && this.index.isEquivalent(e.index);\n }\n isConstant() {\n return false;\n }\n visitExpression(visitor, context) {\n return visitor.visitReadKeyExpr(this, context);\n }\n set(value) {\n return new BinaryOperatorExpr(BinaryOperator.Assign, this.receiver.key(this.index), value, null, this.sourceSpan);\n }\n clone() {\n return new ReadKeyExpr(this.receiver.clone(), this.index.clone(), this.type, this.sourceSpan);\n }\n}\nclass LiteralArrayExpr extends Expression {\n entries;\n constructor(entries, type, sourceSpan) {\n super(type, sourceSpan);\n this.entries = entries;\n }\n isConstant() {\n return this.entries.every(e => e.isConstant());\n }\n isEquivalent(e) {\n return e instanceof LiteralArrayExpr && areAllEquivalent(this.entries, e.entries);\n }\n visitExpression(visitor, context) {\n return visitor.visitLiteralArrayExpr(this, context);\n }\n clone() {\n return new LiteralArrayExpr(this.entries.map(e => e.clone()), this.type, this.sourceSpan);\n }\n}\nclass LiteralMapPropertyAssignment {\n key;\n value;\n quoted;\n constructor(key, value, quoted) {\n this.key = key;\n this.value = value;\n this.quoted = quoted;\n }\n isEquivalent(e) {\n return this.key === e.key && this.value.isEquivalent(e.value);\n }\n clone() {\n return new LiteralMapPropertyAssignment(this.key, this.value.clone(), this.quoted);\n }\n isConstant() {\n return this.value.isConstant();\n }\n}\nclass LiteralMapSpreadAssignment {\n expression;\n constructor(expression) {\n this.expression = expression;\n }\n isEquivalent(e) {\n return e instanceof LiteralMapSpreadAssignment && this.expression.isEquivalent(e.expression);\n }\n clone() {\n return new LiteralMapSpreadAssignment(this.expression.clone());\n }\n isConstant() {\n return this.expression.isConstant();\n }\n}\nclass LiteralMapExpr extends Expression {\n entries;\n valueType = null;\n constructor(entries, type, sourceSpan) {\n super(type, sourceSpan);\n this.entries = entries;\n if (type) {\n this.valueType = type.valueType;\n }\n }\n isEquivalent(e) {\n return e instanceof LiteralMapExpr && areAllEquivalent(this.entries, e.entries);\n }\n isConstant() {\n return this.entries.every(e => e.isConstant());\n }\n visitExpression(visitor, context) {\n return visitor.visitLiteralMapExpr(this, context);\n }\n clone() {\n const entriesClone = this.entries.map(entry => entry.clone());\n return new LiteralMapExpr(entriesClone, this.type, this.sourceSpan);\n }\n}\nclass CommaExpr extends Expression {\n parts;\n constructor(parts, sourceSpan) {\n super(parts[parts.length - 1].type, sourceSpan);\n this.parts = parts;\n }\n isEquivalent(e) {\n return e instanceof CommaExpr && areAllEquivalent(this.parts, e.parts);\n }\n isConstant() {\n return false;\n }\n visitExpression(visitor, context) {\n return visitor.visitCommaExpr(this, context);\n }\n clone() {\n return new CommaExpr(this.parts.map(p => p.clone()));\n }\n}\nclass SpreadElementExpr extends Expression {\n expression;\n constructor(expression, sourceSpan) {\n super(null, sourceSpan);\n this.expression = expression;\n }\n isEquivalent(e) {\n return e instanceof SpreadElementExpr && this.expression.isEquivalent(e.expression);\n }\n isConstant() {\n return this.expression.isConstant();\n }\n visitExpression(visitor, context) {\n return visitor.visitSpreadElementExpr(this, context);\n }\n clone() {\n return new SpreadElementExpr(this.expression.clone(), this.sourceSpan);\n }\n}\nconst NULL_EXPR = new LiteralExpr(null, null, null);\nconst TYPED_NULL_EXPR = new LiteralExpr(null, INFERRED_TYPE, null);\nvar StmtModifier;\n(function (StmtModifier) {\n StmtModifier[StmtModifier[\"None\"] = 0] = \"None\";\n StmtModifier[StmtModifier[\"Final\"] = 1] = \"Final\";\n StmtModifier[StmtModifier[\"Private\"] = 2] = \"Private\";\n StmtModifier[StmtModifier[\"Exported\"] = 4] = \"Exported\";\n StmtModifier[StmtModifier[\"Static\"] = 8] = \"Static\";\n})(StmtModifier || (StmtModifier = {}));\nclass LeadingComment {\n text;\n multiline;\n trailingNewline;\n constructor(text, multiline, trailingNewline) {\n this.text = text;\n this.multiline = multiline;\n this.trailingNewline = trailingNewline;\n }\n toString() {\n return this.multiline ? ` ${this.text} ` : this.text;\n }\n}\nclass JSDocComment extends LeadingComment {\n tags;\n constructor(tags) {\n super('', true, true);\n this.tags = tags;\n }\n toString() {\n return serializeTags(this.tags);\n }\n}\nclass Statement {\n modifiers;\n sourceSpan;\n leadingComments;\n constructor(modifiers = StmtModifier.None, sourceSpan = null, leadingComments) {\n this.modifiers = modifiers;\n this.sourceSpan = sourceSpan;\n this.leadingComments = leadingComments;\n }\n hasModifier(modifier) {\n return (this.modifiers & modifier) !== 0;\n }\n addLeadingComment(leadingComment) {\n this.leadingComments = this.leadingComments ?? [];\n this.leadingComments.push(leadingComment);\n }\n}\nclass DeclareVarStmt extends Statement {\n name;\n value;\n type;\n constructor(name, value, type, modifiers, sourceSpan, leadingComments) {\n super(modifiers, sourceSpan, leadingComments);\n this.name = name;\n this.value = value;\n this.type = type || value && value.type || null;\n }\n isEquivalent(stmt) {\n return stmt instanceof DeclareVarStmt && this.name === stmt.name && (this.value ? !!stmt.value && this.value.isEquivalent(stmt.value) : !stmt.value);\n }\n visitStatement(visitor, context) {\n return visitor.visitDeclareVarStmt(this, context);\n }\n}\nclass DeclareFunctionStmt extends Statement {\n name;\n params;\n statements;\n type;\n constructor(name, params, statements, type, modifiers, sourceSpan, leadingComments) {\n super(modifiers, sourceSpan, leadingComments);\n this.name = name;\n this.params = params;\n this.statements = statements;\n this.type = type || null;\n }\n isEquivalent(stmt) {\n return stmt instanceof DeclareFunctionStmt && areAllEquivalent(this.params, stmt.params) && areAllEquivalent(this.statements, stmt.statements);\n }\n visitStatement(visitor, context) {\n return visitor.visitDeclareFunctionStmt(this, context);\n }\n}\nclass ExpressionStatement extends Statement {\n expr;\n constructor(expr, sourceSpan, leadingComments) {\n super(StmtModifier.None, sourceSpan, leadingComments);\n this.expr = expr;\n }\n isEquivalent(stmt) {\n return stmt instanceof ExpressionStatement && this.expr.isEquivalent(stmt.expr);\n }\n visitStatement(visitor, context) {\n return visitor.visitExpressionStmt(this, context);\n }\n}\nclass ReturnStatement extends Statement {\n value;\n constructor(value, sourceSpan = null, leadingComments) {\n super(StmtModifier.None, sourceSpan, leadingComments);\n this.value = value;\n }\n isEquivalent(stmt) {\n return stmt instanceof ReturnStatement && this.value.isEquivalent(stmt.value);\n }\n visitStatement(visitor, context) {\n return visitor.visitReturnStmt(this, context);\n }\n}\nclass IfStmt extends Statement {\n condition;\n trueCase;\n falseCase;\n constructor(condition, trueCase, falseCase = [], sourceSpan, leadingComments) {\n super(StmtModifier.None, sourceSpan, leadingComments);\n this.condition = condition;\n this.trueCase = trueCase;\n this.falseCase = falseCase;\n }\n isEquivalent(stmt) {\n return stmt instanceof IfStmt && this.condition.isEquivalent(stmt.condition) && areAllEquivalent(this.trueCase, stmt.trueCase) && areAllEquivalent(this.falseCase, stmt.falseCase);\n }\n visitStatement(visitor, context) {\n return visitor.visitIfStmt(this, context);\n }\n}\nlet RecursiveAstVisitor$1 = class RecursiveAstVisitor {\n visitType(ast, context) {\n return ast;\n }\n visitExpression(ast, context) {\n if (ast.type) {\n ast.type.visitType(this, context);\n }\n return ast;\n }\n visitBuiltinType(type, context) {\n return this.visitType(type, context);\n }\n visitExpressionType(type, context) {\n type.value.visitExpression(this, context);\n if (type.typeParams !== null) {\n type.typeParams.forEach(param => this.visitType(param, context));\n }\n return this.visitType(type, context);\n }\n visitArrayType(type, context) {\n return this.visitType(type, context);\n }\n visitMapType(type, context) {\n return this.visitType(type, context);\n }\n visitTransplantedType(type, context) {\n return type;\n }\n visitWrappedNodeExpr(ast, context) {\n return ast;\n }\n visitReadVarExpr(ast, context) {\n return this.visitExpression(ast, context);\n }\n visitDynamicImportExpr(ast, context) {\n return this.visitExpression(ast, context);\n }\n visitInvokeFunctionExpr(ast, context) {\n ast.fn.visitExpression(this, context);\n this.visitAllExpressions(ast.args, context);\n return this.visitExpression(ast, context);\n }\n visitTaggedTemplateLiteralExpr(ast, context) {\n ast.tag.visitExpression(this, context);\n ast.template.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n visitInstantiateExpr(ast, context) {\n ast.classExpr.visitExpression(this, context);\n this.visitAllExpressions(ast.args, context);\n return this.visitExpression(ast, context);\n }\n visitLiteralExpr(ast, context) {\n return this.visitExpression(ast, context);\n }\n visitRegularExpressionLiteral(ast, context) {\n return this.visitExpression(ast, context);\n }\n visitLocalizedString(ast, context) {\n return this.visitExpression(ast, context);\n }\n visitExternalExpr(ast, context) {\n if (ast.typeParams) {\n ast.typeParams.forEach(type => type.visitType(this, context));\n }\n return this.visitExpression(ast, context);\n }\n visitConditionalExpr(ast, context) {\n ast.condition.visitExpression(this, context);\n ast.trueCase.visitExpression(this, context);\n ast.falseCase.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n visitNotExpr(ast, context) {\n ast.condition.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n visitFunctionExpr(ast, context) {\n this.visitAllStatements(ast.statements, context);\n return this.visitExpression(ast, context);\n }\n visitArrowFunctionExpr(ast, context) {\n if (Array.isArray(ast.body)) {\n this.visitAllStatements(ast.body, context);\n } else {\n ast.body.visitExpression(this, context);\n }\n return this.visitExpression(ast, context);\n }\n visitUnaryOperatorExpr(ast, context) {\n ast.expr.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n visitTypeofExpr(ast, context) {\n ast.expr.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n visitVoidExpr(ast, context) {\n ast.expr.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n visitBinaryOperatorExpr(ast, context) {\n ast.lhs.visitExpression(this, context);\n ast.rhs.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n visitReadPropExpr(ast, context) {\n ast.receiver.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n visitReadKeyExpr(ast, context) {\n ast.receiver.visitExpression(this, context);\n ast.index.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n visitLiteralArrayExpr(ast, context) {\n this.visitAllExpressions(ast.entries, context);\n return this.visitExpression(ast, context);\n }\n visitLiteralMapExpr(ast, context) {\n ast.entries.forEach(entry => {\n if (entry instanceof LiteralMapSpreadAssignment) {\n entry.expression.visitExpression(this, context);\n } else {\n entry.value.visitExpression(this, context);\n }\n });\n return this.visitExpression(ast, context);\n }\n visitCommaExpr(ast, context) {\n this.visitAllExpressions(ast.parts, context);\n return this.visitExpression(ast, context);\n }\n visitTemplateLiteralExpr(ast, context) {\n this.visitAllExpressions(ast.elements, context);\n this.visitAllExpressions(ast.expressions, context);\n return this.visitExpression(ast, context);\n }\n visitTemplateLiteralElementExpr(ast, context) {\n return this.visitExpression(ast, context);\n }\n visitParenthesizedExpr(ast, context) {\n ast.expr.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n visitSpreadElementExpr(ast, context) {\n ast.expression.visitExpression(this, context);\n return this.visitExpression(ast, context);\n }\n visitAllExpressions(exprs, context) {\n exprs.forEach(expr => expr.visitExpression(this, context));\n }\n visitDeclareVarStmt(stmt, context) {\n if (stmt.value) {\n stmt.value.visitExpression(this, context);\n }\n if (stmt.type) {\n stmt.type.visitType(this, context);\n }\n return stmt;\n }\n visitDeclareFunctionStmt(stmt, context) {\n this.visitAllStatements(stmt.statements, context);\n if (stmt.type) {\n stmt.type.visitType(this, context);\n }\n return stmt;\n }\n visitExpressionStmt(stmt, context) {\n stmt.expr.visitExpression(this, context);\n return stmt;\n }\n visitReturnStmt(stmt, context) {\n stmt.value.visitExpression(this, context);\n return stmt;\n }\n visitIfStmt(stmt, context) {\n stmt.condition.visitExpression(this, context);\n this.visitAllStatements(stmt.trueCase, context);\n this.visitAllStatements(stmt.falseCase, context);\n return stmt;\n }\n visitAllStatements(stmts, context) {\n stmts.forEach(stmt => stmt.visitStatement(this, context));\n }\n};\nfunction leadingComment(text, multiline = false, trailingNewline = true) {\n return new LeadingComment(text, multiline, trailingNewline);\n}\nfunction jsDocComment(tags = []) {\n return new JSDocComment(tags);\n}\nfunction variable(name, type, sourceSpan) {\n return new ReadVarExpr(name, type, sourceSpan);\n}\nfunction importExpr(id, typeParams = null, sourceSpan) {\n return new ExternalExpr(id, null, typeParams, sourceSpan);\n}\nfunction importType(id, typeParams, typeModifiers) {\n return id != null ? expressionType(importExpr(id, typeParams, null), typeModifiers) : null;\n}\nfunction expressionType(expr, typeModifiers, typeParams) {\n return new ExpressionType(expr, typeModifiers, typeParams);\n}\nfunction transplantedType(type, typeModifiers) {\n return new TransplantedType(type, typeModifiers);\n}\nfunction typeofExpr(expr) {\n return new TypeofExpr(expr);\n}\nfunction literalArr(values, type, sourceSpan) {\n return new LiteralArrayExpr(values, type, sourceSpan);\n}\nfunction literalMap(values, type = null) {\n return new LiteralMapExpr(values.map(e => new LiteralMapPropertyAssignment(e.key, e.value, e.quoted)), type, null);\n}\nfunction unary(operator, expr, type, sourceSpan) {\n return new UnaryOperatorExpr(operator, expr, type, sourceSpan);\n}\nfunction not(expr, sourceSpan) {\n return new NotExpr(expr, sourceSpan);\n}\nfunction fn(params, body, type, sourceSpan, name) {\n return new FunctionExpr(params, body, type, sourceSpan, name);\n}\nfunction arrowFn(params, body, type, sourceSpan) {\n return new ArrowFunctionExpr$1(params, body, type, sourceSpan);\n}\nfunction ifStmt(condition, thenClause, elseClause, sourceSpan, leadingComments) {\n return new IfStmt(condition, thenClause, elseClause, sourceSpan, leadingComments);\n}\nfunction taggedTemplate(tag, template, type, sourceSpan) {\n return new TaggedTemplateLiteralExpr(tag, template, type, sourceSpan);\n}\nfunction literal(value, type, sourceSpan) {\n return new LiteralExpr(value, type, sourceSpan);\n}\nfunction localizedString(metaBlock, messageParts, placeholderNames, expressions, sourceSpan) {\n return new LocalizedString(metaBlock, messageParts, placeholderNames, expressions, sourceSpan);\n}\nfunction isNull(exp) {\n return exp instanceof LiteralExpr && exp.value === null;\n}\nfunction tagToString(tag) {\n let out = '';\n if (tag.tagName) {\n out += ` @${tag.tagName}`;\n }\n if (tag.text) {\n if (tag.text.match(/\\/\\*|\\*\\//)) {\n throw new Error('JSDoc text cannot contain \"/*\" and \"*/\"');\n }\n out += ' ' + tag.text.replace(/@/g, '\\\\@');\n }\n return out;\n}\nfunction serializeTags(tags) {\n if (tags.length === 0) return '';\n if (tags.length === 1 && tags[0].tagName && !tags[0].text) {\n return `*${tagToString(tags[0])} `;\n }\n let out = '*\\n';\n for (const tag of tags) {\n out += ' *';\n out += tagToString(tag).replace(/\\n/g, '\\n * ');\n out += '\\n';\n }\n out += ' ';\n return out;\n}\n\nvar output_ast = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ArrayType: ArrayType,\n ArrowFunctionExpr: ArrowFunctionExpr$1,\n BOOL_TYPE: BOOL_TYPE,\n get BinaryOperator () { return BinaryOperator; },\n BinaryOperatorExpr: BinaryOperatorExpr,\n BuiltinType: BuiltinType,\n get BuiltinTypeName () { return BuiltinTypeName; },\n CommaExpr: CommaExpr,\n ConditionalExpr: ConditionalExpr,\n DYNAMIC_TYPE: DYNAMIC_TYPE,\n DeclareFunctionStmt: DeclareFunctionStmt,\n DeclareVarStmt: DeclareVarStmt,\n DynamicImportExpr: DynamicImportExpr,\n Expression: Expression,\n ExpressionStatement: ExpressionStatement,\n ExpressionType: ExpressionType,\n ExternalExpr: ExternalExpr,\n ExternalReference: ExternalReference,\n FUNCTION_TYPE: FUNCTION_TYPE,\n FnParam: FnParam,\n FunctionExpr: FunctionExpr,\n INFERRED_TYPE: INFERRED_TYPE,\n INT_TYPE: INT_TYPE,\n IfStmt: IfStmt,\n InstantiateExpr: InstantiateExpr,\n InvokeFunctionExpr: InvokeFunctionExpr,\n JSDocComment: JSDocComment,\n LeadingComment: LeadingComment,\n LiteralArrayExpr: LiteralArrayExpr,\n LiteralExpr: LiteralExpr,\n LiteralMapExpr: LiteralMapExpr,\n LiteralMapPropertyAssignment: LiteralMapPropertyAssignment,\n LiteralMapSpreadAssignment: LiteralMapSpreadAssignment,\n LiteralPiece: LiteralPiece,\n LocalizedString: LocalizedString,\n MapType: MapType,\n NONE_TYPE: NONE_TYPE,\n NULL_EXPR: NULL_EXPR,\n NUMBER_TYPE: NUMBER_TYPE,\n NotExpr: NotExpr,\n ParenthesizedExpr: ParenthesizedExpr,\n PlaceholderPiece: PlaceholderPiece,\n ReadKeyExpr: ReadKeyExpr,\n ReadPropExpr: ReadPropExpr,\n ReadVarExpr: ReadVarExpr,\n RecursiveAstVisitor: RecursiveAstVisitor$1,\n RegularExpressionLiteralExpr: RegularExpressionLiteralExpr,\n ReturnStatement: ReturnStatement,\n STRING_TYPE: STRING_TYPE,\n SpreadElementExpr: SpreadElementExpr,\n Statement: Statement,\n get StmtModifier () { return StmtModifier; },\n TYPED_NULL_EXPR: TYPED_NULL_EXPR,\n TaggedTemplateLiteralExpr: TaggedTemplateLiteralExpr,\n TemplateLiteralElementExpr: TemplateLiteralElementExpr,\n TemplateLiteralExpr: TemplateLiteralExpr,\n TransplantedType: TransplantedType,\n Type: Type,\n get TypeModifier () { return TypeModifier; },\n TypeofExpr: TypeofExpr,\n get UnaryOperator () { return UnaryOperator; },\n UnaryOperatorExpr: UnaryOperatorExpr,\n VoidExpr: VoidExpr,\n WrappedNodeExpr: WrappedNodeExpr,\n areAllEquivalent: areAllEquivalent,\n arrowFn: arrowFn,\n expressionType: expressionType,\n fn: fn,\n ifStmt: ifStmt,\n importExpr: importExpr,\n importType: importType,\n isNull: isNull,\n jsDocComment: jsDocComment,\n leadingComment: leadingComment,\n literal: literal,\n literalArr: literalArr,\n literalMap: literalMap,\n localizedString: localizedString,\n not: not,\n nullSafeIsEquivalent: nullSafeIsEquivalent,\n taggedTemplate: taggedTemplate,\n transplantedType: transplantedType,\n typeofExpr: typeofExpr,\n unary: unary,\n variable: variable\n});\n\nconst CONSTANT_PREFIX = '_c';\nconst KEY_CONTEXT = {};\nconst POOL_INCLUSION_LENGTH_THRESHOLD_FOR_STRINGS = 50;\nclass FixupExpression extends Expression {\n resolved;\n original;\n shared = false;\n constructor(resolved) {\n super(resolved.type);\n this.resolved = resolved;\n this.original = resolved;\n }\n visitExpression(visitor, context) {\n if (context === KEY_CONTEXT) {\n return this.original.visitExpression(visitor, context);\n } else {\n return this.resolved.visitExpression(visitor, context);\n }\n }\n isEquivalent(e) {\n return e instanceof FixupExpression && this.resolved.isEquivalent(e.resolved);\n }\n isConstant() {\n return true;\n }\n clone() {\n throw new Error(`Not supported.`);\n }\n fixup(expression) {\n this.resolved = expression;\n this.shared = true;\n }\n}\nclass ConstantPool {\n isClosureCompilerEnabled;\n statements = [];\n literals = new Map();\n literalFactories = new Map();\n sharedConstants = new Map();\n _claimedNames = new Map();\n nextNameIndex = 0;\n constructor(isClosureCompilerEnabled = false) {\n this.isClosureCompilerEnabled = isClosureCompilerEnabled;\n }\n getConstLiteral(literal, forceShared) {\n if (literal instanceof LiteralExpr && !isLongStringLiteral(literal) || literal instanceof FixupExpression) {\n return literal;\n }\n const key = GenericKeyFn.INSTANCE.keyOf(literal);\n let fixup = this.literals.get(key);\n let newValue = false;\n if (!fixup) {\n fixup = new FixupExpression(literal);\n this.literals.set(key, fixup);\n newValue = true;\n }\n if (!newValue && !fixup.shared || newValue && forceShared) {\n const name = this.freshName();\n let value;\n let usage;\n if (this.isClosureCompilerEnabled && isLongStringLiteral(literal)) {\n value = new FunctionExpr([], [new ReturnStatement(literal)]);\n usage = variable(name).callFn([]);\n } else {\n value = literal;\n usage = variable(name);\n }\n this.statements.push(new DeclareVarStmt(name, value, INFERRED_TYPE, StmtModifier.Final));\n fixup.fixup(usage);\n }\n return fixup;\n }\n getSharedConstant(def, expr) {\n const key = def.keyOf(expr);\n if (!this.sharedConstants.has(key)) {\n const id = this.freshName();\n this.sharedConstants.set(key, variable(id));\n this.statements.push(def.toSharedConstantDeclaration(id, expr));\n }\n return this.sharedConstants.get(key);\n }\n getSharedFunctionReference(fn, prefix, useUniqueName = true) {\n const isArrow = fn instanceof ArrowFunctionExpr$1;\n for (const current of this.statements) {\n if (isArrow && current instanceof DeclareVarStmt && current.value?.isEquivalent(fn)) {\n return variable(current.name);\n }\n if (!isArrow && current instanceof DeclareFunctionStmt && fn instanceof FunctionExpr && fn.isEquivalent(current)) {\n return variable(current.name);\n }\n }\n const name = useUniqueName ? this.uniqueName(prefix) : prefix;\n this.statements.push(fn instanceof FunctionExpr ? fn.toDeclStmt(name, StmtModifier.Final) : new DeclareVarStmt(name, fn, INFERRED_TYPE, StmtModifier.Final, fn.sourceSpan));\n return variable(name);\n }\n uniqueName(name, alwaysIncludeSuffix = true) {\n const count = this._claimedNames.get(name) ?? 0;\n const result = count === 0 && !alwaysIncludeSuffix ? `${name}` : `${name}${count}`;\n this._claimedNames.set(name, count + 1);\n return result;\n }\n freshName() {\n return this.uniqueName(CONSTANT_PREFIX);\n }\n}\nclass GenericKeyFn {\n static INSTANCE = new GenericKeyFn();\n keyOf(expr) {\n if (expr instanceof LiteralExpr && typeof expr.value === 'string') {\n return `\"${expr.value}\"`;\n } else if (expr instanceof LiteralExpr) {\n return String(expr.value);\n } else if (expr instanceof RegularExpressionLiteralExpr) {\n return `/${expr.body}/${expr.flags ?? ''}`;\n } else if (expr instanceof LiteralArrayExpr) {\n const entries = [];\n for (const entry of expr.entries) {\n entries.push(this.keyOf(entry));\n }\n return `[${entries.join(',')}]`;\n } else if (expr instanceof LiteralMapExpr) {\n const entries = [];\n for (const entry of expr.entries) {\n if (entry instanceof LiteralMapSpreadAssignment) {\n entries.push('...' + this.keyOf(entry.expression));\n } else {\n let key = entry.key;\n if (entry.quoted) {\n key = `\"${key}\"`;\n }\n entries.push(key + ':' + this.keyOf(entry.value));\n }\n }\n return `{${entries.join(',')}}`;\n } else if (expr instanceof ExternalExpr) {\n return `import(\"${expr.value.moduleName}\", ${expr.value.name})`;\n } else if (expr instanceof ReadVarExpr) {\n return `read(${expr.name})`;\n } else if (expr instanceof TypeofExpr) {\n return `typeof(${this.keyOf(expr.expr)})`;\n } else if (expr instanceof SpreadElementExpr) {\n return `...${this.keyOf(expr.expression)}`;\n } else {\n throw new Error(`${this.constructor.name} does not handle expressions of type ${expr.constructor.name}`);\n }\n }\n}\nfunction isLongStringLiteral(expr) {\n return expr instanceof LiteralExpr && typeof expr.value === 'string' && expr.value.length >= POOL_INCLUSION_LENGTH_THRESHOLD_FOR_STRINGS;\n}\n\nconst CORE = '@angular/core';\nclass Identifiers {\n static core = {\n name: null,\n moduleName: CORE\n };\n static namespaceHTML = {\n name: 'ɵɵnamespaceHTML',\n moduleName: CORE\n };\n static namespaceMathML = {\n name: 'ɵɵnamespaceMathML',\n moduleName: CORE\n };\n static namespaceSVG = {\n name: 'ɵɵnamespaceSVG',\n moduleName: CORE\n };\n static element = {\n name: 'ɵɵelement',\n moduleName: CORE\n };\n static elementStart = {\n name: 'ɵɵelementStart',\n moduleName: CORE\n };\n static elementEnd = {\n name: 'ɵɵelementEnd',\n moduleName: CORE\n };\n static domElement = {\n name: 'ɵɵdomElement',\n moduleName: CORE\n };\n static domElementStart = {\n name: 'ɵɵdomElementStart',\n moduleName: CORE\n };\n static domElementEnd = {\n name: 'ɵɵdomElementEnd',\n moduleName: CORE\n };\n static domElementContainer = {\n name: 'ɵɵdomElementContainer',\n moduleName: CORE\n };\n static domElementContainerStart = {\n name: 'ɵɵdomElementContainerStart',\n moduleName: CORE\n };\n static domElementContainerEnd = {\n name: 'ɵɵdomElementContainerEnd',\n moduleName: CORE\n };\n static domTemplate = {\n name: 'ɵɵdomTemplate',\n moduleName: CORE\n };\n static domListener = {\n name: 'ɵɵdomListener',\n moduleName: CORE\n };\n static advance = {\n name: 'ɵɵadvance',\n moduleName: CORE\n };\n static syntheticHostProperty = {\n name: 'ɵɵsyntheticHostProperty',\n moduleName: CORE\n };\n static syntheticHostListener = {\n name: 'ɵɵsyntheticHostListener',\n moduleName: CORE\n };\n static attribute = {\n name: 'ɵɵattribute',\n moduleName: CORE\n };\n static classProp = {\n name: 'ɵɵclassProp',\n moduleName: CORE\n };\n static elementContainerStart = {\n name: 'ɵɵelementContainerStart',\n moduleName: CORE\n };\n static elementContainerEnd = {\n name: 'ɵɵelementContainerEnd',\n moduleName: CORE\n };\n static elementContainer = {\n name: 'ɵɵelementContainer',\n moduleName: CORE\n };\n static styleMap = {\n name: 'ɵɵstyleMap',\n moduleName: CORE\n };\n static classMap = {\n name: 'ɵɵclassMap',\n moduleName: CORE\n };\n static styleProp = {\n name: 'ɵɵstyleProp',\n moduleName: CORE\n };\n static interpolate = {\n name: 'ɵɵinterpolate',\n moduleName: CORE\n };\n static interpolate1 = {\n name: 'ɵɵinterpolate1',\n moduleName: CORE\n };\n static interpolate2 = {\n name: 'ɵɵinterpolate2',\n moduleName: CORE\n };\n static interpolate3 = {\n name: 'ɵɵinterpolate3',\n moduleName: CORE\n };\n static interpolate4 = {\n name: 'ɵɵinterpolate4',\n moduleName: CORE\n };\n static interpolate5 = {\n name: 'ɵɵinterpolate5',\n moduleName: CORE\n };\n static interpolate6 = {\n name: 'ɵɵinterpolate6',\n moduleName: CORE\n };\n static interpolate7 = {\n name: 'ɵɵinterpolate7',\n moduleName: CORE\n };\n static interpolate8 = {\n name: 'ɵɵinterpolate8',\n moduleName: CORE\n };\n static interpolateV = {\n name: 'ɵɵinterpolateV',\n moduleName: CORE\n };\n static nextContext = {\n name: 'ɵɵnextContext',\n moduleName: CORE\n };\n static resetView = {\n name: 'ɵɵresetView',\n moduleName: CORE\n };\n static templateCreate = {\n name: 'ɵɵtemplate',\n moduleName: CORE\n };\n static defer = {\n name: 'ɵɵdefer',\n moduleName: CORE\n };\n static deferWhen = {\n name: 'ɵɵdeferWhen',\n moduleName: CORE\n };\n static deferOnIdle = {\n name: 'ɵɵdeferOnIdle',\n moduleName: CORE\n };\n static deferOnImmediate = {\n name: 'ɵɵdeferOnImmediate',\n moduleName: CORE\n };\n static deferOnTimer = {\n name: 'ɵɵdeferOnTimer',\n moduleName: CORE\n };\n static deferOnHover = {\n name: 'ɵɵdeferOnHover',\n moduleName: CORE\n };\n static deferOnInteraction = {\n name: 'ɵɵdeferOnInteraction',\n moduleName: CORE\n };\n static deferOnViewport = {\n name: 'ɵɵdeferOnViewport',\n moduleName: CORE\n };\n static deferPrefetchWhen = {\n name: 'ɵɵdeferPrefetchWhen',\n moduleName: CORE\n };\n static deferPrefetchOnIdle = {\n name: 'ɵɵdeferPrefetchOnIdle',\n moduleName: CORE\n };\n static deferPrefetchOnImmediate = {\n name: 'ɵɵdeferPrefetchOnImmediate',\n moduleName: CORE\n };\n static deferPrefetchOnTimer = {\n name: 'ɵɵdeferPrefetchOnTimer',\n moduleName: CORE\n };\n static deferPrefetchOnHover = {\n name: 'ɵɵdeferPrefetchOnHover',\n moduleName: CORE\n };\n static deferPrefetchOnInteraction = {\n name: 'ɵɵdeferPrefetchOnInteraction',\n moduleName: CORE\n };\n static deferPrefetchOnViewport = {\n name: 'ɵɵdeferPrefetchOnViewport',\n moduleName: CORE\n };\n static deferHydrateWhen = {\n name: 'ɵɵdeferHydrateWhen',\n moduleName: CORE\n };\n static deferHydrateNever = {\n name: 'ɵɵdeferHydrateNever',\n moduleName: CORE\n };\n static deferHydrateOnIdle = {\n name: 'ɵɵdeferHydrateOnIdle',\n moduleName: CORE\n };\n static deferHydrateOnImmediate = {\n name: 'ɵɵdeferHydrateOnImmediate',\n moduleName: CORE\n };\n static deferHydrateOnTimer = {\n name: 'ɵɵdeferHydrateOnTimer',\n moduleName: CORE\n };\n static deferHydrateOnHover = {\n name: 'ɵɵdeferHydrateOnHover',\n moduleName: CORE\n };\n static deferHydrateOnInteraction = {\n name: 'ɵɵdeferHydrateOnInteraction',\n moduleName: CORE\n };\n static deferHydrateOnViewport = {\n name: 'ɵɵdeferHydrateOnViewport',\n moduleName: CORE\n };\n static deferEnableTimerScheduling = {\n name: 'ɵɵdeferEnableTimerScheduling',\n moduleName: CORE\n };\n static conditionalCreate = {\n name: 'ɵɵconditionalCreate',\n moduleName: CORE\n };\n static conditionalBranchCreate = {\n name: 'ɵɵconditionalBranchCreate',\n moduleName: CORE\n };\n static conditional = {\n name: 'ɵɵconditional',\n moduleName: CORE\n };\n static repeater = {\n name: 'ɵɵrepeater',\n moduleName: CORE\n };\n static repeaterCreate = {\n name: 'ɵɵrepeaterCreate',\n moduleName: CORE\n };\n static repeaterTrackByIndex = {\n name: 'ɵɵrepeaterTrackByIndex',\n moduleName: CORE\n };\n static repeaterTrackByIdentity = {\n name: 'ɵɵrepeaterTrackByIdentity',\n moduleName: CORE\n };\n static componentInstance = {\n name: 'ɵɵcomponentInstance',\n moduleName: CORE\n };\n static text = {\n name: 'ɵɵtext',\n moduleName: CORE\n };\n static enableBindings = {\n name: 'ɵɵenableBindings',\n moduleName: CORE\n };\n static disableBindings = {\n name: 'ɵɵdisableBindings',\n moduleName: CORE\n };\n static getCurrentView = {\n name: 'ɵɵgetCurrentView',\n moduleName: CORE\n };\n static textInterpolate = {\n name: 'ɵɵtextInterpolate',\n moduleName: CORE\n };\n static textInterpolate1 = {\n name: 'ɵɵtextInterpolate1',\n moduleName: CORE\n };\n static textInterpolate2 = {\n name: 'ɵɵtextInterpolate2',\n moduleName: CORE\n };\n static textInterpolate3 = {\n name: 'ɵɵtextInterpolate3',\n moduleName: CORE\n };\n static textInterpolate4 = {\n name: 'ɵɵtextInterpolate4',\n moduleName: CORE\n };\n static textInterpolate5 = {\n name: 'ɵɵtextInterpolate5',\n moduleName: CORE\n };\n static textInterpolate6 = {\n name: 'ɵɵtextInterpolate6',\n moduleName: CORE\n };\n static textInterpolate7 = {\n name: 'ɵɵtextInterpolate7',\n moduleName: CORE\n };\n static textInterpolate8 = {\n name: 'ɵɵtextInterpolate8',\n moduleName: CORE\n };\n static textInterpolateV = {\n name: 'ɵɵtextInterpolateV',\n moduleName: CORE\n };\n static restoreView = {\n name: 'ɵɵrestoreView',\n moduleName: CORE\n };\n static pureFunction0 = {\n name: 'ɵɵpureFunction0',\n moduleName: CORE\n };\n static pureFunction1 = {\n name: 'ɵɵpureFunction1',\n moduleName: CORE\n };\n static pureFunction2 = {\n name: 'ɵɵpureFunction2',\n moduleName: CORE\n };\n static pureFunction3 = {\n name: 'ɵɵpureFunction3',\n moduleName: CORE\n };\n static pureFunction4 = {\n name: 'ɵɵpureFunction4',\n moduleName: CORE\n };\n static pureFunction5 = {\n name: 'ɵɵpureFunction5',\n moduleName: CORE\n };\n static pureFunction6 = {\n name: 'ɵɵpureFunction6',\n moduleName: CORE\n };\n static pureFunction7 = {\n name: 'ɵɵpureFunction7',\n moduleName: CORE\n };\n static pureFunction8 = {\n name: 'ɵɵpureFunction8',\n moduleName: CORE\n };\n static pureFunctionV = {\n name: 'ɵɵpureFunctionV',\n moduleName: CORE\n };\n static pipeBind1 = {\n name: 'ɵɵpipeBind1',\n moduleName: CORE\n };\n static pipeBind2 = {\n name: 'ɵɵpipeBind2',\n moduleName: CORE\n };\n static pipeBind3 = {\n name: 'ɵɵpipeBind3',\n moduleName: CORE\n };\n static pipeBind4 = {\n name: 'ɵɵpipeBind4',\n moduleName: CORE\n };\n static pipeBindV = {\n name: 'ɵɵpipeBindV',\n moduleName: CORE\n };\n static domProperty = {\n name: 'ɵɵdomProperty',\n moduleName: CORE\n };\n static ariaProperty = {\n name: 'ɵɵariaProperty',\n moduleName: CORE\n };\n static property = {\n name: 'ɵɵproperty',\n moduleName: CORE\n };\n static control = {\n name: 'ɵɵcontrol',\n moduleName: CORE\n };\n static controlCreate = {\n name: 'ɵɵcontrolCreate',\n moduleName: CORE\n };\n static animationEnterListener = {\n name: 'ɵɵanimateEnterListener',\n moduleName: CORE\n };\n static animationLeaveListener = {\n name: 'ɵɵanimateLeaveListener',\n moduleName: CORE\n };\n static animationEnter = {\n name: 'ɵɵanimateEnter',\n moduleName: CORE\n };\n static animationLeave = {\n name: 'ɵɵanimateLeave',\n moduleName: CORE\n };\n static i18n = {\n name: 'ɵɵi18n',\n moduleName: CORE\n };\n static i18nAttributes = {\n name: 'ɵɵi18nAttributes',\n moduleName: CORE\n };\n static i18nExp = {\n name: 'ɵɵi18nExp',\n moduleName: CORE\n };\n static i18nStart = {\n name: 'ɵɵi18nStart',\n moduleName: CORE\n };\n static i18nEnd = {\n name: 'ɵɵi18nEnd',\n moduleName: CORE\n };\n static i18nApply = {\n name: 'ɵɵi18nApply',\n moduleName: CORE\n };\n static i18nPostprocess = {\n name: 'ɵɵi18nPostprocess',\n moduleName: CORE\n };\n static pipe = {\n name: 'ɵɵpipe',\n moduleName: CORE\n };\n static projection = {\n name: 'ɵɵprojection',\n moduleName: CORE\n };\n static projectionDef = {\n name: 'ɵɵprojectionDef',\n moduleName: CORE\n };\n static reference = {\n name: 'ɵɵreference',\n moduleName: CORE\n };\n static inject = {\n name: 'ɵɵinject',\n moduleName: CORE\n };\n static injectAttribute = {\n name: 'ɵɵinjectAttribute',\n moduleName: CORE\n };\n static directiveInject = {\n name: 'ɵɵdirectiveInject',\n moduleName: CORE\n };\n static invalidFactory = {\n name: 'ɵɵinvalidFactory',\n moduleName: CORE\n };\n static invalidFactoryDep = {\n name: 'ɵɵinvalidFactoryDep',\n moduleName: CORE\n };\n static templateRefExtractor = {\n name: 'ɵɵtemplateRefExtractor',\n moduleName: CORE\n };\n static forwardRef = {\n name: 'forwardRef',\n moduleName: CORE\n };\n static resolveForwardRef = {\n name: 'resolveForwardRef',\n moduleName: CORE\n };\n static replaceMetadata = {\n name: 'ɵɵreplaceMetadata',\n moduleName: CORE\n };\n static getReplaceMetadataURL = {\n name: 'ɵɵgetReplaceMetadataURL',\n moduleName: CORE\n };\n static ɵɵdefineInjectable = {\n name: 'ɵɵdefineInjectable',\n moduleName: CORE\n };\n static declareInjectable = {\n name: 'ɵɵngDeclareInjectable',\n moduleName: CORE\n };\n static InjectableDeclaration = {\n name: 'ɵɵInjectableDeclaration',\n moduleName: CORE\n };\n static resolveWindow = {\n name: 'ɵɵresolveWindow',\n moduleName: CORE\n };\n static resolveDocument = {\n name: 'ɵɵresolveDocument',\n moduleName: CORE\n };\n static resolveBody = {\n name: 'ɵɵresolveBody',\n moduleName: CORE\n };\n static getComponentDepsFactory = {\n name: 'ɵɵgetComponentDepsFactory',\n moduleName: CORE\n };\n static defineComponent = {\n name: 'ɵɵdefineComponent',\n moduleName: CORE\n };\n static declareComponent = {\n name: 'ɵɵngDeclareComponent',\n moduleName: CORE\n };\n static setComponentScope = {\n name: 'ɵɵsetComponentScope',\n moduleName: CORE\n };\n static ChangeDetectionStrategy = {\n name: 'ChangeDetectionStrategy',\n moduleName: CORE\n };\n static ViewEncapsulation = {\n name: 'ViewEncapsulation',\n moduleName: CORE\n };\n static ComponentDeclaration = {\n name: 'ɵɵComponentDeclaration',\n moduleName: CORE\n };\n static FactoryDeclaration = {\n name: 'ɵɵFactoryDeclaration',\n moduleName: CORE\n };\n static declareFactory = {\n name: 'ɵɵngDeclareFactory',\n moduleName: CORE\n };\n static FactoryTarget = {\n name: 'ɵɵFactoryTarget',\n moduleName: CORE\n };\n static defineDirective = {\n name: 'ɵɵdefineDirective',\n moduleName: CORE\n };\n static declareDirective = {\n name: 'ɵɵngDeclareDirective',\n moduleName: CORE\n };\n static DirectiveDeclaration = {\n name: 'ɵɵDirectiveDeclaration',\n moduleName: CORE\n };\n static InjectorDef = {\n name: 'ɵɵInjectorDef',\n moduleName: CORE\n };\n static InjectorDeclaration = {\n name: 'ɵɵInjectorDeclaration',\n moduleName: CORE\n };\n static defineInjector = {\n name: 'ɵɵdefineInjector',\n moduleName: CORE\n };\n static declareInjector = {\n name: 'ɵɵngDeclareInjector',\n moduleName: CORE\n };\n static NgModuleDeclaration = {\n name: 'ɵɵNgModuleDeclaration',\n moduleName: CORE\n };\n static ModuleWithProviders = {\n name: 'ModuleWithProviders',\n moduleName: CORE\n };\n static defineNgModule = {\n name: 'ɵɵdefineNgModule',\n moduleName: CORE\n };\n static declareNgModule = {\n name: 'ɵɵngDeclareNgModule',\n moduleName: CORE\n };\n static setNgModuleScope = {\n name: 'ɵɵsetNgModuleScope',\n moduleName: CORE\n };\n static registerNgModuleType = {\n name: 'ɵɵregisterNgModuleType',\n moduleName: CORE\n };\n static PipeDeclaration = {\n name: 'ɵɵPipeDeclaration',\n moduleName: CORE\n };\n static definePipe = {\n name: 'ɵɵdefinePipe',\n moduleName: CORE\n };\n static declarePipe = {\n name: 'ɵɵngDeclarePipe',\n moduleName: CORE\n };\n static declareClassMetadata = {\n name: 'ɵɵngDeclareClassMetadata',\n moduleName: CORE\n };\n static declareClassMetadataAsync = {\n name: 'ɵɵngDeclareClassMetadataAsync',\n moduleName: CORE\n };\n static setClassMetadata = {\n name: 'ɵsetClassMetadata',\n moduleName: CORE\n };\n static setClassMetadataAsync = {\n name: 'ɵsetClassMetadataAsync',\n moduleName: CORE\n };\n static setClassDebugInfo = {\n name: 'ɵsetClassDebugInfo',\n moduleName: CORE\n };\n static queryRefresh = {\n name: 'ɵɵqueryRefresh',\n moduleName: CORE\n };\n static viewQuery = {\n name: 'ɵɵviewQuery',\n moduleName: CORE\n };\n static loadQuery = {\n name: 'ɵɵloadQuery',\n moduleName: CORE\n };\n static contentQuery = {\n name: 'ɵɵcontentQuery',\n moduleName: CORE\n };\n static viewQuerySignal = {\n name: 'ɵɵviewQuerySignal',\n moduleName: CORE\n };\n static contentQuerySignal = {\n name: 'ɵɵcontentQuerySignal',\n moduleName: CORE\n };\n static queryAdvance = {\n name: 'ɵɵqueryAdvance',\n moduleName: CORE\n };\n static twoWayProperty = {\n name: 'ɵɵtwoWayProperty',\n moduleName: CORE\n };\n static twoWayBindingSet = {\n name: 'ɵɵtwoWayBindingSet',\n moduleName: CORE\n };\n static twoWayListener = {\n name: 'ɵɵtwoWayListener',\n moduleName: CORE\n };\n static declareLet = {\n name: 'ɵɵdeclareLet',\n moduleName: CORE\n };\n static storeLet = {\n name: 'ɵɵstoreLet',\n moduleName: CORE\n };\n static readContextLet = {\n name: 'ɵɵreadContextLet',\n moduleName: CORE\n };\n static arrowFunction = {\n name: 'ɵɵarrowFunction',\n moduleName: CORE\n };\n static attachSourceLocations = {\n name: 'ɵɵattachSourceLocations',\n moduleName: CORE\n };\n static NgOnChangesFeature = {\n name: 'ɵɵNgOnChangesFeature',\n moduleName: CORE\n };\n static ControlFeature = {\n name: 'ɵɵControlFeature',\n moduleName: CORE\n };\n static InheritDefinitionFeature = {\n name: 'ɵɵInheritDefinitionFeature',\n moduleName: CORE\n };\n static ProvidersFeature = {\n name: 'ɵɵProvidersFeature',\n moduleName: CORE\n };\n static HostDirectivesFeature = {\n name: 'ɵɵHostDirectivesFeature',\n moduleName: CORE\n };\n static ExternalStylesFeature = {\n name: 'ɵɵExternalStylesFeature',\n moduleName: CORE\n };\n static listener = {\n name: 'ɵɵlistener',\n moduleName: CORE\n };\n static getInheritedFactory = {\n name: 'ɵɵgetInheritedFactory',\n moduleName: CORE\n };\n static sanitizeHtml = {\n name: 'ɵɵsanitizeHtml',\n moduleName: CORE\n };\n static sanitizeStyle = {\n name: 'ɵɵsanitizeStyle',\n moduleName: CORE\n };\n static validateAttribute = {\n name: 'ɵɵvalidateAttribute',\n moduleName: CORE\n };\n static sanitizeResourceUrl = {\n name: 'ɵɵsanitizeResourceUrl',\n moduleName: CORE\n };\n static sanitizeScript = {\n name: 'ɵɵsanitizeScript',\n moduleName: CORE\n };\n static sanitizeUrl = {\n name: 'ɵɵsanitizeUrl',\n moduleName: CORE\n };\n static sanitizeUrlOrResourceUrl = {\n name: 'ɵɵsanitizeUrlOrResourceUrl',\n moduleName: CORE\n };\n static trustConstantHtml = {\n name: 'ɵɵtrustConstantHtml',\n moduleName: CORE\n };\n static trustConstantResourceUrl = {\n name: 'ɵɵtrustConstantResourceUrl',\n moduleName: CORE\n };\n static inputDecorator = {\n name: 'Input',\n moduleName: CORE\n };\n static outputDecorator = {\n name: 'Output',\n moduleName: CORE\n };\n static viewChildDecorator = {\n name: 'ViewChild',\n moduleName: CORE\n };\n static viewChildrenDecorator = {\n name: 'ViewChildren',\n moduleName: CORE\n };\n static contentChildDecorator = {\n name: 'ContentChild',\n moduleName: CORE\n };\n static contentChildrenDecorator = {\n name: 'ContentChildren',\n moduleName: CORE\n };\n static InputSignalBrandWriteType = {\n name: 'ɵINPUT_SIGNAL_BRAND_WRITE_TYPE',\n moduleName: CORE\n };\n static UnwrapDirectiveSignalInputs = {\n name: 'ɵUnwrapDirectiveSignalInputs',\n moduleName: CORE\n };\n static unwrapWritableSignal = {\n name: 'ɵunwrapWritableSignal',\n moduleName: CORE\n };\n static assertType = {\n name: 'ɵassertType',\n moduleName: CORE\n };\n}\n\nconst DASH_CASE_REGEXP = /-+([a-z0-9])/g;\nfunction dashCaseToCamelCase(input) {\n return input.replace(DASH_CASE_REGEXP, (...m) => m[1].toUpperCase());\n}\nfunction splitAtColon(input, defaultValues) {\n return _splitAt(input, ':', defaultValues);\n}\nfunction splitAtPeriod(input, defaultValues) {\n return _splitAt(input, '.', defaultValues);\n}\nfunction _splitAt(input, character, defaultValues) {\n const characterIndex = input.indexOf(character);\n if (characterIndex == -1) return defaultValues;\n return [input.slice(0, characterIndex).trim(), input.slice(characterIndex + 1).trim()];\n}\nfunction noUndefined(val) {\n return val === undefined ? null : val;\n}\nfunction escapeRegExp(s) {\n return s.replace(/([.*+?^=!:${}()|[\\]\\/\\\\])/g, '\\\\$1');\n}\nfunction utf8Encode(str) {\n let encoded = [];\n for (let index = 0; index < str.length; index++) {\n let codePoint = str.charCodeAt(index);\n if (codePoint >= 0xd800 && codePoint <= 0xdbff && str.length > index + 1) {\n const low = str.charCodeAt(index + 1);\n if (low >= 0xdc00 && low <= 0xdfff) {\n index++;\n codePoint = (codePoint - 0xd800 << 10) + low - 0xdc00 + 0x10000;\n }\n }\n if (codePoint <= 0x7f) {\n encoded.push(codePoint);\n } else if (codePoint <= 0x7ff) {\n encoded.push(codePoint >> 6 & 0x1f | 0xc0, codePoint & 0x3f | 0x80);\n } else if (codePoint <= 0xffff) {\n encoded.push(codePoint >> 12 | 0xe0, codePoint >> 6 & 0x3f | 0x80, codePoint & 0x3f | 0x80);\n } else if (codePoint <= 0x1fffff) {\n encoded.push(codePoint >> 18 & 0x07 | 0xf0, codePoint >> 12 & 0x3f | 0x80, codePoint >> 6 & 0x3f | 0x80, codePoint & 0x3f | 0x80);\n }\n }\n return encoded;\n}\nfunction stringify(token) {\n if (typeof token === 'string') {\n return token;\n }\n if (Array.isArray(token)) {\n return `[${token.map(stringify).join(', ')}]`;\n }\n if (token == null) {\n return '' + token;\n }\n const name = token.overriddenName || token.name;\n if (name) {\n return `${name}`;\n }\n if (!token.toString) {\n return 'object';\n }\n const result = token.toString();\n if (result == null) {\n return '' + result;\n }\n const newLineIndex = result.indexOf('\\n');\n return newLineIndex >= 0 ? result.slice(0, newLineIndex) : result;\n}\nclass Version {\n full;\n major;\n minor;\n patch;\n constructor(full) {\n this.full = full;\n const splits = full.split('.');\n this.major = splits[0];\n this.minor = splits[1];\n this.patch = splits.slice(2).join('.');\n }\n}\nconst _global = globalThis;\nconst V1_TO_18 = /^([1-9]|1[0-8])\\./;\nfunction getJitStandaloneDefaultForVersion(version) {\n if (version.startsWith('0.')) {\n return true;\n }\n if (V1_TO_18.test(version)) {\n return false;\n }\n return true;\n}\n\nconst VERSION$1 = 3;\nconst JS_B64_PREFIX = '# sourceMappingURL=data:application/json;base64,';\nclass SourceMapGenerator {\n file;\n sourcesContent = new Map();\n lines = [];\n lastCol0 = 0;\n hasMappings = false;\n constructor(file = null) {\n this.file = file;\n }\n addSource(url, content = null) {\n if (!this.sourcesContent.has(url)) {\n this.sourcesContent.set(url, content);\n }\n return this;\n }\n addLine() {\n this.lines.push([]);\n this.lastCol0 = 0;\n return this;\n }\n addMapping(col0, sourceUrl, sourceLine0, sourceCol0) {\n if (!this.currentLine) {\n throw new Error(`A line must be added before mappings can be added`);\n }\n if (sourceUrl != null && !this.sourcesContent.has(sourceUrl)) {\n throw new Error(`Unknown source file \"${sourceUrl}\"`);\n }\n if (col0 == null) {\n throw new Error(`The column in the generated code must be provided`);\n }\n if (col0 < this.lastCol0) {\n throw new Error(`Mapping should be added in output order`);\n }\n if (sourceUrl && (sourceLine0 == null || sourceCol0 == null)) {\n throw new Error(`The source location must be provided when a source url is provided`);\n }\n this.hasMappings = true;\n this.lastCol0 = col0;\n this.currentLine.push({\n col0,\n sourceUrl,\n sourceLine0,\n sourceCol0\n });\n return this;\n }\n get currentLine() {\n return this.lines.slice(-1)[0];\n }\n toJSON() {\n if (!this.hasMappings) {\n return null;\n }\n const sourcesIndex = new Map();\n const sources = [];\n const sourcesContent = [];\n Array.from(this.sourcesContent.keys()).forEach((url, i) => {\n sourcesIndex.set(url, i);\n sources.push(url);\n sourcesContent.push(this.sourcesContent.get(url) || null);\n });\n let mappings = '';\n let lastCol0 = 0;\n let lastSourceIndex = 0;\n let lastSourceLine0 = 0;\n let lastSourceCol0 = 0;\n this.lines.forEach(segments => {\n lastCol0 = 0;\n mappings += segments.map(segment => {\n let segAsStr = toBase64VLQ(segment.col0 - lastCol0);\n lastCol0 = segment.col0;\n if (segment.sourceUrl != null) {\n segAsStr += toBase64VLQ(sourcesIndex.get(segment.sourceUrl) - lastSourceIndex);\n lastSourceIndex = sourcesIndex.get(segment.sourceUrl);\n segAsStr += toBase64VLQ(segment.sourceLine0 - lastSourceLine0);\n lastSourceLine0 = segment.sourceLine0;\n segAsStr += toBase64VLQ(segment.sourceCol0 - lastSourceCol0);\n lastSourceCol0 = segment.sourceCol0;\n }\n return segAsStr;\n }).join(',');\n mappings += ';';\n });\n mappings = mappings.slice(0, -1);\n return {\n 'file': this.file || '',\n 'version': VERSION$1,\n 'sourceRoot': '',\n 'sources': sources,\n 'sourcesContent': sourcesContent,\n 'mappings': mappings\n };\n }\n toJsComment() {\n return this.hasMappings ? '//' + JS_B64_PREFIX + toBase64String(JSON.stringify(this, null, 0)) : '';\n }\n}\nfunction toBase64String(value) {\n let b64 = '';\n const encoded = utf8Encode(value);\n for (let i = 0; i < encoded.length;) {\n const i1 = encoded[i++];\n const i2 = i < encoded.length ? encoded[i++] : null;\n const i3 = i < encoded.length ? encoded[i++] : null;\n b64 += toBase64Digit(i1 >> 2);\n b64 += toBase64Digit((i1 & 3) << 4 | (i2 === null ? 0 : i2 >> 4));\n b64 += i2 === null ? '=' : toBase64Digit((i2 & 15) << 2 | (i3 === null ? 0 : i3 >> 6));\n b64 += i2 === null || i3 === null ? '=' : toBase64Digit(i3 & 63);\n }\n return b64;\n}\nfunction toBase64VLQ(value) {\n value = value < 0 ? (-value << 1) + 1 : value << 1;\n let out = '';\n do {\n let digit = value & 31;\n value = value >> 5;\n if (value > 0) {\n digit = digit | 32;\n }\n out += toBase64Digit(digit);\n } while (value > 0);\n return out;\n}\nconst B64_DIGITS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nfunction toBase64Digit(value) {\n if (value < 0 || value >= 64) {\n throw new Error(`Can only encode value in the range [0, 63]`);\n }\n return B64_DIGITS[value];\n}\n\nconst _SINGLE_QUOTE_ESCAPE_STRING_RE = /'|\\\\|\\n|\\r|\\$/g;\nconst _LEGAL_IDENTIFIER_RE = /^[$A-Z_][0-9A-Z_$]*$/i;\nconst _INDENT_WITH = ' ';\nclass _EmittedLine {\n indent;\n partsLength = 0;\n parts = [];\n srcSpans = [];\n constructor(indent) {\n this.indent = indent;\n }\n}\nconst BINARY_OPERATORS$1 = new Map([[BinaryOperator.And, '&&'], [BinaryOperator.Bigger, '>'], [BinaryOperator.BiggerEquals, '>='], [BinaryOperator.BitwiseOr, '|'], [BinaryOperator.BitwiseAnd, '&'], [BinaryOperator.Divide, '/'], [BinaryOperator.Assign, '='], [BinaryOperator.Equals, '=='], [BinaryOperator.Identical, '==='], [BinaryOperator.Lower, '<'], [BinaryOperator.LowerEquals, '<='], [BinaryOperator.Minus, '-'], [BinaryOperator.Modulo, '%'], [BinaryOperator.Exponentiation, '**'], [BinaryOperator.Multiply, '*'], [BinaryOperator.NotEquals, '!='], [BinaryOperator.NotIdentical, '!=='], [BinaryOperator.NullishCoalesce, '??'], [BinaryOperator.Or, '||'], [BinaryOperator.Plus, '+'], [BinaryOperator.In, 'in'], [BinaryOperator.InstanceOf, 'instanceof'], [BinaryOperator.AdditionAssignment, '+='], [BinaryOperator.SubtractionAssignment, '-='], [BinaryOperator.MultiplicationAssignment, '*='], [BinaryOperator.DivisionAssignment, '/='], [BinaryOperator.RemainderAssignment, '%='], [BinaryOperator.ExponentiationAssignment, '**='], [BinaryOperator.AndAssignment, '&&='], [BinaryOperator.OrAssignment, '||='], [BinaryOperator.NullishCoalesceAssignment, '??=']]);\nclass EmitterVisitorContext {\n _indent;\n static createRoot() {\n return new EmitterVisitorContext(0);\n }\n _lines;\n constructor(_indent) {\n this._indent = _indent;\n this._lines = [new _EmittedLine(_indent)];\n }\n get _currentLine() {\n return this._lines[this._lines.length - 1];\n }\n println(from, lastPart = '') {\n this.print(from || null, lastPart, true);\n }\n lineIsEmpty() {\n return this._currentLine.parts.length === 0;\n }\n lineLength() {\n return this._currentLine.indent * _INDENT_WITH.length + this._currentLine.partsLength;\n }\n print(from, part, newLine = false) {\n if (part.length > 0) {\n this._currentLine.parts.push(part);\n this._currentLine.partsLength += part.length;\n this._currentLine.srcSpans.push(from && from.sourceSpan || null);\n }\n if (newLine) {\n this._lines.push(new _EmittedLine(this._indent));\n }\n }\n removeEmptyLastLine() {\n if (this.lineIsEmpty()) {\n this._lines.pop();\n }\n }\n incIndent() {\n this._indent++;\n if (this.lineIsEmpty()) {\n this._currentLine.indent = this._indent;\n }\n }\n decIndent() {\n this._indent--;\n if (this.lineIsEmpty()) {\n this._currentLine.indent = this._indent;\n }\n }\n toSource() {\n return this.sourceLines.map(l => l.parts.length > 0 ? _createIndent(l.indent) + l.parts.join('') : '').join('\\n');\n }\n toSourceMapGenerator(genFilePath, startsAtLine = 0) {\n const map = new SourceMapGenerator(genFilePath);\n let firstOffsetMapped = false;\n const mapFirstOffsetIfNeeded = () => {\n if (!firstOffsetMapped) {\n map.addSource(genFilePath, ' ').addMapping(0, genFilePath, 0, 0);\n firstOffsetMapped = true;\n }\n };\n for (let i = 0; i < startsAtLine; i++) {\n map.addLine();\n mapFirstOffsetIfNeeded();\n }\n this.sourceLines.forEach((line, lineIdx) => {\n map.addLine();\n const spans = line.srcSpans;\n const parts = line.parts;\n let col0 = line.indent * _INDENT_WITH.length;\n let spanIdx = 0;\n while (spanIdx < spans.length && !spans[spanIdx]) {\n col0 += parts[spanIdx].length;\n spanIdx++;\n }\n if (spanIdx < spans.length && lineIdx === 0 && col0 === 0) {\n firstOffsetMapped = true;\n } else {\n mapFirstOffsetIfNeeded();\n }\n while (spanIdx < spans.length) {\n const span = spans[spanIdx];\n const source = span.start.file;\n const sourceLine = span.start.line;\n const sourceCol = span.start.col;\n map.addSource(source.url, source.content).addMapping(col0, source.url, sourceLine, sourceCol);\n col0 += parts[spanIdx].length;\n spanIdx++;\n while (spanIdx < spans.length && (span === spans[spanIdx] || !spans[spanIdx])) {\n col0 += parts[spanIdx].length;\n spanIdx++;\n }\n }\n });\n return map;\n }\n spanOf(line, column) {\n const emittedLine = this._lines[line];\n if (emittedLine) {\n let columnsLeft = column - _createIndent(emittedLine.indent).length;\n for (let partIndex = 0; partIndex < emittedLine.parts.length; partIndex++) {\n const part = emittedLine.parts[partIndex];\n if (part.length > columnsLeft) {\n return emittedLine.srcSpans[partIndex];\n }\n columnsLeft -= part.length;\n }\n }\n return null;\n }\n get sourceLines() {\n if (this._lines.length && this._lines[this._lines.length - 1].parts.length === 0) {\n return this._lines.slice(0, -1);\n }\n return this._lines;\n }\n}\nclass AbstractEmitterVisitor {\n _escapeDollarInStrings;\n lastIfCondition = null;\n constructor(_escapeDollarInStrings) {\n this._escapeDollarInStrings = _escapeDollarInStrings;\n }\n printLeadingComments(stmt, ctx) {\n if (stmt.leadingComments === undefined) {\n return;\n }\n for (const comment of stmt.leadingComments) {\n if (comment instanceof JSDocComment) {\n ctx.print(stmt, `/*${comment.toString()}*/`, comment.trailingNewline);\n } else {\n if (comment.multiline) {\n ctx.print(stmt, `/* ${comment.text} */`, comment.trailingNewline);\n } else {\n comment.text.split('\\n').forEach(line => {\n ctx.println(stmt, `// ${line}`);\n });\n }\n }\n }\n }\n visitExpressionStmt(stmt, ctx) {\n this.printLeadingComments(stmt, ctx);\n stmt.expr.visitExpression(this, ctx);\n ctx.println(stmt, ';');\n return null;\n }\n visitReturnStmt(stmt, ctx) {\n this.printLeadingComments(stmt, ctx);\n ctx.print(stmt, `return `);\n stmt.value.visitExpression(this, ctx);\n ctx.println(stmt, ';');\n return null;\n }\n visitIfStmt(stmt, ctx) {\n this.printLeadingComments(stmt, ctx);\n ctx.print(stmt, `if (`);\n this.lastIfCondition = stmt.condition;\n stmt.condition.visitExpression(this, ctx);\n this.lastIfCondition = null;\n ctx.print(stmt, `) {`);\n const hasElseCase = stmt.falseCase != null && stmt.falseCase.length > 0;\n if (stmt.trueCase.length <= 1 && !hasElseCase) {\n ctx.print(stmt, ` `);\n this.visitAllStatements(stmt.trueCase, ctx);\n ctx.removeEmptyLastLine();\n ctx.print(stmt, ` `);\n } else {\n ctx.println();\n ctx.incIndent();\n this.visitAllStatements(stmt.trueCase, ctx);\n ctx.decIndent();\n if (hasElseCase) {\n ctx.println(stmt, `} else {`);\n ctx.incIndent();\n this.visitAllStatements(stmt.falseCase, ctx);\n ctx.decIndent();\n }\n }\n ctx.println(stmt, `}`);\n return null;\n }\n visitInvokeFunctionExpr(expr, ctx) {\n const shouldParenthesize = expr.fn instanceof ArrowFunctionExpr$1;\n if (shouldParenthesize) {\n ctx.print(expr.fn, '(');\n }\n expr.fn.visitExpression(this, ctx);\n if (shouldParenthesize) {\n ctx.print(expr.fn, ')');\n }\n ctx.print(expr, `(`);\n this.visitAllExpressions(expr.args, ctx, ',');\n ctx.print(expr, `)`);\n return null;\n }\n visitTaggedTemplateLiteralExpr(expr, ctx) {\n expr.tag.visitExpression(this, ctx);\n expr.template.visitExpression(this, ctx);\n return null;\n }\n visitTemplateLiteralExpr(expr, ctx) {\n ctx.print(expr, '`');\n for (let i = 0; i < expr.elements.length; i++) {\n expr.elements[i].visitExpression(this, ctx);\n const expression = i < expr.expressions.length ? expr.expressions[i] : null;\n if (expression !== null) {\n ctx.print(expression, '${');\n expression.visitExpression(this, ctx);\n ctx.print(expression, '}');\n }\n }\n ctx.print(expr, '`');\n }\n visitTemplateLiteralElementExpr(expr, ctx) {\n ctx.print(expr, expr.rawText);\n }\n visitWrappedNodeExpr(ast, ctx) {\n throw new Error('Abstract emitter cannot visit WrappedNodeExpr.');\n }\n visitTypeofExpr(expr, ctx) {\n ctx.print(expr, 'typeof ');\n expr.expr.visitExpression(this, ctx);\n }\n visitVoidExpr(expr, ctx) {\n ctx.print(expr, 'void ');\n expr.expr.visitExpression(this, ctx);\n }\n visitReadVarExpr(ast, ctx) {\n ctx.print(ast, ast.name);\n return null;\n }\n visitInstantiateExpr(ast, ctx) {\n ctx.print(ast, `new `);\n ast.classExpr.visitExpression(this, ctx);\n ctx.print(ast, `(`);\n this.visitAllExpressions(ast.args, ctx, ',');\n ctx.print(ast, `)`);\n return null;\n }\n visitLiteralExpr(ast, ctx) {\n const value = ast.value;\n if (typeof value === 'string') {\n ctx.print(ast, escapeIdentifier(value, this._escapeDollarInStrings));\n } else {\n ctx.print(ast, `${value}`);\n }\n return null;\n }\n visitRegularExpressionLiteral(ast, ctx) {\n ctx.print(ast, `/${ast.body}/${ast.flags || ''}`);\n return null;\n }\n visitLocalizedString(ast, ctx) {\n const head = ast.serializeI18nHead();\n ctx.print(ast, '$localize `' + head.raw);\n for (let i = 1; i < ast.messageParts.length; i++) {\n ctx.print(ast, '${');\n ast.expressions[i - 1].visitExpression(this, ctx);\n ctx.print(ast, `}${ast.serializeI18nTemplatePart(i).raw}`);\n }\n ctx.print(ast, '`');\n return null;\n }\n visitConditionalExpr(ast, ctx) {\n ctx.print(ast, `(`);\n ast.condition.visitExpression(this, ctx);\n ctx.print(ast, '? ');\n ast.trueCase.visitExpression(this, ctx);\n ctx.print(ast, ': ');\n ast.falseCase.visitExpression(this, ctx);\n ctx.print(ast, `)`);\n return null;\n }\n visitDynamicImportExpr(ast, ctx) {\n ctx.print(ast, `import(${ast.url})`);\n }\n visitNotExpr(ast, ctx) {\n ctx.print(ast, '!');\n ast.condition.visitExpression(this, ctx);\n return null;\n }\n visitUnaryOperatorExpr(ast, ctx) {\n let opStr;\n switch (ast.operator) {\n case UnaryOperator.Plus:\n opStr = '+';\n break;\n case UnaryOperator.Minus:\n opStr = '-';\n break;\n default:\n throw new Error(`Unknown operator ${ast.operator}`);\n }\n const parens = ast !== this.lastIfCondition;\n if (parens) ctx.print(ast, `(`);\n ctx.print(ast, opStr);\n ast.expr.visitExpression(this, ctx);\n if (parens) ctx.print(ast, `)`);\n return null;\n }\n visitBinaryOperatorExpr(ast, ctx) {\n const operator = BINARY_OPERATORS$1.get(ast.operator);\n if (!operator) {\n throw new Error(`Unknown operator ${ast.operator}`);\n }\n const parens = ast !== this.lastIfCondition;\n if (parens) ctx.print(ast, `(`);\n ast.lhs.visitExpression(this, ctx);\n ctx.print(ast, ` ${operator} `);\n ast.rhs.visitExpression(this, ctx);\n if (parens) ctx.print(ast, `)`);\n return null;\n }\n visitReadPropExpr(ast, ctx) {\n ast.receiver.visitExpression(this, ctx);\n ctx.print(ast, `.`);\n ctx.print(ast, ast.name);\n return null;\n }\n visitReadKeyExpr(ast, ctx) {\n ast.receiver.visitExpression(this, ctx);\n ctx.print(ast, `[`);\n ast.index.visitExpression(this, ctx);\n ctx.print(ast, `]`);\n return null;\n }\n visitLiteralArrayExpr(ast, ctx) {\n ctx.print(ast, `[`);\n this.visitAllExpressions(ast.entries, ctx, ',');\n ctx.print(ast, `]`);\n return null;\n }\n visitLiteralMapExpr(ast, ctx) {\n ctx.print(ast, `{`);\n this.visitAllObjects(entry => {\n if (entry instanceof LiteralMapSpreadAssignment) {\n ctx.print(ast, '...');\n entry.expression.visitExpression(this, ctx);\n } else {\n ctx.print(ast, `${escapeIdentifier(entry.key, this._escapeDollarInStrings, entry.quoted)}:`);\n entry.value.visitExpression(this, ctx);\n }\n }, ast.entries, ctx, ',');\n ctx.print(ast, `}`);\n return null;\n }\n visitCommaExpr(ast, ctx) {\n ctx.print(ast, '(');\n this.visitAllExpressions(ast.parts, ctx, ',');\n ctx.print(ast, ')');\n return null;\n }\n visitParenthesizedExpr(ast, ctx) {\n ast.expr.visitExpression(this, ctx);\n }\n visitSpreadElementExpr(ast, ctx) {\n ctx.print(ast, '...');\n ast.expression.visitExpression(this, ctx);\n }\n visitAllExpressions(expressions, ctx, separator) {\n this.visitAllObjects(expr => expr.visitExpression(this, ctx), expressions, ctx, separator);\n }\n visitAllObjects(handler, expressions, ctx, separator) {\n let incrementedIndent = false;\n for (let i = 0; i < expressions.length; i++) {\n if (i > 0) {\n if (ctx.lineLength() > 80) {\n ctx.print(null, separator, true);\n if (!incrementedIndent) {\n ctx.incIndent();\n ctx.incIndent();\n incrementedIndent = true;\n }\n } else {\n ctx.print(null, separator, false);\n }\n }\n handler(expressions[i]);\n }\n if (incrementedIndent) {\n ctx.decIndent();\n ctx.decIndent();\n }\n }\n visitAllStatements(statements, ctx) {\n statements.forEach(stmt => stmt.visitStatement(this, ctx));\n }\n}\nfunction escapeIdentifier(input, escapeDollar, alwaysQuote = true) {\n if (input == null) {\n return null;\n }\n const body = input.replace(_SINGLE_QUOTE_ESCAPE_STRING_RE, (...match) => {\n if (match[0] == '$') {\n return escapeDollar ? '\\\\$' : '$';\n } else if (match[0] == '\\n') {\n return '\\\\n';\n } else if (match[0] == '\\r') {\n return '\\\\r';\n } else {\n return `\\\\${match[0]}`;\n }\n });\n const requiresQuotes = alwaysQuote || !_LEGAL_IDENTIFIER_RE.test(body);\n return requiresQuotes ? `'${body}'` : body;\n}\nfunction _createIndent(count) {\n let res = '';\n for (let i = 0; i < count; i++) {\n res += _INDENT_WITH;\n }\n return res;\n}\n\nfunction typeWithParameters(type, numParams) {\n if (numParams === 0) {\n return expressionType(type);\n }\n const params = [];\n for (let i = 0; i < numParams; i++) {\n params.push(DYNAMIC_TYPE);\n }\n return expressionType(type, undefined, params);\n}\nfunction getSafePropertyAccessString(accessor, name) {\n const escapedName = escapeIdentifier(name, false, false);\n return escapedName !== name ? `${accessor}[${escapedName}]` : `${accessor}.${name}`;\n}\nfunction jitOnlyGuardedExpression(expr) {\n return guardedExpression('ngJitMode', expr);\n}\nfunction devOnlyGuardedExpression(expr) {\n return guardedExpression('ngDevMode', expr);\n}\nfunction guardedExpression(guard, expr) {\n const guardExpr = new ExternalExpr({\n name: guard,\n moduleName: null\n });\n const guardNotDefined = new BinaryOperatorExpr(BinaryOperator.Identical, new TypeofExpr(guardExpr), literal('undefined'));\n const guardUndefinedOrTrue = new BinaryOperatorExpr(BinaryOperator.Or, guardNotDefined, guardExpr, undefined, undefined);\n return new BinaryOperatorExpr(BinaryOperator.And, guardUndefinedOrTrue, expr);\n}\nfunction wrapReference(value) {\n const wrapped = new WrappedNodeExpr(value);\n return {\n value: wrapped,\n type: wrapped\n };\n}\nfunction refsToArray(refs, shouldForwardDeclare) {\n const values = literalArr(refs.map(ref => ref.value));\n return shouldForwardDeclare ? arrowFn([], values) : values;\n}\nfunction createMayBeForwardRefExpression(expression, forwardRef) {\n return {\n expression,\n forwardRef\n };\n}\nfunction convertFromMaybeForwardRefExpression({\n expression,\n forwardRef\n}) {\n switch (forwardRef) {\n case 0:\n case 1:\n return expression;\n case 2:\n return generateForwardRef(expression);\n }\n}\nfunction generateForwardRef(expr) {\n return importExpr(Identifiers.forwardRef).callFn([arrowFn([], expr)]);\n}\n\nvar R3FactoryDelegateType;\n(function (R3FactoryDelegateType) {\n R3FactoryDelegateType[R3FactoryDelegateType[\"Class\"] = 0] = \"Class\";\n R3FactoryDelegateType[R3FactoryDelegateType[\"Function\"] = 1] = \"Function\";\n})(R3FactoryDelegateType || (R3FactoryDelegateType = {}));\nfunction compileFactoryFunction(meta) {\n const t = variable('__ngFactoryType__');\n let baseFactoryVar = null;\n const typeForCtor = !isDelegatedFactoryMetadata(meta) ? new BinaryOperatorExpr(BinaryOperator.Or, t, meta.type.value) : t;\n let ctorExpr = null;\n if (meta.deps !== null) {\n if (meta.deps !== 'invalid') {\n ctorExpr = new InstantiateExpr(typeForCtor, injectDependencies(meta.deps, meta.target));\n }\n } else {\n baseFactoryVar = variable(`ɵ${meta.name}_BaseFactory`);\n ctorExpr = baseFactoryVar.callFn([typeForCtor]);\n }\n const body = [];\n let retExpr = null;\n function makeConditionalFactory(nonCtorExpr) {\n const r = variable('__ngConditionalFactory__');\n body.push(new DeclareVarStmt(r.name, NULL_EXPR, INFERRED_TYPE));\n const ctorStmt = ctorExpr !== null ? r.set(ctorExpr).toStmt() : importExpr(Identifiers.invalidFactory).callFn([]).toStmt();\n body.push(ifStmt(t, [ctorStmt], [r.set(nonCtorExpr).toStmt()]));\n return r;\n }\n if (isDelegatedFactoryMetadata(meta)) {\n const delegateArgs = injectDependencies(meta.delegateDeps, meta.target);\n const factoryExpr = new (meta.delegateType === R3FactoryDelegateType.Class ? InstantiateExpr : InvokeFunctionExpr)(meta.delegate, delegateArgs);\n retExpr = makeConditionalFactory(factoryExpr);\n } else if (isExpressionFactoryMetadata(meta)) {\n retExpr = makeConditionalFactory(meta.expression);\n } else {\n retExpr = ctorExpr;\n }\n if (retExpr === null) {\n body.push(importExpr(Identifiers.invalidFactory).callFn([]).toStmt());\n } else if (baseFactoryVar !== null) {\n const getInheritedFactoryCall = importExpr(Identifiers.getInheritedFactory).callFn([meta.type.value]);\n const baseFactory = new BinaryOperatorExpr(BinaryOperator.Or, baseFactoryVar, baseFactoryVar.set(getInheritedFactoryCall));\n body.push(new ReturnStatement(baseFactory.callFn([typeForCtor])));\n } else {\n body.push(new ReturnStatement(retExpr));\n }\n let factoryFn = fn([new FnParam(t.name, DYNAMIC_TYPE)], body, INFERRED_TYPE, undefined, `${meta.name}_Factory`);\n if (baseFactoryVar !== null) {\n factoryFn = arrowFn([], [new DeclareVarStmt(baseFactoryVar.name), new ReturnStatement(factoryFn)]).callFn([], undefined, true);\n }\n return {\n expression: factoryFn,\n statements: [],\n type: createFactoryType(meta)\n };\n}\nfunction createFactoryType(meta) {\n const ctorDepsType = meta.deps !== null && meta.deps !== 'invalid' ? createCtorDepsType(meta.deps) : NONE_TYPE;\n return expressionType(importExpr(Identifiers.FactoryDeclaration, [typeWithParameters(meta.type.type, meta.typeArgumentCount), ctorDepsType]));\n}\nfunction injectDependencies(deps, target) {\n return deps.map((dep, index) => compileInjectDependency(dep, target, index));\n}\nfunction compileInjectDependency(dep, target, index) {\n if (dep.token === null) {\n return importExpr(Identifiers.invalidFactoryDep).callFn([literal(index)]);\n } else if (dep.attributeNameType === null) {\n const flags = 0 | (dep.self ? 2 : 0) | (dep.skipSelf ? 4 : 0) | (dep.host ? 1 : 0) | (dep.optional ? 8 : 0) | (target === FactoryTarget.Pipe ? 16 : 0);\n let flagsParam = flags !== 0 || dep.optional ? literal(flags) : null;\n const injectArgs = [dep.token];\n if (flagsParam) {\n injectArgs.push(flagsParam);\n }\n const injectFn = getInjectFn(target);\n return importExpr(injectFn).callFn(injectArgs);\n } else {\n return importExpr(Identifiers.injectAttribute).callFn([dep.token]);\n }\n}\nfunction createCtorDepsType(deps) {\n let hasTypes = false;\n const attributeTypes = deps.map(dep => {\n const type = createCtorDepType(dep);\n if (type !== null) {\n hasTypes = true;\n return type;\n } else {\n return literal(null);\n }\n });\n if (hasTypes) {\n return expressionType(literalArr(attributeTypes));\n } else {\n return NONE_TYPE;\n }\n}\nfunction createCtorDepType(dep) {\n const entries = [];\n if (dep.attributeNameType !== null) {\n entries.push({\n key: 'attribute',\n value: dep.attributeNameType,\n quoted: false\n });\n }\n if (dep.optional) {\n entries.push({\n key: 'optional',\n value: literal(true),\n quoted: false\n });\n }\n if (dep.host) {\n entries.push({\n key: 'host',\n value: literal(true),\n quoted: false\n });\n }\n if (dep.self) {\n entries.push({\n key: 'self',\n value: literal(true),\n quoted: false\n });\n }\n if (dep.skipSelf) {\n entries.push({\n key: 'skipSelf',\n value: literal(true),\n quoted: false\n });\n }\n return entries.length > 0 ? literalMap(entries) : null;\n}\nfunction isDelegatedFactoryMetadata(meta) {\n return meta.delegateType !== undefined;\n}\nfunction isExpressionFactoryMetadata(meta) {\n return meta.expression !== undefined;\n}\nfunction getInjectFn(target) {\n switch (target) {\n case FactoryTarget.Component:\n case FactoryTarget.Directive:\n case FactoryTarget.Pipe:\n return Identifiers.directiveInject;\n case FactoryTarget.NgModule:\n case FactoryTarget.Injectable:\n default:\n return Identifiers.inject;\n }\n}\n\nclass ParseSpan {\n start;\n end;\n constructor(start, end) {\n this.start = start;\n this.end = end;\n }\n toAbsolute(absoluteOffset) {\n return new AbsoluteSourceSpan(absoluteOffset + this.start, absoluteOffset + this.end);\n }\n}\nclass AST {\n span;\n sourceSpan;\n constructor(span, sourceSpan) {\n this.span = span;\n this.sourceSpan = sourceSpan;\n }\n toString() {\n return 'AST';\n }\n}\nclass ASTWithName extends AST {\n nameSpan;\n constructor(span, sourceSpan, nameSpan) {\n super(span, sourceSpan);\n this.nameSpan = nameSpan;\n }\n}\nlet EmptyExpr$1 = class EmptyExpr extends AST {\n visit(visitor, context = null) {\n return visitor.visitEmptyExpr?.(this, context);\n }\n};\nclass ImplicitReceiver extends AST {\n visit(visitor, context = null) {\n return visitor.visitImplicitReceiver(this, context);\n }\n}\nclass ThisReceiver extends AST {\n visit(visitor, context = null) {\n return visitor.visitThisReceiver?.(this, context);\n }\n}\nclass Chain extends AST {\n expressions;\n constructor(span, sourceSpan, expressions) {\n super(span, sourceSpan);\n this.expressions = expressions;\n }\n visit(visitor, context = null) {\n return visitor.visitChain(this, context);\n }\n}\nclass Conditional extends AST {\n condition;\n trueExp;\n falseExp;\n constructor(span, sourceSpan, condition, trueExp, falseExp) {\n super(span, sourceSpan);\n this.condition = condition;\n this.trueExp = trueExp;\n this.falseExp = falseExp;\n }\n visit(visitor, context = null) {\n return visitor.visitConditional(this, context);\n }\n}\nclass PropertyRead extends ASTWithName {\n receiver;\n name;\n constructor(span, sourceSpan, nameSpan, receiver, name) {\n super(span, sourceSpan, nameSpan);\n this.receiver = receiver;\n this.name = name;\n }\n visit(visitor, context = null) {\n return visitor.visitPropertyRead(this, context);\n }\n}\nclass SafePropertyRead extends ASTWithName {\n receiver;\n name;\n constructor(span, sourceSpan, nameSpan, receiver, name) {\n super(span, sourceSpan, nameSpan);\n this.receiver = receiver;\n this.name = name;\n }\n visit(visitor, context = null) {\n return visitor.visitSafePropertyRead(this, context);\n }\n}\nclass KeyedRead extends AST {\n receiver;\n key;\n constructor(span, sourceSpan, receiver, key) {\n super(span, sourceSpan);\n this.receiver = receiver;\n this.key = key;\n }\n visit(visitor, context = null) {\n return visitor.visitKeyedRead(this, context);\n }\n}\nclass SafeKeyedRead extends AST {\n receiver;\n key;\n constructor(span, sourceSpan, receiver, key) {\n super(span, sourceSpan);\n this.receiver = receiver;\n this.key = key;\n }\n visit(visitor, context = null) {\n return visitor.visitSafeKeyedRead(this, context);\n }\n}\nvar BindingPipeType;\n(function (BindingPipeType) {\n BindingPipeType[BindingPipeType[\"ReferencedByName\"] = 0] = \"ReferencedByName\";\n BindingPipeType[BindingPipeType[\"ReferencedDirectly\"] = 1] = \"ReferencedDirectly\";\n})(BindingPipeType || (BindingPipeType = {}));\nclass BindingPipe extends ASTWithName {\n exp;\n name;\n args;\n type;\n constructor(span, sourceSpan, exp, name, args, type, nameSpan) {\n super(span, sourceSpan, nameSpan);\n this.exp = exp;\n this.name = name;\n this.args = args;\n this.type = type;\n }\n visit(visitor, context = null) {\n return visitor.visitPipe(this, context);\n }\n}\nclass LiteralPrimitive extends AST {\n value;\n constructor(span, sourceSpan, value) {\n super(span, sourceSpan);\n this.value = value;\n }\n visit(visitor, context = null) {\n return visitor.visitLiteralPrimitive(this, context);\n }\n}\nclass LiteralArray extends AST {\n expressions;\n constructor(span, sourceSpan, expressions) {\n super(span, sourceSpan);\n this.expressions = expressions;\n }\n visit(visitor, context = null) {\n return visitor.visitLiteralArray(this, context);\n }\n}\nclass SpreadElement extends AST {\n expression;\n constructor(span, sourceSpan, expression) {\n super(span, sourceSpan);\n this.expression = expression;\n }\n visit(visitor, context = null) {\n return visitor.visitSpreadElement(this, context);\n }\n}\nclass LiteralMap extends AST {\n keys;\n values;\n constructor(span, sourceSpan, keys, values) {\n super(span, sourceSpan);\n this.keys = keys;\n this.values = values;\n }\n visit(visitor, context = null) {\n return visitor.visitLiteralMap(this, context);\n }\n}\nlet Interpolation$1 = class Interpolation extends AST {\n strings;\n expressions;\n constructor(span, sourceSpan, strings, expressions) {\n super(span, sourceSpan);\n this.strings = strings;\n this.expressions = expressions;\n }\n visit(visitor, context = null) {\n return visitor.visitInterpolation(this, context);\n }\n};\nclass Binary extends AST {\n operation;\n left;\n right;\n constructor(span, sourceSpan, operation, left, right) {\n super(span, sourceSpan);\n this.operation = operation;\n this.left = left;\n this.right = right;\n }\n visit(visitor, context = null) {\n return visitor.visitBinary(this, context);\n }\n static isAssignmentOperation(op) {\n return op === '=' || op === '+=' || op === '-=' || op === '*=' || op === '/=' || op === '%=' || op === '**=' || op === '&&=' || op === '||=' || op === '??=';\n }\n}\nclass Unary extends Binary {\n operator;\n expr;\n left = null;\n right = null;\n operation = null;\n static createMinus(span, sourceSpan, expr) {\n return new Unary(span, sourceSpan, '-', expr, '-', new LiteralPrimitive(span, sourceSpan, 0), expr);\n }\n static createPlus(span, sourceSpan, expr) {\n return new Unary(span, sourceSpan, '+', expr, '-', expr, new LiteralPrimitive(span, sourceSpan, 0));\n }\n constructor(span, sourceSpan, operator, expr, binaryOp, binaryLeft, binaryRight) {\n super(span, sourceSpan, binaryOp, binaryLeft, binaryRight);\n this.operator = operator;\n this.expr = expr;\n }\n visit(visitor, context = null) {\n if (visitor.visitUnary !== undefined) {\n return visitor.visitUnary(this, context);\n }\n return visitor.visitBinary(this, context);\n }\n}\nclass PrefixNot extends AST {\n expression;\n constructor(span, sourceSpan, expression) {\n super(span, sourceSpan);\n this.expression = expression;\n }\n visit(visitor, context = null) {\n return visitor.visitPrefixNot(this, context);\n }\n}\nclass TypeofExpression extends AST {\n expression;\n constructor(span, sourceSpan, expression) {\n super(span, sourceSpan);\n this.expression = expression;\n }\n visit(visitor, context = null) {\n return visitor.visitTypeofExpression(this, context);\n }\n}\nclass VoidExpression extends AST {\n expression;\n constructor(span, sourceSpan, expression) {\n super(span, sourceSpan);\n this.expression = expression;\n }\n visit(visitor, context = null) {\n return visitor.visitVoidExpression(this, context);\n }\n}\nclass NonNullAssert extends AST {\n expression;\n constructor(span, sourceSpan, expression) {\n super(span, sourceSpan);\n this.expression = expression;\n }\n visit(visitor, context = null) {\n return visitor.visitNonNullAssert(this, context);\n }\n}\nclass Call extends AST {\n receiver;\n args;\n argumentSpan;\n constructor(span, sourceSpan, receiver, args, argumentSpan) {\n super(span, sourceSpan);\n this.receiver = receiver;\n this.args = args;\n this.argumentSpan = argumentSpan;\n }\n visit(visitor, context = null) {\n return visitor.visitCall(this, context);\n }\n}\nclass SafeCall extends AST {\n receiver;\n args;\n argumentSpan;\n constructor(span, sourceSpan, receiver, args, argumentSpan) {\n super(span, sourceSpan);\n this.receiver = receiver;\n this.args = args;\n this.argumentSpan = argumentSpan;\n }\n visit(visitor, context = null) {\n return visitor.visitSafeCall(this, context);\n }\n}\nclass TaggedTemplateLiteral extends AST {\n tag;\n template;\n constructor(span, sourceSpan, tag, template) {\n super(span, sourceSpan);\n this.tag = tag;\n this.template = template;\n }\n visit(visitor, context) {\n return visitor.visitTaggedTemplateLiteral(this, context);\n }\n}\nclass TemplateLiteral extends AST {\n elements;\n expressions;\n constructor(span, sourceSpan, elements, expressions) {\n super(span, sourceSpan);\n this.elements = elements;\n this.expressions = expressions;\n }\n visit(visitor, context) {\n return visitor.visitTemplateLiteral(this, context);\n }\n}\nclass TemplateLiteralElement extends AST {\n text;\n constructor(span, sourceSpan, text) {\n super(span, sourceSpan);\n this.text = text;\n }\n visit(visitor, context) {\n return visitor.visitTemplateLiteralElement(this, context);\n }\n}\nclass ParenthesizedExpression extends AST {\n expression;\n constructor(span, sourceSpan, expression) {\n super(span, sourceSpan);\n this.expression = expression;\n }\n visit(visitor, context) {\n return visitor.visitParenthesizedExpression(this, context);\n }\n}\nclass ArrowFunctionIdentifierParameter {\n name;\n span;\n sourceSpan;\n constructor(name, span, sourceSpan) {\n this.name = name;\n this.span = span;\n this.sourceSpan = sourceSpan;\n }\n}\nclass ArrowFunction extends AST {\n parameters;\n body;\n constructor(span, sourceSpan, parameters, body) {\n super(span, sourceSpan);\n this.parameters = parameters;\n this.body = body;\n }\n visit(visitor, context) {\n return visitor.visitArrowFunction(this, context);\n }\n}\nclass RegularExpressionLiteral extends AST {\n body;\n flags;\n constructor(span, sourceSpan, body, flags) {\n super(span, sourceSpan);\n this.body = body;\n this.flags = flags;\n }\n visit(visitor, context) {\n return visitor.visitRegularExpressionLiteral(this, context);\n }\n}\nclass AbsoluteSourceSpan {\n start;\n end;\n constructor(start, end) {\n this.start = start;\n this.end = end;\n }\n}\nclass ASTWithSource extends AST {\n ast;\n source;\n location;\n errors;\n constructor(ast, source, location, absoluteOffset, errors) {\n super(new ParseSpan(0, source === null ? 0 : source.length), new AbsoluteSourceSpan(absoluteOffset, source === null ? absoluteOffset : absoluteOffset + source.length));\n this.ast = ast;\n this.source = source;\n this.location = location;\n this.errors = errors;\n }\n visit(visitor, context = null) {\n if (visitor.visitASTWithSource) {\n return visitor.visitASTWithSource(this, context);\n }\n return this.ast.visit(visitor, context);\n }\n toString() {\n return `${this.source} in ${this.location}`;\n }\n}\nclass VariableBinding {\n sourceSpan;\n key;\n value;\n constructor(sourceSpan, key, value) {\n this.sourceSpan = sourceSpan;\n this.key = key;\n this.value = value;\n }\n}\nclass ExpressionBinding {\n sourceSpan;\n key;\n value;\n constructor(sourceSpan, key, value) {\n this.sourceSpan = sourceSpan;\n this.key = key;\n this.value = value;\n }\n}\nclass RecursiveAstVisitor {\n visit(ast, context) {\n ast.visit(this, context);\n }\n visitUnary(ast, context) {\n this.visit(ast.expr, context);\n }\n visitBinary(ast, context) {\n this.visit(ast.left, context);\n this.visit(ast.right, context);\n }\n visitChain(ast, context) {\n this.visitAll(ast.expressions, context);\n }\n visitConditional(ast, context) {\n this.visit(ast.condition, context);\n this.visit(ast.trueExp, context);\n this.visit(ast.falseExp, context);\n }\n visitPipe(ast, context) {\n this.visit(ast.exp, context);\n this.visitAll(ast.args, context);\n }\n visitImplicitReceiver(ast, context) {}\n visitThisReceiver(ast, context) {}\n visitInterpolation(ast, context) {\n this.visitAll(ast.expressions, context);\n }\n visitKeyedRead(ast, context) {\n this.visit(ast.receiver, context);\n this.visit(ast.key, context);\n }\n visitLiteralArray(ast, context) {\n this.visitAll(ast.expressions, context);\n }\n visitLiteralMap(ast, context) {\n this.visitAll(ast.values, context);\n }\n visitLiteralPrimitive(ast, context) {}\n visitPrefixNot(ast, context) {\n this.visit(ast.expression, context);\n }\n visitTypeofExpression(ast, context) {\n this.visit(ast.expression, context);\n }\n visitVoidExpression(ast, context) {\n this.visit(ast.expression, context);\n }\n visitNonNullAssert(ast, context) {\n this.visit(ast.expression, context);\n }\n visitPropertyRead(ast, context) {\n this.visit(ast.receiver, context);\n }\n visitSafePropertyRead(ast, context) {\n this.visit(ast.receiver, context);\n }\n visitSafeKeyedRead(ast, context) {\n this.visit(ast.receiver, context);\n this.visit(ast.key, context);\n }\n visitCall(ast, context) {\n this.visit(ast.receiver, context);\n this.visitAll(ast.args, context);\n }\n visitSafeCall(ast, context) {\n this.visit(ast.receiver, context);\n this.visitAll(ast.args, context);\n }\n visitTemplateLiteral(ast, context) {\n for (let i = 0; i < ast.elements.length; i++) {\n this.visit(ast.elements[i], context);\n const expression = i < ast.expressions.length ? ast.expressions[i] : null;\n if (expression !== null) {\n this.visit(expression, context);\n }\n }\n }\n visitTemplateLiteralElement(ast, context) {}\n visitTaggedTemplateLiteral(ast, context) {\n this.visit(ast.tag, context);\n this.visit(ast.template, context);\n }\n visitParenthesizedExpression(ast, context) {\n this.visit(ast.expression, context);\n }\n visitArrowFunction(ast, context) {\n this.visit(ast.body, context);\n }\n visitRegularExpressionLiteral(ast, context) {}\n visitSpreadElement(ast, context) {\n this.visit(ast.expression, context);\n }\n visitEmptyExpr(ast, context) {}\n visitAll(asts, context) {\n for (const ast of asts) {\n this.visit(ast, context);\n }\n }\n}\nclass ParsedProperty {\n name;\n expression;\n type;\n sourceSpan;\n keySpan;\n valueSpan;\n isLiteral;\n isLegacyAnimation;\n isAnimation;\n constructor(name, expression, type, sourceSpan, keySpan, valueSpan) {\n this.name = name;\n this.expression = expression;\n this.type = type;\n this.sourceSpan = sourceSpan;\n this.keySpan = keySpan;\n this.valueSpan = valueSpan;\n this.isLiteral = this.type === ParsedPropertyType.LITERAL_ATTR;\n this.isLegacyAnimation = this.type === ParsedPropertyType.LEGACY_ANIMATION;\n this.isAnimation = this.type === ParsedPropertyType.ANIMATION;\n }\n}\nvar ParsedPropertyType;\n(function (ParsedPropertyType) {\n ParsedPropertyType[ParsedPropertyType[\"DEFAULT\"] = 0] = \"DEFAULT\";\n ParsedPropertyType[ParsedPropertyType[\"LITERAL_ATTR\"] = 1] = \"LITERAL_ATTR\";\n ParsedPropertyType[ParsedPropertyType[\"LEGACY_ANIMATION\"] = 2] = \"LEGACY_ANIMATION\";\n ParsedPropertyType[ParsedPropertyType[\"TWO_WAY\"] = 3] = \"TWO_WAY\";\n ParsedPropertyType[ParsedPropertyType[\"ANIMATION\"] = 4] = \"ANIMATION\";\n})(ParsedPropertyType || (ParsedPropertyType = {}));\nvar ParsedEventType;\n(function (ParsedEventType) {\n ParsedEventType[ParsedEventType[\"Regular\"] = 0] = \"Regular\";\n ParsedEventType[ParsedEventType[\"LegacyAnimation\"] = 1] = \"LegacyAnimation\";\n ParsedEventType[ParsedEventType[\"TwoWay\"] = 2] = \"TwoWay\";\n ParsedEventType[ParsedEventType[\"Animation\"] = 3] = \"Animation\";\n})(ParsedEventType || (ParsedEventType = {}));\nclass ParsedEvent {\n name;\n targetOrPhase;\n type;\n handler;\n sourceSpan;\n handlerSpan;\n keySpan;\n constructor(name, targetOrPhase, type, handler, sourceSpan, handlerSpan, keySpan) {\n this.name = name;\n this.targetOrPhase = targetOrPhase;\n this.type = type;\n this.handler = handler;\n this.sourceSpan = sourceSpan;\n this.handlerSpan = handlerSpan;\n this.keySpan = keySpan;\n }\n}\nclass ParsedVariable {\n name;\n value;\n sourceSpan;\n keySpan;\n valueSpan;\n constructor(name, value, sourceSpan, keySpan, valueSpan) {\n this.name = name;\n this.value = value;\n this.sourceSpan = sourceSpan;\n this.keySpan = keySpan;\n this.valueSpan = valueSpan;\n }\n}\nvar BindingType;\n(function (BindingType) {\n BindingType[BindingType[\"Property\"] = 0] = \"Property\";\n BindingType[BindingType[\"Attribute\"] = 1] = \"Attribute\";\n BindingType[BindingType[\"Class\"] = 2] = \"Class\";\n BindingType[BindingType[\"Style\"] = 3] = \"Style\";\n BindingType[BindingType[\"LegacyAnimation\"] = 4] = \"LegacyAnimation\";\n BindingType[BindingType[\"TwoWay\"] = 5] = \"TwoWay\";\n BindingType[BindingType[\"Animation\"] = 6] = \"Animation\";\n})(BindingType || (BindingType = {}));\nclass BoundElementProperty {\n name;\n type;\n securityContext;\n value;\n unit;\n sourceSpan;\n keySpan;\n valueSpan;\n constructor(name, type, securityContext, value, unit, sourceSpan, keySpan, valueSpan) {\n this.name = name;\n this.type = type;\n this.securityContext = securityContext;\n this.value = value;\n this.unit = unit;\n this.sourceSpan = sourceSpan;\n this.keySpan = keySpan;\n this.valueSpan = valueSpan;\n }\n}\n\nvar TagContentType;\n(function (TagContentType) {\n TagContentType[TagContentType[\"RAW_TEXT\"] = 0] = \"RAW_TEXT\";\n TagContentType[TagContentType[\"ESCAPABLE_RAW_TEXT\"] = 1] = \"ESCAPABLE_RAW_TEXT\";\n TagContentType[TagContentType[\"PARSABLE_DATA\"] = 2] = \"PARSABLE_DATA\";\n})(TagContentType || (TagContentType = {}));\nfunction splitNsName(elementName, fatal = true) {\n if (elementName[0] != ':') {\n return [null, elementName];\n }\n const colonIndex = elementName.indexOf(':', 1);\n if (colonIndex === -1) {\n if (fatal) {\n throw new Error(`Unsupported format \"${elementName}\" expecting \":namespace:name\"`);\n } else {\n return [null, elementName];\n }\n }\n return [elementName.slice(1, colonIndex), elementName.slice(colonIndex + 1)];\n}\nfunction isNgContainer(tagName) {\n return splitNsName(tagName)[1] === 'ng-container';\n}\nfunction isNgContent(tagName) {\n return splitNsName(tagName)[1] === 'ng-content';\n}\nfunction isNgTemplate(tagName) {\n return splitNsName(tagName)[1] === 'ng-template';\n}\nfunction getNsPrefix(fullName) {\n return fullName === null ? null : splitNsName(fullName)[0];\n}\nfunction mergeNsAndName(prefix, localName) {\n return prefix ? `:${prefix}:${localName}` : localName;\n}\n\nlet Comment$1 = class Comment {\n value;\n sourceSpan;\n constructor(value, sourceSpan) {\n this.value = value;\n this.sourceSpan = sourceSpan;\n }\n visit(_visitor) {\n throw new Error('visit() not implemented for Comment');\n }\n};\nlet Text$3 = class Text {\n value;\n sourceSpan;\n constructor(value, sourceSpan) {\n this.value = value;\n this.sourceSpan = sourceSpan;\n }\n visit(visitor) {\n return visitor.visitText(this);\n }\n};\nclass BoundText {\n value;\n sourceSpan;\n i18n;\n constructor(value, sourceSpan, i18n) {\n this.value = value;\n this.sourceSpan = sourceSpan;\n this.i18n = i18n;\n }\n visit(visitor) {\n return visitor.visitBoundText(this);\n }\n}\nclass TextAttribute {\n name;\n value;\n sourceSpan;\n keySpan;\n valueSpan;\n i18n;\n constructor(name, value, sourceSpan, keySpan, valueSpan, i18n) {\n this.name = name;\n this.value = value;\n this.sourceSpan = sourceSpan;\n this.keySpan = keySpan;\n this.valueSpan = valueSpan;\n this.i18n = i18n;\n }\n visit(visitor) {\n return visitor.visitTextAttribute(this);\n }\n}\nclass BoundAttribute {\n name;\n type;\n securityContext;\n value;\n unit;\n sourceSpan;\n keySpan;\n valueSpan;\n i18n;\n constructor(name, type, securityContext, value, unit, sourceSpan, keySpan, valueSpan, i18n) {\n this.name = name;\n this.type = type;\n this.securityContext = securityContext;\n this.value = value;\n this.unit = unit;\n this.sourceSpan = sourceSpan;\n this.keySpan = keySpan;\n this.valueSpan = valueSpan;\n this.i18n = i18n;\n }\n static fromBoundElementProperty(prop, i18n) {\n if (prop.keySpan === undefined) {\n throw new Error(`Unexpected state: keySpan must be defined for bound attributes but was not for ${prop.name}: ${prop.sourceSpan}`);\n }\n return new BoundAttribute(prop.name, prop.type, prop.securityContext, prop.value, prop.unit, prop.sourceSpan, prop.keySpan, prop.valueSpan, i18n);\n }\n visit(visitor) {\n return visitor.visitBoundAttribute(this);\n }\n}\nclass BoundEvent {\n name;\n type;\n handler;\n target;\n phase;\n sourceSpan;\n handlerSpan;\n keySpan;\n constructor(name, type, handler, target, phase, sourceSpan, handlerSpan, keySpan) {\n this.name = name;\n this.type = type;\n this.handler = handler;\n this.target = target;\n this.phase = phase;\n this.sourceSpan = sourceSpan;\n this.handlerSpan = handlerSpan;\n this.keySpan = keySpan;\n }\n static fromParsedEvent(event) {\n const target = event.type === ParsedEventType.Regular ? event.targetOrPhase : null;\n const phase = event.type === ParsedEventType.LegacyAnimation ? event.targetOrPhase : null;\n if (event.keySpan === undefined) {\n throw new Error(`Unexpected state: keySpan must be defined for bound event but was not for ${event.name}: ${event.sourceSpan}`);\n }\n return new BoundEvent(event.name, event.type, event.handler, target, phase, event.sourceSpan, event.handlerSpan, event.keySpan);\n }\n visit(visitor) {\n return visitor.visitBoundEvent(this);\n }\n}\nlet Element$1 = class Element {\n name;\n attributes;\n inputs;\n outputs;\n directives;\n children;\n references;\n isSelfClosing;\n sourceSpan;\n startSourceSpan;\n endSourceSpan;\n isVoid;\n i18n;\n constructor(name, attributes, inputs, outputs, directives, children, references, isSelfClosing, sourceSpan, startSourceSpan, endSourceSpan, isVoid, i18n) {\n this.name = name;\n this.attributes = attributes;\n this.inputs = inputs;\n this.outputs = outputs;\n this.directives = directives;\n this.children = children;\n this.references = references;\n this.isSelfClosing = isSelfClosing;\n this.sourceSpan = sourceSpan;\n this.startSourceSpan = startSourceSpan;\n this.endSourceSpan = endSourceSpan;\n this.isVoid = isVoid;\n this.i18n = i18n;\n }\n visit(visitor) {\n return visitor.visitElement(this);\n }\n};\nclass DeferredTrigger {\n nameSpan;\n sourceSpan;\n prefetchSpan;\n whenOrOnSourceSpan;\n hydrateSpan;\n constructor(nameSpan, sourceSpan, prefetchSpan, whenOrOnSourceSpan, hydrateSpan) {\n this.nameSpan = nameSpan;\n this.sourceSpan = sourceSpan;\n this.prefetchSpan = prefetchSpan;\n this.whenOrOnSourceSpan = whenOrOnSourceSpan;\n this.hydrateSpan = hydrateSpan;\n }\n visit(visitor) {\n return visitor.visitDeferredTrigger(this);\n }\n}\nclass BoundDeferredTrigger extends DeferredTrigger {\n value;\n constructor(value, sourceSpan, prefetchSpan, whenSourceSpan, hydrateSpan) {\n super(null, sourceSpan, prefetchSpan, whenSourceSpan, hydrateSpan);\n this.value = value;\n }\n}\nclass NeverDeferredTrigger extends DeferredTrigger {}\nclass IdleDeferredTrigger extends DeferredTrigger {}\nclass ImmediateDeferredTrigger extends DeferredTrigger {}\nclass HoverDeferredTrigger extends DeferredTrigger {\n reference;\n constructor(reference, nameSpan, sourceSpan, prefetchSpan, onSourceSpan, hydrateSpan) {\n super(nameSpan, sourceSpan, prefetchSpan, onSourceSpan, hydrateSpan);\n this.reference = reference;\n }\n}\nclass TimerDeferredTrigger extends DeferredTrigger {\n delay;\n constructor(delay, nameSpan, sourceSpan, prefetchSpan, onSourceSpan, hydrateSpan) {\n super(nameSpan, sourceSpan, prefetchSpan, onSourceSpan, hydrateSpan);\n this.delay = delay;\n }\n}\nclass InteractionDeferredTrigger extends DeferredTrigger {\n reference;\n constructor(reference, nameSpan, sourceSpan, prefetchSpan, onSourceSpan, hydrateSpan) {\n super(nameSpan, sourceSpan, prefetchSpan, onSourceSpan, hydrateSpan);\n this.reference = reference;\n }\n}\nclass ViewportDeferredTrigger extends DeferredTrigger {\n reference;\n options;\n constructor(reference, options, nameSpan, sourceSpan, prefetchSpan, onSourceSpan, hydrateSpan) {\n super(nameSpan, sourceSpan, prefetchSpan, onSourceSpan, hydrateSpan);\n this.reference = reference;\n this.options = options;\n }\n}\nclass BlockNode {\n nameSpan;\n sourceSpan;\n startSourceSpan;\n endSourceSpan;\n constructor(nameSpan, sourceSpan, startSourceSpan, endSourceSpan) {\n this.nameSpan = nameSpan;\n this.sourceSpan = sourceSpan;\n this.startSourceSpan = startSourceSpan;\n this.endSourceSpan = endSourceSpan;\n }\n}\nclass DeferredBlockPlaceholder extends BlockNode {\n children;\n minimumTime;\n i18n;\n constructor(children, minimumTime, nameSpan, sourceSpan, startSourceSpan, endSourceSpan, i18n) {\n super(nameSpan, sourceSpan, startSourceSpan, endSourceSpan);\n this.children = children;\n this.minimumTime = minimumTime;\n this.i18n = i18n;\n }\n visit(visitor) {\n return visitor.visitDeferredBlockPlaceholder(this);\n }\n}\nclass DeferredBlockLoading extends BlockNode {\n children;\n afterTime;\n minimumTime;\n i18n;\n constructor(children, afterTime, minimumTime, nameSpan, sourceSpan, startSourceSpan, endSourceSpan, i18n) {\n super(nameSpan, sourceSpan, startSourceSpan, endSourceSpan);\n this.children = children;\n this.afterTime = afterTime;\n this.minimumTime = minimumTime;\n this.i18n = i18n;\n }\n visit(visitor) {\n return visitor.visitDeferredBlockLoading(this);\n }\n}\nclass DeferredBlockError extends BlockNode {\n children;\n i18n;\n constructor(children, nameSpan, sourceSpan, startSourceSpan, endSourceSpan, i18n) {\n super(nameSpan, sourceSpan, startSourceSpan, endSourceSpan);\n this.children = children;\n this.i18n = i18n;\n }\n visit(visitor) {\n return visitor.visitDeferredBlockError(this);\n }\n}\nclass DeferredBlock extends BlockNode {\n children;\n placeholder;\n loading;\n error;\n mainBlockSpan;\n i18n;\n triggers;\n prefetchTriggers;\n hydrateTriggers;\n definedTriggers;\n definedPrefetchTriggers;\n definedHydrateTriggers;\n constructor(children, triggers, prefetchTriggers, hydrateTriggers, placeholder, loading, error, nameSpan, sourceSpan, mainBlockSpan, startSourceSpan, endSourceSpan, i18n) {\n super(nameSpan, sourceSpan, startSourceSpan, endSourceSpan);\n this.children = children;\n this.placeholder = placeholder;\n this.loading = loading;\n this.error = error;\n this.mainBlockSpan = mainBlockSpan;\n this.i18n = i18n;\n this.triggers = triggers;\n this.prefetchTriggers = prefetchTriggers;\n this.hydrateTriggers = hydrateTriggers;\n this.definedTriggers = Object.keys(triggers);\n this.definedPrefetchTriggers = Object.keys(prefetchTriggers);\n this.definedHydrateTriggers = Object.keys(hydrateTriggers);\n }\n visit(visitor) {\n return visitor.visitDeferredBlock(this);\n }\n visitAll(visitor) {\n this.visitTriggers(this.definedHydrateTriggers, this.hydrateTriggers, visitor);\n this.visitTriggers(this.definedTriggers, this.triggers, visitor);\n this.visitTriggers(this.definedPrefetchTriggers, this.prefetchTriggers, visitor);\n visitAll$1(visitor, this.children);\n const remainingBlocks = [this.placeholder, this.loading, this.error].filter(x => x !== null);\n visitAll$1(visitor, remainingBlocks);\n }\n visitTriggers(keys, triggers, visitor) {\n visitAll$1(visitor, keys.map(k => triggers[k]));\n }\n}\nclass SwitchBlock extends BlockNode {\n expression;\n groups;\n unknownBlocks;\n exhaustiveCheck;\n constructor(expression, groups, unknownBlocks, exhaustiveCheck, sourceSpan, startSourceSpan, endSourceSpan, nameSpan) {\n super(nameSpan, sourceSpan, startSourceSpan, endSourceSpan);\n this.expression = expression;\n this.groups = groups;\n this.unknownBlocks = unknownBlocks;\n this.exhaustiveCheck = exhaustiveCheck;\n }\n visit(visitor) {\n return visitor.visitSwitchBlock(this);\n }\n}\nclass SwitchBlockCase extends BlockNode {\n expression;\n constructor(expression, sourceSpan, startSourceSpan, endSourceSpan, nameSpan) {\n super(nameSpan, sourceSpan, startSourceSpan, endSourceSpan);\n this.expression = expression;\n }\n visit(visitor) {\n return visitor.visitSwitchBlockCase(this);\n }\n}\nclass SwitchBlockCaseGroup extends BlockNode {\n cases;\n children;\n i18n;\n constructor(cases, children, sourceSpan, startSourceSpan, endSourceSpan, nameSpan, i18n) {\n super(nameSpan, sourceSpan, startSourceSpan, endSourceSpan);\n this.cases = cases;\n this.children = children;\n this.i18n = i18n;\n }\n visit(visitor) {\n return visitor.visitSwitchBlockCaseGroup(this);\n }\n}\nclass SwitchExhaustiveCheck extends BlockNode {\n constructor(sourceSpan, startSourceSpan, endSourceSpan, nameSpan) {\n super(nameSpan, sourceSpan, startSourceSpan, endSourceSpan);\n }\n visit(visitor) {\n return visitor.visitSwitchExhaustiveCheck(this);\n }\n}\nclass ForLoopBlock extends BlockNode {\n item;\n expression;\n trackBy;\n trackKeywordSpan;\n contextVariables;\n children;\n empty;\n mainBlockSpan;\n i18n;\n constructor(item, expression, trackBy, trackKeywordSpan, contextVariables, children, empty, sourceSpan, mainBlockSpan, startSourceSpan, endSourceSpan, nameSpan, i18n) {\n super(nameSpan, sourceSpan, startSourceSpan, endSourceSpan);\n this.item = item;\n this.expression = expression;\n this.trackBy = trackBy;\n this.trackKeywordSpan = trackKeywordSpan;\n this.contextVariables = contextVariables;\n this.children = children;\n this.empty = empty;\n this.mainBlockSpan = mainBlockSpan;\n this.i18n = i18n;\n }\n visit(visitor) {\n return visitor.visitForLoopBlock(this);\n }\n}\nclass ForLoopBlockEmpty extends BlockNode {\n children;\n i18n;\n constructor(children, sourceSpan, startSourceSpan, endSourceSpan, nameSpan, i18n) {\n super(nameSpan, sourceSpan, startSourceSpan, endSourceSpan);\n this.children = children;\n this.i18n = i18n;\n }\n visit(visitor) {\n return visitor.visitForLoopBlockEmpty(this);\n }\n}\nclass IfBlock extends BlockNode {\n branches;\n constructor(branches, sourceSpan, startSourceSpan, endSourceSpan, nameSpan) {\n super(nameSpan, sourceSpan, startSourceSpan, endSourceSpan);\n this.branches = branches;\n }\n visit(visitor) {\n return visitor.visitIfBlock(this);\n }\n}\nclass IfBlockBranch extends BlockNode {\n expression;\n children;\n expressionAlias;\n i18n;\n constructor(expression, children, expressionAlias, sourceSpan, startSourceSpan, endSourceSpan, nameSpan, i18n) {\n super(nameSpan, sourceSpan, startSourceSpan, endSourceSpan);\n this.expression = expression;\n this.children = children;\n this.expressionAlias = expressionAlias;\n this.i18n = i18n;\n }\n visit(visitor) {\n return visitor.visitIfBlockBranch(this);\n }\n}\nclass UnknownBlock {\n name;\n sourceSpan;\n nameSpan;\n constructor(name, sourceSpan, nameSpan) {\n this.name = name;\n this.sourceSpan = sourceSpan;\n this.nameSpan = nameSpan;\n }\n visit(visitor) {\n return visitor.visitUnknownBlock(this);\n }\n}\nlet LetDeclaration$1 = class LetDeclaration {\n name;\n value;\n sourceSpan;\n nameSpan;\n valueSpan;\n constructor(name, value, sourceSpan, nameSpan, valueSpan) {\n this.name = name;\n this.value = value;\n this.sourceSpan = sourceSpan;\n this.nameSpan = nameSpan;\n this.valueSpan = valueSpan;\n }\n visit(visitor) {\n return visitor.visitLetDeclaration(this);\n }\n};\nlet Component$1 = class Component {\n componentName;\n tagName;\n fullName;\n attributes;\n inputs;\n outputs;\n directives;\n children;\n references;\n isSelfClosing;\n sourceSpan;\n startSourceSpan;\n endSourceSpan;\n i18n;\n constructor(componentName, tagName, fullName, attributes, inputs, outputs, directives, children, references, isSelfClosing, sourceSpan, startSourceSpan, endSourceSpan, i18n) {\n this.componentName = componentName;\n this.tagName = tagName;\n this.fullName = fullName;\n this.attributes = attributes;\n this.inputs = inputs;\n this.outputs = outputs;\n this.directives = directives;\n this.children = children;\n this.references = references;\n this.isSelfClosing = isSelfClosing;\n this.sourceSpan = sourceSpan;\n this.startSourceSpan = startSourceSpan;\n this.endSourceSpan = endSourceSpan;\n this.i18n = i18n;\n }\n visit(visitor) {\n return visitor.visitComponent(this);\n }\n};\nlet Directive$1 = class Directive {\n name;\n attributes;\n inputs;\n outputs;\n references;\n sourceSpan;\n startSourceSpan;\n endSourceSpan;\n i18n;\n constructor(name, attributes, inputs, outputs, references, sourceSpan, startSourceSpan, endSourceSpan, i18n) {\n this.name = name;\n this.attributes = attributes;\n this.inputs = inputs;\n this.outputs = outputs;\n this.references = references;\n this.sourceSpan = sourceSpan;\n this.startSourceSpan = startSourceSpan;\n this.endSourceSpan = endSourceSpan;\n this.i18n = i18n;\n }\n visit(visitor) {\n return visitor.visitDirective(this);\n }\n};\nclass Template {\n tagName;\n attributes;\n inputs;\n outputs;\n directives;\n templateAttrs;\n children;\n references;\n variables;\n isSelfClosing;\n sourceSpan;\n startSourceSpan;\n endSourceSpan;\n i18n;\n constructor(tagName, attributes, inputs, outputs, directives, templateAttrs, children, references, variables, isSelfClosing, sourceSpan, startSourceSpan, endSourceSpan, i18n) {\n this.tagName = tagName;\n this.attributes = attributes;\n this.inputs = inputs;\n this.outputs = outputs;\n this.directives = directives;\n this.templateAttrs = templateAttrs;\n this.children = children;\n this.references = references;\n this.variables = variables;\n this.isSelfClosing = isSelfClosing;\n this.sourceSpan = sourceSpan;\n this.startSourceSpan = startSourceSpan;\n this.endSourceSpan = endSourceSpan;\n this.i18n = i18n;\n }\n visit(visitor) {\n return visitor.visitTemplate(this);\n }\n}\nclass Content {\n selector;\n attributes;\n children;\n isSelfClosing;\n sourceSpan;\n startSourceSpan;\n endSourceSpan;\n i18n;\n name = 'ng-content';\n constructor(selector, attributes, children, isSelfClosing, sourceSpan, startSourceSpan, endSourceSpan, i18n) {\n this.selector = selector;\n this.attributes = attributes;\n this.children = children;\n this.isSelfClosing = isSelfClosing;\n this.sourceSpan = sourceSpan;\n this.startSourceSpan = startSourceSpan;\n this.endSourceSpan = endSourceSpan;\n this.i18n = i18n;\n }\n visit(visitor) {\n return visitor.visitContent(this);\n }\n}\nclass Variable {\n name;\n value;\n sourceSpan;\n keySpan;\n valueSpan;\n constructor(name, value, sourceSpan, keySpan, valueSpan) {\n this.name = name;\n this.value = value;\n this.sourceSpan = sourceSpan;\n this.keySpan = keySpan;\n this.valueSpan = valueSpan;\n }\n visit(visitor) {\n return visitor.visitVariable(this);\n }\n}\nclass Reference {\n name;\n value;\n sourceSpan;\n keySpan;\n valueSpan;\n constructor(name, value, sourceSpan, keySpan, valueSpan) {\n this.name = name;\n this.value = value;\n this.sourceSpan = sourceSpan;\n this.keySpan = keySpan;\n this.valueSpan = valueSpan;\n }\n visit(visitor) {\n return visitor.visitReference(this);\n }\n}\nlet Icu$1 = class Icu {\n vars;\n placeholders;\n sourceSpan;\n i18n;\n constructor(vars, placeholders, sourceSpan, i18n) {\n this.vars = vars;\n this.placeholders = placeholders;\n this.sourceSpan = sourceSpan;\n this.i18n = i18n;\n }\n visit(visitor) {\n return visitor.visitIcu(this);\n }\n};\nclass HostElement {\n tagNames;\n bindings;\n listeners;\n sourceSpan;\n constructor(tagNames, bindings, listeners, sourceSpan) {\n this.tagNames = tagNames;\n this.bindings = bindings;\n this.listeners = listeners;\n this.sourceSpan = sourceSpan;\n if (tagNames.length === 0) {\n throw new Error('HostElement must have at least one tag name.');\n }\n }\n visit() {\n throw new Error(`HostElement cannot be visited`);\n }\n}\nlet RecursiveVisitor$1 = class RecursiveVisitor {\n visitElement(element) {\n visitAll$1(this, element.attributes);\n visitAll$1(this, element.inputs);\n visitAll$1(this, element.outputs);\n visitAll$1(this, element.directives);\n visitAll$1(this, element.children);\n visitAll$1(this, element.references);\n }\n visitTemplate(template) {\n visitAll$1(this, template.attributes);\n visitAll$1(this, template.inputs);\n visitAll$1(this, template.outputs);\n visitAll$1(this, template.directives);\n visitAll$1(this, template.children);\n visitAll$1(this, template.references);\n visitAll$1(this, template.variables);\n }\n visitDeferredBlock(deferred) {\n deferred.visitAll(this);\n }\n visitDeferredBlockPlaceholder(block) {\n visitAll$1(this, block.children);\n }\n visitDeferredBlockError(block) {\n visitAll$1(this, block.children);\n }\n visitDeferredBlockLoading(block) {\n visitAll$1(this, block.children);\n }\n visitSwitchBlock(block) {\n visitAll$1(this, block.groups);\n }\n visitSwitchBlockCase(block) {}\n visitSwitchBlockCaseGroup(block) {\n visitAll$1(this, block.cases);\n visitAll$1(this, block.children);\n }\n visitSwitchExhaustiveCheck(block) {}\n visitForLoopBlock(block) {\n const blockItems = [block.item, ...block.contextVariables, ...block.children];\n block.empty && blockItems.push(block.empty);\n visitAll$1(this, blockItems);\n }\n visitForLoopBlockEmpty(block) {\n visitAll$1(this, block.children);\n }\n visitIfBlock(block) {\n visitAll$1(this, block.branches);\n }\n visitIfBlockBranch(block) {\n visitAll$1(this, block.children);\n block.expressionAlias?.visit(this);\n }\n visitContent(content) {\n visitAll$1(this, content.children);\n }\n visitComponent(component) {\n visitAll$1(this, component.attributes);\n visitAll$1(this, component.inputs);\n visitAll$1(this, component.outputs);\n visitAll$1(this, component.directives);\n visitAll$1(this, component.children);\n visitAll$1(this, component.references);\n }\n visitDirective(directive) {\n visitAll$1(this, directive.attributes);\n visitAll$1(this, directive.inputs);\n visitAll$1(this, directive.outputs);\n visitAll$1(this, directive.references);\n }\n visitVariable(variable) {}\n visitReference(reference) {}\n visitTextAttribute(attribute) {}\n visitBoundAttribute(attribute) {}\n visitBoundEvent(attribute) {}\n visitText(text) {}\n visitBoundText(text) {}\n visitIcu(icu) {}\n visitDeferredTrigger(trigger) {}\n visitUnknownBlock(block) {}\n visitLetDeclaration(decl) {}\n};\nfunction visitAll$1(visitor, nodes) {\n const result = [];\n if (visitor.visit) {\n for (const node of nodes) {\n visitor.visit(node);\n }\n } else {\n for (const node of nodes) {\n const newNode = node.visit(visitor);\n if (newNode) {\n result.push(newNode);\n }\n }\n }\n return result;\n}\n\nclass Message {\n nodes;\n placeholders;\n placeholderToMessage;\n meaning;\n description;\n customId;\n sources;\n id;\n legacyIds = [];\n messageString;\n constructor(nodes, placeholders, placeholderToMessage, meaning, description, customId) {\n this.nodes = nodes;\n this.placeholders = placeholders;\n this.placeholderToMessage = placeholderToMessage;\n this.meaning = meaning;\n this.description = description;\n this.customId = customId;\n this.id = this.customId;\n this.messageString = serializeMessage(this.nodes);\n if (nodes.length) {\n this.sources = [{\n filePath: nodes[0].sourceSpan.start.file.url,\n startLine: nodes[0].sourceSpan.start.line + 1,\n startCol: nodes[0].sourceSpan.start.col + 1,\n endLine: nodes[nodes.length - 1].sourceSpan.end.line + 1,\n endCol: nodes[0].sourceSpan.start.col + 1\n }];\n } else {\n this.sources = [];\n }\n }\n}\nlet Text$2 = class Text {\n value;\n sourceSpan;\n constructor(value, sourceSpan) {\n this.value = value;\n this.sourceSpan = sourceSpan;\n }\n visit(visitor, context) {\n return visitor.visitText(this, context);\n }\n};\nclass Container {\n children;\n sourceSpan;\n constructor(children, sourceSpan) {\n this.children = children;\n this.sourceSpan = sourceSpan;\n }\n visit(visitor, context) {\n return visitor.visitContainer(this, context);\n }\n}\nclass Icu {\n expression;\n type;\n cases;\n sourceSpan;\n expressionPlaceholder;\n constructor(expression, type, cases, sourceSpan, expressionPlaceholder) {\n this.expression = expression;\n this.type = type;\n this.cases = cases;\n this.sourceSpan = sourceSpan;\n this.expressionPlaceholder = expressionPlaceholder;\n }\n visit(visitor, context) {\n return visitor.visitIcu(this, context);\n }\n}\nclass TagPlaceholder {\n tag;\n attrs;\n startName;\n closeName;\n children;\n isVoid;\n sourceSpan;\n startSourceSpan;\n endSourceSpan;\n constructor(tag, attrs, startName, closeName, children, isVoid, sourceSpan, startSourceSpan, endSourceSpan) {\n this.tag = tag;\n this.attrs = attrs;\n this.startName = startName;\n this.closeName = closeName;\n this.children = children;\n this.isVoid = isVoid;\n this.sourceSpan = sourceSpan;\n this.startSourceSpan = startSourceSpan;\n this.endSourceSpan = endSourceSpan;\n }\n visit(visitor, context) {\n return visitor.visitTagPlaceholder(this, context);\n }\n}\nclass Placeholder {\n value;\n name;\n sourceSpan;\n constructor(value, name, sourceSpan) {\n this.value = value;\n this.name = name;\n this.sourceSpan = sourceSpan;\n }\n visit(visitor, context) {\n return visitor.visitPlaceholder(this, context);\n }\n}\nclass IcuPlaceholder {\n value;\n name;\n sourceSpan;\n previousMessage;\n constructor(value, name, sourceSpan) {\n this.value = value;\n this.name = name;\n this.sourceSpan = sourceSpan;\n }\n visit(visitor, context) {\n return visitor.visitIcuPlaceholder(this, context);\n }\n}\nclass BlockPlaceholder {\n name;\n parameters;\n startName;\n closeName;\n children;\n sourceSpan;\n startSourceSpan;\n endSourceSpan;\n constructor(name, parameters, startName, closeName, children, sourceSpan, startSourceSpan, endSourceSpan) {\n this.name = name;\n this.parameters = parameters;\n this.startName = startName;\n this.closeName = closeName;\n this.children = children;\n this.sourceSpan = sourceSpan;\n this.startSourceSpan = startSourceSpan;\n this.endSourceSpan = endSourceSpan;\n }\n visit(visitor, context) {\n return visitor.visitBlockPlaceholder(this, context);\n }\n}\nclass CloneVisitor {\n visitText(text, context) {\n return new Text$2(text.value, text.sourceSpan);\n }\n visitContainer(container, context) {\n const children = container.children.map(n => n.visit(this, context));\n return new Container(children, container.sourceSpan);\n }\n visitIcu(icu, context) {\n const cases = {};\n Object.keys(icu.cases).forEach(key => cases[key] = icu.cases[key].visit(this, context));\n const msg = new Icu(icu.expression, icu.type, cases, icu.sourceSpan, icu.expressionPlaceholder);\n return msg;\n }\n visitTagPlaceholder(ph, context) {\n const children = ph.children.map(n => n.visit(this, context));\n return new TagPlaceholder(ph.tag, ph.attrs, ph.startName, ph.closeName, children, ph.isVoid, ph.sourceSpan, ph.startSourceSpan, ph.endSourceSpan);\n }\n visitPlaceholder(ph, context) {\n return new Placeholder(ph.value, ph.name, ph.sourceSpan);\n }\n visitIcuPlaceholder(ph, context) {\n return new IcuPlaceholder(ph.value, ph.name, ph.sourceSpan);\n }\n visitBlockPlaceholder(ph, context) {\n const children = ph.children.map(n => n.visit(this, context));\n return new BlockPlaceholder(ph.name, ph.parameters, ph.startName, ph.closeName, children, ph.sourceSpan, ph.startSourceSpan, ph.endSourceSpan);\n }\n}\nclass RecurseVisitor {\n visitText(text, context) {}\n visitContainer(container, context) {\n container.children.forEach(child => child.visit(this));\n }\n visitIcu(icu, context) {\n Object.keys(icu.cases).forEach(k => {\n icu.cases[k].visit(this);\n });\n }\n visitTagPlaceholder(ph, context) {\n ph.children.forEach(child => child.visit(this));\n }\n visitPlaceholder(ph, context) {}\n visitIcuPlaceholder(ph, context) {}\n visitBlockPlaceholder(ph, context) {\n ph.children.forEach(child => child.visit(this));\n }\n}\nfunction serializeMessage(messageNodes) {\n const visitor = new LocalizeMessageStringVisitor();\n const str = messageNodes.map(n => n.visit(visitor)).join('');\n return str;\n}\nclass LocalizeMessageStringVisitor {\n visitText(text) {\n return text.value;\n }\n visitContainer(container) {\n return container.children.map(child => child.visit(this)).join('');\n }\n visitIcu(icu) {\n const strCases = Object.keys(icu.cases).map(k => `${k} {${icu.cases[k].visit(this)}}`);\n return `{${icu.expressionPlaceholder}, ${icu.type}, ${strCases.join(' ')}}`;\n }\n visitTagPlaceholder(ph) {\n const children = ph.children.map(child => child.visit(this)).join('');\n return `{$${ph.startName}}${children}{$${ph.closeName}}`;\n }\n visitPlaceholder(ph) {\n return `{$${ph.name}}`;\n }\n visitIcuPlaceholder(ph) {\n return `{$${ph.name}}`;\n }\n visitBlockPlaceholder(ph) {\n const children = ph.children.map(child => child.visit(this)).join('');\n return `{$${ph.startName}}${children}{$${ph.closeName}}`;\n }\n}\n\nclass Serializer {\n createNameMapper(message) {\n return null;\n }\n}\nclass SimplePlaceholderMapper extends RecurseVisitor {\n mapName;\n internalToPublic = {};\n publicToNextId = {};\n publicToInternal = {};\n constructor(message, mapName) {\n super();\n this.mapName = mapName;\n message.nodes.forEach(node => node.visit(this));\n }\n toPublicName(internalName) {\n return this.internalToPublic.hasOwnProperty(internalName) ? this.internalToPublic[internalName] : null;\n }\n toInternalName(publicName) {\n return this.publicToInternal.hasOwnProperty(publicName) ? this.publicToInternal[publicName] : null;\n }\n visitText(text, context) {\n return null;\n }\n visitTagPlaceholder(ph, context) {\n this.visitPlaceholderName(ph.startName);\n super.visitTagPlaceholder(ph, context);\n this.visitPlaceholderName(ph.closeName);\n }\n visitPlaceholder(ph, context) {\n this.visitPlaceholderName(ph.name);\n }\n visitBlockPlaceholder(ph, context) {\n this.visitPlaceholderName(ph.startName);\n super.visitBlockPlaceholder(ph, context);\n this.visitPlaceholderName(ph.closeName);\n }\n visitIcuPlaceholder(ph, context) {\n this.visitPlaceholderName(ph.name);\n }\n visitPlaceholderName(internalName) {\n if (!internalName || this.internalToPublic.hasOwnProperty(internalName)) {\n return;\n }\n let publicName = this.mapName(internalName);\n if (this.publicToInternal.hasOwnProperty(publicName)) {\n const nextId = this.publicToNextId[publicName];\n this.publicToNextId[publicName] = nextId + 1;\n publicName = `${publicName}_${nextId}`;\n } else {\n this.publicToNextId[publicName] = 1;\n }\n this.internalToPublic[internalName] = publicName;\n this.publicToInternal[publicName] = internalName;\n }\n}\n\nlet _Visitor$2 = class _Visitor {\n visitTag(tag) {\n const strAttrs = this._serializeAttributes(tag.attrs);\n if (tag.children.length == 0) {\n return `<${tag.name}${strAttrs}/>`;\n }\n const strChildren = tag.children.map(node => node.visit(this));\n return `<${tag.name}${strAttrs}>${strChildren.join('')}</${tag.name}>`;\n }\n visitText(text) {\n return text.value;\n }\n visitDeclaration(decl) {\n return `<?xml${this._serializeAttributes(decl.attrs)} ?>`;\n }\n _serializeAttributes(attrs) {\n const strAttrs = Object.keys(attrs).map(name => `${name}=\"${attrs[name]}\"`).join(' ');\n return strAttrs.length > 0 ? ' ' + strAttrs : '';\n }\n visitDoctype(doctype) {\n return `<!DOCTYPE ${doctype.rootTag} [\\n${doctype.dtd}\\n]>`;\n }\n};\nconst _visitor = new _Visitor$2();\nfunction serialize$1(nodes) {\n return nodes.map(node => node.visit(_visitor)).join('');\n}\nclass Declaration {\n attrs = {};\n constructor(unescapedAttrs) {\n Object.keys(unescapedAttrs).forEach(k => {\n this.attrs[k] = escapeXml(unescapedAttrs[k]);\n });\n }\n visit(visitor) {\n return visitor.visitDeclaration(this);\n }\n}\nclass Doctype {\n rootTag;\n dtd;\n constructor(rootTag, dtd) {\n this.rootTag = rootTag;\n this.dtd = dtd;\n }\n visit(visitor) {\n return visitor.visitDoctype(this);\n }\n}\nclass Tag {\n name;\n children;\n attrs = {};\n constructor(name, unescapedAttrs = {}, children = []) {\n this.name = name;\n this.children = children;\n Object.keys(unescapedAttrs).forEach(k => {\n this.attrs[k] = escapeXml(unescapedAttrs[k]);\n });\n }\n visit(visitor) {\n return visitor.visitTag(this);\n }\n}\nlet Text$1 = class Text {\n value;\n constructor(unescapedValue) {\n this.value = escapeXml(unescapedValue);\n }\n visit(visitor) {\n return visitor.visitText(this);\n }\n};\nclass CR extends Text$1 {\n constructor(ws = 0) {\n super(`\\n${new Array(ws + 1).join(' ')}`);\n }\n}\nconst _ESCAPED_CHARS = [[/&/g, '&'], [/\"/g, '"'], [/'/g, '''], [/</g, '<'], [/>/g, '>']];\nfunction escapeXml(text) {\n return _ESCAPED_CHARS.reduce((text, entry) => text.replace(entry[0], entry[1]), text);\n}\n\nconst _XMB_HANDLER = 'angular';\nconst _MESSAGES_TAG = 'messagebundle';\nconst _MESSAGE_TAG = 'msg';\nconst _PLACEHOLDER_TAG$3 = 'ph';\nconst _EXAMPLE_TAG = 'ex';\nconst _SOURCE_TAG$2 = 'source';\nconst _DOCTYPE = `<!ELEMENT messagebundle (msg)*>\n<!ATTLIST messagebundle class CDATA #IMPLIED>\n\n<!ELEMENT msg (#PCDATA|ph|source)*>\n<!ATTLIST msg id CDATA #IMPLIED>\n<!ATTLIST msg seq CDATA #IMPLIED>\n<!ATTLIST msg name CDATA #IMPLIED>\n<!ATTLIST msg desc CDATA #IMPLIED>\n<!ATTLIST msg meaning CDATA #IMPLIED>\n<!ATTLIST msg obsolete (obsolete) #IMPLIED>\n<!ATTLIST msg xml:space (default|preserve) \"default\">\n<!ATTLIST msg is_hidden CDATA #IMPLIED>\n\n<!ELEMENT source (#PCDATA)>\n\n<!ELEMENT ph (#PCDATA|ex)*>\n<!ATTLIST ph name CDATA #REQUIRED>\n\n<!ELEMENT ex (#PCDATA)>`;\nclass Xmb extends Serializer {\n write(messages, locale) {\n const exampleVisitor = new ExampleVisitor();\n const visitor = new _Visitor$1();\n const rootNode = new Tag(_MESSAGES_TAG);\n rootNode.attrs['handler'] = _XMB_HANDLER;\n messages.forEach(message => {\n const attrs = {\n id: message.id\n };\n if (message.description) {\n attrs['desc'] = message.description;\n }\n if (message.meaning) {\n attrs['meaning'] = message.meaning;\n }\n let sourceTags = [];\n message.sources.forEach(source => {\n sourceTags.push(new Tag(_SOURCE_TAG$2, {}, [new Text$1(`${source.filePath}:${source.startLine}${source.endLine !== source.startLine ? ',' + source.endLine : ''}`)]));\n });\n rootNode.children.push(new CR(2), new Tag(_MESSAGE_TAG, attrs, [...sourceTags, ...visitor.serialize(message.nodes)]));\n });\n rootNode.children.push(new CR());\n return serialize$1([new Declaration({\n version: '1.0',\n encoding: 'UTF-8'\n }), new CR(), new Doctype(_MESSAGES_TAG, _DOCTYPE), new CR(), exampleVisitor.addDefaultExamples(rootNode), new CR()]);\n }\n load(content, url) {\n throw new Error('Unsupported');\n }\n digest(message) {\n return digest(message);\n }\n createNameMapper(message) {\n return new SimplePlaceholderMapper(message, toPublicName);\n }\n}\nlet _Visitor$1 = class _Visitor {\n visitText(text, context) {\n return [new Text$1(text.value)];\n }\n visitContainer(container, context) {\n const nodes = [];\n container.children.forEach(node => nodes.push(...node.visit(this)));\n return nodes;\n }\n visitIcu(icu, context) {\n const nodes = [new Text$1(`{${icu.expressionPlaceholder}, ${icu.type}, `)];\n Object.keys(icu.cases).forEach(c => {\n nodes.push(new Text$1(`${c} {`), ...icu.cases[c].visit(this), new Text$1(`} `));\n });\n nodes.push(new Text$1(`}`));\n return nodes;\n }\n visitTagPlaceholder(ph, context) {\n const startTagAsText = new Text$1(`<${ph.tag}>`);\n const startEx = new Tag(_EXAMPLE_TAG, {}, [startTagAsText]);\n const startTagPh = new Tag(_PLACEHOLDER_TAG$3, {\n name: ph.startName\n }, [startEx, startTagAsText]);\n if (ph.isVoid) {\n return [startTagPh];\n }\n const closeTagAsText = new Text$1(`</${ph.tag}>`);\n const closeEx = new Tag(_EXAMPLE_TAG, {}, [closeTagAsText]);\n const closeTagPh = new Tag(_PLACEHOLDER_TAG$3, {\n name: ph.closeName\n }, [closeEx, closeTagAsText]);\n return [startTagPh, ...this.serialize(ph.children), closeTagPh];\n }\n visitPlaceholder(ph, context) {\n const interpolationAsText = new Text$1(`{{${ph.value}}}`);\n const exTag = new Tag(_EXAMPLE_TAG, {}, [interpolationAsText]);\n return [new Tag(_PLACEHOLDER_TAG$3, {\n name: ph.name\n }, [exTag, interpolationAsText])];\n }\n visitBlockPlaceholder(ph, context) {\n const startAsText = new Text$1(`@${ph.name}`);\n const startEx = new Tag(_EXAMPLE_TAG, {}, [startAsText]);\n const startTagPh = new Tag(_PLACEHOLDER_TAG$3, {\n name: ph.startName\n }, [startEx, startAsText]);\n const closeAsText = new Text$1(`}`);\n const closeEx = new Tag(_EXAMPLE_TAG, {}, [closeAsText]);\n const closeTagPh = new Tag(_PLACEHOLDER_TAG$3, {\n name: ph.closeName\n }, [closeEx, closeAsText]);\n return [startTagPh, ...this.serialize(ph.children), closeTagPh];\n }\n visitIcuPlaceholder(ph, context) {\n const icuExpression = ph.value.expression;\n const icuType = ph.value.type;\n const icuCases = Object.keys(ph.value.cases).map(value => value + ' {...}').join(' ');\n const icuAsText = new Text$1(`{${icuExpression}, ${icuType}, ${icuCases}}`);\n const exTag = new Tag(_EXAMPLE_TAG, {}, [icuAsText]);\n return [new Tag(_PLACEHOLDER_TAG$3, {\n name: ph.name\n }, [exTag, icuAsText])];\n }\n serialize(nodes) {\n return [].concat(...nodes.map(node => node.visit(this)));\n }\n};\nfunction digest(message) {\n return decimalDigest(message);\n}\nclass ExampleVisitor {\n addDefaultExamples(node) {\n node.visit(this);\n return node;\n }\n visitTag(tag) {\n if (tag.name === _PLACEHOLDER_TAG$3) {\n if (!tag.children || tag.children.length == 0) {\n const exText = new Text$1(tag.attrs['name'] || '...');\n tag.children = [new Tag(_EXAMPLE_TAG, {}, [exText])];\n }\n } else if (tag.children) {\n tag.children.forEach(node => node.visit(this));\n }\n }\n visitText(text) {}\n visitDeclaration(decl) {}\n visitDoctype(doctype) {}\n}\nfunction toPublicName(internalName) {\n return internalName.toUpperCase().replace(/[^A-Z0-9_]/g, '_');\n}\n\nconst I18N_ATTR = 'i18n';\nconst I18N_ATTR_PREFIX = 'i18n-';\nconst I18N_ICU_VAR_PREFIX = 'VAR_';\nfunction isI18nAttribute(name) {\n return name === I18N_ATTR || name.startsWith(I18N_ATTR_PREFIX);\n}\nfunction hasI18nAttrs(node) {\n return node.attrs.some(attr => isI18nAttribute(attr.name));\n}\nfunction icuFromI18nMessage(message) {\n return message.nodes[0];\n}\nfunction formatI18nPlaceholderNamesInMap(params = {}, useCamelCase) {\n const _params = {};\n if (params && Object.keys(params).length) {\n Object.keys(params).forEach(key => _params[formatI18nPlaceholderName(key, useCamelCase)] = params[key]);\n }\n return _params;\n}\nfunction formatI18nPlaceholderName(name, useCamelCase = true) {\n const publicName = toPublicName(name);\n if (!useCamelCase) {\n return publicName;\n }\n const chunks = publicName.split('_');\n if (chunks.length === 1) {\n return name.toLowerCase();\n }\n let postfix;\n if (/^\\d+$/.test(chunks[chunks.length - 1])) {\n postfix = chunks.pop();\n }\n let raw = chunks.shift().toLowerCase();\n if (chunks.length) {\n raw += chunks.map(c => c.charAt(0).toUpperCase() + c.slice(1).toLowerCase()).join('');\n }\n return postfix ? `${raw}_${postfix}` : raw;\n}\n\nconst UNSAFE_OBJECT_KEY_NAME_REGEXP = /[-.]/;\nconst TEMPORARY_NAME = '_t';\nconst CONTEXT_NAME = 'ctx';\nconst RENDER_FLAGS = 'rf';\nfunction temporaryAllocator(pushStatement, name) {\n let temp = null;\n return () => {\n if (!temp) {\n pushStatement(new DeclareVarStmt(TEMPORARY_NAME, undefined, DYNAMIC_TYPE));\n temp = variable(name);\n }\n return temp;\n };\n}\nfunction asLiteral(value) {\n if (Array.isArray(value)) {\n return literalArr(value.map(asLiteral));\n }\n return literal(value, INFERRED_TYPE);\n}\nfunction conditionallyCreateDirectiveBindingLiteral(map, forInputs) {\n const keys = Object.getOwnPropertyNames(map);\n if (keys.length === 0) {\n return null;\n }\n return literalMap(keys.map(key => {\n const value = map[key];\n let declaredName;\n let publicName;\n let minifiedName;\n let expressionValue;\n if (typeof value === 'string') {\n declaredName = key;\n minifiedName = key;\n publicName = value;\n expressionValue = asLiteral(publicName);\n } else {\n minifiedName = key;\n declaredName = value.classPropertyName;\n publicName = value.bindingPropertyName;\n const differentDeclaringName = publicName !== declaredName;\n const hasDecoratorInputTransform = value.transformFunction !== null;\n let flags = InputFlags.None;\n if (value.isSignal) {\n flags |= InputFlags.SignalBased;\n }\n if (hasDecoratorInputTransform) {\n flags |= InputFlags.HasDecoratorInputTransform;\n }\n if (forInputs && (differentDeclaringName || hasDecoratorInputTransform || flags !== InputFlags.None)) {\n const result = [literal(flags), asLiteral(publicName)];\n if (differentDeclaringName || hasDecoratorInputTransform) {\n result.push(asLiteral(declaredName));\n if (hasDecoratorInputTransform) {\n result.push(value.transformFunction);\n }\n }\n expressionValue = literalArr(result);\n } else {\n expressionValue = asLiteral(publicName);\n }\n }\n return {\n key: minifiedName,\n quoted: UNSAFE_OBJECT_KEY_NAME_REGEXP.test(minifiedName),\n value: expressionValue\n };\n }));\n}\nclass DefinitionMap {\n values = [];\n set(key, value) {\n if (value) {\n const existing = this.values.find(value => value.key === key);\n if (existing) {\n existing.value = value;\n } else {\n this.values.push({\n key: key,\n value,\n quoted: false\n });\n }\n }\n }\n toLiteralMap() {\n return literalMap(this.values);\n }\n}\nfunction createCssSelectorFromNode(node) {\n const elementName = node instanceof Element$1 ? node.name : 'ng-template';\n const attributes = getAttrsForDirectiveMatching(node);\n const cssSelector = new CssSelector();\n const elementNameNoNs = splitNsName(elementName)[1];\n cssSelector.setElement(elementNameNoNs);\n Object.getOwnPropertyNames(attributes).forEach(name => {\n const nameNoNs = splitNsName(name)[1];\n const value = attributes[name];\n cssSelector.addAttribute(nameNoNs, value);\n if (name.toLowerCase() === 'class') {\n const classes = value.trim().split(/\\s+/);\n classes.forEach(className => cssSelector.addClassName(className));\n }\n });\n return cssSelector;\n}\nfunction getAttrsForDirectiveMatching(elOrTpl) {\n const attributesMap = {};\n if (elOrTpl instanceof Template && elOrTpl.tagName !== 'ng-template') {\n elOrTpl.templateAttrs.forEach(a => attributesMap[a.name] = '');\n } else {\n elOrTpl.attributes.forEach(a => {\n if (!isI18nAttribute(a.name)) {\n attributesMap[a.name] = a.value;\n }\n });\n elOrTpl.inputs.forEach(i => {\n if (i.type === BindingType.Property || i.type === BindingType.TwoWay) {\n attributesMap[i.name] = '';\n }\n });\n elOrTpl.outputs.forEach(o => {\n attributesMap[o.name] = '';\n });\n }\n return attributesMap;\n}\n\nfunction compileInjectable(meta, resolveForwardRefs) {\n let result = null;\n const factoryMeta = {\n name: meta.name,\n type: meta.type,\n typeArgumentCount: meta.typeArgumentCount,\n deps: [],\n target: FactoryTarget.Injectable\n };\n if (meta.useClass !== undefined) {\n const useClassOnSelf = meta.useClass.expression.isEquivalent(meta.type.value);\n let deps = undefined;\n if (meta.deps !== undefined) {\n deps = meta.deps;\n }\n if (deps !== undefined) {\n result = compileFactoryFunction({\n ...factoryMeta,\n delegate: meta.useClass.expression,\n delegateDeps: deps,\n delegateType: R3FactoryDelegateType.Class\n });\n } else if (useClassOnSelf) {\n result = compileFactoryFunction(factoryMeta);\n } else {\n result = {\n statements: [],\n expression: delegateToFactory(meta.type.value, meta.useClass.expression, resolveForwardRefs)\n };\n }\n } else if (meta.useFactory !== undefined) {\n if (meta.deps !== undefined) {\n result = compileFactoryFunction({\n ...factoryMeta,\n delegate: meta.useFactory,\n delegateDeps: meta.deps || [],\n delegateType: R3FactoryDelegateType.Function\n });\n } else {\n result = {\n statements: [],\n expression: arrowFn([], meta.useFactory.callFn([]))\n };\n }\n } else if (meta.useValue !== undefined) {\n result = compileFactoryFunction({\n ...factoryMeta,\n expression: meta.useValue.expression\n });\n } else if (meta.useExisting !== undefined) {\n result = compileFactoryFunction({\n ...factoryMeta,\n expression: importExpr(Identifiers.inject).callFn([meta.useExisting.expression])\n });\n } else {\n result = {\n statements: [],\n expression: delegateToFactory(meta.type.value, meta.type.value, resolveForwardRefs)\n };\n }\n const token = meta.type.value;\n const injectableProps = new DefinitionMap();\n injectableProps.set('token', token);\n injectableProps.set('factory', result.expression);\n if (meta.providedIn.expression.value !== null) {\n injectableProps.set('providedIn', convertFromMaybeForwardRefExpression(meta.providedIn));\n }\n const expression = importExpr(Identifiers.ɵɵdefineInjectable).callFn([injectableProps.toLiteralMap()], undefined, true);\n return {\n expression,\n type: createInjectableType(meta),\n statements: result.statements\n };\n}\nfunction createInjectableType(meta) {\n return new ExpressionType(importExpr(Identifiers.InjectableDeclaration, [typeWithParameters(meta.type.type, meta.typeArgumentCount)]));\n}\nfunction delegateToFactory(type, useType, unwrapForwardRefs) {\n if (type.node === useType.node) {\n return useType.prop('ɵfac');\n }\n if (!unwrapForwardRefs) {\n return createFactoryFunction(useType);\n }\n const unwrappedType = importExpr(Identifiers.resolveForwardRef).callFn([useType]);\n return createFactoryFunction(unwrappedType);\n}\nfunction createFactoryFunction(type) {\n const t = new FnParam('__ngFactoryType__', DYNAMIC_TYPE);\n return arrowFn([t], type.prop('ɵfac').callFn([variable(t.name)]));\n}\n\nconst $EOF = 0;\nconst $BSPACE = 8;\nconst $TAB = 9;\nconst $LF = 10;\nconst $VTAB = 11;\nconst $FF = 12;\nconst $CR = 13;\nconst $SPACE = 32;\nconst $BANG = 33;\nconst $DQ = 34;\nconst $HASH = 35;\nconst $$ = 36;\nconst $PERCENT = 37;\nconst $AMPERSAND = 38;\nconst $SQ = 39;\nconst $LPAREN = 40;\nconst $RPAREN = 41;\nconst $STAR = 42;\nconst $PLUS = 43;\nconst $COMMA = 44;\nconst $MINUS = 45;\nconst $PERIOD = 46;\nconst $SLASH = 47;\nconst $COLON = 58;\nconst $SEMICOLON = 59;\nconst $LT = 60;\nconst $EQ = 61;\nconst $GT = 62;\nconst $QUESTION = 63;\nconst $0 = 48;\nconst $7 = 55;\nconst $9 = 57;\nconst $A = 65;\nconst $E = 69;\nconst $F = 70;\nconst $X = 88;\nconst $Z = 90;\nconst $LBRACKET = 91;\nconst $BACKSLASH = 92;\nconst $RBRACKET = 93;\nconst $CARET = 94;\nconst $_ = 95;\nconst $a = 97;\nconst $b = 98;\nconst $e = 101;\nconst $f = 102;\nconst $n = 110;\nconst $r = 114;\nconst $t = 116;\nconst $u = 117;\nconst $v = 118;\nconst $x = 120;\nconst $z = 122;\nconst $LBRACE = 123;\nconst $BAR = 124;\nconst $RBRACE = 125;\nconst $NBSP = 160;\nconst $AT = 64;\nconst $BT = 96;\nfunction isWhitespace(code) {\n return code >= $TAB && code <= $SPACE || code == $NBSP;\n}\nfunction isDigit(code) {\n return $0 <= code && code <= $9;\n}\nfunction isAsciiLetter(code) {\n return code >= $a && code <= $z || code >= $A && code <= $Z;\n}\nfunction isAsciiHexDigit(code) {\n return code >= $a && code <= $f || code >= $A && code <= $F || isDigit(code);\n}\nfunction isNewLine(code) {\n return code === $LF || code === $CR;\n}\nfunction isOctalDigit(code) {\n return $0 <= code && code <= $7;\n}\nfunction isQuote(code) {\n return code === $SQ || code === $DQ || code === $BT;\n}\n\nclass ParseLocation {\n file;\n offset;\n line;\n col;\n constructor(file, offset, line, col) {\n this.file = file;\n this.offset = offset;\n this.line = line;\n this.col = col;\n }\n toString() {\n return this.offset != null ? `${this.file.url}@${this.line}:${this.col}` : this.file.url;\n }\n moveBy(delta) {\n const source = this.file.content;\n const len = source.length;\n let offset = this.offset;\n let line = this.line;\n let col = this.col;\n while (offset > 0 && delta < 0) {\n offset--;\n delta++;\n const ch = source.charCodeAt(offset);\n if (ch == $LF) {\n line--;\n const priorLine = source.substring(0, offset - 1).lastIndexOf(String.fromCharCode($LF));\n col = priorLine > 0 ? offset - priorLine : offset;\n } else {\n col--;\n }\n }\n while (offset < len && delta > 0) {\n const ch = source.charCodeAt(offset);\n offset++;\n delta--;\n if (ch == $LF) {\n line++;\n col = 0;\n } else {\n col++;\n }\n }\n return new ParseLocation(this.file, offset, line, col);\n }\n getContext(maxChars, maxLines) {\n const content = this.file.content;\n let startOffset = this.offset;\n if (startOffset != null) {\n if (startOffset > content.length - 1) {\n startOffset = content.length - 1;\n }\n let endOffset = startOffset;\n let ctxChars = 0;\n let ctxLines = 0;\n while (ctxChars < maxChars && startOffset > 0) {\n startOffset--;\n ctxChars++;\n if (content[startOffset] == '\\n') {\n if (++ctxLines == maxLines) {\n break;\n }\n }\n }\n ctxChars = 0;\n ctxLines = 0;\n while (ctxChars < maxChars && endOffset < content.length - 1) {\n endOffset++;\n ctxChars++;\n if (content[endOffset] == '\\n') {\n if (++ctxLines == maxLines) {\n break;\n }\n }\n }\n return {\n before: content.substring(startOffset, this.offset),\n after: content.substring(this.offset, endOffset + 1)\n };\n }\n return null;\n }\n}\nclass ParseSourceFile {\n content;\n url;\n constructor(content, url) {\n this.content = content;\n this.url = url;\n }\n}\nclass ParseSourceSpan {\n start;\n end;\n fullStart;\n details;\n constructor(start, end, fullStart = start, details = null) {\n this.start = start;\n this.end = end;\n this.fullStart = fullStart;\n this.details = details;\n }\n toString() {\n return this.start.file.content.substring(this.start.offset, this.end.offset);\n }\n}\nvar ParseErrorLevel;\n(function (ParseErrorLevel) {\n ParseErrorLevel[ParseErrorLevel[\"WARNING\"] = 0] = \"WARNING\";\n ParseErrorLevel[ParseErrorLevel[\"ERROR\"] = 1] = \"ERROR\";\n})(ParseErrorLevel || (ParseErrorLevel = {}));\nclass ParseError extends Error {\n span;\n msg;\n level;\n relatedError;\n constructor(span, msg, level = ParseErrorLevel.ERROR, relatedError) {\n super(msg);\n this.span = span;\n this.msg = msg;\n this.level = level;\n this.relatedError = relatedError;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n contextualMessage() {\n const ctx = this.span.start.getContext(100, 3);\n return ctx ? `${this.msg} (\"${ctx.before}[${ParseErrorLevel[this.level]} ->]${ctx.after}\")` : this.msg;\n }\n toString() {\n const details = this.span.details ? `, ${this.span.details}` : '';\n return `${this.contextualMessage()}: ${this.span.start}${details}`;\n }\n}\nfunction r3JitTypeSourceSpan(kind, typeName, sourceUrl) {\n const sourceFileName = `in ${kind} ${typeName} in ${sourceUrl}`;\n const sourceFile = new ParseSourceFile('', sourceFileName);\n return new ParseSourceSpan(new ParseLocation(sourceFile, -1, -1, -1), new ParseLocation(sourceFile, -1, -1, -1));\n}\nlet _anonymousTypeIndex = 0;\nfunction identifierName(compileIdentifier) {\n if (!compileIdentifier || !compileIdentifier.reference) {\n return null;\n }\n const ref = compileIdentifier.reference;\n if (ref['__anonymousType']) {\n return ref['__anonymousType'];\n }\n if (ref['__forward_ref__']) {\n return '__forward_ref__';\n }\n let identifier = stringify(ref);\n if (identifier.indexOf('(') >= 0) {\n identifier = `anonymous_${_anonymousTypeIndex++}`;\n ref['__anonymousType'] = identifier;\n } else {\n identifier = sanitizeIdentifier(identifier);\n }\n return identifier;\n}\nfunction sanitizeIdentifier(name) {\n return name.replace(/\\W/g, '_');\n}\n\nconst makeTemplateObjectPolyfill = '(this&&this.__makeTemplateObject||function(e,t){return Object.defineProperty?Object.defineProperty(e,\"raw\",{value:t}):e.raw=t,e})';\nclass AbstractJsEmitterVisitor extends AbstractEmitterVisitor {\n constructor() {\n super(false);\n }\n visitWrappedNodeExpr(ast, ctx) {\n throw new Error('Cannot emit a WrappedNodeExpr in Javascript.');\n }\n visitDeclareVarStmt(stmt, ctx) {\n ctx.print(stmt, `var ${stmt.name}`);\n if (stmt.value) {\n ctx.print(stmt, ' = ');\n stmt.value.visitExpression(this, ctx);\n }\n ctx.println(stmt, `;`);\n return null;\n }\n visitTaggedTemplateLiteralExpr(ast, ctx) {\n const elements = ast.template.elements;\n ast.tag.visitExpression(this, ctx);\n ctx.print(ast, `(${makeTemplateObjectPolyfill}(`);\n ctx.print(ast, `[${elements.map(part => escapeIdentifier(part.text, false)).join(', ')}], `);\n ctx.print(ast, `[${elements.map(part => escapeIdentifier(part.rawText, false)).join(', ')}])`);\n ast.template.expressions.forEach(expression => {\n ctx.print(ast, ', ');\n expression.visitExpression(this, ctx);\n });\n ctx.print(ast, ')');\n return null;\n }\n visitTemplateLiteralExpr(expr, ctx) {\n ctx.print(expr, '`');\n for (let i = 0; i < expr.elements.length; i++) {\n expr.elements[i].visitExpression(this, ctx);\n const expression = i < expr.expressions.length ? expr.expressions[i] : null;\n if (expression !== null) {\n ctx.print(expression, '${');\n expression.visitExpression(this, ctx);\n ctx.print(expression, '}');\n }\n }\n ctx.print(expr, '`');\n }\n visitTemplateLiteralElementExpr(expr, ctx) {\n ctx.print(expr, expr.rawText);\n return null;\n }\n visitFunctionExpr(ast, ctx) {\n ctx.print(ast, `function${ast.name ? ' ' + ast.name : ''}(`);\n this._visitParams(ast.params, ctx);\n ctx.println(ast, `) {`);\n ctx.incIndent();\n this.visitAllStatements(ast.statements, ctx);\n ctx.decIndent();\n ctx.print(ast, `}`);\n return null;\n }\n visitArrowFunctionExpr(ast, ctx) {\n ctx.print(ast, '(');\n this._visitParams(ast.params, ctx);\n ctx.print(ast, ') =>');\n if (Array.isArray(ast.body)) {\n ctx.println(ast, `{`);\n ctx.incIndent();\n this.visitAllStatements(ast.body, ctx);\n ctx.decIndent();\n ctx.print(ast, `}`);\n } else {\n const isObjectLiteral = ast.body instanceof LiteralMapExpr;\n if (isObjectLiteral) {\n ctx.print(ast, '(');\n }\n ast.body.visitExpression(this, ctx);\n if (isObjectLiteral) {\n ctx.print(ast, ')');\n }\n }\n return null;\n }\n visitDeclareFunctionStmt(stmt, ctx) {\n ctx.print(stmt, `function ${stmt.name}(`);\n this._visitParams(stmt.params, ctx);\n ctx.println(stmt, `) {`);\n ctx.incIndent();\n this.visitAllStatements(stmt.statements, ctx);\n ctx.decIndent();\n ctx.println(stmt, `}`);\n return null;\n }\n visitLocalizedString(ast, ctx) {\n ctx.print(ast, `$localize(${makeTemplateObjectPolyfill}(`);\n const parts = [ast.serializeI18nHead()];\n for (let i = 1; i < ast.messageParts.length; i++) {\n parts.push(ast.serializeI18nTemplatePart(i));\n }\n ctx.print(ast, `[${parts.map(part => escapeIdentifier(part.cooked, false)).join(', ')}], `);\n ctx.print(ast, `[${parts.map(part => escapeIdentifier(part.raw, false)).join(', ')}])`);\n ast.expressions.forEach(expression => {\n ctx.print(ast, ', ');\n expression.visitExpression(this, ctx);\n });\n ctx.print(ast, ')');\n return null;\n }\n _visitParams(params, ctx) {\n this.visitAllObjects(param => ctx.print(null, param.name), params, ctx, ',');\n }\n}\n\nlet policy;\nfunction getPolicy() {\n if (policy === undefined) {\n const trustedTypes = _global['trustedTypes'];\n policy = null;\n if (trustedTypes) {\n try {\n policy = trustedTypes.createPolicy('angular#unsafe-jit', {\n createScript: s => s\n });\n } catch {}\n }\n }\n return policy;\n}\nfunction trustedScriptFromString(script) {\n return getPolicy()?.createScript(script) || script;\n}\nfunction newTrustedFunctionForJIT(...args) {\n if (!_global['trustedTypes']) {\n return new Function(...args);\n }\n const fnArgs = args.slice(0, -1).join(',');\n const fnBody = args[args.length - 1];\n const body = `(function anonymous(${fnArgs}\n) { ${fnBody}\n})`;\n const fn = _global['eval'](trustedScriptFromString(body));\n if (fn.bind === undefined) {\n return new Function(...args);\n }\n fn.toString = () => body;\n return fn.bind(_global);\n}\n\nclass JitEvaluator {\n evaluateStatements(sourceUrl, statements, refResolver, createSourceMaps) {\n const converter = new JitEmitterVisitor(refResolver);\n const ctx = EmitterVisitorContext.createRoot();\n if (statements.length > 0 && !isUseStrictStatement(statements[0])) {\n statements = [literal('use strict').toStmt(), ...statements];\n }\n converter.visitAllStatements(statements, ctx);\n converter.createReturnStmt(ctx);\n return this.evaluateCode(sourceUrl, ctx, converter.getArgs(), createSourceMaps);\n }\n evaluateCode(sourceUrl, ctx, vars, createSourceMap) {\n let fnBody = `\"use strict\";${ctx.toSource()}\\n//# sourceURL=${sourceUrl}`;\n const fnArgNames = [];\n const fnArgValues = [];\n for (const argName in vars) {\n fnArgValues.push(vars[argName]);\n fnArgNames.push(argName);\n }\n if (createSourceMap) {\n const emptyFn = newTrustedFunctionForJIT(...fnArgNames.concat('return null;')).toString();\n const headerLines = emptyFn.slice(0, emptyFn.indexOf('return null;')).split('\\n').length - 1;\n fnBody += `\\n${ctx.toSourceMapGenerator(sourceUrl, headerLines).toJsComment()}`;\n }\n const fn = newTrustedFunctionForJIT(...fnArgNames.concat(fnBody));\n return this.executeFunction(fn, fnArgValues);\n }\n executeFunction(fn, args) {\n return fn(...args);\n }\n}\nclass JitEmitterVisitor extends AbstractJsEmitterVisitor {\n refResolver;\n _evalArgNames = [];\n _evalArgValues = [];\n _evalExportedVars = [];\n constructor(refResolver) {\n super();\n this.refResolver = refResolver;\n }\n createReturnStmt(ctx) {\n const stmt = new ReturnStatement(new LiteralMapExpr(this._evalExportedVars.map(resultVar => new LiteralMapPropertyAssignment(resultVar, variable(resultVar), false))));\n stmt.visitStatement(this, ctx);\n }\n getArgs() {\n const result = {};\n for (let i = 0; i < this._evalArgNames.length; i++) {\n result[this._evalArgNames[i]] = this._evalArgValues[i];\n }\n return result;\n }\n visitExternalExpr(ast, ctx) {\n this._emitReferenceToExternal(ast, this.refResolver.resolveExternalReference(ast.value), ctx);\n return null;\n }\n visitWrappedNodeExpr(ast, ctx) {\n this._emitReferenceToExternal(ast, ast.node, ctx);\n return null;\n }\n visitDeclareVarStmt(stmt, ctx) {\n if (stmt.hasModifier(StmtModifier.Exported)) {\n this._evalExportedVars.push(stmt.name);\n }\n return super.visitDeclareVarStmt(stmt, ctx);\n }\n visitDeclareFunctionStmt(stmt, ctx) {\n if (stmt.hasModifier(StmtModifier.Exported)) {\n this._evalExportedVars.push(stmt.name);\n }\n return super.visitDeclareFunctionStmt(stmt, ctx);\n }\n _emitReferenceToExternal(ast, value, ctx) {\n let id = this._evalArgValues.indexOf(value);\n if (id === -1) {\n id = this._evalArgValues.length;\n this._evalArgValues.push(value);\n const name = identifierName({\n reference: value\n }) || 'val';\n this._evalArgNames.push(`jit_${name}_${id}`);\n }\n ctx.print(ast, this._evalArgNames[id]);\n }\n}\nfunction isUseStrictStatement(statement) {\n return statement.isEquivalent(literal('use strict').toStmt());\n}\n\nfunction compileInjector(meta) {\n const definitionMap = new DefinitionMap();\n if (meta.providers !== null) {\n definitionMap.set('providers', meta.providers);\n }\n if (meta.imports.length > 0) {\n definitionMap.set('imports', literalArr(meta.imports));\n }\n const expression = importExpr(Identifiers.defineInjector).callFn([definitionMap.toLiteralMap()], undefined, true);\n const type = createInjectorType(meta);\n return {\n expression,\n type,\n statements: []\n };\n}\nfunction createInjectorType(meta) {\n return new ExpressionType(importExpr(Identifiers.InjectorDeclaration, [new ExpressionType(meta.type.type)]));\n}\n\nclass R3JitReflector {\n context;\n constructor(context) {\n this.context = context;\n }\n resolveExternalReference(ref) {\n if (ref.moduleName !== '@angular/core') {\n throw new Error(`Cannot resolve external reference to ${ref.moduleName}, only references to @angular/core are supported.`);\n }\n if (!this.context.hasOwnProperty(ref.name)) {\n throw new Error(`No value provided for @angular/core symbol '${ref.name}'.`);\n }\n return this.context[ref.name];\n }\n}\n\nvar R3SelectorScopeMode;\n(function (R3SelectorScopeMode) {\n R3SelectorScopeMode[R3SelectorScopeMode[\"Inline\"] = 0] = \"Inline\";\n R3SelectorScopeMode[R3SelectorScopeMode[\"SideEffect\"] = 1] = \"SideEffect\";\n R3SelectorScopeMode[R3SelectorScopeMode[\"Omit\"] = 2] = \"Omit\";\n})(R3SelectorScopeMode || (R3SelectorScopeMode = {}));\nvar R3NgModuleMetadataKind;\n(function (R3NgModuleMetadataKind) {\n R3NgModuleMetadataKind[R3NgModuleMetadataKind[\"Global\"] = 0] = \"Global\";\n R3NgModuleMetadataKind[R3NgModuleMetadataKind[\"Local\"] = 1] = \"Local\";\n})(R3NgModuleMetadataKind || (R3NgModuleMetadataKind = {}));\nfunction compileNgModule(meta) {\n const statements = [];\n const definitionMap = new DefinitionMap();\n definitionMap.set('type', meta.type.value);\n if (meta.kind === R3NgModuleMetadataKind.Global && meta.bootstrap.length > 0) {\n definitionMap.set('bootstrap', refsToArray(meta.bootstrap, meta.containsForwardDecls));\n }\n if (meta.selectorScopeMode === R3SelectorScopeMode.Inline) {\n if (meta.declarations.length > 0) {\n definitionMap.set('declarations', refsToArray(meta.declarations, meta.containsForwardDecls));\n }\n if (meta.imports.length > 0) {\n definitionMap.set('imports', refsToArray(meta.imports, meta.containsForwardDecls));\n }\n if (meta.exports.length > 0) {\n definitionMap.set('exports', refsToArray(meta.exports, meta.containsForwardDecls));\n }\n } else if (meta.selectorScopeMode === R3SelectorScopeMode.SideEffect) {\n const setNgModuleScopeCall = generateSetNgModuleScopeCall(meta);\n if (setNgModuleScopeCall !== null) {\n statements.push(setNgModuleScopeCall);\n }\n } else ;\n if (meta.schemas !== null && meta.schemas.length > 0) {\n definitionMap.set('schemas', literalArr(meta.schemas.map(ref => ref.value)));\n }\n if (meta.id !== null) {\n definitionMap.set('id', meta.id);\n statements.push(importExpr(Identifiers.registerNgModuleType).callFn([meta.type.value, meta.id]).toStmt());\n }\n const expression = importExpr(Identifiers.defineNgModule).callFn([definitionMap.toLiteralMap()], undefined, true);\n const type = createNgModuleType(meta);\n return {\n expression,\n type,\n statements\n };\n}\nfunction compileNgModuleDeclarationExpression(meta) {\n const definitionMap = new DefinitionMap();\n definitionMap.set('type', new WrappedNodeExpr(meta.type));\n if (meta.bootstrap !== undefined) {\n definitionMap.set('bootstrap', new WrappedNodeExpr(meta.bootstrap));\n }\n if (meta.declarations !== undefined) {\n definitionMap.set('declarations', new WrappedNodeExpr(meta.declarations));\n }\n if (meta.imports !== undefined) {\n definitionMap.set('imports', new WrappedNodeExpr(meta.imports));\n }\n if (meta.exports !== undefined) {\n definitionMap.set('exports', new WrappedNodeExpr(meta.exports));\n }\n if (meta.schemas !== undefined) {\n definitionMap.set('schemas', new WrappedNodeExpr(meta.schemas));\n }\n if (meta.id !== undefined) {\n definitionMap.set('id', new WrappedNodeExpr(meta.id));\n }\n return importExpr(Identifiers.defineNgModule).callFn([definitionMap.toLiteralMap()]);\n}\nfunction createNgModuleType(meta) {\n if (meta.kind === R3NgModuleMetadataKind.Local) {\n return new ExpressionType(meta.type.value);\n }\n const {\n type: moduleType,\n declarations,\n exports: exports$1,\n imports,\n includeImportTypes,\n publicDeclarationTypes\n } = meta;\n return new ExpressionType(importExpr(Identifiers.NgModuleDeclaration, [new ExpressionType(moduleType.type), publicDeclarationTypes === null ? tupleTypeOf(declarations) : tupleOfTypes(publicDeclarationTypes), includeImportTypes ? tupleTypeOf(imports) : NONE_TYPE, tupleTypeOf(exports$1)]));\n}\nfunction generateSetNgModuleScopeCall(meta) {\n const scopeMap = new DefinitionMap();\n if (meta.kind === R3NgModuleMetadataKind.Global) {\n if (meta.declarations.length > 0) {\n scopeMap.set('declarations', refsToArray(meta.declarations, meta.containsForwardDecls));\n }\n } else {\n if (meta.declarationsExpression) {\n scopeMap.set('declarations', meta.declarationsExpression);\n }\n }\n if (meta.kind === R3NgModuleMetadataKind.Global) {\n if (meta.imports.length > 0) {\n scopeMap.set('imports', refsToArray(meta.imports, meta.containsForwardDecls));\n }\n } else {\n if (meta.importsExpression) {\n scopeMap.set('imports', meta.importsExpression);\n }\n }\n if (meta.kind === R3NgModuleMetadataKind.Global) {\n if (meta.exports.length > 0) {\n scopeMap.set('exports', refsToArray(meta.exports, meta.containsForwardDecls));\n }\n } else {\n if (meta.exportsExpression) {\n scopeMap.set('exports', meta.exportsExpression);\n }\n }\n if (meta.kind === R3NgModuleMetadataKind.Local && meta.bootstrapExpression) {\n scopeMap.set('bootstrap', meta.bootstrapExpression);\n }\n if (Object.keys(scopeMap.values).length === 0) {\n return null;\n }\n const fnCall = new InvokeFunctionExpr(importExpr(Identifiers.setNgModuleScope), [meta.type.value, scopeMap.toLiteralMap()]);\n const guardedCall = jitOnlyGuardedExpression(fnCall);\n const iife = new FunctionExpr([], [guardedCall.toStmt()]);\n const iifeCall = new InvokeFunctionExpr(iife, []);\n return iifeCall.toStmt();\n}\nfunction tupleTypeOf(exp) {\n const types = exp.map(ref => typeofExpr(ref.type));\n return exp.length > 0 ? expressionType(literalArr(types)) : NONE_TYPE;\n}\nfunction tupleOfTypes(types) {\n const typeofTypes = types.map(type => typeofExpr(type));\n return types.length > 0 ? expressionType(literalArr(typeofTypes)) : NONE_TYPE;\n}\n\nfunction compilePipeFromMetadata(metadata) {\n const definitionMapValues = [];\n definitionMapValues.push({\n key: 'name',\n value: literal(metadata.pipeName ?? metadata.name),\n quoted: false\n });\n definitionMapValues.push({\n key: 'type',\n value: metadata.type.value,\n quoted: false\n });\n definitionMapValues.push({\n key: 'pure',\n value: literal(metadata.pure),\n quoted: false\n });\n if (metadata.isStandalone === false) {\n definitionMapValues.push({\n key: 'standalone',\n value: literal(false),\n quoted: false\n });\n }\n const expression = importExpr(Identifiers.definePipe).callFn([literalMap(definitionMapValues)], undefined, true);\n const type = createPipeType(metadata);\n return {\n expression,\n type,\n statements: []\n };\n}\nfunction createPipeType(metadata) {\n return new ExpressionType(importExpr(Identifiers.PipeDeclaration, [typeWithParameters(metadata.type.type, metadata.typeArgumentCount), new ExpressionType(new LiteralExpr(metadata.pipeName)), new ExpressionType(new LiteralExpr(metadata.isStandalone))]));\n}\n\nvar R3TemplateDependencyKind;\n(function (R3TemplateDependencyKind) {\n R3TemplateDependencyKind[R3TemplateDependencyKind[\"Directive\"] = 0] = \"Directive\";\n R3TemplateDependencyKind[R3TemplateDependencyKind[\"Pipe\"] = 1] = \"Pipe\";\n R3TemplateDependencyKind[R3TemplateDependencyKind[\"NgModule\"] = 2] = \"NgModule\";\n})(R3TemplateDependencyKind || (R3TemplateDependencyKind = {}));\n\nconst animationKeywords = new Set(['inherit', 'initial', 'revert', 'unset', 'alternate', 'alternate-reverse', 'normal', 'reverse', 'backwards', 'both', 'forwards', 'none', 'paused', 'running', 'ease', 'ease-in', 'ease-in-out', 'ease-out', 'linear', 'step-start', 'step-end', 'end', 'jump-both', 'jump-end', 'jump-none', 'jump-start', 'start']);\nconst scopedAtRuleIdentifiers = ['@media', '@supports', '@document', '@layer', '@container', '@scope', '@starting-style'];\nclass ShadowCss {\n shimCssText(cssText, selector, hostSelector = '') {\n const comments = [];\n cssText = cssText.replace(_commentRe, m => {\n if (m.match(_commentWithHashRe)) {\n comments.push(m);\n } else {\n const newLinesMatches = m.match(_newLinesRe);\n comments.push(newLinesMatches?.join('') ?? '');\n }\n return COMMENT_PLACEHOLDER;\n });\n cssText = this._insertDirectives(cssText);\n const scopedCssText = this._scopeCssText(cssText, selector, hostSelector);\n let commentIdx = 0;\n return scopedCssText.replace(_commentWithHashPlaceHolderRe, () => comments[commentIdx++]);\n }\n _insertDirectives(cssText) {\n cssText = this._insertPolyfillDirectivesInCssText(cssText);\n return this._insertPolyfillRulesInCssText(cssText);\n }\n _scopeKeyframesRelatedCss(cssText, scopeSelector) {\n const unscopedKeyframesSet = new Set();\n const scopedKeyframesCssText = processRules(cssText, rule => this._scopeLocalKeyframeDeclarations(rule, scopeSelector, unscopedKeyframesSet));\n return processRules(scopedKeyframesCssText, rule => this._scopeAnimationRule(rule, scopeSelector, unscopedKeyframesSet));\n }\n _scopeLocalKeyframeDeclarations(rule, scopeSelector, unscopedKeyframesSet) {\n return {\n ...rule,\n selector: rule.selector.replace(/(^@(?:-webkit-)?keyframes(?:\\s+))(['\"]?)(.+)\\2(\\s*)$/, (_, start, quote, keyframeName, endSpaces) => {\n unscopedKeyframesSet.add(unescapeQuotes(keyframeName, quote));\n return `${start}${quote}${scopeSelector}_${keyframeName}${quote}${endSpaces}`;\n })\n };\n }\n _scopeAnimationKeyframe(keyframe, scopeSelector, unscopedKeyframesSet) {\n return keyframe.replace(/^(\\s*)(['\"]?)(.+?)\\2(\\s*)$/, (_, spaces1, quote, name, spaces2) => {\n name = `${unscopedKeyframesSet.has(unescapeQuotes(name, quote)) ? scopeSelector + '_' : ''}${name}`;\n return `${spaces1}${quote}${name}${quote}${spaces2}`;\n });\n }\n _animationDeclarationKeyframesRe = /(^|\\s+|,)(?:(?:(['\"])((?:\\\\\\\\|\\\\\\2|(?!\\2).)+)\\2)|(-?[A-Za-z][\\w\\-]*))(?=[,\\s]|$)/g;\n _scopeAnimationRule(rule, scopeSelector, unscopedKeyframesSet) {\n let content = rule.content.replace(/((?:^|\\s+|;)(?:-webkit-)?animation\\s*:\\s*),*([^;]+)/g, (_, start, animationDeclarations) => start + animationDeclarations.replace(this._animationDeclarationKeyframesRe, (original, leadingSpaces, quote = '', quotedName, nonQuotedName) => {\n if (quotedName) {\n return `${leadingSpaces}${this._scopeAnimationKeyframe(`${quote}${quotedName}${quote}`, scopeSelector, unscopedKeyframesSet)}`;\n } else {\n return animationKeywords.has(nonQuotedName) ? original : `${leadingSpaces}${this._scopeAnimationKeyframe(nonQuotedName, scopeSelector, unscopedKeyframesSet)}`;\n }\n }));\n content = content.replace(/((?:^|\\s+|;)(?:-webkit-)?animation-name(?:\\s*):(?:\\s*))([^;]+)/g, (_match, start, commaSeparatedKeyframes) => `${start}${commaSeparatedKeyframes.split(',').map(keyframe => this._scopeAnimationKeyframe(keyframe, scopeSelector, unscopedKeyframesSet)).join(',')}`);\n return {\n ...rule,\n content\n };\n }\n _insertPolyfillDirectivesInCssText(cssText) {\n return cssText.replace(_cssContentNextSelectorRe, function (...m) {\n return m[2] + '{';\n });\n }\n _insertPolyfillRulesInCssText(cssText) {\n return cssText.replace(_cssContentRuleRe, (...m) => {\n const rule = m[0].replace(m[1], '').replace(m[2], '');\n return m[4] + rule;\n });\n }\n _scopeCssText(cssText, scopeSelector, hostSelector) {\n const unscopedRules = this._extractUnscopedRulesFromCssText(cssText);\n cssText = this._insertPolyfillHostInCssText(cssText);\n cssText = this._convertColonHost(cssText);\n cssText = this._convertColonHostContext(cssText);\n cssText = this._convertShadowDOMSelectors(cssText);\n if (scopeSelector) {\n cssText = this._scopeKeyframesRelatedCss(cssText, scopeSelector);\n cssText = this._scopeSelectors(cssText, scopeSelector, hostSelector);\n }\n cssText = cssText + '\\n' + unscopedRules;\n return cssText.trim();\n }\n _extractUnscopedRulesFromCssText(cssText) {\n let r = '';\n let m;\n _cssContentUnscopedRuleRe.lastIndex = 0;\n while ((m = _cssContentUnscopedRuleRe.exec(cssText)) !== null) {\n const rule = m[0].replace(m[2], '').replace(m[1], m[4]);\n r += rule + '\\n\\n';\n }\n return r;\n }\n _convertColonHost(cssText) {\n return cssText.replace(_cssColonHostRe, (_, hostSelectors, otherSelectors) => {\n if (hostSelectors) {\n const convertedSelectors = [];\n for (const hostSelector of this._splitOnTopLevelCommas(hostSelectors, true)) {\n const trimmedHostSelector = hostSelector.trim();\n if (!trimmedHostSelector) break;\n const convertedSelector = _polyfillHostNoCombinator + trimmedHostSelector.replace(_polyfillHost, '') + otherSelectors;\n convertedSelectors.push(convertedSelector);\n }\n return convertedSelectors.join(',');\n } else {\n return _polyfillHostNoCombinator + otherSelectors;\n }\n });\n }\n *_splitOnTopLevelCommas(text, returnOnClosingParen) {\n const length = text.length;\n let parens = 0;\n let prev = 0;\n for (let i = 0; i < length; i++) {\n const charCode = text.charCodeAt(i);\n if (charCode === $LPAREN) {\n parens++;\n } else if (charCode === $RPAREN) {\n parens--;\n if (parens < 0 && returnOnClosingParen) {\n yield text.slice(prev, i);\n return;\n }\n } else if (charCode === $COMMA && parens === 0) {\n yield text.slice(prev, i);\n prev = i + 1;\n }\n }\n yield text.slice(prev);\n }\n _convertColonHostContext(cssText) {\n const results = [];\n for (const part of this._splitOnTopLevelCommas(cssText, false)) {\n results.push(this._convertColonHostContextInSelectorPart(part));\n }\n return results.join(',');\n }\n _convertColonHostContextInSelectorPart(cssText) {\n return cssText.replace(_cssColonHostContextReGlobal, (selectorText, pseudoPrefix) => {\n const contextSelectorGroups = [[]];\n let startIndex = selectorText.indexOf(_polyfillHostContext);\n while (startIndex !== -1) {\n const afterPrefix = selectorText.substring(startIndex + _polyfillHostContext.length);\n if (!afterPrefix || afterPrefix[0] !== '(') {\n selectorText = afterPrefix;\n startIndex = selectorText.indexOf(_polyfillHostContext);\n continue;\n }\n const newContextSelectors = [];\n let endIndex = 0;\n for (const selector of this._splitOnTopLevelCommas(afterPrefix.substring(1), true)) {\n endIndex = endIndex + selector.length + 1;\n const trimmed = selector.trim();\n if (trimmed) {\n newContextSelectors.push(trimmed);\n }\n }\n const contextSelectorGroupsLength = contextSelectorGroups.length;\n repeatGroups(contextSelectorGroups, newContextSelectors.length);\n for (let i = 0; i < newContextSelectors.length; i++) {\n for (let j = 0; j < contextSelectorGroupsLength; j++) {\n contextSelectorGroups[j + i * contextSelectorGroupsLength].push(newContextSelectors[i]);\n }\n }\n selectorText = afterPrefix.substring(endIndex + 1);\n startIndex = selectorText.indexOf(_polyfillHostContext);\n }\n return contextSelectorGroups.map(contextSelectors => _combineHostContextSelectors(contextSelectors, selectorText, pseudoPrefix)).join(', ');\n });\n }\n _convertShadowDOMSelectors(cssText) {\n return _shadowDOMSelectorsRe.reduce((result, pattern) => result.replace(pattern, ' '), cssText);\n }\n _scopeSelectors(cssText, scopeSelector, hostSelector) {\n return processRules(cssText, rule => {\n let selector = rule.selector;\n let content = rule.content;\n if (rule.selector[0] !== '@') {\n selector = this._scopeSelector({\n selector,\n scopeSelector,\n hostSelector,\n isParentSelector: true\n });\n } else if (scopedAtRuleIdentifiers.some(atRule => rule.selector.startsWith(atRule))) {\n content = this._scopeSelectors(rule.content, scopeSelector, hostSelector);\n } else if (rule.selector.startsWith('@font-face') || rule.selector.startsWith('@page')) {\n content = this._stripScopingSelectors(rule.content);\n }\n return new CssRule(selector, content);\n });\n }\n _stripScopingSelectors(cssText) {\n return processRules(cssText, rule => {\n const selector = rule.selector.replace(_shadowDeepSelectors, ' ').replace(_polyfillHostNoCombinatorRe, ' ');\n return new CssRule(selector, rule.content);\n });\n }\n _safeSelector;\n _shouldScopeIndicator;\n _scopeSelector({\n selector,\n scopeSelector,\n hostSelector,\n isParentSelector = false\n }) {\n const selectorSplitRe = / ?,(?!(?:[^)(]*(?:\\([^)(]*(?:\\([^)(]*(?:\\([^)(]*\\)[^)(]*)*\\)[^)(]*)*\\)[^)(]*)*\\))) ?/;\n return selector.split(selectorSplitRe).map(part => part.split(_shadowDeepSelectors)).map(deepParts => {\n const [shallowPart, ...otherParts] = deepParts;\n const applyScope = shallowPart => {\n if (this._selectorNeedsScoping(shallowPart, scopeSelector)) {\n return this._applySelectorScope({\n selector: shallowPart,\n scopeSelector,\n hostSelector,\n isParentSelector\n });\n } else {\n return shallowPart;\n }\n };\n return [applyScope(shallowPart), ...otherParts].join(' ');\n }).join(', ');\n }\n _selectorNeedsScoping(selector, scopeSelector) {\n const re = this._makeScopeMatcher(scopeSelector);\n return !re.test(selector);\n }\n _makeScopeMatcher(scopeSelector) {\n const lre = /\\[/g;\n const rre = /\\]/g;\n scopeSelector = scopeSelector.replace(lre, '\\\\[').replace(rre, '\\\\]');\n return new RegExp('^(' + scopeSelector + ')' + _selectorReSuffix, 'm');\n }\n _applySimpleSelectorScope(selector, scopeSelector, hostSelector) {\n _polyfillHostRe.lastIndex = 0;\n if (_polyfillHostRe.test(selector)) {\n const replaceBy = `[${hostSelector}]`;\n let result = selector;\n while (result.match(_polyfillHostNoCombinatorRe)) {\n result = result.replace(_polyfillHostNoCombinatorRe, (_hnc, selector) => {\n return selector.replace(/([^:\\)]*)(:*)(.*)/, (_, before, colon, after) => {\n return before + replaceBy + colon + after;\n });\n });\n }\n return result.replace(_polyfillHostRe, replaceBy);\n }\n return scopeSelector + ' ' + selector;\n }\n _applySelectorScope({\n selector,\n scopeSelector,\n hostSelector,\n isParentSelector\n }) {\n const isRe = /\\[is=([^\\]]*)\\]/g;\n scopeSelector = scopeSelector.replace(isRe, (_, ...parts) => parts[0]);\n const attrName = `[${scopeSelector}]`;\n const _scopeSelectorPart = p => {\n let scopedP = p.trim();\n if (!scopedP) {\n return p;\n }\n if (p.includes(_polyfillHostNoCombinator)) {\n scopedP = this._applySimpleSelectorScope(p, scopeSelector, hostSelector);\n if (!p.match(_polyfillHostNoCombinatorOutsidePseudoFunction)) {\n const [_, before, colon, after] = scopedP.match(/([^:]*)(:*)([\\s\\S]*)/);\n scopedP = before + attrName + colon + after;\n }\n } else {\n const t = p.replace(_polyfillHostRe, '');\n if (t.length > 0) {\n const matches = t.match(/([^:]*)(:*)([\\s\\S]*)/);\n if (matches) {\n scopedP = matches[1] + attrName + matches[2] + matches[3];\n }\n }\n }\n return scopedP;\n };\n const _pseudoFunctionAwareScopeSelectorPart = selectorPart => {\n let scopedPart = '';\n const pseudoSelectorParts = [];\n let pseudoSelectorMatch;\n while ((pseudoSelectorMatch = _cssPrefixWithPseudoSelectorFunction.exec(selectorPart)) !== null) {\n let openedBrackets = 1;\n let index = _cssPrefixWithPseudoSelectorFunction.lastIndex;\n while (index < selectorPart.length) {\n const currentSymbol = selectorPart[index];\n index++;\n if (currentSymbol === '(') {\n openedBrackets++;\n continue;\n }\n if (currentSymbol === ')') {\n openedBrackets--;\n if (openedBrackets === 0) {\n break;\n }\n continue;\n }\n }\n pseudoSelectorParts.push(`${pseudoSelectorMatch[0]}${selectorPart.slice(_cssPrefixWithPseudoSelectorFunction.lastIndex, index)}`);\n _cssPrefixWithPseudoSelectorFunction.lastIndex = index;\n }\n if (pseudoSelectorParts.join('') === selectorPart) {\n scopedPart = pseudoSelectorParts.map(selectorPart => {\n const [cssPseudoSelectorFunction] = selectorPart.match(_cssPrefixWithPseudoSelectorFunction) ?? [];\n const selectorToScope = selectorPart.slice(cssPseudoSelectorFunction?.length, -1);\n if (selectorToScope.includes(_polyfillHostNoCombinator)) {\n this._shouldScopeIndicator = true;\n }\n const scopedInnerPart = this._scopeSelector({\n selector: selectorToScope,\n scopeSelector,\n hostSelector\n });\n return `${cssPseudoSelectorFunction}${scopedInnerPart})`;\n }).join('');\n } else {\n this._shouldScopeIndicator = this._shouldScopeIndicator || selectorPart.includes(_polyfillHostNoCombinator);\n scopedPart = this._shouldScopeIndicator ? _scopeSelectorPart(selectorPart) : selectorPart;\n }\n return scopedPart;\n };\n if (isParentSelector) {\n this._safeSelector = new SafeSelector(selector);\n selector = this._safeSelector.content();\n }\n let scopedSelector = '';\n let startIndex = 0;\n let res;\n const sep = /( |>|\\+|~(?!=))(?!([^)(]*(?:\\([^)(]*(?:\\([^)(]*(?:\\([^)(]*\\)[^)(]*)*\\)[^)(]*)*\\)[^)(]*)*\\)))\\s*/g;\n const hasHost = selector.includes(_polyfillHostNoCombinator);\n if (isParentSelector || this._shouldScopeIndicator) {\n this._shouldScopeIndicator = !hasHost;\n }\n while ((res = sep.exec(selector)) !== null) {\n const separator = res[1];\n const part = selector.slice(startIndex, res.index);\n if (part.match(/__esc-ph-(\\d+)__/) && selector[res.index + 1]?.match(/[a-fA-F\\d]/)) {\n continue;\n }\n const scopedPart = _pseudoFunctionAwareScopeSelectorPart(part);\n scopedSelector += `${scopedPart} ${separator} `;\n startIndex = sep.lastIndex;\n }\n const part = selector.substring(startIndex);\n scopedSelector += _pseudoFunctionAwareScopeSelectorPart(part);\n return this._safeSelector.restore(scopedSelector);\n }\n _insertPolyfillHostInCssText(selector) {\n return selector.replace(_colonHostContextRe, _polyfillHostContext).replace(_colonHostRe, _polyfillHost);\n }\n}\nclass SafeSelector {\n placeholders = [];\n index = 0;\n _content;\n constructor(selector) {\n selector = this._escapeRegexMatches(selector, /(\\[[^\\]]*\\])/g);\n selector = selector.replace(/(\\\\.)/g, (_, keep) => {\n const replaceBy = `__esc-ph-${this.index}__`;\n this.placeholders.push(keep);\n this.index++;\n return replaceBy;\n });\n this._content = selector.replace(nthRegex, (_, pseudo, exp) => {\n const replaceBy = `__ph-${this.index}__`;\n this.placeholders.push(`(${exp})`);\n this.index++;\n return pseudo + replaceBy;\n });\n }\n restore(content) {\n return content.replace(/__(?:ph|esc-ph)-(\\d+)__/g, (_ph, index) => this.placeholders[+index]);\n }\n content() {\n return this._content;\n }\n _escapeRegexMatches(content, pattern) {\n return content.replace(pattern, (_, keep) => {\n const replaceBy = `__ph-${this.index}__`;\n this.placeholders.push(keep);\n this.index++;\n return replaceBy;\n });\n }\n}\nconst _cssScopedPseudoFunctionPrefix = '(:(where|is)\\\\()?';\nconst _cssPrefixWithPseudoSelectorFunction = /:(where|is)\\(/gi;\nconst _cssContentNextSelectorRe = /polyfill-next-selector[^}]*content:[\\s]*?(['\"])(.*?)\\1[;\\s]*}([^{]*?){/gim;\nconst _cssContentRuleRe = /(polyfill-rule)[^}]*(content:[\\s]*(['\"])(.*?)\\3)[;\\s]*[^}]*}/gim;\nconst _cssContentUnscopedRuleRe = /(polyfill-unscoped-rule)[^}]*(content:[\\s]*(['\"])(.*?)\\3)[;\\s]*[^}]*}/gim;\nconst _polyfillHost = '-shadowcsshost';\nconst _polyfillHostContext = '-shadowcsscontext';\nconst _noParens = '[^)(]*';\nconst _level1Parens = String.raw`(?:\\(${_noParens}\\)|${_noParens})+?`;\nconst _level2Parens = String.raw`(?:\\(${_level1Parens}\\)|${_noParens})+?`;\nconst _parenSuffix = String.raw`(?:\\((${_level2Parens})\\))`;\nconst nthRegex = new RegExp(String.raw`(:nth-[-\\w]+)` + _parenSuffix, 'g');\nconst _cssColonHostRe = new RegExp(_polyfillHost + _parenSuffix + '?([^,{]*)', 'gim');\nconst _hostContextPattern = _polyfillHostContext + _parenSuffix + '?([^{]*)';\nconst _cssColonHostContextReGlobal = new RegExp(`${_cssScopedPseudoFunctionPrefix}(${_hostContextPattern})`, 'gim');\nconst _polyfillHostNoCombinator = _polyfillHost + '-no-combinator';\nconst _polyfillHostNoCombinatorOutsidePseudoFunction = new RegExp(`${_polyfillHostNoCombinator}(?![^(]*\\\\))`, 'g');\nconst _polyfillHostNoCombinatorRe = /-shadowcsshost-no-combinator([^\\s,]*)/;\nconst _shadowDOMSelectorsRe = [/::shadow/g, /::content/g, /\\/shadow-deep\\//g, /\\/shadow\\//g];\nconst _shadowDeepSelectors = /(?:>>>)|(?:\\/deep\\/)|(?:::ng-deep)/g;\nconst _selectorReSuffix = '([>\\\\s~+[.,{:][\\\\s\\\\S]*)?$';\nconst _polyfillHostRe = /-shadowcsshost/gim;\nconst _colonHostRe = /:host/gim;\nconst _colonHostContextRe = /:host-context/gim;\nconst _newLinesRe = /\\r?\\n/g;\nconst _commentRe = /\\/\\*[\\s\\S]*?\\*\\//g;\nconst _commentWithHashRe = /\\/\\*\\s*#\\s*source(Mapping)?URL=/g;\nconst COMMENT_PLACEHOLDER = '%COMMENT%';\nconst _commentWithHashPlaceHolderRe = new RegExp(COMMENT_PLACEHOLDER, 'g');\nconst BLOCK_PLACEHOLDER = '%BLOCK%';\nconst _ruleRe = new RegExp(`(\\\\s*(?:${COMMENT_PLACEHOLDER}\\\\s*)*)([^;\\\\{\\\\}]+?)(\\\\s*)((?:{%BLOCK%}?\\\\s*;?)|(?:\\\\s*;))`, 'g');\nconst CONTENT_PAIRS = new Map([['{', '}']]);\nconst COMMA_IN_PLACEHOLDER = '%COMMA_IN_PLACEHOLDER%';\nconst SEMI_IN_PLACEHOLDER = '%SEMI_IN_PLACEHOLDER%';\nconst COLON_IN_PLACEHOLDER = '%COLON_IN_PLACEHOLDER%';\nconst _cssCommaInPlaceholderReGlobal = new RegExp(COMMA_IN_PLACEHOLDER, 'g');\nconst _cssSemiInPlaceholderReGlobal = new RegExp(SEMI_IN_PLACEHOLDER, 'g');\nconst _cssColonInPlaceholderReGlobal = new RegExp(COLON_IN_PLACEHOLDER, 'g');\nclass CssRule {\n selector;\n content;\n constructor(selector, content) {\n this.selector = selector;\n this.content = content;\n }\n}\nfunction processRules(input, ruleCallback) {\n const escaped = escapeInStrings(input);\n const inputWithEscapedBlocks = escapeBlocks(escaped, CONTENT_PAIRS, BLOCK_PLACEHOLDER);\n let nextBlockIndex = 0;\n const escapedResult = inputWithEscapedBlocks.escapedString.replace(_ruleRe, (...m) => {\n const selector = m[2];\n let content = '';\n let suffix = m[4];\n let contentPrefix = '';\n if (suffix && suffix.startsWith('{' + BLOCK_PLACEHOLDER)) {\n content = inputWithEscapedBlocks.blocks[nextBlockIndex++];\n suffix = suffix.substring(BLOCK_PLACEHOLDER.length + 1);\n contentPrefix = '{';\n }\n const rule = ruleCallback(new CssRule(selector, content));\n return `${m[1]}${rule.selector}${m[3]}${contentPrefix}${rule.content}${suffix}`;\n });\n return unescapeInStrings(escapedResult);\n}\nclass StringWithEscapedBlocks {\n escapedString;\n blocks;\n constructor(escapedString, blocks) {\n this.escapedString = escapedString;\n this.blocks = blocks;\n }\n}\nfunction escapeBlocks(input, charPairs, placeholder) {\n const resultParts = [];\n const escapedBlocks = [];\n let openCharCount = 0;\n let nonBlockStartIndex = 0;\n let blockStartIndex = -1;\n let openChar;\n let closeChar;\n for (let i = 0; i < input.length; i++) {\n const char = input[i];\n if (char === '\\\\') {\n i++;\n } else if (char === closeChar) {\n openCharCount--;\n if (openCharCount === 0) {\n escapedBlocks.push(input.substring(blockStartIndex, i));\n resultParts.push(placeholder);\n nonBlockStartIndex = i;\n blockStartIndex = -1;\n openChar = closeChar = undefined;\n }\n } else if (char === openChar) {\n openCharCount++;\n } else if (openCharCount === 0 && charPairs.has(char)) {\n openChar = char;\n closeChar = charPairs.get(char);\n openCharCount = 1;\n blockStartIndex = i + 1;\n resultParts.push(input.substring(nonBlockStartIndex, blockStartIndex));\n }\n }\n if (blockStartIndex !== -1) {\n escapedBlocks.push(input.substring(blockStartIndex));\n resultParts.push(placeholder);\n } else {\n resultParts.push(input.substring(nonBlockStartIndex));\n }\n return new StringWithEscapedBlocks(resultParts.join(''), escapedBlocks);\n}\nconst ESCAPE_IN_STRING_MAP = {\n ';': SEMI_IN_PLACEHOLDER,\n ',': COMMA_IN_PLACEHOLDER,\n ':': COLON_IN_PLACEHOLDER\n};\nfunction escapeInStrings(input) {\n let result = input;\n let currentQuoteChar = null;\n for (let i = 0; i < result.length; i++) {\n const char = result[i];\n if (char === '\\\\') {\n i++;\n } else {\n if (currentQuoteChar !== null) {\n if (char === currentQuoteChar) {\n currentQuoteChar = null;\n } else {\n const placeholder = ESCAPE_IN_STRING_MAP[char];\n if (placeholder) {\n result = `${result.substr(0, i)}${placeholder}${result.substr(i + 1)}`;\n i += placeholder.length - 1;\n }\n }\n } else if (char === \"'\" || char === '\"') {\n currentQuoteChar = char;\n }\n }\n }\n return result;\n}\nfunction unescapeInStrings(input) {\n let result = input.replace(_cssCommaInPlaceholderReGlobal, ',');\n result = result.replace(_cssSemiInPlaceholderReGlobal, ';');\n result = result.replace(_cssColonInPlaceholderReGlobal, ':');\n return result;\n}\nfunction unescapeQuotes(str, isQuoted) {\n return !isQuoted ? str : str.replace(/((?:^|[^\\\\])(?:\\\\\\\\)*)\\\\(?=['\"])/g, '$1');\n}\nfunction _combineHostContextSelectors(contextSelectors, otherSelectors, pseudoPrefix = '') {\n const hostMarker = _polyfillHostNoCombinator;\n _polyfillHostRe.lastIndex = 0;\n const otherSelectorsHasHost = _polyfillHostRe.test(otherSelectors);\n if (contextSelectors.length === 0) {\n return hostMarker + otherSelectors;\n }\n const combined = [contextSelectors.pop() || ''];\n while (contextSelectors.length > 0) {\n const length = combined.length;\n const contextSelector = contextSelectors.pop();\n for (let i = 0; i < length; i++) {\n const previousSelectors = combined[i];\n combined[length * 2 + i] = previousSelectors + ' ' + contextSelector;\n combined[length + i] = contextSelector + ' ' + previousSelectors;\n combined[i] = contextSelector + previousSelectors;\n }\n }\n return combined.map(s => otherSelectorsHasHost ? `${pseudoPrefix}${s}${otherSelectors}` : `${pseudoPrefix}${s}${hostMarker}${otherSelectors}, ${pseudoPrefix}${s} ${hostMarker}${otherSelectors}`).join(',');\n}\nfunction repeatGroups(groups, multiples) {\n const length = groups.length;\n for (let i = 1; i < multiples; i++) {\n for (let j = 0; j < length; j++) {\n groups[j + i * length] = groups[j].slice(0);\n }\n }\n}\n\nvar OpKind;\n(function (OpKind) {\n OpKind[OpKind[\"ListEnd\"] = 0] = \"ListEnd\";\n OpKind[OpKind[\"Statement\"] = 1] = \"Statement\";\n OpKind[OpKind[\"Variable\"] = 2] = \"Variable\";\n OpKind[OpKind[\"ElementStart\"] = 3] = \"ElementStart\";\n OpKind[OpKind[\"Element\"] = 4] = \"Element\";\n OpKind[OpKind[\"Template\"] = 5] = \"Template\";\n OpKind[OpKind[\"ElementEnd\"] = 6] = \"ElementEnd\";\n OpKind[OpKind[\"ContainerStart\"] = 7] = \"ContainerStart\";\n OpKind[OpKind[\"Container\"] = 8] = \"Container\";\n OpKind[OpKind[\"ContainerEnd\"] = 9] = \"ContainerEnd\";\n OpKind[OpKind[\"DisableBindings\"] = 10] = \"DisableBindings\";\n OpKind[OpKind[\"ConditionalCreate\"] = 11] = \"ConditionalCreate\";\n OpKind[OpKind[\"ConditionalBranchCreate\"] = 12] = \"ConditionalBranchCreate\";\n OpKind[OpKind[\"Conditional\"] = 13] = \"Conditional\";\n OpKind[OpKind[\"EnableBindings\"] = 14] = \"EnableBindings\";\n OpKind[OpKind[\"Text\"] = 15] = \"Text\";\n OpKind[OpKind[\"Listener\"] = 16] = \"Listener\";\n OpKind[OpKind[\"InterpolateText\"] = 17] = \"InterpolateText\";\n OpKind[OpKind[\"Binding\"] = 18] = \"Binding\";\n OpKind[OpKind[\"Property\"] = 19] = \"Property\";\n OpKind[OpKind[\"StyleProp\"] = 20] = \"StyleProp\";\n OpKind[OpKind[\"ClassProp\"] = 21] = \"ClassProp\";\n OpKind[OpKind[\"StyleMap\"] = 22] = \"StyleMap\";\n OpKind[OpKind[\"ClassMap\"] = 23] = \"ClassMap\";\n OpKind[OpKind[\"Advance\"] = 24] = \"Advance\";\n OpKind[OpKind[\"Pipe\"] = 25] = \"Pipe\";\n OpKind[OpKind[\"Attribute\"] = 26] = \"Attribute\";\n OpKind[OpKind[\"ExtractedAttribute\"] = 27] = \"ExtractedAttribute\";\n OpKind[OpKind[\"Defer\"] = 28] = \"Defer\";\n OpKind[OpKind[\"DeferOn\"] = 29] = \"DeferOn\";\n OpKind[OpKind[\"DeferWhen\"] = 30] = \"DeferWhen\";\n OpKind[OpKind[\"I18nMessage\"] = 31] = \"I18nMessage\";\n OpKind[OpKind[\"DomProperty\"] = 32] = \"DomProperty\";\n OpKind[OpKind[\"Namespace\"] = 33] = \"Namespace\";\n OpKind[OpKind[\"ProjectionDef\"] = 34] = \"ProjectionDef\";\n OpKind[OpKind[\"Projection\"] = 35] = \"Projection\";\n OpKind[OpKind[\"RepeaterCreate\"] = 36] = \"RepeaterCreate\";\n OpKind[OpKind[\"Repeater\"] = 37] = \"Repeater\";\n OpKind[OpKind[\"TwoWayProperty\"] = 38] = \"TwoWayProperty\";\n OpKind[OpKind[\"TwoWayListener\"] = 39] = \"TwoWayListener\";\n OpKind[OpKind[\"DeclareLet\"] = 40] = \"DeclareLet\";\n OpKind[OpKind[\"StoreLet\"] = 41] = \"StoreLet\";\n OpKind[OpKind[\"I18nStart\"] = 42] = \"I18nStart\";\n OpKind[OpKind[\"I18n\"] = 43] = \"I18n\";\n OpKind[OpKind[\"I18nEnd\"] = 44] = \"I18nEnd\";\n OpKind[OpKind[\"I18nExpression\"] = 45] = \"I18nExpression\";\n OpKind[OpKind[\"I18nApply\"] = 46] = \"I18nApply\";\n OpKind[OpKind[\"IcuStart\"] = 47] = \"IcuStart\";\n OpKind[OpKind[\"IcuEnd\"] = 48] = \"IcuEnd\";\n OpKind[OpKind[\"IcuPlaceholder\"] = 49] = \"IcuPlaceholder\";\n OpKind[OpKind[\"I18nContext\"] = 50] = \"I18nContext\";\n OpKind[OpKind[\"I18nAttributes\"] = 51] = \"I18nAttributes\";\n OpKind[OpKind[\"SourceLocation\"] = 52] = \"SourceLocation\";\n OpKind[OpKind[\"Animation\"] = 53] = \"Animation\";\n OpKind[OpKind[\"AnimationString\"] = 54] = \"AnimationString\";\n OpKind[OpKind[\"AnimationBinding\"] = 55] = \"AnimationBinding\";\n OpKind[OpKind[\"AnimationListener\"] = 56] = \"AnimationListener\";\n OpKind[OpKind[\"Control\"] = 57] = \"Control\";\n OpKind[OpKind[\"ControlCreate\"] = 58] = \"ControlCreate\";\n})(OpKind || (OpKind = {}));\nvar ExpressionKind;\n(function (ExpressionKind) {\n ExpressionKind[ExpressionKind[\"LexicalRead\"] = 0] = \"LexicalRead\";\n ExpressionKind[ExpressionKind[\"Context\"] = 1] = \"Context\";\n ExpressionKind[ExpressionKind[\"TrackContext\"] = 2] = \"TrackContext\";\n ExpressionKind[ExpressionKind[\"ReadVariable\"] = 3] = \"ReadVariable\";\n ExpressionKind[ExpressionKind[\"NextContext\"] = 4] = \"NextContext\";\n ExpressionKind[ExpressionKind[\"Reference\"] = 5] = \"Reference\";\n ExpressionKind[ExpressionKind[\"StoreLet\"] = 6] = \"StoreLet\";\n ExpressionKind[ExpressionKind[\"ContextLetReference\"] = 7] = \"ContextLetReference\";\n ExpressionKind[ExpressionKind[\"GetCurrentView\"] = 8] = \"GetCurrentView\";\n ExpressionKind[ExpressionKind[\"RestoreView\"] = 9] = \"RestoreView\";\n ExpressionKind[ExpressionKind[\"ResetView\"] = 10] = \"ResetView\";\n ExpressionKind[ExpressionKind[\"PureFunctionExpr\"] = 11] = \"PureFunctionExpr\";\n ExpressionKind[ExpressionKind[\"PureFunctionParameterExpr\"] = 12] = \"PureFunctionParameterExpr\";\n ExpressionKind[ExpressionKind[\"PipeBinding\"] = 13] = \"PipeBinding\";\n ExpressionKind[ExpressionKind[\"PipeBindingVariadic\"] = 14] = \"PipeBindingVariadic\";\n ExpressionKind[ExpressionKind[\"SafePropertyRead\"] = 15] = \"SafePropertyRead\";\n ExpressionKind[ExpressionKind[\"SafeKeyedRead\"] = 16] = \"SafeKeyedRead\";\n ExpressionKind[ExpressionKind[\"SafeInvokeFunction\"] = 17] = \"SafeInvokeFunction\";\n ExpressionKind[ExpressionKind[\"SafeTernaryExpr\"] = 18] = \"SafeTernaryExpr\";\n ExpressionKind[ExpressionKind[\"EmptyExpr\"] = 19] = \"EmptyExpr\";\n ExpressionKind[ExpressionKind[\"AssignTemporaryExpr\"] = 20] = \"AssignTemporaryExpr\";\n ExpressionKind[ExpressionKind[\"ReadTemporaryExpr\"] = 21] = \"ReadTemporaryExpr\";\n ExpressionKind[ExpressionKind[\"SlotLiteralExpr\"] = 22] = \"SlotLiteralExpr\";\n ExpressionKind[ExpressionKind[\"ConditionalCase\"] = 23] = \"ConditionalCase\";\n ExpressionKind[ExpressionKind[\"ConstCollected\"] = 24] = \"ConstCollected\";\n ExpressionKind[ExpressionKind[\"TwoWayBindingSet\"] = 25] = \"TwoWayBindingSet\";\n ExpressionKind[ExpressionKind[\"ArrowFunction\"] = 26] = \"ArrowFunction\";\n})(ExpressionKind || (ExpressionKind = {}));\nvar VariableFlags;\n(function (VariableFlags) {\n VariableFlags[VariableFlags[\"None\"] = 0] = \"None\";\n VariableFlags[VariableFlags[\"AlwaysInline\"] = 1] = \"AlwaysInline\";\n})(VariableFlags || (VariableFlags = {}));\nvar SemanticVariableKind;\n(function (SemanticVariableKind) {\n SemanticVariableKind[SemanticVariableKind[\"Context\"] = 0] = \"Context\";\n SemanticVariableKind[SemanticVariableKind[\"Identifier\"] = 1] = \"Identifier\";\n SemanticVariableKind[SemanticVariableKind[\"SavedView\"] = 2] = \"SavedView\";\n SemanticVariableKind[SemanticVariableKind[\"Alias\"] = 3] = \"Alias\";\n})(SemanticVariableKind || (SemanticVariableKind = {}));\nvar BindingKind;\n(function (BindingKind) {\n BindingKind[BindingKind[\"Attribute\"] = 0] = \"Attribute\";\n BindingKind[BindingKind[\"ClassName\"] = 1] = \"ClassName\";\n BindingKind[BindingKind[\"StyleProperty\"] = 2] = \"StyleProperty\";\n BindingKind[BindingKind[\"Property\"] = 3] = \"Property\";\n BindingKind[BindingKind[\"Template\"] = 4] = \"Template\";\n BindingKind[BindingKind[\"I18n\"] = 5] = \"I18n\";\n BindingKind[BindingKind[\"LegacyAnimation\"] = 6] = \"LegacyAnimation\";\n BindingKind[BindingKind[\"TwoWayProperty\"] = 7] = \"TwoWayProperty\";\n BindingKind[BindingKind[\"Animation\"] = 8] = \"Animation\";\n})(BindingKind || (BindingKind = {}));\nvar I18nParamResolutionTime;\n(function (I18nParamResolutionTime) {\n I18nParamResolutionTime[I18nParamResolutionTime[\"Creation\"] = 0] = \"Creation\";\n I18nParamResolutionTime[I18nParamResolutionTime[\"Postproccessing\"] = 1] = \"Postproccessing\";\n})(I18nParamResolutionTime || (I18nParamResolutionTime = {}));\nvar I18nExpressionFor;\n(function (I18nExpressionFor) {\n I18nExpressionFor[I18nExpressionFor[\"I18nText\"] = 0] = \"I18nText\";\n I18nExpressionFor[I18nExpressionFor[\"I18nAttribute\"] = 1] = \"I18nAttribute\";\n})(I18nExpressionFor || (I18nExpressionFor = {}));\nvar I18nParamValueFlags;\n(function (I18nParamValueFlags) {\n I18nParamValueFlags[I18nParamValueFlags[\"None\"] = 0] = \"None\";\n I18nParamValueFlags[I18nParamValueFlags[\"ElementTag\"] = 1] = \"ElementTag\";\n I18nParamValueFlags[I18nParamValueFlags[\"TemplateTag\"] = 2] = \"TemplateTag\";\n I18nParamValueFlags[I18nParamValueFlags[\"OpenTag\"] = 4] = \"OpenTag\";\n I18nParamValueFlags[I18nParamValueFlags[\"CloseTag\"] = 8] = \"CloseTag\";\n I18nParamValueFlags[I18nParamValueFlags[\"ExpressionIndex\"] = 16] = \"ExpressionIndex\";\n})(I18nParamValueFlags || (I18nParamValueFlags = {}));\nvar Namespace;\n(function (Namespace) {\n Namespace[Namespace[\"HTML\"] = 0] = \"HTML\";\n Namespace[Namespace[\"SVG\"] = 1] = \"SVG\";\n Namespace[Namespace[\"Math\"] = 2] = \"Math\";\n})(Namespace || (Namespace = {}));\nvar DeferTriggerKind;\n(function (DeferTriggerKind) {\n DeferTriggerKind[DeferTriggerKind[\"Idle\"] = 0] = \"Idle\";\n DeferTriggerKind[DeferTriggerKind[\"Immediate\"] = 1] = \"Immediate\";\n DeferTriggerKind[DeferTriggerKind[\"Timer\"] = 2] = \"Timer\";\n DeferTriggerKind[DeferTriggerKind[\"Hover\"] = 3] = \"Hover\";\n DeferTriggerKind[DeferTriggerKind[\"Interaction\"] = 4] = \"Interaction\";\n DeferTriggerKind[DeferTriggerKind[\"Viewport\"] = 5] = \"Viewport\";\n DeferTriggerKind[DeferTriggerKind[\"Never\"] = 6] = \"Never\";\n})(DeferTriggerKind || (DeferTriggerKind = {}));\nvar I18nContextKind;\n(function (I18nContextKind) {\n I18nContextKind[I18nContextKind[\"RootI18n\"] = 0] = \"RootI18n\";\n I18nContextKind[I18nContextKind[\"Icu\"] = 1] = \"Icu\";\n I18nContextKind[I18nContextKind[\"Attr\"] = 2] = \"Attr\";\n})(I18nContextKind || (I18nContextKind = {}));\nvar TemplateKind;\n(function (TemplateKind) {\n TemplateKind[TemplateKind[\"NgTemplate\"] = 0] = \"NgTemplate\";\n TemplateKind[TemplateKind[\"Structural\"] = 1] = \"Structural\";\n TemplateKind[TemplateKind[\"Block\"] = 2] = \"Block\";\n})(TemplateKind || (TemplateKind = {}));\n\nclass OpList {\n static nextListId = 0;\n debugListId = OpList.nextListId++;\n head = {\n kind: OpKind.ListEnd,\n next: null,\n prev: null,\n debugListId: this.debugListId\n };\n tail = {\n kind: OpKind.ListEnd,\n next: null,\n prev: null,\n debugListId: this.debugListId\n };\n constructor() {\n this.head.next = this.tail;\n this.tail.prev = this.head;\n }\n push(op) {\n if (Array.isArray(op)) {\n for (const o of op) {\n this.push(o);\n }\n return;\n }\n OpList.assertIsNotEnd(op);\n OpList.assertIsUnowned(op);\n op.debugListId = this.debugListId;\n const oldLast = this.tail.prev;\n op.prev = oldLast;\n oldLast.next = op;\n op.next = this.tail;\n this.tail.prev = op;\n }\n prepend(ops) {\n if (ops.length === 0) {\n return;\n }\n for (const op of ops) {\n OpList.assertIsNotEnd(op);\n OpList.assertIsUnowned(op);\n op.debugListId = this.debugListId;\n }\n const first = this.head.next;\n let prev = this.head;\n for (const op of ops) {\n prev.next = op;\n op.prev = prev;\n prev = op;\n }\n prev.next = first;\n first.prev = prev;\n }\n *[Symbol.iterator]() {\n let current = this.head.next;\n while (current !== this.tail) {\n OpList.assertIsOwned(current, this.debugListId);\n const next = current.next;\n yield current;\n current = next;\n }\n }\n *reversed() {\n let current = this.tail.prev;\n while (current !== this.head) {\n OpList.assertIsOwned(current, this.debugListId);\n const prev = current.prev;\n yield current;\n current = prev;\n }\n }\n static replace(oldOp, newOp) {\n OpList.assertIsNotEnd(oldOp);\n OpList.assertIsNotEnd(newOp);\n OpList.assertIsOwned(oldOp);\n OpList.assertIsUnowned(newOp);\n newOp.debugListId = oldOp.debugListId;\n if (oldOp.prev !== null) {\n oldOp.prev.next = newOp;\n newOp.prev = oldOp.prev;\n }\n if (oldOp.next !== null) {\n oldOp.next.prev = newOp;\n newOp.next = oldOp.next;\n }\n oldOp.debugListId = null;\n oldOp.prev = null;\n oldOp.next = null;\n }\n static replaceWithMany(oldOp, newOps) {\n if (newOps.length === 0) {\n OpList.remove(oldOp);\n return;\n }\n OpList.assertIsNotEnd(oldOp);\n OpList.assertIsOwned(oldOp);\n const listId = oldOp.debugListId;\n oldOp.debugListId = null;\n for (const newOp of newOps) {\n OpList.assertIsNotEnd(newOp);\n OpList.assertIsUnowned(newOp);\n }\n const {\n prev: oldPrev,\n next: oldNext\n } = oldOp;\n oldOp.prev = null;\n oldOp.next = null;\n let prev = oldPrev;\n for (const newOp of newOps) {\n OpList.assertIsUnowned(newOp);\n newOp.debugListId = listId;\n prev.next = newOp;\n newOp.prev = prev;\n newOp.next = null;\n prev = newOp;\n }\n const first = newOps[0];\n const last = prev;\n if (oldPrev !== null) {\n oldPrev.next = first;\n first.prev = oldPrev;\n }\n if (oldNext !== null) {\n oldNext.prev = last;\n last.next = oldNext;\n }\n }\n static remove(op) {\n OpList.assertIsNotEnd(op);\n OpList.assertIsOwned(op);\n op.prev.next = op.next;\n op.next.prev = op.prev;\n op.debugListId = null;\n op.prev = null;\n op.next = null;\n }\n static insertBefore(op, target) {\n if (Array.isArray(op)) {\n for (const o of op) {\n OpList.insertBefore(o, target);\n }\n return;\n }\n OpList.assertIsOwned(target);\n if (target.prev === null) {\n throw new Error(`AssertionError: illegal operation on list start`);\n }\n OpList.assertIsNotEnd(op);\n OpList.assertIsUnowned(op);\n op.debugListId = target.debugListId;\n op.prev = null;\n target.prev.next = op;\n op.prev = target.prev;\n op.next = target;\n target.prev = op;\n }\n static insertAfter(op, target) {\n OpList.assertIsOwned(target);\n if (target.next === null) {\n throw new Error(`AssertionError: illegal operation on list end`);\n }\n OpList.assertIsNotEnd(op);\n OpList.assertIsUnowned(op);\n op.debugListId = target.debugListId;\n target.next.prev = op;\n op.next = target.next;\n op.prev = target;\n target.next = op;\n }\n static assertIsUnowned(op) {\n if (op.debugListId !== null) {\n throw new Error(`AssertionError: illegal operation on owned node: ${OpKind[op.kind]}`);\n }\n }\n static assertIsOwned(op, byList) {\n if (op.debugListId === null) {\n throw new Error(`AssertionError: illegal operation on unowned node: ${OpKind[op.kind]}`);\n } else if (byList !== undefined && op.debugListId !== byList) {\n throw new Error(`AssertionError: node belongs to the wrong list (expected ${byList}, actual ${op.debugListId})`);\n }\n }\n static assertIsNotEnd(op) {\n if (op.kind === OpKind.ListEnd) {\n throw new Error(`AssertionError: illegal operation on list head or tail`);\n }\n }\n}\n\nfunction createStatementOp(statement) {\n return {\n kind: OpKind.Statement,\n statement,\n ...NEW_OP\n };\n}\nfunction createVariableOp(xref, variable, initializer, flags) {\n return {\n kind: OpKind.Variable,\n xref,\n variable,\n initializer,\n flags,\n ...NEW_OP\n };\n}\nconst NEW_OP = {\n debugListId: null,\n prev: null,\n next: null\n};\n\nconst ConsumesSlot = Symbol('ConsumesSlot');\nconst DependsOnSlotContext = Symbol('DependsOnSlotContext');\nconst ConsumesVarsTrait = Symbol('ConsumesVars');\nconst UsesVarOffset = Symbol('UsesVarOffset');\nconst TRAIT_CONSUMES_SLOT = {\n [ConsumesSlot]: true,\n numSlotsUsed: 1\n};\nconst TRAIT_DEPENDS_ON_SLOT_CONTEXT = {\n [DependsOnSlotContext]: true\n};\nconst TRAIT_CONSUMES_VARS = {\n [ConsumesVarsTrait]: true\n};\nfunction hasConsumesSlotTrait(op) {\n return op[ConsumesSlot] === true;\n}\nfunction hasDependsOnSlotContextTrait(value) {\n return value[DependsOnSlotContext] === true;\n}\nfunction hasConsumesVarsTrait(value) {\n return value[ConsumesVarsTrait] === true;\n}\nfunction hasUsesVarOffsetTrait(expr) {\n return expr[UsesVarOffset] === true;\n}\n\nfunction createInterpolateTextOp(xref, interpolation, sourceSpan) {\n return {\n kind: OpKind.InterpolateText,\n target: xref,\n interpolation,\n sourceSpan,\n ...TRAIT_DEPENDS_ON_SLOT_CONTEXT,\n ...TRAIT_CONSUMES_VARS,\n ...NEW_OP\n };\n}\nclass Interpolation {\n strings;\n expressions;\n i18nPlaceholders;\n constructor(strings, expressions, i18nPlaceholders) {\n this.strings = strings;\n this.expressions = expressions;\n this.i18nPlaceholders = i18nPlaceholders;\n if (i18nPlaceholders.length !== 0 && i18nPlaceholders.length !== expressions.length) {\n throw new Error(`Expected ${expressions.length} placeholders to match interpolation expression count, but got ${i18nPlaceholders.length}`);\n }\n }\n}\nfunction createBindingOp(target, kind, name, expression, unit, securityContext, isTextAttribute, isStructuralTemplateAttribute, templateKind, i18nMessage, sourceSpan) {\n return {\n kind: OpKind.Binding,\n bindingKind: kind,\n target,\n name,\n expression,\n unit,\n securityContext,\n isTextAttribute,\n isStructuralTemplateAttribute,\n templateKind,\n i18nContext: null,\n i18nMessage,\n sourceSpan,\n ...NEW_OP\n };\n}\nfunction createPropertyOp(target, name, expression, bindingKind, securityContext, isStructuralTemplateAttribute, templateKind, i18nContext, i18nMessage, sourceSpan) {\n return {\n kind: OpKind.Property,\n target,\n name,\n expression,\n bindingKind,\n securityContext,\n sanitizer: null,\n isStructuralTemplateAttribute,\n templateKind,\n i18nContext,\n i18nMessage,\n sourceSpan,\n ...TRAIT_DEPENDS_ON_SLOT_CONTEXT,\n ...TRAIT_CONSUMES_VARS,\n ...NEW_OP\n };\n}\nfunction createTwoWayPropertyOp(target, name, expression, securityContext, isStructuralTemplateAttribute, templateKind, i18nContext, i18nMessage, sourceSpan) {\n return {\n kind: OpKind.TwoWayProperty,\n target,\n name,\n expression,\n securityContext,\n sanitizer: null,\n isStructuralTemplateAttribute,\n templateKind,\n i18nContext,\n i18nMessage,\n sourceSpan,\n ...TRAIT_DEPENDS_ON_SLOT_CONTEXT,\n ...TRAIT_CONSUMES_VARS,\n ...NEW_OP\n };\n}\nfunction createStylePropOp(xref, name, expression, unit, sourceSpan) {\n return {\n kind: OpKind.StyleProp,\n target: xref,\n name,\n expression,\n unit,\n sourceSpan,\n ...TRAIT_DEPENDS_ON_SLOT_CONTEXT,\n ...TRAIT_CONSUMES_VARS,\n ...NEW_OP\n };\n}\nfunction createClassPropOp(xref, name, expression, sourceSpan) {\n return {\n kind: OpKind.ClassProp,\n target: xref,\n name,\n expression,\n sourceSpan,\n ...TRAIT_DEPENDS_ON_SLOT_CONTEXT,\n ...TRAIT_CONSUMES_VARS,\n ...NEW_OP\n };\n}\nfunction createStyleMapOp(xref, expression, sourceSpan) {\n return {\n kind: OpKind.StyleMap,\n target: xref,\n expression,\n sourceSpan,\n ...TRAIT_DEPENDS_ON_SLOT_CONTEXT,\n ...TRAIT_CONSUMES_VARS,\n ...NEW_OP\n };\n}\nfunction createClassMapOp(xref, expression, sourceSpan) {\n return {\n kind: OpKind.ClassMap,\n target: xref,\n expression,\n sourceSpan,\n ...TRAIT_DEPENDS_ON_SLOT_CONTEXT,\n ...TRAIT_CONSUMES_VARS,\n ...NEW_OP\n };\n}\nfunction createAttributeOp(target, namespace, name, expression, securityContext, isTextAttribute, isStructuralTemplateAttribute, templateKind, i18nMessage, sourceSpan) {\n return {\n kind: OpKind.Attribute,\n target,\n namespace,\n name,\n expression,\n securityContext,\n sanitizer: null,\n isTextAttribute,\n isStructuralTemplateAttribute,\n templateKind,\n i18nContext: null,\n i18nMessage,\n sourceSpan,\n ...TRAIT_DEPENDS_ON_SLOT_CONTEXT,\n ...TRAIT_CONSUMES_VARS,\n ...NEW_OP\n };\n}\nfunction createAdvanceOp(delta, sourceSpan) {\n return {\n kind: OpKind.Advance,\n delta,\n sourceSpan,\n ...NEW_OP\n };\n}\nfunction createConditionalOp(target, test, conditions, sourceSpan) {\n return {\n kind: OpKind.Conditional,\n target,\n test,\n conditions,\n processed: null,\n sourceSpan,\n contextValue: null,\n ...NEW_OP,\n ...TRAIT_DEPENDS_ON_SLOT_CONTEXT,\n ...TRAIT_CONSUMES_VARS\n };\n}\nfunction createRepeaterOp(repeaterCreate, targetSlot, collection, sourceSpan) {\n return {\n kind: OpKind.Repeater,\n target: repeaterCreate,\n targetSlot,\n collection,\n sourceSpan,\n ...NEW_OP,\n ...TRAIT_DEPENDS_ON_SLOT_CONTEXT\n };\n}\nfunction createAnimationBindingOp(name, target, animationKind, expression, securityContext, sourceSpan, animationBindingKind) {\n return {\n kind: OpKind.AnimationBinding,\n name,\n target,\n animationKind,\n expression,\n i18nMessage: null,\n securityContext,\n sanitizer: null,\n sourceSpan,\n animationBindingKind,\n ...NEW_OP\n };\n}\nfunction createDeferWhenOp(target, expr, modifier, sourceSpan) {\n return {\n kind: OpKind.DeferWhen,\n target,\n expr,\n modifier,\n sourceSpan,\n ...NEW_OP,\n ...TRAIT_DEPENDS_ON_SLOT_CONTEXT,\n ...TRAIT_CONSUMES_VARS\n };\n}\nfunction createI18nExpressionOp(context, target, i18nOwner, handle, expression, icuPlaceholder, i18nPlaceholder, resolutionTime, usage, name, sourceSpan) {\n return {\n kind: OpKind.I18nExpression,\n context,\n target,\n i18nOwner,\n handle,\n expression,\n icuPlaceholder,\n i18nPlaceholder,\n resolutionTime,\n usage,\n name,\n sourceSpan,\n ...NEW_OP,\n ...TRAIT_CONSUMES_VARS,\n ...TRAIT_DEPENDS_ON_SLOT_CONTEXT\n };\n}\nfunction createI18nApplyOp(owner, handle, sourceSpan) {\n return {\n kind: OpKind.I18nApply,\n owner,\n handle,\n sourceSpan,\n ...NEW_OP\n };\n}\nfunction createStoreLetOp(target, declaredName, value, sourceSpan) {\n return {\n kind: OpKind.StoreLet,\n target,\n declaredName,\n value,\n sourceSpan,\n ...TRAIT_DEPENDS_ON_SLOT_CONTEXT,\n ...TRAIT_CONSUMES_VARS,\n ...NEW_OP\n };\n}\nfunction createControlOp(target, sourceSpan) {\n return {\n kind: OpKind.Control,\n sourceSpan,\n target,\n ...TRAIT_DEPENDS_ON_SLOT_CONTEXT,\n ...NEW_OP\n };\n}\n\nfunction isIrExpression(expr) {\n return expr instanceof ExpressionBase;\n}\nclass ExpressionBase extends Expression {\n constructor(sourceSpan = null) {\n super(null, sourceSpan);\n }\n}\nclass LexicalReadExpr extends ExpressionBase {\n name;\n kind = ExpressionKind.LexicalRead;\n constructor(name) {\n super();\n this.name = name;\n }\n visitExpression(visitor, context) {}\n isEquivalent(other) {\n return this.name === other.name;\n }\n isConstant() {\n return false;\n }\n transformInternalExpressions() {}\n clone() {\n return new LexicalReadExpr(this.name);\n }\n}\nclass ReferenceExpr extends ExpressionBase {\n target;\n targetSlot;\n offset;\n kind = ExpressionKind.Reference;\n constructor(target, targetSlot, offset) {\n super();\n this.target = target;\n this.targetSlot = targetSlot;\n this.offset = offset;\n }\n visitExpression() {}\n isEquivalent(e) {\n return e instanceof ReferenceExpr && e.target === this.target;\n }\n isConstant() {\n return false;\n }\n transformInternalExpressions() {}\n clone() {\n return new ReferenceExpr(this.target, this.targetSlot, this.offset);\n }\n}\nclass StoreLetExpr extends ExpressionBase {\n target;\n value;\n sourceSpan;\n kind = ExpressionKind.StoreLet;\n [ConsumesVarsTrait] = true;\n [DependsOnSlotContext] = true;\n constructor(target, value, sourceSpan) {\n super();\n this.target = target;\n this.value = value;\n this.sourceSpan = sourceSpan;\n }\n visitExpression() {}\n isEquivalent(e) {\n return e instanceof StoreLetExpr && e.target === this.target && e.value.isEquivalent(this.value);\n }\n isConstant() {\n return false;\n }\n transformInternalExpressions(transform, flags) {\n this.value = transformExpressionsInExpression(this.value, transform, flags);\n }\n clone() {\n return new StoreLetExpr(this.target, this.value, this.sourceSpan);\n }\n}\nclass ContextLetReferenceExpr extends ExpressionBase {\n target;\n targetSlot;\n kind = ExpressionKind.ContextLetReference;\n constructor(target, targetSlot) {\n super();\n this.target = target;\n this.targetSlot = targetSlot;\n }\n visitExpression() {}\n isEquivalent(e) {\n return e instanceof ContextLetReferenceExpr && e.target === this.target;\n }\n isConstant() {\n return false;\n }\n transformInternalExpressions() {}\n clone() {\n return new ContextLetReferenceExpr(this.target, this.targetSlot);\n }\n}\nclass ContextExpr extends ExpressionBase {\n view;\n kind = ExpressionKind.Context;\n constructor(view) {\n super();\n this.view = view;\n }\n visitExpression() {}\n isEquivalent(e) {\n return e instanceof ContextExpr && e.view === this.view;\n }\n isConstant() {\n return false;\n }\n transformInternalExpressions() {}\n clone() {\n return new ContextExpr(this.view);\n }\n}\nclass TrackContextExpr extends ExpressionBase {\n view;\n kind = ExpressionKind.TrackContext;\n constructor(view) {\n super();\n this.view = view;\n }\n visitExpression() {}\n isEquivalent(e) {\n return e instanceof TrackContextExpr && e.view === this.view;\n }\n isConstant() {\n return false;\n }\n transformInternalExpressions() {}\n clone() {\n return new TrackContextExpr(this.view);\n }\n}\nclass NextContextExpr extends ExpressionBase {\n kind = ExpressionKind.NextContext;\n steps = 1;\n visitExpression() {}\n isEquivalent(e) {\n return e instanceof NextContextExpr && e.steps === this.steps;\n }\n isConstant() {\n return false;\n }\n transformInternalExpressions() {}\n clone() {\n const expr = new NextContextExpr();\n expr.steps = this.steps;\n return expr;\n }\n}\nclass GetCurrentViewExpr extends ExpressionBase {\n kind = ExpressionKind.GetCurrentView;\n constructor() {\n super();\n }\n visitExpression() {}\n isEquivalent(e) {\n return e instanceof GetCurrentViewExpr;\n }\n isConstant() {\n return false;\n }\n transformInternalExpressions() {}\n clone() {\n return new GetCurrentViewExpr();\n }\n}\nclass RestoreViewExpr extends ExpressionBase {\n view;\n kind = ExpressionKind.RestoreView;\n constructor(view) {\n super();\n this.view = view;\n }\n visitExpression(visitor, context) {\n if (typeof this.view !== 'number') {\n this.view.visitExpression(visitor, context);\n }\n }\n isEquivalent(e) {\n if (!(e instanceof RestoreViewExpr) || typeof e.view !== typeof this.view) {\n return false;\n }\n if (typeof this.view === 'number') {\n return this.view === e.view;\n } else {\n return this.view.isEquivalent(e.view);\n }\n }\n isConstant() {\n return false;\n }\n transformInternalExpressions(transform, flags) {\n if (typeof this.view !== 'number') {\n this.view = transformExpressionsInExpression(this.view, transform, flags);\n }\n }\n clone() {\n return new RestoreViewExpr(this.view instanceof Expression ? this.view.clone() : this.view);\n }\n}\nclass ResetViewExpr extends ExpressionBase {\n expr;\n kind = ExpressionKind.ResetView;\n constructor(expr) {\n super();\n this.expr = expr;\n }\n visitExpression(visitor, context) {\n this.expr.visitExpression(visitor, context);\n }\n isEquivalent(e) {\n return e instanceof ResetViewExpr && this.expr.isEquivalent(e.expr);\n }\n isConstant() {\n return false;\n }\n transformInternalExpressions(transform, flags) {\n this.expr = transformExpressionsInExpression(this.expr, transform, flags);\n }\n clone() {\n return new ResetViewExpr(this.expr.clone());\n }\n}\nclass TwoWayBindingSetExpr extends ExpressionBase {\n target;\n value;\n kind = ExpressionKind.TwoWayBindingSet;\n constructor(target, value) {\n super();\n this.target = target;\n this.value = value;\n }\n visitExpression(visitor, context) {\n this.target.visitExpression(visitor, context);\n this.value.visitExpression(visitor, context);\n }\n isEquivalent(other) {\n return this.target.isEquivalent(other.target) && this.value.isEquivalent(other.value);\n }\n isConstant() {\n return false;\n }\n transformInternalExpressions(transform, flags) {\n this.target = transformExpressionsInExpression(this.target, transform, flags);\n this.value = transformExpressionsInExpression(this.value, transform, flags);\n }\n clone() {\n return new TwoWayBindingSetExpr(this.target, this.value);\n }\n}\nclass ReadVariableExpr extends ExpressionBase {\n xref;\n kind = ExpressionKind.ReadVariable;\n name = null;\n constructor(xref) {\n super();\n this.xref = xref;\n }\n visitExpression() {}\n isEquivalent(other) {\n return other instanceof ReadVariableExpr && other.xref === this.xref;\n }\n isConstant() {\n return false;\n }\n transformInternalExpressions() {}\n clone() {\n const expr = new ReadVariableExpr(this.xref);\n expr.name = this.name;\n return expr;\n }\n}\nclass PureFunctionExpr extends ExpressionBase {\n kind = ExpressionKind.PureFunctionExpr;\n [ConsumesVarsTrait] = true;\n [UsesVarOffset] = true;\n varOffset = null;\n body;\n args;\n fn = null;\n constructor(expression, args) {\n super();\n this.body = expression;\n this.args = args;\n }\n visitExpression(visitor, context) {\n this.body?.visitExpression(visitor, context);\n for (const arg of this.args) {\n arg.visitExpression(visitor, context);\n }\n }\n isEquivalent(other) {\n if (!(other instanceof PureFunctionExpr) || other.args.length !== this.args.length) {\n return false;\n }\n return other.body !== null && this.body !== null && other.body.isEquivalent(this.body) && other.args.every((arg, idx) => arg.isEquivalent(this.args[idx]));\n }\n isConstant() {\n return false;\n }\n transformInternalExpressions(transform, flags) {\n if (this.body !== null) {\n this.body = transformExpressionsInExpression(this.body, transform, flags | VisitorContextFlag.InChildOperation);\n } else if (this.fn !== null) {\n this.fn = transformExpressionsInExpression(this.fn, transform, flags);\n }\n for (let i = 0; i < this.args.length; i++) {\n this.args[i] = transformExpressionsInExpression(this.args[i], transform, flags);\n }\n }\n clone() {\n const expr = new PureFunctionExpr(this.body?.clone() ?? null, this.args.map(arg => arg.clone()));\n expr.fn = this.fn?.clone() ?? null;\n expr.varOffset = this.varOffset;\n return expr;\n }\n}\nclass PureFunctionParameterExpr extends ExpressionBase {\n index;\n kind = ExpressionKind.PureFunctionParameterExpr;\n constructor(index) {\n super();\n this.index = index;\n }\n visitExpression() {}\n isEquivalent(other) {\n return other instanceof PureFunctionParameterExpr && other.index === this.index;\n }\n isConstant() {\n return true;\n }\n transformInternalExpressions() {}\n clone() {\n return new PureFunctionParameterExpr(this.index);\n }\n}\nclass PipeBindingExpr extends ExpressionBase {\n target;\n targetSlot;\n name;\n args;\n kind = ExpressionKind.PipeBinding;\n [ConsumesVarsTrait] = true;\n [UsesVarOffset] = true;\n varOffset = null;\n constructor(target, targetSlot, name, args) {\n super();\n this.target = target;\n this.targetSlot = targetSlot;\n this.name = name;\n this.args = args;\n }\n visitExpression(visitor, context) {\n for (const arg of this.args) {\n arg.visitExpression(visitor, context);\n }\n }\n isEquivalent() {\n return false;\n }\n isConstant() {\n return false;\n }\n transformInternalExpressions(transform, flags) {\n for (let idx = 0; idx < this.args.length; idx++) {\n this.args[idx] = transformExpressionsInExpression(this.args[idx], transform, flags);\n }\n }\n clone() {\n const r = new PipeBindingExpr(this.target, this.targetSlot, this.name, this.args.map(a => a.clone()));\n r.varOffset = this.varOffset;\n return r;\n }\n}\nclass PipeBindingVariadicExpr extends ExpressionBase {\n target;\n targetSlot;\n name;\n args;\n numArgs;\n kind = ExpressionKind.PipeBindingVariadic;\n [ConsumesVarsTrait] = true;\n [UsesVarOffset] = true;\n varOffset = null;\n constructor(target, targetSlot, name, args, numArgs) {\n super();\n this.target = target;\n this.targetSlot = targetSlot;\n this.name = name;\n this.args = args;\n this.numArgs = numArgs;\n }\n visitExpression(visitor, context) {\n this.args.visitExpression(visitor, context);\n }\n isEquivalent() {\n return false;\n }\n isConstant() {\n return false;\n }\n transformInternalExpressions(transform, flags) {\n this.args = transformExpressionsInExpression(this.args, transform, flags);\n }\n clone() {\n const r = new PipeBindingVariadicExpr(this.target, this.targetSlot, this.name, this.args.clone(), this.numArgs);\n r.varOffset = this.varOffset;\n return r;\n }\n}\nclass SafePropertyReadExpr extends ExpressionBase {\n receiver;\n name;\n kind = ExpressionKind.SafePropertyRead;\n constructor(receiver, name) {\n super();\n this.receiver = receiver;\n this.name = name;\n }\n get index() {\n return this.name;\n }\n visitExpression(visitor, context) {\n this.receiver.visitExpression(visitor, context);\n }\n isEquivalent() {\n return false;\n }\n isConstant() {\n return false;\n }\n transformInternalExpressions(transform, flags) {\n this.receiver = transformExpressionsInExpression(this.receiver, transform, flags);\n }\n clone() {\n return new SafePropertyReadExpr(this.receiver.clone(), this.name);\n }\n}\nclass SafeKeyedReadExpr extends ExpressionBase {\n receiver;\n index;\n kind = ExpressionKind.SafeKeyedRead;\n constructor(receiver, index, sourceSpan) {\n super(sourceSpan);\n this.receiver = receiver;\n this.index = index;\n }\n visitExpression(visitor, context) {\n this.receiver.visitExpression(visitor, context);\n this.index.visitExpression(visitor, context);\n }\n isEquivalent() {\n return false;\n }\n isConstant() {\n return false;\n }\n transformInternalExpressions(transform, flags) {\n this.receiver = transformExpressionsInExpression(this.receiver, transform, flags);\n this.index = transformExpressionsInExpression(this.index, transform, flags);\n }\n clone() {\n return new SafeKeyedReadExpr(this.receiver.clone(), this.index.clone(), this.sourceSpan);\n }\n}\nclass SafeInvokeFunctionExpr extends ExpressionBase {\n receiver;\n args;\n kind = ExpressionKind.SafeInvokeFunction;\n constructor(receiver, args) {\n super();\n this.receiver = receiver;\n this.args = args;\n }\n visitExpression(visitor, context) {\n this.receiver.visitExpression(visitor, context);\n for (const a of this.args) {\n a.visitExpression(visitor, context);\n }\n }\n isEquivalent() {\n return false;\n }\n isConstant() {\n return false;\n }\n transformInternalExpressions(transform, flags) {\n this.receiver = transformExpressionsInExpression(this.receiver, transform, flags);\n for (let i = 0; i < this.args.length; i++) {\n this.args[i] = transformExpressionsInExpression(this.args[i], transform, flags);\n }\n }\n clone() {\n return new SafeInvokeFunctionExpr(this.receiver.clone(), this.args.map(a => a.clone()));\n }\n}\nclass SafeTernaryExpr extends ExpressionBase {\n guard;\n expr;\n kind = ExpressionKind.SafeTernaryExpr;\n constructor(guard, expr) {\n super();\n this.guard = guard;\n this.expr = expr;\n }\n visitExpression(visitor, context) {\n this.guard.visitExpression(visitor, context);\n this.expr.visitExpression(visitor, context);\n }\n isEquivalent() {\n return false;\n }\n isConstant() {\n return false;\n }\n transformInternalExpressions(transform, flags) {\n this.guard = transformExpressionsInExpression(this.guard, transform, flags);\n this.expr = transformExpressionsInExpression(this.expr, transform, flags);\n }\n clone() {\n return new SafeTernaryExpr(this.guard.clone(), this.expr.clone());\n }\n}\nclass EmptyExpr extends ExpressionBase {\n kind = ExpressionKind.EmptyExpr;\n visitExpression(visitor, context) {}\n isEquivalent(e) {\n return e instanceof EmptyExpr;\n }\n isConstant() {\n return true;\n }\n clone() {\n return new EmptyExpr();\n }\n transformInternalExpressions() {}\n}\nclass AssignTemporaryExpr extends ExpressionBase {\n expr;\n xref;\n kind = ExpressionKind.AssignTemporaryExpr;\n name = null;\n constructor(expr, xref) {\n super();\n this.expr = expr;\n this.xref = xref;\n }\n visitExpression(visitor, context) {\n this.expr.visitExpression(visitor, context);\n }\n isEquivalent() {\n return false;\n }\n isConstant() {\n return false;\n }\n transformInternalExpressions(transform, flags) {\n this.expr = transformExpressionsInExpression(this.expr, transform, flags);\n }\n clone() {\n const a = new AssignTemporaryExpr(this.expr.clone(), this.xref);\n a.name = this.name;\n return a;\n }\n}\nclass ReadTemporaryExpr extends ExpressionBase {\n xref;\n kind = ExpressionKind.ReadTemporaryExpr;\n name = null;\n constructor(xref) {\n super();\n this.xref = xref;\n }\n visitExpression(visitor, context) {}\n isEquivalent() {\n return this.xref === this.xref;\n }\n isConstant() {\n return false;\n }\n transformInternalExpressions(transform, flags) {}\n clone() {\n const r = new ReadTemporaryExpr(this.xref);\n r.name = this.name;\n return r;\n }\n}\nclass SlotLiteralExpr extends ExpressionBase {\n slot;\n kind = ExpressionKind.SlotLiteralExpr;\n constructor(slot) {\n super();\n this.slot = slot;\n }\n visitExpression(visitor, context) {}\n isEquivalent(e) {\n return e instanceof SlotLiteralExpr && e.slot === this.slot;\n }\n isConstant() {\n return true;\n }\n clone() {\n return new SlotLiteralExpr(this.slot);\n }\n transformInternalExpressions() {}\n}\nclass ConditionalCaseExpr extends ExpressionBase {\n expr;\n target;\n targetSlot;\n alias;\n kind = ExpressionKind.ConditionalCase;\n constructor(expr, target, targetSlot, alias = null) {\n super();\n this.expr = expr;\n this.target = target;\n this.targetSlot = targetSlot;\n this.alias = alias;\n }\n visitExpression(visitor, context) {\n if (this.expr !== null) {\n this.expr.visitExpression(visitor, context);\n }\n }\n isEquivalent(e) {\n return e instanceof ConditionalCaseExpr && e.expr === this.expr;\n }\n isConstant() {\n return true;\n }\n clone() {\n return new ConditionalCaseExpr(this.expr, this.target, this.targetSlot);\n }\n transformInternalExpressions(transform, flags) {\n if (this.expr !== null) {\n this.expr = transformExpressionsInExpression(this.expr, transform, flags);\n }\n }\n}\nclass ConstCollectedExpr extends ExpressionBase {\n expr;\n kind = ExpressionKind.ConstCollected;\n constructor(expr) {\n super();\n this.expr = expr;\n }\n transformInternalExpressions(transform, flags) {\n this.expr = transform(this.expr, flags);\n }\n visitExpression(visitor, context) {\n this.expr.visitExpression(visitor, context);\n }\n isEquivalent(e) {\n if (!(e instanceof ConstCollectedExpr)) {\n return false;\n }\n return this.expr.isEquivalent(e.expr);\n }\n isConstant() {\n return this.expr.isConstant();\n }\n clone() {\n return new ConstCollectedExpr(this.expr);\n }\n}\nclass ArrowFunctionExpr extends ExpressionBase {\n parameters;\n body;\n kind = ExpressionKind.ArrowFunction;\n [ConsumesVarsTrait] = true;\n [UsesVarOffset] = true;\n contextName = CONTEXT_NAME;\n currentViewName = 'view';\n varOffset = null;\n ops;\n constructor(parameters, body) {\n super();\n this.parameters = parameters;\n this.body = body;\n this.ops = new OpList();\n this.ops.push([createStatementOp(new ReturnStatement(body, body.sourceSpan))]);\n }\n visitExpression(visitor, context) {\n for (const op of this.ops) {\n visitExpressionsInOp(op, expr => {\n expr.visitExpression(visitor, context);\n });\n }\n }\n isEquivalent(e) {\n return e instanceof ArrowFunctionExpr && e.parameters.length === this.parameters.length && e.parameters.every((param, index) => param.isEquivalent(this.parameters[index])) && e.body.isEquivalent(this.body);\n }\n isConstant() {\n return false;\n }\n transformInternalExpressions(transform, flags) {\n for (const op of this.ops) {\n transformExpressionsInOp(op, transform, flags | (VisitorContextFlag.InChildOperation | VisitorContextFlag.InArrowFunctionOperation));\n }\n }\n clone() {\n const expr = new ArrowFunctionExpr(this.parameters, this.body);\n expr.varOffset = this.varOffset;\n expr.ops = this.ops;\n return expr;\n }\n}\nfunction visitExpressionsInOp(op, visitor) {\n transformExpressionsInOp(op, (expr, flags) => {\n visitor(expr, flags);\n return expr;\n }, VisitorContextFlag.None);\n}\nvar VisitorContextFlag;\n(function (VisitorContextFlag) {\n VisitorContextFlag[VisitorContextFlag[\"None\"] = 0] = \"None\";\n VisitorContextFlag[VisitorContextFlag[\"InChildOperation\"] = 1] = \"InChildOperation\";\n VisitorContextFlag[VisitorContextFlag[\"InArrowFunctionOperation\"] = 2] = \"InArrowFunctionOperation\";\n})(VisitorContextFlag || (VisitorContextFlag = {}));\nfunction transformExpressionsInInterpolation(interpolation, transform, flags) {\n for (let i = 0; i < interpolation.expressions.length; i++) {\n interpolation.expressions[i] = transformExpressionsInExpression(interpolation.expressions[i], transform, flags);\n }\n}\nfunction transformExpressionsInOp(op, transform, flags) {\n switch (op.kind) {\n case OpKind.StyleProp:\n case OpKind.StyleMap:\n case OpKind.ClassProp:\n case OpKind.ClassMap:\n case OpKind.AnimationString:\n case OpKind.AnimationBinding:\n case OpKind.Binding:\n if (op.expression instanceof Interpolation) {\n transformExpressionsInInterpolation(op.expression, transform, flags);\n } else {\n op.expression = transformExpressionsInExpression(op.expression, transform, flags);\n }\n break;\n case OpKind.Property:\n case OpKind.DomProperty:\n case OpKind.Attribute:\n if (op.expression instanceof Interpolation) {\n transformExpressionsInInterpolation(op.expression, transform, flags);\n } else {\n op.expression = transformExpressionsInExpression(op.expression, transform, flags);\n }\n op.sanitizer = op.sanitizer && transformExpressionsInExpression(op.sanitizer, transform, flags);\n break;\n case OpKind.TwoWayProperty:\n op.expression = transformExpressionsInExpression(op.expression, transform, flags);\n op.sanitizer = op.sanitizer && transformExpressionsInExpression(op.sanitizer, transform, flags);\n break;\n case OpKind.I18nExpression:\n op.expression = transformExpressionsInExpression(op.expression, transform, flags);\n break;\n case OpKind.InterpolateText:\n transformExpressionsInInterpolation(op.interpolation, transform, flags);\n break;\n case OpKind.Statement:\n transformExpressionsInStatement(op.statement, transform, flags);\n break;\n case OpKind.Variable:\n op.initializer = transformExpressionsInExpression(op.initializer, transform, flags);\n break;\n case OpKind.Conditional:\n for (const condition of op.conditions) {\n if (condition.expr === null) {\n continue;\n }\n condition.expr = transformExpressionsInExpression(condition.expr, transform, flags);\n }\n if (op.processed !== null) {\n op.processed = transformExpressionsInExpression(op.processed, transform, flags);\n }\n if (op.contextValue !== null) {\n op.contextValue = transformExpressionsInExpression(op.contextValue, transform, flags);\n }\n break;\n case OpKind.Animation:\n case OpKind.AnimationListener:\n case OpKind.Listener:\n case OpKind.TwoWayListener:\n for (const innerOp of op.handlerOps) {\n transformExpressionsInOp(innerOp, transform, flags | VisitorContextFlag.InChildOperation);\n }\n break;\n case OpKind.ExtractedAttribute:\n op.expression = op.expression && transformExpressionsInExpression(op.expression, transform, flags);\n op.trustedValueFn = op.trustedValueFn && transformExpressionsInExpression(op.trustedValueFn, transform, flags);\n break;\n case OpKind.RepeaterCreate:\n if (op.trackByOps === null) {\n op.track = transformExpressionsInExpression(op.track, transform, flags);\n } else {\n for (const innerOp of op.trackByOps) {\n transformExpressionsInOp(innerOp, transform, flags | VisitorContextFlag.InChildOperation);\n }\n }\n if (op.trackByFn !== null) {\n op.trackByFn = transformExpressionsInExpression(op.trackByFn, transform, flags);\n }\n break;\n case OpKind.Repeater:\n op.collection = transformExpressionsInExpression(op.collection, transform, flags);\n break;\n case OpKind.Defer:\n if (op.loadingConfig !== null) {\n op.loadingConfig = transformExpressionsInExpression(op.loadingConfig, transform, flags);\n }\n if (op.placeholderConfig !== null) {\n op.placeholderConfig = transformExpressionsInExpression(op.placeholderConfig, transform, flags);\n }\n if (op.resolverFn !== null) {\n op.resolverFn = transformExpressionsInExpression(op.resolverFn, transform, flags);\n }\n break;\n case OpKind.I18nMessage:\n for (const [placeholder, expr] of op.params) {\n op.params.set(placeholder, transformExpressionsInExpression(expr, transform, flags));\n }\n for (const [placeholder, expr] of op.postprocessingParams) {\n op.postprocessingParams.set(placeholder, transformExpressionsInExpression(expr, transform, flags));\n }\n break;\n case OpKind.DeferWhen:\n op.expr = transformExpressionsInExpression(op.expr, transform, flags);\n break;\n case OpKind.StoreLet:\n op.value = transformExpressionsInExpression(op.value, transform, flags);\n break;\n case OpKind.Advance:\n case OpKind.Container:\n case OpKind.ContainerEnd:\n case OpKind.ContainerStart:\n case OpKind.DeferOn:\n case OpKind.DisableBindings:\n case OpKind.Element:\n case OpKind.ElementEnd:\n case OpKind.ElementStart:\n case OpKind.EnableBindings:\n case OpKind.I18n:\n case OpKind.I18nApply:\n case OpKind.I18nContext:\n case OpKind.I18nEnd:\n case OpKind.I18nStart:\n case OpKind.IcuEnd:\n case OpKind.IcuStart:\n case OpKind.Namespace:\n case OpKind.Pipe:\n case OpKind.Projection:\n case OpKind.ProjectionDef:\n case OpKind.Template:\n case OpKind.Text:\n case OpKind.I18nAttributes:\n case OpKind.IcuPlaceholder:\n case OpKind.DeclareLet:\n case OpKind.SourceLocation:\n case OpKind.ConditionalCreate:\n case OpKind.ConditionalBranchCreate:\n case OpKind.Control:\n case OpKind.ControlCreate:\n break;\n default:\n throw new Error(`AssertionError: transformExpressionsInOp doesn't handle ${OpKind[op.kind]}`);\n }\n}\nfunction transformExpressionsInExpression(expr, transform, flags) {\n if (expr instanceof ExpressionBase) {\n expr.transformInternalExpressions(transform, flags);\n } else if (expr instanceof BinaryOperatorExpr) {\n expr.lhs = transformExpressionsInExpression(expr.lhs, transform, flags);\n expr.rhs = transformExpressionsInExpression(expr.rhs, transform, flags);\n } else if (expr instanceof UnaryOperatorExpr) {\n expr.expr = transformExpressionsInExpression(expr.expr, transform, flags);\n } else if (expr instanceof ReadPropExpr) {\n expr.receiver = transformExpressionsInExpression(expr.receiver, transform, flags);\n } else if (expr instanceof ReadKeyExpr) {\n expr.receiver = transformExpressionsInExpression(expr.receiver, transform, flags);\n expr.index = transformExpressionsInExpression(expr.index, transform, flags);\n } else if (expr instanceof InvokeFunctionExpr) {\n expr.fn = transformExpressionsInExpression(expr.fn, transform, flags);\n for (let i = 0; i < expr.args.length; i++) {\n expr.args[i] = transformExpressionsInExpression(expr.args[i], transform, flags);\n }\n } else if (expr instanceof LiteralArrayExpr) {\n for (let i = 0; i < expr.entries.length; i++) {\n expr.entries[i] = transformExpressionsInExpression(expr.entries[i], transform, flags);\n }\n } else if (expr instanceof LiteralMapExpr) {\n for (const entry of expr.entries) {\n if (entry instanceof LiteralMapSpreadAssignment) {\n entry.expression = transformExpressionsInExpression(entry.expression, transform, flags);\n } else {\n entry.value = transformExpressionsInExpression(entry.value, transform, flags);\n }\n }\n } else if (expr instanceof ConditionalExpr) {\n expr.condition = transformExpressionsInExpression(expr.condition, transform, flags);\n expr.trueCase = transformExpressionsInExpression(expr.trueCase, transform, flags);\n if (expr.falseCase !== null) {\n expr.falseCase = transformExpressionsInExpression(expr.falseCase, transform, flags);\n }\n } else if (expr instanceof TypeofExpr) {\n expr.expr = transformExpressionsInExpression(expr.expr, transform, flags);\n } else if (expr instanceof VoidExpr) {\n expr.expr = transformExpressionsInExpression(expr.expr, transform, flags);\n } else if (expr instanceof LocalizedString) {\n for (let i = 0; i < expr.expressions.length; i++) {\n expr.expressions[i] = transformExpressionsInExpression(expr.expressions[i], transform, flags);\n }\n } else if (expr instanceof NotExpr) {\n expr.condition = transformExpressionsInExpression(expr.condition, transform, flags);\n } else if (expr instanceof TaggedTemplateLiteralExpr) {\n expr.tag = transformExpressionsInExpression(expr.tag, transform, flags);\n expr.template.expressions = expr.template.expressions.map(e => transformExpressionsInExpression(e, transform, flags));\n } else if (expr instanceof ArrowFunctionExpr$1) {\n if (Array.isArray(expr.body)) {\n for (let i = 0; i < expr.body.length; i++) {\n transformExpressionsInStatement(expr.body[i], transform, flags | VisitorContextFlag.InChildOperation);\n }\n } else {\n expr.body = transformExpressionsInExpression(expr.body, transform, flags | VisitorContextFlag.InChildOperation);\n }\n } else if (expr instanceof WrappedNodeExpr) ; else if (expr instanceof TemplateLiteralExpr) {\n for (let i = 0; i < expr.expressions.length; i++) {\n expr.expressions[i] = transformExpressionsInExpression(expr.expressions[i], transform, flags);\n }\n } else if (expr instanceof ParenthesizedExpr) {\n expr.expr = transformExpressionsInExpression(expr.expr, transform, flags);\n } else if (expr instanceof SpreadElementExpr) {\n expr.expression = transformExpressionsInExpression(expr.expression, transform, flags);\n } else if (expr instanceof ReadVarExpr || expr instanceof ExternalExpr || expr instanceof LiteralExpr || expr instanceof RegularExpressionLiteralExpr) ; else {\n throw new Error(`Unhandled expression kind: ${expr.constructor.name}`);\n }\n return transform(expr, flags);\n}\nfunction transformExpressionsInStatement(stmt, transform, flags) {\n if (stmt instanceof ExpressionStatement) {\n stmt.expr = transformExpressionsInExpression(stmt.expr, transform, flags);\n } else if (stmt instanceof ReturnStatement) {\n stmt.value = transformExpressionsInExpression(stmt.value, transform, flags);\n } else if (stmt instanceof DeclareVarStmt) {\n if (stmt.value !== undefined) {\n stmt.value = transformExpressionsInExpression(stmt.value, transform, flags);\n }\n } else if (stmt instanceof IfStmt) {\n stmt.condition = transformExpressionsInExpression(stmt.condition, transform, flags);\n for (const caseStatement of stmt.trueCase) {\n transformExpressionsInStatement(caseStatement, transform, flags);\n }\n for (const caseStatement of stmt.falseCase) {\n transformExpressionsInStatement(caseStatement, transform, flags);\n }\n } else {\n throw new Error(`Unhandled statement kind: ${stmt.constructor.name}`);\n }\n}\nfunction isStringLiteral(expr) {\n return expr instanceof LiteralExpr && typeof expr.value === 'string';\n}\n\nclass SlotHandle {\n slot = null;\n}\n\nconst elementContainerOpKinds = new Set([OpKind.Element, OpKind.ElementStart, OpKind.Container, OpKind.ContainerStart, OpKind.Template, OpKind.RepeaterCreate, OpKind.ConditionalCreate, OpKind.ConditionalBranchCreate]);\nfunction isElementOrContainerOp(op) {\n return elementContainerOpKinds.has(op.kind);\n}\nfunction createElementStartOp(tag, xref, namespace, i18nPlaceholder, startSourceSpan, wholeSourceSpan) {\n return {\n kind: OpKind.ElementStart,\n xref,\n tag,\n handle: new SlotHandle(),\n attributes: null,\n localRefs: [],\n nonBindable: false,\n namespace,\n i18nPlaceholder,\n startSourceSpan,\n wholeSourceSpan,\n ...TRAIT_CONSUMES_SLOT,\n ...NEW_OP\n };\n}\nfunction createTemplateOp(xref, templateKind, tag, functionNameSuffix, namespace, i18nPlaceholder, startSourceSpan, wholeSourceSpan) {\n return {\n kind: OpKind.Template,\n xref,\n templateKind,\n attributes: null,\n tag,\n handle: new SlotHandle(),\n functionNameSuffix,\n decls: null,\n vars: null,\n localRefs: [],\n nonBindable: false,\n namespace,\n i18nPlaceholder,\n startSourceSpan,\n wholeSourceSpan,\n ...TRAIT_CONSUMES_SLOT,\n ...NEW_OP\n };\n}\nfunction createConditionalCreateOp(xref, templateKind, tag, functionNameSuffix, namespace, i18nPlaceholder, startSourceSpan, wholeSourceSpan) {\n return {\n kind: OpKind.ConditionalCreate,\n xref,\n templateKind,\n attributes: null,\n tag,\n handle: new SlotHandle(),\n functionNameSuffix,\n decls: null,\n vars: null,\n localRefs: [],\n nonBindable: false,\n namespace,\n i18nPlaceholder,\n startSourceSpan,\n wholeSourceSpan,\n ...TRAIT_CONSUMES_SLOT,\n ...NEW_OP\n };\n}\nfunction createConditionalBranchCreateOp(xref, templateKind, tag, functionNameSuffix, namespace, i18nPlaceholder, startSourceSpan, wholeSourceSpan) {\n return {\n kind: OpKind.ConditionalBranchCreate,\n xref,\n templateKind,\n attributes: null,\n tag,\n handle: new SlotHandle(),\n functionNameSuffix,\n decls: null,\n vars: null,\n localRefs: [],\n nonBindable: false,\n namespace,\n i18nPlaceholder,\n startSourceSpan,\n wholeSourceSpan,\n ...TRAIT_CONSUMES_SLOT,\n ...NEW_OP\n };\n}\nfunction createRepeaterCreateOp(primaryView, emptyView, tag, track, varNames, emptyTag, i18nPlaceholder, emptyI18nPlaceholder, startSourceSpan, wholeSourceSpan) {\n return {\n kind: OpKind.RepeaterCreate,\n attributes: null,\n xref: primaryView,\n handle: new SlotHandle(),\n emptyView,\n track,\n trackByFn: null,\n trackByOps: null,\n tag,\n emptyTag,\n emptyAttributes: null,\n functionNameSuffix: 'For',\n namespace: Namespace.HTML,\n nonBindable: false,\n localRefs: [],\n decls: null,\n vars: null,\n varNames,\n usesComponentInstance: false,\n i18nPlaceholder,\n emptyI18nPlaceholder,\n startSourceSpan,\n wholeSourceSpan,\n ...TRAIT_CONSUMES_SLOT,\n ...NEW_OP,\n ...TRAIT_CONSUMES_VARS,\n numSlotsUsed: emptyView === null ? 2 : 3\n };\n}\nfunction createElementEndOp(xref, sourceSpan) {\n return {\n kind: OpKind.ElementEnd,\n xref,\n sourceSpan,\n ...NEW_OP\n };\n}\nfunction createDisableBindingsOp(xref) {\n return {\n kind: OpKind.DisableBindings,\n xref,\n ...NEW_OP\n };\n}\nfunction createEnableBindingsOp(xref) {\n return {\n kind: OpKind.EnableBindings,\n xref,\n ...NEW_OP\n };\n}\nfunction createTextOp(xref, initialValue, icuPlaceholder, sourceSpan) {\n return {\n kind: OpKind.Text,\n xref,\n handle: new SlotHandle(),\n initialValue,\n icuPlaceholder,\n sourceSpan,\n ...TRAIT_CONSUMES_SLOT,\n ...NEW_OP\n };\n}\nfunction createAnimationStringOp(name, target, animationKind, expression, securityContext, sourceSpan) {\n return {\n kind: OpKind.AnimationString,\n name,\n target,\n animationKind,\n expression,\n i18nMessage: null,\n securityContext,\n sanitizer: null,\n sourceSpan,\n ...NEW_OP\n };\n}\nfunction createAnimationOp(name, target, animationKind, callbackOps, securityContext, sourceSpan) {\n const handlerOps = new OpList();\n handlerOps.push(callbackOps);\n return {\n kind: OpKind.Animation,\n name,\n target,\n animationKind,\n handlerOps,\n handlerFnName: null,\n i18nMessage: null,\n securityContext,\n sanitizer: null,\n sourceSpan,\n ...NEW_OP\n };\n}\nfunction createListenerOp(target, targetSlot, name, tag, handlerOps, legacyAnimationPhase, eventTarget, hostListener, sourceSpan) {\n const handlerList = new OpList();\n handlerList.push(handlerOps);\n return {\n kind: OpKind.Listener,\n target,\n targetSlot,\n tag,\n hostListener,\n name,\n handlerOps: handlerList,\n handlerFnName: null,\n consumesDollarEvent: false,\n isLegacyAnimationListener: legacyAnimationPhase !== null,\n legacyAnimationPhase: legacyAnimationPhase,\n eventTarget,\n sourceSpan,\n ...NEW_OP\n };\n}\nfunction createAnimationListenerOp(target, targetSlot, name, tag, handlerOps, animationKind, eventTarget, hostListener, sourceSpan) {\n const handlerList = new OpList();\n handlerList.push(handlerOps);\n return {\n kind: OpKind.AnimationListener,\n target,\n targetSlot,\n tag,\n hostListener,\n name,\n animationKind,\n handlerOps: handlerList,\n handlerFnName: null,\n consumesDollarEvent: false,\n eventTarget,\n sourceSpan,\n ...NEW_OP\n };\n}\nfunction createTwoWayListenerOp(target, targetSlot, name, tag, handlerOps, sourceSpan) {\n const handlerList = new OpList();\n handlerList.push(handlerOps);\n return {\n kind: OpKind.TwoWayListener,\n target,\n targetSlot,\n tag,\n name,\n handlerOps: handlerList,\n handlerFnName: null,\n sourceSpan,\n ...NEW_OP\n };\n}\nfunction createPipeOp(xref, slot, name) {\n return {\n kind: OpKind.Pipe,\n xref,\n handle: slot,\n name,\n ...NEW_OP,\n ...TRAIT_CONSUMES_SLOT\n };\n}\nfunction createNamespaceOp(namespace) {\n return {\n kind: OpKind.Namespace,\n active: namespace,\n ...NEW_OP\n };\n}\nfunction createProjectionDefOp(def) {\n return {\n kind: OpKind.ProjectionDef,\n def,\n ...NEW_OP\n };\n}\nfunction createProjectionOp(xref, selector, i18nPlaceholder, fallbackView, sourceSpan) {\n return {\n kind: OpKind.Projection,\n xref,\n handle: new SlotHandle(),\n selector,\n i18nPlaceholder,\n fallbackView,\n projectionSlotIndex: 0,\n attributes: null,\n localRefs: [],\n sourceSpan,\n ...NEW_OP,\n ...TRAIT_CONSUMES_SLOT,\n numSlotsUsed: fallbackView === null ? 1 : 2\n };\n}\nfunction createExtractedAttributeOp(target, bindingKind, namespace, name, expression, i18nContext, i18nMessage, securityContext) {\n return {\n kind: OpKind.ExtractedAttribute,\n target,\n bindingKind,\n namespace,\n name,\n expression,\n i18nContext,\n i18nMessage,\n securityContext,\n trustedValueFn: null,\n ...NEW_OP\n };\n}\nfunction createDeferOp(xref, main, mainSlot, ownResolverFn, resolverFn, sourceSpan) {\n return {\n kind: OpKind.Defer,\n xref,\n handle: new SlotHandle(),\n mainView: main,\n mainSlot,\n loadingView: null,\n loadingSlot: null,\n loadingConfig: null,\n loadingMinimumTime: null,\n loadingAfterTime: null,\n placeholderView: null,\n placeholderSlot: null,\n placeholderConfig: null,\n placeholderMinimumTime: null,\n errorView: null,\n errorSlot: null,\n ownResolverFn,\n resolverFn,\n flags: null,\n sourceSpan,\n ...NEW_OP,\n ...TRAIT_CONSUMES_SLOT,\n numSlotsUsed: 2\n };\n}\nfunction createDeferOnOp(defer, trigger, modifier, sourceSpan) {\n return {\n kind: OpKind.DeferOn,\n defer,\n trigger,\n modifier,\n sourceSpan,\n ...NEW_OP\n };\n}\nfunction createDeclareLetOp(xref, declaredName, sourceSpan) {\n return {\n kind: OpKind.DeclareLet,\n xref,\n declaredName,\n sourceSpan,\n handle: new SlotHandle(),\n ...TRAIT_CONSUMES_SLOT,\n ...NEW_OP\n };\n}\nfunction createI18nMessageOp(xref, i18nContext, i18nBlock, message, messagePlaceholder, params, postprocessingParams, needsPostprocessing) {\n return {\n kind: OpKind.I18nMessage,\n xref,\n i18nContext,\n i18nBlock,\n message,\n messagePlaceholder,\n params,\n postprocessingParams,\n needsPostprocessing,\n subMessages: [],\n ...NEW_OP\n };\n}\nfunction createI18nStartOp(xref, message, root, sourceSpan) {\n return {\n kind: OpKind.I18nStart,\n xref,\n handle: new SlotHandle(),\n root: root ?? xref,\n message,\n messageIndex: null,\n subTemplateIndex: null,\n context: null,\n sourceSpan,\n ...NEW_OP,\n ...TRAIT_CONSUMES_SLOT\n };\n}\nfunction createI18nEndOp(xref, sourceSpan) {\n return {\n kind: OpKind.I18nEnd,\n xref,\n sourceSpan,\n ...NEW_OP\n };\n}\nfunction createIcuStartOp(xref, message, messagePlaceholder, sourceSpan) {\n return {\n kind: OpKind.IcuStart,\n xref,\n message,\n messagePlaceholder,\n context: null,\n sourceSpan,\n ...NEW_OP\n };\n}\nfunction createIcuEndOp(xref) {\n return {\n kind: OpKind.IcuEnd,\n xref,\n ...NEW_OP\n };\n}\nfunction createIcuPlaceholderOp(xref, name, strings) {\n return {\n kind: OpKind.IcuPlaceholder,\n xref,\n name,\n strings,\n expressionPlaceholders: [],\n ...NEW_OP\n };\n}\nfunction createI18nContextOp(contextKind, xref, i18nBlock, message, sourceSpan) {\n if (i18nBlock === null && contextKind !== I18nContextKind.Attr) {\n throw new Error('AssertionError: i18nBlock must be provided for non-attribute contexts.');\n }\n return {\n kind: OpKind.I18nContext,\n contextKind,\n xref,\n i18nBlock,\n message,\n sourceSpan,\n params: new Map(),\n postprocessingParams: new Map(),\n ...NEW_OP\n };\n}\nfunction createI18nAttributesOp(xref, handle, target) {\n return {\n kind: OpKind.I18nAttributes,\n xref,\n handle,\n target,\n i18nAttributesConfig: null,\n ...NEW_OP,\n ...TRAIT_CONSUMES_SLOT\n };\n}\nfunction createSourceLocationOp(templatePath, locations) {\n return {\n kind: OpKind.SourceLocation,\n templatePath,\n locations,\n ...NEW_OP\n };\n}\nfunction createControlCreateOp(sourceSpan) {\n return {\n kind: OpKind.ControlCreate,\n sourceSpan,\n ...NEW_OP\n };\n}\n\nfunction createDomPropertyOp(name, expression, bindingKind, i18nContext, securityContext, sourceSpan) {\n return {\n kind: OpKind.DomProperty,\n name,\n expression,\n bindingKind,\n i18nContext,\n securityContext,\n sanitizer: null,\n sourceSpan,\n ...TRAIT_CONSUMES_VARS,\n ...NEW_OP\n };\n}\n\nconst CTX_REF = 'CTX_REF_MARKER';\n\nvar CompilationJobKind;\n(function (CompilationJobKind) {\n CompilationJobKind[CompilationJobKind[\"Tmpl\"] = 0] = \"Tmpl\";\n CompilationJobKind[CompilationJobKind[\"Host\"] = 1] = \"Host\";\n CompilationJobKind[CompilationJobKind[\"Both\"] = 2] = \"Both\";\n})(CompilationJobKind || (CompilationJobKind = {}));\nvar TemplateCompilationMode;\n(function (TemplateCompilationMode) {\n TemplateCompilationMode[TemplateCompilationMode[\"Full\"] = 0] = \"Full\";\n TemplateCompilationMode[TemplateCompilationMode[\"DomOnly\"] = 1] = \"DomOnly\";\n})(TemplateCompilationMode || (TemplateCompilationMode = {}));\nclass CompilationJob {\n componentName;\n pool;\n mode;\n constructor(componentName, pool, mode) {\n this.componentName = componentName;\n this.pool = pool;\n this.mode = mode;\n }\n kind = CompilationJobKind.Both;\n allocateXrefId() {\n return this.nextXrefId++;\n }\n nextXrefId = 0;\n}\nclass ComponentCompilationJob extends CompilationJob {\n relativeContextFilePath;\n i18nUseExternalIds;\n deferMeta;\n allDeferrableDepsFn;\n relativeTemplatePath;\n enableDebugLocations;\n constructor(componentName, pool, mode, relativeContextFilePath, i18nUseExternalIds, deferMeta, allDeferrableDepsFn, relativeTemplatePath, enableDebugLocations) {\n super(componentName, pool, mode);\n this.relativeContextFilePath = relativeContextFilePath;\n this.i18nUseExternalIds = i18nUseExternalIds;\n this.deferMeta = deferMeta;\n this.allDeferrableDepsFn = allDeferrableDepsFn;\n this.relativeTemplatePath = relativeTemplatePath;\n this.enableDebugLocations = enableDebugLocations;\n this.root = new ViewCompilationUnit(this, this.allocateXrefId(), null);\n this.views.set(this.root.xref, this.root);\n }\n kind = CompilationJobKind.Tmpl;\n fnSuffix = 'Template';\n root;\n views = new Map();\n contentSelectors = null;\n allocateView(parent) {\n const view = new ViewCompilationUnit(this, this.allocateXrefId(), parent);\n this.views.set(view.xref, view);\n return view;\n }\n get units() {\n return this.views.values();\n }\n addConst(newConst, initializers) {\n for (let idx = 0; idx < this.consts.length; idx++) {\n if (this.consts[idx].isEquivalent(newConst)) {\n return idx;\n }\n }\n const idx = this.consts.length;\n this.consts.push(newConst);\n if (initializers) {\n this.constsInitializers.push(...initializers);\n }\n return idx;\n }\n consts = [];\n constsInitializers = [];\n}\nclass CompilationUnit {\n xref;\n constructor(xref) {\n this.xref = xref;\n }\n create = new OpList();\n update = new OpList();\n functions = new Set();\n fnName = null;\n vars = null;\n *ops() {\n for (const expr of this.functions) {\n for (const op of expr.ops) {\n yield op;\n }\n }\n for (const op of this.create) {\n yield op;\n if (op.kind === OpKind.Listener || op.kind === OpKind.Animation || op.kind === OpKind.AnimationListener || op.kind === OpKind.TwoWayListener) {\n for (const listenerOp of op.handlerOps) {\n yield listenerOp;\n }\n } else if (op.kind === OpKind.RepeaterCreate && op.trackByOps !== null) {\n for (const trackOp of op.trackByOps) {\n yield trackOp;\n }\n }\n }\n for (const op of this.update) {\n yield op;\n }\n }\n}\nclass ViewCompilationUnit extends CompilationUnit {\n job;\n parent;\n constructor(job, xref, parent) {\n super(xref);\n this.job = job;\n this.parent = parent;\n }\n contextVariables = new Map();\n aliases = new Set();\n decls = null;\n}\nclass HostBindingCompilationJob extends CompilationJob {\n constructor(componentName, pool, mode) {\n super(componentName, pool, mode);\n this.root = new HostBindingCompilationUnit(this);\n }\n kind = CompilationJobKind.Host;\n fnSuffix = 'HostBindings';\n root;\n get units() {\n return [this.root];\n }\n}\nclass HostBindingCompilationUnit extends CompilationUnit {\n job;\n constructor(job) {\n super(0);\n this.job = job;\n }\n attributes = null;\n}\n\nfunction deleteAnyCasts(job) {\n for (const unit of job.units) {\n for (const op of unit.ops()) {\n transformExpressionsInOp(op, removeAnys, VisitorContextFlag.None);\n }\n }\n}\nfunction removeAnys(e) {\n if (e instanceof InvokeFunctionExpr && e.fn instanceof LexicalReadExpr && e.fn.name === '$any') {\n if (e.args.length !== 1) {\n throw new Error('The $any builtin function expects exactly one argument.');\n }\n return e.args[0];\n }\n return e;\n}\n\nfunction applyI18nExpressions(job) {\n const i18nContexts = new Map();\n for (const unit of job.units) {\n for (const op of unit.create) {\n if (op.kind === OpKind.I18nContext) {\n i18nContexts.set(op.xref, op);\n }\n }\n }\n for (const unit of job.units) {\n for (const op of unit.update) {\n if (op.kind === OpKind.I18nExpression && needsApplication(i18nContexts, op)) {\n OpList.insertAfter(createI18nApplyOp(op.i18nOwner, op.handle, null), op);\n }\n }\n }\n}\nfunction needsApplication(i18nContexts, op) {\n if (op.next?.kind !== OpKind.I18nExpression) {\n return true;\n }\n const context = i18nContexts.get(op.context);\n const nextContext = i18nContexts.get(op.next.context);\n if (context === undefined) {\n throw new Error(\"AssertionError: expected an I18nContextOp to exist for the I18nExpressionOp's context\");\n }\n if (nextContext === undefined) {\n throw new Error(\"AssertionError: expected an I18nContextOp to exist for the next I18nExpressionOp's context\");\n }\n if (context.i18nBlock !== null) {\n if (context.i18nBlock !== nextContext.i18nBlock) {\n return true;\n }\n return false;\n }\n if (op.i18nOwner !== op.next.i18nOwner) {\n return true;\n }\n return false;\n}\n\nfunction assignI18nSlotDependencies(job) {\n for (const unit of job.units) {\n let updateOp = unit.update.head;\n let i18nExpressionsInProgress = [];\n let state = null;\n for (const createOp of unit.create) {\n if (createOp.kind === OpKind.I18nStart) {\n state = {\n blockXref: createOp.xref,\n lastSlotConsumer: createOp.xref\n };\n } else if (createOp.kind === OpKind.I18nEnd) {\n for (const op of i18nExpressionsInProgress) {\n op.target = state.lastSlotConsumer;\n OpList.insertBefore(op, updateOp);\n }\n i18nExpressionsInProgress.length = 0;\n state = null;\n }\n if (hasConsumesSlotTrait(createOp)) {\n if (state !== null) {\n state.lastSlotConsumer = createOp.xref;\n }\n while (true) {\n if (updateOp.next === null) {\n break;\n }\n if (state !== null && updateOp.kind === OpKind.I18nExpression && updateOp.usage === I18nExpressionFor.I18nText && updateOp.i18nOwner === state.blockXref) {\n const opToRemove = updateOp;\n updateOp = updateOp.next;\n OpList.remove(opToRemove);\n i18nExpressionsInProgress.push(opToRemove);\n continue;\n }\n let hasDifferentTarget = false;\n if (hasDependsOnSlotContextTrait(updateOp) && updateOp.target !== createOp.xref) {\n hasDifferentTarget = true;\n } else if (updateOp.kind === OpKind.Statement || updateOp.kind === OpKind.Variable) {\n visitExpressionsInOp(updateOp, expr => {\n if (!hasDifferentTarget && hasDependsOnSlotContextTrait(expr) && expr.target !== createOp.xref) {\n hasDifferentTarget = true;\n }\n });\n }\n if (hasDifferentTarget) {\n break;\n }\n updateOp = updateOp.next;\n }\n }\n }\n }\n}\n\nfunction attachSourceLocations(job) {\n if (!job.enableDebugLocations || job.relativeTemplatePath === null) {\n return;\n }\n for (const unit of job.units) {\n const locations = [];\n for (const op of unit.create) {\n if (op.kind === OpKind.ElementStart || op.kind === OpKind.Element) {\n const start = op.startSourceSpan.start;\n locations.push({\n targetSlot: op.handle,\n offset: start.offset,\n line: start.line,\n column: start.col\n });\n }\n }\n if (locations.length > 0) {\n unit.create.push(createSourceLocationOp(job.relativeTemplatePath, locations));\n }\n }\n}\n\nfunction createOpXrefMap(unit) {\n const map = new Map();\n for (const op of unit.create) {\n if (!hasConsumesSlotTrait(op)) {\n continue;\n }\n map.set(op.xref, op);\n if (op.kind === OpKind.RepeaterCreate && op.emptyView !== null) {\n map.set(op.emptyView, op);\n }\n }\n return map;\n}\n\nfunction extractAttributes(job) {\n for (const unit of job.units) {\n const elements = createOpXrefMap(unit);\n for (const op of unit.ops()) {\n switch (op.kind) {\n case OpKind.Attribute:\n extractAttributeOp(unit, op, elements);\n break;\n case OpKind.Property:\n if (op.bindingKind !== BindingKind.LegacyAnimation && op.bindingKind !== BindingKind.Animation) {\n let bindingKind;\n if (op.i18nMessage !== null && op.templateKind === null) {\n bindingKind = BindingKind.I18n;\n } else if (op.isStructuralTemplateAttribute) {\n bindingKind = BindingKind.Template;\n } else {\n bindingKind = BindingKind.Property;\n }\n OpList.insertBefore(createExtractedAttributeOp(op.target, bindingKind, null, op.name, null, null, null, op.securityContext), lookupElement$3(elements, op.target));\n }\n break;\n case OpKind.TwoWayProperty:\n OpList.insertBefore(createExtractedAttributeOp(op.target, BindingKind.TwoWayProperty, null, op.name, null, null, null, op.securityContext), lookupElement$3(elements, op.target));\n break;\n case OpKind.StyleProp:\n case OpKind.ClassProp:\n if (op.expression instanceof EmptyExpr) {\n OpList.insertBefore(createExtractedAttributeOp(op.target, BindingKind.Property, null, op.name, null, null, null, SecurityContext.STYLE), lookupElement$3(elements, op.target));\n }\n break;\n case OpKind.Listener:\n if (!op.isLegacyAnimationListener) {\n const extractedAttributeOp = createExtractedAttributeOp(op.target, BindingKind.Property, null, op.name, null, null, null, SecurityContext.NONE);\n if (job.kind === CompilationJobKind.Host) {\n break;\n } else {\n OpList.insertBefore(extractedAttributeOp, lookupElement$3(elements, op.target));\n }\n }\n break;\n case OpKind.TwoWayListener:\n if (job.kind !== CompilationJobKind.Host) {\n const extractedAttributeOp = createExtractedAttributeOp(op.target, BindingKind.Property, null, op.name, null, null, null, SecurityContext.NONE);\n OpList.insertBefore(extractedAttributeOp, lookupElement$3(elements, op.target));\n }\n break;\n }\n }\n }\n}\nfunction lookupElement$3(elements, xref) {\n const el = elements.get(xref);\n if (el === undefined) {\n throw new Error('All attributes should have an element-like target.');\n }\n return el;\n}\nfunction extractAttributeOp(unit, op, elements) {\n if (op.expression instanceof Interpolation) {\n return;\n }\n if (op.isTextAttribute) {\n const extractedAttributeOp = createExtractedAttributeOp(op.target, op.isStructuralTemplateAttribute ? BindingKind.Template : BindingKind.Attribute, op.namespace, op.name, op.expression, op.i18nContext, op.i18nMessage, op.securityContext);\n if (unit.job.kind === CompilationJobKind.Host) {\n unit.create.push(extractedAttributeOp);\n } else {\n const ownerOp = lookupElement$3(elements, op.target);\n OpList.insertBefore(extractedAttributeOp, ownerOp);\n }\n OpList.remove(op);\n }\n}\n\nconst ARIA_PREFIX = 'aria-';\nfunction isAriaAttribute(name) {\n return name.startsWith(ARIA_PREFIX) && name.length > ARIA_PREFIX.length;\n}\n\nfunction lookupElement$2(elements, xref) {\n const el = elements.get(xref);\n if (el === undefined) {\n throw new Error('All attributes should have an element-like target.');\n }\n return el;\n}\nfunction specializeBindings(job) {\n const elements = new Map();\n for (const unit of job.units) {\n for (const op of unit.create) {\n if (!isElementOrContainerOp(op)) {\n continue;\n }\n elements.set(op.xref, op);\n }\n }\n for (const unit of job.units) {\n for (const op of unit.ops()) {\n if (op.kind !== OpKind.Binding) {\n continue;\n }\n switch (op.bindingKind) {\n case BindingKind.Attribute:\n if (op.name === 'ngNonBindable') {\n OpList.remove(op);\n const target = lookupElement$2(elements, op.target);\n target.nonBindable = true;\n } else if (op.name.startsWith('animate.')) {\n OpList.replace(op, createAnimationBindingOp(op.name, op.target, op.name === 'animate.enter' ? \"enter\" : \"leave\", op.expression, op.securityContext, op.sourceSpan, 0));\n } else {\n const [namespace, name] = splitNsName(op.name);\n OpList.replace(op, createAttributeOp(op.target, namespace, name, op.expression, op.securityContext, op.isTextAttribute, op.isStructuralTemplateAttribute, op.templateKind, op.i18nMessage, op.sourceSpan));\n }\n break;\n case BindingKind.Animation:\n OpList.replace(op, createAnimationBindingOp(op.name, op.target, op.name === 'animate.enter' ? \"enter\" : \"leave\", op.expression, op.securityContext, op.sourceSpan, 1));\n break;\n case BindingKind.Property:\n case BindingKind.LegacyAnimation:\n if (job.mode === TemplateCompilationMode.DomOnly && isAriaAttribute(op.name)) {\n OpList.replace(op, createAttributeOp(op.target, null, op.name, op.expression, op.securityContext, false, op.isStructuralTemplateAttribute, op.templateKind, op.i18nMessage, op.sourceSpan));\n } else if (job.kind === CompilationJobKind.Host) {\n OpList.replace(op, createDomPropertyOp(op.name, op.expression, op.bindingKind, op.i18nContext, op.securityContext, op.sourceSpan));\n } else {\n OpList.replace(op, createPropertyOp(op.target, op.name, op.expression, op.bindingKind, op.securityContext, op.isStructuralTemplateAttribute, op.templateKind, op.i18nContext, op.i18nMessage, op.sourceSpan));\n }\n break;\n case BindingKind.TwoWayProperty:\n if (!(op.expression instanceof Expression)) {\n throw new Error(`Expected value of two-way property binding \"${op.name}\" to be an expression`);\n }\n OpList.replace(op, createTwoWayPropertyOp(op.target, op.name, op.expression, op.securityContext, op.isStructuralTemplateAttribute, op.templateKind, op.i18nContext, op.i18nMessage, op.sourceSpan));\n break;\n case BindingKind.I18n:\n case BindingKind.ClassName:\n case BindingKind.StyleProperty:\n throw new Error(`Unhandled binding of kind ${BindingKind[op.bindingKind]}`);\n }\n }\n }\n}\n\nconst CHAIN_COMPATIBILITY = new Map([[Identifiers.ariaProperty, Identifiers.ariaProperty], [Identifiers.attribute, Identifiers.attribute], [Identifiers.classProp, Identifiers.classProp], [Identifiers.element, Identifiers.element], [Identifiers.elementContainer, Identifiers.elementContainer], [Identifiers.elementContainerEnd, Identifiers.elementContainerEnd], [Identifiers.elementContainerStart, Identifiers.elementContainerStart], [Identifiers.elementEnd, Identifiers.elementEnd], [Identifiers.elementStart, Identifiers.elementStart], [Identifiers.domProperty, Identifiers.domProperty], [Identifiers.i18nExp, Identifiers.i18nExp], [Identifiers.listener, Identifiers.listener], [Identifiers.listener, Identifiers.listener], [Identifiers.property, Identifiers.property], [Identifiers.styleProp, Identifiers.styleProp], [Identifiers.syntheticHostListener, Identifiers.syntheticHostListener], [Identifiers.syntheticHostProperty, Identifiers.syntheticHostProperty], [Identifiers.templateCreate, Identifiers.templateCreate], [Identifiers.twoWayProperty, Identifiers.twoWayProperty], [Identifiers.twoWayListener, Identifiers.twoWayListener], [Identifiers.declareLet, Identifiers.declareLet], [Identifiers.conditionalCreate, Identifiers.conditionalBranchCreate], [Identifiers.conditionalBranchCreate, Identifiers.conditionalBranchCreate], [Identifiers.domElement, Identifiers.domElement], [Identifiers.domElementStart, Identifiers.domElementStart], [Identifiers.domElementEnd, Identifiers.domElementEnd], [Identifiers.domElementContainer, Identifiers.domElementContainer], [Identifiers.domElementContainerStart, Identifiers.domElementContainerStart], [Identifiers.domElementContainerEnd, Identifiers.domElementContainerEnd], [Identifiers.domListener, Identifiers.domListener], [Identifiers.domTemplate, Identifiers.domTemplate], [Identifiers.animationEnter, Identifiers.animationEnter], [Identifiers.animationLeave, Identifiers.animationLeave], [Identifiers.animationEnterListener, Identifiers.animationEnterListener], [Identifiers.animationLeaveListener, Identifiers.animationLeaveListener]]);\nconst MAX_CHAIN_LENGTH = 256;\nfunction chain(job) {\n for (const unit of job.units) {\n chainOperationsInList(unit.create);\n chainOperationsInList(unit.update);\n }\n}\nfunction chainOperationsInList(opList) {\n let chain = null;\n for (const op of opList) {\n if (op.kind !== OpKind.Statement || !(op.statement instanceof ExpressionStatement)) {\n chain = null;\n continue;\n }\n if (!(op.statement.expr instanceof InvokeFunctionExpr) || !(op.statement.expr.fn instanceof ExternalExpr)) {\n chain = null;\n continue;\n }\n const instruction = op.statement.expr.fn.value;\n if (!CHAIN_COMPATIBILITY.has(instruction)) {\n chain = null;\n continue;\n }\n if (chain !== null && CHAIN_COMPATIBILITY.get(chain.instruction) === instruction && chain.length < MAX_CHAIN_LENGTH) {\n const expression = chain.expression.callFn(op.statement.expr.args, op.statement.expr.sourceSpan, op.statement.expr.pure);\n chain.expression = expression;\n chain.op.statement = expression.toStmt();\n chain.length++;\n OpList.remove(op);\n } else {\n chain = {\n op,\n instruction,\n expression: op.statement.expr,\n length: 1\n };\n }\n }\n}\n\nfunction collapseSingletonInterpolations(job) {\n for (const unit of job.units) {\n for (const op of unit.update) {\n const eligibleOpKind = op.kind === OpKind.Attribute || op.kind === OpKind.StyleProp || op.kind == OpKind.StyleMap || op.kind === OpKind.ClassMap;\n if (eligibleOpKind && op.expression instanceof Interpolation && op.expression.strings.length === 2 && op.expression.strings.every(s => s === '')) {\n op.expression = op.expression.expressions[0];\n }\n }\n }\n}\n\nfunction generateConditionalExpressions(job) {\n for (const unit of job.units) {\n for (const op of unit.ops()) {\n if (op.kind !== OpKind.Conditional) {\n continue;\n }\n let test;\n const defaultCase = op.conditions.findIndex(cond => cond.expr === null);\n if (defaultCase >= 0) {\n const slot = op.conditions.splice(defaultCase, 1)[0].targetSlot;\n test = new SlotLiteralExpr(slot);\n } else {\n test = literal(-1);\n }\n let tmp = op.test == null ? null : new AssignTemporaryExpr(op.test, job.allocateXrefId());\n let caseExpressionTemporaryXref = null;\n for (let i = op.conditions.length - 1; i >= 0; i--) {\n let conditionalCase = op.conditions[i];\n if (conditionalCase.expr === null) {\n continue;\n }\n if (tmp !== null) {\n const useTmp = i === 0 ? tmp : new ReadTemporaryExpr(tmp.xref);\n conditionalCase.expr = new BinaryOperatorExpr(BinaryOperator.Identical, useTmp, conditionalCase.expr);\n } else if (conditionalCase.alias !== null) {\n caseExpressionTemporaryXref ??= job.allocateXrefId();\n conditionalCase.expr = new AssignTemporaryExpr(conditionalCase.expr, caseExpressionTemporaryXref);\n op.contextValue = new ReadTemporaryExpr(caseExpressionTemporaryXref);\n }\n test = new ConditionalExpr(conditionalCase.expr, new SlotLiteralExpr(conditionalCase.targetSlot), test);\n }\n op.processed = test;\n op.conditions = [];\n }\n }\n}\n\nconst BINARY_OPERATORS = new Map([['&&', BinaryOperator.And], ['>', BinaryOperator.Bigger], ['>=', BinaryOperator.BiggerEquals], ['|', BinaryOperator.BitwiseOr], ['&', BinaryOperator.BitwiseAnd], ['/', BinaryOperator.Divide], ['=', BinaryOperator.Assign], ['==', BinaryOperator.Equals], ['===', BinaryOperator.Identical], ['<', BinaryOperator.Lower], ['<=', BinaryOperator.LowerEquals], ['-', BinaryOperator.Minus], ['%', BinaryOperator.Modulo], ['**', BinaryOperator.Exponentiation], ['*', BinaryOperator.Multiply], ['!=', BinaryOperator.NotEquals], ['!==', BinaryOperator.NotIdentical], ['??', BinaryOperator.NullishCoalesce], ['||', BinaryOperator.Or], ['+', BinaryOperator.Plus], ['in', BinaryOperator.In], ['instanceof', BinaryOperator.InstanceOf], ['+=', BinaryOperator.AdditionAssignment], ['-=', BinaryOperator.SubtractionAssignment], ['*=', BinaryOperator.MultiplicationAssignment], ['/=', BinaryOperator.DivisionAssignment], ['%=', BinaryOperator.RemainderAssignment], ['**=', BinaryOperator.ExponentiationAssignment], ['&&=', BinaryOperator.AndAssignment], ['||=', BinaryOperator.OrAssignment], ['??=', BinaryOperator.NullishCoalesceAssignment]]);\nfunction namespaceForKey(namespacePrefixKey) {\n const NAMESPACES = new Map([['svg', Namespace.SVG], ['math', Namespace.Math]]);\n if (namespacePrefixKey === null) {\n return Namespace.HTML;\n }\n return NAMESPACES.get(namespacePrefixKey) ?? Namespace.HTML;\n}\nfunction keyForNamespace(namespace) {\n const NAMESPACES = new Map([['svg', Namespace.SVG], ['math', Namespace.Math]]);\n for (const [k, n] of NAMESPACES.entries()) {\n if (n === namespace) {\n return k;\n }\n }\n return null;\n}\nfunction prefixWithNamespace(strippedTag, namespace) {\n if (namespace === Namespace.HTML) {\n return strippedTag;\n }\n return `:${keyForNamespace(namespace)}:${strippedTag}`;\n}\nfunction literalOrArrayLiteral(value) {\n if (Array.isArray(value)) {\n return literalArr(value.map(literalOrArrayLiteral));\n }\n return literal(value);\n}\n\nfunction collectElementConsts(job) {\n const allElementAttributes = new Map();\n for (const unit of job.units) {\n for (const op of unit.create) {\n if (op.kind === OpKind.ExtractedAttribute) {\n const attributes = allElementAttributes.get(op.target) || new ElementAttributes();\n allElementAttributes.set(op.target, attributes);\n attributes.add(op.bindingKind, op.name, op.expression, op.namespace, op.trustedValueFn);\n OpList.remove(op);\n }\n }\n }\n if (job instanceof ComponentCompilationJob) {\n for (const unit of job.units) {\n for (const op of unit.create) {\n if (op.kind == OpKind.Projection) {\n const attributes = allElementAttributes.get(op.xref);\n if (attributes !== undefined) {\n const attrArray = serializeAttributes(attributes);\n if (attrArray.entries.length > 0) {\n op.attributes = attrArray;\n }\n }\n } else if (isElementOrContainerOp(op)) {\n op.attributes = getConstIndex(job, allElementAttributes, op.xref);\n if (op.kind === OpKind.RepeaterCreate && op.emptyView !== null) {\n op.emptyAttributes = getConstIndex(job, allElementAttributes, op.emptyView);\n }\n }\n }\n }\n } else if (job instanceof HostBindingCompilationJob) {\n for (const [xref, attributes] of allElementAttributes.entries()) {\n if (xref !== job.root.xref) {\n throw new Error(`An attribute would be const collected into the host binding's template function, but is not associated with the root xref.`);\n }\n const attrArray = serializeAttributes(attributes);\n if (attrArray.entries.length > 0) {\n job.root.attributes = attrArray;\n }\n }\n }\n}\nfunction getConstIndex(job, allElementAttributes, xref) {\n const attributes = allElementAttributes.get(xref);\n if (attributes !== undefined) {\n const attrArray = serializeAttributes(attributes);\n if (attrArray.entries.length > 0) {\n return job.addConst(attrArray);\n }\n }\n return null;\n}\nconst FLYWEIGHT_ARRAY = Object.freeze([]);\nclass ElementAttributes {\n known = new Map();\n byKind = new Map();\n propertyBindings = null;\n projectAs = null;\n get attributes() {\n return this.byKind.get(BindingKind.Attribute) ?? FLYWEIGHT_ARRAY;\n }\n get classes() {\n return this.byKind.get(BindingKind.ClassName) ?? FLYWEIGHT_ARRAY;\n }\n get styles() {\n return this.byKind.get(BindingKind.StyleProperty) ?? FLYWEIGHT_ARRAY;\n }\n get bindings() {\n return this.propertyBindings ?? FLYWEIGHT_ARRAY;\n }\n get template() {\n return this.byKind.get(BindingKind.Template) ?? FLYWEIGHT_ARRAY;\n }\n get i18n() {\n return this.byKind.get(BindingKind.I18n) ?? FLYWEIGHT_ARRAY;\n }\n isKnown(kind, name) {\n const nameToValue = this.known.get(kind) ?? new Set();\n this.known.set(kind, nameToValue);\n if (nameToValue.has(name)) {\n return true;\n }\n nameToValue.add(name);\n return false;\n }\n add(kind, name, value, namespace, trustedValueFn) {\n const allowDuplicates = kind === BindingKind.Attribute || kind === BindingKind.ClassName || kind === BindingKind.StyleProperty;\n if (!allowDuplicates && this.isKnown(kind, name)) {\n return;\n }\n if (name === 'ngProjectAs') {\n if (value === null || !(value instanceof LiteralExpr) || value.value == null || typeof value.value?.toString() !== 'string') {\n throw Error('ngProjectAs must have a string literal value');\n }\n this.projectAs = value.value.toString();\n }\n const array = this.arrayFor(kind);\n array.push(...getAttributeNameLiterals(namespace, name));\n if (kind === BindingKind.Attribute || kind === BindingKind.StyleProperty) {\n if (value === null) {\n throw Error('Attribute, i18n attribute, & style element attributes must have a value');\n }\n if (trustedValueFn !== null) {\n if (!isStringLiteral(value)) {\n throw Error('AssertionError: extracted attribute value should be string literal');\n }\n array.push(taggedTemplate(trustedValueFn, new TemplateLiteralExpr([new TemplateLiteralElementExpr(value.value)], []), undefined, value.sourceSpan));\n } else {\n array.push(value);\n }\n }\n }\n arrayFor(kind) {\n if (kind === BindingKind.Property || kind === BindingKind.TwoWayProperty) {\n this.propertyBindings ??= [];\n return this.propertyBindings;\n } else {\n if (!this.byKind.has(kind)) {\n this.byKind.set(kind, []);\n }\n return this.byKind.get(kind);\n }\n }\n}\nfunction getAttributeNameLiterals(namespace, name) {\n const nameLiteral = literal(name);\n if (namespace) {\n return [literal(0), literal(namespace), nameLiteral];\n }\n return [nameLiteral];\n}\nfunction serializeAttributes({\n attributes,\n bindings,\n classes,\n i18n,\n projectAs,\n styles,\n template\n}) {\n const attrArray = [...attributes];\n if (projectAs !== null) {\n const parsedR3Selector = parseSelectorToR3Selector(projectAs)[0];\n attrArray.push(literal(5), literalOrArrayLiteral(parsedR3Selector));\n }\n if (classes.length > 0) {\n attrArray.push(literal(1), ...classes);\n }\n if (styles.length > 0) {\n attrArray.push(literal(2), ...styles);\n }\n if (bindings.length > 0) {\n attrArray.push(literal(3), ...bindings);\n }\n if (template.length > 0) {\n attrArray.push(literal(4), ...template);\n }\n if (i18n.length > 0) {\n attrArray.push(literal(6), ...i18n);\n }\n return literalArr(attrArray);\n}\n\nfunction lookupElement$1(elements, xref) {\n const el = elements.get(xref);\n if (el === undefined) {\n throw new Error('All attributes should have an element-like target.');\n }\n return el;\n}\nfunction convertAnimations(job) {\n const elements = new Map();\n for (const unit of job.units) {\n for (const op of unit.create) {\n if (!isElementOrContainerOp(op)) {\n continue;\n }\n elements.set(op.xref, op);\n }\n }\n for (const unit of job.units) {\n for (const op of unit.ops()) {\n if (op.kind === OpKind.AnimationBinding) {\n const createAnimationOp = getAnimationOp(op);\n if (job.kind === CompilationJobKind.Host) {\n unit.create.push(createAnimationOp);\n } else {\n OpList.insertAfter(createAnimationOp, lookupElement$1(elements, op.target));\n }\n OpList.remove(op);\n }\n }\n }\n}\nfunction getAnimationOp(op) {\n if (op.animationBindingKind === 0) {\n return createAnimationStringOp(op.name, op.target, op.name === 'animate.enter' ? \"enter\" : \"leave\", op.expression, op.securityContext, op.sourceSpan);\n } else {\n const expression = op.expression;\n return createAnimationOp(op.name, op.target, op.name === 'animate.enter' ? \"enter\" : \"leave\", [createStatementOp(new ReturnStatement(expression, expression.sourceSpan))], op.securityContext, op.sourceSpan);\n }\n}\n\nfunction convertI18nBindings(job) {\n const i18nAttributesByElem = new Map();\n for (const unit of job.units) {\n for (const op of unit.create) {\n if (op.kind === OpKind.I18nAttributes) {\n i18nAttributesByElem.set(op.target, op);\n }\n }\n for (const op of unit.update) {\n switch (op.kind) {\n case OpKind.Property:\n case OpKind.Attribute:\n if (op.i18nContext === null) {\n continue;\n }\n if (!(op.expression instanceof Interpolation)) {\n continue;\n }\n const i18nAttributesForElem = i18nAttributesByElem.get(op.target);\n if (i18nAttributesForElem === undefined) {\n throw new Error('AssertionError: An i18n attribute binding instruction requires the owning element to have an I18nAttributes create instruction');\n }\n if (i18nAttributesForElem.target !== op.target) {\n throw new Error('AssertionError: Expected i18nAttributes target element to match binding target element');\n }\n const ops = [];\n for (let i = 0; i < op.expression.expressions.length; i++) {\n const expr = op.expression.expressions[i];\n if (op.expression.i18nPlaceholders.length !== op.expression.expressions.length) {\n throw new Error(`AssertionError: An i18n attribute binding instruction requires the same number of expressions and placeholders, but found ${op.expression.i18nPlaceholders.length} placeholders and ${op.expression.expressions.length} expressions`);\n }\n ops.push(createI18nExpressionOp(op.i18nContext, i18nAttributesForElem.target, i18nAttributesForElem.xref, i18nAttributesForElem.handle, expr, null, op.expression.i18nPlaceholders[i], I18nParamResolutionTime.Creation, I18nExpressionFor.I18nAttribute, op.name, op.sourceSpan));\n }\n OpList.replaceWithMany(op, ops);\n break;\n }\n }\n }\n}\n\nfunction createI18nContexts(job) {\n const attrContextByMessage = new Map();\n for (const unit of job.units) {\n for (const op of unit.ops()) {\n switch (op.kind) {\n case OpKind.Binding:\n case OpKind.Property:\n case OpKind.Attribute:\n case OpKind.ExtractedAttribute:\n if (op.i18nMessage === null) {\n continue;\n }\n if (!attrContextByMessage.has(op.i18nMessage)) {\n const i18nContext = createI18nContextOp(I18nContextKind.Attr, job.allocateXrefId(), null, op.i18nMessage, null);\n unit.create.push(i18nContext);\n attrContextByMessage.set(op.i18nMessage, i18nContext.xref);\n }\n op.i18nContext = attrContextByMessage.get(op.i18nMessage);\n break;\n }\n }\n }\n const blockContextByI18nBlock = new Map();\n for (const unit of job.units) {\n for (const op of unit.create) {\n switch (op.kind) {\n case OpKind.I18nStart:\n if (op.xref === op.root) {\n const contextOp = createI18nContextOp(I18nContextKind.RootI18n, job.allocateXrefId(), op.xref, op.message, null);\n unit.create.push(contextOp);\n op.context = contextOp.xref;\n blockContextByI18nBlock.set(op.xref, contextOp);\n }\n break;\n }\n }\n }\n for (const unit of job.units) {\n for (const op of unit.create) {\n if (op.kind === OpKind.I18nStart && op.xref !== op.root) {\n const rootContext = blockContextByI18nBlock.get(op.root);\n if (rootContext === undefined) {\n throw Error('AssertionError: Root i18n block i18n context should have been created.');\n }\n op.context = rootContext.xref;\n blockContextByI18nBlock.set(op.xref, rootContext);\n }\n }\n }\n let currentI18nOp = null;\n for (const unit of job.units) {\n for (const op of unit.create) {\n switch (op.kind) {\n case OpKind.I18nStart:\n currentI18nOp = op;\n break;\n case OpKind.I18nEnd:\n currentI18nOp = null;\n break;\n case OpKind.IcuStart:\n if (currentI18nOp === null) {\n throw Error('AssertionError: Unexpected ICU outside of an i18n block.');\n }\n if (op.message.id !== currentI18nOp.message.id) {\n const contextOp = createI18nContextOp(I18nContextKind.Icu, job.allocateXrefId(), currentI18nOp.root, op.message, null);\n unit.create.push(contextOp);\n op.context = contextOp.xref;\n } else {\n op.context = currentI18nOp.context;\n blockContextByI18nBlock.get(currentI18nOp.xref).contextKind = I18nContextKind.Icu;\n }\n break;\n }\n }\n }\n}\n\nfunction deduplicateTextBindings(job) {\n const seen = new Map();\n for (const unit of job.units) {\n for (const op of unit.update.reversed()) {\n if (op.kind === OpKind.Binding && op.isTextAttribute) {\n const seenForElement = seen.get(op.target) || new Set();\n if (seenForElement.has(op.name) && (op.name === 'style' || op.name === 'class')) {\n OpList.remove(op);\n }\n seenForElement.add(op.name);\n seen.set(op.target, seenForElement);\n }\n }\n }\n}\n\nfunction configureDeferInstructions(job) {\n for (const unit of job.units) {\n for (const op of unit.create) {\n if (op.kind !== OpKind.Defer) {\n continue;\n }\n if (op.placeholderMinimumTime !== null) {\n op.placeholderConfig = new ConstCollectedExpr(literalOrArrayLiteral([op.placeholderMinimumTime]));\n }\n if (op.loadingMinimumTime !== null || op.loadingAfterTime !== null) {\n op.loadingConfig = new ConstCollectedExpr(literalOrArrayLiteral([op.loadingMinimumTime, op.loadingAfterTime]));\n }\n }\n }\n}\n\nfunction resolveDeferTargetNames(job) {\n const scopes = new Map();\n function getScopeForView(view) {\n if (scopes.has(view.xref)) {\n return scopes.get(view.xref);\n }\n const scope = new Scope$1();\n for (const op of view.create) {\n if (!isElementOrContainerOp(op) || op.localRefs === null) {\n continue;\n }\n if (!Array.isArray(op.localRefs)) {\n throw new Error('LocalRefs were already processed, but were needed to resolve defer targets.');\n }\n for (const ref of op.localRefs) {\n if (ref.target !== '') {\n continue;\n }\n scope.targets.set(ref.name, {\n xref: op.xref,\n slot: op.handle\n });\n }\n }\n scopes.set(view.xref, scope);\n return scope;\n }\n function resolveTrigger(deferOwnerView, op, placeholderView) {\n switch (op.trigger.kind) {\n case DeferTriggerKind.Idle:\n case DeferTriggerKind.Never:\n case DeferTriggerKind.Immediate:\n case DeferTriggerKind.Timer:\n return;\n case DeferTriggerKind.Hover:\n case DeferTriggerKind.Interaction:\n case DeferTriggerKind.Viewport:\n if (op.trigger.targetName === null) {\n if (placeholderView === null) {\n throw new Error('defer on trigger with no target name must have a placeholder block');\n }\n const placeholder = job.views.get(placeholderView);\n if (placeholder == undefined) {\n throw new Error('AssertionError: could not find placeholder view for defer on trigger');\n }\n for (const placeholderOp of placeholder.create) {\n if (hasConsumesSlotTrait(placeholderOp) && (isElementOrContainerOp(placeholderOp) || placeholderOp.kind === OpKind.Projection)) {\n op.trigger.targetXref = placeholderOp.xref;\n op.trigger.targetView = placeholderView;\n op.trigger.targetSlotViewSteps = -1;\n op.trigger.targetSlot = placeholderOp.handle;\n return;\n }\n }\n return;\n }\n let view = placeholderView !== null ? job.views.get(placeholderView) : deferOwnerView;\n let step = placeholderView !== null ? -1 : 0;\n while (view !== null) {\n const scope = getScopeForView(view);\n if (scope.targets.has(op.trigger.targetName)) {\n const {\n xref,\n slot\n } = scope.targets.get(op.trigger.targetName);\n op.trigger.targetXref = xref;\n op.trigger.targetView = view.xref;\n op.trigger.targetSlotViewSteps = step;\n op.trigger.targetSlot = slot;\n return;\n }\n view = view.parent !== null ? job.views.get(view.parent) : null;\n step++;\n }\n break;\n default:\n throw new Error(`Trigger kind ${op.trigger.kind} not handled`);\n }\n }\n for (const unit of job.units) {\n const defers = new Map();\n for (const op of unit.create) {\n switch (op.kind) {\n case OpKind.Defer:\n defers.set(op.xref, op);\n break;\n case OpKind.DeferOn:\n const deferOp = defers.get(op.defer);\n resolveTrigger(unit, op, op.modifier === \"hydrate\" ? deferOp.mainView : deferOp.placeholderView);\n break;\n }\n }\n }\n}\nlet Scope$1 = class Scope {\n targets = new Map();\n};\n\nconst REPLACEMENTS = new Map([[OpKind.ElementEnd, [OpKind.ElementStart, OpKind.Element]], [OpKind.ContainerEnd, [OpKind.ContainerStart, OpKind.Container]], [OpKind.I18nEnd, [OpKind.I18nStart, OpKind.I18n]]]);\nconst IGNORED_OP_KINDS = new Set([OpKind.Pipe]);\nfunction collapseEmptyInstructions(job) {\n for (const unit of job.units) {\n for (const op of unit.create) {\n const opReplacements = REPLACEMENTS.get(op.kind);\n if (opReplacements === undefined) {\n continue;\n }\n const [startKind, mergedKind] = opReplacements;\n let prevOp = op.prev;\n while (prevOp !== null && IGNORED_OP_KINDS.has(prevOp.kind)) {\n prevOp = prevOp.prev;\n }\n if (prevOp !== null && prevOp.kind === startKind) {\n prevOp.kind = mergedKind;\n OpList.remove(op);\n }\n }\n }\n}\n\nfunction expandSafeReads(job) {\n for (const unit of job.units) {\n for (const op of unit.ops()) {\n transformExpressionsInOp(op, e => safeTransform(e, {\n job\n }), VisitorContextFlag.None);\n transformExpressionsInOp(op, ternaryTransform, VisitorContextFlag.None);\n }\n }\n}\nfunction needsTemporaryInSafeAccess(e) {\n if (e instanceof UnaryOperatorExpr) {\n return needsTemporaryInSafeAccess(e.expr);\n } else if (e instanceof BinaryOperatorExpr) {\n return needsTemporaryInSafeAccess(e.lhs) || needsTemporaryInSafeAccess(e.rhs);\n } else if (e instanceof ConditionalExpr) {\n if (e.falseCase && needsTemporaryInSafeAccess(e.falseCase)) return true;\n return needsTemporaryInSafeAccess(e.condition) || needsTemporaryInSafeAccess(e.trueCase);\n } else if (e instanceof NotExpr) {\n return needsTemporaryInSafeAccess(e.condition);\n } else if (e instanceof AssignTemporaryExpr) {\n return needsTemporaryInSafeAccess(e.expr);\n } else if (e instanceof ReadPropExpr) {\n return needsTemporaryInSafeAccess(e.receiver);\n } else if (e instanceof ReadKeyExpr) {\n return needsTemporaryInSafeAccess(e.receiver) || needsTemporaryInSafeAccess(e.index);\n } else if (e instanceof ParenthesizedExpr) {\n return needsTemporaryInSafeAccess(e.expr);\n }\n return e instanceof InvokeFunctionExpr || e instanceof LiteralArrayExpr || e instanceof LiteralMapExpr || e instanceof SafeInvokeFunctionExpr || e instanceof PipeBindingExpr;\n}\nfunction temporariesIn(e) {\n const temporaries = new Set();\n transformExpressionsInExpression(e, e => {\n if (e instanceof AssignTemporaryExpr) {\n temporaries.add(e.xref);\n }\n return e;\n }, VisitorContextFlag.None);\n return temporaries;\n}\nfunction eliminateTemporaryAssignments(e, tmps, ctx) {\n transformExpressionsInExpression(e, e => {\n if (e instanceof AssignTemporaryExpr && tmps.has(e.xref)) {\n const read = new ReadTemporaryExpr(e.xref);\n return new AssignTemporaryExpr(read, read.xref);\n }\n return e;\n }, VisitorContextFlag.None);\n return e;\n}\nfunction safeTernaryWithTemporary(guard, body, ctx) {\n let result;\n if (needsTemporaryInSafeAccess(guard)) {\n const xref = ctx.job.allocateXrefId();\n result = [new AssignTemporaryExpr(guard, xref), new ReadTemporaryExpr(xref)];\n } else {\n result = [guard, guard.clone()];\n eliminateTemporaryAssignments(result[1], temporariesIn(result[0]));\n }\n return new SafeTernaryExpr(result[0], body(result[1]));\n}\nfunction isSafeAccessExpression(e) {\n return e instanceof SafePropertyReadExpr || e instanceof SafeKeyedReadExpr || e instanceof SafeInvokeFunctionExpr;\n}\nfunction isUnsafeAccessExpression(e) {\n return e instanceof ReadPropExpr || e instanceof ReadKeyExpr || e instanceof InvokeFunctionExpr;\n}\nfunction isAccessExpression(e) {\n return isSafeAccessExpression(e) || isUnsafeAccessExpression(e);\n}\nfunction deepestSafeTernary(e) {\n if (isAccessExpression(e) && e.receiver instanceof SafeTernaryExpr) {\n let st = e.receiver;\n while (st.expr instanceof SafeTernaryExpr) {\n st = st.expr;\n }\n return st;\n }\n return null;\n}\nfunction safeTransform(e, ctx) {\n if (!isAccessExpression(e)) {\n return e;\n }\n const dst = deepestSafeTernary(e);\n if (dst) {\n if (e instanceof InvokeFunctionExpr) {\n dst.expr = dst.expr.callFn(e.args);\n return e.receiver;\n }\n if (e instanceof ReadPropExpr) {\n dst.expr = dst.expr.prop(e.name);\n return e.receiver;\n }\n if (e instanceof ReadKeyExpr) {\n dst.expr = dst.expr.key(e.index);\n return e.receiver;\n }\n if (e instanceof SafeInvokeFunctionExpr) {\n dst.expr = safeTernaryWithTemporary(dst.expr, r => r.callFn(e.args), ctx);\n return e.receiver;\n }\n if (e instanceof SafePropertyReadExpr) {\n dst.expr = safeTernaryWithTemporary(dst.expr, r => r.prop(e.name), ctx);\n return e.receiver;\n }\n if (e instanceof SafeKeyedReadExpr) {\n dst.expr = safeTernaryWithTemporary(dst.expr, r => r.key(e.index), ctx);\n return e.receiver;\n }\n } else {\n if (e instanceof SafeInvokeFunctionExpr) {\n return safeTernaryWithTemporary(e.receiver, r => r.callFn(e.args), ctx);\n }\n if (e instanceof SafePropertyReadExpr) {\n return safeTernaryWithTemporary(e.receiver, r => r.prop(e.name), ctx);\n }\n if (e instanceof SafeKeyedReadExpr) {\n return safeTernaryWithTemporary(e.receiver, r => r.key(e.index), ctx);\n }\n }\n return e;\n}\nfunction ternaryTransform(e) {\n if (!(e instanceof SafeTernaryExpr)) {\n return e;\n }\n return new ParenthesizedExpr(new ConditionalExpr(new BinaryOperatorExpr(BinaryOperator.Equals, e.guard, NULL_EXPR), NULL_EXPR, e.expr));\n}\n\nconst ESCAPE$1 = '\\uFFFD';\nconst ELEMENT_MARKER = '#';\nconst TEMPLATE_MARKER = '*';\nconst TAG_CLOSE_MARKER = '/';\nconst CONTEXT_MARKER = ':';\nconst LIST_START_MARKER = '[';\nconst LIST_END_MARKER = ']';\nconst LIST_DELIMITER = '|';\nfunction extractI18nMessages(job) {\n const i18nMessagesByContext = new Map();\n const i18nBlocks = new Map();\n const i18nContexts = new Map();\n for (const unit of job.units) {\n for (const op of unit.create) {\n switch (op.kind) {\n case OpKind.I18nContext:\n const i18nMessageOp = createI18nMessage(job, op);\n unit.create.push(i18nMessageOp);\n i18nMessagesByContext.set(op.xref, i18nMessageOp);\n i18nContexts.set(op.xref, op);\n break;\n case OpKind.I18nStart:\n i18nBlocks.set(op.xref, op);\n break;\n }\n }\n }\n let currentIcu = null;\n for (const unit of job.units) {\n for (const op of unit.create) {\n switch (op.kind) {\n case OpKind.IcuStart:\n currentIcu = op;\n OpList.remove(op);\n const icuContext = i18nContexts.get(op.context);\n if (icuContext.contextKind !== I18nContextKind.Icu) {\n continue;\n }\n const i18nBlock = i18nBlocks.get(icuContext.i18nBlock);\n if (i18nBlock.context === icuContext.xref) {\n continue;\n }\n const rootI18nBlock = i18nBlocks.get(i18nBlock.root);\n const rootMessage = i18nMessagesByContext.get(rootI18nBlock.context);\n if (rootMessage === undefined) {\n throw Error('AssertionError: ICU sub-message should belong to a root message.');\n }\n const subMessage = i18nMessagesByContext.get(icuContext.xref);\n subMessage.messagePlaceholder = op.messagePlaceholder;\n rootMessage.subMessages.push(subMessage.xref);\n break;\n case OpKind.IcuEnd:\n currentIcu = null;\n OpList.remove(op);\n break;\n case OpKind.IcuPlaceholder:\n if (currentIcu === null || currentIcu.context == null) {\n throw Error('AssertionError: Unexpected ICU placeholder outside of i18n context');\n }\n const msg = i18nMessagesByContext.get(currentIcu.context);\n msg.postprocessingParams.set(op.name, literal(formatIcuPlaceholder(op)));\n OpList.remove(op);\n break;\n }\n }\n }\n}\nfunction createI18nMessage(job, context, messagePlaceholder) {\n let formattedParams = formatParams(context.params);\n const formattedPostprocessingParams = formatParams(context.postprocessingParams);\n let needsPostprocessing = [...context.params.values()].some(v => v.length > 1);\n return createI18nMessageOp(job.allocateXrefId(), context.xref, context.i18nBlock, context.message, null, formattedParams, formattedPostprocessingParams, needsPostprocessing);\n}\nfunction formatIcuPlaceholder(op) {\n if (op.strings.length !== op.expressionPlaceholders.length + 1) {\n throw Error(`AssertionError: Invalid ICU placeholder with ${op.strings.length} strings and ${op.expressionPlaceholders.length} expressions`);\n }\n const values = op.expressionPlaceholders.map(formatValue);\n return op.strings.flatMap((str, i) => [str, values[i] || '']).join('');\n}\nfunction formatParams(params) {\n const formattedParams = new Map();\n for (const [placeholder, placeholderValues] of params) {\n const serializedValues = formatParamValues(placeholderValues);\n if (serializedValues !== null) {\n formattedParams.set(placeholder, literal(serializedValues));\n }\n }\n return formattedParams;\n}\nfunction formatParamValues(values) {\n if (values.length === 0) {\n return null;\n }\n const serializedValues = values.map(value => formatValue(value));\n return serializedValues.length === 1 ? serializedValues[0] : `${LIST_START_MARKER}${serializedValues.join(LIST_DELIMITER)}${LIST_END_MARKER}`;\n}\nfunction formatValue(value) {\n if (value.flags & I18nParamValueFlags.ElementTag && value.flags & I18nParamValueFlags.TemplateTag) {\n if (typeof value.value !== 'object') {\n throw Error('AssertionError: Expected i18n param value to have an element and template slot');\n }\n const elementValue = formatValue({\n ...value,\n value: value.value.element,\n flags: value.flags & ~I18nParamValueFlags.TemplateTag\n });\n const templateValue = formatValue({\n ...value,\n value: value.value.template,\n flags: value.flags & ~I18nParamValueFlags.ElementTag\n });\n if (value.flags & I18nParamValueFlags.OpenTag && value.flags & I18nParamValueFlags.CloseTag) {\n return `${templateValue}${elementValue}${templateValue}`;\n }\n return value.flags & I18nParamValueFlags.CloseTag ? `${elementValue}${templateValue}` : `${templateValue}${elementValue}`;\n }\n if (value.flags & I18nParamValueFlags.OpenTag && value.flags & I18nParamValueFlags.CloseTag) {\n return `${formatValue({\n ...value,\n flags: value.flags & ~I18nParamValueFlags.CloseTag\n })}${formatValue({\n ...value,\n flags: value.flags & ~I18nParamValueFlags.OpenTag\n })}`;\n }\n if (value.flags === I18nParamValueFlags.None) {\n return `${value.value}`;\n }\n let tagMarker = '';\n let closeMarker = '';\n if (value.flags & I18nParamValueFlags.ElementTag) {\n tagMarker = ELEMENT_MARKER;\n } else if (value.flags & I18nParamValueFlags.TemplateTag) {\n tagMarker = TEMPLATE_MARKER;\n }\n if (tagMarker !== '') {\n closeMarker = value.flags & I18nParamValueFlags.CloseTag ? TAG_CLOSE_MARKER : '';\n }\n const context = value.subTemplateIndex === null ? '' : `${CONTEXT_MARKER}${value.subTemplateIndex}`;\n return `${ESCAPE$1}${closeMarker}${tagMarker}${value.value}${context}${ESCAPE$1}`;\n}\n\nfunction generateAdvance(job) {\n for (const unit of job.units) {\n const slotMap = new Map();\n for (const op of unit.create) {\n if (!hasConsumesSlotTrait(op)) {\n continue;\n } else if (op.handle.slot === null) {\n throw new Error(`AssertionError: expected slots to have been allocated before generating advance() calls`);\n }\n slotMap.set(op.xref, op.handle.slot);\n }\n let slotContext = 0;\n for (const op of unit.update) {\n let consumer = null;\n if (hasDependsOnSlotContextTrait(op)) {\n consumer = op;\n } else {\n visitExpressionsInOp(op, expr => {\n if (consumer === null && hasDependsOnSlotContextTrait(expr)) {\n consumer = expr;\n }\n });\n }\n if (consumer === null) {\n continue;\n }\n if (!slotMap.has(consumer.target)) {\n throw new Error(`AssertionError: reference to unknown slot for target ${consumer.target}`);\n }\n const slot = slotMap.get(consumer.target);\n if (slotContext !== slot) {\n const delta = slot - slotContext;\n if (delta < 0) {\n throw new Error(`AssertionError: slot counter should never need to move backwards`);\n }\n OpList.insertBefore(createAdvanceOp(delta, consumer.sourceSpan), op);\n slotContext = slot;\n }\n }\n }\n}\n\nfunction generateLocalLetReferences(job) {\n for (const unit of job.units) {\n for (const op of unit.update) {\n if (op.kind !== OpKind.StoreLet) {\n continue;\n }\n const variable = {\n kind: SemanticVariableKind.Identifier,\n name: null,\n identifier: op.declaredName,\n local: true\n };\n OpList.replace(op, createVariableOp(job.allocateXrefId(), variable, new StoreLetExpr(op.target, op.value, op.sourceSpan), VariableFlags.None));\n }\n }\n}\n\nfunction generateProjectionDefs(job) {\n const share = true;\n const selectors = [];\n let projectionSlotIndex = 0;\n for (const unit of job.units) {\n for (const op of unit.create) {\n if (op.kind === OpKind.Projection) {\n selectors.push(op.selector);\n op.projectionSlotIndex = projectionSlotIndex++;\n }\n }\n }\n if (selectors.length > 0) {\n let defExpr = null;\n if (selectors.length > 1 || selectors[0] !== '*') {\n const def = selectors.map(s => s === '*' ? s : parseSelectorToR3Selector(s));\n defExpr = job.pool.getConstLiteral(literalOrArrayLiteral(def), share);\n }\n job.contentSelectors = job.pool.getConstLiteral(literalOrArrayLiteral(selectors), share);\n job.root.create.prepend([createProjectionDefOp(defExpr)]);\n }\n}\n\nfunction generateVariables(job) {\n recursivelyProcessView(job.root, null);\n}\nfunction recursivelyProcessView(view, parentScope) {\n const scope = getScopeForView(view, parentScope);\n for (const op of view.create) {\n switch (op.kind) {\n case OpKind.ConditionalCreate:\n case OpKind.ConditionalBranchCreate:\n case OpKind.Template:\n recursivelyProcessView(view.job.views.get(op.xref), scope);\n break;\n case OpKind.Projection:\n if (op.fallbackView !== null) {\n recursivelyProcessView(view.job.views.get(op.fallbackView), scope);\n }\n break;\n case OpKind.RepeaterCreate:\n recursivelyProcessView(view.job.views.get(op.xref), scope);\n if (op.emptyView) {\n recursivelyProcessView(view.job.views.get(op.emptyView), scope);\n }\n if (op.trackByOps !== null) {\n op.trackByOps.prepend(generateVariablesInScopeForView(view, scope, false));\n }\n break;\n case OpKind.Animation:\n case OpKind.AnimationListener:\n case OpKind.Listener:\n case OpKind.TwoWayListener:\n op.handlerOps.prepend(generateVariablesInScopeForView(view, scope, true));\n break;\n }\n }\n view.update.prepend(generateVariablesInScopeForView(view, scope, false));\n for (const expr of view.functions) {\n expr.ops.prepend(generateVariablesInScopeForView(view, getScopeForView(view, parentScope), true));\n }\n}\nfunction getScopeForView(view, parent) {\n const scope = {\n view: view.xref,\n viewContextVariable: {\n kind: SemanticVariableKind.Context,\n name: null,\n view: view.xref\n },\n contextVariables: new Map(),\n aliases: view.aliases,\n references: [],\n letDeclarations: [],\n parent\n };\n for (const identifier of view.contextVariables.keys()) {\n scope.contextVariables.set(identifier, {\n kind: SemanticVariableKind.Identifier,\n name: null,\n identifier,\n local: false\n });\n }\n for (const op of view.create) {\n switch (op.kind) {\n case OpKind.ElementStart:\n case OpKind.ConditionalCreate:\n case OpKind.ConditionalBranchCreate:\n case OpKind.Template:\n if (!Array.isArray(op.localRefs)) {\n throw new Error(`AssertionError: expected localRefs to be an array`);\n }\n for (let offset = 0; offset < op.localRefs.length; offset++) {\n scope.references.push({\n name: op.localRefs[offset].name,\n targetId: op.xref,\n targetSlot: op.handle,\n offset,\n variable: {\n kind: SemanticVariableKind.Identifier,\n name: null,\n identifier: op.localRefs[offset].name,\n local: false\n }\n });\n }\n break;\n case OpKind.DeclareLet:\n scope.letDeclarations.push({\n targetId: op.xref,\n targetSlot: op.handle,\n variable: {\n kind: SemanticVariableKind.Identifier,\n name: null,\n identifier: op.declaredName,\n local: false\n }\n });\n break;\n }\n }\n return scope;\n}\nfunction generateVariablesInScopeForView(view, scope, isCallback) {\n const newOps = [];\n if (scope.view !== view.xref) {\n newOps.push(createVariableOp(view.job.allocateXrefId(), scope.viewContextVariable, new NextContextExpr(), VariableFlags.None));\n }\n const scopeView = view.job.views.get(scope.view);\n for (const [name, value] of scopeView.contextVariables) {\n const context = new ContextExpr(scope.view);\n const variable = value === CTX_REF ? context : new ReadPropExpr(context, value);\n newOps.push(createVariableOp(view.job.allocateXrefId(), scope.contextVariables.get(name), variable, VariableFlags.None));\n }\n for (const alias of scopeView.aliases) {\n newOps.push(createVariableOp(view.job.allocateXrefId(), alias, alias.expression.clone(), VariableFlags.AlwaysInline));\n }\n for (const ref of scope.references) {\n newOps.push(createVariableOp(view.job.allocateXrefId(), ref.variable, new ReferenceExpr(ref.targetId, ref.targetSlot, ref.offset), VariableFlags.None));\n }\n if (scope.view !== view.xref || isCallback) {\n for (const decl of scope.letDeclarations) {\n newOps.push(createVariableOp(view.job.allocateXrefId(), decl.variable, new ContextLetReferenceExpr(decl.targetId, decl.targetSlot), VariableFlags.None));\n }\n }\n if (scope.parent !== null) {\n newOps.push(...generateVariablesInScopeForView(view, scope.parent, false));\n }\n return newOps;\n}\n\nfunction collectConstExpressions(job) {\n for (const unit of job.units) {\n for (const op of unit.ops()) {\n transformExpressionsInOp(op, expr => {\n if (!(expr instanceof ConstCollectedExpr)) {\n return expr;\n }\n return literal(job.addConst(expr.expr));\n }, VisitorContextFlag.None);\n }\n }\n}\n\nconst STYLE_DOT = 'style.';\nconst CLASS_DOT = 'class.';\nconst STYLE_BANG = 'style!';\nconst CLASS_BANG = 'class!';\nconst BANG_IMPORTANT = '!important';\nfunction parseHostStyleProperties(job) {\n for (const op of job.root.update) {\n if (!(op.kind === OpKind.Binding && op.bindingKind === BindingKind.Property)) {\n continue;\n }\n if (op.name.endsWith(BANG_IMPORTANT)) {\n op.name = op.name.substring(0, op.name.length - BANG_IMPORTANT.length);\n }\n if (op.name.startsWith(STYLE_DOT)) {\n op.bindingKind = BindingKind.StyleProperty;\n op.name = op.name.substring(STYLE_DOT.length);\n if (!isCssCustomProperty(op.name)) {\n op.name = hyphenate$1(op.name);\n }\n const {\n property,\n suffix\n } = parseProperty(op.name);\n op.name = property;\n op.unit = suffix;\n } else if (op.name.startsWith(STYLE_BANG)) {\n op.bindingKind = BindingKind.StyleProperty;\n op.name = 'style';\n } else if (op.name.startsWith(CLASS_DOT)) {\n op.bindingKind = BindingKind.ClassName;\n op.name = parseProperty(op.name.substring(CLASS_DOT.length)).property;\n } else if (op.name.startsWith(CLASS_BANG)) {\n op.bindingKind = BindingKind.ClassName;\n op.name = parseProperty(op.name.substring(CLASS_BANG.length)).property;\n }\n }\n}\nfunction isCssCustomProperty(name) {\n return name.startsWith('--');\n}\nfunction hyphenate$1(value) {\n return value.replace(/[a-z][A-Z]/g, v => {\n return v.charAt(0) + '-' + v.charAt(1);\n }).toLowerCase();\n}\nfunction parseProperty(name) {\n const overrideIndex = name.indexOf('!important');\n if (overrideIndex !== -1) {\n name = overrideIndex > 0 ? name.substring(0, overrideIndex) : '';\n }\n let suffix = null;\n let property = name;\n const unitIndex = name.lastIndexOf('.');\n if (unitIndex > 0) {\n suffix = name.slice(unitIndex + 1);\n property = name.substring(0, unitIndex);\n }\n return {\n property,\n suffix\n };\n}\n\nfunction mapLiteral(obj, quoted = false) {\n return literalMap(Object.keys(obj).map(key => ({\n key,\n quoted,\n value: obj[key]\n })));\n}\n\nclass IcuSerializerVisitor {\n visitText(text) {\n return text.value;\n }\n visitContainer(container) {\n return container.children.map(child => child.visit(this)).join('');\n }\n visitIcu(icu) {\n const strCases = Object.keys(icu.cases).map(k => `${k} {${icu.cases[k].visit(this)}}`);\n const result = `{${icu.expressionPlaceholder}, ${icu.type}, ${strCases.join(' ')}}`;\n return result;\n }\n visitTagPlaceholder(ph) {\n return ph.isVoid ? this.formatPh(ph.startName) : `${this.formatPh(ph.startName)}${ph.children.map(child => child.visit(this)).join('')}${this.formatPh(ph.closeName)}`;\n }\n visitPlaceholder(ph) {\n return this.formatPh(ph.name);\n }\n visitBlockPlaceholder(ph) {\n return `${this.formatPh(ph.startName)}${ph.children.map(child => child.visit(this)).join('')}${this.formatPh(ph.closeName)}`;\n }\n visitIcuPlaceholder(ph, context) {\n return this.formatPh(ph.name);\n }\n formatPh(value) {\n return `{${formatI18nPlaceholderName(value, false)}}`;\n }\n}\nconst serializer = new IcuSerializerVisitor();\nfunction serializeIcuNode(icu) {\n return icu.visit(serializer);\n}\n\nclass NodeWithI18n {\n sourceSpan;\n i18n;\n constructor(sourceSpan, i18n) {\n this.sourceSpan = sourceSpan;\n this.i18n = i18n;\n }\n}\nclass Text extends NodeWithI18n {\n value;\n tokens;\n constructor(value, sourceSpan, tokens, i18n) {\n super(sourceSpan, i18n);\n this.value = value;\n this.tokens = tokens;\n }\n visit(visitor, context) {\n return visitor.visitText(this, context);\n }\n}\nclass Expansion extends NodeWithI18n {\n switchValue;\n type;\n cases;\n switchValueSourceSpan;\n constructor(switchValue, type, cases, sourceSpan, switchValueSourceSpan, i18n) {\n super(sourceSpan, i18n);\n this.switchValue = switchValue;\n this.type = type;\n this.cases = cases;\n this.switchValueSourceSpan = switchValueSourceSpan;\n }\n visit(visitor, context) {\n return visitor.visitExpansion(this, context);\n }\n}\nclass ExpansionCase {\n value;\n expression;\n sourceSpan;\n valueSourceSpan;\n expSourceSpan;\n constructor(value, expression, sourceSpan, valueSourceSpan, expSourceSpan) {\n this.value = value;\n this.expression = expression;\n this.sourceSpan = sourceSpan;\n this.valueSourceSpan = valueSourceSpan;\n this.expSourceSpan = expSourceSpan;\n }\n visit(visitor, context) {\n return visitor.visitExpansionCase(this, context);\n }\n}\nclass Attribute extends NodeWithI18n {\n name;\n value;\n keySpan;\n valueSpan;\n valueTokens;\n constructor(name, value, sourceSpan, keySpan, valueSpan, valueTokens, i18n) {\n super(sourceSpan, i18n);\n this.name = name;\n this.value = value;\n this.keySpan = keySpan;\n this.valueSpan = valueSpan;\n this.valueTokens = valueTokens;\n }\n visit(visitor, context) {\n return visitor.visitAttribute(this, context);\n }\n}\nclass Element extends NodeWithI18n {\n name;\n attrs;\n directives;\n children;\n isSelfClosing;\n startSourceSpan;\n endSourceSpan;\n isVoid;\n constructor(name, attrs, directives, children, isSelfClosing, sourceSpan, startSourceSpan, endSourceSpan = null, isVoid, i18n) {\n super(sourceSpan, i18n);\n this.name = name;\n this.attrs = attrs;\n this.directives = directives;\n this.children = children;\n this.isSelfClosing = isSelfClosing;\n this.startSourceSpan = startSourceSpan;\n this.endSourceSpan = endSourceSpan;\n this.isVoid = isVoid;\n }\n visit(visitor, context) {\n return visitor.visitElement(this, context);\n }\n}\nclass Comment {\n value;\n sourceSpan;\n constructor(value, sourceSpan) {\n this.value = value;\n this.sourceSpan = sourceSpan;\n }\n visit(visitor, context) {\n return visitor.visitComment(this, context);\n }\n}\nclass Block extends NodeWithI18n {\n name;\n parameters;\n children;\n nameSpan;\n startSourceSpan;\n endSourceSpan;\n constructor(name, parameters, children, sourceSpan, nameSpan, startSourceSpan, endSourceSpan = null, i18n) {\n super(sourceSpan, i18n);\n this.name = name;\n this.parameters = parameters;\n this.children = children;\n this.nameSpan = nameSpan;\n this.startSourceSpan = startSourceSpan;\n this.endSourceSpan = endSourceSpan;\n }\n visit(visitor, context) {\n return visitor.visitBlock(this, context);\n }\n}\nclass Component extends NodeWithI18n {\n componentName;\n tagName;\n fullName;\n attrs;\n directives;\n children;\n isSelfClosing;\n startSourceSpan;\n endSourceSpan;\n constructor(componentName, tagName, fullName, attrs, directives, children, isSelfClosing, sourceSpan, startSourceSpan, endSourceSpan = null, i18n) {\n super(sourceSpan, i18n);\n this.componentName = componentName;\n this.tagName = tagName;\n this.fullName = fullName;\n this.attrs = attrs;\n this.directives = directives;\n this.children = children;\n this.isSelfClosing = isSelfClosing;\n this.startSourceSpan = startSourceSpan;\n this.endSourceSpan = endSourceSpan;\n }\n visit(visitor, context) {\n return visitor.visitComponent(this, context);\n }\n}\nclass Directive {\n name;\n attrs;\n sourceSpan;\n startSourceSpan;\n endSourceSpan;\n constructor(name, attrs, sourceSpan, startSourceSpan, endSourceSpan = null) {\n this.name = name;\n this.attrs = attrs;\n this.sourceSpan = sourceSpan;\n this.startSourceSpan = startSourceSpan;\n this.endSourceSpan = endSourceSpan;\n }\n visit(visitor, context) {\n return visitor.visitDirective(this, context);\n }\n}\nclass BlockParameter {\n expression;\n sourceSpan;\n constructor(expression, sourceSpan) {\n this.expression = expression;\n this.sourceSpan = sourceSpan;\n }\n visit(visitor, context) {\n return visitor.visitBlockParameter(this, context);\n }\n}\nclass LetDeclaration {\n name;\n value;\n sourceSpan;\n nameSpan;\n valueSpan;\n constructor(name, value, sourceSpan, nameSpan, valueSpan) {\n this.name = name;\n this.value = value;\n this.sourceSpan = sourceSpan;\n this.nameSpan = nameSpan;\n this.valueSpan = valueSpan;\n }\n visit(visitor, context) {\n return visitor.visitLetDeclaration(this, context);\n }\n}\nfunction visitAll(visitor, nodes, context = null) {\n const result = [];\n const visit = visitor.visit ? ast => visitor.visit(ast, context) || ast.visit(visitor, context) : ast => ast.visit(visitor, context);\n nodes.forEach(ast => {\n const astResult = visit(ast);\n if (astResult) {\n result.push(astResult);\n }\n });\n return result;\n}\nclass RecursiveVisitor {\n constructor() {}\n visitElement(ast, context) {\n this.visitChildren(context, visit => {\n visit(ast.attrs);\n visit(ast.directives);\n visit(ast.children);\n });\n }\n visitAttribute(ast, context) {}\n visitText(ast, context) {}\n visitComment(ast, context) {}\n visitExpansion(ast, context) {\n return this.visitChildren(context, visit => {\n visit(ast.cases);\n });\n }\n visitExpansionCase(ast, context) {}\n visitBlock(block, context) {\n this.visitChildren(context, visit => {\n visit(block.parameters);\n visit(block.children);\n });\n }\n visitBlockParameter(ast, context) {}\n visitLetDeclaration(decl, context) {}\n visitComponent(component, context) {\n this.visitChildren(context, visit => {\n visit(component.attrs);\n visit(component.children);\n });\n }\n visitDirective(directive, context) {\n this.visitChildren(context, visit => {\n visit(directive.attrs);\n });\n }\n visitChildren(context, cb) {\n let results = [];\n let t = this;\n function visit(children) {\n if (children) results.push(visitAll(t, children, context));\n }\n cb(visit);\n return Array.prototype.concat.apply([], results);\n }\n}\n\nconst NAMED_ENTITIES = {\n 'AElig': '\\u00C6',\n 'AMP': '\\u0026',\n 'amp': '\\u0026',\n 'Aacute': '\\u00C1',\n 'Abreve': '\\u0102',\n 'Acirc': '\\u00C2',\n 'Acy': '\\u0410',\n 'Afr': '\\uD835\\uDD04',\n 'Agrave': '\\u00C0',\n 'Alpha': '\\u0391',\n 'Amacr': '\\u0100',\n 'And': '\\u2A53',\n 'Aogon': '\\u0104',\n 'Aopf': '\\uD835\\uDD38',\n 'ApplyFunction': '\\u2061',\n 'af': '\\u2061',\n 'Aring': '\\u00C5',\n 'angst': '\\u00C5',\n 'Ascr': '\\uD835\\uDC9C',\n 'Assign': '\\u2254',\n 'colone': '\\u2254',\n 'coloneq': '\\u2254',\n 'Atilde': '\\u00C3',\n 'Auml': '\\u00C4',\n 'Backslash': '\\u2216',\n 'setminus': '\\u2216',\n 'setmn': '\\u2216',\n 'smallsetminus': '\\u2216',\n 'ssetmn': '\\u2216',\n 'Barv': '\\u2AE7',\n 'Barwed': '\\u2306',\n 'doublebarwedge': '\\u2306',\n 'Bcy': '\\u0411',\n 'Because': '\\u2235',\n 'becaus': '\\u2235',\n 'because': '\\u2235',\n 'Bernoullis': '\\u212C',\n 'Bscr': '\\u212C',\n 'bernou': '\\u212C',\n 'Beta': '\\u0392',\n 'Bfr': '\\uD835\\uDD05',\n 'Bopf': '\\uD835\\uDD39',\n 'Breve': '\\u02D8',\n 'breve': '\\u02D8',\n 'Bumpeq': '\\u224E',\n 'HumpDownHump': '\\u224E',\n 'bump': '\\u224E',\n 'CHcy': '\\u0427',\n 'COPY': '\\u00A9',\n 'copy': '\\u00A9',\n 'Cacute': '\\u0106',\n 'Cap': '\\u22D2',\n 'CapitalDifferentialD': '\\u2145',\n 'DD': '\\u2145',\n 'Cayleys': '\\u212D',\n 'Cfr': '\\u212D',\n 'Ccaron': '\\u010C',\n 'Ccedil': '\\u00C7',\n 'Ccirc': '\\u0108',\n 'Cconint': '\\u2230',\n 'Cdot': '\\u010A',\n 'Cedilla': '\\u00B8',\n 'cedil': '\\u00B8',\n 'CenterDot': '\\u00B7',\n 'centerdot': '\\u00B7',\n 'middot': '\\u00B7',\n 'Chi': '\\u03A7',\n 'CircleDot': '\\u2299',\n 'odot': '\\u2299',\n 'CircleMinus': '\\u2296',\n 'ominus': '\\u2296',\n 'CirclePlus': '\\u2295',\n 'oplus': '\\u2295',\n 'CircleTimes': '\\u2297',\n 'otimes': '\\u2297',\n 'ClockwiseContourIntegral': '\\u2232',\n 'cwconint': '\\u2232',\n 'CloseCurlyDoubleQuote': '\\u201D',\n 'rdquo': '\\u201D',\n 'rdquor': '\\u201D',\n 'CloseCurlyQuote': '\\u2019',\n 'rsquo': '\\u2019',\n 'rsquor': '\\u2019',\n 'Colon': '\\u2237',\n 'Proportion': '\\u2237',\n 'Colone': '\\u2A74',\n 'Congruent': '\\u2261',\n 'equiv': '\\u2261',\n 'Conint': '\\u222F',\n 'DoubleContourIntegral': '\\u222F',\n 'ContourIntegral': '\\u222E',\n 'conint': '\\u222E',\n 'oint': '\\u222E',\n 'Copf': '\\u2102',\n 'complexes': '\\u2102',\n 'Coproduct': '\\u2210',\n 'coprod': '\\u2210',\n 'CounterClockwiseContourIntegral': '\\u2233',\n 'awconint': '\\u2233',\n 'Cross': '\\u2A2F',\n 'Cscr': '\\uD835\\uDC9E',\n 'Cup': '\\u22D3',\n 'CupCap': '\\u224D',\n 'asympeq': '\\u224D',\n 'DDotrahd': '\\u2911',\n 'DJcy': '\\u0402',\n 'DScy': '\\u0405',\n 'DZcy': '\\u040F',\n 'Dagger': '\\u2021',\n 'ddagger': '\\u2021',\n 'Darr': '\\u21A1',\n 'Dashv': '\\u2AE4',\n 'DoubleLeftTee': '\\u2AE4',\n 'Dcaron': '\\u010E',\n 'Dcy': '\\u0414',\n 'Del': '\\u2207',\n 'nabla': '\\u2207',\n 'Delta': '\\u0394',\n 'Dfr': '\\uD835\\uDD07',\n 'DiacriticalAcute': '\\u00B4',\n 'acute': '\\u00B4',\n 'DiacriticalDot': '\\u02D9',\n 'dot': '\\u02D9',\n 'DiacriticalDoubleAcute': '\\u02DD',\n 'dblac': '\\u02DD',\n 'DiacriticalGrave': '\\u0060',\n 'grave': '\\u0060',\n 'DiacriticalTilde': '\\u02DC',\n 'tilde': '\\u02DC',\n 'Diamond': '\\u22C4',\n 'diam': '\\u22C4',\n 'diamond': '\\u22C4',\n 'DifferentialD': '\\u2146',\n 'dd': '\\u2146',\n 'Dopf': '\\uD835\\uDD3B',\n 'Dot': '\\u00A8',\n 'DoubleDot': '\\u00A8',\n 'die': '\\u00A8',\n 'uml': '\\u00A8',\n 'DotDot': '\\u20DC',\n 'DotEqual': '\\u2250',\n 'doteq': '\\u2250',\n 'esdot': '\\u2250',\n 'DoubleDownArrow': '\\u21D3',\n 'Downarrow': '\\u21D3',\n 'dArr': '\\u21D3',\n 'DoubleLeftArrow': '\\u21D0',\n 'Leftarrow': '\\u21D0',\n 'lArr': '\\u21D0',\n 'DoubleLeftRightArrow': '\\u21D4',\n 'Leftrightarrow': '\\u21D4',\n 'hArr': '\\u21D4',\n 'iff': '\\u21D4',\n 'DoubleLongLeftArrow': '\\u27F8',\n 'Longleftarrow': '\\u27F8',\n 'xlArr': '\\u27F8',\n 'DoubleLongLeftRightArrow': '\\u27FA',\n 'Longleftrightarrow': '\\u27FA',\n 'xhArr': '\\u27FA',\n 'DoubleLongRightArrow': '\\u27F9',\n 'Longrightarrow': '\\u27F9',\n 'xrArr': '\\u27F9',\n 'DoubleRightArrow': '\\u21D2',\n 'Implies': '\\u21D2',\n 'Rightarrow': '\\u21D2',\n 'rArr': '\\u21D2',\n 'DoubleRightTee': '\\u22A8',\n 'vDash': '\\u22A8',\n 'DoubleUpArrow': '\\u21D1',\n 'Uparrow': '\\u21D1',\n 'uArr': '\\u21D1',\n 'DoubleUpDownArrow': '\\u21D5',\n 'Updownarrow': '\\u21D5',\n 'vArr': '\\u21D5',\n 'DoubleVerticalBar': '\\u2225',\n 'par': '\\u2225',\n 'parallel': '\\u2225',\n 'shortparallel': '\\u2225',\n 'spar': '\\u2225',\n 'DownArrow': '\\u2193',\n 'ShortDownArrow': '\\u2193',\n 'darr': '\\u2193',\n 'downarrow': '\\u2193',\n 'DownArrowBar': '\\u2913',\n 'DownArrowUpArrow': '\\u21F5',\n 'duarr': '\\u21F5',\n 'DownBreve': '\\u0311',\n 'DownLeftRightVector': '\\u2950',\n 'DownLeftTeeVector': '\\u295E',\n 'DownLeftVector': '\\u21BD',\n 'leftharpoondown': '\\u21BD',\n 'lhard': '\\u21BD',\n 'DownLeftVectorBar': '\\u2956',\n 'DownRightTeeVector': '\\u295F',\n 'DownRightVector': '\\u21C1',\n 'rhard': '\\u21C1',\n 'rightharpoondown': '\\u21C1',\n 'DownRightVectorBar': '\\u2957',\n 'DownTee': '\\u22A4',\n 'top': '\\u22A4',\n 'DownTeeArrow': '\\u21A7',\n 'mapstodown': '\\u21A7',\n 'Dscr': '\\uD835\\uDC9F',\n 'Dstrok': '\\u0110',\n 'ENG': '\\u014A',\n 'ETH': '\\u00D0',\n 'Eacute': '\\u00C9',\n 'Ecaron': '\\u011A',\n 'Ecirc': '\\u00CA',\n 'Ecy': '\\u042D',\n 'Edot': '\\u0116',\n 'Efr': '\\uD835\\uDD08',\n 'Egrave': '\\u00C8',\n 'Element': '\\u2208',\n 'in': '\\u2208',\n 'isin': '\\u2208',\n 'isinv': '\\u2208',\n 'Emacr': '\\u0112',\n 'EmptySmallSquare': '\\u25FB',\n 'EmptyVerySmallSquare': '\\u25AB',\n 'Eogon': '\\u0118',\n 'Eopf': '\\uD835\\uDD3C',\n 'Epsilon': '\\u0395',\n 'Equal': '\\u2A75',\n 'EqualTilde': '\\u2242',\n 'eqsim': '\\u2242',\n 'esim': '\\u2242',\n 'Equilibrium': '\\u21CC',\n 'rightleftharpoons': '\\u21CC',\n 'rlhar': '\\u21CC',\n 'Escr': '\\u2130',\n 'expectation': '\\u2130',\n 'Esim': '\\u2A73',\n 'Eta': '\\u0397',\n 'Euml': '\\u00CB',\n 'Exists': '\\u2203',\n 'exist': '\\u2203',\n 'ExponentialE': '\\u2147',\n 'ee': '\\u2147',\n 'exponentiale': '\\u2147',\n 'Fcy': '\\u0424',\n 'Ffr': '\\uD835\\uDD09',\n 'FilledSmallSquare': '\\u25FC',\n 'FilledVerySmallSquare': '\\u25AA',\n 'blacksquare': '\\u25AA',\n 'squarf': '\\u25AA',\n 'squf': '\\u25AA',\n 'Fopf': '\\uD835\\uDD3D',\n 'ForAll': '\\u2200',\n 'forall': '\\u2200',\n 'Fouriertrf': '\\u2131',\n 'Fscr': '\\u2131',\n 'GJcy': '\\u0403',\n 'GT': '\\u003E',\n 'gt': '\\u003E',\n 'Gamma': '\\u0393',\n 'Gammad': '\\u03DC',\n 'Gbreve': '\\u011E',\n 'Gcedil': '\\u0122',\n 'Gcirc': '\\u011C',\n 'Gcy': '\\u0413',\n 'Gdot': '\\u0120',\n 'Gfr': '\\uD835\\uDD0A',\n 'Gg': '\\u22D9',\n 'ggg': '\\u22D9',\n 'Gopf': '\\uD835\\uDD3E',\n 'GreaterEqual': '\\u2265',\n 'ge': '\\u2265',\n 'geq': '\\u2265',\n 'GreaterEqualLess': '\\u22DB',\n 'gel': '\\u22DB',\n 'gtreqless': '\\u22DB',\n 'GreaterFullEqual': '\\u2267',\n 'gE': '\\u2267',\n 'geqq': '\\u2267',\n 'GreaterGreater': '\\u2AA2',\n 'GreaterLess': '\\u2277',\n 'gl': '\\u2277',\n 'gtrless': '\\u2277',\n 'GreaterSlantEqual': '\\u2A7E',\n 'geqslant': '\\u2A7E',\n 'ges': '\\u2A7E',\n 'GreaterTilde': '\\u2273',\n 'gsim': '\\u2273',\n 'gtrsim': '\\u2273',\n 'Gscr': '\\uD835\\uDCA2',\n 'Gt': '\\u226B',\n 'NestedGreaterGreater': '\\u226B',\n 'gg': '\\u226B',\n 'HARDcy': '\\u042A',\n 'Hacek': '\\u02C7',\n 'caron': '\\u02C7',\n 'Hat': '\\u005E',\n 'Hcirc': '\\u0124',\n 'Hfr': '\\u210C',\n 'Poincareplane': '\\u210C',\n 'HilbertSpace': '\\u210B',\n 'Hscr': '\\u210B',\n 'hamilt': '\\u210B',\n 'Hopf': '\\u210D',\n 'quaternions': '\\u210D',\n 'HorizontalLine': '\\u2500',\n 'boxh': '\\u2500',\n 'Hstrok': '\\u0126',\n 'HumpEqual': '\\u224F',\n 'bumpe': '\\u224F',\n 'bumpeq': '\\u224F',\n 'IEcy': '\\u0415',\n 'IJlig': '\\u0132',\n 'IOcy': '\\u0401',\n 'Iacute': '\\u00CD',\n 'Icirc': '\\u00CE',\n 'Icy': '\\u0418',\n 'Idot': '\\u0130',\n 'Ifr': '\\u2111',\n 'Im': '\\u2111',\n 'image': '\\u2111',\n 'imagpart': '\\u2111',\n 'Igrave': '\\u00CC',\n 'Imacr': '\\u012A',\n 'ImaginaryI': '\\u2148',\n 'ii': '\\u2148',\n 'Int': '\\u222C',\n 'Integral': '\\u222B',\n 'int': '\\u222B',\n 'Intersection': '\\u22C2',\n 'bigcap': '\\u22C2',\n 'xcap': '\\u22C2',\n 'InvisibleComma': '\\u2063',\n 'ic': '\\u2063',\n 'InvisibleTimes': '\\u2062',\n 'it': '\\u2062',\n 'Iogon': '\\u012E',\n 'Iopf': '\\uD835\\uDD40',\n 'Iota': '\\u0399',\n 'Iscr': '\\u2110',\n 'imagline': '\\u2110',\n 'Itilde': '\\u0128',\n 'Iukcy': '\\u0406',\n 'Iuml': '\\u00CF',\n 'Jcirc': '\\u0134',\n 'Jcy': '\\u0419',\n 'Jfr': '\\uD835\\uDD0D',\n 'Jopf': '\\uD835\\uDD41',\n 'Jscr': '\\uD835\\uDCA5',\n 'Jsercy': '\\u0408',\n 'Jukcy': '\\u0404',\n 'KHcy': '\\u0425',\n 'KJcy': '\\u040C',\n 'Kappa': '\\u039A',\n 'Kcedil': '\\u0136',\n 'Kcy': '\\u041A',\n 'Kfr': '\\uD835\\uDD0E',\n 'Kopf': '\\uD835\\uDD42',\n 'Kscr': '\\uD835\\uDCA6',\n 'LJcy': '\\u0409',\n 'LT': '\\u003C',\n 'lt': '\\u003C',\n 'Lacute': '\\u0139',\n 'Lambda': '\\u039B',\n 'Lang': '\\u27EA',\n 'Laplacetrf': '\\u2112',\n 'Lscr': '\\u2112',\n 'lagran': '\\u2112',\n 'Larr': '\\u219E',\n 'twoheadleftarrow': '\\u219E',\n 'Lcaron': '\\u013D',\n 'Lcedil': '\\u013B',\n 'Lcy': '\\u041B',\n 'LeftAngleBracket': '\\u27E8',\n 'lang': '\\u27E8',\n 'langle': '\\u27E8',\n 'LeftArrow': '\\u2190',\n 'ShortLeftArrow': '\\u2190',\n 'larr': '\\u2190',\n 'leftarrow': '\\u2190',\n 'slarr': '\\u2190',\n 'LeftArrowBar': '\\u21E4',\n 'larrb': '\\u21E4',\n 'LeftArrowRightArrow': '\\u21C6',\n 'leftrightarrows': '\\u21C6',\n 'lrarr': '\\u21C6',\n 'LeftCeiling': '\\u2308',\n 'lceil': '\\u2308',\n 'LeftDoubleBracket': '\\u27E6',\n 'lobrk': '\\u27E6',\n 'LeftDownTeeVector': '\\u2961',\n 'LeftDownVector': '\\u21C3',\n 'dharl': '\\u21C3',\n 'downharpoonleft': '\\u21C3',\n 'LeftDownVectorBar': '\\u2959',\n 'LeftFloor': '\\u230A',\n 'lfloor': '\\u230A',\n 'LeftRightArrow': '\\u2194',\n 'harr': '\\u2194',\n 'leftrightarrow': '\\u2194',\n 'LeftRightVector': '\\u294E',\n 'LeftTee': '\\u22A3',\n 'dashv': '\\u22A3',\n 'LeftTeeArrow': '\\u21A4',\n 'mapstoleft': '\\u21A4',\n 'LeftTeeVector': '\\u295A',\n 'LeftTriangle': '\\u22B2',\n 'vartriangleleft': '\\u22B2',\n 'vltri': '\\u22B2',\n 'LeftTriangleBar': '\\u29CF',\n 'LeftTriangleEqual': '\\u22B4',\n 'ltrie': '\\u22B4',\n 'trianglelefteq': '\\u22B4',\n 'LeftUpDownVector': '\\u2951',\n 'LeftUpTeeVector': '\\u2960',\n 'LeftUpVector': '\\u21BF',\n 'uharl': '\\u21BF',\n 'upharpoonleft': '\\u21BF',\n 'LeftUpVectorBar': '\\u2958',\n 'LeftVector': '\\u21BC',\n 'leftharpoonup': '\\u21BC',\n 'lharu': '\\u21BC',\n 'LeftVectorBar': '\\u2952',\n 'LessEqualGreater': '\\u22DA',\n 'leg': '\\u22DA',\n 'lesseqgtr': '\\u22DA',\n 'LessFullEqual': '\\u2266',\n 'lE': '\\u2266',\n 'leqq': '\\u2266',\n 'LessGreater': '\\u2276',\n 'lessgtr': '\\u2276',\n 'lg': '\\u2276',\n 'LessLess': '\\u2AA1',\n 'LessSlantEqual': '\\u2A7D',\n 'leqslant': '\\u2A7D',\n 'les': '\\u2A7D',\n 'LessTilde': '\\u2272',\n 'lesssim': '\\u2272',\n 'lsim': '\\u2272',\n 'Lfr': '\\uD835\\uDD0F',\n 'Ll': '\\u22D8',\n 'Lleftarrow': '\\u21DA',\n 'lAarr': '\\u21DA',\n 'Lmidot': '\\u013F',\n 'LongLeftArrow': '\\u27F5',\n 'longleftarrow': '\\u27F5',\n 'xlarr': '\\u27F5',\n 'LongLeftRightArrow': '\\u27F7',\n 'longleftrightarrow': '\\u27F7',\n 'xharr': '\\u27F7',\n 'LongRightArrow': '\\u27F6',\n 'longrightarrow': '\\u27F6',\n 'xrarr': '\\u27F6',\n 'Lopf': '\\uD835\\uDD43',\n 'LowerLeftArrow': '\\u2199',\n 'swarr': '\\u2199',\n 'swarrow': '\\u2199',\n 'LowerRightArrow': '\\u2198',\n 'searr': '\\u2198',\n 'searrow': '\\u2198',\n 'Lsh': '\\u21B0',\n 'lsh': '\\u21B0',\n 'Lstrok': '\\u0141',\n 'Lt': '\\u226A',\n 'NestedLessLess': '\\u226A',\n 'll': '\\u226A',\n 'Map': '\\u2905',\n 'Mcy': '\\u041C',\n 'MediumSpace': '\\u205F',\n 'Mellintrf': '\\u2133',\n 'Mscr': '\\u2133',\n 'phmmat': '\\u2133',\n 'Mfr': '\\uD835\\uDD10',\n 'MinusPlus': '\\u2213',\n 'mnplus': '\\u2213',\n 'mp': '\\u2213',\n 'Mopf': '\\uD835\\uDD44',\n 'Mu': '\\u039C',\n 'NJcy': '\\u040A',\n 'Nacute': '\\u0143',\n 'Ncaron': '\\u0147',\n 'Ncedil': '\\u0145',\n 'Ncy': '\\u041D',\n 'NegativeMediumSpace': '\\u200B',\n 'NegativeThickSpace': '\\u200B',\n 'NegativeThinSpace': '\\u200B',\n 'NegativeVeryThinSpace': '\\u200B',\n 'ZeroWidthSpace': '\\u200B',\n 'NewLine': '\\u000A',\n 'Nfr': '\\uD835\\uDD11',\n 'NoBreak': '\\u2060',\n 'NonBreakingSpace': '\\u00A0',\n 'nbsp': '\\u00A0',\n 'Nopf': '\\u2115',\n 'naturals': '\\u2115',\n 'Not': '\\u2AEC',\n 'NotCongruent': '\\u2262',\n 'nequiv': '\\u2262',\n 'NotCupCap': '\\u226D',\n 'NotDoubleVerticalBar': '\\u2226',\n 'npar': '\\u2226',\n 'nparallel': '\\u2226',\n 'nshortparallel': '\\u2226',\n 'nspar': '\\u2226',\n 'NotElement': '\\u2209',\n 'notin': '\\u2209',\n 'notinva': '\\u2209',\n 'NotEqual': '\\u2260',\n 'ne': '\\u2260',\n 'NotEqualTilde': '\\u2242\\u0338',\n 'nesim': '\\u2242\\u0338',\n 'NotExists': '\\u2204',\n 'nexist': '\\u2204',\n 'nexists': '\\u2204',\n 'NotGreater': '\\u226F',\n 'ngt': '\\u226F',\n 'ngtr': '\\u226F',\n 'NotGreaterEqual': '\\u2271',\n 'nge': '\\u2271',\n 'ngeq': '\\u2271',\n 'NotGreaterFullEqual': '\\u2267\\u0338',\n 'ngE': '\\u2267\\u0338',\n 'ngeqq': '\\u2267\\u0338',\n 'NotGreaterGreater': '\\u226B\\u0338',\n 'nGtv': '\\u226B\\u0338',\n 'NotGreaterLess': '\\u2279',\n 'ntgl': '\\u2279',\n 'NotGreaterSlantEqual': '\\u2A7E\\u0338',\n 'ngeqslant': '\\u2A7E\\u0338',\n 'nges': '\\u2A7E\\u0338',\n 'NotGreaterTilde': '\\u2275',\n 'ngsim': '\\u2275',\n 'NotHumpDownHump': '\\u224E\\u0338',\n 'nbump': '\\u224E\\u0338',\n 'NotHumpEqual': '\\u224F\\u0338',\n 'nbumpe': '\\u224F\\u0338',\n 'NotLeftTriangle': '\\u22EA',\n 'nltri': '\\u22EA',\n 'ntriangleleft': '\\u22EA',\n 'NotLeftTriangleBar': '\\u29CF\\u0338',\n 'NotLeftTriangleEqual': '\\u22EC',\n 'nltrie': '\\u22EC',\n 'ntrianglelefteq': '\\u22EC',\n 'NotLess': '\\u226E',\n 'nless': '\\u226E',\n 'nlt': '\\u226E',\n 'NotLessEqual': '\\u2270',\n 'nle': '\\u2270',\n 'nleq': '\\u2270',\n 'NotLessGreater': '\\u2278',\n 'ntlg': '\\u2278',\n 'NotLessLess': '\\u226A\\u0338',\n 'nLtv': '\\u226A\\u0338',\n 'NotLessSlantEqual': '\\u2A7D\\u0338',\n 'nleqslant': '\\u2A7D\\u0338',\n 'nles': '\\u2A7D\\u0338',\n 'NotLessTilde': '\\u2274',\n 'nlsim': '\\u2274',\n 'NotNestedGreaterGreater': '\\u2AA2\\u0338',\n 'NotNestedLessLess': '\\u2AA1\\u0338',\n 'NotPrecedes': '\\u2280',\n 'npr': '\\u2280',\n 'nprec': '\\u2280',\n 'NotPrecedesEqual': '\\u2AAF\\u0338',\n 'npre': '\\u2AAF\\u0338',\n 'npreceq': '\\u2AAF\\u0338',\n 'NotPrecedesSlantEqual': '\\u22E0',\n 'nprcue': '\\u22E0',\n 'NotReverseElement': '\\u220C',\n 'notni': '\\u220C',\n 'notniva': '\\u220C',\n 'NotRightTriangle': '\\u22EB',\n 'nrtri': '\\u22EB',\n 'ntriangleright': '\\u22EB',\n 'NotRightTriangleBar': '\\u29D0\\u0338',\n 'NotRightTriangleEqual': '\\u22ED',\n 'nrtrie': '\\u22ED',\n 'ntrianglerighteq': '\\u22ED',\n 'NotSquareSubset': '\\u228F\\u0338',\n 'NotSquareSubsetEqual': '\\u22E2',\n 'nsqsube': '\\u22E2',\n 'NotSquareSuperset': '\\u2290\\u0338',\n 'NotSquareSupersetEqual': '\\u22E3',\n 'nsqsupe': '\\u22E3',\n 'NotSubset': '\\u2282\\u20D2',\n 'nsubset': '\\u2282\\u20D2',\n 'vnsub': '\\u2282\\u20D2',\n 'NotSubsetEqual': '\\u2288',\n 'nsube': '\\u2288',\n 'nsubseteq': '\\u2288',\n 'NotSucceeds': '\\u2281',\n 'nsc': '\\u2281',\n 'nsucc': '\\u2281',\n 'NotSucceedsEqual': '\\u2AB0\\u0338',\n 'nsce': '\\u2AB0\\u0338',\n 'nsucceq': '\\u2AB0\\u0338',\n 'NotSucceedsSlantEqual': '\\u22E1',\n 'nsccue': '\\u22E1',\n 'NotSucceedsTilde': '\\u227F\\u0338',\n 'NotSuperset': '\\u2283\\u20D2',\n 'nsupset': '\\u2283\\u20D2',\n 'vnsup': '\\u2283\\u20D2',\n 'NotSupersetEqual': '\\u2289',\n 'nsupe': '\\u2289',\n 'nsupseteq': '\\u2289',\n 'NotTilde': '\\u2241',\n 'nsim': '\\u2241',\n 'NotTildeEqual': '\\u2244',\n 'nsime': '\\u2244',\n 'nsimeq': '\\u2244',\n 'NotTildeFullEqual': '\\u2247',\n 'ncong': '\\u2247',\n 'NotTildeTilde': '\\u2249',\n 'nap': '\\u2249',\n 'napprox': '\\u2249',\n 'NotVerticalBar': '\\u2224',\n 'nmid': '\\u2224',\n 'nshortmid': '\\u2224',\n 'nsmid': '\\u2224',\n 'Nscr': '\\uD835\\uDCA9',\n 'Ntilde': '\\u00D1',\n 'Nu': '\\u039D',\n 'OElig': '\\u0152',\n 'Oacute': '\\u00D3',\n 'Ocirc': '\\u00D4',\n 'Ocy': '\\u041E',\n 'Odblac': '\\u0150',\n 'Ofr': '\\uD835\\uDD12',\n 'Ograve': '\\u00D2',\n 'Omacr': '\\u014C',\n 'Omega': '\\u03A9',\n 'ohm': '\\u03A9',\n 'Omicron': '\\u039F',\n 'Oopf': '\\uD835\\uDD46',\n 'OpenCurlyDoubleQuote': '\\u201C',\n 'ldquo': '\\u201C',\n 'OpenCurlyQuote': '\\u2018',\n 'lsquo': '\\u2018',\n 'Or': '\\u2A54',\n 'Oscr': '\\uD835\\uDCAA',\n 'Oslash': '\\u00D8',\n 'Otilde': '\\u00D5',\n 'Otimes': '\\u2A37',\n 'Ouml': '\\u00D6',\n 'OverBar': '\\u203E',\n 'oline': '\\u203E',\n 'OverBrace': '\\u23DE',\n 'OverBracket': '\\u23B4',\n 'tbrk': '\\u23B4',\n 'OverParenthesis': '\\u23DC',\n 'PartialD': '\\u2202',\n 'part': '\\u2202',\n 'Pcy': '\\u041F',\n 'Pfr': '\\uD835\\uDD13',\n 'Phi': '\\u03A6',\n 'Pi': '\\u03A0',\n 'PlusMinus': '\\u00B1',\n 'plusmn': '\\u00B1',\n 'pm': '\\u00B1',\n 'Popf': '\\u2119',\n 'primes': '\\u2119',\n 'Pr': '\\u2ABB',\n 'Precedes': '\\u227A',\n 'pr': '\\u227A',\n 'prec': '\\u227A',\n 'PrecedesEqual': '\\u2AAF',\n 'pre': '\\u2AAF',\n 'preceq': '\\u2AAF',\n 'PrecedesSlantEqual': '\\u227C',\n 'prcue': '\\u227C',\n 'preccurlyeq': '\\u227C',\n 'PrecedesTilde': '\\u227E',\n 'precsim': '\\u227E',\n 'prsim': '\\u227E',\n 'Prime': '\\u2033',\n 'Product': '\\u220F',\n 'prod': '\\u220F',\n 'Proportional': '\\u221D',\n 'prop': '\\u221D',\n 'propto': '\\u221D',\n 'varpropto': '\\u221D',\n 'vprop': '\\u221D',\n 'Pscr': '\\uD835\\uDCAB',\n 'Psi': '\\u03A8',\n 'QUOT': '\\u0022',\n 'quot': '\\u0022',\n 'Qfr': '\\uD835\\uDD14',\n 'Qopf': '\\u211A',\n 'rationals': '\\u211A',\n 'Qscr': '\\uD835\\uDCAC',\n 'RBarr': '\\u2910',\n 'drbkarow': '\\u2910',\n 'REG': '\\u00AE',\n 'circledR': '\\u00AE',\n 'reg': '\\u00AE',\n 'Racute': '\\u0154',\n 'Rang': '\\u27EB',\n 'Rarr': '\\u21A0',\n 'twoheadrightarrow': '\\u21A0',\n 'Rarrtl': '\\u2916',\n 'Rcaron': '\\u0158',\n 'Rcedil': '\\u0156',\n 'Rcy': '\\u0420',\n 'Re': '\\u211C',\n 'Rfr': '\\u211C',\n 'real': '\\u211C',\n 'realpart': '\\u211C',\n 'ReverseElement': '\\u220B',\n 'SuchThat': '\\u220B',\n 'ni': '\\u220B',\n 'niv': '\\u220B',\n 'ReverseEquilibrium': '\\u21CB',\n 'leftrightharpoons': '\\u21CB',\n 'lrhar': '\\u21CB',\n 'ReverseUpEquilibrium': '\\u296F',\n 'duhar': '\\u296F',\n 'Rho': '\\u03A1',\n 'RightAngleBracket': '\\u27E9',\n 'rang': '\\u27E9',\n 'rangle': '\\u27E9',\n 'RightArrow': '\\u2192',\n 'ShortRightArrow': '\\u2192',\n 'rarr': '\\u2192',\n 'rightarrow': '\\u2192',\n 'srarr': '\\u2192',\n 'RightArrowBar': '\\u21E5',\n 'rarrb': '\\u21E5',\n 'RightArrowLeftArrow': '\\u21C4',\n 'rightleftarrows': '\\u21C4',\n 'rlarr': '\\u21C4',\n 'RightCeiling': '\\u2309',\n 'rceil': '\\u2309',\n 'RightDoubleBracket': '\\u27E7',\n 'robrk': '\\u27E7',\n 'RightDownTeeVector': '\\u295D',\n 'RightDownVector': '\\u21C2',\n 'dharr': '\\u21C2',\n 'downharpoonright': '\\u21C2',\n 'RightDownVectorBar': '\\u2955',\n 'RightFloor': '\\u230B',\n 'rfloor': '\\u230B',\n 'RightTee': '\\u22A2',\n 'vdash': '\\u22A2',\n 'RightTeeArrow': '\\u21A6',\n 'map': '\\u21A6',\n 'mapsto': '\\u21A6',\n 'RightTeeVector': '\\u295B',\n 'RightTriangle': '\\u22B3',\n 'vartriangleright': '\\u22B3',\n 'vrtri': '\\u22B3',\n 'RightTriangleBar': '\\u29D0',\n 'RightTriangleEqual': '\\u22B5',\n 'rtrie': '\\u22B5',\n 'trianglerighteq': '\\u22B5',\n 'RightUpDownVector': '\\u294F',\n 'RightUpTeeVector': '\\u295C',\n 'RightUpVector': '\\u21BE',\n 'uharr': '\\u21BE',\n 'upharpoonright': '\\u21BE',\n 'RightUpVectorBar': '\\u2954',\n 'RightVector': '\\u21C0',\n 'rharu': '\\u21C0',\n 'rightharpoonup': '\\u21C0',\n 'RightVectorBar': '\\u2953',\n 'Ropf': '\\u211D',\n 'reals': '\\u211D',\n 'RoundImplies': '\\u2970',\n 'Rrightarrow': '\\u21DB',\n 'rAarr': '\\u21DB',\n 'Rscr': '\\u211B',\n 'realine': '\\u211B',\n 'Rsh': '\\u21B1',\n 'rsh': '\\u21B1',\n 'RuleDelayed': '\\u29F4',\n 'SHCHcy': '\\u0429',\n 'SHcy': '\\u0428',\n 'SOFTcy': '\\u042C',\n 'Sacute': '\\u015A',\n 'Sc': '\\u2ABC',\n 'Scaron': '\\u0160',\n 'Scedil': '\\u015E',\n 'Scirc': '\\u015C',\n 'Scy': '\\u0421',\n 'Sfr': '\\uD835\\uDD16',\n 'ShortUpArrow': '\\u2191',\n 'UpArrow': '\\u2191',\n 'uarr': '\\u2191',\n 'uparrow': '\\u2191',\n 'Sigma': '\\u03A3',\n 'SmallCircle': '\\u2218',\n 'compfn': '\\u2218',\n 'Sopf': '\\uD835\\uDD4A',\n 'Sqrt': '\\u221A',\n 'radic': '\\u221A',\n 'Square': '\\u25A1',\n 'squ': '\\u25A1',\n 'square': '\\u25A1',\n 'SquareIntersection': '\\u2293',\n 'sqcap': '\\u2293',\n 'SquareSubset': '\\u228F',\n 'sqsub': '\\u228F',\n 'sqsubset': '\\u228F',\n 'SquareSubsetEqual': '\\u2291',\n 'sqsube': '\\u2291',\n 'sqsubseteq': '\\u2291',\n 'SquareSuperset': '\\u2290',\n 'sqsup': '\\u2290',\n 'sqsupset': '\\u2290',\n 'SquareSupersetEqual': '\\u2292',\n 'sqsupe': '\\u2292',\n 'sqsupseteq': '\\u2292',\n 'SquareUnion': '\\u2294',\n 'sqcup': '\\u2294',\n 'Sscr': '\\uD835\\uDCAE',\n 'Star': '\\u22C6',\n 'sstarf': '\\u22C6',\n 'Sub': '\\u22D0',\n 'Subset': '\\u22D0',\n 'SubsetEqual': '\\u2286',\n 'sube': '\\u2286',\n 'subseteq': '\\u2286',\n 'Succeeds': '\\u227B',\n 'sc': '\\u227B',\n 'succ': '\\u227B',\n 'SucceedsEqual': '\\u2AB0',\n 'sce': '\\u2AB0',\n 'succeq': '\\u2AB0',\n 'SucceedsSlantEqual': '\\u227D',\n 'sccue': '\\u227D',\n 'succcurlyeq': '\\u227D',\n 'SucceedsTilde': '\\u227F',\n 'scsim': '\\u227F',\n 'succsim': '\\u227F',\n 'Sum': '\\u2211',\n 'sum': '\\u2211',\n 'Sup': '\\u22D1',\n 'Supset': '\\u22D1',\n 'Superset': '\\u2283',\n 'sup': '\\u2283',\n 'supset': '\\u2283',\n 'SupersetEqual': '\\u2287',\n 'supe': '\\u2287',\n 'supseteq': '\\u2287',\n 'THORN': '\\u00DE',\n 'TRADE': '\\u2122',\n 'trade': '\\u2122',\n 'TSHcy': '\\u040B',\n 'TScy': '\\u0426',\n 'Tab': '\\u0009',\n 'Tau': '\\u03A4',\n 'Tcaron': '\\u0164',\n 'Tcedil': '\\u0162',\n 'Tcy': '\\u0422',\n 'Tfr': '\\uD835\\uDD17',\n 'Therefore': '\\u2234',\n 'there4': '\\u2234',\n 'therefore': '\\u2234',\n 'Theta': '\\u0398',\n 'ThickSpace': '\\u205F\\u200A',\n 'ThinSpace': '\\u2009',\n 'thinsp': '\\u2009',\n 'Tilde': '\\u223C',\n 'sim': '\\u223C',\n 'thicksim': '\\u223C',\n 'thksim': '\\u223C',\n 'TildeEqual': '\\u2243',\n 'sime': '\\u2243',\n 'simeq': '\\u2243',\n 'TildeFullEqual': '\\u2245',\n 'cong': '\\u2245',\n 'TildeTilde': '\\u2248',\n 'ap': '\\u2248',\n 'approx': '\\u2248',\n 'asymp': '\\u2248',\n 'thickapprox': '\\u2248',\n 'thkap': '\\u2248',\n 'Topf': '\\uD835\\uDD4B',\n 'TripleDot': '\\u20DB',\n 'tdot': '\\u20DB',\n 'Tscr': '\\uD835\\uDCAF',\n 'Tstrok': '\\u0166',\n 'Uacute': '\\u00DA',\n 'Uarr': '\\u219F',\n 'Uarrocir': '\\u2949',\n 'Ubrcy': '\\u040E',\n 'Ubreve': '\\u016C',\n 'Ucirc': '\\u00DB',\n 'Ucy': '\\u0423',\n 'Udblac': '\\u0170',\n 'Ufr': '\\uD835\\uDD18',\n 'Ugrave': '\\u00D9',\n 'Umacr': '\\u016A',\n 'UnderBar': '\\u005F',\n 'lowbar': '\\u005F',\n 'UnderBrace': '\\u23DF',\n 'UnderBracket': '\\u23B5',\n 'bbrk': '\\u23B5',\n 'UnderParenthesis': '\\u23DD',\n 'Union': '\\u22C3',\n 'bigcup': '\\u22C3',\n 'xcup': '\\u22C3',\n 'UnionPlus': '\\u228E',\n 'uplus': '\\u228E',\n 'Uogon': '\\u0172',\n 'Uopf': '\\uD835\\uDD4C',\n 'UpArrowBar': '\\u2912',\n 'UpArrowDownArrow': '\\u21C5',\n 'udarr': '\\u21C5',\n 'UpDownArrow': '\\u2195',\n 'updownarrow': '\\u2195',\n 'varr': '\\u2195',\n 'UpEquilibrium': '\\u296E',\n 'udhar': '\\u296E',\n 'UpTee': '\\u22A5',\n 'bot': '\\u22A5',\n 'bottom': '\\u22A5',\n 'perp': '\\u22A5',\n 'UpTeeArrow': '\\u21A5',\n 'mapstoup': '\\u21A5',\n 'UpperLeftArrow': '\\u2196',\n 'nwarr': '\\u2196',\n 'nwarrow': '\\u2196',\n 'UpperRightArrow': '\\u2197',\n 'nearr': '\\u2197',\n 'nearrow': '\\u2197',\n 'Upsi': '\\u03D2',\n 'upsih': '\\u03D2',\n 'Upsilon': '\\u03A5',\n 'Uring': '\\u016E',\n 'Uscr': '\\uD835\\uDCB0',\n 'Utilde': '\\u0168',\n 'Uuml': '\\u00DC',\n 'VDash': '\\u22AB',\n 'Vbar': '\\u2AEB',\n 'Vcy': '\\u0412',\n 'Vdash': '\\u22A9',\n 'Vdashl': '\\u2AE6',\n 'Vee': '\\u22C1',\n 'bigvee': '\\u22C1',\n 'xvee': '\\u22C1',\n 'Verbar': '\\u2016',\n 'Vert': '\\u2016',\n 'VerticalBar': '\\u2223',\n 'mid': '\\u2223',\n 'shortmid': '\\u2223',\n 'smid': '\\u2223',\n 'VerticalLine': '\\u007C',\n 'verbar': '\\u007C',\n 'vert': '\\u007C',\n 'VerticalSeparator': '\\u2758',\n 'VerticalTilde': '\\u2240',\n 'wr': '\\u2240',\n 'wreath': '\\u2240',\n 'VeryThinSpace': '\\u200A',\n 'hairsp': '\\u200A',\n 'Vfr': '\\uD835\\uDD19',\n 'Vopf': '\\uD835\\uDD4D',\n 'Vscr': '\\uD835\\uDCB1',\n 'Vvdash': '\\u22AA',\n 'Wcirc': '\\u0174',\n 'Wedge': '\\u22C0',\n 'bigwedge': '\\u22C0',\n 'xwedge': '\\u22C0',\n 'Wfr': '\\uD835\\uDD1A',\n 'Wopf': '\\uD835\\uDD4E',\n 'Wscr': '\\uD835\\uDCB2',\n 'Xfr': '\\uD835\\uDD1B',\n 'Xi': '\\u039E',\n 'Xopf': '\\uD835\\uDD4F',\n 'Xscr': '\\uD835\\uDCB3',\n 'YAcy': '\\u042F',\n 'YIcy': '\\u0407',\n 'YUcy': '\\u042E',\n 'Yacute': '\\u00DD',\n 'Ycirc': '\\u0176',\n 'Ycy': '\\u042B',\n 'Yfr': '\\uD835\\uDD1C',\n 'Yopf': '\\uD835\\uDD50',\n 'Yscr': '\\uD835\\uDCB4',\n 'Yuml': '\\u0178',\n 'ZHcy': '\\u0416',\n 'Zacute': '\\u0179',\n 'Zcaron': '\\u017D',\n 'Zcy': '\\u0417',\n 'Zdot': '\\u017B',\n 'Zeta': '\\u0396',\n 'Zfr': '\\u2128',\n 'zeetrf': '\\u2128',\n 'Zopf': '\\u2124',\n 'integers': '\\u2124',\n 'Zscr': '\\uD835\\uDCB5',\n 'aacute': '\\u00E1',\n 'abreve': '\\u0103',\n 'ac': '\\u223E',\n 'mstpos': '\\u223E',\n 'acE': '\\u223E\\u0333',\n 'acd': '\\u223F',\n 'acirc': '\\u00E2',\n 'acy': '\\u0430',\n 'aelig': '\\u00E6',\n 'afr': '\\uD835\\uDD1E',\n 'agrave': '\\u00E0',\n 'alefsym': '\\u2135',\n 'aleph': '\\u2135',\n 'alpha': '\\u03B1',\n 'amacr': '\\u0101',\n 'amalg': '\\u2A3F',\n 'and': '\\u2227',\n 'wedge': '\\u2227',\n 'andand': '\\u2A55',\n 'andd': '\\u2A5C',\n 'andslope': '\\u2A58',\n 'andv': '\\u2A5A',\n 'ang': '\\u2220',\n 'angle': '\\u2220',\n 'ange': '\\u29A4',\n 'angmsd': '\\u2221',\n 'measuredangle': '\\u2221',\n 'angmsdaa': '\\u29A8',\n 'angmsdab': '\\u29A9',\n 'angmsdac': '\\u29AA',\n 'angmsdad': '\\u29AB',\n 'angmsdae': '\\u29AC',\n 'angmsdaf': '\\u29AD',\n 'angmsdag': '\\u29AE',\n 'angmsdah': '\\u29AF',\n 'angrt': '\\u221F',\n 'angrtvb': '\\u22BE',\n 'angrtvbd': '\\u299D',\n 'angsph': '\\u2222',\n 'angzarr': '\\u237C',\n 'aogon': '\\u0105',\n 'aopf': '\\uD835\\uDD52',\n 'apE': '\\u2A70',\n 'apacir': '\\u2A6F',\n 'ape': '\\u224A',\n 'approxeq': '\\u224A',\n 'apid': '\\u224B',\n 'apos': '\\u0027',\n 'aring': '\\u00E5',\n 'ascr': '\\uD835\\uDCB6',\n 'ast': '\\u002A',\n 'midast': '\\u002A',\n 'atilde': '\\u00E3',\n 'auml': '\\u00E4',\n 'awint': '\\u2A11',\n 'bNot': '\\u2AED',\n 'backcong': '\\u224C',\n 'bcong': '\\u224C',\n 'backepsilon': '\\u03F6',\n 'bepsi': '\\u03F6',\n 'backprime': '\\u2035',\n 'bprime': '\\u2035',\n 'backsim': '\\u223D',\n 'bsim': '\\u223D',\n 'backsimeq': '\\u22CD',\n 'bsime': '\\u22CD',\n 'barvee': '\\u22BD',\n 'barwed': '\\u2305',\n 'barwedge': '\\u2305',\n 'bbrktbrk': '\\u23B6',\n 'bcy': '\\u0431',\n 'bdquo': '\\u201E',\n 'ldquor': '\\u201E',\n 'bemptyv': '\\u29B0',\n 'beta': '\\u03B2',\n 'beth': '\\u2136',\n 'between': '\\u226C',\n 'twixt': '\\u226C',\n 'bfr': '\\uD835\\uDD1F',\n 'bigcirc': '\\u25EF',\n 'xcirc': '\\u25EF',\n 'bigodot': '\\u2A00',\n 'xodot': '\\u2A00',\n 'bigoplus': '\\u2A01',\n 'xoplus': '\\u2A01',\n 'bigotimes': '\\u2A02',\n 'xotime': '\\u2A02',\n 'bigsqcup': '\\u2A06',\n 'xsqcup': '\\u2A06',\n 'bigstar': '\\u2605',\n 'starf': '\\u2605',\n 'bigtriangledown': '\\u25BD',\n 'xdtri': '\\u25BD',\n 'bigtriangleup': '\\u25B3',\n 'xutri': '\\u25B3',\n 'biguplus': '\\u2A04',\n 'xuplus': '\\u2A04',\n 'bkarow': '\\u290D',\n 'rbarr': '\\u290D',\n 'blacklozenge': '\\u29EB',\n 'lozf': '\\u29EB',\n 'blacktriangle': '\\u25B4',\n 'utrif': '\\u25B4',\n 'blacktriangledown': '\\u25BE',\n 'dtrif': '\\u25BE',\n 'blacktriangleleft': '\\u25C2',\n 'ltrif': '\\u25C2',\n 'blacktriangleright': '\\u25B8',\n 'rtrif': '\\u25B8',\n 'blank': '\\u2423',\n 'blk12': '\\u2592',\n 'blk14': '\\u2591',\n 'blk34': '\\u2593',\n 'block': '\\u2588',\n 'bne': '\\u003D\\u20E5',\n 'bnequiv': '\\u2261\\u20E5',\n 'bnot': '\\u2310',\n 'bopf': '\\uD835\\uDD53',\n 'bowtie': '\\u22C8',\n 'boxDL': '\\u2557',\n 'boxDR': '\\u2554',\n 'boxDl': '\\u2556',\n 'boxDr': '\\u2553',\n 'boxH': '\\u2550',\n 'boxHD': '\\u2566',\n 'boxHU': '\\u2569',\n 'boxHd': '\\u2564',\n 'boxHu': '\\u2567',\n 'boxUL': '\\u255D',\n 'boxUR': '\\u255A',\n 'boxUl': '\\u255C',\n 'boxUr': '\\u2559',\n 'boxV': '\\u2551',\n 'boxVH': '\\u256C',\n 'boxVL': '\\u2563',\n 'boxVR': '\\u2560',\n 'boxVh': '\\u256B',\n 'boxVl': '\\u2562',\n 'boxVr': '\\u255F',\n 'boxbox': '\\u29C9',\n 'boxdL': '\\u2555',\n 'boxdR': '\\u2552',\n 'boxdl': '\\u2510',\n 'boxdr': '\\u250C',\n 'boxhD': '\\u2565',\n 'boxhU': '\\u2568',\n 'boxhd': '\\u252C',\n 'boxhu': '\\u2534',\n 'boxminus': '\\u229F',\n 'minusb': '\\u229F',\n 'boxplus': '\\u229E',\n 'plusb': '\\u229E',\n 'boxtimes': '\\u22A0',\n 'timesb': '\\u22A0',\n 'boxuL': '\\u255B',\n 'boxuR': '\\u2558',\n 'boxul': '\\u2518',\n 'boxur': '\\u2514',\n 'boxv': '\\u2502',\n 'boxvH': '\\u256A',\n 'boxvL': '\\u2561',\n 'boxvR': '\\u255E',\n 'boxvh': '\\u253C',\n 'boxvl': '\\u2524',\n 'boxvr': '\\u251C',\n 'brvbar': '\\u00A6',\n 'bscr': '\\uD835\\uDCB7',\n 'bsemi': '\\u204F',\n 'bsol': '\\u005C',\n 'bsolb': '\\u29C5',\n 'bsolhsub': '\\u27C8',\n 'bull': '\\u2022',\n 'bullet': '\\u2022',\n 'bumpE': '\\u2AAE',\n 'cacute': '\\u0107',\n 'cap': '\\u2229',\n 'capand': '\\u2A44',\n 'capbrcup': '\\u2A49',\n 'capcap': '\\u2A4B',\n 'capcup': '\\u2A47',\n 'capdot': '\\u2A40',\n 'caps': '\\u2229\\uFE00',\n 'caret': '\\u2041',\n 'ccaps': '\\u2A4D',\n 'ccaron': '\\u010D',\n 'ccedil': '\\u00E7',\n 'ccirc': '\\u0109',\n 'ccups': '\\u2A4C',\n 'ccupssm': '\\u2A50',\n 'cdot': '\\u010B',\n 'cemptyv': '\\u29B2',\n 'cent': '\\u00A2',\n 'cfr': '\\uD835\\uDD20',\n 'chcy': '\\u0447',\n 'check': '\\u2713',\n 'checkmark': '\\u2713',\n 'chi': '\\u03C7',\n 'cir': '\\u25CB',\n 'cirE': '\\u29C3',\n 'circ': '\\u02C6',\n 'circeq': '\\u2257',\n 'cire': '\\u2257',\n 'circlearrowleft': '\\u21BA',\n 'olarr': '\\u21BA',\n 'circlearrowright': '\\u21BB',\n 'orarr': '\\u21BB',\n 'circledS': '\\u24C8',\n 'oS': '\\u24C8',\n 'circledast': '\\u229B',\n 'oast': '\\u229B',\n 'circledcirc': '\\u229A',\n 'ocir': '\\u229A',\n 'circleddash': '\\u229D',\n 'odash': '\\u229D',\n 'cirfnint': '\\u2A10',\n 'cirmid': '\\u2AEF',\n 'cirscir': '\\u29C2',\n 'clubs': '\\u2663',\n 'clubsuit': '\\u2663',\n 'colon': '\\u003A',\n 'comma': '\\u002C',\n 'commat': '\\u0040',\n 'comp': '\\u2201',\n 'complement': '\\u2201',\n 'congdot': '\\u2A6D',\n 'copf': '\\uD835\\uDD54',\n 'copysr': '\\u2117',\n 'crarr': '\\u21B5',\n 'cross': '\\u2717',\n 'cscr': '\\uD835\\uDCB8',\n 'csub': '\\u2ACF',\n 'csube': '\\u2AD1',\n 'csup': '\\u2AD0',\n 'csupe': '\\u2AD2',\n 'ctdot': '\\u22EF',\n 'cudarrl': '\\u2938',\n 'cudarrr': '\\u2935',\n 'cuepr': '\\u22DE',\n 'curlyeqprec': '\\u22DE',\n 'cuesc': '\\u22DF',\n 'curlyeqsucc': '\\u22DF',\n 'cularr': '\\u21B6',\n 'curvearrowleft': '\\u21B6',\n 'cularrp': '\\u293D',\n 'cup': '\\u222A',\n 'cupbrcap': '\\u2A48',\n 'cupcap': '\\u2A46',\n 'cupcup': '\\u2A4A',\n 'cupdot': '\\u228D',\n 'cupor': '\\u2A45',\n 'cups': '\\u222A\\uFE00',\n 'curarr': '\\u21B7',\n 'curvearrowright': '\\u21B7',\n 'curarrm': '\\u293C',\n 'curlyvee': '\\u22CE',\n 'cuvee': '\\u22CE',\n 'curlywedge': '\\u22CF',\n 'cuwed': '\\u22CF',\n 'curren': '\\u00A4',\n 'cwint': '\\u2231',\n 'cylcty': '\\u232D',\n 'dHar': '\\u2965',\n 'dagger': '\\u2020',\n 'daleth': '\\u2138',\n 'dash': '\\u2010',\n 'hyphen': '\\u2010',\n 'dbkarow': '\\u290F',\n 'rBarr': '\\u290F',\n 'dcaron': '\\u010F',\n 'dcy': '\\u0434',\n 'ddarr': '\\u21CA',\n 'downdownarrows': '\\u21CA',\n 'ddotseq': '\\u2A77',\n 'eDDot': '\\u2A77',\n 'deg': '\\u00B0',\n 'delta': '\\u03B4',\n 'demptyv': '\\u29B1',\n 'dfisht': '\\u297F',\n 'dfr': '\\uD835\\uDD21',\n 'diamondsuit': '\\u2666',\n 'diams': '\\u2666',\n 'digamma': '\\u03DD',\n 'gammad': '\\u03DD',\n 'disin': '\\u22F2',\n 'div': '\\u00F7',\n 'divide': '\\u00F7',\n 'divideontimes': '\\u22C7',\n 'divonx': '\\u22C7',\n 'djcy': '\\u0452',\n 'dlcorn': '\\u231E',\n 'llcorner': '\\u231E',\n 'dlcrop': '\\u230D',\n 'dollar': '\\u0024',\n 'dopf': '\\uD835\\uDD55',\n 'doteqdot': '\\u2251',\n 'eDot': '\\u2251',\n 'dotminus': '\\u2238',\n 'minusd': '\\u2238',\n 'dotplus': '\\u2214',\n 'plusdo': '\\u2214',\n 'dotsquare': '\\u22A1',\n 'sdotb': '\\u22A1',\n 'drcorn': '\\u231F',\n 'lrcorner': '\\u231F',\n 'drcrop': '\\u230C',\n 'dscr': '\\uD835\\uDCB9',\n 'dscy': '\\u0455',\n 'dsol': '\\u29F6',\n 'dstrok': '\\u0111',\n 'dtdot': '\\u22F1',\n 'dtri': '\\u25BF',\n 'triangledown': '\\u25BF',\n 'dwangle': '\\u29A6',\n 'dzcy': '\\u045F',\n 'dzigrarr': '\\u27FF',\n 'eacute': '\\u00E9',\n 'easter': '\\u2A6E',\n 'ecaron': '\\u011B',\n 'ecir': '\\u2256',\n 'eqcirc': '\\u2256',\n 'ecirc': '\\u00EA',\n 'ecolon': '\\u2255',\n 'eqcolon': '\\u2255',\n 'ecy': '\\u044D',\n 'edot': '\\u0117',\n 'efDot': '\\u2252',\n 'fallingdotseq': '\\u2252',\n 'efr': '\\uD835\\uDD22',\n 'eg': '\\u2A9A',\n 'egrave': '\\u00E8',\n 'egs': '\\u2A96',\n 'eqslantgtr': '\\u2A96',\n 'egsdot': '\\u2A98',\n 'el': '\\u2A99',\n 'elinters': '\\u23E7',\n 'ell': '\\u2113',\n 'els': '\\u2A95',\n 'eqslantless': '\\u2A95',\n 'elsdot': '\\u2A97',\n 'emacr': '\\u0113',\n 'empty': '\\u2205',\n 'emptyset': '\\u2205',\n 'emptyv': '\\u2205',\n 'varnothing': '\\u2205',\n 'emsp13': '\\u2004',\n 'emsp14': '\\u2005',\n 'emsp': '\\u2003',\n 'eng': '\\u014B',\n 'ensp': '\\u2002',\n 'eogon': '\\u0119',\n 'eopf': '\\uD835\\uDD56',\n 'epar': '\\u22D5',\n 'eparsl': '\\u29E3',\n 'eplus': '\\u2A71',\n 'epsi': '\\u03B5',\n 'epsilon': '\\u03B5',\n 'epsiv': '\\u03F5',\n 'straightepsilon': '\\u03F5',\n 'varepsilon': '\\u03F5',\n 'equals': '\\u003D',\n 'equest': '\\u225F',\n 'questeq': '\\u225F',\n 'equivDD': '\\u2A78',\n 'eqvparsl': '\\u29E5',\n 'erDot': '\\u2253',\n 'risingdotseq': '\\u2253',\n 'erarr': '\\u2971',\n 'escr': '\\u212F',\n 'eta': '\\u03B7',\n 'eth': '\\u00F0',\n 'euml': '\\u00EB',\n 'euro': '\\u20AC',\n 'excl': '\\u0021',\n 'fcy': '\\u0444',\n 'female': '\\u2640',\n 'ffilig': '\\uFB03',\n 'fflig': '\\uFB00',\n 'ffllig': '\\uFB04',\n 'ffr': '\\uD835\\uDD23',\n 'filig': '\\uFB01',\n 'fjlig': '\\u0066\\u006A',\n 'flat': '\\u266D',\n 'fllig': '\\uFB02',\n 'fltns': '\\u25B1',\n 'fnof': '\\u0192',\n 'fopf': '\\uD835\\uDD57',\n 'fork': '\\u22D4',\n 'pitchfork': '\\u22D4',\n 'forkv': '\\u2AD9',\n 'fpartint': '\\u2A0D',\n 'frac12': '\\u00BD',\n 'half': '\\u00BD',\n 'frac13': '\\u2153',\n 'frac14': '\\u00BC',\n 'frac15': '\\u2155',\n 'frac16': '\\u2159',\n 'frac18': '\\u215B',\n 'frac23': '\\u2154',\n 'frac25': '\\u2156',\n 'frac34': '\\u00BE',\n 'frac35': '\\u2157',\n 'frac38': '\\u215C',\n 'frac45': '\\u2158',\n 'frac56': '\\u215A',\n 'frac58': '\\u215D',\n 'frac78': '\\u215E',\n 'frasl': '\\u2044',\n 'frown': '\\u2322',\n 'sfrown': '\\u2322',\n 'fscr': '\\uD835\\uDCBB',\n 'gEl': '\\u2A8C',\n 'gtreqqless': '\\u2A8C',\n 'gacute': '\\u01F5',\n 'gamma': '\\u03B3',\n 'gap': '\\u2A86',\n 'gtrapprox': '\\u2A86',\n 'gbreve': '\\u011F',\n 'gcirc': '\\u011D',\n 'gcy': '\\u0433',\n 'gdot': '\\u0121',\n 'gescc': '\\u2AA9',\n 'gesdot': '\\u2A80',\n 'gesdoto': '\\u2A82',\n 'gesdotol': '\\u2A84',\n 'gesl': '\\u22DB\\uFE00',\n 'gesles': '\\u2A94',\n 'gfr': '\\uD835\\uDD24',\n 'gimel': '\\u2137',\n 'gjcy': '\\u0453',\n 'glE': '\\u2A92',\n 'gla': '\\u2AA5',\n 'glj': '\\u2AA4',\n 'gnE': '\\u2269',\n 'gneqq': '\\u2269',\n 'gnap': '\\u2A8A',\n 'gnapprox': '\\u2A8A',\n 'gne': '\\u2A88',\n 'gneq': '\\u2A88',\n 'gnsim': '\\u22E7',\n 'gopf': '\\uD835\\uDD58',\n 'gscr': '\\u210A',\n 'gsime': '\\u2A8E',\n 'gsiml': '\\u2A90',\n 'gtcc': '\\u2AA7',\n 'gtcir': '\\u2A7A',\n 'gtdot': '\\u22D7',\n 'gtrdot': '\\u22D7',\n 'gtlPar': '\\u2995',\n 'gtquest': '\\u2A7C',\n 'gtrarr': '\\u2978',\n 'gvertneqq': '\\u2269\\uFE00',\n 'gvnE': '\\u2269\\uFE00',\n 'hardcy': '\\u044A',\n 'harrcir': '\\u2948',\n 'harrw': '\\u21AD',\n 'leftrightsquigarrow': '\\u21AD',\n 'hbar': '\\u210F',\n 'hslash': '\\u210F',\n 'planck': '\\u210F',\n 'plankv': '\\u210F',\n 'hcirc': '\\u0125',\n 'hearts': '\\u2665',\n 'heartsuit': '\\u2665',\n 'hellip': '\\u2026',\n 'mldr': '\\u2026',\n 'hercon': '\\u22B9',\n 'hfr': '\\uD835\\uDD25',\n 'hksearow': '\\u2925',\n 'searhk': '\\u2925',\n 'hkswarow': '\\u2926',\n 'swarhk': '\\u2926',\n 'hoarr': '\\u21FF',\n 'homtht': '\\u223B',\n 'hookleftarrow': '\\u21A9',\n 'larrhk': '\\u21A9',\n 'hookrightarrow': '\\u21AA',\n 'rarrhk': '\\u21AA',\n 'hopf': '\\uD835\\uDD59',\n 'horbar': '\\u2015',\n 'hscr': '\\uD835\\uDCBD',\n 'hstrok': '\\u0127',\n 'hybull': '\\u2043',\n 'iacute': '\\u00ED',\n 'icirc': '\\u00EE',\n 'icy': '\\u0438',\n 'iecy': '\\u0435',\n 'iexcl': '\\u00A1',\n 'ifr': '\\uD835\\uDD26',\n 'igrave': '\\u00EC',\n 'iiiint': '\\u2A0C',\n 'qint': '\\u2A0C',\n 'iiint': '\\u222D',\n 'tint': '\\u222D',\n 'iinfin': '\\u29DC',\n 'iiota': '\\u2129',\n 'ijlig': '\\u0133',\n 'imacr': '\\u012B',\n 'imath': '\\u0131',\n 'inodot': '\\u0131',\n 'imof': '\\u22B7',\n 'imped': '\\u01B5',\n 'incare': '\\u2105',\n 'infin': '\\u221E',\n 'infintie': '\\u29DD',\n 'intcal': '\\u22BA',\n 'intercal': '\\u22BA',\n 'intlarhk': '\\u2A17',\n 'intprod': '\\u2A3C',\n 'iprod': '\\u2A3C',\n 'iocy': '\\u0451',\n 'iogon': '\\u012F',\n 'iopf': '\\uD835\\uDD5A',\n 'iota': '\\u03B9',\n 'iquest': '\\u00BF',\n 'iscr': '\\uD835\\uDCBE',\n 'isinE': '\\u22F9',\n 'isindot': '\\u22F5',\n 'isins': '\\u22F4',\n 'isinsv': '\\u22F3',\n 'itilde': '\\u0129',\n 'iukcy': '\\u0456',\n 'iuml': '\\u00EF',\n 'jcirc': '\\u0135',\n 'jcy': '\\u0439',\n 'jfr': '\\uD835\\uDD27',\n 'jmath': '\\u0237',\n 'jopf': '\\uD835\\uDD5B',\n 'jscr': '\\uD835\\uDCBF',\n 'jsercy': '\\u0458',\n 'jukcy': '\\u0454',\n 'kappa': '\\u03BA',\n 'kappav': '\\u03F0',\n 'varkappa': '\\u03F0',\n 'kcedil': '\\u0137',\n 'kcy': '\\u043A',\n 'kfr': '\\uD835\\uDD28',\n 'kgreen': '\\u0138',\n 'khcy': '\\u0445',\n 'kjcy': '\\u045C',\n 'kopf': '\\uD835\\uDD5C',\n 'kscr': '\\uD835\\uDCC0',\n 'lAtail': '\\u291B',\n 'lBarr': '\\u290E',\n 'lEg': '\\u2A8B',\n 'lesseqqgtr': '\\u2A8B',\n 'lHar': '\\u2962',\n 'lacute': '\\u013A',\n 'laemptyv': '\\u29B4',\n 'lambda': '\\u03BB',\n 'langd': '\\u2991',\n 'lap': '\\u2A85',\n 'lessapprox': '\\u2A85',\n 'laquo': '\\u00AB',\n 'larrbfs': '\\u291F',\n 'larrfs': '\\u291D',\n 'larrlp': '\\u21AB',\n 'looparrowleft': '\\u21AB',\n 'larrpl': '\\u2939',\n 'larrsim': '\\u2973',\n 'larrtl': '\\u21A2',\n 'leftarrowtail': '\\u21A2',\n 'lat': '\\u2AAB',\n 'latail': '\\u2919',\n 'late': '\\u2AAD',\n 'lates': '\\u2AAD\\uFE00',\n 'lbarr': '\\u290C',\n 'lbbrk': '\\u2772',\n 'lbrace': '\\u007B',\n 'lcub': '\\u007B',\n 'lbrack': '\\u005B',\n 'lsqb': '\\u005B',\n 'lbrke': '\\u298B',\n 'lbrksld': '\\u298F',\n 'lbrkslu': '\\u298D',\n 'lcaron': '\\u013E',\n 'lcedil': '\\u013C',\n 'lcy': '\\u043B',\n 'ldca': '\\u2936',\n 'ldrdhar': '\\u2967',\n 'ldrushar': '\\u294B',\n 'ldsh': '\\u21B2',\n 'le': '\\u2264',\n 'leq': '\\u2264',\n 'leftleftarrows': '\\u21C7',\n 'llarr': '\\u21C7',\n 'leftthreetimes': '\\u22CB',\n 'lthree': '\\u22CB',\n 'lescc': '\\u2AA8',\n 'lesdot': '\\u2A7F',\n 'lesdoto': '\\u2A81',\n 'lesdotor': '\\u2A83',\n 'lesg': '\\u22DA\\uFE00',\n 'lesges': '\\u2A93',\n 'lessdot': '\\u22D6',\n 'ltdot': '\\u22D6',\n 'lfisht': '\\u297C',\n 'lfr': '\\uD835\\uDD29',\n 'lgE': '\\u2A91',\n 'lharul': '\\u296A',\n 'lhblk': '\\u2584',\n 'ljcy': '\\u0459',\n 'llhard': '\\u296B',\n 'lltri': '\\u25FA',\n 'lmidot': '\\u0140',\n 'lmoust': '\\u23B0',\n 'lmoustache': '\\u23B0',\n 'lnE': '\\u2268',\n 'lneqq': '\\u2268',\n 'lnap': '\\u2A89',\n 'lnapprox': '\\u2A89',\n 'lne': '\\u2A87',\n 'lneq': '\\u2A87',\n 'lnsim': '\\u22E6',\n 'loang': '\\u27EC',\n 'loarr': '\\u21FD',\n 'longmapsto': '\\u27FC',\n 'xmap': '\\u27FC',\n 'looparrowright': '\\u21AC',\n 'rarrlp': '\\u21AC',\n 'lopar': '\\u2985',\n 'lopf': '\\uD835\\uDD5D',\n 'loplus': '\\u2A2D',\n 'lotimes': '\\u2A34',\n 'lowast': '\\u2217',\n 'loz': '\\u25CA',\n 'lozenge': '\\u25CA',\n 'lpar': '\\u0028',\n 'lparlt': '\\u2993',\n 'lrhard': '\\u296D',\n 'lrm': '\\u200E',\n 'lrtri': '\\u22BF',\n 'lsaquo': '\\u2039',\n 'lscr': '\\uD835\\uDCC1',\n 'lsime': '\\u2A8D',\n 'lsimg': '\\u2A8F',\n 'lsquor': '\\u201A',\n 'sbquo': '\\u201A',\n 'lstrok': '\\u0142',\n 'ltcc': '\\u2AA6',\n 'ltcir': '\\u2A79',\n 'ltimes': '\\u22C9',\n 'ltlarr': '\\u2976',\n 'ltquest': '\\u2A7B',\n 'ltrPar': '\\u2996',\n 'ltri': '\\u25C3',\n 'triangleleft': '\\u25C3',\n 'lurdshar': '\\u294A',\n 'luruhar': '\\u2966',\n 'lvertneqq': '\\u2268\\uFE00',\n 'lvnE': '\\u2268\\uFE00',\n 'mDDot': '\\u223A',\n 'macr': '\\u00AF',\n 'strns': '\\u00AF',\n 'male': '\\u2642',\n 'malt': '\\u2720',\n 'maltese': '\\u2720',\n 'marker': '\\u25AE',\n 'mcomma': '\\u2A29',\n 'mcy': '\\u043C',\n 'mdash': '\\u2014',\n 'mfr': '\\uD835\\uDD2A',\n 'mho': '\\u2127',\n 'micro': '\\u00B5',\n 'midcir': '\\u2AF0',\n 'minus': '\\u2212',\n 'minusdu': '\\u2A2A',\n 'mlcp': '\\u2ADB',\n 'models': '\\u22A7',\n 'mopf': '\\uD835\\uDD5E',\n 'mscr': '\\uD835\\uDCC2',\n 'mu': '\\u03BC',\n 'multimap': '\\u22B8',\n 'mumap': '\\u22B8',\n 'nGg': '\\u22D9\\u0338',\n 'nGt': '\\u226B\\u20D2',\n 'nLeftarrow': '\\u21CD',\n 'nlArr': '\\u21CD',\n 'nLeftrightarrow': '\\u21CE',\n 'nhArr': '\\u21CE',\n 'nLl': '\\u22D8\\u0338',\n 'nLt': '\\u226A\\u20D2',\n 'nRightarrow': '\\u21CF',\n 'nrArr': '\\u21CF',\n 'nVDash': '\\u22AF',\n 'nVdash': '\\u22AE',\n 'nacute': '\\u0144',\n 'nang': '\\u2220\\u20D2',\n 'napE': '\\u2A70\\u0338',\n 'napid': '\\u224B\\u0338',\n 'napos': '\\u0149',\n 'natur': '\\u266E',\n 'natural': '\\u266E',\n 'ncap': '\\u2A43',\n 'ncaron': '\\u0148',\n 'ncedil': '\\u0146',\n 'ncongdot': '\\u2A6D\\u0338',\n 'ncup': '\\u2A42',\n 'ncy': '\\u043D',\n 'ndash': '\\u2013',\n 'neArr': '\\u21D7',\n 'nearhk': '\\u2924',\n 'nedot': '\\u2250\\u0338',\n 'nesear': '\\u2928',\n 'toea': '\\u2928',\n 'nfr': '\\uD835\\uDD2B',\n 'nharr': '\\u21AE',\n 'nleftrightarrow': '\\u21AE',\n 'nhpar': '\\u2AF2',\n 'nis': '\\u22FC',\n 'nisd': '\\u22FA',\n 'njcy': '\\u045A',\n 'nlE': '\\u2266\\u0338',\n 'nleqq': '\\u2266\\u0338',\n 'nlarr': '\\u219A',\n 'nleftarrow': '\\u219A',\n 'nldr': '\\u2025',\n 'nopf': '\\uD835\\uDD5F',\n 'not': '\\u00AC',\n 'notinE': '\\u22F9\\u0338',\n 'notindot': '\\u22F5\\u0338',\n 'notinvb': '\\u22F7',\n 'notinvc': '\\u22F6',\n 'notnivb': '\\u22FE',\n 'notnivc': '\\u22FD',\n 'nparsl': '\\u2AFD\\u20E5',\n 'npart': '\\u2202\\u0338',\n 'npolint': '\\u2A14',\n 'nrarr': '\\u219B',\n 'nrightarrow': '\\u219B',\n 'nrarrc': '\\u2933\\u0338',\n 'nrarrw': '\\u219D\\u0338',\n 'nscr': '\\uD835\\uDCC3',\n 'nsub': '\\u2284',\n 'nsubE': '\\u2AC5\\u0338',\n 'nsubseteqq': '\\u2AC5\\u0338',\n 'nsup': '\\u2285',\n 'nsupE': '\\u2AC6\\u0338',\n 'nsupseteqq': '\\u2AC6\\u0338',\n 'ntilde': '\\u00F1',\n 'nu': '\\u03BD',\n 'num': '\\u0023',\n 'numero': '\\u2116',\n 'numsp': '\\u2007',\n 'nvDash': '\\u22AD',\n 'nvHarr': '\\u2904',\n 'nvap': '\\u224D\\u20D2',\n 'nvdash': '\\u22AC',\n 'nvge': '\\u2265\\u20D2',\n 'nvgt': '\\u003E\\u20D2',\n 'nvinfin': '\\u29DE',\n 'nvlArr': '\\u2902',\n 'nvle': '\\u2264\\u20D2',\n 'nvlt': '\\u003C\\u20D2',\n 'nvltrie': '\\u22B4\\u20D2',\n 'nvrArr': '\\u2903',\n 'nvrtrie': '\\u22B5\\u20D2',\n 'nvsim': '\\u223C\\u20D2',\n 'nwArr': '\\u21D6',\n 'nwarhk': '\\u2923',\n 'nwnear': '\\u2927',\n 'oacute': '\\u00F3',\n 'ocirc': '\\u00F4',\n 'ocy': '\\u043E',\n 'odblac': '\\u0151',\n 'odiv': '\\u2A38',\n 'odsold': '\\u29BC',\n 'oelig': '\\u0153',\n 'ofcir': '\\u29BF',\n 'ofr': '\\uD835\\uDD2C',\n 'ogon': '\\u02DB',\n 'ograve': '\\u00F2',\n 'ogt': '\\u29C1',\n 'ohbar': '\\u29B5',\n 'olcir': '\\u29BE',\n 'olcross': '\\u29BB',\n 'olt': '\\u29C0',\n 'omacr': '\\u014D',\n 'omega': '\\u03C9',\n 'omicron': '\\u03BF',\n 'omid': '\\u29B6',\n 'oopf': '\\uD835\\uDD60',\n 'opar': '\\u29B7',\n 'operp': '\\u29B9',\n 'or': '\\u2228',\n 'vee': '\\u2228',\n 'ord': '\\u2A5D',\n 'order': '\\u2134',\n 'orderof': '\\u2134',\n 'oscr': '\\u2134',\n 'ordf': '\\u00AA',\n 'ordm': '\\u00BA',\n 'origof': '\\u22B6',\n 'oror': '\\u2A56',\n 'orslope': '\\u2A57',\n 'orv': '\\u2A5B',\n 'oslash': '\\u00F8',\n 'osol': '\\u2298',\n 'otilde': '\\u00F5',\n 'otimesas': '\\u2A36',\n 'ouml': '\\u00F6',\n 'ovbar': '\\u233D',\n 'para': '\\u00B6',\n 'parsim': '\\u2AF3',\n 'parsl': '\\u2AFD',\n 'pcy': '\\u043F',\n 'percnt': '\\u0025',\n 'period': '\\u002E',\n 'permil': '\\u2030',\n 'pertenk': '\\u2031',\n 'pfr': '\\uD835\\uDD2D',\n 'phi': '\\u03C6',\n 'phiv': '\\u03D5',\n 'straightphi': '\\u03D5',\n 'varphi': '\\u03D5',\n 'phone': '\\u260E',\n 'pi': '\\u03C0',\n 'piv': '\\u03D6',\n 'varpi': '\\u03D6',\n 'planckh': '\\u210E',\n 'plus': '\\u002B',\n 'plusacir': '\\u2A23',\n 'pluscir': '\\u2A22',\n 'plusdu': '\\u2A25',\n 'pluse': '\\u2A72',\n 'plussim': '\\u2A26',\n 'plustwo': '\\u2A27',\n 'pointint': '\\u2A15',\n 'popf': '\\uD835\\uDD61',\n 'pound': '\\u00A3',\n 'prE': '\\u2AB3',\n 'prap': '\\u2AB7',\n 'precapprox': '\\u2AB7',\n 'precnapprox': '\\u2AB9',\n 'prnap': '\\u2AB9',\n 'precneqq': '\\u2AB5',\n 'prnE': '\\u2AB5',\n 'precnsim': '\\u22E8',\n 'prnsim': '\\u22E8',\n 'prime': '\\u2032',\n 'profalar': '\\u232E',\n 'profline': '\\u2312',\n 'profsurf': '\\u2313',\n 'prurel': '\\u22B0',\n 'pscr': '\\uD835\\uDCC5',\n 'psi': '\\u03C8',\n 'puncsp': '\\u2008',\n 'qfr': '\\uD835\\uDD2E',\n 'qopf': '\\uD835\\uDD62',\n 'qprime': '\\u2057',\n 'qscr': '\\uD835\\uDCC6',\n 'quatint': '\\u2A16',\n 'quest': '\\u003F',\n 'rAtail': '\\u291C',\n 'rHar': '\\u2964',\n 'race': '\\u223D\\u0331',\n 'racute': '\\u0155',\n 'raemptyv': '\\u29B3',\n 'rangd': '\\u2992',\n 'range': '\\u29A5',\n 'raquo': '\\u00BB',\n 'rarrap': '\\u2975',\n 'rarrbfs': '\\u2920',\n 'rarrc': '\\u2933',\n 'rarrfs': '\\u291E',\n 'rarrpl': '\\u2945',\n 'rarrsim': '\\u2974',\n 'rarrtl': '\\u21A3',\n 'rightarrowtail': '\\u21A3',\n 'rarrw': '\\u219D',\n 'rightsquigarrow': '\\u219D',\n 'ratail': '\\u291A',\n 'ratio': '\\u2236',\n 'rbbrk': '\\u2773',\n 'rbrace': '\\u007D',\n 'rcub': '\\u007D',\n 'rbrack': '\\u005D',\n 'rsqb': '\\u005D',\n 'rbrke': '\\u298C',\n 'rbrksld': '\\u298E',\n 'rbrkslu': '\\u2990',\n 'rcaron': '\\u0159',\n 'rcedil': '\\u0157',\n 'rcy': '\\u0440',\n 'rdca': '\\u2937',\n 'rdldhar': '\\u2969',\n 'rdsh': '\\u21B3',\n 'rect': '\\u25AD',\n 'rfisht': '\\u297D',\n 'rfr': '\\uD835\\uDD2F',\n 'rharul': '\\u296C',\n 'rho': '\\u03C1',\n 'rhov': '\\u03F1',\n 'varrho': '\\u03F1',\n 'rightrightarrows': '\\u21C9',\n 'rrarr': '\\u21C9',\n 'rightthreetimes': '\\u22CC',\n 'rthree': '\\u22CC',\n 'ring': '\\u02DA',\n 'rlm': '\\u200F',\n 'rmoust': '\\u23B1',\n 'rmoustache': '\\u23B1',\n 'rnmid': '\\u2AEE',\n 'roang': '\\u27ED',\n 'roarr': '\\u21FE',\n 'ropar': '\\u2986',\n 'ropf': '\\uD835\\uDD63',\n 'roplus': '\\u2A2E',\n 'rotimes': '\\u2A35',\n 'rpar': '\\u0029',\n 'rpargt': '\\u2994',\n 'rppolint': '\\u2A12',\n 'rsaquo': '\\u203A',\n 'rscr': '\\uD835\\uDCC7',\n 'rtimes': '\\u22CA',\n 'rtri': '\\u25B9',\n 'triangleright': '\\u25B9',\n 'rtriltri': '\\u29CE',\n 'ruluhar': '\\u2968',\n 'rx': '\\u211E',\n 'sacute': '\\u015B',\n 'scE': '\\u2AB4',\n 'scap': '\\u2AB8',\n 'succapprox': '\\u2AB8',\n 'scaron': '\\u0161',\n 'scedil': '\\u015F',\n 'scirc': '\\u015D',\n 'scnE': '\\u2AB6',\n 'succneqq': '\\u2AB6',\n 'scnap': '\\u2ABA',\n 'succnapprox': '\\u2ABA',\n 'scnsim': '\\u22E9',\n 'succnsim': '\\u22E9',\n 'scpolint': '\\u2A13',\n 'scy': '\\u0441',\n 'sdot': '\\u22C5',\n 'sdote': '\\u2A66',\n 'seArr': '\\u21D8',\n 'sect': '\\u00A7',\n 'semi': '\\u003B',\n 'seswar': '\\u2929',\n 'tosa': '\\u2929',\n 'sext': '\\u2736',\n 'sfr': '\\uD835\\uDD30',\n 'sharp': '\\u266F',\n 'shchcy': '\\u0449',\n 'shcy': '\\u0448',\n 'shy': '\\u00AD',\n 'sigma': '\\u03C3',\n 'sigmaf': '\\u03C2',\n 'sigmav': '\\u03C2',\n 'varsigma': '\\u03C2',\n 'simdot': '\\u2A6A',\n 'simg': '\\u2A9E',\n 'simgE': '\\u2AA0',\n 'siml': '\\u2A9D',\n 'simlE': '\\u2A9F',\n 'simne': '\\u2246',\n 'simplus': '\\u2A24',\n 'simrarr': '\\u2972',\n 'smashp': '\\u2A33',\n 'smeparsl': '\\u29E4',\n 'smile': '\\u2323',\n 'ssmile': '\\u2323',\n 'smt': '\\u2AAA',\n 'smte': '\\u2AAC',\n 'smtes': '\\u2AAC\\uFE00',\n 'softcy': '\\u044C',\n 'sol': '\\u002F',\n 'solb': '\\u29C4',\n 'solbar': '\\u233F',\n 'sopf': '\\uD835\\uDD64',\n 'spades': '\\u2660',\n 'spadesuit': '\\u2660',\n 'sqcaps': '\\u2293\\uFE00',\n 'sqcups': '\\u2294\\uFE00',\n 'sscr': '\\uD835\\uDCC8',\n 'star': '\\u2606',\n 'sub': '\\u2282',\n 'subset': '\\u2282',\n 'subE': '\\u2AC5',\n 'subseteqq': '\\u2AC5',\n 'subdot': '\\u2ABD',\n 'subedot': '\\u2AC3',\n 'submult': '\\u2AC1',\n 'subnE': '\\u2ACB',\n 'subsetneqq': '\\u2ACB',\n 'subne': '\\u228A',\n 'subsetneq': '\\u228A',\n 'subplus': '\\u2ABF',\n 'subrarr': '\\u2979',\n 'subsim': '\\u2AC7',\n 'subsub': '\\u2AD5',\n 'subsup': '\\u2AD3',\n 'sung': '\\u266A',\n 'sup1': '\\u00B9',\n 'sup2': '\\u00B2',\n 'sup3': '\\u00B3',\n 'supE': '\\u2AC6',\n 'supseteqq': '\\u2AC6',\n 'supdot': '\\u2ABE',\n 'supdsub': '\\u2AD8',\n 'supedot': '\\u2AC4',\n 'suphsol': '\\u27C9',\n 'suphsub': '\\u2AD7',\n 'suplarr': '\\u297B',\n 'supmult': '\\u2AC2',\n 'supnE': '\\u2ACC',\n 'supsetneqq': '\\u2ACC',\n 'supne': '\\u228B',\n 'supsetneq': '\\u228B',\n 'supplus': '\\u2AC0',\n 'supsim': '\\u2AC8',\n 'supsub': '\\u2AD4',\n 'supsup': '\\u2AD6',\n 'swArr': '\\u21D9',\n 'swnwar': '\\u292A',\n 'szlig': '\\u00DF',\n 'target': '\\u2316',\n 'tau': '\\u03C4',\n 'tcaron': '\\u0165',\n 'tcedil': '\\u0163',\n 'tcy': '\\u0442',\n 'telrec': '\\u2315',\n 'tfr': '\\uD835\\uDD31',\n 'theta': '\\u03B8',\n 'thetasym': '\\u03D1',\n 'thetav': '\\u03D1',\n 'vartheta': '\\u03D1',\n 'thorn': '\\u00FE',\n 'times': '\\u00D7',\n 'timesbar': '\\u2A31',\n 'timesd': '\\u2A30',\n 'topbot': '\\u2336',\n 'topcir': '\\u2AF1',\n 'topf': '\\uD835\\uDD65',\n 'topfork': '\\u2ADA',\n 'tprime': '\\u2034',\n 'triangle': '\\u25B5',\n 'utri': '\\u25B5',\n 'triangleq': '\\u225C',\n 'trie': '\\u225C',\n 'tridot': '\\u25EC',\n 'triminus': '\\u2A3A',\n 'triplus': '\\u2A39',\n 'trisb': '\\u29CD',\n 'tritime': '\\u2A3B',\n 'trpezium': '\\u23E2',\n 'tscr': '\\uD835\\uDCC9',\n 'tscy': '\\u0446',\n 'tshcy': '\\u045B',\n 'tstrok': '\\u0167',\n 'uHar': '\\u2963',\n 'uacute': '\\u00FA',\n 'ubrcy': '\\u045E',\n 'ubreve': '\\u016D',\n 'ucirc': '\\u00FB',\n 'ucy': '\\u0443',\n 'udblac': '\\u0171',\n 'ufisht': '\\u297E',\n 'ufr': '\\uD835\\uDD32',\n 'ugrave': '\\u00F9',\n 'uhblk': '\\u2580',\n 'ulcorn': '\\u231C',\n 'ulcorner': '\\u231C',\n 'ulcrop': '\\u230F',\n 'ultri': '\\u25F8',\n 'umacr': '\\u016B',\n 'uogon': '\\u0173',\n 'uopf': '\\uD835\\uDD66',\n 'upsi': '\\u03C5',\n 'upsilon': '\\u03C5',\n 'upuparrows': '\\u21C8',\n 'uuarr': '\\u21C8',\n 'urcorn': '\\u231D',\n 'urcorner': '\\u231D',\n 'urcrop': '\\u230E',\n 'uring': '\\u016F',\n 'urtri': '\\u25F9',\n 'uscr': '\\uD835\\uDCCA',\n 'utdot': '\\u22F0',\n 'utilde': '\\u0169',\n 'uuml': '\\u00FC',\n 'uwangle': '\\u29A7',\n 'vBar': '\\u2AE8',\n 'vBarv': '\\u2AE9',\n 'vangrt': '\\u299C',\n 'varsubsetneq': '\\u228A\\uFE00',\n 'vsubne': '\\u228A\\uFE00',\n 'varsubsetneqq': '\\u2ACB\\uFE00',\n 'vsubnE': '\\u2ACB\\uFE00',\n 'varsupsetneq': '\\u228B\\uFE00',\n 'vsupne': '\\u228B\\uFE00',\n 'varsupsetneqq': '\\u2ACC\\uFE00',\n 'vsupnE': '\\u2ACC\\uFE00',\n 'vcy': '\\u0432',\n 'veebar': '\\u22BB',\n 'veeeq': '\\u225A',\n 'vellip': '\\u22EE',\n 'vfr': '\\uD835\\uDD33',\n 'vopf': '\\uD835\\uDD67',\n 'vscr': '\\uD835\\uDCCB',\n 'vzigzag': '\\u299A',\n 'wcirc': '\\u0175',\n 'wedbar': '\\u2A5F',\n 'wedgeq': '\\u2259',\n 'weierp': '\\u2118',\n 'wp': '\\u2118',\n 'wfr': '\\uD835\\uDD34',\n 'wopf': '\\uD835\\uDD68',\n 'wscr': '\\uD835\\uDCCC',\n 'xfr': '\\uD835\\uDD35',\n 'xi': '\\u03BE',\n 'xnis': '\\u22FB',\n 'xopf': '\\uD835\\uDD69',\n 'xscr': '\\uD835\\uDCCD',\n 'yacute': '\\u00FD',\n 'yacy': '\\u044F',\n 'ycirc': '\\u0177',\n 'ycy': '\\u044B',\n 'yen': '\\u00A5',\n 'yfr': '\\uD835\\uDD36',\n 'yicy': '\\u0457',\n 'yopf': '\\uD835\\uDD6A',\n 'yscr': '\\uD835\\uDCCE',\n 'yucy': '\\u044E',\n 'yuml': '\\u00FF',\n 'zacute': '\\u017A',\n 'zcaron': '\\u017E',\n 'zcy': '\\u0437',\n 'zdot': '\\u017C',\n 'zeta': '\\u03B6',\n 'zfr': '\\uD835\\uDD37',\n 'zhcy': '\\u0436',\n 'zigrarr': '\\u21DD',\n 'zopf': '\\uD835\\uDD6B',\n 'zscr': '\\uD835\\uDCCF',\n 'zwj': '\\u200D',\n 'zwnj': '\\u200C'\n};\nconst NGSP_UNICODE = '\\uE500';\nNAMED_ENTITIES['ngsp'] = NGSP_UNICODE;\n\nclass TokenizeResult {\n tokens;\n errors;\n nonNormalizedIcuExpressions;\n constructor(tokens, errors, nonNormalizedIcuExpressions) {\n this.tokens = tokens;\n this.errors = errors;\n this.nonNormalizedIcuExpressions = nonNormalizedIcuExpressions;\n }\n}\nfunction tokenize(source, url, getTagDefinition, options = {}) {\n const tokenizer = new _Tokenizer(new ParseSourceFile(source, url), getTagDefinition, options);\n tokenizer.tokenize();\n return new TokenizeResult(mergeTextTokens(tokenizer.tokens), tokenizer.errors, tokenizer.nonNormalizedIcuExpressions);\n}\nconst _CR_OR_CRLF_REGEXP = /\\r\\n?/g;\nfunction _unexpectedCharacterErrorMsg(charCode) {\n const char = charCode === $EOF ? 'EOF' : String.fromCharCode(charCode);\n return `Unexpected character \"${char}\"`;\n}\nfunction _unknownEntityErrorMsg(entitySrc) {\n return `Unknown entity \"${entitySrc}\" - use the \"&#<decimal>;\" or \"&#x<hex>;\" syntax`;\n}\nfunction _unparsableEntityErrorMsg(type, entityStr) {\n return `Unable to parse entity \"${entityStr}\" - ${type} character reference entities must end with \";\"`;\n}\nvar CharacterReferenceType;\n(function (CharacterReferenceType) {\n CharacterReferenceType[\"HEX\"] = \"hexadecimal\";\n CharacterReferenceType[\"DEC\"] = \"decimal\";\n})(CharacterReferenceType || (CharacterReferenceType = {}));\nconst SUPPORTED_BLOCKS = ['@if', '@else', '@for', '@switch', '@case', '@default', '@empty', '@defer', '@placeholder', '@loading', '@error'];\nconst INTERPOLATION = {\n start: '{{',\n end: '}}'\n};\nclass _Tokenizer {\n _getTagDefinition;\n _cursor;\n _tokenizeIcu;\n _leadingTriviaCodePoints;\n _currentTokenStart = null;\n _currentTokenType = null;\n _expansionCaseStack = [];\n _openDirectiveCount = 0;\n _inInterpolation = false;\n _preserveLineEndings;\n _i18nNormalizeLineEndingsInICUs;\n _tokenizeBlocks;\n _tokenizeLet;\n _selectorlessEnabled;\n tokens = [];\n errors = [];\n nonNormalizedIcuExpressions = [];\n constructor(_file, _getTagDefinition, options) {\n this._getTagDefinition = _getTagDefinition;\n this._tokenizeIcu = options.tokenizeExpansionForms || false;\n this._leadingTriviaCodePoints = options.leadingTriviaChars && options.leadingTriviaChars.map(c => c.codePointAt(0) || 0);\n const range = options.range || {\n endPos: _file.content.length,\n startPos: 0,\n startLine: 0,\n startCol: 0\n };\n this._cursor = options.escapedString ? new EscapedCharacterCursor(_file, range) : new PlainCharacterCursor(_file, range);\n this._preserveLineEndings = options.preserveLineEndings || false;\n this._i18nNormalizeLineEndingsInICUs = options.i18nNormalizeLineEndingsInICUs || false;\n this._tokenizeBlocks = options.tokenizeBlocks ?? true;\n this._tokenizeLet = options.tokenizeLet ?? true;\n this._selectorlessEnabled = options.selectorlessEnabled ?? false;\n try {\n this._cursor.init();\n } catch (e) {\n this.handleError(e);\n }\n }\n _processCarriageReturns(content) {\n if (this._preserveLineEndings) {\n return content;\n }\n return content.replace(_CR_OR_CRLF_REGEXP, '\\n');\n }\n tokenize() {\n while (this._cursor.peek() !== $EOF) {\n const start = this._cursor.clone();\n try {\n if (this._attemptCharCode($LT)) {\n if (this._attemptCharCode($BANG)) {\n if (this._attemptCharCode($LBRACKET)) {\n this._consumeCdata(start);\n } else if (this._attemptCharCode($MINUS)) {\n this._consumeComment(start);\n } else {\n this._consumeDocType(start);\n }\n } else if (this._attemptCharCode($SLASH)) {\n this._consumeTagClose(start);\n } else {\n this._consumeTagOpen(start);\n }\n } else if (this._tokenizeLet && this._cursor.peek() === $AT && !this._inInterpolation && this._isLetStart()) {\n this._consumeLetDeclaration(start);\n } else if (this._tokenizeBlocks && this._isBlockStart()) {\n this._consumeBlockStart(start);\n } else if (this._tokenizeBlocks && !this._inInterpolation && !this._isInExpansionCase() && !this._isInExpansionForm() && this._attemptCharCode($RBRACE)) {\n this._consumeBlockEnd(start);\n } else if (!(this._tokenizeIcu && this._tokenizeExpansionForm())) {\n this._consumeWithInterpolation(5, 8, () => this._isTextEnd(), () => this._isTagStart());\n }\n } catch (e) {\n this.handleError(e);\n }\n }\n this._beginToken(41);\n this._endToken([]);\n }\n _getBlockName() {\n let spacesInNameAllowed = false;\n const nameCursor = this._cursor.clone();\n this._attemptCharCodeUntilFn(code => {\n if (isWhitespace(code)) {\n return !spacesInNameAllowed;\n }\n if (isBlockNameChar(code)) {\n spacesInNameAllowed = true;\n return false;\n }\n return true;\n });\n return this._cursor.getChars(nameCursor).trim();\n }\n _consumeBlockStart(start) {\n this._requireCharCode($AT);\n this._beginToken(24, start);\n const startToken = this._endToken([this._getBlockName()]);\n if (startToken.parts[0] === 'default never' && this._attemptCharCode($SEMICOLON)) {\n this._beginToken(25);\n this._endToken([]);\n this._beginToken(26);\n this._endToken([]);\n return;\n }\n if (this._cursor.peek() === $LPAREN) {\n this._cursor.advance();\n this._consumeBlockParameters();\n this._attemptCharCodeUntilFn(isNotWhitespace);\n if (this._attemptCharCode($RPAREN)) {\n this._attemptCharCodeUntilFn(isNotWhitespace);\n } else {\n startToken.type = 28;\n return;\n }\n }\n if (this._attemptCharCode($LBRACE)) {\n this._beginToken(25);\n this._endToken([]);\n } else if (this._isBlockStart() && (startToken.parts[0] === 'case' || startToken.parts[0] === 'default')) {\n this._beginToken(25);\n this._endToken([]);\n this._beginToken(26);\n this._endToken([]);\n } else {\n startToken.type = 28;\n }\n }\n _consumeBlockEnd(start) {\n this._beginToken(26, start);\n this._endToken([]);\n }\n _consumeBlockParameters() {\n this._attemptCharCodeUntilFn(isBlockParameterChar);\n while (this._cursor.peek() !== $RPAREN && this._cursor.peek() !== $EOF) {\n this._beginToken(27);\n const start = this._cursor.clone();\n let inQuote = null;\n let openParens = 0;\n while (this._cursor.peek() !== $SEMICOLON && this._cursor.peek() !== $EOF || inQuote !== null) {\n const char = this._cursor.peek();\n if (char === $BACKSLASH) {\n this._cursor.advance();\n } else if (char === inQuote) {\n inQuote = null;\n } else if (inQuote === null && isQuote(char)) {\n inQuote = char;\n } else if (char === $LPAREN && inQuote === null) {\n openParens++;\n } else if (char === $RPAREN && inQuote === null) {\n if (openParens === 0) {\n break;\n } else if (openParens > 0) {\n openParens--;\n }\n }\n this._cursor.advance();\n }\n this._endToken([this._cursor.getChars(start)]);\n this._attemptCharCodeUntilFn(isBlockParameterChar);\n }\n }\n _consumeLetDeclaration(start) {\n this._requireStr('@let');\n this._beginToken(29, start);\n if (isWhitespace(this._cursor.peek())) {\n this._attemptCharCodeUntilFn(isNotWhitespace);\n } else {\n const token = this._endToken([this._cursor.getChars(start)]);\n token.type = 32;\n return;\n }\n const startToken = this._endToken([this._getLetDeclarationName()]);\n this._attemptCharCodeUntilFn(isNotWhitespace);\n if (!this._attemptCharCode($EQ)) {\n startToken.type = 32;\n return;\n }\n this._attemptCharCodeUntilFn(code => isNotWhitespace(code) && !isNewLine(code));\n this._consumeLetDeclarationValue();\n const endChar = this._cursor.peek();\n if (endChar === $SEMICOLON) {\n this._beginToken(31);\n this._endToken([]);\n this._cursor.advance();\n } else {\n startToken.type = 32;\n startToken.sourceSpan = this._cursor.getSpan(start);\n }\n }\n _getLetDeclarationName() {\n const nameCursor = this._cursor.clone();\n let allowDigit = false;\n this._attemptCharCodeUntilFn(code => {\n if (isAsciiLetter(code) || code === $$ || code === $_ || allowDigit && isDigit(code)) {\n allowDigit = true;\n return false;\n }\n return true;\n });\n return this._cursor.getChars(nameCursor).trim();\n }\n _consumeLetDeclarationValue() {\n const start = this._cursor.clone();\n this._beginToken(30, start);\n while (this._cursor.peek() !== $EOF) {\n const char = this._cursor.peek();\n if (char === $SEMICOLON) {\n break;\n }\n if (isQuote(char)) {\n this._cursor.advance();\n this._attemptCharCodeUntilFn(inner => {\n if (inner === $BACKSLASH) {\n this._cursor.advance();\n return false;\n }\n return inner === char;\n });\n }\n this._cursor.advance();\n }\n this._endToken([this._cursor.getChars(start)]);\n }\n _tokenizeExpansionForm() {\n if (this.isExpansionFormStart()) {\n this._consumeExpansionFormStart();\n return true;\n }\n if (isExpansionCaseStart(this._cursor.peek()) && this._isInExpansionForm()) {\n this._consumeExpansionCaseStart();\n return true;\n }\n if (this._cursor.peek() === $RBRACE) {\n if (this._isInExpansionCase()) {\n this._consumeExpansionCaseEnd();\n return true;\n }\n if (this._isInExpansionForm()) {\n this._consumeExpansionFormEnd();\n return true;\n }\n }\n return false;\n }\n _beginToken(type, start = this._cursor.clone()) {\n this._currentTokenStart = start;\n this._currentTokenType = type;\n }\n _endToken(parts, end) {\n if (this._currentTokenStart === null) {\n throw new ParseError(this._cursor.getSpan(end), 'Programming error - attempted to end a token when there was no start to the token');\n }\n if (this._currentTokenType === null) {\n throw new ParseError(this._cursor.getSpan(this._currentTokenStart), 'Programming error - attempted to end a token which has no token type');\n }\n const token = {\n type: this._currentTokenType,\n parts,\n sourceSpan: (end ?? this._cursor).getSpan(this._currentTokenStart, this._leadingTriviaCodePoints)\n };\n this.tokens.push(token);\n this._currentTokenStart = null;\n this._currentTokenType = null;\n return token;\n }\n _createError(msg, span) {\n if (this._isInExpansionForm()) {\n msg += ` (Do you have an unescaped \"{\" in your template? Use \"{{ '{' }}\") to escape it.)`;\n }\n const error = new ParseError(span, msg);\n this._currentTokenStart = null;\n this._currentTokenType = null;\n return error;\n }\n handleError(e) {\n if (e instanceof CursorError) {\n e = this._createError(e.msg, this._cursor.getSpan(e.cursor));\n }\n if (e instanceof ParseError) {\n this.errors.push(e);\n } else {\n throw e;\n }\n }\n _attemptCharCode(charCode) {\n if (this._cursor.peek() === charCode) {\n this._cursor.advance();\n return true;\n }\n return false;\n }\n _attemptCharCodeCaseInsensitive(charCode) {\n if (compareCharCodeCaseInsensitive(this._cursor.peek(), charCode)) {\n this._cursor.advance();\n return true;\n }\n return false;\n }\n _requireCharCode(charCode) {\n const location = this._cursor.clone();\n if (!this._attemptCharCode(charCode)) {\n throw this._createError(_unexpectedCharacterErrorMsg(this._cursor.peek()), this._cursor.getSpan(location));\n }\n }\n _attemptStr(chars) {\n const len = chars.length;\n if (this._cursor.charsLeft() < len) {\n return false;\n }\n const initialPosition = this._cursor.clone();\n for (let i = 0; i < len; i++) {\n if (!this._attemptCharCode(chars.charCodeAt(i))) {\n this._cursor = initialPosition;\n return false;\n }\n }\n return true;\n }\n _attemptStrCaseInsensitive(chars) {\n for (let i = 0; i < chars.length; i++) {\n if (!this._attemptCharCodeCaseInsensitive(chars.charCodeAt(i))) {\n return false;\n }\n }\n return true;\n }\n _requireStr(chars) {\n const location = this._cursor.clone();\n if (!this._attemptStr(chars)) {\n throw this._createError(_unexpectedCharacterErrorMsg(this._cursor.peek()), this._cursor.getSpan(location));\n }\n }\n _attemptCharCodeUntilFn(predicate) {\n while (!predicate(this._cursor.peek())) {\n this._cursor.advance();\n }\n }\n _requireCharCodeUntilFn(predicate, len) {\n const start = this._cursor.clone();\n this._attemptCharCodeUntilFn(predicate);\n if (this._cursor.diff(start) < len) {\n throw this._createError(_unexpectedCharacterErrorMsg(this._cursor.peek()), this._cursor.getSpan(start));\n }\n }\n _attemptUntilChar(char) {\n while (this._cursor.peek() !== char) {\n this._cursor.advance();\n }\n }\n _readChar() {\n const char = String.fromCodePoint(this._cursor.peek());\n this._cursor.advance();\n return char;\n }\n _peekStr(chars) {\n const len = chars.length;\n if (this._cursor.charsLeft() < len) {\n return false;\n }\n const cursor = this._cursor.clone();\n for (let i = 0; i < len; i++) {\n if (cursor.peek() !== chars.charCodeAt(i)) {\n return false;\n }\n cursor.advance();\n }\n return true;\n }\n _isBlockStart() {\n return this._cursor.peek() === $AT && SUPPORTED_BLOCKS.some(blockName => this._peekStr(blockName));\n }\n _isLetStart() {\n return this._cursor.peek() === $AT && this._peekStr('@let');\n }\n _consumeEntity(textTokenType) {\n this._beginToken(9);\n const start = this._cursor.clone();\n this._cursor.advance();\n if (this._attemptCharCode($HASH)) {\n const isHex = this._attemptCharCode($x) || this._attemptCharCode($X);\n const codeStart = this._cursor.clone();\n this._attemptCharCodeUntilFn(isDigitEntityEnd);\n if (this._cursor.peek() != $SEMICOLON) {\n this._cursor.advance();\n const entityType = isHex ? CharacterReferenceType.HEX : CharacterReferenceType.DEC;\n throw this._createError(_unparsableEntityErrorMsg(entityType, this._cursor.getChars(start)), this._cursor.getSpan());\n }\n const strNum = this._cursor.getChars(codeStart);\n this._cursor.advance();\n try {\n const charCode = parseInt(strNum, isHex ? 16 : 10);\n this._endToken([String.fromCodePoint(charCode), this._cursor.getChars(start)]);\n } catch {\n throw this._createError(_unknownEntityErrorMsg(this._cursor.getChars(start)), this._cursor.getSpan());\n }\n } else {\n const nameStart = this._cursor.clone();\n this._attemptCharCodeUntilFn(isNamedEntityEnd);\n if (this._cursor.peek() != $SEMICOLON) {\n this._beginToken(textTokenType, start);\n this._cursor = nameStart;\n this._endToken(['&']);\n } else {\n const name = this._cursor.getChars(nameStart);\n this._cursor.advance();\n const char = NAMED_ENTITIES.hasOwnProperty(name) && NAMED_ENTITIES[name];\n if (!char) {\n throw this._createError(_unknownEntityErrorMsg(name), this._cursor.getSpan(start));\n }\n this._endToken([char, `&${name};`]);\n }\n }\n }\n _consumeRawText(consumeEntities, endMarkerPredicate) {\n this._beginToken(consumeEntities ? 6 : 7);\n const parts = [];\n while (true) {\n const tagCloseStart = this._cursor.clone();\n const foundEndMarker = endMarkerPredicate();\n this._cursor = tagCloseStart;\n if (foundEndMarker) {\n break;\n }\n if (consumeEntities && this._cursor.peek() === $AMPERSAND) {\n this._endToken([this._processCarriageReturns(parts.join(''))]);\n parts.length = 0;\n this._consumeEntity(6);\n this._beginToken(6);\n } else {\n parts.push(this._readChar());\n }\n }\n this._endToken([this._processCarriageReturns(parts.join(''))]);\n }\n _consumeComment(start) {\n this._beginToken(10, start);\n this._requireCharCode($MINUS);\n this._endToken([]);\n this._consumeRawText(false, () => this._attemptStr('-->'));\n this._beginToken(11);\n this._requireStr('-->');\n this._endToken([]);\n }\n _consumeCdata(start) {\n this._beginToken(12, start);\n this._requireStr('CDATA[');\n this._endToken([]);\n this._consumeRawText(false, () => this._attemptStr(']]>'));\n this._beginToken(13);\n this._requireStr(']]>');\n this._endToken([]);\n }\n _consumeDocType(start) {\n this._beginToken(18, start);\n const contentStart = this._cursor.clone();\n this._attemptUntilChar($GT);\n const content = this._cursor.getChars(contentStart);\n this._cursor.advance();\n this._endToken([content]);\n }\n _consumePrefixAndName(endPredicate) {\n const nameOrPrefixStart = this._cursor.clone();\n let prefix = '';\n while (this._cursor.peek() !== $COLON && !isPrefixEnd(this._cursor.peek())) {\n this._cursor.advance();\n }\n let nameStart;\n if (this._cursor.peek() === $COLON) {\n prefix = this._cursor.getChars(nameOrPrefixStart);\n this._cursor.advance();\n nameStart = this._cursor.clone();\n } else {\n nameStart = nameOrPrefixStart;\n }\n this._requireCharCodeUntilFn(endPredicate, prefix === '' ? 0 : 1);\n const name = this._cursor.getChars(nameStart);\n return [prefix, name];\n }\n _consumeTagOpen(start) {\n let tagName;\n let prefix;\n let closingTagName;\n let openToken;\n try {\n if (this._selectorlessEnabled && isSelectorlessNameStart(this._cursor.peek())) {\n openToken = this._consumeComponentOpenStart(start);\n [closingTagName, prefix, tagName] = openToken.parts;\n if (prefix) {\n closingTagName += `:${prefix}`;\n }\n if (tagName) {\n closingTagName += `:${tagName}`;\n }\n this._attemptCharCodeUntilFn(isNotWhitespace);\n } else {\n if (!isAsciiLetter(this._cursor.peek())) {\n throw this._createError(_unexpectedCharacterErrorMsg(this._cursor.peek()), this._cursor.getSpan(start));\n }\n openToken = this._consumeTagOpenStart(start);\n prefix = openToken.parts[0];\n tagName = closingTagName = openToken.parts[1];\n this._attemptCharCodeUntilFn(isNotWhitespace);\n }\n while (!isAttributeTerminator(this._cursor.peek())) {\n if (this._selectorlessEnabled && this._cursor.peek() === $AT) {\n const start = this._cursor.clone();\n const nameStart = start.clone();\n nameStart.advance();\n if (isSelectorlessNameStart(nameStart.peek())) {\n this._consumeDirective(start, nameStart);\n }\n } else {\n this._consumeAttribute();\n }\n }\n if (openToken.type === 33) {\n this._consumeComponentOpenEnd();\n } else {\n this._consumeTagOpenEnd();\n }\n } catch (e) {\n if (e instanceof ParseError) {\n if (openToken) {\n openToken.type = openToken.type === 33 ? 37 : 4;\n } else {\n this._beginToken(5, start);\n this._endToken(['<']);\n }\n return;\n }\n throw e;\n }\n const contentTokenType = this._getTagDefinition(tagName).getContentType(prefix);\n if (contentTokenType === TagContentType.RAW_TEXT) {\n this._consumeRawTextWithTagClose(openToken, closingTagName, false);\n } else if (contentTokenType === TagContentType.ESCAPABLE_RAW_TEXT) {\n this._consumeRawTextWithTagClose(openToken, closingTagName, true);\n }\n }\n _consumeRawTextWithTagClose(openToken, tagName, consumeEntities) {\n this._consumeRawText(consumeEntities, () => {\n if (!this._attemptCharCode($LT)) return false;\n if (!this._attemptCharCode($SLASH)) return false;\n this._attemptCharCodeUntilFn(isNotWhitespace);\n if (!this._attemptStrCaseInsensitive(tagName)) return false;\n this._attemptCharCodeUntilFn(isNotWhitespace);\n return this._attemptCharCode($GT);\n });\n this._beginToken(openToken.type === 33 ? 36 : 3);\n this._requireCharCodeUntilFn(code => code === $GT, 3);\n this._cursor.advance();\n this._endToken(openToken.parts);\n }\n _consumeTagOpenStart(start) {\n this._beginToken(0, start);\n const parts = this._consumePrefixAndName(isNameEnd);\n return this._endToken(parts);\n }\n _consumeComponentOpenStart(start) {\n this._beginToken(33, start);\n const parts = this._consumeComponentName();\n return this._endToken(parts);\n }\n _consumeComponentName() {\n const nameStart = this._cursor.clone();\n while (isSelectorlessNameChar(this._cursor.peek())) {\n this._cursor.advance();\n }\n const name = this._cursor.getChars(nameStart);\n let prefix = '';\n let tagName = '';\n if (this._cursor.peek() === $COLON) {\n this._cursor.advance();\n [prefix, tagName] = this._consumePrefixAndName(isNameEnd);\n }\n return [name, prefix, tagName];\n }\n _consumeAttribute() {\n this._consumeAttributeName();\n this._attemptCharCodeUntilFn(isNotWhitespace);\n if (this._attemptCharCode($EQ)) {\n this._attemptCharCodeUntilFn(isNotWhitespace);\n this._consumeAttributeValue();\n }\n this._attemptCharCodeUntilFn(isNotWhitespace);\n }\n _consumeAttributeName() {\n const attrNameStart = this._cursor.peek();\n if (attrNameStart === $SQ || attrNameStart === $DQ) {\n throw this._createError(_unexpectedCharacterErrorMsg(attrNameStart), this._cursor.getSpan());\n }\n this._beginToken(14);\n let nameEndPredicate;\n if (this._openDirectiveCount > 0) {\n let openParens = 0;\n nameEndPredicate = code => {\n if (this._openDirectiveCount > 0) {\n if (code === $LPAREN) {\n openParens++;\n } else if (code === $RPAREN) {\n if (openParens === 0) {\n return true;\n }\n openParens--;\n }\n }\n return isNameEnd(code);\n };\n } else if (attrNameStart === $LBRACKET) {\n let openBrackets = 0;\n nameEndPredicate = code => {\n if (code === $LBRACKET) {\n openBrackets++;\n } else if (code === $RBRACKET) {\n openBrackets--;\n }\n return openBrackets <= 0 ? isNameEnd(code) : isNewLine(code);\n };\n } else {\n nameEndPredicate = isNameEnd;\n }\n const prefixAndName = this._consumePrefixAndName(nameEndPredicate);\n this._endToken(prefixAndName);\n }\n _consumeAttributeValue() {\n if (this._cursor.peek() === $SQ || this._cursor.peek() === $DQ) {\n const quoteChar = this._cursor.peek();\n this._consumeQuote(quoteChar);\n const endPredicate = () => this._cursor.peek() === quoteChar;\n this._consumeWithInterpolation(16, 17, endPredicate, endPredicate);\n this._consumeQuote(quoteChar);\n } else {\n const endPredicate = () => isNameEnd(this._cursor.peek());\n this._consumeWithInterpolation(16, 17, endPredicate, endPredicate);\n }\n }\n _consumeQuote(quoteChar) {\n this._beginToken(15);\n this._requireCharCode(quoteChar);\n this._endToken([String.fromCodePoint(quoteChar)]);\n }\n _consumeTagOpenEnd() {\n const tokenType = this._attemptCharCode($SLASH) ? 2 : 1;\n this._beginToken(tokenType);\n this._requireCharCode($GT);\n this._endToken([]);\n }\n _consumeComponentOpenEnd() {\n const tokenType = this._attemptCharCode($SLASH) ? 35 : 34;\n this._beginToken(tokenType);\n this._requireCharCode($GT);\n this._endToken([]);\n }\n _consumeTagClose(start) {\n if (this._selectorlessEnabled) {\n const clone = start.clone();\n while (clone.peek() !== $GT && !isSelectorlessNameStart(clone.peek())) {\n clone.advance();\n }\n if (isSelectorlessNameStart(clone.peek())) {\n this._beginToken(36, start);\n const parts = this._consumeComponentName();\n this._attemptCharCodeUntilFn(isNotWhitespace);\n this._requireCharCode($GT);\n this._endToken(parts);\n return;\n }\n }\n this._beginToken(3, start);\n this._attemptCharCodeUntilFn(isNotWhitespace);\n const prefixAndName = this._consumePrefixAndName(isNameEnd);\n this._attemptCharCodeUntilFn(isNotWhitespace);\n this._requireCharCode($GT);\n this._endToken(prefixAndName);\n }\n _consumeExpansionFormStart() {\n this._beginToken(19);\n this._requireCharCode($LBRACE);\n this._endToken([]);\n this._expansionCaseStack.push(19);\n this._beginToken(7);\n const condition = this._readUntil($COMMA);\n const normalizedCondition = this._processCarriageReturns(condition);\n if (this._i18nNormalizeLineEndingsInICUs) {\n this._endToken([normalizedCondition]);\n } else {\n const conditionToken = this._endToken([condition]);\n if (normalizedCondition !== condition) {\n this.nonNormalizedIcuExpressions.push(conditionToken);\n }\n }\n this._requireCharCode($COMMA);\n this._attemptCharCodeUntilFn(isNotWhitespace);\n this._beginToken(7);\n const type = this._readUntil($COMMA);\n this._endToken([type]);\n this._requireCharCode($COMMA);\n this._attemptCharCodeUntilFn(isNotWhitespace);\n }\n _consumeExpansionCaseStart() {\n this._beginToken(20);\n const value = this._readUntil($LBRACE).trim();\n this._endToken([value]);\n this._attemptCharCodeUntilFn(isNotWhitespace);\n this._beginToken(21);\n this._requireCharCode($LBRACE);\n this._endToken([]);\n this._attemptCharCodeUntilFn(isNotWhitespace);\n this._expansionCaseStack.push(21);\n }\n _consumeExpansionCaseEnd() {\n this._beginToken(22);\n this._requireCharCode($RBRACE);\n this._endToken([]);\n this._attemptCharCodeUntilFn(isNotWhitespace);\n this._expansionCaseStack.pop();\n }\n _consumeExpansionFormEnd() {\n this._beginToken(23);\n this._requireCharCode($RBRACE);\n this._endToken([]);\n this._expansionCaseStack.pop();\n }\n _consumeWithInterpolation(textTokenType, interpolationTokenType, endPredicate, endInterpolation) {\n this._beginToken(textTokenType);\n const parts = [];\n while (!endPredicate()) {\n const current = this._cursor.clone();\n if (this._attemptStr(INTERPOLATION.start)) {\n this._endToken([this._processCarriageReturns(parts.join(''))], current);\n parts.length = 0;\n this._consumeInterpolation(interpolationTokenType, current, endInterpolation);\n this._beginToken(textTokenType);\n } else if (this._cursor.peek() === $AMPERSAND) {\n this._endToken([this._processCarriageReturns(parts.join(''))]);\n parts.length = 0;\n this._consumeEntity(textTokenType);\n this._beginToken(textTokenType);\n } else {\n parts.push(this._readChar());\n }\n }\n this._inInterpolation = false;\n this._endToken([this._processCarriageReturns(parts.join(''))]);\n }\n _consumeInterpolation(interpolationTokenType, interpolationStart, prematureEndPredicate) {\n const parts = [];\n this._beginToken(interpolationTokenType, interpolationStart);\n parts.push(INTERPOLATION.start);\n const expressionStart = this._cursor.clone();\n let inQuote = null;\n let inComment = false;\n while (this._cursor.peek() !== $EOF && (prematureEndPredicate === null || !prematureEndPredicate())) {\n const current = this._cursor.clone();\n if (this._isTagStart()) {\n this._cursor = current;\n parts.push(this._getProcessedChars(expressionStart, current));\n this._endToken(parts);\n return;\n }\n if (inQuote === null) {\n if (this._attemptStr(INTERPOLATION.end)) {\n parts.push(this._getProcessedChars(expressionStart, current));\n parts.push(INTERPOLATION.end);\n this._endToken(parts);\n return;\n } else if (this._attemptStr('//')) {\n inComment = true;\n }\n }\n const char = this._cursor.peek();\n this._cursor.advance();\n if (char === $BACKSLASH) {\n this._cursor.advance();\n } else if (char === inQuote) {\n inQuote = null;\n } else if (!inComment && inQuote === null && isQuote(char)) {\n inQuote = char;\n }\n }\n parts.push(this._getProcessedChars(expressionStart, this._cursor));\n this._endToken(parts);\n }\n _consumeDirective(start, nameStart) {\n this._requireCharCode($AT);\n this._cursor.advance();\n while (isSelectorlessNameChar(this._cursor.peek())) {\n this._cursor.advance();\n }\n this._beginToken(38, start);\n const name = this._cursor.getChars(nameStart);\n this._endToken([name]);\n this._attemptCharCodeUntilFn(isNotWhitespace);\n if (this._cursor.peek() !== $LPAREN) {\n return;\n }\n this._openDirectiveCount++;\n this._beginToken(39);\n this._cursor.advance();\n this._endToken([]);\n this._attemptCharCodeUntilFn(isNotWhitespace);\n while (!isAttributeTerminator(this._cursor.peek()) && this._cursor.peek() !== $RPAREN) {\n this._consumeAttribute();\n }\n this._attemptCharCodeUntilFn(isNotWhitespace);\n this._openDirectiveCount--;\n if (this._cursor.peek() !== $RPAREN) {\n if (this._cursor.peek() === $GT || this._cursor.peek() === $SLASH) {\n return;\n }\n throw this._createError(_unexpectedCharacterErrorMsg(this._cursor.peek()), this._cursor.getSpan(start));\n }\n this._beginToken(40);\n this._cursor.advance();\n this._endToken([]);\n this._attemptCharCodeUntilFn(isNotWhitespace);\n }\n _getProcessedChars(start, end) {\n return this._processCarriageReturns(end.getChars(start));\n }\n _isTextEnd() {\n if (this._isTagStart() || this._cursor.peek() === $EOF) {\n return true;\n }\n if (this._tokenizeIcu && !this._inInterpolation) {\n if (this.isExpansionFormStart()) {\n return true;\n }\n if (this._cursor.peek() === $RBRACE && this._isInExpansionCase()) {\n return true;\n }\n }\n if (this._tokenizeBlocks && !this._inInterpolation && !this._isInExpansion() && (this._isBlockStart() || this._isLetStart() || this._cursor.peek() === $RBRACE)) {\n return true;\n }\n return false;\n }\n _isTagStart() {\n if (this._cursor.peek() === $LT) {\n const tmp = this._cursor.clone();\n tmp.advance();\n const code = tmp.peek();\n if ($a <= code && code <= $z || $A <= code && code <= $Z || code === $SLASH || code === $BANG) {\n return true;\n }\n }\n return false;\n }\n _readUntil(char) {\n const start = this._cursor.clone();\n this._attemptUntilChar(char);\n return this._cursor.getChars(start);\n }\n _isInExpansion() {\n return this._isInExpansionCase() || this._isInExpansionForm();\n }\n _isInExpansionCase() {\n return this._expansionCaseStack.length > 0 && this._expansionCaseStack[this._expansionCaseStack.length - 1] === 21;\n }\n _isInExpansionForm() {\n return this._expansionCaseStack.length > 0 && this._expansionCaseStack[this._expansionCaseStack.length - 1] === 19;\n }\n isExpansionFormStart() {\n if (this._cursor.peek() !== $LBRACE) {\n return false;\n }\n const start = this._cursor.clone();\n const isInterpolation = this._attemptStr(INTERPOLATION.start);\n this._cursor = start;\n return !isInterpolation;\n }\n}\nfunction isNotWhitespace(code) {\n return !isWhitespace(code) || code === $EOF;\n}\nfunction isNameEnd(code) {\n return isWhitespace(code) || code === $GT || code === $LT || code === $SLASH || code === $SQ || code === $DQ || code === $EQ || code === $EOF;\n}\nfunction isPrefixEnd(code) {\n return (code < $a || $z < code) && (code < $A || $Z < code) && (code < $0 || code > $9);\n}\nfunction isDigitEntityEnd(code) {\n return code === $SEMICOLON || code === $EOF || !isAsciiHexDigit(code);\n}\nfunction isNamedEntityEnd(code) {\n return code === $SEMICOLON || code === $EOF || !(isAsciiLetter(code) || isDigit(code));\n}\nfunction isExpansionCaseStart(peek) {\n return peek !== $RBRACE;\n}\nfunction compareCharCodeCaseInsensitive(code1, code2) {\n return toUpperCaseCharCode(code1) === toUpperCaseCharCode(code2);\n}\nfunction toUpperCaseCharCode(code) {\n return code >= $a && code <= $z ? code - $a + $A : code;\n}\nfunction isBlockNameChar(code) {\n return isAsciiLetter(code) || isDigit(code) || code === $_;\n}\nfunction isBlockParameterChar(code) {\n return code !== $SEMICOLON && isNotWhitespace(code);\n}\nfunction isSelectorlessNameStart(code) {\n return code === $_ || code >= $A && code <= $Z;\n}\nfunction isSelectorlessNameChar(code) {\n return isAsciiLetter(code) || isDigit(code) || code === $_;\n}\nfunction isAttributeTerminator(code) {\n return code === $SLASH || code === $GT || code === $LT || code === $EOF;\n}\nfunction mergeTextTokens(srcTokens) {\n const dstTokens = [];\n let lastDstToken = undefined;\n for (let i = 0; i < srcTokens.length; i++) {\n const token = srcTokens[i];\n if (lastDstToken && lastDstToken.type === 5 && token.type === 5 || lastDstToken && lastDstToken.type === 16 && token.type === 16) {\n lastDstToken.parts[0] += token.parts[0];\n lastDstToken.sourceSpan.end = token.sourceSpan.end;\n } else {\n lastDstToken = token;\n dstTokens.push(lastDstToken);\n }\n }\n return dstTokens;\n}\nclass PlainCharacterCursor {\n state;\n file;\n input;\n end;\n constructor(fileOrCursor, range) {\n if (fileOrCursor instanceof PlainCharacterCursor) {\n this.file = fileOrCursor.file;\n this.input = fileOrCursor.input;\n this.end = fileOrCursor.end;\n const state = fileOrCursor.state;\n this.state = {\n peek: state.peek,\n offset: state.offset,\n line: state.line,\n column: state.column\n };\n } else {\n if (!range) {\n throw new Error('Programming error: the range argument must be provided with a file argument.');\n }\n this.file = fileOrCursor;\n this.input = fileOrCursor.content;\n this.end = range.endPos;\n this.state = {\n peek: -1,\n offset: range.startPos,\n line: range.startLine,\n column: range.startCol\n };\n }\n }\n clone() {\n return new PlainCharacterCursor(this);\n }\n peek() {\n return this.state.peek;\n }\n charsLeft() {\n return this.end - this.state.offset;\n }\n diff(other) {\n return this.state.offset - other.state.offset;\n }\n advance() {\n this.advanceState(this.state);\n }\n init() {\n this.updatePeek(this.state);\n }\n getSpan(start, leadingTriviaCodePoints) {\n start = start || this;\n let fullStart = start;\n if (leadingTriviaCodePoints) {\n while (this.diff(start) > 0 && leadingTriviaCodePoints.indexOf(start.peek()) !== -1) {\n if (fullStart === start) {\n start = start.clone();\n }\n start.advance();\n }\n }\n const startLocation = this.locationFromCursor(start);\n const endLocation = this.locationFromCursor(this);\n const fullStartLocation = fullStart !== start ? this.locationFromCursor(fullStart) : startLocation;\n return new ParseSourceSpan(startLocation, endLocation, fullStartLocation);\n }\n getChars(start) {\n return this.input.substring(start.state.offset, this.state.offset);\n }\n charAt(pos) {\n return this.input.charCodeAt(pos);\n }\n advanceState(state) {\n if (state.offset >= this.end) {\n this.state = state;\n throw new CursorError('Unexpected character \"EOF\"', this);\n }\n const currentChar = this.charAt(state.offset);\n if (currentChar === $LF) {\n state.line++;\n state.column = 0;\n } else if (!isNewLine(currentChar)) {\n state.column++;\n }\n state.offset++;\n this.updatePeek(state);\n }\n updatePeek(state) {\n state.peek = state.offset >= this.end ? $EOF : this.charAt(state.offset);\n }\n locationFromCursor(cursor) {\n return new ParseLocation(cursor.file, cursor.state.offset, cursor.state.line, cursor.state.column);\n }\n}\nclass EscapedCharacterCursor extends PlainCharacterCursor {\n internalState;\n constructor(fileOrCursor, range) {\n if (fileOrCursor instanceof EscapedCharacterCursor) {\n super(fileOrCursor);\n this.internalState = {\n ...fileOrCursor.internalState\n };\n } else {\n super(fileOrCursor, range);\n this.internalState = this.state;\n }\n }\n advance() {\n this.state = this.internalState;\n super.advance();\n this.processEscapeSequence();\n }\n init() {\n super.init();\n this.processEscapeSequence();\n }\n clone() {\n return new EscapedCharacterCursor(this);\n }\n getChars(start) {\n const cursor = start.clone();\n let chars = '';\n while (cursor.internalState.offset < this.internalState.offset) {\n chars += String.fromCodePoint(cursor.peek());\n cursor.advance();\n }\n return chars;\n }\n processEscapeSequence() {\n const peek = () => this.internalState.peek;\n if (peek() === $BACKSLASH) {\n this.internalState = {\n ...this.state\n };\n this.advanceState(this.internalState);\n if (peek() === $n) {\n this.state.peek = $LF;\n } else if (peek() === $r) {\n this.state.peek = $CR;\n } else if (peek() === $v) {\n this.state.peek = $VTAB;\n } else if (peek() === $t) {\n this.state.peek = $TAB;\n } else if (peek() === $b) {\n this.state.peek = $BSPACE;\n } else if (peek() === $f) {\n this.state.peek = $FF;\n } else if (peek() === $u) {\n this.advanceState(this.internalState);\n if (peek() === $LBRACE) {\n this.advanceState(this.internalState);\n const digitStart = this.clone();\n let length = 0;\n while (peek() !== $RBRACE) {\n this.advanceState(this.internalState);\n length++;\n }\n this.state.peek = this.decodeHexDigits(digitStart, length);\n } else {\n const digitStart = this.clone();\n this.advanceState(this.internalState);\n this.advanceState(this.internalState);\n this.advanceState(this.internalState);\n this.state.peek = this.decodeHexDigits(digitStart, 4);\n }\n } else if (peek() === $x) {\n this.advanceState(this.internalState);\n const digitStart = this.clone();\n this.advanceState(this.internalState);\n this.state.peek = this.decodeHexDigits(digitStart, 2);\n } else if (isOctalDigit(peek())) {\n let octal = '';\n let length = 0;\n let previous = this.clone();\n while (isOctalDigit(peek()) && length < 3) {\n previous = this.clone();\n octal += String.fromCodePoint(peek());\n this.advanceState(this.internalState);\n length++;\n }\n this.state.peek = parseInt(octal, 8);\n this.internalState = previous.internalState;\n } else if (isNewLine(this.internalState.peek)) {\n this.advanceState(this.internalState);\n this.state = this.internalState;\n } else {\n this.state.peek = this.internalState.peek;\n }\n }\n }\n decodeHexDigits(start, length) {\n const hex = this.input.slice(start.internalState.offset, start.internalState.offset + length);\n const charCode = parseInt(hex, 16);\n if (!isNaN(charCode)) {\n return charCode;\n } else {\n start.state = start.internalState;\n throw new CursorError('Invalid hexadecimal escape sequence', start);\n }\n }\n}\nclass CursorError extends Error {\n msg;\n cursor;\n constructor(msg, cursor) {\n super(msg);\n this.msg = msg;\n this.cursor = cursor;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n\nclass TreeError extends ParseError {\n elementName;\n static create(elementName, span, msg) {\n return new TreeError(elementName, span, msg);\n }\n constructor(elementName, span, msg) {\n super(span, msg);\n this.elementName = elementName;\n }\n}\nclass ParseTreeResult {\n rootNodes;\n errors;\n constructor(rootNodes, errors) {\n this.rootNodes = rootNodes;\n this.errors = errors;\n }\n}\nlet Parser$1 = class Parser {\n getTagDefinition;\n constructor(getTagDefinition) {\n this.getTagDefinition = getTagDefinition;\n }\n parse(source, url, options) {\n const tokenizeResult = tokenize(source, url, this.getTagDefinition, options);\n const parser = new _TreeBuilder(tokenizeResult.tokens, this.getTagDefinition);\n parser.build();\n return new ParseTreeResult(parser.rootNodes, [...tokenizeResult.errors, ...parser.errors]);\n }\n};\nclass _TreeBuilder {\n tokens;\n tagDefinitionResolver;\n _index = -1;\n _peek;\n _containerStack = [];\n rootNodes = [];\n errors = [];\n constructor(tokens, tagDefinitionResolver) {\n this.tokens = tokens;\n this.tagDefinitionResolver = tagDefinitionResolver;\n this._advance();\n }\n build() {\n while (this._peek.type !== 41) {\n if (this._peek.type === 0 || this._peek.type === 4) {\n this._consumeElementStartTag(this._advance());\n } else if (this._peek.type === 3) {\n this._consumeElementEndTag(this._advance());\n } else if (this._peek.type === 12) {\n this._closeVoidElement();\n this._consumeCdata(this._advance());\n } else if (this._peek.type === 10) {\n this._closeVoidElement();\n this._consumeComment(this._advance());\n } else if (this._peek.type === 5 || this._peek.type === 7 || this._peek.type === 6) {\n this._closeVoidElement();\n this._consumeText(this._advance());\n } else if (this._peek.type === 19) {\n this._consumeExpansion(this._advance());\n } else if (this._peek.type === 24) {\n this._closeVoidElement();\n this._consumeBlockOpen(this._advance());\n } else if (this._peek.type === 26) {\n this._closeVoidElement();\n this._consumeBlockClose(this._advance());\n } else if (this._peek.type === 28) {\n this._closeVoidElement();\n this._consumeIncompleteBlock(this._advance());\n } else if (this._peek.type === 29) {\n this._closeVoidElement();\n this._consumeLet(this._advance());\n } else if (this._peek.type === 32) {\n this._closeVoidElement();\n this._consumeIncompleteLet(this._advance());\n } else if (this._peek.type === 33 || this._peek.type === 37) {\n this._consumeComponentStartTag(this._advance());\n } else if (this._peek.type === 36) {\n this._consumeComponentEndTag(this._advance());\n } else {\n this._advance();\n }\n }\n for (const leftoverContainer of this._containerStack) {\n if (leftoverContainer instanceof Block) {\n this.errors.push(TreeError.create(leftoverContainer.name, leftoverContainer.sourceSpan, `Unclosed block \"${leftoverContainer.name}\"`));\n }\n }\n }\n _advance() {\n const prev = this._peek;\n if (this._index < this.tokens.length - 1) {\n this._index++;\n }\n this._peek = this.tokens[this._index];\n return prev;\n }\n _advanceIf(type) {\n if (this._peek.type === type) {\n return this._advance();\n }\n return null;\n }\n _consumeCdata(_startToken) {\n this._consumeText(this._advance());\n this._advanceIf(13);\n }\n _consumeComment(token) {\n const text = this._advanceIf(7);\n const endToken = this._advanceIf(11);\n const value = text != null ? text.parts[0].trim() : null;\n const sourceSpan = endToken == null ? token.sourceSpan : new ParseSourceSpan(token.sourceSpan.start, endToken.sourceSpan.end, token.sourceSpan.fullStart);\n this._addToParent(new Comment(value, sourceSpan));\n }\n _consumeExpansion(token) {\n const switchValue = this._advance();\n const type = this._advance();\n const cases = [];\n while (this._peek.type === 20) {\n const expCase = this._parseExpansionCase();\n if (!expCase) return;\n cases.push(expCase);\n }\n if (this._peek.type !== 23) {\n this.errors.push(TreeError.create(null, this._peek.sourceSpan, `Invalid ICU message. Missing '}'.`));\n return;\n }\n const sourceSpan = new ParseSourceSpan(token.sourceSpan.start, this._peek.sourceSpan.end, token.sourceSpan.fullStart);\n this._addToParent(new Expansion(switchValue.parts[0], type.parts[0], cases, sourceSpan, switchValue.sourceSpan));\n this._advance();\n }\n _parseExpansionCase() {\n const value = this._advance();\n if (this._peek.type !== 21) {\n this.errors.push(TreeError.create(null, this._peek.sourceSpan, `Invalid ICU message. Missing '{'.`));\n return null;\n }\n const start = this._advance();\n const exp = this._collectExpansionExpTokens(start);\n if (!exp) return null;\n const end = this._advance();\n exp.push({\n type: 41,\n parts: [],\n sourceSpan: end.sourceSpan\n });\n const expansionCaseParser = new _TreeBuilder(exp, this.tagDefinitionResolver);\n expansionCaseParser.build();\n if (expansionCaseParser.errors.length > 0) {\n this.errors = this.errors.concat(expansionCaseParser.errors);\n return null;\n }\n const sourceSpan = new ParseSourceSpan(value.sourceSpan.start, end.sourceSpan.end, value.sourceSpan.fullStart);\n const expSourceSpan = new ParseSourceSpan(start.sourceSpan.start, end.sourceSpan.end, start.sourceSpan.fullStart);\n return new ExpansionCase(value.parts[0], expansionCaseParser.rootNodes, sourceSpan, value.sourceSpan, expSourceSpan);\n }\n _collectExpansionExpTokens(start) {\n const exp = [];\n const expansionFormStack = [21];\n while (true) {\n if (this._peek.type === 19 || this._peek.type === 21) {\n expansionFormStack.push(this._peek.type);\n }\n if (this._peek.type === 22) {\n if (lastOnStack(expansionFormStack, 21)) {\n expansionFormStack.pop();\n if (expansionFormStack.length === 0) return exp;\n } else {\n this.errors.push(TreeError.create(null, start.sourceSpan, `Invalid ICU message. Missing '}'.`));\n return null;\n }\n }\n if (this._peek.type === 23) {\n if (lastOnStack(expansionFormStack, 19)) {\n expansionFormStack.pop();\n } else {\n this.errors.push(TreeError.create(null, start.sourceSpan, `Invalid ICU message. Missing '}'.`));\n return null;\n }\n }\n if (this._peek.type === 41) {\n this.errors.push(TreeError.create(null, start.sourceSpan, `Invalid ICU message. Missing '}'.`));\n return null;\n }\n exp.push(this._advance());\n }\n }\n _consumeText(token) {\n const tokens = [token];\n const startSpan = token.sourceSpan;\n let text = token.parts[0];\n if (text.length > 0 && text[0] === '\\n') {\n const parent = this._getContainer();\n if (parent != null && parent.children.length === 0 && this._getTagDefinition(parent)?.ignoreFirstLf) {\n text = text.substring(1);\n tokens[0] = {\n type: token.type,\n sourceSpan: token.sourceSpan,\n parts: [text]\n };\n }\n }\n while (this._peek.type === 8 || this._peek.type === 5 || this._peek.type === 9) {\n token = this._advance();\n tokens.push(token);\n if (token.type === 8) {\n text += token.parts.join('').replace(/&([^;]+);/g, decodeEntity);\n } else if (token.type === 9) {\n text += token.parts[0];\n } else {\n text += token.parts.join('');\n }\n }\n if (text.length > 0) {\n const endSpan = token.sourceSpan;\n this._addToParent(new Text(text, new ParseSourceSpan(startSpan.start, endSpan.end, startSpan.fullStart, startSpan.details), tokens));\n }\n }\n _closeVoidElement() {\n const el = this._getContainer();\n if (el !== null && this._getTagDefinition(el)?.isVoid) {\n this._containerStack.pop();\n }\n }\n _consumeElementStartTag(startTagToken) {\n const attrs = [];\n const directives = [];\n this._consumeAttributesAndDirectives(attrs, directives);\n const fullName = this._getElementFullName(startTagToken, this._getClosestElementLikeParent());\n const tagDef = this._getTagDefinition(fullName);\n let selfClosing = false;\n if (this._peek.type === 2) {\n this._advance();\n selfClosing = true;\n if (!(tagDef?.canSelfClose || getNsPrefix(fullName) !== null || tagDef?.isVoid)) {\n this.errors.push(TreeError.create(fullName, startTagToken.sourceSpan, `Only void, custom and foreign elements can be self closed \"${startTagToken.parts[1]}\"`));\n }\n } else if (this._peek.type === 1) {\n this._advance();\n selfClosing = false;\n }\n const end = this._peek.sourceSpan.fullStart;\n const span = new ParseSourceSpan(startTagToken.sourceSpan.start, end, startTagToken.sourceSpan.fullStart);\n const startSpan = new ParseSourceSpan(startTagToken.sourceSpan.start, end, startTagToken.sourceSpan.fullStart);\n const el = new Element(fullName, attrs, directives, [], selfClosing, span, startSpan, undefined, tagDef?.isVoid ?? false);\n const parent = this._getContainer();\n const isClosedByChild = parent !== null && !!this._getTagDefinition(parent)?.isClosedByChild(el.name);\n this._pushContainer(el, isClosedByChild);\n if (selfClosing) {\n this._popContainer(fullName, Element, span);\n } else if (startTagToken.type === 4) {\n this._popContainer(fullName, Element, null);\n this.errors.push(TreeError.create(fullName, span, `Opening tag \"${fullName}\" not terminated.`));\n }\n }\n _consumeComponentStartTag(startToken) {\n const componentName = startToken.parts[0];\n const attrs = [];\n const directives = [];\n this._consumeAttributesAndDirectives(attrs, directives);\n const closestElement = this._getClosestElementLikeParent();\n const tagName = this._getComponentTagName(startToken, closestElement);\n const fullName = this._getComponentFullName(startToken, closestElement);\n const selfClosing = this._peek.type === 35;\n this._advance();\n const end = this._peek.sourceSpan.fullStart;\n const span = new ParseSourceSpan(startToken.sourceSpan.start, end, startToken.sourceSpan.fullStart);\n const startSpan = new ParseSourceSpan(startToken.sourceSpan.start, end, startToken.sourceSpan.fullStart);\n const node = new Component(componentName, tagName, fullName, attrs, directives, [], selfClosing, span, startSpan, undefined);\n const parent = this._getContainer();\n const isClosedByChild = parent !== null && node.tagName !== null && !!this._getTagDefinition(parent)?.isClosedByChild(node.tagName);\n this._pushContainer(node, isClosedByChild);\n if (selfClosing) {\n this._popContainer(fullName, Component, span);\n } else if (startToken.type === 37) {\n this._popContainer(fullName, Component, null);\n this.errors.push(TreeError.create(fullName, span, `Opening tag \"${fullName}\" not terminated.`));\n }\n }\n _consumeAttributesAndDirectives(attributesResult, directivesResult) {\n while (this._peek.type === 14 || this._peek.type === 38) {\n if (this._peek.type === 38) {\n directivesResult.push(this._consumeDirective(this._peek));\n } else {\n attributesResult.push(this._consumeAttr(this._advance()));\n }\n }\n }\n _consumeComponentEndTag(endToken) {\n const fullName = this._getComponentFullName(endToken, this._getClosestElementLikeParent());\n if (!this._popContainer(fullName, Component, endToken.sourceSpan)) {\n const container = this._containerStack[this._containerStack.length - 1];\n let suffix;\n if (container instanceof Component && container.componentName === endToken.parts[0]) {\n suffix = `, did you mean \"${container.fullName}\"?`;\n } else {\n suffix = '. It may happen when the tag has already been closed by another tag.';\n }\n const errMsg = `Unexpected closing tag \"${fullName}\"${suffix}`;\n this.errors.push(TreeError.create(fullName, endToken.sourceSpan, errMsg));\n }\n }\n _getTagDefinition(nodeOrName) {\n if (typeof nodeOrName === 'string') {\n return this.tagDefinitionResolver(nodeOrName);\n } else if (nodeOrName instanceof Element) {\n return this.tagDefinitionResolver(nodeOrName.name);\n } else if (nodeOrName instanceof Component && nodeOrName.tagName !== null) {\n return this.tagDefinitionResolver(nodeOrName.tagName);\n } else {\n return null;\n }\n }\n _pushContainer(node, isClosedByChild) {\n if (isClosedByChild) {\n this._containerStack.pop();\n }\n this._addToParent(node);\n this._containerStack.push(node);\n }\n _consumeElementEndTag(endTagToken) {\n const fullName = this._getElementFullName(endTagToken, this._getClosestElementLikeParent());\n if (this._getTagDefinition(fullName)?.isVoid) {\n this.errors.push(TreeError.create(fullName, endTagToken.sourceSpan, `Void elements do not have end tags \"${endTagToken.parts[1]}\"`));\n } else if (!this._popContainer(fullName, Element, endTagToken.sourceSpan)) {\n const errMsg = `Unexpected closing tag \"${fullName}\". It may happen when the tag has already been closed by another tag. For more info see https://www.w3.org/TR/html5/syntax.html#closing-elements-that-have-implied-end-tags`;\n this.errors.push(TreeError.create(fullName, endTagToken.sourceSpan, errMsg));\n }\n }\n _popContainer(expectedName, expectedType, endSourceSpan) {\n let unexpectedCloseTagDetected = false;\n for (let stackIndex = this._containerStack.length - 1; stackIndex >= 0; stackIndex--) {\n const node = this._containerStack[stackIndex];\n const nodeName = node instanceof Component ? node.fullName : node.name;\n if ((nodeName === expectedName || expectedName === null) && node instanceof expectedType) {\n node.endSourceSpan = endSourceSpan;\n node.sourceSpan.end = endSourceSpan !== null ? endSourceSpan.end : node.sourceSpan.end;\n this._containerStack.splice(stackIndex, this._containerStack.length - stackIndex);\n return !unexpectedCloseTagDetected;\n }\n if (node instanceof Block || !this._getTagDefinition(node)?.closedByParent) {\n unexpectedCloseTagDetected = true;\n }\n }\n return false;\n }\n _consumeAttr(attrName) {\n const fullName = mergeNsAndName(attrName.parts[0], attrName.parts[1]);\n let attrEnd = attrName.sourceSpan.end;\n if (this._peek.type === 15) {\n this._advance();\n }\n let value = '';\n const valueTokens = [];\n let valueStartSpan = undefined;\n let valueEnd = undefined;\n const nextTokenType = this._peek.type;\n if (nextTokenType === 16) {\n valueStartSpan = this._peek.sourceSpan;\n valueEnd = this._peek.sourceSpan.end;\n while (this._peek.type === 16 || this._peek.type === 17 || this._peek.type === 9) {\n const valueToken = this._advance();\n valueTokens.push(valueToken);\n if (valueToken.type === 17) {\n value += valueToken.parts.join('').replace(/&([^;]+);/g, decodeEntity);\n } else if (valueToken.type === 9) {\n value += valueToken.parts[0];\n } else {\n value += valueToken.parts.join('');\n }\n valueEnd = attrEnd = valueToken.sourceSpan.end;\n }\n }\n if (this._peek.type === 15) {\n const quoteToken = this._advance();\n attrEnd = quoteToken.sourceSpan.end;\n }\n const valueSpan = valueStartSpan && valueEnd && new ParseSourceSpan(valueStartSpan.start, valueEnd, valueStartSpan.fullStart);\n return new Attribute(fullName, value, new ParseSourceSpan(attrName.sourceSpan.start, attrEnd, attrName.sourceSpan.fullStart), attrName.sourceSpan, valueSpan, valueTokens.length > 0 ? valueTokens : undefined, undefined);\n }\n _consumeDirective(nameToken) {\n const attributes = [];\n let startSourceSpanEnd = nameToken.sourceSpan.end;\n let endSourceSpan = null;\n this._advance();\n if (this._peek.type === 39) {\n startSourceSpanEnd = this._peek.sourceSpan.end;\n this._advance();\n while (this._peek.type === 14) {\n attributes.push(this._consumeAttr(this._advance()));\n }\n if (this._peek.type === 40) {\n endSourceSpan = this._peek.sourceSpan;\n this._advance();\n } else {\n this.errors.push(TreeError.create(null, nameToken.sourceSpan, 'Unterminated directive definition'));\n }\n }\n const startSourceSpan = new ParseSourceSpan(nameToken.sourceSpan.start, startSourceSpanEnd, nameToken.sourceSpan.fullStart);\n const sourceSpan = new ParseSourceSpan(startSourceSpan.start, endSourceSpan === null ? nameToken.sourceSpan.end : endSourceSpan.end, startSourceSpan.fullStart);\n return new Directive(nameToken.parts[0], attributes, sourceSpan, startSourceSpan, endSourceSpan);\n }\n _consumeBlockOpen(token) {\n const parameters = [];\n while (this._peek.type === 27) {\n const paramToken = this._advance();\n parameters.push(new BlockParameter(paramToken.parts[0], paramToken.sourceSpan));\n }\n if (this._peek.type === 25) {\n this._advance();\n }\n const end = this._peek.sourceSpan.fullStart;\n const span = new ParseSourceSpan(token.sourceSpan.start, end, token.sourceSpan.fullStart);\n const startSpan = new ParseSourceSpan(token.sourceSpan.start, end, token.sourceSpan.fullStart);\n const block = new Block(token.parts[0], parameters, [], span, token.sourceSpan, startSpan);\n this._pushContainer(block, false);\n }\n _consumeBlockClose(token) {\n const initialStackLength = this._containerStack.length;\n const topNode = this._containerStack[initialStackLength - 1];\n if (!this._popContainer(null, Block, token.sourceSpan)) {\n if (this._containerStack.length < initialStackLength) {\n const nodeName = topNode instanceof Component ? topNode.fullName : topNode.name;\n this.errors.push(TreeError.create(null, token.sourceSpan, `Unexpected closing block. The block may have been closed earlier. ` + `Did you forget to close the <${nodeName}> element? ` + `If you meant to write the \\`}\\` character, you should use the \"}\" ` + `HTML entity instead.`));\n return;\n }\n this.errors.push(TreeError.create(null, token.sourceSpan, `Unexpected closing block. The block may have been closed earlier. ` + `If you meant to write the \\`}\\` character, you should use the \"}\" ` + `HTML entity instead.`));\n }\n }\n _consumeIncompleteBlock(token) {\n const parameters = [];\n while (this._peek.type === 27) {\n const paramToken = this._advance();\n parameters.push(new BlockParameter(paramToken.parts[0], paramToken.sourceSpan));\n }\n const end = this._peek.sourceSpan.fullStart;\n const span = new ParseSourceSpan(token.sourceSpan.start, end, token.sourceSpan.fullStart);\n const startSpan = new ParseSourceSpan(token.sourceSpan.start, end, token.sourceSpan.fullStart);\n const block = new Block(token.parts[0], parameters, [], span, token.sourceSpan, startSpan);\n this._pushContainer(block, false);\n this._popContainer(null, Block, null);\n this.errors.push(TreeError.create(token.parts[0], span, `Incomplete block \"${token.parts[0]}\". If you meant to write the @ character, ` + `you should use the \"@\" HTML entity instead.`));\n }\n _consumeLet(startToken) {\n const name = startToken.parts[0];\n let valueToken;\n let endToken;\n if (this._peek.type !== 30) {\n this.errors.push(TreeError.create(startToken.parts[0], startToken.sourceSpan, `Invalid @let declaration \"${name}\". Declaration must have a value.`));\n return;\n } else {\n valueToken = this._advance();\n }\n if (this._peek.type !== 31) {\n this.errors.push(TreeError.create(startToken.parts[0], startToken.sourceSpan, `Unterminated @let declaration \"${name}\". Declaration must be terminated with a semicolon.`));\n return;\n } else {\n endToken = this._advance();\n }\n const end = endToken.sourceSpan.fullStart;\n const span = new ParseSourceSpan(startToken.sourceSpan.start, end, startToken.sourceSpan.fullStart);\n const startOffset = startToken.sourceSpan.toString().lastIndexOf(name);\n const nameStart = startToken.sourceSpan.start.moveBy(startOffset);\n const nameSpan = new ParseSourceSpan(nameStart, startToken.sourceSpan.end);\n const node = new LetDeclaration(name, valueToken.parts[0], span, nameSpan, valueToken.sourceSpan);\n this._addToParent(node);\n }\n _consumeIncompleteLet(token) {\n const name = token.parts[0] ?? '';\n const nameString = name ? ` \"${name}\"` : '';\n if (name.length > 0) {\n const startOffset = token.sourceSpan.toString().lastIndexOf(name);\n const nameStart = token.sourceSpan.start.moveBy(startOffset);\n const nameSpan = new ParseSourceSpan(nameStart, token.sourceSpan.end);\n const valueSpan = new ParseSourceSpan(token.sourceSpan.start, token.sourceSpan.start.moveBy(0));\n const node = new LetDeclaration(name, '', token.sourceSpan, nameSpan, valueSpan);\n this._addToParent(node);\n }\n this.errors.push(TreeError.create(token.parts[0], token.sourceSpan, `Incomplete @let declaration${nameString}. ` + `@let declarations must be written as \\`@let <name> = <value>;\\``));\n }\n _getContainer() {\n return this._containerStack.length > 0 ? this._containerStack[this._containerStack.length - 1] : null;\n }\n _getClosestElementLikeParent() {\n for (let i = this._containerStack.length - 1; i > -1; i--) {\n const current = this._containerStack[i];\n if (current instanceof Element || current instanceof Component) {\n return current;\n }\n }\n return null;\n }\n _addToParent(node) {\n const parent = this._getContainer();\n if (parent === null) {\n this.rootNodes.push(node);\n } else {\n parent.children.push(node);\n }\n }\n _getElementFullName(token, parent) {\n const prefix = this._getPrefix(token, parent);\n return mergeNsAndName(prefix, token.parts[1]);\n }\n _getComponentFullName(token, parent) {\n const componentName = token.parts[0];\n const tagName = this._getComponentTagName(token, parent);\n if (tagName === null) {\n return componentName;\n }\n return tagName.startsWith(':') ? componentName + tagName : `${componentName}:${tagName}`;\n }\n _getComponentTagName(token, parent) {\n const prefix = this._getPrefix(token, parent);\n const tagName = token.parts[2];\n if (!prefix && !tagName) {\n return null;\n } else if (!prefix && tagName) {\n return tagName;\n } else {\n return mergeNsAndName(prefix, tagName || 'ng-component');\n }\n }\n _getPrefix(token, parent) {\n let prefix;\n let tagName;\n if (token.type === 33 || token.type === 37 || token.type === 36) {\n prefix = token.parts[1];\n tagName = token.parts[2];\n } else {\n prefix = token.parts[0];\n tagName = token.parts[1];\n }\n prefix = prefix || this._getTagDefinition(tagName)?.implicitNamespacePrefix || '';\n if (!prefix && parent) {\n const parentName = parent instanceof Element ? parent.name : parent.tagName;\n if (parentName !== null) {\n const parentTagName = splitNsName(parentName)[1];\n const parentTagDefinition = this._getTagDefinition(parentTagName);\n if (parentTagDefinition !== null && !parentTagDefinition.preventNamespaceInheritance) {\n prefix = getNsPrefix(parentName);\n }\n }\n }\n return prefix;\n }\n}\nfunction lastOnStack(stack, element) {\n return stack.length > 0 && stack[stack.length - 1] === element;\n}\nfunction decodeEntity(match, entity) {\n if (NAMED_ENTITIES[entity] !== undefined) {\n return NAMED_ENTITIES[entity] || match;\n }\n if (/^#x[a-f0-9]+$/i.test(entity)) {\n return String.fromCodePoint(parseInt(entity.slice(2), 16));\n }\n if (/^#\\d+$/.test(entity)) {\n return String.fromCodePoint(parseInt(entity.slice(1), 10));\n }\n return match;\n}\n\nconst PRESERVE_WS_ATTR_NAME = 'ngPreserveWhitespaces';\nconst SKIP_WS_TRIM_TAGS = new Set(['pre', 'template', 'textarea', 'script', 'style']);\nconst WS_CHARS = ' \\f\\n\\r\\t\\v\\u1680\\u180e\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff';\nconst NO_WS_REGEXP = new RegExp(`[^${WS_CHARS}]`);\nconst WS_REPLACE_REGEXP = new RegExp(`[${WS_CHARS}]{2,}`, 'g');\nfunction hasPreserveWhitespacesAttr(attrs) {\n return attrs.some(attr => attr.name === PRESERVE_WS_ATTR_NAME);\n}\nfunction replaceNgsp(value) {\n return value.replace(new RegExp(NGSP_UNICODE, 'g'), ' ');\n}\nclass WhitespaceVisitor {\n preserveSignificantWhitespace;\n originalNodeMap;\n requireContext;\n icuExpansionDepth = 0;\n constructor(preserveSignificantWhitespace, originalNodeMap, requireContext = true) {\n this.preserveSignificantWhitespace = preserveSignificantWhitespace;\n this.originalNodeMap = originalNodeMap;\n this.requireContext = requireContext;\n }\n visitElement(element, context) {\n if (SKIP_WS_TRIM_TAGS.has(element.name) || hasPreserveWhitespacesAttr(element.attrs)) {\n const newElement = new Element(element.name, visitAllWithSiblings(this, element.attrs), visitAllWithSiblings(this, element.directives), element.children, element.isSelfClosing, element.sourceSpan, element.startSourceSpan, element.endSourceSpan, element.isVoid, element.i18n);\n this.originalNodeMap?.set(newElement, element);\n return newElement;\n }\n const newElement = new Element(element.name, element.attrs, element.directives, visitAllWithSiblings(this, element.children), element.isSelfClosing, element.sourceSpan, element.startSourceSpan, element.endSourceSpan, element.isVoid, element.i18n);\n this.originalNodeMap?.set(newElement, element);\n return newElement;\n }\n visitAttribute(attribute, context) {\n return attribute.name !== PRESERVE_WS_ATTR_NAME ? attribute : null;\n }\n visitText(text, context) {\n const isNotBlank = text.value.match(NO_WS_REGEXP);\n const hasExpansionSibling = context && (context.prev instanceof Expansion || context.next instanceof Expansion);\n const inIcuExpansion = this.icuExpansionDepth > 0;\n if (inIcuExpansion && this.preserveSignificantWhitespace) return text;\n if (isNotBlank || hasExpansionSibling) {\n const tokens = text.tokens.map(token => token.type === 5 ? createWhitespaceProcessedTextToken(token) : token);\n if (!this.preserveSignificantWhitespace && tokens.length > 0) {\n const firstToken = tokens[0];\n tokens.splice(0, 1, trimLeadingWhitespace(firstToken, context));\n const lastToken = tokens[tokens.length - 1];\n tokens.splice(tokens.length - 1, 1, trimTrailingWhitespace(lastToken, context));\n }\n const processed = processWhitespace(text.value);\n const value = this.preserveSignificantWhitespace ? processed : trimLeadingAndTrailingWhitespace(processed, context);\n const result = new Text(value, text.sourceSpan, tokens, text.i18n);\n this.originalNodeMap?.set(result, text);\n return result;\n }\n return null;\n }\n visitComment(comment, context) {\n return comment;\n }\n visitExpansion(expansion, context) {\n this.icuExpansionDepth++;\n let newExpansion;\n try {\n newExpansion = new Expansion(expansion.switchValue, expansion.type, visitAllWithSiblings(this, expansion.cases), expansion.sourceSpan, expansion.switchValueSourceSpan, expansion.i18n);\n } finally {\n this.icuExpansionDepth--;\n }\n this.originalNodeMap?.set(newExpansion, expansion);\n return newExpansion;\n }\n visitExpansionCase(expansionCase, context) {\n const newExpansionCase = new ExpansionCase(expansionCase.value, visitAllWithSiblings(this, expansionCase.expression), expansionCase.sourceSpan, expansionCase.valueSourceSpan, expansionCase.expSourceSpan);\n this.originalNodeMap?.set(newExpansionCase, expansionCase);\n return newExpansionCase;\n }\n visitBlock(block, context) {\n const newBlock = new Block(block.name, block.parameters, visitAllWithSiblings(this, block.children), block.sourceSpan, block.nameSpan, block.startSourceSpan, block.endSourceSpan);\n this.originalNodeMap?.set(newBlock, block);\n return newBlock;\n }\n visitBlockParameter(parameter, context) {\n return parameter;\n }\n visitLetDeclaration(decl, context) {\n return decl;\n }\n visitComponent(node, context) {\n if (node.tagName && SKIP_WS_TRIM_TAGS.has(node.tagName) || hasPreserveWhitespacesAttr(node.attrs)) {\n const newElement = new Component(node.componentName, node.tagName, node.fullName, visitAllWithSiblings(this, node.attrs), visitAllWithSiblings(this, node.directives), node.children, node.isSelfClosing, node.sourceSpan, node.startSourceSpan, node.endSourceSpan, node.i18n);\n this.originalNodeMap?.set(newElement, node);\n return newElement;\n }\n const newElement = new Component(node.componentName, node.tagName, node.fullName, node.attrs, node.directives, visitAllWithSiblings(this, node.children), node.isSelfClosing, node.sourceSpan, node.startSourceSpan, node.endSourceSpan, node.i18n);\n this.originalNodeMap?.set(newElement, node);\n return newElement;\n }\n visitDirective(directive, context) {\n return directive;\n }\n visit(_node, context) {\n if (this.requireContext && !context) {\n throw new Error(`WhitespaceVisitor requires context. Visit via \\`visitAllWithSiblings\\` to get this context.`);\n }\n return false;\n }\n}\nfunction trimLeadingWhitespace(token, context) {\n if (token.type !== 5) return token;\n const isFirstTokenInTag = !context?.prev;\n if (!isFirstTokenInTag) return token;\n return transformTextToken(token, text => text.trimStart());\n}\nfunction trimTrailingWhitespace(token, context) {\n if (token.type !== 5) return token;\n const isLastTokenInTag = !context?.next;\n if (!isLastTokenInTag) return token;\n return transformTextToken(token, text => text.trimEnd());\n}\nfunction trimLeadingAndTrailingWhitespace(text, context) {\n const isFirstTokenInTag = !context?.prev;\n const isLastTokenInTag = !context?.next;\n const maybeTrimmedStart = isFirstTokenInTag ? text.trimStart() : text;\n const maybeTrimmed = isLastTokenInTag ? maybeTrimmedStart.trimEnd() : maybeTrimmedStart;\n return maybeTrimmed;\n}\nfunction createWhitespaceProcessedTextToken({\n type,\n parts,\n sourceSpan\n}) {\n return {\n type,\n parts: [processWhitespace(parts[0])],\n sourceSpan\n };\n}\nfunction transformTextToken({\n type,\n parts,\n sourceSpan\n}, transform) {\n return {\n type,\n parts: [transform(parts[0])],\n sourceSpan\n };\n}\nfunction processWhitespace(text) {\n return replaceNgsp(text).replace(WS_REPLACE_REGEXP, ' ');\n}\nfunction visitAllWithSiblings(visitor, nodes) {\n const result = [];\n nodes.forEach((ast, i) => {\n const context = {\n prev: nodes[i - 1],\n next: nodes[i + 1]\n };\n const astResult = ast.visit(visitor, context);\n if (astResult) {\n result.push(astResult);\n }\n });\n return result;\n}\n\nvar TokenType;\n(function (TokenType) {\n TokenType[TokenType[\"Character\"] = 0] = \"Character\";\n TokenType[TokenType[\"Identifier\"] = 1] = \"Identifier\";\n TokenType[TokenType[\"PrivateIdentifier\"] = 2] = \"PrivateIdentifier\";\n TokenType[TokenType[\"Keyword\"] = 3] = \"Keyword\";\n TokenType[TokenType[\"String\"] = 4] = \"String\";\n TokenType[TokenType[\"Operator\"] = 5] = \"Operator\";\n TokenType[TokenType[\"Number\"] = 6] = \"Number\";\n TokenType[TokenType[\"RegExpBody\"] = 7] = \"RegExpBody\";\n TokenType[TokenType[\"RegExpFlags\"] = 8] = \"RegExpFlags\";\n TokenType[TokenType[\"Error\"] = 9] = \"Error\";\n})(TokenType || (TokenType = {}));\nvar StringTokenKind;\n(function (StringTokenKind) {\n StringTokenKind[StringTokenKind[\"Plain\"] = 0] = \"Plain\";\n StringTokenKind[StringTokenKind[\"TemplateLiteralPart\"] = 1] = \"TemplateLiteralPart\";\n StringTokenKind[StringTokenKind[\"TemplateLiteralEnd\"] = 2] = \"TemplateLiteralEnd\";\n})(StringTokenKind || (StringTokenKind = {}));\nconst KEYWORDS = ['var', 'let', 'as', 'null', 'undefined', 'true', 'false', 'if', 'else', 'this', 'typeof', 'void', 'in', 'instanceof'];\nclass Lexer {\n tokenize(text) {\n return new _Scanner(text).scan();\n }\n}\nclass Token {\n index;\n end;\n type;\n numValue;\n strValue;\n constructor(index, end, type, numValue, strValue) {\n this.index = index;\n this.end = end;\n this.type = type;\n this.numValue = numValue;\n this.strValue = strValue;\n }\n isCharacter(code) {\n return this.type === TokenType.Character && this.numValue === code;\n }\n isNumber() {\n return this.type === TokenType.Number;\n }\n isString() {\n return this.type === TokenType.String;\n }\n isOperator(operator) {\n return this.type === TokenType.Operator && this.strValue === operator;\n }\n isIdentifier() {\n return this.type === TokenType.Identifier;\n }\n isPrivateIdentifier() {\n return this.type === TokenType.PrivateIdentifier;\n }\n isKeyword() {\n return this.type === TokenType.Keyword;\n }\n isKeywordLet() {\n return this.type === TokenType.Keyword && this.strValue === 'let';\n }\n isKeywordAs() {\n return this.type === TokenType.Keyword && this.strValue === 'as';\n }\n isKeywordNull() {\n return this.type === TokenType.Keyword && this.strValue === 'null';\n }\n isKeywordUndefined() {\n return this.type === TokenType.Keyword && this.strValue === 'undefined';\n }\n isKeywordTrue() {\n return this.type === TokenType.Keyword && this.strValue === 'true';\n }\n isKeywordFalse() {\n return this.type === TokenType.Keyword && this.strValue === 'false';\n }\n isKeywordThis() {\n return this.type === TokenType.Keyword && this.strValue === 'this';\n }\n isKeywordTypeof() {\n return this.type === TokenType.Keyword && this.strValue === 'typeof';\n }\n isKeywordVoid() {\n return this.type === TokenType.Keyword && this.strValue === 'void';\n }\n isKeywordIn() {\n return this.type === TokenType.Keyword && this.strValue === 'in';\n }\n isKeywordInstanceOf() {\n return this.type === TokenType.Keyword && this.strValue === 'instanceof';\n }\n isError() {\n return this.type === TokenType.Error;\n }\n isRegExpBody() {\n return this.type === TokenType.RegExpBody;\n }\n isRegExpFlags() {\n return this.type === TokenType.RegExpFlags;\n }\n toNumber() {\n return this.type === TokenType.Number ? this.numValue : -1;\n }\n isTemplateLiteralPart() {\n return this.isString() && this.kind === StringTokenKind.TemplateLiteralPart;\n }\n isTemplateLiteralEnd() {\n return this.isString() && this.kind === StringTokenKind.TemplateLiteralEnd;\n }\n isTemplateLiteralInterpolationStart() {\n return this.isOperator('${');\n }\n toString() {\n switch (this.type) {\n case TokenType.Character:\n case TokenType.Identifier:\n case TokenType.Keyword:\n case TokenType.Operator:\n case TokenType.PrivateIdentifier:\n case TokenType.String:\n case TokenType.Error:\n case TokenType.RegExpBody:\n case TokenType.RegExpFlags:\n return this.strValue;\n case TokenType.Number:\n return this.numValue.toString();\n default:\n return null;\n }\n }\n}\nclass StringToken extends Token {\n kind;\n constructor(index, end, strValue, kind) {\n super(index, end, TokenType.String, 0, strValue);\n this.kind = kind;\n }\n}\nfunction newCharacterToken(index, end, code) {\n return new Token(index, end, TokenType.Character, code, String.fromCharCode(code));\n}\nfunction newIdentifierToken(index, end, text) {\n return new Token(index, end, TokenType.Identifier, 0, text);\n}\nfunction newPrivateIdentifierToken(index, end, text) {\n return new Token(index, end, TokenType.PrivateIdentifier, 0, text);\n}\nfunction newKeywordToken(index, end, text) {\n return new Token(index, end, TokenType.Keyword, 0, text);\n}\nfunction newOperatorToken(index, end, text) {\n return new Token(index, end, TokenType.Operator, 0, text);\n}\nfunction newNumberToken(index, end, n) {\n return new Token(index, end, TokenType.Number, n, '');\n}\nfunction newErrorToken(index, end, message) {\n return new Token(index, end, TokenType.Error, 0, message);\n}\nfunction newRegExpBodyToken(index, end, text) {\n return new Token(index, end, TokenType.RegExpBody, 0, text);\n}\nfunction newRegExpFlagsToken(index, end, text) {\n return new Token(index, end, TokenType.RegExpFlags, 0, text);\n}\nconst EOF = new Token(-1, -1, TokenType.Character, 0, '');\nclass _Scanner {\n input;\n tokens = [];\n length;\n peek = 0;\n index = -1;\n braceStack = [];\n constructor(input) {\n this.input = input;\n this.length = input.length;\n this.advance();\n }\n scan() {\n let token = this.scanToken();\n while (token !== null) {\n this.tokens.push(token);\n token = this.scanToken();\n }\n return this.tokens;\n }\n advance() {\n this.peek = ++this.index >= this.length ? $EOF : this.input.charCodeAt(this.index);\n }\n scanToken() {\n const input = this.input;\n const length = this.length;\n let peek = this.peek;\n let index = this.index;\n while (peek <= $SPACE) {\n if (++index >= length) {\n peek = $EOF;\n break;\n } else {\n peek = input.charCodeAt(index);\n }\n }\n this.peek = peek;\n this.index = index;\n if (index >= length) {\n return null;\n }\n if (isIdentifierStart(peek)) {\n return this.scanIdentifier();\n }\n if (isDigit(peek)) {\n return this.scanNumber(index);\n }\n const start = index;\n switch (peek) {\n case $PERIOD:\n this.advance();\n if (isDigit(this.peek)) {\n return this.scanNumber(start);\n }\n if (this.peek !== $PERIOD) {\n return newCharacterToken(start, this.index, $PERIOD);\n }\n this.advance();\n if (this.peek === $PERIOD) {\n this.advance();\n return newOperatorToken(start, this.index, '...');\n }\n return this.error(`Unexpected character [${String.fromCharCode(peek)}]`, 0);\n case $LPAREN:\n case $RPAREN:\n case $LBRACKET:\n case $RBRACKET:\n case $COMMA:\n case $COLON:\n case $SEMICOLON:\n return this.scanCharacter(start, peek);\n case $LBRACE:\n return this.scanOpenBrace(start, peek);\n case $RBRACE:\n return this.scanCloseBrace(start, peek);\n case $SQ:\n case $DQ:\n return this.scanString();\n case $BT:\n this.advance();\n return this.scanTemplateLiteralPart(start);\n case $HASH:\n return this.scanPrivateIdentifier();\n case $PLUS:\n return this.scanComplexOperator(start, '+', $EQ, '=');\n case $MINUS:\n return this.scanComplexOperator(start, '-', $EQ, '=');\n case $SLASH:\n return this.isStartOfRegex() ? this.scanRegex(index) : this.scanComplexOperator(start, '/', $EQ, '=');\n case $PERCENT:\n return this.scanComplexOperator(start, '%', $EQ, '=');\n case $CARET:\n return this.scanOperator(start, '^');\n case $STAR:\n return this.scanStar(start);\n case $QUESTION:\n return this.scanQuestion(start);\n case $LT:\n case $GT:\n return this.scanComplexOperator(start, String.fromCharCode(peek), $EQ, '=');\n case $BANG:\n return this.scanComplexOperator(start, '!', $EQ, '=', $EQ, '=');\n case $EQ:\n return this.scanEquals(start);\n case $AMPERSAND:\n return this.scanComplexOperator(start, '&', $AMPERSAND, '&', $EQ, '=');\n case $BAR:\n return this.scanComplexOperator(start, '|', $BAR, '|', $EQ, '=');\n case $NBSP:\n while (isWhitespace(this.peek)) this.advance();\n return this.scanToken();\n }\n this.advance();\n return this.error(`Unexpected character [${String.fromCharCode(peek)}]`, 0);\n }\n scanCharacter(start, code) {\n this.advance();\n return newCharacterToken(start, this.index, code);\n }\n scanOperator(start, str) {\n this.advance();\n return newOperatorToken(start, this.index, str);\n }\n scanOpenBrace(start, code) {\n this.braceStack.push('expression');\n this.advance();\n return newCharacterToken(start, this.index, code);\n }\n scanCloseBrace(start, code) {\n this.advance();\n const currentBrace = this.braceStack.pop();\n if (currentBrace === 'interpolation') {\n this.tokens.push(newCharacterToken(start, this.index, $RBRACE));\n return this.scanTemplateLiteralPart(this.index);\n }\n return newCharacterToken(start, this.index, code);\n }\n scanComplexOperator(start, one, twoCode, two, threeCode, three) {\n this.advance();\n let str = one;\n if (this.peek == twoCode) {\n this.advance();\n str += two;\n }\n if (threeCode != null && this.peek == threeCode) {\n this.advance();\n str += three;\n }\n return newOperatorToken(start, this.index, str);\n }\n scanEquals(start) {\n this.advance();\n let str = '=';\n if (this.peek === $EQ) {\n this.advance();\n str += '=';\n } else if (this.peek === $GT) {\n this.advance();\n str += '>';\n return newOperatorToken(start, this.index, str);\n }\n if (this.peek === $EQ) {\n this.advance();\n str += '=';\n }\n return newOperatorToken(start, this.index, str);\n }\n scanIdentifier() {\n const start = this.index;\n this.advance();\n while (isIdentifierPart(this.peek)) this.advance();\n const str = this.input.substring(start, this.index);\n return KEYWORDS.indexOf(str) > -1 ? newKeywordToken(start, this.index, str) : newIdentifierToken(start, this.index, str);\n }\n scanPrivateIdentifier() {\n const start = this.index;\n this.advance();\n if (!isIdentifierStart(this.peek)) {\n return this.error('Invalid character [#]', -1);\n }\n while (isIdentifierPart(this.peek)) this.advance();\n const identifierName = this.input.substring(start, this.index);\n return newPrivateIdentifierToken(start, this.index, identifierName);\n }\n scanNumber(start) {\n let simple = this.index === start;\n let hasSeparators = false;\n this.advance();\n while (true) {\n if (isDigit(this.peek)) ; else if (this.peek === $_) {\n if (!isDigit(this.input.charCodeAt(this.index - 1)) || !isDigit(this.input.charCodeAt(this.index + 1))) {\n return this.error('Invalid numeric separator', 0);\n }\n hasSeparators = true;\n } else if (this.peek === $PERIOD) {\n simple = false;\n } else if (isExponentStart(this.peek)) {\n this.advance();\n if (isExponentSign(this.peek)) this.advance();\n if (!isDigit(this.peek)) return this.error('Invalid exponent', -1);\n simple = false;\n } else {\n break;\n }\n this.advance();\n }\n let str = this.input.substring(start, this.index);\n if (hasSeparators) {\n str = str.replace(/_/g, '');\n }\n const value = simple ? parseIntAutoRadix(str) : parseFloat(str);\n return newNumberToken(start, this.index, value);\n }\n scanString() {\n const start = this.index;\n const quote = this.peek;\n this.advance();\n let buffer = '';\n let marker = this.index;\n const input = this.input;\n while (this.peek != quote) {\n if (this.peek == $BACKSLASH) {\n const result = this.scanStringBackslash(buffer, marker);\n if (typeof result !== 'string') {\n return result;\n }\n buffer = result;\n marker = this.index;\n } else if (this.peek == $EOF) {\n return this.error('Unterminated quote', 0);\n } else {\n this.advance();\n }\n }\n const last = input.substring(marker, this.index);\n this.advance();\n return new StringToken(start, this.index, buffer + last, StringTokenKind.Plain);\n }\n scanQuestion(start) {\n this.advance();\n let operator = '?';\n if (this.peek === $QUESTION) {\n operator += '?';\n this.advance();\n if (this.peek === $EQ) {\n operator += '=';\n this.advance();\n }\n } else if (this.peek === $PERIOD) {\n operator += '.';\n this.advance();\n }\n return newOperatorToken(start, this.index, operator);\n }\n scanTemplateLiteralPart(start) {\n let buffer = '';\n let marker = this.index;\n while (this.peek !== $BT) {\n if (this.peek === $BACKSLASH) {\n const result = this.scanStringBackslash(buffer, marker);\n if (typeof result !== 'string') {\n return result;\n }\n buffer = result;\n marker = this.index;\n } else if (this.peek === $$) {\n const dollar = this.index;\n this.advance();\n if (this.peek === $LBRACE) {\n this.braceStack.push('interpolation');\n this.tokens.push(new StringToken(start, dollar, buffer + this.input.substring(marker, dollar), StringTokenKind.TemplateLiteralPart));\n this.advance();\n return newOperatorToken(dollar, this.index, this.input.substring(dollar, this.index));\n }\n } else if (this.peek === $EOF) {\n return this.error('Unterminated template literal', 0);\n } else {\n this.advance();\n }\n }\n const last = this.input.substring(marker, this.index);\n this.advance();\n return new StringToken(start, this.index, buffer + last, StringTokenKind.TemplateLiteralEnd);\n }\n error(message, offset) {\n const position = this.index + offset;\n return newErrorToken(position, this.index, `Lexer Error: ${message} at column ${position} in expression [${this.input}]`);\n }\n scanStringBackslash(buffer, marker) {\n buffer += this.input.substring(marker, this.index);\n let unescapedCode;\n this.advance();\n if (this.peek === $u) {\n const hex = this.input.substring(this.index + 1, this.index + 5);\n if (/^[0-9a-f]+$/i.test(hex)) {\n unescapedCode = parseInt(hex, 16);\n } else {\n return this.error(`Invalid unicode escape [\\\\u${hex}]`, 0);\n }\n for (let i = 0; i < 5; i++) {\n this.advance();\n }\n } else {\n unescapedCode = unescape(this.peek);\n this.advance();\n }\n buffer += String.fromCharCode(unescapedCode);\n return buffer;\n }\n scanStar(start) {\n this.advance();\n let operator = '*';\n if (this.peek === $STAR) {\n operator += '*';\n this.advance();\n if (this.peek === $EQ) {\n operator += '=';\n this.advance();\n }\n } else if (this.peek === $EQ) {\n operator += '=';\n this.advance();\n }\n return newOperatorToken(start, this.index, operator);\n }\n isStartOfRegex() {\n if (this.tokens.length === 0) {\n return true;\n }\n const prevToken = this.tokens[this.tokens.length - 1];\n if (prevToken.isOperator('!')) {\n const beforePrevToken = this.tokens.length > 1 ? this.tokens[this.tokens.length - 2] : null;\n const isNegation = beforePrevToken === null || beforePrevToken.type !== TokenType.Identifier && !beforePrevToken.isCharacter($RPAREN) && !beforePrevToken.isCharacter($RBRACKET);\n return isNegation;\n }\n return prevToken.type === TokenType.Operator || prevToken.isCharacter($LPAREN) || prevToken.isCharacter($LBRACKET) || prevToken.isCharacter($COMMA) || prevToken.isCharacter($COLON);\n }\n scanRegex(tokenStart) {\n this.advance();\n const textStart = this.index;\n let inEscape = false;\n let inCharacterClass = false;\n while (true) {\n const peek = this.peek;\n if (peek === $EOF) {\n return this.error('Unterminated regular expression', 0);\n }\n if (inEscape) {\n inEscape = false;\n } else if (peek === $BACKSLASH) {\n inEscape = true;\n } else if (peek === $LBRACKET) {\n inCharacterClass = true;\n } else if (peek === $RBRACKET) {\n inCharacterClass = false;\n } else if (peek === $SLASH && !inCharacterClass) {\n break;\n }\n this.advance();\n }\n const value = this.input.substring(textStart, this.index);\n this.advance();\n const bodyToken = newRegExpBodyToken(tokenStart, this.index, value);\n const flagsToken = this.scanRegexFlags(this.index);\n if (flagsToken !== null) {\n this.tokens.push(bodyToken);\n return flagsToken;\n }\n return bodyToken;\n }\n scanRegexFlags(start) {\n if (!isAsciiLetter(this.peek)) {\n return null;\n }\n while (isAsciiLetter(this.peek)) {\n this.advance();\n }\n return newRegExpFlagsToken(start, this.index, this.input.substring(start, this.index));\n }\n}\nfunction isIdentifierStart(code) {\n return $a <= code && code <= $z || $A <= code && code <= $Z || code == $_ || code == $$;\n}\nfunction isIdentifierPart(code) {\n return isAsciiLetter(code) || isDigit(code) || code == $_ || code == $$;\n}\nfunction isExponentStart(code) {\n return code == $e || code == $E;\n}\nfunction isExponentSign(code) {\n return code == $MINUS || code == $PLUS;\n}\nfunction unescape(code) {\n switch (code) {\n case $n:\n return $LF;\n case $f:\n return $FF;\n case $r:\n return $CR;\n case $t:\n return $TAB;\n case $v:\n return $VTAB;\n default:\n return code;\n }\n}\nfunction parseIntAutoRadix(text) {\n const result = parseInt(text);\n if (isNaN(result)) {\n throw new Error('Invalid integer literal when parsing ' + text);\n }\n return result;\n}\n\nclass SplitInterpolation {\n strings;\n expressions;\n offsets;\n constructor(strings, expressions, offsets) {\n this.strings = strings;\n this.expressions = expressions;\n this.offsets = offsets;\n }\n}\nclass TemplateBindingParseResult {\n templateBindings;\n warnings;\n errors;\n constructor(templateBindings, warnings, errors) {\n this.templateBindings = templateBindings;\n this.warnings = warnings;\n this.errors = errors;\n }\n}\nfunction getLocation(span) {\n return span.start.toString() || '(unknown)';\n}\nclass Parser {\n _lexer;\n _supportsDirectPipeReferences;\n constructor(_lexer, _supportsDirectPipeReferences = false) {\n this._lexer = _lexer;\n this._supportsDirectPipeReferences = _supportsDirectPipeReferences;\n }\n parseAction(input, parseSourceSpan, absoluteOffset) {\n const errors = [];\n this._checkNoInterpolation(errors, input, parseSourceSpan);\n const {\n stripped: sourceToLex\n } = this._stripComments(input);\n const tokens = this._lexer.tokenize(sourceToLex);\n const ast = new _ParseAST(input, parseSourceSpan, absoluteOffset, tokens, 1, errors, 0, this._supportsDirectPipeReferences).parseChain();\n return new ASTWithSource(ast, input, getLocation(parseSourceSpan), absoluteOffset, errors);\n }\n parseBinding(input, parseSourceSpan, absoluteOffset) {\n const errors = [];\n const ast = this._parseBindingAst(input, parseSourceSpan, absoluteOffset, errors);\n return new ASTWithSource(ast, input, getLocation(parseSourceSpan), absoluteOffset, errors);\n }\n checkSimpleExpression(ast) {\n const checker = new SimpleExpressionChecker();\n ast.visit(checker);\n return checker.errors;\n }\n parseSimpleBinding(input, parseSourceSpan, absoluteOffset) {\n const errors = [];\n const ast = this._parseBindingAst(input, parseSourceSpan, absoluteOffset, errors);\n const simplExpressionErrors = this.checkSimpleExpression(ast);\n if (simplExpressionErrors.length > 0) {\n errors.push(getParseError(`Host binding expression cannot contain ${simplExpressionErrors.join(' ')}`, input, '', parseSourceSpan));\n }\n return new ASTWithSource(ast, input, getLocation(parseSourceSpan), absoluteOffset, errors);\n }\n _parseBindingAst(input, parseSourceSpan, absoluteOffset, errors) {\n this._checkNoInterpolation(errors, input, parseSourceSpan);\n const {\n stripped: sourceToLex\n } = this._stripComments(input);\n const tokens = this._lexer.tokenize(sourceToLex);\n return new _ParseAST(input, parseSourceSpan, absoluteOffset, tokens, 0, errors, 0, this._supportsDirectPipeReferences).parseChain();\n }\n parseTemplateBindings(templateKey, templateValue, parseSourceSpan, absoluteKeyOffset, absoluteValueOffset) {\n const tokens = this._lexer.tokenize(templateValue);\n const errors = [];\n const parser = new _ParseAST(templateValue, parseSourceSpan, absoluteValueOffset, tokens, 0, errors, 0, this._supportsDirectPipeReferences);\n return parser.parseTemplateBindings({\n source: templateKey,\n span: new AbsoluteSourceSpan(absoluteKeyOffset, absoluteKeyOffset + templateKey.length)\n });\n }\n parseInterpolation(input, parseSourceSpan, absoluteOffset, interpolatedTokens) {\n const errors = [];\n const {\n strings,\n expressions,\n offsets\n } = this.splitInterpolation(input, parseSourceSpan, errors, interpolatedTokens);\n if (expressions.length === 0) return null;\n const expressionNodes = [];\n for (let i = 0; i < expressions.length; ++i) {\n const expressionSpan = interpolatedTokens?.[i * 2 + 1]?.sourceSpan;\n const expressionText = expressions[i].text;\n const {\n stripped: sourceToLex,\n hasComments\n } = this._stripComments(expressionText);\n const tokens = this._lexer.tokenize(sourceToLex);\n if (hasComments && sourceToLex.trim().length === 0 && tokens.length === 0) {\n errors.push(getParseError('Interpolation expression cannot only contain a comment', input, `at column ${expressions[i].start} in`, parseSourceSpan));\n continue;\n }\n const ast = new _ParseAST(expressionSpan ? expressionText : input, expressionSpan || parseSourceSpan, absoluteOffset, tokens, 0, errors, offsets[i], this._supportsDirectPipeReferences).parseChain();\n expressionNodes.push(ast);\n }\n return this.createInterpolationAst(strings.map(s => s.text), expressionNodes, input, getLocation(parseSourceSpan), absoluteOffset, errors);\n }\n parseInterpolationExpression(expression, parseSourceSpan, absoluteOffset) {\n const {\n stripped: sourceToLex\n } = this._stripComments(expression);\n const tokens = this._lexer.tokenize(sourceToLex);\n const errors = [];\n const ast = new _ParseAST(expression, parseSourceSpan, absoluteOffset, tokens, 0, errors, 0, this._supportsDirectPipeReferences).parseChain();\n const strings = ['', ''];\n return this.createInterpolationAst(strings, [ast], expression, getLocation(parseSourceSpan), absoluteOffset, errors);\n }\n createInterpolationAst(strings, expressions, input, location, absoluteOffset, errors) {\n const span = new ParseSpan(0, input.length);\n const interpolation = new Interpolation$1(span, span.toAbsolute(absoluteOffset), strings, expressions);\n return new ASTWithSource(interpolation, input, location, absoluteOffset, errors);\n }\n splitInterpolation(input, parseSourceSpan, errors, interpolatedTokens) {\n const strings = [];\n const expressions = [];\n const offsets = [];\n const inputToTemplateIndexMap = interpolatedTokens ? getIndexMapForOriginalTemplate(interpolatedTokens) : null;\n let i = 0;\n let atInterpolation = false;\n let extendLastString = false;\n const interpStart = '{{';\n const interpEnd = '}}';\n while (i < input.length) {\n if (!atInterpolation) {\n const start = i;\n i = input.indexOf(interpStart, i);\n if (i === -1) {\n i = input.length;\n }\n const text = input.substring(start, i);\n strings.push({\n text,\n start,\n end: i\n });\n atInterpolation = true;\n } else {\n const fullStart = i;\n const exprStart = fullStart + interpStart.length;\n const exprEnd = this._getInterpolationEndIndex(input, interpEnd, exprStart);\n if (exprEnd === -1) {\n atInterpolation = false;\n extendLastString = true;\n break;\n }\n const fullEnd = exprEnd + interpEnd.length;\n const text = input.substring(exprStart, exprEnd);\n if (text.trim().length === 0) {\n errors.push(getParseError('Blank expressions are not allowed in interpolated strings', input, `at column ${i} in`, parseSourceSpan));\n }\n expressions.push({\n text,\n start: fullStart,\n end: fullEnd\n });\n const startInOriginalTemplate = inputToTemplateIndexMap?.get(fullStart) ?? fullStart;\n const offset = startInOriginalTemplate + interpStart.length;\n offsets.push(offset);\n i = fullEnd;\n atInterpolation = false;\n }\n }\n if (!atInterpolation) {\n if (extendLastString) {\n const piece = strings[strings.length - 1];\n piece.text += input.substring(i);\n piece.end = input.length;\n } else {\n strings.push({\n text: input.substring(i),\n start: i,\n end: input.length\n });\n }\n }\n return new SplitInterpolation(strings, expressions, offsets);\n }\n wrapLiteralPrimitive(input, sourceSpanOrLocation, absoluteOffset) {\n const span = new ParseSpan(0, input == null ? 0 : input.length);\n return new ASTWithSource(new LiteralPrimitive(span, span.toAbsolute(absoluteOffset), input), input, typeof sourceSpanOrLocation === 'string' ? sourceSpanOrLocation : getLocation(sourceSpanOrLocation), absoluteOffset, []);\n }\n _stripComments(input) {\n const i = this._commentStart(input);\n return i != null ? {\n stripped: input.substring(0, i),\n hasComments: true\n } : {\n stripped: input,\n hasComments: false\n };\n }\n _commentStart(input) {\n let outerQuote = null;\n for (let i = 0; i < input.length - 1; i++) {\n const char = input.charCodeAt(i);\n const nextChar = input.charCodeAt(i + 1);\n if (char === $SLASH && nextChar == $SLASH && outerQuote == null) return i;\n if (outerQuote === char) {\n outerQuote = null;\n } else if (outerQuote == null && isQuote(char)) {\n outerQuote = char;\n }\n }\n return null;\n }\n _checkNoInterpolation(errors, input, parseSourceSpan) {\n let startIndex = -1;\n let endIndex = -1;\n for (const charIndex of this._forEachUnquotedChar(input, 0)) {\n if (startIndex === -1) {\n if (input.startsWith('{{')) {\n startIndex = charIndex;\n }\n } else {\n endIndex = this._getInterpolationEndIndex(input, '}}', charIndex);\n if (endIndex > -1) {\n break;\n }\n }\n }\n if (startIndex > -1 && endIndex > -1) {\n errors.push(getParseError(`Got interpolation ({{}}) where expression was expected`, input, `at column ${startIndex} in`, parseSourceSpan));\n }\n }\n _getInterpolationEndIndex(input, expressionEnd, start) {\n for (const charIndex of this._forEachUnquotedChar(input, start)) {\n if (input.startsWith(expressionEnd, charIndex)) {\n return charIndex;\n }\n if (input.startsWith('//', charIndex)) {\n return input.indexOf(expressionEnd, charIndex);\n }\n }\n return -1;\n }\n *_forEachUnquotedChar(input, start) {\n let currentQuote = null;\n let escapeCount = 0;\n for (let i = start; i < input.length; i++) {\n const char = input[i];\n if (isQuote(input.charCodeAt(i)) && (currentQuote === null || currentQuote === char) && escapeCount % 2 === 0) {\n currentQuote = currentQuote === null ? char : null;\n } else if (currentQuote === null) {\n yield i;\n }\n escapeCount = char === '\\\\' ? escapeCount + 1 : 0;\n }\n }\n}\nvar ParseContextFlags;\n(function (ParseContextFlags) {\n ParseContextFlags[ParseContextFlags[\"None\"] = 0] = \"None\";\n ParseContextFlags[ParseContextFlags[\"Writable\"] = 1] = \"Writable\";\n})(ParseContextFlags || (ParseContextFlags = {}));\nconst SUPPORTED_REGEX_FLAGS = new Set(['d', 'g', 'i', 'm', 's', 'u', 'v', 'y']);\nclass _ParseAST {\n input;\n parseSourceSpan;\n absoluteOffset;\n tokens;\n parseFlags;\n errors;\n offset;\n supportsDirectPipeReferences;\n rparensExpected = 0;\n rbracketsExpected = 0;\n rbracesExpected = 0;\n context = ParseContextFlags.None;\n sourceSpanCache = new Map();\n index = 0;\n constructor(input, parseSourceSpan, absoluteOffset, tokens, parseFlags, errors, offset, supportsDirectPipeReferences) {\n this.input = input;\n this.parseSourceSpan = parseSourceSpan;\n this.absoluteOffset = absoluteOffset;\n this.tokens = tokens;\n this.parseFlags = parseFlags;\n this.errors = errors;\n this.offset = offset;\n this.supportsDirectPipeReferences = supportsDirectPipeReferences;\n }\n peek(offset) {\n const i = this.index + offset;\n return i < this.tokens.length ? this.tokens[i] : EOF;\n }\n get next() {\n return this.peek(0);\n }\n get atEOF() {\n return this.index >= this.tokens.length;\n }\n get inputIndex() {\n return this.atEOF ? this.currentEndIndex : this.next.index + this.offset;\n }\n get currentEndIndex() {\n if (this.index > 0) {\n const curToken = this.peek(-1);\n return curToken.end + this.offset;\n }\n if (this.tokens.length === 0) {\n return this.input.length + this.offset;\n }\n return this.next.index + this.offset;\n }\n get currentAbsoluteOffset() {\n return this.absoluteOffset + this.inputIndex;\n }\n span(start, artificialEndIndex) {\n let endIndex = this.currentEndIndex;\n if (artificialEndIndex !== undefined && artificialEndIndex > this.currentEndIndex) {\n endIndex = artificialEndIndex;\n }\n if (start > endIndex) {\n const tmp = endIndex;\n endIndex = start;\n start = tmp;\n }\n return new ParseSpan(start, endIndex);\n }\n sourceSpan(start, artificialEndIndex) {\n const serial = `${start}@${this.inputIndex}:${artificialEndIndex}`;\n if (!this.sourceSpanCache.has(serial)) {\n this.sourceSpanCache.set(serial, this.span(start, artificialEndIndex).toAbsolute(this.absoluteOffset));\n }\n return this.sourceSpanCache.get(serial);\n }\n advance() {\n this.index++;\n }\n withContext(context, cb) {\n this.context |= context;\n const ret = cb();\n this.context ^= context;\n return ret;\n }\n consumeOptionalCharacter(code) {\n if (this.next.isCharacter(code)) {\n this.advance();\n return true;\n } else {\n return false;\n }\n }\n peekKeywordLet() {\n return this.next.isKeywordLet();\n }\n peekKeywordAs() {\n return this.next.isKeywordAs();\n }\n expectCharacter(code) {\n if (this.consumeOptionalCharacter(code)) return;\n this.error(`Missing expected ${String.fromCharCode(code)}`);\n }\n consumeOptionalOperator(op) {\n if (this.next.isOperator(op)) {\n this.advance();\n return true;\n } else {\n return false;\n }\n }\n isAssignmentOperator(token) {\n return token.type === TokenType.Operator && Binary.isAssignmentOperation(token.strValue);\n }\n expectOperator(operator) {\n if (this.consumeOptionalOperator(operator)) return;\n this.error(`Missing expected operator ${operator}`);\n }\n prettyPrintToken(tok) {\n return tok === EOF ? 'end of input' : `token ${tok}`;\n }\n expectIdentifierOrKeyword() {\n const n = this.next;\n if (!n.isIdentifier() && !n.isKeyword()) {\n if (n.isPrivateIdentifier()) {\n this._reportErrorForPrivateIdentifier(n, 'expected identifier or keyword');\n } else {\n this.error(`Unexpected ${this.prettyPrintToken(n)}, expected identifier or keyword`);\n }\n return null;\n }\n this.advance();\n return n.toString();\n }\n expectIdentifierOrKeywordOrString() {\n const n = this.next;\n if (!n.isIdentifier() && !n.isKeyword() && !n.isString()) {\n if (n.isPrivateIdentifier()) {\n this._reportErrorForPrivateIdentifier(n, 'expected identifier, keyword or string');\n } else {\n this.error(`Unexpected ${this.prettyPrintToken(n)}, expected identifier, keyword, or string`);\n }\n return '';\n }\n this.advance();\n return n.toString();\n }\n parseChain() {\n const exprs = [];\n const start = this.inputIndex;\n while (this.index < this.tokens.length) {\n const expr = this.parsePipe();\n exprs.push(expr);\n if (this.consumeOptionalCharacter($SEMICOLON)) {\n if (!(this.parseFlags & 1)) {\n this.error('Binding expression cannot contain chained expression');\n }\n while (this.consumeOptionalCharacter($SEMICOLON)) {}\n } else if (this.index < this.tokens.length) {\n const errorIndex = this.index;\n this.error(`Unexpected token '${this.next}'`);\n if (this.index === errorIndex) {\n break;\n }\n }\n }\n if (exprs.length === 0) {\n const artificialStart = this.offset;\n const artificialEnd = this.offset + this.input.length;\n return new EmptyExpr$1(this.span(artificialStart, artificialEnd), this.sourceSpan(artificialStart, artificialEnd));\n }\n if (exprs.length == 1) return exprs[0];\n return new Chain(this.span(start), this.sourceSpan(start), exprs);\n }\n parsePipe() {\n const start = this.inputIndex;\n let result = this.parseExpression();\n if (this.consumeOptionalOperator('|')) {\n if (this.parseFlags & 1) {\n this.error(`Cannot have a pipe in an action expression`);\n }\n do {\n const nameStart = this.inputIndex;\n let nameId = this.expectIdentifierOrKeyword();\n let nameSpan;\n let fullSpanEnd = undefined;\n if (nameId !== null) {\n nameSpan = this.sourceSpan(nameStart);\n } else {\n nameId = '';\n fullSpanEnd = this.next.index !== -1 ? this.next.index : this.input.length + this.offset;\n nameSpan = new ParseSpan(fullSpanEnd, fullSpanEnd).toAbsolute(this.absoluteOffset);\n }\n const args = [];\n while (this.consumeOptionalCharacter($COLON)) {\n args.push(this.parseExpression());\n }\n let type;\n if (this.supportsDirectPipeReferences) {\n const charCode = nameId.charCodeAt(0);\n type = charCode === $_ || charCode >= $A && charCode <= $Z ? BindingPipeType.ReferencedDirectly : BindingPipeType.ReferencedByName;\n } else {\n type = BindingPipeType.ReferencedByName;\n }\n result = new BindingPipe(this.span(start), this.sourceSpan(start, fullSpanEnd), result, nameId, args, type, nameSpan);\n } while (this.consumeOptionalOperator('|'));\n }\n return result;\n }\n parseExpression() {\n return this.parseConditional();\n }\n parseConditional() {\n const start = this.inputIndex;\n const result = this.parseLogicalOr();\n if (this.consumeOptionalOperator('?')) {\n const yes = this.parsePipe();\n let no;\n if (!this.consumeOptionalCharacter($COLON)) {\n const end = this.inputIndex;\n const expression = this.input.substring(start, end);\n this.error(`Conditional expression ${expression} requires all 3 expressions`);\n no = new EmptyExpr$1(this.span(start), this.sourceSpan(start));\n } else {\n no = this.parsePipe();\n }\n return new Conditional(this.span(start), this.sourceSpan(start), result, yes, no);\n } else {\n return result;\n }\n }\n parseLogicalOr() {\n const start = this.inputIndex;\n let result = this.parseLogicalAnd();\n while (this.consumeOptionalOperator('||')) {\n const right = this.parseLogicalAnd();\n result = new Binary(this.span(start), this.sourceSpan(start), '||', result, right);\n }\n return result;\n }\n parseLogicalAnd() {\n const start = this.inputIndex;\n let result = this.parseNullishCoalescing();\n while (this.consumeOptionalOperator('&&')) {\n const right = this.parseNullishCoalescing();\n result = new Binary(this.span(start), this.sourceSpan(start), '&&', result, right);\n }\n return result;\n }\n parseNullishCoalescing() {\n const start = this.inputIndex;\n let result = this.parseEquality();\n while (this.consumeOptionalOperator('??')) {\n const right = this.parseEquality();\n result = new Binary(this.span(start), this.sourceSpan(start), '??', result, right);\n }\n return result;\n }\n parseEquality() {\n const start = this.inputIndex;\n let result = this.parseRelational();\n while (this.next.type == TokenType.Operator) {\n const operator = this.next.strValue;\n switch (operator) {\n case '==':\n case '===':\n case '!=':\n case '!==':\n this.advance();\n const right = this.parseRelational();\n result = new Binary(this.span(start), this.sourceSpan(start), operator, result, right);\n continue;\n }\n break;\n }\n return result;\n }\n parseRelational() {\n const start = this.inputIndex;\n let result = this.parseAdditive();\n while (this.next.type == TokenType.Operator || this.next.isKeywordIn() || this.next.isKeywordInstanceOf()) {\n const operator = this.next.strValue;\n switch (operator) {\n case '<':\n case '>':\n case '<=':\n case '>=':\n case 'in':\n case 'instanceof':\n this.advance();\n const right = this.parseAdditive();\n result = new Binary(this.span(start), this.sourceSpan(start), operator, result, right);\n continue;\n }\n break;\n }\n return result;\n }\n parseAdditive() {\n const start = this.inputIndex;\n let result = this.parseMultiplicative();\n while (this.next.type == TokenType.Operator) {\n const operator = this.next.strValue;\n switch (operator) {\n case '+':\n case '-':\n this.advance();\n let right = this.parseMultiplicative();\n result = new Binary(this.span(start), this.sourceSpan(start), operator, result, right);\n continue;\n }\n break;\n }\n return result;\n }\n parseMultiplicative() {\n const start = this.inputIndex;\n let result = this.parseExponentiation();\n while (this.next.type == TokenType.Operator) {\n const operator = this.next.strValue;\n switch (operator) {\n case '*':\n case '%':\n case '/':\n this.advance();\n const right = this.parseExponentiation();\n result = new Binary(this.span(start), this.sourceSpan(start), operator, result, right);\n continue;\n }\n break;\n }\n return result;\n }\n parseExponentiation() {\n const start = this.inputIndex;\n let result = this.parsePrefix();\n while (this.next.type == TokenType.Operator && this.next.strValue === '**') {\n if (result instanceof Unary || result instanceof PrefixNot || result instanceof TypeofExpression || result instanceof VoidExpression) {\n this.error('Unary operator used immediately before exponentiation expression. Parenthesis must be used to disambiguate operator precedence');\n }\n this.advance();\n const right = this.parseExponentiation();\n result = new Binary(this.span(start), this.sourceSpan(start), '**', result, right);\n }\n return result;\n }\n parsePrefix() {\n if (this.next.type == TokenType.Operator) {\n const start = this.inputIndex;\n const operator = this.next.strValue;\n let result;\n switch (operator) {\n case '+':\n this.advance();\n result = this.parsePrefix();\n return Unary.createPlus(this.span(start), this.sourceSpan(start), result);\n case '-':\n this.advance();\n result = this.parsePrefix();\n return Unary.createMinus(this.span(start), this.sourceSpan(start), result);\n case '!':\n this.advance();\n result = this.parsePrefix();\n return new PrefixNot(this.span(start), this.sourceSpan(start), result);\n }\n } else if (this.next.isKeywordTypeof()) {\n const start = this.inputIndex;\n this.advance();\n const result = this.parsePrefix();\n return new TypeofExpression(this.span(start), this.sourceSpan(start), result);\n } else if (this.next.isKeywordVoid()) {\n const start = this.inputIndex;\n this.advance();\n const result = this.parsePrefix();\n return new VoidExpression(this.span(start), this.sourceSpan(start), result);\n }\n return this.parseCallChain();\n }\n parseCallChain() {\n const start = this.inputIndex;\n let result = this.parsePrimary();\n while (true) {\n if (this.consumeOptionalCharacter($PERIOD)) {\n result = this.parseAccessMember(result, start, false);\n } else if (this.consumeOptionalOperator('?.')) {\n if (this.consumeOptionalCharacter($LPAREN)) {\n result = this.parseCall(result, start, true);\n } else {\n result = this.consumeOptionalCharacter($LBRACKET) ? this.parseKeyedReadOrWrite(result, start, true) : this.parseAccessMember(result, start, true);\n }\n } else if (this.consumeOptionalCharacter($LBRACKET)) {\n result = this.parseKeyedReadOrWrite(result, start, false);\n } else if (this.consumeOptionalCharacter($LPAREN)) {\n result = this.parseCall(result, start, false);\n } else if (this.consumeOptionalOperator('!')) {\n result = new NonNullAssert(this.span(start), this.sourceSpan(start), result);\n } else if (this.next.isTemplateLiteralEnd()) {\n result = this.parseNoInterpolationTaggedTemplateLiteral(result, start);\n } else if (this.next.isTemplateLiteralPart()) {\n result = this.parseTaggedTemplateLiteral(result, start);\n } else {\n return result;\n }\n }\n }\n parsePrimary() {\n const start = this.inputIndex;\n if (this.isArrowFunction()) {\n return this.parseArrowFunction(start);\n } else if (this.consumeOptionalCharacter($LPAREN)) {\n this.rparensExpected++;\n const result = this.parsePipe();\n if (!this.consumeOptionalCharacter($RPAREN)) {\n this.error('Missing closing parentheses');\n this.consumeOptionalCharacter($RPAREN);\n }\n this.rparensExpected--;\n return new ParenthesizedExpression(this.span(start), this.sourceSpan(start), result);\n } else if (this.next.isKeywordNull()) {\n this.advance();\n return new LiteralPrimitive(this.span(start), this.sourceSpan(start), null);\n } else if (this.next.isKeywordUndefined()) {\n this.advance();\n return new LiteralPrimitive(this.span(start), this.sourceSpan(start), undefined);\n } else if (this.next.isKeywordTrue()) {\n this.advance();\n return new LiteralPrimitive(this.span(start), this.sourceSpan(start), true);\n } else if (this.next.isKeywordFalse()) {\n this.advance();\n return new LiteralPrimitive(this.span(start), this.sourceSpan(start), false);\n } else if (this.next.isKeywordIn()) {\n this.advance();\n return new LiteralPrimitive(this.span(start), this.sourceSpan(start), 'in');\n } else if (this.next.isKeywordThis()) {\n this.advance();\n return new ThisReceiver(this.span(start), this.sourceSpan(start));\n } else if (this.consumeOptionalCharacter($LBRACKET)) {\n return this.parseLiteralArray(start);\n } else if (this.next.isCharacter($LBRACE)) {\n return this.parseLiteralMap();\n } else if (this.next.isIdentifier()) {\n return this.parseAccessMember(new ImplicitReceiver(this.span(start), this.sourceSpan(start)), start, false);\n } else if (this.next.isNumber()) {\n const value = this.next.toNumber();\n this.advance();\n return new LiteralPrimitive(this.span(start), this.sourceSpan(start), value);\n } else if (this.next.isTemplateLiteralEnd()) {\n return this.parseNoInterpolationTemplateLiteral();\n } else if (this.next.isTemplateLiteralPart()) {\n return this.parseTemplateLiteral();\n } else if (this.next.isString() && this.next.kind === StringTokenKind.Plain) {\n const literalValue = this.next.toString();\n this.advance();\n return new LiteralPrimitive(this.span(start), this.sourceSpan(start), literalValue);\n } else if (this.next.isPrivateIdentifier()) {\n this._reportErrorForPrivateIdentifier(this.next, null);\n return new EmptyExpr$1(this.span(start), this.sourceSpan(start));\n } else if (this.next.isRegExpBody()) {\n return this.parseRegularExpressionLiteral();\n } else if (this.index >= this.tokens.length) {\n this.error(`Unexpected end of expression: ${this.input}`);\n return new EmptyExpr$1(this.span(start), this.sourceSpan(start));\n } else {\n this.error(`Unexpected token ${this.next}`);\n return new EmptyExpr$1(this.span(start), this.sourceSpan(start));\n }\n }\n parseLiteralArray(arrayStart) {\n this.rbracketsExpected++;\n const elements = [];\n do {\n if (this.next.isOperator('...')) {\n elements.push(this.parseSpreadElement());\n } else if (!this.next.isCharacter($RBRACKET)) {\n elements.push(this.parsePipe());\n } else {\n break;\n }\n } while (this.consumeOptionalCharacter($COMMA));\n this.rbracketsExpected--;\n this.expectCharacter($RBRACKET);\n return new LiteralArray(this.span(arrayStart), this.sourceSpan(arrayStart), elements);\n }\n parseLiteralMap() {\n const keys = [];\n const values = [];\n const start = this.inputIndex;\n this.expectCharacter($LBRACE);\n if (!this.consumeOptionalCharacter($RBRACE)) {\n this.rbracesExpected++;\n do {\n const keyStart = this.inputIndex;\n if (this.next.isOperator('...')) {\n this.advance();\n keys.push({\n kind: 'spread',\n span: this.span(keyStart),\n sourceSpan: this.sourceSpan(keyStart)\n });\n values.push(this.parsePipe());\n continue;\n }\n const quoted = this.next.isString();\n const key = this.expectIdentifierOrKeywordOrString();\n const keySpan = this.span(keyStart);\n const keySourceSpan = this.sourceSpan(keyStart);\n const literalMapKey = {\n kind: 'property',\n key,\n quoted,\n span: keySpan,\n sourceSpan: keySourceSpan\n };\n keys.push(literalMapKey);\n if (quoted) {\n this.expectCharacter($COLON);\n values.push(this.parsePipe());\n } else if (this.consumeOptionalCharacter($COLON)) {\n values.push(this.parsePipe());\n } else {\n literalMapKey.isShorthandInitialized = true;\n values.push(new PropertyRead(keySpan, keySourceSpan, keySourceSpan, new ImplicitReceiver(keySpan, keySourceSpan), key));\n }\n } while (this.consumeOptionalCharacter($COMMA) && !this.next.isCharacter($RBRACE));\n this.rbracesExpected--;\n this.expectCharacter($RBRACE);\n }\n return new LiteralMap(this.span(start), this.sourceSpan(start), keys, values);\n }\n parseAccessMember(readReceiver, start, isSafe) {\n const nameStart = this.inputIndex;\n const id = this.withContext(ParseContextFlags.Writable, () => {\n const id = this.expectIdentifierOrKeyword() ?? '';\n if (id.length === 0) {\n this.error(`Expected identifier for property access`, readReceiver.span.end);\n }\n return id;\n });\n const nameSpan = this.sourceSpan(nameStart);\n if (isSafe) {\n if (this.isAssignmentOperator(this.next)) {\n this.advance();\n this.error(\"The '?.' operator cannot be used in the assignment\");\n return new EmptyExpr$1(this.span(start), this.sourceSpan(start));\n } else {\n return new SafePropertyRead(this.span(start), this.sourceSpan(start), nameSpan, readReceiver, id);\n }\n } else {\n if (this.isAssignmentOperator(this.next)) {\n const operation = this.next.strValue;\n if (!(this.parseFlags & 1)) {\n this.advance();\n this.error('Bindings cannot contain assignments');\n return new EmptyExpr$1(this.span(start), this.sourceSpan(start));\n }\n const receiver = new PropertyRead(this.span(start), this.sourceSpan(start), nameSpan, readReceiver, id);\n this.advance();\n const value = this.parseConditional();\n return new Binary(this.span(start), this.sourceSpan(start), operation, receiver, value);\n } else {\n return new PropertyRead(this.span(start), this.sourceSpan(start), nameSpan, readReceiver, id);\n }\n }\n }\n parseCall(receiver, start, isSafe) {\n const argumentStart = this.inputIndex;\n this.rparensExpected++;\n const args = this.parseCallArguments();\n const argumentSpan = this.span(argumentStart, this.inputIndex).toAbsolute(this.absoluteOffset);\n this.expectCharacter($RPAREN);\n this.rparensExpected--;\n const span = this.span(start);\n const sourceSpan = this.sourceSpan(start);\n return isSafe ? new SafeCall(span, sourceSpan, receiver, args, argumentSpan) : new Call(span, sourceSpan, receiver, args, argumentSpan);\n }\n parseCallArguments() {\n if (this.next.isCharacter($RPAREN)) {\n return [];\n }\n const positionals = [];\n do {\n positionals.push(this.next.isOperator('...') ? this.parseSpreadElement() : this.parsePipe());\n } while (this.consumeOptionalCharacter($COMMA));\n return positionals;\n }\n parseSpreadElement() {\n if (!this.next.isOperator('...')) {\n this.error(\"Spread element must start with '...' operator\");\n }\n const spreadStart = this.inputIndex;\n this.advance();\n const expression = this.parsePipe();\n const span = this.span(spreadStart);\n const sourceSpan = this.sourceSpan(spreadStart);\n return new SpreadElement(span, sourceSpan, expression);\n }\n expectTemplateBindingKey() {\n let result = '';\n let operatorFound = false;\n const start = this.currentAbsoluteOffset;\n do {\n result += this.expectIdentifierOrKeywordOrString();\n operatorFound = this.consumeOptionalOperator('-');\n if (operatorFound) {\n result += '-';\n }\n } while (operatorFound);\n return {\n source: result,\n span: new AbsoluteSourceSpan(start, start + result.length)\n };\n }\n parseTemplateBindings(templateKey) {\n const bindings = [];\n bindings.push(...this.parseDirectiveKeywordBindings(templateKey));\n while (this.index < this.tokens.length) {\n const letBinding = this.parseLetBinding();\n if (letBinding) {\n bindings.push(letBinding);\n } else {\n const key = this.expectTemplateBindingKey();\n const binding = this.parseAsBinding(key);\n if (binding) {\n bindings.push(binding);\n } else {\n key.source = templateKey.source + key.source.charAt(0).toUpperCase() + key.source.substring(1);\n bindings.push(...this.parseDirectiveKeywordBindings(key));\n }\n }\n this.consumeStatementTerminator();\n }\n return new TemplateBindingParseResult(bindings, [], this.errors);\n }\n parseKeyedReadOrWrite(receiver, start, isSafe) {\n return this.withContext(ParseContextFlags.Writable, () => {\n this.rbracketsExpected++;\n const key = this.parsePipe();\n if (key instanceof EmptyExpr$1) {\n this.error(`Key access cannot be empty`);\n }\n this.rbracketsExpected--;\n this.expectCharacter($RBRACKET);\n if (this.isAssignmentOperator(this.next)) {\n const operation = this.next.strValue;\n if (isSafe) {\n this.advance();\n this.error(\"The '?.' operator cannot be used in the assignment\");\n } else {\n const binaryReceiver = new KeyedRead(this.span(start), this.sourceSpan(start), receiver, key);\n this.advance();\n const value = this.parseConditional();\n return new Binary(this.span(start), this.sourceSpan(start), operation, binaryReceiver, value);\n }\n } else {\n return isSafe ? new SafeKeyedRead(this.span(start), this.sourceSpan(start), receiver, key) : new KeyedRead(this.span(start), this.sourceSpan(start), receiver, key);\n }\n return new EmptyExpr$1(this.span(start), this.sourceSpan(start));\n });\n }\n parseDirectiveKeywordBindings(key) {\n const bindings = [];\n this.consumeOptionalCharacter($COLON);\n const value = this.getDirectiveBoundTarget();\n let spanEnd = this.currentAbsoluteOffset;\n const asBinding = this.parseAsBinding(key);\n if (!asBinding) {\n this.consumeStatementTerminator();\n spanEnd = this.currentAbsoluteOffset;\n }\n const sourceSpan = new AbsoluteSourceSpan(key.span.start, spanEnd);\n bindings.push(new ExpressionBinding(sourceSpan, key, value));\n if (asBinding) {\n bindings.push(asBinding);\n }\n return bindings;\n }\n getDirectiveBoundTarget() {\n if (this.next === EOF || this.peekKeywordAs() || this.peekKeywordLet()) {\n return null;\n }\n const ast = this.parsePipe();\n const {\n start,\n end\n } = ast.span;\n const value = this.input.substring(start, end);\n return new ASTWithSource(ast, value, getLocation(this.parseSourceSpan), this.absoluteOffset + start, this.errors);\n }\n parseAsBinding(value) {\n if (!this.peekKeywordAs()) {\n return null;\n }\n this.advance();\n const key = this.expectTemplateBindingKey();\n this.consumeStatementTerminator();\n const sourceSpan = new AbsoluteSourceSpan(value.span.start, this.currentAbsoluteOffset);\n return new VariableBinding(sourceSpan, key, value);\n }\n parseLetBinding() {\n if (!this.peekKeywordLet()) {\n return null;\n }\n const spanStart = this.currentAbsoluteOffset;\n this.advance();\n const key = this.expectTemplateBindingKey();\n let value = null;\n if (this.consumeOptionalOperator('=')) {\n value = this.expectTemplateBindingKey();\n }\n this.consumeStatementTerminator();\n const sourceSpan = new AbsoluteSourceSpan(spanStart, this.currentAbsoluteOffset);\n return new VariableBinding(sourceSpan, key, value);\n }\n parseNoInterpolationTaggedTemplateLiteral(tag, start) {\n const template = this.parseNoInterpolationTemplateLiteral();\n return new TaggedTemplateLiteral(this.span(start), this.sourceSpan(start), tag, template);\n }\n parseNoInterpolationTemplateLiteral() {\n const text = this.next.strValue;\n const start = this.inputIndex;\n this.advance();\n const span = this.span(start);\n const sourceSpan = this.sourceSpan(start);\n return new TemplateLiteral(span, sourceSpan, [new TemplateLiteralElement(span, sourceSpan, text)], []);\n }\n parseTaggedTemplateLiteral(tag, start) {\n const template = this.parseTemplateLiteral();\n return new TaggedTemplateLiteral(this.span(start), this.sourceSpan(start), tag, template);\n }\n parseTemplateLiteral() {\n const elements = [];\n const expressions = [];\n const start = this.inputIndex;\n while (this.next !== EOF) {\n const token = this.next;\n if (token.isTemplateLiteralPart() || token.isTemplateLiteralEnd()) {\n const partStart = this.inputIndex;\n this.advance();\n elements.push(new TemplateLiteralElement(this.span(partStart), this.sourceSpan(partStart), token.strValue));\n if (token.isTemplateLiteralEnd()) {\n break;\n }\n } else if (token.isTemplateLiteralInterpolationStart()) {\n this.advance();\n this.rbracesExpected++;\n const expression = this.parsePipe();\n if (expression instanceof EmptyExpr$1) {\n this.error('Template literal interpolation cannot be empty');\n } else {\n expressions.push(expression);\n }\n this.rbracesExpected--;\n } else {\n this.advance();\n }\n }\n return new TemplateLiteral(this.span(start), this.sourceSpan(start), elements, expressions);\n }\n parseRegularExpressionLiteral() {\n const bodyToken = this.next;\n this.advance();\n if (!bodyToken.isRegExpBody()) {\n return new EmptyExpr$1(this.span(this.inputIndex), this.sourceSpan(this.inputIndex));\n }\n let flagsToken = null;\n if (this.next.isRegExpFlags()) {\n flagsToken = this.next;\n this.advance();\n const seenFlags = new Set();\n for (let i = 0; i < flagsToken.strValue.length; i++) {\n const char = flagsToken.strValue[i];\n if (!SUPPORTED_REGEX_FLAGS.has(char)) {\n this.error(`Unsupported regular expression flag \"${char}\". The supported flags are: ` + Array.from(SUPPORTED_REGEX_FLAGS, f => `\"${f}\"`).join(', '), flagsToken.index + i);\n } else if (seenFlags.has(char)) {\n this.error(`Duplicate regular expression flag \"${char}\"`, flagsToken.index + i);\n } else {\n seenFlags.add(char);\n }\n }\n }\n const start = bodyToken.index;\n const end = flagsToken ? flagsToken.end : bodyToken.end;\n return new RegularExpressionLiteral(this.span(start, end), this.sourceSpan(start, end), bodyToken.strValue, flagsToken ? flagsToken.strValue : null);\n }\n parseArrowFunction(start) {\n let params;\n if (this.next.isIdentifier()) {\n const token = this.next;\n this.advance();\n params = [this.getArrowFunctionIdentifierArg(token)];\n } else if (this.next.isCharacter($LPAREN)) {\n this.rparensExpected++;\n this.advance();\n params = this.parseArrowFunctionParameters();\n this.rparensExpected--;\n } else {\n params = [];\n this.error(`Unexpected token ${this.next}`);\n }\n this.expectOperator('=>');\n let body;\n if (this.next.isCharacter($LBRACE)) {\n this.error('Multi-line arrow functions are not supported. If you meant to return an object literal, wrap it with parentheses.');\n body = new EmptyExpr$1(this.span(start), this.sourceSpan(start));\n } else {\n const prevFlags = this.parseFlags;\n this.parseFlags = 1;\n body = this.parseExpression();\n this.parseFlags = prevFlags;\n }\n return new ArrowFunction(this.span(start), this.sourceSpan(start), params, body);\n }\n parseArrowFunctionParameters() {\n const params = [];\n if (!this.consumeOptionalCharacter($RPAREN)) {\n while (this.next !== EOF) {\n if (this.next.isIdentifier()) {\n const token = this.next;\n this.advance();\n params.push(this.getArrowFunctionIdentifierArg(token));\n if (this.consumeOptionalCharacter($RPAREN)) {\n break;\n } else {\n this.expectCharacter($COMMA);\n }\n } else {\n this.error(`Unexpected token ${this.next}`);\n break;\n }\n }\n }\n return params;\n }\n getArrowFunctionIdentifierArg(token) {\n return new ArrowFunctionIdentifierParameter(token.strValue, this.span(token.index), this.sourceSpan(token.index));\n }\n isArrowFunction() {\n const start = this.index;\n const tokens = this.tokens;\n if (start > tokens.length - 2) {\n return false;\n }\n if (tokens[start].isIdentifier() && tokens[start + 1].isOperator('=>')) {\n return true;\n }\n if (tokens[start].isCharacter($LPAREN)) {\n let i = start + 1;\n for (i; i < tokens.length; i++) {\n if (!tokens[i].isIdentifier() && !tokens[i].isCharacter($COMMA)) {\n break;\n }\n }\n return i < tokens.length - 1 && tokens[i].isCharacter($RPAREN) && tokens[i + 1].isOperator('=>');\n }\n return false;\n }\n consumeStatementTerminator() {\n this.consumeOptionalCharacter($SEMICOLON) || this.consumeOptionalCharacter($COMMA);\n }\n error(message, index = this.index) {\n this.errors.push(getParseError(message, this.input, this.getErrorLocationText(index), this.parseSourceSpan));\n this.skip();\n }\n getErrorLocationText(index) {\n return index < this.tokens.length ? `at column ${this.tokens[index].index + 1} in` : `at the end of the expression`;\n }\n _reportErrorForPrivateIdentifier(token, extraMessage) {\n let errorMessage = `Private identifiers are not supported. Unexpected private identifier: ${token}`;\n if (extraMessage !== null) {\n errorMessage += `, ${extraMessage}`;\n }\n this.error(errorMessage);\n }\n skip() {\n let n = this.next;\n while (this.index < this.tokens.length && !n.isCharacter($SEMICOLON) && !n.isOperator('|') && (this.rparensExpected <= 0 || !n.isCharacter($RPAREN)) && (this.rbracesExpected <= 0 || !n.isCharacter($RBRACE)) && (this.rbracketsExpected <= 0 || !n.isCharacter($RBRACKET)) && (!(this.context & ParseContextFlags.Writable) || !this.isAssignmentOperator(n))) {\n if (this.next.isError()) {\n this.errors.push(getParseError(this.next.toString(), this.input, this.getErrorLocationText(this.next.index), this.parseSourceSpan));\n }\n this.advance();\n n = this.next;\n }\n }\n}\nfunction getParseError(message, input, locationText, parseSourceSpan) {\n if (locationText.length > 0) {\n locationText = ` ${locationText} `;\n }\n const location = getLocation(parseSourceSpan);\n const error = `Parser Error: ${message}${locationText}[${input}] in ${location}`;\n return new ParseError(parseSourceSpan, error);\n}\nclass SimpleExpressionChecker extends RecursiveAstVisitor {\n errors = [];\n visitPipe() {\n this.errors.push('pipes');\n }\n}\nfunction getIndexMapForOriginalTemplate(interpolatedTokens) {\n let offsetMap = new Map();\n let consumedInOriginalTemplate = 0;\n let consumedInInput = 0;\n let tokenIndex = 0;\n while (tokenIndex < interpolatedTokens.length) {\n const currentToken = interpolatedTokens[tokenIndex];\n if (currentToken.type === 9) {\n const [decoded, encoded] = currentToken.parts;\n consumedInOriginalTemplate += encoded.length;\n consumedInInput += decoded.length;\n } else {\n const lengthOfParts = currentToken.parts.reduce((sum, current) => sum + current.length, 0);\n consumedInInput += lengthOfParts;\n consumedInOriginalTemplate += lengthOfParts;\n }\n offsetMap.set(consumedInInput, consumedInOriginalTemplate);\n tokenIndex++;\n }\n return offsetMap;\n}\n\nfunction serialize(expression) {\n return expression.visit(new SerializeExpressionVisitor());\n}\nclass SerializeExpressionVisitor {\n visitUnary(ast, context) {\n return `${ast.operator}${ast.expr.visit(this, context)}`;\n }\n visitBinary(ast, context) {\n return `${ast.left.visit(this, context)} ${ast.operation} ${ast.right.visit(this, context)}`;\n }\n visitChain(ast, context) {\n return ast.expressions.map(e => e.visit(this, context)).join('; ');\n }\n visitConditional(ast, context) {\n return `${ast.condition.visit(this, context)} ? ${ast.trueExp.visit(this, context)} : ${ast.falseExp.visit(this, context)}`;\n }\n visitThisReceiver() {\n return 'this';\n }\n visitImplicitReceiver() {\n return '';\n }\n visitInterpolation(ast, context) {\n return interleave(ast.strings, ast.expressions.map(e => e.visit(this, context))).join('');\n }\n visitKeyedRead(ast, context) {\n return `${ast.receiver.visit(this, context)}[${ast.key.visit(this, context)}]`;\n }\n visitLiteralArray(ast, context) {\n return `[${ast.expressions.map(e => e.visit(this, context)).join(', ')}]`;\n }\n visitLiteralMap(ast, context) {\n return `{${zip(ast.keys.map(literal => {\n if (literal.kind === 'spread') {\n return '...';\n }\n return literal.quoted ? `'${literal.key}'` : literal.key;\n }), ast.values.map(value => value.visit(this, context))).map(([key, value]) => `${key}: ${value}`).join(', ')}}`;\n }\n visitLiteralPrimitive(ast) {\n if (ast.value === null) return 'null';\n switch (typeof ast.value) {\n case 'number':\n case 'boolean':\n return ast.value.toString();\n case 'undefined':\n return 'undefined';\n case 'string':\n return `'${ast.value.replace(/'/g, `\\\\'`)}'`;\n default:\n throw new Error(`Unsupported primitive type: ${ast.value}`);\n }\n }\n visitPipe(ast, context) {\n return `${ast.exp.visit(this, context)} | ${ast.name}`;\n }\n visitPrefixNot(ast, context) {\n return `!${ast.expression.visit(this, context)}`;\n }\n visitNonNullAssert(ast, context) {\n return `${ast.expression.visit(this, context)}!`;\n }\n visitPropertyRead(ast, context) {\n if (ast.receiver instanceof ImplicitReceiver || ast.receiver instanceof ThisReceiver) {\n return ast.name;\n } else {\n return `${ast.receiver.visit(this, context)}.${ast.name}`;\n }\n }\n visitSafePropertyRead(ast, context) {\n return `${ast.receiver.visit(this, context)}?.${ast.name}`;\n }\n visitSafeKeyedRead(ast, context) {\n return `${ast.receiver.visit(this, context)}?.[${ast.key.visit(this, context)}]`;\n }\n visitCall(ast, context) {\n return `${ast.receiver.visit(this, context)}(${ast.args.map(e => e.visit(this, context)).join(', ')})`;\n }\n visitSafeCall(ast, context) {\n return `${ast.receiver.visit(this, context)}?.(${ast.args.map(e => e.visit(this, context)).join(', ')})`;\n }\n visitTypeofExpression(ast, context) {\n return `typeof ${ast.expression.visit(this, context)}`;\n }\n visitVoidExpression(ast, context) {\n return `void ${ast.expression.visit(this, context)}`;\n }\n visitRegularExpressionLiteral(ast, context) {\n return `/${ast.body}/${ast.flags || ''}`;\n }\n visitArrowFunction(ast, context) {\n let params;\n if (ast.parameters.length === 1) {\n params = ast.parameters[0].name;\n } else {\n params = `(${ast.parameters.map(e => e.name).join(', ')})`;\n }\n return `${params} => ${ast.body.visit(this, context)}`;\n }\n visitASTWithSource(ast, context) {\n return ast.ast.visit(this, context);\n }\n visitTemplateLiteral(ast, context) {\n let result = '';\n for (let i = 0; i < ast.elements.length; i++) {\n result += ast.elements[i].visit(this, context);\n const expression = i < ast.expressions.length ? ast.expressions[i] : null;\n if (expression !== null) {\n result += '${' + expression.visit(this, context) + '}';\n }\n }\n return '`' + result + '`';\n }\n visitTemplateLiteralElement(ast, context) {\n return ast.text;\n }\n visitTaggedTemplateLiteral(ast, context) {\n return ast.tag.visit(this, context) + ast.template.visit(this, context);\n }\n visitSpreadElement(ast, context) {\n return `...${ast.expression.visit(this, context)}`;\n }\n visitParenthesizedExpression(ast, context) {\n return '(' + ast.expression.visit(this, context) + ')';\n }\n}\nfunction zip(left, right) {\n if (left.length !== right.length) throw new Error('Array lengths must match');\n return left.map((l, i) => [l, right[i]]);\n}\nfunction interleave(left, right) {\n const result = [];\n for (let index = 0; index < Math.max(left.length, right.length); index++) {\n if (index < left.length) result.push(left[index]);\n if (index < right.length) result.push(right[index]);\n }\n return result;\n}\n\nlet _SECURITY_SCHEMA;\nfunction SECURITY_SCHEMA() {\n if (!_SECURITY_SCHEMA) {\n _SECURITY_SCHEMA = {};\n registerContext(SecurityContext.HTML, ['iframe|srcdoc', '*|innerHTML', '*|outerHTML']);\n registerContext(SecurityContext.STYLE, ['*|style']);\n registerContext(SecurityContext.URL, ['*|formAction', 'area|href', 'a|href', 'a|xlink:href', 'form|action', 'annotation|href', 'annotation|xlink:href', 'annotation-xml|href', 'annotation-xml|xlink:href', 'maction|href', 'maction|xlink:href', 'malignmark|href', 'malignmark|xlink:href', 'math|href', 'math|xlink:href', 'mroot|href', 'mroot|xlink:href', 'msqrt|href', 'msqrt|xlink:href', 'merror|href', 'merror|xlink:href', 'mfrac|href', 'mfrac|xlink:href', 'mglyph|href', 'mglyph|xlink:href', 'msub|href', 'msub|xlink:href', 'msup|href', 'msup|xlink:href', 'msubsup|href', 'msubsup|xlink:href', 'mmultiscripts|href', 'mmultiscripts|xlink:href', 'mprescripts|href', 'mprescripts|xlink:href', 'mi|href', 'mi|xlink:href', 'mn|href', 'mn|xlink:href', 'mo|href', 'mo|xlink:href', 'mpadded|href', 'mpadded|xlink:href', 'mphantom|href', 'mphantom|xlink:href', 'mrow|href', 'mrow|xlink:href', 'ms|href', 'ms|xlink:href', 'mspace|href', 'mspace|xlink:href', 'mstyle|href', 'mstyle|xlink:href', 'mtable|href', 'mtable|xlink:href', 'mtd|href', 'mtd|xlink:href', 'mtr|href', 'mtr|xlink:href', 'mtext|href', 'mtext|xlink:href', 'mover|href', 'mover|xlink:href', 'munder|href', 'munder|xlink:href', 'munderover|href', 'munderover|xlink:href', 'semantics|href', 'semantics|xlink:href', 'none|href', 'none|xlink:href', 'img|src', 'video|src']);\n registerContext(SecurityContext.RESOURCE_URL, ['base|href', 'embed|src', 'frame|src', 'iframe|src', 'link|href', 'object|codebase', 'object|data', 'script|src', 'script|href', 'script|xlink:href']);\n registerContext(SecurityContext.ATTRIBUTE_NO_BINDING, ['animate|attributeName', 'set|attributeName', 'animateMotion|attributeName', 'animateTransform|attributeName', 'unknown|attributeName', 'iframe|sandbox', 'iframe|allow', 'iframe|allowFullscreen', 'iframe|referrerPolicy', 'iframe|csp', 'iframe|fetchPriority', 'unknown|sandbox', 'unknown|allow', 'unknown|allowFullscreen', 'unknown|referrerPolicy', 'unknown|csp', 'unknown|fetchPriority']);\n }\n return _SECURITY_SCHEMA;\n}\nfunction registerContext(ctx, specs) {\n for (const spec of specs) _SECURITY_SCHEMA[spec.toLowerCase()] = ctx;\n}\n\nclass ElementSchemaRegistry {}\n\nconst BOOLEAN = 'boolean';\nconst NUMBER = 'number';\nconst STRING = 'string';\nconst OBJECT = 'object';\nconst SCHEMA = ['[Element]|textContent,%ariaActiveDescendantElement,%ariaAtomic,%ariaAutoComplete,%ariaBusy,%ariaChecked,%ariaColCount,%ariaColIndex,%ariaColIndexText,%ariaColSpan,%ariaControlsElements,%ariaCurrent,%ariaDescribedByElements,%ariaDescription,%ariaDetailsElements,%ariaDisabled,%ariaErrorMessageElements,%ariaExpanded,%ariaFlowToElements,%ariaHasPopup,%ariaHidden,%ariaInvalid,%ariaKeyShortcuts,%ariaLabel,%ariaLabelledByElements,%ariaLevel,%ariaLive,%ariaModal,%ariaMultiLine,%ariaMultiSelectable,%ariaOrientation,%ariaOwnsElements,%ariaPlaceholder,%ariaPosInSet,%ariaPressed,%ariaReadOnly,%ariaRelevant,%ariaRequired,%ariaRoleDescription,%ariaRowCount,%ariaRowIndex,%ariaRowIndexText,%ariaRowSpan,%ariaSelected,%ariaSetSize,%ariaSort,%ariaValueMax,%ariaValueMin,%ariaValueNow,%ariaValueText,%classList,className,elementTiming,id,innerHTML,*beforecopy,*beforecut,*beforepaste,*fullscreenchange,*fullscreenerror,*search,*webkitfullscreenchange,*webkitfullscreenerror,outerHTML,%part,#scrollLeft,#scrollTop,slot' + ',*message,*mozfullscreenchange,*mozfullscreenerror,*mozpointerlockchange,*mozpointerlockerror,*webglcontextcreationerror,*webglcontextlost,*webglcontextrestored', '[HTMLElement]^[Element]|accessKey,autocapitalize,!autofocus,contentEditable,dir,!draggable,enterKeyHint,!hidden,!inert,innerText,inputMode,lang,nonce,*abort,*animationend,*animationiteration,*animationstart,*auxclick,*beforexrselect,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*copy,*cuechange,*cut,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*formdata,*gotpointercapture,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*lostpointercapture,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*paste,*pause,*play,*playing,*pointercancel,*pointerdown,*pointerenter,*pointerleave,*pointermove,*pointerout,*pointerover,*pointerrawupdate,*pointerup,*progress,*ratechange,*reset,*resize,*scroll,*securitypolicyviolation,*seeked,*seeking,*select,*selectionchange,*selectstart,*slotchange,*stalled,*submit,*suspend,*timeupdate,*toggle,*transitioncancel,*transitionend,*transitionrun,*transitionstart,*volumechange,*waiting,*webkitanimationend,*webkitanimationiteration,*webkitanimationstart,*webkittransitionend,*wheel,outerText,!spellcheck,%style,#tabIndex,title,!translate,virtualKeyboardPolicy', 'abbr,address,article,aside,b,bdi,bdo,cite,content,code,dd,dfn,dt,em,figcaption,figure,footer,header,hgroup,i,kbd,main,mark,nav,noscript,rb,rp,rt,rtc,ruby,s,samp,search,section,small,strong,sub,sup,u,var,wbr^[HTMLElement]|accessKey,autocapitalize,!autofocus,contentEditable,dir,!draggable,enterKeyHint,!hidden,innerText,inputMode,lang,nonce,*abort,*animationend,*animationiteration,*animationstart,*auxclick,*beforexrselect,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*copy,*cuechange,*cut,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*formdata,*gotpointercapture,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*lostpointercapture,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*paste,*pause,*play,*playing,*pointercancel,*pointerdown,*pointerenter,*pointerleave,*pointermove,*pointerout,*pointerover,*pointerrawupdate,*pointerup,*progress,*ratechange,*reset,*resize,*scroll,*securitypolicyviolation,*seeked,*seeking,*select,*selectionchange,*selectstart,*slotchange,*stalled,*submit,*suspend,*timeupdate,*toggle,*transitioncancel,*transitionend,*transitionrun,*transitionstart,*volumechange,*waiting,*webkitanimationend,*webkitanimationiteration,*webkitanimationstart,*webkittransitionend,*wheel,outerText,!spellcheck,%style,#tabIndex,title,!translate,virtualKeyboardPolicy', 'media^[HTMLElement]|!autoplay,!controls,%controlsList,%crossOrigin,#currentTime,!defaultMuted,#defaultPlaybackRate,!disableRemotePlayback,!loop,!muted,*encrypted,*waitingforkey,#playbackRate,preload,!preservesPitch,src,%srcObject,#volume', ':svg:^[HTMLElement]|!autofocus,nonce,*abort,*animationend,*animationiteration,*animationstart,*auxclick,*beforexrselect,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*copy,*cuechange,*cut,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*formdata,*gotpointercapture,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*lostpointercapture,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*paste,*pause,*play,*playing,*pointercancel,*pointerdown,*pointerenter,*pointerleave,*pointermove,*pointerout,*pointerover,*pointerrawupdate,*pointerup,*progress,*ratechange,*reset,*resize,*scroll,*securitypolicyviolation,*seeked,*seeking,*select,*selectionchange,*selectstart,*slotchange,*stalled,*submit,*suspend,*timeupdate,*toggle,*transitioncancel,*transitionend,*transitionrun,*transitionstart,*volumechange,*waiting,*webkitanimationend,*webkitanimationiteration,*webkitanimationstart,*webkittransitionend,*wheel,%style,#tabIndex', ':svg:graphics^:svg:|', ':svg:animation^:svg:|*begin,*end,*repeat', ':svg:geometry^:svg:|', ':svg:componentTransferFunction^:svg:|', ':svg:gradient^:svg:|', ':svg:textContent^:svg:graphics|', ':svg:textPositioning^:svg:textContent|', 'a^[HTMLElement]|charset,coords,download,hash,host,hostname,href,hreflang,name,password,pathname,ping,port,protocol,referrerPolicy,rel,%relList,rev,search,shape,target,text,type,username', 'area^[HTMLElement]|alt,coords,download,hash,host,hostname,href,!noHref,password,pathname,ping,port,protocol,referrerPolicy,rel,%relList,search,shape,target,username', 'audio^media|', 'br^[HTMLElement]|clear', 'base^[HTMLElement]|href,target', 'body^[HTMLElement]|aLink,background,bgColor,link,*afterprint,*beforeprint,*beforeunload,*blur,*error,*focus,*hashchange,*languagechange,*load,*message,*messageerror,*offline,*online,*pagehide,*pageshow,*popstate,*rejectionhandled,*resize,*scroll,*storage,*unhandledrejection,*unload,text,vLink', 'button^[HTMLElement]|!disabled,formAction,formEnctype,formMethod,!formNoValidate,formTarget,name,type,value', 'canvas^[HTMLElement]|#height,#width', 'content^[HTMLElement]|select', 'dl^[HTMLElement]|!compact', 'data^[HTMLElement]|value', 'datalist^[HTMLElement]|', 'details^[HTMLElement]|!open', 'dialog^[HTMLElement]|!open,returnValue', 'dir^[HTMLElement]|!compact', 'div^[HTMLElement]|align', 'embed^[HTMLElement]|align,height,name,src,type,width', 'fieldset^[HTMLElement]|!disabled,name', 'font^[HTMLElement]|color,face,size', 'form^[HTMLElement]|acceptCharset,action,autocomplete,encoding,enctype,method,name,!noValidate,target', 'frame^[HTMLElement]|frameBorder,longDesc,marginHeight,marginWidth,name,!noResize,scrolling,src', 'frameset^[HTMLElement]|cols,*afterprint,*beforeprint,*beforeunload,*blur,*error,*focus,*hashchange,*languagechange,*load,*message,*messageerror,*offline,*online,*pagehide,*pageshow,*popstate,*rejectionhandled,*resize,*scroll,*storage,*unhandledrejection,*unload,rows', 'geolocation^[HTMLElement]|accuracymode,!autolocate,*location,*promptaction,*promptdismiss,*validationstatuschange,!watch', 'hr^[HTMLElement]|align,color,!noShade,size,width', 'head^[HTMLElement]|', 'h1,h2,h3,h4,h5,h6^[HTMLElement]|align', 'html^[HTMLElement]|version', 'iframe^[HTMLElement]|align,allow,!allowFullscreen,!allowPaymentRequest,csp,frameBorder,height,loading,longDesc,marginHeight,marginWidth,name,referrerPolicy,%sandbox,scrolling,src,srcdoc,width', 'img^[HTMLElement]|align,alt,border,%crossOrigin,decoding,#height,#hspace,!isMap,loading,longDesc,lowsrc,name,referrerPolicy,sizes,src,srcset,useMap,#vspace,#width', 'input^[HTMLElement]|accept,align,alt,autocomplete,!checked,!defaultChecked,defaultValue,dirName,!disabled,%files,formAction,formEnctype,formMethod,!formNoValidate,formTarget,#height,!incremental,!indeterminate,max,#maxLength,min,#minLength,!multiple,name,pattern,placeholder,!readOnly,!required,selectionDirection,#selectionEnd,#selectionStart,#size,src,step,type,useMap,value,%valueAsDate,#valueAsNumber,#width', 'li^[HTMLElement]|type,#value', 'label^[HTMLElement]|htmlFor', 'legend^[HTMLElement]|align', 'link^[HTMLElement]|as,charset,%crossOrigin,!disabled,href,hreflang,imageSizes,imageSrcset,integrity,media,referrerPolicy,rel,%relList,rev,%sizes,target,type', 'map^[HTMLElement]|name', 'marquee^[HTMLElement]|behavior,bgColor,direction,height,#hspace,#loop,#scrollAmount,#scrollDelay,!trueSpeed,#vspace,width', 'menu^[HTMLElement]|!compact', 'meta^[HTMLElement]|content,httpEquiv,media,name,scheme', 'meter^[HTMLElement]|#high,#low,#max,#min,#optimum,#value', 'ins,del^[HTMLElement]|cite,dateTime', 'ol^[HTMLElement]|!compact,!reversed,#start,type', 'object^[HTMLElement]|align,archive,border,code,codeBase,codeType,data,!declare,height,#hspace,name,standby,type,useMap,#vspace,width', 'optgroup^[HTMLElement]|!disabled,label', 'option^[HTMLElement]|!defaultSelected,!disabled,label,!selected,text,value', 'output^[HTMLElement]|defaultValue,%htmlFor,name,value', 'p^[HTMLElement]|align', 'param^[HTMLElement]|name,type,value,valueType', 'picture^[HTMLElement]|', 'pre^[HTMLElement]|#width', 'progress^[HTMLElement]|#max,#value', 'q,blockquote,cite^[HTMLElement]|', 'script^[HTMLElement]|!async,charset,%crossOrigin,!defer,event,htmlFor,integrity,!noModule,%referrerPolicy,src,text,type', 'select^[HTMLElement]|autocomplete,!disabled,#length,!multiple,name,!required,#selectedIndex,#size,value', 'selectedcontent^[HTMLElement]|', 'slot^[HTMLElement]|name', 'source^[HTMLElement]|#height,media,sizes,src,srcset,type,#width', 'span^[HTMLElement]|', 'style^[HTMLElement]|!disabled,media,type', 'search^[HTMLELement]|', 'caption^[HTMLElement]|align', 'th,td^[HTMLElement]|abbr,align,axis,bgColor,ch,chOff,#colSpan,headers,height,!noWrap,#rowSpan,scope,vAlign,width', 'col,colgroup^[HTMLElement]|align,ch,chOff,#span,vAlign,width', 'table^[HTMLElement]|align,bgColor,border,%caption,cellPadding,cellSpacing,frame,rules,summary,%tFoot,%tHead,width', 'tr^[HTMLElement]|align,bgColor,ch,chOff,vAlign', 'tfoot,thead,tbody^[HTMLElement]|align,ch,chOff,vAlign', 'template^[HTMLElement]|', 'textarea^[HTMLElement]|autocomplete,#cols,defaultValue,dirName,!disabled,#maxLength,#minLength,name,placeholder,!readOnly,!required,#rows,selectionDirection,#selectionEnd,#selectionStart,value,wrap', 'time^[HTMLElement]|dateTime', 'title^[HTMLElement]|text', 'track^[HTMLElement]|!default,kind,label,src,srclang', 'ul^[HTMLElement]|!compact,type', 'unknown^[HTMLElement]|', 'video^media|!disablePictureInPicture,#height,*enterpictureinpicture,*leavepictureinpicture,!playsInline,poster,#width', ':svg:a^:svg:graphics|', ':svg:animate^:svg:animation|', ':svg:animateMotion^:svg:animation|', ':svg:animateTransform^:svg:animation|', ':svg:circle^:svg:geometry|', ':svg:clipPath^:svg:graphics|', ':svg:defs^:svg:graphics|', ':svg:desc^:svg:|', ':svg:discard^:svg:|', ':svg:ellipse^:svg:geometry|', ':svg:feBlend^:svg:|', ':svg:feColorMatrix^:svg:|', ':svg:feComponentTransfer^:svg:|', ':svg:feComposite^:svg:|', ':svg:feConvolveMatrix^:svg:|', ':svg:feDiffuseLighting^:svg:|', ':svg:feDisplacementMap^:svg:|', ':svg:feDistantLight^:svg:|', ':svg:feDropShadow^:svg:|', ':svg:feFlood^:svg:|', ':svg:feFuncA^:svg:componentTransferFunction|', ':svg:feFuncB^:svg:componentTransferFunction|', ':svg:feFuncG^:svg:componentTransferFunction|', ':svg:feFuncR^:svg:componentTransferFunction|', ':svg:feGaussianBlur^:svg:|', ':svg:feImage^:svg:|', ':svg:feMerge^:svg:|', ':svg:feMergeNode^:svg:|', ':svg:feMorphology^:svg:|', ':svg:feOffset^:svg:|', ':svg:fePointLight^:svg:|', ':svg:feSpecularLighting^:svg:|', ':svg:feSpotLight^:svg:|', ':svg:feTile^:svg:|', ':svg:feTurbulence^:svg:|', ':svg:filter^:svg:|', ':svg:foreignObject^:svg:graphics|', ':svg:g^:svg:graphics|', ':svg:image^:svg:graphics|decoding', ':svg:line^:svg:geometry|', ':svg:linearGradient^:svg:gradient|', ':svg:mpath^:svg:|', ':svg:marker^:svg:|', ':svg:mask^:svg:|', ':svg:metadata^:svg:|', ':svg:path^:svg:geometry|', ':svg:pattern^:svg:|', ':svg:polygon^:svg:geometry|', ':svg:polyline^:svg:geometry|', ':svg:radialGradient^:svg:gradient|', ':svg:rect^:svg:geometry|', ':svg:svg^:svg:graphics|#currentScale,#zoomAndPan', ':svg:script^:svg:|type', ':svg:set^:svg:animation|', ':svg:stop^:svg:|', ':svg:style^:svg:|!disabled,media,title,type', ':svg:switch^:svg:graphics|', ':svg:symbol^:svg:|', ':svg:tspan^:svg:textPositioning|', ':svg:text^:svg:textPositioning|', ':svg:textPath^:svg:textContent|', ':svg:title^:svg:|', ':svg:use^:svg:graphics|', ':svg:view^:svg:|#zoomAndPan', 'data^[HTMLElement]|value', 'keygen^[HTMLElement]|!autofocus,challenge,!disabled,form,keytype,name', 'menuitem^[HTMLElement]|type,label,icon,!disabled,!checked,radiogroup,!default', 'summary^[HTMLElement]|', 'time^[HTMLElement]|dateTime', ':svg:cursor^:svg:|', ':math:^[HTMLElement]|!autofocus,nonce,*abort,*animationend,*animationiteration,*animationstart,*auxclick,*beforeinput,*beforematch,*beforetoggle,*beforexrselect,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contentvisibilityautostatechange,*contextlost,*contextmenu,*contextrestored,*copy,*cuechange,*cut,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*formdata,*gotpointercapture,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*lostpointercapture,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*paste,*pause,*play,*playing,*pointercancel,*pointerdown,*pointerenter,*pointerleave,*pointermove,*pointerout,*pointerover,*pointerrawupdate,*pointerup,*progress,*ratechange,*reset,*resize,*scroll,*scrollend,*securitypolicyviolation,*seeked,*seeking,*select,*selectionchange,*selectstart,*slotchange,*stalled,*submit,*suspend,*timeupdate,*toggle,*transitioncancel,*transitionend,*transitionrun,*transitionstart,*volumechange,*waiting,*webkitanimationend,*webkitanimationiteration,*webkitanimationstart,*webkittransitionend,*wheel,%style,#tabIndex', ':math:math^:math:|', ':math:maction^:math:|', ':math:menclose^:math:|', ':math:merror^:math:|', ':math:mfenced^:math:|', ':math:mfrac^:math:|', ':math:mi^:math:|', ':math:mmultiscripts^:math:|', ':math:mn^:math:|', ':math:mo^:math:|', ':math:mover^:math:|', ':math:mpadded^:math:|', ':math:mphantom^:math:|', ':math:mroot^:math:|', ':math:mrow^:math:|', ':math:ms^:math:|', ':math:mspace^:math:|', ':math:msqrt^:math:|', ':math:mstyle^:math:|', ':math:msub^:math:|', ':math:msubsup^:math:|', ':math:msup^:math:|', ':math:mtable^:math:|', ':math:mtd^:math:|', ':math:mtext^:math:|', ':math:mtr^:math:|', ':math:munder^:math:|', ':math:munderover^:math:|', ':math:semantics^:math:|'];\nconst _ATTR_TO_PROP = new Map(Object.entries({\n 'class': 'className',\n 'for': 'htmlFor',\n 'formaction': 'formAction',\n 'innerHtml': 'innerHTML',\n 'readonly': 'readOnly',\n 'tabindex': 'tabIndex',\n 'aria-activedescendant': 'ariaActiveDescendantElement',\n 'aria-atomic': 'ariaAtomic',\n 'aria-autocomplete': 'ariaAutoComplete',\n 'aria-busy': 'ariaBusy',\n 'aria-checked': 'ariaChecked',\n 'aria-colcount': 'ariaColCount',\n 'aria-colindex': 'ariaColIndex',\n 'aria-colindextext': 'ariaColIndexText',\n 'aria-colspan': 'ariaColSpan',\n 'aria-controls': 'ariaControlsElements',\n 'aria-current': 'ariaCurrent',\n 'aria-describedby': 'ariaDescribedByElements',\n 'aria-description': 'ariaDescription',\n 'aria-details': 'ariaDetailsElements',\n 'aria-disabled': 'ariaDisabled',\n 'aria-errormessage': 'ariaErrorMessageElements',\n 'aria-expanded': 'ariaExpanded',\n 'aria-flowto': 'ariaFlowToElements',\n 'aria-haspopup': 'ariaHasPopup',\n 'aria-hidden': 'ariaHidden',\n 'aria-invalid': 'ariaInvalid',\n 'aria-keyshortcuts': 'ariaKeyShortcuts',\n 'aria-label': 'ariaLabel',\n 'aria-labelledby': 'ariaLabelledByElements',\n 'aria-level': 'ariaLevel',\n 'aria-live': 'ariaLive',\n 'aria-modal': 'ariaModal',\n 'aria-multiline': 'ariaMultiLine',\n 'aria-multiselectable': 'ariaMultiSelectable',\n 'aria-orientation': 'ariaOrientation',\n 'aria-owns': 'ariaOwnsElements',\n 'aria-placeholder': 'ariaPlaceholder',\n 'aria-posinset': 'ariaPosInSet',\n 'aria-pressed': 'ariaPressed',\n 'aria-readonly': 'ariaReadOnly',\n 'aria-required': 'ariaRequired',\n 'aria-roledescription': 'ariaRoleDescription',\n 'aria-rowcount': 'ariaRowCount',\n 'aria-rowindex': 'ariaRowIndex',\n 'aria-rowindextext': 'ariaRowIndexText',\n 'aria-rowspan': 'ariaRowSpan',\n 'aria-selected': 'ariaSelected',\n 'aria-setsize': 'ariaSetSize',\n 'aria-sort': 'ariaSort',\n 'aria-valuemax': 'ariaValueMax',\n 'aria-valuemin': 'ariaValueMin',\n 'aria-valuenow': 'ariaValueNow',\n 'aria-valuetext': 'ariaValueText'\n}));\nconst _PROP_TO_ATTR = Array.from(_ATTR_TO_PROP).reduce((inverted, [propertyName, attributeName]) => {\n inverted.set(propertyName, attributeName);\n return inverted;\n}, new Map());\nclass DomElementSchemaRegistry extends ElementSchemaRegistry {\n _schema = new Map();\n _eventSchema = new Map();\n constructor() {\n super();\n SCHEMA.forEach(encodedType => {\n const type = new Map();\n const events = new Set();\n const [strType, strProperties] = encodedType.split('|');\n const properties = strProperties.split(',');\n const [typeNames, superName] = strType.split('^');\n typeNames.split(',').forEach(tag => {\n this._schema.set(tag.toLowerCase(), type);\n this._eventSchema.set(tag.toLowerCase(), events);\n });\n const superType = superName && this._schema.get(superName.toLowerCase());\n if (superType) {\n for (const [prop, value] of superType) {\n type.set(prop, value);\n }\n for (const superEvent of this._eventSchema.get(superName.toLowerCase())) {\n events.add(superEvent);\n }\n }\n properties.forEach(property => {\n if (property.length > 0) {\n switch (property[0]) {\n case '*':\n events.add(property.substring(1));\n break;\n case '!':\n type.set(property.substring(1), BOOLEAN);\n break;\n case '#':\n type.set(property.substring(1), NUMBER);\n break;\n case '%':\n type.set(property.substring(1), OBJECT);\n break;\n default:\n type.set(property, STRING);\n }\n }\n });\n });\n }\n hasProperty(tagName, propName, schemaMetas) {\n if (schemaMetas.some(schema => schema.name === NO_ERRORS_SCHEMA.name)) {\n return true;\n }\n if (tagName.indexOf('-') > -1) {\n if (isNgContainer(tagName) || isNgContent(tagName)) {\n return false;\n }\n if (schemaMetas.some(schema => schema.name === CUSTOM_ELEMENTS_SCHEMA.name)) {\n return true;\n }\n }\n const elementProperties = this._schema.get(tagName.toLowerCase()) || this._schema.get('unknown');\n return elementProperties.has(propName);\n }\n hasElement(tagName, schemaMetas) {\n if (schemaMetas.some(schema => schema.name === NO_ERRORS_SCHEMA.name)) {\n return true;\n }\n if (tagName.indexOf('-') > -1) {\n if (isNgContainer(tagName) || isNgContent(tagName)) {\n return true;\n }\n if (schemaMetas.some(schema => schema.name === CUSTOM_ELEMENTS_SCHEMA.name)) {\n return true;\n }\n }\n return this._schema.has(tagName.toLowerCase());\n }\n securityContext(tagName, propName, isAttribute) {\n if (isAttribute) {\n propName = this.getMappedPropName(propName);\n }\n tagName = tagName.toLowerCase();\n propName = propName.toLowerCase();\n let ctx = SECURITY_SCHEMA()[tagName + '|' + propName];\n if (ctx) {\n return ctx;\n }\n ctx = SECURITY_SCHEMA()['*|' + propName];\n return ctx ? ctx : SecurityContext.NONE;\n }\n getMappedPropName(propName) {\n return _ATTR_TO_PROP.get(propName) ?? propName;\n }\n getDefaultComponentElementName() {\n return 'ng-component';\n }\n validateProperty(name) {\n if (name.toLowerCase().startsWith('on')) {\n const msg = `Binding to event property '${name}' is disallowed for security reasons, ` + `please use (${name.slice(2)})=...` + `\\nIf '${name}' is a directive input, make sure the directive is imported by the` + ` current module.`;\n return {\n error: true,\n msg: msg\n };\n } else {\n return {\n error: false\n };\n }\n }\n validateAttribute(name) {\n if (name.toLowerCase().startsWith('on')) {\n const msg = `Binding to event attribute '${name}' is disallowed for security reasons, ` + `please use (${name.slice(2)})=...`;\n return {\n error: true,\n msg: msg\n };\n } else {\n return {\n error: false\n };\n }\n }\n allKnownElementNames() {\n return Array.from(this._schema.keys());\n }\n allKnownAttributesOfElement(tagName) {\n const elementProperties = this._schema.get(tagName.toLowerCase()) || this._schema.get('unknown');\n return Array.from(elementProperties.keys()).map(prop => _PROP_TO_ATTR.get(prop) ?? prop);\n }\n allKnownEventsOfElement(tagName) {\n return Array.from(this._eventSchema.get(tagName.toLowerCase()) ?? []);\n }\n normalizeAnimationStyleProperty(propName) {\n return dashCaseToCamelCase(propName);\n }\n normalizeAnimationStyleValue(camelCaseProp, userProvidedProp, val) {\n let unit = '';\n const strVal = val.toString().trim();\n let errorMsg = null;\n if (_isPixelDimensionStyle(camelCaseProp) && val !== 0 && val !== '0') {\n if (typeof val === 'number') {\n unit = 'px';\n } else {\n const valAndSuffixMatch = val.match(/^[+-]?[\\d\\.]+([a-z]*)$/);\n if (valAndSuffixMatch && valAndSuffixMatch[1].length == 0) {\n errorMsg = `Please provide a CSS unit value for ${userProvidedProp}:${val}`;\n }\n }\n }\n return {\n error: errorMsg,\n value: strVal + unit\n };\n }\n}\nfunction _isPixelDimensionStyle(prop) {\n switch (prop) {\n case 'width':\n case 'height':\n case 'minWidth':\n case 'minHeight':\n case 'maxWidth':\n case 'maxHeight':\n case 'left':\n case 'top':\n case 'bottom':\n case 'right':\n case 'fontSize':\n case 'outlineWidth':\n case 'outlineOffset':\n case 'paddingTop':\n case 'paddingLeft':\n case 'paddingBottom':\n case 'paddingRight':\n case 'marginTop':\n case 'marginLeft':\n case 'marginBottom':\n case 'marginRight':\n case 'borderRadius':\n case 'borderWidth':\n case 'borderTopWidth':\n case 'borderLeftWidth':\n case 'borderRightWidth':\n case 'borderBottomWidth':\n case 'textIndent':\n return true;\n default:\n return false;\n }\n}\n\nclass HtmlTagDefinition {\n closedByChildren = {};\n contentType;\n closedByParent = false;\n implicitNamespacePrefix;\n isVoid;\n ignoreFirstLf;\n canSelfClose;\n preventNamespaceInheritance;\n constructor({\n closedByChildren,\n implicitNamespacePrefix,\n contentType = TagContentType.PARSABLE_DATA,\n closedByParent = false,\n isVoid = false,\n ignoreFirstLf = false,\n preventNamespaceInheritance = false,\n canSelfClose = false\n } = {}) {\n if (closedByChildren && closedByChildren.length > 0) {\n closedByChildren.forEach(tagName => this.closedByChildren[tagName] = true);\n }\n this.isVoid = isVoid;\n this.closedByParent = closedByParent || isVoid;\n this.implicitNamespacePrefix = implicitNamespacePrefix || null;\n this.contentType = contentType;\n this.ignoreFirstLf = ignoreFirstLf;\n this.preventNamespaceInheritance = preventNamespaceInheritance;\n this.canSelfClose = canSelfClose ?? isVoid;\n }\n isClosedByChild(name) {\n return this.isVoid || name.toLowerCase() in this.closedByChildren;\n }\n getContentType(prefix) {\n if (typeof this.contentType === 'object') {\n const overrideType = prefix === undefined ? undefined : this.contentType[prefix];\n return overrideType ?? this.contentType.default;\n }\n return this.contentType;\n }\n}\nlet DEFAULT_TAG_DEFINITION;\nlet TAG_DEFINITIONS;\nfunction getHtmlTagDefinition(tagName) {\n if (!TAG_DEFINITIONS) {\n DEFAULT_TAG_DEFINITION = new HtmlTagDefinition({\n canSelfClose: true\n });\n TAG_DEFINITIONS = Object.assign(Object.create(null), {\n 'base': new HtmlTagDefinition({\n isVoid: true\n }),\n 'meta': new HtmlTagDefinition({\n isVoid: true\n }),\n 'area': new HtmlTagDefinition({\n isVoid: true\n }),\n 'embed': new HtmlTagDefinition({\n isVoid: true\n }),\n 'link': new HtmlTagDefinition({\n isVoid: true\n }),\n 'img': new HtmlTagDefinition({\n isVoid: true\n }),\n 'input': new HtmlTagDefinition({\n isVoid: true\n }),\n 'param': new HtmlTagDefinition({\n isVoid: true\n }),\n 'hr': new HtmlTagDefinition({\n isVoid: true\n }),\n 'br': new HtmlTagDefinition({\n isVoid: true\n }),\n 'source': new HtmlTagDefinition({\n isVoid: true\n }),\n 'track': new HtmlTagDefinition({\n isVoid: true\n }),\n 'wbr': new HtmlTagDefinition({\n isVoid: true\n }),\n 'p': new HtmlTagDefinition({\n closedByChildren: ['address', 'article', 'aside', 'blockquote', 'div', 'dl', 'fieldset', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hgroup', 'hr', 'main', 'nav', 'ol', 'p', 'pre', 'section', 'table', 'ul'],\n closedByParent: true\n }),\n 'thead': new HtmlTagDefinition({\n closedByChildren: ['tbody', 'tfoot']\n }),\n 'tbody': new HtmlTagDefinition({\n closedByChildren: ['tbody', 'tfoot'],\n closedByParent: true\n }),\n 'tfoot': new HtmlTagDefinition({\n closedByChildren: ['tbody'],\n closedByParent: true\n }),\n 'tr': new HtmlTagDefinition({\n closedByChildren: ['tr'],\n closedByParent: true\n }),\n 'td': new HtmlTagDefinition({\n closedByChildren: ['td', 'th'],\n closedByParent: true\n }),\n 'th': new HtmlTagDefinition({\n closedByChildren: ['td', 'th'],\n closedByParent: true\n }),\n 'col': new HtmlTagDefinition({\n isVoid: true\n }),\n 'svg': new HtmlTagDefinition({\n implicitNamespacePrefix: 'svg'\n }),\n 'foreignObject': new HtmlTagDefinition({\n implicitNamespacePrefix: 'svg',\n preventNamespaceInheritance: true\n }),\n 'math': new HtmlTagDefinition({\n implicitNamespacePrefix: 'math'\n }),\n 'li': new HtmlTagDefinition({\n closedByChildren: ['li'],\n closedByParent: true\n }),\n 'dt': new HtmlTagDefinition({\n closedByChildren: ['dt', 'dd']\n }),\n 'dd': new HtmlTagDefinition({\n closedByChildren: ['dt', 'dd'],\n closedByParent: true\n }),\n 'rb': new HtmlTagDefinition({\n closedByChildren: ['rb', 'rt', 'rtc', 'rp'],\n closedByParent: true\n }),\n 'rt': new HtmlTagDefinition({\n closedByChildren: ['rb', 'rt', 'rtc', 'rp'],\n closedByParent: true\n }),\n 'rtc': new HtmlTagDefinition({\n closedByChildren: ['rb', 'rtc', 'rp'],\n closedByParent: true\n }),\n 'rp': new HtmlTagDefinition({\n closedByChildren: ['rb', 'rt', 'rtc', 'rp'],\n closedByParent: true\n }),\n 'optgroup': new HtmlTagDefinition({\n closedByChildren: ['optgroup'],\n closedByParent: true\n }),\n 'option': new HtmlTagDefinition({\n closedByChildren: ['option', 'optgroup'],\n closedByParent: true\n }),\n 'pre': new HtmlTagDefinition({\n ignoreFirstLf: true\n }),\n 'listing': new HtmlTagDefinition({\n ignoreFirstLf: true\n }),\n 'style': new HtmlTagDefinition({\n contentType: TagContentType.RAW_TEXT\n }),\n 'script': new HtmlTagDefinition({\n contentType: TagContentType.RAW_TEXT\n }),\n 'title': new HtmlTagDefinition({\n contentType: {\n default: TagContentType.ESCAPABLE_RAW_TEXT,\n svg: TagContentType.PARSABLE_DATA\n }\n }),\n 'textarea': new HtmlTagDefinition({\n contentType: TagContentType.ESCAPABLE_RAW_TEXT,\n ignoreFirstLf: true\n })\n });\n new DomElementSchemaRegistry().allKnownElementNames().forEach(knownTagName => {\n if (!TAG_DEFINITIONS[knownTagName] && getNsPrefix(knownTagName) === null) {\n TAG_DEFINITIONS[knownTagName] = new HtmlTagDefinition({\n canSelfClose: false\n });\n }\n });\n }\n return TAG_DEFINITIONS[tagName] ?? TAG_DEFINITIONS[tagName.toLowerCase()] ?? DEFAULT_TAG_DEFINITION;\n}\n\nconst TAG_TO_PLACEHOLDER_NAMES = {\n 'A': 'LINK',\n 'B': 'BOLD_TEXT',\n 'BR': 'LINE_BREAK',\n 'EM': 'EMPHASISED_TEXT',\n 'H1': 'HEADING_LEVEL1',\n 'H2': 'HEADING_LEVEL2',\n 'H3': 'HEADING_LEVEL3',\n 'H4': 'HEADING_LEVEL4',\n 'H5': 'HEADING_LEVEL5',\n 'H6': 'HEADING_LEVEL6',\n 'HR': 'HORIZONTAL_RULE',\n 'I': 'ITALIC_TEXT',\n 'LI': 'LIST_ITEM',\n 'LINK': 'MEDIA_LINK',\n 'OL': 'ORDERED_LIST',\n 'P': 'PARAGRAPH',\n 'Q': 'QUOTATION',\n 'S': 'STRIKETHROUGH_TEXT',\n 'SMALL': 'SMALL_TEXT',\n 'SUB': 'SUBSTRIPT',\n 'SUP': 'SUPERSCRIPT',\n 'TBODY': 'TABLE_BODY',\n 'TD': 'TABLE_CELL',\n 'TFOOT': 'TABLE_FOOTER',\n 'TH': 'TABLE_HEADER_CELL',\n 'THEAD': 'TABLE_HEADER',\n 'TR': 'TABLE_ROW',\n 'TT': 'MONOSPACED_TEXT',\n 'U': 'UNDERLINED_TEXT',\n 'UL': 'UNORDERED_LIST'\n};\nclass PlaceholderRegistry {\n _placeHolderNameCounts = {};\n _signatureToName = {};\n getStartTagPlaceholderName(tag, attrs, isVoid) {\n const signature = this._hashTag(tag, attrs, isVoid);\n if (this._signatureToName[signature]) {\n return this._signatureToName[signature];\n }\n const upperTag = tag.toUpperCase();\n const baseName = TAG_TO_PLACEHOLDER_NAMES[upperTag] || `TAG_${upperTag}`;\n const name = this._generateUniqueName(isVoid ? baseName : `START_${baseName}`);\n this._signatureToName[signature] = name;\n return name;\n }\n getCloseTagPlaceholderName(tag) {\n const signature = this._hashClosingTag(tag);\n if (this._signatureToName[signature]) {\n return this._signatureToName[signature];\n }\n const upperTag = tag.toUpperCase();\n const baseName = TAG_TO_PLACEHOLDER_NAMES[upperTag] || `TAG_${upperTag}`;\n const name = this._generateUniqueName(`CLOSE_${baseName}`);\n this._signatureToName[signature] = name;\n return name;\n }\n getPlaceholderName(name, content) {\n const upperName = name.toUpperCase();\n const signature = `PH: ${upperName}=${content}`;\n if (this._signatureToName[signature]) {\n return this._signatureToName[signature];\n }\n const uniqueName = this._generateUniqueName(upperName);\n this._signatureToName[signature] = uniqueName;\n return uniqueName;\n }\n getUniquePlaceholder(name) {\n return this._generateUniqueName(name.toUpperCase());\n }\n getStartBlockPlaceholderName(name, parameters) {\n const signature = this._hashBlock(name, parameters);\n if (this._signatureToName[signature]) {\n return this._signatureToName[signature];\n }\n const placeholder = this._generateUniqueName(`START_BLOCK_${this._toSnakeCase(name)}`);\n this._signatureToName[signature] = placeholder;\n return placeholder;\n }\n getCloseBlockPlaceholderName(name) {\n const signature = this._hashClosingBlock(name);\n if (this._signatureToName[signature]) {\n return this._signatureToName[signature];\n }\n const placeholder = this._generateUniqueName(`CLOSE_BLOCK_${this._toSnakeCase(name)}`);\n this._signatureToName[signature] = placeholder;\n return placeholder;\n }\n _hashTag(tag, attrs, isVoid) {\n const start = `<${tag}`;\n const strAttrs = Object.keys(attrs).sort().map(name => ` ${name}=${attrs[name]}`).join('');\n const end = isVoid ? '/>' : `></${tag}>`;\n return start + strAttrs + end;\n }\n _hashClosingTag(tag) {\n return this._hashTag(`/${tag}`, {}, false);\n }\n _hashBlock(name, parameters) {\n const params = parameters.length === 0 ? '' : ` (${parameters.sort().join('; ')})`;\n return `@${name}${params} {}`;\n }\n _hashClosingBlock(name) {\n return this._hashBlock(`close_${name}`, []);\n }\n _toSnakeCase(name) {\n return name.toUpperCase().replace(/[^A-Z0-9]/g, '_');\n }\n _generateUniqueName(base) {\n const seen = this._placeHolderNameCounts.hasOwnProperty(base);\n if (!seen) {\n this._placeHolderNameCounts[base] = 1;\n return base;\n }\n const id = this._placeHolderNameCounts[base];\n this._placeHolderNameCounts[base] = id + 1;\n return `${base}_${id}`;\n }\n}\n\nconst _expParser = new Parser(new Lexer());\nfunction createI18nMessageFactory(retainEmptyTokens, preserveExpressionWhitespace) {\n const visitor = new _I18nVisitor(_expParser, retainEmptyTokens, preserveExpressionWhitespace);\n return (nodes, meaning, description, customId, visitNodeFn) => visitor.toI18nMessage(nodes, meaning, description, customId, visitNodeFn);\n}\nfunction noopVisitNodeFn(_html, i18n) {\n return i18n;\n}\nclass _I18nVisitor {\n _expressionParser;\n _retainEmptyTokens;\n _preserveExpressionWhitespace;\n constructor(_expressionParser, _retainEmptyTokens, _preserveExpressionWhitespace) {\n this._expressionParser = _expressionParser;\n this._retainEmptyTokens = _retainEmptyTokens;\n this._preserveExpressionWhitespace = _preserveExpressionWhitespace;\n }\n toI18nMessage(nodes, meaning = '', description = '', customId = '', visitNodeFn) {\n const context = {\n isIcu: nodes.length == 1 && nodes[0] instanceof Expansion,\n icuDepth: 0,\n placeholderRegistry: new PlaceholderRegistry(),\n placeholderToContent: {},\n placeholderToMessage: {},\n visitNodeFn: visitNodeFn || noopVisitNodeFn\n };\n const i18nodes = visitAll(this, nodes, context);\n return new Message(i18nodes, context.placeholderToContent, context.placeholderToMessage, meaning, description, customId);\n }\n visitElement(el, context) {\n return this._visitElementLike(el, context);\n }\n visitComponent(component, context) {\n return this._visitElementLike(component, context);\n }\n visitDirective(directive, context) {\n throw new Error('Unreachable code');\n }\n visitAttribute(attribute, context) {\n const node = attribute.valueTokens === undefined || attribute.valueTokens.length === 1 ? new Text$2(attribute.value, attribute.valueSpan || attribute.sourceSpan) : this._visitTextWithInterpolation(attribute.valueTokens, attribute.valueSpan || attribute.sourceSpan, context, attribute.i18n);\n return context.visitNodeFn(attribute, node);\n }\n visitText(text, context) {\n const node = text.tokens.length === 1 ? new Text$2(text.value, text.sourceSpan) : this._visitTextWithInterpolation(text.tokens, text.sourceSpan, context, text.i18n);\n return context.visitNodeFn(text, node);\n }\n visitComment(comment, context) {\n return null;\n }\n visitExpansion(icu, context) {\n context.icuDepth++;\n const i18nIcuCases = {};\n const i18nIcu = new Icu(icu.switchValue, icu.type, i18nIcuCases, icu.sourceSpan);\n icu.cases.forEach(caze => {\n i18nIcuCases[caze.value] = new Container(caze.expression.map(node => node.visit(this, context)), caze.expSourceSpan);\n });\n context.icuDepth--;\n if (context.isIcu || context.icuDepth > 0) {\n const expPh = context.placeholderRegistry.getUniquePlaceholder(`VAR_${icu.type}`);\n i18nIcu.expressionPlaceholder = expPh;\n context.placeholderToContent[expPh] = {\n text: icu.switchValue,\n sourceSpan: icu.switchValueSourceSpan\n };\n return context.visitNodeFn(icu, i18nIcu);\n }\n const phName = context.placeholderRegistry.getPlaceholderName('ICU', icu.sourceSpan.toString());\n context.placeholderToMessage[phName] = this.toI18nMessage([icu], '', '', '', undefined);\n const node = new IcuPlaceholder(i18nIcu, phName, icu.sourceSpan);\n return context.visitNodeFn(icu, node);\n }\n visitExpansionCase(_icuCase, _context) {\n throw new Error('Unreachable code');\n }\n visitBlock(block, context) {\n const children = visitAll(this, block.children, context);\n if (block.name === 'switch') {\n return new Container(children, block.sourceSpan);\n }\n const parameters = block.parameters.map(param => param.expression);\n const startPhName = context.placeholderRegistry.getStartBlockPlaceholderName(block.name, parameters);\n const closePhName = context.placeholderRegistry.getCloseBlockPlaceholderName(block.name);\n context.placeholderToContent[startPhName] = {\n text: block.startSourceSpan.toString(),\n sourceSpan: block.startSourceSpan\n };\n context.placeholderToContent[closePhName] = {\n text: block.endSourceSpan ? block.endSourceSpan.toString() : '}',\n sourceSpan: block.endSourceSpan ?? block.sourceSpan\n };\n const node = new BlockPlaceholder(block.name, parameters, startPhName, closePhName, children, block.sourceSpan, block.startSourceSpan, block.endSourceSpan);\n return context.visitNodeFn(block, node);\n }\n visitBlockParameter(_parameter, _context) {\n throw new Error('Unreachable code');\n }\n visitLetDeclaration(decl, context) {\n return null;\n }\n _visitElementLike(node, context) {\n const children = visitAll(this, node.children, context);\n const attrs = {};\n const visitAttribute = attr => {\n attrs[attr.name] = attr.value;\n };\n let nodeName;\n let isVoid;\n if (node instanceof Element) {\n nodeName = node.name;\n isVoid = getHtmlTagDefinition(node.name).isVoid;\n } else {\n nodeName = node.fullName;\n isVoid = node.tagName ? getHtmlTagDefinition(node.tagName).isVoid : false;\n }\n node.attrs.forEach(visitAttribute);\n node.directives.forEach(dir => dir.attrs.forEach(visitAttribute));\n const startPhName = context.placeholderRegistry.getStartTagPlaceholderName(nodeName, attrs, isVoid);\n context.placeholderToContent[startPhName] = {\n text: node.startSourceSpan.toString(),\n sourceSpan: node.startSourceSpan\n };\n let closePhName = '';\n if (!isVoid) {\n closePhName = context.placeholderRegistry.getCloseTagPlaceholderName(nodeName);\n context.placeholderToContent[closePhName] = {\n text: `</${nodeName}>`,\n sourceSpan: node.endSourceSpan ?? node.sourceSpan\n };\n }\n const i18nNode = new TagPlaceholder(nodeName, attrs, startPhName, closePhName, children, isVoid, node.sourceSpan, node.startSourceSpan, node.endSourceSpan);\n return context.visitNodeFn(node, i18nNode);\n }\n _visitTextWithInterpolation(tokens, sourceSpan, context, previousI18n) {\n const nodes = [];\n let hasInterpolation = false;\n for (const token of tokens) {\n switch (token.type) {\n case 8:\n case 17:\n hasInterpolation = true;\n const [startMarker, expression, endMarker] = token.parts;\n const baseName = extractPlaceholderName(expression) || 'INTERPOLATION';\n const phName = context.placeholderRegistry.getPlaceholderName(baseName, expression);\n if (this._preserveExpressionWhitespace) {\n context.placeholderToContent[phName] = {\n text: token.parts.join(''),\n sourceSpan: token.sourceSpan\n };\n nodes.push(new Placeholder(expression, phName, token.sourceSpan));\n } else {\n const normalized = this.normalizeExpression(token);\n context.placeholderToContent[phName] = {\n text: `${startMarker}${normalized}${endMarker}`,\n sourceSpan: token.sourceSpan\n };\n nodes.push(new Placeholder(normalized, phName, token.sourceSpan));\n }\n break;\n default:\n if (token.parts[0].length > 0 || this._retainEmptyTokens) {\n const previous = nodes[nodes.length - 1];\n if (previous instanceof Text$2) {\n previous.value += token.parts[0];\n previous.sourceSpan = new ParseSourceSpan(previous.sourceSpan.start, token.sourceSpan.end, previous.sourceSpan.fullStart, previous.sourceSpan.details);\n } else {\n nodes.push(new Text$2(token.parts[0], token.sourceSpan));\n }\n } else {\n if (this._retainEmptyTokens) {\n nodes.push(new Text$2(token.parts[0], token.sourceSpan));\n }\n }\n break;\n }\n }\n if (hasInterpolation) {\n reusePreviousSourceSpans(nodes, previousI18n);\n return new Container(nodes, sourceSpan);\n } else {\n return nodes[0];\n }\n }\n normalizeExpression(token) {\n const expression = token.parts[1];\n const expr = this._expressionParser.parseBinding(expression, token.sourceSpan, token.sourceSpan.start.offset);\n return serialize(expr);\n }\n}\nfunction reusePreviousSourceSpans(nodes, previousI18n) {\n if (previousI18n instanceof Message) {\n assertSingleContainerMessage(previousI18n);\n previousI18n = previousI18n.nodes[0];\n }\n if (previousI18n instanceof Container) {\n assertEquivalentNodes(previousI18n.children, nodes);\n for (let i = 0; i < nodes.length; i++) {\n nodes[i].sourceSpan = previousI18n.children[i].sourceSpan;\n }\n }\n}\nfunction assertSingleContainerMessage(message) {\n const nodes = message.nodes;\n if (nodes.length !== 1 || !(nodes[0] instanceof Container)) {\n throw new Error('Unexpected previous i18n message - expected it to consist of only a single `Container` node.');\n }\n}\nfunction assertEquivalentNodes(previousNodes, nodes) {\n if (previousNodes.length !== nodes.length) {\n throw new Error(`\nThe number of i18n message children changed between first and second pass.\n\nFirst pass (${previousNodes.length} tokens):\n${previousNodes.map(node => `\"${node.sourceSpan.toString()}\"`).join('\\n')}\n\nSecond pass (${nodes.length} tokens):\n${nodes.map(node => `\"${node.sourceSpan.toString()}\"`).join('\\n')}\n `.trim());\n }\n if (previousNodes.some((node, i) => nodes[i].constructor !== node.constructor)) {\n throw new Error('The types of the i18n message children changed between first and second pass.');\n }\n}\nconst _CUSTOM_PH_EXP = /\\/\\/[\\s\\S]*i18n[\\s\\S]*\\([\\s\\S]*ph[\\s\\S]*=[\\s\\S]*(\"|')([\\s\\S]*?)\\1[\\s\\S]*\\)/g;\nfunction extractPlaceholderName(input) {\n return input.split(_CUSTOM_PH_EXP)[2];\n}\n\nconst TRUSTED_TYPES_SINKS = new Set(['iframe|srcdoc', '*|innerhtml', '*|outerhtml', 'embed|src', 'iframe|src', 'object|codebase', 'object|data']);\nfunction isTrustedTypesSink(tagName, propName) {\n tagName = tagName.toLowerCase();\n propName = propName.toLowerCase();\n return TRUSTED_TYPES_SINKS.has(tagName + '|' + propName) || TRUSTED_TYPES_SINKS.has('*|' + propName);\n}\n\nconst setI18nRefs = originalNodeMap => {\n return (trimmedNode, i18nNode) => {\n const originalNode = originalNodeMap.get(trimmedNode) ?? trimmedNode;\n if (originalNode instanceof NodeWithI18n) {\n if (i18nNode instanceof IcuPlaceholder && originalNode.i18n instanceof Message) {\n i18nNode.previousMessage = originalNode.i18n;\n }\n originalNode.i18n = i18nNode;\n }\n return i18nNode;\n };\n};\nclass I18nMetaVisitor {\n keepI18nAttrs;\n enableI18nLegacyMessageIdFormat;\n preserveSignificantWhitespace;\n retainEmptyTokens;\n hasI18nMeta = false;\n _errors = [];\n constructor(keepI18nAttrs = false, enableI18nLegacyMessageIdFormat = false, preserveSignificantWhitespace = true, retainEmptyTokens = !preserveSignificantWhitespace) {\n this.keepI18nAttrs = keepI18nAttrs;\n this.enableI18nLegacyMessageIdFormat = enableI18nLegacyMessageIdFormat;\n this.preserveSignificantWhitespace = preserveSignificantWhitespace;\n this.retainEmptyTokens = retainEmptyTokens;\n }\n _generateI18nMessage(nodes, meta = '', visitNodeFn) {\n const {\n meaning,\n description,\n customId\n } = this._parseMetadata(meta);\n const createI18nMessage = createI18nMessageFactory(this.retainEmptyTokens, this.preserveSignificantWhitespace);\n const message = createI18nMessage(nodes, meaning, description, customId, visitNodeFn);\n this._setMessageId(message, meta);\n this._setLegacyIds(message, meta);\n return message;\n }\n visitAllWithErrors(nodes) {\n const result = nodes.map(node => node.visit(this, null));\n return new ParseTreeResult(result, this._errors);\n }\n visitElement(element) {\n this._visitElementLike(element);\n return element;\n }\n visitComponent(component, context) {\n this._visitElementLike(component);\n return component;\n }\n visitExpansion(expansion, currentMessage) {\n let message;\n const meta = expansion.i18n;\n this.hasI18nMeta = true;\n if (meta instanceof IcuPlaceholder) {\n const name = meta.name;\n message = this._generateI18nMessage([expansion], meta);\n const icu = icuFromI18nMessage(message);\n icu.name = name;\n if (currentMessage !== null) {\n currentMessage.placeholderToMessage[name] = message;\n }\n } else {\n message = this._generateI18nMessage([expansion], currentMessage || meta);\n }\n expansion.i18n = message;\n return expansion;\n }\n visitText(text) {\n return text;\n }\n visitAttribute(attribute) {\n return attribute;\n }\n visitComment(comment) {\n return comment;\n }\n visitExpansionCase(expansionCase) {\n return expansionCase;\n }\n visitBlock(block, context) {\n visitAll(this, block.children, context);\n return block;\n }\n visitBlockParameter(parameter, context) {\n return parameter;\n }\n visitLetDeclaration(decl, context) {\n return decl;\n }\n visitDirective(directive, context) {\n return directive;\n }\n _visitElementLike(node) {\n let message = undefined;\n if (hasI18nAttrs(node)) {\n this.hasI18nMeta = true;\n const attrs = [];\n const attrsMeta = {};\n for (const attr of node.attrs) {\n if (attr.name === I18N_ATTR) {\n const i18n = node.i18n || attr.value;\n const originalNodeMap = new Map();\n const trimmedNodes = this.preserveSignificantWhitespace ? node.children : visitAllWithSiblings(new WhitespaceVisitor(false, originalNodeMap), node.children);\n message = this._generateI18nMessage(trimmedNodes, i18n, setI18nRefs(originalNodeMap));\n if (message.nodes.length === 0) {\n message = undefined;\n }\n node.i18n = message;\n } else if (attr.name.startsWith(I18N_ATTR_PREFIX)) {\n const name = attr.name.slice(I18N_ATTR_PREFIX.length);\n let isTrustedType;\n if (node instanceof Component) {\n isTrustedType = node.tagName === null ? false : isTrustedTypesSink(node.tagName, name);\n } else {\n isTrustedType = isTrustedTypesSink(node.name, name);\n }\n if (isTrustedType) {\n this._reportError(attr, `Translating attribute '${name}' is disallowed for security reasons.`);\n } else {\n attrsMeta[name] = attr.value;\n }\n } else {\n attrs.push(attr);\n }\n }\n if (Object.keys(attrsMeta).length) {\n for (const attr of attrs) {\n const meta = attrsMeta[attr.name];\n if (meta !== undefined && attr.value) {\n attr.i18n = this._generateI18nMessage([attr], attr.i18n || meta);\n }\n }\n }\n if (!this.keepI18nAttrs) {\n node.attrs = attrs;\n }\n }\n visitAll(this, node.children, message);\n }\n _parseMetadata(meta) {\n return typeof meta === 'string' ? parseI18nMeta(meta) : meta instanceof Message ? meta : {};\n }\n _setMessageId(message, meta) {\n if (!message.id) {\n message.id = meta instanceof Message && meta.id || decimalDigest(message);\n }\n }\n _setLegacyIds(message, meta) {\n if (this.enableI18nLegacyMessageIdFormat) {\n message.legacyIds = [computeDigest(message), computeDecimalDigest(message)];\n } else if (typeof meta !== 'string') {\n const previousMessage = meta instanceof Message ? meta : meta instanceof IcuPlaceholder ? meta.previousMessage : undefined;\n message.legacyIds = previousMessage ? previousMessage.legacyIds : [];\n }\n }\n _reportError(node, msg) {\n this._errors.push(new ParseError(node.sourceSpan, msg));\n }\n}\nconst I18N_MEANING_SEPARATOR = '|';\nconst I18N_ID_SEPARATOR = '@@';\nfunction parseI18nMeta(meta = '') {\n let customId;\n let meaning;\n let description;\n meta = meta.trim();\n if (meta) {\n const idIndex = meta.indexOf(I18N_ID_SEPARATOR);\n const descIndex = meta.indexOf(I18N_MEANING_SEPARATOR);\n let meaningAndDesc;\n [meaningAndDesc, customId] = idIndex > -1 ? [meta.slice(0, idIndex), meta.slice(idIndex + 2)] : [meta, ''];\n [meaning, description] = descIndex > -1 ? [meaningAndDesc.slice(0, descIndex), meaningAndDesc.slice(descIndex + 1)] : ['', meaningAndDesc];\n }\n return {\n customId,\n meaning,\n description\n };\n}\nfunction i18nMetaToJSDoc(meta) {\n const tags = [];\n if (meta.description) {\n tags.push({\n tagName: \"desc\",\n text: meta.description\n });\n } else {\n tags.push({\n tagName: \"suppress\",\n text: '{msgDescriptions}'\n });\n }\n if (meta.meaning) {\n tags.push({\n tagName: \"meaning\",\n text: meta.meaning\n });\n }\n return jsDocComment(tags);\n}\n\nconst GOOG_GET_MSG = 'goog.getMsg';\nfunction createGoogleGetMsgStatements(variable$1, message, closureVar, placeholderValues) {\n const messageString = serializeI18nMessageForGetMsg(message);\n const args = [literal(messageString)];\n if (Object.keys(placeholderValues).length) {\n args.push(mapLiteral(formatI18nPlaceholderNamesInMap(placeholderValues, true), true));\n args.push(mapLiteral({\n original_code: literalMap(Object.keys(placeholderValues).map(param => ({\n key: formatI18nPlaceholderName(param),\n quoted: true,\n value: message.placeholders[param] ? literal(message.placeholders[param].sourceSpan.toString()) : literal(message.placeholderToMessage[param].nodes.map(node => node.sourceSpan.toString()).join(''))\n })))\n }));\n }\n const googGetMsgStmt = new DeclareVarStmt(closureVar.name, variable(GOOG_GET_MSG).callFn(args), INFERRED_TYPE, StmtModifier.Final);\n googGetMsgStmt.addLeadingComment(i18nMetaToJSDoc(message));\n const i18nAssignmentStmt = new ExpressionStatement(variable$1.set(closureVar));\n return [googGetMsgStmt, i18nAssignmentStmt];\n}\nclass GetMsgSerializerVisitor {\n formatPh(value) {\n return `{$${formatI18nPlaceholderName(value)}}`;\n }\n visitText(text) {\n return text.value;\n }\n visitContainer(container) {\n return container.children.map(child => child.visit(this)).join('');\n }\n visitIcu(icu) {\n return serializeIcuNode(icu);\n }\n visitTagPlaceholder(ph) {\n return ph.isVoid ? this.formatPh(ph.startName) : `${this.formatPh(ph.startName)}${ph.children.map(child => child.visit(this)).join('')}${this.formatPh(ph.closeName)}`;\n }\n visitPlaceholder(ph) {\n return this.formatPh(ph.name);\n }\n visitBlockPlaceholder(ph) {\n return `${this.formatPh(ph.startName)}${ph.children.map(child => child.visit(this)).join('')}${this.formatPh(ph.closeName)}`;\n }\n visitIcuPlaceholder(ph, context) {\n return this.formatPh(ph.name);\n }\n}\nconst serializerVisitor = new GetMsgSerializerVisitor();\nfunction serializeI18nMessageForGetMsg(message) {\n return message.nodes.map(node => node.visit(serializerVisitor, null)).join('');\n}\n\nfunction createLocalizeStatements(variable, message, params) {\n const {\n messageParts,\n placeHolders\n } = serializeI18nMessageForLocalize(message);\n const sourceSpan = getSourceSpan(message);\n const expressions = placeHolders.map(ph => params[ph.text]);\n const localizedString$1 = localizedString(message, messageParts, placeHolders, expressions, sourceSpan);\n const variableInitialization = variable.set(localizedString$1);\n return [new ExpressionStatement(variableInitialization)];\n}\nclass LocalizeSerializerVisitor {\n placeholderToMessage;\n pieces;\n constructor(placeholderToMessage, pieces) {\n this.placeholderToMessage = placeholderToMessage;\n this.pieces = pieces;\n }\n visitText(text) {\n if (this.pieces[this.pieces.length - 1] instanceof LiteralPiece) {\n this.pieces[this.pieces.length - 1].text += text.value;\n } else {\n const sourceSpan = new ParseSourceSpan(text.sourceSpan.fullStart, text.sourceSpan.end, text.sourceSpan.fullStart, text.sourceSpan.details);\n this.pieces.push(new LiteralPiece(text.value, sourceSpan));\n }\n }\n visitContainer(container) {\n container.children.forEach(child => child.visit(this));\n }\n visitIcu(icu) {\n this.pieces.push(new LiteralPiece(serializeIcuNode(icu), icu.sourceSpan));\n }\n visitTagPlaceholder(ph) {\n this.pieces.push(this.createPlaceholderPiece(ph.startName, ph.startSourceSpan ?? ph.sourceSpan));\n if (!ph.isVoid) {\n ph.children.forEach(child => child.visit(this));\n this.pieces.push(this.createPlaceholderPiece(ph.closeName, ph.endSourceSpan ?? ph.sourceSpan));\n }\n }\n visitPlaceholder(ph) {\n this.pieces.push(this.createPlaceholderPiece(ph.name, ph.sourceSpan));\n }\n visitBlockPlaceholder(ph) {\n this.pieces.push(this.createPlaceholderPiece(ph.startName, ph.startSourceSpan ?? ph.sourceSpan));\n ph.children.forEach(child => child.visit(this));\n this.pieces.push(this.createPlaceholderPiece(ph.closeName, ph.endSourceSpan ?? ph.sourceSpan));\n }\n visitIcuPlaceholder(ph) {\n this.pieces.push(this.createPlaceholderPiece(ph.name, ph.sourceSpan, this.placeholderToMessage[ph.name]));\n }\n createPlaceholderPiece(name, sourceSpan, associatedMessage) {\n return new PlaceholderPiece(formatI18nPlaceholderName(name, false), sourceSpan, associatedMessage);\n }\n}\nfunction serializeI18nMessageForLocalize(message) {\n const pieces = [];\n const serializerVisitor = new LocalizeSerializerVisitor(message.placeholderToMessage, pieces);\n message.nodes.forEach(node => node.visit(serializerVisitor));\n return processMessagePieces(pieces);\n}\nfunction getSourceSpan(message) {\n const startNode = message.nodes[0];\n const endNode = message.nodes[message.nodes.length - 1];\n return new ParseSourceSpan(startNode.sourceSpan.fullStart, endNode.sourceSpan.end, startNode.sourceSpan.fullStart, startNode.sourceSpan.details);\n}\nfunction processMessagePieces(pieces) {\n const messageParts = [];\n const placeHolders = [];\n if (pieces[0] instanceof PlaceholderPiece) {\n messageParts.push(createEmptyMessagePart(pieces[0].sourceSpan.start));\n }\n for (let i = 0; i < pieces.length; i++) {\n const part = pieces[i];\n if (part instanceof LiteralPiece) {\n messageParts.push(part);\n } else {\n placeHolders.push(part);\n if (pieces[i - 1] instanceof PlaceholderPiece) {\n messageParts.push(createEmptyMessagePart(pieces[i - 1].sourceSpan.end));\n }\n }\n }\n if (pieces[pieces.length - 1] instanceof PlaceholderPiece) {\n messageParts.push(createEmptyMessagePart(pieces[pieces.length - 1].sourceSpan.end));\n }\n return {\n messageParts,\n placeHolders\n };\n}\nfunction createEmptyMessagePart(location) {\n return new LiteralPiece('', new ParseSourceSpan(location, location));\n}\n\nconst NG_I18N_CLOSURE_MODE = 'ngI18nClosureMode';\nconst TRANSLATION_VAR_PREFIX = 'i18n_';\nconst I18N_ICU_MAPPING_PREFIX = 'I18N_EXP_';\nconst ESCAPE = '\\uFFFD';\nconst CLOSURE_TRANSLATION_VAR_PREFIX = 'MSG_';\nfunction getTranslationConstPrefix(extra) {\n return `${CLOSURE_TRANSLATION_VAR_PREFIX}${extra}`.toUpperCase();\n}\nfunction declareI18nVariable(variable) {\n return new DeclareVarStmt(variable.name, undefined, INFERRED_TYPE, undefined, variable.sourceSpan);\n}\nfunction collectI18nConsts(job) {\n const fileBasedI18nSuffix = job.relativeContextFilePath.replace(/[^A-Za-z0-9]/g, '_').toUpperCase() + '_';\n const extractedAttributesByI18nContext = new Map();\n const i18nAttributesByElement = new Map();\n const i18nExpressionsByElement = new Map();\n const messages = new Map();\n for (const unit of job.units) {\n for (const op of unit.ops()) {\n if (op.kind === OpKind.ExtractedAttribute && op.i18nContext !== null) {\n const attributes = extractedAttributesByI18nContext.get(op.i18nContext) ?? [];\n attributes.push(op);\n extractedAttributesByI18nContext.set(op.i18nContext, attributes);\n } else if (op.kind === OpKind.I18nAttributes) {\n i18nAttributesByElement.set(op.target, op);\n } else if (op.kind === OpKind.I18nExpression && op.usage === I18nExpressionFor.I18nAttribute) {\n const expressions = i18nExpressionsByElement.get(op.target) ?? [];\n expressions.push(op);\n i18nExpressionsByElement.set(op.target, expressions);\n } else if (op.kind === OpKind.I18nMessage) {\n messages.set(op.xref, op);\n }\n }\n }\n const i18nValuesByContext = new Map();\n const messageConstIndices = new Map();\n for (const unit of job.units) {\n for (const op of unit.create) {\n if (op.kind === OpKind.I18nMessage) {\n if (op.messagePlaceholder === null) {\n const {\n mainVar,\n statements\n } = collectMessage(job, fileBasedI18nSuffix, messages, op);\n if (op.i18nBlock !== null) {\n const i18nConst = job.addConst(mainVar, statements);\n messageConstIndices.set(op.i18nBlock, i18nConst);\n } else {\n job.constsInitializers.push(...statements);\n i18nValuesByContext.set(op.i18nContext, mainVar);\n const attributesForMessage = extractedAttributesByI18nContext.get(op.i18nContext);\n if (attributesForMessage !== undefined) {\n for (const attr of attributesForMessage) {\n attr.expression = mainVar.clone();\n }\n }\n }\n }\n OpList.remove(op);\n }\n }\n }\n for (const unit of job.units) {\n for (const elem of unit.create) {\n if (isElementOrContainerOp(elem)) {\n const i18nAttributes = i18nAttributesByElement.get(elem.xref);\n if (i18nAttributes === undefined) {\n continue;\n }\n let i18nExpressions = i18nExpressionsByElement.get(elem.xref);\n if (i18nExpressions === undefined) {\n throw new Error('AssertionError: Could not find any i18n expressions associated with an I18nAttributes instruction');\n }\n const seenPropertyNames = new Set();\n i18nExpressions = i18nExpressions.filter(i18nExpr => {\n const seen = seenPropertyNames.has(i18nExpr.name);\n seenPropertyNames.add(i18nExpr.name);\n return !seen;\n });\n const i18nAttributeConfig = i18nExpressions.flatMap(i18nExpr => {\n const i18nExprValue = i18nValuesByContext.get(i18nExpr.context);\n if (i18nExprValue === undefined) {\n throw new Error(\"AssertionError: Could not find i18n expression's value\");\n }\n return [literal(i18nExpr.name), i18nExprValue];\n });\n i18nAttributes.i18nAttributesConfig = job.addConst(new LiteralArrayExpr(i18nAttributeConfig));\n }\n }\n }\n for (const unit of job.units) {\n for (const op of unit.create) {\n if (op.kind === OpKind.I18nStart) {\n const msgIndex = messageConstIndices.get(op.root);\n if (msgIndex === undefined) {\n throw new Error('AssertionError: Could not find corresponding i18n block index for an i18n message op; was an i18n message incorrectly assumed to correspond to an attribute?');\n }\n op.messageIndex = msgIndex;\n }\n }\n }\n}\nfunction collectMessage(job, fileBasedI18nSuffix, messages, messageOp) {\n const statements = [];\n const subMessagePlaceholders = new Map();\n for (const subMessageId of messageOp.subMessages) {\n const subMessage = messages.get(subMessageId);\n const {\n mainVar: subMessageVar,\n statements: subMessageStatements\n } = collectMessage(job, fileBasedI18nSuffix, messages, subMessage);\n statements.push(...subMessageStatements);\n const subMessages = subMessagePlaceholders.get(subMessage.messagePlaceholder) ?? [];\n subMessages.push(subMessageVar);\n subMessagePlaceholders.set(subMessage.messagePlaceholder, subMessages);\n }\n addSubMessageParams(messageOp, subMessagePlaceholders);\n messageOp.params = new Map([...messageOp.params.entries()].sort());\n const mainVar = variable(job.pool.uniqueName(TRANSLATION_VAR_PREFIX));\n const closureVar = i18nGenerateClosureVar(job.pool, messageOp.message.id, fileBasedI18nSuffix, job.i18nUseExternalIds);\n let transformFn = undefined;\n if (messageOp.needsPostprocessing || messageOp.postprocessingParams.size > 0) {\n const postprocessingParams = Object.fromEntries([...messageOp.postprocessingParams.entries()].sort());\n const formattedPostprocessingParams = formatI18nPlaceholderNamesInMap(postprocessingParams, false);\n const extraTransformFnParams = [];\n if (messageOp.postprocessingParams.size > 0) {\n extraTransformFnParams.push(mapLiteral(formattedPostprocessingParams, true));\n }\n transformFn = expr => importExpr(Identifiers.i18nPostprocess).callFn([expr, ...extraTransformFnParams]);\n }\n statements.push(...getTranslationDeclStmts(messageOp.message, mainVar, closureVar, messageOp.params, transformFn));\n return {\n mainVar,\n statements\n };\n}\nfunction addSubMessageParams(messageOp, subMessagePlaceholders) {\n for (const [placeholder, subMessages] of subMessagePlaceholders) {\n if (subMessages.length === 1) {\n messageOp.params.set(placeholder, subMessages[0]);\n } else {\n messageOp.params.set(placeholder, literal(`${ESCAPE}${I18N_ICU_MAPPING_PREFIX}${placeholder}${ESCAPE}`));\n messageOp.postprocessingParams.set(placeholder, literalArr(subMessages));\n }\n }\n}\nfunction getTranslationDeclStmts(message, variable, closureVar, params, transformFn) {\n const paramsObject = Object.fromEntries(params);\n const statements = [declareI18nVariable(variable), ifStmt(createClosureModeGuard(), createGoogleGetMsgStatements(variable, message, closureVar, paramsObject), createLocalizeStatements(variable, message, formatI18nPlaceholderNamesInMap(paramsObject, false)))];\n if (transformFn) {\n statements.push(new ExpressionStatement(variable.set(transformFn(variable))));\n }\n return statements;\n}\nfunction createClosureModeGuard() {\n return typeofExpr(variable(NG_I18N_CLOSURE_MODE)).notIdentical(literal('undefined', STRING_TYPE)).and(variable(NG_I18N_CLOSURE_MODE));\n}\nfunction i18nGenerateClosureVar(pool, messageId, fileBasedI18nSuffix, useExternalIds) {\n let name;\n const suffix = fileBasedI18nSuffix;\n if (useExternalIds) {\n const prefix = getTranslationConstPrefix(`EXTERNAL_`);\n const uniqueSuffix = pool.uniqueName(suffix);\n name = `${prefix}${sanitizeIdentifier(messageId)}$$${uniqueSuffix}`;\n } else {\n const prefix = getTranslationConstPrefix(suffix);\n name = pool.uniqueName(prefix);\n }\n return variable(name);\n}\n\nfunction convertI18nText(job) {\n for (const unit of job.units) {\n let currentI18n = null;\n let currentIcu = null;\n const textNodeI18nBlocks = new Map();\n const textNodeIcus = new Map();\n const icuPlaceholderByText = new Map();\n for (const op of unit.create) {\n switch (op.kind) {\n case OpKind.I18nStart:\n if (op.context === null) {\n throw Error('I18n op should have its context set.');\n }\n currentI18n = op;\n break;\n case OpKind.I18nEnd:\n currentI18n = null;\n break;\n case OpKind.IcuStart:\n if (op.context === null) {\n throw Error('Icu op should have its context set.');\n }\n currentIcu = op;\n break;\n case OpKind.IcuEnd:\n currentIcu = null;\n break;\n case OpKind.Text:\n if (currentI18n !== null) {\n textNodeI18nBlocks.set(op.xref, currentI18n);\n textNodeIcus.set(op.xref, currentIcu);\n if (op.icuPlaceholder !== null) {\n const icuPlaceholderOp = createIcuPlaceholderOp(job.allocateXrefId(), op.icuPlaceholder, [op.initialValue]);\n OpList.replace(op, icuPlaceholderOp);\n icuPlaceholderByText.set(op.xref, icuPlaceholderOp);\n } else {\n OpList.remove(op);\n }\n }\n break;\n }\n }\n for (const op of unit.update) {\n switch (op.kind) {\n case OpKind.InterpolateText:\n if (!textNodeI18nBlocks.has(op.target)) {\n continue;\n }\n const i18nOp = textNodeI18nBlocks.get(op.target);\n const icuOp = textNodeIcus.get(op.target);\n const icuPlaceholder = icuPlaceholderByText.get(op.target);\n const contextId = icuOp ? icuOp.context : i18nOp.context;\n const resolutionTime = icuOp ? I18nParamResolutionTime.Postproccessing : I18nParamResolutionTime.Creation;\n const ops = [];\n for (let i = 0; i < op.interpolation.expressions.length; i++) {\n const expr = op.interpolation.expressions[i];\n ops.push(createI18nExpressionOp(contextId, i18nOp.xref, i18nOp.xref, i18nOp.handle, expr, icuPlaceholder?.xref ?? null, op.interpolation.i18nPlaceholders[i] ?? null, resolutionTime, I18nExpressionFor.I18nText, '', expr.sourceSpan ?? op.sourceSpan));\n }\n OpList.replaceWithMany(op, ops);\n if (icuPlaceholder !== undefined) {\n icuPlaceholder.strings = op.interpolation.strings;\n }\n break;\n }\n }\n }\n}\n\nfunction liftLocalRefs(job) {\n for (const unit of job.units) {\n for (const op of unit.create) {\n switch (op.kind) {\n case OpKind.ElementStart:\n case OpKind.ConditionalCreate:\n case OpKind.ConditionalBranchCreate:\n case OpKind.Template:\n if (!Array.isArray(op.localRefs)) {\n throw new Error(`AssertionError: expected localRefs to be an array still`);\n }\n op.numSlotsUsed += op.localRefs.length;\n if (op.localRefs.length > 0) {\n const localRefs = serializeLocalRefs(op.localRefs);\n op.localRefs = job.addConst(localRefs);\n } else {\n op.localRefs = null;\n }\n break;\n }\n }\n }\n}\nfunction serializeLocalRefs(refs) {\n const constRefs = [];\n for (const ref of refs) {\n constRefs.push(literal(ref.name), literal(ref.target));\n }\n return literalArr(constRefs);\n}\n\nfunction emitNamespaceChanges(job) {\n for (const unit of job.units) {\n let activeNamespace = Namespace.HTML;\n for (const op of unit.create) {\n if (op.kind !== OpKind.ElementStart) {\n continue;\n }\n if (op.namespace !== activeNamespace) {\n OpList.insertBefore(createNamespaceOp(op.namespace), op);\n activeNamespace = op.namespace;\n }\n }\n }\n}\n\nfunction parse(value) {\n const styles = [];\n let i = 0;\n let parenDepth = 0;\n let quote = 0;\n let valueStart = 0;\n let propStart = 0;\n let currentProp = null;\n while (i < value.length) {\n const token = value.charCodeAt(i++);\n switch (token) {\n case 40:\n parenDepth++;\n break;\n case 41:\n parenDepth--;\n break;\n case 39:\n if (quote === 0) {\n quote = 39;\n } else if (quote === 39 && value.charCodeAt(i - 1) !== 92) {\n quote = 0;\n }\n break;\n case 34:\n if (quote === 0) {\n quote = 34;\n } else if (quote === 34 && value.charCodeAt(i - 1) !== 92) {\n quote = 0;\n }\n break;\n case 58:\n if (!currentProp && parenDepth === 0 && quote === 0) {\n currentProp = hyphenate(value.substring(propStart, i - 1).trim());\n valueStart = i;\n }\n break;\n case 59:\n if (currentProp && valueStart > 0 && parenDepth === 0 && quote === 0) {\n const styleVal = value.substring(valueStart, i - 1).trim();\n styles.push(currentProp, styleVal);\n propStart = i;\n valueStart = 0;\n currentProp = null;\n }\n break;\n }\n }\n if (currentProp && valueStart) {\n const styleVal = value.slice(valueStart).trim();\n styles.push(currentProp, styleVal);\n }\n return styles;\n}\nfunction hyphenate(value) {\n return value.replace(/[a-z][A-Z]/g, v => {\n return v.charAt(0) + '-' + v.charAt(1);\n }).toLowerCase();\n}\nfunction parseExtractedStyles(job) {\n const elements = new Map();\n for (const unit of job.units) {\n for (const op of unit.create) {\n if (isElementOrContainerOp(op)) {\n elements.set(op.xref, op);\n }\n }\n }\n for (const unit of job.units) {\n for (const op of unit.create) {\n if (op.kind === OpKind.ExtractedAttribute && op.bindingKind === BindingKind.Attribute && isStringLiteral(op.expression)) {\n const target = elements.get(op.target);\n if (target !== undefined && (target.kind === OpKind.Template || target.kind === OpKind.ConditionalCreate || target.kind === OpKind.ConditionalBranchCreate) && target.templateKind === TemplateKind.Structural) {\n continue;\n }\n if (op.name === 'style') {\n const parsedStyles = parse(op.expression.value);\n for (let i = 0; i < parsedStyles.length - 1; i += 2) {\n OpList.insertBefore(createExtractedAttributeOp(op.target, BindingKind.StyleProperty, null, parsedStyles[i], literal(parsedStyles[i + 1]), null, null, SecurityContext.STYLE), op);\n }\n OpList.remove(op);\n } else if (op.name === 'class') {\n const parsedClasses = op.expression.value.trim().split(/\\s+/g);\n for (const parsedClass of parsedClasses) {\n OpList.insertBefore(createExtractedAttributeOp(op.target, BindingKind.ClassName, null, parsedClass, null, null, null, SecurityContext.NONE), op);\n }\n OpList.remove(op);\n }\n }\n }\n }\n}\n\nfunction nameFunctionsAndVariables(job) {\n addNamesToView(job.root, job.componentName, {\n index: 0\n });\n}\nfunction addNamesToView(unit, baseName, state) {\n if (unit.fnName === null) {\n unit.fnName = unit.job.pool.uniqueName(sanitizeIdentifier(`${baseName}_${unit.job.fnSuffix}`), false);\n }\n const varNames = new Map();\n for (const op of unit.ops()) {\n switch (op.kind) {\n case OpKind.Property:\n case OpKind.DomProperty:\n if (op.bindingKind === BindingKind.LegacyAnimation) {\n op.name = '@' + op.name;\n }\n break;\n case OpKind.Animation:\n if (op.handlerFnName === null) {\n const animationKind = op.name.replace('.', '');\n op.handlerFnName = `${unit.fnName}_${animationKind}_cb`;\n op.handlerFnName = sanitizeIdentifier(op.handlerFnName);\n }\n break;\n case OpKind.AnimationListener:\n if (op.handlerFnName !== null) {\n break;\n }\n if (!op.hostListener && op.targetSlot.slot === null) {\n throw new Error(`Expected a slot to be assigned`);\n }\n const animationKind = op.name.replace('.', '');\n if (op.hostListener) {\n op.handlerFnName = `${baseName}_${animationKind}_HostBindingHandler`;\n } else {\n op.handlerFnName = `${unit.fnName}_${op.tag.replace('-', '_')}_${animationKind}_${op.targetSlot.slot}_listener`;\n }\n op.handlerFnName = sanitizeIdentifier(op.handlerFnName);\n break;\n case OpKind.Listener:\n if (op.handlerFnName !== null) {\n break;\n }\n if (!op.hostListener && op.targetSlot.slot === null) {\n throw new Error(`Expected a slot to be assigned`);\n }\n let animation = '';\n if (op.isLegacyAnimationListener) {\n op.name = `@${op.name}.${op.legacyAnimationPhase}`;\n animation = 'animation';\n }\n if (op.hostListener) {\n op.handlerFnName = `${baseName}_${animation}${op.name}_HostBindingHandler`;\n } else {\n op.handlerFnName = `${unit.fnName}_${op.tag.replace('-', '_')}_${animation}${op.name}_${op.targetSlot.slot}_listener`;\n }\n op.handlerFnName = sanitizeIdentifier(op.handlerFnName);\n break;\n case OpKind.TwoWayListener:\n if (op.handlerFnName !== null) {\n break;\n }\n if (op.targetSlot.slot === null) {\n throw new Error(`Expected a slot to be assigned`);\n }\n op.handlerFnName = sanitizeIdentifier(`${unit.fnName}_${op.tag.replace('-', '_')}_${op.name}_${op.targetSlot.slot}_listener`);\n break;\n case OpKind.Variable:\n varNames.set(op.xref, getVariableName(op.variable, state));\n break;\n case OpKind.RepeaterCreate:\n if (!(unit instanceof ViewCompilationUnit)) {\n throw new Error(`AssertionError: must be compiling a component`);\n }\n if (op.handle.slot === null) {\n throw new Error(`Expected slot to be assigned`);\n }\n if (op.emptyView !== null) {\n const emptyView = unit.job.views.get(op.emptyView);\n addNamesToView(emptyView, `${baseName}_${op.functionNameSuffix}Empty_${op.handle.slot + 2}`, state);\n }\n addNamesToView(unit.job.views.get(op.xref), `${baseName}_${op.functionNameSuffix}_${op.handle.slot + 1}`, state);\n break;\n case OpKind.Projection:\n if (!(unit instanceof ViewCompilationUnit)) {\n throw new Error(`AssertionError: must be compiling a component`);\n }\n if (op.handle.slot === null) {\n throw new Error(`Expected slot to be assigned`);\n }\n if (op.fallbackView !== null) {\n const fallbackView = unit.job.views.get(op.fallbackView);\n addNamesToView(fallbackView, `${baseName}_ProjectionFallback_${op.handle.slot}`, state);\n }\n break;\n case OpKind.ConditionalCreate:\n case OpKind.ConditionalBranchCreate:\n case OpKind.Template:\n if (!(unit instanceof ViewCompilationUnit)) {\n throw new Error(`AssertionError: must be compiling a component`);\n }\n const childView = unit.job.views.get(op.xref);\n if (op.handle.slot === null) {\n throw new Error(`Expected slot to be assigned`);\n }\n const suffix = op.functionNameSuffix.length === 0 ? '' : `_${op.functionNameSuffix}`;\n addNamesToView(childView, `${baseName}${suffix}_${op.handle.slot}`, state);\n break;\n case OpKind.StyleProp:\n op.name = stripImportant(normalizeStylePropName(op.name));\n break;\n case OpKind.ClassProp:\n op.name = stripImportant(op.name);\n break;\n }\n }\n for (const op of unit.ops()) {\n visitExpressionsInOp(op, expr => {\n if (!(expr instanceof ReadVariableExpr) || expr.name !== null) {\n return;\n }\n if (!varNames.has(expr.xref)) {\n throw new Error(`Variable ${expr.xref} not yet named`);\n }\n expr.name = varNames.get(expr.xref);\n });\n }\n}\nfunction getVariableName(variable, state) {\n if (variable.name === null) {\n switch (variable.kind) {\n case SemanticVariableKind.Context:\n variable.name = `ctx_r${state.index++}`;\n break;\n case SemanticVariableKind.Identifier:\n const compatPrefix = variable.identifier === CONTEXT_NAME ? 'i' : '';\n variable.name = `${variable.identifier}_${compatPrefix}r${++state.index}`;\n break;\n default:\n variable.name = `_r${++state.index}`;\n break;\n }\n }\n return variable.name;\n}\nfunction normalizeStylePropName(name) {\n return name.startsWith('--') ? name : hyphenate(name);\n}\nfunction stripImportant(name) {\n const importantIndex = name.indexOf('!important');\n if (importantIndex > -1) {\n return name.substring(0, importantIndex);\n }\n return name;\n}\n\nfunction mergeNextContextExpressions(job) {\n for (const unit of job.units) {\n for (const expr of unit.functions) {\n mergeNextContextsInOps(expr.ops);\n }\n for (const op of unit.create) {\n if (op.kind === OpKind.Listener || op.kind === OpKind.Animation || op.kind === OpKind.AnimationListener || op.kind === OpKind.TwoWayListener) {\n mergeNextContextsInOps(op.handlerOps);\n }\n }\n mergeNextContextsInOps(unit.update);\n }\n}\nfunction mergeNextContextsInOps(ops) {\n for (const op of ops) {\n if (op.kind !== OpKind.Statement || !(op.statement instanceof ExpressionStatement) || !(op.statement.expr instanceof NextContextExpr)) {\n continue;\n }\n const mergeSteps = op.statement.expr.steps;\n let tryToMerge = true;\n for (let candidate = op.next; candidate.kind !== OpKind.ListEnd && tryToMerge; candidate = candidate.next) {\n visitExpressionsInOp(candidate, (expr, flags) => {\n if (!isIrExpression(expr)) {\n return expr;\n }\n if (!tryToMerge) {\n return;\n }\n if (flags & VisitorContextFlag.InChildOperation) {\n return;\n }\n switch (expr.kind) {\n case ExpressionKind.NextContext:\n expr.steps += mergeSteps;\n OpList.remove(op);\n tryToMerge = false;\n break;\n case ExpressionKind.GetCurrentView:\n case ExpressionKind.Reference:\n case ExpressionKind.ContextLetReference:\n tryToMerge = false;\n break;\n }\n return;\n });\n }\n }\n}\n\nconst CONTAINER_TAG = 'ng-container';\nfunction generateNgContainerOps(job) {\n for (const unit of job.units) {\n const updatedElementXrefs = new Set();\n for (const op of unit.create) {\n if (op.kind === OpKind.ElementStart && op.tag === CONTAINER_TAG) {\n op.kind = OpKind.ContainerStart;\n updatedElementXrefs.add(op.xref);\n }\n if (op.kind === OpKind.ElementEnd && updatedElementXrefs.has(op.xref)) {\n op.kind = OpKind.ContainerEnd;\n }\n }\n }\n}\n\nfunction lookupElement(elements, xref) {\n const el = elements.get(xref);\n if (el === undefined) {\n throw new Error('All attributes should have an element-like target.');\n }\n return el;\n}\nfunction disableBindings$1(job) {\n const elements = new Map();\n for (const view of job.units) {\n for (const op of view.create) {\n if (!isElementOrContainerOp(op)) {\n continue;\n }\n elements.set(op.xref, op);\n }\n }\n for (const unit of job.units) {\n for (const op of unit.create) {\n if ((op.kind === OpKind.ElementStart || op.kind === OpKind.ContainerStart) && op.nonBindable) {\n OpList.insertAfter(createDisableBindingsOp(op.xref), op);\n }\n if ((op.kind === OpKind.ElementEnd || op.kind === OpKind.ContainerEnd) && lookupElement(elements, op.xref).nonBindable) {\n OpList.insertBefore(createEnableBindingsOp(op.xref), op);\n }\n }\n }\n}\n\nfunction kindTest(kind) {\n return op => op.kind === kind;\n}\nfunction kindWithInterpolationTest(kind, interpolation) {\n return op => {\n return op.kind === kind && interpolation === op.expression instanceof Interpolation;\n };\n}\nfunction basicListenerKindTest(op) {\n return op.kind === OpKind.Listener && !(op.hostListener && op.isLegacyAnimationListener) || op.kind === OpKind.TwoWayListener || op.kind === OpKind.Animation || op.kind === OpKind.AnimationListener;\n}\nfunction nonInterpolationPropertyKindTest(op) {\n return (op.kind === OpKind.Property || op.kind === OpKind.TwoWayProperty) && !(op.expression instanceof Interpolation);\n}\nconst CREATE_ORDERING = [{\n test: op => op.kind === OpKind.Listener && op.hostListener && op.isLegacyAnimationListener\n}, {\n test: basicListenerKindTest\n}];\nconst UPDATE_ORDERING = [{\n test: kindTest(OpKind.StyleMap),\n transform: keepLast\n}, {\n test: kindTest(OpKind.ClassMap),\n transform: keepLast\n}, {\n test: kindTest(OpKind.StyleProp)\n}, {\n test: kindTest(OpKind.ClassProp)\n}, {\n test: kindWithInterpolationTest(OpKind.Attribute, true)\n}, {\n test: kindWithInterpolationTest(OpKind.Property, true)\n}, {\n test: nonInterpolationPropertyKindTest\n}, {\n test: kindWithInterpolationTest(OpKind.Attribute, false)\n}, {\n test: kindTest(OpKind.Control)\n}];\nconst UPDATE_HOST_ORDERING = [{\n test: kindWithInterpolationTest(OpKind.DomProperty, true)\n}, {\n test: kindWithInterpolationTest(OpKind.DomProperty, false)\n}, {\n test: kindTest(OpKind.Attribute)\n}, {\n test: kindTest(OpKind.StyleMap),\n transform: keepLast\n}, {\n test: kindTest(OpKind.ClassMap),\n transform: keepLast\n}, {\n test: kindTest(OpKind.StyleProp)\n}, {\n test: kindTest(OpKind.ClassProp)\n}];\nconst handledOpKinds = new Set([OpKind.Listener, OpKind.TwoWayListener, OpKind.AnimationListener, OpKind.StyleMap, OpKind.ClassMap, OpKind.StyleProp, OpKind.ClassProp, OpKind.Property, OpKind.TwoWayProperty, OpKind.DomProperty, OpKind.Attribute, OpKind.Animation, OpKind.Control]);\nfunction orderOps(job) {\n for (const unit of job.units) {\n orderWithin(unit.create, CREATE_ORDERING);\n const ordering = unit.job.kind === CompilationJobKind.Host ? UPDATE_HOST_ORDERING : UPDATE_ORDERING;\n orderWithin(unit.update, ordering);\n }\n}\nfunction orderWithin(opList, ordering) {\n let opsToOrder = [];\n let firstTargetInGroup = null;\n for (const op of opList) {\n const currentTarget = hasDependsOnSlotContextTrait(op) ? op.target : null;\n if (!handledOpKinds.has(op.kind) || currentTarget !== firstTargetInGroup && firstTargetInGroup !== null && currentTarget !== null) {\n OpList.insertBefore(reorder(opsToOrder, ordering), op);\n opsToOrder = [];\n firstTargetInGroup = null;\n }\n if (handledOpKinds.has(op.kind)) {\n opsToOrder.push(op);\n OpList.remove(op);\n firstTargetInGroup = currentTarget ?? firstTargetInGroup;\n }\n }\n opList.push(reorder(opsToOrder, ordering));\n}\nfunction reorder(ops, ordering) {\n const groups = Array.from(ordering, () => new Array());\n for (const op of ops) {\n const groupIndex = ordering.findIndex(o => o.test(op));\n groups[groupIndex].push(op);\n }\n return groups.flatMap((group, i) => {\n const transform = ordering[i].transform;\n return transform ? transform(group) : group;\n });\n}\nfunction keepLast(ops) {\n return ops.slice(ops.length - 1);\n}\n\nfunction removeContentSelectors(job) {\n for (const unit of job.units) {\n const elements = createOpXrefMap(unit);\n for (const op of unit.ops()) {\n switch (op.kind) {\n case OpKind.Binding:\n const target = lookupInXrefMap(elements, op.target);\n if (isSelectAttribute(op.name) && target.kind === OpKind.Projection) {\n OpList.remove(op);\n }\n break;\n }\n }\n }\n}\nfunction isSelectAttribute(name) {\n return name.toLowerCase() === 'select';\n}\nfunction lookupInXrefMap(map, xref) {\n const el = map.get(xref);\n if (el === undefined) {\n throw new Error('All attributes should have an slottable target.');\n }\n return el;\n}\n\nfunction createPipes(job) {\n for (const unit of job.units) {\n processPipeBindingsInView(unit);\n }\n}\nfunction processPipeBindingsInView(unit) {\n for (const updateOp of unit.update) {\n visitExpressionsInOp(updateOp, (expr, flags) => {\n if (!isIrExpression(expr)) {\n return;\n }\n if (expr.kind !== ExpressionKind.PipeBinding) {\n return;\n }\n if (flags & VisitorContextFlag.InChildOperation) {\n throw new Error(`AssertionError: pipe bindings should not appear in child expressions`);\n }\n const slotHandle = updateOp.target;\n if (slotHandle == undefined) {\n throw new Error(`AssertionError: expected slot handle to be assigned for pipe creation`);\n }\n addPipeToCreationBlock(unit, updateOp.target, expr);\n });\n }\n}\nfunction addPipeToCreationBlock(unit, afterTargetXref, binding) {\n for (let op = unit.create.head.next; op.kind !== OpKind.ListEnd; op = op.next) {\n if (!hasConsumesSlotTrait(op)) {\n continue;\n }\n if (op.xref !== afterTargetXref) {\n continue;\n }\n while (op.next.kind === OpKind.Pipe) {\n op = op.next;\n }\n const pipe = createPipeOp(binding.target, binding.targetSlot, binding.name);\n OpList.insertBefore(pipe, op.next);\n return;\n }\n throw new Error(`AssertionError: unable to find insertion point for pipe ${binding.name}`);\n}\n\nfunction createVariadicPipes(job) {\n for (const unit of job.units) {\n for (const op of unit.update) {\n transformExpressionsInOp(op, expr => {\n if (!(expr instanceof PipeBindingExpr)) {\n return expr;\n }\n if (expr.args.length <= 4) {\n return expr;\n }\n return new PipeBindingVariadicExpr(expr.target, expr.targetSlot, expr.name, literalArr(expr.args), expr.args.length);\n }, VisitorContextFlag.None);\n }\n }\n}\n\nfunction propagateI18nBlocks(job) {\n propagateI18nBlocksToTemplates(job.root, 0);\n}\nfunction propagateI18nBlocksToTemplates(unit, subTemplateIndex) {\n let i18nBlock = null;\n for (const op of unit.create) {\n switch (op.kind) {\n case OpKind.I18nStart:\n op.subTemplateIndex = subTemplateIndex === 0 ? null : subTemplateIndex;\n i18nBlock = op;\n break;\n case OpKind.I18nEnd:\n if (i18nBlock.subTemplateIndex === null) {\n subTemplateIndex = 0;\n }\n i18nBlock = null;\n break;\n case OpKind.ConditionalCreate:\n case OpKind.ConditionalBranchCreate:\n case OpKind.Template:\n subTemplateIndex = propagateI18nBlocksForView(unit.job.views.get(op.xref), i18nBlock, op.i18nPlaceholder, subTemplateIndex);\n break;\n case OpKind.RepeaterCreate:\n const forView = unit.job.views.get(op.xref);\n subTemplateIndex = propagateI18nBlocksForView(forView, i18nBlock, op.i18nPlaceholder, subTemplateIndex);\n if (op.emptyView !== null) {\n subTemplateIndex = propagateI18nBlocksForView(unit.job.views.get(op.emptyView), i18nBlock, op.emptyI18nPlaceholder, subTemplateIndex);\n }\n break;\n case OpKind.Projection:\n if (op.fallbackView !== null) {\n subTemplateIndex = propagateI18nBlocksForView(unit.job.views.get(op.fallbackView), i18nBlock, op.fallbackViewI18nPlaceholder, subTemplateIndex);\n }\n break;\n }\n }\n return subTemplateIndex;\n}\nfunction propagateI18nBlocksForView(view, i18nBlock, i18nPlaceholder, subTemplateIndex) {\n if (i18nPlaceholder !== undefined) {\n if (i18nBlock === null) {\n throw Error('Expected template with i18n placeholder to be in an i18n block.');\n }\n subTemplateIndex++;\n wrapTemplateWithI18n(view, i18nBlock);\n }\n return propagateI18nBlocksToTemplates(view, subTemplateIndex);\n}\nfunction wrapTemplateWithI18n(unit, parentI18n) {\n if (unit.create.head.next?.kind !== OpKind.I18nStart) {\n const id = unit.job.allocateXrefId();\n OpList.insertAfter(createI18nStartOp(id, parentI18n.message, parentI18n.root, null), unit.create.head);\n OpList.insertBefore(createI18nEndOp(id, null), unit.create.tail);\n }\n}\n\nfunction extractPureFunctions(job) {\n for (const view of job.units) {\n for (const op of view.ops()) {\n visitExpressionsInOp(op, expr => {\n if (!(expr instanceof PureFunctionExpr) || expr.body === null) {\n return;\n }\n const constantDef = new PureFunctionConstant(expr.args.length);\n expr.fn = job.pool.getSharedConstant(constantDef, expr.body);\n expr.body = null;\n });\n }\n }\n}\nclass PureFunctionConstant extends GenericKeyFn {\n numArgs;\n constructor(numArgs) {\n super();\n this.numArgs = numArgs;\n }\n keyOf(expr) {\n if (expr instanceof PureFunctionParameterExpr) {\n return `param(${expr.index})`;\n } else {\n return super.keyOf(expr);\n }\n }\n toSharedConstantDeclaration(declName, keyExpr) {\n const fnParams = [];\n for (let idx = 0; idx < this.numArgs; idx++) {\n fnParams.push(new FnParam('a' + idx, DYNAMIC_TYPE));\n }\n const returnExpr = transformExpressionsInExpression(keyExpr, expr => {\n if (!(expr instanceof PureFunctionParameterExpr)) {\n return expr;\n }\n return variable('a' + expr.index);\n }, VisitorContextFlag.None);\n return new DeclareVarStmt(declName, new ArrowFunctionExpr$1(fnParams, returnExpr), undefined, StmtModifier.Final);\n }\n}\n\nfunction generatePureLiteralStructures(job) {\n for (const unit of job.units) {\n for (const op of unit.update) {\n transformExpressionsInOp(op, (expr, flags) => {\n if (flags & VisitorContextFlag.InChildOperation) {\n return expr;\n }\n if (expr instanceof LiteralArrayExpr) {\n return transformLiteralArray(expr);\n } else if (expr instanceof LiteralMapExpr) {\n return transformLiteralMap(expr);\n }\n return expr;\n }, VisitorContextFlag.None);\n }\n }\n}\nfunction transformLiteralArray(expr) {\n const derivedEntries = [];\n const nonConstantArgs = [];\n for (const entry of expr.entries) {\n if (entry instanceof SpreadElementExpr) {\n if (entry.expression.isConstant()) {\n derivedEntries.push(entry);\n } else {\n const idx = nonConstantArgs.length;\n nonConstantArgs.push(entry.expression);\n derivedEntries.push(new SpreadElementExpr(new PureFunctionParameterExpr(idx)));\n }\n continue;\n }\n if (entry.isConstant()) {\n derivedEntries.push(entry);\n } else {\n const idx = nonConstantArgs.length;\n nonConstantArgs.push(entry);\n derivedEntries.push(new PureFunctionParameterExpr(idx));\n }\n }\n return new PureFunctionExpr(literalArr(derivedEntries), nonConstantArgs);\n}\nfunction transformLiteralMap(expr) {\n let derivedEntries = [];\n const nonConstantArgs = [];\n for (const entry of expr.entries) {\n if (entry instanceof LiteralMapSpreadAssignment) {\n if (entry.expression.isConstant()) {\n derivedEntries.push(entry);\n } else {\n const idx = nonConstantArgs.length;\n nonConstantArgs.push(entry.expression);\n derivedEntries.push(new LiteralMapSpreadAssignment(new PureFunctionParameterExpr(idx)));\n }\n continue;\n }\n if (entry.value.isConstant()) {\n derivedEntries.push(entry);\n } else {\n const idx = nonConstantArgs.length;\n nonConstantArgs.push(entry.value);\n derivedEntries.push(new LiteralMapPropertyAssignment(entry.key, new PureFunctionParameterExpr(idx), entry.quoted));\n }\n }\n return new PureFunctionExpr(new LiteralMapExpr(derivedEntries), nonConstantArgs);\n}\n\nfunction optimizeRegularExpressions(job) {\n for (const view of job.units) {\n for (const op of view.ops()) {\n transformExpressionsInOp(op, expr => {\n if (expr instanceof RegularExpressionLiteralExpr && (expr.flags === null || !expr.flags.includes('g'))) {\n return job.pool.getSharedConstant(new RegularExpressionConstant(), expr);\n }\n return expr;\n }, VisitorContextFlag.None);\n }\n }\n}\nclass RegularExpressionConstant extends GenericKeyFn {\n toSharedConstantDeclaration(declName, keyExpr) {\n return new DeclareVarStmt(declName, keyExpr, undefined, StmtModifier.Final);\n }\n}\n\nfunction element(slot, tag, constIndex, localRefIndex, sourceSpan) {\n return elementOrContainerBase(Identifiers.element, slot, tag, constIndex, localRefIndex, sourceSpan);\n}\nfunction elementStart(slot, tag, constIndex, localRefIndex, sourceSpan) {\n return elementOrContainerBase(Identifiers.elementStart, slot, tag, constIndex, localRefIndex, sourceSpan);\n}\nfunction elementOrContainerBase(instruction, slot, tag, constIndex, localRefIndex, sourceSpan) {\n const args = [literal(slot)];\n if (tag !== null) {\n args.push(literal(tag));\n }\n if (localRefIndex !== null) {\n args.push(literal(constIndex), literal(localRefIndex));\n } else if (constIndex !== null) {\n args.push(literal(constIndex));\n }\n return call(instruction, args, sourceSpan);\n}\nfunction templateBase(instruction, slot, templateFnRef, decls, vars, tag, constIndex, localRefs, sourceSpan) {\n const args = [literal(slot), templateFnRef, literal(decls), literal(vars), literal(tag), literal(constIndex)];\n if (localRefs !== null) {\n args.push(literal(localRefs));\n args.push(importExpr(Identifiers.templateRefExtractor));\n }\n while (args[args.length - 1].isEquivalent(NULL_EXPR)) {\n args.pop();\n }\n return call(instruction, args, sourceSpan);\n}\nfunction propertyBase(instruction, name, expression, sanitizer, sourceSpan) {\n const args = [literal(name)];\n if (expression instanceof Interpolation) {\n args.push(interpolationToExpression(expression, sourceSpan));\n } else {\n args.push(expression);\n }\n if (sanitizer !== null) {\n args.push(sanitizer);\n }\n return call(instruction, args, sourceSpan);\n}\nfunction elementEnd(sourceSpan) {\n return call(Identifiers.elementEnd, [], sourceSpan);\n}\nfunction elementContainerStart(slot, constIndex, localRefIndex, sourceSpan) {\n return elementOrContainerBase(Identifiers.elementContainerStart, slot, null, constIndex, localRefIndex, sourceSpan);\n}\nfunction elementContainer(slot, constIndex, localRefIndex, sourceSpan) {\n return elementOrContainerBase(Identifiers.elementContainer, slot, null, constIndex, localRefIndex, sourceSpan);\n}\nfunction elementContainerEnd() {\n return call(Identifiers.elementContainerEnd, [], null);\n}\nfunction template(slot, templateFnRef, decls, vars, tag, constIndex, localRefs, sourceSpan) {\n return templateBase(Identifiers.templateCreate, slot, templateFnRef, decls, vars, tag, constIndex, localRefs, sourceSpan);\n}\nfunction disableBindings() {\n return call(Identifiers.disableBindings, [], null);\n}\nfunction enableBindings() {\n return call(Identifiers.enableBindings, [], null);\n}\nfunction listener(name, handlerFn, eventTargetResolver, syntheticHost, sourceSpan) {\n const args = [literal(name), handlerFn];\n if (eventTargetResolver !== null) {\n args.push(importExpr(eventTargetResolver));\n }\n return call(syntheticHost ? Identifiers.syntheticHostListener : Identifiers.listener, args, sourceSpan);\n}\nfunction twoWayBindingSet(target, value) {\n return importExpr(Identifiers.twoWayBindingSet).callFn([target, value]);\n}\nfunction twoWayListener(name, handlerFn, sourceSpan) {\n return call(Identifiers.twoWayListener, [literal(name), handlerFn], sourceSpan);\n}\nfunction pipe(slot, name) {\n return call(Identifiers.pipe, [literal(slot), literal(name)], null);\n}\nfunction namespaceHTML() {\n return call(Identifiers.namespaceHTML, [], null);\n}\nfunction namespaceSVG() {\n return call(Identifiers.namespaceSVG, [], null);\n}\nfunction namespaceMath() {\n return call(Identifiers.namespaceMathML, [], null);\n}\nfunction advance(delta, sourceSpan) {\n return call(Identifiers.advance, delta > 1 ? [literal(delta)] : [], sourceSpan);\n}\nfunction reference(slot) {\n return importExpr(Identifiers.reference).callFn([literal(slot)]);\n}\nfunction nextContext(steps) {\n return importExpr(Identifiers.nextContext).callFn(steps === 1 ? [] : [literal(steps)]);\n}\nfunction getCurrentView() {\n return importExpr(Identifiers.getCurrentView).callFn([]);\n}\nfunction restoreView(savedView) {\n return importExpr(Identifiers.restoreView).callFn([savedView]);\n}\nfunction resetView(returnValue) {\n return importExpr(Identifiers.resetView).callFn([returnValue]);\n}\nfunction text(slot, initialValue, sourceSpan) {\n const args = [literal(slot, null)];\n if (initialValue !== '') {\n args.push(literal(initialValue));\n }\n return call(Identifiers.text, args, sourceSpan);\n}\nfunction defer(selfSlot, primarySlot, dependencyResolverFn, loadingSlot, placeholderSlot, errorSlot, loadingConfig, placeholderConfig, enableTimerScheduling, sourceSpan, flags) {\n const args = [literal(selfSlot), literal(primarySlot), dependencyResolverFn ?? literal(null), literal(loadingSlot), literal(placeholderSlot), literal(errorSlot), loadingConfig ?? literal(null), placeholderConfig ?? literal(null), enableTimerScheduling ? importExpr(Identifiers.deferEnableTimerScheduling) : literal(null), literal(flags)];\n let expr;\n while ((expr = args[args.length - 1]) !== null && expr instanceof LiteralExpr && expr.value === null) {\n args.pop();\n }\n return call(Identifiers.defer, args, sourceSpan);\n}\nconst deferTriggerToR3TriggerInstructionsMap = new Map([[DeferTriggerKind.Idle, {\n [\"none\"]: Identifiers.deferOnIdle,\n [\"prefetch\"]: Identifiers.deferPrefetchOnIdle,\n [\"hydrate\"]: Identifiers.deferHydrateOnIdle\n}], [DeferTriggerKind.Immediate, {\n [\"none\"]: Identifiers.deferOnImmediate,\n [\"prefetch\"]: Identifiers.deferPrefetchOnImmediate,\n [\"hydrate\"]: Identifiers.deferHydrateOnImmediate\n}], [DeferTriggerKind.Timer, {\n [\"none\"]: Identifiers.deferOnTimer,\n [\"prefetch\"]: Identifiers.deferPrefetchOnTimer,\n [\"hydrate\"]: Identifiers.deferHydrateOnTimer\n}], [DeferTriggerKind.Hover, {\n [\"none\"]: Identifiers.deferOnHover,\n [\"prefetch\"]: Identifiers.deferPrefetchOnHover,\n [\"hydrate\"]: Identifiers.deferHydrateOnHover\n}], [DeferTriggerKind.Interaction, {\n [\"none\"]: Identifiers.deferOnInteraction,\n [\"prefetch\"]: Identifiers.deferPrefetchOnInteraction,\n [\"hydrate\"]: Identifiers.deferHydrateOnInteraction\n}], [DeferTriggerKind.Viewport, {\n [\"none\"]: Identifiers.deferOnViewport,\n [\"prefetch\"]: Identifiers.deferPrefetchOnViewport,\n [\"hydrate\"]: Identifiers.deferHydrateOnViewport\n}], [DeferTriggerKind.Never, {\n [\"none\"]: Identifiers.deferHydrateNever,\n [\"prefetch\"]: Identifiers.deferHydrateNever,\n [\"hydrate\"]: Identifiers.deferHydrateNever\n}]]);\nfunction deferOn(trigger, args, modifier, sourceSpan) {\n const instructionToCall = deferTriggerToR3TriggerInstructionsMap.get(trigger)?.[modifier];\n if (instructionToCall === undefined) {\n throw new Error(`Unable to determine instruction for trigger ${trigger}`);\n }\n return call(instructionToCall, args, sourceSpan);\n}\nfunction projectionDef(def) {\n return call(Identifiers.projectionDef, def ? [def] : [], null);\n}\nfunction projection(slot, projectionSlotIndex, attributes, fallbackFnName, fallbackDecls, fallbackVars, sourceSpan) {\n const args = [literal(slot)];\n if (projectionSlotIndex !== 0 || attributes !== null || fallbackFnName !== null) {\n args.push(literal(projectionSlotIndex));\n if (attributes !== null) {\n args.push(attributes);\n }\n if (fallbackFnName !== null) {\n if (attributes === null) {\n args.push(literal(null));\n }\n args.push(variable(fallbackFnName), literal(fallbackDecls), literal(fallbackVars));\n }\n }\n return call(Identifiers.projection, args, sourceSpan);\n}\nfunction i18nStart(slot, constIndex, subTemplateIndex, sourceSpan) {\n const args = [literal(slot), literal(constIndex)];\n if (subTemplateIndex !== null) {\n args.push(literal(subTemplateIndex));\n }\n return call(Identifiers.i18nStart, args, sourceSpan);\n}\nfunction conditionalCreate(slot, templateFnRef, decls, vars, tag, constIndex, localRefs, sourceSpan) {\n const args = [literal(slot), templateFnRef, literal(decls), literal(vars), literal(tag), literal(constIndex)];\n if (localRefs !== null) {\n args.push(literal(localRefs));\n args.push(importExpr(Identifiers.templateRefExtractor));\n }\n while (args[args.length - 1].isEquivalent(NULL_EXPR)) {\n args.pop();\n }\n return call(Identifiers.conditionalCreate, args, sourceSpan);\n}\nfunction conditionalBranchCreate(slot, templateFnRef, decls, vars, tag, constIndex, localRefs, sourceSpan) {\n const args = [literal(slot), templateFnRef, literal(decls), literal(vars), literal(tag), literal(constIndex)];\n if (localRefs !== null) {\n args.push(literal(localRefs));\n args.push(importExpr(Identifiers.templateRefExtractor));\n }\n while (args[args.length - 1].isEquivalent(NULL_EXPR)) {\n args.pop();\n }\n return call(Identifiers.conditionalBranchCreate, args, sourceSpan);\n}\nfunction repeaterCreate(slot, viewFnName, decls, vars, tag, constIndex, trackByFn, trackByUsesComponentInstance, emptyViewFnName, emptyDecls, emptyVars, emptyTag, emptyConstIndex, sourceSpan) {\n const args = [literal(slot), variable(viewFnName), literal(decls), literal(vars), literal(tag), literal(constIndex), trackByFn];\n if (trackByUsesComponentInstance || emptyViewFnName !== null) {\n args.push(literal(trackByUsesComponentInstance));\n if (emptyViewFnName !== null) {\n args.push(variable(emptyViewFnName), literal(emptyDecls), literal(emptyVars));\n if (emptyTag !== null || emptyConstIndex !== null) {\n args.push(literal(emptyTag));\n }\n if (emptyConstIndex !== null) {\n args.push(literal(emptyConstIndex));\n }\n }\n }\n return call(Identifiers.repeaterCreate, args, sourceSpan);\n}\nfunction repeater(collection, sourceSpan) {\n return call(Identifiers.repeater, [collection], sourceSpan);\n}\nfunction deferWhen(modifier, expr, sourceSpan) {\n if (modifier === \"prefetch\") {\n return call(Identifiers.deferPrefetchWhen, [expr], sourceSpan);\n } else if (modifier === \"hydrate\") {\n return call(Identifiers.deferHydrateWhen, [expr], sourceSpan);\n }\n return call(Identifiers.deferWhen, [expr], sourceSpan);\n}\nfunction declareLet(slot, sourceSpan) {\n return call(Identifiers.declareLet, [literal(slot)], sourceSpan);\n}\nfunction storeLet(value, sourceSpan) {\n return importExpr(Identifiers.storeLet).callFn([value], sourceSpan);\n}\nfunction readContextLet(slot) {\n return importExpr(Identifiers.readContextLet).callFn([literal(slot)]);\n}\nfunction i18n(slot, constIndex, subTemplateIndex, sourceSpan) {\n const args = [literal(slot), literal(constIndex)];\n if (subTemplateIndex) {\n args.push(literal(subTemplateIndex));\n }\n return call(Identifiers.i18n, args, sourceSpan);\n}\nfunction i18nEnd(endSourceSpan) {\n return call(Identifiers.i18nEnd, [], endSourceSpan);\n}\nfunction i18nAttributes(slot, i18nAttributesConfig) {\n const args = [literal(slot), literal(i18nAttributesConfig)];\n return call(Identifiers.i18nAttributes, args, null);\n}\nfunction ariaProperty(name, expression, sourceSpan) {\n return propertyBase(Identifiers.ariaProperty, name, expression, null, sourceSpan);\n}\nfunction property(name, expression, sanitizer, sourceSpan) {\n return propertyBase(Identifiers.property, name, expression, sanitizer, sourceSpan);\n}\nfunction control(sourceSpan) {\n return call(Identifiers.control, [], sourceSpan);\n}\nfunction controlCreate(sourceSpan) {\n return call(Identifiers.controlCreate, [], sourceSpan);\n}\nfunction twoWayProperty(name, expression, sanitizer, sourceSpan) {\n const args = [literal(name), expression];\n if (sanitizer !== null) {\n args.push(sanitizer);\n }\n return call(Identifiers.twoWayProperty, args, sourceSpan);\n}\nfunction attribute(name, expression, sanitizer, namespace, sourceSpan) {\n const args = [literal(name)];\n if (expression instanceof Interpolation) {\n args.push(interpolationToExpression(expression, sourceSpan));\n } else {\n args.push(expression);\n }\n if (sanitizer !== null || namespace !== null) {\n args.push(sanitizer ?? literal(null));\n }\n if (namespace !== null) {\n args.push(literal(namespace));\n }\n return call(Identifiers.attribute, args, null);\n}\nfunction styleProp(name, expression, unit, sourceSpan) {\n const args = [literal(name)];\n if (expression instanceof Interpolation) {\n args.push(interpolationToExpression(expression, sourceSpan));\n } else {\n args.push(expression);\n }\n if (unit !== null) {\n args.push(literal(unit));\n }\n return call(Identifiers.styleProp, args, sourceSpan);\n}\nfunction classProp(name, expression, sourceSpan) {\n return call(Identifiers.classProp, [literal(name), expression], sourceSpan);\n}\nfunction styleMap(expression, sourceSpan) {\n const value = expression instanceof Interpolation ? interpolationToExpression(expression, sourceSpan) : expression;\n return call(Identifiers.styleMap, [value], sourceSpan);\n}\nfunction classMap(expression, sourceSpan) {\n const value = expression instanceof Interpolation ? interpolationToExpression(expression, sourceSpan) : expression;\n return call(Identifiers.classMap, [value], sourceSpan);\n}\nfunction domElement(slot, tag, constIndex, localRefIndex, sourceSpan) {\n return elementOrContainerBase(Identifiers.domElement, slot, tag, constIndex, localRefIndex, sourceSpan);\n}\nfunction domElementStart(slot, tag, constIndex, localRefIndex, sourceSpan) {\n return elementOrContainerBase(Identifiers.domElementStart, slot, tag, constIndex, localRefIndex, sourceSpan);\n}\nfunction domElementEnd(sourceSpan) {\n return call(Identifiers.domElementEnd, [], sourceSpan);\n}\nfunction domElementContainerStart(slot, constIndex, localRefIndex, sourceSpan) {\n return elementOrContainerBase(Identifiers.domElementContainerStart, slot, null, constIndex, localRefIndex, sourceSpan);\n}\nfunction domElementContainer(slot, constIndex, localRefIndex, sourceSpan) {\n return elementOrContainerBase(Identifiers.domElementContainer, slot, null, constIndex, localRefIndex, sourceSpan);\n}\nfunction domElementContainerEnd() {\n return call(Identifiers.domElementContainerEnd, [], null);\n}\nfunction domListener(name, handlerFn, eventTargetResolver, sourceSpan) {\n const args = [literal(name), handlerFn];\n if (eventTargetResolver !== null) {\n args.push(importExpr(eventTargetResolver));\n }\n return call(Identifiers.domListener, args, sourceSpan);\n}\nfunction domTemplate(slot, templateFnRef, decls, vars, tag, constIndex, localRefs, sourceSpan) {\n return templateBase(Identifiers.domTemplate, slot, templateFnRef, decls, vars, tag, constIndex, localRefs, sourceSpan);\n}\nconst PIPE_BINDINGS = [Identifiers.pipeBind1, Identifiers.pipeBind2, Identifiers.pipeBind3, Identifiers.pipeBind4];\nfunction pipeBind(slot, varOffset, args) {\n if (args.length < 1 || args.length > PIPE_BINDINGS.length) {\n throw new Error(`pipeBind() argument count out of bounds`);\n }\n const instruction = PIPE_BINDINGS[args.length - 1];\n return importExpr(instruction).callFn([literal(slot), literal(varOffset), ...args]);\n}\nfunction pipeBindV(slot, varOffset, args) {\n return importExpr(Identifiers.pipeBindV).callFn([literal(slot), literal(varOffset), args]);\n}\nfunction textInterpolate(strings, expressions, sourceSpan) {\n const interpolationArgs = collateInterpolationArgs(strings, expressions);\n return callVariadicInstruction(TEXT_INTERPOLATE_CONFIG, [], interpolationArgs, sourceSpan);\n}\nfunction i18nExp(expr, sourceSpan) {\n return call(Identifiers.i18nExp, [expr], sourceSpan);\n}\nfunction i18nApply(slot, sourceSpan) {\n return call(Identifiers.i18nApply, [literal(slot)], sourceSpan);\n}\nfunction domProperty(name, expression, sanitizer, sourceSpan) {\n return propertyBase(Identifiers.domProperty, name, expression, sanitizer, sourceSpan);\n}\nfunction animation(animationKind, handlerFn, sanitizer, sourceSpan) {\n const args = [handlerFn];\n if (sanitizer !== null) {\n args.push(sanitizer);\n }\n const identifier = animationKind === \"enter\" ? Identifiers.animationEnter : Identifiers.animationLeave;\n return call(identifier, args, sourceSpan);\n}\nfunction animationString(animationKind, expression, sanitizer, sourceSpan) {\n const value = expression instanceof Interpolation ? interpolationToExpression(expression, sourceSpan) : expression;\n const args = [value];\n if (sanitizer !== null) {\n args.push(sanitizer);\n }\n const identifier = animationKind === \"enter\" ? Identifiers.animationEnter : Identifiers.animationLeave;\n return call(identifier, args, sourceSpan);\n}\nfunction animationListener(animationKind, handlerFn, eventTargetResolver, sourceSpan) {\n const args = [handlerFn];\n const identifier = animationKind === \"enter\" ? Identifiers.animationEnterListener : Identifiers.animationLeaveListener;\n return call(identifier, args, sourceSpan);\n}\nfunction syntheticHostProperty(name, expression, sourceSpan) {\n return call(Identifiers.syntheticHostProperty, [literal(name), expression], sourceSpan);\n}\nfunction pureFunction(varOffset, fn, args) {\n return callVariadicInstructionExpr(PURE_FUNCTION_CONFIG, [literal(varOffset), fn], args, null);\n}\nfunction attachSourceLocation(templatePath, locations) {\n return call(Identifiers.attachSourceLocations, [literal(templatePath), locations], null);\n}\nfunction arrowFunction(slotOffset, factory, contextRef) {\n return importExpr(Identifiers.arrowFunction).callFn([literal(slotOffset), factory, contextRef]);\n}\nfunction collateInterpolationArgs(strings, expressions) {\n if (strings.length < 1 || expressions.length !== strings.length - 1) {\n throw new Error(`AssertionError: expected specific shape of args for strings/expressions in interpolation`);\n }\n const interpolationArgs = [];\n if (expressions.length === 1 && strings[0] === '' && strings[1] === '') {\n interpolationArgs.push(expressions[0]);\n } else {\n let idx;\n for (idx = 0; idx < expressions.length; idx++) {\n interpolationArgs.push(literal(strings[idx]), expressions[idx]);\n }\n interpolationArgs.push(literal(strings[idx]));\n }\n return interpolationArgs;\n}\nfunction interpolationToExpression(interpolation, sourceSpan) {\n const interpolationArgs = collateInterpolationArgs(interpolation.strings, interpolation.expressions);\n return callVariadicInstructionExpr(VALUE_INTERPOLATE_CONFIG, [], interpolationArgs, sourceSpan);\n}\nfunction call(instruction, args, sourceSpan) {\n const expr = importExpr(instruction).callFn(args, sourceSpan);\n return createStatementOp(new ExpressionStatement(expr, sourceSpan));\n}\nfunction conditional(condition, contextValue, sourceSpan) {\n const args = [condition];\n if (contextValue !== null) {\n args.push(contextValue);\n }\n return call(Identifiers.conditional, args, sourceSpan);\n}\nconst TEXT_INTERPOLATE_CONFIG = {\n constant: [Identifiers.textInterpolate, Identifiers.textInterpolate1, Identifiers.textInterpolate2, Identifiers.textInterpolate3, Identifiers.textInterpolate4, Identifiers.textInterpolate5, Identifiers.textInterpolate6, Identifiers.textInterpolate7, Identifiers.textInterpolate8],\n variable: Identifiers.textInterpolateV,\n mapping: n => {\n if (n % 2 === 0) {\n throw new Error(`Expected odd number of arguments`);\n }\n return (n - 1) / 2;\n }\n};\nconst VALUE_INTERPOLATE_CONFIG = {\n constant: [Identifiers.interpolate, Identifiers.interpolate1, Identifiers.interpolate2, Identifiers.interpolate3, Identifiers.interpolate4, Identifiers.interpolate5, Identifiers.interpolate6, Identifiers.interpolate7, Identifiers.interpolate8],\n variable: Identifiers.interpolateV,\n mapping: n => {\n if (n % 2 === 0) {\n throw new Error(`Expected odd number of arguments`);\n }\n return (n - 1) / 2;\n }\n};\nconst PURE_FUNCTION_CONFIG = {\n constant: [Identifiers.pureFunction0, Identifiers.pureFunction1, Identifiers.pureFunction2, Identifiers.pureFunction3, Identifiers.pureFunction4, Identifiers.pureFunction5, Identifiers.pureFunction6, Identifiers.pureFunction7, Identifiers.pureFunction8],\n variable: Identifiers.pureFunctionV,\n mapping: n => n\n};\nfunction callVariadicInstructionExpr(config, baseArgs, interpolationArgs, sourceSpan) {\n const n = config.mapping(interpolationArgs.length);\n const lastInterpolationArg = interpolationArgs.at(-1);\n if (interpolationArgs.length > 1 && lastInterpolationArg instanceof LiteralExpr && lastInterpolationArg.value === '') {\n interpolationArgs.pop();\n }\n if (n < config.constant.length) {\n return importExpr(config.constant[n]).callFn([...baseArgs, ...interpolationArgs], sourceSpan);\n } else if (config.variable !== null) {\n return importExpr(config.variable).callFn([...baseArgs, literalArr(interpolationArgs)], sourceSpan);\n } else {\n throw new Error(`AssertionError: unable to call variadic function`);\n }\n}\nfunction callVariadicInstruction(config, baseArgs, interpolationArgs, sourceSpan) {\n return createStatementOp(callVariadicInstructionExpr(config, baseArgs, interpolationArgs, sourceSpan).toStmt());\n}\n\nconst GLOBAL_TARGET_RESOLVERS = new Map([['window', Identifiers.resolveWindow], ['document', Identifiers.resolveDocument], ['body', Identifiers.resolveBody]]);\nconst DOM_PROPERTY_REMAPPING = new Map([['class', 'className'], ['for', 'htmlFor'], ['formaction', 'formAction'], ['innerHtml', 'innerHTML'], ['readonly', 'readOnly'], ['tabindex', 'tabIndex']]);\nfunction reify(job) {\n for (const unit of job.units) {\n reifyCreateOperations(unit, unit.create);\n reifyUpdateOperations(unit, unit.update);\n }\n}\nfunction reifyCreateOperations(unit, ops) {\n for (const op of ops) {\n transformExpressionsInOp(op, expr => reifyIrExpression(unit, expr), VisitorContextFlag.None);\n switch (op.kind) {\n case OpKind.Text:\n OpList.replace(op, text(op.handle.slot, op.initialValue, op.sourceSpan));\n break;\n case OpKind.ElementStart:\n OpList.replace(op, unit.job.mode === TemplateCompilationMode.DomOnly ? domElementStart(op.handle.slot, op.tag, op.attributes, op.localRefs, op.startSourceSpan) : elementStart(op.handle.slot, op.tag, op.attributes, op.localRefs, op.startSourceSpan));\n break;\n case OpKind.Element:\n OpList.replace(op, unit.job.mode === TemplateCompilationMode.DomOnly ? domElement(op.handle.slot, op.tag, op.attributes, op.localRefs, op.wholeSourceSpan) : element(op.handle.slot, op.tag, op.attributes, op.localRefs, op.wholeSourceSpan));\n break;\n case OpKind.ElementEnd:\n OpList.replace(op, unit.job.mode === TemplateCompilationMode.DomOnly ? domElementEnd(op.sourceSpan) : elementEnd(op.sourceSpan));\n break;\n case OpKind.ContainerStart:\n OpList.replace(op, unit.job.mode === TemplateCompilationMode.DomOnly ? domElementContainerStart(op.handle.slot, op.attributes, op.localRefs, op.startSourceSpan) : elementContainerStart(op.handle.slot, op.attributes, op.localRefs, op.startSourceSpan));\n break;\n case OpKind.Container:\n OpList.replace(op, unit.job.mode === TemplateCompilationMode.DomOnly ? domElementContainer(op.handle.slot, op.attributes, op.localRefs, op.wholeSourceSpan) : elementContainer(op.handle.slot, op.attributes, op.localRefs, op.wholeSourceSpan));\n break;\n case OpKind.ContainerEnd:\n OpList.replace(op, unit.job.mode === TemplateCompilationMode.DomOnly ? domElementContainerEnd() : elementContainerEnd());\n break;\n case OpKind.I18nStart:\n OpList.replace(op, i18nStart(op.handle.slot, op.messageIndex, op.subTemplateIndex, op.sourceSpan));\n break;\n case OpKind.I18nEnd:\n OpList.replace(op, i18nEnd(op.sourceSpan));\n break;\n case OpKind.I18n:\n OpList.replace(op, i18n(op.handle.slot, op.messageIndex, op.subTemplateIndex, op.sourceSpan));\n break;\n case OpKind.I18nAttributes:\n if (op.i18nAttributesConfig === null) {\n throw new Error(`AssertionError: i18nAttributesConfig was not set`);\n }\n OpList.replace(op, i18nAttributes(op.handle.slot, op.i18nAttributesConfig));\n break;\n case OpKind.Template:\n if (!(unit instanceof ViewCompilationUnit)) {\n throw new Error(`AssertionError: must be compiling a component`);\n }\n if (Array.isArray(op.localRefs)) {\n throw new Error(`AssertionError: local refs array should have been extracted into a constant`);\n }\n const childView = unit.job.views.get(op.xref);\n OpList.replace(op, op.templateKind === TemplateKind.Block || unit.job.mode === TemplateCompilationMode.DomOnly ? domTemplate(op.handle.slot, variable(childView.fnName), childView.decls, childView.vars, op.tag, op.attributes, op.localRefs, op.startSourceSpan) : template(op.handle.slot, variable(childView.fnName), childView.decls, childView.vars, op.tag, op.attributes, op.localRefs, op.startSourceSpan));\n break;\n case OpKind.DisableBindings:\n OpList.replace(op, disableBindings());\n break;\n case OpKind.EnableBindings:\n OpList.replace(op, enableBindings());\n break;\n case OpKind.Pipe:\n OpList.replace(op, pipe(op.handle.slot, op.name));\n break;\n case OpKind.DeclareLet:\n OpList.replace(op, declareLet(op.handle.slot, op.sourceSpan));\n break;\n case OpKind.AnimationString:\n OpList.replace(op, animationString(op.animationKind, op.expression, op.sanitizer, op.sourceSpan));\n break;\n case OpKind.Animation:\n const animationCallbackFn = reifyListenerHandler(unit, op.handlerFnName, op.handlerOps, false);\n OpList.replace(op, animation(op.animationKind, animationCallbackFn, op.sanitizer, op.sourceSpan));\n break;\n case OpKind.AnimationListener:\n const animationListenerFn = reifyListenerHandler(unit, op.handlerFnName, op.handlerOps, op.consumesDollarEvent);\n OpList.replace(op, animationListener(op.animationKind, animationListenerFn, null, op.sourceSpan));\n break;\n case OpKind.Listener:\n const listenerFn = reifyListenerHandler(unit, op.handlerFnName, op.handlerOps, op.consumesDollarEvent);\n const eventTargetResolver = op.eventTarget ? GLOBAL_TARGET_RESOLVERS.get(op.eventTarget) : null;\n if (eventTargetResolver === undefined) {\n throw new Error(`Unexpected global target '${op.eventTarget}' defined for '${op.name}' event. Supported list of global targets: window,document,body.`);\n }\n OpList.replace(op, unit.job.mode === TemplateCompilationMode.DomOnly && !op.hostListener && !op.isLegacyAnimationListener ? domListener(op.name, listenerFn, eventTargetResolver, op.sourceSpan) : listener(op.name, listenerFn, eventTargetResolver, op.hostListener && op.isLegacyAnimationListener, op.sourceSpan));\n break;\n case OpKind.TwoWayListener:\n OpList.replace(op, twoWayListener(op.name, reifyListenerHandler(unit, op.handlerFnName, op.handlerOps, true), op.sourceSpan));\n break;\n case OpKind.Variable:\n if (op.variable.name === null) {\n throw new Error(`AssertionError: unnamed variable ${op.xref}`);\n }\n OpList.replace(op, createStatementOp(new DeclareVarStmt(op.variable.name, op.initializer, undefined, StmtModifier.Final)));\n break;\n case OpKind.Namespace:\n switch (op.active) {\n case Namespace.HTML:\n OpList.replace(op, namespaceHTML());\n break;\n case Namespace.SVG:\n OpList.replace(op, namespaceSVG());\n break;\n case Namespace.Math:\n OpList.replace(op, namespaceMath());\n break;\n }\n break;\n case OpKind.Defer:\n const timerScheduling = !!op.loadingMinimumTime || !!op.loadingAfterTime || !!op.placeholderMinimumTime;\n OpList.replace(op, defer(op.handle.slot, op.mainSlot.slot, op.resolverFn, op.loadingSlot?.slot ?? null, op.placeholderSlot?.slot ?? null, op.errorSlot?.slot ?? null, op.loadingConfig, op.placeholderConfig, timerScheduling, op.sourceSpan, op.flags));\n break;\n case OpKind.DeferOn:\n let args = [];\n switch (op.trigger.kind) {\n case DeferTriggerKind.Never:\n case DeferTriggerKind.Idle:\n case DeferTriggerKind.Immediate:\n break;\n case DeferTriggerKind.Timer:\n args = [literal(op.trigger.delay)];\n break;\n case DeferTriggerKind.Viewport:\n if (op.modifier === \"hydrate\") {\n args = op.trigger.options ? [op.trigger.options] : [];\n } else {\n args = [literal(op.trigger.targetSlot?.slot ?? null)];\n if (op.trigger.targetSlotViewSteps !== 0) {\n args.push(literal(op.trigger.targetSlotViewSteps));\n } else if (op.trigger.options) {\n args.push(literal(null));\n }\n if (op.trigger.options) {\n args.push(op.trigger.options);\n }\n }\n break;\n case DeferTriggerKind.Interaction:\n case DeferTriggerKind.Hover:\n if (op.modifier === \"hydrate\") {\n args = [];\n } else {\n args = [literal(op.trigger.targetSlot?.slot ?? null)];\n if (op.trigger.targetSlotViewSteps !== 0) {\n args.push(literal(op.trigger.targetSlotViewSteps));\n }\n }\n break;\n default:\n throw new Error(`AssertionError: Unsupported reification of defer trigger kind ${op.trigger.kind}`);\n }\n OpList.replace(op, deferOn(op.trigger.kind, args, op.modifier, op.sourceSpan));\n break;\n case OpKind.ProjectionDef:\n OpList.replace(op, projectionDef(op.def));\n break;\n case OpKind.Projection:\n if (op.handle.slot === null) {\n throw new Error('No slot was assigned for project instruction');\n }\n let fallbackViewFnName = null;\n let fallbackDecls = null;\n let fallbackVars = null;\n if (op.fallbackView !== null) {\n if (!(unit instanceof ViewCompilationUnit)) {\n throw new Error(`AssertionError: must be compiling a component`);\n }\n const fallbackView = unit.job.views.get(op.fallbackView);\n if (fallbackView === undefined) {\n throw new Error('AssertionError: projection had fallback view xref, but fallback view was not found');\n }\n if (fallbackView.fnName === null || fallbackView.decls === null || fallbackView.vars === null) {\n throw new Error(`AssertionError: expected projection fallback view to have been named and counted`);\n }\n fallbackViewFnName = fallbackView.fnName;\n fallbackDecls = fallbackView.decls;\n fallbackVars = fallbackView.vars;\n }\n OpList.replace(op, projection(op.handle.slot, op.projectionSlotIndex, op.attributes, fallbackViewFnName, fallbackDecls, fallbackVars, op.sourceSpan));\n break;\n case OpKind.ConditionalCreate:\n if (!(unit instanceof ViewCompilationUnit)) {\n throw new Error(`AssertionError: must be compiling a component`);\n }\n if (Array.isArray(op.localRefs)) {\n throw new Error(`AssertionError: local refs array should have been extracted into a constant`);\n }\n const conditionalCreateChildView = unit.job.views.get(op.xref);\n OpList.replace(op, conditionalCreate(op.handle.slot, variable(conditionalCreateChildView.fnName), conditionalCreateChildView.decls, conditionalCreateChildView.vars, op.tag, op.attributes, op.localRefs, op.startSourceSpan));\n break;\n case OpKind.ConditionalBranchCreate:\n if (!(unit instanceof ViewCompilationUnit)) {\n throw new Error(`AssertionError: must be compiling a component`);\n }\n if (Array.isArray(op.localRefs)) {\n throw new Error(`AssertionError: local refs array should have been extracted into a constant`);\n }\n const conditionalBranchCreateChildView = unit.job.views.get(op.xref);\n OpList.replace(op, conditionalBranchCreate(op.handle.slot, variable(conditionalBranchCreateChildView.fnName), conditionalBranchCreateChildView.decls, conditionalBranchCreateChildView.vars, op.tag, op.attributes, op.localRefs, op.startSourceSpan));\n break;\n case OpKind.RepeaterCreate:\n if (op.handle.slot === null) {\n throw new Error('No slot was assigned for repeater instruction');\n }\n if (!(unit instanceof ViewCompilationUnit)) {\n throw new Error(`AssertionError: must be compiling a component`);\n }\n const repeaterView = unit.job.views.get(op.xref);\n if (repeaterView.fnName === null) {\n throw new Error(`AssertionError: expected repeater primary view to have been named`);\n }\n let emptyViewFnName = null;\n let emptyDecls = null;\n let emptyVars = null;\n if (op.emptyView !== null) {\n const emptyView = unit.job.views.get(op.emptyView);\n if (emptyView === undefined) {\n throw new Error('AssertionError: repeater had empty view xref, but empty view was not found');\n }\n if (emptyView.fnName === null || emptyView.decls === null || emptyView.vars === null) {\n throw new Error(`AssertionError: expected repeater empty view to have been named and counted`);\n }\n emptyViewFnName = emptyView.fnName;\n emptyDecls = emptyView.decls;\n emptyVars = emptyView.vars;\n }\n OpList.replace(op, repeaterCreate(op.handle.slot, repeaterView.fnName, op.decls, op.vars, op.tag, op.attributes, reifyTrackBy(unit, op), op.usesComponentInstance, emptyViewFnName, emptyDecls, emptyVars, op.emptyTag, op.emptyAttributes, op.wholeSourceSpan));\n break;\n case OpKind.SourceLocation:\n const locationsLiteral = literalArr(op.locations.map(({\n targetSlot,\n offset,\n line,\n column\n }) => {\n if (targetSlot.slot === null) {\n throw new Error('No slot was assigned for source location');\n }\n return literalArr([literal(targetSlot.slot), literal(offset), literal(line), literal(column)]);\n }));\n OpList.replace(op, attachSourceLocation(op.templatePath, locationsLiteral));\n break;\n case OpKind.ControlCreate:\n OpList.replace(op, controlCreate(op.sourceSpan));\n break;\n case OpKind.Statement:\n break;\n default:\n throw new Error(`AssertionError: Unsupported reification of create op ${OpKind[op.kind]}`);\n }\n }\n}\nfunction reifyUpdateOperations(unit, ops) {\n for (const op of ops) {\n transformExpressionsInOp(op, expr => reifyIrExpression(unit, expr), VisitorContextFlag.None);\n switch (op.kind) {\n case OpKind.Advance:\n OpList.replace(op, advance(op.delta, op.sourceSpan));\n break;\n case OpKind.Property:\n OpList.replace(op, unit.job.mode === TemplateCompilationMode.DomOnly && op.bindingKind !== BindingKind.LegacyAnimation && op.bindingKind !== BindingKind.Animation ? reifyDomProperty(op) : reifyProperty(op));\n break;\n case OpKind.Control:\n OpList.replace(op, reifyControl(op));\n break;\n case OpKind.TwoWayProperty:\n OpList.replace(op, twoWayProperty(op.name, op.expression, op.sanitizer, op.sourceSpan));\n break;\n case OpKind.StyleProp:\n OpList.replace(op, styleProp(op.name, op.expression, op.unit, op.sourceSpan));\n break;\n case OpKind.ClassProp:\n OpList.replace(op, classProp(op.name, op.expression, op.sourceSpan));\n break;\n case OpKind.StyleMap:\n OpList.replace(op, styleMap(op.expression, op.sourceSpan));\n break;\n case OpKind.ClassMap:\n OpList.replace(op, classMap(op.expression, op.sourceSpan));\n break;\n case OpKind.I18nExpression:\n OpList.replace(op, i18nExp(op.expression, op.sourceSpan));\n break;\n case OpKind.I18nApply:\n OpList.replace(op, i18nApply(op.handle.slot, op.sourceSpan));\n break;\n case OpKind.InterpolateText:\n OpList.replace(op, textInterpolate(op.interpolation.strings, op.interpolation.expressions, op.sourceSpan));\n break;\n case OpKind.Attribute:\n OpList.replace(op, attribute(op.name, op.expression, op.sanitizer, op.namespace, op.sourceSpan));\n break;\n case OpKind.DomProperty:\n if (op.expression instanceof Interpolation) {\n throw new Error('not yet handled');\n } else {\n if (op.bindingKind === BindingKind.LegacyAnimation || op.bindingKind === BindingKind.Animation) {\n OpList.replace(op, syntheticHostProperty(op.name, op.expression, op.sourceSpan));\n } else {\n OpList.replace(op, reifyDomProperty(op));\n }\n }\n break;\n case OpKind.Variable:\n if (op.variable.name === null) {\n throw new Error(`AssertionError: unnamed variable ${op.xref}`);\n }\n OpList.replace(op, createStatementOp(new DeclareVarStmt(op.variable.name, op.initializer, undefined, StmtModifier.Final)));\n break;\n case OpKind.Conditional:\n if (op.processed === null) {\n throw new Error(`Conditional test was not set.`);\n }\n OpList.replace(op, conditional(op.processed, op.contextValue, op.sourceSpan));\n break;\n case OpKind.Repeater:\n OpList.replace(op, repeater(op.collection, op.sourceSpan));\n break;\n case OpKind.DeferWhen:\n OpList.replace(op, deferWhen(op.modifier, op.expr, op.sourceSpan));\n break;\n case OpKind.StoreLet:\n throw new Error(`AssertionError: unexpected storeLet ${op.declaredName}`);\n case OpKind.Statement:\n break;\n default:\n throw new Error(`AssertionError: Unsupported reification of update op ${OpKind[op.kind]}`);\n }\n }\n}\nfunction reifyDomProperty(op) {\n return domProperty(DOM_PROPERTY_REMAPPING.get(op.name) ?? op.name, op.expression, op.sanitizer, op.sourceSpan);\n}\nfunction reifyProperty(op) {\n return isAriaAttribute(op.name) ? ariaProperty(op.name, op.expression, op.sourceSpan) : property(op.name, op.expression, op.sanitizer, op.sourceSpan);\n}\nfunction reifyControl(op) {\n return control(op.sourceSpan);\n}\nfunction reifyIrExpression(unit, expr) {\n if (!isIrExpression(expr)) {\n return expr;\n }\n switch (expr.kind) {\n case ExpressionKind.NextContext:\n return nextContext(expr.steps);\n case ExpressionKind.Reference:\n return reference(expr.targetSlot.slot + 1 + expr.offset);\n case ExpressionKind.LexicalRead:\n throw new Error(`AssertionError: unresolved LexicalRead of ${expr.name}`);\n case ExpressionKind.TwoWayBindingSet:\n throw new Error(`AssertionError: unresolved TwoWayBindingSet`);\n case ExpressionKind.RestoreView:\n if (typeof expr.view === 'number') {\n throw new Error(`AssertionError: unresolved RestoreView`);\n }\n return restoreView(expr.view);\n case ExpressionKind.ResetView:\n return resetView(expr.expr);\n case ExpressionKind.GetCurrentView:\n return getCurrentView();\n case ExpressionKind.ReadVariable:\n if (expr.name === null) {\n throw new Error(`Read of unnamed variable ${expr.xref}`);\n }\n return variable(expr.name);\n case ExpressionKind.ReadTemporaryExpr:\n if (expr.name === null) {\n throw new Error(`Read of unnamed temporary ${expr.xref}`);\n }\n return variable(expr.name);\n case ExpressionKind.AssignTemporaryExpr:\n if (expr.name === null) {\n throw new Error(`Assign of unnamed temporary ${expr.xref}`);\n }\n return variable(expr.name).set(expr.expr);\n case ExpressionKind.PureFunctionExpr:\n if (expr.fn === null) {\n throw new Error(`AssertionError: expected PureFunctions to have been extracted`);\n }\n return pureFunction(expr.varOffset, expr.fn, expr.args);\n case ExpressionKind.PureFunctionParameterExpr:\n throw new Error(`AssertionError: expected PureFunctionParameterExpr to have been extracted`);\n case ExpressionKind.PipeBinding:\n return pipeBind(expr.targetSlot.slot, expr.varOffset, expr.args);\n case ExpressionKind.PipeBindingVariadic:\n return pipeBindV(expr.targetSlot.slot, expr.varOffset, expr.args);\n case ExpressionKind.SlotLiteralExpr:\n return literal(expr.slot.slot);\n case ExpressionKind.ContextLetReference:\n return readContextLet(expr.targetSlot.slot);\n case ExpressionKind.StoreLet:\n return storeLet(expr.value, expr.sourceSpan);\n case ExpressionKind.TrackContext:\n return variable('this');\n case ExpressionKind.ArrowFunction:\n if (expr.varOffset === null) {\n throw new Error(`AssertionError: variable offset was not assigned to arrow function`);\n }\n return arrowFunction(expr.varOffset, unit.job.pool.getSharedFunctionReference(getArrowFunctionFactory(unit, expr), 'arrowFn'), variable(CONTEXT_NAME));\n default:\n throw new Error(`AssertionError: Unsupported reification of ir.Expression kind: ${ExpressionKind[expr.kind]}`);\n }\n}\nfunction reifyListenerHandler(unit, name, handlerOps, consumesDollarEvent) {\n reifyUpdateOperations(unit, handlerOps);\n const handlerStmts = [];\n for (const op of handlerOps) {\n if (op.kind !== OpKind.Statement) {\n throw new Error(`AssertionError: expected reified statements, but found op ${OpKind[op.kind]}`);\n }\n handlerStmts.push(op.statement);\n }\n const params = [];\n if (consumesDollarEvent) {\n params.push(new FnParam('$event', DYNAMIC_TYPE));\n }\n return fn(params, handlerStmts, undefined, undefined, name);\n}\nfunction reifyTrackBy(unit, op) {\n if (op.trackByFn !== null) {\n return op.trackByFn;\n }\n const params = [new FnParam('$index', NUMBER_TYPE), new FnParam('$item', DYNAMIC_TYPE)];\n let fn$1;\n if (op.trackByOps === null) {\n fn$1 = op.usesComponentInstance ? fn(params, [new ReturnStatement(op.track)]) : arrowFn(params, op.track);\n } else {\n reifyUpdateOperations(unit, op.trackByOps);\n const statements = [];\n for (const trackOp of op.trackByOps) {\n if (trackOp.kind !== OpKind.Statement) {\n throw new Error(`AssertionError: expected reified statements, but found op ${OpKind[trackOp.kind]}`);\n }\n statements.push(trackOp.statement);\n }\n fn$1 = op.usesComponentInstance || statements.length !== 1 || !(statements[0] instanceof ReturnStatement) ? fn(params, statements) : arrowFn(params, statements[0].value);\n }\n op.trackByFn = unit.job.pool.getSharedFunctionReference(fn$1, '_forTrack');\n return op.trackByFn;\n}\nfunction getArrowFunctionFactory(unit, expr) {\n reifyUpdateOperations(unit, expr.ops);\n const statements = [];\n for (const op of expr.ops) {\n if (op.kind !== OpKind.Statement) {\n throw new Error(`AssertionError: expected reified statements, but found op ${OpKind[op.kind]}`);\n }\n statements.push(op.statement);\n }\n const body = statements.length === 1 && statements[0] instanceof ReturnStatement ? statements[0].value : statements;\n return arrowFn([new FnParam(expr.contextName, DYNAMIC_TYPE), new FnParam(expr.currentViewName, DYNAMIC_TYPE)], arrowFn(expr.parameters, body));\n}\n\nfunction removeEmptyBindings(job) {\n for (const unit of job.units) {\n for (const op of unit.update) {\n switch (op.kind) {\n case OpKind.Attribute:\n case OpKind.Binding:\n case OpKind.ClassProp:\n case OpKind.ClassMap:\n case OpKind.Property:\n case OpKind.StyleProp:\n case OpKind.StyleMap:\n if (op.expression instanceof EmptyExpr) {\n OpList.remove(op);\n }\n break;\n }\n }\n }\n}\n\nfunction removeI18nContexts(job) {\n for (const unit of job.units) {\n for (const op of unit.create) {\n switch (op.kind) {\n case OpKind.I18nContext:\n OpList.remove(op);\n break;\n case OpKind.I18nStart:\n op.context = null;\n break;\n }\n }\n }\n}\n\nfunction removeIllegalLetReferences(job) {\n for (const unit of job.units) {\n for (const op of unit.update) {\n if (op.kind !== OpKind.Variable || op.variable.kind !== SemanticVariableKind.Identifier || !(op.initializer instanceof StoreLetExpr)) {\n continue;\n }\n const name = op.variable.identifier;\n let current = op;\n while (current && current.kind !== OpKind.ListEnd) {\n transformExpressionsInOp(current, expr => expr instanceof LexicalReadExpr && expr.name === name ? literal(undefined) : expr, VisitorContextFlag.None);\n current = current.prev;\n }\n }\n }\n}\n\nfunction removeUnusedI18nAttributesOps(job) {\n for (const unit of job.units) {\n const ownersWithI18nExpressions = new Set();\n for (const op of unit.update) {\n switch (op.kind) {\n case OpKind.I18nExpression:\n ownersWithI18nExpressions.add(op.i18nOwner);\n }\n }\n for (const op of unit.create) {\n switch (op.kind) {\n case OpKind.I18nAttributes:\n if (ownersWithI18nExpressions.has(op.xref)) {\n continue;\n }\n OpList.remove(op);\n }\n }\n }\n}\n\nfunction resolveContexts(job) {\n for (const unit of job.units) {\n for (const expr of unit.functions) {\n processLexicalScope$1(unit, expr.ops);\n }\n processLexicalScope$1(unit, unit.create);\n processLexicalScope$1(unit, unit.update);\n }\n}\nfunction processLexicalScope$1(view, ops) {\n const scope = new Map();\n scope.set(view.xref, variable(CONTEXT_NAME));\n for (const op of ops) {\n switch (op.kind) {\n case OpKind.Variable:\n switch (op.variable.kind) {\n case SemanticVariableKind.Context:\n scope.set(op.variable.view, new ReadVariableExpr(op.xref));\n break;\n }\n break;\n case OpKind.Animation:\n case OpKind.AnimationListener:\n case OpKind.Listener:\n case OpKind.TwoWayListener:\n processLexicalScope$1(view, op.handlerOps);\n break;\n case OpKind.RepeaterCreate:\n if (op.trackByOps !== null) {\n processLexicalScope$1(view, op.trackByOps);\n }\n break;\n }\n }\n if (view === view.job.root) {\n scope.set(view.xref, variable(CONTEXT_NAME));\n }\n for (const op of ops) {\n transformExpressionsInOp(op, expr => {\n if (expr instanceof ContextExpr) {\n if (!scope.has(expr.view)) {\n throw new Error(`No context found for reference to view ${expr.view} from view ${view.xref}`);\n }\n return scope.get(expr.view);\n } else {\n return expr;\n }\n }, VisitorContextFlag.None);\n }\n}\n\nfunction resolveDeferDepsFns(job) {\n for (const unit of job.units) {\n for (const op of unit.create) {\n if (op.kind === OpKind.Defer) {\n if (op.resolverFn !== null) {\n continue;\n }\n if (op.ownResolverFn !== null) {\n if (op.handle.slot === null) {\n throw new Error('AssertionError: slot must be assigned before extracting defer deps functions');\n }\n const fullPathName = unit.fnName?.replace('_Template', '');\n op.resolverFn = job.pool.getSharedFunctionReference(op.ownResolverFn, `${fullPathName}_Defer_${op.handle.slot}_DepsFn`, false);\n }\n }\n }\n }\n}\n\nfunction resolveDollarEvent(job) {\n for (const unit of job.units) {\n transformDollarEvent(unit.create);\n transformDollarEvent(unit.update);\n }\n}\nfunction transformDollarEvent(ops) {\n for (const op of ops) {\n if (op.kind === OpKind.Listener || op.kind === OpKind.TwoWayListener || op.kind === OpKind.AnimationListener) {\n transformExpressionsInOp(op, expr => {\n if (expr instanceof LexicalReadExpr && expr.name === '$event') {\n if (op.kind === OpKind.Listener || op.kind === OpKind.AnimationListener) {\n op.consumesDollarEvent = true;\n }\n return new ReadVarExpr(expr.name);\n }\n return expr;\n }, VisitorContextFlag.InChildOperation);\n }\n }\n}\n\nfunction resolveI18nElementPlaceholders(job) {\n const i18nContexts = new Map();\n const elements = new Map();\n for (const unit of job.units) {\n for (const op of unit.create) {\n switch (op.kind) {\n case OpKind.I18nContext:\n i18nContexts.set(op.xref, op);\n break;\n case OpKind.ElementStart:\n elements.set(op.xref, op);\n break;\n }\n }\n }\n resolvePlaceholdersForView(job, job.root, i18nContexts, elements);\n}\nfunction resolvePlaceholdersForView(job, unit, i18nContexts, elements, pendingStructuralDirective) {\n let currentOps = null;\n let pendingStructuralDirectiveCloses = new Map();\n for (const op of unit.create) {\n switch (op.kind) {\n case OpKind.I18nStart:\n if (!op.context) {\n throw Error('Could not find i18n context for i18n op');\n }\n currentOps = {\n i18nBlock: op,\n i18nContext: i18nContexts.get(op.context)\n };\n break;\n case OpKind.I18nEnd:\n currentOps = null;\n break;\n case OpKind.ElementStart:\n if (op.i18nPlaceholder !== undefined) {\n if (currentOps === null) {\n throw Error('i18n tag placeholder should only occur inside an i18n block');\n }\n recordElementStart(op, currentOps.i18nContext, currentOps.i18nBlock, pendingStructuralDirective);\n if (pendingStructuralDirective && op.i18nPlaceholder.closeName) {\n pendingStructuralDirectiveCloses.set(op.xref, pendingStructuralDirective);\n }\n pendingStructuralDirective = undefined;\n }\n break;\n case OpKind.ElementEnd:\n const startOp = elements.get(op.xref);\n if (startOp && startOp.i18nPlaceholder !== undefined) {\n if (currentOps === null) {\n throw Error('AssertionError: i18n tag placeholder should only occur inside an i18n block');\n }\n recordElementClose(startOp, currentOps.i18nContext, currentOps.i18nBlock, pendingStructuralDirectiveCloses.get(op.xref));\n pendingStructuralDirectiveCloses.delete(op.xref);\n }\n break;\n case OpKind.Projection:\n if (op.i18nPlaceholder !== undefined) {\n if (currentOps === null) {\n throw Error('i18n tag placeholder should only occur inside an i18n block');\n }\n recordElementStart(op, currentOps.i18nContext, currentOps.i18nBlock, pendingStructuralDirective);\n recordElementClose(op, currentOps.i18nContext, currentOps.i18nBlock, pendingStructuralDirective);\n pendingStructuralDirective = undefined;\n }\n if (op.fallbackView !== null) {\n const view = job.views.get(op.fallbackView);\n if (op.fallbackViewI18nPlaceholder === undefined) {\n resolvePlaceholdersForView(job, view, i18nContexts, elements);\n } else {\n if (currentOps === null) {\n throw Error('i18n tag placeholder should only occur inside an i18n block');\n }\n recordTemplateStart(job, view, op.handle.slot, op.fallbackViewI18nPlaceholder, currentOps.i18nContext, currentOps.i18nBlock, pendingStructuralDirective);\n resolvePlaceholdersForView(job, view, i18nContexts, elements);\n recordTemplateClose(job, view, op.handle.slot, op.fallbackViewI18nPlaceholder, currentOps.i18nContext, currentOps.i18nBlock, pendingStructuralDirective);\n pendingStructuralDirective = undefined;\n }\n }\n break;\n case OpKind.ConditionalCreate:\n case OpKind.ConditionalBranchCreate:\n case OpKind.Template:\n const view = job.views.get(op.xref);\n if (op.i18nPlaceholder === undefined) {\n resolvePlaceholdersForView(job, view, i18nContexts, elements);\n } else {\n if (currentOps === null) {\n throw Error('i18n tag placeholder should only occur inside an i18n block');\n }\n if (op.templateKind === TemplateKind.Structural) {\n resolvePlaceholdersForView(job, view, i18nContexts, elements, op);\n } else {\n recordTemplateStart(job, view, op.handle.slot, op.i18nPlaceholder, currentOps.i18nContext, currentOps.i18nBlock, pendingStructuralDirective);\n resolvePlaceholdersForView(job, view, i18nContexts, elements);\n recordTemplateClose(job, view, op.handle.slot, op.i18nPlaceholder, currentOps.i18nContext, currentOps.i18nBlock, pendingStructuralDirective);\n pendingStructuralDirective = undefined;\n }\n }\n break;\n case OpKind.RepeaterCreate:\n if (pendingStructuralDirective !== undefined) {\n throw Error('AssertionError: Unexpected structural directive associated with @for block');\n }\n const forSlot = op.handle.slot + 1;\n const forView = job.views.get(op.xref);\n if (op.i18nPlaceholder === undefined) {\n resolvePlaceholdersForView(job, forView, i18nContexts, elements);\n } else {\n if (currentOps === null) {\n throw Error('i18n tag placeholder should only occur inside an i18n block');\n }\n recordTemplateStart(job, forView, forSlot, op.i18nPlaceholder, currentOps.i18nContext, currentOps.i18nBlock, pendingStructuralDirective);\n resolvePlaceholdersForView(job, forView, i18nContexts, elements);\n recordTemplateClose(job, forView, forSlot, op.i18nPlaceholder, currentOps.i18nContext, currentOps.i18nBlock, pendingStructuralDirective);\n pendingStructuralDirective = undefined;\n }\n if (op.emptyView !== null) {\n const emptySlot = op.handle.slot + 2;\n const emptyView = job.views.get(op.emptyView);\n if (op.emptyI18nPlaceholder === undefined) {\n resolvePlaceholdersForView(job, emptyView, i18nContexts, elements);\n } else {\n if (currentOps === null) {\n throw Error('i18n tag placeholder should only occur inside an i18n block');\n }\n recordTemplateStart(job, emptyView, emptySlot, op.emptyI18nPlaceholder, currentOps.i18nContext, currentOps.i18nBlock, pendingStructuralDirective);\n resolvePlaceholdersForView(job, emptyView, i18nContexts, elements);\n recordTemplateClose(job, emptyView, emptySlot, op.emptyI18nPlaceholder, currentOps.i18nContext, currentOps.i18nBlock, pendingStructuralDirective);\n pendingStructuralDirective = undefined;\n }\n }\n break;\n }\n }\n}\nfunction recordElementStart(op, i18nContext, i18nBlock, structuralDirective) {\n const {\n startName,\n closeName\n } = op.i18nPlaceholder;\n let flags = I18nParamValueFlags.ElementTag | I18nParamValueFlags.OpenTag;\n let value = op.handle.slot;\n if (structuralDirective !== undefined) {\n flags |= I18nParamValueFlags.TemplateTag;\n value = {\n element: value,\n template: structuralDirective.handle.slot\n };\n }\n if (!closeName) {\n flags |= I18nParamValueFlags.CloseTag;\n }\n addParam(i18nContext.params, startName, value, i18nBlock.subTemplateIndex, flags);\n}\nfunction recordElementClose(op, i18nContext, i18nBlock, structuralDirective) {\n const {\n closeName\n } = op.i18nPlaceholder;\n if (closeName) {\n let flags = I18nParamValueFlags.ElementTag | I18nParamValueFlags.CloseTag;\n let value = op.handle.slot;\n if (structuralDirective !== undefined) {\n flags |= I18nParamValueFlags.TemplateTag;\n value = {\n element: value,\n template: structuralDirective.handle.slot\n };\n }\n addParam(i18nContext.params, closeName, value, i18nBlock.subTemplateIndex, flags);\n }\n}\nfunction recordTemplateStart(job, view, slot, i18nPlaceholder, i18nContext, i18nBlock, structuralDirective) {\n let {\n startName,\n closeName\n } = i18nPlaceholder;\n let flags = I18nParamValueFlags.TemplateTag | I18nParamValueFlags.OpenTag;\n if (!closeName) {\n flags |= I18nParamValueFlags.CloseTag;\n }\n if (structuralDirective !== undefined) {\n addParam(i18nContext.params, startName, structuralDirective.handle.slot, i18nBlock.subTemplateIndex, flags);\n }\n addParam(i18nContext.params, startName, slot, getSubTemplateIndexForTemplateTag(job, i18nBlock, view), flags);\n}\nfunction recordTemplateClose(job, view, slot, i18nPlaceholder, i18nContext, i18nBlock, structuralDirective) {\n const {\n closeName\n } = i18nPlaceholder;\n const flags = I18nParamValueFlags.TemplateTag | I18nParamValueFlags.CloseTag;\n if (closeName) {\n addParam(i18nContext.params, closeName, slot, getSubTemplateIndexForTemplateTag(job, i18nBlock, view), flags);\n if (structuralDirective !== undefined) {\n addParam(i18nContext.params, closeName, structuralDirective.handle.slot, i18nBlock.subTemplateIndex, flags);\n }\n }\n}\nfunction getSubTemplateIndexForTemplateTag(job, i18nOp, view) {\n for (const childOp of view.create) {\n if (childOp.kind === OpKind.I18nStart) {\n return childOp.subTemplateIndex;\n }\n }\n return i18nOp.subTemplateIndex;\n}\nfunction addParam(params, placeholder, value, subTemplateIndex, flags) {\n const values = params.get(placeholder) ?? [];\n values.push({\n value,\n subTemplateIndex,\n flags\n });\n params.set(placeholder, values);\n}\n\nfunction resolveI18nExpressionPlaceholders(job) {\n const subTemplateIndices = new Map();\n const i18nContexts = new Map();\n const icuPlaceholders = new Map();\n for (const unit of job.units) {\n for (const op of unit.create) {\n switch (op.kind) {\n case OpKind.I18nStart:\n subTemplateIndices.set(op.xref, op.subTemplateIndex);\n break;\n case OpKind.I18nContext:\n i18nContexts.set(op.xref, op);\n break;\n case OpKind.IcuPlaceholder:\n icuPlaceholders.set(op.xref, op);\n break;\n }\n }\n }\n const expressionIndices = new Map();\n const referenceIndex = op => op.usage === I18nExpressionFor.I18nText ? op.i18nOwner : op.context;\n for (const unit of job.units) {\n for (const op of unit.update) {\n if (op.kind === OpKind.I18nExpression) {\n const index = expressionIndices.get(referenceIndex(op)) || 0;\n const subTemplateIndex = subTemplateIndices.get(op.i18nOwner) ?? null;\n const value = {\n value: index,\n subTemplateIndex: subTemplateIndex,\n flags: I18nParamValueFlags.ExpressionIndex\n };\n updatePlaceholder(op, value, i18nContexts, icuPlaceholders);\n expressionIndices.set(referenceIndex(op), index + 1);\n }\n }\n }\n}\nfunction updatePlaceholder(op, value, i18nContexts, icuPlaceholders) {\n if (op.i18nPlaceholder !== null) {\n const i18nContext = i18nContexts.get(op.context);\n const params = op.resolutionTime === I18nParamResolutionTime.Creation ? i18nContext.params : i18nContext.postprocessingParams;\n const values = params.get(op.i18nPlaceholder) || [];\n values.push(value);\n params.set(op.i18nPlaceholder, values);\n }\n if (op.icuPlaceholder !== null) {\n const icuPlaceholderOp = icuPlaceholders.get(op.icuPlaceholder);\n icuPlaceholderOp?.expressionPlaceholders.push(value);\n }\n}\n\nfunction resolveNames(job) {\n for (const unit of job.units) {\n for (const expr of unit.functions) {\n processLexicalScope(unit, expr.ops, null);\n }\n processLexicalScope(unit, unit.create, null);\n processLexicalScope(unit, unit.update, null);\n }\n}\nfunction processLexicalScope(unit, ops, savedView) {\n const scope = new Map();\n const localDefinitions = new Map();\n for (const op of ops) {\n switch (op.kind) {\n case OpKind.Variable:\n switch (op.variable.kind) {\n case SemanticVariableKind.Identifier:\n if (op.variable.local) {\n if (localDefinitions.has(op.variable.identifier)) {\n continue;\n }\n localDefinitions.set(op.variable.identifier, op.xref);\n } else if (scope.has(op.variable.identifier)) {\n continue;\n }\n scope.set(op.variable.identifier, op.xref);\n break;\n case SemanticVariableKind.Alias:\n if (scope.has(op.variable.identifier)) {\n continue;\n }\n scope.set(op.variable.identifier, op.xref);\n break;\n case SemanticVariableKind.SavedView:\n savedView = {\n view: op.variable.view,\n variable: op.xref\n };\n break;\n }\n break;\n case OpKind.Animation:\n case OpKind.AnimationListener:\n case OpKind.Listener:\n case OpKind.TwoWayListener:\n processLexicalScope(unit, op.handlerOps, savedView);\n break;\n case OpKind.RepeaterCreate:\n if (op.trackByOps !== null) {\n processLexicalScope(unit, op.trackByOps, savedView);\n }\n break;\n }\n }\n for (const op of ops) {\n if (op.kind === OpKind.Listener || op.kind === OpKind.TwoWayListener || op.kind === OpKind.Animation || op.kind === OpKind.AnimationListener) {\n continue;\n }\n transformExpressionsInOp(op, expr => {\n if (expr instanceof LexicalReadExpr) {\n if (localDefinitions.has(expr.name)) {\n return new ReadVariableExpr(localDefinitions.get(expr.name));\n } else if (scope.has(expr.name)) {\n return new ReadVariableExpr(scope.get(expr.name));\n } else {\n return new ReadPropExpr(new ContextExpr(unit.job.root.xref), expr.name);\n }\n } else if (expr instanceof RestoreViewExpr && typeof expr.view === 'number') {\n if (savedView === null || savedView.view !== expr.view) {\n throw new Error(`AssertionError: no saved view ${expr.view} from view ${unit.xref}`);\n }\n expr.view = new ReadVariableExpr(savedView.variable);\n return expr;\n } else {\n return expr;\n }\n }, VisitorContextFlag.None);\n }\n for (const op of ops) {\n visitExpressionsInOp(op, expr => {\n if (expr instanceof LexicalReadExpr) {\n throw new Error(`AssertionError: no lexical reads should remain, but found read of ${expr.name}`);\n }\n });\n }\n}\n\nconst sanitizerFns = new Map([[SecurityContext.HTML, Identifiers.sanitizeHtml], [SecurityContext.RESOURCE_URL, Identifiers.sanitizeResourceUrl], [SecurityContext.SCRIPT, Identifiers.sanitizeScript], [SecurityContext.STYLE, Identifiers.sanitizeStyle], [SecurityContext.URL, Identifiers.sanitizeUrl], [SecurityContext.ATTRIBUTE_NO_BINDING, Identifiers.validateAttribute]]);\nconst trustedValueFns = new Map([[SecurityContext.HTML, Identifiers.trustConstantHtml], [SecurityContext.RESOURCE_URL, Identifiers.trustConstantResourceUrl]]);\nfunction resolveSanitizers(job) {\n for (const unit of job.units) {\n if (job.kind !== CompilationJobKind.Host) {\n for (const op of unit.create) {\n if (op.kind === OpKind.ExtractedAttribute) {\n const trustedValueFn = trustedValueFns.get(getOnlySecurityContext(op.securityContext)) ?? null;\n op.trustedValueFn = trustedValueFn !== null ? importExpr(trustedValueFn) : null;\n }\n }\n }\n for (const op of unit.update) {\n switch (op.kind) {\n case OpKind.Property:\n case OpKind.Attribute:\n case OpKind.DomProperty:\n let sanitizerFn = null;\n if (Array.isArray(op.securityContext) && op.securityContext.length === 2 && op.securityContext.includes(SecurityContext.URL) && op.securityContext.includes(SecurityContext.RESOURCE_URL)) {\n sanitizerFn = Identifiers.sanitizeUrlOrResourceUrl;\n } else {\n sanitizerFn = sanitizerFns.get(getOnlySecurityContext(op.securityContext)) ?? null;\n }\n op.sanitizer = sanitizerFn !== null ? importExpr(sanitizerFn) : null;\n break;\n }\n }\n }\n}\nfunction getOnlySecurityContext(securityContext) {\n if (Array.isArray(securityContext)) {\n if (securityContext.length > 1) {\n throw Error(`AssertionError: Ambiguous security context`);\n }\n return securityContext[0] || SecurityContext.NONE;\n }\n return securityContext;\n}\n\nfunction saveAndRestoreView(job) {\n for (const unit of job.units) {\n for (const expr of unit.functions) {\n if (needsRestoreView(job, unit, expr.ops)) {\n addSaveRestoreViewOperation(unit, expr.ops, variable(expr.currentViewName));\n }\n }\n unit.create.prepend([createVariableOp(unit.job.allocateXrefId(), {\n kind: SemanticVariableKind.SavedView,\n name: null,\n view: unit.xref\n }, new GetCurrentViewExpr(), VariableFlags.None)]);\n for (const op of unit.create) {\n if (op.kind === OpKind.Listener || op.kind === OpKind.TwoWayListener || op.kind === OpKind.Animation || op.kind === OpKind.AnimationListener) {\n if (needsRestoreView(job, unit, op.handlerOps)) {\n addSaveRestoreViewOperation(unit, op.handlerOps, unit.xref);\n }\n }\n }\n }\n}\nfunction needsRestoreView(job, unit, opList) {\n let result = unit !== job.root;\n if (!result) {\n for (const innerOp of opList) {\n visitExpressionsInOp(innerOp, expr => {\n if (expr instanceof ReferenceExpr || expr instanceof ContextLetReferenceExpr) {\n result = true;\n }\n });\n }\n }\n return result;\n}\nfunction addSaveRestoreViewOperation(unit, opList, restoreViewTarget) {\n opList.prepend([createVariableOp(unit.job.allocateXrefId(), {\n kind: SemanticVariableKind.Context,\n name: null,\n view: unit.xref\n }, new RestoreViewExpr(restoreViewTarget), VariableFlags.None)]);\n for (const handlerOp of opList) {\n if (handlerOp.kind === OpKind.Statement && handlerOp.statement instanceof ReturnStatement) {\n handlerOp.statement.value = new ResetViewExpr(handlerOp.statement.value);\n }\n }\n}\n\nfunction allocateSlots(job) {\n const slotMap = new Map();\n for (const unit of job.units) {\n let slotCount = 0;\n for (const op of unit.create) {\n if (!hasConsumesSlotTrait(op)) {\n continue;\n }\n op.handle.slot = slotCount;\n slotMap.set(op.xref, op.handle.slot);\n slotCount += op.numSlotsUsed;\n }\n unit.decls = slotCount;\n }\n for (const unit of job.units) {\n for (const op of unit.ops()) {\n if (op.kind === OpKind.Template || op.kind === OpKind.ConditionalCreate || op.kind === OpKind.ConditionalBranchCreate || op.kind === OpKind.RepeaterCreate) {\n const childView = job.views.get(op.xref);\n op.decls = childView.decls;\n }\n }\n }\n}\n\nfunction optimizeStoreLet(job) {\n const letUsedExternally = new Set();\n const declareLetOps = new Map();\n for (const unit of job.units) {\n for (const op of unit.ops()) {\n if (op.kind === OpKind.DeclareLet) {\n declareLetOps.set(op.xref, op);\n }\n visitExpressionsInOp(op, expr => {\n if (expr instanceof ContextLetReferenceExpr) {\n letUsedExternally.add(expr.target);\n }\n });\n }\n }\n for (const unit of job.units) {\n for (const op of unit.update) {\n transformExpressionsInOp(op, expr => {\n if (expr instanceof StoreLetExpr && !letUsedExternally.has(expr.target)) {\n if (!hasPipe(expr)) {\n OpList.remove(declareLetOps.get(expr.target));\n }\n return expr.value;\n }\n return expr;\n }, VisitorContextFlag.None);\n }\n }\n}\nfunction hasPipe(root) {\n let result = false;\n transformExpressionsInExpression(root, expr => {\n if (expr instanceof PipeBindingExpr || expr instanceof PipeBindingVariadicExpr) {\n result = true;\n }\n return expr;\n }, VisitorContextFlag.None);\n return result;\n}\n\nfunction stripNonrequiredParentheses(job) {\n const requiredParens = new Set();\n for (const unit of job.units) {\n for (const op of unit.ops()) {\n visitExpressionsInOp(op, expr => {\n if (expr instanceof BinaryOperatorExpr) {\n switch (expr.operator) {\n case BinaryOperator.Exponentiation:\n checkExponentiationParens(expr, requiredParens);\n break;\n case BinaryOperator.NullishCoalesce:\n checkNullishCoalescingParens(expr, requiredParens);\n break;\n case BinaryOperator.And:\n case BinaryOperator.Or:\n checkAndOrParens(expr, requiredParens);\n }\n }\n });\n }\n }\n for (const unit of job.units) {\n for (const op of unit.ops()) {\n transformExpressionsInOp(op, expr => {\n if (expr instanceof ParenthesizedExpr) {\n return requiredParens.has(expr) ? expr : expr.expr;\n }\n return expr;\n }, VisitorContextFlag.None);\n }\n }\n}\nfunction checkExponentiationParens(expr, requiredParens) {\n if (expr.lhs instanceof ParenthesizedExpr && expr.lhs.expr instanceof UnaryOperatorExpr) {\n requiredParens.add(expr.lhs);\n }\n}\nfunction checkNullishCoalescingParens(expr, requiredParens) {\n if (expr.lhs instanceof ParenthesizedExpr && (isLogicalAndOr(expr.lhs.expr) || expr.lhs.expr instanceof ConditionalExpr)) {\n requiredParens.add(expr.lhs);\n }\n if (expr.rhs instanceof ParenthesizedExpr && (isLogicalAndOr(expr.rhs.expr) || expr.rhs.expr instanceof ConditionalExpr)) {\n requiredParens.add(expr.rhs);\n }\n}\nfunction checkAndOrParens(expr, requiredParens) {\n if (expr.lhs instanceof ParenthesizedExpr && expr.lhs.expr instanceof BinaryOperatorExpr && expr.lhs.expr.operator === BinaryOperator.NullishCoalesce) {\n requiredParens.add(expr.lhs);\n }\n}\nfunction isLogicalAndOr(expr) {\n return expr instanceof BinaryOperatorExpr && (expr.operator === BinaryOperator.And || expr.operator === BinaryOperator.Or);\n}\n\nfunction specializeStyleBindings(job) {\n for (const unit of job.units) {\n for (const op of unit.update) {\n if (op.kind !== OpKind.Binding) {\n continue;\n }\n switch (op.bindingKind) {\n case BindingKind.ClassName:\n if (op.expression instanceof Interpolation) {\n throw new Error(`Unexpected interpolation in ClassName binding`);\n }\n OpList.replace(op, createClassPropOp(op.target, op.name, op.expression, op.sourceSpan));\n break;\n case BindingKind.StyleProperty:\n OpList.replace(op, createStylePropOp(op.target, op.name, op.expression, op.unit, op.sourceSpan));\n break;\n case BindingKind.Property:\n case BindingKind.Template:\n if (op.name === 'style') {\n OpList.replace(op, createStyleMapOp(op.target, op.expression, op.sourceSpan));\n } else if (op.name === 'class') {\n OpList.replace(op, createClassMapOp(op.target, op.expression, op.sourceSpan));\n }\n break;\n }\n }\n }\n}\n\nfunction generateTemporaryVariables(job) {\n for (const unit of job.units) {\n unit.create.prepend(generateTemporaries(unit.create));\n unit.update.prepend(generateTemporaries(unit.update));\n for (const expr of unit.functions) {\n expr.ops.prepend(generateTemporaries(expr.ops));\n }\n }\n}\nfunction generateTemporaries(ops) {\n let opCount = 0;\n let generatedStatements = [];\n for (const op of ops) {\n const finalReads = new Map();\n visitExpressionsInOp(op, (expr, flag) => {\n if (flag & VisitorContextFlag.InChildOperation) {\n return;\n }\n if (expr instanceof ReadTemporaryExpr) {\n finalReads.set(expr.xref, expr);\n }\n });\n let count = 0;\n const assigned = new Set();\n const released = new Set();\n const defs = new Map();\n visitExpressionsInOp(op, (expr, flag) => {\n if (flag & VisitorContextFlag.InChildOperation) {\n return;\n }\n if (expr instanceof AssignTemporaryExpr) {\n if (!assigned.has(expr.xref)) {\n assigned.add(expr.xref);\n defs.set(expr.xref, `tmp_${opCount}_${count++}`);\n }\n assignName(defs, expr);\n } else if (expr instanceof ReadTemporaryExpr) {\n if (finalReads.get(expr.xref) === expr) {\n released.add(expr.xref);\n count--;\n }\n assignName(defs, expr);\n }\n });\n generatedStatements.push(...Array.from(new Set(defs.values())).map(name => createStatementOp(new DeclareVarStmt(name))));\n opCount++;\n if (op.kind === OpKind.Listener || op.kind === OpKind.Animation || op.kind === OpKind.AnimationListener || op.kind === OpKind.TwoWayListener) {\n op.handlerOps.prepend(generateTemporaries(op.handlerOps));\n } else if (op.kind === OpKind.RepeaterCreate && op.trackByOps !== null) {\n op.trackByOps.prepend(generateTemporaries(op.trackByOps));\n }\n }\n return generatedStatements;\n}\nfunction assignName(names, expr) {\n const name = names.get(expr.xref);\n if (name === undefined) {\n throw new Error(`Found xref with unassigned name: ${expr.xref}`);\n }\n expr.name = name;\n}\n\nfunction optimizeTrackFns(job) {\n for (const unit of job.units) {\n for (const op of unit.create) {\n if (op.kind !== OpKind.RepeaterCreate) {\n continue;\n }\n if (op.track instanceof ReadVarExpr && op.track.name === '$index') {\n op.trackByFn = importExpr(Identifiers.repeaterTrackByIndex);\n } else if (op.track instanceof ReadVarExpr && op.track.name === '$item') {\n op.trackByFn = importExpr(Identifiers.repeaterTrackByIdentity);\n } else if (isTrackByFunctionCall(job.root.xref, op.track)) {\n op.usesComponentInstance = true;\n if (op.track.receiver.receiver.view === unit.xref) {\n op.trackByFn = op.track.receiver;\n } else {\n op.trackByFn = importExpr(Identifiers.componentInstance).callFn([]).prop(op.track.receiver.name);\n op.track = op.trackByFn;\n }\n } else {\n op.track = transformExpressionsInExpression(op.track, expr => {\n if (expr instanceof PipeBindingExpr || expr instanceof PipeBindingVariadicExpr) {\n throw new Error(`Illegal State: Pipes are not allowed in this context`);\n } else if (expr instanceof ContextExpr) {\n op.usesComponentInstance = true;\n return new TrackContextExpr(expr.view);\n }\n return expr;\n }, VisitorContextFlag.None);\n const trackOpList = new OpList();\n trackOpList.push(createStatementOp(new ReturnStatement(op.track, op.track.sourceSpan)));\n op.trackByOps = trackOpList;\n }\n }\n }\n}\nfunction isTrackByFunctionCall(rootView, expr) {\n if (!(expr instanceof InvokeFunctionExpr) || expr.args.length === 0 || expr.args.length > 2) {\n return false;\n }\n if (!(expr.receiver instanceof ReadPropExpr && expr.receiver.receiver instanceof ContextExpr) || expr.receiver.receiver.view !== rootView) {\n return false;\n }\n const [arg0, arg1] = expr.args;\n if (!(arg0 instanceof ReadVarExpr) || arg0.name !== '$index') {\n return false;\n } else if (expr.args.length === 1) {\n return true;\n }\n if (!(arg1 instanceof ReadVarExpr) || arg1.name !== '$item') {\n return false;\n }\n return true;\n}\n\nfunction generateTrackVariables(job) {\n for (const unit of job.units) {\n for (const op of unit.create) {\n if (op.kind !== OpKind.RepeaterCreate) {\n continue;\n }\n op.track = transformExpressionsInExpression(op.track, expr => {\n if (expr instanceof LexicalReadExpr) {\n if (op.varNames.$index.has(expr.name)) {\n return variable('$index');\n } else if (expr.name === op.varNames.$implicit) {\n return variable('$item');\n }\n }\n return expr;\n }, VisitorContextFlag.None);\n }\n }\n}\n\nfunction transformTwoWayBindingSet(job) {\n for (const unit of job.units) {\n for (const op of unit.create) {\n if (op.kind === OpKind.TwoWayListener) {\n transformExpressionsInOp(op, expr => {\n if (!(expr instanceof TwoWayBindingSetExpr)) {\n return expr;\n }\n const {\n target,\n value\n } = expr;\n if (target instanceof ReadPropExpr || target instanceof ReadKeyExpr) {\n return twoWayBindingSet(target, value).or(target.set(value));\n }\n if (target instanceof ReadVariableExpr) {\n return twoWayBindingSet(target, value);\n }\n throw new Error(`Unsupported expression in two-way action binding.`);\n }, VisitorContextFlag.InChildOperation);\n }\n }\n }\n}\n\nfunction countVariables(job) {\n for (const unit of job.units) {\n let varCount = 0;\n for (const op of unit.ops()) {\n if (hasConsumesVarsTrait(op)) {\n varCount += varsUsedByOp(op);\n }\n }\n const firstPassCountExpressionVars = expr => {\n if (!isIrExpression(expr)) {\n return;\n }\n if (expr instanceof PureFunctionExpr) {\n return;\n }\n if (hasUsesVarOffsetTrait(expr)) {\n expr.varOffset = varCount;\n }\n if (hasConsumesVarsTrait(expr)) {\n varCount += varsUsedByIrExpression(expr);\n }\n };\n const secondPassCountExpressionVars = expr => {\n if (!isIrExpression(expr) || !(expr instanceof PureFunctionExpr)) {\n return;\n }\n if (hasUsesVarOffsetTrait(expr)) {\n expr.varOffset = varCount;\n }\n if (hasConsumesVarsTrait(expr)) {\n varCount += varsUsedByIrExpression(expr);\n }\n };\n for (const createOp of unit.create) {\n visitExpressionsInOp(createOp, firstPassCountExpressionVars);\n }\n for (const updateOp of unit.update) {\n visitExpressionsInOp(updateOp, firstPassCountExpressionVars);\n }\n for (const createOp of unit.create) {\n visitExpressionsInOp(createOp, secondPassCountExpressionVars);\n }\n for (const updateOp of unit.update) {\n visitExpressionsInOp(updateOp, secondPassCountExpressionVars);\n }\n unit.vars = varCount;\n }\n if (job instanceof ComponentCompilationJob) {\n for (const unit of job.units) {\n for (const op of unit.create) {\n if (op.kind !== OpKind.Template && op.kind !== OpKind.RepeaterCreate && op.kind !== OpKind.ConditionalCreate && op.kind !== OpKind.ConditionalBranchCreate) {\n continue;\n }\n const childView = job.views.get(op.xref);\n op.vars = childView.vars;\n }\n }\n }\n}\nfunction varsUsedByOp(op) {\n let slots;\n switch (op.kind) {\n case OpKind.Attribute:\n slots = 1;\n if (op.expression instanceof Interpolation && !isSingletonInterpolation(op.expression)) {\n slots += op.expression.expressions.length;\n }\n return slots;\n case OpKind.Property:\n case OpKind.DomProperty:\n slots = 1;\n if (op.expression instanceof Interpolation) {\n slots += op.expression.expressions.length;\n }\n return slots;\n case OpKind.Control:\n return 2;\n case OpKind.TwoWayProperty:\n return 1;\n case OpKind.StyleProp:\n case OpKind.ClassProp:\n case OpKind.StyleMap:\n case OpKind.ClassMap:\n slots = 2;\n if (op.expression instanceof Interpolation) {\n slots += op.expression.expressions.length;\n }\n return slots;\n case OpKind.InterpolateText:\n return op.interpolation.expressions.length;\n case OpKind.I18nExpression:\n case OpKind.Conditional:\n case OpKind.DeferWhen:\n case OpKind.StoreLet:\n return 1;\n case OpKind.RepeaterCreate:\n return op.emptyView ? 1 : 0;\n default:\n throw new Error(`Unhandled op: ${OpKind[op.kind]}`);\n }\n}\nfunction varsUsedByIrExpression(expr) {\n switch (expr.kind) {\n case ExpressionKind.PureFunctionExpr:\n return 1 + expr.args.length;\n case ExpressionKind.PipeBinding:\n return 1 + expr.args.length;\n case ExpressionKind.PipeBindingVariadic:\n return 1 + expr.numArgs;\n case ExpressionKind.StoreLet:\n case ExpressionKind.ArrowFunction:\n return 1;\n default:\n throw new Error(`AssertionError: unhandled ConsumesVarsTrait expression ${expr.constructor.name}`);\n }\n}\nfunction isSingletonInterpolation(expr) {\n if (expr.expressions.length !== 1 || expr.strings.length !== 2) {\n return false;\n }\n if (expr.strings[0] !== '' || expr.strings[1] !== '') {\n return false;\n }\n return true;\n}\n\nfunction optimizeVariables(job) {\n for (const unit of job.units) {\n for (const expr of unit.functions) {\n inlineAlwaysInlineVariables(expr.ops);\n }\n inlineAlwaysInlineVariables(unit.create);\n inlineAlwaysInlineVariables(unit.update);\n for (const op of unit.create) {\n if (op.kind === OpKind.Listener || op.kind === OpKind.Animation || op.kind === OpKind.AnimationListener || op.kind === OpKind.TwoWayListener) {\n inlineAlwaysInlineVariables(op.handlerOps);\n } else if (op.kind === OpKind.RepeaterCreate && op.trackByOps !== null) {\n inlineAlwaysInlineVariables(op.trackByOps);\n }\n }\n for (const expr of unit.functions) {\n optimizeVariablesInOpList(expr.ops, null);\n optimizeSaveRestoreView(expr.ops);\n }\n for (const op of unit.create) {\n if (op.kind === OpKind.Listener || op.kind === OpKind.Animation || op.kind === OpKind.AnimationListener || op.kind === OpKind.TwoWayListener) {\n optimizeVariablesInOpList(op.handlerOps, skipArrowFunctionOps);\n optimizeSaveRestoreView(op.handlerOps);\n } else if (op.kind === OpKind.RepeaterCreate && op.trackByOps !== null) {\n optimizeVariablesInOpList(op.trackByOps, skipArrowFunctionOps);\n }\n }\n optimizeVariablesInOpList(unit.create, skipArrowFunctionOps);\n optimizeVariablesInOpList(unit.update, skipArrowFunctionOps);\n }\n}\nvar Fence;\n(function (Fence) {\n Fence[Fence[\"None\"] = 0] = \"None\";\n Fence[Fence[\"ViewContextRead\"] = 1] = \"ViewContextRead\";\n Fence[Fence[\"ViewContextWrite\"] = 2] = \"ViewContextWrite\";\n Fence[Fence[\"SideEffectful\"] = 4] = \"SideEffectful\";\n})(Fence || (Fence = {}));\nfunction skipArrowFunctionOps(flags) {\n return !(flags & VisitorContextFlag.InArrowFunctionOperation);\n}\nfunction inlineAlwaysInlineVariables(ops) {\n const vars = new Map();\n for (const op of ops) {\n if (op.kind === OpKind.Variable && op.flags & VariableFlags.AlwaysInline) {\n visitExpressionsInOp(op, expr => {\n if (isIrExpression(expr) && fencesForIrExpression(expr) !== Fence.None) {\n throw new Error(`AssertionError: A context-sensitive variable was marked AlwaysInline`);\n }\n });\n vars.set(op.xref, op);\n }\n transformExpressionsInOp(op, expr => {\n if (expr instanceof ReadVariableExpr && vars.has(expr.xref)) {\n const varOp = vars.get(expr.xref);\n return varOp.initializer.clone();\n }\n return expr;\n }, VisitorContextFlag.None);\n }\n for (const op of vars.values()) {\n OpList.remove(op);\n }\n}\nfunction optimizeVariablesInOpList(ops, predicate) {\n const varDecls = new Map();\n const varUsages = new Map();\n const varRemoteUsages = new Set();\n const opMap = new Map();\n for (const op of ops) {\n if (op.kind === OpKind.Variable) {\n if (varDecls.has(op.xref) || varUsages.has(op.xref)) {\n throw new Error(`Should not see two declarations of the same variable: ${op.xref}`);\n }\n varDecls.set(op.xref, op);\n varUsages.set(op.xref, 0);\n }\n opMap.set(op, collectOpInfo(op, predicate));\n countVariableUsages(op, varUsages, varRemoteUsages, predicate);\n }\n let contextIsUsed = false;\n for (const op of ops.reversed()) {\n const opInfo = opMap.get(op);\n if (op.kind === OpKind.Variable && varUsages.get(op.xref) === 0) {\n if (contextIsUsed && opInfo.fences & Fence.ViewContextWrite || opInfo.fences & Fence.SideEffectful) {\n const stmtOp = createStatementOp(op.initializer.toStmt());\n opMap.set(stmtOp, opInfo);\n OpList.replace(op, stmtOp);\n } else {\n uncountVariableUsages(op, varUsages);\n OpList.remove(op);\n }\n opMap.delete(op);\n varDecls.delete(op.xref);\n varUsages.delete(op.xref);\n continue;\n }\n if (opInfo.fences & Fence.ViewContextRead) {\n contextIsUsed = true;\n }\n }\n const toInline = [];\n for (const [id, count] of varUsages) {\n const decl = varDecls.get(id);\n const isAlwaysInline = !!(decl.flags & VariableFlags.AlwaysInline);\n if (count !== 1 || isAlwaysInline) {\n continue;\n }\n if (varRemoteUsages.has(id)) {\n continue;\n }\n toInline.push(id);\n }\n let candidate;\n while (candidate = toInline.pop()) {\n const decl = varDecls.get(candidate);\n const varInfo = opMap.get(decl);\n const isAlwaysInline = !!(decl.flags & VariableFlags.AlwaysInline);\n if (isAlwaysInline) {\n throw new Error(`AssertionError: Found an 'AlwaysInline' variable after the always inlining pass.`);\n }\n for (let targetOp = decl.next; targetOp.kind !== OpKind.ListEnd; targetOp = targetOp.next) {\n const opInfo = opMap.get(targetOp);\n if (opInfo.variablesUsed.has(candidate)) {\n if (!allowConservativeInlining(decl, targetOp)) {\n break;\n }\n if (tryInlineVariableInitializer(candidate, decl.initializer, targetOp, varInfo.fences)) {\n opInfo.variablesUsed.delete(candidate);\n for (const id of varInfo.variablesUsed) {\n opInfo.variablesUsed.add(id);\n }\n opInfo.fences |= varInfo.fences;\n varDecls.delete(candidate);\n varUsages.delete(candidate);\n opMap.delete(decl);\n OpList.remove(decl);\n }\n break;\n }\n if (!safeToInlinePastFences(opInfo.fences, varInfo.fences)) {\n break;\n }\n }\n }\n}\nfunction fencesForIrExpression(expr) {\n switch (expr.kind) {\n case ExpressionKind.NextContext:\n return Fence.ViewContextRead | Fence.ViewContextWrite;\n case ExpressionKind.RestoreView:\n return Fence.ViewContextRead | Fence.ViewContextWrite | Fence.SideEffectful;\n case ExpressionKind.StoreLet:\n return Fence.SideEffectful;\n case ExpressionKind.Reference:\n case ExpressionKind.ContextLetReference:\n return Fence.ViewContextRead;\n default:\n return Fence.None;\n }\n}\nfunction collectOpInfo(op, predicate) {\n let fences = Fence.None;\n const variablesUsed = new Set();\n visitExpressionsInOp(op, (expr, flags) => {\n if (!isIrExpression(expr) || predicate !== null && !predicate(flags)) {\n return;\n }\n if (expr.kind === ExpressionKind.ReadVariable) {\n variablesUsed.add(expr.xref);\n } else {\n fences |= fencesForIrExpression(expr);\n }\n });\n return {\n fences,\n variablesUsed\n };\n}\nfunction countVariableUsages(op, varUsages, varRemoteUsage, predicate) {\n visitExpressionsInOp(op, (expr, flags) => {\n if (!isIrExpression(expr) || predicate !== null && !predicate(flags)) {\n return;\n }\n if (expr.kind !== ExpressionKind.ReadVariable) {\n return;\n }\n const count = varUsages.get(expr.xref);\n if (count === undefined) {\n return;\n }\n varUsages.set(expr.xref, count + 1);\n if (flags & VisitorContextFlag.InChildOperation) {\n varRemoteUsage.add(expr.xref);\n }\n });\n}\nfunction uncountVariableUsages(op, varUsages) {\n visitExpressionsInOp(op, expr => {\n if (!isIrExpression(expr)) {\n return;\n }\n if (expr.kind !== ExpressionKind.ReadVariable) {\n return;\n }\n const count = varUsages.get(expr.xref);\n if (count === undefined) {\n return;\n } else if (count === 0) {\n throw new Error(`Inaccurate variable count: ${expr.xref} - found another read but count is already 0`);\n }\n varUsages.set(expr.xref, count - 1);\n });\n}\nfunction safeToInlinePastFences(fences, declFences) {\n if (fences & Fence.ViewContextWrite) {\n if (declFences & Fence.ViewContextRead) {\n return false;\n }\n } else if (fences & Fence.ViewContextRead) {\n if (declFences & Fence.ViewContextWrite) {\n return false;\n }\n }\n return true;\n}\nfunction tryInlineVariableInitializer(id, initializer, target, declFences) {\n let inlined = false;\n let inliningAllowed = true;\n transformExpressionsInOp(target, (expr, flags) => {\n if (!isIrExpression(expr)) {\n return expr;\n }\n if (inlined || !inliningAllowed) {\n return expr;\n } else if (flags & VisitorContextFlag.InChildOperation && declFences & Fence.ViewContextRead) {\n return expr;\n }\n switch (expr.kind) {\n case ExpressionKind.ReadVariable:\n if (expr.xref === id) {\n inlined = true;\n return initializer;\n }\n break;\n default:\n const exprFences = fencesForIrExpression(expr);\n inliningAllowed = inliningAllowed && safeToInlinePastFences(exprFences, declFences);\n break;\n }\n return expr;\n }, VisitorContextFlag.None);\n return inlined;\n}\nfunction allowConservativeInlining(decl, target) {\n switch (decl.variable.kind) {\n case SemanticVariableKind.Identifier:\n if (decl.initializer instanceof ReadVarExpr && decl.initializer.name === CONTEXT_NAME) {\n return true;\n }\n return false;\n case SemanticVariableKind.Context:\n return target.kind === OpKind.Variable;\n default:\n return true;\n }\n}\nfunction optimizeSaveRestoreView(ops) {\n const head = ops.head.next;\n const tail = ops.tail.prev;\n if (head !== null && tail !== null && head.next === tail && head.kind === OpKind.Statement && head.statement instanceof ExpressionStatement && head.statement.expr instanceof RestoreViewExpr && tail.kind === OpKind.Statement && tail.statement instanceof ReturnStatement && tail.statement.value instanceof ResetViewExpr) {\n OpList.remove(head);\n tail.statement.value = tail.statement.value.expr;\n }\n}\n\nfunction wrapI18nIcus(job) {\n for (const unit of job.units) {\n let currentI18nOp = null;\n let addedI18nId = null;\n for (const op of unit.create) {\n switch (op.kind) {\n case OpKind.I18nStart:\n currentI18nOp = op;\n break;\n case OpKind.I18nEnd:\n currentI18nOp = null;\n break;\n case OpKind.IcuStart:\n if (currentI18nOp === null) {\n addedI18nId = job.allocateXrefId();\n OpList.insertBefore(createI18nStartOp(addedI18nId, op.message, undefined, null), op);\n }\n break;\n case OpKind.IcuEnd:\n if (addedI18nId !== null) {\n OpList.insertAfter(createI18nEndOp(addedI18nId, null), op);\n addedI18nId = null;\n }\n break;\n }\n }\n }\n}\n\nfunction generateArrowFunctions(job) {\n for (const unit of job.units) {\n for (const op of unit.create) {\n if (op.kind !== OpKind.Animation && op.kind !== OpKind.AnimationListener && op.kind !== OpKind.Listener && op.kind !== OpKind.TwoWayListener) {\n addArrowFunctions(unit, op);\n }\n }\n for (const op of unit.update) {\n addArrowFunctions(unit, op);\n }\n }\n}\nfunction addArrowFunctions(unit, op) {\n transformExpressionsInOp(op, (expr, flags) => {\n if (!(expr instanceof ArrowFunctionExpr$1) || flags & VisitorContextFlag.InChildOperation) {\n return expr;\n }\n if (Array.isArray(expr.body)) {\n throw new Error('AssertionError: unexpected multi-line arrow function');\n }\n const arrowFunction = new ArrowFunctionExpr(expr.params, expr.body);\n unit.functions.add(arrowFunction);\n return arrowFunction;\n }, VisitorContextFlag.None);\n}\n\nconst ELIGIBLE_CONTROL_PROPERTIES = new Set(['formField']);\nfunction specializeControlProperties(job) {\n for (const unit of job.units) {\n processView(unit);\n }\n}\nfunction processView(view) {\n for (const op of view.update) {\n if (op.kind !== OpKind.Property) {\n continue;\n }\n if (ELIGIBLE_CONTROL_PROPERTIES.has(op.name)) {\n addControlInstruction(view, op);\n }\n }\n}\nconst CONTROL_OP_CREATE_KINDS = new Set([OpKind.Container, OpKind.ContainerStart, OpKind.ContainerEnd, OpKind.Element, OpKind.ElementStart, OpKind.ElementEnd, OpKind.Template]);\nfunction isRelevantCreateOp(createOp) {\n return CONTROL_OP_CREATE_KINDS.has(createOp.kind);\n}\nfunction findCreateInstruction(view, target) {\n let lastFoundOp = null;\n for (const createOp of view.create) {\n if (!isRelevantCreateOp(createOp) || createOp.xref !== target) {\n continue;\n }\n lastFoundOp = createOp;\n }\n return lastFoundOp;\n}\nfunction addControlInstruction(view, propertyOp) {\n const targetCreateOp = findCreateInstruction(view, propertyOp.target);\n if (targetCreateOp === null) {\n throw new Error(`No create instruction found for control target ${propertyOp.target}`);\n }\n const controlCreateOp = createControlCreateOp(propertyOp.sourceSpan);\n OpList.insertAfter(controlCreateOp, targetCreateOp);\n OpList.insertAfter(createControlOp(propertyOp.target, propertyOp.sourceSpan), propertyOp);\n}\n\n/**\n *\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\nconst phases = [{\n kind: CompilationJobKind.Tmpl,\n fn: removeContentSelectors\n}, {\n kind: CompilationJobKind.Both,\n fn: optimizeRegularExpressions\n}, {\n kind: CompilationJobKind.Host,\n fn: parseHostStyleProperties\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: emitNamespaceChanges\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: propagateI18nBlocks\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: wrapI18nIcus\n}, {\n kind: CompilationJobKind.Both,\n fn: deduplicateTextBindings\n}, {\n kind: CompilationJobKind.Both,\n fn: specializeStyleBindings\n}, {\n kind: CompilationJobKind.Both,\n fn: specializeBindings\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: specializeControlProperties\n}, {\n kind: CompilationJobKind.Both,\n fn: convertAnimations\n}, {\n kind: CompilationJobKind.Both,\n fn: extractAttributes\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: createI18nContexts\n}, {\n kind: CompilationJobKind.Both,\n fn: parseExtractedStyles\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: removeEmptyBindings\n}, {\n kind: CompilationJobKind.Both,\n fn: collapseSingletonInterpolations\n}, {\n kind: CompilationJobKind.Both,\n fn: orderOps\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: generateConditionalExpressions\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: createPipes\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: configureDeferInstructions\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: createVariadicPipes\n}, {\n kind: CompilationJobKind.Both,\n fn: generateArrowFunctions\n}, {\n kind: CompilationJobKind.Both,\n fn: generatePureLiteralStructures\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: generateProjectionDefs\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: generateLocalLetReferences\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: generateVariables\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: saveAndRestoreView\n}, {\n kind: CompilationJobKind.Both,\n fn: deleteAnyCasts\n}, {\n kind: CompilationJobKind.Both,\n fn: resolveDollarEvent\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: generateTrackVariables\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: removeIllegalLetReferences\n}, {\n kind: CompilationJobKind.Both,\n fn: resolveNames\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: resolveDeferTargetNames\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: transformTwoWayBindingSet\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: optimizeTrackFns\n}, {\n kind: CompilationJobKind.Both,\n fn: resolveContexts\n}, {\n kind: CompilationJobKind.Both,\n fn: resolveSanitizers\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: liftLocalRefs\n}, {\n kind: CompilationJobKind.Both,\n fn: expandSafeReads\n}, {\n kind: CompilationJobKind.Both,\n fn: stripNonrequiredParentheses\n}, {\n kind: CompilationJobKind.Both,\n fn: generateTemporaryVariables\n}, {\n kind: CompilationJobKind.Both,\n fn: optimizeVariables\n}, {\n kind: CompilationJobKind.Both,\n fn: optimizeStoreLet\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: convertI18nText\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: convertI18nBindings\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: removeUnusedI18nAttributesOps\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: assignI18nSlotDependencies\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: applyI18nExpressions\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: allocateSlots\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: resolveI18nElementPlaceholders\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: resolveI18nExpressionPlaceholders\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: extractI18nMessages\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: collectI18nConsts\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: collectConstExpressions\n}, {\n kind: CompilationJobKind.Both,\n fn: collectElementConsts\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: removeI18nContexts\n}, {\n kind: CompilationJobKind.Both,\n fn: countVariables\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: generateAdvance\n}, {\n kind: CompilationJobKind.Both,\n fn: nameFunctionsAndVariables\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: resolveDeferDepsFns\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: mergeNextContextExpressions\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: generateNgContainerOps\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: collapseEmptyInstructions\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: attachSourceLocations\n}, {\n kind: CompilationJobKind.Tmpl,\n fn: disableBindings$1\n}, {\n kind: CompilationJobKind.Both,\n fn: extractPureFunctions\n}, {\n kind: CompilationJobKind.Both,\n fn: reify\n}, {\n kind: CompilationJobKind.Both,\n fn: chain\n}];\nfunction transform(job, kind) {\n for (const phase of phases) {\n if (phase.kind === kind || phase.kind === CompilationJobKind.Both) {\n phase.fn(job);\n }\n }\n}\nfunction emitTemplateFn(tpl, pool) {\n const rootFn = emitView(tpl.root);\n emitChildViews(tpl.root, pool);\n return rootFn;\n}\nfunction emitChildViews(parent, pool) {\n for (const unit of parent.job.units) {\n if (unit.parent !== parent.xref) {\n continue;\n }\n emitChildViews(unit, pool);\n const viewFn = emitView(unit);\n pool.statements.push(viewFn.toDeclStmt(viewFn.name));\n }\n}\nfunction emitView(view) {\n if (view.fnName === null) {\n throw new Error(`AssertionError: view ${view.xref} is unnamed`);\n }\n const createStatements = [];\n for (const op of view.create) {\n if (op.kind !== OpKind.Statement) {\n throw new Error(`AssertionError: expected all create ops to have been compiled, but got ${OpKind[op.kind]}`);\n }\n createStatements.push(op.statement);\n }\n const updateStatements = [];\n for (const op of view.update) {\n if (op.kind !== OpKind.Statement) {\n throw new Error(`AssertionError: expected all update ops to have been compiled, but got ${OpKind[op.kind]}`);\n }\n updateStatements.push(op.statement);\n }\n const createCond = maybeGenerateRfBlock(1, createStatements);\n const updateCond = maybeGenerateRfBlock(2, updateStatements);\n return fn([new FnParam(RENDER_FLAGS, NUMBER_TYPE), new FnParam(CONTEXT_NAME, DYNAMIC_TYPE)], [...createCond, ...updateCond], undefined, undefined, view.fnName);\n}\nfunction maybeGenerateRfBlock(flag, statements) {\n if (statements.length === 0) {\n return [];\n }\n return [ifStmt(new BinaryOperatorExpr(BinaryOperator.BitwiseAnd, variable(RENDER_FLAGS), literal(flag)), statements)];\n}\nfunction emitHostBindingFunction(job) {\n if (job.root.fnName === null) {\n throw new Error(`AssertionError: host binding function is unnamed`);\n }\n const createStatements = [];\n for (const op of job.root.create) {\n if (op.kind !== OpKind.Statement) {\n throw new Error(`AssertionError: expected all create ops to have been compiled, but got ${OpKind[op.kind]}`);\n }\n createStatements.push(op.statement);\n }\n const updateStatements = [];\n for (const op of job.root.update) {\n if (op.kind !== OpKind.Statement) {\n throw new Error(`AssertionError: expected all update ops to have been compiled, but got ${OpKind[op.kind]}`);\n }\n updateStatements.push(op.statement);\n }\n if (createStatements.length === 0 && updateStatements.length === 0) {\n return null;\n }\n const createCond = maybeGenerateRfBlock(1, createStatements);\n const updateCond = maybeGenerateRfBlock(2, updateStatements);\n return fn([new FnParam(RENDER_FLAGS, NUMBER_TYPE), new FnParam(CONTEXT_NAME, DYNAMIC_TYPE)], [...createCond, ...updateCond], undefined, undefined, job.root.fnName);\n}\n\nconst domSchema = new DomElementSchemaRegistry();\nconst NG_TEMPLATE_TAG_NAME = 'ng-template';\nconst ANIMATE_PREFIX$1 = 'animate.';\nfunction isI18nRootNode(meta) {\n return meta instanceof Message;\n}\nfunction isSingleI18nIcu(meta) {\n return isI18nRootNode(meta) && meta.nodes.length === 1 && meta.nodes[0] instanceof Icu;\n}\nfunction ingestComponent(componentName, template, constantPool, compilationMode, relativeContextFilePath, i18nUseExternalIds, deferMeta, allDeferrableDepsFn, relativeTemplatePath, enableDebugLocations) {\n const job = new ComponentCompilationJob(componentName, constantPool, compilationMode, relativeContextFilePath, i18nUseExternalIds, deferMeta, allDeferrableDepsFn, relativeTemplatePath, enableDebugLocations);\n ingestNodes(job.root, template);\n return job;\n}\nfunction ingestHostBinding(input, bindingParser, constantPool) {\n const job = new HostBindingCompilationJob(input.componentName, constantPool, TemplateCompilationMode.DomOnly);\n for (const property of input.properties ?? []) {\n let bindingKind = BindingKind.Property;\n if (property.name.startsWith('attr.')) {\n property.name = property.name.substring('attr.'.length);\n bindingKind = BindingKind.Attribute;\n }\n if (property.isLegacyAnimation) {\n bindingKind = BindingKind.LegacyAnimation;\n }\n if (property.isAnimation) {\n bindingKind = BindingKind.Animation;\n }\n const securityContexts = bindingParser.calcPossibleSecurityContexts(input.componentSelector, property.name, bindingKind === BindingKind.Attribute).filter(context => context !== SecurityContext.NONE);\n ingestDomProperty(job, property, bindingKind, securityContexts);\n }\n for (const [name, expr] of Object.entries(input.attributes) ?? []) {\n const securityContexts = bindingParser.calcPossibleSecurityContexts(input.componentSelector, name, true).filter(context => context !== SecurityContext.NONE);\n ingestHostAttribute(job, name, expr, securityContexts);\n }\n for (const event of input.events ?? []) {\n ingestHostEvent(job, event);\n }\n return job;\n}\nfunction ingestDomProperty(job, property, bindingKind, securityContexts) {\n let expression;\n const ast = property.expression.ast;\n if (ast instanceof Interpolation$1) {\n expression = new Interpolation(ast.strings, ast.expressions.map(expr => convertAst(expr, job, property.sourceSpan)), []);\n } else {\n expression = convertAst(ast, job, property.sourceSpan);\n }\n job.root.update.push(createBindingOp(job.root.xref, bindingKind, property.name, expression, null, securityContexts, false, false, null, null, property.sourceSpan));\n}\nfunction ingestHostAttribute(job, name, value, securityContexts) {\n const attrBinding = createBindingOp(job.root.xref, BindingKind.Attribute, name, value, null, securityContexts, true, false, null, null, value.sourceSpan);\n job.root.update.push(attrBinding);\n}\nfunction ingestHostEvent(job, event) {\n let eventBinding;\n if (event.type === ParsedEventType.Animation) {\n eventBinding = createAnimationListenerOp(job.root.xref, new SlotHandle(), event.name, null, makeListenerHandlerOps(job.root, event.handler, event.handlerSpan), event.name.endsWith('enter') ? \"enter\" : \"leave\", event.targetOrPhase, true, event.sourceSpan);\n } else {\n const [phase, target] = event.type !== ParsedEventType.LegacyAnimation ? [null, event.targetOrPhase] : [event.targetOrPhase, null];\n eventBinding = createListenerOp(job.root.xref, new SlotHandle(), event.name, null, makeListenerHandlerOps(job.root, event.handler, event.handlerSpan), phase, target, true, event.sourceSpan);\n }\n job.root.create.push(eventBinding);\n}\nfunction ingestNodes(unit, template) {\n for (const node of template) {\n if (node instanceof Element$1) {\n ingestElement(unit, node);\n } else if (node instanceof Template) {\n ingestTemplate(unit, node);\n } else if (node instanceof Content) {\n ingestContent(unit, node);\n } else if (node instanceof Text$3) {\n ingestText(unit, node, null);\n } else if (node instanceof BoundText) {\n ingestBoundText(unit, node, null);\n } else if (node instanceof IfBlock) {\n ingestIfBlock(unit, node);\n } else if (node instanceof SwitchBlock) {\n ingestSwitchBlock(unit, node);\n } else if (node instanceof DeferredBlock) {\n ingestDeferBlock(unit, node);\n } else if (node instanceof Icu$1) {\n ingestIcu(unit, node);\n } else if (node instanceof ForLoopBlock) {\n ingestForBlock(unit, node);\n } else if (node instanceof LetDeclaration$1) {\n ingestLetDeclaration(unit, node);\n } else if (node instanceof Component$1) ; else {\n throw new Error(`Unsupported template node: ${node.constructor.name}`);\n }\n }\n}\nfunction ingestElement(unit, element) {\n if (element.i18n !== undefined && !(element.i18n instanceof Message || element.i18n instanceof TagPlaceholder)) {\n throw Error(`Unhandled i18n metadata type for element: ${element.i18n.constructor.name}`);\n }\n const id = unit.job.allocateXrefId();\n const [namespaceKey, elementName] = splitNsName(element.name);\n const startOp = createElementStartOp(elementName, id, namespaceForKey(namespaceKey), element.i18n instanceof TagPlaceholder ? element.i18n : undefined, element.startSourceSpan, element.sourceSpan);\n unit.create.push(startOp);\n ingestElementBindings(unit, startOp, element);\n ingestReferences(startOp, element);\n let i18nBlockId = null;\n if (element.i18n instanceof Message) {\n i18nBlockId = unit.job.allocateXrefId();\n unit.create.push(createI18nStartOp(i18nBlockId, element.i18n, undefined, element.startSourceSpan));\n }\n ingestNodes(unit, element.children);\n const endOp = createElementEndOp(id, element.endSourceSpan ?? element.startSourceSpan);\n unit.create.push(endOp);\n if (i18nBlockId !== null) {\n OpList.insertBefore(createI18nEndOp(i18nBlockId, element.endSourceSpan ?? element.startSourceSpan), endOp);\n }\n}\nfunction ingestTemplate(unit, tmpl) {\n if (tmpl.i18n !== undefined && !(tmpl.i18n instanceof Message || tmpl.i18n instanceof TagPlaceholder)) {\n throw Error(`Unhandled i18n metadata type for template: ${tmpl.i18n.constructor.name}`);\n }\n const childView = unit.job.allocateView(unit.xref);\n let tagNameWithoutNamespace = tmpl.tagName;\n let namespacePrefix = '';\n if (tmpl.tagName) {\n [namespacePrefix, tagNameWithoutNamespace] = splitNsName(tmpl.tagName);\n }\n const i18nPlaceholder = tmpl.i18n instanceof TagPlaceholder ? tmpl.i18n : undefined;\n const namespace = namespaceForKey(namespacePrefix);\n const functionNameSuffix = tagNameWithoutNamespace === null ? '' : prefixWithNamespace(tagNameWithoutNamespace, namespace);\n const templateKind = isPlainTemplate(tmpl) ? TemplateKind.NgTemplate : TemplateKind.Structural;\n const templateOp = createTemplateOp(childView.xref, templateKind, tagNameWithoutNamespace, functionNameSuffix, namespace, i18nPlaceholder, tmpl.startSourceSpan, tmpl.sourceSpan);\n unit.create.push(templateOp);\n ingestTemplateBindings(unit, templateOp, tmpl, templateKind);\n ingestReferences(templateOp, tmpl);\n ingestNodes(childView, tmpl.children);\n for (const {\n name,\n value\n } of tmpl.variables) {\n childView.contextVariables.set(name, value !== '' ? value : '$implicit');\n }\n if (templateKind === TemplateKind.NgTemplate && tmpl.i18n instanceof Message) {\n const id = unit.job.allocateXrefId();\n OpList.insertAfter(createI18nStartOp(id, tmpl.i18n, undefined, tmpl.startSourceSpan), childView.create.head);\n OpList.insertBefore(createI18nEndOp(id, tmpl.endSourceSpan ?? tmpl.startSourceSpan), childView.create.tail);\n }\n}\nfunction ingestContent(unit, content) {\n if (content.i18n !== undefined && !(content.i18n instanceof TagPlaceholder)) {\n throw Error(`Unhandled i18n metadata type for element: ${content.i18n.constructor.name}`);\n }\n let fallbackView = null;\n if (content.children.some(child => !(child instanceof Comment$1) && (!(child instanceof Text$3) || child.value.trim().length > 0))) {\n fallbackView = unit.job.allocateView(unit.xref);\n ingestNodes(fallbackView, content.children);\n }\n const id = unit.job.allocateXrefId();\n const op = createProjectionOp(id, content.selector, content.i18n, fallbackView?.xref ?? null, content.sourceSpan);\n for (const attr of content.attributes) {\n const securityContext = domSchema.securityContext(content.name, attr.name, true);\n unit.update.push(createBindingOp(op.xref, BindingKind.Attribute, attr.name, literal(attr.value), null, securityContext, true, false, null, asMessage(attr.i18n), attr.sourceSpan));\n }\n unit.create.push(op);\n}\nfunction ingestText(unit, text, icuPlaceholder) {\n unit.create.push(createTextOp(unit.job.allocateXrefId(), text.value, icuPlaceholder, text.sourceSpan));\n}\nfunction ingestBoundText(unit, text, icuPlaceholder) {\n let value = text.value;\n if (value instanceof ASTWithSource) {\n value = value.ast;\n }\n if (!(value instanceof Interpolation$1)) {\n throw new Error(`AssertionError: expected Interpolation for BoundText node, got ${value.constructor.name}`);\n }\n if (text.i18n !== undefined && !(text.i18n instanceof Container)) {\n throw Error(`Unhandled i18n metadata type for text interpolation: ${text.i18n?.constructor.name}`);\n }\n const i18nPlaceholders = text.i18n instanceof Container ? text.i18n.children.filter(node => node instanceof Placeholder).map(placeholder => placeholder.name) : [];\n if (i18nPlaceholders.length > 0 && i18nPlaceholders.length !== value.expressions.length) {\n throw Error(`Unexpected number of i18n placeholders (${value.expressions.length}) for BoundText with ${value.expressions.length} expressions`);\n }\n const textXref = unit.job.allocateXrefId();\n unit.create.push(createTextOp(textXref, '', icuPlaceholder, text.sourceSpan));\n unit.update.push(createInterpolateTextOp(textXref, new Interpolation(value.strings, value.expressions.map(expr => convertAst(expr, unit.job, null)), i18nPlaceholders), text.sourceSpan));\n}\nfunction ingestIfBlock(unit, ifBlock) {\n let firstXref = null;\n let conditions = [];\n for (let i = 0; i < ifBlock.branches.length; i++) {\n const ifCase = ifBlock.branches[i];\n const cView = unit.job.allocateView(unit.xref);\n const tagName = ingestControlFlowInsertionPoint(unit, cView.xref, ifCase);\n if (ifCase.expressionAlias !== null) {\n cView.contextVariables.set(ifCase.expressionAlias.name, CTX_REF);\n }\n let ifCaseI18nMeta = undefined;\n if (ifCase.i18n !== undefined) {\n if (!(ifCase.i18n instanceof BlockPlaceholder)) {\n throw Error(`Unhandled i18n metadata type for if block: ${ifCase.i18n?.constructor.name}`);\n }\n ifCaseI18nMeta = ifCase.i18n;\n }\n const createOp = i === 0 ? createConditionalCreateOp : createConditionalBranchCreateOp;\n const conditionalCreateOp = createOp(cView.xref, TemplateKind.Block, tagName, 'Conditional', Namespace.HTML, ifCaseI18nMeta, ifCase.startSourceSpan, ifCase.sourceSpan);\n unit.create.push(conditionalCreateOp);\n if (firstXref === null) {\n firstXref = cView.xref;\n }\n const caseExpr = ifCase.expression ? convertAst(ifCase.expression, unit.job, null) : null;\n const conditionalCaseExpr = new ConditionalCaseExpr(caseExpr, conditionalCreateOp.xref, conditionalCreateOp.handle, ifCase.expressionAlias);\n conditions.push(conditionalCaseExpr);\n ingestNodes(cView, ifCase.children);\n }\n unit.update.push(createConditionalOp(firstXref, null, conditions, ifBlock.sourceSpan));\n}\nfunction ingestSwitchBlock(unit, switchBlock) {\n if (switchBlock.groups.length === 0) {\n return;\n }\n let firstXref = null;\n let conditions = [];\n for (let i = 0; i < switchBlock.groups.length; i++) {\n const switchCaseGroup = switchBlock.groups[i];\n const cView = unit.job.allocateView(unit.xref);\n const tagName = ingestControlFlowInsertionPoint(unit, cView.xref, switchCaseGroup);\n let switchCaseI18nMeta = undefined;\n if (switchCaseGroup.i18n !== undefined) {\n if (!(switchCaseGroup.i18n instanceof BlockPlaceholder)) {\n throw Error(`Unhandled i18n metadata type for switch block: ${switchCaseGroup.i18n?.constructor.name}`);\n }\n switchCaseI18nMeta = switchCaseGroup.i18n;\n }\n const createOp = i === 0 ? createConditionalCreateOp : createConditionalBranchCreateOp;\n const conditionalCreateOp = createOp(cView.xref, TemplateKind.Block, tagName, 'Case', Namespace.HTML, switchCaseI18nMeta, switchCaseGroup.startSourceSpan, switchCaseGroup.sourceSpan);\n unit.create.push(conditionalCreateOp);\n if (firstXref === null) {\n firstXref = cView.xref;\n }\n for (const switchCase of switchCaseGroup.cases) {\n const caseExpr = switchCase.expression ? convertAst(switchCase.expression, unit.job, switchBlock.startSourceSpan) : null;\n const conditionalCaseExpr = new ConditionalCaseExpr(caseExpr, conditionalCreateOp.xref, conditionalCreateOp.handle);\n conditions.push(conditionalCaseExpr);\n }\n ingestNodes(cView, switchCaseGroup.children);\n }\n unit.update.push(createConditionalOp(firstXref, convertAst(switchBlock.expression, unit.job, null), conditions, switchBlock.sourceSpan));\n}\nfunction ingestDeferView(unit, suffix, i18nMeta, children, sourceSpan) {\n if (i18nMeta !== undefined && !(i18nMeta instanceof BlockPlaceholder)) {\n throw Error('Unhandled i18n metadata type for defer block');\n }\n if (children === undefined) {\n return null;\n }\n const secondaryView = unit.job.allocateView(unit.xref);\n ingestNodes(secondaryView, children);\n const templateOp = createTemplateOp(secondaryView.xref, TemplateKind.Block, null, `Defer${suffix}`, Namespace.HTML, i18nMeta, sourceSpan, sourceSpan);\n unit.create.push(templateOp);\n return templateOp;\n}\nfunction ingestDeferBlock(unit, deferBlock) {\n let ownResolverFn = null;\n if (unit.job.deferMeta.mode === 0) {\n if (!unit.job.deferMeta.blocks.has(deferBlock)) {\n throw new Error(`AssertionError: unable to find a dependency function for this deferred block`);\n }\n ownResolverFn = unit.job.deferMeta.blocks.get(deferBlock) ?? null;\n }\n const main = ingestDeferView(unit, '', deferBlock.i18n, deferBlock.children, deferBlock.sourceSpan);\n const loading = ingestDeferView(unit, 'Loading', deferBlock.loading?.i18n, deferBlock.loading?.children, deferBlock.loading?.sourceSpan);\n const placeholder = ingestDeferView(unit, 'Placeholder', deferBlock.placeholder?.i18n, deferBlock.placeholder?.children, deferBlock.placeholder?.sourceSpan);\n const error = ingestDeferView(unit, 'Error', deferBlock.error?.i18n, deferBlock.error?.children, deferBlock.error?.sourceSpan);\n const deferXref = unit.job.allocateXrefId();\n const deferOp = createDeferOp(deferXref, main.xref, main.handle, ownResolverFn, unit.job.allDeferrableDepsFn, deferBlock.sourceSpan);\n deferOp.placeholderView = placeholder?.xref ?? null;\n deferOp.placeholderSlot = placeholder?.handle ?? null;\n deferOp.loadingSlot = loading?.handle ?? null;\n deferOp.errorSlot = error?.handle ?? null;\n deferOp.placeholderMinimumTime = deferBlock.placeholder?.minimumTime ?? null;\n deferOp.loadingMinimumTime = deferBlock.loading?.minimumTime ?? null;\n deferOp.loadingAfterTime = deferBlock.loading?.afterTime ?? null;\n deferOp.flags = calcDeferBlockFlags(deferBlock);\n unit.create.push(deferOp);\n const deferOnOps = [];\n const deferWhenOps = [];\n ingestDeferTriggers(\"hydrate\", deferBlock.hydrateTriggers, deferOnOps, deferWhenOps, unit, deferXref);\n ingestDeferTriggers(\"none\", deferBlock.triggers, deferOnOps, deferWhenOps, unit, deferXref);\n ingestDeferTriggers(\"prefetch\", deferBlock.prefetchTriggers, deferOnOps, deferWhenOps, unit, deferXref);\n const hasConcreteTrigger = deferOnOps.some(op => op.modifier === \"none\") || deferWhenOps.some(op => op.modifier === \"none\");\n if (!hasConcreteTrigger) {\n deferOnOps.push(createDeferOnOp(deferXref, {\n kind: DeferTriggerKind.Idle\n }, \"none\", null));\n }\n unit.create.push(deferOnOps);\n unit.update.push(deferWhenOps);\n}\nfunction calcDeferBlockFlags(deferBlockDetails) {\n if (Object.keys(deferBlockDetails.hydrateTriggers).length > 0) {\n return 1;\n }\n return null;\n}\nfunction ingestDeferTriggers(modifier, triggers, onOps, whenOps, unit, deferXref) {\n if (triggers.idle !== undefined) {\n const deferOnOp = createDeferOnOp(deferXref, {\n kind: DeferTriggerKind.Idle\n }, modifier, triggers.idle.sourceSpan);\n onOps.push(deferOnOp);\n }\n if (triggers.immediate !== undefined) {\n const deferOnOp = createDeferOnOp(deferXref, {\n kind: DeferTriggerKind.Immediate\n }, modifier, triggers.immediate.sourceSpan);\n onOps.push(deferOnOp);\n }\n if (triggers.timer !== undefined) {\n const deferOnOp = createDeferOnOp(deferXref, {\n kind: DeferTriggerKind.Timer,\n delay: triggers.timer.delay\n }, modifier, triggers.timer.sourceSpan);\n onOps.push(deferOnOp);\n }\n if (triggers.hover !== undefined) {\n const deferOnOp = createDeferOnOp(deferXref, {\n kind: DeferTriggerKind.Hover,\n targetName: triggers.hover.reference,\n targetXref: null,\n targetSlot: null,\n targetView: null,\n targetSlotViewSteps: null\n }, modifier, triggers.hover.sourceSpan);\n onOps.push(deferOnOp);\n }\n if (triggers.interaction !== undefined) {\n const deferOnOp = createDeferOnOp(deferXref, {\n kind: DeferTriggerKind.Interaction,\n targetName: triggers.interaction.reference,\n targetXref: null,\n targetSlot: null,\n targetView: null,\n targetSlotViewSteps: null\n }, modifier, triggers.interaction.sourceSpan);\n onOps.push(deferOnOp);\n }\n if (triggers.viewport !== undefined) {\n const deferOnOp = createDeferOnOp(deferXref, {\n kind: DeferTriggerKind.Viewport,\n targetName: triggers.viewport.reference,\n targetXref: null,\n targetSlot: null,\n targetView: null,\n targetSlotViewSteps: null,\n options: triggers.viewport.options ? convertAst(triggers.viewport.options, unit.job, triggers.viewport.sourceSpan) : null\n }, modifier, triggers.viewport.sourceSpan);\n onOps.push(deferOnOp);\n }\n if (triggers.never !== undefined) {\n const deferOnOp = createDeferOnOp(deferXref, {\n kind: DeferTriggerKind.Never\n }, modifier, triggers.never.sourceSpan);\n onOps.push(deferOnOp);\n }\n if (triggers.when !== undefined) {\n if (triggers.when.value instanceof Interpolation$1) {\n throw new Error(`Unexpected interpolation in defer block when trigger`);\n }\n const deferOnOp = createDeferWhenOp(deferXref, convertAst(triggers.when.value, unit.job, triggers.when.sourceSpan), modifier, triggers.when.sourceSpan);\n whenOps.push(deferOnOp);\n }\n}\nfunction ingestIcu(unit, icu) {\n if (icu.i18n instanceof Message && isSingleI18nIcu(icu.i18n)) {\n const xref = unit.job.allocateXrefId();\n unit.create.push(createIcuStartOp(xref, icu.i18n, icuFromI18nMessage(icu.i18n).name, null));\n for (const [placeholder, text] of Object.entries({\n ...icu.vars,\n ...icu.placeholders\n })) {\n if (text instanceof BoundText) {\n ingestBoundText(unit, text, placeholder);\n } else {\n ingestText(unit, text, placeholder);\n }\n }\n unit.create.push(createIcuEndOp(xref));\n } else {\n throw Error(`Unhandled i18n metadata type for ICU: ${icu.i18n?.constructor.name}`);\n }\n}\nfunction ingestForBlock(unit, forBlock) {\n const repeaterView = unit.job.allocateView(unit.xref);\n const indexName = `ɵ$index_${repeaterView.xref}`;\n const countName = `ɵ$count_${repeaterView.xref}`;\n const indexVarNames = new Set();\n repeaterView.contextVariables.set(forBlock.item.name, forBlock.item.value);\n for (const variable of forBlock.contextVariables) {\n if (variable.value === '$index') {\n indexVarNames.add(variable.name);\n }\n if (variable.name === '$index') {\n repeaterView.contextVariables.set('$index', variable.value).set(indexName, variable.value);\n } else if (variable.name === '$count') {\n repeaterView.contextVariables.set('$count', variable.value).set(countName, variable.value);\n } else {\n repeaterView.aliases.add({\n kind: SemanticVariableKind.Alias,\n name: null,\n identifier: variable.name,\n expression: getComputedForLoopVariableExpression(variable, indexName, countName)\n });\n }\n }\n const sourceSpan = convertSourceSpan(forBlock.trackBy.span, forBlock.sourceSpan);\n const track = convertAst(forBlock.trackBy, unit.job, sourceSpan);\n ingestNodes(repeaterView, forBlock.children);\n let emptyView = null;\n let emptyTagName = null;\n if (forBlock.empty !== null) {\n emptyView = unit.job.allocateView(unit.xref);\n ingestNodes(emptyView, forBlock.empty.children);\n emptyTagName = ingestControlFlowInsertionPoint(unit, emptyView.xref, forBlock.empty);\n }\n const varNames = {\n $index: indexVarNames,\n $implicit: forBlock.item.name\n };\n if (forBlock.i18n !== undefined && !(forBlock.i18n instanceof BlockPlaceholder)) {\n throw Error('AssertionError: Unhandled i18n metadata type or @for');\n }\n if (forBlock.empty?.i18n !== undefined && !(forBlock.empty.i18n instanceof BlockPlaceholder)) {\n throw Error('AssertionError: Unhandled i18n metadata type or @empty');\n }\n const i18nPlaceholder = forBlock.i18n;\n const emptyI18nPlaceholder = forBlock.empty?.i18n;\n const tagName = ingestControlFlowInsertionPoint(unit, repeaterView.xref, forBlock);\n const repeaterCreate = createRepeaterCreateOp(repeaterView.xref, emptyView?.xref ?? null, tagName, track, varNames, emptyTagName, i18nPlaceholder, emptyI18nPlaceholder, forBlock.startSourceSpan, forBlock.sourceSpan);\n unit.create.push(repeaterCreate);\n const expression = convertAst(forBlock.expression, unit.job, convertSourceSpan(forBlock.expression.span, forBlock.sourceSpan));\n const repeater = createRepeaterOp(repeaterCreate.xref, repeaterCreate.handle, expression, forBlock.sourceSpan);\n unit.update.push(repeater);\n}\nfunction getComputedForLoopVariableExpression(variable, indexName, countName) {\n switch (variable.value) {\n case '$index':\n return new LexicalReadExpr(indexName);\n case '$count':\n return new LexicalReadExpr(countName);\n case '$first':\n return new LexicalReadExpr(indexName).identical(literal(0));\n case '$last':\n return new LexicalReadExpr(indexName).identical(new LexicalReadExpr(countName).minus(literal(1)));\n case '$even':\n return new LexicalReadExpr(indexName).modulo(literal(2)).identical(literal(0));\n case '$odd':\n return new LexicalReadExpr(indexName).modulo(literal(2)).notIdentical(literal(0));\n default:\n throw new Error(`AssertionError: unknown @for loop variable ${variable.value}`);\n }\n}\nfunction ingestLetDeclaration(unit, node) {\n const target = unit.job.allocateXrefId();\n unit.create.push(createDeclareLetOp(target, node.name, node.sourceSpan));\n unit.update.push(createStoreLetOp(target, node.name, convertAst(node.value, unit.job, node.valueSpan), node.sourceSpan));\n}\nfunction convertAst(ast, job, baseSourceSpan) {\n if (ast instanceof ASTWithSource) {\n return convertAst(ast.ast, job, baseSourceSpan);\n } else if (ast instanceof PropertyRead) {\n if (ast.receiver instanceof ImplicitReceiver) {\n return new LexicalReadExpr(ast.name);\n } else {\n return new ReadPropExpr(convertAst(ast.receiver, job, baseSourceSpan), ast.name, null, convertSourceSpan(ast.span, baseSourceSpan));\n }\n } else if (ast instanceof Call) {\n if (ast.receiver instanceof ImplicitReceiver) {\n throw new Error(`Unexpected ImplicitReceiver`);\n } else {\n return new InvokeFunctionExpr(convertAst(ast.receiver, job, baseSourceSpan), ast.args.map(arg => convertAst(arg, job, baseSourceSpan)), undefined, convertSourceSpan(ast.span, baseSourceSpan));\n }\n } else if (ast instanceof LiteralPrimitive) {\n return literal(ast.value, undefined, convertSourceSpan(ast.span, baseSourceSpan));\n } else if (ast instanceof Unary) {\n switch (ast.operator) {\n case '+':\n return new UnaryOperatorExpr(UnaryOperator.Plus, convertAst(ast.expr, job, baseSourceSpan), undefined, convertSourceSpan(ast.span, baseSourceSpan));\n case '-':\n return new UnaryOperatorExpr(UnaryOperator.Minus, convertAst(ast.expr, job, baseSourceSpan), undefined, convertSourceSpan(ast.span, baseSourceSpan));\n default:\n throw new Error(`AssertionError: unknown unary operator ${ast.operator}`);\n }\n } else if (ast instanceof Binary) {\n const operator = BINARY_OPERATORS.get(ast.operation);\n if (operator === undefined) {\n throw new Error(`AssertionError: unknown binary operator ${ast.operation}`);\n }\n return new BinaryOperatorExpr(operator, convertAst(ast.left, job, baseSourceSpan), convertAst(ast.right, job, baseSourceSpan), undefined, convertSourceSpan(ast.span, baseSourceSpan));\n } else if (ast instanceof ThisReceiver) {\n return new ContextExpr(job.root.xref);\n } else if (ast instanceof KeyedRead) {\n return new ReadKeyExpr(convertAst(ast.receiver, job, baseSourceSpan), convertAst(ast.key, job, baseSourceSpan), undefined, convertSourceSpan(ast.span, baseSourceSpan));\n } else if (ast instanceof Chain) {\n throw new Error(`AssertionError: Chain in unknown context`);\n } else if (ast instanceof LiteralMap) {\n const entries = ast.keys.map((key, idx) => {\n const value = convertAst(ast.values[idx], job, baseSourceSpan);\n return key.kind === 'spread' ? new LiteralMapSpreadAssignment(value) : new LiteralMapPropertyAssignment(key.key, value, key.quoted);\n });\n return new LiteralMapExpr(entries, undefined, convertSourceSpan(ast.span, baseSourceSpan));\n } else if (ast instanceof LiteralArray) {\n return new LiteralArrayExpr(ast.expressions.map(expr => convertAst(expr, job, baseSourceSpan)));\n } else if (ast instanceof Conditional) {\n return new ConditionalExpr(convertAst(ast.condition, job, baseSourceSpan), convertAst(ast.trueExp, job, baseSourceSpan), convertAst(ast.falseExp, job, baseSourceSpan), undefined, convertSourceSpan(ast.span, baseSourceSpan));\n } else if (ast instanceof NonNullAssert) {\n return convertAst(ast.expression, job, baseSourceSpan);\n } else if (ast instanceof BindingPipe) {\n return new PipeBindingExpr(job.allocateXrefId(), new SlotHandle(), ast.name, [convertAst(ast.exp, job, baseSourceSpan), ...ast.args.map(arg => convertAst(arg, job, baseSourceSpan))]);\n } else if (ast instanceof SafeKeyedRead) {\n return new SafeKeyedReadExpr(convertAst(ast.receiver, job, baseSourceSpan), convertAst(ast.key, job, baseSourceSpan), convertSourceSpan(ast.span, baseSourceSpan));\n } else if (ast instanceof SafePropertyRead) {\n return new SafePropertyReadExpr(convertAst(ast.receiver, job, baseSourceSpan), ast.name);\n } else if (ast instanceof SafeCall) {\n return new SafeInvokeFunctionExpr(convertAst(ast.receiver, job, baseSourceSpan), ast.args.map(a => convertAst(a, job, baseSourceSpan)));\n } else if (ast instanceof EmptyExpr$1) {\n return new EmptyExpr(convertSourceSpan(ast.span, baseSourceSpan));\n } else if (ast instanceof PrefixNot) {\n return not(convertAst(ast.expression, job, baseSourceSpan), convertSourceSpan(ast.span, baseSourceSpan));\n } else if (ast instanceof TypeofExpression) {\n return typeofExpr(convertAst(ast.expression, job, baseSourceSpan));\n } else if (ast instanceof VoidExpression) {\n return new VoidExpr(convertAst(ast.expression, job, baseSourceSpan), undefined, convertSourceSpan(ast.span, baseSourceSpan));\n } else if (ast instanceof TemplateLiteral) {\n return convertTemplateLiteral(ast, job, baseSourceSpan);\n } else if (ast instanceof TaggedTemplateLiteral) {\n return new TaggedTemplateLiteralExpr(convertAst(ast.tag, job, baseSourceSpan), convertTemplateLiteral(ast.template, job, baseSourceSpan), undefined, convertSourceSpan(ast.span, baseSourceSpan));\n } else if (ast instanceof ParenthesizedExpression) {\n return new ParenthesizedExpr(convertAst(ast.expression, job, baseSourceSpan), undefined, convertSourceSpan(ast.span, baseSourceSpan));\n } else if (ast instanceof RegularExpressionLiteral) {\n return new RegularExpressionLiteralExpr(ast.body, ast.flags, baseSourceSpan);\n } else if (ast instanceof SpreadElement) {\n return new SpreadElementExpr(convertAst(ast.expression, job, baseSourceSpan));\n } else if (ast instanceof ArrowFunction) {\n return updateParameterReferences(arrowFn(ast.parameters.map(arg => new FnParam(arg.name, DYNAMIC_TYPE)), convertAst(ast.body, job, baseSourceSpan)));\n } else {\n throw new Error(`Unhandled expression type \"${ast.constructor.name}\" in file \"${baseSourceSpan?.start.file.url}\"`);\n }\n}\nfunction convertTemplateLiteral(ast, job, baseSourceSpan) {\n return new TemplateLiteralExpr(ast.elements.map(el => {\n return new TemplateLiteralElementExpr(el.text, convertSourceSpan(el.span, baseSourceSpan));\n }), ast.expressions.map(expr => convertAst(expr, job, baseSourceSpan)), convertSourceSpan(ast.span, baseSourceSpan));\n}\nfunction convertAstWithInterpolation(job, value, i18nMeta, sourceSpan) {\n let expression;\n if (value instanceof Interpolation$1) {\n expression = new Interpolation(value.strings, value.expressions.map(e => convertAst(e, job, null)), Object.keys(asMessage(i18nMeta)?.placeholders ?? {}));\n } else if (value instanceof AST) {\n expression = convertAst(value, job, null);\n } else {\n expression = literal(value);\n }\n return expression;\n}\nconst BINDING_KINDS = new Map([[BindingType.Property, BindingKind.Property], [BindingType.TwoWay, BindingKind.TwoWayProperty], [BindingType.Attribute, BindingKind.Attribute], [BindingType.Class, BindingKind.ClassName], [BindingType.Style, BindingKind.StyleProperty], [BindingType.LegacyAnimation, BindingKind.LegacyAnimation], [BindingType.Animation, BindingKind.Animation]]);\nfunction isPlainTemplate(tmpl) {\n return splitNsName(tmpl.tagName ?? '')[1] === NG_TEMPLATE_TAG_NAME;\n}\nfunction asMessage(i18nMeta) {\n if (i18nMeta == null) {\n return null;\n }\n if (!(i18nMeta instanceof Message)) {\n throw Error(`Expected i18n meta to be a Message, but got: ${i18nMeta.constructor.name}`);\n }\n return i18nMeta;\n}\nfunction ingestElementBindings(unit, op, element) {\n let bindings = new Array();\n let i18nAttributeBindingNames = new Set();\n for (const attr of element.attributes) {\n const securityContext = domSchema.securityContext(element.name, attr.name, true);\n bindings.push(createBindingOp(op.xref, BindingKind.Attribute, attr.name, convertAstWithInterpolation(unit.job, attr.value, attr.i18n), null, securityContext, true, false, null, asMessage(attr.i18n), attr.sourceSpan));\n if (attr.i18n) {\n i18nAttributeBindingNames.add(attr.name);\n }\n }\n for (const input of element.inputs) {\n if (i18nAttributeBindingNames.has(input.name)) {\n console.error(`On component ${unit.job.componentName}, the binding ${input.name} is both an i18n attribute and a property. You may want to remove the property binding. This will become a compilation error in future versions of Angular.`);\n }\n bindings.push(createBindingOp(op.xref, BINDING_KINDS.get(input.type), input.name, convertAstWithInterpolation(unit.job, astOf(input.value), input.i18n), input.unit, input.securityContext, false, false, null, asMessage(input.i18n) ?? null, input.sourceSpan));\n }\n unit.create.push(bindings.filter(b => b?.kind === OpKind.ExtractedAttribute));\n unit.update.push(bindings.filter(b => b?.kind === OpKind.Binding));\n for (const output of element.outputs) {\n if (output.type === ParsedEventType.LegacyAnimation && output.phase === null) {\n throw Error('Animation listener should have a phase');\n }\n if (output.type === ParsedEventType.TwoWay) {\n unit.create.push(createTwoWayListenerOp(op.xref, op.handle, output.name, op.tag, makeTwoWayListenerHandlerOps(unit, output.handler, output.handlerSpan), output.sourceSpan));\n } else if (output.type === ParsedEventType.Animation) {\n unit.create.push(createAnimationListenerOp(op.xref, op.handle, output.name, op.tag, makeListenerHandlerOps(unit, output.handler, output.handlerSpan), output.name.endsWith('enter') ? \"enter\" : \"leave\", output.target, false, output.sourceSpan));\n } else {\n unit.create.push(createListenerOp(op.xref, op.handle, output.name, op.tag, makeListenerHandlerOps(unit, output.handler, output.handlerSpan), output.phase, output.target, false, output.sourceSpan));\n }\n }\n if (bindings.some(b => b?.i18nMessage) !== null) {\n unit.create.push(createI18nAttributesOp(unit.job.allocateXrefId(), new SlotHandle(), op.xref));\n }\n}\nfunction ingestTemplateBindings(unit, op, template, templateKind) {\n let bindings = new Array();\n for (const attr of template.templateAttrs) {\n if (attr instanceof TextAttribute) {\n const securityContext = domSchema.securityContext(NG_TEMPLATE_TAG_NAME, attr.name, true);\n bindings.push(createTemplateBinding(unit, op.xref, BindingType.Attribute, attr.name, attr.value, null, securityContext, true, templateKind, asMessage(attr.i18n), attr.sourceSpan));\n } else {\n bindings.push(createTemplateBinding(unit, op.xref, attr.type, attr.name, astOf(attr.value), attr.unit, attr.securityContext, true, templateKind, asMessage(attr.i18n), attr.sourceSpan));\n }\n }\n for (const attr of template.attributes) {\n const securityContext = domSchema.securityContext(NG_TEMPLATE_TAG_NAME, attr.name, true);\n bindings.push(createTemplateBinding(unit, op.xref, BindingType.Attribute, attr.name, attr.value, null, securityContext, false, templateKind, asMessage(attr.i18n), attr.sourceSpan));\n }\n for (const input of template.inputs) {\n bindings.push(createTemplateBinding(unit, op.xref, input.type, input.name, astOf(input.value), input.unit, input.securityContext, false, templateKind, asMessage(input.i18n), input.sourceSpan));\n }\n unit.create.push(bindings.filter(b => b?.kind === OpKind.ExtractedAttribute));\n unit.update.push(bindings.filter(b => b?.kind === OpKind.Binding));\n for (const output of template.outputs) {\n if (output.type === ParsedEventType.LegacyAnimation && output.phase === null) {\n throw Error('Animation listener should have a phase');\n }\n if (templateKind === TemplateKind.NgTemplate) {\n if (output.type === ParsedEventType.TwoWay) {\n unit.create.push(createTwoWayListenerOp(op.xref, op.handle, output.name, op.tag, makeTwoWayListenerHandlerOps(unit, output.handler, output.handlerSpan), output.sourceSpan));\n } else {\n unit.create.push(createListenerOp(op.xref, op.handle, output.name, op.tag, makeListenerHandlerOps(unit, output.handler, output.handlerSpan), output.phase, output.target, false, output.sourceSpan));\n }\n }\n if (templateKind === TemplateKind.Structural && output.type !== ParsedEventType.LegacyAnimation) {\n const securityContext = domSchema.securityContext(NG_TEMPLATE_TAG_NAME, output.name, false);\n unit.create.push(createExtractedAttributeOp(op.xref, BindingKind.Property, null, output.name, null, null, null, securityContext));\n }\n }\n if (bindings.some(b => b?.i18nMessage) !== null) {\n unit.create.push(createI18nAttributesOp(unit.job.allocateXrefId(), new SlotHandle(), op.xref));\n }\n}\nfunction createTemplateBinding(view, xref, type, name, value, unit, securityContext, isStructuralTemplateAttribute, templateKind, i18nMessage, sourceSpan) {\n const isTextBinding = typeof value === 'string';\n if (templateKind === TemplateKind.Structural) {\n if (!isStructuralTemplateAttribute) {\n switch (type) {\n case BindingType.Property:\n case BindingType.Class:\n case BindingType.Style:\n return createExtractedAttributeOp(xref, BindingKind.Property, null, name, null, null, i18nMessage, securityContext);\n case BindingType.TwoWay:\n return createExtractedAttributeOp(xref, BindingKind.TwoWayProperty, null, name, null, null, i18nMessage, securityContext);\n }\n }\n if (!isTextBinding && (type === BindingType.Attribute || type === BindingType.LegacyAnimation || type === BindingType.Animation)) {\n return null;\n }\n }\n let bindingType = BINDING_KINDS.get(type);\n if (templateKind === TemplateKind.NgTemplate) {\n if (type === BindingType.Class || type === BindingType.Style || type === BindingType.Attribute && !isTextBinding) {\n bindingType = BindingKind.Property;\n }\n }\n return createBindingOp(xref, bindingType, name, convertAstWithInterpolation(view.job, value, i18nMessage), unit, securityContext, isTextBinding, isStructuralTemplateAttribute, templateKind, i18nMessage, sourceSpan);\n}\nfunction makeListenerHandlerOps(unit, handler, handlerSpan) {\n handler = astOf(handler);\n const handlerOps = new Array();\n let handlerExprs = handler instanceof Chain ? handler.expressions : [handler];\n if (handlerExprs.length === 0) {\n throw new Error('Expected listener to have non-empty expression list.');\n }\n const expressions = handlerExprs.map(expr => convertAst(expr, unit.job, handlerSpan));\n const returnExpr = expressions.pop();\n handlerOps.push(...expressions.map(e => createStatementOp(new ExpressionStatement(e, e.sourceSpan))));\n handlerOps.push(createStatementOp(new ReturnStatement(returnExpr, returnExpr.sourceSpan)));\n return handlerOps;\n}\nfunction makeTwoWayListenerHandlerOps(unit, handler, handlerSpan) {\n handler = astOf(handler);\n const handlerOps = new Array();\n if (handler instanceof Chain) {\n if (handler.expressions.length === 1) {\n handler = handler.expressions[0];\n } else {\n throw new Error('Expected two-way listener to have a single expression.');\n }\n }\n const handlerExpr = convertAst(handler, unit.job, handlerSpan);\n const eventReference = new LexicalReadExpr('$event');\n const twoWaySetExpr = new TwoWayBindingSetExpr(handlerExpr, eventReference);\n handlerOps.push(createStatementOp(new ExpressionStatement(twoWaySetExpr)));\n handlerOps.push(createStatementOp(new ReturnStatement(eventReference)));\n return handlerOps;\n}\nfunction astOf(ast) {\n return ast instanceof ASTWithSource ? ast.ast : ast;\n}\nfunction ingestReferences(op, element) {\n assertIsArray(op.localRefs);\n for (const {\n name,\n value\n } of element.references) {\n op.localRefs.push({\n name,\n target: value\n });\n }\n}\nfunction assertIsArray(value) {\n if (!Array.isArray(value)) {\n throw new Error(`AssertionError: expected an array`);\n }\n}\nfunction convertSourceSpan(span, baseSourceSpan) {\n if (baseSourceSpan === null) {\n return null;\n }\n const start = baseSourceSpan.start.moveBy(span.start);\n const end = baseSourceSpan.start.moveBy(span.end);\n const fullStart = baseSourceSpan.fullStart.moveBy(span.start);\n return new ParseSourceSpan(start, end, fullStart);\n}\nfunction ingestControlFlowInsertionPoint(unit, xref, node) {\n let root = null;\n for (const child of node.children) {\n if (child instanceof Comment$1 || child instanceof LetDeclaration$1) {\n continue;\n }\n if (root !== null) {\n return null;\n }\n if (child instanceof Element$1 || child instanceof Template && child.tagName !== null) {\n root = child;\n } else {\n return null;\n }\n }\n if (root !== null) {\n for (const attr of root.attributes) {\n if (!attr.name.startsWith(ANIMATE_PREFIX$1)) {\n const securityContext = domSchema.securityContext(NG_TEMPLATE_TAG_NAME, attr.name, true);\n unit.update.push(createBindingOp(xref, BindingKind.Attribute, attr.name, literal(attr.value), null, securityContext, true, false, null, asMessage(attr.i18n), attr.sourceSpan));\n }\n }\n for (const attr of root.inputs) {\n if (attr.type !== BindingType.LegacyAnimation && attr.type !== BindingType.Animation && attr.type !== BindingType.Attribute) {\n const securityContext = domSchema.securityContext(NG_TEMPLATE_TAG_NAME, attr.name, true);\n unit.create.push(createExtractedAttributeOp(xref, BindingKind.Property, null, attr.name, null, null, null, securityContext));\n }\n }\n const tagName = root instanceof Element$1 ? root.name : root.tagName;\n return tagName === NG_TEMPLATE_TAG_NAME ? null : tagName;\n }\n return null;\n}\nfunction updateParameterReferences(root) {\n const parameterNames = new Set(root.params.map(param => param.name));\n return transformExpressionsInExpression(root, expr => {\n if (expr instanceof ArrowFunctionExpr$1) {\n for (const param of expr.params) {\n parameterNames.add(param.name);\n }\n } else if (expr instanceof LexicalReadExpr && parameterNames.has(expr.name)) {\n return variable(expr.name);\n }\n return expr;\n }, VisitorContextFlag.None);\n}\n\nlet ENABLE_TEMPLATE_SOURCE_LOCATIONS = false;\nfunction setEnableTemplateSourceLocations(value) {\n ENABLE_TEMPLATE_SOURCE_LOCATIONS = value;\n}\nfunction getTemplateSourceLocationsEnabled() {\n return ENABLE_TEMPLATE_SOURCE_LOCATIONS;\n}\n\nfunction renderFlagCheckIfStmt(flags, statements) {\n return ifStmt(variable(RENDER_FLAGS).bitwiseAnd(literal(flags), null), statements);\n}\nfunction toQueryFlags(query) {\n return (query.descendants ? 1 : 0) | (query.static ? 2 : 0) | (query.emitDistinctChangesOnly ? 4 : 0);\n}\nfunction getQueryPredicate(query, constantPool) {\n if (Array.isArray(query.predicate)) {\n let predicate = [];\n query.predicate.forEach(selector => {\n const selectors = selector.split(',').map(token => literal(token.trim()));\n predicate.push(...selectors);\n });\n return constantPool.getConstLiteral(literalArr(predicate), true);\n } else {\n switch (query.predicate.forwardRef) {\n case 0:\n case 2:\n return query.predicate.expression;\n case 1:\n return importExpr(Identifiers.resolveForwardRef).callFn([query.predicate.expression]);\n }\n }\n}\nfunction getQueryCreateParameters(query, constantPool, prependParams) {\n const parameters = [];\n if (prependParams !== undefined) {\n parameters.push(...prependParams);\n }\n if (query.isSignal) {\n parameters.push(new ReadPropExpr(variable(CONTEXT_NAME), query.propertyName));\n }\n parameters.push(getQueryPredicate(query, constantPool), literal(toQueryFlags(query)));\n if (query.read) {\n parameters.push(query.read);\n }\n return parameters;\n}\nconst queryAdvancePlaceholder = Symbol('queryAdvancePlaceholder');\nfunction collapseAdvanceStatements(statements) {\n const result = [];\n let advanceCollapseCount = 0;\n const flushAdvanceCount = () => {\n if (advanceCollapseCount > 0) {\n result.unshift(importExpr(Identifiers.queryAdvance).callFn(advanceCollapseCount === 1 ? [] : [literal(advanceCollapseCount)]).toStmt());\n advanceCollapseCount = 0;\n }\n };\n for (let i = statements.length - 1; i >= 0; i--) {\n const st = statements[i];\n if (st === queryAdvancePlaceholder) {\n advanceCollapseCount++;\n } else {\n flushAdvanceCount();\n result.unshift(st);\n }\n }\n flushAdvanceCount();\n return result;\n}\nfunction createViewQueriesFunction(viewQueries, constantPool, name) {\n const createStatements = [];\n const updateStatements = [];\n const tempAllocator = temporaryAllocator(st => updateStatements.push(st), TEMPORARY_NAME);\n let viewQuerySignalCall = null;\n let viewQueryCall = null;\n viewQueries.forEach(query => {\n const params = getQueryCreateParameters(query, constantPool);\n if (query.isSignal) {\n viewQuerySignalCall ??= importExpr(Identifiers.viewQuerySignal);\n viewQuerySignalCall = viewQuerySignalCall.callFn(params);\n } else {\n viewQueryCall ??= importExpr(Identifiers.viewQuery);\n viewQueryCall = viewQueryCall.callFn(params);\n }\n if (query.isSignal) {\n updateStatements.push(queryAdvancePlaceholder);\n return;\n }\n const temporary = tempAllocator();\n const getQueryList = importExpr(Identifiers.loadQuery).callFn([]);\n const refresh = importExpr(Identifiers.queryRefresh).callFn([temporary.set(getQueryList)]);\n const updateDirective = variable(CONTEXT_NAME).prop(query.propertyName).set(query.first ? temporary.prop('first') : temporary);\n updateStatements.push(refresh.and(updateDirective).toStmt());\n });\n if (viewQuerySignalCall !== null) {\n createStatements.push(new ExpressionStatement(viewQuerySignalCall));\n }\n if (viewQueryCall !== null) {\n createStatements.push(new ExpressionStatement(viewQueryCall));\n }\n const viewQueryFnName = name ? `${name}_Query` : null;\n return fn([new FnParam(RENDER_FLAGS, NUMBER_TYPE), new FnParam(CONTEXT_NAME, DYNAMIC_TYPE)], [renderFlagCheckIfStmt(1, createStatements), renderFlagCheckIfStmt(2, collapseAdvanceStatements(updateStatements))], INFERRED_TYPE, null, viewQueryFnName);\n}\nfunction createContentQueriesFunction(queries, constantPool, name) {\n const createStatements = [];\n const updateStatements = [];\n const tempAllocator = temporaryAllocator(st => updateStatements.push(st), TEMPORARY_NAME);\n let contentQuerySignalCall = null;\n let contentQueryCall = null;\n for (const query of queries) {\n const params = getQueryCreateParameters(query, constantPool, [variable('dirIndex')]);\n if (query.isSignal) {\n contentQuerySignalCall ??= importExpr(Identifiers.contentQuerySignal);\n contentQuerySignalCall = contentQuerySignalCall.callFn(params);\n } else {\n contentQueryCall ??= importExpr(Identifiers.contentQuery);\n contentQueryCall = contentQueryCall.callFn(params);\n }\n if (query.isSignal) {\n updateStatements.push(queryAdvancePlaceholder);\n continue;\n }\n const temporary = tempAllocator();\n const getQueryList = importExpr(Identifiers.loadQuery).callFn([]);\n const refresh = importExpr(Identifiers.queryRefresh).callFn([temporary.set(getQueryList)]);\n const updateDirective = variable(CONTEXT_NAME).prop(query.propertyName).set(query.first ? temporary.prop('first') : temporary);\n updateStatements.push(refresh.and(updateDirective).toStmt());\n }\n if (contentQuerySignalCall !== null) {\n createStatements.push(new ExpressionStatement(contentQuerySignalCall));\n }\n if (contentQueryCall !== null) {\n createStatements.push(new ExpressionStatement(contentQueryCall));\n }\n const contentQueriesFnName = name ? `${name}_ContentQueries` : null;\n return fn([new FnParam(RENDER_FLAGS, NUMBER_TYPE), new FnParam(CONTEXT_NAME, DYNAMIC_TYPE), new FnParam('dirIndex', NUMBER_TYPE)], [renderFlagCheckIfStmt(1, createStatements), renderFlagCheckIfStmt(2, collapseAdvanceStatements(updateStatements))], INFERRED_TYPE, null, contentQueriesFnName);\n}\n\nclass HtmlParser extends Parser$1 {\n constructor() {\n super(getHtmlTagDefinition);\n }\n parse(source, url, options) {\n return super.parse(source, url, options);\n }\n}\n\nconst PROPERTY_PARTS_SEPARATOR = '.';\nconst ATTRIBUTE_PREFIX = 'attr';\nconst ANIMATE_PREFIX = 'animate';\nconst CLASS_PREFIX = 'class';\nconst STYLE_PREFIX = 'style';\nconst TEMPLATE_ATTR_PREFIX$1 = '*';\nconst LEGACY_ANIMATE_PROP_PREFIX = 'animate-';\nclass BindingParser {\n _exprParser;\n _schemaRegistry;\n errors;\n constructor(_exprParser, _schemaRegistry, errors) {\n this._exprParser = _exprParser;\n this._schemaRegistry = _schemaRegistry;\n this.errors = errors;\n }\n createBoundHostProperties(properties, sourceSpan) {\n const boundProps = [];\n for (const propName of Object.keys(properties)) {\n const expression = properties[propName];\n if (typeof expression === 'string') {\n this.parsePropertyBinding(propName, expression, true, false, sourceSpan, sourceSpan.start.offset, undefined, [], boundProps, sourceSpan);\n } else {\n this._reportError(`Value of the host property binding \"${propName}\" needs to be a string representing an expression but got \"${expression}\" (${typeof expression})`, sourceSpan);\n }\n }\n return boundProps;\n }\n createDirectiveHostEventAsts(hostListeners, sourceSpan) {\n const targetEvents = [];\n for (const propName of Object.keys(hostListeners)) {\n const expression = hostListeners[propName];\n if (typeof expression === 'string') {\n this.parseEvent(propName, expression, false, sourceSpan, sourceSpan, [], targetEvents, sourceSpan);\n } else {\n this._reportError(`Value of the host listener \"${propName}\" needs to be a string representing an expression but got \"${expression}\" (${typeof expression})`, sourceSpan);\n }\n }\n return targetEvents;\n }\n parseInterpolation(value, sourceSpan, interpolatedTokens) {\n const absoluteOffset = sourceSpan.fullStart.offset;\n try {\n const ast = this._exprParser.parseInterpolation(value, sourceSpan, absoluteOffset, interpolatedTokens);\n if (ast) {\n this.errors.push(...ast.errors);\n }\n return ast;\n } catch (e) {\n this._reportError(`${e}`, sourceSpan);\n return this._exprParser.wrapLiteralPrimitive('ERROR', sourceSpan, absoluteOffset);\n }\n }\n parseInterpolationExpression(expression, sourceSpan) {\n const absoluteOffset = sourceSpan.start.offset;\n try {\n const ast = this._exprParser.parseInterpolationExpression(expression, sourceSpan, absoluteOffset);\n if (ast) {\n this.errors.push(...ast.errors);\n }\n return ast;\n } catch (e) {\n this._reportError(`${e}`, sourceSpan);\n return this._exprParser.wrapLiteralPrimitive('ERROR', sourceSpan, absoluteOffset);\n }\n }\n parseInlineTemplateBinding(tplKey, tplValue, sourceSpan, absoluteValueOffset, targetMatchableAttrs, targetProps, targetVars, isIvyAst) {\n const absoluteKeyOffset = sourceSpan.start.offset + TEMPLATE_ATTR_PREFIX$1.length;\n const bindings = this._parseTemplateBindings(tplKey, tplValue, sourceSpan, absoluteKeyOffset, absoluteValueOffset);\n for (const binding of bindings) {\n const bindingSpan = moveParseSourceSpan(sourceSpan, binding.sourceSpan);\n const key = binding.key.source;\n const keySpan = moveParseSourceSpan(sourceSpan, binding.key.span);\n if (binding instanceof VariableBinding) {\n const value = binding.value ? binding.value.source : '$implicit';\n const valueSpan = binding.value ? moveParseSourceSpan(sourceSpan, binding.value.span) : undefined;\n targetVars.push(new ParsedVariable(key, value, bindingSpan, keySpan, valueSpan));\n } else if (binding.value) {\n const srcSpan = isIvyAst ? bindingSpan : sourceSpan;\n const valueSpan = moveParseSourceSpan(sourceSpan, binding.value.ast.sourceSpan);\n this._parsePropertyAst(key, binding.value, false, srcSpan, keySpan, valueSpan, targetMatchableAttrs, targetProps);\n } else {\n targetMatchableAttrs.push([key, '']);\n this.parseLiteralAttr(key, null, keySpan, absoluteValueOffset, undefined, targetMatchableAttrs, targetProps, keySpan);\n }\n }\n }\n _parseTemplateBindings(tplKey, tplValue, sourceSpan, absoluteKeyOffset, absoluteValueOffset) {\n try {\n const bindingsResult = this._exprParser.parseTemplateBindings(tplKey, tplValue, sourceSpan, absoluteKeyOffset, absoluteValueOffset);\n bindingsResult.errors.forEach(e => this.errors.push(e));\n bindingsResult.warnings.forEach(warning => {\n this._reportError(warning, sourceSpan, ParseErrorLevel.WARNING);\n });\n return bindingsResult.templateBindings;\n } catch (e) {\n this._reportError(`${e}`, sourceSpan);\n return [];\n }\n }\n parseLiteralAttr(name, value, sourceSpan, absoluteOffset, valueSpan, targetMatchableAttrs, targetProps, keySpan) {\n if (isLegacyAnimationLabel(name)) {\n name = name.substring(1);\n if (keySpan !== undefined) {\n keySpan = moveParseSourceSpan(keySpan, new AbsoluteSourceSpan(keySpan.start.offset + 1, keySpan.end.offset));\n }\n if (value) {\n this._reportError(`Assigning animation triggers via @prop=\"exp\" attributes with an expression is invalid.` + ` Use property bindings (e.g. [@prop]=\"exp\") or use an attribute without a value (e.g. @prop) instead.`, sourceSpan, ParseErrorLevel.ERROR);\n }\n this._parseLegacyAnimation(name, value, sourceSpan, absoluteOffset, keySpan, valueSpan, targetMatchableAttrs, targetProps);\n } else {\n targetProps.push(new ParsedProperty(name, this._exprParser.wrapLiteralPrimitive(value, '', absoluteOffset), ParsedPropertyType.LITERAL_ATTR, sourceSpan, keySpan, valueSpan));\n }\n }\n parsePropertyBinding(name, expression, isHost, isPartOfAssignmentBinding, sourceSpan, absoluteOffset, valueSpan, targetMatchableAttrs, targetProps, keySpan) {\n if (name.length === 0) {\n this._reportError(`Property name is missing in binding`, sourceSpan);\n }\n let isLegacyAnimationProp = false;\n if (name.startsWith(LEGACY_ANIMATE_PROP_PREFIX)) {\n isLegacyAnimationProp = true;\n name = name.substring(LEGACY_ANIMATE_PROP_PREFIX.length);\n if (keySpan !== undefined) {\n keySpan = moveParseSourceSpan(keySpan, new AbsoluteSourceSpan(keySpan.start.offset + LEGACY_ANIMATE_PROP_PREFIX.length, keySpan.end.offset));\n }\n } else if (isLegacyAnimationLabel(name)) {\n isLegacyAnimationProp = true;\n name = name.substring(1);\n if (keySpan !== undefined) {\n keySpan = moveParseSourceSpan(keySpan, new AbsoluteSourceSpan(keySpan.start.offset + 1, keySpan.end.offset));\n }\n }\n if (isLegacyAnimationProp) {\n this._parseLegacyAnimation(name, expression, sourceSpan, absoluteOffset, keySpan, valueSpan, targetMatchableAttrs, targetProps);\n } else if (name.startsWith(`${ANIMATE_PREFIX}${PROPERTY_PARTS_SEPARATOR}`)) {\n this._parseAnimation(name, this.parseBinding(expression, isHost, valueSpan || sourceSpan, absoluteOffset), sourceSpan, keySpan, valueSpan, targetMatchableAttrs, targetProps);\n } else {\n this._parsePropertyAst(name, this.parseBinding(expression, isHost, valueSpan || sourceSpan, absoluteOffset), isPartOfAssignmentBinding, sourceSpan, keySpan, valueSpan, targetMatchableAttrs, targetProps);\n }\n }\n parsePropertyInterpolation(name, value, sourceSpan, valueSpan, targetMatchableAttrs, targetProps, keySpan, interpolatedTokens) {\n const expr = this.parseInterpolation(value, valueSpan || sourceSpan, interpolatedTokens);\n if (expr) {\n this._parsePropertyAst(name, expr, false, sourceSpan, keySpan, valueSpan, targetMatchableAttrs, targetProps);\n return true;\n }\n return false;\n }\n _parsePropertyAst(name, ast, isPartOfAssignmentBinding, sourceSpan, keySpan, valueSpan, targetMatchableAttrs, targetProps) {\n targetMatchableAttrs.push([name, ast.source]);\n targetProps.push(new ParsedProperty(name, ast, isPartOfAssignmentBinding ? ParsedPropertyType.TWO_WAY : ParsedPropertyType.DEFAULT, sourceSpan, keySpan, valueSpan));\n }\n _parseAnimation(name, ast, sourceSpan, keySpan, valueSpan, targetMatchableAttrs, targetProps) {\n targetMatchableAttrs.push([name, ast.source]);\n targetProps.push(new ParsedProperty(name, ast, ParsedPropertyType.ANIMATION, sourceSpan, keySpan, valueSpan));\n }\n _parseLegacyAnimation(name, expression, sourceSpan, absoluteOffset, keySpan, valueSpan, targetMatchableAttrs, targetProps) {\n if (name.length === 0) {\n this._reportError('Animation trigger is missing', sourceSpan);\n }\n const ast = this.parseBinding(expression || 'undefined', false, valueSpan || sourceSpan, absoluteOffset);\n targetMatchableAttrs.push([name, ast.source]);\n targetProps.push(new ParsedProperty(name, ast, ParsedPropertyType.LEGACY_ANIMATION, sourceSpan, keySpan, valueSpan));\n }\n parseBinding(value, isHostBinding, sourceSpan, absoluteOffset) {\n try {\n const ast = isHostBinding ? this._exprParser.parseSimpleBinding(value, sourceSpan, absoluteOffset) : this._exprParser.parseBinding(value, sourceSpan, absoluteOffset);\n if (ast) {\n this.errors.push(...ast.errors);\n }\n return ast;\n } catch (e) {\n this._reportError(`${e}`, sourceSpan);\n return this._exprParser.wrapLiteralPrimitive('ERROR', sourceSpan, absoluteOffset);\n }\n }\n createBoundElementProperty(elementSelector, boundProp, skipValidation = false, mapPropertyName = true) {\n if (boundProp.isLegacyAnimation) {\n return new BoundElementProperty(boundProp.name, BindingType.LegacyAnimation, SecurityContext.NONE, boundProp.expression, null, boundProp.sourceSpan, boundProp.keySpan, boundProp.valueSpan);\n }\n let unit = null;\n let bindingType = undefined;\n let boundPropertyName = null;\n const parts = boundProp.name.split(PROPERTY_PARTS_SEPARATOR);\n let securityContexts = undefined;\n if (parts.length > 1) {\n if (parts[0] == ATTRIBUTE_PREFIX) {\n boundPropertyName = parts.slice(1).join(PROPERTY_PARTS_SEPARATOR);\n if (!skipValidation) {\n this._validatePropertyOrAttributeName(boundPropertyName, boundProp.sourceSpan, true);\n }\n securityContexts = calcPossibleSecurityContexts(this._schemaRegistry, elementSelector, boundPropertyName, true);\n const nsSeparatorIdx = boundPropertyName.indexOf(':');\n if (nsSeparatorIdx > -1) {\n const ns = boundPropertyName.substring(0, nsSeparatorIdx);\n const name = boundPropertyName.substring(nsSeparatorIdx + 1);\n boundPropertyName = mergeNsAndName(ns, name);\n }\n bindingType = BindingType.Attribute;\n } else if (parts[0] == CLASS_PREFIX) {\n boundPropertyName = parts[1];\n bindingType = BindingType.Class;\n securityContexts = [SecurityContext.NONE];\n } else if (parts[0] == STYLE_PREFIX) {\n unit = parts.length > 2 ? parts[2] : null;\n boundPropertyName = parts[1];\n bindingType = BindingType.Style;\n securityContexts = [SecurityContext.STYLE];\n } else if (parts[0] == ANIMATE_PREFIX) {\n boundPropertyName = boundProp.name;\n bindingType = BindingType.Animation;\n securityContexts = [SecurityContext.NONE];\n }\n }\n if (boundPropertyName === null) {\n const mappedPropName = this._schemaRegistry.getMappedPropName(boundProp.name);\n boundPropertyName = mapPropertyName ? mappedPropName : boundProp.name;\n securityContexts = calcPossibleSecurityContexts(this._schemaRegistry, elementSelector, mappedPropName, false);\n bindingType = boundProp.type === ParsedPropertyType.TWO_WAY ? BindingType.TwoWay : BindingType.Property;\n if (!skipValidation) {\n this._validatePropertyOrAttributeName(mappedPropName, boundProp.sourceSpan, false);\n }\n }\n return new BoundElementProperty(boundPropertyName, bindingType, securityContexts[0], boundProp.expression, unit, boundProp.sourceSpan, boundProp.keySpan, boundProp.valueSpan);\n }\n parseEvent(name, expression, isAssignmentEvent, sourceSpan, handlerSpan, targetMatchableAttrs, targetEvents, keySpan) {\n if (name.length === 0) {\n this._reportError(`Event name is missing in binding`, sourceSpan);\n }\n if (isLegacyAnimationLabel(name)) {\n name = name.slice(1);\n if (keySpan !== undefined) {\n keySpan = moveParseSourceSpan(keySpan, new AbsoluteSourceSpan(keySpan.start.offset + 1, keySpan.end.offset));\n }\n this._parseLegacyAnimationEvent(name, expression, sourceSpan, handlerSpan, targetEvents, keySpan);\n } else {\n this._parseRegularEvent(name, expression, isAssignmentEvent, sourceSpan, handlerSpan, targetMatchableAttrs, targetEvents, keySpan);\n }\n }\n calcPossibleSecurityContexts(selector, propName, isAttribute) {\n const prop = this._schemaRegistry.getMappedPropName(propName);\n return calcPossibleSecurityContexts(this._schemaRegistry, selector, prop, isAttribute);\n }\n parseEventListenerName(rawName) {\n const [target, eventName] = splitAtColon(rawName, [null, rawName]);\n return {\n eventName: eventName,\n target\n };\n }\n parseLegacyAnimationEventName(rawName) {\n const matches = splitAtPeriod(rawName, [rawName, null]);\n return {\n eventName: matches[0],\n phase: matches[1] === null ? null : matches[1].toLowerCase()\n };\n }\n _parseLegacyAnimationEvent(name, expression, sourceSpan, handlerSpan, targetEvents, keySpan) {\n const {\n eventName,\n phase\n } = this.parseLegacyAnimationEventName(name);\n const ast = this._parseAction(expression, handlerSpan);\n targetEvents.push(new ParsedEvent(eventName, phase, ParsedEventType.LegacyAnimation, ast, sourceSpan, handlerSpan, keySpan));\n if (eventName.length === 0) {\n this._reportError(`Animation event name is missing in binding`, sourceSpan);\n }\n if (phase) {\n if (phase !== 'start' && phase !== 'done') {\n this._reportError(`The provided animation output phase value \"${phase}\" for \"@${eventName}\" is not supported (use start or done)`, sourceSpan);\n }\n } else {\n this._reportError(`The animation trigger output event (@${eventName}) is missing its phase value name (start or done are currently supported)`, sourceSpan);\n }\n }\n _parseRegularEvent(name, expression, isAssignmentEvent, sourceSpan, handlerSpan, targetMatchableAttrs, targetEvents, keySpan) {\n const {\n eventName,\n target\n } = this.parseEventListenerName(name);\n const prevErrorCount = this.errors.length;\n const ast = this._parseAction(expression, handlerSpan);\n const isValid = this.errors.length === prevErrorCount;\n targetMatchableAttrs.push([name, ast.source]);\n if (isAssignmentEvent && isValid && !this._isAllowedAssignmentEvent(ast)) {\n this._reportError('Unsupported expression in a two-way binding', sourceSpan);\n }\n let eventType = ParsedEventType.Regular;\n if (isAssignmentEvent) {\n eventType = ParsedEventType.TwoWay;\n }\n if (name.startsWith(`${ANIMATE_PREFIX}${PROPERTY_PARTS_SEPARATOR}`)) {\n eventType = ParsedEventType.Animation;\n }\n targetEvents.push(new ParsedEvent(eventName, target, eventType, ast, sourceSpan, handlerSpan, keySpan));\n }\n _parseAction(value, sourceSpan) {\n const absoluteOffset = sourceSpan && sourceSpan.start ? sourceSpan.start.offset : 0;\n try {\n const ast = this._exprParser.parseAction(value, sourceSpan, absoluteOffset);\n if (ast) {\n this.errors.push(...ast.errors);\n }\n if (!ast || ast.ast instanceof EmptyExpr$1) {\n this._reportError(`Empty expressions are not allowed`, sourceSpan);\n return this._exprParser.wrapLiteralPrimitive('ERROR', sourceSpan, absoluteOffset);\n }\n return ast;\n } catch (e) {\n this._reportError(`${e}`, sourceSpan);\n return this._exprParser.wrapLiteralPrimitive('ERROR', sourceSpan, absoluteOffset);\n }\n }\n _reportError(message, sourceSpan, level = ParseErrorLevel.ERROR) {\n this.errors.push(new ParseError(sourceSpan, message, level));\n }\n _validatePropertyOrAttributeName(propName, sourceSpan, isAttr) {\n const report = isAttr ? this._schemaRegistry.validateAttribute(propName) : this._schemaRegistry.validateProperty(propName);\n if (report.error) {\n this._reportError(report.msg, sourceSpan, ParseErrorLevel.ERROR);\n }\n }\n _isAllowedAssignmentEvent(ast) {\n if (ast instanceof ASTWithSource) {\n return this._isAllowedAssignmentEvent(ast.ast);\n }\n if (ast instanceof NonNullAssert) {\n return this._isAllowedAssignmentEvent(ast.expression);\n }\n if (ast instanceof Call && ast.args.length === 1 && ast.receiver instanceof PropertyRead && ast.receiver.name === '$any' && ast.receiver.receiver instanceof ImplicitReceiver) {\n return this._isAllowedAssignmentEvent(ast.args[0]);\n }\n if (ast instanceof PropertyRead || ast instanceof KeyedRead) {\n if (!hasRecursiveSafeReceiver(ast)) {\n return true;\n }\n }\n return false;\n }\n}\nfunction hasRecursiveSafeReceiver(ast) {\n if (ast instanceof SafePropertyRead || ast instanceof SafeKeyedRead) {\n return true;\n }\n if (ast instanceof ParenthesizedExpression) {\n return hasRecursiveSafeReceiver(ast.expression);\n }\n if (ast instanceof PropertyRead || ast instanceof KeyedRead || ast instanceof Call) {\n return hasRecursiveSafeReceiver(ast.receiver);\n }\n return false;\n}\nfunction isLegacyAnimationLabel(name) {\n return name[0] == '@';\n}\nfunction calcPossibleSecurityContexts(registry, selector, propName, isAttribute) {\n let ctxs;\n const nameToContext = elName => registry.securityContext(elName, propName, isAttribute);\n if (selector === null) {\n ctxs = registry.allKnownElementNames().map(nameToContext);\n } else {\n ctxs = [];\n CssSelector.parse(selector).forEach(selector => {\n const elementNames = selector.element ? [selector.element] : registry.allKnownElementNames();\n const notElementNames = new Set(selector.notSelectors.filter(selector => selector.isElementSelector()).map(selector => selector.element));\n const possibleElementNames = elementNames.filter(elName => !notElementNames.has(elName));\n ctxs.push(...possibleElementNames.map(nameToContext));\n });\n }\n return ctxs.length === 0 ? [SecurityContext.NONE] : Array.from(new Set(ctxs)).sort();\n}\nfunction moveParseSourceSpan(sourceSpan, absoluteSpan) {\n const startDiff = absoluteSpan.start - sourceSpan.start.offset;\n const endDiff = absoluteSpan.end - sourceSpan.end.offset;\n return new ParseSourceSpan(sourceSpan.start.moveBy(startDiff), sourceSpan.end.moveBy(endDiff), sourceSpan.fullStart.moveBy(startDiff), sourceSpan.details);\n}\n\nfunction isStyleUrlResolvable(url) {\n if (url == null || url.length === 0 || url[0] == '/') return false;\n const schemeMatch = url.match(URL_WITH_SCHEMA_REGEXP);\n return schemeMatch === null || schemeMatch[1] == 'package' || schemeMatch[1] == 'asset';\n}\nconst URL_WITH_SCHEMA_REGEXP = /^([^:/?#]+):/;\n\nconst NG_CONTENT_SELECT_ATTR = 'select';\nconst LINK_ELEMENT = 'link';\nconst LINK_STYLE_REL_ATTR = 'rel';\nconst LINK_STYLE_HREF_ATTR = 'href';\nconst LINK_STYLE_REL_VALUE = 'stylesheet';\nconst STYLE_ELEMENT = 'style';\nconst SCRIPT_ELEMENT = 'script';\nconst NG_NON_BINDABLE_ATTR = 'ngNonBindable';\nconst NG_PROJECT_AS = 'ngProjectAs';\nfunction preparseElement(ast) {\n let selectAttr = null;\n let hrefAttr = null;\n let relAttr = null;\n let nonBindable = false;\n let projectAs = '';\n ast.attrs.forEach(attr => {\n const lcAttrName = attr.name.toLowerCase();\n if (lcAttrName == NG_CONTENT_SELECT_ATTR) {\n selectAttr = attr.value;\n } else if (lcAttrName == LINK_STYLE_HREF_ATTR) {\n hrefAttr = attr.value;\n } else if (lcAttrName == LINK_STYLE_REL_ATTR) {\n relAttr = attr.value;\n } else if (attr.name == NG_NON_BINDABLE_ATTR) {\n nonBindable = true;\n } else if (attr.name == NG_PROJECT_AS) {\n if (attr.value.length > 0) {\n projectAs = attr.value;\n }\n }\n });\n selectAttr = normalizeNgContentSelect(selectAttr);\n const nodeName = ast.name.toLowerCase();\n let type = PreparsedElementType.OTHER;\n if (isNgContent(nodeName)) {\n type = PreparsedElementType.NG_CONTENT;\n } else if (nodeName == STYLE_ELEMENT) {\n type = PreparsedElementType.STYLE;\n } else if (nodeName == SCRIPT_ELEMENT) {\n type = PreparsedElementType.SCRIPT;\n } else if (nodeName == LINK_ELEMENT && relAttr == LINK_STYLE_REL_VALUE) {\n type = PreparsedElementType.STYLESHEET;\n }\n return new PreparsedElement(type, selectAttr, hrefAttr, nonBindable, projectAs);\n}\nvar PreparsedElementType;\n(function (PreparsedElementType) {\n PreparsedElementType[PreparsedElementType[\"NG_CONTENT\"] = 0] = \"NG_CONTENT\";\n PreparsedElementType[PreparsedElementType[\"STYLE\"] = 1] = \"STYLE\";\n PreparsedElementType[PreparsedElementType[\"STYLESHEET\"] = 2] = \"STYLESHEET\";\n PreparsedElementType[PreparsedElementType[\"SCRIPT\"] = 3] = \"SCRIPT\";\n PreparsedElementType[PreparsedElementType[\"OTHER\"] = 4] = \"OTHER\";\n})(PreparsedElementType || (PreparsedElementType = {}));\nclass PreparsedElement {\n type;\n selectAttr;\n hrefAttr;\n nonBindable;\n projectAs;\n constructor(type, selectAttr, hrefAttr, nonBindable, projectAs) {\n this.type = type;\n this.selectAttr = selectAttr;\n this.hrefAttr = hrefAttr;\n this.nonBindable = nonBindable;\n this.projectAs = projectAs;\n }\n}\nfunction normalizeNgContentSelect(selectAttr) {\n if (selectAttr === null || selectAttr.length === 0) {\n return '*';\n }\n return selectAttr;\n}\n\nconst FOR_LOOP_EXPRESSION_PATTERN = /^\\s*([0-9A-Za-z_$]*)\\s+of\\s+([\\S\\s]*)/;\nconst FOR_LOOP_TRACK_PATTERN = /^track\\s+([\\S\\s]*)/;\nconst CONDITIONAL_ALIAS_PATTERN = /^(as\\s+)(.*)/;\nconst ELSE_IF_PATTERN = /^else[^\\S\\r\\n]+if/;\nconst FOR_LOOP_LET_PATTERN = /^let\\s+([\\S\\s]*)/;\nconst IDENTIFIER_PATTERN = /^[$A-Z_][0-9A-Z_$]*$/i;\nconst CHARACTERS_IN_SURROUNDING_WHITESPACE_PATTERN = /(\\s*)(\\S+)(\\s*)/;\nconst ALLOWED_FOR_LOOP_LET_VARIABLES = new Set(['$index', '$first', '$last', '$even', '$odd', '$count']);\nfunction isConnectedForLoopBlock(name) {\n return name === 'empty';\n}\nfunction isConnectedIfLoopBlock(name) {\n return name === 'else' || ELSE_IF_PATTERN.test(name);\n}\nfunction createIfBlock(ast, connectedBlocks, visitor, bindingParser) {\n const errors = validateIfConnectedBlocks(connectedBlocks);\n const branches = [];\n const mainBlockParams = parseConditionalBlockParameters(ast, errors, bindingParser);\n if (mainBlockParams !== null) {\n branches.push(new IfBlockBranch(mainBlockParams.expression, visitAll(visitor, ast.children, ast.children), mainBlockParams.expressionAlias, ast.sourceSpan, ast.startSourceSpan, ast.endSourceSpan, ast.nameSpan, ast.i18n));\n }\n for (const block of connectedBlocks) {\n if (ELSE_IF_PATTERN.test(block.name)) {\n const params = parseConditionalBlockParameters(block, errors, bindingParser);\n if (params !== null) {\n const children = visitAll(visitor, block.children, block.children);\n branches.push(new IfBlockBranch(params.expression, children, params.expressionAlias, block.sourceSpan, block.startSourceSpan, block.endSourceSpan, block.nameSpan, block.i18n));\n }\n } else if (block.name === 'else') {\n const children = visitAll(visitor, block.children, block.children);\n branches.push(new IfBlockBranch(null, children, null, block.sourceSpan, block.startSourceSpan, block.endSourceSpan, block.nameSpan, block.i18n));\n }\n }\n const ifBlockStartSourceSpan = branches.length > 0 ? branches[0].startSourceSpan : ast.startSourceSpan;\n const ifBlockEndSourceSpan = branches.length > 0 ? branches[branches.length - 1].endSourceSpan : ast.endSourceSpan;\n let wholeSourceSpan = ast.sourceSpan;\n const lastBranch = branches[branches.length - 1];\n if (lastBranch !== undefined) {\n wholeSourceSpan = new ParseSourceSpan(ifBlockStartSourceSpan.start, lastBranch.sourceSpan.end);\n }\n return {\n node: new IfBlock(branches, wholeSourceSpan, ast.startSourceSpan, ifBlockEndSourceSpan, ast.nameSpan),\n errors\n };\n}\nfunction createForLoop(ast, connectedBlocks, visitor, bindingParser) {\n const errors = [];\n const params = parseForLoopParameters(ast, errors, bindingParser);\n let node = null;\n let empty = null;\n for (const block of connectedBlocks) {\n if (block.name === 'empty') {\n if (empty !== null) {\n errors.push(new ParseError(block.sourceSpan, '@for loop can only have one @empty block'));\n } else if (block.parameters.length > 0) {\n errors.push(new ParseError(block.sourceSpan, '@empty block cannot have parameters'));\n } else {\n empty = new ForLoopBlockEmpty(visitAll(visitor, block.children, block.children), block.sourceSpan, block.startSourceSpan, block.endSourceSpan, block.nameSpan, block.i18n);\n }\n } else {\n errors.push(new ParseError(block.sourceSpan, `Unrecognized @for loop block \"${block.name}\"`));\n }\n }\n if (params !== null) {\n if (params.trackBy === null) {\n errors.push(new ParseError(ast.startSourceSpan, '@for loop must have a \"track\" expression'));\n } else {\n const endSpan = empty?.endSourceSpan ?? ast.endSourceSpan;\n const sourceSpan = new ParseSourceSpan(ast.sourceSpan.start, endSpan?.end ?? ast.sourceSpan.end);\n validateTrackByExpression(params.trackBy.expression, params.trackBy.keywordSpan, errors);\n node = new ForLoopBlock(params.itemName, params.expression, params.trackBy.expression, params.trackBy.keywordSpan, params.context, visitAll(visitor, ast.children, ast.children), empty, sourceSpan, ast.sourceSpan, ast.startSourceSpan, endSpan, ast.nameSpan, ast.i18n);\n }\n }\n return {\n node,\n errors\n };\n}\nfunction createSwitchBlock(ast, visitor, bindingParser) {\n const errors = validateSwitchBlock(ast);\n const primaryExpression = ast.parameters.length > 0 ? parseBlockParameterToBinding(ast.parameters[0], bindingParser) : bindingParser.parseBinding('', false, ast.sourceSpan, 0);\n const groups = [];\n const unknownBlocks = [];\n let collectedCases = [];\n let firstCaseStart = null;\n let exhaustiveCheck = null;\n for (const node of ast.children) {\n if (!(node instanceof Block)) {\n continue;\n }\n if ((node.name !== 'case' || node.parameters.length === 0) && node.name !== 'default' && node.name !== 'default never') {\n unknownBlocks.push(new UnknownBlock(node.name, node.sourceSpan, node.nameSpan));\n continue;\n }\n if (exhaustiveCheck !== null) {\n errors.push(new ParseError(node.sourceSpan, '@default block with \"never\" parameter must be the last case in a switch'));\n }\n const isCase = node.name === 'case';\n let expression = null;\n if (isCase) {\n expression = parseBlockParameterToBinding(node.parameters[0], bindingParser);\n } else if (node.name === 'default never') {\n if (node.children.length > 0 || node.endSourceSpan !== null && node.endSourceSpan.start.offset !== node.endSourceSpan.end.offset) {\n errors.push(new ParseError(node.sourceSpan, '@default block with \"never\" parameter cannot have a body'));\n }\n if (collectedCases.length > 0) {\n errors.push(new ParseError(node.sourceSpan, 'A @case block with no body cannot be followed by a @default block with \"never\" parameter'));\n }\n exhaustiveCheck = new SwitchExhaustiveCheck(node.sourceSpan, node.startSourceSpan, node.endSourceSpan, node.nameSpan);\n continue;\n }\n const switchCase = new SwitchBlockCase(expression, node.sourceSpan, node.startSourceSpan, node.endSourceSpan, node.nameSpan);\n collectedCases.push(switchCase);\n const caseWithoutBody = node.children.length === 0 && node.endSourceSpan !== null && node.endSourceSpan.start.offset === node.endSourceSpan.end.offset;\n if (caseWithoutBody) {\n if (firstCaseStart === null) {\n firstCaseStart = node.sourceSpan;\n }\n continue;\n }\n let sourceSpan = node.sourceSpan;\n let startSourceSpan = node.startSourceSpan;\n if (firstCaseStart !== null) {\n sourceSpan = new ParseSourceSpan(firstCaseStart.start, node.sourceSpan.end);\n startSourceSpan = new ParseSourceSpan(firstCaseStart.start, node.startSourceSpan.end);\n firstCaseStart = null;\n }\n const group = new SwitchBlockCaseGroup(collectedCases, visitAll(visitor, node.children, node.children), sourceSpan, startSourceSpan, node.endSourceSpan, node.nameSpan, node.i18n);\n groups.push(group);\n collectedCases = [];\n }\n const node = new SwitchBlock(primaryExpression, groups, unknownBlocks, exhaustiveCheck, ast.sourceSpan, ast.startSourceSpan, ast.endSourceSpan, ast.nameSpan);\n return {\n node,\n errors\n };\n}\nfunction parseForLoopParameters(block, errors, bindingParser) {\n if (block.parameters.length === 0) {\n errors.push(new ParseError(block.startSourceSpan, '@for loop does not have an expression'));\n return null;\n }\n const [expressionParam, ...secondaryParams] = block.parameters;\n const match = stripOptionalParentheses(expressionParam, errors)?.match(FOR_LOOP_EXPRESSION_PATTERN);\n if (!match || match[2].trim().length === 0) {\n errors.push(new ParseError(expressionParam.sourceSpan, 'Cannot parse expression. @for loop expression must match the pattern \"<identifier> of <expression>\"'));\n return null;\n }\n const [, itemName, rawExpression] = match;\n if (ALLOWED_FOR_LOOP_LET_VARIABLES.has(itemName)) {\n errors.push(new ParseError(expressionParam.sourceSpan, `@for loop item name cannot be one of ${Array.from(ALLOWED_FOR_LOOP_LET_VARIABLES).join(', ')}.`));\n }\n const variableName = expressionParam.expression.split(' ')[0];\n const variableSpan = new ParseSourceSpan(expressionParam.sourceSpan.start, expressionParam.sourceSpan.start.moveBy(variableName.length));\n const result = {\n itemName: new Variable(itemName, '$implicit', variableSpan, variableSpan),\n trackBy: null,\n expression: parseBlockParameterToBinding(expressionParam, bindingParser, rawExpression),\n context: Array.from(ALLOWED_FOR_LOOP_LET_VARIABLES, variableName => {\n const emptySpanAfterForBlockStart = new ParseSourceSpan(block.startSourceSpan.end, block.startSourceSpan.end);\n return new Variable(variableName, variableName, emptySpanAfterForBlockStart, emptySpanAfterForBlockStart);\n })\n };\n for (const param of secondaryParams) {\n const letMatch = param.expression.match(FOR_LOOP_LET_PATTERN);\n if (letMatch !== null) {\n const variablesSpan = new ParseSourceSpan(param.sourceSpan.start.moveBy(letMatch[0].length - letMatch[1].length), param.sourceSpan.end);\n parseLetParameter(param.sourceSpan, letMatch[1], variablesSpan, itemName, result.context, errors);\n continue;\n }\n const trackMatch = param.expression.match(FOR_LOOP_TRACK_PATTERN);\n if (trackMatch !== null) {\n if (result.trackBy !== null) {\n errors.push(new ParseError(param.sourceSpan, '@for loop can only have one \"track\" expression'));\n } else {\n const expression = parseBlockParameterToBinding(param, bindingParser, trackMatch[1]);\n if (expression.ast instanceof EmptyExpr$1) {\n errors.push(new ParseError(block.startSourceSpan, '@for loop must have a \"track\" expression'));\n }\n const keywordSpan = new ParseSourceSpan(param.sourceSpan.start, param.sourceSpan.start.moveBy('track'.length));\n result.trackBy = {\n expression,\n keywordSpan\n };\n }\n continue;\n }\n errors.push(new ParseError(param.sourceSpan, `Unrecognized @for loop parameter \"${param.expression}\"`));\n }\n return result;\n}\nfunction validateTrackByExpression(expression, parseSourceSpan, errors) {\n const visitor = new PipeVisitor();\n expression.ast.visit(visitor);\n if (visitor.hasPipe) {\n errors.push(new ParseError(parseSourceSpan, 'Cannot use pipes in track expressions'));\n }\n}\nfunction parseLetParameter(sourceSpan, expression, span, loopItemName, context, errors) {\n const parts = expression.split(',');\n let startSpan = span.start;\n for (const part of parts) {\n const expressionParts = part.split('=');\n const name = expressionParts.length === 2 ? expressionParts[0].trim() : '';\n const variableName = expressionParts.length === 2 ? expressionParts[1].trim() : '';\n if (name.length === 0 || variableName.length === 0) {\n errors.push(new ParseError(sourceSpan, `Invalid @for loop \"let\" parameter. Parameter should match the pattern \"<name> = <variable name>\"`));\n } else if (!ALLOWED_FOR_LOOP_LET_VARIABLES.has(variableName)) {\n errors.push(new ParseError(sourceSpan, `Unknown \"let\" parameter variable \"${variableName}\". The allowed variables are: ${Array.from(ALLOWED_FOR_LOOP_LET_VARIABLES).join(', ')}`));\n } else if (name === loopItemName) {\n errors.push(new ParseError(sourceSpan, `Invalid @for loop \"let\" parameter. Variable cannot be called \"${loopItemName}\"`));\n } else if (context.some(v => v.name === name)) {\n errors.push(new ParseError(sourceSpan, `Duplicate \"let\" parameter variable \"${variableName}\"`));\n } else {\n const [, keyLeadingWhitespace, keyName] = expressionParts[0].match(CHARACTERS_IN_SURROUNDING_WHITESPACE_PATTERN) ?? [];\n const keySpan = keyLeadingWhitespace !== undefined && expressionParts.length === 2 ? new ParseSourceSpan(startSpan.moveBy(keyLeadingWhitespace.length), startSpan.moveBy(keyLeadingWhitespace.length + keyName.length)) : span;\n let valueSpan = undefined;\n if (expressionParts.length === 2) {\n const [, valueLeadingWhitespace, implicit] = expressionParts[1].match(CHARACTERS_IN_SURROUNDING_WHITESPACE_PATTERN) ?? [];\n valueSpan = valueLeadingWhitespace !== undefined ? new ParseSourceSpan(startSpan.moveBy(expressionParts[0].length + 1 + valueLeadingWhitespace.length), startSpan.moveBy(expressionParts[0].length + 1 + valueLeadingWhitespace.length + implicit.length)) : undefined;\n }\n const sourceSpan = new ParseSourceSpan(keySpan.start, valueSpan?.end ?? keySpan.end);\n context.push(new Variable(name, variableName, sourceSpan, keySpan, valueSpan));\n }\n startSpan = startSpan.moveBy(part.length + 1);\n }\n}\nfunction validateIfConnectedBlocks(connectedBlocks) {\n const errors = [];\n let hasElse = false;\n for (let i = 0; i < connectedBlocks.length; i++) {\n const block = connectedBlocks[i];\n if (block.name === 'else') {\n if (hasElse) {\n errors.push(new ParseError(block.startSourceSpan, 'Conditional can only have one @else block'));\n } else if (connectedBlocks.length > 1 && i < connectedBlocks.length - 1) {\n errors.push(new ParseError(block.startSourceSpan, '@else block must be last inside the conditional'));\n } else if (block.parameters.length > 0) {\n errors.push(new ParseError(block.startSourceSpan, '@else block cannot have parameters'));\n }\n hasElse = true;\n } else if (!ELSE_IF_PATTERN.test(block.name)) {\n errors.push(new ParseError(block.startSourceSpan, `Unrecognized conditional block @${block.name}`));\n }\n }\n return errors;\n}\nfunction validateSwitchBlock(ast) {\n const errors = [];\n let hasDefault = false;\n if (ast.parameters.length !== 1) {\n errors.push(new ParseError(ast.startSourceSpan, '@switch block must have exactly one parameter'));\n return errors;\n }\n for (const node of ast.children) {\n if (node instanceof Comment || node instanceof Text && node.value.trim().length === 0) {\n continue;\n }\n if (!(node instanceof Block) || node.name !== 'case' && node.name !== 'default' && node.name !== 'default never') {\n errors.push(new ParseError(node.sourceSpan, '@switch block can only contain @case and @default blocks'));\n continue;\n }\n if (node.name === 'default never') {\n if (hasDefault) {\n errors.push(new ParseError(node.startSourceSpan, '@switch block can only have one @default block'));\n }\n hasDefault = true;\n } else if (node.name === 'default') {\n if (hasDefault) {\n errors.push(new ParseError(node.startSourceSpan, '@switch block can only have one @default block'));\n } else if (node.parameters.length > 0) {\n errors.push(new ParseError(node.startSourceSpan, '@default block cannot have parameters'));\n }\n hasDefault = true;\n } else if (node.name === 'case' && node.parameters.length !== 1) {\n errors.push(new ParseError(node.startSourceSpan, '@case block must have exactly one parameter'));\n }\n }\n return errors;\n}\nfunction parseBlockParameterToBinding(ast, bindingParser, part) {\n let start;\n let end;\n if (typeof part === 'string') {\n start = Math.max(0, ast.expression.lastIndexOf(part));\n end = start + part.length;\n } else {\n start = 0;\n end = ast.expression.length;\n }\n return bindingParser.parseBinding(ast.expression.slice(start, end), false, ast.sourceSpan, ast.sourceSpan.start.offset + start);\n}\nfunction parseConditionalBlockParameters(block, errors, bindingParser) {\n if (block.parameters.length === 0) {\n errors.push(new ParseError(block.startSourceSpan, 'Conditional block does not have an expression'));\n return null;\n }\n const expression = parseBlockParameterToBinding(block.parameters[0], bindingParser);\n let expressionAlias = null;\n for (let i = 1; i < block.parameters.length; i++) {\n const param = block.parameters[i];\n const aliasMatch = param.expression.match(CONDITIONAL_ALIAS_PATTERN);\n if (aliasMatch === null) {\n errors.push(new ParseError(param.sourceSpan, `Unrecognized conditional parameter \"${param.expression}\"`));\n } else if (block.name !== 'if' && !ELSE_IF_PATTERN.test(block.name)) {\n errors.push(new ParseError(param.sourceSpan, '\"as\" expression is only allowed on `@if` and `@else if` blocks'));\n } else if (expressionAlias !== null) {\n errors.push(new ParseError(param.sourceSpan, 'Conditional can only have one \"as\" expression'));\n } else {\n const name = aliasMatch[2].trim();\n if (IDENTIFIER_PATTERN.test(name)) {\n const variableStart = param.sourceSpan.start.moveBy(aliasMatch[1].length);\n const variableSpan = new ParseSourceSpan(variableStart, variableStart.moveBy(name.length));\n expressionAlias = new Variable(name, name, variableSpan, variableSpan);\n } else {\n errors.push(new ParseError(param.sourceSpan, '\"as\" expression must be a valid JavaScript identifier'));\n }\n }\n }\n return {\n expression,\n expressionAlias\n };\n}\nfunction stripOptionalParentheses(param, errors) {\n const expression = param.expression;\n const spaceRegex = /^\\s$/;\n let openParens = 0;\n let start = 0;\n let end = expression.length - 1;\n for (let i = 0; i < expression.length; i++) {\n const char = expression[i];\n if (char === '(') {\n start = i + 1;\n openParens++;\n } else if (spaceRegex.test(char)) {\n continue;\n } else {\n break;\n }\n }\n if (openParens === 0) {\n return expression;\n }\n for (let i = expression.length - 1; i > -1; i--) {\n const char = expression[i];\n if (char === ')') {\n end = i;\n openParens--;\n if (openParens === 0) {\n break;\n }\n } else if (spaceRegex.test(char)) {\n continue;\n } else {\n break;\n }\n }\n if (openParens !== 0) {\n errors.push(new ParseError(param.sourceSpan, 'Unclosed parentheses in expression'));\n return null;\n }\n return expression.slice(start, end);\n}\nclass PipeVisitor extends RecursiveAstVisitor {\n hasPipe = false;\n visitPipe() {\n this.hasPipe = true;\n }\n}\n\nconst TIME_PATTERN = /^\\d+\\.?\\d*(ms|s)?$/;\nconst SEPARATOR_PATTERN = /^\\s$/;\nconst COMMA_DELIMITED_SYNTAX = new Map([[$LBRACE, $RBRACE], [$LBRACKET, $RBRACKET], [$LPAREN, $RPAREN]]);\nvar OnTriggerType;\n(function (OnTriggerType) {\n OnTriggerType[\"IDLE\"] = \"idle\";\n OnTriggerType[\"TIMER\"] = \"timer\";\n OnTriggerType[\"INTERACTION\"] = \"interaction\";\n OnTriggerType[\"IMMEDIATE\"] = \"immediate\";\n OnTriggerType[\"HOVER\"] = \"hover\";\n OnTriggerType[\"VIEWPORT\"] = \"viewport\";\n OnTriggerType[\"NEVER\"] = \"never\";\n})(OnTriggerType || (OnTriggerType = {}));\nfunction parseNeverTrigger({\n expression,\n sourceSpan\n}, triggers, errors) {\n const neverIndex = expression.indexOf('never');\n const neverSourceSpan = new ParseSourceSpan(sourceSpan.start.moveBy(neverIndex), sourceSpan.start.moveBy(neverIndex + 'never'.length));\n const prefetchSpan = getPrefetchSpan(expression, sourceSpan);\n const hydrateSpan = getHydrateSpan(expression, sourceSpan);\n if (neverIndex === -1) {\n errors.push(new ParseError(sourceSpan, `Could not find \"never\" keyword in expression`));\n } else {\n trackTrigger('never', triggers, errors, new NeverDeferredTrigger(neverSourceSpan, sourceSpan, prefetchSpan, null, hydrateSpan));\n }\n}\nfunction parseWhenTrigger({\n expression,\n sourceSpan\n}, bindingParser, triggers, errors) {\n const whenIndex = expression.indexOf('when');\n const whenSourceSpan = new ParseSourceSpan(sourceSpan.start.moveBy(whenIndex), sourceSpan.start.moveBy(whenIndex + 'when'.length));\n const prefetchSpan = getPrefetchSpan(expression, sourceSpan);\n const hydrateSpan = getHydrateSpan(expression, sourceSpan);\n if (whenIndex === -1) {\n errors.push(new ParseError(sourceSpan, `Could not find \"when\" keyword in expression`));\n } else {\n const start = getTriggerParametersStart(expression, whenIndex + 1);\n const parsed = bindingParser.parseBinding(expression.slice(start), false, sourceSpan, sourceSpan.start.offset + start);\n trackTrigger('when', triggers, errors, new BoundDeferredTrigger(parsed, sourceSpan, prefetchSpan, whenSourceSpan, hydrateSpan));\n }\n}\nfunction parseOnTrigger({\n expression,\n sourceSpan\n}, bindingParser, triggers, errors, placeholder) {\n const onIndex = expression.indexOf('on');\n const onSourceSpan = new ParseSourceSpan(sourceSpan.start.moveBy(onIndex), sourceSpan.start.moveBy(onIndex + 'on'.length));\n const prefetchSpan = getPrefetchSpan(expression, sourceSpan);\n const hydrateSpan = getHydrateSpan(expression, sourceSpan);\n if (onIndex === -1) {\n errors.push(new ParseError(sourceSpan, `Could not find \"on\" keyword in expression`));\n } else {\n const start = getTriggerParametersStart(expression, onIndex + 1);\n const isHydrationTrigger = expression.startsWith('hydrate');\n const parser = new OnTriggerParser(expression, bindingParser, start, sourceSpan, triggers, errors, isHydrationTrigger ? validateHydrateReferenceBasedTrigger : validatePlainReferenceBasedTrigger, isHydrationTrigger, prefetchSpan, onSourceSpan, hydrateSpan);\n parser.parse();\n }\n}\nfunction getPrefetchSpan(expression, sourceSpan) {\n if (!expression.startsWith('prefetch')) {\n return null;\n }\n return new ParseSourceSpan(sourceSpan.start, sourceSpan.start.moveBy('prefetch'.length));\n}\nfunction getHydrateSpan(expression, sourceSpan) {\n if (!expression.startsWith('hydrate')) {\n return null;\n }\n return new ParseSourceSpan(sourceSpan.start, sourceSpan.start.moveBy('hydrate'.length));\n}\nclass OnTriggerParser {\n expression;\n bindingParser;\n start;\n span;\n triggers;\n errors;\n validator;\n isHydrationTrigger;\n prefetchSpan;\n onSourceSpan;\n hydrateSpan;\n index = 0;\n tokens;\n constructor(expression, bindingParser, start, span, triggers, errors, validator, isHydrationTrigger, prefetchSpan, onSourceSpan, hydrateSpan) {\n this.expression = expression;\n this.bindingParser = bindingParser;\n this.start = start;\n this.span = span;\n this.triggers = triggers;\n this.errors = errors;\n this.validator = validator;\n this.isHydrationTrigger = isHydrationTrigger;\n this.prefetchSpan = prefetchSpan;\n this.onSourceSpan = onSourceSpan;\n this.hydrateSpan = hydrateSpan;\n this.tokens = new Lexer().tokenize(expression.slice(start));\n }\n parse() {\n while (this.tokens.length > 0 && this.index < this.tokens.length) {\n const token = this.token();\n if (!token.isIdentifier()) {\n this.unexpectedToken(token);\n break;\n }\n if (this.isFollowedByOrLast($COMMA)) {\n this.consumeTrigger(token, []);\n this.advance();\n } else if (this.isFollowedByOrLast($LPAREN)) {\n this.advance();\n const prevErrors = this.errors.length;\n const parameters = this.consumeParameters();\n if (this.errors.length !== prevErrors) {\n break;\n }\n this.consumeTrigger(token, parameters);\n this.advance();\n } else if (this.index < this.tokens.length - 1) {\n this.unexpectedToken(this.tokens[this.index + 1]);\n }\n this.advance();\n }\n }\n advance() {\n this.index++;\n }\n isFollowedByOrLast(char) {\n if (this.index === this.tokens.length - 1) {\n return true;\n }\n return this.tokens[this.index + 1].isCharacter(char);\n }\n token() {\n return this.tokens[Math.min(this.index, this.tokens.length - 1)];\n }\n consumeTrigger(identifier, parameters) {\n const triggerNameStartSpan = this.span.start.moveBy(this.start + identifier.index - this.tokens[0].index);\n const nameSpan = new ParseSourceSpan(triggerNameStartSpan, triggerNameStartSpan.moveBy(identifier.strValue.length));\n const endSpan = triggerNameStartSpan.moveBy(this.token().end - identifier.index);\n const isFirstTrigger = identifier.index === 0;\n const onSourceSpan = isFirstTrigger ? this.onSourceSpan : null;\n const prefetchSourceSpan = isFirstTrigger ? this.prefetchSpan : null;\n const hydrateSourceSpan = isFirstTrigger ? this.hydrateSpan : null;\n const sourceSpan = new ParseSourceSpan(isFirstTrigger ? this.span.start : triggerNameStartSpan, endSpan);\n try {\n switch (identifier.toString()) {\n case OnTriggerType.IDLE:\n this.trackTrigger('idle', createIdleTrigger(parameters, nameSpan, sourceSpan, prefetchSourceSpan, onSourceSpan, hydrateSourceSpan));\n break;\n case OnTriggerType.TIMER:\n this.trackTrigger('timer', createTimerTrigger(parameters, nameSpan, sourceSpan, this.prefetchSpan, this.onSourceSpan, this.hydrateSpan));\n break;\n case OnTriggerType.INTERACTION:\n this.trackTrigger('interaction', createInteractionTrigger(parameters, nameSpan, sourceSpan, this.prefetchSpan, this.onSourceSpan, this.hydrateSpan, this.validator));\n break;\n case OnTriggerType.IMMEDIATE:\n this.trackTrigger('immediate', createImmediateTrigger(parameters, nameSpan, sourceSpan, this.prefetchSpan, this.onSourceSpan, this.hydrateSpan));\n break;\n case OnTriggerType.HOVER:\n this.trackTrigger('hover', createHoverTrigger(parameters, nameSpan, sourceSpan, this.prefetchSpan, this.onSourceSpan, this.hydrateSpan, this.validator));\n break;\n case OnTriggerType.VIEWPORT:\n this.trackTrigger('viewport', createViewportTrigger(this.start, this.isHydrationTrigger, this.bindingParser, parameters, nameSpan, sourceSpan, this.prefetchSpan, this.onSourceSpan, this.hydrateSpan, this.validator));\n break;\n default:\n throw new Error(`Unrecognized trigger type \"${identifier}\"`);\n }\n } catch (e) {\n this.error(identifier, e.message);\n }\n }\n consumeParameters() {\n const parameters = [];\n if (!this.token().isCharacter($LPAREN)) {\n this.unexpectedToken(this.token());\n return parameters;\n }\n this.advance();\n const commaDelimStack = [];\n let tokens = [];\n while (this.index < this.tokens.length) {\n const token = this.token();\n if (token.isCharacter($RPAREN) && commaDelimStack.length === 0) {\n if (tokens.length) {\n parameters.push({\n expression: this.tokenRangeText(tokens),\n start: tokens[0].index\n });\n }\n break;\n }\n if (token.type === TokenType.Character && COMMA_DELIMITED_SYNTAX.has(token.numValue)) {\n commaDelimStack.push(COMMA_DELIMITED_SYNTAX.get(token.numValue));\n }\n if (commaDelimStack.length > 0 && token.isCharacter(commaDelimStack[commaDelimStack.length - 1])) {\n commaDelimStack.pop();\n }\n if (commaDelimStack.length === 0 && token.isCharacter($COMMA) && tokens.length > 0) {\n parameters.push({\n expression: this.tokenRangeText(tokens),\n start: tokens[0].index\n });\n this.advance();\n tokens = [];\n continue;\n }\n tokens.push(token);\n this.advance();\n }\n if (!this.token().isCharacter($RPAREN) || commaDelimStack.length > 0) {\n this.error(this.token(), 'Unexpected end of expression');\n }\n if (this.index < this.tokens.length - 1 && !this.tokens[this.index + 1].isCharacter($COMMA)) {\n this.unexpectedToken(this.tokens[this.index + 1]);\n }\n return parameters;\n }\n tokenRangeText(tokens) {\n if (tokens.length === 0) {\n return '';\n }\n return this.expression.slice(this.start + tokens[0].index, this.start + tokens[tokens.length - 1].end);\n }\n trackTrigger(name, trigger) {\n trackTrigger(name, this.triggers, this.errors, trigger);\n }\n error(token, message) {\n const newStart = this.span.start.moveBy(this.start + token.index);\n const newEnd = newStart.moveBy(token.end - token.index);\n this.errors.push(new ParseError(new ParseSourceSpan(newStart, newEnd), message));\n }\n unexpectedToken(token) {\n this.error(token, `Unexpected token \"${token}\"`);\n }\n}\nfunction trackTrigger(name, allTriggers, errors, trigger) {\n if (allTriggers[name]) {\n errors.push(new ParseError(trigger.sourceSpan, `Duplicate \"${name}\" trigger is not allowed`));\n } else {\n allTriggers[name] = trigger;\n }\n}\nfunction createIdleTrigger(parameters, nameSpan, sourceSpan, prefetchSpan, onSourceSpan, hydrateSpan) {\n if (parameters.length > 0) {\n throw new Error(`\"${OnTriggerType.IDLE}\" trigger cannot have parameters`);\n }\n return new IdleDeferredTrigger(nameSpan, sourceSpan, prefetchSpan, onSourceSpan, hydrateSpan);\n}\nfunction createTimerTrigger(parameters, nameSpan, sourceSpan, prefetchSpan, onSourceSpan, hydrateSpan) {\n if (parameters.length !== 1) {\n throw new Error(`\"${OnTriggerType.TIMER}\" trigger must have exactly one parameter`);\n }\n const delay = parseDeferredTime(parameters[0].expression);\n if (delay === null) {\n throw new Error(`Could not parse time value of trigger \"${OnTriggerType.TIMER}\"`);\n }\n return new TimerDeferredTrigger(delay, nameSpan, sourceSpan, prefetchSpan, onSourceSpan, hydrateSpan);\n}\nfunction createImmediateTrigger(parameters, nameSpan, sourceSpan, prefetchSpan, onSourceSpan, hydrateSpan) {\n if (parameters.length > 0) {\n throw new Error(`\"${OnTriggerType.IMMEDIATE}\" trigger cannot have parameters`);\n }\n return new ImmediateDeferredTrigger(nameSpan, sourceSpan, prefetchSpan, onSourceSpan, hydrateSpan);\n}\nfunction createHoverTrigger(parameters, nameSpan, sourceSpan, prefetchSpan, onSourceSpan, hydrateSpan, validator) {\n validator(OnTriggerType.HOVER, parameters);\n return new HoverDeferredTrigger(parameters[0]?.expression ?? null, nameSpan, sourceSpan, prefetchSpan, onSourceSpan, hydrateSpan);\n}\nfunction createInteractionTrigger(parameters, nameSpan, sourceSpan, prefetchSpan, onSourceSpan, hydrateSpan, validator) {\n validator(OnTriggerType.INTERACTION, parameters);\n return new InteractionDeferredTrigger(parameters[0]?.expression ?? null, nameSpan, sourceSpan, prefetchSpan, onSourceSpan, hydrateSpan);\n}\nfunction createViewportTrigger(start, isHydrationTrigger, bindingParser, parameters, nameSpan, sourceSpan, prefetchSpan, onSourceSpan, hydrateSpan, validator) {\n validator(OnTriggerType.VIEWPORT, parameters);\n let reference;\n let options;\n if (parameters.length === 0) {\n reference = options = null;\n } else if (!parameters[0].expression.startsWith('{')) {\n reference = parameters[0].expression;\n options = null;\n } else {\n const parsed = bindingParser.parseBinding(parameters[0].expression, false, sourceSpan, sourceSpan.start.offset + start + parameters[0].start);\n if (!(parsed.ast instanceof LiteralMap)) {\n throw new Error('Options parameter of the \"viewport\" trigger must be an object literal');\n } else if (parsed.ast.keys.some(key => key.kind === 'spread')) {\n throw new Error('Spread operator are not allowed in this context');\n } else if (parsed.ast.keys.some(key => key.kind === 'property' && key.key === 'root')) {\n throw new Error('The \"root\" option is not supported in the options parameter of the \"viewport\" trigger');\n }\n const triggerIndex = parsed.ast.keys.findIndex(key => key.kind === 'property' && key.key === 'trigger');\n if (triggerIndex === -1) {\n reference = null;\n options = parsed.ast;\n } else {\n const value = parsed.ast.values[triggerIndex];\n const triggerFilter = (_, index) => index !== triggerIndex;\n if (!(value instanceof PropertyRead) || !(value.receiver instanceof ImplicitReceiver)) {\n throw new Error(`\"trigger\" option of the \"viewport\" trigger must be an identifier`);\n }\n reference = value.name;\n options = new LiteralMap(parsed.ast.span, parsed.ast.sourceSpan, parsed.ast.keys.filter(triggerFilter), parsed.ast.values.filter(triggerFilter));\n }\n }\n if (isHydrationTrigger && reference !== null) {\n throw new Error(`\"viewport\" hydration trigger cannot have a \"trigger\"`);\n } else if (options) {\n const dynamicNode = DynamicAstValidator.findDynamicNode(options);\n if (dynamicNode !== null) {\n throw new Error(`Options of the \"viewport\" trigger must be an object ` + `literal containing only literal values, but \"${dynamicNode.constructor.name}\" was found`);\n }\n }\n return new ViewportDeferredTrigger(reference, options, nameSpan, sourceSpan, prefetchSpan, onSourceSpan, hydrateSpan);\n}\nfunction validatePlainReferenceBasedTrigger(type, parameters) {\n if (parameters.length > 1) {\n throw new Error(`\"${type}\" trigger can only have zero or one parameters`);\n }\n}\nfunction validateHydrateReferenceBasedTrigger(type, parameters) {\n if (type === OnTriggerType.VIEWPORT) {\n if (parameters.length > 1) {\n throw new Error(`Hydration trigger \"${type}\" cannot have more than one parameter`);\n }\n return;\n }\n if (parameters.length > 0) {\n throw new Error(`Hydration trigger \"${type}\" cannot have parameters`);\n }\n}\nfunction getTriggerParametersStart(value, startPosition = 0) {\n let hasFoundSeparator = false;\n for (let i = startPosition; i < value.length; i++) {\n if (SEPARATOR_PATTERN.test(value[i])) {\n hasFoundSeparator = true;\n } else if (hasFoundSeparator) {\n return i;\n }\n }\n return -1;\n}\nfunction parseDeferredTime(value) {\n const match = value.match(TIME_PATTERN);\n if (!match) {\n return null;\n }\n const [time, units] = match;\n return parseFloat(time) * (units === 's' ? 1000 : 1);\n}\nclass DynamicAstValidator extends RecursiveAstVisitor {\n dynamicNode = null;\n static findDynamicNode(ast) {\n const visitor = new DynamicAstValidator();\n visitor.visit(ast);\n return visitor.dynamicNode;\n }\n visit(ast) {\n if (!(ast instanceof ASTWithSource) && !(ast instanceof LiteralPrimitive) && !(ast instanceof LiteralArray) && !(ast instanceof LiteralMap)) {\n this.dynamicNode = ast;\n } else {\n super.visit(ast);\n }\n }\n}\n\nconst PREFETCH_WHEN_PATTERN = /^prefetch\\s+when\\s/;\nconst PREFETCH_ON_PATTERN = /^prefetch\\s+on\\s/;\nconst HYDRATE_WHEN_PATTERN = /^hydrate\\s+when\\s/;\nconst HYDRATE_ON_PATTERN = /^hydrate\\s+on\\s/;\nconst HYDRATE_NEVER_PATTERN = /^hydrate\\s+never(\\s*)$/;\nconst MINIMUM_PARAMETER_PATTERN = /^minimum\\s/;\nconst AFTER_PARAMETER_PATTERN = /^after\\s/;\nconst WHEN_PARAMETER_PATTERN = /^when\\s/;\nconst ON_PARAMETER_PATTERN = /^on\\s/;\nfunction isConnectedDeferLoopBlock(name) {\n return name === 'placeholder' || name === 'loading' || name === 'error';\n}\nfunction createDeferredBlock(ast, connectedBlocks, visitor, bindingParser) {\n const errors = [];\n const {\n placeholder,\n loading,\n error\n } = parseConnectedBlocks(connectedBlocks, errors, visitor);\n const {\n triggers,\n prefetchTriggers,\n hydrateTriggers\n } = parsePrimaryTriggers(ast, bindingParser, errors);\n let lastEndSourceSpan = ast.endSourceSpan;\n let endOfLastSourceSpan = ast.sourceSpan.end;\n if (connectedBlocks.length > 0) {\n const lastConnectedBlock = connectedBlocks[connectedBlocks.length - 1];\n lastEndSourceSpan = lastConnectedBlock.endSourceSpan;\n endOfLastSourceSpan = lastConnectedBlock.sourceSpan.end;\n }\n const sourceSpanWithConnectedBlocks = new ParseSourceSpan(ast.sourceSpan.start, endOfLastSourceSpan);\n const node = new DeferredBlock(visitAll(visitor, ast.children, ast.children), triggers, prefetchTriggers, hydrateTriggers, placeholder, loading, error, ast.nameSpan, sourceSpanWithConnectedBlocks, ast.sourceSpan, ast.startSourceSpan, lastEndSourceSpan, ast.i18n);\n return {\n node,\n errors\n };\n}\nfunction parseConnectedBlocks(connectedBlocks, errors, visitor) {\n let placeholder = null;\n let loading = null;\n let error = null;\n for (const block of connectedBlocks) {\n try {\n if (!isConnectedDeferLoopBlock(block.name)) {\n errors.push(new ParseError(block.startSourceSpan, `Unrecognized block \"@${block.name}\"`));\n break;\n }\n switch (block.name) {\n case 'placeholder':\n if (placeholder !== null) {\n errors.push(new ParseError(block.startSourceSpan, `@defer block can only have one @placeholder block`));\n } else {\n placeholder = parsePlaceholderBlock(block, visitor);\n }\n break;\n case 'loading':\n if (loading !== null) {\n errors.push(new ParseError(block.startSourceSpan, `@defer block can only have one @loading block`));\n } else {\n loading = parseLoadingBlock(block, visitor);\n }\n break;\n case 'error':\n if (error !== null) {\n errors.push(new ParseError(block.startSourceSpan, `@defer block can only have one @error block`));\n } else {\n error = parseErrorBlock(block, visitor);\n }\n break;\n }\n } catch (e) {\n errors.push(new ParseError(block.startSourceSpan, e.message));\n }\n }\n return {\n placeholder,\n loading,\n error\n };\n}\nfunction parsePlaceholderBlock(ast, visitor) {\n let minimumTime = null;\n for (const param of ast.parameters) {\n if (MINIMUM_PARAMETER_PATTERN.test(param.expression)) {\n if (minimumTime != null) {\n throw new Error(`@placeholder block can only have one \"minimum\" parameter`);\n }\n const parsedTime = parseDeferredTime(param.expression.slice(getTriggerParametersStart(param.expression)));\n if (parsedTime === null) {\n throw new Error(`Could not parse time value of parameter \"minimum\"`);\n }\n minimumTime = parsedTime;\n } else {\n throw new Error(`Unrecognized parameter in @placeholder block: \"${param.expression}\"`);\n }\n }\n return new DeferredBlockPlaceholder(visitAll(visitor, ast.children, ast.children), minimumTime, ast.nameSpan, ast.sourceSpan, ast.startSourceSpan, ast.endSourceSpan, ast.i18n);\n}\nfunction parseLoadingBlock(ast, visitor) {\n let afterTime = null;\n let minimumTime = null;\n for (const param of ast.parameters) {\n if (AFTER_PARAMETER_PATTERN.test(param.expression)) {\n if (afterTime != null) {\n throw new Error(`@loading block can only have one \"after\" parameter`);\n }\n const parsedTime = parseDeferredTime(param.expression.slice(getTriggerParametersStart(param.expression)));\n if (parsedTime === null) {\n throw new Error(`Could not parse time value of parameter \"after\"`);\n }\n afterTime = parsedTime;\n } else if (MINIMUM_PARAMETER_PATTERN.test(param.expression)) {\n if (minimumTime != null) {\n throw new Error(`@loading block can only have one \"minimum\" parameter`);\n }\n const parsedTime = parseDeferredTime(param.expression.slice(getTriggerParametersStart(param.expression)));\n if (parsedTime === null) {\n throw new Error(`Could not parse time value of parameter \"minimum\"`);\n }\n minimumTime = parsedTime;\n } else {\n throw new Error(`Unrecognized parameter in @loading block: \"${param.expression}\"`);\n }\n }\n return new DeferredBlockLoading(visitAll(visitor, ast.children, ast.children), afterTime, minimumTime, ast.nameSpan, ast.sourceSpan, ast.startSourceSpan, ast.endSourceSpan, ast.i18n);\n}\nfunction parseErrorBlock(ast, visitor) {\n if (ast.parameters.length > 0) {\n throw new Error(`@error block cannot have parameters`);\n }\n return new DeferredBlockError(visitAll(visitor, ast.children, ast.children), ast.nameSpan, ast.sourceSpan, ast.startSourceSpan, ast.endSourceSpan, ast.i18n);\n}\nfunction parsePrimaryTriggers(ast, bindingParser, errors, placeholder) {\n const triggers = {};\n const prefetchTriggers = {};\n const hydrateTriggers = {};\n for (const param of ast.parameters) {\n if (WHEN_PARAMETER_PATTERN.test(param.expression)) {\n parseWhenTrigger(param, bindingParser, triggers, errors);\n } else if (ON_PARAMETER_PATTERN.test(param.expression)) {\n parseOnTrigger(param, bindingParser, triggers, errors);\n } else if (PREFETCH_WHEN_PATTERN.test(param.expression)) {\n parseWhenTrigger(param, bindingParser, prefetchTriggers, errors);\n } else if (PREFETCH_ON_PATTERN.test(param.expression)) {\n parseOnTrigger(param, bindingParser, prefetchTriggers, errors);\n } else if (HYDRATE_WHEN_PATTERN.test(param.expression)) {\n parseWhenTrigger(param, bindingParser, hydrateTriggers, errors);\n } else if (HYDRATE_ON_PATTERN.test(param.expression)) {\n parseOnTrigger(param, bindingParser, hydrateTriggers, errors);\n } else if (HYDRATE_NEVER_PATTERN.test(param.expression)) {\n parseNeverTrigger(param, hydrateTriggers, errors);\n } else {\n errors.push(new ParseError(param.sourceSpan, 'Unrecognized trigger'));\n }\n }\n if (hydrateTriggers.never && Object.keys(hydrateTriggers).length > 1) {\n errors.push(new ParseError(ast.startSourceSpan, 'Cannot specify additional `hydrate` triggers if `hydrate never` is present'));\n }\n return {\n triggers,\n prefetchTriggers,\n hydrateTriggers\n };\n}\n\nconst BIND_NAME_REGEXP = /^(?:(bind-)|(let-)|(ref-|#)|(on-)|(bindon-)|(@))(.*)$/;\nconst KW_BIND_IDX = 1;\nconst KW_LET_IDX = 2;\nconst KW_REF_IDX = 3;\nconst KW_ON_IDX = 4;\nconst KW_BINDON_IDX = 5;\nconst KW_AT_IDX = 6;\nconst IDENT_KW_IDX = 7;\nconst BINDING_DELIMS = {\n BANANA_BOX: {\n start: '[(',\n end: ')]'\n },\n PROPERTY: {\n start: '[',\n end: ']'\n },\n EVENT: {\n start: '(',\n end: ')'\n }\n};\nconst TEMPLATE_ATTR_PREFIX = '*';\nconst UNSUPPORTED_SELECTORLESS_TAGS = new Set(['link', 'style', 'script', 'ng-template', 'ng-container', 'ng-content']);\nconst UNSUPPORTED_SELECTORLESS_DIRECTIVE_ATTRS = new Set(['ngProjectAs', 'ngNonBindable']);\nfunction htmlAstToRender3Ast(htmlNodes, bindingParser, options) {\n const transformer = new HtmlAstToIvyAst(bindingParser, options);\n const ivyNodes = visitAll(transformer, htmlNodes, htmlNodes);\n const allErrors = bindingParser.errors.concat(transformer.errors);\n const result = {\n nodes: ivyNodes,\n errors: allErrors,\n styleUrls: transformer.styleUrls,\n styles: transformer.styles,\n ngContentSelectors: transformer.ngContentSelectors\n };\n if (options.collectCommentNodes) {\n result.commentNodes = transformer.commentNodes;\n }\n return result;\n}\nclass HtmlAstToIvyAst {\n bindingParser;\n options;\n errors = [];\n styles = [];\n styleUrls = [];\n ngContentSelectors = [];\n commentNodes = [];\n inI18nBlock = false;\n processedNodes = new Set();\n constructor(bindingParser, options) {\n this.bindingParser = bindingParser;\n this.options = options;\n }\n visitElement(element) {\n const isI18nRootElement = isI18nRootNode(element.i18n);\n if (isI18nRootElement) {\n if (this.inI18nBlock) {\n this.reportError('Cannot mark an element as translatable inside of a translatable section. Please remove the nested i18n marker.', element.sourceSpan);\n }\n this.inI18nBlock = true;\n }\n const preparsedElement = preparseElement(element);\n if (preparsedElement.type === PreparsedElementType.SCRIPT) {\n return null;\n } else if (preparsedElement.type === PreparsedElementType.STYLE) {\n const contents = textContents(element);\n if (contents !== null) {\n this.styles.push(contents);\n }\n return null;\n } else if (preparsedElement.type === PreparsedElementType.STYLESHEET && isStyleUrlResolvable(preparsedElement.hrefAttr)) {\n this.styleUrls.push(preparsedElement.hrefAttr);\n return null;\n }\n const isTemplateElement = isNgTemplate(element.name);\n const {\n attributes,\n boundEvents,\n references,\n variables,\n templateVariables,\n elementHasInlineTemplate,\n parsedProperties,\n templateParsedProperties,\n i18nAttrsMeta\n } = this.prepareAttributes(element.attrs, isTemplateElement);\n const directives = this.extractDirectives(element);\n let children;\n if (preparsedElement.nonBindable) {\n children = visitAll(NON_BINDABLE_VISITOR, element.children).flat(Infinity);\n } else {\n children = visitAll(this, element.children, element.children);\n }\n let parsedElement;\n if (preparsedElement.type === PreparsedElementType.NG_CONTENT) {\n const selector = preparsedElement.selectAttr;\n const attrs = element.attrs.map(attr => this.visitAttribute(attr));\n parsedElement = new Content(selector, attrs, children, element.isSelfClosing, element.sourceSpan, element.startSourceSpan, element.endSourceSpan, element.i18n);\n this.ngContentSelectors.push(selector);\n } else if (isTemplateElement) {\n const attrs = this.categorizePropertyAttributes(element.name, parsedProperties, i18nAttrsMeta);\n parsedElement = new Template(element.name, attributes, attrs.bound, boundEvents, directives, [], children, references, variables, element.isSelfClosing, element.sourceSpan, element.startSourceSpan, element.endSourceSpan, element.i18n);\n } else {\n const attrs = this.categorizePropertyAttributes(element.name, parsedProperties, i18nAttrsMeta);\n if (element.name === 'ng-container') {\n for (const bound of attrs.bound) {\n if (bound.type === BindingType.Attribute) {\n this.reportError(`Attribute bindings are not supported on ng-container. Use property bindings instead.`, bound.sourceSpan);\n }\n }\n }\n parsedElement = new Element$1(element.name, attributes, attrs.bound, boundEvents, directives, children, references, element.isSelfClosing, element.sourceSpan, element.startSourceSpan, element.endSourceSpan, element.isVoid, element.i18n);\n }\n if (elementHasInlineTemplate) {\n parsedElement = this.wrapInTemplate(parsedElement, templateParsedProperties, templateVariables, i18nAttrsMeta, isTemplateElement, isI18nRootElement);\n }\n if (isI18nRootElement) {\n this.inI18nBlock = false;\n }\n return parsedElement;\n }\n visitAttribute(attribute) {\n return new TextAttribute(attribute.name, attribute.value, attribute.sourceSpan, attribute.keySpan, attribute.valueSpan, attribute.i18n);\n }\n visitText(text) {\n return this.processedNodes.has(text) ? null : this._visitTextWithInterpolation(text.value, text.sourceSpan, text.tokens, text.i18n);\n }\n visitExpansion(expansion) {\n if (!expansion.i18n) {\n return null;\n }\n if (!isI18nRootNode(expansion.i18n)) {\n throw new Error(`Invalid type \"${expansion.i18n.constructor}\" for \"i18n\" property of ${expansion.sourceSpan.toString()}. Expected a \"Message\"`);\n }\n const message = expansion.i18n;\n const vars = {};\n const placeholders = {};\n Object.keys(message.placeholders).forEach(key => {\n const value = message.placeholders[key];\n if (key.startsWith(I18N_ICU_VAR_PREFIX)) {\n const formattedKey = key.trim();\n const ast = this.bindingParser.parseInterpolationExpression(value.text, value.sourceSpan);\n vars[formattedKey] = new BoundText(ast, value.sourceSpan);\n } else {\n placeholders[key] = this._visitTextWithInterpolation(value.text, value.sourceSpan, null);\n }\n });\n return new Icu$1(vars, placeholders, expansion.sourceSpan, message);\n }\n visitExpansionCase(expansionCase) {\n return null;\n }\n visitComment(comment) {\n if (this.options.collectCommentNodes) {\n this.commentNodes.push(new Comment$1(comment.value || '', comment.sourceSpan));\n }\n return null;\n }\n visitLetDeclaration(decl, context) {\n const value = this.bindingParser.parseBinding(decl.value, false, decl.valueSpan, decl.valueSpan.start.offset);\n if (value.errors.length === 0 && value.ast instanceof EmptyExpr$1) {\n this.reportError('@let declaration value cannot be empty', decl.valueSpan);\n }\n return new LetDeclaration$1(decl.name, value, decl.sourceSpan, decl.nameSpan, decl.valueSpan);\n }\n visitComponent(component) {\n const isI18nRootElement = isI18nRootNode(component.i18n);\n if (isI18nRootElement) {\n if (this.inI18nBlock) {\n this.reportError('Cannot mark a component as translatable inside of a translatable section. Please remove the nested i18n marker.', component.sourceSpan);\n }\n this.inI18nBlock = true;\n }\n if (component.tagName !== null && UNSUPPORTED_SELECTORLESS_TAGS.has(component.tagName)) {\n this.reportError(`Tag name \"${component.tagName}\" cannot be used as a component tag`, component.startSourceSpan);\n return null;\n }\n const {\n attributes,\n boundEvents,\n references,\n templateVariables,\n elementHasInlineTemplate,\n parsedProperties,\n templateParsedProperties,\n i18nAttrsMeta\n } = this.prepareAttributes(component.attrs, false);\n this.validateSelectorlessReferences(references);\n const directives = this.extractDirectives(component);\n let children;\n if (component.attrs.find(attr => attr.name === 'ngNonBindable')) {\n children = visitAll(NON_BINDABLE_VISITOR, component.children).flat(Infinity);\n } else {\n children = visitAll(this, component.children, component.children);\n }\n const attrs = this.categorizePropertyAttributes(component.tagName, parsedProperties, i18nAttrsMeta);\n let node = new Component$1(component.componentName, component.tagName, component.fullName, attributes, attrs.bound, boundEvents, directives, children, references, component.isSelfClosing, component.sourceSpan, component.startSourceSpan, component.endSourceSpan, component.i18n);\n if (elementHasInlineTemplate) {\n node = this.wrapInTemplate(node, templateParsedProperties, templateVariables, i18nAttrsMeta, false, isI18nRootElement);\n }\n if (isI18nRootElement) {\n this.inI18nBlock = false;\n }\n return node;\n }\n visitDirective() {\n return null;\n }\n visitBlockParameter() {\n return null;\n }\n visitBlock(block, context) {\n const index = Array.isArray(context) ? context.indexOf(block) : -1;\n if (index === -1) {\n throw new Error('Visitor invoked incorrectly. Expecting visitBlock to be invoked siblings array as its context');\n }\n if (this.processedNodes.has(block)) {\n return null;\n }\n let result = null;\n switch (block.name) {\n case 'defer':\n result = createDeferredBlock(block, this.findConnectedBlocks(index, context, isConnectedDeferLoopBlock), this, this.bindingParser);\n break;\n case 'switch':\n result = createSwitchBlock(block, this, this.bindingParser);\n break;\n case 'for':\n result = createForLoop(block, this.findConnectedBlocks(index, context, isConnectedForLoopBlock), this, this.bindingParser);\n break;\n case 'if':\n result = createIfBlock(block, this.findConnectedBlocks(index, context, isConnectedIfLoopBlock), this, this.bindingParser);\n break;\n default:\n let errorMessage;\n if (isConnectedDeferLoopBlock(block.name)) {\n errorMessage = `@${block.name} block can only be used after an @defer block.`;\n this.processedNodes.add(block);\n } else if (isConnectedForLoopBlock(block.name)) {\n errorMessage = `@${block.name} block can only be used after an @for block.`;\n this.processedNodes.add(block);\n } else if (isConnectedIfLoopBlock(block.name)) {\n errorMessage = `@${block.name} block can only be used after an @if or @else if block.`;\n this.processedNodes.add(block);\n } else {\n errorMessage = `Unrecognized block @${block.name}.`;\n }\n result = {\n node: new UnknownBlock(block.name, block.sourceSpan, block.nameSpan),\n errors: [new ParseError(block.sourceSpan, errorMessage)]\n };\n break;\n }\n this.errors.push(...result.errors);\n return result.node;\n }\n findConnectedBlocks(primaryBlockIndex, siblings, predicate) {\n const relatedBlocks = [];\n for (let i = primaryBlockIndex + 1; i < siblings.length; i++) {\n const node = siblings[i];\n if (node instanceof Comment) {\n continue;\n }\n if (node instanceof Text && node.value.trim().length === 0) {\n this.processedNodes.add(node);\n continue;\n }\n if (!(node instanceof Block) || !predicate(node.name)) {\n break;\n }\n relatedBlocks.push(node);\n this.processedNodes.add(node);\n }\n return relatedBlocks;\n }\n categorizePropertyAttributes(elementName, properties, i18nPropsMeta) {\n const bound = [];\n const literal = [];\n properties.forEach(prop => {\n const i18n = i18nPropsMeta[prop.name];\n if (prop.isLiteral) {\n literal.push(new TextAttribute(prop.name, prop.expression.source || '', prop.sourceSpan, prop.keySpan, prop.valueSpan, i18n));\n } else {\n const bep = this.bindingParser.createBoundElementProperty(elementName, prop, true, false);\n bound.push(BoundAttribute.fromBoundElementProperty(bep, i18n));\n }\n });\n return {\n bound,\n literal\n };\n }\n prepareAttributes(attrs, isTemplateElement) {\n const parsedProperties = [];\n const boundEvents = [];\n const variables = [];\n const references = [];\n const attributes = [];\n const i18nAttrsMeta = {};\n const templateParsedProperties = [];\n const templateVariables = [];\n let elementHasInlineTemplate = false;\n for (const attribute of attrs) {\n let hasBinding = false;\n const normalizedName = normalizeAttributeName(attribute.name);\n let isTemplateBinding = false;\n if (attribute.i18n) {\n i18nAttrsMeta[attribute.name] = attribute.i18n;\n }\n if (normalizedName.startsWith(TEMPLATE_ATTR_PREFIX)) {\n if (elementHasInlineTemplate) {\n this.reportError(`Can't have multiple template bindings on one element. Use only one attribute prefixed with *`, attribute.sourceSpan);\n }\n isTemplateBinding = true;\n elementHasInlineTemplate = true;\n const templateValue = attribute.value;\n const templateKey = normalizedName.substring(TEMPLATE_ATTR_PREFIX.length);\n const parsedVariables = [];\n const absoluteValueOffset = attribute.valueSpan ? attribute.valueSpan.fullStart.offset : attribute.sourceSpan.fullStart.offset + attribute.name.length;\n this.bindingParser.parseInlineTemplateBinding(templateKey, templateValue, attribute.sourceSpan, absoluteValueOffset, [], templateParsedProperties, parsedVariables, true);\n templateVariables.push(...parsedVariables.map(v => new Variable(v.name, v.value, v.sourceSpan, v.keySpan, v.valueSpan)));\n } else {\n hasBinding = this.parseAttribute(isTemplateElement, attribute, [], parsedProperties, boundEvents, variables, references);\n }\n if (!hasBinding && !isTemplateBinding) {\n attributes.push(this.visitAttribute(attribute));\n }\n }\n return {\n attributes,\n boundEvents,\n references,\n variables,\n templateVariables,\n elementHasInlineTemplate,\n parsedProperties,\n templateParsedProperties,\n i18nAttrsMeta\n };\n }\n parseAttribute(isTemplateElement, attribute, matchableAttributes, parsedProperties, boundEvents, variables, references) {\n const name = normalizeAttributeName(attribute.name);\n const value = attribute.value;\n const srcSpan = attribute.sourceSpan;\n const absoluteOffset = attribute.valueSpan ? attribute.valueSpan.fullStart.offset : srcSpan.fullStart.offset;\n function createKeySpan(srcSpan, prefix, identifier) {\n const normalizationAdjustment = attribute.name.length - name.length;\n const keySpanStart = srcSpan.start.moveBy(prefix.length + normalizationAdjustment);\n const keySpanEnd = keySpanStart.moveBy(identifier.length);\n return new ParseSourceSpan(keySpanStart, keySpanEnd, keySpanStart, identifier);\n }\n const bindParts = name.match(BIND_NAME_REGEXP);\n if (bindParts) {\n if (bindParts[KW_BIND_IDX] != null) {\n const identifier = bindParts[IDENT_KW_IDX];\n const keySpan = createKeySpan(srcSpan, bindParts[KW_BIND_IDX], identifier);\n this.bindingParser.parsePropertyBinding(identifier, value, false, false, srcSpan, absoluteOffset, attribute.valueSpan, matchableAttributes, parsedProperties, keySpan);\n } else if (bindParts[KW_LET_IDX]) {\n if (isTemplateElement) {\n const identifier = bindParts[IDENT_KW_IDX];\n const keySpan = createKeySpan(srcSpan, bindParts[KW_LET_IDX], identifier);\n this.parseVariable(identifier, value, srcSpan, keySpan, attribute.valueSpan, variables);\n } else {\n this.reportError(`\"let-\" is only supported on ng-template elements.`, srcSpan);\n }\n } else if (bindParts[KW_REF_IDX]) {\n const identifier = bindParts[IDENT_KW_IDX];\n const keySpan = createKeySpan(srcSpan, bindParts[KW_REF_IDX], identifier);\n this.parseReference(identifier, value, srcSpan, keySpan, attribute.valueSpan, references);\n } else if (bindParts[KW_ON_IDX]) {\n const events = [];\n const identifier = bindParts[IDENT_KW_IDX];\n const keySpan = createKeySpan(srcSpan, bindParts[KW_ON_IDX], identifier);\n this.bindingParser.parseEvent(identifier, value, false, srcSpan, attribute.valueSpan || srcSpan, matchableAttributes, events, keySpan);\n addEvents(events, boundEvents);\n } else if (bindParts[KW_BINDON_IDX]) {\n const identifier = bindParts[IDENT_KW_IDX];\n const keySpan = createKeySpan(srcSpan, bindParts[KW_BINDON_IDX], identifier);\n this.bindingParser.parsePropertyBinding(identifier, value, false, true, srcSpan, absoluteOffset, attribute.valueSpan, matchableAttributes, parsedProperties, keySpan);\n this.parseAssignmentEvent(identifier, value, srcSpan, attribute.valueSpan, matchableAttributes, boundEvents, keySpan, absoluteOffset);\n } else if (bindParts[KW_AT_IDX]) {\n const keySpan = createKeySpan(srcSpan, '', name);\n this.bindingParser.parseLiteralAttr(name, value, srcSpan, absoluteOffset, attribute.valueSpan, matchableAttributes, parsedProperties, keySpan);\n }\n return true;\n }\n let delims = null;\n if (name.startsWith(BINDING_DELIMS.BANANA_BOX.start)) {\n delims = BINDING_DELIMS.BANANA_BOX;\n } else if (name.startsWith(BINDING_DELIMS.PROPERTY.start)) {\n delims = BINDING_DELIMS.PROPERTY;\n } else if (name.startsWith(BINDING_DELIMS.EVENT.start)) {\n delims = BINDING_DELIMS.EVENT;\n }\n if (delims !== null && name.endsWith(delims.end) && name.length > delims.start.length + delims.end.length) {\n const identifier = name.substring(delims.start.length, name.length - delims.end.length);\n const keySpan = createKeySpan(srcSpan, delims.start, identifier);\n if (delims.start === BINDING_DELIMS.BANANA_BOX.start) {\n this.bindingParser.parsePropertyBinding(identifier, value, false, true, srcSpan, absoluteOffset, attribute.valueSpan, matchableAttributes, parsedProperties, keySpan);\n this.parseAssignmentEvent(identifier, value, srcSpan, attribute.valueSpan, matchableAttributes, boundEvents, keySpan, absoluteOffset);\n } else if (delims.start === BINDING_DELIMS.PROPERTY.start) {\n this.bindingParser.parsePropertyBinding(identifier, value, false, false, srcSpan, absoluteOffset, attribute.valueSpan, matchableAttributes, parsedProperties, keySpan);\n } else {\n const events = [];\n this.bindingParser.parseEvent(identifier, value, false, srcSpan, attribute.valueSpan || srcSpan, matchableAttributes, events, keySpan);\n addEvents(events, boundEvents);\n }\n return true;\n }\n const keySpan = createKeySpan(srcSpan, '', name);\n const hasBinding = this.bindingParser.parsePropertyInterpolation(name, value, srcSpan, attribute.valueSpan, matchableAttributes, parsedProperties, keySpan, attribute.valueTokens ?? null);\n return hasBinding;\n }\n extractDirectives(node) {\n const elementName = node instanceof Component ? node.tagName : node.name;\n const directives = [];\n const seenDirectives = new Set();\n for (const directive of node.directives) {\n let invalid = false;\n for (const attr of directive.attrs) {\n if (attr.name.startsWith(TEMPLATE_ATTR_PREFIX)) {\n invalid = true;\n this.reportError(`Shorthand template syntax \"${attr.name}\" is not supported inside a directive context`, attr.sourceSpan);\n } else if (UNSUPPORTED_SELECTORLESS_DIRECTIVE_ATTRS.has(attr.name)) {\n invalid = true;\n this.reportError(`Attribute \"${attr.name}\" is not supported in a directive context`, attr.sourceSpan);\n }\n }\n if (!invalid && seenDirectives.has(directive.name)) {\n invalid = true;\n this.reportError(`Cannot apply directive \"${directive.name}\" multiple times on the same element`, directive.sourceSpan);\n }\n if (invalid) {\n continue;\n }\n const {\n attributes,\n parsedProperties,\n boundEvents,\n references,\n i18nAttrsMeta\n } = this.prepareAttributes(directive.attrs, false);\n this.validateSelectorlessReferences(references);\n const {\n bound: inputs\n } = this.categorizePropertyAttributes(elementName, parsedProperties, i18nAttrsMeta);\n for (const input of inputs) {\n if (input.type !== BindingType.Property && input.type !== BindingType.TwoWay) {\n invalid = true;\n this.reportError('Binding is not supported in a directive context', input.sourceSpan);\n }\n }\n if (invalid) {\n continue;\n }\n seenDirectives.add(directive.name);\n directives.push(new Directive$1(directive.name, attributes, inputs, boundEvents, references, directive.sourceSpan, directive.startSourceSpan, directive.endSourceSpan, undefined));\n }\n return directives;\n }\n filterAnimationAttributes(attributes) {\n return attributes.filter(a => !a.name.startsWith('animate.'));\n }\n filterAnimationInputs(attributes) {\n return attributes.filter(a => a.type !== BindingType.Animation);\n }\n wrapInTemplate(node, templateProperties, templateVariables, i18nAttrsMeta, isTemplateElement, isI18nRootElement) {\n const attrs = this.categorizePropertyAttributes('ng-template', templateProperties, i18nAttrsMeta);\n const templateAttrs = [];\n attrs.literal.forEach(attr => templateAttrs.push(attr));\n attrs.bound.forEach(attr => templateAttrs.push(attr));\n const hoistedAttrs = {\n attributes: [],\n inputs: [],\n outputs: []\n };\n if (node instanceof Element$1 || node instanceof Component$1) {\n hoistedAttrs.attributes.push(...this.filterAnimationAttributes(node.attributes));\n hoistedAttrs.inputs.push(...this.filterAnimationInputs(node.inputs));\n hoistedAttrs.outputs.push(...node.outputs);\n }\n const i18n = isTemplateElement && isI18nRootElement ? undefined : node.i18n;\n let name;\n if (node instanceof Component$1) {\n name = node.tagName;\n } else if (node instanceof Template) {\n name = null;\n } else {\n name = node.name;\n }\n return new Template(name, hoistedAttrs.attributes, hoistedAttrs.inputs, hoistedAttrs.outputs, [], templateAttrs, [node], [], templateVariables, false, node.sourceSpan, node.startSourceSpan, node.endSourceSpan, i18n);\n }\n _visitTextWithInterpolation(value, sourceSpan, interpolatedTokens, i18n) {\n const valueNoNgsp = replaceNgsp(value);\n const expr = this.bindingParser.parseInterpolation(valueNoNgsp, sourceSpan, interpolatedTokens);\n return expr ? new BoundText(expr, sourceSpan, i18n) : new Text$3(valueNoNgsp, sourceSpan);\n }\n parseVariable(identifier, value, sourceSpan, keySpan, valueSpan, variables) {\n if (identifier.indexOf('-') > -1) {\n this.reportError(`\"-\" is not allowed in variable names`, sourceSpan);\n } else if (identifier.length === 0) {\n this.reportError(`Variable does not have a name`, sourceSpan);\n }\n variables.push(new Variable(identifier, value, sourceSpan, keySpan, valueSpan));\n }\n parseReference(identifier, value, sourceSpan, keySpan, valueSpan, references) {\n if (identifier.indexOf('-') > -1) {\n this.reportError(`\"-\" is not allowed in reference names`, sourceSpan);\n } else if (identifier.length === 0) {\n this.reportError(`Reference does not have a name`, sourceSpan);\n } else if (references.some(reference => reference.name === identifier)) {\n this.reportError(`Reference \"#${identifier}\" is defined more than once`, sourceSpan);\n }\n references.push(new Reference(identifier, value, sourceSpan, keySpan, valueSpan));\n }\n parseAssignmentEvent(name, expression, sourceSpan, valueSpan, targetMatchableAttrs, boundEvents, keySpan, absoluteOffset) {\n const events = [];\n this.bindingParser.parseEvent(`${name}Change`, expression, true, sourceSpan, valueSpan || sourceSpan, targetMatchableAttrs, events, keySpan);\n addEvents(events, boundEvents);\n }\n validateSelectorlessReferences(references) {\n if (references.length === 0) {\n return;\n }\n const seenNames = new Set();\n for (const ref of references) {\n if (ref.value.length > 0) {\n this.reportError('Cannot specify a value for a local reference in this context', ref.valueSpan || ref.sourceSpan);\n } else if (seenNames.has(ref.name)) {\n this.reportError('Duplicate reference names are not allowed', ref.sourceSpan);\n } else {\n seenNames.add(ref.name);\n }\n }\n }\n reportError(message, sourceSpan, level = ParseErrorLevel.ERROR) {\n this.errors.push(new ParseError(sourceSpan, message, level));\n }\n}\nclass NonBindableVisitor {\n visitElement(ast) {\n const preparsedElement = preparseElement(ast);\n if (preparsedElement.type === PreparsedElementType.SCRIPT || preparsedElement.type === PreparsedElementType.STYLE || preparsedElement.type === PreparsedElementType.STYLESHEET) {\n return null;\n }\n const children = visitAll(this, ast.children, null);\n return new Element$1(ast.name, visitAll(this, ast.attrs), [], [], [], children, [], ast.isSelfClosing, ast.sourceSpan, ast.startSourceSpan, ast.endSourceSpan, ast.isVoid);\n }\n visitComment(comment) {\n return null;\n }\n visitAttribute(attribute) {\n return new TextAttribute(attribute.name, attribute.value, attribute.sourceSpan, attribute.keySpan, attribute.valueSpan, attribute.i18n);\n }\n visitText(text) {\n return new Text$3(text.value, text.sourceSpan);\n }\n visitExpansion(expansion) {\n return null;\n }\n visitExpansionCase(expansionCase) {\n return null;\n }\n visitBlock(block, context) {\n const nodes = [new Text$3(block.startSourceSpan.toString(), block.startSourceSpan), ...visitAll(this, block.children)];\n if (block.endSourceSpan !== null) {\n nodes.push(new Text$3(block.endSourceSpan.toString(), block.endSourceSpan));\n }\n return nodes;\n }\n visitBlockParameter(parameter, context) {\n return null;\n }\n visitLetDeclaration(decl, context) {\n return new Text$3(`@let ${decl.name} = ${decl.value};`, decl.sourceSpan);\n }\n visitComponent(ast, context) {\n const children = visitAll(this, ast.children, null);\n return new Element$1(ast.fullName, visitAll(this, ast.attrs), [], [], [], children, [], ast.isSelfClosing, ast.sourceSpan, ast.startSourceSpan, ast.endSourceSpan, false);\n }\n visitDirective(directive, context) {\n return null;\n }\n}\nconst NON_BINDABLE_VISITOR = new NonBindableVisitor();\nfunction normalizeAttributeName(attrName) {\n return /^data-/i.test(attrName) ? attrName.substring(5) : attrName;\n}\nfunction addEvents(events, boundEvents) {\n boundEvents.push(...events.map(e => BoundEvent.fromParsedEvent(e)));\n}\nfunction textContents(node) {\n if (node.children.length !== 1 || !(node.children[0] instanceof Text)) {\n return null;\n } else {\n return node.children[0].value;\n }\n}\n\nconst LEADING_TRIVIA_CHARS = [' ', '\\n', '\\r', '\\t'];\nfunction parseTemplate(template, templateUrl, options = {}) {\n const {\n preserveWhitespaces,\n enableI18nLegacyMessageIdFormat\n } = options;\n const selectorlessEnabled = options.enableSelectorless ?? false;\n const bindingParser = makeBindingParser(selectorlessEnabled);\n const htmlParser = new HtmlParser();\n const parseResult = htmlParser.parse(template, templateUrl, {\n leadingTriviaChars: LEADING_TRIVIA_CHARS,\n ...options,\n tokenizeExpansionForms: true,\n tokenizeBlocks: options.enableBlockSyntax ?? true,\n tokenizeLet: options.enableLetSyntax ?? true,\n selectorlessEnabled\n });\n if (!options.alwaysAttemptHtmlToR3AstConversion && parseResult.errors && parseResult.errors.length > 0) {\n const parsedTemplate = {\n preserveWhitespaces,\n errors: parseResult.errors,\n nodes: [],\n styleUrls: [],\n styles: [],\n ngContentSelectors: []\n };\n if (options.collectCommentNodes) {\n parsedTemplate.commentNodes = [];\n }\n return parsedTemplate;\n }\n let rootNodes = parseResult.rootNodes;\n const retainEmptyTokens = !(options.preserveSignificantWhitespace ?? true);\n const i18nMetaVisitor = new I18nMetaVisitor(!preserveWhitespaces, enableI18nLegacyMessageIdFormat, options.preserveSignificantWhitespace, retainEmptyTokens);\n const i18nMetaResult = i18nMetaVisitor.visitAllWithErrors(rootNodes);\n if (!options.alwaysAttemptHtmlToR3AstConversion && i18nMetaResult.errors && i18nMetaResult.errors.length > 0) {\n const parsedTemplate = {\n preserveWhitespaces,\n errors: i18nMetaResult.errors,\n nodes: [],\n styleUrls: [],\n styles: [],\n ngContentSelectors: []\n };\n if (options.collectCommentNodes) {\n parsedTemplate.commentNodes = [];\n }\n return parsedTemplate;\n }\n rootNodes = i18nMetaResult.rootNodes;\n if (!preserveWhitespaces) {\n rootNodes = visitAll(new WhitespaceVisitor(true, undefined, false), rootNodes);\n if (i18nMetaVisitor.hasI18nMeta) {\n rootNodes = visitAll(new I18nMetaVisitor(false, undefined, true, retainEmptyTokens), rootNodes);\n }\n }\n const {\n nodes,\n errors,\n styleUrls,\n styles,\n ngContentSelectors,\n commentNodes\n } = htmlAstToRender3Ast(rootNodes, bindingParser, {\n collectCommentNodes: !!options.collectCommentNodes\n });\n errors.push(...parseResult.errors, ...i18nMetaResult.errors);\n const parsedTemplate = {\n preserveWhitespaces,\n errors: errors.length > 0 ? errors : null,\n nodes,\n styleUrls,\n styles,\n ngContentSelectors\n };\n if (options.collectCommentNodes) {\n parsedTemplate.commentNodes = commentNodes;\n }\n return parsedTemplate;\n}\nconst elementRegistry = new DomElementSchemaRegistry();\nfunction makeBindingParser(selectorlessEnabled = false) {\n return new BindingParser(new Parser(new Lexer(), selectorlessEnabled), elementRegistry, []);\n}\n\nconst COMPONENT_VARIABLE = '%COMP%';\nconst HOST_ATTR = `_nghost-${COMPONENT_VARIABLE}`;\nconst CONTENT_ATTR = `_ngcontent-${COMPONENT_VARIABLE}`;\nfunction baseDirectiveFields(meta, constantPool, bindingParser) {\n const definitionMap = new DefinitionMap();\n const selectors = parseSelectorToR3Selector(meta.selector);\n definitionMap.set('type', meta.type.value);\n if (selectors.length > 0) {\n definitionMap.set('selectors', asLiteral(selectors));\n }\n if (meta.queries.length > 0) {\n definitionMap.set('contentQueries', createContentQueriesFunction(meta.queries, constantPool, meta.name));\n }\n if (meta.viewQueries.length) {\n definitionMap.set('viewQuery', createViewQueriesFunction(meta.viewQueries, constantPool, meta.name));\n }\n definitionMap.set('hostBindings', createHostBindingsFunction(meta.host, meta.typeSourceSpan, bindingParser, constantPool, meta.selector || '', meta.name, definitionMap));\n definitionMap.set('inputs', conditionallyCreateDirectiveBindingLiteral(meta.inputs, true));\n definitionMap.set('outputs', conditionallyCreateDirectiveBindingLiteral(meta.outputs));\n if (meta.exportAs !== null) {\n definitionMap.set('exportAs', literalArr(meta.exportAs.map(e => literal(e))));\n }\n if (meta.isStandalone === false) {\n definitionMap.set('standalone', literal(false));\n }\n if (meta.isSignal) {\n definitionMap.set('signals', literal(true));\n }\n return definitionMap;\n}\nfunction addFeatures(definitionMap, meta) {\n const features = [];\n const providers = meta.providers;\n const viewProviders = meta.viewProviders;\n if (providers || viewProviders) {\n const args = [providers || new LiteralArrayExpr([])];\n if (viewProviders) {\n args.push(viewProviders);\n }\n features.push(importExpr(Identifiers.ProvidersFeature).callFn(args));\n }\n if (meta.hostDirectives?.length) {\n features.push(importExpr(Identifiers.HostDirectivesFeature).callFn([createHostDirectivesFeatureArg(meta.hostDirectives)]));\n }\n if (meta.usesInheritance) {\n features.push(importExpr(Identifiers.InheritDefinitionFeature));\n }\n if (meta.lifecycle.usesOnChanges) {\n features.push(importExpr(Identifiers.NgOnChangesFeature));\n }\n if (meta.controlCreate !== null) {\n features.push(importExpr(Identifiers.ControlFeature).callFn([literal(meta.controlCreate.passThroughInput)]));\n }\n if ('externalStyles' in meta && meta.externalStyles?.length) {\n const externalStyleNodes = meta.externalStyles.map(externalStyle => literal(externalStyle));\n features.push(importExpr(Identifiers.ExternalStylesFeature).callFn([literalArr(externalStyleNodes)]));\n }\n if (features.length) {\n definitionMap.set('features', literalArr(features));\n }\n}\nfunction compileDirectiveFromMetadata(meta, constantPool, bindingParser) {\n const definitionMap = baseDirectiveFields(meta, constantPool, bindingParser);\n addFeatures(definitionMap, meta);\n const expression = importExpr(Identifiers.defineDirective).callFn([definitionMap.toLiteralMap()], undefined, true);\n const type = createDirectiveType(meta);\n return {\n expression,\n type,\n statements: []\n };\n}\nfunction compileComponentFromMetadata(meta, constantPool, bindingParser) {\n const definitionMap = baseDirectiveFields(meta, constantPool, bindingParser);\n addFeatures(definitionMap, meta);\n const selector = meta.selector && CssSelector.parse(meta.selector);\n const firstSelector = selector && selector[0];\n if (firstSelector) {\n const selectorAttributes = firstSelector.getAttrs();\n if (selectorAttributes.length) {\n definitionMap.set('attrs', constantPool.getConstLiteral(literalArr(selectorAttributes.map(value => value != null ? literal(value) : literal(undefined))), true));\n }\n }\n const templateTypeName = meta.name;\n let allDeferrableDepsFn = null;\n if (meta.defer.mode === 1 && meta.defer.dependenciesFn !== null) {\n const fnName = `${templateTypeName}_DeferFn`;\n constantPool.statements.push(new DeclareVarStmt(fnName, meta.defer.dependenciesFn, undefined, StmtModifier.Final));\n allDeferrableDepsFn = variable(fnName);\n }\n const compilationMode = meta.isStandalone && !meta.hasDirectiveDependencies ? TemplateCompilationMode.DomOnly : TemplateCompilationMode.Full;\n const tpl = ingestComponent(meta.name, meta.template.nodes, constantPool, compilationMode, meta.relativeContextFilePath, meta.i18nUseExternalIds, meta.defer, allDeferrableDepsFn, meta.relativeTemplatePath, getTemplateSourceLocationsEnabled());\n transform(tpl, CompilationJobKind.Tmpl);\n const templateFn = emitTemplateFn(tpl, constantPool);\n if (tpl.contentSelectors !== null) {\n definitionMap.set('ngContentSelectors', tpl.contentSelectors);\n }\n definitionMap.set('decls', literal(tpl.root.decls));\n definitionMap.set('vars', literal(tpl.root.vars));\n if (tpl.consts.length > 0) {\n if (tpl.constsInitializers.length > 0) {\n definitionMap.set('consts', arrowFn([], [...tpl.constsInitializers, new ReturnStatement(literalArr(tpl.consts))]));\n } else {\n definitionMap.set('consts', literalArr(tpl.consts));\n }\n }\n definitionMap.set('template', templateFn);\n if (meta.declarationListEmitMode !== 3 && meta.declarations.length > 0) {\n definitionMap.set('dependencies', compileDeclarationList(literalArr(meta.declarations.map(decl => decl.type)), meta.declarationListEmitMode));\n } else if (meta.declarationListEmitMode === 3) {\n const args = [meta.type.value];\n if (meta.rawImports) {\n args.push(meta.rawImports);\n }\n definitionMap.set('dependencies', importExpr(Identifiers.getComponentDepsFactory).callFn(args));\n }\n if (meta.encapsulation === null) {\n meta.encapsulation = ViewEncapsulation$1.Emulated;\n }\n let hasStyles = !!meta.externalStyles?.length;\n if (meta.styles && meta.styles.length) {\n const styleValues = meta.encapsulation == ViewEncapsulation$1.Emulated ? compileStyles(meta.styles, CONTENT_ATTR, HOST_ATTR) : meta.styles;\n const styleNodes = styleValues.reduce((result, style) => {\n if (style.trim().length > 0) {\n result.push(constantPool.getConstLiteral(literal(style)));\n }\n return result;\n }, []);\n if (styleNodes.length > 0) {\n hasStyles = true;\n definitionMap.set('styles', literalArr(styleNodes));\n }\n }\n if (!hasStyles && meta.encapsulation === ViewEncapsulation$1.Emulated) {\n meta.encapsulation = ViewEncapsulation$1.None;\n }\n if (meta.encapsulation !== ViewEncapsulation$1.Emulated) {\n definitionMap.set('encapsulation', literal(meta.encapsulation));\n }\n if (meta.animations !== null) {\n definitionMap.set('data', literalMap([{\n key: 'animation',\n value: meta.animations,\n quoted: false\n }]));\n }\n if (meta.changeDetection !== null) {\n if (typeof meta.changeDetection === 'number' && meta.changeDetection !== ChangeDetectionStrategy.Default) {\n definitionMap.set('changeDetection', literal(meta.changeDetection));\n } else if (typeof meta.changeDetection === 'object') {\n definitionMap.set('changeDetection', meta.changeDetection);\n }\n }\n const expression = importExpr(Identifiers.defineComponent).callFn([definitionMap.toLiteralMap()], undefined, true);\n const type = createComponentType(meta);\n return {\n expression,\n type,\n statements: []\n };\n}\nfunction createComponentType(meta) {\n const typeParams = createBaseDirectiveTypeParams(meta);\n typeParams.push(stringArrayAsType(meta.template.ngContentSelectors));\n typeParams.push(expressionType(literal(meta.isStandalone)));\n typeParams.push(createHostDirectivesType(meta));\n if (meta.isSignal) {\n typeParams.push(expressionType(literal(meta.isSignal)));\n }\n return expressionType(importExpr(Identifiers.ComponentDeclaration, typeParams));\n}\nfunction compileDeclarationList(list, mode) {\n switch (mode) {\n case 0:\n return list;\n case 1:\n return arrowFn([], list);\n case 2:\n const resolvedList = list.prop('map').callFn([importExpr(Identifiers.resolveForwardRef)]);\n return arrowFn([], resolvedList);\n case 3:\n throw new Error(`Unsupported with an array of pre-resolved dependencies`);\n }\n}\nfunction stringAsType(str) {\n return expressionType(literal(str));\n}\nfunction stringMapAsLiteralExpression(map) {\n const mapValues = Object.keys(map).map(key => {\n const value = Array.isArray(map[key]) ? map[key][0] : map[key];\n return {\n key,\n value: literal(value),\n quoted: true\n };\n });\n return literalMap(mapValues);\n}\nfunction stringArrayAsType(arr) {\n return arr.length > 0 ? expressionType(literalArr(arr.map(value => literal(value)))) : NONE_TYPE;\n}\nfunction createBaseDirectiveTypeParams(meta) {\n const selectorForType = meta.selector !== null ? meta.selector.replace(/\\n/g, '') : null;\n return [typeWithParameters(meta.type.type, meta.typeArgumentCount), selectorForType !== null ? stringAsType(selectorForType) : NONE_TYPE, meta.exportAs !== null ? stringArrayAsType(meta.exportAs) : NONE_TYPE, expressionType(getInputsTypeExpression(meta)), expressionType(stringMapAsLiteralExpression(meta.outputs)), stringArrayAsType(meta.queries.map(q => q.propertyName))];\n}\nfunction getInputsTypeExpression(meta) {\n return literalMap(Object.keys(meta.inputs).map(key => {\n const value = meta.inputs[key];\n const values = [{\n key: 'alias',\n value: literal(value.bindingPropertyName),\n quoted: true\n }, {\n key: 'required',\n value: literal(value.required),\n quoted: true\n }];\n if (value.isSignal) {\n values.push({\n key: 'isSignal',\n value: literal(value.isSignal),\n quoted: true\n });\n }\n return {\n key,\n value: literalMap(values),\n quoted: true\n };\n }));\n}\nfunction createDirectiveType(meta) {\n const typeParams = createBaseDirectiveTypeParams(meta);\n typeParams.push(NONE_TYPE);\n typeParams.push(expressionType(literal(meta.isStandalone)));\n typeParams.push(createHostDirectivesType(meta));\n if (meta.isSignal) {\n typeParams.push(expressionType(literal(meta.isSignal)));\n }\n return expressionType(importExpr(Identifiers.DirectiveDeclaration, typeParams));\n}\nfunction createHostBindingsFunction(hostBindingsMetadata, typeSourceSpan, bindingParser, constantPool, selector, name, definitionMap) {\n const bindings = bindingParser.createBoundHostProperties(hostBindingsMetadata.properties, typeSourceSpan);\n const eventBindings = bindingParser.createDirectiveHostEventAsts(hostBindingsMetadata.listeners, typeSourceSpan);\n if (hostBindingsMetadata.specialAttributes.styleAttr) {\n hostBindingsMetadata.attributes['style'] = literal(hostBindingsMetadata.specialAttributes.styleAttr);\n }\n if (hostBindingsMetadata.specialAttributes.classAttr) {\n hostBindingsMetadata.attributes['class'] = literal(hostBindingsMetadata.specialAttributes.classAttr);\n }\n const hostJob = ingestHostBinding({\n componentName: name,\n componentSelector: selector,\n properties: bindings,\n events: eventBindings,\n attributes: hostBindingsMetadata.attributes\n }, bindingParser, constantPool);\n transform(hostJob, CompilationJobKind.Host);\n definitionMap.set('hostAttrs', hostJob.root.attributes);\n const varCount = hostJob.root.vars;\n if (varCount !== null && varCount > 0) {\n definitionMap.set('hostVars', literal(varCount));\n }\n return emitHostBindingFunction(hostJob);\n}\nconst HOST_REG_EXP = /^(?:\\[([^\\]]+)\\])|(?:\\(([^\\)]+)\\))$/;\nfunction parseHostBindings(host) {\n const attributes = {};\n const listeners = {};\n const properties = {};\n const specialAttributes = {};\n for (const key of Object.keys(host)) {\n const value = host[key];\n const matches = key.match(HOST_REG_EXP);\n if (matches === null) {\n switch (key) {\n case 'class':\n if (typeof value !== 'string') {\n throw new Error(`Class binding must be string`);\n }\n specialAttributes.classAttr = value;\n break;\n case 'style':\n if (typeof value !== 'string') {\n throw new Error(`Style binding must be string`);\n }\n specialAttributes.styleAttr = value;\n break;\n default:\n if (typeof value === 'string') {\n attributes[key] = literal(value);\n } else {\n attributes[key] = value;\n }\n }\n } else if (matches[1] != null) {\n if (typeof value !== 'string') {\n throw new Error(`Property binding must be string`);\n }\n properties[matches[1]] = value;\n } else if (matches[2] != null) {\n if (typeof value !== 'string') {\n throw new Error(`Event binding must be string`);\n }\n listeners[matches[2]] = value;\n }\n }\n return {\n attributes,\n listeners,\n properties,\n specialAttributes\n };\n}\nfunction verifyHostBindings(bindings, sourceSpan) {\n const bindingParser = makeBindingParser();\n bindingParser.createDirectiveHostEventAsts(bindings.listeners, sourceSpan);\n bindingParser.createBoundHostProperties(bindings.properties, sourceSpan);\n return bindingParser.errors;\n}\nfunction compileStyles(styles, selector, hostSelector) {\n const shadowCss = new ShadowCss();\n return styles.map(style => {\n return shadowCss.shimCssText(style, selector, hostSelector);\n });\n}\nfunction encapsulateStyle(style, componentIdentifier) {\n const shadowCss = new ShadowCss();\n const selector = componentIdentifier ? CONTENT_ATTR.replace(COMPONENT_VARIABLE, componentIdentifier) : CONTENT_ATTR;\n const hostSelector = componentIdentifier ? HOST_ATTR.replace(COMPONENT_VARIABLE, componentIdentifier) : HOST_ATTR;\n return shadowCss.shimCssText(style, selector, hostSelector);\n}\nfunction createHostDirectivesType(meta) {\n if (!meta.hostDirectives?.length) {\n return NONE_TYPE;\n }\n return expressionType(literalArr(meta.hostDirectives.map(hostMeta => literalMap([{\n key: 'directive',\n value: typeofExpr(hostMeta.directive.type),\n quoted: false\n }, {\n key: 'inputs',\n value: stringMapAsLiteralExpression(hostMeta.inputs || {}),\n quoted: false\n }, {\n key: 'outputs',\n value: stringMapAsLiteralExpression(hostMeta.outputs || {}),\n quoted: false\n }]))));\n}\nfunction createHostDirectivesFeatureArg(hostDirectives) {\n const expressions = [];\n let hasForwardRef = false;\n for (const current of hostDirectives) {\n if (!current.inputs && !current.outputs) {\n expressions.push(current.directive.type);\n } else {\n const keys = [{\n key: 'directive',\n value: current.directive.type,\n quoted: false\n }];\n if (current.inputs) {\n const inputsLiteral = createHostDirectivesMappingArray(current.inputs);\n if (inputsLiteral) {\n keys.push({\n key: 'inputs',\n value: inputsLiteral,\n quoted: false\n });\n }\n }\n if (current.outputs) {\n const outputsLiteral = createHostDirectivesMappingArray(current.outputs);\n if (outputsLiteral) {\n keys.push({\n key: 'outputs',\n value: outputsLiteral,\n quoted: false\n });\n }\n }\n expressions.push(literalMap(keys));\n }\n if (current.isForwardReference) {\n hasForwardRef = true;\n }\n }\n return hasForwardRef ? new FunctionExpr([], [new ReturnStatement(literalArr(expressions))]) : literalArr(expressions);\n}\nfunction createHostDirectivesMappingArray(mapping) {\n const elements = [];\n for (const publicName in mapping) {\n if (mapping.hasOwnProperty(publicName)) {\n elements.push(literal(publicName), literal(mapping[publicName]));\n }\n }\n return elements.length > 0 ? literalArr(elements) : null;\n}\nfunction compileDeferResolverFunction(meta) {\n const depExpressions = [];\n if (meta.mode === 0) {\n for (const dep of meta.dependencies) {\n if (dep.isDeferrable) {\n const innerFn = arrowFn([new FnParam('m', DYNAMIC_TYPE)], variable('m').prop(dep.isDefaultImport ? 'default' : dep.symbolName));\n const importExpr = new DynamicImportExpr(dep.importPath).prop('then').callFn([innerFn]);\n depExpressions.push(importExpr);\n } else {\n depExpressions.push(dep.typeReference);\n }\n }\n } else {\n for (const {\n symbolName,\n importPath,\n isDefaultImport\n } of meta.dependencies) {\n const innerFn = arrowFn([new FnParam('m', DYNAMIC_TYPE)], variable('m').prop(isDefaultImport ? 'default' : symbolName));\n const importExpr = new DynamicImportExpr(importPath).prop('then').callFn([innerFn]);\n depExpressions.push(importExpr);\n }\n }\n return arrowFn([], literalArr(depExpressions));\n}\n\nclass CombinedRecursiveAstVisitor extends RecursiveAstVisitor {\n visit(node) {\n if (node instanceof ASTWithSource) {\n this.visit(node.ast);\n } else {\n node.visit(this);\n }\n }\n visitElement(element) {\n this.visitAllTemplateNodes(element.attributes);\n this.visitAllTemplateNodes(element.inputs);\n this.visitAllTemplateNodes(element.outputs);\n this.visitAllTemplateNodes(element.directives);\n this.visitAllTemplateNodes(element.references);\n this.visitAllTemplateNodes(element.children);\n }\n visitTemplate(template) {\n this.visitAllTemplateNodes(template.attributes);\n this.visitAllTemplateNodes(template.inputs);\n this.visitAllTemplateNodes(template.outputs);\n this.visitAllTemplateNodes(template.directives);\n this.visitAllTemplateNodes(template.templateAttrs);\n this.visitAllTemplateNodes(template.variables);\n this.visitAllTemplateNodes(template.references);\n this.visitAllTemplateNodes(template.children);\n }\n visitContent(content) {\n this.visitAllTemplateNodes(content.children);\n }\n visitBoundAttribute(attribute) {\n this.visit(attribute.value);\n }\n visitBoundEvent(attribute) {\n this.visit(attribute.handler);\n }\n visitBoundText(text) {\n this.visit(text.value);\n }\n visitIcu(icu) {\n Object.keys(icu.vars).forEach(key => this.visit(icu.vars[key]));\n Object.keys(icu.placeholders).forEach(key => this.visit(icu.placeholders[key]));\n }\n visitDeferredBlock(deferred) {\n deferred.visitAll(this);\n }\n visitDeferredTrigger(trigger) {\n if (trigger instanceof BoundDeferredTrigger) {\n this.visit(trigger.value);\n } else if (trigger instanceof ViewportDeferredTrigger && trigger.options !== null) {\n this.visit(trigger.options);\n }\n }\n visitDeferredBlockPlaceholder(block) {\n this.visitAllTemplateNodes(block.children);\n }\n visitDeferredBlockError(block) {\n this.visitAllTemplateNodes(block.children);\n }\n visitDeferredBlockLoading(block) {\n this.visitAllTemplateNodes(block.children);\n }\n visitSwitchBlock(block) {\n this.visit(block.expression);\n this.visitAllTemplateNodes(block.groups);\n }\n visitSwitchBlockCase(block) {\n block.expression && this.visit(block.expression);\n }\n visitSwitchBlockCaseGroup(block) {\n this.visitAllTemplateNodes(block.cases);\n this.visitAllTemplateNodes(block.children);\n }\n visitSwitchExhaustiveCheck(block) {}\n visitForLoopBlock(block) {\n block.item.visit(this);\n this.visitAllTemplateNodes(block.contextVariables);\n this.visit(block.expression);\n this.visitAllTemplateNodes(block.children);\n block.empty?.visit(this);\n }\n visitForLoopBlockEmpty(block) {\n this.visitAllTemplateNodes(block.children);\n }\n visitIfBlock(block) {\n this.visitAllTemplateNodes(block.branches);\n }\n visitIfBlockBranch(block) {\n block.expression && this.visit(block.expression);\n block.expressionAlias?.visit(this);\n this.visitAllTemplateNodes(block.children);\n }\n visitLetDeclaration(decl) {\n this.visit(decl.value);\n }\n visitComponent(component) {\n this.visitAllTemplateNodes(component.attributes);\n this.visitAllTemplateNodes(component.inputs);\n this.visitAllTemplateNodes(component.outputs);\n this.visitAllTemplateNodes(component.directives);\n this.visitAllTemplateNodes(component.references);\n this.visitAllTemplateNodes(component.children);\n }\n visitDirective(directive) {\n this.visitAllTemplateNodes(directive.attributes);\n this.visitAllTemplateNodes(directive.inputs);\n this.visitAllTemplateNodes(directive.outputs);\n this.visitAllTemplateNodes(directive.references);\n }\n visitVariable(variable) {}\n visitReference(reference) {}\n visitTextAttribute(attribute) {}\n visitText(text) {}\n visitUnknownBlock(block) {}\n visitAllTemplateNodes(nodes) {\n for (const node of nodes) {\n this.visit(node);\n }\n }\n}\n\nfunction diff(fullList, itemsToExclude) {\n const exclude = new Set(itemsToExclude);\n return fullList.filter(item => !exclude.has(item));\n}\nfunction findMatchingDirectivesAndPipes(template, directiveSelectors) {\n const matcher = new SelectorMatcher();\n for (const selector of directiveSelectors) {\n const fakeDirective = {\n selector,\n exportAs: null,\n inputs: {\n hasBindingPropertyName() {\n return false;\n }\n },\n outputs: {\n hasBindingPropertyName() {\n return false;\n }\n }\n };\n matcher.addSelectables(CssSelector.parse(selector), [fakeDirective]);\n }\n const parsedTemplate = parseTemplate(template, '');\n const binder = new R3TargetBinder(matcher);\n const bound = binder.bind({\n template: parsedTemplate.nodes\n });\n const eagerDirectiveSelectors = bound.getEagerlyUsedDirectives().map(dir => dir.selector);\n const allMatchedDirectiveSelectors = bound.getUsedDirectives().map(dir => dir.selector);\n const eagerPipes = bound.getEagerlyUsedPipes();\n return {\n directives: {\n regular: eagerDirectiveSelectors,\n deferCandidates: diff(allMatchedDirectiveSelectors, eagerDirectiveSelectors)\n },\n pipes: {\n regular: eagerPipes,\n deferCandidates: diff(bound.getUsedPipes(), eagerPipes)\n }\n };\n}\nclass R3TargetBinder {\n directiveMatcher;\n constructor(directiveMatcher) {\n this.directiveMatcher = directiveMatcher;\n }\n bind(target) {\n if (!target.template && !target.host) {\n throw new Error('Empty bound targets are not supported');\n }\n const directives = new Map();\n const eagerDirectives = [];\n const missingDirectives = new Set();\n const bindings = new Map();\n const references = new Map();\n const scopedNodeEntities = new Map();\n const expressions = new Map();\n const symbols = new Map();\n const nestingLevel = new Map();\n const usedPipes = new Set();\n const eagerPipes = new Set();\n const deferBlocks = [];\n if (target.template) {\n const scope = Scope.apply(target.template);\n extractScopedNodeEntities(scope, scopedNodeEntities);\n DirectiveBinder.apply(target.template, this.directiveMatcher, directives, eagerDirectives, missingDirectives, bindings, references);\n TemplateBinder.applyWithScope(target.template, scope, expressions, symbols, nestingLevel, usedPipes, eagerPipes, deferBlocks);\n }\n if (target.host) {\n directives.set(target.host.node, target.host.directives);\n TemplateBinder.applyWithScope(target.host.node, Scope.apply(target.host.node), expressions, symbols, nestingLevel, usedPipes, eagerPipes, deferBlocks);\n }\n return new R3BoundTarget(target, directives, eagerDirectives, missingDirectives, bindings, references, expressions, symbols, nestingLevel, scopedNodeEntities, usedPipes, eagerPipes, deferBlocks);\n }\n}\nclass Scope {\n parentScope;\n rootNode;\n namedEntities = new Map();\n elementLikeInScope = new Set();\n childScopes = new Map();\n isDeferred;\n constructor(parentScope, rootNode) {\n this.parentScope = parentScope;\n this.rootNode = rootNode;\n this.isDeferred = parentScope !== null && parentScope.isDeferred ? true : rootNode instanceof DeferredBlock;\n }\n static newRootScope() {\n return new Scope(null, null);\n }\n static apply(template) {\n const scope = Scope.newRootScope();\n scope.ingest(template);\n return scope;\n }\n ingest(nodeOrNodes) {\n if (nodeOrNodes instanceof Template) {\n nodeOrNodes.variables.forEach(node => this.visitVariable(node));\n nodeOrNodes.children.forEach(node => node.visit(this));\n } else if (nodeOrNodes instanceof IfBlockBranch) {\n if (nodeOrNodes.expressionAlias !== null) {\n this.visitVariable(nodeOrNodes.expressionAlias);\n }\n nodeOrNodes.children.forEach(node => node.visit(this));\n } else if (nodeOrNodes instanceof ForLoopBlock) {\n this.visitVariable(nodeOrNodes.item);\n nodeOrNodes.contextVariables.forEach(v => this.visitVariable(v));\n nodeOrNodes.children.forEach(node => node.visit(this));\n } else if (nodeOrNodes instanceof SwitchBlockCaseGroup || nodeOrNodes instanceof ForLoopBlockEmpty || nodeOrNodes instanceof DeferredBlock || nodeOrNodes instanceof DeferredBlockError || nodeOrNodes instanceof DeferredBlockPlaceholder || nodeOrNodes instanceof DeferredBlockLoading || nodeOrNodes instanceof Content) {\n nodeOrNodes.children.forEach(node => node.visit(this));\n } else if (!(nodeOrNodes instanceof HostElement)) {\n nodeOrNodes.forEach(node => node.visit(this));\n }\n }\n visitElement(element) {\n this.visitElementLike(element);\n }\n visitTemplate(template) {\n template.directives.forEach(node => node.visit(this));\n template.references.forEach(node => this.visitReference(node));\n this.ingestScopedNode(template);\n }\n visitVariable(variable) {\n this.maybeDeclare(variable);\n }\n visitReference(reference) {\n this.maybeDeclare(reference);\n }\n visitDeferredBlock(deferred) {\n this.ingestScopedNode(deferred);\n deferred.placeholder?.visit(this);\n deferred.loading?.visit(this);\n deferred.error?.visit(this);\n }\n visitDeferredBlockPlaceholder(block) {\n this.ingestScopedNode(block);\n }\n visitDeferredBlockError(block) {\n this.ingestScopedNode(block);\n }\n visitDeferredBlockLoading(block) {\n this.ingestScopedNode(block);\n }\n visitSwitchBlock(block) {\n block.groups.forEach(node => node.visit(this));\n }\n visitSwitchBlockCase(block) {}\n visitSwitchBlockCaseGroup(block) {\n this.ingestScopedNode(block);\n }\n visitSwitchExhaustiveCheck(block) {}\n visitForLoopBlock(block) {\n this.ingestScopedNode(block);\n block.empty?.visit(this);\n }\n visitForLoopBlockEmpty(block) {\n this.ingestScopedNode(block);\n }\n visitIfBlock(block) {\n block.branches.forEach(node => node.visit(this));\n }\n visitIfBlockBranch(block) {\n this.ingestScopedNode(block);\n }\n visitContent(content) {\n this.ingestScopedNode(content);\n }\n visitLetDeclaration(decl) {\n this.maybeDeclare(decl);\n }\n visitComponent(component) {\n this.visitElementLike(component);\n }\n visitDirective(directive) {\n directive.references.forEach(current => this.visitReference(current));\n }\n visitBoundAttribute(attr) {}\n visitBoundEvent(event) {}\n visitBoundText(text) {}\n visitText(text) {}\n visitTextAttribute(attr) {}\n visitIcu(icu) {}\n visitDeferredTrigger(trigger) {}\n visitUnknownBlock(block) {}\n visitElementLike(node) {\n node.directives.forEach(current => current.visit(this));\n node.references.forEach(current => this.visitReference(current));\n node.children.forEach(current => current.visit(this));\n this.elementLikeInScope.add(node);\n }\n maybeDeclare(thing) {\n if (!this.namedEntities.has(thing.name)) {\n this.namedEntities.set(thing.name, thing);\n }\n }\n lookup(name) {\n if (this.namedEntities.has(name)) {\n return this.namedEntities.get(name);\n } else if (this.parentScope !== null) {\n return this.parentScope.lookup(name);\n } else {\n return null;\n }\n }\n getChildScope(node) {\n const res = this.childScopes.get(node);\n if (res === undefined) {\n throw new Error(`Assertion error: child scope for ${node} not found`);\n }\n return res;\n }\n ingestScopedNode(node) {\n const scope = new Scope(this, node);\n scope.ingest(node);\n this.childScopes.set(node, scope);\n }\n}\nclass DirectiveBinder {\n directiveMatcher;\n directives;\n eagerDirectives;\n missingDirectives;\n bindings;\n references;\n isInDeferBlock = false;\n constructor(directiveMatcher, directives, eagerDirectives, missingDirectives, bindings, references) {\n this.directiveMatcher = directiveMatcher;\n this.directives = directives;\n this.eagerDirectives = eagerDirectives;\n this.missingDirectives = missingDirectives;\n this.bindings = bindings;\n this.references = references;\n }\n static apply(template, directiveMatcher, directives, eagerDirectives, missingDirectives, bindings, references) {\n const matcher = new DirectiveBinder(directiveMatcher, directives, eagerDirectives, missingDirectives, bindings, references);\n matcher.ingest(template);\n }\n ingest(template) {\n template.forEach(node => node.visit(this));\n }\n visitElement(element) {\n this.visitElementOrTemplate(element);\n }\n visitTemplate(template) {\n this.visitElementOrTemplate(template);\n }\n visitDeferredBlock(deferred) {\n const wasInDeferBlock = this.isInDeferBlock;\n this.isInDeferBlock = true;\n deferred.children.forEach(child => child.visit(this));\n this.isInDeferBlock = wasInDeferBlock;\n deferred.placeholder?.visit(this);\n deferred.loading?.visit(this);\n deferred.error?.visit(this);\n }\n visitDeferredBlockPlaceholder(block) {\n block.children.forEach(child => child.visit(this));\n }\n visitDeferredBlockError(block) {\n block.children.forEach(child => child.visit(this));\n }\n visitDeferredBlockLoading(block) {\n block.children.forEach(child => child.visit(this));\n }\n visitSwitchBlock(block) {\n block.groups.forEach(node => node.visit(this));\n }\n visitSwitchBlockCase(block) {}\n visitSwitchBlockCaseGroup(block) {\n block.children.forEach(node => node.visit(this));\n }\n visitSwitchExhaustiveCheck(block) {}\n visitForLoopBlock(block) {\n block.item.visit(this);\n block.contextVariables.forEach(v => v.visit(this));\n block.children.forEach(node => node.visit(this));\n block.empty?.visit(this);\n }\n visitForLoopBlockEmpty(block) {\n block.children.forEach(node => node.visit(this));\n }\n visitIfBlock(block) {\n block.branches.forEach(node => node.visit(this));\n }\n visitIfBlockBranch(block) {\n block.expressionAlias?.visit(this);\n block.children.forEach(node => node.visit(this));\n }\n visitContent(content) {\n content.children.forEach(child => child.visit(this));\n }\n visitComponent(node) {\n if (this.directiveMatcher instanceof SelectorlessMatcher) {\n const componentMatches = this.directiveMatcher.match(node.componentName);\n if (componentMatches.length > 0) {\n this.trackSelectorlessMatchesAndDirectives(node, componentMatches);\n } else {\n this.missingDirectives.add(node.componentName);\n }\n }\n node.directives.forEach(directive => directive.visit(this));\n node.children.forEach(child => child.visit(this));\n }\n visitDirective(node) {\n if (this.directiveMatcher instanceof SelectorlessMatcher) {\n const directives = this.directiveMatcher.match(node.name);\n if (directives.length > 0) {\n this.trackSelectorlessMatchesAndDirectives(node, directives);\n } else {\n this.missingDirectives.add(node.name);\n }\n }\n }\n visitElementOrTemplate(node) {\n if (this.directiveMatcher instanceof SelectorMatcher) {\n const directives = [];\n const cssSelector = createCssSelectorFromNode(node);\n this.directiveMatcher.match(cssSelector, (_, results) => directives.push(...results));\n this.trackSelectorBasedBindingsAndDirectives(node, directives);\n } else {\n node.references.forEach(ref => {\n if (ref.value.trim() === '') {\n this.references.set(ref, node);\n }\n });\n }\n node.directives.forEach(directive => directive.visit(this));\n node.children.forEach(child => child.visit(this));\n }\n trackMatchedDirectives(node, directives) {\n if (directives.length > 0) {\n this.directives.set(node, directives);\n if (!this.isInDeferBlock) {\n this.eagerDirectives.push(...directives);\n }\n }\n }\n trackSelectorlessMatchesAndDirectives(node, directives) {\n if (directives.length === 0) {\n return;\n }\n this.trackMatchedDirectives(node, directives);\n const setBinding = (meta, attribute, ioType) => {\n if (meta[ioType].hasBindingPropertyName(attribute.name)) {\n this.bindings.set(attribute, meta);\n }\n };\n for (const directive of directives) {\n node.inputs.forEach(input => setBinding(directive, input, 'inputs'));\n node.attributes.forEach(attr => setBinding(directive, attr, 'inputs'));\n node.outputs.forEach(output => setBinding(directive, output, 'outputs'));\n }\n node.references.forEach(ref => this.references.set(ref, {\n directive: directives[0],\n node: node\n }));\n }\n trackSelectorBasedBindingsAndDirectives(node, directives) {\n this.trackMatchedDirectives(node, directives);\n node.references.forEach(ref => {\n let dirTarget = null;\n if (ref.value.trim() === '') {\n dirTarget = directives.find(dir => dir.isComponent) || null;\n } else {\n dirTarget = directives.find(dir => dir.exportAs !== null && dir.exportAs.some(value => value === ref.value)) || null;\n if (dirTarget === null) {\n return;\n }\n }\n if (dirTarget !== null) {\n this.references.set(ref, {\n directive: dirTarget,\n node\n });\n } else {\n this.references.set(ref, node);\n }\n });\n const setAttributeBinding = (attribute, ioType) => {\n const dir = directives.find(dir => dir[ioType].hasBindingPropertyName(attribute.name));\n const binding = dir !== undefined ? dir : node;\n this.bindings.set(attribute, binding);\n };\n node.inputs.forEach(input => setAttributeBinding(input, 'inputs'));\n node.attributes.forEach(attr => setAttributeBinding(attr, 'inputs'));\n if (node instanceof Template) {\n node.templateAttrs.forEach(attr => setAttributeBinding(attr, 'inputs'));\n }\n node.outputs.forEach(output => setAttributeBinding(output, 'outputs'));\n }\n visitVariable(variable) {}\n visitReference(reference) {}\n visitTextAttribute(attribute) {}\n visitBoundAttribute(attribute) {}\n visitBoundEvent(attribute) {}\n visitBoundAttributeOrEvent(node) {}\n visitText(text) {}\n visitBoundText(text) {}\n visitIcu(icu) {}\n visitDeferredTrigger(trigger) {}\n visitUnknownBlock(block) {}\n visitLetDeclaration(decl) {}\n}\nclass TemplateBinder extends CombinedRecursiveAstVisitor {\n bindings;\n symbols;\n usedPipes;\n eagerPipes;\n deferBlocks;\n nestingLevel;\n scope;\n rootNode;\n level;\n visitNode = node => node.visit(this);\n constructor(bindings, symbols, usedPipes, eagerPipes, deferBlocks, nestingLevel, scope, rootNode, level) {\n super();\n this.bindings = bindings;\n this.symbols = symbols;\n this.usedPipes = usedPipes;\n this.eagerPipes = eagerPipes;\n this.deferBlocks = deferBlocks;\n this.nestingLevel = nestingLevel;\n this.scope = scope;\n this.rootNode = rootNode;\n this.level = level;\n }\n static applyWithScope(nodeOrNodes, scope, expressions, symbols, nestingLevel, usedPipes, eagerPipes, deferBlocks) {\n const template = nodeOrNodes instanceof Template ? nodeOrNodes : null;\n const binder = new TemplateBinder(expressions, symbols, usedPipes, eagerPipes, deferBlocks, nestingLevel, scope, template, 0);\n binder.ingest(nodeOrNodes);\n }\n ingest(nodeOrNodes) {\n if (nodeOrNodes instanceof Template) {\n nodeOrNodes.variables.forEach(this.visitNode);\n nodeOrNodes.children.forEach(this.visitNode);\n this.nestingLevel.set(nodeOrNodes, this.level);\n } else if (nodeOrNodes instanceof IfBlockBranch) {\n if (nodeOrNodes.expressionAlias !== null) {\n this.visitNode(nodeOrNodes.expressionAlias);\n }\n nodeOrNodes.children.forEach(this.visitNode);\n this.nestingLevel.set(nodeOrNodes, this.level);\n } else if (nodeOrNodes instanceof ForLoopBlock) {\n this.visitNode(nodeOrNodes.item);\n nodeOrNodes.contextVariables.forEach(v => this.visitNode(v));\n nodeOrNodes.trackBy.visit(this);\n nodeOrNodes.children.forEach(this.visitNode);\n this.nestingLevel.set(nodeOrNodes, this.level);\n } else if (nodeOrNodes instanceof DeferredBlock) {\n if (this.scope.rootNode !== nodeOrNodes) {\n throw new Error(`Assertion error: resolved incorrect scope for deferred block ${nodeOrNodes}`);\n }\n this.deferBlocks.push([nodeOrNodes, this.scope]);\n nodeOrNodes.children.forEach(node => node.visit(this));\n this.nestingLevel.set(nodeOrNodes, this.level);\n } else if (nodeOrNodes instanceof SwitchBlockCaseGroup || nodeOrNodes instanceof ForLoopBlockEmpty || nodeOrNodes instanceof DeferredBlockError || nodeOrNodes instanceof DeferredBlockPlaceholder || nodeOrNodes instanceof DeferredBlockLoading || nodeOrNodes instanceof Content) {\n nodeOrNodes.children.forEach(node => node.visit(this));\n this.nestingLevel.set(nodeOrNodes, this.level);\n } else if (nodeOrNodes instanceof HostElement) {\n this.nestingLevel.set(nodeOrNodes, 0);\n } else {\n nodeOrNodes.forEach(this.visitNode);\n }\n }\n visitTemplate(template) {\n template.inputs.forEach(this.visitNode);\n template.outputs.forEach(this.visitNode);\n template.directives.forEach(this.visitNode);\n template.templateAttrs.forEach(this.visitNode);\n template.references.forEach(this.visitNode);\n this.ingestScopedNode(template);\n }\n visitVariable(variable) {\n if (this.rootNode !== null) {\n this.symbols.set(variable, this.rootNode);\n }\n }\n visitReference(reference) {\n if (this.rootNode !== null) {\n this.symbols.set(reference, this.rootNode);\n }\n }\n visitDeferredBlock(deferred) {\n this.ingestScopedNode(deferred);\n deferred.triggers.when?.value.visit(this);\n deferred.prefetchTriggers.when?.value.visit(this);\n deferred.hydrateTriggers.when?.value.visit(this);\n deferred.hydrateTriggers.never?.visit(this);\n deferred.placeholder && this.visitNode(deferred.placeholder);\n deferred.loading && this.visitNode(deferred.loading);\n deferred.error && this.visitNode(deferred.error);\n }\n visitDeferredBlockPlaceholder(block) {\n this.ingestScopedNode(block);\n }\n visitDeferredBlockError(block) {\n this.ingestScopedNode(block);\n }\n visitDeferredBlockLoading(block) {\n this.ingestScopedNode(block);\n }\n visitSwitchBlockCase(block) {\n block.expression?.visit(this);\n }\n visitSwitchBlockCaseGroup(block) {\n block.cases.forEach(caseNode => caseNode.visit(this));\n this.ingestScopedNode(block);\n }\n visitSwitchExhaustiveCheck(block) {}\n visitForLoopBlock(block) {\n block.expression.visit(this);\n this.ingestScopedNode(block);\n block.empty?.visit(this);\n }\n visitForLoopBlockEmpty(block) {\n this.ingestScopedNode(block);\n }\n visitIfBlockBranch(block) {\n block.expression?.visit(this);\n this.ingestScopedNode(block);\n }\n visitContent(content) {\n this.ingestScopedNode(content);\n }\n visitLetDeclaration(decl) {\n super.visitLetDeclaration(decl);\n if (this.rootNode !== null) {\n this.symbols.set(decl, this.rootNode);\n }\n }\n visitPipe(ast, context) {\n this.usedPipes.add(ast.name);\n if (!this.scope.isDeferred) {\n this.eagerPipes.add(ast.name);\n }\n return super.visitPipe(ast, context);\n }\n visitPropertyRead(ast, context) {\n this.maybeMap(ast, ast.name);\n return super.visitPropertyRead(ast, context);\n }\n visitSafePropertyRead(ast, context) {\n this.maybeMap(ast, ast.name);\n return super.visitSafePropertyRead(ast, context);\n }\n ingestScopedNode(node) {\n const childScope = this.scope.getChildScope(node);\n const binder = new TemplateBinder(this.bindings, this.symbols, this.usedPipes, this.eagerPipes, this.deferBlocks, this.nestingLevel, childScope, node, this.level + 1);\n binder.ingest(node);\n }\n maybeMap(ast, name) {\n if (!(ast.receiver instanceof ImplicitReceiver)) {\n return;\n }\n const target = this.scope.lookup(name);\n if (target !== null) {\n this.bindings.set(ast, target);\n }\n }\n}\nclass R3BoundTarget {\n target;\n directives;\n eagerDirectives;\n missingDirectives;\n bindings;\n references;\n exprTargets;\n symbols;\n nestingLevel;\n scopedNodeEntities;\n usedPipes;\n eagerPipes;\n deferredBlocks;\n deferredScopes;\n constructor(target, directives, eagerDirectives, missingDirectives, bindings, references, exprTargets, symbols, nestingLevel, scopedNodeEntities, usedPipes, eagerPipes, rawDeferred) {\n this.target = target;\n this.directives = directives;\n this.eagerDirectives = eagerDirectives;\n this.missingDirectives = missingDirectives;\n this.bindings = bindings;\n this.references = references;\n this.exprTargets = exprTargets;\n this.symbols = symbols;\n this.nestingLevel = nestingLevel;\n this.scopedNodeEntities = scopedNodeEntities;\n this.usedPipes = usedPipes;\n this.eagerPipes = eagerPipes;\n this.deferredBlocks = rawDeferred.map(current => current[0]);\n this.deferredScopes = new Map(rawDeferred);\n }\n getEntitiesInScope(node) {\n return this.scopedNodeEntities.get(node) ?? new Set();\n }\n getDirectivesOfNode(node) {\n return this.directives.get(node) || null;\n }\n getReferenceTarget(ref) {\n return this.references.get(ref) || null;\n }\n getConsumerOfBinding(binding) {\n return this.bindings.get(binding) || null;\n }\n getExpressionTarget(expr) {\n return this.exprTargets.get(expr) || null;\n }\n getDefinitionNodeOfSymbol(symbol) {\n return this.symbols.get(symbol) || null;\n }\n getNestingLevel(node) {\n return this.nestingLevel.get(node) || 0;\n }\n getUsedDirectives() {\n const set = new Set();\n this.directives.forEach(dirs => dirs.forEach(dir => set.add(dir)));\n return Array.from(set.values());\n }\n getEagerlyUsedDirectives() {\n const set = new Set(this.eagerDirectives);\n return Array.from(set.values());\n }\n getUsedPipes() {\n return Array.from(this.usedPipes);\n }\n getEagerlyUsedPipes() {\n return Array.from(this.eagerPipes);\n }\n getDeferBlocks() {\n return this.deferredBlocks;\n }\n getDeferredTriggerTarget(block, trigger) {\n if (!(trigger instanceof InteractionDeferredTrigger) && !(trigger instanceof ViewportDeferredTrigger) && !(trigger instanceof HoverDeferredTrigger)) {\n return null;\n }\n const name = trigger.reference;\n if (name === null) {\n let target = null;\n if (block.placeholder !== null) {\n for (const child of block.placeholder.children) {\n if (child instanceof Comment$1) {\n continue;\n }\n if (target !== null) {\n return null;\n }\n if (child instanceof Element$1) {\n target = child;\n }\n }\n }\n return target;\n }\n const outsideRef = this.findEntityInScope(block, name);\n if (outsideRef instanceof Reference && this.getDefinitionNodeOfSymbol(outsideRef) !== block) {\n const target = this.getReferenceTarget(outsideRef);\n if (target !== null) {\n return this.referenceTargetToElement(target);\n }\n }\n if (block.placeholder !== null) {\n const refInPlaceholder = this.findEntityInScope(block.placeholder, name);\n const targetInPlaceholder = refInPlaceholder instanceof Reference ? this.getReferenceTarget(refInPlaceholder) : null;\n if (targetInPlaceholder !== null) {\n return this.referenceTargetToElement(targetInPlaceholder);\n }\n }\n return null;\n }\n isDeferred(element) {\n for (const block of this.deferredBlocks) {\n if (!this.deferredScopes.has(block)) {\n continue;\n }\n const stack = [this.deferredScopes.get(block)];\n while (stack.length > 0) {\n const current = stack.pop();\n if (current.elementLikeInScope.has(element)) {\n return true;\n }\n stack.push(...current.childScopes.values());\n }\n }\n return false;\n }\n referencedDirectiveExists(name) {\n return !this.missingDirectives.has(name);\n }\n findEntityInScope(rootNode, name) {\n const entities = this.getEntitiesInScope(rootNode);\n for (const entity of entities) {\n if (entity.name === name) {\n return entity;\n }\n }\n return null;\n }\n referenceTargetToElement(target) {\n if (target instanceof Element$1) {\n return target;\n }\n if (target instanceof Template || target.node instanceof Component$1 || target.node instanceof Directive$1 || target.node instanceof HostElement) {\n return null;\n }\n return this.referenceTargetToElement(target.node);\n }\n}\nfunction extractScopedNodeEntities(rootScope, templateEntities) {\n const entityMap = new Map();\n function extractScopeEntities(scope) {\n if (entityMap.has(scope.rootNode)) {\n return entityMap.get(scope.rootNode);\n }\n const currentEntities = scope.namedEntities;\n let entities;\n if (scope.parentScope !== null) {\n entities = new Map([...extractScopeEntities(scope.parentScope), ...currentEntities]);\n } else {\n entities = new Map(currentEntities);\n }\n entityMap.set(scope.rootNode, entities);\n return entities;\n }\n const scopesToProcess = [rootScope];\n while (scopesToProcess.length > 0) {\n const scope = scopesToProcess.pop();\n for (const childScope of scope.childScopes.values()) {\n scopesToProcess.push(childScope);\n }\n extractScopeEntities(scope);\n }\n for (const [template, entities] of entityMap) {\n templateEntities.set(template, new Set(entities.values()));\n }\n}\n\nclass ResourceLoader {}\n\nclass CompilerFacadeImpl {\n jitEvaluator;\n FactoryTarget = FactoryTarget;\n ResourceLoader = ResourceLoader;\n elementSchemaRegistry = new DomElementSchemaRegistry();\n constructor(jitEvaluator = new JitEvaluator()) {\n this.jitEvaluator = jitEvaluator;\n }\n compilePipe(angularCoreEnv, sourceMapUrl, facade) {\n const metadata = {\n name: facade.name,\n type: wrapReference(facade.type),\n typeArgumentCount: 0,\n pipeName: facade.pipeName,\n pure: facade.pure,\n isStandalone: facade.isStandalone\n };\n const res = compilePipeFromMetadata(metadata);\n return this.jitExpression(res.expression, angularCoreEnv, sourceMapUrl, []);\n }\n compilePipeDeclaration(angularCoreEnv, sourceMapUrl, declaration) {\n const meta = convertDeclarePipeFacadeToMetadata(declaration);\n const res = compilePipeFromMetadata(meta);\n return this.jitExpression(res.expression, angularCoreEnv, sourceMapUrl, []);\n }\n compileInjectable(angularCoreEnv, sourceMapUrl, facade) {\n const {\n expression,\n statements\n } = compileInjectable({\n name: facade.name,\n type: wrapReference(facade.type),\n typeArgumentCount: facade.typeArgumentCount,\n providedIn: computeProvidedIn(facade.providedIn),\n useClass: convertToProviderExpression(facade, 'useClass'),\n useFactory: wrapExpression(facade, 'useFactory'),\n useValue: convertToProviderExpression(facade, 'useValue'),\n useExisting: convertToProviderExpression(facade, 'useExisting'),\n deps: facade.deps?.map(convertR3DependencyMetadata)\n }, true);\n return this.jitExpression(expression, angularCoreEnv, sourceMapUrl, statements);\n }\n compileInjectableDeclaration(angularCoreEnv, sourceMapUrl, facade) {\n const {\n expression,\n statements\n } = compileInjectable({\n name: facade.type.name,\n type: wrapReference(facade.type),\n typeArgumentCount: 0,\n providedIn: computeProvidedIn(facade.providedIn),\n useClass: convertToProviderExpression(facade, 'useClass'),\n useFactory: wrapExpression(facade, 'useFactory'),\n useValue: convertToProviderExpression(facade, 'useValue'),\n useExisting: convertToProviderExpression(facade, 'useExisting'),\n deps: facade.deps?.map(convertR3DeclareDependencyMetadata)\n }, true);\n return this.jitExpression(expression, angularCoreEnv, sourceMapUrl, statements);\n }\n compileInjector(angularCoreEnv, sourceMapUrl, facade) {\n const meta = {\n type: wrapReference(facade.type),\n providers: facade.providers && facade.providers.length > 0 ? new WrappedNodeExpr(facade.providers) : null,\n imports: facade.imports.map(i => new WrappedNodeExpr(i))\n };\n const res = compileInjector(meta);\n return this.jitExpression(res.expression, angularCoreEnv, sourceMapUrl, []);\n }\n compileInjectorDeclaration(angularCoreEnv, sourceMapUrl, declaration) {\n const meta = convertDeclareInjectorFacadeToMetadata(declaration);\n const res = compileInjector(meta);\n return this.jitExpression(res.expression, angularCoreEnv, sourceMapUrl, []);\n }\n compileNgModule(angularCoreEnv, sourceMapUrl, facade) {\n const meta = {\n kind: R3NgModuleMetadataKind.Global,\n type: wrapReference(facade.type),\n bootstrap: facade.bootstrap.map(wrapReference),\n declarations: facade.declarations.map(wrapReference),\n publicDeclarationTypes: null,\n imports: facade.imports.map(wrapReference),\n includeImportTypes: true,\n exports: facade.exports.map(wrapReference),\n selectorScopeMode: R3SelectorScopeMode.Inline,\n containsForwardDecls: false,\n schemas: facade.schemas ? facade.schemas.map(wrapReference) : null,\n id: facade.id ? new WrappedNodeExpr(facade.id) : null\n };\n const res = compileNgModule(meta);\n return this.jitExpression(res.expression, angularCoreEnv, sourceMapUrl, []);\n }\n compileNgModuleDeclaration(angularCoreEnv, sourceMapUrl, declaration) {\n const expression = compileNgModuleDeclarationExpression(declaration);\n return this.jitExpression(expression, angularCoreEnv, sourceMapUrl, []);\n }\n compileDirective(angularCoreEnv, sourceMapUrl, facade) {\n const meta = convertDirectiveFacadeToMetadata(facade);\n return this.compileDirectiveFromMeta(angularCoreEnv, sourceMapUrl, meta);\n }\n compileDirectiveDeclaration(angularCoreEnv, sourceMapUrl, declaration) {\n const typeSourceSpan = this.createParseSourceSpan('Directive', declaration.type.name, sourceMapUrl);\n const meta = convertDeclareDirectiveFacadeToMetadata(declaration, typeSourceSpan);\n return this.compileDirectiveFromMeta(angularCoreEnv, sourceMapUrl, meta);\n }\n compileDirectiveFromMeta(angularCoreEnv, sourceMapUrl, meta) {\n const constantPool = new ConstantPool();\n const bindingParser = makeBindingParser();\n const res = compileDirectiveFromMetadata(meta, constantPool, bindingParser);\n return this.jitExpression(res.expression, angularCoreEnv, sourceMapUrl, constantPool.statements);\n }\n compileComponent(angularCoreEnv, sourceMapUrl, facade) {\n const {\n template,\n defer\n } = parseJitTemplate(facade.template, facade.name, sourceMapUrl, facade.preserveWhitespaces, undefined);\n const meta = {\n ...facade,\n ...convertDirectiveFacadeToMetadata(facade),\n selector: facade.selector || this.elementSchemaRegistry.getDefaultComponentElementName(),\n template,\n declarations: facade.declarations.map(convertDeclarationFacadeToMetadata),\n declarationListEmitMode: 0,\n defer,\n styles: [...facade.styles, ...template.styles],\n encapsulation: facade.encapsulation,\n changeDetection: facade.changeDetection ?? null,\n animations: facade.animations != null ? new WrappedNodeExpr(facade.animations) : null,\n viewProviders: facade.viewProviders != null ? new WrappedNodeExpr(facade.viewProviders) : null,\n relativeContextFilePath: '',\n i18nUseExternalIds: true,\n relativeTemplatePath: null\n };\n const jitExpressionSourceMap = `ng:///${facade.name}.js`;\n return this.compileComponentFromMeta(angularCoreEnv, jitExpressionSourceMap, meta);\n }\n compileComponentDeclaration(angularCoreEnv, sourceMapUrl, declaration) {\n const typeSourceSpan = this.createParseSourceSpan('Component', declaration.type.name, sourceMapUrl);\n const meta = convertDeclareComponentFacadeToMetadata(declaration, typeSourceSpan, sourceMapUrl);\n return this.compileComponentFromMeta(angularCoreEnv, sourceMapUrl, meta);\n }\n compileComponentFromMeta(angularCoreEnv, sourceMapUrl, meta) {\n const constantPool = new ConstantPool();\n const bindingParser = makeBindingParser();\n const res = compileComponentFromMetadata(meta, constantPool, bindingParser);\n return this.jitExpression(res.expression, angularCoreEnv, sourceMapUrl, constantPool.statements);\n }\n compileFactory(angularCoreEnv, sourceMapUrl, meta) {\n const factoryRes = compileFactoryFunction({\n name: meta.name,\n type: wrapReference(meta.type),\n typeArgumentCount: meta.typeArgumentCount,\n deps: convertR3DependencyMetadataArray(meta.deps),\n target: meta.target\n });\n return this.jitExpression(factoryRes.expression, angularCoreEnv, sourceMapUrl, factoryRes.statements);\n }\n compileFactoryDeclaration(angularCoreEnv, sourceMapUrl, meta) {\n const factoryRes = compileFactoryFunction({\n name: meta.type.name,\n type: wrapReference(meta.type),\n typeArgumentCount: 0,\n deps: Array.isArray(meta.deps) ? meta.deps.map(convertR3DeclareDependencyMetadata) : meta.deps,\n target: meta.target\n });\n return this.jitExpression(factoryRes.expression, angularCoreEnv, sourceMapUrl, factoryRes.statements);\n }\n createParseSourceSpan(kind, typeName, sourceUrl) {\n return r3JitTypeSourceSpan(kind, typeName, sourceUrl);\n }\n jitExpression(def, context, sourceUrl, preStatements) {\n const statements = [...preStatements, new DeclareVarStmt('$def', def, undefined, StmtModifier.Exported)];\n const res = this.jitEvaluator.evaluateStatements(sourceUrl, statements, new R3JitReflector(context), true);\n return res['$def'];\n }\n}\nfunction convertToR3QueryMetadata(facade) {\n return {\n ...facade,\n isSignal: facade.isSignal,\n predicate: convertQueryPredicate(facade.predicate),\n read: facade.read ? new WrappedNodeExpr(facade.read) : null,\n static: facade.static,\n emitDistinctChangesOnly: facade.emitDistinctChangesOnly\n };\n}\nfunction convertQueryDeclarationToMetadata(declaration) {\n return {\n propertyName: declaration.propertyName,\n first: declaration.first ?? false,\n predicate: convertQueryPredicate(declaration.predicate),\n descendants: declaration.descendants ?? false,\n read: declaration.read ? new WrappedNodeExpr(declaration.read) : null,\n static: declaration.static ?? false,\n emitDistinctChangesOnly: declaration.emitDistinctChangesOnly ?? true,\n isSignal: !!declaration.isSignal\n };\n}\nfunction convertQueryPredicate(predicate) {\n return Array.isArray(predicate) ? predicate : createMayBeForwardRefExpression(new WrappedNodeExpr(predicate), 1);\n}\nfunction convertDirectiveFacadeToMetadata(facade) {\n const inputsFromMetadata = parseInputsArray(facade.inputs || []);\n const outputsFromMetadata = parseMappingStringArray(facade.outputs || []);\n const propMetadata = facade.propMetadata;\n const inputsFromType = {};\n const outputsFromType = {};\n for (const field in propMetadata) {\n if (propMetadata.hasOwnProperty(field)) {\n propMetadata[field].forEach(ann => {\n if (isInput(ann)) {\n inputsFromType[field] = {\n bindingPropertyName: ann.alias || field,\n classPropertyName: field,\n required: ann.required || false,\n isSignal: !!ann.isSignal,\n transformFunction: ann.transform != null ? new WrappedNodeExpr(ann.transform) : null\n };\n } else if (isOutput(ann)) {\n outputsFromType[field] = ann.alias || field;\n }\n });\n }\n }\n const hostDirectives = facade.hostDirectives?.length ? facade.hostDirectives.map(hostDirective => {\n return typeof hostDirective === 'function' ? {\n directive: wrapReference(hostDirective),\n inputs: null,\n outputs: null,\n isForwardReference: false\n } : {\n directive: wrapReference(hostDirective.directive),\n isForwardReference: false,\n inputs: hostDirective.inputs ? parseMappingStringArray(hostDirective.inputs) : null,\n outputs: hostDirective.outputs ? parseMappingStringArray(hostDirective.outputs) : null\n };\n }) : null;\n return {\n ...facade,\n typeArgumentCount: 0,\n typeSourceSpan: facade.typeSourceSpan,\n type: wrapReference(facade.type),\n deps: null,\n host: {\n ...extractHostBindings(facade.propMetadata, facade.typeSourceSpan, facade.host)\n },\n inputs: {\n ...inputsFromMetadata,\n ...inputsFromType\n },\n outputs: {\n ...outputsFromMetadata,\n ...outputsFromType\n },\n queries: facade.queries.map(convertToR3QueryMetadata),\n providers: facade.providers != null ? new WrappedNodeExpr(facade.providers) : null,\n viewQueries: facade.viewQueries.map(convertToR3QueryMetadata),\n hostDirectives\n };\n}\nfunction convertDeclareDirectiveFacadeToMetadata(declaration, typeSourceSpan) {\n const hostDirectives = declaration.hostDirectives?.length ? declaration.hostDirectives.map(dir => ({\n directive: wrapReference(dir.directive),\n isForwardReference: false,\n inputs: dir.inputs ? getHostDirectiveBindingMapping(dir.inputs) : null,\n outputs: dir.outputs ? getHostDirectiveBindingMapping(dir.outputs) : null\n })) : null;\n return {\n name: declaration.type.name,\n type: wrapReference(declaration.type),\n typeSourceSpan,\n selector: declaration.selector ?? null,\n inputs: declaration.inputs ? inputsPartialMetadataToInputMetadata(declaration.inputs) : {},\n outputs: declaration.outputs ?? {},\n host: convertHostDeclarationToMetadata(declaration.host),\n queries: (declaration.queries ?? []).map(convertQueryDeclarationToMetadata),\n viewQueries: (declaration.viewQueries ?? []).map(convertQueryDeclarationToMetadata),\n providers: declaration.providers !== undefined ? new WrappedNodeExpr(declaration.providers) : null,\n exportAs: declaration.exportAs ?? null,\n usesInheritance: declaration.usesInheritance ?? false,\n controlCreate: declaration.controlCreate ?? null,\n lifecycle: {\n usesOnChanges: declaration.usesOnChanges ?? false\n },\n deps: null,\n typeArgumentCount: 0,\n isStandalone: declaration.isStandalone ?? getJitStandaloneDefaultForVersion(declaration.version),\n isSignal: declaration.isSignal ?? false,\n hostDirectives\n };\n}\nfunction convertHostDeclarationToMetadata(host = {}) {\n return {\n attributes: convertOpaqueValuesToExpressions(host.attributes ?? {}),\n listeners: host.listeners ?? {},\n properties: host.properties ?? {},\n specialAttributes: {\n classAttr: host.classAttribute,\n styleAttr: host.styleAttribute\n }\n };\n}\nfunction getHostDirectiveBindingMapping(array) {\n let result = null;\n for (let i = 1; i < array.length; i += 2) {\n result = result || {};\n result[array[i - 1]] = array[i];\n }\n return result;\n}\nfunction convertOpaqueValuesToExpressions(obj) {\n const result = {};\n for (const key of Object.keys(obj)) {\n result[key] = new WrappedNodeExpr(obj[key]);\n }\n return result;\n}\nfunction convertDeclareComponentFacadeToMetadata(decl, typeSourceSpan, sourceMapUrl) {\n const {\n template,\n defer\n } = parseJitTemplate(decl.template, decl.type.name, sourceMapUrl, decl.preserveWhitespaces ?? false, decl.deferBlockDependencies);\n const declarations = [];\n if (decl.dependencies) {\n for (const innerDep of decl.dependencies) {\n switch (innerDep.kind) {\n case 'directive':\n case 'component':\n declarations.push(convertDirectiveDeclarationToMetadata(innerDep));\n break;\n case 'pipe':\n declarations.push(convertPipeDeclarationToMetadata(innerDep));\n break;\n }\n }\n } else if (decl.components || decl.directives || decl.pipes) {\n decl.components && declarations.push(...decl.components.map(dir => convertDirectiveDeclarationToMetadata(dir, true)));\n decl.directives && declarations.push(...decl.directives.map(dir => convertDirectiveDeclarationToMetadata(dir)));\n decl.pipes && declarations.push(...convertPipeMapToMetadata(decl.pipes));\n }\n const hasDirectiveDependencies = declarations.some(({\n kind\n }) => kind === R3TemplateDependencyKind.Directive || kind === R3TemplateDependencyKind.NgModule);\n return {\n ...convertDeclareDirectiveFacadeToMetadata(decl, typeSourceSpan),\n template,\n styles: decl.styles ?? [],\n declarations,\n viewProviders: decl.viewProviders !== undefined ? new WrappedNodeExpr(decl.viewProviders) : null,\n animations: decl.animations !== undefined ? new WrappedNodeExpr(decl.animations) : null,\n defer,\n changeDetection: decl.changeDetection ?? ChangeDetectionStrategy.Default,\n encapsulation: decl.encapsulation ?? ViewEncapsulation$1.Emulated,\n declarationListEmitMode: 2,\n relativeContextFilePath: '',\n i18nUseExternalIds: true,\n relativeTemplatePath: null,\n hasDirectiveDependencies\n };\n}\nfunction convertDeclarationFacadeToMetadata(declaration) {\n return {\n ...declaration,\n type: new WrappedNodeExpr(declaration.type)\n };\n}\nfunction convertDirectiveDeclarationToMetadata(declaration, isComponent = null) {\n return {\n kind: R3TemplateDependencyKind.Directive,\n isComponent: isComponent || declaration.kind === 'component',\n selector: declaration.selector,\n type: new WrappedNodeExpr(declaration.type),\n inputs: declaration.inputs ?? [],\n outputs: declaration.outputs ?? [],\n exportAs: declaration.exportAs ?? null\n };\n}\nfunction convertPipeMapToMetadata(pipes) {\n if (!pipes) {\n return [];\n }\n return Object.keys(pipes).map(name => {\n return {\n kind: R3TemplateDependencyKind.Pipe,\n name,\n type: new WrappedNodeExpr(pipes[name])\n };\n });\n}\nfunction convertPipeDeclarationToMetadata(pipe) {\n return {\n kind: R3TemplateDependencyKind.Pipe,\n name: pipe.name,\n type: new WrappedNodeExpr(pipe.type)\n };\n}\nfunction parseJitTemplate(template, typeName, sourceMapUrl, preserveWhitespaces, deferBlockDependencies) {\n const parsed = parseTemplate(template, sourceMapUrl, {\n preserveWhitespaces\n });\n if (parsed.errors !== null) {\n const errors = parsed.errors.map(err => err.toString()).join(', ');\n throw new Error(`Errors during JIT compilation of template for ${typeName}: ${errors}`);\n }\n const binder = new R3TargetBinder(null);\n const boundTarget = binder.bind({\n template: parsed.nodes\n });\n return {\n template: parsed,\n defer: createR3ComponentDeferMetadata(boundTarget, deferBlockDependencies)\n };\n}\nfunction convertToProviderExpression(obj, property) {\n if (obj.hasOwnProperty(property)) {\n return createMayBeForwardRefExpression(new WrappedNodeExpr(obj[property]), 0);\n } else {\n return undefined;\n }\n}\nfunction wrapExpression(obj, property) {\n if (obj.hasOwnProperty(property)) {\n return new WrappedNodeExpr(obj[property]);\n } else {\n return undefined;\n }\n}\nfunction computeProvidedIn(providedIn) {\n const expression = typeof providedIn === 'function' ? new WrappedNodeExpr(providedIn) : new LiteralExpr(providedIn ?? null);\n return createMayBeForwardRefExpression(expression, 0);\n}\nfunction convertR3DependencyMetadataArray(facades) {\n return facades == null ? null : facades.map(convertR3DependencyMetadata);\n}\nfunction convertR3DependencyMetadata(facade) {\n const isAttributeDep = facade.attribute != null;\n const rawToken = facade.token === null ? null : new WrappedNodeExpr(facade.token);\n const token = isAttributeDep ? new WrappedNodeExpr(facade.attribute) : rawToken;\n return createR3DependencyMetadata(token, isAttributeDep, facade.host, facade.optional, facade.self, facade.skipSelf);\n}\nfunction convertR3DeclareDependencyMetadata(facade) {\n const isAttributeDep = facade.attribute ?? false;\n const token = facade.token === null ? null : new WrappedNodeExpr(facade.token);\n return createR3DependencyMetadata(token, isAttributeDep, facade.host ?? false, facade.optional ?? false, facade.self ?? false, facade.skipSelf ?? false);\n}\nfunction createR3DependencyMetadata(token, isAttributeDep, host, optional, self, skipSelf) {\n const attributeNameType = isAttributeDep ? literal('unknown') : null;\n return {\n token,\n attributeNameType,\n host,\n optional,\n self,\n skipSelf\n };\n}\nfunction createR3ComponentDeferMetadata(boundTarget, deferBlockDependencies) {\n const deferredBlocks = boundTarget.getDeferBlocks();\n const blocks = new Map();\n for (let i = 0; i < deferredBlocks.length; i++) {\n const dependencyFn = deferBlockDependencies?.[i];\n blocks.set(deferredBlocks[i], dependencyFn ? new WrappedNodeExpr(dependencyFn) : null);\n }\n return {\n mode: 0,\n blocks\n };\n}\nfunction extractHostBindings(propMetadata, sourceSpan, host) {\n const bindings = parseHostBindings(host || {});\n const errors = verifyHostBindings(bindings, sourceSpan);\n if (errors.length) {\n throw new Error(errors.map(error => error.msg).join('\\n'));\n }\n for (const field in propMetadata) {\n if (propMetadata.hasOwnProperty(field)) {\n propMetadata[field].forEach(ann => {\n if (isHostBinding(ann)) {\n bindings.properties[ann.hostPropertyName || field] = getSafePropertyAccessString('this', field);\n } else if (isHostListener(ann)) {\n bindings.listeners[ann.eventName || field] = `${field}(${(ann.args || []).join(',')})`;\n }\n });\n }\n }\n return bindings;\n}\nfunction isHostBinding(value) {\n return value.ngMetadataName === 'HostBinding';\n}\nfunction isHostListener(value) {\n return value.ngMetadataName === 'HostListener';\n}\nfunction isInput(value) {\n return value.ngMetadataName === 'Input';\n}\nfunction isOutput(value) {\n return value.ngMetadataName === 'Output';\n}\nfunction inputsPartialMetadataToInputMetadata(inputs) {\n return Object.keys(inputs).reduce((result, minifiedClassName) => {\n const value = inputs[minifiedClassName];\n if (typeof value === 'string' || Array.isArray(value)) {\n result[minifiedClassName] = parseLegacyInputPartialOutput(value);\n } else {\n result[minifiedClassName] = {\n bindingPropertyName: value.publicName,\n classPropertyName: minifiedClassName,\n transformFunction: value.transformFunction !== null ? new WrappedNodeExpr(value.transformFunction) : null,\n required: value.isRequired,\n isSignal: value.isSignal\n };\n }\n return result;\n }, {});\n}\nfunction parseLegacyInputPartialOutput(value) {\n if (typeof value === 'string') {\n return {\n bindingPropertyName: value,\n classPropertyName: value,\n transformFunction: null,\n required: false,\n isSignal: false\n };\n }\n return {\n bindingPropertyName: value[0],\n classPropertyName: value[1],\n transformFunction: value[2] ? new WrappedNodeExpr(value[2]) : null,\n required: false,\n isSignal: false\n };\n}\nfunction parseInputsArray(values) {\n return values.reduce((results, value) => {\n if (typeof value === 'string') {\n const [bindingPropertyName, classPropertyName] = parseMappingString(value);\n results[classPropertyName] = {\n bindingPropertyName,\n classPropertyName,\n required: false,\n isSignal: false,\n transformFunction: null\n };\n } else {\n results[value.name] = {\n bindingPropertyName: value.alias || value.name,\n classPropertyName: value.name,\n required: value.required || false,\n isSignal: false,\n transformFunction: value.transform != null ? new WrappedNodeExpr(value.transform) : null\n };\n }\n return results;\n }, {});\n}\nfunction parseMappingStringArray(values) {\n return values.reduce((results, value) => {\n const [alias, fieldName] = parseMappingString(value);\n results[fieldName] = alias;\n return results;\n }, {});\n}\nfunction parseMappingString(value) {\n const [fieldName, bindingPropertyName] = value.split(':', 2).map(str => str.trim());\n return [bindingPropertyName ?? fieldName, fieldName];\n}\nfunction convertDeclarePipeFacadeToMetadata(declaration) {\n return {\n name: declaration.type.name,\n type: wrapReference(declaration.type),\n typeArgumentCount: 0,\n pipeName: declaration.name,\n deps: null,\n pure: declaration.pure ?? true,\n isStandalone: declaration.isStandalone ?? getJitStandaloneDefaultForVersion(declaration.version)\n };\n}\nfunction convertDeclareInjectorFacadeToMetadata(declaration) {\n return {\n name: declaration.type.name,\n type: wrapReference(declaration.type),\n providers: declaration.providers !== undefined && declaration.providers.length > 0 ? new WrappedNodeExpr(declaration.providers) : null,\n imports: declaration.imports !== undefined ? declaration.imports.map(i => new WrappedNodeExpr(i)) : []\n };\n}\nfunction publishFacade(global) {\n const ng = global.ng || (global.ng = {});\n ng.ɵcompilerFacade = new CompilerFacadeImpl();\n}\n\nclass CompilerConfig {\n defaultEncapsulation;\n preserveWhitespaces;\n strictInjectionParameters;\n constructor({\n defaultEncapsulation = ViewEncapsulation$1.Emulated,\n preserveWhitespaces,\n strictInjectionParameters\n } = {}) {\n this.defaultEncapsulation = defaultEncapsulation;\n this.preserveWhitespaces = preserveWhitespacesDefault(noUndefined(preserveWhitespaces));\n this.strictInjectionParameters = strictInjectionParameters === true;\n }\n}\nfunction preserveWhitespacesDefault(preserveWhitespacesOption, defaultSetting = false) {\n return preserveWhitespacesOption === null ? defaultSetting : preserveWhitespacesOption;\n}\n\nconst _I18N_ATTR = 'i18n';\nconst _I18N_ATTR_PREFIX = 'i18n-';\nconst _I18N_COMMENT_PREFIX_REGEXP = /^i18n:?/;\nconst MEANING_SEPARATOR = '|';\nconst ID_SEPARATOR = '@@';\nlet i18nCommentsWarned = false;\nfunction extractMessages(nodes, implicitTags, implicitAttrs, preserveSignificantWhitespace) {\n const visitor = new _Visitor(implicitTags, implicitAttrs, preserveSignificantWhitespace);\n return visitor.extract(nodes);\n}\nfunction mergeTranslations(nodes, translations, implicitTags, implicitAttrs) {\n const visitor = new _Visitor(implicitTags, implicitAttrs);\n return visitor.merge(nodes, translations);\n}\nclass ExtractionResult {\n messages;\n errors;\n constructor(messages, errors) {\n this.messages = messages;\n this.errors = errors;\n }\n}\nvar _VisitorMode;\n(function (_VisitorMode) {\n _VisitorMode[_VisitorMode[\"Extract\"] = 0] = \"Extract\";\n _VisitorMode[_VisitorMode[\"Merge\"] = 1] = \"Merge\";\n})(_VisitorMode || (_VisitorMode = {}));\nclass _Visitor {\n _implicitTags;\n _implicitAttrs;\n _preserveSignificantWhitespace;\n _depth;\n _inI18nNode;\n _inImplicitNode;\n _inI18nBlock;\n _blockMeaningAndDesc;\n _blockChildren;\n _blockStartDepth;\n _inIcu;\n _msgCountAtSectionStart;\n _errors;\n _mode;\n _messages;\n _translations;\n _createI18nMessage;\n constructor(_implicitTags, _implicitAttrs, _preserveSignificantWhitespace = true) {\n this._implicitTags = _implicitTags;\n this._implicitAttrs = _implicitAttrs;\n this._preserveSignificantWhitespace = _preserveSignificantWhitespace;\n }\n extract(nodes) {\n this._init(_VisitorMode.Extract);\n nodes.forEach(node => node.visit(this, null));\n if (this._inI18nBlock) {\n this._reportError(nodes[nodes.length - 1], 'Unclosed block');\n }\n return new ExtractionResult(this._messages, this._errors);\n }\n merge(nodes, translations) {\n this._init(_VisitorMode.Merge);\n this._translations = translations;\n const wrapper = new Element('wrapper', [], [], nodes, false, undefined, undefined, undefined, false);\n const translatedNode = wrapper.visit(this, null);\n if (this._inI18nBlock) {\n this._reportError(nodes[nodes.length - 1], 'Unclosed block');\n }\n return new ParseTreeResult(translatedNode.children, this._errors);\n }\n visitExpansionCase(icuCase, context) {\n const expression = visitAll(this, icuCase.expression, context);\n if (this._mode === _VisitorMode.Merge) {\n return new ExpansionCase(icuCase.value, expression, icuCase.sourceSpan, icuCase.valueSourceSpan, icuCase.expSourceSpan);\n }\n }\n visitExpansion(icu, context) {\n this._mayBeAddBlockChildren(icu);\n const wasInIcu = this._inIcu;\n if (!this._inIcu) {\n if (this._isInTranslatableSection) {\n this._addMessage([icu]);\n }\n this._inIcu = true;\n }\n const cases = visitAll(this, icu.cases, context);\n if (this._mode === _VisitorMode.Merge) {\n icu = new Expansion(icu.switchValue, icu.type, cases, icu.sourceSpan, icu.switchValueSourceSpan);\n }\n this._inIcu = wasInIcu;\n return icu;\n }\n visitComment(comment, context) {\n const isOpening = _isOpeningComment(comment);\n if (isOpening && this._isInTranslatableSection) {\n this._reportError(comment, 'Could not start a block inside a translatable section');\n return;\n }\n const isClosing = _isClosingComment(comment);\n if (isClosing && !this._inI18nBlock) {\n this._reportError(comment, 'Trying to close an unopened block');\n return;\n }\n if (!this._inI18nNode && !this._inIcu) {\n if (!this._inI18nBlock) {\n if (isOpening) {\n if (!i18nCommentsWarned && console && console.warn) {\n i18nCommentsWarned = true;\n const details = comment.sourceSpan.details ? `, ${comment.sourceSpan.details}` : '';\n console.warn(`I18n comments are deprecated, use an <ng-container> element instead (${comment.sourceSpan.start}${details})`);\n }\n this._inI18nBlock = true;\n this._blockStartDepth = this._depth;\n this._blockChildren = [];\n this._blockMeaningAndDesc = comment.value.replace(_I18N_COMMENT_PREFIX_REGEXP, '').trim();\n this._openTranslatableSection(comment);\n }\n } else {\n if (isClosing) {\n if (this._depth == this._blockStartDepth) {\n this._closeTranslatableSection(comment, this._blockChildren);\n this._inI18nBlock = false;\n const message = this._addMessage(this._blockChildren, this._blockMeaningAndDesc);\n const nodes = this._translateMessage(comment, message);\n return visitAll(this, nodes);\n } else {\n this._reportError(comment, 'I18N blocks should not cross element boundaries');\n return;\n }\n }\n }\n }\n }\n visitText(text, context) {\n if (this._isInTranslatableSection) {\n this._mayBeAddBlockChildren(text);\n }\n return text;\n }\n visitElement(el, context) {\n return this._visitElementLike(el, context);\n }\n visitAttribute(attribute, context) {\n throw new Error('unreachable code');\n }\n visitBlock(block, context) {\n visitAll(this, block.children, context);\n }\n visitBlockParameter(parameter, context) {}\n visitLetDeclaration(decl, context) {}\n visitComponent(component, context) {\n return this._visitElementLike(component, context);\n }\n visitDirective(directive, context) {\n throw new Error('unreachable code');\n }\n _init(mode) {\n this._mode = mode;\n this._inI18nBlock = false;\n this._inI18nNode = false;\n this._depth = 0;\n this._inIcu = false;\n this._msgCountAtSectionStart = undefined;\n this._errors = [];\n this._messages = [];\n this._inImplicitNode = false;\n this._createI18nMessage = createI18nMessageFactory(!this._preserveSignificantWhitespace, this._preserveSignificantWhitespace);\n }\n _visitElementLike(node, context) {\n this._mayBeAddBlockChildren(node);\n this._depth++;\n const wasInI18nNode = this._inI18nNode;\n const wasInImplicitNode = this._inImplicitNode;\n let childNodes = [];\n let translatedChildNodes = undefined;\n const nodeName = node instanceof Component ? node.tagName : node.name;\n const i18nAttr = _getI18nAttr(node);\n const i18nMeta = i18nAttr ? i18nAttr.value : '';\n const isImplicit = this._implicitTags.some(tag => nodeName === tag) && !this._inIcu && !this._isInTranslatableSection;\n const isTopLevelImplicit = !wasInImplicitNode && isImplicit;\n this._inImplicitNode = wasInImplicitNode || isImplicit;\n if (!this._isInTranslatableSection && !this._inIcu) {\n if (i18nAttr || isTopLevelImplicit) {\n this._inI18nNode = true;\n const message = this._addMessage(node.children, i18nMeta);\n translatedChildNodes = this._translateMessage(node, message);\n }\n if (this._mode == _VisitorMode.Extract) {\n const isTranslatable = i18nAttr || isTopLevelImplicit;\n if (isTranslatable) this._openTranslatableSection(node);\n visitAll(this, node.children);\n if (isTranslatable) this._closeTranslatableSection(node, node.children);\n }\n } else {\n if (i18nAttr || isTopLevelImplicit) {\n this._reportError(node, 'Could not mark an element as translatable inside a translatable section');\n }\n if (this._mode == _VisitorMode.Extract) {\n visitAll(this, node.children);\n }\n }\n if (this._mode === _VisitorMode.Merge) {\n const visitNodes = translatedChildNodes || node.children;\n visitNodes.forEach(child => {\n const visited = child.visit(this, context);\n if (visited && !this._isInTranslatableSection) {\n childNodes = childNodes.concat(visited);\n }\n });\n }\n this._visitAttributesOf(node);\n this._depth--;\n this._inI18nNode = wasInI18nNode;\n this._inImplicitNode = wasInImplicitNode;\n if (this._mode === _VisitorMode.Merge) {\n if (node instanceof Element) {\n return new Element(node.name, this._translateAttributes(node), this._translateDirectives(node), childNodes, node.isSelfClosing, node.sourceSpan, node.startSourceSpan, node.endSourceSpan, node.isVoid);\n } else {\n return new Component(node.componentName, node.tagName, node.fullName, this._translateAttributes(node), this._translateDirectives(node), childNodes, node.isSelfClosing, node.sourceSpan, node.startSourceSpan, node.endSourceSpan);\n }\n }\n return null;\n }\n _visitAttributesOf(el) {\n const explicitAttrNameToValue = {};\n const implicitAttrNames = this._implicitAttrs[el instanceof Component ? el.tagName || '' : el.name] || [];\n el.attrs.filter(attr => attr instanceof Attribute && attr.name.startsWith(_I18N_ATTR_PREFIX)).forEach(attr => {\n explicitAttrNameToValue[attr.name.slice(_I18N_ATTR_PREFIX.length)] = attr.value;\n });\n el.attrs.forEach(attr => {\n if (attr.name in explicitAttrNameToValue) {\n this._addMessage([attr], explicitAttrNameToValue[attr.name]);\n } else if (implicitAttrNames.some(name => attr.name === name)) {\n this._addMessage([attr]);\n }\n });\n }\n _addMessage(ast, msgMeta) {\n if (ast.length == 0 || this._isEmptyAttributeValue(ast) || this._isPlaceholderOnlyAttributeValue(ast) || this._isPlaceholderOnlyMessage(ast)) {\n return null;\n }\n const {\n meaning,\n description,\n id\n } = _parseMessageMeta(msgMeta);\n const message = this._createI18nMessage(ast, meaning, description, id);\n this._messages.push(message);\n return message;\n }\n _isEmptyAttributeValue(ast) {\n if (!isAttrNode(ast)) return false;\n const node = ast[0];\n return node.value.trim() === '';\n }\n _isPlaceholderOnlyAttributeValue(ast) {\n if (!isAttrNode(ast)) return false;\n const tokens = ast[0].valueTokens ?? [];\n const interpolations = tokens.filter(token => token.type === 17);\n const plainText = tokens.filter(token => token.type === 16).map(token => token.parts[0].trim()).join('');\n return interpolations.length === 1 && plainText === '';\n }\n _isPlaceholderOnlyMessage(ast) {\n if (!isTextNode(ast)) return false;\n const tokens = ast[0].tokens;\n const interpolations = tokens.filter(token => token.type === 8);\n const plainText = tokens.filter(token => token.type === 5).map(token => token.parts[0].trim()).join('');\n return interpolations.length === 1 && plainText === '';\n }\n _translateMessage(el, message) {\n if (message && this._mode === _VisitorMode.Merge) {\n const nodes = this._translations.get(message);\n if (nodes) {\n return nodes;\n }\n this._reportError(el, `Translation unavailable for message id=\"${this._translations.digest(message)}\"`);\n }\n return [];\n }\n _translateAttributes(node) {\n const i18nParsedMessageMeta = {};\n const translatedAttributes = [];\n node.attrs.forEach(attr => {\n if (attr.name.startsWith(_I18N_ATTR_PREFIX)) {\n i18nParsedMessageMeta[attr.name.slice(_I18N_ATTR_PREFIX.length)] = _parseMessageMeta(attr.value);\n }\n });\n node.attrs.forEach(attr => {\n if (attr.name === _I18N_ATTR || attr.name.startsWith(_I18N_ATTR_PREFIX)) {\n return;\n }\n if (attr.value && attr.value != '' && i18nParsedMessageMeta.hasOwnProperty(attr.name)) {\n const {\n meaning,\n description,\n id\n } = i18nParsedMessageMeta[attr.name];\n const message = this._createI18nMessage([attr], meaning, description, id);\n const nodes = this._translations.get(message);\n if (nodes) {\n if (nodes.length == 0) {\n translatedAttributes.push(new Attribute(attr.name, '', attr.sourceSpan, undefined, undefined, undefined, undefined));\n } else if (nodes[0] instanceof Text) {\n const value = nodes[0].value;\n translatedAttributes.push(new Attribute(attr.name, value, attr.sourceSpan, undefined, undefined, undefined, undefined));\n } else {\n this._reportError(node, `Unexpected translation for attribute \"${attr.name}\" (id=\"${id || this._translations.digest(message)}\")`);\n }\n } else {\n this._reportError(node, `Translation unavailable for attribute \"${attr.name}\" (id=\"${id || this._translations.digest(message)}\")`);\n }\n } else {\n translatedAttributes.push(attr);\n }\n });\n return translatedAttributes;\n }\n _translateDirectives(node) {\n return node.directives.map(dir => new Directive(dir.name, this._translateAttributes(dir), dir.sourceSpan, dir.startSourceSpan, dir.endSourceSpan));\n }\n _mayBeAddBlockChildren(node) {\n if (this._inI18nBlock && !this._inIcu && this._depth == this._blockStartDepth) {\n this._blockChildren.push(node);\n }\n }\n _openTranslatableSection(node) {\n if (this._isInTranslatableSection) {\n this._reportError(node, 'Unexpected section start');\n } else {\n this._msgCountAtSectionStart = this._messages.length;\n }\n }\n get _isInTranslatableSection() {\n return this._msgCountAtSectionStart !== void 0;\n }\n _closeTranslatableSection(node, directChildren) {\n if (!this._isInTranslatableSection) {\n this._reportError(node, 'Unexpected section end');\n return;\n }\n const startIndex = this._msgCountAtSectionStart;\n const significantChildren = directChildren.reduce((count, node) => count + (node instanceof Comment ? 0 : 1), 0);\n if (significantChildren == 1) {\n for (let i = this._messages.length - 1; i >= startIndex; i--) {\n const ast = this._messages[i].nodes;\n if (!(ast.length == 1 && ast[0] instanceof Text$2)) {\n this._messages.splice(i, 1);\n break;\n }\n }\n }\n this._msgCountAtSectionStart = undefined;\n }\n _reportError(node, msg) {\n this._errors.push(new ParseError(node.sourceSpan, msg));\n }\n}\nfunction _isOpeningComment(n) {\n return !!(n instanceof Comment && n.value && n.value.startsWith('i18n'));\n}\nfunction _isClosingComment(n) {\n return !!(n instanceof Comment && n.value && n.value === '/i18n');\n}\nfunction _getI18nAttr(p) {\n return p.attrs.find(attr => attr instanceof Attribute && attr.name === _I18N_ATTR) || null;\n}\nfunction _parseMessageMeta(i18n) {\n if (!i18n) return {\n meaning: '',\n description: '',\n id: ''\n };\n const idIndex = i18n.indexOf(ID_SEPARATOR);\n const descIndex = i18n.indexOf(MEANING_SEPARATOR);\n const [meaningAndDesc, id] = idIndex > -1 ? [i18n.slice(0, idIndex), i18n.slice(idIndex + 2)] : [i18n, ''];\n const [meaning, description] = descIndex > -1 ? [meaningAndDesc.slice(0, descIndex), meaningAndDesc.slice(descIndex + 1)] : ['', meaningAndDesc];\n return {\n meaning,\n description,\n id: id.trim()\n };\n}\nfunction isTextNode(ast) {\n return ast.length === 1 && ast[0] instanceof Text;\n}\nfunction isAttrNode(ast) {\n return ast.length === 1 && ast[0] instanceof Attribute;\n}\n\nclass XmlTagDefinition {\n closedByParent = false;\n implicitNamespacePrefix = null;\n isVoid = false;\n ignoreFirstLf = false;\n canSelfClose = true;\n preventNamespaceInheritance = false;\n requireExtraParent(currentParent) {\n return false;\n }\n isClosedByChild(name) {\n return false;\n }\n getContentType() {\n return TagContentType.PARSABLE_DATA;\n }\n}\nconst _TAG_DEFINITION = new XmlTagDefinition();\nfunction getXmlTagDefinition(tagName) {\n return _TAG_DEFINITION;\n}\n\nclass XmlParser extends Parser$1 {\n constructor() {\n super(getXmlTagDefinition);\n }\n parse(source, url, options = {}) {\n return super.parse(source, url, {\n ...options,\n tokenizeBlocks: false,\n tokenizeLet: false,\n selectorlessEnabled: false\n });\n }\n}\n\nconst _VERSION$1 = '1.2';\nconst _XMLNS$1 = 'urn:oasis:names:tc:xliff:document:1.2';\nconst _DEFAULT_SOURCE_LANG$1 = 'en';\nconst _PLACEHOLDER_TAG$2 = 'x';\nconst _MARKER_TAG$1 = 'mrk';\nconst _FILE_TAG = 'file';\nconst _SOURCE_TAG$1 = 'source';\nconst _SEGMENT_SOURCE_TAG = 'seg-source';\nconst _ALT_TRANS_TAG = 'alt-trans';\nconst _TARGET_TAG$1 = 'target';\nconst _UNIT_TAG$1 = 'trans-unit';\nconst _CONTEXT_GROUP_TAG = 'context-group';\nconst _CONTEXT_TAG = 'context';\nclass Xliff extends Serializer {\n write(messages, locale) {\n const visitor = new _WriteVisitor$1();\n const transUnits = [];\n messages.forEach(message => {\n let contextTags = [];\n message.sources.forEach(source => {\n let contextGroupTag = new Tag(_CONTEXT_GROUP_TAG, {\n purpose: 'location'\n });\n contextGroupTag.children.push(new CR(10), new Tag(_CONTEXT_TAG, {\n 'context-type': 'sourcefile'\n }, [new Text$1(source.filePath)]), new CR(10), new Tag(_CONTEXT_TAG, {\n 'context-type': 'linenumber'\n }, [new Text$1(`${source.startLine}`)]), new CR(8));\n contextTags.push(new CR(8), contextGroupTag);\n });\n const transUnit = new Tag(_UNIT_TAG$1, {\n id: message.id,\n datatype: 'html'\n });\n transUnit.children.push(new CR(8), new Tag(_SOURCE_TAG$1, {}, visitor.serialize(message.nodes)), ...contextTags);\n if (message.description) {\n transUnit.children.push(new CR(8), new Tag('note', {\n priority: '1',\n from: 'description'\n }, [new Text$1(message.description)]));\n }\n if (message.meaning) {\n transUnit.children.push(new CR(8), new Tag('note', {\n priority: '1',\n from: 'meaning'\n }, [new Text$1(message.meaning)]));\n }\n transUnit.children.push(new CR(6));\n transUnits.push(new CR(6), transUnit);\n });\n const body = new Tag('body', {}, [...transUnits, new CR(4)]);\n const file = new Tag('file', {\n 'source-language': locale || _DEFAULT_SOURCE_LANG$1,\n datatype: 'plaintext',\n original: 'ng2.template'\n }, [new CR(4), body, new CR(2)]);\n const xliff = new Tag('xliff', {\n version: _VERSION$1,\n xmlns: _XMLNS$1\n }, [new CR(2), file, new CR()]);\n return serialize$1([new Declaration({\n version: '1.0',\n encoding: 'UTF-8'\n }), new CR(), xliff, new CR()]);\n }\n load(content, url) {\n const xliffParser = new XliffParser();\n const {\n locale,\n msgIdToHtml,\n errors\n } = xliffParser.parse(content, url);\n const i18nNodesByMsgId = {};\n const converter = new XmlToI18n$2();\n Object.keys(msgIdToHtml).forEach(msgId => {\n const {\n i18nNodes,\n errors: e\n } = converter.convert(msgIdToHtml[msgId], url);\n errors.push(...e);\n i18nNodesByMsgId[msgId] = i18nNodes;\n });\n if (errors.length) {\n throw new Error(`xliff parse errors:\\n${errors.join('\\n')}`);\n }\n return {\n locale: locale,\n i18nNodesByMsgId\n };\n }\n digest(message) {\n return digest$1(message);\n }\n}\nlet _WriteVisitor$1 = class _WriteVisitor {\n visitText(text, context) {\n return [new Text$1(text.value)];\n }\n visitContainer(container, context) {\n const nodes = [];\n container.children.forEach(node => nodes.push(...node.visit(this)));\n return nodes;\n }\n visitIcu(icu, context) {\n const nodes = [new Text$1(`{${icu.expressionPlaceholder}, ${icu.type}, `)];\n Object.keys(icu.cases).forEach(c => {\n nodes.push(new Text$1(`${c} {`), ...icu.cases[c].visit(this), new Text$1(`} `));\n });\n nodes.push(new Text$1(`}`));\n return nodes;\n }\n visitTagPlaceholder(ph, context) {\n const ctype = getCtypeForTag(ph.tag);\n if (ph.isVoid) {\n return [new Tag(_PLACEHOLDER_TAG$2, {\n id: ph.startName,\n ctype,\n 'equiv-text': `<${ph.tag}/>`\n })];\n }\n const startTagPh = new Tag(_PLACEHOLDER_TAG$2, {\n id: ph.startName,\n ctype,\n 'equiv-text': `<${ph.tag}>`\n });\n const closeTagPh = new Tag(_PLACEHOLDER_TAG$2, {\n id: ph.closeName,\n ctype,\n 'equiv-text': `</${ph.tag}>`\n });\n return [startTagPh, ...this.serialize(ph.children), closeTagPh];\n }\n visitPlaceholder(ph, context) {\n return [new Tag(_PLACEHOLDER_TAG$2, {\n id: ph.name,\n 'equiv-text': `{{${ph.value}}}`\n })];\n }\n visitBlockPlaceholder(ph, context) {\n const ctype = `x-${ph.name.toLowerCase().replace(/[^a-z0-9]/g, '-')}`;\n const startTagPh = new Tag(_PLACEHOLDER_TAG$2, {\n id: ph.startName,\n ctype,\n 'equiv-text': `@${ph.name}`\n });\n const closeTagPh = new Tag(_PLACEHOLDER_TAG$2, {\n id: ph.closeName,\n ctype,\n 'equiv-text': `}`\n });\n return [startTagPh, ...this.serialize(ph.children), closeTagPh];\n }\n visitIcuPlaceholder(ph, context) {\n const equivText = `{${ph.value.expression}, ${ph.value.type}, ${Object.keys(ph.value.cases).map(value => value + ' {...}').join(' ')}}`;\n return [new Tag(_PLACEHOLDER_TAG$2, {\n id: ph.name,\n 'equiv-text': equivText\n })];\n }\n serialize(nodes) {\n return [].concat(...nodes.map(node => node.visit(this)));\n }\n};\nclass XliffParser {\n _unitMlString;\n _errors;\n _msgIdToHtml;\n _locale = null;\n parse(xliff, url) {\n this._unitMlString = null;\n this._msgIdToHtml = {};\n const xml = new XmlParser().parse(xliff, url);\n this._errors = xml.errors;\n visitAll(this, xml.rootNodes, null);\n return {\n msgIdToHtml: this._msgIdToHtml,\n errors: this._errors,\n locale: this._locale\n };\n }\n visitElement(element, context) {\n switch (element.name) {\n case _UNIT_TAG$1:\n this._unitMlString = null;\n const idAttr = element.attrs.find(attr => attr.name === 'id');\n if (!idAttr) {\n this._addError(element, `<${_UNIT_TAG$1}> misses the \"id\" attribute`);\n } else {\n const id = idAttr.value;\n if (this._msgIdToHtml.hasOwnProperty(id)) {\n this._addError(element, `Duplicated translations for msg ${id}`);\n } else {\n visitAll(this, element.children, null);\n if (typeof this._unitMlString === 'string') {\n this._msgIdToHtml[id] = this._unitMlString;\n } else {\n this._addError(element, `Message ${id} misses a translation`);\n }\n }\n }\n break;\n case _SOURCE_TAG$1:\n case _SEGMENT_SOURCE_TAG:\n case _ALT_TRANS_TAG:\n break;\n case _TARGET_TAG$1:\n const innerTextStart = element.startSourceSpan.end.offset;\n const innerTextEnd = element.endSourceSpan.start.offset;\n const content = element.startSourceSpan.start.file.content;\n const innerText = content.slice(innerTextStart, innerTextEnd);\n this._unitMlString = innerText;\n break;\n case _FILE_TAG:\n const localeAttr = element.attrs.find(attr => attr.name === 'target-language');\n if (localeAttr) {\n this._locale = localeAttr.value;\n }\n visitAll(this, element.children, null);\n break;\n default:\n visitAll(this, element.children, null);\n }\n }\n visitAttribute(attribute, context) {}\n visitText(text, context) {}\n visitComment(comment, context) {}\n visitExpansion(expansion, context) {}\n visitExpansionCase(expansionCase, context) {}\n visitBlock(block, context) {}\n visitBlockParameter(parameter, context) {}\n visitLetDeclaration(decl, context) {}\n visitComponent(component, context) {}\n visitDirective(directive, context) {}\n _addError(node, message) {\n this._errors.push(new ParseError(node.sourceSpan, message));\n }\n}\nlet XmlToI18n$2 = class XmlToI18n {\n _errors;\n convert(message, url) {\n const xmlIcu = new XmlParser().parse(message, url, {\n tokenizeExpansionForms: true\n });\n this._errors = xmlIcu.errors;\n const i18nNodes = this._errors.length > 0 || xmlIcu.rootNodes.length == 0 ? [] : [].concat(...visitAll(this, xmlIcu.rootNodes));\n return {\n i18nNodes: i18nNodes,\n errors: this._errors\n };\n }\n visitText(text, context) {\n return new Text$2(text.value, text.sourceSpan);\n }\n visitElement(el, context) {\n if (el.name === _PLACEHOLDER_TAG$2) {\n const nameAttr = el.attrs.find(attr => attr.name === 'id');\n if (nameAttr) {\n return new Placeholder('', nameAttr.value, el.sourceSpan);\n }\n this._addError(el, `<${_PLACEHOLDER_TAG$2}> misses the \"id\" attribute`);\n return null;\n }\n if (el.name === _MARKER_TAG$1) {\n return [].concat(...visitAll(this, el.children));\n }\n this._addError(el, `Unexpected tag`);\n return null;\n }\n visitExpansion(icu, context) {\n const caseMap = {};\n visitAll(this, icu.cases).forEach(c => {\n caseMap[c.value] = new Container(c.nodes, icu.sourceSpan);\n });\n return new Icu(icu.switchValue, icu.type, caseMap, icu.sourceSpan);\n }\n visitExpansionCase(icuCase, context) {\n return {\n value: icuCase.value,\n nodes: visitAll(this, icuCase.expression)\n };\n }\n visitComment(comment, context) {}\n visitAttribute(attribute, context) {}\n visitBlock(block, context) {}\n visitBlockParameter(parameter, context) {}\n visitLetDeclaration(decl, context) {}\n visitComponent(component, context) {\n this._addError(component, 'Unexpected node');\n }\n visitDirective(directive, context) {\n this._addError(directive, 'Unexpected node');\n }\n _addError(node, message) {\n this._errors.push(new ParseError(node.sourceSpan, message));\n }\n};\nfunction getCtypeForTag(tag) {\n switch (tag.toLowerCase()) {\n case 'br':\n return 'lb';\n case 'img':\n return 'image';\n default:\n return `x-${tag}`;\n }\n}\n\nconst _VERSION = '2.0';\nconst _XMLNS = 'urn:oasis:names:tc:xliff:document:2.0';\nconst _DEFAULT_SOURCE_LANG = 'en';\nconst _PLACEHOLDER_TAG$1 = 'ph';\nconst _PLACEHOLDER_SPANNING_TAG = 'pc';\nconst _MARKER_TAG = 'mrk';\nconst _XLIFF_TAG = 'xliff';\nconst _SOURCE_TAG = 'source';\nconst _TARGET_TAG = 'target';\nconst _UNIT_TAG = 'unit';\nclass Xliff2 extends Serializer {\n write(messages, locale) {\n const visitor = new _WriteVisitor();\n const units = [];\n messages.forEach(message => {\n const unit = new Tag(_UNIT_TAG, {\n id: message.id\n });\n const notes = new Tag('notes');\n if (message.description || message.meaning) {\n if (message.description) {\n notes.children.push(new CR(8), new Tag('note', {\n category: 'description'\n }, [new Text$1(message.description)]));\n }\n if (message.meaning) {\n notes.children.push(new CR(8), new Tag('note', {\n category: 'meaning'\n }, [new Text$1(message.meaning)]));\n }\n }\n message.sources.forEach(source => {\n notes.children.push(new CR(8), new Tag('note', {\n category: 'location'\n }, [new Text$1(`${source.filePath}:${source.startLine}${source.endLine !== source.startLine ? ',' + source.endLine : ''}`)]));\n });\n notes.children.push(new CR(6));\n unit.children.push(new CR(6), notes);\n const segment = new Tag('segment');\n segment.children.push(new CR(8), new Tag(_SOURCE_TAG, {}, visitor.serialize(message.nodes)), new CR(6));\n unit.children.push(new CR(6), segment, new CR(4));\n units.push(new CR(4), unit);\n });\n const file = new Tag('file', {\n 'original': 'ng.template',\n id: 'ngi18n'\n }, [...units, new CR(2)]);\n const xliff = new Tag(_XLIFF_TAG, {\n version: _VERSION,\n xmlns: _XMLNS,\n srcLang: locale || _DEFAULT_SOURCE_LANG\n }, [new CR(2), file, new CR()]);\n return serialize$1([new Declaration({\n version: '1.0',\n encoding: 'UTF-8'\n }), new CR(), xliff, new CR()]);\n }\n load(content, url) {\n const xliff2Parser = new Xliff2Parser();\n const {\n locale,\n msgIdToHtml,\n errors\n } = xliff2Parser.parse(content, url);\n const i18nNodesByMsgId = {};\n const converter = new XmlToI18n$1();\n Object.keys(msgIdToHtml).forEach(msgId => {\n const {\n i18nNodes,\n errors: e\n } = converter.convert(msgIdToHtml[msgId], url);\n errors.push(...e);\n i18nNodesByMsgId[msgId] = i18nNodes;\n });\n if (errors.length) {\n throw new Error(`xliff2 parse errors:\\n${errors.join('\\n')}`);\n }\n return {\n locale: locale,\n i18nNodesByMsgId\n };\n }\n digest(message) {\n return decimalDigest(message);\n }\n}\nclass _WriteVisitor {\n _nextPlaceholderId = 0;\n visitText(text, context) {\n return [new Text$1(text.value)];\n }\n visitContainer(container, context) {\n const nodes = [];\n container.children.forEach(node => nodes.push(...node.visit(this)));\n return nodes;\n }\n visitIcu(icu, context) {\n const nodes = [new Text$1(`{${icu.expressionPlaceholder}, ${icu.type}, `)];\n Object.keys(icu.cases).forEach(c => {\n nodes.push(new Text$1(`${c} {`), ...icu.cases[c].visit(this), new Text$1(`} `));\n });\n nodes.push(new Text$1(`}`));\n return nodes;\n }\n visitTagPlaceholder(ph, context) {\n const type = getTypeForTag(ph.tag);\n if (ph.isVoid) {\n const tagPh = new Tag(_PLACEHOLDER_TAG$1, {\n id: (this._nextPlaceholderId++).toString(),\n equiv: ph.startName,\n type: type,\n disp: `<${ph.tag}/>`\n });\n return [tagPh];\n }\n const tagPc = new Tag(_PLACEHOLDER_SPANNING_TAG, {\n id: (this._nextPlaceholderId++).toString(),\n equivStart: ph.startName,\n equivEnd: ph.closeName,\n type: type,\n dispStart: `<${ph.tag}>`,\n dispEnd: `</${ph.tag}>`\n });\n const nodes = [].concat(...ph.children.map(node => node.visit(this)));\n if (nodes.length) {\n nodes.forEach(node => tagPc.children.push(node));\n } else {\n tagPc.children.push(new Text$1(''));\n }\n return [tagPc];\n }\n visitPlaceholder(ph, context) {\n const idStr = (this._nextPlaceholderId++).toString();\n return [new Tag(_PLACEHOLDER_TAG$1, {\n id: idStr,\n equiv: ph.name,\n disp: `{{${ph.value}}}`\n })];\n }\n visitBlockPlaceholder(ph, context) {\n const tagPc = new Tag(_PLACEHOLDER_SPANNING_TAG, {\n id: (this._nextPlaceholderId++).toString(),\n equivStart: ph.startName,\n equivEnd: ph.closeName,\n type: 'other',\n dispStart: `@${ph.name}`,\n dispEnd: `}`\n });\n const nodes = [].concat(...ph.children.map(node => node.visit(this)));\n if (nodes.length) {\n nodes.forEach(node => tagPc.children.push(node));\n } else {\n tagPc.children.push(new Text$1(''));\n }\n return [tagPc];\n }\n visitIcuPlaceholder(ph, context) {\n const cases = Object.keys(ph.value.cases).map(value => value + ' {...}').join(' ');\n const idStr = (this._nextPlaceholderId++).toString();\n return [new Tag(_PLACEHOLDER_TAG$1, {\n id: idStr,\n equiv: ph.name,\n disp: `{${ph.value.expression}, ${ph.value.type}, ${cases}}`\n })];\n }\n serialize(nodes) {\n this._nextPlaceholderId = 0;\n return [].concat(...nodes.map(node => node.visit(this)));\n }\n}\nclass Xliff2Parser {\n _unitMlString;\n _errors;\n _msgIdToHtml;\n _locale = null;\n parse(xliff, url) {\n this._unitMlString = null;\n this._msgIdToHtml = {};\n const xml = new XmlParser().parse(xliff, url);\n this._errors = xml.errors;\n visitAll(this, xml.rootNodes, null);\n return {\n msgIdToHtml: this._msgIdToHtml,\n errors: this._errors,\n locale: this._locale\n };\n }\n visitElement(element, context) {\n switch (element.name) {\n case _UNIT_TAG:\n this._unitMlString = null;\n const idAttr = element.attrs.find(attr => attr.name === 'id');\n if (!idAttr) {\n this._addError(element, `<${_UNIT_TAG}> misses the \"id\" attribute`);\n } else {\n const id = idAttr.value;\n if (this._msgIdToHtml.hasOwnProperty(id)) {\n this._addError(element, `Duplicated translations for msg ${id}`);\n } else {\n visitAll(this, element.children, null);\n if (typeof this._unitMlString === 'string') {\n this._msgIdToHtml[id] = this._unitMlString;\n } else {\n this._addError(element, `Message ${id} misses a translation`);\n }\n }\n }\n break;\n case _SOURCE_TAG:\n break;\n case _TARGET_TAG:\n const innerTextStart = element.startSourceSpan.end.offset;\n const innerTextEnd = element.endSourceSpan.start.offset;\n const content = element.startSourceSpan.start.file.content;\n const innerText = content.slice(innerTextStart, innerTextEnd);\n this._unitMlString = innerText;\n break;\n case _XLIFF_TAG:\n const localeAttr = element.attrs.find(attr => attr.name === 'trgLang');\n if (localeAttr) {\n this._locale = localeAttr.value;\n }\n const versionAttr = element.attrs.find(attr => attr.name === 'version');\n if (versionAttr) {\n const version = versionAttr.value;\n if (version !== '2.0') {\n this._addError(element, `The XLIFF file version ${version} is not compatible with XLIFF 2.0 serializer`);\n } else {\n visitAll(this, element.children, null);\n }\n }\n break;\n default:\n visitAll(this, element.children, null);\n }\n }\n visitAttribute(attribute, context) {}\n visitText(text, context) {}\n visitComment(comment, context) {}\n visitExpansion(expansion, context) {}\n visitExpansionCase(expansionCase, context) {}\n visitBlock(block, context) {}\n visitBlockParameter(parameter, context) {}\n visitLetDeclaration(decl, context) {}\n visitComponent(component, context) {}\n visitDirective(directive, context) {}\n _addError(node, message) {\n this._errors.push(new ParseError(node.sourceSpan, message));\n }\n}\nlet XmlToI18n$1 = class XmlToI18n {\n _errors;\n convert(message, url) {\n const xmlIcu = new XmlParser().parse(message, url, {\n tokenizeExpansionForms: true\n });\n this._errors = xmlIcu.errors;\n const i18nNodes = this._errors.length > 0 || xmlIcu.rootNodes.length == 0 ? [] : [].concat(...visitAll(this, xmlIcu.rootNodes));\n return {\n i18nNodes,\n errors: this._errors\n };\n }\n visitText(text, context) {\n return new Text$2(text.value, text.sourceSpan);\n }\n visitElement(el, context) {\n switch (el.name) {\n case _PLACEHOLDER_TAG$1:\n const nameAttr = el.attrs.find(attr => attr.name === 'equiv');\n if (nameAttr) {\n return [new Placeholder('', nameAttr.value, el.sourceSpan)];\n }\n this._addError(el, `<${_PLACEHOLDER_TAG$1}> misses the \"equiv\" attribute`);\n break;\n case _PLACEHOLDER_SPANNING_TAG:\n const startAttr = el.attrs.find(attr => attr.name === 'equivStart');\n const endAttr = el.attrs.find(attr => attr.name === 'equivEnd');\n if (!startAttr) {\n this._addError(el, `<${_PLACEHOLDER_TAG$1}> misses the \"equivStart\" attribute`);\n } else if (!endAttr) {\n this._addError(el, `<${_PLACEHOLDER_TAG$1}> misses the \"equivEnd\" attribute`);\n } else {\n const startId = startAttr.value;\n const endId = endAttr.value;\n const nodes = [];\n return nodes.concat(new Placeholder('', startId, el.sourceSpan), ...el.children.map(node => node.visit(this, null)), new Placeholder('', endId, el.sourceSpan));\n }\n break;\n case _MARKER_TAG:\n return [].concat(...visitAll(this, el.children));\n default:\n this._addError(el, `Unexpected tag`);\n }\n return null;\n }\n visitExpansion(icu, context) {\n const caseMap = {};\n visitAll(this, icu.cases).forEach(c => {\n caseMap[c.value] = new Container(c.nodes, icu.sourceSpan);\n });\n return new Icu(icu.switchValue, icu.type, caseMap, icu.sourceSpan);\n }\n visitExpansionCase(icuCase, context) {\n return {\n value: icuCase.value,\n nodes: [].concat(...visitAll(this, icuCase.expression))\n };\n }\n visitComment(comment, context) {}\n visitAttribute(attribute, context) {}\n visitBlock(block, context) {}\n visitBlockParameter(parameter, context) {}\n visitLetDeclaration(decl, context) {}\n visitComponent(component, context) {\n this._addError(component, 'Unexpected node');\n }\n visitDirective(directive, context) {\n this._addError(directive, 'Unexpected node');\n }\n _addError(node, message) {\n this._errors.push(new ParseError(node.sourceSpan, message));\n }\n};\nfunction getTypeForTag(tag) {\n switch (tag.toLowerCase()) {\n case 'br':\n case 'b':\n case 'i':\n case 'u':\n return 'fmt';\n case 'img':\n return 'image';\n case 'a':\n return 'link';\n default:\n return 'other';\n }\n}\n\nconst _TRANSLATIONS_TAG = 'translationbundle';\nconst _TRANSLATION_TAG = 'translation';\nconst _PLACEHOLDER_TAG = 'ph';\nclass Xtb extends Serializer {\n write(messages, locale) {\n throw new Error('Unsupported');\n }\n load(content, url) {\n const xtbParser = new XtbParser();\n const {\n locale,\n msgIdToHtml,\n errors\n } = xtbParser.parse(content, url);\n const i18nNodesByMsgId = {};\n const converter = new XmlToI18n();\n Object.keys(msgIdToHtml).forEach(msgId => {\n const valueFn = function () {\n const {\n i18nNodes,\n errors\n } = converter.convert(msgIdToHtml[msgId], url);\n if (errors.length) {\n throw new Error(`xtb parse errors:\\n${errors.join('\\n')}`);\n }\n return i18nNodes;\n };\n createLazyProperty(i18nNodesByMsgId, msgId, valueFn);\n });\n if (errors.length) {\n throw new Error(`xtb parse errors:\\n${errors.join('\\n')}`);\n }\n return {\n locale: locale,\n i18nNodesByMsgId\n };\n }\n digest(message) {\n return digest(message);\n }\n createNameMapper(message) {\n return new SimplePlaceholderMapper(message, toPublicName);\n }\n}\nfunction createLazyProperty(messages, id, valueFn) {\n Object.defineProperty(messages, id, {\n configurable: true,\n enumerable: true,\n get: function () {\n const value = valueFn();\n Object.defineProperty(messages, id, {\n enumerable: true,\n value\n });\n return value;\n },\n set: _ => {\n throw new Error('Could not overwrite an XTB translation');\n }\n });\n}\nclass XtbParser {\n _bundleDepth;\n _errors;\n _msgIdToHtml;\n _locale = null;\n parse(xtb, url) {\n this._bundleDepth = 0;\n this._msgIdToHtml = {};\n const xml = new XmlParser().parse(xtb, url);\n this._errors = xml.errors;\n visitAll(this, xml.rootNodes);\n return {\n msgIdToHtml: this._msgIdToHtml,\n errors: this._errors,\n locale: this._locale\n };\n }\n visitElement(element, context) {\n switch (element.name) {\n case _TRANSLATIONS_TAG:\n this._bundleDepth++;\n if (this._bundleDepth > 1) {\n this._addError(element, `<${_TRANSLATIONS_TAG}> elements can not be nested`);\n }\n const langAttr = element.attrs.find(attr => attr.name === 'lang');\n if (langAttr) {\n this._locale = langAttr.value;\n }\n visitAll(this, element.children, null);\n this._bundleDepth--;\n break;\n case _TRANSLATION_TAG:\n const idAttr = element.attrs.find(attr => attr.name === 'id');\n if (!idAttr) {\n this._addError(element, `<${_TRANSLATION_TAG}> misses the \"id\" attribute`);\n } else {\n const id = idAttr.value;\n if (this._msgIdToHtml.hasOwnProperty(id)) {\n this._addError(element, `Duplicated translations for msg ${id}`);\n } else {\n const innerTextStart = element.startSourceSpan.end.offset;\n const innerTextEnd = element.endSourceSpan.start.offset;\n const content = element.startSourceSpan.start.file.content;\n const innerText = content.slice(innerTextStart, innerTextEnd);\n this._msgIdToHtml[id] = innerText;\n }\n }\n break;\n default:\n this._addError(element, 'Unexpected tag');\n }\n }\n visitAttribute(attribute, context) {}\n visitText(text, context) {}\n visitComment(comment, context) {}\n visitExpansion(expansion, context) {}\n visitExpansionCase(expansionCase, context) {}\n visitBlock(block, context) {}\n visitBlockParameter(block, context) {}\n visitLetDeclaration(decl, context) {}\n visitComponent(component, context) {\n this._addError(component, 'Unexpected node');\n }\n visitDirective(directive, context) {\n this._addError(directive, 'Unexpected node');\n }\n _addError(node, message) {\n this._errors.push(new ParseError(node.sourceSpan, message));\n }\n}\nclass XmlToI18n {\n _errors;\n convert(message, url) {\n const xmlIcu = new XmlParser().parse(message, url, {\n tokenizeExpansionForms: true\n });\n this._errors = xmlIcu.errors;\n const i18nNodes = this._errors.length > 0 || xmlIcu.rootNodes.length == 0 ? [] : visitAll(this, xmlIcu.rootNodes);\n return {\n i18nNodes,\n errors: this._errors\n };\n }\n visitText(text, context) {\n return new Text$2(text.value, text.sourceSpan);\n }\n visitExpansion(icu, context) {\n const caseMap = {};\n visitAll(this, icu.cases).forEach(c => {\n caseMap[c.value] = new Container(c.nodes, icu.sourceSpan);\n });\n return new Icu(icu.switchValue, icu.type, caseMap, icu.sourceSpan);\n }\n visitExpansionCase(icuCase, context) {\n return {\n value: icuCase.value,\n nodes: visitAll(this, icuCase.expression)\n };\n }\n visitElement(el, context) {\n if (el.name === _PLACEHOLDER_TAG) {\n const nameAttr = el.attrs.find(attr => attr.name === 'name');\n if (nameAttr) {\n return new Placeholder('', nameAttr.value, el.sourceSpan);\n }\n this._addError(el, `<${_PLACEHOLDER_TAG}> misses the \"name\" attribute`);\n } else {\n this._addError(el, `Unexpected tag`);\n }\n return null;\n }\n visitComment(comment, context) {}\n visitAttribute(attribute, context) {}\n visitBlock(block, context) {}\n visitBlockParameter(block, context) {}\n visitLetDeclaration(decl, context) {}\n visitComponent(component, context) {\n this._addError(component, 'Unexpected node');\n }\n visitDirective(directive, context) {\n this._addError(directive, 'Unexpected node');\n }\n _addError(node, message) {\n this._errors.push(new ParseError(node.sourceSpan, message));\n }\n}\n\nclass TranslationBundle {\n _i18nNodesByMsgId;\n digest;\n mapperFactory;\n _i18nToHtml;\n constructor(_i18nNodesByMsgId = {}, locale, digest, mapperFactory, missingTranslationStrategy = MissingTranslationStrategy.Warning, console) {\n this._i18nNodesByMsgId = _i18nNodesByMsgId;\n this.digest = digest;\n this.mapperFactory = mapperFactory;\n this._i18nToHtml = new I18nToHtmlVisitor(_i18nNodesByMsgId, locale, digest, mapperFactory, missingTranslationStrategy, console);\n }\n static load(content, url, serializer, missingTranslationStrategy, console) {\n const {\n locale,\n i18nNodesByMsgId\n } = serializer.load(content, url);\n const digestFn = m => serializer.digest(m);\n const mapperFactory = m => serializer.createNameMapper(m);\n return new TranslationBundle(i18nNodesByMsgId, locale, digestFn, mapperFactory, missingTranslationStrategy, console);\n }\n get(srcMsg) {\n const html = this._i18nToHtml.convert(srcMsg);\n if (html.errors.length) {\n throw new Error(html.errors.join('\\n'));\n }\n return html.nodes;\n }\n has(srcMsg) {\n return this.digest(srcMsg) in this._i18nNodesByMsgId;\n }\n}\nclass I18nToHtmlVisitor {\n _i18nNodesByMsgId;\n _locale;\n _digest;\n _mapperFactory;\n _missingTranslationStrategy;\n _console;\n _srcMsg;\n _errors = [];\n _contextStack = [];\n _mapper;\n constructor(_i18nNodesByMsgId = {}, _locale, _digest, _mapperFactory, _missingTranslationStrategy, _console) {\n this._i18nNodesByMsgId = _i18nNodesByMsgId;\n this._locale = _locale;\n this._digest = _digest;\n this._mapperFactory = _mapperFactory;\n this._missingTranslationStrategy = _missingTranslationStrategy;\n this._console = _console;\n }\n convert(srcMsg) {\n this._contextStack.length = 0;\n this._errors.length = 0;\n const text = this._convertToText(srcMsg);\n const url = srcMsg.nodes[0].sourceSpan.start.file.url;\n const html = new HtmlParser().parse(text, url, {\n tokenizeExpansionForms: true\n });\n return {\n nodes: html.rootNodes,\n errors: [...this._errors, ...html.errors]\n };\n }\n visitText(text, context) {\n return escapeXml(text.value);\n }\n visitContainer(container, context) {\n return container.children.map(n => n.visit(this)).join('');\n }\n visitIcu(icu, context) {\n const cases = Object.keys(icu.cases).map(k => `${k} {${icu.cases[k].visit(this)}}`);\n const exp = this._srcMsg.placeholders.hasOwnProperty(icu.expression) ? this._srcMsg.placeholders[icu.expression].text : icu.expression;\n return `{${exp}, ${icu.type}, ${cases.join(' ')}}`;\n }\n visitPlaceholder(ph, context) {\n const phName = this._mapper(ph.name);\n if (this._srcMsg.placeholders.hasOwnProperty(phName)) {\n return this._srcMsg.placeholders[phName].text;\n }\n if (this._srcMsg.placeholderToMessage.hasOwnProperty(phName)) {\n return this._convertToText(this._srcMsg.placeholderToMessage[phName]);\n }\n this._addError(ph, `Unknown placeholder \"${ph.name}\"`);\n return '';\n }\n visitTagPlaceholder(ph, context) {\n const tag = `${ph.tag}`;\n const attrs = Object.keys(ph.attrs).map(name => `${name}=\"${ph.attrs[name]}\"`).join(' ');\n if (ph.isVoid) {\n return `<${tag} ${attrs}/>`;\n }\n const children = ph.children.map(c => c.visit(this)).join('');\n return `<${tag} ${attrs}>${children}</${tag}>`;\n }\n visitIcuPlaceholder(ph, context) {\n return this._convertToText(this._srcMsg.placeholderToMessage[ph.name]);\n }\n visitBlockPlaceholder(ph, context) {\n const params = ph.parameters.length === 0 ? '' : ` (${ph.parameters.join('; ')})`;\n const children = ph.children.map(c => c.visit(this)).join('');\n return `@${ph.name}${params} {${children}}`;\n }\n _convertToText(srcMsg) {\n const id = this._digest(srcMsg);\n const mapper = this._mapperFactory ? this._mapperFactory(srcMsg) : null;\n let nodes;\n this._contextStack.push({\n msg: this._srcMsg,\n mapper: this._mapper\n });\n this._srcMsg = srcMsg;\n if (this._i18nNodesByMsgId.hasOwnProperty(id)) {\n nodes = this._i18nNodesByMsgId[id];\n this._mapper = name => mapper ? mapper.toInternalName(name) : name;\n } else {\n if (this._missingTranslationStrategy === MissingTranslationStrategy.Error) {\n const ctx = this._locale ? ` for locale \"${this._locale}\"` : '';\n this._addError(srcMsg.nodes[0], `Missing translation for message \"${id}\"${ctx}`);\n } else if (this._console && this._missingTranslationStrategy === MissingTranslationStrategy.Warning) {\n const ctx = this._locale ? ` for locale \"${this._locale}\"` : '';\n this._console.warn(`Missing translation for message \"${id}\"${ctx}`);\n }\n nodes = srcMsg.nodes;\n this._mapper = name => name;\n }\n const text = nodes.map(node => node.visit(this)).join('');\n const context = this._contextStack.pop();\n this._srcMsg = context.msg;\n this._mapper = context.mapper;\n return text;\n }\n _addError(el, msg) {\n this._errors.push(new ParseError(el.sourceSpan, msg));\n }\n}\n\nclass I18NHtmlParser {\n _htmlParser;\n getTagDefinition;\n _translationBundle;\n constructor(_htmlParser, translations, translationsFormat, missingTranslation = MissingTranslationStrategy.Warning, console) {\n this._htmlParser = _htmlParser;\n if (translations) {\n const serializer = createSerializer(translationsFormat);\n this._translationBundle = TranslationBundle.load(translations, 'i18n', serializer, missingTranslation, console);\n } else {\n this._translationBundle = new TranslationBundle({}, null, digest$1, undefined, missingTranslation, console);\n }\n }\n parse(source, url, options = {}) {\n const parseResult = this._htmlParser.parse(source, url, {\n ...options\n });\n if (parseResult.errors.length) {\n return new ParseTreeResult(parseResult.rootNodes, parseResult.errors);\n }\n return mergeTranslations(parseResult.rootNodes, this._translationBundle, [], {});\n }\n}\nfunction createSerializer(format) {\n format = (format || 'xlf').toLowerCase();\n switch (format) {\n case 'xmb':\n return new Xmb();\n case 'xtb':\n return new Xtb();\n case 'xliff2':\n case 'xlf2':\n return new Xliff2();\n case 'xliff':\n case 'xlf':\n default:\n return new Xliff();\n }\n}\n\nclass MessageBundle {\n _htmlParser;\n _implicitTags;\n _implicitAttrs;\n _locale;\n _preserveWhitespace;\n _messages = [];\n constructor(_htmlParser, _implicitTags, _implicitAttrs, _locale = null, _preserveWhitespace = true) {\n this._htmlParser = _htmlParser;\n this._implicitTags = _implicitTags;\n this._implicitAttrs = _implicitAttrs;\n this._locale = _locale;\n this._preserveWhitespace = _preserveWhitespace;\n }\n updateFromTemplate(source, url) {\n const htmlParserResult = this._htmlParser.parse(source, url, {\n tokenizeExpansionForms: true\n });\n if (htmlParserResult.errors.length) {\n return htmlParserResult.errors;\n }\n const rootNodes = this._preserveWhitespace ? htmlParserResult.rootNodes : visitAllWithSiblings(new WhitespaceVisitor(false), htmlParserResult.rootNodes);\n const i18nParserResult = extractMessages(rootNodes, this._implicitTags, this._implicitAttrs, this._preserveWhitespace);\n if (i18nParserResult.errors.length) {\n return i18nParserResult.errors;\n }\n this._messages.push(...i18nParserResult.messages);\n return [];\n }\n getMessages() {\n return this._messages;\n }\n write(serializer, filterSources) {\n const messages = {};\n const mapperVisitor = new MapPlaceholderNames();\n this._messages.forEach(message => {\n const id = serializer.digest(message);\n if (!messages.hasOwnProperty(id)) {\n messages[id] = message;\n } else {\n messages[id].sources.push(...message.sources);\n }\n });\n const msgList = Object.keys(messages).map(id => {\n const mapper = serializer.createNameMapper(messages[id]);\n const src = messages[id];\n const nodes = mapper ? mapperVisitor.convert(src.nodes, mapper) : src.nodes;\n let transformedMessage = new Message(nodes, {}, {}, src.meaning, src.description, id);\n transformedMessage.sources = src.sources;\n if (filterSources) {\n transformedMessage.sources.forEach(source => source.filePath = filterSources(source.filePath));\n }\n return transformedMessage;\n });\n return serializer.write(msgList, this._locale);\n }\n}\nclass MapPlaceholderNames extends CloneVisitor {\n convert(nodes, mapper) {\n return mapper ? nodes.map(n => n.visit(this, mapper)) : nodes;\n }\n visitTagPlaceholder(ph, mapper) {\n const startName = mapper.toPublicName(ph.startName);\n const closeName = ph.closeName ? mapper.toPublicName(ph.closeName) : ph.closeName;\n const children = ph.children.map(n => n.visit(this, mapper));\n return new TagPlaceholder(ph.tag, ph.attrs, startName, closeName, children, ph.isVoid, ph.sourceSpan, ph.startSourceSpan, ph.endSourceSpan);\n }\n visitBlockPlaceholder(ph, mapper) {\n const startName = mapper.toPublicName(ph.startName);\n const closeName = ph.closeName ? mapper.toPublicName(ph.closeName) : ph.closeName;\n const children = ph.children.map(n => n.visit(this, mapper));\n return new BlockPlaceholder(ph.name, ph.parameters, startName, closeName, children, ph.sourceSpan, ph.startSourceSpan, ph.endSourceSpan);\n }\n visitPlaceholder(ph, mapper) {\n return new Placeholder(ph.value, mapper.toPublicName(ph.name), ph.sourceSpan);\n }\n visitIcuPlaceholder(ph, mapper) {\n return new IcuPlaceholder(ph.value, mapper.toPublicName(ph.name), ph.sourceSpan);\n }\n}\n\nfunction compileClassMetadata(metadata) {\n const fnCall = internalCompileClassMetadata(metadata);\n return arrowFn([], [devOnlyGuardedExpression(fnCall).toStmt()]).callFn([]);\n}\nfunction internalCompileClassMetadata(metadata) {\n return importExpr(Identifiers.setClassMetadata).callFn([metadata.type, metadata.decorators, metadata.ctorParameters ?? literal(null), metadata.propDecorators ?? literal(null)]);\n}\nfunction compileComponentClassMetadata(metadata, dependencies) {\n if (dependencies === null || dependencies.length === 0) {\n return compileClassMetadata(metadata);\n }\n return internalCompileSetClassMetadataAsync(metadata, dependencies.map(dep => new FnParam(dep.symbolName, DYNAMIC_TYPE)), compileComponentMetadataAsyncResolver(dependencies));\n}\nfunction compileOpaqueAsyncClassMetadata(metadata, deferResolver, deferredDependencyNames) {\n return internalCompileSetClassMetadataAsync(metadata, deferredDependencyNames.map(name => new FnParam(name, DYNAMIC_TYPE)), deferResolver);\n}\nfunction internalCompileSetClassMetadataAsync(metadata, wrapperParams, dependencyResolverFn) {\n const setClassMetadataCall = internalCompileClassMetadata(metadata);\n const setClassMetaWrapper = arrowFn(wrapperParams, [setClassMetadataCall.toStmt()]);\n const setClassMetaAsync = importExpr(Identifiers.setClassMetadataAsync).callFn([metadata.type, dependencyResolverFn, setClassMetaWrapper]);\n return arrowFn([], [devOnlyGuardedExpression(setClassMetaAsync).toStmt()]).callFn([]);\n}\nfunction compileComponentMetadataAsyncResolver(dependencies) {\n const dynamicImports = dependencies.map(({\n symbolName,\n importPath,\n isDefaultImport\n }) => {\n const innerFn = arrowFn([new FnParam('m', DYNAMIC_TYPE)], variable('m').prop(isDefaultImport ? 'default' : symbolName));\n return new DynamicImportExpr(importPath).prop('then').callFn([innerFn]);\n });\n return arrowFn([], literalArr(dynamicImports));\n}\n\nconst MINIMUM_PARTIAL_LINKER_VERSION$5 = '12.0.0';\nconst MINIMUM_PARTIAL_LINKER_DEFER_SUPPORT_VERSION = '18.0.0';\nfunction compileDeclareClassMetadata(metadata) {\n const definitionMap = new DefinitionMap();\n definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$5));\n definitionMap.set('version', literal('21.2.6'));\n definitionMap.set('ngImport', importExpr(Identifiers.core));\n definitionMap.set('type', metadata.type);\n definitionMap.set('decorators', metadata.decorators);\n definitionMap.set('ctorParameters', metadata.ctorParameters);\n definitionMap.set('propDecorators', metadata.propDecorators);\n return importExpr(Identifiers.declareClassMetadata).callFn([definitionMap.toLiteralMap()]);\n}\nfunction compileComponentDeclareClassMetadata(metadata, dependencies) {\n if (dependencies === null || dependencies.length === 0) {\n return compileDeclareClassMetadata(metadata);\n }\n const definitionMap = new DefinitionMap();\n const callbackReturnDefinitionMap = new DefinitionMap();\n callbackReturnDefinitionMap.set('decorators', metadata.decorators);\n callbackReturnDefinitionMap.set('ctorParameters', metadata.ctorParameters ?? literal(null));\n callbackReturnDefinitionMap.set('propDecorators', metadata.propDecorators ?? literal(null));\n definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_DEFER_SUPPORT_VERSION));\n definitionMap.set('version', literal('21.2.6'));\n definitionMap.set('ngImport', importExpr(Identifiers.core));\n definitionMap.set('type', metadata.type);\n definitionMap.set('resolveDeferredDeps', compileComponentMetadataAsyncResolver(dependencies));\n definitionMap.set('resolveMetadata', arrowFn(dependencies.map(dep => new FnParam(dep.symbolName, DYNAMIC_TYPE)), callbackReturnDefinitionMap.toLiteralMap()));\n return importExpr(Identifiers.declareClassMetadataAsync).callFn([definitionMap.toLiteralMap()]);\n}\n\nfunction toOptionalLiteralArray(values, mapper) {\n if (values === null || values.length === 0) {\n return null;\n }\n return literalArr(values.map(value => mapper(value)));\n}\nfunction toOptionalLiteralMap(object, mapper) {\n const entries = Object.keys(object).map(key => {\n const value = object[key];\n return {\n key,\n value: mapper(value),\n quoted: true\n };\n });\n if (entries.length > 0) {\n return literalMap(entries);\n } else {\n return null;\n }\n}\nfunction compileDependencies(deps) {\n if (deps === 'invalid') {\n return literal('invalid');\n } else if (deps === null) {\n return literal(null);\n } else {\n return literalArr(deps.map(compileDependency));\n }\n}\nfunction compileDependency(dep) {\n const depMeta = new DefinitionMap();\n depMeta.set('token', dep.token);\n if (dep.attributeNameType !== null) {\n depMeta.set('attribute', literal(true));\n }\n if (dep.host) {\n depMeta.set('host', literal(true));\n }\n if (dep.optional) {\n depMeta.set('optional', literal(true));\n }\n if (dep.self) {\n depMeta.set('self', literal(true));\n }\n if (dep.skipSelf) {\n depMeta.set('skipSelf', literal(true));\n }\n return depMeta.toLiteralMap();\n}\n\nfunction compileDeclareDirectiveFromMetadata(meta) {\n const definitionMap = createDirectiveDefinitionMap(meta);\n const expression = importExpr(Identifiers.declareDirective).callFn([definitionMap.toLiteralMap()]);\n const type = createDirectiveType(meta);\n return {\n expression,\n type,\n statements: []\n };\n}\nfunction createDirectiveDefinitionMap(meta) {\n const definitionMap = new DefinitionMap();\n const minVersion = getMinimumVersionForPartialOutput(meta);\n definitionMap.set('minVersion', literal(minVersion));\n definitionMap.set('version', literal('21.2.6'));\n definitionMap.set('type', meta.type.value);\n if (meta.isStandalone !== undefined) {\n definitionMap.set('isStandalone', literal(meta.isStandalone));\n }\n if (meta.isSignal) {\n definitionMap.set('isSignal', literal(meta.isSignal));\n }\n if (meta.selector !== null) {\n definitionMap.set('selector', literal(meta.selector));\n }\n definitionMap.set('inputs', needsNewInputPartialOutput(meta) ? createInputsPartialMetadata(meta.inputs) : legacyInputsPartialMetadata(meta.inputs));\n definitionMap.set('outputs', conditionallyCreateDirectiveBindingLiteral(meta.outputs));\n definitionMap.set('host', compileHostMetadata(meta.host));\n definitionMap.set('providers', meta.providers);\n if (meta.queries.length > 0) {\n definitionMap.set('queries', literalArr(meta.queries.map(compileQuery)));\n }\n if (meta.viewQueries.length > 0) {\n definitionMap.set('viewQueries', literalArr(meta.viewQueries.map(compileQuery)));\n }\n if (meta.exportAs !== null) {\n definitionMap.set('exportAs', asLiteral(meta.exportAs));\n }\n if (meta.usesInheritance) {\n definitionMap.set('usesInheritance', literal(true));\n }\n if (meta.lifecycle.usesOnChanges) {\n definitionMap.set('usesOnChanges', literal(true));\n }\n if (meta.controlCreate) {\n definitionMap.set('controlCreate', literalMap([{\n key: 'passThroughInput',\n value: literal(meta.controlCreate.passThroughInput),\n quoted: false\n }]));\n }\n if (meta.hostDirectives?.length) {\n definitionMap.set('hostDirectives', createHostDirectives(meta.hostDirectives));\n }\n definitionMap.set('ngImport', importExpr(Identifiers.core));\n return definitionMap;\n}\nfunction getMinimumVersionForPartialOutput(meta) {\n let minVersion = '14.0.0';\n const hasDecoratorTransformFunctions = Object.values(meta.inputs).some(input => input.transformFunction !== null);\n if (hasDecoratorTransformFunctions) {\n minVersion = '16.1.0';\n }\n if (needsNewInputPartialOutput(meta)) {\n minVersion = '17.1.0';\n }\n if (meta.queries.some(q => q.isSignal) || meta.viewQueries.some(q => q.isSignal)) {\n minVersion = '17.2.0';\n }\n return minVersion;\n}\nfunction needsNewInputPartialOutput(meta) {\n return Object.values(meta.inputs).some(input => input.isSignal);\n}\nfunction compileQuery(query) {\n const meta = new DefinitionMap();\n meta.set('propertyName', literal(query.propertyName));\n if (query.first) {\n meta.set('first', literal(true));\n }\n meta.set('predicate', Array.isArray(query.predicate) ? asLiteral(query.predicate) : convertFromMaybeForwardRefExpression(query.predicate));\n if (!query.emitDistinctChangesOnly) {\n meta.set('emitDistinctChangesOnly', literal(false));\n }\n if (query.descendants) {\n meta.set('descendants', literal(true));\n }\n meta.set('read', query.read);\n if (query.static) {\n meta.set('static', literal(true));\n }\n if (query.isSignal) {\n meta.set('isSignal', literal(true));\n }\n return meta.toLiteralMap();\n}\nfunction compileHostMetadata(meta) {\n const hostMetadata = new DefinitionMap();\n hostMetadata.set('attributes', toOptionalLiteralMap(meta.attributes, expression => expression));\n hostMetadata.set('listeners', toOptionalLiteralMap(meta.listeners, literal));\n hostMetadata.set('properties', toOptionalLiteralMap(meta.properties, literal));\n if (meta.specialAttributes.styleAttr) {\n hostMetadata.set('styleAttribute', literal(meta.specialAttributes.styleAttr));\n }\n if (meta.specialAttributes.classAttr) {\n hostMetadata.set('classAttribute', literal(meta.specialAttributes.classAttr));\n }\n if (hostMetadata.values.length > 0) {\n return hostMetadata.toLiteralMap();\n } else {\n return null;\n }\n}\nfunction createHostDirectives(hostDirectives) {\n const expressions = hostDirectives.map(current => {\n const keys = [{\n key: 'directive',\n value: current.isForwardReference ? generateForwardRef(current.directive.type) : current.directive.type,\n quoted: false\n }];\n const inputsLiteral = current.inputs ? createHostDirectivesMappingArray(current.inputs) : null;\n const outputsLiteral = current.outputs ? createHostDirectivesMappingArray(current.outputs) : null;\n if (inputsLiteral) {\n keys.push({\n key: 'inputs',\n value: inputsLiteral,\n quoted: false\n });\n }\n if (outputsLiteral) {\n keys.push({\n key: 'outputs',\n value: outputsLiteral,\n quoted: false\n });\n }\n return literalMap(keys);\n });\n return literalArr(expressions);\n}\nfunction createInputsPartialMetadata(inputs) {\n const keys = Object.getOwnPropertyNames(inputs);\n if (keys.length === 0) {\n return null;\n }\n return literalMap(keys.map(declaredName => {\n const value = inputs[declaredName];\n return {\n key: declaredName,\n quoted: UNSAFE_OBJECT_KEY_NAME_REGEXP.test(declaredName),\n value: literalMap([{\n key: 'classPropertyName',\n quoted: false,\n value: asLiteral(value.classPropertyName)\n }, {\n key: 'publicName',\n quoted: false,\n value: asLiteral(value.bindingPropertyName)\n }, {\n key: 'isSignal',\n quoted: false,\n value: asLiteral(value.isSignal)\n }, {\n key: 'isRequired',\n quoted: false,\n value: asLiteral(value.required)\n }, {\n key: 'transformFunction',\n quoted: false,\n value: value.transformFunction ?? NULL_EXPR\n }])\n };\n }));\n}\nfunction legacyInputsPartialMetadata(inputs) {\n const keys = Object.getOwnPropertyNames(inputs);\n if (keys.length === 0) {\n return null;\n }\n return literalMap(keys.map(declaredName => {\n const value = inputs[declaredName];\n const publicName = value.bindingPropertyName;\n const differentDeclaringName = publicName !== declaredName;\n let result;\n if (differentDeclaringName || value.transformFunction !== null) {\n const values = [asLiteral(publicName), asLiteral(declaredName)];\n if (value.transformFunction !== null) {\n values.push(value.transformFunction);\n }\n result = literalArr(values);\n } else {\n result = asLiteral(publicName);\n }\n return {\n key: declaredName,\n quoted: UNSAFE_OBJECT_KEY_NAME_REGEXP.test(declaredName),\n value: result\n };\n }));\n}\n\nfunction compileDeclareComponentFromMetadata(meta, template, additionalTemplateInfo) {\n const definitionMap = createComponentDefinitionMap(meta, template, additionalTemplateInfo);\n const expression = importExpr(Identifiers.declareComponent).callFn([definitionMap.toLiteralMap()]);\n const type = createComponentType(meta);\n return {\n expression,\n type,\n statements: []\n };\n}\nfunction createComponentDefinitionMap(meta, template, templateInfo) {\n const definitionMap = createDirectiveDefinitionMap(meta);\n const blockVisitor = new BlockPresenceVisitor();\n visitAll$1(blockVisitor, template.nodes);\n definitionMap.set('template', getTemplateExpression(template, templateInfo));\n if (templateInfo.isInline) {\n definitionMap.set('isInline', literal(true));\n }\n if (blockVisitor.hasBlocks) {\n definitionMap.set('minVersion', literal('17.0.0'));\n }\n definitionMap.set('styles', toOptionalLiteralArray(meta.styles, literal));\n definitionMap.set('dependencies', compileUsedDependenciesMetadata(meta));\n definitionMap.set('viewProviders', meta.viewProviders);\n definitionMap.set('animations', meta.animations);\n if (meta.changeDetection !== null) {\n if (typeof meta.changeDetection === 'object') {\n throw new Error('Impossible state! Change detection flag is not resolved!');\n }\n definitionMap.set('changeDetection', importExpr(Identifiers.ChangeDetectionStrategy).prop(ChangeDetectionStrategy[meta.changeDetection]));\n }\n if (meta.encapsulation !== ViewEncapsulation$1.Emulated) {\n definitionMap.set('encapsulation', importExpr(Identifiers.ViewEncapsulation).prop(ViewEncapsulation$1[meta.encapsulation]));\n }\n if (template.preserveWhitespaces === true) {\n definitionMap.set('preserveWhitespaces', literal(true));\n }\n if (meta.defer.mode === 0) {\n const resolvers = [];\n let hasResolvers = false;\n for (const deps of meta.defer.blocks.values()) {\n if (deps === null) {\n resolvers.push(literal(null));\n } else {\n resolvers.push(deps);\n hasResolvers = true;\n }\n }\n if (hasResolvers) {\n definitionMap.set('deferBlockDependencies', literalArr(resolvers));\n }\n } else {\n throw new Error('Unsupported defer function emit mode in partial compilation');\n }\n return definitionMap;\n}\nfunction getTemplateExpression(template, templateInfo) {\n if (templateInfo.inlineTemplateLiteralExpression !== null) {\n return templateInfo.inlineTemplateLiteralExpression;\n }\n if (templateInfo.isInline) {\n return literal(templateInfo.content, null, null);\n }\n const contents = templateInfo.content;\n const file = new ParseSourceFile(contents, templateInfo.sourceUrl);\n const start = new ParseLocation(file, 0, 0, 0);\n const end = computeEndLocation(file, contents);\n const span = new ParseSourceSpan(start, end);\n return literal(contents, null, span);\n}\nfunction computeEndLocation(file, contents) {\n const length = contents.length;\n let lineStart = 0;\n let lastLineStart = 0;\n let line = 0;\n do {\n lineStart = contents.indexOf('\\n', lastLineStart);\n if (lineStart !== -1) {\n lastLineStart = lineStart + 1;\n line++;\n }\n } while (lineStart !== -1);\n return new ParseLocation(file, length, line, length - lastLineStart);\n}\nfunction compileUsedDependenciesMetadata(meta) {\n const wrapType = meta.declarationListEmitMode !== 0 ? generateForwardRef : expr => expr;\n if (meta.declarationListEmitMode === 3) {\n throw new Error(`Unsupported emit mode`);\n }\n return toOptionalLiteralArray(meta.declarations, decl => {\n switch (decl.kind) {\n case R3TemplateDependencyKind.Directive:\n const dirMeta = new DefinitionMap();\n dirMeta.set('kind', literal(decl.isComponent ? 'component' : 'directive'));\n dirMeta.set('type', wrapType(decl.type));\n dirMeta.set('selector', literal(decl.selector));\n dirMeta.set('inputs', toOptionalLiteralArray(decl.inputs, literal));\n dirMeta.set('outputs', toOptionalLiteralArray(decl.outputs, literal));\n dirMeta.set('exportAs', toOptionalLiteralArray(decl.exportAs, literal));\n return dirMeta.toLiteralMap();\n case R3TemplateDependencyKind.Pipe:\n const pipeMeta = new DefinitionMap();\n pipeMeta.set('kind', literal('pipe'));\n pipeMeta.set('type', wrapType(decl.type));\n pipeMeta.set('name', literal(decl.name));\n return pipeMeta.toLiteralMap();\n case R3TemplateDependencyKind.NgModule:\n const ngModuleMeta = new DefinitionMap();\n ngModuleMeta.set('kind', literal('ngmodule'));\n ngModuleMeta.set('type', wrapType(decl.type));\n return ngModuleMeta.toLiteralMap();\n }\n });\n}\nclass BlockPresenceVisitor extends RecursiveVisitor$1 {\n hasBlocks = false;\n visitDeferredBlock() {\n this.hasBlocks = true;\n }\n visitDeferredBlockPlaceholder() {\n this.hasBlocks = true;\n }\n visitDeferredBlockLoading() {\n this.hasBlocks = true;\n }\n visitDeferredBlockError() {\n this.hasBlocks = true;\n }\n visitIfBlock() {\n this.hasBlocks = true;\n }\n visitIfBlockBranch() {\n this.hasBlocks = true;\n }\n visitForLoopBlock() {\n this.hasBlocks = true;\n }\n visitForLoopBlockEmpty() {\n this.hasBlocks = true;\n }\n visitSwitchBlock() {\n this.hasBlocks = true;\n }\n visitSwitchBlockCase() {\n this.hasBlocks = true;\n }\n visitSwitchBlockCaseGroup() {\n this.hasBlocks = true;\n }\n}\n\nconst MINIMUM_PARTIAL_LINKER_VERSION$4 = '12.0.0';\nfunction compileDeclareFactoryFunction(meta) {\n const definitionMap = new DefinitionMap();\n definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$4));\n definitionMap.set('version', literal('21.2.6'));\n definitionMap.set('ngImport', importExpr(Identifiers.core));\n definitionMap.set('type', meta.type.value);\n definitionMap.set('deps', compileDependencies(meta.deps));\n definitionMap.set('target', importExpr(Identifiers.FactoryTarget).prop(FactoryTarget[meta.target]));\n return {\n expression: importExpr(Identifiers.declareFactory).callFn([definitionMap.toLiteralMap()]),\n statements: [],\n type: createFactoryType(meta)\n };\n}\n\nconst MINIMUM_PARTIAL_LINKER_VERSION$3 = '12.0.0';\nfunction compileDeclareInjectableFromMetadata(meta) {\n const definitionMap = createInjectableDefinitionMap(meta);\n const expression = importExpr(Identifiers.declareInjectable).callFn([definitionMap.toLiteralMap()]);\n const type = createInjectableType(meta);\n return {\n expression,\n type,\n statements: []\n };\n}\nfunction createInjectableDefinitionMap(meta) {\n const definitionMap = new DefinitionMap();\n definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$3));\n definitionMap.set('version', literal('21.2.6'));\n definitionMap.set('ngImport', importExpr(Identifiers.core));\n definitionMap.set('type', meta.type.value);\n if (meta.providedIn !== undefined) {\n const providedIn = convertFromMaybeForwardRefExpression(meta.providedIn);\n if (providedIn.value !== null) {\n definitionMap.set('providedIn', providedIn);\n }\n }\n if (meta.useClass !== undefined) {\n definitionMap.set('useClass', convertFromMaybeForwardRefExpression(meta.useClass));\n }\n if (meta.useExisting !== undefined) {\n definitionMap.set('useExisting', convertFromMaybeForwardRefExpression(meta.useExisting));\n }\n if (meta.useValue !== undefined) {\n definitionMap.set('useValue', convertFromMaybeForwardRefExpression(meta.useValue));\n }\n if (meta.useFactory !== undefined) {\n definitionMap.set('useFactory', meta.useFactory);\n }\n if (meta.deps !== undefined) {\n definitionMap.set('deps', literalArr(meta.deps.map(compileDependency)));\n }\n return definitionMap;\n}\n\nconst MINIMUM_PARTIAL_LINKER_VERSION$2 = '12.0.0';\nfunction compileDeclareInjectorFromMetadata(meta) {\n const definitionMap = createInjectorDefinitionMap(meta);\n const expression = importExpr(Identifiers.declareInjector).callFn([definitionMap.toLiteralMap()]);\n const type = createInjectorType(meta);\n return {\n expression,\n type,\n statements: []\n };\n}\nfunction createInjectorDefinitionMap(meta) {\n const definitionMap = new DefinitionMap();\n definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$2));\n definitionMap.set('version', literal('21.2.6'));\n definitionMap.set('ngImport', importExpr(Identifiers.core));\n definitionMap.set('type', meta.type.value);\n definitionMap.set('providers', meta.providers);\n if (meta.imports.length > 0) {\n definitionMap.set('imports', literalArr(meta.imports));\n }\n return definitionMap;\n}\n\nconst MINIMUM_PARTIAL_LINKER_VERSION$1 = '14.0.0';\nfunction compileDeclareNgModuleFromMetadata(meta) {\n const definitionMap = createNgModuleDefinitionMap(meta);\n const expression = importExpr(Identifiers.declareNgModule).callFn([definitionMap.toLiteralMap()]);\n const type = createNgModuleType(meta);\n return {\n expression,\n type,\n statements: []\n };\n}\nfunction createNgModuleDefinitionMap(meta) {\n const definitionMap = new DefinitionMap();\n if (meta.kind === R3NgModuleMetadataKind.Local) {\n throw new Error('Invalid path! Local compilation mode should not get into the partial compilation path');\n }\n definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$1));\n definitionMap.set('version', literal('21.2.6'));\n definitionMap.set('ngImport', importExpr(Identifiers.core));\n definitionMap.set('type', meta.type.value);\n if (meta.bootstrap.length > 0) {\n definitionMap.set('bootstrap', refsToArray(meta.bootstrap, meta.containsForwardDecls));\n }\n if (meta.declarations.length > 0) {\n definitionMap.set('declarations', refsToArray(meta.declarations, meta.containsForwardDecls));\n }\n if (meta.imports.length > 0) {\n definitionMap.set('imports', refsToArray(meta.imports, meta.containsForwardDecls));\n }\n if (meta.exports.length > 0) {\n definitionMap.set('exports', refsToArray(meta.exports, meta.containsForwardDecls));\n }\n if (meta.schemas !== null && meta.schemas.length > 0) {\n definitionMap.set('schemas', literalArr(meta.schemas.map(ref => ref.value)));\n }\n if (meta.id !== null) {\n definitionMap.set('id', meta.id);\n }\n return definitionMap;\n}\n\nconst MINIMUM_PARTIAL_LINKER_VERSION = '14.0.0';\nfunction compileDeclarePipeFromMetadata(meta) {\n const definitionMap = createPipeDefinitionMap(meta);\n const expression = importExpr(Identifiers.declarePipe).callFn([definitionMap.toLiteralMap()]);\n const type = createPipeType(meta);\n return {\n expression,\n type,\n statements: []\n };\n}\nfunction createPipeDefinitionMap(meta) {\n const definitionMap = new DefinitionMap();\n definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION));\n definitionMap.set('version', literal('21.2.6'));\n definitionMap.set('ngImport', importExpr(Identifiers.core));\n definitionMap.set('type', meta.type.value);\n if (meta.isStandalone !== undefined) {\n definitionMap.set('isStandalone', literal(meta.isStandalone));\n }\n definitionMap.set('name', literal(meta.pipeName ?? meta.name));\n if (meta.pure === false) {\n definitionMap.set('pure', literal(meta.pure));\n }\n return definitionMap;\n}\n\nfunction compileClassDebugInfo(debugInfo) {\n const debugInfoObject = {\n className: debugInfo.className\n };\n if (debugInfo.filePath) {\n debugInfoObject.filePath = debugInfo.filePath;\n debugInfoObject.lineNumber = debugInfo.lineNumber;\n }\n if (debugInfo.forbidOrphanRendering) {\n debugInfoObject.forbidOrphanRendering = literal(true);\n }\n const fnCall = importExpr(Identifiers.setClassDebugInfo).callFn([debugInfo.type, mapLiteral(debugInfoObject)]);\n const iife = arrowFn([], [devOnlyGuardedExpression(fnCall).toStmt()]);\n return iife.callFn([]);\n}\n\nfunction compileHmrInitializer(meta) {\n const moduleName = 'm';\n const dataName = 'd';\n const timestampName = 't';\n const idName = 'id';\n const importCallbackName = `${meta.className}_HmrLoad`;\n const namespaces = meta.namespaceDependencies.map(dep => {\n return new ExternalExpr({\n moduleName: dep.moduleName,\n name: null\n });\n });\n const defaultRead = variable(moduleName).prop('default');\n const replaceCall = importExpr(Identifiers.replaceMetadata).callFn([meta.type, defaultRead, literalArr(namespaces), literalArr(meta.localDependencies.map(l => l.runtimeRepresentation)), variable('import').prop('meta'), variable(idName)]);\n const replaceCallback = arrowFn([new FnParam(moduleName, DYNAMIC_TYPE)], defaultRead.and(replaceCall));\n const url = importExpr(Identifiers.getReplaceMetadataURL).callFn([variable(idName), variable(timestampName), variable('import').prop('meta').prop('url')]);\n const importCallback = new DeclareFunctionStmt(importCallbackName, [new FnParam(timestampName, DYNAMIC_TYPE)], [new DynamicImportExpr(url, null, '@vite-ignore').prop('then').callFn([replaceCallback]).toStmt()], null, StmtModifier.Final);\n const updateCallback = arrowFn([new FnParam(dataName, DYNAMIC_TYPE)], variable(dataName).prop('id').identical(variable(idName)).and(variable(importCallbackName).callFn([variable(dataName).prop('timestamp')])));\n const initialCall = variable(importCallbackName).callFn([variable('Date').prop('now').callFn([])]);\n const hotRead = variable('import').prop('meta').prop('hot');\n const hotListener = hotRead.clone().prop('on').callFn([literal('angular:component-update'), updateCallback]);\n return arrowFn([], [new DeclareVarStmt(idName, literal(encodeURIComponent(`${meta.filePath}@${meta.className}`)), null, StmtModifier.Final), importCallback, devOnlyGuardedExpression(initialCall).toStmt(), devOnlyGuardedExpression(hotRead.and(hotListener)).toStmt()]).callFn([]);\n}\nfunction compileHmrUpdateCallback(definitions, constantStatements, meta) {\n const namespaces = 'ɵɵnamespaces';\n const params = [meta.className, namespaces].map(name => new FnParam(name, DYNAMIC_TYPE));\n const body = [];\n for (const local of meta.localDependencies) {\n params.push(new FnParam(local.name, DYNAMIC_TYPE));\n }\n for (let i = 0; i < meta.namespaceDependencies.length; i++) {\n body.push(new DeclareVarStmt(meta.namespaceDependencies[i].assignedName, variable(namespaces).key(literal(i)), DYNAMIC_TYPE, StmtModifier.Final));\n }\n body.push(...constantStatements);\n for (const field of definitions) {\n if (field.initializer !== null) {\n body.push(variable(meta.className).prop(field.name).set(field.initializer).toStmt());\n for (const stmt of field.statements) {\n body.push(stmt);\n }\n }\n }\n return new DeclareFunctionStmt(`${meta.className}_UpdateMetadata`, params, body, null, StmtModifier.Final);\n}\n\nconst VERSION = new Version('21.2.6');\n\npublishFacade(_global);\n\nexport { AST, ASTWithName, ASTWithSource, AbsoluteSourceSpan, ArrayType, ArrowFunction, ArrowFunctionExpr$1 as ArrowFunctionExpr, ArrowFunctionIdentifierParameter, Attribute, Binary, BinaryOperator, BinaryOperatorExpr, BindingPipe, BindingPipeType, BindingType, Block, BlockParameter, BoundElementProperty, BuiltinType, BuiltinTypeName, CUSTOM_ELEMENTS_SCHEMA, Call, Chain, ChangeDetectionStrategy, CombinedRecursiveAstVisitor, CommaExpr, Comment, CompilerConfig, CompilerFacadeImpl, Component, Conditional, ConditionalExpr, ConstantPool, CssSelector, DYNAMIC_TYPE, DeclareFunctionStmt, DeclareVarStmt, Directive, DomElementSchemaRegistry, DynamicImportExpr, EOF, Element, ElementSchemaRegistry, EmitterVisitorContext, EmptyExpr$1 as EmptyExpr, Expansion, ExpansionCase, Expression, ExpressionBinding, ExpressionStatement, ExpressionType, ExternalExpr, ExternalReference, FactoryTarget, FunctionExpr, HtmlParser, HtmlTagDefinition, I18NHtmlParser, IfStmt, ImplicitReceiver, InstantiateExpr, Interpolation$1 as Interpolation, InvokeFunctionExpr, JSDocComment, JitEvaluator, KeyedRead, LeadingComment, LetDeclaration, Lexer, LiteralArray, LiteralArrayExpr, LiteralExpr, LiteralMap, LiteralMapExpr, LiteralMapPropertyAssignment, LiteralMapSpreadAssignment, LiteralPrimitive, LocalizedString, MapType, MessageBundle, NONE_TYPE, NO_ERRORS_SCHEMA, NodeWithI18n, NonNullAssert, NotExpr, ParenthesizedExpr, ParenthesizedExpression, ParseError, ParseErrorLevel, ParseLocation, ParseSourceFile, ParseSourceSpan, ParseSpan, ParseTreeResult, ParsedEvent, ParsedEventType, ParsedProperty, ParsedPropertyType, ParsedVariable, Parser, PrefixNot, PropertyRead, Identifiers as R3Identifiers, R3NgModuleMetadataKind, R3SelectorScopeMode, R3TargetBinder, R3TemplateDependencyKind, ReadKeyExpr, ReadPropExpr, ReadVarExpr, RecursiveAstVisitor, RecursiveVisitor, RegularExpressionLiteral, RegularExpressionLiteralExpr, ResourceLoader, ReturnStatement, SCHEMA, SECURITY_SCHEMA, STRING_TYPE, SafeCall, SafeKeyedRead, SafePropertyRead, SelectorContext, SelectorListContext, SelectorMatcher, SelectorlessMatcher, Serializer, SplitInterpolation, SpreadElement, SpreadElementExpr, Statement, StmtModifier, StringToken, StringTokenKind, TagContentType, TaggedTemplateLiteral, TaggedTemplateLiteralExpr, TemplateBindingParseResult, TemplateLiteral, TemplateLiteralElement, TemplateLiteralElementExpr, TemplateLiteralExpr, Text, ThisReceiver, BlockNode as TmplAstBlockNode, BoundAttribute as TmplAstBoundAttribute, BoundDeferredTrigger as TmplAstBoundDeferredTrigger, BoundEvent as TmplAstBoundEvent, BoundText as TmplAstBoundText, Component$1 as TmplAstComponent, Content as TmplAstContent, DeferredBlock as TmplAstDeferredBlock, DeferredBlockError as TmplAstDeferredBlockError, DeferredBlockLoading as TmplAstDeferredBlockLoading, DeferredBlockPlaceholder as TmplAstDeferredBlockPlaceholder, DeferredTrigger as TmplAstDeferredTrigger, Directive$1 as TmplAstDirective, Element$1 as TmplAstElement, ForLoopBlock as TmplAstForLoopBlock, ForLoopBlockEmpty as TmplAstForLoopBlockEmpty, HostElement as TmplAstHostElement, HoverDeferredTrigger as TmplAstHoverDeferredTrigger, Icu$1 as TmplAstIcu, IdleDeferredTrigger as TmplAstIdleDeferredTrigger, IfBlock as TmplAstIfBlock, IfBlockBranch as TmplAstIfBlockBranch, ImmediateDeferredTrigger as TmplAstImmediateDeferredTrigger, InteractionDeferredTrigger as TmplAstInteractionDeferredTrigger, LetDeclaration$1 as TmplAstLetDeclaration, NeverDeferredTrigger as TmplAstNeverDeferredTrigger, RecursiveVisitor$1 as TmplAstRecursiveVisitor, Reference as TmplAstReference, SwitchBlock as TmplAstSwitchBlock, SwitchBlockCase as TmplAstSwitchBlockCase, SwitchBlockCaseGroup as TmplAstSwitchBlockCaseGroup, SwitchExhaustiveCheck as TmplAstSwitchExhaustiveCheck, Template as TmplAstTemplate, Text$3 as TmplAstText, TextAttribute as TmplAstTextAttribute, TimerDeferredTrigger as TmplAstTimerDeferredTrigger, UnknownBlock as TmplAstUnknownBlock, Variable as TmplAstVariable, ViewportDeferredTrigger as TmplAstViewportDeferredTrigger, Token, TokenType, TransplantedType, TreeError, Type, TypeModifier, TypeofExpr, TypeofExpression, Unary, UnaryOperator, UnaryOperatorExpr, VERSION, VariableBinding, Version, ViewEncapsulation$1 as ViewEncapsulation, VoidExpr, VoidExpression, WrappedNodeExpr, Xliff, Xliff2, Xmb, XmlParser, Xtb, _ATTR_TO_PROP, compileClassDebugInfo, compileClassMetadata, compileComponentClassMetadata, compileComponentDeclareClassMetadata, compileComponentFromMetadata, compileDeclareClassMetadata, compileDeclareComponentFromMetadata, compileDeclareDirectiveFromMetadata, compileDeclareFactoryFunction, compileDeclareInjectableFromMetadata, compileDeclareInjectorFromMetadata, compileDeclareNgModuleFromMetadata, compileDeclarePipeFromMetadata, compileDeferResolverFunction, compileDirectiveFromMetadata, compileFactoryFunction, compileHmrInitializer, compileHmrUpdateCallback, compileInjectable, compileInjector, compileNgModule, compileOpaqueAsyncClassMetadata, compilePipeFromMetadata, computeMsgId, core, createCssSelectorFromNode, createInjectableType, createMayBeForwardRefExpression, devOnlyGuardedExpression, emitDistinctChangesOnlyDefaultValue, encapsulateStyle, escapeRegExp, findMatchingDirectivesAndPipes, getHtmlTagDefinition, getNsPrefix, getSafePropertyAccessString, identifierName, isNgContainer, isNgContent, isNgTemplate, jsDocComment, leadingComment, literal, literalMap, makeBindingParser, mergeNsAndName, output_ast as outputAst, parseHostBindings, parseTemplate, preserveWhitespacesDefault, publishFacade, r3JitTypeSourceSpan, sanitizeIdentifier, setEnableTemplateSourceLocations, splitNsName, visitAll$1 as tmplAstVisitAll, verifyHostBindings, visitAll };\n//# sourceMappingURL=compiler.mjs.map\n",
|
|
15
|
-
"import { getAngularDeps } from './angularDeps';\nimport { withSuppressedAngularDevLogs } from './ssrRender';\nimport { getSsrContextId } from '../utils/registerClientScript';\n\nconst angularIslandSelector = 'abs-angular-island';\n\nexport const getAngularIslandSelector = (_islandId: string) =>\n\tangularIslandSelector;\n\nconst getSelectorFromRenderedIsland = (rootElement: HTMLElement) => {\n\tconst firstChild = rootElement.firstElementChild;\n\tif (!(firstChild instanceof HTMLElement)) {\n\t\treturn null;\n\t}\n\n\tconst selector = firstChild.tagName.toLowerCase();\n\n\treturn selector.length > 0 ? selector : null;\n};\n\nconst getClientAngularComponentSelector = (\n\tcomponent: import('@angular/core').Type<object>\n) => {\n\tconst maybeDef = Reflect.get(component, 'ɵcmp');\n\tif (typeof maybeDef !== 'object' || maybeDef === null) {\n\t\treturn null;\n\t}\n\n\tconst maybeSelectors = Reflect.get(maybeDef, 'selectors');\n\tif (!Array.isArray(maybeSelectors)) {\n\t\treturn null;\n\t}\n\n\tconst [firstSelectorGroup] = maybeSelectors;\n\tif (!Array.isArray(firstSelectorGroup)) {\n\t\treturn null;\n\t}\n\n\tconst [selector] = firstSelectorGroup;\n\n\treturn typeof selector === 'string' && selector.length > 0\n\t\t? selector\n\t\t: null;\n};\n\nconst createAngularIslandApp = async () => {\n\tconst { EnvironmentInjector, provideZonelessChangeDetection } =\n\t\tawait import('@angular/core');\n\tconst { createApplication } = await import('@angular/platform-browser');\n\tconst app = await createApplication({\n\t\tproviders: [provideZonelessChangeDetection()]\n\t});\n\tconst environmentInjector = app.injector.get(EnvironmentInjector);\n\n\treturn { app, environmentInjector };\n};\n\nlet angularIslandAppPromise: Promise<{\n\tapp: import('@angular/core').ApplicationRef;\n\tenvironmentInjector: import('@angular/core').EnvironmentInjector;\n}> | null = null;\n\nconst getAngularIslandApp = async () => {\n\tif (!angularIslandAppPromise) {\n\t\tangularIslandAppPromise = createAngularIslandApp();\n\t}\n\n\treturn angularIslandAppPromise;\n};\n\ntype AngularIslandWrapperMetadata = {\n\tdeps: Awaited<ReturnType<typeof getAngularDeps>>;\n\tpropsToken: import('@angular/core').InjectionToken<Record<string, unknown>>;\n\tselector: string;\n\tWrapperComponent: import('@angular/core').Type<object>;\n};\n\nconst wrapperMetadataCache = new Map<\n\tstring,\n\tPromise<AngularIslandWrapperMetadata>\n>();\nconst requestRenderCache = new Map<string, Map<string, string>>();\n\nconst getRequestRenderCache = () => {\n\tconst requestId = getSsrContextId();\n\tif (!requestId) {\n\t\treturn null;\n\t}\n\n\tconst cached = requestRenderCache.get(requestId);\n\tif (cached) {\n\t\treturn cached;\n\t}\n\n\tconst renderCache = new Map<string, string>();\n\trequestRenderCache.set(requestId, renderCache);\n\n\treturn renderCache;\n};\n\nconst getAngularIslandWrapperKey = (\n\tcomponent: import('@angular/core').Type<object>,\n\t_islandId: string\n) => {\n\tconst componentName =\n\t\ttypeof component.name === 'string' && component.name.length > 0\n\t\t\t? component.name\n\t\t\t: 'AngularIsland';\n\n\treturn `${componentName}:${angularIslandSelector}`;\n};\n\nconst getIslandRenderCacheKey = (\n\tcomponent: import('@angular/core').Type<object>,\n\tprops: Record<string, unknown>\n) => {\n\tconst componentName =\n\t\ttypeof component.name === 'string' && component.name.length > 0\n\t\t\t? component.name\n\t\t\t: 'AngularIsland';\n\n\treturn `${componentName}:${JSON.stringify(props)}`;\n};\n\nconst buildAngularIslandWrapperMetadata = async (\n\tcomponent: import('@angular/core').Type<object>,\n\tislandId: string,\n\twrapperKey: string\n) => {\n\tconst { Component, InjectionToken, inject } = await import('@angular/core');\n\tconst { NgComponentOutlet } = await import('@angular/common');\n\tconst deps = await getAngularDeps();\n\tconst selector = getAngularIslandSelector(islandId);\n\tconst propsToken = new InjectionToken<Record<string, unknown>>(\n\t\t`${wrapperKey}:props`\n\t);\n\n\tclass AngularIslandWrapperComponent {\n\t\tcomponent = component;\n\t\tprops = inject(propsToken);\n\t}\n\n\treturn {\n\t\tdeps,\n\t\tpropsToken,\n\t\tselector,\n\t\tWrapperComponent: Component({\n\t\t\timports: [NgComponentOutlet, component],\n\t\t\tselector,\n\t\t\tstandalone: true,\n\t\t\ttemplate:\n\t\t\t\t'<ng-container *ngComponentOutlet=\"component; inputs: props\"></ng-container>'\n\t\t})(AngularIslandWrapperComponent)\n\t};\n};\n\nconst createAngularIslandWrapper = async (\n\tcomponent: import('@angular/core').Type<object>,\n\tislandId: string\n) => {\n\tconst wrapperKey = getAngularIslandWrapperKey(component, islandId);\n\tconst cached = wrapperMetadataCache.get(wrapperKey);\n\tif (cached) {\n\t\treturn cached;\n\t}\n\n\tconst metadataPromise = buildAngularIslandWrapperMetadata(\n\t\tcomponent,\n\t\tislandId,\n\t\twrapperKey\n\t);\n\n\twrapperMetadataCache.set(wrapperKey, metadataPromise);\n\n\treturn metadataPromise;\n};\n\nconst extractAngularIslandRoot = (html: string, selector: string) => {\n\tconst openTag = `<${selector}`;\n\tconst start = html.indexOf(openTag);\n\tif (start < 0) {\n\t\tthrow new Error(`Could not find Angular island root \"${selector}\".`);\n\t}\n\n\tconst endTag = `</${selector}>`;\n\tconst end = html.indexOf(endTag, start);\n\tif (end < 0) {\n\t\tthrow new Error(`Could not close Angular island root \"${selector}\".`);\n\t}\n\n\treturn html.slice(start, end + endTag.length);\n};\n\nexport const mountAngularIsland = async <Props extends Record<string, unknown>>(\n\tcomponent: import('@angular/core').Type<object>,\n\telement: HTMLElement,\n\tprops: Props,\n\tislandId: string\n) => {\n\tawait import('@angular/compiler');\n\tconst { createComponent, inputBinding } = await import('@angular/core');\n\tconst selector = getAngularIslandSelector(islandId);\n\tconst { app, environmentInjector } = await getAngularIslandApp();\n\n\tlet rootElement = element.querySelector(selector);\n\tif (!(rootElement instanceof HTMLElement)) {\n\t\telement.innerHTML = `<${selector}></${selector}>`;\n\t\trootElement = element.querySelector(selector);\n\t}\n\tif (!(rootElement instanceof HTMLElement)) return app;\n\n\tconst componentSelector =\n\t\tgetClientAngularComponentSelector(component) ??\n\t\tgetSelectorFromRenderedIsland(rootElement);\n\tif (!componentSelector) return app;\n\n\trootElement.innerHTML = `<${componentSelector}></${componentSelector}>`;\n\tconst hostElement = rootElement.querySelector(componentSelector);\n\tif (!(hostElement instanceof HTMLElement)) return app;\n\n\tconst bindings = Object.entries(props).map(([key, value]) =>\n\t\tinputBinding(key, () => value)\n\t);\n\tconst componentRef = createComponent(component, {\n\t\tbindings,\n\t\tenvironmentInjector,\n\t\thostElement\n\t});\n\tapp.attachView(componentRef.hostView);\n\tcomponentRef.changeDetectorRef.detectChanges();\n\twindow.__ABS_ANGULAR_ISLAND_APPS__ ??= [];\n\twindow.__ABS_ANGULAR_ISLAND_APPS__.push(app);\n\n\treturn app;\n};\nexport const renderAngularIslandToHtml = async <\n\tProps extends Record<string, unknown>\n>(\n\tcomponent: import('@angular/core').Type<object>,\n\tprops: Props,\n\tislandId: string\n) => {\n\tconst requestCache = getRequestRenderCache();\n\tconst renderCacheKey = getIslandRenderCacheKey(component, props);\n\tconst cachedHtml = requestCache?.get(renderCacheKey);\n\tif (cachedHtml) {\n\t\treturn cachedHtml;\n\t}\n\n\tconst { deps, propsToken, selector, WrapperComponent } =\n\t\tawait createAngularIslandWrapper(component, islandId);\n\n\tconst providers = [\n\t\tdeps.provideServerRendering(),\n\t\tdeps.provideZonelessChangeDetection(),\n\t\t{ provide: deps.APP_BASE_HREF, useValue: '/' },\n\t\t{ provide: propsToken, useValue: props }\n\t];\n\tconst document = `<!DOCTYPE html><html><body><${selector}></${selector}></body></html>`;\n\tconst html = await withSuppressedAngularDevLogs(() =>\n\t\tdeps.renderApplication(\n\t\t\t(context) =>\n\t\t\t\tdeps.bootstrapApplication(\n\t\t\t\t\tWrapperComponent,\n\t\t\t\t\t{ providers },\n\t\t\t\t\tcontext\n\t\t\t\t),\n\t\t\t{\n\t\t\t\tdocument,\n\t\t\t\tplatformProviders: [],\n\t\t\t\turl: '/'\n\t\t\t}\n\t\t)\n\t);\n\tconst islandHtml = extractAngularIslandRoot(html, selector);\n\trequestCache?.set(renderCacheKey, islandHtml);\n\n\treturn islandHtml;\n};\n",
|
|
16
|
-
"import { createElement } from 'react';\nimport { renderToStaticMarkup } from 'react-dom/server';\nimport { render as renderSvelte } from 'svelte/server';\nimport { createSSRApp, h } from 'vue';\nimport { renderToString as renderVueToString } from 'vue/server-renderer';\nimport { renderAngularIslandToHtml } from '../angular/islands';\n\nexport { renderAngularIslandToHtml };\nexport const renderReactIslandToHtml = <Props extends Record<string, unknown>>(\n\tcomponent: React.ComponentType<Props>,\n\tprops: Props\n) => renderToStaticMarkup(createElement(component, props));\nexport const renderSvelteIslandToHtml = <Props extends Record<string, unknown>>(\n\tcomponent: import('svelte').Component<Props>,\n\tprops: Props\n) => {\n\tconst { body } = renderSvelte(component, { props });\n\n\treturn body;\n};\nexport const renderVueIslandToHtml = <Props extends Record<string, unknown>>(\n\tcomponent: import('vue').Component<Props>,\n\tprops: Props\n) => {\n\tconst app = createSSRApp({\n\t\trender: () => h(component, props)\n\t});\n\n\treturn renderVueToString(app);\n};\n",
|
|
17
|
-
"export const ANGULAR_INIT_TIMEOUT_MS = 500;\nexport const ANSI_ESCAPE_LENGTH = 3;\nexport const ASCII_SPACE = 32;\nexport const BASE_36_RADIX = 36;\nexport const BUN_BUILD_WARNING_SUPPRESSION =\n\t'wildcard sideEffects are not supported yet';\nexport const BODY_SLICE_LENGTH = 2000;\nexport const BYTES_PER_KILOBYTE = 1024;\nexport const CLI_ARGS_OFFSET = 3;\nexport const CSS_ERROR_RESOLVE_DELAY_MS = 50;\nexport const CSS_MAX_CHECK_ATTEMPTS = 10;\nexport const CSS_MAX_PARSE_TIMEOUT_MS = 500;\nexport const CSS_SHEET_READY_TIMEOUT_MS = 100;\nexport const DEFAULT_CHUNK_SIZE = 16_384;\nexport const DEFAULT_DEBOUNCE_MS = 15;\nexport const DEFAULT_PORT = 3000;\nexport const DEV_SERVER_RESTART_DEBOUNCE_MS = 100;\nexport const DOM_UPDATE_DELAY_MS = 50;\nexport const FILE_PROTOCOL_PREFIX_LENGTH = 7;\nexport const FOCUS_ID_PREFIX_LENGTH = 3;\nexport const FOCUS_IDX_PREFIX_LENGTH = 4;\nexport const FOCUS_NAME_PREFIX_LENGTH = 5;\nexport const HMR_UPDATE_TIMEOUT_MS = 2000;\nexport const HOOK_SIGNATURE_LENGTH = 12;\nexport const EXCLUDE_LAST_OFFSET = -1;\nexport const HOURS_IN_DAY = 24;\nexport const HOURS_IN_HALF_DAY = 12;\nexport const MAX_ERROR_LENGTH = 200;\nexport const MAX_RECONNECT_ATTEMPTS = 60;\nexport const MILLISECONDS_IN_A_SECOND = 1000;\nexport const MINUTES_IN_AN_HOUR = 60;\nexport const SECONDS_IN_A_MINUTE = 60;\nexport const MILLISECONDS_IN_A_MINUTE =\n\tMILLISECONDS_IN_A_SECOND * SECONDS_IN_A_MINUTE;\nexport const MILLISECONDS_IN_A_DAY =\n\tMILLISECONDS_IN_A_SECOND *\n\tSECONDS_IN_A_MINUTE *\n\tMINUTES_IN_AN_HOUR *\n\tHOURS_IN_DAY;\nexport const OVERLAY_FADE_DURATION_MS = 150;\nexport const PING_INTERVAL_MS = 30_000;\nexport const RAF_BATCH_COUNT = 3;\nexport const RANDOM_ID_END_INDEX = 11;\nexport const REBUILD_BATCH_DELAY_MS = 10;\nexport const REBUILD_RELOAD_DELAY_MS = 200;\nexport const RECONNECT_INITIAL_DELAY_MS = 500;\nexport const RECONNECT_POLL_INTERVAL_MS = 300;\nexport const SIGINT_EXIT_CODE = 130;\nexport const SIGTERM_EXIT_CODE = 143;\nexport const SVELTE_CSS_LOAD_TIMEOUT_MS = 500;\nexport const TIME_PRECISION = 2;\nexport const TWO_THIRDS = 2 / 3;\nexport const UNFOUND_INDEX = -1;\nexport const WEBSOCKET_NORMAL_CLOSURE = 1000;\n",
|
|
18
|
-
"import { BASE_36_RADIX } from '../constants';\n\nconst ISLAND_TAG_RE = /<Island\\b([\\s\\S]*?)\\/>/g;\n\nconst extractBracedExpression = (text: string, braceStart: number) => {\n\tlet depth = 0;\n\tfor (let index = braceStart; index < text.length; index += 1) {\n\t\tconst char = text[index];\n\t\tif (char === '{') depth += 1;\n\t\tif (char === '}') depth -= 1;\n\t\tif (depth === 0) {\n\t\t\treturn text.slice(braceStart + 1, index).trim();\n\t\t}\n\t}\n\n\treturn null;\n};\n\nconst extractIslandAttribute = (attributeString: string, name: string) => {\n\tconst quotedMatch = attributeString.match(\n\t\tnew RegExp(`\\\\b${name}\\\\s*=\\\\s*[\"']([^\"']+)[\"']`)\n\t);\n\tif (quotedMatch?.[1]) {\n\t\treturn { expression: JSON.stringify(quotedMatch[1]), found: true };\n\t}\n\n\tconst attributeIndex = attributeString.search(\n\t\tnew RegExp(`\\\\b${name}\\\\s*=\\\\s*\\\\{`)\n\t);\n\tif (attributeIndex < 0) {\n\t\treturn { expression: '', found: false };\n\t}\n\n\tconst braceStart = attributeString.indexOf('{', attributeIndex);\n\tif (braceStart < 0) {\n\t\treturn { expression: '', found: false };\n\t}\n\n\tconst expression = extractBracedExpression(attributeString, braceStart);\n\tif (expression === null) {\n\t\treturn { expression: '', found: false };\n\t}\n\n\treturn { expression, found: true };\n};\n\nexport const lowerSvelteIslandSyntax = (\n\tsource: string,\n\t_mode: 'server' | 'client' = 'server'\n) => {\n\tif (!source.includes('<Island')) {\n\t\treturn { code: source, transformed: false };\n\t}\n\n\tlet islandIndex = 0;\n\tconst transformedMarkup = source.replace(\n\t\tISLAND_TAG_RE,\n\t\t(fullMatch, attributeString: string) => {\n\t\t\tconst framework = extractIslandAttribute(\n\t\t\t\tattributeString,\n\t\t\t\t'framework'\n\t\t\t);\n\t\t\tconst component = extractIslandAttribute(\n\t\t\t\tattributeString,\n\t\t\t\t'component'\n\t\t\t);\n\t\t\tif (!framework.found || !component.found) {\n\t\t\t\treturn fullMatch;\n\t\t\t}\n\n\t\t\tconst hydrate = extractIslandAttribute(attributeString, 'hydrate');\n\t\t\tconst props = extractIslandAttribute(attributeString, 'props');\n\t\t\tconst slotId = `absolute-svelte-island-${islandIndex.toString(BASE_36_RADIX)}`;\n\t\t\tislandIndex += 1;\n\n\t\t\tconst resolveExpression = `await __absoluteResolveIslandHtml(${JSON.stringify(\n\t\t\t\tslotId\n\t\t\t)}, { component: ${component.expression}, framework: ${framework.expression}, hydrate: ${\n\t\t\t\thydrate.found ? hydrate.expression : JSON.stringify('load')\n\t\t\t}, props: ${props.found ? props.expression : '{}'} })`;\n\n\t\t\treturn `<div data-absolute-island-slot=\"${slotId}\" style=\"display: contents\">{@html ${resolveExpression}}</div>`;\n\t\t}\n\t);\n\n\tconst importLine =\n\t\t'import { resolveIslandHtml as __absoluteResolveIslandHtml } from \"@absolutejs/absolute/svelte\";';\n\n\tif (transformedMarkup.includes('<script')) {\n\t\treturn {\n\t\t\tcode: transformedMarkup.replace(\n\t\t\t\t/<script(\\s[^>]*)?>/,\n\t\t\t\t(match) => `${match}\\n${importLine}\\n`\n\t\t\t),\n\t\t\ttransformed: true\n\t\t};\n\t}\n\n\treturn {\n\t\tcode: `<script lang=\"ts\">\\n${importLine}\\n</script>\\n${transformedMarkup}`,\n\t\ttransformed: true\n\t};\n};\n",
|
|
19
|
-
"import type { Dirent } from 'node:fs';\nimport { mkdir, readdir } from 'node:fs/promises';\nimport { basename, dirname, extname, join, relative, resolve } from 'node:path';\nimport { lowerSvelteIslandSyntax } from '../svelte/lowerIslandSyntax';\n\nconst serverCacheRoot = join(process.cwd(), '.absolutejs', 'islands', 'svelte');\n\nconst compiledModuleCache = new Map<string, string>();\nconst originalSourcePathCache = new Map<string, string>();\n\nconst transpiler = new Bun.Transpiler({\n\tloader: 'ts',\n\ttarget: 'browser'\n});\n\nconst ensureRelativeImportPath = (from: string, to: string) => {\n\tconst importPath = relative(dirname(from), to).replace(/\\\\/g, '/');\n\n\treturn importPath.startsWith('.') ? importPath : `./${importPath}`;\n};\n\nconst processDirectoryEntries = (\n\tentries: Dirent<string>[],\n\tdir: string,\n\ttargetFileName: string,\n\tstack: string[]\n) => {\n\tfor (const entry of entries) {\n\t\tconst entryPath = join(dir, entry.name);\n\t\tif (entry.isDirectory()) stack.push(entryPath);\n\n\t\tif (entry.isFile() && entry.name === targetFileName) {\n\t\t\treturn entryPath;\n\t\t}\n\t}\n\n\treturn null;\n};\n\nconst searchDirectoryLevel = async (\n\tdirs: string[],\n\ttargetFileName: string\n): Promise<string | null> => {\n\tif (dirs.length === 0) return null;\n\n\tconst nextStack: string[] = [];\n\tconst dirEntries = await Promise.all(\n\t\tdirs.map(async (dir) => ({\n\t\t\tdir,\n\t\t\tentries: await readdir(dir, { encoding: 'utf-8', withFileTypes: true })\n\t\t}))\n\t);\n\n\tfor (const { dir, entries } of dirEntries) {\n\t\tconst found = processDirectoryEntries(entries, dir, targetFileName, nextStack);\n\t\tif (found) return found;\n\t}\n\n\treturn searchDirectoryLevel(nextStack, targetFileName);\n};\n\nconst findSourceFileByBasename = async (\n\tsearchRoot: string,\n\ttargetFileName: string\n) => searchDirectoryLevel([searchRoot], targetFileName);\n\nconst normalizeBuiltSvelteFileName = (sourcePath: string) =>\n\tbasename(sourcePath).replace(/-[a-z0-9]{6,}(?=\\.svelte$)/i, '');\n\nconst resolveOriginalSourcePath = async (sourcePath: string) => {\n\tconst cachedPath = originalSourcePathCache.get(sourcePath);\n\tif (cachedPath !== undefined) {\n\t\treturn cachedPath;\n\t}\n\n\tif (\n\t\t!sourcePath.includes(\n\t\t\t`${join(process.cwd(), 'build')}${process.platform === 'win32' ? '' : '/'}`\n\t\t) &&\n\t\t!sourcePath.includes('/build/')\n\t) {\n\t\toriginalSourcePathCache.set(sourcePath, sourcePath);\n\n\t\treturn sourcePath;\n\t}\n\n\tconst resolvedSourcePath = await findSourceFileByBasename(\n\t\tjoin(process.cwd(), 'src'),\n\t\tnormalizeBuiltSvelteFileName(sourcePath)\n\t);\n\tconst nextPath = resolvedSourcePath ?? sourcePath;\n\toriginalSourcePathCache.set(sourcePath, nextPath);\n\n\treturn nextPath;\n};\n\nconst resolveRelativeModule = async (spec: string, from: string) => {\n\tif (!spec.startsWith('.')) {\n\t\treturn null;\n\t}\n\n\tconst basePath = resolve(dirname(from), spec);\n\tconst candidates = [\n\t\tbasePath,\n\t\t`${basePath}.ts`,\n\t\t`${basePath}.js`,\n\t\t`${basePath}.mjs`,\n\t\t`${basePath}.cjs`,\n\t\t`${basePath}.json`,\n\t\tjoin(basePath, 'index.ts'),\n\t\tjoin(basePath, 'index.js'),\n\t\tjoin(basePath, 'index.mjs'),\n\t\tjoin(basePath, 'index.cjs'),\n\t\tjoin(basePath, 'index.json')\n\t];\n\n\tconst existResults = await Promise.all(\n\t\tcandidates.map((candidate) => Bun.file(candidate).exists())\n\t);\n\tconst foundIndex = existResults.indexOf(true);\n\n\treturn foundIndex >= 0 ? candidates[foundIndex] ?? null : null;\n};\n\nconst getCachedModulePath = (sourcePath: string) => {\n\tconst relativeSourcePath = relative(process.cwd(), sourcePath).replace(\n\t\t/\\\\/g,\n\t\t'/'\n\t);\n\tconst normalizedSourcePath = relativeSourcePath.startsWith('..')\n\t\t? sourcePath.replace(/[:\\\\/]/g, '_')\n\t\t: relativeSourcePath;\n\n\treturn join(serverCacheRoot, `${normalizedSourcePath}.server.js`);\n};\n\nconst resolveSvelteImport = async (spec: string, from: string) => {\n\tif (spec.startsWith('/')) {\n\t\treturn spec;\n\t}\n\n\tif (!spec.startsWith('.')) {\n\t\treturn null;\n\t}\n\n\tconst explicitPath = resolve(dirname(from), spec);\n\tif (extname(explicitPath) === '.svelte') {\n\t\treturn explicitPath;\n\t}\n\n\tconst candidate = `${explicitPath}.svelte`;\n\tif ((await Bun.file(candidate).exists()) === true) {\n\t\treturn candidate;\n\t}\n\n\treturn null;\n};\n\nconst writeIfChanged = async (path: string, content: string) => {\n\tconst targetFile = Bun.file(path);\n\tconst exists = await targetFile.exists();\n\tif (exists) {\n\t\tconst currentContent = await targetFile.text();\n\t\tif (currentContent === content) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\tawait Bun.write(path, content);\n};\n\nexport const compileSvelteServerModule = async (sourcePath: string) => {\n\tconst cachedModulePath = compiledModuleCache.get(sourcePath);\n\tif (cachedModulePath) {\n\t\treturn cachedModulePath;\n\t}\n\n\tconst resolutionSourcePath = await resolveOriginalSourcePath(sourcePath);\n\tconst source = await Bun.file(sourcePath).text();\n\tconst { compile, preprocess } = await import('svelte/compiler');\n\tconst loweredSource = lowerSvelteIslandSyntax(source, 'server');\n\tconst preprocessed = await preprocess(loweredSource.code, {});\n\tlet transpiled =\n\t\tsourcePath.endsWith('.ts') || sourcePath.endsWith('.svelte.ts')\n\t\t\t? transpiler.transformSync(preprocessed.code)\n\t\t\t: preprocessed.code;\n\tconst childImportSpecs = Array.from(\n\t\ttranspiled.matchAll(/from\\s+['\"]([^'\"]+)['\"]/g)\n\t)\n\t\t.map((match) => match[1])\n\t\t.filter((value): value is string => value !== undefined);\n\tconst resolvedChildModules = await Promise.all(\n\t\tchildImportSpecs.map((spec) =>\n\t\t\tresolveSvelteImport(spec, resolutionSourcePath)\n\t\t)\n\t);\n\tconst resolvedModuleImports = await Promise.all(\n\t\tchildImportSpecs.map((spec) =>\n\t\t\tresolveRelativeModule(spec, resolutionSourcePath)\n\t\t)\n\t);\n\tconst childModulePaths = new Map<string, string>();\n\tconst rewrittenModulePaths = new Map<string, string>();\n\n\tconst compiledChildren = await Promise.all(\n\t\tchildImportSpecs.map(async (spec, index) => {\n\t\t\tconst resolvedChild = resolvedChildModules[index];\n\t\t\tif (!spec || !resolvedChild) return null;\n\n\t\t\treturn { compiledPath: await compileSvelteServerModule(resolvedChild), spec };\n\t\t})\n\t);\n\n\tfor (const result of compiledChildren) {\n\t\tif (result) childModulePaths.set(result.spec, result.compiledPath);\n\t}\n\n\tfor (let index = 0; index < childImportSpecs.length; index += 1) {\n\t\tconst spec = childImportSpecs[index];\n\t\tconst resolvedModuleImport = resolvedModuleImports[index];\n\t\tif (!spec || !resolvedModuleImport) continue;\n\t\tif (resolvedChildModules[index]) continue;\n\n\t\trewrittenModulePaths.set(\n\t\t\tspec,\n\t\t\tensureRelativeImportPath(\n\t\t\t\tgetCachedModulePath(sourcePath),\n\t\t\t\tresolvedModuleImport\n\t\t\t)\n\t\t);\n\t}\n\n\tfor (const [spec, resolvedModuleImport] of rewrittenModulePaths) {\n\t\ttranspiled = transpiled.replaceAll(spec, resolvedModuleImport);\n\t}\n\n\tlet compiledCode = compile(transpiled, {\n\t\tcss: 'injected',\n\t\texperimental: {\n\t\t\tasync: loweredSource.transformed\n\t\t},\n\t\tfilename: resolutionSourcePath,\n\t\tgenerate: 'server'\n\t}).js.code;\n\n\tfor (const [spec, compiledChildPath] of childModulePaths) {\n\t\tcompiledCode = compiledCode.replaceAll(\n\t\t\tspec,\n\t\t\tensureRelativeImportPath(\n\t\t\t\tgetCachedModulePath(sourcePath),\n\t\t\t\tcompiledChildPath\n\t\t\t)\n\t\t);\n\t}\n\n\tfor (const [spec, resolvedModuleImport] of rewrittenModulePaths) {\n\t\tcompiledCode = compiledCode.replaceAll(spec, resolvedModuleImport);\n\t}\n\n\tconst compiledModulePath = getCachedModulePath(sourcePath);\n\tawait mkdir(dirname(compiledModulePath), { recursive: true });\n\tawait writeIfChanged(compiledModulePath, compiledCode);\n\tcompiledModuleCache.set(sourcePath, compiledModulePath);\n\n\treturn compiledModulePath;\n};\n",
|
|
20
|
-
"import type { RuntimeIslandRenderProps } from '../../types/island';\nimport { serializeIslandProps } from './islands';\n\ntype IslandMarkerAttributes = {\n\t'data-component': string;\n\t'data-framework': string;\n\t'data-hydrate': string;\n\t'data-island': 'true';\n\t'data-island-id'?: string;\n\t'data-props': string;\n};\n\nexport const getIslandMarkerAttributes = (\n\tprops: RuntimeIslandRenderProps,\n\tislandId?: string\n): IslandMarkerAttributes => ({\n\t'data-component': props.component,\n\t'data-framework': props.framework,\n\t'data-hydrate': props.hydrate ?? 'load',\n\t'data-island': 'true',\n\t...(islandId ? { 'data-island-id': islandId } : {}),\n\t'data-props': serializeIslandProps(props.props)\n});\n\nconst escapeHtmlAttribute = (value: string) =>\n\tvalue\n\t\t.replaceAll('&', '&')\n\t\t.replaceAll('\"', '"')\n\t\t.replaceAll('<', '<')\n\t\t.replaceAll('>', '>');\n\nexport const serializeIslandAttributes = (attributes: Record<string, string>) =>\n\tObject.entries(attributes)\n\t\t.map(([key, value]) => `${key}=\"${escapeHtmlAttribute(value)}\"`)\n\t\t.join(' ');\n",
|
|
21
|
-
"import type {\n\tIslandRegistry,\n\tIslandRegistryInput,\n\tRuntimeIslandRenderProps\n} from '../../types/island';\nimport {\n\trenderAngularIslandToHtml,\n\trenderReactIslandToHtml,\n\trenderSvelteIslandToHtml,\n\trenderVueIslandToHtml\n} from './islandSsr';\nimport { compileSvelteServerModule } from './svelteServerModule';\nimport {\n\tgetIslandMarkerAttributes,\n\tserializeIslandAttributes\n} from './islandMarkupAttributes';\nimport { getIslandBuildReference, getIslandComponent } from './islands';\n\nlet islandSequence = 0;\nconst resolvedServerComponentCache = new Map<unknown, Promise<unknown>>();\nconst resolvedServerBuildComponentCache = new Map<string, Promise<unknown>>();\n\nconst nextIslandId = () => {\n\tislandSequence += 1;\n\n\treturn `island-${islandSequence}`;\n};\n\ntype AngularServerIslandComponent = import('@angular/core').Type<object>;\ntype ReactServerIslandComponent = import('react').ComponentType<\n\tRecord<string, unknown>\n>;\ntype SvelteServerIslandComponent = import('svelte').Component<\n\tRecord<string, unknown>\n>;\ntype VueServerIslandComponent = import('vue').Component<\n\tRecord<string, unknown>\n>;\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null;\n\nconst isReactServerIslandComponent = (\n\tvalue: unknown\n): value is ReactServerIslandComponent => typeof value === 'function';\n\nconst isSvelteServerIslandComponent = (\n\tvalue: unknown\n): value is SvelteServerIslandComponent => typeof value === 'function';\n\nconst isVueServerIslandComponent = (\n\tvalue: unknown\n): value is VueServerIslandComponent =>\n\ttypeof value === 'function' || isRecord(value);\n\nconst isAngularServerIslandComponent = (\n\tvalue: unknown\n): value is AngularServerIslandComponent => typeof value === 'function';\n\nconst resolveBuildReferencePath = (source: string, registryPath: string) =>\n\tsource.startsWith('file://')\n\t\t? new URL(source).pathname\n\t\t: source.startsWith('.')\n\t\t\t? new URL(source, registryPath).pathname\n\t\t\t: source;\n\nconst loadAndCompileServerBuildComponent = async (buildReferencePath: string) => {\n\tconst compiledModulePath =\n\t\tawait compileSvelteServerModule(buildReferencePath);\n\tconst loadedModule = await import(compiledModulePath);\n\n\treturn 'default' in loadedModule ? loadedModule.default : loadedModule;\n};\n\nconst loadServerBuildComponent = async (buildReferencePath: string) => {\n\tconst cachedBuildComponent =\n\t\tresolvedServerBuildComponentCache.get(buildReferencePath);\n\tif (cachedBuildComponent) {\n\t\treturn cachedBuildComponent;\n\t}\n\n\tconst loadPromise = loadAndCompileServerBuildComponent(buildReferencePath);\n\tresolvedServerBuildComponentCache.set(buildReferencePath, loadPromise);\n\n\treturn loadPromise;\n};\n\nconst loadServerImportComponent = async (resolvedComponent: string) => {\n\tconst resolvedModulePath = resolvedComponent.startsWith('.')\n\t\t? new URL(resolvedComponent, import.meta.url).pathname\n\t\t: resolvedComponent;\n\tconst importTarget = resolvedModulePath.endsWith('.svelte')\n\t\t? await compileSvelteServerModule(resolvedModulePath)\n\t\t: resolvedModulePath;\n\tconst loadedModule = await import(importTarget);\n\n\treturn 'default' in loadedModule ? loadedModule.default : loadedModule;\n};\n\nconst resolveIslandComponent = async (component: unknown) => {\n\tconst buildReference = getIslandBuildReference(component);\n\tconst buildReferencePath = buildReference?.source\n\t\t? resolveBuildReferencePath(buildReference.source, import.meta.url)\n\t\t: null;\n\tif (buildReferencePath?.endsWith('.svelte')) {\n\t\treturn loadServerBuildComponent(buildReferencePath);\n\t}\n\n\tconst resolvedComponent = getIslandComponent(component);\n\tif (typeof resolvedComponent !== 'string') {\n\t\treturn resolvedComponent;\n\t}\n\n\treturn loadServerImportComponent(resolvedComponent);\n};\n\nconst resolveServerIslandComponent = async (component: unknown) => {\n\tconst cachedResolvedComponent = resolvedServerComponentCache.get(component);\n\tif (cachedResolvedComponent) {\n\t\treturn cachedResolvedComponent;\n\t}\n\n\tconst resolutionPromise = resolveIslandComponent(component);\n\n\tresolvedServerComponentCache.set(component, resolutionPromise);\n\n\treturn resolutionPromise;\n};\n\nconst resolveReactServerIslandComponent = async (component: unknown) => {\n\tconst resolvedComponent = await resolveServerIslandComponent(component);\n\tif (!isReactServerIslandComponent(resolvedComponent)) {\n\t\tthrow new Error(\n\t\t\t'Resolved React island is not a valid React component.'\n\t\t);\n\t}\n\n\treturn resolvedComponent;\n};\n\nconst resolveSvelteServerIslandComponent = async (component: unknown) => {\n\tconst resolvedComponent = await resolveServerIslandComponent(component);\n\tif (!isSvelteServerIslandComponent(resolvedComponent)) {\n\t\tthrow new Error(\n\t\t\t'Resolved Svelte island is not a valid Svelte component.'\n\t\t);\n\t}\n\n\treturn resolvedComponent;\n};\n\nconst resolveVueServerIslandComponent = async (component: unknown) => {\n\tconst resolvedComponent = await resolveServerIslandComponent(component);\n\tif (!isVueServerIslandComponent(resolvedComponent)) {\n\t\tthrow new Error('Resolved Vue island is not a valid Vue component.');\n\t}\n\n\treturn resolvedComponent;\n};\n\nconst resolveAngularServerIslandComponent = async (component: unknown) => {\n\tconst resolvedComponent = await resolveServerIslandComponent(component);\n\tif (!isAngularServerIslandComponent(resolvedComponent)) {\n\t\tthrow new Error(\n\t\t\t'Resolved Angular island is not a valid Angular component.'\n\t\t);\n\t}\n\n\treturn resolvedComponent;\n};\n\nexport const renderIslandMarkup = async <T extends IslandRegistryInput>(\n\tregistry: IslandRegistry<T> | T,\n\tprops: RuntimeIslandRenderProps\n) => {\n\tconst result = await renderIslandResult(registry, props);\n\n\treturn `<div ${serializeIslandAttributes(result.attributes)}>${result.html}</div>`;\n};\nexport const renderIslandResult = async <T extends IslandRegistryInput>(\n\tregistry: IslandRegistry<T> | T,\n\tprops: RuntimeIslandRenderProps\n) => {\n\tconst islandId = nextIslandId();\n\tconst attributes = getIslandMarkerAttributes(props);\n\n\tif (props.framework === 'react') {\n\t\tconst entry = registry.react?.[props.component];\n\t\tif (!entry) {\n\t\t\tthrow new Error(\n\t\t\t\t`Island component \"${props.component}\" is not registered for framework \"react\".`\n\t\t\t);\n\t\t}\n\t\tconst component = await resolveReactServerIslandComponent(entry);\n\t\tconst html = renderReactIslandToHtml(component, props.props);\n\n\t\treturn { attributes, html };\n\t}\n\n\tif (props.framework === 'svelte') {\n\t\tconst entry = registry.svelte?.[props.component];\n\t\tif (!entry) {\n\t\t\tthrow new Error(\n\t\t\t\t`Island component \"${props.component}\" is not registered for framework \"svelte\".`\n\t\t\t);\n\t\t}\n\t\tconst component = await resolveSvelteServerIslandComponent(entry);\n\t\tconst html = renderSvelteIslandToHtml(component, props.props);\n\n\t\treturn { attributes, html };\n\t}\n\n\tif (props.framework === 'vue') {\n\t\tconst entry = registry.vue?.[props.component];\n\t\tif (!entry) {\n\t\t\tthrow new Error(\n\t\t\t\t`Island component \"${props.component}\" is not registered for framework \"vue\".`\n\t\t\t);\n\t\t}\n\t\tconst component = await resolveVueServerIslandComponent(entry);\n\t\tconst html = await renderVueIslandToHtml(component, props.props);\n\n\t\treturn { attributes, html };\n\t}\n\n\tif (props.framework === 'angular') {\n\t\tconst entry = registry.angular?.[props.component];\n\t\tif (!entry) {\n\t\t\tthrow new Error(\n\t\t\t\t`Island component \"${props.component}\" is not registered for framework \"angular\".`\n\t\t\t);\n\t\t}\n\t\tconst component = await resolveAngularServerIslandComponent(entry);\n\t\tconst html = await renderAngularIslandToHtml(\n\t\t\tcomponent,\n\t\t\tprops.props,\n\t\t\tislandId\n\t\t);\n\n\t\treturn {\n\t\t\tattributes: {\n\t\t\t\t...getIslandMarkerAttributes(props, islandId)\n\t\t\t},\n\t\t\thtml\n\t\t};\n\t}\n\n\tthrow new Error(\n\t\t`Framework \"${props.framework}\" is not implemented in this prototype.`\n\t);\n};\n",
|
|
22
|
-
"export { defineIslandRegistry } from '../core/islands';\nexport { renderIslandMarkup } from '../core/renderIslandMarkup';\nexport { createIslandStore } from '../client/islandStore';\n",
|
|
23
|
-
"const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const api = { setState, getState, getInitialState, subscribe };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = ((createState) => createState ? createStoreImpl(createState) : createStoreImpl);\n\nexport { createStore };\n",
|
|
24
|
-
"const reduxImpl = (reducer, initial) => (set, _get, api) => {\n api.dispatch = (action) => {\n set((state) => reducer(state, action), false, action);\n return action;\n };\n api.dispatchFromDevtools = true;\n return { dispatch: (...args) => api.dispatch(...args), ...initial };\n};\nconst redux = reduxImpl;\n\nconst shouldDispatchFromDevtools = (api) => !!api.dispatchFromDevtools && typeof api.dispatch === \"function\";\nconst trackedConnections = /* @__PURE__ */ new Map();\nconst getTrackedConnectionState = (name) => {\n const api = trackedConnections.get(name);\n if (!api) return {};\n return Object.fromEntries(\n Object.entries(api.stores).map(([key, api2]) => [key, api2.getState()])\n );\n};\nconst extractConnectionInformation = (store, extensionConnector, options) => {\n if (store === void 0) {\n return {\n type: \"untracked\",\n connection: extensionConnector.connect(options)\n };\n }\n const existingConnection = trackedConnections.get(options.name);\n if (existingConnection) {\n return { type: \"tracked\", store, ...existingConnection };\n }\n const newConnection = {\n connection: extensionConnector.connect(options),\n stores: {}\n };\n trackedConnections.set(options.name, newConnection);\n return { type: \"tracked\", store, ...newConnection };\n};\nconst removeStoreFromTrackedConnections = (name, store) => {\n if (store === void 0) return;\n const connectionInfo = trackedConnections.get(name);\n if (!connectionInfo) return;\n delete connectionInfo.stores[store];\n if (Object.keys(connectionInfo.stores).length === 0) {\n trackedConnections.delete(name);\n }\n};\nconst findCallerName = (stack) => {\n var _a, _b;\n if (!stack) return void 0;\n const traceLines = stack.split(\"\\n\");\n const apiSetStateLineIndex = traceLines.findIndex(\n (traceLine) => traceLine.includes(\"api.setState\")\n );\n if (apiSetStateLineIndex < 0) return void 0;\n const callerLine = ((_a = traceLines[apiSetStateLineIndex + 1]) == null ? void 0 : _a.trim()) || \"\";\n return (_b = /.+ (.+) .+/.exec(callerLine)) == null ? void 0 : _b[1];\n};\nconst devtoolsImpl = (fn, devtoolsOptions = {}) => (set, get, api) => {\n const { enabled, anonymousActionType, store, ...options } = devtoolsOptions;\n let extensionConnector;\n try {\n extensionConnector = (enabled != null ? enabled : (import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch (e) {\n }\n if (!extensionConnector) {\n return fn(set, get, api);\n }\n const { connection, ...connectionInformation } = extractConnectionInformation(store, extensionConnector, options);\n let isRecording = true;\n api.setState = ((state, replace, nameOrAction) => {\n const r = set(state, replace);\n if (!isRecording) return r;\n const action = nameOrAction === void 0 ? {\n type: anonymousActionType || findCallerName(new Error().stack) || \"anonymous\"\n } : typeof nameOrAction === \"string\" ? { type: nameOrAction } : nameOrAction;\n if (store === void 0) {\n connection == null ? void 0 : connection.send(action, get());\n return r;\n }\n connection == null ? void 0 : connection.send(\n {\n ...action,\n type: `${store}/${action.type}`\n },\n {\n ...getTrackedConnectionState(options.name),\n [store]: api.getState()\n }\n );\n return r;\n });\n api.devtools = {\n cleanup: () => {\n if (connection && typeof connection.unsubscribe === \"function\") {\n connection.unsubscribe();\n }\n removeStoreFromTrackedConnections(options.name, store);\n }\n };\n const setStateFromDevtools = (...a) => {\n const originalIsRecording = isRecording;\n isRecording = false;\n set(...a);\n isRecording = originalIsRecording;\n };\n const initialState = fn(api.setState, get, api);\n if (connectionInformation.type === \"untracked\") {\n connection == null ? void 0 : connection.init(initialState);\n } else {\n connectionInformation.stores[connectionInformation.store] = api;\n connection == null ? void 0 : connection.init(\n Object.fromEntries(\n Object.entries(connectionInformation.stores).map(([key, store2]) => [\n key,\n key === connectionInformation.store ? initialState : store2.getState()\n ])\n )\n );\n }\n if (shouldDispatchFromDevtools(api)) {\n let didWarnAboutReservedActionType = false;\n const originalDispatch = api.dispatch;\n api.dispatch = (...args) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && args[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n console.warn(\n '[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.'\n );\n didWarnAboutReservedActionType = true;\n }\n originalDispatch(...args);\n };\n }\n connection.subscribe((message) => {\n var _a;\n switch (message.type) {\n case \"ACTION\":\n if (typeof message.payload !== \"string\") {\n console.error(\n \"[zustand devtools middleware] Unsupported action format\"\n );\n return;\n }\n return parseJsonThen(\n message.payload,\n (action) => {\n if (action.type === \"__setState\") {\n if (store === void 0) {\n setStateFromDevtools(action.state);\n return;\n }\n if (Object.keys(action.state).length !== 1) {\n console.error(\n `\n [zustand devtools middleware] Unsupported __setState action format.\n When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),\n and value of this only key should be a state object. Example: { \"type\": \"__setState\", \"state\": { \"abc123Store\": { \"foo\": \"bar\" } } }\n `\n );\n }\n const stateFromDevtools = action.state[store];\n if (stateFromDevtools === void 0 || stateFromDevtools === null) {\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(stateFromDevtools)) {\n setStateFromDevtools(stateFromDevtools);\n }\n return;\n }\n if (shouldDispatchFromDevtools(api)) {\n api.dispatch(action);\n }\n }\n );\n case \"DISPATCH\":\n switch (message.payload.type) {\n case \"RESET\":\n setStateFromDevtools(initialState);\n if (store === void 0) {\n return connection == null ? void 0 : connection.init(api.getState());\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"COMMIT\":\n if (store === void 0) {\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"ROLLBACK\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n setStateFromDevtools(state[store]);\n connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(state[store])) {\n setStateFromDevtools(state[store]);\n }\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState } = message.payload;\n const lastComputedState = (_a = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a.state;\n if (!lastComputedState) return;\n if (store === void 0) {\n setStateFromDevtools(lastComputedState);\n } else {\n setStateFromDevtools(lastComputedState[store]);\n }\n connection == null ? void 0 : connection.send(\n null,\n // FIXME no-any\n nextLiftedState\n );\n return;\n }\n case \"PAUSE_RECORDING\":\n return isRecording = !isRecording;\n }\n return;\n }\n });\n return initialState;\n};\nconst devtools = devtoolsImpl;\nconst parseJsonThen = (stringified, fn) => {\n let parsed;\n try {\n parsed = JSON.parse(stringified);\n } catch (e) {\n console.error(\n \"[zustand devtools middleware] Could not parse the received json\",\n e\n );\n }\n if (parsed !== void 0) fn(parsed);\n};\n\nconst subscribeWithSelectorImpl = (fn) => (set, get, api) => {\n const origSubscribe = api.subscribe;\n api.subscribe = ((selector, optListener, options) => {\n let listener = selector;\n if (optListener) {\n const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;\n let currentSlice = selector(api.getState());\n listener = (state) => {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n optListener(currentSlice = nextSlice, previousSlice);\n }\n };\n if (options == null ? void 0 : options.fireImmediately) {\n optListener(currentSlice, currentSlice);\n }\n }\n return origSubscribe(listener);\n });\n const initialState = fn(set, get, api);\n return initialState;\n};\nconst subscribeWithSelector = subscribeWithSelectorImpl;\n\nfunction combine(initialState, create) {\n return (...args) => Object.assign({}, initialState, create(...args));\n}\n\nfunction createJSONStorage(getStorage, options) {\n let storage;\n try {\n storage = getStorage();\n } catch (e) {\n return;\n }\n const persistStorage = {\n getItem: (name) => {\n var _a;\n const parse = (str2) => {\n if (str2 === null) {\n return null;\n }\n return JSON.parse(str2, options == null ? void 0 : options.reviver);\n };\n const str = (_a = storage.getItem(name)) != null ? _a : null;\n if (str instanceof Promise) {\n return str.then(parse);\n }\n return parse(str);\n },\n setItem: (name, newValue) => storage.setItem(name, JSON.stringify(newValue, options == null ? void 0 : options.replacer)),\n removeItem: (name) => storage.removeItem(name)\n };\n return persistStorage;\n}\nconst toThenable = (fn) => (input) => {\n try {\n const result = fn(input);\n if (result instanceof Promise) {\n return result;\n }\n return {\n then(onFulfilled) {\n return toThenable(onFulfilled)(result);\n },\n catch(_onRejected) {\n return this;\n }\n };\n } catch (e) {\n return {\n then(_onFulfilled) {\n return this;\n },\n catch(onRejected) {\n return toThenable(onRejected)(e);\n }\n };\n }\n};\nconst persistImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n storage: createJSONStorage(() => window.localStorage),\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n let hydrationVersion = 0;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage = options.storage;\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const setItem = () => {\n const state = options.partialize({ ...get() });\n return storage.setItem(options.name, {\n state,\n version: options.version\n });\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n return setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n return setItem();\n },\n get,\n api\n );\n api.getInitialState = () => configResult;\n let stateFromStorage;\n const hydrate = () => {\n var _a, _b;\n if (!storage) return;\n const currentVersion = ++hydrationVersion;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => {\n var _a2;\n return cb((_a2 = get()) != null ? _a2 : configResult);\n });\n const postRehydrationCallback = ((_b = options.onRehydrateStorage) == null ? void 0 : _b.call(options, (_a = get()) != null ? _a : configResult)) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n const migration = options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n );\n if (migration instanceof Promise) {\n return migration.then((result) => [true, result]);\n }\n return [true, migration];\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return [false, deserializedStorageValue.state];\n }\n }\n return [false, void 0];\n }).then((migrationResult) => {\n var _a2;\n if (currentVersion !== hydrationVersion) {\n return;\n }\n const [migrated, migratedState] = migrationResult;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n if (migrated) {\n return setItem();\n }\n }).then(() => {\n if (currentVersion !== hydrationVersion) {\n return;\n }\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(get(), void 0);\n stateFromStorage = get();\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n if (currentVersion !== hydrationVersion) {\n return;\n }\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.storage) {\n storage = newOptions.storage;\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n if (!options.skipHydration) {\n hydrate();\n }\n return stateFromStorage || configResult;\n};\nconst persist = persistImpl;\n\nfunction ssrSafe(config, isSSR = typeof window === \"undefined\") {\n return (set, get, api) => {\n if (!isSSR) {\n return config(set, get, api);\n }\n const ssrSet = () => {\n throw new Error(\"Cannot set state of Zustand store in SSR\");\n };\n api.setState = ssrSet;\n return config(ssrSet, get, api);\n };\n}\n\nexport { combine, createJSONStorage, devtools, persist, redux, subscribeWithSelector, ssrSafe as unstable_ssrSafe };\n",
|
|
25
|
-
"import { createStore, type StateCreator, type StoreApi } from 'zustand/vanilla';\nimport { combine } from 'zustand/middleware';\n\nexport type IslandStoreState = object;\ntype IslandStoreSnapshot = Record<string, unknown>;\ntype IslandStoreShape<\n\tTState extends IslandStoreState,\n\tTActions extends object\n> = Omit<TState, keyof TActions> & TActions;\nexport type IslandStateSnapshot = Record<string, IslandStoreSnapshot>;\ntype AnyIslandStore = StoreApi<object>;\ntype IslandStoreInstance = {\n\tapplyExternalSnapshot: (snapshot: IslandStoreSnapshot) => void;\n\tstore: AnyIslandStore;\n};\n\nconst ABSOLUTE_ISLAND_STATE = '__ABS_ISLAND_STATE__';\nconst ABSOLUTE_ISLAND_STORES = '__ABS_ISLAND_STORES__';\n\ndeclare global {\n\tvar __ABS_ISLAND_STATE__: IslandStateSnapshot | undefined;\n\tvar __ABS_ISLAND_STORES__:\n\t\t| Map<string, Set<IslandStoreInstance>>\n\t\t| undefined;\n}\n\nconst getIslandStoreSnapshot = () => {\n\tglobalThis.__ABS_ISLAND_STATE__ ??= {};\n\n\treturn globalThis.__ABS_ISLAND_STATE__;\n};\n\nconst getIslandStores = () => {\n\tglobalThis.__ABS_ISLAND_STORES__ ??= new Map();\n\n\treturn globalThis.__ABS_ISLAND_STORES__;\n};\n\nconst isSerializableValue = (value: unknown) =>\n\ttypeof value !== 'function' && value !== undefined;\n\nconst toSerializableState = <T extends object>(state: T) =>\n\tObject.fromEntries(\n\t\tObject.entries(state).filter(([, value]) => isSerializableValue(value))\n\t);\n\nconst applySnapshot = <T extends object>(\n\tstore: StoreApi<T>,\n\tsnapshot: IslandStoreSnapshot | undefined\n) => {\n\tif (!snapshot) {\n\t\treturn;\n\t}\n\n\tstore.setState({\n\t\t...store.getState(),\n\t\t...snapshot\n\t});\n};\n\nconst getPeerStores = (\n\tstoreInstances: Set<IslandStoreInstance>,\n\townerStore: AnyIslandStore\n) => [...storeInstances].filter((peer) => peer.store !== ownerStore);\n\nconst syncIslandSnapshot = <\n\tTState extends IslandStoreState,\n\tTActions extends object\n>(\n\tstoreId: string,\n\tstate: IslandStoreShape<TState, TActions>,\n\tstoreInstances: Set<IslandStoreInstance>,\n\townerStore: AnyIslandStore\n) => {\n\tconst nextSnapshot = toSerializableState(state);\n\tgetIslandStoreSnapshot()[storeId] = nextSnapshot;\n\n\tfor (const peerStore of getPeerStores(storeInstances, ownerStore)) {\n\t\tpeerStore.applyExternalSnapshot(nextSnapshot);\n\t}\n};\n\nexport const createIslandStore = <\n\tTState extends IslandStoreState,\n\tTActions extends object\n>(\n\tstoreId: string,\n\tinitialState: TState,\n\tcreateState: StateCreator<TState, [], [], TActions>\n) => {\n\tconst store = createStore(combine(initialState, createState));\n\tconst stores = getIslandStores();\n\tconst storeInstances =\n\t\tstores.get(storeId) ?? new Set<IslandStoreInstance>();\n\tconst initialSnapshot = getIslandStoreSnapshot()[storeId];\n\tapplySnapshot(store, initialSnapshot);\n\tlet isApplyingExternalSnapshot = false;\n\n\tconst applyExternalSnapshot = (snapshot: IslandStoreSnapshot) => {\n\t\tisApplyingExternalSnapshot = true;\n\t\tapplySnapshot(store, snapshot);\n\t};\n\n\tstoreInstances.add({\n\t\tapplyExternalSnapshot,\n\t\tstore\n\t});\n\tstores.set(storeId, storeInstances);\n\n\tsyncIslandSnapshot(storeId, store.getState(), storeInstances, store);\n\tstore.subscribe((state) => {\n\t\tif (isApplyingExternalSnapshot) {\n\t\t\tisApplyingExternalSnapshot = false;\n\n\t\t\treturn;\n\t\t}\n\n\t\tsyncIslandSnapshot(storeId, state, storeInstances, store);\n\t});\n\n\treturn store;\n};\nexport const getIslandStoreServerSnapshot = <\n\tTState extends IslandStoreState,\n\tTSelected\n>(\n\tstore: StoreApi<TState>,\n\tselector: (state: TState) => TSelected\n) => selector(store.getInitialState());\nconst applySnapshotToStoreInstances = (\n\tstoreId: string,\n\tinstances: Set<IslandStoreInstance>,\n\tsnapshot: IslandStateSnapshot\n) => {\n\tfor (const instance of instances) {\n\t\tinstance.applyExternalSnapshot(snapshot[storeId] ?? {});\n\t}\n};\n\nexport const initializeIslandStores = (state: IslandStateSnapshot) => {\n\tconst currentSnapshot = getIslandStoreSnapshot();\n\tconst nextSnapshot = {\n\t\t...state,\n\t\t...currentSnapshot\n\t};\n\n\tglobalThis.__ABS_ISLAND_STATE__ = nextSnapshot;\n\n\tfor (const [storeId, store] of getIslandStores()) {\n\t\tapplySnapshotToStoreInstances(storeId, store, nextSnapshot);\n\t}\n};\nexport const readIslandStore = <TState extends IslandStoreState, TSelected>(\n\tstore: StoreApi<TState>,\n\tselector: (state: TState) => TSelected\n) => selector(store.getState());\nexport const resetIslandStoreForTesting = () => {\n\tdelete globalThis.__ABS_ISLAND_STATE__;\n\tdelete globalThis.__ABS_ISLAND_STORES__;\n};\nexport const subscribeIslandStore = <\n\tTState extends IslandStoreState,\n\tTSelected\n>(\n\tstore: StoreApi<TState>,\n\tselector: (state: TState) => TSelected,\n\tlistener: (value: TSelected) => void\n) => {\n\tlet currentSelection = selector(store.getState());\n\n\treturn store.subscribe((state) => {\n\t\tconst nextSelection = selector(state);\n\t\tif (Object.is(nextSelection, currentSelection)) {\n\t\t\treturn;\n\t\t}\n\n\t\tcurrentSelection = nextSelection;\n\t\tlistener(nextSelection);\n\t});\n};\n\nexport { ABSOLUTE_ISLAND_STATE, ABSOLUTE_ISLAND_STORES };\n"
|
|
26
|
-
],
|
|
27
|
-
"mappings": "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AAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,MAAM,mBAAmB;AAAA,IACzB,IAAI;AAAA,EACN,GAAG;AAAA,IACD,M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",
|
|
28
|
-
"debugId": "1067EC6EEADC8C6864756E2164756E21",
|
|
29
|
-
"names": []
|
|
30
|
-
}
|