{"version":3,"file":"compiler.umd.js","sources":["../@angular/compiler.es5.js"],"sourcesContent":["var __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\n/**\n * @license Angular v4.0.3\n * (c) 2010-2017 Google, Inc. https://angular.io/\n * License: MIT\n */\nimport { ANALYZE_FOR_ENTRY_COMPONENTS, Attribute, COMPILER_OPTIONS, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, ChangeDetectorRef, Compiler, CompilerFactory, Component, ComponentFactory, ComponentFactoryResolver, ComponentRef, ContentChild, ContentChildren, Directive, ElementRef, Host, HostBinding, HostListener, Inject, Injectable, InjectionToken, Injector, Input, LOCALE_ID, MissingTranslationStrategy, ModuleWithComponentFactories, NO_ERRORS_SCHEMA, NgModule, NgModuleFactory, NgModuleRef, Optional, Output, PACKAGE_ROOT_URL, PLATFORM_INITIALIZER, Pipe, Query, QueryList, ReflectiveInjector, Renderer, SecurityContext, Self, SkipSelf, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Type, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation, animate, createPlatformFactory, group, isDevMode, keyframes, platformCore, resolveForwardRef, sequence, state, style, transition, trigger, ɵCodegenComponentFactoryResolver, ɵConsole, ɵEMPTY_ARRAY, ɵEMPTY_MAP, ɵERROR_COMPONENT_TYPE, ɵLIFECYCLE_HOOKS_VALUES, ɵLifecycleHooks, ɵNgModuleInjector, ɵReflectionCapabilities, ɵReflector, ɵReflectorReader, ɵand, ɵccf, ɵcrt, ɵdid, ɵeld, ɵelementEventFullName, ɵgetComponentViewDefinitionFactory, ɵinlineInterpolate, ɵinterpolate, ɵncd, ɵnov, ɵpad, ɵpid, ɵpod, ɵppd, ɵprd, ɵqud, ɵreflector, ɵregisterModuleFactory, ɵstringify, ɵted, ɵunv, ɵvid } from '@angular/core';\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @module\n * @description\n * Entry point for all public APIs of the common package.\n */\n/**\n * \\@stable\n */\nvar VERSION = new Version('4.0.3');\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 * A segment of text within the template.\n */\nvar TextAst = (function () {\n /**\n * @param {?} value\n * @param {?} ngContentIndex\n * @param {?} sourceSpan\n */\n function TextAst(value, ngContentIndex, sourceSpan) {\n this.value = value;\n this.ngContentIndex = ngContentIndex;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n TextAst.prototype.visit = function (visitor, context) { return visitor.visitText(this, context); };\n return TextAst;\n}());\n/**\n * A bound expression within the text of a template.\n */\nvar BoundTextAst = (function () {\n /**\n * @param {?} value\n * @param {?} ngContentIndex\n * @param {?} sourceSpan\n */\n function BoundTextAst(value, ngContentIndex, sourceSpan) {\n this.value = value;\n this.ngContentIndex = ngContentIndex;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n BoundTextAst.prototype.visit = function (visitor, context) {\n return visitor.visitBoundText(this, context);\n };\n return BoundTextAst;\n}());\n/**\n * A plain attribute on an element.\n */\nvar AttrAst = (function () {\n /**\n * @param {?} name\n * @param {?} value\n * @param {?} sourceSpan\n */\n function AttrAst(name, value, sourceSpan) {\n this.name = name;\n this.value = value;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n AttrAst.prototype.visit = function (visitor, context) { return visitor.visitAttr(this, context); };\n return AttrAst;\n}());\n/**\n * A binding for an element property (e.g. `[property]=\"expression\"`) or an animation trigger (e.g.\n * `[\\@trigger]=\"stateExp\"`)\n */\nvar BoundElementPropertyAst = (function () {\n /**\n * @param {?} name\n * @param {?} type\n * @param {?} securityContext\n * @param {?} value\n * @param {?} unit\n * @param {?} sourceSpan\n */\n function BoundElementPropertyAst(name, type, securityContext, value, unit, sourceSpan) {\n this.name = name;\n this.type = type;\n this.securityContext = securityContext;\n this.value = value;\n this.unit = unit;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n BoundElementPropertyAst.prototype.visit = function (visitor, context) {\n return visitor.visitElementProperty(this, context);\n };\n Object.defineProperty(BoundElementPropertyAst.prototype, \"isAnimation\", {\n /**\n * @return {?}\n */\n get: function () { return this.type === PropertyBindingType.Animation; },\n enumerable: true,\n configurable: true\n });\n return BoundElementPropertyAst;\n}());\n/**\n * A binding for an element event (e.g. `(event)=\"handler()\"`) or an animation trigger event (e.g.\n * `(\\@trigger.phase)=\"callback($event)\"`).\n */\nvar BoundEventAst = (function () {\n /**\n * @param {?} name\n * @param {?} target\n * @param {?} phase\n * @param {?} handler\n * @param {?} sourceSpan\n */\n function BoundEventAst(name, target, phase, handler, sourceSpan) {\n this.name = name;\n this.target = target;\n this.phase = phase;\n this.handler = handler;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} name\n * @param {?} target\n * @param {?} phase\n * @return {?}\n */\n BoundEventAst.calcFullName = function (name, target, phase) {\n if (target) {\n return target + \":\" + name;\n }\n else if (phase) {\n return \"@\" + name + \".\" + phase;\n }\n else {\n return name;\n }\n };\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n BoundEventAst.prototype.visit = function (visitor, context) {\n return visitor.visitEvent(this, context);\n };\n Object.defineProperty(BoundEventAst.prototype, \"fullName\", {\n /**\n * @return {?}\n */\n get: function () { return BoundEventAst.calcFullName(this.name, this.target, this.phase); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BoundEventAst.prototype, \"isAnimation\", {\n /**\n * @return {?}\n */\n get: function () { return !!this.phase; },\n enumerable: true,\n configurable: true\n });\n return BoundEventAst;\n}());\n/**\n * A reference declaration on an element (e.g. `let someName=\"expression\"`).\n */\nvar ReferenceAst = (function () {\n /**\n * @param {?} name\n * @param {?} value\n * @param {?} sourceSpan\n */\n function ReferenceAst(name, value, sourceSpan) {\n this.name = name;\n this.value = value;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n ReferenceAst.prototype.visit = function (visitor, context) {\n return visitor.visitReference(this, context);\n };\n return ReferenceAst;\n}());\n/**\n * A variable declaration on a <ng-template> (e.g. `var-someName=\"someLocalName\"`).\n */\nvar VariableAst = (function () {\n /**\n * @param {?} name\n * @param {?} value\n * @param {?} sourceSpan\n */\n function VariableAst(name, value, sourceSpan) {\n this.name = name;\n this.value = value;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n VariableAst.prototype.visit = function (visitor, context) {\n return visitor.visitVariable(this, context);\n };\n return VariableAst;\n}());\n/**\n * An element declaration in a template.\n */\nvar ElementAst = (function () {\n /**\n * @param {?} name\n * @param {?} attrs\n * @param {?} inputs\n * @param {?} outputs\n * @param {?} references\n * @param {?} directives\n * @param {?} providers\n * @param {?} hasViewContainer\n * @param {?} queryMatches\n * @param {?} children\n * @param {?} ngContentIndex\n * @param {?} sourceSpan\n * @param {?} endSourceSpan\n */\n function ElementAst(name, attrs, inputs, outputs, references, directives, providers, hasViewContainer, queryMatches, children, ngContentIndex, sourceSpan, endSourceSpan) {\n this.name = name;\n this.attrs = attrs;\n this.inputs = inputs;\n this.outputs = outputs;\n this.references = references;\n this.directives = directives;\n this.providers = providers;\n this.hasViewContainer = hasViewContainer;\n this.queryMatches = queryMatches;\n this.children = children;\n this.ngContentIndex = ngContentIndex;\n this.sourceSpan = sourceSpan;\n this.endSourceSpan = endSourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n ElementAst.prototype.visit = function (visitor, context) {\n return visitor.visitElement(this, context);\n };\n return ElementAst;\n}());\n/**\n * A `<ng-template>` element included in an Angular template.\n */\nvar EmbeddedTemplateAst = (function () {\n /**\n * @param {?} attrs\n * @param {?} outputs\n * @param {?} references\n * @param {?} variables\n * @param {?} directives\n * @param {?} providers\n * @param {?} hasViewContainer\n * @param {?} queryMatches\n * @param {?} children\n * @param {?} ngContentIndex\n * @param {?} sourceSpan\n */\n function EmbeddedTemplateAst(attrs, outputs, references, variables, directives, providers, hasViewContainer, queryMatches, children, ngContentIndex, sourceSpan) {\n this.attrs = attrs;\n this.outputs = outputs;\n this.references = references;\n this.variables = variables;\n this.directives = directives;\n this.providers = providers;\n this.hasViewContainer = hasViewContainer;\n this.queryMatches = queryMatches;\n this.children = children;\n this.ngContentIndex = ngContentIndex;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n EmbeddedTemplateAst.prototype.visit = function (visitor, context) {\n return visitor.visitEmbeddedTemplate(this, context);\n };\n return EmbeddedTemplateAst;\n}());\n/**\n * A directive property with a bound value (e.g. `*ngIf=\"condition\").\n */\nvar BoundDirectivePropertyAst = (function () {\n /**\n * @param {?} directiveName\n * @param {?} templateName\n * @param {?} value\n * @param {?} sourceSpan\n */\n function BoundDirectivePropertyAst(directiveName, templateName, value, sourceSpan) {\n this.directiveName = directiveName;\n this.templateName = templateName;\n this.value = value;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n BoundDirectivePropertyAst.prototype.visit = function (visitor, context) {\n return visitor.visitDirectiveProperty(this, context);\n };\n return BoundDirectivePropertyAst;\n}());\n/**\n * A directive declared on an element.\n */\nvar DirectiveAst = (function () {\n /**\n * @param {?} directive\n * @param {?} inputs\n * @param {?} hostProperties\n * @param {?} hostEvents\n * @param {?} contentQueryStartId\n * @param {?} sourceSpan\n */\n function DirectiveAst(directive, inputs, hostProperties, hostEvents, contentQueryStartId, sourceSpan) {\n this.directive = directive;\n this.inputs = inputs;\n this.hostProperties = hostProperties;\n this.hostEvents = hostEvents;\n this.contentQueryStartId = contentQueryStartId;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n DirectiveAst.prototype.visit = function (visitor, context) {\n return visitor.visitDirective(this, context);\n };\n return DirectiveAst;\n}());\n/**\n * A provider declared on an element\n */\nvar ProviderAst = (function () {\n /**\n * @param {?} token\n * @param {?} multiProvider\n * @param {?} eager\n * @param {?} providers\n * @param {?} providerType\n * @param {?} lifecycleHooks\n * @param {?} sourceSpan\n */\n function ProviderAst(token, multiProvider, eager, providers, providerType, lifecycleHooks, sourceSpan) {\n this.token = token;\n this.multiProvider = multiProvider;\n this.eager = eager;\n this.providers = providers;\n this.providerType = providerType;\n this.lifecycleHooks = lifecycleHooks;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n ProviderAst.prototype.visit = function (visitor, context) {\n // No visit method in the visitor for now...\n return null;\n };\n return ProviderAst;\n}());\nvar ProviderAstType = {};\nProviderAstType.PublicService = 0;\nProviderAstType.PrivateService = 1;\nProviderAstType.Component = 2;\nProviderAstType.Directive = 3;\nProviderAstType.Builtin = 4;\nProviderAstType[ProviderAstType.PublicService] = \"PublicService\";\nProviderAstType[ProviderAstType.PrivateService] = \"PrivateService\";\nProviderAstType[ProviderAstType.Component] = \"Component\";\nProviderAstType[ProviderAstType.Directive] = \"Directive\";\nProviderAstType[ProviderAstType.Builtin] = \"Builtin\";\n/**\n * Position where content is to be projected (instance of `<ng-content>` in a template).\n */\nvar NgContentAst = (function () {\n /**\n * @param {?} index\n * @param {?} ngContentIndex\n * @param {?} sourceSpan\n */\n function NgContentAst(index, ngContentIndex, sourceSpan) {\n this.index = index;\n this.ngContentIndex = ngContentIndex;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n NgContentAst.prototype.visit = function (visitor, context) {\n return visitor.visitNgContent(this, context);\n };\n return NgContentAst;\n}());\nvar PropertyBindingType = {};\nPropertyBindingType.Property = 0;\nPropertyBindingType.Attribute = 1;\nPropertyBindingType.Class = 2;\nPropertyBindingType.Style = 3;\nPropertyBindingType.Animation = 4;\nPropertyBindingType[PropertyBindingType.Property] = \"Property\";\nPropertyBindingType[PropertyBindingType.Attribute] = \"Attribute\";\nPropertyBindingType[PropertyBindingType.Class] = \"Class\";\nPropertyBindingType[PropertyBindingType.Style] = \"Style\";\nPropertyBindingType[PropertyBindingType.Animation] = \"Animation\";\n/**\n * Visit every node in a list of {\\@link TemplateAst}s with the given {\\@link TemplateAstVisitor}.\n * @param {?} visitor\n * @param {?} asts\n * @param {?=} context\n * @return {?}\n */\nfunction templateVisitAll(visitor, asts, context) {\n if (context === void 0) { context = null; }\n var /** @type {?} */ result = [];\n var /** @type {?} */ visit = visitor.visit ?\n function (ast) { return visitor.visit(ast, context) || ast.visit(visitor, context); } :\n function (ast) { return ast.visit(visitor, context); };\n asts.forEach(function (ast) {\n var /** @type {?} */ astResult = visit(ast);\n if (astResult) {\n result.push(astResult);\n }\n });\n return result;\n}\n/**\n * A token representing the a reference to a static type.\n *\n * This token is unique for a filePath and name and can be used as a hash table key.\n */\nvar StaticSymbol = (function () {\n /**\n * @param {?} filePath\n * @param {?} name\n * @param {?} members\n */\n function StaticSymbol(filePath, name, members) {\n this.filePath = filePath;\n this.name = name;\n this.members = members;\n }\n /**\n * @return {?}\n */\n StaticSymbol.prototype.assertNoMembers = function () {\n if (this.members.length) {\n throw new Error(\"Illegal state: symbol without members expected, but got \" + JSON.stringify(this) + \".\");\n }\n };\n return StaticSymbol;\n}());\n/**\n * A cache of static symbol used by the StaticReflector to return the same symbol for the\n * same symbol values.\n */\nvar StaticSymbolCache = (function () {\n function StaticSymbolCache() {\n this.cache = new Map();\n }\n /**\n * @param {?} declarationFile\n * @param {?} name\n * @param {?=} members\n * @return {?}\n */\n StaticSymbolCache.prototype.get = function (declarationFile, name, members) {\n members = members || [];\n var /** @type {?} */ memberSuffix = members.length ? \".\" + members.join('.') : '';\n var /** @type {?} */ key = \"\\\"\" + declarationFile + \"\\\".\" + name + memberSuffix;\n var /** @type {?} */ result = this.cache.get(key);\n if (!result) {\n result = new StaticSymbol(declarationFile, name, members);\n this.cache.set(key, result);\n }\n return result;\n };\n return StaticSymbolCache;\n}());\nvar TagContentType = {};\nTagContentType.RAW_TEXT = 0;\nTagContentType.ESCAPABLE_RAW_TEXT = 1;\nTagContentType.PARSABLE_DATA = 2;\nTagContentType[TagContentType.RAW_TEXT] = \"RAW_TEXT\";\nTagContentType[TagContentType.ESCAPABLE_RAW_TEXT] = \"ESCAPABLE_RAW_TEXT\";\nTagContentType[TagContentType.PARSABLE_DATA] = \"PARSABLE_DATA\";\n/**\n * @param {?} elementName\n * @return {?}\n */\nfunction splitNsName(elementName) {\n if (elementName[0] != ':') {\n return [null, elementName];\n }\n var /** @type {?} */ colonIndex = elementName.indexOf(':', 1);\n if (colonIndex == -1) {\n throw new Error(\"Unsupported format \\\"\" + elementName + \"\\\" expecting \\\":namespace:name\\\"\");\n }\n return [elementName.slice(1, colonIndex), elementName.slice(colonIndex + 1)];\n}\n/**\n * @param {?} fullName\n * @return {?}\n */\nfunction getNsPrefix(fullName) {\n return fullName === null ? null : splitNsName(fullName)[0];\n}\n/**\n * @param {?} prefix\n * @param {?} localName\n * @return {?}\n */\nfunction mergeNsAndName(prefix, localName) {\n return prefix ? \":\" + prefix + \":\" + localName : localName;\n}\n// see http://www.w3.org/TR/html51/syntax.html#named-character-references\n// see https://html.spec.whatwg.org/multipage/entities.json\n// This list is not exhaustive to keep the compiler footprint low.\n// The `{` / `ƫ` syntax should be used when the named character reference does not exist.\nvar NAMED_ENTITIES = {\n 'Aacute': '\\u00C1',\n 'aacute': '\\u00E1',\n 'Acirc': '\\u00C2',\n 'acirc': '\\u00E2',\n 'acute': '\\u00B4',\n 'AElig': '\\u00C6',\n 'aelig': '\\u00E6',\n 'Agrave': '\\u00C0',\n 'agrave': '\\u00E0',\n 'alefsym': '\\u2135',\n 'Alpha': '\\u0391',\n 'alpha': '\\u03B1',\n 'amp': '&',\n 'and': '\\u2227',\n 'ang': '\\u2220',\n 'apos': '\\u0027',\n 'Aring': '\\u00C5',\n 'aring': '\\u00E5',\n 'asymp': '\\u2248',\n 'Atilde': '\\u00C3',\n 'atilde': '\\u00E3',\n 'Auml': '\\u00C4',\n 'auml': '\\u00E4',\n 'bdquo': '\\u201E',\n 'Beta': '\\u0392',\n 'beta': '\\u03B2',\n 'brvbar': '\\u00A6',\n 'bull': '\\u2022',\n 'cap': '\\u2229',\n 'Ccedil': '\\u00C7',\n 'ccedil': '\\u00E7',\n 'cedil': '\\u00B8',\n 'cent': '\\u00A2',\n 'Chi': '\\u03A7',\n 'chi': '\\u03C7',\n 'circ': '\\u02C6',\n 'clubs': '\\u2663',\n 'cong': '\\u2245',\n 'copy': '\\u00A9',\n 'crarr': '\\u21B5',\n 'cup': '\\u222A',\n 'curren': '\\u00A4',\n 'dagger': '\\u2020',\n 'Dagger': '\\u2021',\n 'darr': '\\u2193',\n 'dArr': '\\u21D3',\n 'deg': '\\u00B0',\n 'Delta': '\\u0394',\n 'delta': '\\u03B4',\n 'diams': '\\u2666',\n 'divide': '\\u00F7',\n 'Eacute': '\\u00C9',\n 'eacute': '\\u00E9',\n 'Ecirc': '\\u00CA',\n 'ecirc': '\\u00EA',\n 'Egrave': '\\u00C8',\n 'egrave': '\\u00E8',\n 'empty': '\\u2205',\n 'emsp': '\\u2003',\n 'ensp': '\\u2002',\n 'Epsilon': '\\u0395',\n 'epsilon': '\\u03B5',\n 'equiv': '\\u2261',\n 'Eta': '\\u0397',\n 'eta': '\\u03B7',\n 'ETH': '\\u00D0',\n 'eth': '\\u00F0',\n 'Euml': '\\u00CB',\n 'euml': '\\u00EB',\n 'euro': '\\u20AC',\n 'exist': '\\u2203',\n 'fnof': '\\u0192',\n 'forall': '\\u2200',\n 'frac12': '\\u00BD',\n 'frac14': '\\u00BC',\n 'frac34': '\\u00BE',\n 'frasl': '\\u2044',\n 'Gamma': '\\u0393',\n 'gamma': '\\u03B3',\n 'ge': '\\u2265',\n 'gt': '>',\n 'harr': '\\u2194',\n 'hArr': '\\u21D4',\n 'hearts': '\\u2665',\n 'hellip': '\\u2026',\n 'Iacute': '\\u00CD',\n 'iacute': '\\u00ED',\n 'Icirc': '\\u00CE',\n 'icirc': '\\u00EE',\n 'iexcl': '\\u00A1',\n 'Igrave': '\\u00CC',\n 'igrave': '\\u00EC',\n 'image': '\\u2111',\n 'infin': '\\u221E',\n 'int': '\\u222B',\n 'Iota': '\\u0399',\n 'iota': '\\u03B9',\n 'iquest': '\\u00BF',\n 'isin': '\\u2208',\n 'Iuml': '\\u00CF',\n 'iuml': '\\u00EF',\n 'Kappa': '\\u039A',\n 'kappa': '\\u03BA',\n 'Lambda': '\\u039B',\n 'lambda': '\\u03BB',\n 'lang': '\\u27E8',\n 'laquo': '\\u00AB',\n 'larr': '\\u2190',\n 'lArr': '\\u21D0',\n 'lceil': '\\u2308',\n 'ldquo': '\\u201C',\n 'le': '\\u2264',\n 'lfloor': '\\u230A',\n 'lowast': '\\u2217',\n 'loz': '\\u25CA',\n 'lrm': '\\u200E',\n 'lsaquo': '\\u2039',\n 'lsquo': '\\u2018',\n 'lt': '<',\n 'macr': '\\u00AF',\n 'mdash': '\\u2014',\n 'micro': '\\u00B5',\n 'middot': '\\u00B7',\n 'minus': '\\u2212',\n 'Mu': '\\u039C',\n 'mu': '\\u03BC',\n 'nabla': '\\u2207',\n 'nbsp': '\\u00A0',\n 'ndash': '\\u2013',\n 'ne': '\\u2260',\n 'ni': '\\u220B',\n 'not': '\\u00AC',\n 'notin': '\\u2209',\n 'nsub': '\\u2284',\n 'Ntilde': '\\u00D1',\n 'ntilde': '\\u00F1',\n 'Nu': '\\u039D',\n 'nu': '\\u03BD',\n 'Oacute': '\\u00D3',\n 'oacute': '\\u00F3',\n 'Ocirc': '\\u00D4',\n 'ocirc': '\\u00F4',\n 'OElig': '\\u0152',\n 'oelig': '\\u0153',\n 'Ograve': '\\u00D2',\n 'ograve': '\\u00F2',\n 'oline': '\\u203E',\n 'Omega': '\\u03A9',\n 'omega': '\\u03C9',\n 'Omicron': '\\u039F',\n 'omicron': '\\u03BF',\n 'oplus': '\\u2295',\n 'or': '\\u2228',\n 'ordf': '\\u00AA',\n 'ordm': '\\u00BA',\n 'Oslash': '\\u00D8',\n 'oslash': '\\u00F8',\n 'Otilde': '\\u00D5',\n 'otilde': '\\u00F5',\n 'otimes': '\\u2297',\n 'Ouml': '\\u00D6',\n 'ouml': '\\u00F6',\n 'para': '\\u00B6',\n 'permil': '\\u2030',\n 'perp': '\\u22A5',\n 'Phi': '\\u03A6',\n 'phi': '\\u03C6',\n 'Pi': '\\u03A0',\n 'pi': '\\u03C0',\n 'piv': '\\u03D6',\n 'plusmn': '\\u00B1',\n 'pound': '\\u00A3',\n 'prime': '\\u2032',\n 'Prime': '\\u2033',\n 'prod': '\\u220F',\n 'prop': '\\u221D',\n 'Psi': '\\u03A8',\n 'psi': '\\u03C8',\n 'quot': '\\u0022',\n 'radic': '\\u221A',\n 'rang': '\\u27E9',\n 'raquo': '\\u00BB',\n 'rarr': '\\u2192',\n 'rArr': '\\u21D2',\n 'rceil': '\\u2309',\n 'rdquo': '\\u201D',\n 'real': '\\u211C',\n 'reg': '\\u00AE',\n 'rfloor': '\\u230B',\n 'Rho': '\\u03A1',\n 'rho': '\\u03C1',\n 'rlm': '\\u200F',\n 'rsaquo': '\\u203A',\n 'rsquo': '\\u2019',\n 'sbquo': '\\u201A',\n 'Scaron': '\\u0160',\n 'scaron': '\\u0161',\n 'sdot': '\\u22C5',\n 'sect': '\\u00A7',\n 'shy': '\\u00AD',\n 'Sigma': '\\u03A3',\n 'sigma': '\\u03C3',\n 'sigmaf': '\\u03C2',\n 'sim': '\\u223C',\n 'spades': '\\u2660',\n 'sub': '\\u2282',\n 'sube': '\\u2286',\n 'sum': '\\u2211',\n 'sup': '\\u2283',\n 'sup1': '\\u00B9',\n 'sup2': '\\u00B2',\n 'sup3': '\\u00B3',\n 'supe': '\\u2287',\n 'szlig': '\\u00DF',\n 'Tau': '\\u03A4',\n 'tau': '\\u03C4',\n 'there4': '\\u2234',\n 'Theta': '\\u0398',\n 'theta': '\\u03B8',\n 'thetasym': '\\u03D1',\n 'thinsp': '\\u2009',\n 'THORN': '\\u00DE',\n 'thorn': '\\u00FE',\n 'tilde': '\\u02DC',\n 'times': '\\u00D7',\n 'trade': '\\u2122',\n 'Uacute': '\\u00DA',\n 'uacute': '\\u00FA',\n 'uarr': '\\u2191',\n 'uArr': '\\u21D1',\n 'Ucirc': '\\u00DB',\n 'ucirc': '\\u00FB',\n 'Ugrave': '\\u00D9',\n 'ugrave': '\\u00F9',\n 'uml': '\\u00A8',\n 'upsih': '\\u03D2',\n 'Upsilon': '\\u03A5',\n 'upsilon': '\\u03C5',\n 'Uuml': '\\u00DC',\n 'uuml': '\\u00FC',\n 'weierp': '\\u2118',\n 'Xi': '\\u039E',\n 'xi': '\\u03BE',\n 'Yacute': '\\u00DD',\n 'yacute': '\\u00FD',\n 'yen': '\\u00A5',\n 'yuml': '\\u00FF',\n 'Yuml': '\\u0178',\n 'Zeta': '\\u0396',\n 'zeta': '\\u03B6',\n 'zwj': '\\u200D',\n 'zwnj': '\\u200C',\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 */\nvar HtmlTagDefinition = (function () {\n /**\n * @param {?=} __0\n */\n function HtmlTagDefinition(_a) {\n var _b = _a === void 0 ? {} : _a, closedByChildren = _b.closedByChildren, requiredParents = _b.requiredParents, implicitNamespacePrefix = _b.implicitNamespacePrefix, _c = _b.contentType, contentType = _c === void 0 ? TagContentType.PARSABLE_DATA : _c, _d = _b.closedByParent, closedByParent = _d === void 0 ? false : _d, _e = _b.isVoid, isVoid = _e === void 0 ? false : _e, _f = _b.ignoreFirstLf, ignoreFirstLf = _f === void 0 ? false : _f;\n var _this = this;\n this.closedByChildren = {};\n this.closedByParent = false;\n this.canSelfClose = false;\n if (closedByChildren && closedByChildren.length > 0) {\n closedByChildren.forEach(function (tagName) { return _this.closedByChildren[tagName] = true; });\n }\n this.isVoid = isVoid;\n this.closedByParent = closedByParent || isVoid;\n if (requiredParents && requiredParents.length > 0) {\n this.requiredParents = {};\n // The first parent is the list is automatically when none of the listed parents are present\n this.parentToAdd = requiredParents[0];\n requiredParents.forEach(function (tagName) { return _this.requiredParents[tagName] = true; });\n }\n this.implicitNamespacePrefix = implicitNamespacePrefix;\n this.contentType = contentType;\n this.ignoreFirstLf = ignoreFirstLf;\n }\n /**\n * @param {?} currentParent\n * @return {?}\n */\n HtmlTagDefinition.prototype.requireExtraParent = function (currentParent) {\n if (!this.requiredParents) {\n return false;\n }\n if (!currentParent) {\n return true;\n }\n var /** @type {?} */ lcParent = currentParent.toLowerCase();\n var /** @type {?} */ isParentTemplate = lcParent === 'template' || currentParent === 'ng-template';\n return !isParentTemplate && this.requiredParents[lcParent] != true;\n };\n /**\n * @param {?} name\n * @return {?}\n */\n HtmlTagDefinition.prototype.isClosedByChild = function (name) {\n return this.isVoid || name.toLowerCase() in this.closedByChildren;\n };\n return HtmlTagDefinition;\n}());\n// see http://www.w3.org/TR/html51/syntax.html#optional-tags\n// This implementation does not fully conform to the HTML5 spec.\nvar TAG_DEFINITIONS = {\n 'base': new HtmlTagDefinition({ isVoid: true }),\n 'meta': new HtmlTagDefinition({ isVoid: true }),\n 'area': new HtmlTagDefinition({ isVoid: true }),\n 'embed': new HtmlTagDefinition({ isVoid: true }),\n 'link': new HtmlTagDefinition({ isVoid: true }),\n 'img': new HtmlTagDefinition({ isVoid: true }),\n 'input': new HtmlTagDefinition({ isVoid: true }),\n 'param': new HtmlTagDefinition({ isVoid: true }),\n 'hr': new HtmlTagDefinition({ isVoid: true }),\n 'br': new HtmlTagDefinition({ isVoid: true }),\n 'source': new HtmlTagDefinition({ isVoid: true }),\n 'track': new HtmlTagDefinition({ isVoid: true }),\n 'wbr': new HtmlTagDefinition({ isVoid: true }),\n 'p': new HtmlTagDefinition({\n closedByChildren: [\n 'address', 'article', 'aside', 'blockquote', 'div', 'dl', 'fieldset', 'footer', 'form',\n 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hgroup', 'hr',\n 'main', 'nav', 'ol', 'p', 'pre', 'section', 'table', 'ul'\n ],\n closedByParent: true\n }),\n 'thead': new HtmlTagDefinition({ closedByChildren: ['tbody', 'tfoot'] }),\n 'tbody': new HtmlTagDefinition({ closedByChildren: ['tbody', 'tfoot'], closedByParent: true }),\n 'tfoot': new HtmlTagDefinition({ closedByChildren: ['tbody'], closedByParent: true }),\n 'tr': new HtmlTagDefinition({\n closedByChildren: ['tr'],\n requiredParents: ['tbody', 'tfoot', 'thead'],\n closedByParent: true\n }),\n 'td': new HtmlTagDefinition({ closedByChildren: ['td', 'th'], closedByParent: true }),\n 'th': new HtmlTagDefinition({ closedByChildren: ['td', 'th'], closedByParent: true }),\n 'col': new HtmlTagDefinition({ requiredParents: ['colgroup'], isVoid: true }),\n 'svg': new HtmlTagDefinition({ implicitNamespacePrefix: 'svg' }),\n 'math': new HtmlTagDefinition({ implicitNamespacePrefix: 'math' }),\n 'li': new HtmlTagDefinition({ closedByChildren: ['li'], closedByParent: true }),\n 'dt': new HtmlTagDefinition({ closedByChildren: ['dt', 'dd'] }),\n 'dd': new HtmlTagDefinition({ closedByChildren: ['dt', 'dd'], closedByParent: true }),\n 'rb': new HtmlTagDefinition({ closedByChildren: ['rb', 'rt', 'rtc', 'rp'], closedByParent: true }),\n 'rt': new HtmlTagDefinition({ closedByChildren: ['rb', 'rt', 'rtc', 'rp'], closedByParent: true }),\n 'rtc': new HtmlTagDefinition({ closedByChildren: ['rb', 'rtc', 'rp'], closedByParent: true }),\n 'rp': new HtmlTagDefinition({ closedByChildren: ['rb', 'rt', 'rtc', 'rp'], closedByParent: true }),\n 'optgroup': new HtmlTagDefinition({ closedByChildren: ['optgroup'], closedByParent: true }),\n 'option': new HtmlTagDefinition({ closedByChildren: ['option', 'optgroup'], closedByParent: true }),\n 'pre': new HtmlTagDefinition({ ignoreFirstLf: true }),\n 'listing': new HtmlTagDefinition({ ignoreFirstLf: true }),\n 'style': new HtmlTagDefinition({ contentType: TagContentType.RAW_TEXT }),\n 'script': new HtmlTagDefinition({ contentType: TagContentType.RAW_TEXT }),\n 'title': new HtmlTagDefinition({ contentType: TagContentType.ESCAPABLE_RAW_TEXT }),\n 'textarea': new HtmlTagDefinition({ contentType: TagContentType.ESCAPABLE_RAW_TEXT, ignoreFirstLf: true }),\n};\nvar _DEFAULT_TAG_DEFINITION = new HtmlTagDefinition();\n/**\n * @param {?} tagName\n * @return {?}\n */\nfunction getHtmlTagDefinition(tagName) {\n return TAG_DEFINITIONS[tagName.toLowerCase()] || _DEFAULT_TAG_DEFINITION;\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 */\nvar _SELECTOR_REGEXP = new RegExp('(\\\\:not\\\\()|' +\n '([-\\\\w]+)|' +\n '(?:\\\\.([-\\\\w]+))|' +\n // \"-\" should appear first in the regexp below as FF31 parses \"[.-\\w]\" as a range\n '(?:\\\\[([-.\\\\w*]+)(?:=([\\\"\\']?)([^\\\\]\\\"\\']*)\\\\5)?\\\\])|' +\n // \"[name=\"value\"]\",\n // \"[name='value']\"\n '(\\\\))|' +\n '(\\\\s*,\\\\s*)', // \",\"\n'g');\n/**\n * A css selector contains an element name,\n * css classes and attribute/value pairs with the purpose\n * of selecting subsets out of them.\n */\nvar CssSelector = (function () {\n function CssSelector() {\n this.element = null;\n this.classNames = [];\n this.attrs = [];\n this.notSelectors = [];\n }\n /**\n * @param {?} selector\n * @return {?}\n */\n CssSelector.parse = function (selector) {\n var /** @type {?} */ results = [];\n var /** @type {?} */ _addResult = function (res, cssSel) {\n if (cssSel.notSelectors.length > 0 && !cssSel.element && cssSel.classNames.length == 0 &&\n cssSel.attrs.length == 0) {\n cssSel.element = '*';\n }\n res.push(cssSel);\n };\n var /** @type {?} */ cssSelector = new CssSelector();\n var /** @type {?} */ match;\n var /** @type {?} */ current = cssSelector;\n var /** @type {?} */ inNot = false;\n _SELECTOR_REGEXP.lastIndex = 0;\n while (match = _SELECTOR_REGEXP.exec(selector)) {\n if (match[1]) {\n if (inNot) {\n throw new Error('Nesting :not is not allowed in a selector');\n }\n inNot = true;\n current = new CssSelector();\n cssSelector.notSelectors.push(current);\n }\n if (match[2]) {\n current.setElement(match[2]);\n }\n if (match[3]) {\n current.addClassName(match[3]);\n }\n if (match[4]) {\n current.addAttribute(match[4], match[6]);\n }\n if (match[7]) {\n inNot = false;\n current = cssSelector;\n }\n if (match[8]) {\n if (inNot) {\n throw new Error('Multiple selectors in :not are not supported');\n }\n _addResult(results, cssSelector);\n cssSelector = current = new CssSelector();\n }\n }\n _addResult(results, cssSelector);\n return results;\n };\n /**\n * @return {?}\n */\n CssSelector.prototype.isElementSelector = function () {\n return this.hasElementSelector() && this.classNames.length == 0 && this.attrs.length == 0 &&\n this.notSelectors.length === 0;\n };\n /**\n * @return {?}\n */\n CssSelector.prototype.hasElementSelector = function () { return !!this.element; };\n /**\n * @param {?=} element\n * @return {?}\n */\n CssSelector.prototype.setElement = function (element) {\n if (element === void 0) { element = null; }\n this.element = element;\n };\n /**\n * Gets a template string for an element that matches the selector.\n * @return {?}\n */\n CssSelector.prototype.getMatchingElementTemplate = function () {\n var /** @type {?} */ tagName = this.element || 'div';\n var /** @type {?} */ classAttr = this.classNames.length > 0 ? \" class=\\\"\" + this.classNames.join(' ') + \"\\\"\" : '';\n var /** @type {?} */ attrs = '';\n for (var /** @type {?} */ i = 0; i < this.attrs.length; i += 2) {\n var /** @type {?} */ attrName = this.attrs[i];\n var /** @type {?} */ attrValue = this.attrs[i + 1] !== '' ? \"=\\\"\" + this.attrs[i + 1] + \"\\\"\" : '';\n attrs += \" \" + attrName + attrValue;\n }\n return getHtmlTagDefinition(tagName).isVoid ? \"<\" + tagName + classAttr + attrs + \"/>\" :\n \"<\" + tagName + classAttr + attrs + \"></\" + tagName + \">\";\n };\n /**\n * @param {?} name\n * @param {?=} value\n * @return {?}\n */\n CssSelector.prototype.addAttribute = function (name, value) {\n if (value === void 0) { value = ''; }\n this.attrs.push(name, value && value.toLowerCase() || '');\n };\n /**\n * @param {?} name\n * @return {?}\n */\n CssSelector.prototype.addClassName = function (name) { this.classNames.push(name.toLowerCase()); };\n /**\n * @return {?}\n */\n CssSelector.prototype.toString = function () {\n var /** @type {?} */ res = this.element || '';\n if (this.classNames) {\n this.classNames.forEach(function (klass) { return res += \".\" + klass; });\n }\n if (this.attrs) {\n for (var /** @type {?} */ i = 0; i < this.attrs.length; i += 2) {\n var /** @type {?} */ name = this.attrs[i];\n var /** @type {?} */ value = this.attrs[i + 1];\n res += \"[\" + name + (value ? '=' + value : '') + \"]\";\n }\n }\n this.notSelectors.forEach(function (notSelector) { return res += \":not(\" + notSelector + \")\"; });\n return res;\n };\n return CssSelector;\n}());\n/**\n * Reads a list of CssSelectors and allows to calculate which ones\n * are contained in a given CssSelector.\n */\nvar SelectorMatcher = (function () {\n function SelectorMatcher() {\n this._elementMap = new Map();\n this._elementPartialMap = new Map();\n this._classMap = new Map();\n this._classPartialMap = new Map();\n this._attrValueMap = new Map();\n this._attrValuePartialMap = new Map();\n this._listContexts = [];\n }\n /**\n * @param {?} notSelectors\n * @return {?}\n */\n SelectorMatcher.createNotMatcher = function (notSelectors) {\n var /** @type {?} */ notMatcher = new SelectorMatcher();\n notMatcher.addSelectables(notSelectors, null);\n return notMatcher;\n };\n /**\n * @param {?} cssSelectors\n * @param {?=} callbackCtxt\n * @return {?}\n */\n SelectorMatcher.prototype.addSelectables = function (cssSelectors, callbackCtxt) {\n var /** @type {?} */ listContext = null;\n if (cssSelectors.length > 1) {\n listContext = new SelectorListContext(cssSelectors);\n this._listContexts.push(listContext);\n }\n for (var /** @type {?} */ i = 0; i < cssSelectors.length; i++) {\n this._addSelectable(cssSelectors[i], callbackCtxt, listContext);\n }\n };\n /**\n * Add an object that can be found later on by calling `match`.\n * @param {?} cssSelector A css selector\n * @param {?} callbackCtxt An opaque object that will be given to the callback of the `match` function\n * @param {?} listContext\n * @return {?}\n */\n SelectorMatcher.prototype._addSelectable = function (cssSelector, callbackCtxt, listContext) {\n var /** @type {?} */ matcher = this;\n var /** @type {?} */ element = cssSelector.element;\n var /** @type {?} */ classNames = cssSelector.classNames;\n var /** @type {?} */ attrs = cssSelector.attrs;\n var /** @type {?} */ selectable = new SelectorContext(cssSelector, callbackCtxt, listContext);\n if (element) {\n var /** @type {?} */ isTerminal = attrs.length === 0 && classNames.length === 0;\n if (isTerminal) {\n this._addTerminal(matcher._elementMap, element, selectable);\n }\n else {\n matcher = this._addPartial(matcher._elementPartialMap, element);\n }\n }\n if (classNames) {\n for (var /** @type {?} */ i = 0; i < classNames.length; i++) {\n var /** @type {?} */ isTerminal = attrs.length === 0 && i === classNames.length - 1;\n var /** @type {?} */ className = classNames[i];\n if (isTerminal) {\n this._addTerminal(matcher._classMap, className, selectable);\n }\n else {\n matcher = this._addPartial(matcher._classPartialMap, className);\n }\n }\n }\n if (attrs) {\n for (var /** @type {?} */ i = 0; i < attrs.length; i += 2) {\n var /** @type {?} */ isTerminal = i === attrs.length - 2;\n var /** @type {?} */ name = attrs[i];\n var /** @type {?} */ value = attrs[i + 1];\n if (isTerminal) {\n var /** @type {?} */ terminalMap = matcher._attrValueMap;\n var /** @type {?} */ terminalValuesMap = terminalMap.get(name);\n if (!terminalValuesMap) {\n terminalValuesMap = new Map();\n terminalMap.set(name, terminalValuesMap);\n }\n this._addTerminal(terminalValuesMap, value, selectable);\n }\n else {\n var /** @type {?} */ partialMap = matcher._attrValuePartialMap;\n var /** @type {?} */ partialValuesMap = partialMap.get(name);\n if (!partialValuesMap) {\n partialValuesMap = new Map();\n partialMap.set(name, partialValuesMap);\n }\n matcher = this._addPartial(partialValuesMap, value);\n }\n }\n }\n };\n /**\n * @param {?} map\n * @param {?} name\n * @param {?} selectable\n * @return {?}\n */\n SelectorMatcher.prototype._addTerminal = function (map, name, selectable) {\n var /** @type {?} */ terminalList = map.get(name);\n if (!terminalList) {\n terminalList = [];\n map.set(name, terminalList);\n }\n terminalList.push(selectable);\n };\n /**\n * @param {?} map\n * @param {?} name\n * @return {?}\n */\n SelectorMatcher.prototype._addPartial = function (map, name) {\n var /** @type {?} */ matcher = map.get(name);\n if (!matcher) {\n matcher = new SelectorMatcher();\n map.set(name, matcher);\n }\n return matcher;\n };\n /**\n * Find the objects that have been added via `addSelectable`\n * whose css selector is contained in the given css selector.\n * @param {?} cssSelector A css selector\n * @param {?} matchedCallback This callback will be called with the object handed into `addSelectable`\n * @return {?} boolean true if a match was found\n */\n SelectorMatcher.prototype.match = function (cssSelector, matchedCallback) {\n var /** @type {?} */ result = false;\n var /** @type {?} */ element = cssSelector.element;\n var /** @type {?} */ classNames = cssSelector.classNames;\n var /** @type {?} */ attrs = cssSelector.attrs;\n for (var /** @type {?} */ i = 0; i < this._listContexts.length; i++) {\n this._listContexts[i].alreadyMatched = false;\n }\n result = this._matchTerminal(this._elementMap, element, cssSelector, matchedCallback) || result;\n result = this._matchPartial(this._elementPartialMap, element, cssSelector, matchedCallback) ||\n result;\n if (classNames) {\n for (var /** @type {?} */ i = 0; i < classNames.length; i++) {\n var /** @type {?} */ className = classNames[i];\n result =\n this._matchTerminal(this._classMap, className, cssSelector, matchedCallback) || result;\n result =\n this._matchPartial(this._classPartialMap, className, cssSelector, matchedCallback) ||\n result;\n }\n }\n if (attrs) {\n for (var /** @type {?} */ i = 0; i < attrs.length; i += 2) {\n var /** @type {?} */ name = attrs[i];\n var /** @type {?} */ value = attrs[i + 1];\n var /** @type {?} */ terminalValuesMap = this._attrValueMap.get(name);\n if (value) {\n result =\n this._matchTerminal(terminalValuesMap, '', cssSelector, matchedCallback) || result;\n }\n result =\n this._matchTerminal(terminalValuesMap, value, cssSelector, matchedCallback) || result;\n var /** @type {?} */ partialValuesMap = this._attrValuePartialMap.get(name);\n if (value) {\n result = this._matchPartial(partialValuesMap, '', cssSelector, matchedCallback) || result;\n }\n result =\n this._matchPartial(partialValuesMap, value, cssSelector, matchedCallback) || result;\n }\n }\n return result;\n };\n /**\n * \\@internal\n * @param {?} map\n * @param {?} name\n * @param {?} cssSelector\n * @param {?} matchedCallback\n * @return {?}\n */\n SelectorMatcher.prototype._matchTerminal = function (map, name, cssSelector, matchedCallback) {\n if (!map || typeof name !== 'string') {\n return false;\n }\n var /** @type {?} */ selectables = map.get(name) || [];\n var /** @type {?} */ starSelectables = map.get('*');\n if (starSelectables) {\n selectables = selectables.concat(starSelectables);\n }\n if (selectables.length === 0) {\n return false;\n }\n var /** @type {?} */ selectable;\n var /** @type {?} */ result = false;\n for (var /** @type {?} */ i = 0; i < selectables.length; i++) {\n selectable = selectables[i];\n result = selectable.finalize(cssSelector, matchedCallback) || result;\n }\n return result;\n };\n /**\n * \\@internal\n * @param {?} map\n * @param {?} name\n * @param {?} cssSelector\n * @param {?} matchedCallback\n * @return {?}\n */\n SelectorMatcher.prototype._matchPartial = function (map, name, cssSelector, matchedCallback) {\n if (!map || typeof name !== 'string') {\n return false;\n }\n var /** @type {?} */ nestedSelector = map.get(name);\n if (!nestedSelector) {\n return false;\n }\n // TODO(perf): get rid of recursion and measure again\n // TODO(perf): don't pass the whole selector into the recursion,\n // but only the not processed parts\n return nestedSelector.match(cssSelector, matchedCallback);\n };\n return SelectorMatcher;\n}());\nvar SelectorListContext = (function () {\n /**\n * @param {?} selectors\n */\n function SelectorListContext(selectors) {\n this.selectors = selectors;\n this.alreadyMatched = false;\n }\n return SelectorListContext;\n}());\nvar SelectorContext = (function () {\n /**\n * @param {?} selector\n * @param {?} cbContext\n * @param {?} listContext\n */\n function SelectorContext(selector, cbContext, listContext) {\n this.selector = selector;\n this.cbContext = cbContext;\n this.listContext = listContext;\n this.notSelectors = selector.notSelectors;\n }\n /**\n * @param {?} cssSelector\n * @param {?} callback\n * @return {?}\n */\n SelectorContext.prototype.finalize = function (cssSelector, callback) {\n var /** @type {?} */ result = true;\n if (this.notSelectors.length > 0 && (!this.listContext || !this.listContext.alreadyMatched)) {\n var /** @type {?} */ notMatcher = SelectorMatcher.createNotMatcher(this.notSelectors);\n result = !notMatcher.match(cssSelector, null);\n }\n if (result && callback && (!this.listContext || !this.listContext.alreadyMatched)) {\n if (this.listContext) {\n this.listContext.alreadyMatched = true;\n }\n callback(this.selector, this.cbContext);\n }\n return result;\n };\n return SelectorContext;\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 */\nvar MODULE_SUFFIX = '';\nvar DASH_CASE_REGEXP = /-+([a-z0-9])/g;\n/**\n * @param {?} input\n * @return {?}\n */\n/**\n * @param {?} input\n * @return {?}\n */\nfunction dashCaseToCamelCase(input) {\n return input.replace(DASH_CASE_REGEXP, function () {\n var m = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n m[_i] = arguments[_i];\n }\n return m[1].toUpperCase();\n });\n}\n/**\n * @param {?} input\n * @param {?} defaultValues\n * @return {?}\n */\nfunction splitAtColon(input, defaultValues) {\n return _splitAt(input, ':', defaultValues);\n}\n/**\n * @param {?} input\n * @param {?} defaultValues\n * @return {?}\n */\nfunction splitAtPeriod(input, defaultValues) {\n return _splitAt(input, '.', defaultValues);\n}\n/**\n * @param {?} input\n * @param {?} character\n * @param {?} defaultValues\n * @return {?}\n */\nfunction _splitAt(input, character, defaultValues) {\n var /** @type {?} */ characterIndex = input.indexOf(character);\n if (characterIndex == -1)\n return defaultValues;\n return [input.slice(0, characterIndex).trim(), input.slice(characterIndex + 1).trim()];\n}\n/**\n * @param {?} value\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\nfunction visitValue(value, visitor, context) {\n if (Array.isArray(value)) {\n return visitor.visitArray(/** @type {?} */ (value), context);\n }\n if (isStrictStringMap(value)) {\n return visitor.visitStringMap(/** @type {?} */ (value), context);\n }\n if (value == null || typeof value == 'string' || typeof value == 'number' ||\n typeof value == 'boolean') {\n return visitor.visitPrimitive(value, context);\n }\n return visitor.visitOther(value, context);\n}\nvar ValueTransformer = (function () {\n function ValueTransformer() {\n }\n /**\n * @param {?} arr\n * @param {?} context\n * @return {?}\n */\n ValueTransformer.prototype.visitArray = function (arr, context) {\n var _this = this;\n return arr.map(function (value) { return visitValue(value, _this, context); });\n };\n /**\n * @param {?} map\n * @param {?} context\n * @return {?}\n */\n ValueTransformer.prototype.visitStringMap = function (map, context) {\n var _this = this;\n var /** @type {?} */ result = {};\n Object.keys(map).forEach(function (key) { result[key] = visitValue(map[key], _this, context); });\n return result;\n };\n /**\n * @param {?} value\n * @param {?} context\n * @return {?}\n */\n ValueTransformer.prototype.visitPrimitive = function (value, context) { return value; };\n /**\n * @param {?} value\n * @param {?} context\n * @return {?}\n */\n ValueTransformer.prototype.visitOther = function (value, context) { return value; };\n return ValueTransformer;\n}());\nvar SyncAsyncResult = (function () {\n /**\n * @param {?} syncResult\n * @param {?=} asyncResult\n */\n function SyncAsyncResult(syncResult, asyncResult) {\n if (asyncResult === void 0) { asyncResult = null; }\n this.syncResult = syncResult;\n this.asyncResult = asyncResult;\n if (!asyncResult) {\n this.asyncResult = Promise.resolve(syncResult);\n }\n }\n return SyncAsyncResult;\n}());\n/**\n * @param {?} msg\n * @return {?}\n */\nfunction syntaxError(msg) {\n var /** @type {?} */ error = Error(msg);\n ((error))[ERROR_SYNTAX_ERROR] = true;\n return error;\n}\nvar ERROR_SYNTAX_ERROR = 'ngSyntaxError';\n/**\n * @param {?} error\n * @return {?}\n */\nfunction isSyntaxError(error) {\n return ((error))[ERROR_SYNTAX_ERROR];\n}\n/**\n * @param {?} s\n * @return {?}\n */\nfunction escapeRegExp(s) {\n return s.replace(/([.*+?^=!:${}()|[\\]\\/\\\\])/g, '\\\\$1');\n}\nvar STRING_MAP_PROTO = Object.getPrototypeOf({});\n/**\n * @param {?} obj\n * @return {?}\n */\nfunction isStrictStringMap(obj) {\n return typeof obj === 'object' && obj !== null && Object.getPrototypeOf(obj) === STRING_MAP_PROTO;\n}\n/**\n * @param {?} str\n * @return {?}\n */\nfunction utf8Encode(str) {\n var /** @type {?} */ encoded = '';\n for (var /** @type {?} */ index = 0; index < str.length; index++) {\n var /** @type {?} */ codePoint = str.charCodeAt(index);\n // decode surrogate\n // see https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n if (codePoint >= 0xd800 && codePoint <= 0xdbff && str.length > (index + 1)) {\n var /** @type {?} */ low = str.charCodeAt(index + 1);\n if (low >= 0xdc00 && low <= 0xdfff) {\n index++;\n codePoint = ((codePoint - 0xd800) << 10) + low - 0xdc00 + 0x10000;\n }\n }\n if (codePoint <= 0x7f) {\n encoded += String.fromCharCode(codePoint);\n }\n else if (codePoint <= 0x7ff) {\n encoded += String.fromCharCode(((codePoint >> 6) & 0x1F) | 0xc0, (codePoint & 0x3f) | 0x80);\n }\n else if (codePoint <= 0xffff) {\n encoded += String.fromCharCode((codePoint >> 12) | 0xe0, ((codePoint >> 6) & 0x3f) | 0x80, (codePoint & 0x3f) | 0x80);\n }\n else if (codePoint <= 0x1fffff) {\n encoded += String.fromCharCode(((codePoint >> 18) & 0x07) | 0xf0, ((codePoint >> 12) & 0x3f) | 0x80, ((codePoint >> 6) & 0x3f) | 0x80, (codePoint & 0x3f) | 0x80);\n }\n }\n return encoded;\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// group 0: \"[prop] or (event) or @trigger\"\n// group 1: \"prop\" from \"[prop]\"\n// group 2: \"event\" from \"(event)\"\n// group 3: \"@trigger\" from \"@trigger\"\nvar HOST_REG_EXP = /^(?:(?:\\[([^\\]]+)\\])|(?:\\(([^\\)]+)\\)))|(\\@[-\\w]+)$/;\nvar CompileAnimationEntryMetadata = (function () {\n /**\n * @param {?=} name\n * @param {?=} definitions\n */\n function CompileAnimationEntryMetadata(name, definitions) {\n if (name === void 0) { name = null; }\n if (definitions === void 0) { definitions = null; }\n this.name = name;\n this.definitions = definitions;\n }\n return CompileAnimationEntryMetadata;\n}());\n/**\n * @abstract\n */\nvar CompileAnimationStateMetadata = (function () {\n function CompileAnimationStateMetadata() {\n }\n return CompileAnimationStateMetadata;\n}());\nvar CompileAnimationStateDeclarationMetadata = (function (_super) {\n __extends(CompileAnimationStateDeclarationMetadata, _super);\n /**\n * @param {?} stateNameExpr\n * @param {?} styles\n */\n function CompileAnimationStateDeclarationMetadata(stateNameExpr, styles) {\n var _this = _super.call(this) || this;\n _this.stateNameExpr = stateNameExpr;\n _this.styles = styles;\n return _this;\n }\n return CompileAnimationStateDeclarationMetadata;\n}(CompileAnimationStateMetadata));\nvar CompileAnimationStateTransitionMetadata = (function (_super) {\n __extends(CompileAnimationStateTransitionMetadata, _super);\n /**\n * @param {?} stateChangeExpr\n * @param {?} steps\n */\n function CompileAnimationStateTransitionMetadata(stateChangeExpr, steps) {\n var _this = _super.call(this) || this;\n _this.stateChangeExpr = stateChangeExpr;\n _this.steps = steps;\n return _this;\n }\n return CompileAnimationStateTransitionMetadata;\n}(CompileAnimationStateMetadata));\n/**\n * @abstract\n */\nvar CompileAnimationMetadata = (function () {\n function CompileAnimationMetadata() {\n }\n return CompileAnimationMetadata;\n}());\nvar CompileAnimationKeyframesSequenceMetadata = (function (_super) {\n __extends(CompileAnimationKeyframesSequenceMetadata, _super);\n /**\n * @param {?=} steps\n */\n function CompileAnimationKeyframesSequenceMetadata(steps) {\n if (steps === void 0) { steps = []; }\n var _this = _super.call(this) || this;\n _this.steps = steps;\n return _this;\n }\n return CompileAnimationKeyframesSequenceMetadata;\n}(CompileAnimationMetadata));\nvar CompileAnimationStyleMetadata = (function (_super) {\n __extends(CompileAnimationStyleMetadata, _super);\n /**\n * @param {?} offset\n * @param {?=} styles\n */\n function CompileAnimationStyleMetadata(offset, styles) {\n if (styles === void 0) { styles = null; }\n var _this = _super.call(this) || this;\n _this.offset = offset;\n _this.styles = styles;\n return _this;\n }\n return CompileAnimationStyleMetadata;\n}(CompileAnimationMetadata));\nvar CompileAnimationAnimateMetadata = (function (_super) {\n __extends(CompileAnimationAnimateMetadata, _super);\n /**\n * @param {?=} timings\n * @param {?=} styles\n */\n function CompileAnimationAnimateMetadata(timings, styles) {\n if (timings === void 0) { timings = 0; }\n if (styles === void 0) { styles = null; }\n var _this = _super.call(this) || this;\n _this.timings = timings;\n _this.styles = styles;\n return _this;\n }\n return CompileAnimationAnimateMetadata;\n}(CompileAnimationMetadata));\n/**\n * @abstract\n */\nvar CompileAnimationWithStepsMetadata = (function (_super) {\n __extends(CompileAnimationWithStepsMetadata, _super);\n /**\n * @param {?=} steps\n */\n function CompileAnimationWithStepsMetadata(steps) {\n if (steps === void 0) { steps = null; }\n var _this = _super.call(this) || this;\n _this.steps = steps;\n return _this;\n }\n return CompileAnimationWithStepsMetadata;\n}(CompileAnimationMetadata));\nvar CompileAnimationSequenceMetadata = (function (_super) {\n __extends(CompileAnimationSequenceMetadata, _super);\n /**\n * @param {?=} steps\n */\n function CompileAnimationSequenceMetadata(steps) {\n if (steps === void 0) { steps = null; }\n return _super.call(this, steps) || this;\n }\n return CompileAnimationSequenceMetadata;\n}(CompileAnimationWithStepsMetadata));\nvar CompileAnimationGroupMetadata = (function (_super) {\n __extends(CompileAnimationGroupMetadata, _super);\n /**\n * @param {?=} steps\n */\n function CompileAnimationGroupMetadata(steps) {\n if (steps === void 0) { steps = null; }\n return _super.call(this, steps) || this;\n }\n return CompileAnimationGroupMetadata;\n}(CompileAnimationWithStepsMetadata));\n/**\n * @param {?} name\n * @return {?}\n */\nfunction _sanitizeIdentifier(name) {\n return name.replace(/\\W/g, '_');\n}\nvar _anonymousTypeIndex = 0;\n/**\n * @param {?} compileIdentifier\n * @return {?}\n */\nfunction identifierName(compileIdentifier) {\n if (!compileIdentifier || !compileIdentifier.reference) {\n return null;\n }\n var /** @type {?} */ ref = compileIdentifier.reference;\n if (ref instanceof StaticSymbol) {\n return ref.name;\n }\n if (ref['__anonymousType']) {\n return ref['__anonymousType'];\n }\n var /** @type {?} */ identifier = ɵstringify(ref);\n if (identifier.indexOf('(') >= 0) {\n // case: anonymous functions!\n identifier = \"anonymous_\" + _anonymousTypeIndex++;\n ref['__anonymousType'] = identifier;\n }\n else {\n identifier = _sanitizeIdentifier(identifier);\n }\n return identifier;\n}\n/**\n * @param {?} compileIdentifier\n * @return {?}\n */\nfunction identifierModuleUrl(compileIdentifier) {\n var /** @type {?} */ ref = compileIdentifier.reference;\n if (ref instanceof StaticSymbol) {\n return ref.filePath;\n }\n return ɵreflector.importUri(ref);\n}\n/**\n * @param {?} compType\n * @param {?} embeddedTemplateIndex\n * @return {?}\n */\nfunction viewClassName(compType, embeddedTemplateIndex) {\n return \"View_\" + identifierName({ reference: compType }) + \"_\" + embeddedTemplateIndex;\n}\n/**\n * @param {?} compType\n * @return {?}\n */\nfunction rendererTypeName(compType) {\n return \"RenderType_\" + identifierName({ reference: compType });\n}\n/**\n * @param {?} compType\n * @return {?}\n */\nfunction hostViewClassName(compType) {\n return \"HostView_\" + identifierName({ reference: compType });\n}\n/**\n * @param {?} dirType\n * @return {?}\n */\nfunction dirWrapperClassName(dirType) {\n return \"Wrapper_\" + identifierName({ reference: dirType });\n}\n/**\n * @param {?} compType\n * @return {?}\n */\nfunction componentFactoryName(compType) {\n return identifierName({ reference: compType }) + \"NgFactory\";\n}\nvar CompileSummaryKind = {};\nCompileSummaryKind.Pipe = 0;\nCompileSummaryKind.Directive = 1;\nCompileSummaryKind.NgModule = 2;\nCompileSummaryKind.Injectable = 3;\nCompileSummaryKind[CompileSummaryKind.Pipe] = \"Pipe\";\nCompileSummaryKind[CompileSummaryKind.Directive] = \"Directive\";\nCompileSummaryKind[CompileSummaryKind.NgModule] = \"NgModule\";\nCompileSummaryKind[CompileSummaryKind.Injectable] = \"Injectable\";\n/**\n * @param {?} token\n * @return {?}\n */\nfunction tokenName(token) {\n return token.value != null ? _sanitizeIdentifier(token.value) : identifierName(token.identifier);\n}\n/**\n * @param {?} token\n * @return {?}\n */\nfunction tokenReference(token) {\n if (token.identifier != null) {\n return token.identifier.reference;\n }\n else {\n return token.value;\n }\n}\n/**\n * Metadata about a stylesheet\n */\nvar CompileStylesheetMetadata = (function () {\n /**\n * @param {?=} __0\n */\n function CompileStylesheetMetadata(_a) {\n var _b = _a === void 0 ? {} : _a, moduleUrl = _b.moduleUrl, styles = _b.styles, styleUrls = _b.styleUrls;\n this.moduleUrl = moduleUrl;\n this.styles = _normalizeArray(styles);\n this.styleUrls = _normalizeArray(styleUrls);\n }\n return CompileStylesheetMetadata;\n}());\n/**\n * Metadata regarding compilation of a template.\n */\nvar CompileTemplateMetadata = (function () {\n /**\n * @param {?=} __0\n */\n function CompileTemplateMetadata(_a) {\n var _b = _a === void 0 ? {} : _a, encapsulation = _b.encapsulation, template = _b.template, templateUrl = _b.templateUrl, styles = _b.styles, styleUrls = _b.styleUrls, externalStylesheets = _b.externalStylesheets, animations = _b.animations, ngContentSelectors = _b.ngContentSelectors, interpolation = _b.interpolation, isInline = _b.isInline;\n this.encapsulation = encapsulation;\n this.template = template;\n this.templateUrl = templateUrl;\n this.styles = _normalizeArray(styles);\n this.styleUrls = _normalizeArray(styleUrls);\n this.externalStylesheets = _normalizeArray(externalStylesheets);\n this.animations = animations ? flatten(animations) : [];\n this.ngContentSelectors = ngContentSelectors || [];\n if (interpolation && interpolation.length != 2) {\n throw new Error(\"'interpolation' should have a start and an end symbol.\");\n }\n this.interpolation = interpolation;\n this.isInline = isInline;\n }\n /**\n * @return {?}\n */\n CompileTemplateMetadata.prototype.toSummary = function () {\n return {\n animations: this.animations.map(function (anim) { return anim.name; }),\n ngContentSelectors: this.ngContentSelectors,\n encapsulation: this.encapsulation,\n };\n };\n return CompileTemplateMetadata;\n}());\n/**\n * Metadata regarding compilation of a directive.\n */\nvar CompileDirectiveMetadata = (function () {\n /**\n * @param {?=} __0\n */\n function CompileDirectiveMetadata(_a) {\n var _b = _a === void 0 ? {} : _a, isHost = _b.isHost, type = _b.type, isComponent = _b.isComponent, selector = _b.selector, exportAs = _b.exportAs, changeDetection = _b.changeDetection, inputs = _b.inputs, outputs = _b.outputs, hostListeners = _b.hostListeners, hostProperties = _b.hostProperties, hostAttributes = _b.hostAttributes, providers = _b.providers, viewProviders = _b.viewProviders, queries = _b.queries, viewQueries = _b.viewQueries, entryComponents = _b.entryComponents, template = _b.template, componentViewType = _b.componentViewType, rendererType = _b.rendererType, componentFactory = _b.componentFactory;\n this.isHost = !!isHost;\n this.type = type;\n this.isComponent = isComponent;\n this.selector = selector;\n this.exportAs = exportAs;\n this.changeDetection = changeDetection;\n this.inputs = inputs;\n this.outputs = outputs;\n this.hostListeners = hostListeners;\n this.hostProperties = hostProperties;\n this.hostAttributes = hostAttributes;\n this.providers = _normalizeArray(providers);\n this.viewProviders = _normalizeArray(viewProviders);\n this.queries = _normalizeArray(queries);\n this.viewQueries = _normalizeArray(viewQueries);\n this.entryComponents = _normalizeArray(entryComponents);\n this.template = template;\n this.componentViewType = componentViewType;\n this.rendererType = rendererType;\n this.componentFactory = componentFactory;\n }\n /**\n * @param {?=} __0\n * @return {?}\n */\n CompileDirectiveMetadata.create = function (_a) {\n var _b = _a === void 0 ? {} : _a, isHost = _b.isHost, type = _b.type, isComponent = _b.isComponent, selector = _b.selector, exportAs = _b.exportAs, changeDetection = _b.changeDetection, inputs = _b.inputs, outputs = _b.outputs, host = _b.host, providers = _b.providers, viewProviders = _b.viewProviders, queries = _b.queries, viewQueries = _b.viewQueries, entryComponents = _b.entryComponents, template = _b.template, componentViewType = _b.componentViewType, rendererType = _b.rendererType, componentFactory = _b.componentFactory;\n var /** @type {?} */ hostListeners = {};\n var /** @type {?} */ hostProperties = {};\n var /** @type {?} */ hostAttributes = {};\n if (host != null) {\n Object.keys(host).forEach(function (key) {\n var /** @type {?} */ value = host[key];\n var /** @type {?} */ matches = key.match(HOST_REG_EXP);\n if (matches === null) {\n hostAttributes[key] = value;\n }\n else if (matches[1] != null) {\n hostProperties[matches[1]] = value;\n }\n else if (matches[2] != null) {\n hostListeners[matches[2]] = value;\n }\n });\n }\n var /** @type {?} */ inputsMap = {};\n if (inputs != null) {\n inputs.forEach(function (bindConfig) {\n // canonical syntax: `dirProp: elProp`\n // if there is no `:`, use dirProp = elProp\n var /** @type {?} */ parts = splitAtColon(bindConfig, [bindConfig, bindConfig]);\n inputsMap[parts[0]] = parts[1];\n });\n }\n var /** @type {?} */ outputsMap = {};\n if (outputs != null) {\n outputs.forEach(function (bindConfig) {\n // canonical syntax: `dirProp: elProp`\n // if there is no `:`, use dirProp = elProp\n var /** @type {?} */ parts = splitAtColon(bindConfig, [bindConfig, bindConfig]);\n outputsMap[parts[0]] = parts[1];\n });\n }\n return new CompileDirectiveMetadata({\n isHost: isHost,\n type: type,\n isComponent: !!isComponent, selector: selector, exportAs: exportAs, changeDetection: changeDetection,\n inputs: inputsMap,\n outputs: outputsMap,\n hostListeners: hostListeners,\n hostProperties: hostProperties,\n hostAttributes: hostAttributes,\n providers: providers,\n viewProviders: viewProviders,\n queries: queries,\n viewQueries: viewQueries,\n entryComponents: entryComponents,\n template: template,\n componentViewType: componentViewType,\n rendererType: rendererType,\n componentFactory: componentFactory,\n });\n };\n /**\n * @return {?}\n */\n CompileDirectiveMetadata.prototype.toSummary = function () {\n return {\n summaryKind: CompileSummaryKind.Directive,\n type: this.type,\n isComponent: this.isComponent,\n selector: this.selector,\n exportAs: this.exportAs,\n inputs: this.inputs,\n outputs: this.outputs,\n hostListeners: this.hostListeners,\n hostProperties: this.hostProperties,\n hostAttributes: this.hostAttributes,\n providers: this.providers,\n viewProviders: this.viewProviders,\n queries: this.queries,\n viewQueries: this.viewQueries,\n entryComponents: this.entryComponents,\n changeDetection: this.changeDetection,\n template: this.template && this.template.toSummary(),\n componentViewType: this.componentViewType,\n rendererType: this.rendererType,\n componentFactory: this.componentFactory\n };\n };\n return CompileDirectiveMetadata;\n}());\n/**\n * Construct {\\@link CompileDirectiveMetadata} from {\\@link ComponentTypeMetadata} and a selector.\n * @param {?} hostTypeReference\n * @param {?} compMeta\n * @param {?} hostViewType\n * @return {?}\n */\nfunction createHostComponentMeta(hostTypeReference, compMeta, hostViewType) {\n var /** @type {?} */ template = CssSelector.parse(compMeta.selector)[0].getMatchingElementTemplate();\n return CompileDirectiveMetadata.create({\n isHost: true,\n type: { reference: hostTypeReference, diDeps: [], lifecycleHooks: [] },\n template: new CompileTemplateMetadata({\n encapsulation: ViewEncapsulation.None,\n template: template,\n templateUrl: '',\n styles: [],\n styleUrls: [],\n ngContentSelectors: [],\n animations: [],\n isInline: true,\n }),\n changeDetection: ChangeDetectionStrategy.Default,\n inputs: [],\n outputs: [],\n host: {},\n isComponent: true,\n selector: '*',\n providers: [],\n viewProviders: [],\n queries: [],\n viewQueries: [],\n componentViewType: hostViewType,\n rendererType: { id: '__Host__', encapsulation: ViewEncapsulation.None, styles: [], data: {} }\n });\n}\nvar CompilePipeMetadata = (function () {\n /**\n * @param {?=} __0\n */\n function CompilePipeMetadata(_a) {\n var _b = _a === void 0 ? {} : _a, type = _b.type, name = _b.name, pure = _b.pure;\n this.type = type;\n this.name = name;\n this.pure = !!pure;\n }\n /**\n * @return {?}\n */\n CompilePipeMetadata.prototype.toSummary = function () {\n return {\n summaryKind: CompileSummaryKind.Pipe,\n type: this.type,\n name: this.name,\n pure: this.pure\n };\n };\n return CompilePipeMetadata;\n}());\n/**\n * Metadata regarding compilation of a module.\n */\nvar CompileNgModuleMetadata = (function () {\n /**\n * @param {?=} __0\n */\n function CompileNgModuleMetadata(_a) {\n var _b = _a === void 0 ? {} : _a, type = _b.type, providers = _b.providers, declaredDirectives = _b.declaredDirectives, exportedDirectives = _b.exportedDirectives, declaredPipes = _b.declaredPipes, exportedPipes = _b.exportedPipes, entryComponents = _b.entryComponents, bootstrapComponents = _b.bootstrapComponents, importedModules = _b.importedModules, exportedModules = _b.exportedModules, schemas = _b.schemas, transitiveModule = _b.transitiveModule, id = _b.id;\n this.type = type;\n this.declaredDirectives = _normalizeArray(declaredDirectives);\n this.exportedDirectives = _normalizeArray(exportedDirectives);\n this.declaredPipes = _normalizeArray(declaredPipes);\n this.exportedPipes = _normalizeArray(exportedPipes);\n this.providers = _normalizeArray(providers);\n this.entryComponents = _normalizeArray(entryComponents);\n this.bootstrapComponents = _normalizeArray(bootstrapComponents);\n this.importedModules = _normalizeArray(importedModules);\n this.exportedModules = _normalizeArray(exportedModules);\n this.schemas = _normalizeArray(schemas);\n this.id = id;\n this.transitiveModule = transitiveModule;\n }\n /**\n * @return {?}\n */\n CompileNgModuleMetadata.prototype.toSummary = function () {\n return {\n summaryKind: CompileSummaryKind.NgModule,\n type: this.type,\n entryComponents: this.transitiveModule.entryComponents,\n providers: this.transitiveModule.providers,\n modules: this.transitiveModule.modules,\n exportedDirectives: this.transitiveModule.exportedDirectives,\n exportedPipes: this.transitiveModule.exportedPipes\n };\n };\n return CompileNgModuleMetadata;\n}());\nvar TransitiveCompileNgModuleMetadata = (function () {\n function TransitiveCompileNgModuleMetadata() {\n this.directivesSet = new Set();\n this.directives = [];\n this.exportedDirectivesSet = new Set();\n this.exportedDirectives = [];\n this.pipesSet = new Set();\n this.pipes = [];\n this.exportedPipesSet = new Set();\n this.exportedPipes = [];\n this.modulesSet = new Set();\n this.modules = [];\n this.entryComponentsSet = new Set();\n this.entryComponents = [];\n this.providers = [];\n }\n /**\n * @param {?} provider\n * @param {?} module\n * @return {?}\n */\n TransitiveCompileNgModuleMetadata.prototype.addProvider = function (provider, module) {\n this.providers.push({ provider: provider, module: module });\n };\n /**\n * @param {?} id\n * @return {?}\n */\n TransitiveCompileNgModuleMetadata.prototype.addDirective = function (id) {\n if (!this.directivesSet.has(id.reference)) {\n this.directivesSet.add(id.reference);\n this.directives.push(id);\n }\n };\n /**\n * @param {?} id\n * @return {?}\n */\n TransitiveCompileNgModuleMetadata.prototype.addExportedDirective = function (id) {\n if (!this.exportedDirectivesSet.has(id.reference)) {\n this.exportedDirectivesSet.add(id.reference);\n this.exportedDirectives.push(id);\n }\n };\n /**\n * @param {?} id\n * @return {?}\n */\n TransitiveCompileNgModuleMetadata.prototype.addPipe = function (id) {\n if (!this.pipesSet.has(id.reference)) {\n this.pipesSet.add(id.reference);\n this.pipes.push(id);\n }\n };\n /**\n * @param {?} id\n * @return {?}\n */\n TransitiveCompileNgModuleMetadata.prototype.addExportedPipe = function (id) {\n if (!this.exportedPipesSet.has(id.reference)) {\n this.exportedPipesSet.add(id.reference);\n this.exportedPipes.push(id);\n }\n };\n /**\n * @param {?} id\n * @return {?}\n */\n TransitiveCompileNgModuleMetadata.prototype.addModule = function (id) {\n if (!this.modulesSet.has(id.reference)) {\n this.modulesSet.add(id.reference);\n this.modules.push(id);\n }\n };\n /**\n * @param {?} ec\n * @return {?}\n */\n TransitiveCompileNgModuleMetadata.prototype.addEntryComponent = function (ec) {\n if (!this.entryComponentsSet.has(ec.componentType)) {\n this.entryComponentsSet.add(ec.componentType);\n this.entryComponents.push(ec);\n }\n };\n return TransitiveCompileNgModuleMetadata;\n}());\n/**\n * @param {?} obj\n * @return {?}\n */\nfunction _normalizeArray(obj) {\n return obj || [];\n}\nvar ProviderMeta = (function () {\n /**\n * @param {?} token\n * @param {?} __1\n */\n function ProviderMeta(token, _a) {\n var useClass = _a.useClass, useValue = _a.useValue, useExisting = _a.useExisting, useFactory = _a.useFactory, deps = _a.deps, multi = _a.multi;\n this.token = token;\n this.useClass = useClass;\n this.useValue = useValue;\n this.useExisting = useExisting;\n this.useFactory = useFactory;\n this.dependencies = deps;\n this.multi = !!multi;\n }\n return ProviderMeta;\n}());\n/**\n * @template T\n * @param {?} list\n * @return {?}\n */\nfunction flatten(list) {\n return list.reduce(function (flat, item) {\n var /** @type {?} */ flatItem = Array.isArray(item) ? flatten(item) : item;\n return ((flat)).concat(flatItem);\n }, []);\n}\n/**\n * @param {?} url\n * @return {?}\n */\nfunction sourceUrl(url) {\n // Note: We need 3 \"/\" so that ng shows up as a separate domain\n // in the chrome dev tools.\n return url.replace(/(\\w+:\\/\\/[\\w:-]+)?(\\/+)?/, 'ng:///');\n}\n/**\n * @param {?} ngModuleType\n * @param {?} compMeta\n * @param {?} templateMeta\n * @return {?}\n */\nfunction templateSourceUrl(ngModuleType, compMeta, templateMeta) {\n var /** @type {?} */ url;\n if (templateMeta.isInline) {\n if (compMeta.type.reference instanceof StaticSymbol) {\n // Note: a .ts file might contain multiple components with inline templates,\n // so we need to give them unique urls, as these will be used for sourcemaps.\n url = compMeta.type.reference.filePath + \".\" + compMeta.type.reference.name + \".html\";\n }\n else {\n url = identifierName(ngModuleType) + \"/\" + identifierName(compMeta.type) + \".html\";\n }\n }\n else {\n url = templateMeta.templateUrl;\n }\n // always prepend ng:// to make angular resources easy to find and not clobber\n // user resources.\n return sourceUrl(url);\n}\n/**\n * @param {?} meta\n * @param {?} id\n * @return {?}\n */\nfunction sharedStylesheetJitUrl(meta, id) {\n var /** @type {?} */ pathParts = meta.moduleUrl.split(/\\/\\\\/g);\n var /** @type {?} */ baseName = pathParts[pathParts.length - 1];\n return sourceUrl(\"css/\" + id + baseName + \".ngstyle.js\");\n}\n/**\n * @param {?} moduleMeta\n * @return {?}\n */\nfunction ngModuleJitUrl(moduleMeta) {\n return sourceUrl(identifierName(moduleMeta.type) + \"/module.ngfactory.js\");\n}\n/**\n * @param {?} ngModuleType\n * @param {?} compMeta\n * @return {?}\n */\nfunction templateJitUrl(ngModuleType, compMeta) {\n return sourceUrl(identifierName(ngModuleType) + \"/\" + identifierName(compMeta.type) + \".ngfactory.js\");\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 */\nvar CompilerConfig = (function () {\n /**\n * @param {?=} __0\n */\n function CompilerConfig(_a) {\n var _b = _a === void 0 ? {} : _a, _c = _b.defaultEncapsulation, defaultEncapsulation = _c === void 0 ? ViewEncapsulation.Emulated : _c, _d = _b.useJit, useJit = _d === void 0 ? true : _d, missingTranslation = _b.missingTranslation, enableLegacyTemplate = _b.enableLegacyTemplate;\n this.defaultEncapsulation = defaultEncapsulation;\n this.useJit = useJit;\n this.missingTranslation = missingTranslation;\n this.enableLegacyTemplate = enableLegacyTemplate !== false;\n }\n return CompilerConfig;\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 */\nvar ParserError = (function () {\n /**\n * @param {?} message\n * @param {?} input\n * @param {?} errLocation\n * @param {?=} ctxLocation\n */\n function ParserError(message, input, errLocation, ctxLocation) {\n this.input = input;\n this.errLocation = errLocation;\n this.ctxLocation = ctxLocation;\n this.message = \"Parser Error: \" + message + \" \" + errLocation + \" [\" + input + \"] in \" + ctxLocation;\n }\n return ParserError;\n}());\nvar ParseSpan = (function () {\n /**\n * @param {?} start\n * @param {?} end\n */\n function ParseSpan(start, end) {\n this.start = start;\n this.end = end;\n }\n return ParseSpan;\n}());\nvar AST = (function () {\n /**\n * @param {?} span\n */\n function AST(span) {\n this.span = span;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n AST.prototype.visit = function (visitor, context) {\n if (context === void 0) { context = null; }\n return null;\n };\n /**\n * @return {?}\n */\n AST.prototype.toString = function () { return 'AST'; };\n return AST;\n}());\n/**\n * Represents a quoted expression of the form:\n *\n * quote = prefix `:` uninterpretedExpression\n * prefix = identifier\n * uninterpretedExpression = arbitrary string\n *\n * A quoted expression is meant to be pre-processed by an AST transformer that\n * converts it into another AST that no longer contains quoted expressions.\n * It is meant to allow third-party developers to extend Angular template\n * expression language. The `uninterpretedExpression` part of the quote is\n * therefore not interpreted by the Angular's own expression parser.\n */\nvar Quote = (function (_super) {\n __extends(Quote, _super);\n /**\n * @param {?} span\n * @param {?} prefix\n * @param {?} uninterpretedExpression\n * @param {?} location\n */\n function Quote(span, prefix, uninterpretedExpression, location) {\n var _this = _super.call(this, span) || this;\n _this.prefix = prefix;\n _this.uninterpretedExpression = uninterpretedExpression;\n _this.location = location;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n Quote.prototype.visit = function (visitor, context) {\n if (context === void 0) { context = null; }\n return visitor.visitQuote(this, context);\n };\n /**\n * @return {?}\n */\n Quote.prototype.toString = function () { return 'Quote'; };\n return Quote;\n}(AST));\nvar EmptyExpr = (function (_super) {\n __extends(EmptyExpr, _super);\n function EmptyExpr() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n EmptyExpr.prototype.visit = function (visitor, context) {\n if (context === void 0) { context = null; }\n // do nothing\n };\n return EmptyExpr;\n}(AST));\nvar ImplicitReceiver = (function (_super) {\n __extends(ImplicitReceiver, _super);\n function ImplicitReceiver() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n ImplicitReceiver.prototype.visit = function (visitor, context) {\n if (context === void 0) { context = null; }\n return visitor.visitImplicitReceiver(this, context);\n };\n return ImplicitReceiver;\n}(AST));\n/**\n * Multiple expressions separated by a semicolon.\n */\nvar Chain = (function (_super) {\n __extends(Chain, _super);\n /**\n * @param {?} span\n * @param {?} expressions\n */\n function Chain(span, expressions) {\n var _this = _super.call(this, span) || this;\n _this.expressions = expressions;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n Chain.prototype.visit = function (visitor, context) {\n if (context === void 0) { context = null; }\n return visitor.visitChain(this, context);\n };\n return Chain;\n}(AST));\nvar Conditional = (function (_super) {\n __extends(Conditional, _super);\n /**\n * @param {?} span\n * @param {?} condition\n * @param {?} trueExp\n * @param {?} falseExp\n */\n function Conditional(span, condition, trueExp, falseExp) {\n var _this = _super.call(this, span) || this;\n _this.condition = condition;\n _this.trueExp = trueExp;\n _this.falseExp = falseExp;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n Conditional.prototype.visit = function (visitor, context) {\n if (context === void 0) { context = null; }\n return visitor.visitConditional(this, context);\n };\n return Conditional;\n}(AST));\nvar PropertyRead = (function (_super) {\n __extends(PropertyRead, _super);\n /**\n * @param {?} span\n * @param {?} receiver\n * @param {?} name\n */\n function PropertyRead(span, receiver, name) {\n var _this = _super.call(this, span) || this;\n _this.receiver = receiver;\n _this.name = name;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n PropertyRead.prototype.visit = function (visitor, context) {\n if (context === void 0) { context = null; }\n return visitor.visitPropertyRead(this, context);\n };\n return PropertyRead;\n}(AST));\nvar PropertyWrite = (function (_super) {\n __extends(PropertyWrite, _super);\n /**\n * @param {?} span\n * @param {?} receiver\n * @param {?} name\n * @param {?} value\n */\n function PropertyWrite(span, receiver, name, value) {\n var _this = _super.call(this, span) || this;\n _this.receiver = receiver;\n _this.name = name;\n _this.value = value;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n PropertyWrite.prototype.visit = function (visitor, context) {\n if (context === void 0) { context = null; }\n return visitor.visitPropertyWrite(this, context);\n };\n return PropertyWrite;\n}(AST));\nvar SafePropertyRead = (function (_super) {\n __extends(SafePropertyRead, _super);\n /**\n * @param {?} span\n * @param {?} receiver\n * @param {?} name\n */\n function SafePropertyRead(span, receiver, name) {\n var _this = _super.call(this, span) || this;\n _this.receiver = receiver;\n _this.name = name;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n SafePropertyRead.prototype.visit = function (visitor, context) {\n if (context === void 0) { context = null; }\n return visitor.visitSafePropertyRead(this, context);\n };\n return SafePropertyRead;\n}(AST));\nvar KeyedRead = (function (_super) {\n __extends(KeyedRead, _super);\n /**\n * @param {?} span\n * @param {?} obj\n * @param {?} key\n */\n function KeyedRead(span, obj, key) {\n var _this = _super.call(this, span) || this;\n _this.obj = obj;\n _this.key = key;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n KeyedRead.prototype.visit = function (visitor, context) {\n if (context === void 0) { context = null; }\n return visitor.visitKeyedRead(this, context);\n };\n return KeyedRead;\n}(AST));\nvar KeyedWrite = (function (_super) {\n __extends(KeyedWrite, _super);\n /**\n * @param {?} span\n * @param {?} obj\n * @param {?} key\n * @param {?} value\n */\n function KeyedWrite(span, obj, key, value) {\n var _this = _super.call(this, span) || this;\n _this.obj = obj;\n _this.key = key;\n _this.value = value;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n KeyedWrite.prototype.visit = function (visitor, context) {\n if (context === void 0) { context = null; }\n return visitor.visitKeyedWrite(this, context);\n };\n return KeyedWrite;\n}(AST));\nvar BindingPipe = (function (_super) {\n __extends(BindingPipe, _super);\n /**\n * @param {?} span\n * @param {?} exp\n * @param {?} name\n * @param {?} args\n */\n function BindingPipe(span, exp, name, args) {\n var _this = _super.call(this, span) || this;\n _this.exp = exp;\n _this.name = name;\n _this.args = args;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n BindingPipe.prototype.visit = function (visitor, context) {\n if (context === void 0) { context = null; }\n return visitor.visitPipe(this, context);\n };\n return BindingPipe;\n}(AST));\nvar LiteralPrimitive = (function (_super) {\n __extends(LiteralPrimitive, _super);\n /**\n * @param {?} span\n * @param {?} value\n */\n function LiteralPrimitive(span, value) {\n var _this = _super.call(this, span) || this;\n _this.value = value;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n LiteralPrimitive.prototype.visit = function (visitor, context) {\n if (context === void 0) { context = null; }\n return visitor.visitLiteralPrimitive(this, context);\n };\n return LiteralPrimitive;\n}(AST));\nvar LiteralArray = (function (_super) {\n __extends(LiteralArray, _super);\n /**\n * @param {?} span\n * @param {?} expressions\n */\n function LiteralArray(span, expressions) {\n var _this = _super.call(this, span) || this;\n _this.expressions = expressions;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n LiteralArray.prototype.visit = function (visitor, context) {\n if (context === void 0) { context = null; }\n return visitor.visitLiteralArray(this, context);\n };\n return LiteralArray;\n}(AST));\nvar LiteralMap = (function (_super) {\n __extends(LiteralMap, _super);\n /**\n * @param {?} span\n * @param {?} keys\n * @param {?} values\n */\n function LiteralMap(span, keys, values) {\n var _this = _super.call(this, span) || this;\n _this.keys = keys;\n _this.values = values;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n LiteralMap.prototype.visit = function (visitor, context) {\n if (context === void 0) { context = null; }\n return visitor.visitLiteralMap(this, context);\n };\n return LiteralMap;\n}(AST));\nvar Interpolation = (function (_super) {\n __extends(Interpolation, _super);\n /**\n * @param {?} span\n * @param {?} strings\n * @param {?} expressions\n */\n function Interpolation(span, strings, expressions) {\n var _this = _super.call(this, span) || this;\n _this.strings = strings;\n _this.expressions = expressions;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n Interpolation.prototype.visit = function (visitor, context) {\n if (context === void 0) { context = null; }\n return visitor.visitInterpolation(this, context);\n };\n return Interpolation;\n}(AST));\nvar Binary = (function (_super) {\n __extends(Binary, _super);\n /**\n * @param {?} span\n * @param {?} operation\n * @param {?} left\n * @param {?} right\n */\n function Binary(span, operation, left, right) {\n var _this = _super.call(this, span) || this;\n _this.operation = operation;\n _this.left = left;\n _this.right = right;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n Binary.prototype.visit = function (visitor, context) {\n if (context === void 0) { context = null; }\n return visitor.visitBinary(this, context);\n };\n return Binary;\n}(AST));\nvar PrefixNot = (function (_super) {\n __extends(PrefixNot, _super);\n /**\n * @param {?} span\n * @param {?} expression\n */\n function PrefixNot(span, expression) {\n var _this = _super.call(this, span) || this;\n _this.expression = expression;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n PrefixNot.prototype.visit = function (visitor, context) {\n if (context === void 0) { context = null; }\n return visitor.visitPrefixNot(this, context);\n };\n return PrefixNot;\n}(AST));\nvar MethodCall = (function (_super) {\n __extends(MethodCall, _super);\n /**\n * @param {?} span\n * @param {?} receiver\n * @param {?} name\n * @param {?} args\n */\n function MethodCall(span, receiver, name, args) {\n var _this = _super.call(this, span) || this;\n _this.receiver = receiver;\n _this.name = name;\n _this.args = args;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n MethodCall.prototype.visit = function (visitor, context) {\n if (context === void 0) { context = null; }\n return visitor.visitMethodCall(this, context);\n };\n return MethodCall;\n}(AST));\nvar SafeMethodCall = (function (_super) {\n __extends(SafeMethodCall, _super);\n /**\n * @param {?} span\n * @param {?} receiver\n * @param {?} name\n * @param {?} args\n */\n function SafeMethodCall(span, receiver, name, args) {\n var _this = _super.call(this, span) || this;\n _this.receiver = receiver;\n _this.name = name;\n _this.args = args;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n SafeMethodCall.prototype.visit = function (visitor, context) {\n if (context === void 0) { context = null; }\n return visitor.visitSafeMethodCall(this, context);\n };\n return SafeMethodCall;\n}(AST));\nvar FunctionCall = (function (_super) {\n __extends(FunctionCall, _super);\n /**\n * @param {?} span\n * @param {?} target\n * @param {?} args\n */\n function FunctionCall(span, target, args) {\n var _this = _super.call(this, span) || this;\n _this.target = target;\n _this.args = args;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n FunctionCall.prototype.visit = function (visitor, context) {\n if (context === void 0) { context = null; }\n return visitor.visitFunctionCall(this, context);\n };\n return FunctionCall;\n}(AST));\nvar ASTWithSource = (function (_super) {\n __extends(ASTWithSource, _super);\n /**\n * @param {?} ast\n * @param {?} source\n * @param {?} location\n * @param {?} errors\n */\n function ASTWithSource(ast, source, location, errors) {\n var _this = _super.call(this, new ParseSpan(0, source == null ? 0 : source.length)) || this;\n _this.ast = ast;\n _this.source = source;\n _this.location = location;\n _this.errors = errors;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n ASTWithSource.prototype.visit = function (visitor, context) {\n if (context === void 0) { context = null; }\n return this.ast.visit(visitor, context);\n };\n /**\n * @return {?}\n */\n ASTWithSource.prototype.toString = function () { return this.source + \" in \" + this.location; };\n return ASTWithSource;\n}(AST));\nvar TemplateBinding = (function () {\n /**\n * @param {?} span\n * @param {?} key\n * @param {?} keyIsVar\n * @param {?} name\n * @param {?} expression\n */\n function TemplateBinding(span, key, keyIsVar, name, expression) {\n this.span = span;\n this.key = key;\n this.keyIsVar = keyIsVar;\n this.name = name;\n this.expression = expression;\n }\n return TemplateBinding;\n}());\nvar RecursiveAstVisitor = (function () {\n function RecursiveAstVisitor() {\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor.prototype.visitBinary = function (ast, context) {\n ast.left.visit(this);\n ast.right.visit(this);\n return null;\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor.prototype.visitChain = function (ast, context) { return this.visitAll(ast.expressions, context); };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor.prototype.visitConditional = function (ast, context) {\n ast.condition.visit(this);\n ast.trueExp.visit(this);\n ast.falseExp.visit(this);\n return null;\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor.prototype.visitPipe = function (ast, context) {\n ast.exp.visit(this);\n this.visitAll(ast.args, context);\n return null;\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor.prototype.visitFunctionCall = function (ast, context) {\n ast.target.visit(this);\n this.visitAll(ast.args, context);\n return null;\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor.prototype.visitImplicitReceiver = function (ast, context) { return null; };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor.prototype.visitInterpolation = function (ast, context) {\n return this.visitAll(ast.expressions, context);\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor.prototype.visitKeyedRead = function (ast, context) {\n ast.obj.visit(this);\n ast.key.visit(this);\n return null;\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor.prototype.visitKeyedWrite = function (ast, context) {\n ast.obj.visit(this);\n ast.key.visit(this);\n ast.value.visit(this);\n return null;\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor.prototype.visitLiteralArray = function (ast, context) {\n return this.visitAll(ast.expressions, context);\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor.prototype.visitLiteralMap = function (ast, context) { return this.visitAll(ast.values, context); };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor.prototype.visitLiteralPrimitive = function (ast, context) { return null; };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor.prototype.visitMethodCall = function (ast, context) {\n ast.receiver.visit(this);\n return this.visitAll(ast.args, context);\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor.prototype.visitPrefixNot = function (ast, context) {\n ast.expression.visit(this);\n return null;\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor.prototype.visitPropertyRead = function (ast, context) {\n ast.receiver.visit(this);\n return null;\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor.prototype.visitPropertyWrite = function (ast, context) {\n ast.receiver.visit(this);\n ast.value.visit(this);\n return null;\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor.prototype.visitSafePropertyRead = function (ast, context) {\n ast.receiver.visit(this);\n return null;\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor.prototype.visitSafeMethodCall = function (ast, context) {\n ast.receiver.visit(this);\n return this.visitAll(ast.args, context);\n };\n /**\n * @param {?} asts\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor.prototype.visitAll = function (asts, context) {\n var _this = this;\n asts.forEach(function (ast) { return ast.visit(_this, context); });\n return null;\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor.prototype.visitQuote = function (ast, context) { return null; };\n return RecursiveAstVisitor;\n}());\nvar AstTransformer = (function () {\n function AstTransformer() {\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AstTransformer.prototype.visitImplicitReceiver = function (ast, context) { return ast; };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AstTransformer.prototype.visitInterpolation = function (ast, context) {\n return new Interpolation(ast.span, ast.strings, this.visitAll(ast.expressions));\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AstTransformer.prototype.visitLiteralPrimitive = function (ast, context) {\n return new LiteralPrimitive(ast.span, ast.value);\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AstTransformer.prototype.visitPropertyRead = function (ast, context) {\n return new PropertyRead(ast.span, ast.receiver.visit(this), ast.name);\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AstTransformer.prototype.visitPropertyWrite = function (ast, context) {\n return new PropertyWrite(ast.span, ast.receiver.visit(this), ast.name, ast.value.visit(this));\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AstTransformer.prototype.visitSafePropertyRead = function (ast, context) {\n return new SafePropertyRead(ast.span, ast.receiver.visit(this), ast.name);\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AstTransformer.prototype.visitMethodCall = function (ast, context) {\n return new MethodCall(ast.span, ast.receiver.visit(this), ast.name, this.visitAll(ast.args));\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AstTransformer.prototype.visitSafeMethodCall = function (ast, context) {\n return new SafeMethodCall(ast.span, ast.receiver.visit(this), ast.name, this.visitAll(ast.args));\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AstTransformer.prototype.visitFunctionCall = function (ast, context) {\n return new FunctionCall(ast.span, ast.target.visit(this), this.visitAll(ast.args));\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AstTransformer.prototype.visitLiteralArray = function (ast, context) {\n return new LiteralArray(ast.span, this.visitAll(ast.expressions));\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AstTransformer.prototype.visitLiteralMap = function (ast, context) {\n return new LiteralMap(ast.span, ast.keys, this.visitAll(ast.values));\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AstTransformer.prototype.visitBinary = function (ast, context) {\n return new Binary(ast.span, ast.operation, ast.left.visit(this), ast.right.visit(this));\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AstTransformer.prototype.visitPrefixNot = function (ast, context) {\n return new PrefixNot(ast.span, ast.expression.visit(this));\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AstTransformer.prototype.visitConditional = function (ast, context) {\n return new Conditional(ast.span, ast.condition.visit(this), ast.trueExp.visit(this), ast.falseExp.visit(this));\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AstTransformer.prototype.visitPipe = function (ast, context) {\n return new BindingPipe(ast.span, ast.exp.visit(this), ast.name, this.visitAll(ast.args));\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AstTransformer.prototype.visitKeyedRead = function (ast, context) {\n return new KeyedRead(ast.span, ast.obj.visit(this), ast.key.visit(this));\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AstTransformer.prototype.visitKeyedWrite = function (ast, context) {\n return new KeyedWrite(ast.span, ast.obj.visit(this), ast.key.visit(this), ast.value.visit(this));\n };\n /**\n * @param {?} asts\n * @return {?}\n */\n AstTransformer.prototype.visitAll = function (asts) {\n var /** @type {?} */ res = new Array(asts.length);\n for (var /** @type {?} */ i = 0; i < asts.length; ++i) {\n res[i] = asts[i].visit(this);\n }\n return res;\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AstTransformer.prototype.visitChain = function (ast, context) {\n return new Chain(ast.span, this.visitAll(ast.expressions));\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AstTransformer.prototype.visitQuote = function (ast, context) {\n return new Quote(ast.span, ast.prefix, ast.uninterpretedExpression, ast.location);\n };\n return AstTransformer;\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 */\nvar $EOF = 0;\nvar $TAB = 9;\nvar $LF = 10;\nvar $VTAB = 11;\nvar $FF = 12;\nvar $CR = 13;\nvar $SPACE = 32;\nvar $BANG = 33;\nvar $DQ = 34;\nvar $HASH = 35;\nvar $$ = 36;\nvar $PERCENT = 37;\nvar $AMPERSAND = 38;\nvar $SQ = 39;\nvar $LPAREN = 40;\nvar $RPAREN = 41;\nvar $STAR = 42;\nvar $PLUS = 43;\nvar $COMMA = 44;\nvar $MINUS = 45;\nvar $PERIOD = 46;\nvar $SLASH = 47;\nvar $COLON = 58;\nvar $SEMICOLON = 59;\nvar $LT = 60;\nvar $EQ = 61;\nvar $GT = 62;\nvar $QUESTION = 63;\nvar $0 = 48;\nvar $9 = 57;\nvar $A = 65;\nvar $E = 69;\nvar $F = 70;\nvar $X = 88;\nvar $Z = 90;\nvar $LBRACKET = 91;\nvar $BACKSLASH = 92;\nvar $RBRACKET = 93;\nvar $CARET = 94;\nvar $_ = 95;\nvar $a = 97;\nvar $e = 101;\nvar $f = 102;\nvar $n = 110;\nvar $r = 114;\nvar $t = 116;\nvar $u = 117;\nvar $v = 118;\nvar $x = 120;\nvar $z = 122;\nvar $LBRACE = 123;\nvar $BAR = 124;\nvar $RBRACE = 125;\nvar $NBSP = 160;\nvar $BT = 96;\n/**\n * @param {?} code\n * @return {?}\n */\nfunction isWhitespace(code) {\n return (code >= $TAB && code <= $SPACE) || (code == $NBSP);\n}\n/**\n * @param {?} code\n * @return {?}\n */\nfunction isDigit(code) {\n return $0 <= code && code <= $9;\n}\n/**\n * @param {?} code\n * @return {?}\n */\nfunction isAsciiLetter(code) {\n return code >= $a && code <= $z || code >= $A && code <= $Z;\n}\n/**\n * @param {?} code\n * @return {?}\n */\nfunction isAsciiHexDigit(code) {\n return code >= $a && code <= $f || code >= $A && code <= $F || isDigit(code);\n}\n/**\n * A replacement for \\@Injectable to be used in the compiler, so that\n * we don't try to evaluate the metadata in the compiler during AoT.\n * This decorator is enough to make the compiler work with the ReflectiveInjector though.\n * \\@Annotation\n * @return {?}\n */\nfunction CompilerInjectable() {\n return function (x) { return x; };\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 * @param {?} identifier\n * @param {?} value\n * @return {?}\n */\nfunction assertArrayOfStrings(identifier, value) {\n if (!isDevMode() || value == null) {\n return;\n }\n if (!Array.isArray(value)) {\n throw new Error(\"Expected '\" + identifier + \"' to be an array of strings.\");\n }\n for (var /** @type {?} */ i = 0; i < value.length; i += 1) {\n if (typeof value[i] !== 'string') {\n throw new Error(\"Expected '\" + identifier + \"' to be an array of strings.\");\n }\n }\n}\nvar INTERPOLATION_BLACKLIST_REGEXPS = [\n /^\\s*$/,\n /[<>]/,\n /^[{}]$/,\n /&(#|[a-z])/i,\n /^\\/\\//,\n];\n/**\n * @param {?} identifier\n * @param {?} value\n * @return {?}\n */\nfunction assertInterpolationSymbols(identifier, value) {\n if (value != null && !(Array.isArray(value) && value.length == 2)) {\n throw new Error(\"Expected '\" + identifier + \"' to be an array, [start, end].\");\n }\n else if (isDevMode() && value != null) {\n var /** @type {?} */ start_1 = (value[0]);\n var /** @type {?} */ end_1 = (value[1]);\n // black list checking\n INTERPOLATION_BLACKLIST_REGEXPS.forEach(function (regexp) {\n if (regexp.test(start_1) || regexp.test(end_1)) {\n throw new Error(\"['\" + start_1 + \"', '\" + end_1 + \"'] contains unusable interpolation symbol.\");\n }\n });\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 */\nvar InterpolationConfig = (function () {\n /**\n * @param {?} start\n * @param {?} end\n */\n function InterpolationConfig(start, end) {\n this.start = start;\n this.end = end;\n }\n /**\n * @param {?} markers\n * @return {?}\n */\n InterpolationConfig.fromArray = function (markers) {\n if (!markers) {\n return DEFAULT_INTERPOLATION_CONFIG;\n }\n assertInterpolationSymbols('interpolation', markers);\n return new InterpolationConfig(markers[0], markers[1]);\n };\n ;\n return InterpolationConfig;\n}());\nvar DEFAULT_INTERPOLATION_CONFIG = new InterpolationConfig('{{', '}}');\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 */\nvar TokenType = {};\nTokenType.Character = 0;\nTokenType.Identifier = 1;\nTokenType.Keyword = 2;\nTokenType.String = 3;\nTokenType.Operator = 4;\nTokenType.Number = 5;\nTokenType.Error = 6;\nTokenType[TokenType.Character] = \"Character\";\nTokenType[TokenType.Identifier] = \"Identifier\";\nTokenType[TokenType.Keyword] = \"Keyword\";\nTokenType[TokenType.String] = \"String\";\nTokenType[TokenType.Operator] = \"Operator\";\nTokenType[TokenType.Number] = \"Number\";\nTokenType[TokenType.Error] = \"Error\";\nvar KEYWORDS = ['var', 'let', 'as', 'null', 'undefined', 'true', 'false', 'if', 'else', 'this'];\nvar Lexer = (function () {\n function Lexer() {\n }\n /**\n * @param {?} text\n * @return {?}\n */\n Lexer.prototype.tokenize = function (text) {\n var /** @type {?} */ scanner = new _Scanner(text);\n var /** @type {?} */ tokens = [];\n var /** @type {?} */ token = scanner.scanToken();\n while (token != null) {\n tokens.push(token);\n token = scanner.scanToken();\n }\n return tokens;\n };\n return Lexer;\n}());\nLexer.decorators = [\n { type: CompilerInjectable },\n];\n/**\n * @nocollapse\n */\nLexer.ctorParameters = function () { return []; };\nvar Token = (function () {\n /**\n * @param {?} index\n * @param {?} type\n * @param {?} numValue\n * @param {?} strValue\n */\n function Token(index, type, numValue, strValue) {\n this.index = index;\n this.type = type;\n this.numValue = numValue;\n this.strValue = strValue;\n }\n /**\n * @param {?} code\n * @return {?}\n */\n Token.prototype.isCharacter = function (code) {\n return this.type == TokenType.Character && this.numValue == code;\n };\n /**\n * @return {?}\n */\n Token.prototype.isNumber = function () { return this.type == TokenType.Number; };\n /**\n * @return {?}\n */\n Token.prototype.isString = function () { return this.type == TokenType.String; };\n /**\n * @param {?} operater\n * @return {?}\n */\n Token.prototype.isOperator = function (operater) {\n return this.type == TokenType.Operator && this.strValue == operater;\n };\n /**\n * @return {?}\n */\n Token.prototype.isIdentifier = function () { return this.type == TokenType.Identifier; };\n /**\n * @return {?}\n */\n Token.prototype.isKeyword = function () { return this.type == TokenType.Keyword; };\n /**\n * @return {?}\n */\n Token.prototype.isKeywordLet = function () { return this.type == TokenType.Keyword && this.strValue == 'let'; };\n /**\n * @return {?}\n */\n Token.prototype.isKeywordAs = function () { return this.type == TokenType.Keyword && this.strValue == 'as'; };\n /**\n * @return {?}\n */\n Token.prototype.isKeywordNull = function () { return this.type == TokenType.Keyword && this.strValue == 'null'; };\n /**\n * @return {?}\n */\n Token.prototype.isKeywordUndefined = function () {\n return this.type == TokenType.Keyword && this.strValue == 'undefined';\n };\n /**\n * @return {?}\n */\n Token.prototype.isKeywordTrue = function () { return this.type == TokenType.Keyword && this.strValue == 'true'; };\n /**\n * @return {?}\n */\n Token.prototype.isKeywordFalse = function () { return this.type == TokenType.Keyword && this.strValue == 'false'; };\n /**\n * @return {?}\n */\n Token.prototype.isKeywordThis = function () { return this.type == TokenType.Keyword && this.strValue == 'this'; };\n /**\n * @return {?}\n */\n Token.prototype.isError = function () { return this.type == TokenType.Error; };\n /**\n * @return {?}\n */\n Token.prototype.toNumber = function () { return this.type == TokenType.Number ? this.numValue : -1; };\n /**\n * @return {?}\n */\n Token.prototype.toString = function () {\n switch (this.type) {\n case TokenType.Character:\n case TokenType.Identifier:\n case TokenType.Keyword:\n case TokenType.Operator:\n case TokenType.String:\n case TokenType.Error:\n return this.strValue;\n case TokenType.Number:\n return this.numValue.toString();\n default:\n return null;\n }\n };\n return Token;\n}());\n/**\n * @param {?} index\n * @param {?} code\n * @return {?}\n */\nfunction newCharacterToken(index, code) {\n return new Token(index, TokenType.Character, code, String.fromCharCode(code));\n}\n/**\n * @param {?} index\n * @param {?} text\n * @return {?}\n */\nfunction newIdentifierToken(index, text) {\n return new Token(index, TokenType.Identifier, 0, text);\n}\n/**\n * @param {?} index\n * @param {?} text\n * @return {?}\n */\nfunction newKeywordToken(index, text) {\n return new Token(index, TokenType.Keyword, 0, text);\n}\n/**\n * @param {?} index\n * @param {?} text\n * @return {?}\n */\nfunction newOperatorToken(index, text) {\n return new Token(index, TokenType.Operator, 0, text);\n}\n/**\n * @param {?} index\n * @param {?} text\n * @return {?}\n */\nfunction newStringToken(index, text) {\n return new Token(index, TokenType.String, 0, text);\n}\n/**\n * @param {?} index\n * @param {?} n\n * @return {?}\n */\nfunction newNumberToken(index, n) {\n return new Token(index, TokenType.Number, n, '');\n}\n/**\n * @param {?} index\n * @param {?} message\n * @return {?}\n */\nfunction newErrorToken(index, message) {\n return new Token(index, TokenType.Error, 0, message);\n}\nvar EOF = new Token(-1, TokenType.Character, 0, '');\nvar _Scanner = (function () {\n /**\n * @param {?} input\n */\n function _Scanner(input) {\n this.input = input;\n this.peek = 0;\n this.index = -1;\n this.length = input.length;\n this.advance();\n }\n /**\n * @return {?}\n */\n _Scanner.prototype.advance = function () {\n this.peek = ++this.index >= this.length ? $EOF : this.input.charCodeAt(this.index);\n };\n /**\n * @return {?}\n */\n _Scanner.prototype.scanToken = function () {\n var /** @type {?} */ input = this.input, /** @type {?} */ length = this.length;\n var /** @type {?} */ peek = this.peek, /** @type {?} */ index = this.index;\n // Skip whitespace.\n while (peek <= $SPACE) {\n if (++index >= length) {\n peek = $EOF;\n break;\n }\n else {\n peek = input.charCodeAt(index);\n }\n }\n this.peek = peek;\n this.index = index;\n if (index >= length) {\n return null;\n }\n // Handle identifiers and numbers.\n if (isIdentifierStart(peek))\n return this.scanIdentifier();\n if (isDigit(peek))\n return this.scanNumber(index);\n var /** @type {?} */ start = index;\n switch (peek) {\n case $PERIOD:\n this.advance();\n return isDigit(this.peek) ? this.scanNumber(start) :\n newCharacterToken(start, $PERIOD);\n case $LPAREN:\n case $RPAREN:\n case $LBRACE:\n case $RBRACE:\n case $LBRACKET:\n case $RBRACKET:\n case $COMMA:\n case $COLON:\n case $SEMICOLON:\n return this.scanCharacter(start, peek);\n case $SQ:\n case $DQ:\n return this.scanString();\n case $HASH:\n case $PLUS:\n case $MINUS:\n case $STAR:\n case $SLASH:\n case $PERCENT:\n case $CARET:\n return this.scanOperator(start, String.fromCharCode(peek));\n case $QUESTION:\n return this.scanComplexOperator(start, '?', $PERIOD, '.');\n case $LT:\n case $GT:\n return this.scanComplexOperator(start, String.fromCharCode(peek), $EQ, '=');\n case $BANG:\n case $EQ:\n return this.scanComplexOperator(start, String.fromCharCode(peek), $EQ, '=', $EQ, '=');\n case $AMPERSAND:\n return this.scanComplexOperator(start, '&', $AMPERSAND, '&');\n case $BAR:\n return this.scanComplexOperator(start, '|', $BAR, '|');\n case $NBSP:\n while (isWhitespace(this.peek))\n this.advance();\n return this.scanToken();\n }\n this.advance();\n return this.error(\"Unexpected character [\" + String.fromCharCode(peek) + \"]\", 0);\n };\n /**\n * @param {?} start\n * @param {?} code\n * @return {?}\n */\n _Scanner.prototype.scanCharacter = function (start, code) {\n this.advance();\n return newCharacterToken(start, code);\n };\n /**\n * @param {?} start\n * @param {?} str\n * @return {?}\n */\n _Scanner.prototype.scanOperator = function (start, str) {\n this.advance();\n return newOperatorToken(start, str);\n };\n /**\n * Tokenize a 2/3 char long operator\n *\n * @param {?} start start index in the expression\n * @param {?} one first symbol (always part of the operator)\n * @param {?} twoCode code point for the second symbol\n * @param {?} two second symbol (part of the operator when the second code point matches)\n * @param {?=} threeCode code point for the third symbol\n * @param {?=} three third symbol (part of the operator when provided and matches source expression)\n * @return {?}\n */\n _Scanner.prototype.scanComplexOperator = function (start, one, twoCode, two, threeCode, three) {\n this.advance();\n var /** @type {?} */ str = one;\n if (this.peek == twoCode) {\n this.advance();\n str += two;\n }\n if (threeCode != null && this.peek == threeCode) {\n this.advance();\n str += three;\n }\n return newOperatorToken(start, str);\n };\n /**\n * @return {?}\n */\n _Scanner.prototype.scanIdentifier = function () {\n var /** @type {?} */ start = this.index;\n this.advance();\n while (isIdentifierPart(this.peek))\n this.advance();\n var /** @type {?} */ str = this.input.substring(start, this.index);\n return KEYWORDS.indexOf(str) > -1 ? newKeywordToken(start, str) :\n newIdentifierToken(start, str);\n };\n /**\n * @param {?} start\n * @return {?}\n */\n _Scanner.prototype.scanNumber = function (start) {\n var /** @type {?} */ simple = (this.index === start);\n this.advance(); // Skip initial digit.\n while (true) {\n if (isDigit(this.peek)) {\n }\n else if (this.peek == $PERIOD) {\n simple = false;\n }\n else if (isExponentStart(this.peek)) {\n this.advance();\n if (isExponentSign(this.peek))\n this.advance();\n if (!isDigit(this.peek))\n return this.error('Invalid exponent', -1);\n simple = false;\n }\n else {\n break;\n }\n this.advance();\n }\n var /** @type {?} */ str = this.input.substring(start, this.index);\n var /** @type {?} */ value = simple ? parseIntAutoRadix(str) : parseFloat(str);\n return newNumberToken(start, value);\n };\n /**\n * @return {?}\n */\n _Scanner.prototype.scanString = function () {\n var /** @type {?} */ start = this.index;\n var /** @type {?} */ quote = this.peek;\n this.advance(); // Skip initial quote.\n var /** @type {?} */ buffer = '';\n var /** @type {?} */ marker = this.index;\n var /** @type {?} */ input = this.input;\n while (this.peek != quote) {\n if (this.peek == $BACKSLASH) {\n buffer += input.substring(marker, this.index);\n this.advance();\n var /** @type {?} */ unescapedCode = void 0;\n // Workaround for TS2.1-introduced type strictness\n this.peek = this.peek;\n if (this.peek == $u) {\n // 4 character hex code for unicode character.\n var /** @type {?} */ hex = input.substring(this.index + 1, this.index + 5);\n if (/^[0-9a-f]+$/i.test(hex)) {\n unescapedCode = parseInt(hex, 16);\n }\n else {\n return this.error(\"Invalid unicode escape [\\\\u\" + hex + \"]\", 0);\n }\n for (var /** @type {?} */ i = 0; i < 5; i++) {\n this.advance();\n }\n }\n else {\n unescapedCode = unescape(this.peek);\n this.advance();\n }\n buffer += String.fromCharCode(unescapedCode);\n marker = this.index;\n }\n else if (this.peek == $EOF) {\n return this.error('Unterminated quote', 0);\n }\n else {\n this.advance();\n }\n }\n var /** @type {?} */ last = input.substring(marker, this.index);\n this.advance(); // Skip terminating quote.\n return newStringToken(start, buffer + last);\n };\n /**\n * @param {?} message\n * @param {?} offset\n * @return {?}\n */\n _Scanner.prototype.error = function (message, offset) {\n var /** @type {?} */ position = this.index + offset;\n return newErrorToken(position, \"Lexer Error: \" + message + \" at column \" + position + \" in expression [\" + this.input + \"]\");\n };\n return _Scanner;\n}());\n/**\n * @param {?} code\n * @return {?}\n */\nfunction isIdentifierStart(code) {\n return ($a <= code && code <= $z) || ($A <= code && code <= $Z) ||\n (code == $_) || (code == $$);\n}\n/**\n * @param {?} input\n * @return {?}\n */\nfunction isIdentifier(input) {\n if (input.length == 0)\n return false;\n var /** @type {?} */ scanner = new _Scanner(input);\n if (!isIdentifierStart(scanner.peek))\n return false;\n scanner.advance();\n while (scanner.peek !== $EOF) {\n if (!isIdentifierPart(scanner.peek))\n return false;\n scanner.advance();\n }\n return true;\n}\n/**\n * @param {?} code\n * @return {?}\n */\nfunction isIdentifierPart(code) {\n return isAsciiLetter(code) || isDigit(code) || (code == $_) ||\n (code == $$);\n}\n/**\n * @param {?} code\n * @return {?}\n */\nfunction isExponentStart(code) {\n return code == $e || code == $E;\n}\n/**\n * @param {?} code\n * @return {?}\n */\nfunction isExponentSign(code) {\n return code == $MINUS || code == $PLUS;\n}\n/**\n * @param {?} code\n * @return {?}\n */\nfunction isQuote(code) {\n return code === $SQ || code === $DQ || code === $BT;\n}\n/**\n * @param {?} code\n * @return {?}\n */\nfunction unescape(code) {\n switch (code) {\n case $n:\n return $LF;\n case $f:\n return $FF;\n case $r:\n return $CR;\n case $t:\n return $TAB;\n case $v:\n return $VTAB;\n default:\n return code;\n }\n}\n/**\n * @param {?} text\n * @return {?}\n */\nfunction parseIntAutoRadix(text) {\n var /** @type {?} */ result = parseInt(text);\n if (isNaN(result)) {\n throw new Error('Invalid integer literal when parsing ' + text);\n }\n return result;\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 */\nvar SplitInterpolation = (function () {\n /**\n * @param {?} strings\n * @param {?} expressions\n * @param {?} offsets\n */\n function SplitInterpolation(strings, expressions, offsets) {\n this.strings = strings;\n this.expressions = expressions;\n this.offsets = offsets;\n }\n return SplitInterpolation;\n}());\nvar TemplateBindingParseResult = (function () {\n /**\n * @param {?} templateBindings\n * @param {?} warnings\n * @param {?} errors\n */\n function TemplateBindingParseResult(templateBindings, warnings, errors) {\n this.templateBindings = templateBindings;\n this.warnings = warnings;\n this.errors = errors;\n }\n return TemplateBindingParseResult;\n}());\n/**\n * @param {?} config\n * @return {?}\n */\nfunction _createInterpolateRegExp(config) {\n var /** @type {?} */ pattern = escapeRegExp(config.start) + '([\\\\s\\\\S]*?)' + escapeRegExp(config.end);\n return new RegExp(pattern, 'g');\n}\nvar Parser = (function () {\n /**\n * @param {?} _lexer\n */\n function Parser(_lexer) {\n this._lexer = _lexer;\n this.errors = [];\n }\n /**\n * @param {?} input\n * @param {?} location\n * @param {?=} interpolationConfig\n * @return {?}\n */\n Parser.prototype.parseAction = function (input, location, interpolationConfig) {\n if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; }\n this._checkNoInterpolation(input, location, interpolationConfig);\n var /** @type {?} */ sourceToLex = this._stripComments(input);\n var /** @type {?} */ tokens = this._lexer.tokenize(this._stripComments(input));\n var /** @type {?} */ ast = new _ParseAST(input, location, tokens, sourceToLex.length, true, this.errors, input.length - sourceToLex.length)\n .parseChain();\n return new ASTWithSource(ast, input, location, this.errors);\n };\n /**\n * @param {?} input\n * @param {?} location\n * @param {?=} interpolationConfig\n * @return {?}\n */\n Parser.prototype.parseBinding = function (input, location, interpolationConfig) {\n if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; }\n var /** @type {?} */ ast = this._parseBindingAst(input, location, interpolationConfig);\n return new ASTWithSource(ast, input, location, this.errors);\n };\n /**\n * @param {?} input\n * @param {?} location\n * @param {?=} interpolationConfig\n * @return {?}\n */\n Parser.prototype.parseSimpleBinding = function (input, location, interpolationConfig) {\n if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; }\n var /** @type {?} */ ast = this._parseBindingAst(input, location, interpolationConfig);\n var /** @type {?} */ errors = SimpleExpressionChecker.check(ast);\n if (errors.length > 0) {\n this._reportError(\"Host binding expression cannot contain \" + errors.join(' '), input, location);\n }\n return new ASTWithSource(ast, input, location, this.errors);\n };\n /**\n * @param {?} message\n * @param {?} input\n * @param {?} errLocation\n * @param {?=} ctxLocation\n * @return {?}\n */\n Parser.prototype._reportError = function (message, input, errLocation, ctxLocation) {\n this.errors.push(new ParserError(message, input, errLocation, ctxLocation));\n };\n /**\n * @param {?} input\n * @param {?} location\n * @param {?} interpolationConfig\n * @return {?}\n */\n Parser.prototype._parseBindingAst = function (input, location, interpolationConfig) {\n // Quotes expressions use 3rd-party expression language. We don't want to use\n // our lexer or parser for that, so we check for that ahead of time.\n var /** @type {?} */ quote = this._parseQuote(input, location);\n if (quote != null) {\n return quote;\n }\n this._checkNoInterpolation(input, location, interpolationConfig);\n var /** @type {?} */ sourceToLex = this._stripComments(input);\n var /** @type {?} */ tokens = this._lexer.tokenize(sourceToLex);\n return new _ParseAST(input, location, tokens, sourceToLex.length, false, this.errors, input.length - sourceToLex.length)\n .parseChain();\n };\n /**\n * @param {?} input\n * @param {?} location\n * @return {?}\n */\n Parser.prototype._parseQuote = function (input, location) {\n if (input == null)\n return null;\n var /** @type {?} */ prefixSeparatorIndex = input.indexOf(':');\n if (prefixSeparatorIndex == -1)\n return null;\n var /** @type {?} */ prefix = input.substring(0, prefixSeparatorIndex).trim();\n if (!isIdentifier(prefix))\n return null;\n var /** @type {?} */ uninterpretedExpression = input.substring(prefixSeparatorIndex + 1);\n return new Quote(new ParseSpan(0, input.length), prefix, uninterpretedExpression, location);\n };\n /**\n * @param {?} prefixToken\n * @param {?} input\n * @param {?} location\n * @return {?}\n */\n Parser.prototype.parseTemplateBindings = function (prefixToken, input, location) {\n var /** @type {?} */ tokens = this._lexer.tokenize(input);\n if (prefixToken) {\n // Prefix the tokens with the tokens from prefixToken but have them take no space (0 index).\n var /** @type {?} */ prefixTokens = this._lexer.tokenize(prefixToken).map(function (t) {\n t.index = 0;\n return t;\n });\n tokens.unshift.apply(tokens, prefixTokens);\n }\n return new _ParseAST(input, location, tokens, input.length, false, this.errors, 0)\n .parseTemplateBindings();\n };\n /**\n * @param {?} input\n * @param {?} location\n * @param {?=} interpolationConfig\n * @return {?}\n */\n Parser.prototype.parseInterpolation = function (input, location, interpolationConfig) {\n if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; }\n var /** @type {?} */ split = this.splitInterpolation(input, location, interpolationConfig);\n if (split == null)\n return null;\n var /** @type {?} */ expressions = [];\n for (var /** @type {?} */ i = 0; i < split.expressions.length; ++i) {\n var /** @type {?} */ expressionText = split.expressions[i];\n var /** @type {?} */ sourceToLex = this._stripComments(expressionText);\n var /** @type {?} */ tokens = this._lexer.tokenize(this._stripComments(split.expressions[i]));\n var /** @type {?} */ ast = new _ParseAST(input, location, tokens, sourceToLex.length, false, this.errors, split.offsets[i] + (expressionText.length - sourceToLex.length))\n .parseChain();\n expressions.push(ast);\n }\n return new ASTWithSource(new Interpolation(new ParseSpan(0, input == null ? 0 : input.length), split.strings, expressions), input, location, this.errors);\n };\n /**\n * @param {?} input\n * @param {?} location\n * @param {?=} interpolationConfig\n * @return {?}\n */\n Parser.prototype.splitInterpolation = function (input, location, interpolationConfig) {\n if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; }\n var /** @type {?} */ regexp = _createInterpolateRegExp(interpolationConfig);\n var /** @type {?} */ parts = input.split(regexp);\n if (parts.length <= 1) {\n return null;\n }\n var /** @type {?} */ strings = [];\n var /** @type {?} */ expressions = [];\n var /** @type {?} */ offsets = [];\n var /** @type {?} */ offset = 0;\n for (var /** @type {?} */ i = 0; i < parts.length; i++) {\n var /** @type {?} */ part = parts[i];\n if (i % 2 === 0) {\n // fixed string\n strings.push(part);\n offset += part.length;\n }\n else if (part.trim().length > 0) {\n offset += interpolationConfig.start.length;\n expressions.push(part);\n offsets.push(offset);\n offset += part.length + interpolationConfig.end.length;\n }\n else {\n this._reportError('Blank expressions are not allowed in interpolated strings', input, \"at column \" + this._findInterpolationErrorColumn(parts, i, interpolationConfig) + \" in\", location);\n expressions.push('$implict');\n offsets.push(offset);\n }\n }\n return new SplitInterpolation(strings, expressions, offsets);\n };\n /**\n * @param {?} input\n * @param {?} location\n * @return {?}\n */\n Parser.prototype.wrapLiteralPrimitive = function (input, location) {\n return new ASTWithSource(new LiteralPrimitive(new ParseSpan(0, input == null ? 0 : input.length), input), input, location, this.errors);\n };\n /**\n * @param {?} input\n * @return {?}\n */\n Parser.prototype._stripComments = function (input) {\n var /** @type {?} */ i = this._commentStart(input);\n return i != null ? input.substring(0, i).trim() : input;\n };\n /**\n * @param {?} input\n * @return {?}\n */\n Parser.prototype._commentStart = function (input) {\n var /** @type {?} */ outerQuote = null;\n for (var /** @type {?} */ i = 0; i < input.length - 1; i++) {\n var /** @type {?} */ char = input.charCodeAt(i);\n var /** @type {?} */ nextChar = input.charCodeAt(i + 1);\n if (char === $SLASH && nextChar == $SLASH && outerQuote == null)\n return i;\n if (outerQuote === char) {\n outerQuote = null;\n }\n else if (outerQuote == null && isQuote(char)) {\n outerQuote = char;\n }\n }\n return null;\n };\n /**\n * @param {?} input\n * @param {?} location\n * @param {?} interpolationConfig\n * @return {?}\n */\n Parser.prototype._checkNoInterpolation = function (input, location, interpolationConfig) {\n var /** @type {?} */ regexp = _createInterpolateRegExp(interpolationConfig);\n var /** @type {?} */ parts = input.split(regexp);\n if (parts.length > 1) {\n this._reportError(\"Got interpolation (\" + interpolationConfig.start + interpolationConfig.end + \") where expression was expected\", input, \"at column \" + this._findInterpolationErrorColumn(parts, 1, interpolationConfig) + \" in\", location);\n }\n };\n /**\n * @param {?} parts\n * @param {?} partInErrIdx\n * @param {?} interpolationConfig\n * @return {?}\n */\n Parser.prototype._findInterpolationErrorColumn = function (parts, partInErrIdx, interpolationConfig) {\n var /** @type {?} */ errLocation = '';\n for (var /** @type {?} */ j = 0; j < partInErrIdx; j++) {\n errLocation += j % 2 === 0 ?\n parts[j] :\n \"\" + interpolationConfig.start + parts[j] + interpolationConfig.end;\n }\n return errLocation.length;\n };\n return Parser;\n}());\nParser.decorators = [\n { type: CompilerInjectable },\n];\n/**\n * @nocollapse\n */\nParser.ctorParameters = function () { return [\n { type: Lexer, },\n]; };\nvar _ParseAST = (function () {\n /**\n * @param {?} input\n * @param {?} location\n * @param {?} tokens\n * @param {?} inputLength\n * @param {?} parseAction\n * @param {?} errors\n * @param {?} offset\n */\n function _ParseAST(input, location, tokens, inputLength, parseAction, errors, offset) {\n this.input = input;\n this.location = location;\n this.tokens = tokens;\n this.inputLength = inputLength;\n this.parseAction = parseAction;\n this.errors = errors;\n this.offset = offset;\n this.rparensExpected = 0;\n this.rbracketsExpected = 0;\n this.rbracesExpected = 0;\n this.index = 0;\n }\n /**\n * @param {?} offset\n * @return {?}\n */\n _ParseAST.prototype.peek = function (offset) {\n var /** @type {?} */ i = this.index + offset;\n return i < this.tokens.length ? this.tokens[i] : EOF;\n };\n Object.defineProperty(_ParseAST.prototype, \"next\", {\n /**\n * @return {?}\n */\n get: function () { return this.peek(0); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(_ParseAST.prototype, \"inputIndex\", {\n /**\n * @return {?}\n */\n get: function () {\n return (this.index < this.tokens.length) ? this.next.index + this.offset :\n this.inputLength + this.offset;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} start\n * @return {?}\n */\n _ParseAST.prototype.span = function (start) { return new ParseSpan(start, this.inputIndex); };\n /**\n * @return {?}\n */\n _ParseAST.prototype.advance = function () { this.index++; };\n /**\n * @param {?} code\n * @return {?}\n */\n _ParseAST.prototype.optionalCharacter = function (code) {\n if (this.next.isCharacter(code)) {\n this.advance();\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * @return {?}\n */\n _ParseAST.prototype.peekKeywordLet = function () { return this.next.isKeywordLet(); };\n /**\n * @return {?}\n */\n _ParseAST.prototype.peekKeywordAs = function () { return this.next.isKeywordAs(); };\n /**\n * @param {?} code\n * @return {?}\n */\n _ParseAST.prototype.expectCharacter = function (code) {\n if (this.optionalCharacter(code))\n return;\n this.error(\"Missing expected \" + String.fromCharCode(code));\n };\n /**\n * @param {?} op\n * @return {?}\n */\n _ParseAST.prototype.optionalOperator = function (op) {\n if (this.next.isOperator(op)) {\n this.advance();\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * @param {?} operator\n * @return {?}\n */\n _ParseAST.prototype.expectOperator = function (operator) {\n if (this.optionalOperator(operator))\n return;\n this.error(\"Missing expected operator \" + operator);\n };\n /**\n * @return {?}\n */\n _ParseAST.prototype.expectIdentifierOrKeyword = function () {\n var /** @type {?} */ n = this.next;\n if (!n.isIdentifier() && !n.isKeyword()) {\n this.error(\"Unexpected token \" + n + \", expected identifier or keyword\");\n return '';\n }\n this.advance();\n return n.toString();\n };\n /**\n * @return {?}\n */\n _ParseAST.prototype.expectIdentifierOrKeywordOrString = function () {\n var /** @type {?} */ n = this.next;\n if (!n.isIdentifier() && !n.isKeyword() && !n.isString()) {\n this.error(\"Unexpected token \" + n + \", expected identifier, keyword, or string\");\n return '';\n }\n this.advance();\n return n.toString();\n };\n /**\n * @return {?}\n */\n _ParseAST.prototype.parseChain = function () {\n var /** @type {?} */ exprs = [];\n var /** @type {?} */ start = this.inputIndex;\n while (this.index < this.tokens.length) {\n var /** @type {?} */ expr = this.parsePipe();\n exprs.push(expr);\n if (this.optionalCharacter($SEMICOLON)) {\n if (!this.parseAction) {\n this.error('Binding expression cannot contain chained expression');\n }\n while (this.optionalCharacter($SEMICOLON)) {\n } // read all semicolons\n }\n else if (this.index < this.tokens.length) {\n this.error(\"Unexpected token '\" + this.next + \"'\");\n }\n }\n if (exprs.length == 0)\n return new EmptyExpr(this.span(start));\n if (exprs.length == 1)\n return exprs[0];\n return new Chain(this.span(start), exprs);\n };\n /**\n * @return {?}\n */\n _ParseAST.prototype.parsePipe = function () {\n var /** @type {?} */ result = this.parseExpression();\n if (this.optionalOperator('|')) {\n if (this.parseAction) {\n this.error('Cannot have a pipe in an action expression');\n }\n do {\n var /** @type {?} */ name = this.expectIdentifierOrKeyword();\n var /** @type {?} */ args = [];\n while (this.optionalCharacter($COLON)) {\n args.push(this.parseExpression());\n }\n result = new BindingPipe(this.span(result.span.start), result, name, args);\n } while (this.optionalOperator('|'));\n }\n return result;\n };\n /**\n * @return {?}\n */\n _ParseAST.prototype.parseExpression = function () { return this.parseConditional(); };\n /**\n * @return {?}\n */\n _ParseAST.prototype.parseConditional = function () {\n var /** @type {?} */ start = this.inputIndex;\n var /** @type {?} */ result = this.parseLogicalOr();\n if (this.optionalOperator('?')) {\n var /** @type {?} */ yes = this.parsePipe();\n var /** @type {?} */ no = void 0;\n if (!this.optionalCharacter($COLON)) {\n var /** @type {?} */ end = this.inputIndex;\n var /** @type {?} */ expression = this.input.substring(start, end);\n this.error(\"Conditional expression \" + expression + \" requires all 3 expressions\");\n no = new EmptyExpr(this.span(start));\n }\n else {\n no = this.parsePipe();\n }\n return new Conditional(this.span(start), result, yes, no);\n }\n else {\n return result;\n }\n };\n /**\n * @return {?}\n */\n _ParseAST.prototype.parseLogicalOr = function () {\n // '||'\n var /** @type {?} */ result = this.parseLogicalAnd();\n while (this.optionalOperator('||')) {\n var /** @type {?} */ right = this.parseLogicalAnd();\n result = new Binary(this.span(result.span.start), '||', result, right);\n }\n return result;\n };\n /**\n * @return {?}\n */\n _ParseAST.prototype.parseLogicalAnd = function () {\n // '&&'\n var /** @type {?} */ result = this.parseEquality();\n while (this.optionalOperator('&&')) {\n var /** @type {?} */ right = this.parseEquality();\n result = new Binary(this.span(result.span.start), '&&', result, right);\n }\n return result;\n };\n /**\n * @return {?}\n */\n _ParseAST.prototype.parseEquality = function () {\n // '==','!=','===','!=='\n var /** @type {?} */ result = this.parseRelational();\n while (this.next.type == TokenType.Operator) {\n var /** @type {?} */ operator = this.next.strValue;\n switch (operator) {\n case '==':\n case '===':\n case '!=':\n case '!==':\n this.advance();\n var /** @type {?} */ right = this.parseRelational();\n result = new Binary(this.span(result.span.start), operator, result, right);\n continue;\n }\n break;\n }\n return result;\n };\n /**\n * @return {?}\n */\n _ParseAST.prototype.parseRelational = function () {\n // '<', '>', '<=', '>='\n var /** @type {?} */ result = this.parseAdditive();\n while (this.next.type == TokenType.Operator) {\n var /** @type {?} */ operator = this.next.strValue;\n switch (operator) {\n case '<':\n case '>':\n case '<=':\n case '>=':\n this.advance();\n var /** @type {?} */ right = this.parseAdditive();\n result = new Binary(this.span(result.span.start), operator, result, right);\n continue;\n }\n break;\n }\n return result;\n };\n /**\n * @return {?}\n */\n _ParseAST.prototype.parseAdditive = function () {\n // '+', '-'\n var /** @type {?} */ result = this.parseMultiplicative();\n while (this.next.type == TokenType.Operator) {\n var /** @type {?} */ operator = this.next.strValue;\n switch (operator) {\n case '+':\n case '-':\n this.advance();\n var /** @type {?} */ right = this.parseMultiplicative();\n result = new Binary(this.span(result.span.start), operator, result, right);\n continue;\n }\n break;\n }\n return result;\n };\n /**\n * @return {?}\n */\n _ParseAST.prototype.parseMultiplicative = function () {\n // '*', '%', '/'\n var /** @type {?} */ result = this.parsePrefix();\n while (this.next.type == TokenType.Operator) {\n var /** @type {?} */ operator = this.next.strValue;\n switch (operator) {\n case '*':\n case '%':\n case '/':\n this.advance();\n var /** @type {?} */ right = this.parsePrefix();\n result = new Binary(this.span(result.span.start), operator, result, right);\n continue;\n }\n break;\n }\n return result;\n };\n /**\n * @return {?}\n */\n _ParseAST.prototype.parsePrefix = function () {\n if (this.next.type == TokenType.Operator) {\n var /** @type {?} */ start = this.inputIndex;\n var /** @type {?} */ operator = this.next.strValue;\n var /** @type {?} */ result = void 0;\n switch (operator) {\n case '+':\n this.advance();\n return this.parsePrefix();\n case '-':\n this.advance();\n result = this.parsePrefix();\n return new Binary(this.span(start), operator, new LiteralPrimitive(new ParseSpan(start, start), 0), result);\n case '!':\n this.advance();\n result = this.parsePrefix();\n return new PrefixNot(this.span(start), result);\n }\n }\n return this.parseCallChain();\n };\n /**\n * @return {?}\n */\n _ParseAST.prototype.parseCallChain = function () {\n var /** @type {?} */ result = this.parsePrimary();\n while (true) {\n if (this.optionalCharacter($PERIOD)) {\n result = this.parseAccessMemberOrMethodCall(result, false);\n }\n else if (this.optionalOperator('?.')) {\n result = this.parseAccessMemberOrMethodCall(result, true);\n }\n else if (this.optionalCharacter($LBRACKET)) {\n this.rbracketsExpected++;\n var /** @type {?} */ key = this.parsePipe();\n this.rbracketsExpected--;\n this.expectCharacter($RBRACKET);\n if (this.optionalOperator('=')) {\n var /** @type {?} */ value = this.parseConditional();\n result = new KeyedWrite(this.span(result.span.start), result, key, value);\n }\n else {\n result = new KeyedRead(this.span(result.span.start), result, key);\n }\n }\n else if (this.optionalCharacter($LPAREN)) {\n this.rparensExpected++;\n var /** @type {?} */ args = this.parseCallArguments();\n this.rparensExpected--;\n this.expectCharacter($RPAREN);\n result = new FunctionCall(this.span(result.span.start), result, args);\n }\n else {\n return result;\n }\n }\n };\n /**\n * @return {?}\n */\n _ParseAST.prototype.parsePrimary = function () {\n var /** @type {?} */ start = this.inputIndex;\n if (this.optionalCharacter($LPAREN)) {\n this.rparensExpected++;\n var /** @type {?} */ result = this.parsePipe();\n this.rparensExpected--;\n this.expectCharacter($RPAREN);\n return result;\n }\n else if (this.next.isKeywordNull()) {\n this.advance();\n return new LiteralPrimitive(this.span(start), null);\n }\n else if (this.next.isKeywordUndefined()) {\n this.advance();\n return new LiteralPrimitive(this.span(start), void 0);\n }\n else if (this.next.isKeywordTrue()) {\n this.advance();\n return new LiteralPrimitive(this.span(start), true);\n }\n else if (this.next.isKeywordFalse()) {\n this.advance();\n return new LiteralPrimitive(this.span(start), false);\n }\n else if (this.next.isKeywordThis()) {\n this.advance();\n return new ImplicitReceiver(this.span(start));\n }\n else if (this.optionalCharacter($LBRACKET)) {\n this.rbracketsExpected++;\n var /** @type {?} */ elements = this.parseExpressionList($RBRACKET);\n this.rbracketsExpected--;\n this.expectCharacter($RBRACKET);\n return new LiteralArray(this.span(start), elements);\n }\n else if (this.next.isCharacter($LBRACE)) {\n return this.parseLiteralMap();\n }\n else if (this.next.isIdentifier()) {\n return this.parseAccessMemberOrMethodCall(new ImplicitReceiver(this.span(start)), false);\n }\n else if (this.next.isNumber()) {\n var /** @type {?} */ value = this.next.toNumber();\n this.advance();\n return new LiteralPrimitive(this.span(start), value);\n }\n else if (this.next.isString()) {\n var /** @type {?} */ literalValue = this.next.toString();\n this.advance();\n return new LiteralPrimitive(this.span(start), literalValue);\n }\n else if (this.index >= this.tokens.length) {\n this.error(\"Unexpected end of expression: \" + this.input);\n return new EmptyExpr(this.span(start));\n }\n else {\n this.error(\"Unexpected token \" + this.next);\n return new EmptyExpr(this.span(start));\n }\n };\n /**\n * @param {?} terminator\n * @return {?}\n */\n _ParseAST.prototype.parseExpressionList = function (terminator) {\n var /** @type {?} */ result = [];\n if (!this.next.isCharacter(terminator)) {\n do {\n result.push(this.parsePipe());\n } while (this.optionalCharacter($COMMA));\n }\n return result;\n };\n /**\n * @return {?}\n */\n _ParseAST.prototype.parseLiteralMap = function () {\n var /** @type {?} */ keys = [];\n var /** @type {?} */ values = [];\n var /** @type {?} */ start = this.inputIndex;\n this.expectCharacter($LBRACE);\n if (!this.optionalCharacter($RBRACE)) {\n this.rbracesExpected++;\n do {\n var /** @type {?} */ key = this.expectIdentifierOrKeywordOrString();\n keys.push(key);\n this.expectCharacter($COLON);\n values.push(this.parsePipe());\n } while (this.optionalCharacter($COMMA));\n this.rbracesExpected--;\n this.expectCharacter($RBRACE);\n }\n return new LiteralMap(this.span(start), keys, values);\n };\n /**\n * @param {?} receiver\n * @param {?=} isSafe\n * @return {?}\n */\n _ParseAST.prototype.parseAccessMemberOrMethodCall = function (receiver, isSafe) {\n if (isSafe === void 0) { isSafe = false; }\n var /** @type {?} */ start = receiver.span.start;\n var /** @type {?} */ id = this.expectIdentifierOrKeyword();\n if (this.optionalCharacter($LPAREN)) {\n this.rparensExpected++;\n var /** @type {?} */ args = this.parseCallArguments();\n this.expectCharacter($RPAREN);\n this.rparensExpected--;\n var /** @type {?} */ span = this.span(start);\n return isSafe ? new SafeMethodCall(span, receiver, id, args) :\n new MethodCall(span, receiver, id, args);\n }\n else {\n if (isSafe) {\n if (this.optionalOperator('=')) {\n this.error('The \\'?.\\' operator cannot be used in the assignment');\n return new EmptyExpr(this.span(start));\n }\n else {\n return new SafePropertyRead(this.span(start), receiver, id);\n }\n }\n else {\n if (this.optionalOperator('=')) {\n if (!this.parseAction) {\n this.error('Bindings cannot contain assignments');\n return new EmptyExpr(this.span(start));\n }\n var /** @type {?} */ value = this.parseConditional();\n return new PropertyWrite(this.span(start), receiver, id, value);\n }\n else {\n return new PropertyRead(this.span(start), receiver, id);\n }\n }\n }\n };\n /**\n * @return {?}\n */\n _ParseAST.prototype.parseCallArguments = function () {\n if (this.next.isCharacter($RPAREN))\n return [];\n var /** @type {?} */ positionals = [];\n do {\n positionals.push(this.parsePipe());\n } while (this.optionalCharacter($COMMA));\n return (positionals);\n };\n /**\n * An identifier, a keyword, a string with an optional `-` inbetween.\n * @return {?}\n */\n _ParseAST.prototype.expectTemplateBindingKey = function () {\n var /** @type {?} */ result = '';\n var /** @type {?} */ operatorFound = false;\n do {\n result += this.expectIdentifierOrKeywordOrString();\n operatorFound = this.optionalOperator('-');\n if (operatorFound) {\n result += '-';\n }\n } while (operatorFound);\n return result.toString();\n };\n /**\n * @return {?}\n */\n _ParseAST.prototype.parseTemplateBindings = function () {\n var /** @type {?} */ bindings = [];\n var /** @type {?} */ prefix = null;\n var /** @type {?} */ warnings = [];\n while (this.index < this.tokens.length) {\n var /** @type {?} */ start = this.inputIndex;\n var /** @type {?} */ keyIsVar = this.peekKeywordLet();\n if (keyIsVar) {\n this.advance();\n }\n var /** @type {?} */ rawKey = this.expectTemplateBindingKey();\n var /** @type {?} */ key = rawKey;\n if (!keyIsVar) {\n if (prefix == null) {\n prefix = key;\n }\n else {\n key = prefix + key[0].toUpperCase() + key.substring(1);\n }\n }\n this.optionalCharacter($COLON);\n var /** @type {?} */ name = null;\n var /** @type {?} */ expression = null;\n if (keyIsVar) {\n if (this.optionalOperator('=')) {\n name = this.expectTemplateBindingKey();\n }\n else {\n name = '\\$implicit';\n }\n }\n else if (this.peekKeywordAs()) {\n var /** @type {?} */ letStart = this.inputIndex;\n this.advance(); // consume `as`\n name = rawKey;\n key = this.expectTemplateBindingKey(); // read local var name\n keyIsVar = true;\n }\n else if (this.next !== EOF && !this.peekKeywordLet()) {\n var /** @type {?} */ start_2 = this.inputIndex;\n var /** @type {?} */ ast = this.parsePipe();\n var /** @type {?} */ source = this.input.substring(start_2 - this.offset, this.inputIndex - this.offset);\n expression = new ASTWithSource(ast, source, this.location, this.errors);\n }\n bindings.push(new TemplateBinding(this.span(start), key, keyIsVar, name, expression));\n if (this.peekKeywordAs() && !keyIsVar) {\n var /** @type {?} */ letStart = this.inputIndex;\n this.advance(); // consume `as`\n var /** @type {?} */ letName = this.expectTemplateBindingKey(); // read local var name\n bindings.push(new TemplateBinding(this.span(letStart), letName, true, key, null));\n }\n if (!this.optionalCharacter($SEMICOLON)) {\n this.optionalCharacter($COMMA);\n }\n }\n return new TemplateBindingParseResult(bindings, warnings, this.errors);\n };\n /**\n * @param {?} message\n * @param {?=} index\n * @return {?}\n */\n _ParseAST.prototype.error = function (message, index) {\n if (index === void 0) { index = null; }\n this.errors.push(new ParserError(message, this.input, this.locationText(index), this.location));\n this.skip();\n };\n /**\n * @param {?=} index\n * @return {?}\n */\n _ParseAST.prototype.locationText = function (index) {\n if (index === void 0) { index = null; }\n if (index == null)\n index = this.index;\n return (index < this.tokens.length) ? \"at column \" + (this.tokens[index].index + 1) + \" in\" :\n \"at the end of the expression\";\n };\n /**\n * @return {?}\n */\n _ParseAST.prototype.skip = function () {\n var /** @type {?} */ n = this.next;\n while (this.index < this.tokens.length && !n.isCharacter($SEMICOLON) &&\n (this.rparensExpected <= 0 || !n.isCharacter($RPAREN)) &&\n (this.rbracesExpected <= 0 || !n.isCharacter($RBRACE)) &&\n (this.rbracketsExpected <= 0 || !n.isCharacter($RBRACKET))) {\n if (this.next.isError()) {\n this.errors.push(new ParserError(this.next.toString(), this.input, this.locationText(), this.location));\n }\n this.advance();\n n = this.next;\n }\n };\n return _ParseAST;\n}());\nvar SimpleExpressionChecker = (function () {\n function SimpleExpressionChecker() {\n this.errors = [];\n }\n /**\n * @param {?} ast\n * @return {?}\n */\n SimpleExpressionChecker.check = function (ast) {\n var /** @type {?} */ s = new SimpleExpressionChecker();\n ast.visit(s);\n return s.errors;\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n SimpleExpressionChecker.prototype.visitImplicitReceiver = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n SimpleExpressionChecker.prototype.visitInterpolation = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n SimpleExpressionChecker.prototype.visitLiteralPrimitive = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n SimpleExpressionChecker.prototype.visitPropertyRead = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n SimpleExpressionChecker.prototype.visitPropertyWrite = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n SimpleExpressionChecker.prototype.visitSafePropertyRead = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n SimpleExpressionChecker.prototype.visitMethodCall = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n SimpleExpressionChecker.prototype.visitSafeMethodCall = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n SimpleExpressionChecker.prototype.visitFunctionCall = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n SimpleExpressionChecker.prototype.visitLiteralArray = function (ast, context) { this.visitAll(ast.expressions); };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n SimpleExpressionChecker.prototype.visitLiteralMap = function (ast, context) { this.visitAll(ast.values); };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n SimpleExpressionChecker.prototype.visitBinary = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n SimpleExpressionChecker.prototype.visitPrefixNot = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n SimpleExpressionChecker.prototype.visitConditional = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n SimpleExpressionChecker.prototype.visitPipe = function (ast, context) { this.errors.push('pipes'); };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n SimpleExpressionChecker.prototype.visitKeyedRead = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n SimpleExpressionChecker.prototype.visitKeyedWrite = function (ast, context) { };\n /**\n * @param {?} asts\n * @return {?}\n */\n SimpleExpressionChecker.prototype.visitAll = function (asts) {\n var _this = this;\n return asts.map(function (node) { return node.visit(_this); });\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n SimpleExpressionChecker.prototype.visitChain = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n SimpleExpressionChecker.prototype.visitQuote = function (ast, context) { };\n return SimpleExpressionChecker;\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 */\nvar ParseLocation = (function () {\n /**\n * @param {?} file\n * @param {?} offset\n * @param {?} line\n * @param {?} col\n */\n function ParseLocation(file, offset, line, col) {\n this.file = file;\n this.offset = offset;\n this.line = line;\n this.col = col;\n }\n /**\n * @return {?}\n */\n ParseLocation.prototype.toString = function () {\n return this.offset != null ? this.file.url + \"@\" + this.line + \":\" + this.col : this.file.url;\n };\n /**\n * @param {?} delta\n * @return {?}\n */\n ParseLocation.prototype.moveBy = function (delta) {\n var /** @type {?} */ source = this.file.content;\n var /** @type {?} */ len = source.length;\n var /** @type {?} */ offset = this.offset;\n var /** @type {?} */ line = this.line;\n var /** @type {?} */ col = this.col;\n while (offset > 0 && delta < 0) {\n offset--;\n delta++;\n var /** @type {?} */ ch = source.charCodeAt(offset);\n if (ch == $LF) {\n line--;\n var /** @type {?} */ priorLine = source.substr(0, offset - 1).lastIndexOf(String.fromCharCode($LF));\n col = priorLine > 0 ? offset - priorLine : offset;\n }\n else {\n col--;\n }\n }\n while (offset < len && delta > 0) {\n var /** @type {?} */ ch = source.charCodeAt(offset);\n offset++;\n delta--;\n if (ch == $LF) {\n line++;\n col = 0;\n }\n else {\n col++;\n }\n }\n return new ParseLocation(this.file, offset, line, col);\n };\n /**\n * @param {?} maxChars\n * @param {?} maxLines\n * @return {?}\n */\n ParseLocation.prototype.getContext = function (maxChars, maxLines) {\n var /** @type {?} */ content = this.file.content;\n var /** @type {?} */ startOffset = this.offset;\n if (startOffset != null) {\n if (startOffset > content.length - 1) {\n startOffset = content.length - 1;\n }\n var /** @type {?} */ endOffset = startOffset;\n var /** @type {?} */ ctxChars = 0;\n var /** @type {?} */ ctxLines = 0;\n while (ctxChars < maxChars && startOffset > 0) {\n startOffset--;\n ctxChars++;\n if (content[startOffset] == '\\n') {\n if (++ctxLines == maxLines) {\n break;\n }\n }\n }\n ctxChars = 0;\n ctxLines = 0;\n while (ctxChars < maxChars && endOffset < content.length - 1) {\n endOffset++;\n ctxChars++;\n if (content[endOffset] == '\\n') {\n if (++ctxLines == maxLines) {\n break;\n }\n }\n }\n return {\n before: content.substring(startOffset, this.offset),\n after: content.substring(this.offset, endOffset + 1),\n };\n }\n return null;\n };\n return ParseLocation;\n}());\nvar ParseSourceFile = (function () {\n /**\n * @param {?} content\n * @param {?} url\n */\n function ParseSourceFile(content, url) {\n this.content = content;\n this.url = url;\n }\n return ParseSourceFile;\n}());\nvar ParseSourceSpan = (function () {\n /**\n * @param {?} start\n * @param {?} end\n * @param {?=} details\n */\n function ParseSourceSpan(start, end, details) {\n if (details === void 0) { details = null; }\n this.start = start;\n this.end = end;\n this.details = details;\n }\n /**\n * @return {?}\n */\n ParseSourceSpan.prototype.toString = function () {\n return this.start.file.content.substring(this.start.offset, this.end.offset);\n };\n return ParseSourceSpan;\n}());\nvar ParseErrorLevel = {};\nParseErrorLevel.WARNING = 0;\nParseErrorLevel.ERROR = 1;\nParseErrorLevel[ParseErrorLevel.WARNING] = \"WARNING\";\nParseErrorLevel[ParseErrorLevel.ERROR] = \"ERROR\";\nvar ParseError = (function () {\n /**\n * @param {?} span\n * @param {?} msg\n * @param {?=} level\n */\n function ParseError(span, msg, level) {\n if (level === void 0) { level = ParseErrorLevel.ERROR; }\n this.span = span;\n this.msg = msg;\n this.level = level;\n }\n /**\n * @return {?}\n */\n ParseError.prototype.toString = function () {\n var /** @type {?} */ ctx = this.span.start.getContext(100, 3);\n var /** @type {?} */ contextStr = ctx ? \" (\\\"\" + ctx.before + \"[\" + ParseErrorLevel[this.level] + \" ->]\" + ctx.after + \"\\\")\" : '';\n var /** @type {?} */ details = this.span.details ? \", \" + this.span.details : '';\n return \"\" + this.msg + contextStr + \": \" + this.span.start + details;\n };\n return ParseError;\n}());\n/**\n * @param {?} kind\n * @param {?} type\n * @return {?}\n */\nfunction typeSourceSpan(kind, type) {\n var /** @type {?} */ moduleUrl = identifierModuleUrl(type);\n var /** @type {?} */ sourceFileName = moduleUrl != null ? \"in \" + kind + \" \" + identifierName(type) + \" in \" + moduleUrl :\n \"in \" + kind + \" \" + identifierName(type);\n var /** @type {?} */ sourceFile = new ParseSourceFile('', sourceFileName);\n return new ParseSourceSpan(new ParseLocation(sourceFile, null, null, null), new ParseLocation(sourceFile, null, null, null));\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 */\nvar Text = (function () {\n /**\n * @param {?} value\n * @param {?} sourceSpan\n */\n function Text(value, sourceSpan) {\n this.value = value;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n Text.prototype.visit = function (visitor, context) { return visitor.visitText(this, context); };\n return Text;\n}());\nvar Expansion = (function () {\n /**\n * @param {?} switchValue\n * @param {?} type\n * @param {?} cases\n * @param {?} sourceSpan\n * @param {?} switchValueSourceSpan\n */\n function Expansion(switchValue, type, cases, sourceSpan, switchValueSourceSpan) {\n this.switchValue = switchValue;\n this.type = type;\n this.cases = cases;\n this.sourceSpan = sourceSpan;\n this.switchValueSourceSpan = switchValueSourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n Expansion.prototype.visit = function (visitor, context) { return visitor.visitExpansion(this, context); };\n return Expansion;\n}());\nvar ExpansionCase = (function () {\n /**\n * @param {?} value\n * @param {?} expression\n * @param {?} sourceSpan\n * @param {?} valueSourceSpan\n * @param {?} expSourceSpan\n */\n function ExpansionCase(value, expression, sourceSpan, valueSourceSpan, expSourceSpan) {\n this.value = value;\n this.expression = expression;\n this.sourceSpan = sourceSpan;\n this.valueSourceSpan = valueSourceSpan;\n this.expSourceSpan = expSourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n ExpansionCase.prototype.visit = function (visitor, context) { return visitor.visitExpansionCase(this, context); };\n return ExpansionCase;\n}());\nvar Attribute$1 = (function () {\n /**\n * @param {?} name\n * @param {?} value\n * @param {?} sourceSpan\n * @param {?=} valueSpan\n */\n function Attribute$1(name, value, sourceSpan, valueSpan) {\n this.name = name;\n this.value = value;\n this.sourceSpan = sourceSpan;\n this.valueSpan = valueSpan;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n Attribute$1.prototype.visit = function (visitor, context) { return visitor.visitAttribute(this, context); };\n return Attribute$1;\n}());\nvar Element = (function () {\n /**\n * @param {?} name\n * @param {?} attrs\n * @param {?} children\n * @param {?} sourceSpan\n * @param {?} startSourceSpan\n * @param {?} endSourceSpan\n */\n function Element(name, attrs, children, sourceSpan, startSourceSpan, endSourceSpan) {\n this.name = name;\n this.attrs = attrs;\n this.children = children;\n this.sourceSpan = sourceSpan;\n this.startSourceSpan = startSourceSpan;\n this.endSourceSpan = endSourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n Element.prototype.visit = function (visitor, context) { return visitor.visitElement(this, context); };\n return Element;\n}());\nvar Comment = (function () {\n /**\n * @param {?} value\n * @param {?} sourceSpan\n */\n function Comment(value, sourceSpan) {\n this.value = value;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n Comment.prototype.visit = function (visitor, context) { return visitor.visitComment(this, context); };\n return Comment;\n}());\n/**\n * @param {?} visitor\n * @param {?} nodes\n * @param {?=} context\n * @return {?}\n */\nfunction visitAll(visitor, nodes, context) {\n if (context === void 0) { context = null; }\n var /** @type {?} */ result = [];\n var /** @type {?} */ visit = visitor.visit ?\n function (ast) { return visitor.visit(ast, context) || ast.visit(visitor, context); } :\n function (ast) { return ast.visit(visitor, context); };\n nodes.forEach(function (ast) {\n var /** @type {?} */ astResult = visit(ast);\n if (astResult) {\n result.push(astResult);\n }\n });\n return result;\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 */\nvar TokenType$1 = {};\nTokenType$1.TAG_OPEN_START = 0;\nTokenType$1.TAG_OPEN_END = 1;\nTokenType$1.TAG_OPEN_END_VOID = 2;\nTokenType$1.TAG_CLOSE = 3;\nTokenType$1.TEXT = 4;\nTokenType$1.ESCAPABLE_RAW_TEXT = 5;\nTokenType$1.RAW_TEXT = 6;\nTokenType$1.COMMENT_START = 7;\nTokenType$1.COMMENT_END = 8;\nTokenType$1.CDATA_START = 9;\nTokenType$1.CDATA_END = 10;\nTokenType$1.ATTR_NAME = 11;\nTokenType$1.ATTR_VALUE = 12;\nTokenType$1.DOC_TYPE = 13;\nTokenType$1.EXPANSION_FORM_START = 14;\nTokenType$1.EXPANSION_CASE_VALUE = 15;\nTokenType$1.EXPANSION_CASE_EXP_START = 16;\nTokenType$1.EXPANSION_CASE_EXP_END = 17;\nTokenType$1.EXPANSION_FORM_END = 18;\nTokenType$1.EOF = 19;\nTokenType$1[TokenType$1.TAG_OPEN_START] = \"TAG_OPEN_START\";\nTokenType$1[TokenType$1.TAG_OPEN_END] = \"TAG_OPEN_END\";\nTokenType$1[TokenType$1.TAG_OPEN_END_VOID] = \"TAG_OPEN_END_VOID\";\nTokenType$1[TokenType$1.TAG_CLOSE] = \"TAG_CLOSE\";\nTokenType$1[TokenType$1.TEXT] = \"TEXT\";\nTokenType$1[TokenType$1.ESCAPABLE_RAW_TEXT] = \"ESCAPABLE_RAW_TEXT\";\nTokenType$1[TokenType$1.RAW_TEXT] = \"RAW_TEXT\";\nTokenType$1[TokenType$1.COMMENT_START] = \"COMMENT_START\";\nTokenType$1[TokenType$1.COMMENT_END] = \"COMMENT_END\";\nTokenType$1[TokenType$1.CDATA_START] = \"CDATA_START\";\nTokenType$1[TokenType$1.CDATA_END] = \"CDATA_END\";\nTokenType$1[TokenType$1.ATTR_NAME] = \"ATTR_NAME\";\nTokenType$1[TokenType$1.ATTR_VALUE] = \"ATTR_VALUE\";\nTokenType$1[TokenType$1.DOC_TYPE] = \"DOC_TYPE\";\nTokenType$1[TokenType$1.EXPANSION_FORM_START] = \"EXPANSION_FORM_START\";\nTokenType$1[TokenType$1.EXPANSION_CASE_VALUE] = \"EXPANSION_CASE_VALUE\";\nTokenType$1[TokenType$1.EXPANSION_CASE_EXP_START] = \"EXPANSION_CASE_EXP_START\";\nTokenType$1[TokenType$1.EXPANSION_CASE_EXP_END] = \"EXPANSION_CASE_EXP_END\";\nTokenType$1[TokenType$1.EXPANSION_FORM_END] = \"EXPANSION_FORM_END\";\nTokenType$1[TokenType$1.EOF] = \"EOF\";\nvar Token$1 = (function () {\n /**\n * @param {?} type\n * @param {?} parts\n * @param {?} sourceSpan\n */\n function Token$1(type, parts, sourceSpan) {\n this.type = type;\n this.parts = parts;\n this.sourceSpan = sourceSpan;\n }\n return Token$1;\n}());\nvar TokenError = (function (_super) {\n __extends(TokenError, _super);\n /**\n * @param {?} errorMsg\n * @param {?} tokenType\n * @param {?} span\n */\n function TokenError(errorMsg, tokenType, span) {\n var _this = _super.call(this, span, errorMsg) || this;\n _this.tokenType = tokenType;\n return _this;\n }\n return TokenError;\n}(ParseError));\nvar TokenizeResult = (function () {\n /**\n * @param {?} tokens\n * @param {?} errors\n */\n function TokenizeResult(tokens, errors) {\n this.tokens = tokens;\n this.errors = errors;\n }\n return TokenizeResult;\n}());\n/**\n * @param {?} source\n * @param {?} url\n * @param {?} getTagDefinition\n * @param {?=} tokenizeExpansionForms\n * @param {?=} interpolationConfig\n * @return {?}\n */\nfunction tokenize(source, url, getTagDefinition, tokenizeExpansionForms, interpolationConfig) {\n if (tokenizeExpansionForms === void 0) { tokenizeExpansionForms = false; }\n if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; }\n return new _Tokenizer(new ParseSourceFile(source, url), getTagDefinition, tokenizeExpansionForms, interpolationConfig)\n .tokenize();\n}\nvar _CR_OR_CRLF_REGEXP = /\\r\\n?/g;\n/**\n * @param {?} charCode\n * @return {?}\n */\nfunction _unexpectedCharacterErrorMsg(charCode) {\n var /** @type {?} */ char = charCode === $EOF ? 'EOF' : String.fromCharCode(charCode);\n return \"Unexpected character \\\"\" + char + \"\\\"\";\n}\n/**\n * @param {?} entitySrc\n * @return {?}\n */\nfunction _unknownEntityErrorMsg(entitySrc) {\n return \"Unknown entity \\\"\" + entitySrc + \"\\\" - use the \\\"&#<decimal>;\\\" or \\\"&#x<hex>;\\\" syntax\";\n}\nvar _ControlFlowError = (function () {\n /**\n * @param {?} error\n */\n function _ControlFlowError(error) {\n this.error = error;\n }\n return _ControlFlowError;\n}());\nvar _Tokenizer = (function () {\n /**\n * @param {?} _file The html source\n * @param {?} _getTagDefinition\n * @param {?} _tokenizeIcu Whether to tokenize ICU messages (considered as text nodes when false)\n * @param {?=} _interpolationConfig\n */\n function _Tokenizer(_file, _getTagDefinition, _tokenizeIcu, _interpolationConfig) {\n if (_interpolationConfig === void 0) { _interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; }\n this._file = _file;\n this._getTagDefinition = _getTagDefinition;\n this._tokenizeIcu = _tokenizeIcu;\n this._interpolationConfig = _interpolationConfig;\n this._peek = -1;\n this._nextPeek = -1;\n this._index = -1;\n this._line = 0;\n this._column = -1;\n this._expansionCaseStack = [];\n this._inInterpolation = false;\n this.tokens = [];\n this.errors = [];\n this._input = _file.content;\n this._length = _file.content.length;\n this._advance();\n }\n /**\n * @param {?} content\n * @return {?}\n */\n _Tokenizer.prototype._processCarriageReturns = function (content) {\n // http://www.w3.org/TR/html5/syntax.html#preprocessing-the-input-stream\n // In order to keep the original position in the source, we can not\n // pre-process it.\n // Instead CRs are processed right before instantiating the tokens.\n return content.replace(_CR_OR_CRLF_REGEXP, '\\n');\n };\n /**\n * @return {?}\n */\n _Tokenizer.prototype.tokenize = function () {\n while (this._peek !== $EOF) {\n var /** @type {?} */ start = this._getLocation();\n try {\n if (this._attemptCharCode($LT)) {\n if (this._attemptCharCode($BANG)) {\n if (this._attemptCharCode($LBRACKET)) {\n this._consumeCdata(start);\n }\n else if (this._attemptCharCode($MINUS)) {\n this._consumeComment(start);\n }\n else {\n this._consumeDocType(start);\n }\n }\n else if (this._attemptCharCode($SLASH)) {\n this._consumeTagClose(start);\n }\n else {\n this._consumeTagOpen(start);\n }\n }\n else if (!(this._tokenizeIcu && this._tokenizeExpansionForm())) {\n this._consumeText();\n }\n }\n catch (e) {\n if (e instanceof _ControlFlowError) {\n this.errors.push(e.error);\n }\n else {\n throw e;\n }\n }\n }\n this._beginToken(TokenType$1.EOF);\n this._endToken([]);\n return new TokenizeResult(mergeTextTokens(this.tokens), this.errors);\n };\n /**\n * \\@internal\n * @return {?}\n */\n _Tokenizer.prototype._tokenizeExpansionForm = function () {\n if (isExpansionFormStart(this._input, this._index, this._interpolationConfig)) {\n this._consumeExpansionFormStart();\n return true;\n }\n if (isExpansionCaseStart(this._peek) && this._isInExpansionForm()) {\n this._consumeExpansionCaseStart();\n return true;\n }\n if (this._peek === $RBRACE) {\n if (this._isInExpansionCase()) {\n this._consumeExpansionCaseEnd();\n return true;\n }\n if (this._isInExpansionForm()) {\n this._consumeExpansionFormEnd();\n return true;\n }\n }\n return false;\n };\n /**\n * @return {?}\n */\n _Tokenizer.prototype._getLocation = function () {\n return new ParseLocation(this._file, this._index, this._line, this._column);\n };\n /**\n * @param {?=} start\n * @param {?=} end\n * @return {?}\n */\n _Tokenizer.prototype._getSpan = function (start, end) {\n if (start === void 0) { start = this._getLocation(); }\n if (end === void 0) { end = this._getLocation(); }\n return new ParseSourceSpan(start, end);\n };\n /**\n * @param {?} type\n * @param {?=} start\n * @return {?}\n */\n _Tokenizer.prototype._beginToken = function (type, start) {\n if (start === void 0) { start = this._getLocation(); }\n this._currentTokenStart = start;\n this._currentTokenType = type;\n };\n /**\n * @param {?} parts\n * @param {?=} end\n * @return {?}\n */\n _Tokenizer.prototype._endToken = function (parts, end) {\n if (end === void 0) { end = this._getLocation(); }\n var /** @type {?} */ token = new Token$1(this._currentTokenType, parts, new ParseSourceSpan(this._currentTokenStart, end));\n this.tokens.push(token);\n this._currentTokenStart = null;\n this._currentTokenType = null;\n return token;\n };\n /**\n * @param {?} msg\n * @param {?} span\n * @return {?}\n */\n _Tokenizer.prototype._createError = function (msg, span) {\n if (this._isInExpansionForm()) {\n msg += \" (Do you have an unescaped \\\"{\\\" in your template? Use \\\"{{ '{' }}\\\") to escape it.)\";\n }\n var /** @type {?} */ error = new TokenError(msg, this._currentTokenType, span);\n this._currentTokenStart = null;\n this._currentTokenType = null;\n return new _ControlFlowError(error);\n };\n /**\n * @return {?}\n */\n _Tokenizer.prototype._advance = function () {\n if (this._index >= this._length) {\n throw this._createError(_unexpectedCharacterErrorMsg($EOF), this._getSpan());\n }\n if (this._peek === $LF) {\n this._line++;\n this._column = 0;\n }\n else if (this._peek !== $LF && this._peek !== $CR) {\n this._column++;\n }\n this._index++;\n this._peek = this._index >= this._length ? $EOF : this._input.charCodeAt(this._index);\n this._nextPeek =\n this._index + 1 >= this._length ? $EOF : this._input.charCodeAt(this._index + 1);\n };\n /**\n * @param {?} charCode\n * @return {?}\n */\n _Tokenizer.prototype._attemptCharCode = function (charCode) {\n if (this._peek === charCode) {\n this._advance();\n return true;\n }\n return false;\n };\n /**\n * @param {?} charCode\n * @return {?}\n */\n _Tokenizer.prototype._attemptCharCodeCaseInsensitive = function (charCode) {\n if (compareCharCodeCaseInsensitive(this._peek, charCode)) {\n this._advance();\n return true;\n }\n return false;\n };\n /**\n * @param {?} charCode\n * @return {?}\n */\n _Tokenizer.prototype._requireCharCode = function (charCode) {\n var /** @type {?} */ location = this._getLocation();\n if (!this._attemptCharCode(charCode)) {\n throw this._createError(_unexpectedCharacterErrorMsg(this._peek), this._getSpan(location, location));\n }\n };\n /**\n * @param {?} chars\n * @return {?}\n */\n _Tokenizer.prototype._attemptStr = function (chars) {\n var /** @type {?} */ len = chars.length;\n if (this._index + len > this._length) {\n return false;\n }\n var /** @type {?} */ initialPosition = this._savePosition();\n for (var /** @type {?} */ i = 0; i < len; i++) {\n if (!this._attemptCharCode(chars.charCodeAt(i))) {\n // If attempting to parse the string fails, we want to reset the parser\n // to where it was before the attempt\n this._restorePosition(initialPosition);\n return false;\n }\n }\n return true;\n };\n /**\n * @param {?} chars\n * @return {?}\n */\n _Tokenizer.prototype._attemptStrCaseInsensitive = function (chars) {\n for (var /** @type {?} */ i = 0; i < chars.length; i++) {\n if (!this._attemptCharCodeCaseInsensitive(chars.charCodeAt(i))) {\n return false;\n }\n }\n return true;\n };\n /**\n * @param {?} chars\n * @return {?}\n */\n _Tokenizer.prototype._requireStr = function (chars) {\n var /** @type {?} */ location = this._getLocation();\n if (!this._attemptStr(chars)) {\n throw this._createError(_unexpectedCharacterErrorMsg(this._peek), this._getSpan(location));\n }\n };\n /**\n * @param {?} predicate\n * @return {?}\n */\n _Tokenizer.prototype._attemptCharCodeUntilFn = function (predicate) {\n while (!predicate(this._peek)) {\n this._advance();\n }\n };\n /**\n * @param {?} predicate\n * @param {?} len\n * @return {?}\n */\n _Tokenizer.prototype._requireCharCodeUntilFn = function (predicate, len) {\n var /** @type {?} */ start = this._getLocation();\n this._attemptCharCodeUntilFn(predicate);\n if (this._index - start.offset < len) {\n throw this._createError(_unexpectedCharacterErrorMsg(this._peek), this._getSpan(start, start));\n }\n };\n /**\n * @param {?} char\n * @return {?}\n */\n _Tokenizer.prototype._attemptUntilChar = function (char) {\n while (this._peek !== char) {\n this._advance();\n }\n };\n /**\n * @param {?} decodeEntities\n * @return {?}\n */\n _Tokenizer.prototype._readChar = function (decodeEntities) {\n if (decodeEntities && this._peek === $AMPERSAND) {\n return this._decodeEntity();\n }\n else {\n var /** @type {?} */ index = this._index;\n this._advance();\n return this._input[index];\n }\n };\n /**\n * @return {?}\n */\n _Tokenizer.prototype._decodeEntity = function () {\n var /** @type {?} */ start = this._getLocation();\n this._advance();\n if (this._attemptCharCode($HASH)) {\n var /** @type {?} */ isHex = this._attemptCharCode($x) || this._attemptCharCode($X);\n var /** @type {?} */ numberStart = this._getLocation().offset;\n this._attemptCharCodeUntilFn(isDigitEntityEnd);\n if (this._peek != $SEMICOLON) {\n throw this._createError(_unexpectedCharacterErrorMsg(this._peek), this._getSpan());\n }\n this._advance();\n var /** @type {?} */ strNum = this._input.substring(numberStart, this._index - 1);\n try {\n var /** @type {?} */ charCode = parseInt(strNum, isHex ? 16 : 10);\n return String.fromCharCode(charCode);\n }\n catch (e) {\n var /** @type {?} */ entity = this._input.substring(start.offset + 1, this._index - 1);\n throw this._createError(_unknownEntityErrorMsg(entity), this._getSpan(start));\n }\n }\n else {\n var /** @type {?} */ startPosition = this._savePosition();\n this._attemptCharCodeUntilFn(isNamedEntityEnd);\n if (this._peek != $SEMICOLON) {\n this._restorePosition(startPosition);\n return '&';\n }\n this._advance();\n var /** @type {?} */ name = this._input.substring(start.offset + 1, this._index - 1);\n var /** @type {?} */ char = NAMED_ENTITIES[name];\n if (!char) {\n throw this._createError(_unknownEntityErrorMsg(name), this._getSpan(start));\n }\n return char;\n }\n };\n /**\n * @param {?} decodeEntities\n * @param {?} firstCharOfEnd\n * @param {?} attemptEndRest\n * @return {?}\n */\n _Tokenizer.prototype._consumeRawText = function (decodeEntities, firstCharOfEnd, attemptEndRest) {\n var /** @type {?} */ tagCloseStart;\n var /** @type {?} */ textStart = this._getLocation();\n this._beginToken(decodeEntities ? TokenType$1.ESCAPABLE_RAW_TEXT : TokenType$1.RAW_TEXT, textStart);\n var /** @type {?} */ parts = [];\n while (true) {\n tagCloseStart = this._getLocation();\n if (this._attemptCharCode(firstCharOfEnd) && attemptEndRest()) {\n break;\n }\n if (this._index > tagCloseStart.offset) {\n // add the characters consumed by the previous if statement to the output\n parts.push(this._input.substring(tagCloseStart.offset, this._index));\n }\n while (this._peek !== firstCharOfEnd) {\n parts.push(this._readChar(decodeEntities));\n }\n }\n return this._endToken([this._processCarriageReturns(parts.join(''))], tagCloseStart);\n };\n /**\n * @param {?} start\n * @return {?}\n */\n _Tokenizer.prototype._consumeComment = function (start) {\n var _this = this;\n this._beginToken(TokenType$1.COMMENT_START, start);\n this._requireCharCode($MINUS);\n this._endToken([]);\n var /** @type {?} */ textToken = this._consumeRawText(false, $MINUS, function () { return _this._attemptStr('->'); });\n this._beginToken(TokenType$1.COMMENT_END, textToken.sourceSpan.end);\n this._endToken([]);\n };\n /**\n * @param {?} start\n * @return {?}\n */\n _Tokenizer.prototype._consumeCdata = function (start) {\n var _this = this;\n this._beginToken(TokenType$1.CDATA_START, start);\n this._requireStr('CDATA[');\n this._endToken([]);\n var /** @type {?} */ textToken = this._consumeRawText(false, $RBRACKET, function () { return _this._attemptStr(']>'); });\n this._beginToken(TokenType$1.CDATA_END, textToken.sourceSpan.end);\n this._endToken([]);\n };\n /**\n * @param {?} start\n * @return {?}\n */\n _Tokenizer.prototype._consumeDocType = function (start) {\n this._beginToken(TokenType$1.DOC_TYPE, start);\n this._attemptUntilChar($GT);\n this._advance();\n this._endToken([this._input.substring(start.offset + 2, this._index - 1)]);\n };\n /**\n * @return {?}\n */\n _Tokenizer.prototype._consumePrefixAndName = function () {\n var /** @type {?} */ nameOrPrefixStart = this._index;\n var /** @type {?} */ prefix = null;\n while (this._peek !== $COLON && !isPrefixEnd(this._peek)) {\n this._advance();\n }\n var /** @type {?} */ nameStart;\n if (this._peek === $COLON) {\n this._advance();\n prefix = this._input.substring(nameOrPrefixStart, this._index - 1);\n nameStart = this._index;\n }\n else {\n nameStart = nameOrPrefixStart;\n }\n this._requireCharCodeUntilFn(isNameEnd, this._index === nameStart ? 1 : 0);\n var /** @type {?} */ name = this._input.substring(nameStart, this._index);\n return [prefix, name];\n };\n /**\n * @param {?} start\n * @return {?}\n */\n _Tokenizer.prototype._consumeTagOpen = function (start) {\n var /** @type {?} */ savedPos = this._savePosition();\n var /** @type {?} */ tagName;\n var /** @type {?} */ lowercaseTagName;\n try {\n if (!isAsciiLetter(this._peek)) {\n throw this._createError(_unexpectedCharacterErrorMsg(this._peek), this._getSpan());\n }\n var /** @type {?} */ nameStart = this._index;\n this._consumeTagOpenStart(start);\n tagName = this._input.substring(nameStart, this._index);\n lowercaseTagName = tagName.toLowerCase();\n this._attemptCharCodeUntilFn(isNotWhitespace);\n while (this._peek !== $SLASH && this._peek !== $GT) {\n this._consumeAttributeName();\n this._attemptCharCodeUntilFn(isNotWhitespace);\n if (this._attemptCharCode($EQ)) {\n this._attemptCharCodeUntilFn(isNotWhitespace);\n this._consumeAttributeValue();\n }\n this._attemptCharCodeUntilFn(isNotWhitespace);\n }\n this._consumeTagOpenEnd();\n }\n catch (e) {\n if (e instanceof _ControlFlowError) {\n // When the start tag is invalid, assume we want a \"<\"\n this._restorePosition(savedPos);\n // Back to back text tokens are merged at the end\n this._beginToken(TokenType$1.TEXT, start);\n this._endToken(['<']);\n return;\n }\n throw e;\n }\n var /** @type {?} */ contentTokenType = this._getTagDefinition(tagName).contentType;\n if (contentTokenType === TagContentType.RAW_TEXT) {\n this._consumeRawTextWithTagClose(lowercaseTagName, false);\n }\n else if (contentTokenType === TagContentType.ESCAPABLE_RAW_TEXT) {\n this._consumeRawTextWithTagClose(lowercaseTagName, true);\n }\n };\n /**\n * @param {?} lowercaseTagName\n * @param {?} decodeEntities\n * @return {?}\n */\n _Tokenizer.prototype._consumeRawTextWithTagClose = function (lowercaseTagName, decodeEntities) {\n var _this = this;\n var /** @type {?} */ textToken = this._consumeRawText(decodeEntities, $LT, function () {\n if (!_this._attemptCharCode($SLASH))\n return false;\n _this._attemptCharCodeUntilFn(isNotWhitespace);\n if (!_this._attemptStrCaseInsensitive(lowercaseTagName))\n return false;\n _this._attemptCharCodeUntilFn(isNotWhitespace);\n return _this._attemptCharCode($GT);\n });\n this._beginToken(TokenType$1.TAG_CLOSE, textToken.sourceSpan.end);\n this._endToken([null, lowercaseTagName]);\n };\n /**\n * @param {?} start\n * @return {?}\n */\n _Tokenizer.prototype._consumeTagOpenStart = function (start) {\n this._beginToken(TokenType$1.TAG_OPEN_START, start);\n var /** @type {?} */ parts = this._consumePrefixAndName();\n this._endToken(parts);\n };\n /**\n * @return {?}\n */\n _Tokenizer.prototype._consumeAttributeName = function () {\n this._beginToken(TokenType$1.ATTR_NAME);\n var /** @type {?} */ prefixAndName = this._consumePrefixAndName();\n this._endToken(prefixAndName);\n };\n /**\n * @return {?}\n */\n _Tokenizer.prototype._consumeAttributeValue = function () {\n this._beginToken(TokenType$1.ATTR_VALUE);\n var /** @type {?} */ value;\n if (this._peek === $SQ || this._peek === $DQ) {\n var /** @type {?} */ quoteChar = this._peek;\n this._advance();\n var /** @type {?} */ parts = [];\n while (this._peek !== quoteChar) {\n parts.push(this._readChar(true));\n }\n value = parts.join('');\n this._advance();\n }\n else {\n var /** @type {?} */ valueStart = this._index;\n this._requireCharCodeUntilFn(isNameEnd, 1);\n value = this._input.substring(valueStart, this._index);\n }\n this._endToken([this._processCarriageReturns(value)]);\n };\n /**\n * @return {?}\n */\n _Tokenizer.prototype._consumeTagOpenEnd = function () {\n var /** @type {?} */ tokenType = this._attemptCharCode($SLASH) ? TokenType$1.TAG_OPEN_END_VOID : TokenType$1.TAG_OPEN_END;\n this._beginToken(tokenType);\n this._requireCharCode($GT);\n this._endToken([]);\n };\n /**\n * @param {?} start\n * @return {?}\n */\n _Tokenizer.prototype._consumeTagClose = function (start) {\n this._beginToken(TokenType$1.TAG_CLOSE, start);\n this._attemptCharCodeUntilFn(isNotWhitespace);\n var /** @type {?} */ prefixAndName = this._consumePrefixAndName();\n this._attemptCharCodeUntilFn(isNotWhitespace);\n this._requireCharCode($GT);\n this._endToken(prefixAndName);\n };\n /**\n * @return {?}\n */\n _Tokenizer.prototype._consumeExpansionFormStart = function () {\n this._beginToken(TokenType$1.EXPANSION_FORM_START, this._getLocation());\n this._requireCharCode($LBRACE);\n this._endToken([]);\n this._expansionCaseStack.push(TokenType$1.EXPANSION_FORM_START);\n this._beginToken(TokenType$1.RAW_TEXT, this._getLocation());\n var /** @type {?} */ condition = this._readUntil($COMMA);\n this._endToken([condition], this._getLocation());\n this._requireCharCode($COMMA);\n this._attemptCharCodeUntilFn(isNotWhitespace);\n this._beginToken(TokenType$1.RAW_TEXT, this._getLocation());\n var /** @type {?} */ type = this._readUntil($COMMA);\n this._endToken([type], this._getLocation());\n this._requireCharCode($COMMA);\n this._attemptCharCodeUntilFn(isNotWhitespace);\n };\n /**\n * @return {?}\n */\n _Tokenizer.prototype._consumeExpansionCaseStart = function () {\n this._beginToken(TokenType$1.EXPANSION_CASE_VALUE, this._getLocation());\n var /** @type {?} */ value = this._readUntil($LBRACE).trim();\n this._endToken([value], this._getLocation());\n this._attemptCharCodeUntilFn(isNotWhitespace);\n this._beginToken(TokenType$1.EXPANSION_CASE_EXP_START, this._getLocation());\n this._requireCharCode($LBRACE);\n this._endToken([], this._getLocation());\n this._attemptCharCodeUntilFn(isNotWhitespace);\n this._expansionCaseStack.push(TokenType$1.EXPANSION_CASE_EXP_START);\n };\n /**\n * @return {?}\n */\n _Tokenizer.prototype._consumeExpansionCaseEnd = function () {\n this._beginToken(TokenType$1.EXPANSION_CASE_EXP_END, this._getLocation());\n this._requireCharCode($RBRACE);\n this._endToken([], this._getLocation());\n this._attemptCharCodeUntilFn(isNotWhitespace);\n this._expansionCaseStack.pop();\n };\n /**\n * @return {?}\n */\n _Tokenizer.prototype._consumeExpansionFormEnd = function () {\n this._beginToken(TokenType$1.EXPANSION_FORM_END, this._getLocation());\n this._requireCharCode($RBRACE);\n this._endToken([]);\n this._expansionCaseStack.pop();\n };\n /**\n * @return {?}\n */\n _Tokenizer.prototype._consumeText = function () {\n var /** @type {?} */ start = this._getLocation();\n this._beginToken(TokenType$1.TEXT, start);\n var /** @type {?} */ parts = [];\n do {\n if (this._interpolationConfig && this._attemptStr(this._interpolationConfig.start)) {\n parts.push(this._interpolationConfig.start);\n this._inInterpolation = true;\n }\n else if (this._interpolationConfig && this._inInterpolation &&\n this._attemptStr(this._interpolationConfig.end)) {\n parts.push(this._interpolationConfig.end);\n this._inInterpolation = false;\n }\n else {\n parts.push(this._readChar(true));\n }\n } while (!this._isTextEnd());\n this._endToken([this._processCarriageReturns(parts.join(''))]);\n };\n /**\n * @return {?}\n */\n _Tokenizer.prototype._isTextEnd = function () {\n if (this._peek === $LT || this._peek === $EOF) {\n return true;\n }\n if (this._tokenizeIcu && !this._inInterpolation) {\n if (isExpansionFormStart(this._input, this._index, this._interpolationConfig)) {\n // start of an expansion form\n return true;\n }\n if (this._peek === $RBRACE && this._isInExpansionCase()) {\n // end of and expansion case\n return true;\n }\n }\n return false;\n };\n /**\n * @return {?}\n */\n _Tokenizer.prototype._savePosition = function () {\n return [this._peek, this._index, this._column, this._line, this.tokens.length];\n };\n /**\n * @param {?} char\n * @return {?}\n */\n _Tokenizer.prototype._readUntil = function (char) {\n var /** @type {?} */ start = this._index;\n this._attemptUntilChar(char);\n return this._input.substring(start, this._index);\n };\n /**\n * @param {?} position\n * @return {?}\n */\n _Tokenizer.prototype._restorePosition = function (position) {\n this._peek = position[0];\n this._index = position[1];\n this._column = position[2];\n this._line = position[3];\n var /** @type {?} */ nbTokens = position[4];\n if (nbTokens < this.tokens.length) {\n // remove any extra tokens\n this.tokens = this.tokens.slice(0, nbTokens);\n }\n };\n /**\n * @return {?}\n */\n _Tokenizer.prototype._isInExpansionCase = function () {\n return this._expansionCaseStack.length > 0 &&\n this._expansionCaseStack[this._expansionCaseStack.length - 1] ===\n TokenType$1.EXPANSION_CASE_EXP_START;\n };\n /**\n * @return {?}\n */\n _Tokenizer.prototype._isInExpansionForm = function () {\n return this._expansionCaseStack.length > 0 &&\n this._expansionCaseStack[this._expansionCaseStack.length - 1] ===\n TokenType$1.EXPANSION_FORM_START;\n };\n return _Tokenizer;\n}());\n/**\n * @param {?} code\n * @return {?}\n */\nfunction isNotWhitespace(code) {\n return !isWhitespace(code) || code === $EOF;\n}\n/**\n * @param {?} code\n * @return {?}\n */\nfunction isNameEnd(code) {\n return isWhitespace(code) || code === $GT || code === $SLASH ||\n code === $SQ || code === $DQ || code === $EQ;\n}\n/**\n * @param {?} code\n * @return {?}\n */\nfunction isPrefixEnd(code) {\n return (code < $a || $z < code) && (code < $A || $Z < code) &&\n (code < $0 || code > $9);\n}\n/**\n * @param {?} code\n * @return {?}\n */\nfunction isDigitEntityEnd(code) {\n return code == $SEMICOLON || code == $EOF || !isAsciiHexDigit(code);\n}\n/**\n * @param {?} code\n * @return {?}\n */\nfunction isNamedEntityEnd(code) {\n return code == $SEMICOLON || code == $EOF || !isAsciiLetter(code);\n}\n/**\n * @param {?} input\n * @param {?} offset\n * @param {?} interpolationConfig\n * @return {?}\n */\nfunction isExpansionFormStart(input, offset, interpolationConfig) {\n var /** @type {?} */ isInterpolationStart = interpolationConfig ? input.indexOf(interpolationConfig.start, offset) == offset : false;\n return input.charCodeAt(offset) == $LBRACE && !isInterpolationStart;\n}\n/**\n * @param {?} peek\n * @return {?}\n */\nfunction isExpansionCaseStart(peek) {\n return peek === $EQ || isAsciiLetter(peek);\n}\n/**\n * @param {?} code1\n * @param {?} code2\n * @return {?}\n */\nfunction compareCharCodeCaseInsensitive(code1, code2) {\n return toUpperCaseCharCode(code1) == toUpperCaseCharCode(code2);\n}\n/**\n * @param {?} code\n * @return {?}\n */\nfunction toUpperCaseCharCode(code) {\n return code >= $a && code <= $z ? code - $a + $A : code;\n}\n/**\n * @param {?} srcTokens\n * @return {?}\n */\nfunction mergeTextTokens(srcTokens) {\n var /** @type {?} */ dstTokens = [];\n var /** @type {?} */ lastDstToken;\n for (var /** @type {?} */ i = 0; i < srcTokens.length; i++) {\n var /** @type {?} */ token = srcTokens[i];\n if (lastDstToken && lastDstToken.type == TokenType$1.TEXT && token.type == TokenType$1.TEXT) {\n lastDstToken.parts[0] += token.parts[0];\n lastDstToken.sourceSpan.end = token.sourceSpan.end;\n }\n else {\n lastDstToken = token;\n dstTokens.push(lastDstToken);\n }\n }\n return dstTokens;\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 */\nvar TreeError = (function (_super) {\n __extends(TreeError, _super);\n /**\n * @param {?} elementName\n * @param {?} span\n * @param {?} msg\n */\n function TreeError(elementName, span, msg) {\n var _this = _super.call(this, span, msg) || this;\n _this.elementName = elementName;\n return _this;\n }\n /**\n * @param {?} elementName\n * @param {?} span\n * @param {?} msg\n * @return {?}\n */\n TreeError.create = function (elementName, span, msg) {\n return new TreeError(elementName, span, msg);\n };\n return TreeError;\n}(ParseError));\nvar ParseTreeResult = (function () {\n /**\n * @param {?} rootNodes\n * @param {?} errors\n */\n function ParseTreeResult(rootNodes, errors) {\n this.rootNodes = rootNodes;\n this.errors = errors;\n }\n return ParseTreeResult;\n}());\nvar Parser$1 = (function () {\n /**\n * @param {?} getTagDefinition\n */\n function Parser$1(getTagDefinition) {\n this.getTagDefinition = getTagDefinition;\n }\n /**\n * @param {?} source\n * @param {?} url\n * @param {?=} parseExpansionForms\n * @param {?=} interpolationConfig\n * @return {?}\n */\n Parser$1.prototype.parse = function (source, url, parseExpansionForms, interpolationConfig) {\n if (parseExpansionForms === void 0) { parseExpansionForms = false; }\n if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; }\n var /** @type {?} */ tokensAndErrors = tokenize(source, url, this.getTagDefinition, parseExpansionForms, interpolationConfig);\n var /** @type {?} */ treeAndErrors = new _TreeBuilder(tokensAndErrors.tokens, this.getTagDefinition).build();\n return new ParseTreeResult(treeAndErrors.rootNodes, ((tokensAndErrors.errors)).concat(treeAndErrors.errors));\n };\n return Parser$1;\n}());\nvar _TreeBuilder = (function () {\n /**\n * @param {?} tokens\n * @param {?} getTagDefinition\n */\n function _TreeBuilder(tokens, getTagDefinition) {\n this.tokens = tokens;\n this.getTagDefinition = getTagDefinition;\n this._index = -1;\n this._rootNodes = [];\n this._errors = [];\n this._elementStack = [];\n this._advance();\n }\n /**\n * @return {?}\n */\n _TreeBuilder.prototype.build = function () {\n while (this._peek.type !== TokenType$1.EOF) {\n if (this._peek.type === TokenType$1.TAG_OPEN_START) {\n this._consumeStartTag(this._advance());\n }\n else if (this._peek.type === TokenType$1.TAG_CLOSE) {\n this._consumeEndTag(this._advance());\n }\n else if (this._peek.type === TokenType$1.CDATA_START) {\n this._closeVoidElement();\n this._consumeCdata(this._advance());\n }\n else if (this._peek.type === TokenType$1.COMMENT_START) {\n this._closeVoidElement();\n this._consumeComment(this._advance());\n }\n else if (this._peek.type === TokenType$1.TEXT || this._peek.type === TokenType$1.RAW_TEXT ||\n this._peek.type === TokenType$1.ESCAPABLE_RAW_TEXT) {\n this._closeVoidElement();\n this._consumeText(this._advance());\n }\n else if (this._peek.type === TokenType$1.EXPANSION_FORM_START) {\n this._consumeExpansion(this._advance());\n }\n else {\n // Skip all other tokens...\n this._advance();\n }\n }\n return new ParseTreeResult(this._rootNodes, this._errors);\n };\n /**\n * @return {?}\n */\n _TreeBuilder.prototype._advance = function () {\n var /** @type {?} */ prev = this._peek;\n if (this._index < this.tokens.length - 1) {\n // Note: there is always an EOF token at the end\n this._index++;\n }\n this._peek = this.tokens[this._index];\n return prev;\n };\n /**\n * @param {?} type\n * @return {?}\n */\n _TreeBuilder.prototype._advanceIf = function (type) {\n if (this._peek.type === type) {\n return this._advance();\n }\n return null;\n };\n /**\n * @param {?} startToken\n * @return {?}\n */\n _TreeBuilder.prototype._consumeCdata = function (startToken) {\n this._consumeText(this._advance());\n this._advanceIf(TokenType$1.CDATA_END);\n };\n /**\n * @param {?} token\n * @return {?}\n */\n _TreeBuilder.prototype._consumeComment = function (token) {\n var /** @type {?} */ text = this._advanceIf(TokenType$1.RAW_TEXT);\n this._advanceIf(TokenType$1.COMMENT_END);\n var /** @type {?} */ value = text != null ? text.parts[0].trim() : null;\n this._addToParent(new Comment(value, token.sourceSpan));\n };\n /**\n * @param {?} token\n * @return {?}\n */\n _TreeBuilder.prototype._consumeExpansion = function (token) {\n var /** @type {?} */ switchValue = this._advance();\n var /** @type {?} */ type = this._advance();\n var /** @type {?} */ cases = [];\n // read =\n while (this._peek.type === TokenType$1.EXPANSION_CASE_VALUE) {\n var /** @type {?} */ expCase = this._parseExpansionCase();\n if (!expCase)\n return; // error\n cases.push(expCase);\n }\n // read the final }\n if (this._peek.type !== TokenType$1.EXPANSION_FORM_END) {\n this._errors.push(TreeError.create(null, this._peek.sourceSpan, \"Invalid ICU message. Missing '}'.\"));\n return;\n }\n var /** @type {?} */ sourceSpan = new ParseSourceSpan(token.sourceSpan.start, this._peek.sourceSpan.end);\n this._addToParent(new Expansion(switchValue.parts[0], type.parts[0], cases, sourceSpan, switchValue.sourceSpan));\n this._advance();\n };\n /**\n * @return {?}\n */\n _TreeBuilder.prototype._parseExpansionCase = function () {\n var /** @type {?} */ value = this._advance();\n // read {\n if (this._peek.type !== TokenType$1.EXPANSION_CASE_EXP_START) {\n this._errors.push(TreeError.create(null, this._peek.sourceSpan, \"Invalid ICU message. Missing '{'.\"));\n return null;\n }\n // read until }\n var /** @type {?} */ start = this._advance();\n var /** @type {?} */ exp = this._collectExpansionExpTokens(start);\n if (!exp)\n return null;\n var /** @type {?} */ end = this._advance();\n exp.push(new Token$1(TokenType$1.EOF, [], end.sourceSpan));\n // parse everything in between { and }\n var /** @type {?} */ parsedExp = new _TreeBuilder(exp, this.getTagDefinition).build();\n if (parsedExp.errors.length > 0) {\n this._errors = this._errors.concat(/** @type {?} */ (parsedExp.errors));\n return null;\n }\n var /** @type {?} */ sourceSpan = new ParseSourceSpan(value.sourceSpan.start, end.sourceSpan.end);\n var /** @type {?} */ expSourceSpan = new ParseSourceSpan(start.sourceSpan.start, end.sourceSpan.end);\n return new ExpansionCase(value.parts[0], parsedExp.rootNodes, sourceSpan, value.sourceSpan, expSourceSpan);\n };\n /**\n * @param {?} start\n * @return {?}\n */\n _TreeBuilder.prototype._collectExpansionExpTokens = function (start) {\n var /** @type {?} */ exp = [];\n var /** @type {?} */ expansionFormStack = [TokenType$1.EXPANSION_CASE_EXP_START];\n while (true) {\n if (this._peek.type === TokenType$1.EXPANSION_FORM_START ||\n this._peek.type === TokenType$1.EXPANSION_CASE_EXP_START) {\n expansionFormStack.push(this._peek.type);\n }\n if (this._peek.type === TokenType$1.EXPANSION_CASE_EXP_END) {\n if (lastOnStack(expansionFormStack, TokenType$1.EXPANSION_CASE_EXP_START)) {\n expansionFormStack.pop();\n if (expansionFormStack.length == 0)\n return exp;\n }\n else {\n this._errors.push(TreeError.create(null, start.sourceSpan, \"Invalid ICU message. Missing '}'.\"));\n return null;\n }\n }\n if (this._peek.type === TokenType$1.EXPANSION_FORM_END) {\n if (lastOnStack(expansionFormStack, TokenType$1.EXPANSION_FORM_START)) {\n expansionFormStack.pop();\n }\n else {\n this._errors.push(TreeError.create(null, start.sourceSpan, \"Invalid ICU message. Missing '}'.\"));\n return null;\n }\n }\n if (this._peek.type === TokenType$1.EOF) {\n this._errors.push(TreeError.create(null, start.sourceSpan, \"Invalid ICU message. Missing '}'.\"));\n return null;\n }\n exp.push(this._advance());\n }\n };\n /**\n * @param {?} token\n * @return {?}\n */\n _TreeBuilder.prototype._consumeText = function (token) {\n var /** @type {?} */ text = token.parts[0];\n if (text.length > 0 && text[0] == '\\n') {\n var /** @type {?} */ parent = this._getParentElement();\n if (parent != null && parent.children.length == 0 &&\n this.getTagDefinition(parent.name).ignoreFirstLf) {\n text = text.substring(1);\n }\n }\n if (text.length > 0) {\n this._addToParent(new Text(text, token.sourceSpan));\n }\n };\n /**\n * @return {?}\n */\n _TreeBuilder.prototype._closeVoidElement = function () {\n if (this._elementStack.length > 0) {\n var /** @type {?} */ el = this._elementStack[this._elementStack.length - 1];\n if (this.getTagDefinition(el.name).isVoid) {\n this._elementStack.pop();\n }\n }\n };\n /**\n * @param {?} startTagToken\n * @return {?}\n */\n _TreeBuilder.prototype._consumeStartTag = function (startTagToken) {\n var /** @type {?} */ prefix = startTagToken.parts[0];\n var /** @type {?} */ name = startTagToken.parts[1];\n var /** @type {?} */ attrs = [];\n while (this._peek.type === TokenType$1.ATTR_NAME) {\n attrs.push(this._consumeAttr(this._advance()));\n }\n var /** @type {?} */ fullName = this._getElementFullName(prefix, name, this._getParentElement());\n var /** @type {?} */ selfClosing = false;\n // Note: There could have been a tokenizer error\n // so that we don't get a token for the end tag...\n if (this._peek.type === TokenType$1.TAG_OPEN_END_VOID) {\n this._advance();\n selfClosing = true;\n var /** @type {?} */ tagDef = this.getTagDefinition(fullName);\n if (!(tagDef.canSelfClose || getNsPrefix(fullName) !== null || tagDef.isVoid)) {\n this._errors.push(TreeError.create(fullName, startTagToken.sourceSpan, \"Only void and foreign elements can be self closed \\\"\" + startTagToken.parts[1] + \"\\\"\"));\n }\n }\n else if (this._peek.type === TokenType$1.TAG_OPEN_END) {\n this._advance();\n selfClosing = false;\n }\n var /** @type {?} */ end = this._peek.sourceSpan.start;\n var /** @type {?} */ span = new ParseSourceSpan(startTagToken.sourceSpan.start, end);\n var /** @type {?} */ el = new Element(fullName, attrs, [], span, span, null);\n this._pushElement(el);\n if (selfClosing) {\n this._popElement(fullName);\n el.endSourceSpan = span;\n }\n };\n /**\n * @param {?} el\n * @return {?}\n */\n _TreeBuilder.prototype._pushElement = function (el) {\n if (this._elementStack.length > 0) {\n var /** @type {?} */ parentEl = this._elementStack[this._elementStack.length - 1];\n if (this.getTagDefinition(parentEl.name).isClosedByChild(el.name)) {\n this._elementStack.pop();\n }\n }\n var /** @type {?} */ tagDef = this.getTagDefinition(el.name);\n var _a = this._getParentElementSkippingContainers(), parent = _a.parent, container = _a.container;\n if (parent && tagDef.requireExtraParent(parent.name)) {\n var /** @type {?} */ newParent = new Element(tagDef.parentToAdd, [], [], el.sourceSpan, el.startSourceSpan, el.endSourceSpan);\n this._insertBeforeContainer(parent, container, newParent);\n }\n this._addToParent(el);\n this._elementStack.push(el);\n };\n /**\n * @param {?} endTagToken\n * @return {?}\n */\n _TreeBuilder.prototype._consumeEndTag = function (endTagToken) {\n var /** @type {?} */ fullName = this._getElementFullName(endTagToken.parts[0], endTagToken.parts[1], this._getParentElement());\n if (this._getParentElement()) {\n this._getParentElement().endSourceSpan = endTagToken.sourceSpan;\n }\n if (this.getTagDefinition(fullName).isVoid) {\n this._errors.push(TreeError.create(fullName, endTagToken.sourceSpan, \"Void elements do not have end tags \\\"\" + endTagToken.parts[1] + \"\\\"\"));\n }\n else if (!this._popElement(fullName)) {\n var /** @type {?} */ errMsg = \"Unexpected closing tag \\\"\" + fullName + \"\\\". It may happen when the tag has already been closed by another tag. For more info see https://www.w3.org/TR/html5/syntax.html#closing-elements-that-have-implied-end-tags\";\n this._errors.push(TreeError.create(fullName, endTagToken.sourceSpan, errMsg));\n }\n };\n /**\n * @param {?} fullName\n * @return {?}\n */\n _TreeBuilder.prototype._popElement = function (fullName) {\n for (var /** @type {?} */ stackIndex = this._elementStack.length - 1; stackIndex >= 0; stackIndex--) {\n var /** @type {?} */ el = this._elementStack[stackIndex];\n if (el.name == fullName) {\n this._elementStack.splice(stackIndex, this._elementStack.length - stackIndex);\n return true;\n }\n if (!this.getTagDefinition(el.name).closedByParent) {\n return false;\n }\n }\n return false;\n };\n /**\n * @param {?} attrName\n * @return {?}\n */\n _TreeBuilder.prototype._consumeAttr = function (attrName) {\n var /** @type {?} */ fullName = mergeNsAndName(attrName.parts[0], attrName.parts[1]);\n var /** @type {?} */ end = attrName.sourceSpan.end;\n var /** @type {?} */ value = '';\n var /** @type {?} */ valueSpan;\n if (this._peek.type === TokenType$1.ATTR_VALUE) {\n var /** @type {?} */ valueToken = this._advance();\n value = valueToken.parts[0];\n end = valueToken.sourceSpan.end;\n valueSpan = valueToken.sourceSpan;\n }\n return new Attribute$1(fullName, value, new ParseSourceSpan(attrName.sourceSpan.start, end), valueSpan);\n };\n /**\n * @return {?}\n */\n _TreeBuilder.prototype._getParentElement = function () {\n return this._elementStack.length > 0 ? this._elementStack[this._elementStack.length - 1] : null;\n };\n /**\n * Returns the parent in the DOM and the container.\n *\n * `<ng-container>` elements are skipped as they are not rendered as DOM element.\n * @return {?}\n */\n _TreeBuilder.prototype._getParentElementSkippingContainers = function () {\n var /** @type {?} */ container = null;\n for (var /** @type {?} */ i = this._elementStack.length - 1; i >= 0; i--) {\n if (this._elementStack[i].name !== 'ng-container') {\n return { parent: this._elementStack[i], container: container };\n }\n container = this._elementStack[i];\n }\n return { parent: this._elementStack[this._elementStack.length - 1], container: container };\n };\n /**\n * @param {?} node\n * @return {?}\n */\n _TreeBuilder.prototype._addToParent = function (node) {\n var /** @type {?} */ parent = this._getParentElement();\n if (parent != null) {\n parent.children.push(node);\n }\n else {\n this._rootNodes.push(node);\n }\n };\n /**\n * Insert a node between the parent and the container.\n * When no container is given, the node is appended as a child of the parent.\n * Also updates the element stack accordingly.\n *\n * \\@internal\n * @param {?} parent\n * @param {?} container\n * @param {?} node\n * @return {?}\n */\n _TreeBuilder.prototype._insertBeforeContainer = function (parent, container, node) {\n if (!container) {\n this._addToParent(node);\n this._elementStack.push(node);\n }\n else {\n if (parent) {\n // replace the container with the new node in the children\n var /** @type {?} */ index = parent.children.indexOf(container);\n parent.children[index] = node;\n }\n else {\n this._rootNodes.push(node);\n }\n node.children.push(container);\n this._elementStack.splice(this._elementStack.indexOf(container), 0, node);\n }\n };\n /**\n * @param {?} prefix\n * @param {?} localName\n * @param {?} parentElement\n * @return {?}\n */\n _TreeBuilder.prototype._getElementFullName = function (prefix, localName, parentElement) {\n if (prefix == null) {\n prefix = this.getTagDefinition(localName).implicitNamespacePrefix;\n if (prefix == null && parentElement != null) {\n prefix = getNsPrefix(parentElement.name);\n }\n }\n return mergeNsAndName(prefix, localName);\n };\n return _TreeBuilder;\n}());\n/**\n * @param {?} stack\n * @param {?} element\n * @return {?}\n */\nfunction lastOnStack(stack, element) {\n return stack.length > 0 && stack[stack.length - 1] === element;\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 */\nvar Message = (function () {\n /**\n * @param {?} nodes message AST\n * @param {?} placeholders maps placeholder names to static content\n * @param {?} placeholderToMessage maps placeholder names to messages (used for nested ICU messages)\n * @param {?} meaning\n * @param {?} description\n * @param {?} id\n */\n function Message(nodes, placeholders, placeholderToMessage, meaning, description, id) {\n this.nodes = nodes;\n this.placeholders = placeholders;\n this.placeholderToMessage = placeholderToMessage;\n this.meaning = meaning;\n this.description = description;\n this.id = id;\n }\n return Message;\n}());\nvar Text$1 = (function () {\n /**\n * @param {?} value\n * @param {?} sourceSpan\n */\n function Text$1(value, sourceSpan) {\n this.value = value;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n Text$1.prototype.visit = function (visitor, context) { return visitor.visitText(this, context); };\n return Text$1;\n}());\nvar Container = (function () {\n /**\n * @param {?} children\n * @param {?} sourceSpan\n */\n function Container(children, sourceSpan) {\n this.children = children;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n Container.prototype.visit = function (visitor, context) { return visitor.visitContainer(this, context); };\n return Container;\n}());\nvar Icu = (function () {\n /**\n * @param {?} expression\n * @param {?} type\n * @param {?} cases\n * @param {?} sourceSpan\n */\n function Icu(expression, type, cases, sourceSpan) {\n this.expression = expression;\n this.type = type;\n this.cases = cases;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n Icu.prototype.visit = function (visitor, context) { return visitor.visitIcu(this, context); };\n return Icu;\n}());\nvar TagPlaceholder = (function () {\n /**\n * @param {?} tag\n * @param {?} attrs\n * @param {?} startName\n * @param {?} closeName\n * @param {?} children\n * @param {?} isVoid\n * @param {?} sourceSpan\n */\n function TagPlaceholder(tag, attrs, startName, closeName, children, isVoid, sourceSpan) {\n this.tag = tag;\n this.attrs = attrs;\n this.startName = startName;\n this.closeName = closeName;\n this.children = children;\n this.isVoid = isVoid;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n TagPlaceholder.prototype.visit = function (visitor, context) { return visitor.visitTagPlaceholder(this, context); };\n return TagPlaceholder;\n}());\nvar Placeholder = (function () {\n /**\n * @param {?} value\n * @param {?} name\n * @param {?} sourceSpan\n */\n function Placeholder(value, name, sourceSpan) {\n this.value = value;\n this.name = name;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n Placeholder.prototype.visit = function (visitor, context) { return visitor.visitPlaceholder(this, context); };\n return Placeholder;\n}());\nvar IcuPlaceholder = (function () {\n /**\n * @param {?} value\n * @param {?} name\n * @param {?} sourceSpan\n */\n function IcuPlaceholder(value, name, sourceSpan) {\n this.value = value;\n this.name = name;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\n IcuPlaceholder.prototype.visit = function (visitor, context) { return visitor.visitIcuPlaceholder(this, context); };\n return IcuPlaceholder;\n}());\nvar CloneVisitor = (function () {\n function CloneVisitor() {\n }\n /**\n * @param {?} text\n * @param {?=} context\n * @return {?}\n */\n CloneVisitor.prototype.visitText = function (text, context) { return new Text$1(text.value, text.sourceSpan); };\n /**\n * @param {?} container\n * @param {?=} context\n * @return {?}\n */\n CloneVisitor.prototype.visitContainer = function (container, context) {\n var _this = this;\n var /** @type {?} */ children = container.children.map(function (n) { return n.visit(_this, context); });\n return new Container(children, container.sourceSpan);\n };\n /**\n * @param {?} icu\n * @param {?=} context\n * @return {?}\n */\n CloneVisitor.prototype.visitIcu = function (icu, context) {\n var _this = this;\n var /** @type {?} */ cases = {};\n Object.keys(icu.cases).forEach(function (key) { return cases[key] = icu.cases[key].visit(_this, context); });\n var /** @type {?} */ msg = new Icu(icu.expression, icu.type, cases, icu.sourceSpan);\n msg.expressionPlaceholder = icu.expressionPlaceholder;\n return msg;\n };\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n CloneVisitor.prototype.visitTagPlaceholder = function (ph, context) {\n var _this = this;\n var /** @type {?} */ children = ph.children.map(function (n) { return n.visit(_this, context); });\n return new TagPlaceholder(ph.tag, ph.attrs, ph.startName, ph.closeName, children, ph.isVoid, ph.sourceSpan);\n };\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n CloneVisitor.prototype.visitPlaceholder = function (ph, context) {\n return new Placeholder(ph.value, ph.name, ph.sourceSpan);\n };\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n CloneVisitor.prototype.visitIcuPlaceholder = function (ph, context) {\n return new IcuPlaceholder(ph.value, ph.name, ph.sourceSpan);\n };\n return CloneVisitor;\n}());\nvar RecurseVisitor = (function () {\n function RecurseVisitor() {\n }\n /**\n * @param {?} text\n * @param {?=} context\n * @return {?}\n */\n RecurseVisitor.prototype.visitText = function (text, context) { };\n ;\n /**\n * @param {?} container\n * @param {?=} context\n * @return {?}\n */\n RecurseVisitor.prototype.visitContainer = function (container, context) {\n var _this = this;\n container.children.forEach(function (child) { return child.visit(_this); });\n };\n /**\n * @param {?} icu\n * @param {?=} context\n * @return {?}\n */\n RecurseVisitor.prototype.visitIcu = function (icu, context) {\n var _this = this;\n Object.keys(icu.cases).forEach(function (k) { icu.cases[k].visit(_this); });\n };\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n RecurseVisitor.prototype.visitTagPlaceholder = function (ph, context) {\n var _this = this;\n ph.children.forEach(function (child) { return child.visit(_this); });\n };\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n RecurseVisitor.prototype.visitPlaceholder = function (ph, context) { };\n ;\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n RecurseVisitor.prototype.visitIcuPlaceholder = function (ph, context) { };\n ;\n return RecurseVisitor;\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 */\nvar TAG_TO_PLACEHOLDER_NAMES = {\n 'A': 'LINK',\n 'B': 'BOLD_TEXT',\n 'BR': 'LINE_BREAK',\n 'EM': 'EMPHASISED_TEXT',\n 'H1': 'HEADING_LEVEL1',\n 'H2': 'HEADING_LEVEL2',\n 'H3': 'HEADING_LEVEL3',\n 'H4': 'HEADING_LEVEL4',\n 'H5': 'HEADING_LEVEL5',\n 'H6': 'HEADING_LEVEL6',\n 'HR': 'HORIZONTAL_RULE',\n 'I': 'ITALIC_TEXT',\n 'LI': 'LIST_ITEM',\n 'LINK': 'MEDIA_LINK',\n 'OL': 'ORDERED_LIST',\n 'P': 'PARAGRAPH',\n 'Q': 'QUOTATION',\n 'S': 'STRIKETHROUGH_TEXT',\n 'SMALL': 'SMALL_TEXT',\n 'SUB': 'SUBSTRIPT',\n 'SUP': 'SUPERSCRIPT',\n 'TBODY': 'TABLE_BODY',\n 'TD': 'TABLE_CELL',\n 'TFOOT': 'TABLE_FOOTER',\n 'TH': 'TABLE_HEADER_CELL',\n 'THEAD': 'TABLE_HEADER',\n 'TR': 'TABLE_ROW',\n 'TT': 'MONOSPACED_TEXT',\n 'U': 'UNDERLINED_TEXT',\n 'UL': 'UNORDERED_LIST',\n};\n/**\n * Creates unique names for placeholder with different content.\n *\n * Returns the same placeholder name when the content is identical.\n *\n * \\@internal\n */\nvar PlaceholderRegistry = (function () {\n function PlaceholderRegistry() {\n this._placeHolderNameCounts = {};\n this._signatureToName = {};\n }\n /**\n * @param {?} tag\n * @param {?} attrs\n * @param {?} isVoid\n * @return {?}\n */\n PlaceholderRegistry.prototype.getStartTagPlaceholderName = function (tag, attrs, isVoid) {\n var /** @type {?} */ signature = this._hashTag(tag, attrs, isVoid);\n if (this._signatureToName[signature]) {\n return this._signatureToName[signature];\n }\n var /** @type {?} */ upperTag = tag.toUpperCase();\n var /** @type {?} */ baseName = TAG_TO_PLACEHOLDER_NAMES[upperTag] || \"TAG_\" + upperTag;\n var /** @type {?} */ name = this._generateUniqueName(isVoid ? baseName : \"START_\" + baseName);\n this._signatureToName[signature] = name;\n return name;\n };\n /**\n * @param {?} tag\n * @return {?}\n */\n PlaceholderRegistry.prototype.getCloseTagPlaceholderName = function (tag) {\n var /** @type {?} */ signature = this._hashClosingTag(tag);\n if (this._signatureToName[signature]) {\n return this._signatureToName[signature];\n }\n var /** @type {?} */ upperTag = tag.toUpperCase();\n var /** @type {?} */ baseName = TAG_TO_PLACEHOLDER_NAMES[upperTag] || \"TAG_\" + upperTag;\n var /** @type {?} */ name = this._generateUniqueName(\"CLOSE_\" + baseName);\n this._signatureToName[signature] = name;\n return name;\n };\n /**\n * @param {?} name\n * @param {?} content\n * @return {?}\n */\n PlaceholderRegistry.prototype.getPlaceholderName = function (name, content) {\n var /** @type {?} */ upperName = name.toUpperCase();\n var /** @type {?} */ signature = \"PH: \" + upperName + \"=\" + content;\n if (this._signatureToName[signature]) {\n return this._signatureToName[signature];\n }\n var /** @type {?} */ uniqueName = this._generateUniqueName(upperName);\n this._signatureToName[signature] = uniqueName;\n return uniqueName;\n };\n /**\n * @param {?} name\n * @return {?}\n */\n PlaceholderRegistry.prototype.getUniquePlaceholder = function (name) {\n return this._generateUniqueName(name.toUpperCase());\n };\n /**\n * @param {?} tag\n * @param {?} attrs\n * @param {?} isVoid\n * @return {?}\n */\n PlaceholderRegistry.prototype._hashTag = function (tag, attrs, isVoid) {\n var /** @type {?} */ start = \"<\" + tag;\n var /** @type {?} */ strAttrs = Object.keys(attrs).sort().map(function (name) { return \" \" + name + \"=\" + attrs[name]; }).join('');\n var /** @type {?} */ end = isVoid ? '/>' : \"></\" + tag + \">\";\n return start + strAttrs + end;\n };\n /**\n * @param {?} tag\n * @return {?}\n */\n PlaceholderRegistry.prototype._hashClosingTag = function (tag) { return this._hashTag(\"/\" + tag, {}, false); };\n /**\n * @param {?} base\n * @return {?}\n */\n PlaceholderRegistry.prototype._generateUniqueName = function (base) {\n var /** @type {?} */ seen = this._placeHolderNameCounts.hasOwnProperty(base);\n if (!seen) {\n this._placeHolderNameCounts[base] = 1;\n return base;\n }\n var /** @type {?} */ id = this._placeHolderNameCounts[base];\n this._placeHolderNameCounts[base] = id + 1;\n return base + \"_\" + id;\n };\n return PlaceholderRegistry;\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 */\nvar _expParser = new Parser(new Lexer());\n/**\n * Returns a function converting html nodes to an i18n Message given an interpolationConfig\n * @param {?} interpolationConfig\n * @return {?}\n */\nfunction createI18nMessageFactory(interpolationConfig) {\n var /** @type {?} */ visitor = new _I18nVisitor(_expParser, interpolationConfig);\n return function (nodes, meaning, description, id) { return visitor.toI18nMessage(nodes, meaning, description, id); };\n}\nvar _I18nVisitor = (function () {\n /**\n * @param {?} _expressionParser\n * @param {?} _interpolationConfig\n */\n function _I18nVisitor(_expressionParser, _interpolationConfig) {\n this._expressionParser = _expressionParser;\n this._interpolationConfig = _interpolationConfig;\n }\n /**\n * @param {?} nodes\n * @param {?} meaning\n * @param {?} description\n * @param {?} id\n * @return {?}\n */\n _I18nVisitor.prototype.toI18nMessage = function (nodes, meaning, description, id) {\n this._isIcu = nodes.length == 1 && nodes[0] instanceof Expansion;\n this._icuDepth = 0;\n this._placeholderRegistry = new PlaceholderRegistry();\n this._placeholderToContent = {};\n this._placeholderToMessage = {};\n var /** @type {?} */ i18nodes = visitAll(this, nodes, {});\n return new Message(i18nodes, this._placeholderToContent, this._placeholderToMessage, meaning, description, id);\n };\n /**\n * @param {?} el\n * @param {?} context\n * @return {?}\n */\n _I18nVisitor.prototype.visitElement = function (el, context) {\n var /** @type {?} */ children = visitAll(this, el.children);\n var /** @type {?} */ attrs = {};\n el.attrs.forEach(function (attr) {\n // Do not visit the attributes, translatable ones are top-level ASTs\n attrs[attr.name] = attr.value;\n });\n var /** @type {?} */ isVoid = getHtmlTagDefinition(el.name).isVoid;\n var /** @type {?} */ startPhName = this._placeholderRegistry.getStartTagPlaceholderName(el.name, attrs, isVoid);\n this._placeholderToContent[startPhName] = el.sourceSpan.toString();\n var /** @type {?} */ closePhName = '';\n if (!isVoid) {\n closePhName = this._placeholderRegistry.getCloseTagPlaceholderName(el.name);\n this._placeholderToContent[closePhName] = \"</\" + el.name + \">\";\n }\n return new TagPlaceholder(el.name, attrs, startPhName, closePhName, children, isVoid, el.sourceSpan);\n };\n /**\n * @param {?} attribute\n * @param {?} context\n * @return {?}\n */\n _I18nVisitor.prototype.visitAttribute = function (attribute, context) {\n return this._visitTextWithInterpolation(attribute.value, attribute.sourceSpan);\n };\n /**\n * @param {?} text\n * @param {?} context\n * @return {?}\n */\n _I18nVisitor.prototype.visitText = function (text, context) {\n return this._visitTextWithInterpolation(text.value, text.sourceSpan);\n };\n /**\n * @param {?} comment\n * @param {?} context\n * @return {?}\n */\n _I18nVisitor.prototype.visitComment = function (comment, context) { return null; };\n /**\n * @param {?} icu\n * @param {?} context\n * @return {?}\n */\n _I18nVisitor.prototype.visitExpansion = function (icu, context) {\n var _this = this;\n this._icuDepth++;\n var /** @type {?} */ i18nIcuCases = {};\n var /** @type {?} */ i18nIcu = new Icu(icu.switchValue, icu.type, i18nIcuCases, icu.sourceSpan);\n icu.cases.forEach(function (caze) {\n i18nIcuCases[caze.value] = new Container(caze.expression.map(function (node) { return node.visit(_this, {}); }), caze.expSourceSpan);\n });\n this._icuDepth--;\n if (this._isIcu || this._icuDepth > 0) {\n // Returns an ICU node when:\n // - the message (vs a part of the message) is an ICU message, or\n // - the ICU message is nested.\n var /** @type {?} */ expPh = this._placeholderRegistry.getUniquePlaceholder(\"VAR_\" + icu.type);\n i18nIcu.expressionPlaceholder = expPh;\n this._placeholderToContent[expPh] = icu.switchValue;\n return i18nIcu;\n }\n // Else returns a placeholder\n // ICU placeholders should not be replaced with their original content but with the their\n // translations. We need to create a new visitor (they are not re-entrant) to compute the\n // message id.\n // TODO(vicb): add a html.Node -> i18n.Message cache to avoid having to re-create the msg\n var /** @type {?} */ phName = this._placeholderRegistry.getPlaceholderName('ICU', icu.sourceSpan.toString());\n var /** @type {?} */ visitor = new _I18nVisitor(this._expressionParser, this._interpolationConfig);\n this._placeholderToMessage[phName] = visitor.toI18nMessage([icu], '', '', '');\n return new IcuPlaceholder(i18nIcu, phName, icu.sourceSpan);\n };\n /**\n * @param {?} icuCase\n * @param {?} context\n * @return {?}\n */\n _I18nVisitor.prototype.visitExpansionCase = function (icuCase, context) {\n throw new Error('Unreachable code');\n };\n /**\n * @param {?} text\n * @param {?} sourceSpan\n * @return {?}\n */\n _I18nVisitor.prototype._visitTextWithInterpolation = function (text, sourceSpan) {\n var /** @type {?} */ splitInterpolation = this._expressionParser.splitInterpolation(text, sourceSpan.start.toString(), this._interpolationConfig);\n if (!splitInterpolation) {\n // No expression, return a single text\n return new Text$1(text, sourceSpan);\n }\n // Return a group of text + expressions\n var /** @type {?} */ nodes = [];\n var /** @type {?} */ container = new Container(nodes, sourceSpan);\n var _a = this._interpolationConfig, sDelimiter = _a.start, eDelimiter = _a.end;\n for (var /** @type {?} */ i = 0; i < splitInterpolation.strings.length - 1; i++) {\n var /** @type {?} */ expression = splitInterpolation.expressions[i];\n var /** @type {?} */ baseName = _extractPlaceholderName(expression) || 'INTERPOLATION';\n var /** @type {?} */ phName = this._placeholderRegistry.getPlaceholderName(baseName, expression);\n if (splitInterpolation.strings[i].length) {\n // No need to add empty strings\n nodes.push(new Text$1(splitInterpolation.strings[i], sourceSpan));\n }\n nodes.push(new Placeholder(expression, phName, sourceSpan));\n this._placeholderToContent[phName] = sDelimiter + expression + eDelimiter;\n }\n // The last index contains no expression\n var /** @type {?} */ lastStringIdx = splitInterpolation.strings.length - 1;\n if (splitInterpolation.strings[lastStringIdx].length) {\n nodes.push(new Text$1(splitInterpolation.strings[lastStringIdx], sourceSpan));\n }\n return container;\n };\n return _I18nVisitor;\n}());\nvar _CUSTOM_PH_EXP = /\\/\\/[\\s\\S]*i18n[\\s\\S]*\\([\\s\\S]*ph[\\s\\S]*=[\\s\\S]*(\"|')([\\s\\S]*?)\\1[\\s\\S]*\\)/g;\n/**\n * @param {?} input\n * @return {?}\n */\nfunction _extractPlaceholderName(input) {\n return input.split(_CUSTOM_PH_EXP)[2];\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 * An i18n error.\n */\nvar I18nError = (function (_super) {\n __extends(I18nError, _super);\n /**\n * @param {?} span\n * @param {?} msg\n */\n function I18nError(span, msg) {\n return _super.call(this, span, msg) || this;\n }\n return I18nError;\n}(ParseError));\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 */\nvar _I18N_ATTR = 'i18n';\nvar _I18N_ATTR_PREFIX = 'i18n-';\nvar _I18N_COMMENT_PREFIX_REGEXP = /^i18n:?/;\nvar MEANING_SEPARATOR = '|';\nvar ID_SEPARATOR = '@@';\n/**\n * Extract translatable messages from an html AST\n * @param {?} nodes\n * @param {?} interpolationConfig\n * @param {?} implicitTags\n * @param {?} implicitAttrs\n * @return {?}\n */\nfunction extractMessages(nodes, interpolationConfig, implicitTags, implicitAttrs) {\n var /** @type {?} */ visitor = new _Visitor(implicitTags, implicitAttrs);\n return visitor.extract(nodes, interpolationConfig);\n}\n/**\n * @param {?} nodes\n * @param {?} translations\n * @param {?} interpolationConfig\n * @param {?} implicitTags\n * @param {?} implicitAttrs\n * @return {?}\n */\nfunction mergeTranslations(nodes, translations, interpolationConfig, implicitTags, implicitAttrs) {\n var /** @type {?} */ visitor = new _Visitor(implicitTags, implicitAttrs);\n return visitor.merge(nodes, translations, interpolationConfig);\n}\nvar ExtractionResult = (function () {\n /**\n * @param {?} messages\n * @param {?} errors\n */\n function ExtractionResult(messages, errors) {\n this.messages = messages;\n this.errors = errors;\n }\n return ExtractionResult;\n}());\nvar _VisitorMode = {};\n_VisitorMode.Extract = 0;\n_VisitorMode.Merge = 1;\n_VisitorMode[_VisitorMode.Extract] = \"Extract\";\n_VisitorMode[_VisitorMode.Merge] = \"Merge\";\n/**\n * This Visitor is used:\n * 1. to extract all the translatable strings from an html AST (see `extract()`),\n * 2. to replace the translatable strings with the actual translations (see `merge()`)\n *\n * \\@internal\n */\nvar _Visitor = (function () {\n /**\n * @param {?} _implicitTags\n * @param {?} _implicitAttrs\n */\n function _Visitor(_implicitTags, _implicitAttrs) {\n this._implicitTags = _implicitTags;\n this._implicitAttrs = _implicitAttrs;\n }\n /**\n * Extracts the messages from the tree\n * @param {?} nodes\n * @param {?} interpolationConfig\n * @return {?}\n */\n _Visitor.prototype.extract = function (nodes, interpolationConfig) {\n var _this = this;\n this._init(_VisitorMode.Extract, interpolationConfig);\n nodes.forEach(function (node) { return node.visit(_this, null); });\n if (this._inI18nBlock) {\n this._reportError(nodes[nodes.length - 1], 'Unclosed block');\n }\n return new ExtractionResult(this._messages, this._errors);\n };\n /**\n * Returns a tree where all translatable nodes are translated\n * @param {?} nodes\n * @param {?} translations\n * @param {?} interpolationConfig\n * @return {?}\n */\n _Visitor.prototype.merge = function (nodes, translations, interpolationConfig) {\n this._init(_VisitorMode.Merge, interpolationConfig);\n this._translations = translations;\n // Construct a single fake root element\n var /** @type {?} */ wrapper = new Element('wrapper', [], nodes, null, null, null);\n var /** @type {?} */ translatedNode = wrapper.visit(this, null);\n if (this._inI18nBlock) {\n this._reportError(nodes[nodes.length - 1], 'Unclosed block');\n }\n return new ParseTreeResult(translatedNode.children, this._errors);\n };\n /**\n * @param {?} icuCase\n * @param {?} context\n * @return {?}\n */\n _Visitor.prototype.visitExpansionCase = function (icuCase, context) {\n // Parse cases for translatable html attributes\n var /** @type {?} */ expression = visitAll(this, icuCase.expression, context);\n if (this._mode === _VisitorMode.Merge) {\n return new ExpansionCase(icuCase.value, expression, icuCase.sourceSpan, icuCase.valueSourceSpan, icuCase.expSourceSpan);\n }\n };\n /**\n * @param {?} icu\n * @param {?} context\n * @return {?}\n */\n _Visitor.prototype.visitExpansion = function (icu, context) {\n this._mayBeAddBlockChildren(icu);\n var /** @type {?} */ wasInIcu = this._inIcu;\n if (!this._inIcu) {\n // nested ICU messages should not be extracted but top-level translated as a whole\n if (this._isInTranslatableSection) {\n this._addMessage([icu]);\n }\n this._inIcu = true;\n }\n var /** @type {?} */ cases = visitAll(this, icu.cases, context);\n if (this._mode === _VisitorMode.Merge) {\n icu = new Expansion(icu.switchValue, icu.type, cases, icu.sourceSpan, icu.switchValueSourceSpan);\n }\n this._inIcu = wasInIcu;\n return icu;\n };\n /**\n * @param {?} comment\n * @param {?} context\n * @return {?}\n */\n _Visitor.prototype.visitComment = function (comment, context) {\n var /** @type {?} */ isOpening = _isOpeningComment(comment);\n if (isOpening && this._isInTranslatableSection) {\n this._reportError(comment, 'Could not start a block inside a translatable section');\n return;\n }\n var /** @type {?} */ isClosing = _isClosingComment(comment);\n if (isClosing && !this._inI18nBlock) {\n this._reportError(comment, 'Trying to close an unopened block');\n return;\n }\n if (!this._inI18nNode && !this._inIcu) {\n if (!this._inI18nBlock) {\n if (isOpening) {\n this._inI18nBlock = true;\n this._blockStartDepth = this._depth;\n this._blockChildren = [];\n this._blockMeaningAndDesc = comment.value.replace(_I18N_COMMENT_PREFIX_REGEXP, '').trim();\n this._openTranslatableSection(comment);\n }\n }\n else {\n if (isClosing) {\n if (this._depth == this._blockStartDepth) {\n this._closeTranslatableSection(comment, this._blockChildren);\n this._inI18nBlock = false;\n var /** @type {?} */ message = this._addMessage(this._blockChildren, this._blockMeaningAndDesc);\n // merge attributes in sections\n var /** @type {?} */ nodes = this._translateMessage(comment, message);\n return visitAll(this, nodes);\n }\n else {\n this._reportError(comment, 'I18N blocks should not cross element boundaries');\n return;\n }\n }\n }\n }\n };\n /**\n * @param {?} text\n * @param {?} context\n * @return {?}\n */\n _Visitor.prototype.visitText = function (text, context) {\n if (this._isInTranslatableSection) {\n this._mayBeAddBlockChildren(text);\n }\n return text;\n };\n /**\n * @param {?} el\n * @param {?} context\n * @return {?}\n */\n _Visitor.prototype.visitElement = function (el, context) {\n var _this = this;\n this._mayBeAddBlockChildren(el);\n this._depth++;\n var /** @type {?} */ wasInI18nNode = this._inI18nNode;\n var /** @type {?} */ wasInImplicitNode = this._inImplicitNode;\n var /** @type {?} */ childNodes = [];\n var /** @type {?} */ translatedChildNodes;\n // Extract:\n // - top level nodes with the (implicit) \"i18n\" attribute if not already in a section\n // - ICU messages\n var /** @type {?} */ i18nAttr = _getI18nAttr(el);\n var /** @type {?} */ i18nMeta = i18nAttr ? i18nAttr.value : '';\n var /** @type {?} */ isImplicit = this._implicitTags.some(function (tag) { return el.name === tag; }) && !this._inIcu &&\n !this._isInTranslatableSection;\n var /** @type {?} */ isTopLevelImplicit = !wasInImplicitNode && isImplicit;\n this._inImplicitNode = wasInImplicitNode || isImplicit;\n if (!this._isInTranslatableSection && !this._inIcu) {\n if (i18nAttr || isTopLevelImplicit) {\n this._inI18nNode = true;\n var /** @type {?} */ message = this._addMessage(el.children, i18nMeta);\n translatedChildNodes = this._translateMessage(el, message);\n }\n if (this._mode == _VisitorMode.Extract) {\n var /** @type {?} */ isTranslatable = i18nAttr || isTopLevelImplicit;\n if (isTranslatable)\n this._openTranslatableSection(el);\n visitAll(this, el.children);\n if (isTranslatable)\n this._closeTranslatableSection(el, el.children);\n }\n }\n else {\n if (i18nAttr || isTopLevelImplicit) {\n this._reportError(el, 'Could not mark an element as translatable inside a translatable section');\n }\n if (this._mode == _VisitorMode.Extract) {\n // Descend into child nodes for extraction\n visitAll(this, el.children);\n }\n }\n if (this._mode === _VisitorMode.Merge) {\n var /** @type {?} */ visitNodes = translatedChildNodes || el.children;\n visitNodes.forEach(function (child) {\n var /** @type {?} */ visited = child.visit(_this, context);\n if (visited && !_this._isInTranslatableSection) {\n // Do not add the children from translatable sections (= i18n blocks here)\n // They will be added later in this loop when the block closes (i.e. on `<!-- /i18n -->`)\n childNodes = childNodes.concat(visited);\n }\n });\n }\n this._visitAttributesOf(el);\n this._depth--;\n this._inI18nNode = wasInI18nNode;\n this._inImplicitNode = wasInImplicitNode;\n if (this._mode === _VisitorMode.Merge) {\n var /** @type {?} */ translatedAttrs = this._translateAttributes(el);\n return new Element(el.name, translatedAttrs, childNodes, el.sourceSpan, el.startSourceSpan, el.endSourceSpan);\n }\n };\n /**\n * @param {?} attribute\n * @param {?} context\n * @return {?}\n */\n _Visitor.prototype.visitAttribute = function (attribute, context) {\n throw new Error('unreachable code');\n };\n /**\n * @param {?} mode\n * @param {?} interpolationConfig\n * @return {?}\n */\n _Visitor.prototype._init = function (mode, interpolationConfig) {\n this._mode = mode;\n this._inI18nBlock = false;\n this._inI18nNode = false;\n this._depth = 0;\n this._inIcu = false;\n this._msgCountAtSectionStart = void 0;\n this._errors = [];\n this._messages = [];\n this._inImplicitNode = false;\n this._createI18nMessage = createI18nMessageFactory(interpolationConfig);\n };\n /**\n * @param {?} el\n * @return {?}\n */\n _Visitor.prototype._visitAttributesOf = function (el) {\n var _this = this;\n var /** @type {?} */ explicitAttrNameToValue = {};\n var /** @type {?} */ implicitAttrNames = this._implicitAttrs[el.name] || [];\n el.attrs.filter(function (attr) { return attr.name.startsWith(_I18N_ATTR_PREFIX); })\n .forEach(function (attr) { return explicitAttrNameToValue[attr.name.slice(_I18N_ATTR_PREFIX.length)] =\n attr.value; });\n el.attrs.forEach(function (attr) {\n if (attr.name in explicitAttrNameToValue) {\n _this._addMessage([attr], explicitAttrNameToValue[attr.name]);\n }\n else if (implicitAttrNames.some(function (name) { return attr.name === name; })) {\n _this._addMessage([attr]);\n }\n });\n };\n /**\n * @param {?} ast\n * @param {?=} msgMeta\n * @return {?}\n */\n _Visitor.prototype._addMessage = function (ast, msgMeta) {\n if (ast.length == 0 ||\n ast.length == 1 && ast[0] instanceof Attribute$1 && !((ast[0])).value) {\n // Do not create empty messages\n return;\n }\n var _a = _parseMessageMeta(msgMeta), meaning = _a.meaning, description = _a.description, id = _a.id;\n var /** @type {?} */ message = this._createI18nMessage(ast, meaning, description, id);\n this._messages.push(message);\n return message;\n };\n /**\n * @param {?} el\n * @param {?} message\n * @return {?}\n */\n _Visitor.prototype._translateMessage = function (el, message) {\n if (message && this._mode === _VisitorMode.Merge) {\n var /** @type {?} */ nodes = this._translations.get(message);\n if (nodes) {\n return nodes;\n }\n this._reportError(el, \"Translation unavailable for message id=\\\"\" + this._translations.digest(message) + \"\\\"\");\n }\n return [];\n };\n /**\n * @param {?} el\n * @return {?}\n */\n _Visitor.prototype._translateAttributes = function (el) {\n var _this = this;\n var /** @type {?} */ attributes = el.attrs;\n var /** @type {?} */ i18nParsedMessageMeta = {};\n attributes.forEach(function (attr) {\n if (attr.name.startsWith(_I18N_ATTR_PREFIX)) {\n i18nParsedMessageMeta[attr.name.slice(_I18N_ATTR_PREFIX.length)] =\n _parseMessageMeta(attr.value);\n }\n });\n var /** @type {?} */ translatedAttributes = [];\n attributes.forEach(function (attr) {\n if (attr.name === _I18N_ATTR || attr.name.startsWith(_I18N_ATTR_PREFIX)) {\n // strip i18n specific attributes\n return;\n }\n if (attr.value && attr.value != '' && i18nParsedMessageMeta.hasOwnProperty(attr.name)) {\n var _a = i18nParsedMessageMeta[attr.name], meaning = _a.meaning, description = _a.description, id = _a.id;\n var /** @type {?} */ message = _this._createI18nMessage([attr], meaning, description, id);\n var /** @type {?} */ nodes = _this._translations.get(message);\n if (nodes) {\n if (nodes.length == 0) {\n translatedAttributes.push(new Attribute$1(attr.name, '', attr.sourceSpan));\n }\n else if (nodes[0] instanceof Text) {\n var /** @type {?} */ value = ((nodes[0])).value;\n translatedAttributes.push(new Attribute$1(attr.name, value, attr.sourceSpan));\n }\n else {\n _this._reportError(el, \"Unexpected translation for attribute \\\"\" + attr.name + \"\\\" (id=\\\"\" + (id || _this._translations.digest(message)) + \"\\\")\");\n }\n }\n else {\n _this._reportError(el, \"Translation unavailable for attribute \\\"\" + attr.name + \"\\\" (id=\\\"\" + (id || _this._translations.digest(message)) + \"\\\")\");\n }\n }\n else {\n translatedAttributes.push(attr);\n }\n });\n return translatedAttributes;\n };\n /**\n * Add the node as a child of the block when:\n * - we are in a block,\n * - we are not inside a ICU message (those are handled separately),\n * - the node is a \"direct child\" of the block\n * @param {?} node\n * @return {?}\n */\n _Visitor.prototype._mayBeAddBlockChildren = function (node) {\n if (this._inI18nBlock && !this._inIcu && this._depth == this._blockStartDepth) {\n this._blockChildren.push(node);\n }\n };\n /**\n * Marks the start of a section, see `_closeTranslatableSection`\n * @param {?} node\n * @return {?}\n */\n _Visitor.prototype._openTranslatableSection = function (node) {\n if (this._isInTranslatableSection) {\n this._reportError(node, 'Unexpected section start');\n }\n else {\n this._msgCountAtSectionStart = this._messages.length;\n }\n };\n Object.defineProperty(_Visitor.prototype, \"_isInTranslatableSection\", {\n /**\n * A translatable section could be:\n * - the content of translatable element,\n * - nodes between `<!-- i18n -->` and `<!-- /i18n -->` comments\n * @return {?}\n */\n get: function () {\n return this._msgCountAtSectionStart !== void 0;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Terminates a section.\n *\n * If a section has only one significant children (comments not significant) then we should not\n * keep the message from this children:\n *\n * `<p i18n=\"meaning|description\">{ICU message}</p>` would produce two messages:\n * - one for the <p> content with meaning and description,\n * - another one for the ICU message.\n *\n * In this case the last message is discarded as it contains less information (the AST is\n * otherwise identical).\n *\n * Note that we should still keep messages extracted from attributes inside the section (ie in the\n * ICU message here)\n * @param {?} node\n * @param {?} directChildren\n * @return {?}\n */\n _Visitor.prototype._closeTranslatableSection = function (node, directChildren) {\n if (!this._isInTranslatableSection) {\n this._reportError(node, 'Unexpected section end');\n return;\n }\n var /** @type {?} */ startIndex = this._msgCountAtSectionStart;\n var /** @type {?} */ significantChildren = directChildren.reduce(function (count, node) { return count + (node instanceof Comment ? 0 : 1); }, 0);\n if (significantChildren == 1) {\n for (var /** @type {?} */ i = this._messages.length - 1; i >= startIndex; i--) {\n var /** @type {?} */ ast = this._messages[i].nodes;\n if (!(ast.length == 1 && ast[0] instanceof Text$1)) {\n this._messages.splice(i, 1);\n break;\n }\n }\n }\n this._msgCountAtSectionStart = void 0;\n };\n /**\n * @param {?} node\n * @param {?} msg\n * @return {?}\n */\n _Visitor.prototype._reportError = function (node, msg) {\n this._errors.push(new I18nError(node.sourceSpan, msg));\n };\n return _Visitor;\n}());\n/**\n * @param {?} n\n * @return {?}\n */\nfunction _isOpeningComment(n) {\n return n instanceof Comment && n.value && n.value.startsWith('i18n');\n}\n/**\n * @param {?} n\n * @return {?}\n */\nfunction _isClosingComment(n) {\n return n instanceof Comment && n.value && n.value === '/i18n';\n}\n/**\n * @param {?} p\n * @return {?}\n */\nfunction _getI18nAttr(p) {\n return p.attrs.find(function (attr) { return attr.name === _I18N_ATTR; }) || null;\n}\n/**\n * @param {?} i18n\n * @return {?}\n */\nfunction _parseMessageMeta(i18n) {\n if (!i18n)\n return { meaning: '', description: '', id: '' };\n var /** @type {?} */ idIndex = i18n.indexOf(ID_SEPARATOR);\n var /** @type {?} */ descIndex = i18n.indexOf(MEANING_SEPARATOR);\n var _a = (idIndex > -1) ? [i18n.slice(0, idIndex), i18n.slice(idIndex + 2)] : [i18n, ''], meaningAndDesc = _a[0], id = _a[1];\n var _b = (descIndex > -1) ?\n [meaningAndDesc.slice(0, descIndex), meaningAndDesc.slice(descIndex + 1)] :\n ['', meaningAndDesc], meaning = _b[0], description = _b[1];\n return { meaning: meaning, description: description, id: id };\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 */\nvar XmlTagDefinition = (function () {\n function XmlTagDefinition() {\n this.closedByParent = false;\n this.contentType = TagContentType.PARSABLE_DATA;\n this.isVoid = false;\n this.ignoreFirstLf = false;\n this.canSelfClose = true;\n }\n /**\n * @param {?} currentParent\n * @return {?}\n */\n XmlTagDefinition.prototype.requireExtraParent = function (currentParent) { return false; };\n /**\n * @param {?} name\n * @return {?}\n */\n XmlTagDefinition.prototype.isClosedByChild = function (name) { return false; };\n return XmlTagDefinition;\n}());\nvar _TAG_DEFINITION = new XmlTagDefinition();\n/**\n * @param {?} tagName\n * @return {?}\n */\nfunction getXmlTagDefinition(tagName) {\n return _TAG_DEFINITION;\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 */\nvar XmlParser = (function (_super) {\n __extends(XmlParser, _super);\n function XmlParser() {\n return _super.call(this, getXmlTagDefinition) || this;\n }\n /**\n * @param {?} source\n * @param {?} url\n * @param {?=} parseExpansionForms\n * @return {?}\n */\n XmlParser.prototype.parse = function (source, url, parseExpansionForms) {\n if (parseExpansionForms === void 0) { parseExpansionForms = false; }\n return _super.prototype.parse.call(this, source, url, parseExpansionForms, null);\n };\n return XmlParser;\n}(Parser$1));\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 * @param {?} message\n * @return {?}\n */\nfunction digest(message) {\n return message.id || sha1(serializeNodes(message.nodes).join('') + (\"[\" + message.meaning + \"]\"));\n}\n/**\n * @param {?} message\n * @return {?}\n */\nfunction decimalDigest(message) {\n if (message.id) {\n return message.id;\n }\n var /** @type {?} */ visitor = new _SerializerIgnoreIcuExpVisitor();\n var /** @type {?} */ parts = message.nodes.map(function (a) { return a.visit(visitor, null); });\n return computeMsgId(parts.join(''), message.meaning);\n}\n/**\n * Serialize the i18n ast to something xml-like in order to generate an UID.\n *\n * The visitor is also used in the i18n parser tests\n *\n * \\@internal\n */\nvar _SerializerVisitor = (function () {\n function _SerializerVisitor() {\n }\n /**\n * @param {?} text\n * @param {?} context\n * @return {?}\n */\n _SerializerVisitor.prototype.visitText = function (text, context) { return text.value; };\n /**\n * @param {?} container\n * @param {?} context\n * @return {?}\n */\n _SerializerVisitor.prototype.visitContainer = function (container, context) {\n var _this = this;\n return \"[\" + container.children.map(function (child) { return child.visit(_this); }).join(', ') + \"]\";\n };\n /**\n * @param {?} icu\n * @param {?} context\n * @return {?}\n */\n _SerializerVisitor.prototype.visitIcu = function (icu, context) {\n var _this = this;\n var /** @type {?} */ strCases = Object.keys(icu.cases).map(function (k) { return k + \" {\" + icu.cases[k].visit(_this) + \"}\"; });\n return \"{\" + icu.expression + \", \" + icu.type + \", \" + strCases.join(', ') + \"}\";\n };\n /**\n * @param {?} ph\n * @param {?} context\n * @return {?}\n */\n _SerializerVisitor.prototype.visitTagPlaceholder = function (ph, context) {\n var _this = this;\n return ph.isVoid ?\n \"<ph tag name=\\\"\" + ph.startName + \"\\\"/>\" :\n \"<ph tag name=\\\"\" + ph.startName + \"\\\">\" + ph.children.map(function (child) { return child.visit(_this); }).join(', ') + \"</ph name=\\\"\" + ph.closeName + \"\\\">\";\n };\n /**\n * @param {?} ph\n * @param {?} context\n * @return {?}\n */\n _SerializerVisitor.prototype.visitPlaceholder = function (ph, context) {\n return ph.value ? \"<ph name=\\\"\" + ph.name + \"\\\">\" + ph.value + \"</ph>\" : \"<ph name=\\\"\" + ph.name + \"\\\"/>\";\n };\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n _SerializerVisitor.prototype.visitIcuPlaceholder = function (ph, context) {\n return \"<ph icu name=\\\"\" + ph.name + \"\\\">\" + ph.value.visit(this) + \"</ph>\";\n };\n return _SerializerVisitor;\n}());\nvar serializerVisitor = new _SerializerVisitor();\n/**\n * @param {?} nodes\n * @return {?}\n */\nfunction serializeNodes(nodes) {\n return nodes.map(function (a) { return a.visit(serializerVisitor, null); });\n}\n/**\n * Serialize the i18n ast to something xml-like in order to generate an UID.\n *\n * Ignore the ICU expressions so that message IDs stays identical if only the expression changes.\n *\n * \\@internal\n */\nvar _SerializerIgnoreIcuExpVisitor = (function (_super) {\n __extends(_SerializerIgnoreIcuExpVisitor, _super);\n function _SerializerIgnoreIcuExpVisitor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {?} icu\n * @param {?} context\n * @return {?}\n */\n _SerializerIgnoreIcuExpVisitor.prototype.visitIcu = function (icu, context) {\n var _this = this;\n var /** @type {?} */ strCases = Object.keys(icu.cases).map(function (k) { return k + \" {\" + icu.cases[k].visit(_this) + \"}\"; });\n // Do not take the expression into account\n return \"{\" + icu.type + \", \" + strCases.join(', ') + \"}\";\n };\n return _SerializerIgnoreIcuExpVisitor;\n}(_SerializerVisitor));\n/**\n * Compute the SHA1 of the given string\n *\n * see http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf\n *\n * WARNING: this function has not been designed not tested with security in mind.\n * DO NOT USE IT IN A SECURITY SENSITIVE CONTEXT.\n * @param {?} str\n * @return {?}\n */\nfunction sha1(str) {\n var /** @type {?} */ utf8 = utf8Encode(str);\n var /** @type {?} */ words32 = stringToWords32(utf8, Endian.Big);\n var /** @type {?} */ len = utf8.length * 8;\n var /** @type {?} */ w = new Array(80);\n var _a = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0], a = _a[0], b = _a[1], c = _a[2], d = _a[3], e = _a[4];\n words32[len >> 5] |= 0x80 << (24 - len % 32);\n words32[((len + 64 >> 9) << 4) + 15] = len;\n for (var /** @type {?} */ i = 0; i < words32.length; i += 16) {\n var _b = [a, b, c, d, e], h0 = _b[0], h1 = _b[1], h2 = _b[2], h3 = _b[3], h4 = _b[4];\n for (var /** @type {?} */ j = 0; j < 80; j++) {\n if (j < 16) {\n w[j] = words32[i + j];\n }\n else {\n w[j] = rol32(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1);\n }\n var _c = fk(j, b, c, d), f = _c[0], k = _c[1];\n var /** @type {?} */ temp = [rol32(a, 5), f, e, k, w[j]].reduce(add32);\n _d = [d, c, rol32(b, 30), a, temp], e = _d[0], d = _d[1], c = _d[2], b = _d[3], a = _d[4];\n }\n _e = [add32(a, h0), add32(b, h1), add32(c, h2), add32(d, h3), add32(e, h4)], a = _e[0], b = _e[1], c = _e[2], d = _e[3], e = _e[4];\n }\n return byteStringToHexString(words32ToByteString([a, b, c, d, e]));\n var _d, _e;\n}\n/**\n * @param {?} index\n * @param {?} b\n * @param {?} c\n * @param {?} d\n * @return {?}\n */\nfunction fk(index, b, c, d) {\n if (index < 20) {\n return [(b & c) | (~b & d), 0x5a827999];\n }\n if (index < 40) {\n return [b ^ c ^ d, 0x6ed9eba1];\n }\n if (index < 60) {\n return [(b & c) | (b & d) | (c & d), 0x8f1bbcdc];\n }\n return [b ^ c ^ d, 0xca62c1d6];\n}\n/**\n * Compute the fingerprint of the given string\n *\n * The output is 64 bit number encoded as a decimal string\n *\n * based on:\n * https://github.com/google/closure-compiler/blob/master/src/com/google/javascript/jscomp/GoogleJsMessageIdGenerator.java\n * @param {?} str\n * @return {?}\n */\nfunction fingerprint(str) {\n var /** @type {?} */ utf8 = utf8Encode(str);\n var _a = [hash32(utf8, 0), hash32(utf8, 102072)], hi = _a[0], lo = _a[1];\n if (hi == 0 && (lo == 0 || lo == 1)) {\n hi = hi ^ 0x130f9bef;\n lo = lo ^ -0x6b5f56d8;\n }\n return [hi, lo];\n}\n/**\n * @param {?} msg\n * @param {?} meaning\n * @return {?}\n */\nfunction computeMsgId(msg, meaning) {\n var _a = fingerprint(msg), hi = _a[0], lo = _a[1];\n if (meaning) {\n var _b = fingerprint(meaning), him = _b[0], lom = _b[1];\n _c = add64(rol64([hi, lo], 1), [him, lom]), hi = _c[0], lo = _c[1];\n }\n return byteStringToDecString(words32ToByteString([hi & 0x7fffffff, lo]));\n var _c;\n}\n/**\n * @param {?} str\n * @param {?} c\n * @return {?}\n */\nfunction hash32(str, c) {\n var _a = [0x9e3779b9, 0x9e3779b9], a = _a[0], b = _a[1];\n var /** @type {?} */ i;\n var /** @type {?} */ len = str.length;\n for (i = 0; i + 12 <= len; i += 12) {\n a = add32(a, wordAt(str, i, Endian.Little));\n b = add32(b, wordAt(str, i + 4, Endian.Little));\n c = add32(c, wordAt(str, i + 8, Endian.Little));\n _b = mix([a, b, c]), a = _b[0], b = _b[1], c = _b[2];\n }\n a = add32(a, wordAt(str, i, Endian.Little));\n b = add32(b, wordAt(str, i + 4, Endian.Little));\n // the first byte of c is reserved for the length\n c = add32(c, len);\n c = add32(c, wordAt(str, i + 8, Endian.Little) << 8);\n return mix([a, b, c])[2];\n var _b;\n}\n/**\n * @param {?} __0\n * @return {?}\n */\nfunction mix(_a) {\n var a = _a[0], b = _a[1], c = _a[2];\n a = sub32(a, b);\n a = sub32(a, c);\n a ^= c >>> 13;\n b = sub32(b, c);\n b = sub32(b, a);\n b ^= a << 8;\n c = sub32(c, a);\n c = sub32(c, b);\n c ^= b >>> 13;\n a = sub32(a, b);\n a = sub32(a, c);\n a ^= c >>> 12;\n b = sub32(b, c);\n b = sub32(b, a);\n b ^= a << 16;\n c = sub32(c, a);\n c = sub32(c, b);\n c ^= b >>> 5;\n a = sub32(a, b);\n a = sub32(a, c);\n a ^= c >>> 3;\n b = sub32(b, c);\n b = sub32(b, a);\n b ^= a << 10;\n c = sub32(c, a);\n c = sub32(c, b);\n c ^= b >>> 15;\n return [a, b, c];\n}\nvar Endian = {};\nEndian.Little = 0;\nEndian.Big = 1;\nEndian[Endian.Little] = \"Little\";\nEndian[Endian.Big] = \"Big\";\n/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nfunction add32(a, b) {\n return add32to64(a, b)[1];\n}\n/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nfunction add32to64(a, b) {\n var /** @type {?} */ low = (a & 0xffff) + (b & 0xffff);\n var /** @type {?} */ high = (a >>> 16) + (b >>> 16) + (low >>> 16);\n return [high >>> 16, (high << 16) | (low & 0xffff)];\n}\n/**\n * @param {?} __0\n * @param {?} __1\n * @return {?}\n */\nfunction add64(_a, _b) {\n var ah = _a[0], al = _a[1];\n var bh = _b[0], bl = _b[1];\n var _c = add32to64(al, bl), carry = _c[0], l = _c[1];\n var /** @type {?} */ h = add32(add32(ah, bh), carry);\n return [h, l];\n}\n/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nfunction sub32(a, b) {\n var /** @type {?} */ low = (a & 0xffff) - (b & 0xffff);\n var /** @type {?} */ high = (a >> 16) - (b >> 16) + (low >> 16);\n return (high << 16) | (low & 0xffff);\n}\n/**\n * @param {?} a\n * @param {?} count\n * @return {?}\n */\nfunction rol32(a, count) {\n return (a << count) | (a >>> (32 - count));\n}\n/**\n * @param {?} __0\n * @param {?} count\n * @return {?}\n */\nfunction rol64(_a, count) {\n var hi = _a[0], lo = _a[1];\n var /** @type {?} */ h = (hi << count) | (lo >>> (32 - count));\n var /** @type {?} */ l = (lo << count) | (hi >>> (32 - count));\n return [h, l];\n}\n/**\n * @param {?} str\n * @param {?} endian\n * @return {?}\n */\nfunction stringToWords32(str, endian) {\n var /** @type {?} */ words32 = Array((str.length + 3) >>> 2);\n for (var /** @type {?} */ i = 0; i < words32.length; i++) {\n words32[i] = wordAt(str, i * 4, endian);\n }\n return words32;\n}\n/**\n * @param {?} str\n * @param {?} index\n * @return {?}\n */\nfunction byteAt(str, index) {\n return index >= str.length ? 0 : str.charCodeAt(index) & 0xff;\n}\n/**\n * @param {?} str\n * @param {?} index\n * @param {?} endian\n * @return {?}\n */\nfunction wordAt(str, index, endian) {\n var /** @type {?} */ word = 0;\n if (endian === Endian.Big) {\n for (var /** @type {?} */ i = 0; i < 4; i++) {\n word += byteAt(str, index + i) << (24 - 8 * i);\n }\n }\n else {\n for (var /** @type {?} */ i = 0; i < 4; i++) {\n word += byteAt(str, index + i) << 8 * i;\n }\n }\n return word;\n}\n/**\n * @param {?} words32\n * @return {?}\n */\nfunction words32ToByteString(words32) {\n return words32.reduce(function (str, word) { return str + word32ToByteString(word); }, '');\n}\n/**\n * @param {?} word\n * @return {?}\n */\nfunction word32ToByteString(word) {\n var /** @type {?} */ str = '';\n for (var /** @type {?} */ i = 0; i < 4; i++) {\n str += String.fromCharCode((word >>> 8 * (3 - i)) & 0xff);\n }\n return str;\n}\n/**\n * @param {?} str\n * @return {?}\n */\nfunction byteStringToHexString(str) {\n var /** @type {?} */ hex = '';\n for (var /** @type {?} */ i = 0; i < str.length; i++) {\n var /** @type {?} */ b = byteAt(str, i);\n hex += (b >>> 4).toString(16) + (b & 0x0f).toString(16);\n }\n return hex.toLowerCase();\n}\n/**\n * @param {?} str\n * @return {?}\n */\nfunction byteStringToDecString(str) {\n var /** @type {?} */ decimal = '';\n var /** @type {?} */ toThePower = '1';\n for (var /** @type {?} */ i = str.length - 1; i >= 0; i--) {\n decimal = addBigInt(decimal, numberTimesBigInt(byteAt(str, i), toThePower));\n toThePower = numberTimesBigInt(256, toThePower);\n }\n return decimal.split('').reverse().join('');\n}\n/**\n * @param {?} x\n * @param {?} y\n * @return {?}\n */\nfunction addBigInt(x, y) {\n var /** @type {?} */ sum = '';\n var /** @type {?} */ len = Math.max(x.length, y.length);\n for (var /** @type {?} */ i = 0, /** @type {?} */ carry = 0; i < len || carry; i++) {\n var /** @type {?} */ tmpSum = carry + +(x[i] || 0) + +(y[i] || 0);\n if (tmpSum >= 10) {\n carry = 1;\n sum += tmpSum - 10;\n }\n else {\n carry = 0;\n sum += tmpSum;\n }\n }\n return sum;\n}\n/**\n * @param {?} num\n * @param {?} b\n * @return {?}\n */\nfunction numberTimesBigInt(num, b) {\n var /** @type {?} */ product = '';\n var /** @type {?} */ bToThePower = b;\n for (; num !== 0; num = num >>> 1) {\n if (num & 1)\n product = addBigInt(product, bToThePower);\n bToThePower = addBigInt(bToThePower, bToThePower);\n }\n return product;\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 * @abstract\n */\nvar Serializer = (function () {\n function Serializer() {\n }\n /**\n * @abstract\n * @param {?} messages\n * @param {?} locale\n * @return {?}\n */\n Serializer.prototype.write = function (messages, locale) { };\n /**\n * @abstract\n * @param {?} content\n * @param {?} url\n * @return {?}\n */\n Serializer.prototype.load = function (content, url) { };\n /**\n * @abstract\n * @param {?} message\n * @return {?}\n */\n Serializer.prototype.digest = function (message) { };\n /**\n * @param {?} message\n * @return {?}\n */\n Serializer.prototype.createNameMapper = function (message) { return null; };\n return Serializer;\n}());\n/**\n * A simple mapper that take a function to transform an internal name to a public name\n */\nvar SimplePlaceholderMapper = (function (_super) {\n __extends(SimplePlaceholderMapper, _super);\n /**\n * @param {?} message\n * @param {?} mapName\n */\n function SimplePlaceholderMapper(message, mapName) {\n var _this = _super.call(this) || this;\n _this.mapName = mapName;\n _this.internalToPublic = {};\n _this.publicToNextId = {};\n _this.publicToInternal = {};\n message.nodes.forEach(function (node) { return node.visit(_this); });\n return _this;\n }\n /**\n * @param {?} internalName\n * @return {?}\n */\n SimplePlaceholderMapper.prototype.toPublicName = function (internalName) {\n return this.internalToPublic.hasOwnProperty(internalName) ?\n this.internalToPublic[internalName] :\n null;\n };\n /**\n * @param {?} publicName\n * @return {?}\n */\n SimplePlaceholderMapper.prototype.toInternalName = function (publicName) {\n return this.publicToInternal.hasOwnProperty(publicName) ? this.publicToInternal[publicName] :\n null;\n };\n /**\n * @param {?} text\n * @param {?=} context\n * @return {?}\n */\n SimplePlaceholderMapper.prototype.visitText = function (text, context) { return null; };\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n SimplePlaceholderMapper.prototype.visitTagPlaceholder = function (ph, context) {\n this.visitPlaceholderName(ph.startName);\n _super.prototype.visitTagPlaceholder.call(this, ph, context);\n this.visitPlaceholderName(ph.closeName);\n };\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n SimplePlaceholderMapper.prototype.visitPlaceholder = function (ph, context) { this.visitPlaceholderName(ph.name); };\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n SimplePlaceholderMapper.prototype.visitIcuPlaceholder = function (ph, context) {\n this.visitPlaceholderName(ph.name);\n };\n /**\n * @param {?} internalName\n * @return {?}\n */\n SimplePlaceholderMapper.prototype.visitPlaceholderName = function (internalName) {\n if (!internalName || this.internalToPublic.hasOwnProperty(internalName)) {\n return;\n }\n var /** @type {?} */ publicName = this.mapName(internalName);\n if (this.publicToInternal.hasOwnProperty(publicName)) {\n // Create a new XMB when it has already been used\n var /** @type {?} */ nextId = this.publicToNextId[publicName];\n this.publicToNextId[publicName] = nextId + 1;\n publicName = publicName + \"_\" + nextId;\n }\n else {\n this.publicToNextId[publicName] = 1;\n }\n this.internalToPublic[internalName] = publicName;\n this.publicToInternal[publicName] = internalName;\n };\n return SimplePlaceholderMapper;\n}(RecurseVisitor));\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 */\nvar _Visitor$1 = (function () {\n function _Visitor$1() {\n }\n /**\n * @param {?} tag\n * @return {?}\n */\n _Visitor$1.prototype.visitTag = function (tag) {\n var _this = this;\n var /** @type {?} */ strAttrs = this._serializeAttributes(tag.attrs);\n if (tag.children.length == 0) {\n return \"<\" + tag.name + strAttrs + \"/>\";\n }\n var /** @type {?} */ strChildren = tag.children.map(function (node) { return node.visit(_this); });\n return \"<\" + tag.name + strAttrs + \">\" + strChildren.join('') + \"</\" + tag.name + \">\";\n };\n /**\n * @param {?} text\n * @return {?}\n */\n _Visitor$1.prototype.visitText = function (text) { return text.value; };\n /**\n * @param {?} decl\n * @return {?}\n */\n _Visitor$1.prototype.visitDeclaration = function (decl) {\n return \"<?xml\" + this._serializeAttributes(decl.attrs) + \" ?>\";\n };\n /**\n * @param {?} attrs\n * @return {?}\n */\n _Visitor$1.prototype._serializeAttributes = function (attrs) {\n var /** @type {?} */ strAttrs = Object.keys(attrs).map(function (name) { return name + \"=\\\"\" + attrs[name] + \"\\\"\"; }).join(' ');\n return strAttrs.length > 0 ? ' ' + strAttrs : '';\n };\n /**\n * @param {?} doctype\n * @return {?}\n */\n _Visitor$1.prototype.visitDoctype = function (doctype) {\n return \"<!DOCTYPE \" + doctype.rootTag + \" [\\n\" + doctype.dtd + \"\\n]>\";\n };\n return _Visitor$1;\n}());\nvar _visitor = new _Visitor$1();\n/**\n * @param {?} nodes\n * @return {?}\n */\nfunction serialize(nodes) {\n return nodes.map(function (node) { return node.visit(_visitor); }).join('');\n}\nvar Declaration = (function () {\n /**\n * @param {?} unescapedAttrs\n */\n function Declaration(unescapedAttrs) {\n var _this = this;\n this.attrs = {};\n Object.keys(unescapedAttrs).forEach(function (k) {\n _this.attrs[k] = _escapeXml(unescapedAttrs[k]);\n });\n }\n /**\n * @param {?} visitor\n * @return {?}\n */\n Declaration.prototype.visit = function (visitor) { return visitor.visitDeclaration(this); };\n return Declaration;\n}());\nvar Doctype = (function () {\n /**\n * @param {?} rootTag\n * @param {?} dtd\n */\n function Doctype(rootTag, dtd) {\n this.rootTag = rootTag;\n this.dtd = dtd;\n }\n ;\n /**\n * @param {?} visitor\n * @return {?}\n */\n Doctype.prototype.visit = function (visitor) { return visitor.visitDoctype(this); };\n return Doctype;\n}());\nvar Tag = (function () {\n /**\n * @param {?} name\n * @param {?=} unescapedAttrs\n * @param {?=} children\n */\n function Tag(name, unescapedAttrs, children) {\n if (unescapedAttrs === void 0) { unescapedAttrs = {}; }\n if (children === void 0) { children = []; }\n var _this = this;\n this.name = name;\n this.children = children;\n this.attrs = {};\n Object.keys(unescapedAttrs).forEach(function (k) {\n _this.attrs[k] = _escapeXml(unescapedAttrs[k]);\n });\n }\n /**\n * @param {?} visitor\n * @return {?}\n */\n Tag.prototype.visit = function (visitor) { return visitor.visitTag(this); };\n return Tag;\n}());\nvar Text$2 = (function () {\n /**\n * @param {?} unescapedValue\n */\n function Text$2(unescapedValue) {\n this.value = _escapeXml(unescapedValue);\n }\n ;\n /**\n * @param {?} visitor\n * @return {?}\n */\n Text$2.prototype.visit = function (visitor) { return visitor.visitText(this); };\n return Text$2;\n}());\nvar CR = (function (_super) {\n __extends(CR, _super);\n /**\n * @param {?=} ws\n */\n function CR(ws) {\n if (ws === void 0) { ws = 0; }\n return _super.call(this, \"\\n\" + new Array(ws + 1).join(' ')) || this;\n }\n return CR;\n}(Text$2));\nvar _ESCAPED_CHARS = [\n [/&/g, '&'],\n [/\"/g, '"'],\n [/'/g, '''],\n [/</g, '<'],\n [/>/g, '>'],\n];\n/**\n * @param {?} text\n * @return {?}\n */\nfunction _escapeXml(text) {\n return _ESCAPED_CHARS.reduce(function (text, entry) { return text.replace(entry[0], entry[1]); }, text);\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 */\nvar _VERSION = '1.2';\nvar _XMLNS = 'urn:oasis:names:tc:xliff:document:1.2';\n// TODO(vicb): make this a param (s/_/-/)\nvar _DEFAULT_SOURCE_LANG = 'en';\nvar _PLACEHOLDER_TAG = 'x';\nvar _FILE_TAG = 'file';\nvar _SOURCE_TAG = 'source';\nvar _TARGET_TAG = 'target';\nvar _UNIT_TAG = 'trans-unit';\nvar Xliff = (function (_super) {\n __extends(Xliff, _super);\n function Xliff() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {?} messages\n * @param {?} locale\n * @return {?}\n */\n Xliff.prototype.write = function (messages, locale) {\n var /** @type {?} */ visitor = new _WriteVisitor();\n var /** @type {?} */ transUnits = [];\n messages.forEach(function (message) {\n var /** @type {?} */ transUnit = new Tag(_UNIT_TAG, { id: message.id, datatype: 'html' });\n transUnit.children.push(new CR(8), new Tag(_SOURCE_TAG, {}, visitor.serialize(message.nodes)), new CR(8), new Tag(_TARGET_TAG));\n if (message.description) {\n transUnit.children.push(new CR(8), new Tag('note', { priority: '1', from: 'description' }, [new Text$2(message.description)]));\n }\n if (message.meaning) {\n transUnit.children.push(new CR(8), new Tag('note', { priority: '1', from: 'meaning' }, [new Text$2(message.meaning)]));\n }\n transUnit.children.push(new CR(6));\n transUnits.push(new CR(6), transUnit);\n });\n var /** @type {?} */ body = new Tag('body', {}, transUnits.concat([new CR(4)]));\n var /** @type {?} */ file = new Tag('file', {\n 'source-language': locale || _DEFAULT_SOURCE_LANG,\n datatype: 'plaintext',\n original: 'ng2.template',\n }, [new CR(4), body, new CR(2)]);\n var /** @type {?} */ xliff = new Tag('xliff', { version: _VERSION, xmlns: _XMLNS }, [new CR(2), file, new CR()]);\n return serialize([\n new Declaration({ version: '1.0', encoding: 'UTF-8' }), new CR(), xliff, new CR()\n ]);\n };\n /**\n * @param {?} content\n * @param {?} url\n * @return {?}\n */\n Xliff.prototype.load = function (content, url) {\n // xliff to xml nodes\n var /** @type {?} */ xliffParser = new XliffParser();\n var _a = xliffParser.parse(content, url), locale = _a.locale, mlNodesByMsgId = _a.mlNodesByMsgId, errors = _a.errors;\n // xml nodes to i18n nodes\n var /** @type {?} */ i18nNodesByMsgId = {};\n var /** @type {?} */ converter = new XmlToI18n();\n Object.keys(mlNodesByMsgId).forEach(function (msgId) {\n var _a = converter.convert(mlNodesByMsgId[msgId]), i18nNodes = _a.i18nNodes, e = _a.errors;\n errors.push.apply(errors, e);\n i18nNodesByMsgId[msgId] = i18nNodes;\n });\n if (errors.length) {\n throw new Error(\"xliff parse errors:\\n\" + errors.join('\\n'));\n }\n return { locale: locale, i18nNodesByMsgId: i18nNodesByMsgId };\n };\n /**\n * @param {?} message\n * @return {?}\n */\n Xliff.prototype.digest = function (message) { return digest(message); };\n return Xliff;\n}(Serializer));\nvar _WriteVisitor = (function () {\n function _WriteVisitor() {\n }\n /**\n * @param {?} text\n * @param {?=} context\n * @return {?}\n */\n _WriteVisitor.prototype.visitText = function (text, context) { return [new Text$2(text.value)]; };\n /**\n * @param {?} container\n * @param {?=} context\n * @return {?}\n */\n _WriteVisitor.prototype.visitContainer = function (container, context) {\n var _this = this;\n var /** @type {?} */ nodes = [];\n container.children.forEach(function (node) { return nodes.push.apply(nodes, node.visit(_this)); });\n return nodes;\n };\n /**\n * @param {?} icu\n * @param {?=} context\n * @return {?}\n */\n _WriteVisitor.prototype.visitIcu = function (icu, context) {\n if (this._isInIcu) {\n // nested ICU is not supported\n throw new Error('xliff does not support nested ICU messages');\n }\n this._isInIcu = true;\n // TODO(vicb): support ICU messages\n // https://lists.oasis-open.org/archives/xliff/201201/msg00028.html\n // http://docs.oasis-open.org/xliff/v1.2/xliff-profile-po/xliff-profile-po-1.2-cd02.html\n var /** @type {?} */ nodes = [];\n this._isInIcu = false;\n return nodes;\n };\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n _WriteVisitor.prototype.visitTagPlaceholder = function (ph, context) {\n var /** @type {?} */ ctype = getCtypeForTag(ph.tag);\n var /** @type {?} */ startTagPh = new Tag(_PLACEHOLDER_TAG, { id: ph.startName, ctype: ctype });\n if (ph.isVoid) {\n // void tags have no children nor closing tags\n return [startTagPh];\n }\n var /** @type {?} */ closeTagPh = new Tag(_PLACEHOLDER_TAG, { id: ph.closeName, ctype: ctype });\n return [startTagPh].concat(this.serialize(ph.children), [closeTagPh]);\n };\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n _WriteVisitor.prototype.visitPlaceholder = function (ph, context) {\n return [new Tag(_PLACEHOLDER_TAG, { id: ph.name })];\n };\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n _WriteVisitor.prototype.visitIcuPlaceholder = function (ph, context) {\n return [new Tag(_PLACEHOLDER_TAG, { id: ph.name })];\n };\n /**\n * @param {?} nodes\n * @return {?}\n */\n _WriteVisitor.prototype.serialize = function (nodes) {\n var _this = this;\n this._isInIcu = false;\n return [].concat.apply([], nodes.map(function (node) { return node.visit(_this); }));\n };\n return _WriteVisitor;\n}());\nvar XliffParser = (function () {\n function XliffParser() {\n this._locale = null;\n }\n /**\n * @param {?} xliff\n * @param {?} url\n * @return {?}\n */\n XliffParser.prototype.parse = function (xliff, url) {\n this._unitMlNodes = [];\n this._mlNodesByMsgId = {};\n var /** @type {?} */ xml = new XmlParser().parse(xliff, url, false);\n this._errors = xml.errors;\n visitAll(this, xml.rootNodes, null);\n return {\n mlNodesByMsgId: this._mlNodesByMsgId,\n errors: this._errors,\n locale: this._locale,\n };\n };\n /**\n * @param {?} element\n * @param {?} context\n * @return {?}\n */\n XliffParser.prototype.visitElement = function (element, context) {\n switch (element.name) {\n case _UNIT_TAG:\n this._unitMlNodes = null;\n var /** @type {?} */ idAttr = element.attrs.find(function (attr) { return attr.name === 'id'; });\n if (!idAttr) {\n this._addError(element, \"<\" + _UNIT_TAG + \"> misses the \\\"id\\\" attribute\");\n }\n else {\n var /** @type {?} */ id = idAttr.value;\n if (this._mlNodesByMsgId.hasOwnProperty(id)) {\n this._addError(element, \"Duplicated translations for msg \" + id);\n }\n else {\n visitAll(this, element.children, null);\n if (this._unitMlNodes) {\n this._mlNodesByMsgId[id] = this._unitMlNodes;\n }\n else {\n this._addError(element, \"Message \" + id + \" misses a translation\");\n }\n }\n }\n break;\n case _SOURCE_TAG:\n // ignore source message\n break;\n case _TARGET_TAG:\n this._unitMlNodes = element.children;\n break;\n case _FILE_TAG:\n var /** @type {?} */ localeAttr = element.attrs.find(function (attr) { return attr.name === 'target-language'; });\n if (localeAttr) {\n this._locale = localeAttr.value;\n }\n visitAll(this, element.children, null);\n break;\n default:\n // TODO(vicb): assert file structure, xliff version\n // For now only recurse on unhandled nodes\n visitAll(this, element.children, null);\n }\n };\n /**\n * @param {?} attribute\n * @param {?} context\n * @return {?}\n */\n XliffParser.prototype.visitAttribute = function (attribute, context) { };\n /**\n * @param {?} text\n * @param {?} context\n * @return {?}\n */\n XliffParser.prototype.visitText = function (text, context) { };\n /**\n * @param {?} comment\n * @param {?} context\n * @return {?}\n */\n XliffParser.prototype.visitComment = function (comment, context) { };\n /**\n * @param {?} expansion\n * @param {?} context\n * @return {?}\n */\n XliffParser.prototype.visitExpansion = function (expansion, context) { };\n /**\n * @param {?} expansionCase\n * @param {?} context\n * @return {?}\n */\n XliffParser.prototype.visitExpansionCase = function (expansionCase, context) { };\n /**\n * @param {?} node\n * @param {?} message\n * @return {?}\n */\n XliffParser.prototype._addError = function (node, message) {\n this._errors.push(new I18nError(node.sourceSpan, message));\n };\n return XliffParser;\n}());\nvar XmlToI18n = (function () {\n function XmlToI18n() {\n }\n /**\n * @param {?} nodes\n * @return {?}\n */\n XmlToI18n.prototype.convert = function (nodes) {\n this._errors = [];\n return {\n i18nNodes: visitAll(this, nodes),\n errors: this._errors,\n };\n };\n /**\n * @param {?} text\n * @param {?} context\n * @return {?}\n */\n XmlToI18n.prototype.visitText = function (text, context) { return new Text$1(text.value, text.sourceSpan); };\n /**\n * @param {?} el\n * @param {?} context\n * @return {?}\n */\n XmlToI18n.prototype.visitElement = function (el, context) {\n if (el.name === _PLACEHOLDER_TAG) {\n var /** @type {?} */ nameAttr = el.attrs.find(function (attr) { return attr.name === 'id'; });\n if (nameAttr) {\n return new Placeholder('', nameAttr.value, el.sourceSpan);\n }\n this._addError(el, \"<\" + _PLACEHOLDER_TAG + \"> misses the \\\"id\\\" attribute\");\n }\n else {\n this._addError(el, \"Unexpected tag\");\n }\n };\n /**\n * @param {?} icu\n * @param {?} context\n * @return {?}\n */\n XmlToI18n.prototype.visitExpansion = function (icu, context) { };\n /**\n * @param {?} icuCase\n * @param {?} context\n * @return {?}\n */\n XmlToI18n.prototype.visitExpansionCase = function (icuCase, context) { };\n /**\n * @param {?} comment\n * @param {?} context\n * @return {?}\n */\n XmlToI18n.prototype.visitComment = function (comment, context) { };\n /**\n * @param {?} attribute\n * @param {?} context\n * @return {?}\n */\n XmlToI18n.prototype.visitAttribute = function (attribute, context) { };\n /**\n * @param {?} node\n * @param {?} message\n * @return {?}\n */\n XmlToI18n.prototype._addError = function (node, message) {\n this._errors.push(new I18nError(node.sourceSpan, message));\n };\n return XmlToI18n;\n}());\n/**\n * @param {?} tag\n * @return {?}\n */\nfunction getCtypeForTag(tag) {\n switch (tag.toLowerCase()) {\n case 'br':\n return 'lb';\n case 'img':\n return 'image';\n default:\n return \"x-\" + tag;\n }\n}\n/**\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 */\nvar _VERSION$1 = '2.0';\nvar _XMLNS$1 = 'urn:oasis:names:tc:xliff:document:2.0';\n// TODO(vicb): make this a param (s/_/-/)\nvar _DEFAULT_SOURCE_LANG$1 = 'en';\nvar _PLACEHOLDER_TAG$1 = 'ph';\nvar _PLACEHOLDER_SPANNING_TAG = 'pc';\nvar _XLIFF_TAG = 'xliff';\nvar _SOURCE_TAG$1 = 'source';\nvar _TARGET_TAG$1 = 'target';\nvar _UNIT_TAG$1 = 'unit';\nvar Xliff2 = (function (_super) {\n __extends(Xliff2, _super);\n function Xliff2() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {?} messages\n * @param {?} locale\n * @return {?}\n */\n Xliff2.prototype.write = function (messages, locale) {\n var /** @type {?} */ visitor = new _WriteVisitor$1();\n var /** @type {?} */ units = [];\n messages.forEach(function (message) {\n var /** @type {?} */ unit = new Tag(_UNIT_TAG$1, { id: message.id });\n if (message.description || message.meaning) {\n var /** @type {?} */ notes = new Tag('notes');\n if (message.description) {\n notes.children.push(new CR(8), new Tag('note', { category: 'description' }, [new Text$2(message.description)]));\n }\n if (message.meaning) {\n notes.children.push(new CR(8), new Tag('note', { category: 'meaning' }, [new Text$2(message.meaning)]));\n }\n notes.children.push(new CR(6));\n unit.children.push(new CR(6), notes);\n }\n var /** @type {?} */ segment = new Tag('segment');\n segment.children.push(new CR(8), new Tag(_SOURCE_TAG$1, {}, visitor.serialize(message.nodes)), new CR(6));\n unit.children.push(new CR(6), segment, new CR(4));\n units.push(new CR(4), unit);\n });\n var /** @type {?} */ file = new Tag('file', { 'original': 'ng.template', id: 'ngi18n' }, units.concat([new CR(2)]));\n var /** @type {?} */ xliff = new Tag(_XLIFF_TAG, { version: _VERSION$1, xmlns: _XMLNS$1, srcLang: locale || _DEFAULT_SOURCE_LANG$1 }, [new CR(2), file, new CR()]);\n return serialize([\n new Declaration({ version: '1.0', encoding: 'UTF-8' }), new CR(), xliff, new CR()\n ]);\n };\n /**\n * @param {?} content\n * @param {?} url\n * @return {?}\n */\n Xliff2.prototype.load = function (content, url) {\n // xliff to xml nodes\n var /** @type {?} */ xliff2Parser = new Xliff2Parser();\n var _a = xliff2Parser.parse(content, url), locale = _a.locale, msgIdToHtml = _a.msgIdToHtml, errors = _a.errors;\n // xml nodes to i18n nodes\n var /** @type {?} */ i18nNodesByMsgId = {};\n var /** @type {?} */ converter = new XmlToI18n$1();\n Object.keys(msgIdToHtml).forEach(function (msgId) {\n var _a = converter.convert(msgIdToHtml[msgId], url), i18nNodes = _a.i18nNodes, e = _a.errors;\n errors.push.apply(errors, e);\n i18nNodesByMsgId[msgId] = i18nNodes;\n });\n if (errors.length) {\n throw new Error(\"xliff2 parse errors:\\n\" + errors.join('\\n'));\n }\n return { locale: /** @type {?} */ ((locale)), i18nNodesByMsgId: i18nNodesByMsgId };\n };\n /**\n * @param {?} message\n * @return {?}\n */\n Xliff2.prototype.digest = function (message) { return decimalDigest(message); };\n return Xliff2;\n}(Serializer));\nvar _WriteVisitor$1 = (function () {\n function _WriteVisitor$1() {\n }\n /**\n * @param {?} text\n * @param {?=} context\n * @return {?}\n */\n _WriteVisitor$1.prototype.visitText = function (text, context) { return [new Text$2(text.value)]; };\n /**\n * @param {?} container\n * @param {?=} context\n * @return {?}\n */\n _WriteVisitor$1.prototype.visitContainer = function (container, context) {\n var _this = this;\n var /** @type {?} */ nodes = [];\n container.children.forEach(function (node) { return nodes.push.apply(nodes, node.visit(_this)); });\n return nodes;\n };\n /**\n * @param {?} icu\n * @param {?=} context\n * @return {?}\n */\n _WriteVisitor$1.prototype.visitIcu = function (icu, context) {\n var _this = this;\n var /** @type {?} */ nodes = [new Text$2(\"{\" + icu.expressionPlaceholder + \", \" + icu.type + \", \")];\n Object.keys(icu.cases).forEach(function (c) {\n nodes.push.apply(nodes, [new Text$2(c + \" {\")].concat(icu.cases[c].visit(_this), [new Text$2(\"} \")]));\n });\n nodes.push(new Text$2(\"}\"));\n return nodes;\n };\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n _WriteVisitor$1.prototype.visitTagPlaceholder = function (ph, context) {\n var _this = this;\n var /** @type {?} */ type = getTypeForTag(ph.tag);\n if (ph.isVoid) {\n var /** @type {?} */ tagPh = new Tag(_PLACEHOLDER_TAG$1, {\n id: (this._nextPlaceholderId++).toString(),\n equiv: ph.startName,\n type: type,\n disp: \"<\" + ph.tag + \"/>\",\n });\n return [tagPh];\n }\n var /** @type {?} */ tagPc = new Tag(_PLACEHOLDER_SPANNING_TAG, {\n id: (this._nextPlaceholderId++).toString(),\n equivStart: ph.startName,\n equivEnd: ph.closeName,\n type: type,\n dispStart: \"<\" + ph.tag + \">\",\n dispEnd: \"</\" + ph.tag + \">\",\n });\n var /** @type {?} */ nodes = [].concat.apply([], ph.children.map(function (node) { return node.visit(_this); }));\n if (nodes.length) {\n nodes.forEach(function (node) { return tagPc.children.push(node); });\n }\n else {\n tagPc.children.push(new Text$2(''));\n }\n return [tagPc];\n };\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n _WriteVisitor$1.prototype.visitPlaceholder = function (ph, context) {\n return [new Tag(_PLACEHOLDER_TAG$1, {\n id: (this._nextPlaceholderId++).toString(),\n equiv: ph.name,\n disp: \"{{\" + ph.value + \"}}\",\n })];\n };\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n _WriteVisitor$1.prototype.visitIcuPlaceholder = function (ph, context) {\n return [new Tag(_PLACEHOLDER_TAG$1, { id: (this._nextPlaceholderId++).toString() })];\n };\n /**\n * @param {?} nodes\n * @return {?}\n */\n _WriteVisitor$1.prototype.serialize = function (nodes) {\n var _this = this;\n this._nextPlaceholderId = 0;\n return [].concat.apply([], nodes.map(function (node) { return node.visit(_this); }));\n };\n return _WriteVisitor$1;\n}());\nvar Xliff2Parser = (function () {\n function Xliff2Parser() {\n this._locale = null;\n }\n /**\n * @param {?} xliff\n * @param {?} url\n * @return {?}\n */\n Xliff2Parser.prototype.parse = function (xliff, url) {\n this._unitMlString = null;\n this._msgIdToHtml = {};\n var /** @type {?} */ xml = new XmlParser().parse(xliff, url, false);\n this._errors = xml.errors;\n visitAll(this, xml.rootNodes, null);\n return {\n msgIdToHtml: this._msgIdToHtml,\n errors: this._errors,\n locale: this._locale,\n };\n };\n /**\n * @param {?} element\n * @param {?} context\n * @return {?}\n */\n Xliff2Parser.prototype.visitElement = function (element, context) {\n switch (element.name) {\n case _UNIT_TAG$1:\n this._unitMlString = null;\n var /** @type {?} */ idAttr = element.attrs.find(function (attr) { return attr.name === 'id'; });\n if (!idAttr) {\n this._addError(element, \"<\" + _UNIT_TAG$1 + \"> misses the \\\"id\\\" attribute\");\n }\n else {\n var /** @type {?} */ id = idAttr.value;\n if (this._msgIdToHtml.hasOwnProperty(id)) {\n this._addError(element, \"Duplicated translations for msg \" + id);\n }\n else {\n visitAll(this, element.children, null);\n if (typeof this._unitMlString === 'string') {\n this._msgIdToHtml[id] = this._unitMlString;\n }\n else {\n this._addError(element, \"Message \" + id + \" misses a translation\");\n }\n }\n }\n break;\n case _SOURCE_TAG$1:\n // ignore source message\n break;\n case _TARGET_TAG$1:\n var /** @type {?} */ innerTextStart = ((element.startSourceSpan)).end.offset;\n var /** @type {?} */ innerTextEnd = ((element.endSourceSpan)).start.offset;\n var /** @type {?} */ content = ((element.startSourceSpan)).start.file.content;\n var /** @type {?} */ innerText = content.slice(innerTextStart, innerTextEnd);\n this._unitMlString = innerText;\n break;\n case _XLIFF_TAG:\n var /** @type {?} */ localeAttr = element.attrs.find(function (attr) { return attr.name === 'trgLang'; });\n if (localeAttr) {\n this._locale = localeAttr.value;\n }\n var /** @type {?} */ versionAttr = element.attrs.find(function (attr) { return attr.name === 'version'; });\n if (versionAttr) {\n var /** @type {?} */ version = versionAttr.value;\n if (version !== '2.0') {\n this._addError(element, \"The XLIFF file version \" + version + \" is not compatible with XLIFF 2.0 serializer\");\n }\n else {\n visitAll(this, element.children, null);\n }\n }\n break;\n default:\n visitAll(this, element.children, null);\n }\n };\n /**\n * @param {?} attribute\n * @param {?} context\n * @return {?}\n */\n Xliff2Parser.prototype.visitAttribute = function (attribute, context) { };\n /**\n * @param {?} text\n * @param {?} context\n * @return {?}\n */\n Xliff2Parser.prototype.visitText = function (text, context) { };\n /**\n * @param {?} comment\n * @param {?} context\n * @return {?}\n */\n Xliff2Parser.prototype.visitComment = function (comment, context) { };\n /**\n * @param {?} expansion\n * @param {?} context\n * @return {?}\n */\n Xliff2Parser.prototype.visitExpansion = function (expansion, context) { };\n /**\n * @param {?} expansionCase\n * @param {?} context\n * @return {?}\n */\n Xliff2Parser.prototype.visitExpansionCase = function (expansionCase, context) { };\n /**\n * @param {?} node\n * @param {?} message\n * @return {?}\n */\n Xliff2Parser.prototype._addError = function (node, message) {\n this._errors.push(new I18nError(node.sourceSpan, message));\n };\n return Xliff2Parser;\n}());\nvar XmlToI18n$1 = (function () {\n function XmlToI18n$1() {\n }\n /**\n * @param {?} message\n * @param {?} url\n * @return {?}\n */\n XmlToI18n$1.prototype.convert = function (message, url) {\n var /** @type {?} */ xmlIcu = new XmlParser().parse(message, url, true);\n this._errors = xmlIcu.errors;\n var /** @type {?} */ i18nNodes = this._errors.length > 0 || xmlIcu.rootNodes.length == 0 ?\n [] : [].concat.apply([], visitAll(this, xmlIcu.rootNodes));\n return {\n i18nNodes: i18nNodes,\n errors: this._errors,\n };\n };\n /**\n * @param {?} text\n * @param {?} context\n * @return {?}\n */\n XmlToI18n$1.prototype.visitText = function (text, context) { return new Text$1(text.value, text.sourceSpan); };\n /**\n * @param {?} el\n * @param {?} context\n * @return {?}\n */\n XmlToI18n$1.prototype.visitElement = function (el, context) {\n var _this = this;\n switch (el.name) {\n case _PLACEHOLDER_TAG$1:\n var /** @type {?} */ nameAttr = el.attrs.find(function (attr) { return attr.name === 'equiv'; });\n if (nameAttr) {\n return [new Placeholder('', nameAttr.value, el.sourceSpan)];\n }\n this._addError(el, \"<\" + _PLACEHOLDER_TAG$1 + \"> misses the \\\"equiv\\\" attribute\");\n break;\n case _PLACEHOLDER_SPANNING_TAG:\n var /** @type {?} */ startAttr = el.attrs.find(function (attr) { return attr.name === 'equivStart'; });\n var /** @type {?} */ endAttr = el.attrs.find(function (attr) { return attr.name === 'equivEnd'; });\n if (!startAttr) {\n this._addError(el, \"<\" + _PLACEHOLDER_TAG$1 + \"> misses the \\\"equivStart\\\" attribute\");\n }\n else if (!endAttr) {\n this._addError(el, \"<\" + _PLACEHOLDER_TAG$1 + \"> misses the \\\"equivEnd\\\" attribute\");\n }\n else {\n var /** @type {?} */ startId = startAttr.value;\n var /** @type {?} */ endId = endAttr.value;\n var /** @type {?} */ nodes = [];\n return nodes.concat.apply(nodes, [new Placeholder('', startId, el.sourceSpan)].concat(el.children.map(function (node) { return node.visit(_this, null); }), [new Placeholder('', endId, el.sourceSpan)]));\n }\n break;\n default:\n this._addError(el, \"Unexpected tag\");\n }\n return null;\n };\n /**\n * @param {?} icu\n * @param {?} context\n * @return {?}\n */\n XmlToI18n$1.prototype.visitExpansion = function (icu, context) {\n var /** @type {?} */ caseMap = {};\n visitAll(this, icu.cases).forEach(function (c) {\n caseMap[c.value] = new Container(c.nodes, icu.sourceSpan);\n });\n return new Icu(icu.switchValue, icu.type, caseMap, icu.sourceSpan);\n };\n /**\n * @param {?} icuCase\n * @param {?} context\n * @return {?}\n */\n XmlToI18n$1.prototype.visitExpansionCase = function (icuCase, context) {\n return {\n value: icuCase.value,\n nodes: [].concat.apply([], visitAll(this, icuCase.expression)),\n };\n };\n /**\n * @param {?} comment\n * @param {?} context\n * @return {?}\n */\n XmlToI18n$1.prototype.visitComment = function (comment, context) { };\n /**\n * @param {?} attribute\n * @param {?} context\n * @return {?}\n */\n XmlToI18n$1.prototype.visitAttribute = function (attribute, context) { };\n /**\n * @param {?} node\n * @param {?} message\n * @return {?}\n */\n XmlToI18n$1.prototype._addError = function (node, message) {\n this._errors.push(new I18nError(node.sourceSpan, message));\n };\n return XmlToI18n$1;\n}());\n/**\n * @param {?} tag\n * @return {?}\n */\nfunction getTypeForTag(tag) {\n switch (tag.toLowerCase()) {\n case 'br':\n case 'b':\n case 'i':\n case 'u':\n return 'fmt';\n case 'img':\n return 'image';\n case 'a':\n return 'link';\n default:\n return 'other';\n }\n}\n/**\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 */\nvar _MESSAGES_TAG = 'messagebundle';\nvar _MESSAGE_TAG = 'msg';\nvar _PLACEHOLDER_TAG$2 = 'ph';\nvar _EXEMPLE_TAG = 'ex';\nvar _DOCTYPE = \"<!ELEMENT messagebundle (msg)*>\\n<!ATTLIST messagebundle class CDATA #IMPLIED>\\n\\n<!ELEMENT msg (#PCDATA|ph|source)*>\\n<!ATTLIST msg id CDATA #IMPLIED>\\n<!ATTLIST msg seq CDATA #IMPLIED>\\n<!ATTLIST msg name CDATA #IMPLIED>\\n<!ATTLIST msg desc CDATA #IMPLIED>\\n<!ATTLIST msg meaning CDATA #IMPLIED>\\n<!ATTLIST msg obsolete (obsolete) #IMPLIED>\\n<!ATTLIST msg xml:space (default|preserve) \\\"default\\\">\\n<!ATTLIST msg is_hidden CDATA #IMPLIED>\\n\\n<!ELEMENT source (#PCDATA)>\\n\\n<!ELEMENT ph (#PCDATA|ex)*>\\n<!ATTLIST ph name CDATA #REQUIRED>\\n\\n<!ELEMENT ex (#PCDATA)>\";\nvar Xmb = (function (_super) {\n __extends(Xmb, _super);\n function Xmb() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {?} messages\n * @param {?} locale\n * @return {?}\n */\n Xmb.prototype.write = function (messages, locale) {\n var /** @type {?} */ exampleVisitor = new ExampleVisitor();\n var /** @type {?} */ visitor = new _Visitor$2();\n var /** @type {?} */ rootNode = new Tag(_MESSAGES_TAG);\n messages.forEach(function (message) {\n var /** @type {?} */ attrs = { id: message.id };\n if (message.description) {\n attrs['desc'] = message.description;\n }\n if (message.meaning) {\n attrs['meaning'] = message.meaning;\n }\n rootNode.children.push(new CR(2), new Tag(_MESSAGE_TAG, attrs, visitor.serialize(message.nodes)));\n });\n rootNode.children.push(new CR());\n return serialize([\n new Declaration({ version: '1.0', encoding: 'UTF-8' }),\n new CR(),\n new Doctype(_MESSAGES_TAG, _DOCTYPE),\n new CR(),\n exampleVisitor.addDefaultExamples(rootNode),\n new CR(),\n ]);\n };\n /**\n * @param {?} content\n * @param {?} url\n * @return {?}\n */\n Xmb.prototype.load = function (content, url) {\n throw new Error('Unsupported');\n };\n /**\n * @param {?} message\n * @return {?}\n */\n Xmb.prototype.digest = function (message) { return digest$1(message); };\n /**\n * @param {?} message\n * @return {?}\n */\n Xmb.prototype.createNameMapper = function (message) {\n return new SimplePlaceholderMapper(message, toPublicName);\n };\n return Xmb;\n}(Serializer));\nvar _Visitor$2 = (function () {\n function _Visitor$2() {\n }\n /**\n * @param {?} text\n * @param {?=} context\n * @return {?}\n */\n _Visitor$2.prototype.visitText = function (text, context) { return [new Text$2(text.value)]; };\n /**\n * @param {?} container\n * @param {?} context\n * @return {?}\n */\n _Visitor$2.prototype.visitContainer = function (container, context) {\n var _this = this;\n var /** @type {?} */ nodes = [];\n container.children.forEach(function (node) { return nodes.push.apply(nodes, node.visit(_this)); });\n return nodes;\n };\n /**\n * @param {?} icu\n * @param {?=} context\n * @return {?}\n */\n _Visitor$2.prototype.visitIcu = function (icu, context) {\n var _this = this;\n var /** @type {?} */ nodes = [new Text$2(\"{\" + icu.expressionPlaceholder + \", \" + icu.type + \", \")];\n Object.keys(icu.cases).forEach(function (c) {\n nodes.push.apply(nodes, [new Text$2(c + \" {\")].concat(icu.cases[c].visit(_this), [new Text$2(\"} \")]));\n });\n nodes.push(new Text$2(\"}\"));\n return nodes;\n };\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n _Visitor$2.prototype.visitTagPlaceholder = function (ph, context) {\n var /** @type {?} */ startEx = new Tag(_EXEMPLE_TAG, {}, [new Text$2(\"<\" + ph.tag + \">\")]);\n var /** @type {?} */ startTagPh = new Tag(_PLACEHOLDER_TAG$2, { name: ph.startName }, [startEx]);\n if (ph.isVoid) {\n // void tags have no children nor closing tags\n return [startTagPh];\n }\n var /** @type {?} */ closeEx = new Tag(_EXEMPLE_TAG, {}, [new Text$2(\"</\" + ph.tag + \">\")]);\n var /** @type {?} */ closeTagPh = new Tag(_PLACEHOLDER_TAG$2, { name: ph.closeName }, [closeEx]);\n return [startTagPh].concat(this.serialize(ph.children), [closeTagPh]);\n };\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n _Visitor$2.prototype.visitPlaceholder = function (ph, context) {\n return [new Tag(_PLACEHOLDER_TAG$2, { name: ph.name })];\n };\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n _Visitor$2.prototype.visitIcuPlaceholder = function (ph, context) {\n return [new Tag(_PLACEHOLDER_TAG$2, { name: ph.name })];\n };\n /**\n * @param {?} nodes\n * @return {?}\n */\n _Visitor$2.prototype.serialize = function (nodes) {\n var _this = this;\n return [].concat.apply([], nodes.map(function (node) { return node.visit(_this); }));\n };\n return _Visitor$2;\n}());\n/**\n * @param {?} message\n * @return {?}\n */\nfunction digest$1(message) {\n return decimalDigest(message);\n}\nvar ExampleVisitor = (function () {\n function ExampleVisitor() {\n }\n /**\n * @param {?} node\n * @return {?}\n */\n ExampleVisitor.prototype.addDefaultExamples = function (node) {\n node.visit(this);\n return node;\n };\n /**\n * @param {?} tag\n * @return {?}\n */\n ExampleVisitor.prototype.visitTag = function (tag) {\n var _this = this;\n if (tag.name === _PLACEHOLDER_TAG$2) {\n if (!tag.children || tag.children.length == 0) {\n var /** @type {?} */ exText = new Text$2(tag.attrs['name'] || '...');\n tag.children = [new Tag(_EXEMPLE_TAG, {}, [exText])];\n }\n }\n else if (tag.children) {\n tag.children.forEach(function (node) { return node.visit(_this); });\n }\n };\n /**\n * @param {?} text\n * @return {?}\n */\n ExampleVisitor.prototype.visitText = function (text) { };\n /**\n * @param {?} decl\n * @return {?}\n */\n ExampleVisitor.prototype.visitDeclaration = function (decl) { };\n /**\n * @param {?} doctype\n * @return {?}\n */\n ExampleVisitor.prototype.visitDoctype = function (doctype) { };\n return ExampleVisitor;\n}());\n/**\n * @param {?} internalName\n * @return {?}\n */\nfunction toPublicName(internalName) {\n return internalName.toUpperCase().replace(/[^A-Z0-9_]/g, '_');\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 */\nvar _TRANSLATIONS_TAG = 'translationbundle';\nvar _TRANSLATION_TAG = 'translation';\nvar _PLACEHOLDER_TAG$3 = 'ph';\nvar Xtb = (function (_super) {\n __extends(Xtb, _super);\n function Xtb() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {?} messages\n * @param {?} locale\n * @return {?}\n */\n Xtb.prototype.write = function (messages, locale) { throw new Error('Unsupported'); };\n /**\n * @param {?} content\n * @param {?} url\n * @return {?}\n */\n Xtb.prototype.load = function (content, url) {\n // xtb to xml nodes\n var /** @type {?} */ xtbParser = new XtbParser();\n var _a = xtbParser.parse(content, url), locale = _a.locale, msgIdToHtml = _a.msgIdToHtml, errors = _a.errors;\n // xml nodes to i18n nodes\n var /** @type {?} */ i18nNodesByMsgId = {};\n var /** @type {?} */ converter = new XmlToI18n$2();\n // Because we should be able to load xtb files that rely on features not supported by angular,\n // we need to delay the conversion of html to i18n nodes so that non angular messages are not\n // converted\n Object.keys(msgIdToHtml).forEach(function (msgId) {\n var /** @type {?} */ valueFn = function () {\n var _a = converter.convert(msgIdToHtml[msgId], url), i18nNodes = _a.i18nNodes, errors = _a.errors;\n if (errors.length) {\n throw new Error(\"xtb parse errors:\\n\" + errors.join('\\n'));\n }\n return i18nNodes;\n };\n createLazyProperty(i18nNodesByMsgId, msgId, valueFn);\n });\n if (errors.length) {\n throw new Error(\"xtb parse errors:\\n\" + errors.join('\\n'));\n }\n return { locale: locale, i18nNodesByMsgId: i18nNodesByMsgId };\n };\n /**\n * @param {?} message\n * @return {?}\n */\n Xtb.prototype.digest = function (message) { return digest$1(message); };\n /**\n * @param {?} message\n * @return {?}\n */\n Xtb.prototype.createNameMapper = function (message) {\n return new SimplePlaceholderMapper(message, toPublicName);\n };\n return Xtb;\n}(Serializer));\n/**\n * @param {?} messages\n * @param {?} id\n * @param {?} valueFn\n * @return {?}\n */\nfunction createLazyProperty(messages, id, valueFn) {\n Object.defineProperty(messages, id, {\n configurable: true,\n enumerable: true,\n get: function () {\n var /** @type {?} */ value = valueFn();\n Object.defineProperty(messages, id, { enumerable: true, value: value });\n return value;\n },\n set: function (_) { throw new Error('Could not overwrite an XTB translation'); },\n });\n}\nvar XtbParser = (function () {\n function XtbParser() {\n this._locale = null;\n }\n /**\n * @param {?} xtb\n * @param {?} url\n * @return {?}\n */\n XtbParser.prototype.parse = function (xtb, url) {\n this._bundleDepth = 0;\n this._msgIdToHtml = {};\n // We can not parse the ICU messages at this point as some messages might not originate\n // from Angular that could not be lex'd.\n var /** @type {?} */ xml = new XmlParser().parse(xtb, url, false);\n this._errors = xml.errors;\n visitAll(this, xml.rootNodes);\n return {\n msgIdToHtml: this._msgIdToHtml,\n errors: this._errors,\n locale: this._locale,\n };\n };\n /**\n * @param {?} element\n * @param {?} context\n * @return {?}\n */\n XtbParser.prototype.visitElement = function (element, context) {\n switch (element.name) {\n case _TRANSLATIONS_TAG:\n this._bundleDepth++;\n if (this._bundleDepth > 1) {\n this._addError(element, \"<\" + _TRANSLATIONS_TAG + \"> elements can not be nested\");\n }\n var /** @type {?} */ langAttr = element.attrs.find(function (attr) { return attr.name === 'lang'; });\n if (langAttr) {\n this._locale = langAttr.value;\n }\n visitAll(this, element.children, null);\n this._bundleDepth--;\n break;\n case _TRANSLATION_TAG:\n var /** @type {?} */ idAttr = element.attrs.find(function (attr) { return attr.name === 'id'; });\n if (!idAttr) {\n this._addError(element, \"<\" + _TRANSLATION_TAG + \"> misses the \\\"id\\\" attribute\");\n }\n else {\n var /** @type {?} */ id = idAttr.value;\n if (this._msgIdToHtml.hasOwnProperty(id)) {\n this._addError(element, \"Duplicated translations for msg \" + id);\n }\n else {\n var /** @type {?} */ innerTextStart = element.startSourceSpan.end.offset;\n var /** @type {?} */ innerTextEnd = element.endSourceSpan.start.offset;\n var /** @type {?} */ content = element.startSourceSpan.start.file.content;\n var /** @type {?} */ innerText = content.slice(innerTextStart, innerTextEnd);\n this._msgIdToHtml[id] = innerText;\n }\n }\n break;\n default:\n this._addError(element, 'Unexpected tag');\n }\n };\n /**\n * @param {?} attribute\n * @param {?} context\n * @return {?}\n */\n XtbParser.prototype.visitAttribute = function (attribute, context) { };\n /**\n * @param {?} text\n * @param {?} context\n * @return {?}\n */\n XtbParser.prototype.visitText = function (text, context) { };\n /**\n * @param {?} comment\n * @param {?} context\n * @return {?}\n */\n XtbParser.prototype.visitComment = function (comment, context) { };\n /**\n * @param {?} expansion\n * @param {?} context\n * @return {?}\n */\n XtbParser.prototype.visitExpansion = function (expansion, context) { };\n /**\n * @param {?} expansionCase\n * @param {?} context\n * @return {?}\n */\n XtbParser.prototype.visitExpansionCase = function (expansionCase, context) { };\n /**\n * @param {?} node\n * @param {?} message\n * @return {?}\n */\n XtbParser.prototype._addError = function (node, message) {\n this._errors.push(new I18nError(node.sourceSpan, message));\n };\n return XtbParser;\n}());\nvar XmlToI18n$2 = (function () {\n function XmlToI18n$2() {\n }\n /**\n * @param {?} message\n * @param {?} url\n * @return {?}\n */\n XmlToI18n$2.prototype.convert = function (message, url) {\n var /** @type {?} */ xmlIcu = new XmlParser().parse(message, url, true);\n this._errors = xmlIcu.errors;\n var /** @type {?} */ i18nNodes = this._errors.length > 0 || xmlIcu.rootNodes.length == 0 ?\n [] :\n visitAll(this, xmlIcu.rootNodes);\n return {\n i18nNodes: i18nNodes,\n errors: this._errors,\n };\n };\n /**\n * @param {?} text\n * @param {?} context\n * @return {?}\n */\n XmlToI18n$2.prototype.visitText = function (text, context) { return new Text$1(text.value, text.sourceSpan); };\n /**\n * @param {?} icu\n * @param {?} context\n * @return {?}\n */\n XmlToI18n$2.prototype.visitExpansion = function (icu, context) {\n var /** @type {?} */ caseMap = {};\n visitAll(this, icu.cases).forEach(function (c) {\n caseMap[c.value] = new Container(c.nodes, icu.sourceSpan);\n });\n return new Icu(icu.switchValue, icu.type, caseMap, icu.sourceSpan);\n };\n /**\n * @param {?} icuCase\n * @param {?} context\n * @return {?}\n */\n XmlToI18n$2.prototype.visitExpansionCase = function (icuCase, context) {\n return {\n value: icuCase.value,\n nodes: visitAll(this, icuCase.expression),\n };\n };\n /**\n * @param {?} el\n * @param {?} context\n * @return {?}\n */\n XmlToI18n$2.prototype.visitElement = function (el, context) {\n if (el.name === _PLACEHOLDER_TAG$3) {\n var /** @type {?} */ nameAttr = el.attrs.find(function (attr) { return attr.name === 'name'; });\n if (nameAttr) {\n return new Placeholder('', nameAttr.value, el.sourceSpan);\n }\n this._addError(el, \"<\" + _PLACEHOLDER_TAG$3 + \"> misses the \\\"name\\\" attribute\");\n }\n else {\n this._addError(el, \"Unexpected tag\");\n }\n };\n /**\n * @param {?} comment\n * @param {?} context\n * @return {?}\n */\n XmlToI18n$2.prototype.visitComment = function (comment, context) { };\n /**\n * @param {?} attribute\n * @param {?} context\n * @return {?}\n */\n XmlToI18n$2.prototype.visitAttribute = function (attribute, context) { };\n /**\n * @param {?} node\n * @param {?} message\n * @return {?}\n */\n XmlToI18n$2.prototype._addError = function (node, message) {\n this._errors.push(new I18nError(node.sourceSpan, message));\n };\n return XmlToI18n$2;\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 */\nvar HtmlParser = (function (_super) {\n __extends(HtmlParser, _super);\n function HtmlParser() {\n return _super.call(this, getHtmlTagDefinition) || this;\n }\n /**\n * @param {?} source\n * @param {?} url\n * @param {?=} parseExpansionForms\n * @param {?=} interpolationConfig\n * @return {?}\n */\n HtmlParser.prototype.parse = function (source, url, parseExpansionForms, interpolationConfig) {\n if (parseExpansionForms === void 0) { parseExpansionForms = false; }\n if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; }\n return _super.prototype.parse.call(this, source, url, parseExpansionForms, interpolationConfig);\n };\n return HtmlParser;\n}(Parser$1));\nHtmlParser.decorators = [\n { type: CompilerInjectable },\n];\n/**\n * @nocollapse\n */\nHtmlParser.ctorParameters = function () { return []; };\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 * A container for translated messages\n */\nvar TranslationBundle = (function () {\n /**\n * @param {?=} _i18nNodesByMsgId\n * @param {?=} locale\n * @param {?=} digest\n * @param {?=} mapperFactory\n * @param {?=} missingTranslationStrategy\n * @param {?=} console\n */\n function TranslationBundle(_i18nNodesByMsgId, locale, digest, mapperFactory, missingTranslationStrategy, console) {\n if (_i18nNodesByMsgId === void 0) { _i18nNodesByMsgId = {}; }\n if (missingTranslationStrategy === void 0) { missingTranslationStrategy = MissingTranslationStrategy.Warning; }\n this._i18nNodesByMsgId = _i18nNodesByMsgId;\n this.digest = digest;\n this.mapperFactory = mapperFactory;\n this._i18nToHtml = new I18nToHtmlVisitor(_i18nNodesByMsgId, locale, digest, mapperFactory, missingTranslationStrategy, console);\n }\n /**\n * @param {?} content\n * @param {?} url\n * @param {?} serializer\n * @param {?} missingTranslationStrategy\n * @param {?=} console\n * @return {?}\n */\n TranslationBundle.load = function (content, url, serializer, missingTranslationStrategy, console) {\n var _a = serializer.load(content, url), locale = _a.locale, i18nNodesByMsgId = _a.i18nNodesByMsgId;\n var /** @type {?} */ digestFn = function (m) { return serializer.digest(m); };\n var /** @type {?} */ mapperFactory = function (m) { return serializer.createNameMapper(m); };\n return new TranslationBundle(i18nNodesByMsgId, locale, digestFn, mapperFactory, missingTranslationStrategy, console);\n };\n /**\n * @param {?} srcMsg\n * @return {?}\n */\n TranslationBundle.prototype.get = function (srcMsg) {\n var /** @type {?} */ html = this._i18nToHtml.convert(srcMsg);\n if (html.errors.length) {\n throw new Error(html.errors.join('\\n'));\n }\n return html.nodes;\n };\n /**\n * @param {?} srcMsg\n * @return {?}\n */\n TranslationBundle.prototype.has = function (srcMsg) { return this.digest(srcMsg) in this._i18nNodesByMsgId; };\n return TranslationBundle;\n}());\nvar I18nToHtmlVisitor = (function () {\n /**\n * @param {?=} _i18nNodesByMsgId\n * @param {?=} _locale\n * @param {?=} _digest\n * @param {?=} _mapperFactory\n * @param {?=} _missingTranslationStrategy\n * @param {?=} _console\n */\n function I18nToHtmlVisitor(_i18nNodesByMsgId, _locale, _digest, _mapperFactory, _missingTranslationStrategy, _console) {\n if (_i18nNodesByMsgId === void 0) { _i18nNodesByMsgId = {}; }\n this._i18nNodesByMsgId = _i18nNodesByMsgId;\n this._locale = _locale;\n this._digest = _digest;\n this._mapperFactory = _mapperFactory;\n this._missingTranslationStrategy = _missingTranslationStrategy;\n this._console = _console;\n this._contextStack = [];\n this._errors = [];\n }\n /**\n * @param {?} srcMsg\n * @return {?}\n */\n I18nToHtmlVisitor.prototype.convert = function (srcMsg) {\n this._contextStack.length = 0;\n this._errors.length = 0;\n // i18n to text\n var /** @type {?} */ text = this._convertToText(srcMsg);\n // text to html\n var /** @type {?} */ url = srcMsg.nodes[0].sourceSpan.start.file.url;\n var /** @type {?} */ html = new HtmlParser().parse(text, url, true);\n return {\n nodes: html.rootNodes,\n errors: this._errors.concat(html.errors),\n };\n };\n /**\n * @param {?} text\n * @param {?=} context\n * @return {?}\n */\n I18nToHtmlVisitor.prototype.visitText = function (text, context) { return text.value; };\n /**\n * @param {?} container\n * @param {?=} context\n * @return {?}\n */\n I18nToHtmlVisitor.prototype.visitContainer = function (container, context) {\n var _this = this;\n return container.children.map(function (n) { return n.visit(_this); }).join('');\n };\n /**\n * @param {?} icu\n * @param {?=} context\n * @return {?}\n */\n I18nToHtmlVisitor.prototype.visitIcu = function (icu, context) {\n var _this = this;\n var /** @type {?} */ cases = Object.keys(icu.cases).map(function (k) { return k + \" {\" + icu.cases[k].visit(_this) + \"}\"; });\n // TODO(vicb): Once all format switch to using expression placeholders\n // we should throw when the placeholder is not in the source message\n var /** @type {?} */ exp = this._srcMsg.placeholders.hasOwnProperty(icu.expression) ?\n this._srcMsg.placeholders[icu.expression] :\n icu.expression;\n return \"{\" + exp + \", \" + icu.type + \", \" + cases.join(' ') + \"}\";\n };\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n I18nToHtmlVisitor.prototype.visitPlaceholder = function (ph, context) {\n var /** @type {?} */ phName = this._mapper(ph.name);\n if (this._srcMsg.placeholders.hasOwnProperty(phName)) {\n return this._srcMsg.placeholders[phName];\n }\n if (this._srcMsg.placeholderToMessage.hasOwnProperty(phName)) {\n return this._convertToText(this._srcMsg.placeholderToMessage[phName]);\n }\n this._addError(ph, \"Unknown placeholder \\\"\" + ph.name + \"\\\"\");\n return '';\n };\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n I18nToHtmlVisitor.prototype.visitTagPlaceholder = function (ph, context) {\n var _this = this;\n var /** @type {?} */ tag = \"\" + ph.tag;\n var /** @type {?} */ attrs = Object.keys(ph.attrs).map(function (name) { return name + \"=\\\"\" + ph.attrs[name] + \"\\\"\"; }).join(' ');\n if (ph.isVoid) {\n return \"<\" + tag + \" \" + attrs + \"/>\";\n }\n var /** @type {?} */ children = ph.children.map(function (c) { return c.visit(_this); }).join('');\n return \"<\" + tag + \" \" + attrs + \">\" + children + \"</\" + tag + \">\";\n };\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n I18nToHtmlVisitor.prototype.visitIcuPlaceholder = function (ph, context) {\n // An ICU placeholder references the source message to be serialized\n return this._convertToText(this._srcMsg.placeholderToMessage[ph.name]);\n };\n /**\n * Convert a source message to a translated text string:\n * - text nodes are replaced with their translation,\n * - placeholders are replaced with their content,\n * - ICU nodes are converted to ICU expressions.\n * @param {?} srcMsg\n * @return {?}\n */\n I18nToHtmlVisitor.prototype._convertToText = function (srcMsg) {\n var _this = this;\n var /** @type {?} */ id = this._digest(srcMsg);\n var /** @type {?} */ mapper = this._mapperFactory ? this._mapperFactory(srcMsg) : null;\n var /** @type {?} */ nodes;\n this._contextStack.push({ msg: this._srcMsg, mapper: this._mapper });\n this._srcMsg = srcMsg;\n if (this._i18nNodesByMsgId.hasOwnProperty(id)) {\n // When there is a translation use its nodes as the source\n // And create a mapper to convert serialized placeholder names to internal names\n nodes = this._i18nNodesByMsgId[id];\n this._mapper = function (name) { return mapper ? mapper.toInternalName(name) : name; };\n }\n else {\n // When no translation has been found\n // - report an error / a warning / nothing,\n // - use the nodes from the original message\n // - placeholders are already internal and need no mapper\n if (this._missingTranslationStrategy === MissingTranslationStrategy.Error) {\n var /** @type {?} */ ctx = this._locale ? \" for locale \\\"\" + this._locale + \"\\\"\" : '';\n this._addError(srcMsg.nodes[0], \"Missing translation for message \\\"\" + id + \"\\\"\" + ctx);\n }\n else if (this._console &&\n this._missingTranslationStrategy === MissingTranslationStrategy.Warning) {\n var /** @type {?} */ ctx = this._locale ? \" for locale \\\"\" + this._locale + \"\\\"\" : '';\n this._console.warn(\"Missing translation for message \\\"\" + id + \"\\\"\" + ctx);\n }\n nodes = srcMsg.nodes;\n this._mapper = function (name) { return name; };\n }\n var /** @type {?} */ text = nodes.map(function (node) { return node.visit(_this); }).join('');\n var /** @type {?} */ context = this._contextStack.pop();\n this._srcMsg = context.msg;\n this._mapper = context.mapper;\n return text;\n };\n /**\n * @param {?} el\n * @param {?} msg\n * @return {?}\n */\n I18nToHtmlVisitor.prototype._addError = function (el, msg) {\n this._errors.push(new I18nError(el.sourceSpan, msg));\n };\n return I18nToHtmlVisitor;\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 */\nvar I18NHtmlParser = (function () {\n /**\n * @param {?} _htmlParser\n * @param {?=} translations\n * @param {?=} translationsFormat\n * @param {?=} missingTranslation\n * @param {?=} console\n */\n function I18NHtmlParser(_htmlParser, translations, translationsFormat, missingTranslation, console) {\n if (missingTranslation === void 0) { missingTranslation = MissingTranslationStrategy.Warning; }\n this._htmlParser = _htmlParser;\n if (translations) {\n var serializer = createSerializer(translationsFormat);\n this._translationBundle =\n TranslationBundle.load(translations, 'i18n', serializer, missingTranslation, console);\n }\n }\n /**\n * @param {?} source\n * @param {?} url\n * @param {?=} parseExpansionForms\n * @param {?=} interpolationConfig\n * @return {?}\n */\n I18NHtmlParser.prototype.parse = function (source, url, parseExpansionForms, interpolationConfig) {\n if (parseExpansionForms === void 0) { parseExpansionForms = false; }\n if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; }\n var /** @type {?} */ parseResult = this._htmlParser.parse(source, url, parseExpansionForms, interpolationConfig);\n if (!this._translationBundle) {\n // Do not enable i18n when no translation bundle is provided\n return parseResult;\n }\n if (parseResult.errors.length) {\n return new ParseTreeResult(parseResult.rootNodes, parseResult.errors);\n }\n return mergeTranslations(parseResult.rootNodes, this._translationBundle, interpolationConfig, [], {});\n };\n return I18NHtmlParser;\n}());\n/**\n * @param {?=} format\n * @return {?}\n */\nfunction createSerializer(format) {\n format = (format || 'xlf').toLowerCase();\n switch (format) {\n case 'xmb':\n return new Xmb();\n case 'xtb':\n return new Xtb();\n case 'xliff2':\n case 'xlf2':\n return new Xliff2();\n case 'xliff':\n case 'xlf':\n default:\n return new Xliff();\n }\n}\n/**\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 */\nvar CORE = assetUrl('core');\nvar Identifiers = (function () {\n function Identifiers() {\n }\n return Identifiers;\n}());\nIdentifiers.ANALYZE_FOR_ENTRY_COMPONENTS = {\n name: 'ANALYZE_FOR_ENTRY_COMPONENTS',\n moduleUrl: CORE,\n runtime: ANALYZE_FOR_ENTRY_COMPONENTS\n};\nIdentifiers.ElementRef = { name: 'ElementRef', moduleUrl: CORE, runtime: ElementRef };\nIdentifiers.NgModuleRef = { name: 'NgModuleRef', moduleUrl: CORE, runtime: NgModuleRef };\nIdentifiers.ViewContainerRef = { name: 'ViewContainerRef', moduleUrl: CORE, runtime: ViewContainerRef };\nIdentifiers.ChangeDetectorRef = { name: 'ChangeDetectorRef', moduleUrl: CORE, runtime: ChangeDetectorRef };\nIdentifiers.QueryList = { name: 'QueryList', moduleUrl: CORE, runtime: QueryList };\nIdentifiers.TemplateRef = { name: 'TemplateRef', moduleUrl: CORE, runtime: TemplateRef };\nIdentifiers.CodegenComponentFactoryResolver = {\n name: 'ɵCodegenComponentFactoryResolver',\n moduleUrl: CORE,\n runtime: ɵCodegenComponentFactoryResolver\n};\nIdentifiers.ComponentFactoryResolver = {\n name: 'ComponentFactoryResolver',\n moduleUrl: CORE,\n runtime: ComponentFactoryResolver\n};\nIdentifiers.ComponentFactory = { name: 'ComponentFactory', moduleUrl: CORE, runtime: ComponentFactory };\nIdentifiers.ComponentRef = { name: 'ComponentRef', moduleUrl: CORE, runtime: ComponentRef };\nIdentifiers.NgModuleFactory = { name: 'NgModuleFactory', moduleUrl: CORE, runtime: NgModuleFactory };\nIdentifiers.NgModuleInjector = {\n name: 'ɵNgModuleInjector',\n moduleUrl: CORE,\n runtime: ɵNgModuleInjector,\n};\nIdentifiers.RegisterModuleFactoryFn = {\n name: 'ɵregisterModuleFactory',\n moduleUrl: CORE,\n runtime: ɵregisterModuleFactory,\n};\nIdentifiers.Injector = { name: 'Injector', moduleUrl: CORE, runtime: Injector };\nIdentifiers.ViewEncapsulation = { name: 'ViewEncapsulation', moduleUrl: CORE, runtime: ViewEncapsulation };\nIdentifiers.ChangeDetectionStrategy = {\n name: 'ChangeDetectionStrategy',\n moduleUrl: CORE,\n runtime: ChangeDetectionStrategy\n};\nIdentifiers.SecurityContext = {\n name: 'SecurityContext',\n moduleUrl: CORE,\n runtime: SecurityContext,\n};\nIdentifiers.LOCALE_ID = { name: 'LOCALE_ID', moduleUrl: CORE, runtime: LOCALE_ID };\nIdentifiers.TRANSLATIONS_FORMAT = { name: 'TRANSLATIONS_FORMAT', moduleUrl: CORE, runtime: TRANSLATIONS_FORMAT };\nIdentifiers.inlineInterpolate = { name: 'ɵinlineInterpolate', moduleUrl: CORE, runtime: ɵinlineInterpolate };\nIdentifiers.interpolate = { name: 'ɵinterpolate', moduleUrl: CORE, runtime: ɵinterpolate };\nIdentifiers.EMPTY_ARRAY = { name: 'ɵEMPTY_ARRAY', moduleUrl: CORE, runtime: ɵEMPTY_ARRAY };\nIdentifiers.EMPTY_MAP = { name: 'ɵEMPTY_MAP', moduleUrl: CORE, runtime: ɵEMPTY_MAP };\nIdentifiers.Renderer = { name: 'Renderer', moduleUrl: CORE, runtime: Renderer };\nIdentifiers.viewDef = { name: 'ɵvid', moduleUrl: CORE, runtime: ɵvid };\nIdentifiers.elementDef = { name: 'ɵeld', moduleUrl: CORE, runtime: ɵeld };\nIdentifiers.anchorDef = { name: 'ɵand', moduleUrl: CORE, runtime: ɵand };\nIdentifiers.textDef = { name: 'ɵted', moduleUrl: CORE, runtime: ɵted };\nIdentifiers.directiveDef = { name: 'ɵdid', moduleUrl: CORE, runtime: ɵdid };\nIdentifiers.providerDef = { name: 'ɵprd', moduleUrl: CORE, runtime: ɵprd };\nIdentifiers.queryDef = { name: 'ɵqud', moduleUrl: CORE, runtime: ɵqud };\nIdentifiers.pureArrayDef = { name: 'ɵpad', moduleUrl: CORE, runtime: ɵpad };\nIdentifiers.pureObjectDef = { name: 'ɵpod', moduleUrl: CORE, runtime: ɵpod };\nIdentifiers.purePipeDef = { name: 'ɵppd', moduleUrl: CORE, runtime: ɵppd };\nIdentifiers.pipeDef = { name: 'ɵpid', moduleUrl: CORE, runtime: ɵpid };\nIdentifiers.nodeValue = { name: 'ɵnov', moduleUrl: CORE, runtime: ɵnov };\nIdentifiers.ngContentDef = { name: 'ɵncd', moduleUrl: CORE, runtime: ɵncd };\nIdentifiers.unwrapValue = { name: 'ɵunv', moduleUrl: CORE, runtime: ɵunv };\nIdentifiers.createRendererType2 = { name: 'ɵcrt', moduleUrl: CORE, runtime: ɵcrt };\nIdentifiers.RendererType2 = {\n name: 'RendererType2',\n moduleUrl: CORE,\n // type only\n runtime: null\n};\nIdentifiers.ViewDefinition = {\n name: 'ɵViewDefinition',\n moduleUrl: CORE,\n // type only\n runtime: null\n};\nIdentifiers.createComponentFactory = { name: 'ɵccf', moduleUrl: CORE, runtime: ɵccf };\n/**\n * @param {?} pkg\n * @param {?=} path\n * @param {?=} type\n * @return {?}\n */\nfunction assetUrl(pkg, path, type) {\n if (path === void 0) { path = null; }\n if (type === void 0) { type = 'src'; }\n if (path == null) {\n return \"@angular/\" + pkg;\n }\n else {\n return \"@angular/\" + pkg + \"/\" + type + \"/\" + path;\n }\n}\n/**\n * @param {?} identifier\n * @return {?}\n */\nfunction resolveIdentifier(identifier) {\n var /** @type {?} */ name = identifier.name;\n return ɵreflector.resolveIdentifier(name, identifier.moduleUrl, null, identifier.runtime);\n}\n/**\n * @param {?} identifier\n * @return {?}\n */\nfunction createIdentifier(identifier) {\n return { reference: resolveIdentifier(identifier) };\n}\n/**\n * @param {?} identifier\n * @return {?}\n */\nfunction identifierToken(identifier) {\n return { identifier: identifier };\n}\n/**\n * @param {?} identifier\n * @return {?}\n */\nfunction createIdentifierToken(identifier) {\n return identifierToken(createIdentifier(identifier));\n}\n/**\n * @param {?} enumType\n * @param {?} name\n * @return {?}\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// http://cldr.unicode.org/index/cldr-spec/plural-rules\nvar PLURAL_CASES = ['zero', 'one', 'two', 'few', 'many', 'other'];\n/**\n * Expands special forms into elements.\n *\n * For example,\n *\n * ```\n * { messages.length, plural,\n * =0 {zero}\n * =1 {one}\n * other {more than one}\n * }\n * ```\n *\n * will be expanded into\n *\n * ```\n * <ng-container [ngPlural]=\"messages.length\">\n * <ng-template ngPluralCase=\"=0\">zero</ng-template>\n * <ng-template ngPluralCase=\"=1\">one</ng-template>\n * <ng-template ngPluralCase=\"other\">more than one</ng-template>\n * </ng-container>\n * ```\n * @param {?} nodes\n * @return {?}\n */\nfunction expandNodes(nodes) {\n var /** @type {?} */ expander = new _Expander();\n return new ExpansionResult(visitAll(expander, nodes), expander.isExpanded, expander.errors);\n}\nvar ExpansionResult = (function () {\n /**\n * @param {?} nodes\n * @param {?} expanded\n * @param {?} errors\n */\n function ExpansionResult(nodes, expanded, errors) {\n this.nodes = nodes;\n this.expanded = expanded;\n this.errors = errors;\n }\n return ExpansionResult;\n}());\nvar ExpansionError = (function (_super) {\n __extends(ExpansionError, _super);\n /**\n * @param {?} span\n * @param {?} errorMsg\n */\n function ExpansionError(span, errorMsg) {\n return _super.call(this, span, errorMsg) || this;\n }\n return ExpansionError;\n}(ParseError));\n/**\n * Expand expansion forms (plural, select) to directives\n *\n * \\@internal\n */\nvar _Expander = (function () {\n function _Expander() {\n this.isExpanded = false;\n this.errors = [];\n }\n /**\n * @param {?} element\n * @param {?} context\n * @return {?}\n */\n _Expander.prototype.visitElement = function (element, context) {\n return new Element(element.name, element.attrs, visitAll(this, element.children), element.sourceSpan, element.startSourceSpan, element.endSourceSpan);\n };\n /**\n * @param {?} attribute\n * @param {?} context\n * @return {?}\n */\n _Expander.prototype.visitAttribute = function (attribute, context) { return attribute; };\n /**\n * @param {?} text\n * @param {?} context\n * @return {?}\n */\n _Expander.prototype.visitText = function (text, context) { return text; };\n /**\n * @param {?} comment\n * @param {?} context\n * @return {?}\n */\n _Expander.prototype.visitComment = function (comment, context) { return comment; };\n /**\n * @param {?} icu\n * @param {?} context\n * @return {?}\n */\n _Expander.prototype.visitExpansion = function (icu, context) {\n this.isExpanded = true;\n return icu.type == 'plural' ? _expandPluralForm(icu, this.errors) :\n _expandDefaultForm(icu, this.errors);\n };\n /**\n * @param {?} icuCase\n * @param {?} context\n * @return {?}\n */\n _Expander.prototype.visitExpansionCase = function (icuCase, context) {\n throw new Error('Should not be reached');\n };\n return _Expander;\n}());\n/**\n * @param {?} ast\n * @param {?} errors\n * @return {?}\n */\nfunction _expandPluralForm(ast, errors) {\n var /** @type {?} */ children = ast.cases.map(function (c) {\n if (PLURAL_CASES.indexOf(c.value) == -1 && !c.value.match(/^=\\d+$/)) {\n errors.push(new ExpansionError(c.valueSourceSpan, \"Plural cases should be \\\"=<number>\\\" or one of \" + PLURAL_CASES.join(\", \")));\n }\n var /** @type {?} */ expansionResult = expandNodes(c.expression);\n errors.push.apply(errors, expansionResult.errors);\n return new Element(\"ng-template\", [new Attribute$1('ngPluralCase', \"\" + c.value, c.valueSourceSpan)], expansionResult.nodes, c.sourceSpan, c.sourceSpan, c.sourceSpan);\n });\n var /** @type {?} */ switchAttr = new Attribute$1('[ngPlural]', ast.switchValue, ast.switchValueSourceSpan);\n return new Element('ng-container', [switchAttr], children, ast.sourceSpan, ast.sourceSpan, ast.sourceSpan);\n}\n/**\n * @param {?} ast\n * @param {?} errors\n * @return {?}\n */\nfunction _expandDefaultForm(ast, errors) {\n var /** @type {?} */ children = ast.cases.map(function (c) {\n var /** @type {?} */ expansionResult = expandNodes(c.expression);\n errors.push.apply(errors, expansionResult.errors);\n if (c.value === 'other') {\n // other is the default case when no values match\n return new Element(\"ng-template\", [new Attribute$1('ngSwitchDefault', '', c.valueSourceSpan)], expansionResult.nodes, c.sourceSpan, c.sourceSpan, c.sourceSpan);\n }\n return new Element(\"ng-template\", [new Attribute$1('ngSwitchCase', \"\" + c.value, c.valueSourceSpan)], expansionResult.nodes, c.sourceSpan, c.sourceSpan, c.sourceSpan);\n });\n var /** @type {?} */ switchAttr = new Attribute$1('[ngSwitch]', ast.switchValue, ast.switchValueSourceSpan);\n return new Element('ng-container', [switchAttr], children, ast.sourceSpan, ast.sourceSpan, ast.sourceSpan);\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 */\nvar ProviderError = (function (_super) {\n __extends(ProviderError, _super);\n /**\n * @param {?} message\n * @param {?} span\n */\n function ProviderError(message, span) {\n return _super.call(this, span, message) || this;\n }\n return ProviderError;\n}(ParseError));\nvar ProviderViewContext = (function () {\n /**\n * @param {?} component\n */\n function ProviderViewContext(component) {\n var _this = this;\n this.component = component;\n this.errors = [];\n this.viewQueries = _getViewQueries(component);\n this.viewProviders = new Map();\n component.viewProviders.forEach(function (provider) {\n if (_this.viewProviders.get(tokenReference(provider.token)) == null) {\n _this.viewProviders.set(tokenReference(provider.token), true);\n }\n });\n }\n return ProviderViewContext;\n}());\nvar ProviderElementContext = (function () {\n /**\n * @param {?} viewContext\n * @param {?} _parent\n * @param {?} _isViewRoot\n * @param {?} _directiveAsts\n * @param {?} attrs\n * @param {?} refs\n * @param {?} isTemplate\n * @param {?} contentQueryStartId\n * @param {?} _sourceSpan\n */\n function ProviderElementContext(viewContext, _parent, _isViewRoot, _directiveAsts, attrs, refs, isTemplate, contentQueryStartId, _sourceSpan) {\n var _this = this;\n this.viewContext = viewContext;\n this._parent = _parent;\n this._isViewRoot = _isViewRoot;\n this._directiveAsts = _directiveAsts;\n this._sourceSpan = _sourceSpan;\n this._transformedProviders = new Map();\n this._seenProviders = new Map();\n this._hasViewContainer = false;\n this._queriedTokens = new Map();\n this._attrs = {};\n attrs.forEach(function (attrAst) { return _this._attrs[attrAst.name] = attrAst.value; });\n var directivesMeta = _directiveAsts.map(function (directiveAst) { return directiveAst.directive; });\n this._allProviders =\n _resolveProvidersFromDirectives(directivesMeta, _sourceSpan, viewContext.errors);\n this._contentQueries = _getContentQueries(contentQueryStartId, directivesMeta);\n Array.from(this._allProviders.values()).forEach(function (provider) {\n _this._addQueryReadsTo(provider.token, provider.token, _this._queriedTokens);\n });\n if (isTemplate) {\n var templateRefId = createIdentifierToken(Identifiers.TemplateRef);\n this._addQueryReadsTo(templateRefId, templateRefId, this._queriedTokens);\n }\n refs.forEach(function (refAst) {\n var defaultQueryValue = refAst.value || createIdentifierToken(Identifiers.ElementRef);\n _this._addQueryReadsTo({ value: refAst.name }, defaultQueryValue, _this._queriedTokens);\n });\n if (this._queriedTokens.get(resolveIdentifier(Identifiers.ViewContainerRef))) {\n this._hasViewContainer = true;\n }\n // create the providers that we know are eager first\n Array.from(this._allProviders.values()).forEach(function (provider) {\n var eager = provider.eager || _this._queriedTokens.get(tokenReference(provider.token));\n if (eager) {\n _this._getOrCreateLocalProvider(provider.providerType, provider.token, true);\n }\n });\n }\n /**\n * @return {?}\n */\n ProviderElementContext.prototype.afterElement = function () {\n var _this = this;\n // collect lazy providers\n Array.from(this._allProviders.values()).forEach(function (provider) {\n _this._getOrCreateLocalProvider(provider.providerType, provider.token, false);\n });\n };\n Object.defineProperty(ProviderElementContext.prototype, \"transformProviders\", {\n /**\n * @return {?}\n */\n get: function () {\n return Array.from(this._transformedProviders.values());\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ProviderElementContext.prototype, \"transformedDirectiveAsts\", {\n /**\n * @return {?}\n */\n get: function () {\n var /** @type {?} */ sortedProviderTypes = this.transformProviders.map(function (provider) { return provider.token.identifier; });\n var /** @type {?} */ sortedDirectives = this._directiveAsts.slice();\n sortedDirectives.sort(function (dir1, dir2) { return sortedProviderTypes.indexOf(dir1.directive.type) -\n sortedProviderTypes.indexOf(dir2.directive.type); });\n return sortedDirectives;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ProviderElementContext.prototype, \"transformedHasViewContainer\", {\n /**\n * @return {?}\n */\n get: function () { return this._hasViewContainer; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ProviderElementContext.prototype, \"queryMatches\", {\n /**\n * @return {?}\n */\n get: function () {\n var /** @type {?} */ allMatches = [];\n this._queriedTokens.forEach(function (matches) { allMatches.push.apply(allMatches, matches); });\n return allMatches;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} token\n * @param {?} defaultValue\n * @param {?} queryReadTokens\n * @return {?}\n */\n ProviderElementContext.prototype._addQueryReadsTo = function (token, defaultValue, queryReadTokens) {\n this._getQueriesFor(token).forEach(function (query) {\n var /** @type {?} */ queryValue = query.meta.read || defaultValue;\n var /** @type {?} */ tokenRef = tokenReference(queryValue);\n var /** @type {?} */ queryMatches = queryReadTokens.get(tokenRef);\n if (!queryMatches) {\n queryMatches = [];\n queryReadTokens.set(tokenRef, queryMatches);\n }\n queryMatches.push({ queryId: query.queryId, value: queryValue });\n });\n };\n /**\n * @param {?} token\n * @return {?}\n */\n ProviderElementContext.prototype._getQueriesFor = function (token) {\n var /** @type {?} */ result = [];\n var /** @type {?} */ currentEl = this;\n var /** @type {?} */ distance = 0;\n var /** @type {?} */ queries;\n while (currentEl !== null) {\n queries = currentEl._contentQueries.get(tokenReference(token));\n if (queries) {\n result.push.apply(result, queries.filter(function (query) { return query.meta.descendants || distance <= 1; }));\n }\n if (currentEl._directiveAsts.length > 0) {\n distance++;\n }\n currentEl = currentEl._parent;\n }\n queries = this.viewContext.viewQueries.get(tokenReference(token));\n if (queries) {\n result.push.apply(result, queries);\n }\n return result;\n };\n /**\n * @param {?} requestingProviderType\n * @param {?} token\n * @param {?} eager\n * @return {?}\n */\n ProviderElementContext.prototype._getOrCreateLocalProvider = function (requestingProviderType, token, eager) {\n var _this = this;\n var /** @type {?} */ resolvedProvider = this._allProviders.get(tokenReference(token));\n if (!resolvedProvider || ((requestingProviderType === ProviderAstType.Directive ||\n requestingProviderType === ProviderAstType.PublicService) &&\n resolvedProvider.providerType === ProviderAstType.PrivateService) ||\n ((requestingProviderType === ProviderAstType.PrivateService ||\n requestingProviderType === ProviderAstType.PublicService) &&\n resolvedProvider.providerType === ProviderAstType.Builtin)) {\n return null;\n }\n var /** @type {?} */ transformedProviderAst = this._transformedProviders.get(tokenReference(token));\n if (transformedProviderAst) {\n return transformedProviderAst;\n }\n if (this._seenProviders.get(tokenReference(token)) != null) {\n this.viewContext.errors.push(new ProviderError(\"Cannot instantiate cyclic dependency! \" + tokenName(token), this._sourceSpan));\n return null;\n }\n this._seenProviders.set(tokenReference(token), true);\n var /** @type {?} */ transformedProviders = resolvedProvider.providers.map(function (provider) {\n var /** @type {?} */ transformedUseValue = provider.useValue;\n var /** @type {?} */ transformedUseExisting = provider.useExisting;\n var /** @type {?} */ transformedDeps;\n if (provider.useExisting != null) {\n var /** @type {?} */ existingDiDep = _this._getDependency(resolvedProvider.providerType, { token: provider.useExisting }, eager);\n if (existingDiDep.token != null) {\n transformedUseExisting = existingDiDep.token;\n }\n else {\n transformedUseExisting = null;\n transformedUseValue = existingDiDep.value;\n }\n }\n else if (provider.useFactory) {\n var /** @type {?} */ deps = provider.deps || provider.useFactory.diDeps;\n transformedDeps =\n deps.map(function (dep) { return _this._getDependency(resolvedProvider.providerType, dep, eager); });\n }\n else if (provider.useClass) {\n var /** @type {?} */ deps = provider.deps || provider.useClass.diDeps;\n transformedDeps =\n deps.map(function (dep) { return _this._getDependency(resolvedProvider.providerType, dep, eager); });\n }\n return _transformProvider(provider, {\n useExisting: transformedUseExisting,\n useValue: transformedUseValue,\n deps: transformedDeps\n });\n });\n transformedProviderAst =\n _transformProviderAst(resolvedProvider, { eager: eager, providers: transformedProviders });\n this._transformedProviders.set(tokenReference(token), transformedProviderAst);\n return transformedProviderAst;\n };\n /**\n * @param {?} requestingProviderType\n * @param {?} dep\n * @param {?=} eager\n * @return {?}\n */\n ProviderElementContext.prototype._getLocalDependency = function (requestingProviderType, dep, eager) {\n if (eager === void 0) { eager = null; }\n if (dep.isAttribute) {\n var /** @type {?} */ attrValue = this._attrs[dep.token.value];\n return { isValue: true, value: attrValue == null ? null : attrValue };\n }\n if (dep.token != null) {\n // access builtints\n if ((requestingProviderType === ProviderAstType.Directive ||\n requestingProviderType === ProviderAstType.Component)) {\n if (tokenReference(dep.token) === resolveIdentifier(Identifiers.Renderer) ||\n tokenReference(dep.token) === resolveIdentifier(Identifiers.ElementRef) ||\n tokenReference(dep.token) === resolveIdentifier(Identifiers.ChangeDetectorRef) ||\n tokenReference(dep.token) === resolveIdentifier(Identifiers.TemplateRef)) {\n return dep;\n }\n if (tokenReference(dep.token) === resolveIdentifier(Identifiers.ViewContainerRef)) {\n this._hasViewContainer = true;\n }\n }\n // access the injector\n if (tokenReference(dep.token) === resolveIdentifier(Identifiers.Injector)) {\n return dep;\n }\n // access providers\n if (this._getOrCreateLocalProvider(requestingProviderType, dep.token, eager) != null) {\n return dep;\n }\n }\n return null;\n };\n /**\n * @param {?} requestingProviderType\n * @param {?} dep\n * @param {?=} eager\n * @return {?}\n */\n ProviderElementContext.prototype._getDependency = function (requestingProviderType, dep, eager) {\n if (eager === void 0) { eager = null; }\n var /** @type {?} */ currElement = this;\n var /** @type {?} */ currEager = eager;\n var /** @type {?} */ result = null;\n if (!dep.isSkipSelf) {\n result = this._getLocalDependency(requestingProviderType, dep, eager);\n }\n if (dep.isSelf) {\n if (!result && dep.isOptional) {\n result = { isValue: true, value: null };\n }\n }\n else {\n // check parent elements\n while (!result && currElement._parent) {\n var /** @type {?} */ prevElement = currElement;\n currElement = currElement._parent;\n if (prevElement._isViewRoot) {\n currEager = false;\n }\n result = currElement._getLocalDependency(ProviderAstType.PublicService, dep, currEager);\n }\n // check @Host restriction\n if (!result) {\n if (!dep.isHost || this.viewContext.component.isHost ||\n this.viewContext.component.type.reference === tokenReference(dep.token) ||\n this.viewContext.viewProviders.get(tokenReference(dep.token)) != null) {\n result = dep;\n }\n else {\n result = dep.isOptional ? result = { isValue: true, value: null } : null;\n }\n }\n }\n if (!result) {\n this.viewContext.errors.push(new ProviderError(\"No provider for \" + tokenName(dep.token), this._sourceSpan));\n }\n return result;\n };\n return ProviderElementContext;\n}());\nvar NgModuleProviderAnalyzer = (function () {\n /**\n * @param {?} ngModule\n * @param {?} extraProviders\n * @param {?} sourceSpan\n */\n function NgModuleProviderAnalyzer(ngModule, extraProviders, sourceSpan) {\n var _this = this;\n this._transformedProviders = new Map();\n this._seenProviders = new Map();\n this._errors = [];\n this._allProviders = new Map();\n ngModule.transitiveModule.modules.forEach(function (ngModuleType) {\n var ngModuleProvider = { token: { identifier: ngModuleType }, useClass: ngModuleType };\n _resolveProviders([ngModuleProvider], ProviderAstType.PublicService, true, sourceSpan, _this._errors, _this._allProviders);\n });\n _resolveProviders(ngModule.transitiveModule.providers.map(function (entry) { return entry.provider; }).concat(extraProviders), ProviderAstType.PublicService, false, sourceSpan, this._errors, this._allProviders);\n }\n /**\n * @return {?}\n */\n NgModuleProviderAnalyzer.prototype.parse = function () {\n var _this = this;\n Array.from(this._allProviders.values()).forEach(function (provider) {\n _this._getOrCreateLocalProvider(provider.token, provider.eager);\n });\n if (this._errors.length > 0) {\n var /** @type {?} */ errorString = this._errors.join('\\n');\n throw new Error(\"Provider parse errors:\\n\" + errorString);\n }\n return Array.from(this._transformedProviders.values());\n };\n /**\n * @param {?} token\n * @param {?} eager\n * @return {?}\n */\n NgModuleProviderAnalyzer.prototype._getOrCreateLocalProvider = function (token, eager) {\n var _this = this;\n var /** @type {?} */ resolvedProvider = this._allProviders.get(tokenReference(token));\n if (!resolvedProvider) {\n return null;\n }\n var /** @type {?} */ transformedProviderAst = this._transformedProviders.get(tokenReference(token));\n if (transformedProviderAst) {\n return transformedProviderAst;\n }\n if (this._seenProviders.get(tokenReference(token)) != null) {\n this._errors.push(new ProviderError(\"Cannot instantiate cyclic dependency! \" + tokenName(token), resolvedProvider.sourceSpan));\n return null;\n }\n this._seenProviders.set(tokenReference(token), true);\n var /** @type {?} */ transformedProviders = resolvedProvider.providers.map(function (provider) {\n var /** @type {?} */ transformedUseValue = provider.useValue;\n var /** @type {?} */ transformedUseExisting = provider.useExisting;\n var /** @type {?} */ transformedDeps;\n if (provider.useExisting != null) {\n var /** @type {?} */ existingDiDep = _this._getDependency({ token: provider.useExisting }, eager, resolvedProvider.sourceSpan);\n if (existingDiDep.token != null) {\n transformedUseExisting = existingDiDep.token;\n }\n else {\n transformedUseExisting = null;\n transformedUseValue = existingDiDep.value;\n }\n }\n else if (provider.useFactory) {\n var /** @type {?} */ deps = provider.deps || provider.useFactory.diDeps;\n transformedDeps =\n deps.map(function (dep) { return _this._getDependency(dep, eager, resolvedProvider.sourceSpan); });\n }\n else if (provider.useClass) {\n var /** @type {?} */ deps = provider.deps || provider.useClass.diDeps;\n transformedDeps =\n deps.map(function (dep) { return _this._getDependency(dep, eager, resolvedProvider.sourceSpan); });\n }\n return _transformProvider(provider, {\n useExisting: transformedUseExisting,\n useValue: transformedUseValue,\n deps: transformedDeps\n });\n });\n transformedProviderAst =\n _transformProviderAst(resolvedProvider, { eager: eager, providers: transformedProviders });\n this._transformedProviders.set(tokenReference(token), transformedProviderAst);\n return transformedProviderAst;\n };\n /**\n * @param {?} dep\n * @param {?=} eager\n * @param {?=} requestorSourceSpan\n * @return {?}\n */\n NgModuleProviderAnalyzer.prototype._getDependency = function (dep, eager, requestorSourceSpan) {\n if (eager === void 0) { eager = null; }\n var /** @type {?} */ foundLocal = false;\n if (!dep.isSkipSelf && dep.token != null) {\n // access the injector\n if (tokenReference(dep.token) === resolveIdentifier(Identifiers.Injector) ||\n tokenReference(dep.token) === resolveIdentifier(Identifiers.ComponentFactoryResolver)) {\n foundLocal = true;\n }\n else if (this._getOrCreateLocalProvider(dep.token, eager) != null) {\n foundLocal = true;\n }\n }\n var /** @type {?} */ result = dep;\n if (dep.isSelf && !foundLocal) {\n if (dep.isOptional) {\n result = { isValue: true, value: null };\n }\n else {\n this._errors.push(new ProviderError(\"No provider for \" + tokenName(dep.token), requestorSourceSpan));\n }\n }\n return result;\n };\n return NgModuleProviderAnalyzer;\n}());\n/**\n * @param {?} provider\n * @param {?} __1\n * @return {?}\n */\nfunction _transformProvider(provider, _a) {\n var useExisting = _a.useExisting, useValue = _a.useValue, deps = _a.deps;\n return {\n token: provider.token,\n useClass: provider.useClass,\n useExisting: useExisting,\n useFactory: provider.useFactory,\n useValue: useValue,\n deps: deps,\n multi: provider.multi\n };\n}\n/**\n * @param {?} provider\n * @param {?} __1\n * @return {?}\n */\nfunction _transformProviderAst(provider, _a) {\n var eager = _a.eager, providers = _a.providers;\n return new ProviderAst(provider.token, provider.multiProvider, provider.eager || eager, providers, provider.providerType, provider.lifecycleHooks, provider.sourceSpan);\n}\n/**\n * @param {?} directives\n * @param {?} sourceSpan\n * @param {?} targetErrors\n * @return {?}\n */\nfunction _resolveProvidersFromDirectives(directives, sourceSpan, targetErrors) {\n var /** @type {?} */ providersByToken = new Map();\n directives.forEach(function (directive) {\n var /** @type {?} */ dirProvider = { token: { identifier: directive.type }, useClass: directive.type };\n _resolveProviders([dirProvider], directive.isComponent ? ProviderAstType.Component : ProviderAstType.Directive, true, sourceSpan, targetErrors, providersByToken);\n });\n // Note: directives need to be able to overwrite providers of a component!\n var /** @type {?} */ directivesWithComponentFirst = directives.filter(function (dir) { return dir.isComponent; }).concat(directives.filter(function (dir) { return !dir.isComponent; }));\n directivesWithComponentFirst.forEach(function (directive) {\n _resolveProviders(directive.providers, ProviderAstType.PublicService, false, sourceSpan, targetErrors, providersByToken);\n _resolveProviders(directive.viewProviders, ProviderAstType.PrivateService, false, sourceSpan, targetErrors, providersByToken);\n });\n return providersByToken;\n}\n/**\n * @param {?} providers\n * @param {?} providerType\n * @param {?} eager\n * @param {?} sourceSpan\n * @param {?} targetErrors\n * @param {?} targetProvidersByToken\n * @return {?}\n */\nfunction _resolveProviders(providers, providerType, eager, sourceSpan, targetErrors, targetProvidersByToken) {\n providers.forEach(function (provider) {\n var /** @type {?} */ resolvedProvider = targetProvidersByToken.get(tokenReference(provider.token));\n if (resolvedProvider != null && !!resolvedProvider.multiProvider !== !!provider.multi) {\n targetErrors.push(new ProviderError(\"Mixing multi and non multi provider is not possible for token \" + tokenName(resolvedProvider.token), sourceSpan));\n }\n if (!resolvedProvider) {\n var /** @type {?} */ lifecycleHooks = provider.token.identifier &&\n ((provider.token.identifier)).lifecycleHooks ?\n ((provider.token.identifier)).lifecycleHooks :\n [];\n var /** @type {?} */ isUseValue = !(provider.useClass || provider.useExisting || provider.useFactory);\n resolvedProvider = new ProviderAst(provider.token, provider.multi, eager || isUseValue, [provider], providerType, lifecycleHooks, sourceSpan);\n targetProvidersByToken.set(tokenReference(provider.token), resolvedProvider);\n }\n else {\n if (!provider.multi) {\n resolvedProvider.providers.length = 0;\n }\n resolvedProvider.providers.push(provider);\n }\n });\n}\n/**\n * @param {?} component\n * @return {?}\n */\nfunction _getViewQueries(component) {\n // Note: queries start with id 1 so we can use the number in a Bloom filter!\n var /** @type {?} */ viewQueryId = 1;\n var /** @type {?} */ viewQueries = new Map();\n if (component.viewQueries) {\n component.viewQueries.forEach(function (query) { return _addQueryToTokenMap(viewQueries, { meta: query, queryId: viewQueryId++ }); });\n }\n return viewQueries;\n}\n/**\n * @param {?} contentQueryStartId\n * @param {?} directives\n * @return {?}\n */\nfunction _getContentQueries(contentQueryStartId, directives) {\n var /** @type {?} */ contentQueryId = contentQueryStartId;\n var /** @type {?} */ contentQueries = new Map();\n directives.forEach(function (directive, directiveIndex) {\n if (directive.queries) {\n directive.queries.forEach(function (query) { return _addQueryToTokenMap(contentQueries, { meta: query, queryId: contentQueryId++ }); });\n }\n });\n return contentQueries;\n}\n/**\n * @param {?} map\n * @param {?} query\n * @return {?}\n */\nfunction _addQueryToTokenMap(map, query) {\n query.meta.selectors.forEach(function (token) {\n var /** @type {?} */ entry = map.get(tokenReference(token));\n if (!entry) {\n entry = [];\n map.set(tokenReference(token), entry);\n }\n entry.push(query);\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 * @abstract\n */\nvar ElementSchemaRegistry = (function () {\n function ElementSchemaRegistry() {\n }\n /**\n * @abstract\n * @param {?} tagName\n * @param {?} propName\n * @param {?} schemaMetas\n * @return {?}\n */\n ElementSchemaRegistry.prototype.hasProperty = function (tagName, propName, schemaMetas) { };\n /**\n * @abstract\n * @param {?} tagName\n * @param {?} schemaMetas\n * @return {?}\n */\n ElementSchemaRegistry.prototype.hasElement = function (tagName, schemaMetas) { };\n /**\n * @abstract\n * @param {?} elementName\n * @param {?} propName\n * @param {?} isAttribute\n * @return {?}\n */\n ElementSchemaRegistry.prototype.securityContext = function (elementName, propName, isAttribute) { };\n /**\n * @abstract\n * @return {?}\n */\n ElementSchemaRegistry.prototype.allKnownElementNames = function () { };\n /**\n * @abstract\n * @param {?} propName\n * @return {?}\n */\n ElementSchemaRegistry.prototype.getMappedPropName = function (propName) { };\n /**\n * @abstract\n * @return {?}\n */\n ElementSchemaRegistry.prototype.getDefaultComponentElementName = function () { };\n /**\n * @abstract\n * @param {?} name\n * @return {?}\n */\n ElementSchemaRegistry.prototype.validateProperty = function (name) { };\n /**\n * @abstract\n * @param {?} name\n * @return {?}\n */\n ElementSchemaRegistry.prototype.validateAttribute = function (name) { };\n /**\n * @abstract\n * @param {?} propName\n * @return {?}\n */\n ElementSchemaRegistry.prototype.normalizeAnimationStyleProperty = function (propName) { };\n /**\n * @abstract\n * @param {?} camelCaseProp\n * @param {?} userProvidedProp\n * @param {?} val\n * @return {?}\n */\n ElementSchemaRegistry.prototype.normalizeAnimationStyleValue = function (camelCaseProp, userProvidedProp, val) { };\n return ElementSchemaRegistry;\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 */\nvar StyleWithImports = (function () {\n /**\n * @param {?} style\n * @param {?} styleUrls\n */\n function StyleWithImports(style$$1, styleUrls) {\n this.style = style$$1;\n this.styleUrls = styleUrls;\n }\n return StyleWithImports;\n}());\n/**\n * @param {?} url\n * @return {?}\n */\nfunction isStyleUrlResolvable(url) {\n if (url == null || url.length === 0 || url[0] == '/')\n return false;\n var /** @type {?} */ schemeMatch = url.match(URL_WITH_SCHEMA_REGEXP);\n return schemeMatch === null || schemeMatch[1] == 'package' || schemeMatch[1] == 'asset';\n}\n/**\n * Rewrites stylesheets by resolving and removing the \\@import urls that\n * are either relative or don't have a `package:` scheme\n * @param {?} resolver\n * @param {?} baseUrl\n * @param {?} cssText\n * @return {?}\n */\nfunction extractStyleUrls(resolver, baseUrl, cssText) {\n var /** @type {?} */ foundUrls = [];\n var /** @type {?} */ modifiedCssText = cssText.replace(CSS_COMMENT_REGEXP, '').replace(CSS_IMPORT_REGEXP, function () {\n var m = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n m[_i] = arguments[_i];\n }\n var /** @type {?} */ url = m[1] || m[2];\n if (!isStyleUrlResolvable(url)) {\n // Do not attempt to resolve non-package absolute URLs with URI scheme\n return m[0];\n }\n foundUrls.push(resolver.resolve(baseUrl, url));\n return '';\n });\n return new StyleWithImports(modifiedCssText, foundUrls);\n}\nvar CSS_IMPORT_REGEXP = /@import\\s+(?:url\\()?\\s*(?:(?:['\"]([^'\"]*))|([^;\\)\\s]*))[^;]*;?/g;\nvar CSS_COMMENT_REGEXP = /\\/\\*.+?\\*\\//g;\nvar URL_WITH_SCHEMA_REGEXP = /^([^:/?#]+):/;\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 */\nvar PROPERTY_PARTS_SEPARATOR = '.';\nvar ATTRIBUTE_PREFIX = 'attr';\nvar CLASS_PREFIX = 'class';\nvar STYLE_PREFIX = 'style';\nvar ANIMATE_PROP_PREFIX = 'animate-';\nvar BoundPropertyType = {};\nBoundPropertyType.DEFAULT = 0;\nBoundPropertyType.LITERAL_ATTR = 1;\nBoundPropertyType.ANIMATION = 2;\nBoundPropertyType[BoundPropertyType.DEFAULT] = \"DEFAULT\";\nBoundPropertyType[BoundPropertyType.LITERAL_ATTR] = \"LITERAL_ATTR\";\nBoundPropertyType[BoundPropertyType.ANIMATION] = \"ANIMATION\";\n/**\n * Represents a parsed property.\n */\nvar BoundProperty = (function () {\n /**\n * @param {?} name\n * @param {?} expression\n * @param {?} type\n * @param {?} sourceSpan\n */\n function BoundProperty(name, expression, type, sourceSpan) {\n this.name = name;\n this.expression = expression;\n this.type = type;\n this.sourceSpan = sourceSpan;\n }\n Object.defineProperty(BoundProperty.prototype, \"isLiteral\", {\n /**\n * @return {?}\n */\n get: function () { return this.type === BoundPropertyType.LITERAL_ATTR; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BoundProperty.prototype, \"isAnimation\", {\n /**\n * @return {?}\n */\n get: function () { return this.type === BoundPropertyType.ANIMATION; },\n enumerable: true,\n configurable: true\n });\n return BoundProperty;\n}());\n/**\n * Parses bindings in templates and in the directive host area.\n */\nvar BindingParser = (function () {\n /**\n * @param {?} _exprParser\n * @param {?} _interpolationConfig\n * @param {?} _schemaRegistry\n * @param {?} pipes\n * @param {?} _targetErrors\n */\n function BindingParser(_exprParser, _interpolationConfig, _schemaRegistry, pipes, _targetErrors) {\n var _this = this;\n this._exprParser = _exprParser;\n this._interpolationConfig = _interpolationConfig;\n this._schemaRegistry = _schemaRegistry;\n this._targetErrors = _targetErrors;\n this.pipesByName = new Map();\n this._usedPipes = new Map();\n pipes.forEach(function (pipe) { return _this.pipesByName.set(pipe.name, pipe); });\n }\n /**\n * @return {?}\n */\n BindingParser.prototype.getUsedPipes = function () { return Array.from(this._usedPipes.values()); };\n /**\n * @param {?} dirMeta\n * @param {?} elementSelector\n * @param {?} sourceSpan\n * @return {?}\n */\n BindingParser.prototype.createDirectiveHostPropertyAsts = function (dirMeta, elementSelector, sourceSpan) {\n var _this = this;\n if (dirMeta.hostProperties) {\n var /** @type {?} */ boundProps_1 = [];\n Object.keys(dirMeta.hostProperties).forEach(function (propName) {\n var /** @type {?} */ expression = dirMeta.hostProperties[propName];\n if (typeof expression === 'string') {\n _this.parsePropertyBinding(propName, expression, true, sourceSpan, [], boundProps_1);\n }\n else {\n _this._reportError(\"Value of the host property binding \\\"\" + propName + \"\\\" needs to be a string representing an expression but got \\\"\" + expression + \"\\\" (\" + typeof expression + \")\", sourceSpan);\n }\n });\n return boundProps_1.map(function (prop) { return _this.createElementPropertyAst(elementSelector, prop); });\n }\n };\n /**\n * @param {?} dirMeta\n * @param {?} sourceSpan\n * @return {?}\n */\n BindingParser.prototype.createDirectiveHostEventAsts = function (dirMeta, sourceSpan) {\n var _this = this;\n if (dirMeta.hostListeners) {\n var /** @type {?} */ targetEventAsts_1 = [];\n Object.keys(dirMeta.hostListeners).forEach(function (propName) {\n var /** @type {?} */ expression = dirMeta.hostListeners[propName];\n if (typeof expression === 'string') {\n _this.parseEvent(propName, expression, sourceSpan, [], targetEventAsts_1);\n }\n else {\n _this._reportError(\"Value of the host listener \\\"\" + propName + \"\\\" needs to be a string representing an expression but got \\\"\" + expression + \"\\\" (\" + typeof expression + \")\", sourceSpan);\n }\n });\n return targetEventAsts_1;\n }\n };\n /**\n * @param {?} value\n * @param {?} sourceSpan\n * @return {?}\n */\n BindingParser.prototype.parseInterpolation = function (value, sourceSpan) {\n var /** @type {?} */ sourceInfo = sourceSpan.start.toString();\n try {\n var /** @type {?} */ ast = this._exprParser.parseInterpolation(value, sourceInfo, this._interpolationConfig);\n if (ast)\n this._reportExpressionParserErrors(ast.errors, sourceSpan);\n this._checkPipes(ast, sourceSpan);\n return ast;\n }\n catch (e) {\n this._reportError(\"\" + e, sourceSpan);\n return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo);\n }\n };\n /**\n * @param {?} prefixToken\n * @param {?} value\n * @param {?} sourceSpan\n * @param {?} targetMatchableAttrs\n * @param {?} targetProps\n * @param {?} targetVars\n * @return {?}\n */\n BindingParser.prototype.parseInlineTemplateBinding = function (prefixToken, value, sourceSpan, targetMatchableAttrs, targetProps, targetVars) {\n var /** @type {?} */ bindings = this._parseTemplateBindings(prefixToken, value, sourceSpan);\n for (var /** @type {?} */ i = 0; i < bindings.length; i++) {\n var /** @type {?} */ binding = bindings[i];\n if (binding.keyIsVar) {\n targetVars.push(new VariableAst(binding.key, binding.name, sourceSpan));\n }\n else if (binding.expression) {\n this._parsePropertyAst(binding.key, binding.expression, sourceSpan, targetMatchableAttrs, targetProps);\n }\n else {\n targetMatchableAttrs.push([binding.key, '']);\n this.parseLiteralAttr(binding.key, null, sourceSpan, targetMatchableAttrs, targetProps);\n }\n }\n };\n /**\n * @param {?} prefixToken\n * @param {?} value\n * @param {?} sourceSpan\n * @return {?}\n */\n BindingParser.prototype._parseTemplateBindings = function (prefixToken, value, sourceSpan) {\n var _this = this;\n var /** @type {?} */ sourceInfo = sourceSpan.start.toString();\n try {\n var /** @type {?} */ bindingsResult = this._exprParser.parseTemplateBindings(prefixToken, value, sourceInfo);\n this._reportExpressionParserErrors(bindingsResult.errors, sourceSpan);\n bindingsResult.templateBindings.forEach(function (binding) {\n if (binding.expression) {\n _this._checkPipes(binding.expression, sourceSpan);\n }\n });\n bindingsResult.warnings.forEach(function (warning) { _this._reportError(warning, sourceSpan, ParseErrorLevel.WARNING); });\n return bindingsResult.templateBindings;\n }\n catch (e) {\n this._reportError(\"\" + e, sourceSpan);\n return [];\n }\n };\n /**\n * @param {?} name\n * @param {?} value\n * @param {?} sourceSpan\n * @param {?} targetMatchableAttrs\n * @param {?} targetProps\n * @return {?}\n */\n BindingParser.prototype.parseLiteralAttr = function (name, value, sourceSpan, targetMatchableAttrs, targetProps) {\n if (_isAnimationLabel(name)) {\n name = name.substring(1);\n if (value) {\n this._reportError(\"Assigning animation triggers via @prop=\\\"exp\\\" attributes with an expression is invalid.\" +\n \" Use property bindings (e.g. [@prop]=\\\"exp\\\") or use an attribute without a value (e.g. @prop) instead.\", sourceSpan, ParseErrorLevel.ERROR);\n }\n this._parseAnimation(name, value, sourceSpan, targetMatchableAttrs, targetProps);\n }\n else {\n targetProps.push(new BoundProperty(name, this._exprParser.wrapLiteralPrimitive(value, ''), BoundPropertyType.LITERAL_ATTR, sourceSpan));\n }\n };\n /**\n * @param {?} name\n * @param {?} expression\n * @param {?} isHost\n * @param {?} sourceSpan\n * @param {?} targetMatchableAttrs\n * @param {?} targetProps\n * @return {?}\n */\n BindingParser.prototype.parsePropertyBinding = function (name, expression, isHost, sourceSpan, targetMatchableAttrs, targetProps) {\n var /** @type {?} */ isAnimationProp = false;\n if (name.startsWith(ANIMATE_PROP_PREFIX)) {\n isAnimationProp = true;\n name = name.substring(ANIMATE_PROP_PREFIX.length);\n }\n else if (_isAnimationLabel(name)) {\n isAnimationProp = true;\n name = name.substring(1);\n }\n if (isAnimationProp) {\n this._parseAnimation(name, expression, sourceSpan, targetMatchableAttrs, targetProps);\n }\n else {\n this._parsePropertyAst(name, this._parseBinding(expression, isHost, sourceSpan), sourceSpan, targetMatchableAttrs, targetProps);\n }\n };\n /**\n * @param {?} name\n * @param {?} value\n * @param {?} sourceSpan\n * @param {?} targetMatchableAttrs\n * @param {?} targetProps\n * @return {?}\n */\n BindingParser.prototype.parsePropertyInterpolation = function (name, value, sourceSpan, targetMatchableAttrs, targetProps) {\n var /** @type {?} */ expr = this.parseInterpolation(value, sourceSpan);\n if (expr) {\n this._parsePropertyAst(name, expr, sourceSpan, targetMatchableAttrs, targetProps);\n return true;\n }\n return false;\n };\n /**\n * @param {?} name\n * @param {?} ast\n * @param {?} sourceSpan\n * @param {?} targetMatchableAttrs\n * @param {?} targetProps\n * @return {?}\n */\n BindingParser.prototype._parsePropertyAst = function (name, ast, sourceSpan, targetMatchableAttrs, targetProps) {\n targetMatchableAttrs.push([name, ast.source]);\n targetProps.push(new BoundProperty(name, ast, BoundPropertyType.DEFAULT, sourceSpan));\n };\n /**\n * @param {?} name\n * @param {?} expression\n * @param {?} sourceSpan\n * @param {?} targetMatchableAttrs\n * @param {?} targetProps\n * @return {?}\n */\n BindingParser.prototype._parseAnimation = function (name, expression, sourceSpan, targetMatchableAttrs, targetProps) {\n // This will occur when a @trigger is not paired with an expression.\n // For animations it is valid to not have an expression since */void\n // states will be applied by angular when the element is attached/detached\n var /** @type {?} */ ast = this._parseBinding(expression || 'null', false, sourceSpan);\n targetMatchableAttrs.push([name, ast.source]);\n targetProps.push(new BoundProperty(name, ast, BoundPropertyType.ANIMATION, sourceSpan));\n };\n /**\n * @param {?} value\n * @param {?} isHostBinding\n * @param {?} sourceSpan\n * @return {?}\n */\n BindingParser.prototype._parseBinding = function (value, isHostBinding, sourceSpan) {\n var /** @type {?} */ sourceInfo = sourceSpan.start.toString();\n try {\n var /** @type {?} */ ast = isHostBinding ?\n this._exprParser.parseSimpleBinding(value, sourceInfo, this._interpolationConfig) :\n this._exprParser.parseBinding(value, sourceInfo, this._interpolationConfig);\n if (ast)\n this._reportExpressionParserErrors(ast.errors, sourceSpan);\n this._checkPipes(ast, sourceSpan);\n return ast;\n }\n catch (e) {\n this._reportError(\"\" + e, sourceSpan);\n return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo);\n }\n };\n /**\n * @param {?} elementSelector\n * @param {?} boundProp\n * @return {?}\n */\n BindingParser.prototype.createElementPropertyAst = function (elementSelector, boundProp) {\n if (boundProp.isAnimation) {\n return new BoundElementPropertyAst(boundProp.name, PropertyBindingType.Animation, SecurityContext.NONE, boundProp.expression, null, boundProp.sourceSpan);\n }\n var /** @type {?} */ unit = null;\n var /** @type {?} */ bindingType;\n var /** @type {?} */ boundPropertyName = null;\n var /** @type {?} */ parts = boundProp.name.split(PROPERTY_PARTS_SEPARATOR);\n var /** @type {?} */ securityContexts;\n // Check check for special cases (prefix style, attr, class)\n if (parts.length > 1) {\n if (parts[0] == ATTRIBUTE_PREFIX) {\n boundPropertyName = parts[1];\n this._validatePropertyOrAttributeName(boundPropertyName, boundProp.sourceSpan, true);\n securityContexts = calcPossibleSecurityContexts(this._schemaRegistry, elementSelector, boundPropertyName, true);\n var /** @type {?} */ nsSeparatorIdx = boundPropertyName.indexOf(':');\n if (nsSeparatorIdx > -1) {\n var /** @type {?} */ ns = boundPropertyName.substring(0, nsSeparatorIdx);\n var /** @type {?} */ name = boundPropertyName.substring(nsSeparatorIdx + 1);\n boundPropertyName = mergeNsAndName(ns, name);\n }\n bindingType = PropertyBindingType.Attribute;\n }\n else if (parts[0] == CLASS_PREFIX) {\n boundPropertyName = parts[1];\n bindingType = PropertyBindingType.Class;\n securityContexts = [SecurityContext.NONE];\n }\n else if (parts[0] == STYLE_PREFIX) {\n unit = parts.length > 2 ? parts[2] : null;\n boundPropertyName = parts[1];\n bindingType = PropertyBindingType.Style;\n securityContexts = [SecurityContext.STYLE];\n }\n }\n // If not a special case, use the full property name\n if (boundPropertyName === null) {\n boundPropertyName = this._schemaRegistry.getMappedPropName(boundProp.name);\n securityContexts = calcPossibleSecurityContexts(this._schemaRegistry, elementSelector, boundPropertyName, false);\n bindingType = PropertyBindingType.Property;\n this._validatePropertyOrAttributeName(boundPropertyName, boundProp.sourceSpan, false);\n }\n return new BoundElementPropertyAst(boundPropertyName, bindingType, securityContexts[0], boundProp.expression, unit, boundProp.sourceSpan);\n };\n /**\n * @param {?} name\n * @param {?} expression\n * @param {?} sourceSpan\n * @param {?} targetMatchableAttrs\n * @param {?} targetEvents\n * @return {?}\n */\n BindingParser.prototype.parseEvent = function (name, expression, sourceSpan, targetMatchableAttrs, targetEvents) {\n if (_isAnimationLabel(name)) {\n name = name.substr(1);\n this._parseAnimationEvent(name, expression, sourceSpan, targetEvents);\n }\n else {\n this._parseEvent(name, expression, sourceSpan, targetMatchableAttrs, targetEvents);\n }\n };\n /**\n * @param {?} name\n * @param {?} expression\n * @param {?} sourceSpan\n * @param {?} targetEvents\n * @return {?}\n */\n BindingParser.prototype._parseAnimationEvent = function (name, expression, sourceSpan, targetEvents) {\n var /** @type {?} */ matches = splitAtPeriod(name, [name, '']);\n var /** @type {?} */ eventName = matches[0];\n var /** @type {?} */ phase = matches[1].toLowerCase();\n if (phase) {\n switch (phase) {\n case 'start':\n case 'done':\n var /** @type {?} */ ast = this._parseAction(expression, sourceSpan);\n targetEvents.push(new BoundEventAst(eventName, null, phase, ast, sourceSpan));\n break;\n default:\n this._reportError(\"The provided animation output phase value \\\"\" + phase + \"\\\" for \\\"@\" + eventName + \"\\\" is not supported (use start or done)\", sourceSpan);\n break;\n }\n }\n else {\n this._reportError(\"The animation trigger output event (@\" + eventName + \") is missing its phase value name (start or done are currently supported)\", sourceSpan);\n }\n };\n /**\n * @param {?} name\n * @param {?} expression\n * @param {?} sourceSpan\n * @param {?} targetMatchableAttrs\n * @param {?} targetEvents\n * @return {?}\n */\n BindingParser.prototype._parseEvent = function (name, expression, sourceSpan, targetMatchableAttrs, targetEvents) {\n // long format: 'target: eventName'\n var _a = splitAtColon(name, [null, name]), target = _a[0], eventName = _a[1];\n var /** @type {?} */ ast = this._parseAction(expression, sourceSpan);\n targetMatchableAttrs.push([name, ast.source]);\n targetEvents.push(new BoundEventAst(eventName, target, null, ast, sourceSpan));\n // Don't detect directives for event names for now,\n // so don't add the event name to the matchableAttrs\n };\n /**\n * @param {?} value\n * @param {?} sourceSpan\n * @return {?}\n */\n BindingParser.prototype._parseAction = function (value, sourceSpan) {\n var /** @type {?} */ sourceInfo = sourceSpan.start.toString();\n try {\n var /** @type {?} */ ast = this._exprParser.parseAction(value, sourceInfo, this._interpolationConfig);\n if (ast) {\n this._reportExpressionParserErrors(ast.errors, sourceSpan);\n }\n if (!ast || ast.ast instanceof EmptyExpr) {\n this._reportError(\"Empty expressions are not allowed\", sourceSpan);\n return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo);\n }\n this._checkPipes(ast, sourceSpan);\n return ast;\n }\n catch (e) {\n this._reportError(\"\" + e, sourceSpan);\n return this._exprParser.wrapLiteralPrimitive('ERROR', sourceInfo);\n }\n };\n /**\n * @param {?} message\n * @param {?} sourceSpan\n * @param {?=} level\n * @return {?}\n */\n BindingParser.prototype._reportError = function (message, sourceSpan, level) {\n if (level === void 0) { level = ParseErrorLevel.ERROR; }\n this._targetErrors.push(new ParseError(sourceSpan, message, level));\n };\n /**\n * @param {?} errors\n * @param {?} sourceSpan\n * @return {?}\n */\n BindingParser.prototype._reportExpressionParserErrors = function (errors, sourceSpan) {\n for (var _i = 0, errors_1 = errors; _i < errors_1.length; _i++) {\n var error = errors_1[_i];\n this._reportError(error.message, sourceSpan);\n }\n };\n /**\n * @param {?} ast\n * @param {?} sourceSpan\n * @return {?}\n */\n BindingParser.prototype._checkPipes = function (ast, sourceSpan) {\n var _this = this;\n if (ast) {\n var /** @type {?} */ collector = new PipeCollector();\n ast.visit(collector);\n collector.pipes.forEach(function (ast, pipeName) {\n var /** @type {?} */ pipeMeta = _this.pipesByName.get(pipeName);\n if (!pipeMeta) {\n _this._reportError(\"The pipe '\" + pipeName + \"' could not be found\", new ParseSourceSpan(sourceSpan.start.moveBy(ast.span.start), sourceSpan.start.moveBy(ast.span.end)));\n }\n else {\n _this._usedPipes.set(pipeName, pipeMeta);\n }\n });\n }\n };\n /**\n * @param {?} propName the name of the property / attribute\n * @param {?} sourceSpan\n * @param {?} isAttr true when binding to an attribute\n * @return {?}\n */\n BindingParser.prototype._validatePropertyOrAttributeName = function (propName, sourceSpan, isAttr) {\n var /** @type {?} */ report = isAttr ? this._schemaRegistry.validateAttribute(propName) :\n this._schemaRegistry.validateProperty(propName);\n if (report.error) {\n this._reportError(report.msg, sourceSpan, ParseErrorLevel.ERROR);\n }\n };\n return BindingParser;\n}());\nvar PipeCollector = (function (_super) {\n __extends(PipeCollector, _super);\n function PipeCollector() {\n var _this = _super.apply(this, arguments) || this;\n _this.pipes = new Map();\n return _this;\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n PipeCollector.prototype.visitPipe = function (ast, context) {\n this.pipes.set(ast.name, ast);\n ast.exp.visit(this);\n this.visitAll(ast.args, context);\n return null;\n };\n return PipeCollector;\n}(RecursiveAstVisitor));\n/**\n * @param {?} name\n * @return {?}\n */\nfunction _isAnimationLabel(name) {\n return name[0] == '@';\n}\n/**\n * @param {?} registry\n * @param {?} selector\n * @param {?} propName\n * @param {?} isAttribute\n * @return {?}\n */\nfunction calcPossibleSecurityContexts(registry, selector, propName, isAttribute) {\n var /** @type {?} */ ctxs = [];\n CssSelector.parse(selector).forEach(function (selector) {\n var /** @type {?} */ elementNames = selector.element ? [selector.element] : registry.allKnownElementNames();\n var /** @type {?} */ notElementNames = new Set(selector.notSelectors.filter(function (selector) { return selector.isElementSelector(); })\n .map(function (selector) { return selector.element; }));\n var /** @type {?} */ possibleElementNames = elementNames.filter(function (elementName) { return !notElementNames.has(elementName); });\n ctxs.push.apply(ctxs, possibleElementNames.map(function (elementName) { return registry.securityContext(elementName, propName, isAttribute); }));\n });\n return ctxs.length === 0 ? [SecurityContext.NONE] : Array.from(new Set(ctxs)).sort();\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 */\nvar NG_CONTENT_SELECT_ATTR = 'select';\nvar NG_CONTENT_ELEMENT = 'ng-content';\nvar LINK_ELEMENT = 'link';\nvar LINK_STYLE_REL_ATTR = 'rel';\nvar LINK_STYLE_HREF_ATTR = 'href';\nvar LINK_STYLE_REL_VALUE = 'stylesheet';\nvar STYLE_ELEMENT = 'style';\nvar SCRIPT_ELEMENT = 'script';\nvar NG_NON_BINDABLE_ATTR = 'ngNonBindable';\nvar NG_PROJECT_AS = 'ngProjectAs';\n/**\n * @param {?} ast\n * @return {?}\n */\nfunction preparseElement(ast) {\n var /** @type {?} */ selectAttr = null;\n var /** @type {?} */ hrefAttr = null;\n var /** @type {?} */ relAttr = null;\n var /** @type {?} */ nonBindable = false;\n var /** @type {?} */ projectAs = null;\n ast.attrs.forEach(function (attr) {\n var /** @type {?} */ lcAttrName = attr.name.toLowerCase();\n if (lcAttrName == NG_CONTENT_SELECT_ATTR) {\n selectAttr = attr.value;\n }\n else if (lcAttrName == LINK_STYLE_HREF_ATTR) {\n hrefAttr = attr.value;\n }\n else if (lcAttrName == LINK_STYLE_REL_ATTR) {\n relAttr = attr.value;\n }\n else if (attr.name == NG_NON_BINDABLE_ATTR) {\n nonBindable = true;\n }\n else if (attr.name == NG_PROJECT_AS) {\n if (attr.value.length > 0) {\n projectAs = attr.value;\n }\n }\n });\n selectAttr = normalizeNgContentSelect(selectAttr);\n var /** @type {?} */ nodeName = ast.name.toLowerCase();\n var /** @type {?} */ type = PreparsedElementType.OTHER;\n if (splitNsName(nodeName)[1] == NG_CONTENT_ELEMENT) {\n type = PreparsedElementType.NG_CONTENT;\n }\n else if (nodeName == STYLE_ELEMENT) {\n type = PreparsedElementType.STYLE;\n }\n else if (nodeName == SCRIPT_ELEMENT) {\n type = PreparsedElementType.SCRIPT;\n }\n else if (nodeName == LINK_ELEMENT && relAttr == LINK_STYLE_REL_VALUE) {\n type = PreparsedElementType.STYLESHEET;\n }\n return new PreparsedElement(type, selectAttr, hrefAttr, nonBindable, projectAs);\n}\nvar PreparsedElementType = {};\nPreparsedElementType.NG_CONTENT = 0;\nPreparsedElementType.STYLE = 1;\nPreparsedElementType.STYLESHEET = 2;\nPreparsedElementType.SCRIPT = 3;\nPreparsedElementType.OTHER = 4;\nPreparsedElementType[PreparsedElementType.NG_CONTENT] = \"NG_CONTENT\";\nPreparsedElementType[PreparsedElementType.STYLE] = \"STYLE\";\nPreparsedElementType[PreparsedElementType.STYLESHEET] = \"STYLESHEET\";\nPreparsedElementType[PreparsedElementType.SCRIPT] = \"SCRIPT\";\nPreparsedElementType[PreparsedElementType.OTHER] = \"OTHER\";\nvar PreparsedElement = (function () {\n /**\n * @param {?} type\n * @param {?} selectAttr\n * @param {?} hrefAttr\n * @param {?} nonBindable\n * @param {?} projectAs\n */\n function PreparsedElement(type, selectAttr, hrefAttr, nonBindable, projectAs) {\n this.type = type;\n this.selectAttr = selectAttr;\n this.hrefAttr = hrefAttr;\n this.nonBindable = nonBindable;\n this.projectAs = projectAs;\n }\n return PreparsedElement;\n}());\n/**\n * @param {?} selectAttr\n * @return {?}\n */\nfunction normalizeNgContentSelect(selectAttr) {\n if (selectAttr === null || selectAttr.length === 0) {\n return '*';\n }\n return selectAttr;\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 */\nvar BIND_NAME_REGEXP = /^(?:(?:(?:(bind-)|(let-)|(ref-|#)|(on-)|(bindon-)|(@))(.+))|\\[\\(([^\\)]+)\\)\\]|\\[([^\\]]+)\\]|\\(([^\\)]+)\\))$/;\n// Group 1 = \"bind-\"\nvar KW_BIND_IDX = 1;\n// Group 2 = \"let-\"\nvar KW_LET_IDX = 2;\n// Group 3 = \"ref-/#\"\nvar KW_REF_IDX = 3;\n// Group 4 = \"on-\"\nvar KW_ON_IDX = 4;\n// Group 5 = \"bindon-\"\nvar KW_BINDON_IDX = 5;\n// Group 6 = \"@\"\nvar KW_AT_IDX = 6;\n// Group 7 = the identifier after \"bind-\", \"let-\", \"ref-/#\", \"on-\", \"bindon-\" or \"@\"\nvar IDENT_KW_IDX = 7;\n// Group 8 = identifier inside [()]\nvar IDENT_BANANA_BOX_IDX = 8;\n// Group 9 = identifier inside []\nvar IDENT_PROPERTY_IDX = 9;\n// Group 10 = identifier inside ()\nvar IDENT_EVENT_IDX = 10;\nvar NG_TEMPLATE_ELEMENT = 'ng-template';\n// deprecated in 4.x\nvar TEMPLATE_ELEMENT = 'template';\n// deprecated in 4.x\nvar TEMPLATE_ATTR = 'template';\nvar TEMPLATE_ATTR_PREFIX = '*';\nvar CLASS_ATTR = 'class';\nvar TEXT_CSS_SELECTOR = CssSelector.parse('*')[0];\nvar TEMPLATE_ELEMENT_DEPRECATION_WARNING = 'The <template> element is deprecated. Use <ng-template> instead';\nvar TEMPLATE_ATTR_DEPRECATION_WARNING = 'The template attribute is deprecated. Use an ng-template element instead.';\nvar warningCounts = {};\n/**\n * @param {?} warnings\n * @return {?}\n */\nfunction warnOnlyOnce(warnings) {\n return function (error) {\n if (warnings.indexOf(error.msg) !== -1) {\n warningCounts[error.msg] = (warningCounts[error.msg] || 0) + 1;\n return warningCounts[error.msg] <= 1;\n }\n return true;\n };\n}\n/**\n * Provides an array of {@link TemplateAstVisitor}s which will be used to transform\n * parsed templates before compilation is invoked, allowing custom expression syntax\n * and other advanced transformations.\n *\n * This is currently an internal-only feature and not meant for general use.\n */\nvar TEMPLATE_TRANSFORMS = new InjectionToken('TemplateTransforms');\nvar TemplateParseError = (function (_super) {\n __extends(TemplateParseError, _super);\n /**\n * @param {?} message\n * @param {?} span\n * @param {?} level\n */\n function TemplateParseError(message, span, level) {\n return _super.call(this, span, message, level) || this;\n }\n return TemplateParseError;\n}(ParseError));\nvar TemplateParseResult = (function () {\n /**\n * @param {?=} templateAst\n * @param {?=} usedPipes\n * @param {?=} errors\n */\n function TemplateParseResult(templateAst, usedPipes, errors) {\n this.templateAst = templateAst;\n this.usedPipes = usedPipes;\n this.errors = errors;\n }\n return TemplateParseResult;\n}());\nvar TemplateParser = (function () {\n /**\n * @param {?} _config\n * @param {?} _exprParser\n * @param {?} _schemaRegistry\n * @param {?} _htmlParser\n * @param {?} _console\n * @param {?} transforms\n */\n function TemplateParser(_config, _exprParser, _schemaRegistry, _htmlParser, _console, transforms) {\n this._config = _config;\n this._exprParser = _exprParser;\n this._schemaRegistry = _schemaRegistry;\n this._htmlParser = _htmlParser;\n this._console = _console;\n this.transforms = transforms;\n }\n /**\n * @param {?} component\n * @param {?} template\n * @param {?} directives\n * @param {?} pipes\n * @param {?} schemas\n * @param {?} templateUrl\n * @return {?}\n */\n TemplateParser.prototype.parse = function (component, template, directives, pipes, schemas, templateUrl) {\n var /** @type {?} */ result = this.tryParse(component, template, directives, pipes, schemas, templateUrl);\n var /** @type {?} */ warnings = result.errors.filter(function (error) { return error.level === ParseErrorLevel.WARNING; }).filter(warnOnlyOnce([\n TEMPLATE_ATTR_DEPRECATION_WARNING, TEMPLATE_ELEMENT_DEPRECATION_WARNING\n ]));\n var /** @type {?} */ errors = result.errors.filter(function (error) { return error.level === ParseErrorLevel.ERROR; });\n if (warnings.length > 0) {\n this._console.warn(\"Template parse warnings:\\n\" + warnings.join('\\n'));\n }\n if (errors.length > 0) {\n var /** @type {?} */ errorString = errors.join('\\n');\n throw syntaxError(\"Template parse errors:\\n\" + errorString);\n }\n return { template: result.templateAst, pipes: result.usedPipes };\n };\n /**\n * @param {?} component\n * @param {?} template\n * @param {?} directives\n * @param {?} pipes\n * @param {?} schemas\n * @param {?} templateUrl\n * @return {?}\n */\n TemplateParser.prototype.tryParse = function (component, template, directives, pipes, schemas, templateUrl) {\n return this.tryParseHtml(this.expandHtml(this._htmlParser.parse(template, templateUrl, true, this.getInterpolationConfig(component))), component, directives, pipes, schemas);\n };\n /**\n * @param {?} htmlAstWithErrors\n * @param {?} component\n * @param {?} directives\n * @param {?} pipes\n * @param {?} schemas\n * @return {?}\n */\n TemplateParser.prototype.tryParseHtml = function (htmlAstWithErrors, component, directives, pipes, schemas) {\n var /** @type {?} */ result;\n var /** @type {?} */ errors = htmlAstWithErrors.errors;\n var /** @type {?} */ usedPipes = [];\n if (htmlAstWithErrors.rootNodes.length > 0) {\n var /** @type {?} */ uniqDirectives = removeSummaryDuplicates(directives);\n var /** @type {?} */ uniqPipes = removeSummaryDuplicates(pipes);\n var /** @type {?} */ providerViewContext = new ProviderViewContext(component);\n var /** @type {?} */ interpolationConfig = void 0;\n if (component.template && component.template.interpolation) {\n interpolationConfig = {\n start: component.template.interpolation[0],\n end: component.template.interpolation[1]\n };\n }\n var /** @type {?} */ bindingParser = new BindingParser(this._exprParser, interpolationConfig, this._schemaRegistry, uniqPipes, errors);\n var /** @type {?} */ parseVisitor = new TemplateParseVisitor(this._config, providerViewContext, uniqDirectives, bindingParser, this._schemaRegistry, schemas, errors);\n result = visitAll(parseVisitor, htmlAstWithErrors.rootNodes, EMPTY_ELEMENT_CONTEXT);\n errors.push.apply(errors, providerViewContext.errors);\n usedPipes.push.apply(usedPipes, bindingParser.getUsedPipes());\n }\n else {\n result = [];\n }\n this._assertNoReferenceDuplicationOnTemplate(result, errors);\n if (errors.length > 0) {\n return new TemplateParseResult(result, usedPipes, errors);\n }\n if (this.transforms) {\n this.transforms.forEach(function (transform) { result = templateVisitAll(transform, result); });\n }\n return new TemplateParseResult(result, usedPipes, errors);\n };\n /**\n * @param {?} htmlAstWithErrors\n * @param {?=} forced\n * @return {?}\n */\n TemplateParser.prototype.expandHtml = function (htmlAstWithErrors, forced) {\n if (forced === void 0) { forced = false; }\n var /** @type {?} */ errors = htmlAstWithErrors.errors;\n if (errors.length == 0 || forced) {\n // Transform ICU messages to angular directives\n var /** @type {?} */ expandedHtmlAst = expandNodes(htmlAstWithErrors.rootNodes);\n errors.push.apply(errors, expandedHtmlAst.errors);\n htmlAstWithErrors = new ParseTreeResult(expandedHtmlAst.nodes, errors);\n }\n return htmlAstWithErrors;\n };\n /**\n * @param {?} component\n * @return {?}\n */\n TemplateParser.prototype.getInterpolationConfig = function (component) {\n if (component.template) {\n return InterpolationConfig.fromArray(component.template.interpolation);\n }\n };\n /**\n * \\@internal\n * @param {?} result\n * @param {?} errors\n * @return {?}\n */\n TemplateParser.prototype._assertNoReferenceDuplicationOnTemplate = function (result, errors) {\n var /** @type {?} */ existingReferences = [];\n result.filter(function (element) { return !!((element)).references; })\n .forEach(function (element) { return ((element)).references.forEach(function (reference) {\n var /** @type {?} */ name = reference.name;\n if (existingReferences.indexOf(name) < 0) {\n existingReferences.push(name);\n }\n else {\n var /** @type {?} */ error = new TemplateParseError(\"Reference \\\"#\" + name + \"\\\" is defined several times\", reference.sourceSpan, ParseErrorLevel.ERROR);\n errors.push(error);\n }\n }); });\n };\n return TemplateParser;\n}());\nTemplateParser.decorators = [\n { type: CompilerInjectable },\n];\n/**\n * @nocollapse\n */\nTemplateParser.ctorParameters = function () { return [\n { type: CompilerConfig, },\n { type: Parser, },\n { type: ElementSchemaRegistry, },\n { type: I18NHtmlParser, },\n { type: ɵConsole, },\n { type: Array, decorators: [{ type: Optional }, { type: Inject, args: [TEMPLATE_TRANSFORMS,] },] },\n]; };\nvar TemplateParseVisitor = (function () {\n /**\n * @param {?} config\n * @param {?} providerViewContext\n * @param {?} directives\n * @param {?} _bindingParser\n * @param {?} _schemaRegistry\n * @param {?} _schemas\n * @param {?} _targetErrors\n */\n function TemplateParseVisitor(config, providerViewContext, directives, _bindingParser, _schemaRegistry, _schemas, _targetErrors) {\n var _this = this;\n this.config = config;\n this.providerViewContext = providerViewContext;\n this._bindingParser = _bindingParser;\n this._schemaRegistry = _schemaRegistry;\n this._schemas = _schemas;\n this._targetErrors = _targetErrors;\n this.selectorMatcher = new SelectorMatcher();\n this.directivesIndex = new Map();\n this.ngContentCount = 0;\n // Note: queries start with id 1 so we can use the number in a Bloom filter!\n this.contentQueryStartId = providerViewContext.component.viewQueries.length + 1;\n directives.forEach(function (directive, index) {\n var selector = CssSelector.parse(directive.selector);\n _this.selectorMatcher.addSelectables(selector, directive);\n _this.directivesIndex.set(directive, index);\n });\n }\n /**\n * @param {?} expansion\n * @param {?} context\n * @return {?}\n */\n TemplateParseVisitor.prototype.visitExpansion = function (expansion, context) { return null; };\n /**\n * @param {?} expansionCase\n * @param {?} context\n * @return {?}\n */\n TemplateParseVisitor.prototype.visitExpansionCase = function (expansionCase, context) { return null; };\n /**\n * @param {?} text\n * @param {?} parent\n * @return {?}\n */\n TemplateParseVisitor.prototype.visitText = function (text, parent) {\n var /** @type {?} */ ngContentIndex = parent.findNgContentIndex(TEXT_CSS_SELECTOR);\n var /** @type {?} */ expr = this._bindingParser.parseInterpolation(text.value, text.sourceSpan);\n return expr ? new BoundTextAst(expr, ngContentIndex, text.sourceSpan) :\n new TextAst(text.value, ngContentIndex, text.sourceSpan);\n };\n /**\n * @param {?} attribute\n * @param {?} context\n * @return {?}\n */\n TemplateParseVisitor.prototype.visitAttribute = function (attribute, context) {\n return new AttrAst(attribute.name, attribute.value, attribute.sourceSpan);\n };\n /**\n * @param {?} comment\n * @param {?} context\n * @return {?}\n */\n TemplateParseVisitor.prototype.visitComment = function (comment, context) { return null; };\n /**\n * @param {?} element\n * @param {?} parent\n * @return {?}\n */\n TemplateParseVisitor.prototype.visitElement = function (element, parent) {\n var _this = this;\n var /** @type {?} */ queryStartIndex = this.contentQueryStartId;\n var /** @type {?} */ nodeName = element.name;\n var /** @type {?} */ preparsedElement = preparseElement(element);\n if (preparsedElement.type === PreparsedElementType.SCRIPT ||\n preparsedElement.type === PreparsedElementType.STYLE) {\n // Skipping <script> for security reasons\n // Skipping <style> as we already processed them\n // in the StyleCompiler\n return null;\n }\n if (preparsedElement.type === PreparsedElementType.STYLESHEET &&\n isStyleUrlResolvable(preparsedElement.hrefAttr)) {\n // Skipping stylesheets with either relative urls or package scheme as we already processed\n // them in the StyleCompiler\n return null;\n }\n var /** @type {?} */ matchableAttrs = [];\n var /** @type {?} */ elementOrDirectiveProps = [];\n var /** @type {?} */ elementOrDirectiveRefs = [];\n var /** @type {?} */ elementVars = [];\n var /** @type {?} */ events = [];\n var /** @type {?} */ templateElementOrDirectiveProps = [];\n var /** @type {?} */ templateMatchableAttrs = [];\n var /** @type {?} */ templateElementVars = [];\n var /** @type {?} */ hasInlineTemplates = false;\n var /** @type {?} */ attrs = [];\n var /** @type {?} */ isTemplateElement = isTemplate(element, this.config.enableLegacyTemplate, function (m, span) { return _this._reportError(m, span, ParseErrorLevel.WARNING); });\n element.attrs.forEach(function (attr) {\n var /** @type {?} */ hasBinding = _this._parseAttr(isTemplateElement, attr, matchableAttrs, elementOrDirectiveProps, events, elementOrDirectiveRefs, elementVars);\n var /** @type {?} */ templateBindingsSource;\n var /** @type {?} */ prefixToken;\n var /** @type {?} */ normalizedName = _this._normalizeAttributeName(attr.name);\n if (_this.config.enableLegacyTemplate && normalizedName == TEMPLATE_ATTR) {\n _this._reportError(TEMPLATE_ATTR_DEPRECATION_WARNING, attr.sourceSpan, ParseErrorLevel.WARNING);\n templateBindingsSource = attr.value;\n }\n else if (normalizedName.startsWith(TEMPLATE_ATTR_PREFIX)) {\n templateBindingsSource = attr.value;\n prefixToken = normalizedName.substring(TEMPLATE_ATTR_PREFIX.length) + ':';\n }\n var /** @type {?} */ hasTemplateBinding = templateBindingsSource != null;\n if (hasTemplateBinding) {\n if (hasInlineTemplates) {\n _this._reportError(\"Can't have multiple template bindings on one element. Use only one attribute named 'template' or prefixed with *\", attr.sourceSpan);\n }\n hasInlineTemplates = true;\n _this._bindingParser.parseInlineTemplateBinding(prefixToken, templateBindingsSource, attr.sourceSpan, templateMatchableAttrs, templateElementOrDirectiveProps, templateElementVars);\n }\n if (!hasBinding && !hasTemplateBinding) {\n // don't include the bindings as attributes as well in the AST\n attrs.push(_this.visitAttribute(attr, null));\n matchableAttrs.push([attr.name, attr.value]);\n }\n });\n var /** @type {?} */ elementCssSelector = createElementCssSelector(nodeName, matchableAttrs);\n var _a = this._parseDirectives(this.selectorMatcher, elementCssSelector), directiveMetas = _a.directives, matchElement = _a.matchElement;\n var /** @type {?} */ references = [];\n var /** @type {?} */ boundDirectivePropNames = new Set();\n var /** @type {?} */ directiveAsts = this._createDirectiveAsts(isTemplateElement, element.name, directiveMetas, elementOrDirectiveProps, elementOrDirectiveRefs, element.sourceSpan, references, boundDirectivePropNames);\n var /** @type {?} */ elementProps = this._createElementPropertyAsts(element.name, elementOrDirectiveProps, boundDirectivePropNames);\n var /** @type {?} */ isViewRoot = parent.isTemplateElement || hasInlineTemplates;\n var /** @type {?} */ providerContext = new ProviderElementContext(this.providerViewContext, parent.providerContext, isViewRoot, directiveAsts, attrs, references, isTemplateElement, queryStartIndex, element.sourceSpan);\n var /** @type {?} */ children = visitAll(preparsedElement.nonBindable ? NON_BINDABLE_VISITOR : this, element.children, ElementContext.create(isTemplateElement, directiveAsts, isTemplateElement ? parent.providerContext : providerContext));\n providerContext.afterElement();\n // Override the actual selector when the `ngProjectAs` attribute is provided\n var /** @type {?} */ projectionSelector = preparsedElement.projectAs != null ?\n CssSelector.parse(preparsedElement.projectAs)[0] :\n elementCssSelector;\n var /** @type {?} */ ngContentIndex = parent.findNgContentIndex(projectionSelector);\n var /** @type {?} */ parsedElement;\n if (preparsedElement.type === PreparsedElementType.NG_CONTENT) {\n if (element.children && !element.children.every(_isEmptyTextNode)) {\n this._reportError(\"<ng-content> element cannot have content.\", element.sourceSpan);\n }\n parsedElement = new NgContentAst(this.ngContentCount++, hasInlineTemplates ? null : ngContentIndex, element.sourceSpan);\n }\n else if (isTemplateElement) {\n this._assertAllEventsPublishedByDirectives(directiveAsts, events);\n this._assertNoComponentsNorElementBindingsOnTemplate(directiveAsts, elementProps, element.sourceSpan);\n parsedElement = new EmbeddedTemplateAst(attrs, events, references, elementVars, providerContext.transformedDirectiveAsts, providerContext.transformProviders, providerContext.transformedHasViewContainer, providerContext.queryMatches, children, hasInlineTemplates ? null : ngContentIndex, element.sourceSpan);\n }\n else {\n this._assertElementExists(matchElement, element);\n this._assertOnlyOneComponent(directiveAsts, element.sourceSpan);\n var /** @type {?} */ ngContentIndex_1 = hasInlineTemplates ? null : parent.findNgContentIndex(projectionSelector);\n parsedElement = new ElementAst(nodeName, attrs, elementProps, events, references, providerContext.transformedDirectiveAsts, providerContext.transformProviders, providerContext.transformedHasViewContainer, providerContext.queryMatches, children, hasInlineTemplates ? null : ngContentIndex_1, element.sourceSpan, element.endSourceSpan);\n }\n if (hasInlineTemplates) {\n var /** @type {?} */ templateQueryStartIndex = this.contentQueryStartId;\n var /** @type {?} */ templateSelector = createElementCssSelector(TEMPLATE_ELEMENT, templateMatchableAttrs);\n var templateDirectiveMetas = this._parseDirectives(this.selectorMatcher, templateSelector).directives;\n var /** @type {?} */ templateBoundDirectivePropNames = new Set();\n var /** @type {?} */ templateDirectiveAsts = this._createDirectiveAsts(true, element.name, templateDirectiveMetas, templateElementOrDirectiveProps, [], element.sourceSpan, [], templateBoundDirectivePropNames);\n var /** @type {?} */ templateElementProps = this._createElementPropertyAsts(element.name, templateElementOrDirectiveProps, templateBoundDirectivePropNames);\n this._assertNoComponentsNorElementBindingsOnTemplate(templateDirectiveAsts, templateElementProps, element.sourceSpan);\n var /** @type {?} */ templateProviderContext = new ProviderElementContext(this.providerViewContext, parent.providerContext, parent.isTemplateElement, templateDirectiveAsts, [], [], true, templateQueryStartIndex, element.sourceSpan);\n templateProviderContext.afterElement();\n parsedElement = new EmbeddedTemplateAst([], [], [], templateElementVars, templateProviderContext.transformedDirectiveAsts, templateProviderContext.transformProviders, templateProviderContext.transformedHasViewContainer, templateProviderContext.queryMatches, [parsedElement], ngContentIndex, element.sourceSpan);\n }\n return parsedElement;\n };\n /**\n * @param {?} isTemplateElement\n * @param {?} attr\n * @param {?} targetMatchableAttrs\n * @param {?} targetProps\n * @param {?} targetEvents\n * @param {?} targetRefs\n * @param {?} targetVars\n * @return {?}\n */\n TemplateParseVisitor.prototype._parseAttr = function (isTemplateElement, attr, targetMatchableAttrs, targetProps, targetEvents, targetRefs, targetVars) {\n var /** @type {?} */ name = this._normalizeAttributeName(attr.name);\n var /** @type {?} */ value = attr.value;\n var /** @type {?} */ srcSpan = attr.sourceSpan;\n var /** @type {?} */ bindParts = name.match(BIND_NAME_REGEXP);\n var /** @type {?} */ hasBinding = false;\n if (bindParts !== null) {\n hasBinding = true;\n if (bindParts[KW_BIND_IDX] != null) {\n this._bindingParser.parsePropertyBinding(bindParts[IDENT_KW_IDX], value, false, srcSpan, targetMatchableAttrs, targetProps);\n }\n else if (bindParts[KW_LET_IDX]) {\n if (isTemplateElement) {\n var /** @type {?} */ identifier = bindParts[IDENT_KW_IDX];\n this._parseVariable(identifier, value, srcSpan, targetVars);\n }\n else {\n this._reportError(\"\\\"let-\\\" is only supported on template elements.\", srcSpan);\n }\n }\n else if (bindParts[KW_REF_IDX]) {\n var /** @type {?} */ identifier = bindParts[IDENT_KW_IDX];\n this._parseReference(identifier, value, srcSpan, targetRefs);\n }\n else if (bindParts[KW_ON_IDX]) {\n this._bindingParser.parseEvent(bindParts[IDENT_KW_IDX], value, srcSpan, targetMatchableAttrs, targetEvents);\n }\n else if (bindParts[KW_BINDON_IDX]) {\n this._bindingParser.parsePropertyBinding(bindParts[IDENT_KW_IDX], value, false, srcSpan, targetMatchableAttrs, targetProps);\n this._parseAssignmentEvent(bindParts[IDENT_KW_IDX], value, srcSpan, targetMatchableAttrs, targetEvents);\n }\n else if (bindParts[KW_AT_IDX]) {\n this._bindingParser.parseLiteralAttr(name, value, srcSpan, targetMatchableAttrs, targetProps);\n }\n else if (bindParts[IDENT_BANANA_BOX_IDX]) {\n this._bindingParser.parsePropertyBinding(bindParts[IDENT_BANANA_BOX_IDX], value, false, srcSpan, targetMatchableAttrs, targetProps);\n this._parseAssignmentEvent(bindParts[IDENT_BANANA_BOX_IDX], value, srcSpan, targetMatchableAttrs, targetEvents);\n }\n else if (bindParts[IDENT_PROPERTY_IDX]) {\n this._bindingParser.parsePropertyBinding(bindParts[IDENT_PROPERTY_IDX], value, false, srcSpan, targetMatchableAttrs, targetProps);\n }\n else if (bindParts[IDENT_EVENT_IDX]) {\n this._bindingParser.parseEvent(bindParts[IDENT_EVENT_IDX], value, srcSpan, targetMatchableAttrs, targetEvents);\n }\n }\n else {\n hasBinding = this._bindingParser.parsePropertyInterpolation(name, value, srcSpan, targetMatchableAttrs, targetProps);\n }\n if (!hasBinding) {\n this._bindingParser.parseLiteralAttr(name, value, srcSpan, targetMatchableAttrs, targetProps);\n }\n return hasBinding;\n };\n /**\n * @param {?} attrName\n * @return {?}\n */\n TemplateParseVisitor.prototype._normalizeAttributeName = function (attrName) {\n return /^data-/i.test(attrName) ? attrName.substring(5) : attrName;\n };\n /**\n * @param {?} identifier\n * @param {?} value\n * @param {?} sourceSpan\n * @param {?} targetVars\n * @return {?}\n */\n TemplateParseVisitor.prototype._parseVariable = function (identifier, value, sourceSpan, targetVars) {\n if (identifier.indexOf('-') > -1) {\n this._reportError(\"\\\"-\\\" is not allowed in variable names\", sourceSpan);\n }\n targetVars.push(new VariableAst(identifier, value, sourceSpan));\n };\n /**\n * @param {?} identifier\n * @param {?} value\n * @param {?} sourceSpan\n * @param {?} targetRefs\n * @return {?}\n */\n TemplateParseVisitor.prototype._parseReference = function (identifier, value, sourceSpan, targetRefs) {\n if (identifier.indexOf('-') > -1) {\n this._reportError(\"\\\"-\\\" is not allowed in reference names\", sourceSpan);\n }\n targetRefs.push(new ElementOrDirectiveRef(identifier, value, sourceSpan));\n };\n /**\n * @param {?} name\n * @param {?} expression\n * @param {?} sourceSpan\n * @param {?} targetMatchableAttrs\n * @param {?} targetEvents\n * @return {?}\n */\n TemplateParseVisitor.prototype._parseAssignmentEvent = function (name, expression, sourceSpan, targetMatchableAttrs, targetEvents) {\n this._bindingParser.parseEvent(name + \"Change\", expression + \"=$event\", sourceSpan, targetMatchableAttrs, targetEvents);\n };\n /**\n * @param {?} selectorMatcher\n * @param {?} elementCssSelector\n * @return {?}\n */\n TemplateParseVisitor.prototype._parseDirectives = function (selectorMatcher, elementCssSelector) {\n var _this = this;\n // Need to sort the directives so that we get consistent results throughout,\n // as selectorMatcher uses Maps inside.\n // Also deduplicate directives as they might match more than one time!\n var /** @type {?} */ directives = new Array(this.directivesIndex.size);\n // Whether any directive selector matches on the element name\n var /** @type {?} */ matchElement = false;\n selectorMatcher.match(elementCssSelector, function (selector, directive) {\n directives[_this.directivesIndex.get(directive)] = directive;\n matchElement = matchElement || selector.hasElementSelector();\n });\n return {\n directives: directives.filter(function (dir) { return !!dir; }),\n matchElement: matchElement,\n };\n };\n /**\n * @param {?} isTemplateElement\n * @param {?} elementName\n * @param {?} directives\n * @param {?} props\n * @param {?} elementOrDirectiveRefs\n * @param {?} elementSourceSpan\n * @param {?} targetReferences\n * @param {?} targetBoundDirectivePropNames\n * @return {?}\n */\n TemplateParseVisitor.prototype._createDirectiveAsts = function (isTemplateElement, elementName, directives, props, elementOrDirectiveRefs, elementSourceSpan, targetReferences, targetBoundDirectivePropNames) {\n var _this = this;\n var /** @type {?} */ matchedReferences = new Set();\n var /** @type {?} */ component = null;\n var /** @type {?} */ directiveAsts = directives.map(function (directive) {\n var /** @type {?} */ sourceSpan = new ParseSourceSpan(elementSourceSpan.start, elementSourceSpan.end, \"Directive \" + identifierName(directive.type));\n if (directive.isComponent) {\n component = directive;\n }\n var /** @type {?} */ directiveProperties = [];\n var /** @type {?} */ hostProperties = _this._bindingParser.createDirectiveHostPropertyAsts(directive, elementName, sourceSpan);\n // Note: We need to check the host properties here as well,\n // as we don't know the element name in the DirectiveWrapperCompiler yet.\n hostProperties = _this._checkPropertiesInSchema(elementName, hostProperties);\n var /** @type {?} */ hostEvents = _this._bindingParser.createDirectiveHostEventAsts(directive, sourceSpan);\n _this._createDirectivePropertyAsts(directive.inputs, props, directiveProperties, targetBoundDirectivePropNames);\n elementOrDirectiveRefs.forEach(function (elOrDirRef) {\n if ((elOrDirRef.value.length === 0 && directive.isComponent) ||\n (directive.exportAs == elOrDirRef.value)) {\n targetReferences.push(new ReferenceAst(elOrDirRef.name, identifierToken(directive.type), elOrDirRef.sourceSpan));\n matchedReferences.add(elOrDirRef.name);\n }\n });\n var /** @type {?} */ contentQueryStartId = _this.contentQueryStartId;\n _this.contentQueryStartId += directive.queries.length;\n return new DirectiveAst(directive, directiveProperties, hostProperties, hostEvents, contentQueryStartId, sourceSpan);\n });\n elementOrDirectiveRefs.forEach(function (elOrDirRef) {\n if (elOrDirRef.value.length > 0) {\n if (!matchedReferences.has(elOrDirRef.name)) {\n _this._reportError(\"There is no directive with \\\"exportAs\\\" set to \\\"\" + elOrDirRef.value + \"\\\"\", elOrDirRef.sourceSpan);\n }\n }\n else if (!component) {\n var /** @type {?} */ refToken = null;\n if (isTemplateElement) {\n refToken = createIdentifierToken(Identifiers.TemplateRef);\n }\n targetReferences.push(new ReferenceAst(elOrDirRef.name, refToken, elOrDirRef.sourceSpan));\n }\n });\n return directiveAsts;\n };\n /**\n * @param {?} directiveProperties\n * @param {?} boundProps\n * @param {?} targetBoundDirectiveProps\n * @param {?} targetBoundDirectivePropNames\n * @return {?}\n */\n TemplateParseVisitor.prototype._createDirectivePropertyAsts = function (directiveProperties, boundProps, targetBoundDirectiveProps, targetBoundDirectivePropNames) {\n if (directiveProperties) {\n var /** @type {?} */ boundPropsByName_1 = new Map();\n boundProps.forEach(function (boundProp) {\n var /** @type {?} */ prevValue = boundPropsByName_1.get(boundProp.name);\n if (!prevValue || prevValue.isLiteral) {\n // give [a]=\"b\" a higher precedence than a=\"b\" on the same element\n boundPropsByName_1.set(boundProp.name, boundProp);\n }\n });\n Object.keys(directiveProperties).forEach(function (dirProp) {\n var /** @type {?} */ elProp = directiveProperties[dirProp];\n var /** @type {?} */ boundProp = boundPropsByName_1.get(elProp);\n // Bindings are optional, so this binding only needs to be set up if an expression is given.\n if (boundProp) {\n targetBoundDirectivePropNames.add(boundProp.name);\n if (!isEmptyExpression(boundProp.expression)) {\n targetBoundDirectiveProps.push(new BoundDirectivePropertyAst(dirProp, boundProp.name, boundProp.expression, boundProp.sourceSpan));\n }\n }\n });\n }\n };\n /**\n * @param {?} elementName\n * @param {?} props\n * @param {?} boundDirectivePropNames\n * @return {?}\n */\n TemplateParseVisitor.prototype._createElementPropertyAsts = function (elementName, props, boundDirectivePropNames) {\n var _this = this;\n var /** @type {?} */ boundElementProps = [];\n props.forEach(function (prop) {\n if (!prop.isLiteral && !boundDirectivePropNames.has(prop.name)) {\n boundElementProps.push(_this._bindingParser.createElementPropertyAst(elementName, prop));\n }\n });\n return this._checkPropertiesInSchema(elementName, boundElementProps);\n };\n /**\n * @param {?} directives\n * @return {?}\n */\n TemplateParseVisitor.prototype._findComponentDirectives = function (directives) {\n return directives.filter(function (directive) { return directive.directive.isComponent; });\n };\n /**\n * @param {?} directives\n * @return {?}\n */\n TemplateParseVisitor.prototype._findComponentDirectiveNames = function (directives) {\n return this._findComponentDirectives(directives)\n .map(function (directive) { return identifierName(directive.directive.type); });\n };\n /**\n * @param {?} directives\n * @param {?} sourceSpan\n * @return {?}\n */\n TemplateParseVisitor.prototype._assertOnlyOneComponent = function (directives, sourceSpan) {\n var /** @type {?} */ componentTypeNames = this._findComponentDirectiveNames(directives);\n if (componentTypeNames.length > 1) {\n this._reportError(\"More than one component matched on this element.\\n\" +\n \"Make sure that only one component's selector can match a given element.\\n\" +\n (\"Conflicting components: \" + componentTypeNames.join(',')), sourceSpan);\n }\n };\n /**\n * Make sure that non-angular tags conform to the schemas.\n *\n * Note: An element is considered an angular tag when at least one directive selector matches the\n * tag name.\n *\n * @param {?} matchElement Whether any directive has matched on the tag name\n * @param {?} element the html element\n * @return {?}\n */\n TemplateParseVisitor.prototype._assertElementExists = function (matchElement, element) {\n var /** @type {?} */ elName = element.name.replace(/^:xhtml:/, '');\n if (!matchElement && !this._schemaRegistry.hasElement(elName, this._schemas)) {\n var /** @type {?} */ errorMsg = \"'\" + elName + \"' is not a known element:\\n\";\n errorMsg +=\n \"1. If '\" + elName + \"' is an Angular component, then verify that it is part of this module.\\n\";\n if (elName.indexOf('-') > -1) {\n errorMsg +=\n \"2. If '\" + elName + \"' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.\";\n }\n else {\n errorMsg +=\n \"2. To allow any element add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component.\";\n }\n this._reportError(errorMsg, element.sourceSpan);\n }\n };\n /**\n * @param {?} directives\n * @param {?} elementProps\n * @param {?} sourceSpan\n * @return {?}\n */\n TemplateParseVisitor.prototype._assertNoComponentsNorElementBindingsOnTemplate = function (directives, elementProps, sourceSpan) {\n var _this = this;\n var /** @type {?} */ componentTypeNames = this._findComponentDirectiveNames(directives);\n if (componentTypeNames.length > 0) {\n this._reportError(\"Components on an embedded template: \" + componentTypeNames.join(','), sourceSpan);\n }\n elementProps.forEach(function (prop) {\n _this._reportError(\"Property binding \" + prop.name + \" not used by any directive on an embedded template. Make sure that the property name is spelled correctly and all directives are listed in the \\\"@NgModule.declarations\\\".\", sourceSpan);\n });\n };\n /**\n * @param {?} directives\n * @param {?} events\n * @return {?}\n */\n TemplateParseVisitor.prototype._assertAllEventsPublishedByDirectives = function (directives, events) {\n var _this = this;\n var /** @type {?} */ allDirectiveEvents = new Set();\n directives.forEach(function (directive) {\n Object.keys(directive.directive.outputs).forEach(function (k) {\n var /** @type {?} */ eventName = directive.directive.outputs[k];\n allDirectiveEvents.add(eventName);\n });\n });\n events.forEach(function (event) {\n if (event.target != null || !allDirectiveEvents.has(event.name)) {\n _this._reportError(\"Event binding \" + event.fullName + \" not emitted by any directive on an embedded template. Make sure that the event name is spelled correctly and all directives are listed in the \\\"@NgModule.declarations\\\".\", event.sourceSpan);\n }\n });\n };\n /**\n * @param {?} elementName\n * @param {?} boundProps\n * @return {?}\n */\n TemplateParseVisitor.prototype._checkPropertiesInSchema = function (elementName, boundProps) {\n var _this = this;\n // Note: We can't filter out empty expressions before this method,\n // as we still want to validate them!\n return boundProps.filter(function (boundProp) {\n if (boundProp.type === PropertyBindingType.Property &&\n !_this._schemaRegistry.hasProperty(elementName, boundProp.name, _this._schemas)) {\n var /** @type {?} */ errorMsg = \"Can't bind to '\" + boundProp.name + \"' since it isn't a known property of '\" + elementName + \"'.\";\n if (elementName.startsWith('ng-')) {\n errorMsg +=\n \"\\n1. If '\" + boundProp.name + \"' is an Angular directive, then add 'CommonModule' to the '@NgModule.imports' of this component.\" +\n \"\\n2. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component.\";\n }\n else if (elementName.indexOf('-') > -1) {\n errorMsg +=\n \"\\n1. If '\" + elementName + \"' is an Angular component and it has '\" + boundProp.name + \"' input, then verify that it is part of this module.\" +\n (\"\\n2. If '\" + elementName + \"' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.\") +\n \"\\n3. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component.\";\n }\n _this._reportError(errorMsg, boundProp.sourceSpan);\n }\n return !isEmptyExpression(boundProp.value);\n });\n };\n /**\n * @param {?} message\n * @param {?} sourceSpan\n * @param {?=} level\n * @return {?}\n */\n TemplateParseVisitor.prototype._reportError = function (message, sourceSpan, level) {\n if (level === void 0) { level = ParseErrorLevel.ERROR; }\n this._targetErrors.push(new ParseError(sourceSpan, message, level));\n };\n return TemplateParseVisitor;\n}());\nvar NonBindableVisitor = (function () {\n function NonBindableVisitor() {\n }\n /**\n * @param {?} ast\n * @param {?} parent\n * @return {?}\n */\n NonBindableVisitor.prototype.visitElement = function (ast, parent) {\n var /** @type {?} */ preparsedElement = preparseElement(ast);\n if (preparsedElement.type === PreparsedElementType.SCRIPT ||\n preparsedElement.type === PreparsedElementType.STYLE ||\n preparsedElement.type === PreparsedElementType.STYLESHEET) {\n // Skipping <script> for security reasons\n // Skipping <style> and stylesheets as we already processed them\n // in the StyleCompiler\n return null;\n }\n var /** @type {?} */ attrNameAndValues = ast.attrs.map(function (attr) { return [attr.name, attr.value]; });\n var /** @type {?} */ selector = createElementCssSelector(ast.name, attrNameAndValues);\n var /** @type {?} */ ngContentIndex = parent.findNgContentIndex(selector);\n var /** @type {?} */ children = visitAll(this, ast.children, EMPTY_ELEMENT_CONTEXT);\n return new ElementAst(ast.name, visitAll(this, ast.attrs), [], [], [], [], [], false, [], children, ngContentIndex, ast.sourceSpan, ast.endSourceSpan);\n };\n /**\n * @param {?} comment\n * @param {?} context\n * @return {?}\n */\n NonBindableVisitor.prototype.visitComment = function (comment, context) { return null; };\n /**\n * @param {?} attribute\n * @param {?} context\n * @return {?}\n */\n NonBindableVisitor.prototype.visitAttribute = function (attribute, context) {\n return new AttrAst(attribute.name, attribute.value, attribute.sourceSpan);\n };\n /**\n * @param {?} text\n * @param {?} parent\n * @return {?}\n */\n NonBindableVisitor.prototype.visitText = function (text, parent) {\n var /** @type {?} */ ngContentIndex = parent.findNgContentIndex(TEXT_CSS_SELECTOR);\n return new TextAst(text.value, ngContentIndex, text.sourceSpan);\n };\n /**\n * @param {?} expansion\n * @param {?} context\n * @return {?}\n */\n NonBindableVisitor.prototype.visitExpansion = function (expansion, context) { return expansion; };\n /**\n * @param {?} expansionCase\n * @param {?} context\n * @return {?}\n */\n NonBindableVisitor.prototype.visitExpansionCase = function (expansionCase, context) { return expansionCase; };\n return NonBindableVisitor;\n}());\nvar ElementOrDirectiveRef = (function () {\n /**\n * @param {?} name\n * @param {?} value\n * @param {?} sourceSpan\n */\n function ElementOrDirectiveRef(name, value, sourceSpan) {\n this.name = name;\n this.value = value;\n this.sourceSpan = sourceSpan;\n }\n return ElementOrDirectiveRef;\n}());\n/**\n * @param {?} classAttrValue\n * @return {?}\n */\nfunction splitClasses(classAttrValue) {\n return classAttrValue.trim().split(/\\s+/g);\n}\nvar ElementContext = (function () {\n /**\n * @param {?} isTemplateElement\n * @param {?} _ngContentIndexMatcher\n * @param {?} _wildcardNgContentIndex\n * @param {?} providerContext\n */\n function ElementContext(isTemplateElement, _ngContentIndexMatcher, _wildcardNgContentIndex, providerContext) {\n this.isTemplateElement = isTemplateElement;\n this._ngContentIndexMatcher = _ngContentIndexMatcher;\n this._wildcardNgContentIndex = _wildcardNgContentIndex;\n this.providerContext = providerContext;\n }\n /**\n * @param {?} isTemplateElement\n * @param {?} directives\n * @param {?} providerContext\n * @return {?}\n */\n ElementContext.create = function (isTemplateElement, directives, providerContext) {\n var /** @type {?} */ matcher = new SelectorMatcher();\n var /** @type {?} */ wildcardNgContentIndex = null;\n var /** @type {?} */ component = directives.find(function (directive) { return directive.directive.isComponent; });\n if (component) {\n var /** @type {?} */ ngContentSelectors = component.directive.template.ngContentSelectors;\n for (var /** @type {?} */ i = 0; i < ngContentSelectors.length; i++) {\n var /** @type {?} */ selector = ngContentSelectors[i];\n if (selector === '*') {\n wildcardNgContentIndex = i;\n }\n else {\n matcher.addSelectables(CssSelector.parse(ngContentSelectors[i]), i);\n }\n }\n }\n return new ElementContext(isTemplateElement, matcher, wildcardNgContentIndex, providerContext);\n };\n /**\n * @param {?} selector\n * @return {?}\n */\n ElementContext.prototype.findNgContentIndex = function (selector) {\n var /** @type {?} */ ngContentIndices = [];\n this._ngContentIndexMatcher.match(selector, function (selector, ngContentIndex) { ngContentIndices.push(ngContentIndex); });\n ngContentIndices.sort();\n if (this._wildcardNgContentIndex != null) {\n ngContentIndices.push(this._wildcardNgContentIndex);\n }\n return ngContentIndices.length > 0 ? ngContentIndices[0] : null;\n };\n return ElementContext;\n}());\n/**\n * @param {?} elementName\n * @param {?} attributes\n * @return {?}\n */\nfunction createElementCssSelector(elementName, attributes) {\n var /** @type {?} */ cssSelector = new CssSelector();\n var /** @type {?} */ elNameNoNs = splitNsName(elementName)[1];\n cssSelector.setElement(elNameNoNs);\n for (var /** @type {?} */ i = 0; i < attributes.length; i++) {\n var /** @type {?} */ attrName = attributes[i][0];\n var /** @type {?} */ attrNameNoNs = splitNsName(attrName)[1];\n var /** @type {?} */ attrValue = attributes[i][1];\n cssSelector.addAttribute(attrNameNoNs, attrValue);\n if (attrName.toLowerCase() == CLASS_ATTR) {\n var /** @type {?} */ classes = splitClasses(attrValue);\n classes.forEach(function (className) { return cssSelector.addClassName(className); });\n }\n }\n return cssSelector;\n}\nvar EMPTY_ELEMENT_CONTEXT = new ElementContext(true, new SelectorMatcher(), null, null);\nvar NON_BINDABLE_VISITOR = new NonBindableVisitor();\n/**\n * @param {?} node\n * @return {?}\n */\nfunction _isEmptyTextNode(node) {\n return node instanceof Text && node.value.trim().length == 0;\n}\n/**\n * @template T\n * @param {?} items\n * @return {?}\n */\nfunction removeSummaryDuplicates(items) {\n var /** @type {?} */ map = new Map();\n items.forEach(function (item) {\n if (!map.get(item.type.reference)) {\n map.set(item.type.reference, item);\n }\n });\n return Array.from(map.values());\n}\n/**\n * @param {?} ast\n * @return {?}\n */\nfunction isEmptyExpression(ast) {\n if (ast instanceof ASTWithSource) {\n ast = ast.ast;\n }\n return ast instanceof EmptyExpr;\n}\n/**\n * @param {?} el\n * @param {?} enableLegacyTemplate\n * @param {?} reportDeprecation\n * @return {?}\n */\nfunction isTemplate(el, enableLegacyTemplate, reportDeprecation) {\n var /** @type {?} */ tagNoNs = splitNsName(el.name)[1];\n // `<ng-template>` is an angular construct and is lower case\n if (tagNoNs === NG_TEMPLATE_ELEMENT)\n return true;\n // `<template>` is HTML and case insensitive\n if (tagNoNs.toLowerCase() === TEMPLATE_ELEMENT) {\n if (enableLegacyTemplate && tagNoNs.toLowerCase() === TEMPLATE_ELEMENT) {\n reportDeprecation(TEMPLATE_ELEMENT_DEPRECATION_WARNING, el.sourceSpan);\n return true;\n }\n return false;\n }\n}\n/**\n * An interface for retrieving documents by URL that the compiler uses\n * to load templates.\n */\nvar ResourceLoader = (function () {\n function ResourceLoader() {\n }\n /**\n * @param {?} url\n * @return {?}\n */\n ResourceLoader.prototype.get = function (url) { return null; };\n return ResourceLoader;\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 * Create a {\\@link UrlResolver} with no package prefix.\n * @return {?}\n */\nfunction createUrlResolverWithoutPackagePrefix() {\n return new UrlResolver();\n}\n/**\n * @return {?}\n */\nfunction createOfflineCompileUrlResolver() {\n return new UrlResolver('.');\n}\n/**\n * A default provider for {@link PACKAGE_ROOT_URL} that maps to '/'.\n */\nvar DEFAULT_PACKAGE_URL_PROVIDER = {\n provide: PACKAGE_ROOT_URL,\n useValue: '/'\n};\n/**\n * Used by the {\\@link Compiler} when resolving HTML and CSS template URLs.\n *\n * This class can be overridden by the application developer to create custom behavior.\n *\n * See {\\@link Compiler}\n *\n * ## Example\n *\n * {\\@example compiler/ts/url_resolver/url_resolver.ts region='url_resolver'}\n *\n * \\@security When compiling templates at runtime, you must\n * ensure that the entire template comes from a trusted source.\n * Attacker-controlled data introduced by a template could expose your\n * application to XSS risks. For more detail, see the [Security Guide](http://g.co/ng/security).\n */\nvar UrlResolver = (function () {\n /**\n * @param {?=} _packagePrefix\n */\n function UrlResolver(_packagePrefix) {\n if (_packagePrefix === void 0) { _packagePrefix = null; }\n this._packagePrefix = _packagePrefix;\n }\n /**\n * Resolves the `url` given the `baseUrl`:\n * - when the `url` is null, the `baseUrl` is returned,\n * - if `url` is relative ('path/to/here', './path/to/here'), the resolved url is a combination of\n * `baseUrl` and `url`,\n * - if `url` is absolute (it has a scheme: 'http://', 'https://' or start with '/'), the `url` is\n * returned as is (ignoring the `baseUrl`)\n * @param {?} baseUrl\n * @param {?} url\n * @return {?}\n */\n UrlResolver.prototype.resolve = function (baseUrl, url) {\n var /** @type {?} */ resolvedUrl = url;\n if (baseUrl != null && baseUrl.length > 0) {\n resolvedUrl = _resolveUrl(baseUrl, resolvedUrl);\n }\n var /** @type {?} */ resolvedParts = _split(resolvedUrl);\n var /** @type {?} */ prefix = this._packagePrefix;\n if (prefix != null && resolvedParts != null &&\n resolvedParts[_ComponentIndex.Scheme] == 'package') {\n var /** @type {?} */ path = resolvedParts[_ComponentIndex.Path];\n prefix = prefix.replace(/\\/+$/, '');\n path = path.replace(/^\\/+/, '');\n return prefix + \"/\" + path;\n }\n return resolvedUrl;\n };\n return UrlResolver;\n}());\nUrlResolver.decorators = [\n { type: CompilerInjectable },\n];\n/**\n * @nocollapse\n */\nUrlResolver.ctorParameters = function () { return [\n { type: undefined, decorators: [{ type: Inject, args: [PACKAGE_ROOT_URL,] },] },\n]; };\n/**\n * Extract the scheme of a URL.\n * @param {?} url\n * @return {?}\n */\nfunction getUrlScheme(url) {\n var /** @type {?} */ match = _split(url);\n return (match && match[_ComponentIndex.Scheme]) || '';\n}\n/**\n * Builds a URI string from already-encoded parts.\n *\n * No encoding is performed. Any component may be omitted as either null or\n * undefined.\n *\n * @param {?=} opt_scheme The scheme such as 'http'.\n * @param {?=} opt_userInfo The user name before the '\\@'.\n * @param {?=} opt_domain The domain such as 'www.google.com', already\n * URI-encoded.\n * @param {?=} opt_port The port number.\n * @param {?=} opt_path The path, already URI-encoded. If it is not\n * empty, it must begin with a slash.\n * @param {?=} opt_queryData The URI-encoded query data.\n * @param {?=} opt_fragment The URI-encoded fragment identifier.\n * @return {?} The fully combined URI.\n */\nfunction _buildFromEncodedParts(opt_scheme, opt_userInfo, opt_domain, opt_port, opt_path, opt_queryData, opt_fragment) {\n var /** @type {?} */ out = [];\n if (opt_scheme != null) {\n out.push(opt_scheme + ':');\n }\n if (opt_domain != null) {\n out.push('//');\n if (opt_userInfo != null) {\n out.push(opt_userInfo + '@');\n }\n out.push(opt_domain);\n if (opt_port != null) {\n out.push(':' + opt_port);\n }\n }\n if (opt_path != null) {\n out.push(opt_path);\n }\n if (opt_queryData != null) {\n out.push('?' + opt_queryData);\n }\n if (opt_fragment != null) {\n out.push('#' + opt_fragment);\n }\n return out.join('');\n}\n/**\n * A regular expression for breaking a URI into its component parts.\n *\n * {\\@link http://www.gbiv.com/protocols/uri/rfc/rfc3986.html#RFC2234} says\n * As the \"first-match-wins\" algorithm is identical to the \"greedy\"\n * disambiguation method used by POSIX regular expressions, it is natural and\n * commonplace to use a regular expression for parsing the potential five\n * components of a URI reference.\n *\n * The following line is the regular expression for breaking-down a\n * well-formed URI reference into its components.\n *\n * <pre>\n * ^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?\n * 12 3 4 5 6 7 8 9\n * </pre>\n *\n * The numbers in the second line above are only to assist readability; they\n * indicate the reference points for each subexpression (i.e., each paired\n * parenthesis). We refer to the value matched for subexpression <n> as $<n>.\n * For example, matching the above expression to\n * <pre>\n * http://www.ics.uci.edu/pub/ietf/uri/#Related\n * </pre>\n * results in the following subexpression matches:\n * <pre>\n * $1 = http:\n * $2 = http\n * $3 = //www.ics.uci.edu\n * $4 = www.ics.uci.edu\n * $5 = /pub/ietf/uri/\n * $6 = <undefined>\n * $7 = <undefined>\n * $8 = #Related\n * $9 = Related\n * </pre>\n * where <undefined> indicates that the component is not present, as is the\n * case for the query component in the above example. Therefore, we can\n * determine the value of the five components as\n * <pre>\n * scheme = $2\n * authority = $4\n * path = $5\n * query = $7\n * fragment = $9\n * </pre>\n *\n * The regular expression has been modified slightly to expose the\n * userInfo, domain, and port separately from the authority.\n * The modified version yields\n * <pre>\n * $1 = http scheme\n * $2 = <undefined> userInfo -\\\n * $3 = www.ics.uci.edu domain | authority\n * $4 = <undefined> port -/\n * $5 = /pub/ietf/uri/ path\n * $6 = <undefined> query without ?\n * $7 = Related fragment without #\n * </pre>\n * \\@internal\n */\nvar _splitRe = new RegExp('^' +\n '(?:' +\n '([^:/?#.]+)' +\n // used by other URL parts such as :,\n // ?, /, #, and .\n ':)?' +\n '(?://' +\n '(?:([^/?#]*)@)?' +\n '([\\\\w\\\\d\\\\-\\\\u0100-\\\\uffff.%]*)' +\n // digits, dashes, dots, percent\n // escapes, and unicode characters.\n '(?::([0-9]+))?' +\n ')?' +\n '([^?#]+)?' +\n '(?:\\\\?([^#]*))?' +\n '(?:#(.*))?' +\n '$');\nvar _ComponentIndex = {};\n_ComponentIndex.Scheme = 1;\n_ComponentIndex.UserInfo = 2;\n_ComponentIndex.Domain = 3;\n_ComponentIndex.Port = 4;\n_ComponentIndex.Path = 5;\n_ComponentIndex.QueryData = 6;\n_ComponentIndex.Fragment = 7;\n_ComponentIndex[_ComponentIndex.Scheme] = \"Scheme\";\n_ComponentIndex[_ComponentIndex.UserInfo] = \"UserInfo\";\n_ComponentIndex[_ComponentIndex.Domain] = \"Domain\";\n_ComponentIndex[_ComponentIndex.Port] = \"Port\";\n_ComponentIndex[_ComponentIndex.Path] = \"Path\";\n_ComponentIndex[_ComponentIndex.QueryData] = \"QueryData\";\n_ComponentIndex[_ComponentIndex.Fragment] = \"Fragment\";\n/**\n * Splits a URI into its component parts.\n *\n * Each component can be accessed via the component indices; for example:\n * <pre>\n * goog.uri.utils.split(someStr)[goog.uri.utils.CompontentIndex.QUERY_DATA];\n * </pre>\n *\n * @param {?} uri The URI string to examine.\n * @return {?} Each component still URI-encoded.\n * Each component that is present will contain the encoded value, whereas\n * components that are not present will be undefined or empty, depending\n * on the browser's regular expression implementation. Never null, since\n * arbitrary strings may still look like path names.\n */\nfunction _split(uri) {\n return uri.match(_splitRe);\n}\n/**\n * Removes dot segments in given path component, as described in\n * RFC 3986, section 5.2.4.\n *\n * @param {?} path A non-empty path component.\n * @return {?} Path component with removed dot segments.\n */\nfunction _removeDotSegments(path) {\n if (path == '/')\n return '/';\n var /** @type {?} */ leadingSlash = path[0] == '/' ? '/' : '';\n var /** @type {?} */ trailingSlash = path[path.length - 1] === '/' ? '/' : '';\n var /** @type {?} */ segments = path.split('/');\n var /** @type {?} */ out = [];\n var /** @type {?} */ up = 0;\n for (var /** @type {?} */ pos = 0; pos < segments.length; pos++) {\n var /** @type {?} */ segment = segments[pos];\n switch (segment) {\n case '':\n case '.':\n break;\n case '..':\n if (out.length > 0) {\n out.pop();\n }\n else {\n up++;\n }\n break;\n default:\n out.push(segment);\n }\n }\n if (leadingSlash == '') {\n while (up-- > 0) {\n out.unshift('..');\n }\n if (out.length === 0)\n out.push('.');\n }\n return leadingSlash + out.join('/') + trailingSlash;\n}\n/**\n * Takes an array of the parts from split and canonicalizes the path part\n * and then joins all the parts.\n * @param {?} parts\n * @return {?}\n */\nfunction _joinAndCanonicalizePath(parts) {\n var /** @type {?} */ path = parts[_ComponentIndex.Path];\n path = path == null ? '' : _removeDotSegments(path);\n parts[_ComponentIndex.Path] = path;\n return _buildFromEncodedParts(parts[_ComponentIndex.Scheme], parts[_ComponentIndex.UserInfo], parts[_ComponentIndex.Domain], parts[_ComponentIndex.Port], path, parts[_ComponentIndex.QueryData], parts[_ComponentIndex.Fragment]);\n}\n/**\n * Resolves a URL.\n * @param {?} base The URL acting as the base URL.\n * @param {?} url\n * @return {?}\n */\nfunction _resolveUrl(base, url) {\n var /** @type {?} */ parts = _split(encodeURI(url));\n var /** @type {?} */ baseParts = _split(base);\n if (parts[_ComponentIndex.Scheme] != null) {\n return _joinAndCanonicalizePath(parts);\n }\n else {\n parts[_ComponentIndex.Scheme] = baseParts[_ComponentIndex.Scheme];\n }\n for (var /** @type {?} */ i = _ComponentIndex.Scheme; i <= _ComponentIndex.Port; i++) {\n if (parts[i] == null) {\n parts[i] = baseParts[i];\n }\n }\n if (parts[_ComponentIndex.Path][0] == '/') {\n return _joinAndCanonicalizePath(parts);\n }\n var /** @type {?} */ path = baseParts[_ComponentIndex.Path];\n if (path == null)\n path = '/';\n var /** @type {?} */ index = path.lastIndexOf('/');\n path = path.substring(0, index + 1) + parts[_ComponentIndex.Path];\n parts[_ComponentIndex.Path] = path;\n return _joinAndCanonicalizePath(parts);\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 */\nvar DirectiveNormalizer = (function () {\n /**\n * @param {?} _resourceLoader\n * @param {?} _urlResolver\n * @param {?} _htmlParser\n * @param {?} _config\n */\n function DirectiveNormalizer(_resourceLoader, _urlResolver, _htmlParser, _config) {\n this._resourceLoader = _resourceLoader;\n this._urlResolver = _urlResolver;\n this._htmlParser = _htmlParser;\n this._config = _config;\n this._resourceLoaderCache = new Map();\n }\n /**\n * @return {?}\n */\n DirectiveNormalizer.prototype.clearCache = function () { this._resourceLoaderCache.clear(); };\n /**\n * @param {?} normalizedDirective\n * @return {?}\n */\n DirectiveNormalizer.prototype.clearCacheFor = function (normalizedDirective) {\n var _this = this;\n if (!normalizedDirective.isComponent) {\n return;\n }\n this._resourceLoaderCache.delete(normalizedDirective.template.templateUrl);\n normalizedDirective.template.externalStylesheets.forEach(function (stylesheet) { _this._resourceLoaderCache.delete(stylesheet.moduleUrl); });\n };\n /**\n * @param {?} url\n * @return {?}\n */\n DirectiveNormalizer.prototype._fetch = function (url) {\n var /** @type {?} */ result = this._resourceLoaderCache.get(url);\n if (!result) {\n result = this._resourceLoader.get(url);\n this._resourceLoaderCache.set(url, result);\n }\n return result;\n };\n /**\n * @param {?} prenormData\n * @return {?}\n */\n DirectiveNormalizer.prototype.normalizeTemplate = function (prenormData) {\n var _this = this;\n var /** @type {?} */ normalizedTemplateSync = null;\n var /** @type {?} */ normalizedTemplateAsync;\n if (prenormData.template != null) {\n if (prenormData.templateUrl != null) {\n throw syntaxError(\"'\" + ɵstringify(prenormData.componentType) + \"' component cannot define both template and templateUrl\");\n }\n if (typeof prenormData.template !== 'string') {\n throw syntaxError(\"The template specified for component \" + ɵstringify(prenormData.componentType) + \" is not a string\");\n }\n normalizedTemplateSync = this.normalizeTemplateSync(prenormData);\n normalizedTemplateAsync = Promise.resolve(normalizedTemplateSync);\n }\n else if (prenormData.templateUrl) {\n if (typeof prenormData.templateUrl !== 'string') {\n throw syntaxError(\"The templateUrl specified for component \" + ɵstringify(prenormData.componentType) + \" is not a string\");\n }\n normalizedTemplateAsync = this.normalizeTemplateAsync(prenormData);\n }\n else {\n throw syntaxError(\"No template specified for component \" + ɵstringify(prenormData.componentType));\n }\n if (normalizedTemplateSync && normalizedTemplateSync.styleUrls.length === 0) {\n // sync case\n return new SyncAsyncResult(normalizedTemplateSync);\n }\n else {\n // async case\n return new SyncAsyncResult(null, normalizedTemplateAsync.then(function (normalizedTemplate) { return _this.normalizeExternalStylesheets(normalizedTemplate); }));\n }\n };\n /**\n * @param {?} prenomData\n * @return {?}\n */\n DirectiveNormalizer.prototype.normalizeTemplateSync = function (prenomData) {\n return this.normalizeLoadedTemplate(prenomData, prenomData.template, prenomData.moduleUrl);\n };\n /**\n * @param {?} prenomData\n * @return {?}\n */\n DirectiveNormalizer.prototype.normalizeTemplateAsync = function (prenomData) {\n var _this = this;\n var /** @type {?} */ templateUrl = this._urlResolver.resolve(prenomData.moduleUrl, prenomData.templateUrl);\n return this._fetch(templateUrl)\n .then(function (value) { return _this.normalizeLoadedTemplate(prenomData, value, templateUrl); });\n };\n /**\n * @param {?} prenormData\n * @param {?} template\n * @param {?} templateAbsUrl\n * @return {?}\n */\n DirectiveNormalizer.prototype.normalizeLoadedTemplate = function (prenormData, template, templateAbsUrl) {\n var /** @type {?} */ isInline = !!prenormData.template;\n var /** @type {?} */ interpolationConfig = InterpolationConfig.fromArray(prenormData.interpolation);\n var /** @type {?} */ rootNodesAndErrors = this._htmlParser.parse(template, templateSourceUrl({ reference: prenormData.ngModuleType }, { type: { reference: prenormData.componentType } }, { isInline: isInline, templateUrl: templateAbsUrl }), true, interpolationConfig);\n if (rootNodesAndErrors.errors.length > 0) {\n var /** @type {?} */ errorString = rootNodesAndErrors.errors.join('\\n');\n throw syntaxError(\"Template parse errors:\\n\" + errorString);\n }\n var /** @type {?} */ templateMetadataStyles = this.normalizeStylesheet(new CompileStylesheetMetadata({\n styles: prenormData.styles,\n styleUrls: prenormData.styleUrls,\n moduleUrl: prenormData.moduleUrl\n }));\n var /** @type {?} */ visitor = new TemplatePreparseVisitor();\n visitAll(visitor, rootNodesAndErrors.rootNodes);\n var /** @type {?} */ templateStyles = this.normalizeStylesheet(new CompileStylesheetMetadata({ styles: visitor.styles, styleUrls: visitor.styleUrls, moduleUrl: templateAbsUrl }));\n var /** @type {?} */ encapsulation = prenormData.encapsulation;\n if (encapsulation == null) {\n encapsulation = this._config.defaultEncapsulation;\n }\n var /** @type {?} */ styles = templateMetadataStyles.styles.concat(templateStyles.styles);\n var /** @type {?} */ styleUrls = templateMetadataStyles.styleUrls.concat(templateStyles.styleUrls);\n if (encapsulation === ViewEncapsulation.Emulated && styles.length === 0 &&\n styleUrls.length === 0) {\n encapsulation = ViewEncapsulation.None;\n }\n return new CompileTemplateMetadata({\n encapsulation: encapsulation,\n template: template,\n templateUrl: templateAbsUrl, styles: styles, styleUrls: styleUrls,\n ngContentSelectors: visitor.ngContentSelectors,\n animations: prenormData.animations,\n interpolation: prenormData.interpolation, isInline: isInline\n });\n };\n /**\n * @param {?} templateMeta\n * @return {?}\n */\n DirectiveNormalizer.prototype.normalizeExternalStylesheets = function (templateMeta) {\n return this._loadMissingExternalStylesheets(templateMeta.styleUrls)\n .then(function (externalStylesheets) { return new CompileTemplateMetadata({\n encapsulation: templateMeta.encapsulation,\n template: templateMeta.template,\n templateUrl: templateMeta.templateUrl,\n styles: templateMeta.styles,\n styleUrls: templateMeta.styleUrls,\n externalStylesheets: externalStylesheets,\n ngContentSelectors: templateMeta.ngContentSelectors,\n animations: templateMeta.animations,\n interpolation: templateMeta.interpolation,\n isInline: templateMeta.isInline,\n }); });\n };\n /**\n * @param {?} styleUrls\n * @param {?=} loadedStylesheets\n * @return {?}\n */\n DirectiveNormalizer.prototype._loadMissingExternalStylesheets = function (styleUrls, loadedStylesheets) {\n var _this = this;\n if (loadedStylesheets === void 0) { loadedStylesheets = new Map(); }\n return Promise\n .all(styleUrls.filter(function (styleUrl) { return !loadedStylesheets.has(styleUrl); })\n .map(function (styleUrl) { return _this._fetch(styleUrl).then(function (loadedStyle) {\n var /** @type {?} */ stylesheet = _this.normalizeStylesheet(new CompileStylesheetMetadata({ styles: [loadedStyle], moduleUrl: styleUrl }));\n loadedStylesheets.set(styleUrl, stylesheet);\n return _this._loadMissingExternalStylesheets(stylesheet.styleUrls, loadedStylesheets);\n }); }))\n .then(function (_) { return Array.from(loadedStylesheets.values()); });\n };\n /**\n * @param {?} stylesheet\n * @return {?}\n */\n DirectiveNormalizer.prototype.normalizeStylesheet = function (stylesheet) {\n var _this = this;\n var /** @type {?} */ allStyleUrls = stylesheet.styleUrls.filter(isStyleUrlResolvable)\n .map(function (url) { return _this._urlResolver.resolve(stylesheet.moduleUrl, url); });\n var /** @type {?} */ allStyles = stylesheet.styles.map(function (style$$1) {\n var /** @type {?} */ styleWithImports = extractStyleUrls(_this._urlResolver, stylesheet.moduleUrl, style$$1);\n allStyleUrls.push.apply(allStyleUrls, styleWithImports.styleUrls);\n return styleWithImports.style;\n });\n return new CompileStylesheetMetadata({ styles: allStyles, styleUrls: allStyleUrls, moduleUrl: stylesheet.moduleUrl });\n };\n return DirectiveNormalizer;\n}());\nDirectiveNormalizer.decorators = [\n { type: CompilerInjectable },\n];\n/**\n * @nocollapse\n */\nDirectiveNormalizer.ctorParameters = function () { return [\n { type: ResourceLoader, },\n { type: UrlResolver, },\n { type: HtmlParser, },\n { type: CompilerConfig, },\n]; };\nvar TemplatePreparseVisitor = (function () {\n function TemplatePreparseVisitor() {\n this.ngContentSelectors = [];\n this.styles = [];\n this.styleUrls = [];\n this.ngNonBindableStackCount = 0;\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n TemplatePreparseVisitor.prototype.visitElement = function (ast, context) {\n var /** @type {?} */ preparsedElement = preparseElement(ast);\n switch (preparsedElement.type) {\n case PreparsedElementType.NG_CONTENT:\n if (this.ngNonBindableStackCount === 0) {\n this.ngContentSelectors.push(preparsedElement.selectAttr);\n }\n break;\n case PreparsedElementType.STYLE:\n var /** @type {?} */ textContent_1 = '';\n ast.children.forEach(function (child) {\n if (child instanceof Text) {\n textContent_1 += child.value;\n }\n });\n this.styles.push(textContent_1);\n break;\n case PreparsedElementType.STYLESHEET:\n this.styleUrls.push(preparsedElement.hrefAttr);\n break;\n default:\n break;\n }\n if (preparsedElement.nonBindable) {\n this.ngNonBindableStackCount++;\n }\n visitAll(this, ast.children);\n if (preparsedElement.nonBindable) {\n this.ngNonBindableStackCount--;\n }\n return null;\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n TemplatePreparseVisitor.prototype.visitExpansion = function (ast, context) { visitAll(this, ast.cases); };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n TemplatePreparseVisitor.prototype.visitExpansionCase = function (ast, context) {\n visitAll(this, ast.expression);\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n TemplatePreparseVisitor.prototype.visitComment = function (ast, context) { return null; };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n TemplatePreparseVisitor.prototype.visitAttribute = function (ast, context) { return null; };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n TemplatePreparseVisitor.prototype.visitText = function (ast, context) { return null; };\n return TemplatePreparseVisitor;\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 */\nvar __assign = (undefined && undefined.__assign) || Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s)\n if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n};\nvar DirectiveResolver = (function () {\n /**\n * @param {?=} _reflector\n */\n function DirectiveResolver(_reflector) {\n if (_reflector === void 0) { _reflector = ɵreflector; }\n this._reflector = _reflector;\n }\n /**\n * @param {?} type\n * @return {?}\n */\n DirectiveResolver.prototype.isDirective = function (type) {\n var /** @type {?} */ typeMetadata = this._reflector.annotations(resolveForwardRef(type));\n return typeMetadata && typeMetadata.some(isDirectiveMetadata);\n };\n /**\n * Return {\\@link Directive} for a given `Type`.\n * @param {?} type\n * @param {?=} throwIfNotFound\n * @return {?}\n */\n DirectiveResolver.prototype.resolve = function (type, throwIfNotFound) {\n if (throwIfNotFound === void 0) { throwIfNotFound = true; }\n var /** @type {?} */ typeMetadata = this._reflector.annotations(resolveForwardRef(type));\n if (typeMetadata) {\n var /** @type {?} */ metadata = findLast(typeMetadata, isDirectiveMetadata);\n if (metadata) {\n var /** @type {?} */ propertyMetadata = this._reflector.propMetadata(type);\n return this._mergeWithPropertyMetadata(metadata, propertyMetadata, type);\n }\n }\n if (throwIfNotFound) {\n throw new Error(\"No Directive annotation found on \" + ɵstringify(type));\n }\n return null;\n };\n /**\n * @param {?} dm\n * @param {?} propertyMetadata\n * @param {?} directiveType\n * @return {?}\n */\n DirectiveResolver.prototype._mergeWithPropertyMetadata = function (dm, propertyMetadata, directiveType) {\n var /** @type {?} */ inputs = [];\n var /** @type {?} */ outputs = [];\n var /** @type {?} */ host = {};\n var /** @type {?} */ queries = {};\n Object.keys(propertyMetadata).forEach(function (propName) {\n var /** @type {?} */ input = findLast(propertyMetadata[propName], function (a) { return a instanceof Input; });\n if (input) {\n if (input.bindingPropertyName) {\n inputs.push(propName + \": \" + input.bindingPropertyName);\n }\n else {\n inputs.push(propName);\n }\n }\n var /** @type {?} */ output = findLast(propertyMetadata[propName], function (a) { return a instanceof Output; });\n if (output) {\n if (output.bindingPropertyName) {\n outputs.push(propName + \": \" + output.bindingPropertyName);\n }\n else {\n outputs.push(propName);\n }\n }\n var /** @type {?} */ hostBindings = propertyMetadata[propName].filter(function (a) { return a && a instanceof HostBinding; });\n hostBindings.forEach(function (hostBinding) {\n if (hostBinding.hostPropertyName) {\n var /** @type {?} */ startWith = hostBinding.hostPropertyName[0];\n if (startWith === '(') {\n throw new Error(\"@HostBinding can not bind to events. Use @HostListener instead.\");\n }\n else if (startWith === '[') {\n throw new Error(\"@HostBinding parameter should be a property name, 'class.<name>', or 'attr.<name>'.\");\n }\n host[\"[\" + hostBinding.hostPropertyName + \"]\"] = propName;\n }\n else {\n host[\"[\" + propName + \"]\"] = propName;\n }\n });\n var /** @type {?} */ hostListeners = propertyMetadata[propName].filter(function (a) { return a && a instanceof HostListener; });\n hostListeners.forEach(function (hostListener) {\n var /** @type {?} */ args = hostListener.args || [];\n host[\"(\" + hostListener.eventName + \")\"] = propName + \"(\" + args.join(',') + \")\";\n });\n var /** @type {?} */ query = findLast(propertyMetadata[propName], function (a) { return a instanceof Query; });\n if (query) {\n queries[propName] = query;\n }\n });\n return this._merge(dm, inputs, outputs, host, queries, directiveType);\n };\n /**\n * @param {?} def\n * @return {?}\n */\n DirectiveResolver.prototype._extractPublicName = function (def) { return splitAtColon(def, [null, def])[1].trim(); };\n /**\n * @param {?} bindings\n * @return {?}\n */\n DirectiveResolver.prototype._dedupeBindings = function (bindings) {\n var /** @type {?} */ names = new Set();\n var /** @type {?} */ reversedResult = [];\n // go last to first to allow later entries to overwrite previous entries\n for (var /** @type {?} */ i = bindings.length - 1; i >= 0; i--) {\n var /** @type {?} */ binding = bindings[i];\n var /** @type {?} */ name = this._extractPublicName(binding);\n if (!names.has(name)) {\n names.add(name);\n reversedResult.push(binding);\n }\n }\n return reversedResult.reverse();\n };\n /**\n * @param {?} directive\n * @param {?} inputs\n * @param {?} outputs\n * @param {?} host\n * @param {?} queries\n * @param {?} directiveType\n * @return {?}\n */\n DirectiveResolver.prototype._merge = function (directive, inputs, outputs, host, queries, directiveType) {\n var /** @type {?} */ mergedInputs = this._dedupeBindings(directive.inputs ? directive.inputs.concat(inputs) : inputs);\n var /** @type {?} */ mergedOutputs = this._dedupeBindings(directive.outputs ? directive.outputs.concat(outputs) : outputs);\n var /** @type {?} */ mergedHost = directive.host ? __assign({}, directive.host, host) : host;\n var /** @type {?} */ mergedQueries = directive.queries ? __assign({}, directive.queries, queries) : queries;\n if (directive instanceof Component) {\n return new Component({\n selector: directive.selector,\n inputs: mergedInputs,\n outputs: mergedOutputs,\n host: mergedHost,\n exportAs: directive.exportAs,\n moduleId: directive.moduleId,\n queries: mergedQueries,\n changeDetection: directive.changeDetection,\n providers: directive.providers,\n viewProviders: directive.viewProviders,\n entryComponents: directive.entryComponents,\n template: directive.template,\n templateUrl: directive.templateUrl,\n styles: directive.styles,\n styleUrls: directive.styleUrls,\n encapsulation: directive.encapsulation,\n animations: directive.animations,\n interpolation: directive.interpolation\n });\n }\n else {\n return new Directive({\n selector: directive.selector,\n inputs: mergedInputs,\n outputs: mergedOutputs,\n host: mergedHost,\n exportAs: directive.exportAs,\n queries: mergedQueries,\n providers: directive.providers\n });\n }\n };\n return DirectiveResolver;\n}());\nDirectiveResolver.decorators = [\n { type: CompilerInjectable },\n];\n/**\n * @nocollapse\n */\nDirectiveResolver.ctorParameters = function () { return [\n { type: ɵReflectorReader, },\n]; };\n/**\n * @param {?} type\n * @return {?}\n */\nfunction isDirectiveMetadata(type) {\n return type instanceof Directive;\n}\n/**\n * @template T\n * @param {?} arr\n * @param {?} condition\n * @return {?}\n */\nfunction findLast(arr, condition) {\n for (var /** @type {?} */ i = arr.length - 1; i >= 0; i--) {\n if (condition(arr[i])) {\n return arr[i];\n }\n }\n return null;\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 */\nvar STRIP_SRC_FILE_SUFFIXES = /(\\.ts|\\.d\\.ts|\\.js|\\.jsx|\\.tsx)$/;\nvar NG_FACTORY = /\\.ngfactory\\./;\n/**\n * @param {?} filePath\n * @return {?}\n */\nfunction ngfactoryFilePath(filePath) {\n var /** @type {?} */ urlWithSuffix = splitTypescriptSuffix(filePath);\n return urlWithSuffix[0] + \".ngfactory\" + urlWithSuffix[1];\n}\n/**\n * @param {?} filePath\n * @return {?}\n */\nfunction stripNgFactory(filePath) {\n return filePath.replace(NG_FACTORY, '.');\n}\n/**\n * @param {?} filePath\n * @return {?}\n */\nfunction isNgFactoryFile(filePath) {\n return NG_FACTORY.test(filePath);\n}\n/**\n * @param {?} path\n * @return {?}\n */\nfunction splitTypescriptSuffix(path) {\n if (path.endsWith('.d.ts')) {\n return [path.slice(0, -5), '.ts'];\n }\n var /** @type {?} */ lastDot = path.lastIndexOf('.');\n if (lastDot !== -1) {\n return [path.substring(0, lastDot), path.substring(lastDot)];\n }\n return [path, ''];\n}\n/**\n * @param {?} fileName\n * @return {?}\n */\nfunction summaryFileName(fileName) {\n var /** @type {?} */ fileNameWithoutSuffix = fileName.replace(STRIP_SRC_FILE_SUFFIXES, '');\n return fileNameWithoutSuffix + \".ngsummary.json\";\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 * @param {?} hook\n * @param {?} token\n * @return {?}\n */\nfunction hasLifecycleHook(hook, token) {\n return ɵreflector.hasLifecycleHook(token, getHookName(hook));\n}\n/**\n * @param {?} hook\n * @return {?}\n */\nfunction getHookName(hook) {\n switch (hook) {\n case ɵLifecycleHooks.OnInit:\n return 'ngOnInit';\n case ɵLifecycleHooks.OnDestroy:\n return 'ngOnDestroy';\n case ɵLifecycleHooks.DoCheck:\n return 'ngDoCheck';\n case ɵLifecycleHooks.OnChanges:\n return 'ngOnChanges';\n case ɵLifecycleHooks.AfterContentInit:\n return 'ngAfterContentInit';\n case ɵLifecycleHooks.AfterContentChecked:\n return 'ngAfterContentChecked';\n case ɵLifecycleHooks.AfterViewInit:\n return 'ngAfterViewInit';\n case ɵLifecycleHooks.AfterViewChecked:\n return 'ngAfterViewChecked';\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 * @param {?} obj\n * @return {?}\n */\nfunction _isNgModuleMetadata(obj) {\n return obj instanceof NgModule;\n}\n/**\n * Resolves types to {\\@link NgModule}.\n */\nvar NgModuleResolver = (function () {\n /**\n * @param {?=} _reflector\n */\n function NgModuleResolver(_reflector) {\n if (_reflector === void 0) { _reflector = ɵreflector; }\n this._reflector = _reflector;\n }\n /**\n * @param {?} type\n * @return {?}\n */\n NgModuleResolver.prototype.isNgModule = function (type) { return this._reflector.annotations(type).some(_isNgModuleMetadata); };\n /**\n * @param {?} type\n * @param {?=} throwIfNotFound\n * @return {?}\n */\n NgModuleResolver.prototype.resolve = function (type, throwIfNotFound) {\n if (throwIfNotFound === void 0) { throwIfNotFound = true; }\n var /** @type {?} */ ngModuleMeta = findLast(this._reflector.annotations(type), _isNgModuleMetadata);\n if (ngModuleMeta) {\n return ngModuleMeta;\n }\n else {\n if (throwIfNotFound) {\n throw new Error(\"No NgModule metadata found for '\" + ɵstringify(type) + \"'.\");\n }\n return null;\n }\n };\n return NgModuleResolver;\n}());\nNgModuleResolver.decorators = [\n { type: CompilerInjectable },\n];\n/**\n * @nocollapse\n */\nNgModuleResolver.ctorParameters = function () { return [\n { type: ɵReflectorReader, },\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 * @param {?} type\n * @return {?}\n */\nfunction _isPipeMetadata(type) {\n return type instanceof Pipe;\n}\n/**\n * Resolve a `Type` for {\\@link Pipe}.\n *\n * This interface can be overridden by the application developer to create custom behavior.\n *\n * See {\\@link Compiler}\n */\nvar PipeResolver = (function () {\n /**\n * @param {?=} _reflector\n */\n function PipeResolver(_reflector) {\n if (_reflector === void 0) { _reflector = ɵreflector; }\n this._reflector = _reflector;\n }\n /**\n * @param {?} type\n * @return {?}\n */\n PipeResolver.prototype.isPipe = function (type) {\n var /** @type {?} */ typeMetadata = this._reflector.annotations(resolveForwardRef(type));\n return typeMetadata && typeMetadata.some(_isPipeMetadata);\n };\n /**\n * Return {\\@link Pipe} for a given `Type`.\n * @param {?} type\n * @param {?=} throwIfNotFound\n * @return {?}\n */\n PipeResolver.prototype.resolve = function (type, throwIfNotFound) {\n if (throwIfNotFound === void 0) { throwIfNotFound = true; }\n var /** @type {?} */ metas = this._reflector.annotations(resolveForwardRef(type));\n if (metas) {\n var /** @type {?} */ annotation = findLast(metas, _isPipeMetadata);\n if (annotation) {\n return annotation;\n }\n }\n if (throwIfNotFound) {\n throw new Error(\"No Pipe decorator found on \" + ɵstringify(type));\n }\n return null;\n };\n return PipeResolver;\n}());\nPipeResolver.decorators = [\n { type: CompilerInjectable },\n];\n/**\n * @nocollapse\n */\nPipeResolver.ctorParameters = function () { return [\n { type: ɵReflectorReader, },\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 */\nvar SummaryResolver = (function () {\n function SummaryResolver() {\n }\n /**\n * @param {?} fileName\n * @return {?}\n */\n SummaryResolver.prototype.isLibraryFile = function (fileName) { return false; };\n ;\n /**\n * @param {?} fileName\n * @return {?}\n */\n SummaryResolver.prototype.getLibraryFileName = function (fileName) { return null; };\n /**\n * @param {?} reference\n * @return {?}\n */\n SummaryResolver.prototype.resolveSummary = function (reference) { return null; };\n ;\n /**\n * @param {?} filePath\n * @return {?}\n */\n SummaryResolver.prototype.getSymbolsOf = function (filePath) { return []; };\n /**\n * @param {?} reference\n * @return {?}\n */\n SummaryResolver.prototype.getImportAs = function (reference) { return reference; };\n return SummaryResolver;\n}());\nSummaryResolver.decorators = [\n { type: CompilerInjectable },\n];\n/**\n * @nocollapse\n */\nSummaryResolver.ctorParameters = function () { return []; };\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 */\nvar ERROR_COLLECTOR_TOKEN = new InjectionToken('ErrorCollector');\nvar CompileMetadataResolver = (function () {\n /**\n * @param {?} _config\n * @param {?} _ngModuleResolver\n * @param {?} _directiveResolver\n * @param {?} _pipeResolver\n * @param {?} _summaryResolver\n * @param {?} _schemaRegistry\n * @param {?} _directiveNormalizer\n * @param {?} _console\n * @param {?} _staticSymbolCache\n * @param {?=} _reflector\n * @param {?=} _errorCollector\n */\n function CompileMetadataResolver(_config, _ngModuleResolver, _directiveResolver, _pipeResolver, _summaryResolver, _schemaRegistry, _directiveNormalizer, _console, _staticSymbolCache, _reflector, _errorCollector) {\n if (_reflector === void 0) { _reflector = ɵreflector; }\n this._config = _config;\n this._ngModuleResolver = _ngModuleResolver;\n this._directiveResolver = _directiveResolver;\n this._pipeResolver = _pipeResolver;\n this._summaryResolver = _summaryResolver;\n this._schemaRegistry = _schemaRegistry;\n this._directiveNormalizer = _directiveNormalizer;\n this._console = _console;\n this._staticSymbolCache = _staticSymbolCache;\n this._reflector = _reflector;\n this._errorCollector = _errorCollector;\n this._nonNormalizedDirectiveCache = new Map();\n this._directiveCache = new Map();\n this._summaryCache = new Map();\n this._pipeCache = new Map();\n this._ngModuleCache = new Map();\n this._ngModuleOfTypes = new Map();\n }\n /**\n * @param {?} type\n * @return {?}\n */\n CompileMetadataResolver.prototype.clearCacheFor = function (type) {\n var /** @type {?} */ dirMeta = this._directiveCache.get(type);\n this._directiveCache.delete(type);\n this._nonNormalizedDirectiveCache.delete(type);\n this._summaryCache.delete(type);\n this._pipeCache.delete(type);\n this._ngModuleOfTypes.delete(type);\n // Clear all of the NgModule as they contain transitive information!\n this._ngModuleCache.clear();\n if (dirMeta) {\n this._directiveNormalizer.clearCacheFor(dirMeta);\n }\n };\n /**\n * @return {?}\n */\n CompileMetadataResolver.prototype.clearCache = function () {\n this._directiveCache.clear();\n this._nonNormalizedDirectiveCache.clear();\n this._summaryCache.clear();\n this._pipeCache.clear();\n this._ngModuleCache.clear();\n this._ngModuleOfTypes.clear();\n this._directiveNormalizer.clearCache();\n };\n /**\n * @param {?} baseType\n * @param {?} name\n * @return {?}\n */\n CompileMetadataResolver.prototype._createProxyClass = function (baseType, name) {\n var /** @type {?} */ delegate = null;\n var /** @type {?} */ proxyClass = (function () {\n if (!delegate) {\n throw new Error(\"Illegal state: Class \" + name + \" for type \" + ɵstringify(baseType) + \" is not compiled yet!\");\n }\n return delegate.apply(this, arguments);\n });\n proxyClass.setDelegate = function (d) {\n delegate = d;\n ((proxyClass)).prototype = d.prototype;\n };\n // Make stringify work correctly\n ((proxyClass)).overriddenName = name;\n return proxyClass;\n };\n /**\n * @param {?} dirType\n * @param {?} name\n * @return {?}\n */\n CompileMetadataResolver.prototype.getGeneratedClass = function (dirType, name) {\n if (dirType instanceof StaticSymbol) {\n return this._staticSymbolCache.get(ngfactoryFilePath(dirType.filePath), name);\n }\n else {\n return this._createProxyClass(dirType, name);\n }\n };\n /**\n * @param {?} dirType\n * @return {?}\n */\n CompileMetadataResolver.prototype.getComponentViewClass = function (dirType) {\n return this.getGeneratedClass(dirType, viewClassName(dirType, 0));\n };\n /**\n * @param {?} dirType\n * @return {?}\n */\n CompileMetadataResolver.prototype.getHostComponentViewClass = function (dirType) {\n return this.getGeneratedClass(dirType, hostViewClassName(dirType));\n };\n /**\n * @param {?} dirType\n * @return {?}\n */\n CompileMetadataResolver.prototype.getHostComponentType = function (dirType) {\n var /** @type {?} */ name = identifierName({ reference: dirType }) + \"_Host\";\n if (dirType instanceof StaticSymbol) {\n return this._staticSymbolCache.get(dirType.filePath, name);\n }\n else {\n var /** @type {?} */ HostClass = (function HostClass() { });\n HostClass.overriddenName = name;\n return HostClass;\n }\n };\n /**\n * @param {?} dirType\n * @return {?}\n */\n CompileMetadataResolver.prototype.getRendererType = function (dirType) {\n if (dirType instanceof StaticSymbol) {\n return this._staticSymbolCache.get(ngfactoryFilePath(dirType.filePath), rendererTypeName(dirType));\n }\n else {\n // returning an object as proxy,\n // that we fill later during runtime compilation.\n return ({});\n }\n };\n /**\n * @param {?} selector\n * @param {?} dirType\n * @param {?} inputs\n * @param {?} outputs\n * @return {?}\n */\n CompileMetadataResolver.prototype.getComponentFactory = function (selector, dirType, inputs, outputs) {\n if (dirType instanceof StaticSymbol) {\n return this._staticSymbolCache.get(ngfactoryFilePath(dirType.filePath), componentFactoryName(dirType));\n }\n else {\n var /** @type {?} */ hostView = this.getHostComponentViewClass(dirType);\n // Note: ngContentSelectors will be filled later once the template is\n // loaded.\n return ɵccf(selector, dirType, /** @type {?} */ (hostView), inputs, outputs, []);\n }\n };\n /**\n * @param {?} factory\n * @param {?} ngContentSelectors\n * @return {?}\n */\n CompileMetadataResolver.prototype.initComponentFactory = function (factory, ngContentSelectors) {\n if (!(factory instanceof StaticSymbol)) {\n (_a = factory.ngContentSelectors).push.apply(_a, ngContentSelectors);\n }\n var _a;\n };\n /**\n * @param {?} type\n * @param {?} kind\n * @return {?}\n */\n CompileMetadataResolver.prototype._loadSummary = function (type, kind) {\n var /** @type {?} */ typeSummary = this._summaryCache.get(type);\n if (!typeSummary) {\n var /** @type {?} */ summary = this._summaryResolver.resolveSummary(type);\n typeSummary = summary ? summary.type : null;\n this._summaryCache.set(type, typeSummary);\n }\n return typeSummary && typeSummary.summaryKind === kind ? typeSummary : null;\n };\n /**\n * @param {?} ngModuleType\n * @param {?} directiveType\n * @param {?} isSync\n * @return {?}\n */\n CompileMetadataResolver.prototype._loadDirectiveMetadata = function (ngModuleType, directiveType, isSync) {\n var _this = this;\n if (this._directiveCache.has(directiveType)) {\n return;\n }\n directiveType = resolveForwardRef(directiveType);\n var _a = this.getNonNormalizedDirectiveMetadata(directiveType), annotation = _a.annotation, metadata = _a.metadata;\n var /** @type {?} */ createDirectiveMetadata = function (templateMetadata) {\n var /** @type {?} */ normalizedDirMeta = new CompileDirectiveMetadata({\n type: metadata.type,\n isComponent: metadata.isComponent,\n selector: metadata.selector,\n exportAs: metadata.exportAs,\n changeDetection: metadata.changeDetection,\n inputs: metadata.inputs,\n outputs: metadata.outputs,\n hostListeners: metadata.hostListeners,\n hostProperties: metadata.hostProperties,\n hostAttributes: metadata.hostAttributes,\n providers: metadata.providers,\n viewProviders: metadata.viewProviders,\n queries: metadata.queries,\n viewQueries: metadata.viewQueries,\n entryComponents: metadata.entryComponents,\n componentViewType: metadata.componentViewType,\n rendererType: metadata.rendererType,\n componentFactory: metadata.componentFactory,\n template: templateMetadata\n });\n if (templateMetadata) {\n _this.initComponentFactory(metadata.componentFactory, templateMetadata.ngContentSelectors);\n }\n _this._directiveCache.set(directiveType, normalizedDirMeta);\n _this._summaryCache.set(directiveType, normalizedDirMeta.toSummary());\n return normalizedDirMeta;\n };\n if (metadata.isComponent) {\n var /** @type {?} */ templateMeta = this._directiveNormalizer.normalizeTemplate({\n ngModuleType: ngModuleType,\n componentType: directiveType,\n moduleUrl: componentModuleUrl(this._reflector, directiveType, annotation),\n encapsulation: metadata.template.encapsulation,\n template: metadata.template.template,\n templateUrl: metadata.template.templateUrl,\n styles: metadata.template.styles,\n styleUrls: metadata.template.styleUrls,\n animations: metadata.template.animations,\n interpolation: metadata.template.interpolation\n });\n if (templateMeta.syncResult) {\n createDirectiveMetadata(templateMeta.syncResult);\n return null;\n }\n else {\n if (isSync) {\n this._reportError(componentStillLoadingError(directiveType), directiveType);\n return null;\n }\n return templateMeta.asyncResult.then(createDirectiveMetadata);\n }\n }\n else {\n // directive\n createDirectiveMetadata(null);\n return null;\n }\n };\n /**\n * @param {?} directiveType\n * @return {?}\n */\n CompileMetadataResolver.prototype.getNonNormalizedDirectiveMetadata = function (directiveType) {\n var _this = this;\n directiveType = resolveForwardRef(directiveType);\n if (!directiveType) {\n return null;\n }\n var /** @type {?} */ cacheEntry = this._nonNormalizedDirectiveCache.get(directiveType);\n if (cacheEntry) {\n return cacheEntry;\n }\n var /** @type {?} */ dirMeta = this._directiveResolver.resolve(directiveType, false);\n if (!dirMeta) {\n return null;\n }\n var /** @type {?} */ nonNormalizedTemplateMetadata;\n if (dirMeta instanceof Component) {\n // component\n assertArrayOfStrings('styles', dirMeta.styles);\n assertArrayOfStrings('styleUrls', dirMeta.styleUrls);\n assertInterpolationSymbols('interpolation', dirMeta.interpolation);\n var /** @type {?} */ animations = dirMeta.animations;\n nonNormalizedTemplateMetadata = new CompileTemplateMetadata({\n encapsulation: dirMeta.encapsulation,\n template: dirMeta.template,\n templateUrl: dirMeta.templateUrl,\n styles: dirMeta.styles,\n styleUrls: dirMeta.styleUrls,\n animations: animations,\n interpolation: dirMeta.interpolation,\n isInline: !!dirMeta.template\n });\n }\n var /** @type {?} */ changeDetectionStrategy = null;\n var /** @type {?} */ viewProviders = [];\n var /** @type {?} */ entryComponentMetadata = [];\n var /** @type {?} */ selector = dirMeta.selector;\n if (dirMeta instanceof Component) {\n // Component\n changeDetectionStrategy = dirMeta.changeDetection;\n if (dirMeta.viewProviders) {\n viewProviders = this._getProvidersMetadata(dirMeta.viewProviders, entryComponentMetadata, \"viewProviders for \\\"\" + stringifyType(directiveType) + \"\\\"\", [], directiveType);\n }\n if (dirMeta.entryComponents) {\n entryComponentMetadata = flattenAndDedupeArray(dirMeta.entryComponents)\n .map(function (type) { return _this._getEntryComponentMetadata(type); })\n .concat(entryComponentMetadata);\n }\n if (!selector) {\n selector = this._schemaRegistry.getDefaultComponentElementName();\n }\n }\n else {\n // Directive\n if (!selector) {\n this._reportError(syntaxError(\"Directive \" + stringifyType(directiveType) + \" has no selector, please add it!\"), directiveType);\n selector = 'error';\n }\n }\n var /** @type {?} */ providers = [];\n if (dirMeta.providers != null) {\n providers = this._getProvidersMetadata(dirMeta.providers, entryComponentMetadata, \"providers for \\\"\" + stringifyType(directiveType) + \"\\\"\", [], directiveType);\n }\n var /** @type {?} */ queries = [];\n var /** @type {?} */ viewQueries = [];\n if (dirMeta.queries != null) {\n queries = this._getQueriesMetadata(dirMeta.queries, false, directiveType);\n viewQueries = this._getQueriesMetadata(dirMeta.queries, true, directiveType);\n }\n var /** @type {?} */ metadata = CompileDirectiveMetadata.create({\n selector: selector,\n exportAs: dirMeta.exportAs,\n isComponent: !!nonNormalizedTemplateMetadata,\n type: this._getTypeMetadata(directiveType),\n template: nonNormalizedTemplateMetadata,\n changeDetection: changeDetectionStrategy,\n inputs: dirMeta.inputs,\n outputs: dirMeta.outputs,\n host: dirMeta.host,\n providers: providers,\n viewProviders: viewProviders,\n queries: queries,\n viewQueries: viewQueries,\n entryComponents: entryComponentMetadata,\n componentViewType: nonNormalizedTemplateMetadata ? this.getComponentViewClass(directiveType) :\n undefined,\n rendererType: nonNormalizedTemplateMetadata ? this.getRendererType(directiveType) : undefined,\n componentFactory: undefined\n });\n if (nonNormalizedTemplateMetadata) {\n metadata.componentFactory =\n this.getComponentFactory(selector, directiveType, metadata.inputs, metadata.outputs);\n }\n cacheEntry = { metadata: metadata, annotation: dirMeta };\n this._nonNormalizedDirectiveCache.set(directiveType, cacheEntry);\n return cacheEntry;\n };\n /**\n * Gets the metadata for the given directive.\n * This assumes `loadNgModuleDirectiveAndPipeMetadata` has been called first.\n * @param {?} directiveType\n * @return {?}\n */\n CompileMetadataResolver.prototype.getDirectiveMetadata = function (directiveType) {\n var /** @type {?} */ dirMeta = this._directiveCache.get(directiveType);\n if (!dirMeta) {\n this._reportError(syntaxError(\"Illegal state: getDirectiveMetadata can only be called after loadNgModuleDirectiveAndPipeMetadata for a module that declares it. Directive \" + stringifyType(directiveType) + \".\"), directiveType);\n }\n return dirMeta;\n };\n /**\n * @param {?} dirType\n * @return {?}\n */\n CompileMetadataResolver.prototype.getDirectiveSummary = function (dirType) {\n var /** @type {?} */ dirSummary = (this._loadSummary(dirType, CompileSummaryKind.Directive));\n if (!dirSummary) {\n this._reportError(syntaxError(\"Illegal state: Could not load the summary for directive \" + stringifyType(dirType) + \".\"), dirType);\n }\n return dirSummary;\n };\n /**\n * @param {?} type\n * @return {?}\n */\n CompileMetadataResolver.prototype.isDirective = function (type) { return this._directiveResolver.isDirective(type); };\n /**\n * @param {?} type\n * @return {?}\n */\n CompileMetadataResolver.prototype.isPipe = function (type) { return this._pipeResolver.isPipe(type); };\n /**\n * @param {?} moduleType\n * @return {?}\n */\n CompileMetadataResolver.prototype.getNgModuleSummary = function (moduleType) {\n var /** @type {?} */ moduleSummary = (this._loadSummary(moduleType, CompileSummaryKind.NgModule));\n if (!moduleSummary) {\n var /** @type {?} */ moduleMeta = this.getNgModuleMetadata(moduleType, false);\n moduleSummary = moduleMeta ? moduleMeta.toSummary() : null;\n if (moduleSummary) {\n this._summaryCache.set(moduleType, moduleSummary);\n }\n }\n return moduleSummary;\n };\n /**\n * Loads the declared directives and pipes of an NgModule.\n * @param {?} moduleType\n * @param {?} isSync\n * @param {?=} throwIfNotFound\n * @return {?}\n */\n CompileMetadataResolver.prototype.loadNgModuleDirectiveAndPipeMetadata = function (moduleType, isSync, throwIfNotFound) {\n var _this = this;\n if (throwIfNotFound === void 0) { throwIfNotFound = true; }\n var /** @type {?} */ ngModule = this.getNgModuleMetadata(moduleType, throwIfNotFound);\n var /** @type {?} */ loading = [];\n if (ngModule) {\n ngModule.declaredDirectives.forEach(function (id) {\n var /** @type {?} */ promise = _this._loadDirectiveMetadata(moduleType, id.reference, isSync);\n if (promise) {\n loading.push(promise);\n }\n });\n ngModule.declaredPipes.forEach(function (id) { return _this._loadPipeMetadata(id.reference); });\n }\n return Promise.all(loading);\n };\n /**\n * @param {?} moduleType\n * @param {?=} throwIfNotFound\n * @return {?}\n */\n CompileMetadataResolver.prototype.getNgModuleMetadata = function (moduleType, throwIfNotFound) {\n var _this = this;\n if (throwIfNotFound === void 0) { throwIfNotFound = true; }\n moduleType = resolveForwardRef(moduleType);\n var /** @type {?} */ compileMeta = this._ngModuleCache.get(moduleType);\n if (compileMeta) {\n return compileMeta;\n }\n var /** @type {?} */ meta = this._ngModuleResolver.resolve(moduleType, throwIfNotFound);\n if (!meta) {\n return null;\n }\n var /** @type {?} */ declaredDirectives = [];\n var /** @type {?} */ exportedNonModuleIdentifiers = [];\n var /** @type {?} */ declaredPipes = [];\n var /** @type {?} */ importedModules = [];\n var /** @type {?} */ exportedModules = [];\n var /** @type {?} */ providers = [];\n var /** @type {?} */ entryComponents = [];\n var /** @type {?} */ bootstrapComponents = [];\n var /** @type {?} */ schemas = [];\n if (meta.imports) {\n flattenAndDedupeArray(meta.imports).forEach(function (importedType) {\n var /** @type {?} */ importedModuleType;\n if (isValidType(importedType)) {\n importedModuleType = importedType;\n }\n else if (importedType && importedType.ngModule) {\n var /** @type {?} */ moduleWithProviders = importedType;\n importedModuleType = moduleWithProviders.ngModule;\n if (moduleWithProviders.providers) {\n providers.push.apply(providers, _this._getProvidersMetadata(moduleWithProviders.providers, entryComponents, \"provider for the NgModule '\" + stringifyType(importedModuleType) + \"'\", [], importedType));\n }\n }\n if (importedModuleType) {\n if (_this._checkSelfImport(moduleType, importedModuleType))\n return;\n var /** @type {?} */ importedModuleSummary = _this.getNgModuleSummary(importedModuleType);\n if (!importedModuleSummary) {\n _this._reportError(syntaxError(\"Unexpected \" + _this._getTypeDescriptor(importedType) + \" '\" + stringifyType(importedType) + \"' imported by the module '\" + stringifyType(moduleType) + \"'. Please add a @NgModule annotation.\"), moduleType);\n return;\n }\n importedModules.push(importedModuleSummary);\n }\n else {\n _this._reportError(syntaxError(\"Unexpected value '\" + stringifyType(importedType) + \"' imported by the module '\" + stringifyType(moduleType) + \"'\"), moduleType);\n return;\n }\n });\n }\n if (meta.exports) {\n flattenAndDedupeArray(meta.exports).forEach(function (exportedType) {\n if (!isValidType(exportedType)) {\n _this._reportError(syntaxError(\"Unexpected value '\" + stringifyType(exportedType) + \"' exported by the module '\" + stringifyType(moduleType) + \"'\"), moduleType);\n return;\n }\n var /** @type {?} */ exportedModuleSummary = _this.getNgModuleSummary(exportedType);\n if (exportedModuleSummary) {\n exportedModules.push(exportedModuleSummary);\n }\n else {\n exportedNonModuleIdentifiers.push(_this._getIdentifierMetadata(exportedType));\n }\n });\n }\n // Note: This will be modified later, so we rely on\n // getting a new instance every time!\n var /** @type {?} */ transitiveModule = this._getTransitiveNgModuleMetadata(importedModules, exportedModules);\n if (meta.declarations) {\n flattenAndDedupeArray(meta.declarations).forEach(function (declaredType) {\n if (!isValidType(declaredType)) {\n _this._reportError(syntaxError(\"Unexpected value '\" + stringifyType(declaredType) + \"' declared by the module '\" + stringifyType(moduleType) + \"'\"), moduleType);\n return;\n }\n var /** @type {?} */ declaredIdentifier = _this._getIdentifierMetadata(declaredType);\n if (_this._directiveResolver.isDirective(declaredType)) {\n transitiveModule.addDirective(declaredIdentifier);\n declaredDirectives.push(declaredIdentifier);\n _this._addTypeToModule(declaredType, moduleType);\n }\n else if (_this._pipeResolver.isPipe(declaredType)) {\n transitiveModule.addPipe(declaredIdentifier);\n transitiveModule.pipes.push(declaredIdentifier);\n declaredPipes.push(declaredIdentifier);\n _this._addTypeToModule(declaredType, moduleType);\n }\n else {\n _this._reportError(syntaxError(\"Unexpected \" + _this._getTypeDescriptor(declaredType) + \" '\" + stringifyType(declaredType) + \"' declared by the module '\" + stringifyType(moduleType) + \"'. Please add a @Pipe/@Directive/@Component annotation.\"), moduleType);\n return;\n }\n });\n }\n var /** @type {?} */ exportedDirectives = [];\n var /** @type {?} */ exportedPipes = [];\n exportedNonModuleIdentifiers.forEach(function (exportedId) {\n if (transitiveModule.directivesSet.has(exportedId.reference)) {\n exportedDirectives.push(exportedId);\n transitiveModule.addExportedDirective(exportedId);\n }\n else if (transitiveModule.pipesSet.has(exportedId.reference)) {\n exportedPipes.push(exportedId);\n transitiveModule.addExportedPipe(exportedId);\n }\n else {\n _this._reportError(syntaxError(\"Can't export \" + _this._getTypeDescriptor(exportedId.reference) + \" \" + stringifyType(exportedId.reference) + \" from \" + stringifyType(moduleType) + \" as it was neither declared nor imported!\"), moduleType);\n return;\n }\n });\n // The providers of the module have to go last\n // so that they overwrite any other provider we already added.\n if (meta.providers) {\n providers.push.apply(providers, this._getProvidersMetadata(meta.providers, entryComponents, \"provider for the NgModule '\" + stringifyType(moduleType) + \"'\", [], moduleType));\n }\n if (meta.entryComponents) {\n entryComponents.push.apply(entryComponents, flattenAndDedupeArray(meta.entryComponents)\n .map(function (type) { return _this._getEntryComponentMetadata(type); }));\n }\n if (meta.bootstrap) {\n flattenAndDedupeArray(meta.bootstrap).forEach(function (type) {\n if (!isValidType(type)) {\n _this._reportError(syntaxError(\"Unexpected value '\" + stringifyType(type) + \"' used in the bootstrap property of module '\" + stringifyType(moduleType) + \"'\"), moduleType);\n return;\n }\n bootstrapComponents.push(_this._getIdentifierMetadata(type));\n });\n }\n entryComponents.push.apply(entryComponents, bootstrapComponents.map(function (type) { return _this._getEntryComponentMetadata(type.reference); }));\n if (meta.schemas) {\n schemas.push.apply(schemas, flattenAndDedupeArray(meta.schemas));\n }\n compileMeta = new CompileNgModuleMetadata({\n type: this._getTypeMetadata(moduleType),\n providers: providers,\n entryComponents: entryComponents,\n bootstrapComponents: bootstrapComponents,\n schemas: schemas,\n declaredDirectives: declaredDirectives,\n exportedDirectives: exportedDirectives,\n declaredPipes: declaredPipes,\n exportedPipes: exportedPipes,\n importedModules: importedModules,\n exportedModules: exportedModules,\n transitiveModule: transitiveModule,\n id: meta.id,\n });\n entryComponents.forEach(function (id) { return transitiveModule.addEntryComponent(id); });\n providers.forEach(function (provider) { return transitiveModule.addProvider(provider, compileMeta.type); });\n transitiveModule.addModule(compileMeta.type);\n this._ngModuleCache.set(moduleType, compileMeta);\n return compileMeta;\n };\n /**\n * @param {?} moduleType\n * @param {?} importedModuleType\n * @return {?}\n */\n CompileMetadataResolver.prototype._checkSelfImport = function (moduleType, importedModuleType) {\n if (moduleType === importedModuleType) {\n this._reportError(syntaxError(\"'\" + stringifyType(moduleType) + \"' module can't import itself\"), moduleType);\n return true;\n }\n return false;\n };\n /**\n * @param {?} type\n * @return {?}\n */\n CompileMetadataResolver.prototype._getTypeDescriptor = function (type) {\n if (this._directiveResolver.isDirective(type)) {\n return 'directive';\n }\n if (this._pipeResolver.isPipe(type)) {\n return 'pipe';\n }\n if (this._ngModuleResolver.isNgModule(type)) {\n return 'module';\n }\n if (((type)).provide) {\n return 'provider';\n }\n return 'value';\n };\n /**\n * @param {?} type\n * @param {?} moduleType\n * @return {?}\n */\n CompileMetadataResolver.prototype._addTypeToModule = function (type, moduleType) {\n var /** @type {?} */ oldModule = this._ngModuleOfTypes.get(type);\n if (oldModule && oldModule !== moduleType) {\n this._reportError(syntaxError(\"Type \" + stringifyType(type) + \" is part of the declarations of 2 modules: \" + stringifyType(oldModule) + \" and \" + stringifyType(moduleType) + \"! \" +\n (\"Please consider moving \" + stringifyType(type) + \" to a higher module that imports \" + stringifyType(oldModule) + \" and \" + stringifyType(moduleType) + \". \") +\n (\"You can also create a new NgModule that exports and includes \" + stringifyType(type) + \" then import that NgModule in \" + stringifyType(oldModule) + \" and \" + stringifyType(moduleType) + \".\")), moduleType);\n return;\n }\n this._ngModuleOfTypes.set(type, moduleType);\n };\n /**\n * @param {?} importedModules\n * @param {?} exportedModules\n * @return {?}\n */\n CompileMetadataResolver.prototype._getTransitiveNgModuleMetadata = function (importedModules, exportedModules) {\n // collect `providers` / `entryComponents` from all imported and all exported modules\n var /** @type {?} */ result = new TransitiveCompileNgModuleMetadata();\n var /** @type {?} */ modulesByToken = new Map();\n importedModules.concat(exportedModules).forEach(function (modSummary) {\n modSummary.modules.forEach(function (mod) { return result.addModule(mod); });\n modSummary.entryComponents.forEach(function (comp) { return result.addEntryComponent(comp); });\n var /** @type {?} */ addedTokens = new Set();\n modSummary.providers.forEach(function (entry) {\n var /** @type {?} */ tokenRef = tokenReference(entry.provider.token);\n var /** @type {?} */ prevModules = modulesByToken.get(tokenRef);\n if (!prevModules) {\n prevModules = new Set();\n modulesByToken.set(tokenRef, prevModules);\n }\n var /** @type {?} */ moduleRef = entry.module.reference;\n // Note: the providers of one module may still contain multiple providers\n // per token (e.g. for multi providers), and we need to preserve these.\n if (addedTokens.has(tokenRef) || !prevModules.has(moduleRef)) {\n prevModules.add(moduleRef);\n addedTokens.add(tokenRef);\n result.addProvider(entry.provider, entry.module);\n }\n });\n });\n exportedModules.forEach(function (modSummary) {\n modSummary.exportedDirectives.forEach(function (id) { return result.addExportedDirective(id); });\n modSummary.exportedPipes.forEach(function (id) { return result.addExportedPipe(id); });\n });\n importedModules.forEach(function (modSummary) {\n modSummary.exportedDirectives.forEach(function (id) { return result.addDirective(id); });\n modSummary.exportedPipes.forEach(function (id) { return result.addPipe(id); });\n });\n return result;\n };\n /**\n * @param {?} type\n * @return {?}\n */\n CompileMetadataResolver.prototype._getIdentifierMetadata = function (type) {\n type = resolveForwardRef(type);\n return { reference: type };\n };\n /**\n * @param {?} type\n * @return {?}\n */\n CompileMetadataResolver.prototype.isInjectable = function (type) {\n var /** @type {?} */ annotations = this._reflector.annotations(type);\n // Note: We need an exact check here as @Component / @Directive / ... inherit\n // from @CompilerInjectable!\n return annotations.some(function (ann) { return ann.constructor === Injectable; });\n };\n /**\n * @param {?} type\n * @return {?}\n */\n CompileMetadataResolver.prototype.getInjectableSummary = function (type) {\n return {\n summaryKind: CompileSummaryKind.Injectable,\n type: this._getTypeMetadata(type, null, false)\n };\n };\n /**\n * @param {?} type\n * @param {?=} dependencies\n * @return {?}\n */\n CompileMetadataResolver.prototype._getInjectableMetadata = function (type, dependencies) {\n if (dependencies === void 0) { dependencies = null; }\n var /** @type {?} */ typeSummary = this._loadSummary(type, CompileSummaryKind.Injectable);\n if (typeSummary) {\n return typeSummary.type;\n }\n return this._getTypeMetadata(type, dependencies);\n };\n /**\n * @param {?} type\n * @param {?=} dependencies\n * @param {?=} throwOnUnknownDeps\n * @return {?}\n */\n CompileMetadataResolver.prototype._getTypeMetadata = function (type, dependencies, throwOnUnknownDeps) {\n if (dependencies === void 0) { dependencies = null; }\n if (throwOnUnknownDeps === void 0) { throwOnUnknownDeps = true; }\n var /** @type {?} */ identifier = this._getIdentifierMetadata(type);\n return {\n reference: identifier.reference,\n diDeps: this._getDependenciesMetadata(identifier.reference, dependencies, throwOnUnknownDeps),\n lifecycleHooks: ɵLIFECYCLE_HOOKS_VALUES.filter(function (hook) { return hasLifecycleHook(hook, identifier.reference); }),\n };\n };\n /**\n * @param {?} factory\n * @param {?=} dependencies\n * @return {?}\n */\n CompileMetadataResolver.prototype._getFactoryMetadata = function (factory, dependencies) {\n if (dependencies === void 0) { dependencies = null; }\n factory = resolveForwardRef(factory);\n return { reference: factory, diDeps: this._getDependenciesMetadata(factory, dependencies) };\n };\n /**\n * Gets the metadata for the given pipe.\n * This assumes `loadNgModuleDirectiveAndPipeMetadata` has been called first.\n * @param {?} pipeType\n * @return {?}\n */\n CompileMetadataResolver.prototype.getPipeMetadata = function (pipeType) {\n var /** @type {?} */ pipeMeta = this._pipeCache.get(pipeType);\n if (!pipeMeta) {\n this._reportError(syntaxError(\"Illegal state: getPipeMetadata can only be called after loadNgModuleDirectiveAndPipeMetadata for a module that declares it. Pipe \" + stringifyType(pipeType) + \".\"), pipeType);\n }\n return pipeMeta;\n };\n /**\n * @param {?} pipeType\n * @return {?}\n */\n CompileMetadataResolver.prototype.getPipeSummary = function (pipeType) {\n var /** @type {?} */ pipeSummary = (this._loadSummary(pipeType, CompileSummaryKind.Pipe));\n if (!pipeSummary) {\n this._reportError(syntaxError(\"Illegal state: Could not load the summary for pipe \" + stringifyType(pipeType) + \".\"), pipeType);\n }\n return pipeSummary;\n };\n /**\n * @param {?} pipeType\n * @return {?}\n */\n CompileMetadataResolver.prototype.getOrLoadPipeMetadata = function (pipeType) {\n var /** @type {?} */ pipeMeta = this._pipeCache.get(pipeType);\n if (!pipeMeta) {\n pipeMeta = this._loadPipeMetadata(pipeType);\n }\n return pipeMeta;\n };\n /**\n * @param {?} pipeType\n * @return {?}\n */\n CompileMetadataResolver.prototype._loadPipeMetadata = function (pipeType) {\n pipeType = resolveForwardRef(pipeType);\n var /** @type {?} */ pipeAnnotation = this._pipeResolver.resolve(pipeType);\n var /** @type {?} */ pipeMeta = new CompilePipeMetadata({\n type: this._getTypeMetadata(pipeType),\n name: pipeAnnotation.name,\n pure: pipeAnnotation.pure\n });\n this._pipeCache.set(pipeType, pipeMeta);\n this._summaryCache.set(pipeType, pipeMeta.toSummary());\n return pipeMeta;\n };\n /**\n * @param {?} typeOrFunc\n * @param {?} dependencies\n * @param {?=} throwOnUnknownDeps\n * @return {?}\n */\n CompileMetadataResolver.prototype._getDependenciesMetadata = function (typeOrFunc, dependencies, throwOnUnknownDeps) {\n var _this = this;\n if (throwOnUnknownDeps === void 0) { throwOnUnknownDeps = true; }\n var /** @type {?} */ hasUnknownDeps = false;\n var /** @type {?} */ params = dependencies || this._reflector.parameters(typeOrFunc) || [];\n var /** @type {?} */ dependenciesMetadata = params.map(function (param) {\n var /** @type {?} */ isAttribute = false;\n var /** @type {?} */ isHost = false;\n var /** @type {?} */ isSelf = false;\n var /** @type {?} */ isSkipSelf = false;\n var /** @type {?} */ isOptional = false;\n var /** @type {?} */ token = null;\n if (Array.isArray(param)) {\n param.forEach(function (paramEntry) {\n if (paramEntry instanceof Host) {\n isHost = true;\n }\n else if (paramEntry instanceof Self) {\n isSelf = true;\n }\n else if (paramEntry instanceof SkipSelf) {\n isSkipSelf = true;\n }\n else if (paramEntry instanceof Optional) {\n isOptional = true;\n }\n else if (paramEntry instanceof Attribute) {\n isAttribute = true;\n token = paramEntry.attributeName;\n }\n else if (paramEntry instanceof Inject) {\n token = paramEntry.token;\n }\n else if (paramEntry instanceof InjectionToken) {\n token = paramEntry;\n }\n else if (isValidType(paramEntry) && token == null) {\n token = paramEntry;\n }\n });\n }\n else {\n token = param;\n }\n if (token == null) {\n hasUnknownDeps = true;\n return null;\n }\n return {\n isAttribute: isAttribute,\n isHost: isHost,\n isSelf: isSelf,\n isSkipSelf: isSkipSelf,\n isOptional: isOptional,\n token: _this._getTokenMetadata(token)\n };\n });\n if (hasUnknownDeps) {\n var /** @type {?} */ depsTokens = dependenciesMetadata.map(function (dep) { return dep ? stringifyType(dep.token) : '?'; }).join(', ');\n var /** @type {?} */ message = \"Can't resolve all parameters for \" + stringifyType(typeOrFunc) + \": (\" + depsTokens + \").\";\n if (throwOnUnknownDeps) {\n this._reportError(syntaxError(message), typeOrFunc);\n }\n else {\n this._console.warn(\"Warning: \" + message + \" This will become an error in Angular v5.x\");\n }\n }\n return dependenciesMetadata;\n };\n /**\n * @param {?} token\n * @return {?}\n */\n CompileMetadataResolver.prototype._getTokenMetadata = function (token) {\n token = resolveForwardRef(token);\n var /** @type {?} */ compileToken;\n if (typeof token === 'string') {\n compileToken = { value: token };\n }\n else {\n compileToken = { identifier: { reference: token } };\n }\n return compileToken;\n };\n /**\n * @param {?} providers\n * @param {?} targetEntryComponents\n * @param {?=} debugInfo\n * @param {?=} compileProviders\n * @param {?=} type\n * @return {?}\n */\n CompileMetadataResolver.prototype._getProvidersMetadata = function (providers, targetEntryComponents, debugInfo, compileProviders, type) {\n var _this = this;\n if (compileProviders === void 0) { compileProviders = []; }\n providers.forEach(function (provider, providerIdx) {\n if (Array.isArray(provider)) {\n _this._getProvidersMetadata(provider, targetEntryComponents, debugInfo, compileProviders);\n }\n else {\n provider = resolveForwardRef(provider);\n var /** @type {?} */ providerMeta = void 0;\n if (provider && typeof provider === 'object' && provider.hasOwnProperty('provide')) {\n _this._validateProvider(provider);\n providerMeta = new ProviderMeta(provider.provide, provider);\n }\n else if (isValidType(provider)) {\n providerMeta = new ProviderMeta(provider, { useClass: provider });\n }\n else if (provider === void 0) {\n _this._reportError(syntaxError(\"Encountered undefined provider! Usually this means you have a circular dependencies (might be caused by using 'barrel' index.ts files.\"));\n return;\n }\n else {\n var /** @type {?} */ providersInfo = ((providers.reduce(function (soFar, seenProvider, seenProviderIdx) {\n if (seenProviderIdx < providerIdx) {\n soFar.push(\"\" + stringifyType(seenProvider));\n }\n else if (seenProviderIdx == providerIdx) {\n soFar.push(\"?\" + stringifyType(seenProvider) + \"?\");\n }\n else if (seenProviderIdx == providerIdx + 1) {\n soFar.push('...');\n }\n return soFar;\n }, [])))\n .join(', ');\n _this._reportError(syntaxError(\"Invalid \" + (debugInfo ? debugInfo : 'provider') + \" - only instances of Provider and Type are allowed, got: [\" + providersInfo + \"]\"), type);\n return;\n }\n if (providerMeta.token === resolveIdentifier(Identifiers.ANALYZE_FOR_ENTRY_COMPONENTS)) {\n targetEntryComponents.push.apply(targetEntryComponents, _this._getEntryComponentsFromProvider(providerMeta, type));\n }\n else {\n compileProviders.push(_this.getProviderMetadata(providerMeta));\n }\n }\n });\n return compileProviders;\n };\n /**\n * @param {?} provider\n * @return {?}\n */\n CompileMetadataResolver.prototype._validateProvider = function (provider) {\n if (provider.hasOwnProperty('useClass') && provider.useClass == null) {\n this._reportError(syntaxError(\"Invalid provider for \" + stringifyType(provider.provide) + \". useClass cannot be \" + provider.useClass + \".\\n Usually it happens when:\\n 1. There's a circular dependency (might be caused by using index.ts (barrel) files).\\n 2. Class was used before it was declared. Use forwardRef in this case.\"));\n }\n };\n /**\n * @param {?} provider\n * @param {?=} type\n * @return {?}\n */\n CompileMetadataResolver.prototype._getEntryComponentsFromProvider = function (provider, type) {\n var _this = this;\n var /** @type {?} */ components = [];\n var /** @type {?} */ collectedIdentifiers = [];\n if (provider.useFactory || provider.useExisting || provider.useClass) {\n this._reportError(syntaxError(\"The ANALYZE_FOR_ENTRY_COMPONENTS token only supports useValue!\"), type);\n return [];\n }\n if (!provider.multi) {\n this._reportError(syntaxError(\"The ANALYZE_FOR_ENTRY_COMPONENTS token only supports 'multi = true'!\"), type);\n return [];\n }\n extractIdentifiers(provider.useValue, collectedIdentifiers);\n collectedIdentifiers.forEach(function (identifier) {\n var /** @type {?} */ entry = _this._getEntryComponentMetadata(identifier.reference, false);\n if (entry) {\n components.push(entry);\n }\n });\n return components;\n };\n /**\n * @param {?} dirType\n * @param {?=} throwIfNotFound\n * @return {?}\n */\n CompileMetadataResolver.prototype._getEntryComponentMetadata = function (dirType, throwIfNotFound) {\n if (throwIfNotFound === void 0) { throwIfNotFound = true; }\n var /** @type {?} */ dirMeta = this.getNonNormalizedDirectiveMetadata(dirType);\n if (dirMeta && dirMeta.metadata.isComponent) {\n return { componentType: dirType, componentFactory: dirMeta.metadata.componentFactory };\n }\n var /** @type {?} */ dirSummary = (this._loadSummary(dirType, CompileSummaryKind.Directive));\n if (dirSummary && dirSummary.isComponent) {\n return { componentType: dirType, componentFactory: dirSummary.componentFactory };\n }\n if (throwIfNotFound) {\n throw syntaxError(dirType.name + \" cannot be used as an entry component.\");\n }\n };\n /**\n * @param {?} provider\n * @return {?}\n */\n CompileMetadataResolver.prototype.getProviderMetadata = function (provider) {\n var /** @type {?} */ compileDeps;\n var /** @type {?} */ compileTypeMetadata = null;\n var /** @type {?} */ compileFactoryMetadata = null;\n var /** @type {?} */ token = this._getTokenMetadata(provider.token);\n if (provider.useClass) {\n compileTypeMetadata = this._getInjectableMetadata(provider.useClass, provider.dependencies);\n compileDeps = compileTypeMetadata.diDeps;\n if (provider.token === provider.useClass) {\n // use the compileTypeMetadata as it contains information about lifecycleHooks...\n token = { identifier: compileTypeMetadata };\n }\n }\n else if (provider.useFactory) {\n compileFactoryMetadata = this._getFactoryMetadata(provider.useFactory, provider.dependencies);\n compileDeps = compileFactoryMetadata.diDeps;\n }\n return {\n token: token,\n useClass: compileTypeMetadata,\n useValue: provider.useValue,\n useFactory: compileFactoryMetadata,\n useExisting: provider.useExisting ? this._getTokenMetadata(provider.useExisting) : null,\n deps: compileDeps,\n multi: provider.multi\n };\n };\n /**\n * @param {?} queries\n * @param {?} isViewQuery\n * @param {?} directiveType\n * @return {?}\n */\n CompileMetadataResolver.prototype._getQueriesMetadata = function (queries, isViewQuery, directiveType) {\n var _this = this;\n var /** @type {?} */ res = [];\n Object.keys(queries).forEach(function (propertyName) {\n var /** @type {?} */ query = queries[propertyName];\n if (query.isViewQuery === isViewQuery) {\n res.push(_this._getQueryMetadata(query, propertyName, directiveType));\n }\n });\n return res;\n };\n /**\n * @param {?} selector\n * @return {?}\n */\n CompileMetadataResolver.prototype._queryVarBindings = function (selector) { return selector.split(/\\s*,\\s*/); };\n /**\n * @param {?} q\n * @param {?} propertyName\n * @param {?} typeOrFunc\n * @return {?}\n */\n CompileMetadataResolver.prototype._getQueryMetadata = function (q, propertyName, typeOrFunc) {\n var _this = this;\n var /** @type {?} */ selectors;\n if (typeof q.selector === 'string') {\n selectors =\n this._queryVarBindings(q.selector).map(function (varName) { return _this._getTokenMetadata(varName); });\n }\n else {\n if (!q.selector) {\n this._reportError(syntaxError(\"Can't construct a query for the property \\\"\" + propertyName + \"\\\" of \\\"\" + stringifyType(typeOrFunc) + \"\\\" since the query selector wasn't defined.\"), typeOrFunc);\n selectors = [];\n }\n else {\n selectors = [this._getTokenMetadata(q.selector)];\n }\n }\n return {\n selectors: selectors,\n first: q.first,\n descendants: q.descendants, propertyName: propertyName,\n read: q.read ? this._getTokenMetadata(q.read) : null\n };\n };\n /**\n * @param {?} error\n * @param {?=} type\n * @param {?=} otherType\n * @return {?}\n */\n CompileMetadataResolver.prototype._reportError = function (error, type, otherType) {\n if (this._errorCollector) {\n this._errorCollector(error, type);\n if (otherType) {\n this._errorCollector(error, otherType);\n }\n }\n else {\n throw error;\n }\n };\n return CompileMetadataResolver;\n}());\nCompileMetadataResolver.decorators = [\n { type: CompilerInjectable },\n];\n/**\n * @nocollapse\n */\nCompileMetadataResolver.ctorParameters = function () { return [\n { type: CompilerConfig, },\n { type: NgModuleResolver, },\n { type: DirectiveResolver, },\n { type: PipeResolver, },\n { type: SummaryResolver, },\n { type: ElementSchemaRegistry, },\n { type: DirectiveNormalizer, },\n { type: ɵConsole, },\n { type: StaticSymbolCache, decorators: [{ type: Optional },] },\n { type: ɵReflectorReader, },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [ERROR_COLLECTOR_TOKEN,] },] },\n]; };\n/**\n * @param {?} tree\n * @param {?=} out\n * @return {?}\n */\nfunction flattenArray(tree, out) {\n if (out === void 0) { out = []; }\n if (tree) {\n for (var /** @type {?} */ i = 0; i < tree.length; i++) {\n var /** @type {?} */ item = resolveForwardRef(tree[i]);\n if (Array.isArray(item)) {\n flattenArray(item, out);\n }\n else {\n out.push(item);\n }\n }\n }\n return out;\n}\n/**\n * @param {?} array\n * @return {?}\n */\nfunction dedupeArray(array) {\n if (array) {\n return Array.from(new Set(array));\n }\n return [];\n}\n/**\n * @param {?} tree\n * @return {?}\n */\nfunction flattenAndDedupeArray(tree) {\n return dedupeArray(flattenArray(tree));\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isValidType(value) {\n return (value instanceof StaticSymbol) || (value instanceof Type);\n}\n/**\n * @param {?} reflector\n * @param {?} type\n * @param {?} cmpMetadata\n * @return {?}\n */\nfunction componentModuleUrl(reflector, type, cmpMetadata) {\n if (type instanceof StaticSymbol) {\n return reflector.resourceUri(type);\n }\n var /** @type {?} */ moduleId = cmpMetadata.moduleId;\n if (typeof moduleId === 'string') {\n var /** @type {?} */ scheme = getUrlScheme(moduleId);\n return scheme ? moduleId : \"package:\" + moduleId + MODULE_SUFFIX;\n }\n else if (moduleId !== null && moduleId !== void 0) {\n throw syntaxError(\"moduleId should be a string in \\\"\" + stringifyType(type) + \"\\\". See https://goo.gl/wIDDiL for more information.\\n\" +\n \"If you're using Webpack you should inline the template and the styles, see https://goo.gl/X2J8zc.\");\n }\n return reflector.importUri(type);\n}\n/**\n * @param {?} value\n * @param {?} targetIdentifiers\n * @return {?}\n */\nfunction extractIdentifiers(value, targetIdentifiers) {\n visitValue(value, new _CompileValueConverter(), targetIdentifiers);\n}\nvar _CompileValueConverter = (function (_super) {\n __extends(_CompileValueConverter, _super);\n function _CompileValueConverter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {?} value\n * @param {?} targetIdentifiers\n * @return {?}\n */\n _CompileValueConverter.prototype.visitOther = function (value, targetIdentifiers) {\n targetIdentifiers.push({ reference: value });\n };\n return _CompileValueConverter;\n}(ValueTransformer));\n/**\n * @param {?} type\n * @return {?}\n */\nfunction stringifyType(type) {\n if (type instanceof StaticSymbol) {\n return type.name + \" in \" + type.filePath;\n }\n else {\n return ɵstringify(type);\n }\n}\n/**\n * Indicates that a component is still being loaded in a synchronous compile.\n * @param {?} compType\n * @return {?}\n */\nfunction componentStillLoadingError(compType) {\n var /** @type {?} */ error = Error(\"Can't compile synchronously as \" + ɵstringify(compType) + \" is still being loaded!\");\n ((error))[ɵERROR_COMPONENT_TYPE] = compType;\n return error;\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 */\nvar TypeModifier = {};\nTypeModifier.Const = 0;\nTypeModifier[TypeModifier.Const] = \"Const\";\n/**\n * @abstract\n */\nvar Type$1 = (function () {\n /**\n * @param {?=} modifiers\n */\n function Type$1(modifiers) {\n if (modifiers === void 0) { modifiers = null; }\n this.modifiers = modifiers;\n if (!modifiers) {\n this.modifiers = [];\n }\n }\n /**\n * @abstract\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n Type$1.prototype.visitType = function (visitor, context) { };\n /**\n * @param {?} modifier\n * @return {?}\n */\n Type$1.prototype.hasModifier = function (modifier) { return this.modifiers.indexOf(modifier) !== -1; };\n return Type$1;\n}());\nvar BuiltinTypeName = {};\nBuiltinTypeName.Dynamic = 0;\nBuiltinTypeName.Bool = 1;\nBuiltinTypeName.String = 2;\nBuiltinTypeName.Int = 3;\nBuiltinTypeName.Number = 4;\nBuiltinTypeName.Function = 5;\nBuiltinTypeName.Inferred = 6;\nBuiltinTypeName[BuiltinTypeName.Dynamic] = \"Dynamic\";\nBuiltinTypeName[BuiltinTypeName.Bool] = \"Bool\";\nBuiltinTypeName[BuiltinTypeName.String] = \"String\";\nBuiltinTypeName[BuiltinTypeName.Int] = \"Int\";\nBuiltinTypeName[BuiltinTypeName.Number] = \"Number\";\nBuiltinTypeName[BuiltinTypeName.Function] = \"Function\";\nBuiltinTypeName[BuiltinTypeName.Inferred] = \"Inferred\";\nvar BuiltinType = (function (_super) {\n __extends(BuiltinType, _super);\n /**\n * @param {?} name\n * @param {?=} modifiers\n */\n function BuiltinType(name, modifiers) {\n if (modifiers === void 0) { modifiers = null; }\n var _this = _super.call(this, modifiers) || this;\n _this.name = name;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n BuiltinType.prototype.visitType = function (visitor, context) {\n return visitor.visitBuiltintType(this, context);\n };\n return BuiltinType;\n}(Type$1));\nvar ExpressionType = (function (_super) {\n __extends(ExpressionType, _super);\n /**\n * @param {?} value\n * @param {?=} modifiers\n */\n function ExpressionType(value, modifiers) {\n if (modifiers === void 0) { modifiers = null; }\n var _this = _super.call(this, modifiers) || this;\n _this.value = value;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n ExpressionType.prototype.visitType = function (visitor, context) {\n return visitor.visitExpressionType(this, context);\n };\n return ExpressionType;\n}(Type$1));\nvar ArrayType = (function (_super) {\n __extends(ArrayType, _super);\n /**\n * @param {?} of\n * @param {?=} modifiers\n */\n function ArrayType(of, modifiers) {\n if (modifiers === void 0) { modifiers = null; }\n var _this = _super.call(this, modifiers) || this;\n _this.of = of;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n ArrayType.prototype.visitType = function (visitor, context) {\n return visitor.visitArrayType(this, context);\n };\n return ArrayType;\n}(Type$1));\nvar MapType = (function (_super) {\n __extends(MapType, _super);\n /**\n * @param {?} valueType\n * @param {?=} modifiers\n */\n function MapType(valueType, modifiers) {\n if (modifiers === void 0) { modifiers = null; }\n var _this = _super.call(this, modifiers) || this;\n _this.valueType = valueType;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n MapType.prototype.visitType = function (visitor, context) { return visitor.visitMapType(this, context); };\n return MapType;\n}(Type$1));\nvar DYNAMIC_TYPE = new BuiltinType(BuiltinTypeName.Dynamic);\nvar INFERRED_TYPE = new BuiltinType(BuiltinTypeName.Inferred);\nvar BOOL_TYPE = new BuiltinType(BuiltinTypeName.Bool);\nvar INT_TYPE = new BuiltinType(BuiltinTypeName.Int);\nvar NUMBER_TYPE = new BuiltinType(BuiltinTypeName.Number);\nvar STRING_TYPE = new BuiltinType(BuiltinTypeName.String);\nvar FUNCTION_TYPE = new BuiltinType(BuiltinTypeName.Function);\nvar BinaryOperator = {};\nBinaryOperator.Equals = 0;\nBinaryOperator.NotEquals = 1;\nBinaryOperator.Identical = 2;\nBinaryOperator.NotIdentical = 3;\nBinaryOperator.Minus = 4;\nBinaryOperator.Plus = 5;\nBinaryOperator.Divide = 6;\nBinaryOperator.Multiply = 7;\nBinaryOperator.Modulo = 8;\nBinaryOperator.And = 9;\nBinaryOperator.Or = 10;\nBinaryOperator.Lower = 11;\nBinaryOperator.LowerEquals = 12;\nBinaryOperator.Bigger = 13;\nBinaryOperator.BiggerEquals = 14;\nBinaryOperator[BinaryOperator.Equals] = \"Equals\";\nBinaryOperator[BinaryOperator.NotEquals] = \"NotEquals\";\nBinaryOperator[BinaryOperator.Identical] = \"Identical\";\nBinaryOperator[BinaryOperator.NotIdentical] = \"NotIdentical\";\nBinaryOperator[BinaryOperator.Minus] = \"Minus\";\nBinaryOperator[BinaryOperator.Plus] = \"Plus\";\nBinaryOperator[BinaryOperator.Divide] = \"Divide\";\nBinaryOperator[BinaryOperator.Multiply] = \"Multiply\";\nBinaryOperator[BinaryOperator.Modulo] = \"Modulo\";\nBinaryOperator[BinaryOperator.And] = \"And\";\nBinaryOperator[BinaryOperator.Or] = \"Or\";\nBinaryOperator[BinaryOperator.Lower] = \"Lower\";\nBinaryOperator[BinaryOperator.LowerEquals] = \"LowerEquals\";\nBinaryOperator[BinaryOperator.Bigger] = \"Bigger\";\nBinaryOperator[BinaryOperator.BiggerEquals] = \"BiggerEquals\";\n/**\n * @abstract\n */\nvar Expression = (function () {\n /**\n * @param {?} type\n * @param {?=} sourceSpan\n */\n function Expression(type, sourceSpan) {\n this.type = type;\n this.sourceSpan = sourceSpan;\n }\n /**\n * @abstract\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n Expression.prototype.visitExpression = function (visitor, context) { };\n /**\n * @param {?} name\n * @param {?=} sourceSpan\n * @return {?}\n */\n Expression.prototype.prop = function (name, sourceSpan) {\n return new ReadPropExpr(this, name, null, sourceSpan);\n };\n /**\n * @param {?} index\n * @param {?=} type\n * @param {?=} sourceSpan\n * @return {?}\n */\n Expression.prototype.key = function (index, type, sourceSpan) {\n if (type === void 0) { type = null; }\n return new ReadKeyExpr(this, index, type, sourceSpan);\n };\n /**\n * @param {?} name\n * @param {?} params\n * @param {?=} sourceSpan\n * @return {?}\n */\n Expression.prototype.callMethod = function (name, params, sourceSpan) {\n return new InvokeMethodExpr(this, name, params, null, sourceSpan);\n };\n /**\n * @param {?} params\n * @param {?=} sourceSpan\n * @return {?}\n */\n Expression.prototype.callFn = function (params, sourceSpan) {\n return new InvokeFunctionExpr(this, params, null, sourceSpan);\n };\n /**\n * @param {?} params\n * @param {?=} type\n * @param {?=} sourceSpan\n * @return {?}\n */\n Expression.prototype.instantiate = function (params, type, sourceSpan) {\n if (type === void 0) { type = null; }\n return new InstantiateExpr(this, params, type, sourceSpan);\n };\n /**\n * @param {?} trueCase\n * @param {?=} falseCase\n * @param {?=} sourceSpan\n * @return {?}\n */\n Expression.prototype.conditional = function (trueCase, falseCase, sourceSpan) {\n if (falseCase === void 0) { falseCase = null; }\n return new ConditionalExpr(this, trueCase, falseCase, null, sourceSpan);\n };\n /**\n * @param {?} rhs\n * @param {?=} sourceSpan\n * @return {?}\n */\n Expression.prototype.equals = function (rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Equals, this, rhs, null, sourceSpan);\n };\n /**\n * @param {?} rhs\n * @param {?=} sourceSpan\n * @return {?}\n */\n Expression.prototype.notEquals = function (rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.NotEquals, this, rhs, null, sourceSpan);\n };\n /**\n * @param {?} rhs\n * @param {?=} sourceSpan\n * @return {?}\n */\n Expression.prototype.identical = function (rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Identical, this, rhs, null, sourceSpan);\n };\n /**\n * @param {?} rhs\n * @param {?=} sourceSpan\n * @return {?}\n */\n Expression.prototype.notIdentical = function (rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.NotIdentical, this, rhs, null, sourceSpan);\n };\n /**\n * @param {?} rhs\n * @param {?=} sourceSpan\n * @return {?}\n */\n Expression.prototype.minus = function (rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Minus, this, rhs, null, sourceSpan);\n };\n /**\n * @param {?} rhs\n * @param {?=} sourceSpan\n * @return {?}\n */\n Expression.prototype.plus = function (rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Plus, this, rhs, null, sourceSpan);\n };\n /**\n * @param {?} rhs\n * @param {?=} sourceSpan\n * @return {?}\n */\n Expression.prototype.divide = function (rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Divide, this, rhs, null, sourceSpan);\n };\n /**\n * @param {?} rhs\n * @param {?=} sourceSpan\n * @return {?}\n */\n Expression.prototype.multiply = function (rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Multiply, this, rhs, null, sourceSpan);\n };\n /**\n * @param {?} rhs\n * @param {?=} sourceSpan\n * @return {?}\n */\n Expression.prototype.modulo = function (rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Modulo, this, rhs, null, sourceSpan);\n };\n /**\n * @param {?} rhs\n * @param {?=} sourceSpan\n * @return {?}\n */\n Expression.prototype.and = function (rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.And, this, rhs, null, sourceSpan);\n };\n /**\n * @param {?} rhs\n * @param {?=} sourceSpan\n * @return {?}\n */\n Expression.prototype.or = function (rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Or, this, rhs, null, sourceSpan);\n };\n /**\n * @param {?} rhs\n * @param {?=} sourceSpan\n * @return {?}\n */\n Expression.prototype.lower = function (rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Lower, this, rhs, null, sourceSpan);\n };\n /**\n * @param {?} rhs\n * @param {?=} sourceSpan\n * @return {?}\n */\n Expression.prototype.lowerEquals = function (rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.LowerEquals, this, rhs, null, sourceSpan);\n };\n /**\n * @param {?} rhs\n * @param {?=} sourceSpan\n * @return {?}\n */\n Expression.prototype.bigger = function (rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.Bigger, this, rhs, null, sourceSpan);\n };\n /**\n * @param {?} rhs\n * @param {?=} sourceSpan\n * @return {?}\n */\n Expression.prototype.biggerEquals = function (rhs, sourceSpan) {\n return new BinaryOperatorExpr(BinaryOperator.BiggerEquals, this, rhs, null, sourceSpan);\n };\n /**\n * @param {?=} sourceSpan\n * @return {?}\n */\n Expression.prototype.isBlank = function (sourceSpan) {\n // Note: We use equals by purpose here to compare to null and undefined in JS.\n // We use the typed null to allow strictNullChecks to narrow types.\n return this.equals(TYPED_NULL_EXPR, sourceSpan);\n };\n /**\n * @param {?} type\n * @param {?=} sourceSpan\n * @return {?}\n */\n Expression.prototype.cast = function (type, sourceSpan) {\n return new CastExpr(this, type, sourceSpan);\n };\n /**\n * @return {?}\n */\n Expression.prototype.toStmt = function () { return new ExpressionStatement(this); };\n return Expression;\n}());\nvar BuiltinVar = {};\nBuiltinVar.This = 0;\nBuiltinVar.Super = 1;\nBuiltinVar.CatchError = 2;\nBuiltinVar.CatchStack = 3;\nBuiltinVar[BuiltinVar.This] = \"This\";\nBuiltinVar[BuiltinVar.Super] = \"Super\";\nBuiltinVar[BuiltinVar.CatchError] = \"CatchError\";\nBuiltinVar[BuiltinVar.CatchStack] = \"CatchStack\";\nvar ReadVarExpr = (function (_super) {\n __extends(ReadVarExpr, _super);\n /**\n * @param {?} name\n * @param {?=} type\n * @param {?=} sourceSpan\n */\n function ReadVarExpr(name, type, sourceSpan) {\n if (type === void 0) { type = null; }\n var _this = _super.call(this, type, sourceSpan) || this;\n if (typeof name === 'string') {\n _this.name = name;\n _this.builtin = null;\n }\n else {\n _this.name = null;\n _this.builtin = name;\n }\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n ReadVarExpr.prototype.visitExpression = function (visitor, context) {\n return visitor.visitReadVarExpr(this, context);\n };\n /**\n * @param {?} value\n * @return {?}\n */\n ReadVarExpr.prototype.set = function (value) {\n return new WriteVarExpr(this.name, value, null, this.sourceSpan);\n };\n return ReadVarExpr;\n}(Expression));\nvar WriteVarExpr = (function (_super) {\n __extends(WriteVarExpr, _super);\n /**\n * @param {?} name\n * @param {?} value\n * @param {?=} type\n * @param {?=} sourceSpan\n */\n function WriteVarExpr(name, value, type, sourceSpan) {\n if (type === void 0) { type = null; }\n var _this = _super.call(this, type || value.type, sourceSpan) || this;\n _this.name = name;\n _this.value = value;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n WriteVarExpr.prototype.visitExpression = function (visitor, context) {\n return visitor.visitWriteVarExpr(this, context);\n };\n /**\n * @param {?=} type\n * @param {?=} modifiers\n * @return {?}\n */\n WriteVarExpr.prototype.toDeclStmt = function (type, modifiers) {\n if (type === void 0) { type = null; }\n if (modifiers === void 0) { modifiers = null; }\n return new DeclareVarStmt(this.name, this.value, type, modifiers, this.sourceSpan);\n };\n return WriteVarExpr;\n}(Expression));\nvar WriteKeyExpr = (function (_super) {\n __extends(WriteKeyExpr, _super);\n /**\n * @param {?} receiver\n * @param {?} index\n * @param {?} value\n * @param {?=} type\n * @param {?=} sourceSpan\n */\n function WriteKeyExpr(receiver, index, value, type, sourceSpan) {\n if (type === void 0) { type = null; }\n var _this = _super.call(this, type || value.type, sourceSpan) || this;\n _this.receiver = receiver;\n _this.index = index;\n _this.value = value;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n WriteKeyExpr.prototype.visitExpression = function (visitor, context) {\n return visitor.visitWriteKeyExpr(this, context);\n };\n return WriteKeyExpr;\n}(Expression));\nvar WritePropExpr = (function (_super) {\n __extends(WritePropExpr, _super);\n /**\n * @param {?} receiver\n * @param {?} name\n * @param {?} value\n * @param {?=} type\n * @param {?=} sourceSpan\n */\n function WritePropExpr(receiver, name, value, type, sourceSpan) {\n if (type === void 0) { type = null; }\n var _this = _super.call(this, type || value.type, sourceSpan) || this;\n _this.receiver = receiver;\n _this.name = name;\n _this.value = value;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n WritePropExpr.prototype.visitExpression = function (visitor, context) {\n return visitor.visitWritePropExpr(this, context);\n };\n return WritePropExpr;\n}(Expression));\nvar BuiltinMethod = {};\nBuiltinMethod.ConcatArray = 0;\nBuiltinMethod.SubscribeObservable = 1;\nBuiltinMethod.Bind = 2;\nBuiltinMethod[BuiltinMethod.ConcatArray] = \"ConcatArray\";\nBuiltinMethod[BuiltinMethod.SubscribeObservable] = \"SubscribeObservable\";\nBuiltinMethod[BuiltinMethod.Bind] = \"Bind\";\nvar InvokeMethodExpr = (function (_super) {\n __extends(InvokeMethodExpr, _super);\n /**\n * @param {?} receiver\n * @param {?} method\n * @param {?} args\n * @param {?=} type\n * @param {?=} sourceSpan\n */\n function InvokeMethodExpr(receiver, method, args, type, sourceSpan) {\n if (type === void 0) { type = null; }\n var _this = _super.call(this, type, sourceSpan) || this;\n _this.receiver = receiver;\n _this.args = args;\n if (typeof method === 'string') {\n _this.name = method;\n _this.builtin = null;\n }\n else {\n _this.name = null;\n _this.builtin = method;\n }\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n InvokeMethodExpr.prototype.visitExpression = function (visitor, context) {\n return visitor.visitInvokeMethodExpr(this, context);\n };\n return InvokeMethodExpr;\n}(Expression));\nvar InvokeFunctionExpr = (function (_super) {\n __extends(InvokeFunctionExpr, _super);\n /**\n * @param {?} fn\n * @param {?} args\n * @param {?=} type\n * @param {?=} sourceSpan\n */\n function InvokeFunctionExpr(fn, args, type, sourceSpan) {\n if (type === void 0) { type = null; }\n var _this = _super.call(this, type, sourceSpan) || this;\n _this.fn = fn;\n _this.args = args;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n InvokeFunctionExpr.prototype.visitExpression = function (visitor, context) {\n return visitor.visitInvokeFunctionExpr(this, context);\n };\n return InvokeFunctionExpr;\n}(Expression));\nvar InstantiateExpr = (function (_super) {\n __extends(InstantiateExpr, _super);\n /**\n * @param {?} classExpr\n * @param {?} args\n * @param {?=} type\n * @param {?=} sourceSpan\n */\n function InstantiateExpr(classExpr, args, type, sourceSpan) {\n var _this = _super.call(this, type, sourceSpan) || this;\n _this.classExpr = classExpr;\n _this.args = args;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n InstantiateExpr.prototype.visitExpression = function (visitor, context) {\n return visitor.visitInstantiateExpr(this, context);\n };\n return InstantiateExpr;\n}(Expression));\nvar LiteralExpr = (function (_super) {\n __extends(LiteralExpr, _super);\n /**\n * @param {?} value\n * @param {?=} type\n * @param {?=} sourceSpan\n */\n function LiteralExpr(value, type, sourceSpan) {\n if (type === void 0) { type = null; }\n var _this = _super.call(this, type, sourceSpan) || this;\n _this.value = value;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n LiteralExpr.prototype.visitExpression = function (visitor, context) {\n return visitor.visitLiteralExpr(this, context);\n };\n return LiteralExpr;\n}(Expression));\nvar ExternalExpr = (function (_super) {\n __extends(ExternalExpr, _super);\n /**\n * @param {?} value\n * @param {?=} type\n * @param {?=} typeParams\n * @param {?=} sourceSpan\n */\n function ExternalExpr(value, type, typeParams, sourceSpan) {\n if (type === void 0) { type = null; }\n if (typeParams === void 0) { typeParams = null; }\n var _this = _super.call(this, type, sourceSpan) || this;\n _this.value = value;\n _this.typeParams = typeParams;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n ExternalExpr.prototype.visitExpression = function (visitor, context) {\n return visitor.visitExternalExpr(this, context);\n };\n return ExternalExpr;\n}(Expression));\nvar ConditionalExpr = (function (_super) {\n __extends(ConditionalExpr, _super);\n /**\n * @param {?} condition\n * @param {?} trueCase\n * @param {?=} falseCase\n * @param {?=} type\n * @param {?=} sourceSpan\n */\n function ConditionalExpr(condition, trueCase, falseCase, type, sourceSpan) {\n if (falseCase === void 0) { falseCase = null; }\n if (type === void 0) { type = null; }\n var _this = _super.call(this, type || trueCase.type, sourceSpan) || this;\n _this.condition = condition;\n _this.falseCase = falseCase;\n _this.trueCase = trueCase;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n ConditionalExpr.prototype.visitExpression = function (visitor, context) {\n return visitor.visitConditionalExpr(this, context);\n };\n return ConditionalExpr;\n}(Expression));\nvar NotExpr = (function (_super) {\n __extends(NotExpr, _super);\n /**\n * @param {?} condition\n * @param {?=} sourceSpan\n */\n function NotExpr(condition, sourceSpan) {\n var _this = _super.call(this, BOOL_TYPE, sourceSpan) || this;\n _this.condition = condition;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n NotExpr.prototype.visitExpression = function (visitor, context) {\n return visitor.visitNotExpr(this, context);\n };\n return NotExpr;\n}(Expression));\nvar CastExpr = (function (_super) {\n __extends(CastExpr, _super);\n /**\n * @param {?} value\n * @param {?} type\n * @param {?=} sourceSpan\n */\n function CastExpr(value, type, sourceSpan) {\n var _this = _super.call(this, type, sourceSpan) || this;\n _this.value = value;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n CastExpr.prototype.visitExpression = function (visitor, context) {\n return visitor.visitCastExpr(this, context);\n };\n return CastExpr;\n}(Expression));\nvar FnParam = (function () {\n /**\n * @param {?} name\n * @param {?=} type\n */\n function FnParam(name, type) {\n if (type === void 0) { type = null; }\n this.name = name;\n this.type = type;\n }\n return FnParam;\n}());\nvar FunctionExpr = (function (_super) {\n __extends(FunctionExpr, _super);\n /**\n * @param {?} params\n * @param {?} statements\n * @param {?=} type\n * @param {?=} sourceSpan\n */\n function FunctionExpr(params, statements, type, sourceSpan) {\n if (type === void 0) { type = null; }\n var _this = _super.call(this, type, sourceSpan) || this;\n _this.params = params;\n _this.statements = statements;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n FunctionExpr.prototype.visitExpression = function (visitor, context) {\n return visitor.visitFunctionExpr(this, context);\n };\n /**\n * @param {?} name\n * @param {?=} modifiers\n * @return {?}\n */\n FunctionExpr.prototype.toDeclStmt = function (name, modifiers) {\n if (modifiers === void 0) { modifiers = null; }\n return new DeclareFunctionStmt(name, this.params, this.statements, this.type, modifiers, this.sourceSpan);\n };\n return FunctionExpr;\n}(Expression));\nvar BinaryOperatorExpr = (function (_super) {\n __extends(BinaryOperatorExpr, _super);\n /**\n * @param {?} operator\n * @param {?} lhs\n * @param {?} rhs\n * @param {?=} type\n * @param {?=} sourceSpan\n */\n function BinaryOperatorExpr(operator, lhs, rhs, type, sourceSpan) {\n if (type === void 0) { type = null; }\n var _this = _super.call(this, type || lhs.type, sourceSpan) || this;\n _this.operator = operator;\n _this.rhs = rhs;\n _this.lhs = lhs;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n BinaryOperatorExpr.prototype.visitExpression = function (visitor, context) {\n return visitor.visitBinaryOperatorExpr(this, context);\n };\n return BinaryOperatorExpr;\n}(Expression));\nvar ReadPropExpr = (function (_super) {\n __extends(ReadPropExpr, _super);\n /**\n * @param {?} receiver\n * @param {?} name\n * @param {?=} type\n * @param {?=} sourceSpan\n */\n function ReadPropExpr(receiver, name, type, sourceSpan) {\n if (type === void 0) { type = null; }\n var _this = _super.call(this, type, sourceSpan) || this;\n _this.receiver = receiver;\n _this.name = name;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n ReadPropExpr.prototype.visitExpression = function (visitor, context) {\n return visitor.visitReadPropExpr(this, context);\n };\n /**\n * @param {?} value\n * @return {?}\n */\n ReadPropExpr.prototype.set = function (value) {\n return new WritePropExpr(this.receiver, this.name, value, null, this.sourceSpan);\n };\n return ReadPropExpr;\n}(Expression));\nvar ReadKeyExpr = (function (_super) {\n __extends(ReadKeyExpr, _super);\n /**\n * @param {?} receiver\n * @param {?} index\n * @param {?=} type\n * @param {?=} sourceSpan\n */\n function ReadKeyExpr(receiver, index, type, sourceSpan) {\n if (type === void 0) { type = null; }\n var _this = _super.call(this, type, sourceSpan) || this;\n _this.receiver = receiver;\n _this.index = index;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n ReadKeyExpr.prototype.visitExpression = function (visitor, context) {\n return visitor.visitReadKeyExpr(this, context);\n };\n /**\n * @param {?} value\n * @return {?}\n */\n ReadKeyExpr.prototype.set = function (value) {\n return new WriteKeyExpr(this.receiver, this.index, value, null, this.sourceSpan);\n };\n return ReadKeyExpr;\n}(Expression));\nvar LiteralArrayExpr = (function (_super) {\n __extends(LiteralArrayExpr, _super);\n /**\n * @param {?} entries\n * @param {?=} type\n * @param {?=} sourceSpan\n */\n function LiteralArrayExpr(entries, type, sourceSpan) {\n if (type === void 0) { type = null; }\n var _this = _super.call(this, type, sourceSpan) || this;\n _this.entries = entries;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n LiteralArrayExpr.prototype.visitExpression = function (visitor, context) {\n return visitor.visitLiteralArrayExpr(this, context);\n };\n return LiteralArrayExpr;\n}(Expression));\nvar LiteralMapEntry = (function () {\n /**\n * @param {?} key\n * @param {?} value\n * @param {?=} quoted\n */\n function LiteralMapEntry(key, value, quoted) {\n if (quoted === void 0) { quoted = false; }\n this.key = key;\n this.value = value;\n this.quoted = quoted;\n }\n return LiteralMapEntry;\n}());\nvar LiteralMapExpr = (function (_super) {\n __extends(LiteralMapExpr, _super);\n /**\n * @param {?} entries\n * @param {?=} type\n * @param {?=} sourceSpan\n */\n function LiteralMapExpr(entries, type, sourceSpan) {\n if (type === void 0) { type = null; }\n var _this = _super.call(this, type, sourceSpan) || this;\n _this.entries = entries;\n _this.valueType = null;\n if (type) {\n _this.valueType = type.valueType;\n }\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n LiteralMapExpr.prototype.visitExpression = function (visitor, context) {\n return visitor.visitLiteralMapExpr(this, context);\n };\n return LiteralMapExpr;\n}(Expression));\nvar CommaExpr = (function (_super) {\n __extends(CommaExpr, _super);\n /**\n * @param {?} parts\n * @param {?=} sourceSpan\n */\n function CommaExpr(parts, sourceSpan) {\n var _this = _super.call(this, parts[parts.length - 1].type, sourceSpan) || this;\n _this.parts = parts;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n CommaExpr.prototype.visitExpression = function (visitor, context) {\n return visitor.visitCommaExpr(this, context);\n };\n return CommaExpr;\n}(Expression));\nvar THIS_EXPR = new ReadVarExpr(BuiltinVar.This);\nvar SUPER_EXPR = new ReadVarExpr(BuiltinVar.Super);\nvar CATCH_ERROR_VAR = new ReadVarExpr(BuiltinVar.CatchError);\nvar CATCH_STACK_VAR = new ReadVarExpr(BuiltinVar.CatchStack);\nvar NULL_EXPR = new LiteralExpr(null, null);\nvar TYPED_NULL_EXPR = new LiteralExpr(null, INFERRED_TYPE);\nvar StmtModifier = {};\nStmtModifier.Final = 0;\nStmtModifier.Private = 1;\nStmtModifier[StmtModifier.Final] = \"Final\";\nStmtModifier[StmtModifier.Private] = \"Private\";\n/**\n * @abstract\n */\nvar Statement = (function () {\n /**\n * @param {?=} modifiers\n * @param {?=} sourceSpan\n */\n function Statement(modifiers, sourceSpan) {\n if (modifiers === void 0) { modifiers = null; }\n this.modifiers = modifiers;\n this.sourceSpan = sourceSpan;\n if (!modifiers) {\n this.modifiers = [];\n }\n }\n /**\n * @abstract\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n Statement.prototype.visitStatement = function (visitor, context) { };\n /**\n * @param {?} modifier\n * @return {?}\n */\n Statement.prototype.hasModifier = function (modifier) { return this.modifiers.indexOf(modifier) !== -1; };\n return Statement;\n}());\nvar DeclareVarStmt = (function (_super) {\n __extends(DeclareVarStmt, _super);\n /**\n * @param {?} name\n * @param {?} value\n * @param {?=} type\n * @param {?=} modifiers\n * @param {?=} sourceSpan\n */\n function DeclareVarStmt(name, value, type, modifiers, sourceSpan) {\n if (type === void 0) { type = null; }\n if (modifiers === void 0) { modifiers = null; }\n var _this = _super.call(this, modifiers, sourceSpan) || this;\n _this.name = name;\n _this.value = value;\n _this.type = type || value.type;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n DeclareVarStmt.prototype.visitStatement = function (visitor, context) {\n return visitor.visitDeclareVarStmt(this, context);\n };\n return DeclareVarStmt;\n}(Statement));\nvar DeclareFunctionStmt = (function (_super) {\n __extends(DeclareFunctionStmt, _super);\n /**\n * @param {?} name\n * @param {?} params\n * @param {?} statements\n * @param {?=} type\n * @param {?=} modifiers\n * @param {?=} sourceSpan\n */\n function DeclareFunctionStmt(name, params, statements, type, modifiers, sourceSpan) {\n if (type === void 0) { type = null; }\n if (modifiers === void 0) { modifiers = null; }\n var _this = _super.call(this, modifiers, sourceSpan) || this;\n _this.name = name;\n _this.params = params;\n _this.statements = statements;\n _this.type = type;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n DeclareFunctionStmt.prototype.visitStatement = function (visitor, context) {\n return visitor.visitDeclareFunctionStmt(this, context);\n };\n return DeclareFunctionStmt;\n}(Statement));\nvar ExpressionStatement = (function (_super) {\n __extends(ExpressionStatement, _super);\n /**\n * @param {?} expr\n * @param {?=} sourceSpan\n */\n function ExpressionStatement(expr, sourceSpan) {\n var _this = _super.call(this, null, sourceSpan) || this;\n _this.expr = expr;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n ExpressionStatement.prototype.visitStatement = function (visitor, context) {\n return visitor.visitExpressionStmt(this, context);\n };\n return ExpressionStatement;\n}(Statement));\nvar ReturnStatement = (function (_super) {\n __extends(ReturnStatement, _super);\n /**\n * @param {?} value\n * @param {?=} sourceSpan\n */\n function ReturnStatement(value, sourceSpan) {\n var _this = _super.call(this, null, sourceSpan) || this;\n _this.value = value;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n ReturnStatement.prototype.visitStatement = function (visitor, context) {\n return visitor.visitReturnStmt(this, context);\n };\n return ReturnStatement;\n}(Statement));\nvar AbstractClassPart = (function () {\n /**\n * @param {?=} type\n * @param {?=} modifiers\n */\n function AbstractClassPart(type, modifiers) {\n if (type === void 0) { type = null; }\n this.type = type;\n this.modifiers = modifiers;\n if (!modifiers) {\n this.modifiers = [];\n }\n }\n /**\n * @param {?} modifier\n * @return {?}\n */\n AbstractClassPart.prototype.hasModifier = function (modifier) { return this.modifiers.indexOf(modifier) !== -1; };\n return AbstractClassPart;\n}());\nvar ClassField = (function (_super) {\n __extends(ClassField, _super);\n /**\n * @param {?} name\n * @param {?=} type\n * @param {?=} modifiers\n */\n function ClassField(name, type, modifiers) {\n if (type === void 0) { type = null; }\n if (modifiers === void 0) { modifiers = null; }\n var _this = _super.call(this, type, modifiers) || this;\n _this.name = name;\n return _this;\n }\n return ClassField;\n}(AbstractClassPart));\nvar ClassMethod = (function (_super) {\n __extends(ClassMethod, _super);\n /**\n * @param {?} name\n * @param {?} params\n * @param {?} body\n * @param {?=} type\n * @param {?=} modifiers\n */\n function ClassMethod(name, params, body, type, modifiers) {\n if (type === void 0) { type = null; }\n if (modifiers === void 0) { modifiers = null; }\n var _this = _super.call(this, type, modifiers) || this;\n _this.name = name;\n _this.params = params;\n _this.body = body;\n return _this;\n }\n return ClassMethod;\n}(AbstractClassPart));\nvar ClassGetter = (function (_super) {\n __extends(ClassGetter, _super);\n /**\n * @param {?} name\n * @param {?} body\n * @param {?=} type\n * @param {?=} modifiers\n */\n function ClassGetter(name, body, type, modifiers) {\n if (type === void 0) { type = null; }\n if (modifiers === void 0) { modifiers = null; }\n var _this = _super.call(this, type, modifiers) || this;\n _this.name = name;\n _this.body = body;\n return _this;\n }\n return ClassGetter;\n}(AbstractClassPart));\nvar ClassStmt = (function (_super) {\n __extends(ClassStmt, _super);\n /**\n * @param {?} name\n * @param {?} parent\n * @param {?} fields\n * @param {?} getters\n * @param {?} constructorMethod\n * @param {?} methods\n * @param {?=} modifiers\n * @param {?=} sourceSpan\n */\n function ClassStmt(name, parent, fields, getters, constructorMethod, methods, modifiers, sourceSpan) {\n if (modifiers === void 0) { modifiers = null; }\n var _this = _super.call(this, modifiers, sourceSpan) || this;\n _this.name = name;\n _this.parent = parent;\n _this.fields = fields;\n _this.getters = getters;\n _this.constructorMethod = constructorMethod;\n _this.methods = methods;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n ClassStmt.prototype.visitStatement = function (visitor, context) {\n return visitor.visitDeclareClassStmt(this, context);\n };\n return ClassStmt;\n}(Statement));\nvar IfStmt = (function (_super) {\n __extends(IfStmt, _super);\n /**\n * @param {?} condition\n * @param {?} trueCase\n * @param {?=} falseCase\n * @param {?=} sourceSpan\n */\n function IfStmt(condition, trueCase, falseCase, sourceSpan) {\n if (falseCase === void 0) { falseCase = []; }\n var _this = _super.call(this, null, sourceSpan) || this;\n _this.condition = condition;\n _this.trueCase = trueCase;\n _this.falseCase = falseCase;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n IfStmt.prototype.visitStatement = function (visitor, context) {\n return visitor.visitIfStmt(this, context);\n };\n return IfStmt;\n}(Statement));\nvar TryCatchStmt = (function (_super) {\n __extends(TryCatchStmt, _super);\n /**\n * @param {?} bodyStmts\n * @param {?} catchStmts\n * @param {?=} sourceSpan\n */\n function TryCatchStmt(bodyStmts, catchStmts, sourceSpan) {\n var _this = _super.call(this, null, sourceSpan) || this;\n _this.bodyStmts = bodyStmts;\n _this.catchStmts = catchStmts;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n TryCatchStmt.prototype.visitStatement = function (visitor, context) {\n return visitor.visitTryCatchStmt(this, context);\n };\n return TryCatchStmt;\n}(Statement));\nvar ThrowStmt = (function (_super) {\n __extends(ThrowStmt, _super);\n /**\n * @param {?} error\n * @param {?=} sourceSpan\n */\n function ThrowStmt(error, sourceSpan) {\n var _this = _super.call(this, null, sourceSpan) || this;\n _this.error = error;\n return _this;\n }\n /**\n * @param {?} visitor\n * @param {?} context\n * @return {?}\n */\n ThrowStmt.prototype.visitStatement = function (visitor, context) {\n return visitor.visitThrowStmt(this, context);\n };\n return ThrowStmt;\n}(Statement));\nvar AstTransformer$1 = (function () {\n function AstTransformer$1() {\n }\n /**\n * @param {?} expr\n * @param {?} context\n * @return {?}\n */\n AstTransformer$1.prototype.transformExpr = function (expr, context) { return expr; };\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n AstTransformer$1.prototype.transformStmt = function (stmt, context) { return stmt; };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AstTransformer$1.prototype.visitReadVarExpr = function (ast, context) { return this.transformExpr(ast, context); };\n /**\n * @param {?} expr\n * @param {?} context\n * @return {?}\n */\n AstTransformer$1.prototype.visitWriteVarExpr = function (expr, context) {\n return this.transformExpr(new WriteVarExpr(expr.name, expr.value.visitExpression(this, context), expr.type, expr.sourceSpan), context);\n };\n /**\n * @param {?} expr\n * @param {?} context\n * @return {?}\n */\n AstTransformer$1.prototype.visitWriteKeyExpr = function (expr, context) {\n return this.transformExpr(new WriteKeyExpr(expr.receiver.visitExpression(this, context), expr.index.visitExpression(this, context), expr.value.visitExpression(this, context), expr.type, expr.sourceSpan), context);\n };\n /**\n * @param {?} expr\n * @param {?} context\n * @return {?}\n */\n AstTransformer$1.prototype.visitWritePropExpr = function (expr, context) {\n return this.transformExpr(new WritePropExpr(expr.receiver.visitExpression(this, context), expr.name, expr.value.visitExpression(this, context), expr.type, expr.sourceSpan), context);\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AstTransformer$1.prototype.visitInvokeMethodExpr = function (ast, context) {\n var /** @type {?} */ method = ast.builtin || ast.name;\n return this.transformExpr(new InvokeMethodExpr(ast.receiver.visitExpression(this, context), method, this.visitAllExpressions(ast.args, context), ast.type, ast.sourceSpan), context);\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AstTransformer$1.prototype.visitInvokeFunctionExpr = function (ast, context) {\n return this.transformExpr(new InvokeFunctionExpr(ast.fn.visitExpression(this, context), this.visitAllExpressions(ast.args, context), ast.type, ast.sourceSpan), context);\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AstTransformer$1.prototype.visitInstantiateExpr = function (ast, context) {\n return this.transformExpr(new InstantiateExpr(ast.classExpr.visitExpression(this, context), this.visitAllExpressions(ast.args, context), ast.type, ast.sourceSpan), context);\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AstTransformer$1.prototype.visitLiteralExpr = function (ast, context) { return this.transformExpr(ast, context); };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AstTransformer$1.prototype.visitExternalExpr = function (ast, context) {\n return this.transformExpr(ast, context);\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AstTransformer$1.prototype.visitConditionalExpr = function (ast, context) {\n return this.transformExpr(new ConditionalExpr(ast.condition.visitExpression(this, context), ast.trueCase.visitExpression(this, context), ast.falseCase.visitExpression(this, context), ast.type, ast.sourceSpan), context);\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AstTransformer$1.prototype.visitNotExpr = function (ast, context) {\n return this.transformExpr(new NotExpr(ast.condition.visitExpression(this, context), ast.sourceSpan), context);\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AstTransformer$1.prototype.visitCastExpr = function (ast, context) {\n return this.transformExpr(new CastExpr(ast.value.visitExpression(this, context), ast.type, ast.sourceSpan), context);\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AstTransformer$1.prototype.visitFunctionExpr = function (ast, context) {\n return this.transformExpr(new FunctionExpr(ast.params, this.visitAllStatements(ast.statements, context), ast.type, ast.sourceSpan), context);\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AstTransformer$1.prototype.visitBinaryOperatorExpr = function (ast, context) {\n return this.transformExpr(new BinaryOperatorExpr(ast.operator, ast.lhs.visitExpression(this, context), ast.rhs.visitExpression(this, context), ast.type, ast.sourceSpan), context);\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AstTransformer$1.prototype.visitReadPropExpr = function (ast, context) {\n return this.transformExpr(new ReadPropExpr(ast.receiver.visitExpression(this, context), ast.name, ast.type, ast.sourceSpan), context);\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AstTransformer$1.prototype.visitReadKeyExpr = function (ast, context) {\n return this.transformExpr(new ReadKeyExpr(ast.receiver.visitExpression(this, context), ast.index.visitExpression(this, context), ast.type, ast.sourceSpan), context);\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AstTransformer$1.prototype.visitLiteralArrayExpr = function (ast, context) {\n return this.transformExpr(new LiteralArrayExpr(this.visitAllExpressions(ast.entries, context), ast.type, ast.sourceSpan), context);\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AstTransformer$1.prototype.visitLiteralMapExpr = function (ast, context) {\n var _this = this;\n var /** @type {?} */ entries = ast.entries.map(function (entry) { return new LiteralMapEntry(entry.key, entry.value.visitExpression(_this, context), entry.quoted); });\n var /** @type {?} */ mapType = new MapType(ast.valueType);\n return this.transformExpr(new LiteralMapExpr(entries, mapType, ast.sourceSpan), context);\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AstTransformer$1.prototype.visitCommaExpr = function (ast, context) {\n return this.transformExpr(new CommaExpr(this.visitAllExpressions(ast.parts, context), ast.sourceSpan), context);\n };\n /**\n * @param {?} exprs\n * @param {?} context\n * @return {?}\n */\n AstTransformer$1.prototype.visitAllExpressions = function (exprs, context) {\n var _this = this;\n return exprs.map(function (expr) { return expr.visitExpression(_this, context); });\n };\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n AstTransformer$1.prototype.visitDeclareVarStmt = function (stmt, context) {\n return this.transformStmt(new DeclareVarStmt(stmt.name, stmt.value.visitExpression(this, context), stmt.type, stmt.modifiers, stmt.sourceSpan), context);\n };\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n AstTransformer$1.prototype.visitDeclareFunctionStmt = function (stmt, context) {\n return this.transformStmt(new DeclareFunctionStmt(stmt.name, stmt.params, this.visitAllStatements(stmt.statements, context), stmt.type, stmt.modifiers, stmt.sourceSpan), context);\n };\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n AstTransformer$1.prototype.visitExpressionStmt = function (stmt, context) {\n return this.transformStmt(new ExpressionStatement(stmt.expr.visitExpression(this, context), stmt.sourceSpan), context);\n };\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n AstTransformer$1.prototype.visitReturnStmt = function (stmt, context) {\n return this.transformStmt(new ReturnStatement(stmt.value.visitExpression(this, context), stmt.sourceSpan), context);\n };\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n AstTransformer$1.prototype.visitDeclareClassStmt = function (stmt, context) {\n var _this = this;\n var /** @type {?} */ parent = stmt.parent.visitExpression(this, context);\n var /** @type {?} */ getters = stmt.getters.map(function (getter) { return new ClassGetter(getter.name, _this.visitAllStatements(getter.body, context), getter.type, getter.modifiers); });\n var /** @type {?} */ ctorMethod = stmt.constructorMethod &&\n new ClassMethod(stmt.constructorMethod.name, stmt.constructorMethod.params, this.visitAllStatements(stmt.constructorMethod.body, context), stmt.constructorMethod.type, stmt.constructorMethod.modifiers);\n var /** @type {?} */ methods = stmt.methods.map(function (method) { return new ClassMethod(method.name, method.params, _this.visitAllStatements(method.body, context), method.type, method.modifiers); });\n return this.transformStmt(new ClassStmt(stmt.name, parent, stmt.fields, getters, ctorMethod, methods, stmt.modifiers, stmt.sourceSpan), context);\n };\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n AstTransformer$1.prototype.visitIfStmt = function (stmt, context) {\n return this.transformStmt(new IfStmt(stmt.condition.visitExpression(this, context), this.visitAllStatements(stmt.trueCase, context), this.visitAllStatements(stmt.falseCase, context), stmt.sourceSpan), context);\n };\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n AstTransformer$1.prototype.visitTryCatchStmt = function (stmt, context) {\n return this.transformStmt(new TryCatchStmt(this.visitAllStatements(stmt.bodyStmts, context), this.visitAllStatements(stmt.catchStmts, context), stmt.sourceSpan), context);\n };\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n AstTransformer$1.prototype.visitThrowStmt = function (stmt, context) {\n return this.transformStmt(new ThrowStmt(stmt.error.visitExpression(this, context), stmt.sourceSpan), context);\n };\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n AstTransformer$1.prototype.visitCommentStmt = function (stmt, context) {\n return this.transformStmt(stmt, context);\n };\n /**\n * @param {?} stmts\n * @param {?} context\n * @return {?}\n */\n AstTransformer$1.prototype.visitAllStatements = function (stmts, context) {\n var _this = this;\n return stmts.map(function (stmt) { return stmt.visitStatement(_this, context); });\n };\n return AstTransformer$1;\n}());\nvar RecursiveAstVisitor$1 = (function () {\n function RecursiveAstVisitor$1() {\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor$1.prototype.visitReadVarExpr = function (ast, context) { return ast; };\n /**\n * @param {?} expr\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor$1.prototype.visitWriteVarExpr = function (expr, context) {\n expr.value.visitExpression(this, context);\n return expr;\n };\n /**\n * @param {?} expr\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor$1.prototype.visitWriteKeyExpr = function (expr, context) {\n expr.receiver.visitExpression(this, context);\n expr.index.visitExpression(this, context);\n expr.value.visitExpression(this, context);\n return expr;\n };\n /**\n * @param {?} expr\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor$1.prototype.visitWritePropExpr = function (expr, context) {\n expr.receiver.visitExpression(this, context);\n expr.value.visitExpression(this, context);\n return expr;\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor$1.prototype.visitInvokeMethodExpr = function (ast, context) {\n ast.receiver.visitExpression(this, context);\n this.visitAllExpressions(ast.args, context);\n return ast;\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor$1.prototype.visitInvokeFunctionExpr = function (ast, context) {\n ast.fn.visitExpression(this, context);\n this.visitAllExpressions(ast.args, context);\n return ast;\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor$1.prototype.visitInstantiateExpr = function (ast, context) {\n ast.classExpr.visitExpression(this, context);\n this.visitAllExpressions(ast.args, context);\n return ast;\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor$1.prototype.visitLiteralExpr = function (ast, context) { return ast; };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor$1.prototype.visitExternalExpr = function (ast, context) { return ast; };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor$1.prototype.visitConditionalExpr = function (ast, context) {\n ast.condition.visitExpression(this, context);\n ast.trueCase.visitExpression(this, context);\n ast.falseCase.visitExpression(this, context);\n return ast;\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor$1.prototype.visitNotExpr = function (ast, context) {\n ast.condition.visitExpression(this, context);\n return ast;\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor$1.prototype.visitCastExpr = function (ast, context) {\n ast.value.visitExpression(this, context);\n return ast;\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor$1.prototype.visitFunctionExpr = function (ast, context) {\n this.visitAllStatements(ast.statements, context);\n return ast;\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor$1.prototype.visitBinaryOperatorExpr = function (ast, context) {\n ast.lhs.visitExpression(this, context);\n ast.rhs.visitExpression(this, context);\n return ast;\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor$1.prototype.visitReadPropExpr = function (ast, context) {\n ast.receiver.visitExpression(this, context);\n return ast;\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor$1.prototype.visitReadKeyExpr = function (ast, context) {\n ast.receiver.visitExpression(this, context);\n ast.index.visitExpression(this, context);\n return ast;\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor$1.prototype.visitLiteralArrayExpr = function (ast, context) {\n this.visitAllExpressions(ast.entries, context);\n return ast;\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor$1.prototype.visitLiteralMapExpr = function (ast, context) {\n var _this = this;\n ast.entries.forEach(function (entry) { return entry.value.visitExpression(_this, context); });\n return ast;\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor$1.prototype.visitCommaExpr = function (ast, context) {\n this.visitAllExpressions(ast.parts, context);\n };\n /**\n * @param {?} exprs\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor$1.prototype.visitAllExpressions = function (exprs, context) {\n var _this = this;\n exprs.forEach(function (expr) { return expr.visitExpression(_this, context); });\n };\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor$1.prototype.visitDeclareVarStmt = function (stmt, context) {\n stmt.value.visitExpression(this, context);\n return stmt;\n };\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor$1.prototype.visitDeclareFunctionStmt = function (stmt, context) {\n this.visitAllStatements(stmt.statements, context);\n return stmt;\n };\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor$1.prototype.visitExpressionStmt = function (stmt, context) {\n stmt.expr.visitExpression(this, context);\n return stmt;\n };\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor$1.prototype.visitReturnStmt = function (stmt, context) {\n stmt.value.visitExpression(this, context);\n return stmt;\n };\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor$1.prototype.visitDeclareClassStmt = function (stmt, context) {\n var _this = this;\n stmt.parent.visitExpression(this, context);\n stmt.getters.forEach(function (getter) { return _this.visitAllStatements(getter.body, context); });\n if (stmt.constructorMethod) {\n this.visitAllStatements(stmt.constructorMethod.body, context);\n }\n stmt.methods.forEach(function (method) { return _this.visitAllStatements(method.body, context); });\n return stmt;\n };\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor$1.prototype.visitIfStmt = function (stmt, context) {\n stmt.condition.visitExpression(this, context);\n this.visitAllStatements(stmt.trueCase, context);\n this.visitAllStatements(stmt.falseCase, context);\n return stmt;\n };\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor$1.prototype.visitTryCatchStmt = function (stmt, context) {\n this.visitAllStatements(stmt.bodyStmts, context);\n this.visitAllStatements(stmt.catchStmts, context);\n return stmt;\n };\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor$1.prototype.visitThrowStmt = function (stmt, context) {\n stmt.error.visitExpression(this, context);\n return stmt;\n };\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor$1.prototype.visitCommentStmt = function (stmt, context) { return stmt; };\n /**\n * @param {?} stmts\n * @param {?} context\n * @return {?}\n */\n RecursiveAstVisitor$1.prototype.visitAllStatements = function (stmts, context) {\n var _this = this;\n stmts.forEach(function (stmt) { return stmt.visitStatement(_this, context); });\n };\n return RecursiveAstVisitor$1;\n}());\n/**\n * @param {?} stmts\n * @return {?}\n */\nfunction findReadVarNames(stmts) {\n var /** @type {?} */ visitor = new _ReadVarVisitor();\n visitor.visitAllStatements(stmts, null);\n return visitor.varNames;\n}\nvar _ReadVarVisitor = (function (_super) {\n __extends(_ReadVarVisitor, _super);\n function _ReadVarVisitor() {\n var _this = _super.apply(this, arguments) || this;\n _this.varNames = new Set();\n return _this;\n }\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n _ReadVarVisitor.prototype.visitDeclareFunctionStmt = function (stmt, context) {\n // Don't descend into nested functions\n return stmt;\n };\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n _ReadVarVisitor.prototype.visitDeclareClassStmt = function (stmt, context) {\n // Don't descend into nested classes\n return stmt;\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n _ReadVarVisitor.prototype.visitReadVarExpr = function (ast, context) {\n this.varNames.add(ast.name);\n return null;\n };\n return _ReadVarVisitor;\n}(RecursiveAstVisitor$1));\n/**\n * @param {?} stmt\n * @param {?} sourceSpan\n * @return {?}\n */\nfunction applySourceSpanToStatementIfNeeded(stmt, sourceSpan) {\n if (!sourceSpan) {\n return stmt;\n }\n var /** @type {?} */ transformer = new _ApplySourceSpanTransformer(sourceSpan);\n return stmt.visitStatement(transformer, null);\n}\n/**\n * @param {?} expr\n * @param {?} sourceSpan\n * @return {?}\n */\nfunction applySourceSpanToExpressionIfNeeded(expr, sourceSpan) {\n if (!sourceSpan) {\n return expr;\n }\n var /** @type {?} */ transformer = new _ApplySourceSpanTransformer(sourceSpan);\n return expr.visitExpression(transformer, null);\n}\nvar _ApplySourceSpanTransformer = (function (_super) {\n __extends(_ApplySourceSpanTransformer, _super);\n /**\n * @param {?} sourceSpan\n */\n function _ApplySourceSpanTransformer(sourceSpan) {\n var _this = _super.call(this) || this;\n _this.sourceSpan = sourceSpan;\n return _this;\n }\n /**\n * @param {?} obj\n * @return {?}\n */\n _ApplySourceSpanTransformer.prototype._clone = function (obj) {\n var /** @type {?} */ clone = Object.create(obj.constructor.prototype);\n for (var /** @type {?} */ prop in obj) {\n clone[prop] = obj[prop];\n }\n return clone;\n };\n /**\n * @param {?} expr\n * @param {?} context\n * @return {?}\n */\n _ApplySourceSpanTransformer.prototype.transformExpr = function (expr, context) {\n if (!expr.sourceSpan) {\n expr = this._clone(expr);\n expr.sourceSpan = this.sourceSpan;\n }\n return expr;\n };\n /**\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n _ApplySourceSpanTransformer.prototype.transformStmt = function (stmt, context) {\n if (!stmt.sourceSpan) {\n stmt = this._clone(stmt);\n stmt.sourceSpan = this.sourceSpan;\n }\n return stmt;\n };\n return _ApplySourceSpanTransformer;\n}(AstTransformer$1));\n/**\n * @param {?} name\n * @param {?=} type\n * @param {?=} sourceSpan\n * @return {?}\n */\nfunction variable(name, type, sourceSpan) {\n if (type === void 0) { type = null; }\n return new ReadVarExpr(name, type, sourceSpan);\n}\n/**\n * @param {?} id\n * @param {?=} typeParams\n * @param {?=} sourceSpan\n * @return {?}\n */\nfunction importExpr(id, typeParams, sourceSpan) {\n if (typeParams === void 0) { typeParams = null; }\n return new ExternalExpr(id, null, typeParams, sourceSpan);\n}\n/**\n * @param {?} id\n * @param {?=} typeParams\n * @param {?=} typeModifiers\n * @return {?}\n */\nfunction importType(id, typeParams, typeModifiers) {\n if (typeParams === void 0) { typeParams = null; }\n if (typeModifiers === void 0) { typeModifiers = null; }\n return id != null ? expressionType(importExpr(id, typeParams), typeModifiers) : null;\n}\n/**\n * @param {?} expr\n * @param {?=} typeModifiers\n * @return {?}\n */\nfunction expressionType(expr, typeModifiers) {\n if (typeModifiers === void 0) { typeModifiers = null; }\n return expr != null ? new ExpressionType(expr, typeModifiers) : null;\n}\n/**\n * @param {?} values\n * @param {?=} type\n * @param {?=} sourceSpan\n * @return {?}\n */\nfunction literalArr(values, type, sourceSpan) {\n if (type === void 0) { type = null; }\n return new LiteralArrayExpr(values, type, sourceSpan);\n}\n/**\n * @param {?} values\n * @param {?=} type\n * @param {?=} quoted\n * @return {?}\n */\nfunction literalMap(values, type, quoted) {\n if (type === void 0) { type = null; }\n if (quoted === void 0) { quoted = false; }\n return new LiteralMapExpr(values.map(function (entry) { return new LiteralMapEntry(entry[0], entry[1], quoted); }), type);\n}\n/**\n * @param {?} expr\n * @param {?=} sourceSpan\n * @return {?}\n */\nfunction not(expr, sourceSpan) {\n return new NotExpr(expr, sourceSpan);\n}\n/**\n * @param {?} params\n * @param {?} body\n * @param {?=} type\n * @param {?=} sourceSpan\n * @return {?}\n */\nfunction fn(params, body, type, sourceSpan) {\n if (type === void 0) { type = null; }\n return new FunctionExpr(params, body, type, sourceSpan);\n}\n/**\n * @param {?} value\n * @param {?=} type\n * @param {?=} sourceSpan\n * @return {?}\n */\nfunction literal(value, type, sourceSpan) {\n if (type === void 0) { type = null; }\n return new LiteralExpr(value, type, sourceSpan);\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 * Create a new class stmts based on the given data.\n * @param {?} config\n * @return {?}\n */\nfunction createClassStmt(config) {\n var /** @type {?} */ parentArgs = config.parentArgs || [];\n var /** @type {?} */ superCtorStmts = config.parent ? [SUPER_EXPR.callFn(parentArgs).toStmt()] : [];\n var /** @type {?} */ builder = concatClassBuilderParts(Array.isArray(config.builders) ? config.builders : [config.builders]);\n var /** @type {?} */ ctor = new ClassMethod(null, config.ctorParams || [], superCtorStmts.concat(builder.ctorStmts));\n return new ClassStmt(config.name, config.parent, builder.fields, builder.getters, ctor, builder.methods, config.modifiers || [], config.sourceSpan);\n}\n/**\n * @param {?} builders\n * @return {?}\n */\nfunction concatClassBuilderParts(builders) {\n return {\n fields: [].concat.apply([], builders.map(function (builder) { return builder.fields || []; })),\n methods: [].concat.apply([], builders.map(function (builder) { return builder.methods || []; })),\n getters: [].concat.apply([], builders.map(function (builder) { return builder.getters || []; })),\n ctorStmts: [].concat.apply([], builders.map(function (builder) { return builder.ctorStmts || []; })),\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 */\nvar QUOTED_KEYS = '$quoted$';\n/**\n * @param {?} value\n * @param {?=} type\n * @return {?}\n */\nfunction convertValueToOutputAst(value, type) {\n if (type === void 0) { type = null; }\n return visitValue(value, new _ValueOutputAstTransformer(), type);\n}\nvar _ValueOutputAstTransformer = (function () {\n function _ValueOutputAstTransformer() {\n }\n /**\n * @param {?} arr\n * @param {?} type\n * @return {?}\n */\n _ValueOutputAstTransformer.prototype.visitArray = function (arr, type) {\n var _this = this;\n return literalArr(arr.map(function (value) { return visitValue(value, _this, null); }), type);\n };\n /**\n * @param {?} map\n * @param {?} type\n * @return {?}\n */\n _ValueOutputAstTransformer.prototype.visitStringMap = function (map, type) {\n var _this = this;\n var /** @type {?} */ entries = [];\n var /** @type {?} */ quotedSet = new Set(map && map[QUOTED_KEYS]);\n Object.keys(map).forEach(function (key) {\n entries.push(new LiteralMapEntry(key, visitValue(map[key], _this, null), quotedSet.has(key)));\n });\n return new LiteralMapExpr(entries, type);\n };\n /**\n * @param {?} value\n * @param {?} type\n * @return {?}\n */\n _ValueOutputAstTransformer.prototype.visitPrimitive = function (value, type) { return literal(value, type); };\n /**\n * @param {?} value\n * @param {?} type\n * @return {?}\n */\n _ValueOutputAstTransformer.prototype.visitOther = function (value, type) {\n if (value instanceof Expression) {\n return value;\n }\n else {\n return importExpr({ reference: value });\n }\n };\n return _ValueOutputAstTransformer;\n}());\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * This is currently not read, but will probably be used in the future.\n * We keep it as we already pass it through all the rigth places...\n */\nvar ComponentFactoryDependency = (function () {\n /**\n * @param {?} compType\n */\n function ComponentFactoryDependency(compType) {\n this.compType = compType;\n }\n return ComponentFactoryDependency;\n}());\nvar NgModuleCompileResult = (function () {\n /**\n * @param {?} statements\n * @param {?} ngModuleFactoryVar\n * @param {?} dependencies\n */\n function NgModuleCompileResult(statements, ngModuleFactoryVar, dependencies) {\n this.statements = statements;\n this.ngModuleFactoryVar = ngModuleFactoryVar;\n this.dependencies = dependencies;\n }\n return NgModuleCompileResult;\n}());\nvar NgModuleCompiler = (function () {\n function NgModuleCompiler() {\n }\n /**\n * @param {?} ngModuleMeta\n * @param {?} extraProviders\n * @return {?}\n */\n NgModuleCompiler.prototype.compile = function (ngModuleMeta, extraProviders) {\n var /** @type {?} */ sourceSpan = typeSourceSpan('NgModule', ngModuleMeta.type);\n var /** @type {?} */ deps = [];\n var /** @type {?} */ bootstrapComponentFactories = [];\n var /** @type {?} */ entryComponentFactories = ngModuleMeta.transitiveModule.entryComponents.map(function (entryComponent) {\n if (ngModuleMeta.bootstrapComponents.some(function (id) { return id.reference === entryComponent.componentType; })) {\n bootstrapComponentFactories.push({ reference: entryComponent.componentFactory });\n }\n deps.push(new ComponentFactoryDependency(entryComponent.componentType));\n return { reference: entryComponent.componentFactory };\n });\n var /** @type {?} */ builder = new _InjectorBuilder(ngModuleMeta, entryComponentFactories, bootstrapComponentFactories, sourceSpan);\n var /** @type {?} */ providerParser = new NgModuleProviderAnalyzer(ngModuleMeta, extraProviders, sourceSpan);\n providerParser.parse().forEach(function (provider) { return builder.addProvider(provider); });\n var /** @type {?} */ injectorClass = builder.build();\n var /** @type {?} */ ngModuleFactoryVar = identifierName(ngModuleMeta.type) + \"NgFactory\";\n var /** @type {?} */ ngModuleFactoryStmt = variable(ngModuleFactoryVar)\n .set(importExpr(createIdentifier(Identifiers.NgModuleFactory))\n .instantiate([variable(injectorClass.name), importExpr(ngModuleMeta.type)], importType(createIdentifier(Identifiers.NgModuleFactory), [importType(ngModuleMeta.type)], [TypeModifier.Const])))\n .toDeclStmt(null, [StmtModifier.Final]);\n var /** @type {?} */ stmts = [injectorClass, ngModuleFactoryStmt];\n if (ngModuleMeta.id) {\n var /** @type {?} */ registerFactoryStmt = importExpr(createIdentifier(Identifiers.RegisterModuleFactoryFn))\n .callFn([literal(ngModuleMeta.id), variable(ngModuleFactoryVar)])\n .toStmt();\n stmts.push(registerFactoryStmt);\n }\n return new NgModuleCompileResult(stmts, ngModuleFactoryVar, deps);\n };\n return NgModuleCompiler;\n}());\nNgModuleCompiler.decorators = [\n { type: CompilerInjectable },\n];\n/**\n * @nocollapse\n */\nNgModuleCompiler.ctorParameters = function () { return []; };\nvar _InjectorBuilder = (function () {\n /**\n * @param {?} _ngModuleMeta\n * @param {?} _entryComponentFactories\n * @param {?} _bootstrapComponentFactories\n * @param {?} _sourceSpan\n */\n function _InjectorBuilder(_ngModuleMeta, _entryComponentFactories, _bootstrapComponentFactories, _sourceSpan) {\n this._ngModuleMeta = _ngModuleMeta;\n this._entryComponentFactories = _entryComponentFactories;\n this._bootstrapComponentFactories = _bootstrapComponentFactories;\n this._sourceSpan = _sourceSpan;\n this.fields = [];\n this.getters = [];\n this.methods = [];\n this.ctorStmts = [];\n this._lazyProps = new Map();\n this._tokens = [];\n this._instances = new Map();\n this._createStmts = [];\n this._destroyStmts = [];\n }\n /**\n * @param {?} resolvedProvider\n * @return {?}\n */\n _InjectorBuilder.prototype.addProvider = function (resolvedProvider) {\n var _this = this;\n var /** @type {?} */ providerValueExpressions = resolvedProvider.providers.map(function (provider) { return _this._getProviderValue(provider); });\n var /** @type {?} */ propName = \"_\" + tokenName(resolvedProvider.token) + \"_\" + this._instances.size;\n var /** @type {?} */ instance = this._createProviderProperty(propName, resolvedProvider, providerValueExpressions, resolvedProvider.multiProvider, resolvedProvider.eager);\n if (resolvedProvider.lifecycleHooks.indexOf(ɵLifecycleHooks.OnDestroy) !== -1) {\n var /** @type {?} */ callNgOnDestroy = instance.callMethod('ngOnDestroy', []);\n if (!resolvedProvider.eager) {\n callNgOnDestroy = this._lazyProps.get(instance.name).and(callNgOnDestroy);\n }\n this._destroyStmts.push(callNgOnDestroy.toStmt());\n }\n this._tokens.push(resolvedProvider.token);\n this._instances.set(tokenReference(resolvedProvider.token), instance);\n };\n /**\n * @return {?}\n */\n _InjectorBuilder.prototype.build = function () {\n var _this = this;\n var /** @type {?} */ getMethodStmts = this._tokens.map(function (token) {\n var /** @type {?} */ providerExpr = _this._instances.get(tokenReference(token));\n return new IfStmt(InjectMethodVars.token.identical(createDiTokenExpression(token)), [new ReturnStatement(providerExpr)]);\n });\n var /** @type {?} */ methods = [\n new ClassMethod('createInternal', [], this._createStmts.concat(new ReturnStatement(this._instances.get(this._ngModuleMeta.type.reference))), importType(this._ngModuleMeta.type)),\n new ClassMethod('getInternal', [\n new FnParam(InjectMethodVars.token.name, DYNAMIC_TYPE),\n new FnParam(InjectMethodVars.notFoundResult.name, DYNAMIC_TYPE)\n ], getMethodStmts.concat([new ReturnStatement(InjectMethodVars.notFoundResult)]), DYNAMIC_TYPE),\n new ClassMethod('destroyInternal', [], this._destroyStmts),\n ];\n var /** @type {?} */ parentArgs = [\n variable(InjectorProps.parent.name),\n literalArr(this._entryComponentFactories.map(function (componentFactory) { return importExpr(componentFactory); })),\n literalArr(this._bootstrapComponentFactories.map(function (componentFactory) { return importExpr(componentFactory); }))\n ];\n var /** @type {?} */ injClassName = identifierName(this._ngModuleMeta.type) + \"Injector\";\n return createClassStmt({\n name: injClassName,\n ctorParams: [new FnParam(InjectorProps.parent.name, importType(createIdentifier(Identifiers.Injector)))],\n parent: importExpr(createIdentifier(Identifiers.NgModuleInjector), [importType(this._ngModuleMeta.type)]),\n parentArgs: parentArgs,\n builders: [{ methods: methods }, this]\n });\n };\n /**\n * @param {?} provider\n * @return {?}\n */\n _InjectorBuilder.prototype._getProviderValue = function (provider) {\n var _this = this;\n var /** @type {?} */ result;\n if (provider.useExisting != null) {\n result = this._getDependency({ token: provider.useExisting });\n }\n else if (provider.useFactory != null) {\n var /** @type {?} */ deps = provider.deps || provider.useFactory.diDeps;\n var /** @type {?} */ depsExpr = deps.map(function (dep) { return _this._getDependency(dep); });\n result = importExpr(provider.useFactory).callFn(depsExpr);\n }\n else if (provider.useClass != null) {\n var /** @type {?} */ deps = provider.deps || provider.useClass.diDeps;\n var /** @type {?} */ depsExpr = deps.map(function (dep) { return _this._getDependency(dep); });\n result =\n importExpr(provider.useClass).instantiate(depsExpr, importType(provider.useClass));\n }\n else {\n result = convertValueToOutputAst(provider.useValue);\n }\n return result;\n };\n /**\n * @param {?} propName\n * @param {?} provider\n * @param {?} providerValueExpressions\n * @param {?} isMulti\n * @param {?} isEager\n * @return {?}\n */\n _InjectorBuilder.prototype._createProviderProperty = function (propName, provider, providerValueExpressions, isMulti, isEager) {\n var /** @type {?} */ resolvedProviderValueExpr;\n var /** @type {?} */ type;\n if (isMulti) {\n resolvedProviderValueExpr = literalArr(providerValueExpressions);\n type = new ArrayType(DYNAMIC_TYPE);\n }\n else {\n resolvedProviderValueExpr = providerValueExpressions[0];\n type = providerValueExpressions[0].type;\n }\n if (!type) {\n type = DYNAMIC_TYPE;\n }\n if (isEager) {\n this.fields.push(new ClassField(propName, type));\n this._createStmts.push(THIS_EXPR.prop(propName).set(resolvedProviderValueExpr).toStmt());\n }\n else {\n var /** @type {?} */ internalFieldProp = THIS_EXPR.prop(\"_\" + propName);\n this.fields.push(new ClassField(internalFieldProp.name, type));\n // Note: Equals is important for JS so that it also checks the undefined case!\n var /** @type {?} */ getterStmts = [\n new IfStmt(internalFieldProp.isBlank(), [internalFieldProp.set(resolvedProviderValueExpr).toStmt()]),\n new ReturnStatement(internalFieldProp)\n ];\n this.getters.push(new ClassGetter(propName, getterStmts, type));\n this._lazyProps.set(propName, internalFieldProp);\n }\n return THIS_EXPR.prop(propName);\n };\n /**\n * @param {?} dep\n * @return {?}\n */\n _InjectorBuilder.prototype._getDependency = function (dep) {\n var /** @type {?} */ result = null;\n if (dep.isValue) {\n result = literal(dep.value);\n }\n if (!dep.isSkipSelf) {\n if (dep.token) {\n if (tokenReference(dep.token) === resolveIdentifier(Identifiers.Injector)) {\n result = THIS_EXPR;\n }\n else if (tokenReference(dep.token) === resolveIdentifier(Identifiers.ComponentFactoryResolver)) {\n result = THIS_EXPR.prop('componentFactoryResolver');\n }\n }\n if (!result) {\n result = this._instances.get(tokenReference(dep.token));\n }\n }\n if (!result) {\n var /** @type {?} */ args = [createDiTokenExpression(dep.token)];\n if (dep.isOptional) {\n args.push(NULL_EXPR);\n }\n result = InjectorProps.parent.callMethod('get', args);\n }\n return result;\n };\n return _InjectorBuilder;\n}());\n/**\n * @param {?} token\n * @return {?}\n */\nfunction createDiTokenExpression(token) {\n if (token.value != null) {\n return literal(token.value);\n }\n else {\n return importExpr(token.identifier);\n }\n}\nvar InjectorProps = (function () {\n function InjectorProps() {\n }\n return InjectorProps;\n}());\nInjectorProps.parent = THIS_EXPR.prop('parent');\nvar InjectMethodVars = (function () {\n function InjectMethodVars() {\n }\n return InjectMethodVars;\n}());\nInjectMethodVars.token = variable('token');\nInjectMethodVars.notFoundResult = variable('notFoundResult');\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// https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit\nvar VERSION$1 = 3;\nvar JS_B64_PREFIX = '# sourceMappingURL=data:application/json;base64,';\nvar SourceMapGenerator = (function () {\n /**\n * @param {?=} file\n */\n function SourceMapGenerator(file) {\n if (file === void 0) { file = null; }\n this.file = file;\n this.sourcesContent = new Map();\n this.lines = [];\n this.lastCol0 = 0;\n this.hasMappings = false;\n }\n /**\n * @param {?} url\n * @param {?=} content\n * @return {?}\n */\n SourceMapGenerator.prototype.addSource = function (url, content) {\n if (content === void 0) { content = null; }\n if (!this.sourcesContent.has(url)) {\n this.sourcesContent.set(url, content);\n }\n return this;\n };\n /**\n * @return {?}\n */\n SourceMapGenerator.prototype.addLine = function () {\n this.lines.push([]);\n this.lastCol0 = 0;\n return this;\n };\n /**\n * @param {?} col0\n * @param {?=} sourceUrl\n * @param {?=} sourceLine0\n * @param {?=} sourceCol0\n * @return {?}\n */\n SourceMapGenerator.prototype.addMapping = function (col0, sourceUrl, sourceLine0, sourceCol0) {\n if (!this.currentLine) {\n throw new Error(\"A line must be added before mappings can be added\");\n }\n if (sourceUrl != null && !this.sourcesContent.has(sourceUrl)) {\n throw new Error(\"Unknown source file \\\"\" + sourceUrl + \"\\\"\");\n }\n if (col0 == null) {\n throw new Error(\"The column in the generated code must be provided\");\n }\n if (col0 < this.lastCol0) {\n throw new Error(\"Mapping should be added in output order\");\n }\n if (sourceUrl && (sourceLine0 == null || sourceCol0 == null)) {\n throw new Error(\"The source location must be provided when a source url is provided\");\n }\n this.hasMappings = true;\n this.lastCol0 = col0;\n this.currentLine.push({ col0: col0, sourceUrl: sourceUrl, sourceLine0: sourceLine0, sourceCol0: sourceCol0 });\n return this;\n };\n Object.defineProperty(SourceMapGenerator.prototype, \"currentLine\", {\n /**\n * @return {?}\n */\n get: function () { return this.lines.slice(-1)[0]; },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n SourceMapGenerator.prototype.toJSON = function () {\n var _this = this;\n if (!this.hasMappings) {\n return null;\n }\n var /** @type {?} */ sourcesIndex = new Map();\n var /** @type {?} */ sources = [];\n var /** @type {?} */ sourcesContent = [];\n Array.from(this.sourcesContent.keys()).forEach(function (url, i) {\n sourcesIndex.set(url, i);\n sources.push(url);\n sourcesContent.push(_this.sourcesContent.get(url) || null);\n });\n var /** @type {?} */ mappings = '';\n var /** @type {?} */ lastCol0 = 0;\n var /** @type {?} */ lastSourceIndex = 0;\n var /** @type {?} */ lastSourceLine0 = 0;\n var /** @type {?} */ lastSourceCol0 = 0;\n this.lines.forEach(function (segments) {\n lastCol0 = 0;\n mappings += segments\n .map(function (segment) {\n // zero-based starting column of the line in the generated code\n var /** @type {?} */ segAsStr = toBase64VLQ(segment.col0 - lastCol0);\n lastCol0 = segment.col0;\n if (segment.sourceUrl != null) {\n // zero-based index into the “sources†list\n segAsStr +=\n toBase64VLQ(sourcesIndex.get(segment.sourceUrl) - lastSourceIndex);\n lastSourceIndex = sourcesIndex.get(segment.sourceUrl);\n // the zero-based starting line in the original source\n segAsStr += toBase64VLQ(segment.sourceLine0 - lastSourceLine0);\n lastSourceLine0 = segment.sourceLine0;\n // the zero-based starting column in the original source\n segAsStr += toBase64VLQ(segment.sourceCol0 - lastSourceCol0);\n lastSourceCol0 = segment.sourceCol0;\n }\n return segAsStr;\n })\n .join(',');\n mappings += ';';\n });\n mappings = mappings.slice(0, -1);\n return {\n 'file': this.file || '',\n 'version': VERSION$1,\n 'sourceRoot': '',\n 'sources': sources,\n 'sourcesContent': sourcesContent,\n 'mappings': mappings,\n };\n };\n /**\n * @return {?}\n */\n SourceMapGenerator.prototype.toJsComment = function () {\n return this.hasMappings ? '//' + JS_B64_PREFIX + toBase64String(JSON.stringify(this, null, 0)) :\n '';\n };\n return SourceMapGenerator;\n}());\n/**\n * @param {?} value\n * @return {?}\n */\nfunction toBase64String(value) {\n var /** @type {?} */ b64 = '';\n value = utf8Encode(value);\n for (var /** @type {?} */ i = 0; i < value.length;) {\n var /** @type {?} */ i1 = value.charCodeAt(i++);\n var /** @type {?} */ i2 = value.charCodeAt(i++);\n var /** @type {?} */ i3 = value.charCodeAt(i++);\n b64 += toBase64Digit(i1 >> 2);\n b64 += toBase64Digit(((i1 & 3) << 4) | (isNaN(i2) ? 0 : i2 >> 4));\n b64 += isNaN(i2) ? '=' : toBase64Digit(((i2 & 15) << 2) | (i3 >> 6));\n b64 += isNaN(i2) || isNaN(i3) ? '=' : toBase64Digit(i3 & 63);\n }\n return b64;\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction toBase64VLQ(value) {\n value = value < 0 ? ((-value) << 1) + 1 : value << 1;\n var /** @type {?} */ out = '';\n do {\n var /** @type {?} */ digit = value & 31;\n value = value >> 5;\n if (value > 0) {\n digit = digit | 32;\n }\n out += toBase64Digit(digit);\n } while (value > 0);\n return out;\n}\nvar B64_DIGITS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n/**\n * @param {?} value\n * @return {?}\n */\nfunction toBase64Digit(value) {\n if (value < 0 || value >= 64) {\n throw new Error(\"Can only encode value in the range [0, 63]\");\n }\n return B64_DIGITS[value];\n}\n/**\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 */\nvar _SINGLE_QUOTE_ESCAPE_STRING_RE = /'|\\\\|\\n|\\r|\\$/g;\nvar _LEGAL_IDENTIFIER_RE = /^[$A-Z_][0-9A-Z_$]*$/i;\nvar _INDENT_WITH = ' ';\nvar CATCH_ERROR_VAR$1 = variable('error');\nvar CATCH_STACK_VAR$1 = variable('stack');\n/**\n * @abstract\n */\nvar _EmittedLine = (function () {\n /**\n * @param {?} indent\n */\n function _EmittedLine(indent) {\n this.indent = indent;\n this.parts = [];\n this.srcSpans = [];\n }\n return _EmittedLine;\n}());\nvar EmitterVisitorContext = (function () {\n /**\n * @param {?} _exportedVars\n * @param {?} _indent\n */\n function EmitterVisitorContext(_exportedVars, _indent) {\n this._exportedVars = _exportedVars;\n this._indent = _indent;\n this._classes = [];\n this._lines = [new _EmittedLine(_indent)];\n }\n /**\n * @param {?} exportedVars\n * @return {?}\n */\n EmitterVisitorContext.createRoot = function (exportedVars) {\n return new EmitterVisitorContext(exportedVars, 0);\n };\n Object.defineProperty(EmitterVisitorContext.prototype, \"_currentLine\", {\n /**\n * @return {?}\n */\n get: function () { return this._lines[this._lines.length - 1]; },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} varName\n * @return {?}\n */\n EmitterVisitorContext.prototype.isExportedVar = function (varName) { return this._exportedVars.indexOf(varName) !== -1; };\n /**\n * @param {?=} from\n * @param {?=} lastPart\n * @return {?}\n */\n EmitterVisitorContext.prototype.println = function (from, lastPart) {\n if (lastPart === void 0) { lastPart = ''; }\n this.print(from, lastPart, true);\n };\n /**\n * @return {?}\n */\n EmitterVisitorContext.prototype.lineIsEmpty = function () { return this._currentLine.parts.length === 0; };\n /**\n * @param {?} from\n * @param {?} part\n * @param {?=} newLine\n * @return {?}\n */\n EmitterVisitorContext.prototype.print = function (from, part, newLine) {\n if (newLine === void 0) { newLine = false; }\n if (part.length > 0) {\n this._currentLine.parts.push(part);\n this._currentLine.srcSpans.push(from && from.sourceSpan || null);\n }\n if (newLine) {\n this._lines.push(new _EmittedLine(this._indent));\n }\n };\n /**\n * @return {?}\n */\n EmitterVisitorContext.prototype.removeEmptyLastLine = function () {\n if (this.lineIsEmpty()) {\n this._lines.pop();\n }\n };\n /**\n * @return {?}\n */\n EmitterVisitorContext.prototype.incIndent = function () {\n this._indent++;\n this._currentLine.indent = this._indent;\n };\n /**\n * @return {?}\n */\n EmitterVisitorContext.prototype.decIndent = function () {\n this._indent--;\n this._currentLine.indent = this._indent;\n };\n /**\n * @param {?} clazz\n * @return {?}\n */\n EmitterVisitorContext.prototype.pushClass = function (clazz) { this._classes.push(clazz); };\n /**\n * @return {?}\n */\n EmitterVisitorContext.prototype.popClass = function () { return this._classes.pop(); };\n Object.defineProperty(EmitterVisitorContext.prototype, \"currentClass\", {\n /**\n * @return {?}\n */\n get: function () {\n return this._classes.length > 0 ? this._classes[this._classes.length - 1] : null;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n EmitterVisitorContext.prototype.toSource = function () {\n return this.sourceLines\n .map(function (l) { return l.parts.length > 0 ? _createIndent(l.indent) + l.parts.join('') : ''; })\n .join('\\n');\n };\n /**\n * @param {?} sourceFilePath\n * @param {?} genFilePath\n * @param {?=} startsAtLine\n * @return {?}\n */\n EmitterVisitorContext.prototype.toSourceMapGenerator = function (sourceFilePath, genFilePath, startsAtLine) {\n if (startsAtLine === void 0) { startsAtLine = 0; }\n var /** @type {?} */ map = new SourceMapGenerator(genFilePath);\n var /** @type {?} */ firstOffsetMapped = false;\n var /** @type {?} */ mapFirstOffsetIfNeeded = function () {\n if (!firstOffsetMapped) {\n // Add a single space so that tools won't try to load the file from disk.\n // Note: We are using virtual urls like `ng:///`, so we have to\n // provide a content here.\n map.addSource(sourceFilePath, ' ').addMapping(0, sourceFilePath, 0, 0);\n firstOffsetMapped = true;\n }\n };\n for (var /** @type {?} */ i = 0; i < startsAtLine; i++) {\n map.addLine();\n mapFirstOffsetIfNeeded();\n }\n this.sourceLines.forEach(function (line, lineIdx) {\n map.addLine();\n var /** @type {?} */ spans = line.srcSpans;\n var /** @type {?} */ parts = line.parts;\n var /** @type {?} */ col0 = line.indent * _INDENT_WITH.length;\n var /** @type {?} */ spanIdx = 0;\n // skip leading parts without source spans\n while (spanIdx < spans.length && !spans[spanIdx]) {\n col0 += parts[spanIdx].length;\n spanIdx++;\n }\n if (spanIdx < spans.length && lineIdx === 0 && col0 === 0) {\n firstOffsetMapped = true;\n }\n else {\n mapFirstOffsetIfNeeded();\n }\n while (spanIdx < spans.length) {\n var /** @type {?} */ span = spans[spanIdx];\n var /** @type {?} */ source = span.start.file;\n var /** @type {?} */ sourceLine = span.start.line;\n var /** @type {?} */ sourceCol = span.start.col;\n map.addSource(source.url, source.content)\n .addMapping(col0, source.url, sourceLine, sourceCol);\n col0 += parts[spanIdx].length;\n spanIdx++;\n // assign parts without span or the same span to the previous segment\n while (spanIdx < spans.length && (span === spans[spanIdx] || !spans[spanIdx])) {\n col0 += parts[spanIdx].length;\n spanIdx++;\n }\n }\n });\n return map;\n };\n Object.defineProperty(EmitterVisitorContext.prototype, \"sourceLines\", {\n /**\n * @return {?}\n */\n get: function () {\n if (this._lines.length && this._lines[this._lines.length - 1].parts.length === 0) {\n return this._lines.slice(0, -1);\n }\n return this._lines;\n },\n enumerable: true,\n configurable: true\n });\n return EmitterVisitorContext;\n}());\n/**\n * @abstract\n */\nvar AbstractEmitterVisitor = (function () {\n /**\n * @param {?} _escapeDollarInStrings\n */\n function AbstractEmitterVisitor(_escapeDollarInStrings) {\n this._escapeDollarInStrings = _escapeDollarInStrings;\n }\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitExpressionStmt = function (stmt, ctx) {\n stmt.expr.visitExpression(this, ctx);\n ctx.println(stmt, ';');\n return null;\n };\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitReturnStmt = function (stmt, ctx) {\n ctx.print(stmt, \"return \");\n stmt.value.visitExpression(this, ctx);\n ctx.println(stmt, ';');\n return null;\n };\n /**\n * @abstract\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitCastExpr = function (ast, context) { };\n /**\n * @abstract\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitDeclareClassStmt = function (stmt, ctx) { };\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitIfStmt = function (stmt, ctx) {\n ctx.print(stmt, \"if (\");\n stmt.condition.visitExpression(this, ctx);\n ctx.print(stmt, \") {\");\n var /** @type {?} */ hasElseCase = stmt.falseCase != null && stmt.falseCase.length > 0;\n if (stmt.trueCase.length <= 1 && !hasElseCase) {\n ctx.print(stmt, \" \");\n this.visitAllStatements(stmt.trueCase, ctx);\n ctx.removeEmptyLastLine();\n ctx.print(stmt, \" \");\n }\n else {\n ctx.println();\n ctx.incIndent();\n this.visitAllStatements(stmt.trueCase, ctx);\n ctx.decIndent();\n if (hasElseCase) {\n ctx.println(stmt, \"} else {\");\n ctx.incIndent();\n this.visitAllStatements(stmt.falseCase, ctx);\n ctx.decIndent();\n }\n }\n ctx.println(stmt, \"}\");\n return null;\n };\n /**\n * @abstract\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitTryCatchStmt = function (stmt, ctx) { };\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitThrowStmt = function (stmt, ctx) {\n ctx.print(stmt, \"throw \");\n stmt.error.visitExpression(this, ctx);\n ctx.println(stmt, \";\");\n return null;\n };\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitCommentStmt = function (stmt, ctx) {\n var /** @type {?} */ lines = stmt.comment.split('\\n');\n lines.forEach(function (line) { ctx.println(stmt, \"// \" + line); });\n return null;\n };\n /**\n * @abstract\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitDeclareVarStmt = function (stmt, ctx) { };\n /**\n * @param {?} expr\n * @param {?} ctx\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitWriteVarExpr = function (expr, ctx) {\n var /** @type {?} */ lineWasEmpty = ctx.lineIsEmpty();\n if (!lineWasEmpty) {\n ctx.print(expr, '(');\n }\n ctx.print(expr, expr.name + \" = \");\n expr.value.visitExpression(this, ctx);\n if (!lineWasEmpty) {\n ctx.print(expr, ')');\n }\n return null;\n };\n /**\n * @param {?} expr\n * @param {?} ctx\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitWriteKeyExpr = function (expr, ctx) {\n var /** @type {?} */ lineWasEmpty = ctx.lineIsEmpty();\n if (!lineWasEmpty) {\n ctx.print(expr, '(');\n }\n expr.receiver.visitExpression(this, ctx);\n ctx.print(expr, \"[\");\n expr.index.visitExpression(this, ctx);\n ctx.print(expr, \"] = \");\n expr.value.visitExpression(this, ctx);\n if (!lineWasEmpty) {\n ctx.print(expr, ')');\n }\n return null;\n };\n /**\n * @param {?} expr\n * @param {?} ctx\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitWritePropExpr = function (expr, ctx) {\n var /** @type {?} */ lineWasEmpty = ctx.lineIsEmpty();\n if (!lineWasEmpty) {\n ctx.print(expr, '(');\n }\n expr.receiver.visitExpression(this, ctx);\n ctx.print(expr, \".\" + expr.name + \" = \");\n expr.value.visitExpression(this, ctx);\n if (!lineWasEmpty) {\n ctx.print(expr, ')');\n }\n return null;\n };\n /**\n * @param {?} expr\n * @param {?} ctx\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitInvokeMethodExpr = function (expr, ctx) {\n expr.receiver.visitExpression(this, ctx);\n var /** @type {?} */ name = expr.name;\n if (expr.builtin != null) {\n name = this.getBuiltinMethodName(expr.builtin);\n if (name == null) {\n // some builtins just mean to skip the call.\n return null;\n }\n }\n ctx.print(expr, \".\" + name + \"(\");\n this.visitAllExpressions(expr.args, ctx, \",\");\n ctx.print(expr, \")\");\n return null;\n };\n /**\n * @abstract\n * @param {?} method\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.getBuiltinMethodName = function (method) { };\n /**\n * @param {?} expr\n * @param {?} ctx\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitInvokeFunctionExpr = function (expr, ctx) {\n expr.fn.visitExpression(this, ctx);\n ctx.print(expr, \"(\");\n this.visitAllExpressions(expr.args, ctx, ',');\n ctx.print(expr, \")\");\n return null;\n };\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitReadVarExpr = function (ast, ctx) {\n var /** @type {?} */ varName = ast.name;\n if (ast.builtin != null) {\n switch (ast.builtin) {\n case BuiltinVar.Super:\n varName = 'super';\n break;\n case BuiltinVar.This:\n varName = 'this';\n break;\n case BuiltinVar.CatchError:\n varName = CATCH_ERROR_VAR$1.name;\n break;\n case BuiltinVar.CatchStack:\n varName = CATCH_STACK_VAR$1.name;\n break;\n default:\n throw new Error(\"Unknown builtin variable \" + ast.builtin);\n }\n }\n ctx.print(ast, varName);\n return null;\n };\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitInstantiateExpr = function (ast, ctx) {\n ctx.print(ast, \"new \");\n ast.classExpr.visitExpression(this, ctx);\n ctx.print(ast, \"(\");\n this.visitAllExpressions(ast.args, ctx, ',');\n ctx.print(ast, \")\");\n return null;\n };\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitLiteralExpr = function (ast, ctx) {\n var /** @type {?} */ value = ast.value;\n if (typeof value === 'string') {\n ctx.print(ast, escapeIdentifier(value, this._escapeDollarInStrings));\n }\n else {\n ctx.print(ast, \"\" + value);\n }\n return null;\n };\n /**\n * @abstract\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitExternalExpr = function (ast, ctx) { };\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitConditionalExpr = function (ast, ctx) {\n ctx.print(ast, \"(\");\n ast.condition.visitExpression(this, ctx);\n ctx.print(ast, '? ');\n ast.trueCase.visitExpression(this, ctx);\n ctx.print(ast, ': ');\n ast.falseCase.visitExpression(this, ctx);\n ctx.print(ast, \")\");\n return null;\n };\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitNotExpr = function (ast, ctx) {\n ctx.print(ast, '!');\n ast.condition.visitExpression(this, ctx);\n return null;\n };\n /**\n * @abstract\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitFunctionExpr = function (ast, ctx) { };\n /**\n * @abstract\n * @param {?} stmt\n * @param {?} context\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitDeclareFunctionStmt = function (stmt, context) { };\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitBinaryOperatorExpr = function (ast, ctx) {\n var /** @type {?} */ opStr;\n switch (ast.operator) {\n case BinaryOperator.Equals:\n opStr = '==';\n break;\n case BinaryOperator.Identical:\n opStr = '===';\n break;\n case BinaryOperator.NotEquals:\n opStr = '!=';\n break;\n case BinaryOperator.NotIdentical:\n opStr = '!==';\n break;\n case BinaryOperator.And:\n opStr = '&&';\n break;\n case BinaryOperator.Or:\n opStr = '||';\n break;\n case BinaryOperator.Plus:\n opStr = '+';\n break;\n case BinaryOperator.Minus:\n opStr = '-';\n break;\n case BinaryOperator.Divide:\n opStr = '/';\n break;\n case BinaryOperator.Multiply:\n opStr = '*';\n break;\n case BinaryOperator.Modulo:\n opStr = '%';\n break;\n case BinaryOperator.Lower:\n opStr = '<';\n break;\n case BinaryOperator.LowerEquals:\n opStr = '<=';\n break;\n case BinaryOperator.Bigger:\n opStr = '>';\n break;\n case BinaryOperator.BiggerEquals:\n opStr = '>=';\n break;\n default:\n throw new Error(\"Unknown operator \" + ast.operator);\n }\n ctx.print(ast, \"(\");\n ast.lhs.visitExpression(this, ctx);\n ctx.print(ast, \" \" + opStr + \" \");\n ast.rhs.visitExpression(this, ctx);\n ctx.print(ast, \")\");\n return null;\n };\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitReadPropExpr = function (ast, ctx) {\n ast.receiver.visitExpression(this, ctx);\n ctx.print(ast, \".\");\n ctx.print(ast, ast.name);\n return null;\n };\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitReadKeyExpr = function (ast, ctx) {\n ast.receiver.visitExpression(this, ctx);\n ctx.print(ast, \"[\");\n ast.index.visitExpression(this, ctx);\n ctx.print(ast, \"]\");\n return null;\n };\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitLiteralArrayExpr = function (ast, ctx) {\n var /** @type {?} */ useNewLine = ast.entries.length > 1;\n ctx.print(ast, \"[\", useNewLine);\n ctx.incIndent();\n this.visitAllExpressions(ast.entries, ctx, ',', useNewLine);\n ctx.decIndent();\n ctx.print(ast, \"]\", useNewLine);\n return null;\n };\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitLiteralMapExpr = function (ast, ctx) {\n var _this = this;\n var /** @type {?} */ useNewLine = ast.entries.length > 1;\n ctx.print(ast, \"{\", useNewLine);\n ctx.incIndent();\n this.visitAllObjects(function (entry) {\n ctx.print(ast, escapeIdentifier(entry.key, _this._escapeDollarInStrings, entry.quoted) + \": \");\n entry.value.visitExpression(_this, ctx);\n }, ast.entries, ctx, ',', useNewLine);\n ctx.decIndent();\n ctx.print(ast, \"}\", useNewLine);\n return null;\n };\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitCommaExpr = function (ast, ctx) {\n ctx.print(ast, '(');\n this.visitAllExpressions(ast.parts, ctx, ',');\n ctx.print(ast, ')');\n return null;\n };\n /**\n * @param {?} expressions\n * @param {?} ctx\n * @param {?} separator\n * @param {?=} newLine\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitAllExpressions = function (expressions, ctx, separator, newLine) {\n var _this = this;\n if (newLine === void 0) { newLine = false; }\n this.visitAllObjects(function (expr) { return expr.visitExpression(_this, ctx); }, expressions, ctx, separator, newLine);\n };\n /**\n * @template T\n * @param {?} handler\n * @param {?} expressions\n * @param {?} ctx\n * @param {?} separator\n * @param {?=} newLine\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitAllObjects = function (handler, expressions, ctx, separator, newLine) {\n if (newLine === void 0) { newLine = false; }\n for (var /** @type {?} */ i = 0; i < expressions.length; i++) {\n if (i > 0) {\n ctx.print(null, separator, newLine);\n }\n handler(expressions[i]);\n }\n if (newLine) {\n ctx.println();\n }\n };\n /**\n * @param {?} statements\n * @param {?} ctx\n * @return {?}\n */\n AbstractEmitterVisitor.prototype.visitAllStatements = function (statements, ctx) {\n var _this = this;\n statements.forEach(function (stmt) { return stmt.visitStatement(_this, ctx); });\n };\n return AbstractEmitterVisitor;\n}());\n/**\n * @param {?} input\n * @param {?} escapeDollar\n * @param {?=} alwaysQuote\n * @return {?}\n */\nfunction escapeIdentifier(input, escapeDollar, alwaysQuote) {\n if (alwaysQuote === void 0) { alwaysQuote = true; }\n if (input == null) {\n return null;\n }\n var /** @type {?} */ body = input.replace(_SINGLE_QUOTE_ESCAPE_STRING_RE, function () {\n var match = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n match[_i] = arguments[_i];\n }\n if (match[0] == '$') {\n return escapeDollar ? '\\\\$' : '$';\n }\n else if (match[0] == '\\n') {\n return '\\\\n';\n }\n else if (match[0] == '\\r') {\n return '\\\\r';\n }\n else {\n return \"\\\\\" + match[0];\n }\n });\n var /** @type {?} */ requiresQuotes = alwaysQuote || !_LEGAL_IDENTIFIER_RE.test(body);\n return requiresQuotes ? \"'\" + body + \"'\" : body;\n}\n/**\n * @param {?} count\n * @return {?}\n */\nfunction _createIndent(count) {\n var /** @type {?} */ res = '';\n for (var /** @type {?} */ i = 0; i < count; i++) {\n res += _INDENT_WITH;\n }\n return res;\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 */\nvar _debugFilePath = '/debug/lib';\n/**\n * @param {?} ast\n * @return {?}\n */\nfunction debugOutputAstAsTypeScript(ast) {\n var /** @type {?} */ converter = new _TsEmitterVisitor(_debugFilePath, {\n /**\n * @param {?} filePath\n * @param {?} containingFilePath\n * @return {?}\n */\n fileNameToModuleName: function (filePath, containingFilePath) { return filePath; },\n /**\n * @param {?} symbol\n * @return {?}\n */\n getImportAs: function (symbol) { return null; },\n getTypeArity: function (symbol) { return null; }\n });\n var /** @type {?} */ ctx = EmitterVisitorContext.createRoot([]);\n var /** @type {?} */ asts = Array.isArray(ast) ? ast : [ast];\n asts.forEach(function (ast) {\n if (ast instanceof Statement) {\n ast.visitStatement(converter, ctx);\n }\n else if (ast instanceof Expression) {\n ast.visitExpression(converter, ctx);\n }\n else if (ast instanceof Type$1) {\n ast.visitType(converter, ctx);\n }\n else {\n throw new Error(\"Don't know how to print debug info for \" + ast);\n }\n });\n return ctx.toSource();\n}\nvar TypeScriptEmitter = (function () {\n /**\n * @param {?} _importResolver\n */\n function TypeScriptEmitter(_importResolver) {\n this._importResolver = _importResolver;\n }\n /**\n * @param {?} srcFilePath\n * @param {?} genFilePath\n * @param {?} stmts\n * @param {?} exportedVars\n * @param {?=} preamble\n * @return {?}\n */\n TypeScriptEmitter.prototype.emitStatements = function (srcFilePath, genFilePath, stmts, exportedVars, preamble) {\n var _this = this;\n if (preamble === void 0) { preamble = ''; }\n var /** @type {?} */ converter = new _TsEmitterVisitor(genFilePath, this._importResolver);\n var /** @type {?} */ ctx = EmitterVisitorContext.createRoot(exportedVars);\n converter.visitAllStatements(stmts, ctx);\n var /** @type {?} */ preambleLines = preamble ? preamble.split('\\n') : [];\n converter.reexports.forEach(function (reexports, exportedFilePath) {\n var /** @type {?} */ reexportsCode = reexports.map(function (reexport) { return reexport.name + \" as \" + reexport.as; }).join(',');\n preambleLines.push(\"export {\" + reexportsCode + \"} from '\" + _this._importResolver.fileNameToModuleName(exportedFilePath, genFilePath) + \"';\");\n });\n converter.importsWithPrefixes.forEach(function (prefix, importedFilePath) {\n // Note: can't write the real word for import as it screws up system.js auto detection...\n preambleLines.push(\"imp\" +\n (\"ort * as \" + prefix + \" from '\" + _this._importResolver.fileNameToModuleName(importedFilePath, genFilePath) + \"';\"));\n });\n var /** @type {?} */ sm = ctx.toSourceMapGenerator(srcFilePath, genFilePath, preambleLines.length).toJsComment();\n var /** @type {?} */ lines = preambleLines.concat([ctx.toSource(), sm]);\n if (sm) {\n // always add a newline at the end, as some tools have bugs without it.\n lines.push('');\n }\n return lines.join('\\n');\n };\n return TypeScriptEmitter;\n}());\nvar _TsEmitterVisitor = (function (_super) {\n __extends(_TsEmitterVisitor, _super);\n /**\n * @param {?} _genFilePath\n * @param {?} _importResolver\n */\n function _TsEmitterVisitor(_genFilePath, _importResolver) {\n var _this = _super.call(this, false) || this;\n _this._genFilePath = _genFilePath;\n _this._importResolver = _importResolver;\n _this.typeExpression = 0;\n _this.importsWithPrefixes = new Map();\n _this.reexports = new Map();\n return _this;\n }\n /**\n * @param {?} t\n * @param {?} ctx\n * @param {?=} defaultType\n * @return {?}\n */\n _TsEmitterVisitor.prototype.visitType = function (t, ctx, defaultType) {\n if (defaultType === void 0) { defaultType = 'any'; }\n if (t != null) {\n this.typeExpression++;\n t.visitType(this, ctx);\n this.typeExpression--;\n }\n else {\n ctx.print(null, defaultType);\n }\n };\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n _TsEmitterVisitor.prototype.visitLiteralExpr = function (ast, ctx) {\n var /** @type {?} */ value = ast.value;\n if (value == null && ast.type != INFERRED_TYPE) {\n ctx.print(ast, \"(\" + value + \" as any)\");\n return null;\n }\n return _super.prototype.visitLiteralExpr.call(this, ast, ctx);\n };\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n _TsEmitterVisitor.prototype.visitLiteralArrayExpr = function (ast, ctx) {\n if (ast.entries.length === 0) {\n ctx.print(ast, '(');\n }\n var /** @type {?} */ result = _super.prototype.visitLiteralArrayExpr.call(this, ast, ctx);\n if (ast.entries.length === 0) {\n ctx.print(ast, ' as any[])');\n }\n return result;\n };\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n _TsEmitterVisitor.prototype.visitExternalExpr = function (ast, ctx) {\n this._visitIdentifier(ast.value, ast.typeParams, ctx);\n return null;\n };\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n _TsEmitterVisitor.prototype.visitDeclareVarStmt = function (stmt, ctx) {\n if (ctx.isExportedVar(stmt.name) && stmt.value instanceof ExternalExpr && !stmt.type) {\n // check for a reexport\n var _a = this._resolveStaticSymbol(stmt.value.value), name = _a.name, filePath = _a.filePath, members = _a.members;\n if (members.length === 0 && filePath !== this._genFilePath) {\n var /** @type {?} */ reexports = this.reexports.get(filePath);\n if (!reexports) {\n reexports = [];\n this.reexports.set(filePath, reexports);\n }\n reexports.push({ name: name, as: stmt.name });\n return null;\n }\n }\n if (ctx.isExportedVar(stmt.name)) {\n ctx.print(stmt, \"export \");\n }\n if (stmt.hasModifier(StmtModifier.Final)) {\n ctx.print(stmt, \"const\");\n }\n else {\n ctx.print(stmt, \"var\");\n }\n ctx.print(stmt, \" \" + stmt.name);\n this._printColonType(stmt.type, ctx);\n ctx.print(stmt, \" = \");\n stmt.value.visitExpression(this, ctx);\n ctx.println(stmt, \";\");\n return null;\n };\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n _TsEmitterVisitor.prototype.visitCastExpr = function (ast, ctx) {\n ctx.print(ast, \"(<\");\n ast.type.visitType(this, ctx);\n ctx.print(ast, \">\");\n ast.value.visitExpression(this, ctx);\n ctx.print(ast, \")\");\n return null;\n };\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n _TsEmitterVisitor.prototype.visitInstantiateExpr = function (ast, ctx) {\n ctx.print(ast, \"new \");\n this.typeExpression++;\n ast.classExpr.visitExpression(this, ctx);\n this.typeExpression--;\n ctx.print(ast, \"(\");\n this.visitAllExpressions(ast.args, ctx, ',');\n ctx.print(ast, \")\");\n return null;\n };\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n _TsEmitterVisitor.prototype.visitDeclareClassStmt = function (stmt, ctx) {\n var _this = this;\n ctx.pushClass(stmt);\n if (ctx.isExportedVar(stmt.name)) {\n ctx.print(stmt, \"export \");\n }\n ctx.print(stmt, \"class \" + stmt.name);\n if (stmt.parent != null) {\n ctx.print(stmt, \" extends \");\n this.typeExpression++;\n stmt.parent.visitExpression(this, ctx);\n this.typeExpression--;\n }\n ctx.println(stmt, \" {\");\n ctx.incIndent();\n stmt.fields.forEach(function (field) { return _this._visitClassField(field, ctx); });\n if (stmt.constructorMethod != null) {\n this._visitClassConstructor(stmt, ctx);\n }\n stmt.getters.forEach(function (getter) { return _this._visitClassGetter(getter, ctx); });\n stmt.methods.forEach(function (method) { return _this._visitClassMethod(method, ctx); });\n ctx.decIndent();\n ctx.println(stmt, \"}\");\n ctx.popClass();\n return null;\n };\n /**\n * @param {?} field\n * @param {?} ctx\n * @return {?}\n */\n _TsEmitterVisitor.prototype._visitClassField = function (field, ctx) {\n if (field.hasModifier(StmtModifier.Private)) {\n // comment out as a workaround for #10967\n ctx.print(null, \"/*private*/ \");\n }\n ctx.print(null, field.name);\n this._printColonType(field.type, ctx);\n ctx.println(null, \";\");\n };\n /**\n * @param {?} getter\n * @param {?} ctx\n * @return {?}\n */\n _TsEmitterVisitor.prototype._visitClassGetter = function (getter, ctx) {\n if (getter.hasModifier(StmtModifier.Private)) {\n ctx.print(null, \"private \");\n }\n ctx.print(null, \"get \" + getter.name + \"()\");\n this._printColonType(getter.type, ctx);\n ctx.println(null, \" {\");\n ctx.incIndent();\n this.visitAllStatements(getter.body, ctx);\n ctx.decIndent();\n ctx.println(null, \"}\");\n };\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n _TsEmitterVisitor.prototype._visitClassConstructor = function (stmt, ctx) {\n ctx.print(stmt, \"constructor(\");\n this._visitParams(stmt.constructorMethod.params, ctx);\n ctx.println(stmt, \") {\");\n ctx.incIndent();\n this.visitAllStatements(stmt.constructorMethod.body, ctx);\n ctx.decIndent();\n ctx.println(stmt, \"}\");\n };\n /**\n * @param {?} method\n * @param {?} ctx\n * @return {?}\n */\n _TsEmitterVisitor.prototype._visitClassMethod = function (method, ctx) {\n if (method.hasModifier(StmtModifier.Private)) {\n ctx.print(null, \"private \");\n }\n ctx.print(null, method.name + \"(\");\n this._visitParams(method.params, ctx);\n ctx.print(null, \")\");\n this._printColonType(method.type, ctx, 'void');\n ctx.println(null, \" {\");\n ctx.incIndent();\n this.visitAllStatements(method.body, ctx);\n ctx.decIndent();\n ctx.println(null, \"}\");\n };\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n _TsEmitterVisitor.prototype.visitFunctionExpr = function (ast, ctx) {\n ctx.print(ast, \"(\");\n this._visitParams(ast.params, ctx);\n ctx.print(ast, \")\");\n this._printColonType(ast.type, ctx, 'void');\n ctx.println(ast, \" => {\");\n ctx.incIndent();\n this.visitAllStatements(ast.statements, ctx);\n ctx.decIndent();\n ctx.print(ast, \"}\");\n return null;\n };\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n _TsEmitterVisitor.prototype.visitDeclareFunctionStmt = function (stmt, ctx) {\n if (ctx.isExportedVar(stmt.name)) {\n ctx.print(stmt, \"export \");\n }\n ctx.print(stmt, \"function \" + stmt.name + \"(\");\n this._visitParams(stmt.params, ctx);\n ctx.print(stmt, \")\");\n this._printColonType(stmt.type, ctx, 'void');\n ctx.println(stmt, \" {\");\n ctx.incIndent();\n this.visitAllStatements(stmt.statements, ctx);\n ctx.decIndent();\n ctx.println(stmt, \"}\");\n return null;\n };\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n _TsEmitterVisitor.prototype.visitTryCatchStmt = function (stmt, ctx) {\n ctx.println(stmt, \"try {\");\n ctx.incIndent();\n this.visitAllStatements(stmt.bodyStmts, ctx);\n ctx.decIndent();\n ctx.println(stmt, \"} catch (\" + CATCH_ERROR_VAR$1.name + \") {\");\n ctx.incIndent();\n var /** @type {?} */ catchStmts = [/** @type {?} */ (CATCH_STACK_VAR$1.set(CATCH_ERROR_VAR$1.prop('stack')).toDeclStmt(null, [\n StmtModifier.Final\n ]))].concat(stmt.catchStmts);\n this.visitAllStatements(catchStmts, ctx);\n ctx.decIndent();\n ctx.println(stmt, \"}\");\n return null;\n };\n /**\n * @param {?} type\n * @param {?} ctx\n * @return {?}\n */\n _TsEmitterVisitor.prototype.visitBuiltintType = function (type, ctx) {\n var /** @type {?} */ typeStr;\n switch (type.name) {\n case BuiltinTypeName.Bool:\n typeStr = 'boolean';\n break;\n case BuiltinTypeName.Dynamic:\n typeStr = 'any';\n break;\n case BuiltinTypeName.Function:\n typeStr = 'Function';\n break;\n case BuiltinTypeName.Number:\n typeStr = 'number';\n break;\n case BuiltinTypeName.Int:\n typeStr = 'number';\n break;\n case BuiltinTypeName.String:\n typeStr = 'string';\n break;\n default:\n throw new Error(\"Unsupported builtin type \" + type.name);\n }\n ctx.print(null, typeStr);\n return null;\n };\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n _TsEmitterVisitor.prototype.visitExpressionType = function (ast, ctx) {\n ast.value.visitExpression(this, ctx);\n return null;\n };\n /**\n * @param {?} type\n * @param {?} ctx\n * @return {?}\n */\n _TsEmitterVisitor.prototype.visitArrayType = function (type, ctx) {\n this.visitType(type.of, ctx);\n ctx.print(null, \"[]\");\n return null;\n };\n /**\n * @param {?} type\n * @param {?} ctx\n * @return {?}\n */\n _TsEmitterVisitor.prototype.visitMapType = function (type, ctx) {\n ctx.print(null, \"{[key: string]:\");\n this.visitType(type.valueType, ctx);\n ctx.print(null, \"}\");\n return null;\n };\n /**\n * @param {?} method\n * @return {?}\n */\n _TsEmitterVisitor.prototype.getBuiltinMethodName = function (method) {\n var /** @type {?} */ name;\n switch (method) {\n case BuiltinMethod.ConcatArray:\n name = 'concat';\n break;\n case BuiltinMethod.SubscribeObservable:\n name = 'subscribe';\n break;\n case BuiltinMethod.Bind:\n name = 'bind';\n break;\n default:\n throw new Error(\"Unknown builtin method: \" + method);\n }\n return name;\n };\n /**\n * @param {?} params\n * @param {?} ctx\n * @return {?}\n */\n _TsEmitterVisitor.prototype._visitParams = function (params, ctx) {\n var _this = this;\n this.visitAllObjects(function (param) {\n ctx.print(null, param.name);\n _this._printColonType(param.type, ctx);\n }, params, ctx, ',');\n };\n /**\n * @param {?} value\n * @return {?}\n */\n _TsEmitterVisitor.prototype._resolveStaticSymbol = function (value) {\n var /** @type {?} */ reference = value.reference;\n if (!(reference instanceof StaticSymbol)) {\n throw new Error(\"Internal error: unknown identifier \" + JSON.stringify(value));\n }\n var /** @type {?} */ arity = this._importResolver.getTypeArity(reference) || undefined;\n var /** @type {?} */ importReference = this._importResolver.getImportAs(reference) || reference;\n return {\n name: importReference.name,\n filePath: importReference.filePath,\n members: importReference.members, arity: arity\n };\n };\n /**\n * @param {?} value\n * @param {?} typeParams\n * @param {?} ctx\n * @return {?}\n */\n _TsEmitterVisitor.prototype._visitIdentifier = function (value, typeParams, ctx) {\n var _this = this;\n var _a = this._resolveStaticSymbol(value), name = _a.name, filePath = _a.filePath, members = _a.members, arity = _a.arity;\n if (filePath != this._genFilePath) {\n var /** @type {?} */ prefix = this.importsWithPrefixes.get(filePath);\n if (prefix == null) {\n prefix = \"import\" + this.importsWithPrefixes.size;\n this.importsWithPrefixes.set(filePath, prefix);\n }\n ctx.print(null, prefix + \".\");\n }\n if (members.length) {\n ctx.print(null, name);\n ctx.print(null, '.');\n ctx.print(null, members.join('.'));\n }\n else {\n ctx.print(null, name);\n }\n if (this.typeExpression > 0) {\n // If we are in a type expression that refers to a generic type then supply\n // the required type parameters. If there were not enough type parameters\n // supplied, supply any as the type. Outside a type expression the reference\n // should not supply type parameters and be treated as a simple value reference\n // to the constructor function itself.\n var /** @type {?} */ suppliedParameters = (typeParams && typeParams.length) || 0;\n var /** @type {?} */ additionalParameters = (arity || 0) - suppliedParameters;\n if (suppliedParameters > 0 || additionalParameters > 0) {\n ctx.print(null, \"<\");\n if (suppliedParameters > 0) {\n this.visitAllObjects(function (type) { return type.visitType(_this, ctx); }, typeParams, ctx, ',');\n }\n if (additionalParameters > 0) {\n for (var /** @type {?} */ i = 0; i < additionalParameters; i++) {\n if (i > 0 || suppliedParameters > 0)\n ctx.print(null, ',');\n ctx.print(null, 'any');\n }\n }\n ctx.print(null, \">\");\n }\n }\n };\n /**\n * @param {?} type\n * @param {?} ctx\n * @param {?=} defaultType\n * @return {?}\n */\n _TsEmitterVisitor.prototype._printColonType = function (type, ctx, defaultType) {\n if (type !== INFERRED_TYPE) {\n ctx.print(null, ':');\n this.visitType(type, ctx, defaultType);\n }\n };\n return _TsEmitterVisitor;\n}(AbstractEmitterVisitor));\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// =================================================================================================\n// =========== S T O P - S T O P - S T O P - S T O P - S T O P - S T O P ===========\n// =================================================================================================\n// =================================================================================================\n//\n// DO NOT EDIT THIS LIST OF SECURITY SENSITIVE PROPERTIES WITHOUT A SECURITY REVIEW!\n// Reach out to mprobst for details.\n//\n// =================================================================================================\n/** Map from tagName|propertyName SecurityContext. Properties applying to all tags use '*'. */\nvar SECURITY_SCHEMA = {};\n/**\n * @param {?} ctx\n * @param {?} specs\n * @return {?}\n */\nfunction registerContext(ctx, specs) {\n for (var _i = 0, specs_1 = specs; _i < specs_1.length; _i++) {\n var spec = specs_1[_i];\n SECURITY_SCHEMA[spec.toLowerCase()] = ctx;\n }\n}\n// Case is insignificant below, all element and attribute names are lower-cased for lookup.\nregisterContext(SecurityContext.HTML, [\n 'iframe|srcdoc',\n '*|innerHTML',\n '*|outerHTML',\n]);\nregisterContext(SecurityContext.STYLE, ['*|style']);\n// NB: no SCRIPT contexts here, they are never allowed due to the parser stripping them.\nregisterContext(SecurityContext.URL, [\n '*|formAction', 'area|href', 'area|ping', 'audio|src', 'a|href',\n 'a|ping', 'blockquote|cite', 'body|background', 'del|cite', 'form|action',\n 'img|src', 'img|srcset', 'input|src', 'ins|cite', 'q|cite',\n 'source|src', 'source|srcset', 'track|src', 'video|poster', 'video|src',\n]);\nregisterContext(SecurityContext.RESOURCE_URL, [\n 'applet|code',\n 'applet|codebase',\n 'base|href',\n 'embed|src',\n 'frame|src',\n 'head|profile',\n 'html|manifest',\n 'iframe|src',\n 'link|href',\n 'media|src',\n 'object|codebase',\n 'object|data',\n 'script|src',\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 */\nvar BOOLEAN = 'boolean';\nvar NUMBER = 'number';\nvar STRING = 'string';\nvar OBJECT = 'object';\n/**\n * This array represents the DOM schema. It encodes inheritance, properties, and events.\n *\n * ## Overview\n *\n * Each line represents one kind of element. The `element_inheritance` and properties are joined\n * using `element_inheritance|properties` syntax.\n *\n * ## Element Inheritance\n *\n * The `element_inheritance` can be further subdivided as `element1,element2,...^parentElement`.\n * Here the individual elements are separated by `,` (commas). Every element in the list\n * has identical properties.\n *\n * An `element` may inherit additional properties from `parentElement` If no `^parentElement` is\n * specified then `\"\"` (blank) element is assumed.\n *\n * NOTE: The blank element inherits from root `[Element]` element, the super element of all\n * elements.\n *\n * NOTE an element prefix such as `:svg:` has no special meaning to the schema.\n *\n * ## Properties\n *\n * Each element has a set of properties separated by `,` (commas). Each property can be prefixed\n * by a special character designating its type:\n *\n * - (no prefix): property is a string.\n * - `*`: property represents an event.\n * - `!`: property is a boolean.\n * - `#`: property is a number.\n * - `%`: property is an object.\n *\n * ## Query\n *\n * The class creates an internal squas representation which allows to easily answer the query of\n * if a given property exist on a given element.\n *\n * NOTE: We don't yet support querying for types or events.\n * NOTE: This schema is auto extracted from `schema_extractor.ts` located in the test folder,\n * see dom_element_schema_registry_spec.ts\n */\n// =================================================================================================\n// =================================================================================================\n// =========== S T O P - S T O P - S T O P - S T O P - S T O P - S T O P ===========\n// =================================================================================================\n// =================================================================================================\n//\n// DO NOT EDIT THIS DOM SCHEMA WITHOUT A SECURITY REVIEW!\n//\n// Newly added properties must be security reviewed and assigned an appropriate SecurityContext in\n// dom_security_schema.ts. Reach out to mprobst & rjamet for details.\n//\n// =================================================================================================\nvar SCHEMA = [\n '[Element]|textContent,%classList,className,id,innerHTML,*beforecopy,*beforecut,*beforepaste,*copy,*cut,*paste,*search,*selectstart,*webkitfullscreenchange,*webkitfullscreenerror,*wheel,outerHTML,#scrollLeft,#scrollTop',\n '[HTMLElement]^[Element]|accessKey,contentEditable,dir,!draggable,!hidden,innerText,lang,*abort,*beforecopy,*beforecut,*beforepaste,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*copy,*cuechange,*cut,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*message,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*mozfullscreenchange,*mozfullscreenerror,*mozpointerlockchange,*mozpointerlockerror,*paste,*pause,*play,*playing,*progress,*ratechange,*reset,*resize,*scroll,*search,*seeked,*seeking,*select,*selectstart,*show,*stalled,*submit,*suspend,*timeupdate,*toggle,*volumechange,*waiting,*webglcontextcreationerror,*webglcontextlost,*webglcontextrestored,*webkitfullscreenchange,*webkitfullscreenerror,*wheel,outerText,!spellcheck,%style,#tabIndex,title,!translate',\n 'abbr,address,article,aside,b,bdi,bdo,cite,code,dd,dfn,dt,em,figcaption,figure,footer,header,i,kbd,main,mark,nav,noscript,rb,rp,rt,rtc,ruby,s,samp,section,small,strong,sub,sup,u,var,wbr^[HTMLElement]|accessKey,contentEditable,dir,!draggable,!hidden,innerText,lang,*abort,*beforecopy,*beforecut,*beforepaste,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*copy,*cuechange,*cut,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*message,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*mozfullscreenchange,*mozfullscreenerror,*mozpointerlockchange,*mozpointerlockerror,*paste,*pause,*play,*playing,*progress,*ratechange,*reset,*resize,*scroll,*search,*seeked,*seeking,*select,*selectstart,*show,*stalled,*submit,*suspend,*timeupdate,*toggle,*volumechange,*waiting,*webglcontextcreationerror,*webglcontextlost,*webglcontextrestored,*webkitfullscreenchange,*webkitfullscreenerror,*wheel,outerText,!spellcheck,%style,#tabIndex,title,!translate',\n 'media^[HTMLElement]|!autoplay,!controls,%crossOrigin,#currentTime,!defaultMuted,#defaultPlaybackRate,!disableRemotePlayback,!loop,!muted,*encrypted,#playbackRate,preload,src,%srcObject,#volume',\n ':svg:^[HTMLElement]|*abort,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*cuechange,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*pause,*play,*playing,*progress,*ratechange,*reset,*resize,*scroll,*seeked,*seeking,*select,*show,*stalled,*submit,*suspend,*timeupdate,*toggle,*volumechange,*waiting,%style,#tabIndex',\n ':svg:graphics^:svg:|',\n ':svg:animation^:svg:|*begin,*end,*repeat',\n ':svg:geometry^:svg:|',\n ':svg:componentTransferFunction^:svg:|',\n ':svg:gradient^:svg:|',\n ':svg:textContent^:svg:graphics|',\n ':svg:textPositioning^:svg:textContent|',\n 'a^[HTMLElement]|charset,coords,download,hash,host,hostname,href,hreflang,name,password,pathname,ping,port,protocol,referrerPolicy,rel,rev,search,shape,target,text,type,username',\n 'area^[HTMLElement]|alt,coords,hash,host,hostname,href,!noHref,password,pathname,ping,port,protocol,referrerPolicy,search,shape,target,username',\n 'audio^media|',\n 'br^[HTMLElement]|clear',\n 'base^[HTMLElement]|href,target',\n 'body^[HTMLElement]|aLink,background,bgColor,link,*beforeunload,*blur,*error,*focus,*hashchange,*languagechange,*load,*message,*offline,*online,*pagehide,*pageshow,*popstate,*rejectionhandled,*resize,*scroll,*storage,*unhandledrejection,*unload,text,vLink',\n 'button^[HTMLElement]|!autofocus,!disabled,formAction,formEnctype,formMethod,!formNoValidate,formTarget,name,type,value',\n 'canvas^[HTMLElement]|#height,#width',\n 'content^[HTMLElement]|select',\n 'dl^[HTMLElement]|!compact',\n 'datalist^[HTMLElement]|',\n 'details^[HTMLElement]|!open',\n 'dialog^[HTMLElement]|!open,returnValue',\n 'dir^[HTMLElement]|!compact',\n 'div^[HTMLElement]|align',\n 'embed^[HTMLElement]|align,height,name,src,type,width',\n 'fieldset^[HTMLElement]|!disabled,name',\n 'font^[HTMLElement]|color,face,size',\n 'form^[HTMLElement]|acceptCharset,action,autocomplete,encoding,enctype,method,name,!noValidate,target',\n 'frame^[HTMLElement]|frameBorder,longDesc,marginHeight,marginWidth,name,!noResize,scrolling,src',\n 'frameset^[HTMLElement]|cols,*beforeunload,*blur,*error,*focus,*hashchange,*languagechange,*load,*message,*offline,*online,*pagehide,*pageshow,*popstate,*rejectionhandled,*resize,*scroll,*storage,*unhandledrejection,*unload,rows',\n 'hr^[HTMLElement]|align,color,!noShade,size,width',\n 'head^[HTMLElement]|',\n 'h1,h2,h3,h4,h5,h6^[HTMLElement]|align',\n 'html^[HTMLElement]|version',\n 'iframe^[HTMLElement]|align,!allowFullscreen,frameBorder,height,longDesc,marginHeight,marginWidth,name,referrerPolicy,%sandbox,scrolling,src,srcdoc,width',\n 'img^[HTMLElement]|align,alt,border,%crossOrigin,#height,#hspace,!isMap,longDesc,lowsrc,name,referrerPolicy,sizes,src,srcset,useMap,#vspace,#width',\n 'input^[HTMLElement]|accept,align,alt,autocapitalize,autocomplete,!autofocus,!checked,!defaultChecked,defaultValue,dirName,!disabled,%files,formAction,formEnctype,formMethod,!formNoValidate,formTarget,#height,!incremental,!indeterminate,max,#maxLength,min,#minLength,!multiple,name,pattern,placeholder,!readOnly,!required,selectionDirection,#selectionEnd,#selectionStart,#size,src,step,type,useMap,value,%valueAsDate,#valueAsNumber,#width',\n 'keygen^[HTMLElement]|!autofocus,challenge,!disabled,keytype,name',\n 'li^[HTMLElement]|type,#value',\n 'label^[HTMLElement]|htmlFor',\n 'legend^[HTMLElement]|align',\n 'link^[HTMLElement]|as,charset,%crossOrigin,!disabled,href,hreflang,integrity,media,rel,%relList,rev,%sizes,target,type',\n 'map^[HTMLElement]|name',\n 'marquee^[HTMLElement]|behavior,bgColor,direction,height,#hspace,#loop,#scrollAmount,#scrollDelay,!trueSpeed,#vspace,width',\n 'menu^[HTMLElement]|!compact',\n 'meta^[HTMLElement]|content,httpEquiv,name,scheme',\n 'meter^[HTMLElement]|#high,#low,#max,#min,#optimum,#value',\n 'ins,del^[HTMLElement]|cite,dateTime',\n 'ol^[HTMLElement]|!compact,!reversed,#start,type',\n 'object^[HTMLElement]|align,archive,border,code,codeBase,codeType,data,!declare,height,#hspace,name,standby,type,useMap,#vspace,width',\n 'optgroup^[HTMLElement]|!disabled,label',\n 'option^[HTMLElement]|!defaultSelected,!disabled,label,!selected,text,value',\n 'output^[HTMLElement]|defaultValue,%htmlFor,name,value',\n 'p^[HTMLElement]|align',\n 'param^[HTMLElement]|name,type,value,valueType',\n 'picture^[HTMLElement]|',\n 'pre^[HTMLElement]|#width',\n 'progress^[HTMLElement]|#max,#value',\n 'q,blockquote,cite^[HTMLElement]|',\n 'script^[HTMLElement]|!async,charset,%crossOrigin,!defer,event,htmlFor,integrity,src,text,type',\n 'select^[HTMLElement]|!autofocus,!disabled,#length,!multiple,name,!required,#selectedIndex,#size,value',\n 'shadow^[HTMLElement]|',\n 'source^[HTMLElement]|media,sizes,src,srcset,type',\n 'span^[HTMLElement]|',\n 'style^[HTMLElement]|!disabled,media,type',\n 'caption^[HTMLElement]|align',\n 'th,td^[HTMLElement]|abbr,align,axis,bgColor,ch,chOff,#colSpan,headers,height,!noWrap,#rowSpan,scope,vAlign,width',\n 'col,colgroup^[HTMLElement]|align,ch,chOff,#span,vAlign,width',\n 'table^[HTMLElement]|align,bgColor,border,%caption,cellPadding,cellSpacing,frame,rules,summary,%tFoot,%tHead,width',\n 'tr^[HTMLElement]|align,bgColor,ch,chOff,vAlign',\n 'tfoot,thead,tbody^[HTMLElement]|align,ch,chOff,vAlign',\n 'template^[HTMLElement]|',\n 'textarea^[HTMLElement]|autocapitalize,!autofocus,#cols,defaultValue,dirName,!disabled,#maxLength,#minLength,name,placeholder,!readOnly,!required,#rows,selectionDirection,#selectionEnd,#selectionStart,value,wrap',\n 'title^[HTMLElement]|text',\n 'track^[HTMLElement]|!default,kind,label,src,srclang',\n 'ul^[HTMLElement]|!compact,type',\n 'unknown^[HTMLElement]|',\n 'video^media|#height,poster,#width',\n ':svg:a^:svg:graphics|',\n ':svg:animate^:svg:animation|',\n ':svg:animateMotion^:svg:animation|',\n ':svg:animateTransform^:svg:animation|',\n ':svg:circle^:svg:geometry|',\n ':svg:clipPath^:svg:graphics|',\n ':svg:cursor^:svg:|',\n ':svg:defs^:svg:graphics|',\n ':svg:desc^:svg:|',\n ':svg:discard^:svg:|',\n ':svg:ellipse^:svg:geometry|',\n ':svg:feBlend^:svg:|',\n ':svg:feColorMatrix^:svg:|',\n ':svg:feComponentTransfer^:svg:|',\n ':svg:feComposite^:svg:|',\n ':svg:feConvolveMatrix^:svg:|',\n ':svg:feDiffuseLighting^:svg:|',\n ':svg:feDisplacementMap^:svg:|',\n ':svg:feDistantLight^:svg:|',\n ':svg:feDropShadow^:svg:|',\n ':svg:feFlood^:svg:|',\n ':svg:feFuncA^:svg:componentTransferFunction|',\n ':svg:feFuncB^:svg:componentTransferFunction|',\n ':svg:feFuncG^:svg:componentTransferFunction|',\n ':svg:feFuncR^:svg:componentTransferFunction|',\n ':svg:feGaussianBlur^:svg:|',\n ':svg:feImage^:svg:|',\n ':svg:feMerge^:svg:|',\n ':svg:feMergeNode^:svg:|',\n ':svg:feMorphology^:svg:|',\n ':svg:feOffset^:svg:|',\n ':svg:fePointLight^:svg:|',\n ':svg:feSpecularLighting^:svg:|',\n ':svg:feSpotLight^:svg:|',\n ':svg:feTile^:svg:|',\n ':svg:feTurbulence^:svg:|',\n ':svg:filter^:svg:|',\n ':svg:foreignObject^:svg:graphics|',\n ':svg:g^:svg:graphics|',\n ':svg:image^:svg:graphics|',\n ':svg:line^:svg:geometry|',\n ':svg:linearGradient^:svg:gradient|',\n ':svg:mpath^:svg:|',\n ':svg:marker^:svg:|',\n ':svg:mask^:svg:|',\n ':svg:metadata^:svg:|',\n ':svg:path^:svg:geometry|',\n ':svg:pattern^:svg:|',\n ':svg:polygon^:svg:geometry|',\n ':svg:polyline^:svg:geometry|',\n ':svg:radialGradient^:svg:gradient|',\n ':svg:rect^:svg:geometry|',\n ':svg:svg^:svg:graphics|#currentScale,#zoomAndPan',\n ':svg:script^:svg:|type',\n ':svg:set^:svg:animation|',\n ':svg:stop^:svg:|',\n ':svg:style^:svg:|!disabled,media,title,type',\n ':svg:switch^:svg:graphics|',\n ':svg:symbol^:svg:|',\n ':svg:tspan^:svg:textPositioning|',\n ':svg:text^:svg:textPositioning|',\n ':svg:textPath^:svg:textContent|',\n ':svg:title^:svg:|',\n ':svg:use^:svg:graphics|',\n ':svg:view^:svg:|#zoomAndPan',\n 'data^[HTMLElement]|value',\n 'menuitem^[HTMLElement]|type,label,icon,!disabled,!checked,radiogroup,!default',\n 'summary^[HTMLElement]|',\n 'time^[HTMLElement]|dateTime',\n];\nvar _ATTR_TO_PROP = {\n 'class': 'className',\n 'for': 'htmlFor',\n 'formaction': 'formAction',\n 'innerHtml': 'innerHTML',\n 'readonly': 'readOnly',\n 'tabindex': 'tabIndex',\n};\nvar DomElementSchemaRegistry = (function (_super) {\n __extends(DomElementSchemaRegistry, _super);\n function DomElementSchemaRegistry() {\n var _this = _super.call(this) || this;\n _this._schema = {};\n SCHEMA.forEach(function (encodedType) {\n var type = {};\n var _a = encodedType.split('|'), strType = _a[0], strProperties = _a[1];\n var properties = strProperties.split(',');\n var _b = strType.split('^'), typeNames = _b[0], superName = _b[1];\n typeNames.split(',').forEach(function (tag) { return _this._schema[tag.toLowerCase()] = type; });\n var superType = superName && _this._schema[superName.toLowerCase()];\n if (superType) {\n Object.keys(superType).forEach(function (prop) { type[prop] = superType[prop]; });\n }\n properties.forEach(function (property) {\n if (property.length > 0) {\n switch (property[0]) {\n case '*':\n // We don't yet support events.\n // If ever allowing to bind to events, GO THROUGH A SECURITY REVIEW, allowing events\n // will\n // almost certainly introduce bad XSS vulnerabilities.\n // type[property.substring(1)] = EVENT;\n break;\n case '!':\n type[property.substring(1)] = BOOLEAN;\n break;\n case '#':\n type[property.substring(1)] = NUMBER;\n break;\n case '%':\n type[property.substring(1)] = OBJECT;\n break;\n default:\n type[property] = STRING;\n }\n }\n });\n });\n return _this;\n }\n /**\n * @param {?} tagName\n * @param {?} propName\n * @param {?} schemaMetas\n * @return {?}\n */\n DomElementSchemaRegistry.prototype.hasProperty = function (tagName, propName, schemaMetas) {\n if (schemaMetas.some(function (schema) { return schema.name === NO_ERRORS_SCHEMA.name; })) {\n return true;\n }\n if (tagName.indexOf('-') > -1) {\n if (tagName === 'ng-container' || tagName === 'ng-content') {\n return false;\n }\n if (schemaMetas.some(function (schema) { return schema.name === CUSTOM_ELEMENTS_SCHEMA.name; })) {\n // Can't tell now as we don't know which properties a custom element will get\n // once it is instantiated\n return true;\n }\n }\n var /** @type {?} */ elementProperties = this._schema[tagName.toLowerCase()] || this._schema['unknown'];\n return !!elementProperties[propName];\n };\n /**\n * @param {?} tagName\n * @param {?} schemaMetas\n * @return {?}\n */\n DomElementSchemaRegistry.prototype.hasElement = function (tagName, schemaMetas) {\n if (schemaMetas.some(function (schema) { return schema.name === NO_ERRORS_SCHEMA.name; })) {\n return true;\n }\n if (tagName.indexOf('-') > -1) {\n if (tagName === 'ng-container' || tagName === 'ng-content') {\n return true;\n }\n if (schemaMetas.some(function (schema) { return schema.name === CUSTOM_ELEMENTS_SCHEMA.name; })) {\n // Allow any custom elements\n return true;\n }\n }\n return !!this._schema[tagName.toLowerCase()];\n };\n /**\n * securityContext returns the security context for the given property on the given DOM tag.\n *\n * Tag and property name are statically known and cannot change at runtime, i.e. it is not\n * possible to bind a value into a changing attribute or tag name.\n *\n * The filtering is white list based. All attributes in the schema above are assumed to have the\n * 'NONE' security context, i.e. that they are safe inert string values. Only specific well known\n * attack vectors are assigned their appropriate context.\n * @param {?} tagName\n * @param {?} propName\n * @param {?} isAttribute\n * @return {?}\n */\n DomElementSchemaRegistry.prototype.securityContext = function (tagName, propName, isAttribute) {\n if (isAttribute) {\n // NB: For security purposes, use the mapped property name, not the attribute name.\n propName = this.getMappedPropName(propName);\n }\n // Make sure comparisons are case insensitive, so that case differences between attribute and\n // property names do not have a security impact.\n tagName = tagName.toLowerCase();\n propName = propName.toLowerCase();\n var /** @type {?} */ ctx = SECURITY_SCHEMA[tagName + '|' + propName];\n if (ctx) {\n return ctx;\n }\n ctx = SECURITY_SCHEMA['*|' + propName];\n return ctx ? ctx : SecurityContext.NONE;\n };\n /**\n * @param {?} propName\n * @return {?}\n */\n DomElementSchemaRegistry.prototype.getMappedPropName = function (propName) { return _ATTR_TO_PROP[propName] || propName; };\n /**\n * @return {?}\n */\n DomElementSchemaRegistry.prototype.getDefaultComponentElementName = function () { return 'ng-component'; };\n /**\n * @param {?} name\n * @return {?}\n */\n DomElementSchemaRegistry.prototype.validateProperty = function (name) {\n if (name.toLowerCase().startsWith('on')) {\n var /** @type {?} */ msg = \"Binding to event property '\" + name + \"' is disallowed for security reasons, \" +\n (\"please use (\" + name.slice(2) + \")=...\") +\n (\"\\nIf '\" + name + \"' is a directive input, make sure the directive is imported by the\") +\n \" current module.\";\n return { error: true, msg: msg };\n }\n else {\n return { error: false };\n }\n };\n /**\n * @param {?} name\n * @return {?}\n */\n DomElementSchemaRegistry.prototype.validateAttribute = function (name) {\n if (name.toLowerCase().startsWith('on')) {\n var /** @type {?} */ msg = \"Binding to event attribute '\" + name + \"' is disallowed for security reasons, \" +\n (\"please use (\" + name.slice(2) + \")=...\");\n return { error: true, msg: msg };\n }\n else {\n return { error: false };\n }\n };\n /**\n * @return {?}\n */\n DomElementSchemaRegistry.prototype.allKnownElementNames = function () { return Object.keys(this._schema); };\n /**\n * @param {?} propName\n * @return {?}\n */\n DomElementSchemaRegistry.prototype.normalizeAnimationStyleProperty = function (propName) {\n return dashCaseToCamelCase(propName);\n };\n /**\n * @param {?} camelCaseProp\n * @param {?} userProvidedProp\n * @param {?} val\n * @return {?}\n */\n DomElementSchemaRegistry.prototype.normalizeAnimationStyleValue = function (camelCaseProp, userProvidedProp, val) {\n var /** @type {?} */ unit = '';\n var /** @type {?} */ strVal = val.toString().trim();\n var /** @type {?} */ errorMsg = null;\n if (_isPixelDimensionStyle(camelCaseProp) && val !== 0 && val !== '0') {\n if (typeof val === 'number') {\n unit = 'px';\n }\n else {\n var /** @type {?} */ valAndSuffixMatch = val.match(/^[+-]?[\\d\\.]+([a-z]*)$/);\n if (valAndSuffixMatch && valAndSuffixMatch[1].length == 0) {\n errorMsg = \"Please provide a CSS unit value for \" + userProvidedProp + \":\" + val;\n }\n }\n }\n return { error: errorMsg, value: strVal + unit };\n };\n return DomElementSchemaRegistry;\n}(ElementSchemaRegistry));\nDomElementSchemaRegistry.decorators = [\n { type: CompilerInjectable },\n];\n/**\n * @nocollapse\n */\nDomElementSchemaRegistry.ctorParameters = function () { return []; };\n/**\n * @param {?} prop\n * @return {?}\n */\nfunction _isPixelDimensionStyle(prop) {\n switch (prop) {\n case 'width':\n case 'height':\n case 'minWidth':\n case 'minHeight':\n case 'maxWidth':\n case 'maxHeight':\n case 'left':\n case 'top':\n case 'bottom':\n case 'right':\n case 'fontSize':\n case 'outlineWidth':\n case 'outlineOffset':\n case 'paddingTop':\n case 'paddingLeft':\n case 'paddingBottom':\n case 'paddingRight':\n case 'marginTop':\n case 'marginLeft':\n case 'marginBottom':\n case 'marginRight':\n case 'borderRadius':\n case 'borderWidth':\n case 'borderTopWidth':\n case 'borderLeftWidth':\n case 'borderRightWidth':\n case 'borderBottomWidth':\n case 'textIndent':\n return true;\n default:\n return false;\n }\n}\nvar ShadowCss = (function () {\n function ShadowCss() {\n this.strictStyling = true;\n }\n /**\n * @param {?} cssText\n * @param {?} selector\n * @param {?=} hostSelector\n * @return {?}\n */\n ShadowCss.prototype.shimCssText = function (cssText, selector, hostSelector) {\n if (hostSelector === void 0) { hostSelector = ''; }\n var /** @type {?} */ sourceMappingUrl = extractSourceMappingUrl(cssText);\n cssText = stripComments(cssText);\n cssText = this._insertDirectives(cssText);\n return this._scopeCssText(cssText, selector, hostSelector) + sourceMappingUrl;\n };\n /**\n * @param {?} cssText\n * @return {?}\n */\n ShadowCss.prototype._insertDirectives = function (cssText) {\n cssText = this._insertPolyfillDirectivesInCssText(cssText);\n return this._insertPolyfillRulesInCssText(cssText);\n };\n /**\n * @param {?} cssText\n * @return {?}\n */\n ShadowCss.prototype._insertPolyfillDirectivesInCssText = function (cssText) {\n // Difference with webcomponents.js: does not handle comments\n return cssText.replace(_cssContentNextSelectorRe, function () {\n var m = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n m[_i] = arguments[_i];\n }\n return m[2] + '{';\n });\n };\n /**\n * @param {?} cssText\n * @return {?}\n */\n ShadowCss.prototype._insertPolyfillRulesInCssText = function (cssText) {\n // Difference with webcomponents.js: does not handle comments\n return cssText.replace(_cssContentRuleRe, function () {\n var m = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n m[_i] = arguments[_i];\n }\n var /** @type {?} */ rule = m[0].replace(m[1], '').replace(m[2], '');\n return m[4] + rule;\n });\n };\n /**\n * @param {?} cssText\n * @param {?} scopeSelector\n * @param {?} hostSelector\n * @return {?}\n */\n ShadowCss.prototype._scopeCssText = function (cssText, scopeSelector, hostSelector) {\n var /** @type {?} */ unscopedRules = this._extractUnscopedRulesFromCssText(cssText);\n // replace :host and :host-context -shadowcsshost and -shadowcsshost respectively\n cssText = this._insertPolyfillHostInCssText(cssText);\n cssText = this._convertColonHost(cssText);\n cssText = this._convertColonHostContext(cssText);\n cssText = this._convertShadowDOMSelectors(cssText);\n if (scopeSelector) {\n cssText = this._scopeSelectors(cssText, scopeSelector, hostSelector);\n }\n cssText = cssText + '\\n' + unscopedRules;\n return cssText.trim();\n };\n /**\n * @param {?} cssText\n * @return {?}\n */\n ShadowCss.prototype._extractUnscopedRulesFromCssText = function (cssText) {\n // Difference with webcomponents.js: does not handle comments\n var /** @type {?} */ r = '';\n var /** @type {?} */ m;\n _cssContentUnscopedRuleRe.lastIndex = 0;\n while ((m = _cssContentUnscopedRuleRe.exec(cssText)) !== null) {\n var /** @type {?} */ rule = m[0].replace(m[2], '').replace(m[1], m[4]);\n r += rule + '\\n\\n';\n }\n return r;\n };\n /**\n * @param {?} cssText\n * @return {?}\n */\n ShadowCss.prototype._convertColonHost = function (cssText) {\n return this._convertColonRule(cssText, _cssColonHostRe, this._colonHostPartReplacer);\n };\n /**\n * @param {?} cssText\n * @return {?}\n */\n ShadowCss.prototype._convertColonHostContext = function (cssText) {\n return this._convertColonRule(cssText, _cssColonHostContextRe, this._colonHostContextPartReplacer);\n };\n /**\n * @param {?} cssText\n * @param {?} regExp\n * @param {?} partReplacer\n * @return {?}\n */\n ShadowCss.prototype._convertColonRule = function (cssText, regExp, partReplacer) {\n // m[1] = :host(-context), m[2] = contents of (), m[3] rest of rule\n return cssText.replace(regExp, function () {\n var m = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n m[_i] = arguments[_i];\n }\n if (m[2]) {\n var /** @type {?} */ parts = m[2].split(',');\n var /** @type {?} */ r = [];\n for (var /** @type {?} */ i = 0; i < parts.length; i++) {\n var /** @type {?} */ p = parts[i].trim();\n if (!p)\n break;\n r.push(partReplacer(_polyfillHostNoCombinator, p, m[3]));\n }\n return r.join(',');\n }\n else {\n return _polyfillHostNoCombinator + m[3];\n }\n });\n };\n /**\n * @param {?} host\n * @param {?} part\n * @param {?} suffix\n * @return {?}\n */\n ShadowCss.prototype._colonHostContextPartReplacer = function (host, part, suffix) {\n if (part.indexOf(_polyfillHost) > -1) {\n return this._colonHostPartReplacer(host, part, suffix);\n }\n else {\n return host + part + suffix + ', ' + part + ' ' + host + suffix;\n }\n };\n /**\n * @param {?} host\n * @param {?} part\n * @param {?} suffix\n * @return {?}\n */\n ShadowCss.prototype._colonHostPartReplacer = function (host, part, suffix) {\n return host + part.replace(_polyfillHost, '') + suffix;\n };\n /**\n * @param {?} cssText\n * @return {?}\n */\n ShadowCss.prototype._convertShadowDOMSelectors = function (cssText) {\n return _shadowDOMSelectorsRe.reduce(function (result, pattern) { return result.replace(pattern, ' '); }, cssText);\n };\n /**\n * @param {?} cssText\n * @param {?} scopeSelector\n * @param {?} hostSelector\n * @return {?}\n */\n ShadowCss.prototype._scopeSelectors = function (cssText, scopeSelector, hostSelector) {\n var _this = this;\n return processRules(cssText, function (rule) {\n var /** @type {?} */ selector = rule.selector;\n var /** @type {?} */ content = rule.content;\n if (rule.selector[0] != '@') {\n selector =\n _this._scopeSelector(rule.selector, scopeSelector, hostSelector, _this.strictStyling);\n }\n else if (rule.selector.startsWith('@media') || rule.selector.startsWith('@supports') ||\n rule.selector.startsWith('@page') || rule.selector.startsWith('@document')) {\n content = _this._scopeSelectors(rule.content, scopeSelector, hostSelector);\n }\n return new CssRule(selector, content);\n });\n };\n /**\n * @param {?} selector\n * @param {?} scopeSelector\n * @param {?} hostSelector\n * @param {?} strict\n * @return {?}\n */\n ShadowCss.prototype._scopeSelector = function (selector, scopeSelector, hostSelector, strict) {\n var _this = this;\n return selector.split(',')\n .map(function (part) { return part.trim().split(_shadowDeepSelectors); })\n .map(function (deepParts) {\n var shallowPart = deepParts[0], otherParts = deepParts.slice(1);\n var /** @type {?} */ applyScope = function (shallowPart) {\n if (_this._selectorNeedsScoping(shallowPart, scopeSelector)) {\n return strict ?\n _this._applyStrictSelectorScope(shallowPart, scopeSelector, hostSelector) :\n _this._applySelectorScope(shallowPart, scopeSelector, hostSelector);\n }\n else {\n return shallowPart;\n }\n };\n return [applyScope(shallowPart)].concat(otherParts).join(' ');\n })\n .join(', ');\n };\n /**\n * @param {?} selector\n * @param {?} scopeSelector\n * @return {?}\n */\n ShadowCss.prototype._selectorNeedsScoping = function (selector, scopeSelector) {\n var /** @type {?} */ re = this._makeScopeMatcher(scopeSelector);\n return !re.test(selector);\n };\n /**\n * @param {?} scopeSelector\n * @return {?}\n */\n ShadowCss.prototype._makeScopeMatcher = function (scopeSelector) {\n var /** @type {?} */ lre = /\\[/g;\n var /** @type {?} */ rre = /\\]/g;\n scopeSelector = scopeSelector.replace(lre, '\\\\[').replace(rre, '\\\\]');\n return new RegExp('^(' + scopeSelector + ')' + _selectorReSuffix, 'm');\n };\n /**\n * @param {?} selector\n * @param {?} scopeSelector\n * @param {?} hostSelector\n * @return {?}\n */\n ShadowCss.prototype._applySelectorScope = function (selector, scopeSelector, hostSelector) {\n // Difference from webcomponents.js: scopeSelector could not be an array\n return this._applySimpleSelectorScope(selector, scopeSelector, hostSelector);\n };\n /**\n * @param {?} selector\n * @param {?} scopeSelector\n * @param {?} hostSelector\n * @return {?}\n */\n ShadowCss.prototype._applySimpleSelectorScope = function (selector, scopeSelector, hostSelector) {\n // In Android browser, the lastIndex is not reset when the regex is used in String.replace()\n _polyfillHostRe.lastIndex = 0;\n if (_polyfillHostRe.test(selector)) {\n var /** @type {?} */ replaceBy_1 = this.strictStyling ? \"[\" + hostSelector + \"]\" : scopeSelector;\n return selector\n .replace(_polyfillHostNoCombinatorRe, function (hnc, selector) {\n return selector.replace(/([^:]*)(:*)(.*)/, function (_, before, colon, after) {\n return before + replaceBy_1 + colon + after;\n });\n })\n .replace(_polyfillHostRe, replaceBy_1 + ' ');\n }\n return scopeSelector + ' ' + selector;\n };\n /**\n * @param {?} selector\n * @param {?} scopeSelector\n * @param {?} hostSelector\n * @return {?}\n */\n ShadowCss.prototype._applyStrictSelectorScope = function (selector, scopeSelector, hostSelector) {\n var _this = this;\n var /** @type {?} */ isRe = /\\[is=([^\\]]*)\\]/g;\n scopeSelector = scopeSelector.replace(isRe, function (_) {\n var parts = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n parts[_i - 1] = arguments[_i];\n }\n return parts[0];\n });\n var /** @type {?} */ attrName = '[' + scopeSelector + ']';\n var /** @type {?} */ _scopeSelectorPart = function (p) {\n var /** @type {?} */ scopedP = p.trim();\n if (!scopedP) {\n return '';\n }\n if (p.indexOf(_polyfillHostNoCombinator) > -1) {\n scopedP = _this._applySimpleSelectorScope(p, scopeSelector, hostSelector);\n }\n else {\n // remove :host since it should be unnecessary\n var /** @type {?} */ t = p.replace(_polyfillHostRe, '');\n if (t.length > 0) {\n var /** @type {?} */ matches = t.match(/([^:]*)(:*)(.*)/);\n if (matches) {\n scopedP = matches[1] + attrName + matches[2] + matches[3];\n }\n }\n }\n return scopedP;\n };\n var /** @type {?} */ safeContent = new SafeSelector(selector);\n selector = safeContent.content();\n var /** @type {?} */ scopedSelector = '';\n var /** @type {?} */ startIndex = 0;\n var /** @type {?} */ res;\n var /** @type {?} */ sep = /( |>|\\+|~(?!=))\\s*/g;\n var /** @type {?} */ scopeAfter = selector.indexOf(_polyfillHostNoCombinator);\n while ((res = sep.exec(selector)) !== null) {\n var /** @type {?} */ separator = res[1];\n var /** @type {?} */ part = selector.slice(startIndex, res.index).trim();\n // if a selector appears before :host-context it should not be shimmed as it\n // matches on ancestor elements and not on elements in the host's shadow\n var /** @type {?} */ scopedPart = startIndex >= scopeAfter ? _scopeSelectorPart(part) : part;\n scopedSelector += scopedPart + \" \" + separator + \" \";\n startIndex = sep.lastIndex;\n }\n scopedSelector += _scopeSelectorPart(selector.substring(startIndex));\n // replace the placeholders with their original values\n return safeContent.restore(scopedSelector);\n };\n /**\n * @param {?} selector\n * @return {?}\n */\n ShadowCss.prototype._insertPolyfillHostInCssText = function (selector) {\n return selector.replace(_colonHostContextRe, _polyfillHostContext)\n .replace(_colonHostRe, _polyfillHost);\n };\n return ShadowCss;\n}());\nvar SafeSelector = (function () {\n /**\n * @param {?} selector\n */\n function SafeSelector(selector) {\n var _this = this;\n this.placeholders = [];\n this.index = 0;\n // Replaces attribute selectors with placeholders.\n // The WS in [attr=\"va lue\"] would otherwise be interpreted as a selector separator.\n selector = selector.replace(/(\\[[^\\]]*\\])/g, function (_, keep) {\n var replaceBy = \"__ph-\" + _this.index + \"__\";\n _this.placeholders.push(keep);\n _this.index++;\n return replaceBy;\n });\n // Replaces the expression in `:nth-child(2n + 1)` with a placeholder.\n // WS and \"+\" would otherwise be interpreted as selector separators.\n this._content = selector.replace(/(:nth-[-\\w]+)(\\([^)]+\\))/g, function (_, pseudo, exp) {\n var replaceBy = \"__ph-\" + _this.index + \"__\";\n _this.placeholders.push(exp);\n _this.index++;\n return pseudo + replaceBy;\n });\n }\n ;\n /**\n * @param {?} content\n * @return {?}\n */\n SafeSelector.prototype.restore = function (content) {\n var _this = this;\n return content.replace(/__ph-(\\d+)__/g, function (ph, index) { return _this.placeholders[+index]; });\n };\n /**\n * @return {?}\n */\n SafeSelector.prototype.content = function () { return this._content; };\n return SafeSelector;\n}());\nvar _cssContentNextSelectorRe = /polyfill-next-selector[^}]*content:[\\s]*?(['\"])(.*?)\\1[;\\s]*}([^{]*?){/gim;\nvar _cssContentRuleRe = /(polyfill-rule)[^}]*(content:[\\s]*(['\"])(.*?)\\3)[;\\s]*[^}]*}/gim;\nvar _cssContentUnscopedRuleRe = /(polyfill-unscoped-rule)[^}]*(content:[\\s]*(['\"])(.*?)\\3)[;\\s]*[^}]*}/gim;\nvar _polyfillHost = '-shadowcsshost';\n// note: :host-context pre-processed to -shadowcsshostcontext.\nvar _polyfillHostContext = '-shadowcsscontext';\nvar _parenSuffix = ')(?:\\\\((' +\n '(?:\\\\([^)(]*\\\\)|[^)(]*)+?' +\n ')\\\\))?([^,{]*)';\nvar _cssColonHostRe = new RegExp('(' + _polyfillHost + _parenSuffix, 'gim');\nvar _cssColonHostContextRe = new RegExp('(' + _polyfillHostContext + _parenSuffix, 'gim');\nvar _polyfillHostNoCombinator = _polyfillHost + '-no-combinator';\nvar _polyfillHostNoCombinatorRe = /-shadowcsshost-no-combinator([^\\s]*)/;\nvar _shadowDOMSelectorsRe = [\n /::shadow/g,\n /::content/g,\n // Deprecated selectors\n /\\/shadow-deep\\//g,\n /\\/shadow\\//g,\n];\nvar _shadowDeepSelectors = /(?:>>>)|(?:\\/deep\\/)/g;\nvar _selectorReSuffix = '([>\\\\s~+\\[.,{:][\\\\s\\\\S]*)?$';\nvar _polyfillHostRe = /-shadowcsshost/gim;\nvar _colonHostRe = /:host/gim;\nvar _colonHostContextRe = /:host-context/gim;\nvar _commentRe = /\\/\\*\\s*[\\s\\S]*?\\*\\//g;\n/**\n * @param {?} input\n * @return {?}\n */\nfunction stripComments(input) {\n return input.replace(_commentRe, '');\n}\n// all comments except inline source mapping\nvar _sourceMappingUrlRe = /\\/\\*\\s*#\\s*sourceMappingURL=[\\s\\S]+?\\*\\//;\n/**\n * @param {?} input\n * @return {?}\n */\nfunction extractSourceMappingUrl(input) {\n var /** @type {?} */ matcher = input.match(_sourceMappingUrlRe);\n return matcher ? matcher[0] : '';\n}\nvar _ruleRe = /(\\s*)([^;\\{\\}]+?)(\\s*)((?:{%BLOCK%}?\\s*;?)|(?:\\s*;))/g;\nvar _curlyRe = /([{}])/g;\nvar OPEN_CURLY = '{';\nvar CLOSE_CURLY = '}';\nvar BLOCK_PLACEHOLDER = '%BLOCK%';\nvar CssRule = (function () {\n /**\n * @param {?} selector\n * @param {?} content\n */\n function CssRule(selector, content) {\n this.selector = selector;\n this.content = content;\n }\n return CssRule;\n}());\n/**\n * @param {?} input\n * @param {?} ruleCallback\n * @return {?}\n */\nfunction processRules(input, ruleCallback) {\n var /** @type {?} */ inputWithEscapedBlocks = escapeBlocks(input);\n var /** @type {?} */ nextBlockIndex = 0;\n return inputWithEscapedBlocks.escapedString.replace(_ruleRe, function () {\n var m = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n m[_i] = arguments[_i];\n }\n var /** @type {?} */ selector = m[2];\n var /** @type {?} */ content = '';\n var /** @type {?} */ suffix = m[4];\n var /** @type {?} */ contentPrefix = '';\n if (suffix && suffix.startsWith('{' + BLOCK_PLACEHOLDER)) {\n content = inputWithEscapedBlocks.blocks[nextBlockIndex++];\n suffix = suffix.substring(BLOCK_PLACEHOLDER.length + 1);\n contentPrefix = '{';\n }\n var /** @type {?} */ rule = ruleCallback(new CssRule(selector, content));\n return \"\" + m[1] + rule.selector + m[3] + contentPrefix + rule.content + suffix;\n });\n}\nvar StringWithEscapedBlocks = (function () {\n /**\n * @param {?} escapedString\n * @param {?} blocks\n */\n function StringWithEscapedBlocks(escapedString, blocks) {\n this.escapedString = escapedString;\n this.blocks = blocks;\n }\n return StringWithEscapedBlocks;\n}());\n/**\n * @param {?} input\n * @return {?}\n */\nfunction escapeBlocks(input) {\n var /** @type {?} */ inputParts = input.split(_curlyRe);\n var /** @type {?} */ resultParts = [];\n var /** @type {?} */ escapedBlocks = [];\n var /** @type {?} */ bracketCount = 0;\n var /** @type {?} */ currentBlockParts = [];\n for (var /** @type {?} */ partIndex = 0; partIndex < inputParts.length; partIndex++) {\n var /** @type {?} */ part = inputParts[partIndex];\n if (part == CLOSE_CURLY) {\n bracketCount--;\n }\n if (bracketCount > 0) {\n currentBlockParts.push(part);\n }\n else {\n if (currentBlockParts.length > 0) {\n escapedBlocks.push(currentBlockParts.join(''));\n resultParts.push(BLOCK_PLACEHOLDER);\n currentBlockParts = [];\n }\n resultParts.push(part);\n }\n if (part == OPEN_CURLY) {\n bracketCount++;\n }\n }\n if (currentBlockParts.length > 0) {\n escapedBlocks.push(currentBlockParts.join(''));\n resultParts.push(BLOCK_PLACEHOLDER);\n }\n return new StringWithEscapedBlocks(resultParts.join(''), escapedBlocks);\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 */\nvar COMPONENT_VARIABLE = '%COMP%';\nvar HOST_ATTR = \"_nghost-\" + COMPONENT_VARIABLE;\nvar CONTENT_ATTR = \"_ngcontent-\" + COMPONENT_VARIABLE;\nvar StylesCompileDependency = (function () {\n /**\n * @param {?} name\n * @param {?} moduleUrl\n * @param {?} isShimmed\n * @param {?} valuePlaceholder\n */\n function StylesCompileDependency(name, moduleUrl, isShimmed, valuePlaceholder) {\n this.name = name;\n this.moduleUrl = moduleUrl;\n this.isShimmed = isShimmed;\n this.valuePlaceholder = valuePlaceholder;\n }\n return StylesCompileDependency;\n}());\nvar StylesCompileResult = (function () {\n /**\n * @param {?} componentStylesheet\n * @param {?} externalStylesheets\n */\n function StylesCompileResult(componentStylesheet, externalStylesheets) {\n this.componentStylesheet = componentStylesheet;\n this.externalStylesheets = externalStylesheets;\n }\n return StylesCompileResult;\n}());\nvar CompiledStylesheet = (function () {\n /**\n * @param {?} statements\n * @param {?} stylesVar\n * @param {?} dependencies\n * @param {?} isShimmed\n * @param {?} meta\n */\n function CompiledStylesheet(statements, stylesVar, dependencies, isShimmed, meta) {\n this.statements = statements;\n this.stylesVar = stylesVar;\n this.dependencies = dependencies;\n this.isShimmed = isShimmed;\n this.meta = meta;\n }\n return CompiledStylesheet;\n}());\nvar StyleCompiler = (function () {\n /**\n * @param {?} _urlResolver\n */\n function StyleCompiler(_urlResolver) {\n this._urlResolver = _urlResolver;\n this._shadowCss = new ShadowCss();\n }\n /**\n * @param {?} comp\n * @return {?}\n */\n StyleCompiler.prototype.compileComponent = function (comp) {\n var _this = this;\n var /** @type {?} */ externalStylesheets = [];\n var /** @type {?} */ componentStylesheet = this._compileStyles(comp, new CompileStylesheetMetadata({\n styles: comp.template.styles,\n styleUrls: comp.template.styleUrls,\n moduleUrl: identifierModuleUrl(comp.type)\n }), true);\n comp.template.externalStylesheets.forEach(function (stylesheetMeta) {\n var /** @type {?} */ compiledStylesheet = _this._compileStyles(comp, stylesheetMeta, false);\n externalStylesheets.push(compiledStylesheet);\n });\n return new StylesCompileResult(componentStylesheet, externalStylesheets);\n };\n /**\n * @param {?} comp\n * @param {?} stylesheet\n * @param {?} isComponentStylesheet\n * @return {?}\n */\n StyleCompiler.prototype._compileStyles = function (comp, stylesheet, isComponentStylesheet) {\n var _this = this;\n var /** @type {?} */ shim = comp.template.encapsulation === ViewEncapsulation.Emulated;\n var /** @type {?} */ styleExpressions = stylesheet.styles.map(function (plainStyle) { return literal(_this._shimIfNeeded(plainStyle, shim)); });\n var /** @type {?} */ dependencies = [];\n for (var /** @type {?} */ i = 0; i < stylesheet.styleUrls.length; i++) {\n var /** @type {?} */ identifier = { reference: null };\n dependencies.push(new StylesCompileDependency(getStylesVarName(null), stylesheet.styleUrls[i], shim, identifier));\n styleExpressions.push(new ExternalExpr(identifier));\n }\n // styles variable contains plain strings and arrays of other styles arrays (recursive),\n // so we set its type to dynamic.\n var /** @type {?} */ stylesVar = getStylesVarName(isComponentStylesheet ? comp : null);\n var /** @type {?} */ stmt = variable(stylesVar)\n .set(literalArr(styleExpressions, new ArrayType(DYNAMIC_TYPE, [TypeModifier.Const])))\n .toDeclStmt(null, [StmtModifier.Final]);\n return new CompiledStylesheet([stmt], stylesVar, dependencies, shim, stylesheet);\n };\n /**\n * @param {?} style\n * @param {?} shim\n * @return {?}\n */\n StyleCompiler.prototype._shimIfNeeded = function (style$$1, shim) {\n return shim ? this._shadowCss.shimCssText(style$$1, CONTENT_ATTR, HOST_ATTR) : style$$1;\n };\n return StyleCompiler;\n}());\nStyleCompiler.decorators = [\n { type: CompilerInjectable },\n];\n/**\n * @nocollapse\n */\nStyleCompiler.ctorParameters = function () { return [\n { type: UrlResolver, },\n]; };\n/**\n * @param {?} component\n * @return {?}\n */\nfunction getStylesVarName(component) {\n var /** @type {?} */ result = \"styles\";\n if (component) {\n result += \"_\" + identifierName(component.type);\n }\n return result;\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 */\nvar EventHandlerVars = (function () {\n function EventHandlerVars() {\n }\n return EventHandlerVars;\n}());\nEventHandlerVars.event = variable('$event');\nvar ConvertActionBindingResult = (function () {\n /**\n * @param {?} stmts\n * @param {?} allowDefault\n */\n function ConvertActionBindingResult(stmts, allowDefault) {\n this.stmts = stmts;\n this.allowDefault = allowDefault;\n }\n return ConvertActionBindingResult;\n}());\n/**\n * Converts the given expression AST into an executable output AST, assuming the expression is\n * used in an action binding (e.g. an event handler).\n * @param {?} localResolver\n * @param {?} implicitReceiver\n * @param {?} action\n * @param {?} bindingId\n * @return {?}\n */\nfunction convertActionBinding(localResolver, implicitReceiver, action, bindingId) {\n if (!localResolver) {\n localResolver = new DefaultLocalResolver();\n }\n var /** @type {?} */ actionWithoutBuiltins = convertPropertyBindingBuiltins({\n createLiteralArrayConverter: function (argCount) {\n // Note: no caching for literal arrays in actions.\n return function (args) { return literalArr(args); };\n },\n createLiteralMapConverter: function (keys) {\n // Note: no caching for literal maps in actions.\n return function (args) { return literalMap(/** @type {?} */ (keys.map(function (key, i) { return [key, args[i]]; }))); };\n },\n createPipeConverter: function (name) {\n throw new Error(\"Illegal State: Actions are not allowed to contain pipes. Pipe: \" + name);\n }\n }, action);\n var /** @type {?} */ visitor = new _AstToIrVisitor(localResolver, implicitReceiver, bindingId);\n var /** @type {?} */ actionStmts = [];\n flattenStatements(actionWithoutBuiltins.visit(visitor, _Mode.Statement), actionStmts);\n prependTemporaryDecls(visitor.temporaryCount, bindingId, actionStmts);\n var /** @type {?} */ lastIndex = actionStmts.length - 1;\n var /** @type {?} */ preventDefaultVar = null;\n if (lastIndex >= 0) {\n var /** @type {?} */ lastStatement = actionStmts[lastIndex];\n var /** @type {?} */ returnExpr = convertStmtIntoExpression(lastStatement);\n if (returnExpr) {\n // Note: We need to cast the result of the method call to dynamic,\n // as it might be a void method!\n preventDefaultVar = createPreventDefaultVar(bindingId);\n actionStmts[lastIndex] =\n preventDefaultVar.set(returnExpr.cast(DYNAMIC_TYPE).notIdentical(literal(false)))\n .toDeclStmt(null, [StmtModifier.Final]);\n }\n }\n return new ConvertActionBindingResult(actionStmts, preventDefaultVar);\n}\n/**\n * @param {?} converterFactory\n * @param {?} ast\n * @return {?}\n */\nfunction convertPropertyBindingBuiltins(converterFactory, ast) {\n return convertBuiltins(converterFactory, ast);\n}\nvar ConvertPropertyBindingResult = (function () {\n /**\n * @param {?} stmts\n * @param {?} currValExpr\n */\n function ConvertPropertyBindingResult(stmts, currValExpr) {\n this.stmts = stmts;\n this.currValExpr = currValExpr;\n }\n return ConvertPropertyBindingResult;\n}());\n/**\n * Converts the given expression AST into an executable output AST, assuming the expression\n * is used in property binding. The expression has to be preprocessed via\n * `convertPropertyBindingBuiltins`.\n * @param {?} localResolver\n * @param {?} implicitReceiver\n * @param {?} expressionWithoutBuiltins\n * @param {?} bindingId\n * @return {?}\n */\nfunction convertPropertyBinding(localResolver, implicitReceiver, expressionWithoutBuiltins, bindingId) {\n if (!localResolver) {\n localResolver = new DefaultLocalResolver();\n }\n var /** @type {?} */ currValExpr = createCurrValueExpr(bindingId);\n var /** @type {?} */ stmts = [];\n var /** @type {?} */ visitor = new _AstToIrVisitor(localResolver, implicitReceiver, bindingId);\n var /** @type {?} */ outputExpr = expressionWithoutBuiltins.visit(visitor, _Mode.Expression);\n if (visitor.temporaryCount) {\n for (var /** @type {?} */ i = 0; i < visitor.temporaryCount; i++) {\n stmts.push(temporaryDeclaration(bindingId, i));\n }\n }\n stmts.push(currValExpr.set(outputExpr).toDeclStmt(null, [StmtModifier.Final]));\n return new ConvertPropertyBindingResult(stmts, currValExpr);\n}\n/**\n * @param {?} converterFactory\n * @param {?} ast\n * @return {?}\n */\nfunction convertBuiltins(converterFactory, ast) {\n var /** @type {?} */ visitor = new _BuiltinAstConverter(converterFactory);\n return ast.visit(visitor);\n}\n/**\n * @param {?} bindingId\n * @param {?} temporaryNumber\n * @return {?}\n */\nfunction temporaryName(bindingId, temporaryNumber) {\n return \"tmp_\" + bindingId + \"_\" + temporaryNumber;\n}\n/**\n * @param {?} bindingId\n * @param {?} temporaryNumber\n * @return {?}\n */\nfunction temporaryDeclaration(bindingId, temporaryNumber) {\n return new DeclareVarStmt(temporaryName(bindingId, temporaryNumber), NULL_EXPR);\n}\n/**\n * @param {?} temporaryCount\n * @param {?} bindingId\n * @param {?} statements\n * @return {?}\n */\nfunction prependTemporaryDecls(temporaryCount, bindingId, statements) {\n for (var /** @type {?} */ i = temporaryCount - 1; i >= 0; i--) {\n statements.unshift(temporaryDeclaration(bindingId, i));\n }\n}\nvar _Mode = {};\n_Mode.Statement = 0;\n_Mode.Expression = 1;\n_Mode[_Mode.Statement] = \"Statement\";\n_Mode[_Mode.Expression] = \"Expression\";\n/**\n * @param {?} mode\n * @param {?} ast\n * @return {?}\n */\nfunction ensureStatementMode(mode, ast) {\n if (mode !== _Mode.Statement) {\n throw new Error(\"Expected a statement, but saw \" + ast);\n }\n}\n/**\n * @param {?} mode\n * @param {?} ast\n * @return {?}\n */\nfunction ensureExpressionMode(mode, ast) {\n if (mode !== _Mode.Expression) {\n throw new Error(\"Expected an expression, but saw \" + ast);\n }\n}\n/**\n * @param {?} mode\n * @param {?} expr\n * @return {?}\n */\nfunction convertToStatementIfNeeded(mode, expr) {\n if (mode === _Mode.Statement) {\n return expr.toStmt();\n }\n else {\n return expr;\n }\n}\nvar _BuiltinAstConverter = (function (_super) {\n __extends(_BuiltinAstConverter, _super);\n /**\n * @param {?} _converterFactory\n */\n function _BuiltinAstConverter(_converterFactory) {\n var _this = _super.call(this) || this;\n _this._converterFactory = _converterFactory;\n return _this;\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n _BuiltinAstConverter.prototype.visitPipe = function (ast, context) {\n var _this = this;\n var /** @type {?} */ args = [ast.exp].concat(ast.args).map(function (ast) { return ast.visit(_this, context); });\n return new BuiltinFunctionCall(ast.span, args, this._converterFactory.createPipeConverter(ast.name, args.length));\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n _BuiltinAstConverter.prototype.visitLiteralArray = function (ast, context) {\n var _this = this;\n var /** @type {?} */ args = ast.expressions.map(function (ast) { return ast.visit(_this, context); });\n return new BuiltinFunctionCall(ast.span, args, this._converterFactory.createLiteralArrayConverter(ast.expressions.length));\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n _BuiltinAstConverter.prototype.visitLiteralMap = function (ast, context) {\n var _this = this;\n var /** @type {?} */ args = ast.values.map(function (ast) { return ast.visit(_this, context); });\n return new BuiltinFunctionCall(ast.span, args, this._converterFactory.createLiteralMapConverter(ast.keys));\n };\n return _BuiltinAstConverter;\n}(AstTransformer));\nvar _AstToIrVisitor = (function () {\n /**\n * @param {?} _localResolver\n * @param {?} _implicitReceiver\n * @param {?} bindingId\n */\n function _AstToIrVisitor(_localResolver, _implicitReceiver, bindingId) {\n this._localResolver = _localResolver;\n this._implicitReceiver = _implicitReceiver;\n this.bindingId = bindingId;\n this._nodeMap = new Map();\n this._resultMap = new Map();\n this._currentTemporary = 0;\n this.temporaryCount = 0;\n }\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n _AstToIrVisitor.prototype.visitBinary = function (ast, mode) {\n var /** @type {?} */ op;\n switch (ast.operation) {\n case '+':\n op = BinaryOperator.Plus;\n break;\n case '-':\n op = BinaryOperator.Minus;\n break;\n case '*':\n op = BinaryOperator.Multiply;\n break;\n case '/':\n op = BinaryOperator.Divide;\n break;\n case '%':\n op = BinaryOperator.Modulo;\n break;\n case '&&':\n op = BinaryOperator.And;\n break;\n case '||':\n op = BinaryOperator.Or;\n break;\n case '==':\n op = BinaryOperator.Equals;\n break;\n case '!=':\n op = BinaryOperator.NotEquals;\n break;\n case '===':\n op = BinaryOperator.Identical;\n break;\n case '!==':\n op = BinaryOperator.NotIdentical;\n break;\n case '<':\n op = BinaryOperator.Lower;\n break;\n case '>':\n op = BinaryOperator.Bigger;\n break;\n case '<=':\n op = BinaryOperator.LowerEquals;\n break;\n case '>=':\n op = BinaryOperator.BiggerEquals;\n break;\n default:\n throw new Error(\"Unsupported operation \" + ast.operation);\n }\n return convertToStatementIfNeeded(mode, new BinaryOperatorExpr(op, this.visit(ast.left, _Mode.Expression), this.visit(ast.right, _Mode.Expression)));\n };\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n _AstToIrVisitor.prototype.visitChain = function (ast, mode) {\n ensureStatementMode(mode, ast);\n return this.visitAll(ast.expressions, mode);\n };\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n _AstToIrVisitor.prototype.visitConditional = function (ast, mode) {\n var /** @type {?} */ value = this.visit(ast.condition, _Mode.Expression);\n return convertToStatementIfNeeded(mode, value.conditional(this.visit(ast.trueExp, _Mode.Expression), this.visit(ast.falseExp, _Mode.Expression)));\n };\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n _AstToIrVisitor.prototype.visitPipe = function (ast, mode) {\n throw new Error(\"Illegal state: Pipes should have been converted into functions. Pipe: \" + ast.name);\n };\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n _AstToIrVisitor.prototype.visitFunctionCall = function (ast, mode) {\n var /** @type {?} */ convertedArgs = this.visitAll(ast.args, _Mode.Expression);\n var /** @type {?} */ fnResult;\n if (ast instanceof BuiltinFunctionCall) {\n fnResult = ast.converter(convertedArgs);\n }\n else {\n fnResult = this.visit(ast.target, _Mode.Expression).callFn(convertedArgs);\n }\n return convertToStatementIfNeeded(mode, fnResult);\n };\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n _AstToIrVisitor.prototype.visitImplicitReceiver = function (ast, mode) {\n ensureExpressionMode(mode, ast);\n return this._implicitReceiver;\n };\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n _AstToIrVisitor.prototype.visitInterpolation = function (ast, mode) {\n ensureExpressionMode(mode, ast);\n var /** @type {?} */ args = [literal(ast.expressions.length)];\n for (var /** @type {?} */ i = 0; i < ast.strings.length - 1; i++) {\n args.push(literal(ast.strings[i]));\n args.push(this.visit(ast.expressions[i], _Mode.Expression));\n }\n args.push(literal(ast.strings[ast.strings.length - 1]));\n return ast.expressions.length <= 9 ?\n importExpr(createIdentifier(Identifiers.inlineInterpolate)).callFn(args) :\n importExpr(createIdentifier(Identifiers.interpolate)).callFn([\n args[0], literalArr(args.slice(1))\n ]);\n };\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n _AstToIrVisitor.prototype.visitKeyedRead = function (ast, mode) {\n var /** @type {?} */ leftMostSafe = this.leftMostSafeNode(ast);\n if (leftMostSafe) {\n return this.convertSafeAccess(ast, leftMostSafe, mode);\n }\n else {\n return convertToStatementIfNeeded(mode, this.visit(ast.obj, _Mode.Expression).key(this.visit(ast.key, _Mode.Expression)));\n }\n };\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n _AstToIrVisitor.prototype.visitKeyedWrite = function (ast, mode) {\n var /** @type {?} */ obj = this.visit(ast.obj, _Mode.Expression);\n var /** @type {?} */ key = this.visit(ast.key, _Mode.Expression);\n var /** @type {?} */ value = this.visit(ast.value, _Mode.Expression);\n return convertToStatementIfNeeded(mode, obj.key(key).set(value));\n };\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n _AstToIrVisitor.prototype.visitLiteralArray = function (ast, mode) {\n throw new Error(\"Illegal State: literal arrays should have been converted into functions\");\n };\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n _AstToIrVisitor.prototype.visitLiteralMap = function (ast, mode) {\n throw new Error(\"Illegal State: literal maps should have been converted into functions\");\n };\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n _AstToIrVisitor.prototype.visitLiteralPrimitive = function (ast, mode) {\n return convertToStatementIfNeeded(mode, literal(ast.value));\n };\n /**\n * @param {?} name\n * @return {?}\n */\n _AstToIrVisitor.prototype._getLocal = function (name) { return this._localResolver.getLocal(name); };\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n _AstToIrVisitor.prototype.visitMethodCall = function (ast, mode) {\n var /** @type {?} */ leftMostSafe = this.leftMostSafeNode(ast);\n if (leftMostSafe) {\n return this.convertSafeAccess(ast, leftMostSafe, mode);\n }\n else {\n var /** @type {?} */ args = this.visitAll(ast.args, _Mode.Expression);\n var /** @type {?} */ result = null;\n var /** @type {?} */ receiver = this.visit(ast.receiver, _Mode.Expression);\n if (receiver === this._implicitReceiver) {\n var /** @type {?} */ varExpr = this._getLocal(ast.name);\n if (varExpr) {\n result = varExpr.callFn(args);\n }\n }\n if (result == null) {\n result = receiver.callMethod(ast.name, args);\n }\n return convertToStatementIfNeeded(mode, result);\n }\n };\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n _AstToIrVisitor.prototype.visitPrefixNot = function (ast, mode) {\n return convertToStatementIfNeeded(mode, not(this.visit(ast.expression, _Mode.Expression)));\n };\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n _AstToIrVisitor.prototype.visitPropertyRead = function (ast, mode) {\n var /** @type {?} */ leftMostSafe = this.leftMostSafeNode(ast);\n if (leftMostSafe) {\n return this.convertSafeAccess(ast, leftMostSafe, mode);\n }\n else {\n var /** @type {?} */ result = null;\n var /** @type {?} */ receiver = this.visit(ast.receiver, _Mode.Expression);\n if (receiver === this._implicitReceiver) {\n result = this._getLocal(ast.name);\n }\n if (result == null) {\n result = receiver.prop(ast.name);\n }\n return convertToStatementIfNeeded(mode, result);\n }\n };\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n _AstToIrVisitor.prototype.visitPropertyWrite = function (ast, mode) {\n var /** @type {?} */ receiver = this.visit(ast.receiver, _Mode.Expression);\n if (receiver === this._implicitReceiver) {\n var /** @type {?} */ varExpr = this._getLocal(ast.name);\n if (varExpr) {\n throw new Error('Cannot assign to a reference or variable!');\n }\n }\n return convertToStatementIfNeeded(mode, receiver.prop(ast.name).set(this.visit(ast.value, _Mode.Expression)));\n };\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n _AstToIrVisitor.prototype.visitSafePropertyRead = function (ast, mode) {\n return this.convertSafeAccess(ast, this.leftMostSafeNode(ast), mode);\n };\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n _AstToIrVisitor.prototype.visitSafeMethodCall = function (ast, mode) {\n return this.convertSafeAccess(ast, this.leftMostSafeNode(ast), mode);\n };\n /**\n * @param {?} asts\n * @param {?} mode\n * @return {?}\n */\n _AstToIrVisitor.prototype.visitAll = function (asts, mode) {\n var _this = this;\n return asts.map(function (ast) { return _this.visit(ast, mode); });\n };\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n _AstToIrVisitor.prototype.visitQuote = function (ast, mode) {\n throw new Error(\"Quotes are not supported for evaluation!\\n Statement: \" + ast.uninterpretedExpression + \" located at \" + ast.location);\n };\n /**\n * @param {?} ast\n * @param {?} mode\n * @return {?}\n */\n _AstToIrVisitor.prototype.visit = function (ast, mode) {\n var /** @type {?} */ result = this._resultMap.get(ast);\n if (result)\n return result;\n return (this._nodeMap.get(ast) || ast).visit(this, mode);\n };\n /**\n * @param {?} ast\n * @param {?} leftMostSafe\n * @param {?} mode\n * @return {?}\n */\n _AstToIrVisitor.prototype.convertSafeAccess = function (ast, leftMostSafe, mode) {\n // If the expression contains a safe access node on the left it needs to be converted to\n // an expression that guards the access to the member by checking the receiver for blank. As\n // execution proceeds from left to right, the left most part of the expression must be guarded\n // first but, because member access is left associative, the right side of the expression is at\n // the top of the AST. The desired result requires lifting a copy of the the left part of the\n // expression up to test it for blank before generating the unguarded version.\n // Consider, for example the following expression: a?.b.c?.d.e\n // This results in the ast:\n // .\n // / \\\n // ?. e\n // / \\\n // . d\n // / \\\n // ?. c\n // / \\\n // a b\n // The following tree should be generated:\n //\n // /---- ? ----\\\n // / | \\\n // a /--- ? ---\\ null\n // / | \\\n // . . null\n // / \\ / \\\n // . c . e\n // / \\ / \\\n // a b , d\n // / \\\n // . c\n // / \\\n // a b\n //\n // Notice that the first guard condition is the left hand of the left most safe access node\n // which comes in as leftMostSafe to this routine.\n var /** @type {?} */ guardedExpression = this.visit(leftMostSafe.receiver, _Mode.Expression);\n var /** @type {?} */ temporary;\n if (this.needsTemporary(leftMostSafe.receiver)) {\n // If the expression has method calls or pipes then we need to save the result into a\n // temporary variable to avoid calling stateful or impure code more than once.\n temporary = this.allocateTemporary();\n // Preserve the result in the temporary variable\n guardedExpression = temporary.set(guardedExpression);\n // Ensure all further references to the guarded expression refer to the temporary instead.\n this._resultMap.set(leftMostSafe.receiver, temporary);\n }\n var /** @type {?} */ condition = guardedExpression.isBlank();\n // Convert the ast to an unguarded access to the receiver's member. The map will substitute\n // leftMostNode with its unguarded version in the call to `this.visit()`.\n if (leftMostSafe instanceof SafeMethodCall) {\n this._nodeMap.set(leftMostSafe, new MethodCall(leftMostSafe.span, leftMostSafe.receiver, leftMostSafe.name, leftMostSafe.args));\n }\n else {\n this._nodeMap.set(leftMostSafe, new PropertyRead(leftMostSafe.span, leftMostSafe.receiver, leftMostSafe.name));\n }\n // Recursively convert the node now without the guarded member access.\n var /** @type {?} */ access = this.visit(ast, _Mode.Expression);\n // Remove the mapping. This is not strictly required as the converter only traverses each node\n // once but is safer if the conversion is changed to traverse the nodes more than once.\n this._nodeMap.delete(leftMostSafe);\n // If we allocated a temporary, release it.\n if (temporary) {\n this.releaseTemporary(temporary);\n }\n // Produce the conditional\n return convertToStatementIfNeeded(mode, condition.conditional(literal(null), access));\n };\n /**\n * @param {?} ast\n * @return {?}\n */\n _AstToIrVisitor.prototype.leftMostSafeNode = function (ast) {\n var _this = this;\n var /** @type {?} */ visit = function (visitor, ast) {\n return (_this._nodeMap.get(ast) || ast).visit(visitor);\n };\n return ast.visit({\n /**\n * @param {?} ast\n * @return {?}\n */\n visitBinary: function (ast) { return null; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitChain: function (ast) { return null; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitConditional: function (ast) { return null; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitFunctionCall: function (ast) { return null; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitImplicitReceiver: function (ast) { return null; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitInterpolation: function (ast) { return null; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitKeyedRead: function (ast) { return visit(this, ast.obj); },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitKeyedWrite: function (ast) { return null; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitLiteralArray: function (ast) { return null; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitLiteralMap: function (ast) { return null; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitLiteralPrimitive: function (ast) { return null; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitMethodCall: function (ast) { return visit(this, ast.receiver); },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitPipe: function (ast) { return null; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitPrefixNot: function (ast) { return null; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitPropertyRead: function (ast) { return visit(this, ast.receiver); },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitPropertyWrite: function (ast) { return null; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitQuote: function (ast) { return null; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitSafeMethodCall: function (ast) { return visit(this, ast.receiver) || ast; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitSafePropertyRead: function (ast) {\n return visit(this, ast.receiver) || ast;\n }\n });\n };\n /**\n * @param {?} ast\n * @return {?}\n */\n _AstToIrVisitor.prototype.needsTemporary = function (ast) {\n var _this = this;\n var /** @type {?} */ visit = function (visitor, ast) {\n return ast && (_this._nodeMap.get(ast) || ast).visit(visitor);\n };\n var /** @type {?} */ visitSome = function (visitor, ast) {\n return ast.some(function (ast) { return visit(visitor, ast); });\n };\n return ast.visit({\n /**\n * @param {?} ast\n * @return {?}\n */\n visitBinary: function (ast) { return visit(this, ast.left) || visit(this, ast.right); },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitChain: function (ast) { return false; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitConditional: function (ast) {\n return visit(this, ast.condition) || visit(this, ast.trueExp) ||\n visit(this, ast.falseExp);\n },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitFunctionCall: function (ast) { return true; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitImplicitReceiver: function (ast) { return false; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitInterpolation: function (ast) { return visitSome(this, ast.expressions); },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitKeyedRead: function (ast) { return false; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitKeyedWrite: function (ast) { return false; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitLiteralArray: function (ast) { return true; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitLiteralMap: function (ast) { return true; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitLiteralPrimitive: function (ast) { return false; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitMethodCall: function (ast) { return true; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitPipe: function (ast) { return true; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitPrefixNot: function (ast) { return visit(this, ast.expression); },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitPropertyRead: function (ast) { return false; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitPropertyWrite: function (ast) { return false; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitQuote: function (ast) { return false; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitSafeMethodCall: function (ast) { return true; },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitSafePropertyRead: function (ast) { return false; }\n });\n };\n /**\n * @return {?}\n */\n _AstToIrVisitor.prototype.allocateTemporary = function () {\n var /** @type {?} */ tempNumber = this._currentTemporary++;\n this.temporaryCount = Math.max(this._currentTemporary, this.temporaryCount);\n return new ReadVarExpr(temporaryName(this.bindingId, tempNumber));\n };\n /**\n * @param {?} temporary\n * @return {?}\n */\n _AstToIrVisitor.prototype.releaseTemporary = function (temporary) {\n this._currentTemporary--;\n if (temporary.name != temporaryName(this.bindingId, this._currentTemporary)) {\n throw new Error(\"Temporary \" + temporary.name + \" released out of order\");\n }\n };\n return _AstToIrVisitor;\n}());\n/**\n * @param {?} arg\n * @param {?} output\n * @return {?}\n */\nfunction flattenStatements(arg, output) {\n if (Array.isArray(arg)) {\n ((arg)).forEach(function (entry) { return flattenStatements(entry, output); });\n }\n else {\n output.push(arg);\n }\n}\nvar DefaultLocalResolver = (function () {\n function DefaultLocalResolver() {\n }\n /**\n * @param {?} name\n * @return {?}\n */\n DefaultLocalResolver.prototype.getLocal = function (name) {\n if (name === EventHandlerVars.event.name) {\n return EventHandlerVars.event;\n }\n return null;\n };\n return DefaultLocalResolver;\n}());\n/**\n * @param {?} bindingId\n * @return {?}\n */\nfunction createCurrValueExpr(bindingId) {\n return variable(\"currVal_\" + bindingId); // fix syntax highlighting: `\n}\n/**\n * @param {?} bindingId\n * @return {?}\n */\nfunction createPreventDefaultVar(bindingId) {\n return variable(\"pd_\" + bindingId);\n}\n/**\n * @param {?} stmt\n * @return {?}\n */\nfunction convertStmtIntoExpression(stmt) {\n if (stmt instanceof ExpressionStatement) {\n return stmt.expr;\n }\n else if (stmt instanceof ReturnStatement) {\n return stmt.value;\n }\n return null;\n}\nvar BuiltinFunctionCall = (function (_super) {\n __extends(BuiltinFunctionCall, _super);\n /**\n * @param {?} span\n * @param {?} args\n * @param {?} converter\n */\n function BuiltinFunctionCall(span, args, converter) {\n var _this = _super.call(this, span, null, args) || this;\n _this.args = args;\n _this.converter = converter;\n return _this;\n }\n return BuiltinFunctionCall;\n}(FunctionCall));\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 */\nvar CLASS_ATTR$1 = 'class';\nvar STYLE_ATTR = 'style';\nvar IMPLICIT_TEMPLATE_VAR = '\\$implicit';\nvar NG_CONTAINER_TAG = 'ng-container';\nvar ViewCompileResult = (function () {\n /**\n * @param {?} statements\n * @param {?} viewClassVar\n * @param {?} rendererTypeVar\n */\n function ViewCompileResult(statements, viewClassVar, rendererTypeVar) {\n this.statements = statements;\n this.viewClassVar = viewClassVar;\n this.rendererTypeVar = rendererTypeVar;\n }\n return ViewCompileResult;\n}());\nvar ViewCompiler = (function () {\n /**\n * @param {?} _genConfigNext\n * @param {?} _schemaRegistry\n */\n function ViewCompiler(_genConfigNext, _schemaRegistry) {\n this._genConfigNext = _genConfigNext;\n this._schemaRegistry = _schemaRegistry;\n }\n /**\n * @param {?} component\n * @param {?} template\n * @param {?} styles\n * @param {?} usedPipes\n * @return {?}\n */\n ViewCompiler.prototype.compileComponent = function (component, template, styles, usedPipes) {\n var /** @type {?} */ embeddedViewCount = 0;\n var /** @type {?} */ staticQueryIds = findStaticQueryIds(template);\n var /** @type {?} */ statements = [];\n var /** @type {?} */ renderComponentVarName;\n if (!component.isHost) {\n var /** @type {?} */ customRenderData = [];\n if (component.template.animations && component.template.animations.length) {\n customRenderData.push(new LiteralMapEntry('animation', convertValueToOutputAst(component.template.animations), true));\n }\n var /** @type {?} */ renderComponentVar = variable(rendererTypeName(component.type.reference));\n renderComponentVarName = renderComponentVar.name;\n statements.push(renderComponentVar\n .set(importExpr(createIdentifier(Identifiers.createRendererType2))\n .callFn([new LiteralMapExpr([\n new LiteralMapEntry('encapsulation', literal(component.template.encapsulation)),\n new LiteralMapEntry('styles', styles),\n new LiteralMapEntry('data', new LiteralMapExpr(customRenderData))\n ])]))\n .toDeclStmt(importType(createIdentifier(Identifiers.RendererType2)), [StmtModifier.Final]));\n }\n var /** @type {?} */ viewBuilderFactory = function (parent) {\n var /** @type {?} */ embeddedViewIndex = embeddedViewCount++;\n return new ViewBuilder(parent, component, embeddedViewIndex, usedPipes, staticQueryIds, viewBuilderFactory);\n };\n var /** @type {?} */ visitor = viewBuilderFactory(null);\n visitor.visitAll([], template);\n statements.push.apply(statements, visitor.build());\n return new ViewCompileResult(statements, visitor.viewName, renderComponentVarName);\n };\n return ViewCompiler;\n}());\nViewCompiler.decorators = [\n { type: CompilerInjectable },\n];\n/**\n * @nocollapse\n */\nViewCompiler.ctorParameters = function () { return [\n { type: CompilerConfig, },\n { type: ElementSchemaRegistry, },\n]; };\nvar LOG_VAR = variable('l');\nvar VIEW_VAR = variable('v');\nvar CHECK_VAR = variable('ck');\nvar COMP_VAR = variable('co');\nvar EVENT_NAME_VAR = variable('en');\nvar ALLOW_DEFAULT_VAR = variable(\"ad\");\nvar ViewBuilder = (function () {\n /**\n * @param {?} parent\n * @param {?} component\n * @param {?} embeddedViewIndex\n * @param {?} usedPipes\n * @param {?} staticQueryIds\n * @param {?} viewBuilderFactory\n */\n function ViewBuilder(parent, component, embeddedViewIndex, usedPipes, staticQueryIds, viewBuilderFactory) {\n this.parent = parent;\n this.component = component;\n this.embeddedViewIndex = embeddedViewIndex;\n this.usedPipes = usedPipes;\n this.staticQueryIds = staticQueryIds;\n this.viewBuilderFactory = viewBuilderFactory;\n this.nodes = [];\n this.purePipeNodeIndices = Object.create(null);\n this.refNodeIndices = Object.create(null);\n this.variables = [];\n this.children = [];\n // TODO(tbosch): The old view compiler used to use an `any` type\n // for the context in any embedded view. We keep this behaivor for now\n // to be able to introduce the new view compiler without too many errors.\n this.compType = this.embeddedViewIndex > 0 ? DYNAMIC_TYPE : importType(this.component.type);\n }\n Object.defineProperty(ViewBuilder.prototype, \"viewName\", {\n /**\n * @return {?}\n */\n get: function () {\n return viewClassName(this.component.type.reference, this.embeddedViewIndex);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} variables\n * @param {?} astNodes\n * @return {?}\n */\n ViewBuilder.prototype.visitAll = function (variables, astNodes) {\n var _this = this;\n this.variables = variables;\n // create the pipes for the pure pipes immediately, so that we know their indices.\n if (!this.parent) {\n this.usedPipes.forEach(function (pipe) {\n if (pipe.pure) {\n _this.purePipeNodeIndices[pipe.name] = _this._createPipe(null, pipe);\n }\n });\n }\n if (!this.parent) {\n var /** @type {?} */ queryIds_1 = staticViewQueryIds(this.staticQueryIds);\n this.component.viewQueries.forEach(function (query, queryIndex) {\n // Note: queries start with id 1 so we can use the number in a Bloom filter!\n var /** @type {?} */ queryId = queryIndex + 1;\n var /** @type {?} */ bindingType = query.first ? 0 /* First */ : 1;\n var /** @type {?} */ flags = 67108864 /* TypeViewQuery */ | calcStaticDynamicQueryFlags(queryIds_1, queryId, query.first);\n _this.nodes.push(function () { return ({\n sourceSpan: null,\n nodeFlags: flags,\n nodeDef: importExpr(createIdentifier(Identifiers.queryDef)).callFn([\n literal(flags), literal(queryId),\n new LiteralMapExpr([new LiteralMapEntry(query.propertyName, literal(bindingType))])\n ])\n }); });\n });\n }\n templateVisitAll(this, astNodes);\n if (this.parent && (astNodes.length === 0 || needsAdditionalRootNode(astNodes))) {\n // if the view is an embedded view, then we need to add an additional root node in some cases\n this.nodes.push(function () { return ({\n sourceSpan: null,\n nodeFlags: 1 /* TypeElement */,\n nodeDef: importExpr(createIdentifier(Identifiers.anchorDef)).callFn([\n literal(0 /* None */), NULL_EXPR, NULL_EXPR, literal(0)\n ])\n }); });\n }\n };\n /**\n * @param {?=} targetStatements\n * @return {?}\n */\n ViewBuilder.prototype.build = function (targetStatements) {\n if (targetStatements === void 0) { targetStatements = []; }\n this.children.forEach(function (child) { return child.build(targetStatements); });\n var _a = this._createNodeExpressions(), updateRendererStmts = _a.updateRendererStmts, updateDirectivesStmts = _a.updateDirectivesStmts, nodeDefExprs = _a.nodeDefExprs;\n var /** @type {?} */ updateRendererFn = this._createUpdateFn(updateRendererStmts);\n var /** @type {?} */ updateDirectivesFn = this._createUpdateFn(updateDirectivesStmts);\n var /** @type {?} */ viewFlags = 0;\n if (!this.parent && this.component.changeDetection === ChangeDetectionStrategy.OnPush) {\n viewFlags |= 2 /* OnPush */;\n }\n var /** @type {?} */ viewFactory = new DeclareFunctionStmt(this.viewName, [new FnParam(LOG_VAR.name)], [new ReturnStatement(importExpr(createIdentifier(Identifiers.viewDef)).callFn([\n literal(viewFlags),\n literalArr(nodeDefExprs),\n updateDirectivesFn,\n updateRendererFn,\n ]))], importType(createIdentifier(Identifiers.ViewDefinition)));\n targetStatements.push(viewFactory);\n return targetStatements;\n };\n /**\n * @param {?} updateStmts\n * @return {?}\n */\n ViewBuilder.prototype._createUpdateFn = function (updateStmts) {\n var /** @type {?} */ updateFn;\n if (updateStmts.length > 0) {\n var /** @type {?} */ preStmts = [];\n if (!this.component.isHost && findReadVarNames(updateStmts).has(COMP_VAR.name)) {\n preStmts.push(COMP_VAR.set(VIEW_VAR.prop('component')).toDeclStmt(this.compType));\n }\n updateFn = fn([\n new FnParam(CHECK_VAR.name, INFERRED_TYPE),\n new FnParam(VIEW_VAR.name, INFERRED_TYPE)\n ], preStmts.concat(updateStmts), INFERRED_TYPE);\n }\n else {\n updateFn = NULL_EXPR;\n }\n return updateFn;\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n ViewBuilder.prototype.visitNgContent = function (ast, context) {\n // ngContentDef(ngContentIndex: number, index: number): NodeDef;\n this.nodes.push(function () { return ({\n sourceSpan: ast.sourceSpan,\n nodeFlags: 4 /* TypeNgContent */,\n nodeDef: importExpr(createIdentifier(Identifiers.ngContentDef)).callFn([\n literal(ast.ngContentIndex), literal(ast.index)\n ])\n }); });\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n ViewBuilder.prototype.visitText = function (ast, context) {\n // textDef(ngContentIndex: number, constants: string[]): NodeDef;\n this.nodes.push(function () { return ({\n sourceSpan: ast.sourceSpan,\n nodeFlags: 2 /* TypeText */,\n nodeDef: importExpr(createIdentifier(Identifiers.textDef)).callFn([\n literal(ast.ngContentIndex), literalArr([literal(ast.value)])\n ])\n }); });\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n ViewBuilder.prototype.visitBoundText = function (ast, context) {\n var _this = this;\n var /** @type {?} */ nodeIndex = this.nodes.length;\n // reserve the space in the nodeDefs array\n this.nodes.push(null);\n var /** @type {?} */ astWithSource = (ast.value);\n var /** @type {?} */ inter = (astWithSource.ast);\n var /** @type {?} */ updateRendererExpressions = inter.expressions.map(function (expr, bindingIndex) { return _this._preprocessUpdateExpression({ nodeIndex: nodeIndex, bindingIndex: bindingIndex, sourceSpan: ast.sourceSpan, context: COMP_VAR, value: expr }); });\n // textDef(ngContentIndex: number, constants: string[]): NodeDef;\n this.nodes[nodeIndex] = function () { return ({\n sourceSpan: ast.sourceSpan,\n nodeFlags: 2 /* TypeText */,\n nodeDef: importExpr(createIdentifier(Identifiers.textDef)).callFn([\n literal(ast.ngContentIndex), literalArr(inter.strings.map(function (s) { return literal(s); }))\n ]),\n updateRenderer: updateRendererExpressions\n }); };\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n ViewBuilder.prototype.visitEmbeddedTemplate = function (ast, context) {\n var _this = this;\n var /** @type {?} */ nodeIndex = this.nodes.length;\n // reserve the space in the nodeDefs array\n this.nodes.push(null);\n var _a = this._visitElementOrTemplate(nodeIndex, ast), flags = _a.flags, queryMatchesExpr = _a.queryMatchesExpr, hostEvents = _a.hostEvents;\n var /** @type {?} */ childVisitor = this.viewBuilderFactory(this);\n this.children.push(childVisitor);\n childVisitor.visitAll(ast.variables, ast.children);\n var /** @type {?} */ childCount = this.nodes.length - nodeIndex - 1;\n // anchorDef(\n // flags: NodeFlags, matchedQueries: [string, QueryValueType][], ngContentIndex: number,\n // childCount: number, handleEventFn?: ElementHandleEventFn, templateFactory?:\n // ViewDefinitionFactory): NodeDef;\n this.nodes[nodeIndex] = function () { return ({\n sourceSpan: ast.sourceSpan,\n nodeFlags: 1 /* TypeElement */ | flags,\n nodeDef: importExpr(createIdentifier(Identifiers.anchorDef)).callFn([\n literal(flags),\n queryMatchesExpr,\n literal(ast.ngContentIndex),\n literal(childCount),\n _this._createElementHandleEventFn(nodeIndex, hostEvents),\n variable(childVisitor.viewName),\n ])\n }); };\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n ViewBuilder.prototype.visitElement = function (ast, context) {\n var _this = this;\n var /** @type {?} */ nodeIndex = this.nodes.length;\n // reserve the space in the nodeDefs array so we can add children\n this.nodes.push(null);\n var /** @type {?} */ elName = ast.name;\n if (ast.name === NG_CONTAINER_TAG) {\n // Using a null element name creates an anchor.\n elName = null;\n }\n var _a = this._visitElementOrTemplate(nodeIndex, ast), flags = _a.flags, usedEvents = _a.usedEvents, queryMatchesExpr = _a.queryMatchesExpr, dirHostBindings = _a.hostBindings, hostEvents = _a.hostEvents;\n var /** @type {?} */ inputDefs = [];\n var /** @type {?} */ updateRendererExpressions = [];\n var /** @type {?} */ outputDefs = [];\n if (elName) {\n var /** @type {?} */ hostBindings = ast.inputs\n .map(function (inputAst) { return ({\n context: /** @type {?} */ (COMP_VAR),\n inputAst: inputAst,\n dirAst: null,\n }); })\n .concat(dirHostBindings);\n if (hostBindings.length) {\n updateRendererExpressions =\n hostBindings.map(function (hostBinding, bindingIndex) { return _this._preprocessUpdateExpression({\n context: hostBinding.context,\n nodeIndex: nodeIndex,\n bindingIndex: bindingIndex,\n sourceSpan: hostBinding.inputAst.sourceSpan,\n value: hostBinding.inputAst.value\n }); });\n inputDefs = hostBindings.map(function (hostBinding) { return elementBindingDef(hostBinding.inputAst, hostBinding.dirAst); });\n }\n outputDefs = usedEvents.map(function (_a) {\n var target = _a[0], eventName = _a[1];\n return literalArr([literal(target), literal(eventName)]);\n });\n }\n templateVisitAll(this, ast.children);\n var /** @type {?} */ childCount = this.nodes.length - nodeIndex - 1;\n var /** @type {?} */ compAst = ast.directives.find(function (dirAst) { return dirAst.directive.isComponent; });\n var /** @type {?} */ compRendererType = NULL_EXPR;\n var /** @type {?} */ compView = NULL_EXPR;\n if (compAst) {\n compView = importExpr({ reference: compAst.directive.componentViewType });\n compRendererType = importExpr({ reference: compAst.directive.rendererType });\n }\n // elementDef(\n // flags: NodeFlags, matchedQueriesDsl: [string | number, QueryValueType][],\n // ngContentIndex: number, childCount: number, namespaceAndName: string,\n // fixedAttrs: [string, string][] = [],\n // bindings?: [BindingFlags, string, string | SecurityContext][],\n // outputs?: ([OutputType.ElementOutput | OutputType.DirectiveHostOutput, string, string])[],\n // handleEvent?: ElementHandleEventFn,\n // componentView?: () => ViewDefinition, componentRendererType?: RendererType2): NodeDef;\n this.nodes[nodeIndex] = function () { return ({\n sourceSpan: ast.sourceSpan,\n nodeFlags: 1 /* TypeElement */ | flags,\n nodeDef: importExpr(createIdentifier(Identifiers.elementDef)).callFn([\n literal(flags),\n queryMatchesExpr,\n literal(ast.ngContentIndex),\n literal(childCount),\n literal(elName),\n elName ? fixedAttrsDef(ast) : NULL_EXPR,\n inputDefs.length ? literalArr(inputDefs) : NULL_EXPR,\n outputDefs.length ? literalArr(outputDefs) : NULL_EXPR,\n _this._createElementHandleEventFn(nodeIndex, hostEvents),\n compView,\n compRendererType,\n ]),\n updateRenderer: updateRendererExpressions\n }); };\n };\n /**\n * @param {?} nodeIndex\n * @param {?} ast\n * @return {?}\n */\n ViewBuilder.prototype._visitElementOrTemplate = function (nodeIndex, ast) {\n var _this = this;\n var /** @type {?} */ flags = 0;\n if (ast.hasViewContainer) {\n flags |= 8388608 /* EmbeddedViews */;\n }\n var /** @type {?} */ usedEvents = new Map();\n ast.outputs.forEach(function (event) {\n var _a = elementEventNameAndTarget(event, null), name = _a.name, target = _a.target;\n usedEvents.set(ɵelementEventFullName(target, name), [target, name]);\n });\n ast.directives.forEach(function (dirAst) {\n dirAst.hostEvents.forEach(function (event) {\n var _a = elementEventNameAndTarget(event, dirAst), name = _a.name, target = _a.target;\n usedEvents.set(ɵelementEventFullName(target, name), [target, name]);\n });\n });\n var /** @type {?} */ hostBindings = [];\n var /** @type {?} */ hostEvents = [];\n var /** @type {?} */ componentFactoryResolverProvider = createComponentFactoryResolver(ast.directives);\n if (componentFactoryResolverProvider) {\n this._visitProvider(componentFactoryResolverProvider, ast.queryMatches);\n }\n ast.providers.forEach(function (providerAst, providerIndex) {\n var /** @type {?} */ dirAst;\n var /** @type {?} */ dirIndex;\n ast.directives.forEach(function (localDirAst, i) {\n if (localDirAst.directive.type.reference === tokenReference(providerAst.token)) {\n dirAst = localDirAst;\n dirIndex = i;\n }\n });\n if (dirAst) {\n var _a = _this._visitDirective(providerAst, dirAst, dirIndex, nodeIndex, ast.references, ast.queryMatches, usedEvents, _this.staticQueryIds.get(/** @type {?} */ (ast))), dirHostBindings = _a.hostBindings, dirHostEvents = _a.hostEvents;\n hostBindings.push.apply(hostBindings, dirHostBindings);\n hostEvents.push.apply(hostEvents, dirHostEvents);\n }\n else {\n _this._visitProvider(providerAst, ast.queryMatches);\n }\n });\n var /** @type {?} */ queryMatchExprs = [];\n ast.queryMatches.forEach(function (match) {\n var /** @type {?} */ valueType;\n if (tokenReference(match.value) === resolveIdentifier(Identifiers.ElementRef)) {\n valueType = 0 /* ElementRef */;\n }\n else if (tokenReference(match.value) === resolveIdentifier(Identifiers.ViewContainerRef)) {\n valueType = 3 /* ViewContainerRef */;\n }\n else if (tokenReference(match.value) === resolveIdentifier(Identifiers.TemplateRef)) {\n valueType = 2 /* TemplateRef */;\n }\n if (valueType != null) {\n queryMatchExprs.push(literalArr([literal(match.queryId), literal(valueType)]));\n }\n });\n ast.references.forEach(function (ref) {\n var /** @type {?} */ valueType;\n if (!ref.value) {\n valueType = 1 /* RenderElement */;\n }\n else if (tokenReference(ref.value) === resolveIdentifier(Identifiers.TemplateRef)) {\n valueType = 2 /* TemplateRef */;\n }\n if (valueType != null) {\n _this.refNodeIndices[ref.name] = nodeIndex;\n queryMatchExprs.push(literalArr([literal(ref.name), literal(valueType)]));\n }\n });\n ast.outputs.forEach(function (outputAst) {\n hostEvents.push({ context: COMP_VAR, eventAst: outputAst, dirAst: null });\n });\n return {\n flags: flags,\n usedEvents: Array.from(usedEvents.values()),\n queryMatchesExpr: queryMatchExprs.length ? literalArr(queryMatchExprs) : NULL_EXPR,\n hostBindings: hostBindings,\n hostEvents: hostEvents\n };\n };\n /**\n * @param {?} providerAst\n * @param {?} dirAst\n * @param {?} directiveIndex\n * @param {?} elementNodeIndex\n * @param {?} refs\n * @param {?} queryMatches\n * @param {?} usedEvents\n * @param {?} queryIds\n * @return {?}\n */\n ViewBuilder.prototype._visitDirective = function (providerAst, dirAst, directiveIndex, elementNodeIndex, refs, queryMatches, usedEvents, queryIds) {\n var _this = this;\n var /** @type {?} */ nodeIndex = this.nodes.length;\n // reserve the space in the nodeDefs array so we can add children\n this.nodes.push(null);\n dirAst.directive.queries.forEach(function (query, queryIndex) {\n var /** @type {?} */ queryId = dirAst.contentQueryStartId + queryIndex;\n var /** @type {?} */ flags = 33554432 /* TypeContentQuery */ | calcStaticDynamicQueryFlags(queryIds, queryId, query.first);\n var /** @type {?} */ bindingType = query.first ? 0 /* First */ : 1;\n _this.nodes.push(function () { return ({\n sourceSpan: dirAst.sourceSpan,\n nodeFlags: flags,\n nodeDef: importExpr(createIdentifier(Identifiers.queryDef)).callFn([\n literal(flags), literal(queryId),\n new LiteralMapExpr([new LiteralMapEntry(query.propertyName, literal(bindingType))])\n ]),\n }); });\n });\n // Note: the operation below might also create new nodeDefs,\n // but we don't want them to be a child of a directive,\n // as they might be a provider/pipe on their own.\n // I.e. we only allow queries as children of directives nodes.\n var /** @type {?} */ childCount = this.nodes.length - nodeIndex - 1;\n var _a = this._visitProviderOrDirective(providerAst, queryMatches), flags = _a.flags, queryMatchExprs = _a.queryMatchExprs, providerExpr = _a.providerExpr, depsExpr = _a.depsExpr;\n refs.forEach(function (ref) {\n if (ref.value && tokenReference(ref.value) === tokenReference(providerAst.token)) {\n _this.refNodeIndices[ref.name] = nodeIndex;\n queryMatchExprs.push(literalArr([literal(ref.name), literal(4 /* Provider */)]));\n }\n });\n if (dirAst.directive.isComponent) {\n flags |= 16384 /* Component */;\n }\n var /** @type {?} */ inputDefs = dirAst.inputs.map(function (inputAst, inputIndex) {\n var /** @type {?} */ mapValue = literalArr([literal(inputIndex), literal(inputAst.directiveName)]);\n // Note: it's important to not quote the key so that we can capture renames by minifiers!\n return new LiteralMapEntry(inputAst.directiveName, mapValue, false);\n });\n var /** @type {?} */ outputDefs = [];\n var /** @type {?} */ dirMeta = dirAst.directive;\n Object.keys(dirMeta.outputs).forEach(function (propName) {\n var /** @type {?} */ eventName = dirMeta.outputs[propName];\n if (usedEvents.has(eventName)) {\n // Note: it's important to not quote the key so that we can capture renames by minifiers!\n outputDefs.push(new LiteralMapEntry(propName, literal(eventName), false));\n }\n });\n var /** @type {?} */ updateDirectiveExpressions = [];\n if (dirAst.inputs.length || (flags & (131072 /* DoCheck */ | 32768 /* OnInit */)) > 0) {\n updateDirectiveExpressions =\n dirAst.inputs.map(function (input, bindingIndex) { return _this._preprocessUpdateExpression({\n nodeIndex: nodeIndex,\n bindingIndex: bindingIndex,\n sourceSpan: input.sourceSpan,\n context: COMP_VAR,\n value: input.value\n }); });\n }\n var /** @type {?} */ dirContextExpr = importExpr(createIdentifier(Identifiers.nodeValue)).callFn([\n VIEW_VAR, literal(nodeIndex)\n ]);\n var /** @type {?} */ hostBindings = dirAst.hostProperties.map(function (inputAst) { return ({\n context: dirContextExpr,\n dirAst: dirAst,\n inputAst: inputAst,\n }); });\n var /** @type {?} */ hostEvents = dirAst.hostEvents.map(function (hostEventAst) { return ({\n context: dirContextExpr,\n eventAst: hostEventAst, dirAst: dirAst,\n }); });\n // directiveDef(\n // flags: NodeFlags, matchedQueries: [string, QueryValueType][], childCount: number, ctor:\n // any,\n // deps: ([DepFlags, any] | any)[], props?: {[name: string]: [number, string]},\n // outputs?: {[name: string]: string}, component?: () => ViewDefinition): NodeDef;\n this.nodes[nodeIndex] = function () { return ({\n sourceSpan: dirAst.sourceSpan,\n nodeFlags: 8192 /* TypeDirective */ | flags,\n nodeDef: importExpr(createIdentifier(Identifiers.directiveDef)).callFn([\n literal(flags), queryMatchExprs.length ? literalArr(queryMatchExprs) : NULL_EXPR,\n literal(childCount), providerExpr, depsExpr,\n inputDefs.length ? new LiteralMapExpr(inputDefs) : NULL_EXPR,\n outputDefs.length ? new LiteralMapExpr(outputDefs) : NULL_EXPR\n ]),\n updateDirectives: updateDirectiveExpressions,\n directive: dirAst.directive.type,\n }); };\n return { hostBindings: hostBindings, hostEvents: hostEvents };\n };\n /**\n * @param {?} providerAst\n * @param {?} queryMatches\n * @return {?}\n */\n ViewBuilder.prototype._visitProvider = function (providerAst, queryMatches) {\n var /** @type {?} */ nodeIndex = this.nodes.length;\n // reserve the space in the nodeDefs array so we can add children\n this.nodes.push(null);\n var _a = this._visitProviderOrDirective(providerAst, queryMatches), flags = _a.flags, queryMatchExprs = _a.queryMatchExprs, providerExpr = _a.providerExpr, depsExpr = _a.depsExpr;\n // providerDef(\n // flags: NodeFlags, matchedQueries: [string, QueryValueType][], token:any,\n // value: any, deps: ([DepFlags, any] | any)[]): NodeDef;\n this.nodes[nodeIndex] = function () { return ({\n sourceSpan: providerAst.sourceSpan,\n nodeFlags: flags,\n nodeDef: importExpr(createIdentifier(Identifiers.providerDef)).callFn([\n literal(flags), queryMatchExprs.length ? literalArr(queryMatchExprs) : NULL_EXPR,\n tokenExpr(providerAst.token), providerExpr, depsExpr\n ])\n }); };\n };\n /**\n * @param {?} providerAst\n * @param {?} queryMatches\n * @return {?}\n */\n ViewBuilder.prototype._visitProviderOrDirective = function (providerAst, queryMatches) {\n var /** @type {?} */ flags = 0;\n if (!providerAst.eager) {\n flags |= 2048 /* LazyProvider */;\n }\n if (providerAst.providerType === ProviderAstType.PrivateService) {\n flags |= 4096 /* PrivateProvider */;\n }\n providerAst.lifecycleHooks.forEach(function (lifecycleHook) {\n // for regular providers, we only support ngOnDestroy\n if (lifecycleHook === ɵLifecycleHooks.OnDestroy ||\n providerAst.providerType === ProviderAstType.Directive ||\n providerAst.providerType === ProviderAstType.Component) {\n flags |= lifecycleHookToNodeFlag(lifecycleHook);\n }\n });\n var /** @type {?} */ queryMatchExprs = [];\n queryMatches.forEach(function (match) {\n if (tokenReference(match.value) === tokenReference(providerAst.token)) {\n queryMatchExprs.push(literalArr([literal(match.queryId), literal(4 /* Provider */)]));\n }\n });\n var _a = providerDef(providerAst), providerExpr = _a.providerExpr, depsExpr = _a.depsExpr, providerType = _a.flags;\n return { flags: flags | providerType, queryMatchExprs: queryMatchExprs, providerExpr: providerExpr, depsExpr: depsExpr };\n };\n /**\n * @param {?} name\n * @return {?}\n */\n ViewBuilder.prototype.getLocal = function (name) {\n if (name == EventHandlerVars.event.name) {\n return EventHandlerVars.event;\n }\n var /** @type {?} */ currViewExpr = VIEW_VAR;\n for (var /** @type {?} */ currBuilder = this; currBuilder; currBuilder = currBuilder.parent,\n currViewExpr = currViewExpr.prop('parent').cast(DYNAMIC_TYPE)) {\n // check references\n var /** @type {?} */ refNodeIndex = currBuilder.refNodeIndices[name];\n if (refNodeIndex != null) {\n return importExpr(createIdentifier(Identifiers.nodeValue)).callFn([\n currViewExpr, literal(refNodeIndex)\n ]);\n }\n // check variables\n var /** @type {?} */ varAst = currBuilder.variables.find(function (varAst) { return varAst.name === name; });\n if (varAst) {\n var /** @type {?} */ varValue = varAst.value || IMPLICIT_TEMPLATE_VAR;\n return currViewExpr.prop('context').prop(varValue);\n }\n }\n return null;\n };\n /**\n * @param {?} sourceSpan\n * @param {?} argCount\n * @return {?}\n */\n ViewBuilder.prototype.createLiteralArrayConverter = function (sourceSpan, argCount) {\n if (argCount === 0) {\n var /** @type {?} */ valueExpr_1 = importExpr(createIdentifier(Identifiers.EMPTY_ARRAY));\n return function () { return valueExpr_1; };\n }\n var /** @type {?} */ nodeIndex = this.nodes.length;\n // pureArrayDef(argCount: number): NodeDef;\n this.nodes.push(function () { return ({\n sourceSpan: sourceSpan,\n nodeFlags: 16 /* TypePureArray */,\n nodeDef: importExpr(createIdentifier(Identifiers.pureArrayDef)).callFn([literal(argCount)])\n }); });\n return function (args) { return callCheckStmt(nodeIndex, args); };\n };\n /**\n * @param {?} sourceSpan\n * @param {?} keys\n * @return {?}\n */\n ViewBuilder.prototype.createLiteralMapConverter = function (sourceSpan, keys) {\n if (keys.length === 0) {\n var /** @type {?} */ valueExpr_2 = importExpr(createIdentifier(Identifiers.EMPTY_MAP));\n return function () { return valueExpr_2; };\n }\n var /** @type {?} */ nodeIndex = this.nodes.length;\n // function pureObjectDef(propertyNames: string[]): NodeDef\n this.nodes.push(function () { return ({\n sourceSpan: sourceSpan,\n nodeFlags: 32 /* TypePureObject */,\n nodeDef: importExpr(createIdentifier(Identifiers.pureObjectDef))\n .callFn([literalArr(keys.map(function (key) { return literal(key); }))])\n }); });\n return function (args) { return callCheckStmt(nodeIndex, args); };\n };\n /**\n * @param {?} expression\n * @param {?} name\n * @param {?} argCount\n * @return {?}\n */\n ViewBuilder.prototype.createPipeConverter = function (expression, name, argCount) {\n var /** @type {?} */ pipe = this.usedPipes.find(function (pipeSummary) { return pipeSummary.name === name; });\n if (pipe.pure) {\n var /** @type {?} */ nodeIndex_1 = this.nodes.length;\n // function purePipeDef(argCount: number): NodeDef;\n this.nodes.push(function () { return ({\n sourceSpan: expression.sourceSpan,\n nodeFlags: 64 /* TypePurePipe */,\n nodeDef: importExpr(createIdentifier(Identifiers.purePipeDef))\n .callFn([literal(argCount)])\n }); });\n // find underlying pipe in the component view\n var /** @type {?} */ compViewExpr = VIEW_VAR;\n var /** @type {?} */ compBuilder = this;\n while (compBuilder.parent) {\n compBuilder = compBuilder.parent;\n compViewExpr = compViewExpr.prop('parent').cast(DYNAMIC_TYPE);\n }\n var /** @type {?} */ pipeNodeIndex = compBuilder.purePipeNodeIndices[name];\n var /** @type {?} */ pipeValueExpr_1 = importExpr(createIdentifier(Identifiers.nodeValue)).callFn([\n compViewExpr, literal(pipeNodeIndex)\n ]);\n return function (args) { return callUnwrapValue(expression.nodeIndex, expression.bindingIndex, callCheckStmt(nodeIndex_1, [pipeValueExpr_1].concat(args))); };\n }\n else {\n var /** @type {?} */ nodeIndex = this._createPipe(expression.sourceSpan, pipe);\n var /** @type {?} */ nodeValueExpr_1 = importExpr(createIdentifier(Identifiers.nodeValue)).callFn([\n VIEW_VAR, literal(nodeIndex)\n ]);\n return function (args) { return callUnwrapValue(expression.nodeIndex, expression.bindingIndex, nodeValueExpr_1.callMethod('transform', args)); };\n }\n };\n /**\n * @param {?} sourceSpan\n * @param {?} pipe\n * @return {?}\n */\n ViewBuilder.prototype._createPipe = function (sourceSpan, pipe) {\n var /** @type {?} */ nodeIndex = this.nodes.length;\n var /** @type {?} */ flags = 0;\n pipe.type.lifecycleHooks.forEach(function (lifecycleHook) {\n // for pipes, we only support ngOnDestroy\n if (lifecycleHook === ɵLifecycleHooks.OnDestroy) {\n flags |= lifecycleHookToNodeFlag(lifecycleHook);\n }\n });\n var /** @type {?} */ depExprs = pipe.type.diDeps.map(depDef);\n // function pipeDef(\n // flags: NodeFlags, ctor: any, deps: ([DepFlags, any] | any)[]): NodeDef\n this.nodes.push(function () { return ({\n sourceSpan: sourceSpan,\n nodeFlags: 8 /* TypePipe */,\n nodeDef: importExpr(createIdentifier(Identifiers.pipeDef)).callFn([\n literal(flags), importExpr(pipe.type), literalArr(depExprs)\n ])\n }); });\n return nodeIndex;\n };\n /**\n * @param {?} expression\n * @return {?}\n */\n ViewBuilder.prototype._preprocessUpdateExpression = function (expression) {\n var _this = this;\n return {\n nodeIndex: expression.nodeIndex,\n bindingIndex: expression.bindingIndex,\n sourceSpan: expression.sourceSpan,\n context: expression.context,\n value: convertPropertyBindingBuiltins({\n createLiteralArrayConverter: function (argCount) { return _this.createLiteralArrayConverter(expression.sourceSpan, argCount); },\n createLiteralMapConverter: function (keys) { return _this.createLiteralMapConverter(expression.sourceSpan, keys); },\n createPipeConverter: function (name, argCount) { return _this.createPipeConverter(expression, name, argCount); }\n }, expression.value)\n };\n };\n /**\n * @return {?}\n */\n ViewBuilder.prototype._createNodeExpressions = function () {\n var /** @type {?} */ self = this;\n var /** @type {?} */ updateBindingCount = 0;\n var /** @type {?} */ updateRendererStmts = [];\n var /** @type {?} */ updateDirectivesStmts = [];\n var /** @type {?} */ nodeDefExprs = this.nodes.map(function (factory, nodeIndex) {\n var _a = factory(), nodeDef = _a.nodeDef, nodeFlags = _a.nodeFlags, updateDirectives = _a.updateDirectives, updateRenderer = _a.updateRenderer, sourceSpan = _a.sourceSpan;\n if (updateRenderer) {\n updateRendererStmts.push.apply(updateRendererStmts, createUpdateStatements(nodeIndex, sourceSpan, updateRenderer, false));\n }\n if (updateDirectives) {\n updateDirectivesStmts.push.apply(updateDirectivesStmts, createUpdateStatements(nodeIndex, sourceSpan, updateDirectives, (nodeFlags & (131072 /* DoCheck */ | 32768 /* OnInit */)) > 0));\n }\n // We use a comma expression to call the log function before\n // the nodeDef function, but still use the result of the nodeDef function\n // as the value.\n // Note: We only add the logger to elements / text nodes,\n // so we don't generate too much code.\n var /** @type {?} */ logWithNodeDef = nodeFlags & 3 /* CatRenderNode */ ?\n new CommaExpr([LOG_VAR.callFn([]).callFn([]), nodeDef]) :\n nodeDef;\n return applySourceSpanToExpressionIfNeeded(logWithNodeDef, sourceSpan);\n });\n return { updateRendererStmts: updateRendererStmts, updateDirectivesStmts: updateDirectivesStmts, nodeDefExprs: nodeDefExprs };\n /**\n * @param {?} nodeIndex\n * @param {?} sourceSpan\n * @param {?} expressions\n * @param {?} allowEmptyExprs\n * @return {?}\n */\n function createUpdateStatements(nodeIndex, sourceSpan, expressions, allowEmptyExprs) {\n var /** @type {?} */ updateStmts = [];\n var /** @type {?} */ exprs = expressions.map(function (_a) {\n var sourceSpan = _a.sourceSpan, context = _a.context, value = _a.value;\n var /** @type {?} */ bindingId = \"\" + updateBindingCount++;\n var /** @type {?} */ nameResolver = context === COMP_VAR ? self : null;\n var _b = convertPropertyBinding(nameResolver, context, value, bindingId), stmts = _b.stmts, currValExpr = _b.currValExpr;\n updateStmts.push.apply(updateStmts, stmts.map(function (stmt) { return applySourceSpanToStatementIfNeeded(stmt, sourceSpan); }));\n return applySourceSpanToExpressionIfNeeded(currValExpr, sourceSpan);\n });\n if (expressions.length || allowEmptyExprs) {\n updateStmts.push(applySourceSpanToStatementIfNeeded(callCheckStmt(nodeIndex, exprs).toStmt(), sourceSpan));\n }\n return updateStmts;\n }\n };\n /**\n * @param {?} nodeIndex\n * @param {?} handlers\n * @return {?}\n */\n ViewBuilder.prototype._createElementHandleEventFn = function (nodeIndex, handlers) {\n var _this = this;\n var /** @type {?} */ handleEventStmts = [];\n var /** @type {?} */ handleEventBindingCount = 0;\n handlers.forEach(function (_a) {\n var context = _a.context, eventAst = _a.eventAst, dirAst = _a.dirAst;\n var /** @type {?} */ bindingId = \"\" + handleEventBindingCount++;\n var /** @type {?} */ nameResolver = context === COMP_VAR ? _this : null;\n var _b = convertActionBinding(nameResolver, context, eventAst.handler, bindingId), stmts = _b.stmts, allowDefault = _b.allowDefault;\n var /** @type {?} */ trueStmts = stmts;\n if (allowDefault) {\n trueStmts.push(ALLOW_DEFAULT_VAR.set(allowDefault.and(ALLOW_DEFAULT_VAR)).toStmt());\n }\n var _c = elementEventNameAndTarget(eventAst, dirAst), eventTarget = _c.target, eventName = _c.name;\n var /** @type {?} */ fullEventName = ɵelementEventFullName(eventTarget, eventName);\n handleEventStmts.push(applySourceSpanToStatementIfNeeded(new IfStmt(literal(fullEventName).identical(EVENT_NAME_VAR), trueStmts), eventAst.sourceSpan));\n });\n var /** @type {?} */ handleEventFn;\n if (handleEventStmts.length > 0) {\n var /** @type {?} */ preStmts = [ALLOW_DEFAULT_VAR.set(literal(true)).toDeclStmt(BOOL_TYPE)];\n if (!this.component.isHost && findReadVarNames(handleEventStmts).has(COMP_VAR.name)) {\n preStmts.push(COMP_VAR.set(VIEW_VAR.prop('component')).toDeclStmt(this.compType));\n }\n handleEventFn = fn([\n new FnParam(VIEW_VAR.name, INFERRED_TYPE),\n new FnParam(EVENT_NAME_VAR.name, INFERRED_TYPE),\n new FnParam(EventHandlerVars.event.name, INFERRED_TYPE)\n ], preStmts.concat(handleEventStmts, [new ReturnStatement(ALLOW_DEFAULT_VAR)]), INFERRED_TYPE);\n }\n else {\n handleEventFn = NULL_EXPR;\n }\n return handleEventFn;\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n ViewBuilder.prototype.visitDirective = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n ViewBuilder.prototype.visitDirectiveProperty = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n ViewBuilder.prototype.visitReference = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n ViewBuilder.prototype.visitVariable = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n ViewBuilder.prototype.visitEvent = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n ViewBuilder.prototype.visitElementProperty = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n ViewBuilder.prototype.visitAttr = function (ast, context) { };\n return ViewBuilder;\n}());\n/**\n * @param {?} providerAst\n * @return {?}\n */\nfunction providerDef(providerAst) {\n return providerAst.multiProvider ?\n multiProviderDef(providerAst.providers) :\n singleProviderDef(providerAst.providerType, providerAst.providers[0]);\n}\n/**\n * @param {?} providers\n * @return {?}\n */\nfunction multiProviderDef(providers) {\n var /** @type {?} */ allDepDefs = [];\n var /** @type {?} */ allParams = [];\n var /** @type {?} */ exprs = providers.map(function (provider, providerIndex) {\n var /** @type {?} */ expr;\n if (provider.useClass) {\n var /** @type {?} */ depExprs = convertDeps(providerIndex, provider.deps || provider.useClass.diDeps);\n expr = importExpr(provider.useClass).instantiate(depExprs);\n }\n else if (provider.useFactory) {\n var /** @type {?} */ depExprs = convertDeps(providerIndex, provider.deps || provider.useFactory.diDeps);\n expr = importExpr(provider.useFactory).callFn(depExprs);\n }\n else if (provider.useExisting) {\n var /** @type {?} */ depExprs = convertDeps(providerIndex, [{ token: provider.useExisting }]);\n expr = depExprs[0];\n }\n else {\n expr = convertValueToOutputAst(provider.useValue);\n }\n return expr;\n });\n var /** @type {?} */ providerExpr = fn(allParams, [new ReturnStatement(literalArr(exprs))], INFERRED_TYPE);\n return { providerExpr: providerExpr, flags: 512 /* TypeFactoryProvider */, depsExpr: literalArr(allDepDefs) };\n /**\n * @param {?} providerIndex\n * @param {?} deps\n * @return {?}\n */\n function convertDeps(providerIndex, deps) {\n return deps.map(function (dep, depIndex) {\n var /** @type {?} */ paramName = \"p\" + providerIndex + \"_\" + depIndex;\n allParams.push(new FnParam(paramName, DYNAMIC_TYPE));\n allDepDefs.push(depDef(dep));\n return variable(paramName);\n });\n }\n}\n/**\n * @param {?} providerType\n * @param {?} providerMeta\n * @return {?}\n */\nfunction singleProviderDef(providerType, providerMeta) {\n var /** @type {?} */ providerExpr;\n var /** @type {?} */ flags;\n var /** @type {?} */ deps;\n if (providerType === ProviderAstType.Directive || providerType === ProviderAstType.Component) {\n providerExpr = importExpr(providerMeta.useClass);\n flags = 8192 /* TypeDirective */;\n deps = providerMeta.deps || providerMeta.useClass.diDeps;\n }\n else {\n if (providerMeta.useClass) {\n providerExpr = importExpr(providerMeta.useClass);\n flags = 256 /* TypeClassProvider */;\n deps = providerMeta.deps || providerMeta.useClass.diDeps;\n }\n else if (providerMeta.useFactory) {\n providerExpr = importExpr(providerMeta.useFactory);\n flags = 512 /* TypeFactoryProvider */;\n deps = providerMeta.deps || providerMeta.useFactory.diDeps;\n }\n else if (providerMeta.useExisting) {\n providerExpr = NULL_EXPR;\n flags = 1024 /* TypeUseExistingProvider */;\n deps = [{ token: providerMeta.useExisting }];\n }\n else {\n providerExpr = convertValueToOutputAst(providerMeta.useValue);\n flags = 128 /* TypeValueProvider */;\n deps = [];\n }\n }\n var /** @type {?} */ depsExpr = literalArr(deps.map(function (dep) { return depDef(dep); }));\n return { providerExpr: providerExpr, flags: flags, depsExpr: depsExpr };\n}\n/**\n * @param {?} tokenMeta\n * @return {?}\n */\nfunction tokenExpr(tokenMeta) {\n return tokenMeta.identifier ? importExpr(tokenMeta.identifier) : literal(tokenMeta.value);\n}\n/**\n * @param {?} dep\n * @return {?}\n */\nfunction depDef(dep) {\n // Note: the following fields have already been normalized out by provider_analyzer:\n // - isAttribute, isSelf, isHost\n var /** @type {?} */ expr = dep.isValue ? convertValueToOutputAst(dep.value) : tokenExpr(dep.token);\n var /** @type {?} */ flags = 0;\n if (dep.isSkipSelf) {\n flags |= 1 /* SkipSelf */;\n }\n if (dep.isOptional) {\n flags |= 2 /* Optional */;\n }\n if (dep.isValue) {\n flags |= 8 /* Value */;\n }\n return flags === 0 /* None */ ? expr : literalArr([literal(flags), expr]);\n}\n/**\n * @param {?} astNodes\n * @return {?}\n */\nfunction needsAdditionalRootNode(astNodes) {\n var /** @type {?} */ lastAstNode = astNodes[astNodes.length - 1];\n if (lastAstNode instanceof EmbeddedTemplateAst) {\n return lastAstNode.hasViewContainer;\n }\n if (lastAstNode instanceof ElementAst) {\n if (lastAstNode.name === NG_CONTAINER_TAG && lastAstNode.children.length) {\n return needsAdditionalRootNode(lastAstNode.children);\n }\n return lastAstNode.hasViewContainer;\n }\n return lastAstNode instanceof NgContentAst;\n}\n/**\n * @param {?} lifecycleHook\n * @return {?}\n */\nfunction lifecycleHookToNodeFlag(lifecycleHook) {\n var /** @type {?} */ nodeFlag = 0;\n switch (lifecycleHook) {\n case ɵLifecycleHooks.AfterContentChecked:\n nodeFlag = 1048576 /* AfterContentChecked */;\n break;\n case ɵLifecycleHooks.AfterContentInit:\n nodeFlag = 524288 /* AfterContentInit */;\n break;\n case ɵLifecycleHooks.AfterViewChecked:\n nodeFlag = 4194304 /* AfterViewChecked */;\n break;\n case ɵLifecycleHooks.AfterViewInit:\n nodeFlag = 2097152 /* AfterViewInit */;\n break;\n case ɵLifecycleHooks.DoCheck:\n nodeFlag = 131072 /* DoCheck */;\n break;\n case ɵLifecycleHooks.OnChanges:\n nodeFlag = 262144 /* OnChanges */;\n break;\n case ɵLifecycleHooks.OnDestroy:\n nodeFlag = 65536 /* OnDestroy */;\n break;\n case ɵLifecycleHooks.OnInit:\n nodeFlag = 32768 /* OnInit */;\n break;\n }\n return nodeFlag;\n}\n/**\n * @param {?} inputAst\n * @param {?} dirAst\n * @return {?}\n */\nfunction elementBindingDef(inputAst, dirAst) {\n switch (inputAst.type) {\n case PropertyBindingType.Attribute:\n return literalArr([\n literal(1 /* TypeElementAttribute */), literal(inputAst.name),\n literal(inputAst.securityContext)\n ]);\n case PropertyBindingType.Property:\n return literalArr([\n literal(8 /* TypeProperty */), literal(inputAst.name),\n literal(inputAst.securityContext)\n ]);\n case PropertyBindingType.Animation:\n var /** @type {?} */ bindingType = 8 /* TypeProperty */ |\n (dirAst && dirAst.directive.isComponent ? 32 /* SyntheticHostProperty */ :\n 16 /* SyntheticProperty */);\n return literalArr([\n literal(bindingType), literal('@' + inputAst.name), literal(inputAst.securityContext)\n ]);\n case PropertyBindingType.Class:\n return literalArr([literal(2 /* TypeElementClass */), literal(inputAst.name), NULL_EXPR]);\n case PropertyBindingType.Style:\n return literalArr([\n literal(4 /* TypeElementStyle */), literal(inputAst.name), literal(inputAst.unit)\n ]);\n }\n}\n/**\n * @param {?} elementAst\n * @return {?}\n */\nfunction fixedAttrsDef(elementAst) {\n var /** @type {?} */ mapResult = Object.create(null);\n elementAst.attrs.forEach(function (attrAst) { mapResult[attrAst.name] = attrAst.value; });\n elementAst.directives.forEach(function (dirAst) {\n Object.keys(dirAst.directive.hostAttributes).forEach(function (name) {\n var /** @type {?} */ value = dirAst.directive.hostAttributes[name];\n var /** @type {?} */ prevValue = mapResult[name];\n mapResult[name] = prevValue != null ? mergeAttributeValue(name, prevValue, value) : value;\n });\n });\n var /** @type {?} */ mapEntries = [];\n // Note: We need to sort to get a defined output order\n // for tests and for caching generated artifacts...\n return literalArr(Object.keys(mapResult).sort().map(function (attrName) { return literalArr([literal(attrName), literal(mapResult[attrName])]); }));\n}\n/**\n * @param {?} attrName\n * @param {?} attrValue1\n * @param {?} attrValue2\n * @return {?}\n */\nfunction mergeAttributeValue(attrName, attrValue1, attrValue2) {\n if (attrName == CLASS_ATTR$1 || attrName == STYLE_ATTR) {\n return attrValue1 + \" \" + attrValue2;\n }\n else {\n return attrValue2;\n }\n}\n/**\n * @param {?} nodeIndex\n * @param {?} exprs\n * @return {?}\n */\nfunction callCheckStmt(nodeIndex, exprs) {\n if (exprs.length > 10) {\n return CHECK_VAR.callFn([VIEW_VAR, literal(nodeIndex), literal(1 /* Dynamic */), literalArr(exprs)]);\n }\n else {\n return CHECK_VAR.callFn([VIEW_VAR, literal(nodeIndex), literal(0 /* Inline */)].concat(exprs));\n }\n}\n/**\n * @param {?} nodeIndex\n * @param {?} bindingIdx\n * @param {?} expr\n * @return {?}\n */\nfunction callUnwrapValue(nodeIndex, bindingIdx, expr) {\n return importExpr(createIdentifier(Identifiers.unwrapValue)).callFn([\n VIEW_VAR, literal(nodeIndex), literal(bindingIdx), expr\n ]);\n}\n/**\n * @param {?} nodes\n * @param {?=} result\n * @return {?}\n */\nfunction findStaticQueryIds(nodes, result) {\n if (result === void 0) { result = new Map(); }\n nodes.forEach(function (node) {\n var /** @type {?} */ staticQueryIds = new Set();\n var /** @type {?} */ dynamicQueryIds = new Set();\n var /** @type {?} */ queryMatches;\n if (node instanceof ElementAst) {\n findStaticQueryIds(node.children, result);\n node.children.forEach(function (child) {\n var /** @type {?} */ childData = result.get(child);\n childData.staticQueryIds.forEach(function (queryId) { return staticQueryIds.add(queryId); });\n childData.dynamicQueryIds.forEach(function (queryId) { return dynamicQueryIds.add(queryId); });\n });\n queryMatches = node.queryMatches;\n }\n else if (node instanceof EmbeddedTemplateAst) {\n findStaticQueryIds(node.children, result);\n node.children.forEach(function (child) {\n var /** @type {?} */ childData = result.get(child);\n childData.staticQueryIds.forEach(function (queryId) { return dynamicQueryIds.add(queryId); });\n childData.dynamicQueryIds.forEach(function (queryId) { return dynamicQueryIds.add(queryId); });\n });\n queryMatches = node.queryMatches;\n }\n if (queryMatches) {\n queryMatches.forEach(function (match) { return staticQueryIds.add(match.queryId); });\n }\n dynamicQueryIds.forEach(function (queryId) { return staticQueryIds.delete(queryId); });\n result.set(node, { staticQueryIds: staticQueryIds, dynamicQueryIds: dynamicQueryIds });\n });\n return result;\n}\n/**\n * @param {?} nodeStaticQueryIds\n * @return {?}\n */\nfunction staticViewQueryIds(nodeStaticQueryIds) {\n var /** @type {?} */ staticQueryIds = new Set();\n var /** @type {?} */ dynamicQueryIds = new Set();\n Array.from(nodeStaticQueryIds.values()).forEach(function (entry) {\n entry.staticQueryIds.forEach(function (queryId) { return staticQueryIds.add(queryId); });\n entry.dynamicQueryIds.forEach(function (queryId) { return dynamicQueryIds.add(queryId); });\n });\n dynamicQueryIds.forEach(function (queryId) { return staticQueryIds.delete(queryId); });\n return { staticQueryIds: staticQueryIds, dynamicQueryIds: dynamicQueryIds };\n}\n/**\n * @param {?} directives\n * @return {?}\n */\nfunction createComponentFactoryResolver(directives) {\n var /** @type {?} */ componentDirMeta = directives.find(function (dirAst) { return dirAst.directive.isComponent; });\n if (componentDirMeta && componentDirMeta.directive.entryComponents.length) {\n var /** @type {?} */ entryComponentFactories = componentDirMeta.directive.entryComponents.map(function (entryComponent) { return importExpr({ reference: entryComponent.componentFactory }); });\n var /** @type {?} */ token = createIdentifierToken(Identifiers.ComponentFactoryResolver);\n var /** @type {?} */ classMeta = {\n diDeps: [\n { isValue: true, value: literalArr(entryComponentFactories) },\n { token: token, isSkipSelf: true, isOptional: true },\n { token: createIdentifierToken(Identifiers.NgModuleRef) },\n ],\n lifecycleHooks: [],\n reference: resolveIdentifier(Identifiers.CodegenComponentFactoryResolver)\n };\n return new ProviderAst(token, false, true, [{ token: token, multi: false, useClass: classMeta }], ProviderAstType.PrivateService, [], componentDirMeta.sourceSpan);\n }\n return null;\n}\n/**\n * @param {?} eventAst\n * @param {?} dirAst\n * @return {?}\n */\nfunction elementEventNameAndTarget(eventAst, dirAst) {\n if (eventAst.isAnimation) {\n return {\n name: \"@\" + eventAst.name + \".\" + eventAst.phase,\n target: dirAst && dirAst.directive.isComponent ? 'component' : null\n };\n }\n else {\n return eventAst;\n }\n}\n/**\n * @param {?} queryIds\n * @param {?} queryId\n * @param {?} isFirst\n * @return {?}\n */\nfunction calcStaticDynamicQueryFlags(queryIds, queryId, isFirst) {\n var /** @type {?} */ flags = 0;\n // Note: We only make queries static that query for a single item.\n // This is because of backwards compatibility with the old view compiler...\n if (isFirst && (queryIds.staticQueryIds.has(queryId) || !queryIds.dynamicQueryIds.has(queryId))) {\n flags |= 134217728 /* StaticQuery */;\n }\n else {\n flags |= 268435456 /* DynamicQuery */;\n }\n return flags;\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 */\nvar GeneratedFile = (function () {\n /**\n * @param {?} srcFileUrl\n * @param {?} genFileUrl\n * @param {?} source\n */\n function GeneratedFile(srcFileUrl, genFileUrl, source) {\n this.srcFileUrl = srcFileUrl;\n this.genFileUrl = genFileUrl;\n this.source = source;\n }\n return GeneratedFile;\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 * @param {?} summaryResolver\n * @param {?} symbolResolver\n * @param {?} symbols\n * @param {?} types\n * @return {?}\n */\nfunction serializeSummaries(summaryResolver, symbolResolver, symbols, types) {\n var /** @type {?} */ serializer = new Serializer$1(symbolResolver, summaryResolver);\n // for symbols, we use everything except for the class metadata itself\n // (we keep the statics though), as the class metadata is contained in the\n // CompileTypeSummary.\n symbols.forEach(function (resolvedSymbol) { return serializer.addOrMergeSummary({ symbol: resolvedSymbol.symbol, metadata: resolvedSymbol.metadata }); });\n // Add summaries that are referenced by the given symbols (transitively)\n // Note: the serializer.symbols array might be growing while\n // we execute the loop!\n for (var /** @type {?} */ processedIndex = 0; processedIndex < serializer.symbols.length; processedIndex++) {\n var /** @type {?} */ symbol = serializer.symbols[processedIndex];\n if (summaryResolver.isLibraryFile(symbol.filePath)) {\n var /** @type {?} */ summary = summaryResolver.resolveSummary(symbol);\n if (!summary) {\n // some symbols might originate from a plain typescript library\n // that just exported .d.ts and .metadata.json files, i.e. where no summary\n // files were created.\n var /** @type {?} */ resolvedSymbol = symbolResolver.resolveSymbol(symbol);\n if (resolvedSymbol) {\n summary = { symbol: resolvedSymbol.symbol, metadata: resolvedSymbol.metadata };\n }\n }\n if (summary) {\n serializer.addOrMergeSummary(summary);\n }\n }\n }\n // Add type summaries.\n // Note: We don't add the summaries of all referenced symbols as for the ResolvedSymbols,\n // as the type summaries already contain the transitive data that they require\n // (in a minimal way).\n types.forEach(function (typeSummary) {\n serializer.addOrMergeSummary({ symbol: typeSummary.type.reference, metadata: null, type: typeSummary });\n if (typeSummary.summaryKind === CompileSummaryKind.NgModule) {\n var /** @type {?} */ ngModuleSummary = (typeSummary);\n ngModuleSummary.exportedDirectives.concat(ngModuleSummary.exportedPipes).forEach(function (id) {\n var /** @type {?} */ symbol = id.reference;\n if (summaryResolver.isLibraryFile(symbol.filePath)) {\n var /** @type {?} */ summary = summaryResolver.resolveSummary(symbol);\n if (summary) {\n serializer.addOrMergeSummary(summary);\n }\n }\n });\n }\n });\n return serializer.serialize();\n}\n/**\n * @param {?} symbolCache\n * @param {?} json\n * @return {?}\n */\nfunction deserializeSummaries(symbolCache, json) {\n var /** @type {?} */ deserializer = new Deserializer(symbolCache);\n return deserializer.deserialize(json);\n}\nvar Serializer$1 = (function (_super) {\n __extends(Serializer$1, _super);\n /**\n * @param {?} symbolResolver\n * @param {?} summaryResolver\n */\n function Serializer$1(symbolResolver, summaryResolver) {\n var _this = _super.call(this) || this;\n _this.symbolResolver = symbolResolver;\n _this.summaryResolver = summaryResolver;\n // Note: This only contains symbols without members.\n _this.symbols = [];\n _this.indexBySymbol = new Map();\n _this.processedSummaryBySymbol = new Map();\n _this.processedSummaries = [];\n return _this;\n }\n /**\n * @param {?} summary\n * @return {?}\n */\n Serializer$1.prototype.addOrMergeSummary = function (summary) {\n var /** @type {?} */ symbolMeta = summary.metadata;\n if (symbolMeta && symbolMeta.__symbolic === 'class') {\n // For classes, we keep everything except their class decorators.\n // We need to keep e.g. the ctor args, method names, method decorators\n // so that the class can be extended in another compilation unit.\n // We don't keep the class decorators as\n // 1) they refer to data\n // that should not cause a rebuild of downstream compilation units\n // (e.g. inline templates of @Component, or @NgModule.declarations)\n // 2) their data is already captured in TypeSummaries, e.g. DirectiveSummary.\n var /** @type {?} */ clone_1 = {};\n Object.keys(symbolMeta).forEach(function (propName) {\n if (propName !== 'decorators') {\n clone_1[propName] = symbolMeta[propName];\n }\n });\n symbolMeta = clone_1;\n }\n var /** @type {?} */ processedSummary = this.processedSummaryBySymbol.get(summary.symbol);\n if (!processedSummary) {\n processedSummary = this.processValue({ symbol: summary.symbol });\n this.processedSummaries.push(processedSummary);\n this.processedSummaryBySymbol.set(summary.symbol, processedSummary);\n }\n // Note: == on purpose to compare with undefined!\n if (processedSummary.metadata == null && symbolMeta != null) {\n processedSummary.metadata = this.processValue(symbolMeta);\n }\n // Note: == on purpose to compare with undefined!\n if (processedSummary.type == null && summary.type != null) {\n processedSummary.type = this.processValue(summary.type);\n }\n };\n /**\n * @return {?}\n */\n Serializer$1.prototype.serialize = function () {\n var _this = this;\n var /** @type {?} */ exportAs = [];\n var /** @type {?} */ json = JSON.stringify({\n summaries: this.processedSummaries,\n symbols: this.symbols.map(function (symbol, index) {\n symbol.assertNoMembers();\n var /** @type {?} */ importAs;\n if (_this.summaryResolver.isLibraryFile(symbol.filePath)) {\n importAs = symbol.name + \"_\" + index;\n exportAs.push({ symbol: symbol, exportAs: importAs });\n }\n return {\n __symbol: index,\n name: symbol.name,\n // We convert the source filenames tinto output filenames,\n // as the generated summary file will be used when teh current\n // compilation unit is used as a library\n filePath: _this.summaryResolver.getLibraryFileName(symbol.filePath),\n importAs: importAs\n };\n })\n });\n return { json: json, exportAs: exportAs };\n };\n /**\n * @param {?} value\n * @return {?}\n */\n Serializer$1.prototype.processValue = function (value) { return visitValue(value, this, null); };\n /**\n * @param {?} value\n * @param {?} context\n * @return {?}\n */\n Serializer$1.prototype.visitOther = function (value, context) {\n if (value instanceof StaticSymbol) {\n var /** @type {?} */ baseSymbol = this.symbolResolver.getStaticSymbol(value.filePath, value.name);\n var /** @type {?} */ index = this.indexBySymbol.get(baseSymbol);\n // Note: == on purpose to compare with undefined!\n if (index == null) {\n index = this.indexBySymbol.size;\n this.indexBySymbol.set(baseSymbol, index);\n this.symbols.push(baseSymbol);\n }\n return { __symbol: index, members: value.members };\n }\n };\n return Serializer$1;\n}(ValueTransformer));\nvar Deserializer = (function (_super) {\n __extends(Deserializer, _super);\n /**\n * @param {?} symbolCache\n */\n function Deserializer(symbolCache) {\n var _this = _super.call(this) || this;\n _this.symbolCache = symbolCache;\n return _this;\n }\n /**\n * @param {?} json\n * @return {?}\n */\n Deserializer.prototype.deserialize = function (json) {\n var _this = this;\n var /** @type {?} */ data = JSON.parse(json);\n var /** @type {?} */ importAs = [];\n this.symbols = [];\n data.symbols.forEach(function (serializedSymbol) {\n var /** @type {?} */ symbol = _this.symbolCache.get(serializedSymbol.filePath, serializedSymbol.name);\n _this.symbols.push(symbol);\n if (serializedSymbol.importAs) {\n importAs.push({ symbol: symbol, importAs: serializedSymbol.importAs });\n }\n });\n var /** @type {?} */ summaries = visitValue(data.summaries, this, null);\n return { summaries: summaries, importAs: importAs };\n };\n /**\n * @param {?} map\n * @param {?} context\n * @return {?}\n */\n Deserializer.prototype.visitStringMap = function (map, context) {\n if ('__symbol' in map) {\n var /** @type {?} */ baseSymbol = this.symbols[map['__symbol']];\n var /** @type {?} */ members = map['members'];\n return members.length ? this.symbolCache.get(baseSymbol.filePath, baseSymbol.name, members) :\n baseSymbol;\n }\n else {\n return _super.prototype.visitStringMap.call(this, map, context);\n }\n };\n return Deserializer;\n}(ValueTransformer));\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 */\nvar AotCompiler = (function () {\n /**\n * @param {?} _config\n * @param {?} _host\n * @param {?} _metadataResolver\n * @param {?} _templateParser\n * @param {?} _styleCompiler\n * @param {?} _viewCompiler\n * @param {?} _ngModuleCompiler\n * @param {?} _outputEmitter\n * @param {?} _summaryResolver\n * @param {?} _localeId\n * @param {?} _translationFormat\n * @param {?} _genFilePreamble\n * @param {?} _symbolResolver\n */\n function AotCompiler(_config, _host, _metadataResolver, _templateParser, _styleCompiler, _viewCompiler, _ngModuleCompiler, _outputEmitter, _summaryResolver, _localeId, _translationFormat, _genFilePreamble, _symbolResolver) {\n this._config = _config;\n this._host = _host;\n this._metadataResolver = _metadataResolver;\n this._templateParser = _templateParser;\n this._styleCompiler = _styleCompiler;\n this._viewCompiler = _viewCompiler;\n this._ngModuleCompiler = _ngModuleCompiler;\n this._outputEmitter = _outputEmitter;\n this._summaryResolver = _summaryResolver;\n this._localeId = _localeId;\n this._translationFormat = _translationFormat;\n this._genFilePreamble = _genFilePreamble;\n this._symbolResolver = _symbolResolver;\n }\n /**\n * @return {?}\n */\n AotCompiler.prototype.clearCache = function () { this._metadataResolver.clearCache(); };\n /**\n * @param {?} rootFiles\n * @return {?}\n */\n AotCompiler.prototype.compileAll = function (rootFiles) {\n var _this = this;\n var /** @type {?} */ programSymbols = extractProgramSymbols(this._symbolResolver, rootFiles, this._host);\n var _a = analyzeAndValidateNgModules(programSymbols, this._host, this._metadataResolver), ngModuleByPipeOrDirective = _a.ngModuleByPipeOrDirective, files = _a.files, ngModules = _a.ngModules;\n return Promise\n .all(ngModules.map(function (ngModule) { return _this._metadataResolver.loadNgModuleDirectiveAndPipeMetadata(ngModule.type.reference, false); }))\n .then(function () {\n var /** @type {?} */ sourceModules = files.map(function (file) { return _this._compileSrcFile(file.srcUrl, ngModuleByPipeOrDirective, file.directives, file.pipes, file.ngModules, file.injectables); });\n return flatten(sourceModules);\n });\n };\n /**\n * @param {?} srcFileUrl\n * @param {?} ngModuleByPipeOrDirective\n * @param {?} directives\n * @param {?} pipes\n * @param {?} ngModules\n * @param {?} injectables\n * @return {?}\n */\n AotCompiler.prototype._compileSrcFile = function (srcFileUrl, ngModuleByPipeOrDirective, directives, pipes, ngModules, injectables) {\n var _this = this;\n var /** @type {?} */ fileSuffix = splitTypescriptSuffix(srcFileUrl)[1];\n var /** @type {?} */ statements = [];\n var /** @type {?} */ exportedVars = [];\n var /** @type {?} */ generatedFiles = [];\n generatedFiles.push(this._createSummary(srcFileUrl, directives, pipes, ngModules, injectables, statements, exportedVars));\n // compile all ng modules\n exportedVars.push.apply(exportedVars, ngModules.map(function (ngModuleType) { return _this._compileModule(ngModuleType, statements); }));\n // compile components\n directives.forEach(function (dirType) {\n var /** @type {?} */ compMeta = _this._metadataResolver.getDirectiveMetadata(/** @type {?} */ (dirType));\n if (!compMeta.isComponent) {\n return Promise.resolve(null);\n }\n var /** @type {?} */ ngModule = ngModuleByPipeOrDirective.get(dirType);\n if (!ngModule) {\n throw new Error(\"Internal Error: cannot determine the module for component \" + identifierName(compMeta.type) + \"!\");\n }\n _assertComponent(compMeta);\n // compile styles\n var /** @type {?} */ stylesCompileResults = _this._styleCompiler.compileComponent(compMeta);\n stylesCompileResults.externalStylesheets.forEach(function (compiledStyleSheet) {\n generatedFiles.push(_this._codgenStyles(srcFileUrl, compiledStyleSheet, fileSuffix));\n });\n // compile components\n var /** @type {?} */ compViewVars = _this._compileComponent(compMeta, ngModule, ngModule.transitiveModule.directives, stylesCompileResults.componentStylesheet, fileSuffix, statements);\n exportedVars.push(_this._compileComponentFactory(compMeta, ngModule, fileSuffix, statements), compViewVars.viewClassVar, compViewVars.compRenderTypeVar);\n });\n if (statements.length > 0) {\n var /** @type {?} */ srcModule = this._codegenSourceModule(srcFileUrl, ngfactoryFilePath(srcFileUrl), statements, exportedVars);\n generatedFiles.unshift(srcModule);\n }\n return generatedFiles;\n };\n /**\n * @param {?} srcFileUrl\n * @param {?} directives\n * @param {?} pipes\n * @param {?} ngModules\n * @param {?} injectables\n * @param {?} targetStatements\n * @param {?} targetExportedVars\n * @return {?}\n */\n AotCompiler.prototype._createSummary = function (srcFileUrl, directives, pipes, ngModules, injectables, targetStatements, targetExportedVars) {\n var _this = this;\n var /** @type {?} */ symbolSummaries = this._symbolResolver.getSymbolsOf(srcFileUrl)\n .map(function (symbol) { return _this._symbolResolver.resolveSymbol(symbol); });\n var /** @type {?} */ typeSummaries = ngModules.map(function (ref) { return _this._metadataResolver.getNgModuleSummary(ref); }).concat(directives.map(function (ref) { return _this._metadataResolver.getDirectiveSummary(ref); }), pipes.map(function (ref) { return _this._metadataResolver.getPipeSummary(ref); }), injectables.map(function (ref) { return _this._metadataResolver.getInjectableSummary(ref); }));\n var _a = serializeSummaries(this._summaryResolver, this._symbolResolver, symbolSummaries, typeSummaries), json = _a.json, exportAs = _a.exportAs;\n exportAs.forEach(function (entry) {\n targetStatements.push(variable(entry.exportAs).set(importExpr({ reference: entry.symbol })).toDeclStmt());\n targetExportedVars.push(entry.exportAs);\n });\n return new GeneratedFile(srcFileUrl, summaryFileName(srcFileUrl), json);\n };\n /**\n * @param {?} ngModuleType\n * @param {?} targetStatements\n * @return {?}\n */\n AotCompiler.prototype._compileModule = function (ngModuleType, targetStatements) {\n var /** @type {?} */ ngModule = this._metadataResolver.getNgModuleMetadata(ngModuleType);\n var /** @type {?} */ providers = [];\n if (this._localeId) {\n providers.push({\n token: createIdentifierToken(Identifiers.LOCALE_ID),\n useValue: this._localeId,\n });\n }\n if (this._translationFormat) {\n providers.push({\n token: createIdentifierToken(Identifiers.TRANSLATIONS_FORMAT),\n useValue: this._translationFormat\n });\n }\n var /** @type {?} */ appCompileResult = this._ngModuleCompiler.compile(ngModule, providers);\n targetStatements.push.apply(targetStatements, appCompileResult.statements);\n return appCompileResult.ngModuleFactoryVar;\n };\n /**\n * @param {?} compMeta\n * @param {?} ngModule\n * @param {?} fileSuffix\n * @param {?} targetStatements\n * @return {?}\n */\n AotCompiler.prototype._compileComponentFactory = function (compMeta, ngModule, fileSuffix, targetStatements) {\n var /** @type {?} */ hostType = this._metadataResolver.getHostComponentType(compMeta.type.reference);\n var /** @type {?} */ hostMeta = createHostComponentMeta(hostType, compMeta, this._metadataResolver.getHostComponentViewClass(hostType));\n var /** @type {?} */ hostViewFactoryVar = this._compileComponent(hostMeta, ngModule, [compMeta.type], null, fileSuffix, targetStatements)\n .viewClassVar;\n var /** @type {?} */ compFactoryVar = componentFactoryName(compMeta.type.reference);\n var /** @type {?} */ inputsExprs = [];\n for (var /** @type {?} */ propName in compMeta.inputs) {\n var /** @type {?} */ templateName = compMeta.inputs[propName];\n // Don't quote so that the key gets minified...\n inputsExprs.push(new LiteralMapEntry(propName, literal(templateName), false));\n }\n var /** @type {?} */ outputsExprs = [];\n for (var /** @type {?} */ propName in compMeta.outputs) {\n var /** @type {?} */ templateName = compMeta.outputs[propName];\n // Don't quote so that the key gets minified...\n outputsExprs.push(new LiteralMapEntry(propName, literal(templateName), false));\n }\n targetStatements.push(variable(compFactoryVar)\n .set(importExpr(createIdentifier(Identifiers.createComponentFactory)).callFn([\n literal(compMeta.selector), importExpr(compMeta.type),\n variable(hostViewFactoryVar), new LiteralMapExpr(inputsExprs),\n new LiteralMapExpr(outputsExprs),\n literalArr(compMeta.template.ngContentSelectors.map(function (selector) { return literal(selector); }))\n ]))\n .toDeclStmt(importType(createIdentifier(Identifiers.ComponentFactory), [importType(compMeta.type)], [TypeModifier.Const]), [StmtModifier.Final]));\n return compFactoryVar;\n };\n /**\n * @param {?} compMeta\n * @param {?} ngModule\n * @param {?} directiveIdentifiers\n * @param {?} componentStyles\n * @param {?} fileSuffix\n * @param {?} targetStatements\n * @return {?}\n */\n AotCompiler.prototype._compileComponent = function (compMeta, ngModule, directiveIdentifiers, componentStyles, fileSuffix, targetStatements) {\n var _this = this;\n var /** @type {?} */ directives = directiveIdentifiers.map(function (dir) { return _this._metadataResolver.getDirectiveSummary(dir.reference); });\n var /** @type {?} */ pipes = ngModule.transitiveModule.pipes.map(function (pipe) { return _this._metadataResolver.getPipeSummary(pipe.reference); });\n var _a = this._templateParser.parse(compMeta, compMeta.template.template, directives, pipes, ngModule.schemas, templateSourceUrl(ngModule.type, compMeta, compMeta.template)), parsedTemplate = _a.template, usedPipes = _a.pipes;\n var /** @type {?} */ stylesExpr = componentStyles ? variable(componentStyles.stylesVar) : literalArr([]);\n var /** @type {?} */ viewResult = this._viewCompiler.compileComponent(compMeta, parsedTemplate, stylesExpr, usedPipes);\n if (componentStyles) {\n targetStatements.push.apply(targetStatements, _resolveStyleStatements(this._symbolResolver, componentStyles, fileSuffix));\n }\n targetStatements.push.apply(targetStatements, viewResult.statements);\n return { viewClassVar: viewResult.viewClassVar, compRenderTypeVar: viewResult.rendererTypeVar };\n };\n /**\n * @param {?} fileUrl\n * @param {?} stylesCompileResult\n * @param {?} fileSuffix\n * @return {?}\n */\n AotCompiler.prototype._codgenStyles = function (fileUrl, stylesCompileResult, fileSuffix) {\n _resolveStyleStatements(this._symbolResolver, stylesCompileResult, fileSuffix);\n return this._codegenSourceModule(fileUrl, _stylesModuleUrl(stylesCompileResult.meta.moduleUrl, stylesCompileResult.isShimmed, fileSuffix), stylesCompileResult.statements, [stylesCompileResult.stylesVar]);\n };\n /**\n * @param {?} srcFileUrl\n * @param {?} genFileUrl\n * @param {?} statements\n * @param {?} exportedVars\n * @return {?}\n */\n AotCompiler.prototype._codegenSourceModule = function (srcFileUrl, genFileUrl, statements, exportedVars) {\n return new GeneratedFile(srcFileUrl, genFileUrl, this._outputEmitter.emitStatements(sourceUrl(srcFileUrl), genFileUrl, statements, exportedVars, this._genFilePreamble));\n };\n return AotCompiler;\n}());\n/**\n * @param {?} reflector\n * @param {?} compileResult\n * @param {?} fileSuffix\n * @return {?}\n */\nfunction _resolveStyleStatements(reflector, compileResult, fileSuffix) {\n compileResult.dependencies.forEach(function (dep) {\n dep.valuePlaceholder.reference = reflector.getStaticSymbol(_stylesModuleUrl(dep.moduleUrl, dep.isShimmed, fileSuffix), dep.name);\n });\n return compileResult.statements;\n}\n/**\n * @param {?} stylesheetUrl\n * @param {?} shim\n * @param {?} suffix\n * @return {?}\n */\nfunction _stylesModuleUrl(stylesheetUrl, shim, suffix) {\n return \"\" + stylesheetUrl + (shim ? '.shim' : '') + \".ngstyle\" + suffix;\n}\n/**\n * @param {?} meta\n * @return {?}\n */\nfunction _assertComponent(meta) {\n if (!meta.isComponent) {\n throw new Error(\"Could not compile '\" + identifierName(meta.type) + \"' because it is not a component.\");\n }\n}\n/**\n * @param {?} programStaticSymbols\n * @param {?} host\n * @param {?} metadataResolver\n * @return {?}\n */\nfunction analyzeNgModules(programStaticSymbols, host, metadataResolver) {\n var _a = _createNgModules(programStaticSymbols, host, metadataResolver), ngModules = _a.ngModules, symbolsMissingModule = _a.symbolsMissingModule;\n return _analyzeNgModules(programStaticSymbols, ngModules, symbolsMissingModule, metadataResolver);\n}\n/**\n * @param {?} programStaticSymbols\n * @param {?} host\n * @param {?} metadataResolver\n * @return {?}\n */\nfunction analyzeAndValidateNgModules(programStaticSymbols, host, metadataResolver) {\n var /** @type {?} */ result = analyzeNgModules(programStaticSymbols, host, metadataResolver);\n if (result.symbolsMissingModule && result.symbolsMissingModule.length) {\n var /** @type {?} */ messages = result.symbolsMissingModule.map(function (s) { return \"Cannot determine the module for class \" + s.name + \" in \" + s.filePath + \"! Add \" + s.name + \" to the NgModule to fix it.\"; });\n throw syntaxError(messages.join('\\n'));\n }\n return result;\n}\n/**\n * @param {?} programSymbols\n * @param {?} ngModuleMetas\n * @param {?} symbolsMissingModule\n * @param {?} metadataResolver\n * @return {?}\n */\nfunction _analyzeNgModules(programSymbols, ngModuleMetas, symbolsMissingModule, metadataResolver) {\n var /** @type {?} */ moduleMetasByRef = new Map();\n ngModuleMetas.forEach(function (ngModule) { return moduleMetasByRef.set(ngModule.type.reference, ngModule); });\n var /** @type {?} */ ngModuleByPipeOrDirective = new Map();\n var /** @type {?} */ ngModulesByFile = new Map();\n var /** @type {?} */ ngDirectivesByFile = new Map();\n var /** @type {?} */ ngPipesByFile = new Map();\n var /** @type {?} */ ngInjectablesByFile = new Map();\n var /** @type {?} */ filePaths = new Set();\n // Make sure we produce an analyzed file for each input file\n programSymbols.forEach(function (symbol) {\n var /** @type {?} */ filePath = symbol.filePath;\n filePaths.add(filePath);\n if (metadataResolver.isInjectable(symbol)) {\n ngInjectablesByFile.set(filePath, (ngInjectablesByFile.get(filePath) || []).concat(symbol));\n }\n });\n // Looping over all modules to construct:\n // - a map from file to modules `ngModulesByFile`,\n // - a map from file to directives `ngDirectivesByFile`,\n // - a map from file to pipes `ngPipesByFile`,\n // - a map from directive/pipe to module `ngModuleByPipeOrDirective`.\n ngModuleMetas.forEach(function (ngModuleMeta) {\n var /** @type {?} */ srcFileUrl = ngModuleMeta.type.reference.filePath;\n filePaths.add(srcFileUrl);\n ngModulesByFile.set(srcFileUrl, (ngModulesByFile.get(srcFileUrl) || []).concat(ngModuleMeta.type.reference));\n ngModuleMeta.declaredDirectives.forEach(function (dirIdentifier) {\n var /** @type {?} */ fileUrl = dirIdentifier.reference.filePath;\n filePaths.add(fileUrl);\n ngDirectivesByFile.set(fileUrl, (ngDirectivesByFile.get(fileUrl) || []).concat(dirIdentifier.reference));\n ngModuleByPipeOrDirective.set(dirIdentifier.reference, ngModuleMeta);\n });\n ngModuleMeta.declaredPipes.forEach(function (pipeIdentifier) {\n var /** @type {?} */ fileUrl = pipeIdentifier.reference.filePath;\n filePaths.add(fileUrl);\n ngPipesByFile.set(fileUrl, (ngPipesByFile.get(fileUrl) || []).concat(pipeIdentifier.reference));\n ngModuleByPipeOrDirective.set(pipeIdentifier.reference, ngModuleMeta);\n });\n });\n var /** @type {?} */ files = [];\n filePaths.forEach(function (srcUrl) {\n var /** @type {?} */ directives = ngDirectivesByFile.get(srcUrl) || [];\n var /** @type {?} */ pipes = ngPipesByFile.get(srcUrl) || [];\n var /** @type {?} */ ngModules = ngModulesByFile.get(srcUrl) || [];\n var /** @type {?} */ injectables = ngInjectablesByFile.get(srcUrl) || [];\n files.push({ srcUrl: srcUrl, directives: directives, pipes: pipes, ngModules: ngModules, injectables: injectables });\n });\n return {\n // map directive/pipe to module\n ngModuleByPipeOrDirective: ngModuleByPipeOrDirective,\n // list modules and directives for every source file\n files: files,\n ngModules: ngModuleMetas, symbolsMissingModule: symbolsMissingModule\n };\n}\n/**\n * @param {?} staticSymbolResolver\n * @param {?} files\n * @param {?} host\n * @return {?}\n */\nfunction extractProgramSymbols(staticSymbolResolver, files, host) {\n var /** @type {?} */ staticSymbols = [];\n files.filter(function (fileName) { return host.isSourceFile(fileName); }).forEach(function (sourceFile) {\n staticSymbolResolver.getSymbolsOf(sourceFile).forEach(function (symbol) {\n var /** @type {?} */ resolvedSymbol = staticSymbolResolver.resolveSymbol(symbol);\n var /** @type {?} */ symbolMeta = resolvedSymbol.metadata;\n if (symbolMeta) {\n if (symbolMeta.__symbolic != 'error') {\n // Ignore symbols that are only included to record error information.\n staticSymbols.push(resolvedSymbol.symbol);\n }\n }\n });\n });\n return staticSymbols;\n}\n/**\n * @param {?} programStaticSymbols\n * @param {?} host\n * @param {?} metadataResolver\n * @return {?}\n */\nfunction _createNgModules(programStaticSymbols, host, metadataResolver) {\n var /** @type {?} */ ngModules = new Map();\n var /** @type {?} */ programPipesAndDirectives = [];\n var /** @type {?} */ ngModulePipesAndDirective = new Set();\n var /** @type {?} */ addNgModule = function (staticSymbol) {\n if (ngModules.has(staticSymbol) || !host.isSourceFile(staticSymbol.filePath)) {\n return false;\n }\n var /** @type {?} */ ngModule = metadataResolver.getNgModuleMetadata(staticSymbol, false);\n if (ngModule) {\n ngModules.set(ngModule.type.reference, ngModule);\n ngModule.declaredDirectives.forEach(function (dir) { return ngModulePipesAndDirective.add(dir.reference); });\n ngModule.declaredPipes.forEach(function (pipe) { return ngModulePipesAndDirective.add(pipe.reference); });\n // For every input module add the list of transitively included modules\n ngModule.transitiveModule.modules.forEach(function (modMeta) { return addNgModule(modMeta.reference); });\n }\n return !!ngModule;\n };\n programStaticSymbols.forEach(function (staticSymbol) {\n if (!addNgModule(staticSymbol) &&\n (metadataResolver.isDirective(staticSymbol) || metadataResolver.isPipe(staticSymbol))) {\n programPipesAndDirectives.push(staticSymbol);\n }\n });\n // Throw an error if any of the program pipe or directives is not declared by a module\n var /** @type {?} */ symbolsMissingModule = programPipesAndDirectives.filter(function (s) { return !ngModulePipesAndDirective.has(s); });\n return { ngModules: Array.from(ngModules.values()), symbolsMissingModule: symbolsMissingModule };\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 */\nvar StaticAndDynamicReflectionCapabilities = (function () {\n /**\n * @param {?} staticDelegate\n */\n function StaticAndDynamicReflectionCapabilities(staticDelegate) {\n this.staticDelegate = staticDelegate;\n this.dynamicDelegate = new ɵReflectionCapabilities();\n }\n /**\n * @param {?} staticDelegate\n * @return {?}\n */\n StaticAndDynamicReflectionCapabilities.install = function (staticDelegate) {\n ɵreflector.updateCapabilities(new StaticAndDynamicReflectionCapabilities(staticDelegate));\n };\n /**\n * @return {?}\n */\n StaticAndDynamicReflectionCapabilities.prototype.isReflectionEnabled = function () { return true; };\n /**\n * @param {?} type\n * @return {?}\n */\n StaticAndDynamicReflectionCapabilities.prototype.factory = function (type) { return this.dynamicDelegate.factory(type); };\n /**\n * @param {?} type\n * @param {?} lcProperty\n * @return {?}\n */\n StaticAndDynamicReflectionCapabilities.prototype.hasLifecycleHook = function (type, lcProperty) {\n return isStaticType(type) ? this.staticDelegate.hasLifecycleHook(type, lcProperty) :\n this.dynamicDelegate.hasLifecycleHook(type, lcProperty);\n };\n /**\n * @param {?} type\n * @return {?}\n */\n StaticAndDynamicReflectionCapabilities.prototype.parameters = function (type) {\n return isStaticType(type) ? this.staticDelegate.parameters(type) :\n this.dynamicDelegate.parameters(type);\n };\n /**\n * @param {?} type\n * @return {?}\n */\n StaticAndDynamicReflectionCapabilities.prototype.annotations = function (type) {\n return isStaticType(type) ? this.staticDelegate.annotations(type) :\n this.dynamicDelegate.annotations(type);\n };\n /**\n * @param {?} typeOrFunc\n * @return {?}\n */\n StaticAndDynamicReflectionCapabilities.prototype.propMetadata = function (typeOrFunc) {\n return isStaticType(typeOrFunc) ? this.staticDelegate.propMetadata(typeOrFunc) :\n this.dynamicDelegate.propMetadata(typeOrFunc);\n };\n /**\n * @param {?} name\n * @return {?}\n */\n StaticAndDynamicReflectionCapabilities.prototype.getter = function (name) { return this.dynamicDelegate.getter(name); };\n /**\n * @param {?} name\n * @return {?}\n */\n StaticAndDynamicReflectionCapabilities.prototype.setter = function (name) { return this.dynamicDelegate.setter(name); };\n /**\n * @param {?} name\n * @return {?}\n */\n StaticAndDynamicReflectionCapabilities.prototype.method = function (name) { return this.dynamicDelegate.method(name); };\n /**\n * @param {?} type\n * @return {?}\n */\n StaticAndDynamicReflectionCapabilities.prototype.importUri = function (type) { return this.staticDelegate.importUri(type); };\n /**\n * @param {?} type\n * @return {?}\n */\n StaticAndDynamicReflectionCapabilities.prototype.resourceUri = function (type) { return this.staticDelegate.resourceUri(type); };\n /**\n * @param {?} name\n * @param {?} moduleUrl\n * @param {?} members\n * @param {?} runtime\n * @return {?}\n */\n StaticAndDynamicReflectionCapabilities.prototype.resolveIdentifier = function (name, moduleUrl, members, runtime) {\n return this.staticDelegate.resolveIdentifier(name, moduleUrl, members);\n };\n /**\n * @param {?} enumIdentifier\n * @param {?} name\n * @return {?}\n */\n StaticAndDynamicReflectionCapabilities.prototype.resolveEnum = function (enumIdentifier, name) {\n if (isStaticType(enumIdentifier)) {\n return this.staticDelegate.resolveEnum(enumIdentifier, name);\n }\n else {\n return null;\n }\n };\n return StaticAndDynamicReflectionCapabilities;\n}());\n/**\n * @param {?} type\n * @return {?}\n */\nfunction isStaticType(type) {\n return typeof type === 'object' && type.name && type.filePath;\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 */\nvar ANGULAR_CORE = '@angular/core';\nvar HIDDEN_KEY = /^\\$.*\\$$/;\nvar IGNORE = {\n __symbolic: 'ignore'\n};\n/**\n * @param {?} value\n * @return {?}\n */\nfunction shouldIgnore(value) {\n return value && value.__symbolic == 'ignore';\n}\n/**\n * A static reflector implements enough of the Reflector API that is necessary to compile\n * templates statically.\n */\nvar StaticReflector = (function () {\n /**\n * @param {?} summaryResolver\n * @param {?} symbolResolver\n * @param {?=} knownMetadataClasses\n * @param {?=} knownMetadataFunctions\n * @param {?=} errorRecorder\n */\n function StaticReflector(summaryResolver, symbolResolver, knownMetadataClasses, knownMetadataFunctions, errorRecorder) {\n if (knownMetadataClasses === void 0) { knownMetadataClasses = []; }\n if (knownMetadataFunctions === void 0) { knownMetadataFunctions = []; }\n var _this = this;\n this.summaryResolver = summaryResolver;\n this.symbolResolver = symbolResolver;\n this.errorRecorder = errorRecorder;\n this.annotationCache = new Map();\n this.propertyCache = new Map();\n this.parameterCache = new Map();\n this.methodCache = new Map();\n this.conversionMap = new Map();\n this.annotationForParentClassWithSummaryKind = new Map();\n this.annotationNames = new Map();\n this.initializeConversionMap();\n knownMetadataClasses.forEach(function (kc) { return _this._registerDecoratorOrConstructor(_this.getStaticSymbol(kc.filePath, kc.name), kc.ctor); });\n knownMetadataFunctions.forEach(function (kf) { return _this._registerFunction(_this.getStaticSymbol(kf.filePath, kf.name), kf.fn); });\n this.annotationForParentClassWithSummaryKind.set(CompileSummaryKind.Directive, [Directive, Component]);\n this.annotationForParentClassWithSummaryKind.set(CompileSummaryKind.Pipe, [Pipe]);\n this.annotationForParentClassWithSummaryKind.set(CompileSummaryKind.NgModule, [NgModule]);\n this.annotationForParentClassWithSummaryKind.set(CompileSummaryKind.Injectable, [Injectable, Pipe, Directive, Component, NgModule]);\n this.annotationNames.set(Directive, 'Directive');\n this.annotationNames.set(Component, 'Component');\n this.annotationNames.set(Pipe, 'Pipe');\n this.annotationNames.set(NgModule, 'NgModule');\n this.annotationNames.set(Injectable, 'Injectable');\n }\n /**\n * @param {?} typeOrFunc\n * @return {?}\n */\n StaticReflector.prototype.importUri = function (typeOrFunc) {\n var /** @type {?} */ staticSymbol = this.findSymbolDeclaration(typeOrFunc);\n return staticSymbol ? staticSymbol.filePath : null;\n };\n /**\n * @param {?} typeOrFunc\n * @return {?}\n */\n StaticReflector.prototype.resourceUri = function (typeOrFunc) {\n var /** @type {?} */ staticSymbol = this.findSymbolDeclaration(typeOrFunc);\n return this.symbolResolver.getResourcePath(staticSymbol);\n };\n /**\n * @param {?} name\n * @param {?} moduleUrl\n * @param {?} members\n * @return {?}\n */\n StaticReflector.prototype.resolveIdentifier = function (name, moduleUrl, members) {\n var /** @type {?} */ importSymbol = this.getStaticSymbol(moduleUrl, name);\n var /** @type {?} */ rootSymbol = this.findDeclaration(moduleUrl, name);\n if (importSymbol != rootSymbol) {\n this.symbolResolver.recordImportAs(rootSymbol, importSymbol);\n }\n if (members && members.length) {\n return this.getStaticSymbol(rootSymbol.filePath, rootSymbol.name, members);\n }\n return rootSymbol;\n };\n /**\n * @param {?} moduleUrl\n * @param {?} name\n * @param {?=} containingFile\n * @return {?}\n */\n StaticReflector.prototype.findDeclaration = function (moduleUrl, name, containingFile) {\n return this.findSymbolDeclaration(this.symbolResolver.getSymbolByModule(moduleUrl, name, containingFile));\n };\n /**\n * @param {?} symbol\n * @return {?}\n */\n StaticReflector.prototype.findSymbolDeclaration = function (symbol) {\n var /** @type {?} */ resolvedSymbol = this.symbolResolver.resolveSymbol(symbol);\n if (resolvedSymbol && resolvedSymbol.metadata instanceof StaticSymbol) {\n return this.findSymbolDeclaration(resolvedSymbol.metadata);\n }\n else {\n return symbol;\n }\n };\n /**\n * @param {?} enumIdentifier\n * @param {?} name\n * @return {?}\n */\n StaticReflector.prototype.resolveEnum = function (enumIdentifier, name) {\n var /** @type {?} */ staticSymbol = enumIdentifier;\n var /** @type {?} */ members = (staticSymbol.members || []).concat(name);\n return this.getStaticSymbol(staticSymbol.filePath, staticSymbol.name, members);\n };\n /**\n * @param {?} type\n * @return {?}\n */\n StaticReflector.prototype.annotations = function (type) {\n var _this = this;\n var /** @type {?} */ annotations = this.annotationCache.get(type);\n if (!annotations) {\n annotations = [];\n var /** @type {?} */ classMetadata = this.getTypeMetadata(type);\n var /** @type {?} */ parentType = this.findParentType(type, classMetadata);\n if (parentType) {\n var /** @type {?} */ parentAnnotations = this.annotations(parentType);\n annotations.push.apply(annotations, parentAnnotations);\n }\n var /** @type {?} */ ownAnnotations_1 = [];\n if (classMetadata['decorators']) {\n ownAnnotations_1 = this.simplify(type, classMetadata['decorators']);\n annotations.push.apply(annotations, ownAnnotations_1);\n }\n if (parentType && !this.summaryResolver.isLibraryFile(type.filePath) &&\n this.summaryResolver.isLibraryFile(parentType.filePath)) {\n var /** @type {?} */ summary = this.summaryResolver.resolveSummary(parentType);\n if (summary && summary.type) {\n var /** @type {?} */ requiredAnnotationTypes = this.annotationForParentClassWithSummaryKind.get(summary.type.summaryKind);\n var /** @type {?} */ typeHasRequiredAnnotation = requiredAnnotationTypes.some(function (requiredType) { return ownAnnotations_1.some(function (ann) { return ann instanceof requiredType; }); });\n if (!typeHasRequiredAnnotation) {\n this.reportError(syntaxError(\"Class \" + type.name + \" in \" + type.filePath + \" extends from a \" + CompileSummaryKind[summary.type.summaryKind] + \" in another compilation unit without duplicating the decorator. \" +\n (\"Please add a \" + requiredAnnotationTypes.map(function (type) { return _this.annotationNames.get(type); }).join(' or ') + \" decorator to the class.\")), type);\n }\n }\n }\n this.annotationCache.set(type, annotations.filter(function (ann) { return !!ann; }));\n }\n return annotations;\n };\n /**\n * @param {?} type\n * @return {?}\n */\n StaticReflector.prototype.propMetadata = function (type) {\n var _this = this;\n var /** @type {?} */ propMetadata = this.propertyCache.get(type);\n if (!propMetadata) {\n var /** @type {?} */ classMetadata = this.getTypeMetadata(type);\n propMetadata = {};\n var /** @type {?} */ parentType = this.findParentType(type, classMetadata);\n if (parentType) {\n var /** @type {?} */ parentPropMetadata_1 = this.propMetadata(parentType);\n Object.keys(parentPropMetadata_1).forEach(function (parentProp) {\n propMetadata[parentProp] = parentPropMetadata_1[parentProp];\n });\n }\n var /** @type {?} */ members_1 = classMetadata['members'] || {};\n Object.keys(members_1).forEach(function (propName) {\n var /** @type {?} */ propData = members_1[propName];\n var /** @type {?} */ prop = ((propData))\n .find(function (a) { return a['__symbolic'] == 'property' || a['__symbolic'] == 'method'; });\n var /** @type {?} */ decorators = [];\n if (propMetadata[propName]) {\n decorators.push.apply(decorators, propMetadata[propName]);\n }\n propMetadata[propName] = decorators;\n if (prop && prop['decorators']) {\n decorators.push.apply(decorators, _this.simplify(type, prop['decorators']));\n }\n });\n this.propertyCache.set(type, propMetadata);\n }\n return propMetadata;\n };\n /**\n * @param {?} type\n * @return {?}\n */\n StaticReflector.prototype.parameters = function (type) {\n if (!(type instanceof StaticSymbol)) {\n this.reportError(new Error(\"parameters received \" + JSON.stringify(type) + \" which is not a StaticSymbol\"), type);\n return [];\n }\n try {\n var /** @type {?} */ parameters_1 = this.parameterCache.get(type);\n if (!parameters_1) {\n var /** @type {?} */ classMetadata = this.getTypeMetadata(type);\n var /** @type {?} */ parentType = this.findParentType(type, classMetadata);\n var /** @type {?} */ members = classMetadata ? classMetadata['members'] : null;\n var /** @type {?} */ ctorData = members ? members['__ctor__'] : null;\n if (ctorData) {\n var /** @type {?} */ ctor = ((ctorData)).find(function (a) { return a['__symbolic'] == 'constructor'; });\n var /** @type {?} */ parameterTypes = (this.simplify(type, ctor['parameters'] || []));\n var /** @type {?} */ parameterDecorators_1 = (this.simplify(type, ctor['parameterDecorators'] || []));\n parameters_1 = [];\n parameterTypes.forEach(function (paramType, index) {\n var /** @type {?} */ nestedResult = [];\n if (paramType) {\n nestedResult.push(paramType);\n }\n var /** @type {?} */ decorators = parameterDecorators_1 ? parameterDecorators_1[index] : null;\n if (decorators) {\n nestedResult.push.apply(nestedResult, decorators);\n }\n parameters_1.push(nestedResult);\n });\n }\n else if (parentType) {\n parameters_1 = this.parameters(parentType);\n }\n if (!parameters_1) {\n parameters_1 = [];\n }\n this.parameterCache.set(type, parameters_1);\n }\n return parameters_1;\n }\n catch (e) {\n console.error(\"Failed on type \" + JSON.stringify(type) + \" with error \" + e);\n throw e;\n }\n };\n /**\n * @param {?} type\n * @return {?}\n */\n StaticReflector.prototype._methodNames = function (type) {\n var /** @type {?} */ methodNames = this.methodCache.get(type);\n if (!methodNames) {\n var /** @type {?} */ classMetadata = this.getTypeMetadata(type);\n methodNames = {};\n var /** @type {?} */ parentType = this.findParentType(type, classMetadata);\n if (parentType) {\n var /** @type {?} */ parentMethodNames_1 = this._methodNames(parentType);\n Object.keys(parentMethodNames_1).forEach(function (parentProp) {\n methodNames[parentProp] = parentMethodNames_1[parentProp];\n });\n }\n var /** @type {?} */ members_2 = classMetadata['members'] || {};\n Object.keys(members_2).forEach(function (propName) {\n var /** @type {?} */ propData = members_2[propName];\n var /** @type {?} */ isMethod = ((propData)).some(function (a) { return a['__symbolic'] == 'method'; });\n methodNames[propName] = methodNames[propName] || isMethod;\n });\n this.methodCache.set(type, methodNames);\n }\n return methodNames;\n };\n /**\n * @param {?} type\n * @param {?} classMetadata\n * @return {?}\n */\n StaticReflector.prototype.findParentType = function (type, classMetadata) {\n var /** @type {?} */ parentType = this.trySimplify(type, classMetadata['extends']);\n if (parentType instanceof StaticSymbol) {\n return parentType;\n }\n };\n /**\n * @param {?} type\n * @param {?} lcProperty\n * @return {?}\n */\n StaticReflector.prototype.hasLifecycleHook = function (type, lcProperty) {\n if (!(type instanceof StaticSymbol)) {\n this.reportError(new Error(\"hasLifecycleHook received \" + JSON.stringify(type) + \" which is not a StaticSymbol\"), type);\n }\n try {\n return !!this._methodNames(type)[lcProperty];\n }\n catch (e) {\n console.error(\"Failed on type \" + JSON.stringify(type) + \" with error \" + e);\n throw e;\n }\n };\n /**\n * @param {?} type\n * @param {?} ctor\n * @return {?}\n */\n StaticReflector.prototype._registerDecoratorOrConstructor = function (type, ctor) {\n this.conversionMap.set(type, function (context, args) { return new (ctor.bind.apply(ctor, [void 0].concat(args)))(); });\n };\n /**\n * @param {?} type\n * @param {?} fn\n * @return {?}\n */\n StaticReflector.prototype._registerFunction = function (type, fn) {\n this.conversionMap.set(type, function (context, args) { return fn.apply(undefined, args); });\n };\n /**\n * @return {?}\n */\n StaticReflector.prototype.initializeConversionMap = function () {\n this.injectionToken = this.findDeclaration(ANGULAR_CORE, 'InjectionToken');\n this.opaqueToken = this.findDeclaration(ANGULAR_CORE, 'OpaqueToken');\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Host'), Host);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Injectable'), Injectable);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Self'), Self);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'SkipSelf'), SkipSelf);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Inject'), Inject);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Optional'), Optional);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Attribute'), Attribute);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'ContentChild'), ContentChild);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'ContentChildren'), ContentChildren);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'ViewChild'), ViewChild);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'ViewChildren'), ViewChildren);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Input'), Input);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Output'), Output);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Pipe'), Pipe);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'HostBinding'), HostBinding);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'HostListener'), HostListener);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Directive'), Directive);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Component'), Component);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'NgModule'), NgModule);\n // Note: Some metadata classes can be used directly with Provider.deps.\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Host'), Host);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Self'), Self);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'SkipSelf'), SkipSelf);\n this._registerDecoratorOrConstructor(this.findDeclaration(ANGULAR_CORE, 'Optional'), Optional);\n this._registerFunction(this.findDeclaration(ANGULAR_CORE, 'trigger'), trigger);\n this._registerFunction(this.findDeclaration(ANGULAR_CORE, 'state'), state);\n this._registerFunction(this.findDeclaration(ANGULAR_CORE, 'transition'), transition);\n this._registerFunction(this.findDeclaration(ANGULAR_CORE, 'style'), style);\n this._registerFunction(this.findDeclaration(ANGULAR_CORE, 'animate'), animate);\n this._registerFunction(this.findDeclaration(ANGULAR_CORE, 'keyframes'), keyframes);\n this._registerFunction(this.findDeclaration(ANGULAR_CORE, 'sequence'), sequence);\n this._registerFunction(this.findDeclaration(ANGULAR_CORE, 'group'), group);\n };\n /**\n * getStaticSymbol produces a Type whose metadata is known but whose implementation is not loaded.\n * All types passed to the StaticResolver should be pseudo-types returned by this method.\n *\n * @param {?} declarationFile the absolute path of the file where the symbol is declared\n * @param {?} name the name of the type.\n * @param {?=} members\n * @return {?}\n */\n StaticReflector.prototype.getStaticSymbol = function (declarationFile, name, members) {\n return this.symbolResolver.getStaticSymbol(declarationFile, name, members);\n };\n /**\n * @param {?} error\n * @param {?} context\n * @param {?=} path\n * @return {?}\n */\n StaticReflector.prototype.reportError = function (error, context, path) {\n if (this.errorRecorder) {\n this.errorRecorder(error, (context && context.filePath) || path);\n }\n else {\n throw error;\n }\n };\n /**\n * Simplify but discard any errors\n * @param {?} context\n * @param {?} value\n * @return {?}\n */\n StaticReflector.prototype.trySimplify = function (context, value) {\n var /** @type {?} */ originalRecorder = this.errorRecorder;\n this.errorRecorder = function (error, fileName) { };\n var /** @type {?} */ result = this.simplify(context, value);\n this.errorRecorder = originalRecorder;\n return result;\n };\n /**\n * \\@internal\n * @param {?} context\n * @param {?} value\n * @return {?}\n */\n StaticReflector.prototype.simplify = function (context, value) {\n var _this = this;\n var /** @type {?} */ self = this;\n var /** @type {?} */ scope = BindingScope.empty;\n var /** @type {?} */ calling = new Map();\n /**\n * @param {?} context\n * @param {?} value\n * @param {?} depth\n * @return {?}\n */\n function simplifyInContext(context, value, depth) {\n /**\n * @param {?} staticSymbol\n * @return {?}\n */\n function resolveReferenceValue(staticSymbol) {\n var /** @type {?} */ resolvedSymbol = self.symbolResolver.resolveSymbol(staticSymbol);\n return resolvedSymbol ? resolvedSymbol.metadata : null;\n }\n /**\n * @param {?} functionSymbol\n * @param {?} targetFunction\n * @param {?} args\n * @return {?}\n */\n function simplifyCall(functionSymbol, targetFunction, args) {\n if (targetFunction && targetFunction['__symbolic'] == 'function') {\n if (calling.get(functionSymbol)) {\n throw new Error('Recursion not supported');\n }\n calling.set(functionSymbol, true);\n try {\n var /** @type {?} */ value_1 = targetFunction['value'];\n if (value_1 && (depth != 0 || value_1.__symbolic != 'error')) {\n var /** @type {?} */ parameters = targetFunction['parameters'];\n var /** @type {?} */ defaults = targetFunction.defaults;\n args = args.map(function (arg) { return simplifyInContext(context, arg, depth + 1); })\n .map(function (arg) { return shouldIgnore(arg) ? undefined : arg; });\n if (defaults && defaults.length > args.length) {\n args.push.apply(args, defaults.slice(args.length).map(function (value) { return simplify(value); }));\n }\n var /** @type {?} */ functionScope = BindingScope.build();\n for (var /** @type {?} */ i = 0; i < parameters.length; i++) {\n functionScope.define(parameters[i], args[i]);\n }\n var /** @type {?} */ oldScope = scope;\n var /** @type {?} */ result_1;\n try {\n scope = functionScope.done();\n result_1 = simplifyInContext(functionSymbol, value_1, depth + 1);\n }\n finally {\n scope = oldScope;\n }\n return result_1;\n }\n }\n finally {\n calling.delete(functionSymbol);\n }\n }\n if (depth === 0) {\n // If depth is 0 we are evaluating the top level expression that is describing element\n // decorator. In this case, it is a decorator we don't understand, such as a custom\n // non-angular decorator, and we should just ignore it.\n return IGNORE;\n }\n return simplify({ __symbolic: 'error', message: 'Function call not supported', context: functionSymbol });\n }\n /**\n * @param {?} expression\n * @return {?}\n */\n function simplify(expression) {\n if (isPrimitive(expression)) {\n return expression;\n }\n if (expression instanceof Array) {\n var /** @type {?} */ result_2 = [];\n for (var _i = 0, _a = ((expression)); _i < _a.length; _i++) {\n var item = _a[_i];\n // Check for a spread expression\n if (item && item.__symbolic === 'spread') {\n var /** @type {?} */ spreadArray = simplify(item.expression);\n if (Array.isArray(spreadArray)) {\n for (var _b = 0, spreadArray_1 = spreadArray; _b < spreadArray_1.length; _b++) {\n var spreadItem = spreadArray_1[_b];\n result_2.push(spreadItem);\n }\n continue;\n }\n }\n var /** @type {?} */ value_2 = simplify(item);\n if (shouldIgnore(value_2)) {\n continue;\n }\n result_2.push(value_2);\n }\n return result_2;\n }\n if (expression instanceof StaticSymbol) {\n // Stop simplification at builtin symbols\n if (expression === self.injectionToken || expression === self.opaqueToken ||\n self.conversionMap.has(expression)) {\n return expression;\n }\n else {\n var /** @type {?} */ staticSymbol = expression;\n var /** @type {?} */ declarationValue = resolveReferenceValue(staticSymbol);\n if (declarationValue) {\n return simplifyInContext(staticSymbol, declarationValue, depth + 1);\n }\n else {\n return staticSymbol;\n }\n }\n }\n if (expression) {\n if (expression['__symbolic']) {\n var /** @type {?} */ staticSymbol = void 0;\n switch (expression['__symbolic']) {\n case 'binop':\n var /** @type {?} */ left = simplify(expression['left']);\n if (shouldIgnore(left))\n return left;\n var /** @type {?} */ right = simplify(expression['right']);\n if (shouldIgnore(right))\n return right;\n switch (expression['operator']) {\n case '&&':\n return left && right;\n case '||':\n return left || right;\n case '|':\n return left | right;\n case '^':\n return left ^ right;\n case '&':\n return left & right;\n case '==':\n return left == right;\n case '!=':\n return left != right;\n case '===':\n return left === right;\n case '!==':\n return left !== right;\n case '<':\n return left < right;\n case '>':\n return left > right;\n case '<=':\n return left <= right;\n case '>=':\n return left >= right;\n case '<<':\n return left << right;\n case '>>':\n return left >> right;\n case '+':\n return left + right;\n case '-':\n return left - right;\n case '*':\n return left * right;\n case '/':\n return left / right;\n case '%':\n return left % right;\n }\n return null;\n case 'if':\n var /** @type {?} */ condition = simplify(expression['condition']);\n return condition ? simplify(expression['thenExpression']) :\n simplify(expression['elseExpression']);\n case 'pre':\n var /** @type {?} */ operand = simplify(expression['operand']);\n if (shouldIgnore(operand))\n return operand;\n switch (expression['operator']) {\n case '+':\n return operand;\n case '-':\n return -operand;\n case '!':\n return !operand;\n case '~':\n return ~operand;\n }\n return null;\n case 'index':\n var /** @type {?} */ indexTarget = simplify(expression['expression']);\n var /** @type {?} */ index = simplify(expression['index']);\n if (indexTarget && isPrimitive(index))\n return indexTarget[index];\n return null;\n case 'select':\n var /** @type {?} */ member = expression['member'];\n var /** @type {?} */ selectContext = context;\n var /** @type {?} */ selectTarget = simplify(expression['expression']);\n if (selectTarget instanceof StaticSymbol) {\n var /** @type {?} */ members = selectTarget.members.concat(member);\n selectContext =\n self.getStaticSymbol(selectTarget.filePath, selectTarget.name, members);\n var /** @type {?} */ declarationValue = resolveReferenceValue(selectContext);\n if (declarationValue) {\n return simplifyInContext(selectContext, declarationValue, depth + 1);\n }\n else {\n return selectContext;\n }\n }\n if (selectTarget && isPrimitive(member))\n return simplifyInContext(selectContext, selectTarget[member], depth + 1);\n return null;\n case 'reference':\n // Note: This only has to deal with variable references,\n // as symbol references have been converted into StaticSymbols already\n // in the StaticSymbolResolver!\n var /** @type {?} */ name = expression['name'];\n var /** @type {?} */ localValue = scope.resolve(name);\n if (localValue != BindingScope.missing) {\n return localValue;\n }\n break;\n case 'class':\n return context;\n case 'function':\n return context;\n case 'new':\n case 'call':\n // Determine if the function is a built-in conversion\n staticSymbol = simplifyInContext(context, expression['expression'], depth + 1);\n if (staticSymbol instanceof StaticSymbol) {\n if (staticSymbol === self.injectionToken || staticSymbol === self.opaqueToken) {\n // if somebody calls new InjectionToken, don't create an InjectionToken,\n // but rather return the symbol to which the InjectionToken is assigned to.\n return context;\n }\n var /** @type {?} */ argExpressions = expression['arguments'] || [];\n var /** @type {?} */ converter = self.conversionMap.get(staticSymbol);\n if (converter) {\n var /** @type {?} */ args = argExpressions.map(function (arg) { return simplifyInContext(context, arg, depth + 1); })\n .map(function (arg) { return shouldIgnore(arg) ? undefined : arg; });\n return converter(context, args);\n }\n else {\n // Determine if the function is one we can simplify.\n var /** @type {?} */ targetFunction = resolveReferenceValue(staticSymbol);\n return simplifyCall(staticSymbol, targetFunction, argExpressions);\n }\n }\n return IGNORE;\n case 'error':\n var /** @type {?} */ message = produceErrorMessage(expression);\n if (expression['line']) {\n message =\n message + \" (position \" + (expression['line'] + 1) + \":\" + (expression['character'] + 1) + \" in the original .ts file)\";\n self.reportError(positionalError(message, context.filePath, expression['line'], expression['character']), context);\n }\n else {\n self.reportError(new Error(message), context);\n }\n return IGNORE;\n case 'ignore':\n return expression;\n }\n return null;\n }\n return mapStringMap(expression, function (value, name) { return simplify(value); });\n }\n return IGNORE;\n }\n try {\n return simplify(value);\n }\n catch (e) {\n var /** @type {?} */ members = context.members.length ? \".\" + context.members.join('.') : '';\n var /** @type {?} */ message = e.message + \", resolving symbol \" + context.name + members + \" in \" + context.filePath;\n if (e.fileName) {\n throw positionalError(message, e.fileName, e.line, e.column);\n }\n throw syntaxError(message);\n }\n }\n var /** @type {?} */ recordedSimplifyInContext = function (context, value, depth) {\n try {\n return simplifyInContext(context, value, depth);\n }\n catch (e) {\n _this.reportError(e, context);\n }\n };\n var /** @type {?} */ result = this.errorRecorder ? recordedSimplifyInContext(context, value, 0) :\n simplifyInContext(context, value, 0);\n if (shouldIgnore(result)) {\n return undefined;\n }\n return result;\n };\n /**\n * @param {?} type\n * @return {?}\n */\n StaticReflector.prototype.getTypeMetadata = function (type) {\n var /** @type {?} */ resolvedSymbol = this.symbolResolver.resolveSymbol(type);\n return resolvedSymbol && resolvedSymbol.metadata ? resolvedSymbol.metadata :\n { __symbolic: 'class' };\n };\n return StaticReflector;\n}());\n/**\n * @param {?} error\n * @return {?}\n */\nfunction expandedMessage(error) {\n switch (error.message) {\n case 'Reference to non-exported class':\n if (error.context && error.context.className) {\n return \"Reference to a non-exported class \" + error.context.className + \". Consider exporting the class\";\n }\n break;\n case 'Variable not initialized':\n return 'Only initialized variables and constants can be referenced because the value of this variable is needed by the template compiler';\n case 'Destructuring not supported':\n return 'Referencing an exported destructured variable or constant is not supported by the template compiler. Consider simplifying this to avoid destructuring';\n case 'Could not resolve type':\n if (error.context && error.context.typeName) {\n return \"Could not resolve type \" + error.context.typeName;\n }\n break;\n case 'Function call not supported':\n var /** @type {?} */ prefix = error.context && error.context.name ? \"Calling function '\" + error.context.name + \"', f\" : 'F';\n return prefix +\n 'unction calls are not supported. Consider replacing the function or lambda with a reference to an exported function';\n case 'Reference to a local symbol':\n if (error.context && error.context.name) {\n return \"Reference to a local (non-exported) symbol '\" + error.context.name + \"'. Consider exporting the symbol\";\n }\n break;\n }\n return error.message;\n}\n/**\n * @param {?} error\n * @return {?}\n */\nfunction produceErrorMessage(error) {\n return \"Error encountered resolving symbol values statically. \" + expandedMessage(error);\n}\n/**\n * @param {?} input\n * @param {?} transform\n * @return {?}\n */\nfunction mapStringMap(input, transform) {\n if (!input)\n return {};\n var /** @type {?} */ result = {};\n Object.keys(input).forEach(function (key) {\n var /** @type {?} */ value = transform(input[key], key);\n if (!shouldIgnore(value)) {\n if (HIDDEN_KEY.test(key)) {\n Object.defineProperty(result, key, { enumerable: false, configurable: true, value: value });\n }\n else {\n result[key] = value;\n }\n }\n });\n return result;\n}\n/**\n * @param {?} o\n * @return {?}\n */\nfunction isPrimitive(o) {\n return o === null || (typeof o !== 'function' && typeof o !== 'object');\n}\n/**\n * @abstract\n */\nvar BindingScope = (function () {\n function BindingScope() {\n }\n /**\n * @abstract\n * @param {?} name\n * @return {?}\n */\n BindingScope.prototype.resolve = function (name) { };\n /**\n * @return {?}\n */\n BindingScope.build = function () {\n var /** @type {?} */ current = new Map();\n return {\n define: function (name, value) {\n current.set(name, value);\n return this;\n },\n done: function () {\n return current.size > 0 ? new PopulatedScope(current) : BindingScope.empty;\n }\n };\n };\n return BindingScope;\n}());\nBindingScope.missing = {};\nBindingScope.empty = { resolve: function (name) { return BindingScope.missing; } };\nvar PopulatedScope = (function (_super) {\n __extends(PopulatedScope, _super);\n /**\n * @param {?} bindings\n */\n function PopulatedScope(bindings) {\n var _this = _super.call(this) || this;\n _this.bindings = bindings;\n return _this;\n }\n /**\n * @param {?} name\n * @return {?}\n */\n PopulatedScope.prototype.resolve = function (name) {\n return this.bindings.has(name) ? this.bindings.get(name) : BindingScope.missing;\n };\n return PopulatedScope;\n}(BindingScope));\n/**\n * @param {?} message\n * @param {?} fileName\n * @param {?} line\n * @param {?} column\n * @return {?}\n */\nfunction positionalError(message, fileName, line, column) {\n var /** @type {?} */ result = new Error(message);\n ((result)).fileName = fileName;\n ((result)).line = line;\n ((result)).column = column;\n return result;\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 */\nvar ResolvedStaticSymbol = (function () {\n /**\n * @param {?} symbol\n * @param {?} metadata\n */\n function ResolvedStaticSymbol(symbol, metadata) {\n this.symbol = symbol;\n this.metadata = metadata;\n }\n return ResolvedStaticSymbol;\n}());\nvar SUPPORTED_SCHEMA_VERSION = 3;\n/**\n * This class is responsible for loading metadata per symbol,\n * and normalizing references between symbols.\n *\n * Internally, it only uses symbols without members,\n * and deduces the values for symbols with members based\n * on these symbols.\n */\nvar StaticSymbolResolver = (function () {\n /**\n * @param {?} host\n * @param {?} staticSymbolCache\n * @param {?} summaryResolver\n * @param {?=} errorRecorder\n */\n function StaticSymbolResolver(host, staticSymbolCache, summaryResolver, errorRecorder) {\n this.host = host;\n this.staticSymbolCache = staticSymbolCache;\n this.summaryResolver = summaryResolver;\n this.errorRecorder = errorRecorder;\n this.metadataCache = new Map();\n this.resolvedSymbols = new Map();\n this.resolvedFilePaths = new Set();\n this.importAs = new Map();\n this.symbolResourcePaths = new Map();\n this.symbolFromFile = new Map();\n }\n /**\n * @param {?} staticSymbol\n * @return {?}\n */\n StaticSymbolResolver.prototype.resolveSymbol = function (staticSymbol) {\n if (staticSymbol.members.length > 0) {\n return this._resolveSymbolMembers(staticSymbol);\n }\n var /** @type {?} */ result = this.resolvedSymbols.get(staticSymbol);\n if (result) {\n return result;\n }\n result = this._resolveSymbolFromSummary(staticSymbol);\n if (result) {\n return result;\n }\n // Note: Some users use libraries that were not compiled with ngc, i.e. they don't\n // have summaries, only .d.ts files. So we always need to check both, the summary\n // and metadata.\n this._createSymbolsOf(staticSymbol.filePath);\n result = this.resolvedSymbols.get(staticSymbol);\n return result;\n };\n /**\n * getImportAs produces a symbol that can be used to import the given symbol.\n * The import might be different than the symbol if the symbol is exported from\n * a library with a summary; in which case we want to import the symbol from the\n * ngfactory re-export instead of directly to avoid introducing a direct dependency\n * on an otherwise indirect dependency.\n *\n * @param {?} staticSymbol the symbol for which to generate a import symbol\n * @return {?}\n */\n StaticSymbolResolver.prototype.getImportAs = function (staticSymbol) {\n if (staticSymbol.members.length) {\n var /** @type {?} */ baseSymbol = this.getStaticSymbol(staticSymbol.filePath, staticSymbol.name);\n var /** @type {?} */ baseImportAs = this.getImportAs(baseSymbol);\n return baseImportAs ?\n this.getStaticSymbol(baseImportAs.filePath, baseImportAs.name, staticSymbol.members) :\n null;\n }\n var /** @type {?} */ result = this.summaryResolver.getImportAs(staticSymbol);\n if (!result) {\n result = this.importAs.get(staticSymbol);\n }\n return result;\n };\n /**\n * getResourcePath produces the path to the original location of the symbol and should\n * be used to determine the relative location of resource references recorded in\n * symbol metadata.\n * @param {?} staticSymbol\n * @return {?}\n */\n StaticSymbolResolver.prototype.getResourcePath = function (staticSymbol) {\n return this.symbolResourcePaths.get(staticSymbol) || staticSymbol.filePath;\n };\n /**\n * getTypeArity returns the number of generic type parameters the given symbol\n * has. If the symbol is not a type the result is null.\n * @param {?} staticSymbol\n * @return {?}\n */\n StaticSymbolResolver.prototype.getTypeArity = function (staticSymbol) {\n // If the file is a factory file, don't resolve the symbol as doing so would\n // cause the metadata for an factory file to be loaded which doesn't exist.\n // All references to generated classes must include the correct arity whenever\n // generating code.\n if (isNgFactoryFile(staticSymbol.filePath)) {\n return null;\n }\n var /** @type {?} */ resolvedSymbol = this.resolveSymbol(staticSymbol);\n while (resolvedSymbol && resolvedSymbol.metadata instanceof StaticSymbol) {\n resolvedSymbol = this.resolveSymbol(resolvedSymbol.metadata);\n }\n return (resolvedSymbol && resolvedSymbol.metadata && resolvedSymbol.metadata.arity) || null;\n };\n /**\n * @param {?} sourceSymbol\n * @param {?} targetSymbol\n * @return {?}\n */\n StaticSymbolResolver.prototype.recordImportAs = function (sourceSymbol, targetSymbol) {\n sourceSymbol.assertNoMembers();\n targetSymbol.assertNoMembers();\n this.importAs.set(sourceSymbol, targetSymbol);\n };\n /**\n * Invalidate all information derived from the given file.\n *\n * @param {?} fileName the file to invalidate\n * @return {?}\n */\n StaticSymbolResolver.prototype.invalidateFile = function (fileName) {\n this.metadataCache.delete(fileName);\n this.resolvedFilePaths.delete(fileName);\n var /** @type {?} */ symbols = this.symbolFromFile.get(fileName);\n if (symbols) {\n this.symbolFromFile.delete(fileName);\n for (var _i = 0, symbols_1 = symbols; _i < symbols_1.length; _i++) {\n var symbol = symbols_1[_i];\n this.resolvedSymbols.delete(symbol);\n this.importAs.delete(symbol);\n this.symbolResourcePaths.delete(symbol);\n }\n }\n };\n /**\n * @param {?} staticSymbol\n * @return {?}\n */\n StaticSymbolResolver.prototype._resolveSymbolMembers = function (staticSymbol) {\n var /** @type {?} */ members = staticSymbol.members;\n var /** @type {?} */ baseResolvedSymbol = this.resolveSymbol(this.getStaticSymbol(staticSymbol.filePath, staticSymbol.name));\n if (!baseResolvedSymbol) {\n return null;\n }\n var /** @type {?} */ baseMetadata = baseResolvedSymbol.metadata;\n if (baseMetadata instanceof StaticSymbol) {\n return new ResolvedStaticSymbol(staticSymbol, this.getStaticSymbol(baseMetadata.filePath, baseMetadata.name, members));\n }\n else if (baseMetadata && baseMetadata.__symbolic === 'class') {\n if (baseMetadata.statics && members.length === 1) {\n return new ResolvedStaticSymbol(staticSymbol, baseMetadata.statics[members[0]]);\n }\n }\n else {\n var /** @type {?} */ value = baseMetadata;\n for (var /** @type {?} */ i = 0; i < members.length && value; i++) {\n value = value[members[i]];\n }\n return new ResolvedStaticSymbol(staticSymbol, value);\n }\n return null;\n };\n /**\n * @param {?} staticSymbol\n * @return {?}\n */\n StaticSymbolResolver.prototype._resolveSymbolFromSummary = function (staticSymbol) {\n var /** @type {?} */ summary = this.summaryResolver.resolveSummary(staticSymbol);\n return summary ? new ResolvedStaticSymbol(staticSymbol, summary.metadata) : null;\n };\n /**\n * getStaticSymbol produces a Type whose metadata is known but whose implementation is not loaded.\n * All types passed to the StaticResolver should be pseudo-types returned by this method.\n *\n * @param {?} declarationFile the absolute path of the file where the symbol is declared\n * @param {?} name the name of the type.\n * @param {?=} members a symbol for a static member of the named type\n * @return {?}\n */\n StaticSymbolResolver.prototype.getStaticSymbol = function (declarationFile, name, members) {\n return this.staticSymbolCache.get(declarationFile, name, members);\n };\n /**\n * @param {?} filePath\n * @return {?}\n */\n StaticSymbolResolver.prototype.getSymbolsOf = function (filePath) {\n // Note: Some users use libraries that were not compiled with ngc, i.e. they don't\n // have summaries, only .d.ts files. So we always need to check both, the summary\n // and metadata.\n var /** @type {?} */ symbols = new Set(this.summaryResolver.getSymbolsOf(filePath));\n this._createSymbolsOf(filePath);\n this.resolvedSymbols.forEach(function (resolvedSymbol) {\n if (resolvedSymbol.symbol.filePath === filePath) {\n symbols.add(resolvedSymbol.symbol);\n }\n });\n return Array.from(symbols);\n };\n /**\n * @param {?} filePath\n * @return {?}\n */\n StaticSymbolResolver.prototype._createSymbolsOf = function (filePath) {\n var _this = this;\n if (this.resolvedFilePaths.has(filePath)) {\n return;\n }\n this.resolvedFilePaths.add(filePath);\n var /** @type {?} */ resolvedSymbols = [];\n var /** @type {?} */ metadata = this.getModuleMetadata(filePath);\n if (metadata['metadata']) {\n // handle direct declarations of the symbol\n var /** @type {?} */ topLevelSymbolNames_1 = new Set(Object.keys(metadata['metadata']).map(unescapeIdentifier));\n var /** @type {?} */ origins_1 = metadata['origins'] || {};\n Object.keys(metadata['metadata']).forEach(function (metadataKey) {\n var /** @type {?} */ symbolMeta = metadata['metadata'][metadataKey];\n var /** @type {?} */ name = unescapeIdentifier(metadataKey);\n var /** @type {?} */ symbol = _this.getStaticSymbol(filePath, name);\n var /** @type {?} */ importSymbol = undefined;\n if (metadata['importAs']) {\n // Index bundle indexes should use the importAs module name instead of a reference\n // to the .d.ts file directly.\n importSymbol = _this.getStaticSymbol(metadata['importAs'], name);\n _this.recordImportAs(symbol, importSymbol);\n }\n var /** @type {?} */ origin = origins_1.hasOwnProperty(metadataKey) && origins_1[metadataKey];\n if (origin) {\n // If the symbol is from a bundled index, use the declaration location of the\n // symbol so relative references (such as './my.html') will be calculated\n // correctly.\n var /** @type {?} */ originFilePath = _this.resolveModule(origin, filePath);\n if (!originFilePath) {\n _this.reportError(new Error(\"Couldn't resolve original symbol for \" + origin + \" from \" + filePath), null);\n }\n else {\n _this.symbolResourcePaths.set(symbol, originFilePath);\n }\n }\n resolvedSymbols.push(_this.createResolvedSymbol(symbol, filePath, topLevelSymbolNames_1, symbolMeta));\n });\n }\n // handle the symbols in one of the re-export location\n if (metadata['exports']) {\n var _loop_1 = function (moduleExport) {\n // handle the symbols in the list of explicitly re-exported symbols.\n if (moduleExport.export) {\n moduleExport.export.forEach(function (exportSymbol) {\n var /** @type {?} */ symbolName;\n if (typeof exportSymbol === 'string') {\n symbolName = exportSymbol;\n }\n else {\n symbolName = exportSymbol.as;\n }\n symbolName = unescapeIdentifier(symbolName);\n var /** @type {?} */ symName = symbolName;\n if (typeof exportSymbol !== 'string') {\n symName = unescapeIdentifier(exportSymbol.name);\n }\n var /** @type {?} */ resolvedModule = _this.resolveModule(moduleExport.from, filePath);\n if (resolvedModule) {\n var /** @type {?} */ targetSymbol = _this.getStaticSymbol(resolvedModule, symName);\n var /** @type {?} */ sourceSymbol = _this.getStaticSymbol(filePath, symbolName);\n resolvedSymbols.push(_this.createExport(sourceSymbol, targetSymbol));\n }\n });\n }\n else {\n // handle the symbols via export * directives.\n var /** @type {?} */ resolvedModule = this_1.resolveModule(moduleExport.from, filePath);\n if (resolvedModule) {\n var /** @type {?} */ nestedExports = this_1.getSymbolsOf(resolvedModule);\n nestedExports.forEach(function (targetSymbol) {\n var /** @type {?} */ sourceSymbol = _this.getStaticSymbol(filePath, targetSymbol.name);\n resolvedSymbols.push(_this.createExport(sourceSymbol, targetSymbol));\n });\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = metadata['exports']; _i < _a.length; _i++) {\n var moduleExport = _a[_i];\n _loop_1(/** @type {?} */ moduleExport);\n }\n }\n resolvedSymbols.forEach(function (resolvedSymbol) { return _this.resolvedSymbols.set(resolvedSymbol.symbol, resolvedSymbol); });\n this.symbolFromFile.set(filePath, resolvedSymbols.map(function (resolvedSymbol) { return resolvedSymbol.symbol; }));\n };\n /**\n * @param {?} sourceSymbol\n * @param {?} topLevelPath\n * @param {?} topLevelSymbolNames\n * @param {?} metadata\n * @return {?}\n */\n StaticSymbolResolver.prototype.createResolvedSymbol = function (sourceSymbol, topLevelPath, topLevelSymbolNames, metadata) {\n // For classes that don't have Angular summaries / metadata,\n // we only keep their arity, but nothing else\n // (e.g. their constructor parameters).\n // We do this to prevent introducing deep imports\n // as we didn't generate .ngfactory.ts files with proper reexports.\n if (this.summaryResolver.isLibraryFile(sourceSymbol.filePath) && metadata &&\n metadata['__symbolic'] === 'class') {\n var /** @type {?} */ transformedMeta_1 = { __symbolic: 'class', arity: metadata.arity };\n return new ResolvedStaticSymbol(sourceSymbol, transformedMeta_1);\n }\n var /** @type {?} */ self = this;\n var ReferenceTransformer = (function (_super) {\n __extends(ReferenceTransformer, _super);\n function ReferenceTransformer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {?} map\n * @param {?} functionParams\n * @return {?}\n */\n ReferenceTransformer.prototype.visitStringMap = function (map, functionParams) {\n var /** @type {?} */ symbolic = map['__symbolic'];\n if (symbolic === 'function') {\n var /** @type {?} */ oldLen = functionParams.length;\n functionParams.push.apply(functionParams, (map['parameters'] || []));\n var /** @type {?} */ result = _super.prototype.visitStringMap.call(this, map, functionParams);\n functionParams.length = oldLen;\n return result;\n }\n else if (symbolic === 'reference') {\n var /** @type {?} */ module_1 = map['module'];\n var /** @type {?} */ name = map['name'] ? unescapeIdentifier(map['name']) : map['name'];\n if (!name) {\n return null;\n }\n var /** @type {?} */ filePath = void 0;\n if (module_1) {\n filePath = self.resolveModule(module_1, sourceSymbol.filePath);\n if (!filePath) {\n return {\n __symbolic: 'error',\n message: \"Could not resolve \" + module_1 + \" relative to \" + sourceSymbol.filePath + \".\"\n };\n }\n return self.getStaticSymbol(filePath, name);\n }\n else if (functionParams.indexOf(name) >= 0) {\n // reference to a function parameter\n return { __symbolic: 'reference', name: name };\n }\n else {\n if (topLevelSymbolNames.has(name)) {\n return self.getStaticSymbol(topLevelPath, name);\n }\n // ambient value\n null;\n }\n }\n else {\n return _super.prototype.visitStringMap.call(this, map, functionParams);\n }\n };\n return ReferenceTransformer;\n }(ValueTransformer));\n var /** @type {?} */ transformedMeta = visitValue(metadata, new ReferenceTransformer(), []);\n if (transformedMeta instanceof StaticSymbol) {\n return this.createExport(sourceSymbol, transformedMeta);\n }\n return new ResolvedStaticSymbol(sourceSymbol, transformedMeta);\n };\n /**\n * @param {?} sourceSymbol\n * @param {?} targetSymbol\n * @return {?}\n */\n StaticSymbolResolver.prototype.createExport = function (sourceSymbol, targetSymbol) {\n sourceSymbol.assertNoMembers();\n targetSymbol.assertNoMembers();\n if (this.summaryResolver.isLibraryFile(sourceSymbol.filePath)) {\n // This case is for an ng library importing symbols from a plain ts library\n // transitively.\n // Note: We rely on the fact that we discover symbols in the direction\n // from source files to library files\n this.importAs.set(targetSymbol, this.getImportAs(sourceSymbol) || sourceSymbol);\n }\n return new ResolvedStaticSymbol(sourceSymbol, targetSymbol);\n };\n /**\n * @param {?} error\n * @param {?} context\n * @param {?=} path\n * @return {?}\n */\n StaticSymbolResolver.prototype.reportError = function (error, context, path) {\n if (this.errorRecorder) {\n this.errorRecorder(error, (context && context.filePath) || path);\n }\n else {\n throw error;\n }\n };\n /**\n * @param {?} module an absolute path to a module file.\n * @return {?}\n */\n StaticSymbolResolver.prototype.getModuleMetadata = function (module) {\n var /** @type {?} */ moduleMetadata = this.metadataCache.get(module);\n if (!moduleMetadata) {\n var /** @type {?} */ moduleMetadatas = this.host.getMetadataFor(module);\n if (moduleMetadatas) {\n var /** @type {?} */ maxVersion_1 = -1;\n moduleMetadatas.forEach(function (md) {\n if (md['version'] > maxVersion_1) {\n maxVersion_1 = md['version'];\n moduleMetadata = md;\n }\n });\n }\n if (!moduleMetadata) {\n moduleMetadata =\n { __symbolic: 'module', version: SUPPORTED_SCHEMA_VERSION, module: module, metadata: {} };\n }\n if (moduleMetadata['version'] != SUPPORTED_SCHEMA_VERSION) {\n var /** @type {?} */ errorMessage = moduleMetadata['version'] == 2 ?\n \"Unsupported metadata version \" + moduleMetadata['version'] + \" for module \" + module + \". This module should be compiled with a newer version of ngc\" :\n \"Metadata version mismatch for module \" + module + \", found version \" + moduleMetadata['version'] + \", expected \" + SUPPORTED_SCHEMA_VERSION;\n this.reportError(new Error(errorMessage), null);\n }\n this.metadataCache.set(module, moduleMetadata);\n }\n return moduleMetadata;\n };\n /**\n * @param {?} module\n * @param {?} symbolName\n * @param {?=} containingFile\n * @return {?}\n */\n StaticSymbolResolver.prototype.getSymbolByModule = function (module, symbolName, containingFile) {\n var /** @type {?} */ filePath = this.resolveModule(module, containingFile);\n if (!filePath) {\n this.reportError(new Error(\"Could not resolve module \" + module + (containingFile ? \" relative to $ {\\n containingFile\\n } \" : '')), null);\n return this.getStaticSymbol(\"ERROR:\" + module, symbolName);\n }\n return this.getStaticSymbol(filePath, symbolName);\n };\n /**\n * @param {?} module\n * @param {?} containingFile\n * @return {?}\n */\n StaticSymbolResolver.prototype.resolveModule = function (module, containingFile) {\n try {\n return this.host.moduleNameToFileName(module, containingFile);\n }\n catch (e) {\n console.error(\"Could not resolve module '\" + module + \"' relative to file \" + containingFile);\n this.reportError(e, null, containingFile);\n }\n };\n return StaticSymbolResolver;\n}());\n/**\n * @param {?} identifier\n * @return {?}\n */\nfunction unescapeIdentifier(identifier) {\n return identifier.startsWith('___') ? identifier.substr(1) : identifier;\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 */\nvar AotSummaryResolver = (function () {\n /**\n * @param {?} host\n * @param {?} staticSymbolCache\n */\n function AotSummaryResolver(host, staticSymbolCache) {\n this.host = host;\n this.staticSymbolCache = staticSymbolCache;\n this.summaryCache = new Map();\n this.loadedFilePaths = new Set();\n this.importAs = new Map();\n }\n /**\n * @param {?} filePath\n * @return {?}\n */\n AotSummaryResolver.prototype.isLibraryFile = function (filePath) {\n // Note: We need to strip the .ngfactory. file path,\n // so this method also works for generated files\n // (for which host.isSourceFile will always return false).\n return !this.host.isSourceFile(stripNgFactory(filePath));\n };\n /**\n * @param {?} filePath\n * @return {?}\n */\n AotSummaryResolver.prototype.getLibraryFileName = function (filePath) { return this.host.getOutputFileName(filePath); };\n /**\n * @param {?} staticSymbol\n * @return {?}\n */\n AotSummaryResolver.prototype.resolveSummary = function (staticSymbol) {\n staticSymbol.assertNoMembers();\n var /** @type {?} */ summary = this.summaryCache.get(staticSymbol);\n if (!summary) {\n this._loadSummaryFile(staticSymbol.filePath);\n summary = this.summaryCache.get(staticSymbol);\n }\n return summary;\n };\n /**\n * @param {?} filePath\n * @return {?}\n */\n AotSummaryResolver.prototype.getSymbolsOf = function (filePath) {\n this._loadSummaryFile(filePath);\n return Array.from(this.summaryCache.keys()).filter(function (symbol) { return symbol.filePath === filePath; });\n };\n /**\n * @param {?} staticSymbol\n * @return {?}\n */\n AotSummaryResolver.prototype.getImportAs = function (staticSymbol) {\n staticSymbol.assertNoMembers();\n return this.importAs.get(staticSymbol);\n };\n /**\n * @param {?} filePath\n * @return {?}\n */\n AotSummaryResolver.prototype._loadSummaryFile = function (filePath) {\n var _this = this;\n if (this.loadedFilePaths.has(filePath)) {\n return;\n }\n this.loadedFilePaths.add(filePath);\n if (this.isLibraryFile(filePath)) {\n var /** @type {?} */ summaryFilePath = summaryFileName(filePath);\n var /** @type {?} */ json = void 0;\n try {\n json = this.host.loadSummary(summaryFilePath);\n }\n catch (e) {\n console.error(\"Error loading summary file \" + summaryFilePath);\n throw e;\n }\n if (json) {\n var _a = deserializeSummaries(this.staticSymbolCache, json), summaries = _a.summaries, importAs = _a.importAs;\n summaries.forEach(function (summary) { return _this.summaryCache.set(summary.symbol, summary); });\n importAs.forEach(function (importAs) {\n _this.importAs.set(importAs.symbol, _this.staticSymbolCache.get(ngfactoryFilePath(filePath), importAs.importAs));\n });\n }\n }\n };\n return AotSummaryResolver;\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 * Creates a new AotCompiler based on options and a host.\n * @param {?} compilerHost\n * @param {?} options\n * @return {?}\n */\nfunction createAotCompiler(compilerHost, options) {\n var /** @type {?} */ translations = options.translations || '';\n var /** @type {?} */ urlResolver = createOfflineCompileUrlResolver();\n var /** @type {?} */ symbolCache = new StaticSymbolCache();\n var /** @type {?} */ summaryResolver = new AotSummaryResolver(compilerHost, symbolCache);\n var /** @type {?} */ symbolResolver = new StaticSymbolResolver(compilerHost, symbolCache, summaryResolver);\n var /** @type {?} */ staticReflector = new StaticReflector(summaryResolver, symbolResolver);\n StaticAndDynamicReflectionCapabilities.install(staticReflector);\n var /** @type {?} */ console = new ɵConsole();\n var /** @type {?} */ htmlParser = new I18NHtmlParser(new HtmlParser(), translations, options.i18nFormat, MissingTranslationStrategy.Warning, console);\n var /** @type {?} */ config = new CompilerConfig({\n defaultEncapsulation: ViewEncapsulation.Emulated,\n useJit: false,\n enableLegacyTemplate: options.enableLegacyTemplate !== false,\n });\n var /** @type {?} */ normalizer = new DirectiveNormalizer({ get: function (url) { return compilerHost.loadResource(url); } }, urlResolver, htmlParser, config);\n var /** @type {?} */ expressionParser = new Parser(new Lexer());\n var /** @type {?} */ elementSchemaRegistry = new DomElementSchemaRegistry();\n var /** @type {?} */ tmplParser = new TemplateParser(config, expressionParser, elementSchemaRegistry, htmlParser, console, []);\n var /** @type {?} */ resolver = new CompileMetadataResolver(config, new NgModuleResolver(staticReflector), new DirectiveResolver(staticReflector), new PipeResolver(staticReflector), summaryResolver, elementSchemaRegistry, normalizer, console, symbolCache, staticReflector);\n // TODO(vicb): do not pass options.i18nFormat here\n var /** @type {?} */ importResolver = {\n getImportAs: function (symbol) { return symbolResolver.getImportAs(symbol); },\n fileNameToModuleName: function (fileName, containingFilePath) { return compilerHost.fileNameToModuleName(fileName, containingFilePath); },\n getTypeArity: function (symbol) { return symbolResolver.getTypeArity(symbol); }\n };\n var /** @type {?} */ viewCompiler = new ViewCompiler(config, elementSchemaRegistry);\n var /** @type {?} */ compiler = new AotCompiler(config, compilerHost, resolver, tmplParser, new StyleCompiler(urlResolver), viewCompiler, new NgModuleCompiler(), new TypeScriptEmitter(importResolver), summaryResolver, options.locale, options.i18nFormat, options.genFilePreamble, symbolResolver);\n return { compiler: compiler, reflector: staticReflector };\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 * @param {?} statements\n * @param {?} resultVars\n * @return {?}\n */\nfunction interpretStatements(statements, resultVars) {\n var /** @type {?} */ stmtsWithReturn = statements.concat([new ReturnStatement(literalArr(resultVars.map(function (resultVar) { return variable(resultVar); })))]);\n var /** @type {?} */ ctx = new _ExecutionContext(null, null, null, new Map());\n var /** @type {?} */ visitor = new StatementInterpreter();\n var /** @type {?} */ result = visitor.visitAllStatements(stmtsWithReturn, ctx);\n return result != null ? result.value : null;\n}\n/**\n * @param {?} varNames\n * @param {?} varValues\n * @param {?} statements\n * @param {?} ctx\n * @param {?} visitor\n * @return {?}\n */\nfunction _executeFunctionStatements(varNames, varValues, statements, ctx, visitor) {\n var /** @type {?} */ childCtx = ctx.createChildWihtLocalVars();\n for (var /** @type {?} */ i = 0; i < varNames.length; i++) {\n childCtx.vars.set(varNames[i], varValues[i]);\n }\n var /** @type {?} */ result = visitor.visitAllStatements(statements, childCtx);\n return result ? result.value : null;\n}\nvar _ExecutionContext = (function () {\n /**\n * @param {?} parent\n * @param {?} instance\n * @param {?} className\n * @param {?} vars\n */\n function _ExecutionContext(parent, instance, className, vars) {\n this.parent = parent;\n this.instance = instance;\n this.className = className;\n this.vars = vars;\n }\n /**\n * @return {?}\n */\n _ExecutionContext.prototype.createChildWihtLocalVars = function () {\n return new _ExecutionContext(this, this.instance, this.className, new Map());\n };\n return _ExecutionContext;\n}());\nvar ReturnValue = (function () {\n /**\n * @param {?} value\n */\n function ReturnValue(value) {\n this.value = value;\n }\n return ReturnValue;\n}());\n/**\n * @param {?} _classStmt\n * @param {?} _ctx\n * @param {?} _visitor\n * @return {?}\n */\nfunction createDynamicClass(_classStmt, _ctx, _visitor) {\n var /** @type {?} */ propertyDescriptors = {};\n _classStmt.getters.forEach(function (getter) {\n // Note: use `function` instead of arrow function to capture `this`\n propertyDescriptors[getter.name] = {\n configurable: false,\n get: function () {\n var /** @type {?} */ instanceCtx = new _ExecutionContext(_ctx, this, _classStmt.name, _ctx.vars);\n return _executeFunctionStatements([], [], getter.body, instanceCtx, _visitor);\n }\n };\n });\n _classStmt.methods.forEach(function (method) {\n var /** @type {?} */ paramNames = method.params.map(function (param) { return param.name; });\n // Note: use `function` instead of arrow function to capture `this`\n propertyDescriptors[method.name] = {\n writable: false,\n configurable: false,\n value: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var /** @type {?} */ instanceCtx = new _ExecutionContext(_ctx, this, _classStmt.name, _ctx.vars);\n return _executeFunctionStatements(paramNames, args, method.body, instanceCtx, _visitor);\n }\n };\n });\n var /** @type {?} */ ctorParamNames = _classStmt.constructorMethod.params.map(function (param) { return param.name; });\n // Note: use `function` instead of arrow function to capture `this`\n var /** @type {?} */ ctor = function () {\n var _this = this;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var /** @type {?} */ instanceCtx = new _ExecutionContext(_ctx, this, _classStmt.name, _ctx.vars);\n _classStmt.fields.forEach(function (field) { _this[field.name] = undefined; });\n _executeFunctionStatements(ctorParamNames, args, _classStmt.constructorMethod.body, instanceCtx, _visitor);\n };\n var /** @type {?} */ superClass = _classStmt.parent ? _classStmt.parent.visitExpression(_visitor, _ctx) : Object;\n ctor.prototype = Object.create(superClass.prototype, propertyDescriptors);\n return ctor;\n}\nvar StatementInterpreter = (function () {\n function StatementInterpreter() {\n }\n /**\n * @param {?} ast\n * @return {?}\n */\n StatementInterpreter.prototype.debugAst = function (ast) { return debugOutputAstAsTypeScript(ast); };\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n StatementInterpreter.prototype.visitDeclareVarStmt = function (stmt, ctx) {\n ctx.vars.set(stmt.name, stmt.value.visitExpression(this, ctx));\n return null;\n };\n /**\n * @param {?} expr\n * @param {?} ctx\n * @return {?}\n */\n StatementInterpreter.prototype.visitWriteVarExpr = function (expr, ctx) {\n var /** @type {?} */ value = expr.value.visitExpression(this, ctx);\n var /** @type {?} */ currCtx = ctx;\n while (currCtx != null) {\n if (currCtx.vars.has(expr.name)) {\n currCtx.vars.set(expr.name, value);\n return value;\n }\n currCtx = currCtx.parent;\n }\n throw new Error(\"Not declared variable \" + expr.name);\n };\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n StatementInterpreter.prototype.visitReadVarExpr = function (ast, ctx) {\n var /** @type {?} */ varName = ast.name;\n if (ast.builtin != null) {\n switch (ast.builtin) {\n case BuiltinVar.Super:\n return ctx.instance.__proto__;\n case BuiltinVar.This:\n return ctx.instance;\n case BuiltinVar.CatchError:\n varName = CATCH_ERROR_VAR$2;\n break;\n case BuiltinVar.CatchStack:\n varName = CATCH_STACK_VAR$2;\n break;\n default:\n throw new Error(\"Unknown builtin variable \" + ast.builtin);\n }\n }\n var /** @type {?} */ currCtx = ctx;\n while (currCtx != null) {\n if (currCtx.vars.has(varName)) {\n return currCtx.vars.get(varName);\n }\n currCtx = currCtx.parent;\n }\n throw new Error(\"Not declared variable \" + varName);\n };\n /**\n * @param {?} expr\n * @param {?} ctx\n * @return {?}\n */\n StatementInterpreter.prototype.visitWriteKeyExpr = function (expr, ctx) {\n var /** @type {?} */ receiver = expr.receiver.visitExpression(this, ctx);\n var /** @type {?} */ index = expr.index.visitExpression(this, ctx);\n var /** @type {?} */ value = expr.value.visitExpression(this, ctx);\n receiver[index] = value;\n return value;\n };\n /**\n * @param {?} expr\n * @param {?} ctx\n * @return {?}\n */\n StatementInterpreter.prototype.visitWritePropExpr = function (expr, ctx) {\n var /** @type {?} */ receiver = expr.receiver.visitExpression(this, ctx);\n var /** @type {?} */ value = expr.value.visitExpression(this, ctx);\n receiver[expr.name] = value;\n return value;\n };\n /**\n * @param {?} expr\n * @param {?} ctx\n * @return {?}\n */\n StatementInterpreter.prototype.visitInvokeMethodExpr = function (expr, ctx) {\n var /** @type {?} */ receiver = expr.receiver.visitExpression(this, ctx);\n var /** @type {?} */ args = this.visitAllExpressions(expr.args, ctx);\n var /** @type {?} */ result;\n if (expr.builtin != null) {\n switch (expr.builtin) {\n case BuiltinMethod.ConcatArray:\n result = receiver.concat.apply(receiver, args);\n break;\n case BuiltinMethod.SubscribeObservable:\n result = receiver.subscribe({ next: args[0] });\n break;\n case BuiltinMethod.Bind:\n result = receiver.bind.apply(receiver, args);\n break;\n default:\n throw new Error(\"Unknown builtin method \" + expr.builtin);\n }\n }\n else {\n result = receiver[expr.name].apply(receiver, args);\n }\n return result;\n };\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n StatementInterpreter.prototype.visitInvokeFunctionExpr = function (stmt, ctx) {\n var /** @type {?} */ args = this.visitAllExpressions(stmt.args, ctx);\n var /** @type {?} */ fnExpr = stmt.fn;\n if (fnExpr instanceof ReadVarExpr && fnExpr.builtin === BuiltinVar.Super) {\n ctx.instance.constructor.prototype.constructor.apply(ctx.instance, args);\n return null;\n }\n else {\n var /** @type {?} */ fn$$1 = stmt.fn.visitExpression(this, ctx);\n return fn$$1.apply(null, args);\n }\n };\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n StatementInterpreter.prototype.visitReturnStmt = function (stmt, ctx) {\n return new ReturnValue(stmt.value.visitExpression(this, ctx));\n };\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n StatementInterpreter.prototype.visitDeclareClassStmt = function (stmt, ctx) {\n var /** @type {?} */ clazz = createDynamicClass(stmt, ctx, this);\n ctx.vars.set(stmt.name, clazz);\n return null;\n };\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n StatementInterpreter.prototype.visitExpressionStmt = function (stmt, ctx) {\n return stmt.expr.visitExpression(this, ctx);\n };\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n StatementInterpreter.prototype.visitIfStmt = function (stmt, ctx) {\n var /** @type {?} */ condition = stmt.condition.visitExpression(this, ctx);\n if (condition) {\n return this.visitAllStatements(stmt.trueCase, ctx);\n }\n else if (stmt.falseCase != null) {\n return this.visitAllStatements(stmt.falseCase, ctx);\n }\n return null;\n };\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n StatementInterpreter.prototype.visitTryCatchStmt = function (stmt, ctx) {\n try {\n return this.visitAllStatements(stmt.bodyStmts, ctx);\n }\n catch (e) {\n var /** @type {?} */ childCtx = ctx.createChildWihtLocalVars();\n childCtx.vars.set(CATCH_ERROR_VAR$2, e);\n childCtx.vars.set(CATCH_STACK_VAR$2, e.stack);\n return this.visitAllStatements(stmt.catchStmts, childCtx);\n }\n };\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n StatementInterpreter.prototype.visitThrowStmt = function (stmt, ctx) {\n throw stmt.error.visitExpression(this, ctx);\n };\n /**\n * @param {?} stmt\n * @param {?=} context\n * @return {?}\n */\n StatementInterpreter.prototype.visitCommentStmt = function (stmt, context) { return null; };\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n StatementInterpreter.prototype.visitInstantiateExpr = function (ast, ctx) {\n var /** @type {?} */ args = this.visitAllExpressions(ast.args, ctx);\n var /** @type {?} */ clazz = ast.classExpr.visitExpression(this, ctx);\n return new (clazz.bind.apply(clazz, [void 0].concat(args)))();\n };\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n StatementInterpreter.prototype.visitLiteralExpr = function (ast, ctx) { return ast.value; };\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n StatementInterpreter.prototype.visitExternalExpr = function (ast, ctx) {\n return ast.value.reference;\n };\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n StatementInterpreter.prototype.visitConditionalExpr = function (ast, ctx) {\n if (ast.condition.visitExpression(this, ctx)) {\n return ast.trueCase.visitExpression(this, ctx);\n }\n else if (ast.falseCase != null) {\n return ast.falseCase.visitExpression(this, ctx);\n }\n return null;\n };\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n StatementInterpreter.prototype.visitNotExpr = function (ast, ctx) {\n return !ast.condition.visitExpression(this, ctx);\n };\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n StatementInterpreter.prototype.visitCastExpr = function (ast, ctx) {\n return ast.value.visitExpression(this, ctx);\n };\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n StatementInterpreter.prototype.visitFunctionExpr = function (ast, ctx) {\n var /** @type {?} */ paramNames = ast.params.map(function (param) { return param.name; });\n return _declareFn(paramNames, ast.statements, ctx, this);\n };\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n StatementInterpreter.prototype.visitDeclareFunctionStmt = function (stmt, ctx) {\n var /** @type {?} */ paramNames = stmt.params.map(function (param) { return param.name; });\n ctx.vars.set(stmt.name, _declareFn(paramNames, stmt.statements, ctx, this));\n return null;\n };\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n StatementInterpreter.prototype.visitBinaryOperatorExpr = function (ast, ctx) {\n var _this = this;\n var /** @type {?} */ lhs = function () { return ast.lhs.visitExpression(_this, ctx); };\n var /** @type {?} */ rhs = function () { return ast.rhs.visitExpression(_this, ctx); };\n switch (ast.operator) {\n case BinaryOperator.Equals:\n return lhs() == rhs();\n case BinaryOperator.Identical:\n return lhs() === rhs();\n case BinaryOperator.NotEquals:\n return lhs() != rhs();\n case BinaryOperator.NotIdentical:\n return lhs() !== rhs();\n case BinaryOperator.And:\n return lhs() && rhs();\n case BinaryOperator.Or:\n return lhs() || rhs();\n case BinaryOperator.Plus:\n return lhs() + rhs();\n case BinaryOperator.Minus:\n return lhs() - rhs();\n case BinaryOperator.Divide:\n return lhs() / rhs();\n case BinaryOperator.Multiply:\n return lhs() * rhs();\n case BinaryOperator.Modulo:\n return lhs() % rhs();\n case BinaryOperator.Lower:\n return lhs() < rhs();\n case BinaryOperator.LowerEquals:\n return lhs() <= rhs();\n case BinaryOperator.Bigger:\n return lhs() > rhs();\n case BinaryOperator.BiggerEquals:\n return lhs() >= rhs();\n default:\n throw new Error(\"Unknown operator \" + ast.operator);\n }\n };\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n StatementInterpreter.prototype.visitReadPropExpr = function (ast, ctx) {\n var /** @type {?} */ result;\n var /** @type {?} */ receiver = ast.receiver.visitExpression(this, ctx);\n result = receiver[ast.name];\n return result;\n };\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n StatementInterpreter.prototype.visitReadKeyExpr = function (ast, ctx) {\n var /** @type {?} */ receiver = ast.receiver.visitExpression(this, ctx);\n var /** @type {?} */ prop = ast.index.visitExpression(this, ctx);\n return receiver[prop];\n };\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n StatementInterpreter.prototype.visitLiteralArrayExpr = function (ast, ctx) {\n return this.visitAllExpressions(ast.entries, ctx);\n };\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n StatementInterpreter.prototype.visitLiteralMapExpr = function (ast, ctx) {\n var _this = this;\n var /** @type {?} */ result = {};\n ast.entries.forEach(function (entry) { return ((result))[entry.key] = entry.value.visitExpression(_this, ctx); });\n return result;\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n StatementInterpreter.prototype.visitCommaExpr = function (ast, context) {\n var /** @type {?} */ values = this.visitAllExpressions(ast.parts, context);\n return values[values.length - 1];\n };\n /**\n * @param {?} expressions\n * @param {?} ctx\n * @return {?}\n */\n StatementInterpreter.prototype.visitAllExpressions = function (expressions, ctx) {\n var _this = this;\n return expressions.map(function (expr) { return expr.visitExpression(_this, ctx); });\n };\n /**\n * @param {?} statements\n * @param {?} ctx\n * @return {?}\n */\n StatementInterpreter.prototype.visitAllStatements = function (statements, ctx) {\n for (var /** @type {?} */ i = 0; i < statements.length; i++) {\n var /** @type {?} */ stmt = statements[i];\n var /** @type {?} */ val = stmt.visitStatement(this, ctx);\n if (val instanceof ReturnValue) {\n return val;\n }\n }\n return null;\n };\n return StatementInterpreter;\n}());\n/**\n * @param {?} varNames\n * @param {?} statements\n * @param {?} ctx\n * @param {?} visitor\n * @return {?}\n */\nfunction _declareFn(varNames, statements, ctx, visitor) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return _executeFunctionStatements(varNames, args, statements, ctx, visitor);\n };\n}\nvar CATCH_ERROR_VAR$2 = 'error';\nvar CATCH_STACK_VAR$2 = 'stack';\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 * @abstract\n */\nvar AbstractJsEmitterVisitor = (function (_super) {\n __extends(AbstractJsEmitterVisitor, _super);\n function AbstractJsEmitterVisitor() {\n return _super.call(this, false) || this;\n }\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n AbstractJsEmitterVisitor.prototype.visitDeclareClassStmt = function (stmt, ctx) {\n var _this = this;\n ctx.pushClass(stmt);\n this._visitClassConstructor(stmt, ctx);\n if (stmt.parent != null) {\n ctx.print(stmt, stmt.name + \".prototype = Object.create(\");\n stmt.parent.visitExpression(this, ctx);\n ctx.println(stmt, \".prototype);\");\n }\n stmt.getters.forEach(function (getter) { return _this._visitClassGetter(stmt, getter, ctx); });\n stmt.methods.forEach(function (method) { return _this._visitClassMethod(stmt, method, ctx); });\n ctx.popClass();\n return null;\n };\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n AbstractJsEmitterVisitor.prototype._visitClassConstructor = function (stmt, ctx) {\n ctx.print(stmt, \"function \" + stmt.name + \"(\");\n if (stmt.constructorMethod != null) {\n this._visitParams(stmt.constructorMethod.params, ctx);\n }\n ctx.println(stmt, \") {\");\n ctx.incIndent();\n if (stmt.constructorMethod != null) {\n if (stmt.constructorMethod.body.length > 0) {\n ctx.println(stmt, \"var self = this;\");\n this.visitAllStatements(stmt.constructorMethod.body, ctx);\n }\n }\n ctx.decIndent();\n ctx.println(stmt, \"}\");\n };\n /**\n * @param {?} stmt\n * @param {?} getter\n * @param {?} ctx\n * @return {?}\n */\n AbstractJsEmitterVisitor.prototype._visitClassGetter = function (stmt, getter, ctx) {\n ctx.println(stmt, \"Object.defineProperty(\" + stmt.name + \".prototype, '\" + getter.name + \"', { get: function() {\");\n ctx.incIndent();\n if (getter.body.length > 0) {\n ctx.println(stmt, \"var self = this;\");\n this.visitAllStatements(getter.body, ctx);\n }\n ctx.decIndent();\n ctx.println(stmt, \"}});\");\n };\n /**\n * @param {?} stmt\n * @param {?} method\n * @param {?} ctx\n * @return {?}\n */\n AbstractJsEmitterVisitor.prototype._visitClassMethod = function (stmt, method, ctx) {\n ctx.print(stmt, stmt.name + \".prototype.\" + method.name + \" = function(\");\n this._visitParams(method.params, ctx);\n ctx.println(stmt, \") {\");\n ctx.incIndent();\n if (method.body.length > 0) {\n ctx.println(stmt, \"var self = this;\");\n this.visitAllStatements(method.body, ctx);\n }\n ctx.decIndent();\n ctx.println(stmt, \"};\");\n };\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n AbstractJsEmitterVisitor.prototype.visitReadVarExpr = function (ast, ctx) {\n if (ast.builtin === BuiltinVar.This) {\n ctx.print(ast, 'self');\n }\n else if (ast.builtin === BuiltinVar.Super) {\n throw new Error(\"'super' needs to be handled at a parent ast node, not at the variable level!\");\n }\n else {\n _super.prototype.visitReadVarExpr.call(this, ast, ctx);\n }\n return null;\n };\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n AbstractJsEmitterVisitor.prototype.visitDeclareVarStmt = function (stmt, ctx) {\n ctx.print(stmt, \"var \" + stmt.name + \" = \");\n stmt.value.visitExpression(this, ctx);\n ctx.println(stmt, \";\");\n return null;\n };\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n AbstractJsEmitterVisitor.prototype.visitCastExpr = function (ast, ctx) {\n ast.value.visitExpression(this, ctx);\n return null;\n };\n /**\n * @param {?} expr\n * @param {?} ctx\n * @return {?}\n */\n AbstractJsEmitterVisitor.prototype.visitInvokeFunctionExpr = function (expr, ctx) {\n var /** @type {?} */ fnExpr = expr.fn;\n if (fnExpr instanceof ReadVarExpr && fnExpr.builtin === BuiltinVar.Super) {\n ctx.currentClass.parent.visitExpression(this, ctx);\n ctx.print(expr, \".call(this\");\n if (expr.args.length > 0) {\n ctx.print(expr, \", \");\n this.visitAllExpressions(expr.args, ctx, ',');\n }\n ctx.print(expr, \")\");\n }\n else {\n _super.prototype.visitInvokeFunctionExpr.call(this, expr, ctx);\n }\n return null;\n };\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n AbstractJsEmitterVisitor.prototype.visitFunctionExpr = function (ast, ctx) {\n ctx.print(ast, \"function(\");\n this._visitParams(ast.params, ctx);\n ctx.println(ast, \") {\");\n ctx.incIndent();\n this.visitAllStatements(ast.statements, ctx);\n ctx.decIndent();\n ctx.print(ast, \"}\");\n return null;\n };\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n AbstractJsEmitterVisitor.prototype.visitDeclareFunctionStmt = function (stmt, ctx) {\n ctx.print(stmt, \"function \" + stmt.name + \"(\");\n this._visitParams(stmt.params, ctx);\n ctx.println(stmt, \") {\");\n ctx.incIndent();\n this.visitAllStatements(stmt.statements, ctx);\n ctx.decIndent();\n ctx.println(stmt, \"}\");\n return null;\n };\n /**\n * @param {?} stmt\n * @param {?} ctx\n * @return {?}\n */\n AbstractJsEmitterVisitor.prototype.visitTryCatchStmt = function (stmt, ctx) {\n ctx.println(stmt, \"try {\");\n ctx.incIndent();\n this.visitAllStatements(stmt.bodyStmts, ctx);\n ctx.decIndent();\n ctx.println(stmt, \"} catch (\" + CATCH_ERROR_VAR$1.name + \") {\");\n ctx.incIndent();\n var /** @type {?} */ catchStmts = [/** @type {?} */ (CATCH_STACK_VAR$1.set(CATCH_ERROR_VAR$1.prop('stack')).toDeclStmt(null, [\n StmtModifier.Final\n ]))].concat(stmt.catchStmts);\n this.visitAllStatements(catchStmts, ctx);\n ctx.decIndent();\n ctx.println(stmt, \"}\");\n return null;\n };\n /**\n * @param {?} params\n * @param {?} ctx\n * @return {?}\n */\n AbstractJsEmitterVisitor.prototype._visitParams = function (params, ctx) {\n this.visitAllObjects(function (param) { return ctx.print(null, param.name); }, params, ctx, ',');\n };\n /**\n * @param {?} method\n * @return {?}\n */\n AbstractJsEmitterVisitor.prototype.getBuiltinMethodName = function (method) {\n var /** @type {?} */ name;\n switch (method) {\n case BuiltinMethod.ConcatArray:\n name = 'concat';\n break;\n case BuiltinMethod.SubscribeObservable:\n name = 'subscribe';\n break;\n case BuiltinMethod.Bind:\n name = 'bind';\n break;\n default:\n throw new Error(\"Unknown builtin method: \" + method);\n }\n return name;\n };\n return AbstractJsEmitterVisitor;\n}(AbstractEmitterVisitor));\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 * @param {?} sourceUrl\n * @param {?} ctx\n * @param {?} vars\n * @return {?}\n */\nfunction evalExpression(sourceUrl$$1, ctx, vars) {\n var /** @type {?} */ fnBody = ctx.toSource() + \"\\n//# sourceURL=\" + sourceUrl$$1;\n var /** @type {?} */ fnArgNames = [];\n var /** @type {?} */ fnArgValues = [];\n for (var /** @type {?} */ argName in vars) {\n fnArgNames.push(argName);\n fnArgValues.push(vars[argName]);\n }\n if (isDevMode()) {\n // using `new Function(...)` generates a header, 1 line of no arguments, 2 lines otherwise\n // E.g. ```\n // function anonymous(a,b,c\n // /**/) { ... }```\n // We don't want to hard code this fact, so we auto detect it via an empty function first.\n var /** @type {?} */ emptyFn = new (Function.bind.apply(Function, [void 0].concat(fnArgNames.concat('return null;'))))().toString();\n var /** @type {?} */ headerLines = emptyFn.slice(0, emptyFn.indexOf('return null;')).split('\\n').length - 1;\n fnBody += \"\\n\" + ctx.toSourceMapGenerator(sourceUrl$$1, sourceUrl$$1, headerLines).toJsComment();\n }\n return new (Function.bind.apply(Function, [void 0].concat(fnArgNames.concat(fnBody))))().apply(void 0, fnArgValues);\n}\n/**\n * @param {?} sourceUrl\n * @param {?} statements\n * @param {?} resultVars\n * @return {?}\n */\nfunction jitStatements(sourceUrl$$1, statements, resultVars) {\n var /** @type {?} */ converter = new JitEmitterVisitor();\n var /** @type {?} */ ctx = EmitterVisitorContext.createRoot(resultVars);\n var /** @type {?} */ returnStmt = new ReturnStatement(literalArr(resultVars.map(function (resultVar) { return variable(resultVar); })));\n converter.visitAllStatements(statements.concat([returnStmt]), ctx);\n return evalExpression(sourceUrl$$1, ctx, converter.getArgs());\n}\nvar JitEmitterVisitor = (function (_super) {\n __extends(JitEmitterVisitor, _super);\n function JitEmitterVisitor() {\n var _this = _super.apply(this, arguments) || this;\n _this._evalArgNames = [];\n _this._evalArgValues = [];\n return _this;\n }\n /**\n * @return {?}\n */\n JitEmitterVisitor.prototype.getArgs = function () {\n var /** @type {?} */ result = {};\n for (var /** @type {?} */ i = 0; i < this._evalArgNames.length; i++) {\n result[this._evalArgNames[i]] = this._evalArgValues[i];\n }\n return result;\n };\n /**\n * @param {?} ast\n * @param {?} ctx\n * @return {?}\n */\n JitEmitterVisitor.prototype.visitExternalExpr = function (ast, ctx) {\n var /** @type {?} */ value = ast.value.reference;\n var /** @type {?} */ id = this._evalArgValues.indexOf(value);\n if (id === -1) {\n id = this._evalArgValues.length;\n this._evalArgValues.push(value);\n var /** @type {?} */ name = identifierName(ast.value) || 'val';\n this._evalArgNames.push(\"jit_\" + name + id);\n }\n ctx.print(ast, this._evalArgNames[id]);\n return null;\n };\n return JitEmitterVisitor;\n}(AbstractJsEmitterVisitor));\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 * An internal module of the Angular compiler that begins with component types,\n * extracts templates, and eventually produces a compiled version of the component\n * ready for linking into an application.\n *\n * \\@security When compiling templates at runtime, you must ensure that the entire template comes\n * from a trusted source. Attacker-controlled data introduced by a template could expose your\n * application to XSS risks. For more detail, see the [Security Guide](http://g.co/ng/security).\n */\nvar JitCompiler = (function () {\n /**\n * @param {?} _injector\n * @param {?} _metadataResolver\n * @param {?} _templateParser\n * @param {?} _styleCompiler\n * @param {?} _viewCompiler\n * @param {?} _ngModuleCompiler\n * @param {?} _compilerConfig\n * @param {?} _console\n */\n function JitCompiler(_injector, _metadataResolver, _templateParser, _styleCompiler, _viewCompiler, _ngModuleCompiler, _compilerConfig, _console) {\n this._injector = _injector;\n this._metadataResolver = _metadataResolver;\n this._templateParser = _templateParser;\n this._styleCompiler = _styleCompiler;\n this._viewCompiler = _viewCompiler;\n this._ngModuleCompiler = _ngModuleCompiler;\n this._compilerConfig = _compilerConfig;\n this._console = _console;\n this._compiledTemplateCache = new Map();\n this._compiledHostTemplateCache = new Map();\n this._compiledDirectiveWrapperCache = new Map();\n this._compiledNgModuleCache = new Map();\n this._sharedStylesheetCount = 0;\n }\n Object.defineProperty(JitCompiler.prototype, \"injector\", {\n /**\n * @return {?}\n */\n get: function () { return this._injector; },\n enumerable: true,\n configurable: true\n });\n /**\n * @template T\n * @param {?} moduleType\n * @return {?}\n */\n JitCompiler.prototype.compileModuleSync = function (moduleType) {\n return this._compileModuleAndComponents(moduleType, true).syncResult;\n };\n /**\n * @template T\n * @param {?} moduleType\n * @return {?}\n */\n JitCompiler.prototype.compileModuleAsync = function (moduleType) {\n return this._compileModuleAndComponents(moduleType, false).asyncResult;\n };\n /**\n * @template T\n * @param {?} moduleType\n * @return {?}\n */\n JitCompiler.prototype.compileModuleAndAllComponentsSync = function (moduleType) {\n return this._compileModuleAndAllComponents(moduleType, true).syncResult;\n };\n /**\n * @template T\n * @param {?} moduleType\n * @return {?}\n */\n JitCompiler.prototype.compileModuleAndAllComponentsAsync = function (moduleType) {\n return this._compileModuleAndAllComponents(moduleType, false).asyncResult;\n };\n /**\n * @param {?} component\n * @return {?}\n */\n JitCompiler.prototype.getNgContentSelectors = function (component) {\n this._console.warn('Compiler.getNgContentSelectors is deprecated. Use ComponentFactory.ngContentSelectors instead!');\n var /** @type {?} */ template = this._compiledTemplateCache.get(component);\n if (!template) {\n throw new Error(\"The component \" + ɵstringify(component) + \" is not yet compiled!\");\n }\n return template.compMeta.template.ngContentSelectors;\n };\n /**\n * @template T\n * @param {?} moduleType\n * @param {?} isSync\n * @return {?}\n */\n JitCompiler.prototype._compileModuleAndComponents = function (moduleType, isSync) {\n var _this = this;\n var /** @type {?} */ loadingPromise = this._loadModules(moduleType, isSync);\n var /** @type {?} */ createResult = function () {\n _this._compileComponents(moduleType, null);\n return _this._compileModule(moduleType);\n };\n if (isSync) {\n return new SyncAsyncResult(createResult());\n }\n else {\n return new SyncAsyncResult(null, loadingPromise.then(createResult));\n }\n };\n /**\n * @template T\n * @param {?} moduleType\n * @param {?} isSync\n * @return {?}\n */\n JitCompiler.prototype._compileModuleAndAllComponents = function (moduleType, isSync) {\n var _this = this;\n var /** @type {?} */ loadingPromise = this._loadModules(moduleType, isSync);\n var /** @type {?} */ createResult = function () {\n var /** @type {?} */ componentFactories = [];\n _this._compileComponents(moduleType, componentFactories);\n return new ModuleWithComponentFactories(_this._compileModule(moduleType), componentFactories);\n };\n if (isSync) {\n return new SyncAsyncResult(createResult());\n }\n else {\n return new SyncAsyncResult(null, loadingPromise.then(createResult));\n }\n };\n /**\n * @param {?} mainModule\n * @param {?} isSync\n * @return {?}\n */\n JitCompiler.prototype._loadModules = function (mainModule, isSync) {\n var _this = this;\n var /** @type {?} */ loadingPromises = [];\n var /** @type {?} */ ngModule = this._metadataResolver.getNgModuleMetadata(mainModule);\n // Note: the loadingPromise for a module only includes the loading of the exported directives\n // of imported modules.\n // However, for runtime compilation, we want to transitively compile all modules,\n // so we also need to call loadNgModuleDirectiveAndPipeMetadata for all nested modules.\n ngModule.transitiveModule.modules.forEach(function (localModuleMeta) {\n loadingPromises.push(_this._metadataResolver.loadNgModuleDirectiveAndPipeMetadata(localModuleMeta.reference, isSync));\n });\n return Promise.all(loadingPromises);\n };\n /**\n * @template T\n * @param {?} moduleType\n * @return {?}\n */\n JitCompiler.prototype._compileModule = function (moduleType) {\n var _this = this;\n var /** @type {?} */ ngModuleFactory = this._compiledNgModuleCache.get(moduleType);\n if (!ngModuleFactory) {\n var /** @type {?} */ moduleMeta_1 = this._metadataResolver.getNgModuleMetadata(moduleType);\n // Always provide a bound Compiler\n var /** @type {?} */ extraProviders = [this._metadataResolver.getProviderMetadata(new ProviderMeta(Compiler, { useFactory: function () { return new ModuleBoundCompiler(_this, moduleMeta_1.type.reference); } }))];\n var /** @type {?} */ compileResult = this._ngModuleCompiler.compile(moduleMeta_1, extraProviders);\n if (!this._compilerConfig.useJit) {\n ngModuleFactory =\n interpretStatements(compileResult.statements, [compileResult.ngModuleFactoryVar])[0];\n }\n else {\n ngModuleFactory = jitStatements(ngModuleJitUrl(moduleMeta_1), compileResult.statements, [compileResult.ngModuleFactoryVar])[0];\n }\n this._compiledNgModuleCache.set(moduleMeta_1.type.reference, ngModuleFactory);\n }\n return ngModuleFactory;\n };\n /**\n * \\@internal\n * @param {?} mainModule\n * @param {?} allComponentFactories\n * @return {?}\n */\n JitCompiler.prototype._compileComponents = function (mainModule, allComponentFactories) {\n var _this = this;\n var /** @type {?} */ ngModule = this._metadataResolver.getNgModuleMetadata(mainModule);\n var /** @type {?} */ moduleByDirective = new Map();\n var /** @type {?} */ templates = new Set();\n ngModule.transitiveModule.modules.forEach(function (localModuleSummary) {\n var /** @type {?} */ localModuleMeta = _this._metadataResolver.getNgModuleMetadata(localModuleSummary.reference);\n localModuleMeta.declaredDirectives.forEach(function (dirIdentifier) {\n moduleByDirective.set(dirIdentifier.reference, localModuleMeta);\n var /** @type {?} */ dirMeta = _this._metadataResolver.getDirectiveMetadata(dirIdentifier.reference);\n if (dirMeta.isComponent) {\n templates.add(_this._createCompiledTemplate(dirMeta, localModuleMeta));\n if (allComponentFactories) {\n var /** @type {?} */ template = _this._createCompiledHostTemplate(dirMeta.type.reference, localModuleMeta);\n templates.add(template);\n allComponentFactories.push(/** @type {?} */ (dirMeta.componentFactory));\n }\n }\n });\n });\n ngModule.transitiveModule.modules.forEach(function (localModuleSummary) {\n var /** @type {?} */ localModuleMeta = _this._metadataResolver.getNgModuleMetadata(localModuleSummary.reference);\n localModuleMeta.declaredDirectives.forEach(function (dirIdentifier) {\n var /** @type {?} */ dirMeta = _this._metadataResolver.getDirectiveMetadata(dirIdentifier.reference);\n if (dirMeta.isComponent) {\n dirMeta.entryComponents.forEach(function (entryComponentType) {\n var /** @type {?} */ moduleMeta = moduleByDirective.get(entryComponentType.componentType);\n templates.add(_this._createCompiledHostTemplate(entryComponentType.componentType, moduleMeta));\n });\n }\n });\n localModuleMeta.entryComponents.forEach(function (entryComponentType) {\n var /** @type {?} */ moduleMeta = moduleByDirective.get(entryComponentType.componentType);\n templates.add(_this._createCompiledHostTemplate(entryComponentType.componentType, moduleMeta));\n });\n });\n templates.forEach(function (template) { return _this._compileTemplate(template); });\n };\n /**\n * @param {?} type\n * @return {?}\n */\n JitCompiler.prototype.clearCacheFor = function (type) {\n this._compiledNgModuleCache.delete(type);\n this._metadataResolver.clearCacheFor(type);\n this._compiledHostTemplateCache.delete(type);\n var /** @type {?} */ compiledTemplate = this._compiledTemplateCache.get(type);\n if (compiledTemplate) {\n this._compiledTemplateCache.delete(type);\n }\n };\n /**\n * @return {?}\n */\n JitCompiler.prototype.clearCache = function () {\n this._metadataResolver.clearCache();\n this._compiledTemplateCache.clear();\n this._compiledHostTemplateCache.clear();\n this._compiledNgModuleCache.clear();\n };\n /**\n * @param {?} compType\n * @param {?} ngModule\n * @return {?}\n */\n JitCompiler.prototype._createCompiledHostTemplate = function (compType, ngModule) {\n if (!ngModule) {\n throw new Error(\"Component \" + ɵstringify(compType) + \" is not part of any NgModule or the module has not been imported into your module.\");\n }\n var /** @type {?} */ compiledTemplate = this._compiledHostTemplateCache.get(compType);\n if (!compiledTemplate) {\n var /** @type {?} */ compMeta = this._metadataResolver.getDirectiveMetadata(compType);\n assertComponent(compMeta);\n var /** @type {?} */ componentFactory = (compMeta.componentFactory);\n var /** @type {?} */ hostClass = this._metadataResolver.getHostComponentType(compType);\n var /** @type {?} */ hostMeta = createHostComponentMeta(hostClass, compMeta, /** @type {?} */ (ɵgetComponentViewDefinitionFactory(componentFactory)));\n compiledTemplate =\n new CompiledTemplate(true, compMeta.type, hostMeta, ngModule, [compMeta.type]);\n this._compiledHostTemplateCache.set(compType, compiledTemplate);\n }\n return compiledTemplate;\n };\n /**\n * @param {?} compMeta\n * @param {?} ngModule\n * @return {?}\n */\n JitCompiler.prototype._createCompiledTemplate = function (compMeta, ngModule) {\n var /** @type {?} */ compiledTemplate = this._compiledTemplateCache.get(compMeta.type.reference);\n if (!compiledTemplate) {\n assertComponent(compMeta);\n compiledTemplate = new CompiledTemplate(false, compMeta.type, compMeta, ngModule, ngModule.transitiveModule.directives);\n this._compiledTemplateCache.set(compMeta.type.reference, compiledTemplate);\n }\n return compiledTemplate;\n };\n /**\n * @param {?} template\n * @return {?}\n */\n JitCompiler.prototype._compileTemplate = function (template) {\n var _this = this;\n if (template.isCompiled) {\n return;\n }\n var /** @type {?} */ compMeta = template.compMeta;\n var /** @type {?} */ externalStylesheetsByModuleUrl = new Map();\n var /** @type {?} */ stylesCompileResult = this._styleCompiler.compileComponent(compMeta);\n stylesCompileResult.externalStylesheets.forEach(function (r) { externalStylesheetsByModuleUrl.set(r.meta.moduleUrl, r); });\n this._resolveStylesCompileResult(stylesCompileResult.componentStylesheet, externalStylesheetsByModuleUrl);\n var /** @type {?} */ directives = template.directives.map(function (dir) { return _this._metadataResolver.getDirectiveSummary(dir.reference); });\n var /** @type {?} */ pipes = template.ngModule.transitiveModule.pipes.map(function (pipe) { return _this._metadataResolver.getPipeSummary(pipe.reference); });\n var _a = this._templateParser.parse(compMeta, compMeta.template.template, directives, pipes, template.ngModule.schemas, templateSourceUrl(template.ngModule.type, template.compMeta, template.compMeta.template)), parsedTemplate = _a.template, usedPipes = _a.pipes;\n var /** @type {?} */ compileResult = this._viewCompiler.compileComponent(compMeta, parsedTemplate, variable(stylesCompileResult.componentStylesheet.stylesVar), usedPipes);\n var /** @type {?} */ statements = stylesCompileResult.componentStylesheet.statements.concat(compileResult.statements);\n var /** @type {?} */ viewClassAndRendererTypeVars = compMeta.isHost ?\n [compileResult.viewClassVar] :\n [compileResult.viewClassVar, compileResult.rendererTypeVar];\n var /** @type {?} */ viewClass;\n var /** @type {?} */ rendererType;\n if (!this._compilerConfig.useJit) {\n _b = interpretStatements(statements, viewClassAndRendererTypeVars), viewClass = _b[0], rendererType = _b[1];\n }\n else {\n _c = jitStatements(templateJitUrl(template.ngModule.type, template.compMeta), statements, viewClassAndRendererTypeVars), viewClass = _c[0], rendererType = _c[1];\n }\n template.compiled(viewClass, rendererType);\n var _b, _c;\n };\n /**\n * @param {?} result\n * @param {?} externalStylesheetsByModuleUrl\n * @return {?}\n */\n JitCompiler.prototype._resolveStylesCompileResult = function (result, externalStylesheetsByModuleUrl) {\n var _this = this;\n result.dependencies.forEach(function (dep, i) {\n var /** @type {?} */ nestedCompileResult = externalStylesheetsByModuleUrl.get(dep.moduleUrl);\n var /** @type {?} */ nestedStylesArr = _this._resolveAndEvalStylesCompileResult(nestedCompileResult, externalStylesheetsByModuleUrl);\n dep.valuePlaceholder.reference = nestedStylesArr;\n });\n };\n /**\n * @param {?} result\n * @param {?} externalStylesheetsByModuleUrl\n * @return {?}\n */\n JitCompiler.prototype._resolveAndEvalStylesCompileResult = function (result, externalStylesheetsByModuleUrl) {\n this._resolveStylesCompileResult(result, externalStylesheetsByModuleUrl);\n if (!this._compilerConfig.useJit) {\n return interpretStatements(result.statements, [result.stylesVar])[0];\n }\n else {\n return jitStatements(sharedStylesheetJitUrl(result.meta, this._sharedStylesheetCount++), result.statements, [result.stylesVar])[0];\n }\n };\n return JitCompiler;\n}());\nJitCompiler.decorators = [\n { type: CompilerInjectable },\n];\n/**\n * @nocollapse\n */\nJitCompiler.ctorParameters = function () { return [\n { type: Injector, },\n { type: CompileMetadataResolver, },\n { type: TemplateParser, },\n { type: StyleCompiler, },\n { type: ViewCompiler, },\n { type: NgModuleCompiler, },\n { type: CompilerConfig, },\n { type: ɵConsole, },\n]; };\nvar CompiledTemplate = (function () {\n /**\n * @param {?} isHost\n * @param {?} compType\n * @param {?} compMeta\n * @param {?} ngModule\n * @param {?} directives\n */\n function CompiledTemplate(isHost, compType, compMeta, ngModule, directives) {\n this.isHost = isHost;\n this.compType = compType;\n this.compMeta = compMeta;\n this.ngModule = ngModule;\n this.directives = directives;\n this._viewClass = null;\n this.isCompiled = false;\n }\n /**\n * @param {?} viewClass\n * @param {?} rendererType\n * @return {?}\n */\n CompiledTemplate.prototype.compiled = function (viewClass, rendererType) {\n this._viewClass = viewClass;\n ((this.compMeta.componentViewType)).setDelegate(viewClass);\n for (var /** @type {?} */ prop in rendererType) {\n ((this.compMeta.rendererType))[prop] = rendererType[prop];\n }\n this.isCompiled = true;\n };\n return CompiledTemplate;\n}());\n/**\n * @param {?} meta\n * @return {?}\n */\nfunction assertComponent(meta) {\n if (!meta.isComponent) {\n throw new Error(\"Could not compile '\" + identifierName(meta.type) + \"' because it is not a component.\");\n }\n}\n/**\n * Implements `Compiler` by delegating to the JitCompiler using a known module.\n */\nvar ModuleBoundCompiler = (function () {\n /**\n * @param {?} _delegate\n * @param {?} _ngModule\n */\n function ModuleBoundCompiler(_delegate, _ngModule) {\n this._delegate = _delegate;\n this._ngModule = _ngModule;\n }\n Object.defineProperty(ModuleBoundCompiler.prototype, \"_injector\", {\n /**\n * @return {?}\n */\n get: function () { return this._delegate.injector; },\n enumerable: true,\n configurable: true\n });\n /**\n * @template T\n * @param {?} moduleType\n * @return {?}\n */\n ModuleBoundCompiler.prototype.compileModuleSync = function (moduleType) {\n return this._delegate.compileModuleSync(moduleType);\n };\n /**\n * @template T\n * @param {?} moduleType\n * @return {?}\n */\n ModuleBoundCompiler.prototype.compileModuleAsync = function (moduleType) {\n return this._delegate.compileModuleAsync(moduleType);\n };\n /**\n * @template T\n * @param {?} moduleType\n * @return {?}\n */\n ModuleBoundCompiler.prototype.compileModuleAndAllComponentsSync = function (moduleType) {\n return this._delegate.compileModuleAndAllComponentsSync(moduleType);\n };\n /**\n * @template T\n * @param {?} moduleType\n * @return {?}\n */\n ModuleBoundCompiler.prototype.compileModuleAndAllComponentsAsync = function (moduleType) {\n return this._delegate.compileModuleAndAllComponentsAsync(moduleType);\n };\n /**\n * @param {?} component\n * @return {?}\n */\n ModuleBoundCompiler.prototype.getNgContentSelectors = function (component) {\n return this._delegate.getNgContentSelectors(component);\n };\n /**\n * Clears all caches\n * @return {?}\n */\n ModuleBoundCompiler.prototype.clearCache = function () { this._delegate.clearCache(); };\n /**\n * Clears the cache for the given component/ngModule.\n * @param {?} type\n * @return {?}\n */\n ModuleBoundCompiler.prototype.clearCacheFor = function (type) { this._delegate.clearCacheFor(type); };\n return ModuleBoundCompiler;\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 * A container for message extracted from the templates.\n */\nvar MessageBundle = (function () {\n /**\n * @param {?} _htmlParser\n * @param {?} _implicitTags\n * @param {?} _implicitAttrs\n * @param {?=} _locale\n */\n function MessageBundle(_htmlParser, _implicitTags, _implicitAttrs, _locale) {\n if (_locale === void 0) { _locale = null; }\n this._htmlParser = _htmlParser;\n this._implicitTags = _implicitTags;\n this._implicitAttrs = _implicitAttrs;\n this._locale = _locale;\n this._messages = [];\n }\n /**\n * @param {?} html\n * @param {?} url\n * @param {?} interpolationConfig\n * @return {?}\n */\n MessageBundle.prototype.updateFromTemplate = function (html, url, interpolationConfig) {\n var /** @type {?} */ htmlParserResult = this._htmlParser.parse(html, url, true, interpolationConfig);\n if (htmlParserResult.errors.length) {\n return htmlParserResult.errors;\n }\n var /** @type {?} */ i18nParserResult = extractMessages(htmlParserResult.rootNodes, interpolationConfig, this._implicitTags, this._implicitAttrs);\n if (i18nParserResult.errors.length) {\n return i18nParserResult.errors;\n }\n (_a = this._messages).push.apply(_a, i18nParserResult.messages);\n var _a;\n };\n /**\n * @return {?}\n */\n MessageBundle.prototype.getMessages = function () { return this._messages; };\n /**\n * @param {?} serializer\n * @return {?}\n */\n MessageBundle.prototype.write = function (serializer) {\n var /** @type {?} */ messages = {};\n var /** @type {?} */ mapperVisitor = new MapPlaceholderNames();\n // Deduplicate messages based on their ID\n this._messages.forEach(function (message) {\n var /** @type {?} */ id = serializer.digest(message);\n if (!messages.hasOwnProperty(id)) {\n messages[id] = message;\n }\n });\n // Transform placeholder names using the serializer mapping\n var /** @type {?} */ msgList = Object.keys(messages).map(function (id) {\n var /** @type {?} */ mapper = serializer.createNameMapper(messages[id]);\n var /** @type {?} */ src = messages[id];\n var /** @type {?} */ nodes = mapper ? mapperVisitor.convert(src.nodes, mapper) : src.nodes;\n return new Message(nodes, {}, {}, src.meaning, src.description, id);\n });\n return serializer.write(msgList, this._locale);\n };\n return MessageBundle;\n}());\nvar MapPlaceholderNames = (function (_super) {\n __extends(MapPlaceholderNames, _super);\n function MapPlaceholderNames() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {?} nodes\n * @param {?} mapper\n * @return {?}\n */\n MapPlaceholderNames.prototype.convert = function (nodes, mapper) {\n var _this = this;\n return mapper ? nodes.map(function (n) { return n.visit(_this, mapper); }) : nodes;\n };\n /**\n * @param {?} ph\n * @param {?} mapper\n * @return {?}\n */\n MapPlaceholderNames.prototype.visitTagPlaceholder = function (ph, mapper) {\n var _this = this;\n var /** @type {?} */ startName = mapper.toPublicName(ph.startName);\n var /** @type {?} */ closeName = ph.closeName ? mapper.toPublicName(ph.closeName) : ph.closeName;\n var /** @type {?} */ children = ph.children.map(function (n) { return n.visit(_this, mapper); });\n return new TagPlaceholder(ph.tag, ph.attrs, startName, closeName, children, ph.isVoid, ph.sourceSpan);\n };\n /**\n * @param {?} ph\n * @param {?} mapper\n * @return {?}\n */\n MapPlaceholderNames.prototype.visitPlaceholder = function (ph, mapper) {\n return new Placeholder(ph.value, mapper.toPublicName(ph.name), ph.sourceSpan);\n };\n /**\n * @param {?} ph\n * @param {?} mapper\n * @return {?}\n */\n MapPlaceholderNames.prototype.visitIcuPlaceholder = function (ph, mapper) {\n return new IcuPlaceholder(ph.value, mapper.toPublicName(ph.name), ph.sourceSpan);\n };\n return MapPlaceholderNames;\n}(CloneVisitor));\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 * Extract i18n messages from source code\n */\nvar Extractor = (function () {\n /**\n * @param {?} host\n * @param {?} staticSymbolResolver\n * @param {?} messageBundle\n * @param {?} metadataResolver\n */\n function Extractor(host, staticSymbolResolver, messageBundle, metadataResolver) {\n this.host = host;\n this.staticSymbolResolver = staticSymbolResolver;\n this.messageBundle = messageBundle;\n this.metadataResolver = metadataResolver;\n }\n /**\n * @param {?} rootFiles\n * @return {?}\n */\n Extractor.prototype.extract = function (rootFiles) {\n var _this = this;\n var /** @type {?} */ programSymbols = extractProgramSymbols(this.staticSymbolResolver, rootFiles, this.host);\n var _a = analyzeAndValidateNgModules(programSymbols, this.host, this.metadataResolver), files = _a.files, ngModules = _a.ngModules;\n return Promise\n .all(ngModules.map(function (ngModule) { return _this.metadataResolver.loadNgModuleDirectiveAndPipeMetadata(ngModule.type.reference, false); }))\n .then(function () {\n var /** @type {?} */ errors = [];\n files.forEach(function (file) {\n var /** @type {?} */ compMetas = [];\n file.directives.forEach(function (directiveType) {\n var /** @type {?} */ dirMeta = _this.metadataResolver.getDirectiveMetadata(directiveType);\n if (dirMeta && dirMeta.isComponent) {\n compMetas.push(dirMeta);\n }\n });\n compMetas.forEach(function (compMeta) {\n var /** @type {?} */ html = compMeta.template.template;\n var /** @type {?} */ interpolationConfig = InterpolationConfig.fromArray(compMeta.template.interpolation);\n errors.push.apply(errors, _this.messageBundle.updateFromTemplate(html, file.srcUrl, interpolationConfig));\n });\n });\n if (errors.length) {\n throw new Error(errors.map(function (e) { return e.toString(); }).join('\\n'));\n }\n return _this.messageBundle;\n });\n };\n /**\n * @param {?} host\n * @param {?} locale\n * @return {?}\n */\n Extractor.create = function (host, locale) {\n var /** @type {?} */ htmlParser = new I18NHtmlParser(new HtmlParser());\n var /** @type {?} */ urlResolver = createOfflineCompileUrlResolver();\n var /** @type {?} */ symbolCache = new StaticSymbolCache();\n var /** @type {?} */ summaryResolver = new AotSummaryResolver(host, symbolCache);\n var /** @type {?} */ staticSymbolResolver = new StaticSymbolResolver(host, symbolCache, summaryResolver);\n var /** @type {?} */ staticReflector = new StaticReflector(summaryResolver, staticSymbolResolver);\n StaticAndDynamicReflectionCapabilities.install(staticReflector);\n var /** @type {?} */ config = new CompilerConfig({ defaultEncapsulation: ViewEncapsulation.Emulated, useJit: false });\n var /** @type {?} */ normalizer = new DirectiveNormalizer({ get: function (url) { return host.loadResource(url); } }, urlResolver, htmlParser, config);\n var /** @type {?} */ elementSchemaRegistry = new DomElementSchemaRegistry();\n var /** @type {?} */ resolver = new CompileMetadataResolver(config, new NgModuleResolver(staticReflector), new DirectiveResolver(staticReflector), new PipeResolver(staticReflector), summaryResolver, elementSchemaRegistry, normalizer, new ɵConsole(), symbolCache, staticReflector);\n // TODO(vicb): implicit tags & attributes\n var /** @type {?} */ messageBundle = new MessageBundle(htmlParser, [], {}, locale);\n var /** @type {?} */ extractor = new Extractor(host, staticSymbolResolver, messageBundle, resolver);\n return { extractor: extractor, staticReflector: staticReflector };\n };\n return Extractor;\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 * @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 */\nvar _NO_RESOURCE_LOADER = {\n /**\n * @param {?} url\n * @return {?}\n */\n get: function (url) {\n throw new Error(\"No ResourceLoader implementation has been provided. Can't read the url \\\"\" + url + \"\\\"\");\n }\n};\nvar baseHtmlParser = new InjectionToken('HtmlParser');\n/**\n * A set of providers that provide `JitCompiler` and its dependencies to use for\n * template compilation.\n */\nvar COMPILER_PROVIDERS = [\n { provide: ɵReflector, useValue: ɵreflector },\n { provide: ɵReflectorReader, useExisting: ɵReflector },\n { provide: ResourceLoader, useValue: _NO_RESOURCE_LOADER },\n SummaryResolver,\n ɵConsole,\n Lexer,\n Parser,\n {\n provide: baseHtmlParser,\n useClass: HtmlParser,\n },\n {\n provide: I18NHtmlParser,\n useFactory: function (parser, translations, format, config, console) { return new I18NHtmlParser(parser, translations, format, config.missingTranslation, console); },\n deps: [\n baseHtmlParser,\n [new Optional(), new Inject(TRANSLATIONS)],\n [new Optional(), new Inject(TRANSLATIONS_FORMAT)],\n [CompilerConfig],\n [ɵConsole],\n ]\n },\n {\n provide: HtmlParser,\n useExisting: I18NHtmlParser,\n },\n TemplateParser,\n DirectiveNormalizer,\n CompileMetadataResolver,\n DEFAULT_PACKAGE_URL_PROVIDER,\n StyleCompiler,\n ViewCompiler,\n NgModuleCompiler,\n { provide: CompilerConfig, useValue: new CompilerConfig() },\n JitCompiler,\n { provide: Compiler, useExisting: JitCompiler },\n DomElementSchemaRegistry,\n { provide: ElementSchemaRegistry, useExisting: DomElementSchemaRegistry },\n UrlResolver,\n DirectiveResolver,\n PipeResolver,\n NgModuleResolver,\n];\nvar JitCompilerFactory = (function () {\n /**\n * @param {?} defaultOptions\n */\n function JitCompilerFactory(defaultOptions) {\n var compilerOptions = {\n useDebug: isDevMode(),\n useJit: true,\n defaultEncapsulation: ViewEncapsulation.Emulated,\n missingTranslation: MissingTranslationStrategy.Warning,\n enableLegacyTemplate: true,\n };\n this._defaultOptions = [compilerOptions].concat(defaultOptions);\n }\n /**\n * @param {?=} options\n * @return {?}\n */\n JitCompilerFactory.prototype.createCompiler = function (options) {\n if (options === void 0) { options = []; }\n var /** @type {?} */ opts = _mergeOptions(this._defaultOptions.concat(options));\n var /** @type {?} */ injector = ReflectiveInjector.resolveAndCreate([\n COMPILER_PROVIDERS, {\n provide: CompilerConfig,\n useFactory: function () {\n return new CompilerConfig({\n // let explicit values from the compiler options overwrite options\n // from the app providers\n useJit: opts.useJit,\n // let explicit values from the compiler options overwrite options\n // from the app providers\n defaultEncapsulation: opts.defaultEncapsulation,\n missingTranslation: opts.missingTranslation,\n enableLegacyTemplate: opts.enableLegacyTemplate,\n });\n },\n deps: []\n },\n opts.providers\n ]);\n return injector.get(Compiler);\n };\n return JitCompilerFactory;\n}());\nJitCompilerFactory.decorators = [\n { type: CompilerInjectable },\n];\n/**\n * @nocollapse\n */\nJitCompilerFactory.ctorParameters = function () { return [\n { type: Array, decorators: [{ type: Inject, args: [COMPILER_OPTIONS,] },] },\n]; };\n/**\n * @return {?}\n */\nfunction _initReflector() {\n ɵreflector.reflectionCapabilities = new ɵReflectionCapabilities();\n}\n/**\n * A platform that included corePlatform and the compiler.\n *\n * \\@experimental\n */\nvar platformCoreDynamic = createPlatformFactory(platformCore, 'coreDynamic', [\n { provide: COMPILER_OPTIONS, useValue: {}, multi: true },\n { provide: CompilerFactory, useClass: JitCompilerFactory },\n { provide: PLATFORM_INITIALIZER, useValue: _initReflector, multi: true },\n]);\n/**\n * @param {?} optionsArr\n * @return {?}\n */\nfunction _mergeOptions(optionsArr) {\n return {\n useJit: _lastDefined(optionsArr.map(function (options) { return options.useJit; })),\n defaultEncapsulation: _lastDefined(optionsArr.map(function (options) { return options.defaultEncapsulation; })),\n providers: _mergeArrays(optionsArr.map(function (options) { return options.providers; })),\n missingTranslation: _lastDefined(optionsArr.map(function (options) { return options.missingTranslation; })),\n };\n}\n/**\n * @template T\n * @param {?} args\n * @return {?}\n */\nfunction _lastDefined(args) {\n for (var /** @type {?} */ i = args.length - 1; i >= 0; i--) {\n if (args[i] !== undefined) {\n return args[i];\n }\n }\n return undefined;\n}\n/**\n * @param {?} parts\n * @return {?}\n */\nfunction _mergeArrays(parts) {\n var /** @type {?} */ result = [];\n parts.forEach(function (part) { return part && result.push.apply(result, part); });\n return result;\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 * Interface that defines how import statements should be generated.\n * @abstract\n */\nvar ImportResolver = (function () {\n function ImportResolver() {\n }\n /**\n * Converts a file path to a module name that can be used as an `import.\n * I.e. `path/to/importedFile.ts` should be imported by `path/to/containingFile.ts`.\n * @abstract\n * @param {?} importedFilePath\n * @param {?} containingFilePath\n * @return {?}\n */\n ImportResolver.prototype.fileNameToModuleName = function (importedFilePath, containingFilePath) { };\n /**\n * Converts the given StaticSymbol into another StaticSymbol that should be used\n * to generate the import from.\n * @abstract\n * @param {?} symbol\n * @return {?}\n */\n ImportResolver.prototype.getImportAs = function (symbol) { };\n /**\n * Determine the arity of a type.\n * @abstract\n * @param {?} symbol\n * @return {?}\n */\n ImportResolver.prototype.getTypeArity = function (symbol) { };\n return ImportResolver;\n}());\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @module\n * @description\n * Entry point for all APIs of the compiler package.\n *\n * <div class=\"callout is-critical\">\n * <header>Unstable APIs</header>\n * <p>\n * All compiler apis are currently considered experimental and private!\n * </p>\n * <p>\n * We expect the APIs in this package to keep on changing. Do not rely on them.\n * </p>\n * </div>\n */\n// This file only reexports content of the `src` folder. Keep it that way.\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @module\n * @description\n * Entry point for all public APIs of the compiler package.\n */\n// This file only reexports content of the `src` folder. Keep it that way.\nexport { VERSION, TEMPLATE_TRANSFORMS, CompilerConfig, JitCompiler, DirectiveResolver, PipeResolver, NgModuleResolver, DEFAULT_INTERPOLATION_CONFIG, InterpolationConfig, NgModuleCompiler, ViewCompiler, isSyntaxError, syntaxError, TextAst, BoundTextAst, AttrAst, BoundElementPropertyAst, BoundEventAst, ReferenceAst, VariableAst, ElementAst, EmbeddedTemplateAst, BoundDirectivePropertyAst, DirectiveAst, ProviderAst, ProviderAstType, NgContentAst, PropertyBindingType, templateVisitAll, CompileAnimationEntryMetadata, CompileAnimationStateMetadata, CompileAnimationStateDeclarationMetadata, CompileAnimationStateTransitionMetadata, CompileAnimationMetadata, CompileAnimationKeyframesSequenceMetadata, CompileAnimationStyleMetadata, CompileAnimationAnimateMetadata, CompileAnimationWithStepsMetadata, CompileAnimationSequenceMetadata, CompileAnimationGroupMetadata, identifierName, identifierModuleUrl, viewClassName, rendererTypeName, hostViewClassName, dirWrapperClassName, componentFactoryName, CompileSummaryKind, tokenName, tokenReference, CompileStylesheetMetadata, CompileTemplateMetadata, CompileDirectiveMetadata, createHostComponentMeta, CompilePipeMetadata, CompileNgModuleMetadata, TransitiveCompileNgModuleMetadata, ProviderMeta, flatten, sourceUrl, templateSourceUrl, sharedStylesheetJitUrl, ngModuleJitUrl, templateJitUrl, createAotCompiler, AotCompiler, analyzeNgModules, analyzeAndValidateNgModules, extractProgramSymbols, GeneratedFile, StaticReflector, StaticAndDynamicReflectionCapabilities, StaticSymbol, StaticSymbolCache, ResolvedStaticSymbol, StaticSymbolResolver, unescapeIdentifier, AotSummaryResolver, SummaryResolver, COMPILER_PROVIDERS, JitCompilerFactory, platformCoreDynamic, createUrlResolverWithoutPackagePrefix, createOfflineCompileUrlResolver, DEFAULT_PACKAGE_URL_PROVIDER, UrlResolver, getUrlScheme, ResourceLoader, ElementSchemaRegistry, Extractor, I18NHtmlParser, MessageBundle, Serializer, Xliff, Xliff2, Xmb, Xtb, DirectiveNormalizer, ParserError, ParseSpan, AST, Quote, EmptyExpr, ImplicitReceiver, Chain, Conditional, PropertyRead, PropertyWrite, SafePropertyRead, KeyedRead, KeyedWrite, BindingPipe, LiteralPrimitive, LiteralArray, LiteralMap, Interpolation, Binary, PrefixNot, MethodCall, SafeMethodCall, FunctionCall, ASTWithSource, TemplateBinding, RecursiveAstVisitor, AstTransformer, TokenType, Lexer, Token, EOF, isIdentifier, isQuote, SplitInterpolation, TemplateBindingParseResult, Parser, _ParseAST, ERROR_COLLECTOR_TOKEN, CompileMetadataResolver, componentModuleUrl, Text, Expansion, ExpansionCase, Attribute$1 as Attribute, Element, Comment, visitAll, ParseTreeResult, TreeError, HtmlParser, HtmlTagDefinition, getHtmlTagDefinition, TagContentType, splitNsName, getNsPrefix, mergeNsAndName, NAMED_ENTITIES, ImportResolver, debugOutputAstAsTypeScript, TypeScriptEmitter, ParseLocation, ParseSourceFile, ParseSourceSpan, ParseErrorLevel, ParseError, typeSourceSpan, DomElementSchemaRegistry, CssSelector, SelectorMatcher, SelectorListContext, SelectorContext, StylesCompileDependency, StylesCompileResult, CompiledStylesheet, StyleCompiler, TemplateParseError, TemplateParseResult, TemplateParser, splitClasses, createElementCssSelector, removeSummaryDuplicates };\n//# sourceMappingURL=compiler.js.map\n//# sourceMappingURL=compiler.es5.js.map"],"names":["this","Version","ɵstringify","ɵreflector","ViewEncapsulation","ChangeDetectionStrategy","isDevMode","MissingTranslationStrategy","ANALYZE_FOR_ENTRY_COMPONENTS","ElementRef","NgModuleRef","ViewContainerRef","ChangeDetectorRef","QueryList","TemplateRef","ɵCodegenComponentFactoryResolver","ComponentFactoryResolver","ComponentFactory","ComponentRef","NgModuleFactory","ɵNgModuleInjector","ɵregisterModuleFactory","Injector","SecurityContext","LOCALE_ID","TRANSLATIONS_FORMAT","ɵinlineInterpolate","ɵinterpolate","ɵEMPTY_ARRAY","ɵEMPTY_MAP","Renderer","ɵvid","ɵeld","ɵand","ɵted","ɵdid","ɵprd","ɵqud","ɵpad","ɵpod","ɵppd","ɵpid","ɵnov","ɵncd","ɵunv","ɵcrt","ɵccf","InjectionToken","ɵConsole","Optional","Inject","PACKAGE_ROOT_URL","resolveForwardRef","Input","Output","HostBinding","HostListener","Query","Component","Directive","ɵReflectorReader","ɵLifecycleHooks","NgModule","Pipe","Injectable","ɵLIFECYCLE_HOOKS_VALUES","Host","Self","SkipSelf","Attribute","Type","ɵERROR_COMPONENT_TYPE","NO_ERRORS_SCHEMA","CUSTOM_ELEMENTS_SCHEMA","ɵelementEventFullName","ɵReflectionCapabilities","ContentChild","ContentChildren","ViewChild","ViewChildren","trigger","state","transition","style","animate","keyframes","sequence","group","ModuleWithComponentFactories","Compiler","ɵgetComponentViewDefinitionFactory","ɵReflector","TRANSLATIONS","ReflectiveInjector","COMPILER_OPTIONS","createPlatformFactory","platformCore","CompilerFactory","PLATFORM_INITIALIZER"],"mappings":"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"}