HEX
Server: nginx/1.28.3
System: Linux lightweb-s1 5.15.0-173-generic #183-Ubuntu SMP Fri Mar 6 13:29:34 UTC 2026 x86_64
User: dawonefr-98 (1071)
PHP: 8.3.30
Disabled: NONE
Upload Files
File: /home/dnlightw-124/dn.lightweb.kr/node_modules/vue-eslint-parser/index.js.map
{"version":3,"file":"index.js.map","sources":[".temp/ast/src/ast/errors.ts",".temp/ast/src/ast/nodes.ts",".temp/ast/src/ast/traverse.ts",".temp/common/src/common/lines-and-columns.ts",".temp/common/src/common/location-calculator.ts",".temp/common/src/common/debug.ts",".temp/common/src/common/ast-utils.ts",".temp/common/src/common/parser-object.ts",".temp/common/src/common/parser-options.ts",".temp/common/src/common/create-require.ts",".temp/common/src/common/linter-require.ts",".temp/common/src/common/eslint-scope.ts",".temp/common/src/common/espree.ts",".temp/script/src/script/scope-analyzer.ts",".temp/common/src/common/fix-locations.ts",".temp/script-setup/src/script-setup/parser-options.ts",".temp/script/src/script/generic.ts",".temp/script/src/script/index.ts",".temp/common/src/common/token-utils.ts",".temp/common/src/common/error-utils.ts",".temp/utils/src/utils/utils.ts",".temp/template/src/template/index.ts",".temp/html/util/src/html/util/attribute-names.ts",".temp/html/util/src/html/util/tag-names.ts",".temp/html/src/html/intermediate-tokenizer.ts",".temp/html/src/html/parser.ts",".temp/html/util/src/html/util/alternative-cr.ts",".temp/html/util/src/html/util/entities.ts",".temp/html/util/src/html/util/unicode.ts",".temp/html/src/html/tokenizer.ts",".temp/external/src/external/node-event-generator.ts",".temp/external/token-store/src/external/token-store/utils.ts",".temp/external/token-store/cursors/src/external/token-store/cursors/cursor.ts",".temp/external/token-store/cursors/src/external/token-store/cursors/backward-token-comment-cursor.ts",".temp/external/token-store/cursors/src/external/token-store/cursors/backward-token-cursor.ts",".temp/external/token-store/cursors/src/external/token-store/cursors/decorative-cursor.ts",".temp/external/token-store/cursors/src/external/token-store/cursors/filter-cursor.ts",".temp/external/token-store/cursors/src/external/token-store/cursors/forward-token-comment-cursor.ts",".temp/external/token-store/cursors/src/external/token-store/cursors/forward-token-cursor.ts",".temp/external/token-store/cursors/src/external/token-store/cursors/limit-cursor.ts",".temp/external/token-store/cursors/src/external/token-store/cursors/skip-cursor.ts",".temp/external/token-store/cursors/src/external/token-store/cursors/index.ts",".temp/external/token-store/cursors/src/external/token-store/cursors/padded-token-cursor.ts",".temp/external/token-store/src/external/token-store/index.ts",".temp/sfc/custom-block/src/sfc/custom-block/index.ts",".temp/src/parser-services.ts",".temp/script-setup/src/script-setup/index.ts",".temp/style/src/style/tokenizer.ts",".temp/style/src/style/index.ts",".temp/script-setup/src/script-setup/scope-analyzer.ts",".temp/src/index.ts"],"sourcesContent":["/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * @copyright 2017 Toru Nagashima. All rights reserved.\n * See LICENSE file in root directory for full license.\n */\nimport type { Location } from \"./locations\"\n\n/**\n * Check whether the given value has acorn style location information.\n * @param x The value to check.\n * @returns `true` if the value has acorn style location information.\n */\nfunction isAcornStyleParseError(\n    x: any,\n): x is { message: string; pos: number; loc: Location } {\n    return (\n        typeof x.message === \"string\" &&\n        typeof x.pos === \"number\" &&\n        typeof x.loc === \"object\" &&\n        x.loc !== null &&\n        typeof x.loc.line === \"number\" &&\n        typeof x.loc.column === \"number\"\n    )\n}\n\n/**\n * Check whether the given value is probably a TSError.\n * @param x The value to check.\n * @returns `true` if the given value is probably a TSError.\n */\nfunction isTSError(\n    x: any,\n): x is { message: string; index: number; lineNumber: number; column: number } {\n    return (\n        !(x instanceof ParseError) &&\n        typeof x.message === \"string\" &&\n        typeof x.index === \"number\" &&\n        typeof x.lineNumber === \"number\" &&\n        typeof x.column === \"number\" &&\n        x.name === \"TSError\"\n    )\n}\n\n/**\n * HTML parse errors.\n */\nexport class ParseError extends SyntaxError {\n    public code?: ErrorCode\n    public index: number\n    public lineNumber: number\n    public column: number\n\n    /**\n     * Create new parser error object.\n     * @param code The error code. See also: https://html.spec.whatwg.org/multipage/parsing.html#parse-errors\n     * @param offset The offset number of this error.\n     * @param line The line number of this error.\n     * @param column The column number of this error.\n     */\n    public static fromCode(\n        code: ErrorCode,\n        offset: number,\n        line: number,\n        column: number,\n    ): ParseError {\n        return new ParseError(code, code, offset, line, column)\n    }\n\n    /**\n     * Normalize the error object.\n     * @param x The error object to normalize.\n     */\n    public static normalize(x: any): ParseError | null {\n        if (isTSError(x)) {\n            return new ParseError(\n                x.message,\n                undefined,\n                x.index,\n                x.lineNumber,\n                x.column,\n            )\n        }\n        if (ParseError.isParseError(x)) {\n            return x\n        }\n        if (isAcornStyleParseError(x)) {\n            return new ParseError(\n                x.message,\n                undefined,\n                x.pos,\n                x.loc.line,\n                x.loc.column,\n            )\n        }\n        return null\n    }\n\n    /**\n     * Initialize this ParseError instance.\n     * @param message The error message.\n     * @param code The error code. See also: https://html.spec.whatwg.org/multipage/parsing.html#parse-errors\n     * @param offset The offset number of this error.\n     * @param line The line number of this error.\n     * @param column The column number of this error.\n     */\n    public constructor(\n        message: string,\n        code: ErrorCode | undefined,\n        offset: number,\n        line: number,\n        column: number,\n    ) {\n        super(message)\n        this.code = code\n        this.index = offset\n        this.lineNumber = line\n        this.column = column\n    }\n\n    /**\n     * Type guard for ParseError.\n     * @param x The value to check.\n     * @returns `true` if the value has `message`, `pos`, `loc` properties.\n     */\n    public static isParseError(x: any): x is ParseError {\n        return (\n            x instanceof ParseError ||\n            (typeof x.message === \"string\" &&\n                typeof x.index === \"number\" &&\n                typeof x.lineNumber === \"number\" &&\n                typeof x.column === \"number\")\n        )\n    }\n}\n\n/**\n * The error codes of HTML syntax errors.\n * https://html.spec.whatwg.org/multipage/parsing.html#parse-errors\n */\nexport type ErrorCode =\n    | \"abrupt-closing-of-empty-comment\"\n    | \"absence-of-digits-in-numeric-character-reference\"\n    | \"cdata-in-html-content\"\n    | \"character-reference-outside-unicode-range\"\n    | \"control-character-in-input-stream\"\n    | \"control-character-reference\"\n    | \"eof-before-tag-name\"\n    | \"eof-in-cdata\"\n    | \"eof-in-comment\"\n    | \"eof-in-tag\"\n    | \"incorrectly-closed-comment\"\n    | \"incorrectly-opened-comment\"\n    | \"invalid-first-character-of-tag-name\"\n    | \"missing-attribute-value\"\n    | \"missing-end-tag-name\"\n    | \"missing-semicolon-after-character-reference\"\n    | \"missing-whitespace-between-attributes\"\n    | \"nested-comment\"\n    | \"noncharacter-character-reference\"\n    | \"noncharacter-in-input-stream\"\n    | \"null-character-reference\"\n    | \"surrogate-character-reference\"\n    | \"surrogate-in-input-stream\"\n    | \"unexpected-character-in-attribute-name\"\n    | \"unexpected-character-in-unquoted-attribute-value\"\n    | \"unexpected-equals-sign-before-attribute-name\"\n    | \"unexpected-null-character\"\n    | \"unexpected-question-mark-instead-of-tag-name\"\n    | \"unexpected-solidus-in-tag\"\n    | \"unknown-named-character-reference\"\n    | \"end-tag-with-attributes\"\n    | \"duplicate-attribute\"\n    | \"end-tag-with-trailing-solidus\"\n    | \"non-void-html-element-start-tag-with-trailing-solidus\"\n    | \"x-invalid-end-tag\"\n    | \"x-invalid-namespace\"\n    | \"x-missing-interpolation-end\"\n// ---- Use RAWTEXT state for <script> elements instead ----\n// \"eof-in-script-html-comment-like-text\" |\n// ---- Use BOGUS_COMMENT state for DOCTYPEs instead ----\n// \"abrupt-doctype-public-identifier\" |\n// \"abrupt-doctype-system-identifier\" |\n// \"eof-in-doctype\" |\n// \"invalid-character-sequence-after-doctype-name\" |\n// \"missing-doctype-name\" |\n// \"missing-doctype-public-identifier\" |\n// \"missing-doctype-system-identifier\" |\n// \"missing-quote-before-doctype-public-identifier\" |\n// \"missing-quote-before-doctype-system-identifier\" |\n// \"missing-whitespace-after-doctype-public-keyword\" |\n// \"missing-whitespace-after-doctype-system-keyword\" |\n// \"missing-whitespace-before-doctype-name\" |\n// \"missing-whitespace-between-doctype-public-and-system-identifiers\" |\n// \"unexpected-character-after-doctype-system-identifier\" |\n","/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * @copyright 2017 Toru Nagashima. All rights reserved.\n * See LICENSE file in root directory for full license.\n */\nimport type { ScopeManager } from \"eslint-scope\"\nimport type { ParseError } from \"./errors\"\nimport type { HasLocation } from \"./locations\"\nimport type { Token } from \"./tokens\"\n// eslint-disable-next-line node/no-extraneous-import -- ignore\nimport type { TSESTree } from \"@typescript-eslint/utils\"\n\n//------------------------------------------------------------------------------\n// Common\n//------------------------------------------------------------------------------\n\n/**\n * Objects which have their parent.\n */\nexport interface HasParent {\n    parent?: Node | null\n}\n\n/**\n * The union type for all nodes.\n */\nexport type Node =\n    | ESLintNode\n    | VNode\n    | VForExpression\n    | VOnExpression\n    | VSlotScopeExpression\n    | VGenericExpression\n    | VFilterSequenceExpression\n    | VFilter\n\n//------------------------------------------------------------------------------\n// Script\n//------------------------------------------------------------------------------\n\n/**\n * The union type for ESLint nodes.\n */\nexport type ESLintNode =\n    | ESLintIdentifier\n    | ESLintLiteral\n    | ESLintProgram\n    | ESLintSwitchCase\n    | ESLintCatchClause\n    | ESLintVariableDeclarator\n    | ESLintStatement\n    | ESLintExpression\n    | ESLintProperty\n    | ESLintAssignmentProperty\n    | ESLintSuper\n    | ESLintTemplateElement\n    | ESLintSpreadElement\n    | ESLintPattern\n    | ESLintClassBody\n    | ESLintMethodDefinition\n    | ESLintPropertyDefinition\n    | ESLintStaticBlock\n    | ESLintPrivateIdentifier\n    | ESLintModuleDeclaration\n    | ESLintModuleSpecifier\n    | ESLintImportExpression\n    | ESLintLegacyRestProperty\n\n/**\n * The parsing result of ESLint custom parsers.\n */\nexport interface ESLintExtendedProgram {\n    ast: ESLintProgram\n    services?: {}\n    visitorKeys?: { [type: string]: string[] }\n    scopeManager?: ScopeManager\n}\n\nexport interface ESLintProgram extends HasLocation, HasParent {\n    type: \"Program\"\n    sourceType: \"script\" | \"module\"\n    body: (ESLintStatement | ESLintModuleDeclaration)[]\n    templateBody?: VElement & HasConcreteInfo\n    tokens?: Token[]\n    comments?: Token[]\n    errors?: ParseError[]\n}\n\nexport type ESLintStatement =\n    | ESLintExpressionStatement\n    | ESLintBlockStatement\n    | ESLintEmptyStatement\n    | ESLintDebuggerStatement\n    | ESLintWithStatement\n    | ESLintReturnStatement\n    | ESLintLabeledStatement\n    | ESLintBreakStatement\n    | ESLintContinueStatement\n    | ESLintIfStatement\n    | ESLintSwitchStatement\n    | ESLintThrowStatement\n    | ESLintTryStatement\n    | ESLintWhileStatement\n    | ESLintDoWhileStatement\n    | ESLintForStatement\n    | ESLintForInStatement\n    | ESLintForOfStatement\n    | ESLintDeclaration\n\nexport interface ESLintEmptyStatement extends HasLocation, HasParent {\n    type: \"EmptyStatement\"\n}\n\nexport interface ESLintBlockStatement extends HasLocation, HasParent {\n    type: \"BlockStatement\"\n    body: ESLintStatement[]\n}\n\nexport interface ESLintExpressionStatement extends HasLocation, HasParent {\n    type: \"ExpressionStatement\"\n    expression: ESLintExpression\n}\n\nexport interface ESLintIfStatement extends HasLocation, HasParent {\n    type: \"IfStatement\"\n    test: ESLintExpression\n    consequent: ESLintStatement\n    alternate: ESLintStatement | null\n}\n\nexport interface ESLintSwitchStatement extends HasLocation, HasParent {\n    type: \"SwitchStatement\"\n    discriminant: ESLintExpression\n    cases: ESLintSwitchCase[]\n}\n\nexport interface ESLintSwitchCase extends HasLocation, HasParent {\n    type: \"SwitchCase\"\n    test: ESLintExpression | null\n    consequent: ESLintStatement[]\n}\n\nexport interface ESLintWhileStatement extends HasLocation, HasParent {\n    type: \"WhileStatement\"\n    test: ESLintExpression\n    body: ESLintStatement\n}\n\nexport interface ESLintDoWhileStatement extends HasLocation, HasParent {\n    type: \"DoWhileStatement\"\n    body: ESLintStatement\n    test: ESLintExpression\n}\n\nexport interface ESLintForStatement extends HasLocation, HasParent {\n    type: \"ForStatement\"\n    init: ESLintVariableDeclaration | ESLintExpression | null\n    test: ESLintExpression | null\n    update: ESLintExpression | null\n    body: ESLintStatement\n}\n\nexport interface ESLintForInStatement extends HasLocation, HasParent {\n    type: \"ForInStatement\"\n    left: ESLintVariableDeclaration | ESLintPattern\n    right: ESLintExpression\n    body: ESLintStatement\n}\n\nexport interface ESLintForOfStatement extends HasLocation, HasParent {\n    type: \"ForOfStatement\"\n    left: ESLintVariableDeclaration | ESLintPattern\n    right: ESLintExpression\n    body: ESLintStatement\n    await: boolean\n}\n\nexport interface ESLintLabeledStatement extends HasLocation, HasParent {\n    type: \"LabeledStatement\"\n    label: ESLintIdentifier\n    body: ESLintStatement\n}\n\nexport interface ESLintBreakStatement extends HasLocation, HasParent {\n    type: \"BreakStatement\"\n    label: ESLintIdentifier | null\n}\n\nexport interface ESLintContinueStatement extends HasLocation, HasParent {\n    type: \"ContinueStatement\"\n    label: ESLintIdentifier | null\n}\n\nexport interface ESLintReturnStatement extends HasLocation, HasParent {\n    type: \"ReturnStatement\"\n    argument: ESLintExpression | null\n}\n\nexport interface ESLintThrowStatement extends HasLocation, HasParent {\n    type: \"ThrowStatement\"\n    argument: ESLintExpression\n}\n\nexport interface ESLintTryStatement extends HasLocation, HasParent {\n    type: \"TryStatement\"\n    block: ESLintBlockStatement\n    handler: ESLintCatchClause | null\n    finalizer: ESLintBlockStatement | null\n}\n\nexport interface ESLintCatchClause extends HasLocation, HasParent {\n    type: \"CatchClause\"\n    param: ESLintPattern | null\n    body: ESLintBlockStatement\n}\n\nexport interface ESLintWithStatement extends HasLocation, HasParent {\n    type: \"WithStatement\"\n    object: ESLintExpression\n    body: ESLintStatement\n}\n\nexport interface ESLintDebuggerStatement extends HasLocation, HasParent {\n    type: \"DebuggerStatement\"\n}\n\nexport type ESLintDeclaration =\n    | ESLintFunctionDeclaration\n    | ESLintVariableDeclaration\n    | ESLintClassDeclaration\n\nexport interface ESLintFunctionDeclaration extends HasLocation, HasParent {\n    type: \"FunctionDeclaration\"\n    async: boolean\n    generator: boolean\n    id: ESLintIdentifier | null\n    params: ESLintPattern[]\n    body: ESLintBlockStatement\n}\n\nexport interface ESLintVariableDeclaration extends HasLocation, HasParent {\n    type: \"VariableDeclaration\"\n    kind: \"var\" | \"let\" | \"const\"\n    declarations: ESLintVariableDeclarator[]\n}\n\nexport interface ESLintVariableDeclarator extends HasLocation, HasParent {\n    type: \"VariableDeclarator\"\n    id: ESLintPattern\n    init: ESLintExpression | null\n}\n\nexport interface ESLintClassDeclaration extends HasLocation, HasParent {\n    type: \"ClassDeclaration\"\n    id: ESLintIdentifier | null\n    superClass: ESLintExpression | null\n    body: ESLintClassBody\n}\n\nexport interface ESLintClassBody extends HasLocation, HasParent {\n    type: \"ClassBody\"\n    body: (\n        | ESLintMethodDefinition\n        | ESLintPropertyDefinition\n        | ESLintStaticBlock\n    )[]\n}\n\nexport interface ESLintMethodDefinition extends HasLocation, HasParent {\n    type: \"MethodDefinition\"\n    kind: \"constructor\" | \"method\" | \"get\" | \"set\"\n    computed: boolean\n    static: boolean\n    key: ESLintExpression | ESLintPrivateIdentifier\n    value: ESLintFunctionExpression\n}\nexport interface ESLintPropertyDefinition extends HasLocation, HasParent {\n    type: \"PropertyDefinition\"\n    computed: boolean\n    static: boolean\n    key: ESLintExpression | ESLintPrivateIdentifier\n    value: ESLintExpression | null\n}\n\nexport interface ESLintStaticBlock\n    extends HasLocation,\n        HasParent,\n        Omit<ESLintBlockStatement, \"type\"> {\n    type: \"StaticBlock\"\n    body: ESLintStatement[]\n}\n\nexport interface ESLintPrivateIdentifier extends HasLocation, HasParent {\n    type: \"PrivateIdentifier\"\n    name: string\n}\n\nexport type ESLintModuleDeclaration =\n    | ESLintImportDeclaration\n    | ESLintExportNamedDeclaration\n    | ESLintExportDefaultDeclaration\n    | ESLintExportAllDeclaration\n\nexport type ESLintModuleSpecifier =\n    | ESLintImportSpecifier\n    | ESLintImportDefaultSpecifier\n    | ESLintImportNamespaceSpecifier\n    | ESLintExportSpecifier\n\nexport interface ESLintImportDeclaration extends HasLocation, HasParent {\n    type: \"ImportDeclaration\"\n    specifiers: (\n        | ESLintImportSpecifier\n        | ESLintImportDefaultSpecifier\n        | ESLintImportNamespaceSpecifier\n    )[]\n    source: ESLintLiteral\n}\n\nexport interface ESLintImportSpecifier extends HasLocation, HasParent {\n    type: \"ImportSpecifier\"\n    imported: ESLintIdentifier | ESLintStringLiteral\n    local: ESLintIdentifier\n}\n\nexport interface ESLintImportDefaultSpecifier extends HasLocation, HasParent {\n    type: \"ImportDefaultSpecifier\"\n    local: ESLintIdentifier\n}\n\nexport interface ESLintImportNamespaceSpecifier extends HasLocation, HasParent {\n    type: \"ImportNamespaceSpecifier\"\n    local: ESLintIdentifier\n}\n\nexport interface ESLintImportExpression extends HasLocation, HasParent {\n    type: \"ImportExpression\"\n    source: ESLintExpression\n}\n\nexport interface ESLintExportNamedDeclaration extends HasLocation, HasParent {\n    type: \"ExportNamedDeclaration\"\n    declaration?: ESLintDeclaration | null\n    specifiers: ESLintExportSpecifier[]\n    source?: ESLintLiteral | null\n}\n\nexport interface ESLintExportSpecifier extends HasLocation, HasParent {\n    type: \"ExportSpecifier\"\n    local: ESLintIdentifier | ESLintStringLiteral\n    exported: ESLintIdentifier | ESLintStringLiteral\n}\n\nexport interface ESLintExportDefaultDeclaration extends HasLocation, HasParent {\n    type: \"ExportDefaultDeclaration\"\n    declaration: ESLintDeclaration | ESLintExpression\n}\n\nexport interface ESLintExportAllDeclaration extends HasLocation, HasParent {\n    type: \"ExportAllDeclaration\"\n    exported: ESLintIdentifier | ESLintStringLiteral | null\n    source: ESLintLiteral\n}\n\nexport type ESLintExpression =\n    | ESLintThisExpression\n    | ESLintArrayExpression\n    | ESLintObjectExpression\n    | ESLintFunctionExpression\n    | ESLintArrowFunctionExpression\n    | ESLintYieldExpression\n    | ESLintLiteral\n    | ESLintUnaryExpression\n    | ESLintUpdateExpression\n    | ESLintBinaryExpression\n    | ESLintAssignmentExpression\n    | ESLintLogicalExpression\n    | ESLintMemberExpression\n    | ESLintConditionalExpression\n    | ESLintCallExpression\n    | ESLintNewExpression\n    | ESLintSequenceExpression\n    | ESLintTemplateLiteral\n    | ESLintTaggedTemplateExpression\n    | ESLintClassExpression\n    | ESLintMetaProperty\n    | ESLintIdentifier\n    | ESLintAwaitExpression\n    | ESLintChainExpression\n\nexport interface ESLintIdentifier extends HasLocation, HasParent {\n    type: \"Identifier\"\n    name: string\n}\ninterface ESLintLiteralBase extends HasLocation, HasParent {\n    type: \"Literal\"\n    value: string | boolean | null | number | RegExp | bigint\n    raw: string\n    regex?: {\n        pattern: string\n        flags: string\n    }\n    bigint?: string\n}\nexport interface ESLintStringLiteral extends ESLintLiteralBase {\n    value: string\n    regex?: undefined\n    bigint?: undefined\n}\nexport interface ESLintBooleanLiteral extends ESLintLiteralBase {\n    value: boolean\n    regex?: undefined\n    bigint?: undefined\n}\nexport interface ESLintNullLiteral extends ESLintLiteralBase {\n    value: null\n    regex?: undefined\n    bigint?: undefined\n}\nexport interface ESLintNumberLiteral extends ESLintLiteralBase {\n    value: number\n    regex?: undefined\n    bigint?: undefined\n}\nexport interface ESLintRegExpLiteral extends ESLintLiteralBase {\n    value: null | RegExp\n    regex: {\n        pattern: string\n        flags: string\n    }\n    bigint?: undefined\n}\nexport interface ESLintBigIntLiteral extends ESLintLiteralBase {\n    value: null | bigint\n    regex?: undefined\n    bigint: string\n}\nexport type ESLintLiteral =\n    | ESLintStringLiteral\n    | ESLintBooleanLiteral\n    | ESLintNullLiteral\n    | ESLintNumberLiteral\n    | ESLintRegExpLiteral\n    | ESLintBigIntLiteral\n\nexport interface ESLintThisExpression extends HasLocation, HasParent {\n    type: \"ThisExpression\"\n}\n\nexport interface ESLintArrayExpression extends HasLocation, HasParent {\n    type: \"ArrayExpression\"\n    elements: (ESLintExpression | ESLintSpreadElement)[]\n}\n\nexport interface ESLintObjectExpression extends HasLocation, HasParent {\n    type: \"ObjectExpression\"\n    properties: (\n        | ESLintProperty\n        | ESLintSpreadElement\n        | ESLintLegacySpreadProperty\n    )[]\n}\n\nexport interface ESLintProperty extends HasLocation, HasParent {\n    type: \"Property\"\n    kind: \"init\" | \"get\" | \"set\"\n    method: boolean\n    shorthand: boolean\n    computed: boolean\n    key: ESLintExpression\n    value: ESLintExpression | ESLintPattern\n}\n\nexport interface ESLintFunctionExpression extends HasLocation, HasParent {\n    type: \"FunctionExpression\"\n    async: boolean\n    generator: boolean\n    id: ESLintIdentifier | null\n    params: ESLintPattern[]\n    body: ESLintBlockStatement\n}\n\nexport interface ESLintArrowFunctionExpression extends HasLocation, HasParent {\n    type: \"ArrowFunctionExpression\"\n    async: boolean\n    generator: boolean\n    id: ESLintIdentifier | null\n    params: ESLintPattern[]\n    body: ESLintBlockStatement | ESLintExpression\n}\n\nexport interface ESLintSequenceExpression extends HasLocation, HasParent {\n    type: \"SequenceExpression\"\n    expressions: ESLintExpression[]\n}\n\nexport interface ESLintUnaryExpression extends HasLocation, HasParent {\n    type: \"UnaryExpression\"\n    operator: \"-\" | \"+\" | \"!\" | \"~\" | \"typeof\" | \"void\" | \"delete\"\n    prefix: boolean\n    argument: ESLintExpression\n}\n\nexport interface ESLintBinaryExpression extends HasLocation, HasParent {\n    type: \"BinaryExpression\"\n    operator:\n        | \"==\"\n        | \"!=\"\n        | \"===\"\n        | \"!==\"\n        | \"<\"\n        | \"<=\"\n        | \">\"\n        | \">=\"\n        | \"<<\"\n        | \">>\"\n        | \">>>\"\n        | \"+\"\n        | \"-\"\n        | \"*\"\n        | \"/\"\n        | \"%\"\n        | \"**\"\n        | \"|\"\n        | \"^\"\n        | \"&\"\n        | \"in\"\n        | \"instanceof\"\n    left: ESLintExpression | ESLintPrivateIdentifier\n    right: ESLintExpression\n}\n\nexport interface ESLintAssignmentExpression extends HasLocation, HasParent {\n    type: \"AssignmentExpression\"\n    operator:\n        | \"=\"\n        | \"+=\"\n        | \"-=\"\n        | \"*=\"\n        | \"/=\"\n        | \"%=\"\n        | \"**=\"\n        | \"<<=\"\n        | \">>=\"\n        | \">>>=\"\n        | \"|=\"\n        | \"^=\"\n        | \"&=\"\n        | \"||=\"\n        | \"&&=\"\n        | \"??=\"\n    left: ESLintPattern\n    right: ESLintExpression\n}\n\nexport interface ESLintUpdateExpression extends HasLocation, HasParent {\n    type: \"UpdateExpression\"\n    operator: \"++\" | \"--\"\n    argument: ESLintExpression\n    prefix: boolean\n}\n\nexport interface ESLintLogicalExpression extends HasLocation, HasParent {\n    type: \"LogicalExpression\"\n    operator: \"||\" | \"&&\" | \"??\"\n    left: ESLintExpression\n    right: ESLintExpression\n}\n\nexport interface ESLintConditionalExpression extends HasLocation, HasParent {\n    type: \"ConditionalExpression\"\n    test: ESLintExpression\n    alternate: ESLintExpression\n    consequent: ESLintExpression\n}\n\nexport interface ESLintCallExpression extends HasLocation, HasParent {\n    type: \"CallExpression\"\n    optional: boolean\n    callee: ESLintExpression | ESLintSuper\n    arguments: (ESLintExpression | ESLintSpreadElement)[]\n}\n\nexport interface ESLintSuper extends HasLocation, HasParent {\n    type: \"Super\"\n}\n\nexport interface ESLintNewExpression extends HasLocation, HasParent {\n    type: \"NewExpression\"\n    callee: ESLintExpression\n    arguments: (ESLintExpression | ESLintSpreadElement)[]\n}\n\nexport interface ESLintMemberExpression extends HasLocation, HasParent {\n    type: \"MemberExpression\"\n    optional: boolean\n    computed: boolean\n    object: ESLintExpression | ESLintSuper\n    property: ESLintExpression | ESLintPrivateIdentifier\n}\n\nexport interface ESLintYieldExpression extends HasLocation, HasParent {\n    type: \"YieldExpression\"\n    delegate: boolean\n    argument: ESLintExpression | null\n}\n\nexport interface ESLintAwaitExpression extends HasLocation, HasParent {\n    type: \"AwaitExpression\"\n    argument: ESLintExpression\n}\n\nexport interface ESLintTemplateLiteral extends HasLocation, HasParent {\n    type: \"TemplateLiteral\"\n    quasis: ESLintTemplateElement[]\n    expressions: ESLintExpression[]\n}\n\nexport interface ESLintTaggedTemplateExpression extends HasLocation, HasParent {\n    type: \"TaggedTemplateExpression\"\n    tag: ESLintExpression\n    quasi: ESLintTemplateLiteral\n}\n\nexport interface ESLintTemplateElement extends HasLocation, HasParent {\n    type: \"TemplateElement\"\n    tail: boolean\n    value: {\n        cooked: string | null\n        raw: string\n    }\n}\n\nexport interface ESLintClassExpression extends HasLocation, HasParent {\n    type: \"ClassExpression\"\n    id: ESLintIdentifier | null\n    superClass: ESLintExpression | null\n    body: ESLintClassBody\n}\n\nexport interface ESLintMetaProperty extends HasLocation, HasParent {\n    type: \"MetaProperty\"\n    meta: ESLintIdentifier\n    property: ESLintIdentifier\n}\n\nexport type ESLintPattern =\n    | ESLintIdentifier\n    | ESLintObjectPattern\n    | ESLintArrayPattern\n    | ESLintRestElement\n    | ESLintAssignmentPattern\n    | ESLintMemberExpression\n    | ESLintLegacyRestProperty\n\nexport interface ESLintObjectPattern extends HasLocation, HasParent {\n    type: \"ObjectPattern\"\n    properties: (\n        | ESLintAssignmentProperty\n        | ESLintRestElement\n        | ESLintLegacyRestProperty\n    )[]\n}\n\nexport interface ESLintAssignmentProperty extends ESLintProperty {\n    value: ESLintPattern\n    kind: \"init\"\n    method: false\n}\n\nexport interface ESLintArrayPattern extends HasLocation, HasParent {\n    type: \"ArrayPattern\"\n    elements: ESLintPattern[]\n}\n\nexport interface ESLintRestElement extends HasLocation, HasParent {\n    type: \"RestElement\"\n    argument: ESLintPattern\n}\n\nexport interface ESLintSpreadElement extends HasLocation, HasParent {\n    type: \"SpreadElement\"\n    argument: ESLintExpression\n}\n\nexport interface ESLintAssignmentPattern extends HasLocation, HasParent {\n    type: \"AssignmentPattern\"\n    left: ESLintPattern\n    right: ESLintExpression\n}\n\nexport type ESLintChainElement = ESLintCallExpression | ESLintMemberExpression\n\nexport interface ESLintChainExpression extends HasLocation, HasParent {\n    type: \"ChainExpression\"\n    expression: ESLintChainElement\n}\n\n/**\n * Legacy for babel-eslint and espree.\n */\nexport interface ESLintLegacyRestProperty extends HasLocation, HasParent {\n    type: \"RestProperty\" | \"ExperimentalRestProperty\"\n    argument: ESLintPattern\n}\n\n/**\n * Legacy for babel-eslint and espree.\n */\nexport interface ESLintLegacySpreadProperty extends HasLocation, HasParent {\n    type: \"SpreadProperty\" | \"ExperimentalSpreadProperty\"\n    argument: ESLintExpression\n}\n\n//------------------------------------------------------------------------------\n// Template\n//------------------------------------------------------------------------------\n\n/**\n * Constants of namespaces.\n * @see https://infra.spec.whatwg.org/#namespaces\n */\nexport const NS = Object.freeze({\n    HTML: \"http://www.w3.org/1999/xhtml\" as \"http://www.w3.org/1999/xhtml\",\n    MathML: \"http://www.w3.org/1998/Math/MathML\" as \"http://www.w3.org/1998/Math/MathML\",\n    SVG: \"http://www.w3.org/2000/svg\" as \"http://www.w3.org/2000/svg\",\n    XLink: \"http://www.w3.org/1999/xlink\" as \"http://www.w3.org/1999/xlink\",\n    XML: \"http://www.w3.org/XML/1998/namespace\" as \"http://www.w3.org/XML/1998/namespace\",\n    XMLNS: \"http://www.w3.org/2000/xmlns/\" as \"http://www.w3.org/2000/xmlns/\",\n})\n\n/**\n * Type of namespaces.\n */\nexport type Namespace =\n    | typeof NS.HTML\n    | typeof NS.MathML\n    | typeof NS.SVG\n    | typeof NS.XLink\n    | typeof NS.XML\n    | typeof NS.XMLNS\n\n/**\n * Type of variable definitions.\n */\nexport interface Variable {\n    id: ESLintIdentifier\n    kind: \"v-for\" | \"scope\" | \"generic\"\n    references: Reference[]\n}\n\n/**\n * Type of variable references.\n */\nexport interface Reference {\n    id: ESLintIdentifier\n    mode: \"rw\" | \"r\" | \"w\"\n    variable: Variable | null\n\n    // For typescript-eslint\n    isValueReference?: boolean\n    isTypeReference?: boolean\n}\n\n/**\n * The node of `v-for` directives.\n */\nexport interface VForExpression extends HasLocation, HasParent {\n    type: \"VForExpression\"\n    parent: VExpressionContainer\n    left: ESLintPattern[]\n    right: ESLintExpression\n}\n\n/**\n * The node of `v-on` directives.\n */\nexport interface VOnExpression extends HasLocation, HasParent {\n    type: \"VOnExpression\"\n    parent: VExpressionContainer\n    body: ESLintStatement[]\n}\n\n/**\n * The node of `slot-scope` directives.\n */\nexport interface VSlotScopeExpression extends HasLocation, HasParent {\n    type: \"VSlotScopeExpression\"\n    parent: VExpressionContainer\n    params: ESLintPattern[]\n}\n\n/**\n * The node of `generic` directives.\n */\nexport interface VGenericExpression extends HasLocation, HasParent {\n    type: \"VGenericExpression\"\n    parent: VExpressionContainer\n    params: TSESTree.TSTypeParameterDeclaration[\"params\"]\n    rawParams: string[]\n}\n\n/**\n * The node of a filter sequence which is separated by `|`.\n */\nexport interface VFilterSequenceExpression extends HasLocation, HasParent {\n    type: \"VFilterSequenceExpression\"\n    parent: VExpressionContainer\n    expression: ESLintExpression\n    filters: VFilter[]\n}\n\n/**\n * The node of a filter sequence which is separated by `|`.\n */\nexport interface VFilter extends HasLocation, HasParent {\n    type: \"VFilter\"\n    parent: VFilterSequenceExpression\n    callee: ESLintIdentifier\n    arguments: (ESLintExpression | ESLintSpreadElement)[]\n}\n\n/**\n * The union type of any nodes.\n */\nexport type VNode =\n    | VAttribute\n    | VDirective\n    | VDirectiveKey\n    | VDocumentFragment\n    | VElement\n    | VEndTag\n    | VExpressionContainer\n    | VIdentifier\n    | VLiteral\n    | VStartTag\n    | VText\n\n/**\n * Text nodes.\n */\nexport interface VText extends HasLocation, HasParent {\n    type: \"VText\"\n    parent: VDocumentFragment | VElement\n    value: string\n}\n\n/**\n * The node of JavaScript expression in text.\n * e.g. `{{ name }}`\n */\nexport interface VExpressionContainer extends HasLocation, HasParent {\n    type: \"VExpressionContainer\"\n    parent: VDocumentFragment | VElement | VDirective | VDirectiveKey\n    expression:\n        | ESLintExpression\n        | VFilterSequenceExpression\n        | VForExpression\n        | VOnExpression\n        | VSlotScopeExpression\n        | VGenericExpression\n        | null\n    references: Reference[]\n}\n\n/**\n * Attribute name nodes.\n */\nexport interface VIdentifier extends HasLocation, HasParent {\n    type: \"VIdentifier\"\n    parent: VAttribute | VDirectiveKey\n    name: string\n    rawName: string\n}\n\n/**\n * Attribute name nodes.\n */\nexport interface VDirectiveKey extends HasLocation, HasParent {\n    type: \"VDirectiveKey\"\n    parent: VDirective\n    name: VIdentifier\n    argument: VExpressionContainer | VIdentifier | null\n    modifiers: VIdentifier[]\n}\n\n/**\n * Attribute value nodes.\n */\nexport interface VLiteral extends HasLocation, HasParent {\n    type: \"VLiteral\"\n    parent: VAttribute\n    value: string\n}\n\n/**\n * Static attribute nodes.\n */\nexport interface VAttribute extends HasLocation, HasParent {\n    type: \"VAttribute\"\n    parent: VStartTag\n    directive: false\n    key: VIdentifier\n    value: VLiteral | null\n}\n\n/**\n * Directive nodes.\n */\nexport interface VDirective extends HasLocation, HasParent {\n    type: \"VAttribute\"\n    parent: VStartTag\n    directive: true\n    key: VDirectiveKey\n    value: VExpressionContainer | null\n}\n\n/**\n * Start tag nodes.\n */\nexport interface VStartTag extends HasLocation, HasParent {\n    type: \"VStartTag\"\n    parent: VElement\n    selfClosing: boolean\n    attributes: (VAttribute | VDirective)[]\n}\n\n/**\n * End tag nodes.\n */\nexport interface VEndTag extends HasLocation, HasParent {\n    type: \"VEndTag\"\n    parent: VElement\n}\n\n/**\n * The property which has concrete information.\n */\nexport interface HasConcreteInfo {\n    tokens: Token[]\n    comments: Token[]\n    errors: ParseError[]\n}\n\n/**\n * Element nodes.\n */\nexport interface VElement extends HasLocation, HasParent {\n    type: \"VElement\"\n    parent: VDocumentFragment | VElement\n    namespace: Namespace\n    name: string\n    rawName: string\n    startTag: VStartTag\n    children: (VElement | VText | VExpressionContainer)[]\n    endTag: VEndTag | null\n    variables: Variable[]\n}\n\n/**\n * Root nodes.\n */\nexport interface VDocumentFragment\n    extends HasLocation,\n        HasParent,\n        HasConcreteInfo {\n    type: \"VDocumentFragment\"\n    parent: null\n    children: (VElement | VText | VExpressionContainer | VStyleElement)[]\n}\n\n/**\n * Style element nodes.\n */\nexport interface VStyleElement extends VElement {\n    type: \"VElement\"\n    name: \"style\"\n    style: true\n    children: (VText | VExpressionContainer)[]\n}\n","/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * @copyright 2017 Toru Nagashima. All rights reserved.\n * See LICENSE file in root directory for full license.\n */\nimport type { VisitorKeys } from \"eslint-visitor-keys\"\nimport * as Evk from \"eslint-visitor-keys\"\nimport type { Node } from \"./nodes\"\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\nexport const KEYS = Evk.unionWith({\n    VAttribute: [\"key\", \"value\"],\n    VDirectiveKey: [\"name\", \"argument\", \"modifiers\"],\n    VDocumentFragment: [\"children\"],\n    VElement: [\"startTag\", \"children\", \"endTag\"],\n    VEndTag: [],\n    VExpressionContainer: [\"expression\"],\n    VFilter: [\"callee\", \"arguments\"],\n    VFilterSequenceExpression: [\"expression\", \"filters\"],\n    VForExpression: [\"left\", \"right\"],\n    VIdentifier: [],\n    VLiteral: [],\n    VOnExpression: [\"body\"],\n    VSlotScopeExpression: [\"params\"],\n    VStartTag: [\"attributes\"],\n    VText: [],\n})\n\n/**\n * Check that the given key should be traversed or not.\n * @this {Traversable}\n * @param key The key to check.\n * @returns `true` if the key should be traversed.\n */\nfunction fallbackKeysFilter(this: any, key: string): boolean {\n    let value = null\n    return (\n        key !== \"comments\" &&\n        key !== \"leadingComments\" &&\n        key !== \"loc\" &&\n        key !== \"parent\" &&\n        key !== \"range\" &&\n        key !== \"tokens\" &&\n        key !== \"trailingComments\" &&\n        (value = this[key]) !== null &&\n        typeof value === \"object\" &&\n        (typeof value.type === \"string\" || Array.isArray(value))\n    )\n}\n\n/**\n * Get the keys of the given node to traverse it.\n * @param node The node to get.\n * @returns The keys to traverse.\n */\nfunction getFallbackKeys(node: Node): string[] {\n    return Object.keys(node).filter(fallbackKeysFilter, node)\n}\n\n/**\n * Check wheather a given value is a node.\n * @param x The value to check.\n * @returns `true` if the value is a node.\n */\nfunction isNode(x: any): x is Node {\n    return x !== null && typeof x === \"object\" && typeof x.type === \"string\"\n}\n\n/**\n * Traverse the given node.\n * @param node The node to traverse.\n * @param parent The parent node.\n * @param visitor The node visitor.\n */\nfunction traverse(node: Node, parent: Node | null, visitor: Visitor): void {\n    let i = 0\n    let j = 0\n\n    visitor.enterNode(node, parent)\n\n    const keys =\n        (visitor.visitorKeys || KEYS)[node.type] || getFallbackKeys(node)\n    for (i = 0; i < keys.length; ++i) {\n        const child = (node as any)[keys[i]]\n\n        if (Array.isArray(child)) {\n            for (j = 0; j < child.length; ++j) {\n                if (isNode(child[j])) {\n                    traverse(child[j], node, visitor)\n                }\n            }\n        } else if (isNode(child)) {\n            traverse(child, node, visitor)\n        }\n    }\n\n    visitor.leaveNode(node, parent)\n}\n\n//------------------------------------------------------------------------------\n// Exports\n//------------------------------------------------------------------------------\n\nexport interface Visitor {\n    visitorKeys?: VisitorKeys\n    enterNode(node: Node, parent: Node | null): void\n    leaveNode(node: Node, parent: Node | null): void\n}\n\n/**\n * Traverse the given AST tree.\n * @param node Root node to traverse.\n * @param visitor Visitor.\n */\nexport function traverseNodes(node: Node, visitor: Visitor): void {\n    traverse(node, null, visitor)\n}\n\nexport { getFallbackKeys }\n","import sortedLastIndex from \"lodash/sortedLastIndex\"\nimport type { Location } from \"../ast\"\nimport type { LocationCalculator } from \"./location-calculator\"\n/**\n * A class for getting lines and columns location.\n */\nexport class LinesAndColumns {\n    protected ltOffsets: number[]\n\n    /**\n     * Initialize.\n     * @param ltOffsets The list of the offset of line terminators.\n     */\n    public constructor(ltOffsets: number[]) {\n        this.ltOffsets = ltOffsets\n    }\n\n    /**\n     * Calculate the location of the given index.\n     * @param index The index to calculate their location.\n     * @returns The location of the index.\n     */\n    public getLocFromIndex(index: number): Location {\n        const line = sortedLastIndex(this.ltOffsets, index) + 1\n        const column = index - (line === 1 ? 0 : this.ltOffsets[line - 2])\n        return { line, column }\n    }\n\n    public createOffsetLocationCalculator(offset: number): LocationCalculator {\n        return {\n            getFixOffset() {\n                return offset\n            },\n            getLocFromIndex: this.getLocFromIndex.bind(this),\n        }\n    }\n}\n","/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * @copyright 2017 Toru Nagashima. All rights reserved.\n * See LICENSE file in root directory for full license.\n */\nimport sortedLastIndex from \"lodash/sortedLastIndex\"\nimport type { Location } from \"../ast\"\nimport { LinesAndColumns } from \"./lines-and-columns\"\n\n/**\n * Location calculators.\n */\nexport interface LocationCalculator {\n    /**\n     * Gets the fix location offset of the given offset with using the base offset of this calculator.\n     * @param offset The offset to modify.\n     */\n    getFixOffset(offset: number, kind: \"start\" | \"end\"): number\n\n    /**\n     * Calculate the location of the given index.\n     * @param index The index to calculate their location.\n     * @returns The location of the index.\n     */\n    getLocFromIndex(index: number): Location\n}\n\n/**\n * Location calculators.\n *\n * HTML tokenizers remove several characters to handle HTML entities and line terminators.\n * Tokens have the processed text as their value, but tokens have offsets and locations in the original text.\n * This calculator calculates the original locations from the processed texts.\n *\n * This calculator will be used for:\n *\n * - Adjusts the locations of script ASTs.\n * - Creates expression containers in postprocess.\n */\nexport class LocationCalculatorForHtml\n    extends LinesAndColumns\n    implements LocationCalculator\n{\n    private gapOffsets: number[]\n    private baseOffset: number\n    private baseIndexOfGap: number\n    private shiftOffset: number\n\n    /**\n     * Initialize this calculator.\n     * @param gapOffsets The list of the offset of removed characters in tokenization phase.\n     * @param ltOffsets The list of the offset of line terminators.\n     * @param baseOffset The base offset to calculate locations.\n     * @param shiftOffset The shift offset to calculate locations.\n     */\n    public constructor(\n        gapOffsets: number[],\n        ltOffsets: number[],\n        baseOffset?: number,\n        shiftOffset = 0,\n    ) {\n        super(ltOffsets)\n        this.gapOffsets = gapOffsets\n        this.ltOffsets = ltOffsets\n        this.baseOffset = baseOffset || 0\n        this.baseIndexOfGap =\n            this.baseOffset === 0\n                ? 0\n                : sortedLastIndex(gapOffsets, this.baseOffset)\n        this.shiftOffset = shiftOffset\n    }\n\n    /**\n     * Get sub calculator which have the given base offset.\n     * @param offset The base offset of new sub calculator.\n     * @returns Sub calculator.\n     */\n    public getSubCalculatorAfter(offset: number): LocationCalculatorForHtml {\n        return new LocationCalculatorForHtml(\n            this.gapOffsets,\n            this.ltOffsets,\n            this.baseOffset + offset,\n            this.shiftOffset,\n        )\n    }\n\n    /**\n     * Get sub calculator that shifts the given offset.\n     * @param offset The shift of new sub calculator.\n     * @returns Sub calculator.\n     */\n    public getSubCalculatorShift(offset: number): LocationCalculatorForHtml {\n        return new LocationCalculatorForHtml(\n            this.gapOffsets,\n            this.ltOffsets,\n            this.baseOffset,\n            this.shiftOffset + offset,\n        )\n    }\n\n    /**\n     * Calculate gap at the given index.\n     * @param index The index to calculate gap.\n     */\n    private _getGap(index: number): number {\n        const offsets = this.gapOffsets\n        let g0 = sortedLastIndex(offsets, index + this.baseOffset)\n        let pos = index + this.baseOffset + g0 - this.baseIndexOfGap\n\n        while (g0 < offsets.length && offsets[g0] <= pos) {\n            g0 += 1\n            pos += 1\n        }\n\n        return g0 - this.baseIndexOfGap\n    }\n\n    /**\n     * Calculate the location of the given index.\n     * @param index The index to calculate their location.\n     * @returns The location of the index.\n     */\n    public getLocation(index: number): Location {\n        return this.getLocFromIndex(this.getOffsetWithGap(index))\n    }\n\n    /**\n     * Calculate the offset of the given index.\n     * @param index The index to calculate their location.\n     * @returns The offset of the index.\n     */\n    public getOffsetWithGap(index: number): number {\n        return index + this.getFixOffset(index)\n    }\n\n    /**\n     * Gets the fix location offset of the given offset with using the base offset of this calculator.\n     * @param offset The offset to modify.\n     */\n    public getFixOffset(offset: number): number {\n        const shiftOffset = this.shiftOffset\n        const gap = this._getGap(offset + shiftOffset)\n        return this.baseOffset + gap + shiftOffset\n    }\n}\n","/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * @copyright 2017 Toru Nagashima. All rights reserved.\n * See LICENSE file in root directory for full license.\n */\nimport debugFactory from \"debug\"\nexport const debug = debugFactory(\"vue-eslint-parser\")\n","import type {\n    VAttribute,\n    VDirective,\n    VDocumentFragment,\n    VElement,\n    VExpressionContainer,\n    VGenericExpression,\n    VNode,\n} from \"../ast\"\n\n/**\n * Check whether the node is a `<script>` element.\n * @param node The node to check.\n * @returns `true` if the node is a `<script>` element.\n */\nexport function isScriptElement(node: VNode): node is VElement {\n    return node.type === \"VElement\" && node.name === \"script\"\n}\n\n/**\n * Checks whether the given script element is `<script setup>`.\n */\nexport function isScriptSetupElement(script: VElement): boolean {\n    return (\n        isScriptElement(script) &&\n        script.startTag.attributes.some(\n            (attr) => !attr.directive && attr.key.name === \"setup\",\n        )\n    )\n}\n\n/**\n * Check whether the node is a `<template>` element.\n * @param node The node to check.\n * @returns `true` if the node is a `<template>` element.\n */\nexport function isTemplateElement(node: VNode): node is VElement {\n    return node.type === \"VElement\" && node.name === \"template\"\n}\n\n/**\n * Check whether the node is a `<style>` element.\n * @param node The node to check.\n * @returns `true` if the node is a `<style>` element.\n */\nexport function isStyleElement(node: VNode): node is VElement {\n    return node.type === \"VElement\" && node.name === \"style\"\n}\n\n/**\n * Get the belonging document of the given node.\n * @param leafNode The node to get.\n * @returns The belonging document.\n */\nexport function getOwnerDocument(leafNode: VNode): VDocumentFragment | null {\n    let node: VNode | null = leafNode\n    while (node != null && node.type !== \"VDocumentFragment\") {\n        node = node.parent\n    }\n    return node\n}\n\n/**\n * Check whether the attribute node is a `lang` attribute.\n * @param attribute The attribute node to check.\n * @returns `true` if the attribute node is a `lang` attribute.\n */\nexport function isLang(\n    attribute: VAttribute | VDirective,\n): attribute is VAttribute {\n    return attribute.directive === false && attribute.key.name === \"lang\"\n}\n\n/**\n * Get the `lang` attribute value from a given element.\n * @param element The element to get.\n * @param defaultLang The default value of the `lang` attribute.\n * @returns The `lang` attribute value.\n */\nexport function getLang(element: VElement | undefined): string | null {\n    const langAttr = element && element.startTag.attributes.find(isLang)\n    const lang = langAttr && langAttr.value && langAttr.value.value\n    return lang || null\n}\n/**\n * Check whether the given script element has `lang=\"ts\"`.\n * @param element The element to check.\n * @returns The given script element has `lang=\"ts\"`.\n */\nexport function isTSLang(element: VElement | undefined): boolean {\n    const lang = getLang(element)\n    // See https://github.com/vuejs/core/blob/28e30c819df5e4fc301c98f7be938fa13e8be3bc/packages/compiler-sfc/src/compileScript.ts#L179\n    return lang === \"ts\" || lang === \"tsx\"\n}\n\nexport type GenericDirective = VDirective & {\n    value: VExpressionContainer & {\n        expression: VGenericExpression\n    }\n}\n\n/**\n * Find `generic` directive from given `<script>` element\n */\nexport function findGenericDirective(\n    element: VElement,\n): GenericDirective | null {\n    return (\n        element.startTag.attributes.find(\n            (attr): attr is GenericDirective =>\n                attr.directive &&\n                attr.value?.expression?.type === \"VGenericExpression\",\n        ) || null\n    )\n}\n","import type { ESLintExtendedProgram, ESLintProgram } from \"../ast\"\n\n/**\n * The type of basic ESLint custom parser.\n * e.g. espree\n */\nexport type BasicParserObject<R = ESLintProgram> = {\n    parse(code: string, options: any): R\n    parseForESLint: undefined\n}\n/**\n * The type of ESLint custom parser enhanced for ESLint.\n * e.g. @babel/eslint-parser, @typescript-eslint/parser\n */\nexport type EnhancedParserObject<R = ESLintExtendedProgram> = {\n    parseForESLint(code: string, options: any): R\n    parse: undefined\n}\n\n/**\n * The type of ESLint (custom) parsers.\n */\nexport type ParserObject<R1 = ESLintExtendedProgram, R2 = ESLintProgram> =\n    | EnhancedParserObject<R1>\n    | BasicParserObject<R2>\n\nexport function isParserObject<R1, R2>(\n    value: ParserObject<R1, R2> | {} | undefined | null,\n): value is ParserObject<R1, R2> {\n    return isEnhancedParserObject(value) || isBasicParserObject(value)\n}\nexport function isEnhancedParserObject<R>(\n    value: EnhancedParserObject<R> | {} | undefined | null,\n): value is EnhancedParserObject<R> {\n    return Boolean(value && typeof (value as any).parseForESLint === \"function\")\n}\nexport function isBasicParserObject<R>(\n    value: BasicParserObject<R> | {} | undefined | null,\n): value is BasicParserObject<R> {\n    return Boolean(value && typeof (value as any).parse === \"function\")\n}\n","import * as path from \"path\"\nimport type { VDocumentFragment } from \"../ast\"\nimport type { CustomTemplateTokenizerConstructor } from \"../html/custom-tokenizer\"\nimport { getLang, isScriptElement, isScriptSetupElement } from \"./ast-utils\"\nimport type { ParserObject } from \"./parser-object\"\nimport { isParserObject } from \"./parser-object\"\n\nexport interface ParserOptions {\n    // vue-eslint-parser options\n    parser?:\n        | boolean\n        | string\n        | ParserObject\n        | Record<string, string | ParserObject | undefined>\n    vueFeatures?: {\n        interpolationAsNonHTML?: boolean // default true\n        filter?: boolean // default true\n        styleCSSVariableInjection?: boolean // default true\n        customMacros?: string[]\n    }\n\n    // espree options\n    ecmaVersion?: number | \"latest\"\n    sourceType?: \"script\" | \"module\"\n    ecmaFeatures?: { [key: string]: any }\n\n    // @typescript-eslint/parser options\n    jsxPragma?: string\n    jsxFragmentName?: string | null\n    lib?: string[]\n\n    project?: string | string[]\n    projectFolderIgnoreList?: string[]\n    tsconfigRootDir?: string\n    extraFileExtensions?: string[]\n    warnOnUnsupportedTypeScriptVersion?: boolean\n\n    // set by eslint\n    filePath?: string\n    // enables by eslint\n    comment?: boolean\n    loc?: boolean\n    range?: boolean\n    tokens?: boolean\n\n    // From ESLint\n    eslintScopeManager?: boolean\n\n    // others\n    // [key: string]: any\n\n    templateTokenizer?: Record<\n        string,\n        string | CustomTemplateTokenizerConstructor | undefined\n    >\n}\n\nexport function isSFCFile(parserOptions: ParserOptions) {\n    if (parserOptions.filePath === \"<input>\") {\n        return true\n    }\n    return path.extname(parserOptions.filePath || \"unknown.vue\") === \".vue\"\n}\n\n/**\n * Gets the script parser name from the given parser lang.\n */\nexport function getScriptParser(\n    parser:\n        | boolean\n        | string\n        | ParserObject\n        | Record<string, string | ParserObject | undefined>\n        | undefined,\n    getParserLang: () => string | null | Iterable<string | null>,\n): string | ParserObject | undefined {\n    if (isParserObject(parser)) {\n        return parser\n    }\n    if (parser && typeof parser === \"object\") {\n        const parserLang = getParserLang()\n        const parserLangs =\n            parserLang == null\n                ? []\n                : typeof parserLang === \"string\"\n                ? [parserLang]\n                : parserLang\n        for (const lang of parserLangs) {\n            const parserForLang = lang && parser[lang]\n            if (\n                typeof parserForLang === \"string\" ||\n                isParserObject(parserForLang)\n            ) {\n                return parserForLang\n            }\n        }\n        return parser.js\n    }\n    return typeof parser === \"string\" ? parser : undefined\n}\n\nexport function getParserLangFromSFC(doc: VDocumentFragment): string | null {\n    if (doc) {\n        const scripts = doc.children.filter(isScriptElement)\n        const script =\n            (scripts.length === 2 && scripts.find(isScriptSetupElement)) ||\n            scripts[0]\n        if (script) {\n            return getLang(script)\n        }\n    }\n    return null\n}\n","import Module from \"module\"\nimport path from \"path\"\nexport const createRequire: (filename: string) => (modname: string) => any =\n    // Added in v12.2.0\n    (Module as any).createRequire ||\n    // Added in v10.12.0, but deprecated in v12.2.0.\n    (Module as any).createRequireFromPath ||\n    // Polyfill - This is not executed on the tests on node@>=10.\n    /* istanbul ignore next */\n    ((modname) => {\n        const mod = new Module(modname)\n\n        mod.filename = modname\n        mod.paths = (Module as any)._nodeModulePaths(path.dirname(modname))\n        ;(mod as any)._compile(\"module.exports = require;\", modname)\n        return mod.exports\n    })\n","import path from \"path\"\nimport { createRequire } from \"./create-require\"\n\nfunction isLinterPath(p: string): boolean {\n    return (\n        // ESLint 6 and above\n        p.includes(\n            `eslint${path.sep}lib${path.sep}linter${path.sep}linter.js`,\n        ) ||\n        // ESLint 5\n        p.includes(`eslint${path.sep}lib${path.sep}linter.js`)\n    )\n}\n\nexport function getLinterRequire() {\n    // Lookup the loaded eslint\n    const linterPath = Object.keys(require.cache).find(isLinterPath)\n    if (linterPath) {\n        try {\n            return createRequire(linterPath)\n        } catch {\n            // ignore\n        }\n    }\n    return null\n}\n","import * as escope from \"eslint-scope\"\nimport { getLinterRequire } from \"./linter-require\"\nimport { lte } from \"semver\"\n\nlet escopeCache: typeof escope | null = null\n\n/**\n * Load the newest `eslint-scope` from the loaded ESLint or dependency.\n */\nexport function getEslintScope(): typeof escope & {\n    version: string\n} {\n    if (!escopeCache) {\n        escopeCache = getLinterRequire()?.(\"eslint-scope\")\n        if (\n            !escopeCache ||\n            escopeCache.version == null ||\n            lte(escopeCache.version, escope.version)\n        ) {\n            escopeCache = escope\n        }\n    }\n\n    return escopeCache\n}\n","import type { ParserOptions } from \"../common/parser-options\"\nimport { getLinterRequire } from \"./linter-require\"\n// @ts-expect-error -- ignore\nimport * as dependencyEspree from \"espree\"\nimport { lte, lt } from \"semver\"\nimport { createRequire } from \"./create-require\"\nimport path from \"path\"\nimport type { BasicParserObject } from \"./parser-object\"\n\ntype Espree = BasicParserObject & {\n    latestEcmaVersion?: number\n    version: string\n}\nlet espreeCache: Espree | null = null\n\n/**\n * Gets the espree that the given ecmaVersion can parse.\n */\nexport function getEspreeFromEcmaVersion(\n    ecmaVersion: ParserOptions[\"ecmaVersion\"],\n): Espree {\n    const linterEspree = getEspreeFromLinter()\n    if (ecmaVersion == null) {\n        return linterEspree\n    }\n    if (ecmaVersion === \"latest\") {\n        return getNewestEspree()\n    }\n    if (\n        normalizeEcmaVersion(ecmaVersion) <= getLatestEcmaVersion(linterEspree)\n    ) {\n        return linterEspree\n    }\n    const userEspree = getEspreeFromUser()\n    if (normalizeEcmaVersion(ecmaVersion) <= getLatestEcmaVersion(userEspree)) {\n        return userEspree\n    }\n    return linterEspree\n}\n\n/**\n * Load `espree` from the user dir.\n */\nexport function getEspreeFromUser(): Espree {\n    try {\n        const cwd = process.cwd()\n        const relativeTo = path.join(cwd, \"__placeholder__.js\")\n        return createRequire(relativeTo)(\"espree\")\n    } catch {\n        return getEspreeFromLinter()\n    }\n}\n\n/**\n * Load `espree` from the loaded ESLint.\n * If the loaded ESLint was not found, just returns `require(\"espree\")`.\n */\nexport function getEspreeFromLinter(): Espree {\n    if (!espreeCache) {\n        espreeCache = getLinterRequire()?.(\"espree\")\n        if (!espreeCache) {\n            espreeCache = dependencyEspree\n        }\n    }\n\n    return espreeCache!\n}\n\n/**\n * Load the newest `espree` from the loaded ESLint or dependency.\n */\nfunction getNewestEspree(): Espree {\n    let newest = dependencyEspree\n    const linterEspree = getEspreeFromLinter()\n    if (\n        linterEspree.version != null &&\n        lte(newest.version, linterEspree.version)\n    ) {\n        newest = linterEspree\n    }\n    const userEspree = getEspreeFromUser()\n    if (userEspree.version != null && lte(newest.version, userEspree.version)) {\n        newest = userEspree\n    }\n    return newest\n}\n\nexport function getEcmaVersionIfUseEspree(\n    parserOptions: ParserOptions,\n    getDefault?: (defaultVer: number) => number,\n): number | undefined {\n    if (parserOptions.parser != null && parserOptions.parser !== \"espree\") {\n        return undefined\n    }\n\n    if (parserOptions.ecmaVersion === \"latest\") {\n        return normalizeEcmaVersion(getLatestEcmaVersion(getNewestEspree()))\n    }\n    if (parserOptions.ecmaVersion == null) {\n        const defVer = getDefaultEcmaVersion()\n        return getDefault?.(defVer) ?? defVer\n    }\n    return normalizeEcmaVersion(parserOptions.ecmaVersion)\n}\n\nfunction getDefaultEcmaVersion(): number {\n    if (lt(getEspreeFromLinter().version, \"9.0.0\")) {\n        return 5\n    }\n    // Perhaps the version 9 will change the default to \"latest\".\n    return normalizeEcmaVersion(getLatestEcmaVersion(getNewestEspree()))\n}\n\n/**\n * Normalize ECMAScript version\n */\nfunction normalizeEcmaVersion(version: number) {\n    if (version > 5 && version < 2015) {\n        return version + 2009\n    }\n    return version\n}\n\nfunction getLatestEcmaVersion(espree: Espree) {\n    if (espree.latestEcmaVersion == null) {\n        for (const { v, latest } of [\n            { v: \"6.1.0\", latest: 2020 },\n            { v: \"4.0.0\", latest: 2019 },\n        ]) {\n            if (lte(v, espree.version)) {\n                return latest\n            }\n        }\n        return 2018\n    }\n    return normalizeEcmaVersion(espree.latestEcmaVersion)\n}\n","/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * @copyright 2017 Toru Nagashima. All rights reserved.\n * See LICENSE file in root directory for full license.\n */\nimport type * as escopeTypes from \"eslint-scope\"\nimport type { ParserOptions } from \"../common/parser-options\"\nimport type {\n    ESLintIdentifier,\n    ESLintProgram,\n    Reference,\n    Variable,\n} from \"../ast\"\nimport { getFallbackKeys } from \"../ast\"\nimport { getEslintScope } from \"../common/eslint-scope\"\nimport { getEcmaVersionIfUseEspree } from \"../common/espree\"\n\ntype ParserResult = {\n    ast: ESLintProgram\n    scopeManager?: escopeTypes.ScopeManager\n}\n\n/**\n * Check whether the given reference is unique in the belonging array.\n * @param reference The current reference to check.\n * @param index The index of the reference.\n * @param references The belonging array of the reference.\n */\nfunction isUnique(\n    reference: escopeTypes.Reference,\n    index: number,\n    references: escopeTypes.Reference[],\n): boolean {\n    return (\n        index === 0 || reference.identifier !== references[index - 1].identifier\n    )\n}\n\n/**\n * Check whether a given variable has that definition.\n * @param variable The variable to check.\n * @returns `true` if the variable has that definition.\n */\nfunction hasDefinition(variable: escopeTypes.Variable): boolean {\n    return variable.defs.length >= 1\n}\n\n/**\n * Transform the given reference object.\n * @param reference The source reference object.\n * @returns The transformed reference object.\n */\nfunction transformReference(reference: escopeTypes.Reference): Reference {\n    const ret: Reference = {\n        id: reference.identifier as ESLintIdentifier,\n        mode: reference.isReadOnly()\n            ? \"r\"\n            : reference.isWriteOnly()\n            ? \"w\"\n            : /* otherwise */ \"rw\",\n        variable: null,\n        isValueReference: reference.isValueReference,\n        isTypeReference: reference.isTypeReference,\n    }\n    Object.defineProperty(ret, \"variable\", { enumerable: false })\n\n    return ret\n}\n\n/**\n * Transform the given variable object.\n * @param variable The source variable object.\n * @returns The transformed variable object.\n */\nfunction transformVariable(\n    variable: escopeTypes.Variable,\n    kind: Variable[\"kind\"],\n): Variable {\n    const ret: Variable = {\n        id: variable.defs[0].name as ESLintIdentifier,\n        kind,\n        references: [],\n    }\n    Object.defineProperty(ret, \"references\", { enumerable: false })\n\n    return ret\n}\n\n/**\n * Get the `for` statement scope.\n * @param scope The global scope.\n * @returns The `for` statement scope.\n */\nfunction getForScope(scope: escopeTypes.Scope): escopeTypes.Scope {\n    const child = scope.childScopes[0]\n    return child.block === scope.block ? child.childScopes[0] : child\n}\n\nexport function analyzeScope(\n    ast: ESLintProgram,\n    parserOptions: ParserOptions,\n): escopeTypes.ScopeManager {\n    const ecmaVersion = getEcmaVersionIfUseEspree(parserOptions) || 2022\n    const ecmaFeatures = parserOptions.ecmaFeatures || {}\n    const sourceType = parserOptions.sourceType || \"script\"\n    const result = getEslintScope().analyze(ast, {\n        ignoreEval: true,\n        nodejsScope: false,\n        impliedStrict: ecmaFeatures.impliedStrict,\n        ecmaVersion,\n        sourceType,\n        fallback: getFallbackKeys,\n    })\n\n    return result\n}\n\n/**\n * Analyze the scope of the given AST.\n * @param {ParserResult} parserResult The parser result to analyze.\n * @param parserOptions\n */\nfunction analyze(\n    parserResult: ParserResult,\n    parserOptions: ParserOptions,\n): escopeTypes.Scope {\n    const scopeManager =\n        parserResult.scopeManager ||\n        analyzeScope(parserResult.ast, parserOptions)\n    return scopeManager.globalScope\n}\n\n/**\n * Analyze the external references of the given AST.\n * @param {ParserResult} parserResult The parser result to analyze.\n * @returns {Reference[]} The reference objects of external references.\n */\nexport function analyzeExternalReferences(\n    parserResult: ParserResult,\n    parserOptions: ParserOptions,\n): Reference[] {\n    const scope = analyze(parserResult, parserOptions)\n    return scope.through.filter(isUnique).map(transformReference)\n}\n\n/**\n * Analyze the external references of the given AST.\n * @param {ParserResult} parserResult The parser result to analyze.\n * @returns {Reference[]} The reference objects of external references.\n */\nexport function analyzeVariablesAndExternalReferences(\n    parserResult: ParserResult,\n    kind: Variable[\"kind\"],\n    parserOptions: ParserOptions,\n): { variables: Variable[]; references: Reference[] } {\n    const scope = analyze(parserResult, parserOptions)\n    return {\n        variables: getForScope(scope)\n            .variables.filter(hasDefinition)\n            .map((v) => transformVariable(v, kind)),\n        references: scope.through.filter(isUnique).map(transformReference),\n    }\n}\n","import type {\n    ESLintExtendedProgram,\n    ESLintNode,\n    HasLocation,\n    LocationRange,\n    Node,\n    ParseError,\n} from \"../ast\"\nimport { traverseNodes } from \"../ast\"\nimport type { LocationCalculator } from \"./location-calculator\"\n\n/**\n * Do post-process of parsing an expression.\n *\n * 1. Set `node.parent`.\n * 2. Fix `node.range` and `node.loc` for HTML entities.\n *\n * @param result The parsing result to modify.\n * @param locationCalculator The location calculator to modify.\n */\nexport function fixLocations(\n    result: ESLintExtendedProgram,\n    locationCalculator: LocationCalculator,\n): void {\n    fixNodeLocations(result.ast, result.visitorKeys, locationCalculator)\n\n    for (const token of result.ast.tokens || []) {\n        fixLocation(token, locationCalculator)\n    }\n    for (const comment of result.ast.comments || []) {\n        fixLocation(comment, locationCalculator)\n    }\n}\n\nexport function fixNodeLocations(\n    rootNode: ESLintNode,\n    visitorKeys: ESLintExtendedProgram[\"visitorKeys\"],\n    locationCalculator: LocationCalculator,\n): void {\n    // There are cases which the same node instance appears twice in the tree.\n    // E.g. `let {a} = {}` // This `a` appears twice at `Property#key` and `Property#value`.\n    const traversed = new Map<Node | number[] | LocationRange, Node>()\n\n    traverseNodes(rootNode, {\n        visitorKeys,\n\n        enterNode(node, parent) {\n            if (!traversed.has(node)) {\n                traversed.set(node, node)\n                node.parent = parent\n\n                // `babel-eslint@8` has shared `Node#range` with multiple nodes.\n                // See also: https://github.com/vuejs/eslint-plugin-vue/issues/208\n                if (traversed.has(node.range)) {\n                    if (!traversed.has(node.loc)) {\n                        // However, `Node#loc` may not be shared.\n                        // See also: https://github.com/vuejs/vue-eslint-parser/issues/84\n                        node.loc.start = locationCalculator.getLocFromIndex(\n                            node.range[0],\n                        )\n                        node.loc.end = locationCalculator.getLocFromIndex(\n                            node.range[1],\n                        )\n                        traversed.set(node.loc, node)\n                    } else if (node.start != null || node.end != null) {\n                        const traversedNode = traversed.get(node.range)!\n                        if (traversedNode.type === node.type) {\n                            node.start = traversedNode.start\n                            node.end = traversedNode.end\n                        }\n                    }\n                } else {\n                    fixLocation(node, locationCalculator)\n                    traversed.set(node.range, node)\n                    traversed.set(node.loc, node)\n                }\n            }\n        },\n\n        leaveNode() {\n            // Do nothing.\n        },\n    })\n}\n\n/**\n * Modify the location information of the given node with using the base offset and gaps of this calculator.\n * @param node The node to modify their location.\n */\nexport function fixLocation<T extends HasLocation>(\n    node: T,\n    locationCalculator: LocationCalculator,\n): T {\n    const range = node.range\n    const loc = node.loc\n    const d0 = locationCalculator.getFixOffset(range[0], \"start\")\n    const d1 = locationCalculator.getFixOffset(range[1], \"end\")\n\n    if (d0 !== 0) {\n        range[0] += d0\n        if (node.start != null) {\n            node.start += d0\n        }\n        loc.start = locationCalculator.getLocFromIndex(range[0])\n    }\n    if (d1 !== 0) {\n        range[1] += d1\n        if (node.end != null) {\n            node.end += d0\n        }\n        loc.end = locationCalculator.getLocFromIndex(range[1])\n    }\n\n    return node\n}\n\n/**\n * Modify the location information of the given error with using the base offset and gaps of this calculator.\n * @param error The error to modify their location.\n */\nexport function fixErrorLocation(\n    error: ParseError,\n    locationCalculator: LocationCalculator,\n) {\n    const diff = locationCalculator.getFixOffset(error.index, \"start\")\n\n    error.index += diff\n\n    const loc = locationCalculator.getLocFromIndex(error.index)\n    error.lineNumber = loc.line\n    error.column = loc.column\n}\n","import { lte } from \"semver\"\nimport { getEcmaVersionIfUseEspree, getEspreeFromUser } from \"../common/espree\"\nimport type { ParserOptions } from \"../common/parser-options\"\n\nexport const DEFAULT_ECMA_VERSION = 2017\n\n/**\n * Get parser options for <script setup>\n */\nexport function getScriptSetupParserOptions(\n    parserOptions: ParserOptions,\n): ParserOptions {\n    const espreeEcmaVersion = getEcmaVersionIfUseEspree(\n        parserOptions,\n        getDefaultEcmaVersion,\n    )\n\n    return {\n        ...parserOptions,\n        ecmaVersion: espreeEcmaVersion,\n    }\n}\n\nfunction getDefaultEcmaVersion(def: number) {\n    if (lte(\"8.0.0\", getEspreeFromUser().version)) {\n        // Script setup requires top level await support, so default the ecma version to 2022.\n        return getEspreeFromUser().latestEcmaVersion!\n    }\n    return Math.max(def, DEFAULT_ECMA_VERSION)\n}\n","import type {\n    ESLintExtendedProgram,\n    ESLintProgram,\n    HasLocation,\n    Token,\n    VElement,\n    VGenericExpression,\n} from \"../ast\"\n// eslint-disable-next-line node/no-extraneous-import -- ignore\nimport type { TSESTree } from \"@typescript-eslint/utils\"\nimport type {\n    Reference,\n    Scope,\n    Variable,\n    ScopeManager,\n    VariableDefinition,\n} from \"eslint-scope\"\nimport { findGenericDirective } from \"../common/ast-utils\"\n\nexport type GenericProcessInfo = {\n    node: VGenericExpression\n    defineTypes: {\n        node: VGenericExpression[\"params\"][number]\n        define: string\n    }[]\n    postprocess: (context: GenericPostprocessContext) => void\n}\nexport type GenericPostprocessContext = {\n    result: ESLintExtendedProgram\n    getTypeBlock?: (node: ESLintProgram) => {\n        body: ESLintProgram[\"body\"]\n    }\n    isRemoveTarget: (nodeOrToken: HasLocation) => boolean\n    getTypeDefScope: (scopeManager: ScopeManager) => Scope\n}\nexport function extractGeneric(element: VElement): GenericProcessInfo | null {\n    const genericAttr = findGenericDirective(element)\n    if (!genericAttr) {\n        return null\n    }\n    const genericNode = genericAttr.value.expression\n    const defineTypes = genericNode.params.map((t, i) => ({\n        node: t,\n        define: `type ${t.name.name} = ${getConstraint(\n            t,\n            genericNode.rawParams[i],\n        )}`,\n    }))\n\n    return {\n        node: genericNode,\n        defineTypes,\n        postprocess({ result, getTypeBlock, isRemoveTarget, getTypeDefScope }) {\n            const node = getTypeBlock?.(result.ast) ?? result.ast\n            removeTypeDeclarations(node, isRemoveTarget)\n            if (result.ast.tokens) {\n                removeTypeDeclarationTokens(result.ast.tokens, isRemoveTarget)\n            }\n            if (result.ast.comments) {\n                removeTypeDeclarationTokens(result.ast.comments, isRemoveTarget)\n            }\n            if (result.scopeManager) {\n                const typeDefScope = getTypeDefScope(result.scopeManager)\n                restoreScope(result.scopeManager, typeDefScope, isRemoveTarget)\n            }\n        },\n    }\n\n    function removeTypeDeclarations(\n        node: {\n            body: ESLintProgram[\"body\"]\n        },\n        isRemoveTarget: (nodeOrToken: HasLocation) => boolean,\n    ) {\n        for (let index = node.body.length - 1; index >= 0; index--) {\n            if (isRemoveTarget(node.body[index])) {\n                node.body.splice(index, 1)\n            }\n        }\n    }\n\n    function removeTypeDeclarationTokens(\n        tokens: Token[],\n        isRemoveTarget: (nodeOrToken: HasLocation) => boolean,\n    ) {\n        for (let index = tokens.length - 1; index >= 0; index--) {\n            if (isRemoveTarget(tokens[index])) {\n                tokens.splice(index, 1)\n            }\n        }\n    }\n\n    function restoreScope(\n        scopeManager: ScopeManager,\n        typeDefScope: Scope,\n        isRemoveTarget: (nodeOrToken: HasLocation) => boolean,\n    ) {\n        for (const variable of [...typeDefScope.variables]) {\n            let def = variable.defs.find((d) =>\n                isRemoveTarget(d.name as HasLocation),\n            )\n            while (def) {\n                removeVariableDef(variable, def, typeDefScope)\n                def = variable.defs.find((d) =>\n                    isRemoveTarget(d.name as HasLocation),\n                )\n            }\n        }\n        for (const reference of [...typeDefScope.references]) {\n            if (isRemoveTarget(reference.identifier as HasLocation)) {\n                removeReference(reference, typeDefScope)\n            }\n        }\n\n        for (const scope of [...scopeManager.scopes]) {\n            if (isRemoveTarget(scope.block as HasLocation)) {\n                removeScope(scopeManager, scope)\n            }\n        }\n    }\n}\n\nfunction getConstraint(node: TSESTree.TSTypeParameter, rawParam: string) {\n    if (!node.constraint) {\n        return \"unknown\"\n    }\n    let index = rawParam.indexOf(node.name.name) + node.name.name.length\n    let startIndex: number | null = null\n    while (index < rawParam.length) {\n        if (startIndex == null) {\n            if (rawParam.startsWith(\"extends\", index)) {\n                startIndex = index = index + 7\n                continue\n            }\n        } else if (rawParam[index] === \"=\") {\n            if (rawParam[index + 1] === \">\") {\n                // Arrow function type\n                index += 2\n                continue\n            }\n            return rawParam.slice(startIndex, index)\n        }\n        if (rawParam.startsWith(\"//\", index)) {\n            // Skip line comment\n            const lfIndex = rawParam.indexOf(\"\\n\", index)\n            if (lfIndex >= 0) {\n                index = lfIndex + 1\n                continue\n            }\n            return \"unknown\"\n        }\n        if (rawParam.startsWith(\"/*\", index)) {\n            // Skip block comment\n            const endIndex = rawParam.indexOf(\"*/\", index)\n            if (endIndex >= 0) {\n                index = endIndex + 2\n                continue\n            }\n            return \"unknown\"\n        }\n        index++\n    }\n    if (startIndex == null) {\n        return \"unknown\"\n    }\n\n    return rawParam.slice(startIndex)\n}\n\n/** Remove variable def */\nfunction removeVariableDef(\n    variable: Variable,\n    def: VariableDefinition,\n    scope: Scope,\n): void {\n    const defIndex = variable.defs.indexOf(def)\n    if (defIndex < 0) {\n        return\n    }\n    variable.defs.splice(defIndex, 1)\n    if (variable.defs.length === 0) {\n        // Remove variable\n        referencesToThrough(variable.references, scope)\n        variable.references.forEach((r) => {\n            if ((r as any).init) {\n                ;(r as any).init = false\n            }\n            r.resolved = null\n        })\n        scope.variables.splice(scope.variables.indexOf(variable), 1)\n        const name = variable.name\n        if (variable === scope.set.get(name)) {\n            scope.set.delete(name)\n        }\n    } else {\n        const idIndex = variable.identifiers.indexOf(def.name)\n        if (idIndex >= 0) {\n            variable.identifiers.splice(idIndex, 1)\n        }\n    }\n}\n\n/** Move reference to through */\nfunction referencesToThrough(references: Reference[], baseScope: Scope) {\n    let scope: Scope | null = baseScope\n    while (scope) {\n        addAllReferences(scope.through, references)\n        scope = scope.upper\n    }\n}\n\n/**\n * Add all references to array\n */\nfunction addAllReferences(list: Reference[], elements: Reference[]): void {\n    list.push(...elements)\n    list.sort((a, b) => a.identifier.range![0] - b.identifier.range![0])\n}\n\n/** Remove reference */\nfunction removeReference(reference: Reference, baseScope: Scope): void {\n    if (reference.resolved) {\n        if (\n            reference.resolved.defs.some((d) => d.name === reference.identifier)\n        ) {\n            // remove var\n            const varIndex = baseScope.variables.indexOf(reference.resolved)\n            if (varIndex >= 0) {\n                baseScope.variables.splice(varIndex, 1)\n            }\n            const name = reference.identifier.name\n            if (reference.resolved === baseScope.set.get(name)) {\n                baseScope.set.delete(name)\n            }\n        } else {\n            const refIndex = reference.resolved.references.indexOf(reference)\n            if (refIndex >= 0) {\n                reference.resolved.references.splice(refIndex, 1)\n            }\n        }\n    }\n\n    let scope: Scope | null = baseScope\n    while (scope) {\n        const refIndex = scope.references.indexOf(reference)\n        if (refIndex >= 0) {\n            scope.references.splice(refIndex, 1)\n        }\n        const throughIndex = scope.through.indexOf(reference)\n        if (throughIndex >= 0) {\n            scope.through.splice(throughIndex, 1)\n        }\n        scope = scope.upper\n    }\n}\n\n/** Remove scope */\nfunction removeScope(scopeManager: ScopeManager, scope: Scope): void {\n    for (const childScope of scope.childScopes) {\n        removeScope(scopeManager, childScope)\n    }\n\n    while (scope.references[0]) {\n        removeReference(scope.references[0], scope)\n    }\n    const upper = scope.upper\n    if (upper) {\n        const index = upper.childScopes.indexOf(scope)\n        if (index >= 0) {\n            upper.childScopes.splice(index, 1)\n        }\n    }\n    const index = scopeManager.scopes.indexOf(scope)\n    if (index >= 0) {\n        scopeManager.scopes.splice(index, 1)\n    }\n}\n","/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * @copyright 2017 Toru Nagashima. All rights reserved.\n * See LICENSE file in root directory for full license.\n */\nimport first from \"lodash/first\"\nimport last from \"lodash/last\"\nimport sortedIndexBy from \"lodash/sortedIndexBy\"\nimport type {\n    ESLintArrayExpression,\n    ESLintArrayPattern,\n    ESLintCallExpression,\n    ESLintExpression,\n    ESLintExpressionStatement,\n    ESLintExtendedProgram,\n    ESLintForInStatement,\n    ESLintForOfStatement,\n    ESLintFunctionExpression,\n    ESLintIdentifier,\n    ESLintUnaryExpression,\n    ESLintVariableDeclaration,\n    HasLocation,\n    Node,\n    Reference,\n    Token,\n    Variable,\n    VElement,\n    VFilter,\n    VFilterSequenceExpression,\n    VForExpression,\n    VOnExpression,\n    VSlotScopeExpression,\n    OffsetRange,\n    VGenericExpression,\n} from \"../ast\"\nimport { ParseError } from \"../ast\"\nimport { debug } from \"../common/debug\"\nimport type {\n    LocationCalculator,\n    LocationCalculatorForHtml,\n} from \"../common/location-calculator\"\nimport {\n    analyzeExternalReferences,\n    analyzeVariablesAndExternalReferences,\n} from \"./scope-analyzer\"\nimport {\n    getEcmaVersionIfUseEspree,\n    getEspreeFromUser,\n    getEspreeFromEcmaVersion,\n} from \"../common/espree\"\nimport type { ParserOptions } from \"../common/parser-options\"\nimport {\n    fixErrorLocation,\n    fixLocation,\n    fixLocations,\n} from \"../common/fix-locations\"\nimport {\n    DEFAULT_ECMA_VERSION,\n    getScriptSetupParserOptions,\n} from \"../script-setup/parser-options\"\nimport { isScriptSetupElement } from \"../common/ast-utils\"\nimport type { LinesAndColumns } from \"../common/lines-and-columns\"\nimport type { ParserObject } from \"../common/parser-object\"\nimport { isEnhancedParserObject, isParserObject } from \"../common/parser-object\"\n// eslint-disable-next-line node/no-extraneous-import -- ignore\nimport type { TSESTree } from \"@typescript-eslint/utils\"\nimport type { GenericProcessInfo } from \"./generic\"\nimport { extractGeneric } from \"./generic\"\n\n// [1] = aliases.\n// [2] = delimiter.\n// [3] = iterator.\nconst ALIAS_ITERATOR = /^([\\s\\S]*?(?:\\s|\\)))(\\bin\\b|\\bof\\b)([\\s\\S]*)$/u\nconst PARENS = /^(\\s*\\()([\\s\\S]*?)(\\)\\s*)$/u\nconst DUMMY_PARENT: any = {}\n\n// Like Vue, it judges whether it is a function expression or not.\n// https://github.com/vuejs/core/blob/fef2acb2049fce3407dff17fe8af1836b97dfd73/packages/compiler-core/src/transforms/vOn.ts#L19\nconst IS_FUNCTION_EXPRESSION =\n    /^\\s*([\\w$_]+|(async\\s*)?\\([^)]*?\\))\\s*(:[^=]+)?=>|^\\s*(async\\s+)?function(?:\\s+[\\w$]+)?\\s*\\(/u\n//        ^^^^^^^ omit paren argument                                 ^^^^^^^^ function keyword\n//                 ^^^^^ <--- async keyword (optional) ---> ^^^^^\n//                           ^^------^^ arguments with parens                       ^^^^^^ named function (optional)\n//                                         ^^^^^^^^^ return types (optional)\n//                                                  ^^ arrow                                   ^^ opening paren\n\nconst IS_SIMPLE_PATH =\n    /^[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*|\\['[^']*?'\\]|\\[\"[^\"]*?\"\\]|\\[\\d+\\]|\\[[A-Za-z_$][\\w$]*\\])*$/u\n\n/**\n * Parse the alias and iterator of 'v-for' directive values.\n * @param code The code to parse.\n * @returns The parsed result.\n */\nfunction processVForAliasAndIterator(code: string): {\n    aliases: string\n    hasParens: boolean\n    delimiter: string\n    iterator: string\n    aliasesWithBrackets: string\n} {\n    const match = ALIAS_ITERATOR.exec(code)\n    if (match != null) {\n        const aliases = match[1]\n        const parenMatch = PARENS.exec(aliases)\n        return {\n            aliases,\n            hasParens: Boolean(parenMatch),\n            aliasesWithBrackets: parenMatch\n                ? `${parenMatch[1].slice(0, -1)}[${\n                      parenMatch[2]\n                  }]${parenMatch[3].slice(1)}`\n                : `[${aliases.slice(0, -1)}]`,\n            delimiter: match[2] || \"\",\n            iterator: match[3],\n        }\n    }\n    return {\n        aliases: \"\",\n        hasParens: false,\n        aliasesWithBrackets: \"\",\n        delimiter: \"\",\n        iterator: code,\n    }\n}\n\n/**\n * Get the comma token before a given node.\n * @param tokens The token list.\n * @param node The node to get the comma before this node.\n * @returns The comma token.\n */\nfunction getCommaTokenBeforeNode(tokens: Token[], node: Node): Token | null {\n    let tokenIndex = sortedIndexBy(\n        tokens as { range: OffsetRange }[],\n        { range: node.range },\n        (t) => t.range[0],\n    )\n\n    while (tokenIndex >= 0) {\n        const token = tokens[tokenIndex]\n        if (token.type === \"Punctuator\" && token.value === \",\") {\n            return token\n        }\n        tokenIndex -= 1\n    }\n\n    return null\n}\n\n/**\n * Throw syntax error for empty.\n * @param locationCalculator The location calculator to get line/column.\n */\nfunction throwEmptyError(\n    locationCalculator: LocationCalculatorForHtml,\n    expected: string,\n): never {\n    const loc = locationCalculator.getLocation(0)\n    const err = new ParseError(\n        `Expected to be ${expected}, but got empty.`,\n        undefined,\n        0,\n        loc.line,\n        loc.column,\n    )\n    fixErrorLocation(err, locationCalculator)\n\n    throw err\n}\n\n/**\n * Throw syntax error for unexpected token.\n * @param locationCalculator The location calculator to get line/column.\n * @param name The token name.\n * @param token The token object to get that location.\n */\nfunction throwUnexpectedTokenError(name: string, token: HasLocation): never {\n    const err = new ParseError(\n        `Unexpected token '${name}'.`,\n        undefined,\n        token.range[0],\n        token.loc.start.line,\n        token.loc.start.column,\n    )\n\n    throw err\n}\n\n/**\n * Throw syntax error of outside of code.\n * @param locationCalculator The location calculator to get line/column.\n */\nfunction throwErrorAsAdjustingOutsideOfCode(\n    err: any,\n    code: string,\n    locationCalculator: LocationCalculatorForHtml,\n): never {\n    if (ParseError.isParseError(err)) {\n        const endOffset = locationCalculator.getOffsetWithGap(code.length)\n        if (err.index >= endOffset) {\n            err.message = \"Unexpected end of expression.\"\n        }\n    }\n\n    throw err\n}\n\n/**\n * Parse the given source code.\n *\n * @param code The source code to parse.\n * @param locationCalculator The location calculator for fixLocations.\n * @param parserOptions The parser options.\n * @returns The result of parsing.\n */\nexport function parseScriptFragment(\n    code: string,\n    locationCalculator: LocationCalculator,\n    parserOptions: ParserOptions,\n): ESLintExtendedProgram {\n    return parseScriptFragmentWithOption(\n        code,\n        locationCalculator,\n        parserOptions,\n    )\n}\n\n/**\n * Parse the given source code.\n *\n * @param code The source code to parse.\n * @param locationCalculator The location calculator for fixLocations.\n * @param parserOptions The parser options.\n * @param processOptions The process options.\n * @returns The result of parsing.\n */\nfunction parseScriptFragmentWithOption(\n    code: string,\n    locationCalculator: LocationCalculator,\n    parserOptions: ParserOptions,\n    processOptions?: {\n        preFixLocationProcess?: (result: ESLintExtendedProgram) => void\n    },\n): ESLintExtendedProgram {\n    try {\n        const result = parseScript(code, parserOptions)\n        processOptions?.preFixLocationProcess?.(result)\n        fixLocations(result, locationCalculator)\n        return result\n    } catch (err) {\n        const perr = ParseError.normalize(err)\n        if (perr) {\n            fixErrorLocation(perr, locationCalculator)\n            throw perr\n        }\n        throw err\n    }\n}\n\nconst validDivisionCharRE = /[\\w).+\\-_$\\]]/u\n\n/**\n * This is a fork of https://github.com/vuejs/vue/blob/2686818beb5728e3b7aa22f47a3b3f0d39d90c8e/src/compiler/parser/filter-parser.js\n * @param exp the expression to process filters.\n */\n//eslint-disable-next-line complexity\nfunction splitFilters(exp: string): string[] {\n    const result: string[] = []\n    let inSingle = false\n    let inDouble = false\n    let inTemplateString = false\n    let inRegex = false\n    let curly = 0\n    let square = 0\n    let paren = 0\n    let lastFilterIndex = 0\n    let c = 0\n    let prev = 0\n\n    for (let i = 0; i < exp.length; i++) {\n        prev = c\n        c = exp.charCodeAt(i)\n        if (inSingle) {\n            if (c === 0x27 && prev !== 0x5c) {\n                inSingle = false\n            }\n        } else if (inDouble) {\n            if (c === 0x22 && prev !== 0x5c) {\n                inDouble = false\n            }\n        } else if (inTemplateString) {\n            if (c === 0x60 && prev !== 0x5c) {\n                inTemplateString = false\n            }\n        } else if (inRegex) {\n            if (c === 0x2f && prev !== 0x5c) {\n                inRegex = false\n            }\n        } else if (\n            c === 0x7c && // pipe\n            exp.charCodeAt(i + 1) !== 0x7c &&\n            exp.charCodeAt(i - 1) !== 0x7c &&\n            !curly &&\n            !square &&\n            !paren\n        ) {\n            result.push(exp.slice(lastFilterIndex, i))\n            lastFilterIndex = i + 1\n        } else {\n            switch (c) {\n                case 0x22: // \"\n                    inDouble = true\n                    break\n                case 0x27: // '\n                    inSingle = true\n                    break\n                case 0x60: // `\n                    inTemplateString = true\n                    break\n                case 0x28: // (\n                    paren++\n                    break\n                case 0x29: // )\n                    paren--\n                    break\n                case 0x5b: // [\n                    square++\n                    break\n                case 0x5d: // ]\n                    square--\n                    break\n                case 0x7b: // {\n                    curly++\n                    break\n                case 0x7d: // }\n                    curly--\n                    break\n                // no default\n            }\n            if (c === 0x2f) {\n                // /\n                let j = i - 1\n                let p\n                // find first non-whitespace prev char\n                for (; j >= 0; j--) {\n                    p = exp.charAt(j)\n                    if (p !== \" \") {\n                        break\n                    }\n                }\n                if (!p || !validDivisionCharRE.test(p)) {\n                    inRegex = true\n                }\n            }\n        }\n    }\n\n    result.push(exp.slice(lastFilterIndex))\n\n    return result\n}\n\n/**\n * Parse the source code of inline scripts.\n * @param code The source code of inline scripts.\n * @param locationCalculator The location calculator for the inline script.\n * @param parserOptions The parser options.\n * @returns The result of parsing.\n */\nfunction parseExpressionBody(\n    code: string,\n    locationCalculator: LocationCalculatorForHtml,\n    parserOptions: ParserOptions,\n    allowEmpty = false,\n): ExpressionParseResult<ESLintExpression> {\n    debug('[script] parse expression: \"0(%s)\"', code)\n\n    try {\n        const result = parseScriptFragment(\n            `0(${code})`,\n            locationCalculator.getSubCalculatorShift(-2),\n            parserOptions,\n        )\n        const { ast } = result\n        const tokens = ast.tokens || []\n        const comments = ast.comments || []\n        const references = analyzeExternalReferences(result, parserOptions)\n        const statement = ast.body[0] as ESLintExpressionStatement\n        const callExpression = statement.expression as ESLintCallExpression\n        const expression = callExpression.arguments[0]\n\n        if (!allowEmpty && !expression) {\n            return throwEmptyError(locationCalculator, \"an expression\")\n        }\n        if (expression && expression.type === \"SpreadElement\") {\n            return throwUnexpectedTokenError(\"...\", expression)\n        }\n        if (callExpression.arguments[1]) {\n            const node = callExpression.arguments[1]\n            return throwUnexpectedTokenError(\n                \",\",\n                getCommaTokenBeforeNode(tokens, node) || node,\n            )\n        }\n\n        // Remove parens.\n        tokens.shift()\n        tokens.shift()\n        tokens.pop()\n\n        return { expression, tokens, comments, references, variables: [] }\n    } catch (err) {\n        return throwErrorAsAdjustingOutsideOfCode(err, code, locationCalculator)\n    }\n}\n\n/**\n * Parse the source code of inline scripts.\n * @param code The source code of inline scripts.\n * @param locationCalculator The location calculator for the inline script.\n * @param parserOptions The parser options.\n * @returns The result of parsing.\n */\nfunction parseFilter(\n    code: string,\n    locationCalculator: LocationCalculatorForHtml,\n    parserOptions: ParserOptions,\n): ExpressionParseResult<VFilter> | null {\n    debug('[script] parse filter: \"%s\"', code)\n\n    try {\n        const expression: VFilter = {\n            type: \"VFilter\",\n            parent: null as any,\n            range: [0, 0],\n            loc: {} as any,\n            callee: null as any,\n            arguments: [],\n        }\n        const tokens: Token[] = []\n        const comments: Token[] = []\n        const references: Reference[] = []\n\n        // Parse the callee.\n        const paren = code.indexOf(\"(\")\n        const calleeCode = paren === -1 ? code : code.slice(0, paren)\n        const argsCode = paren === -1 ? null : code.slice(paren)\n\n        // Parse the callee.\n        if (calleeCode.trim()) {\n            const spaces = /^\\s*/u.exec(calleeCode)![0]\n            const subCalculator = locationCalculator.getSubCalculatorShift(\n                spaces.length,\n            )\n            const { ast } = parseScriptFragment(\n                `\"${calleeCode.trim()}\"`,\n                subCalculator,\n                parserOptions,\n            )\n            const statement = ast.body[0] as ESLintExpressionStatement\n            const callee = statement.expression\n            if (callee.type !== \"Literal\") {\n                const { loc, range } = ast.tokens![0]\n                return throwUnexpectedTokenError('\"', {\n                    range: [range[1] - 1, range[1]],\n                    loc: {\n                        start: {\n                            line: loc.end.line,\n                            column: loc.end.column - 1,\n                        },\n                        end: loc.end,\n                    },\n                })\n            }\n\n            expression.callee = {\n                type: \"Identifier\",\n                parent: expression,\n                range: [\n                    callee.range[0],\n                    subCalculator.getOffsetWithGap(calleeCode.trim().length),\n                ],\n                loc: {\n                    start: callee.loc.start,\n                    end: subCalculator.getLocation(calleeCode.trim().length),\n                },\n                name: String(callee.value),\n            }\n            tokens.push({\n                type: \"Identifier\",\n                value: calleeCode.trim(),\n                range: expression.callee.range,\n                loc: expression.callee.loc,\n            })\n        } else {\n            return throwEmptyError(locationCalculator, \"a filter name\")\n        }\n\n        // Parse the arguments.\n        if (argsCode != null) {\n            const result = parseScriptFragment(\n                `0${argsCode}`,\n                locationCalculator\n                    .getSubCalculatorAfter(paren)\n                    .getSubCalculatorShift(-1),\n                parserOptions,\n            )\n            const { ast } = result\n            const statement = ast.body[0] as ESLintExpressionStatement\n            const callExpression = statement.expression\n\n            ast.tokens!.shift()\n\n            if (\n                callExpression.type !== \"CallExpression\" ||\n                callExpression.callee.type !== \"Literal\"\n            ) {\n                // Report the next token of `)`.\n                let nestCount = 1\n                for (const token of ast.tokens!.slice(1)) {\n                    if (nestCount === 0) {\n                        return throwUnexpectedTokenError(token.value, token)\n                    }\n                    if (token.type === \"Punctuator\" && token.value === \"(\") {\n                        nestCount += 1\n                    }\n                    if (token.type === \"Punctuator\" && token.value === \")\") {\n                        nestCount -= 1\n                    }\n                }\n\n                const token = last(ast.tokens)!\n                return throwUnexpectedTokenError(token.value, token)\n            }\n\n            for (const argument of callExpression.arguments) {\n                argument.parent = expression\n                expression.arguments.push(argument)\n            }\n            tokens.push(...ast.tokens!)\n            comments.push(...ast.comments!)\n            references.push(...analyzeExternalReferences(result, parserOptions))\n        }\n\n        // Update range.\n        const firstToken = tokens[0]\n        const lastToken = last(tokens)!\n        expression.range = [firstToken.range[0], lastToken.range[1]]\n        expression.loc = { start: firstToken.loc.start, end: lastToken.loc.end }\n\n        return { expression, tokens, comments, references, variables: [] }\n    } catch (err) {\n        return throwErrorAsAdjustingOutsideOfCode(err, code, locationCalculator)\n    }\n}\n\n/**\n * The result of parsing expressions.\n */\nexport interface ExpressionParseResult<T extends Node> {\n    expression: T | null\n    tokens: Token[]\n    comments: Token[]\n    references: Reference[]\n    variables: Variable[]\n}\n\nfunction loadParser(parser: string) {\n    if (parser !== \"espree\") {\n        // eslint-disable-next-line @typescript-eslint/no-require-imports\n        return require(parser)\n    }\n    return getEspreeFromUser()\n}\n\n/**\n * Parse the given source code.\n *\n * @param code The source code to parse.\n * @param parserOptions The parser options.\n * @returns The result of parsing.\n */\nexport function parseScript(\n    code: string,\n    parserOptions: ParserOptions,\n): ESLintExtendedProgram {\n    const parser: ParserObject =\n        typeof parserOptions.parser === \"string\"\n            ? loadParser(parserOptions.parser)\n            : isParserObject(parserOptions.parser)\n            ? parserOptions.parser\n            : getEspreeFromEcmaVersion(parserOptions.ecmaVersion)\n\n    const result: any = isEnhancedParserObject(parser)\n        ? parser.parseForESLint(code, parserOptions)\n        : parser.parse(code, parserOptions)\n\n    if (result.ast != null) {\n        return result\n    }\n    return { ast: result }\n}\n\n/**\n * Parse the source code of the given `<script>` element.\n * @param node The `<script>` element to parse.\n * @param sfcCode The source code of SFC.\n * @param linesAndColumns The lines and columns location calculator.\n * @param parserOptions The parser options.\n * @returns The result of parsing.\n */\nexport function parseScriptElement(\n    node: VElement,\n    sfcCode: string,\n    linesAndColumns: LinesAndColumns,\n    originalParserOptions: ParserOptions,\n): ESLintExtendedProgram {\n    const parserOptions: ParserOptions = isScriptSetupElement(node)\n        ? getScriptSetupParserOptions(originalParserOptions)\n        : {\n              ...originalParserOptions,\n              ecmaVersion:\n                  originalParserOptions.ecmaVersion || DEFAULT_ECMA_VERSION,\n          }\n\n    let generic: GenericProcessInfo | null = null\n    let code: string\n    let offset: number\n    const textNode = node.children[0]\n    if (textNode != null && textNode.type === \"VText\") {\n        const [scriptStartOffset, scriptEndOffset] = textNode.range\n        code = sfcCode.slice(scriptStartOffset, scriptEndOffset)\n        offset = scriptStartOffset\n        generic = extractGeneric(node)\n        if (generic) {\n            const defineTypesCode = `${generic.defineTypes\n                .map((e) => e.define)\n                .join(\";\")};\\n`\n            code = defineTypesCode + code\n            offset -= defineTypesCode.length\n        }\n    } else {\n        code = \"\"\n        offset = node.startTag.range[1]\n    }\n    const locationCalculator =\n        linesAndColumns.createOffsetLocationCalculator(offset)\n    const result = parseScriptFragment(code, locationCalculator, parserOptions)\n    if (generic) {\n        generic.postprocess({\n            result,\n            isRemoveTarget(nodeOrToken) {\n                return nodeOrToken.range[1] <= textNode.range[0]\n            },\n            getTypeDefScope(scopeManager) {\n                return (\n                    scopeManager.globalScope.childScopes.find(\n                        (s) => s.type === \"module\",\n                    ) ?? scopeManager.globalScope\n                )\n            },\n        })\n        const startToken = [\n            result.ast.body[0],\n            result.ast.tokens?.[0],\n            result.ast.comments?.[0],\n        ]\n            .filter((e): e is NonNullable<typeof e> => Boolean(e))\n            .sort((a, b) => a.range[0] - b.range[0])\n            .find((t) => Boolean(t))\n\n        // Restore Program node location\n        if (startToken && result.ast.range[0] !== startToken.range[0]) {\n            result.ast.range[0] = startToken.range[0]\n            if (result.ast.start != null) {\n                result.ast.start = startToken.start\n            }\n            result.ast.loc.start = { ...startToken.loc.start }\n        }\n    }\n    // Needs the tokens of start/end tags for `lines-around-*` rules to work\n    // correctly.\n    if (result.ast.tokens != null) {\n        const startTag = node.startTag\n        const endTag = node.endTag\n\n        result.ast.tokens.unshift({\n            type: \"Punctuator\",\n            range: startTag.range,\n            loc: startTag.loc,\n            value: \"<script>\",\n        })\n        if (endTag != null) {\n            result.ast.tokens.push({\n                type: \"Punctuator\",\n                range: endTag.range,\n                loc: endTag.loc,\n                value: \"</script>\",\n            })\n        }\n    }\n\n    return result\n}\n\n/**\n * Parse the source code of inline scripts.\n * @param code The source code of inline scripts.\n * @param locationCalculator The location calculator for the inline script.\n * @param parserOptions The parser options.\n * @returns The result of parsing.\n */\nexport function parseExpression(\n    code: string,\n    locationCalculator: LocationCalculatorForHtml,\n    parserOptions: ParserOptions,\n    { allowEmpty = false, allowFilters = false } = {},\n): ExpressionParseResult<ESLintExpression | VFilterSequenceExpression> {\n    debug('[script] parse expression: \"%s\"', code)\n\n    const [mainCode, ...filterCodes] =\n        allowFilters && (parserOptions.vueFeatures?.filter ?? true)\n            ? splitFilters(code)\n            : [code]\n    if (filterCodes.length === 0) {\n        return parseExpressionBody(\n            code,\n            locationCalculator,\n            parserOptions,\n            allowEmpty,\n        )\n    }\n\n    // Parse expression\n    const retB = parseExpressionBody(\n        mainCode,\n        locationCalculator,\n        parserOptions,\n    )\n    if (!retB.expression) {\n        return retB\n    }\n    const ret =\n        retB as unknown as ExpressionParseResult<VFilterSequenceExpression>\n\n    ret.expression = {\n        type: \"VFilterSequenceExpression\",\n        parent: null as any,\n        expression: retB.expression,\n        filters: [],\n        range: retB.expression.range.slice(0) as [number, number],\n        loc: Object.assign({}, retB.expression.loc),\n    }\n    ret.expression.expression.parent = ret.expression\n\n    // Parse filters\n    let prevLoc = mainCode.length\n    for (const filterCode of filterCodes) {\n        // Pipe token.\n        ret.tokens.push(\n            fixLocation(\n                {\n                    type: \"Punctuator\",\n                    value: \"|\",\n                    range: [prevLoc, prevLoc + 1],\n                    loc: {} as any,\n                },\n                locationCalculator,\n            ),\n        )\n\n        // Parse a filter\n        const retF = parseFilter(\n            filterCode,\n            locationCalculator.getSubCalculatorShift(prevLoc + 1),\n            parserOptions,\n        )\n        if (retF) {\n            if (retF.expression) {\n                ret.expression.filters.push(retF.expression)\n                retF.expression.parent = ret.expression\n            }\n            ret.tokens.push(...retF.tokens)\n            ret.comments.push(...retF.comments)\n            ret.references.push(...retF.references)\n        }\n\n        prevLoc += 1 + filterCode.length\n    }\n\n    // Update range.\n    const lastToken = last(ret.tokens)!\n    ret.expression.range[1] = lastToken.range[1]\n    ret.expression.loc.end = lastToken.loc.end\n\n    return ret\n}\n\n/**\n * Parse the source code of inline scripts.\n * @param code The source code of inline scripts.\n * @param locationCalculator The location calculator for the inline script.\n * @param parserOptions The parser options.\n * @returns The result of parsing.\n */\n// eslint-disable-next-line complexity\nexport function parseVForExpression(\n    code: string,\n    locationCalculator: LocationCalculatorForHtml,\n    parserOptions: ParserOptions,\n): ExpressionParseResult<VForExpression> {\n    if (code.trim() === \"\") {\n        throwEmptyError(locationCalculator, \"'<alias> in <expression>'\")\n    }\n\n    if (isEcmaVersion5(parserOptions)) {\n        return parseVForExpressionForEcmaVersion5(\n            code,\n            locationCalculator,\n            parserOptions,\n        )\n    }\n    const processed = processVForAliasAndIterator(code)\n\n    if (!processed.aliases.trim()) {\n        return throwEmptyError(locationCalculator, \"an alias\")\n    }\n    try {\n        debug(\n            '[script] parse v-for expression: \"for(%s%s%s);\"',\n            processed.aliasesWithBrackets,\n            processed.delimiter,\n            processed.iterator,\n        )\n\n        const result = parseScriptFragment(\n            `for(let ${processed.aliasesWithBrackets}${processed.delimiter}${processed.iterator});`,\n            locationCalculator.getSubCalculatorShift(\n                processed.hasParens ? -8 : -9,\n            ),\n            parserOptions,\n        )\n        const { ast } = result\n        const tokens = ast.tokens || []\n        const comments = ast.comments || []\n        const scope = analyzeVariablesAndExternalReferences(\n            result,\n            \"v-for\",\n            parserOptions,\n        )\n        const references = scope.references\n        const variables = scope.variables\n        const statement = ast.body[0] as\n            | ESLintForInStatement\n            | ESLintForOfStatement\n        const varDecl = statement.left as ESLintVariableDeclaration\n        const id = varDecl.declarations[0].id as ESLintArrayPattern\n        const left = id.elements\n        const right = statement.right\n\n        if (!processed.hasParens && !left.length) {\n            return throwEmptyError(locationCalculator, \"an alias\")\n        }\n        // Remove `for` `(` `let` `)` `;`.\n        tokens.shift()\n        tokens.shift()\n        tokens.shift()\n        tokens.pop()\n        tokens.pop()\n\n        const closeOffset = statement.left.range[1] - 1\n        const closeIndex = tokens.findIndex((t) => t.range[0] === closeOffset)\n\n        if (processed.hasParens) {\n            // Restore parentheses from array brackets.\n            const open = tokens[0]\n            if (open != null) {\n                open.value = \"(\"\n            }\n            const close = tokens[closeIndex]\n            if (close != null) {\n                close.value = \")\"\n            }\n        } else {\n            // Remove array brackets.\n            tokens.splice(closeIndex, 1)\n            tokens.shift()\n        }\n        const firstToken = tokens[0] || statement.left\n        const lastToken = tokens[tokens.length - 1] || statement.right\n        const expression: VForExpression = {\n            type: \"VForExpression\",\n            range: [firstToken.range[0], lastToken.range[1]],\n            loc: { start: firstToken.loc.start, end: lastToken.loc.end },\n            parent: DUMMY_PARENT,\n            left,\n            right,\n        }\n\n        // Modify parent.\n        for (const l of left) {\n            if (l != null) {\n                l.parent = expression\n            }\n        }\n        right.parent = expression\n\n        return { expression, tokens, comments, references, variables }\n    } catch (err) {\n        return throwErrorAsAdjustingOutsideOfCode(err, code, locationCalculator)\n    }\n}\n\nfunction isEcmaVersion5(parserOptions: ParserOptions) {\n    const ecmaVersion = getEcmaVersionIfUseEspree(parserOptions)\n    return ecmaVersion != null && ecmaVersion <= 5\n}\n\nfunction parseVForExpressionForEcmaVersion5(\n    code: string,\n    locationCalculator: LocationCalculatorForHtml,\n    parserOptions: ParserOptions,\n): ExpressionParseResult<VForExpression> {\n    const processed = processVForAliasAndIterator(code)\n\n    if (!processed.aliases.trim()) {\n        return throwEmptyError(locationCalculator, \"an alias\")\n    }\n    try {\n        const tokens: Token[] = []\n        const comments: Token[] = []\n\n        const parsedAliases = parseVForAliasesForEcmaVersion5(\n            processed.aliasesWithBrackets,\n            locationCalculator.getSubCalculatorShift(\n                processed.hasParens ? 0 : -1,\n            ),\n            parserOptions,\n        )\n\n        if (processed.hasParens) {\n            // Restore parentheses from array brackets.\n            const open = parsedAliases.tokens[0]\n            if (open != null) {\n                open.value = \"(\"\n            }\n            const close = last(parsedAliases.tokens)\n            if (close != null) {\n                close.value = \")\"\n            }\n        } else {\n            // Remove array brackets.\n            parsedAliases.tokens.shift()\n            parsedAliases.tokens.pop()\n        }\n        tokens.push(...parsedAliases.tokens)\n        comments.push(...parsedAliases.comments)\n        const { left, variables } = parsedAliases\n\n        if (!processed.hasParens && !left.length) {\n            return throwEmptyError(locationCalculator, \"an alias\")\n        }\n\n        const delimiterStart = processed.aliases.length\n        const delimiterEnd = delimiterStart + processed.delimiter.length\n        tokens.push(\n            fixLocation(\n                {\n                    type:\n                        processed.delimiter === \"in\" ? \"Keyword\" : \"Identifier\",\n                    value: processed.delimiter,\n                    start: delimiterStart,\n                    end: delimiterEnd,\n                    loc: {} as any,\n                    range: [delimiterStart, delimiterEnd],\n                } as Token,\n                locationCalculator,\n            ),\n        )\n\n        const parsedIterator = parseVForIteratorForEcmaVersion5(\n            processed.iterator,\n            locationCalculator.getSubCalculatorShift(delimiterEnd),\n            parserOptions,\n        )\n\n        tokens.push(...parsedIterator.tokens)\n        comments.push(...parsedIterator.comments)\n        const { right, references } = parsedIterator\n        const firstToken = tokens[0]\n        const lastToken = last(tokens) || firstToken\n        const expression: VForExpression = {\n            type: \"VForExpression\",\n            range: [firstToken.range[0], lastToken.range[1]],\n            loc: { start: firstToken.loc.start, end: lastToken.loc.end },\n            parent: DUMMY_PARENT,\n            left,\n            right,\n        }\n\n        // Modify parent.\n        for (const l of left) {\n            if (l != null) {\n                l.parent = expression\n            }\n        }\n        right.parent = expression\n\n        return { expression, tokens, comments, references, variables }\n    } catch (err) {\n        return throwErrorAsAdjustingOutsideOfCode(err, code, locationCalculator)\n    }\n}\n\nfunction parseVForAliasesForEcmaVersion5(\n    code: string,\n    locationCalculator: LocationCalculatorForHtml,\n    parserOptions: ParserOptions,\n) {\n    const result = parseScriptFragment(\n        `0(${code})`,\n        locationCalculator.getSubCalculatorShift(-2),\n        parserOptions,\n    )\n    const { ast } = result\n    const tokens = ast.tokens || []\n    const comments = ast.comments || []\n    const variables = analyzeExternalReferences(result, parserOptions).map(\n        transformVariable,\n    )\n\n    const statement = ast.body[0] as ESLintExpressionStatement\n    const callExpression = statement.expression as ESLintCallExpression\n    const expression = callExpression.arguments[0] as ESLintArrayExpression\n\n    const left: ESLintIdentifier[] = expression.elements.filter(\n        (e): e is ESLintIdentifier => {\n            if (e == null || e.type === \"Identifier\") {\n                return true\n            }\n            const errorToken = tokens.find(\n                (t) => e.range[0] <= t.range[0] && t.range[1] <= e.range[1],\n            )!\n            return throwUnexpectedTokenError(errorToken.value, errorToken)\n        },\n    )\n    // Remove parens.\n    tokens.shift()\n    tokens.shift()\n    tokens.pop()\n\n    return { left, tokens, comments, variables }\n\n    function transformVariable(reference: Reference): Variable {\n        const ret: Variable = {\n            id: reference.id,\n            kind: \"v-for\",\n            references: [],\n        }\n        Object.defineProperty(ret, \"references\", { enumerable: false })\n\n        return ret\n    }\n}\n\nfunction parseVForIteratorForEcmaVersion5(\n    code: string,\n    locationCalculator: LocationCalculatorForHtml,\n    parserOptions: ParserOptions,\n) {\n    const result = parseScriptFragment(\n        `0(${code})`,\n        locationCalculator.getSubCalculatorShift(-2),\n        parserOptions,\n    )\n    const { ast } = result\n    const tokens = ast.tokens || []\n    const comments = ast.comments || []\n    const references = analyzeExternalReferences(result, parserOptions)\n\n    const statement = ast.body[0] as ESLintExpressionStatement\n    const callExpression = statement.expression as ESLintCallExpression\n    const expression = callExpression.arguments[0]\n\n    if (!expression) {\n        return throwEmptyError(locationCalculator, \"an expression\")\n    }\n    if (expression && expression.type === \"SpreadElement\") {\n        return throwUnexpectedTokenError(\"...\", expression)\n    }\n    const right = expression\n\n    // Remove parens.\n    tokens.shift()\n    tokens.shift()\n    tokens.pop()\n    return { right, tokens, comments, references }\n}\n\n/**\n * Parse the source code of inline scripts.\n * @param code The source code of inline scripts.\n * @param locationCalculator The location calculator for the inline script.\n * @param parserOptions The parser options.\n * @returns The result of parsing.\n */\nexport function parseVOnExpression(\n    code: string,\n    locationCalculator: LocationCalculatorForHtml,\n    parserOptions: ParserOptions,\n): ExpressionParseResult<ESLintExpression | VOnExpression> {\n    if (IS_FUNCTION_EXPRESSION.test(code) || IS_SIMPLE_PATH.test(code)) {\n        return parseExpressionBody(code, locationCalculator, parserOptions)\n    }\n    return parseVOnExpressionBody(code, locationCalculator, parserOptions)\n}\n\n/**\n * Parse the source code of inline scripts.\n * @param code The source code of inline scripts.\n * @param locationCalculator The location calculator for the inline script.\n * @param parserOptions The parser options.\n * @returns The result of parsing.\n */\nfunction parseVOnExpressionBody(\n    code: string,\n    locationCalculator: LocationCalculatorForHtml,\n    parserOptions: ParserOptions,\n): ExpressionParseResult<VOnExpression> {\n    debug('[script] parse v-on expression: \"void function($event){%s}\"', code)\n\n    if (code.trim() === \"\") {\n        throwEmptyError(locationCalculator, \"statements\")\n    }\n\n    try {\n        const result = parseScriptFragment(\n            `void function($event){${code}}`,\n            locationCalculator.getSubCalculatorShift(-22),\n            parserOptions,\n        )\n        const { ast } = result\n        const references = analyzeExternalReferences(result, parserOptions)\n        const outermostStatement = ast.body[0] as ESLintExpressionStatement\n        const functionDecl = (\n            outermostStatement.expression as ESLintUnaryExpression\n        ).argument as ESLintFunctionExpression\n        const block = functionDecl.body\n        const body = block.body\n        const firstStatement = first(body)\n        const lastStatement = last(body)\n        const expression: VOnExpression = {\n            type: \"VOnExpression\",\n            range: [\n                firstStatement != null\n                    ? firstStatement.range[0]\n                    : block.range[0] + 1,\n                lastStatement != null\n                    ? lastStatement.range[1]\n                    : block.range[1] - 1,\n            ],\n            loc: {\n                start:\n                    firstStatement != null\n                        ? firstStatement.loc.start\n                        : locationCalculator.getLocation(1),\n                end:\n                    lastStatement != null\n                        ? lastStatement.loc.end\n                        : locationCalculator.getLocation(code.length + 1),\n            },\n            parent: DUMMY_PARENT,\n            body,\n        }\n        const tokens = ast.tokens || []\n        const comments = ast.comments || []\n\n        // Modify parent.\n        for (const b of body) {\n            b.parent = expression\n        }\n\n        // Remove braces.\n        tokens.splice(0, 6)\n        tokens.pop()\n\n        return { expression, tokens, comments, references, variables: [] }\n    } catch (err) {\n        return throwErrorAsAdjustingOutsideOfCode(err, code, locationCalculator)\n    }\n}\n\n/**\n * Parse the source code of `slot-scope` directive.\n * @param code The source code of `slot-scope` directive.\n * @param locationCalculator The location calculator for the inline script.\n * @param parserOptions The parser options.\n * @returns The result of parsing.\n */\nexport function parseSlotScopeExpression(\n    code: string,\n    locationCalculator: LocationCalculatorForHtml,\n    parserOptions: ParserOptions,\n): ExpressionParseResult<VSlotScopeExpression> {\n    debug('[script] parse slot-scope expression: \"void function(%s) {}\"', code)\n\n    if (code.trim() === \"\") {\n        throwEmptyError(\n            locationCalculator,\n            \"an identifier or an array/object pattern\",\n        )\n    }\n\n    try {\n        const result = parseScriptFragment(\n            `void function(${code}) {}`,\n            locationCalculator.getSubCalculatorShift(-14),\n            parserOptions,\n        )\n        const { ast } = result\n        const statement = ast.body[0] as ESLintExpressionStatement\n        const rawExpression = statement.expression as ESLintUnaryExpression\n        const functionDecl = rawExpression.argument as ESLintFunctionExpression\n        const params = functionDecl.params\n\n        if (params.length === 0) {\n            return {\n                expression: null,\n                tokens: [],\n                comments: [],\n                references: [],\n                variables: [],\n            }\n        }\n\n        const tokens = ast.tokens || []\n        const comments = ast.comments || []\n        const scope = analyzeVariablesAndExternalReferences(\n            result,\n            \"scope\",\n            parserOptions,\n        )\n        const references = scope.references\n        const variables = scope.variables\n        const firstParam = first(params)!\n        const lastParam = last(params)!\n        const expression: VSlotScopeExpression = {\n            type: \"VSlotScopeExpression\",\n            range: [firstParam.range[0], lastParam.range[1]],\n            loc: { start: firstParam.loc.start, end: lastParam.loc.end },\n            parent: DUMMY_PARENT,\n            params: functionDecl.params,\n        }\n\n        // Modify parent.\n        for (const param of params) {\n            param.parent = expression\n        }\n\n        // Remove `void` `function` `(` `)` `{` `}`.\n        tokens.shift()\n        tokens.shift()\n        tokens.shift()\n        tokens.pop()\n        tokens.pop()\n        tokens.pop()\n\n        return { expression, tokens, comments, references, variables }\n    } catch (err) {\n        return throwErrorAsAdjustingOutsideOfCode(err, code, locationCalculator)\n    }\n}\n\n/**\n * Parse the source code of `generic` directive.\n * @param code The source code of `generic` directive.\n * @param locationCalculator The location calculator for the inline script.\n * @param parserOptions The parser options.\n * @returns The result of parsing.\n */\nexport function parseGenericExpression(\n    code: string,\n    locationCalculator: LocationCalculatorForHtml,\n    parserOptions: ParserOptions,\n): ExpressionParseResult<VGenericExpression> {\n    debug('[script] parse generic definition: \"void function<%s>() {}\"', code)\n\n    if (code.trim() === \"\") {\n        throwEmptyError(locationCalculator, \"a type parameter\")\n    }\n\n    function getParams(result: ESLintExtendedProgram) {\n        const { ast } = result\n        const statement = ast.body[0] as ESLintExpressionStatement\n        const rawExpression = statement.expression as ESLintUnaryExpression\n        const classDecl = rawExpression.argument as ESLintFunctionExpression\n        const typeParameters = (classDecl as TSESTree.FunctionExpression)\n            .typeParameters\n        return typeParameters?.params\n    }\n\n    try {\n        const rawParams: string[] = []\n        const scriptLet = `void function<${code}>(){}`\n        const result = parseScriptFragmentWithOption(\n            scriptLet,\n            locationCalculator.getSubCalculatorShift(-14),\n            { ...parserOptions, project: undefined },\n            {\n                preFixLocationProcess(preResult) {\n                    const params = getParams(preResult)\n                    if (params) {\n                        for (const param of params) {\n                            rawParams.push(\n                                scriptLet.slice(param.range[0], param.range[1]),\n                            )\n                        }\n                    }\n                },\n            },\n        )\n        const { ast } = result\n        const params = getParams(result)\n\n        if (!params || params.length === 0) {\n            return {\n                expression: null,\n                tokens: [],\n                comments: [],\n                references: [],\n                variables: [],\n            }\n        }\n\n        const tokens = ast.tokens || []\n        const comments = ast.comments || []\n        const scope = analyzeVariablesAndExternalReferences(\n            result,\n            \"generic\",\n            parserOptions,\n        )\n        const references = scope.references\n        const variables = scope.variables\n        const firstParam = first(params)!\n        const lastParam = last(params)!\n        const expression: VGenericExpression = {\n            type: \"VGenericExpression\",\n            range: [firstParam.range[0], lastParam.range[1]],\n            loc: { start: firstParam.loc.start, end: lastParam.loc.end },\n            parent: DUMMY_PARENT,\n            params,\n            rawParams,\n        }\n\n        // Modify parent.\n        for (const param of params) {\n            ;(param as any).parent = expression\n        }\n\n        // Remove `void` `function` `<` `>` `(` `)` `{` `}`.\n        tokens.shift()\n        tokens.shift()\n        tokens.shift()\n        tokens.pop()\n        tokens.pop()\n        tokens.pop()\n        tokens.pop()\n        tokens.pop()\n\n        return { expression, tokens, comments, references, variables }\n    } catch (err) {\n        return throwErrorAsAdjustingOutsideOfCode(err, code, locationCalculator)\n    }\n}\n","import sortedIndexBy from \"lodash/sortedIndexBy\"\nimport sortedLastIndexBy from \"lodash/sortedLastIndexBy\"\nimport type { LocationRange, Token, VDocumentFragment } from \"../ast\"\nimport type { LinesAndColumns } from \"./lines-and-columns\"\n\ninterface HasRange {\n    range: [number, number]\n}\n/**\n * Replace the tokens in the given range.\n * @param document The document that the node is belonging to.\n * @param node The node to specify the range of replacement.\n * @param newTokens The new tokens.\n */\nexport function replaceTokens(\n    document: VDocumentFragment | null,\n    node: HasRange,\n    newTokens: Token[],\n): void {\n    if (document == null) {\n        return\n    }\n\n    const index = sortedIndexBy(document.tokens, node, byRange0)\n    const count = sortedLastIndexBy(document.tokens, node, byRange1) - index\n    document.tokens.splice(index, count, ...newTokens)\n}\n\n/**\n * Replace and split the tokens in the given range.\n * @param document The document that the node is belonging to.\n * @param node The node to specify the range of replacement.\n * @param newTokens The new tokens.\n */\nexport function replaceAndSplitTokens(\n    document: VDocumentFragment | null,\n    node: HasRange & {\n        loc: LocationRange\n    },\n    newTokens: Token[],\n): void {\n    if (document == null) {\n        return\n    }\n\n    const index = sortedIndexBy(document.tokens, node, byRange0)\n    if (\n        document.tokens.length === index ||\n        node.range[0] < document.tokens[index].range[0]\n    ) {\n        // split\n        const beforeToken = document.tokens[index - 1]\n        const value = beforeToken.value\n        const splitOffset = node.range[0] - beforeToken.range[0]\n        const afterToken: Token = {\n            type: beforeToken.type,\n            range: [node.range[0], beforeToken.range[1]],\n            loc: {\n                start: { ...node.loc.start },\n                end: { ...beforeToken.loc.end },\n            },\n            value: value.slice(splitOffset),\n        }\n        beforeToken.range[1] = node.range[0]\n        beforeToken.loc.end = { ...node.loc.start }\n        beforeToken.value = value.slice(0, splitOffset)\n        document.tokens.splice(index, 0, afterToken)\n    }\n    let lastIndex = sortedLastIndexBy(document.tokens, node, byRange1)\n    if (\n        lastIndex === 0 ||\n        node.range[1] < document.tokens[lastIndex].range[1]\n    ) {\n        // split\n        const beforeToken = document.tokens[lastIndex]\n        const value = beforeToken.value\n        const splitOffset =\n            beforeToken.range[1] -\n            beforeToken.range[0] -\n            (beforeToken.range[1] - node.range[1])\n        const afterToken: Token = {\n            type: beforeToken.type,\n            range: [node.range[1], beforeToken.range[1]],\n            loc: {\n                start: { ...node.loc.end },\n                end: { ...beforeToken.loc.end },\n            },\n            value: value.slice(splitOffset),\n        }\n        beforeToken.range[1] = node.range[1]\n        beforeToken.loc.end = { ...node.loc.end }\n        beforeToken.value = value.slice(0, splitOffset)\n        document.tokens.splice(lastIndex + 1, 0, afterToken)\n        lastIndex++\n    }\n    const count = lastIndex - index\n    document.tokens.splice(index, count, ...newTokens)\n}\n\n/**\n * Insert the given comment tokens.\n * @param document The document that the node is belonging to.\n * @param newComments The comments to insert.\n */\nexport function insertComments(\n    document: VDocumentFragment | null,\n    newComments: Token[],\n): void {\n    if (document == null || newComments.length === 0) {\n        return\n    }\n\n    const index = sortedIndexBy(document.comments, newComments[0], byRange0)\n    document.comments.splice(index, 0, ...newComments)\n}\n\n/**\n * Create a simple token.\n * @param type The type of new token.\n * @param start The offset of the start position of new token.\n * @param end The offset of the end position of new token.\n * @param value The value of new token.\n * @returns The new token.\n */\nexport function createSimpleToken(\n    type: string,\n    start: number,\n    end: number,\n    value: string,\n    linesAndColumns: LinesAndColumns,\n): Token {\n    return {\n        type,\n        range: [start, end],\n        loc: {\n            start: linesAndColumns.getLocFromIndex(start),\n            end: linesAndColumns.getLocFromIndex(end),\n        },\n        value,\n    }\n}\n\n/**\n * Get `x.range[0]`.\n * @param x The object to get.\n * @returns `x.range[0]`.\n */\nfunction byRange0(x: HasRange): number {\n    return x.range[0]\n}\n\n/**\n * Get `x.range[1]`.\n * @param x The object to get.\n * @returns `x.range[1]`.\n */\nfunction byRange1(x: HasRange): number {\n    return x.range[1]\n}\n","import type { ParseError, VDocumentFragment } from \"../ast\"\nimport sortedIndexBy from \"lodash/sortedIndexBy\"\n/**\n * Insert the given error.\n * @param document The document that the node is belonging to.\n * @param error The error to insert.\n */\nexport function insertError(\n    document: VDocumentFragment | null,\n    error: ParseError,\n): void {\n    if (document == null) {\n        return\n    }\n\n    const index = sortedIndexBy(document.errors, error, byIndex)\n    document.errors.splice(index, 0, error)\n}\n\n/**\n * Get `x.pos`.\n * @param x The object to get.\n * @returns `x.pos`.\n */\nfunction byIndex(x: ParseError): number {\n    return x.index\n}\n","/**\n * @see https://github.com/vuejs/vue-next/blob/48de8a42b7fed7a03f7f1ff5d53d6a704252cafe/packages/shared/src/index.ts#L109\n */\nexport function camelize(str: string) {\n    return str.replace(/-(\\w)/gu, (_, c) => (c ? c.toUpperCase() : \"\"))\n}\n","/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * @copyright 2017 Toru Nagashima. All rights reserved.\n * See LICENSE file in root directory for full license.\n */\nimport type { ParserOptions } from \"../common/parser-options\"\nimport { isSFCFile } from \"../common/parser-options\"\nimport type {\n    ESLintExpression,\n    ESLintExtendedProgram,\n    ESLintIdentifier,\n    Reference,\n    Token,\n    VAttribute,\n    VDirective,\n    VDirectiveKey,\n    VDocumentFragment,\n    VElement,\n    VExpressionContainer,\n    VFilterSequenceExpression,\n    VForExpression,\n    VGenericExpression,\n    VIdentifier,\n    VLiteral,\n    VNode,\n    VOnExpression,\n    VSlotScopeExpression,\n} from \"../ast\"\nimport { ParseError } from \"../ast\"\nimport { debug } from \"../common/debug\"\nimport type { LocationCalculatorForHtml } from \"../common/location-calculator\"\nimport type { ExpressionParseResult } from \"../script\"\nimport {\n    parseExpression,\n    parseVForExpression,\n    parseVOnExpression,\n    parseSlotScopeExpression,\n    parseGenericExpression,\n    parseScriptFragment,\n} from \"../script\"\nimport {\n    createSimpleToken,\n    insertComments,\n    replaceTokens,\n} from \"../common/token-utils\"\nimport {\n    getOwnerDocument,\n    isScriptSetupElement,\n    isTSLang,\n} from \"../common/ast-utils\"\nimport { insertError } from \"../common/error-utils\"\nimport { camelize } from \"../utils/utils\"\n\nconst shorthandSign = /^[.:@#]/u\nconst shorthandNameMap = { \":\": \"bind\", \".\": \"bind\", \"@\": \"on\", \"#\": \"slot\" }\nconst invalidDynamicArgumentNextChar = /^[\\s\\r\\n=/>]$/u\n\n/**\n * Gets the tag name from the given node or token.\n * For SFC, it returns the value of `rawName` to be case sensitive.\n */\nfunction getTagName(\n    startTagOrElement: { name: string; rawName: string },\n    isSFC: boolean,\n) {\n    return isSFC ? startTagOrElement.rawName : startTagOrElement.name\n}\n\n/**\n * Parse the given attribute name as a directive key.\n * @param node The identifier node to parse.\n * @param document The document to add parsing errors.\n * @returns The directive key node.\n */\nfunction parseDirectiveKeyStatically(\n    node: VIdentifier,\n    document: VDocumentFragment | null,\n): VDirectiveKey {\n    const {\n        name: text,\n        rawName: rawText,\n        range: [offset],\n        loc: {\n            start: { column, line },\n        },\n    } = node\n    const directiveKey: VDirectiveKey = {\n        type: \"VDirectiveKey\",\n        range: node.range,\n        loc: node.loc,\n        parent: node.parent as any,\n        name: null as any,\n        argument: null as VIdentifier | null,\n        modifiers: [] as VIdentifier[],\n    }\n    let i = 0\n\n    function createIdentifier(\n        start: number,\n        end: number,\n        name?: string,\n    ): VIdentifier {\n        return {\n            type: \"VIdentifier\",\n            parent: directiveKey,\n            range: [offset + start, offset + end],\n            loc: {\n                start: { column: column + start, line },\n                end: { column: column + end, line },\n            },\n            name: name || text.slice(start, end),\n            rawName: rawText.slice(start, end),\n        }\n    }\n\n    // Parse.\n    if (shorthandSign.test(text)) {\n        const sign = text[0] as \":\" | \".\" | \"@\" | \"#\"\n        directiveKey.name = createIdentifier(0, 1, shorthandNameMap[sign])\n        i = 1\n    } else {\n        const colon = text.indexOf(\":\")\n        if (colon !== -1) {\n            directiveKey.name = createIdentifier(0, colon)\n            i = colon + 1\n        }\n    }\n\n    if (directiveKey.name != null && text[i] === \"[\") {\n        // Dynamic argument.\n        const len = text.slice(i).lastIndexOf(\"]\")\n        if (len !== -1) {\n            directiveKey.argument = createIdentifier(i, i + len + 1)\n            i = i + len + 1 + (text[i + len + 1] === \".\" ? 1 : 0)\n        }\n    }\n\n    const modifiers = text\n        .slice(i)\n        .split(\".\")\n        .map((modifierName) => {\n            const modifier = createIdentifier(i, i + modifierName.length)\n            if (modifierName === \"\" && i < text.length) {\n                insertError(\n                    document,\n                    new ParseError(\n                        `Unexpected token '${text[i]}'`,\n                        undefined,\n                        offset + i,\n                        line,\n                        column + i,\n                    ),\n                )\n            }\n            i += modifierName.length + 1\n            return modifier\n        })\n\n    if (directiveKey.name == null) {\n        directiveKey.name = modifiers.shift()!\n    } else if (directiveKey.argument == null && modifiers[0].name !== \"\") {\n        directiveKey.argument = modifiers.shift() || null\n    }\n    directiveKey.modifiers = modifiers.filter(isNotEmptyModifier)\n\n    if (directiveKey.name.name === \"v-\") {\n        insertError(\n            document,\n            new ParseError(\n                `Unexpected token '${\n                    text[directiveKey.name.range[1] - offset]\n                }'`,\n                undefined,\n                directiveKey.name.range[1],\n                directiveKey.name.loc.end.line,\n                directiveKey.name.loc.end.column,\n            ),\n        )\n    }\n\n    // v-bind.prop shorthand\n    if (\n        directiveKey.name.rawName === \".\" &&\n        !directiveKey.modifiers.some(isPropModifier)\n    ) {\n        const pos =\n            (directiveKey.argument || directiveKey.name).range[1] - offset\n        const propModifier = createIdentifier(pos, pos, \"prop\")\n        directiveKey.modifiers.unshift(propModifier)\n    }\n\n    return directiveKey\n}\n\n/**\n * Check whether a given identifier node is `prop` or not.\n * @param node The identifier node to check.\n */\nfunction isPropModifier(node: VIdentifier): boolean {\n    return node.name === \"prop\"\n}\n\n/**\n * Check whether a given identifier node is empty or not.\n * @param node The identifier node to check.\n */\nfunction isNotEmptyModifier(node: VIdentifier): boolean {\n    return node.name !== \"\"\n}\n\n/**\n * Parse the tokens of a given key node.\n * @param node The key node to parse.\n */\nfunction parseDirectiveKeyTokens(node: VDirectiveKey): Token[] {\n    const { name, argument, modifiers } = node\n    const shorthand = name.range[1] - name.range[0] === 1\n    const tokens: Token[] = []\n\n    if (shorthand) {\n        tokens.push({\n            type: \"Punctuator\",\n            range: name.range,\n            loc: name.loc,\n            value: name.rawName,\n        })\n    } else {\n        tokens.push({\n            type: \"HTMLIdentifier\",\n            range: name.range,\n            loc: name.loc,\n            value: name.rawName,\n        })\n\n        if (argument) {\n            tokens.push({\n                type: \"Punctuator\",\n                range: [name.range[1], argument.range[0]],\n                loc: { start: name.loc.end, end: argument.loc.start },\n                value: \":\",\n            })\n        }\n    }\n\n    if (argument) {\n        tokens.push({\n            type: \"HTMLIdentifier\",\n            range: argument.range,\n            loc: argument.loc,\n            value: (argument as VIdentifier).rawName,\n        })\n    }\n\n    let lastNode = (argument as VIdentifier | null) || name\n    for (const modifier of modifiers) {\n        if (modifier.rawName === \"\") {\n            continue\n        }\n\n        tokens.push(\n            {\n                type: \"Punctuator\",\n                range: [lastNode.range[1], modifier.range[0]],\n                loc: { start: lastNode.loc.end, end: modifier.loc.start },\n                value: \".\",\n            },\n            {\n                type: \"HTMLIdentifier\",\n                range: modifier.range,\n                loc: modifier.loc,\n                value: modifier.rawName,\n            },\n        )\n        lastNode = modifier\n    }\n\n    return tokens\n}\n\n/**\n * Convert `node.argument` property to a `VExpressionContainer` node if it's a dynamic argument.\n * @param text The source code text of the directive key node.\n * @param node The directive key node to convert.\n * @param document The belonging document node.\n * @param parserOptions The parser options to parse.\n * @param locationCalculator The location calculator to parse.\n */\nfunction convertDynamicArgument(\n    node: VDirectiveKey,\n    document: VDocumentFragment | null,\n    parserOptions: ParserOptions,\n    locationCalculator: LocationCalculatorForHtml,\n): void {\n    const { argument } = node\n    if (\n        !(\n            argument != null &&\n            argument.type === \"VIdentifier\" &&\n            argument.name.startsWith(\"[\") &&\n            argument.name.endsWith(\"]\")\n        )\n    ) {\n        return\n    }\n\n    const { rawName, range, loc } = argument\n    try {\n        const { comments, expression, references, tokens } = parseExpression(\n            rawName.slice(1, -1),\n            locationCalculator.getSubCalculatorAfter(range[0] + 1),\n            parserOptions,\n        )\n\n        node.argument = {\n            type: \"VExpressionContainer\",\n            range,\n            loc,\n            parent: node,\n            expression,\n            references,\n        }\n\n        if (expression != null) {\n            expression.parent = node.argument\n        }\n\n        // Add tokens of `[` and `]`.\n        tokens.unshift(\n            createSimpleToken(\n                \"Punctuator\",\n                range[0],\n                range[0] + 1,\n                \"[\",\n                locationCalculator,\n            ),\n        )\n        tokens.push(\n            createSimpleToken(\n                \"Punctuator\",\n                range[1] - 1,\n                range[1],\n                \"]\",\n                locationCalculator,\n            ),\n        )\n\n        replaceTokens(document, node.argument, tokens)\n        insertComments(document, comments)\n    } catch (error) {\n        debug(\"[template] Parse error: %s\", error)\n\n        if (ParseError.isParseError(error)) {\n            node.argument = {\n                type: \"VExpressionContainer\",\n                range,\n                loc,\n                parent: node,\n                expression: null,\n                references: [],\n            }\n            insertError(document, error)\n        } else {\n            throw error\n        }\n    }\n}\n\n/**\n * Parse the given attribute name as a directive key.\n * @param node The identifier node to parse.\n * @returns The directive key node.\n */\nfunction createDirectiveKey(\n    node: VIdentifier,\n    document: VDocumentFragment | null,\n    parserOptions: ParserOptions,\n    locationCalculator: LocationCalculatorForHtml,\n): VDirectiveKey {\n    // Parse node and tokens.\n    const directiveKey = parseDirectiveKeyStatically(node, document)\n    const tokens = parseDirectiveKeyTokens(directiveKey)\n    replaceTokens(document, directiveKey, tokens)\n\n    // Drop `v-` prefix.\n    if (directiveKey.name.name.startsWith(\"v-\")) {\n        directiveKey.name.name = directiveKey.name.name.slice(2)\n    }\n    if (directiveKey.name.rawName.startsWith(\"v-\")) {\n        directiveKey.name.rawName = directiveKey.name.rawName.slice(2)\n    }\n\n    // Parse dynamic argument.\n    convertDynamicArgument(\n        directiveKey,\n        document,\n        parserOptions,\n        locationCalculator,\n    )\n\n    return directiveKey\n}\n\n/**\n * Parse the given attribute value as an expression.\n * @param code Whole source code text.\n * @param parserOptions The parser options to parse expressions.\n * @param globalLocationCalculator The location calculator to adjust the locations of nodes.\n * @param node The attribute node to replace. This function modifies this node directly.\n * @param tagName The name of this tag.\n * @param directiveKey The key of this directive.\n */\nfunction parseAttributeValue(\n    code: string,\n    parserOptions: ParserOptions,\n    scriptParserOptions: ParserOptions,\n    globalLocationCalculator: LocationCalculatorForHtml,\n    node: VLiteral,\n    element: VElement,\n    directiveKey: VDirectiveKey,\n): ExpressionParseResult<\n    | ESLintExpression\n    | VFilterSequenceExpression\n    | VForExpression\n    | VOnExpression\n    | VSlotScopeExpression\n    | VGenericExpression\n> {\n    const firstChar = code[node.range[0]]\n    const quoted = firstChar === '\"' || firstChar === \"'\"\n    const locationCalculator = globalLocationCalculator.getSubCalculatorAfter(\n        node.range[0] + (quoted ? 1 : 0),\n    )\n    const directiveKind = getStandardDirectiveKind(\n        parserOptions,\n        element,\n        directiveKey,\n    )\n\n    let result: ExpressionParseResult<\n        | ESLintExpression\n        | VFilterSequenceExpression\n        | VForExpression\n        | VOnExpression\n        | VSlotScopeExpression\n        | VGenericExpression\n    >\n    if (quoted && node.value === \"\") {\n        result = {\n            expression: null,\n            tokens: [],\n            comments: [],\n            variables: [],\n            references: [],\n        }\n    } else if (directiveKind === \"for\") {\n        result = parseVForExpression(\n            node.value,\n            locationCalculator,\n            parserOptions,\n        )\n    } else if (directiveKind === \"on\" && directiveKey.argument != null) {\n        result = parseVOnExpression(\n            node.value,\n            locationCalculator,\n            parserOptions,\n        )\n    } else if (directiveKind === \"slot\") {\n        result = parseSlotScopeExpression(\n            node.value,\n            locationCalculator,\n            parserOptions,\n        )\n    } else if (directiveKind === \"bind\") {\n        result = parseExpression(\n            node.value,\n            locationCalculator,\n            parserOptions,\n            { allowFilters: true },\n        )\n    } else if (directiveKind === \"generic\") {\n        result = parseGenericExpression(\n            node.value,\n            locationCalculator,\n            scriptParserOptions,\n        )\n    } else {\n        result = parseExpression(node.value, locationCalculator, parserOptions)\n    }\n\n    // Add the tokens of quotes.\n    if (quoted) {\n        result.tokens.unshift(\n            createSimpleToken(\n                \"Punctuator\",\n                node.range[0],\n                node.range[0] + 1,\n                firstChar,\n                globalLocationCalculator,\n            ),\n        )\n        result.tokens.push(\n            createSimpleToken(\n                \"Punctuator\",\n                node.range[1] - 1,\n                node.range[1],\n                firstChar,\n                globalLocationCalculator,\n            ),\n        )\n    }\n\n    return result\n}\n\nfunction getStandardDirectiveKind(\n    parserOptions: ParserOptions,\n    element: VElement,\n    directiveKey: VDirectiveKey,\n) {\n    const directiveName = directiveKey.name.name\n\n    if (directiveName === \"for\") {\n        return \"for\"\n    } else if (directiveName === \"on\") {\n        return \"on\"\n    } else if (\n        directiveName === \"slot\" ||\n        directiveName === \"slot-scope\" ||\n        (directiveName === \"scope\" &&\n            getTagName(element, isSFCFile(parserOptions)) === \"template\")\n    ) {\n        return \"slot\"\n    } else if (directiveName === \"bind\") {\n        return \"bind\"\n    } else if (\n        directiveName === \"generic\" &&\n        element.parent.type === \"VDocumentFragment\" &&\n        getTagName(element, isSFCFile(parserOptions)) === \"script\" &&\n        isScriptSetupElement(element) &&\n        isTSLang(element)\n    ) {\n        return \"generic\"\n    }\n    return null\n}\n\n/**\n * Resolve the variable of the given reference.\n * @param referene The reference to resolve.\n * @param element The belonging element of the reference.\n */\nfunction resolveReference(referene: Reference, element: VElement): void {\n    let node: VNode | null = element\n\n    // Find the variable of this reference.\n    while (node != null && node.type === \"VElement\") {\n        for (const variable of node.variables) {\n            if (variable.id.name === referene.id.name) {\n                referene.variable = variable\n                variable.references.push(referene)\n                return\n            }\n        }\n\n        node = node.parent\n    }\n}\n\n/**\n * Information of a mustache.\n */\nexport interface Mustache {\n    value: string\n    startToken: Token\n    endToken: Token\n}\n\n/**\n * Replace the given attribute by a directive.\n * @param code Whole source code text.\n * @param parserOptions The parser options to parse expressions.\n * @param locationCalculator The location calculator to adjust the locations of nodes.\n * @param node The attribute node to replace. This function modifies this node directly.\n */\nexport function convertToDirective(\n    code: string,\n    parserOptions: ParserOptions,\n    scriptParserOptions: ParserOptions,\n    locationCalculator: LocationCalculatorForHtml,\n    node: VAttribute,\n): void {\n    debug(\n        '[template] convert to directive: %s=\"%s\" %j',\n        node.key.name,\n        node.value && node.value.value,\n        node.range,\n    )\n\n    const document = getOwnerDocument(node)\n    const directive: VDirective = node as any\n    directive.directive = true\n    directive.key = createDirectiveKey(\n        node.key,\n        document,\n        parserOptions,\n        locationCalculator,\n    )\n\n    const { argument } = directive.key\n    if (\n        argument &&\n        argument.type === \"VIdentifier\" &&\n        argument.name.startsWith(\"[\")\n    ) {\n        const nextChar = code[argument.range[1]]\n        if (nextChar == null || invalidDynamicArgumentNextChar.test(nextChar)) {\n            const char =\n                nextChar == null ? \"EOF\" : JSON.stringify(nextChar).slice(1, -1)\n            insertError(\n                document,\n                new ParseError(\n                    `Dynamic argument cannot contain the '${char}' character.`,\n                    undefined,\n                    argument.range[1],\n                    argument.loc.end.line,\n                    argument.loc.end.column,\n                ),\n            )\n        }\n    }\n\n    if (node.value == null) {\n        if (directive.key.name.name === \"bind\") {\n            // v-bind same-name shorthand (Vue 3.4+)\n            convertForVBindSameNameShorthandValue(\n                directive,\n                parserOptions,\n                locationCalculator,\n            )\n        }\n        return\n    }\n\n    try {\n        const ret = parseAttributeValue(\n            code,\n            parserOptions,\n            scriptParserOptions,\n            locationCalculator,\n            node.value,\n            node.parent.parent,\n            directive.key,\n        )\n\n        directive.value = {\n            type: \"VExpressionContainer\",\n            range: node.value.range,\n            loc: node.value.loc,\n            parent: directive,\n            expression: ret.expression,\n            references: ret.references,\n        }\n        if (ret.expression != null) {\n            ret.expression.parent = directive.value\n        }\n\n        for (const variable of ret.variables) {\n            node.parent.parent.variables.push(variable)\n        }\n\n        replaceTokens(document, node.value, ret.tokens)\n        insertComments(document, ret.comments)\n    } catch (err) {\n        debug(\"[template] Parse error: %s\", err)\n\n        if (ParseError.isParseError(err)) {\n            directive.value = {\n                type: \"VExpressionContainer\",\n                range: node.value.range,\n                loc: node.value.loc,\n                parent: directive,\n                expression: null,\n                references: [],\n            }\n            insertError(document, err)\n        } else {\n            throw err\n        }\n    }\n}\n\nfunction convertForVBindSameNameShorthandValue(\n    directive: VDirective,\n    parserOptions: ParserOptions,\n    locationCalculator: LocationCalculatorForHtml,\n) {\n    if (\n        directive.key.name.name !== \"bind\" ||\n        directive.key.argument == null ||\n        directive.key.argument.type !== \"VIdentifier\"\n    ) {\n        return\n    }\n    // v-bind same-name shorthand (Vue 3.4+)\n    const vId = directive.key.argument\n    const camelName = camelize(vId.rawName)\n    let result: ESLintExtendedProgram | null = null\n    try {\n        result = parseScriptFragment(\n            camelName,\n            locationCalculator.getSubCalculatorAfter(vId.range[0]),\n            parserOptions,\n        )\n    } catch (err) {\n        debug(\"[template] Parse error: %s\", err)\n    }\n    if (\n        result == null ||\n        result.ast.body.length !== 1 ||\n        result.ast.body[0].type !== \"ExpressionStatement\" ||\n        result.ast.body[0].expression.type !== \"Identifier\"\n    ) {\n        return\n    }\n    const id: ESLintIdentifier = result.ast.body[0].expression\n    id.range[1] = vId.range[1]\n    id.loc.end = { ...vId.loc.end }\n    if (id.end != null) {\n        id.end = vId.end\n    }\n    directive.value = {\n        type: \"VExpressionContainer\",\n        range: [...vId.range],\n        loc: {\n            start: { ...vId.loc.start },\n            end: { ...vId.loc.end },\n        },\n        parent: directive,\n        expression: id,\n        references: [\n            {\n                id,\n                mode: \"r\",\n                variable: null,\n            },\n        ],\n    }\n    id.parent = directive.value\n}\n\n/**\n * Parse the content of the given mustache.\n * @param parserOptions The parser options to parse expressions.\n * @param globalLocationCalculator The location calculator to adjust the locations of nodes.\n * @param node The expression container node. This function modifies the `expression` and `references` properties of this node.\n * @param mustache The information of mustache to parse.\n */\nexport function processMustache(\n    parserOptions: ParserOptions,\n    globalLocationCalculator: LocationCalculatorForHtml,\n    node: VExpressionContainer,\n    mustache: Mustache,\n): void {\n    const range: [number, number] = [\n        mustache.startToken.range[1],\n        mustache.endToken.range[0],\n    ]\n    debug(\"[template] convert mustache {{%s}} %j\", mustache.value, range)\n\n    const document = getOwnerDocument(node)\n    try {\n        const locationCalculator =\n            globalLocationCalculator.getSubCalculatorAfter(range[0])\n        const ret = parseExpression(\n            mustache.value,\n            locationCalculator,\n            parserOptions,\n            { allowEmpty: true, allowFilters: true },\n        )\n\n        node.expression = ret.expression || null\n        node.references = ret.references\n        if (ret.expression != null) {\n            ret.expression.parent = node\n        }\n\n        replaceTokens(document, { range }, ret.tokens)\n        insertComments(document, ret.comments)\n    } catch (err) {\n        debug(\"[template] Parse error: %s\", err)\n\n        if (ParseError.isParseError(err)) {\n            insertError(document, err)\n        } else {\n            throw err\n        }\n    }\n}\n\n/**\n * Resolve all references of the given expression container.\n * @param container The expression container to resolve references.\n */\nexport function resolveReferences(container: VExpressionContainer): void {\n    let element: VNode | null = container.parent\n\n    // Get the belonging element.\n    while (element != null && element.type !== \"VElement\") {\n        element = element.parent\n    }\n\n    // Resolve.\n    if (element != null) {\n        for (const reference of container.references) {\n            resolveReference(reference, element)\n        }\n    }\n}\n","/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * @copyright 2017 Toru Nagashima. All rights reserved.\n * See LICENSE file in root directory for full license.\n */\nexport const SVG_ATTRIBUTE_NAME_MAP = new Map([\n    [\"attributename\", \"attributeName\"],\n    [\"attributetype\", \"attributeType\"],\n    [\"basefrequency\", \"baseFrequency\"],\n    [\"baseprofile\", \"baseProfile\"],\n    [\"calcmode\", \"calcMode\"],\n    [\"clippathunits\", \"clipPathUnits\"],\n    [\"diffuseconstant\", \"diffuseConstant\"],\n    [\"edgemode\", \"edgeMode\"],\n    [\"filterunits\", \"filterUnits\"],\n    [\"glyphref\", \"glyphRef\"],\n    [\"gradienttransform\", \"gradientTransform\"],\n    [\"gradientunits\", \"gradientUnits\"],\n    [\"kernelmatrix\", \"kernelMatrix\"],\n    [\"kernelunitlength\", \"kernelUnitLength\"],\n    [\"keypoints\", \"keyPoints\"],\n    [\"keysplines\", \"keySplines\"],\n    [\"keytimes\", \"keyTimes\"],\n    [\"lengthadjust\", \"lengthAdjust\"],\n    [\"limitingconeangle\", \"limitingConeAngle\"],\n    [\"markerheight\", \"markerHeight\"],\n    [\"markerunits\", \"markerUnits\"],\n    [\"markerwidth\", \"markerWidth\"],\n    [\"maskcontentunits\", \"maskContentUnits\"],\n    [\"maskunits\", \"maskUnits\"],\n    [\"numoctaves\", \"numOctaves\"],\n    [\"pathlength\", \"pathLength\"],\n    [\"patterncontentunits\", \"patternContentUnits\"],\n    [\"patterntransform\", \"patternTransform\"],\n    [\"patternunits\", \"patternUnits\"],\n    [\"pointsatx\", \"pointsAtX\"],\n    [\"pointsaty\", \"pointsAtY\"],\n    [\"pointsatz\", \"pointsAtZ\"],\n    [\"preservealpha\", \"preserveAlpha\"],\n    [\"preserveaspectratio\", \"preserveAspectRatio\"],\n    [\"primitiveunits\", \"primitiveUnits\"],\n    [\"refx\", \"refX\"],\n    [\"refy\", \"refY\"],\n    [\"repeatcount\", \"repeatCount\"],\n    [\"repeatdur\", \"repeatDur\"],\n    [\"requiredextensions\", \"requiredExtensions\"],\n    [\"requiredfeatures\", \"requiredFeatures\"],\n    [\"specularconstant\", \"specularConstant\"],\n    [\"specularexponent\", \"specularExponent\"],\n    [\"spreadmethod\", \"spreadMethod\"],\n    [\"startoffset\", \"startOffset\"],\n    [\"stddeviation\", \"stdDeviation\"],\n    [\"stitchtiles\", \"stitchTiles\"],\n    [\"surfacescale\", \"surfaceScale\"],\n    [\"systemlanguage\", \"systemLanguage\"],\n    [\"tablevalues\", \"tableValues\"],\n    [\"targetx\", \"targetX\"],\n    [\"targety\", \"targetY\"],\n    [\"textlength\", \"textLength\"],\n    [\"viewbox\", \"viewBox\"],\n    [\"viewtarget\", \"viewTarget\"],\n    [\"xchannelselector\", \"xChannelSelector\"],\n    [\"ychannelselector\", \"yChannelSelector\"],\n    [\"zoomandpan\", \"zoomAndPan\"],\n])\n\nexport const MATHML_ATTRIBUTE_NAME_MAP = new Map([\n    [\"definitionurl\", \"definitionUrl\"]\n])\n","/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * @copyright 2017 Toru Nagashima. All rights reserved.\n * See LICENSE file in root directory for full license.\n */\n\n/**\n * HTML tag names.\n */\nexport const HTML_TAGS = new Set([\n    \"a\", \"abbr\", \"address\", \"area\", \"article\",\"aside\", \"audio\", \"b\", \"base\",\n    \"bdi\", \"bdo\", \"blockquote\", \"body\", \"br\", \"button\", \"canvas\", \"caption\",\n    \"cite\", \"code\", \"col\", \"colgroup\", \"data\", \"datalist\", \"dd\", \"del\",\n    \"details\", \"dfn\", \"dialog\", \"div\", \"dl\", \"document\", \"dt\", \"em\", \"embed\",\n    \"fieldset\", \"figcaption\", \"figure\", \"footer\", \"form\", \"h1\", \"h2\", \"h3\",\n    \"h4\", \"h5\", \"h6\", \"head\", \"header\", \"hgroup\", \"hr\", \"html\", \"i\", \"iframe\",\n    \"img\", \"input\", \"ins\", \"kbd\", \"label\", \"legend\", \"li\", \"link\", \"main\",\n    \"map\", \"mark\", \"marquee\", \"menu\", \"meta\", \"meter\", \"nav\", \"noscript\",\n    \"object\", \"ol\", \"optgroup\", \"option\", \"output\", \"p\", \"param\", \"picture\",\n    \"pre\", \"progress\", \"q\", \"rp\", \"rt\", \"ruby\", \"s\", \"samp\", \"script\",\n    \"section\", \"select\", \"slot\", \"small\", \"source\", \"span\", \"strong\", \"style\",\n    \"sub\", \"summary\", \"sup\", \"table\", \"tbody\", \"td\", \"template\", \"textarea\",\n    \"tfoot\", \"th\", \"thead\", \"time\", \"title\", \"tr\", \"track\", \"u\", \"ul\", \"var\",\n    \"video\", \"wbr\"\n])\n\n/**\n * HTML tag names of void elements.\n */\nexport const HTML_VOID_ELEMENT_TAGS = new Set([\n    \"area\", \"base\", \"br\", \"col\", \"embed\", \"hr\", \"img\", \"input\", \"link\", \"meta\",\n    \"param\", \"source\", \"track\", \"wbr\",\n])\n\n/**\n * https://github.com/vuejs/vue/blob/e4da249ab8ef32a0b8156c840c9d2b9773090f8a/src/platforms/web/compiler/util.js#L12\n */\nexport const HTML_CAN_BE_LEFT_OPEN_TAGS = new Set([\n    \"colgroup\", \"li\", \"options\", \"p\", \"td\", \"tfoot\", \"th\", \"thead\", \n    \"tr\", \"source\",\n])\n\n/**\n * https://github.com/vuejs/vue/blob/e4da249ab8ef32a0b8156c840c9d2b9773090f8a/src/platforms/web/compiler/util.js#L18\n */\nexport const HTML_NON_FHRASING_TAGS = new Set([\n    \"address\", \"article\", \"aside\", \"base\", \"blockquote\", \"body\", \"caption\", \n    \"col\", \"colgroup\", \"dd\", \"details\", \"dialog\", \"div\", \"dl\", \"dt\", \"fieldset\", \n    \"figcaption\", \"figure\", \"footer\", \"form\", \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \n    \"h6\", \"head\", \"header\", \"hgroup\", \"hr\", \"html\", \"legend\", \"li\", \"menuitem\", \n    \"meta\", \"optgroup\", \"option\", \"param\", \"rp\", \"rt\", \"source\", \"style\", \n    \"summary\", \"tbody\", \"td\", \"tfoot\", \"th\", \"thead\", \"title\", \"tr\", \"track\",\n])\n\n/**\n * HTML tag names of RCDATA.\n */\nexport const HTML_RCDATA_TAGS = new Set([\n    \"title\", \"textarea\",\n])\n\n/**\n * HTML tag names of RAWTEXT.\n */\nexport const HTML_RAWTEXT_TAGS = new Set([\n    \"style\", \"xmp\", \"iframe\", \"noembed\", \"noframes\", \"noscript\", \"script\",\n])\n\n/**\n * SVG tag names.\n */\nexport const SVG_TAGS = new Set([\n    \"a\", \"altGlyph\", \"altGlyphDef\", \"altGlyphItem\", \"animate\", \"animateColor\", \n    \"animateMotion\", \"animateTransform\", \"animation\", \"audio\", \"canvas\", \n    \"circle\", \"clipPath\", \"color-profile\", \"cursor\", \"defs\", \"desc\", \"discard\", \n    \"ellipse\", \"feBlend\", \"feColorMatrix\", \"feComponentTransfer\", \"feComposite\", \n    \"feConvolveMatrix\", \"feDiffuseLighting\", \"feDisplacementMap\", \n    \"feDistantLight\", \"feDropShadow\", \"feFlood\", \"feFuncA\", \"feFuncB\", \n    \"feFuncG\", \"feFuncR\", \"feGaussianBlur\", \"feImage\", \"feMerge\", \"feMergeNode\", \n    \"feMorphology\", \"feOffset\", \"fePointLight\", \"feSpecularLighting\", \n    \"feSpotLight\", \"feTile\", \"feTurbulence\", \"filter\", \"font\", \"font-face\", \n    \"font-face-format\", \"font-face-name\", \"font-face-src\", \"font-face-uri\", \n    \"foreignObject\", \"g\", \"glyph\", \"glyphRef\", \"handler\", \"hatch\", \"hatchpath\", \n    \"hkern\", \"iframe\", \"image\", \"line\", \"linearGradient\", \"listener\", \"marker\", \n    \"mask\", \"mesh\", \"meshgradient\", \"meshpatch\", \"meshrow\", \"metadata\", \n    \"missing-glyph\", \"mpath\", \"path\", \"pattern\", \"polygon\", \"polyline\", \n    \"prefetch\", \"radialGradient\", \"rect\", \"script\", \"set\", \"solidColor\", \n    \"solidcolor\", \"stop\", \"style\", \"svg\", \"switch\", \"symbol\", \"tbreak\", \"text\", \n    \"textArea\", \"textPath\", \"title\", \"tref\", \"tspan\", \"unknown\", \"use\", \"video\", \n    \"view\", \"vkern\",\n])\n\n/**\n * The map from lowercase names to actual names in SVG.\n */\nexport const SVG_ELEMENT_NAME_MAP = new Map<string, string>()\nfor (const name of SVG_TAGS) {\n    if (/[A-Z]/.test(name)) {\n        SVG_ELEMENT_NAME_MAP.set(name.toLowerCase(), name)\n    }\n}\n\n/**\n * MathML tag names.\n */\nexport const MATHML_TAGS = new Set([\n    \"abs\", \"and\", \"annotation\", \"annotation-xml\", \"apply\", \"approx\", \"arccos\", \n    \"arccosh\", \"arccot\", \"arccoth\", \"arccsc\", \"arccsch\", \"arcsec\", \"arcsech\", \n    \"arcsin\", \"arcsinh\", \"arctan\", \"arctanh\", \"arg\", \"bind\", \"bvar\", \"card\", \n    \"cartesianproduct\", \"cbytes\", \"ceiling\", \"cerror\", \"ci\", \"cn\", \"codomain\", \n    \"complexes\", \"compose\", \"condition\", \"conjugate\", \"cos\", \"cosh\", \"cot\", \n    \"coth\", \"cs\", \"csc\", \"csch\", \"csymbol\", \"curl\", \"declare\", \"degree\", \n    \"determinant\", \"diff\", \"divergence\", \"divide\", \"domain\", \n    \"domainofapplication\", \"emptyset\", \"encoding\", \"eq\", \"equivalent\", \n    \"eulergamma\", \"exists\", \"exp\", \"exponentiale\", \"factorial\", \"factorof\", \n    \"false\", \"floor\", \"fn\", \"forall\", \"function\", \"gcd\", \"geq\", \"grad\", \"gt\", \n    \"ident\", \"image\", \"imaginary\", \"imaginaryi\", \"implies\", \"in\", \"infinity\", \n    \"int\", \"integers\", \"intersect\", \"interval\", \"inverse\", \"lambda\", \n    \"laplacian\", \"lcm\", \"leq\", \"limit\", \"list\", \"ln\", \"log\", \"logbase\", \n    \"lowlimit\", \"lt\", \"m:apply\", \"m:mrow\", \"maction\", \"malign\", \"maligngroup\", \n    \"malignmark\", \"malignscope\", \"math\", \"matrix\", \"matrixrow\", \"max\", \"mean\", \n    \"median\", \"menclose\", \"merror\", \"mfenced\", \"mfrac\", \"mfraction\", \"mglyph\", \n    \"mi\", \"mi\\\"\", \"min\", \"minus\", \"mlabeledtr\", \"mlongdiv\", \"mmultiscripts\", \n    \"mn\", \"mo\", \"mode\", \"moment\", \"momentabout\", \"mover\", \"mpadded\", \"mphantom\", \n    \"mprescripts\", \"mroot\", \"mrow\", \"ms\", \"mscarries\", \"mscarry\", \"msgroup\", \n    \"msline\", \"mspace\", \"msqrt\", \"msrow\", \"mstack\", \"mstyle\", \"msub\", \"msubsup\", \n    \"msup\", \"mtable\", \"mtd\", \"mtext\", \"mtr\", \"munder\", \"munderover\", \n    \"naturalnumbers\", \"neq\", \"none\", \"not\", \"notanumber\", \"notin\", \n    \"notprsubset\", \"notsubset\", \"or\", \"otherwise\", \"outerproduct\", \n    \"partialdiff\", \"pi\", \"piece\", \"piecewice\", \"piecewise\", \"plus\", \"power\", \n    \"primes\", \"product\", \"prsubset\", \"quotient\", \"rationals\", \"real\", \"reals\", \n    \"reln\", \"rem\", \"root\", \"scalarproduct\", \"sdev\", \"sec\", \"sech\", \"select\", \n    \"selector\", \"semantics\", \"sep\", \"set\", \"setdiff\", \"share\", \"sin\", \"sinh\", \n    \"span\", \"subset\", \"sum\", \"tan\", \"tanh\", \"tendsto\", \"times\", \"transpose\", \n    \"true\", \"union\", \"uplimit\", \"var\", \"variance\", \"vector\", \"vectorproduct\", \n    \"xor\",\n])\n","/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * @copyright 2017 Toru Nagashima. All rights reserved.\n * See LICENSE file in root directory for full license.\n */\nimport assert from \"assert\"\nimport last from \"lodash/last\"\nimport type {\n    ErrorCode,\n    HasLocation,\n    Namespace,\n    Token,\n    VAttribute,\n} from \"../ast\"\nimport { ParseError } from \"../ast\"\nimport { debug } from \"../common/debug\"\nimport type { Tokenizer, TokenizerState, TokenType } from \"./tokenizer\"\n\nconst DUMMY_PARENT: any = Object.freeze({})\n\n/**\n * Concatenate token values.\n * @param text Concatenated text.\n * @param token The token to concatenate.\n */\nfunction concat(text: string, token: Token): string {\n    return text + token.value\n}\n\n/**\n * The type of intermediate tokens.\n */\nexport type IntermediateToken = StartTag | EndTag | Text | Mustache\n\n/**\n * The type of start tags.\n */\nexport interface StartTag extends HasLocation {\n    type: \"StartTag\"\n    name: string\n    rawName: string\n    selfClosing: boolean\n    attributes: VAttribute[]\n}\n\n/**\n * The type of end tags.\n */\nexport interface EndTag extends HasLocation {\n    type: \"EndTag\"\n    name: string\n}\n\n/**\n * The type of text chunks.\n */\nexport interface Text extends HasLocation {\n    type: \"Text\"\n    value: string\n}\n\n/**\n * The type of text chunks of an expression container.\n */\nexport interface Mustache extends HasLocation {\n    type: \"Mustache\"\n    value: string\n    startToken: Token\n    endToken: Token\n}\n\n/**\n * The class to create HTML tokens from ESTree-like tokens which are created by a Tokenizer.\n */\nexport class IntermediateTokenizer {\n    private tokenizer: Tokenizer\n    private currentToken: IntermediateToken | null\n    private attribute: VAttribute | null\n    private attributeNames: Set<string>\n    private expressionStartToken: Token | null\n    private expressionTokens: Token[]\n\n    public readonly tokens: Token[]\n    public readonly comments: Token[]\n\n    /**\n     * The source code text.\n     */\n    public get text(): string {\n        return this.tokenizer.text\n    }\n\n    /**\n     * The parse errors.\n     */\n    public get errors(): ParseError[] {\n        return this.tokenizer.errors\n    }\n\n    /**\n     * The current state.\n     */\n    public get state(): TokenizerState {\n        return this.tokenizer.state\n    }\n    public set state(value: TokenizerState) {\n        this.tokenizer.state = value\n    }\n\n    /**\n     * The current namespace.\n     */\n    public get namespace(): Namespace {\n        return this.tokenizer.namespace\n    }\n    public set namespace(value: Namespace) {\n        this.tokenizer.namespace = value\n    }\n\n    /**\n     * The current flag of expression enabled.\n     */\n    public get expressionEnabled(): boolean {\n        return this.tokenizer.expressionEnabled\n    }\n    public set expressionEnabled(value: boolean) {\n        this.tokenizer.expressionEnabled = value\n    }\n\n    /**\n     * Initialize this intermediate tokenizer.\n     * @param tokenizer The tokenizer.\n     */\n    public constructor(tokenizer: Tokenizer) {\n        this.tokenizer = tokenizer\n        this.currentToken = null\n        this.attribute = null\n        this.attributeNames = new Set<string>()\n        this.expressionStartToken = null\n        this.expressionTokens = []\n        this.tokens = []\n        this.comments = []\n    }\n\n    /**\n     * Get the next intermediate token.\n     * @returns The intermediate token or null.\n     */\n    public nextToken(): IntermediateToken | null {\n        let token: Token | null = null\n        let result: IntermediateToken | null = null\n\n        while (result == null && (token = this.tokenizer.nextToken()) != null) {\n            result = this[token.type as TokenType](token)\n        }\n\n        if (result == null && token == null && this.currentToken != null) {\n            result = this.commit()\n        }\n\n        return result\n    }\n\n    /**\n     * Commit the current token.\n     */\n    private commit(): IntermediateToken {\n        assert(this.currentToken != null || this.expressionStartToken != null)\n\n        let token = this.currentToken\n        this.currentToken = null\n        this.attribute = null\n\n        if (this.expressionStartToken != null) {\n            // VExpressionEnd was not found.\n            // Concatenate the deferred tokens to the committed token.\n            const start = this.expressionStartToken\n            const end = last(this.expressionTokens) || start\n            const value = this.expressionTokens.reduce(concat, start.value)\n            this.expressionStartToken = null\n            this.expressionTokens = []\n\n            if (token == null) {\n                token = {\n                    type: \"Text\",\n                    range: [start.range[0], end.range[1]],\n                    loc: { start: start.loc.start, end: end.loc.end },\n                    value,\n                }\n            } else if (token.type === \"Text\") {\n                token.range[1] = end.range[1]\n                token.loc.end = end.loc.end\n                token.value += value\n            } else {\n                throw new Error(\"unreachable\")\n            }\n        }\n\n        return token as IntermediateToken\n    }\n\n    /**\n     * Report an invalid character error.\n     * @param code The error code.\n     */\n    private reportParseError(token: HasLocation, code: ErrorCode): void {\n        const error = ParseError.fromCode(\n            code,\n            token.range[0],\n            token.loc.start.line,\n            token.loc.start.column,\n        )\n        this.errors.push(error)\n\n        debug(\"[html] syntax error:\", error.message)\n    }\n\n    /**\n     * Process the given comment token.\n     * @param token The comment token to process.\n     */\n    private processComment(token: Token): IntermediateToken | null {\n        this.comments.push(token)\n\n        if (this.currentToken != null && this.currentToken.type === \"Text\") {\n            return this.commit()\n        }\n        return null\n    }\n\n    /**\n     * Process the given text token.\n     * @param token The text token to process.\n     */\n    private processText(token: Token): IntermediateToken | null {\n        this.tokens.push(token)\n\n        let result: IntermediateToken | null = null\n\n        if (this.expressionStartToken != null) {\n            // Defer this token until a VExpressionEnd token or a non-text token appear.\n            const lastToken =\n                last(this.expressionTokens) || this.expressionStartToken\n            if (lastToken.range[1] === token.range[0]) {\n                this.expressionTokens.push(token)\n                return null\n            }\n\n            result = this.commit()\n        } else if (this.currentToken != null) {\n            // Concatenate this token to the current text token.\n            if (\n                this.currentToken.type === \"Text\" &&\n                this.currentToken.range[1] === token.range[0]\n            ) {\n                this.currentToken.value += token.value\n                this.currentToken.range[1] = token.range[1]\n                this.currentToken.loc.end = token.loc.end\n                return null\n            }\n\n            result = this.commit()\n        }\n        assert(this.currentToken == null)\n\n        this.currentToken = {\n            type: \"Text\",\n            range: [token.range[0], token.range[1]],\n            loc: { start: token.loc.start, end: token.loc.end },\n            value: token.value,\n        }\n\n        return result\n    }\n\n    /**\n     * Process a HTMLAssociation token.\n     * @param token The token to process.\n     */\n    protected HTMLAssociation(token: Token): IntermediateToken | null {\n        this.tokens.push(token)\n\n        if (this.attribute != null) {\n            this.attribute.range[1] = token.range[1]\n            this.attribute.loc.end = token.loc.end\n\n            if (\n                this.currentToken == null ||\n                this.currentToken.type !== \"StartTag\"\n            ) {\n                throw new Error(\"unreachable\")\n            }\n            this.currentToken.range[1] = token.range[1]\n            this.currentToken.loc.end = token.loc.end\n        }\n\n        return null\n    }\n\n    /**\n     * Process a HTMLBogusComment token.\n     * @param token The token to process.\n     */\n    protected HTMLBogusComment(token: Token): IntermediateToken | null {\n        return this.processComment(token)\n    }\n\n    /**\n     * Process a HTMLCDataText token.\n     * @param token The token to process.\n     */\n    protected HTMLCDataText(token: Token): IntermediateToken | null {\n        return this.processText(token)\n    }\n\n    /**\n     * Process a HTMLComment token.\n     * @param token The token to process.\n     */\n    protected HTMLComment(token: Token): IntermediateToken | null {\n        return this.processComment(token)\n    }\n\n    /**\n     * Process a HTMLEndTagOpen token.\n     * @param token The token to process.\n     */\n    protected HTMLEndTagOpen(token: Token): IntermediateToken | null {\n        this.tokens.push(token)\n\n        let result: IntermediateToken | null = null\n\n        if (this.currentToken != null || this.expressionStartToken != null) {\n            result = this.commit()\n        }\n\n        this.currentToken = {\n            type: \"EndTag\",\n            range: [token.range[0], token.range[1]],\n            loc: { start: token.loc.start, end: token.loc.end },\n            name: token.value,\n        }\n\n        return result\n    }\n\n    /**\n     * Process a HTMLIdentifier token.\n     * @param token The token to process.\n     */\n    protected HTMLIdentifier(token: Token): IntermediateToken | null {\n        this.tokens.push(token)\n\n        if (\n            this.currentToken == null ||\n            this.currentToken.type === \"Text\" ||\n            this.currentToken.type === \"Mustache\"\n        ) {\n            throw new Error(\"unreachable\")\n        }\n        if (this.currentToken.type === \"EndTag\") {\n            this.reportParseError(token, \"end-tag-with-attributes\")\n            return null\n        }\n        if (this.attributeNames.has(token.value)) {\n            this.reportParseError(token, \"duplicate-attribute\")\n        }\n        this.attributeNames.add(token.value)\n\n        this.attribute = {\n            type: \"VAttribute\",\n            range: [token.range[0], token.range[1]],\n            loc: { start: token.loc.start, end: token.loc.end },\n            parent: DUMMY_PARENT,\n            directive: false,\n            key: {\n                type: \"VIdentifier\",\n                range: [token.range[0], token.range[1]],\n                loc: { start: token.loc.start, end: token.loc.end },\n                parent: DUMMY_PARENT,\n                name: token.value,\n                rawName: this.text.slice(token.range[0], token.range[1]),\n            },\n            value: null,\n        }\n        this.attribute.key.parent = this.attribute\n\n        this.currentToken.range[1] = token.range[1]\n        this.currentToken.loc.end = token.loc.end\n        this.currentToken.attributes.push(this.attribute)\n\n        return null\n    }\n\n    /**\n     * Process a HTMLLiteral token.\n     * @param token The token to process.\n     */\n    protected HTMLLiteral(token: Token): IntermediateToken | null {\n        this.tokens.push(token)\n\n        if (this.attribute != null) {\n            this.attribute.range[1] = token.range[1]\n            this.attribute.loc.end = token.loc.end\n            this.attribute.value = {\n                type: \"VLiteral\",\n                range: [token.range[0], token.range[1]],\n                loc: { start: token.loc.start, end: token.loc.end },\n                parent: this.attribute,\n                value: token.value,\n            }\n\n            if (\n                this.currentToken == null ||\n                this.currentToken.type !== \"StartTag\"\n            ) {\n                throw new Error(\"unreachable\")\n            }\n            this.currentToken.range[1] = token.range[1]\n            this.currentToken.loc.end = token.loc.end\n        }\n\n        return null\n    }\n\n    /**\n     * Process a HTMLRCDataText token.\n     * @param token The token to process.\n     */\n    protected HTMLRCDataText(token: Token): IntermediateToken | null {\n        return this.processText(token)\n    }\n\n    /**\n     * Process a HTMLRawText token.\n     * @param token The token to process.\n     */\n    protected HTMLRawText(token: Token): IntermediateToken | null {\n        return this.processText(token)\n    }\n\n    /**\n     * Process a HTMLSelfClosingTagClose token.\n     * @param token The token to process.\n     */\n    protected HTMLSelfClosingTagClose(token: Token): IntermediateToken | null {\n        this.tokens.push(token)\n\n        if (this.currentToken == null || this.currentToken.type === \"Text\") {\n            throw new Error(\"unreachable\")\n        }\n\n        if (this.currentToken.type === \"StartTag\") {\n            this.currentToken.selfClosing = true\n        } else {\n            this.reportParseError(token, \"end-tag-with-trailing-solidus\")\n        }\n\n        this.currentToken.range[1] = token.range[1]\n        this.currentToken.loc.end = token.loc.end\n\n        return this.commit()\n    }\n\n    /**\n     * Process a HTMLTagClose token.\n     * @param token The token to process.\n     */\n    protected HTMLTagClose(token: Token): IntermediateToken | null {\n        this.tokens.push(token)\n\n        if (this.currentToken == null || this.currentToken.type === \"Text\") {\n            throw new Error(\"unreachable\")\n        }\n\n        this.currentToken.range[1] = token.range[1]\n        this.currentToken.loc.end = token.loc.end\n\n        return this.commit()\n    }\n\n    /**\n     * Process a HTMLTagOpen token.\n     * @param token The token to process.\n     */\n    protected HTMLTagOpen(token: Token): IntermediateToken | null {\n        this.tokens.push(token)\n\n        let result: IntermediateToken | null = null\n\n        if (this.currentToken != null || this.expressionStartToken != null) {\n            result = this.commit()\n        }\n\n        this.currentToken = {\n            type: \"StartTag\",\n            range: [token.range[0], token.range[1]],\n            loc: { start: token.loc.start, end: token.loc.end },\n            name: token.value,\n            rawName: this.text.slice(token.range[0] + 1, token.range[1]),\n            selfClosing: false,\n            attributes: [],\n        }\n        this.attribute = null\n        this.attributeNames.clear()\n\n        return result\n    }\n\n    /**\n     * Process a HTMLText token.\n     * @param token The token to process.\n     */\n    protected HTMLText(token: Token): IntermediateToken | null {\n        return this.processText(token)\n    }\n\n    /**\n     * Process a HTMLWhitespace token.\n     * @param token The token to process.\n     */\n    protected HTMLWhitespace(token: Token): IntermediateToken | null {\n        return this.processText(token)\n    }\n\n    /**\n     * Process a VExpressionStart token.\n     * @param token The token to process.\n     */\n    protected VExpressionStart(token: Token): IntermediateToken | null {\n        if (this.expressionStartToken != null) {\n            return this.processText(token)\n        }\n        const separated =\n            this.currentToken != null &&\n            this.currentToken.range[1] !== token.range[0]\n        const result = separated ? this.commit() : null\n\n        this.tokens.push(token)\n        this.expressionStartToken = token\n\n        return result\n    }\n\n    /**\n     * Process a VExpressionEnd token.\n     * @param token The token to process.\n     */\n    protected VExpressionEnd(token: Token): IntermediateToken | null {\n        if (this.expressionStartToken == null) {\n            return this.processText(token)\n        }\n\n        const start = this.expressionStartToken\n        const end = last(this.expressionTokens) || start\n\n        // If it's '{{}}', it's handled as a text.\n        if (token.range[0] === start.range[1]) {\n            this.tokens.pop()\n            this.expressionStartToken = null\n            const result = this.processText(start)\n            this.processText(token)\n            return result\n        }\n\n        // If invalid notation `</>` exists directly before this token, separate it.\n        if (end.range[1] !== token.range[0]) {\n            const result = this.commit()\n            this.processText(token)\n            return result\n        }\n\n        // Clear state.\n        const value = this.expressionTokens.reduce(concat, \"\")\n        this.tokens.push(token)\n        this.expressionStartToken = null\n        this.expressionTokens = []\n\n        // Create token.\n        const result = this.currentToken != null ? this.commit() : null\n        this.currentToken = {\n            type: \"Mustache\",\n            range: [start.range[0], token.range[1]],\n            loc: { start: start.loc.start, end: token.loc.end },\n            value,\n            startToken: start,\n            endToken: token,\n        }\n\n        return result || this.commit()\n    }\n}\n","/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * @copyright 2017 Toru Nagashima. All rights reserved.\n * See LICENSE file in root directory for full license.\n */\nimport assert from \"assert\"\nimport last from \"lodash/last\"\nimport findLastIndex from \"lodash/findLastIndex\"\nimport type {\n    ErrorCode,\n    HasLocation,\n    Namespace,\n    Token,\n    VAttribute,\n    VDocumentFragment,\n    VElement,\n    VExpressionContainer,\n    VLiteral,\n} from \"../ast\"\nimport { NS, ParseError } from \"../ast\"\nimport { debug } from \"../common/debug\"\nimport { LocationCalculatorForHtml } from \"../common/location-calculator\"\nimport {\n    convertToDirective,\n    processMustache,\n    resolveReferences,\n} from \"../template\"\nimport {\n    MATHML_ATTRIBUTE_NAME_MAP,\n    SVG_ATTRIBUTE_NAME_MAP,\n} from \"./util/attribute-names\"\nimport {\n    HTML_CAN_BE_LEFT_OPEN_TAGS,\n    HTML_NON_FHRASING_TAGS,\n    HTML_RAWTEXT_TAGS,\n    HTML_RCDATA_TAGS,\n    HTML_VOID_ELEMENT_TAGS,\n    SVG_ELEMENT_NAME_MAP,\n} from \"./util/tag-names\"\nimport type {\n    IntermediateToken,\n    EndTag,\n    Mustache,\n    StartTag,\n    Text,\n} from \"./intermediate-tokenizer\"\nimport { IntermediateTokenizer } from \"./intermediate-tokenizer\"\nimport type { Tokenizer } from \"./tokenizer\"\nimport type { ParserOptions } from \"../common/parser-options\"\nimport {\n    isSFCFile,\n    getScriptParser,\n    getParserLangFromSFC,\n} from \"../common/parser-options\"\nimport sortedIndexBy from \"lodash/sortedIndexBy\"\nimport sortedLastIndexBy from \"lodash/sortedLastIndexBy\"\nimport type {\n    CustomTemplateTokenizer,\n    CustomTemplateTokenizerConstructor,\n} from \"./custom-tokenizer\"\nimport { isScriptSetupElement, isTSLang } from \"../common/ast-utils\"\n\nconst DIRECTIVE_NAME = /^(?:v-|[.:@#]).*[^.:@#]$/u\nconst DT_DD = /^d[dt]$/u\nconst DUMMY_PARENT: any = Object.freeze({})\n\n/**\n * Gets the tag name from the given node or token.\n * For SFC, it returns the value of `rawName` to be case sensitive.\n */\nfunction getTagName(\n    startTagOrElement: { name: string; rawName: string },\n    isSFC: boolean,\n) {\n    return isSFC ? startTagOrElement.rawName : startTagOrElement.name\n}\n\n/**\n * Check whether the element is a MathML text integration point or not.\n * @see https://html.spec.whatwg.org/multipage/parsing.html#tree-construction-dispatcher\n * @param element The current element.\n * @param isSFC For SFC, give `true`.\n * @returns `true` if the element is a MathML text integration point.\n */\nfunction isMathMLIntegrationPoint(element: VElement, isSFC: boolean): boolean {\n    if (element.namespace === NS.MathML) {\n        const name = getTagName(element, isSFC)\n        return (\n            name === \"mi\" ||\n            name === \"mo\" ||\n            name === \"mn\" ||\n            name === \"ms\" ||\n            name === \"mtext\"\n        )\n    }\n    return false\n}\n\n/**\n * Check whether the element is a HTML integration point or not.\n * @see https://html.spec.whatwg.org/multipage/parsing.html#tree-construction-dispatcher\n * @param element The current element.\n * @param isSFC For SFC, give `true`.\n * @returns `true` if the element is a HTML integration point.\n */\nfunction isHTMLIntegrationPoint(element: VElement, isSFC: boolean): boolean {\n    if (element.namespace === NS.MathML) {\n        return (\n            getTagName(element, isSFC) === \"annotation-xml\" &&\n            element.startTag.attributes.some(\n                (a) =>\n                    a.directive === false &&\n                    a.key.name === \"encoding\" &&\n                    a.value != null &&\n                    (a.value.value === \"text/html\" ||\n                        a.value.value === \"application/xhtml+xml\"),\n            )\n        )\n    }\n    if (element.namespace === NS.SVG) {\n        const name = getTagName(element, isSFC)\n        return name === \"foreignObject\" || name === \"desc\" || name === \"title\"\n    }\n\n    return false\n}\n\n/**\n * Adjust element names by the current namespace.\n * @param name The lowercase element name to adjust.\n * @param namespace The current namespace.\n * @returns The adjusted element name.\n */\nfunction adjustElementName(name: string, namespace: Namespace): string {\n    if (namespace === NS.SVG) {\n        return SVG_ELEMENT_NAME_MAP.get(name) || name\n    }\n    return name\n}\n\n/**\n * Adjust attribute names by the current namespace.\n * @param name The lowercase attribute name to adjust.\n * @param namespace The current namespace.\n * @returns The adjusted attribute name.\n */\nfunction adjustAttributeName(name: string, namespace: Namespace): string {\n    if (namespace === NS.SVG) {\n        return SVG_ATTRIBUTE_NAME_MAP.get(name) || name\n    }\n    if (namespace === NS.MathML) {\n        return MATHML_ATTRIBUTE_NAME_MAP.get(name) || name\n    }\n    return name\n}\n\n/**\n * Set the location of the last child node to the end location of the given node.\n * @param node The node to commit the end location.\n */\nfunction propagateEndLocation(node: VDocumentFragment | VElement): void {\n    const lastChild =\n        (node.type === \"VElement\" ? node.endTag : null) || last(node.children)\n    if (lastChild != null) {\n        node.range[1] = lastChild.range[1]\n        node.loc.end = lastChild.loc.end\n    }\n}\n\n/**\n * The parser of HTML.\n * This is not following to the HTML spec completely because Vue.js template spec is pretty different to HTML.\n */\nexport class Parser {\n    private tokenizer: IntermediateTokenizer | CustomTemplateTokenizer\n    private locationCalculator: LocationCalculatorForHtml\n    private baseParserOptions: ParserOptions\n    private isSFC: boolean\n    private document: VDocumentFragment\n    private elementStack: VElement[]\n    private vPreElement: VElement | null\n    private postProcessesForScript: ((\n        htmlParserOptions: ParserOptions,\n        scriptParserOptions: ParserOptions,\n    ) => void)[] = []\n\n    /**\n     * The source code text.\n     */\n    private get text(): string {\n        return this.tokenizer.text\n    }\n\n    /**\n     * The tokens.\n     */\n    private get tokens(): Token[] {\n        return this.tokenizer.tokens\n    }\n\n    /**\n     * The comments.\n     */\n    private get comments(): Token[] {\n        return this.tokenizer.comments\n    }\n\n    /**\n     * The syntax errors which are found in this parsing.\n     */\n    private get errors(): ParseError[] {\n        return this.tokenizer.errors\n    }\n\n    /**\n     * The current namespace.\n     */\n    private get namespace(): Namespace {\n        return this.tokenizer.namespace\n    }\n    private set namespace(value: Namespace) {\n        this.tokenizer.namespace = value\n    }\n\n    /**\n     * The current flag of expression enabled.\n     */\n    private get expressionEnabled(): boolean {\n        return this.tokenizer.expressionEnabled\n    }\n    private set expressionEnabled(value: boolean) {\n        this.tokenizer.expressionEnabled = value\n    }\n\n    /**\n     * Get the current node.\n     */\n    private get currentNode(): VDocumentFragment | VElement {\n        return last(this.elementStack) || this.document\n    }\n\n    /**\n     * Check if the current location is in a v-pre element.\n     */\n    private get isInVPreElement(): boolean {\n        return this.vPreElement != null\n    }\n\n    /**\n     * Initialize this parser.\n     * @param tokenizer The tokenizer to parse.\n     * @param parserOptions The parser options to parse inline expressions.\n     */\n    public constructor(tokenizer: Tokenizer, parserOptions: ParserOptions) {\n        this.tokenizer = new IntermediateTokenizer(tokenizer)\n        this.locationCalculator = new LocationCalculatorForHtml(\n            tokenizer.gaps,\n            tokenizer.lineTerminators,\n        )\n        this.baseParserOptions = parserOptions\n        this.isSFC = isSFCFile(parserOptions)\n        this.document = {\n            type: \"VDocumentFragment\",\n            range: [0, 0],\n            loc: {\n                start: { line: 1, column: 0 },\n                end: { line: 1, column: 0 },\n            },\n            parent: null,\n            children: [],\n            tokens: this.tokens,\n            comments: this.comments,\n            errors: this.errors,\n        }\n        this.elementStack = []\n        this.vPreElement = null\n\n        this.postProcessesForScript = []\n    }\n\n    /**\n     * Parse the HTML which was given in this constructor.\n     * @returns The result of parsing.\n     */\n    public parse(): VDocumentFragment {\n        let token: IntermediateToken | null = null\n        while ((token = this.tokenizer.nextToken()) != null) {\n            ;(this as any)[token.type](token)\n        }\n\n        this.popElementStackUntil(0)\n        propagateEndLocation(this.document)\n\n        const doc = this.document\n\n        const htmlParserOptions = {\n            ...this.baseParserOptions,\n            parser: getScriptParser(\n                this.baseParserOptions.parser,\n                function* () {\n                    yield \"<template>\"\n                    yield getParserLangFromSFC(doc)\n                },\n            ),\n        }\n        const scriptParserOptions = {\n            ...this.baseParserOptions,\n            parser: getScriptParser(this.baseParserOptions.parser, () =>\n                getParserLangFromSFC(doc),\n            ),\n        }\n        for (const proc of this.postProcessesForScript) {\n            proc(htmlParserOptions, scriptParserOptions)\n        }\n        this.postProcessesForScript = []\n\n        return doc\n    }\n\n    /**\n     * Report an invalid character error.\n     * @param code The error code.\n     */\n    private reportParseError(token: HasLocation, code: ErrorCode): void {\n        const error = ParseError.fromCode(\n            code,\n            token.range[0],\n            token.loc.start.line,\n            token.loc.start.column,\n        )\n        this.errors.push(error)\n\n        debug(\"[html] syntax error:\", error.message)\n    }\n\n    /**\n     * Pop an element from the current element stack.\n     */\n    private popElementStack(): void {\n        assert(this.elementStack.length >= 1)\n\n        const element = this.elementStack.pop()!\n        propagateEndLocation(element)\n\n        // Update the current namespace.\n        const current = this.currentNode\n        this.namespace =\n            current.type === \"VElement\" ? current.namespace : NS.HTML\n\n        // Update v-pre state.\n        if (this.vPreElement === element) {\n            this.vPreElement = null\n            this.expressionEnabled = true\n        }\n\n        // Update expression flag.\n        if (this.elementStack.length === 0) {\n            this.expressionEnabled = false\n        }\n    }\n\n    /**\n     * Pop elements from the current element stack.\n     * @param index The index of the element you want to pop.\n     */\n    private popElementStackUntil(index: number): void {\n        while (this.elementStack.length > index) {\n            this.popElementStack()\n        }\n    }\n\n    /**\n     * Gets the tag name from the given node or token.\n     * For SFC, it returns the value of `rawName` to be case sensitive.\n     */\n    private getTagName(startTagOrElement: { name: string; rawName: string }) {\n        return getTagName(startTagOrElement, this.isSFC)\n    }\n\n    /**\n     * Detect the namespace of the new element.\n     * @param token The StartTag token to detect.\n     * @returns The namespace of the new element.\n     */\n    //eslint-disable-next-line complexity\n    private detectNamespace(token: StartTag): Namespace {\n        const name = this.getTagName(token)\n        let ns = this.namespace\n\n        if (ns === NS.MathML || ns === NS.SVG) {\n            const element = this.currentNode\n            if (element.type === \"VElement\") {\n                if (\n                    element.namespace === NS.MathML &&\n                    this.getTagName(element) === \"annotation-xml\" &&\n                    name === \"svg\"\n                ) {\n                    return NS.SVG\n                }\n                if (\n                    isHTMLIntegrationPoint(element, this.isSFC) ||\n                    (isMathMLIntegrationPoint(element, this.isSFC) &&\n                        name !== \"mglyph\" &&\n                        name !== \"malignmark\")\n                ) {\n                    ns = NS.HTML\n                }\n            }\n        }\n\n        if (ns === NS.HTML) {\n            if (name === \"svg\") {\n                return NS.SVG\n            }\n            if (name === \"math\") {\n                return NS.MathML\n            }\n        }\n\n        if (name === \"template\") {\n            const xmlns = token.attributes.find((a) => a.key.name === \"xmlns\")\n            const value = xmlns && xmlns.value && xmlns.value.value\n\n            if (value === NS.HTML || value === NS.MathML || value === NS.SVG) {\n                return value\n            }\n        }\n\n        return ns\n    }\n\n    /**\n     * Close the current element if necessary.\n     * @param token The start tag to check.\n     */\n    private closeCurrentElementIfNecessary(token: StartTag): void {\n        const element = this.currentNode\n        if (element.type !== \"VElement\") {\n            return\n        }\n        const name = this.getTagName(token)\n        const elementName = this.getTagName(element)\n\n        if (elementName === \"p\" && HTML_NON_FHRASING_TAGS.has(name)) {\n            this.popElementStack()\n        }\n        if (elementName === name && HTML_CAN_BE_LEFT_OPEN_TAGS.has(name)) {\n            this.popElementStack()\n        }\n        if (DT_DD.test(elementName) && DT_DD.test(name)) {\n            this.popElementStack()\n        }\n    }\n\n    /**\n     * Adjust and validate the given attribute node.\n     * @param node The attribute node to handle.\n     * @param namespace The current namespace.\n     */\n    private processAttribute(node: VAttribute, namespace: Namespace): void {\n        if (this.needConvertToDirective(node)) {\n            this.postProcessesForScript.push(\n                (parserOptions, scriptParserOptions) => {\n                    convertToDirective(\n                        this.text,\n                        parserOptions,\n                        scriptParserOptions,\n                        this.locationCalculator,\n                        node,\n                    )\n                },\n            )\n            return\n        }\n\n        node.key.name = adjustAttributeName(node.key.name, namespace)\n        const key = this.getTagName(node.key)\n        const value = node.value && node.value.value\n\n        if (key === \"xmlns\" && value !== namespace) {\n            this.reportParseError(node, \"x-invalid-namespace\")\n        } else if (key === \"xmlns:xlink\" && value !== NS.XLink) {\n            this.reportParseError(node, \"x-invalid-namespace\")\n        }\n    }\n    /**\n     * Checks whether the given attribute node is need convert to directive.\n     * @param node The node to check\n     */\n    private needConvertToDirective(node: VAttribute) {\n        const element = node.parent.parent\n        const tagName = this.getTagName(element)\n        const attrName = this.getTagName(node.key)\n\n        if (\n            attrName === \"generic\" &&\n            element.parent.type === \"VDocumentFragment\" &&\n            isScriptSetupElement(element) &&\n            isTSLang(element)\n        ) {\n            return true\n        }\n        const expressionEnabled =\n            this.expressionEnabled ||\n            (attrName === \"v-pre\" && !this.isInVPreElement)\n        if (!expressionEnabled) {\n            return false\n        }\n        return (\n            DIRECTIVE_NAME.test(attrName) ||\n            attrName === \"slot-scope\" ||\n            (tagName === \"template\" && attrName === \"scope\")\n        )\n    }\n\n    /**\n     * Process the given template text token with a configured template tokenizer, based on language.\n     * @param token The template text token to process.\n     * @param templateTokenizerOption The template tokenizer option.\n     */\n    private processTemplateText(\n        token: Text,\n        templateTokenizerOption: string | CustomTemplateTokenizerConstructor,\n    ): void {\n        const TemplateTokenizer: CustomTemplateTokenizerConstructor =\n            typeof templateTokenizerOption === \"function\"\n                ? templateTokenizerOption\n                : // eslint-disable-next-line @typescript-eslint/no-require-imports\n                  require(templateTokenizerOption)\n        const templateTokenizer = new TemplateTokenizer(\n            token.value,\n            this.text,\n            {\n                startingLine: token.loc.start.line,\n                startingColumn: token.loc.start.column,\n            },\n        )\n\n        // override this.tokenizer to forward expressionEnabled and state changes\n        const rootTokenizer = this.tokenizer\n        this.tokenizer = templateTokenizer\n\n        let templateToken: IntermediateToken | null = null\n        while ((templateToken = templateTokenizer.nextToken()) != null) {\n            ;(this as any)[templateToken.type](templateToken)\n        }\n\n        this.tokenizer = rootTokenizer\n\n        const index = sortedIndexBy(\n            this.tokenizer.tokens,\n            token,\n            (x) => x.range[0],\n        )\n        const count =\n            sortedLastIndexBy(this.tokenizer.tokens, token, (x) => x.range[1]) -\n            index\n        this.tokenizer.tokens.splice(index, count, ...templateTokenizer.tokens)\n        this.tokenizer.comments.push(...templateTokenizer.comments)\n        this.tokenizer.errors.push(...templateTokenizer.errors)\n    }\n\n    /**\n     * Handle the start tag token.\n     * @param token The token to handle.\n     */\n    //eslint-disable-next-line complexity\n    protected StartTag(token: StartTag): void {\n        debug(\"[html] StartTag %j\", token)\n\n        this.closeCurrentElementIfNecessary(token)\n\n        const parent = this.currentNode\n        const namespace = this.detectNamespace(token)\n        const element: VElement = {\n            type: \"VElement\",\n            range: [token.range[0], token.range[1]],\n            loc: { start: token.loc.start, end: token.loc.end },\n            parent,\n            name: adjustElementName(token.name, namespace),\n            rawName: token.rawName,\n            namespace,\n            startTag: {\n                type: \"VStartTag\",\n                range: token.range,\n                loc: token.loc,\n                parent: DUMMY_PARENT,\n                selfClosing: token.selfClosing,\n                attributes: token.attributes,\n            },\n            children: [],\n            endTag: null,\n            variables: [],\n        }\n        const hasVPre =\n            !this.isInVPreElement &&\n            token.attributes.some((a) => this.getTagName(a.key) === \"v-pre\")\n\n        // Disable expression if v-pre\n        if (hasVPre) {\n            this.expressionEnabled = false\n        }\n\n        // Setup relations.\n        parent.children.push(element)\n        element.startTag.parent = element\n        for (const attribute of token.attributes) {\n            attribute.parent = element.startTag\n            this.processAttribute(attribute, namespace)\n        }\n\n        // Resolve references.\n        this.postProcessesForScript.push(() => {\n            for (const attribute of element.startTag.attributes) {\n                if (attribute.directive) {\n                    if (\n                        attribute.key.argument != null &&\n                        attribute.key.argument.type === \"VExpressionContainer\"\n                    ) {\n                        resolveReferences(attribute.key.argument)\n                    }\n                    if (attribute.value != null) {\n                        resolveReferences(attribute.value)\n                    }\n                }\n            }\n        })\n\n        // Check whether the self-closing is valid.\n        const isVoid =\n            namespace === NS.HTML &&\n            HTML_VOID_ELEMENT_TAGS.has(this.getTagName(element))\n        if (token.selfClosing && !isVoid && namespace === NS.HTML) {\n            this.reportParseError(\n                token,\n                \"non-void-html-element-start-tag-with-trailing-solidus\",\n            )\n        }\n\n        // Vue.js supports self-closing elements even if it's not one of void elements.\n        if (token.selfClosing || isVoid) {\n            this.expressionEnabled = !this.isInVPreElement\n            return\n        }\n\n        // Push to stack.\n        this.elementStack.push(element)\n        if (hasVPre) {\n            assert(this.vPreElement === null)\n            this.vPreElement = element\n        }\n        this.namespace = namespace\n\n        // Update the content type of this element.\n        if (namespace === NS.HTML) {\n            const elementName = this.getTagName(element)\n            if (element.parent.type === \"VDocumentFragment\") {\n                const langAttr = element.startTag.attributes.find(\n                    (a) => !a.directive && a.key.name === \"lang\",\n                ) as VAttribute | undefined\n                const lang = langAttr?.value?.value\n\n                if (elementName === \"template\") {\n                    this.expressionEnabled = true\n                    if (lang && lang !== \"html\") {\n                        // It is not an HTML template.\n                        this.tokenizer.state = \"RAWTEXT\"\n                        this.expressionEnabled = false\n                    }\n                } else if (this.isSFC) {\n                    // Element is Custom Block. e.g. <i18n>\n                    // Referred to the Vue parser. See https://github.com/vuejs/vue-next/blob/cbaa3805064cb581fc2007cf63774c91d39844fe/packages/compiler-sfc/src/parse.ts#L127\n                    if (!lang || lang !== \"html\") {\n                        // Custom Block is not HTML.\n                        this.tokenizer.state = \"RAWTEXT\"\n                    }\n                } else {\n                    if (HTML_RCDATA_TAGS.has(elementName)) {\n                        this.tokenizer.state = \"RCDATA\"\n                    }\n                    if (HTML_RAWTEXT_TAGS.has(elementName)) {\n                        this.tokenizer.state = \"RAWTEXT\"\n                    }\n                }\n            } else {\n                if (HTML_RCDATA_TAGS.has(elementName)) {\n                    this.tokenizer.state = \"RCDATA\"\n                }\n                if (HTML_RAWTEXT_TAGS.has(elementName)) {\n                    this.tokenizer.state = \"RAWTEXT\"\n                }\n            }\n        }\n    }\n\n    /**\n     * Handle the end tag token.\n     * @param token The token to handle.\n     */\n    protected EndTag(token: EndTag): void {\n        debug(\"[html] EndTag %j\", token)\n\n        const i = findLastIndex(\n            this.elementStack,\n            (el) => el.name.toLowerCase() === token.name,\n        )\n        if (i === -1) {\n            this.reportParseError(token, \"x-invalid-end-tag\")\n            return\n        }\n\n        const element = this.elementStack[i]\n        element.endTag = {\n            type: \"VEndTag\",\n            range: token.range,\n            loc: token.loc,\n            parent: element,\n        }\n\n        this.popElementStackUntil(i)\n    }\n\n    /**\n     * Handle the text token.\n     * @param token The token to handle.\n     */\n    protected Text(token: Text): void {\n        debug(\"[html] Text %j\", token)\n        const parent = this.currentNode\n        if (\n            token.value &&\n            parent.type === \"VElement\" &&\n            parent.name === \"template\" &&\n            parent.parent.type === \"VDocumentFragment\"\n        ) {\n            const langAttribute = parent.startTag.attributes.find(\n                (a) => a.key.name === \"lang\",\n            )\n            const lang = (langAttribute?.value as VLiteral)?.value\n            if (lang && lang !== \"html\") {\n                const templateTokenizerOption =\n                    this.baseParserOptions.templateTokenizer?.[lang]\n                if (templateTokenizerOption) {\n                    this.processTemplateText(token, templateTokenizerOption)\n                    return\n                }\n            }\n        }\n        parent.children.push({\n            type: \"VText\",\n            range: token.range,\n            loc: token.loc,\n            parent,\n            value: token.value,\n        })\n    }\n\n    /**\n     * Handle the text token.\n     * @param token The token to handle.\n     */\n    protected Mustache(token: Mustache): void {\n        debug(\"[html] Mustache %j\", token)\n\n        const parent = this.currentNode\n        const container: VExpressionContainer = {\n            type: \"VExpressionContainer\",\n            range: token.range,\n            loc: token.loc,\n            parent,\n            expression: null,\n            references: [],\n        }\n        // Set relationship.\n        parent.children.push(container)\n\n        this.postProcessesForScript.push((parserOptions) => {\n            processMustache(\n                parserOptions,\n                this.locationCalculator,\n                container,\n                token,\n            )\n            // Resolve references.\n            resolveReferences(container)\n        })\n    }\n}\n","/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * @copyright 2017 Toru Nagashima. All rights reserved.\n * See LICENSE file in root directory for full license.\n */\n\n/**\n * Code mapping of HTML numeric entities.\n */\nexport const alternativeCR = new Map(\n    [[128, 8364], [130, 8218], [131, 402], [132, 8222], [133, 8230], [134, 8224], [135, 8225], [136, 710], [137, 8240], [138, 352], [139, 8249], [140, 338], [142, 381], [145, 8216], [146, 8217], [147, 8220], [148, 8221], [149, 8226], [150, 8211], [151, 8212], [152, 732], [153, 8482], [154, 353], [155, 8250], [156, 339], [158, 382], [159, 376]]\n)\n","/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * @copyright 2017 Toru Nagashima. All rights reserved.\n * See LICENSE file in root directory for full license.\n */\n\n/**\n * HTML entities which are separated by their length.\n */\nexport const entitySets: {\n    length: number,\n    entities: {\n        [name: string]: number[] | undefined\n    }\n}[] = [{\"length\":32,\"entities\":{\"CounterClockwiseContourIntegral;\":[8755]}},{\"length\":25,\"entities\":{\"ClockwiseContourIntegral;\":[8754],\"DoubleLongLeftRightArrow;\":[10234]}},{\"length\":24,\"entities\":{\"NotNestedGreaterGreater;\":[10914,824]}},{\"length\":23,\"entities\":{\"DiacriticalDoubleAcute;\":[733],\"NotSquareSupersetEqual;\":[8931]}},{\"length\":22,\"entities\":{\"CloseCurlyDoubleQuote;\":[8221],\"DoubleContourIntegral;\":[8751],\"FilledVerySmallSquare;\":[9642],\"NegativeVeryThinSpace;\":[8203],\"NotPrecedesSlantEqual;\":[8928],\"NotRightTriangleEqual;\":[8941],\"NotSucceedsSlantEqual;\":[8929]}},{\"length\":21,\"entities\":{\"CapitalDifferentialD;\":[8517],\"DoubleLeftRightArrow;\":[8660],\"DoubleLongRightArrow;\":[10233],\"EmptyVerySmallSquare;\":[9643],\"NestedGreaterGreater;\":[8811],\"NotDoubleVerticalBar;\":[8742],\"NotGreaterSlantEqual;\":[10878,824],\"NotLeftTriangleEqual;\":[8940],\"NotSquareSubsetEqual;\":[8930],\"OpenCurlyDoubleQuote;\":[8220],\"ReverseUpEquilibrium;\":[10607]}},{\"length\":20,\"entities\":{\"DoubleLongLeftArrow;\":[10232],\"DownLeftRightVector;\":[10576],\"LeftArrowRightArrow;\":[8646],\"NegativeMediumSpace;\":[8203],\"NotGreaterFullEqual;\":[8807,824],\"NotRightTriangleBar;\":[10704,824],\"RightArrowLeftArrow;\":[8644],\"SquareSupersetEqual;\":[8850],\"leftrightsquigarrow;\":[8621]}},{\"length\":19,\"entities\":{\"DownRightTeeVector;\":[10591],\"DownRightVectorBar;\":[10583],\"LongLeftRightArrow;\":[10231],\"Longleftrightarrow;\":[10234],\"NegativeThickSpace;\":[8203],\"NotLeftTriangleBar;\":[10703,824],\"PrecedesSlantEqual;\":[8828],\"ReverseEquilibrium;\":[8651],\"RightDoubleBracket;\":[10215],\"RightDownTeeVector;\":[10589],\"RightDownVectorBar;\":[10581],\"RightTriangleEqual;\":[8885],\"SquareIntersection;\":[8851],\"SucceedsSlantEqual;\":[8829],\"blacktriangleright;\":[9656],\"longleftrightarrow;\":[10231]}},{\"length\":18,\"entities\":{\"DoubleUpDownArrow;\":[8661],\"DoubleVerticalBar;\":[8741],\"DownLeftTeeVector;\":[10590],\"DownLeftVectorBar;\":[10582],\"FilledSmallSquare;\":[9724],\"GreaterSlantEqual;\":[10878],\"LeftDoubleBracket;\":[10214],\"LeftDownTeeVector;\":[10593],\"LeftDownVectorBar;\":[10585],\"LeftTriangleEqual;\":[8884],\"NegativeThinSpace;\":[8203],\"NotGreaterGreater;\":[8811,824],\"NotLessSlantEqual;\":[10877,824],\"NotNestedLessLess;\":[10913,824],\"NotReverseElement;\":[8716],\"NotSquareSuperset;\":[8848,824],\"NotTildeFullEqual;\":[8775],\"RightAngleBracket;\":[10217],\"RightUpDownVector;\":[10575],\"SquareSubsetEqual;\":[8849],\"VerticalSeparator;\":[10072],\"blacktriangledown;\":[9662],\"blacktriangleleft;\":[9666],\"leftrightharpoons;\":[8651],\"rightleftharpoons;\":[8652],\"twoheadrightarrow;\":[8608]}},{\"length\":17,\"entities\":{\"DiacriticalAcute;\":[180],\"DiacriticalGrave;\":[96],\"DiacriticalTilde;\":[732],\"DoubleRightArrow;\":[8658],\"DownArrowUpArrow;\":[8693],\"EmptySmallSquare;\":[9723],\"GreaterEqualLess;\":[8923],\"GreaterFullEqual;\":[8807],\"LeftAngleBracket;\":[10216],\"LeftUpDownVector;\":[10577],\"LessEqualGreater;\":[8922],\"NonBreakingSpace;\":[160],\"NotPrecedesEqual;\":[10927,824],\"NotRightTriangle;\":[8939],\"NotSucceedsEqual;\":[10928,824],\"NotSucceedsTilde;\":[8831,824],\"NotSupersetEqual;\":[8841],\"RightTriangleBar;\":[10704],\"RightUpTeeVector;\":[10588],\"RightUpVectorBar;\":[10580],\"UnderParenthesis;\":[9181],\"UpArrowDownArrow;\":[8645],\"circlearrowright;\":[8635],\"downharpoonright;\":[8642],\"ntrianglerighteq;\":[8941],\"rightharpoondown;\":[8641],\"rightrightarrows;\":[8649],\"twoheadleftarrow;\":[8606],\"vartriangleright;\":[8883]}},{\"length\":16,\"entities\":{\"CloseCurlyQuote;\":[8217],\"ContourIntegral;\":[8750],\"DoubleDownArrow;\":[8659],\"DoubleLeftArrow;\":[8656],\"DownRightVector;\":[8641],\"LeftRightVector;\":[10574],\"LeftTriangleBar;\":[10703],\"LeftUpTeeVector;\":[10592],\"LeftUpVectorBar;\":[10584],\"LowerRightArrow;\":[8600],\"NotGreaterEqual;\":[8817],\"NotGreaterTilde;\":[8821],\"NotHumpDownHump;\":[8782,824],\"NotLeftTriangle;\":[8938],\"NotSquareSubset;\":[8847,824],\"OverParenthesis;\":[9180],\"RightDownVector;\":[8642],\"ShortRightArrow;\":[8594],\"UpperRightArrow;\":[8599],\"bigtriangledown;\":[9661],\"circlearrowleft;\":[8634],\"curvearrowright;\":[8631],\"downharpoonleft;\":[8643],\"leftharpoondown;\":[8637],\"leftrightarrows;\":[8646],\"nLeftrightarrow;\":[8654],\"nleftrightarrow;\":[8622],\"ntrianglelefteq;\":[8940],\"rightleftarrows;\":[8644],\"rightsquigarrow;\":[8605],\"rightthreetimes;\":[8908],\"straightepsilon;\":[1013],\"trianglerighteq;\":[8885],\"vartriangleleft;\":[8882]}},{\"length\":15,\"entities\":{\"DiacriticalDot;\":[729],\"DoubleRightTee;\":[8872],\"DownLeftVector;\":[8637],\"GreaterGreater;\":[10914],\"HorizontalLine;\":[9472],\"InvisibleComma;\":[8291],\"InvisibleTimes;\":[8290],\"LeftDownVector;\":[8643],\"LeftRightArrow;\":[8596],\"Leftrightarrow;\":[8660],\"LessSlantEqual;\":[10877],\"LongRightArrow;\":[10230],\"Longrightarrow;\":[10233],\"LowerLeftArrow;\":[8601],\"NestedLessLess;\":[8810],\"NotGreaterLess;\":[8825],\"NotLessGreater;\":[8824],\"NotSubsetEqual;\":[8840],\"NotVerticalBar;\":[8740],\"OpenCurlyQuote;\":[8216],\"ReverseElement;\":[8715],\"RightTeeVector;\":[10587],\"RightVectorBar;\":[10579],\"ShortDownArrow;\":[8595],\"ShortLeftArrow;\":[8592],\"SquareSuperset;\":[8848],\"TildeFullEqual;\":[8773],\"UpperLeftArrow;\":[8598],\"ZeroWidthSpace;\":[8203],\"curvearrowleft;\":[8630],\"doublebarwedge;\":[8966],\"downdownarrows;\":[8650],\"hookrightarrow;\":[8618],\"leftleftarrows;\":[8647],\"leftrightarrow;\":[8596],\"leftthreetimes;\":[8907],\"longrightarrow;\":[10230],\"looparrowright;\":[8620],\"nshortparallel;\":[8742],\"ntriangleright;\":[8939],\"rightarrowtail;\":[8611],\"rightharpoonup;\":[8640],\"trianglelefteq;\":[8884],\"upharpoonright;\":[8638]}},{\"length\":14,\"entities\":{\"ApplyFunction;\":[8289],\"DifferentialD;\":[8518],\"DoubleLeftTee;\":[10980],\"DoubleUpArrow;\":[8657],\"LeftTeeVector;\":[10586],\"LeftVectorBar;\":[10578],\"LessFullEqual;\":[8806],\"LongLeftArrow;\":[10229],\"Longleftarrow;\":[10232],\"NotEqualTilde;\":[8770,824],\"NotTildeEqual;\":[8772],\"NotTildeTilde;\":[8777],\"Poincareplane;\":[8460],\"PrecedesEqual;\":[10927],\"PrecedesTilde;\":[8830],\"RightArrowBar;\":[8677],\"RightTeeArrow;\":[8614],\"RightTriangle;\":[8883],\"RightUpVector;\":[8638],\"SucceedsEqual;\":[10928],\"SucceedsTilde;\":[8831],\"SupersetEqual;\":[8839],\"UpEquilibrium;\":[10606],\"VerticalTilde;\":[8768],\"VeryThinSpace;\":[8202],\"bigtriangleup;\":[9651],\"blacktriangle;\":[9652],\"divideontimes;\":[8903],\"fallingdotseq;\":[8786],\"hookleftarrow;\":[8617],\"leftarrowtail;\":[8610],\"leftharpoonup;\":[8636],\"longleftarrow;\":[10229],\"looparrowleft;\":[8619],\"measuredangle;\":[8737],\"ntriangleleft;\":[8938],\"shortparallel;\":[8741],\"smallsetminus;\":[8726],\"triangleright;\":[9657],\"upharpoonleft;\":[8639],\"varsubsetneqq;\":[10955,65024],\"varsupsetneqq;\":[10956,65024]}},{\"length\":13,\"entities\":{\"DownArrowBar;\":[10515],\"DownTeeArrow;\":[8615],\"ExponentialE;\":[8519],\"GreaterEqual;\":[8805],\"GreaterTilde;\":[8819],\"HilbertSpace;\":[8459],\"HumpDownHump;\":[8782],\"Intersection;\":[8898],\"LeftArrowBar;\":[8676],\"LeftTeeArrow;\":[8612],\"LeftTriangle;\":[8882],\"LeftUpVector;\":[8639],\"NotCongruent;\":[8802],\"NotHumpEqual;\":[8783,824],\"NotLessEqual;\":[8816],\"NotLessTilde;\":[8820],\"Proportional;\":[8733],\"RightCeiling;\":[8969],\"RoundImplies;\":[10608],\"ShortUpArrow;\":[8593],\"SquareSubset;\":[8847],\"UnderBracket;\":[9141],\"VerticalLine;\":[124],\"blacklozenge;\":[10731],\"exponentiale;\":[8519],\"risingdotseq;\":[8787],\"triangledown;\":[9663],\"triangleleft;\":[9667],\"varsubsetneq;\":[8842,65024],\"varsupsetneq;\":[8843,65024]}},{\"length\":12,\"entities\":{\"CircleMinus;\":[8854],\"CircleTimes;\":[8855],\"Equilibrium;\":[8652],\"GreaterLess;\":[8823],\"LeftCeiling;\":[8968],\"LessGreater;\":[8822],\"MediumSpace;\":[8287],\"NotLessLess;\":[8810,824],\"NotPrecedes;\":[8832],\"NotSucceeds;\":[8833],\"NotSuperset;\":[8835,8402],\"OverBracket;\":[9140],\"RightVector;\":[8640],\"Rrightarrow;\":[8667],\"RuleDelayed;\":[10740],\"SmallCircle;\":[8728],\"SquareUnion;\":[8852],\"SubsetEqual;\":[8838],\"UpDownArrow;\":[8597],\"Updownarrow;\":[8661],\"VerticalBar;\":[8739],\"backepsilon;\":[1014],\"blacksquare;\":[9642],\"circledcirc;\":[8858],\"circleddash;\":[8861],\"curlyeqprec;\":[8926],\"curlyeqsucc;\":[8927],\"diamondsuit;\":[9830],\"eqslantless;\":[10901],\"expectation;\":[8496],\"nRightarrow;\":[8655],\"nrightarrow;\":[8603],\"preccurlyeq;\":[8828],\"precnapprox;\":[10937],\"quaternions;\":[8461],\"straightphi;\":[981],\"succcurlyeq;\":[8829],\"succnapprox;\":[10938],\"thickapprox;\":[8776],\"updownarrow;\":[8597]}},{\"length\":11,\"entities\":{\"Bernoullis;\":[8492],\"CirclePlus;\":[8853],\"EqualTilde;\":[8770],\"Fouriertrf;\":[8497],\"ImaginaryI;\":[8520],\"Laplacetrf;\":[8466],\"LeftVector;\":[8636],\"Lleftarrow;\":[8666],\"NotElement;\":[8713],\"NotGreater;\":[8815],\"Proportion;\":[8759],\"RightArrow;\":[8594],\"RightFloor;\":[8971],\"Rightarrow;\":[8658],\"ThickSpace;\":[8287,8202],\"TildeEqual;\":[8771],\"TildeTilde;\":[8776],\"UnderBrace;\":[9183],\"UpArrowBar;\":[10514],\"UpTeeArrow;\":[8613],\"circledast;\":[8859],\"complement;\":[8705],\"curlywedge;\":[8911],\"eqslantgtr;\":[10902],\"gtreqqless;\":[10892],\"lessapprox;\":[10885],\"lesseqqgtr;\":[10891],\"lmoustache;\":[9136],\"longmapsto;\":[10236],\"mapstodown;\":[8615],\"mapstoleft;\":[8612],\"nLeftarrow;\":[8653],\"nleftarrow;\":[8602],\"nsubseteqq;\":[10949,824],\"nsupseteqq;\":[10950,824],\"precapprox;\":[10935],\"rightarrow;\":[8594],\"rmoustache;\":[9137],\"sqsubseteq;\":[8849],\"sqsupseteq;\":[8850],\"subsetneqq;\":[10955],\"succapprox;\":[10936],\"supsetneqq;\":[10956],\"upuparrows;\":[8648],\"varepsilon;\":[1013],\"varnothing;\":[8709]}},{\"length\":10,\"entities\":{\"Backslash;\":[8726],\"CenterDot;\":[183],\"CircleDot;\":[8857],\"Congruent;\":[8801],\"Coproduct;\":[8720],\"DoubleDot;\":[168],\"DownArrow;\":[8595],\"DownBreve;\":[785],\"Downarrow;\":[8659],\"HumpEqual;\":[8783],\"LeftArrow;\":[8592],\"LeftFloor;\":[8970],\"Leftarrow;\":[8656],\"LessTilde;\":[8818],\"Mellintrf;\":[8499],\"MinusPlus;\":[8723],\"NotCupCap;\":[8813],\"NotExists;\":[8708],\"NotSubset;\":[8834,8402],\"OverBrace;\":[9182],\"PlusMinus;\":[177],\"Therefore;\":[8756],\"ThinSpace;\":[8201],\"TripleDot;\":[8411],\"UnionPlus;\":[8846],\"backprime;\":[8245],\"backsimeq;\":[8909],\"bigotimes;\":[10754],\"centerdot;\":[183],\"checkmark;\":[10003],\"complexes;\":[8450],\"dotsquare;\":[8865],\"downarrow;\":[8595],\"gtrapprox;\":[10886],\"gtreqless;\":[8923],\"gvertneqq;\":[8809,65024],\"heartsuit;\":[9829],\"leftarrow;\":[8592],\"lesseqgtr;\":[8922],\"lvertneqq;\":[8808,65024],\"ngeqslant;\":[10878,824],\"nleqslant;\":[10877,824],\"nparallel;\":[8742],\"nshortmid;\":[8740],\"nsubseteq;\":[8840],\"nsupseteq;\":[8841],\"pitchfork;\":[8916],\"rationals;\":[8474],\"spadesuit;\":[9824],\"subseteqq;\":[10949],\"subsetneq;\":[8842],\"supseteqq;\":[10950],\"supsetneq;\":[8843],\"therefore;\":[8756],\"triangleq;\":[8796],\"varpropto;\":[8733]}},{\"length\":9,\"entities\":{\"DDotrahd;\":[10513],\"DotEqual;\":[8784],\"Integral;\":[8747],\"LessLess;\":[10913],\"NotEqual;\":[8800],\"NotTilde;\":[8769],\"PartialD;\":[8706],\"Precedes;\":[8826],\"RightTee;\":[8866],\"Succeeds;\":[8827],\"SuchThat;\":[8715],\"Superset;\":[8835],\"Uarrocir;\":[10569],\"UnderBar;\":[95],\"andslope;\":[10840],\"angmsdaa;\":[10664],\"angmsdab;\":[10665],\"angmsdac;\":[10666],\"angmsdad;\":[10667],\"angmsdae;\":[10668],\"angmsdaf;\":[10669],\"angmsdag;\":[10670],\"angmsdah;\":[10671],\"angrtvbd;\":[10653],\"approxeq;\":[8778],\"awconint;\":[8755],\"backcong;\":[8780],\"barwedge;\":[8965],\"bbrktbrk;\":[9142],\"bigoplus;\":[10753],\"bigsqcup;\":[10758],\"biguplus;\":[10756],\"bigwedge;\":[8896],\"boxminus;\":[8863],\"boxtimes;\":[8864],\"bsolhsub;\":[10184],\"capbrcup;\":[10825],\"circledR;\":[174],\"circledS;\":[9416],\"cirfnint;\":[10768],\"clubsuit;\":[9827],\"cupbrcap;\":[10824],\"curlyvee;\":[8910],\"cwconint;\":[8754],\"doteqdot;\":[8785],\"dotminus;\":[8760],\"drbkarow;\":[10512],\"dzigrarr;\":[10239],\"elinters;\":[9191],\"emptyset;\":[8709],\"eqvparsl;\":[10725],\"fpartint;\":[10765],\"geqslant;\":[10878],\"gesdotol;\":[10884],\"gnapprox;\":[10890],\"hksearow;\":[10533],\"hkswarow;\":[10534],\"imagline;\":[8464],\"imagpart;\":[8465],\"infintie;\":[10717],\"integers;\":[8484],\"intercal;\":[8890],\"intlarhk;\":[10775],\"laemptyv;\":[10676],\"ldrushar;\":[10571],\"leqslant;\":[10877],\"lesdotor;\":[10883],\"llcorner;\":[8990],\"lnapprox;\":[10889],\"lrcorner;\":[8991],\"lurdshar;\":[10570],\"mapstoup;\":[8613],\"multimap;\":[8888],\"naturals;\":[8469],\"ncongdot;\":[10861,824],\"notindot;\":[8949,824],\"otimesas;\":[10806],\"parallel;\":[8741],\"plusacir;\":[10787],\"pointint;\":[10773],\"precneqq;\":[10933],\"precnsim;\":[8936],\"profalar;\":[9006],\"profline;\":[8978],\"profsurf;\":[8979],\"raemptyv;\":[10675],\"realpart;\":[8476],\"rppolint;\":[10770],\"rtriltri;\":[10702],\"scpolint;\":[10771],\"setminus;\":[8726],\"shortmid;\":[8739],\"smeparsl;\":[10724],\"sqsubset;\":[8847],\"sqsupset;\":[8848],\"subseteq;\":[8838],\"succneqq;\":[10934],\"succnsim;\":[8937],\"supseteq;\":[8839],\"thetasym;\":[977],\"thicksim;\":[8764],\"timesbar;\":[10801],\"triangle;\":[9653],\"triminus;\":[10810],\"trpezium;\":[9186],\"ulcorner;\":[8988],\"urcorner;\":[8989],\"varkappa;\":[1008],\"varsigma;\":[962],\"vartheta;\":[977]}},{\"length\":8,\"entities\":{\"Because;\":[8757],\"Cayleys;\":[8493],\"Cconint;\":[8752],\"Cedilla;\":[184],\"Diamond;\":[8900],\"DownTee;\":[8868],\"Element;\":[8712],\"Epsilon;\":[917],\"Implies;\":[8658],\"LeftTee;\":[8867],\"NewLine;\":[10],\"NoBreak;\":[8288],\"NotLess;\":[8814],\"Omicron;\":[927],\"OverBar;\":[8254],\"Product;\":[8719],\"UpArrow;\":[8593],\"Uparrow;\":[8657],\"Upsilon;\":[933],\"alefsym;\":[8501],\"angrtvb;\":[8894],\"angzarr;\":[9084],\"asympeq;\":[8781],\"backsim;\":[8765],\"because;\":[8757],\"bemptyv;\":[10672],\"between;\":[8812],\"bigcirc;\":[9711],\"bigodot;\":[10752],\"bigstar;\":[9733],\"bnequiv;\":[8801,8421],\"boxplus;\":[8862],\"ccupssm;\":[10832],\"cemptyv;\":[10674],\"cirscir;\":[10690],\"coloneq;\":[8788],\"congdot;\":[10861],\"cudarrl;\":[10552],\"cudarrr;\":[10549],\"cularrp;\":[10557],\"curarrm;\":[10556],\"dbkarow;\":[10511],\"ddagger;\":[8225],\"ddotseq;\":[10871],\"demptyv;\":[10673],\"diamond;\":[8900],\"digamma;\":[989],\"dotplus;\":[8724],\"dwangle;\":[10662],\"epsilon;\":[949],\"eqcolon;\":[8789],\"equivDD;\":[10872],\"gesdoto;\":[10882],\"gtquest;\":[10876],\"gtrless;\":[8823],\"harrcir;\":[10568],\"intprod;\":[10812],\"isindot;\":[8949],\"larrbfs;\":[10527],\"larrsim;\":[10611],\"lbrksld;\":[10639],\"lbrkslu;\":[10637],\"ldrdhar;\":[10599],\"lesdoto;\":[10881],\"lessdot;\":[8918],\"lessgtr;\":[8822],\"lesssim;\":[8818],\"lotimes;\":[10804],\"lozenge;\":[9674],\"ltquest;\":[10875],\"luruhar;\":[10598],\"maltese;\":[10016],\"minusdu;\":[10794],\"napprox;\":[8777],\"natural;\":[9838],\"nearrow;\":[8599],\"nexists;\":[8708],\"notinva;\":[8713],\"notinvb;\":[8951],\"notinvc;\":[8950],\"notniva;\":[8716],\"notnivb;\":[8958],\"notnivc;\":[8957],\"npolint;\":[10772],\"npreceq;\":[10927,824],\"nsqsube;\":[8930],\"nsqsupe;\":[8931],\"nsubset;\":[8834,8402],\"nsucceq;\":[10928,824],\"nsupset;\":[8835,8402],\"nvinfin;\":[10718],\"nvltrie;\":[8884,8402],\"nvrtrie;\":[8885,8402],\"nwarrow;\":[8598],\"olcross;\":[10683],\"omicron;\":[959],\"orderof;\":[8500],\"orslope;\":[10839],\"pertenk;\":[8241],\"planckh;\":[8462],\"pluscir;\":[10786],\"plussim;\":[10790],\"plustwo;\":[10791],\"precsim;\":[8830],\"quatint;\":[10774],\"questeq;\":[8799],\"rarrbfs;\":[10528],\"rarrsim;\":[10612],\"rbrksld;\":[10638],\"rbrkslu;\":[10640],\"rdldhar;\":[10601],\"realine;\":[8475],\"rotimes;\":[10805],\"ruluhar;\":[10600],\"searrow;\":[8600],\"simplus;\":[10788],\"simrarr;\":[10610],\"subedot;\":[10947],\"submult;\":[10945],\"subplus;\":[10943],\"subrarr;\":[10617],\"succsim;\":[8831],\"supdsub;\":[10968],\"supedot;\":[10948],\"suphsol;\":[10185],\"suphsub;\":[10967],\"suplarr;\":[10619],\"supmult;\":[10946],\"supplus;\":[10944],\"swarrow;\":[8601],\"topfork;\":[10970],\"triplus;\":[10809],\"tritime;\":[10811],\"uparrow;\":[8593],\"upsilon;\":[965],\"uwangle;\":[10663],\"vzigzag;\":[10650],\"zigrarr;\":[8669]}},{\"length\":7,\"entities\":{\"Aacute;\":[193],\"Abreve;\":[258],\"Agrave;\":[192],\"Assign;\":[8788],\"Atilde;\":[195],\"Barwed;\":[8966],\"Bumpeq;\":[8782],\"Cacute;\":[262],\"Ccaron;\":[268],\"Ccedil;\":[199],\"Colone;\":[10868],\"Conint;\":[8751],\"CupCap;\":[8781],\"Dagger;\":[8225],\"Dcaron;\":[270],\"DotDot;\":[8412],\"Dstrok;\":[272],\"Eacute;\":[201],\"Ecaron;\":[282],\"Egrave;\":[200],\"Exists;\":[8707],\"ForAll;\":[8704],\"Gammad;\":[988],\"Gbreve;\":[286],\"Gcedil;\":[290],\"HARDcy;\":[1066],\"Hstrok;\":[294],\"Iacute;\":[205],\"Igrave;\":[204],\"Itilde;\":[296],\"Jsercy;\":[1032],\"Kcedil;\":[310],\"Lacute;\":[313],\"Lambda;\":[923],\"Lcaron;\":[317],\"Lcedil;\":[315],\"Lmidot;\":[319],\"Lstrok;\":[321],\"Nacute;\":[323],\"Ncaron;\":[327],\"Ncedil;\":[325],\"Ntilde;\":[209],\"Oacute;\":[211],\"Odblac;\":[336],\"Ograve;\":[210],\"Oslash;\":[216],\"Otilde;\":[213],\"Otimes;\":[10807],\"Racute;\":[340],\"Rarrtl;\":[10518],\"Rcaron;\":[344],\"Rcedil;\":[342],\"SHCHcy;\":[1065],\"SOFTcy;\":[1068],\"Sacute;\":[346],\"Scaron;\":[352],\"Scedil;\":[350],\"Square;\":[9633],\"Subset;\":[8912],\"Supset;\":[8913],\"Tcaron;\":[356],\"Tcedil;\":[354],\"Tstrok;\":[358],\"Uacute;\":[218],\"Ubreve;\":[364],\"Udblac;\":[368],\"Ugrave;\":[217],\"Utilde;\":[360],\"Vdashl;\":[10982],\"Verbar;\":[8214],\"Vvdash;\":[8874],\"Yacute;\":[221],\"Zacute;\":[377],\"Zcaron;\":[381],\"aacute;\":[225],\"abreve;\":[259],\"agrave;\":[224],\"andand;\":[10837],\"angmsd;\":[8737],\"angsph;\":[8738],\"apacir;\":[10863],\"approx;\":[8776],\"atilde;\":[227],\"barvee;\":[8893],\"barwed;\":[8965],\"becaus;\":[8757],\"bernou;\":[8492],\"bigcap;\":[8898],\"bigcup;\":[8899],\"bigvee;\":[8897],\"bkarow;\":[10509],\"bottom;\":[8869],\"bowtie;\":[8904],\"boxbox;\":[10697],\"bprime;\":[8245],\"brvbar;\":[166],\"bullet;\":[8226],\"bumpeq;\":[8783],\"cacute;\":[263],\"capand;\":[10820],\"capcap;\":[10827],\"capcup;\":[10823],\"capdot;\":[10816],\"ccaron;\":[269],\"ccedil;\":[231],\"circeq;\":[8791],\"cirmid;\":[10991],\"colone;\":[8788],\"commat;\":[64],\"compfn;\":[8728],\"conint;\":[8750],\"coprod;\":[8720],\"copysr;\":[8471],\"cularr;\":[8630],\"cupcap;\":[10822],\"cupcup;\":[10826],\"cupdot;\":[8845],\"curarr;\":[8631],\"curren;\":[164],\"cylcty;\":[9005],\"dagger;\":[8224],\"daleth;\":[8504],\"dcaron;\":[271],\"dfisht;\":[10623],\"divide;\":[247],\"divonx;\":[8903],\"dlcorn;\":[8990],\"dlcrop;\":[8973],\"dollar;\":[36],\"drcorn;\":[8991],\"drcrop;\":[8972],\"dstrok;\":[273],\"eacute;\":[233],\"easter;\":[10862],\"ecaron;\":[283],\"ecolon;\":[8789],\"egrave;\":[232],\"egsdot;\":[10904],\"elsdot;\":[10903],\"emptyv;\":[8709],\"emsp13;\":[8196],\"emsp14;\":[8197],\"eparsl;\":[10723],\"eqcirc;\":[8790],\"equals;\":[61],\"equest;\":[8799],\"female;\":[9792],\"ffilig;\":[64259],\"ffllig;\":[64260],\"forall;\":[8704],\"frac12;\":[189],\"frac13;\":[8531],\"frac14;\":[188],\"frac15;\":[8533],\"frac16;\":[8537],\"frac18;\":[8539],\"frac23;\":[8532],\"frac25;\":[8534],\"frac34;\":[190],\"frac35;\":[8535],\"frac38;\":[8540],\"frac45;\":[8536],\"frac56;\":[8538],\"frac58;\":[8541],\"frac78;\":[8542],\"gacute;\":[501],\"gammad;\":[989],\"gbreve;\":[287],\"gesdot;\":[10880],\"gesles;\":[10900],\"gtlPar;\":[10645],\"gtrarr;\":[10616],\"gtrdot;\":[8919],\"gtrsim;\":[8819],\"hairsp;\":[8202],\"hamilt;\":[8459],\"hardcy;\":[1098],\"hearts;\":[9829],\"hellip;\":[8230],\"hercon;\":[8889],\"homtht;\":[8763],\"horbar;\":[8213],\"hslash;\":[8463],\"hstrok;\":[295],\"hybull;\":[8259],\"hyphen;\":[8208],\"iacute;\":[237],\"igrave;\":[236],\"iiiint;\":[10764],\"iinfin;\":[10716],\"incare;\":[8453],\"inodot;\":[305],\"intcal;\":[8890],\"iquest;\":[191],\"isinsv;\":[8947],\"itilde;\":[297],\"jsercy;\":[1112],\"kappav;\":[1008],\"kcedil;\":[311],\"kgreen;\":[312],\"lAtail;\":[10523],\"lacute;\":[314],\"lagran;\":[8466],\"lambda;\":[955],\"langle;\":[10216],\"larrfs;\":[10525],\"larrhk;\":[8617],\"larrlp;\":[8619],\"larrpl;\":[10553],\"larrtl;\":[8610],\"latail;\":[10521],\"lbrace;\":[123],\"lbrack;\":[91],\"lcaron;\":[318],\"lcedil;\":[316],\"ldquor;\":[8222],\"lesdot;\":[10879],\"lesges;\":[10899],\"lfisht;\":[10620],\"lfloor;\":[8970],\"lharul;\":[10602],\"llhard;\":[10603],\"lmidot;\":[320],\"lmoust;\":[9136],\"loplus;\":[10797],\"lowast;\":[8727],\"lowbar;\":[95],\"lparlt;\":[10643],\"lrhard;\":[10605],\"lsaquo;\":[8249],\"lsquor;\":[8218],\"lstrok;\":[322],\"lthree;\":[8907],\"ltimes;\":[8905],\"ltlarr;\":[10614],\"ltrPar;\":[10646],\"mapsto;\":[8614],\"marker;\":[9646],\"mcomma;\":[10793],\"midast;\":[42],\"midcir;\":[10992],\"middot;\":[183],\"minusb;\":[8863],\"minusd;\":[8760],\"mnplus;\":[8723],\"models;\":[8871],\"mstpos;\":[8766],\"nVDash;\":[8879],\"nVdash;\":[8878],\"nacute;\":[324],\"nbumpe;\":[8783,824],\"ncaron;\":[328],\"ncedil;\":[326],\"nearhk;\":[10532],\"nequiv;\":[8802],\"nesear;\":[10536],\"nexist;\":[8708],\"nltrie;\":[8940],\"notinE;\":[8953,824],\"nparsl;\":[11005,8421],\"nprcue;\":[8928],\"nrarrc;\":[10547,824],\"nrarrw;\":[8605,824],\"nrtrie;\":[8941],\"nsccue;\":[8929],\"nsimeq;\":[8772],\"ntilde;\":[241],\"numero;\":[8470],\"nvDash;\":[8877],\"nvHarr;\":[10500],\"nvdash;\":[8876],\"nvlArr;\":[10498],\"nvrArr;\":[10499],\"nwarhk;\":[10531],\"nwnear;\":[10535],\"oacute;\":[243],\"odblac;\":[337],\"odsold;\":[10684],\"ograve;\":[242],\"ominus;\":[8854],\"origof;\":[8886],\"oslash;\":[248],\"otilde;\":[245],\"otimes;\":[8855],\"parsim;\":[10995],\"percnt;\":[37],\"period;\":[46],\"permil;\":[8240],\"phmmat;\":[8499],\"planck;\":[8463],\"plankv;\":[8463],\"plusdo;\":[8724],\"plusdu;\":[10789],\"plusmn;\":[177],\"preceq;\":[10927],\"primes;\":[8473],\"prnsim;\":[8936],\"propto;\":[8733],\"prurel;\":[8880],\"puncsp;\":[8200],\"qprime;\":[8279],\"rAtail;\":[10524],\"racute;\":[341],\"rangle;\":[10217],\"rarrap;\":[10613],\"rarrfs;\":[10526],\"rarrhk;\":[8618],\"rarrlp;\":[8620],\"rarrpl;\":[10565],\"rarrtl;\":[8611],\"ratail;\":[10522],\"rbrace;\":[125],\"rbrack;\":[93],\"rcaron;\":[345],\"rcedil;\":[343],\"rdquor;\":[8221],\"rfisht;\":[10621],\"rfloor;\":[8971],\"rharul;\":[10604],\"rmoust;\":[9137],\"roplus;\":[10798],\"rpargt;\":[10644],\"rsaquo;\":[8250],\"rsquor;\":[8217],\"rthree;\":[8908],\"rtimes;\":[8906],\"sacute;\":[347],\"scaron;\":[353],\"scedil;\":[351],\"scnsim;\":[8937],\"searhk;\":[10533],\"seswar;\":[10537],\"sfrown;\":[8994],\"shchcy;\":[1097],\"sigmaf;\":[962],\"sigmav;\":[962],\"simdot;\":[10858],\"smashp;\":[10803],\"softcy;\":[1100],\"solbar;\":[9023],\"spades;\":[9824],\"sqcaps;\":[8851,65024],\"sqcups;\":[8852,65024],\"sqsube;\":[8849],\"sqsupe;\":[8850],\"square;\":[9633],\"squarf;\":[9642],\"ssetmn;\":[8726],\"ssmile;\":[8995],\"sstarf;\":[8902],\"subdot;\":[10941],\"subset;\":[8834],\"subsim;\":[10951],\"subsub;\":[10965],\"subsup;\":[10963],\"succeq;\":[10928],\"supdot;\":[10942],\"supset;\":[8835],\"supsim;\":[10952],\"supsub;\":[10964],\"supsup;\":[10966],\"swarhk;\":[10534],\"swnwar;\":[10538],\"target;\":[8982],\"tcaron;\":[357],\"tcedil;\":[355],\"telrec;\":[8981],\"there4;\":[8756],\"thetav;\":[977],\"thinsp;\":[8201],\"thksim;\":[8764],\"timesb;\":[8864],\"timesd;\":[10800],\"topbot;\":[9014],\"topcir;\":[10993],\"tprime;\":[8244],\"tridot;\":[9708],\"tstrok;\":[359],\"uacute;\":[250],\"ubreve;\":[365],\"udblac;\":[369],\"ufisht;\":[10622],\"ugrave;\":[249],\"ulcorn;\":[8988],\"ulcrop;\":[8975],\"urcorn;\":[8989],\"urcrop;\":[8974],\"utilde;\":[361],\"vangrt;\":[10652],\"varphi;\":[981],\"varrho;\":[1009],\"veebar;\":[8891],\"vellip;\":[8942],\"verbar;\":[124],\"vsubnE;\":[10955,65024],\"vsubne;\":[8842,65024],\"vsupnE;\":[10956,65024],\"vsupne;\":[8843,65024],\"wedbar;\":[10847],\"wedgeq;\":[8793],\"weierp;\":[8472],\"wreath;\":[8768],\"xoplus;\":[10753],\"xotime;\":[10754],\"xsqcup;\":[10758],\"xuplus;\":[10756],\"xwedge;\":[8896],\"yacute;\":[253],\"zacute;\":[378],\"zcaron;\":[382],\"zeetrf;\":[8488]}},{\"length\":6,\"entities\":{\"AElig;\":[198],\"Aacute\":[193],\"Acirc;\":[194],\"Agrave\":[192],\"Alpha;\":[913],\"Amacr;\":[256],\"Aogon;\":[260],\"Aring;\":[197],\"Atilde\":[195],\"Breve;\":[728],\"Ccedil\":[199],\"Ccirc;\":[264],\"Colon;\":[8759],\"Cross;\":[10799],\"Dashv;\":[10980],\"Delta;\":[916],\"Eacute\":[201],\"Ecirc;\":[202],\"Egrave\":[200],\"Emacr;\":[274],\"Eogon;\":[280],\"Equal;\":[10869],\"Gamma;\":[915],\"Gcirc;\":[284],\"Hacek;\":[711],\"Hcirc;\":[292],\"IJlig;\":[306],\"Iacute\":[205],\"Icirc;\":[206],\"Igrave\":[204],\"Imacr;\":[298],\"Iogon;\":[302],\"Iukcy;\":[1030],\"Jcirc;\":[308],\"Jukcy;\":[1028],\"Kappa;\":[922],\"Ntilde\":[209],\"OElig;\":[338],\"Oacute\":[211],\"Ocirc;\":[212],\"Ograve\":[210],\"Omacr;\":[332],\"Omega;\":[937],\"Oslash\":[216],\"Otilde\":[213],\"Prime;\":[8243],\"RBarr;\":[10512],\"Scirc;\":[348],\"Sigma;\":[931],\"THORN;\":[222],\"TRADE;\":[8482],\"TSHcy;\":[1035],\"Theta;\":[920],\"Tilde;\":[8764],\"Uacute\":[218],\"Ubrcy;\":[1038],\"Ucirc;\":[219],\"Ugrave\":[217],\"Umacr;\":[362],\"Union;\":[8899],\"Uogon;\":[370],\"UpTee;\":[8869],\"Uring;\":[366],\"VDash;\":[8875],\"Vdash;\":[8873],\"Wcirc;\":[372],\"Wedge;\":[8896],\"Yacute\":[221],\"Ycirc;\":[374],\"aacute\":[225],\"acirc;\":[226],\"acute;\":[180],\"aelig;\":[230],\"agrave\":[224],\"aleph;\":[8501],\"alpha;\":[945],\"amacr;\":[257],\"amalg;\":[10815],\"angle;\":[8736],\"angrt;\":[8735],\"angst;\":[197],\"aogon;\":[261],\"aring;\":[229],\"asymp;\":[8776],\"atilde\":[227],\"awint;\":[10769],\"bcong;\":[8780],\"bdquo;\":[8222],\"bepsi;\":[1014],\"blank;\":[9251],\"blk12;\":[9618],\"blk14;\":[9617],\"blk34;\":[9619],\"block;\":[9608],\"boxDL;\":[9559],\"boxDR;\":[9556],\"boxDl;\":[9558],\"boxDr;\":[9555],\"boxHD;\":[9574],\"boxHU;\":[9577],\"boxHd;\":[9572],\"boxHu;\":[9575],\"boxUL;\":[9565],\"boxUR;\":[9562],\"boxUl;\":[9564],\"boxUr;\":[9561],\"boxVH;\":[9580],\"boxVL;\":[9571],\"boxVR;\":[9568],\"boxVh;\":[9579],\"boxVl;\":[9570],\"boxVr;\":[9567],\"boxdL;\":[9557],\"boxdR;\":[9554],\"boxdl;\":[9488],\"boxdr;\":[9484],\"boxhD;\":[9573],\"boxhU;\":[9576],\"boxhd;\":[9516],\"boxhu;\":[9524],\"boxuL;\":[9563],\"boxuR;\":[9560],\"boxul;\":[9496],\"boxur;\":[9492],\"boxvH;\":[9578],\"boxvL;\":[9569],\"boxvR;\":[9566],\"boxvh;\":[9532],\"boxvl;\":[9508],\"boxvr;\":[9500],\"breve;\":[728],\"brvbar\":[166],\"bsemi;\":[8271],\"bsime;\":[8909],\"bsolb;\":[10693],\"bumpE;\":[10926],\"bumpe;\":[8783],\"caret;\":[8257],\"caron;\":[711],\"ccaps;\":[10829],\"ccedil\":[231],\"ccirc;\":[265],\"ccups;\":[10828],\"cedil;\":[184],\"check;\":[10003],\"clubs;\":[9827],\"colon;\":[58],\"comma;\":[44],\"crarr;\":[8629],\"cross;\":[10007],\"csube;\":[10961],\"csupe;\":[10962],\"ctdot;\":[8943],\"cuepr;\":[8926],\"cuesc;\":[8927],\"cupor;\":[10821],\"curren\":[164],\"cuvee;\":[8910],\"cuwed;\":[8911],\"cwint;\":[8753],\"dashv;\":[8867],\"dblac;\":[733],\"ddarr;\":[8650],\"delta;\":[948],\"dharl;\":[8643],\"dharr;\":[8642],\"diams;\":[9830],\"disin;\":[8946],\"divide\":[247],\"doteq;\":[8784],\"dtdot;\":[8945],\"dtrif;\":[9662],\"duarr;\":[8693],\"duhar;\":[10607],\"eDDot;\":[10871],\"eacute\":[233],\"ecirc;\":[234],\"efDot;\":[8786],\"egrave\":[232],\"emacr;\":[275],\"empty;\":[8709],\"eogon;\":[281],\"eplus;\":[10865],\"epsiv;\":[1013],\"eqsim;\":[8770],\"equiv;\":[8801],\"erDot;\":[8787],\"erarr;\":[10609],\"esdot;\":[8784],\"exist;\":[8707],\"fflig;\":[64256],\"filig;\":[64257],\"fjlig;\":[102,106],\"fllig;\":[64258],\"fltns;\":[9649],\"forkv;\":[10969],\"frac12\":[189],\"frac14\":[188],\"frac34\":[190],\"frasl;\":[8260],\"frown;\":[8994],\"gamma;\":[947],\"gcirc;\":[285],\"gescc;\":[10921],\"gimel;\":[8503],\"gneqq;\":[8809],\"gnsim;\":[8935],\"grave;\":[96],\"gsime;\":[10894],\"gsiml;\":[10896],\"gtcir;\":[10874],\"gtdot;\":[8919],\"harrw;\":[8621],\"hcirc;\":[293],\"hoarr;\":[8703],\"iacute\":[237],\"icirc;\":[238],\"iexcl;\":[161],\"igrave\":[236],\"iiint;\":[8749],\"iiota;\":[8489],\"ijlig;\":[307],\"imacr;\":[299],\"image;\":[8465],\"imath;\":[305],\"imped;\":[437],\"infin;\":[8734],\"iogon;\":[303],\"iprod;\":[10812],\"iquest\":[191],\"isinE;\":[8953],\"isins;\":[8948],\"isinv;\":[8712],\"iukcy;\":[1110],\"jcirc;\":[309],\"jmath;\":[567],\"jukcy;\":[1108],\"kappa;\":[954],\"lAarr;\":[8666],\"lBarr;\":[10510],\"langd;\":[10641],\"laquo;\":[171],\"larrb;\":[8676],\"lates;\":[10925,65024],\"lbarr;\":[10508],\"lbbrk;\":[10098],\"lbrke;\":[10635],\"lceil;\":[8968],\"ldquo;\":[8220],\"lescc;\":[10920],\"lhard;\":[8637],\"lharu;\":[8636],\"lhblk;\":[9604],\"llarr;\":[8647],\"lltri;\":[9722],\"lneqq;\":[8808],\"lnsim;\":[8934],\"loang;\":[10220],\"loarr;\":[8701],\"lobrk;\":[10214],\"lopar;\":[10629],\"lrarr;\":[8646],\"lrhar;\":[8651],\"lrtri;\":[8895],\"lsime;\":[10893],\"lsimg;\":[10895],\"lsquo;\":[8216],\"ltcir;\":[10873],\"ltdot;\":[8918],\"ltrie;\":[8884],\"ltrif;\":[9666],\"mDDot;\":[8762],\"mdash;\":[8212],\"micro;\":[181],\"middot\":[183],\"minus;\":[8722],\"mumap;\":[8888],\"nabla;\":[8711],\"napid;\":[8779,824],\"napos;\":[329],\"natur;\":[9838],\"nbump;\":[8782,824],\"ncong;\":[8775],\"ndash;\":[8211],\"neArr;\":[8663],\"nearr;\":[8599],\"nedot;\":[8784,824],\"nesim;\":[8770,824],\"ngeqq;\":[8807,824],\"ngsim;\":[8821],\"nhArr;\":[8654],\"nharr;\":[8622],\"nhpar;\":[10994],\"nlArr;\":[8653],\"nlarr;\":[8602],\"nleqq;\":[8806,824],\"nless;\":[8814],\"nlsim;\":[8820],\"nltri;\":[8938],\"notin;\":[8713],\"notni;\":[8716],\"npart;\":[8706,824],\"nprec;\":[8832],\"nrArr;\":[8655],\"nrarr;\":[8603],\"nrtri;\":[8939],\"nsime;\":[8772],\"nsmid;\":[8740],\"nspar;\":[8742],\"nsubE;\":[10949,824],\"nsube;\":[8840],\"nsucc;\":[8833],\"nsupE;\":[10950,824],\"nsupe;\":[8841],\"ntilde\":[241],\"numsp;\":[8199],\"nvsim;\":[8764,8402],\"nwArr;\":[8662],\"nwarr;\":[8598],\"oacute\":[243],\"ocirc;\":[244],\"odash;\":[8861],\"oelig;\":[339],\"ofcir;\":[10687],\"ograve\":[242],\"ohbar;\":[10677],\"olarr;\":[8634],\"olcir;\":[10686],\"oline;\":[8254],\"omacr;\":[333],\"omega;\":[969],\"operp;\":[10681],\"oplus;\":[8853],\"orarr;\":[8635],\"order;\":[8500],\"oslash\":[248],\"otilde\":[245],\"ovbar;\":[9021],\"parsl;\":[11005],\"phone;\":[9742],\"plusb;\":[8862],\"pluse;\":[10866],\"plusmn\":[177],\"pound;\":[163],\"prcue;\":[8828],\"prime;\":[8242],\"prnap;\":[10937],\"prsim;\":[8830],\"quest;\":[63],\"rAarr;\":[8667],\"rBarr;\":[10511],\"radic;\":[8730],\"rangd;\":[10642],\"range;\":[10661],\"raquo;\":[187],\"rarrb;\":[8677],\"rarrc;\":[10547],\"rarrw;\":[8605],\"ratio;\":[8758],\"rbarr;\":[10509],\"rbbrk;\":[10099],\"rbrke;\":[10636],\"rceil;\":[8969],\"rdquo;\":[8221],\"reals;\":[8477],\"rhard;\":[8641],\"rharu;\":[8640],\"rlarr;\":[8644],\"rlhar;\":[8652],\"rnmid;\":[10990],\"roang;\":[10221],\"roarr;\":[8702],\"robrk;\":[10215],\"ropar;\":[10630],\"rrarr;\":[8649],\"rsquo;\":[8217],\"rtrie;\":[8885],\"rtrif;\":[9656],\"sbquo;\":[8218],\"sccue;\":[8829],\"scirc;\":[349],\"scnap;\":[10938],\"scsim;\":[8831],\"sdotb;\":[8865],\"sdote;\":[10854],\"seArr;\":[8664],\"searr;\":[8600],\"setmn;\":[8726],\"sharp;\":[9839],\"sigma;\":[963],\"simeq;\":[8771],\"simgE;\":[10912],\"simlE;\":[10911],\"simne;\":[8774],\"slarr;\":[8592],\"smile;\":[8995],\"smtes;\":[10924,65024],\"sqcap;\":[8851],\"sqcup;\":[8852],\"sqsub;\":[8847],\"sqsup;\":[8848],\"srarr;\":[8594],\"starf;\":[9733],\"strns;\":[175],\"subnE;\":[10955],\"subne;\":[8842],\"supnE;\":[10956],\"supne;\":[8843],\"swArr;\":[8665],\"swarr;\":[8601],\"szlig;\":[223],\"theta;\":[952],\"thkap;\":[8776],\"thorn;\":[254],\"tilde;\":[732],\"times;\":[215],\"trade;\":[8482],\"trisb;\":[10701],\"tshcy;\":[1115],\"twixt;\":[8812],\"uacute\":[250],\"ubrcy;\":[1118],\"ucirc;\":[251],\"udarr;\":[8645],\"udhar;\":[10606],\"ugrave\":[249],\"uharl;\":[8639],\"uharr;\":[8638],\"uhblk;\":[9600],\"ultri;\":[9720],\"umacr;\":[363],\"uogon;\":[371],\"uplus;\":[8846],\"upsih;\":[978],\"uring;\":[367],\"urtri;\":[9721],\"utdot;\":[8944],\"utrif;\":[9652],\"uuarr;\":[8648],\"vBarv;\":[10985],\"vDash;\":[8872],\"varpi;\":[982],\"vdash;\":[8866],\"veeeq;\":[8794],\"vltri;\":[8882],\"vnsub;\":[8834,8402],\"vnsup;\":[8835,8402],\"vprop;\":[8733],\"vrtri;\":[8883],\"wcirc;\":[373],\"wedge;\":[8743],\"xcirc;\":[9711],\"xdtri;\":[9661],\"xhArr;\":[10234],\"xharr;\":[10231],\"xlArr;\":[10232],\"xlarr;\":[10229],\"xodot;\":[10752],\"xrArr;\":[10233],\"xrarr;\":[10230],\"xutri;\":[9651],\"yacute\":[253],\"ycirc;\":[375]}},{\"length\":5,\"entities\":{\"AElig\":[198],\"Acirc\":[194],\"Aopf;\":[120120],\"Aring\":[197],\"Ascr;\":[119964],\"Auml;\":[196],\"Barv;\":[10983],\"Beta;\":[914],\"Bopf;\":[120121],\"Bscr;\":[8492],\"CHcy;\":[1063],\"COPY;\":[169],\"Cdot;\":[266],\"Copf;\":[8450],\"Cscr;\":[119966],\"DJcy;\":[1026],\"DScy;\":[1029],\"DZcy;\":[1039],\"Darr;\":[8609],\"Dopf;\":[120123],\"Dscr;\":[119967],\"Ecirc\":[202],\"Edot;\":[278],\"Eopf;\":[120124],\"Escr;\":[8496],\"Esim;\":[10867],\"Euml;\":[203],\"Fopf;\":[120125],\"Fscr;\":[8497],\"GJcy;\":[1027],\"Gdot;\":[288],\"Gopf;\":[120126],\"Gscr;\":[119970],\"Hopf;\":[8461],\"Hscr;\":[8459],\"IEcy;\":[1045],\"IOcy;\":[1025],\"Icirc\":[206],\"Idot;\":[304],\"Iopf;\":[120128],\"Iota;\":[921],\"Iscr;\":[8464],\"Iuml;\":[207],\"Jopf;\":[120129],\"Jscr;\":[119973],\"KHcy;\":[1061],\"KJcy;\":[1036],\"Kopf;\":[120130],\"Kscr;\":[119974],\"LJcy;\":[1033],\"Lang;\":[10218],\"Larr;\":[8606],\"Lopf;\":[120131],\"Lscr;\":[8466],\"Mopf;\":[120132],\"Mscr;\":[8499],\"NJcy;\":[1034],\"Nopf;\":[8469],\"Nscr;\":[119977],\"Ocirc\":[212],\"Oopf;\":[120134],\"Oscr;\":[119978],\"Ouml;\":[214],\"Popf;\":[8473],\"Pscr;\":[119979],\"QUOT;\":[34],\"Qopf;\":[8474],\"Qscr;\":[119980],\"Rang;\":[10219],\"Rarr;\":[8608],\"Ropf;\":[8477],\"Rscr;\":[8475],\"SHcy;\":[1064],\"Sopf;\":[120138],\"Sqrt;\":[8730],\"Sscr;\":[119982],\"Star;\":[8902],\"THORN\":[222],\"TScy;\":[1062],\"Topf;\":[120139],\"Tscr;\":[119983],\"Uarr;\":[8607],\"Ucirc\":[219],\"Uopf;\":[120140],\"Upsi;\":[978],\"Uscr;\":[119984],\"Uuml;\":[220],\"Vbar;\":[10987],\"Vert;\":[8214],\"Vopf;\":[120141],\"Vscr;\":[119985],\"Wopf;\":[120142],\"Wscr;\":[119986],\"Xopf;\":[120143],\"Xscr;\":[119987],\"YAcy;\":[1071],\"YIcy;\":[1031],\"YUcy;\":[1070],\"Yopf;\":[120144],\"Yscr;\":[119988],\"Yuml;\":[376],\"ZHcy;\":[1046],\"Zdot;\":[379],\"Zeta;\":[918],\"Zopf;\":[8484],\"Zscr;\":[119989],\"acirc\":[226],\"acute\":[180],\"aelig\":[230],\"andd;\":[10844],\"andv;\":[10842],\"ange;\":[10660],\"aopf;\":[120146],\"apid;\":[8779],\"apos;\":[39],\"aring\":[229],\"ascr;\":[119990],\"auml;\":[228],\"bNot;\":[10989],\"bbrk;\":[9141],\"beta;\":[946],\"beth;\":[8502],\"bnot;\":[8976],\"bopf;\":[120147],\"boxH;\":[9552],\"boxV;\":[9553],\"boxh;\":[9472],\"boxv;\":[9474],\"bscr;\":[119991],\"bsim;\":[8765],\"bsol;\":[92],\"bull;\":[8226],\"bump;\":[8782],\"caps;\":[8745,65024],\"cdot;\":[267],\"cedil\":[184],\"cent;\":[162],\"chcy;\":[1095],\"cirE;\":[10691],\"circ;\":[710],\"cire;\":[8791],\"comp;\":[8705],\"cong;\":[8773],\"copf;\":[120148],\"copy;\":[169],\"cscr;\":[119992],\"csub;\":[10959],\"csup;\":[10960],\"cups;\":[8746,65024],\"dArr;\":[8659],\"dHar;\":[10597],\"darr;\":[8595],\"dash;\":[8208],\"diam;\":[8900],\"djcy;\":[1106],\"dopf;\":[120149],\"dscr;\":[119993],\"dscy;\":[1109],\"dsol;\":[10742],\"dtri;\":[9663],\"dzcy;\":[1119],\"eDot;\":[8785],\"ecir;\":[8790],\"ecirc\":[234],\"edot;\":[279],\"emsp;\":[8195],\"ensp;\":[8194],\"eopf;\":[120150],\"epar;\":[8917],\"epsi;\":[949],\"escr;\":[8495],\"esim;\":[8770],\"euml;\":[235],\"euro;\":[8364],\"excl;\":[33],\"flat;\":[9837],\"fnof;\":[402],\"fopf;\":[120151],\"fork;\":[8916],\"fscr;\":[119995],\"gdot;\":[289],\"geqq;\":[8807],\"gesl;\":[8923,65024],\"gjcy;\":[1107],\"gnap;\":[10890],\"gneq;\":[10888],\"gopf;\":[120152],\"gscr;\":[8458],\"gsim;\":[8819],\"gtcc;\":[10919],\"gvnE;\":[8809,65024],\"hArr;\":[8660],\"half;\":[189],\"harr;\":[8596],\"hbar;\":[8463],\"hopf;\":[120153],\"hscr;\":[119997],\"icirc\":[238],\"iecy;\":[1077],\"iexcl\":[161],\"imof;\":[8887],\"iocy;\":[1105],\"iopf;\":[120154],\"iota;\":[953],\"iscr;\":[119998],\"isin;\":[8712],\"iuml;\":[239],\"jopf;\":[120155],\"jscr;\":[119999],\"khcy;\":[1093],\"kjcy;\":[1116],\"kopf;\":[120156],\"kscr;\":[120000],\"lArr;\":[8656],\"lHar;\":[10594],\"lang;\":[10216],\"laquo\":[171],\"larr;\":[8592],\"late;\":[10925],\"lcub;\":[123],\"ldca;\":[10550],\"ldsh;\":[8626],\"leqq;\":[8806],\"lesg;\":[8922,65024],\"ljcy;\":[1113],\"lnap;\":[10889],\"lneq;\":[10887],\"lopf;\":[120157],\"lozf;\":[10731],\"lpar;\":[40],\"lscr;\":[120001],\"lsim;\":[8818],\"lsqb;\":[91],\"ltcc;\":[10918],\"ltri;\":[9667],\"lvnE;\":[8808,65024],\"macr;\":[175],\"male;\":[9794],\"malt;\":[10016],\"micro\":[181],\"mlcp;\":[10971],\"mldr;\":[8230],\"mopf;\":[120158],\"mscr;\":[120002],\"nGtv;\":[8811,824],\"nLtv;\":[8810,824],\"nang;\":[8736,8402],\"napE;\":[10864,824],\"nbsp;\":[160],\"ncap;\":[10819],\"ncup;\":[10818],\"ngeq;\":[8817],\"nges;\":[10878,824],\"ngtr;\":[8815],\"nisd;\":[8954],\"njcy;\":[1114],\"nldr;\":[8229],\"nleq;\":[8816],\"nles;\":[10877,824],\"nmid;\":[8740],\"nopf;\":[120159],\"npar;\":[8742],\"npre;\":[10927,824],\"nsce;\":[10928,824],\"nscr;\":[120003],\"nsim;\":[8769],\"nsub;\":[8836],\"nsup;\":[8837],\"ntgl;\":[8825],\"ntlg;\":[8824],\"nvap;\":[8781,8402],\"nvge;\":[8805,8402],\"nvgt;\":[62,8402],\"nvle;\":[8804,8402],\"nvlt;\":[60,8402],\"oast;\":[8859],\"ocir;\":[8858],\"ocirc\":[244],\"odiv;\":[10808],\"odot;\":[8857],\"ogon;\":[731],\"oint;\":[8750],\"omid;\":[10678],\"oopf;\":[120160],\"opar;\":[10679],\"ordf;\":[170],\"ordm;\":[186],\"oror;\":[10838],\"oscr;\":[8500],\"osol;\":[8856],\"ouml;\":[246],\"para;\":[182],\"part;\":[8706],\"perp;\":[8869],\"phiv;\":[981],\"plus;\":[43],\"popf;\":[120161],\"pound\":[163],\"prap;\":[10935],\"prec;\":[8826],\"prnE;\":[10933],\"prod;\":[8719],\"prop;\":[8733],\"pscr;\":[120005],\"qint;\":[10764],\"qopf;\":[120162],\"qscr;\":[120006],\"quot;\":[34],\"rArr;\":[8658],\"rHar;\":[10596],\"race;\":[8765,817],\"rang;\":[10217],\"raquo\":[187],\"rarr;\":[8594],\"rcub;\":[125],\"rdca;\":[10551],\"rdsh;\":[8627],\"real;\":[8476],\"rect;\":[9645],\"rhov;\":[1009],\"ring;\":[730],\"ropf;\":[120163],\"rpar;\":[41],\"rscr;\":[120007],\"rsqb;\":[93],\"rtri;\":[9657],\"scap;\":[10936],\"scnE;\":[10934],\"sdot;\":[8901],\"sect;\":[167],\"semi;\":[59],\"sext;\":[10038],\"shcy;\":[1096],\"sime;\":[8771],\"simg;\":[10910],\"siml;\":[10909],\"smid;\":[8739],\"smte;\":[10924],\"solb;\":[10692],\"sopf;\":[120164],\"spar;\":[8741],\"squf;\":[9642],\"sscr;\":[120008],\"star;\":[9734],\"subE;\":[10949],\"sube;\":[8838],\"succ;\":[8827],\"sung;\":[9834],\"sup1;\":[185],\"sup2;\":[178],\"sup3;\":[179],\"supE;\":[10950],\"supe;\":[8839],\"szlig\":[223],\"tbrk;\":[9140],\"tdot;\":[8411],\"thorn\":[254],\"times\":[215],\"tint;\":[8749],\"toea;\":[10536],\"topf;\":[120165],\"tosa;\":[10537],\"trie;\":[8796],\"tscr;\":[120009],\"tscy;\":[1094],\"uArr;\":[8657],\"uHar;\":[10595],\"uarr;\":[8593],\"ucirc\":[251],\"uopf;\":[120166],\"upsi;\":[965],\"uscr;\":[120010],\"utri;\":[9653],\"uuml;\":[252],\"vArr;\":[8661],\"vBar;\":[10984],\"varr;\":[8597],\"vert;\":[124],\"vopf;\":[120167],\"vscr;\":[120011],\"wopf;\":[120168],\"wscr;\":[120012],\"xcap;\":[8898],\"xcup;\":[8899],\"xmap;\":[10236],\"xnis;\":[8955],\"xopf;\":[120169],\"xscr;\":[120013],\"xvee;\":[8897],\"yacy;\":[1103],\"yicy;\":[1111],\"yopf;\":[120170],\"yscr;\":[120014],\"yucy;\":[1102],\"yuml;\":[255],\"zdot;\":[380],\"zeta;\":[950],\"zhcy;\":[1078],\"zopf;\":[120171],\"zscr;\":[120015],\"zwnj;\":[8204]}},{\"length\":4,\"entities\":{\"AMP;\":[38],\"Acy;\":[1040],\"Afr;\":[120068],\"And;\":[10835],\"Auml\":[196],\"Bcy;\":[1041],\"Bfr;\":[120069],\"COPY\":[169],\"Cap;\":[8914],\"Cfr;\":[8493],\"Chi;\":[935],\"Cup;\":[8915],\"Dcy;\":[1044],\"Del;\":[8711],\"Dfr;\":[120071],\"Dot;\":[168],\"ENG;\":[330],\"ETH;\":[208],\"Ecy;\":[1069],\"Efr;\":[120072],\"Eta;\":[919],\"Euml\":[203],\"Fcy;\":[1060],\"Ffr;\":[120073],\"Gcy;\":[1043],\"Gfr;\":[120074],\"Hat;\":[94],\"Hfr;\":[8460],\"Icy;\":[1048],\"Ifr;\":[8465],\"Int;\":[8748],\"Iuml\":[207],\"Jcy;\":[1049],\"Jfr;\":[120077],\"Kcy;\":[1050],\"Kfr;\":[120078],\"Lcy;\":[1051],\"Lfr;\":[120079],\"Lsh;\":[8624],\"Map;\":[10501],\"Mcy;\":[1052],\"Mfr;\":[120080],\"Ncy;\":[1053],\"Nfr;\":[120081],\"Not;\":[10988],\"Ocy;\":[1054],\"Ofr;\":[120082],\"Ouml\":[214],\"Pcy;\":[1055],\"Pfr;\":[120083],\"Phi;\":[934],\"Psi;\":[936],\"QUOT\":[34],\"Qfr;\":[120084],\"REG;\":[174],\"Rcy;\":[1056],\"Rfr;\":[8476],\"Rho;\":[929],\"Rsh;\":[8625],\"Scy;\":[1057],\"Sfr;\":[120086],\"Sub;\":[8912],\"Sum;\":[8721],\"Sup;\":[8913],\"Tab;\":[9],\"Tau;\":[932],\"Tcy;\":[1058],\"Tfr;\":[120087],\"Ucy;\":[1059],\"Ufr;\":[120088],\"Uuml\":[220],\"Vcy;\":[1042],\"Vee;\":[8897],\"Vfr;\":[120089],\"Wfr;\":[120090],\"Xfr;\":[120091],\"Ycy;\":[1067],\"Yfr;\":[120092],\"Zcy;\":[1047],\"Zfr;\":[8488],\"acE;\":[8766,819],\"acd;\":[8767],\"acy;\":[1072],\"afr;\":[120094],\"amp;\":[38],\"and;\":[8743],\"ang;\":[8736],\"apE;\":[10864],\"ape;\":[8778],\"ast;\":[42],\"auml\":[228],\"bcy;\":[1073],\"bfr;\":[120095],\"bne;\":[61,8421],\"bot;\":[8869],\"cap;\":[8745],\"cent\":[162],\"cfr;\":[120096],\"chi;\":[967],\"cir;\":[9675],\"copy\":[169],\"cup;\":[8746],\"dcy;\":[1076],\"deg;\":[176],\"dfr;\":[120097],\"die;\":[168],\"div;\":[247],\"dot;\":[729],\"ecy;\":[1101],\"efr;\":[120098],\"egs;\":[10902],\"ell;\":[8467],\"els;\":[10901],\"eng;\":[331],\"eta;\":[951],\"eth;\":[240],\"euml\":[235],\"fcy;\":[1092],\"ffr;\":[120099],\"gEl;\":[10892],\"gap;\":[10886],\"gcy;\":[1075],\"gel;\":[8923],\"geq;\":[8805],\"ges;\":[10878],\"gfr;\":[120100],\"ggg;\":[8921],\"glE;\":[10898],\"gla;\":[10917],\"glj;\":[10916],\"gnE;\":[8809],\"gne;\":[10888],\"hfr;\":[120101],\"icy;\":[1080],\"iff;\":[8660],\"ifr;\":[120102],\"int;\":[8747],\"iuml\":[239],\"jcy;\":[1081],\"jfr;\":[120103],\"kcy;\":[1082],\"kfr;\":[120104],\"lEg;\":[10891],\"lap;\":[10885],\"lat;\":[10923],\"lcy;\":[1083],\"leg;\":[8922],\"leq;\":[8804],\"les;\":[10877],\"lfr;\":[120105],\"lgE;\":[10897],\"lnE;\":[8808],\"lne;\":[10887],\"loz;\":[9674],\"lrm;\":[8206],\"lsh;\":[8624],\"macr\":[175],\"map;\":[8614],\"mcy;\":[1084],\"mfr;\":[120106],\"mho;\":[8487],\"mid;\":[8739],\"nGg;\":[8921,824],\"nGt;\":[8811,8402],\"nLl;\":[8920,824],\"nLt;\":[8810,8402],\"nap;\":[8777],\"nbsp\":[160],\"ncy;\":[1085],\"nfr;\":[120107],\"ngE;\":[8807,824],\"nge;\":[8817],\"ngt;\":[8815],\"nis;\":[8956],\"niv;\":[8715],\"nlE;\":[8806,824],\"nle;\":[8816],\"nlt;\":[8814],\"not;\":[172],\"npr;\":[8832],\"nsc;\":[8833],\"num;\":[35],\"ocy;\":[1086],\"ofr;\":[120108],\"ogt;\":[10689],\"ohm;\":[937],\"olt;\":[10688],\"ord;\":[10845],\"ordf\":[170],\"ordm\":[186],\"orv;\":[10843],\"ouml\":[246],\"par;\":[8741],\"para\":[182],\"pcy;\":[1087],\"pfr;\":[120109],\"phi;\":[966],\"piv;\":[982],\"prE;\":[10931],\"pre;\":[10927],\"psi;\":[968],\"qfr;\":[120110],\"quot\":[34],\"rcy;\":[1088],\"reg;\":[174],\"rfr;\":[120111],\"rho;\":[961],\"rlm;\":[8207],\"rsh;\":[8625],\"scE;\":[10932],\"sce;\":[10928],\"scy;\":[1089],\"sect\":[167],\"sfr;\":[120112],\"shy;\":[173],\"sim;\":[8764],\"smt;\":[10922],\"sol;\":[47],\"squ;\":[9633],\"sub;\":[8834],\"sum;\":[8721],\"sup1\":[185],\"sup2\":[178],\"sup3\":[179],\"sup;\":[8835],\"tau;\":[964],\"tcy;\":[1090],\"tfr;\":[120113],\"top;\":[8868],\"ucy;\":[1091],\"ufr;\":[120114],\"uml;\":[168],\"uuml\":[252],\"vcy;\":[1074],\"vee;\":[8744],\"vfr;\":[120115],\"wfr;\":[120116],\"xfr;\":[120117],\"ycy;\":[1099],\"yen;\":[165],\"yfr;\":[120118],\"yuml\":[255],\"zcy;\":[1079],\"zfr;\":[120119],\"zwj;\":[8205]}},{\"length\":3,\"entities\":{\"AMP\":[38],\"DD;\":[8517],\"ETH\":[208],\"GT;\":[62],\"Gg;\":[8921],\"Gt;\":[8811],\"Im;\":[8465],\"LT;\":[60],\"Ll;\":[8920],\"Lt;\":[8810],\"Mu;\":[924],\"Nu;\":[925],\"Or;\":[10836],\"Pi;\":[928],\"Pr;\":[10939],\"REG\":[174],\"Re;\":[8476],\"Sc;\":[10940],\"Xi;\":[926],\"ac;\":[8766],\"af;\":[8289],\"amp\":[38],\"ap;\":[8776],\"dd;\":[8518],\"deg\":[176],\"ee;\":[8519],\"eg;\":[10906],\"el;\":[10905],\"eth\":[240],\"gE;\":[8807],\"ge;\":[8805],\"gg;\":[8811],\"gl;\":[8823],\"gt;\":[62],\"ic;\":[8291],\"ii;\":[8520],\"in;\":[8712],\"it;\":[8290],\"lE;\":[8806],\"le;\":[8804],\"lg;\":[8822],\"ll;\":[8810],\"lt;\":[60],\"mp;\":[8723],\"mu;\":[956],\"ne;\":[8800],\"ni;\":[8715],\"not\":[172],\"nu;\":[957],\"oS;\":[9416],\"or;\":[8744],\"pi;\":[960],\"pm;\":[177],\"pr;\":[8826],\"reg\":[174],\"rx;\":[8478],\"sc;\":[8827],\"shy\":[173],\"uml\":[168],\"wp;\":[8472],\"wr;\":[8768],\"xi;\":[958],\"yen\":[165]}},{\"length\":2,\"entities\":{\"GT\":[62],\"LT\":[60],\"gt\":[62],\"lt\":[60]}}]\n","/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * @copyright 2017 Toru Nagashima. All rights reserved.\n * See LICENSE file in root directory for full license.\n */\n\nexport const EOF = -1\nexport const NULL = 0x00\nexport const TABULATION = 0x09\nexport const CARRIAGE_RETURN = 0x0D\nexport const LINE_FEED = 0x0A\nexport const FORM_FEED = 0x0C\nexport const SPACE = 0x20\nexport const EXCLAMATION_MARK = 0x21 // !\nexport const QUOTATION_MARK = 0x22 // \"\nexport const NUMBER_SIGN = 0x23 // #\nexport const AMPERSAND = 0x26 // &\nexport const APOSTROPHE = 0x27 // '\nexport const LEFT_PARENTHESIS = 0x28 // (\nexport const RIGHT_PARENTHESIS = 0x29 // )\nexport const ASTERISK = 0x2A // *\nexport const HYPHEN_MINUS = 0x2D // -\nexport const SOLIDUS = 0x2F // /\nexport const DIGIT_0 = 0x30\nexport const DIGIT_9 = 0x39\nexport const COLON = 0x3a // :\nexport const SEMICOLON = 0x3B // ;\nexport const LESS_THAN_SIGN = 0x3C // <\nexport const EQUALS_SIGN = 0x3D // =\nexport const GREATER_THAN_SIGN = 0x3E // >\nexport const QUESTION_MARK = 0x3F // ?\nexport const LATIN_CAPITAL_A = 0x41\nexport const LATIN_CAPITAL_D = 0x44\nexport const LATIN_CAPITAL_F = 0x46\nexport const LATIN_CAPITAL_X = 0x58\nexport const LATIN_CAPITAL_Z = 0x5A\nexport const LEFT_SQUARE_BRACKET = 0x5B // [\nexport const REVERSE_SOLIDUS = 0x5C // \\\nexport const RIGHT_SQUARE_BRACKET = 0x5D // ]\nexport const GRAVE_ACCENT = 0x60 // `\nexport const LATIN_SMALL_A = 0x61\nexport const LATIN_SMALL_F = 0x66\nexport const LATIN_SMALL_X = 0x78\nexport const LATIN_SMALL_Z = 0x7A\nexport const LEFT_CURLY_BRACKET = 0x7B // {\nexport const RIGHT_CURLY_BRACKET = 0x7D // }\nexport const NULL_REPLACEMENT = 0xFFFD\n\n/**\n * Check whether the code point is a whitespace.\n * @param cp The code point to check.\n * @returns `true` if the code point is a whitespace.\n */\nexport function isWhitespace(cp: number): boolean {\n    return cp === TABULATION || cp === LINE_FEED || cp === FORM_FEED || cp === CARRIAGE_RETURN || cp === SPACE\n}\n\n/**\n * Check whether the code point is an uppercase letter character.\n * @param cp The code point to check.\n * @returns `true` if the code point is an uppercase letter character.\n */\nexport function isUpperLetter(cp: number): boolean {\n    return cp >= LATIN_CAPITAL_A && cp <= LATIN_CAPITAL_Z\n}\n\n/**\n * Check whether the code point is a lowercase letter character.\n * @param cp The code point to check.\n * @returns `true` if the code point is a lowercase letter character.\n */\nexport function isLowerLetter(cp: number): boolean {\n    return cp >= LATIN_SMALL_A && cp <= LATIN_SMALL_Z\n}\n\n/**\n * Check whether the code point is a letter character.\n * @param cp The code point to check.\n * @returns `true` if the code point is a letter character.\n */\nexport function isLetter(cp: number): boolean {\n    return isLowerLetter(cp) || isUpperLetter(cp)\n}\n\n/**\n * Check whether the code point is a digit character.\n * @param cp The code point to check.\n * @returns `true` if the code point is a digit character.\n */\nexport function isDigit(cp: number): boolean {\n    return cp >= DIGIT_0 && cp <= DIGIT_9\n}\n\n/**\n * Check whether the code point is a digit character.\n * @param cp The code point to check.\n * @returns `true` if the code point is a digit character.\n */\nexport function isUpperHexDigit(cp: number): boolean {\n    return cp >= LATIN_CAPITAL_A && cp <= LATIN_CAPITAL_F\n}\n\n/**\n * Check whether the code point is a digit character.\n * @param cp The code point to check.\n * @returns `true` if the code point is a digit character.\n */\nexport function isLowerHexDigit(cp: number): boolean {\n    return cp >= LATIN_SMALL_A && cp <= LATIN_SMALL_F\n}\n\n/**\n * Check whether the code point is a digit character.\n * @param cp The code point to check.\n * @returns `true` if the code point is a digit character.\n */\nexport function isHexDigit(cp: number): boolean {\n    return isDigit(cp) || isUpperHexDigit(cp) || isLowerHexDigit(cp)\n}\n\n/**\n * Check whether the code point is a control character.\n * @param cp The code point to check.\n * @returns `true` if the code point is a control character.\n */\nexport function isControl(cp: number): boolean {\n    return (cp >= 0 && cp <= 0x1F) || (cp >= 0x7F && cp <= 0x9F)\n}\n\n/**\n * Check whether the code point is a surrogate character.\n * @param cp The code point to check.\n * @returns `true` if the code point is a surrogate character.\n */\nexport function isSurrogate(cp: number): boolean {\n    return cp >= 0xD800 && cp <= 0xDFFF\n}\n\n/**\n * Check whether the code point is a surrogate pair character.\n * @param cp The code point to check.\n * @returns `true` if the code point is a surrogate pair character.\n */\nexport function isSurrogatePair(cp: number): boolean {\n    return cp >= 0xDC00 && cp <= 0xDFFF\n}\n\n/**\n * Check whether the code point is a surrogate character.\n * @param cp The code point to check.\n * @returns `true` if the code point is a surrogate character.\n */\nexport function isNonCharacter(cp: number): boolean {\n    return (\n        (cp >= 0xFDD0 && cp <= 0xFDEF) ||\n        ((cp & 0xFFFE) === 0xFFFE && cp <= 0x10FFFF)\n    )\n}\n\n// export function isReservedCodePoint(cp: number): boolean {\n//     return (cp >= 0xD800 && cp <= 0xDFFF) || cp > 0x10FFFF\n// }\n\n/**\n * Convert the given character to lowercases.\n * @param cp The code point to convert.\n * @returns Converted code point.\n */\nexport function toLowerCodePoint(cp: number): number {\n    return cp + 0x0020\n}\n","/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * @copyright 2017 Toru Nagashima. All rights reserved.\n * See LICENSE file in root directory for full license.\n */\n\n/*eslint-disable no-constant-condition, no-param-reassign */\n\nimport assert from \"assert\"\nimport { debug } from \"../common/debug\"\nimport type { ErrorCode, Namespace, Token } from \"../ast\"\nimport { NS, ParseError } from \"../ast\"\nimport { alternativeCR } from \"./util/alternative-cr\"\nimport { entitySets } from \"./util/entities\"\nimport {\n    AMPERSAND,\n    APOSTROPHE,\n    CARRIAGE_RETURN,\n    EOF,\n    EQUALS_SIGN,\n    EXCLAMATION_MARK,\n    GRAVE_ACCENT,\n    GREATER_THAN_SIGN,\n    HYPHEN_MINUS,\n    isControl,\n    isDigit,\n    isHexDigit,\n    isLetter,\n    isLowerHexDigit,\n    isNonCharacter,\n    isSurrogate,\n    isSurrogatePair,\n    isUpperHexDigit,\n    isUpperLetter,\n    isWhitespace,\n    LATIN_CAPITAL_D,\n    LATIN_CAPITAL_X,\n    LATIN_SMALL_X,\n    LEFT_CURLY_BRACKET,\n    LEFT_SQUARE_BRACKET,\n    LESS_THAN_SIGN,\n    LINE_FEED,\n    NULL,\n    NULL_REPLACEMENT,\n    NUMBER_SIGN,\n    QUESTION_MARK,\n    QUOTATION_MARK,\n    RIGHT_CURLY_BRACKET,\n    RIGHT_SQUARE_BRACKET,\n    SEMICOLON,\n    SOLIDUS,\n    toLowerCodePoint,\n} from \"./util/unicode\"\nimport type { ParserOptions } from \"../common/parser-options\"\n\n/**\n * Enumeration of token types.\n */\nexport type TokenType =\n    | \"HTMLAssociation\"\n    | \"HTMLBogusComment\"\n    | \"HTMLCDataText\"\n    | \"HTMLComment\"\n    | \"HTMLEndTagOpen\"\n    | \"HTMLIdentifier\"\n    | \"HTMLLiteral\"\n    | \"HTMLRCDataText\"\n    | \"HTMLRawText\"\n    | \"HTMLSelfClosingTagClose\"\n    | \"HTMLTagClose\"\n    | \"HTMLTagOpen\"\n    | \"HTMLText\"\n    | \"HTMLWhitespace\"\n    | \"VExpressionStart\"\n    | \"VExpressionEnd\"\n\n/**\n * Enumeration of tokenizer's state types.\n */\nexport type TokenizerState =\n    | \"DATA\"\n    | \"TAG_OPEN\"\n    | \"END_TAG_OPEN\"\n    | \"TAG_NAME\"\n    | \"RCDATA\"\n    | \"RCDATA_LESS_THAN_SIGN\"\n    | \"RCDATA_END_TAG_OPEN\"\n    | \"RCDATA_END_TAG_NAME\"\n    | \"RAWTEXT\"\n    | \"RAWTEXT_LESS_THAN_SIGN\"\n    | \"RAWTEXT_END_TAG_OPEN\"\n    | \"RAWTEXT_END_TAG_NAME\"\n    | \"BEFORE_ATTRIBUTE_NAME\"\n    | \"ATTRIBUTE_NAME\"\n    | \"AFTER_ATTRIBUTE_NAME\"\n    | \"BEFORE_ATTRIBUTE_VALUE\"\n    | \"ATTRIBUTE_VALUE_DOUBLE_QUOTED\"\n    | \"ATTRIBUTE_VALUE_SINGLE_QUOTED\"\n    | \"ATTRIBUTE_VALUE_UNQUOTED\"\n    | \"AFTER_ATTRIBUTE_VALUE_QUOTED\"\n    | \"SELF_CLOSING_START_TAG\"\n    | \"BOGUS_COMMENT\"\n    | \"MARKUP_DECLARATION_OPEN\"\n    | \"COMMENT_START\"\n    | \"COMMENT_START_DASH\"\n    | \"COMMENT\"\n    | \"COMMENT_LESS_THAN_SIGN\"\n    | \"COMMENT_LESS_THAN_SIGN_BANG\"\n    | \"COMMENT_LESS_THAN_SIGN_BANG_DASH\"\n    | \"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\"\n    | \"COMMENT_END_DASH\"\n    | \"COMMENT_END\"\n    | \"COMMENT_END_BANG\"\n    | \"CDATA_SECTION\"\n    | \"CDATA_SECTION_BRACKET\"\n    | \"CDATA_SECTION_END\"\n    | \"CHARACTER_REFERENCE\"\n    | \"NAMED_CHARACTER_REFERENCE\"\n    | \"AMBIGUOUS_AMPERSAND\"\n    | \"NUMERIC_CHARACTER_REFERENCE\"\n    | \"HEXADEMICAL_CHARACTER_REFERENCE_START\"\n    | \"DECIMAL_CHARACTER_REFERENCE_START\"\n    | \"HEXADEMICAL_CHARACTER_REFERENCE\"\n    | \"DECIMAL_CHARACTER_REFERENCE\"\n    | \"NUMERIC_CHARACTER_REFERENCE_END\"\n    | \"CHARACTER_REFERENCE_END\"\n    | \"V_EXPRESSION_START\"\n    | \"V_EXPRESSION_DATA\"\n    | \"V_EXPRESSION_END\"\n// ---- Use RAWTEXT state for <script> elements instead ----\n// \"SCRIPT_DATA\" |\n// \"SCRIPT_DATA_LESS_THAN_SIGN\" |\n// \"SCRIPT_DATA_END_TAG_OPEN\" |\n// \"SCRIPT_DATA_END_TAG_NAME\" |\n// \"SCRIPT_DATA_ESCAPE_START\" |\n// \"SCRIPT_DATA_ESCAPE_START_DASH\" |\n// \"SCRIPT_DATA_ESCAPED\" |\n// \"SCRIPT_DATA_ESCAPED_DASH\" |\n// \"SCRIPT_DATA_ESCAPED_DASH_DASH\" |\n// \"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\" |\n// \"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\" |\n// \"SCRIPT_DATA_ESCAPED_END_TAG_NAME\" |\n// \"SCRIPT_DATA_DOUBLE_ESCAPE_START\" |\n// \"SCRIPT_DATA_DOUBLE_ESCAPED\" |\n// \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\" |\n// \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\" |\n// \"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\" |\n// \"SCRIPT_DATA_DOUBLE_ESCAPE_END\" |\n// ---- Use BOGUS_COMMENT state for DOCTYPEs instead ----\n// \"DOCTYPE\" |\n// \"DOCTYPE_NAME\" |\n// \"AFTER_DOCTYPE_NAME\" |\n// \"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\" |\n// \"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\" |\n// \"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\" |\n// \"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\" |\n// \"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\" |\n// \"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\" |\n// \"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\" |\n// \"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\" |\n// \"BOGUS_DOCTYPE\"\n\n/**\n * Tokenizer for HTML.\n */\nexport class Tokenizer {\n    // Reading\n    public readonly text: string\n    public readonly gaps: number[]\n    public readonly lineTerminators: number[]\n    private readonly parserOptions: ParserOptions\n    private lastCodePoint: number\n    private lastCodePointRaw: number\n    private offset: number\n    private column: number\n    private line: number\n\n    // Tokenizing\n    private returnState: TokenizerState\n    private vExpressionScriptState: { state: TokenizerState } | null = null\n    private reconsuming: boolean\n    private buffer: number[]\n    private crStartOffset: number\n    private crCode: number\n    private committedToken: Token | null\n    private provisionalToken: Token | null // can be rollbacked.\n    private currentToken: Token | null\n    private lastTagOpenToken: Token | null\n    private tokenStartOffset: number\n    private tokenStartLine: number\n    private tokenStartColumn: number\n\n    /**\n     * The current state.\n     */\n    public state: TokenizerState\n\n    /**\n     * Syntax errors.\n     */\n    public errors: ParseError[]\n\n    /**\n     * The current namespace.\n     */\n    public namespace: Namespace\n\n    /**\n     * The flag which enables expression tokens.\n     * If this is true, this tokenizer will generate V_EXPRESSION_START and V_EXPRESSION_END tokens.\n     */\n    public expressionEnabled: boolean\n\n    /**\n     * Initialize this tokenizer.\n     * @param text The source code to tokenize.\n     * @param parserOptions The parser options.\n     */\n    public constructor(text: string, parserOptions?: ParserOptions) {\n        debug(\"[html] the source code length: %d\", text.length)\n        this.text = text\n        this.gaps = []\n        this.lineTerminators = []\n        this.parserOptions = parserOptions || {}\n        this.lastCodePoint = this.lastCodePointRaw = NULL\n        this.offset = -1\n        this.column = -1\n        this.line = 1\n        this.state = \"DATA\"\n        this.returnState = \"DATA\"\n        this.reconsuming = false\n        this.buffer = []\n        this.crStartOffset = -1\n        this.crCode = 0\n        this.errors = []\n        this.committedToken = null\n        this.provisionalToken = null\n        this.currentToken = null\n        this.lastTagOpenToken = null\n        this.tokenStartOffset = -1\n        this.tokenStartColumn = -1\n        this.tokenStartLine = 1\n        this.namespace = NS.HTML\n        this.expressionEnabled = false\n    }\n\n    /**\n     * Get the next token.\n     * @returns The next token or null.\n     */\n    public nextToken(): Token | null {\n        let cp = this.lastCodePoint\n        while (\n            this.committedToken == null &&\n            (cp !== EOF || this.reconsuming)\n        ) {\n            if (this.provisionalToken != null && !this.isProvisionalState()) {\n                this.commitProvisionalToken()\n                if (this.committedToken != null) {\n                    break\n                }\n            }\n\n            if (this.reconsuming) {\n                this.reconsuming = false\n                cp = this.lastCodePoint\n            } else {\n                cp = this.consumeNextCodePoint()\n            }\n\n            debug(\"[html] parse\", cp, this.state)\n            this.state = this[this.state](cp)\n        }\n\n        {\n            const token = this.consumeCommittedToken()\n            if (token != null) {\n                return token\n            }\n        }\n\n        assert(cp === EOF)\n\n        if (this.currentToken != null) {\n            this.endToken()\n\n            const token = this.consumeCommittedToken()\n            if (token != null) {\n                return token\n            }\n        }\n        return this.currentToken\n    }\n\n    /**\n     * Consume the last committed token.\n     * @returns The last committed token.\n     */\n    private consumeCommittedToken(): Token | null {\n        const token = this.committedToken\n        this.committedToken = null\n        return token\n    }\n\n    /**\n     * Consume the next code point.\n     * @returns The consumed code point.\n     */\n    private consumeNextCodePoint(): number {\n        if (this.offset >= this.text.length) {\n            this.lastCodePoint = this.lastCodePointRaw = EOF\n            return EOF\n        }\n\n        this.offset += this.lastCodePoint >= 0x10000 ? 2 : 1\n        if (this.offset >= this.text.length) {\n            this.advanceLocation()\n            this.lastCodePoint = this.lastCodePointRaw = EOF\n            return EOF\n        }\n\n        const cp = this.text.codePointAt(this.offset) as number\n\n        if (\n            isSurrogate(this.text.charCodeAt(this.offset)) &&\n            !isSurrogatePair(this.text.charCodeAt(this.offset + 1))\n        ) {\n            this.reportParseError(\"surrogate-in-input-stream\")\n        }\n        if (isNonCharacter(cp)) {\n            this.reportParseError(\"noncharacter-in-input-stream\")\n        }\n        if (isControl(cp) && !isWhitespace(cp) && cp !== NULL) {\n            this.reportParseError(\"control-character-in-input-stream\")\n        }\n\n        // Skip LF to convert CRLF → LF.\n        if (this.lastCodePointRaw === CARRIAGE_RETURN && cp === LINE_FEED) {\n            this.lastCodePoint = this.lastCodePointRaw = LINE_FEED\n            this.gaps.push(this.offset)\n            return this.consumeNextCodePoint()\n        }\n\n        // Update locations.\n        this.advanceLocation()\n        this.lastCodePoint = this.lastCodePointRaw = cp\n\n        // To convert CRLF → LF.\n        if (cp === CARRIAGE_RETURN) {\n            this.lastCodePoint = LINE_FEED\n            return LINE_FEED\n        }\n\n        return cp\n    }\n\n    /**\n     * Advance the current line and column.\n     */\n    private advanceLocation(): void {\n        if (this.lastCodePointRaw === LINE_FEED) {\n            this.lineTerminators.push(this.offset)\n            this.line += 1\n            this.column = 0\n        } else {\n            this.column += this.lastCodePoint >= 0x10000 ? 2 : 1\n        }\n    }\n\n    /**\n     * Directive reconsuming the current code point as the given state.\n     * @param state The next state.\n     * @returns The next state.\n     */\n    private reconsumeAs(state: TokenizerState): TokenizerState {\n        this.reconsuming = true\n        return state\n    }\n\n    /**\n     * Report an invalid character error.\n     * @param code The error code.\n     */\n    private reportParseError(code: ErrorCode): void {\n        const error = ParseError.fromCode(\n            code,\n            this.offset,\n            this.line,\n            this.column,\n        )\n        this.errors.push(error)\n\n        debug(\"[html] syntax error:\", error.message)\n    }\n\n    /**\n     * Mark the current location as a start of tokens.\n     */\n    private setStartTokenMark(): void {\n        this.tokenStartOffset = this.offset\n        this.tokenStartLine = this.line\n        this.tokenStartColumn = this.column\n    }\n\n    /**\n     * Mark the current location as a start of tokens.\n     */\n    private clearStartTokenMark(): void {\n        this.tokenStartOffset = -1\n    }\n\n    /**\n     * Start new token.\n     * @param type The type of new token.\n     * @returns The new token.\n     */\n    private startToken(type: TokenType): Token {\n        if (this.tokenStartOffset === -1) {\n            this.setStartTokenMark()\n        }\n        const offset = this.tokenStartOffset\n        const line = this.tokenStartLine\n        const column = this.tokenStartColumn\n\n        if (this.currentToken != null) {\n            this.endToken()\n        }\n        this.tokenStartOffset = -1\n\n        const token = (this.currentToken = {\n            type,\n            range: [offset, -1],\n            loc: {\n                start: { line, column },\n                end: { line: -1, column: -1 },\n            },\n            value: \"\",\n        })\n\n        debug(\"[html] start token: %d %s\", offset, token.type)\n        return this.currentToken\n    }\n\n    /**\n     * Commit the current token.\n     * @returns The ended token.\n     */\n    private endToken(): Token | null {\n        if (this.currentToken == null) {\n            throw new Error(\"Invalid state\")\n        }\n        if (this.tokenStartOffset === -1) {\n            this.setStartTokenMark()\n        }\n        const token = this.currentToken\n        const offset = this.tokenStartOffset\n        const line = this.tokenStartLine\n        const column = this.tokenStartColumn\n        const provisional = this.isProvisionalState()\n\n        this.currentToken = null\n        this.tokenStartOffset = -1\n\n        token.range[1] = offset\n        token.loc.end.line = line\n        token.loc.end.column = column\n\n        if (token.range[0] === offset && !provisional) {\n            debug(\n                \"[html] abandon token: %j %s %j\",\n                token.range,\n                token.type,\n                token.value,\n            )\n            return null\n        }\n\n        if (provisional) {\n            if (this.provisionalToken != null) {\n                this.commitProvisionalToken()\n            }\n            this.provisionalToken = token\n            debug(\n                \"[html] provisional-commit token: %j %s %j\",\n                token.range,\n                token.type,\n                token.value,\n            )\n        } else {\n            this.commitToken(token)\n        }\n\n        return token\n    }\n\n    /**\n     * Commit the given token.\n     * @param token The token to commit.\n     */\n    private commitToken(token: Token): void {\n        assert(\n            this.committedToken == null,\n            \"Invalid state: the commited token existed already.\",\n        )\n        debug(\n            \"[html] commit token: %j %j %s %j\",\n            token.range,\n            token.loc,\n            token.type,\n            token.value,\n        )\n\n        this.committedToken = token\n        if (token.type === \"HTMLTagOpen\") {\n            this.lastTagOpenToken = token\n        }\n    }\n\n    /**\n     * Check whether this is provisional state or not.\n     * @returns `true` if this is provisional state.\n     */\n    private isProvisionalState(): boolean {\n        return (\n            this.state.startsWith(\"RCDATA_\") ||\n            this.state.startsWith(\"RAWTEXT_\")\n        )\n    }\n\n    /**\n     * Commit the last provisional committed token.\n     */\n    private commitProvisionalToken(): void {\n        assert(\n            this.provisionalToken != null,\n            \"Invalid state: the provisional token was not found.\",\n        )\n\n        const token = this.provisionalToken\n        this.provisionalToken = null\n\n        if (token.range[0] < token.range[1]) {\n            this.commitToken(token)\n        }\n    }\n\n    /**\n     * Cancel the current token and set the last provisional committed token as the current token.\n     */\n    private rollbackProvisionalToken(): void {\n        assert(this.currentToken != null)\n        assert(this.provisionalToken != null)\n\n        const token = this.currentToken\n        debug(\"[html] rollback token: %d %s\", token.range[0], token.type)\n\n        this.currentToken = this.provisionalToken\n        this.provisionalToken = null\n    }\n\n    /**\n     * Append the given code point into the value of the current token.\n     * @param cp The code point to append.\n     * @param expected The expected type of the current token.\n     */\n    private appendTokenValue(cp: number, expected: TokenType | null): void {\n        const token = this.currentToken\n        if (token == null || (expected != null && token.type !== expected)) {\n            const msg1 = expected ? `\"${expected}\" type` : \"any token\"\n            const msg2 = token ? `\"${token.type}\" type` : \"no token\"\n\n            throw new Error(\n                `Tokenizer: Invalid state. Expected ${msg1}, but got ${msg2}.`,\n            )\n        }\n\n        token.value += String.fromCodePoint(cp)\n    }\n\n    /**\n     * Check whether the current token is appropriate `HTMLEndTagOpen` token.\n     * @returns {boolean} `true` if the current token is appropriate `HTMLEndTagOpen` token.\n     */\n    private isAppropriateEndTagOpen(): boolean {\n        return (\n            this.currentToken != null &&\n            this.lastTagOpenToken != null &&\n            this.currentToken.type === \"HTMLEndTagOpen\" &&\n            this.currentToken.value === this.lastTagOpenToken.value\n        )\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/syntax.html#data-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected DATA(cp: number): TokenizerState {\n        this.clearStartTokenMark()\n\n        while (true) {\n            const type = isWhitespace(cp) ? \"HTMLWhitespace\" : \"HTMLText\"\n            if (this.currentToken != null && this.currentToken.type !== type) {\n                this.endToken()\n                return this.reconsumeAs(this.state)\n            }\n            if (this.currentToken == null) {\n                this.startToken(type)\n            }\n\n            if (cp === AMPERSAND) {\n                this.returnState = \"DATA\"\n                return \"CHARACTER_REFERENCE\"\n            }\n            if (cp === LESS_THAN_SIGN) {\n                this.setStartTokenMark()\n                return \"TAG_OPEN\"\n            }\n            if (cp === LEFT_CURLY_BRACKET && this.expressionEnabled) {\n                this.setStartTokenMark()\n                this.returnState = \"DATA\"\n                return \"V_EXPRESSION_START\"\n            }\n            if (cp === RIGHT_CURLY_BRACKET && this.expressionEnabled) {\n                this.setStartTokenMark()\n                this.returnState = \"DATA\"\n                return \"V_EXPRESSION_END\"\n            }\n            if (cp === EOF) {\n                return \"DATA\"\n            }\n\n            if (cp === NULL) {\n                this.reportParseError(\"unexpected-null-character\")\n            }\n            this.appendTokenValue(cp, type)\n\n            cp = this.consumeNextCodePoint()\n        }\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/syntax.html#rcdata-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected RCDATA(cp: number): TokenizerState {\n        this.clearStartTokenMark()\n\n        while (true) {\n            const type = isWhitespace(cp) ? \"HTMLWhitespace\" : \"HTMLRCDataText\"\n            if (this.currentToken != null && this.currentToken.type !== type) {\n                this.endToken()\n                return this.reconsumeAs(this.state)\n            }\n            if (this.currentToken == null) {\n                this.startToken(type)\n            }\n\n            if (cp === AMPERSAND) {\n                this.returnState = \"RCDATA\"\n                return \"CHARACTER_REFERENCE\"\n            }\n            if (cp === LESS_THAN_SIGN) {\n                this.setStartTokenMark()\n                return \"RCDATA_LESS_THAN_SIGN\"\n            }\n            if (cp === LEFT_CURLY_BRACKET && this.expressionEnabled) {\n                this.setStartTokenMark()\n                this.returnState = \"RCDATA\"\n                return \"V_EXPRESSION_START\"\n            }\n            if (cp === RIGHT_CURLY_BRACKET && this.expressionEnabled) {\n                this.setStartTokenMark()\n                this.returnState = \"RCDATA\"\n                return \"V_EXPRESSION_END\"\n            }\n            if (cp === EOF) {\n                return \"DATA\"\n            }\n\n            if (cp === NULL) {\n                this.reportParseError(\"unexpected-null-character\")\n                cp = NULL_REPLACEMENT\n            }\n            this.appendTokenValue(cp, type)\n\n            cp = this.consumeNextCodePoint()\n        }\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/syntax.html#rawtext-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected RAWTEXT(cp: number): TokenizerState {\n        this.clearStartTokenMark()\n\n        while (true) {\n            const type = isWhitespace(cp) ? \"HTMLWhitespace\" : \"HTMLRawText\"\n            if (this.currentToken != null && this.currentToken.type !== type) {\n                this.endToken()\n                return this.reconsumeAs(this.state)\n            }\n            if (this.currentToken == null) {\n                this.startToken(type)\n            }\n\n            if (cp === LESS_THAN_SIGN) {\n                this.setStartTokenMark()\n                return \"RAWTEXT_LESS_THAN_SIGN\"\n            }\n            if (cp === LEFT_CURLY_BRACKET && this.expressionEnabled) {\n                this.setStartTokenMark()\n                this.returnState = \"RAWTEXT\"\n                return \"V_EXPRESSION_START\"\n            }\n            if (cp === RIGHT_CURLY_BRACKET && this.expressionEnabled) {\n                this.setStartTokenMark()\n                this.returnState = \"RAWTEXT\"\n                return \"V_EXPRESSION_END\"\n            }\n            if (cp === EOF) {\n                return \"DATA\"\n            }\n\n            if (cp === NULL) {\n                this.reportParseError(\"unexpected-null-character\")\n                cp = NULL_REPLACEMENT\n            }\n            this.appendTokenValue(cp, type)\n\n            cp = this.consumeNextCodePoint()\n        }\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/syntax.html#tag-open-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected TAG_OPEN(cp: number): TokenizerState {\n        if (cp === EXCLAMATION_MARK) {\n            return \"MARKUP_DECLARATION_OPEN\"\n        }\n        if (cp === SOLIDUS) {\n            return \"END_TAG_OPEN\"\n        }\n        if (isLetter(cp)) {\n            this.startToken(\"HTMLTagOpen\")\n            return this.reconsumeAs(\"TAG_NAME\")\n        }\n        if (cp === QUESTION_MARK) {\n            this.reportParseError(\n                \"unexpected-question-mark-instead-of-tag-name\",\n            )\n            this.startToken(\"HTMLBogusComment\")\n            return this.reconsumeAs(\"BOGUS_COMMENT\")\n        }\n        if (cp === EOF) {\n            this.clearStartTokenMark()\n            this.reportParseError(\"eof-before-tag-name\")\n            this.appendTokenValue(LESS_THAN_SIGN, \"HTMLText\")\n            return \"DATA\"\n        }\n\n        this.reportParseError(\"invalid-first-character-of-tag-name\")\n        this.appendTokenValue(LESS_THAN_SIGN, \"HTMLText\")\n        return this.reconsumeAs(\"DATA\")\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/syntax.html#end-tag-open-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected END_TAG_OPEN(cp: number): TokenizerState {\n        if (isLetter(cp)) {\n            this.startToken(\"HTMLEndTagOpen\")\n            return this.reconsumeAs(\"TAG_NAME\")\n        }\n        if (cp === GREATER_THAN_SIGN) {\n            this.endToken() // < Commit or abandon the current text token.\n            this.reportParseError(\"missing-end-tag-name\")\n            return \"DATA\"\n        }\n        if (cp === EOF) {\n            this.clearStartTokenMark()\n            this.reportParseError(\"eof-before-tag-name\")\n            this.appendTokenValue(LESS_THAN_SIGN, \"HTMLText\")\n            this.appendTokenValue(SOLIDUS, \"HTMLText\")\n            return \"DATA\"\n        }\n\n        this.reportParseError(\"invalid-first-character-of-tag-name\")\n        this.startToken(\"HTMLBogusComment\")\n        return this.reconsumeAs(\"BOGUS_COMMENT\")\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/syntax.html#tag-name-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected TAG_NAME(cp: number): TokenizerState {\n        while (true) {\n            if (isWhitespace(cp)) {\n                this.endToken()\n                return \"BEFORE_ATTRIBUTE_NAME\"\n            }\n            if (cp === SOLIDUS) {\n                this.endToken()\n                this.setStartTokenMark()\n                return \"SELF_CLOSING_START_TAG\"\n            }\n            if (cp === GREATER_THAN_SIGN) {\n                this.startToken(\"HTMLTagClose\")\n                return \"DATA\"\n            }\n            if (cp === EOF) {\n                this.reportParseError(\"eof-in-tag\")\n                return \"DATA\"\n            }\n            if (cp === NULL) {\n                this.reportParseError(\"unexpected-null-character\")\n                cp = NULL_REPLACEMENT\n            }\n\n            this.appendTokenValue(\n                isUpperLetter(cp) ? toLowerCodePoint(cp) : cp,\n                null,\n            )\n\n            cp = this.consumeNextCodePoint()\n        }\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/syntax.html#rcdata-less-than-sign-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected RCDATA_LESS_THAN_SIGN(cp: number): TokenizerState {\n        if (cp === SOLIDUS) {\n            this.buffer = []\n            return \"RCDATA_END_TAG_OPEN\"\n        }\n\n        this.appendTokenValue(LESS_THAN_SIGN, \"HTMLRCDataText\")\n        return this.reconsumeAs(\"RCDATA\")\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/syntax.html#rcdata-end-tag-open-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected RCDATA_END_TAG_OPEN(cp: number): TokenizerState {\n        if (isLetter(cp)) {\n            this.startToken(\"HTMLEndTagOpen\")\n            return this.reconsumeAs(\"RCDATA_END_TAG_NAME\")\n        }\n\n        this.appendTokenValue(LESS_THAN_SIGN, \"HTMLRCDataText\")\n        this.appendTokenValue(SOLIDUS, \"HTMLRCDataText\")\n        return this.reconsumeAs(\"RCDATA\")\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/syntax.html#rcdata-end-tag-name-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected RCDATA_END_TAG_NAME(cp: number): TokenizerState {\n        while (true) {\n            if (isWhitespace(cp) && this.isAppropriateEndTagOpen()) {\n                this.endToken()\n                return \"BEFORE_ATTRIBUTE_NAME\"\n            }\n            if (cp === SOLIDUS && this.isAppropriateEndTagOpen()) {\n                this.endToken()\n                this.setStartTokenMark()\n                return \"SELF_CLOSING_START_TAG\"\n            }\n            if (cp === GREATER_THAN_SIGN && this.isAppropriateEndTagOpen()) {\n                this.startToken(\"HTMLTagClose\")\n                return \"DATA\"\n            }\n            if (!isLetter(cp)) {\n                this.rollbackProvisionalToken()\n                this.appendTokenValue(LESS_THAN_SIGN, \"HTMLRCDataText\")\n                this.appendTokenValue(SOLIDUS, \"HTMLRCDataText\")\n                for (const cp1 of this.buffer) {\n                    this.appendTokenValue(cp1, \"HTMLRCDataText\")\n                }\n                return this.reconsumeAs(\"RCDATA\")\n            }\n\n            this.appendTokenValue(\n                isUpperLetter(cp) ? toLowerCodePoint(cp) : cp,\n                \"HTMLEndTagOpen\",\n            )\n            this.buffer.push(cp)\n\n            cp = this.consumeNextCodePoint()\n        }\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/syntax.html#rawtext-less-than-sign-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected RAWTEXT_LESS_THAN_SIGN(cp: number): TokenizerState {\n        if (cp === SOLIDUS) {\n            this.buffer = []\n            return \"RAWTEXT_END_TAG_OPEN\"\n        }\n\n        this.appendTokenValue(LESS_THAN_SIGN, \"HTMLRawText\")\n        return this.reconsumeAs(\"RAWTEXT\")\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/syntax.html#rawtext-end-tag-open-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected RAWTEXT_END_TAG_OPEN(cp: number): TokenizerState {\n        if (isLetter(cp)) {\n            this.startToken(\"HTMLEndTagOpen\")\n            return this.reconsumeAs(\"RAWTEXT_END_TAG_NAME\")\n        }\n\n        this.appendTokenValue(LESS_THAN_SIGN, \"HTMLRawText\")\n        this.appendTokenValue(SOLIDUS, \"HTMLRawText\")\n        return this.reconsumeAs(\"RAWTEXT\")\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/syntax.html#rawtext-end-tag-name-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected RAWTEXT_END_TAG_NAME(cp: number): TokenizerState {\n        while (true) {\n            if (cp === SOLIDUS && this.isAppropriateEndTagOpen()) {\n                this.endToken()\n                this.setStartTokenMark()\n                return \"SELF_CLOSING_START_TAG\"\n            }\n            if (cp === GREATER_THAN_SIGN && this.isAppropriateEndTagOpen()) {\n                this.startToken(\"HTMLTagClose\")\n                return \"DATA\"\n            }\n            if (isWhitespace(cp) && this.isAppropriateEndTagOpen()) {\n                this.endToken()\n                return \"BEFORE_ATTRIBUTE_NAME\"\n            }\n            if (!isLetter(cp) && !maybeValidCustomBlock.call(this, cp)) {\n                this.rollbackProvisionalToken()\n                this.appendTokenValue(LESS_THAN_SIGN, \"HTMLRawText\")\n                this.appendTokenValue(SOLIDUS, \"HTMLRawText\")\n                for (const cp1 of this.buffer) {\n                    this.appendTokenValue(cp1, \"HTMLRawText\")\n                }\n                return this.reconsumeAs(\"RAWTEXT\")\n            }\n\n            this.appendTokenValue(\n                isUpperLetter(cp) ? toLowerCodePoint(cp) : cp,\n                \"HTMLEndTagOpen\",\n            )\n            this.buffer.push(cp)\n\n            cp = this.consumeNextCodePoint()\n        }\n\n        function maybeValidCustomBlock(this: Tokenizer, nextCp: number) {\n            return (\n                this.currentToken &&\n                this.lastTagOpenToken &&\n                this.lastTagOpenToken.value.startsWith(\n                    this.currentToken.value + String.fromCodePoint(nextCp),\n                )\n            )\n        }\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/parsing.html#before-attribute-name-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected BEFORE_ATTRIBUTE_NAME(cp: number): TokenizerState {\n        while (isWhitespace(cp)) {\n            cp = this.consumeNextCodePoint()\n        }\n\n        if (cp === SOLIDUS || cp === GREATER_THAN_SIGN || cp === EOF) {\n            return this.reconsumeAs(\"AFTER_ATTRIBUTE_NAME\")\n        }\n\n        if (cp === EQUALS_SIGN) {\n            this.reportParseError(\n                \"unexpected-equals-sign-before-attribute-name\",\n            )\n            this.startToken(\"HTMLIdentifier\")\n            this.appendTokenValue(cp, \"HTMLIdentifier\")\n            return \"ATTRIBUTE_NAME\"\n        }\n\n        this.startToken(\"HTMLIdentifier\")\n        return this.reconsumeAs(\"ATTRIBUTE_NAME\")\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/parsing.html#attribute-name-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected ATTRIBUTE_NAME(cp: number): TokenizerState {\n        while (true) {\n            if (\n                isWhitespace(cp) ||\n                cp === SOLIDUS ||\n                cp === GREATER_THAN_SIGN ||\n                cp === EOF\n            ) {\n                this.endToken()\n                return this.reconsumeAs(\"AFTER_ATTRIBUTE_NAME\")\n            }\n            if (cp === EQUALS_SIGN) {\n                this.startToken(\"HTMLAssociation\")\n                return \"BEFORE_ATTRIBUTE_VALUE\"\n            }\n\n            if (cp === NULL) {\n                this.reportParseError(\"unexpected-null-character\")\n                cp = NULL_REPLACEMENT\n            }\n            if (\n                cp === QUOTATION_MARK ||\n                cp === APOSTROPHE ||\n                cp === LESS_THAN_SIGN\n            ) {\n                this.reportParseError(\"unexpected-character-in-attribute-name\")\n            }\n\n            this.appendTokenValue(\n                isUpperLetter(cp) ? toLowerCodePoint(cp) : cp,\n                \"HTMLIdentifier\",\n            )\n            cp = this.consumeNextCodePoint()\n        }\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/parsing.html#after-attribute-name-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected AFTER_ATTRIBUTE_NAME(cp: number): TokenizerState {\n        while (isWhitespace(cp)) {\n            cp = this.consumeNextCodePoint()\n        }\n\n        if (cp === SOLIDUS) {\n            this.setStartTokenMark()\n            return \"SELF_CLOSING_START_TAG\"\n        }\n        if (cp === EQUALS_SIGN) {\n            this.startToken(\"HTMLAssociation\")\n            return \"BEFORE_ATTRIBUTE_VALUE\"\n        }\n        if (cp === GREATER_THAN_SIGN) {\n            this.startToken(\"HTMLTagClose\")\n            return \"DATA\"\n        }\n\n        if (cp === EOF) {\n            this.reportParseError(\"eof-in-tag\")\n            return \"DATA\"\n        }\n\n        this.startToken(\"HTMLIdentifier\")\n        return this.reconsumeAs(\"ATTRIBUTE_NAME\")\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/parsing.html#before-attribute-value-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected BEFORE_ATTRIBUTE_VALUE(cp: number): TokenizerState {\n        this.endToken()\n\n        while (isWhitespace(cp)) {\n            cp = this.consumeNextCodePoint()\n        }\n\n        if (cp === GREATER_THAN_SIGN) {\n            this.reportParseError(\"missing-attribute-value\")\n            this.startToken(\"HTMLTagClose\")\n            return \"DATA\"\n        }\n\n        this.startToken(\"HTMLLiteral\")\n        if (cp === QUOTATION_MARK) {\n            return \"ATTRIBUTE_VALUE_DOUBLE_QUOTED\"\n        }\n        if (cp === APOSTROPHE) {\n            return \"ATTRIBUTE_VALUE_SINGLE_QUOTED\"\n        }\n        return this.reconsumeAs(\"ATTRIBUTE_VALUE_UNQUOTED\")\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/parsing.html#attribute-value-(double-quoted)-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected ATTRIBUTE_VALUE_DOUBLE_QUOTED(cp: number): TokenizerState {\n        while (true) {\n            if (cp === QUOTATION_MARK) {\n                return \"AFTER_ATTRIBUTE_VALUE_QUOTED\"\n            }\n            if (cp === AMPERSAND) {\n                this.returnState = \"ATTRIBUTE_VALUE_DOUBLE_QUOTED\"\n                return \"CHARACTER_REFERENCE\"\n            }\n\n            if (cp === NULL) {\n                this.reportParseError(\"unexpected-null-character\")\n                cp = NULL_REPLACEMENT\n            }\n            if (cp === EOF) {\n                this.reportParseError(\"eof-in-tag\")\n                return \"DATA\"\n            }\n\n            this.appendTokenValue(cp, \"HTMLLiteral\")\n            cp = this.consumeNextCodePoint()\n        }\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/parsing.html#attribute-value-(single-quoted)-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected ATTRIBUTE_VALUE_SINGLE_QUOTED(cp: number): TokenizerState {\n        while (true) {\n            if (cp === APOSTROPHE) {\n                return \"AFTER_ATTRIBUTE_VALUE_QUOTED\"\n            }\n            if (cp === AMPERSAND) {\n                this.returnState = \"ATTRIBUTE_VALUE_SINGLE_QUOTED\"\n                return \"CHARACTER_REFERENCE\"\n            }\n\n            if (cp === NULL) {\n                this.reportParseError(\"unexpected-null-character\")\n                cp = NULL_REPLACEMENT\n            }\n            if (cp === EOF) {\n                this.reportParseError(\"eof-in-tag\")\n                return \"DATA\"\n            }\n\n            this.appendTokenValue(cp, \"HTMLLiteral\")\n            cp = this.consumeNextCodePoint()\n        }\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/parsing.html#attribute-value-(unquoted)-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected ATTRIBUTE_VALUE_UNQUOTED(cp: number): TokenizerState {\n        while (true) {\n            if (isWhitespace(cp)) {\n                this.endToken()\n                return \"BEFORE_ATTRIBUTE_NAME\"\n            }\n            if (cp === AMPERSAND) {\n                this.returnState = \"ATTRIBUTE_VALUE_UNQUOTED\"\n                return \"CHARACTER_REFERENCE\"\n            }\n            if (cp === GREATER_THAN_SIGN) {\n                this.startToken(\"HTMLTagClose\")\n                return \"DATA\"\n            }\n\n            if (cp === NULL) {\n                this.reportParseError(\"unexpected-null-character\")\n                cp = NULL_REPLACEMENT\n            }\n            if (\n                cp === QUOTATION_MARK ||\n                cp === APOSTROPHE ||\n                cp === LESS_THAN_SIGN ||\n                cp === EQUALS_SIGN ||\n                cp === GRAVE_ACCENT\n            ) {\n                this.reportParseError(\n                    \"unexpected-character-in-unquoted-attribute-value\",\n                )\n            }\n            if (cp === EOF) {\n                this.reportParseError(\"eof-in-tag\")\n                return \"DATA\"\n            }\n\n            this.appendTokenValue(cp, \"HTMLLiteral\")\n            cp = this.consumeNextCodePoint()\n        }\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/parsing.html#after-attribute-value-(quoted)-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected AFTER_ATTRIBUTE_VALUE_QUOTED(cp: number): TokenizerState {\n        this.endToken()\n\n        if (isWhitespace(cp)) {\n            return \"BEFORE_ATTRIBUTE_NAME\"\n        }\n        if (cp === SOLIDUS) {\n            this.setStartTokenMark()\n            return \"SELF_CLOSING_START_TAG\"\n        }\n        if (cp === GREATER_THAN_SIGN) {\n            this.startToken(\"HTMLTagClose\")\n            return \"DATA\"\n        }\n\n        if (cp === EOF) {\n            this.reportParseError(\"eof-in-tag\")\n            return \"DATA\"\n        }\n\n        this.reportParseError(\"missing-whitespace-between-attributes\")\n        return this.reconsumeAs(\"BEFORE_ATTRIBUTE_NAME\")\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/parsing.html#self-closing-start-tag-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected SELF_CLOSING_START_TAG(cp: number): TokenizerState {\n        if (cp === GREATER_THAN_SIGN) {\n            this.startToken(\"HTMLSelfClosingTagClose\")\n\n            // Vue.js supports self-closing elements.\n            // So don't switch to RCDATA/RAWTEXT from any elements.\n            return \"DATA\"\n        }\n\n        if (cp === EOF) {\n            this.reportParseError(\"eof-in-tag\")\n            return \"DATA\"\n        }\n\n        this.reportParseError(\"unexpected-solidus-in-tag\")\n        this.clearStartTokenMark()\n        return this.reconsumeAs(\"BEFORE_ATTRIBUTE_NAME\")\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/parsing.html#bogus-comment-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected BOGUS_COMMENT(cp: number): TokenizerState {\n        while (true) {\n            if (cp === GREATER_THAN_SIGN) {\n                return \"DATA\"\n            }\n\n            if (cp === EOF) {\n                return \"DATA\"\n            }\n            if (cp === NULL) {\n                cp = NULL_REPLACEMENT\n            }\n            this.appendTokenValue(cp, null)\n\n            cp = this.consumeNextCodePoint()\n        }\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/parsing.html#markup-declaration-open-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected MARKUP_DECLARATION_OPEN(cp: number): TokenizerState {\n        if (cp === HYPHEN_MINUS && this.text[this.offset + 1] === \"-\") {\n            this.offset += 1\n            this.column += 1\n\n            this.startToken(\"HTMLComment\")\n            return \"COMMENT_START\"\n        }\n        if (\n            cp === LATIN_CAPITAL_D &&\n            this.text.slice(this.offset + 1, this.offset + 7) === \"OCTYPE\"\n        ) {\n            // It does not support DOCTYPE.\n            // this.offset += 6\n            // this.column += 6\n            // return \"DOCTYPE\"\n\n            // TODO\n            this.startToken(\"HTMLBogusComment\")\n            this.appendTokenValue(cp, \"HTMLBogusComment\")\n            return \"BOGUS_COMMENT\"\n        }\n        if (\n            cp === LEFT_SQUARE_BRACKET &&\n            this.text.slice(this.offset + 1, this.offset + 7) === \"CDATA[\"\n        ) {\n            this.offset += 6\n            this.column += 6\n\n            if (this.namespace === NS.HTML) {\n                this.reportParseError(\"cdata-in-html-content\")\n                this.startToken(\"HTMLBogusComment\").value = \"[CDATA[\"\n                return \"BOGUS_COMMENT\"\n            }\n\n            this.startToken(\"HTMLCDataText\")\n            return \"CDATA_SECTION\"\n        }\n\n        this.reportParseError(\"incorrectly-opened-comment\")\n        this.startToken(\"HTMLBogusComment\")\n        return this.reconsumeAs(\"BOGUS_COMMENT\")\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/parsing.html#comment-start-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected COMMENT_START(cp: number): TokenizerState {\n        if (cp === HYPHEN_MINUS) {\n            return \"COMMENT_START_DASH\"\n        }\n        if (cp === GREATER_THAN_SIGN) {\n            this.reportParseError(\"abrupt-closing-of-empty-comment\")\n            return \"DATA\"\n        }\n\n        return this.reconsumeAs(\"COMMENT\")\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/parsing.html#comment-start-dash-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected COMMENT_START_DASH(cp: number): TokenizerState {\n        if (cp === HYPHEN_MINUS) {\n            return \"COMMENT_END\"\n        }\n\n        if (cp === GREATER_THAN_SIGN) {\n            this.reportParseError(\"abrupt-closing-of-empty-comment\")\n            return \"DATA\"\n        }\n        if (cp === EOF) {\n            this.reportParseError(\"eof-in-comment\")\n            return \"DATA\"\n        }\n\n        this.appendTokenValue(HYPHEN_MINUS, \"HTMLComment\")\n        return this.reconsumeAs(\"COMMENT\")\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/parsing.html#comment-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected COMMENT(cp: number): TokenizerState {\n        while (true) {\n            if (cp === LESS_THAN_SIGN) {\n                this.appendTokenValue(LESS_THAN_SIGN, \"HTMLComment\")\n                return \"COMMENT_LESS_THAN_SIGN\"\n            }\n            if (cp === HYPHEN_MINUS) {\n                return \"COMMENT_END_DASH\"\n            }\n\n            if (cp === NULL) {\n                this.reportParseError(\"unexpected-null-character\")\n                cp = NULL_REPLACEMENT\n            }\n            if (cp === EOF) {\n                this.reportParseError(\"eof-in-comment\")\n                return \"DATA\"\n            }\n\n            this.appendTokenValue(cp, \"HTMLComment\")\n            cp = this.consumeNextCodePoint()\n        }\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/parsing.html#comment-less-than-sign-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected COMMENT_LESS_THAN_SIGN(cp: number): TokenizerState {\n        while (true) {\n            if (cp === EXCLAMATION_MARK) {\n                this.appendTokenValue(cp, \"HTMLComment\")\n                return \"COMMENT_LESS_THAN_SIGN_BANG\"\n            }\n            if (cp !== LESS_THAN_SIGN) {\n                return this.reconsumeAs(\"COMMENT\")\n            }\n\n            this.appendTokenValue(cp, \"HTMLComment\")\n            cp = this.consumeNextCodePoint()\n        }\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/parsing.html#comment-less-than-sign-bang-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected COMMENT_LESS_THAN_SIGN_BANG(cp: number): TokenizerState {\n        if (cp === HYPHEN_MINUS) {\n            return \"COMMENT_LESS_THAN_SIGN_BANG_DASH\"\n        }\n        return this.reconsumeAs(\"COMMENT\")\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/parsing.html#comment-less-than-sign-bang-dash-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected COMMENT_LESS_THAN_SIGN_BANG_DASH(cp: number): TokenizerState {\n        if (cp === HYPHEN_MINUS) {\n            return \"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\"\n        }\n        return this.reconsumeAs(\"COMMENT_END_DASH\")\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/parsing.html#comment-less-than-sign-bang-dash-dash-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH(\n        cp: number,\n    ): TokenizerState {\n        if (cp !== GREATER_THAN_SIGN && cp !== EOF) {\n            this.reportParseError(\"nested-comment\")\n        }\n        return this.reconsumeAs(\"COMMENT_END\")\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/parsing.html#comment-end-dash-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected COMMENT_END_DASH(cp: number): TokenizerState {\n        if (cp === HYPHEN_MINUS) {\n            return \"COMMENT_END\"\n        }\n\n        if (cp === EOF) {\n            this.reportParseError(\"eof-in-comment\")\n            return \"DATA\"\n        }\n\n        this.appendTokenValue(HYPHEN_MINUS, \"HTMLComment\")\n        return this.reconsumeAs(\"COMMENT\")\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/parsing.html#comment-end-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected COMMENT_END(cp: number): TokenizerState {\n        while (true) {\n            if (cp === GREATER_THAN_SIGN) {\n                return \"DATA\"\n            }\n            if (cp === EXCLAMATION_MARK) {\n                return \"COMMENT_END_BANG\"\n            }\n\n            if (cp === EOF) {\n                this.reportParseError(\"eof-in-comment\")\n                return \"DATA\"\n            }\n\n            this.appendTokenValue(HYPHEN_MINUS, \"HTMLComment\")\n\n            if (cp !== HYPHEN_MINUS) {\n                this.appendTokenValue(HYPHEN_MINUS, \"HTMLComment\")\n                return this.reconsumeAs(\"COMMENT\")\n            }\n            cp = this.consumeNextCodePoint()\n        }\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/parsing.html#comment-end-bang-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected COMMENT_END_BANG(cp: number): TokenizerState {\n        if (cp === HYPHEN_MINUS) {\n            this.appendTokenValue(HYPHEN_MINUS, \"HTMLComment\")\n            this.appendTokenValue(EXCLAMATION_MARK, \"HTMLComment\")\n            return \"COMMENT_END_DASH\"\n        }\n\n        if (cp === GREATER_THAN_SIGN) {\n            this.reportParseError(\"incorrectly-closed-comment\")\n            return \"DATA\"\n        }\n        if (cp === EOF) {\n            this.reportParseError(\"eof-in-comment\")\n            return \"DATA\"\n        }\n\n        this.appendTokenValue(HYPHEN_MINUS, \"HTMLComment\")\n        this.appendTokenValue(EXCLAMATION_MARK, \"HTMLComment\")\n        return this.reconsumeAs(\"COMMENT\")\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/parsing.html#cdata-section-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected CDATA_SECTION(cp: number): TokenizerState {\n        while (true) {\n            if (cp === RIGHT_SQUARE_BRACKET) {\n                return \"CDATA_SECTION_BRACKET\"\n            }\n\n            if (cp === EOF) {\n                this.reportParseError(\"eof-in-cdata\")\n                return \"DATA\"\n            }\n\n            this.appendTokenValue(cp, \"HTMLCDataText\")\n            cp = this.consumeNextCodePoint()\n        }\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/parsing.html#cdata-section-bracket-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected CDATA_SECTION_BRACKET(cp: number): TokenizerState {\n        if (cp === RIGHT_SQUARE_BRACKET) {\n            return \"CDATA_SECTION_END\"\n        }\n\n        this.appendTokenValue(RIGHT_SQUARE_BRACKET, \"HTMLCDataText\")\n        return this.reconsumeAs(\"CDATA_SECTION\")\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/parsing.html#cdata-section-end-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected CDATA_SECTION_END(cp: number): TokenizerState {\n        while (true) {\n            if (cp === GREATER_THAN_SIGN) {\n                return \"DATA\"\n            }\n            if (cp !== RIGHT_SQUARE_BRACKET) {\n                this.appendTokenValue(RIGHT_SQUARE_BRACKET, \"HTMLCDataText\")\n                this.appendTokenValue(RIGHT_SQUARE_BRACKET, \"HTMLCDataText\")\n                return this.reconsumeAs(\"CDATA_SECTION\")\n            }\n\n            this.appendTokenValue(RIGHT_SQUARE_BRACKET, \"HTMLCDataText\")\n            cp = this.consumeNextCodePoint()\n        }\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/parsing.html#character-reference-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected CHARACTER_REFERENCE(cp: number): TokenizerState {\n        this.crStartOffset = this.offset - 1\n        this.buffer = [AMPERSAND]\n\n        if (isDigit(cp) || isLetter(cp)) {\n            return this.reconsumeAs(\"NAMED_CHARACTER_REFERENCE\")\n        }\n        if (cp === NUMBER_SIGN) {\n            this.buffer.push(cp)\n            return \"NUMERIC_CHARACTER_REFERENCE\"\n        }\n        return this.reconsumeAs(\"CHARACTER_REFERENCE_END\")\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected NAMED_CHARACTER_REFERENCE(cp: number): TokenizerState {\n        for (const entitySet of entitySets) {\n            const length = entitySet.length\n            const entities = entitySet.entities\n            const text = this.text.slice(this.offset, this.offset + length)\n            const codepoints = entities[text]\n\n            if (codepoints == null) {\n                continue\n            }\n\n            const semi = text.endsWith(\";\")\n            const next = this.text.codePointAt(this.offset + 1)\n\n            this.offset += length - 1\n            this.column += length - 1\n\n            if (\n                this.returnState.startsWith(\"ATTR\") &&\n                !semi &&\n                next != null &&\n                (next === EQUALS_SIGN || isLetter(next) || isDigit(next))\n            ) {\n                for (const cp1 of text) {\n                    this.buffer.push(cp1.codePointAt(0) as number)\n                }\n            } else {\n                if (!semi) {\n                    this.reportParseError(\n                        \"missing-semicolon-after-character-reference\",\n                    )\n                }\n                this.buffer = codepoints\n            }\n\n            return \"CHARACTER_REFERENCE_END\"\n        }\n\n        for (const cp0 of this.buffer) {\n            this.appendTokenValue(cp0, null)\n        }\n        this.appendTokenValue(cp, null)\n\n        return \"AMBIGUOUS_AMPERSAND\"\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/parsing.html#ambiguous-ampersand-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected AMBIGUOUS_AMPERSAND(cp: number): TokenizerState {\n        while (isDigit(cp) || isLetter(cp)) {\n            this.appendTokenValue(cp, null)\n            cp = this.consumeNextCodePoint()\n        }\n\n        if (cp === SEMICOLON) {\n            this.reportParseError(\"unknown-named-character-reference\")\n        }\n        return this.reconsumeAs(this.returnState)\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/parsing.html#numeric-character-reference-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected NUMERIC_CHARACTER_REFERENCE(cp: number): TokenizerState {\n        this.crCode = 0\n\n        if (cp === LATIN_SMALL_X || cp === LATIN_CAPITAL_X) {\n            this.buffer.push(cp)\n            return \"HEXADEMICAL_CHARACTER_REFERENCE_START\"\n        }\n        return this.reconsumeAs(\"DECIMAL_CHARACTER_REFERENCE_START\")\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/parsing.html#hexademical-character-reference-start-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected HEXADEMICAL_CHARACTER_REFERENCE_START(\n        cp: number,\n    ): TokenizerState {\n        if (isHexDigit(cp)) {\n            return this.reconsumeAs(\"HEXADEMICAL_CHARACTER_REFERENCE\")\n        }\n\n        this.reportParseError(\n            \"absence-of-digits-in-numeric-character-reference\",\n        )\n        return this.reconsumeAs(\"CHARACTER_REFERENCE_END\")\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/parsing.html#decimal-character-reference-start-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected DECIMAL_CHARACTER_REFERENCE_START(cp: number): TokenizerState {\n        if (isDigit(cp)) {\n            return this.reconsumeAs(\"DECIMAL_CHARACTER_REFERENCE\")\n        }\n\n        this.reportParseError(\n            \"absence-of-digits-in-numeric-character-reference\",\n        )\n        return this.reconsumeAs(\"CHARACTER_REFERENCE_END\")\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/parsing.html#hexademical-character-reference-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected HEXADEMICAL_CHARACTER_REFERENCE(cp: number): TokenizerState {\n        while (true) {\n            if (isDigit(cp)) {\n                this.crCode = 16 * this.crCode + (cp - 0x30)\n            } else if (isUpperHexDigit(cp)) {\n                this.crCode = 16 * this.crCode + (cp - 0x37)\n            } else if (isLowerHexDigit(cp)) {\n                this.crCode = 16 * this.crCode + (cp - 0x57)\n            } else {\n                if (cp === SEMICOLON) {\n                    return \"NUMERIC_CHARACTER_REFERENCE_END\"\n                }\n\n                this.reportParseError(\n                    \"missing-semicolon-after-character-reference\",\n                )\n                return this.reconsumeAs(\"NUMERIC_CHARACTER_REFERENCE_END\")\n            }\n\n            cp = this.consumeNextCodePoint()\n        }\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/parsing.html#decimal-character-reference-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected DECIMAL_CHARACTER_REFERENCE(cp: number): TokenizerState {\n        while (true) {\n            if (isDigit(cp)) {\n                this.crCode = 10 * this.crCode + (cp - 0x30)\n            } else {\n                if (cp === SEMICOLON) {\n                    return \"NUMERIC_CHARACTER_REFERENCE_END\"\n                }\n\n                this.reportParseError(\n                    \"missing-semicolon-after-character-reference\",\n                )\n                return this.reconsumeAs(\"NUMERIC_CHARACTER_REFERENCE_END\")\n            }\n\n            cp = this.consumeNextCodePoint()\n        }\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/parsing.html#numeric-character-reference-end-state\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected NUMERIC_CHARACTER_REFERENCE_END(_cp: number): TokenizerState {\n        let code = this.crCode\n\n        if (code === 0) {\n            this.reportParseError(\"null-character-reference\")\n            code = NULL_REPLACEMENT\n        } else if (code > 0x10ffff) {\n            this.reportParseError(\"character-reference-outside-unicode-range\")\n            code = NULL_REPLACEMENT\n        } else if (isSurrogate(code)) {\n            this.reportParseError(\"surrogate-character-reference\")\n            code = NULL_REPLACEMENT\n        } else if (isNonCharacter(code)) {\n            this.reportParseError(\"noncharacter-character-reference\")\n        } else if (code === 0x0d || (isControl(code) && !isWhitespace(code))) {\n            this.reportParseError(\"control-character-reference\")\n            code = alternativeCR.get(code) || code\n        }\n\n        this.buffer = [code]\n        return this.reconsumeAs(\"CHARACTER_REFERENCE_END\")\n    }\n\n    /**\n     * https://html.spec.whatwg.org/multipage/parsing.html#flush-code-points-consumed-as-a-character-reference\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected CHARACTER_REFERENCE_END(_cp: number): TokenizerState {\n        assert(this.currentToken != null)\n\n        // The this.buffer.length is not new length since it includes surrogate pairs.\n        // Calculate new length.\n        const token = this.currentToken\n        const len0 = token.value.length\n        for (const cp1 of this.buffer) {\n            this.appendTokenValue(cp1, null)\n        }\n        const newLength = token.value.length - len0\n\n        // Make gaps in the difference of length.\n        for (let i = this.crStartOffset + newLength; i < this.offset; ++i) {\n            this.gaps.push(i)\n        }\n\n        return this.reconsumeAs(this.returnState)\n    }\n\n    /**\n     * Original state.\n     * Create `{{ `token.\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected V_EXPRESSION_START(cp: number): TokenizerState {\n        if (cp === LEFT_CURLY_BRACKET) {\n            this.startToken(\"VExpressionStart\")\n            this.appendTokenValue(LEFT_CURLY_BRACKET, null)\n            this.appendTokenValue(LEFT_CURLY_BRACKET, null)\n\n            if (\n                !(\n                    this.parserOptions.vueFeatures?.interpolationAsNonHTML ??\n                    true\n                )\n            ) {\n                return this.returnState\n            }\n\n            const closeIndex = this.text.indexOf(\"}}\", this.offset + 1)\n            if (closeIndex === -1) {\n                this.reportParseError(\"x-missing-interpolation-end\")\n                return this.returnState\n            }\n            this.vExpressionScriptState = {\n                state: this.returnState,\n            }\n            return \"V_EXPRESSION_DATA\"\n        }\n\n        this.appendTokenValue(LEFT_CURLY_BRACKET, null)\n        return this.reconsumeAs(this.returnState)\n    }\n\n    /**\n     * Original state.\n     * Parse in interpolation.\n     * @see https://github.com/vuejs/vue-next/blob/3a6b1207fa39cb35eed5bae0b5fdcdb465926bca/packages/compiler-core/src/parse.ts#L752\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected V_EXPRESSION_DATA(cp: number): TokenizerState {\n        this.clearStartTokenMark()\n        const state = this.vExpressionScriptState!.state\n\n        while (true) {\n            const type = isWhitespace(cp)\n                ? \"HTMLWhitespace\"\n                : state === \"RCDATA\"\n                ? \"HTMLRawText\"\n                : state === \"RAWTEXT\"\n                ? \"HTMLRCDataText\"\n                : \"HTMLText\"\n            if (this.currentToken != null && this.currentToken.type !== type) {\n                this.endToken()\n                return this.reconsumeAs(this.state)\n            }\n            if (this.currentToken == null) {\n                this.startToken(type)\n            }\n\n            if (cp === AMPERSAND && state !== \"RAWTEXT\") {\n                this.returnState = \"V_EXPRESSION_DATA\"\n                return \"CHARACTER_REFERENCE\"\n            }\n            // if (cp === LESS_THAN_SIGN) {\n            //     this.setStartTokenMark()\n            //     return \"TAG_OPEN\"\n            // }\n            if (cp === RIGHT_CURLY_BRACKET) {\n                this.setStartTokenMark()\n                this.returnState = \"V_EXPRESSION_DATA\"\n                return \"V_EXPRESSION_END\"\n            }\n            // Already checked\n            /* istanbul ignore next */\n            if (cp === EOF) {\n                this.reportParseError(\"x-missing-interpolation-end\")\n                return \"DATA\"\n            }\n\n            if (cp === NULL) {\n                this.reportParseError(\"unexpected-null-character\")\n            }\n            this.appendTokenValue(cp, type)\n\n            cp = this.consumeNextCodePoint()\n        }\n    }\n    /**\n     * Create `}} `token.\n     * @param cp The current code point.\n     * @returns The next state.\n     */\n    protected V_EXPRESSION_END(cp: number): TokenizerState {\n        if (cp === RIGHT_CURLY_BRACKET) {\n            this.startToken(\"VExpressionEnd\")\n            this.appendTokenValue(RIGHT_CURLY_BRACKET, null)\n            this.appendTokenValue(RIGHT_CURLY_BRACKET, null)\n            return this.vExpressionScriptState\n                ? this.vExpressionScriptState.state\n                : this.returnState\n        }\n\n        this.appendTokenValue(RIGHT_CURLY_BRACKET, null)\n        return this.reconsumeAs(this.returnState)\n    }\n}\n\n/*eslint-enable no-constant-condition, no-param-reassign */\n","/**\n * This file is copied from `eslint/lib/util/node-event-generator.js`\n */\nimport EventEmitter from \"events\"\nimport esquery, {ESQueryOptions, Selector} from \"esquery\"\nimport union from \"lodash/union\"\nimport intersection from \"lodash/intersection\"\nimport memoize from \"lodash/memoize\"\nimport {Node} from \"../ast\"\n\ninterface NodeSelector {\n    rawSelector: string\n    isExit: boolean\n    parsedSelector: Selector\n    listenerTypes: string[] | null\n    attributeCount: number\n    identifierCount: number\n}\n\n/**\n* Gets the possible types of a selector\n* @param parsedSelector An object (from esquery) describing the matching behavior of the selector\n* @returns The node types that could possibly trigger this selector, or `null` if all node types could trigger it\n*/\nfunction getPossibleTypes(parsedSelector: Selector): string[] | null {\n    switch (parsedSelector.type) {\n        case \"identifier\":\n            return [parsedSelector.value]\n\n        case \"matches\": {\n            const typesForComponents = parsedSelector.selectors.map(getPossibleTypes)\n\n            if (typesForComponents.every(Boolean)) {\n                return union(...(typesForComponents as string[][]))\n            }\n            return null\n        }\n\n        case \"compound\": {\n            const typesForComponents = parsedSelector.selectors.map(getPossibleTypes).filter(Boolean) as string[][]\n\n            // If all of the components could match any type, then the compound could also match any type.\n            if (!typesForComponents.length) {\n                return null\n            }\n\n            /*\n             * If at least one of the components could only match a particular type, the compound could only match\n             * the intersection of those types.\n             */\n            return intersection(...typesForComponents)\n        }\n\n        case \"child\":\n        case \"descendant\":\n        case \"sibling\":\n        case \"adjacent\":\n            return getPossibleTypes(parsedSelector.right)\n\n        default:\n            return null\n    }\n}\n\n/**\n * Counts the number of class, pseudo-class, and attribute queries in this selector\n * @param parsedSelector An object (from esquery) describing the selector's matching behavior\n * @returns The number of class, pseudo-class, and attribute queries in this selector\n */\nfunction countClassAttributes(parsedSelector: Selector): number {\n    switch (parsedSelector.type) {\n        case \"child\":\n        case \"descendant\":\n        case \"sibling\":\n        case \"adjacent\":\n            return countClassAttributes(parsedSelector.left) + countClassAttributes(parsedSelector.right)\n\n        case \"compound\":\n        case \"not\":\n        case \"matches\":\n            return parsedSelector.selectors.reduce((sum, childSelector) => sum + countClassAttributes(childSelector), 0)\n\n        case \"attribute\":\n        case \"field\":\n        case \"nth-child\":\n        case \"nth-last-child\":\n            return 1\n\n        default:\n            return 0\n    }\n}\n\n/**\n * Counts the number of identifier queries in this selector\n * @param parsedSelector An object (from esquery) describing the selector's matching behavior\n * @returns The number of identifier queries\n */\nfunction countIdentifiers(parsedSelector: Selector): number {\n    switch (parsedSelector.type) {\n        case \"child\":\n        case \"descendant\":\n        case \"sibling\":\n        case \"adjacent\":\n            return countIdentifiers(parsedSelector.left) + countIdentifiers(parsedSelector.right)\n\n        case \"compound\":\n        case \"not\":\n        case \"matches\":\n            return parsedSelector.selectors.reduce((sum, childSelector) => sum + countIdentifiers(childSelector), 0)\n\n        case \"identifier\":\n            return 1\n\n        default:\n            return 0\n    }\n}\n\n/**\n * Compares the specificity of two selector objects, with CSS-like rules.\n * @param selectorA An AST selector descriptor\n * @param selectorB Another AST selector descriptor\n * @returns\n * a value less than 0 if selectorA is less specific than selectorB\n * a value greater than 0 if selectorA is more specific than selectorB\n * a value less than 0 if selectorA and selectorB have the same specificity, and selectorA <= selectorB alphabetically\n * a value greater than 0 if selectorA and selectorB have the same specificity, and selectorA > selectorB alphabetically\n */\nfunction compareSpecificity(selectorA: NodeSelector, selectorB: NodeSelector): number {\n    return selectorA.attributeCount - selectorB.attributeCount ||\n        selectorA.identifierCount - selectorB.identifierCount ||\n        (selectorA.rawSelector <= selectorB.rawSelector ? -1 : 1)\n}\n\n/**\n * Parses a raw selector string, and throws a useful error if parsing fails.\n * @param rawSelector A raw AST selector\n * @returns An object (from esquery) describing the matching behavior of this selector\n * @throws An error if the selector is invalid\n */\nfunction tryParseSelector(rawSelector: string): Selector {\n    try {\n        return esquery.parse(rawSelector.replace(/:exit$/, \"\"))\n    }\n    catch (err: any) {\n        if (typeof err.offset === \"number\") {\n            throw new Error(`Syntax error in selector \"${rawSelector}\" at position ${err.offset}: ${err.message}`)\n        }\n        throw err\n    }\n}\n\n/**\n * Parses a raw selector string, and returns the parsed selector along with specificity and type information.\n * @param {string} rawSelector A raw AST selector\n * @returns {ASTSelector} A selector descriptor\n */\nconst parseSelector = memoize<(rawSelector: string) => NodeSelector>(rawSelector => {\n    const parsedSelector = tryParseSelector(rawSelector)\n\n    return {\n        rawSelector,\n        isExit: rawSelector.endsWith(\":exit\"),\n        parsedSelector,\n        listenerTypes: getPossibleTypes(parsedSelector),\n        attributeCount: countClassAttributes(parsedSelector),\n        identifierCount: countIdentifiers(parsedSelector),\n    }\n})\n\n//------------------------------------------------------------------------------\n// Public Interface\n//------------------------------------------------------------------------------\n\n/**\n * The event generator for AST nodes.\n * This implements below interface.\n *\n * ```ts\n * interface EventGenerator {\n *     emitter: EventEmitter\n *     enterNode(node: ASTNode): void\n *     leaveNode(node: ASTNode): void\n * }\n * ```\n */\nexport default class NodeEventGenerator {\n    emitter: EventEmitter\n    esqueryOptions: ESQueryOptions\n\n    private currentAncestry: Node[]\n    private enterSelectorsByNodeType: Map<string, NodeSelector[]>\n    private exitSelectorsByNodeType: Map<string, NodeSelector[]>\n    private anyTypeEnterSelectors: NodeSelector[]\n    private anyTypeExitSelectors: NodeSelector[]\n\n    /**\n    * @param emitter - An event emitter which is the destination of events. This emitter must already\n    * have registered listeners for all of the events that it needs to listen for.\n    */\n    constructor(emitter: EventEmitter, esqueryOptions: ESQueryOptions) {\n        this.emitter = emitter\n        this.esqueryOptions = esqueryOptions\n        this.currentAncestry = []\n        this.enterSelectorsByNodeType = new Map()\n        this.exitSelectorsByNodeType = new Map()\n        this.anyTypeEnterSelectors = []\n        this.anyTypeExitSelectors = []\n\n        const eventNames = typeof emitter.eventNames === \"function\"\n\n            // Use the built-in eventNames() function if available (Node 6+)\n            ? emitter.eventNames()\n\n            /*\n             * Otherwise, use the private _events property.\n             * Using a private property isn't ideal here, but this seems to\n             * be the best way to get a list of event names without overriding\n             * addEventListener, which would hurt performance. This property\n             * is widely used and unlikely to be removed in a future version\n             * (see https://github.com/nodejs/node/issues/1817). Also, future\n             * node versions will have eventNames() anyway.\n             */\n            : Object.keys((emitter as any)._events)\n\n        for (const rawSelector of eventNames) {\n            if (typeof rawSelector === \"symbol\") {\n                continue\n            }\n            const selector = parseSelector(rawSelector)\n\n            if (selector.listenerTypes) {\n                for (const nodeType of selector.listenerTypes) {\n                    const typeMap = selector.isExit ? this.exitSelectorsByNodeType : this.enterSelectorsByNodeType\n\n                    let selectors = typeMap.get(nodeType)\n                    if (selectors == null) {\n                        typeMap.set(nodeType, (selectors = []))\n                    }\n                    selectors.push(selector)\n                }\n            }\n            else {\n                (selector.isExit ? this.anyTypeExitSelectors : this.anyTypeEnterSelectors).push(selector)\n            }\n        }\n\n        this.anyTypeEnterSelectors.sort(compareSpecificity)\n        this.anyTypeExitSelectors.sort(compareSpecificity)\n        for (const selectorList of this.enterSelectorsByNodeType.values()) {\n            selectorList.sort(compareSpecificity)\n        }\n        for (const selectorList of this.exitSelectorsByNodeType.values()) {\n            selectorList.sort(compareSpecificity)\n        }\n    }\n\n    /**\n     * Checks a selector against a node, and emits it if it matches\n     * @param node The node to check\n     * @param selector An AST selector descriptor\n     */\n    private applySelector(node: Node, selector: NodeSelector): void {\n        if (esquery.matches(node, selector.parsedSelector, this.currentAncestry,  this.esqueryOptions)) {\n            this.emitter.emit(selector.rawSelector, node)\n        }\n    }\n\n    /**\n     * Applies all appropriate selectors to a node, in specificity order\n     * @param node The node to check\n     * @param isExit `false` if the node is currently being entered, `true` if it's currently being exited\n     */\n    private applySelectors(node: Node, isExit: boolean): void {\n        const selectorsByNodeType = (isExit ? this.exitSelectorsByNodeType : this.enterSelectorsByNodeType).get(node.type) || []\n        const anyTypeSelectors = isExit ? this.anyTypeExitSelectors : this.anyTypeEnterSelectors\n\n        /*\n         * selectorsByNodeType and anyTypeSelectors were already sorted by specificity in the constructor.\n         * Iterate through each of them, applying selectors in the right order.\n         */\n        let selectorsByTypeIndex = 0\n        let anyTypeSelectorsIndex = 0\n\n        while (selectorsByTypeIndex < selectorsByNodeType.length || anyTypeSelectorsIndex < anyTypeSelectors.length) {\n            if (\n                selectorsByTypeIndex >= selectorsByNodeType.length ||\n                (anyTypeSelectorsIndex < anyTypeSelectors.length && compareSpecificity(anyTypeSelectors[anyTypeSelectorsIndex], selectorsByNodeType[selectorsByTypeIndex]) < 0)\n            ) {\n                this.applySelector(node, anyTypeSelectors[anyTypeSelectorsIndex++])\n            }\n            else {\n                this.applySelector(node, selectorsByNodeType[selectorsByTypeIndex++])\n            }\n        }\n    }\n\n    /**\n     * Emits an event of entering AST node.\n     * @param node - A node which was entered.\n     */\n    enterNode(node: Node): void {\n        if (node.parent) {\n            this.currentAncestry.unshift(node.parent)\n        }\n        this.applySelectors(node, false)\n    }\n\n    /**\n     * Emits an event of leaving AST node.\n     * @param node - A node which was left.\n     */\n    leaveNode(node: Node): void {\n        this.applySelectors(node, true)\n        this.currentAncestry.shift()\n    }\n}\n","/**\n * @fileoverview Define utilify functions for token store.\n * @author Toru Nagashima\n */\nimport sortedIndexBy from \"lodash/sortedIndexBy\"\nimport {HasLocation} from \"../../ast\"\n\n/**\n * Gets `token.range[0]` from the given token.\n *\n * @param token - The token to get.\n * @returns The start location.\n * @private\n */\nfunction getStartLocation(token: { range: number[] }): number {\n    return token.range[0]\n}\n\n/**\n * Binary-searches the index of the first token which is after the given location.\n * If it was not found, this returns `tokens.length`.\n *\n * @param tokens - It searches the token in this list.\n * @param location - The location to search.\n * @returns The found index or `tokens.length`.\n */\nexport function search(tokens: HasLocation[], location: number): number {\n    return sortedIndexBy(\n        tokens as { range: number[] }[],\n        { range: [location] },\n        getStartLocation,\n    )\n}\n\n/**\n * Gets the index of the `startLoc` in `tokens`.\n * `startLoc` can be the value of `node.range[1]`, so this checks about `startLoc - 1` as well.\n *\n * @param tokens - The tokens to find an index.\n * @param indexMap - The map from locations to indices.\n * @param startLoc - The location to get an index.\n * @returns The index.\n */\nexport function getFirstIndex(tokens: HasLocation[], indexMap: { [key: number]: number }, startLoc: number): number {\n    if (startLoc in indexMap) {\n        return indexMap[startLoc]\n    }\n    if ((startLoc - 1) in indexMap) {\n        const index = indexMap[startLoc - 1]\n        const token = (index >= 0 && index < tokens.length) ? tokens[index] : null\n\n        // For the map of \"comment's location -> token's index\", it points the next token of a comment.\n        // In that case, +1 is unnecessary.\n        if (token && token.range[0] >= startLoc) {\n            return index\n        }\n        return index + 1\n    }\n    return 0\n}\n\n/**\n * Gets the index of the `endLoc` in `tokens`.\n * The information of end locations are recorded at `endLoc - 1` in `indexMap`, so this checks about `endLoc - 1` as well.\n *\n * @param tokens - The tokens to find an index.\n * @param indexMap - The map from locations to indices.\n * @param endLoc - The location to get an index.\n * @returns The index.\n */\nexport function getLastIndex(tokens: HasLocation[], indexMap: { [key: number]: number }, endLoc: number): number {\n    if (endLoc in indexMap) {\n        return indexMap[endLoc] - 1\n    }\n    if ((endLoc - 1) in indexMap) {\n        const index = indexMap[endLoc - 1]\n        const token = (index >= 0 && index < tokens.length) ? tokens[index] : null\n\n        // For the map of \"comment's location -> token's index\", it points the next token of a comment.\n        // In that case, -1 is necessary.\n        if (token && token.range[1] > endLoc) {\n            return index - 1\n        }\n        return index\n    }\n    return tokens.length - 1\n}\n","/**\n * @fileoverview Define the abstract class about cursors which iterate tokens.\n * @author Toru Nagashima\n */\nimport {Token} from \"../../../ast\"\n\n/**\n * The abstract class about cursors which iterate tokens.\n *\n * This class has 2 abstract methods.\n *\n * - `current: Token | Comment | null` ... The current token.\n * - `moveNext(): boolean` ... Moves this cursor to the next token. If the next token didn't exist, it returns `false`.\n *\n * This is similar to ES2015 Iterators.\n * However, Iterators were slow (at 2017-01), so I created this class as similar to C# IEnumerable.\n *\n * There are the following known sub classes.\n *\n * - ForwardTokenCursor .......... The cursor which iterates tokens only.\n * - BackwardTokenCursor ......... The cursor which iterates tokens only in reverse.\n * - ForwardTokenCommentCursor ... The cursor which iterates tokens and comments.\n * - BackwardTokenCommentCursor .. The cursor which iterates tokens and comments in reverse.\n * - DecorativeCursor\n *     - FilterCursor ............ The cursor which ignores the specified tokens.\n *     - SkipCursor .............. The cursor which ignores the first few tokens.\n *     - LimitCursor ............. The cursor which limits the count of tokens.\n *\n */\nexport default abstract class Cursor {\n    current: Token | null\n\n    /**\n     * Initializes this cursor.\n     */\n    constructor() {\n        this.current = null\n    }\n\n    /**\n     * Gets the first token.\n     * This consumes this cursor.\n     * @returns The first token or null.\n     */\n    getOneToken(): Token | null {\n        return this.moveNext() ? this.current : null\n    }\n\n    /**\n     * Gets the first tokens.\n     * This consumes this cursor.\n     * @returns All tokens.\n     */\n    getAllTokens(): Token[] {\n        const tokens: Token[] = []\n\n        while (this.moveNext()) {\n            tokens.push(this.current as Token)\n        }\n\n        return tokens\n    }\n\n    /**\n     * Moves this cursor to the next token.\n     * @returns {boolean} `true` if the next token exists.\n     * @abstract\n     */\n    abstract moveNext(): boolean\n}\n","/**\n * @fileoverview Define the cursor which iterates tokens and comments in reverse.\n * @author Toru Nagashima\n */\nimport {Token} from \"../../../ast\"\nimport {getLastIndex, search} from \"../utils\"\nimport Cursor from \"./cursor\"\n\n/**\n * The cursor which iterates tokens and comments in reverse.\n */\nexport default class BackwardTokenCommentCursor extends Cursor {\n    private tokens: Token[]\n    private comments: Token[]\n    private tokenIndex: number\n    private commentIndex: number\n    private border: number\n\n    /**\n     * Initializes this cursor.\n     * @param tokens - The array of tokens.\n     * @param comments - The array of comments.\n     * @param indexMap - The map from locations to indices in `tokens`.\n     * @param startLoc - The start location of the iteration range.\n     * @param endLoc - The end location of the iteration range.\n     */\n    constructor(tokens: Token[], comments: Token[], indexMap: { [key: number]: number }, startLoc: number, endLoc: number) {\n        super()\n        this.tokens = tokens\n        this.comments = comments\n        this.tokenIndex = getLastIndex(tokens, indexMap, endLoc)\n        this.commentIndex = search(comments, endLoc) - 1\n        this.border = startLoc\n    }\n\n    /** @inheritdoc */\n    moveNext(): boolean {\n        const token = (this.tokenIndex >= 0) ? this.tokens[this.tokenIndex] : null\n        const comment = (this.commentIndex >= 0) ? this.comments[this.commentIndex] : null\n\n        if (token && (!comment || token.range[1] > comment.range[1])) {\n            this.current = token\n            this.tokenIndex -= 1\n        }\n        else if (comment) {\n            this.current = comment\n            this.commentIndex -= 1\n        }\n        else {\n            this.current = null\n        }\n\n        return this.current != null && (this.border === -1 || this.current.range[0] >= this.border)\n    }\n}\n","/**\n * @fileoverview Define the cursor which iterates tokens only in reverse.\n * @author Toru Nagashima\n */\nimport {Token} from \"../../../ast\"\nimport {getFirstIndex, getLastIndex} from \"../utils\"\nimport Cursor from \"./cursor\"\n\n/**\n * The cursor which iterates tokens only in reverse.\n */\nexport default class BackwardTokenCursor extends Cursor {\n    private tokens: Token[]\n    private index: number\n    private indexEnd: number\n\n    /**\n     * Initializes this cursor.\n     * @param tokens - The array of tokens.\n     * @param comments - The array of comments.\n     * @param indexMap - The map from locations to indices in `tokens`.\n     * @param startLoc - The start location of the iteration range.\n     * @param endLoc - The end location of the iteration range.\n     */\n    constructor(tokens: Token[], _comments: Token[], indexMap: { [key: number]: number }, startLoc: number, endLoc: number) {\n        super()\n        this.tokens = tokens\n        this.index = getLastIndex(tokens, indexMap, endLoc)\n        this.indexEnd = getFirstIndex(tokens, indexMap, startLoc)\n    }\n\n    /** @inheritdoc */\n    moveNext(): boolean {\n        if (this.index >= this.indexEnd) {\n            this.current = this.tokens[this.index]\n            this.index -= 1\n            return true\n        }\n        return false\n    }\n\n    //\n    // Shorthand for performance.\n    //\n\n    /** @inheritdoc */\n    getOneToken(): Token | null {\n        return (this.index >= this.indexEnd) ? this.tokens[this.index] : null\n    }\n}\n","/**\n * @fileoverview Define the abstract class about cursors which manipulate another cursor.\n * @author Toru Nagashima\n */\nimport Cursor from \"./cursor\"\n\n//------------------------------------------------------------------------------\n// Exports\n//------------------------------------------------------------------------------\n\n/**\n * The abstract class about cursors which manipulate another cursor.\n */\nexport default class DecorativeCursor extends Cursor {\n    protected cursor: Cursor\n\n    /**\n     * Initializes this cursor.\n     * @param cursor - The cursor to be decorated.\n     */\n    constructor(cursor: Cursor) {\n        super()\n        this.cursor = cursor\n    }\n\n    /** @inheritdoc */\n    moveNext(): boolean {\n        const retv = this.cursor.moveNext()\n\n        this.current = this.cursor.current\n\n        return retv\n    }\n}\n","/**\n * @fileoverview Define the cursor which ignores specified tokens.\n * @author Toru Nagashima\n */\nimport {Token} from \"../../../ast\"\nimport Cursor from \"./cursor\"\nimport DecorativeCursor from \"./decorative-cursor\"\n\n/**\n * The decorative cursor which ignores specified tokens.\n */\nexport default class FilterCursor extends DecorativeCursor {\n    private predicate: (token: Token) => boolean\n\n    /**\n     * Initializes this cursor.\n     * @param cursor - The cursor to be decorated.\n     * @param predicate - The predicate function to decide tokens this cursor iterates.\n     */\n    constructor(cursor: Cursor, predicate: (token: Token) => boolean) {\n        super(cursor)\n        this.predicate = predicate\n    }\n\n    /** @inheritdoc */\n    moveNext(): boolean {\n        const predicate = this.predicate\n\n        while (super.moveNext()) {\n            if (predicate(this.current as Token)) {\n                return true\n            }\n        }\n        return false\n    }\n}\n","/**\n * @fileoverview Define the cursor which iterates tokens and comments.\n * @author Toru Nagashima\n */\nimport {Token} from \"../../../ast\"\nimport {getFirstIndex, search} from \"../utils\"\nimport Cursor from \"./cursor\"\n\n/**\n * The cursor which iterates tokens and comments.\n */\nexport default class ForwardTokenCommentCursor extends Cursor {\n    private tokens: Token[]\n    private comments: Token[]\n    private tokenIndex: number\n    private commentIndex: number\n    private border: number\n\n    /**\n     * Initializes this cursor.\n     * @param tokens - The array of tokens.\n     * @param comments - The array of comments.\n     * @param indexMap - The map from locations to indices in `tokens`.\n     * @param startLoc - The start location of the iteration range.\n     * @param endLoc - The end location of the iteration range.\n     */\n    constructor(tokens: Token[], comments: Token[], indexMap: { [key: number]: number }, startLoc: number, endLoc: number) {\n        super()\n        this.tokens = tokens\n        this.comments = comments\n        this.tokenIndex = getFirstIndex(tokens, indexMap, startLoc)\n        this.commentIndex = search(comments, startLoc)\n        this.border = endLoc\n    }\n\n    /** @inheritdoc */\n    moveNext(): boolean {\n        const token = (this.tokenIndex < this.tokens.length) ? this.tokens[this.tokenIndex] : null\n        const comment = (this.commentIndex < this.comments.length) ? this.comments[this.commentIndex] : null\n\n        if (token && (!comment || token.range[0] < comment.range[0])) {\n            this.current = token\n            this.tokenIndex += 1\n        }\n        else if (comment) {\n            this.current = comment\n            this.commentIndex += 1\n        }\n        else {\n            this.current = null\n        }\n\n        return this.current != null && (this.border === -1 || this.current.range[1] <= this.border)\n    }\n}\n","/**\n * @fileoverview Define the cursor which iterates tokens only.\n * @author Toru Nagashima\n */\nimport {Token} from \"../../../ast\"\nimport {getFirstIndex, getLastIndex} from \"../utils\"\nimport Cursor from \"./cursor\"\n\n/**\n * The cursor which iterates tokens only.\n */\nexport default class ForwardTokenCursor extends Cursor {\n    private tokens: Token[]\n    protected index: number\n    protected indexEnd: number\n\n    /**\n     * Initializes this cursor.\n     * @param tokens - The array of tokens.\n     * @param comments - The array of comments.\n     * @param indexMap - The map from locations to indices in `tokens`.\n     * @param startLoc - The start location of the iteration range.\n     * @param endLoc - The end location of the iteration range.\n     */\n    constructor(tokens: Token[], _comments: Token[], indexMap: { [key: number]: number }, startLoc: number, endLoc: number) {\n        super()\n        this.tokens = tokens\n        this.index = getFirstIndex(tokens, indexMap, startLoc)\n        this.indexEnd = getLastIndex(tokens, indexMap, endLoc)\n    }\n\n    /** @inheritdoc */\n    moveNext(): boolean {\n        if (this.index <= this.indexEnd) {\n            this.current = this.tokens[this.index]\n            this.index += 1\n            return true\n        }\n        return false\n    }\n\n    //\n    // Shorthand for performance.\n    //\n\n    /** @inheritdoc */\n    getOneToken(): Token | null {\n        return (this.index <= this.indexEnd) ? this.tokens[this.index] : null\n    }\n\n    /** @inheritdoc */\n    getAllTokens(): Token[] {\n        return this.tokens.slice(this.index, this.indexEnd + 1)\n    }\n}\n","/**\n * @fileoverview Define the cursor which limits the number of tokens.\n * @author Toru Nagashima\n */\nimport Cursor from \"./cursor\"\nimport DecorativeCursor from \"./decorative-cursor\"\n\n/**\n * The decorative cursor which limits the number of tokens.\n */\nexport default class LimitCursor extends DecorativeCursor {\n    private count: number\n\n    /**\n     * Initializes this cursor.\n     * @param cursor - The cursor to be decorated.\n     * @param count - The count of tokens this cursor iterates.\n     */\n    constructor(cursor: Cursor, count: number) {\n        super(cursor)\n        this.count = count\n    }\n\n    /** @inheritdoc */\n    moveNext(): boolean {\n        if (this.count > 0) {\n            this.count -= 1\n            return super.moveNext()\n        }\n        return false\n    }\n}\n","/**\n * @fileoverview Define the cursor which ignores the first few tokens.\n * @author Toru Nagashima\n */\nimport Cursor from \"./cursor\"\nimport DecorativeCursor from \"./decorative-cursor\"\n\n/**\n * The decorative cursor which ignores the first few tokens.\n */\nexport default class SkipCursor extends DecorativeCursor {\n    private count: number\n\n    /**\n     * Initializes this cursor.\n     * @param cursor - The cursor to be decorated.\n     * @param count - The count of tokens this cursor skips.\n     */\n    constructor(cursor: Cursor, count: number) {\n        super(cursor)\n        this.count = count\n    }\n\n    /** @inheritdoc */\n    moveNext(): boolean {\n        while (this.count > 0) {\n            this.count -= 1\n            if (!super.moveNext()) {\n                return false\n            }\n        }\n        return super.moveNext()\n    }\n}\n","/**\n * @fileoverview Define 2 token factories; forward and backward.\n * @author Toru Nagashima\n */\nimport {Token} from \"../../../ast\"\nimport BackwardTokenCommentCursor from \"./backward-token-comment-cursor\"\nimport BackwardTokenCursor from \"./backward-token-cursor\"\nimport Cursor from \"./cursor\"\nimport FilterCursor from \"./filter-cursor\"\nimport ForwardTokenCommentCursor from \"./forward-token-comment-cursor\"\nimport ForwardTokenCursor from \"./forward-token-cursor\"\nimport LimitCursor from \"./limit-cursor\"\nimport SkipCursor from \"./skip-cursor\"\n\n/**\n * The cursor factory.\n * @private\n */\nexport class CursorFactory {\n    private TokenCursor: typeof BackwardTokenCursor | typeof ForwardTokenCursor\n    private TokenCommentCursor: typeof BackwardTokenCommentCursor | typeof ForwardTokenCommentCursor\n\n    /**\n     * Initializes this cursor.\n     * @param TokenCursor - The class of the cursor which iterates tokens only.\n     * @param TokenCommentCursor - The class of the cursor which iterates the mix of tokens and comments.\n     */\n    constructor(TokenCursor: typeof BackwardTokenCursor | typeof ForwardTokenCursor, TokenCommentCursor: typeof BackwardTokenCommentCursor | typeof ForwardTokenCommentCursor) {\n        this.TokenCursor = TokenCursor\n        this.TokenCommentCursor = TokenCommentCursor\n    }\n\n    /**\n     * Creates a base cursor instance that can be decorated by createCursor.\n     *\n     * @param tokens - The array of tokens.\n     * @param comments - The array of comments.\n     * @param indexMap - The map from locations to indices in `tokens`.\n     * @param startLoc - The start location of the iteration range.\n     * @param endLoc - The end location of the iteration range.\n     * @param includeComments - The flag to iterate comments as well.\n     * @returns The created base cursor.\n     */\n    createBaseCursor(tokens: Token[], comments: Token[], indexMap: { [key: number]: number }, startLoc: number, endLoc: number, includeComments: boolean): Cursor {\n        const TokenCursor = includeComments ? this.TokenCommentCursor : this.TokenCursor\n        return new TokenCursor(tokens, comments, indexMap, startLoc, endLoc)\n    }\n\n    /**\n     * Creates a cursor that iterates tokens with normalized options.\n     *\n     * @param tokens - The array of tokens.\n     * @param comments - The array of comments.\n     * @param indexMap - The map from locations to indices in `tokens`.\n     * @param startLoc - The start location of the iteration range.\n     * @param endLoc - The end location of the iteration range.\n     * @param includeComments - The flag to iterate comments as well.\n     * @param filter - The predicate function to choose tokens.\n     * @param skip - The count of tokens the cursor skips.\n     * @param count - The maximum count of tokens the cursor iterates. Zero is no iteration for backward compatibility.\n     * @returns The created cursor.\n     */\n    createCursor(tokens: Token[], comments: Token[], indexMap: { [key: number]: number }, startLoc: number, endLoc: number, includeComments: boolean, filter: ((token: Token) => boolean) | null, skip: number, count: number): Cursor {\n        let cursor = this.createBaseCursor(tokens, comments, indexMap, startLoc, endLoc, includeComments)\n\n        if (filter) {\n            cursor = new FilterCursor(cursor, filter)\n        }\n        if (skip >= 1) {\n            cursor = new SkipCursor(cursor, skip)\n        }\n        if (count >= 0) {\n            cursor = new LimitCursor(cursor, count)\n        }\n\n        return cursor\n    }\n}\n\nexport const forward = new CursorFactory(ForwardTokenCursor, ForwardTokenCommentCursor)\nexport const backward = new CursorFactory(BackwardTokenCursor, BackwardTokenCommentCursor)\n","/**\n * @fileoverview Define the cursor which iterates tokens only, with inflated range.\n * @author Toru Nagashima\n */\nimport {Token} from \"../../../ast\"\nimport ForwardTokenCursor from \"./forward-token-cursor\"\n\n/**\n * The cursor which iterates tokens only, with inflated range.\n * This is for the backward compatibility of padding options.\n */\nexport default class PaddedTokenCursor extends ForwardTokenCursor {\n    /**\n     * Initializes this cursor.\n     * @param tokens - The array of tokens.\n     * @param comments - The array of comments.\n     * @param indexMap - The map from locations to indices in `tokens`.\n     * @param startLoc - The start location of the iteration range.\n     * @param endLoc - The end location of the iteration range.\n     * @param beforeCount - The number of tokens this cursor iterates before start.\n     * @param afterCount - The number of tokens this cursor iterates after end.\n     */\n    constructor(tokens: Token[], comments: Token[], indexMap: { [key: number]: number }, startLoc: number, endLoc: number, beforeCount: number, afterCount: number) {\n        super(tokens, comments, indexMap, startLoc, endLoc)\n        this.index = Math.max(0, this.index - beforeCount)\n        this.indexEnd = Math.min(tokens.length - 1, this.indexEnd + afterCount)\n    }\n}\n","/**\n * @fileoverview Object to handle access and retrieval of tokens.\n * @author Brandon Mills\n */\nimport assert from \"assert\"\nimport {HasLocation, Token} from \"../../ast\"\nimport * as cursors from \"./cursors\"\nimport Cursor from \"./cursors/cursor\"\nimport ForwardTokenCursor from \"./cursors/forward-token-cursor\"\nimport PaddedTokenCursor from \"./cursors/padded-token-cursor\"\nimport {search} from \"./utils\"\n\nexport type SkipOptions = number | ((token: Token) => boolean) | {\n    includeComments?: boolean\n    filter?: (token: Token) => boolean\n    skip?: number\n}\nexport type CountOptions = number | ((token: Token) => boolean) | {\n    includeComments?: boolean\n    filter?: (token: Token) => boolean\n    count?: number\n}\n\n/**\n * Check whether the given token is a comment token or not.\n * @param token The token to check.\n * @returns `true` if the token is a comment token.\n */\nfunction isCommentToken(token: Token): boolean {\n    return token.type === \"Line\" || token.type === \"Block\" || token.type === \"Shebang\"\n}\n\n/**\n * Creates the map from locations to indices in `tokens`.\n *\n * The first/last location of tokens is mapped to the index of the token.\n * The first/last location of comments is mapped to the index of the next token of each comment.\n *\n * @param tokens - The array of tokens.\n * @param comments - The array of comments.\n * @returns The map from locations to indices in `tokens`.\n * @private\n */\nfunction createIndexMap(tokens: Token[], comments: Token[]): { [key: number]: number } {\n    const map = Object.create(null)\n    let tokenIndex = 0\n    let commentIndex = 0\n    let nextStart = 0\n    let range: [number, number] | null = null\n\n    while (tokenIndex < tokens.length || commentIndex < comments.length) {\n        nextStart = (commentIndex < comments.length) ? comments[commentIndex].range[0] : Number.MAX_SAFE_INTEGER\n        while (tokenIndex < tokens.length && (range = tokens[tokenIndex].range)[0] < nextStart) {\n            map[range[0]] = tokenIndex\n            map[range[1] - 1] = tokenIndex\n            tokenIndex += 1\n        }\n\n        nextStart = (tokenIndex < tokens.length) ? tokens[tokenIndex].range[0] : Number.MAX_SAFE_INTEGER\n        while (commentIndex < comments.length && (range = comments[commentIndex].range)[0] < nextStart) {\n            map[range[0]] = tokenIndex\n            map[range[1] - 1] = tokenIndex\n            commentIndex += 1\n        }\n    }\n\n    return map\n}\n\n/**\n * Creates the cursor iterates tokens with options.\n *\n * @param factory - The cursor factory to initialize cursor.\n * @param tokens - The array of tokens.\n * @param comments - The array of comments.\n * @param indexMap - The map from locations to indices in `tokens`.\n * @param startLoc - The start location of the iteration range.\n * @param endLoc - The end location of the iteration range.\n * @param opts - The option object. If this is a number then it's `opts.skip`. If this is a function then it's `opts.filter`.\n * @returns The created cursor.\n * @private\n */\nfunction createCursorWithSkip(factory: cursors.CursorFactory, tokens: Token[], comments: Token[], indexMap: { [key: number]: number }, startLoc: number, endLoc: number, opts?: SkipOptions): Cursor {\n    let includeComments = false\n    let skip = 0\n    let filter: ((token: Token) => boolean) | null = null\n\n    if (typeof opts === \"number\") {\n        skip = opts | 0\n    }\n    else if (typeof opts === \"function\") {\n        filter = opts\n    }\n    else if (opts) {\n        includeComments = Boolean(opts.includeComments)\n        skip = opts.skip || 0\n        filter = opts.filter || null\n    }\n    assert(skip >= 0, \"options.skip should be zero or a positive integer.\")\n    assert(!filter || typeof filter === \"function\", \"options.filter should be a function.\")\n\n    return factory.createCursor(tokens, comments, indexMap, startLoc, endLoc, includeComments, filter, skip, -1)\n}\n\n/**\n * Creates the cursor iterates tokens with options.\n *\n * @param factory - The cursor factory to initialize cursor.\n * @param tokens - The array of tokens.\n * @param comments - The array of comments.\n * @param indexMap - The map from locations to indices in `tokens`.\n * @param startLoc - The start location of the iteration range.\n * @param endLoc - The end location of the iteration range.\n * @param opts - The option object. If this is a number then it's `opts.count`. If this is a function then it's `opts.filter`.\n * @returns The created cursor.\n * @private\n */\nfunction createCursorWithCount(factory: cursors.CursorFactory, tokens: Token[], comments: Token[], indexMap: { [key: number]: number }, startLoc: number, endLoc: number, opts?: CountOptions): Cursor {\n    let includeComments = false\n    let count = 0\n    let countExists = false\n    let filter: ((token: Token) => boolean) | null = null\n\n    if (typeof opts === \"number\") {\n        count = opts | 0\n        countExists = true\n    }\n    else if (typeof opts === \"function\") {\n        filter = opts\n    }\n    else if (opts) {\n        includeComments = Boolean(opts.includeComments)\n        count = opts.count || 0\n        countExists = typeof opts.count === \"number\"\n        filter = opts.filter || null\n    }\n    assert(count >= 0, \"options.count should be zero or a positive integer.\")\n    assert(!filter || typeof filter === \"function\", \"options.filter should be a function.\")\n\n    return factory.createCursor(tokens, comments, indexMap, startLoc, endLoc, includeComments, filter, 0, countExists ? count : -1)\n}\n\n/**\n * Creates the cursor iterates tokens with options.\n *\n * @param tokens - The array of tokens.\n * @param comments - The array of comments.\n * @param indexMap - The map from locations to indices in `tokens`.\n * @param startLoc - The start location of the iteration range.\n * @param endLoc - The end location of the iteration range.\n * @param beforeCount - The number of tokens before the node to retrieve.\n * @param afterCount - The number of tokens after the node to retrieve.\n * @returns The created cursor.\n * @private\n */\nfunction createCursorWithPadding(tokens: Token[], comments: Token[], indexMap: { [key: number]: number }, startLoc: number, endLoc: number, beforeCount?: CountOptions, afterCount?: number): Cursor {\n    if (typeof beforeCount === \"undefined\" && typeof afterCount === \"undefined\") {\n        return new ForwardTokenCursor(tokens, comments, indexMap, startLoc, endLoc)\n    }\n    if (typeof beforeCount === \"number\" || typeof beforeCount === \"undefined\") {\n        return new PaddedTokenCursor(tokens, comments, indexMap, startLoc, endLoc, beforeCount || 0, afterCount || 0)\n    }\n    return createCursorWithCount(cursors.forward, tokens, comments, indexMap, startLoc, endLoc, beforeCount)\n}\n\n/**\n * Gets comment tokens that are adjacent to the current cursor position.\n * @param cursor - A cursor instance.\n * @returns An array of comment tokens adjacent to the current cursor position.\n * @private\n */\nfunction getAdjacentCommentTokensFromCursor(cursor: Cursor): Token[] {\n    const tokens: Token[] = []\n    let currentToken = cursor.getOneToken()\n\n    while (currentToken && isCommentToken(currentToken)) {\n        tokens.push(currentToken)\n        currentToken = cursor.getOneToken()\n    }\n\n    return tokens\n}\n\n//------------------------------------------------------------------------------\n// Exports\n//------------------------------------------------------------------------------\n\n/**\n * The token store.\n *\n * This class provides methods to get tokens by locations as fast as possible.\n * The methods are a part of public API, so we should be careful if it changes this class.\n *\n * People can get tokens in O(1) by the hash map which is mapping from the location of tokens/comments to tokens.\n * Also people can get a mix of tokens and comments in O(log k), the k is the number of comments.\n * Assuming that comments to be much fewer than tokens, this does not make hash map from token's locations to comments to reduce memory cost.\n * This uses binary-searching instead for comments.\n */\nexport default class TokenStore {\n    private _tokens: Token[]\n    private _comments: Token[]\n    private _indexMap: { [key: number]: number }\n\n    /**\n     * Initializes this token store.\n     * @param tokens - The array of tokens.\n     * @param comments - The array of comments.\n     */\n    constructor(tokens: Token[], comments: Token[]) {\n        this._tokens = tokens\n        this._comments = comments\n        this._indexMap = createIndexMap(tokens, comments)\n    }\n\n    //--------------------------------------------------------------------------\n    // Gets single token.\n    //--------------------------------------------------------------------------\n\n    /**\n     * Gets the token starting at the specified index.\n     * @param offset - Index of the start of the token's range.\n     * @param options - The option object.\n     * @returns The token starting at index, or null if no such token.\n     */\n    getTokenByRangeStart(offset: number, options?: { includeComments: boolean }): Token | null {\n        const includeComments = Boolean(options && options.includeComments)\n        const token = cursors.forward.createBaseCursor(\n            this._tokens,\n            this._comments,\n            this._indexMap,\n            offset,\n            -1,\n            includeComments\n        ).getOneToken()\n\n        if (token && token.range[0] === offset) {\n            return token\n        }\n        return null\n    }\n\n    /**\n     * Gets the first token of the given node.\n     * @param node - The AST node.\n     * @param options - The option object.\n     * @returns An object representing the token.\n     */\n    getFirstToken(node: HasLocation, options?: SkipOptions): Token | null {\n        return createCursorWithSkip(\n            cursors.forward,\n            this._tokens,\n            this._comments,\n            this._indexMap,\n            node.range[0],\n            node.range[1],\n            options\n        ).getOneToken()\n    }\n\n    /**\n     * Gets the last token of the given node.\n     * @param node - The AST node.\n     * @param options - The option object.\n     * @returns An object representing the token.\n     */\n    getLastToken(node: HasLocation, options?: SkipOptions): Token | null {\n        return createCursorWithSkip(\n            cursors.backward,\n            this._tokens,\n            this._comments,\n            this._indexMap,\n            node.range[0],\n            node.range[1],\n            options\n        ).getOneToken()\n    }\n\n    /**\n     * Gets the token that precedes a given node or token.\n     * @param node - The AST node or token.\n     * @param options - The option object.\n     * @returns An object representing the token.\n     */\n    getTokenBefore(node: HasLocation, options?: SkipOptions): Token | null {\n        return createCursorWithSkip(\n            cursors.backward,\n            this._tokens,\n            this._comments,\n            this._indexMap,\n            -1,\n            node.range[0],\n            options\n        ).getOneToken()\n    }\n\n    /**\n     * Gets the token that follows a given node or token.\n     * @param node - The AST node or token.\n     * @param options - The option object.\n     * @returns An object representing the token.\n     */\n    getTokenAfter(node: HasLocation, options?: SkipOptions): Token | null {\n        return createCursorWithSkip(\n            cursors.forward,\n            this._tokens,\n            this._comments,\n            this._indexMap,\n            node.range[1],\n            -1,\n            options\n        ).getOneToken()\n    }\n\n    /**\n     * Gets the first token between two non-overlapping nodes.\n     * @param left - Node before the desired token range.\n     * @param right - Node after the desired token range.\n     * @param options - The option object.\n     * @returns An object representing the token.\n     */\n    getFirstTokenBetween(left: HasLocation, right: HasLocation, options?: SkipOptions): Token | null {\n        return createCursorWithSkip(\n            cursors.forward,\n            this._tokens,\n            this._comments,\n            this._indexMap,\n            left.range[1],\n            right.range[0],\n            options\n        ).getOneToken()\n    }\n\n    /**\n     * Gets the last token between two non-overlapping nodes.\n     * @param left Node before the desired token range.\n     * @param right Node after the desired token range.\n     * @param options - The option object.\n     * @returns An object representing the token.\n     */\n    getLastTokenBetween(left: HasLocation, right: HasLocation, options?: SkipOptions): Token | null {\n        return createCursorWithSkip(\n            cursors.backward,\n            this._tokens,\n            this._comments,\n            this._indexMap,\n            left.range[1],\n            right.range[0],\n            options\n        ).getOneToken()\n    }\n\n    /**\n     * Gets the token that precedes a given node or token in the token stream.\n     * This is defined for backward compatibility. Use `includeComments` option instead.\n     * TODO: We have a plan to remove this in a future major version.\n     * @param node The AST node or token.\n     * @param skip A number of tokens to skip.\n     * @returns An object representing the token.\n     * @deprecated\n     */\n    getTokenOrCommentBefore(node: HasLocation, skip?: number): Token | null {\n        return this.getTokenBefore(node, {includeComments: true, skip})\n    }\n\n    /**\n     * Gets the token that follows a given node or token in the token stream.\n     * This is defined for backward compatibility. Use `includeComments` option instead.\n     * TODO: We have a plan to remove this in a future major version.\n     * @param node The AST node or token.\n     * @param skip A number of tokens to skip.\n     * @returns An object representing the token.\n     * @deprecated\n     */\n    getTokenOrCommentAfter(node: HasLocation, skip?: number): Token | null {\n        return this.getTokenAfter(node, {includeComments: true, skip})\n    }\n\n    //--------------------------------------------------------------------------\n    // Gets multiple tokens.\n    //--------------------------------------------------------------------------\n\n    /**\n     * Gets the first `count` tokens of the given node.\n     * @param node - The AST node.\n     * @param [options=0] - The option object. If this is a number then it's `options.count`. If this is a function then it's `options.filter`.\n     * @param [options.includeComments=false] - The flag to iterate comments as well.\n     * @param [options.filter=null] - The predicate function to choose tokens.\n     * @param [options.count=0] - The maximum count of tokens the cursor iterates.\n     * @returns Tokens.\n     */\n    getFirstTokens(node: HasLocation, options?: CountOptions): Token[] {\n        return createCursorWithCount(\n            cursors.forward,\n            this._tokens,\n            this._comments,\n            this._indexMap,\n            node.range[0],\n            node.range[1],\n            options\n        ).getAllTokens()\n    }\n\n    /**\n     * Gets the last `count` tokens of the given node.\n     * @param node - The AST node.\n     * @param [options=0] - The option object. Same options as getFirstTokens()\n     * @returns Tokens.\n     */\n    getLastTokens(node: HasLocation, options?: CountOptions) {\n        return createCursorWithCount(\n            cursors.backward,\n            this._tokens,\n            this._comments,\n            this._indexMap,\n            node.range[0],\n            node.range[1],\n            options\n        ).getAllTokens().reverse()\n    }\n\n    /**\n     * Gets the `count` tokens that precedes a given node or token.\n     * @param node - The AST node or token.\n     * @param [options=0] - The option object. Same options as getFirstTokens()\n     * @returns Tokens.\n     */\n    getTokensBefore(node: HasLocation, options?: CountOptions): Token[] {\n        return createCursorWithCount(\n            cursors.backward,\n            this._tokens,\n            this._comments,\n            this._indexMap,\n            -1,\n            node.range[0],\n            options\n        ).getAllTokens().reverse()\n    }\n\n    /**\n     * Gets the `count` tokens that follows a given node or token.\n     * @param node - The AST node or token.\n     * @param [options=0] - The option object. Same options as getFirstTokens()\n     * @returns Tokens.\n     */\n    getTokensAfter(node: HasLocation, options?: CountOptions): Token[] {\n        return createCursorWithCount(\n            cursors.forward,\n            this._tokens,\n            this._comments,\n            this._indexMap,\n            node.range[1],\n            -1,\n            options\n        ).getAllTokens()\n    }\n\n    /**\n     * Gets the first `count` tokens between two non-overlapping nodes.\n     * @param left - Node before the desired token range.\n     * @param right - Node after the desired token range.\n     * @param [options=0] - The option object. Same options as getFirstTokens()\n     * @returns Tokens between left and right.\n     */\n    getFirstTokensBetween(left: HasLocation, right: HasLocation, options?: CountOptions): Token[] {\n        return createCursorWithCount(\n            cursors.forward,\n            this._tokens,\n            this._comments,\n            this._indexMap,\n            left.range[1],\n            right.range[0],\n            options\n        ).getAllTokens()\n    }\n\n    /**\n     * Gets the last `count` tokens between two non-overlapping nodes.\n     * @param left Node before the desired token range.\n     * @param right Node after the desired token range.\n     * @param [options=0] - The option object. Same options as getFirstTokens()\n     * @returns Tokens between left and right.\n     */\n    getLastTokensBetween(left: HasLocation, right: HasLocation, options?: CountOptions): Token[] {\n        return createCursorWithCount(\n            cursors.backward,\n            this._tokens,\n            this._comments,\n            this._indexMap,\n            left.range[1],\n            right.range[0],\n            options\n        ).getAllTokens().reverse()\n    }\n\n    /**\n     * Gets all tokens that are related to the given node.\n     * @param node - The AST node.\n     * @param beforeCount - The number of tokens before the node to retrieve.\n     * @param afterCount - The number of tokens after the node to retrieve.\n     * @returns Array of objects representing tokens.\n     */\n    getTokens(node: HasLocation, beforeCount?: CountOptions, afterCount?: number): Token[] {\n        return createCursorWithPadding(\n            this._tokens,\n            this._comments,\n            this._indexMap,\n            node.range[0],\n            node.range[1],\n            beforeCount,\n            afterCount\n        ).getAllTokens()\n    }\n\n    /**\n     * Gets all of the tokens between two non-overlapping nodes.\n     * @param left Node before the desired token range.\n     * @param right Node after the desired token range.\n     * @param padding Number of extra tokens on either side of center.\n     * @returns Tokens between left and right.\n     */\n    getTokensBetween(left: HasLocation, right: HasLocation, padding?: CountOptions): Token[] {\n        return createCursorWithPadding(\n            this._tokens,\n            this._comments,\n            this._indexMap,\n            left.range[1],\n            right.range[0],\n            padding,\n            typeof padding === \"number\" ? padding : undefined\n        ).getAllTokens()\n    }\n\n    //--------------------------------------------------------------------------\n    // Others.\n    //--------------------------------------------------------------------------\n\n    /**\n     * Checks whether any comments exist or not between the given 2 nodes.\n     *\n     * @param left - The node to check.\n     * @param right - The node to check.\n     * @returns `true` if one or more comments exist.\n     */\n    commentsExistBetween(left: HasLocation, right: HasLocation): boolean {\n        const index = search(this._comments, left.range[1])\n\n        return (\n            index < this._comments.length &&\n            this._comments[index].range[1] <= right.range[0]\n        )\n    }\n\n    /**\n     * Gets all comment tokens directly before the given node or token.\n     * @param nodeOrToken The AST node or token to check for adjacent comment tokens.\n     * @returns An array of comments in occurrence order.\n     */\n    getCommentsBefore(nodeOrToken: HasLocation): Token[] {\n        const cursor = createCursorWithCount(\n            cursors.backward,\n            this._tokens,\n            this._comments,\n            this._indexMap,\n            -1,\n            nodeOrToken.range[0],\n            {includeComments: true}\n        )\n\n        return getAdjacentCommentTokensFromCursor(cursor).reverse()\n    }\n\n    /**\n     * Gets all comment tokens directly after the given node or token.\n     * @param nodeOrToken The AST node or token to check for adjacent comment tokens.\n     * @returns An array of comments in occurrence order.\n     */\n    getCommentsAfter(nodeOrToken: HasLocation): Token[] {\n        const cursor = createCursorWithCount(\n            cursors.forward,\n            this._tokens,\n            this._comments,\n            this._indexMap,\n            nodeOrToken.range[1],\n            -1,\n            {includeComments: true}\n        )\n\n        return getAdjacentCommentTokensFromCursor(cursor)\n    }\n\n    /**\n     * Gets all comment tokens inside the given node.\n     * @param node The AST node to get the comments for.\n     * @returns An array of comments in occurrence order.\n     */\n    getCommentsInside(node: HasLocation): Token[] {\n        return this.getTokens(node, {\n            includeComments: true,\n            filter: isCommentToken,\n        })\n    }\n}\n","import type { Rule, SourceCode } from \"eslint\"\nimport type { ScopeManager, Scope } from \"eslint-scope\"\nimport type {\n    ESLintExtendedProgram,\n    Node,\n    OffsetRange,\n    VDocumentFragment,\n    VElement,\n    VExpressionContainer,\n    VText,\n} from \"../../ast\"\nimport { getFallbackKeys, ParseError } from \"../../ast\"\nimport { getEslintScope } from \"../../common/eslint-scope\"\nimport { getEcmaVersionIfUseEspree } from \"../../common/espree\"\nimport { fixErrorLocation, fixLocations } from \"../../common/fix-locations\"\nimport type { LocationCalculatorForHtml } from \"../../common/location-calculator\"\nimport type { ParserObject } from \"../../common/parser-object\"\nimport { isEnhancedParserObject } from \"../../common/parser-object\"\nimport type { ParserOptions } from \"../../common/parser-options\"\nimport { DEFAULT_ECMA_VERSION } from \"../../script-setup/parser-options\"\n\nexport type ESLintCustomBlockParser = ParserObject<any, any>\n\nexport type CustomBlockContext = {\n    getSourceCode(): SourceCode\n    sourceCode: SourceCode\n    parserServices: any\n    getAncestors(): any[]\n    getDeclaredVariables(node: any): any[]\n    getScope(): any\n    markVariableAsUsed(name: string): boolean\n\n    // Same as the original context.\n    id: string\n    options: any[]\n    settings: { [name: string]: any }\n    parserPath: string\n    parserOptions: any\n    getFilename(): string\n    report(descriptor: Rule.ReportDescriptor): void\n}\n\n/**\n * Checks whether the given node is VElement.\n */\nfunction isVElement(\n    node: VElement | VExpressionContainer | VText,\n): node is VElement {\n    return node.type === \"VElement\"\n}\n\n/**\n * Get the all custom blocks from given document\n * @param document\n */\nexport function getCustomBlocks(\n    document: VDocumentFragment | null,\n): VElement[] {\n    return document\n        ? document.children\n              .filter(isVElement)\n              .filter(\n                  (block) =>\n                      block.name !== \"script\" &&\n                      block.name !== \"template\" &&\n                      block.name !== \"style\",\n              )\n        : []\n}\n\n/**\n * Parse the source code of the given custom block element.\n * @param node The custom block element to parse.\n * @param parser The custom parser.\n * @param globalLocationCalculator The location calculator for fixLocations.\n * @param parserOptions The parser options.\n * @returns The result of parsing.\n */\nexport function parseCustomBlockElement(\n    node: VElement,\n    parser: ESLintCustomBlockParser,\n    globalLocationCalculator: LocationCalculatorForHtml,\n    parserOptions: ParserOptions,\n): ESLintExtendedProgram & { error?: ParseError | Error } {\n    const text = node.children[0]\n    const { code, range, loc } =\n        text != null && text.type === \"VText\"\n            ? {\n                  code: text.value,\n                  range: text.range,\n                  loc: text.loc,\n              }\n            : {\n                  code: \"\",\n                  range: [\n                      node.startTag.range[1],\n                      node.endTag!.range[0],\n                  ] as OffsetRange,\n                  loc: {\n                      start: node.startTag.loc.end,\n                      end: node.endTag!.loc.start,\n                  },\n              }\n    const locationCalculator = globalLocationCalculator.getSubCalculatorAfter(\n        range[0],\n    )\n    try {\n        return parseCustomBlockFragment(\n            code,\n            parser,\n            locationCalculator,\n            parserOptions,\n        )\n    } catch (e) {\n        if (!(e instanceof Error)) {\n            throw e\n        }\n        return {\n            error: e,\n            ast: {\n                type: \"Program\",\n                sourceType: \"module\",\n                loc: {\n                    start: {\n                        ...loc.start,\n                    },\n                    end: {\n                        ...loc.end,\n                    },\n                },\n                range: [...range],\n                body: [],\n                tokens: [],\n                comments: [],\n            },\n        }\n    }\n}\n\n/**\n * Parse the given source code.\n *\n * @param code The source code to parse.\n * @param parser The custom parser.\n * @param locationCalculator The location calculator for fixLocations.\n * @param parserOptions The parser options.\n * @returns The result of parsing.\n */\nfunction parseCustomBlockFragment(\n    code: string,\n    parser: ESLintCustomBlockParser,\n    locationCalculator: LocationCalculatorForHtml,\n    parserOptions: ParserOptions,\n): ESLintExtendedProgram {\n    try {\n        const result = parseBlock(code, parser, {\n            ecmaVersion: DEFAULT_ECMA_VERSION,\n            loc: true,\n            range: true,\n            raw: true,\n            tokens: true,\n            comment: true,\n            eslintVisitorKeys: true,\n            eslintScopeManager: true,\n            ...parserOptions,\n        })\n        fixLocations(result, locationCalculator)\n        return result\n    } catch (err) {\n        const perr = ParseError.normalize(err)\n        if (perr) {\n            fixErrorLocation(perr, locationCalculator)\n            throw perr\n        }\n        throw err\n    }\n}\n\nfunction parseBlock(\n    code: string,\n    parser: ESLintCustomBlockParser,\n    parserOptions: any,\n): any {\n    const result = isEnhancedParserObject(parser)\n        ? parser.parseForESLint(code, parserOptions)\n        : parser.parse(code, parserOptions)\n\n    if (result.ast != null) {\n        return result\n    }\n    return { ast: result }\n}\n\n/**\n * Create shared context.\n *\n * @param text The source code of SFC.\n * @param customBlock The custom block node.\n * @param parsedResult The parse result data\n * @param parserOptions The parser options.\n */\nexport function createCustomBlockSharedContext({\n    text,\n    customBlock,\n    parsedResult,\n    globalLocationCalculator,\n    parserOptions,\n}: {\n    text: string\n    customBlock: VElement\n    parsedResult: ESLintExtendedProgram & { error?: ParseError | Error }\n    globalLocationCalculator: LocationCalculatorForHtml\n    parserOptions: any\n}) {\n    let sourceCode: SourceCode\n    let currentNode: any\n    return {\n        serCurrentNode(node: any) {\n            currentNode = node\n        },\n        context: {\n            getAncestors: () => getSourceCode().getAncestors(currentNode),\n            getDeclaredVariables: (...args: any[]) =>\n                // @ts-expect-error -- ignore\n                getSourceCode().getDeclaredVariables(...args),\n            getScope: () => getSourceCode().getScope(currentNode),\n            markVariableAsUsed: (name: string) =>\n                getSourceCode().markVariableAsUsed(name, currentNode),\n            get parserServices() {\n                return getSourceCode().parserServices\n            },\n            getSourceCode,\n            get sourceCode() {\n                return getSourceCode()\n            },\n        },\n    }\n\n    function getSourceCode(): SourceCode {\n        if (sourceCode) {\n            return sourceCode\n        }\n\n        const scopeManager = getScopeManager()\n\n        // eslint-disable-next-line @typescript-eslint/no-require-imports\n        const originalSourceCode = new (require(\"eslint\").SourceCode)({\n            text,\n            ast: parsedResult.ast,\n            parserServices: {\n                customBlock,\n                parseCustomBlockElement(\n                    parser: ESLintCustomBlockParser,\n                    options: any,\n                ) {\n                    return parseCustomBlockElement(\n                        customBlock,\n                        parser,\n                        globalLocationCalculator,\n                        { ...parserOptions, ...options },\n                    )\n                },\n                ...(parsedResult.services || {}),\n                ...(parsedResult.error\n                    ? { parseError: parsedResult.error }\n                    : {}),\n            },\n            scopeManager,\n            visitorKeys: parsedResult.visitorKeys,\n        })\n\n        const polyfills = {\n            markVariableAsUsed: (name: string, node: any) =>\n                markVariableAsUsed(scopeManager, node, parsedResult.ast, name),\n            getScope: (node: any) => getScope(scopeManager, node),\n            getAncestors: (node: any) => getAncestors(node),\n            getDeclaredVariables: (...args: any[]) =>\n                // @ts-expect-error -- ignore\n                scopeManager.getDeclaredVariables(...args),\n        }\n\n        return (sourceCode = new Proxy(originalSourceCode, {\n            get(_target, prop) {\n                return originalSourceCode[prop] || (polyfills as any)[prop]\n            },\n        }))\n    }\n\n    function getScopeManager() {\n        if (parsedResult.scopeManager) {\n            return parsedResult.scopeManager\n        }\n\n        const ecmaVersion = getEcmaVersionIfUseEspree(parserOptions) || 2022\n        const ecmaFeatures = parserOptions.ecmaFeatures || {}\n        const sourceType = parserOptions.sourceType || \"script\"\n        return getEslintScope().analyze(parsedResult.ast, {\n            ignoreEval: true,\n            nodejsScope: false,\n            impliedStrict: ecmaFeatures.impliedStrict,\n            ecmaVersion,\n            sourceType,\n            fallback: getFallbackKeys,\n        })\n    }\n}\n\n/* The following source code is copied from `eslint/lib/linter/linter.js` */\n\n/**\n * Gets all the ancestors of a given node\n * @param {ASTNode} node The node\n * @returns {ASTNode[]} All the ancestor nodes in the AST, not including the provided node, starting\n * from the root node and going inwards to the parent node.\n */\nfunction getAncestors(node: Node) {\n    const ancestorsStartingAtParent = []\n\n    for (let ancestor = node.parent; ancestor; ancestor = ancestor.parent) {\n        ancestorsStartingAtParent.push(ancestor)\n    }\n\n    return ancestorsStartingAtParent.reverse()\n}\n\n/**\n * Gets the scope for the current node\n * @param {ScopeManager} scopeManager The scope manager for this AST\n * @param {ASTNode} currentNode The node to get the scope of\n * @returns {eslint-scope.Scope} The scope information for this node\n */\nfunction getScope(scopeManager: ScopeManager, currentNode: Node) {\n    // On Program node, get the outermost scope to avoid return Node.js special function scope or ES modules scope.\n    const inner = currentNode.type !== \"Program\"\n\n    for (\n        let node: Node | null = currentNode;\n        node;\n        node = node.parent || null\n    ) {\n        const scope = scopeManager.acquire(node as any, inner)\n\n        if (scope) {\n            if (scope.type === \"function-expression-name\") {\n                return scope.childScopes[0]\n            }\n            return scope\n        }\n    }\n\n    return scopeManager.scopes[0]\n}\n\n/**\n * Marks a variable as used in the current scope\n * @param {ScopeManager} scopeManager The scope manager for this AST. The scope may be mutated by this function.\n * @param {ASTNode} currentNode The node currently being traversed\n * @param {Object} parserOptions The options used to parse this text\n * @param {string} name The name of the variable that should be marked as used.\n * @returns {boolean} True if the variable was found and marked as used, false if not.\n */\nfunction markVariableAsUsed(\n    scopeManager: ScopeManager,\n    currentNode: Node,\n    program: Node,\n    name: string,\n) {\n    const currentScope = getScope(scopeManager, currentNode)\n    let initialScope = currentScope\n    if (\n        currentScope.type === \"global\" &&\n        currentScope.childScopes.length > 0 &&\n        // top-level scopes refer to a `Program` node\n        currentScope.childScopes[0].block === program\n    ) {\n        initialScope = currentScope.childScopes[0]\n    }\n\n    for (let scope: Scope | null = initialScope; scope; scope = scope.upper) {\n        const variable = scope.variables.find(\n            (scopeVar) => scopeVar.name === name,\n        )\n\n        if (variable) {\n            // @ts-expect-error -- ignore\n            variable.eslintUsed = true\n            return true\n        }\n    }\n\n    return false\n}\n","/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * @copyright 2017 Toru Nagashima. All rights reserved.\n * See LICENSE file in root directory for full license.\n */\nimport type { Rule } from \"eslint\"\nimport EventEmitter from \"events\"\nimport NodeEventGenerator from \"./external/node-event-generator\"\nimport TokenStore from \"./external/token-store\"\nimport type {\n    ESLintProgram,\n    VElement,\n    VDocumentFragment,\n    VAttribute,\n} from \"./ast\"\nimport { getFallbackKeys, KEYS, traverseNodes } from \"./ast/traverse\"\nimport type { LocationCalculatorForHtml } from \"./common/location-calculator\"\nimport type {\n    CustomBlockContext,\n    ESLintCustomBlockParser,\n} from \"./sfc/custom-block\"\nimport {\n    createCustomBlockSharedContext,\n    getCustomBlocks,\n    parseCustomBlockElement,\n} from \"./sfc/custom-block\"\nimport type { ParserOptions } from \"./common/parser-options\"\nimport { isSFCFile } from \"./common/parser-options\"\nimport { getLang } from \"./common/ast-utils\"\n\n//------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\ntype CustomBlockVisitorFactory = (context: CustomBlockContext) =>\n    | {\n          [key: string]: (...args: any) => void\n      }\n    | null\n    | undefined\n\n//------------------------------------------------------------------------------\n// Exports\n//------------------------------------------------------------------------------\n\nexport interface ParserServices {\n    /**\n     * Define handlers to traverse the template body.\n     * @param templateBodyVisitor The template body handlers.\n     * @param scriptVisitor The script handlers. This is optional.\n     * @param options The options. This is optional.\n     */\n    defineTemplateBodyVisitor(\n        templateBodyVisitor: { [key: string]: (...args: any) => void },\n        scriptVisitor?: { [key: string]: (...args: any) => void },\n        options?: { templateBodyTriggerSelector: \"Program\" | \"Program:exit\" },\n    ): object\n\n    /**\n     * Define handlers to traverse the document.\n     * @param documentVisitor The document handlers.\n     * @param options The options. This is optional.\n     */\n    defineDocumentVisitor(\n        documentVisitor: { [key: string]: (...args: any) => void },\n        options?: { triggerSelector: \"Program\" | \"Program:exit\" },\n    ): object\n\n    /**\n     * Define handlers to traverse custom blocks.\n     * @param context The rule context.\n     * @param parser The custom parser.\n     * @param rule The custom block rule definition\n     * @param scriptVisitor The script handlers. This is optional.\n     */\n    defineCustomBlocksVisitor(\n        context: Rule.RuleContext,\n        parser: ESLintCustomBlockParser,\n        rule: {\n            target:\n                | string\n                | string[]\n                | ((lang: string | null, customBlock: VElement) => boolean)\n            create: CustomBlockVisitorFactory\n        },\n        scriptVisitor: { [key: string]: (...args: any) => void },\n    ): { [key: string]: (...args: any) => void }\n\n    /**\n     * Get the token store of the template body.\n     * @returns The token store of template body.\n     */\n    getTemplateBodyTokenStore(): TokenStore\n\n    /**\n     * Get the root document fragment.\n     * @returns The root document fragment.\n     */\n    getDocumentFragment(): VDocumentFragment | null\n}\n\n/**\n * Define the parser service\n * @param rootAST\n */\nexport function define(\n    sourceText: string,\n    rootAST: ESLintProgram,\n    document: VDocumentFragment | null,\n    globalLocationCalculator: LocationCalculatorForHtml | null,\n    { parserOptions }: { parserOptions: ParserOptions },\n): ParserServices {\n    const templateBodyEmitters = new Map<string, EventEmitter>()\n    const stores = new WeakMap<object, TokenStore>()\n\n    const documentEmitters = new Map<string, EventEmitter>()\n\n    const customBlocksEmitters = new Map<\n        | ESLintCustomBlockParser[\"parseForESLint\"]\n        | ESLintCustomBlockParser[\"parse\"],\n        {\n            context: Rule.RuleContext\n            test: (lang: string | null, customBlock: VElement) => boolean\n            create: CustomBlockVisitorFactory\n        }[]\n    >()\n\n    const isSFC = isSFCFile(parserOptions)\n\n    return {\n        /**\n         * Define handlers to traverse the template body.\n         * @param templateBodyVisitor The template body handlers.\n         * @param scriptVisitor The script handlers. This is optional.\n         */\n        defineTemplateBodyVisitor(\n            templateBodyVisitor: { [key: string]: (...args: any) => void },\n            scriptVisitor?: { [key: string]: (...args: any) => void },\n            options?: {\n                templateBodyTriggerSelector: \"Program\" | \"Program:exit\"\n            },\n        ): object {\n            if (scriptVisitor == null) {\n                scriptVisitor = {} //eslint-disable-line no-param-reassign\n            }\n            if (rootAST.templateBody == null) {\n                return scriptVisitor\n            }\n            const templateBodyTriggerSelector =\n                options?.templateBodyTriggerSelector ?? \"Program:exit\"\n\n            let emitter = templateBodyEmitters.get(templateBodyTriggerSelector)\n\n            // If this is the first time, initialize the intermediate event emitter.\n            if (emitter == null) {\n                emitter = new EventEmitter()\n                emitter.setMaxListeners(0)\n                templateBodyEmitters.set(templateBodyTriggerSelector, emitter)\n\n                const programExitHandler =\n                    scriptVisitor[templateBodyTriggerSelector]\n                scriptVisitor[templateBodyTriggerSelector] = (node) => {\n                    try {\n                        if (typeof programExitHandler === \"function\") {\n                            programExitHandler(node)\n                        }\n\n                        // Traverse template body.\n                        const generator = new NodeEventGenerator(emitter!, {\n                            visitorKeys: KEYS,\n                            fallback: getFallbackKeys,\n                        })\n                        traverseNodes(\n                            rootAST.templateBody as VElement,\n                            generator,\n                        )\n                    } finally {\n                        // @ts-expect-error -- ignore\n                        scriptVisitor[templateBodyTriggerSelector] =\n                            programExitHandler\n                        templateBodyEmitters.delete(templateBodyTriggerSelector)\n                    }\n                }\n            }\n\n            // Register handlers into the intermediate event emitter.\n            for (const selector of Object.keys(templateBodyVisitor)) {\n                emitter.on(selector, templateBodyVisitor[selector])\n            }\n\n            return scriptVisitor\n        },\n\n        /**\n         * Define handlers to traverse the document.\n         * @param documentVisitor The document handlers.\n         * @param options The options. This is optional.\n         */\n        defineDocumentVisitor(\n            documentVisitor: { [key: string]: (...args: any) => void },\n            options?: { triggerSelector: \"Program\" | \"Program:exit\" },\n        ): object {\n            const scriptVisitor: { [key: string]: (...args: any) => void } = {}\n            if (!document) {\n                return scriptVisitor\n            }\n\n            const documentTriggerSelector =\n                options?.triggerSelector ?? \"Program:exit\"\n\n            let emitter = documentEmitters.get(documentTriggerSelector)\n\n            // If this is the first time, initialize the intermediate event emitter.\n            if (emitter == null) {\n                emitter = new EventEmitter()\n                emitter.setMaxListeners(0)\n                documentEmitters.set(documentTriggerSelector, emitter)\n\n                const programExitHandler =\n                    scriptVisitor[documentTriggerSelector]\n                scriptVisitor[documentTriggerSelector] = (node) => {\n                    try {\n                        if (typeof programExitHandler === \"function\") {\n                            programExitHandler(node)\n                        }\n\n                        // Traverse document.\n                        const generator = new NodeEventGenerator(emitter!, {\n                            visitorKeys: KEYS,\n                            fallback: getFallbackKeys,\n                        })\n                        traverseNodes(document, generator)\n                    } finally {\n                        scriptVisitor[documentTriggerSelector] =\n                            programExitHandler\n                        documentEmitters.delete(documentTriggerSelector)\n                    }\n                }\n            }\n\n            // Register handlers into the intermediate event emitter.\n            for (const selector of Object.keys(documentVisitor)) {\n                emitter.on(selector, documentVisitor[selector])\n            }\n\n            return scriptVisitor\n        },\n\n        /**\n         * Define handlers to traverse custom blocks.\n         * @param context The rule context.\n         * @param parser The custom parser.\n         * @param rule The custom block rule definition\n         * @param scriptVisitor The script handlers. This is optional.\n         */\n        defineCustomBlocksVisitor(\n            context: Rule.RuleContext,\n            parser: ESLintCustomBlockParser,\n            rule: {\n                target:\n                    | string\n                    | string[]\n                    | ((lang: string | null, customBlock: VElement) => boolean)\n                create: CustomBlockVisitorFactory\n            },\n            scriptVisitor: { [key: string]: (...args: any) => void },\n        ): { [key: string]: (...args: any) => void } {\n            if (scriptVisitor == null) {\n                scriptVisitor = {} //eslint-disable-line no-param-reassign\n            }\n            if (!isSFC) {\n                return scriptVisitor\n            }\n            parserOptions = { ...parserOptions } //eslint-disable-line no-param-reassign\n            const customBlocks = getCustomBlocks(document).filter(\n                (block) =>\n                    block.endTag &&\n                    !block.startTag.attributes.some(\n                        (attr): attr is VAttribute =>\n                            !attr.directive && attr.key.name === \"src\",\n                    ),\n            )\n            if (!customBlocks.length || globalLocationCalculator == null) {\n                return {}\n            }\n            const key = parser.parseForESLint ?? parser.parse\n            let factories = customBlocksEmitters.get(key)\n\n            // If this is the first time, initialize the intermediate event emitter.\n            if (factories == null) {\n                factories = []\n                customBlocksEmitters.set(key, factories)\n                const visitorFactories = factories\n\n                const programExitHandler = scriptVisitor[\"Program:exit\"]\n                scriptVisitor[\"Program:exit\"] = (node) => {\n                    try {\n                        if (typeof programExitHandler === \"function\") {\n                            programExitHandler(node)\n                        }\n                        for (const customBlock of customBlocks) {\n                            const lang = getLang(customBlock)\n\n                            const activeVisitorFactories =\n                                visitorFactories.filter((f) =>\n                                    f.test(lang, customBlock),\n                                )\n                            if (!activeVisitorFactories.length) {\n                                continue\n                            }\n\n                            const parsedResult = parseCustomBlockElement(\n                                customBlock,\n                                parser,\n                                globalLocationCalculator,\n                                parserOptions,\n                            )\n\n                            const {\n                                serCurrentNode,\n                                context: customBlockContext,\n                            } = createCustomBlockSharedContext({\n                                text: sourceText,\n                                customBlock,\n                                parsedResult,\n                                globalLocationCalculator,\n                                parserOptions,\n                            })\n\n                            const emitter = new EventEmitter()\n                            emitter.setMaxListeners(0)\n\n                            for (const factory of activeVisitorFactories) {\n                                const ctx = {\n                                    ...customBlockContext,\n                                }\n                                // @ts-expect-error -- custom context\n                                ctx.__proto__ = factory.context\n\n                                const visitor = factory.create(\n                                    ctx as CustomBlockContext,\n                                )\n                                // Register handlers into the intermediate event emitter.\n                                for (const selector of Object.keys(\n                                    visitor || {},\n                                )) {\n                                    emitter.on(selector, visitor![selector])\n                                }\n                            }\n\n                            // Traverse custom block.\n                            const generator = new NodeEventGenerator(emitter, {\n                                visitorKeys: parsedResult.visitorKeys,\n                                fallback: getFallbackKeys,\n                            })\n                            traverseNodes(parsedResult.ast, {\n                                visitorKeys: parsedResult.visitorKeys,\n                                enterNode(n) {\n                                    serCurrentNode(n)\n                                    generator.enterNode(n)\n                                },\n                                leaveNode(n) {\n                                    serCurrentNode(n)\n                                    generator.leaveNode(n)\n                                },\n                            })\n                        }\n                    } finally {\n                        scriptVisitor[\"Program:exit\"] = programExitHandler\n                        customBlocksEmitters.delete(key)\n                    }\n                }\n            }\n\n            const target = rule.target\n            const test =\n                typeof target === \"function\"\n                    ? target\n                    : Array.isArray(target)\n                    ? (lang: string | null) =>\n                          Boolean(lang && target.includes(lang))\n                    : (lang: string | null) => target === lang\n            factories.push({\n                context,\n                test,\n                create: rule.create,\n            })\n\n            return scriptVisitor\n        },\n\n        /**\n         * Get the token store of the template body.\n         * @returns The token store of template body.\n         */\n        getTemplateBodyTokenStore(): TokenStore {\n            const key = document || stores\n            let store = stores.get(key)\n\n            if (!store) {\n                store =\n                    document != null\n                        ? new TokenStore(document.tokens, document.comments)\n                        : new TokenStore([], [])\n                stores.set(key, store)\n            }\n\n            return store\n        },\n\n        /**\n         * Get the root document fragment.\n         * @returns The root document fragment.\n         */\n        getDocumentFragment(): VDocumentFragment | null {\n            return document\n        },\n    }\n}\n","/**\n * @author Yosuke Ota <https://github.com/ota-meshi>\n * See LICENSE file in root directory for full license.\n */\nimport type { ScopeManager, Scope } from \"eslint-scope\"\nimport type {\n    ESLintBlockStatement,\n    ESLintExportNamedDeclaration,\n    ESLintExportSpecifier,\n    ESLintExtendedProgram,\n    ESLintIdentifier,\n    ESLintModuleDeclaration,\n    ESLintNode,\n    ESLintProgram,\n    ESLintStatement,\n    Token,\n    VElement,\n} from \"../ast\"\nimport { ParseError, traverseNodes } from \"../ast\"\nimport {\n    fixErrorLocation,\n    fixLocation,\n    fixLocations,\n    fixNodeLocations,\n} from \"../common/fix-locations\"\nimport type { LinesAndColumns } from \"../common/lines-and-columns\"\nimport type { LocationCalculator } from \"../common/location-calculator\"\nimport type { ParserOptions } from \"../common/parser-options\"\nimport { parseScript as parseScriptBase, parseScriptFragment } from \"../script\"\nimport { extractGeneric } from \"../script/generic\"\nimport { getScriptSetupParserOptions } from \"./parser-options\"\n\ntype RemapBlock = {\n    range: [number, number]\n    offset: number\n}\n\n/**\n * `parseScriptSetupElements` rewrites the source code so that it can parse\n * the combination of `<script>` and `<script setup>`, and parses it source code with JavaScript parser.\n * This class holds the information to restore the AST and token locations parsed in the rewritten source code.\n */\nclass CodeBlocks {\n    public code: string\n    // The location information for remapping.\n    public remapBlocks: RemapBlock[] = []\n    // The list of extra punctuation locations added to split the statement.\n    public splitPunctuators: number[] = []\n\n    public constructor() {\n        this.code = \"\"\n    }\n    public get length() {\n        return this.code.length\n    }\n    public append(codeLet: string, originalOffset: number) {\n        const rangeStart = this.code.length\n        this.code += codeLet.trimEnd()\n        this.remapBlocks.push({\n            range: [rangeStart, this.code.length],\n            offset: originalOffset - rangeStart,\n        })\n    }\n    public appendSplitPunctuators(punctuator: string) {\n        this.splitPunctuators.push(this.code.length, this.code.length + 1)\n        this.code += `\\n${punctuator}\\n`\n    }\n    public appendCodeBlocks(codeBlocks: CodeBlocks) {\n        const start = this.code.length\n        this.code += codeBlocks.code\n        this.remapBlocks.push(\n            ...codeBlocks.remapBlocks.map(\n                (b): RemapBlock => ({\n                    range: [b.range[0] + start, b.range[1] + start],\n                    offset: b.offset - start,\n                }),\n            ),\n        )\n        this.splitPunctuators.push(\n            ...codeBlocks.splitPunctuators.map((s) => s + start),\n        )\n    }\n}\n\ntype RestoreASTCallback = (node: ESLintStatement) => {\n    statement: ESLintStatement | ESLintModuleDeclaration\n    tokens: Token[]\n} | null\n/**\n * Some named exports need to be replaced with a different syntax to successfully parse\n * the combination of `<script>` and `<script setup>`.\n * e.g. `export {a,b}` -> `({a,b});`, `export let a` -> `let a`\n * This class holds the callbacks to restore the rewritten syntax AST back to the original `export` AST.\n */\nclass RestoreASTCallbacks {\n    private callbacks: {\n        range: [number, number]\n        callback: RestoreASTCallback\n    }[] = []\n    public addCallback(\n        originalOffsetStart: number,\n        range: [number, number],\n        callback: RestoreASTCallback,\n    ) {\n        this.callbacks.push({\n            range: [\n                originalOffsetStart + range[0],\n                originalOffsetStart + range[1],\n            ],\n            callback,\n        })\n    }\n    public restore(\n        program: ESLintProgram,\n        scriptSetupStatements: ESLintStatement[],\n        linesAndColumns: LinesAndColumns,\n    ) {\n        if (this.callbacks.length === 0) {\n            return\n        }\n        const callbacks = new Set(this.callbacks)\n        for (const statement of scriptSetupStatements) {\n            for (const cb of callbacks) {\n                if (\n                    cb.range[0] <= statement.range[0] &&\n                    statement.range[1] <= cb.range[1]\n                ) {\n                    const restored = cb.callback(statement)\n                    if (restored) {\n                        const removeIndex = program.body.indexOf(statement)\n                        if (removeIndex >= 0) {\n                            program.body.splice(removeIndex, 1)\n                            program.body.push(restored.statement)\n                            program.tokens!.push(...restored.tokens)\n                            restored.statement.parent = program\n                            callbacks.delete(cb)\n                            break\n                        }\n                    }\n                }\n            }\n        }\n        if (callbacks.size) {\n            const [cb] = callbacks\n            const loc = linesAndColumns.getLocFromIndex(cb.range[0])\n            throw new ParseError(\n                \"Could not parse <script setup>. Failed to restore ExportNamedDeclaration.\",\n                undefined,\n                cb.range[0],\n                loc.line,\n                loc.column,\n            )\n        }\n    }\n}\n\ntype Postprocess = (\n    result: ESLintExtendedProgram,\n    context: { scriptSetupBlockRange: [number, number] },\n) => void\n\ntype ScriptSetupCodeBlocks = {\n    codeBlocks: CodeBlocks\n    // The location of the code of the statements in `<script setup>`.\n    scriptSetupBlockRange: [number, number]\n    // Post process\n    postprocess: Postprocess\n    // Used to restore ExportNamedDeclaration.\n    restoreASTCallbacks: RestoreASTCallbacks\n}\ntype ScriptSetupModuleCodeBlocks =\n    | ScriptSetupCodeBlocks\n    | {\n          codeBlocks: CodeBlocks\n          scriptSetupBlockRange?: undefined\n          postprocess?: undefined\n          restoreASTCallbacks?: undefined\n      }\n\nfunction parseScript(\n    code: string,\n    parserOptions: ParserOptions,\n    locationCalculatorForError: LocationCalculator,\n) {\n    try {\n        return parseScriptBase(code, parserOptions)\n    } catch (err) {\n        const perr = ParseError.normalize(err)\n        if (perr) {\n            // console.log(code)\n            fixErrorLocation(perr, locationCalculatorForError)\n            throw perr\n        }\n        throw err\n    }\n}\n\n/**\n * Parse the source code of the given `<script setup>` and `<script>` elements.\n * @param scriptSetupElement The `<script setup>` element to parse.\n * @param nodes The `<script>` elements to parse.\n * @param sfcCode The source code of SFC.\n * @param linesAndColumns The lines and columns location calculator.\n * @param parserOptions The parser options.\n * @returns The result of parsing.\n */\nexport function parseScriptSetupElements(\n    scriptSetupElement: VElement,\n    scriptElement: VElement,\n    sfcCode: string,\n    linesAndColumns: LinesAndColumns,\n    originalParserOptions: ParserOptions,\n): ESLintExtendedProgram {\n    const parserOptions: ParserOptions = getScriptSetupParserOptions(\n        originalParserOptions,\n    )\n    const scriptSetupModuleCodeBlocks = getScriptSetupModuleCodeBlocks(\n        scriptSetupElement,\n        scriptElement,\n        sfcCode,\n        linesAndColumns,\n        parserOptions,\n    )\n    if (!scriptSetupModuleCodeBlocks) {\n        return parseScriptFragment(\n            \"\",\n            linesAndColumns.createOffsetLocationCalculator(\n                scriptSetupElement.startTag.range[1],\n            ),\n            parserOptions,\n        )\n    }\n\n    const locationCalculator: LocationCalculator = {\n        getFixOffset(offset, kind) {\n            const test: (block: RemapBlock) => boolean =\n                kind === \"start\"\n                    ? (block) =>\n                          block.range[0] <= offset && offset < block.range[1]\n                    : (block) =>\n                          block.range[0] < offset && offset <= block.range[1]\n\n            for (const block of scriptSetupModuleCodeBlocks.codeBlocks\n                .remapBlocks) {\n                if (test(block)) {\n                    return block.offset\n                }\n            }\n            return offset\n        },\n        getLocFromIndex: linesAndColumns.getLocFromIndex.bind(linesAndColumns),\n    }\n\n    const result = parseScript(\n        scriptSetupModuleCodeBlocks.codeBlocks.code,\n        parserOptions,\n        locationCalculator,\n    )\n    if (scriptSetupModuleCodeBlocks.postprocess) {\n        scriptSetupModuleCodeBlocks.postprocess(result, {\n            scriptSetupBlockRange:\n                scriptSetupModuleCodeBlocks.scriptSetupBlockRange,\n        })\n    }\n\n    /* Remap ASTs */\n    const scriptSetupStatements = remapAST(result, scriptSetupModuleCodeBlocks)\n\n    /* Remap locations */\n    remapLocationAndTokens(\n        result,\n        scriptSetupModuleCodeBlocks,\n        locationCalculator,\n    )\n\n    if (scriptSetupModuleCodeBlocks.restoreASTCallbacks) {\n        scriptSetupModuleCodeBlocks.restoreASTCallbacks.restore(\n            result.ast,\n            scriptSetupStatements,\n            linesAndColumns,\n        )\n    }\n\n    // Adjust AST and tokens\n    if (result.ast.tokens != null) {\n        for (const node of [scriptSetupElement, scriptElement]) {\n            const startTag = node.startTag\n            const endTag = node.endTag\n\n            result.ast.tokens.unshift({\n                type: \"Punctuator\",\n                range: startTag.range,\n                loc: startTag.loc,\n                value: \"<script>\",\n            })\n            if (endTag != null) {\n                result.ast.tokens.push({\n                    type: \"Punctuator\",\n                    range: endTag.range,\n                    loc: endTag.loc,\n                    value: \"</script>\",\n                })\n            }\n        }\n        result.ast.tokens.sort((a, b) => a.range[0] - b.range[0])\n    }\n    result.ast.body.sort((a, b) => a.range[0] - b.range[0])\n\n    const programStartOffset = result.ast.body.reduce(\n        (start, node) => Math.min(start, node.range[0]),\n        result.ast.range[0],\n    )\n    result.ast.range[0] = programStartOffset\n    result.ast.loc.start =\n        locationCalculator.getLocFromIndex(programStartOffset)\n    if (result.ast.start != null) {\n        result.ast.start = [scriptSetupElement, scriptElement].reduce(\n            (start, node) => {\n                const textNode = node.children[0]\n                return Math.min(\n                    start,\n                    textNode != null && textNode.type === \"VText\"\n                        ? textNode.range[0]\n                        : node.startTag.range[1],\n                )\n            },\n            result.ast.start,\n        )\n    }\n\n    const programEndOffset = result.ast.body.reduce(\n        (end, node) => Math.max(end, node.range[1]),\n        0,\n    )\n    result.ast.range[1] = programEndOffset\n    result.ast.loc.end = locationCalculator.getLocFromIndex(programEndOffset)\n    if (result.ast.end != null) {\n        result.ast.end = [scriptSetupElement, scriptElement].reduce(\n            (end, node) => {\n                const textNode = node.children[0]\n                return Math.max(\n                    end,\n                    textNode != null && textNode.type === \"VText\"\n                        ? textNode.range[1]\n                        : node.endTag?.range[0] ?? node.range[1],\n                )\n            },\n            0,\n        )\n    }\n\n    return result\n}\n\n/**\n * Parses the scripts of the given `<script>` elements and returns\n * the reconstructed source code as a parseable script.\n * It also returns information for remapping the location.\n *\n * For examples, the script is reconstructed as follows.\n *\n * Example 1:\n *\n * ```vue\n * <script>\n * export let count = 42\n * </script>\n * <script setup>\n * import MyComponent from './MyComponent.vue'\n * let count = 42\n * </script>\n * ```\n *\n * ↓\n *\n * ```js\n * export let count = 42\n * ;\n * import MyComponent from './MyComponent.vue';\n * {\n * let count = 42\n * }\n * ```\n *\n * Example 2:\n *\n * ```vue\n * <script>\n * export let count = 42\n * </script>\n * <script setup>\n * import MyComponent1 from './MyComponent1.vue'\n * let count = 42\n * import MyComponent2 from './MyComponent2.vue'\n * let a\n * </script>\n * ```\n *\n * ↓\n *\n * ```js\n * export let count = 42\n * ;\n * import MyComponent1 from './MyComponent1.vue';\n * import MyComponent2 from './MyComponent2.vue';\n * {\n * let count = 42;\n * let a\n * }\n * ```\n *\n * Example 3:\n *\n * ```vue\n * <script>\n * export let count = 42\n * export let count2 = 42\n * </script>\n * <script setup>\n * import MyComponent1 from './MyComponent1.vue'\n * let count = 42\n * export {count as ns}\n * export let count2 = 42\n * count2++\n * </script>\n * ```\n *\n * ↓\n *\n * ```js\n * export let count = 42\n * export let count2 = 42\n * ;\n * import MyComponent1 from './MyComponent1.vue';\n * {\n * let count = 42;\n * let a\n * ;\n * ({count})\n * ;\n * let count2 = 42\n * ;\n * count2++\n * ;\n * }\n * ```\n */\nfunction getScriptSetupModuleCodeBlocks(\n    scriptSetupElement: VElement,\n    scriptElement: VElement,\n    sfcCode: string,\n    linesAndColumns: LinesAndColumns,\n    parserOptions: ParserOptions,\n): ScriptSetupModuleCodeBlocks | null {\n    const scriptSetupCodeBlocks = getScriptSetupCodeBlocks(\n        scriptSetupElement,\n        sfcCode,\n        linesAndColumns,\n        parserOptions,\n    )\n\n    const textNode = scriptElement.children[0]\n    if (textNode == null || textNode.type !== \"VText\") {\n        return scriptSetupCodeBlocks\n    }\n\n    const [scriptStartOffset, scriptEndOffset] = textNode.range\n    const codeBlocks = new CodeBlocks()\n    codeBlocks.append(\n        sfcCode.slice(scriptStartOffset, scriptEndOffset),\n        scriptStartOffset,\n    )\n    if (scriptSetupCodeBlocks == null) {\n        return { codeBlocks }\n    }\n\n    codeBlocks.appendSplitPunctuators(\";\")\n    const scriptSetupOffset = codeBlocks.length\n    codeBlocks.appendCodeBlocks(scriptSetupCodeBlocks.codeBlocks)\n    return {\n        codeBlocks,\n        scriptSetupBlockRange: [\n            scriptSetupCodeBlocks.scriptSetupBlockRange[0] + scriptSetupOffset,\n            scriptSetupCodeBlocks.scriptSetupBlockRange[1] + scriptSetupOffset,\n        ],\n        postprocess: scriptSetupCodeBlocks.postprocess,\n        restoreASTCallbacks: scriptSetupCodeBlocks.restoreASTCallbacks,\n    }\n}\n\n/**\n * Parses the script in the given `<script setup>` and returns the source code with\n * the import blocks and other statements reconstructed.\n * It also returns information for remapping the location.\n */\nfunction getScriptSetupCodeBlocks(\n    node: VElement,\n    sfcCode: string,\n    linesAndColumns: LinesAndColumns,\n    parserOptions: ParserOptions,\n): ScriptSetupCodeBlocks | null {\n    const textNode = node.children[0]\n    if (textNode == null || textNode.type !== \"VText\") {\n        return null\n    }\n\n    const [scriptSetupStartOffset, scriptSetupEndOffset] = textNode.range\n    const scriptCode = sfcCode.slice(\n        scriptSetupStartOffset,\n        scriptSetupEndOffset,\n    )\n\n    const offsetLocationCalculator =\n        linesAndColumns.createOffsetLocationCalculator(scriptSetupStartOffset)\n\n    const result = parseScript(\n        scriptCode,\n        parserOptions,\n        offsetLocationCalculator,\n    )\n\n    const { ast } = result\n\n    // Holds the `import` and re-`export` statements.\n    // All import and re-`export` statements are hoisted to the top.\n    const importCodeBlocks = new CodeBlocks()\n    // Holds statements other than `import`, re-`export` and `export default` statements.\n    // This is moved to a block statement to avoid conflicts with variables of the same name in `<script>`.\n    const statementCodeBlocks = new CodeBlocks()\n    // Holds `export default` statements.\n    // All `export default` statements are move to the bottom.\n    const exportDefaultCodeBlocks = new CodeBlocks()\n    // It holds the information to restore the transformation source code of the export statements held in `statementCodeBlocks`.\n    const restoreASTCallbacks = new RestoreASTCallbacks()\n\n    let usedOffset = 0\n\n    /**\n     * Consume and append the given range of code to the given codeBlocks.\n     */\n    function append(codeBlocks: CodeBlocks, start: number, end: number) {\n        if (start < end) {\n            codeBlocks.append(\n                scriptCode.slice(start, end),\n                scriptSetupStartOffset + start,\n            )\n            usedOffset = end\n            return true\n        }\n        return false\n    }\n\n    /**\n     * Append the given range of import or export statement to the given codeBlocks.\n     */\n    function appendRangeAsStatement(\n        codeBlocks: CodeBlocks,\n        start: number,\n        end: number,\n    ) {\n        if (append(codeBlocks, start, end)) {\n            codeBlocks.appendSplitPunctuators(\";\")\n        }\n    }\n\n    function transformExportNamed(body: ESLintExportNamedDeclaration) {\n        const [start, end] = getNodeFullRange(body)\n        // Consume code up to the start position.\n        appendRangeAsStatement(statementCodeBlocks, usedOffset, start)\n\n        const tokens = ast.tokens!\n        const exportTokenIndex = tokens.findIndex(\n            (t) => t.range[0] === body.range[0],\n        )\n        const exportToken = tokens[exportTokenIndex]\n        if (exportToken && exportToken.value === \"export\") {\n            // Consume code up to the start position of `export`.\n            // The code may contain legacy decorators.\n            append(statementCodeBlocks, usedOffset, exportToken.range[0])\n            if (body.declaration) {\n                // Append declaration section (Skip `export` token)\n                appendRangeAsStatement(\n                    statementCodeBlocks,\n                    exportToken.range[1],\n                    end,\n                )\n\n                restoreASTCallbacks.addCallback(\n                    scriptSetupStartOffset,\n                    [start, end],\n                    (statement) => {\n                        if (statement.type !== body.declaration!.type) {\n                            return null\n                        }\n                        fixNodeLocations(\n                            body,\n                            result.visitorKeys,\n                            offsetLocationCalculator,\n                        )\n                        fixLocation(exportToken, offsetLocationCalculator)\n                        body.declaration = statement\n                        statement.parent = body\n                        return {\n                            statement: body,\n                            tokens: [exportToken],\n                        }\n                    },\n                )\n            } else {\n                // Append the code that converted specifiers to destructuring.\n                statementCodeBlocks.appendSplitPunctuators(\"(\")\n                const restoreTokens: Token[] = [exportToken]\n                let startOffset = exportToken.range[1]\n                for (const spec of body.specifiers) {\n                    if (spec.local.range[0] < spec.exported.range[0]) {\n                        // {a as b}\n                        const localTokenIndex = tokens.findIndex(\n                            (t) => t.range[0] === spec.local.range[0],\n                            exportTokenIndex,\n                        )\n                        checkToken(\n                            tokens[localTokenIndex],\n                            (spec.local as ESLintIdentifier).name,\n                        )\n                        const asToken = tokens[localTokenIndex + 1]\n                        checkToken(asToken, \"as\")\n                        restoreTokens.push(asToken)\n                        const exportedToken = tokens[localTokenIndex + 2]\n                        checkToken(\n                            exportedToken,\n                            spec.exported.type === \"Identifier\"\n                                ? spec.exported.name\n                                : spec.exported.raw,\n                        )\n                        restoreTokens.push(exportedToken)\n                        // Skip `as` token\n                        append(\n                            statementCodeBlocks,\n                            startOffset,\n                            asToken.range[0],\n                        )\n                        append(\n                            statementCodeBlocks,\n                            asToken.range[1],\n                            exportedToken.range[0],\n                        )\n                        startOffset = exportedToken.range[1]\n                    }\n                }\n                append(statementCodeBlocks, startOffset, end)\n                statementCodeBlocks.appendSplitPunctuators(\")\")\n                statementCodeBlocks.appendSplitPunctuators(\";\")\n\n                restoreASTCallbacks.addCallback(\n                    scriptSetupStartOffset,\n                    [start, end],\n                    (statement) => {\n                        if (\n                            statement.type !== \"ExpressionStatement\" ||\n                            statement.expression.type !== \"ObjectExpression\"\n                        ) {\n                            return null\n                        }\n                        // preprocess and check\n                        const locals: ESLintIdentifier[] = []\n                        for (const prop of statement.expression.properties) {\n                            if (\n                                prop.type !== \"Property\" ||\n                                prop.value.type !== \"Identifier\"\n                            ) {\n                                return null\n                            }\n                            locals.push(prop.value)\n                        }\n                        if (body.specifiers.length !== locals.length) {\n                            return null\n                        }\n                        const map = new Map<\n                            ESLintExportSpecifier,\n                            ESLintIdentifier\n                        >()\n                        for (\n                            let index = 0;\n                            index < body.specifiers.length;\n                            index++\n                        ) {\n                            const spec = body.specifiers[index]\n                            const local = locals[index]\n                            map.set(spec, local)\n                        }\n\n                        // restore\n                        fixNodeLocations(\n                            body,\n                            result.visitorKeys,\n                            offsetLocationCalculator,\n                        )\n                        for (const token of restoreTokens) {\n                            fixLocation(token, offsetLocationCalculator)\n                        }\n                        for (const [spec, local] of map) {\n                            spec.local = local\n                            local.parent = spec\n                        }\n                        return {\n                            statement: body,\n                            tokens: restoreTokens,\n                        }\n                    },\n                )\n            }\n        } else {\n            // Unknown format\n            appendRangeAsStatement(statementCodeBlocks, usedOffset, end)\n        }\n    }\n\n    for (const body of ast.body) {\n        if (\n            body.type === \"ImportDeclaration\" ||\n            body.type === \"ExportAllDeclaration\" ||\n            (body.type === \"ExportNamedDeclaration\" && body.source != null)\n        ) {\n            const [start, end] = getNodeFullRange(body)\n            // Consume code up to the start position.\n            appendRangeAsStatement(statementCodeBlocks, usedOffset, start)\n            // Append declaration\n            appendRangeAsStatement(importCodeBlocks, start, end)\n        } else if (body.type === \"ExportDefaultDeclaration\") {\n            const [start, end] = getNodeFullRange(body)\n            // Consume code up to the start position.\n            appendRangeAsStatement(statementCodeBlocks, usedOffset, start)\n            // Append declaration\n            appendRangeAsStatement(exportDefaultCodeBlocks, start, end)\n        } else if (body.type === \"ExportNamedDeclaration\") {\n            // Transform ExportNamedDeclaration\n            // The transformed statement ASTs are restored by RestoreASTCallbacks.\n            // e.g.\n            // - `export let v = 42` -> `let v = 42`\n            // - `export {foo, bar as Bar}` -> `({foo, bar})`\n            transformExportNamed(body)\n        }\n    }\n    // Consume the remaining code.\n    appendRangeAsStatement(\n        statementCodeBlocks,\n        usedOffset,\n        scriptSetupEndOffset,\n    )\n\n    // Creates a code block that combines import, statement block, and export default.\n    const codeBlocks = new CodeBlocks()\n\n    let postprocess: Postprocess = () => {\n        // noop\n    }\n\n    codeBlocks.appendCodeBlocks(importCodeBlocks)\n    const scriptSetupBlockRangeStart = codeBlocks.length\n    codeBlocks.appendSplitPunctuators(\"{\")\n    const generic = extractGeneric(node)\n    if (generic) {\n        const defineGenericTypeRangeStart = codeBlocks.length\n        for (const defineType of generic.defineTypes) {\n            codeBlocks.append(defineType.define, defineType.node.range[0])\n            codeBlocks.appendSplitPunctuators(\";\")\n        }\n        const defineGenericTypeRangeEnd = codeBlocks.length\n        postprocess = (eslintResult, context) => {\n            const diffOffset =\n                context.scriptSetupBlockRange[0] - scriptSetupBlockRangeStart\n            const defineGenericTypeRange = [\n                defineGenericTypeRangeStart + diffOffset,\n                defineGenericTypeRangeEnd + diffOffset,\n            ] as const\n\n            function isTypeBlock(\n                block: ESLintNode,\n            ): block is ESLintBlockStatement {\n                return (\n                    block.type === \"BlockStatement\" &&\n                    context.scriptSetupBlockRange[0] <= block.range[0] &&\n                    block.range[1] <= context.scriptSetupBlockRange[1]\n                )\n            }\n\n            generic.postprocess({\n                result: eslintResult,\n                getTypeBlock: (program) => program.body.find(isTypeBlock)!,\n                isRemoveTarget(nodeOrToken) {\n                    return (\n                        defineGenericTypeRange[0] <= nodeOrToken.range[0] &&\n                        nodeOrToken.range[1] <= defineGenericTypeRange[1]\n                    )\n                },\n                getTypeDefScope(scopeManager) {\n                    const moduleScope =\n                        scopeManager.globalScope.childScopes.find(\n                            (s) => s.type === \"module\",\n                        ) ?? scopeManager.globalScope\n                    return moduleScope.childScopes.find((scope) =>\n                        isTypeBlock(scope.block as ESLintNode),\n                    )!\n                },\n            })\n        }\n    }\n    codeBlocks.appendCodeBlocks(statementCodeBlocks)\n    codeBlocks.appendSplitPunctuators(\"}\")\n    const scriptSetupBlockRangeEnd = codeBlocks.length\n    codeBlocks.appendCodeBlocks(exportDefaultCodeBlocks)\n    return {\n        codeBlocks,\n        scriptSetupBlockRange: [\n            scriptSetupBlockRangeStart,\n            scriptSetupBlockRangeEnd,\n        ],\n        postprocess,\n        restoreASTCallbacks,\n    }\n\n    function getNodeFullRange(n: ESLintNode) {\n        let start = n.range[0]\n        let end = n.range[1]\n        traverseNodes(n, {\n            visitorKeys: result.visitorKeys,\n            enterNode(c) {\n                start = Math.min(start, c.range[0])\n                end = Math.max(end, c.range[1])\n            },\n            leaveNode() {\n                // Do nothing.\n            },\n        })\n        return [start, end] as const\n    }\n\n    function checkToken(token: Token, value: string) {\n        if (token.value === value) {\n            return\n        }\n\n        const perr = new ParseError(\n            `Could not parse <script setup>. Expected \"${value}\", but it was \"${token.value}\".`,\n            undefined,\n            token.range[0],\n            token.loc.start.line,\n            token.loc.start.column,\n        )\n        fixErrorLocation(perr, offsetLocationCalculator)\n        throw perr\n    }\n}\n\nfunction remapAST(\n    result: ESLintExtendedProgram,\n    { scriptSetupBlockRange, codeBlocks }: ScriptSetupModuleCodeBlocks,\n): ESLintStatement[] {\n    if (!scriptSetupBlockRange) {\n        return []\n    }\n\n    let scriptSetupBlock: ESLintBlockStatement | null = null\n    const scriptSetupStatements: ESLintStatement[] = []\n    for (let index = result.ast.body.length - 1; index >= 0; index--) {\n        const body = result.ast.body[index]\n\n        if (body.type === \"BlockStatement\") {\n            if (\n                scriptSetupBlockRange[0] <= body.range[0] &&\n                body.range[1] <= scriptSetupBlockRange[1]\n            ) {\n                if (scriptSetupBlock) {\n                    throw new Error(\n                        `Unexpected state error: An unexpected block statement was found. ${JSON.stringify(\n                            body.loc,\n                        )}`,\n                    )\n                }\n                scriptSetupBlock = body\n                scriptSetupStatements.push(\n                    ...body.body.filter(\n                        (b) => !isSplitPunctuatorsEmptyStatement(b),\n                    ),\n                )\n                result.ast.body.splice(index, 1, ...scriptSetupStatements)\n            }\n        } else if (body.type === \"EmptyStatement\") {\n            if (isSplitPunctuatorsEmptyStatement(body)) {\n                // remove\n                result.ast.body.splice(index, 1)\n            }\n        }\n    }\n\n    if (result.scopeManager && scriptSetupBlock) {\n        const blockScope = result.scopeManager.acquire(\n            scriptSetupBlock as never,\n            true,\n        )!\n        remapScope(result.scopeManager, blockScope)\n    }\n\n    return scriptSetupStatements\n\n    function isSplitPunctuatorsEmptyStatement(body: ESLintStatement) {\n        return (\n            body.type === \"EmptyStatement\" &&\n            codeBlocks.splitPunctuators.includes(body.range[1] - 1)\n        )\n    }\n\n    function remapScope(scopeManager: ScopeManager, blockScope: Scope) {\n        const moduleScope = blockScope.upper!\n\n        // Restore references\n        for (const reference of blockScope.references) {\n            reference.from = moduleScope\n            moduleScope.references.push(reference)\n        }\n        // Restore variables\n        for (const variable of blockScope.variables) {\n            variable.scope = moduleScope\n            const alreadyVariable = moduleScope.variables.find(\n                (v) => v.name === variable.name,\n            )\n            if (alreadyVariable) {\n                alreadyVariable.defs.push(...variable.defs)\n                alreadyVariable.identifiers.push(...variable.identifiers)\n                alreadyVariable.references.push(...variable.references)\n                for (const reference of variable.references) {\n                    reference.resolved = alreadyVariable\n                }\n            } else {\n                moduleScope.variables.push(variable)\n                moduleScope.set.set(variable.name, variable)\n            }\n        }\n        // Remove scope\n        const upper = blockScope.upper\n        if (upper) {\n            const index = upper.childScopes.indexOf(blockScope)\n            if (index >= 0) {\n                upper.childScopes.splice(index, 1)\n            }\n        }\n        const index = scopeManager.scopes.indexOf(blockScope)\n        if (index >= 0) {\n            scopeManager.scopes.splice(index, 1)\n        }\n    }\n}\n\nfunction remapLocationAndTokens(\n    result: ESLintExtendedProgram,\n    { codeBlocks }: ScriptSetupModuleCodeBlocks,\n    locationCalculator: LocationCalculator,\n) {\n    const tokens = result.ast.tokens || []\n\n    const endMap = new Map<number, number>()\n    const buffer: number[] = []\n    for (let index = tokens.length - 1; index >= 0; index--) {\n        const token = tokens[index]\n\n        if (\n            token.range[0] + 1 === token.range[1] &&\n            codeBlocks.splitPunctuators.includes(token.range[0])\n        ) {\n            // remove\n            tokens.splice(index, 1)\n            buffer.push(token.range[1])\n            continue\n        } else {\n            for (const end of buffer) {\n                endMap.set(end, token.range[1])\n            }\n            buffer.length = 0\n        }\n    }\n\n    traverseNodes(result.ast, {\n        visitorKeys: result.visitorKeys,\n        enterNode(node) {\n            const rangeEnd = endMap.get(node.range[1])\n            if (rangeEnd != null) {\n                node.range[1] = rangeEnd\n            }\n            if (node.end) {\n                const end = endMap.get(node.end)\n                if (end != null) {\n                    node.end = rangeEnd\n                }\n            }\n        },\n        leaveNode() {\n            // Do nothing.\n        },\n    })\n\n    fixLocations(result, locationCalculator)\n}\n","import { debug } from \"../common/debug\"\nimport type { OffsetRange } from \"../ast\"\nimport {\n    APOSTROPHE,\n    ASTERISK,\n    CARRIAGE_RETURN,\n    EOF,\n    isWhitespace,\n    LEFT_CURLY_BRACKET,\n    LEFT_PARENTHESIS,\n    LINE_FEED,\n    NULL,\n    QUOTATION_MARK,\n    REVERSE_SOLIDUS,\n    RIGHT_CURLY_BRACKET,\n    RIGHT_PARENTHESIS,\n    SOLIDUS,\n    COLON,\n    SEMICOLON,\n    LEFT_SQUARE_BRACKET,\n    RIGHT_SQUARE_BRACKET,\n} from \"../html/util/unicode\"\n\nexport const enum CSSTokenType {\n    Quoted = \"Quoted\",\n    Block = \"Block\",\n    Line = \"Line\",\n    Word = \"Word\",\n    Punctuator = \"Punctuator\",\n}\n\nexport interface CSSWordToken {\n    type: CSSTokenType.Word\n    value: string\n    range: OffsetRange\n}\nexport interface CSSQuotedToken {\n    type: CSSTokenType.Quoted\n    valueRange: OffsetRange\n    value: string\n    range: OffsetRange\n    quote: '\"' | \"'\"\n}\nexport interface CSSPunctuatorToken {\n    type: CSSTokenType.Punctuator\n    value: string\n    range: OffsetRange\n}\nexport interface CSSCommentToken {\n    type: CSSTokenType.Block | CSSTokenType.Line\n    valueRange: OffsetRange\n    value: string\n    range: OffsetRange\n}\nexport type CSSToken =\n    | CSSWordToken\n    | CSSQuotedToken\n    | CSSPunctuatorToken\n    | CSSCommentToken\n\nexport type CSSTokenizeOption = { inlineComment?: boolean }\n\n/**\n * A simplified CSS tokenizer.\n * The tokenizer is implemented with reference to the CSS specification,\n * but it does not follow it. This tokenizer only does the tokenization needed to properly handle `v-bind()`.\n * @see https://drafts.csswg.org/css-syntax/#tokenization\n */\nexport class CSSTokenizer {\n    // Reading\n    public readonly text: string\n    private readonly options: CSSTokenizeOption\n    private cp: number\n    private offset: number\n    private nextOffset: number\n\n    // Tokenizing\n    private reconsuming: boolean\n\n    /**\n     * Initialize this tokenizer.\n     * @param text The source code to tokenize.\n     * @param options The tokenizer options.\n     */\n    public constructor(\n        text: string,\n        startOffset: number,\n        options?: CSSTokenizeOption,\n    ) {\n        debug(\"[css] the source code length: %d\", text.length)\n        this.text = text\n        this.options = {\n            inlineComment: options?.inlineComment ?? false,\n        }\n        this.cp = NULL\n        this.offset = startOffset - 1\n        this.nextOffset = startOffset\n        this.reconsuming = false\n    }\n\n    /**\n     * Get the next token.\n     * @returns The next token or null.\n     */\n    public nextToken(): CSSToken | null {\n        let cp\n        if (this.reconsuming) {\n            cp = this.cp\n            this.reconsuming = false\n        } else {\n            cp = this.consumeNextCodePoint()\n        }\n        // Skip whitespaces\n        while (isWhitespace(cp)) {\n            cp = this.consumeNextCodePoint()\n        }\n        if (cp === EOF) {\n            return null\n        }\n\n        const start = this.offset\n        return this.consumeNextToken(cp, start)\n    }\n\n    /**\n     * Get the next code point.\n     * @returns The code point.\n     */\n    private nextCodePoint(): number {\n        if (this.nextOffset >= this.text.length) {\n            return EOF\n        }\n        return this.text.codePointAt(this.nextOffset)!\n    }\n\n    /**\n     * Consume the next code point.\n     * @returns The consumed code point.\n     */\n    private consumeNextCodePoint(): number {\n        if (this.offset >= this.text.length) {\n            this.cp = EOF\n            return EOF\n        }\n\n        this.offset = this.nextOffset\n\n        if (this.offset >= this.text.length) {\n            this.cp = EOF\n            return EOF\n        }\n\n        let cp = this.text.codePointAt(this.offset)!\n        if (cp === CARRIAGE_RETURN) {\n            this.nextOffset = this.offset + 1\n            if (this.text.codePointAt(this.nextOffset)! === LINE_FEED) {\n                this.nextOffset++\n            }\n            cp = LINE_FEED\n        } else {\n            this.nextOffset = this.offset + (cp >= 0x10000 ? 2 : 1)\n        }\n\n        this.cp = cp\n\n        return cp\n    }\n\n    private consumeNextToken(cp: number, start: number): CSSToken | null {\n        if (cp === SOLIDUS) {\n            const nextCp = this.nextCodePoint()\n            if (nextCp === ASTERISK) {\n                return this.consumeComment(start)\n            }\n            if (nextCp === SOLIDUS && this.options.inlineComment) {\n                return this.consumeInlineComment(start)\n            }\n        }\n        if (isQuote(cp)) {\n            return this.consumeString(start, cp)\n        }\n        if (isPunctuator(cp)) {\n            return {\n                type: CSSTokenType.Punctuator,\n                range: [start, start + 1],\n                value: String.fromCodePoint(cp),\n            }\n        }\n        return this.consumeWord(start)\n    }\n\n    /**\n     * Consume word\n     */\n    private consumeWord(start: number): CSSToken {\n        let cp = this.consumeNextCodePoint()\n        while (!isWhitespace(cp) && !isPunctuator(cp) && !isQuote(cp)) {\n            cp = this.consumeNextCodePoint()\n        }\n        this.reconsuming = true\n        const range: OffsetRange = [start, this.offset]\n        const text = this.text\n        let value: string\n        return {\n            type: CSSTokenType.Word,\n            range,\n            get value() {\n                return (value ??= text.slice(...range))\n            },\n        }\n    }\n\n    /**\n     * https://drafts.csswg.org/css-syntax/#consume-string-token\n     */\n    private consumeString(start: number, quote: number): CSSToken {\n        let valueEndOffset: number | null = null\n        let cp = this.consumeNextCodePoint()\n        while (cp !== EOF) {\n            if (cp === quote) {\n                valueEndOffset = this.offset\n                break\n            }\n            // PostCSS seems to continue parsing.\n            // if (cp === LINE_FEED) {\n            //     // Bad string\n            //     this.reconsuming = true\n            //     valueEndOffset = this.offset\n            //     break\n            // }\n            if (cp === REVERSE_SOLIDUS) {\n                // Escape\n                this.consumeNextCodePoint()\n            }\n            cp = this.consumeNextCodePoint()\n        }\n        const text = this.text\n        let value: string\n        const valueRange: OffsetRange = [\n            start + 1,\n            valueEndOffset ?? this.nextOffset,\n        ]\n        return {\n            type: CSSTokenType.Quoted,\n            range: [start, this.nextOffset],\n            valueRange,\n            get value() {\n                return (value ??= text.slice(...valueRange))\n            },\n            quote: String.fromCodePoint(quote) as never,\n        }\n    }\n    /**\n     * https://drafts.csswg.org/css-syntax/#consume-comment\n     */\n    private consumeComment(start: number): CSSToken {\n        this.consumeNextCodePoint() // consume \"*\"\n        let valueEndOffset: number | null = null\n        let cp = this.consumeNextCodePoint()\n        while (cp !== EOF) {\n            if (cp === ASTERISK) {\n                cp = this.consumeNextCodePoint()\n                if (cp === SOLIDUS) {\n                    valueEndOffset = this.offset - 1\n                    break\n                }\n            }\n            cp = this.consumeNextCodePoint()\n        }\n        const valueRange: OffsetRange = [\n            start + 2,\n            valueEndOffset ?? this.nextOffset,\n        ]\n        const text = this.text\n        let value: string\n        return {\n            type: CSSTokenType.Block,\n            range: [start, this.nextOffset],\n            valueRange,\n            get value() {\n                return (value ??= text.slice(...valueRange))\n            },\n        }\n    }\n    /**\n     * Consume inline comment\n     */\n    private consumeInlineComment(start: number): CSSToken {\n        this.consumeNextCodePoint() // consume \"/\"\n        let valueEndOffset: number | null = null\n        let cp = this.consumeNextCodePoint()\n        while (cp !== EOF) {\n            if (cp === LINE_FEED) {\n                valueEndOffset = this.offset - 1\n                break\n            }\n            cp = this.consumeNextCodePoint()\n        }\n        const valueRange: OffsetRange = [\n            start + 2,\n            valueEndOffset ?? this.nextOffset,\n        ]\n        const text = this.text\n        let value: string\n        return {\n            type: CSSTokenType.Line,\n            range: [start, this.nextOffset],\n            valueRange,\n            get value() {\n                return (value ??= text.slice(...valueRange))\n            },\n        }\n    }\n}\n\nfunction isPunctuator(cp: number): boolean {\n    return (\n        cp === COLON ||\n        cp === SEMICOLON ||\n        // Brackets\n        cp === LEFT_PARENTHESIS ||\n        cp === RIGHT_PARENTHESIS ||\n        cp === LEFT_CURLY_BRACKET ||\n        cp === RIGHT_CURLY_BRACKET ||\n        cp === LEFT_SQUARE_BRACKET ||\n        cp === RIGHT_SQUARE_BRACKET ||\n        // Maybe v-bind() in calc()\n        cp === SOLIDUS ||\n        cp === ASTERISK\n    )\n}\n\nfunction isQuote(cp: number): boolean {\n    return cp === APOSTROPHE || cp === QUOTATION_MARK\n}\n","import type {\n    OffsetRange,\n    Token,\n    VDocumentFragment,\n    VElement,\n    VExpressionContainer,\n    VStyleElement,\n    VText,\n} from \"../ast\"\nimport { ParseError } from \"../ast\"\nimport { getLang, getOwnerDocument } from \"../common/ast-utils\"\nimport { debug } from \"../common/debug\"\nimport { insertError } from \"../common/error-utils\"\nimport type { LocationCalculatorForHtml } from \"../common/location-calculator\"\nimport type { ParserOptions } from \"../common/parser-options\"\nimport {\n    createSimpleToken,\n    insertComments,\n    replaceAndSplitTokens,\n} from \"../common/token-utils\"\nimport { parseExpression } from \"../script\"\nimport { DEFAULT_ECMA_VERSION } from \"../script-setup/parser-options\"\nimport { resolveReferences } from \"../template\"\nimport type {\n    CSSCommentToken,\n    CSSPunctuatorToken,\n    CSSToken,\n    CSSTokenizeOption,\n} from \"./tokenizer\"\nimport { CSSTokenType, CSSTokenizer } from \"./tokenizer\"\n\nclass CSSTokenScanner {\n    private reconsuming: CSSToken[] = []\n    private tokenizer: CSSTokenizer\n    public constructor(text: string, options: CSSTokenizeOption) {\n        this.tokenizer = new CSSTokenizer(text, 0, options)\n    }\n    public nextToken(): CSSToken | null {\n        return this.reconsuming.shift() || this.tokenizer.nextToken()\n    }\n    public reconsume(...tokens: CSSToken[]) {\n        this.reconsuming.push(...tokens)\n    }\n}\n\n/**\n * Parse the source code of the given `<style>` elements.\n * @param elements The `<style>` elements to parse.\n * @param globalLocationCalculator The location calculator for fixLocations.\n * @param parserOptions The parser options.\n * @returns The result of parsing.\n */\nexport function parseStyleElements(\n    elements: VElement[],\n    globalLocationCalculator: LocationCalculatorForHtml,\n    originalParserOptions: ParserOptions,\n): void {\n    const parserOptions: ParserOptions = {\n        ...originalParserOptions,\n        ecmaVersion: originalParserOptions.ecmaVersion || DEFAULT_ECMA_VERSION,\n    }\n\n    for (const style of elements) {\n        ;(style as VStyleElement).style = true\n        parseStyleElement(\n            style as VStyleElement,\n            globalLocationCalculator,\n            parserOptions,\n            {\n                inlineComment: (getLang(style) || \"css\") !== \"css\",\n            },\n        )\n    }\n}\n\nfunction parseStyleElement(\n    style: VStyleElement,\n    globalLocationCalculator: LocationCalculatorForHtml,\n    parserOptions: ParserOptions,\n    cssOptions: CSSTokenizeOption,\n) {\n    if (style.children.length !== 1) {\n        return\n    }\n    const textNode = style.children[0]\n    if (textNode.type !== \"VText\") {\n        return\n    }\n    const code = textNode.value\n    // short circuit\n    if (!/v-bind\\s*(?:\\(|\\/)/u.test(code)) {\n        return\n    }\n\n    const locationCalculator = globalLocationCalculator.getSubCalculatorAfter(\n        textNode.range[0],\n    )\n    const document = getOwnerDocument(style)\n    parseStyle(\n        document,\n        style,\n        code,\n        locationCalculator,\n        parserOptions,\n        cssOptions,\n    )\n}\n\nfunction parseStyle(\n    document: VDocumentFragment | null,\n    style: VStyleElement,\n    code: string,\n    locationCalculator: LocationCalculatorForHtml,\n    parserOptions: ParserOptions,\n    cssOptions: CSSTokenizeOption,\n) {\n    let textStart = 0\n    for (const {\n        range,\n        exprRange,\n        quote,\n        openingParenOffset,\n        comments,\n    } of iterateVBind(code, cssOptions)) {\n        insertComments(\n            document,\n            comments.map((c) =>\n                createSimpleToken(\n                    c.type,\n                    locationCalculator.getOffsetWithGap(c.range[0]),\n                    locationCalculator.getOffsetWithGap(c.range[1]),\n                    c.value,\n                    locationCalculator,\n                ),\n            ),\n        )\n\n        const container: VExpressionContainer = {\n            type: \"VExpressionContainer\",\n            range: [\n                locationCalculator.getOffsetWithGap(range[0]),\n                locationCalculator.getOffsetWithGap(range[1]),\n            ],\n            loc: {\n                start: locationCalculator.getLocation(range[0]),\n                end: locationCalculator.getLocation(range[1]),\n            },\n            parent: style,\n            expression: null,\n            references: [],\n        }\n\n        const openingParenStart =\n            locationCalculator.getOffsetWithGap(openingParenOffset)\n        const beforeTokens: Token[] = [\n            createSimpleToken(\n                \"HTMLRawText\",\n                container.range[0],\n                container.range[0] + 6 /* v-bind */,\n                \"v-bind\",\n                locationCalculator,\n            ),\n            createSimpleToken(\n                \"Punctuator\",\n                openingParenStart,\n                openingParenStart + 1,\n                \"(\",\n                locationCalculator,\n            ),\n        ]\n        const afterTokens: Token[] = [\n            createSimpleToken(\n                \"Punctuator\",\n                container.range[1] - 1,\n                container.range[1],\n                \")\",\n                locationCalculator,\n            ),\n        ]\n        if (quote) {\n            const openStart = locationCalculator.getOffsetWithGap(\n                exprRange[0] - 1,\n            )\n            beforeTokens.push(\n                createSimpleToken(\n                    \"Punctuator\",\n                    openStart,\n                    openStart + 1,\n                    quote,\n                    locationCalculator,\n                ),\n            )\n            const closeStart = locationCalculator.getOffsetWithGap(exprRange[1])\n            afterTokens.unshift(\n                createSimpleToken(\n                    \"Punctuator\",\n                    closeStart,\n                    closeStart + 1,\n                    quote,\n                    locationCalculator,\n                ),\n            )\n        }\n        const beforeLast = beforeTokens[beforeTokens.length - 1]\n        replaceAndSplitTokens(\n            document,\n            {\n                range: [container.range[0], beforeLast.range[1]],\n                loc: { start: container.loc.start, end: beforeLast.loc.end },\n            },\n            beforeTokens,\n        )\n        const afterFirst = afterTokens[0]\n        replaceAndSplitTokens(\n            document,\n            {\n                range: [afterFirst.range[0], container.range[1]],\n                loc: { start: afterFirst.loc.start, end: container.loc.end },\n            },\n            afterTokens,\n        )\n\n        const lastChild = style.children[style.children.length - 1]\n        style.children.push(container)\n        if (lastChild.type === \"VText\") {\n            const newTextNode: VText = {\n                type: \"VText\",\n                range: [container.range[1], lastChild.range[1]],\n                loc: {\n                    start: { ...container.loc.end },\n                    end: { ...lastChild.loc.end },\n                },\n                parent: style,\n                value: code.slice(range[1]),\n            }\n            style.children.push(newTextNode)\n\n            lastChild.range[1] = container.range[0]\n            lastChild.loc.end = { ...container.loc.start }\n            lastChild.value = code.slice(textStart, range[0])\n            textStart = range[1]\n        }\n        try {\n            const ret = parseExpression(\n                code.slice(...exprRange),\n                locationCalculator.getSubCalculatorShift(exprRange[0]),\n                parserOptions,\n                { allowEmpty: false, allowFilters: false },\n            )\n            if (ret.expression) {\n                ret.expression.parent = container\n                container.expression = ret.expression\n                container.references = ret.references\n            }\n            replaceAndSplitTokens(\n                document,\n                {\n                    range: [beforeLast.range[1], afterFirst.range[0]],\n                    loc: {\n                        start: beforeLast.loc.end,\n                        end: afterFirst.loc.start,\n                    },\n                },\n                ret.tokens,\n            )\n            insertComments(document, ret.comments)\n\n            for (const variable of ret.variables) {\n                style.variables.push(variable)\n            }\n            resolveReferences(container)\n        } catch (err) {\n            debug(\"[style] Parse error: %s\", err)\n\n            if (ParseError.isParseError(err)) {\n                insertError(document, err)\n            } else {\n                throw err\n            }\n        }\n    }\n}\n\ntype VBindLocations = {\n    range: OffsetRange\n    exprRange: OffsetRange\n    quote: '\"' | \"'\" | null\n    openingParenOffset: number\n    comments: CSSCommentToken[]\n}\n\n/**\n * Iterate the `v-bind()` information.\n */\nfunction* iterateVBind(\n    code: string,\n    cssOptions: CSSTokenizeOption,\n): IterableIterator<VBindLocations> {\n    const tokenizer = new CSSTokenScanner(code, cssOptions)\n\n    let token\n    while ((token = tokenizer.nextToken())) {\n        if (token.type !== CSSTokenType.Word || token.value !== \"v-bind\") {\n            continue\n        }\n        const openingParen = findVBindOpeningParen(tokenizer)\n        if (!openingParen) {\n            continue\n        }\n        const arg = parseVBindArg(tokenizer)\n        if (!arg) {\n            continue\n        }\n        yield {\n            range: [token.range[0], arg.closingParen.range[1]],\n            exprRange: arg.exprRange,\n            quote: arg.quote,\n            openingParenOffset: openingParen.openingParen.range[0],\n            comments: [...openingParen.comments, ...arg.comments],\n        }\n    }\n}\n\nfunction findVBindOpeningParen(tokenizer: CSSTokenScanner): {\n    openingParen: CSSPunctuatorToken\n    comments: CSSCommentToken[]\n} | null {\n    const comments: CSSCommentToken[] = []\n    let token\n    while ((token = tokenizer.nextToken())) {\n        if (token.type === CSSTokenType.Punctuator && token.value === \"(\") {\n            return {\n                openingParen: token,\n                comments,\n            }\n        } else if (isComment(token)) {\n            // Comment between `v-bind` and opening paren.\n            comments.push(token)\n            continue\n        }\n        tokenizer.reconsume(...comments, token)\n        // There were no opening parens.\n        return null\n    }\n    return null\n}\n\nfunction parseVBindArg(tokenizer: CSSTokenScanner): {\n    exprRange: OffsetRange\n    quote: '\"' | \"'\" | null\n    closingParen: CSSPunctuatorToken\n    comments: CSSCommentToken[]\n} | null {\n    const tokensBuffer: CSSToken[] = []\n    const comments: CSSCommentToken[] = []\n    const tokens: CSSToken[] = []\n    const closeTokenStack: string[] = []\n    let token\n    while ((token = tokenizer.nextToken())) {\n        if (token.type === CSSTokenType.Punctuator) {\n            if (token.value === \")\" && !closeTokenStack.length) {\n                if (\n                    tokens.length === 1 &&\n                    tokens[0].type === CSSTokenType.Quoted\n                ) {\n                    // for v-bind( 'expr' ), and v-bind( /**/ 'expr' /**/ )\n                    const quotedToken = tokens[0]\n                    return {\n                        exprRange: quotedToken.valueRange,\n                        quote: quotedToken.quote,\n                        closingParen: token,\n                        comments,\n                    }\n                }\n                const startToken = tokensBuffer[0] || token\n                return {\n                    exprRange: [startToken.range[0], token.range[0]],\n                    quote: null,\n                    closingParen: token,\n                    comments: [],\n                }\n            }\n\n            if (token.value === closeTokenStack[0]) {\n                closeTokenStack.shift()\n            } else if (token.value === \"(\") {\n                closeTokenStack.unshift(\")\")\n            }\n        }\n\n        tokensBuffer.push(token)\n        if (isComment(token)) {\n            comments.push(token)\n        } else {\n            tokens.push(token)\n        }\n    }\n    tokenizer.reconsume(...tokensBuffer)\n    return null\n}\n\nfunction isComment(token: CSSToken): token is CSSCommentToken {\n    return token.type === CSSTokenType.Block || token.type === CSSTokenType.Line\n}\n","import type * as escopeTypes from \"eslint-scope\"\nimport type { ParserOptions } from \"../common/parser-options\"\nimport type {\n    Reference,\n    VAttribute,\n    VDirective,\n    VDocumentFragment,\n    VElement,\n    VExpressionContainer,\n} from \"../ast\"\nimport { traverseNodes } from \"../ast\"\nimport { getEslintScope } from \"../common/eslint-scope\"\nimport {\n    findGenericDirective,\n    isScriptElement,\n    isScriptSetupElement,\n} from \"../common/ast-utils\"\nimport { camelize } from \"../utils/utils\"\n\nconst BUILTIN_COMPONENTS = new Set([\n    \"template\",\n    \"slot\",\n    \"component\",\n    \"Component\",\n    \"transition\",\n    \"Transition\",\n    \"transition-group\",\n    \"TransitionGroup\",\n    \"keep-alive\",\n    \"KeepAlive\",\n    \"teleport\",\n    \"Teleport\",\n    \"suspense\",\n    \"Suspense\",\n])\n\nconst BUILTIN_DIRECTIVES = new Set([\n    \"bind\",\n    \"on\",\n    \"text\",\n    \"html\",\n    \"show\",\n    \"if\",\n    \"else\",\n    \"else-if\",\n    \"for\",\n    \"model\",\n    \"slot\",\n    \"pre\",\n    \"cloak\",\n    \"once\",\n    \"memo\",\n    \"is\",\n])\n\n/**\n * @see https://github.com/vuejs/core/blob/48de8a42b7fed7a03f7f1ff5d53d6a704252cafe/packages/shared/src/domTagConfig.ts#L5-L28\n */\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Element\nconst HTML_TAGS =\n    \"html,body,base,head,link,meta,style,title,address,article,aside,footer,\" +\n    \"header,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,\" +\n    \"figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,\" +\n    \"data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,\" +\n    \"time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,\" +\n    \"canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,\" +\n    \"th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,\" +\n    \"option,output,progress,select,textarea,details,dialog,menu,\" +\n    \"summary,template,blockquote,iframe,tfoot\"\n\n// https://developer.mozilla.org/en-US/docs/Web/SVG/Element\nconst SVG_TAGS =\n    \"svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,\" +\n    \"defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,\" +\n    \"feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,\" +\n    \"feDistanceLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,\" +\n    \"feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,\" +\n    \"fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,\" +\n    \"foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,\" +\n    \"mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,\" +\n    \"polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,\" +\n    \"text,textPath,title,tspan,unknown,use,view\"\n\nconst NATIVE_TAGS = new Set([...HTML_TAGS.split(\",\"), ...SVG_TAGS.split(\",\")])\n\nconst COMPILER_MACROS_AT_ROOT = new Set([\n    \"defineProps\",\n    \"defineEmits\",\n    \"defineExpose\",\n    \"withDefaults\",\n    // Added in Vue 3.3\n    \"defineOptions\",\n    \"defineSlots\",\n    // Added in Vue 3.4\n    \"defineModel\",\n])\n\nfunction capitalize(str: string) {\n    return str[0].toUpperCase() + str.slice(1)\n}\n\n/**\n * Analyze `<script setup>` scope.\n * This method does the following process:\n *\n * 1. Add a virtual reference to the variables used in the template to mark them as used.\n * (This is the same way typescript-eslint marks a `React` variable.)\n *\n * 2. If compiler macros were used, add these variables as global variables.\n */\nexport function analyzeScriptSetupScope(\n    scopeManager: escopeTypes.ScopeManager,\n    templateBody: VElement | undefined,\n    df: VDocumentFragment,\n    parserOptions: ParserOptions,\n): void {\n    analyzeUsedInTemplateVariables(scopeManager, templateBody, df)\n\n    analyzeScriptSetupVariables(scopeManager, df, parserOptions)\n}\n\nfunction extractVariables(scopeManager: escopeTypes.ScopeManager) {\n    const scriptVariables = new Map<string, escopeTypes.Variable>()\n    const globalScope = scopeManager.globalScope\n    if (!globalScope) {\n        return scriptVariables\n    }\n    for (const variable of globalScope.variables) {\n        scriptVariables.set(variable.name, variable)\n    }\n    const moduleScope = globalScope.childScopes.find(\n        (scope) => scope.type === \"module\",\n    )\n    for (const variable of (moduleScope && moduleScope.variables) || []) {\n        scriptVariables.set(variable.name, variable)\n    }\n    return scriptVariables\n}\n\n/**\n * Analyze the variables used in the template.\n * Add a virtual reference to the variables used in the template to mark them as used.\n * (This is the same way typescript-eslint marks a `React` variable.)\n */\nfunction analyzeUsedInTemplateVariables(\n    scopeManager: escopeTypes.ScopeManager,\n    templateBody: VElement | undefined,\n    df: VDocumentFragment,\n) {\n    const scriptVariables = extractVariables(scopeManager)\n\n    const markedVariables = new Set<string>()\n\n    /**\n     * @see https://github.com/vuejs/vue-next/blob/48de8a42b7fed7a03f7f1ff5d53d6a704252cafe/packages/compiler-core/src/transforms/transformElement.ts#L335\n     */\n    function markSetupReferenceVariableAsUsed(name: string) {\n        if (scriptVariables.has(name)) {\n            markVariableAsUsed(name)\n            return true\n        }\n        const camelName = camelize(name)\n        if (scriptVariables.has(camelName)) {\n            markVariableAsUsed(camelName)\n            return true\n        }\n        const pascalName = capitalize(camelName)\n        if (scriptVariables.has(pascalName)) {\n            markVariableAsUsed(pascalName)\n            return true\n        }\n        return false\n    }\n\n    function markVariableAsUsed(nameOrRef: string | Reference) {\n        let name: string\n        let isValueReference: boolean | undefined\n        let isTypeReference: boolean | undefined\n        if (typeof nameOrRef === \"string\") {\n            name = nameOrRef\n        } else {\n            name = nameOrRef.id.name\n            isValueReference = nameOrRef.isValueReference\n            isTypeReference = nameOrRef.isTypeReference\n        }\n        const variable = scriptVariables.get(name)\n        if (!variable || variable.identifiers.length === 0) {\n            return\n        }\n        if (markedVariables.has(name)) {\n            return\n        }\n        markedVariables.add(name)\n\n        const reference = new (getEslintScope().Reference)()\n        ;(reference as any).vueUsedInTemplate = true // Mark for debugging.\n        reference.from = variable.scope\n        reference.identifier = variable.identifiers[0]\n        reference.isWrite = () => false\n        reference.isWriteOnly = () => false\n        reference.isRead = () => true\n        reference.isReadOnly = () => true\n        reference.isReadWrite = () => false\n        // For typescript-eslint\n        reference.isValueReference = isValueReference\n        reference.isTypeReference = isTypeReference\n\n        variable.references.push(reference)\n        reference.resolved = variable\n\n        if (reference.isTypeReference) {\n            // @typescript-eslint/no-unused-vars treats type references at the same position as recursive references,\n            // so without this flag it will be marked as unused.\n            ;(variable as any).eslintUsed = true\n        }\n    }\n\n    function processVExpressionContainer(node: VExpressionContainer) {\n        for (const reference of node.references.filter(\n            (ref) => ref.variable == null,\n        )) {\n            markVariableAsUsed(reference)\n        }\n    }\n\n    function processVElement(node: VElement) {\n        if (\n            (node.rawName === node.name && NATIVE_TAGS.has(node.rawName)) ||\n            BUILTIN_COMPONENTS.has(node.rawName)\n        ) {\n            return\n        }\n        if (!markSetupReferenceVariableAsUsed(node.rawName)) {\n            // Check namespace\n            // https://github.com/vuejs/vue-next/blob/48de8a42b7fed7a03f7f1ff5d53d6a704252cafe/packages/compiler-core/src/transforms/transformElement.ts#L306\n            const dotIndex = node.rawName.indexOf(\".\")\n            if (dotIndex > 0) {\n                markSetupReferenceVariableAsUsed(\n                    node.rawName.slice(0, dotIndex),\n                )\n            }\n        }\n    }\n\n    function processVAttribute(node: VAttribute | VDirective) {\n        if (node.directive) {\n            if (BUILTIN_DIRECTIVES.has(node.key.name.name)) {\n                return\n            }\n            markSetupReferenceVariableAsUsed(`v-${node.key.name.rawName}`)\n        } else if (node.key.name === \"ref\" && node.value) {\n            markVariableAsUsed(node.value.value)\n        }\n    }\n\n    if (templateBody) {\n        // Analyze `<template>`\n        traverseNodes(templateBody, {\n            enterNode(node) {\n                if (node.type === \"VExpressionContainer\") {\n                    processVExpressionContainer(node)\n                } else if (node.type === \"VElement\") {\n                    processVElement(node)\n                } else if (node.type === \"VAttribute\") {\n                    processVAttribute(node)\n                }\n            },\n            leaveNode() {\n                /* noop */\n            },\n        })\n    }\n\n    for (const child of df.children) {\n        if (child.type === \"VElement\") {\n            if (isScriptSetupElement(child)) {\n                // Analyze <script setup lang=\"ts\" generic=\"...\">\n                const generic = findGenericDirective(child)\n                if (generic) {\n                    processVExpressionContainer(generic.value)\n                }\n            } else if (child.name === \"style\") {\n                // Analyze CSS v-bind()\n                for (const node of child.children) {\n                    if (node.type === \"VExpressionContainer\") {\n                        processVExpressionContainer(node)\n                    }\n                }\n            }\n        }\n    }\n}\n\n/**\n * Analyze <script setup> variables.\n * - Analyze compiler macros.\n *   If compiler macros were used, add these variables as global variables.\n * - Generic variables.\n *   If defined generics are used, add these variables as global variables.\n */\nfunction analyzeScriptSetupVariables(\n    scopeManager: escopeTypes.ScopeManager,\n    df: VDocumentFragment,\n    parserOptions: ParserOptions,\n) {\n    const globalScope = scopeManager.globalScope\n    if (!globalScope) {\n        return\n    }\n    const customMacros = new Set(\n        parserOptions.vueFeatures?.customMacros &&\n        Array.isArray(parserOptions.vueFeatures.customMacros)\n            ? parserOptions.vueFeatures.customMacros\n            : [],\n    )\n\n    const genericDefineNames = new Set<string>()\n    const scriptElements = df.children.filter(isScriptElement)\n    const scriptSetupElement = scriptElements.find(isScriptSetupElement)\n    if (scriptSetupElement && findGenericDirective(scriptSetupElement)) {\n        for (const variable of scriptSetupElement.variables) {\n            if (variable.kind === \"generic\") {\n                genericDefineNames.add(variable.id.name)\n            }\n        }\n    }\n\n    const newThrough: escopeTypes.Reference[] = []\n    for (const reference of globalScope.through) {\n        if (\n            COMPILER_MACROS_AT_ROOT.has(reference.identifier.name) ||\n            customMacros.has(reference.identifier.name)\n        ) {\n            if (\n                reference.from.type === \"global\" ||\n                reference.from.type === \"module\"\n            ) {\n                addCompilerMacroVariable(reference)\n                // This reference is removed from `Scope#through`.\n                continue\n            }\n        }\n        if (genericDefineNames.has(reference.identifier.name)) {\n            addGenericVariable(reference)\n            // This reference is removed from `Scope#through`.\n            continue\n        }\n\n        newThrough.push(reference)\n    }\n\n    globalScope.through = newThrough\n\n    function addCompilerMacroVariable(reference: escopeTypes.Reference) {\n        addVariable(globalScope, reference)\n    }\n\n    function addGenericVariable(reference: escopeTypes.Reference) {\n        addVariable(globalScope, reference)\n    }\n}\n\nfunction addVariable(\n    scope: escopeTypes.Scope,\n    reference: escopeTypes.Reference,\n) {\n    const name = reference.identifier.name\n    let variable = scope.set.get(name)\n    if (!variable) {\n        variable = new (getEslintScope().Variable)()\n        variable.name = name\n        variable.scope = scope\n        scope.variables.push(variable)\n        scope.set.set(name, variable)\n    }\n    // Links the variable and the reference.\n    reference.resolved = variable\n    variable.references.push(reference)\n}\n","/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * @copyright 2017 Toru Nagashima. All rights reserved.\n * See LICENSE file in root directory for full license.\n */\nimport * as path from \"path\"\nimport * as AST from \"./ast\"\nimport { LocationCalculatorForHtml } from \"./common/location-calculator\"\nimport { HTMLParser, HTMLTokenizer } from \"./html\"\nimport { parseScript, parseScriptElement } from \"./script\"\nimport * as services from \"./parser-services\"\nimport type { ParserOptions } from \"./common/parser-options\"\nimport { getScriptParser, getParserLangFromSFC } from \"./common/parser-options\"\nimport { parseScriptSetupElements } from \"./script-setup\"\nimport { LinesAndColumns } from \"./common/lines-and-columns\"\nimport type { VElement } from \"./ast\"\nimport { DEFAULT_ECMA_VERSION } from \"./script-setup/parser-options\"\nimport {\n    getLang,\n    isScriptElement,\n    isScriptSetupElement,\n    isStyleElement,\n    isTemplateElement,\n} from \"./common/ast-utils\"\nimport { parseStyleElements } from \"./style\"\nimport { analyzeScope } from \"./script/scope-analyzer\"\nimport { analyzeScriptSetupScope } from \"./script-setup/scope-analyzer\"\n\nconst STARTS_WITH_LT = /^\\s*</u\n\n/**\n * Check whether the code is a Vue.js component.\n * @param code The source code to check.\n * @param options The parser options.\n * @returns `true` if the source code is a Vue.js component.\n */\nfunction isVueFile(code: string, options: ParserOptions): boolean {\n    const filePath = options.filePath || \"unknown.js\"\n    return path.extname(filePath) === \".vue\" || STARTS_WITH_LT.test(code)\n}\n\n/**\n * Parse the given source code.\n * @param code The source code to parse.\n * @param parserOptions The parser options.\n * @returns The parsing result.\n */\nexport function parseForESLint(\n    code: string,\n    parserOptions: any,\n): AST.ESLintExtendedProgram {\n    const options: ParserOptions = Object.assign(\n        {\n            comment: true,\n            loc: true,\n            range: true,\n            tokens: true,\n        },\n        parserOptions || {},\n    )\n\n    let result: AST.ESLintExtendedProgram\n    let document: AST.VDocumentFragment | null\n    let locationCalculator: LocationCalculatorForHtml | null\n    if (!isVueFile(code, options)) {\n        result = parseAsScript(code, options)\n        document = null\n        locationCalculator = null\n    } else {\n        ;({ result, document, locationCalculator } = parseAsSFC(code, options))\n    }\n\n    result.services = Object.assign(\n        result.services || {},\n        services.define(code, result.ast, document, locationCalculator, {\n            parserOptions: options,\n        }),\n    )\n\n    return result\n}\n\n/**\n * Parse the given source code.\n * @param code The source code to parse.\n * @param options The parser options.\n * @returns The parsing result.\n */\nexport function parse(code: string, options: any): AST.ESLintProgram {\n    return parseForESLint(code, options).ast\n}\n\nexport { AST }\n\nfunction parseAsSFC(code: string, options: ParserOptions) {\n    const optionsForTemplate = {\n        ...options,\n        ecmaVersion: options.ecmaVersion || DEFAULT_ECMA_VERSION,\n    }\n    const skipParsingScript = options.parser === false\n    const tokenizer = new HTMLTokenizer(code, optionsForTemplate)\n    const rootAST = new HTMLParser(tokenizer, optionsForTemplate).parse()\n\n    const locationCalculator = new LocationCalculatorForHtml(\n        tokenizer.gaps,\n        tokenizer.lineTerminators,\n    )\n    const scripts = rootAST.children.filter(isScriptElement)\n    const template = rootAST.children.find(isTemplateElement)\n    const templateLang = getLang(template) || \"html\"\n    const hasTemplateTokenizer = options?.templateTokenizer?.[templateLang]\n    const concreteInfo: AST.HasConcreteInfo = {\n        tokens: rootAST.tokens,\n        comments: rootAST.comments,\n        errors: rootAST.errors,\n    }\n    const templateBody =\n        template != null && (templateLang === \"html\" || hasTemplateTokenizer)\n            ? Object.assign(template, concreteInfo)\n            : undefined\n\n    const scriptParser = getScriptParser(options.parser, () =>\n        getParserLangFromSFC(rootAST),\n    )\n    let result: AST.ESLintExtendedProgram\n    let scriptSetup: VElement | undefined\n    if (skipParsingScript || !scripts.length) {\n        result = parseScript(\"\", {\n            ...options,\n            ecmaVersion: options.ecmaVersion || DEFAULT_ECMA_VERSION,\n            parser: scriptParser,\n        })\n    } else if (\n        scripts.length === 2 &&\n        (scriptSetup = scripts.find(isScriptSetupElement))\n    ) {\n        result = parseScriptSetupElements(\n            scriptSetup,\n            scripts.find((e) => e !== scriptSetup)!,\n            code,\n            new LinesAndColumns(tokenizer.lineTerminators),\n            {\n                ...options,\n                parser: scriptParser,\n            },\n        )\n    } else {\n        result = parseScriptElement(\n            scripts[0],\n            code,\n            new LinesAndColumns(tokenizer.lineTerminators),\n            {\n                ...options,\n                parser: scriptParser,\n            },\n        )\n    }\n\n    if (options.vueFeatures?.styleCSSVariableInjection ?? true) {\n        const styles = rootAST.children.filter(isStyleElement)\n        parseStyleElements(styles, locationCalculator, {\n            ...options,\n            parser: getScriptParser(options.parser, function* () {\n                yield \"<template>\"\n                yield getParserLangFromSFC(rootAST)\n            }),\n        })\n    }\n    result.ast.templateBody = templateBody\n\n    if (options.eslintScopeManager) {\n        if (scripts.some(isScriptSetupElement)) {\n            if (!result.scopeManager) {\n                result.scopeManager = analyzeScope(result.ast, options)\n            }\n            analyzeScriptSetupScope(\n                result.scopeManager,\n                templateBody,\n                rootAST,\n                options,\n            )\n        }\n    }\n\n    return {\n        result,\n        locationCalculator,\n        document: rootAST,\n    }\n}\n\nfunction parseAsScript(code: string, options: ParserOptions) {\n    return parseScript(code, {\n        ...options,\n        ecmaVersion: options.ecmaVersion || DEFAULT_ECMA_VERSION,\n        parser: getScriptParser(options.parser, () => {\n            const ext = (\n                path.extname(options.filePath || \"unknown.js\").toLowerCase() ||\n                \"\"\n            )\n                // remove dot\n                .slice(1)\n            if (/^[jt]sx$/u.test(ext)) {\n                return [ext, ext.slice(0, -1)]\n            }\n\n            return ext\n        }),\n    })\n}\n\nexport const meta = {\n    name: \"vue-eslint-parser\",\n    // eslint-disable-next-line no-process-env\n    version: process.env.PACKAGE_VERSION,\n}\n"],"names":["Evk","sortedLastIndex","debugFactory","path","Module","lte","escope","dependencyEspree","getDefaultEcmaVersion","lt","DUMMY_PARENT","sortedIndexBy","parseScript","last","first","sortedLastIndexBy","getTagName","SVG_TAGS","assert","findLastIndex","union","intersection","esquery","memoize","cursors.forward","cursors.backward","EventEmitter","parseScriptBase","services.define","HTMLTokenizer","HTMLParser"],"mappings":"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AI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,KAAK,CAAC,EAAC,iBAAiB,EAAC,CAAC,KAAK,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,KAAK,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,iBAAiB,EAAC,CAAC,IAAI,CAAC,EAAC,EAAC,EAAC,EAAC,QAAQ,EAAC,EAAE,EAAC,UAAU,EAAC,EAAC,gBAAgB,EAAC,CAAC,IAAI,CAAC,EAAC,gBAAgB,EAAC,CAAC,IAAI,CAAC,EAAC,gBAAgB,EAAC,CAAC,KAAK,CAAC,EAAC,gBAAgB,EAAC,CAAC,IAAI,CAAC,EAAC,gBAAgB,EAAC,CAAC,KAAK,CAAC,EAAC,gBAAgB,EAAC,CAAC,KAAK,CAAC,EAAC,gBAAgB,EAAC,CAAC,IAAI,CAAC,EAAC,gBAAgB,EAAC,CAAC,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AI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,EAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,KAAK,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,KAAK,CAAC,EAAC,aAAa,EAAC,CAAC,KAAK,CAAC,EAAC,aAAa,EAAC,CAAC,KAAK,CAAC,EAAC,aAAa,EAAC,CAAC,KAAK,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,KAAK,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,aAAa,EAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,aAAa,EAAC,CAAC,KAAK,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,KAAK,CAAC,EAAC,aAAa,EAAC,CAAC,KAAK,CAAC,EAAC,aAAa,EAAC,CAAC,KAAK,CAAC,EAAC,aAAa,EAAC,CAAC,IAAI,CAAC,EAAC,aAAa,EAAC,CAAC,IA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AK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,GAAG,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,GAAG,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,KAAK,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,IAAI,CAAC,EAAC,WAAW,EAAC,CAAC,GAAG,CAAC,EAAC,WAAW,EAAC,CAAC,GAAG,CAAC,EAAC,EAAC,EAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,UAAU,EAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,GAAG,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,GAAG,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,EAAE,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,GAAG,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,GAAG,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,EAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,GAAG,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,GAAG,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,EAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,EAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,EAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,EAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,GAAG,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,UAAU,EAAC,CAAC,GAAG,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,EAAC,EAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,UAAU,EAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,EAAE,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,EAAE,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,EAAE,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,EAAE,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,EAAE,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,EAAE,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,EAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,EAAE,CAAC,EAAC,SAAS,EAAC,CAAC,EAAE,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,EAAE,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,EAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,EAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,EAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,EAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,EAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,EAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,IAAI,CAAC,EAAC,EAAC,EAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,UAAU,EAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAE,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAE,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,EAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAE,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,EAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,EAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,EAAE,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,EAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,EAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,EAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,KAAK,CAAC,EAAC,QAAQ,EAAC,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,CAAC,GAAG,CAAC,EAAC,EAAC,EAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,UAAU,EAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,EAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,EAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,EAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,EAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,EAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,EAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,EAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,EAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,EAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,EAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,EAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,EAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,EAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,EAAE,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,GAAG,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,EAAC,OAAO,EAAC,CAAC,IAAI,CAAC,EAAC,EAAC,EAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,UAAU,EAAC,EAAC,MAAM,EAAC,CAAC,EAAE,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,EAAE,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,EAAE,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,EAAE,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,EAAE,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,EAAE,EAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,EAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,EAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,EAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,EAAE,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,EAAE,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,CAAC,EAAC,MAAM,EAAC,CAAC,EAAE,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,MAAM,EAAC,CAAC,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,IAAI,CAAC,EAAC,EAAC,EAAC,EAAC,QAAQ,EAAC,CAAC,EAAC,UAAU,EAAC,EAAC,KAAK,EAAC,CAAC,EAAE,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,EAAE,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,EAAE,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,KAAK,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,KAAK,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,KAAK,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,EAAE,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,KAAK,CAAC,EAAC,KAAK,EAAC,CAAC,KAAK,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,EAAE,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,EAAE,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,IAAI,CAAC,EAAC,KAAK,EAAC,CAAC,GAAG,CAAC,EAAC,KAAK,EAAC,CAAC,GA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"}