6677a2f525ce6b540d149b1e081c4fa7f8d5896d408fcc8d5514727a98198876.json 231 KB

1
  1. {"ast":null,"code":"var _BrowserXhr, _EventManager, _SharedStylesHost, _DomRendererFactory, _DomEventsPlugin, _KeyEventsPlugin, _BrowserModule, _Meta, _Title, _HammerGestureConfig, _HammerGesturesPlugin, _HammerModule, _DomSanitizer, _DomSanitizerImpl;\n/**\n * @license Angular v18.2.12\n * (c) 2010-2024 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { ɵDomAdapter, ɵsetRootDomAdapter, ɵparseCookieValue, ɵgetDOM, isPlatformServer, DOCUMENT, ɵPLATFORM_BROWSER_ID, XhrFactory, CommonModule } from '@angular/common';\nexport { ɵgetDOM } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { ɵglobal, ɵRuntimeError, Injectable, InjectionToken, Inject, APP_ID, CSP_NONCE, PLATFORM_ID, Optional, ViewEncapsulation, RendererStyleFlags2, ɵinternalCreateApplication, ErrorHandler, ɵsetDocument, PLATFORM_INITIALIZER, createPlatformFactory, platformCore, ɵTESTABILITY_GETTER, ɵTESTABILITY, Testability, NgZone, TestabilityRegistry, ɵINJECTOR_SCOPE, RendererFactory2, ApplicationModule, NgModule, SkipSelf, ApplicationRef, ɵConsole, forwardRef, ɵXSS_SECURITY_URL, SecurityContext, ɵallowSanitizationBypassAndThrow, ɵunwrapSafeValue, ɵ_sanitizeUrl, ɵ_sanitizeHtml, ɵbypassSanitizationTrustHtml, ɵbypassSanitizationTrustStyle, ɵbypassSanitizationTrustScript, ɵbypassSanitizationTrustUrl, ɵbypassSanitizationTrustResourceUrl, ɵwithI18nSupport, ɵwithEventReplay, ENVIRONMENT_INITIALIZER, inject, ɵZONELESS_ENABLED, ɵformatRuntimeError, makeEnvironmentProviders, ɵwithDomHydration, Version } from '@angular/core';\nimport { ɵwithHttpTransferCache } from '@angular/common/http';\n\n/**\n * Provides DOM operations in any browser environment.\n *\n * @security Tread carefully! Interacting with the DOM directly is dangerous and\n * can introduce XSS risks.\n */\nclass GenericBrowserDomAdapter extends ɵDomAdapter {\n constructor() {\n super(...arguments);\n this.supportsDOMEvents = true;\n }\n}\n\n/**\n * A `DomAdapter` powered by full browser DOM APIs.\n *\n * @security Tread carefully! Interacting with the DOM directly is dangerous and\n * can introduce XSS risks.\n */\n/* tslint:disable:requireParameterType no-console */\nclass BrowserDomAdapter extends GenericBrowserDomAdapter {\n static makeCurrent() {\n ɵsetRootDomAdapter(new BrowserDomAdapter());\n }\n onAndCancel(el, evt, listener) {\n el.addEventListener(evt, listener);\n return () => {\n el.removeEventListener(evt, listener);\n };\n }\n dispatchEvent(el, evt) {\n el.dispatchEvent(evt);\n }\n remove(node) {\n node.remove();\n }\n createElement(tagName, doc) {\n doc = doc || this.getDefaultDocument();\n return doc.createElement(tagName);\n }\n createHtmlDocument() {\n return document.implementation.createHTMLDocument('fakeTitle');\n }\n getDefaultDocument() {\n return document;\n }\n isElementNode(node) {\n return node.nodeType === Node.ELEMENT_NODE;\n }\n isShadowRoot(node) {\n return node instanceof DocumentFragment;\n }\n /** @deprecated No longer being used in Ivy code. To be removed in version 14. */\n getGlobalEventTarget(doc, target) {\n if (target === 'window') {\n return window;\n }\n if (target === 'document') {\n return doc;\n }\n if (target === 'body') {\n return doc.body;\n }\n return null;\n }\n getBaseHref(doc) {\n const href = getBaseElementHref();\n return href == null ? null : relativePath(href);\n }\n resetBaseElement() {\n baseElement = null;\n }\n getUserAgent() {\n return window.navigator.userAgent;\n }\n getCookie(name) {\n return ɵparseCookieValue(document.cookie, name);\n }\n}\nlet baseElement = null;\nfunction getBaseElementHref() {\n baseElement = baseElement || document.querySelector('base');\n return baseElement ? baseElement.getAttribute('href') : null;\n}\nfunction relativePath(url) {\n // The base URL doesn't really matter, we just need it so relative paths have something\n // to resolve against. In the browser `HTMLBaseElement.href` is always absolute.\n return new URL(url, document.baseURI).pathname;\n}\nclass BrowserGetTestability {\n addToWindow(registry) {\n ɵglobal['getAngularTestability'] = (elem, findInAncestors = true) => {\n const testability = registry.findTestabilityInTree(elem, findInAncestors);\n if (testability == null) {\n throw new ɵRuntimeError(5103 /* RuntimeErrorCode.TESTABILITY_NOT_FOUND */, (typeof ngDevMode === 'undefined' || ngDevMode) && 'Could not find testability for element.');\n }\n return testability;\n };\n ɵglobal['getAllAngularTestabilities'] = () => registry.getAllTestabilities();\n ɵglobal['getAllAngularRootElements'] = () => registry.getAllRootElements();\n const whenAllStable = callback => {\n const testabilities = ɵglobal['getAllAngularTestabilities']();\n let count = testabilities.length;\n const decrement = function () {\n count--;\n if (count == 0) {\n callback();\n }\n };\n testabilities.forEach(testability => {\n testability.whenStable(decrement);\n });\n };\n if (!ɵglobal['frameworkStabilizers']) {\n ɵglobal['frameworkStabilizers'] = [];\n }\n ɵglobal['frameworkStabilizers'].push(whenAllStable);\n }\n findTestabilityInTree(registry, elem, findInAncestors) {\n if (elem == null) {\n return null;\n }\n const t = registry.getTestability(elem);\n if (t != null) {\n return t;\n } else if (!findInAncestors) {\n return null;\n }\n if (ɵgetDOM().isShadowRoot(elem)) {\n return this.findTestabilityInTree(registry, elem.host, true);\n }\n return this.findTestabilityInTree(registry, elem.parentElement, true);\n }\n}\n\n/**\n * A factory for `HttpXhrBackend` that uses the `XMLHttpRequest` browser API.\n */\nclass BrowserXhr {\n build() {\n return new XMLHttpRequest();\n }\n}\n_BrowserXhr = BrowserXhr;\n_BrowserXhr.ɵfac = function _BrowserXhr_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || _BrowserXhr)();\n};\n_BrowserXhr.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: _BrowserXhr,\n factory: _BrowserXhr.ɵfac\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(BrowserXhr, [{\n type: Injectable\n }], null, null);\n})();\n\n/**\n * The injection token for plugins of the `EventManager` service.\n *\n * @publicApi\n */\nconst EVENT_MANAGER_PLUGINS = new InjectionToken(ngDevMode ? 'EventManagerPlugins' : '');\n/**\n * An injectable service that provides event management for Angular\n * through a browser plug-in.\n *\n * @publicApi\n */\nclass EventManager {\n /**\n * Initializes an instance of the event-manager service.\n */\n constructor(plugins, _zone) {\n this._zone = _zone;\n this._eventNameToPlugin = new Map();\n plugins.forEach(plugin => {\n plugin.manager = this;\n });\n this._plugins = plugins.slice().reverse();\n }\n /**\n * Registers a handler for a specific element and event.\n *\n * @param element The HTML element to receive event notifications.\n * @param eventName The name of the event to listen for.\n * @param handler A function to call when the notification occurs. Receives the\n * event object as an argument.\n * @returns A callback function that can be used to remove the handler.\n */\n addEventListener(element, eventName, handler) {\n const plugin = this._findPluginFor(eventName);\n return plugin.addEventListener(element, eventName, handler);\n }\n /**\n * Retrieves the compilation zone in which event listeners are registered.\n */\n getZone() {\n return this._zone;\n }\n /** @internal */\n _findPluginFor(eventName) {\n let plugin = this._eventNameToPlugin.get(eventName);\n if (plugin) {\n return plugin;\n }\n const plugins = this._plugins;\n plugin = plugins.find(plugin => plugin.supports(eventName));\n if (!plugin) {\n throw new ɵRuntimeError(5101 /* RuntimeErrorCode.NO_PLUGIN_FOR_EVENT */, (typeof ngDevMode === 'undefined' || ngDevMode) && `No event manager plugin found for event ${eventName}`);\n }\n this._eventNameToPlugin.set(eventName, plugin);\n return plugin;\n }\n}\n_EventManager = EventManager;\n_EventManager.ɵfac = function _EventManager_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || _EventManager)(i0.ɵɵinject(EVENT_MANAGER_PLUGINS), i0.ɵɵinject(i0.NgZone));\n};\n_EventManager.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: _EventManager,\n factory: _EventManager.ɵfac\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(EventManager, [{\n type: Injectable\n }], () => [{\n type: undefined,\n decorators: [{\n type: Inject,\n args: [EVENT_MANAGER_PLUGINS]\n }]\n }, {\n type: i0.NgZone\n }], null);\n})();\n/**\n * The plugin definition for the `EventManager` class\n *\n * It can be used as a base class to create custom manager plugins, i.e. you can create your own\n * class that extends the `EventManagerPlugin` one.\n *\n * @publicApi\n */\nclass EventManagerPlugin {\n // TODO: remove (has some usage in G3)\n constructor(_doc) {\n this._doc = _doc;\n }\n}\n\n/** The style elements attribute name used to set value of `APP_ID` token. */\nconst APP_ID_ATTRIBUTE_NAME = 'ng-app-id';\nclass SharedStylesHost {\n constructor(doc, appId, nonce, platformId = {}) {\n this.doc = doc;\n this.appId = appId;\n this.nonce = nonce;\n this.platformId = platformId;\n // Maps all registered host nodes to a list of style nodes that have been added to the host node.\n this.styleRef = new Map();\n this.hostNodes = new Set();\n this.styleNodesInDOM = this.collectServerRenderedStyles();\n this.platformIsServer = isPlatformServer(platformId);\n this.resetHostNodes();\n }\n addStyles(styles) {\n for (const style of styles) {\n const usageCount = this.changeUsageCount(style, 1);\n if (usageCount === 1) {\n this.onStyleAdded(style);\n }\n }\n }\n removeStyles(styles) {\n for (const style of styles) {\n const usageCount = this.changeUsageCount(style, -1);\n if (usageCount <= 0) {\n this.onStyleRemoved(style);\n }\n }\n }\n ngOnDestroy() {\n const styleNodesInDOM = this.styleNodesInDOM;\n if (styleNodesInDOM) {\n styleNodesInDOM.forEach(node => node.remove());\n styleNodesInDOM.clear();\n }\n for (const style of this.getAllStyles()) {\n this.onStyleRemoved(style);\n }\n this.resetHostNodes();\n }\n addHost(hostNode) {\n this.hostNodes.add(hostNode);\n for (const style of this.getAllStyles()) {\n this.addStyleToHost(hostNode, style);\n }\n }\n removeHost(hostNode) {\n this.hostNodes.delete(hostNode);\n }\n getAllStyles() {\n return this.styleRef.keys();\n }\n onStyleAdded(style) {\n for (const host of this.hostNodes) {\n this.addStyleToHost(host, style);\n }\n }\n onStyleRemoved(style) {\n var _styleRef$get;\n const styleRef = this.styleRef;\n (_styleRef$get = styleRef.get(style)) === null || _styleRef$get === void 0 || (_styleRef$get = _styleRef$get.elements) === null || _styleRef$get === void 0 || _styleRef$get.forEach(node => node.remove());\n styleRef.delete(style);\n }\n collectServerRenderedStyles() {\n var _this$doc$head;\n const styles = (_this$doc$head = this.doc.head) === null || _this$doc$head === void 0 ? void 0 : _this$doc$head.querySelectorAll(`style[${APP_ID_ATTRIBUTE_NAME}=\"${this.appId}\"]`);\n if (styles !== null && styles !== void 0 && styles.length) {\n const styleMap = new Map();\n styles.forEach(style => {\n if (style.textContent != null) {\n styleMap.set(style.textContent, style);\n }\n });\n return styleMap;\n }\n return null;\n }\n changeUsageCount(style, delta) {\n const map = this.styleRef;\n if (map.has(style)) {\n const styleRefValue = map.get(style);\n styleRefValue.usage += delta;\n return styleRefValue.usage;\n }\n map.set(style, {\n usage: delta,\n elements: []\n });\n return delta;\n }\n getStyleElement(host, style) {\n const styleNodesInDOM = this.styleNodesInDOM;\n const styleEl = styleNodesInDOM === null || styleNodesInDOM === void 0 ? void 0 : styleNodesInDOM.get(style);\n if ((styleEl === null || styleEl === void 0 ? void 0 : styleEl.parentNode) === host) {\n // `styleNodesInDOM` cannot be undefined due to the above `styleNodesInDOM?.get`.\n styleNodesInDOM.delete(style);\n styleEl.removeAttribute(APP_ID_ATTRIBUTE_NAME);\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // This attribute is solely used for debugging purposes.\n styleEl.setAttribute('ng-style-reused', '');\n }\n return styleEl;\n } else {\n const styleEl = this.doc.createElement('style');\n if (this.nonce) {\n styleEl.setAttribute('nonce', this.nonce);\n }\n styleEl.textContent = style;\n if (this.platformIsServer) {\n styleEl.setAttribute(APP_ID_ATTRIBUTE_NAME, this.appId);\n }\n host.appendChild(styleEl);\n return styleEl;\n }\n }\n addStyleToHost(host, style) {\n var _styleRef$get2;\n const styleEl = this.getStyleElement(host, style);\n const styleRef = this.styleRef;\n const styleElRef = (_styleRef$get2 = styleRef.get(style)) === null || _styleRef$get2 === void 0 ? void 0 : _styleRef$get2.elements;\n if (styleElRef) {\n styleElRef.push(styleEl);\n } else {\n styleRef.set(style, {\n elements: [styleEl],\n usage: 1\n });\n }\n }\n resetHostNodes() {\n const hostNodes = this.hostNodes;\n hostNodes.clear();\n // Re-add the head element back since this is the default host.\n hostNodes.add(this.doc.head);\n }\n}\n_SharedStylesHost = SharedStylesHost;\n_SharedStylesHost.ɵfac = function _SharedStylesHost_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || _SharedStylesHost)(i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(APP_ID), i0.ɵɵinject(CSP_NONCE, 8), i0.ɵɵinject(PLATFORM_ID));\n};\n_SharedStylesHost.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: _SharedStylesHost,\n factory: _SharedStylesHost.ɵfac\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(SharedStylesHost, [{\n type: Injectable\n }], () => [{\n type: Document,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [APP_ID]\n }]\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [CSP_NONCE]\n }, {\n type: Optional\n }]\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }]\n }], null);\n})();\nconst NAMESPACE_URIS = {\n 'svg': 'http://www.w3.org/2000/svg',\n 'xhtml': 'http://www.w3.org/1999/xhtml',\n 'xlink': 'http://www.w3.org/1999/xlink',\n 'xml': 'http://www.w3.org/XML/1998/namespace',\n 'xmlns': 'http://www.w3.org/2000/xmlns/',\n 'math': 'http://www.w3.org/1998/Math/MathML'\n};\nconst COMPONENT_REGEX = /%COMP%/g;\nconst COMPONENT_VARIABLE = '%COMP%';\nconst HOST_ATTR = `_nghost-${COMPONENT_VARIABLE}`;\nconst CONTENT_ATTR = `_ngcontent-${COMPONENT_VARIABLE}`;\n/**\n * The default value for the `REMOVE_STYLES_ON_COMPONENT_DESTROY` DI token.\n */\nconst REMOVE_STYLES_ON_COMPONENT_DESTROY_DEFAULT = true;\n/**\n * A DI token that indicates whether styles\n * of destroyed components should be removed from DOM.\n *\n * By default, the value is set to `true`.\n * @publicApi\n */\nconst REMOVE_STYLES_ON_COMPONENT_DESTROY = new InjectionToken(ngDevMode ? 'RemoveStylesOnCompDestroy' : '', {\n providedIn: 'root',\n factory: () => REMOVE_STYLES_ON_COMPONENT_DESTROY_DEFAULT\n});\nfunction shimContentAttribute(componentShortId) {\n return CONTENT_ATTR.replace(COMPONENT_REGEX, componentShortId);\n}\nfunction shimHostAttribute(componentShortId) {\n return HOST_ATTR.replace(COMPONENT_REGEX, componentShortId);\n}\nfunction shimStylesContent(compId, styles) {\n return styles.map(s => s.replace(COMPONENT_REGEX, compId));\n}\nclass DomRendererFactory2 {\n constructor(eventManager, sharedStylesHost, appId, removeStylesOnCompDestroy, doc, platformId, ngZone, nonce = null) {\n this.eventManager = eventManager;\n this.sharedStylesHost = sharedStylesHost;\n this.appId = appId;\n this.removeStylesOnCompDestroy = removeStylesOnCompDestroy;\n this.doc = doc;\n this.platformId = platformId;\n this.ngZone = ngZone;\n this.nonce = nonce;\n this.rendererByCompId = new Map();\n this.platformIsServer = isPlatformServer(platformId);\n this.defaultRenderer = new DefaultDomRenderer2(eventManager, doc, ngZone, this.platformIsServer);\n }\n createRenderer(element, type) {\n if (!element || !type) {\n return this.defaultRenderer;\n }\n if (this.platformIsServer && type.encapsulation === ViewEncapsulation.ShadowDom) {\n // Domino does not support shadow DOM.\n type = {\n ...type,\n encapsulation: ViewEncapsulation.Emulated\n };\n }\n const renderer = this.getOrCreateRenderer(element, type);\n // Renderers have different logic due to different encapsulation behaviours.\n // Ex: for emulated, an attribute is added to the element.\n if (renderer instanceof EmulatedEncapsulationDomRenderer2) {\n renderer.applyToHost(element);\n } else if (renderer instanceof NoneEncapsulationDomRenderer) {\n renderer.applyStyles();\n }\n return renderer;\n }\n getOrCreateRenderer(element, type) {\n const rendererByCompId = this.rendererByCompId;\n let renderer = rendererByCompId.get(type.id);\n if (!renderer) {\n const doc = this.doc;\n const ngZone = this.ngZone;\n const eventManager = this.eventManager;\n const sharedStylesHost = this.sharedStylesHost;\n const removeStylesOnCompDestroy = this.removeStylesOnCompDestroy;\n const platformIsServer = this.platformIsServer;\n switch (type.encapsulation) {\n case ViewEncapsulation.Emulated:\n renderer = new EmulatedEncapsulationDomRenderer2(eventManager, sharedStylesHost, type, this.appId, removeStylesOnCompDestroy, doc, ngZone, platformIsServer);\n break;\n case ViewEncapsulation.ShadowDom:\n return new ShadowDomRenderer(eventManager, sharedStylesHost, element, type, doc, ngZone, this.nonce, platformIsServer);\n default:\n renderer = new NoneEncapsulationDomRenderer(eventManager, sharedStylesHost, type, removeStylesOnCompDestroy, doc, ngZone, platformIsServer);\n break;\n }\n rendererByCompId.set(type.id, renderer);\n }\n return renderer;\n }\n ngOnDestroy() {\n this.rendererByCompId.clear();\n }\n}\n_DomRendererFactory = DomRendererFactory2;\n_DomRendererFactory.ɵfac = function _DomRendererFactory_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || _DomRendererFactory)(i0.ɵɵinject(EventManager), i0.ɵɵinject(SharedStylesHost), i0.ɵɵinject(APP_ID), i0.ɵɵinject(REMOVE_STYLES_ON_COMPONENT_DESTROY), i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(PLATFORM_ID), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(CSP_NONCE));\n};\n_DomRendererFactory.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: _DomRendererFactory,\n factory: _DomRendererFactory.ɵfac\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DomRendererFactory2, [{\n type: Injectable\n }], () => [{\n type: EventManager\n }, {\n type: SharedStylesHost\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [APP_ID]\n }]\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [REMOVE_STYLES_ON_COMPONENT_DESTROY]\n }]\n }, {\n type: Document,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }, {\n type: Object,\n decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }]\n }, {\n type: i0.NgZone\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [CSP_NONCE]\n }]\n }], null);\n})();\nclass DefaultDomRenderer2 {\n constructor(eventManager, doc, ngZone, platformIsServer) {\n this.eventManager = eventManager;\n this.doc = doc;\n this.ngZone = ngZone;\n this.platformIsServer = platformIsServer;\n this.data = Object.create(null);\n /**\n * By default this renderer throws when encountering synthetic properties\n * This can be disabled for example by the AsyncAnimationRendererFactory\n */\n this.throwOnSyntheticProps = true;\n this.destroyNode = null;\n }\n destroy() {}\n createElement(name, namespace) {\n if (namespace) {\n // TODO: `|| namespace` was added in\n // https://github.com/angular/angular/commit/2b9cc8503d48173492c29f5a271b61126104fbdb to\n // support how Ivy passed around the namespace URI rather than short name at the time. It did\n // not, however extend the support to other parts of the system (setAttribute, setAttribute,\n // and the ServerRenderer). We should decide what exactly the semantics for dealing with\n // namespaces should be and make it consistent.\n // Related issues:\n // https://github.com/angular/angular/issues/44028\n // https://github.com/angular/angular/issues/44883\n return this.doc.createElementNS(NAMESPACE_URIS[namespace] || namespace, name);\n }\n return this.doc.createElement(name);\n }\n createComment(value) {\n return this.doc.createComment(value);\n }\n createText(value) {\n return this.doc.createTextNode(value);\n }\n appendChild(parent, newChild) {\n const targetParent = isTemplateNode(parent) ? parent.content : parent;\n targetParent.appendChild(newChild);\n }\n insertBefore(parent, newChild, refChild) {\n if (parent) {\n const targetParent = isTemplateNode(parent) ? parent.content : parent;\n targetParent.insertBefore(newChild, refChild);\n }\n }\n removeChild(_parent, oldChild) {\n oldChild.remove();\n }\n selectRootElement(selectorOrNode, preserveContent) {\n let el = typeof selectorOrNode === 'string' ? this.doc.querySelector(selectorOrNode) : selectorOrNode;\n if (!el) {\n throw new ɵRuntimeError(-5104 /* RuntimeErrorCode.ROOT_NODE_NOT_FOUND */, (typeof ngDevMode === 'undefined' || ngDevMode) && `The selector \"${selectorOrNode}\" did not match any elements`);\n }\n if (!preserveContent) {\n el.textContent = '';\n }\n return el;\n }\n parentNode(node) {\n return node.parentNode;\n }\n nextSibling(node) {\n return node.nextSibling;\n }\n setAttribute(el, name, value, namespace) {\n if (namespace) {\n name = namespace + ':' + name;\n const namespaceUri = NAMESPACE_URIS[namespace];\n if (namespaceUri) {\n el.setAttributeNS(namespaceUri, name, value);\n } else {\n el.setAttribute(name, value);\n }\n } else {\n el.setAttribute(name, value);\n }\n }\n removeAttribute(el, name, namespace) {\n if (namespace) {\n const namespaceUri = NAMESPACE_URIS[namespace];\n if (namespaceUri) {\n el.removeAttributeNS(namespaceUri, name);\n } else {\n el.removeAttribute(`${namespace}:${name}`);\n }\n } else {\n el.removeAttribute(name);\n }\n }\n addClass(el, name) {\n el.classList.add(name);\n }\n removeClass(el, name) {\n el.classList.remove(name);\n }\n setStyle(el, style, value, flags) {\n if (flags & (RendererStyleFlags2.DashCase | RendererStyleFlags2.Important)) {\n el.style.setProperty(style, value, flags & RendererStyleFlags2.Important ? 'important' : '');\n } else {\n el.style[style] = value;\n }\n }\n removeStyle(el, style, flags) {\n if (flags & RendererStyleFlags2.DashCase) {\n // removeProperty has no effect when used on camelCased properties.\n el.style.removeProperty(style);\n } else {\n el.style[style] = '';\n }\n }\n setProperty(el, name, value) {\n if (el == null) {\n return;\n }\n (typeof ngDevMode === 'undefined' || ngDevMode) && this.throwOnSyntheticProps && checkNoSyntheticProp(name, 'property');\n el[name] = value;\n }\n setValue(node, value) {\n node.nodeValue = value;\n }\n listen(target, event, callback) {\n (typeof ngDevMode === 'undefined' || ngDevMode) && this.throwOnSyntheticProps && checkNoSyntheticProp(event, 'listener');\n if (typeof target === 'string') {\n target = ɵgetDOM().getGlobalEventTarget(this.doc, target);\n if (!target) {\n throw new Error(`Unsupported event target ${target} for event ${event}`);\n }\n }\n return this.eventManager.addEventListener(target, event, this.decoratePreventDefault(callback));\n }\n decoratePreventDefault(eventHandler) {\n // `DebugNode.triggerEventHandler` needs to know if the listener was created with\n // decoratePreventDefault or is a listener added outside the Angular context so it can handle\n // the two differently. In the first case, the special '__ngUnwrap__' token is passed to the\n // unwrap the listener (see below).\n return event => {\n // Ivy uses '__ngUnwrap__' as a special token that allows us to unwrap the function\n // so that it can be invoked programmatically by `DebugNode.triggerEventHandler`. The\n // debug_node can inspect the listener toString contents for the existence of this special\n // token. Because the token is a string literal, it is ensured to not be modified by compiled\n // code.\n if (event === '__ngUnwrap__') {\n return eventHandler;\n }\n // Run the event handler inside the ngZone because event handlers are not patched\n // by Zone on the server. This is required only for tests.\n const allowDefaultBehavior = this.platformIsServer ? this.ngZone.runGuarded(() => eventHandler(event)) : eventHandler(event);\n if (allowDefaultBehavior === false) {\n event.preventDefault();\n }\n return undefined;\n };\n }\n}\nconst AT_CHARCODE = (() => '@'.charCodeAt(0))();\nfunction checkNoSyntheticProp(name, nameKind) {\n if (name.charCodeAt(0) === AT_CHARCODE) {\n throw new ɵRuntimeError(5105 /* RuntimeErrorCode.UNEXPECTED_SYNTHETIC_PROPERTY */, `Unexpected synthetic ${nameKind} ${name} found. Please make sure that:\n - Either \\`BrowserAnimationsModule\\` or \\`NoopAnimationsModule\\` are imported in your application.\n - There is corresponding configuration for the animation named \\`${name}\\` defined in the \\`animations\\` field of the \\`@Component\\` decorator (see https://angular.io/api/core/Component#animations).`);\n }\n}\nfunction isTemplateNode(node) {\n return node.tagName === 'TEMPLATE' && node.content !== undefined;\n}\nclass ShadowDomRenderer extends DefaultDomRenderer2 {\n constructor(eventManager, sharedStylesHost, hostEl, component, doc, ngZone, nonce, platformIsServer) {\n super(eventManager, doc, ngZone, platformIsServer);\n this.sharedStylesHost = sharedStylesHost;\n this.hostEl = hostEl;\n this.shadowRoot = hostEl.attachShadow({\n mode: 'open'\n });\n this.sharedStylesHost.addHost(this.shadowRoot);\n const styles = shimStylesContent(component.id, component.styles);\n for (const style of styles) {\n const styleEl = document.createElement('style');\n if (nonce) {\n styleEl.setAttribute('nonce', nonce);\n }\n styleEl.textContent = style;\n this.shadowRoot.appendChild(styleEl);\n }\n }\n nodeOrShadowRoot(node) {\n return node === this.hostEl ? this.shadowRoot : node;\n }\n appendChild(parent, newChild) {\n return super.appendChild(this.nodeOrShadowRoot(parent), newChild);\n }\n insertBefore(parent, newChild, refChild) {\n return super.insertBefore(this.nodeOrShadowRoot(parent), newChild, refChild);\n }\n removeChild(_parent, oldChild) {\n return super.removeChild(null, oldChild);\n }\n parentNode(node) {\n return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(node)));\n }\n destroy() {\n this.sharedStylesHost.removeHost(this.shadowRoot);\n }\n}\nclass NoneEncapsulationDomRenderer extends DefaultDomRenderer2 {\n constructor(eventManager, sharedStylesHost, component, removeStylesOnCompDestroy, doc, ngZone, platformIsServer, compId) {\n super(eventManager, doc, ngZone, platformIsServer);\n this.sharedStylesHost = sharedStylesHost;\n this.removeStylesOnCompDestroy = removeStylesOnCompDestroy;\n this.styles = compId ? shimStylesContent(compId, component.styles) : component.styles;\n }\n applyStyles() {\n this.sharedStylesHost.addStyles(this.styles);\n }\n destroy() {\n if (!this.removeStylesOnCompDestroy) {\n return;\n }\n this.sharedStylesHost.removeStyles(this.styles);\n }\n}\nclass EmulatedEncapsulationDomRenderer2 extends NoneEncapsulationDomRenderer {\n constructor(eventManager, sharedStylesHost, component, appId, removeStylesOnCompDestroy, doc, ngZone, platformIsServer) {\n const compId = appId + '-' + component.id;\n super(eventManager, sharedStylesHost, component, removeStylesOnCompDestroy, doc, ngZone, platformIsServer, compId);\n this.contentAttr = shimContentAttribute(compId);\n this.hostAttr = shimHostAttribute(compId);\n }\n applyToHost(element) {\n this.applyStyles();\n this.setAttribute(element, this.hostAttr, '');\n }\n createElement(parent, name) {\n const el = super.createElement(parent, name);\n super.setAttribute(el, this.contentAttr, '');\n return el;\n }\n}\nclass DomEventsPlugin extends EventManagerPlugin {\n constructor(doc) {\n super(doc);\n }\n // This plugin should come last in the list of plugins, because it accepts all\n // events.\n supports(eventName) {\n return true;\n }\n addEventListener(element, eventName, handler) {\n element.addEventListener(eventName, handler, false);\n return () => this.removeEventListener(element, eventName, handler);\n }\n removeEventListener(target, eventName, callback) {\n return target.removeEventListener(eventName, callback);\n }\n}\n_DomEventsPlugin = DomEventsPlugin;\n_DomEventsPlugin.ɵfac = function _DomEventsPlugin_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || _DomEventsPlugin)(i0.ɵɵinject(DOCUMENT));\n};\n_DomEventsPlugin.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: _DomEventsPlugin,\n factory: _DomEventsPlugin.ɵfac\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DomEventsPlugin, [{\n type: Injectable\n }], () => [{\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }], null);\n})();\n\n/**\n * Defines supported modifiers for key events.\n */\nconst MODIFIER_KEYS = ['alt', 'control', 'meta', 'shift'];\n// The following values are here for cross-browser compatibility and to match the W3C standard\n// cf https://www.w3.org/TR/DOM-Level-3-Events-key/\nconst _keyMap = {\n '\\b': 'Backspace',\n '\\t': 'Tab',\n '\\x7F': 'Delete',\n '\\x1B': 'Escape',\n 'Del': 'Delete',\n 'Esc': 'Escape',\n 'Left': 'ArrowLeft',\n 'Right': 'ArrowRight',\n 'Up': 'ArrowUp',\n 'Down': 'ArrowDown',\n 'Menu': 'ContextMenu',\n 'Scroll': 'ScrollLock',\n 'Win': 'OS'\n};\n/**\n * Retrieves modifiers from key-event objects.\n */\nconst MODIFIER_KEY_GETTERS = {\n 'alt': event => event.altKey,\n 'control': event => event.ctrlKey,\n 'meta': event => event.metaKey,\n 'shift': event => event.shiftKey\n};\n/**\n * A browser plug-in that provides support for handling of key events in Angular.\n */\nclass KeyEventsPlugin extends EventManagerPlugin {\n /**\n * Initializes an instance of the browser plug-in.\n * @param doc The document in which key events will be detected.\n */\n constructor(doc) {\n super(doc);\n }\n /**\n * Reports whether a named key event is supported.\n * @param eventName The event name to query.\n * @return True if the named key event is supported.\n */\n supports(eventName) {\n return KeyEventsPlugin.parseEventName(eventName) != null;\n }\n /**\n * Registers a handler for a specific element and key event.\n * @param element The HTML element to receive event notifications.\n * @param eventName The name of the key event to listen for.\n * @param handler A function to call when the notification occurs. Receives the\n * event object as an argument.\n * @returns The key event that was registered.\n */\n addEventListener(element, eventName, handler) {\n const parsedEvent = KeyEventsPlugin.parseEventName(eventName);\n const outsideHandler = KeyEventsPlugin.eventCallback(parsedEvent['fullKey'], handler, this.manager.getZone());\n return this.manager.getZone().runOutsideAngular(() => {\n return ɵgetDOM().onAndCancel(element, parsedEvent['domEventName'], outsideHandler);\n });\n }\n /**\n * Parses the user provided full keyboard event definition and normalizes it for\n * later internal use. It ensures the string is all lowercase, converts special\n * characters to a standard spelling, and orders all the values consistently.\n *\n * @param eventName The name of the key event to listen for.\n * @returns an object with the full, normalized string, and the dom event name\n * or null in the case when the event doesn't match a keyboard event.\n */\n static parseEventName(eventName) {\n const parts = eventName.toLowerCase().split('.');\n const domEventName = parts.shift();\n if (parts.length === 0 || !(domEventName === 'keydown' || domEventName === 'keyup')) {\n return null;\n }\n const key = KeyEventsPlugin._normalizeKey(parts.pop());\n let fullKey = '';\n let codeIX = parts.indexOf('code');\n if (codeIX > -1) {\n parts.splice(codeIX, 1);\n fullKey = 'code.';\n }\n MODIFIER_KEYS.forEach(modifierName => {\n const index = parts.indexOf(modifierName);\n if (index > -1) {\n parts.splice(index, 1);\n fullKey += modifierName + '.';\n }\n });\n fullKey += key;\n if (parts.length != 0 || key.length === 0) {\n // returning null instead of throwing to let another plugin process the event\n return null;\n }\n // NOTE: Please don't rewrite this as so, as it will break JSCompiler property renaming.\n // The code must remain in the `result['domEventName']` form.\n // return {domEventName, fullKey};\n const result = {};\n result['domEventName'] = domEventName;\n result['fullKey'] = fullKey;\n return result;\n }\n /**\n * Determines whether the actual keys pressed match the configured key code string.\n * The `fullKeyCode` event is normalized in the `parseEventName` method when the\n * event is attached to the DOM during the `addEventListener` call. This is unseen\n * by the end user and is normalized for internal consistency and parsing.\n *\n * @param event The keyboard event.\n * @param fullKeyCode The normalized user defined expected key event string\n * @returns boolean.\n */\n static matchEventFullKeyCode(event, fullKeyCode) {\n let keycode = _keyMap[event.key] || event.key;\n let key = '';\n if (fullKeyCode.indexOf('code.') > -1) {\n keycode = event.code;\n key = 'code.';\n }\n // the keycode could be unidentified so we have to check here\n if (keycode == null || !keycode) return false;\n keycode = keycode.toLowerCase();\n if (keycode === ' ') {\n keycode = 'space'; // for readability\n } else if (keycode === '.') {\n keycode = 'dot'; // because '.' is used as a separator in event names\n }\n MODIFIER_KEYS.forEach(modifierName => {\n if (modifierName !== keycode) {\n const modifierGetter = MODIFIER_KEY_GETTERS[modifierName];\n if (modifierGetter(event)) {\n key += modifierName + '.';\n }\n }\n });\n key += keycode;\n return key === fullKeyCode;\n }\n /**\n * Configures a handler callback for a key event.\n * @param fullKey The event name that combines all simultaneous keystrokes.\n * @param handler The function that responds to the key event.\n * @param zone The zone in which the event occurred.\n * @returns A callback function.\n */\n static eventCallback(fullKey, handler, zone) {\n return event => {\n if (KeyEventsPlugin.matchEventFullKeyCode(event, fullKey)) {\n zone.runGuarded(() => handler(event));\n }\n };\n }\n /** @internal */\n static _normalizeKey(keyName) {\n return keyName === 'esc' ? 'escape' : keyName;\n }\n}\n_KeyEventsPlugin = KeyEventsPlugin;\n_KeyEventsPlugin.ɵfac = function _KeyEventsPlugin_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || _KeyEventsPlugin)(i0.ɵɵinject(DOCUMENT));\n};\n_KeyEventsPlugin.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: _KeyEventsPlugin,\n factory: _KeyEventsPlugin.ɵfac\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(KeyEventsPlugin, [{\n type: Injectable\n }], () => [{\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }], null);\n})();\n\n/**\n * Bootstraps an instance of an Angular application and renders a standalone component as the\n * application's root component. More information about standalone components can be found in [this\n * guide](guide/components/importing).\n *\n * @usageNotes\n * The root component passed into this function *must* be a standalone one (should have the\n * `standalone: true` flag in the `@Component` decorator config).\n *\n * ```typescript\n * @Component({\n * standalone: true,\n * template: 'Hello world!'\n * })\n * class RootComponent {}\n *\n * const appRef: ApplicationRef = await bootstrapApplication(RootComponent);\n * ```\n *\n * You can add the list of providers that should be available in the application injector by\n * specifying the `providers` field in an object passed as the second argument:\n *\n * ```typescript\n * await bootstrapApplication(RootComponent, {\n * providers: [\n * {provide: BACKEND_URL, useValue: 'https://yourdomain.com/api'}\n * ]\n * });\n * ```\n *\n * The `importProvidersFrom` helper method can be used to collect all providers from any\n * existing NgModule (and transitively from all NgModules that it imports):\n *\n * ```typescript\n * await bootstrapApplication(RootComponent, {\n * providers: [\n * importProvidersFrom(SomeNgModule)\n * ]\n * });\n * ```\n *\n * Note: the `bootstrapApplication` method doesn't include [Testability](api/core/Testability) by\n * default. You can add [Testability](api/core/Testability) by getting the list of necessary\n * providers using `provideProtractorTestingSupport()` function and adding them into the `providers`\n * array, for example:\n *\n * ```typescript\n * import {provideProtractorTestingSupport} from '@angular/platform-browser';\n *\n * await bootstrapApplication(RootComponent, {providers: [provideProtractorTestingSupport()]});\n * ```\n *\n * @param rootComponent A reference to a standalone component that should be rendered.\n * @param options Extra configuration for the bootstrap operation, see `ApplicationConfig` for\n * additional info.\n * @returns A promise that returns an `ApplicationRef` instance once resolved.\n *\n * @publicApi\n */\nfunction bootstrapApplication(rootComponent, options) {\n return ɵinternalCreateApplication({\n rootComponent,\n ...createProvidersConfig(options)\n });\n}\n/**\n * Create an instance of an Angular application without bootstrapping any components. This is useful\n * for the situation where one wants to decouple application environment creation (a platform and\n * associated injectors) from rendering components on a screen. Components can be subsequently\n * bootstrapped on the returned `ApplicationRef`.\n *\n * @param options Extra configuration for the application environment, see `ApplicationConfig` for\n * additional info.\n * @returns A promise that returns an `ApplicationRef` instance once resolved.\n *\n * @publicApi\n */\nfunction createApplication(options) {\n return ɵinternalCreateApplication(createProvidersConfig(options));\n}\nfunction createProvidersConfig(options) {\n var _options$providers;\n return {\n appProviders: [...BROWSER_MODULE_PROVIDERS, ...((_options$providers = options === null || options === void 0 ? void 0 : options.providers) !== null && _options$providers !== void 0 ? _options$providers : [])],\n platformProviders: INTERNAL_BROWSER_PLATFORM_PROVIDERS\n };\n}\n/**\n * Returns a set of providers required to setup [Testability](api/core/Testability) for an\n * application bootstrapped using the `bootstrapApplication` function. The set of providers is\n * needed to support testing an application with Protractor (which relies on the Testability APIs\n * to be present).\n *\n * @returns An array of providers required to setup Testability for an application and make it\n * available for testing using Protractor.\n *\n * @publicApi\n */\nfunction provideProtractorTestingSupport() {\n // Return a copy to prevent changes to the original array in case any in-place\n // alterations are performed to the `provideProtractorTestingSupport` call results in app\n // code.\n return [...TESTABILITY_PROVIDERS];\n}\nfunction initDomAdapter() {\n BrowserDomAdapter.makeCurrent();\n}\nfunction errorHandler() {\n return new ErrorHandler();\n}\nfunction _document() {\n // Tell ivy about the global document\n ɵsetDocument(document);\n return document;\n}\nconst INTERNAL_BROWSER_PLATFORM_PROVIDERS = [{\n provide: PLATFORM_ID,\n useValue: ɵPLATFORM_BROWSER_ID\n}, {\n provide: PLATFORM_INITIALIZER,\n useValue: initDomAdapter,\n multi: true\n}, {\n provide: DOCUMENT,\n useFactory: _document,\n deps: []\n}];\n/**\n * A factory function that returns a `PlatformRef` instance associated with browser service\n * providers.\n *\n * @publicApi\n */\nconst platformBrowser = createPlatformFactory(platformCore, 'browser', INTERNAL_BROWSER_PLATFORM_PROVIDERS);\n/**\n * Internal marker to signal whether providers from the `BrowserModule` are already present in DI.\n * This is needed to avoid loading `BrowserModule` providers twice. We can't rely on the\n * `BrowserModule` presence itself, since the standalone-based bootstrap just imports\n * `BrowserModule` providers without referencing the module itself.\n */\nconst BROWSER_MODULE_PROVIDERS_MARKER = new InjectionToken(typeof ngDevMode === 'undefined' || ngDevMode ? 'BrowserModule Providers Marker' : '');\nconst TESTABILITY_PROVIDERS = [{\n provide: ɵTESTABILITY_GETTER,\n useClass: BrowserGetTestability,\n deps: []\n}, {\n provide: ɵTESTABILITY,\n useClass: Testability,\n deps: [NgZone, TestabilityRegistry, ɵTESTABILITY_GETTER]\n}, {\n provide: Testability,\n // Also provide as `Testability` for backwards-compatibility.\n useClass: Testability,\n deps: [NgZone, TestabilityRegistry, ɵTESTABILITY_GETTER]\n}];\nconst BROWSER_MODULE_PROVIDERS = [{\n provide: ɵINJECTOR_SCOPE,\n useValue: 'root'\n}, {\n provide: ErrorHandler,\n useFactory: errorHandler,\n deps: []\n}, {\n provide: EVENT_MANAGER_PLUGINS,\n useClass: DomEventsPlugin,\n multi: true,\n deps: [DOCUMENT, NgZone, PLATFORM_ID]\n}, {\n provide: EVENT_MANAGER_PLUGINS,\n useClass: KeyEventsPlugin,\n multi: true,\n deps: [DOCUMENT]\n}, DomRendererFactory2, SharedStylesHost, EventManager, {\n provide: RendererFactory2,\n useExisting: DomRendererFactory2\n}, {\n provide: XhrFactory,\n useClass: BrowserXhr,\n deps: []\n}, typeof ngDevMode === 'undefined' || ngDevMode ? {\n provide: BROWSER_MODULE_PROVIDERS_MARKER,\n useValue: true\n} : []];\n/**\n * Exports required infrastructure for all Angular apps.\n * Included by default in all Angular apps created with the CLI\n * `new` command.\n * Re-exports `CommonModule` and `ApplicationModule`, making their\n * exports and providers available to all apps.\n *\n * @publicApi\n */\nclass BrowserModule {\n constructor(providersAlreadyPresent) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && providersAlreadyPresent) {\n throw new ɵRuntimeError(5100 /* RuntimeErrorCode.BROWSER_MODULE_ALREADY_LOADED */, `Providers from the \\`BrowserModule\\` have already been loaded. If you need access ` + `to common directives such as NgIf and NgFor, import the \\`CommonModule\\` instead.`);\n }\n }\n /**\n * Configures a browser-based app to transition from a server-rendered app, if\n * one is present on the page.\n *\n * @param params An object containing an identifier for the app to transition.\n * The ID must match between the client and server versions of the app.\n * @returns The reconfigured `BrowserModule` to import into the app's root `AppModule`.\n *\n * @deprecated Use {@link APP_ID} instead to set the application ID.\n */\n static withServerTransition(params) {\n return {\n ngModule: BrowserModule,\n providers: [{\n provide: APP_ID,\n useValue: params.appId\n }]\n };\n }\n}\n_BrowserModule = BrowserModule;\n_BrowserModule.ɵfac = function _BrowserModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || _BrowserModule)(i0.ɵɵinject(BROWSER_MODULE_PROVIDERS_MARKER, 12));\n};\n_BrowserModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: _BrowserModule\n});\n_BrowserModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [...BROWSER_MODULE_PROVIDERS, ...TESTABILITY_PROVIDERS],\n imports: [CommonModule, ApplicationModule]\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(BrowserModule, [{\n type: NgModule,\n args: [{\n providers: [...BROWSER_MODULE_PROVIDERS, ...TESTABILITY_PROVIDERS],\n exports: [CommonModule, ApplicationModule]\n }]\n }], () => [{\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: SkipSelf\n }, {\n type: Inject,\n args: [BROWSER_MODULE_PROVIDERS_MARKER]\n }]\n }], null);\n})();\n\n/**\n * A service for managing HTML `<meta>` tags.\n *\n * Properties of the `MetaDefinition` object match the attributes of the\n * HTML `<meta>` tag. These tags define document metadata that is important for\n * things like configuring a Content Security Policy, defining browser compatibility\n * and security settings, setting HTTP Headers, defining rich content for social sharing,\n * and Search Engine Optimization (SEO).\n *\n * To identify specific `<meta>` tags in a document, use an attribute selection\n * string in the format `\"tag_attribute='value string'\"`.\n * For example, an `attrSelector` value of `\"name='description'\"` matches a tag\n * whose `name` attribute has the value `\"description\"`.\n * Selectors are used with the `querySelector()` Document method,\n * in the format `meta[{attrSelector}]`.\n *\n * @see [HTML meta tag](https://developer.mozilla.org/docs/Web/HTML/Element/meta)\n * @see [Document.querySelector()](https://developer.mozilla.org/docs/Web/API/Document/querySelector)\n *\n *\n * @publicApi\n */\nclass Meta {\n constructor(_doc) {\n this._doc = _doc;\n this._dom = ɵgetDOM();\n }\n /**\n * Retrieves or creates a specific `<meta>` tag element in the current HTML document.\n * In searching for an existing tag, Angular attempts to match the `name` or `property` attribute\n * values in the provided tag definition, and verifies that all other attribute values are equal.\n * If an existing element is found, it is returned and is not modified in any way.\n * @param tag The definition of a `<meta>` element to match or create.\n * @param forceCreation True to create a new element without checking whether one already exists.\n * @returns The existing element with the same attributes and values if found,\n * the new element if no match is found, or `null` if the tag parameter is not defined.\n */\n addTag(tag, forceCreation = false) {\n if (!tag) return null;\n return this._getOrCreateElement(tag, forceCreation);\n }\n /**\n * Retrieves or creates a set of `<meta>` tag elements in the current HTML document.\n * In searching for an existing tag, Angular attempts to match the `name` or `property` attribute\n * values in the provided tag definition, and verifies that all other attribute values are equal.\n * @param tags An array of tag definitions to match or create.\n * @param forceCreation True to create new elements without checking whether they already exist.\n * @returns The matching elements if found, or the new elements.\n */\n addTags(tags, forceCreation = false) {\n if (!tags) return [];\n return tags.reduce((result, tag) => {\n if (tag) {\n result.push(this._getOrCreateElement(tag, forceCreation));\n }\n return result;\n }, []);\n }\n /**\n * Retrieves a `<meta>` tag element in the current HTML document.\n * @param attrSelector The tag attribute and value to match against, in the format\n * `\"tag_attribute='value string'\"`.\n * @returns The matching element, if any.\n */\n getTag(attrSelector) {\n if (!attrSelector) return null;\n return this._doc.querySelector(`meta[${attrSelector}]`) || null;\n }\n /**\n * Retrieves a set of `<meta>` tag elements in the current HTML document.\n * @param attrSelector The tag attribute and value to match against, in the format\n * `\"tag_attribute='value string'\"`.\n * @returns The matching elements, if any.\n */\n getTags(attrSelector) {\n if (!attrSelector) return [];\n const list /*NodeList*/ = this._doc.querySelectorAll(`meta[${attrSelector}]`);\n return list ? [].slice.call(list) : [];\n }\n /**\n * Modifies an existing `<meta>` tag element in the current HTML document.\n * @param tag The tag description with which to replace the existing tag content.\n * @param selector A tag attribute and value to match against, to identify\n * an existing tag. A string in the format `\"tag_attribute=`value string`\"`.\n * If not supplied, matches a tag with the same `name` or `property` attribute value as the\n * replacement tag.\n * @return The modified element.\n */\n updateTag(tag, selector) {\n if (!tag) return null;\n selector = selector || this._parseSelector(tag);\n const meta = this.getTag(selector);\n if (meta) {\n return this._setMetaElementAttributes(tag, meta);\n }\n return this._getOrCreateElement(tag, true);\n }\n /**\n * Removes an existing `<meta>` tag element from the current HTML document.\n * @param attrSelector A tag attribute and value to match against, to identify\n * an existing tag. A string in the format `\"tag_attribute=`value string`\"`.\n */\n removeTag(attrSelector) {\n this.removeTagElement(this.getTag(attrSelector));\n }\n /**\n * Removes an existing `<meta>` tag element from the current HTML document.\n * @param meta The tag definition to match against to identify an existing tag.\n */\n removeTagElement(meta) {\n if (meta) {\n this._dom.remove(meta);\n }\n }\n _getOrCreateElement(meta, forceCreation = false) {\n if (!forceCreation) {\n const selector = this._parseSelector(meta);\n // It's allowed to have multiple elements with the same name so it's not enough to\n // just check that element with the same name already present on the page. We also need to\n // check if element has tag attributes\n const elem = this.getTags(selector).filter(elem => this._containsAttributes(meta, elem))[0];\n if (elem !== undefined) return elem;\n }\n const element = this._dom.createElement('meta');\n this._setMetaElementAttributes(meta, element);\n const head = this._doc.getElementsByTagName('head')[0];\n head.appendChild(element);\n return element;\n }\n _setMetaElementAttributes(tag, el) {\n Object.keys(tag).forEach(prop => el.setAttribute(this._getMetaKeyMap(prop), tag[prop]));\n return el;\n }\n _parseSelector(tag) {\n const attr = tag.name ? 'name' : 'property';\n return `${attr}=\"${tag[attr]}\"`;\n }\n _containsAttributes(tag, elem) {\n return Object.keys(tag).every(key => elem.getAttribute(this._getMetaKeyMap(key)) === tag[key]);\n }\n _getMetaKeyMap(prop) {\n return META_KEYS_MAP[prop] || prop;\n }\n}\n_Meta = Meta;\n_Meta.ɵfac = function _Meta_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || _Meta)(i0.ɵɵinject(DOCUMENT));\n};\n_Meta.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: _Meta,\n factory: _Meta.ɵfac,\n providedIn: 'root'\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Meta, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }], null);\n})();\n/**\n * Mapping for MetaDefinition properties with their correct meta attribute names\n */\nconst META_KEYS_MAP = {\n httpEquiv: 'http-equiv'\n};\n\n/**\n * A service that can be used to get and set the title of a current HTML document.\n *\n * Since an Angular application can't be bootstrapped on the entire HTML document (`<html>` tag)\n * it is not possible to bind to the `text` property of the `HTMLTitleElement` elements\n * (representing the `<title>` tag). Instead, this service can be used to set and get the current\n * title value.\n *\n * @publicApi\n */\nclass Title {\n constructor(_doc) {\n this._doc = _doc;\n }\n /**\n * Get the title of the current HTML document.\n */\n getTitle() {\n return this._doc.title;\n }\n /**\n * Set the title of the current HTML document.\n * @param newTitle\n */\n setTitle(newTitle) {\n this._doc.title = newTitle || '';\n }\n}\n_Title = Title;\n_Title.ɵfac = function _Title_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || _Title)(i0.ɵɵinject(DOCUMENT));\n};\n_Title.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: _Title,\n factory: _Title.ɵfac,\n providedIn: 'root'\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Title, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }], null);\n})();\n\n/**\n * Exports the value under a given `name` in the global property `ng`. For example `ng.probe` if\n * `name` is `'probe'`.\n * @param name Name under which it will be exported. Keep in mind this will be a property of the\n * global `ng` object.\n * @param value The value to export.\n */\nfunction exportNgVar(name, value) {\n if (typeof COMPILED === 'undefined' || !COMPILED) {\n // Note: we can't export `ng` when using closure enhanced optimization as:\n // - closure declares globals itself for minified names, which sometimes clobber our `ng` global\n // - we can't declare a closure extern as the namespace `ng` is already used within Google\n // for typings for angularJS (via `goog.provide('ng....')`).\n const ng = ɵglobal['ng'] = ɵglobal['ng'] || {};\n ng[name] = value;\n }\n}\nclass ChangeDetectionPerfRecord {\n constructor(msPerTick, numTicks) {\n this.msPerTick = msPerTick;\n this.numTicks = numTicks;\n }\n}\n/**\n * Entry point for all Angular profiling-related debug tools. This object\n * corresponds to the `ng.profiler` in the dev console.\n */\nclass AngularProfiler {\n constructor(ref) {\n this.appRef = ref.injector.get(ApplicationRef);\n }\n // tslint:disable:no-console\n /**\n * Exercises change detection in a loop and then prints the average amount of\n * time in milliseconds how long a single round of change detection takes for\n * the current state of the UI. It runs a minimum of 5 rounds for a minimum\n * of 500 milliseconds.\n *\n * Optionally, a user may pass a `config` parameter containing a map of\n * options. Supported options are:\n *\n * `record` (boolean) - causes the profiler to record a CPU profile while\n * it exercises the change detector. Example:\n *\n * ```\n * ng.profiler.timeChangeDetection({record: true})\n * ```\n */\n timeChangeDetection(config) {\n const record = config && config['record'];\n const profileName = 'Change Detection';\n // Profiler is not available in Android browsers without dev tools opened\n if (record && 'profile' in console && typeof console.profile === 'function') {\n console.profile(profileName);\n }\n const start = performance.now();\n let numTicks = 0;\n while (numTicks < 5 || performance.now() - start < 500) {\n this.appRef.tick();\n numTicks++;\n }\n const end = performance.now();\n if (record && 'profileEnd' in console && typeof console.profileEnd === 'function') {\n console.profileEnd(profileName);\n }\n const msPerTick = (end - start) / numTicks;\n console.log(`ran ${numTicks} change detection cycles`);\n console.log(`${msPerTick.toFixed(2)} ms per check`);\n return new ChangeDetectionPerfRecord(msPerTick, numTicks);\n }\n}\nconst PROFILER_GLOBAL_NAME = 'profiler';\n/**\n * Enabled Angular debug tools that are accessible via your browser's\n * developer console.\n *\n * Usage:\n *\n * 1. Open developer console (e.g. in Chrome Ctrl + Shift + j)\n * 1. Type `ng.` (usually the console will show auto-complete suggestion)\n * 1. Try the change detection profiler `ng.profiler.timeChangeDetection()`\n * then hit Enter.\n *\n * @publicApi\n */\nfunction enableDebugTools(ref) {\n exportNgVar(PROFILER_GLOBAL_NAME, new AngularProfiler(ref));\n return ref;\n}\n/**\n * Disables Angular tools.\n *\n * @publicApi\n */\nfunction disableDebugTools() {\n exportNgVar(PROFILER_GLOBAL_NAME, null);\n}\n\n/**\n * Predicates for use with {@link DebugElement}'s query functions.\n *\n * @publicApi\n */\nclass By {\n /**\n * Match all nodes.\n *\n * @usageNotes\n * ### Example\n *\n * {@example platform-browser/dom/debug/ts/by/by.ts region='by_all'}\n */\n static all() {\n return () => true;\n }\n /**\n * Match elements by the given CSS selector.\n *\n * @usageNotes\n * ### Example\n *\n * {@example platform-browser/dom/debug/ts/by/by.ts region='by_css'}\n */\n static css(selector) {\n return debugElement => {\n return debugElement.nativeElement != null ? elementMatches(debugElement.nativeElement, selector) : false;\n };\n }\n /**\n * Match nodes that have the given directive present.\n *\n * @usageNotes\n * ### Example\n *\n * {@example platform-browser/dom/debug/ts/by/by.ts region='by_directive'}\n */\n static directive(type) {\n return debugNode => debugNode.providerTokens.indexOf(type) !== -1;\n }\n}\nfunction elementMatches(n, selector) {\n if (ɵgetDOM().isElementNode(n)) {\n return n.matches && n.matches(selector) || n.msMatchesSelector && n.msMatchesSelector(selector) || n.webkitMatchesSelector && n.webkitMatchesSelector(selector);\n }\n return false;\n}\n\n/**\n * Supported HammerJS recognizer event names.\n */\nconst EVENT_NAMES = {\n // pan\n 'pan': true,\n 'panstart': true,\n 'panmove': true,\n 'panend': true,\n 'pancancel': true,\n 'panleft': true,\n 'panright': true,\n 'panup': true,\n 'pandown': true,\n // pinch\n 'pinch': true,\n 'pinchstart': true,\n 'pinchmove': true,\n 'pinchend': true,\n 'pinchcancel': true,\n 'pinchin': true,\n 'pinchout': true,\n // press\n 'press': true,\n 'pressup': true,\n // rotate\n 'rotate': true,\n 'rotatestart': true,\n 'rotatemove': true,\n 'rotateend': true,\n 'rotatecancel': true,\n // swipe\n 'swipe': true,\n 'swipeleft': true,\n 'swiperight': true,\n 'swipeup': true,\n 'swipedown': true,\n // tap\n 'tap': true,\n 'doubletap': true\n};\n/**\n * DI token for providing [HammerJS](https://hammerjs.github.io/) support to Angular.\n * @see {@link HammerGestureConfig}\n *\n * @ngModule HammerModule\n * @publicApi\n */\nconst HAMMER_GESTURE_CONFIG = new InjectionToken('HammerGestureConfig');\n/**\n * Injection token used to provide a HammerLoader to Angular.\n *\n * @see {@link HammerLoader}\n *\n * @publicApi\n */\nconst HAMMER_LOADER = new InjectionToken('HammerLoader');\n/**\n * An injectable [HammerJS Manager](https://hammerjs.github.io/api/#hammermanager)\n * for gesture recognition. Configures specific event recognition.\n * @publicApi\n */\nclass HammerGestureConfig {\n constructor() {\n /**\n * A set of supported event names for gestures to be used in Angular.\n * Angular supports all built-in recognizers, as listed in\n * [HammerJS documentation](https://hammerjs.github.io/).\n */\n this.events = [];\n /**\n * Maps gesture event names to a set of configuration options\n * that specify overrides to the default values for specific properties.\n *\n * The key is a supported event name to be configured,\n * and the options object contains a set of properties, with override values\n * to be applied to the named recognizer event.\n * For example, to disable recognition of the rotate event, specify\n * `{\"rotate\": {\"enable\": false}}`.\n *\n * Properties that are not present take the HammerJS default values.\n * For information about which properties are supported for which events,\n * and their allowed and default values, see\n * [HammerJS documentation](https://hammerjs.github.io/).\n *\n */\n this.overrides = {};\n }\n /**\n * Creates a [HammerJS Manager](https://hammerjs.github.io/api/#hammermanager)\n * and attaches it to a given HTML element.\n * @param element The element that will recognize gestures.\n * @returns A HammerJS event-manager object.\n */\n buildHammer(element) {\n const mc = new Hammer(element, this.options);\n mc.get('pinch').set({\n enable: true\n });\n mc.get('rotate').set({\n enable: true\n });\n for (const eventName in this.overrides) {\n mc.get(eventName).set(this.overrides[eventName]);\n }\n return mc;\n }\n}\n_HammerGestureConfig = HammerGestureConfig;\n_HammerGestureConfig.ɵfac = function _HammerGestureConfig_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || _HammerGestureConfig)();\n};\n_HammerGestureConfig.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: _HammerGestureConfig,\n factory: _HammerGestureConfig.ɵfac\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(HammerGestureConfig, [{\n type: Injectable\n }], null, null);\n})();\n/**\n * Event plugin that adds Hammer support to an application.\n *\n * @ngModule HammerModule\n */\nclass HammerGesturesPlugin extends EventManagerPlugin {\n constructor(doc, _config, console, loader) {\n super(doc);\n this._config = _config;\n this.console = console;\n this.loader = loader;\n this._loaderPromise = null;\n }\n supports(eventName) {\n if (!EVENT_NAMES.hasOwnProperty(eventName.toLowerCase()) && !this.isCustomEvent(eventName)) {\n return false;\n }\n if (!window.Hammer && !this.loader) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n this.console.warn(`The \"${eventName}\" event cannot be bound because Hammer.JS is not ` + `loaded and no custom loader has been specified.`);\n }\n return false;\n }\n return true;\n }\n addEventListener(element, eventName, handler) {\n const zone = this.manager.getZone();\n eventName = eventName.toLowerCase();\n // If Hammer is not present but a loader is specified, we defer adding the event listener\n // until Hammer is loaded.\n if (!window.Hammer && this.loader) {\n this._loaderPromise = this._loaderPromise || zone.runOutsideAngular(() => this.loader());\n // This `addEventListener` method returns a function to remove the added listener.\n // Until Hammer is loaded, the returned function needs to *cancel* the registration rather\n // than remove anything.\n let cancelRegistration = false;\n let deregister = () => {\n cancelRegistration = true;\n };\n zone.runOutsideAngular(() => this._loaderPromise.then(() => {\n // If Hammer isn't actually loaded when the custom loader resolves, give up.\n if (!window.Hammer) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n this.console.warn(`The custom HAMMER_LOADER completed, but Hammer.JS is not present.`);\n }\n deregister = () => {};\n return;\n }\n if (!cancelRegistration) {\n // Now that Hammer is loaded and the listener is being loaded for real,\n // the deregistration function changes from canceling registration to\n // removal.\n deregister = this.addEventListener(element, eventName, handler);\n }\n }).catch(() => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n this.console.warn(`The \"${eventName}\" event cannot be bound because the custom ` + `Hammer.JS loader failed.`);\n }\n deregister = () => {};\n }));\n // Return a function that *executes* `deregister` (and not `deregister` itself) so that we\n // can change the behavior of `deregister` once the listener is added. Using a closure in\n // this way allows us to avoid any additional data structures to track listener removal.\n return () => {\n deregister();\n };\n }\n return zone.runOutsideAngular(() => {\n // Creating the manager bind events, must be done outside of angular\n const mc = this._config.buildHammer(element);\n const callback = function (eventObj) {\n zone.runGuarded(function () {\n handler(eventObj);\n });\n };\n mc.on(eventName, callback);\n return () => {\n mc.off(eventName, callback);\n // destroy mc to prevent memory leak\n if (typeof mc.destroy === 'function') {\n mc.destroy();\n }\n };\n });\n }\n isCustomEvent(eventName) {\n return this._config.events.indexOf(eventName) > -1;\n }\n}\n_HammerGesturesPlugin = HammerGesturesPlugin;\n_HammerGesturesPlugin.ɵfac = function _HammerGesturesPlugin_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || _HammerGesturesPlugin)(i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(HAMMER_GESTURE_CONFIG), i0.ɵɵinject(i0.ɵConsole), i0.ɵɵinject(HAMMER_LOADER, 8));\n};\n_HammerGesturesPlugin.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: _HammerGesturesPlugin,\n factory: _HammerGesturesPlugin.ɵfac\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(HammerGesturesPlugin, [{\n type: Injectable\n }], () => [{\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }, {\n type: HammerGestureConfig,\n decorators: [{\n type: Inject,\n args: [HAMMER_GESTURE_CONFIG]\n }]\n }, {\n type: i0.ɵConsole\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [HAMMER_LOADER]\n }]\n }], null);\n})();\n/**\n * Adds support for HammerJS.\n *\n * Import this module at the root of your application so that Angular can work with\n * HammerJS to detect gesture events.\n *\n * Note that applications still need to include the HammerJS script itself. This module\n * simply sets up the coordination layer between HammerJS and Angular's `EventManager`.\n *\n * @publicApi\n */\nclass HammerModule {}\n_HammerModule = HammerModule;\n_HammerModule.ɵfac = function _HammerModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || _HammerModule)();\n};\n_HammerModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: _HammerModule\n});\n_HammerModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [{\n provide: EVENT_MANAGER_PLUGINS,\n useClass: HammerGesturesPlugin,\n multi: true,\n deps: [DOCUMENT, HAMMER_GESTURE_CONFIG, ɵConsole, [new Optional(), HAMMER_LOADER]]\n }, {\n provide: HAMMER_GESTURE_CONFIG,\n useClass: HammerGestureConfig,\n deps: []\n }]\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(HammerModule, [{\n type: NgModule,\n args: [{\n providers: [{\n provide: EVENT_MANAGER_PLUGINS,\n useClass: HammerGesturesPlugin,\n multi: true,\n deps: [DOCUMENT, HAMMER_GESTURE_CONFIG, ɵConsole, [new Optional(), HAMMER_LOADER]]\n }, {\n provide: HAMMER_GESTURE_CONFIG,\n useClass: HammerGestureConfig,\n deps: []\n }]\n }]\n }], null, null);\n})();\n\n/**\n * DomSanitizer helps preventing Cross Site Scripting Security bugs (XSS) by sanitizing\n * values to be safe to use in the different DOM contexts.\n *\n * For example, when binding a URL in an `<a [href]=\"someValue\">` hyperlink, `someValue` will be\n * sanitized so that an attacker cannot inject e.g. a `javascript:` URL that would execute code on\n * the website.\n *\n * In specific situations, it might be necessary to disable sanitization, for example if the\n * application genuinely needs to produce a `javascript:` style link with a dynamic value in it.\n * Users can bypass security by constructing a value with one of the `bypassSecurityTrust...`\n * methods, and then binding to that value from the template.\n *\n * These situations should be very rare, and extraordinary care must be taken to avoid creating a\n * Cross Site Scripting (XSS) security bug!\n *\n * When using `bypassSecurityTrust...`, make sure to call the method as early as possible and as\n * close as possible to the source of the value, to make it easy to verify no security bug is\n * created by its use.\n *\n * It is not required (and not recommended) to bypass security if the value is safe, e.g. a URL that\n * does not start with a suspicious protocol, or an HTML snippet that does not contain dangerous\n * code. The sanitizer leaves safe values intact.\n *\n * @security Calling any of the `bypassSecurityTrust...` APIs disables Angular's built-in\n * sanitization for the value passed in. Carefully check and audit all values and code paths going\n * into this call. Make sure any user data is appropriately escaped for this security context.\n * For more detail, see the [Security Guide](https://g.co/ng/security).\n *\n * @publicApi\n */\nclass DomSanitizer {}\n_DomSanitizer = DomSanitizer;\n_DomSanitizer.ɵfac = function _DomSanitizer_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || _DomSanitizer)();\n};\n_DomSanitizer.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: _DomSanitizer,\n factory: function _DomSanitizer_Factory(__ngFactoryType__) {\n let __ngConditionalFactory__ = null;\n if (__ngFactoryType__) {\n __ngConditionalFactory__ = new (__ngFactoryType__ || _DomSanitizer)();\n } else {\n __ngConditionalFactory__ = i0.ɵɵinject(DomSanitizerImpl);\n }\n return __ngConditionalFactory__;\n },\n providedIn: 'root'\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DomSanitizer, [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n useExisting: forwardRef(() => DomSanitizerImpl)\n }]\n }], null, null);\n})();\nclass DomSanitizerImpl extends DomSanitizer {\n constructor(_doc) {\n super();\n this._doc = _doc;\n }\n sanitize(ctx, value) {\n if (value == null) return null;\n switch (ctx) {\n case SecurityContext.NONE:\n return value;\n case SecurityContext.HTML:\n if (ɵallowSanitizationBypassAndThrow(value, \"HTML\" /* BypassType.Html */)) {\n return ɵunwrapSafeValue(value);\n }\n return ɵ_sanitizeHtml(this._doc, String(value)).toString();\n case SecurityContext.STYLE:\n if (ɵallowSanitizationBypassAndThrow(value, \"Style\" /* BypassType.Style */)) {\n return ɵunwrapSafeValue(value);\n }\n return value;\n case SecurityContext.SCRIPT:\n if (ɵallowSanitizationBypassAndThrow(value, \"Script\" /* BypassType.Script */)) {\n return ɵunwrapSafeValue(value);\n }\n throw new ɵRuntimeError(5200 /* RuntimeErrorCode.SANITIZATION_UNSAFE_SCRIPT */, (typeof ngDevMode === 'undefined' || ngDevMode) && 'unsafe value used in a script context');\n case SecurityContext.URL:\n if (ɵallowSanitizationBypassAndThrow(value, \"URL\" /* BypassType.Url */)) {\n return ɵunwrapSafeValue(value);\n }\n return ɵ_sanitizeUrl(String(value));\n case SecurityContext.RESOURCE_URL:\n if (ɵallowSanitizationBypassAndThrow(value, \"ResourceURL\" /* BypassType.ResourceUrl */)) {\n return ɵunwrapSafeValue(value);\n }\n throw new ɵRuntimeError(5201 /* RuntimeErrorCode.SANITIZATION_UNSAFE_RESOURCE_URL */, (typeof ngDevMode === 'undefined' || ngDevMode) && `unsafe value used in a resource URL context (see ${ɵXSS_SECURITY_URL})`);\n default:\n throw new ɵRuntimeError(5202 /* RuntimeErrorCode.SANITIZATION_UNEXPECTED_CTX */, (typeof ngDevMode === 'undefined' || ngDevMode) && `Unexpected SecurityContext ${ctx} (see ${ɵXSS_SECURITY_URL})`);\n }\n }\n bypassSecurityTrustHtml(value) {\n return ɵbypassSanitizationTrustHtml(value);\n }\n bypassSecurityTrustStyle(value) {\n return ɵbypassSanitizationTrustStyle(value);\n }\n bypassSecurityTrustScript(value) {\n return ɵbypassSanitizationTrustScript(value);\n }\n bypassSecurityTrustUrl(value) {\n return ɵbypassSanitizationTrustUrl(value);\n }\n bypassSecurityTrustResourceUrl(value) {\n return ɵbypassSanitizationTrustResourceUrl(value);\n }\n}\n_DomSanitizerImpl = DomSanitizerImpl;\n_DomSanitizerImpl.ɵfac = function _DomSanitizerImpl_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || _DomSanitizerImpl)(i0.ɵɵinject(DOCUMENT));\n};\n_DomSanitizerImpl.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: _DomSanitizerImpl,\n factory: _DomSanitizerImpl.ɵfac,\n providedIn: 'root'\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DomSanitizerImpl, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: undefined,\n decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }]\n }], null);\n})();\n\n/**\n * The list of features as an enum to uniquely type each `HydrationFeature`.\n * @see {@link HydrationFeature}\n *\n * @publicApi\n */\nvar HydrationFeatureKind;\n(function (HydrationFeatureKind) {\n HydrationFeatureKind[HydrationFeatureKind[\"NoHttpTransferCache\"] = 0] = \"NoHttpTransferCache\";\n HydrationFeatureKind[HydrationFeatureKind[\"HttpTransferCacheOptions\"] = 1] = \"HttpTransferCacheOptions\";\n HydrationFeatureKind[HydrationFeatureKind[\"I18nSupport\"] = 2] = \"I18nSupport\";\n HydrationFeatureKind[HydrationFeatureKind[\"EventReplay\"] = 3] = \"EventReplay\";\n})(HydrationFeatureKind || (HydrationFeatureKind = {}));\n/**\n * Helper function to create an object that represents a Hydration feature.\n */\nfunction hydrationFeature(ɵkind, ɵproviders = [], ɵoptions = {}) {\n return {\n ɵkind,\n ɵproviders\n };\n}\n/**\n * Disables HTTP transfer cache. Effectively causes HTTP requests to be performed twice: once on the\n * server and other one on the browser.\n *\n * @publicApi\n */\nfunction withNoHttpTransferCache() {\n // This feature has no providers and acts as a flag that turns off\n // HTTP transfer cache (which otherwise is turned on by default).\n return hydrationFeature(HydrationFeatureKind.NoHttpTransferCache);\n}\n/**\n * The function accepts an object, which allows to configure cache parameters,\n * such as which headers should be included (no headers are included by default),\n * whether POST requests should be cached or a callback function to determine if a\n * particular request should be cached.\n *\n * @publicApi\n */\nfunction withHttpTransferCacheOptions(options) {\n // This feature has no providers and acts as a flag to pass options to the HTTP transfer cache.\n return hydrationFeature(HydrationFeatureKind.HttpTransferCacheOptions, ɵwithHttpTransferCache(options));\n}\n/**\n * Enables support for hydrating i18n blocks.\n *\n * @developerPreview\n * @publicApi\n */\nfunction withI18nSupport() {\n return hydrationFeature(HydrationFeatureKind.I18nSupport, ɵwithI18nSupport());\n}\n/**\n * Enables support for replaying user events (e.g. `click`s) that happened on a page\n * before hydration logic has completed. Once an application is hydrated, all captured\n * events are replayed and relevant event listeners are executed.\n *\n * @usageNotes\n *\n * Basic example of how you can enable event replay in your application when\n * `bootstrapApplication` function is used:\n * ```\n * bootstrapApplication(AppComponent, {\n * providers: [provideClientHydration(withEventReplay())]\n * });\n * ```\n * @developerPreview\n * @publicApi\n * @see {@link provideClientHydration}\n */\nfunction withEventReplay() {\n return hydrationFeature(HydrationFeatureKind.EventReplay, ɵwithEventReplay());\n}\n/**\n * Returns an `ENVIRONMENT_INITIALIZER` token setup with a function\n * that verifies whether compatible ZoneJS was used in an application\n * and logs a warning in a console if it's not the case.\n */\nfunction provideZoneJsCompatibilityDetector() {\n return [{\n provide: ENVIRONMENT_INITIALIZER,\n useValue: () => {\n const ngZone = inject(NgZone);\n const isZoneless = inject(ɵZONELESS_ENABLED);\n // Checking `ngZone instanceof NgZone` would be insufficient here,\n // because custom implementations might use NgZone as a base class.\n if (!isZoneless && ngZone.constructor !== NgZone) {\n const console = inject(ɵConsole);\n const message = ɵformatRuntimeError(-5000 /* RuntimeErrorCode.UNSUPPORTED_ZONEJS_INSTANCE */, 'Angular detected that hydration was enabled for an application ' + 'that uses a custom or a noop Zone.js implementation. ' + 'This is not yet a fully supported configuration.');\n // tslint:disable-next-line:no-console\n console.warn(message);\n }\n },\n multi: true\n }];\n}\n/**\n * Sets up providers necessary to enable hydration functionality for the application.\n *\n * By default, the function enables the recommended set of features for the optimal\n * performance for most of the applications. It includes the following features:\n *\n * * Reconciling DOM hydration. Learn more about it [here](guide/hydration).\n * * [`HttpClient`](api/common/http/HttpClient) response caching while running on the server and\n * transferring this cache to the client to avoid extra HTTP requests. Learn more about data caching\n * [here](guide/ssr#caching-data-when-using-httpclient).\n *\n * These functions allow you to disable some of the default features or enable new ones:\n *\n * * {@link withNoHttpTransferCache} to disable HTTP transfer cache\n * * {@link withHttpTransferCacheOptions} to configure some HTTP transfer cache options\n * * {@link withI18nSupport} to enable hydration support for i18n blocks\n * * {@link withEventReplay} to enable support for replaying user events\n *\n * @usageNotes\n *\n * Basic example of how you can enable hydration in your application when\n * `bootstrapApplication` function is used:\n * ```\n * bootstrapApplication(AppComponent, {\n * providers: [provideClientHydration()]\n * });\n * ```\n *\n * Alternatively if you are using NgModules, you would add `provideClientHydration`\n * to your root app module's provider list.\n * ```\n * @NgModule({\n * declarations: [RootCmp],\n * bootstrap: [RootCmp],\n * providers: [provideClientHydration()],\n * })\n * export class AppModule {}\n * ```\n *\n * @see {@link withNoHttpTransferCache}\n * @see {@link withHttpTransferCacheOptions}\n * @see {@link withI18nSupport}\n * @see {@link withEventReplay}\n *\n * @param features Optional features to configure additional router behaviors.\n * @returns A set of providers to enable hydration.\n *\n * @publicApi\n */\nfunction provideClientHydration(...features) {\n const providers = [];\n const featuresKind = new Set();\n const hasHttpTransferCacheOptions = featuresKind.has(HydrationFeatureKind.HttpTransferCacheOptions);\n for (const {\n ɵproviders,\n ɵkind\n } of features) {\n featuresKind.add(ɵkind);\n if (ɵproviders.length) {\n providers.push(ɵproviders);\n }\n }\n if (typeof ngDevMode !== 'undefined' && ngDevMode && featuresKind.has(HydrationFeatureKind.NoHttpTransferCache) && hasHttpTransferCacheOptions) {\n // TODO: Make this a runtime error\n throw new Error('Configuration error: found both withHttpTransferCacheOptions() and withNoHttpTransferCache() in the same call to provideClientHydration(), which is a contradiction.');\n }\n return makeEnvironmentProviders([typeof ngDevMode !== 'undefined' && ngDevMode ? provideZoneJsCompatibilityDetector() : [], ɵwithDomHydration(), featuresKind.has(HydrationFeatureKind.NoHttpTransferCache) || hasHttpTransferCacheOptions ? [] : ɵwithHttpTransferCache({}), providers]);\n}\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of the platform-browser package.\n */\n/**\n * @publicApi\n */\nconst VERSION = new Version('18.2.12');\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n// This file only reexports content of the `src` folder. Keep it that way.\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BrowserModule, By, DomSanitizer, EVENT_MANAGER_PLUGINS, EventManager, EventManagerPlugin, HAMMER_GESTURE_CONFIG, HAMMER_LOADER, HammerGestureConfig, HammerModule, HydrationFeatureKind, Meta, REMOVE_STYLES_ON_COMPONENT_DESTROY, Title, VERSION, bootstrapApplication, createApplication, disableDebugTools, enableDebugTools, platformBrowser, provideClientHydration, provideProtractorTestingSupport, withEventReplay, withHttpTransferCacheOptions, withI18nSupport, withNoHttpTransferCache, BrowserDomAdapter as ɵBrowserDomAdapter, BrowserGetTestability as ɵBrowserGetTestability, DomEventsPlugin as ɵDomEventsPlugin, DomRendererFactory2 as ɵDomRendererFactory2, DomSanitizerImpl as ɵDomSanitizerImpl, HammerGesturesPlugin as ɵHammerGesturesPlugin, INTERNAL_BROWSER_PLATFORM_PROVIDERS as ɵINTERNAL_BROWSER_PLATFORM_PROVIDERS, KeyEventsPlugin as ɵKeyEventsPlugin, SharedStylesHost as ɵSharedStylesHost, initDomAdapter as ɵinitDomAdapter };","map":{"version":3,"names":["ɵDomAdapter","ɵsetRootDomAdapter","ɵparseCookieValue","ɵgetDOM","isPlatformServer","DOCUMENT","ɵPLATFORM_BROWSER_ID","XhrFactory","CommonModule","i0","ɵglobal","ɵRuntimeError","Injectable","InjectionToken","Inject","APP_ID","CSP_NONCE","PLATFORM_ID","Optional","ViewEncapsulation","RendererStyleFlags2","ɵinternalCreateApplication","ErrorHandler","ɵsetDocument","PLATFORM_INITIALIZER","createPlatformFactory","platformCore","ɵTESTABILITY_GETTER","ɵTESTABILITY","Testability","NgZone","TestabilityRegistry","ɵINJECTOR_SCOPE","RendererFactory2","ApplicationModule","NgModule","SkipSelf","ApplicationRef","ɵConsole","forwardRef","ɵXSS_SECURITY_URL","SecurityContext","ɵallowSanitizationBypassAndThrow","ɵunwrapSafeValue","ɵ_sanitizeUrl","ɵ_sanitizeHtml","ɵbypassSanitizationTrustHtml","ɵbypassSanitizationTrustStyle","ɵbypassSanitizationTrustScript","ɵbypassSanitizationTrustUrl","ɵbypassSanitizationTrustResourceUrl","ɵwithI18nSupport","ɵwithEventReplay","ENVIRONMENT_INITIALIZER","inject","ɵZONELESS_ENABLED","ɵformatRuntimeError","makeEnvironmentProviders","ɵwithDomHydration","Version","ɵwithHttpTransferCache","GenericBrowserDomAdapter","constructor","arguments","supportsDOMEvents","BrowserDomAdapter","makeCurrent","onAndCancel","el","evt","listener","addEventListener","removeEventListener","dispatchEvent","remove","node","createElement","tagName","doc","getDefaultDocument","createHtmlDocument","document","implementation","createHTMLDocument","isElementNode","nodeType","Node","ELEMENT_NODE","isShadowRoot","DocumentFragment","getGlobalEventTarget","target","window","body","getBaseHref","href","getBaseElementHref","relativePath","resetBaseElement","baseElement","getUserAgent","navigator","userAgent","getCookie","name","cookie","querySelector","getAttribute","url","URL","baseURI","pathname","BrowserGetTestability","addToWindow","registry","elem","findInAncestors","testability","findTestabilityInTree","ngDevMode","getAllTestabilities","getAllRootElements","whenAllStable","callback","testabilities","count","length","decrement","forEach","whenStable","push","t","getTestability","host","parentElement","BrowserXhr","build","XMLHttpRequest","_BrowserXhr","ɵfac","_BrowserXhr_Factory","__ngFactoryType__","ɵprov","ɵɵdefineInjectable","token","factory","ɵsetClassMetadata","type","EVENT_MANAGER_PLUGINS","EventManager","plugins","_zone","_eventNameToPlugin","Map","plugin","manager","_plugins","slice","reverse","element","eventName","handler","_findPluginFor","getZone","get","find","supports","set","_EventManager","_EventManager_Factory","ɵɵinject","undefined","decorators","args","EventManagerPlugin","_doc","APP_ID_ATTRIBUTE_NAME","SharedStylesHost","appId","nonce","platformId","styleRef","hostNodes","Set","styleNodesInDOM","collectServerRenderedStyles","platformIsServer","resetHostNodes","addStyles","styles","style","usageCount","changeUsageCount","onStyleAdded","removeStyles","onStyleRemoved","ngOnDestroy","clear","getAllStyles","addHost","hostNode","add","addStyleToHost","removeHost","delete","keys","_styleRef$get","elements","_this$doc$head","head","querySelectorAll","styleMap","textContent","delta","map","has","styleRefValue","usage","getStyleElement","styleEl","parentNode","removeAttribute","setAttribute","appendChild","_styleRef$get2","styleElRef","_SharedStylesHost","_SharedStylesHost_Factory","Document","NAMESPACE_URIS","COMPONENT_REGEX","COMPONENT_VARIABLE","HOST_ATTR","CONTENT_ATTR","REMOVE_STYLES_ON_COMPONENT_DESTROY_DEFAULT","REMOVE_STYLES_ON_COMPONENT_DESTROY","providedIn","shimContentAttribute","componentShortId","replace","shimHostAttribute","shimStylesContent","compId","s","DomRendererFactory2","eventManager","sharedStylesHost","removeStylesOnCompDestroy","ngZone","rendererByCompId","defaultRenderer","DefaultDomRenderer2","createRenderer","encapsulation","ShadowDom","Emulated","renderer","getOrCreateRenderer","EmulatedEncapsulationDomRenderer2","applyToHost","NoneEncapsulationDomRenderer","applyStyles","id","ShadowDomRenderer","_DomRendererFactory","_DomRendererFactory_Factory","Object","data","create","throwOnSyntheticProps","destroyNode","destroy","namespace","createElementNS","createComment","value","createText","createTextNode","parent","newChild","targetParent","isTemplateNode","content","insertBefore","refChild","removeChild","_parent","oldChild","selectRootElement","selectorOrNode","preserveContent","nextSibling","namespaceUri","setAttributeNS","removeAttributeNS","addClass","classList","removeClass","setStyle","flags","DashCase","Important","setProperty","removeStyle","removeProperty","checkNoSyntheticProp","setValue","nodeValue","listen","event","Error","decoratePreventDefault","eventHandler","allowDefaultBehavior","runGuarded","preventDefault","AT_CHARCODE","charCodeAt","nameKind","hostEl","component","shadowRoot","attachShadow","mode","nodeOrShadowRoot","contentAttr","hostAttr","DomEventsPlugin","_DomEventsPlugin","_DomEventsPlugin_Factory","MODIFIER_KEYS","_keyMap","MODIFIER_KEY_GETTERS","altKey","ctrlKey","metaKey","shiftKey","KeyEventsPlugin","parseEventName","parsedEvent","outsideHandler","eventCallback","runOutsideAngular","parts","toLowerCase","split","domEventName","shift","key","_normalizeKey","pop","fullKey","codeIX","indexOf","splice","modifierName","index","result","matchEventFullKeyCode","fullKeyCode","keycode","code","modifierGetter","zone","keyName","_KeyEventsPlugin","_KeyEventsPlugin_Factory","bootstrapApplication","rootComponent","options","createProvidersConfig","createApplication","_options$providers","appProviders","BROWSER_MODULE_PROVIDERS","providers","platformProviders","INTERNAL_BROWSER_PLATFORM_PROVIDERS","provideProtractorTestingSupport","TESTABILITY_PROVIDERS","initDomAdapter","errorHandler","_document","provide","useValue","multi","useFactory","deps","platformBrowser","BROWSER_MODULE_PROVIDERS_MARKER","useClass","useExisting","BrowserModule","providersAlreadyPresent","withServerTransition","params","ngModule","_BrowserModule","_BrowserModule_Factory","ɵmod","ɵɵdefineNgModule","ɵinj","ɵɵdefineInjector","imports","exports","Meta","_dom","addTag","tag","forceCreation","_getOrCreateElement","addTags","tags","reduce","getTag","attrSelector","getTags","list","call","updateTag","selector","_parseSelector","meta","_setMetaElementAttributes","removeTag","removeTagElement","filter","_containsAttributes","getElementsByTagName","prop","_getMetaKeyMap","attr","every","META_KEYS_MAP","_Meta","_Meta_Factory","httpEquiv","Title","getTitle","title","setTitle","newTitle","_Title","_Title_Factory","exportNgVar","COMPILED","ng","ChangeDetectionPerfRecord","msPerTick","numTicks","AngularProfiler","ref","appRef","injector","timeChangeDetection","config","record","profileName","console","profile","start","performance","now","tick","end","profileEnd","log","toFixed","PROFILER_GLOBAL_NAME","enableDebugTools","disableDebugTools","By","all","css","debugElement","nativeElement","elementMatches","directive","debugNode","providerTokens","n","matches","msMatchesSelector","webkitMatchesSelector","EVENT_NAMES","HAMMER_GESTURE_CONFIG","HAMMER_LOADER","HammerGestureConfig","events","overrides","buildHammer","mc","Hammer","enable","_HammerGestureConfig","_HammerGestureConfig_Factory","HammerGesturesPlugin","_config","loader","_loaderPromise","hasOwnProperty","isCustomEvent","warn","cancelRegistration","deregister","then","catch","eventObj","on","off","_HammerGesturesPlugin","_HammerGesturesPlugin_Factory","HammerModule","_HammerModule","_HammerModule_Factory","DomSanitizer","_DomSanitizer","_DomSanitizer_Factory","__ngConditionalFactory__","DomSanitizerImpl","sanitize","ctx","NONE","HTML","String","toString","STYLE","SCRIPT","RESOURCE_URL","bypassSecurityTrustHtml","bypassSecurityTrustStyle","bypassSecurityTrustScript","bypassSecurityTrustUrl","bypassSecurityTrustResourceUrl","_DomSanitizerImpl","_DomSanitizerImpl_Factory","HydrationFeatureKind","hydrationFeature","ɵkind","ɵproviders","ɵoptions","withNoHttpTransferCache","NoHttpTransferCache","withHttpTransferCacheOptions","HttpTransferCacheOptions","withI18nSupport","I18nSupport","withEventReplay","EventReplay","provideZoneJsCompatibilityDetector","isZoneless","message","provideClientHydration","features","featuresKind","hasHttpTransferCacheOptions","VERSION","ɵBrowserDomAdapter","ɵBrowserGetTestability","ɵDomEventsPlugin","ɵDomRendererFactory2","ɵDomSanitizerImpl","ɵHammerGesturesPlugin","ɵINTERNAL_BROWSER_PLATFORM_PROVIDERS","ɵKeyEventsPlugin","ɵSharedStylesHost","ɵinitDomAdapter"],"sources":["F:/workspace/huinongbao-app/node_modules/@angular/platform-browser/fesm2022/platform-browser.mjs"],"sourcesContent":["/**\n * @license Angular v18.2.12\n * (c) 2010-2024 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { ɵDomAdapter, ɵsetRootDomAdapter, ɵparseCookieValue, ɵgetDOM, isPlatformServer, DOCUMENT, ɵPLATFORM_BROWSER_ID, XhrFactory, CommonModule } from '@angular/common';\nexport { ɵgetDOM } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { ɵglobal, ɵRuntimeError, Injectable, InjectionToken, Inject, APP_ID, CSP_NONCE, PLATFORM_ID, Optional, ViewEncapsulation, RendererStyleFlags2, ɵinternalCreateApplication, ErrorHandler, ɵsetDocument, PLATFORM_INITIALIZER, createPlatformFactory, platformCore, ɵTESTABILITY_GETTER, ɵTESTABILITY, Testability, NgZone, TestabilityRegistry, ɵINJECTOR_SCOPE, RendererFactory2, ApplicationModule, NgModule, SkipSelf, ApplicationRef, ɵConsole, forwardRef, ɵXSS_SECURITY_URL, SecurityContext, ɵallowSanitizationBypassAndThrow, ɵunwrapSafeValue, ɵ_sanitizeUrl, ɵ_sanitizeHtml, ɵbypassSanitizationTrustHtml, ɵbypassSanitizationTrustStyle, ɵbypassSanitizationTrustScript, ɵbypassSanitizationTrustUrl, ɵbypassSanitizationTrustResourceUrl, ɵwithI18nSupport, ɵwithEventReplay, ENVIRONMENT_INITIALIZER, inject, ɵZONELESS_ENABLED, ɵformatRuntimeError, makeEnvironmentProviders, ɵwithDomHydration, Version } from '@angular/core';\nimport { ɵwithHttpTransferCache } from '@angular/common/http';\n\n/**\n * Provides DOM operations in any browser environment.\n *\n * @security Tread carefully! Interacting with the DOM directly is dangerous and\n * can introduce XSS risks.\n */\nclass GenericBrowserDomAdapter extends ɵDomAdapter {\n constructor() {\n super(...arguments);\n this.supportsDOMEvents = true;\n }\n}\n\n/**\n * A `DomAdapter` powered by full browser DOM APIs.\n *\n * @security Tread carefully! Interacting with the DOM directly is dangerous and\n * can introduce XSS risks.\n */\n/* tslint:disable:requireParameterType no-console */\nclass BrowserDomAdapter extends GenericBrowserDomAdapter {\n static makeCurrent() {\n ɵsetRootDomAdapter(new BrowserDomAdapter());\n }\n onAndCancel(el, evt, listener) {\n el.addEventListener(evt, listener);\n return () => {\n el.removeEventListener(evt, listener);\n };\n }\n dispatchEvent(el, evt) {\n el.dispatchEvent(evt);\n }\n remove(node) {\n node.remove();\n }\n createElement(tagName, doc) {\n doc = doc || this.getDefaultDocument();\n return doc.createElement(tagName);\n }\n createHtmlDocument() {\n return document.implementation.createHTMLDocument('fakeTitle');\n }\n getDefaultDocument() {\n return document;\n }\n isElementNode(node) {\n return node.nodeType === Node.ELEMENT_NODE;\n }\n isShadowRoot(node) {\n return node instanceof DocumentFragment;\n }\n /** @deprecated No longer being used in Ivy code. To be removed in version 14. */\n getGlobalEventTarget(doc, target) {\n if (target === 'window') {\n return window;\n }\n if (target === 'document') {\n return doc;\n }\n if (target === 'body') {\n return doc.body;\n }\n return null;\n }\n getBaseHref(doc) {\n const href = getBaseElementHref();\n return href == null ? null : relativePath(href);\n }\n resetBaseElement() {\n baseElement = null;\n }\n getUserAgent() {\n return window.navigator.userAgent;\n }\n getCookie(name) {\n return ɵparseCookieValue(document.cookie, name);\n }\n}\nlet baseElement = null;\nfunction getBaseElementHref() {\n baseElement = baseElement || document.querySelector('base');\n return baseElement ? baseElement.getAttribute('href') : null;\n}\nfunction relativePath(url) {\n // The base URL doesn't really matter, we just need it so relative paths have something\n // to resolve against. In the browser `HTMLBaseElement.href` is always absolute.\n return new URL(url, document.baseURI).pathname;\n}\n\nclass BrowserGetTestability {\n addToWindow(registry) {\n ɵglobal['getAngularTestability'] = (elem, findInAncestors = true) => {\n const testability = registry.findTestabilityInTree(elem, findInAncestors);\n if (testability == null) {\n throw new ɵRuntimeError(5103 /* RuntimeErrorCode.TESTABILITY_NOT_FOUND */, (typeof ngDevMode === 'undefined' || ngDevMode) &&\n 'Could not find testability for element.');\n }\n return testability;\n };\n ɵglobal['getAllAngularTestabilities'] = () => registry.getAllTestabilities();\n ɵglobal['getAllAngularRootElements'] = () => registry.getAllRootElements();\n const whenAllStable = (callback) => {\n const testabilities = ɵglobal['getAllAngularTestabilities']();\n let count = testabilities.length;\n const decrement = function () {\n count--;\n if (count == 0) {\n callback();\n }\n };\n testabilities.forEach((testability) => {\n testability.whenStable(decrement);\n });\n };\n if (!ɵglobal['frameworkStabilizers']) {\n ɵglobal['frameworkStabilizers'] = [];\n }\n ɵglobal['frameworkStabilizers'].push(whenAllStable);\n }\n findTestabilityInTree(registry, elem, findInAncestors) {\n if (elem == null) {\n return null;\n }\n const t = registry.getTestability(elem);\n if (t != null) {\n return t;\n }\n else if (!findInAncestors) {\n return null;\n }\n if (ɵgetDOM().isShadowRoot(elem)) {\n return this.findTestabilityInTree(registry, elem.host, true);\n }\n return this.findTestabilityInTree(registry, elem.parentElement, true);\n }\n}\n\n/**\n * A factory for `HttpXhrBackend` that uses the `XMLHttpRequest` browser API.\n */\nclass BrowserXhr {\n build() {\n return new XMLHttpRequest();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: BrowserXhr, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: BrowserXhr }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: BrowserXhr, decorators: [{\n type: Injectable\n }] });\n\n/**\n * The injection token for plugins of the `EventManager` service.\n *\n * @publicApi\n */\nconst EVENT_MANAGER_PLUGINS = new InjectionToken(ngDevMode ? 'EventManagerPlugins' : '');\n/**\n * An injectable service that provides event management for Angular\n * through a browser plug-in.\n *\n * @publicApi\n */\nclass EventManager {\n /**\n * Initializes an instance of the event-manager service.\n */\n constructor(plugins, _zone) {\n this._zone = _zone;\n this._eventNameToPlugin = new Map();\n plugins.forEach((plugin) => {\n plugin.manager = this;\n });\n this._plugins = plugins.slice().reverse();\n }\n /**\n * Registers a handler for a specific element and event.\n *\n * @param element The HTML element to receive event notifications.\n * @param eventName The name of the event to listen for.\n * @param handler A function to call when the notification occurs. Receives the\n * event object as an argument.\n * @returns A callback function that can be used to remove the handler.\n */\n addEventListener(element, eventName, handler) {\n const plugin = this._findPluginFor(eventName);\n return plugin.addEventListener(element, eventName, handler);\n }\n /**\n * Retrieves the compilation zone in which event listeners are registered.\n */\n getZone() {\n return this._zone;\n }\n /** @internal */\n _findPluginFor(eventName) {\n let plugin = this._eventNameToPlugin.get(eventName);\n if (plugin) {\n return plugin;\n }\n const plugins = this._plugins;\n plugin = plugins.find((plugin) => plugin.supports(eventName));\n if (!plugin) {\n throw new ɵRuntimeError(5101 /* RuntimeErrorCode.NO_PLUGIN_FOR_EVENT */, (typeof ngDevMode === 'undefined' || ngDevMode) &&\n `No event manager plugin found for event ${eventName}`);\n }\n this._eventNameToPlugin.set(eventName, plugin);\n return plugin;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: EventManager, deps: [{ token: EVENT_MANAGER_PLUGINS }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: EventManager }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: EventManager, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Inject,\n args: [EVENT_MANAGER_PLUGINS]\n }] }, { type: i0.NgZone }] });\n/**\n * The plugin definition for the `EventManager` class\n *\n * It can be used as a base class to create custom manager plugins, i.e. you can create your own\n * class that extends the `EventManagerPlugin` one.\n *\n * @publicApi\n */\nclass EventManagerPlugin {\n // TODO: remove (has some usage in G3)\n constructor(_doc) {\n this._doc = _doc;\n }\n}\n\n/** The style elements attribute name used to set value of `APP_ID` token. */\nconst APP_ID_ATTRIBUTE_NAME = 'ng-app-id';\nclass SharedStylesHost {\n constructor(doc, appId, nonce, platformId = {}) {\n this.doc = doc;\n this.appId = appId;\n this.nonce = nonce;\n this.platformId = platformId;\n // Maps all registered host nodes to a list of style nodes that have been added to the host node.\n this.styleRef = new Map();\n this.hostNodes = new Set();\n this.styleNodesInDOM = this.collectServerRenderedStyles();\n this.platformIsServer = isPlatformServer(platformId);\n this.resetHostNodes();\n }\n addStyles(styles) {\n for (const style of styles) {\n const usageCount = this.changeUsageCount(style, 1);\n if (usageCount === 1) {\n this.onStyleAdded(style);\n }\n }\n }\n removeStyles(styles) {\n for (const style of styles) {\n const usageCount = this.changeUsageCount(style, -1);\n if (usageCount <= 0) {\n this.onStyleRemoved(style);\n }\n }\n }\n ngOnDestroy() {\n const styleNodesInDOM = this.styleNodesInDOM;\n if (styleNodesInDOM) {\n styleNodesInDOM.forEach((node) => node.remove());\n styleNodesInDOM.clear();\n }\n for (const style of this.getAllStyles()) {\n this.onStyleRemoved(style);\n }\n this.resetHostNodes();\n }\n addHost(hostNode) {\n this.hostNodes.add(hostNode);\n for (const style of this.getAllStyles()) {\n this.addStyleToHost(hostNode, style);\n }\n }\n removeHost(hostNode) {\n this.hostNodes.delete(hostNode);\n }\n getAllStyles() {\n return this.styleRef.keys();\n }\n onStyleAdded(style) {\n for (const host of this.hostNodes) {\n this.addStyleToHost(host, style);\n }\n }\n onStyleRemoved(style) {\n const styleRef = this.styleRef;\n styleRef.get(style)?.elements?.forEach((node) => node.remove());\n styleRef.delete(style);\n }\n collectServerRenderedStyles() {\n const styles = this.doc.head?.querySelectorAll(`style[${APP_ID_ATTRIBUTE_NAME}=\"${this.appId}\"]`);\n if (styles?.length) {\n const styleMap = new Map();\n styles.forEach((style) => {\n if (style.textContent != null) {\n styleMap.set(style.textContent, style);\n }\n });\n return styleMap;\n }\n return null;\n }\n changeUsageCount(style, delta) {\n const map = this.styleRef;\n if (map.has(style)) {\n const styleRefValue = map.get(style);\n styleRefValue.usage += delta;\n return styleRefValue.usage;\n }\n map.set(style, { usage: delta, elements: [] });\n return delta;\n }\n getStyleElement(host, style) {\n const styleNodesInDOM = this.styleNodesInDOM;\n const styleEl = styleNodesInDOM?.get(style);\n if (styleEl?.parentNode === host) {\n // `styleNodesInDOM` cannot be undefined due to the above `styleNodesInDOM?.get`.\n styleNodesInDOM.delete(style);\n styleEl.removeAttribute(APP_ID_ATTRIBUTE_NAME);\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // This attribute is solely used for debugging purposes.\n styleEl.setAttribute('ng-style-reused', '');\n }\n return styleEl;\n }\n else {\n const styleEl = this.doc.createElement('style');\n if (this.nonce) {\n styleEl.setAttribute('nonce', this.nonce);\n }\n styleEl.textContent = style;\n if (this.platformIsServer) {\n styleEl.setAttribute(APP_ID_ATTRIBUTE_NAME, this.appId);\n }\n host.appendChild(styleEl);\n return styleEl;\n }\n }\n addStyleToHost(host, style) {\n const styleEl = this.getStyleElement(host, style);\n const styleRef = this.styleRef;\n const styleElRef = styleRef.get(style)?.elements;\n if (styleElRef) {\n styleElRef.push(styleEl);\n }\n else {\n styleRef.set(style, { elements: [styleEl], usage: 1 });\n }\n }\n resetHostNodes() {\n const hostNodes = this.hostNodes;\n hostNodes.clear();\n // Re-add the head element back since this is the default host.\n hostNodes.add(this.doc.head);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: SharedStylesHost, deps: [{ token: DOCUMENT }, { token: APP_ID }, { token: CSP_NONCE, optional: true }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: SharedStylesHost }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: SharedStylesHost, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [APP_ID]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [CSP_NONCE]\n }, {\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }] });\n\nconst NAMESPACE_URIS = {\n 'svg': 'http://www.w3.org/2000/svg',\n 'xhtml': 'http://www.w3.org/1999/xhtml',\n 'xlink': 'http://www.w3.org/1999/xlink',\n 'xml': 'http://www.w3.org/XML/1998/namespace',\n 'xmlns': 'http://www.w3.org/2000/xmlns/',\n 'math': 'http://www.w3.org/1998/Math/MathML',\n};\nconst COMPONENT_REGEX = /%COMP%/g;\nconst COMPONENT_VARIABLE = '%COMP%';\nconst HOST_ATTR = `_nghost-${COMPONENT_VARIABLE}`;\nconst CONTENT_ATTR = `_ngcontent-${COMPONENT_VARIABLE}`;\n/**\n * The default value for the `REMOVE_STYLES_ON_COMPONENT_DESTROY` DI token.\n */\nconst REMOVE_STYLES_ON_COMPONENT_DESTROY_DEFAULT = true;\n/**\n * A DI token that indicates whether styles\n * of destroyed components should be removed from DOM.\n *\n * By default, the value is set to `true`.\n * @publicApi\n */\nconst REMOVE_STYLES_ON_COMPONENT_DESTROY = new InjectionToken(ngDevMode ? 'RemoveStylesOnCompDestroy' : '', {\n providedIn: 'root',\n factory: () => REMOVE_STYLES_ON_COMPONENT_DESTROY_DEFAULT,\n});\nfunction shimContentAttribute(componentShortId) {\n return CONTENT_ATTR.replace(COMPONENT_REGEX, componentShortId);\n}\nfunction shimHostAttribute(componentShortId) {\n return HOST_ATTR.replace(COMPONENT_REGEX, componentShortId);\n}\nfunction shimStylesContent(compId, styles) {\n return styles.map((s) => s.replace(COMPONENT_REGEX, compId));\n}\nclass DomRendererFactory2 {\n constructor(eventManager, sharedStylesHost, appId, removeStylesOnCompDestroy, doc, platformId, ngZone, nonce = null) {\n this.eventManager = eventManager;\n this.sharedStylesHost = sharedStylesHost;\n this.appId = appId;\n this.removeStylesOnCompDestroy = removeStylesOnCompDestroy;\n this.doc = doc;\n this.platformId = platformId;\n this.ngZone = ngZone;\n this.nonce = nonce;\n this.rendererByCompId = new Map();\n this.platformIsServer = isPlatformServer(platformId);\n this.defaultRenderer = new DefaultDomRenderer2(eventManager, doc, ngZone, this.platformIsServer);\n }\n createRenderer(element, type) {\n if (!element || !type) {\n return this.defaultRenderer;\n }\n if (this.platformIsServer && type.encapsulation === ViewEncapsulation.ShadowDom) {\n // Domino does not support shadow DOM.\n type = { ...type, encapsulation: ViewEncapsulation.Emulated };\n }\n const renderer = this.getOrCreateRenderer(element, type);\n // Renderers have different logic due to different encapsulation behaviours.\n // Ex: for emulated, an attribute is added to the element.\n if (renderer instanceof EmulatedEncapsulationDomRenderer2) {\n renderer.applyToHost(element);\n }\n else if (renderer instanceof NoneEncapsulationDomRenderer) {\n renderer.applyStyles();\n }\n return renderer;\n }\n getOrCreateRenderer(element, type) {\n const rendererByCompId = this.rendererByCompId;\n let renderer = rendererByCompId.get(type.id);\n if (!renderer) {\n const doc = this.doc;\n const ngZone = this.ngZone;\n const eventManager = this.eventManager;\n const sharedStylesHost = this.sharedStylesHost;\n const removeStylesOnCompDestroy = this.removeStylesOnCompDestroy;\n const platformIsServer = this.platformIsServer;\n switch (type.encapsulation) {\n case ViewEncapsulation.Emulated:\n renderer = new EmulatedEncapsulationDomRenderer2(eventManager, sharedStylesHost, type, this.appId, removeStylesOnCompDestroy, doc, ngZone, platformIsServer);\n break;\n case ViewEncapsulation.ShadowDom:\n return new ShadowDomRenderer(eventManager, sharedStylesHost, element, type, doc, ngZone, this.nonce, platformIsServer);\n default:\n renderer = new NoneEncapsulationDomRenderer(eventManager, sharedStylesHost, type, removeStylesOnCompDestroy, doc, ngZone, platformIsServer);\n break;\n }\n rendererByCompId.set(type.id, renderer);\n }\n return renderer;\n }\n ngOnDestroy() {\n this.rendererByCompId.clear();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: DomRendererFactory2, deps: [{ token: EventManager }, { token: SharedStylesHost }, { token: APP_ID }, { token: REMOVE_STYLES_ON_COMPONENT_DESTROY }, { token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.NgZone }, { token: CSP_NONCE }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: DomRendererFactory2 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: DomRendererFactory2, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: EventManager }, { type: SharedStylesHost }, { type: undefined, decorators: [{\n type: Inject,\n args: [APP_ID]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [REMOVE_STYLES_ON_COMPONENT_DESTROY]\n }] }, { type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [CSP_NONCE]\n }] }] });\nclass DefaultDomRenderer2 {\n constructor(eventManager, doc, ngZone, platformIsServer) {\n this.eventManager = eventManager;\n this.doc = doc;\n this.ngZone = ngZone;\n this.platformIsServer = platformIsServer;\n this.data = Object.create(null);\n /**\n * By default this renderer throws when encountering synthetic properties\n * This can be disabled for example by the AsyncAnimationRendererFactory\n */\n this.throwOnSyntheticProps = true;\n this.destroyNode = null;\n }\n destroy() { }\n createElement(name, namespace) {\n if (namespace) {\n // TODO: `|| namespace` was added in\n // https://github.com/angular/angular/commit/2b9cc8503d48173492c29f5a271b61126104fbdb to\n // support how Ivy passed around the namespace URI rather than short name at the time. It did\n // not, however extend the support to other parts of the system (setAttribute, setAttribute,\n // and the ServerRenderer). We should decide what exactly the semantics for dealing with\n // namespaces should be and make it consistent.\n // Related issues:\n // https://github.com/angular/angular/issues/44028\n // https://github.com/angular/angular/issues/44883\n return this.doc.createElementNS(NAMESPACE_URIS[namespace] || namespace, name);\n }\n return this.doc.createElement(name);\n }\n createComment(value) {\n return this.doc.createComment(value);\n }\n createText(value) {\n return this.doc.createTextNode(value);\n }\n appendChild(parent, newChild) {\n const targetParent = isTemplateNode(parent) ? parent.content : parent;\n targetParent.appendChild(newChild);\n }\n insertBefore(parent, newChild, refChild) {\n if (parent) {\n const targetParent = isTemplateNode(parent) ? parent.content : parent;\n targetParent.insertBefore(newChild, refChild);\n }\n }\n removeChild(_parent, oldChild) {\n oldChild.remove();\n }\n selectRootElement(selectorOrNode, preserveContent) {\n let el = typeof selectorOrNode === 'string' ? this.doc.querySelector(selectorOrNode) : selectorOrNode;\n if (!el) {\n throw new ɵRuntimeError(-5104 /* RuntimeErrorCode.ROOT_NODE_NOT_FOUND */, (typeof ngDevMode === 'undefined' || ngDevMode) &&\n `The selector \"${selectorOrNode}\" did not match any elements`);\n }\n if (!preserveContent) {\n el.textContent = '';\n }\n return el;\n }\n parentNode(node) {\n return node.parentNode;\n }\n nextSibling(node) {\n return node.nextSibling;\n }\n setAttribute(el, name, value, namespace) {\n if (namespace) {\n name = namespace + ':' + name;\n const namespaceUri = NAMESPACE_URIS[namespace];\n if (namespaceUri) {\n el.setAttributeNS(namespaceUri, name, value);\n }\n else {\n el.setAttribute(name, value);\n }\n }\n else {\n el.setAttribute(name, value);\n }\n }\n removeAttribute(el, name, namespace) {\n if (namespace) {\n const namespaceUri = NAMESPACE_URIS[namespace];\n if (namespaceUri) {\n el.removeAttributeNS(namespaceUri, name);\n }\n else {\n el.removeAttribute(`${namespace}:${name}`);\n }\n }\n else {\n el.removeAttribute(name);\n }\n }\n addClass(el, name) {\n el.classList.add(name);\n }\n removeClass(el, name) {\n el.classList.remove(name);\n }\n setStyle(el, style, value, flags) {\n if (flags & (RendererStyleFlags2.DashCase | RendererStyleFlags2.Important)) {\n el.style.setProperty(style, value, flags & RendererStyleFlags2.Important ? 'important' : '');\n }\n else {\n el.style[style] = value;\n }\n }\n removeStyle(el, style, flags) {\n if (flags & RendererStyleFlags2.DashCase) {\n // removeProperty has no effect when used on camelCased properties.\n el.style.removeProperty(style);\n }\n else {\n el.style[style] = '';\n }\n }\n setProperty(el, name, value) {\n if (el == null) {\n return;\n }\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n this.throwOnSyntheticProps &&\n checkNoSyntheticProp(name, 'property');\n el[name] = value;\n }\n setValue(node, value) {\n node.nodeValue = value;\n }\n listen(target, event, callback) {\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n this.throwOnSyntheticProps &&\n checkNoSyntheticProp(event, 'listener');\n if (typeof target === 'string') {\n target = ɵgetDOM().getGlobalEventTarget(this.doc, target);\n if (!target) {\n throw new Error(`Unsupported event target ${target} for event ${event}`);\n }\n }\n return this.eventManager.addEventListener(target, event, this.decoratePreventDefault(callback));\n }\n decoratePreventDefault(eventHandler) {\n // `DebugNode.triggerEventHandler` needs to know if the listener was created with\n // decoratePreventDefault or is a listener added outside the Angular context so it can handle\n // the two differently. In the first case, the special '__ngUnwrap__' token is passed to the\n // unwrap the listener (see below).\n return (event) => {\n // Ivy uses '__ngUnwrap__' as a special token that allows us to unwrap the function\n // so that it can be invoked programmatically by `DebugNode.triggerEventHandler`. The\n // debug_node can inspect the listener toString contents for the existence of this special\n // token. Because the token is a string literal, it is ensured to not be modified by compiled\n // code.\n if (event === '__ngUnwrap__') {\n return eventHandler;\n }\n // Run the event handler inside the ngZone because event handlers are not patched\n // by Zone on the server. This is required only for tests.\n const allowDefaultBehavior = this.platformIsServer\n ? this.ngZone.runGuarded(() => eventHandler(event))\n : eventHandler(event);\n if (allowDefaultBehavior === false) {\n event.preventDefault();\n }\n return undefined;\n };\n }\n}\nconst AT_CHARCODE = (() => '@'.charCodeAt(0))();\nfunction checkNoSyntheticProp(name, nameKind) {\n if (name.charCodeAt(0) === AT_CHARCODE) {\n throw new ɵRuntimeError(5105 /* RuntimeErrorCode.UNEXPECTED_SYNTHETIC_PROPERTY */, `Unexpected synthetic ${nameKind} ${name} found. Please make sure that:\n - Either \\`BrowserAnimationsModule\\` or \\`NoopAnimationsModule\\` are imported in your application.\n - There is corresponding configuration for the animation named \\`${name}\\` defined in the \\`animations\\` field of the \\`@Component\\` decorator (see https://angular.io/api/core/Component#animations).`);\n }\n}\nfunction isTemplateNode(node) {\n return node.tagName === 'TEMPLATE' && node.content !== undefined;\n}\nclass ShadowDomRenderer extends DefaultDomRenderer2 {\n constructor(eventManager, sharedStylesHost, hostEl, component, doc, ngZone, nonce, platformIsServer) {\n super(eventManager, doc, ngZone, platformIsServer);\n this.sharedStylesHost = sharedStylesHost;\n this.hostEl = hostEl;\n this.shadowRoot = hostEl.attachShadow({ mode: 'open' });\n this.sharedStylesHost.addHost(this.shadowRoot);\n const styles = shimStylesContent(component.id, component.styles);\n for (const style of styles) {\n const styleEl = document.createElement('style');\n if (nonce) {\n styleEl.setAttribute('nonce', nonce);\n }\n styleEl.textContent = style;\n this.shadowRoot.appendChild(styleEl);\n }\n }\n nodeOrShadowRoot(node) {\n return node === this.hostEl ? this.shadowRoot : node;\n }\n appendChild(parent, newChild) {\n return super.appendChild(this.nodeOrShadowRoot(parent), newChild);\n }\n insertBefore(parent, newChild, refChild) {\n return super.insertBefore(this.nodeOrShadowRoot(parent), newChild, refChild);\n }\n removeChild(_parent, oldChild) {\n return super.removeChild(null, oldChild);\n }\n parentNode(node) {\n return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(node)));\n }\n destroy() {\n this.sharedStylesHost.removeHost(this.shadowRoot);\n }\n}\nclass NoneEncapsulationDomRenderer extends DefaultDomRenderer2 {\n constructor(eventManager, sharedStylesHost, component, removeStylesOnCompDestroy, doc, ngZone, platformIsServer, compId) {\n super(eventManager, doc, ngZone, platformIsServer);\n this.sharedStylesHost = sharedStylesHost;\n this.removeStylesOnCompDestroy = removeStylesOnCompDestroy;\n this.styles = compId ? shimStylesContent(compId, component.styles) : component.styles;\n }\n applyStyles() {\n this.sharedStylesHost.addStyles(this.styles);\n }\n destroy() {\n if (!this.removeStylesOnCompDestroy) {\n return;\n }\n this.sharedStylesHost.removeStyles(this.styles);\n }\n}\nclass EmulatedEncapsulationDomRenderer2 extends NoneEncapsulationDomRenderer {\n constructor(eventManager, sharedStylesHost, component, appId, removeStylesOnCompDestroy, doc, ngZone, platformIsServer) {\n const compId = appId + '-' + component.id;\n super(eventManager, sharedStylesHost, component, removeStylesOnCompDestroy, doc, ngZone, platformIsServer, compId);\n this.contentAttr = shimContentAttribute(compId);\n this.hostAttr = shimHostAttribute(compId);\n }\n applyToHost(element) {\n this.applyStyles();\n this.setAttribute(element, this.hostAttr, '');\n }\n createElement(parent, name) {\n const el = super.createElement(parent, name);\n super.setAttribute(el, this.contentAttr, '');\n return el;\n }\n}\n\nclass DomEventsPlugin extends EventManagerPlugin {\n constructor(doc) {\n super(doc);\n }\n // This plugin should come last in the list of plugins, because it accepts all\n // events.\n supports(eventName) {\n return true;\n }\n addEventListener(element, eventName, handler) {\n element.addEventListener(eventName, handler, false);\n return () => this.removeEventListener(element, eventName, handler);\n }\n removeEventListener(target, eventName, callback) {\n return target.removeEventListener(eventName, callback);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: DomEventsPlugin, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: DomEventsPlugin }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: DomEventsPlugin, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }] });\n\n/**\n * Defines supported modifiers for key events.\n */\nconst MODIFIER_KEYS = ['alt', 'control', 'meta', 'shift'];\n// The following values are here for cross-browser compatibility and to match the W3C standard\n// cf https://www.w3.org/TR/DOM-Level-3-Events-key/\nconst _keyMap = {\n '\\b': 'Backspace',\n '\\t': 'Tab',\n '\\x7F': 'Delete',\n '\\x1B': 'Escape',\n 'Del': 'Delete',\n 'Esc': 'Escape',\n 'Left': 'ArrowLeft',\n 'Right': 'ArrowRight',\n 'Up': 'ArrowUp',\n 'Down': 'ArrowDown',\n 'Menu': 'ContextMenu',\n 'Scroll': 'ScrollLock',\n 'Win': 'OS',\n};\n/**\n * Retrieves modifiers from key-event objects.\n */\nconst MODIFIER_KEY_GETTERS = {\n 'alt': (event) => event.altKey,\n 'control': (event) => event.ctrlKey,\n 'meta': (event) => event.metaKey,\n 'shift': (event) => event.shiftKey,\n};\n/**\n * A browser plug-in that provides support for handling of key events in Angular.\n */\nclass KeyEventsPlugin extends EventManagerPlugin {\n /**\n * Initializes an instance of the browser plug-in.\n * @param doc The document in which key events will be detected.\n */\n constructor(doc) {\n super(doc);\n }\n /**\n * Reports whether a named key event is supported.\n * @param eventName The event name to query.\n * @return True if the named key event is supported.\n */\n supports(eventName) {\n return KeyEventsPlugin.parseEventName(eventName) != null;\n }\n /**\n * Registers a handler for a specific element and key event.\n * @param element The HTML element to receive event notifications.\n * @param eventName The name of the key event to listen for.\n * @param handler A function to call when the notification occurs. Receives the\n * event object as an argument.\n * @returns The key event that was registered.\n */\n addEventListener(element, eventName, handler) {\n const parsedEvent = KeyEventsPlugin.parseEventName(eventName);\n const outsideHandler = KeyEventsPlugin.eventCallback(parsedEvent['fullKey'], handler, this.manager.getZone());\n return this.manager.getZone().runOutsideAngular(() => {\n return ɵgetDOM().onAndCancel(element, parsedEvent['domEventName'], outsideHandler);\n });\n }\n /**\n * Parses the user provided full keyboard event definition and normalizes it for\n * later internal use. It ensures the string is all lowercase, converts special\n * characters to a standard spelling, and orders all the values consistently.\n *\n * @param eventName The name of the key event to listen for.\n * @returns an object with the full, normalized string, and the dom event name\n * or null in the case when the event doesn't match a keyboard event.\n */\n static parseEventName(eventName) {\n const parts = eventName.toLowerCase().split('.');\n const domEventName = parts.shift();\n if (parts.length === 0 || !(domEventName === 'keydown' || domEventName === 'keyup')) {\n return null;\n }\n const key = KeyEventsPlugin._normalizeKey(parts.pop());\n let fullKey = '';\n let codeIX = parts.indexOf('code');\n if (codeIX > -1) {\n parts.splice(codeIX, 1);\n fullKey = 'code.';\n }\n MODIFIER_KEYS.forEach((modifierName) => {\n const index = parts.indexOf(modifierName);\n if (index > -1) {\n parts.splice(index, 1);\n fullKey += modifierName + '.';\n }\n });\n fullKey += key;\n if (parts.length != 0 || key.length === 0) {\n // returning null instead of throwing to let another plugin process the event\n return null;\n }\n // NOTE: Please don't rewrite this as so, as it will break JSCompiler property renaming.\n // The code must remain in the `result['domEventName']` form.\n // return {domEventName, fullKey};\n const result = {};\n result['domEventName'] = domEventName;\n result['fullKey'] = fullKey;\n return result;\n }\n /**\n * Determines whether the actual keys pressed match the configured key code string.\n * The `fullKeyCode` event is normalized in the `parseEventName` method when the\n * event is attached to the DOM during the `addEventListener` call. This is unseen\n * by the end user and is normalized for internal consistency and parsing.\n *\n * @param event The keyboard event.\n * @param fullKeyCode The normalized user defined expected key event string\n * @returns boolean.\n */\n static matchEventFullKeyCode(event, fullKeyCode) {\n let keycode = _keyMap[event.key] || event.key;\n let key = '';\n if (fullKeyCode.indexOf('code.') > -1) {\n keycode = event.code;\n key = 'code.';\n }\n // the keycode could be unidentified so we have to check here\n if (keycode == null || !keycode)\n return false;\n keycode = keycode.toLowerCase();\n if (keycode === ' ') {\n keycode = 'space'; // for readability\n }\n else if (keycode === '.') {\n keycode = 'dot'; // because '.' is used as a separator in event names\n }\n MODIFIER_KEYS.forEach((modifierName) => {\n if (modifierName !== keycode) {\n const modifierGetter = MODIFIER_KEY_GETTERS[modifierName];\n if (modifierGetter(event)) {\n key += modifierName + '.';\n }\n }\n });\n key += keycode;\n return key === fullKeyCode;\n }\n /**\n * Configures a handler callback for a key event.\n * @param fullKey The event name that combines all simultaneous keystrokes.\n * @param handler The function that responds to the key event.\n * @param zone The zone in which the event occurred.\n * @returns A callback function.\n */\n static eventCallback(fullKey, handler, zone) {\n return (event) => {\n if (KeyEventsPlugin.matchEventFullKeyCode(event, fullKey)) {\n zone.runGuarded(() => handler(event));\n }\n };\n }\n /** @internal */\n static _normalizeKey(keyName) {\n return keyName === 'esc' ? 'escape' : keyName;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: KeyEventsPlugin, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: KeyEventsPlugin }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: KeyEventsPlugin, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }] });\n\n/**\n * Bootstraps an instance of an Angular application and renders a standalone component as the\n * application's root component. More information about standalone components can be found in [this\n * guide](guide/components/importing).\n *\n * @usageNotes\n * The root component passed into this function *must* be a standalone one (should have the\n * `standalone: true` flag in the `@Component` decorator config).\n *\n * ```typescript\n * @Component({\n * standalone: true,\n * template: 'Hello world!'\n * })\n * class RootComponent {}\n *\n * const appRef: ApplicationRef = await bootstrapApplication(RootComponent);\n * ```\n *\n * You can add the list of providers that should be available in the application injector by\n * specifying the `providers` field in an object passed as the second argument:\n *\n * ```typescript\n * await bootstrapApplication(RootComponent, {\n * providers: [\n * {provide: BACKEND_URL, useValue: 'https://yourdomain.com/api'}\n * ]\n * });\n * ```\n *\n * The `importProvidersFrom` helper method can be used to collect all providers from any\n * existing NgModule (and transitively from all NgModules that it imports):\n *\n * ```typescript\n * await bootstrapApplication(RootComponent, {\n * providers: [\n * importProvidersFrom(SomeNgModule)\n * ]\n * });\n * ```\n *\n * Note: the `bootstrapApplication` method doesn't include [Testability](api/core/Testability) by\n * default. You can add [Testability](api/core/Testability) by getting the list of necessary\n * providers using `provideProtractorTestingSupport()` function and adding them into the `providers`\n * array, for example:\n *\n * ```typescript\n * import {provideProtractorTestingSupport} from '@angular/platform-browser';\n *\n * await bootstrapApplication(RootComponent, {providers: [provideProtractorTestingSupport()]});\n * ```\n *\n * @param rootComponent A reference to a standalone component that should be rendered.\n * @param options Extra configuration for the bootstrap operation, see `ApplicationConfig` for\n * additional info.\n * @returns A promise that returns an `ApplicationRef` instance once resolved.\n *\n * @publicApi\n */\nfunction bootstrapApplication(rootComponent, options) {\n return ɵinternalCreateApplication({ rootComponent, ...createProvidersConfig(options) });\n}\n/**\n * Create an instance of an Angular application without bootstrapping any components. This is useful\n * for the situation where one wants to decouple application environment creation (a platform and\n * associated injectors) from rendering components on a screen. Components can be subsequently\n * bootstrapped on the returned `ApplicationRef`.\n *\n * @param options Extra configuration for the application environment, see `ApplicationConfig` for\n * additional info.\n * @returns A promise that returns an `ApplicationRef` instance once resolved.\n *\n * @publicApi\n */\nfunction createApplication(options) {\n return ɵinternalCreateApplication(createProvidersConfig(options));\n}\nfunction createProvidersConfig(options) {\n return {\n appProviders: [...BROWSER_MODULE_PROVIDERS, ...(options?.providers ?? [])],\n platformProviders: INTERNAL_BROWSER_PLATFORM_PROVIDERS,\n };\n}\n/**\n * Returns a set of providers required to setup [Testability](api/core/Testability) for an\n * application bootstrapped using the `bootstrapApplication` function. The set of providers is\n * needed to support testing an application with Protractor (which relies on the Testability APIs\n * to be present).\n *\n * @returns An array of providers required to setup Testability for an application and make it\n * available for testing using Protractor.\n *\n * @publicApi\n */\nfunction provideProtractorTestingSupport() {\n // Return a copy to prevent changes to the original array in case any in-place\n // alterations are performed to the `provideProtractorTestingSupport` call results in app\n // code.\n return [...TESTABILITY_PROVIDERS];\n}\nfunction initDomAdapter() {\n BrowserDomAdapter.makeCurrent();\n}\nfunction errorHandler() {\n return new ErrorHandler();\n}\nfunction _document() {\n // Tell ivy about the global document\n ɵsetDocument(document);\n return document;\n}\nconst INTERNAL_BROWSER_PLATFORM_PROVIDERS = [\n { provide: PLATFORM_ID, useValue: ɵPLATFORM_BROWSER_ID },\n { provide: PLATFORM_INITIALIZER, useValue: initDomAdapter, multi: true },\n { provide: DOCUMENT, useFactory: _document, deps: [] },\n];\n/**\n * A factory function that returns a `PlatformRef` instance associated with browser service\n * providers.\n *\n * @publicApi\n */\nconst platformBrowser = createPlatformFactory(platformCore, 'browser', INTERNAL_BROWSER_PLATFORM_PROVIDERS);\n/**\n * Internal marker to signal whether providers from the `BrowserModule` are already present in DI.\n * This is needed to avoid loading `BrowserModule` providers twice. We can't rely on the\n * `BrowserModule` presence itself, since the standalone-based bootstrap just imports\n * `BrowserModule` providers without referencing the module itself.\n */\nconst BROWSER_MODULE_PROVIDERS_MARKER = new InjectionToken(typeof ngDevMode === 'undefined' || ngDevMode ? 'BrowserModule Providers Marker' : '');\nconst TESTABILITY_PROVIDERS = [\n {\n provide: ɵTESTABILITY_GETTER,\n useClass: BrowserGetTestability,\n deps: [],\n },\n {\n provide: ɵTESTABILITY,\n useClass: Testability,\n deps: [NgZone, TestabilityRegistry, ɵTESTABILITY_GETTER],\n },\n {\n provide: Testability, // Also provide as `Testability` for backwards-compatibility.\n useClass: Testability,\n deps: [NgZone, TestabilityRegistry, ɵTESTABILITY_GETTER],\n },\n];\nconst BROWSER_MODULE_PROVIDERS = [\n { provide: ɵINJECTOR_SCOPE, useValue: 'root' },\n { provide: ErrorHandler, useFactory: errorHandler, deps: [] },\n {\n provide: EVENT_MANAGER_PLUGINS,\n useClass: DomEventsPlugin,\n multi: true,\n deps: [DOCUMENT, NgZone, PLATFORM_ID],\n },\n { provide: EVENT_MANAGER_PLUGINS, useClass: KeyEventsPlugin, multi: true, deps: [DOCUMENT] },\n DomRendererFactory2,\n SharedStylesHost,\n EventManager,\n { provide: RendererFactory2, useExisting: DomRendererFactory2 },\n { provide: XhrFactory, useClass: BrowserXhr, deps: [] },\n typeof ngDevMode === 'undefined' || ngDevMode\n ? { provide: BROWSER_MODULE_PROVIDERS_MARKER, useValue: true }\n : [],\n];\n/**\n * Exports required infrastructure for all Angular apps.\n * Included by default in all Angular apps created with the CLI\n * `new` command.\n * Re-exports `CommonModule` and `ApplicationModule`, making their\n * exports and providers available to all apps.\n *\n * @publicApi\n */\nclass BrowserModule {\n constructor(providersAlreadyPresent) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && providersAlreadyPresent) {\n throw new ɵRuntimeError(5100 /* RuntimeErrorCode.BROWSER_MODULE_ALREADY_LOADED */, `Providers from the \\`BrowserModule\\` have already been loaded. If you need access ` +\n `to common directives such as NgIf and NgFor, import the \\`CommonModule\\` instead.`);\n }\n }\n /**\n * Configures a browser-based app to transition from a server-rendered app, if\n * one is present on the page.\n *\n * @param params An object containing an identifier for the app to transition.\n * The ID must match between the client and server versions of the app.\n * @returns The reconfigured `BrowserModule` to import into the app's root `AppModule`.\n *\n * @deprecated Use {@link APP_ID} instead to set the application ID.\n */\n static withServerTransition(params) {\n return {\n ngModule: BrowserModule,\n providers: [{ provide: APP_ID, useValue: params.appId }],\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: BrowserModule, deps: [{ token: BROWSER_MODULE_PROVIDERS_MARKER, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"18.2.12\", ngImport: i0, type: BrowserModule, exports: [CommonModule, ApplicationModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: BrowserModule, providers: [...BROWSER_MODULE_PROVIDERS, ...TESTABILITY_PROVIDERS], imports: [CommonModule, ApplicationModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: BrowserModule, decorators: [{\n type: NgModule,\n args: [{\n providers: [...BROWSER_MODULE_PROVIDERS, ...TESTABILITY_PROVIDERS],\n exports: [CommonModule, ApplicationModule],\n }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: SkipSelf\n }, {\n type: Inject,\n args: [BROWSER_MODULE_PROVIDERS_MARKER]\n }] }] });\n\n/**\n * A service for managing HTML `<meta>` tags.\n *\n * Properties of the `MetaDefinition` object match the attributes of the\n * HTML `<meta>` tag. These tags define document metadata that is important for\n * things like configuring a Content Security Policy, defining browser compatibility\n * and security settings, setting HTTP Headers, defining rich content for social sharing,\n * and Search Engine Optimization (SEO).\n *\n * To identify specific `<meta>` tags in a document, use an attribute selection\n * string in the format `\"tag_attribute='value string'\"`.\n * For example, an `attrSelector` value of `\"name='description'\"` matches a tag\n * whose `name` attribute has the value `\"description\"`.\n * Selectors are used with the `querySelector()` Document method,\n * in the format `meta[{attrSelector}]`.\n *\n * @see [HTML meta tag](https://developer.mozilla.org/docs/Web/HTML/Element/meta)\n * @see [Document.querySelector()](https://developer.mozilla.org/docs/Web/API/Document/querySelector)\n *\n *\n * @publicApi\n */\nclass Meta {\n constructor(_doc) {\n this._doc = _doc;\n this._dom = ɵgetDOM();\n }\n /**\n * Retrieves or creates a specific `<meta>` tag element in the current HTML document.\n * In searching for an existing tag, Angular attempts to match the `name` or `property` attribute\n * values in the provided tag definition, and verifies that all other attribute values are equal.\n * If an existing element is found, it is returned and is not modified in any way.\n * @param tag The definition of a `<meta>` element to match or create.\n * @param forceCreation True to create a new element without checking whether one already exists.\n * @returns The existing element with the same attributes and values if found,\n * the new element if no match is found, or `null` if the tag parameter is not defined.\n */\n addTag(tag, forceCreation = false) {\n if (!tag)\n return null;\n return this._getOrCreateElement(tag, forceCreation);\n }\n /**\n * Retrieves or creates a set of `<meta>` tag elements in the current HTML document.\n * In searching for an existing tag, Angular attempts to match the `name` or `property` attribute\n * values in the provided tag definition, and verifies that all other attribute values are equal.\n * @param tags An array of tag definitions to match or create.\n * @param forceCreation True to create new elements without checking whether they already exist.\n * @returns The matching elements if found, or the new elements.\n */\n addTags(tags, forceCreation = false) {\n if (!tags)\n return [];\n return tags.reduce((result, tag) => {\n if (tag) {\n result.push(this._getOrCreateElement(tag, forceCreation));\n }\n return result;\n }, []);\n }\n /**\n * Retrieves a `<meta>` tag element in the current HTML document.\n * @param attrSelector The tag attribute and value to match against, in the format\n * `\"tag_attribute='value string'\"`.\n * @returns The matching element, if any.\n */\n getTag(attrSelector) {\n if (!attrSelector)\n return null;\n return this._doc.querySelector(`meta[${attrSelector}]`) || null;\n }\n /**\n * Retrieves a set of `<meta>` tag elements in the current HTML document.\n * @param attrSelector The tag attribute and value to match against, in the format\n * `\"tag_attribute='value string'\"`.\n * @returns The matching elements, if any.\n */\n getTags(attrSelector) {\n if (!attrSelector)\n return [];\n const list /*NodeList*/ = this._doc.querySelectorAll(`meta[${attrSelector}]`);\n return list ? [].slice.call(list) : [];\n }\n /**\n * Modifies an existing `<meta>` tag element in the current HTML document.\n * @param tag The tag description with which to replace the existing tag content.\n * @param selector A tag attribute and value to match against, to identify\n * an existing tag. A string in the format `\"tag_attribute=`value string`\"`.\n * If not supplied, matches a tag with the same `name` or `property` attribute value as the\n * replacement tag.\n * @return The modified element.\n */\n updateTag(tag, selector) {\n if (!tag)\n return null;\n selector = selector || this._parseSelector(tag);\n const meta = this.getTag(selector);\n if (meta) {\n return this._setMetaElementAttributes(tag, meta);\n }\n return this._getOrCreateElement(tag, true);\n }\n /**\n * Removes an existing `<meta>` tag element from the current HTML document.\n * @param attrSelector A tag attribute and value to match against, to identify\n * an existing tag. A string in the format `\"tag_attribute=`value string`\"`.\n */\n removeTag(attrSelector) {\n this.removeTagElement(this.getTag(attrSelector));\n }\n /**\n * Removes an existing `<meta>` tag element from the current HTML document.\n * @param meta The tag definition to match against to identify an existing tag.\n */\n removeTagElement(meta) {\n if (meta) {\n this._dom.remove(meta);\n }\n }\n _getOrCreateElement(meta, forceCreation = false) {\n if (!forceCreation) {\n const selector = this._parseSelector(meta);\n // It's allowed to have multiple elements with the same name so it's not enough to\n // just check that element with the same name already present on the page. We also need to\n // check if element has tag attributes\n const elem = this.getTags(selector).filter((elem) => this._containsAttributes(meta, elem))[0];\n if (elem !== undefined)\n return elem;\n }\n const element = this._dom.createElement('meta');\n this._setMetaElementAttributes(meta, element);\n const head = this._doc.getElementsByTagName('head')[0];\n head.appendChild(element);\n return element;\n }\n _setMetaElementAttributes(tag, el) {\n Object.keys(tag).forEach((prop) => el.setAttribute(this._getMetaKeyMap(prop), tag[prop]));\n return el;\n }\n _parseSelector(tag) {\n const attr = tag.name ? 'name' : 'property';\n return `${attr}=\"${tag[attr]}\"`;\n }\n _containsAttributes(tag, elem) {\n return Object.keys(tag).every((key) => elem.getAttribute(this._getMetaKeyMap(key)) === tag[key]);\n }\n _getMetaKeyMap(prop) {\n return META_KEYS_MAP[prop] || prop;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: Meta, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: Meta, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: Meta, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }] });\n/**\n * Mapping for MetaDefinition properties with their correct meta attribute names\n */\nconst META_KEYS_MAP = {\n httpEquiv: 'http-equiv',\n};\n\n/**\n * A service that can be used to get and set the title of a current HTML document.\n *\n * Since an Angular application can't be bootstrapped on the entire HTML document (`<html>` tag)\n * it is not possible to bind to the `text` property of the `HTMLTitleElement` elements\n * (representing the `<title>` tag). Instead, this service can be used to set and get the current\n * title value.\n *\n * @publicApi\n */\nclass Title {\n constructor(_doc) {\n this._doc = _doc;\n }\n /**\n * Get the title of the current HTML document.\n */\n getTitle() {\n return this._doc.title;\n }\n /**\n * Set the title of the current HTML document.\n * @param newTitle\n */\n setTitle(newTitle) {\n this._doc.title = newTitle || '';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: Title, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: Title, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: Title, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }] });\n\n/**\n * Exports the value under a given `name` in the global property `ng`. For example `ng.probe` if\n * `name` is `'probe'`.\n * @param name Name under which it will be exported. Keep in mind this will be a property of the\n * global `ng` object.\n * @param value The value to export.\n */\nfunction exportNgVar(name, value) {\n if (typeof COMPILED === 'undefined' || !COMPILED) {\n // Note: we can't export `ng` when using closure enhanced optimization as:\n // - closure declares globals itself for minified names, which sometimes clobber our `ng` global\n // - we can't declare a closure extern as the namespace `ng` is already used within Google\n // for typings for angularJS (via `goog.provide('ng....')`).\n const ng = (ɵglobal['ng'] = ɵglobal['ng'] || {});\n ng[name] = value;\n }\n}\n\nclass ChangeDetectionPerfRecord {\n constructor(msPerTick, numTicks) {\n this.msPerTick = msPerTick;\n this.numTicks = numTicks;\n }\n}\n/**\n * Entry point for all Angular profiling-related debug tools. This object\n * corresponds to the `ng.profiler` in the dev console.\n */\nclass AngularProfiler {\n constructor(ref) {\n this.appRef = ref.injector.get(ApplicationRef);\n }\n // tslint:disable:no-console\n /**\n * Exercises change detection in a loop and then prints the average amount of\n * time in milliseconds how long a single round of change detection takes for\n * the current state of the UI. It runs a minimum of 5 rounds for a minimum\n * of 500 milliseconds.\n *\n * Optionally, a user may pass a `config` parameter containing a map of\n * options. Supported options are:\n *\n * `record` (boolean) - causes the profiler to record a CPU profile while\n * it exercises the change detector. Example:\n *\n * ```\n * ng.profiler.timeChangeDetection({record: true})\n * ```\n */\n timeChangeDetection(config) {\n const record = config && config['record'];\n const profileName = 'Change Detection';\n // Profiler is not available in Android browsers without dev tools opened\n if (record && 'profile' in console && typeof console.profile === 'function') {\n console.profile(profileName);\n }\n const start = performance.now();\n let numTicks = 0;\n while (numTicks < 5 || performance.now() - start < 500) {\n this.appRef.tick();\n numTicks++;\n }\n const end = performance.now();\n if (record && 'profileEnd' in console && typeof console.profileEnd === 'function') {\n console.profileEnd(profileName);\n }\n const msPerTick = (end - start) / numTicks;\n console.log(`ran ${numTicks} change detection cycles`);\n console.log(`${msPerTick.toFixed(2)} ms per check`);\n return new ChangeDetectionPerfRecord(msPerTick, numTicks);\n }\n}\n\nconst PROFILER_GLOBAL_NAME = 'profiler';\n/**\n * Enabled Angular debug tools that are accessible via your browser's\n * developer console.\n *\n * Usage:\n *\n * 1. Open developer console (e.g. in Chrome Ctrl + Shift + j)\n * 1. Type `ng.` (usually the console will show auto-complete suggestion)\n * 1. Try the change detection profiler `ng.profiler.timeChangeDetection()`\n * then hit Enter.\n *\n * @publicApi\n */\nfunction enableDebugTools(ref) {\n exportNgVar(PROFILER_GLOBAL_NAME, new AngularProfiler(ref));\n return ref;\n}\n/**\n * Disables Angular tools.\n *\n * @publicApi\n */\nfunction disableDebugTools() {\n exportNgVar(PROFILER_GLOBAL_NAME, null);\n}\n\n/**\n * Predicates for use with {@link DebugElement}'s query functions.\n *\n * @publicApi\n */\nclass By {\n /**\n * Match all nodes.\n *\n * @usageNotes\n * ### Example\n *\n * {@example platform-browser/dom/debug/ts/by/by.ts region='by_all'}\n */\n static all() {\n return () => true;\n }\n /**\n * Match elements by the given CSS selector.\n *\n * @usageNotes\n * ### Example\n *\n * {@example platform-browser/dom/debug/ts/by/by.ts region='by_css'}\n */\n static css(selector) {\n return (debugElement) => {\n return debugElement.nativeElement != null\n ? elementMatches(debugElement.nativeElement, selector)\n : false;\n };\n }\n /**\n * Match nodes that have the given directive present.\n *\n * @usageNotes\n * ### Example\n *\n * {@example platform-browser/dom/debug/ts/by/by.ts region='by_directive'}\n */\n static directive(type) {\n return (debugNode) => debugNode.providerTokens.indexOf(type) !== -1;\n }\n}\nfunction elementMatches(n, selector) {\n if (ɵgetDOM().isElementNode(n)) {\n return ((n.matches && n.matches(selector)) ||\n (n.msMatchesSelector && n.msMatchesSelector(selector)) ||\n (n.webkitMatchesSelector && n.webkitMatchesSelector(selector)));\n }\n return false;\n}\n\n/**\n * Supported HammerJS recognizer event names.\n */\nconst EVENT_NAMES = {\n // pan\n 'pan': true,\n 'panstart': true,\n 'panmove': true,\n 'panend': true,\n 'pancancel': true,\n 'panleft': true,\n 'panright': true,\n 'panup': true,\n 'pandown': true,\n // pinch\n 'pinch': true,\n 'pinchstart': true,\n 'pinchmove': true,\n 'pinchend': true,\n 'pinchcancel': true,\n 'pinchin': true,\n 'pinchout': true,\n // press\n 'press': true,\n 'pressup': true,\n // rotate\n 'rotate': true,\n 'rotatestart': true,\n 'rotatemove': true,\n 'rotateend': true,\n 'rotatecancel': true,\n // swipe\n 'swipe': true,\n 'swipeleft': true,\n 'swiperight': true,\n 'swipeup': true,\n 'swipedown': true,\n // tap\n 'tap': true,\n 'doubletap': true,\n};\n/**\n * DI token for providing [HammerJS](https://hammerjs.github.io/) support to Angular.\n * @see {@link HammerGestureConfig}\n *\n * @ngModule HammerModule\n * @publicApi\n */\nconst HAMMER_GESTURE_CONFIG = new InjectionToken('HammerGestureConfig');\n/**\n * Injection token used to provide a HammerLoader to Angular.\n *\n * @see {@link HammerLoader}\n *\n * @publicApi\n */\nconst HAMMER_LOADER = new InjectionToken('HammerLoader');\n/**\n * An injectable [HammerJS Manager](https://hammerjs.github.io/api/#hammermanager)\n * for gesture recognition. Configures specific event recognition.\n * @publicApi\n */\nclass HammerGestureConfig {\n constructor() {\n /**\n * A set of supported event names for gestures to be used in Angular.\n * Angular supports all built-in recognizers, as listed in\n * [HammerJS documentation](https://hammerjs.github.io/).\n */\n this.events = [];\n /**\n * Maps gesture event names to a set of configuration options\n * that specify overrides to the default values for specific properties.\n *\n * The key is a supported event name to be configured,\n * and the options object contains a set of properties, with override values\n * to be applied to the named recognizer event.\n * For example, to disable recognition of the rotate event, specify\n * `{\"rotate\": {\"enable\": false}}`.\n *\n * Properties that are not present take the HammerJS default values.\n * For information about which properties are supported for which events,\n * and their allowed and default values, see\n * [HammerJS documentation](https://hammerjs.github.io/).\n *\n */\n this.overrides = {};\n }\n /**\n * Creates a [HammerJS Manager](https://hammerjs.github.io/api/#hammermanager)\n * and attaches it to a given HTML element.\n * @param element The element that will recognize gestures.\n * @returns A HammerJS event-manager object.\n */\n buildHammer(element) {\n const mc = new Hammer(element, this.options);\n mc.get('pinch').set({ enable: true });\n mc.get('rotate').set({ enable: true });\n for (const eventName in this.overrides) {\n mc.get(eventName).set(this.overrides[eventName]);\n }\n return mc;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: HammerGestureConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: HammerGestureConfig }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: HammerGestureConfig, decorators: [{\n type: Injectable\n }] });\n/**\n * Event plugin that adds Hammer support to an application.\n *\n * @ngModule HammerModule\n */\nclass HammerGesturesPlugin extends EventManagerPlugin {\n constructor(doc, _config, console, loader) {\n super(doc);\n this._config = _config;\n this.console = console;\n this.loader = loader;\n this._loaderPromise = null;\n }\n supports(eventName) {\n if (!EVENT_NAMES.hasOwnProperty(eventName.toLowerCase()) && !this.isCustomEvent(eventName)) {\n return false;\n }\n if (!window.Hammer && !this.loader) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n this.console.warn(`The \"${eventName}\" event cannot be bound because Hammer.JS is not ` +\n `loaded and no custom loader has been specified.`);\n }\n return false;\n }\n return true;\n }\n addEventListener(element, eventName, handler) {\n const zone = this.manager.getZone();\n eventName = eventName.toLowerCase();\n // If Hammer is not present but a loader is specified, we defer adding the event listener\n // until Hammer is loaded.\n if (!window.Hammer && this.loader) {\n this._loaderPromise = this._loaderPromise || zone.runOutsideAngular(() => this.loader());\n // This `addEventListener` method returns a function to remove the added listener.\n // Until Hammer is loaded, the returned function needs to *cancel* the registration rather\n // than remove anything.\n let cancelRegistration = false;\n let deregister = () => {\n cancelRegistration = true;\n };\n zone.runOutsideAngular(() => this._loaderPromise.then(() => {\n // If Hammer isn't actually loaded when the custom loader resolves, give up.\n if (!window.Hammer) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n this.console.warn(`The custom HAMMER_LOADER completed, but Hammer.JS is not present.`);\n }\n deregister = () => { };\n return;\n }\n if (!cancelRegistration) {\n // Now that Hammer is loaded and the listener is being loaded for real,\n // the deregistration function changes from canceling registration to\n // removal.\n deregister = this.addEventListener(element, eventName, handler);\n }\n }).catch(() => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n this.console.warn(`The \"${eventName}\" event cannot be bound because the custom ` +\n `Hammer.JS loader failed.`);\n }\n deregister = () => { };\n }));\n // Return a function that *executes* `deregister` (and not `deregister` itself) so that we\n // can change the behavior of `deregister` once the listener is added. Using a closure in\n // this way allows us to avoid any additional data structures to track listener removal.\n return () => {\n deregister();\n };\n }\n return zone.runOutsideAngular(() => {\n // Creating the manager bind events, must be done outside of angular\n const mc = this._config.buildHammer(element);\n const callback = function (eventObj) {\n zone.runGuarded(function () {\n handler(eventObj);\n });\n };\n mc.on(eventName, callback);\n return () => {\n mc.off(eventName, callback);\n // destroy mc to prevent memory leak\n if (typeof mc.destroy === 'function') {\n mc.destroy();\n }\n };\n });\n }\n isCustomEvent(eventName) {\n return this._config.events.indexOf(eventName) > -1;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: HammerGesturesPlugin, deps: [{ token: DOCUMENT }, { token: HAMMER_GESTURE_CONFIG }, { token: i0.ɵConsole }, { token: HAMMER_LOADER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: HammerGesturesPlugin }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: HammerGesturesPlugin, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: HammerGestureConfig, decorators: [{\n type: Inject,\n args: [HAMMER_GESTURE_CONFIG]\n }] }, { type: i0.ɵConsole }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [HAMMER_LOADER]\n }] }] });\n/**\n * Adds support for HammerJS.\n *\n * Import this module at the root of your application so that Angular can work with\n * HammerJS to detect gesture events.\n *\n * Note that applications still need to include the HammerJS script itself. This module\n * simply sets up the coordination layer between HammerJS and Angular's `EventManager`.\n *\n * @publicApi\n */\nclass HammerModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: HammerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"18.2.12\", ngImport: i0, type: HammerModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: HammerModule, providers: [\n {\n provide: EVENT_MANAGER_PLUGINS,\n useClass: HammerGesturesPlugin,\n multi: true,\n deps: [DOCUMENT, HAMMER_GESTURE_CONFIG, ɵConsole, [new Optional(), HAMMER_LOADER]],\n },\n { provide: HAMMER_GESTURE_CONFIG, useClass: HammerGestureConfig, deps: [] },\n ] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: HammerModule, decorators: [{\n type: NgModule,\n args: [{\n providers: [\n {\n provide: EVENT_MANAGER_PLUGINS,\n useClass: HammerGesturesPlugin,\n multi: true,\n deps: [DOCUMENT, HAMMER_GESTURE_CONFIG, ɵConsole, [new Optional(), HAMMER_LOADER]],\n },\n { provide: HAMMER_GESTURE_CONFIG, useClass: HammerGestureConfig, deps: [] },\n ],\n }]\n }] });\n\n/**\n * DomSanitizer helps preventing Cross Site Scripting Security bugs (XSS) by sanitizing\n * values to be safe to use in the different DOM contexts.\n *\n * For example, when binding a URL in an `<a [href]=\"someValue\">` hyperlink, `someValue` will be\n * sanitized so that an attacker cannot inject e.g. a `javascript:` URL that would execute code on\n * the website.\n *\n * In specific situations, it might be necessary to disable sanitization, for example if the\n * application genuinely needs to produce a `javascript:` style link with a dynamic value in it.\n * Users can bypass security by constructing a value with one of the `bypassSecurityTrust...`\n * methods, and then binding to that value from the template.\n *\n * These situations should be very rare, and extraordinary care must be taken to avoid creating a\n * Cross Site Scripting (XSS) security bug!\n *\n * When using `bypassSecurityTrust...`, make sure to call the method as early as possible and as\n * close as possible to the source of the value, to make it easy to verify no security bug is\n * created by its use.\n *\n * It is not required (and not recommended) to bypass security if the value is safe, e.g. a URL that\n * does not start with a suspicious protocol, or an HTML snippet that does not contain dangerous\n * code. The sanitizer leaves safe values intact.\n *\n * @security Calling any of the `bypassSecurityTrust...` APIs disables Angular's built-in\n * sanitization for the value passed in. Carefully check and audit all values and code paths going\n * into this call. Make sure any user data is appropriately escaped for this security context.\n * For more detail, see the [Security Guide](https://g.co/ng/security).\n *\n * @publicApi\n */\nclass DomSanitizer {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: DomSanitizer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: DomSanitizer, providedIn: 'root', useExisting: i0.forwardRef(() => DomSanitizerImpl) }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: DomSanitizer, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root', useExisting: forwardRef(() => DomSanitizerImpl) }]\n }] });\nclass DomSanitizerImpl extends DomSanitizer {\n constructor(_doc) {\n super();\n this._doc = _doc;\n }\n sanitize(ctx, value) {\n if (value == null)\n return null;\n switch (ctx) {\n case SecurityContext.NONE:\n return value;\n case SecurityContext.HTML:\n if (ɵallowSanitizationBypassAndThrow(value, \"HTML\" /* BypassType.Html */)) {\n return ɵunwrapSafeValue(value);\n }\n return ɵ_sanitizeHtml(this._doc, String(value)).toString();\n case SecurityContext.STYLE:\n if (ɵallowSanitizationBypassAndThrow(value, \"Style\" /* BypassType.Style */)) {\n return ɵunwrapSafeValue(value);\n }\n return value;\n case SecurityContext.SCRIPT:\n if (ɵallowSanitizationBypassAndThrow(value, \"Script\" /* BypassType.Script */)) {\n return ɵunwrapSafeValue(value);\n }\n throw new ɵRuntimeError(5200 /* RuntimeErrorCode.SANITIZATION_UNSAFE_SCRIPT */, (typeof ngDevMode === 'undefined' || ngDevMode) &&\n 'unsafe value used in a script context');\n case SecurityContext.URL:\n if (ɵallowSanitizationBypassAndThrow(value, \"URL\" /* BypassType.Url */)) {\n return ɵunwrapSafeValue(value);\n }\n return ɵ_sanitizeUrl(String(value));\n case SecurityContext.RESOURCE_URL:\n if (ɵallowSanitizationBypassAndThrow(value, \"ResourceURL\" /* BypassType.ResourceUrl */)) {\n return ɵunwrapSafeValue(value);\n }\n throw new ɵRuntimeError(5201 /* RuntimeErrorCode.SANITIZATION_UNSAFE_RESOURCE_URL */, (typeof ngDevMode === 'undefined' || ngDevMode) &&\n `unsafe value used in a resource URL context (see ${ɵXSS_SECURITY_URL})`);\n default:\n throw new ɵRuntimeError(5202 /* RuntimeErrorCode.SANITIZATION_UNEXPECTED_CTX */, (typeof ngDevMode === 'undefined' || ngDevMode) &&\n `Unexpected SecurityContext ${ctx} (see ${ɵXSS_SECURITY_URL})`);\n }\n }\n bypassSecurityTrustHtml(value) {\n return ɵbypassSanitizationTrustHtml(value);\n }\n bypassSecurityTrustStyle(value) {\n return ɵbypassSanitizationTrustStyle(value);\n }\n bypassSecurityTrustScript(value) {\n return ɵbypassSanitizationTrustScript(value);\n }\n bypassSecurityTrustUrl(value) {\n return ɵbypassSanitizationTrustUrl(value);\n }\n bypassSecurityTrustResourceUrl(value) {\n return ɵbypassSanitizationTrustResourceUrl(value);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: DomSanitizerImpl, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: DomSanitizerImpl, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.12\", ngImport: i0, type: DomSanitizerImpl, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }] });\n\n/**\n * The list of features as an enum to uniquely type each `HydrationFeature`.\n * @see {@link HydrationFeature}\n *\n * @publicApi\n */\nvar HydrationFeatureKind;\n(function (HydrationFeatureKind) {\n HydrationFeatureKind[HydrationFeatureKind[\"NoHttpTransferCache\"] = 0] = \"NoHttpTransferCache\";\n HydrationFeatureKind[HydrationFeatureKind[\"HttpTransferCacheOptions\"] = 1] = \"HttpTransferCacheOptions\";\n HydrationFeatureKind[HydrationFeatureKind[\"I18nSupport\"] = 2] = \"I18nSupport\";\n HydrationFeatureKind[HydrationFeatureKind[\"EventReplay\"] = 3] = \"EventReplay\";\n})(HydrationFeatureKind || (HydrationFeatureKind = {}));\n/**\n * Helper function to create an object that represents a Hydration feature.\n */\nfunction hydrationFeature(ɵkind, ɵproviders = [], ɵoptions = {}) {\n return { ɵkind, ɵproviders };\n}\n/**\n * Disables HTTP transfer cache. Effectively causes HTTP requests to be performed twice: once on the\n * server and other one on the browser.\n *\n * @publicApi\n */\nfunction withNoHttpTransferCache() {\n // This feature has no providers and acts as a flag that turns off\n // HTTP transfer cache (which otherwise is turned on by default).\n return hydrationFeature(HydrationFeatureKind.NoHttpTransferCache);\n}\n/**\n * The function accepts an object, which allows to configure cache parameters,\n * such as which headers should be included (no headers are included by default),\n * whether POST requests should be cached or a callback function to determine if a\n * particular request should be cached.\n *\n * @publicApi\n */\nfunction withHttpTransferCacheOptions(options) {\n // This feature has no providers and acts as a flag to pass options to the HTTP transfer cache.\n return hydrationFeature(HydrationFeatureKind.HttpTransferCacheOptions, ɵwithHttpTransferCache(options));\n}\n/**\n * Enables support for hydrating i18n blocks.\n *\n * @developerPreview\n * @publicApi\n */\nfunction withI18nSupport() {\n return hydrationFeature(HydrationFeatureKind.I18nSupport, ɵwithI18nSupport());\n}\n/**\n * Enables support for replaying user events (e.g. `click`s) that happened on a page\n * before hydration logic has completed. Once an application is hydrated, all captured\n * events are replayed and relevant event listeners are executed.\n *\n * @usageNotes\n *\n * Basic example of how you can enable event replay in your application when\n * `bootstrapApplication` function is used:\n * ```\n * bootstrapApplication(AppComponent, {\n * providers: [provideClientHydration(withEventReplay())]\n * });\n * ```\n * @developerPreview\n * @publicApi\n * @see {@link provideClientHydration}\n */\nfunction withEventReplay() {\n return hydrationFeature(HydrationFeatureKind.EventReplay, ɵwithEventReplay());\n}\n/**\n * Returns an `ENVIRONMENT_INITIALIZER` token setup with a function\n * that verifies whether compatible ZoneJS was used in an application\n * and logs a warning in a console if it's not the case.\n */\nfunction provideZoneJsCompatibilityDetector() {\n return [\n {\n provide: ENVIRONMENT_INITIALIZER,\n useValue: () => {\n const ngZone = inject(NgZone);\n const isZoneless = inject(ɵZONELESS_ENABLED);\n // Checking `ngZone instanceof NgZone` would be insufficient here,\n // because custom implementations might use NgZone as a base class.\n if (!isZoneless && ngZone.constructor !== NgZone) {\n const console = inject(ɵConsole);\n const message = ɵformatRuntimeError(-5000 /* RuntimeErrorCode.UNSUPPORTED_ZONEJS_INSTANCE */, 'Angular detected that hydration was enabled for an application ' +\n 'that uses a custom or a noop Zone.js implementation. ' +\n 'This is not yet a fully supported configuration.');\n // tslint:disable-next-line:no-console\n console.warn(message);\n }\n },\n multi: true,\n },\n ];\n}\n/**\n * Sets up providers necessary to enable hydration functionality for the application.\n *\n * By default, the function enables the recommended set of features for the optimal\n * performance for most of the applications. It includes the following features:\n *\n * * Reconciling DOM hydration. Learn more about it [here](guide/hydration).\n * * [`HttpClient`](api/common/http/HttpClient) response caching while running on the server and\n * transferring this cache to the client to avoid extra HTTP requests. Learn more about data caching\n * [here](guide/ssr#caching-data-when-using-httpclient).\n *\n * These functions allow you to disable some of the default features or enable new ones:\n *\n * * {@link withNoHttpTransferCache} to disable HTTP transfer cache\n * * {@link withHttpTransferCacheOptions} to configure some HTTP transfer cache options\n * * {@link withI18nSupport} to enable hydration support for i18n blocks\n * * {@link withEventReplay} to enable support for replaying user events\n *\n * @usageNotes\n *\n * Basic example of how you can enable hydration in your application when\n * `bootstrapApplication` function is used:\n * ```\n * bootstrapApplication(AppComponent, {\n * providers: [provideClientHydration()]\n * });\n * ```\n *\n * Alternatively if you are using NgModules, you would add `provideClientHydration`\n * to your root app module's provider list.\n * ```\n * @NgModule({\n * declarations: [RootCmp],\n * bootstrap: [RootCmp],\n * providers: [provideClientHydration()],\n * })\n * export class AppModule {}\n * ```\n *\n * @see {@link withNoHttpTransferCache}\n * @see {@link withHttpTransferCacheOptions}\n * @see {@link withI18nSupport}\n * @see {@link withEventReplay}\n *\n * @param features Optional features to configure additional router behaviors.\n * @returns A set of providers to enable hydration.\n *\n * @publicApi\n */\nfunction provideClientHydration(...features) {\n const providers = [];\n const featuresKind = new Set();\n const hasHttpTransferCacheOptions = featuresKind.has(HydrationFeatureKind.HttpTransferCacheOptions);\n for (const { ɵproviders, ɵkind } of features) {\n featuresKind.add(ɵkind);\n if (ɵproviders.length) {\n providers.push(ɵproviders);\n }\n }\n if (typeof ngDevMode !== 'undefined' &&\n ngDevMode &&\n featuresKind.has(HydrationFeatureKind.NoHttpTransferCache) &&\n hasHttpTransferCacheOptions) {\n // TODO: Make this a runtime error\n throw new Error('Configuration error: found both withHttpTransferCacheOptions() and withNoHttpTransferCache() in the same call to provideClientHydration(), which is a contradiction.');\n }\n return makeEnvironmentProviders([\n typeof ngDevMode !== 'undefined' && ngDevMode ? provideZoneJsCompatibilityDetector() : [],\n ɵwithDomHydration(),\n featuresKind.has(HydrationFeatureKind.NoHttpTransferCache) || hasHttpTransferCacheOptions\n ? []\n : ɵwithHttpTransferCache({}),\n providers,\n ]);\n}\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of the platform-browser package.\n */\n/**\n * @publicApi\n */\nconst VERSION = new Version('18.2.12');\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n// This file only reexports content of the `src` folder. Keep it that way.\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BrowserModule, By, DomSanitizer, EVENT_MANAGER_PLUGINS, EventManager, EventManagerPlugin, HAMMER_GESTURE_CONFIG, HAMMER_LOADER, HammerGestureConfig, HammerModule, HydrationFeatureKind, Meta, REMOVE_STYLES_ON_COMPONENT_DESTROY, Title, VERSION, bootstrapApplication, createApplication, disableDebugTools, enableDebugTools, platformBrowser, provideClientHydration, provideProtractorTestingSupport, withEventReplay, withHttpTransferCacheOptions, withI18nSupport, withNoHttpTransferCache, BrowserDomAdapter as ɵBrowserDomAdapter, BrowserGetTestability as ɵBrowserGetTestability, DomEventsPlugin as ɵDomEventsPlugin, DomRendererFactory2 as ɵDomRendererFactory2, DomSanitizerImpl as ɵDomSanitizerImpl, HammerGesturesPlugin as ɵHammerGesturesPlugin, INTERNAL_BROWSER_PLATFORM_PROVIDERS as ɵINTERNAL_BROWSER_PLATFORM_PROVIDERS, KeyEventsPlugin as ɵKeyEventsPlugin, SharedStylesHost as ɵSharedStylesHost, initDomAdapter as ɵinitDomAdapter };\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}