1 |
- {"version":3,"file":"platform-browser.js","sources":["../../../packages/platform-browser/src/dom/dom_adapter.js","../../../packages/platform-browser/src/browser/generic_browser_adapter.js","../../../packages/platform-browser/src/browser/browser_adapter.js","../../../packages/platform-browser/src/dom/dom_tokens.js","../../../packages/platform-browser/src/browser/location/history.js","../../../packages/platform-browser/src/browser/location/browser_platform_location.js","../../../packages/platform-browser/src/browser/meta.js","../../../packages/platform-browser/src/browser/server-transition.js","../../../packages/platform-browser/src/browser/testability.js","../../../packages/platform-browser/src/browser/title.js","../../../packages/platform-browser/src/dom/util.js","../../../packages/platform-browser/src/dom/debug/ng_probe.js","../../../packages/platform-browser/src/dom/events/event_manager.js","../../../packages/platform-browser/src/dom/shared_styles_host.js","../../../packages/platform-browser/src/dom/dom_renderer.js","../../../packages/platform-browser/src/dom/events/dom_events.js","../../../packages/platform-browser/src/dom/events/hammer_gestures.js","../../../packages/platform-browser/src/dom/events/key_events.js","../../../packages/platform-browser/src/security/inert_body.js","../../../packages/platform-browser/src/security/url_sanitizer.js","../../../packages/platform-browser/src/security/html_sanitizer.js","../../../packages/platform-browser/src/security/style_sanitizer.js","../../../packages/platform-browser/src/security/dom_sanitization_service.js","../../../packages/platform-browser/src/browser.js","../../../packages/platform-browser/src/browser/tools/browser.js","../../../packages/platform-browser/src/browser/tools/common_tools.js","../../../packages/platform-browser/src/browser/tools/tools.js","../../../packages/platform-browser/src/browser/transfer_state.js","../../../packages/platform-browser/src/dom/debug/by.js","../../../packages/platform-browser/src/private_export.js","../../../packages/platform-browser/src/version.js","../../../packages/platform-browser/src/platform-browser.js","../../../packages/platform-browser/public_api.js","../../../packages/platform-browser/platform-browser.js"],"sourcesContent":["/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nlet /** @type {?} */ _DOM = /** @type {?} */ ((null));\n/**\n * @return {?}\n */\nexport function getDOM() {\n return _DOM;\n}\n/**\n * @param {?} adapter\n * @return {?}\n */\nexport function setDOM(adapter) {\n _DOM = adapter;\n}\n/**\n * @param {?} adapter\n * @return {?}\n */\nexport function setRootDomAdapter(adapter) {\n if (!_DOM) {\n _DOM = adapter;\n }\n}\n/**\n * Provides DOM operations in an environment-agnostic way.\n *\n * \\@security Tread carefully! Interacting with the DOM directly is dangerous and\n * can introduce XSS risks.\n * @abstract\n */\nexport class DomAdapter {\n constructor() {\n this.resourceLoaderType = /** @type {?} */ ((null));\n }\n /**\n * Maps attribute names to their corresponding property names for cases\n * where attribute name doesn't match property name.\n * @return {?}\n */\n get attrToPropMap() { return this._attrToPropMap; }\n /**\n * @param {?} value\n * @return {?}\n */\n set attrToPropMap(value) { this._attrToPropMap = value; }\n}\nfunction DomAdapter_tsickle_Closure_declarations() {\n /** @type {?} */\n DomAdapter.prototype.resourceLoaderType;\n /**\n * \\@internal\n * @type {?}\n */\n DomAdapter.prototype._attrToPropMap;\n /**\n * @abstract\n * @param {?} element\n * @param {?} name\n * @return {?}\n */\n DomAdapter.prototype.hasProperty = function (element, name) { };\n /**\n * @abstract\n * @param {?} el\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\n DomAdapter.prototype.setProperty = function (el, name, value) { };\n /**\n * @abstract\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\n DomAdapter.prototype.getProperty = function (el, name) { };\n /**\n * @abstract\n * @param {?} el\n * @param {?} methodName\n * @param {?} args\n * @return {?}\n */\n DomAdapter.prototype.invoke = function (el, methodName, args) { };\n /**\n * @abstract\n * @param {?} error\n * @return {?}\n */\n DomAdapter.prototype.logError = function (error) { };\n /**\n * @abstract\n * @param {?} error\n * @return {?}\n */\n DomAdapter.prototype.log = function (error) { };\n /**\n * @abstract\n * @param {?} error\n * @return {?}\n */\n DomAdapter.prototype.logGroup = function (error) { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.logGroupEnd = function () { };\n /**\n * @abstract\n * @param {?} nodeA\n * @param {?} nodeB\n * @return {?}\n */\n DomAdapter.prototype.contains = function (nodeA, nodeB) { };\n /**\n * @abstract\n * @param {?} templateHtml\n * @return {?}\n */\n DomAdapter.prototype.parse = function (templateHtml) { };\n /**\n * @abstract\n * @param {?} el\n * @param {?} selector\n * @return {?}\n */\n DomAdapter.prototype.querySelector = function (el, selector) { };\n /**\n * @abstract\n * @param {?} el\n * @param {?} selector\n * @return {?}\n */\n DomAdapter.prototype.querySelectorAll = function (el, selector) { };\n /**\n * @abstract\n * @param {?} el\n * @param {?} evt\n * @param {?} listener\n * @return {?}\n */\n DomAdapter.prototype.on = function (el, evt, listener) { };\n /**\n * @abstract\n * @param {?} el\n * @param {?} evt\n * @param {?} listener\n * @return {?}\n */\n DomAdapter.prototype.onAndCancel = function (el, evt, listener) { };\n /**\n * @abstract\n * @param {?} el\n * @param {?} evt\n * @return {?}\n */\n DomAdapter.prototype.dispatchEvent = function (el, evt) { };\n /**\n * @abstract\n * @param {?} eventType\n * @return {?}\n */\n DomAdapter.prototype.createMouseEvent = function (eventType) { };\n /**\n * @abstract\n * @param {?} eventType\n * @return {?}\n */\n DomAdapter.prototype.createEvent = function (eventType) { };\n /**\n * @abstract\n * @param {?} evt\n * @return {?}\n */\n DomAdapter.prototype.preventDefault = function (evt) { };\n /**\n * @abstract\n * @param {?} evt\n * @return {?}\n */\n DomAdapter.prototype.isPrevented = function (evt) { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.getInnerHTML = function (el) { };\n /**\n * Returns content if el is a <template> element, null otherwise.\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.getTemplateContent = function (el) { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.getOuterHTML = function (el) { };\n /**\n * @abstract\n * @param {?} node\n * @return {?}\n */\n DomAdapter.prototype.nodeName = function (node) { };\n /**\n * @abstract\n * @param {?} node\n * @return {?}\n */\n DomAdapter.prototype.nodeValue = function (node) { };\n /**\n * @abstract\n * @param {?} node\n * @return {?}\n */\n DomAdapter.prototype.type = function (node) { };\n /**\n * @abstract\n * @param {?} node\n * @return {?}\n */\n DomAdapter.prototype.content = function (node) { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.firstChild = function (el) { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.nextSibling = function (el) { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.parentElement = function (el) { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.childNodes = function (el) { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.childNodesAsList = function (el) { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.clearNodes = function (el) { };\n /**\n * @abstract\n * @param {?} el\n * @param {?} node\n * @return {?}\n */\n DomAdapter.prototype.appendChild = function (el, node) { };\n /**\n * @abstract\n * @param {?} el\n * @param {?} node\n * @return {?}\n */\n DomAdapter.prototype.removeChild = function (el, node) { };\n /**\n * @abstract\n * @param {?} el\n * @param {?} newNode\n * @param {?} oldNode\n * @return {?}\n */\n DomAdapter.prototype.replaceChild = function (el, newNode, oldNode) { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.remove = function (el) { };\n /**\n * @abstract\n * @param {?} parent\n * @param {?} ref\n * @param {?} node\n * @return {?}\n */\n DomAdapter.prototype.insertBefore = function (parent, ref, node) { };\n /**\n * @abstract\n * @param {?} parent\n * @param {?} ref\n * @param {?} nodes\n * @return {?}\n */\n DomAdapter.prototype.insertAllBefore = function (parent, ref, nodes) { };\n /**\n * @abstract\n * @param {?} parent\n * @param {?} el\n * @param {?} node\n * @return {?}\n */\n DomAdapter.prototype.insertAfter = function (parent, el, node) { };\n /**\n * @abstract\n * @param {?} el\n * @param {?} value\n * @return {?}\n */\n DomAdapter.prototype.setInnerHTML = function (el, value) { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.getText = function (el) { };\n /**\n * @abstract\n * @param {?} el\n * @param {?} value\n * @return {?}\n */\n DomAdapter.prototype.setText = function (el, value) { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.getValue = function (el) { };\n /**\n * @abstract\n * @param {?} el\n * @param {?} value\n * @return {?}\n */\n DomAdapter.prototype.setValue = function (el, value) { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.getChecked = function (el) { };\n /**\n * @abstract\n * @param {?} el\n * @param {?} value\n * @return {?}\n */\n DomAdapter.prototype.setChecked = function (el, value) { };\n /**\n * @abstract\n * @param {?} text\n * @return {?}\n */\n DomAdapter.prototype.createComment = function (text) { };\n /**\n * @abstract\n * @param {?} html\n * @return {?}\n */\n DomAdapter.prototype.createTemplate = function (html) { };\n /**\n * @abstract\n * @param {?} tagName\n * @param {?=} doc\n * @return {?}\n */\n DomAdapter.prototype.createElement = function (tagName, doc) { };\n /**\n * @abstract\n * @param {?} ns\n * @param {?} tagName\n * @param {?=} doc\n * @return {?}\n */\n DomAdapter.prototype.createElementNS = function (ns, tagName, doc) { };\n /**\n * @abstract\n * @param {?} text\n * @param {?=} doc\n * @return {?}\n */\n DomAdapter.prototype.createTextNode = function (text, doc) { };\n /**\n * @abstract\n * @param {?} attrName\n * @param {?} attrValue\n * @param {?=} doc\n * @return {?}\n */\n DomAdapter.prototype.createScriptTag = function (attrName, attrValue, doc) { };\n /**\n * @abstract\n * @param {?} css\n * @param {?=} doc\n * @return {?}\n */\n DomAdapter.prototype.createStyleElement = function (css, doc) { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.createShadowRoot = function (el) { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.getShadowRoot = function (el) { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.getHost = function (el) { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.getDistributedNodes = function (el) { };\n /**\n * @abstract\n * @param {?} node\n * @return {?}\n */\n DomAdapter.prototype.clone = function (node) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} name\n * @return {?}\n */\n DomAdapter.prototype.getElementsByClassName = function (element, name) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} name\n * @return {?}\n */\n DomAdapter.prototype.getElementsByTagName = function (element, name) { };\n /**\n * @abstract\n * @param {?} element\n * @return {?}\n */\n DomAdapter.prototype.classList = function (element) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} className\n * @return {?}\n */\n DomAdapter.prototype.addClass = function (element, className) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} className\n * @return {?}\n */\n DomAdapter.prototype.removeClass = function (element, className) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} className\n * @return {?}\n */\n DomAdapter.prototype.hasClass = function (element, className) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} styleName\n * @param {?} styleValue\n * @return {?}\n */\n DomAdapter.prototype.setStyle = function (element, styleName, styleValue) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} styleName\n * @return {?}\n */\n DomAdapter.prototype.removeStyle = function (element, styleName) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} styleName\n * @return {?}\n */\n DomAdapter.prototype.getStyle = function (element, styleName) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} styleName\n * @param {?=} styleValue\n * @return {?}\n */\n DomAdapter.prototype.hasStyle = function (element, styleName, styleValue) { };\n /**\n * @abstract\n * @param {?} element\n * @return {?}\n */\n DomAdapter.prototype.tagName = function (element) { };\n /**\n * @abstract\n * @param {?} element\n * @return {?}\n */\n DomAdapter.prototype.attributeMap = function (element) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} attribute\n * @return {?}\n */\n DomAdapter.prototype.hasAttribute = function (element, attribute) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} ns\n * @param {?} attribute\n * @return {?}\n */\n DomAdapter.prototype.hasAttributeNS = function (element, ns, attribute) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} attribute\n * @return {?}\n */\n DomAdapter.prototype.getAttribute = function (element, attribute) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} ns\n * @param {?} attribute\n * @return {?}\n */\n DomAdapter.prototype.getAttributeNS = function (element, ns, attribute) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\n DomAdapter.prototype.setAttribute = function (element, name, value) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} ns\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\n DomAdapter.prototype.setAttributeNS = function (element, ns, name, value) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} attribute\n * @return {?}\n */\n DomAdapter.prototype.removeAttribute = function (element, attribute) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} ns\n * @param {?} attribute\n * @return {?}\n */\n DomAdapter.prototype.removeAttributeNS = function (element, ns, attribute) { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.templateAwareRoot = function (el) { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.createHtmlDocument = function () { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.getDefaultDocument = function () { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.getBoundingClientRect = function (el) { };\n /**\n * @abstract\n * @param {?} doc\n * @return {?}\n */\n DomAdapter.prototype.getTitle = function (doc) { };\n /**\n * @abstract\n * @param {?} doc\n * @param {?} newTitle\n * @return {?}\n */\n DomAdapter.prototype.setTitle = function (doc, newTitle) { };\n /**\n * @abstract\n * @param {?} n\n * @param {?} selector\n * @return {?}\n */\n DomAdapter.prototype.elementMatches = function (n, selector) { };\n /**\n * @abstract\n * @param {?} el\n * @return {?}\n */\n DomAdapter.prototype.isTemplateElement = function (el) { };\n /**\n * @abstract\n * @param {?} node\n * @return {?}\n */\n DomAdapter.prototype.isTextNode = function (node) { };\n /**\n * @abstract\n * @param {?} node\n * @return {?}\n */\n DomAdapter.prototype.isCommentNode = function (node) { };\n /**\n * @abstract\n * @param {?} node\n * @return {?}\n */\n DomAdapter.prototype.isElementNode = function (node) { };\n /**\n * @abstract\n * @param {?} node\n * @return {?}\n */\n DomAdapter.prototype.hasShadowRoot = function (node) { };\n /**\n * @abstract\n * @param {?} node\n * @return {?}\n */\n DomAdapter.prototype.isShadowRoot = function (node) { };\n /**\n * @abstract\n * @param {?} node\n * @return {?}\n */\n DomAdapter.prototype.importIntoDoc = function (node) { };\n /**\n * @abstract\n * @param {?} node\n * @return {?}\n */\n DomAdapter.prototype.adoptNode = function (node) { };\n /**\n * @abstract\n * @param {?} element\n * @return {?}\n */\n DomAdapter.prototype.getHref = function (element) { };\n /**\n * @abstract\n * @param {?} event\n * @return {?}\n */\n DomAdapter.prototype.getEventKey = function (event) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} baseUrl\n * @param {?} href\n * @return {?}\n */\n DomAdapter.prototype.resolveAndSetHref = function (element, baseUrl, href) { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.supportsDOMEvents = function () { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.supportsNativeShadowDOM = function () { };\n /**\n * @abstract\n * @param {?} doc\n * @param {?} target\n * @return {?}\n */\n DomAdapter.prototype.getGlobalEventTarget = function (doc, target) { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.getHistory = function () { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.getLocation = function () { };\n /**\n * @abstract\n * @param {?} doc\n * @return {?}\n */\n DomAdapter.prototype.getBaseHref = function (doc) { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.resetBaseElement = function () { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.getUserAgent = function () { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\n DomAdapter.prototype.setData = function (element, name, value) { };\n /**\n * @abstract\n * @param {?} element\n * @return {?}\n */\n DomAdapter.prototype.getComputedStyle = function (element) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} name\n * @return {?}\n */\n DomAdapter.prototype.getData = function (element, name) { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.supportsWebAnimation = function () { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.performanceNow = function () { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.getAnimationPrefix = function () { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.getTransitionEnd = function () { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.supportsAnimation = function () { };\n /**\n * @abstract\n * @return {?}\n */\n DomAdapter.prototype.supportsCookies = function () { };\n /**\n * @abstract\n * @param {?} name\n * @return {?}\n */\n DomAdapter.prototype.getCookie = function (name) { };\n /**\n * @abstract\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\n DomAdapter.prototype.setCookie = function (name, value) { };\n}\n//# sourceMappingURL=dom_adapter.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { DomAdapter } from '../dom/dom_adapter';\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 * @abstract\n */\nexport class GenericBrowserDomAdapter extends DomAdapter {\n constructor() {\n super();\n this._animationPrefix = null;\n this._transitionEnd = null;\n try {\n const /** @type {?} */ element = this.createElement('div', document);\n if (this.getStyle(element, 'animationName') != null) {\n this._animationPrefix = '';\n }\n else {\n const /** @type {?} */ domPrefixes = ['Webkit', 'Moz', 'O', 'ms'];\n for (let /** @type {?} */ i = 0; i < domPrefixes.length; i++) {\n if (this.getStyle(element, domPrefixes[i] + 'AnimationName') != null) {\n this._animationPrefix = '-' + domPrefixes[i].toLowerCase() + '-';\n break;\n }\n }\n }\n const /** @type {?} */ transEndEventNames = {\n WebkitTransition: 'webkitTransitionEnd',\n MozTransition: 'transitionend',\n OTransition: 'oTransitionEnd otransitionend',\n transition: 'transitionend'\n };\n Object.keys(transEndEventNames).forEach((key) => {\n if (this.getStyle(element, key) != null) {\n this._transitionEnd = transEndEventNames[key];\n }\n });\n }\n catch (/** @type {?} */ e) {\n this._animationPrefix = null;\n this._transitionEnd = null;\n }\n }\n /**\n * @param {?} el\n * @return {?}\n */\n getDistributedNodes(el) { return (/** @type {?} */ (el)).getDistributedNodes(); }\n /**\n * @param {?} el\n * @param {?} baseUrl\n * @param {?} href\n * @return {?}\n */\n resolveAndSetHref(el, baseUrl, href) {\n el.href = href == null ? baseUrl : baseUrl + '/../' + href;\n }\n /**\n * @return {?}\n */\n supportsDOMEvents() { return true; }\n /**\n * @return {?}\n */\n supportsNativeShadowDOM() {\n return typeof (/** @type {?} */ (document.body)).createShadowRoot === 'function';\n }\n /**\n * @return {?}\n */\n getAnimationPrefix() { return this._animationPrefix ? this._animationPrefix : ''; }\n /**\n * @return {?}\n */\n getTransitionEnd() { return this._transitionEnd ? this._transitionEnd : ''; }\n /**\n * @return {?}\n */\n supportsAnimation() {\n return this._animationPrefix != null && this._transitionEnd != null;\n }\n}\nfunction GenericBrowserDomAdapter_tsickle_Closure_declarations() {\n /** @type {?} */\n GenericBrowserDomAdapter.prototype._animationPrefix;\n /** @type {?} */\n GenericBrowserDomAdapter.prototype._transitionEnd;\n}\n//# sourceMappingURL=generic_browser_adapter.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ɵparseCookieValue as parseCookieValue } from '@angular/common';\nimport { ɵglobal as global } from '@angular/core';\nimport { setRootDomAdapter } from '../dom/dom_adapter';\nimport { GenericBrowserDomAdapter } from './generic_browser_adapter';\nconst /** @type {?} */ _attrToPropMap = {\n 'class': 'className',\n 'innerHtml': 'innerHTML',\n 'readonly': 'readOnly',\n 'tabindex': 'tabIndex',\n};\nconst /** @type {?} */ DOM_KEY_LOCATION_NUMPAD = 3;\n// Map to convert some key or keyIdentifier values to what will be returned by getEventKey\nconst /** @type {?} */ _keyMap = {\n // The following values are here for cross-browser compatibility and to match the W3C standard\n // cf http://www.w3.org/TR/DOM-Level-3-Events-key/\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// There is a bug in Chrome for numeric keypad keys:\n// https://code.google.com/p/chromium/issues/detail?id=155654\n// 1, 2, 3 ... are reported as A, B, C ...\nconst /** @type {?} */ _chromeNumKeyPadMap = {\n 'A': '1',\n 'B': '2',\n 'C': '3',\n 'D': '4',\n 'E': '5',\n 'F': '6',\n 'G': '7',\n 'H': '8',\n 'I': '9',\n 'J': '*',\n 'K': '+',\n 'M': '-',\n 'N': '.',\n 'O': '/',\n '\\x60': '0',\n '\\x90': 'NumLock'\n};\nlet /** @type {?} */ nodeContains;\nif (global['Node']) {\n nodeContains = global['Node'].prototype.contains || function (node) {\n return !!(this.compareDocumentPosition(node) & 16);\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 */\nexport class BrowserDomAdapter extends GenericBrowserDomAdapter {\n /**\n * @param {?} templateHtml\n * @return {?}\n */\n parse(templateHtml) { throw new Error('parse not implemented'); }\n /**\n * @return {?}\n */\n static makeCurrent() { setRootDomAdapter(new BrowserDomAdapter()); }\n /**\n * @param {?} element\n * @param {?} name\n * @return {?}\n */\n hasProperty(element, name) { return name in element; }\n /**\n * @param {?} el\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\n setProperty(el, name, value) { (/** @type {?} */ (el))[name] = value; }\n /**\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\n getProperty(el, name) { return (/** @type {?} */ (el))[name]; }\n /**\n * @param {?} el\n * @param {?} methodName\n * @param {?} args\n * @return {?}\n */\n invoke(el, methodName, args) { (/** @type {?} */ (el))[methodName](...args); }\n /**\n * @param {?} error\n * @return {?}\n */\n logError(error) {\n if (window.console) {\n if (console.error) {\n console.error(error);\n }\n else {\n console.log(error);\n }\n }\n }\n /**\n * @param {?} error\n * @return {?}\n */\n log(error) {\n if (window.console) {\n window.console.log && window.console.log(error);\n }\n }\n /**\n * @param {?} error\n * @return {?}\n */\n logGroup(error) {\n if (window.console) {\n window.console.group && window.console.group(error);\n }\n }\n /**\n * @return {?}\n */\n logGroupEnd() {\n if (window.console) {\n window.console.groupEnd && window.console.groupEnd();\n }\n }\n /**\n * @return {?}\n */\n get attrToPropMap() { return _attrToPropMap; }\n /**\n * @param {?} nodeA\n * @param {?} nodeB\n * @return {?}\n */\n contains(nodeA, nodeB) { return nodeContains.call(nodeA, nodeB); }\n /**\n * @param {?} el\n * @param {?} selector\n * @return {?}\n */\n querySelector(el, selector) { return el.querySelector(selector); }\n /**\n * @param {?} el\n * @param {?} selector\n * @return {?}\n */\n querySelectorAll(el, selector) { return el.querySelectorAll(selector); }\n /**\n * @param {?} el\n * @param {?} evt\n * @param {?} listener\n * @return {?}\n */\n on(el, evt, listener) { el.addEventListener(evt, listener, false); }\n /**\n * @param {?} el\n * @param {?} evt\n * @param {?} listener\n * @return {?}\n */\n onAndCancel(el, evt, listener) {\n el.addEventListener(evt, listener, false);\n // Needed to follow Dart's subscription semantic, until fix of\n // https://code.google.com/p/dart/issues/detail?id=17406\n return () => { el.removeEventListener(evt, listener, false); };\n }\n /**\n * @param {?} el\n * @param {?} evt\n * @return {?}\n */\n dispatchEvent(el, evt) { el.dispatchEvent(evt); }\n /**\n * @param {?} eventType\n * @return {?}\n */\n createMouseEvent(eventType) {\n const /** @type {?} */ evt = this.getDefaultDocument().createEvent('MouseEvent');\n evt.initEvent(eventType, true, true);\n return evt;\n }\n /**\n * @param {?} eventType\n * @return {?}\n */\n createEvent(eventType) {\n const /** @type {?} */ evt = this.getDefaultDocument().createEvent('Event');\n evt.initEvent(eventType, true, true);\n return evt;\n }\n /**\n * @param {?} evt\n * @return {?}\n */\n preventDefault(evt) {\n evt.preventDefault();\n evt.returnValue = false;\n }\n /**\n * @param {?} evt\n * @return {?}\n */\n isPrevented(evt) {\n return evt.defaultPrevented || evt.returnValue != null && !evt.returnValue;\n }\n /**\n * @param {?} el\n * @return {?}\n */\n getInnerHTML(el) { return el.innerHTML; }\n /**\n * @param {?} el\n * @return {?}\n */\n getTemplateContent(el) {\n return 'content' in el && this.isTemplateElement(el) ? (/** @type {?} */ (el)).content : null;\n }\n /**\n * @param {?} el\n * @return {?}\n */\n getOuterHTML(el) { return el.outerHTML; }\n /**\n * @param {?} node\n * @return {?}\n */\n nodeName(node) { return node.nodeName; }\n /**\n * @param {?} node\n * @return {?}\n */\n nodeValue(node) { return node.nodeValue; }\n /**\n * @param {?} node\n * @return {?}\n */\n type(node) { return node.type; }\n /**\n * @param {?} node\n * @return {?}\n */\n content(node) {\n if (this.hasProperty(node, 'content')) {\n return (/** @type {?} */ (node)).content;\n }\n else {\n return node;\n }\n }\n /**\n * @param {?} el\n * @return {?}\n */\n firstChild(el) { return el.firstChild; }\n /**\n * @param {?} el\n * @return {?}\n */\n nextSibling(el) { return el.nextSibling; }\n /**\n * @param {?} el\n * @return {?}\n */\n parentElement(el) { return el.parentNode; }\n /**\n * @param {?} el\n * @return {?}\n */\n childNodes(el) { return el.childNodes; }\n /**\n * @param {?} el\n * @return {?}\n */\n childNodesAsList(el) {\n const /** @type {?} */ childNodes = el.childNodes;\n const /** @type {?} */ res = new Array(childNodes.length);\n for (let /** @type {?} */ i = 0; i < childNodes.length; i++) {\n res[i] = childNodes[i];\n }\n return res;\n }\n /**\n * @param {?} el\n * @return {?}\n */\n clearNodes(el) {\n while (el.firstChild) {\n el.removeChild(el.firstChild);\n }\n }\n /**\n * @param {?} el\n * @param {?} node\n * @return {?}\n */\n appendChild(el, node) { el.appendChild(node); }\n /**\n * @param {?} el\n * @param {?} node\n * @return {?}\n */\n removeChild(el, node) { el.removeChild(node); }\n /**\n * @param {?} el\n * @param {?} newChild\n * @param {?} oldChild\n * @return {?}\n */\n replaceChild(el, newChild, oldChild) { el.replaceChild(newChild, oldChild); }\n /**\n * @param {?} node\n * @return {?}\n */\n remove(node) {\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n return node;\n }\n /**\n * @param {?} parent\n * @param {?} ref\n * @param {?} node\n * @return {?}\n */\n insertBefore(parent, ref, node) { parent.insertBefore(node, ref); }\n /**\n * @param {?} parent\n * @param {?} ref\n * @param {?} nodes\n * @return {?}\n */\n insertAllBefore(parent, ref, nodes) {\n nodes.forEach((n) => parent.insertBefore(n, ref));\n }\n /**\n * @param {?} parent\n * @param {?} ref\n * @param {?} node\n * @return {?}\n */\n insertAfter(parent, ref, node) { parent.insertBefore(node, ref.nextSibling); }\n /**\n * @param {?} el\n * @param {?} value\n * @return {?}\n */\n setInnerHTML(el, value) { el.innerHTML = value; }\n /**\n * @param {?} el\n * @return {?}\n */\n getText(el) { return el.textContent; }\n /**\n * @param {?} el\n * @param {?} value\n * @return {?}\n */\n setText(el, value) { el.textContent = value; }\n /**\n * @param {?} el\n * @return {?}\n */\n getValue(el) { return el.value; }\n /**\n * @param {?} el\n * @param {?} value\n * @return {?}\n */\n setValue(el, value) { el.value = value; }\n /**\n * @param {?} el\n * @return {?}\n */\n getChecked(el) { return el.checked; }\n /**\n * @param {?} el\n * @param {?} value\n * @return {?}\n */\n setChecked(el, value) { el.checked = value; }\n /**\n * @param {?} text\n * @return {?}\n */\n createComment(text) { return this.getDefaultDocument().createComment(text); }\n /**\n * @param {?} html\n * @return {?}\n */\n createTemplate(html) {\n const /** @type {?} */ t = this.getDefaultDocument().createElement('template');\n t.innerHTML = html;\n return t;\n }\n /**\n * @param {?} tagName\n * @param {?=} doc\n * @return {?}\n */\n createElement(tagName, doc) {\n doc = doc || this.getDefaultDocument();\n return doc.createElement(tagName);\n }\n /**\n * @param {?} ns\n * @param {?} tagName\n * @param {?=} doc\n * @return {?}\n */\n createElementNS(ns, tagName, doc) {\n doc = doc || this.getDefaultDocument();\n return doc.createElementNS(ns, tagName);\n }\n /**\n * @param {?} text\n * @param {?=} doc\n * @return {?}\n */\n createTextNode(text, doc) {\n doc = doc || this.getDefaultDocument();\n return doc.createTextNode(text);\n }\n /**\n * @param {?} attrName\n * @param {?} attrValue\n * @param {?=} doc\n * @return {?}\n */\n createScriptTag(attrName, attrValue, doc) {\n doc = doc || this.getDefaultDocument();\n const /** @type {?} */ el = /** @type {?} */ (doc.createElement('SCRIPT'));\n el.setAttribute(attrName, attrValue);\n return el;\n }\n /**\n * @param {?} css\n * @param {?=} doc\n * @return {?}\n */\n createStyleElement(css, doc) {\n doc = doc || this.getDefaultDocument();\n const /** @type {?} */ style = /** @type {?} */ (doc.createElement('style'));\n this.appendChild(style, this.createTextNode(css, doc));\n return style;\n }\n /**\n * @param {?} el\n * @return {?}\n */\n createShadowRoot(el) { return (/** @type {?} */ (el)).createShadowRoot(); }\n /**\n * @param {?} el\n * @return {?}\n */\n getShadowRoot(el) { return (/** @type {?} */ (el)).shadowRoot; }\n /**\n * @param {?} el\n * @return {?}\n */\n getHost(el) { return (/** @type {?} */ (el)).host; }\n /**\n * @param {?} node\n * @return {?}\n */\n clone(node) { return node.cloneNode(true); }\n /**\n * @param {?} element\n * @param {?} name\n * @return {?}\n */\n getElementsByClassName(element, name) {\n return element.getElementsByClassName(name);\n }\n /**\n * @param {?} element\n * @param {?} name\n * @return {?}\n */\n getElementsByTagName(element, name) {\n return element.getElementsByTagName(name);\n }\n /**\n * @param {?} element\n * @return {?}\n */\n classList(element) { return Array.prototype.slice.call(element.classList, 0); }\n /**\n * @param {?} element\n * @param {?} className\n * @return {?}\n */\n addClass(element, className) { element.classList.add(className); }\n /**\n * @param {?} element\n * @param {?} className\n * @return {?}\n */\n removeClass(element, className) { element.classList.remove(className); }\n /**\n * @param {?} element\n * @param {?} className\n * @return {?}\n */\n hasClass(element, className) {\n return element.classList.contains(className);\n }\n /**\n * @param {?} element\n * @param {?} styleName\n * @param {?} styleValue\n * @return {?}\n */\n setStyle(element, styleName, styleValue) {\n element.style[styleName] = styleValue;\n }\n /**\n * @param {?} element\n * @param {?} stylename\n * @return {?}\n */\n removeStyle(element, stylename) {\n // IE requires '' instead of null\n // see https://github.com/angular/angular/issues/7916\n element.style[stylename] = '';\n }\n /**\n * @param {?} element\n * @param {?} stylename\n * @return {?}\n */\n getStyle(element, stylename) { return element.style[stylename]; }\n /**\n * @param {?} element\n * @param {?} styleName\n * @param {?=} styleValue\n * @return {?}\n */\n hasStyle(element, styleName, styleValue) {\n const /** @type {?} */ value = this.getStyle(element, styleName) || '';\n return styleValue ? value == styleValue : value.length > 0;\n }\n /**\n * @param {?} element\n * @return {?}\n */\n tagName(element) { return element.tagName; }\n /**\n * @param {?} element\n * @return {?}\n */\n attributeMap(element) {\n const /** @type {?} */ res = new Map();\n const /** @type {?} */ elAttrs = element.attributes;\n for (let /** @type {?} */ i = 0; i < elAttrs.length; i++) {\n const /** @type {?} */ attrib = elAttrs.item(i);\n res.set(attrib.name, attrib.value);\n }\n return res;\n }\n /**\n * @param {?} element\n * @param {?} attribute\n * @return {?}\n */\n hasAttribute(element, attribute) {\n return element.hasAttribute(attribute);\n }\n /**\n * @param {?} element\n * @param {?} ns\n * @param {?} attribute\n * @return {?}\n */\n hasAttributeNS(element, ns, attribute) {\n return element.hasAttributeNS(ns, attribute);\n }\n /**\n * @param {?} element\n * @param {?} attribute\n * @return {?}\n */\n getAttribute(element, attribute) {\n return element.getAttribute(attribute);\n }\n /**\n * @param {?} element\n * @param {?} ns\n * @param {?} name\n * @return {?}\n */\n getAttributeNS(element, ns, name) {\n return element.getAttributeNS(ns, name);\n }\n /**\n * @param {?} element\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\n setAttribute(element, name, value) { element.setAttribute(name, value); }\n /**\n * @param {?} element\n * @param {?} ns\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\n setAttributeNS(element, ns, name, value) {\n element.setAttributeNS(ns, name, value);\n }\n /**\n * @param {?} element\n * @param {?} attribute\n * @return {?}\n */\n removeAttribute(element, attribute) { element.removeAttribute(attribute); }\n /**\n * @param {?} element\n * @param {?} ns\n * @param {?} name\n * @return {?}\n */\n removeAttributeNS(element, ns, name) {\n element.removeAttributeNS(ns, name);\n }\n /**\n * @param {?} el\n * @return {?}\n */\n templateAwareRoot(el) { return this.isTemplateElement(el) ? this.content(el) : el; }\n /**\n * @return {?}\n */\n createHtmlDocument() {\n return document.implementation.createHTMLDocument('fakeTitle');\n }\n /**\n * @return {?}\n */\n getDefaultDocument() { return document; }\n /**\n * @param {?} el\n * @return {?}\n */\n getBoundingClientRect(el) {\n try {\n return el.getBoundingClientRect();\n }\n catch (/** @type {?} */ e) {\n return { top: 0, bottom: 0, left: 0, right: 0, width: 0, height: 0 };\n }\n }\n /**\n * @param {?} doc\n * @return {?}\n */\n getTitle(doc) { return doc.title; }\n /**\n * @param {?} doc\n * @param {?} newTitle\n * @return {?}\n */\n setTitle(doc, newTitle) { doc.title = newTitle || ''; }\n /**\n * @param {?} n\n * @param {?} selector\n * @return {?}\n */\n elementMatches(n, selector) {\n if (this.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 * @param {?} el\n * @return {?}\n */\n isTemplateElement(el) {\n return this.isElementNode(el) && el.nodeName === 'TEMPLATE';\n }\n /**\n * @param {?} node\n * @return {?}\n */\n isTextNode(node) { return node.nodeType === Node.TEXT_NODE; }\n /**\n * @param {?} node\n * @return {?}\n */\n isCommentNode(node) { return node.nodeType === Node.COMMENT_NODE; }\n /**\n * @param {?} node\n * @return {?}\n */\n isElementNode(node) { return node.nodeType === Node.ELEMENT_NODE; }\n /**\n * @param {?} node\n * @return {?}\n */\n hasShadowRoot(node) {\n return node.shadowRoot != null && node instanceof HTMLElement;\n }\n /**\n * @param {?} node\n * @return {?}\n */\n isShadowRoot(node) { return node instanceof DocumentFragment; }\n /**\n * @param {?} node\n * @return {?}\n */\n importIntoDoc(node) { return document.importNode(this.templateAwareRoot(node), true); }\n /**\n * @param {?} node\n * @return {?}\n */\n adoptNode(node) { return document.adoptNode(node); }\n /**\n * @param {?} el\n * @return {?}\n */\n getHref(el) { return /** @type {?} */ ((el.getAttribute('href'))); }\n /**\n * @param {?} event\n * @return {?}\n */\n getEventKey(event) {\n let /** @type {?} */ key = event.key;\n if (key == null) {\n key = event.keyIdentifier;\n // keyIdentifier is defined in the old draft of DOM Level 3 Events implemented by Chrome and\n // Safari cf\n // http://www.w3.org/TR/2007/WD-DOM-Level-3-Events-20071221/events.html#Events-KeyboardEvents-Interfaces\n if (key == null) {\n return 'Unidentified';\n }\n if (key.startsWith('U+')) {\n key = String.fromCharCode(parseInt(key.substring(2), 16));\n if (event.location === DOM_KEY_LOCATION_NUMPAD && _chromeNumKeyPadMap.hasOwnProperty(key)) {\n // There is a bug in Chrome for numeric keypad keys:\n // https://code.google.com/p/chromium/issues/detail?id=155654\n // 1, 2, 3 ... are reported as A, B, C ...\n key = (/** @type {?} */ (_chromeNumKeyPadMap))[key];\n }\n }\n }\n return _keyMap[key] || key;\n }\n /**\n * @param {?} doc\n * @param {?} target\n * @return {?}\n */\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 /**\n * @return {?}\n */\n getHistory() { return window.history; }\n /**\n * @return {?}\n */\n getLocation() { return window.location; }\n /**\n * @param {?} doc\n * @return {?}\n */\n getBaseHref(doc) {\n const /** @type {?} */ href = getBaseElementHref();\n return href == null ? null : relativePath(href);\n }\n /**\n * @return {?}\n */\n resetBaseElement() { baseElement = null; }\n /**\n * @return {?}\n */\n getUserAgent() { return window.navigator.userAgent; }\n /**\n * @param {?} element\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\n setData(element, name, value) {\n this.setAttribute(element, 'data-' + name, value);\n }\n /**\n * @param {?} element\n * @param {?} name\n * @return {?}\n */\n getData(element, name) {\n return this.getAttribute(element, 'data-' + name);\n }\n /**\n * @param {?} element\n * @return {?}\n */\n getComputedStyle(element) { return getComputedStyle(element); }\n /**\n * @return {?}\n */\n supportsWebAnimation() {\n return typeof (/** @type {?} */ (Element)).prototype['animate'] === 'function';\n }\n /**\n * @return {?}\n */\n performanceNow() {\n // performance.now() is not available in all browsers, see\n // http://caniuse.com/#search=performance.now\n return window.performance && window.performance.now ? window.performance.now() :\n new Date().getTime();\n }\n /**\n * @return {?}\n */\n supportsCookies() { return true; }\n /**\n * @param {?} name\n * @return {?}\n */\n getCookie(name) { return parseCookieValue(document.cookie, name); }\n /**\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\n setCookie(name, value) {\n // document.cookie is magical, assigning into it assigns/overrides one cookie value, but does\n // not clear other cookies.\n document.cookie = encodeURIComponent(name) + '=' + encodeURIComponent(value);\n }\n}\nlet /** @type {?} */ baseElement = null;\n/**\n * @return {?}\n */\nfunction getBaseElementHref() {\n if (!baseElement) {\n baseElement = /** @type {?} */ ((document.querySelector('base')));\n if (!baseElement) {\n return null;\n }\n }\n return baseElement.getAttribute('href');\n}\n// based on urlUtils.js in AngularJS 1\nlet /** @type {?} */ urlParsingNode;\n/**\n * @param {?} url\n * @return {?}\n */\nfunction relativePath(url) {\n if (!urlParsingNode) {\n urlParsingNode = document.createElement('a');\n }\n urlParsingNode.setAttribute('href', url);\n return (urlParsingNode.pathname.charAt(0) === '/') ? urlParsingNode.pathname :\n '/' + urlParsingNode.pathname;\n}\n//# sourceMappingURL=browser_adapter.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { DOCUMENT as commonDOCUMENT } from '@angular/common';\n/**\n * A DI Token representing the main rendering context. In a browser this is the DOM Document.\n *\n * Note: Document might not be available in the Application Context when Application and Rendering\n * Contexts are not the same (e.g. when running the application into a Web Worker).\n *\n * @deprecated import from `\\@angular/common` instead.\n */\nexport const /** @type {?} */ DOCUMENT = commonDOCUMENT;\n//# sourceMappingURL=dom_tokens.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @return {?}\n */\nexport function supportsState() {\n return !!window.history.pushState;\n}\n//# sourceMappingURL=history.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { PlatformLocation } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\nimport { getDOM } from '../../dom/dom_adapter';\nimport { DOCUMENT } from '../../dom/dom_tokens';\nimport { supportsState } from './history';\n/**\n * `PlatformLocation` encapsulates all of the direct calls to platform APIs.\n * This class should not be used directly by an application developer. Instead, use\n * {\\@link Location}.\n */\nexport class BrowserPlatformLocation extends PlatformLocation {\n /**\n * @param {?} _doc\n */\n constructor(_doc) {\n super();\n this._doc = _doc;\n this._init();\n }\n /**\n * \\@internal\n * @return {?}\n */\n _init() {\n (/** @type {?} */ (this)).location = getDOM().getLocation();\n this._history = getDOM().getHistory();\n }\n /**\n * @return {?}\n */\n getBaseHrefFromDOM() { return /** @type {?} */ ((getDOM().getBaseHref(this._doc))); }\n /**\n * @param {?} fn\n * @return {?}\n */\n onPopState(fn) {\n getDOM().getGlobalEventTarget(this._doc, 'window').addEventListener('popstate', fn, false);\n }\n /**\n * @param {?} fn\n * @return {?}\n */\n onHashChange(fn) {\n getDOM().getGlobalEventTarget(this._doc, 'window').addEventListener('hashchange', fn, false);\n }\n /**\n * @return {?}\n */\n get pathname() { return this.location.pathname; }\n /**\n * @return {?}\n */\n get search() { return this.location.search; }\n /**\n * @return {?}\n */\n get hash() { return this.location.hash; }\n /**\n * @param {?} newPath\n * @return {?}\n */\n set pathname(newPath) { this.location.pathname = newPath; }\n /**\n * @param {?} state\n * @param {?} title\n * @param {?} url\n * @return {?}\n */\n pushState(state, title, url) {\n if (supportsState()) {\n this._history.pushState(state, title, url);\n }\n else {\n this.location.hash = url;\n }\n }\n /**\n * @param {?} state\n * @param {?} title\n * @param {?} url\n * @return {?}\n */\n replaceState(state, title, url) {\n if (supportsState()) {\n this._history.replaceState(state, title, url);\n }\n else {\n this.location.hash = url;\n }\n }\n /**\n * @return {?}\n */\n forward() { this._history.forward(); }\n /**\n * @return {?}\n */\n back() { this._history.back(); }\n}\nBrowserPlatformLocation.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nBrowserPlatformLocation.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] },] },\n];\nfunction BrowserPlatformLocation_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n BrowserPlatformLocation.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n BrowserPlatformLocation.ctorParameters;\n /** @type {?} */\n BrowserPlatformLocation.prototype.location;\n /** @type {?} */\n BrowserPlatformLocation.prototype._history;\n /** @type {?} */\n BrowserPlatformLocation.prototype._doc;\n}\n//# sourceMappingURL=browser_platform_location.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Inject, Injectable } from '@angular/core';\nimport { getDOM } from '../dom/dom_adapter';\nimport { DOCUMENT } from '../dom/dom_tokens';\n/**\n * A service that can be used to get and add meta tags.\n *\n * \\@experimental\n */\nexport class Meta {\n /**\n * @param {?} _doc\n */\n constructor(_doc) {\n this._doc = _doc;\n this._dom = getDOM();\n }\n /**\n * @param {?} tag\n * @param {?=} forceCreation\n * @return {?}\n */\n addTag(tag, forceCreation = false) {\n if (!tag)\n return null;\n return this._getOrCreateElement(tag, forceCreation);\n }\n /**\n * @param {?} tags\n * @param {?=} forceCreation\n * @return {?}\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 * @param {?} attrSelector\n * @return {?}\n */\n getTag(attrSelector) {\n if (!attrSelector)\n return null;\n return this._dom.querySelector(this._doc, `meta[${attrSelector}]`) || null;\n }\n /**\n * @param {?} attrSelector\n * @return {?}\n */\n getTags(attrSelector) {\n if (!attrSelector)\n return [];\n const /** @type {?} */ list = this._dom.querySelectorAll(this._doc, `meta[${attrSelector}]`);\n return list ? [].slice.call(list) : [];\n }\n /**\n * @param {?} tag\n * @param {?=} selector\n * @return {?}\n */\n updateTag(tag, selector) {\n if (!tag)\n return null;\n selector = selector || this._parseSelector(tag);\n const /** @type {?} */ meta = /** @type {?} */ ((this.getTag(selector)));\n if (meta) {\n return this._setMetaElementAttributes(tag, meta);\n }\n return this._getOrCreateElement(tag, true);\n }\n /**\n * @param {?} attrSelector\n * @return {?}\n */\n removeTag(attrSelector) { this.removeTagElement(/** @type {?} */ ((this.getTag(attrSelector)))); }\n /**\n * @param {?} meta\n * @return {?}\n */\n removeTagElement(meta) {\n if (meta) {\n this._dom.remove(meta);\n }\n }\n /**\n * @param {?} meta\n * @param {?=} forceCreation\n * @return {?}\n */\n _getOrCreateElement(meta, forceCreation = false) {\n if (!forceCreation) {\n const /** @type {?} */ selector = this._parseSelector(meta);\n const /** @type {?} */ elem = /** @type {?} */ ((this.getTag(selector)));\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 if (elem && this._containsAttributes(meta, elem))\n return elem;\n }\n const /** @type {?} */ element = /** @type {?} */ (this._dom.createElement('meta'));\n this._setMetaElementAttributes(meta, element);\n const /** @type {?} */ head = this._dom.getElementsByTagName(this._doc, 'head')[0];\n this._dom.appendChild(head, element);\n return element;\n }\n /**\n * @param {?} tag\n * @param {?} el\n * @return {?}\n */\n _setMetaElementAttributes(tag, el) {\n Object.keys(tag).forEach((prop) => this._dom.setAttribute(el, prop, tag[prop]));\n return el;\n }\n /**\n * @param {?} tag\n * @return {?}\n */\n _parseSelector(tag) {\n const /** @type {?} */ attr = tag.name ? 'name' : 'property';\n return `${attr}=\"${tag[attr]}\"`;\n }\n /**\n * @param {?} tag\n * @param {?} elem\n * @return {?}\n */\n _containsAttributes(tag, elem) {\n return Object.keys(tag).every((key) => this._dom.getAttribute(elem, key) === tag[key]);\n }\n}\nMeta.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nMeta.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] },] },\n];\nfunction Meta_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n Meta.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n Meta.ctorParameters;\n /** @type {?} */\n Meta.prototype._dom;\n /** @type {?} */\n Meta.prototype._doc;\n}\n//# sourceMappingURL=meta.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { APP_INITIALIZER, ApplicationInitStatus, InjectionToken, Injector } from '@angular/core';\nimport { getDOM } from '../dom/dom_adapter';\nimport { DOCUMENT } from '../dom/dom_tokens';\n/**\n * An id that identifies a particular application being bootstrapped, that should\n * match across the client/server boundary.\n */\nexport const /** @type {?} */ TRANSITION_ID = new InjectionToken('TRANSITION_ID');\n/**\n * @param {?} transitionId\n * @param {?} document\n * @param {?} injector\n * @return {?}\n */\nexport function appInitializerFactory(transitionId, document, injector) {\n return () => {\n // Wait for all application initializers to be completed before removing the styles set by\n // the server.\n injector.get(ApplicationInitStatus).donePromise.then(() => {\n const /** @type {?} */ dom = getDOM();\n const /** @type {?} */ styles = Array.prototype.slice.apply(dom.querySelectorAll(document, `style[ng-transition]`));\n styles.filter(el => dom.getAttribute(el, 'ng-transition') === transitionId)\n .forEach(el => dom.remove(el));\n });\n };\n}\nexport const /** @type {?} */ SERVER_TRANSITION_PROVIDERS = [\n {\n provide: APP_INITIALIZER,\n useFactory: appInitializerFactory,\n deps: [TRANSITION_ID, DOCUMENT, Injector],\n multi: true\n },\n];\n//# sourceMappingURL=server-transition.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { setTestabilityGetter, ɵglobal as global } from '@angular/core';\nimport { getDOM } from '../dom/dom_adapter';\nexport class BrowserGetTestability {\n /**\n * @return {?}\n */\n static init() { setTestabilityGetter(new BrowserGetTestability()); }\n /**\n * @param {?} registry\n * @return {?}\n */\n addToWindow(registry) {\n global['getAngularTestability'] = (elem, findInAncestors = true) => {\n const /** @type {?} */ testability = registry.findTestabilityInTree(elem, findInAncestors);\n if (testability == null) {\n throw new Error('Could not find testability for element.');\n }\n return testability;\n };\n global['getAllAngularTestabilities'] = () => registry.getAllTestabilities();\n global['getAllAngularRootElements'] = () => registry.getAllRootElements();\n const /** @type {?} */ whenAllStable = (callback /** TODO #9100 */) => {\n const /** @type {?} */ testabilities = global['getAllAngularTestabilities']();\n let /** @type {?} */ count = testabilities.length;\n let /** @type {?} */ didWork = false;\n const /** @type {?} */ decrement = function (didWork_ /** TODO #9100 */) {\n didWork = didWork || didWork_;\n count--;\n if (count == 0) {\n callback(didWork);\n }\n };\n testabilities.forEach(function (testability /** TODO #9100 */) {\n testability.whenStable(decrement);\n });\n };\n if (!global['frameworkStabilizers']) {\n global['frameworkStabilizers'] = [];\n }\n global['frameworkStabilizers'].push(whenAllStable);\n }\n /**\n * @param {?} registry\n * @param {?} elem\n * @param {?} findInAncestors\n * @return {?}\n */\n findTestabilityInTree(registry, elem, findInAncestors) {\n if (elem == null) {\n return null;\n }\n const /** @type {?} */ 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, getDOM().getHost(elem), true);\n }\n return this.findTestabilityInTree(registry, getDOM().parentElement(elem), true);\n }\n}\n//# sourceMappingURL=testability.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Inject, Injectable } from '@angular/core';\nimport { getDOM } from '../dom/dom_adapter';\nimport { DOCUMENT } from '../dom/dom_tokens';\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 * \\@experimental\n */\nexport class Title {\n /**\n * @param {?} _doc\n */\n constructor(_doc) {\n this._doc = _doc;\n }\n /**\n * Get the title of the current HTML document.\n * @return {?}\n */\n getTitle() { return getDOM().getTitle(this._doc); }\n /**\n * Set the title of the current HTML document.\n * @param {?} newTitle\n * @return {?}\n */\n setTitle(newTitle) { getDOM().setTitle(this._doc, newTitle); }\n}\nTitle.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nTitle.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] },] },\n];\nfunction Title_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n Title.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n Title.ctorParameters;\n /** @type {?} */\n Title.prototype._doc;\n}\n//# sourceMappingURL=title.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ɵglobal as global } from '@angular/core';\nconst /** @type {?} */ CAMEL_CASE_REGEXP = /([A-Z])/g;\nconst /** @type {?} */ DASH_CASE_REGEXP = /-([a-z])/g;\n/**\n * @param {?} input\n * @return {?}\n */\nexport function camelCaseToDashCase(input) {\n return input.replace(CAMEL_CASE_REGEXP, (...m) => '-' + m[1].toLowerCase());\n}\n/**\n * @param {?} input\n * @return {?}\n */\nexport function dashCaseToCamelCase(input) {\n return input.replace(DASH_CASE_REGEXP, (...m) => m[1].toUpperCase());\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 * @return {?}\n */\nexport function 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 /** @type {?} */ ng = global['ng'] = (/** @type {?} */ (global['ng'])) || {};\n ng[name] = value;\n }\n}\n//# sourceMappingURL=util.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport * as core from '@angular/core';\nimport { exportNgVar } from '../util';\nconst /** @type {?} */ CORE_TOKENS = {\n 'ApplicationRef': core.ApplicationRef,\n 'NgZone': core.NgZone,\n};\nconst /** @type {?} */ INSPECT_GLOBAL_NAME = 'probe';\nconst /** @type {?} */ CORE_TOKENS_GLOBAL_NAME = 'coreTokens';\n/**\n * Returns a {\\@link DebugElement} for the given native DOM element, or\n * null if the given native element does not have an Angular view associated\n * with it.\n * @param {?} element\n * @return {?}\n */\nexport function inspectNativeElement(element) {\n return core.getDebugNode(element);\n}\n/**\n * @param {?} coreTokens\n * @return {?}\n */\nexport function _createNgProbe(coreTokens) {\n exportNgVar(INSPECT_GLOBAL_NAME, inspectNativeElement);\n exportNgVar(CORE_TOKENS_GLOBAL_NAME, Object.assign({}, CORE_TOKENS, _ngProbeTokensToMap(coreTokens || [])));\n return () => inspectNativeElement;\n}\n/**\n * @param {?} tokens\n * @return {?}\n */\nfunction _ngProbeTokensToMap(tokens) {\n return tokens.reduce((prev, t) => (prev[t.name] = t.token, prev), {});\n}\n/**\n * Providers which support debugging Angular applications (e.g. via `ng.probe`).\n */\nexport const /** @type {?} */ ELEMENT_PROBE_PROVIDERS = [\n {\n provide: core.APP_INITIALIZER,\n useFactory: _createNgProbe,\n deps: [\n [core.NgProbeToken, new core.Optional()],\n ],\n multi: true,\n },\n];\n//# sourceMappingURL=ng_probe.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Inject, Injectable, InjectionToken, NgZone } from '@angular/core';\nimport { getDOM } from '../dom_adapter';\n/**\n * \\@stable\n */\nexport const /** @type {?} */ EVENT_MANAGER_PLUGINS = new InjectionToken('EventManagerPlugins');\n/**\n * \\@stable\n */\nexport class EventManager {\n /**\n * @param {?} plugins\n * @param {?} _zone\n */\n constructor(plugins, _zone) {\n this._zone = _zone;\n this._eventNameToPlugin = new Map();\n plugins.forEach(p => p.manager = this);\n this._plugins = plugins.slice().reverse();\n }\n /**\n * @param {?} element\n * @param {?} eventName\n * @param {?} handler\n * @return {?}\n */\n addEventListener(element, eventName, handler) {\n const /** @type {?} */ plugin = this._findPluginFor(eventName);\n return plugin.addEventListener(element, eventName, handler);\n }\n /**\n * @param {?} target\n * @param {?} eventName\n * @param {?} handler\n * @return {?}\n */\n addGlobalEventListener(target, eventName, handler) {\n const /** @type {?} */ plugin = this._findPluginFor(eventName);\n return plugin.addGlobalEventListener(target, eventName, handler);\n }\n /**\n * @return {?}\n */\n getZone() { return this._zone; }\n /**\n * \\@internal\n * @param {?} eventName\n * @return {?}\n */\n _findPluginFor(eventName) {\n const /** @type {?} */ plugin = this._eventNameToPlugin.get(eventName);\n if (plugin) {\n return plugin;\n }\n const /** @type {?} */ plugins = this._plugins;\n for (let /** @type {?} */ i = 0; i < plugins.length; i++) {\n const /** @type {?} */ plugin = plugins[i];\n if (plugin.supports(eventName)) {\n this._eventNameToPlugin.set(eventName, plugin);\n return plugin;\n }\n }\n throw new Error(`No event manager plugin found for event ${eventName}`);\n }\n}\nEventManager.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nEventManager.ctorParameters = () => [\n { type: Array, decorators: [{ type: Inject, args: [EVENT_MANAGER_PLUGINS,] },] },\n { type: NgZone, },\n];\nfunction EventManager_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n EventManager.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n EventManager.ctorParameters;\n /** @type {?} */\n EventManager.prototype._plugins;\n /** @type {?} */\n EventManager.prototype._eventNameToPlugin;\n /** @type {?} */\n EventManager.prototype._zone;\n}\n/**\n * @abstract\n */\nexport class EventManagerPlugin {\n /**\n * @param {?} _doc\n */\n constructor(_doc) {\n this._doc = _doc;\n }\n /**\n * @param {?} element\n * @param {?} eventName\n * @param {?} handler\n * @return {?}\n */\n addGlobalEventListener(element, eventName, handler) {\n const /** @type {?} */ target = getDOM().getGlobalEventTarget(this._doc, element);\n if (!target) {\n throw new Error(`Unsupported event target ${target} for event ${eventName}`);\n }\n return this.addEventListener(target, eventName, handler);\n }\n}\nfunction EventManagerPlugin_tsickle_Closure_declarations() {\n /** @type {?} */\n EventManagerPlugin.prototype.manager;\n /** @type {?} */\n EventManagerPlugin.prototype._doc;\n /**\n * @abstract\n * @param {?} eventName\n * @return {?}\n */\n EventManagerPlugin.prototype.supports = function (eventName) { };\n /**\n * @abstract\n * @param {?} element\n * @param {?} eventName\n * @param {?} handler\n * @return {?}\n */\n EventManagerPlugin.prototype.addEventListener = function (element, eventName, handler) { };\n}\n//# sourceMappingURL=event_manager.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Inject, Injectable } from '@angular/core';\nimport { getDOM } from './dom_adapter';\nimport { DOCUMENT } from './dom_tokens';\nexport class SharedStylesHost {\n constructor() {\n /**\n * \\@internal\n */\n this._stylesSet = new Set();\n }\n /**\n * @param {?} styles\n * @return {?}\n */\n addStyles(styles) {\n const /** @type {?} */ additions = new Set();\n styles.forEach(style => {\n if (!this._stylesSet.has(style)) {\n this._stylesSet.add(style);\n additions.add(style);\n }\n });\n this.onStylesAdded(additions);\n }\n /**\n * @param {?} additions\n * @return {?}\n */\n onStylesAdded(additions) { }\n /**\n * @return {?}\n */\n getAllStyles() { return Array.from(this._stylesSet); }\n}\nSharedStylesHost.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nSharedStylesHost.ctorParameters = () => [];\nfunction SharedStylesHost_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n SharedStylesHost.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n SharedStylesHost.ctorParameters;\n /**\n * \\@internal\n * @type {?}\n */\n SharedStylesHost.prototype._stylesSet;\n}\nexport class DomSharedStylesHost extends SharedStylesHost {\n /**\n * @param {?} _doc\n */\n constructor(_doc) {\n super();\n this._doc = _doc;\n this._hostNodes = new Set();\n this._styleNodes = new Set();\n this._hostNodes.add(_doc.head);\n }\n /**\n * @param {?} styles\n * @param {?} host\n * @return {?}\n */\n _addStylesToHost(styles, host) {\n styles.forEach((style) => {\n const /** @type {?} */ styleEl = this._doc.createElement('style');\n styleEl.textContent = style;\n this._styleNodes.add(host.appendChild(styleEl));\n });\n }\n /**\n * @param {?} hostNode\n * @return {?}\n */\n addHost(hostNode) {\n this._addStylesToHost(this._stylesSet, hostNode);\n this._hostNodes.add(hostNode);\n }\n /**\n * @param {?} hostNode\n * @return {?}\n */\n removeHost(hostNode) { this._hostNodes.delete(hostNode); }\n /**\n * @param {?} additions\n * @return {?}\n */\n onStylesAdded(additions) {\n this._hostNodes.forEach(hostNode => this._addStylesToHost(additions, hostNode));\n }\n /**\n * @return {?}\n */\n ngOnDestroy() { this._styleNodes.forEach(styleNode => getDOM().remove(styleNode)); }\n}\nDomSharedStylesHost.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nDomSharedStylesHost.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] },] },\n];\nfunction DomSharedStylesHost_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n DomSharedStylesHost.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n DomSharedStylesHost.ctorParameters;\n /** @type {?} */\n DomSharedStylesHost.prototype._hostNodes;\n /** @type {?} */\n DomSharedStylesHost.prototype._styleNodes;\n /** @type {?} */\n DomSharedStylesHost.prototype._doc;\n}\n//# sourceMappingURL=shared_styles_host.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Injectable, RendererStyleFlags2, ViewEncapsulation } from '@angular/core';\nimport { EventManager } from './events/event_manager';\nimport { DomSharedStylesHost } from './shared_styles_host';\nexport const /** @type {?} */ 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};\nconst /** @type {?} */ COMPONENT_REGEX = /%COMP%/g;\nexport const /** @type {?} */ COMPONENT_VARIABLE = '%COMP%';\nexport const /** @type {?} */ HOST_ATTR = `_nghost-${COMPONENT_VARIABLE}`;\nexport const /** @type {?} */ CONTENT_ATTR = `_ngcontent-${COMPONENT_VARIABLE}`;\n/**\n * @param {?} componentShortId\n * @return {?}\n */\nexport function shimContentAttribute(componentShortId) {\n return CONTENT_ATTR.replace(COMPONENT_REGEX, componentShortId);\n}\n/**\n * @param {?} componentShortId\n * @return {?}\n */\nexport function shimHostAttribute(componentShortId) {\n return HOST_ATTR.replace(COMPONENT_REGEX, componentShortId);\n}\n/**\n * @param {?} compId\n * @param {?} styles\n * @param {?} target\n * @return {?}\n */\nexport function flattenStyles(compId, styles, target) {\n for (let /** @type {?} */ i = 0; i < styles.length; i++) {\n let /** @type {?} */ style = styles[i];\n if (Array.isArray(style)) {\n flattenStyles(compId, style, target);\n }\n else {\n style = style.replace(COMPONENT_REGEX, compId);\n target.push(style);\n }\n }\n return target;\n}\n/**\n * @param {?} eventHandler\n * @return {?}\n */\nfunction decoratePreventDefault(eventHandler) {\n return (event) => {\n const /** @type {?} */ allowDefaultBehavior = eventHandler(event);\n if (allowDefaultBehavior === false) {\n // TODO(tbosch): move preventDefault into event plugins...\n event.preventDefault();\n event.returnValue = false;\n }\n };\n}\nexport class DomRendererFactory2 {\n /**\n * @param {?} eventManager\n * @param {?} sharedStylesHost\n */\n constructor(eventManager, sharedStylesHost) {\n this.eventManager = eventManager;\n this.sharedStylesHost = sharedStylesHost;\n this.rendererByCompId = new Map();\n this.defaultRenderer = new DefaultDomRenderer2(eventManager);\n }\n /**\n * @param {?} element\n * @param {?} type\n * @return {?}\n */\n createRenderer(element, type) {\n if (!element || !type) {\n return this.defaultRenderer;\n }\n switch (type.encapsulation) {\n case ViewEncapsulation.Emulated: {\n let /** @type {?} */ renderer = this.rendererByCompId.get(type.id);\n if (!renderer) {\n renderer =\n new EmulatedEncapsulationDomRenderer2(this.eventManager, this.sharedStylesHost, type);\n this.rendererByCompId.set(type.id, renderer);\n }\n (/** @type {?} */ (renderer)).applyToHost(element);\n return renderer;\n }\n case ViewEncapsulation.Native:\n return new ShadowDomRenderer(this.eventManager, this.sharedStylesHost, element, type);\n default: {\n if (!this.rendererByCompId.has(type.id)) {\n const /** @type {?} */ styles = flattenStyles(type.id, type.styles, []);\n this.sharedStylesHost.addStyles(styles);\n this.rendererByCompId.set(type.id, this.defaultRenderer);\n }\n return this.defaultRenderer;\n }\n }\n }\n /**\n * @return {?}\n */\n begin() { }\n /**\n * @return {?}\n */\n end() { }\n}\nDomRendererFactory2.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nDomRendererFactory2.ctorParameters = () => [\n { type: EventManager, },\n { type: DomSharedStylesHost, },\n];\nfunction DomRendererFactory2_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n DomRendererFactory2.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n DomRendererFactory2.ctorParameters;\n /** @type {?} */\n DomRendererFactory2.prototype.rendererByCompId;\n /** @type {?} */\n DomRendererFactory2.prototype.defaultRenderer;\n /** @type {?} */\n DomRendererFactory2.prototype.eventManager;\n /** @type {?} */\n DomRendererFactory2.prototype.sharedStylesHost;\n}\nclass DefaultDomRenderer2 {\n /**\n * @param {?} eventManager\n */\n constructor(eventManager) {\n this.eventManager = eventManager;\n this.data = Object.create(null);\n }\n /**\n * @return {?}\n */\n destroy() { }\n /**\n * @param {?} name\n * @param {?=} namespace\n * @return {?}\n */\n createElement(name, namespace) {\n if (namespace) {\n return document.createElementNS(NAMESPACE_URIS[namespace], name);\n }\n return document.createElement(name);\n }\n /**\n * @param {?} value\n * @return {?}\n */\n createComment(value) { return document.createComment(value); }\n /**\n * @param {?} value\n * @return {?}\n */\n createText(value) { return document.createTextNode(value); }\n /**\n * @param {?} parent\n * @param {?} newChild\n * @return {?}\n */\n appendChild(parent, newChild) { parent.appendChild(newChild); }\n /**\n * @param {?} parent\n * @param {?} newChild\n * @param {?} refChild\n * @return {?}\n */\n insertBefore(parent, newChild, refChild) {\n if (parent) {\n parent.insertBefore(newChild, refChild);\n }\n }\n /**\n * @param {?} parent\n * @param {?} oldChild\n * @return {?}\n */\n removeChild(parent, oldChild) {\n if (parent) {\n parent.removeChild(oldChild);\n }\n }\n /**\n * @param {?} selectorOrNode\n * @return {?}\n */\n selectRootElement(selectorOrNode) {\n let /** @type {?} */ el = typeof selectorOrNode === 'string' ? document.querySelector(selectorOrNode) :\n selectorOrNode;\n if (!el) {\n throw new Error(`The selector \"${selectorOrNode}\" did not match any elements`);\n }\n el.textContent = '';\n return el;\n }\n /**\n * @param {?} node\n * @return {?}\n */\n parentNode(node) { return node.parentNode; }\n /**\n * @param {?} node\n * @return {?}\n */\n nextSibling(node) { return node.nextSibling; }\n /**\n * @param {?} el\n * @param {?} name\n * @param {?} value\n * @param {?=} namespace\n * @return {?}\n */\n setAttribute(el, name, value, namespace) {\n if (namespace) {\n name = `${namespace}:${name}`;\n const /** @type {?} */ 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 /**\n * @param {?} el\n * @param {?} name\n * @param {?=} namespace\n * @return {?}\n */\n removeAttribute(el, name, namespace) {\n if (namespace) {\n const /** @type {?} */ 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 /**\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\n addClass(el, name) { el.classList.add(name); }\n /**\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\n removeClass(el, name) { el.classList.remove(name); }\n /**\n * @param {?} el\n * @param {?} style\n * @param {?} value\n * @param {?} flags\n * @return {?}\n */\n setStyle(el, style, value, flags) {\n if (flags & RendererStyleFlags2.DashCase) {\n el.style.setProperty(style, value, !!(flags & RendererStyleFlags2.Important) ? 'important' : '');\n }\n else {\n el.style[style] = value;\n }\n }\n /**\n * @param {?} el\n * @param {?} style\n * @param {?} flags\n * @return {?}\n */\n removeStyle(el, style, flags) {\n if (flags & RendererStyleFlags2.DashCase) {\n el.style.removeProperty(style);\n }\n else {\n // IE requires '' instead of null\n // see https://github.com/angular/angular/issues/7916\n el.style[style] = '';\n }\n }\n /**\n * @param {?} el\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\n setProperty(el, name, value) {\n checkNoSyntheticProp(name, 'property');\n el[name] = value;\n }\n /**\n * @param {?} node\n * @param {?} value\n * @return {?}\n */\n setValue(node, value) { node.nodeValue = value; }\n /**\n * @param {?} target\n * @param {?} event\n * @param {?} callback\n * @return {?}\n */\n listen(target, event, callback) {\n checkNoSyntheticProp(event, 'listener');\n if (typeof target === 'string') {\n return /** @type {?} */ (this.eventManager.addGlobalEventListener(target, event, decoratePreventDefault(callback)));\n }\n return /** @type {?} */ ((this.eventManager.addEventListener(target, event, decoratePreventDefault(callback))));\n }\n}\nfunction DefaultDomRenderer2_tsickle_Closure_declarations() {\n /** @type {?} */\n DefaultDomRenderer2.prototype.data;\n /** @type {?} */\n DefaultDomRenderer2.prototype.destroyNode;\n /** @type {?} */\n DefaultDomRenderer2.prototype.eventManager;\n}\nconst /** @type {?} */ AT_CHARCODE = '@'.charCodeAt(0);\n/**\n * @param {?} name\n * @param {?} nameKind\n * @return {?}\n */\nfunction checkNoSyntheticProp(name, nameKind) {\n if (name.charCodeAt(0) === AT_CHARCODE) {\n throw new Error(`Found the synthetic ${nameKind} ${name}. Please include either \"BrowserAnimationsModule\" or \"NoopAnimationsModule\" in your application.`);\n }\n}\nclass EmulatedEncapsulationDomRenderer2 extends DefaultDomRenderer2 {\n /**\n * @param {?} eventManager\n * @param {?} sharedStylesHost\n * @param {?} component\n */\n constructor(eventManager, sharedStylesHost, component) {\n super(eventManager);\n this.component = component;\n const /** @type {?} */ styles = flattenStyles(component.id, component.styles, []);\n sharedStylesHost.addStyles(styles);\n this.contentAttr = shimContentAttribute(component.id);\n this.hostAttr = shimHostAttribute(component.id);\n }\n /**\n * @param {?} element\n * @return {?}\n */\n applyToHost(element) { super.setAttribute(element, this.hostAttr, ''); }\n /**\n * @param {?} parent\n * @param {?} name\n * @return {?}\n */\n createElement(parent, name) {\n const /** @type {?} */ el = super.createElement(parent, name);\n super.setAttribute(el, this.contentAttr, '');\n return el;\n }\n}\nfunction EmulatedEncapsulationDomRenderer2_tsickle_Closure_declarations() {\n /** @type {?} */\n EmulatedEncapsulationDomRenderer2.prototype.contentAttr;\n /** @type {?} */\n EmulatedEncapsulationDomRenderer2.prototype.hostAttr;\n /** @type {?} */\n EmulatedEncapsulationDomRenderer2.prototype.component;\n}\nclass ShadowDomRenderer extends DefaultDomRenderer2 {\n /**\n * @param {?} eventManager\n * @param {?} sharedStylesHost\n * @param {?} hostEl\n * @param {?} component\n */\n constructor(eventManager, sharedStylesHost, hostEl, component) {\n super(eventManager);\n this.sharedStylesHost = sharedStylesHost;\n this.hostEl = hostEl;\n this.component = component;\n this.shadowRoot = (/** @type {?} */ (hostEl)).createShadowRoot();\n this.sharedStylesHost.addHost(this.shadowRoot);\n const /** @type {?} */ styles = flattenStyles(component.id, component.styles, []);\n for (let /** @type {?} */ i = 0; i < styles.length; i++) {\n const /** @type {?} */ styleEl = document.createElement('style');\n styleEl.textContent = styles[i];\n this.shadowRoot.appendChild(styleEl);\n }\n }\n /**\n * @param {?} node\n * @return {?}\n */\n nodeOrShadowRoot(node) { return node === this.hostEl ? this.shadowRoot : node; }\n /**\n * @return {?}\n */\n destroy() { this.sharedStylesHost.removeHost(this.shadowRoot); }\n /**\n * @param {?} parent\n * @param {?} newChild\n * @return {?}\n */\n appendChild(parent, newChild) {\n return super.appendChild(this.nodeOrShadowRoot(parent), newChild);\n }\n /**\n * @param {?} parent\n * @param {?} newChild\n * @param {?} refChild\n * @return {?}\n */\n insertBefore(parent, newChild, refChild) {\n return super.insertBefore(this.nodeOrShadowRoot(parent), newChild, refChild);\n }\n /**\n * @param {?} parent\n * @param {?} oldChild\n * @return {?}\n */\n removeChild(parent, oldChild) {\n return super.removeChild(this.nodeOrShadowRoot(parent), oldChild);\n }\n /**\n * @param {?} node\n * @return {?}\n */\n parentNode(node) {\n return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(node)));\n }\n}\nfunction ShadowDomRenderer_tsickle_Closure_declarations() {\n /** @type {?} */\n ShadowDomRenderer.prototype.shadowRoot;\n /** @type {?} */\n ShadowDomRenderer.prototype.sharedStylesHost;\n /** @type {?} */\n ShadowDomRenderer.prototype.hostEl;\n /** @type {?} */\n ShadowDomRenderer.prototype.component;\n}\n//# sourceMappingURL=dom_renderer.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Inject, Injectable, NgZone } from '@angular/core';\nimport { DOCUMENT } from '../dom_tokens';\nimport { EventManagerPlugin } from './event_manager';\nconst ɵ0 = function (v) {\n return '__zone_symbol__' + v;\n};\n/**\n * Detect if Zone is present. If it is then use simple zone aware 'addEventListener'\n * since Angular can do much more\n * efficient bookkeeping than Zone can, because we have additional information. This speeds up\n * addEventListener by 3x.\n */\nconst /** @type {?} */ __symbol__ = (typeof Zone !== 'undefined') && (/** @type {?} */ (Zone))['__symbol__'] || ɵ0;\nconst /** @type {?} */ ADD_EVENT_LISTENER = __symbol__('addEventListener');\nconst /** @type {?} */ REMOVE_EVENT_LISTENER = __symbol__('removeEventListener');\nconst /** @type {?} */ symbolNames = {};\nconst /** @type {?} */ FALSE = 'FALSE';\nconst /** @type {?} */ ANGULAR = 'ANGULAR';\nconst /** @type {?} */ NATIVE_ADD_LISTENER = 'addEventListener';\nconst /** @type {?} */ NATIVE_REMOVE_LISTENER = 'removeEventListener';\n// use the same symbol string which is used in zone.js\nconst /** @type {?} */ stopSymbol = '__zone_symbol__propagationStopped';\nconst /** @type {?} */ stopMethodSymbol = '__zone_symbol__stopImmediatePropagation';\nconst /** @type {?} */ blackListedEvents = (typeof Zone !== 'undefined') && (/** @type {?} */ (Zone))[__symbol__('BLACK_LISTED_EVENTS')];\nlet /** @type {?} */ blackListedMap;\nif (blackListedEvents) {\n blackListedMap = {};\n blackListedEvents.forEach(eventName => { blackListedMap[eventName] = eventName; });\n}\nconst /** @type {?} */ isBlackListedEvent = function (eventName) {\n if (!blackListedMap) {\n return false;\n }\n return blackListedMap.hasOwnProperty(eventName);\n};\nconst ɵ1 = isBlackListedEvent;\n/**\n * @record\n */\nfunction TaskData() { }\nfunction TaskData_tsickle_Closure_declarations() {\n /** @type {?} */\n TaskData.prototype.zone;\n /** @type {?} */\n TaskData.prototype.handler;\n}\n// a global listener to handle all dom event,\n// so we do not need to create a closure everytime\nconst /** @type {?} */ globalListener = function (event) {\n const /** @type {?} */ symbolName = symbolNames[event.type];\n if (!symbolName) {\n return;\n }\n const /** @type {?} */ taskDatas = this[symbolName];\n if (!taskDatas) {\n return;\n }\n const /** @type {?} */ args = [event];\n if (taskDatas.length === 1) {\n // if taskDatas only have one element, just invoke it\n const /** @type {?} */ taskData = taskDatas[0];\n if (taskData.zone !== Zone.current) {\n // only use Zone.run when Zone.current not equals to stored zone\n return taskData.zone.run(taskData.handler, this, args);\n }\n else {\n return taskData.handler.apply(this, args);\n }\n }\n else {\n // copy tasks as a snapshot to avoid event handlers remove\n // itself or others\n const /** @type {?} */ copiedTasks = taskDatas.slice();\n for (let /** @type {?} */ i = 0; i < copiedTasks.length; i++) {\n // if other listener call event.stopImmediatePropagation\n // just break\n if ((/** @type {?} */ (event))[stopSymbol] === true) {\n break;\n }\n const /** @type {?} */ taskData = copiedTasks[i];\n if (taskData.zone !== Zone.current) {\n // only use Zone.run when Zone.current not equals to stored zone\n taskData.zone.run(taskData.handler, this, args);\n }\n else {\n taskData.handler.apply(this, args);\n }\n }\n }\n};\nconst ɵ2 = globalListener;\nexport class DomEventsPlugin extends EventManagerPlugin {\n /**\n * @param {?} doc\n * @param {?} ngZone\n */\n constructor(doc, ngZone) {\n super(doc);\n this.ngZone = ngZone;\n this.patchEvent();\n }\n /**\n * @return {?}\n */\n patchEvent() {\n if (!Event || !Event.prototype) {\n return;\n }\n if ((/** @type {?} */ (Event.prototype))[stopMethodSymbol]) {\n // already patched by zone.js\n return;\n }\n const /** @type {?} */ delegate = (/** @type {?} */ (Event.prototype))[stopMethodSymbol] =\n Event.prototype.stopImmediatePropagation;\n Event.prototype.stopImmediatePropagation = function () {\n if (this) {\n this[stopSymbol] = true;\n }\n // should call native delegate in case\n // in some enviroment part of the application\n // will not use the patched Event\n delegate && delegate.apply(this, arguments);\n };\n }\n /**\n * @param {?} eventName\n * @return {?}\n */\n supports(eventName) { return true; }\n /**\n * @param {?} element\n * @param {?} eventName\n * @param {?} handler\n * @return {?}\n */\n addEventListener(element, eventName, handler) {\n /**\n * This code is about to add a listener to the DOM. If Zone.js is present, than\n * `addEventListener` has been patched. The patched code adds overhead in both\n * memory and speed (3x slower) than native. For this reason if we detect that\n * Zone.js is present we use a simple version of zone aware addEventListener instead.\n * The result is faster registration and the zone will be restored.\n * But ZoneSpec.onScheduleTask, ZoneSpec.onInvokeTask, ZoneSpec.onCancelTask\n * will not be invoked\n * We also do manual zone restoration in element.ts renderEventHandlerClosure method.\n *\n * NOTE: it is possible that the element is from different iframe, and so we\n * have to check before we execute the method.\n */\n const /** @type {?} */ self = this;\n const /** @type {?} */ zoneJsLoaded = element[ADD_EVENT_LISTENER];\n let /** @type {?} */ callback = /** @type {?} */ (handler);\n // if zonejs is loaded and current zone is not ngZone\n // we keep Zone.current on target for later restoration.\n if (zoneJsLoaded && (!NgZone.isInAngularZone() || isBlackListedEvent(eventName))) {\n let /** @type {?} */ symbolName = symbolNames[eventName];\n if (!symbolName) {\n symbolName = symbolNames[eventName] = __symbol__(ANGULAR + eventName + FALSE);\n }\n let /** @type {?} */ taskDatas = (/** @type {?} */ (element))[symbolName];\n const /** @type {?} */ globalListenerRegistered = taskDatas && taskDatas.length > 0;\n if (!taskDatas) {\n taskDatas = (/** @type {?} */ (element))[symbolName] = [];\n }\n const /** @type {?} */ zone = isBlackListedEvent(eventName) ? Zone.root : Zone.current;\n if (taskDatas.length === 0) {\n taskDatas.push({ zone: zone, handler: callback });\n }\n else {\n let /** @type {?} */ callbackRegistered = false;\n for (let /** @type {?} */ i = 0; i < taskDatas.length; i++) {\n if (taskDatas[i].handler === callback) {\n callbackRegistered = true;\n break;\n }\n }\n if (!callbackRegistered) {\n taskDatas.push({ zone: zone, handler: callback });\n }\n }\n if (!globalListenerRegistered) {\n element[ADD_EVENT_LISTENER](eventName, globalListener, false);\n }\n }\n else {\n element[NATIVE_ADD_LISTENER](eventName, callback, false);\n }\n return () => this.removeEventListener(element, eventName, callback);\n }\n /**\n * @param {?} target\n * @param {?} eventName\n * @param {?} callback\n * @return {?}\n */\n removeEventListener(target, eventName, callback) {\n let /** @type {?} */ underlyingRemove = target[REMOVE_EVENT_LISTENER];\n // zone.js not loaded, use native removeEventListener\n if (!underlyingRemove) {\n return target[NATIVE_REMOVE_LISTENER].apply(target, [eventName, callback, false]);\n }\n let /** @type {?} */ symbolName = symbolNames[eventName];\n let /** @type {?} */ taskDatas = symbolName && target[symbolName];\n if (!taskDatas) {\n // addEventListener not using patched version\n // just call native removeEventListener\n return target[NATIVE_REMOVE_LISTENER].apply(target, [eventName, callback, false]);\n }\n // fix issue 20532, should be able to remove\n // listener which was added inside of ngZone\n let /** @type {?} */ found = false;\n for (let /** @type {?} */ i = 0; i < taskDatas.length; i++) {\n // remove listener from taskDatas if the callback equals\n if (taskDatas[i].handler === callback) {\n found = true;\n taskDatas.splice(i, 1);\n break;\n }\n }\n if (found) {\n if (taskDatas.length === 0) {\n // all listeners are removed, we can remove the globalListener from target\n underlyingRemove.apply(target, [eventName, globalListener, false]);\n }\n }\n else {\n // not found in taskDatas, the callback may be added inside of ngZone\n // use native remove listener to remove the calback\n target[NATIVE_REMOVE_LISTENER].apply(target, [eventName, callback, false]);\n }\n }\n}\nDomEventsPlugin.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nDomEventsPlugin.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] },] },\n { type: NgZone, },\n];\nfunction DomEventsPlugin_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n DomEventsPlugin.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n DomEventsPlugin.ctorParameters;\n /** @type {?} */\n DomEventsPlugin.prototype.ngZone;\n}\nexport { ɵ0, ɵ1, ɵ2 };\n//# sourceMappingURL=dom_events.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Inject, Injectable, InjectionToken } from '@angular/core';\nimport { DOCUMENT } from '../dom_tokens';\nimport { EventManagerPlugin } from './event_manager';\nconst /** @type {?} */ 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};\n/**\n * A DI token that you can use to provide{\\@link HammerGestureConfig} to Angular. Use it to configure\n * Hammer gestures.\n *\n * \\@experimental\n */\nexport const /** @type {?} */ HAMMER_GESTURE_CONFIG = new InjectionToken('HammerGestureConfig');\n/**\n * @record\n */\nexport function HammerInstance() { }\nfunction HammerInstance_tsickle_Closure_declarations() {\n /** @type {?} */\n HammerInstance.prototype.on;\n /** @type {?} */\n HammerInstance.prototype.off;\n}\n/**\n * \\@experimental\n */\nexport class HammerGestureConfig {\n constructor() {\n this.events = [];\n this.overrides = {};\n }\n /**\n * @param {?} element\n * @return {?}\n */\n buildHammer(element) {\n const /** @type {?} */ mc = new Hammer(element);\n mc.get('pinch').set({ enable: true });\n mc.get('rotate').set({ enable: true });\n for (const /** @type {?} */ eventName in this.overrides) {\n mc.get(eventName).set(this.overrides[eventName]);\n }\n return mc;\n }\n}\nHammerGestureConfig.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nHammerGestureConfig.ctorParameters = () => [];\nfunction HammerGestureConfig_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n HammerGestureConfig.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n HammerGestureConfig.ctorParameters;\n /** @type {?} */\n HammerGestureConfig.prototype.events;\n /** @type {?} */\n HammerGestureConfig.prototype.overrides;\n}\nexport class HammerGesturesPlugin extends EventManagerPlugin {\n /**\n * @param {?} doc\n * @param {?} _config\n */\n constructor(doc, _config) {\n super(doc);\n this._config = _config;\n }\n /**\n * @param {?} eventName\n * @return {?}\n */\n supports(eventName) {\n if (!EVENT_NAMES.hasOwnProperty(eventName.toLowerCase()) && !this.isCustomEvent(eventName)) {\n return false;\n }\n if (!(/** @type {?} */ (window)).Hammer) {\n throw new Error(`Hammer.js is not loaded, can not bind ${eventName} event`);\n }\n return true;\n }\n /**\n * @param {?} element\n * @param {?} eventName\n * @param {?} handler\n * @return {?}\n */\n addEventListener(element, eventName, handler) {\n const /** @type {?} */ zone = this.manager.getZone();\n eventName = eventName.toLowerCase();\n return zone.runOutsideAngular(() => {\n // Creating the manager bind events, must be done outside of angular\n const /** @type {?} */ mc = this._config.buildHammer(element);\n const /** @type {?} */ callback = function (eventObj) {\n zone.runGuarded(function () { handler(eventObj); });\n };\n mc.on(eventName, callback);\n return () => mc.off(eventName, callback);\n });\n }\n /**\n * @param {?} eventName\n * @return {?}\n */\n isCustomEvent(eventName) { return this._config.events.indexOf(eventName) > -1; }\n}\nHammerGesturesPlugin.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nHammerGesturesPlugin.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] },] },\n { type: HammerGestureConfig, decorators: [{ type: Inject, args: [HAMMER_GESTURE_CONFIG,] },] },\n];\nfunction HammerGesturesPlugin_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n HammerGesturesPlugin.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n HammerGesturesPlugin.ctorParameters;\n /** @type {?} */\n HammerGesturesPlugin.prototype._config;\n}\n//# sourceMappingURL=hammer_gestures.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Inject, Injectable } from '@angular/core';\nimport { getDOM } from '../dom_adapter';\nimport { DOCUMENT } from '../dom_tokens';\nimport { EventManagerPlugin } from './event_manager';\nconst /** @type {?} */ MODIFIER_KEYS = ['alt', 'control', 'meta', 'shift'];\nconst ɵ0 = (event) => event.altKey, ɵ1 = (event) => event.ctrlKey, ɵ2 = (event) => event.metaKey, ɵ3 = (event) => event.shiftKey;\nconst /** @type {?} */ MODIFIER_KEY_GETTERS = {\n 'alt': ɵ0,\n 'control': ɵ1,\n 'meta': ɵ2,\n 'shift': ɵ3\n};\n/**\n * \\@experimental\n */\nexport class KeyEventsPlugin extends EventManagerPlugin {\n /**\n * @param {?} doc\n */\n constructor(doc) { super(doc); }\n /**\n * @param {?} eventName\n * @return {?}\n */\n supports(eventName) { return KeyEventsPlugin.parseEventName(eventName) != null; }\n /**\n * @param {?} element\n * @param {?} eventName\n * @param {?} handler\n * @return {?}\n */\n addEventListener(element, eventName, handler) {\n const /** @type {?} */ parsedEvent = /** @type {?} */ ((KeyEventsPlugin.parseEventName(eventName)));\n const /** @type {?} */ 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 * @param {?} eventName\n * @return {?}\n */\n static parseEventName(eventName) {\n const /** @type {?} */ parts = eventName.toLowerCase().split('.');\n const /** @type {?} */ domEventName = parts.shift();\n if ((parts.length === 0) || !(domEventName === 'keydown' || domEventName === 'keyup')) {\n return null;\n }\n const /** @type {?} */ key = KeyEventsPlugin._normalizeKey(/** @type {?} */ ((parts.pop())));\n let /** @type {?} */ fullKey = '';\n MODIFIER_KEYS.forEach(modifierName => {\n const /** @type {?} */ 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 const /** @type {?} */ result = {};\n result['domEventName'] = domEventName;\n result['fullKey'] = fullKey;\n return result;\n }\n /**\n * @param {?} event\n * @return {?}\n */\n static getEventFullKey(event) {\n let /** @type {?} */ fullKey = '';\n let /** @type {?} */ key = getDOM().getEventKey(event);\n key = key.toLowerCase();\n if (key === ' ') {\n key = 'space'; // for readability\n }\n else if (key === '.') {\n key = 'dot'; // because '.' is used as a separator in event names\n }\n MODIFIER_KEYS.forEach(modifierName => {\n if (modifierName != key) {\n const /** @type {?} */ modifierGetter = MODIFIER_KEY_GETTERS[modifierName];\n if (modifierGetter(event)) {\n fullKey += modifierName + '.';\n }\n }\n });\n fullKey += key;\n return fullKey;\n }\n /**\n * @param {?} fullKey\n * @param {?} handler\n * @param {?} zone\n * @return {?}\n */\n static eventCallback(fullKey, handler, zone) {\n return (event /** TODO #9100 */) => {\n if (KeyEventsPlugin.getEventFullKey(event) === fullKey) {\n zone.runGuarded(() => handler(event));\n }\n };\n }\n /**\n * \\@internal\n * @param {?} keyName\n * @return {?}\n */\n static _normalizeKey(keyName) {\n // TODO: switch to a Map if the mapping grows too much\n switch (keyName) {\n case 'esc':\n return 'escape';\n default:\n return keyName;\n }\n }\n}\nKeyEventsPlugin.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nKeyEventsPlugin.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] },] },\n];\nfunction KeyEventsPlugin_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n KeyEventsPlugin.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n KeyEventsPlugin.ctorParameters;\n}\nexport { ɵ0, ɵ1, ɵ2, ɵ3 };\n//# sourceMappingURL=key_events.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * This helper class is used to get hold of an inert tree of DOM elements containing dirty HTML\n * that needs sanitizing.\n * Depending upon browser support we must use one of three strategies for doing this.\n * Support: Safari 10.x -> XHR strategy\n * Support: Firefox -> DomParser strategy\n * Default: InertDocument strategy\n */\nexport class InertBodyHelper {\n /**\n * @param {?} defaultDoc\n * @param {?} DOM\n */\n constructor(defaultDoc, DOM) {\n this.defaultDoc = defaultDoc;\n this.DOM = DOM;\n const /** @type {?} */ inertDocument = this.DOM.createHtmlDocument();\n this.inertBodyElement = inertDocument.body;\n if (this.inertBodyElement == null) {\n // usually there should be only one body element in the document, but IE doesn't have any, so\n // we need to create one.\n const /** @type {?} */ inertHtml = this.DOM.createElement('html', inertDocument);\n this.inertBodyElement = this.DOM.createElement('body', inertDocument);\n this.DOM.appendChild(inertHtml, this.inertBodyElement);\n this.DOM.appendChild(inertDocument, inertHtml);\n }\n this.DOM.setInnerHTML(this.inertBodyElement, '<svg><g onload=\"this.parentNode.remove()\"></g></svg>');\n if (this.inertBodyElement.querySelector && !this.inertBodyElement.querySelector('svg')) {\n // We just hit the Safari 10.1 bug - which allows JS to run inside the SVG G element\n // so use the XHR strategy.\n this.getInertBodyElement = this.getInertBodyElement_XHR;\n return;\n }\n this.DOM.setInnerHTML(this.inertBodyElement, '<svg><p><style><img src=\"</style><img src=x onerror=alert(1)//\">');\n if (this.inertBodyElement.querySelector && this.inertBodyElement.querySelector('svg img')) {\n // We just hit the Firefox bug - which prevents the inner img JS from being sanitized\n // so use the DOMParser strategy, if it is available.\n // If the DOMParser is not available then we are not in Firefox (Server/WebWorker?) so we\n // fall through to the default strategy below.\n if (isDOMParserAvailable()) {\n this.getInertBodyElement = this.getInertBodyElement_DOMParser;\n return;\n }\n }\n // None of the bugs were hit so it is safe for us to use the default InertDocument strategy\n this.getInertBodyElement = this.getInertBodyElement_InertDocument;\n }\n /**\n * Use XHR to create and fill an inert body element (on Safari 10.1)\n * See\n * https://github.com/cure53/DOMPurify/blob/a992d3a75031cb8bb032e5ea8399ba972bdf9a65/src/purify.js#L439-L449\n * @param {?} html\n * @return {?}\n */\n getInertBodyElement_XHR(html) {\n // We add these extra elements to ensure that the rest of the content is parsed as expected\n // e.g. leading whitespace is maintained and tags like `<meta>` do not get hoisted to the\n // `<head>` tag.\n html = '<body><remove></remove>' + html + '</body>';\n try {\n html = encodeURI(html);\n }\n catch (/** @type {?} */ e) {\n return null;\n }\n const /** @type {?} */ xhr = new XMLHttpRequest();\n xhr.responseType = 'document';\n xhr.open('GET', 'data:text/html;charset=utf-8,' + html, false);\n xhr.send(null);\n const /** @type {?} */ body = xhr.response.body;\n body.removeChild(/** @type {?} */ ((body.firstChild)));\n return body;\n }\n /**\n * Use DOMParser to create and fill an inert body element (on Firefox)\n * See https://github.com/cure53/DOMPurify/releases/tag/0.6.7\n *\n * @param {?} html\n * @return {?}\n */\n getInertBodyElement_DOMParser(html) {\n // We add these extra elements to ensure that the rest of the content is parsed as expected\n // e.g. leading whitespace is maintained and tags like `<meta>` do not get hoisted to the\n // `<head>` tag.\n html = '<body><remove></remove>' + html + '</body>';\n try {\n const /** @type {?} */ body = /** @type {?} */ (new (/** @type {?} */ (window))\n .DOMParser()\n .parseFromString(html, 'text/html')\n .body);\n body.removeChild(/** @type {?} */ ((body.firstChild)));\n return body;\n }\n catch (/** @type {?} */ e) {\n return null;\n }\n }\n /**\n * Use an HTML5 `template` element, if supported, or an inert body element created via\n * `createHtmlDocument` to create and fill an inert DOM element.\n * This is the default sane strategy to use if the browser does not require one of the specialised\n * strategies above.\n * @param {?} html\n * @return {?}\n */\n getInertBodyElement_InertDocument(html) {\n // Prefer using <template> element if supported.\n const /** @type {?} */ templateEl = this.DOM.createElement('template');\n if ('content' in templateEl) {\n this.DOM.setInnerHTML(templateEl, html);\n return templateEl;\n }\n this.DOM.setInnerHTML(this.inertBodyElement, html);\n // Support: IE 9-11 only\n // strip custom-namespaced attributes on IE<=11\n if (this.defaultDoc.documentMode) {\n this.stripCustomNsAttrs(this.inertBodyElement);\n }\n return this.inertBodyElement;\n }\n /**\n * When IE9-11 comes across an unknown namespaced attribute e.g. 'xlink:foo' it adds 'xmlns:ns1'\n * attribute to declare ns1 namespace and prefixes the attribute with 'ns1' (e.g.\n * 'ns1:xlink:foo').\n *\n * This is undesirable since we don't want to allow any of these custom attributes. This method\n * strips them all.\n * @param {?} el\n * @return {?}\n */\n stripCustomNsAttrs(el) {\n this.DOM.attributeMap(el).forEach((_, attrName) => {\n if (attrName === 'xmlns:ns1' || attrName.indexOf('ns1:') === 0) {\n this.DOM.removeAttribute(el, attrName);\n }\n });\n for (const /** @type {?} */ n of this.DOM.childNodesAsList(el)) {\n if (this.DOM.isElementNode(n))\n this.stripCustomNsAttrs(/** @type {?} */ (n));\n }\n }\n}\nfunction InertBodyHelper_tsickle_Closure_declarations() {\n /** @type {?} */\n InertBodyHelper.prototype.inertBodyElement;\n /**\n * Get an inert DOM element containing DOM created from the dirty HTML string provided.\n * The implementation of this is determined in the constructor, when the class is instantiated.\n * @type {?}\n */\n InertBodyHelper.prototype.getInertBodyElement;\n /** @type {?} */\n InertBodyHelper.prototype.defaultDoc;\n /** @type {?} */\n InertBodyHelper.prototype.DOM;\n}\n/**\n * We need to determine whether the DOMParser exists in the global context.\n * The try-catch is because, on some browsers, trying to access this property\n * on window can actually throw an error.\n *\n * @suppress {uselessCode}\n * @return {?}\n */\nfunction isDOMParserAvailable() {\n try {\n return !!(/** @type {?} */ (window)).DOMParser;\n }\n catch (/** @type {?} */ e) {\n return false;\n }\n}\n//# sourceMappingURL=inert_body.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { isDevMode } from '@angular/core';\nimport { getDOM } from '../dom/dom_adapter';\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * This regular expression matches a subset of URLs that will not cause script\n * execution if used in URL context within a HTML document. Specifically, this\n * regular expression matches if (comment from here on and regex copied from\n * Soy's EscapingConventions):\n * (1) Either a protocol in a whitelist (http, https, mailto or ftp).\n * (2) or no protocol. A protocol must be followed by a colon. The below\n * allows that by allowing colons only after one of the characters [/?#].\n * A colon after a hash (#) must be in the fragment.\n * Otherwise, a colon after a (?) must be in a query.\n * Otherwise, a colon after a single solidus (/) must be in a path.\n * Otherwise, a colon after a double solidus (//) must be in the authority\n * (before port).\n *\n * The pattern disallows &, used in HTML entity declarations before\n * one of the characters in [/?#]. This disallows HTML entities used in the\n * protocol name, which should never happen, e.g. \"http\" for \"http\".\n * It also disallows HTML entities in the first path part of a relative path,\n * e.g. \"foo<bar/baz\". Our existing escaping functions should not produce\n * that. More importantly, it disallows masking of a colon,\n * e.g. \"javascript:...\".\n *\n * This regular expression was taken from the Closure sanitization library.\n */\nconst /** @type {?} */ SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi;\n/* A pattern that matches safe srcset values */\nconst /** @type {?} */ SAFE_SRCSET_PATTERN = /^(?:(?:https?|file):|[^&:/?#]*(?:[/?#]|$))/gi;\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n */\nconst /** @type {?} */ DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+\\/]+=*$/i;\n/**\n * @param {?} url\n * @return {?}\n */\nexport function sanitizeUrl(url) {\n url = String(url);\n if (url.match(SAFE_URL_PATTERN) || url.match(DATA_URL_PATTERN))\n return url;\n if (isDevMode()) {\n getDOM().log(`WARNING: sanitizing unsafe URL value ${url} (see http://g.co/ng/security#xss)`);\n }\n return 'unsafe:' + url;\n}\n/**\n * @param {?} srcset\n * @return {?}\n */\nexport function sanitizeSrcset(srcset) {\n srcset = String(srcset);\n return srcset.split(',').map((srcset) => sanitizeUrl(srcset.trim())).join(', ');\n}\n//# sourceMappingURL=url_sanitizer.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { isDevMode } from '@angular/core';\nimport { getDOM } from '../dom/dom_adapter';\nimport { InertBodyHelper } from './inert_body';\nimport { sanitizeSrcset, sanitizeUrl } from './url_sanitizer';\n/**\n * @param {?} tags\n * @return {?}\n */\nfunction tagSet(tags) {\n const /** @type {?} */ res = {};\n for (const /** @type {?} */ t of tags.split(','))\n res[t] = true;\n return res;\n}\n/**\n * @param {...?} sets\n * @return {?}\n */\nfunction merge(...sets) {\n const /** @type {?} */ res = {};\n for (const /** @type {?} */ s of sets) {\n for (const /** @type {?} */ v in s) {\n if (s.hasOwnProperty(v))\n res[v] = true;\n }\n }\n return res;\n}\n// Good source of info about elements and attributes\n// http://dev.w3.org/html5/spec/Overview.html#semantics\n// http://simon.html5.org/html-elements\n// Safe Void Elements - HTML5\n// http://dev.w3.org/html5/spec/Overview.html#void-elements\nconst /** @type {?} */ VOID_ELEMENTS = tagSet('area,br,col,hr,img,wbr');\n// Elements that you can, intentionally, leave open (and which close themselves)\n// http://dev.w3.org/html5/spec/Overview.html#optional-tags\nconst /** @type {?} */ OPTIONAL_END_TAG_BLOCK_ELEMENTS = tagSet('colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr');\nconst /** @type {?} */ OPTIONAL_END_TAG_INLINE_ELEMENTS = tagSet('rp,rt');\nconst /** @type {?} */ OPTIONAL_END_TAG_ELEMENTS = merge(OPTIONAL_END_TAG_INLINE_ELEMENTS, OPTIONAL_END_TAG_BLOCK_ELEMENTS);\n// Safe Block Elements - HTML5\nconst /** @type {?} */ BLOCK_ELEMENTS = merge(OPTIONAL_END_TAG_BLOCK_ELEMENTS, tagSet('address,article,' +\n 'aside,blockquote,caption,center,del,details,dialog,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,' +\n 'h6,header,hgroup,hr,ins,main,map,menu,nav,ol,pre,section,summary,table,ul'));\n// Inline Elements - HTML5\nconst /** @type {?} */ INLINE_ELEMENTS = merge(OPTIONAL_END_TAG_INLINE_ELEMENTS, tagSet('a,abbr,acronym,audio,b,' +\n 'bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,picture,q,ruby,rp,rt,s,' +\n 'samp,small,source,span,strike,strong,sub,sup,time,track,tt,u,var,video'));\nconst /** @type {?} */ VALID_ELEMENTS = merge(VOID_ELEMENTS, BLOCK_ELEMENTS, INLINE_ELEMENTS, OPTIONAL_END_TAG_ELEMENTS);\n// Attributes that have href and hence need to be sanitized\nconst /** @type {?} */ URI_ATTRS = tagSet('background,cite,href,itemtype,longdesc,poster,src,xlink:href');\n// Attributes that have special href set hence need to be sanitized\nconst /** @type {?} */ SRCSET_ATTRS = tagSet('srcset');\nconst /** @type {?} */ HTML_ATTRS = tagSet('abbr,accesskey,align,alt,autoplay,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,' +\n 'compact,controls,coords,datetime,default,dir,download,face,headers,height,hidden,hreflang,hspace,' +\n 'ismap,itemscope,itemprop,kind,label,lang,language,loop,media,muted,nohref,nowrap,open,preload,rel,rev,role,rows,rowspan,rules,' +\n 'scope,scrolling,shape,size,sizes,span,srclang,start,summary,tabindex,target,title,translate,type,usemap,' +\n 'valign,value,vspace,width');\n// NB: This currently consciously doesn't support SVG. SVG sanitization has had several security\n// issues in the past, so it seems safer to leave it out if possible. If support for binding SVG via\n// innerHTML is required, SVG attributes should be added here.\n// NB: Sanitization does not allow <form> elements or other active elements (<button> etc). Those\n// can be sanitized, but they increase security surface area without a legitimate use case, so they\n// are left out here.\nconst /** @type {?} */ VALID_ATTRS = merge(URI_ATTRS, SRCSET_ATTRS, HTML_ATTRS);\n/**\n * SanitizingHtmlSerializer serializes a DOM fragment, stripping out any unsafe elements and unsafe\n * attributes.\n */\nclass SanitizingHtmlSerializer {\n constructor() {\n this.sanitizedSomething = false;\n this.buf = [];\n this.DOM = getDOM();\n }\n /**\n * @param {?} el\n * @return {?}\n */\n sanitizeChildren(el) {\n // This cannot use a TreeWalker, as it has to run on Angular's various DOM adapters.\n // However this code never accesses properties off of `document` before deleting its contents\n // again, so it shouldn't be vulnerable to DOM clobbering.\n let /** @type {?} */ current = /** @type {?} */ ((this.DOM.firstChild(el)));\n while (current) {\n if (this.DOM.isElementNode(current)) {\n this.startElement(/** @type {?} */ (current));\n }\n else if (this.DOM.isTextNode(current)) {\n this.chars(/** @type {?} */ ((this.DOM.nodeValue(current))));\n }\n else {\n // Strip non-element, non-text nodes.\n this.sanitizedSomething = true;\n }\n if (this.DOM.firstChild(current)) {\n current = /** @type {?} */ ((this.DOM.firstChild(current)));\n continue;\n }\n while (current) {\n // Leaving the element. Walk up and to the right, closing tags as we go.\n if (this.DOM.isElementNode(current)) {\n this.endElement(/** @type {?} */ (current));\n }\n let /** @type {?} */ next = this.checkClobberedElement(current, /** @type {?} */ ((this.DOM.nextSibling(current))));\n if (next) {\n current = next;\n break;\n }\n current = this.checkClobberedElement(current, /** @type {?} */ ((this.DOM.parentElement(current))));\n }\n }\n return this.buf.join('');\n }\n /**\n * @param {?} element\n * @return {?}\n */\n startElement(element) {\n const /** @type {?} */ tagName = this.DOM.nodeName(element).toLowerCase();\n if (!VALID_ELEMENTS.hasOwnProperty(tagName)) {\n this.sanitizedSomething = true;\n return;\n }\n this.buf.push('<');\n this.buf.push(tagName);\n this.DOM.attributeMap(element).forEach((value, attrName) => {\n const /** @type {?} */ lower = attrName.toLowerCase();\n if (!VALID_ATTRS.hasOwnProperty(lower)) {\n this.sanitizedSomething = true;\n return;\n }\n // TODO(martinprobst): Special case image URIs for data:image/...\n if (URI_ATTRS[lower])\n value = sanitizeUrl(value);\n if (SRCSET_ATTRS[lower])\n value = sanitizeSrcset(value);\n this.buf.push(' ');\n this.buf.push(attrName);\n this.buf.push('=\"');\n this.buf.push(encodeEntities(value));\n this.buf.push('\"');\n });\n this.buf.push('>');\n }\n /**\n * @param {?} current\n * @return {?}\n */\n endElement(current) {\n const /** @type {?} */ tagName = this.DOM.nodeName(current).toLowerCase();\n if (VALID_ELEMENTS.hasOwnProperty(tagName) && !VOID_ELEMENTS.hasOwnProperty(tagName)) {\n this.buf.push('</');\n this.buf.push(tagName);\n this.buf.push('>');\n }\n }\n /**\n * @param {?} chars\n * @return {?}\n */\n chars(chars) { this.buf.push(encodeEntities(chars)); }\n /**\n * @param {?} node\n * @param {?} nextNode\n * @return {?}\n */\n checkClobberedElement(node, nextNode) {\n if (nextNode && this.DOM.contains(node, nextNode)) {\n throw new Error(`Failed to sanitize html because the element is clobbered: ${this.DOM.getOuterHTML(node)}`);\n }\n return nextNode;\n }\n}\nfunction SanitizingHtmlSerializer_tsickle_Closure_declarations() {\n /** @type {?} */\n SanitizingHtmlSerializer.prototype.sanitizedSomething;\n /** @type {?} */\n SanitizingHtmlSerializer.prototype.buf;\n /** @type {?} */\n SanitizingHtmlSerializer.prototype.DOM;\n}\n// Regular Expressions for parsing tags and attributes\nconst /** @type {?} */ SURROGATE_PAIR_REGEXP = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n// ! to ~ is the ASCII range.\nconst /** @type {?} */ NON_ALPHANUMERIC_REGEXP = /([^\\#-~ |!])/g;\n/**\n * Escapes all potentially dangerous characters, so that the\n * resulting string can be safely inserted into attribute or\n * element text.\n * @param {?} value\n * @return {?}\n */\nfunction encodeEntities(value) {\n return value.replace(/&/g, '&')\n .replace(SURROGATE_PAIR_REGEXP, function (match) {\n const /** @type {?} */ hi = match.charCodeAt(0);\n const /** @type {?} */ low = match.charCodeAt(1);\n return '&#' + (((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000) + ';';\n })\n .replace(NON_ALPHANUMERIC_REGEXP, function (match) { return '&#' + match.charCodeAt(0) + ';'; })\n .replace(/</g, '<')\n .replace(/>/g, '>');\n}\nlet /** @type {?} */ inertBodyHelper;\n/**\n * Sanitizes the given unsafe, untrusted HTML fragment, and returns HTML text that is safe to add to\n * the DOM in a browser environment.\n * @param {?} defaultDoc\n * @param {?} unsafeHtmlInput\n * @return {?}\n */\nexport function sanitizeHtml(defaultDoc, unsafeHtmlInput) {\n const /** @type {?} */ DOM = getDOM();\n let /** @type {?} */ inertBodyElement = null;\n try {\n inertBodyHelper = inertBodyHelper || new InertBodyHelper(defaultDoc, DOM);\n // Make sure unsafeHtml is actually a string (TypeScript types are not enforced at runtime).\n let /** @type {?} */ unsafeHtml = unsafeHtmlInput ? String(unsafeHtmlInput) : '';\n inertBodyElement = inertBodyHelper.getInertBodyElement(unsafeHtml);\n // mXSS protection. Repeatedly parse the document to make sure it stabilizes, so that a browser\n // trying to auto-correct incorrect HTML cannot cause formerly inert HTML to become dangerous.\n let /** @type {?} */ mXSSAttempts = 5;\n let /** @type {?} */ parsedHtml = unsafeHtml;\n do {\n if (mXSSAttempts === 0) {\n throw new Error('Failed to sanitize html because the input is unstable');\n }\n mXSSAttempts--;\n unsafeHtml = parsedHtml;\n parsedHtml = DOM.getInnerHTML(inertBodyElement);\n inertBodyElement = inertBodyHelper.getInertBodyElement(unsafeHtml);\n } while (unsafeHtml !== parsedHtml);\n const /** @type {?} */ sanitizer = new SanitizingHtmlSerializer();\n const /** @type {?} */ safeHtml = sanitizer.sanitizeChildren(DOM.getTemplateContent(inertBodyElement) || inertBodyElement);\n if (isDevMode() && sanitizer.sanitizedSomething) {\n DOM.log('WARNING: sanitizing HTML stripped some content (see http://g.co/ng/security#xss).');\n }\n return safeHtml;\n }\n finally {\n // In case anything goes wrong, clear out inertElement to reset the entire DOM structure.\n if (inertBodyElement) {\n const /** @type {?} */ parent = DOM.getTemplateContent(inertBodyElement) || inertBodyElement;\n for (const /** @type {?} */ child of DOM.childNodesAsList(parent)) {\n DOM.removeChild(parent, child);\n }\n }\n }\n}\n//# sourceMappingURL=html_sanitizer.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { isDevMode } from '@angular/core';\nimport { getDOM } from '../dom/dom_adapter';\nimport { sanitizeUrl } from './url_sanitizer';\n/**\n * Regular expression for safe style values.\n *\n * Quotes (\" and ') are allowed, but a check must be done elsewhere to ensure they're balanced.\n *\n * ',' allows multiple values to be assigned to the same property (e.g. background-attachment or\n * font-family) and hence could allow multiple values to get injected, but that should pose no risk\n * of XSS.\n *\n * The function expression checks only for XSS safety, not for CSS validity.\n *\n * This regular expression was taken from the Closure sanitization library, and augmented for\n * transformation values.\n */\nconst /** @type {?} */ VALUES = '[-,.\"\\'%_!# a-zA-Z0-9]+';\nconst /** @type {?} */ TRANSFORMATION_FNS = '(?:matrix|translate|scale|rotate|skew|perspective)(?:X|Y|3d)?';\nconst /** @type {?} */ COLOR_FNS = '(?:rgb|hsl)a?';\nconst /** @type {?} */ GRADIENTS = '(?:repeating-)?(?:linear|radial)-gradient';\nconst /** @type {?} */ CSS3_FNS = '(?:calc|attr)';\nconst /** @type {?} */ FN_ARGS = '\\\\([-0-9.%, #a-zA-Z]+\\\\)';\nconst /** @type {?} */ SAFE_STYLE_VALUE = new RegExp(`^(${VALUES}|` +\n `(?:${TRANSFORMATION_FNS}|${COLOR_FNS}|${GRADIENTS}|${CSS3_FNS})` +\n `${FN_ARGS})$`, 'g');\n/**\n * Matches a `url(...)` value with an arbitrary argument as long as it does\n * not contain parentheses.\n *\n * The URL value still needs to be sanitized separately.\n *\n * `url(...)` values are a very common use case, e.g. for `background-image`. With carefully crafted\n * CSS style rules, it is possible to construct an information leak with `url` values in CSS, e.g.\n * by observing whether scroll bars are displayed, or character ranges used by a font face\n * definition.\n *\n * Angular only allows binding CSS values (as opposed to entire CSS rules), so it is unlikely that\n * binding a URL value without further cooperation from the page will cause an information leak, and\n * if so, it is just a leak, not a full blown XSS vulnerability.\n *\n * Given the common use case, low likelihood of attack vector, and low impact of an attack, this\n * code is permissive and allows URLs that sanitize otherwise.\n */\nconst /** @type {?} */ URL_RE = /^url\\(([^)]+)\\)$/;\n/**\n * Checks that quotes (\" and ') are properly balanced inside a string. Assumes\n * that neither escape (\\) nor any other character that could result in\n * breaking out of a string parsing context are allowed;\n * see http://www.w3.org/TR/css3-syntax/#string-token-diagram.\n *\n * This code was taken from the Closure sanitization library.\n * @param {?} value\n * @return {?}\n */\nfunction hasBalancedQuotes(value) {\n let /** @type {?} */ outsideSingle = true;\n let /** @type {?} */ outsideDouble = true;\n for (let /** @type {?} */ i = 0; i < value.length; i++) {\n const /** @type {?} */ c = value.charAt(i);\n if (c === '\\'' && outsideDouble) {\n outsideSingle = !outsideSingle;\n }\n else if (c === '\"' && outsideSingle) {\n outsideDouble = !outsideDouble;\n }\n }\n return outsideSingle && outsideDouble;\n}\n/**\n * Sanitizes the given untrusted CSS style property value (i.e. not an entire object, just a single\n * value) and returns a value that is safe to use in a browser environment.\n * @param {?} value\n * @return {?}\n */\nexport function sanitizeStyle(value) {\n value = String(value).trim(); // Make sure it's actually a string.\n if (!value)\n return '';\n // Single url(...) values are supported, but only for URLs that sanitize cleanly. See above for\n // reasoning behind this.\n const /** @type {?} */ urlMatch = value.match(URL_RE);\n if ((urlMatch && sanitizeUrl(urlMatch[1]) === urlMatch[1]) ||\n value.match(SAFE_STYLE_VALUE) && hasBalancedQuotes(value)) {\n return value; // Safe style values.\n }\n if (isDevMode()) {\n getDOM().log(`WARNING: sanitizing unsafe style value ${value} (see http://g.co/ng/security#xss).`);\n }\n return 'unsafe';\n}\n//# sourceMappingURL=style_sanitizer.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Inject, Injectable, SecurityContext } from '@angular/core';\nimport { DOCUMENT } from '../dom/dom_tokens';\nimport { sanitizeHtml } from './html_sanitizer';\nimport { sanitizeStyle } from './style_sanitizer';\nimport { sanitizeUrl } from './url_sanitizer';\nexport { SecurityContext };\n/**\n * Marker interface for a value that's safe to use in a particular context.\n *\n * \\@stable\n * @record\n */\nexport function SafeValue() { }\nfunction SafeValue_tsickle_Closure_declarations() {\n}\n/**\n * Marker interface for a value that's safe to use as HTML.\n *\n * \\@stable\n * @record\n */\nexport function SafeHtml() { }\nfunction SafeHtml_tsickle_Closure_declarations() {\n}\n/**\n * Marker interface for a value that's safe to use as style (CSS).\n *\n * \\@stable\n * @record\n */\nexport function SafeStyle() { }\nfunction SafeStyle_tsickle_Closure_declarations() {\n}\n/**\n * Marker interface for a value that's safe to use as JavaScript.\n *\n * \\@stable\n * @record\n */\nexport function SafeScript() { }\nfunction SafeScript_tsickle_Closure_declarations() {\n}\n/**\n * Marker interface for a value that's safe to use as a URL linking to a document.\n *\n * \\@stable\n * @record\n */\nexport function SafeUrl() { }\nfunction SafeUrl_tsickle_Closure_declarations() {\n}\n/**\n * Marker interface for a value that's safe to use as a URL to load executable code from.\n *\n * \\@stable\n * @record\n */\nexport function SafeResourceUrl() { }\nfunction SafeResourceUrl_tsickle_Closure_declarations() {\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](http://g.co/ng/security).\n *\n * \\@stable\n * @abstract\n */\nexport class DomSanitizer {\n}\nfunction DomSanitizer_tsickle_Closure_declarations() {\n /**\n * Sanitizes a value for use in the given SecurityContext.\n *\n * If value is trusted for the context, this method will unwrap the contained safe value and use\n * it directly. Otherwise, value will be sanitized to be safe in the given context, for example\n * by replacing URLs that have an unsafe protocol part (such as `javascript:`). The implementation\n * is responsible to make sure that the value can definitely be safely used in the given context.\n * @abstract\n * @param {?} context\n * @param {?} value\n * @return {?}\n */\n DomSanitizer.prototype.sanitize = function (context, value) { };\n /**\n * Bypass security and trust the given value to be safe HTML. Only use this when the bound HTML\n * is unsafe (e.g. contains `<script>` tags) and the code should be executed. The sanitizer will\n * leave safe HTML intact, so in most situations this method should not be used.\n *\n * **WARNING:** calling this method with untrusted user data exposes your application to XSS\n * security risks!\n * @abstract\n * @param {?} value\n * @return {?}\n */\n DomSanitizer.prototype.bypassSecurityTrustHtml = function (value) { };\n /**\n * Bypass security and trust the given value to be safe style value (CSS).\n *\n * **WARNING:** calling this method with untrusted user data exposes your application to XSS\n * security risks!\n * @abstract\n * @param {?} value\n * @return {?}\n */\n DomSanitizer.prototype.bypassSecurityTrustStyle = function (value) { };\n /**\n * Bypass security and trust the given value to be safe JavaScript.\n *\n * **WARNING:** calling this method with untrusted user data exposes your application to XSS\n * security risks!\n * @abstract\n * @param {?} value\n * @return {?}\n */\n DomSanitizer.prototype.bypassSecurityTrustScript = function (value) { };\n /**\n * Bypass security and trust the given value to be a safe style URL, i.e. a value that can be used\n * in hyperlinks or `<img src>`.\n *\n * **WARNING:** calling this method with untrusted user data exposes your application to XSS\n * security risks!\n * @abstract\n * @param {?} value\n * @return {?}\n */\n DomSanitizer.prototype.bypassSecurityTrustUrl = function (value) { };\n /**\n * Bypass security and trust the given value to be a safe resource URL, i.e. a location that may\n * be used to load executable code from, like `<script src>`, or `<iframe src>`.\n *\n * **WARNING:** calling this method with untrusted user data exposes your application to XSS\n * security risks!\n * @abstract\n * @param {?} value\n * @return {?}\n */\n DomSanitizer.prototype.bypassSecurityTrustResourceUrl = function (value) { };\n}\nexport class DomSanitizerImpl extends DomSanitizer {\n /**\n * @param {?} _doc\n */\n constructor(_doc) {\n super();\n this._doc = _doc;\n }\n /**\n * @param {?} ctx\n * @param {?} value\n * @return {?}\n */\n sanitize(ctx, value) {\n if (value == null)\n return null;\n switch (ctx) {\n case SecurityContext.NONE:\n return /** @type {?} */ (value);\n case SecurityContext.HTML:\n if (value instanceof SafeHtmlImpl)\n return value.changingThisBreaksApplicationSecurity;\n this.checkNotSafeValue(value, 'HTML');\n return sanitizeHtml(this._doc, String(value));\n case SecurityContext.STYLE:\n if (value instanceof SafeStyleImpl)\n return value.changingThisBreaksApplicationSecurity;\n this.checkNotSafeValue(value, 'Style');\n return sanitizeStyle(/** @type {?} */ (value));\n case SecurityContext.SCRIPT:\n if (value instanceof SafeScriptImpl)\n return value.changingThisBreaksApplicationSecurity;\n this.checkNotSafeValue(value, 'Script');\n throw new Error('unsafe value used in a script context');\n case SecurityContext.URL:\n if (value instanceof SafeResourceUrlImpl || value instanceof SafeUrlImpl) {\n // Allow resource URLs in URL contexts, they are strictly more trusted.\n return value.changingThisBreaksApplicationSecurity;\n }\n this.checkNotSafeValue(value, 'URL');\n return sanitizeUrl(String(value));\n case SecurityContext.RESOURCE_URL:\n if (value instanceof SafeResourceUrlImpl) {\n return value.changingThisBreaksApplicationSecurity;\n }\n this.checkNotSafeValue(value, 'ResourceURL');\n throw new Error('unsafe value used in a resource URL context (see http://g.co/ng/security#xss)');\n default:\n throw new Error(`Unexpected SecurityContext ${ctx} (see http://g.co/ng/security#xss)`);\n }\n }\n /**\n * @param {?} value\n * @param {?} expectedType\n * @return {?}\n */\n checkNotSafeValue(value, expectedType) {\n if (value instanceof SafeValueImpl) {\n throw new Error(`Required a safe ${expectedType}, got a ${value.getTypeName()} ` +\n `(see http://g.co/ng/security#xss)`);\n }\n }\n /**\n * @param {?} value\n * @return {?}\n */\n bypassSecurityTrustHtml(value) { return new SafeHtmlImpl(value); }\n /**\n * @param {?} value\n * @return {?}\n */\n bypassSecurityTrustStyle(value) { return new SafeStyleImpl(value); }\n /**\n * @param {?} value\n * @return {?}\n */\n bypassSecurityTrustScript(value) { return new SafeScriptImpl(value); }\n /**\n * @param {?} value\n * @return {?}\n */\n bypassSecurityTrustUrl(value) { return new SafeUrlImpl(value); }\n /**\n * @param {?} value\n * @return {?}\n */\n bypassSecurityTrustResourceUrl(value) {\n return new SafeResourceUrlImpl(value);\n }\n}\nDomSanitizerImpl.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nDomSanitizerImpl.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] },] },\n];\nfunction DomSanitizerImpl_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n DomSanitizerImpl.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n DomSanitizerImpl.ctorParameters;\n /** @type {?} */\n DomSanitizerImpl.prototype._doc;\n}\n/**\n * @abstract\n */\nclass SafeValueImpl {\n /**\n * @param {?} changingThisBreaksApplicationSecurity\n */\n constructor(changingThisBreaksApplicationSecurity) {\n // empty\n this.changingThisBreaksApplicationSecurity = changingThisBreaksApplicationSecurity;\n }\n /**\n * @return {?}\n */\n toString() {\n return `SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity}` +\n ` (see http://g.co/ng/security#xss)`;\n }\n}\nfunction SafeValueImpl_tsickle_Closure_declarations() {\n /** @type {?} */\n SafeValueImpl.prototype.changingThisBreaksApplicationSecurity;\n /**\n * @abstract\n * @return {?}\n */\n SafeValueImpl.prototype.getTypeName = function () { };\n}\nclass SafeHtmlImpl extends SafeValueImpl {\n /**\n * @return {?}\n */\n getTypeName() { return 'HTML'; }\n}\nclass SafeStyleImpl extends SafeValueImpl {\n /**\n * @return {?}\n */\n getTypeName() { return 'Style'; }\n}\nclass SafeScriptImpl extends SafeValueImpl {\n /**\n * @return {?}\n */\n getTypeName() { return 'Script'; }\n}\nclass SafeUrlImpl extends SafeValueImpl {\n /**\n * @return {?}\n */\n getTypeName() { return 'URL'; }\n}\nclass SafeResourceUrlImpl extends SafeValueImpl {\n /**\n * @return {?}\n */\n getTypeName() { return 'ResourceURL'; }\n}\n//# sourceMappingURL=dom_sanitization_service.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { CommonModule, PlatformLocation, ɵPLATFORM_BROWSER_ID as PLATFORM_BROWSER_ID } from '@angular/common';\nimport { APP_ID, ApplicationModule, ErrorHandler, NgModule, Optional, PLATFORM_ID, PLATFORM_INITIALIZER, RendererFactory2, Sanitizer, SkipSelf, Testability, createPlatformFactory, platformCore } from '@angular/core';\nimport { BrowserDomAdapter } from './browser/browser_adapter';\nimport { BrowserPlatformLocation } from './browser/location/browser_platform_location';\nimport { Meta } from './browser/meta';\nimport { SERVER_TRANSITION_PROVIDERS, TRANSITION_ID } from './browser/server-transition';\nimport { BrowserGetTestability } from './browser/testability';\nimport { Title } from './browser/title';\nimport { ELEMENT_PROBE_PROVIDERS } from './dom/debug/ng_probe';\nimport { DomRendererFactory2 } from './dom/dom_renderer';\nimport { DOCUMENT } from './dom/dom_tokens';\nimport { DomEventsPlugin } from './dom/events/dom_events';\nimport { EVENT_MANAGER_PLUGINS, EventManager } from './dom/events/event_manager';\nimport { HAMMER_GESTURE_CONFIG, HammerGestureConfig, HammerGesturesPlugin } from './dom/events/hammer_gestures';\nimport { KeyEventsPlugin } from './dom/events/key_events';\nimport { DomSharedStylesHost, SharedStylesHost } from './dom/shared_styles_host';\nimport { DomSanitizer, DomSanitizerImpl } from './security/dom_sanitization_service';\nexport const /** @type {?} */ INTERNAL_BROWSER_PLATFORM_PROVIDERS = [\n { provide: PLATFORM_ID, useValue: PLATFORM_BROWSER_ID },\n { provide: PLATFORM_INITIALIZER, useValue: initDomAdapter, multi: true },\n { provide: PlatformLocation, useClass: BrowserPlatformLocation, deps: [DOCUMENT] },\n { provide: DOCUMENT, useFactory: _document, deps: [] },\n];\n/**\n * \\@security Replacing built-in sanitization providers exposes the application to XSS risks.\n * Attacker-controlled data introduced by an unsanitized provider could expose your\n * application to XSS risks. For more detail, see the [Security Guide](http://g.co/ng/security).\n * \\@experimental\n */\nexport const /** @type {?} */ BROWSER_SANITIZATION_PROVIDERS = [\n { provide: Sanitizer, useExisting: DomSanitizer },\n { provide: DomSanitizer, useClass: DomSanitizerImpl, deps: [DOCUMENT] },\n];\n/**\n * \\@stable\n */\nexport const /** @type {?} */ platformBrowser = createPlatformFactory(platformCore, 'browser', INTERNAL_BROWSER_PLATFORM_PROVIDERS);\n/**\n * @return {?}\n */\nexport function initDomAdapter() {\n BrowserDomAdapter.makeCurrent();\n BrowserGetTestability.init();\n}\n/**\n * @return {?}\n */\nexport function errorHandler() {\n return new ErrorHandler();\n}\n/**\n * @return {?}\n */\nexport function _document() {\n return document;\n}\n/**\n * The ng module for the browser.\n *\n * \\@stable\n */\nexport class BrowserModule {\n /**\n * @param {?} parentModule\n */\n constructor(parentModule) {\n if (parentModule) {\n throw new Error(`BrowserModule has already been loaded. If you need access to common directives such as NgIf and NgFor from a lazy loaded module, import CommonModule instead.`);\n }\n }\n /**\n * Configures a browser-based application to transition from a server-rendered app, if\n * one is present on the page. The specified parameters must include an application id,\n * which must match between the client and server applications.\n *\n * \\@experimental\n * @param {?} params\n * @return {?}\n */\n static withServerTransition(params) {\n return {\n ngModule: BrowserModule,\n providers: [\n { provide: APP_ID, useValue: params.appId },\n { provide: TRANSITION_ID, useExisting: APP_ID },\n SERVER_TRANSITION_PROVIDERS,\n ],\n };\n }\n}\nBrowserModule.decorators = [\n { type: NgModule, args: [{\n providers: [\n BROWSER_SANITIZATION_PROVIDERS,\n { provide: ErrorHandler, useFactory: errorHandler, deps: [] },\n { provide: EVENT_MANAGER_PLUGINS, useClass: DomEventsPlugin, multi: true },\n { provide: EVENT_MANAGER_PLUGINS, useClass: KeyEventsPlugin, multi: true },\n { provide: EVENT_MANAGER_PLUGINS, useClass: HammerGesturesPlugin, multi: true },\n { provide: HAMMER_GESTURE_CONFIG, useClass: HammerGestureConfig },\n DomRendererFactory2,\n { provide: RendererFactory2, useExisting: DomRendererFactory2 },\n { provide: SharedStylesHost, useExisting: DomSharedStylesHost },\n DomSharedStylesHost,\n Testability,\n EventManager,\n ELEMENT_PROBE_PROVIDERS,\n Meta,\n Title,\n ],\n exports: [CommonModule, ApplicationModule]\n },] },\n];\n/** @nocollapse */\nBrowserModule.ctorParameters = () => [\n { type: BrowserModule, decorators: [{ type: Optional }, { type: SkipSelf },] },\n];\nfunction BrowserModule_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n BrowserModule.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n BrowserModule.ctorParameters;\n}\n//# sourceMappingURL=browser.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst /** @type {?} */ win = typeof window !== 'undefined' && window || /** @type {?} */ ({});\nexport { win as window };\n//# sourceMappingURL=browser.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ApplicationRef } from '@angular/core';\nimport { getDOM } from '../../dom/dom_adapter';\nimport { window } from './browser';\nexport class ChangeDetectionPerfRecord {\n /**\n * @param {?} msPerTick\n * @param {?} numTicks\n */\n constructor(msPerTick, numTicks) {\n this.msPerTick = msPerTick;\n this.numTicks = numTicks;\n }\n}\nfunction ChangeDetectionPerfRecord_tsickle_Closure_declarations() {\n /** @type {?} */\n ChangeDetectionPerfRecord.prototype.msPerTick;\n /** @type {?} */\n ChangeDetectionPerfRecord.prototype.numTicks;\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 */\nexport class AngularProfiler {\n /**\n * @param {?} ref\n */\n constructor(ref) { this.appRef = ref.injector.get(ApplicationRef); }\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 * @param {?} config\n * @return {?}\n */\n timeChangeDetection(config) {\n const /** @type {?} */ record = config && config['record'];\n const /** @type {?} */ profileName = 'Change Detection';\n // Profiler is not available in Android browsers, nor in IE 9 without dev tools opened\n const /** @type {?} */ isProfilerAvailable = window.console.profile != null;\n if (record && isProfilerAvailable) {\n window.console.profile(profileName);\n }\n const /** @type {?} */ start = getDOM().performanceNow();\n let /** @type {?} */ numTicks = 0;\n while (numTicks < 5 || (getDOM().performanceNow() - start) < 500) {\n this.appRef.tick();\n numTicks++;\n }\n const /** @type {?} */ end = getDOM().performanceNow();\n if (record && isProfilerAvailable) {\n // need to cast to <any> because type checker thinks there's no argument\n // while in fact there is:\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/Console/profileEnd\n (/** @type {?} */ (window.console.profileEnd))(profileName);\n }\n const /** @type {?} */ msPerTick = (end - start) / numTicks;\n window.console.log(`ran ${numTicks} change detection cycles`);\n window.console.log(`${msPerTick.toFixed(2)} ms per check`);\n return new ChangeDetectionPerfRecord(msPerTick, numTicks);\n }\n}\nfunction AngularProfiler_tsickle_Closure_declarations() {\n /** @type {?} */\n AngularProfiler.prototype.appRef;\n}\n//# sourceMappingURL=common_tools.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { exportNgVar } from '../../dom/util';\nimport { AngularProfiler } from './common_tools';\nconst /** @type {?} */ 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 * \\@experimental All debugging apis are currently experimental.\n * @template T\n * @param {?} ref\n * @return {?}\n */\nexport function enableDebugTools(ref) {\n exportNgVar(PROFILER_GLOBAL_NAME, new AngularProfiler(ref));\n return ref;\n}\n/**\n * Disables Angular tools.\n *\n * \\@experimental All debugging apis are currently experimental.\n * @return {?}\n */\nexport function disableDebugTools() {\n exportNgVar(PROFILER_GLOBAL_NAME, null);\n}\n//# sourceMappingURL=tools.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { APP_ID, Injectable, NgModule } from '@angular/core';\nimport { DOCUMENT } from '../dom/dom_tokens';\n/**\n * @param {?} text\n * @return {?}\n */\nexport function escapeHtml(text) {\n const /** @type {?} */ escapedText = {\n '&': '&a;',\n '\"': '&q;',\n '\\'': '&s;',\n '<': '&l;',\n '>': '&g;',\n };\n return text.replace(/[&\"'<>]/g, s => escapedText[s]);\n}\n/**\n * @param {?} text\n * @return {?}\n */\nexport function unescapeHtml(text) {\n const /** @type {?} */ unescapedText = {\n '&a;': '&',\n '&q;': '\"',\n '&s;': '\\'',\n '&l;': '<',\n '&g;': '>',\n };\n return text.replace(/&[^;]+;/g, s => unescapedText[s]);\n}\n/**\n * Create a `StateKey<T>` that can be used to store value of type T with `TransferState`.\n *\n * Example:\n *\n * ```\n * const COUNTER_KEY = makeStateKey<number>('counter');\n * let value = 10;\n *\n * transferState.set(COUNTER_KEY, value);\n * ```\n *\n * \\@experimental\n * @template T\n * @param {?} key\n * @return {?}\n */\nexport function makeStateKey(key) {\n return /** @type {?} */ (key);\n}\n/**\n * A key value store that is transferred from the application on the server side to the application\n * on the client side.\n *\n * `TransferState` will be available as an injectable token. To use it import\n * `ServerTransferStateModule` on the server and `BrowserTransferStateModule` on the client.\n *\n * The values in the store are serialized/deserialized using JSON.stringify/JSON.parse. So only\n * boolean, number, string, null and non-class objects will be serialized and deserialzied in a\n * non-lossy manner.\n *\n * \\@experimental\n */\nexport class TransferState {\n constructor() {\n this.store = {};\n this.onSerializeCallbacks = {};\n }\n /**\n * \\@internal\n * @param {?} initState\n * @return {?}\n */\n static init(initState) {\n const /** @type {?} */ transferState = new TransferState();\n transferState.store = initState;\n return transferState;\n }\n /**\n * Get the value corresponding to a key. Return `defaultValue` if key is not found.\n * @template T\n * @param {?} key\n * @param {?} defaultValue\n * @return {?}\n */\n get(key, defaultValue) {\n return this.store[key] !== undefined ? /** @type {?} */ (this.store[key]) : defaultValue;\n }\n /**\n * Set the value corresponding to a key.\n * @template T\n * @param {?} key\n * @param {?} value\n * @return {?}\n */\n set(key, value) { this.store[key] = value; }\n /**\n * Remove a key from the store.\n * @template T\n * @param {?} key\n * @return {?}\n */\n remove(key) { delete this.store[key]; }\n /**\n * Test whether a key exists in the store.\n * @template T\n * @param {?} key\n * @return {?}\n */\n hasKey(key) { return this.store.hasOwnProperty(key); }\n /**\n * Register a callback to provide the value for a key when `toJson` is called.\n * @template T\n * @param {?} key\n * @param {?} callback\n * @return {?}\n */\n onSerialize(key, callback) {\n this.onSerializeCallbacks[key] = callback;\n }\n /**\n * Serialize the current state of the store to JSON.\n * @return {?}\n */\n toJson() {\n // Call the onSerialize callbacks and put those values into the store.\n for (const /** @type {?} */ key in this.onSerializeCallbacks) {\n if (this.onSerializeCallbacks.hasOwnProperty(key)) {\n try {\n this.store[key] = this.onSerializeCallbacks[key]();\n }\n catch (/** @type {?} */ e) {\n console.warn('Exception in onSerialize callback: ', e);\n }\n }\n }\n return JSON.stringify(this.store);\n }\n}\nTransferState.decorators = [\n { type: Injectable },\n];\n/** @nocollapse */\nTransferState.ctorParameters = () => [];\nfunction TransferState_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n TransferState.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n TransferState.ctorParameters;\n /** @type {?} */\n TransferState.prototype.store;\n /** @type {?} */\n TransferState.prototype.onSerializeCallbacks;\n}\n/**\n * @param {?} doc\n * @param {?} appId\n * @return {?}\n */\nexport function initTransferState(doc, appId) {\n // Locate the script tag with the JSON data transferred from the server.\n // The id of the script tag is set to the Angular appId + 'state'.\n const /** @type {?} */ script = doc.getElementById(appId + '-state');\n let /** @type {?} */ initialState = {};\n if (script && script.textContent) {\n try {\n initialState = JSON.parse(unescapeHtml(script.textContent));\n }\n catch (/** @type {?} */ e) {\n console.warn('Exception while restoring TransferState for app ' + appId, e);\n }\n }\n return TransferState.init(initialState);\n}\n/**\n * NgModule to install on the client side while using the `TransferState` to transfer state from\n * server to client.\n *\n * \\@experimental\n */\nexport class BrowserTransferStateModule {\n}\nBrowserTransferStateModule.decorators = [\n { type: NgModule, args: [{\n providers: [{ provide: TransferState, useFactory: initTransferState, deps: [DOCUMENT, APP_ID] }],\n },] },\n];\n/** @nocollapse */\nBrowserTransferStateModule.ctorParameters = () => [];\nfunction BrowserTransferStateModule_tsickle_Closure_declarations() {\n /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */\n BrowserTransferStateModule.decorators;\n /**\n * @nocollapse\n * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}\n */\n BrowserTransferStateModule.ctorParameters;\n}\n//# sourceMappingURL=transfer_state.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { getDOM } from '../../dom/dom_adapter';\n/**\n * Predicates for use with {\\@link DebugElement}'s query functions.\n *\n * \\@experimental All debugging apis are currently experimental.\n */\nexport class By {\n /**\n * Match all elements.\n *\n * ## Example\n *\n * {\\@example platform-browser/dom/debug/ts/by/by.ts region='by_all'}\n * @return {?}\n */\n static all() { return (debugElement) => true; }\n /**\n * Match elements by the given CSS selector.\n *\n * ## Example\n *\n * {\\@example platform-browser/dom/debug/ts/by/by.ts region='by_css'}\n * @param {?} selector\n * @return {?}\n */\n static css(selector) {\n return (debugElement) => {\n return debugElement.nativeElement != null ?\n getDOM().elementMatches(debugElement.nativeElement, selector) :\n false;\n };\n }\n /**\n * Match elements that have the given directive present.\n *\n * ## Example\n *\n * {\\@example platform-browser/dom/debug/ts/by/by.ts region='by_directive'}\n * @param {?} type\n * @return {?}\n */\n static directive(type) {\n return (debugElement) => /** @type {?} */ ((debugElement.providerTokens)).indexOf(type) !== -1;\n }\n}\n//# sourceMappingURL=by.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nexport { BROWSER_SANITIZATION_PROVIDERS as ɵBROWSER_SANITIZATION_PROVIDERS, INTERNAL_BROWSER_PLATFORM_PROVIDERS as ɵINTERNAL_BROWSER_PLATFORM_PROVIDERS, initDomAdapter as ɵinitDomAdapter } from './browser';\nexport { BrowserDomAdapter as ɵBrowserDomAdapter } from './browser/browser_adapter';\nexport { BrowserPlatformLocation as ɵBrowserPlatformLocation } from './browser/location/browser_platform_location';\nexport { TRANSITION_ID as ɵTRANSITION_ID } from './browser/server-transition';\nexport { BrowserGetTestability as ɵBrowserGetTestability } from './browser/testability';\nexport { escapeHtml as ɵescapeHtml } from './browser/transfer_state';\nexport { ELEMENT_PROBE_PROVIDERS as ɵELEMENT_PROBE_PROVIDERS } from './dom/debug/ng_probe';\nexport { DomAdapter as ɵDomAdapter, getDOM as ɵgetDOM, setRootDomAdapter as ɵsetRootDomAdapter } from './dom/dom_adapter';\nexport { DomRendererFactory2 as ɵDomRendererFactory2, NAMESPACE_URIS as ɵNAMESPACE_URIS, flattenStyles as ɵflattenStyles, shimContentAttribute as ɵshimContentAttribute, shimHostAttribute as ɵshimHostAttribute } from './dom/dom_renderer';\nexport { DomEventsPlugin as ɵDomEventsPlugin } from './dom/events/dom_events';\nexport { HammerGesturesPlugin as ɵHammerGesturesPlugin } from './dom/events/hammer_gestures';\nexport { KeyEventsPlugin as ɵKeyEventsPlugin } from './dom/events/key_events';\nexport { DomSharedStylesHost as ɵDomSharedStylesHost, SharedStylesHost as ɵSharedStylesHost } from './dom/shared_styles_host';\n//# sourceMappingURL=private_export.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Version } from '@angular/core';\n/**\n * \\@stable\n */\nexport const /** @type {?} */ VERSION = new Version('5.2.11');\n//# sourceMappingURL=version.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nexport { BrowserModule, platformBrowser } from './browser';\nexport { Meta } from './browser/meta';\nexport { Title } from './browser/title';\nexport { disableDebugTools, enableDebugTools } from './browser/tools/tools';\nexport { BrowserTransferStateModule, TransferState, makeStateKey } from './browser/transfer_state';\nexport { By } from './dom/debug/by';\nexport { DOCUMENT } from './dom/dom_tokens';\nexport { EVENT_MANAGER_PLUGINS, EventManager } from './dom/events/event_manager';\nexport { HAMMER_GESTURE_CONFIG, HammerGestureConfig } from './dom/events/hammer_gestures';\nexport { DomSanitizer } from './security/dom_sanitization_service';\nexport { ɵBROWSER_SANITIZATION_PROVIDERS, ɵINTERNAL_BROWSER_PLATFORM_PROVIDERS, ɵinitDomAdapter, ɵBrowserDomAdapter, ɵBrowserPlatformLocation, ɵTRANSITION_ID, ɵBrowserGetTestability, ɵescapeHtml, ɵELEMENT_PROBE_PROVIDERS, ɵDomAdapter, ɵgetDOM, ɵsetRootDomAdapter, ɵDomRendererFactory2, ɵNAMESPACE_URIS, ɵflattenStyles, ɵshimContentAttribute, ɵshimHostAttribute, ɵDomEventsPlugin, ɵHammerGesturesPlugin, ɵKeyEventsPlugin, ɵDomSharedStylesHost, ɵSharedStylesHost } from './private_export';\nexport { VERSION } from './version';\n//# sourceMappingURL=platform-browser.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\nexport { BrowserModule, platformBrowser, Meta, Title, disableDebugTools, enableDebugTools, BrowserTransferStateModule, TransferState, makeStateKey, By, DOCUMENT, EVENT_MANAGER_PLUGINS, EventManager, HAMMER_GESTURE_CONFIG, HammerGestureConfig, DomSanitizer, VERSION, ɵBROWSER_SANITIZATION_PROVIDERS, ɵINTERNAL_BROWSER_PLATFORM_PROVIDERS, ɵinitDomAdapter, ɵBrowserDomAdapter, ɵBrowserPlatformLocation, ɵTRANSITION_ID, ɵBrowserGetTestability, ɵescapeHtml, ɵELEMENT_PROBE_PROVIDERS, ɵDomAdapter, ɵgetDOM, ɵsetRootDomAdapter, ɵDomRendererFactory2, ɵNAMESPACE_URIS, ɵflattenStyles, ɵshimContentAttribute, ɵshimHostAttribute, ɵDomEventsPlugin, ɵHammerGesturesPlugin, ɵKeyEventsPlugin, ɵDomSharedStylesHost, ɵSharedStylesHost } from './src/platform-browser';\n// This file only reexports content of the `src` folder. Keep it that way.\n//# sourceMappingURL=public_api.js.map","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n/**\n * Generated bundle index. Do not edit.\n */\nexport { BrowserModule, platformBrowser, Meta, Title, disableDebugTools, enableDebugTools, BrowserTransferStateModule, TransferState, makeStateKey, By, DOCUMENT, EVENT_MANAGER_PLUGINS, EventManager, HAMMER_GESTURE_CONFIG, HammerGestureConfig, DomSanitizer, VERSION, ɵBROWSER_SANITIZATION_PROVIDERS, ɵINTERNAL_BROWSER_PLATFORM_PROVIDERS, ɵinitDomAdapter, ɵBrowserDomAdapter, ɵBrowserPlatformLocation, ɵTRANSITION_ID, ɵBrowserGetTestability, ɵescapeHtml, ɵELEMENT_PROBE_PROVIDERS, ɵDomAdapter, ɵgetDOM, ɵsetRootDomAdapter, ɵDomRendererFactory2, ɵNAMESPACE_URIS, ɵflattenStyles, ɵshimContentAttribute, ɵshimHostAttribute, ɵDomEventsPlugin, ɵHammerGesturesPlugin, ɵKeyEventsPlugin, ɵDomSharedStylesHost, ɵSharedStylesHost } from './public_api';\nexport { _document as ɵb, errorHandler as ɵa } from './src/browser';\nexport { GenericBrowserDomAdapter as ɵi } from './src/browser/generic_browser_adapter';\nexport { SERVER_TRANSITION_PROVIDERS as ɵg, appInitializerFactory as ɵf } from './src/browser/server-transition';\nexport { initTransferState as ɵc } from './src/browser/transfer_state';\nexport { _createNgProbe as ɵh } from './src/dom/debug/ng_probe';\nexport { EventManagerPlugin as ɵd } from './src/dom/events/event_manager';\nexport { DomSanitizerImpl as ɵe } from './src/security/dom_sanitization_service';\n//# sourceMappingURL=platform-browser.js.map"],"names":["global","parseCookieValue","DOCUMENT","commonDOCUMENT","core.ApplicationRef","core.NgZone","core.getDebugNode","core.APP_INITIALIZER","core.NgProbeToken","core.Optional","ɵ0","ɵ1","ɵ2","PLATFORM_BROWSER_ID","window"],"mappings":"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"}
|