const lang = Object.freeze(JSON.parse("{\"injectionSelector\":\"L:text.html -comment\",\"name\":\"angular-expression\",\"patterns\":[{\"include\":\"#ngExpression\"}],\"repository\":{\"arrayLiteral\":{\"begin\":\"\\\\[\",\"beginCaptures\":{\"0\":{\"name\":\"meta.brace.square.ts\"}},\"end\":\"\\\\]\",\"endCaptures\":{\"0\":{\"name\":\"meta.brace.square.ts\"}},\"name\":\"meta.array.literal.ts\",\"patterns\":[{\"include\":\"#ngExpression\"},{\"include\":\"#punctuationComma\"}]},\"booleanLiteral\":{\"patterns\":[{\"match\":\"(?>=|>>>=|\\\\|=\",\"name\":\"keyword.operator.assignment.compound.bitwise.ts\"},{\"match\":\"<<|>>>|>>\",\"name\":\"keyword.operator.bitwise.shift.ts\"},{\"match\":\"===|!==|==|!=\",\"name\":\"keyword.operator.comparison.ts\"},{\"match\":\"<=|>=|<>|<|>\",\"name\":\"keyword.operator.relational.ts\"},{\"match\":\"!|&&|\\\\?\\\\?|\\\\|\\\\|\",\"name\":\"keyword.operator.logical.ts\"},{\"match\":\"\\\\&|~|\\\\^|\\\\|\",\"name\":\"keyword.operator.bitwise.ts\"},{\"match\":\"=\",\"name\":\"keyword.operator.assignment.ts\"},{\"match\":\"--\",\"name\":\"keyword.operator.decrement.ts\"},{\"match\":\"\\\\+\\\\+\",\"name\":\"keyword.operator.increment.ts\"},{\"match\":\"\\\\%|\\\\*|\\\\/|-|\\\\+\",\"name\":\"keyword.operator.arithmetic.ts\"},{\"captures\":{\"1\":{\"name\":\"keyword.operator.arithmetic.ts\"}},\"match\":\"(?<=[_$0-9A-Za-z])\\\\s*(\\\\/)(?![\\\\/*])\"},{\"include\":\"#typeofOperator\"}]},\"functionCall\":{\"begin\":\"(?=(\\\\??\\\\.\\\\s*)?([_$A-Za-z][_$0-9A-Za-z]*)\\\\s*(<([^<>]|<[^<>]+>)+>\\\\s*)?\\\\()\",\"end\":\"(?<=\\\\))(?!(\\\\??\\\\.\\\\s*)?([_$A-Za-z][_$0-9A-Za-z]*)\\\\s*(<([^<>]|<[^<>]+>)+>\\\\s*)?\\\\()\",\"patterns\":[{\"match\":\"\\\\?\",\"name\":\"punctuation.accessor.ts\"},{\"match\":\"\\\\.\",\"name\":\"punctuation.accessor.ts\"},{\"match\":\"([_$A-Za-z][_$0-9A-Za-z]*)\",\"name\":\"entity.name.function.ts\"},{\"begin\":\"<\",\"beginCaptures\":{\"0\":{\"name\":\"punctuation.definition.typeparameters.begin.ts\"}},\"end\":\">\",\"endCaptures\":{\"0\":{\"name\":\"punctuation.definition.typeparameters.end.ts\"}},\"name\":\"meta.type.parameters.ts\",\"patterns\":[{\"include\":\"#type\"},{\"include\":\"#punctuationComma\"}]},{\"include\":\"#parenExpression\"}]},\"functionParameters\":{\"begin\":\"\\\\(\",\"beginCaptures\":{\"0\":{\"name\":\"punctuation.definition.parameters.begin.ts\"}},\"end\":\"\\\\)\",\"endCaptures\":{\"0\":{\"name\":\"punctuation.definition.parameters.end.ts\"}},\"name\":\"meta.parameters.ts\",\"patterns\":[{\"include\":\"#decorator\"},{\"include\":\"#parameterName\"},{\"include\":\"#variableInitializer\"},{\"match\":\",\",\"name\":\"punctuation.separator.parameter.ts\"}]},\"identifiers\":{\"patterns\":[{\"match\":\"([_$A-Za-z][_$0-9A-Za-z]*)(?=\\\\s*\\\\.\\\\s*prototype\\\\b(?!\\\\$))\",\"name\":\"support.class.ts\"},{\"captures\":{\"1\":{\"name\":\"punctuation.accessor.ts\"},\"2\":{\"name\":\"constant.other.object.property.ts\"},\"3\":{\"name\":\"variable.other.object.property.ts\"}},\"match\":\"([?!]?\\\\.)\\\\s*(?:([A-Z][_$\\\\dA-Z]*)|([_$A-Za-z][_$0-9A-Za-z]*))(?=\\\\s*\\\\.\\\\s*[_$A-Za-z][_$0-9A-Za-z]*)\"},{\"captures\":{\"1\":{\"name\":\"punctuation.accessor.ts\"},\"2\":{\"name\":\"entity.name.function.ts\"}},\"match\":\"(?:([?!]?\\\\.)\\\\s*)?([_$A-Za-z][_$0-9A-Za-z]*)(?=\\\\s*=\\\\s*((async\\\\s+)|(function\\\\s*[(<])|(function\\\\s+)|([_$A-Za-z][_$0-9A-Za-z]*\\\\s*=>)|((<([^<>]|<[^<>]+>)+>\\\\s*)?\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)(\\\\s*:\\\\s*(.)*)?\\\\s*=>)))\"},{\"captures\":{\"1\":{\"name\":\"punctuation.accessor.ts\"},\"2\":{\"name\":\"constant.other.property.ts\"}},\"match\":\"([?!]?\\\\.)\\\\s*([A-Z][_$\\\\dA-Z]*)(?![_$0-9A-Za-z])\"},{\"captures\":{\"1\":{\"name\":\"punctuation.accessor.ts\"},\"2\":{\"name\":\"variable.other.property.ts\"}},\"match\":\"([?!]?\\\\.)\\\\s*([_$A-Za-z][_$0-9A-Za-z]*)\"},{\"captures\":{\"1\":{\"name\":\"constant.other.object.ts\"},\"2\":{\"name\":\"variable.other.object.ts\"}},\"match\":\"(?:([A-Z][_$\\\\dA-Z]*)|([_$A-Za-z][_$0-9A-Za-z]*))(?=\\\\s*\\\\.\\\\s*[_$A-Za-z][_$0-9A-Za-z]*)\"},{\"match\":\"([A-Z][_$\\\\dA-Z]*)(?![_$0-9A-Za-z])\",\"name\":\"constant.character.other\"},{\"match\":\"[_$A-Za-z][_$0-9A-Za-z]*\",\"name\":\"variable.other.readwrite.ts\"}]},\"literal\":{\"name\":\"literal.ts\",\"patterns\":[{\"include\":\"#numericLiteral\"},{\"include\":\"#booleanLiteral\"},{\"include\":\"#nullLiteral\"},{\"include\":\"#undefinedLiteral\"},{\"include\":\"#numericConstantLiteral\"},{\"include\":\"#arrayLiteral\"},{\"include\":\"#thisLiteral\"}]},\"ngExpression\":{\"name\":\"meta.expression.ng\",\"patterns\":[{\"include\":\"#string\"},{\"include\":\"#literal\"},{\"include\":\"#ternaryExpression\"},{\"include\":\"#expressionOperator\"},{\"include\":\"#functionCall\"},{\"include\":\"#identifiers\"},{\"include\":\"#parenExpression\"},{\"include\":\"#punctuationComma\"},{\"include\":\"#punctuationAccessor\"}]},\"nullLiteral\":{\"match\":\"(?)|((<([^<>]|<[^<>]+>)+>\\\\s*)?\\\\(([^()]|\\\\([^()]*\\\\))*\\\\)(\\\\s*:\\\\s*(.)*)?\\\\s*=>)))|(:\\\\s*((<)|([(]\\\\s*(([)])|(\\\\.\\\\.\\\\.)|([_$0-9A-Za-z]+\\\\s*(([:,?=])|([)]\\\\s*=>))))))))\"},{\"captures\":{\"1\":{\"name\":\"storage.modifier.ts\"},\"2\":{\"name\":\"storage.modifier.ts\"},\"3\":{\"name\":\"keyword.operator.rest.ts\"},\"4\":{\"name\":\"variable.parameter.ts\"},\"5\":{\"name\":\"keyword.operator.optional.ts\"}},\"match\":\"(?:\\\\s*\\\\b(readonly)\\\\s+)?(?:\\\\s*\\\\b(public|private|protected)\\\\s+)?(\\\\.\\\\.\\\\.)?\\\\s*(?])|(?<=[}>\\\\])]|[_$A-Za-z])\\\\s*(?=\\\\{)\",\"name\":\"meta.type.annotation.ts\",\"patterns\":[{\"include\":\"#type\"}]},\"typeBuiltinLiterals\":{\"match\":\"(?)\\\\s*(?=\\\\()\",\"end\":\"(?<=\\\\))\",\"include\":\"#typeofOperator\",\"name\":\"meta.type.function.ts\",\"patterns\":[{\"include\":\"#functionParameters\"}]},{\"begin\":\"((?=[(]\\\\s*(([)])|(\\\\.\\\\.\\\\.)|([_$0-9A-Za-z]+\\\\s*(([:,?=])|([)]\\\\s*=>))))))\",\"end\":\"(?<=\\\\))\",\"name\":\"meta.type.function.ts\",\"patterns\":[{\"include\":\"#functionParameters\"}]}]},\"typeName\":{\"patterns\":[{\"captures\":{\"1\":{\"name\":\"entity.name.type.module.ts\"},\"2\":{\"name\":\"punctuation.accessor.ts\"}},\"match\":\"([_$A-Za-z][_$0-9A-Za-z]*)\\\\s*([?!]?\\\\.)\"},{\"match\":\"[_$A-Za-z][_$0-9A-Za-z]*\",\"name\":\"entity.name.type.ts\"}]},\"typeObject\":{\"begin\":\"\\\\{\",\"beginCaptures\":{\"0\":{\"name\":\"punctuation.definition.block.ts\"}},\"end\":\"\\\\}\",\"endCaptures\":{\"0\":{\"name\":\"punctuation.definition.block.ts\"}},\"name\":\"meta.object.type.ts\",\"patterns\":[{\"include\":\"#typeObjectMembers\"}]},\"typeObjectMembers\":{\"patterns\":[{\"include\":\"#typeAnnotation\"},{\"include\":\"#punctuationComma\"},{\"include\":\"#punctuationSemicolon\"}]},\"typeOperators\":{\"patterns\":[{\"include\":\"#typeofOperator\"},{\"match\":\"[&|]\",\"name\":\"keyword.operator.type.ts\"},{\"match\":\"(?