{"version":3,"sources":["/Users/tbosch/projects/angular/dist/packages-dist/compiler/bundles/compiler.umd.js"],"names":["global","factory","exports","module","require","define","amd","ng","compiler","core","this","_angular_core","__extends","d","b","__","constructor","extendStatics","prototype","Object","create","templateVisitAll","visitor","asts","context","result","visit","ast","forEach","astResult","push","splitNsName","elementName","colonIndex","indexOf","Error","slice","isNgContainer","tagName","isNgContent","isNgTemplate","getNsPrefix","fullName","mergeNsAndName","prefix","localName","getHtmlTagDefinition","TAG_DEFINITIONS","toLowerCase","_DEFAULT_TAG_DEFINITION","dashCaseToCamelCase","input","replace","DASH_CASE_REGEXP","m","_i","arguments","length","toUpperCase","splitAtColon","defaultValues","_splitAt","splitAtPeriod","character","characterIndex","trim","visitValue","value","Array","isArray","visitArray","isStrictStringMap","visitStringMap","visitPrimitive","visitOther","isDefined","val","undefined","noUndefined","syntaxError","msg","parseErrors","error","ERROR_SYNTAX_ERROR","ERROR_PARSE_ERRORS","isSyntaxError","getParseErrors","escapeRegExp","s","obj","getPrototypeOf","STRING_MAP_PROTO","utf8Encode","str","encoded","index","codePoint","charCodeAt","low","String","fromCharCode","_sanitizeIdentifier","name","identifierName","compileIdentifier","reference","ref","StaticSymbol","identifier","ɵstringify","_anonymousTypeIndex","identifierModuleUrl","filePath","viewClassName","compType","embeddedTemplateIndex","rendererTypeName","hostViewClassName","componentFactoryName","tokenName","token","tokenReference","createHostComponentMeta","hostTypeReference","compMeta","hostViewType","template","CssSelector","parse","getMatchingElementTemplate","CompileDirectiveMetadata","isHost","type","diDeps","lifecycleHooks","CompileTemplateMetadata","encapsulation","ViewEncapsulation","None","templateUrl","styles","styleUrls","ngContentSelectors","animations","isInline","externalStylesheets","interpolation","preserveWhitespaces","exportAs","changeDetection","ChangeDetectionStrategy","Default","inputs","outputs","host","isComponent","selector","providers","viewProviders","queries","viewQueries","componentViewType","rendererType","id","data","entryComponents","componentFactory","_normalizeArray","flatten","list","reduce","flat","item","flatItem","concat","sourceUrl","url","templateSourceUrl","ngModuleType","templateMeta","sharedStylesheetJitUrl","meta","pathParts","split","ngModuleJitUrl","moduleMeta","templateJitUrl","preserveWhitespacesDefault","preserveWhitespacesOption","defaultSetting","visitAstChildren","visitAll","visitBinary","left","right","visitChain","expressions","visitConditional","condition","trueExp","falseExp","visitFunctionCall","target","args","visitImplicitReceiver","visitInterpolation","visitKeyedRead","key","visitKeyedWrite","visitLiteralArray","visitLiteralMap","visitLiteralPrimitive","visitMethodCall","receiver","visitPipe","exp","visitPrefixNot","expression","visitNonNullAssert","visitPropertyRead","visitPropertyWrite","visitQuote","visitSafeMethodCall","visitSafePropertyRead","isWhitespace","code","$TAB","$SPACE","$NBSP","isDigit","$0","$9","isAsciiLetter","$a","$z","$A","$Z","isAsciiHexDigit","$f","$F","CompilerInjectable","x","assertArrayOfStrings","isDevMode","i","assertInterpolationSymbols","start_1","end_1","INTERPOLATION_BLACKLIST_REGEXPS","regexp","test","newCharacterToken","Token","TokenType","Character","newIdentifierToken","text","Identifier","newKeywordToken","Keyword","newOperatorToken","Operator","newStringToken","newNumberToken","n","Number","newErrorToken","message","isIdentifierStart","$_","$$","isIdentifier","scanner","_Scanner","peek","advance","$EOF","isIdentifierPart","isExponentStart","$e","$E","isExponentSign","$MINUS","$PLUS","isQuote","$SQ","$DQ","$BT","unescape","$n","$LF","$FF","$r","$CR","$t","$v","$VTAB","parseIntAutoRadix","parseInt","isNaN","_createInterpolateRegExp","config","pattern","start","end","RegExp","typeSourceSpan","kind","moduleUrl","sourceFileName","sourceFile","ParseSourceFile","ParseSourceSpan","ParseLocation","nodes","spanOf","sourceSpan","offset","Element","endSourceSpan","children","findNode","position","path","_super","class_1","apply","span","RecursiveVisitor","AstPath","tokenize","source","getTagDefinition","tokenizeExpansionForms","interpolationConfig","DEFAULT_INTERPOLATION_CONFIG","_Tokenizer","_unexpectedCharacterErrorMsg","charCode","_unknownEntityErrorMsg","entitySrc","isNotWhitespace","isNameEnd","$GT","$SLASH","$EQ","isPrefixEnd","isDigitEntityEnd","$SEMICOLON","isNamedEntityEnd","isExpansionFormStart","isInterpolationStart","$LBRACE","isExpansionCaseStart","compareCharCodeCaseInsensitive","code1","code2","toUpperCaseCharCode","mergeTextTokens","srcTokens","dstTokens","lastDstToken","TokenType$1","TEXT","parts","lastOnStack","stack","element","digest","sha1","serializeNodes","join","meaning","decimalDigest","_SerializerIgnoreIcuExpVisitor","computeMsgId","map","a","serializerVisitor","utf8","words32","stringToWords32","Endian","Big","len","w","_a","c","e","_b","h0","h1","h2","h3","h4","j","rol32","_c","fk","f","k","temp","add32","_d","_e","byteStringToHexString","words32ToByteString","fingerprint","hash32","hi","lo","him","lom","add64","rol64","byteStringToDecString","wordAt","Little","mix","sub32","add32to64","high","ah","al","bh","bl","carry","l","count","endian","byteAt","word","word32ToByteString","hex","toString","decimal","toThePower","addBigInt","numberTimesBigInt","reverse","y","sum","Math","max","tmpSum","num","product","bToThePower","createI18nMessageFactory","_I18nVisitor","_expParser","description","toI18nMessage","_extractPlaceholderName","_CUSTOM_PH_EXP","extractMessages","implicitTags","implicitAttrs","_Visitor","extract","mergeTranslations","translations","merge","_isOpeningComment","Comment","startsWith","_isClosingComment","_getI18nAttr","p","attrs","find","attr","_I18N_ATTR","_parseMessageMeta","i18n","idIndex","ID_SEPARATOR","descIndex","MEANING_SEPARATOR","meaningAndDesc","getXmlTagDefinition","_TAG_DEFINITION","serialize","node","_visitor","_escapeXml","_ESCAPED_CHARS","entry","getCtypeForTag","tag","getTypeForTag","digest$1","toPublicName","internalName","createLazyProperty","messages","valueFn","defineProperty","configurable","enumerable","get","set","_","createSerializer","format","Xmb","Xtb","Xliff2","Xliff","createTokenForReference","createTokenForExternalReference","reflector","resolveExternalReference","hasPreserveWhitespacesAttr","some","PRESERVE_WS_ATTR_NAME","replaceNgsp","NGSP_UNICODE","removeWhitespaces","htmlAstWithErrors","ParseTreeResult","WhitespaceVisitor","rootNodes","errors","expandNodes","expander","_Expander","ExpansionResult","isExpanded","_expandPluralForm","cases","PLURAL_CASES","match","ExpansionError","valueSourceSpan","expansionResult","Attribute$1","switchAttr","switchValue","switchValueSourceSpan","_expandDefaultForm","_transformProvider","provider","useExisting","useValue","deps","useClass","useFactory","multi","_transformProviderAst","eager","ProviderAst","multiProvider","providerType","_resolveProvidersFromDirectives","directives","targetErrors","providersByToken","Map","directive","_resolveProviders","ProviderAstType","Component","Directive","filter","dir","PublicService","PrivateService","targetProvidersByToken","resolvedProvider","ProviderError","isUseValue","_getViewQueries","component","viewQueryId","query","_addQueryToTokenMap","queryId","_getContentQueries","contentQueryStartId","contentQueryId","contentQueries","directiveIndex","selectors","isStyleUrlResolvable","schemeMatch","URL_WITH_SCHEMA_REGEXP","extractStyleUrls","resolver","baseUrl","cssText","foundUrls","modifiedCssText","CSS_COMMENT_REGEXP","CSS_IMPORT_REGEXP","resolve","StyleWithImports","_isAnimationLabel","calcPossibleSecurityContexts","registry","propName","isAttribute","ctxs","elementNames","allKnownElementNames","notElementNames","Set","notSelectors","isElementSelector","possibleElementNames","has","securityContext","SecurityContext","NONE","from","sort","preparseElement","selectAttr","hrefAttr","relAttr","nonBindable","projectAs","lcAttrName","NG_CONTENT_SELECT_ATTR","LINK_STYLE_HREF_ATTR","LINK_STYLE_REL_ATTR","NG_NON_BINDABLE_ATTR","NG_PROJECT_AS","normalizeNgContentSelect","nodeName","PreparsedElementType","OTHER","NG_CONTENT","STYLE_ELEMENT","STYLE","SCRIPT_ELEMENT","SCRIPT","LINK_ELEMENT","LINK_STYLE_REL_VALUE","STYLESHEET","PreparsedElement","warnOnlyOnce","warnings","warningCounts","splitExportAs","splitClasses","classAttrValue","createElementCssSelector","attributes","cssSelector","elNameNoNs","setElement","attrName","attrNameNoNs","attrValue","addAttribute","CLASS_ATTR","className","addClassName","_isEmptyTextNode","Text","removeSummaryDuplicates","items","values","isEmptyExpression","ASTWithSource","EmptyExpr","isTemplate","el","enableLegacyTemplate","reportDeprecation","tagNoNs","TEMPLATE_ELEMENT","TEMPLATE_ELEMENT_DEPRECATION_WARNING","createUrlResolverWithoutPackagePrefix","UrlResolver","createOfflineCompileUrlResolver","getUrlScheme","_split","_ComponentIndex","Scheme","_buildFromEncodedParts","opt_scheme","opt_userInfo","opt_domain","opt_port","opt_path","opt_queryData","opt_fragment","out","uri","_splitRe","_removeDotSegments","leadingSlash","trailingSlash","segments","up","pos","segment","pop","unshift","_joinAndCanonicalizePath","Path","UserInfo","Domain","Port","QueryData","Fragment","_resolveUrl","base","encodeURI","baseParts","lastIndexOf","substring","isDirectiveMetadata","findLast","arr","ngfactoryFilePath","forceSourceFile","urlWithSuffix","splitTypescriptSuffix","stripGeneratedFileSuffix","GENERATED_FILE","isGeneratedFile","endsWith","lastDot","summaryFileName","fileName","STRIP_SRC_FILE_SUFFIXES","summaryForJitFileName","stripSummaryForJitFileSuffix","JIT_SUMMARY_FILE","summaryForJitName","symbolName","stripSummaryForJitNameSuffix","JIT_SUMMARY_NAME","hasLifecycleHook","hook","getHookName","getAllLifecycleHooks","LIFECYCLE_HOOKS_VALUES","LifecycleHooks","OnInit","OnDestroy","DoCheck","OnChanges","AfterContentInit","AfterContentChecked","AfterViewInit","AfterViewChecked","_isNgModuleMetadata","NgModule","_isPipeMetadata","Pipe","flattenArray","tree","resolveForwardRef","dedupeArray","array","flattenAndDedupeArray","isValidType","Type","extractIdentifiers","targetIdentifiers","_CompileValueConverter","stringifyType","componentStillLoadingError","ɵERROR_COMPONENT_TYPE","findReadVarNames","stmts","_ReadVarVisitor","visitAllStatements","varNames","applySourceSpanToStatementIfNeeded","stmt","transformer","_ApplySourceSpanTransformer","visitStatement","applySourceSpanToExpressionIfNeeded","expr","visitExpression","variable","ReadVarExpr","importExpr","typeParams","ExternalExpr","importType","typeModifiers","expressionType","ExpressionType","literalArr","LiteralArrayExpr","literalMap","LiteralMapExpr","LiteralMapEntry","quoted","not","NotExpr","assertNotNull","AssertNotNull","fn","params","body","FunctionExpr","literal","LiteralExpr","convertValueToOutputAst","ctx","_ValueOutputAstTransformer","providerDef","providerAst","flags","lifecycleHook","lifecycleHookToNodeFlag","multiProviderDef","singleProviderDef","providerExpr","depsExpr","tokenExpr","convertDeps","providerIndex","dep","depIndex","paramName","allParams","FnParam","DYNAMIC_TYPE","allDepDefs","depDef","exprs","depExprs","instantiate","callFn","ReturnStatement","INFERRED_TYPE","providerMeta","NULL_EXPR","tokenMeta","isValue","isSkipSelf","isOptional","nodeFlag","componentFactoryResolverProviderDef","entryComponentFactories","entryComponent","Identifiers","ComponentFactoryResolver","classMeta","NgModuleRef","CodegenComponentFactoryResolver","toBase64String","b64","i1","i2","i3","toBase64Digit","toBase64VLQ","digit","B64_DIGITS","escapeIdentifier","escapeDollar","alwaysQuote","_SINGLE_QUOTE_ESCAPE_STRING_RE","_LEGAL_IDENTIFIER_RE","_createIndent","res","_INDENT_WITH","debugOutputAstAsTypeScript","converter","_TsEmitterVisitor","EmitterVisitorContext","createRoot","Statement","Expression","Type$1","visitType","toSource","registerContext","specs","specs_1","spec","SECURITY_SCHEMA","_isPixelDimensionStyle","prop","stripComments","_commentRe","extractSourceMappingUrl","matcher","_sourceMappingUrlRe","processRules","ruleCallback","inputWithEscapedBlocks","escapeBlocks","nextBlockIndex","escapedString","_ruleRe","content","suffix","contentPrefix","BLOCK_PLACEHOLDER","blocks","rule","CssRule","inputParts","_curlyRe","resultParts","escapedBlocks","bracketCount","currentBlockParts","partIndex","part","CLOSE_CURLY","OPEN_CURLY","StringWithEscapedBlocks","getStylesVarName","convertActionBinding","localResolver","implicitReceiver","action","bindingId","DefaultLocalResolver","actionWithoutBuiltins","convertPropertyBindingBuiltins","createLiteralArrayConverter","argCount","createLiteralMapConverter","keys","createPipeConverter","_AstToIrVisitor","actionStmts","flattenStatements","_Mode","prependTemporaryDecls","temporaryCount","lastIndex","preventDefaultVar","lastStatement","returnExpr","convertStmtIntoExpression","createPreventDefaultVar","cast","notIdentical","toDeclStmt","StmtModifier","Final","ConvertActionBindingResult","converterFactory","convertBuiltins","convertPropertyBinding","expressionWithoutBuiltins","currValExpr","createCurrValueExpr","outputExpr","temporaryDeclaration","ConvertPropertyBindingResult","_BuiltinAstConverter","temporaryName","temporaryNumber","DeclareVarStmt","statements","ensureStatementMode","mode","ensureExpressionMode","convertToStatementIfNeeded","toStmt","arg","output","ExpressionStatement","needsAdditionalRootNode","astNodes","lastAstNode","EmbeddedTemplateAst","hasViewContainer","ElementAst","NgContentAst","elementBindingDef","inputAst","dirAst","PropertyBindingType","Attribute","Property","Animation","Class","Style","unit","fixedAttrsDef","elementAst","mapResult","attrAst","hostAttributes","prevValue","mergeAttributeValue","attrValue1","attrValue2","CLASS_ATTR$1","STYLE_ATTR","callCheckStmt","nodeIndex","CHECK_VAR","VIEW_VAR","callUnwrapValue","bindingIdx","unwrapValue","findStaticQueryIds","staticQueryIds","dynamicQueryIds","queryMatches","child","childData","add","delete","staticViewQueryIds","nodeStaticQueryIds","elementEventNameAndTarget","eventAst","isAnimation","phase","calcStaticDynamicQueryFlags","queryIds","isFirst","toTypeScript","file","preamble","genFileUrl","TypeScriptEmitter","emitStatements","srcFileUrl","serializeSummaries","forJitCtx","summaryResolver","symbolResolver","symbols","types","toJsonSerializer","ToJsonSerializer","forJitSerializer","ForJitSerializer","resolvedSymbol","addOrMergeSummary","symbol","metadata","processedIndex","isLibraryFile","summary","resolveSummary","resolveSymbol","addLibType","addSourceType","summaryKind","CompileSummaryKind","ngModuleSummary","exportedDirectives","exportedPipes","summary_1","json","deserializeSummaries","symbolCache","FromJsonDeserializer","deserialize","createForJitStub","outputCtx","createSummaryForJitFunction","fnName","ArrayType","Exported","_createTypeReferenceStub","_resolveStyleStatements","compileResult","needsShim","fileSuffix","dependencies","setValue","getStaticSymbol","_stylesModuleUrl","stylesheetUrl","shim","analyzeNgModules","programStaticSymbols","metadataResolver","_createNgModules","_analyzeNgModules","ngModules","symbolsMissingModule","analyzeAndValidateNgModules","programSymbols","ngModuleMetas","moduleMetasByRef","ngModule","ngModuleByPipeOrDirective","ngModulesByFile","ngDirectivesByFile","ngPipesByFile","ngInjectablesByFile","filePaths","isInjectable","ngModuleMeta","declaredDirectives","dirIdentifier","fileUrl","declaredPipes","pipeIdentifier","files","srcUrl","pipes","injectables","extractProgramSymbols","staticSymbolResolver","staticSymbols","isSourceFile","getSymbolsOf","symbolMeta","__symbolic","programPipesAndDirectives","ngModulePipesAndDirective","addNgModule","staticSymbol","getNgModuleMetadata","pipe","transitiveModule","modules","modMeta","isDirective","isPipe","shouldIgnore","expandedMessage","typeName","produceErrorMessage","mapStringMap","transform","HIDDEN_KEY","isPrimitive","o","positionalError","line","column","unescapeIdentifier","substr","createAotCompiler","compilerHost","options","urlResolver","StaticSymbolCache","AotSummaryResolver","StaticSymbolResolver","staticReflector","StaticReflector","console","ɵConsole","htmlParser","I18NHtmlParser","HtmlParser","i18nFormat","missingTranslation","CompilerConfig","defaultEncapsulation","Emulated","useJit","normalizer","DirectiveNormalizer","loadResource","expressionParser","Parser","Lexer","elementSchemaRegistry","DomElementSchemaRegistry","tmplParser","TemplateParser","CompileMetadataResolver","NgModuleResolver","DirectiveResolver","PipeResolver","viewCompiler","ViewCompiler","AotCompiler","StyleCompiler","NgModuleCompiler","locale","enableSummariesForJit","interpretStatements","_ExecutionContext","StatementInterpreter","exportName","vars","_executeFunctionStatements","varValues","childCtx","createChildWihtLocalVars","createDynamicClass","_classStmt","_ctx","propertyDescriptors","getters","getter","instanceCtx","methods","method","paramNames","param","writable","ctorParamNames","constructorMethod","ctor","_this","fields","field","superClass","parent","_declareFn","evalExpression","sourceUrl$$1","fnBody","fnArgNames","fnArgValues","argName","emptyFn","Function","bind","headerLines","toSourceMapGenerator","toJsComment","jitStatements","JitEmitterVisitor","createReturnStmt","getArgs","assertComponent","flattenSummaries","fn$$1","createOutputContext","genFilePath","moduleName","runtime","_mergeOptions","optionsArr","_lastDefined","_mergeArrays","setPrototypeOf","__proto__","hasOwnProperty","VERSION","Version","TextAst","ngContentIndex","visitText","BoundTextAst","visitBoundText","AttrAst","visitAttr","BoundElementPropertyAst","visitElementProperty","BoundEventAst","handler","calcFullName","visitEvent","ReferenceAst","visitReference","VariableAst","visitVariable","references","visitElement","variables","visitEmbeddedTemplate","BoundDirectivePropertyAst","directiveName","templateName","visitDirectiveProperty","DirectiveAst","hostProperties","hostEvents","visitDirective","Builtin","visitNgContent","NullTemplateVisitor","RecursiveTemplateAstVisitor","call","visitChildren","cb","results","t","members","assertNoMembers","JSON","stringify","cache","declarationFile","memberSuffix","TagContentType","RAW_TEXT","ESCAPABLE_RAW_TEXT","PARSABLE_DATA","NAMED_ENTITIES","Aacute","aacute","Acirc","acirc","acute","AElig","aelig","Agrave","agrave","alefsym","Alpha","alpha","amp","and","ang","apos","Aring","aring","asymp","Atilde","atilde","Auml","auml","bdquo","Beta","beta","brvbar","bull","cap","Ccedil","ccedil","cedil","cent","Chi","chi","circ","clubs","cong","copy","crarr","cup","curren","dagger","Dagger","darr","dArr","deg","Delta","delta","diams","divide","Eacute","eacute","Ecirc","ecirc","Egrave","egrave","empty","emsp","ensp","Epsilon","epsilon","equiv","Eta","eta","ETH","eth","Euml","euml","euro","exist","fnof","forall","frac12","frac14","frac34","frasl","Gamma","gamma","ge","gt","harr","hArr","hearts","hellip","Iacute","iacute","Icirc","icirc","iexcl","Igrave","igrave","image","infin","int","Iota","iota","iquest","isin","Iuml","iuml","Kappa","kappa","Lambda","lambda","lang","laquo","larr","lArr","lceil","ldquo","le","lfloor","lowast","loz","lrm","lsaquo","lsquo","lt","macr","mdash","micro","middot","minus","Mu","mu","nabla","nbsp","ndash","ne","ni","notin","nsub","Ntilde","ntilde","Nu","nu","Oacute","oacute","Ocirc","ocirc","OElig","oelig","Ograve","ograve","oline","Omega","omega","Omicron","omicron","oplus","or","ordf","ordm","Oslash","oslash","Otilde","otilde","otimes","Ouml","ouml","para","permil","perp","Phi","phi","Pi","pi","piv","plusmn","pound","prime","Prime","prod","Psi","psi","quot","radic","rang","raquo","rarr","rArr","rceil","rdquo","real","reg","rfloor","Rho","rho","rlm","rsaquo","rsquo","sbquo","Scaron","scaron","sdot","sect","shy","Sigma","sigma","sigmaf","sim","spades","sub","sube","sup","sup1","sup2","sup3","supe","szlig","Tau","tau","there4","Theta","theta","thetasym","thinsp","THORN","thorn","tilde","times","trade","Uacute","uacute","uarr","uArr","Ucirc","ucirc","Ugrave","ugrave","uml","upsih","Upsilon","upsilon","Uuml","uuml","weierp","Xi","xi","Yacute","yacute","yen","yuml","Yuml","Zeta","zeta","zwj","zwnj","HtmlTagDefinition","closedByChildren","requiredParents","implicitNamespacePrefix","contentType","closedByParent","isVoid","_f","ignoreFirstLf","canSelfClose","parentToAdd","requireExtraParent","currentParent","lcParent","isClosedByChild","area","embed","link","img","hr","br","track","wbr","thead","tbody","tfoot","tr","td","th","col","svg","math","li","dt","dd","rb","rt","rtc","rp","optgroup","option","pre","listing","style","script","title","textarea","_SELECTOR_REGEXP","classNames","_addResult","cssSel","current","inNot","exec","hasElementSelector","classAttr","klass","notSelector","SelectorMatcher","_elementMap","_elementPartialMap","_classMap","_classPartialMap","_attrValueMap","_attrValuePartialMap","_listContexts","createNotMatcher","notMatcher","addSelectables","cssSelectors","callbackCtxt","listContext","SelectorListContext","_addSelectable","selectable","SelectorContext","isTerminal","_addTerminal","_addPartial","terminalMap","terminalValuesMap","partialMap","partialValuesMap","terminalList","matchedCallback","alreadyMatched","_matchTerminal","_matchPartial","selectables","starSelectables","finalize","nestedSelector","cbContext","callback","ValueTransformer","SyncAsync","assertSync","ɵisPromise","then","all","syncAsyncValues","Promise","HOST_REG_EXP","Injectable","CompileStylesheetMetadata","toSummary","hostListeners","matches","inputsMap","bindConfig","outputsMap","CompilePipeMetadata","pure","CompileNgModuleMetadata","bootstrapComponents","importedModules","exportedModules","schemas","TransitiveCompileNgModuleMetadata","directivesSet","exportedDirectivesSet","pipesSet","exportedPipesSet","modulesSet","entryComponentsSet","addProvider","addDirective","addExportedDirective","addPipe","addExportedPipe","addModule","addEntryComponent","ec","componentType","ProviderMeta","CompileReflector","parameters","typeOrFunc","annotations","propMetadata","lcProperty","componentModuleUrl","cmpMetadata","ParserError","errLocation","ctxLocation","ParseSpan","AST","Quote","uninterpretedExpression","location","ImplicitReceiver","Chain","Conditional","PropertyRead","PropertyWrite","SafePropertyRead","KeyedRead","KeyedWrite","BindingPipe","LiteralPrimitive","LiteralArray","LiteralMap","Interpolation","strings","Binary","operation","PrefixNot","NonNullAssert","MethodCall","SafeMethodCall","FunctionCall","TemplateBinding","keyIsVar","NullAstVisitor","RecursiveAstVisitor","AstTransformer","InterpolationConfig","fromArray","markers","KEYWORDS","tokens","scanToken","decorators","ctorParameters","numValue","strValue","isCharacter","isNumber","isString","isOperator","operater","isKeyword","isKeywordLet","isKeywordAs","isKeywordNull","isKeywordUndefined","isKeywordTrue","isKeywordFalse","isKeywordThis","isError","toNumber","EOF","scanIdentifier","scanNumber","scanCharacter","scanString","scanOperator","scanComplexOperator","one","twoCode","two","threeCode","three","simple","parseFloat","quote","buffer","marker","unescapedCode","last","SplitInterpolation","offsets","TemplateBindingParseResult","templateBindings","_lexer","parseAction","_checkNoInterpolation","sourceToLex","_stripComments","_ParseAST","parseChain","parseBinding","_parseBindingAst","parseSimpleBinding","SimpleExpressionChecker","check","_reportError","_parseQuote","prefixSeparatorIndex","parseTemplateBindings","prefixToken","prefixTokens","parseInterpolation","splitInterpolation","expressionText","_findInterpolationErrorColumn","wrapLiteralPrimitive","_commentStart","outerQuote","char","nextChar","partInErrIdx","inputLength","rparensExpected","rbracketsExpected","rbracesExpected","next","inputIndex","optionalCharacter","peekKeywordLet","peekKeywordAs","expectCharacter","optionalOperator","op","expectOperator","operator","expectIdentifierOrKeyword","expectIdentifierOrKeywordOrString","parsePipe","parseExpression","parseConditional","parseLogicalOr","yes","no","parseLogicalAnd","parseEquality","parseRelational","parseAdditive","parseMultiplicative","parsePrefix","parseCallChain","parsePrimary","parseAccessMemberOrMethodCall","parseCallArguments","elements","parseExpressionList","parseLiteralMap","literalValue","terminator","isSafe","positionals","expectTemplateBindingKey","operatorFound","bindings","rawKey","letStart","start_2","letName","locationText","skip","moveBy","ch","priorLine","getContext","maxChars","maxLines","startOffset","endOffset","ctxChars","ctxLines","before","after","details","ParseErrorLevel","WARNING","ERROR","ParseError","level","contextualMessage","parentOf","childOf","first","Expansion","visitExpansion","ExpansionCase","expSourceSpan","visitExpansionCase","valueSpan","visitAttribute","startSourceSpan","visitComment","TAG_OPEN_START","TAG_OPEN_END","TAG_OPEN_END_VOID","TAG_CLOSE","COMMENT_START","COMMENT_END","CDATA_START","CDATA_END","ATTR_NAME","ATTR_VALUE","DOC_TYPE","EXPANSION_FORM_START","EXPANSION_CASE_VALUE","EXPANSION_CASE_EXP_START","EXPANSION_CASE_EXP_END","EXPANSION_FORM_END","Token$1","TokenError","errorMsg","tokenType","TokenizeResult","_CR_OR_CRLF_REGEXP","_ControlFlowError","_file","_getTagDefinition","_tokenizeIcu","_interpolationConfig","_peek","_nextPeek","_index","_line","_column","_expansionCaseStack","_inInterpolation","_input","_length","_advance","_processCarriageReturns","_getLocation","_attemptCharCode","_consumeCdata","_consumeComment","_consumeDocType","_consumeTagClose","_consumeTagOpen","_tokenizeExpansionForm","_consumeText","_beginToken","_endToken","_consumeExpansionFormStart","_isInExpansionForm","_consumeExpansionCaseStart","_isInExpansionCase","_consumeExpansionCaseEnd","_consumeExpansionFormEnd","_getSpan","_currentTokenStart","_currentTokenType","_createError","_attemptCharCodeCaseInsensitive","_requireCharCode","_attemptStr","chars","initialPosition","_savePosition","_restorePosition","_attemptStrCaseInsensitive","_requireStr","_attemptCharCodeUntilFn","predicate","_requireCharCodeUntilFn","_attemptUntilChar","_readChar","decodeEntities","_decodeEntity","startPosition","isHex","numberStart","strNum","entity","_consumeRawText","firstCharOfEnd","attemptEndRest","tagCloseStart","textStart","textToken","_consumePrefixAndName","nameOrPrefixStart","nameStart","lowercaseTagName","savedPos","_consumeTagOpenStart","_consumeAttributeName","_consumeAttributeValue","_consumeTagOpenEnd","contentTokenType","_consumeRawTextWithTagClose","prefixAndName","quoteChar","valueStart","_readUntil","_isTextEnd","nbTokens","TreeError","Parser$1","parseExpansionForms","tokensAndErrors","treeAndErrors","_TreeBuilder","build","_rootNodes","_errors","_elementStack","_consumeStartTag","_consumeEndTag","_closeVoidElement","_consumeExpansion","prev","_advanceIf","startToken","_addToParent","expCase","_parseExpansionCase","_collectExpansionExpTokens","parsedExp","expansionFormStack","_getParentElement","startTagToken","_consumeAttr","_getElementFullName","selfClosing","tagDef","_pushElement","_popElement","parentEl","_getParentElementSkippingContainers","container","newParent","_insertBeforeContainer","endTagToken","errMsg","stackIndex","splice","valueToken","parentElement","_SerializerVisitor","visitContainer","visitIcu","icu","strCases","visitTagPlaceholder","ph","startName","closeName","visitPlaceholder","visitIcuPlaceholder","Message","placeholders","placeholderToMessage","sources","startLine","startCol","endLine","endCol","Text$1","Container","Icu","TagPlaceholder","Placeholder","IcuPlaceholder","CloneVisitor","expressionPlaceholder","RecurseVisitor","TAG_TO_PLACEHOLDER_NAMES","A","B","BR","EM","H1","H2","H3","H4","H5","H6","HR","I","LI","LINK","OL","P","Q","S","SMALL","SUB","SUP","TBODY","TD","TFOOT","TH","THEAD","TR","TT","U","UL","PlaceholderRegistry","_placeHolderNameCounts","_signatureToName","getStartTagPlaceholderName","signature","_hashTag","upperTag","baseName","_generateUniqueName","getCloseTagPlaceholderName","_hashClosingTag","getPlaceholderName","upperName","uniqueName","getUniquePlaceholder","_expressionParser","_isIcu","_icuDepth","_placeholderRegistry","_placeholderToContent","_placeholderToMessage","i18nodes","startPhName","closePhName","attribute","_visitTextWithInterpolation","comment","i18nIcuCases","i18nIcu","caze","expPh","phName","icuCase","sDelimiter","eDelimiter","lastStringIdx","I18nError","_I18N_COMMENT_PREFIX_REGEXP","ExtractionResult","_VisitorMode","Extract","Merge","_implicitTags","_implicitAttrs","_init","_inI18nBlock","_messages","_translations","wrapper","translatedNode","_mode","_mayBeAddBlockChildren","wasInIcu","_inIcu","_isInTranslatableSection","_addMessage","isOpening","isClosing","_inI18nNode","_depth","_blockStartDepth","_closeTranslatableSection","_blockChildren","_blockMeaningAndDesc","_translateMessage","_openTranslatableSection","wasInI18nNode","wasInImplicitNode","_inImplicitNode","childNodes","translatedChildNodes","i18nAttr","i18nMeta","isImplicit","isTopLevelImplicit","isTranslatable","visited","_visitAttributesOf","translatedAttrs","_translateAttributes","_msgCountAtSectionStart","_createI18nMessage","explicitAttrNameToValue","implicitAttrNames","msgMeta","i18nParsedMessageMeta","translatedAttributes","directChildren","startIndex","XmlTagDefinition","XmlParser","Serializer","write","load","createNameMapper","SimplePlaceholderMapper","mapName","internalToPublic","publicToNextId","publicToInternal","toInternalName","publicName","visitPlaceholderName","nextId","_Visitor$1","visitTag","strAttrs","_serializeAttributes","strChildren","visitDeclaration","decl","visitDoctype","doctype","rootTag","dtd","Declaration","unescapedAttrs","Doctype","Tag","Text$2","unescapedValue","CR","ws","_WriteVisitor","transUnits","contextTags","contextGroupTag","purpose","context-type","transUnit","datatype","priority","source-language","original","xliff","version","xmlns","encoding","xliffParser","XliffParser","msgIdToHtml","i18nNodesByMsgId","XmlToI18n","msgId","convert","i18nNodes","ctype","startTagPh","closeTagPh","_locale","_unitMlString","_msgIdToHtml","xml","idAttr","_addError","innerTextStart","innerTextEnd","innerText","localeAttr","expansion","expansionCase","xmlIcu","nameAttr","caseMap","_WriteVisitor$1","units","notes","category","srcLang","xliff2Parser","Xliff2Parser","XmlToI18n$1","_nextPlaceholderId","disp","tagPc","equivStart","equivEnd","dispStart","dispEnd","idStr","versionAttr","startAttr","endAttr","startId","endId","exampleVisitor","ExampleVisitor","_Visitor$2","rootNode","sourceTags","addDefaultExamples","startEx","closeEx","exText","xtbParser","XtbParser","XmlToI18n$2","xtb","_bundleDepth","langAttr","TranslationBundle","_i18nNodesByMsgId","mapperFactory","missingTranslationStrategy","MissingTranslationStrategy","Warning","_i18nToHtml","I18nToHtmlVisitor","serializer","srcMsg","html","_digest","_mapperFactory","_missingTranslationStrategy","_console","_contextStack","_convertToText","_srcMsg","_mapper","mapper","warn","_htmlParser","translationsFormat","_translationBundle","parseResult","CORE","ANALYZE_FOR_ENTRY_COMPONENTS","ElementRef","ViewContainerRef","ChangeDetectorRef","QueryList","TemplateRef","ɵCodegenComponentFactoryResolver","ComponentFactory","ComponentRef","NgModuleFactory","createModuleFactory","ɵcmf","moduleDef","ɵmod","moduleProviderDef","ɵmpd","RegisterModuleFactoryFn","ɵregisterModuleFactory","Injector","LOCALE_ID","TRANSLATIONS_FORMAT","inlineInterpolate","ɵinlineInterpolate","interpolate","ɵinterpolate","EMPTY_ARRAY","ɵEMPTY_ARRAY","EMPTY_MAP","ɵEMPTY_MAP","Renderer","viewDef","ɵvid","elementDef","ɵeld","anchorDef","ɵand","textDef","ɵted","directiveDef","ɵdid","ɵprd","queryDef","ɵqud","pureArrayDef","ɵpad","pureObjectDef","ɵpod","purePipeDef","ɵppd","pipeDef","ɵpid","nodeValue","ɵnov","ngContentDef","ɵncd","ɵunv","createRendererType2","ɵcrt","RendererType2","ViewDefinition","createComponentFactory","ɵccf","SKIP_WS_TRIM_TAGS","WS_CHARS","NO_WS_REGEXP","WS_REPLACE_REGEXP","expanded","ProviderViewContext","ProviderElementContext","viewContext","_parent","_isViewRoot","_directiveAsts","refs","_sourceSpan","_transformedProviders","_seenProviders","_hasViewContainer","_queriedTokens","_attrs","directivesMeta","directiveAst","_allProviders","_contentQueries","_addQueryReadsTo","templateRefId","refAst","defaultQueryValue","_getOrCreateLocalProvider","afterElement","lazyProviders","eagerProviders","sortedProviderTypes","transformProviders","sortedDirectives","dir1","dir2","allMatches","defaultValue","queryReadTokens","_getQueriesFor","queryValue","read","tokenRef","currentEl","distance","descendants","requestingProviderType","transformedProviderAst","transformedProviders","transformedUseValue","transformedUseExisting","transformedDeps","existingDiDep","_getDependency","_getLocalDependency","currElement","currEager","isSelf","prevElement","NgModuleProviderAnalyzer","extraProviders","errorString","requestorSourceSpan","foundLocal","ElementSchemaRegistry","hasProperty","schemaMetas","hasElement","getMappedPropName","getDefaultComponentElementName","validateProperty","validateAttribute","normalizeAnimationStyleProperty","normalizeAnimationStyleValue","camelCaseProp","userProvidedProp","style$$1","BoundPropertyType","DEFAULT","LITERAL_ATTR","ANIMATION","BoundProperty","BindingParser","_exprParser","_schemaRegistry","_targetErrors","pipesByName","_usedPipes","getUsedPipes","createDirectiveHostPropertyAsts","dirMeta","elementSelector","boundProps_1","parsePropertyBinding","createElementPropertyAst","createDirectiveHostEventAsts","targetEventAsts_1","parseEvent","sourceInfo","_reportExpressionParserErrors","_checkPipes","parseInlineTemplateBinding","targetMatchableAttrs","targetProps","targetVars","_parseTemplateBindings","binding","_parsePropertyAst","parseLiteralAttr","bindingsResult","warning","_parseAnimation","isAnimationProp","_parseBinding","parsePropertyInterpolation","isHostBinding","boundProp","bindingType","boundPropertyName","securityContexts","_validatePropertyOrAttributeName","nsSeparatorIdx","ns","targetEvents","_parseAnimationEvent","_parseEvent","eventName","_parseAction","errors_1","collector","PipeCollector","pipeName","pipeMeta","isAttr","report","BIND_NAME_REGEXP","TEXT_CSS_SELECTOR","TEMPLATE_TRANSFORMS","InjectionToken","TemplateParseError","TemplateParseResult","templateAst","usedPipes","_config","_reflector","transforms","tryParse","htmlParseResult","getInterpolationConfig","tryParseHtml","expandHtml","uniqDirectives","uniqPipes","providerViewContext","bindingParser","parseVisitor","TemplateParseVisitor","EMPTY_ELEMENT_CONTEXT","_assertNoReferenceDuplicationOnTemplate","forced","expandedHtmlAst","existingReferences","Optional","Inject","_bindingParser","_schemas","selectorMatcher","directivesIndex","ngContentCount","findNgContentIndex","valueNoNgsp","queryStartIndex","preparsedElement","matchableAttrs","elementOrDirectiveProps","elementOrDirectiveRefs","elementVars","events","templateElementOrDirectiveProps","templateMatchableAttrs","templateElementVars","hasInlineTemplates","isTemplateElement","templateBindingsSource","hasBinding","_parseAttr","normalizedName","_normalizeAttributeName","hasTemplateBinding","elementCssSelector","_parseDirectives","directiveMetas","matchElement","boundDirectivePropNames","directiveAsts","_createDirectiveAsts","elementProps","_createElementPropertyAsts","isViewRoot","providerContext","NON_BINDABLE_VISITOR","ElementContext","parsedElement","projectionSelector","every","_assertAllEventsPublishedByDirectives","_assertNoComponentsNorElementBindingsOnTemplate","transformedDirectiveAsts","transformedHasViewContainer","_assertElementExists","_assertOnlyOneComponent","ngContentIndex_1","templateQueryStartIndex","templateSelector","templateDirectiveMetas","templateBoundDirectivePropNames","templateDirectiveAsts","templateElementProps","templateProviderContext","targetRefs","srcSpan","bindParts","_parseVariable","_parseReference","_parseAssignmentEvent","ElementOrDirectiveRef","size","props","elementSourceSpan","targetReferences","targetBoundDirectivePropNames","matchedReferences","directiveProperties","_checkPropertiesInSchema","_createDirectivePropertyAsts","elOrDirRef","isReferenceToDirective","refToken","boundProps","targetBoundDirectiveProps","boundPropsByName_1","isLiteral","dirProp","elProp","boundElementProps","_findComponentDirectives","_findComponentDirectiveNames","componentTypeNames","elName","allDirectiveEvents","event","NonBindableVisitor","attrNameAndValues","_ngContentIndexMatcher","_wildcardNgContentIndex","wildcardNgContentIndex","ngContentIndices","ResourceLoader","DEFAULT_PACKAGE_URL_PROVIDER","provide","PACKAGE_ROOT_URL","_packagePrefix","resolvedUrl","resolvedParts","_resourceLoader","_urlResolver","_resourceLoaderCache","clearCache","clear","clearCacheFor","normalizedDirective","stylesheet","_fetch","normalizeTemplate","prenormData","normalizeTemplateOnly","normalizeExternalStylesheets","prenomData","normalizeLoadedTemplate","templateAbsUrl","rootNodesAndErrors","templateMetadataStyles","normalizeStylesheet","TemplatePreparseVisitor","templateStyles","_loadMissingExternalStylesheets","loadedStylesheets","styleUrl","loadedStyle","allStyleUrls","allStyles","styleWithImports","ngNonBindableStackCount","textContent_1","typeMetadata","throwIfNotFound","propertyMetadata","_mergeWithPropertyMetadata","dm","directiveType","Input","bindingPropertyName","Output","HostBinding","hostBinding","hostPropertyName","startWith","HostListener","hostListener","Query","_merge","_extractPublicName","def","_dedupeBindings","names","reversedResult","mergedInputs","mergedOutputs","mergedHost","assign","mergedQueries","moduleId","isNgModule","metas","annotation","SummaryResolver","getLibraryFileName","getImportAs","addSummary","JitSummaryResolver","_summaries","ERROR_COLLECTOR_TOKEN","_ngModuleResolver","_directiveResolver","_pipeResolver","_summaryResolver","_directiveNormalizer","_staticSymbolCache","_errorCollector","_nonNormalizedDirectiveCache","_directiveCache","_summaryCache","_pipeCache","_ngModuleCache","_ngModuleOfTypes","getReflector","_createProxyClass","baseType","delegate","proxyClass","setDelegate","overriddenName","getGeneratedClass","dirType","getComponentViewClass","getHostComponentViewClass","getHostComponentType","HostClass","getRendererType","getComponentFactory","hostView","initComponentFactory","_loadSummary","typeSummary","loadDirectiveMetadata","isSync","getNonNormalizedDirectiveMetadata","createDirectiveMetadata","templateMetadata","normalizedDirMeta","cacheEntry","nonNormalizedTemplateMetadata","changeDetectionStrategy","entryComponentMetadata","_getProvidersMetadata","_getEntryComponentMetadata","_getQueriesMetadata","_getTypeMetadata","getDirectiveMetadata","getDirectiveSummary","dirSummary","getNgModuleSummary","moduleType","moduleSummary","loadNgModuleDirectiveAndPipeMetadata","loading","promise","_loadPipeMetadata","compileMeta","exportedNonModuleIdentifiers","imports","importedType","importedModuleType","moduleWithProviders","_checkSelfImport","importedModuleSummary","_getTypeDescriptor","exportedType","exportedModuleSummary","_getIdentifierMetadata","_getTransitiveNgModuleMetadata","declarations","declaredType","declaredIdentifier","_addTypeToModule","exportedId","bootstrap","oldModule","modulesByToken","modSummary","mod","comp","addedTokens","prevModules","moduleRef","ann","getInjectableSummary","_getInjectableMetadata","throwOnUnknownDeps","_getDependenciesMetadata","_getFactoryMetadata","getPipeMetadata","pipeType","getPipeSummary","pipeSummary","getOrLoadPipeMetadata","pipeAnnotation","hasUnknownDeps","dependenciesMetadata","paramEntry","Host","Self","SkipSelf","attributeName","_getTokenMetadata","depsTokens","targetEntryComponents","debugInfo","compileProviders","providerIdx","_validateProvider","providersInfo","soFar","seenProvider","seenProviderIdx","_getEntryComponentsFromProvider","getProviderMetadata","components","collectedIdentifiers","compileDeps","compileTypeMetadata","compileFactoryMetadata","isViewQuery","propertyName","_getQueryMetadata","_queryVarBindings","q","varName","otherType","TypeModifier","Const","modifiers","hasModifier","modifier","BuiltinTypeName","Dynamic","Bool","Int","Inferred","BuiltinType","visitBuiltintType","visitExpressionType","of","visitArrayType","MapType","valueType","visitMapType","BOOL_TYPE","BinaryOperator","Equals","NotEquals","Identical","NotIdentical","Minus","Plus","Divide","Multiply","Modulo","And","Or","Lower","LowerEquals","Bigger","BiggerEquals","ReadPropExpr","ReadKeyExpr","callMethod","InvokeMethodExpr","InvokeFunctionExpr","InstantiateExpr","conditional","trueCase","falseCase","ConditionalExpr","equals","rhs","BinaryOperatorExpr","notEquals","identical","plus","multiply","modulo","lower","lowerEquals","bigger","biggerEquals","isBlank","TYPED_NULL_EXPR","CastExpr","BuiltinVar","This","Super","CatchError","CatchStack","builtin","visitReadVarExpr","WriteVarExpr","visitWriteVarExpr","WriteKeyExpr","visitWriteKeyExpr","WritePropExpr","visitWritePropExpr","BuiltinMethod","ConcatArray","SubscribeObservable","Bind","visitInvokeMethodExpr","visitInvokeFunctionExpr","classExpr","visitInstantiateExpr","visitLiteralExpr","visitExternalExpr","ExternalReference","visitConditionalExpr","visitNotExpr","visitAssertNotNullExpr","visitCastExpr","visitFunctionExpr","DeclareFunctionStmt","lhs","visitBinaryOperatorExpr","visitReadPropExpr","visitReadKeyExpr","entries","visitLiteralArrayExpr","visitLiteralMapExpr","CommaExpr","visitCommaExpr","Private","visitDeclareVarStmt","visitDeclareFunctionStmt","visitExpressionStmt","visitReturnStmt","AbstractClassPart","ClassMethod","ClassGetter","ClassStmt","visitDeclareClassStmt","IfStmt","visitIfStmt","CommentStmt","visitCommentStmt","TryCatchStmt","bodyStmts","catchStmts","visitTryCatchStmt","ThrowStmt","visitThrowStmt","AstTransformer$1","transformExpr","transformStmt","visitAllExpressions","mapType","ctorMethod","RecursiveAstVisitor$1","_clone","clone","quotedSet","NgModuleCompileResult","ngModuleFactoryVar","LOG_VAR","compile","providerParser","providerDefs","ngModuleDef","ngModuleDefFactory","_createNgModuleFactory","registerFactoryStmt","createStub","ngModuleReference","ngModuleFactoryStmt","SourceMapGenerator","sourcesContent","lines","lastCol0","hasMappings","addSource","addLine","addMapping","col0","sourceLine0","sourceCol0","currentLine","toJSON","sourcesIndex","mappings","lastSourceIndex","lastSourceLine0","lastSourceCol0","segAsStr","sourceRoot","CATCH_ERROR_VAR$1","CATCH_STACK_VAR$1","_EmittedLine","indent","partsLength","srcSpans","_indent","_classes","_preambleLineCount","_lines","println","lastPart","print","lineIsEmpty","_currentLine","lineLength","newLine","removeEmptyLastLine","incIndent","decIndent","pushClass","clazz","popClass","sourceLines","sourceFilePath","startsAtLine","firstOffsetMapped","mapFirstOffsetIfNeeded","lineIdx","spans","spanIdx","sourceLine","sourceCol","setPreambleLineCount","emittedLine","columnsLeft","AbstractEmitterVisitor","_escapeDollarInStrings","hasElseCase","lineWasEmpty","getBuiltinMethodName","opStr","visitAllObjects","separator","incrementedIndent","emitStatementsAndContext","srcFilePath","emitSourceMaps","preambleLines","reexports","exportedModuleName","reexportsCode","reexport","as","importsWithPrefixes","importedModuleName","sm","sourceText","typeExpression","defaultType","_visitIdentifier","_printColonType","_visitClassField","_visitClassConstructor","_visitClassGetter","_visitClassMethod","_visitParams","typeStr","HTML","URL","RESOURCE_URL","BOOLEAN","NUMBER","STRING","OBJECT","SCHEMA","_ATTR_TO_PROP","class","for","formaction","innerHtml","readonly","tabindex","_schema","encodedType","strType","strProperties","properties","typeNames","superName","superType","property","schema","NO_ERRORS_SCHEMA","CUSTOM_ELEMENTS_SCHEMA","strVal","valAndSuffixMatch","ShadowCss","strictStyling","shimCssText","hostSelector","sourceMappingUrl","_insertDirectives","_scopeCssText","_insertPolyfillDirectivesInCssText","_insertPolyfillRulesInCssText","_cssContentNextSelectorRe","_cssContentRuleRe","scopeSelector","unscopedRules","_extractUnscopedRulesFromCssText","_insertPolyfillHostInCssText","_convertColonHost","_convertColonHostContext","_convertShadowDOMSelectors","_scopeSelectors","r","_cssContentUnscopedRuleRe","_convertColonRule","_cssColonHostRe","_colonHostPartReplacer","_cssColonHostContextRe","_colonHostContextPartReplacer","regExp","partReplacer","_polyfillHostNoCombinator","_polyfillHost","_shadowDOMSelectorsRe","_scopeSelector","strict","_shadowDeepSelectors","deepParts","shallowPart","otherParts","_selectorNeedsScoping","_applyStrictSelectorScope","_applySelectorScope","_makeScopeMatcher","lre","rre","_selectorReSuffix","_applySimpleSelectorScope","_polyfillHostRe","replaceBy_1","_polyfillHostNoCombinatorRe","hnc","colon","isRe","_scopeSelectorPart","scopedP","safeContent","SafeSelector","scopedSelector","sep","scopeAfter","restore","_colonHostContextRe","_polyfillHostContext","_colonHostRe","keep","replaceBy","_content","pseudo","_parenSuffix","StylesCompileDependency","CompiledStylesheet","stylesVar","isShimmed","_shadowCss","compileComponent","_compileStyles","compileStyles","needsStyleShim","isComponentStylesheet","styleExpressions","plainStyle","_shimIfNeeded","exprIndex","EventHandlerVars","allowDefault","_converterFactory","BuiltinFunctionCall","_localResolver","_implicitReceiver","_nodeMap","_resultMap","_currentTemporary","_visit","fnResult","convertedArgs","leftMostSafe","leftMostSafeNode","convertSafeAccess","_getLocal","getLocal","varExpr","guardedExpression","temporary","needsTemporary","allocateTemporary","access","releaseTemporary","visitSome","tempNumber","ViewCompileResult","viewClassVar","rendererTypeVar","embeddedViewCount","renderComponentVarName","template_1","customRenderData","renderComponentVar","viewBuilderFactory","embeddedViewIndex","ViewBuilder","viewName","LOG_VAR$1","COMP_VAR","EVENT_NAME_VAR","ALLOW_DEFAULT_VAR","purePipeNodeIndices","refNodeIndices","_createPipe","queryIds_1","queryIndex","nodeFlags","nodeDef","targetStatements","_createNodeExpressions","updateRendererStmts","updateDirectivesStmts","nodeDefExprs","updateRendererFn","_createUpdateFn","updateDirectivesFn","viewFlags","OnPush","viewFactory","updateStmts","updateFn","preStmts","astWithSource","inter","updateRendererExpressions","bindingIndex","_preprocessUpdateExpression","checkIndex","updateRenderer","_visitElementOrTemplate","queryMatchesExpr","childVisitor","childCount","_createElementHandleEventFn","usedEvents","dirHostBindings","hostBindings","inputDefs","outputDefs","compAst","compRendererType","compView","ɵelementEventFullName","_visitComponentFactoryResolverProvider","dirIndex","localDirAst","_visitDirective","dirHostEvents","_visitProvider","queryMatchExprs","outputAst","elementNodeIndex","_visitProviderOrDirective","mapValue","updateDirectiveExpressions","dirContextExpr","hostEventAst","updateDirectives","_addProviderNode","componentDirMeta","tokenExpr_1","providerFlags","currViewExpr","currBuilder","refNodeIndex","varAst","varValue","_createLiteralArrayConverter","valueExpr_1","_createLiteralMapConverter","valueExpr_2","_createPipeConverter","checkIndex_1","compViewExpr","compBuilder","pipeNodeIndex","pipeValueExpr_1","nodeValueExpr_1","diDep","createUpdateStatements","allowEmptyExprs","updateBindingCount","nameResolver","self","handlers","handleEventStmts","handleEventBindingCount","trueStmts","eventTarget","fullEventName","handleEventFn","GeneratedFile","sourceOrStmts","indexBySymbol","processedSummaryBySymbol","processedSummaries","clone_1","processedSummary","processValue","summaries","importAs","__symbol","baseSymbol","isLibrary","ngModuleSymbols","serializeSummaryWithDeps","jitExportAsName","serializeSummaryRef","serializeSummary","typeSymbol","jitImportedSymbol","Transformer","serializedSymbol","_host","_metadataResolver","_templateParser","_styleCompiler","_viewCompiler","_ngModuleCompiler","_outputEmitter","_localeId","_translationFormat","_enableSummariesForJit","_symbolResolver","analyzeModulesSync","rootFiles","analyzeResult","analyzeModulesAsync","emitAllStubs","_compileStubFile","emitPartialStubs","emitAllImpls","_compileImplFile","partial","generatedFiles","ngFactoryOutputCtx","_createOutputContext","jitSummaryOutputCtx","partialJitStubRequired","partialFactoryStubRequired","stylesheetMeta","styleContext","_codegenSourceModule","_createSummary","_compileModule","componentStylesheet","_codegenStyles","_compileComponent","_compileComponentFactory","srcModule","ngFactoryCtx","symbolSummaries","typeData","forJitOutputCtx","summaryJson","normalizedLocale","hostType","hostMeta","hostViewFactoryVar","compFactoryVar","inputsExprs","outputsExprs","directiveIdentifiers","componentStyles","parsedTemplate","stylesExpr","viewResult","arity","getTypeArity","importModule","fileNameToModuleName","selfReference","suppliedTypeParams","missingTypeParamsCount","allTypeParams","fill","memberName","stylesheetMetadata","compiledStylesheet","ANGULAR_CORE","IGNORE","USE_VALUE","PROVIDE","REFERENCE_SET","knownMetadataClasses","knownMetadataFunctions","errorRecorder","annotationCache","propertyCache","parameterCache","methodCache","conversionMap","annotationForParentClassWithSummaryKind","annotationNames","initializeConversionMap","kc","_registerDecoratorOrConstructor","kf","_registerFunction","findSymbolDeclaration","getResourcePath","importSymbol","rootSymbol","findDeclaration","recordImportAs","containingFile","getSymbolByModule","tryFindDeclaration","ignoreErrorsFor","classMetadata","getTypeMetadata","parentType","findParentType","parentAnnotations","ownAnnotations_1","simplify","requiredAnnotationTypes","requiredType","reportError","parentPropMetadata_1","parentProp","members_1","propData","parameters_1","ctorData","rawParameterTypes","parameterDecorators_1","rawParamType","nestedResult","paramType","trySimplify","_methodNames","methodNames","parentMethodNames_1","members_2","isMethod","injectionToken","opaqueToken","ROUTES","ContentChild","ContentChildren","ViewChild","ViewChildren","trigger","state","transition","animate","keyframes","sequence","group","originalRecorder","simplifyInContext","depth","resolveReferenceValue","simplifyCall","functionSymbol","targetFunction","calling","value_1","defaults","functionScope","BindingScope","result_1","oldScope","scope","done","result_2","spreadArray","spreadArray_1","spreadItem","value_2","declarationValue","operand","indexTarget","member","selectContext","selectTarget","localValue","missing","argExpressions","PopulatedScope","ResolvedStaticSymbol","staticSymbolCache","metadataCache","resolvedSymbols","resolvedFilePaths","symbolResourcePaths","symbolFromFile","knownFileNameToModuleNames","_resolveSymbolMembers","_resolveSymbolFromSummary","_createSymbolsOf","baseImportAs","summarizedFileName","summarizedName","importedFilePath","containingFilePath","sourceSymbol","targetSymbol","invalidateFile","symbols_1","recorder","baseResolvedSymbol","baseMetadata","statics","getModuleMetadata","topLevelSymbolNames_1","origins_1","metadataKey","origin","originFilePath","resolveModule","createResolvedSymbol","this_1","moduleExport","export","exportSymbol","symName","resolvedModule","createExport","topLevelPath","topLevelSymbolNames","transformedMeta_1","ReferenceTransformer","functionParams","symbolic","oldLen","module_1","transformedMeta","moduleMetadata","moduleMetadatas","getMetadataFor","maxVersion_1","md","errorMessage","moduleNameToFileName","summaryCache","loadedFilePaths","getOutputFileName","_loadSummaryFile","summaryFilePath","loadSummary","instance","ReturnValue","debugAst","currCtx","CATCH_ERROR_VAR$2","CATCH_STACK_VAR$2","subscribe","fnExpr","AbstractJsEmitterVisitor","_evalArgNames","_evalArgValues","_evalExportedVars","resultVar","JitCompiler","_injector","_compilerConfig","_compiledTemplateCache","_compiledHostTemplateCache","_compiledDirectiveWrapperCache","_compiledNgModuleCache","_sharedStylesheetCount","compileModuleSync","_compileModuleAndComponents","compileModuleAsync","compileModuleAndAllComponentsSync","_compileModuleAndAllComponents","compileModuleAndAllComponentsAsync","getNgContentSelectors","loadAotSummaries","hasAotSummary","_filterJitIdentifiers","ids","_loadModules","_compileComponents","componentFactories","ModuleWithComponentFactories","mainModule","mainNgModule","nestedNgModule","ngModuleFactory","moduleMeta_1","Compiler","ModuleBoundCompiler","allComponentFactories","moduleByJitDirective","templates","transJitModules","localMod","localModuleMeta","dirRef","_createCompiledTemplate","_createCompiledHostTemplate","entryComponentType","_compileTemplate","compiledTemplate","hostClass","ɵgetComponentViewDefinitionFactory","CompiledTemplate","isCompiled","externalStylesheetsByModuleUrl","outputContext","_resolveStylesCompileResult","evalResult","viewClass","compiled","nestedCompileResult","nestedStylesArr","_resolveAndEvalStylesCompileResult","_viewClass","_delegate","_ngModule","injector","MessageBundle","updateFromTemplate","htmlParserResult","i18nParserResult","getMessages","filterSources","mapperVisitor","MapPlaceholderNames","msgList","src","transformedMessage","Extractor","messageBundle","compMetas","extractor","JitReflector","reflectionCapabilities","ɵReflectionCapabilities","_NO_RESOURCE_LOADER","baseHtmlParser","COMPILER_PROVIDERS","parser","Ignore","TRANSLATIONS","JitCompilerFactory","defaultOptions","compilerOptions","useDebug","_defaultOptions","createCompiler","opts","ReflectiveInjector","resolveAndCreate","COMPILER_OPTIONS","platformCoreDynamic","createPlatformFactory","platformCore","CompilerFactory"],"mappings":"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","file":"/Users/tbosch/projects/angular/dist/packages-dist/compiler/bundles/compiler.umd.min.js","sourcesContent":["/**\n * @license Angular v4.4.6\n * (c) 2010-2017 Google, Inc. https://angular.io/\n * License: MIT\n */\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core')) :\n\ttypeof define === 'function' && define.amd ? define(['exports', '@angular/core'], factory) :\n\t(factory((global.ng = global.ng || {}, global.ng.compiler = global.ng.compiler || {}),global.ng.core));\n}(this, (function (exports,_angular_core) { 'use strict';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n\r\nfunction __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\n\n/**\n * @license Angular v4.4.6\n * (c) 2010-2017 Google, Inc. https://angular.io/\n * License: MIT\n */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @module\n * @description\n * Entry point for all public APIs of the common package.\n */\n/**\n * \\@stable\n */\nvar VERSION = new _angular_core.Version('4.4.6');\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 (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 `` 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 `` 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 * A visitor that accepts each node but doesn't do anything. It is intended to be used\n * as the base class for a visitor that is only interested in a subset of the node types.\n */\nvar NullTemplateVisitor = (function () {\n function NullTemplateVisitor() {\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n NullTemplateVisitor.prototype.visitNgContent = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n NullTemplateVisitor.prototype.visitEmbeddedTemplate = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n NullTemplateVisitor.prototype.visitElement = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n NullTemplateVisitor.prototype.visitReference = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n NullTemplateVisitor.prototype.visitVariable = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n NullTemplateVisitor.prototype.visitEvent = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n NullTemplateVisitor.prototype.visitElementProperty = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n NullTemplateVisitor.prototype.visitAttr = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n NullTemplateVisitor.prototype.visitBoundText = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n NullTemplateVisitor.prototype.visitText = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n NullTemplateVisitor.prototype.visitDirective = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n NullTemplateVisitor.prototype.visitDirectiveProperty = function (ast, context) { };\n return NullTemplateVisitor;\n}());\n/**\n * Base class that can be used to build a visitor that visits each node\n * in an template ast recursively.\n */\nvar RecursiveTemplateAstVisitor = (function (_super) {\n __extends(RecursiveTemplateAstVisitor, _super);\n function RecursiveTemplateAstVisitor() {\n return _super.call(this) || this;\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveTemplateAstVisitor.prototype.visitEmbeddedTemplate = function (ast, context) {\n return this.visitChildren(context, function (visit) {\n visit(ast.attrs);\n visit(ast.references);\n visit(ast.variables);\n visit(ast.directives);\n visit(ast.providers);\n visit(ast.children);\n });\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveTemplateAstVisitor.prototype.visitElement = function (ast, context) {\n return this.visitChildren(context, function (visit) {\n visit(ast.attrs);\n visit(ast.inputs);\n visit(ast.outputs);\n visit(ast.references);\n visit(ast.directives);\n visit(ast.providers);\n visit(ast.children);\n });\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveTemplateAstVisitor.prototype.visitDirective = function (ast, context) {\n return this.visitChildren(context, function (visit) {\n visit(ast.inputs);\n visit(ast.hostProperties);\n visit(ast.hostEvents);\n });\n };\n /**\n * @template T\n * @param {?} context\n * @param {?} cb\n * @return {?}\n */\n RecursiveTemplateAstVisitor.prototype.visitChildren = function (context, cb) {\n var /** @type {?} */ results = [];\n var /** @type {?} */ t = this;\n /**\n * @template T\n * @param {?} children\n * @return {?}\n */\n function visit(children) {\n if (children && children.length)\n results.push(templateVisitAll(t, children, context));\n }\n cb(visit);\n return [].concat.apply([], results);\n };\n return RecursiveTemplateAstVisitor;\n}(NullTemplateVisitor));\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 {?} tagName\n * @return {?}\n */\nfunction isNgContainer(tagName) {\n return splitNsName(tagName)[1] === 'ng-container';\n}\n/**\n * @param {?} tagName\n * @return {?}\n */\nfunction isNgContent(tagName) {\n return splitNsName(tagName)[1] === 'ng-content';\n}\n/**\n * @param {?} tagName\n * @return {?}\n */\nfunction isNgTemplate(tagName) {\n return splitNsName(tagName)[1] === 'ng-template';\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\n// 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// The &ngsp; pseudo-entity is denoting a space. see:\n// https://github.com/dart-lang/angular/blob/0bb611387d29d65b5af7f9d2515ab571fd3fbee4/_tests/test/compiler/preserve_whitespace_test.dart\nvar NGSP_UNICODE = '\\uE500';\nNAMED_ENTITIES['ngsp'] = NGSP_UNICODE;\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 || null;\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 + \">\";\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}\n/**\n * @param {?} val\n * @return {?}\n */\nfunction isDefined(val) {\n return val !== null && val !== undefined;\n}\n/**\n * @template T\n * @param {?} val\n * @return {?}\n */\nfunction noUndefined(val) {\n return val === undefined ? ((null)) : val;\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 SyncAsync = {\n assertSync: function (value) {\n if (_angular_core.ɵisPromise(value)) {\n throw new Error(\"Illegal state: value cannot be a promise\");\n }\n return value;\n },\n then: function (value, cb) { return _angular_core.ɵisPromise(value) ? value.then(cb) : cb(value); },\n all: function (syncAsyncValues) {\n return syncAsyncValues.some(_angular_core.ɵisPromise) ? Promise.all(syncAsyncValues) : (syncAsyncValues);\n }\n};\n/**\n * @param {?} msg\n * @param {?=} parseErrors\n * @return {?}\n */\nfunction syntaxError(msg, parseErrors) {\n var /** @type {?} */ error = Error(msg);\n ((error))[ERROR_SYNTAX_ERROR] = true;\n if (parseErrors)\n ((error))[ERROR_PARSE_ERRORS] = parseErrors;\n return error;\n}\nvar ERROR_SYNTAX_ERROR = 'ngSyntaxError';\nvar ERROR_PARSE_ERRORS = 'ngParseErrors';\n/**\n * @param {?} error\n * @return {?}\n */\nfunction isSyntaxError(error) {\n return ((error))[ERROR_SYNTAX_ERROR];\n}\n/**\n * @param {?} error\n * @return {?}\n */\nfunction getParseErrors(error) {\n return ((error))[ERROR_PARSE_ERRORS] || [];\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]+)$/;\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 = _angular_core.ɵ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 // Runtime type\n return \"./\" + _angular_core.ɵstringify(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 {?} 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 || null;\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 encapsulation = _a.encapsulation, template = _a.template, templateUrl = _a.templateUrl, styles = _a.styles, styleUrls = _a.styleUrls, externalStylesheets = _a.externalStylesheets, animations = _a.animations, ngContentSelectors = _a.ngContentSelectors, interpolation = _a.interpolation, isInline = _a.isInline, preserveWhitespaces = _a.preserveWhitespaces;\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 this.preserveWhitespaces = preserveWhitespaces;\n }\n /**\n * @return {?}\n */\n CompileTemplateMetadata.prototype.toSummary = function () {\n return {\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 isHost = _a.isHost, type = _a.type, isComponent = _a.isComponent, selector = _a.selector, exportAs = _a.exportAs, changeDetection = _a.changeDetection, inputs = _a.inputs, outputs = _a.outputs, hostListeners = _a.hostListeners, hostProperties = _a.hostProperties, hostAttributes = _a.hostAttributes, providers = _a.providers, viewProviders = _a.viewProviders, queries = _a.queries, viewQueries = _a.viewQueries, entryComponents = _a.entryComponents, template = _a.template, componentViewType = _a.componentViewType, rendererType = _a.rendererType, componentFactory = _a.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 isHost = _a.isHost, type = _a.type, isComponent = _a.isComponent, selector = _a.selector, exportAs = _a.exportAs, changeDetection = _a.changeDetection, inputs = _a.inputs, outputs = _a.outputs, host = _a.host, providers = _a.providers, viewProviders = _a.viewProviders, queries = _a.queries, viewQueries = _a.viewQueries, entryComponents = _a.entryComponents, template = _a.template, componentViewType = _a.componentViewType, rendererType = _a.rendererType, componentFactory = _a.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(/** @type {?} */ ((compMeta.selector)))[0].getMatchingElementTemplate();\n return CompileDirectiveMetadata.create({\n isHost: true,\n type: { reference: hostTypeReference, diDeps: [], lifecycleHooks: [] },\n template: new CompileTemplateMetadata({\n encapsulation: _angular_core.ViewEncapsulation.None,\n template: template,\n templateUrl: '',\n styles: [],\n styleUrls: [],\n ngContentSelectors: [],\n animations: [],\n isInline: true,\n externalStylesheets: [],\n interpolation: null,\n preserveWhitespaces: false,\n }),\n exportAs: null,\n changeDetection: _angular_core.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: _angular_core.ViewEncapsulation.None, styles: [], data: {} },\n entryComponents: [],\n componentFactory: null\n });\n}\nvar CompilePipeMetadata = (function () {\n /**\n * @param {?} __0\n */\n function CompilePipeMetadata(_a) {\n var type = _a.type, name = _a.name, pure = _a.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 type = _a.type, providers = _a.providers, declaredDirectives = _a.declaredDirectives, exportedDirectives = _a.exportedDirectives, declaredPipes = _a.declaredPipes, exportedPipes = _a.exportedPipes, entryComponents = _a.entryComponents, bootstrapComponents = _a.bootstrapComponents, importedModules = _a.importedModules, exportedModules = _a.exportedModules, schemas = _a.schemas, transitiveModule = _a.transitiveModule, id = _a.id;\n this.type = type || null;\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 || null;\n this.transitiveModule = transitiveModule || null;\n }\n /**\n * @return {?}\n */\n CompileNgModuleMetadata.prototype.toSummary = function () {\n var /** @type {?} */ module = ((this.transitiveModule));\n return {\n summaryKind: CompileSummaryKind.NgModule,\n type: this.type,\n entryComponents: module.entryComponents,\n providers: module.providers,\n modules: module.modules,\n exportedDirectives: module.exportedDirectives,\n exportedPipes: module.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 || null;\n this.useValue = useValue;\n this.useExisting = useExisting;\n this.useFactory = useFactory || null;\n this.dependencies = deps || null;\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 */\n/**\n * Provides access to reflection data about symbols that the compiler needs.\n * @abstract\n */\nvar CompileReflector = (function () {\n function CompileReflector() {\n }\n /**\n * @abstract\n * @param {?} typeOrFunc\n * @return {?}\n */\n CompileReflector.prototype.parameters = function (typeOrFunc) { };\n /**\n * @abstract\n * @param {?} typeOrFunc\n * @return {?}\n */\n CompileReflector.prototype.annotations = function (typeOrFunc) { };\n /**\n * @abstract\n * @param {?} typeOrFunc\n * @return {?}\n */\n CompileReflector.prototype.propMetadata = function (typeOrFunc) { };\n /**\n * @abstract\n * @param {?} type\n * @param {?} lcProperty\n * @return {?}\n */\n CompileReflector.prototype.hasLifecycleHook = function (type, lcProperty) { };\n /**\n * @abstract\n * @param {?} type\n * @param {?} cmpMetadata\n * @return {?}\n */\n CompileReflector.prototype.componentModuleUrl = function (type, cmpMetadata) { };\n /**\n * @abstract\n * @param {?} ref\n * @return {?}\n */\n CompileReflector.prototype.resolveExternalReference = function (ref) { };\n return CompileReflector;\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 ? _angular_core.ViewEncapsulation.Emulated : _c, _d = _b.useJit, useJit = _d === void 0 ? true : _d, missingTranslation = _b.missingTranslation, enableLegacyTemplate = _b.enableLegacyTemplate, preserveWhitespaces = _b.preserveWhitespaces;\n this.defaultEncapsulation = defaultEncapsulation;\n this.useJit = !!useJit;\n this.missingTranslation = missingTranslation || null;\n this.enableLegacyTemplate = enableLegacyTemplate !== false;\n this.preserveWhitespaces = preserveWhitespacesDefault(noUndefined(preserveWhitespaces));\n }\n return CompilerConfig;\n}());\n/**\n * @param {?} preserveWhitespacesOption\n * @param {?=} defaultSetting\n * @return {?}\n */\nfunction preserveWhitespacesDefault(preserveWhitespacesOption, defaultSetting) {\n if (defaultSetting === void 0) { defaultSetting = true; }\n return preserveWhitespacesOption === null ? defaultSetting : preserveWhitespacesOption;\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 NonNullAssert = (function (_super) {\n __extends(NonNullAssert, _super);\n /**\n * @param {?} span\n * @param {?} expression\n */\n function NonNullAssert(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 NonNullAssert.prototype.visit = function (visitor, context) {\n if (context === void 0) { context = null; }\n return visitor.visitNonNullAssert(this, context);\n };\n return NonNullAssert;\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 NullAstVisitor = (function () {\n function NullAstVisitor() {\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n NullAstVisitor.prototype.visitBinary = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n NullAstVisitor.prototype.visitChain = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n NullAstVisitor.prototype.visitConditional = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n NullAstVisitor.prototype.visitFunctionCall = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n NullAstVisitor.prototype.visitImplicitReceiver = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n NullAstVisitor.prototype.visitInterpolation = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n NullAstVisitor.prototype.visitKeyedRead = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n NullAstVisitor.prototype.visitKeyedWrite = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n NullAstVisitor.prototype.visitLiteralArray = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n NullAstVisitor.prototype.visitLiteralMap = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n NullAstVisitor.prototype.visitLiteralPrimitive = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n NullAstVisitor.prototype.visitMethodCall = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n NullAstVisitor.prototype.visitPipe = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n NullAstVisitor.prototype.visitPrefixNot = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n NullAstVisitor.prototype.visitNonNullAssert = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n NullAstVisitor.prototype.visitPropertyRead = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n NullAstVisitor.prototype.visitPropertyWrite = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n NullAstVisitor.prototype.visitQuote = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n NullAstVisitor.prototype.visitSafeMethodCall = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n NullAstVisitor.prototype.visitSafePropertyRead = function (ast, context) { };\n return NullAstVisitor;\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.visitNonNullAssert = 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, /** @type {?} */ ((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.visitNonNullAssert = function (ast, context) {\n return new NonNullAssert(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 * @param {?} ast\n * @param {?} visitor\n * @param {?=} context\n * @return {?}\n */\nfunction visitAstChildren(ast, visitor, context) {\n /**\n * @param {?} ast\n * @return {?}\n */\n function visit(ast) {\n visitor.visit && visitor.visit(ast, context) || ast.visit(visitor, context);\n }\n /**\n * @template T\n * @param {?} asts\n * @return {?}\n */\n function visitAll(asts) { asts.forEach(visit); }\n ast.visit({\n /**\n * @param {?} ast\n * @return {?}\n */\n visitBinary: function (ast) {\n visit(ast.left);\n visit(ast.right);\n },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitChain: function (ast) { visitAll(ast.expressions); },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitConditional: function (ast) {\n visit(ast.condition);\n visit(ast.trueExp);\n visit(ast.falseExp);\n },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitFunctionCall: function (ast) {\n if (ast.target) {\n visit(ast.target);\n }\n visitAll(ast.args);\n },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitImplicitReceiver: function (ast) { },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitInterpolation: function (ast) { visitAll(ast.expressions); },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitKeyedRead: function (ast) {\n visit(ast.obj);\n visit(ast.key);\n },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitKeyedWrite: function (ast) {\n visit(ast.obj);\n visit(ast.key);\n visit(ast.obj);\n },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitLiteralArray: function (ast) { visitAll(ast.expressions); },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitLiteralMap: function (ast) { },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitLiteralPrimitive: function (ast) { },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitMethodCall: function (ast) {\n visit(ast.receiver);\n visitAll(ast.args);\n },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitPipe: function (ast) {\n visit(ast.exp);\n visitAll(ast.args);\n },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitPrefixNot: function (ast) { visit(ast.expression); },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitNonNullAssert: function (ast) { visit(ast.expression); },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitPropertyRead: function (ast) { visit(ast.receiver); },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitPropertyWrite: function (ast) {\n visit(ast.receiver);\n visit(ast.value);\n },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitQuote: function (ast) { },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitSafeMethodCall: function (ast) {\n visit(ast.receiver);\n visitAll(ast.args);\n },\n /**\n * @param {?} ast\n * @return {?}\n */\n visitSafePropertyRead: function (ast) { visit(ast.receiver); },\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 $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 (!_angular_core.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 (_angular_core.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 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 // Do nothing.\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(sourceToLex);\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 if (this.optionalOperator('!')) {\n result = new NonNullAssert(this.span(result.span.start), result);\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 {?} */ quoted = this.next.isString();\n var /** @type {?} */ key = this.expectIdentifierOrKeywordOrString();\n keys.push({ key: key, quoted: quoted });\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, /** @type {?} */ ((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(/** @type {?} */ ((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.visitNonNullAssert = 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.contextualMessage = function () {\n var /** @type {?} */ ctx = this.span.start.getContext(100, 3);\n return ctx ? \" (\\\"\" + ctx.before + \"[\" + ParseErrorLevel[this.level] + \" ->]\" + ctx.after + \"\\\")\" : '';\n };\n /**\n * @return {?}\n */\n ParseError.prototype.toString = function () {\n var /** @type {?} */ details = this.span.details ? \", \" + this.span.details : '';\n return \"\" + this.msg + this.contextualMessage() + \": \" + 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, -1, -1, -1), new ParseLocation(sourceFile, -1, -1, -1));\n}\n/**\n * A path is an ordered set of elements. Typically a path is to a\n * particular offset in a source file. The head of the list is the top\n * most node. The tail is the node that contains the offset directly.\n *\n * For example, the expresion `a + b + c` might have an ast that looks\n * like:\n * +\n * / \\\n * a +\n * / \\\n * b c\n *\n * The path to the node at offset 9 would be `['+' at 1-10, '+' at 7-10,\n * 'c' at 9-10]` and the path the node at offset 1 would be\n * `['+' at 1-10, 'a' at 1-2]`.\n */\nvar AstPath = (function () {\n /**\n * @param {?} path\n * @param {?=} position\n */\n function AstPath(path, position) {\n if (position === void 0) { position = -1; }\n this.path = path;\n this.position = position;\n }\n Object.defineProperty(AstPath.prototype, \"empty\", {\n /**\n * @return {?}\n */\n get: function () { return !this.path || !this.path.length; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AstPath.prototype, \"head\", {\n /**\n * @return {?}\n */\n get: function () { return this.path[0]; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AstPath.prototype, \"tail\", {\n /**\n * @return {?}\n */\n get: function () { return this.path[this.path.length - 1]; },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} node\n * @return {?}\n */\n AstPath.prototype.parentOf = function (node) {\n return node && this.path[this.path.indexOf(node) - 1];\n };\n /**\n * @param {?} node\n * @return {?}\n */\n AstPath.prototype.childOf = function (node) { return this.path[this.path.indexOf(node) + 1]; };\n /**\n * @template N\n * @param {?} ctor\n * @return {?}\n */\n AstPath.prototype.first = function (ctor) {\n for (var /** @type {?} */ i = this.path.length - 1; i >= 0; i--) {\n var /** @type {?} */ item = this.path[i];\n if (item instanceof ctor)\n return (item);\n }\n };\n /**\n * @param {?} node\n * @return {?}\n */\n AstPath.prototype.push = function (node) { this.path.push(node); };\n /**\n * @return {?}\n */\n AstPath.prototype.pop = function () { return ((this.path.pop())); };\n return AstPath;\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 if (startSourceSpan === void 0) { startSourceSpan = null; }\n if (endSourceSpan === void 0) { endSourceSpan = null; }\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}\nvar RecursiveVisitor = (function () {\n function RecursiveVisitor() {\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveVisitor.prototype.visitElement = function (ast, context) {\n this.visitChildren(context, function (visit) {\n visit(ast.attrs);\n visit(ast.children);\n });\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveVisitor.prototype.visitAttribute = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveVisitor.prototype.visitText = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveVisitor.prototype.visitComment = function (ast, context) { };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveVisitor.prototype.visitExpansion = function (ast, context) {\n return this.visitChildren(context, function (visit) { visit(ast.cases); });\n };\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n RecursiveVisitor.prototype.visitExpansionCase = function (ast, context) { };\n /**\n * @template T\n * @param {?} context\n * @param {?} cb\n * @return {?}\n */\n RecursiveVisitor.prototype.visitChildren = function (context, cb) {\n var /** @type {?} */ results = [];\n var /** @type {?} */ t = this;\n /**\n * @template T\n * @param {?} children\n * @return {?}\n */\n function visit(children) {\n if (children)\n results.push(visitAll(t, children, context));\n }\n cb(visit);\n return [].concat.apply([], results);\n };\n return RecursiveVisitor;\n}());\n/**\n * @param {?} ast\n * @return {?}\n */\nfunction spanOf(ast) {\n var /** @type {?} */ start = ast.sourceSpan.start.offset;\n var /** @type {?} */ end = ast.sourceSpan.end.offset;\n if (ast instanceof Element) {\n if (ast.endSourceSpan) {\n end = ast.endSourceSpan.end.offset;\n }\n else if (ast.children && ast.children.length) {\n end = spanOf(ast.children[ast.children.length - 1]).end;\n }\n }\n return { start: start, end: end };\n}\n/**\n * @param {?} nodes\n * @param {?} position\n * @return {?}\n */\nfunction findNode(nodes, position) {\n var /** @type {?} */ path = [];\n var /** @type {?} */ visitor = new (function (_super) {\n __extends(class_1, _super);\n function class_1() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {?} ast\n * @param {?} context\n * @return {?}\n */\n class_1.prototype.visit = function (ast, context) {\n var /** @type {?} */ span = spanOf(ast);\n if (span.start <= position && position < span.end) {\n path.push(ast);\n }\n else {\n // Returning a value here will result in the children being skipped.\n return true;\n }\n };\n return class_1;\n }(RecursiveVisitor));\n visitAll(visitor, nodes);\n return new AstPath(path, position);\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 \\\"&#;\\\" or \\\"&#x;\\\" 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([/** @type {?} */ ((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) || isDigit(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 = undefined;\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 var /** @type {?} */ el = this._getParentElement();\n if (el && this.getTagDefinition(el.name).isVoid) {\n this._elementStack.pop();\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, undefined);\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 var /** @type {?} */ parentEl = this._getParentElement();\n if (parentEl && this.getTagDefinition(parentEl.name).isClosedByChild(el.name)) {\n this._elementStack.pop();\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 = ((undefined));\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 * `` 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 (!isNgContainer(this._elementStack[i].name)) {\n return { parent: this._elementStack[i], container: container };\n }\n container = this._elementStack[i];\n }\n return { parent: null, 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 */\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 \"\" :\n \"\" + ph.children.map(function (child) { return child.visit(_this); }).join(', ') + \"\";\n };\n /**\n * @param {?} ph\n * @param {?} context\n * @return {?}\n */\n _SerializerVisitor.prototype.visitPlaceholder = function (ph, context) {\n return ph.value ? \"\" + ph.value + \"\" : \"\";\n };\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n _SerializerVisitor.prototype.visitIcuPlaceholder = function (ph, context) {\n return \"\" + ph.value.visit(this) + \"\";\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 */\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 if (nodes.length) {\n this.sources = [{\n filePath: nodes[0].sourceSpan.start.file.url,\n startLine: nodes[0].sourceSpan.start.line + 1,\n startCol: nodes[0].sourceSpan.start.col + 1,\n endLine: nodes[nodes.length - 1].sourceSpan.end.line + 1,\n endCol: nodes[0].sourceSpan.start.col + 1\n }];\n }\n else {\n this.sources = [];\n }\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 * @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 * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n RecurseVisitor.prototype.visitIcuPlaceholder = function (ph, context) { };\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 ? '/>' : \">\";\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] = \"\";\n }\n return new TagPlaceholder(el.name, attrs, startPhName, closePhName, children, isVoid, /** @type {?} */ ((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, /** @type {?} */ ((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, /** @type {?} */ ((undefined)), undefined, undefined);\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 = ((undefined));\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 ``)\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 return null;\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 = undefined;\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 null;\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 `` and `` 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 * `

{ICU message}

` would produce two messages:\n * - one for the

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 = undefined;\n };\n /**\n * @param {?} node\n * @param {?} msg\n * @return {?}\n */\n _Visitor.prototype._reportError = function (node, msg) {\n this._errors.push(new I18nError(/** @type {?} */ ((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);\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 * @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('') + \"\";\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 \"\";\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 \"\";\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 * @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 * @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];\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 _CONTEXT_GROUP_TAG = 'context-group';\nvar _CONTEXT_TAG = 'context';\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 {?} */ contextTags = [];\n message.sources.forEach(function (source) {\n var /** @type {?} */ contextGroupTag = new Tag(_CONTEXT_GROUP_TAG, { purpose: 'location' });\n contextGroupTag.children.push(new CR(10), new Tag(_CONTEXT_TAG, { 'context-type': 'sourcefile' }, [new Text$2(source.filePath)]), new CR(10), new Tag(_CONTEXT_TAG, { 'context-type': 'linenumber' }, [new Text$2(\"\" + source.startLine)]), new CR(8));\n contextTags.push(new CR(8), contextGroupTag);\n });\n var /** @type {?} */ transUnit = new Tag(_UNIT_TAG, { id: message.id, datatype: 'html' });\n (_a = transUnit.children).push.apply(_a, [new CR(8), new Tag(_SOURCE_TAG, {}, visitor.serialize(message.nodes))].concat(contextTags));\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 var _a;\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, msgIdToHtml = _a.msgIdToHtml, errors = _a.errors;\n // xml nodes to i18n nodes\n var /** @type {?} */ i18nNodesByMsgId = {};\n var /** @type {?} */ converter = new XmlToI18n();\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(\"xliff parse errors:\\n\" + errors.join('\\n'));\n }\n return { locale: /** @type {?} */ ((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 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.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 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._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 XliffParser.prototype.visitElement = function (element, context) {\n switch (element.name) {\n case _UNIT_TAG:\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 + \"> 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:\n // ignore source message\n break;\n case _TARGET_TAG:\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 _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(/** @type {?} */ ((node.sourceSpan)), message));\n };\n return XliffParser;\n}());\nvar XmlToI18n = (function () {\n function XmlToI18n() {\n }\n /**\n * @param {?} message\n * @param {?} url\n * @return {?}\n */\n XmlToI18n.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.prototype.visitText = function (text, context) { return new Text$1(text.value, /** @type {?} */ ((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, /** @type {?} */ ((el.sourceSpan)));\n }\n this._addError(el, \"<\" + _PLACEHOLDER_TAG + \"> misses the \\\"id\\\" attribute\");\n }\n else {\n this._addError(el, \"Unexpected tag\");\n }\n return null;\n };\n /**\n * @param {?} icu\n * @param {?} context\n * @return {?}\n */\n XmlToI18n.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.prototype.visitExpansionCase = function (icuCase, context) {\n return {\n value: icuCase.value,\n nodes: visitAll(this, icuCase.expression),\n };\n };\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(/** @type {?} */ ((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 var /** @type {?} */ notes = new Tag('notes');\n if (message.description || message.meaning) {\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 }\n message.sources.forEach(function (source) {\n notes.children.push(new CR(8), new Tag('note', { category: 'location' }, [\n new Text$2(source.filePath + \":\" + source.startLine + (source.endLine !== source.startLine ? ',' + source.endLine : ''))\n ]));\n });\n notes.children.push(new CR(6));\n unit.children.push(new CR(6), notes);\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: \"\",\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 var /** @type {?} */ idStr = (this._nextPlaceholderId++).toString();\n return [new Tag(_PLACEHOLDER_TAG$1, {\n id: idStr,\n equiv: ph.name,\n disp: \"{{\" + ph.value + \"}}\",\n })];\n };\n /**\n * @param {?} ph\n * @param {?=} context\n * @return {?}\n */\n _WriteVisitor$1.prototype.visitIcuPlaceholder = function (ph, context) {\n var /** @type {?} */ cases = Object.keys(ph.value.cases).map(function (value) { return value + ' {...}'; }).join(' ');\n var /** @type {?} */ idStr = (this._nextPlaceholderId++).toString();\n return [new Tag(_PLACEHOLDER_TAG$1, { id: idStr, equiv: ph.name, disp: \"{\" + ph.value.expression + \", \" + ph.value.type + \", \" + cases + \"}\" })];\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 _SOURCE_TAG$2 = 'source';\nvar _DOCTYPE = \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\";\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 var /** @type {?} */ sourceTags = [];\n message.sources.forEach(function (source) {\n sourceTags.push(new Tag(_SOURCE_TAG$2, {}, [\n new Text$2(source.filePath + \":\" + source.startLine + (source.endLine !== source.startLine ? ',' + source.endLine : ''))\n ]));\n });\n rootNode.children.push(new CR(2), new Tag(_MESSAGE_TAG, attrs, sourceTags.concat(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(\"\")]);\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: /** @type {?} */ ((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(/** @type {?} */ ((innerTextStart)), /** @type {?} */ ((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(/** @type {?} */ ((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, /** @type {?} */ ((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, /** @type {?} */ ((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 return null;\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(/** @type {?} */ ((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 = _angular_core.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 + \"\";\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 === _angular_core.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 === _angular_core.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 = _angular_core.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 else {\n this._translationBundle =\n new TranslationBundle({}, null, digest, undefined, 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 (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 = '@angular/core';\nvar Identifiers = (function () {\n function Identifiers() {\n }\n return Identifiers;\n}());\nIdentifiers.ANALYZE_FOR_ENTRY_COMPONENTS = {\n name: 'ANALYZE_FOR_ENTRY_COMPONENTS',\n moduleName: CORE,\n runtime: _angular_core.ANALYZE_FOR_ENTRY_COMPONENTS\n};\nIdentifiers.ElementRef = { name: 'ElementRef', moduleName: CORE, runtime: _angular_core.ElementRef };\nIdentifiers.NgModuleRef = { name: 'NgModuleRef', moduleName: CORE, runtime: _angular_core.NgModuleRef };\nIdentifiers.ViewContainerRef = { name: 'ViewContainerRef', moduleName: CORE, runtime: _angular_core.ViewContainerRef };\nIdentifiers.ChangeDetectorRef = {\n name: 'ChangeDetectorRef',\n moduleName: CORE,\n runtime: _angular_core.ChangeDetectorRef\n};\nIdentifiers.QueryList = { name: 'QueryList', moduleName: CORE, runtime: _angular_core.QueryList };\nIdentifiers.TemplateRef = { name: 'TemplateRef', moduleName: CORE, runtime: _angular_core.TemplateRef };\nIdentifiers.CodegenComponentFactoryResolver = {\n name: 'ɵCodegenComponentFactoryResolver',\n moduleName: CORE,\n runtime: _angular_core.ɵCodegenComponentFactoryResolver\n};\nIdentifiers.ComponentFactoryResolver = {\n name: 'ComponentFactoryResolver',\n moduleName: CORE,\n runtime: _angular_core.ComponentFactoryResolver\n};\nIdentifiers.ComponentFactory = { name: 'ComponentFactory', moduleName: CORE, runtime: _angular_core.ComponentFactory };\nIdentifiers.ComponentRef = { name: 'ComponentRef', moduleName: CORE, runtime: _angular_core.ComponentRef };\nIdentifiers.NgModuleFactory = { name: 'NgModuleFactory', moduleName: CORE, runtime: _angular_core.NgModuleFactory };\nIdentifiers.createModuleFactory = {\n name: 'ɵcmf',\n moduleName: CORE,\n runtime: _angular_core.ɵcmf,\n};\nIdentifiers.moduleDef = {\n name: 'ɵmod',\n moduleName: CORE,\n runtime: _angular_core.ɵmod,\n};\nIdentifiers.moduleProviderDef = {\n name: 'ɵmpd',\n moduleName: CORE,\n runtime: _angular_core.ɵmpd,\n};\nIdentifiers.RegisterModuleFactoryFn = {\n name: 'ɵregisterModuleFactory',\n moduleName: CORE,\n runtime: _angular_core.ɵregisterModuleFactory,\n};\nIdentifiers.Injector = { name: 'Injector', moduleName: CORE, runtime: _angular_core.Injector };\nIdentifiers.ViewEncapsulation = {\n name: 'ViewEncapsulation',\n moduleName: CORE,\n runtime: _angular_core.ViewEncapsulation\n};\nIdentifiers.ChangeDetectionStrategy = {\n name: 'ChangeDetectionStrategy',\n moduleName: CORE,\n runtime: _angular_core.ChangeDetectionStrategy\n};\nIdentifiers.SecurityContext = {\n name: 'SecurityContext',\n moduleName: CORE,\n runtime: _angular_core.SecurityContext,\n};\nIdentifiers.LOCALE_ID = { name: 'LOCALE_ID', moduleName: CORE, runtime: _angular_core.LOCALE_ID };\nIdentifiers.TRANSLATIONS_FORMAT = {\n name: 'TRANSLATIONS_FORMAT',\n moduleName: CORE,\n runtime: _angular_core.TRANSLATIONS_FORMAT\n};\nIdentifiers.inlineInterpolate = {\n name: 'ɵinlineInterpolate',\n moduleName: CORE,\n runtime: _angular_core.ɵinlineInterpolate\n};\nIdentifiers.interpolate = { name: 'ɵinterpolate', moduleName: CORE, runtime: _angular_core.ɵinterpolate };\nIdentifiers.EMPTY_ARRAY = { name: 'ɵEMPTY_ARRAY', moduleName: CORE, runtime: _angular_core.ɵEMPTY_ARRAY };\nIdentifiers.EMPTY_MAP = { name: 'ɵEMPTY_MAP', moduleName: CORE, runtime: _angular_core.ɵEMPTY_MAP };\nIdentifiers.Renderer = { name: 'Renderer', moduleName: CORE, runtime: _angular_core.Renderer };\nIdentifiers.viewDef = { name: 'ɵvid', moduleName: CORE, runtime: _angular_core.ɵvid };\nIdentifiers.elementDef = { name: 'ɵeld', moduleName: CORE, runtime: _angular_core.ɵeld };\nIdentifiers.anchorDef = { name: 'ɵand', moduleName: CORE, runtime: _angular_core.ɵand };\nIdentifiers.textDef = { name: 'ɵted', moduleName: CORE, runtime: _angular_core.ɵted };\nIdentifiers.directiveDef = { name: 'ɵdid', moduleName: CORE, runtime: _angular_core.ɵdid };\nIdentifiers.providerDef = { name: 'ɵprd', moduleName: CORE, runtime: _angular_core.ɵprd };\nIdentifiers.queryDef = { name: 'ɵqud', moduleName: CORE, runtime: _angular_core.ɵqud };\nIdentifiers.pureArrayDef = { name: 'ɵpad', moduleName: CORE, runtime: _angular_core.ɵpad };\nIdentifiers.pureObjectDef = { name: 'ɵpod', moduleName: CORE, runtime: _angular_core.ɵpod };\nIdentifiers.purePipeDef = { name: 'ɵppd', moduleName: CORE, runtime: _angular_core.ɵppd };\nIdentifiers.pipeDef = { name: 'ɵpid', moduleName: CORE, runtime: _angular_core.ɵpid };\nIdentifiers.nodeValue = { name: 'ɵnov', moduleName: CORE, runtime: _angular_core.ɵnov };\nIdentifiers.ngContentDef = { name: 'ɵncd', moduleName: CORE, runtime: _angular_core.ɵncd };\nIdentifiers.unwrapValue = { name: 'ɵunv', moduleName: CORE, runtime: _angular_core.ɵunv };\nIdentifiers.createRendererType2 = { name: 'ɵcrt', moduleName: CORE, runtime: _angular_core.ɵcrt };\nIdentifiers.RendererType2 = {\n name: 'RendererType2',\n moduleName: CORE,\n // type only\n runtime: null\n};\nIdentifiers.ViewDefinition = {\n name: 'ɵViewDefinition',\n moduleName: CORE,\n // type only\n runtime: null\n};\nIdentifiers.createComponentFactory = { name: 'ɵccf', moduleName: CORE, runtime: _angular_core.ɵccf };\n/**\n * @param {?} reference\n * @return {?}\n */\nfunction createTokenForReference(reference) {\n return { identifier: { reference: reference } };\n}\n/**\n * @param {?} reflector\n * @param {?} reference\n * @return {?}\n */\nfunction createTokenForExternalReference(reflector, reference) {\n return createTokenForReference(reflector.resolveExternalReference(reference));\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 PRESERVE_WS_ATTR_NAME = 'ngPreserveWhitespaces';\nvar SKIP_WS_TRIM_TAGS = new Set(['pre', 'template', 'textarea', 'script', 'style']);\n// Equivalent to \\s with \\u00a0 (non-breaking space) excluded.\n// Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp\nvar WS_CHARS = ' \\f\\n\\r\\t\\v\\u1680\\u180e\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff';\nvar NO_WS_REGEXP = new RegExp(\"[^\" + WS_CHARS + \"]\");\nvar WS_REPLACE_REGEXP = new RegExp(\"[\" + WS_CHARS + \"]{2,}\", 'g');\n/**\n * @param {?} attrs\n * @return {?}\n */\nfunction hasPreserveWhitespacesAttr(attrs) {\n return attrs.some(function (attr) { return attr.name === PRESERVE_WS_ATTR_NAME; });\n}\n/**\n * Angular Dart introduced &ngsp; as a placeholder for non-removable space, see:\n * https://github.com/dart-lang/angular/blob/0bb611387d29d65b5af7f9d2515ab571fd3fbee4/_tests/test/compiler/preserve_whitespace_test.dart#L25-L32\n * In Angular Dart &ngsp; is converted to the 0xE500 PUA (Private Use Areas) unicode character\n * and later on replaced by a space. We are re-implementing the same idea here.\n * @param {?} value\n * @return {?}\n */\nfunction replaceNgsp(value) {\n // lexer is replacing the &ngsp; pseudo-entity with NGSP_UNICODE\n return value.replace(new RegExp(NGSP_UNICODE, 'g'), ' ');\n}\n/**\n * This visitor can walk HTML parse tree and remove / trim text nodes using the following rules:\n * - consider spaces, tabs and new lines as whitespace characters;\n * - drop text nodes consisting of whitespace characters only;\n * - for all other text nodes replace consecutive whitespace characters with one space;\n * - convert &ngsp; pseudo-entity to a single space;\n *\n * Removal and trimming of whitespaces have positive performance impact (less code to generate\n * while compiling templates, faster view creation). At the same time it can be \"destructive\"\n * in some cases (whitespaces can influence layout). Because of the potential of breaking layout\n * this visitor is not activated by default in Angular 4 and people need to explicitly opt-in for\n * whitespace removal. The default option for whitespace removal will be revisited post Angular 5\n * and might be changed to \"on\" by default.\n */\nvar WhitespaceVisitor = (function () {\n function WhitespaceVisitor() {\n }\n /**\n * @param {?} element\n * @param {?} context\n * @return {?}\n */\n WhitespaceVisitor.prototype.visitElement = function (element, context) {\n if (SKIP_WS_TRIM_TAGS.has(element.name) || hasPreserveWhitespacesAttr(element.attrs)) {\n // don't descent into elements where we need to preserve whitespaces\n // but still visit all attributes to eliminate one used as a market to preserve WS\n return new Element(element.name, visitAll(this, element.attrs), element.children, element.sourceSpan, element.startSourceSpan, element.endSourceSpan);\n }\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 WhitespaceVisitor.prototype.visitAttribute = function (attribute, context) {\n return attribute.name !== PRESERVE_WS_ATTR_NAME ? attribute : null;\n };\n /**\n * @param {?} text\n * @param {?} context\n * @return {?}\n */\n WhitespaceVisitor.prototype.visitText = function (text, context) {\n var /** @type {?} */ isNotBlank = text.value.match(NO_WS_REGEXP);\n if (isNotBlank) {\n return new Text(replaceNgsp(text.value).replace(WS_REPLACE_REGEXP, ' '), text.sourceSpan);\n }\n return null;\n };\n /**\n * @param {?} comment\n * @param {?} context\n * @return {?}\n */\n WhitespaceVisitor.prototype.visitComment = function (comment, context) { return comment; };\n /**\n * @param {?} expansion\n * @param {?} context\n * @return {?}\n */\n WhitespaceVisitor.prototype.visitExpansion = function (expansion, context) { return expansion; };\n /**\n * @param {?} expansionCase\n * @param {?} context\n * @return {?}\n */\n WhitespaceVisitor.prototype.visitExpansionCase = function (expansionCase, context) { return expansionCase; };\n return WhitespaceVisitor;\n}());\n/**\n * @param {?} htmlAstWithErrors\n * @return {?}\n */\nfunction removeWhitespaces(htmlAstWithErrors) {\n return new ParseTreeResult(visitAll(new WhitespaceVisitor(), htmlAstWithErrors.rootNodes), htmlAstWithErrors.errors);\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 * \n * zero\n * one\n * more than one\n * \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 \\\"=\\\" 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 {?} reflector\n * @param {?} component\n */\n function ProviderViewContext(reflector, component) {\n var _this = this;\n this.reflector = reflector;\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 = createTokenForExternalReference(this.viewContext.reflector, Identifiers.TemplateRef);\n this._addQueryReadsTo(templateRefId, templateRefId, this._queriedTokens);\n }\n refs.forEach(function (refAst) {\n var defaultQueryValue = refAst.value ||\n createTokenForExternalReference(_this.viewContext.reflector, Identifiers.ElementRef);\n _this._addQueryReadsTo({ value: refAst.name }, defaultQueryValue, _this._queriedTokens);\n });\n if (this._queriedTokens.get(this.viewContext.reflector.resolveExternalReference(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 // Note: Maps keep their insertion order.\n var /** @type {?} */ lazyProviders = [];\n var /** @type {?} */ eagerProviders = [];\n this._transformedProviders.forEach(function (provider) {\n if (provider.eager) {\n eagerProviders.push(provider);\n }\n else {\n lazyProviders.push(provider);\n }\n });\n return lazyProviders.concat(eagerProviders);\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 = ((undefined));\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 = false; }\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) ===\n this.viewContext.reflector.resolveExternalReference(Identifiers.Renderer) ||\n tokenReference(dep.token) ===\n this.viewContext.reflector.resolveExternalReference(Identifiers.ElementRef) ||\n tokenReference(dep.token) ===\n this.viewContext.reflector.resolveExternalReference(Identifiers.ChangeDetectorRef) ||\n tokenReference(dep.token) ===\n this.viewContext.reflector.resolveExternalReference(Identifiers.TemplateRef)) {\n return dep;\n }\n if (tokenReference(dep.token) ===\n this.viewContext.reflector.resolveExternalReference(Identifiers.ViewContainerRef)) {\n this._hasViewContainer = true;\n }\n }\n // access the injector\n if (tokenReference(dep.token) ===\n this.viewContext.reflector.resolveExternalReference(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 = false; }\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(/** @type {?} */ ((dep.token))) ||\n this.viewContext.viewProviders.get(tokenReference(/** @type {?} */ ((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(/** @type {?} */ ((dep.token))), this._sourceSpan));\n }\n return result;\n };\n return ProviderElementContext;\n}());\nvar NgModuleProviderAnalyzer = (function () {\n /**\n * @param {?} reflector\n * @param {?} ngModule\n * @param {?} extraProviders\n * @param {?} sourceSpan\n */\n function NgModuleProviderAnalyzer(reflector, ngModule, extraProviders, sourceSpan) {\n var _this = this;\n this.reflector = reflector;\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 // Note: Maps keep their insertion order.\n var /** @type {?} */ lazyProviders = [];\n var /** @type {?} */ eagerProviders = [];\n this._transformedProviders.forEach(function (provider) {\n if (provider.eager) {\n eagerProviders.push(provider);\n }\n else {\n lazyProviders.push(provider);\n }\n });\n return lazyProviders.concat(eagerProviders);\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 = ((undefined));\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 = false; }\n var /** @type {?} */ foundLocal = false;\n if (!dep.isSkipSelf && dep.token != null) {\n // access the injector\n if (tokenReference(dep.token) ===\n this.reflector.resolveExternalReference(Identifiers.Injector) ||\n tokenReference(dep.token) ===\n this.reflector.resolveExternalReference(Identifiers.ComponentFactoryResolver)) {\n foundLocal = true;\n // access providers\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(/** @type {?} */ ((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 = /\\/\\*[\\s\\S]+?\\*\\//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 return null;\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 return null;\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, /** @type {?} */ ((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 || 'undefined', false, sourceSpan);\n targetMatchableAttrs.push([name, /** @type {?} */ ((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, _angular_core.SecurityContext.NONE, boundProp.expression, null, boundProp.sourceSpan);\n }\n var /** @type {?} */ unit = null;\n var /** @type {?} */ bindingType = ((undefined));\n var /** @type {?} */ boundPropertyName = null;\n var /** @type {?} */ parts = boundProp.name.split(PROPERTY_PARTS_SEPARATOR);\n var /** @type {?} */ securityContexts = ((undefined));\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 = [_angular_core.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 = [_angular_core.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, [/** @type {?} */ ((null)), name]), target = _a[0], eventName = _a[1];\n var /** @type {?} */ ast = this._parseAction(expression, sourceSpan);\n targetMatchableAttrs.push([/** @type {?} */ ((name)), /** @type {?} */ ((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(/** @type {?} */ ((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 ? [_angular_core.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 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 (isNgContent(nodeName)) {\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;\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