@angular/platform-server 4.4.3 → 4.4.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"platform-server.umd.js","sources":["../../../../packages/platform-server/src/private_export.ts","../../../../packages/platform-server/src/utils.ts","../../../../packages/platform-server/src/server.ts","../../../../packages/platform-server/src/styles_host.ts","../../../../packages/platform-server/src/server_renderer.ts","../../../../packages/platform-server/src/parse5_adapter.ts","../../../../packages/platform-server/src/location.ts","../../../../packages/platform-server/src/tokens.ts","../../../../packages/platform-server/src/http.ts","../../../../packages/platform-server/src/platform_state.ts","../../../../node_modules/tslib/tslib.es6.js"],"sourcesContent":["/**\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\nexport {INTERNAL_SERVER_PLATFORM_PROVIDERS as ɵINTERNAL_SERVER_PLATFORM_PROVIDERS, SERVER_RENDER_PROVIDERS as ɵSERVER_RENDER_PROVIDERS} from './server';\nexport {ServerRendererFactory2 as ɵServerRendererFactory2} from './server_renderer';","/**\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\nimport {ApplicationRef, NgModuleFactory, NgModuleRef, PlatformRef, Provider, Type} from '@angular/core';\nimport {ɵTRANSITION_ID} from '@angular/platform-browser';\nimport {filter} from 'rxjs/operator/filter';\nimport {first} from 'rxjs/operator/first';\nimport {toPromise} from 'rxjs/operator/toPromise';\n\nimport {PlatformState} from './platform_state';\nimport {platformDynamicServer, platformServer} from './server';\nimport {INITIAL_CONFIG} from './tokens';\n\nconst /** @type {?} */ parse5 = require('parse5');\n\ninterface PlatformOptions {\n document?: string;\n url?: string;\n extraProviders?: Provider[];\n}\n/**\n * @param {?} platformFactory\n * @param {?} options\n * @return {?}\n */\nfunction _getPlatform(\n platformFactory: (extraProviders: Provider[]) => PlatformRef,\n options: PlatformOptions): PlatformRef {\n const /** @type {?} */ extraProviders = options.extraProviders ? options.extraProviders : [];\n return platformFactory([\n {provide: INITIAL_CONFIG, useValue: {document: options.document, url: options.url}},\n extraProviders\n ]);\n}\n/**\n * @template T\n * @param {?} platform\n * @param {?} moduleRefPromise\n * @return {?}\n */\nfunction _render<T>(\n platform: PlatformRef, moduleRefPromise: Promise<NgModuleRef<T>>): Promise<string> {\n return moduleRefPromise.then((moduleRef) => {\n const /** @type {?} */ transitionId = moduleRef.injector.get(ɵTRANSITION_ID, null);\n if (!transitionId) {\n throw new Error(\n `renderModule[Factory]() requires the use of BrowserModule.withServerTransition() to ensure\nthe server-rendered app can be properly bootstrapped into a client app.`);\n }\n const /** @type {?} */ applicationRef: ApplicationRef = moduleRef.injector.get(ApplicationRef);\n return toPromise\n .call(first.call(filter.call(applicationRef.isStable, (isStable: boolean) => isStable)))\n .then(() => {\n const /** @type {?} */ output = platform.injector.get(PlatformState).renderToString();\n platform.destroy();\n return output;\n });\n });\n}\n/**\n * Renders a Module to string.\n * \n * `document` is the full document HTML of the page to render, as a string.\n * `url` is the URL for the current render request.\n * `extraProviders` are the platform level providers for the current render request.\n * \n * Do not use this in a production server environment. Use pre-compiled {\\@link NgModuleFactory} with\n * {\\@link renderModuleFactory} instead.\n * \n * \\@experimental\n * @template T\n * @param {?} module\n * @param {?} options\n * @return {?}\n */\nexport function renderModule<T>(\n module: Type<T>,\n options: {document?: string, url?: string, extraProviders?: Provider[]}): Promise<string> {\n const /** @type {?} */ platform = _getPlatform(platformDynamicServer, options);\n return _render(platform, platform.bootstrapModule(module));\n}\n/**\n * Renders a {\\@link NgModuleFactory} to string.\n * \n * `document` is the full document HTML of the page to render, as a string.\n * `url` is the URL for the current render request.\n * `extraProviders` are the platform level providers for the current render request.\n * \n * \\@experimental\n * @template T\n * @param {?} moduleFactory\n * @param {?} options\n * @return {?}\n */\nexport function renderModuleFactory<T>(\n moduleFactory: NgModuleFactory<T>,\n options: {document?: string, url?: string, extraProviders?: Provider[]}): Promise<string> {\n const /** @type {?} */ platform = _getPlatform(platformServer, options);\n return _render(platform, platform.bootstrapModuleFactory(moduleFactory));\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\nimport {ɵAnimationEngine} from '@angular/animations/browser';\nimport {PlatformLocation, ɵPLATFORM_SERVER_ID as PLATFORM_SERVER_ID} from '@angular/common';\nimport {HttpClientModule} from '@angular/common/http';\nimport {platformCoreDynamic} from '@angular/compiler';\nimport {Injectable, InjectionToken, Injector, NgModule, NgZone, PLATFORM_ID, PLATFORM_INITIALIZER, PlatformRef, Provider, RendererFactory2, RootRenderer, Testability, createPlatformFactory, isDevMode, platformCore, ɵALLOW_MULTIPLE_PLATFORMS as ALLOW_MULTIPLE_PLATFORMS} from '@angular/core';\nimport {HttpModule} from '@angular/http';\nimport {BrowserModule, DOCUMENT, ɵSharedStylesHost as SharedStylesHost, ɵgetDOM as getDOM} from '@angular/platform-browser';\nimport {NoopAnimationsModule, ɵAnimationRendererFactory} from '@angular/platform-browser/animations';\n\nimport {SERVER_HTTP_PROVIDERS} from './http';\nimport {ServerPlatformLocation} from './location';\nimport {Parse5DomAdapter, parseDocument} from './parse5_adapter';\nimport {PlatformState} from './platform_state';\nimport {ServerRendererFactory2} from './server_renderer';\nimport {ServerStylesHost} from './styles_host';\nimport {INITIAL_CONFIG, PlatformConfig} from './tokens';\n/**\n * @param {?} feature\n * @return {?}\n */\nfunction notSupported(feature: string): Error {\n throw new Error(`platform-server does not support '${feature}'.`);\n}\n\nexport const /** @type {?} */ INTERNAL_SERVER_PLATFORM_PROVIDERS: Array<any /*Type | Provider | any[]*/> = [\n {provide: DOCUMENT, useFactory: _document, deps: [Injector]},\n {provide: PLATFORM_ID, useValue: PLATFORM_SERVER_ID},\n {provide: PLATFORM_INITIALIZER, useFactory: initParse5Adapter, multi: true, deps: [Injector]},\n {provide: PlatformLocation, useClass: ServerPlatformLocation}, PlatformState,\n // Add special provider that allows multiple instances of platformServer* to be created.\n {provide: ALLOW_MULTIPLE_PLATFORMS, useValue: true}\n];\n/**\n * @param {?} injector\n * @return {?}\n */\nfunction initParse5Adapter(injector: Injector) {\n return () => { Parse5DomAdapter.makeCurrent(); };\n}\n/**\n * @param {?} renderer\n * @param {?} engine\n * @param {?} zone\n * @return {?}\n */\nexport function instantiateServerRendererFactory(\n renderer: RendererFactory2, engine: ɵAnimationEngine, zone: NgZone) {\n return new ɵAnimationRendererFactory(renderer, engine, zone);\n}\n\nexport const /** @type {?} */ SERVER_RENDER_PROVIDERS: Provider[] = [\n ServerRendererFactory2,\n {\n provide: RendererFactory2,\n useFactory: instantiateServerRendererFactory,\n deps: [ServerRendererFactory2, ɵAnimationEngine, NgZone]\n },\n ServerStylesHost,\n {provide: SharedStylesHost, useExisting: ServerStylesHost},\n];\n/**\n * The ng module for the server.\n * \n * \\@experimental\n */\nexport class ServerModule {\nstatic decorators: DecoratorInvocation[] = [\n{ type: NgModule, args: [{\n exports: [BrowserModule],\n imports: [HttpModule, HttpClientModule, NoopAnimationsModule],\n providers: [\n SERVER_RENDER_PROVIDERS,\n SERVER_HTTP_PROVIDERS,\n {provide: Testability, useValue: null},\n ],\n}, ] },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n];\n}\n\nfunction ServerModule_tsickle_Closure_declarations() {\n/** @type {?} */\nServerModule.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nServerModule.ctorParameters;\n}\n\n/**\n * @param {?} injector\n * @return {?}\n */\nfunction _document(injector: Injector) {\n let /** @type {?} */ config: PlatformConfig|null = injector.get(INITIAL_CONFIG, null);\n if (config && config.document) {\n return parseDocument(config.document);\n } else {\n return getDOM().createHtmlDocument();\n }\n}\n/**\n * \\@experimental\n */\nexport const platformServer =\n createPlatformFactory(platformCore, 'server', INTERNAL_SERVER_PLATFORM_PROVIDERS);\n/**\n * The server platform that supports the runtime compiler.\n * \n * \\@experimental\n */\nexport const platformDynamicServer =\n createPlatformFactory(platformCoreDynamic, 'serverDynamic', INTERNAL_SERVER_PLATFORM_PROVIDERS);\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\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\nimport {ApplicationRef, Inject, Injectable, Optional} from '@angular/core';\nimport {DOCUMENT, ɵSharedStylesHost as SharedStylesHost, ɵTRANSITION_ID, ɵgetDOM as getDOM} from '@angular/platform-browser';\n\nimport {Parse5DomAdapter} from './parse5_adapter';\nexport class ServerStylesHost extends SharedStylesHost {\nprivate head: any = null;\n/**\n * @param {?} doc\n * @param {?} transitionId\n */\nconstructor(\nprivate doc: any,\nprivate transitionId: string) {\n super();\n this.head = getDOM().getElementsByTagName(doc, 'head')[0];\n }\n/**\n * @param {?} style\n * @return {?}\n */\nprivate _addStyle(style: string): void {\n let /** @type {?} */ adapter: Parse5DomAdapter = /** @type {?} */(( getDOM() as Parse5DomAdapter));\n const /** @type {?} */ el = adapter.createElement('style');\n adapter.setText(el, style);\n if (!!this.transitionId) {\n adapter.setAttribute(el, 'ng-transition', this.transitionId);\n }\n adapter.appendChild(this.head, el);\n }\n/**\n * @param {?} additions\n * @return {?}\n */\nonStylesAdded(additions: Set<string>) { additions.forEach(style => this._addStyle(style)); }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: undefined, decorators: [{ type: Inject, args: [DOCUMENT, ] }, ]},\n{type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [ɵTRANSITION_ID, ] }, ]},\n];\n}\n\nfunction ServerStylesHost_tsickle_Closure_declarations() {\n/** @type {?} */\nServerStylesHost.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nServerStylesHost.ctorParameters;\n/** @type {?} */\nServerStylesHost.prototype.head;\n/** @type {?} */\nServerStylesHost.prototype.doc;\n/** @type {?} */\nServerStylesHost.prototype.transitionId;\n}\n\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\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\nimport {DomElementSchemaRegistry} from '@angular/compiler';\nimport {APP_ID, Inject, Injectable, NgZone, RenderComponentType, Renderer, Renderer2, RendererFactory2, RendererStyleFlags2, RendererType2, RootRenderer, ViewEncapsulation, ɵstringify as stringify} from '@angular/core';\nimport {DOCUMENT, ɵNAMESPACE_URIS as NAMESPACE_URIS, ɵSharedStylesHost as SharedStylesHost, ɵflattenStyles as flattenStyles, ɵgetDOM as getDOM, ɵshimContentAttribute as shimContentAttribute, ɵshimHostAttribute as shimHostAttribute} from '@angular/platform-browser';\n\nconst /** @type {?} */ EMPTY_ARRAY: any[] = [];\nexport class ServerRendererFactory2 implements RendererFactory2 {\nprivate rendererByCompId = new Map<string, Renderer2>();\nprivate defaultRenderer: Renderer2;\nprivate schema = new DomElementSchemaRegistry();\n/**\n * @param {?} ngZone\n * @param {?} document\n * @param {?} sharedStylesHost\n */\nconstructor(\nprivate ngZone: NgZone,\nprivate document: any,\nprivate sharedStylesHost: SharedStylesHost) {\n this.defaultRenderer = new DefaultServerRenderer2(document, ngZone, this.schema);\n };\n/**\n * @param {?} element\n * @param {?} type\n * @return {?}\n */\ncreateRenderer(element: any, type: RendererType2|null): Renderer2 {\n if (!element || !type) {\n return this.defaultRenderer;\n }\n switch (type.encapsulation) {\n case ViewEncapsulation.Native:\n case ViewEncapsulation.Emulated: {\n let /** @type {?} */ renderer = this.rendererByCompId.get(type.id);\n if (!renderer) {\n renderer = new EmulatedEncapsulationServerRenderer2(\n this.document, this.ngZone, this.sharedStylesHost, this.schema, type);\n this.rendererByCompId.set(type.id, renderer);\n }\n ( /** @type {?} */((<EmulatedEncapsulationServerRenderer2>renderer))).applyToHost(element);\n return renderer;\n }\n case ViewEncapsulation.Native:\n throw new Error('Native encapsulation is not supported on the server!');\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 */\nbegin() {}\n/**\n * @return {?}\n */\nend() {}\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: NgZone, },\n{type: undefined, decorators: [{ type: Inject, args: [DOCUMENT, ] }, ]},\n{type: SharedStylesHost, },\n];\n}\n\nfunction ServerRendererFactory2_tsickle_Closure_declarations() {\n/** @type {?} */\nServerRendererFactory2.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nServerRendererFactory2.ctorParameters;\n/** @type {?} */\nServerRendererFactory2.prototype.rendererByCompId;\n/** @type {?} */\nServerRendererFactory2.prototype.defaultRenderer;\n/** @type {?} */\nServerRendererFactory2.prototype.schema;\n/** @type {?} */\nServerRendererFactory2.prototype.ngZone;\n/** @type {?} */\nServerRendererFactory2.prototype.document;\n/** @type {?} */\nServerRendererFactory2.prototype.sharedStylesHost;\n}\n\nclass DefaultServerRenderer2 implements Renderer2 {\n data: {[key: string]: any} = Object.create(null);\n/**\n * @param {?} document\n * @param {?} ngZone\n * @param {?} schema\n */\nconstructor(\nprivate document: any,\nprivate ngZone: NgZone,\nprivate schema: DomElementSchemaRegistry) {}\n/**\n * @return {?}\n */\ndestroy(): void {}\n\n destroyNode: null;\n/**\n * @param {?} name\n * @param {?=} namespace\n * @param {?=} debugInfo\n * @return {?}\n */\ncreateElement(name: string, namespace?: string, debugInfo?: any): any {\n if (namespace) {\n return getDOM().createElementNS(NAMESPACE_URIS[namespace], name);\n }\n\n return getDOM().createElement(name);\n }\n/**\n * @param {?} value\n * @param {?=} debugInfo\n * @return {?}\n */\ncreateComment(value: string, debugInfo?: any): any { return getDOM().createComment(value); }\n/**\n * @param {?} value\n * @param {?=} debugInfo\n * @return {?}\n */\ncreateText(value: string, debugInfo?: any): any { return getDOM().createTextNode(value); }\n/**\n * @param {?} parent\n * @param {?} newChild\n * @return {?}\n */\nappendChild(parent: any, newChild: any): void { getDOM().appendChild(parent, newChild); }\n/**\n * @param {?} parent\n * @param {?} newChild\n * @param {?} refChild\n * @return {?}\n */\ninsertBefore(parent: any, newChild: any, refChild: any): void {\n if (parent) {\n getDOM().insertBefore(parent, refChild, newChild);\n }\n }\n/**\n * @param {?} parent\n * @param {?} oldChild\n * @return {?}\n */\nremoveChild(parent: any, oldChild: any): void {\n if (parent) {\n getDOM().removeChild(parent, oldChild);\n }\n }\n/**\n * @param {?} selectorOrNode\n * @param {?=} debugInfo\n * @return {?}\n */\nselectRootElement(selectorOrNode: string|any, debugInfo?: any): any {\n let /** @type {?} */ el: any;\n if (typeof selectorOrNode === 'string') {\n el = getDOM().querySelector(this.document, selectorOrNode);\n if (!el) {\n throw new Error(`The selector \"${selectorOrNode}\" did not match any elements`);\n }\n } else {\n el = selectorOrNode;\n }\n getDOM().clearNodes(el);\n return el;\n }\n/**\n * @param {?} node\n * @return {?}\n */\nparentNode(node: any): any { return getDOM().parentElement(node); }\n/**\n * @param {?} node\n * @return {?}\n */\nnextSibling(node: any): any { return getDOM().nextSibling(node); }\n/**\n * @param {?} el\n * @param {?} name\n * @param {?} value\n * @param {?=} namespace\n * @return {?}\n */\nsetAttribute(el: any, name: string, value: string, namespace?: string): void {\n if (namespace) {\n getDOM().setAttributeNS(el, NAMESPACE_URIS[namespace], namespace + ':' + name, value);\n } else {\n getDOM().setAttribute(el, name, value);\n }\n }\n/**\n * @param {?} el\n * @param {?} name\n * @param {?=} namespace\n * @return {?}\n */\nremoveAttribute(el: any, name: string, namespace?: string): void {\n if (namespace) {\n getDOM().removeAttributeNS(el, NAMESPACE_URIS[namespace], name);\n } else {\n getDOM().removeAttribute(el, name);\n }\n }\n/**\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\naddClass(el: any, name: string): void { getDOM().addClass(el, name); }\n/**\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\nremoveClass(el: any, name: string): void { getDOM().removeClass(el, name); }\n/**\n * @param {?} el\n * @param {?} style\n * @param {?} value\n * @param {?} flags\n * @return {?}\n */\nsetStyle(el: any, style: string, value: any, flags: RendererStyleFlags2): void {\n getDOM().setStyle(el, style, value);\n }\n/**\n * @param {?} el\n * @param {?} style\n * @param {?} flags\n * @return {?}\n */\nremoveStyle(el: any, style: string, flags: RendererStyleFlags2): void {\n getDOM().removeStyle(el, style);\n }\n/**\n * @param {?} tagName\n * @param {?} propertyName\n * @return {?}\n */\nprivate _isSafeToReflectProperty(tagName: string, propertyName: string): boolean {\n return this.schema.securityContext(tagName, propertyName, true) ===\n this.schema.securityContext(tagName, propertyName, false);\n }\n/**\n * @param {?} el\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\nsetProperty(el: any, name: string, value: any): void {\n checkNoSyntheticProp(name, 'property');\n getDOM().setProperty(el, name, value);\n // Mirror property values for known HTML element properties in the attributes.\n const /** @type {?} */ tagName = ( /** @type {?} */((el.tagName as string))).toLowerCase();\n if (value != null && (typeof value === 'number' || typeof value == 'string') &&\n this.schema.hasElement(tagName, EMPTY_ARRAY) &&\n this.schema.hasProperty(tagName, name, EMPTY_ARRAY) &&\n this._isSafeToReflectProperty(tagName, name)) {\n this.setAttribute(el, name, value.toString());\n }\n }\n/**\n * @param {?} node\n * @param {?} value\n * @return {?}\n */\nsetValue(node: any, value: string): void { getDOM().setText(node, value); }\n/**\n * @param {?} target\n * @param {?} eventName\n * @param {?} callback\n * @return {?}\n */\nlisten(\n target: 'document'|'window'|'body'|any, eventName: string,\n callback: (event: any) => boolean): () => void {\n // Note: We are not using the EventsPlugin here as this is not needed\n // to run our tests.\n checkNoSyntheticProp(eventName, 'listener');\n const /** @type {?} */ el =\n typeof target === 'string' ? getDOM().getGlobalEventTarget(this.document, target) : target;\n const /** @type {?} */ outsideHandler = (event: any) => this.ngZone.runGuarded(() => callback(event));\n return this.ngZone.runOutsideAngular(() => getDOM().onAndCancel(el, eventName, outsideHandler));\n }\n}\n\nfunction DefaultServerRenderer2_tsickle_Closure_declarations() {\n/** @type {?} */\nDefaultServerRenderer2.prototype.data;\n/** @type {?} */\nDefaultServerRenderer2.prototype.destroyNode;\n/** @type {?} */\nDefaultServerRenderer2.prototype.document;\n/** @type {?} */\nDefaultServerRenderer2.prototype.ngZone;\n/** @type {?} */\nDefaultServerRenderer2.prototype.schema;\n}\n\n\nconst /** @type {?} */ AT_CHARCODE = '@'.charCodeAt(0);\n/**\n * @param {?} name\n * @param {?} nameKind\n * @return {?}\n */\nfunction checkNoSyntheticProp(name: string, nameKind: string) {\n if (name.charCodeAt(0) === AT_CHARCODE) {\n throw new Error(\n `Found the synthetic ${nameKind} ${name}. Please include either \"BrowserAnimationsModule\" or \"NoopAnimationsModule\" in your application.`);\n }\n}\nclass EmulatedEncapsulationServerRenderer2 extends DefaultServerRenderer2 {\nprivate contentAttr: string;\nprivate hostAttr: string;\n/**\n * @param {?} document\n * @param {?} ngZone\n * @param {?} sharedStylesHost\n * @param {?} schema\n * @param {?} component\n */\nconstructor(\n document: any, ngZone: NgZone, sharedStylesHost: SharedStylesHost,\n schema: DomElementSchemaRegistry,\nprivate component: RendererType2) {\n super(document, ngZone, schema);\n const styles = flattenStyles(component.id, component.styles, []);\n sharedStylesHost.addStyles(styles);\n\n this.contentAttr = shimContentAttribute(component.id);\n this.hostAttr = shimHostAttribute(component.id);\n }\n/**\n * @param {?} element\n * @return {?}\n */\napplyToHost(element: any) { super.setAttribute(element, this.hostAttr, ''); }\n/**\n * @param {?} parent\n * @param {?} name\n * @return {?}\n */\ncreateElement(parent: any, name: string): Element {\n const /** @type {?} */ el = super.createElement(parent, name);\n super.setAttribute(el, this.contentAttr, '');\n return el;\n }\n}\n\nfunction EmulatedEncapsulationServerRenderer2_tsickle_Closure_declarations() {\n/** @type {?} */\nEmulatedEncapsulationServerRenderer2.prototype.contentAttr;\n/** @type {?} */\nEmulatedEncapsulationServerRenderer2.prototype.hostAttr;\n/** @type {?} */\nEmulatedEncapsulationServerRenderer2.prototype.component;\n}\n\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\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 parse5 = require('parse5');\n\nimport {ɵglobal as global} from '@angular/core';\nimport {ɵDomAdapter as DomAdapter, ɵsetRootDomAdapter as setRootDomAdapter} from '@angular/platform-browser';\nimport {SelectorMatcher, CssSelector} from '@angular/compiler';\n\nlet /** @type {?} */ treeAdapter: any;\n\nconst /** @type {?} */ _attrToPropMap: {[key: string]: string} = {\n 'class': 'className',\n 'innerHtml': 'innerHTML',\n 'readonly': 'readOnly',\n 'tabindex': 'tabIndex',\n};\n\nconst /** @type {?} */ mapProps = ['attribs', 'x-attribsNamespace', 'x-attribsPrefix'];\n/**\n * @param {?} methodName\n * @return {?}\n */\nfunction _notImplemented(methodName: string) {\n return new Error('This method is not implemented in Parse5DomAdapter: ' + methodName);\n}\n/**\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\nfunction _getElement(el: any, name: string) {\n for (let /** @type {?} */ i = 0; i < el.childNodes.length; i++) {\n let /** @type {?} */ node = el.childNodes[i];\n if (node.name === name) {\n return node;\n }\n }\n return null;\n}\n/**\n * Parses a document string to a Document object.\n * @param {?} html\n * @return {?}\n */\nexport function parseDocument(html: string) {\n let /** @type {?} */ doc = parse5.parse(html, {treeAdapter: parse5.treeAdapters.htmlparser2});\n let /** @type {?} */ docElement = _getElement(doc, 'html');\n doc['head'] = _getElement(docElement, 'head');\n doc['body'] = _getElement(docElement, 'body');\n doc['_window'] = {};\n return doc;\n}\n/**\n * A `DomAdapter` powered by the `parse5` NodeJS module.\n * \n * \\@security Tread carefully! Interacting with the DOM directly is dangerous and\n * can introduce XSS risks.\n */\nexport class Parse5DomAdapter extends DomAdapter {\n/**\n * @return {?}\n */\nstatic makeCurrent() {\n treeAdapter = parse5.treeAdapters.htmlparser2;\n setRootDomAdapter(new Parse5DomAdapter());\n }\n/**\n * @param {?} nodeA\n * @param {?} nodeB\n * @return {?}\n */\ncontains(nodeA: any, nodeB: any): boolean {\n let /** @type {?} */ inner = nodeB;\n while (inner) {\n if (inner === nodeA) return true;\n inner = inner.parent;\n }\n return false;\n }\n/**\n * @param {?} element\n * @param {?} name\n * @return {?}\n */\nhasProperty(element: any, name: string): boolean {\n return _HTMLElementPropertyList.indexOf(name) > -1;\n }\n/**\n * @param {?} el\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\nsetProperty(el: any, name: string, value: any) {\n if (name === 'innerHTML') {\n this.setInnerHTML(el, value);\n } else if (name === 'innerText') {\n this.setText(el, value);\n } else if (name === 'className') {\n el.attribs['class'] = el.className = value;\n } else {\n // Store the property in a separate property bag so that it doesn't clobber\n // actual parse5 properties on the Element.\n el.properties = el.properties || {};\n el.properties[name] = value;\n }\n }\n/**\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\ngetProperty(el: any, name: string): any {\n return el.properties ? el.properties[name] : undefined;\n }\n/**\n * @param {?} error\n * @return {?}\n */\nlogError(error: string) { console.error(error); }\n/**\n * @param {?} error\n * @return {?}\n */\nlog(error: string) { console.log(error); }\n/**\n * @param {?} error\n * @return {?}\n */\nlogGroup(error: string) { console.error(error); }\n/**\n * @return {?}\n */\nlogGroupEnd() {}\n/**\n * @return {?}\n */\nget attrToPropMap() { return _attrToPropMap; }\n/**\n * @param {?} el\n * @param {?} selector\n * @return {?}\n */\nquerySelector(el: any, selector: string): any {\n return this.querySelectorAll(el, selector)[0] || null;\n }\n/**\n * @param {?} el\n * @param {?} selector\n * @return {?}\n */\nquerySelectorAll(el: any, selector: string): any[] {\n const /** @type {?} */ res: any[] = [];\n const /** @type {?} */ _recursive = (result: any, node: any, selector: any, matcher: any) => {\n const /** @type {?} */ cNodes = node.childNodes;\n if (cNodes && cNodes.length > 0) {\n for (let /** @type {?} */ i = 0; i < cNodes.length; i++) {\n const /** @type {?} */ childNode = cNodes[i];\n if (this.elementMatches(childNode, selector, matcher)) {\n result.push(childNode);\n }\n _recursive(result, childNode, selector, matcher);\n }\n }\n };\n const /** @type {?} */ matcher = new SelectorMatcher();\n matcher.addSelectables(CssSelector.parse(selector));\n _recursive(res, el, selector, matcher);\n return res;\n }\n/**\n * @param {?} node\n * @param {?} selector\n * @param {?=} matcher\n * @return {?}\n */\nelementMatches(node: any, selector: string, matcher: any = null): boolean {\n if (this.isElementNode(node) && selector === '*') {\n return true;\n }\n let /** @type {?} */ result = false;\n if (selector && selector.charAt(0) == '#') {\n result = this.getAttribute(node, 'id') == selector.substring(1);\n } else if (selector) {\n if (!matcher) {\n matcher = new SelectorMatcher();\n matcher.addSelectables(CssSelector.parse(selector));\n }\n\n const /** @type {?} */ cssSelector = new CssSelector();\n cssSelector.setElement(this.tagName(node));\n if (node.attribs) {\n for (const /** @type {?} */ attrName in node.attribs) {\n cssSelector.addAttribute(attrName, node.attribs[attrName]);\n }\n }\n const /** @type {?} */ classList = this.classList(node);\n for (let /** @type {?} */ i = 0; i < classList.length; i++) {\n cssSelector.addClassName(classList[i]);\n }\n\n matcher.match(cssSelector, function(selector: any, cb: any) { result = true; });\n }\n return result;\n }\n/**\n * @param {?} el\n * @param {?} evt\n * @param {?} listener\n * @return {?}\n */\non(el: any, evt: any, listener: any) {\n let /** @type {?} */ listenersMap: {[k: string]: any} = el._eventListenersMap;\n if (!listenersMap) {\n listenersMap = {};\n el._eventListenersMap = listenersMap;\n }\n const /** @type {?} */ listeners = listenersMap[evt] || [];\n listenersMap[evt] = [...listeners, listener];\n }\n/**\n * @param {?} el\n * @param {?} evt\n * @param {?} listener\n * @return {?}\n */\nonAndCancel(el: any, evt: any, listener: any): Function {\n this.on(el, evt, listener);\n return () => { remove( /** @type {?} */((<any[]>(el._eventListenersMap[evt]))), listener); };\n }\n/**\n * @param {?} el\n * @param {?} evt\n * @return {?}\n */\ndispatchEvent(el: any, evt: any) {\n if (!evt.target) {\n evt.target = el;\n }\n if (el._eventListenersMap) {\n const /** @type {?} */ listeners: any = el._eventListenersMap[evt.type];\n if (listeners) {\n for (let /** @type {?} */ i = 0; i < listeners.length; i++) {\n listeners[i](evt);\n }\n }\n }\n if (el.parent) {\n this.dispatchEvent(el.parent, evt);\n }\n if (el._window) {\n this.dispatchEvent(el._window, evt);\n }\n }\n/**\n * @param {?} eventType\n * @return {?}\n */\ncreateMouseEvent(eventType: any): Event { return this.createEvent(eventType); }\n/**\n * @param {?} eventType\n * @return {?}\n */\ncreateEvent(eventType: string): Event {\n const /** @type {?} */ event = /** @type {?} */(( <Event>{\n type: eventType,\n defaultPrevented: false,\n preventDefault: () => { ( /** @type {?} */((<any>event))).defaultPrevented = true; }\n }));\n return event;\n }\n/**\n * @param {?} event\n * @return {?}\n */\npreventDefault(event: any) { event.returnValue = false; }\n/**\n * @param {?} event\n * @return {?}\n */\nisPrevented(event: any): boolean { return event.returnValue != null && !event.returnValue; }\n/**\n * @param {?} el\n * @return {?}\n */\ngetInnerHTML(el: any): string {\n return parse5.serialize(this.templateAwareRoot(el), {treeAdapter});\n }\n/**\n * @param {?} el\n * @return {?}\n */\ngetTemplateContent(el: any): Node|null { return null; }\n/**\n * @param {?} el\n * @return {?}\n */\ngetOuterHTML(el: any): string {\n const /** @type {?} */ fragment = treeAdapter.createDocumentFragment();\n this.appendChild(fragment, el);\n return parse5.serialize(fragment, {treeAdapter});\n }\n/**\n * @param {?} node\n * @return {?}\n */\nnodeName(node: any): string { return node.tagName; }\n/**\n * @param {?} node\n * @return {?}\n */\nnodeValue(node: any): string { return node.nodeValue; }\n/**\n * @param {?} node\n * @return {?}\n */\ntype(node: any): string { throw _notImplemented('type'); }\n/**\n * @param {?} node\n * @return {?}\n */\ncontent(node: any): string { return node.childNodes[0]; }\n/**\n * @param {?} el\n * @return {?}\n */\nfirstChild(el: any): Node { return el.firstChild; }\n/**\n * @param {?} el\n * @return {?}\n */\nnextSibling(el: any): Node { return el.nextSibling; }\n/**\n * @param {?} el\n * @return {?}\n */\nparentElement(el: any): Node { return el.parent; }\n/**\n * @param {?} el\n * @return {?}\n */\nchildNodes(el: any): Node[] { return el.childNodes; }\n/**\n * @param {?} el\n * @return {?}\n */\nchildNodesAsList(el: any): any[] {\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 */\nclearNodes(el: any) {\n while (el.childNodes.length > 0) {\n this.remove(el.childNodes[0]);\n }\n }\n/**\n * @param {?} el\n * @param {?} node\n * @return {?}\n */\nappendChild(el: any, node: any) {\n this.remove(node);\n treeAdapter.appendChild(this.templateAwareRoot(el), node);\n }\n/**\n * @param {?} el\n * @param {?} node\n * @return {?}\n */\nremoveChild(el: any, node: any) {\n if (el.childNodes.indexOf(node) > -1) {\n this.remove(node);\n }\n }\n/**\n * @param {?} el\n * @return {?}\n */\nremove(el: any): HTMLElement {\n const /** @type {?} */ parent = el.parent;\n if (parent) {\n const /** @type {?} */ index = parent.childNodes.indexOf(el);\n parent.childNodes.splice(index, 1);\n }\n const /** @type {?} */ prev = el.previousSibling;\n const /** @type {?} */ next = el.nextSibling;\n if (prev) {\n prev.next = next;\n }\n if (next) {\n next.prev = prev;\n }\n el.prev = null;\n el.next = null;\n el.parent = null;\n return el;\n }\n/**\n * @param {?} parent\n * @param {?} ref\n * @param {?} newNode\n * @return {?}\n */\ninsertBefore(parent: any, ref: any, newNode: any) {\n this.remove(newNode);\n if (ref) {\n treeAdapter.insertBefore(parent, newNode, ref);\n } else {\n this.appendChild(parent, newNode);\n }\n }\n/**\n * @param {?} parent\n * @param {?} ref\n * @param {?} nodes\n * @return {?}\n */\ninsertAllBefore(parent: any, ref: any, nodes: any) {\n nodes.forEach((n: any) => this.insertBefore(parent, ref, n));\n }\n/**\n * @param {?} parent\n * @param {?} ref\n * @param {?} node\n * @return {?}\n */\ninsertAfter(parent: any, ref: any, node: any) {\n if (ref.nextSibling) {\n this.insertBefore(parent, ref.nextSibling, node);\n } else {\n this.appendChild(parent, node);\n }\n }\n/**\n * @param {?} el\n * @param {?} value\n * @return {?}\n */\nsetInnerHTML(el: any, value: any) {\n this.clearNodes(el);\n const /** @type {?} */ content = parse5.parseFragment(value, {treeAdapter});\n for (let /** @type {?} */ i = 0; i < content.childNodes.length; i++) {\n treeAdapter.appendChild(el, content.childNodes[i]);\n }\n }\n/**\n * @param {?} el\n * @param {?=} isRecursive\n * @return {?}\n */\ngetText(el: any, isRecursive?: boolean): string {\n if (this.isTextNode(el)) {\n return el.data;\n }\n\n if (this.isCommentNode(el)) {\n // In the DOM, comments within an element return an empty string for textContent\n // However, comment node instances return the comment content for textContent getter\n return isRecursive ? '' : el.data;\n }\n\n if (!el.childNodes || el.childNodes.length == 0) {\n return '';\n }\n\n let /** @type {?} */ textContent = '';\n for (let /** @type {?} */ i = 0; i < el.childNodes.length; i++) {\n textContent += this.getText(el.childNodes[i], true);\n }\n return textContent;\n }\n/**\n * @param {?} el\n * @param {?} value\n * @return {?}\n */\nsetText(el: any, value: string) {\n if (this.isTextNode(el) || this.isCommentNode(el)) {\n el.data = value;\n } else {\n this.clearNodes(el);\n if (value !== '') treeAdapter.insertText(el, value);\n }\n }\n/**\n * @param {?} el\n * @return {?}\n */\ngetValue(el: any): string { return el.value; }\n/**\n * @param {?} el\n * @param {?} value\n * @return {?}\n */\nsetValue(el: any, value: string) { el.value = value; }\n/**\n * @param {?} el\n * @return {?}\n */\ngetChecked(el: any): boolean { return el.checked; }\n/**\n * @param {?} el\n * @param {?} value\n * @return {?}\n */\nsetChecked(el: any, value: boolean) { el.checked = value; }\n/**\n * @param {?} text\n * @return {?}\n */\ncreateComment(text: string): Comment { return treeAdapter.createCommentNode(text); }\n/**\n * @param {?} html\n * @return {?}\n */\ncreateTemplate(html: any): HTMLElement {\n const /** @type {?} */ template = treeAdapter.createElement('template', 'http://www.w3.org/1999/xhtml', []);\n const /** @type {?} */ content = parse5.parseFragment(html, {treeAdapter});\n treeAdapter.setTemplateContent(template, content);\n return template;\n }\n/**\n * @param {?} tagName\n * @return {?}\n */\ncreateElement(tagName: any): HTMLElement {\n return treeAdapter.createElement(tagName, 'http://www.w3.org/1999/xhtml', []);\n }\n/**\n * @param {?} ns\n * @param {?} tagName\n * @return {?}\n */\ncreateElementNS(ns: any, tagName: any): HTMLElement {\n return treeAdapter.createElement(tagName, ns, []);\n }\n/**\n * @param {?} text\n * @return {?}\n */\ncreateTextNode(text: string): Text {\n const /** @type {?} */ t = /** @type {?} */(( <any>this.createComment(text)));\n t.type = 'text';\n return t;\n }\n/**\n * @param {?} attrName\n * @param {?} attrValue\n * @return {?}\n */\ncreateScriptTag(attrName: string, attrValue: string): HTMLElement {\n return treeAdapter.createElement(\n 'script', 'http://www.w3.org/1999/xhtml', [{name: attrName, value: attrValue}]);\n }\n/**\n * @param {?} css\n * @return {?}\n */\ncreateStyleElement(css: string): HTMLStyleElement {\n const /** @type {?} */ style = this.createElement('style');\n this.setText(style, css);\n return /** @type {?} */(( <HTMLStyleElement>style));\n }\n/**\n * @param {?} el\n * @return {?}\n */\ncreateShadowRoot(el: any): HTMLElement {\n el.shadowRoot = treeAdapter.createDocumentFragment();\n el.shadowRoot.parent = el;\n return el.shadowRoot;\n }\n/**\n * @param {?} el\n * @return {?}\n */\ngetShadowRoot(el: any): Element { return el.shadowRoot; }\n/**\n * @param {?} el\n * @return {?}\n */\ngetHost(el: any): string { return el.host; }\n/**\n * @param {?} el\n * @return {?}\n */\ngetDistributedNodes(el: any): Node[] { throw _notImplemented('getDistributedNodes'); }\n/**\n * @param {?} node\n * @return {?}\n */\nclone(node: Node): Node {\n const /** @type {?} */ _recursive = (node: any) => {\n const /** @type {?} */ nodeClone = Object.create(Object.getPrototypeOf(node));\n for (const /** @type {?} */ prop in node) {\n const /** @type {?} */ desc = Object.getOwnPropertyDescriptor(node, prop);\n if (desc && 'value' in desc && typeof desc.value !== 'object') {\n nodeClone[prop] = node[prop];\n }\n }\n nodeClone.parent = null;\n nodeClone.prev = null;\n nodeClone.next = null;\n nodeClone.children = null;\n\n mapProps.forEach(mapName => {\n if (node[mapName] != null) {\n nodeClone[mapName] = {};\n for (const /** @type {?} */ prop in node[mapName]) {\n nodeClone[mapName][prop] = node[mapName][prop];\n }\n }\n });\n const /** @type {?} */ cNodes = node.children;\n if (cNodes) {\n const /** @type {?} */ cNodesClone = new Array(cNodes.length);\n for (let /** @type {?} */ i = 0; i < cNodes.length; i++) {\n const /** @type {?} */ childNode = cNodes[i];\n const /** @type {?} */ childNodeClone = _recursive(childNode);\n cNodesClone[i] = childNodeClone;\n if (i > 0) {\n childNodeClone.prev = cNodesClone[i - 1];\n cNodesClone[i - 1].next = childNodeClone;\n }\n childNodeClone.parent = nodeClone;\n }\n nodeClone.children = cNodesClone;\n }\n return nodeClone;\n };\n return _recursive(node);\n }\n/**\n * @param {?} element\n * @param {?} name\n * @return {?}\n */\ngetElementsByClassName(element: any, name: string): HTMLElement[] {\n return this.querySelectorAll(element, '.' + name);\n }\n/**\n * @param {?} element\n * @param {?} name\n * @return {?}\n */\ngetElementsByTagName(element: any, name: string): HTMLElement[] {\n return this.querySelectorAll(element, name);\n }\n/**\n * @param {?} element\n * @return {?}\n */\nclassList(element: any): string[] {\n let /** @type {?} */ classAttrValue: any = null;\n const /** @type {?} */ attributes = element.attribs;\n\n if (attributes && attributes['class'] != null) {\n classAttrValue = attributes['class'];\n }\n return classAttrValue ? classAttrValue.trim().split(/\\s+/g) : [];\n }\n/**\n * @param {?} element\n * @param {?} className\n * @return {?}\n */\naddClass(element: any, className: string) {\n const /** @type {?} */ classList = this.classList(element);\n const /** @type {?} */ index = classList.indexOf(className);\n if (index == -1) {\n classList.push(className);\n element.attribs['class'] = element.className = classList.join(' ');\n }\n }\n/**\n * @param {?} element\n * @param {?} className\n * @return {?}\n */\nremoveClass(element: any, className: string) {\n const /** @type {?} */ classList = this.classList(element);\n const /** @type {?} */ index = classList.indexOf(className);\n if (index > -1) {\n classList.splice(index, 1);\n element.attribs['class'] = element.className = classList.join(' ');\n }\n }\n/**\n * @param {?} element\n * @param {?} className\n * @return {?}\n */\nhasClass(element: any, className: string): boolean {\n return this.classList(element).indexOf(className) > -1;\n }\n/**\n * @param {?} element\n * @param {?} styleName\n * @param {?=} styleValue\n * @return {?}\n */\nhasStyle(element: any, styleName: string, styleValue?: string): boolean {\n const /** @type {?} */ value = this.getStyle(element, styleName) || '';\n return styleValue ? value == styleValue : value.length > 0;\n }\n/**\n * \\@internal\n * @param {?} element\n * @return {?}\n */\n_readStyleAttribute(element: any) {\n const /** @type {?} */ styleMap = {};\n const /** @type {?} */ attributes = element.attribs;\n if (attributes && attributes['style'] != null) {\n const /** @type {?} */ styleAttrValue = attributes['style'];\n const /** @type {?} */ styleList = styleAttrValue.split(/;+/g);\n for (let /** @type {?} */ i = 0; i < styleList.length; i++) {\n if (styleList[i].length > 0) {\n const /** @type {?} */ style = /** @type {?} */(( styleList[i] as string));\n const /** @type {?} */ colon = style.indexOf(':');\n if (colon === -1) {\n throw new Error(`Invalid CSS style: ${style}`);\n }\n ( /** @type {?} */((styleMap as any)))[style.substr(0, colon).trim()] = style.substr(colon + 1).trim();\n }\n }\n }\n return styleMap;\n }\n/**\n * \\@internal\n * @param {?} element\n * @param {?} styleMap\n * @return {?}\n */\n_writeStyleAttribute(element: any, styleMap: any) {\n let /** @type {?} */ styleAttrValue = '';\n for (const /** @type {?} */ key in styleMap) {\n const /** @type {?} */ newValue = styleMap[key];\n if (newValue) {\n styleAttrValue += key + ':' + styleMap[key] + ';';\n }\n }\n element.attribs['style'] = styleAttrValue;\n }\n/**\n * @param {?} element\n * @param {?} styleName\n * @param {?=} styleValue\n * @return {?}\n */\nsetStyle(element: any, styleName: string, styleValue?: string|null) {\n const /** @type {?} */ styleMap = this._readStyleAttribute(element);\n ( /** @type {?} */((styleMap as any)))[styleName] = styleValue;\n this._writeStyleAttribute(element, styleMap);\n }\n/**\n * @param {?} element\n * @param {?} styleName\n * @return {?}\n */\nremoveStyle(element: any, styleName: string) { this.setStyle(element, styleName, null); }\n/**\n * @param {?} element\n * @param {?} styleName\n * @return {?}\n */\ngetStyle(element: any, styleName: string): string {\n const /** @type {?} */ styleMap = this._readStyleAttribute(element);\n return styleMap.hasOwnProperty(styleName) ? ( /** @type {?} */((styleMap as any)))[styleName] : '';\n }\n/**\n * @param {?} element\n * @return {?}\n */\ntagName(element: any): string { return element.tagName == 'style' ? 'STYLE' : element.tagName; }\n/**\n * @param {?} element\n * @return {?}\n */\nattributeMap(element: any): Map<string, string> {\n const /** @type {?} */ res = new Map<string, string>();\n const /** @type {?} */ elAttrs = treeAdapter.getAttrList(element);\n for (let /** @type {?} */ i = 0; i < elAttrs.length; i++) {\n const /** @type {?} */ attrib = elAttrs[i];\n res.set(attrib.name, attrib.value);\n }\n return res;\n }\n/**\n * @param {?} element\n * @param {?} attribute\n * @return {?}\n */\nhasAttribute(element: any, attribute: string): boolean {\n return element.attribs && element.attribs[attribute] != null;\n }\n/**\n * @param {?} element\n * @param {?} ns\n * @param {?} attribute\n * @return {?}\n */\nhasAttributeNS(element: any, ns: string, attribute: string): boolean {\n return this.hasAttribute(element, attribute);\n }\n/**\n * @param {?} element\n * @param {?} attribute\n * @return {?}\n */\ngetAttribute(element: any, attribute: string): string {\n return this.hasAttribute(element, attribute) ? element.attribs[attribute] : null;\n }\n/**\n * @param {?} element\n * @param {?} ns\n * @param {?} attribute\n * @return {?}\n */\ngetAttributeNS(element: any, ns: string, attribute: string): string {\n return this.getAttribute(element, attribute);\n }\n/**\n * @param {?} element\n * @param {?} attribute\n * @param {?} value\n * @return {?}\n */\nsetAttribute(element: any, attribute: string, value: string) {\n if (attribute) {\n element.attribs[attribute] = value;\n if (attribute === 'class') {\n element.className = value;\n }\n }\n }\n/**\n * @param {?} element\n * @param {?} ns\n * @param {?} attribute\n * @param {?} value\n * @return {?}\n */\nsetAttributeNS(element: any, ns: string, attribute: string, value: string) {\n this.setAttribute(element, attribute, value);\n }\n/**\n * @param {?} element\n * @param {?} attribute\n * @return {?}\n */\nremoveAttribute(element: any, attribute: string) {\n if (attribute) {\n delete element.attribs[attribute];\n }\n }\n/**\n * @param {?} element\n * @param {?} ns\n * @param {?} name\n * @return {?}\n */\nremoveAttributeNS(element: any, ns: string, name: string) { throw 'not implemented'; }\n/**\n * @param {?} el\n * @return {?}\n */\ntemplateAwareRoot(el: any): any {\n return this.isTemplateElement(el) ? treeAdapter.getTemplateContent(el) : el;\n }\n/**\n * @return {?}\n */\ncreateHtmlDocument(): Document {\n const /** @type {?} */ newDoc = treeAdapter.createDocument();\n newDoc.title = 'fakeTitle';\n const /** @type {?} */ head = treeAdapter.createElement('head', null, []);\n const /** @type {?} */ body = treeAdapter.createElement('body', 'http://www.w3.org/1999/xhtml', []);\n this.appendChild(newDoc, head);\n this.appendChild(newDoc, body);\n newDoc['head'] = head;\n newDoc['body'] = body;\n newDoc['_window'] = {};\n return newDoc;\n }\n/**\n * @param {?} el\n * @return {?}\n */\ngetBoundingClientRect(el: any): any { return {left: 0, top: 0, width: 0, height: 0}; }\n/**\n * @param {?} doc\n * @return {?}\n */\ngetTitle(doc: Document): string { return this.getText(this.getTitleNode(doc)) || ''; }\n/**\n * @param {?} doc\n * @param {?} newTitle\n * @return {?}\n */\nsetTitle(doc: Document, newTitle: string) {\n this.setText(this.getTitleNode(doc), newTitle || '');\n }\n/**\n * @param {?} el\n * @return {?}\n */\nisTemplateElement(el: any): boolean {\n return this.isElementNode(el) && this.tagName(el) === 'template';\n }\n/**\n * @param {?} node\n * @return {?}\n */\nisTextNode(node: any): boolean { return treeAdapter.isTextNode(node); }\n/**\n * @param {?} node\n * @return {?}\n */\nisCommentNode(node: any): boolean { return treeAdapter.isCommentNode(node); }\n/**\n * @param {?} node\n * @return {?}\n */\nisElementNode(node: any): boolean { return node ? treeAdapter.isElementNode(node) : false; }\n/**\n * @param {?} node\n * @return {?}\n */\nhasShadowRoot(node: any): boolean { return node.shadowRoot != null; }\n/**\n * @param {?} node\n * @return {?}\n */\nisShadowRoot(node: any): boolean { return this.getShadowRoot(node) == node; }\n/**\n * @param {?} node\n * @return {?}\n */\nimportIntoDoc(node: any): any { return this.clone(node); }\n/**\n * @param {?} node\n * @return {?}\n */\nadoptNode(node: any): any { return node; }\n/**\n * @param {?} el\n * @return {?}\n */\ngetHref(el: any): string { return this.getAttribute(el, 'href'); }\n/**\n * @param {?} el\n * @param {?} baseUrl\n * @param {?} href\n * @return {?}\n */\nresolveAndSetHref(el: any, baseUrl: string, href: string) {\n if (href == null) {\n el.href = baseUrl;\n } else {\n el.href = baseUrl + '/../' + href;\n }\n }\n/**\n * \\@internal\n * @param {?} parsedRules\n * @param {?=} css\n * @return {?}\n */\n_buildRules(parsedRules: any, css?: any) {\n const /** @type {?} */ rules: any[] = [];\n for (let /** @type {?} */ i = 0; i < parsedRules.length; i++) {\n const /** @type {?} */ parsedRule = parsedRules[i];\n const /** @type {?} */ rule: {[key: string]: any} = {};\n rule['cssText'] = css;\n rule['style'] = {content: '', cssText: ''};\n if (parsedRule.type == 'rule') {\n rule['type'] = 1;\n\n rule['selectorText'] =\n parsedRule.selectors.join(', '.replace(/\\s{2,}/g, ' ')\n .replace(/\\s*~\\s*/g, ' ~ ')\n .replace(/\\s*\\+\\s*/g, ' + ')\n .replace(/\\s*>\\s*/g, ' > ')\n .replace(/\\[(\\w+)=(\\w+)\\]/g, '[$1=\"$2\"]'));\n if (parsedRule.declarations == null) {\n continue;\n }\n for (let /** @type {?} */ j = 0; j < parsedRule.declarations.length; j++) {\n const /** @type {?} */ declaration = parsedRule.declarations[j];\n rule['style'] = declaration.property[declaration.value];\n rule['style'].cssText += declaration.property + ': ' + declaration.value + ';';\n }\n } else if (parsedRule.type == 'media') {\n rule['type'] = 4;\n rule['media'] = {mediaText: parsedRule.media};\n if (parsedRule.rules) {\n rule['cssRules'] = this._buildRules(parsedRule.rules);\n }\n }\n rules.push(rule);\n }\n return rules;\n }\n/**\n * @return {?}\n */\nsupportsDOMEvents(): boolean { return false; }\n/**\n * @return {?}\n */\nsupportsNativeShadowDOM(): boolean { return false; }\n/**\n * @param {?} doc\n * @param {?} target\n * @return {?}\n */\ngetGlobalEventTarget(doc: Document, target: string): any {\n if (target == 'window') {\n return ( /** @type {?} */((<any>doc)))._window;\n } else if (target == 'document') {\n return doc;\n } else if (target == 'body') {\n return doc.body;\n }\n }\n/**\n * @param {?} doc\n * @return {?}\n */\ngetBaseHref(doc: Document): string|null {\n const /** @type {?} */ base = this.querySelector(doc, 'base');\n let /** @type {?} */ href = '';\n if (base) {\n href = this.getHref(base);\n }\n // TODO(alxhub): Need relative path logic from BrowserDomAdapter here?\n return href == null ? null : href;\n }\n/**\n * @return {?}\n */\nresetBaseElement(): void { throw 'not implemented'; }\n/**\n * @return {?}\n */\ngetHistory(): History { throw 'not implemented'; }\n/**\n * @return {?}\n */\ngetLocation(): Location { throw 'not implemented'; }\n/**\n * @return {?}\n */\ngetUserAgent(): string { return 'Fake user agent'; }\n/**\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\ngetData(el: any, name: string): string { return this.getAttribute(el, 'data-' + name); }\n/**\n * @param {?} el\n * @return {?}\n */\ngetComputedStyle(el: any): any { throw 'not implemented'; }\n/**\n * @param {?} el\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\nsetData(el: any, name: string, value: string) { this.setAttribute(el, 'data-' + name, value); }\n/**\n * @return {?}\n */\nsupportsWebAnimation(): boolean { return false; }\n/**\n * @return {?}\n */\nperformanceNow(): number { return Date.now(); }\n/**\n * @return {?}\n */\ngetAnimationPrefix(): string { return ''; }\n/**\n * @return {?}\n */\ngetTransitionEnd(): string { return 'transitionend'; }\n/**\n * @return {?}\n */\nsupportsAnimation(): boolean { return true; }\n/**\n * @param {?} el\n * @param {?} newNode\n * @param {?} oldNode\n * @return {?}\n */\nreplaceChild(el: any, newNode: any, oldNode: any) { throw new Error('not implemented'); }\n/**\n * @param {?} templateHtml\n * @return {?}\n */\nparse(templateHtml: string) { throw new Error('not implemented'); }\n/**\n * @param {?} el\n * @param {?} methodName\n * @param {?} args\n * @return {?}\n */\ninvoke(el: Element, methodName: string, args: any[]): any { throw new Error('not implemented'); }\n/**\n * @param {?} event\n * @return {?}\n */\ngetEventKey(event: any): string { throw new Error('not implemented'); }\n/**\n * @return {?}\n */\nsupportsCookies(): boolean { return false; }\n/**\n * @param {?} name\n * @return {?}\n */\ngetCookie(name: string): string { throw new Error('not implemented'); }\n/**\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\nsetCookie(name: string, value: string) { throw new Error('not implemented'); }\n/**\n * @param {?} element\n * @param {?} keyframes\n * @param {?} options\n * @return {?}\n */\nanimate(element: any, keyframes: any[], options: any): any { throw new Error('not implemented'); }\n/**\n * @param {?} doc\n * @return {?}\n */\nprivate getTitleNode(doc: Document) {\n let /** @type {?} */ title = this.querySelector(doc, 'title');\n\n if (!title) {\n title = /** @type {?} */(( <HTMLTitleElement>this.createElement('title')));\n this.appendChild(this.querySelector(doc, 'head'), title);\n }\n\n return title;\n }\n}\n\n// TODO: build a proper list, this one is all the keys of a HTMLInputElement\nconst /** @type {?} */ _HTMLElementPropertyList = [\n 'webkitEntries',\n 'incremental',\n 'webkitdirectory',\n 'selectionDirection',\n 'selectionEnd',\n 'selectionStart',\n 'labels',\n 'validationMessage',\n 'validity',\n 'willValidate',\n 'width',\n 'valueAsNumber',\n 'valueAsDate',\n 'value',\n 'useMap',\n 'defaultValue',\n 'type',\n 'step',\n 'src',\n 'size',\n 'required',\n 'readOnly',\n 'placeholder',\n 'pattern',\n 'name',\n 'multiple',\n 'min',\n 'minLength',\n 'maxLength',\n 'max',\n 'list',\n 'indeterminate',\n 'height',\n 'formTarget',\n 'formNoValidate',\n 'formMethod',\n 'formEnctype',\n 'formAction',\n 'files',\n 'form',\n 'disabled',\n 'dirName',\n 'checked',\n 'defaultChecked',\n 'autofocus',\n 'autocomplete',\n 'alt',\n 'align',\n 'accept',\n 'onautocompleteerror',\n 'onautocomplete',\n 'onwaiting',\n 'onvolumechange',\n 'ontoggle',\n 'ontimeupdate',\n 'onsuspend',\n 'onsubmit',\n 'onstalled',\n 'onshow',\n 'onselect',\n 'onseeking',\n 'onseeked',\n 'onscroll',\n 'onresize',\n 'onreset',\n 'onratechange',\n 'onprogress',\n 'onplaying',\n 'onplay',\n 'onpause',\n 'onmousewheel',\n 'onmouseup',\n 'onmouseover',\n 'onmouseout',\n 'onmousemove',\n 'onmouseleave',\n 'onmouseenter',\n 'onmousedown',\n 'onloadstart',\n 'onloadedmetadata',\n 'onloadeddata',\n 'onload',\n 'onkeyup',\n 'onkeypress',\n 'onkeydown',\n 'oninvalid',\n 'oninput',\n 'onfocus',\n 'onerror',\n 'onended',\n 'onemptied',\n 'ondurationchange',\n 'ondrop',\n 'ondragstart',\n 'ondragover',\n 'ondragleave',\n 'ondragenter',\n 'ondragend',\n 'ondrag',\n 'ondblclick',\n 'oncuechange',\n 'oncontextmenu',\n 'onclose',\n 'onclick',\n 'onchange',\n 'oncanplaythrough',\n 'oncanplay',\n 'oncancel',\n 'onblur',\n 'onabort',\n 'spellcheck',\n 'isContentEditable',\n 'contentEditable',\n 'outerText',\n 'innerText',\n 'accessKey',\n 'hidden',\n 'webkitdropzone',\n 'draggable',\n 'tabIndex',\n 'dir',\n 'translate',\n 'lang',\n 'title',\n 'childElementCount',\n 'lastElementChild',\n 'firstElementChild',\n 'children',\n 'onwebkitfullscreenerror',\n 'onwebkitfullscreenchange',\n 'nextElementSibling',\n 'previousElementSibling',\n 'onwheel',\n 'onselectstart',\n 'onsearch',\n 'onpaste',\n 'oncut',\n 'oncopy',\n 'onbeforepaste',\n 'onbeforecut',\n 'onbeforecopy',\n 'shadowRoot',\n 'dataset',\n 'classList',\n 'className',\n 'outerHTML',\n 'innerHTML',\n 'scrollHeight',\n 'scrollWidth',\n 'scrollTop',\n 'scrollLeft',\n 'clientHeight',\n 'clientWidth',\n 'clientTop',\n 'clientLeft',\n 'offsetParent',\n 'offsetHeight',\n 'offsetWidth',\n 'offsetTop',\n 'offsetLeft',\n 'localName',\n 'prefix',\n 'namespaceURI',\n 'id',\n 'style',\n 'attributes',\n 'tagName',\n 'parentElement',\n 'textContent',\n 'baseURI',\n 'ownerDocument',\n 'nextSibling',\n 'previousSibling',\n 'lastChild',\n 'firstChild',\n 'childNodes',\n 'parentNode',\n 'nodeType',\n 'nodeValue',\n 'nodeName',\n 'closure_lm_714617',\n '__jsaction',\n];\n/**\n * @template T\n * @param {?} list\n * @param {?} el\n * @return {?}\n */\nfunction remove<T>(list: T[], el: T): void {\n const /** @type {?} */ index = list.indexOf(el);\n if (index > -1) {\n list.splice(index, 1);\n }\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\nimport {LocationChangeEvent, LocationChangeListener, PlatformLocation} from '@angular/common';\nimport {Inject, Injectable, Optional} from '@angular/core';\nimport {DOCUMENT, ɵgetDOM as getDOM} from '@angular/platform-browser';\nimport {Subject} from 'rxjs/Subject';\nimport * as url from 'url';\nimport {INITIAL_CONFIG, PlatformConfig} from './tokens';\n/**\n * @param {?} urlStr\n * @return {?}\n */\nfunction parseUrl(urlStr: string): {pathname: string, search: string, hash: string} {\n const /** @type {?} */ parsedUrl = url.parse(urlStr);\n return {\n pathname: parsedUrl.pathname || '',\n search: parsedUrl.search || '',\n hash: parsedUrl.hash || '',\n };\n}\n/**\n * Server-side implementation of URL state. Implements `pathname`, `search`, and `hash`\n * but not the state stack.\n */\nexport class ServerPlatformLocation implements PlatformLocation {\nprivate _path: string = '/';\nprivate _search: string = '';\nprivate _hash: string = '';\nprivate _hashUpdate = new Subject<LocationChangeEvent>();\n/**\n * @param {?} _doc\n * @param {?} _config\n */\nconstructor(\nprivate _doc: any, _config: any) {\n const config = _config as PlatformConfig | null;\n if (!!config && !!config.url) {\n const parsedUrl = parseUrl(config.url);\n this._path = parsedUrl.pathname;\n this._search = parsedUrl.search;\n this._hash = parsedUrl.hash;\n }\n }\n/**\n * @return {?}\n */\ngetBaseHrefFromDOM(): string { return /** @type {?} */(( getDOM().getBaseHref(this._doc))); }\n/**\n * @param {?} fn\n * @return {?}\n */\nonPopState(fn: LocationChangeListener): void {\n // No-op: a state stack is not implemented, so\n // no events will ever come.\n }\n/**\n * @param {?} fn\n * @return {?}\n */\nonHashChange(fn: LocationChangeListener): void { this._hashUpdate.subscribe(fn); }\n/**\n * @return {?}\n */\nget pathname(): string { return this._path; }\n/**\n * @return {?}\n */\nget search(): string { return this._search; }\n/**\n * @return {?}\n */\nget hash(): string { return this._hash; }\n/**\n * @return {?}\n */\nget url(): string { return `${this.pathname}${this.search}${this.hash}`; }\n/**\n * @param {?} value\n * @param {?} oldUrl\n * @return {?}\n */\nprivate setHash(value: string, oldUrl: string) {\n if (this._hash === value) {\n // Don't fire events if the hash has not changed.\n return;\n }\n this._hash = value;\n const /** @type {?} */ newUrl = this.url;\n scheduleMicroTask(\n () => this._hashUpdate.next( /** @type {?} */(({ type: 'hashchange', oldUrl, newUrl } as LocationChangeEvent))));\n }\n/**\n * @param {?} state\n * @param {?} title\n * @param {?} newUrl\n * @return {?}\n */\nreplaceState(state: any, title: string, newUrl: string): void {\n const /** @type {?} */ oldUrl = this.url;\n const /** @type {?} */ parsedUrl = parseUrl(newUrl);\n this._path = parsedUrl.pathname;\n this._search = parsedUrl.search;\n this.setHash(parsedUrl.hash, oldUrl);\n }\n/**\n * @param {?} state\n * @param {?} title\n * @param {?} newUrl\n * @return {?}\n */\npushState(state: any, title: string, newUrl: string): void {\n this.replaceState(state, title, newUrl);\n }\n/**\n * @return {?}\n */\nforward(): void { throw new Error('Not implemented'); }\n/**\n * @return {?}\n */\nback(): void { throw new Error('Not implemented'); }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: undefined, decorators: [{ type: Inject, args: [DOCUMENT, ] }, ]},\n{type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [INITIAL_CONFIG, ] }, ]},\n];\n}\n\nfunction ServerPlatformLocation_tsickle_Closure_declarations() {\n/** @type {?} */\nServerPlatformLocation.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nServerPlatformLocation.ctorParameters;\n/** @type {?} */\nServerPlatformLocation.prototype._path;\n/** @type {?} */\nServerPlatformLocation.prototype._search;\n/** @type {?} */\nServerPlatformLocation.prototype._hash;\n/** @type {?} */\nServerPlatformLocation.prototype._hashUpdate;\n/** @type {?} */\nServerPlatformLocation.prototype._doc;\n}\n\n/**\n * @param {?} fn\n * @return {?}\n */\nexport function scheduleMicroTask(fn: Function) {\n Zone.current.scheduleMicroTask('scheduleMicrotask', fn);\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\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\nimport {InjectionToken} from '@angular/core';\n\n/**\n * Config object passed to initialize the platform.\n *\n * @experimental\n */\nexport interface PlatformConfig {\n document?: string;\n url?: string;\n}\n/**\n * The DI token for setting the initial config for the platform.\n * \n * \\@experimental\n */\nexport const INITIAL_CONFIG = new InjectionToken<PlatformConfig>('Server.INITIAL_CONFIG');\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 xhr2: any = require('xhr2');\n\nimport {Injectable, Optional, Provider} from '@angular/core';\nimport {BrowserXhr, Connection, ConnectionBackend, Http, ReadyState, Request, RequestOptions, Response, XHRBackend, XSRFStrategy} from '@angular/http';\n\nimport {HttpClient, HttpEvent, HttpRequest, HttpHandler, HttpInterceptor, HttpResponse, HTTP_INTERCEPTORS, HttpBackend, XhrFactory, ɵinterceptingHandler as interceptingHandler} from '@angular/common/http';\n\nimport {Observable} from 'rxjs/Observable';\nimport {Observer} from 'rxjs/Observer';\nimport {Subscription} from 'rxjs/Subscription';\n\nconst /** @type {?} */ isAbsoluteUrl = /^[a-zA-Z\\-\\+.]+:\\/\\//;\n/**\n * @param {?} url\n * @return {?}\n */\nfunction validateRequestUrl(url: string): void {\n if (!isAbsoluteUrl.test(url)) {\n throw new Error(`URLs requested via Http on the server must be absolute. URL: ${url}`);\n }\n}\nexport class ServerXhr implements BrowserXhr {\n/**\n * @return {?}\n */\nbuild(): XMLHttpRequest { return new xhr2.XMLHttpRequest(); }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n];\n}\n\nfunction ServerXhr_tsickle_Closure_declarations() {\n/** @type {?} */\nServerXhr.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nServerXhr.ctorParameters;\n}\n\nexport class ServerXsrfStrategy implements XSRFStrategy {\n/**\n * @param {?} req\n * @return {?}\n */\nconfigureRequest(req: Request): void {}\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n];\n}\n\nfunction ServerXsrfStrategy_tsickle_Closure_declarations() {\n/** @type {?} */\nServerXsrfStrategy.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nServerXsrfStrategy.ctorParameters;\n}\n\n/**\n * @abstract\n */\nexport abstract class ZoneMacroTaskWrapper<S, R> {\n/**\n * @param {?} request\n * @return {?}\n */\nwrap(request: S): Observable<R> {\n return new Observable((observer: Observer<R>) => {\n let /** @type {?} */ task: Task = /** @type {?} */(( null));\n let /** @type {?} */ scheduled: boolean = false;\n let /** @type {?} */ sub: Subscription|null = null;\n let /** @type {?} */ savedResult: any = null;\n let /** @type {?} */ savedError: any = null;\n\n const /** @type {?} */ scheduleTask = (_task: Task) => {\n task = _task;\n scheduled = true;\n\n const /** @type {?} */ delegate = this.delegate(request);\n sub = delegate.subscribe(\n res => savedResult = res,\n err => {\n if (!scheduled) {\n throw new Error(\n 'An http observable was completed twice. This shouldn\\'t happen, please file a bug.');\n }\n savedError = err;\n scheduled = false;\n task.invoke();\n },\n () => {\n if (!scheduled) {\n throw new Error(\n 'An http observable was completed twice. This shouldn\\'t happen, please file a bug.');\n }\n scheduled = false;\n task.invoke();\n });\n };\n\n const /** @type {?} */ cancelTask = (_task: Task) => {\n if (!scheduled) {\n return;\n }\n scheduled = false;\n if (sub) {\n sub.unsubscribe();\n sub = null;\n }\n };\n\n const /** @type {?} */ onComplete = () => {\n if (savedError !== null) {\n observer.error(savedError);\n } else {\n observer.next(savedResult);\n observer.complete();\n }\n };\n\n // MockBackend for Http is synchronous, which means that if scheduleTask is by\n // scheduleMacroTask, the request will hit MockBackend and the response will be\n // sent, causing task.invoke() to be called.\n const /** @type {?} */ _task = Zone.current.scheduleMacroTask(\n 'ZoneMacroTaskWrapper.subscribe', onComplete, {}, () => null, cancelTask);\n scheduleTask(_task);\n\n return () => {\n if (scheduled && task) {\n task.zone.cancelTask(task);\n scheduled = false;\n }\n if (sub) {\n sub.unsubscribe();\n sub = null;\n }\n };\n });\n }\n/**\n * @abstract\n * @param {?} request\n * @return {?}\n */\ndelegate(request: S) {}\n}\nexport class ZoneMacroTaskConnection extends ZoneMacroTaskWrapper<Request, Response> implements\n Connection {\n response: Observable<Response>;\n lastConnection: Connection;\n/**\n * @param {?} request\n * @param {?} backend\n */\nconstructor(public request: Request,\nprivate backend: XHRBackend) {\n super();\n validateRequestUrl(request.url);\n this.response = this.wrap(request);\n }\n/**\n * @param {?} request\n * @return {?}\n */\ndelegate(request: Request): Observable<Response> {\n this.lastConnection = this.backend.createConnection(request);\n return /** @type {?} */(( this.lastConnection.response as Observable<Response>));\n }\n/**\n * @return {?}\n */\nget readyState(): ReadyState {\n return !!this.lastConnection ? this.lastConnection.readyState : ReadyState.Unsent;\n }\n}\n\nfunction ZoneMacroTaskConnection_tsickle_Closure_declarations() {\n/** @type {?} */\nZoneMacroTaskConnection.prototype.response;\n/** @type {?} */\nZoneMacroTaskConnection.prototype.lastConnection;\n/** @type {?} */\nZoneMacroTaskConnection.prototype.request;\n/** @type {?} */\nZoneMacroTaskConnection.prototype.backend;\n}\n\nexport class ZoneMacroTaskBackend implements ConnectionBackend {\n/**\n * @param {?} backend\n */\nconstructor(private backend: XHRBackend) {}\n/**\n * @param {?} request\n * @return {?}\n */\ncreateConnection(request: any): ZoneMacroTaskConnection {\n return new ZoneMacroTaskConnection(request, this.backend);\n }\n}\n\nfunction ZoneMacroTaskBackend_tsickle_Closure_declarations() {\n/** @type {?} */\nZoneMacroTaskBackend.prototype.backend;\n}\n\nexport class ZoneClientBackend extends\n ZoneMacroTaskWrapper<HttpRequest<any>, HttpEvent<any>> implements HttpBackend {\n/**\n * @param {?} backend\n */\nconstructor(private backend: HttpBackend) { super(); }\n/**\n * @param {?} request\n * @return {?}\n */\nhandle(request: HttpRequest<any>): Observable<HttpEvent<any>> { return this.wrap(request); }\n/**\n * @param {?} request\n * @return {?}\n */\nprotected delegate(request: HttpRequest<any>): Observable<HttpEvent<any>> {\n return this.backend.handle(request);\n }\n}\n\nfunction ZoneClientBackend_tsickle_Closure_declarations() {\n/** @type {?} */\nZoneClientBackend.prototype.backend;\n}\n\n/**\n * @param {?} xhrBackend\n * @param {?} options\n * @return {?}\n */\nexport function httpFactory(xhrBackend: XHRBackend, options: RequestOptions) {\n const /** @type {?} */ macroBackend = new ZoneMacroTaskBackend(xhrBackend);\n return new Http(macroBackend, options);\n}\n/**\n * @param {?} backend\n * @param {?} interceptors\n * @return {?}\n */\nexport function zoneWrappedInterceptingHandler(\n backend: HttpBackend, interceptors: HttpInterceptor[] | null) {\n const /** @type {?} */ realBackend: HttpBackend = interceptingHandler(backend, interceptors);\n return new ZoneClientBackend(realBackend);\n}\n\nexport const /** @type {?} */ SERVER_HTTP_PROVIDERS: Provider[] = [\n {provide: Http, useFactory: httpFactory, deps: [XHRBackend, RequestOptions]},\n {provide: BrowserXhr, useClass: ServerXhr}, {provide: XSRFStrategy, useClass: ServerXsrfStrategy},\n {provide: XhrFactory, useClass: ServerXhr}, {\n provide: HttpHandler,\n useFactory: zoneWrappedInterceptingHandler,\n deps: [HttpBackend, [new Optional(), HTTP_INTERCEPTORS]]\n }\n];\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\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 parse5 = require('parse5');\n\nimport {Injectable, Inject} from '@angular/core';\nimport {DOCUMENT, ɵgetDOM as getDOM} from '@angular/platform-browser';\n/**\n * Representation of the current platform state.\n * \n * \\@experimental\n */\nexport class PlatformState {\n/**\n * @param {?} _doc\n */\nconstructor(\nprivate _doc: any) {}\n/**\n * Renders the current state of the platform to string.\n * @return {?}\n */\nrenderToString(): string { return getDOM().getInnerHTML(this._doc); }\n/**\n * Returns the current DOM state.\n * @return {?}\n */\ngetDocument(): any { return this._doc; }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: undefined, decorators: [{ type: Inject, args: [DOCUMENT, ] }, ]},\n];\n}\n\nfunction PlatformState_tsickle_Closure_declarations() {\n/** @type {?} */\nPlatformState.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nPlatformState.ctorParameters;\n/** @type {?} */\nPlatformState.prototype._doc;\n}\n\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator.throw(value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [0, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { if (o[n]) i[n] = function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; }; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator];\r\n return m ? m.call(o) : typeof __values === \"function\" ? __values(o) : o[Symbol.iterator]();\r\n}"],"names":["first","filter","toPromise","ApplicationRef","ɵTRANSITION_ID","HttpModule","HttpClientModule","NoopAnimationsModule","BrowserModule","NgModule","SharedStylesHost","RendererFactory2","ɵAnimationRendererFactory","PLATFORM_ID","ɵPLATFORM_SERVER_ID","ALLOW_MULTIPLE_PLATFORMS","Injector","Injectable","ɵSharedStylesHost","ɵgetDOM","tslib_1.__extends","shimHostAttribute","ɵNAMESPACE_URIS","getDOM","ɵflattenStyles","ViewEncapsulation","ɵDomAdapter","CssSelector","SelectorMatcher","Subject","parse","XhrFactory","BrowserXhr","XSRFStrategy","Http","XHRBackend","RequestOptions","ɵinterceptingHandler","Observable"],"mappings":"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"}
1
+ {"version":3,"file":"platform-server.umd.js","sources":["../../../../packages/platform-server/src/private_export.ts","../../../../packages/platform-server/src/utils.ts","../../../../packages/platform-server/src/server.ts","../../../../packages/platform-server/src/styles_host.ts","../../../../packages/platform-server/src/server_renderer.ts","../../../../packages/platform-server/src/parse5_adapter.ts","../../../../packages/platform-server/src/location.ts","../../../../packages/platform-server/src/tokens.ts","../../../../packages/platform-server/src/http.ts","../../../../packages/platform-server/src/platform_state.ts","../../../../node_modules/tslib/tslib.es6.js"],"sourcesContent":["/**\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\nexport {INTERNAL_SERVER_PLATFORM_PROVIDERS as ɵINTERNAL_SERVER_PLATFORM_PROVIDERS, SERVER_RENDER_PROVIDERS as ɵSERVER_RENDER_PROVIDERS} from './server';\nexport {ServerRendererFactory2 as ɵServerRendererFactory2} from './server_renderer';","/**\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\nimport {ApplicationRef, NgModuleFactory, NgModuleRef, PlatformRef, Provider, Type} from '@angular/core';\nimport {ɵTRANSITION_ID} from '@angular/platform-browser';\nimport {filter} from 'rxjs/operator/filter';\nimport {first} from 'rxjs/operator/first';\nimport {toPromise} from 'rxjs/operator/toPromise';\n\nimport {PlatformState} from './platform_state';\nimport {platformDynamicServer, platformServer} from './server';\nimport {INITIAL_CONFIG} from './tokens';\n\nconst /** @type {?} */ parse5 = require('parse5');\n\ninterface PlatformOptions {\n document?: string;\n url?: string;\n extraProviders?: Provider[];\n}\n/**\n * @param {?} platformFactory\n * @param {?} options\n * @return {?}\n */\nfunction _getPlatform(\n platformFactory: (extraProviders: Provider[]) => PlatformRef,\n options: PlatformOptions): PlatformRef {\n const /** @type {?} */ extraProviders = options.extraProviders ? options.extraProviders : [];\n return platformFactory([\n {provide: INITIAL_CONFIG, useValue: {document: options.document, url: options.url}},\n extraProviders\n ]);\n}\n/**\n * @template T\n * @param {?} platform\n * @param {?} moduleRefPromise\n * @return {?}\n */\nfunction _render<T>(\n platform: PlatformRef, moduleRefPromise: Promise<NgModuleRef<T>>): Promise<string> {\n return moduleRefPromise.then((moduleRef) => {\n const /** @type {?} */ transitionId = moduleRef.injector.get(ɵTRANSITION_ID, null);\n if (!transitionId) {\n throw new Error(\n `renderModule[Factory]() requires the use of BrowserModule.withServerTransition() to ensure\nthe server-rendered app can be properly bootstrapped into a client app.`);\n }\n const /** @type {?} */ applicationRef: ApplicationRef = moduleRef.injector.get(ApplicationRef);\n return toPromise\n .call(first.call(filter.call(applicationRef.isStable, (isStable: boolean) => isStable)))\n .then(() => {\n const /** @type {?} */ output = platform.injector.get(PlatformState).renderToString();\n platform.destroy();\n return output;\n });\n });\n}\n/**\n * Renders a Module to string.\n * \n * `document` is the full document HTML of the page to render, as a string.\n * `url` is the URL for the current render request.\n * `extraProviders` are the platform level providers for the current render request.\n * \n * Do not use this in a production server environment. Use pre-compiled {\\@link NgModuleFactory} with\n * {\\@link renderModuleFactory} instead.\n * \n * \\@experimental\n * @template T\n * @param {?} module\n * @param {?} options\n * @return {?}\n */\nexport function renderModule<T>(\n module: Type<T>,\n options: {document?: string, url?: string, extraProviders?: Provider[]}): Promise<string> {\n const /** @type {?} */ platform = _getPlatform(platformDynamicServer, options);\n return _render(platform, platform.bootstrapModule(module));\n}\n/**\n * Renders a {\\@link NgModuleFactory} to string.\n * \n * `document` is the full document HTML of the page to render, as a string.\n * `url` is the URL for the current render request.\n * `extraProviders` are the platform level providers for the current render request.\n * \n * \\@experimental\n * @template T\n * @param {?} moduleFactory\n * @param {?} options\n * @return {?}\n */\nexport function renderModuleFactory<T>(\n moduleFactory: NgModuleFactory<T>,\n options: {document?: string, url?: string, extraProviders?: Provider[]}): Promise<string> {\n const /** @type {?} */ platform = _getPlatform(platformServer, options);\n return _render(platform, platform.bootstrapModuleFactory(moduleFactory));\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\nimport {ɵAnimationEngine} from '@angular/animations/browser';\nimport {PlatformLocation, ɵPLATFORM_SERVER_ID as PLATFORM_SERVER_ID} from '@angular/common';\nimport {HttpClientModule} from '@angular/common/http';\nimport {platformCoreDynamic} from '@angular/compiler';\nimport {Injectable, InjectionToken, Injector, NgModule, NgZone, PLATFORM_ID, PLATFORM_INITIALIZER, PlatformRef, Provider, RendererFactory2, RootRenderer, Testability, createPlatformFactory, isDevMode, platformCore, ɵALLOW_MULTIPLE_PLATFORMS as ALLOW_MULTIPLE_PLATFORMS} from '@angular/core';\nimport {HttpModule} from '@angular/http';\nimport {BrowserModule, DOCUMENT, ɵSharedStylesHost as SharedStylesHost, ɵgetDOM as getDOM} from '@angular/platform-browser';\nimport {NoopAnimationsModule, ɵAnimationRendererFactory} from '@angular/platform-browser/animations';\n\nimport {SERVER_HTTP_PROVIDERS} from './http';\nimport {ServerPlatformLocation} from './location';\nimport {Parse5DomAdapter, parseDocument} from './parse5_adapter';\nimport {PlatformState} from './platform_state';\nimport {ServerRendererFactory2} from './server_renderer';\nimport {ServerStylesHost} from './styles_host';\nimport {INITIAL_CONFIG, PlatformConfig} from './tokens';\n/**\n * @param {?} feature\n * @return {?}\n */\nfunction notSupported(feature: string): Error {\n throw new Error(`platform-server does not support '${feature}'.`);\n}\n\nexport const /** @type {?} */ INTERNAL_SERVER_PLATFORM_PROVIDERS: Array<any /*Type | Provider | any[]*/> = [\n {provide: DOCUMENT, useFactory: _document, deps: [Injector]},\n {provide: PLATFORM_ID, useValue: PLATFORM_SERVER_ID},\n {provide: PLATFORM_INITIALIZER, useFactory: initParse5Adapter, multi: true, deps: [Injector]},\n {provide: PlatformLocation, useClass: ServerPlatformLocation}, PlatformState,\n // Add special provider that allows multiple instances of platformServer* to be created.\n {provide: ALLOW_MULTIPLE_PLATFORMS, useValue: true}\n];\n/**\n * @param {?} injector\n * @return {?}\n */\nfunction initParse5Adapter(injector: Injector) {\n return () => { Parse5DomAdapter.makeCurrent(); };\n}\n/**\n * @param {?} renderer\n * @param {?} engine\n * @param {?} zone\n * @return {?}\n */\nexport function instantiateServerRendererFactory(\n renderer: RendererFactory2, engine: ɵAnimationEngine, zone: NgZone) {\n return new ɵAnimationRendererFactory(renderer, engine, zone);\n}\n\nexport const /** @type {?} */ SERVER_RENDER_PROVIDERS: Provider[] = [\n ServerRendererFactory2,\n {\n provide: RendererFactory2,\n useFactory: instantiateServerRendererFactory,\n deps: [ServerRendererFactory2, ɵAnimationEngine, NgZone]\n },\n ServerStylesHost,\n {provide: SharedStylesHost, useExisting: ServerStylesHost},\n];\n/**\n * The ng module for the server.\n * \n * \\@experimental\n */\nexport class ServerModule {\nstatic decorators: DecoratorInvocation[] = [\n{ type: NgModule, args: [{\n exports: [BrowserModule],\n imports: [HttpModule, HttpClientModule, NoopAnimationsModule],\n providers: [\n SERVER_RENDER_PROVIDERS,\n SERVER_HTTP_PROVIDERS,\n {provide: Testability, useValue: null},\n ],\n}, ] },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n];\n}\n\nfunction ServerModule_tsickle_Closure_declarations() {\n/** @type {?} */\nServerModule.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nServerModule.ctorParameters;\n}\n\n/**\n * @param {?} injector\n * @return {?}\n */\nfunction _document(injector: Injector) {\n let /** @type {?} */ config: PlatformConfig|null = injector.get(INITIAL_CONFIG, null);\n if (config && config.document) {\n return parseDocument(config.document);\n } else {\n return getDOM().createHtmlDocument();\n }\n}\n/**\n * \\@experimental\n */\nexport const platformServer =\n createPlatformFactory(platformCore, 'server', INTERNAL_SERVER_PLATFORM_PROVIDERS);\n/**\n * The server platform that supports the runtime compiler.\n * \n * \\@experimental\n */\nexport const platformDynamicServer =\n createPlatformFactory(platformCoreDynamic, 'serverDynamic', INTERNAL_SERVER_PLATFORM_PROVIDERS);\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\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\nimport {ApplicationRef, Inject, Injectable, Optional} from '@angular/core';\nimport {DOCUMENT, ɵSharedStylesHost as SharedStylesHost, ɵTRANSITION_ID, ɵgetDOM as getDOM} from '@angular/platform-browser';\n\nimport {Parse5DomAdapter} from './parse5_adapter';\nexport class ServerStylesHost extends SharedStylesHost {\nprivate head: any = null;\n/**\n * @param {?} doc\n * @param {?} transitionId\n */\nconstructor(\nprivate doc: any,\nprivate transitionId: string) {\n super();\n this.head = getDOM().getElementsByTagName(doc, 'head')[0];\n }\n/**\n * @param {?} style\n * @return {?}\n */\nprivate _addStyle(style: string): void {\n let /** @type {?} */ adapter: Parse5DomAdapter = /** @type {?} */(( getDOM() as Parse5DomAdapter));\n const /** @type {?} */ el = adapter.createElement('style');\n adapter.setText(el, style);\n if (!!this.transitionId) {\n adapter.setAttribute(el, 'ng-transition', this.transitionId);\n }\n adapter.appendChild(this.head, el);\n }\n/**\n * @param {?} additions\n * @return {?}\n */\nonStylesAdded(additions: Set<string>) { additions.forEach(style => this._addStyle(style)); }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: undefined, decorators: [{ type: Inject, args: [DOCUMENT, ] }, ]},\n{type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [ɵTRANSITION_ID, ] }, ]},\n];\n}\n\nfunction ServerStylesHost_tsickle_Closure_declarations() {\n/** @type {?} */\nServerStylesHost.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nServerStylesHost.ctorParameters;\n/** @type {?} */\nServerStylesHost.prototype.head;\n/** @type {?} */\nServerStylesHost.prototype.doc;\n/** @type {?} */\nServerStylesHost.prototype.transitionId;\n}\n\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\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\nimport {DomElementSchemaRegistry} from '@angular/compiler';\nimport {APP_ID, Inject, Injectable, NgZone, RenderComponentType, Renderer, Renderer2, RendererFactory2, RendererStyleFlags2, RendererType2, RootRenderer, ViewEncapsulation, ɵstringify as stringify} from '@angular/core';\nimport {DOCUMENT, ɵNAMESPACE_URIS as NAMESPACE_URIS, ɵSharedStylesHost as SharedStylesHost, ɵflattenStyles as flattenStyles, ɵgetDOM as getDOM, ɵshimContentAttribute as shimContentAttribute, ɵshimHostAttribute as shimHostAttribute} from '@angular/platform-browser';\n\nconst /** @type {?} */ EMPTY_ARRAY: any[] = [];\nexport class ServerRendererFactory2 implements RendererFactory2 {\nprivate rendererByCompId = new Map<string, Renderer2>();\nprivate defaultRenderer: Renderer2;\nprivate schema = new DomElementSchemaRegistry();\n/**\n * @param {?} ngZone\n * @param {?} document\n * @param {?} sharedStylesHost\n */\nconstructor(\nprivate ngZone: NgZone,\nprivate document: any,\nprivate sharedStylesHost: SharedStylesHost) {\n this.defaultRenderer = new DefaultServerRenderer2(document, ngZone, this.schema);\n }\n/**\n * @param {?} element\n * @param {?} type\n * @return {?}\n */\ncreateRenderer(element: any, type: RendererType2|null): Renderer2 {\n if (!element || !type) {\n return this.defaultRenderer;\n }\n switch (type.encapsulation) {\n case ViewEncapsulation.Native:\n case ViewEncapsulation.Emulated: {\n let /** @type {?} */ renderer = this.rendererByCompId.get(type.id);\n if (!renderer) {\n renderer = new EmulatedEncapsulationServerRenderer2(\n this.document, this.ngZone, this.sharedStylesHost, this.schema, type);\n this.rendererByCompId.set(type.id, renderer);\n }\n ( /** @type {?} */((<EmulatedEncapsulationServerRenderer2>renderer))).applyToHost(element);\n return renderer;\n }\n case ViewEncapsulation.Native:\n throw new Error('Native encapsulation is not supported on the server!');\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 */\nbegin() {}\n/**\n * @return {?}\n */\nend() {}\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: NgZone, },\n{type: undefined, decorators: [{ type: Inject, args: [DOCUMENT, ] }, ]},\n{type: SharedStylesHost, },\n];\n}\n\nfunction ServerRendererFactory2_tsickle_Closure_declarations() {\n/** @type {?} */\nServerRendererFactory2.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nServerRendererFactory2.ctorParameters;\n/** @type {?} */\nServerRendererFactory2.prototype.rendererByCompId;\n/** @type {?} */\nServerRendererFactory2.prototype.defaultRenderer;\n/** @type {?} */\nServerRendererFactory2.prototype.schema;\n/** @type {?} */\nServerRendererFactory2.prototype.ngZone;\n/** @type {?} */\nServerRendererFactory2.prototype.document;\n/** @type {?} */\nServerRendererFactory2.prototype.sharedStylesHost;\n}\n\nclass DefaultServerRenderer2 implements Renderer2 {\n data: {[key: string]: any} = Object.create(null);\n/**\n * @param {?} document\n * @param {?} ngZone\n * @param {?} schema\n */\nconstructor(\nprivate document: any,\nprivate ngZone: NgZone,\nprivate schema: DomElementSchemaRegistry) {}\n/**\n * @return {?}\n */\ndestroy(): void {}\n\n destroyNode: null;\n/**\n * @param {?} name\n * @param {?=} namespace\n * @param {?=} debugInfo\n * @return {?}\n */\ncreateElement(name: string, namespace?: string, debugInfo?: any): any {\n if (namespace) {\n return getDOM().createElementNS(NAMESPACE_URIS[namespace], name);\n }\n\n return getDOM().createElement(name);\n }\n/**\n * @param {?} value\n * @param {?=} debugInfo\n * @return {?}\n */\ncreateComment(value: string, debugInfo?: any): any { return getDOM().createComment(value); }\n/**\n * @param {?} value\n * @param {?=} debugInfo\n * @return {?}\n */\ncreateText(value: string, debugInfo?: any): any { return getDOM().createTextNode(value); }\n/**\n * @param {?} parent\n * @param {?} newChild\n * @return {?}\n */\nappendChild(parent: any, newChild: any): void { getDOM().appendChild(parent, newChild); }\n/**\n * @param {?} parent\n * @param {?} newChild\n * @param {?} refChild\n * @return {?}\n */\ninsertBefore(parent: any, newChild: any, refChild: any): void {\n if (parent) {\n getDOM().insertBefore(parent, refChild, newChild);\n }\n }\n/**\n * @param {?} parent\n * @param {?} oldChild\n * @return {?}\n */\nremoveChild(parent: any, oldChild: any): void {\n if (parent) {\n getDOM().removeChild(parent, oldChild);\n }\n }\n/**\n * @param {?} selectorOrNode\n * @param {?=} debugInfo\n * @return {?}\n */\nselectRootElement(selectorOrNode: string|any, debugInfo?: any): any {\n let /** @type {?} */ el: any;\n if (typeof selectorOrNode === 'string') {\n el = getDOM().querySelector(this.document, selectorOrNode);\n if (!el) {\n throw new Error(`The selector \"${selectorOrNode}\" did not match any elements`);\n }\n } else {\n el = selectorOrNode;\n }\n getDOM().clearNodes(el);\n return el;\n }\n/**\n * @param {?} node\n * @return {?}\n */\nparentNode(node: any): any { return getDOM().parentElement(node); }\n/**\n * @param {?} node\n * @return {?}\n */\nnextSibling(node: any): any { return getDOM().nextSibling(node); }\n/**\n * @param {?} el\n * @param {?} name\n * @param {?} value\n * @param {?=} namespace\n * @return {?}\n */\nsetAttribute(el: any, name: string, value: string, namespace?: string): void {\n if (namespace) {\n getDOM().setAttributeNS(el, NAMESPACE_URIS[namespace], namespace + ':' + name, value);\n } else {\n getDOM().setAttribute(el, name, value);\n }\n }\n/**\n * @param {?} el\n * @param {?} name\n * @param {?=} namespace\n * @return {?}\n */\nremoveAttribute(el: any, name: string, namespace?: string): void {\n if (namespace) {\n getDOM().removeAttributeNS(el, NAMESPACE_URIS[namespace], name);\n } else {\n getDOM().removeAttribute(el, name);\n }\n }\n/**\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\naddClass(el: any, name: string): void { getDOM().addClass(el, name); }\n/**\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\nremoveClass(el: any, name: string): void { getDOM().removeClass(el, name); }\n/**\n * @param {?} el\n * @param {?} style\n * @param {?} value\n * @param {?} flags\n * @return {?}\n */\nsetStyle(el: any, style: string, value: any, flags: RendererStyleFlags2): void {\n getDOM().setStyle(el, style, value);\n }\n/**\n * @param {?} el\n * @param {?} style\n * @param {?} flags\n * @return {?}\n */\nremoveStyle(el: any, style: string, flags: RendererStyleFlags2): void {\n getDOM().removeStyle(el, style);\n }\n/**\n * @param {?} tagName\n * @param {?} propertyName\n * @return {?}\n */\nprivate _isSafeToReflectProperty(tagName: string, propertyName: string): boolean {\n return this.schema.securityContext(tagName, propertyName, true) ===\n this.schema.securityContext(tagName, propertyName, false);\n }\n/**\n * @param {?} el\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\nsetProperty(el: any, name: string, value: any): void {\n checkNoSyntheticProp(name, 'property');\n getDOM().setProperty(el, name, value);\n // Mirror property values for known HTML element properties in the attributes.\n const /** @type {?} */ tagName = ( /** @type {?} */((el.tagName as string))).toLowerCase();\n if (value != null && (typeof value === 'number' || typeof value == 'string') &&\n this.schema.hasElement(tagName, EMPTY_ARRAY) &&\n this.schema.hasProperty(tagName, name, EMPTY_ARRAY) &&\n this._isSafeToReflectProperty(tagName, name)) {\n this.setAttribute(el, name, value.toString());\n }\n }\n/**\n * @param {?} node\n * @param {?} value\n * @return {?}\n */\nsetValue(node: any, value: string): void { getDOM().setText(node, value); }\n/**\n * @param {?} target\n * @param {?} eventName\n * @param {?} callback\n * @return {?}\n */\nlisten(\n target: 'document'|'window'|'body'|any, eventName: string,\n callback: (event: any) => boolean): () => void {\n // Note: We are not using the EventsPlugin here as this is not needed\n // to run our tests.\n checkNoSyntheticProp(eventName, 'listener');\n const /** @type {?} */ el =\n typeof target === 'string' ? getDOM().getGlobalEventTarget(this.document, target) : target;\n const /** @type {?} */ outsideHandler = (event: any) => this.ngZone.runGuarded(() => callback(event));\n return this.ngZone.runOutsideAngular(() => getDOM().onAndCancel(el, eventName, outsideHandler));\n }\n}\n\nfunction DefaultServerRenderer2_tsickle_Closure_declarations() {\n/** @type {?} */\nDefaultServerRenderer2.prototype.data;\n/** @type {?} */\nDefaultServerRenderer2.prototype.destroyNode;\n/** @type {?} */\nDefaultServerRenderer2.prototype.document;\n/** @type {?} */\nDefaultServerRenderer2.prototype.ngZone;\n/** @type {?} */\nDefaultServerRenderer2.prototype.schema;\n}\n\n\nconst /** @type {?} */ AT_CHARCODE = '@'.charCodeAt(0);\n/**\n * @param {?} name\n * @param {?} nameKind\n * @return {?}\n */\nfunction checkNoSyntheticProp(name: string, nameKind: string) {\n if (name.charCodeAt(0) === AT_CHARCODE) {\n throw new Error(\n `Found the synthetic ${nameKind} ${name}. Please include either \"BrowserAnimationsModule\" or \"NoopAnimationsModule\" in your application.`);\n }\n}\nclass EmulatedEncapsulationServerRenderer2 extends DefaultServerRenderer2 {\nprivate contentAttr: string;\nprivate hostAttr: string;\n/**\n * @param {?} document\n * @param {?} ngZone\n * @param {?} sharedStylesHost\n * @param {?} schema\n * @param {?} component\n */\nconstructor(\n document: any, ngZone: NgZone, sharedStylesHost: SharedStylesHost,\n schema: DomElementSchemaRegistry,\nprivate component: RendererType2) {\n super(document, ngZone, schema);\n const styles = flattenStyles(component.id, component.styles, []);\n sharedStylesHost.addStyles(styles);\n\n this.contentAttr = shimContentAttribute(component.id);\n this.hostAttr = shimHostAttribute(component.id);\n }\n/**\n * @param {?} element\n * @return {?}\n */\napplyToHost(element: any) { super.setAttribute(element, this.hostAttr, ''); }\n/**\n * @param {?} parent\n * @param {?} name\n * @return {?}\n */\ncreateElement(parent: any, name: string): Element {\n const /** @type {?} */ el = super.createElement(parent, name);\n super.setAttribute(el, this.contentAttr, '');\n return el;\n }\n}\n\nfunction EmulatedEncapsulationServerRenderer2_tsickle_Closure_declarations() {\n/** @type {?} */\nEmulatedEncapsulationServerRenderer2.prototype.contentAttr;\n/** @type {?} */\nEmulatedEncapsulationServerRenderer2.prototype.hostAttr;\n/** @type {?} */\nEmulatedEncapsulationServerRenderer2.prototype.component;\n}\n\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\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 parse5 = require('parse5');\n\nimport {ɵglobal as global} from '@angular/core';\nimport {ɵDomAdapter as DomAdapter, ɵsetRootDomAdapter as setRootDomAdapter} from '@angular/platform-browser';\nimport {SelectorMatcher, CssSelector} from '@angular/compiler';\n\nlet /** @type {?} */ treeAdapter: any;\n\nconst /** @type {?} */ _attrToPropMap: {[key: string]: string} = {\n 'class': 'className',\n 'innerHtml': 'innerHTML',\n 'readonly': 'readOnly',\n 'tabindex': 'tabIndex',\n};\n\nconst /** @type {?} */ mapProps = ['attribs', 'x-attribsNamespace', 'x-attribsPrefix'];\n/**\n * @param {?} methodName\n * @return {?}\n */\nfunction _notImplemented(methodName: string) {\n return new Error('This method is not implemented in Parse5DomAdapter: ' + methodName);\n}\n/**\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\nfunction _getElement(el: any, name: string) {\n for (let /** @type {?} */ i = 0; i < el.childNodes.length; i++) {\n let /** @type {?} */ node = el.childNodes[i];\n if (node.name === name) {\n return node;\n }\n }\n return null;\n}\n/**\n * Parses a document string to a Document object.\n * @param {?} html\n * @return {?}\n */\nexport function parseDocument(html: string) {\n let /** @type {?} */ doc = parse5.parse(html, {treeAdapter: parse5.treeAdapters.htmlparser2});\n let /** @type {?} */ docElement = _getElement(doc, 'html');\n doc['head'] = _getElement(docElement, 'head');\n doc['body'] = _getElement(docElement, 'body');\n doc['_window'] = {};\n return doc;\n}\n/**\n * A `DomAdapter` powered by the `parse5` NodeJS module.\n * \n * \\@security Tread carefully! Interacting with the DOM directly is dangerous and\n * can introduce XSS risks.\n */\nexport class Parse5DomAdapter extends DomAdapter {\n/**\n * @return {?}\n */\nstatic makeCurrent() {\n treeAdapter = parse5.treeAdapters.htmlparser2;\n setRootDomAdapter(new Parse5DomAdapter());\n }\n/**\n * @param {?} nodeA\n * @param {?} nodeB\n * @return {?}\n */\ncontains(nodeA: any, nodeB: any): boolean {\n let /** @type {?} */ inner = nodeB;\n while (inner) {\n if (inner === nodeA) return true;\n inner = inner.parent;\n }\n return false;\n }\n/**\n * @param {?} element\n * @param {?} name\n * @return {?}\n */\nhasProperty(element: any, name: string): boolean {\n return _HTMLElementPropertyList.indexOf(name) > -1;\n }\n/**\n * @param {?} el\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\nsetProperty(el: any, name: string, value: any) {\n if (name === 'innerHTML') {\n this.setInnerHTML(el, value);\n } else if (name === 'innerText') {\n this.setText(el, value);\n } else if (name === 'className') {\n el.attribs['class'] = el.className = value;\n } else {\n // Store the property in a separate property bag so that it doesn't clobber\n // actual parse5 properties on the Element.\n el.properties = el.properties || {};\n el.properties[name] = value;\n }\n }\n/**\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\ngetProperty(el: any, name: string): any {\n return el.properties ? el.properties[name] : undefined;\n }\n/**\n * @param {?} error\n * @return {?}\n */\nlogError(error: string) { console.error(error); }\n/**\n * @param {?} error\n * @return {?}\n */\nlog(error: string) { console.log(error); }\n/**\n * @param {?} error\n * @return {?}\n */\nlogGroup(error: string) { console.error(error); }\n/**\n * @return {?}\n */\nlogGroupEnd() {}\n/**\n * @return {?}\n */\nget attrToPropMap() { return _attrToPropMap; }\n/**\n * @param {?} el\n * @param {?} selector\n * @return {?}\n */\nquerySelector(el: any, selector: string): any {\n return this.querySelectorAll(el, selector)[0] || null;\n }\n/**\n * @param {?} el\n * @param {?} selector\n * @return {?}\n */\nquerySelectorAll(el: any, selector: string): any[] {\n const /** @type {?} */ res: any[] = [];\n const /** @type {?} */ _recursive = (result: any, node: any, selector: any, matcher: any) => {\n const /** @type {?} */ cNodes = node.childNodes;\n if (cNodes && cNodes.length > 0) {\n for (let /** @type {?} */ i = 0; i < cNodes.length; i++) {\n const /** @type {?} */ childNode = cNodes[i];\n if (this.elementMatches(childNode, selector, matcher)) {\n result.push(childNode);\n }\n _recursive(result, childNode, selector, matcher);\n }\n }\n };\n const /** @type {?} */ matcher = new SelectorMatcher();\n matcher.addSelectables(CssSelector.parse(selector));\n _recursive(res, el, selector, matcher);\n return res;\n }\n/**\n * @param {?} node\n * @param {?} selector\n * @param {?=} matcher\n * @return {?}\n */\nelementMatches(node: any, selector: string, matcher: any = null): boolean {\n if (this.isElementNode(node) && selector === '*') {\n return true;\n }\n let /** @type {?} */ result = false;\n if (selector && selector.charAt(0) == '#') {\n result = this.getAttribute(node, 'id') == selector.substring(1);\n } else if (selector) {\n if (!matcher) {\n matcher = new SelectorMatcher();\n matcher.addSelectables(CssSelector.parse(selector));\n }\n\n const /** @type {?} */ cssSelector = new CssSelector();\n cssSelector.setElement(this.tagName(node));\n if (node.attribs) {\n for (const /** @type {?} */ attrName in node.attribs) {\n cssSelector.addAttribute(attrName, node.attribs[attrName]);\n }\n }\n const /** @type {?} */ classList = this.classList(node);\n for (let /** @type {?} */ i = 0; i < classList.length; i++) {\n cssSelector.addClassName(classList[i]);\n }\n\n matcher.match(cssSelector, function(selector: any, cb: any) { result = true; });\n }\n return result;\n }\n/**\n * @param {?} el\n * @param {?} evt\n * @param {?} listener\n * @return {?}\n */\non(el: any, evt: any, listener: any) {\n let /** @type {?} */ listenersMap: {[k: string]: any} = el._eventListenersMap;\n if (!listenersMap) {\n listenersMap = {};\n el._eventListenersMap = listenersMap;\n }\n const /** @type {?} */ listeners = listenersMap[evt] || [];\n listenersMap[evt] = [...listeners, listener];\n }\n/**\n * @param {?} el\n * @param {?} evt\n * @param {?} listener\n * @return {?}\n */\nonAndCancel(el: any, evt: any, listener: any): Function {\n this.on(el, evt, listener);\n return () => { remove( /** @type {?} */((<any[]>(el._eventListenersMap[evt]))), listener); };\n }\n/**\n * @param {?} el\n * @param {?} evt\n * @return {?}\n */\ndispatchEvent(el: any, evt: any) {\n if (!evt.target) {\n evt.target = el;\n }\n if (el._eventListenersMap) {\n const /** @type {?} */ listeners: any = el._eventListenersMap[evt.type];\n if (listeners) {\n for (let /** @type {?} */ i = 0; i < listeners.length; i++) {\n listeners[i](evt);\n }\n }\n }\n if (el.parent) {\n this.dispatchEvent(el.parent, evt);\n }\n if (el._window) {\n this.dispatchEvent(el._window, evt);\n }\n }\n/**\n * @param {?} eventType\n * @return {?}\n */\ncreateMouseEvent(eventType: any): Event { return this.createEvent(eventType); }\n/**\n * @param {?} eventType\n * @return {?}\n */\ncreateEvent(eventType: string): Event {\n const /** @type {?} */ event = /** @type {?} */(( <Event>{\n type: eventType,\n defaultPrevented: false,\n preventDefault: () => { ( /** @type {?} */((<any>event))).defaultPrevented = true; }\n }));\n return event;\n }\n/**\n * @param {?} event\n * @return {?}\n */\npreventDefault(event: any) { event.returnValue = false; }\n/**\n * @param {?} event\n * @return {?}\n */\nisPrevented(event: any): boolean { return event.returnValue != null && !event.returnValue; }\n/**\n * @param {?} el\n * @return {?}\n */\ngetInnerHTML(el: any): string {\n return parse5.serialize(this.templateAwareRoot(el), {treeAdapter});\n }\n/**\n * @param {?} el\n * @return {?}\n */\ngetTemplateContent(el: any): Node|null { return null; }\n/**\n * @param {?} el\n * @return {?}\n */\ngetOuterHTML(el: any): string {\n const /** @type {?} */ fragment = treeAdapter.createDocumentFragment();\n this.appendChild(fragment, el);\n return parse5.serialize(fragment, {treeAdapter});\n }\n/**\n * @param {?} node\n * @return {?}\n */\nnodeName(node: any): string { return node.tagName; }\n/**\n * @param {?} node\n * @return {?}\n */\nnodeValue(node: any): string { return node.nodeValue; }\n/**\n * @param {?} node\n * @return {?}\n */\ntype(node: any): string { throw _notImplemented('type'); }\n/**\n * @param {?} node\n * @return {?}\n */\ncontent(node: any): string { return node.childNodes[0]; }\n/**\n * @param {?} el\n * @return {?}\n */\nfirstChild(el: any): Node { return el.firstChild; }\n/**\n * @param {?} el\n * @return {?}\n */\nnextSibling(el: any): Node { return el.nextSibling; }\n/**\n * @param {?} el\n * @return {?}\n */\nparentElement(el: any): Node { return el.parent; }\n/**\n * @param {?} el\n * @return {?}\n */\nchildNodes(el: any): Node[] { return el.childNodes; }\n/**\n * @param {?} el\n * @return {?}\n */\nchildNodesAsList(el: any): any[] {\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 */\nclearNodes(el: any) {\n while (el.childNodes.length > 0) {\n this.remove(el.childNodes[0]);\n }\n }\n/**\n * @param {?} el\n * @param {?} node\n * @return {?}\n */\nappendChild(el: any, node: any) {\n this.remove(node);\n treeAdapter.appendChild(this.templateAwareRoot(el), node);\n }\n/**\n * @param {?} el\n * @param {?} node\n * @return {?}\n */\nremoveChild(el: any, node: any) {\n if (el.childNodes.indexOf(node) > -1) {\n this.remove(node);\n }\n }\n/**\n * @param {?} el\n * @return {?}\n */\nremove(el: any): HTMLElement {\n const /** @type {?} */ parent = el.parent;\n if (parent) {\n const /** @type {?} */ index = parent.childNodes.indexOf(el);\n parent.childNodes.splice(index, 1);\n }\n const /** @type {?} */ prev = el.previousSibling;\n const /** @type {?} */ next = el.nextSibling;\n if (prev) {\n prev.next = next;\n }\n if (next) {\n next.prev = prev;\n }\n el.prev = null;\n el.next = null;\n el.parent = null;\n return el;\n }\n/**\n * @param {?} parent\n * @param {?} ref\n * @param {?} newNode\n * @return {?}\n */\ninsertBefore(parent: any, ref: any, newNode: any) {\n this.remove(newNode);\n if (ref) {\n treeAdapter.insertBefore(parent, newNode, ref);\n } else {\n this.appendChild(parent, newNode);\n }\n }\n/**\n * @param {?} parent\n * @param {?} ref\n * @param {?} nodes\n * @return {?}\n */\ninsertAllBefore(parent: any, ref: any, nodes: any) {\n nodes.forEach((n: any) => this.insertBefore(parent, ref, n));\n }\n/**\n * @param {?} parent\n * @param {?} ref\n * @param {?} node\n * @return {?}\n */\ninsertAfter(parent: any, ref: any, node: any) {\n if (ref.nextSibling) {\n this.insertBefore(parent, ref.nextSibling, node);\n } else {\n this.appendChild(parent, node);\n }\n }\n/**\n * @param {?} el\n * @param {?} value\n * @return {?}\n */\nsetInnerHTML(el: any, value: any) {\n this.clearNodes(el);\n const /** @type {?} */ content = parse5.parseFragment(value, {treeAdapter});\n for (let /** @type {?} */ i = 0; i < content.childNodes.length; i++) {\n treeAdapter.appendChild(el, content.childNodes[i]);\n }\n }\n/**\n * @param {?} el\n * @param {?=} isRecursive\n * @return {?}\n */\ngetText(el: any, isRecursive?: boolean): string {\n if (this.isTextNode(el)) {\n return el.data;\n }\n\n if (this.isCommentNode(el)) {\n // In the DOM, comments within an element return an empty string for textContent\n // However, comment node instances return the comment content for textContent getter\n return isRecursive ? '' : el.data;\n }\n\n if (!el.childNodes || el.childNodes.length == 0) {\n return '';\n }\n\n let /** @type {?} */ textContent = '';\n for (let /** @type {?} */ i = 0; i < el.childNodes.length; i++) {\n textContent += this.getText(el.childNodes[i], true);\n }\n return textContent;\n }\n/**\n * @param {?} el\n * @param {?} value\n * @return {?}\n */\nsetText(el: any, value: string) {\n if (this.isTextNode(el) || this.isCommentNode(el)) {\n el.data = value;\n } else {\n this.clearNodes(el);\n if (value !== '') treeAdapter.insertText(el, value);\n }\n }\n/**\n * @param {?} el\n * @return {?}\n */\ngetValue(el: any): string { return el.value; }\n/**\n * @param {?} el\n * @param {?} value\n * @return {?}\n */\nsetValue(el: any, value: string) { el.value = value; }\n/**\n * @param {?} el\n * @return {?}\n */\ngetChecked(el: any): boolean { return el.checked; }\n/**\n * @param {?} el\n * @param {?} value\n * @return {?}\n */\nsetChecked(el: any, value: boolean) { el.checked = value; }\n/**\n * @param {?} text\n * @return {?}\n */\ncreateComment(text: string): Comment { return treeAdapter.createCommentNode(text); }\n/**\n * @param {?} html\n * @return {?}\n */\ncreateTemplate(html: any): HTMLElement {\n const /** @type {?} */ template = treeAdapter.createElement('template', 'http://www.w3.org/1999/xhtml', []);\n const /** @type {?} */ content = parse5.parseFragment(html, {treeAdapter});\n treeAdapter.setTemplateContent(template, content);\n return template;\n }\n/**\n * @param {?} tagName\n * @return {?}\n */\ncreateElement(tagName: any): HTMLElement {\n return treeAdapter.createElement(tagName, 'http://www.w3.org/1999/xhtml', []);\n }\n/**\n * @param {?} ns\n * @param {?} tagName\n * @return {?}\n */\ncreateElementNS(ns: any, tagName: any): HTMLElement {\n return treeAdapter.createElement(tagName, ns, []);\n }\n/**\n * @param {?} text\n * @return {?}\n */\ncreateTextNode(text: string): Text {\n const /** @type {?} */ t = /** @type {?} */(( <any>this.createComment(text)));\n t.type = 'text';\n return t;\n }\n/**\n * @param {?} attrName\n * @param {?} attrValue\n * @return {?}\n */\ncreateScriptTag(attrName: string, attrValue: string): HTMLElement {\n return treeAdapter.createElement(\n 'script', 'http://www.w3.org/1999/xhtml', [{name: attrName, value: attrValue}]);\n }\n/**\n * @param {?} css\n * @return {?}\n */\ncreateStyleElement(css: string): HTMLStyleElement {\n const /** @type {?} */ style = this.createElement('style');\n this.setText(style, css);\n return /** @type {?} */(( <HTMLStyleElement>style));\n }\n/**\n * @param {?} el\n * @return {?}\n */\ncreateShadowRoot(el: any): HTMLElement {\n el.shadowRoot = treeAdapter.createDocumentFragment();\n el.shadowRoot.parent = el;\n return el.shadowRoot;\n }\n/**\n * @param {?} el\n * @return {?}\n */\ngetShadowRoot(el: any): Element { return el.shadowRoot; }\n/**\n * @param {?} el\n * @return {?}\n */\ngetHost(el: any): string { return el.host; }\n/**\n * @param {?} el\n * @return {?}\n */\ngetDistributedNodes(el: any): Node[] { throw _notImplemented('getDistributedNodes'); }\n/**\n * @param {?} node\n * @return {?}\n */\nclone(node: Node): Node {\n const /** @type {?} */ _recursive = (node: any) => {\n const /** @type {?} */ nodeClone = Object.create(Object.getPrototypeOf(node));\n for (const /** @type {?} */ prop in node) {\n const /** @type {?} */ desc = Object.getOwnPropertyDescriptor(node, prop);\n if (desc && 'value' in desc && typeof desc.value !== 'object') {\n nodeClone[prop] = node[prop];\n }\n }\n nodeClone.parent = null;\n nodeClone.prev = null;\n nodeClone.next = null;\n nodeClone.children = null;\n\n mapProps.forEach(mapName => {\n if (node[mapName] != null) {\n nodeClone[mapName] = {};\n for (const /** @type {?} */ prop in node[mapName]) {\n nodeClone[mapName][prop] = node[mapName][prop];\n }\n }\n });\n const /** @type {?} */ cNodes = node.children;\n if (cNodes) {\n const /** @type {?} */ cNodesClone = new Array(cNodes.length);\n for (let /** @type {?} */ i = 0; i < cNodes.length; i++) {\n const /** @type {?} */ childNode = cNodes[i];\n const /** @type {?} */ childNodeClone = _recursive(childNode);\n cNodesClone[i] = childNodeClone;\n if (i > 0) {\n childNodeClone.prev = cNodesClone[i - 1];\n cNodesClone[i - 1].next = childNodeClone;\n }\n childNodeClone.parent = nodeClone;\n }\n nodeClone.children = cNodesClone;\n }\n return nodeClone;\n };\n return _recursive(node);\n }\n/**\n * @param {?} element\n * @param {?} name\n * @return {?}\n */\ngetElementsByClassName(element: any, name: string): HTMLElement[] {\n return this.querySelectorAll(element, '.' + name);\n }\n/**\n * @param {?} element\n * @param {?} name\n * @return {?}\n */\ngetElementsByTagName(element: any, name: string): HTMLElement[] {\n return this.querySelectorAll(element, name);\n }\n/**\n * @param {?} element\n * @return {?}\n */\nclassList(element: any): string[] {\n let /** @type {?} */ classAttrValue: any = null;\n const /** @type {?} */ attributes = element.attribs;\n\n if (attributes && attributes['class'] != null) {\n classAttrValue = attributes['class'];\n }\n return classAttrValue ? classAttrValue.trim().split(/\\s+/g) : [];\n }\n/**\n * @param {?} element\n * @param {?} className\n * @return {?}\n */\naddClass(element: any, className: string) {\n const /** @type {?} */ classList = this.classList(element);\n const /** @type {?} */ index = classList.indexOf(className);\n if (index == -1) {\n classList.push(className);\n element.attribs['class'] = element.className = classList.join(' ');\n }\n }\n/**\n * @param {?} element\n * @param {?} className\n * @return {?}\n */\nremoveClass(element: any, className: string) {\n const /** @type {?} */ classList = this.classList(element);\n const /** @type {?} */ index = classList.indexOf(className);\n if (index > -1) {\n classList.splice(index, 1);\n element.attribs['class'] = element.className = classList.join(' ');\n }\n }\n/**\n * @param {?} element\n * @param {?} className\n * @return {?}\n */\nhasClass(element: any, className: string): boolean {\n return this.classList(element).indexOf(className) > -1;\n }\n/**\n * @param {?} element\n * @param {?} styleName\n * @param {?=} styleValue\n * @return {?}\n */\nhasStyle(element: any, styleName: string, styleValue?: string): boolean {\n const /** @type {?} */ value = this.getStyle(element, styleName) || '';\n return styleValue ? value == styleValue : value.length > 0;\n }\n/**\n * \\@internal\n * @param {?} element\n * @return {?}\n */\n_readStyleAttribute(element: any) {\n const /** @type {?} */ styleMap = {};\n const /** @type {?} */ attributes = element.attribs;\n if (attributes && attributes['style'] != null) {\n const /** @type {?} */ styleAttrValue = attributes['style'];\n const /** @type {?} */ styleList = styleAttrValue.split(/;+/g);\n for (let /** @type {?} */ i = 0; i < styleList.length; i++) {\n if (styleList[i].length > 0) {\n const /** @type {?} */ style = /** @type {?} */(( styleList[i] as string));\n const /** @type {?} */ colon = style.indexOf(':');\n if (colon === -1) {\n throw new Error(`Invalid CSS style: ${style}`);\n }\n ( /** @type {?} */((styleMap as any)))[style.substr(0, colon).trim()] = style.substr(colon + 1).trim();\n }\n }\n }\n return styleMap;\n }\n/**\n * \\@internal\n * @param {?} element\n * @param {?} styleMap\n * @return {?}\n */\n_writeStyleAttribute(element: any, styleMap: any) {\n let /** @type {?} */ styleAttrValue = '';\n for (const /** @type {?} */ key in styleMap) {\n const /** @type {?} */ newValue = styleMap[key];\n if (newValue) {\n styleAttrValue += key + ':' + styleMap[key] + ';';\n }\n }\n element.attribs['style'] = styleAttrValue;\n }\n/**\n * @param {?} element\n * @param {?} styleName\n * @param {?=} styleValue\n * @return {?}\n */\nsetStyle(element: any, styleName: string, styleValue?: string|null) {\n const /** @type {?} */ styleMap = this._readStyleAttribute(element);\n ( /** @type {?} */((styleMap as any)))[styleName] = styleValue;\n this._writeStyleAttribute(element, styleMap);\n }\n/**\n * @param {?} element\n * @param {?} styleName\n * @return {?}\n */\nremoveStyle(element: any, styleName: string) { this.setStyle(element, styleName, null); }\n/**\n * @param {?} element\n * @param {?} styleName\n * @return {?}\n */\ngetStyle(element: any, styleName: string): string {\n const /** @type {?} */ styleMap = this._readStyleAttribute(element);\n return styleMap.hasOwnProperty(styleName) ? ( /** @type {?} */((styleMap as any)))[styleName] : '';\n }\n/**\n * @param {?} element\n * @return {?}\n */\ntagName(element: any): string { return element.tagName == 'style' ? 'STYLE' : element.tagName; }\n/**\n * @param {?} element\n * @return {?}\n */\nattributeMap(element: any): Map<string, string> {\n const /** @type {?} */ res = new Map<string, string>();\n const /** @type {?} */ elAttrs = treeAdapter.getAttrList(element);\n for (let /** @type {?} */ i = 0; i < elAttrs.length; i++) {\n const /** @type {?} */ attrib = elAttrs[i];\n res.set(attrib.name, attrib.value);\n }\n return res;\n }\n/**\n * @param {?} element\n * @param {?} attribute\n * @return {?}\n */\nhasAttribute(element: any, attribute: string): boolean {\n return element.attribs && element.attribs[attribute] != null;\n }\n/**\n * @param {?} element\n * @param {?} ns\n * @param {?} attribute\n * @return {?}\n */\nhasAttributeNS(element: any, ns: string, attribute: string): boolean {\n return this.hasAttribute(element, attribute);\n }\n/**\n * @param {?} element\n * @param {?} attribute\n * @return {?}\n */\ngetAttribute(element: any, attribute: string): string {\n return this.hasAttribute(element, attribute) ? element.attribs[attribute] : null;\n }\n/**\n * @param {?} element\n * @param {?} ns\n * @param {?} attribute\n * @return {?}\n */\ngetAttributeNS(element: any, ns: string, attribute: string): string {\n return this.getAttribute(element, attribute);\n }\n/**\n * @param {?} element\n * @param {?} attribute\n * @param {?} value\n * @return {?}\n */\nsetAttribute(element: any, attribute: string, value: string) {\n if (attribute) {\n element.attribs[attribute] = value;\n if (attribute === 'class') {\n element.className = value;\n }\n }\n }\n/**\n * @param {?} element\n * @param {?} ns\n * @param {?} attribute\n * @param {?} value\n * @return {?}\n */\nsetAttributeNS(element: any, ns: string, attribute: string, value: string) {\n this.setAttribute(element, attribute, value);\n }\n/**\n * @param {?} element\n * @param {?} attribute\n * @return {?}\n */\nremoveAttribute(element: any, attribute: string) {\n if (attribute) {\n delete element.attribs[attribute];\n }\n }\n/**\n * @param {?} element\n * @param {?} ns\n * @param {?} name\n * @return {?}\n */\nremoveAttributeNS(element: any, ns: string, name: string) { throw 'not implemented'; }\n/**\n * @param {?} el\n * @return {?}\n */\ntemplateAwareRoot(el: any): any {\n return this.isTemplateElement(el) ? treeAdapter.getTemplateContent(el) : el;\n }\n/**\n * @return {?}\n */\ncreateHtmlDocument(): Document {\n const /** @type {?} */ newDoc = treeAdapter.createDocument();\n newDoc.title = 'fakeTitle';\n const /** @type {?} */ head = treeAdapter.createElement('head', null, []);\n const /** @type {?} */ body = treeAdapter.createElement('body', 'http://www.w3.org/1999/xhtml', []);\n this.appendChild(newDoc, head);\n this.appendChild(newDoc, body);\n newDoc['head'] = head;\n newDoc['body'] = body;\n newDoc['_window'] = {};\n return newDoc;\n }\n/**\n * @param {?} el\n * @return {?}\n */\ngetBoundingClientRect(el: any): any { return {left: 0, top: 0, width: 0, height: 0}; }\n/**\n * @param {?} doc\n * @return {?}\n */\ngetTitle(doc: Document): string { return this.getText(this.getTitleNode(doc)) || ''; }\n/**\n * @param {?} doc\n * @param {?} newTitle\n * @return {?}\n */\nsetTitle(doc: Document, newTitle: string) {\n this.setText(this.getTitleNode(doc), newTitle || '');\n }\n/**\n * @param {?} el\n * @return {?}\n */\nisTemplateElement(el: any): boolean {\n return this.isElementNode(el) && this.tagName(el) === 'template';\n }\n/**\n * @param {?} node\n * @return {?}\n */\nisTextNode(node: any): boolean { return treeAdapter.isTextNode(node); }\n/**\n * @param {?} node\n * @return {?}\n */\nisCommentNode(node: any): boolean { return treeAdapter.isCommentNode(node); }\n/**\n * @param {?} node\n * @return {?}\n */\nisElementNode(node: any): boolean { return node ? treeAdapter.isElementNode(node) : false; }\n/**\n * @param {?} node\n * @return {?}\n */\nhasShadowRoot(node: any): boolean { return node.shadowRoot != null; }\n/**\n * @param {?} node\n * @return {?}\n */\nisShadowRoot(node: any): boolean { return this.getShadowRoot(node) == node; }\n/**\n * @param {?} node\n * @return {?}\n */\nimportIntoDoc(node: any): any { return this.clone(node); }\n/**\n * @param {?} node\n * @return {?}\n */\nadoptNode(node: any): any { return node; }\n/**\n * @param {?} el\n * @return {?}\n */\ngetHref(el: any): string { return this.getAttribute(el, 'href'); }\n/**\n * @param {?} el\n * @param {?} baseUrl\n * @param {?} href\n * @return {?}\n */\nresolveAndSetHref(el: any, baseUrl: string, href: string) {\n if (href == null) {\n el.href = baseUrl;\n } else {\n el.href = baseUrl + '/../' + href;\n }\n }\n/**\n * \\@internal\n * @param {?} parsedRules\n * @param {?=} css\n * @return {?}\n */\n_buildRules(parsedRules: any, css?: any) {\n const /** @type {?} */ rules: any[] = [];\n for (let /** @type {?} */ i = 0; i < parsedRules.length; i++) {\n const /** @type {?} */ parsedRule = parsedRules[i];\n const /** @type {?} */ rule: {[key: string]: any} = {};\n rule['cssText'] = css;\n rule['style'] = {content: '', cssText: ''};\n if (parsedRule.type == 'rule') {\n rule['type'] = 1;\n\n rule['selectorText'] =\n parsedRule.selectors.join(', '.replace(/\\s{2,}/g, ' ')\n .replace(/\\s*~\\s*/g, ' ~ ')\n .replace(/\\s*\\+\\s*/g, ' + ')\n .replace(/\\s*>\\s*/g, ' > ')\n .replace(/\\[(\\w+)=(\\w+)\\]/g, '[$1=\"$2\"]'));\n if (parsedRule.declarations == null) {\n continue;\n }\n for (let /** @type {?} */ j = 0; j < parsedRule.declarations.length; j++) {\n const /** @type {?} */ declaration = parsedRule.declarations[j];\n rule['style'] = declaration.property[declaration.value];\n rule['style'].cssText += declaration.property + ': ' + declaration.value + ';';\n }\n } else if (parsedRule.type == 'media') {\n rule['type'] = 4;\n rule['media'] = {mediaText: parsedRule.media};\n if (parsedRule.rules) {\n rule['cssRules'] = this._buildRules(parsedRule.rules);\n }\n }\n rules.push(rule);\n }\n return rules;\n }\n/**\n * @return {?}\n */\nsupportsDOMEvents(): boolean { return false; }\n/**\n * @return {?}\n */\nsupportsNativeShadowDOM(): boolean { return false; }\n/**\n * @param {?} doc\n * @param {?} target\n * @return {?}\n */\ngetGlobalEventTarget(doc: Document, target: string): any {\n if (target == 'window') {\n return ( /** @type {?} */((<any>doc)))._window;\n } else if (target == 'document') {\n return doc;\n } else if (target == 'body') {\n return doc.body;\n }\n }\n/**\n * @param {?} doc\n * @return {?}\n */\ngetBaseHref(doc: Document): string|null {\n const /** @type {?} */ base = this.querySelector(doc, 'base');\n let /** @type {?} */ href = '';\n if (base) {\n href = this.getHref(base);\n }\n // TODO(alxhub): Need relative path logic from BrowserDomAdapter here?\n return href == null ? null : href;\n }\n/**\n * @return {?}\n */\nresetBaseElement(): void { throw 'not implemented'; }\n/**\n * @return {?}\n */\ngetHistory(): History { throw 'not implemented'; }\n/**\n * @return {?}\n */\ngetLocation(): Location { throw 'not implemented'; }\n/**\n * @return {?}\n */\ngetUserAgent(): string { return 'Fake user agent'; }\n/**\n * @param {?} el\n * @param {?} name\n * @return {?}\n */\ngetData(el: any, name: string): string { return this.getAttribute(el, 'data-' + name); }\n/**\n * @param {?} el\n * @return {?}\n */\ngetComputedStyle(el: any): any { throw 'not implemented'; }\n/**\n * @param {?} el\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\nsetData(el: any, name: string, value: string) { this.setAttribute(el, 'data-' + name, value); }\n/**\n * @return {?}\n */\nsupportsWebAnimation(): boolean { return false; }\n/**\n * @return {?}\n */\nperformanceNow(): number { return Date.now(); }\n/**\n * @return {?}\n */\ngetAnimationPrefix(): string { return ''; }\n/**\n * @return {?}\n */\ngetTransitionEnd(): string { return 'transitionend'; }\n/**\n * @return {?}\n */\nsupportsAnimation(): boolean { return true; }\n/**\n * @param {?} el\n * @param {?} newNode\n * @param {?} oldNode\n * @return {?}\n */\nreplaceChild(el: any, newNode: any, oldNode: any) { throw new Error('not implemented'); }\n/**\n * @param {?} templateHtml\n * @return {?}\n */\nparse(templateHtml: string) { throw new Error('not implemented'); }\n/**\n * @param {?} el\n * @param {?} methodName\n * @param {?} args\n * @return {?}\n */\ninvoke(el: Element, methodName: string, args: any[]): any { throw new Error('not implemented'); }\n/**\n * @param {?} event\n * @return {?}\n */\ngetEventKey(event: any): string { throw new Error('not implemented'); }\n/**\n * @return {?}\n */\nsupportsCookies(): boolean { return false; }\n/**\n * @param {?} name\n * @return {?}\n */\ngetCookie(name: string): string { throw new Error('not implemented'); }\n/**\n * @param {?} name\n * @param {?} value\n * @return {?}\n */\nsetCookie(name: string, value: string) { throw new Error('not implemented'); }\n/**\n * @param {?} element\n * @param {?} keyframes\n * @param {?} options\n * @return {?}\n */\nanimate(element: any, keyframes: any[], options: any): any { throw new Error('not implemented'); }\n/**\n * @param {?} doc\n * @return {?}\n */\nprivate getTitleNode(doc: Document) {\n let /** @type {?} */ title = this.querySelector(doc, 'title');\n\n if (!title) {\n title = /** @type {?} */(( <HTMLTitleElement>this.createElement('title')));\n this.appendChild(this.querySelector(doc, 'head'), title);\n }\n\n return title;\n }\n}\n\n// TODO: build a proper list, this one is all the keys of a HTMLInputElement\nconst /** @type {?} */ _HTMLElementPropertyList = [\n 'webkitEntries',\n 'incremental',\n 'webkitdirectory',\n 'selectionDirection',\n 'selectionEnd',\n 'selectionStart',\n 'labels',\n 'validationMessage',\n 'validity',\n 'willValidate',\n 'width',\n 'valueAsNumber',\n 'valueAsDate',\n 'value',\n 'useMap',\n 'defaultValue',\n 'type',\n 'step',\n 'src',\n 'size',\n 'required',\n 'readOnly',\n 'placeholder',\n 'pattern',\n 'name',\n 'multiple',\n 'min',\n 'minLength',\n 'maxLength',\n 'max',\n 'list',\n 'indeterminate',\n 'height',\n 'formTarget',\n 'formNoValidate',\n 'formMethod',\n 'formEnctype',\n 'formAction',\n 'files',\n 'form',\n 'disabled',\n 'dirName',\n 'checked',\n 'defaultChecked',\n 'autofocus',\n 'autocomplete',\n 'alt',\n 'align',\n 'accept',\n 'onautocompleteerror',\n 'onautocomplete',\n 'onwaiting',\n 'onvolumechange',\n 'ontoggle',\n 'ontimeupdate',\n 'onsuspend',\n 'onsubmit',\n 'onstalled',\n 'onshow',\n 'onselect',\n 'onseeking',\n 'onseeked',\n 'onscroll',\n 'onresize',\n 'onreset',\n 'onratechange',\n 'onprogress',\n 'onplaying',\n 'onplay',\n 'onpause',\n 'onmousewheel',\n 'onmouseup',\n 'onmouseover',\n 'onmouseout',\n 'onmousemove',\n 'onmouseleave',\n 'onmouseenter',\n 'onmousedown',\n 'onloadstart',\n 'onloadedmetadata',\n 'onloadeddata',\n 'onload',\n 'onkeyup',\n 'onkeypress',\n 'onkeydown',\n 'oninvalid',\n 'oninput',\n 'onfocus',\n 'onerror',\n 'onended',\n 'onemptied',\n 'ondurationchange',\n 'ondrop',\n 'ondragstart',\n 'ondragover',\n 'ondragleave',\n 'ondragenter',\n 'ondragend',\n 'ondrag',\n 'ondblclick',\n 'oncuechange',\n 'oncontextmenu',\n 'onclose',\n 'onclick',\n 'onchange',\n 'oncanplaythrough',\n 'oncanplay',\n 'oncancel',\n 'onblur',\n 'onabort',\n 'spellcheck',\n 'isContentEditable',\n 'contentEditable',\n 'outerText',\n 'innerText',\n 'accessKey',\n 'hidden',\n 'webkitdropzone',\n 'draggable',\n 'tabIndex',\n 'dir',\n 'translate',\n 'lang',\n 'title',\n 'childElementCount',\n 'lastElementChild',\n 'firstElementChild',\n 'children',\n 'onwebkitfullscreenerror',\n 'onwebkitfullscreenchange',\n 'nextElementSibling',\n 'previousElementSibling',\n 'onwheel',\n 'onselectstart',\n 'onsearch',\n 'onpaste',\n 'oncut',\n 'oncopy',\n 'onbeforepaste',\n 'onbeforecut',\n 'onbeforecopy',\n 'shadowRoot',\n 'dataset',\n 'classList',\n 'className',\n 'outerHTML',\n 'innerHTML',\n 'scrollHeight',\n 'scrollWidth',\n 'scrollTop',\n 'scrollLeft',\n 'clientHeight',\n 'clientWidth',\n 'clientTop',\n 'clientLeft',\n 'offsetParent',\n 'offsetHeight',\n 'offsetWidth',\n 'offsetTop',\n 'offsetLeft',\n 'localName',\n 'prefix',\n 'namespaceURI',\n 'id',\n 'style',\n 'attributes',\n 'tagName',\n 'parentElement',\n 'textContent',\n 'baseURI',\n 'ownerDocument',\n 'nextSibling',\n 'previousSibling',\n 'lastChild',\n 'firstChild',\n 'childNodes',\n 'parentNode',\n 'nodeType',\n 'nodeValue',\n 'nodeName',\n 'closure_lm_714617',\n '__jsaction',\n];\n/**\n * @template T\n * @param {?} list\n * @param {?} el\n * @return {?}\n */\nfunction remove<T>(list: T[], el: T): void {\n const /** @type {?} */ index = list.indexOf(el);\n if (index > -1) {\n list.splice(index, 1);\n }\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\nimport {LocationChangeEvent, LocationChangeListener, PlatformLocation} from '@angular/common';\nimport {Inject, Injectable, Optional} from '@angular/core';\nimport {DOCUMENT, ɵgetDOM as getDOM} from '@angular/platform-browser';\nimport {Subject} from 'rxjs/Subject';\nimport * as url from 'url';\nimport {INITIAL_CONFIG, PlatformConfig} from './tokens';\n/**\n * @param {?} urlStr\n * @return {?}\n */\nfunction parseUrl(urlStr: string): {pathname: string, search: string, hash: string} {\n const /** @type {?} */ parsedUrl = url.parse(urlStr);\n return {\n pathname: parsedUrl.pathname || '',\n search: parsedUrl.search || '',\n hash: parsedUrl.hash || '',\n };\n}\n/**\n * Server-side implementation of URL state. Implements `pathname`, `search`, and `hash`\n * but not the state stack.\n */\nexport class ServerPlatformLocation implements PlatformLocation {\nprivate _path: string = '/';\nprivate _search: string = '';\nprivate _hash: string = '';\nprivate _hashUpdate = new Subject<LocationChangeEvent>();\n/**\n * @param {?} _doc\n * @param {?} _config\n */\nconstructor(\nprivate _doc: any, _config: any) {\n const config = _config as PlatformConfig | null;\n if (!!config && !!config.url) {\n const parsedUrl = parseUrl(config.url);\n this._path = parsedUrl.pathname;\n this._search = parsedUrl.search;\n this._hash = parsedUrl.hash;\n }\n }\n/**\n * @return {?}\n */\ngetBaseHrefFromDOM(): string { return /** @type {?} */(( getDOM().getBaseHref(this._doc))); }\n/**\n * @param {?} fn\n * @return {?}\n */\nonPopState(fn: LocationChangeListener): void {\n // No-op: a state stack is not implemented, so\n // no events will ever come.\n }\n/**\n * @param {?} fn\n * @return {?}\n */\nonHashChange(fn: LocationChangeListener): void { this._hashUpdate.subscribe(fn); }\n/**\n * @return {?}\n */\nget pathname(): string { return this._path; }\n/**\n * @return {?}\n */\nget search(): string { return this._search; }\n/**\n * @return {?}\n */\nget hash(): string { return this._hash; }\n/**\n * @return {?}\n */\nget url(): string { return `${this.pathname}${this.search}${this.hash}`; }\n/**\n * @param {?} value\n * @param {?} oldUrl\n * @return {?}\n */\nprivate setHash(value: string, oldUrl: string) {\n if (this._hash === value) {\n // Don't fire events if the hash has not changed.\n return;\n }\n this._hash = value;\n const /** @type {?} */ newUrl = this.url;\n scheduleMicroTask(\n () => this._hashUpdate.next( /** @type {?} */(({ type: 'hashchange', oldUrl, newUrl } as LocationChangeEvent))));\n }\n/**\n * @param {?} state\n * @param {?} title\n * @param {?} newUrl\n * @return {?}\n */\nreplaceState(state: any, title: string, newUrl: string): void {\n const /** @type {?} */ oldUrl = this.url;\n const /** @type {?} */ parsedUrl = parseUrl(newUrl);\n this._path = parsedUrl.pathname;\n this._search = parsedUrl.search;\n this.setHash(parsedUrl.hash, oldUrl);\n }\n/**\n * @param {?} state\n * @param {?} title\n * @param {?} newUrl\n * @return {?}\n */\npushState(state: any, title: string, newUrl: string): void {\n this.replaceState(state, title, newUrl);\n }\n/**\n * @return {?}\n */\nforward(): void { throw new Error('Not implemented'); }\n/**\n * @return {?}\n */\nback(): void { throw new Error('Not implemented'); }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: undefined, decorators: [{ type: Inject, args: [DOCUMENT, ] }, ]},\n{type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [INITIAL_CONFIG, ] }, ]},\n];\n}\n\nfunction ServerPlatformLocation_tsickle_Closure_declarations() {\n/** @type {?} */\nServerPlatformLocation.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nServerPlatformLocation.ctorParameters;\n/** @type {?} */\nServerPlatformLocation.prototype._path;\n/** @type {?} */\nServerPlatformLocation.prototype._search;\n/** @type {?} */\nServerPlatformLocation.prototype._hash;\n/** @type {?} */\nServerPlatformLocation.prototype._hashUpdate;\n/** @type {?} */\nServerPlatformLocation.prototype._doc;\n}\n\n/**\n * @param {?} fn\n * @return {?}\n */\nexport function scheduleMicroTask(fn: Function) {\n Zone.current.scheduleMicroTask('scheduleMicrotask', fn);\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\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\nimport {InjectionToken} from '@angular/core';\n\n/**\n * Config object passed to initialize the platform.\n *\n * @experimental\n */\nexport interface PlatformConfig {\n document?: string;\n url?: string;\n}\n/**\n * The DI token for setting the initial config for the platform.\n * \n * \\@experimental\n */\nexport const INITIAL_CONFIG = new InjectionToken<PlatformConfig>('Server.INITIAL_CONFIG');\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 xhr2: any = require('xhr2');\n\nimport {Injectable, Optional, Provider} from '@angular/core';\nimport {BrowserXhr, Connection, ConnectionBackend, Http, ReadyState, Request, RequestOptions, Response, XHRBackend, XSRFStrategy} from '@angular/http';\n\nimport {HttpClient, HttpEvent, HttpRequest, HttpHandler, HttpInterceptor, HttpResponse, HTTP_INTERCEPTORS, HttpBackend, XhrFactory, ɵinterceptingHandler as interceptingHandler} from '@angular/common/http';\n\nimport {Observable} from 'rxjs/Observable';\nimport {Observer} from 'rxjs/Observer';\nimport {Subscription} from 'rxjs/Subscription';\n\nconst /** @type {?} */ isAbsoluteUrl = /^[a-zA-Z\\-\\+.]+:\\/\\//;\n/**\n * @param {?} url\n * @return {?}\n */\nfunction validateRequestUrl(url: string): void {\n if (!isAbsoluteUrl.test(url)) {\n throw new Error(`URLs requested via Http on the server must be absolute. URL: ${url}`);\n }\n}\nexport class ServerXhr implements BrowserXhr {\n/**\n * @return {?}\n */\nbuild(): XMLHttpRequest { return new xhr2.XMLHttpRequest(); }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n];\n}\n\nfunction ServerXhr_tsickle_Closure_declarations() {\n/** @type {?} */\nServerXhr.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nServerXhr.ctorParameters;\n}\n\nexport class ServerXsrfStrategy implements XSRFStrategy {\n/**\n * @param {?} req\n * @return {?}\n */\nconfigureRequest(req: Request): void {}\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n];\n}\n\nfunction ServerXsrfStrategy_tsickle_Closure_declarations() {\n/** @type {?} */\nServerXsrfStrategy.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nServerXsrfStrategy.ctorParameters;\n}\n\n/**\n * @abstract\n */\nexport abstract class ZoneMacroTaskWrapper<S, R> {\n/**\n * @param {?} request\n * @return {?}\n */\nwrap(request: S): Observable<R> {\n return new Observable((observer: Observer<R>) => {\n let /** @type {?} */ task: Task = /** @type {?} */(( null));\n let /** @type {?} */ scheduled: boolean = false;\n let /** @type {?} */ sub: Subscription|null = null;\n let /** @type {?} */ savedResult: any = null;\n let /** @type {?} */ savedError: any = null;\n\n const /** @type {?} */ scheduleTask = (_task: Task) => {\n task = _task;\n scheduled = true;\n\n const /** @type {?} */ delegate = this.delegate(request);\n sub = delegate.subscribe(\n res => savedResult = res,\n err => {\n if (!scheduled) {\n throw new Error(\n 'An http observable was completed twice. This shouldn\\'t happen, please file a bug.');\n }\n savedError = err;\n scheduled = false;\n task.invoke();\n },\n () => {\n if (!scheduled) {\n throw new Error(\n 'An http observable was completed twice. This shouldn\\'t happen, please file a bug.');\n }\n scheduled = false;\n task.invoke();\n });\n };\n\n const /** @type {?} */ cancelTask = (_task: Task) => {\n if (!scheduled) {\n return;\n }\n scheduled = false;\n if (sub) {\n sub.unsubscribe();\n sub = null;\n }\n };\n\n const /** @type {?} */ onComplete = () => {\n if (savedError !== null) {\n observer.error(savedError);\n } else {\n observer.next(savedResult);\n observer.complete();\n }\n };\n\n // MockBackend for Http is synchronous, which means that if scheduleTask is by\n // scheduleMacroTask, the request will hit MockBackend and the response will be\n // sent, causing task.invoke() to be called.\n const /** @type {?} */ _task = Zone.current.scheduleMacroTask(\n 'ZoneMacroTaskWrapper.subscribe', onComplete, {}, () => null, cancelTask);\n scheduleTask(_task);\n\n return () => {\n if (scheduled && task) {\n task.zone.cancelTask(task);\n scheduled = false;\n }\n if (sub) {\n sub.unsubscribe();\n sub = null;\n }\n };\n });\n }\n/**\n * @abstract\n * @param {?} request\n * @return {?}\n */\ndelegate(request: S) {}\n}\nexport class ZoneMacroTaskConnection extends ZoneMacroTaskWrapper<Request, Response> implements\n Connection {\n response: Observable<Response>;\n lastConnection: Connection;\n/**\n * @param {?} request\n * @param {?} backend\n */\nconstructor(public request: Request,\nprivate backend: XHRBackend) {\n super();\n validateRequestUrl(request.url);\n this.response = this.wrap(request);\n }\n/**\n * @param {?} request\n * @return {?}\n */\ndelegate(request: Request): Observable<Response> {\n this.lastConnection = this.backend.createConnection(request);\n return /** @type {?} */(( this.lastConnection.response as Observable<Response>));\n }\n/**\n * @return {?}\n */\nget readyState(): ReadyState {\n return !!this.lastConnection ? this.lastConnection.readyState : ReadyState.Unsent;\n }\n}\n\nfunction ZoneMacroTaskConnection_tsickle_Closure_declarations() {\n/** @type {?} */\nZoneMacroTaskConnection.prototype.response;\n/** @type {?} */\nZoneMacroTaskConnection.prototype.lastConnection;\n/** @type {?} */\nZoneMacroTaskConnection.prototype.request;\n/** @type {?} */\nZoneMacroTaskConnection.prototype.backend;\n}\n\nexport class ZoneMacroTaskBackend implements ConnectionBackend {\n/**\n * @param {?} backend\n */\nconstructor(private backend: XHRBackend) {}\n/**\n * @param {?} request\n * @return {?}\n */\ncreateConnection(request: any): ZoneMacroTaskConnection {\n return new ZoneMacroTaskConnection(request, this.backend);\n }\n}\n\nfunction ZoneMacroTaskBackend_tsickle_Closure_declarations() {\n/** @type {?} */\nZoneMacroTaskBackend.prototype.backend;\n}\n\nexport class ZoneClientBackend extends\n ZoneMacroTaskWrapper<HttpRequest<any>, HttpEvent<any>> implements HttpBackend {\n/**\n * @param {?} backend\n */\nconstructor(private backend: HttpBackend) { super(); }\n/**\n * @param {?} request\n * @return {?}\n */\nhandle(request: HttpRequest<any>): Observable<HttpEvent<any>> { return this.wrap(request); }\n/**\n * @param {?} request\n * @return {?}\n */\nprotected delegate(request: HttpRequest<any>): Observable<HttpEvent<any>> {\n return this.backend.handle(request);\n }\n}\n\nfunction ZoneClientBackend_tsickle_Closure_declarations() {\n/** @type {?} */\nZoneClientBackend.prototype.backend;\n}\n\n/**\n * @param {?} xhrBackend\n * @param {?} options\n * @return {?}\n */\nexport function httpFactory(xhrBackend: XHRBackend, options: RequestOptions) {\n const /** @type {?} */ macroBackend = new ZoneMacroTaskBackend(xhrBackend);\n return new Http(macroBackend, options);\n}\n/**\n * @param {?} backend\n * @param {?} interceptors\n * @return {?}\n */\nexport function zoneWrappedInterceptingHandler(\n backend: HttpBackend, interceptors: HttpInterceptor[] | null) {\n const /** @type {?} */ realBackend: HttpBackend = interceptingHandler(backend, interceptors);\n return new ZoneClientBackend(realBackend);\n}\n\nexport const /** @type {?} */ SERVER_HTTP_PROVIDERS: Provider[] = [\n {provide: Http, useFactory: httpFactory, deps: [XHRBackend, RequestOptions]},\n {provide: BrowserXhr, useClass: ServerXhr}, {provide: XSRFStrategy, useClass: ServerXsrfStrategy},\n {provide: XhrFactory, useClass: ServerXhr}, {\n provide: HttpHandler,\n useFactory: zoneWrappedInterceptingHandler,\n deps: [HttpBackend, [new Optional(), HTTP_INTERCEPTORS]]\n }\n];\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\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 parse5 = require('parse5');\n\nimport {Injectable, Inject} from '@angular/core';\nimport {DOCUMENT, ɵgetDOM as getDOM} from '@angular/platform-browser';\n/**\n * Representation of the current platform state.\n * \n * \\@experimental\n */\nexport class PlatformState {\n/**\n * @param {?} _doc\n */\nconstructor(\nprivate _doc: any) {}\n/**\n * Renders the current state of the platform to string.\n * @return {?}\n */\nrenderToString(): string { return getDOM().getInnerHTML(this._doc); }\n/**\n * Returns the current DOM state.\n * @return {?}\n */\ngetDocument(): any { return this._doc; }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n/**\n * @nocollapse\n */\nstatic ctorParameters: () => ({type: any, decorators?: DecoratorInvocation[]}|null)[] = () => [\n{type: undefined, decorators: [{ type: Inject, args: [DOCUMENT, ] }, ]},\n];\n}\n\nfunction PlatformState_tsickle_Closure_declarations() {\n/** @type {?} */\nPlatformState.decorators;\n/**\n * @nocollapse\n * @type {?}\n */\nPlatformState.ctorParameters;\n/** @type {?} */\nPlatformState.prototype._doc;\n}\n\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator.throw(value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [0, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { if (o[n]) i[n] = function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; }; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator];\r\n return m ? m.call(o) : typeof __values === \"function\" ? __values(o) : o[Symbol.iterator]();\r\n}"],"names":["first","filter","toPromise","ApplicationRef","ɵTRANSITION_ID","HttpModule","HttpClientModule","NoopAnimationsModule","BrowserModule","NgModule","SharedStylesHost","RendererFactory2","ɵAnimationRendererFactory","PLATFORM_ID","ɵPLATFORM_SERVER_ID","ALLOW_MULTIPLE_PLATFORMS","Injector","Injectable","ɵSharedStylesHost","ɵgetDOM","tslib_1.__extends","shimHostAttribute","ɵNAMESPACE_URIS","getDOM","ɵflattenStyles","ViewEncapsulation","ɵDomAdapter","CssSelector","SelectorMatcher","Subject","parse","XhrFactory","BrowserXhr","XSRFStrategy","Http","XHRBackend","RequestOptions","ɵinterceptingHandler","Observable"],"mappings":"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"}