/*
 * Copyright JS Foundation and other contributors, https://js.foundation/
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 * 
 *   * Redistributions of source code must retain the above copyright
 *     notice, this list of conditions and the following disclaimer.
 *   * Redistributions in binary form must reproduce the above copyright
 *     notice, this list of conditions and the following disclaimer in the
 *     documentation and/or other materials provided with the distribution.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.esprima=e():t.esprima=e()}(this,(()=>(()=>{"use strict";var t,e={d:(t,s)=>{for(var i in s)e.o(s,i)&&!e.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:s[i]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},s={};e.r(s),e.d(s,{ArrayExpression:()=>A,ArrayPattern:()=>F,ArrowFunctionExpression:()=>y,AssignmentExpression:()=>k,AssignmentPattern:()=>g,AsyncFunctionDeclaration:()=>S,AwaitExpression:()=>w,BigIntLiteral:()=>B,BinaryExpression:()=>b,BlockStatement:()=>T,BreakStatement:()=>v,CallExpression:()=>N,CatchClause:()=>I,ChainExpression:()=>P,ClassBody:()=>z,ClassDeclaration:()=>U,ClassExpression:()=>X,ConditionalExpression:()=>J,ContinueStatement:()=>L,DebuggerStatement:()=>M,Decorator:()=>K,Directive:()=>O,DoWhileStatement:()=>R,EmptyStatement:()=>j,ExportAllDeclaration:()=>G,ExportDefaultDeclaration:()=>H,ExportNamedDeclaration:()=>W,ExportSpecifier:()=>Y,ExpressionStatement:()=>q,ForInStatement:()=>V,ForOfStatement:()=>_,ForStatement:()=>$,FunctionDeclaration:()=>Z,FunctionExpression:()=>Q,Identifier:()=>tt,IfStatement:()=>et,ImportAttribute:()=>st,ImportDeclaration:()=>nt,ImportDefaultSpecifier:()=>rt,ImportExpression:()=>it,ImportNamespaceSpecifier:()=>at,ImportSpecifier:()=>ot,LabeledStatement:()=>ht,Literal:()=>ut,LogicalExpression:()=>ct,MemberExpression:()=>lt,MetaProperty:()=>pt,MethodDefinition:()=>Dt,Module:()=>dt,NewExpression:()=>mt,Nodes:()=>Ht,ObjectExpression:()=>xt,ObjectPattern:()=>Et,PrivateIdentifier:()=>Ct,Program:()=>ft,Property:()=>At,PropertyDefinition:()=>Ft,RegexLiteral:()=>yt,RestElement:()=>kt,ReturnStatement:()=>gt,Script:()=>St,SequenceExpression:()=>wt,SpreadElement:()=>Bt,StaticBlock:()=>bt,Super:()=>Tt,SwitchCase:()=>vt,SwitchStatement:()=>Nt,Syntax:()=>t,TaggedTemplateExpression:()=>It,TemplateElement:()=>Pt,TemplateLiteral:()=>zt,ThisExpression:()=>Ut,ThrowStatement:()=>Xt,TryStatement:()=>Jt,UnaryExpression:()=>Lt,UpdateExpression:()=>Mt,VariableDeclaration:()=>Kt,VariableDeclarator:()=>Ot,WhileStatement:()=>Rt,WithStatement:()=>jt,YieldExpression:()=>Gt,default:()=>Ie,parse:()=>Be,parseModule:()=>be,parseScript:()=>Te,tokenize:()=>ve,version:()=>Ne}),function(t){t.AssignmentExpression="AssignmentExpression",t.AssignmentPattern="AssignmentPattern",t.ArrayExpression="ArrayExpression",t.ArrayPattern="ArrayPattern",t.ArrowFunctionExpression="ArrowFunctionExpression",t.AwaitExpression="AwaitExpression",t.BlockStatement="BlockStatement",t.BinaryExpression="BinaryExpression",t.BreakStatement="BreakStatement",t.CallExpression="CallExpression",t.CatchClause="CatchClause",t.ChainExpression="ChainExpression",t.ClassBody="ClassBody",t.ClassDeclaration="ClassDeclaration",t.ClassExpression="ClassExpression",t.ConditionalExpression="ConditionalExpression",t.ContinueStatement="ContinueStatement",t.Decorator="Decorator",t.DoWhileStatement="DoWhileStatement",t.DebuggerStatement="DebuggerStatement",t.EmptyStatement="EmptyStatement",t.ExportAllDeclaration="ExportAllDeclaration",t.ExportDefaultDeclaration="ExportDefaultDeclaration",t.ExportNamedDeclaration="ExportNamedDeclaration",t.ExportSpecifier="ExportSpecifier",t.ExpressionStatement="ExpressionStatement",t.ForStatement="ForStatement",t.ForOfStatement="ForOfStatement",t.ForInStatement="ForInStatement",t.FunctionDeclaration="FunctionDeclaration",t.FunctionExpression="FunctionExpression",t.Identifier="Identifier",t.IfStatement="IfStatement",t.ImportAttribute="ImportAttribute",t.ImportExpression="ImportExpression",t.ImportDeclaration="ImportDeclaration",t.ImportDefaultSpecifier="ImportDefaultSpecifier",t.ImportNamespaceSpecifier="ImportNamespaceSpecifier",t.ImportSpecifier="ImportSpecifier",t.Literal="Literal",t.LabeledStatement="LabeledStatement",t.LogicalExpression="LogicalExpression",t.MemberExpression="MemberExpression",t.MetaProperty="MetaProperty",t.MethodDefinition="MethodDefinition",t.NewExpression="NewExpression",t.ObjectExpression="ObjectExpression",t.ObjectPattern="ObjectPattern",t.Program="Program",t.Property="Property",t.PrivateIdentifier="PrivateIdentifier",t.RestElement="RestElement",t.ReturnStatement="ReturnStatement",t.SequenceExpression="SequenceExpression",t.SpreadElement="SpreadElement",t.StaticBlock="StaticBlock",t.Super="Super",t.SwitchCase="SwitchCase",t.SwitchStatement="SwitchStatement",t.TaggedTemplateExpression="TaggedTemplateExpression",t.TemplateElement="TemplateElement",t.TemplateLiteral="TemplateLiteral",t.ThisExpression="ThisExpression",t.ThrowStatement="ThrowStatement",t.TryStatement="TryStatement",t.UnaryExpression="UnaryExpression",t.UpdateExpression="UpdateExpression",t.VariableDeclaration="VariableDeclaration",t.VariableDeclarator="VariableDeclarator",t.WhileStatement="WhileStatement",t.WithStatement="WithStatement",t.YieldExpression="YieldExpression"}(t||(t={}));class i{constructor(){this.attach=!1,this.comments=[],this.stack=[],this.leading=[],this.trailing=[]}insertInnerComments(e,s){if(e.type===t.BlockStatement&&0===e.body.length){const t=[];for(let e=this.leading.length-1;e>=0;--e){const i=this.leading[e];s.end.offset>=i.start&&(t.unshift(i.comment),this.leading.splice(e,1),this.trailing.splice(e,1))}t.length&&(e.innerComments=t)}}findTrailingComments(t){let e=[];if(this.trailing.length>0){for(let s=this.trailing.length-1;s>=0;--s){const i=this.trailing[s];i.start>=t.end.offset&&e.unshift(i.comment)}return this.trailing.length=0,e}const s=this.stack[this.stack.length-1];if(s&&s.node.trailingComments){const i=s.node.trailingComments[0];i&&i.range[0]>=t.end.offset&&(e=s.node.trailingComments,delete s.node.trailingComments)}return e}findLeadingComments(t){const e=[];let s;for(;this.stack.length>0;){const e=this.stack[this.stack.length-1];if(!(e&&e.start>=t.start.offset))break;s=e.node,this.stack.pop()}if(s){for(let i=(s.leadingComments?s.leadingComments.length:0)-1;i>=0;--i){const n=s.leadingComments[i];n.range[1]<=t.start.offset&&(e.unshift(n),s.leadingComments.splice(i,1))}return s.leadingComments&&0===s.leadingComments.length&&delete s.leadingComments,e}for(let s=this.leading.length-1;s>=0;--s){const i=this.leading[s];i.start<=t.start.offset&&(e.unshift(i.comment),this.leading.splice(s,1))}return e}visitNode(e,s){if(e.type===t.Program&&e.body.length>0)return;this.insertInnerComments(e,s);const i=this.findTrailingComments(s),n=this.findLeadingComments(s);n.length>0&&(e.leadingComments=n),i.length>0&&(e.trailingComments=i),this.stack.push({node:e,start:s.start.offset})}visitComment(t,e){const s="L"===t.type[0]?"Line":"Block",i={type:s,value:t.value};if(t.range&&(i.range=t.range),t.loc&&(i.loc=t.loc),this.comments.push(i),this.attach){const i={comment:{type:s,value:t.value,range:[e.start.offset,e.end.offset]},start:e.start.offset};t.loc&&(i.comment.loc=t.loc),t.type=s,this.leading.push(i),this.trailing.push(i)}}visit(t,e){"LineComment"===t.type||"BlockComment"===t.type?this.visitComment(t,e):this.attach&&this.visitNode(t,e)}}const n={NonAsciiIdentifierStart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEF\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7BF\uA7C2-\uA7C6\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB67\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDEC0-\uDEEB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,NonAsciiIdentifierPart:/[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05EF-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u07FD\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D3-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u09FE\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1878\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CD0-\u1CD2\u1CD4-\u1CFA\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEF\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7BF\uA7C2-\uA7C6\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB67\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD27\uDD30-\uDD39\uDF00-\uDF1C\uDF27\uDF30-\uDF50\uDFE0-\uDFF6]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD44-\uDD46\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDC9-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3B-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC5E\uDC5F\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB8\uDEC0-\uDEC9\uDF00-\uDF1A\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDC00-\uDC3A\uDCA0-\uDCE9\uDCFF\uDDA0-\uDDA7\uDDAA-\uDDD7\uDDDA-\uDDE1\uDDE3\uDDE4\uDE00-\uDE3E\uDE47\uDE50-\uDE99\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD8E\uDD90\uDD91\uDD93-\uDD98\uDDA0-\uDDA9\uDEE0-\uDEF6]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF4F-\uDF87\uDF8F-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A\uDD00-\uDD2C\uDD30-\uDD3D\uDD40-\uDD49\uDD4E\uDEC0-\uDEF9]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4B\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/},r={fromCodePoint:t=>t<65536?String.fromCharCode(t):String.fromCharCode(55296+(t-65536>>10))+String.fromCharCode(56320+(t-65536&1023)),isStringWellFormedUnicode(t){for(let e=0;e<t.length;e++){let s=t.charCodeAt(e);if(s>=55296&&s<=56319){if(e===t.length-1)return!1;if(e++,s=t.charCodeAt(e),s<56320&&s>57343)return!1}else if(s>=56320&&s<=57343)return!1}return!0},isWhiteSpace:t=>32===t||9===t||11===t||12===t||160===t||t>=5760&&[5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(t)>=0,isLineTerminator:t=>10===t||13===t||8232===t||8233===t,isIdentifierStart:t=>36===t||95===t||t>=65&&t<=90||t>=97&&t<=122||92===t||t>=128&&n.NonAsciiIdentifierStart.test(r.fromCodePoint(t)),isIdentifierPart:t=>36===t||95===t||t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57||92===t||t>=128&&n.NonAsciiIdentifierPart.test(r.fromCodePoint(t)),isDecimalDigit:t=>t>=48&&t<=57,isDecimalDigitChar:t=>1===t.length&&r.isDecimalDigit(t.charCodeAt(0)),isHexDigit:t=>t>=48&&t<=57||t>=65&&t<=70||t>=97&&t<=102,isHexDigitChar:t=>1===t.length&&r.isHexDigit(t.charCodeAt(0)),isOctalDigit:t=>t>=48&&t<=55,isOctalDigitChar:t=>1===t.length&&r.isOctalDigit(t.charCodeAt(0))};var a;!function(t){t.JSXAttribute="JSXAttribute",t.JSXClosingElement="JSXClosingElement",t.JSXClosingFragment="JSXClosingFragment",t.JSXElement="JSXElement",t.JSXEmptyExpression="JSXEmptyExpression",t.JSXExpressionContainer="JSXExpressionContainer",t.JSXIdentifier="JSXIdentifier",t.JSXMemberExpression="JSXMemberExpression",t.JSXNamespacedName="JSXNamespacedName",t.JSXOpeningElement="JSXOpeningElement",t.JSXOpeningFragment="JSXOpeningFragment",t.JSXSpreadAttribute="JSXSpreadAttribute",t.JSXText="JSXText"}(a||(a={}));class o{constructor(t){this.type=a.JSXClosingElement,this.name=t}}class h{constructor(){this.type=a.JSXClosingFragment}}class u{constructor(t,e,s){this.type=a.JSXElement,this.openingElement=t,this.children=e,this.closingElement=s}}class c{constructor(){this.type=a.JSXEmptyExpression}}class l{constructor(t){this.type=a.JSXExpressionContainer,this.expression=t}}class p{constructor(t){this.type=a.JSXIdentifier,this.name=t}}class D{constructor(t,e){this.type=a.JSXMemberExpression,this.object=t,this.property=e}}class d{constructor(t,e){this.type=a.JSXAttribute,this.name=t,this.value=e}}class m{constructor(t,e){this.type=a.JSXNamespacedName,this.namespace=t,this.name=e}}class x{constructor(t,e,s){this.type=a.JSXOpeningElement,this.name=t,this.selfClosing=e,this.attributes=s}}class E{constructor(t){this.type=a.JSXOpeningFragment,this.selfClosing=t}}class C{constructor(t){this.type=a.JSXSpreadAttribute,this.argument=t}}class f{constructor(t,e){this.type=a.JSXText,this.value=t,this.raw=e}}class A{constructor(e){this.type=t.ArrayExpression,this.elements=e}}class F{constructor(e){this.type=t.ArrayPattern,this.elements=e}}class y{constructor(e,s,i,n){this.type=t.ArrowFunctionExpression,this.id=null,this.params=e,this.body=s,this.generator=!1,this.expression=i,this.async=n}}class k{constructor(e,s,i){this.type=t.AssignmentExpression,this.operator=e,this.left=s,this.right=i}}class g{constructor(e,s){this.type=t.AssignmentPattern,this.left=e,this.right=s}}class S{constructor(e,s,i,n){this.type=t.FunctionDeclaration,this.id=e,this.params=s,this.body=i,this.generator=n,this.expression=!1,this.async=!0}}class w{constructor(e){this.type=t.AwaitExpression,this.argument=e}}class B{constructor(e,s,i){this.type=t.Literal,this.value=e,this.raw=s,this.bigint=i}}class b{constructor(e,s,i){this.type=t.BinaryExpression,this.operator=e,this.left=s,this.right=i}}class T{constructor(e){this.type=t.BlockStatement,this.body=e}}class v{constructor(e){this.type=t.BreakStatement,this.label=e}}class N{constructor(e,s,i){this.type=t.CallExpression,this.callee=e,this.arguments=s,this.optional=i}}class I{constructor(e,s){this.type=t.CatchClause,this.param=e,this.body=s}}class P{constructor(e){this.type=t.ChainExpression,this.expression=e}}class z{constructor(e){this.type=t.ClassBody,this.body=e}}class U{constructor(e,s,i,n){this.type=t.ClassDeclaration,this.id=e,this.superClass=s,this.body=i,this.decorators=n}}class X{constructor(e,s,i,n){this.type=t.ClassExpression,this.id=e,this.superClass=s,this.body=i,this.decorators=n}}class J{constructor(e,s,i){this.type=t.ConditionalExpression,this.test=e,this.consequent=s,this.alternate=i}}class L{constructor(e){this.type=t.ContinueStatement,this.label=e}}class M{constructor(){this.type=t.DebuggerStatement}}class K{constructor(e){this.type=t.Decorator,this.expression=e}}class O{constructor(e,s){this.type=t.ExpressionStatement,this.expression=e,this.directive=s}}class R{constructor(e,s){this.type=t.DoWhileStatement,this.body=e,this.test=s}}class j{constructor(){this.type=t.EmptyStatement}}class G{constructor(e,s,i){this.type=t.ExportAllDeclaration,this.source=e,this.exported=s,this.assertions=i}}class H{constructor(e){this.type=t.ExportDefaultDeclaration,this.declaration=e}}class W{constructor(e,s,i,n){this.type=t.ExportNamedDeclaration,this.declaration=e,this.specifiers=s,this.source=i,this.assertions=n}}class Y{constructor(e,s){this.type=t.ExportSpecifier,this.exported=s,this.local=e}}class q{constructor(e){this.type=t.ExpressionStatement,this.expression=e}}class V{constructor(e,s,i){this.type=t.ForInStatement,this.left=e,this.right=s,this.body=i,this.each=!1}}class _{constructor(e,s,i,n){this.type=t.ForOfStatement,this.await=n,this.left=e,this.right=s,this.body=i}}class ${constructor(e,s,i,n){this.type=t.ForStatement,this.init=e,this.test=s,this.update=i,this.body=n}}class Z{constructor(e,s,i,n){this.type=t.FunctionDeclaration,this.id=e,this.params=s,this.body=i,this.generator=n,this.expression=!1,this.async=!1}}class Q{constructor(e,s,i,n,r){this.type=t.FunctionExpression,this.id=e,this.params=s,this.body=i,this.generator=n,this.expression=!1,this.async=r}}class tt{constructor(e){this.type=t.Identifier,this.name=e}}class et{constructor(e,s,i){this.type=t.IfStatement,this.test=e,this.consequent=s,this.alternate=i}}class st{constructor(e,s){this.type=t.ImportAttribute,this.key=e,this.value=s}}class it{constructor(e,s){this.type=t.ImportExpression,this.source=e,this.attributes=s}}class nt{constructor(e,s,i){this.type=t.ImportDeclaration,this.specifiers=e,this.source=s,this.assertions=i}}class rt{constructor(e){this.type=t.ImportDefaultSpecifier,this.local=e}}class at{constructor(e){this.type=t.ImportNamespaceSpecifier,this.local=e}}class ot{constructor(e,s){this.type=t.ImportSpecifier,this.local=e,this.imported=s}}class ht{constructor(e,s){this.type=t.LabeledStatement,this.label=e,this.body=s}}class ut{constructor(e,s){this.type=t.Literal,this.value=e,this.raw=s}}class ct{constructor(e,s,i){this.type=t.LogicalExpression,this.operator=e,this.left=s,this.right=i}}class lt{constructor(e,s,i,n){this.type=t.MemberExpression,this.computed=e,this.object=s,this.property=i,this.optional=n}}class pt{constructor(e,s){this.type=t.MetaProperty,this.meta=e,this.property=s}}class Dt{constructor(e,s,i,n,r,a){this.type=t.MethodDefinition,this.key=e,this.computed=s,this.value=i,this.kind=n,this.static=r,this.decorators=a}}class dt{constructor(e){this.type=t.Program,this.body=e,this.sourceType="module"}}class mt{constructor(e,s){this.type=t.NewExpression,this.callee=e,this.arguments=s}}class xt{constructor(e){this.type=t.ObjectExpression,this.properties=e}}class Et{constructor(e){this.type=t.ObjectPattern,this.properties=e}}class Ct{constructor(e){this.type=t.PrivateIdentifier,this.name=e}}class ft{constructor(e,s){this.type=t.Program,this.sourceType=e,this.body=s}}class At{constructor(e,s,i,n,r,a){this.type=t.Property,this.key=s,this.computed=i,this.value=n,this.kind=e,this.method=r,this.shorthand=a}}class Ft{constructor(e,s,i,n,r){this.type=t.Property,this.key=e,this.computed=s,this.value=i,this.static=n,this.decorators=r}}class yt{constructor(e,s,i,n){this.type=t.Literal,this.value=e,this.raw=s,this.regex={pattern:i,flags:n}}}class kt{constructor(e){this.type=t.RestElement,this.argument=e}}class gt{constructor(e){this.type=t.ReturnStatement,this.argument=e}}class St{constructor(e){this.type=t.Program,this.body=e,this.sourceType="script"}}class wt{constructor(e){this.type=t.SequenceExpression,this.expressions=e}}class Bt{constructor(e){this.type=t.SpreadElement,this.argument=e}}class bt{constructor(e){this.type=t.StaticBlock,this.body=e}}class Tt{constructor(){this.type=t.Super}}class vt{constructor(e,s){this.type=t.SwitchCase,this.test=e,this.consequent=s}}class Nt{constructor(e,s){this.type=t.SwitchStatement,this.discriminant=e,this.cases=s}}class It{constructor(e,s){this.type=t.TaggedTemplateExpression,this.tag=e,this.quasi=s}}class Pt{constructor(e,s){this.type=t.TemplateElement,this.value=e,this.tail=s}}class zt{constructor(e,s){this.type=t.TemplateLiteral,this.quasis=e,this.expressions=s}}class Ut{constructor(){this.type=t.ThisExpression}}class Xt{constructor(e){this.type=t.ThrowStatement,this.argument=e}}class Jt{constructor(e,s,i){this.type=t.TryStatement,this.block=e,this.handler=s,this.finalizer=i}}class Lt{constructor(e,s){this.type=t.UnaryExpression,this.operator=e,this.argument=s,this.prefix=!0}}class Mt{constructor(e,s,i){this.type=t.UpdateExpression,this.operator=e,this.argument=s,this.prefix=i}}class Kt{constructor(e,s){this.type=t.VariableDeclaration,this.declarations=e,this.kind=s}}class Ot{constructor(e,s){this.type=t.VariableDeclarator,this.id=e,this.init=s}}class Rt{constructor(e,s){this.type=t.WhileStatement,this.test=e,this.body=s}}class jt{constructor(e,s){this.type=t.WithStatement,this.object=e,this.body=s}}class Gt{constructor(e,s){this.type=t.YieldExpression,this.argument=e,this.delegate=s}}var Ht=Object.freeze({__proto__:null,ArrayExpression:A,ArrayPattern:F,ArrowFunctionExpression:y,AssignmentExpression:k,AssignmentPattern:g,AsyncFunctionDeclaration:S,AwaitExpression:w,BigIntLiteral:B,BinaryExpression:b,BlockStatement:T,BreakStatement:v,CallExpression:N,CatchClause:I,ChainExpression:P,ClassBody:z,ClassDeclaration:U,ClassExpression:X,ConditionalExpression:J,ContinueStatement:L,DebuggerStatement:M,Decorator:K,Directive:O,DoWhileStatement:R,EmptyStatement:j,ExportAllDeclaration:G,ExportDefaultDeclaration:H,ExportNamedDeclaration:W,ExportSpecifier:Y,ExpressionStatement:q,ForInStatement:V,ForOfStatement:_,ForStatement:$,FunctionDeclaration:Z,FunctionExpression:Q,Identifier:tt,IfStatement:et,ImportAttribute:st,ImportExpression:it,ImportDeclaration:nt,ImportDefaultSpecifier:rt,ImportNamespaceSpecifier:at,ImportSpecifier:ot,LabeledStatement:ht,Literal:ut,LogicalExpression:ct,MemberExpression:lt,MetaProperty:pt,MethodDefinition:Dt,Module:dt,NewExpression:mt,ObjectExpression:xt,ObjectPattern:Et,PrivateIdentifier:Ct,Program:ft,Property:At,PropertyDefinition:Ft,RegexLiteral:yt,RestElement:kt,ReturnStatement:gt,Script:St,SequenceExpression:wt,SpreadElement:Bt,StaticBlock:bt,Super:Tt,SwitchCase:vt,SwitchStatement:Nt,TaggedTemplateExpression:It,TemplateElement:Pt,TemplateLiteral:zt,ThisExpression:Ut,ThrowStatement:Xt,TryStatement:Jt,UnaryExpression:Lt,UpdateExpression:Mt,VariableDeclaration:Kt,VariableDeclarator:Ot,WhileStatement:Rt,WithStatement:jt,YieldExpression:Gt});function Wt(t,e){if(!t)throw new Error("ASSERT: "+e)}class Yt{constructor(){this.errors=[],this.tolerant=!1}recordError(t){this.errors.push(t)}tolerate(t){if(!this.tolerant)throw t;this.recordError(t)}constructError(t,e){let s=new Error(t);try{throw s}catch(t){Object.create&&Object.defineProperty&&(s=Object.create(t),Object.defineProperty(s,"column",{value:e}))}return s}createError(t,e,s,i){const n="Line "+e+": "+i,r=this.constructError(n,s);return r.index=t,r.lineNumber=e,r.description=i,r}throwError(t,e,s,i){throw this.createError(t,e,s,i)}tolerateError(t,e,s,i){const n=this.createError(t,e,s,i);if(!this.tolerant)throw n;this.recordError(n)}}const qt="Duplicate parameter name not allowed in this context",Vt="Unexpected token",_t="Unexpected token",$t="Keyword must not contain escaped characters",Zt="Invalid hexadecimal escape sequence",Qt="Invalid left-hand side in assignment",te="Unexpected token",ee="Invalid regular expression",se="Invalid tagged template on optional chain",ie="Unexpected token",ne="The `as` and `from` contextual keywords must not contain Unicode escape sequences.",re="Numeric separator is not allowed here",ae="In strict mode code, functions can only be declared at top level or inside a block",oe="Function name may not be eval or arguments in strict mode",he="Octal literals are not allowed in strict mode.",ue="Parameter name eval or arguments is not allowed in strict mode",ce="Use of future reserved word in strict mode",le="Variable name may not be eval or arguments in strict mode",pe="Unexpected token %0",De="Undefined label '%0'",de="Invalid regular expression: missing /";function me(t){return"0123456789abcdef".indexOf(t.toLowerCase())}function xe(t){return"01234567".indexOf(t)}class Ee{constructor(t,e){this.source=t,this.errorHandler=e,this.trackComment=!1,this.isModule=!1,this.length=t.length,this.index=0,this.lineNumber=t.length>0?1:0,this.lineStart=0,this.curlyStack=[]}saveState(){return{index:this.index,lineNumber:this.lineNumber,lineStart:this.lineStart,curlyStack:this.curlyStack.slice()}}restoreState(t){this.index=t.index,this.lineNumber=t.lineNumber,this.lineStart=t.lineStart,this.curlyStack=t.curlyStack}eof(){return this.index>=this.length}throwUnexpectedToken(t="Unexpected token ILLEGAL"){return this.errorHandler.throwError(this.index,this.lineNumber,this.index-this.lineStart+1,t)}tolerateUnexpectedToken(t="Unexpected token ILLEGAL"){this.errorHandler.tolerateError(this.index,this.lineNumber,this.index-this.lineStart+1,t)}skipSingleLineComment(t){let e,s,i=[];for(this.trackComment&&(i=[],e=this.index-t,s={start:{line:this.lineNumber,column:this.index-this.lineStart-t},end:{}});!this.eof();){const n=this.source.charCodeAt(this.index);if(++this.index,r.isLineTerminator(n)){if(this.trackComment){s.end={line:this.lineNumber,column:this.index-this.lineStart-1};const n={multiLine:!1,slice:[e+t,this.index-1],range:[e,this.index-1],loc:s};i.push(n)}return 13===n&&10===this.source.charCodeAt(this.index)&&++this.index,++this.lineNumber,this.lineStart=this.index,i}}if(this.trackComment){s.end={line:this.lineNumber,column:this.index-this.lineStart};const n={multiLine:!1,slice:[e+t,this.index],range:[e,this.index],loc:s};i.push(n)}return i}skipMultiLineComment(){let t,e,s=[];for(this.trackComment&&(s=[],t=this.index-2,e={start:{line:this.lineNumber,column:this.index-this.lineStart-2},end:{}});!this.eof();){const i=this.source.charCodeAt(this.index);if(r.isLineTerminator(i))13===i&&10===this.source.charCodeAt(this.index+1)&&++this.index,++this.lineNumber,++this.index,this.lineStart=this.index;else if(42===i){if(47===this.source.charCodeAt(this.index+1)){if(this.index+=2,this.trackComment){e.end={line:this.lineNumber,column:this.index-this.lineStart};const i={multiLine:!0,slice:[t+2,this.index-2],range:[t,this.index],loc:e};s.push(i)}return s}++this.index}else++this.index}if(this.trackComment){e.end={line:this.lineNumber,column:this.index-this.lineStart};const i={multiLine:!0,slice:[t+2,this.index],range:[t,this.index],loc:e};s.push(i)}return this.tolerateUnexpectedToken(),s}scanComments(){let t;this.trackComment&&(t=[]);let e=0===this.index;for(;!this.eof();){let s=this.source.charCodeAt(this.index);if(r.isWhiteSpace(s))++this.index;else if(r.isLineTerminator(s))++this.index,13===s&&10===this.source.charCodeAt(this.index)&&++this.index,++this.lineNumber,this.lineStart=this.index,e=!0;else if(47===s)if(s=this.source.charCodeAt(this.index+1),47===s){this.index+=2;const s=this.skipSingleLineComment(2);this.trackComment&&(t=t.concat(s)),e=!0}else{if(42!==s)break;{this.index+=2;const e=this.skipMultiLineComment();this.trackComment&&(t=t.concat(e))}}else if(e&&45===s){if(45!==this.source.charCodeAt(this.index+1)||62!==this.source.charCodeAt(this.index+2))break;{this.index+=3;const e=this.skipSingleLineComment(3);this.trackComment&&(t=t.concat(e))}}else{if(60!==s||this.isModule)break;if("!--"!==this.source.slice(this.index+1,this.index+4))break;{this.index+=4;const e=this.skipSingleLineComment(4);this.trackComment&&(t=t.concat(e))}}}return t}isFutureReservedWord(t){switch(t){case"enum":case"export":case"import":case"super":return!0;default:return!1}}isStrictModeReservedWord(t){switch(t){case"implements":case"interface":case"package":case"private":case"protected":case"public":case"static":case"yield":case"let":return!0;default:return!1}}isRestrictedWord(t){return"eval"===t||"arguments"===t}isKeyword(t){switch(t.length){case 2:return"if"===t||"in"===t||"do"===t;case 3:return"var"===t||"for"===t||"new"===t||"try"===t||"let"===t;case 4:return"this"===t||"else"===t||"case"===t||"void"===t||"with"===t||"enum"===t;case 5:return"while"===t||"break"===t||"catch"===t||"throw"===t||"const"===t||"yield"===t||"class"===t||"super"===t;case 6:return"return"===t||"typeof"===t||"delete"===t||"switch"===t||"export"===t||"import"===t;case 7:return"default"===t||"finally"===t||"extends"===t;case 8:return"function"===t||"continue"===t||"debugger"===t;case 10:return"instanceof"===t;default:return!1}}codePointAt(t){let e=this.source.charCodeAt(t);if(e>=55296&&e<=56319){const s=this.source.charCodeAt(t+1);s>=56320&&s<=57343&&(e=1024*(e-55296)+s-56320+65536)}return e}scanHexEscape(t){const e="u"===t?4:2;let s=0;for(let t=0;t<e;++t){if(this.eof()||!r.isHexDigit(this.source.charCodeAt(this.index)))return null;s=16*s+me(this.source[this.index++])}return String.fromCharCode(s)}tryToScanUnicodeCodePointEscape(){let t=this.source[this.index],e=0;if("}"===t)return null;for(;!this.eof()&&(t=this.source[this.index++],r.isHexDigit(t.charCodeAt(0)));)e=16*e+me(t);return e>1114111||"}"!==t?null:r.fromCodePoint(e)}scanUnicodeCodePointEscape(){const t=this.tryToScanUnicodeCodePointEscape();return null===t?this.throwUnexpectedToken():t}getIdentifier(){const t=this.index++;for(;!this.eof();){const e=this.source.charCodeAt(this.index);if(92===e)return this.index=t,this.getComplexIdentifier();if(e>=55296&&e<57343)return this.index=t,this.getComplexIdentifier();if(!r.isIdentifierPart(e))break;++this.index}return this.source.slice(t,this.index)}getComplexIdentifier(){let t,e=this.codePointAt(this.index),s=r.fromCodePoint(e);for(this.index+=s.length,92===e&&(117!==this.source.charCodeAt(this.index)&&this.throwUnexpectedToken(),++this.index,"{"===this.source[this.index]?(++this.index,t=this.scanUnicodeCodePointEscape()):(t=this.scanHexEscape("u"),null!==t&&"\\"!==t&&r.isIdentifierStart(t.charCodeAt(0))||this.throwUnexpectedToken()),s=t);!this.eof()&&(e=this.codePointAt(this.index),r.isIdentifierPart(e));)t=r.fromCodePoint(e),s+=t,this.index+=t.length,92===e&&(s=s.substr(0,s.length-1),117!==this.source.charCodeAt(this.index)&&this.throwUnexpectedToken(),++this.index,"{"===this.source[this.index]?(++this.index,t=this.scanUnicodeCodePointEscape()):(t=this.scanHexEscape("u"),null!==t&&"\\"!==t&&r.isIdentifierPart(t.charCodeAt(0))||this.throwUnexpectedToken()),s+=t);return s}octalToDecimal(t){let e="0"!==t,s=xe(t);return!this.eof()&&r.isOctalDigit(this.source.charCodeAt(this.index))&&(e=!0,s=8*s+xe(this.source[this.index++]),"0123".indexOf(t)>=0&&!this.eof()&&r.isOctalDigit(this.source.charCodeAt(this.index))&&(s=8*s+xe(this.source[this.index++]))),{code:s,octal:e}}scanIdentifier(){let t;const e=this.index,s=92===this.source.charCodeAt(e),i=s?this.getComplexIdentifier():this.getIdentifier();if(t=1===i.length?3:this.isKeyword(i)?4:"null"===i?5:"true"===i||"false"===i?1:3,3!==t&&e+i.length!==this.index){const t=this.index;this.index=e,this.tolerateUnexpectedToken($t),this.index=t}return{type:t,value:i,lineNumber:this.lineNumber,lineStart:this.lineStart,start:e,end:this.index,escaped:s}}scanPunctuator(){const t=this.index;let e=this.source[this.index];switch(e){case"(":case"{":"{"===e&&this.curlyStack.push("{"),++this.index;break;case".":++this.index,"."===this.source[this.index]&&"."===this.source[this.index+1]&&(this.index+=2,e="...");break;case"}":++this.index,this.curlyStack.pop();break;case"?":++this.index,"?"===this.source[this.index]&&(++this.index,"="===this.source[this.index]?(++this.index,e="??="):e="??"),"."!==this.source[this.index]||/^\d$/.test(this.source[this.index+1])||(++this.index,e="?.");break;case"#":case")":case";":case",":case"[":case"]":case":":case"~":case"@":++this.index;break;default:e=this.source.substr(this.index,4),">>>="===e?this.index+=4:(e=e.substr(0,3),"==="===e||"!=="===e||">>>"===e||"<<="===e||">>="===e||"**="===e||"&&="===e||"||="===e?this.index+=3:(e=e.substr(0,2),"&&"===e||"||"===e||"=="===e||"!="===e||"+="===e||"-="===e||"*="===e||"/="===e||"++"===e||"--"===e||"<<"===e||">>"===e||"&="===e||"|="===e||"^="===e||"%="===e||"<="===e||">="===e||"=>"===e||"**"===e?this.index+=2:(e=this.source[this.index],"<>=!+-*%&|^/".indexOf(e)>=0&&++this.index)))}return this.index===t&&this.throwUnexpectedToken(),{type:7,value:e,lineNumber:this.lineNumber,lineStart:this.lineStart,start:t,end:this.index}}scanHexLiteral(t){let e=this.scanLiteralPart(r.isHexDigitChar);return 0===e.length&&this.throwUnexpectedToken(),"n"===this.source[this.index]?(this.index++,{type:6,value:BigInt("0x"+e),lineNumber:this.lineNumber,lineStart:this.lineStart,start:t,end:this.index}):(r.isIdentifierStart(this.source.charCodeAt(this.index))&&this.throwUnexpectedToken(),{type:6,value:parseInt("0x"+e,16),lineNumber:this.lineNumber,lineStart:this.lineStart,start:t,end:this.index})}scanBinaryLiteral(t){let e,s=this.scanLiteralPart((t=>"0"===t||"1"===t));return 0===s.length&&this.throwUnexpectedToken(),"n"===this.source[this.index]?(this.index++,{type:6,value:BigInt("0b"+s),lineNumber:this.lineNumber,lineStart:this.lineStart,start:t,end:this.index}):(this.eof()||(e=this.source.charCodeAt(this.index),(r.isIdentifierStart(e)||r.isDecimalDigit(e))&&this.throwUnexpectedToken()),{type:6,value:parseInt(s,2),lineNumber:this.lineNumber,lineStart:this.lineStart,start:t,end:this.index})}scanOctalLiteral(t,e){let s="",i=!1;return r.isOctalDigit(t.charCodeAt(0))?(i=!0,s="0"+this.source[this.index++]):++this.index,s+=this.scanLiteralPart(r.isOctalDigitChar),i||0!==s.length||this.throwUnexpectedToken(),"n"===this.source[this.index]?(this.index++,{type:6,value:BigInt("0o"+s),lineNumber:this.lineNumber,lineStart:this.lineStart,start:e,end:this.index}):((r.isIdentifierStart(this.source.charCodeAt(this.index))||r.isDecimalDigit(this.source.charCodeAt(this.index)))&&this.throwUnexpectedToken(),{type:6,value:parseInt(s,8),octal:i,lineNumber:this.lineNumber,lineStart:this.lineStart,start:e,end:this.index})}isImplicitOctalLiteral(){for(let t=this.index+1;t<this.length;++t){const e=this.source[t];if("8"===e||"9"===e||"n"===e)return!1;if(!r.isOctalDigit(e.charCodeAt(0)))return!0}return!0}scanLiteralPart(t){let e="";for("_"===this.source[this.index]&&this.throwUnexpectedToken(re);this.source[this.index]&&(t(this.source[this.index])||"_"===this.source[this.index]);)"_"!==this.source[this.index]&&(e+=this.source[this.index]),this.index++,"_"===this.source[this.index-1]&&"_"===this.source[this.index]&&this.throwUnexpectedToken("Numeric separator must be exactly one underscore");return"_"===this.source[this.index-1]&&this.throwUnexpectedToken(re),e}scanNumericLiteral(){const t=this.index;let e=this.source[t];Wt(r.isDecimalDigit(e.charCodeAt(0))||"."===e,"Numeric literal must start with a decimal digit or a decimal point");let s="";if("."!==e){if(s=this.source[this.index++],e=this.source[this.index],"0"===s){if("x"===e||"X"===e)return++this.index,this.scanHexLiteral(t);if("b"===e||"B"===e)return++this.index,this.scanBinaryLiteral(t);if("o"===e||"O"===e)return this.scanOctalLiteral(e,t);if(e&&r.isOctalDigit(e.charCodeAt(0))&&this.isImplicitOctalLiteral())return this.scanOctalLiteral(e,t)}this.index--,s=this.scanLiteralPart(r.isDecimalDigitChar),e=this.source[this.index]}if("."===e&&(s+=this.source[this.index++],s+=this.scanLiteralPart(r.isDecimalDigitChar),e=this.source[this.index]),"e"===e||"E"===e)s+=this.source[this.index++],e=this.source[this.index],"+"!==e&&"-"!==e||(s+=this.source[this.index++]),r.isDecimalDigit(this.source.charCodeAt(this.index))?s+=this.scanLiteralPart(r.isDecimalDigitChar):this.throwUnexpectedToken();else if("n"===e)return s.length>1&&"0"===s[0]&&this.throwUnexpectedToken(),this.index++,{type:6,value:BigInt(s),lineNumber:this.lineNumber,lineStart:this.lineStart,start:t,end:this.index};return r.isIdentifierStart(this.source.charCodeAt(this.index))&&this.throwUnexpectedToken(),{type:6,value:parseFloat(s),lineNumber:this.lineNumber,lineStart:this.lineStart,start:t,end:this.index}}scanStringLiteral(){const t=this.index;let e=this.source[t];Wt("'"===e||'"'===e,"String literal must starts with a quote"),++this.index;let s=!1,i="";for(;!this.eof();){let t=this.source[this.index++];if(t===e){e="";break}if("\\"===t)if(t=this.source[this.index++],t&&r.isLineTerminator(t.charCodeAt(0)))++this.lineNumber,"\r"===t&&"\n"===this.source[this.index]&&++this.index,this.lineStart=this.index;else switch(t){case"u":if("{"===this.source[this.index])++this.index,i+=this.scanUnicodeCodePointEscape();else{const e=this.scanHexEscape(t);null===e&&this.throwUnexpectedToken(),i+=e}break;case"x":const e=this.scanHexEscape(t);null===e&&this.throwUnexpectedToken(Zt),i+=e;break;case"n":i+="\n";break;case"r":i+="\r";break;case"t":i+="\t";break;case"b":i+="\b";break;case"f":i+="\f";break;case"v":i+="\v";break;case"8":case"9":i+=t,this.tolerateUnexpectedToken();break;default:if(t&&r.isOctalDigit(t.charCodeAt(0))){const e=this.octalToDecimal(t);s=e.octal||s,i+=String.fromCharCode(e.code)}else i+=t}else{if(r.isLineTerminator(t.charCodeAt(0)))break;i+=t}}return""!==e&&(this.index=t,this.throwUnexpectedToken()),{type:8,value:i,octal:s,lineNumber:this.lineNumber,lineStart:this.lineStart,start:t,end:this.index}}scanTemplate(){let t="",e=!1;const s=this.index,i="`"===this.source[s];let n=!1,a=null,o=2;for(++this.index;!this.eof();){let s=this.source[this.index++];if("`"===s){o=1,n=!0,e=!0;break}if("$"===s){if("{"===this.source[this.index]){this.curlyStack.push("${"),++this.index,e=!0;break}t+=s}else{if(null!==a)continue;if("\\"===s)if(s=this.source[this.index++],r.isLineTerminator(s.charCodeAt(0)))++this.lineNumber,"\r"===s&&"\n"===this.source[this.index]&&++this.index,this.lineStart=this.index;else switch(s){case"n":t+="\n";break;case"r":t+="\r";break;case"t":t+="\t";break;case"u":if("{"===this.source[this.index]){++this.index;const e=this.tryToScanUnicodeCodePointEscape();null===e?a="u":t+=e}else{const e=this.scanHexEscape(s);null===e?a="u":t+=e}break;case"x":const e=this.scanHexEscape(s);null===e?a="x":t+=e;break;case"b":t+="\b";break;case"f":t+="\f";break;case"v":t+="\v";break;default:"0"===s?r.isDecimalDigit(this.source.charCodeAt(this.index))?a="0":t+="\0":r.isDecimalDigitChar(s)?a=s:t+=s}else r.isLineTerminator(s.charCodeAt(0))?(++this.lineNumber,"\r"===s&&"\n"===this.source[this.index]&&++this.index,this.lineStart=this.index,t+="\n"):t+=s}}return e||this.throwUnexpectedToken(),i||this.curlyStack.pop(),{type:10,value:this.source.slice(s+1,this.index-o),cooked:null===a?t:null,head:i,tail:n,notEscapeSequenceHead:a,lineNumber:this.lineNumber,lineStart:this.lineStart,start:s,end:this.index}}testRegExp(t,e){let s=t;e.indexOf("u")>=0&&(s=s.replace(/\\u\{([0-9a-fA-F]+)\}|\\u([a-fA-F0-9]{4})/g,((t,e,s)=>{const i=parseInt(e||s,16);return i>1114111&&this.throwUnexpectedToken(ee),i<=65535?String.fromCharCode(i):""})).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,""));try{RegExp(s)}catch(t){this.throwUnexpectedToken(ee)}try{return new RegExp(t,e)}catch(t){return null}}scanRegExpBody(){let t=this.source[this.index];Wt("/"===t,"Regular expression literal must start with a slash");let e=this.source[this.index++],s=!1,i=!1;for(;!this.eof();)if(t=this.source[this.index++],e+=t,"\\"===t)t=this.source[this.index++],r.isLineTerminator(t.charCodeAt(0))&&this.throwUnexpectedToken(de),e+=t;else if(r.isLineTerminator(t.charCodeAt(0)))this.throwUnexpectedToken(de);else if(s)"]"===t&&(s=!1);else{if("/"===t){i=!0;break}"["===t&&(s=!0)}return i||this.throwUnexpectedToken(de),e.substr(1,e.length-2)}scanRegExpFlags(){let t="",e="";for(;!this.eof();){let s=this.source[this.index];if(!r.isIdentifierPart(s.charCodeAt(0)))break;if(++this.index,"\\"!==s||this.eof())e+=s,t+=s;else if(s=this.source[this.index],"u"===s){++this.index;let s=this.index;const i=this.scanHexEscape("u");if(null!==i)for(e+=i,t+="\\u";s<this.index;++s)t+=this.source[s];else this.index=s,e+="u",t+="\\u";this.tolerateUnexpectedToken()}else t+="\\",this.tolerateUnexpectedToken()}return e}scanRegExp(){const t=this.index,e=this.scanRegExpBody(),s=this.scanRegExpFlags();return{type:9,value:"",pattern:e,flags:s,regex:this.testRegExp(e,s),lineNumber:this.lineNumber,lineStart:this.lineStart,start:t,end:this.index}}lex(){if(this.eof())return{type:2,value:"",lineNumber:this.lineNumber,lineStart:this.lineStart,start:this.index,end:this.index};const t=this.source.charCodeAt(this.index);return r.isIdentifierStart(t)?this.scanIdentifier():40===t||41===t||59===t?this.scanPunctuator():39===t||34===t?this.scanStringLiteral():46===t?r.isDecimalDigit(this.source.charCodeAt(this.index+1))?this.scanNumericLiteral():this.scanPunctuator():r.isDecimalDigit(t)?this.scanNumericLiteral():96===t||125===t&&"${"===this.curlyStack[this.curlyStack.length-1]?this.scanTemplate():t>=55296&&t<57343&&r.isIdentifierStart(this.codePointAt(this.index))?this.scanIdentifier():this.scanPunctuator()}}const Ce={1:"Boolean",2:"<end>",3:"Identifier",4:"Keyword",5:"Null",6:"Numeric",7:"Punctuator",8:"String",9:"RegularExpression",10:"Template"},fe="ArrowParameterPlaceHolder";class Ae{constructor(t,e={},s){this.config={range:"boolean"==typeof e.range&&e.range,loc:"boolean"==typeof e.loc&&e.loc,source:null,tokens:"boolean"==typeof e.tokens&&e.tokens,comment:"boolean"==typeof e.comment&&e.comment,tolerant:"boolean"==typeof e.tolerant&&e.tolerant},this.config.loc&&e.source&&null!==e.source&&(this.config.source=String(e.source)),this.delegate=s,this.errorHandler=new Yt,this.errorHandler.tolerant=1==this.config.tolerant,this.scanner=new Ee(t,this.errorHandler),this.scanner.trackComment=1==this.config.comment,this.operatorPrecedence={")":0,";":0,",":0,"=":0,"]":0,"??":5,"||":6,"&&":7,"|":8,"^":9,"&":10,"==":11,"!=":11,"===":11,"!==":11,"<":12,">":12,"<=":12,">=":12,"<<":13,">>":13,">>>":13,"+":14,"-":14,"*":15,"/":15,"%":15},this.lookahead={type:2,value:"",lineNumber:this.scanner.lineNumber,lineStart:0,start:0,end:0},this.hasLineTerminator=!1,this.context={isModule:!1,isAsync:!1,allowIn:!0,allowStrictDirective:!0,allowSuper:!1,allowYield:!0,firstCoverInitializedNameError:null,isAssignmentTarget:!1,isBindingElement:!1,inConstructor:!1,inFunctionBody:!1,inIteration:!1,inSwitch:!1,inClassConstructor:!1,labelSet:{},strict:!1,decorators:null},this.tokens=[],this.startMarker={index:0,line:this.scanner.lineNumber,column:0},this.lastMarker={index:0,line:this.scanner.lineNumber,column:0},this.nextToken(),this.lastMarker={index:this.scanner.index,line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}}throwError(t,...e){const s=e.slice(),i=t.replace(/%(\d)/g,((t,e)=>(Wt(e<s.length,"Message reference must be in range"),s[e]))),n=this.lastMarker.index,r=this.lastMarker.line,a=this.lastMarker.column+1;throw this.errorHandler.createError(n,r,a,i)}tolerateError(t,...e){const s=e.slice(),i=t.replace(/%(\d)/g,((t,e)=>(Wt(e<s.length,"Message reference must be in range"),s[e]))),n=this.lastMarker.index,r=this.scanner.lineNumber,a=this.lastMarker.column+1;this.errorHandler.tolerateError(n,r,a,i)}unexpectedTokenError(t,e){let s,i=e||pe;if(t?(e||(i=2===t.type?"Unexpected end of input":3===t.type?"Unexpected identifier":6===t.type?"Unexpected number":8===t.type?"Unexpected string":10===t.type?"Unexpected quasi %0":pe,4===t.type&&(this.scanner.isFutureReservedWord(t.value)?i="Unexpected reserved word":this.context.strict&&this.scanner.isStrictModeReservedWord(t.value)&&(i=ce))),s=t.value):s="ILLEGAL",i=i.replace("%0",s),t&&"number"==typeof t.lineNumber){const e=t.start,s=t.lineNumber,n=this.lastMarker.index-this.lastMarker.column,r=t.start-n+1;return this.errorHandler.createError(e,s,r,i)}{const t=this.lastMarker.index,e=this.lastMarker.line,s=this.lastMarker.column+1;return this.errorHandler.createError(t,e,s,i)}}throwUnexpectedToken(t,e){throw this.unexpectedTokenError(t,e)}tolerateUnexpectedToken(t,e){this.errorHandler.tolerate(this.unexpectedTokenError(t,e))}tolerateInvalidLoopStatement(){(this.matchKeyword("class")||this.matchKeyword("function"))&&this.tolerateError(pe,this.lookahead)}collectComments(){if(this.config.comment){const t=this.scanner.scanComments();if(t.length>0&&this.delegate)for(let e=0;e<t.length;++e){const s=t[e],i={type:s.multiLine?"BlockComment":"LineComment",value:this.scanner.source.slice(s.slice[0],s.slice[1])};this.config.range&&(i.range=s.range),this.config.loc&&(i.loc=s.loc);const n={start:{line:s.loc.start.line,column:s.loc.start.column,offset:s.range[0]},end:{line:s.loc.end.line,column:s.loc.end.column,offset:s.range[1]}};this.delegate(i,n)}}else this.scanner.scanComments()}getTokenRaw(t){return this.scanner.source.slice(t.start,t.end)}convertToken(t){const e={type:Ce[t.type],value:this.getTokenRaw(t)};if(this.config.range&&(e.range=[t.start,t.end]),this.config.loc&&(e.loc={start:{line:this.startMarker.line,column:this.startMarker.column},end:{line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}}),9===t.type){const s=t.pattern,i=t.flags;e.regex={pattern:s,flags:i}}return e}nextToken(){const t=this.lookahead;this.lastMarker.index=this.scanner.index,this.lastMarker.line=this.scanner.lineNumber,this.lastMarker.column=this.scanner.index-this.scanner.lineStart,this.collectComments(),this.scanner.index!==this.startMarker.index&&(this.startMarker.index=this.scanner.index,this.startMarker.line=this.scanner.lineNumber,this.startMarker.column=this.scanner.index-this.scanner.lineStart);const e=this.scanner.lex();return this.hasLineTerminator=t.lineNumber!==e.lineNumber,e&&this.context.strict&&3===e.type&&this.scanner.isStrictModeReservedWord(e.value)&&(e.type=4),this.lookahead=e,this.config.tokens&&2!==e.type&&this.tokens.push(this.convertToken(e)),t}nextRegexToken(){this.collectComments();const t=this.scanner.scanRegExp();return this.config.tokens&&(this.tokens.pop(),this.tokens.push(this.convertToken(t))),this.lookahead=t,this.nextToken(),t}createNode(){return{index:this.startMarker.index,line:this.startMarker.line,column:this.startMarker.column}}startNode(t,e=0){let s=t.start-t.lineStart,i=t.lineNumber;return s<0&&(s+=e,i--),{index:t.start,line:i,column:s}}finalize(t,e){if(this.config.range&&(e.range=[t.index,this.lastMarker.index]),this.config.loc&&(e.loc={start:{line:t.line,column:t.column},end:{line:this.lastMarker.line,column:this.lastMarker.column}},this.config.source&&(e.loc.source=this.config.source)),this.delegate){const s={start:{line:t.line,column:t.column,offset:t.index},end:{line:this.lastMarker.line,column:this.lastMarker.column,offset:this.lastMarker.index}};this.delegate(e,s)}return e}expect(t){const e=this.nextToken();7===e.type&&e.value===t||this.throwUnexpectedToken(e)}expectCommaSeparator(){if(this.config.tolerant){const t=this.lookahead;7===t.type&&","===t.value?this.nextToken():7===t.type&&";"===t.value?(this.nextToken(),this.tolerateUnexpectedToken(t)):this.tolerateUnexpectedToken(t,pe)}else this.expect(",")}expectKeyword(t){const e=this.nextToken();4===e.type&&e.value===t||this.throwUnexpectedToken(e)}match(t){return 7===this.lookahead.type&&this.lookahead.value===t}matchKeyword(t){return 4===this.lookahead.type&&this.lookahead.value===t}matchContextualKeyword(t){return 3===this.lookahead.type&&this.lookahead.value===t}matchAssign(){if(7!==this.lookahead.type)return!1;const t=this.lookahead.value;return"="===t||"*="===t||"**="===t||"/="===t||"%="===t||"+="===t||"-="===t||"<<="===t||">>="===t||">>>="===t||"&="===t||"^="===t||"|="===t||"&&="===t||"||="===t||"??="===t}isolateCoverGrammar(t){const e=this.context.isBindingElement,s=this.context.isAssignmentTarget,i=this.context.firstCoverInitializedNameError;this.context.isBindingElement=!0,this.context.isAssignmentTarget=!0,this.context.firstCoverInitializedNameError=null;const n=t.call(this);return null!==this.context.firstCoverInitializedNameError&&this.throwUnexpectedToken(this.context.firstCoverInitializedNameError),this.context.isBindingElement=e,this.context.isAssignmentTarget=s,this.context.firstCoverInitializedNameError=i,n}inheritCoverGrammar(t){const e=this.context.isBindingElement,s=this.context.isAssignmentTarget,i=this.context.firstCoverInitializedNameError;this.context.isBindingElement=!0,this.context.isAssignmentTarget=!0,this.context.firstCoverInitializedNameError=null;const n=t.call(this);return this.context.isBindingElement=this.context.isBindingElement&&e,this.context.isAssignmentTarget=this.context.isAssignmentTarget&&s,this.context.firstCoverInitializedNameError=i||this.context.firstCoverInitializedNameError,n}consumeSemicolon(){this.match(";")?this.nextToken():this.hasLineTerminator||(2===this.lookahead.type||this.match("}")||this.throwUnexpectedToken(this.lookahead),this.lastMarker.index=this.startMarker.index,this.lastMarker.line=this.startMarker.line,this.lastMarker.column=this.startMarker.column)}parsePrimaryExpression(){const t=this.createNode();let e,s,i;switch(this.lookahead.type){case 3:(this.context.isModule||this.context.isAsync)&&"await"===this.lookahead.value&&this.tolerateUnexpectedToken(this.lookahead),e=this.matchAsyncFunction()?this.parseFunctionExpression():this.finalize(t,new tt(this.nextToken().value));break;case 6:case 8:this.context.strict&&this.lookahead.octal&&this.tolerateUnexpectedToken(this.lookahead,he),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,s=this.nextToken(),i=this.getTokenRaw(s),e="bigint"==typeof s.value?this.finalize(t,new B(s.value,i,s.value.toString())):this.finalize(t,new ut(s.value,i));break;case 1:this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,s=this.nextToken(),i=this.getTokenRaw(s),e=this.finalize(t,new ut("true"===s.value,i));break;case 5:this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,s=this.nextToken(),i=this.getTokenRaw(s),e=this.finalize(t,new ut(null,i));break;case 10:e=this.parseTemplateLiteral({isTagged:!1});break;case 7:switch(this.lookahead.value){case"(":this.context.isBindingElement=!1,e=this.inheritCoverGrammar(this.parseGroupExpression);break;case"[":e=this.inheritCoverGrammar(this.parseArrayInitializer);break;case"{":e=this.inheritCoverGrammar(this.parseObjectInitializer);break;case"/":case"/=":this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,this.scanner.index=this.startMarker.index,s=this.nextRegexToken(),i=this.getTokenRaw(s),e=this.finalize(t,new yt(s.regex,i,s.pattern,s.flags));break;case"#":this.nextToken(),e=this.finalize(t,new Ct(this.nextToken().value));break;case"@":let n=this.parseDecorators();this.context.decorators=n,this.parsePrimaryExpression(),this.context.decorators=null,e=this.finalize(t,new Ct(this.nextToken().value));break;default:e=this.throwUnexpectedToken(this.nextToken())}break;case 4:!this.context.strict&&this.context.allowYield&&this.matchKeyword("yield")?e=this.parseIdentifierName():!this.context.strict&&this.matchKeyword("let")?e=this.finalize(t,new tt(this.nextToken().value)):(this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,this.matchKeyword("function")?e=this.parseFunctionExpression():this.matchKeyword("this")?(this.nextToken(),e=this.finalize(t,new Ut)):this.matchKeyword("class")?e=this.parseClassExpression():this.matchKeyword("new")?e=this.parseNewExpression():this.matchImportCall()?e=this.parseImportCall():this.matchImportMeta()?(this.context.isModule||this.tolerateUnexpectedToken(this.lookahead,"Cannot use 'import.meta' outside a module"),e=this.parseImportMeta()):e=this.throwUnexpectedToken(this.nextToken()));break;default:e=this.throwUnexpectedToken(this.nextToken())}return e}parseSpreadElement(){const t=this.createNode();this.expect("...");const e=this.inheritCoverGrammar(this.parseAssignmentExpression);return this.finalize(t,new Bt(e))}parseArrayInitializer(){const t=this.createNode(),e=[];for(this.expect("[");!this.match("]");)if(this.match(","))this.nextToken(),e.push(null);else if(this.match("...")){const t=this.parseSpreadElement();this.match("]")||(this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,this.expect(",")),e.push(t)}else e.push(this.inheritCoverGrammar(this.parseAssignmentExpression)),this.match("]")||this.expect(",");return this.expect("]"),this.finalize(t,new A(e))}parsePropertyMethod(t){this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;const e=this.context.strict,s=this.context.allowStrictDirective;this.context.allowStrictDirective=t.simple;const i=this.isolateCoverGrammar(this.parseFunctionSourceElements);return this.context.strict&&t.firstRestricted&&this.tolerateUnexpectedToken(t.firstRestricted,t.message),this.context.strict&&t.stricted&&this.tolerateUnexpectedToken(t.stricted,t.message),this.context.strict=e,this.context.allowStrictDirective=s,i}parsePropertyMethodFunction(t){const e=this.createNode(),s=this.context.allowYield;this.context.allowYield=!0;const i=this.parseFormalParameters(),n=this.parsePropertyMethod(i);return this.context.allowYield=s,this.finalize(e,new Q(null,i.params,n,t,!1))}parsePropertyMethodAsyncFunction(t){const e=this.createNode(),s=this.context.allowYield,i=this.context.isAsync;this.context.allowYield=!1,this.context.isAsync=!0;const n=this.parseFormalParameters(),r=this.parsePropertyMethod(n);return this.context.allowYield=s,this.context.isAsync=i,this.finalize(e,new Q(null,n.params,r,t,!0))}parseObjectPropertyKey(t=!1){const e=this.createNode(),s=this.nextToken();let i;switch(s.type){case 8:case 6:this.context.strict&&s.octal&&this.tolerateUnexpectedToken(s,he);const n=this.getTokenRaw(s);i="bigint"==typeof s.value?this.finalize(e,new B(s.value,n,s.value.toString())):this.finalize(e,new ut(s.value,n));break;case 3:case 1:case 5:case 4:i=this.finalize(e,t?new Ct(s.value):new tt(s.value));break;case 7:"["===s.value?(i=this.isolateCoverGrammar(this.parseAssignmentExpression),this.expect("]")):i=this.throwUnexpectedToken(s);break;default:i=this.throwUnexpectedToken(s)}return i}isPropertyKey(e,s){return e.type===t.Identifier&&e.name===s||e.type===t.Literal&&e.value===s}parseObjectProperty(t){const e=this.createNode(),s=this.lookahead;let i,n=null,r=null,a=!1,o=!1,h=!1,u=!1,c=!1;if(3===s.type){const t=s.value;this.nextToken(),a=this.match("["),u=!(this.hasLineTerminator||"async"!==t||this.match(":")||this.match("(")||this.match(",")),c=this.match("*"),c&&this.nextToken(),n=u?this.parseObjectPropertyKey():this.finalize(e,new tt(t))}else this.match("*")?this.nextToken():(a=this.match("["),n=this.parseObjectPropertyKey());const l=this.qualifiedPropertyName(this.lookahead);if(3===s.type&&!u&&"get"===s.value&&l)i="get",a=this.match("["),n=this.parseObjectPropertyKey(),this.context.allowYield=!1,r=this.parseGetterMethod();else if(3===s.type&&!u&&"set"===s.value&&l)i="set",a=this.match("["),n=this.parseObjectPropertyKey(),r=this.parseSetterMethod();else if(7===s.type&&"*"===s.value&&l)i="init",a=this.match("["),n=this.parseObjectPropertyKey(),r=this.parseGeneratorMethod(!1),o=!0;else if(n||this.throwUnexpectedToken(this.lookahead),i="init",this.match(":")&&!u)!a&&this.isPropertyKey(n,"__proto__")&&(t.value&&this.tolerateError("Duplicate __proto__ fields are not allowed in object literals"),t.value=!0),this.nextToken(),r=this.inheritCoverGrammar(this.parseAssignmentExpression);else if(this.match("("))r=u?this.parsePropertyMethodAsyncFunction(c):this.parsePropertyMethodFunction(c),o=!0;else if(3===s.type){const t=this.finalize(e,new tt(s.value));if(this.match("=")){this.context.firstCoverInitializedNameError=this.lookahead,this.nextToken(),h=!0;const s=this.isolateCoverGrammar(this.parseAssignmentExpression);r=this.finalize(e,new g(t,s))}else h=!0,r=t}else this.throwUnexpectedToken(this.nextToken());return this.finalize(e,new At(i,n,a,r,o,h))}parseObjectInitializer(){const t=this.createNode();this.expect("{");const e=[],s={value:!1};for(;!this.match("}");){const t=this.match("...")?this.parseSpreadElement():this.parseObjectProperty(s);e.push(t),this.match("}")||t.method&&!this.match(",")||this.expectCommaSeparator()}return this.expect("}"),this.finalize(t,new xt(e))}throwTemplateLiteralEarlyErrors(t){switch(t.notEscapeSequenceHead){case"u":return this.throwUnexpectedToken(t,"Invalid Unicode escape sequence");case"x":return this.throwUnexpectedToken(t,Zt);case"8":case"9":return this.throwUnexpectedToken(t,"\\8 and \\9 are not allowed in template strings.");default:return this.throwUnexpectedToken(t,"Octal literals are not allowed in template strings.")}}parseTemplateHead(t){Wt(this.lookahead.head,"Template literal must start with a template head");const e=this.createNode(),s=this.nextToken();t.isTagged||null===s.notEscapeSequenceHead||this.throwTemplateLiteralEarlyErrors(s);const i=s.value,n=s.cooked;return this.finalize(e,new Pt({raw:i,cooked:n},s.tail))}parseTemplateElement(t){10!==this.lookahead.type&&this.throwUnexpectedToken();const e=this.createNode(),s=this.nextToken();t.isTagged||null===s.notEscapeSequenceHead||this.throwTemplateLiteralEarlyErrors(s);const i=s.value,n=s.cooked;return this.finalize(e,new Pt({raw:i,cooked:n},s.tail))}parseTemplateLiteral(t){const e=this.createNode(),s=[],i=[];let n=this.parseTemplateHead(t);for(i.push(n);!n.tail;)s.push(this.parseExpression()),n=this.parseTemplateElement(t),i.push(n);return this.finalize(e,new zt(i,s))}reinterpretExpressionAsPattern(e){switch(e.type){case t.Identifier:case t.MemberExpression:case t.RestElement:case t.AssignmentPattern:break;case t.SpreadElement:e.type=t.RestElement,this.reinterpretExpressionAsPattern(e.argument);break;case t.ArrayExpression:e.type=t.ArrayPattern;for(let t=0;t<e.elements.length;t++)null!==e.elements[t]&&this.reinterpretExpressionAsPattern(e.elements[t]);break;case t.ObjectExpression:e.type=t.ObjectPattern;for(let s=0;s<e.properties.length;s++){const i=e.properties[s];this.reinterpretExpressionAsPattern(i.type===t.SpreadElement?i:i.value)}break;case t.AssignmentExpression:e.type=t.AssignmentPattern,delete e.operator,this.reinterpretExpressionAsPattern(e.left)}}parseGroupExpression(){let e;if(this.expect("("),this.match(")"))this.nextToken(),this.match("=>")||this.expect("=>"),e={type:fe,params:[],async:!1};else{const s=this.lookahead,i=[];if(this.match("..."))e=this.parseRestElement(i),this.expect(")"),this.match("=>")||this.expect("=>"),e={type:fe,params:[e],async:!1};else{let n=!1;if(this.context.isBindingElement=!0,e=this.inheritCoverGrammar(this.parseAssignmentExpression),this.match(",")){const t=[];for(this.context.isAssignmentTarget=!1,t.push(e);2!==this.lookahead.type&&this.match(",");){if(this.nextToken(),this.match(")")){this.nextToken();for(let e=0;e<t.length;e++)this.reinterpretExpressionAsPattern(t[e]);n=!0,e={type:fe,params:t,async:!1}}else if(this.match("...")){this.context.isBindingElement||this.throwUnexpectedToken(this.lookahead),t.push(this.parseRestElement(i)),this.expect(")"),this.match("=>")||this.expect("=>"),this.context.isBindingElement=!1;for(let e=0;e<t.length;e++)this.reinterpretExpressionAsPattern(t[e]);n=!0,e={type:fe,params:t,async:!1}}else t.push(this.inheritCoverGrammar(this.parseAssignmentExpression));if(n)break}n||(e=this.finalize(this.startNode(s),new wt(t)))}if(!n){if(this.expect(")"),this.match("=>")&&(e.type===t.Identifier&&"yield"===e.name&&(n=!0,e={type:fe,params:[e],async:!1}),!n)){if(this.context.isBindingElement||this.throwUnexpectedToken(this.lookahead),e.type===t.SequenceExpression)for(let t=0;t<e.expressions.length;t++)this.reinterpretExpressionAsPattern(e.expressions[t]);else this.reinterpretExpressionAsPattern(e);const s=e.type===t.SequenceExpression?e.expressions:[e];e={type:fe,params:s,async:!1}}this.context.isBindingElement=!1}}}return e}parseArguments(){this.expect("(");const t=[];if(!this.match(")"))for(;;){const e=this.match("...")?this.parseSpreadElement():this.isolateCoverGrammar(this.parseAssignmentExpression);if(t.push(e),this.match(")"))break;if(this.expectCommaSeparator(),this.match(")"))break}return this.expect(")"),t}isIdentifierName(t){return 3===t.type||4===t.type||1===t.type||5===t.type}parseIdentifierName(t=!1){let e=!1,s=this.createNode(),i=this.nextToken();return"#"===i.value&&t&&(i=this.nextToken(),e=!0),this.isIdentifierName(i)||this.throwUnexpectedToken(i),this.finalize(s,e?new Ct(i.value):new tt(i.value))}parseNewExpression(){const t=this.createNode(),e=this.parseIdentifierName();let s;if(Wt("new"===e.name,"New expression must start with `new`"),this.match("."))if(this.nextToken(),3===this.lookahead.type&&this.context.inFunctionBody&&"target"===this.lookahead.value){const t=this.parseIdentifierName();s=new pt(e,t)}else this.throwUnexpectedToken(this.lookahead);else if(this.matchKeyword("import"))this.throwUnexpectedToken(this.lookahead);else{const t=this.isolateCoverGrammar(this.parseLeftHandSideExpression),e=this.match("(")?this.parseArguments():[];s=new mt(t,e),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1}return this.finalize(t,s)}parseAsyncArgument(){const t=this.parseAssignmentExpression();return this.context.firstCoverInitializedNameError=null,t}parseAsyncArguments(){this.expect("(");const t=[];if(!this.match(")"))for(;;){const e=this.match("...")?this.parseSpreadElement():this.isolateCoverGrammar(this.parseAsyncArgument);if(t.push(e),this.match(")"))break;if(this.expectCommaSeparator(),this.match(")"))break}return this.expect(")"),t}matchImportCall(){let t=this.matchKeyword("import");if(t){const e=this.scanner.saveState();this.scanner.scanComments();const s=this.scanner.lex();this.scanner.restoreState(e),t=7===s.type&&"("===s.value}return t}parseImportCall(){const t=this.createNode();this.expectKeyword("import"),this.expect("(");const e=this.parseAssignmentExpression();let s=null;return this.match(",")&&(this.nextToken(),s=this.parseObjectInitializer()),!this.match(")")&&this.config.tolerant?this.tolerateUnexpectedToken(this.nextToken()):(this.expect(")"),this.match(";")&&this.nextToken()),this.finalize(t,new it(e,s))}matchImportMeta(){let t=this.matchKeyword("import");if(t){const e=this.scanner.saveState();this.scanner.scanComments();const s=this.scanner.lex();if(7===s.type&&"."===s.value){this.scanner.scanComments();const e=this.scanner.lex();t=3===e.type&&"meta"===e.value,t&&e.end-e.start!=="meta".length&&this.tolerateUnexpectedToken(e,$t)}else t=!1;this.scanner.restoreState(e)}return t}parseImportMeta(){const t=this.createNode(),e=this.parseIdentifierName();this.expect(".");const s=this.parseIdentifierName();return this.context.isAssignmentTarget=!1,this.finalize(t,new pt(e,s))}parseLeftHandSideExpressionAllowCall(){const e=this.lookahead,s=this.matchContextualKeyword("async"),i=this.context.allowIn;let n;this.context.allowIn=!0;const r=this.matchKeyword("super");r&&this.context.inFunctionBody?(n=this.createNode(),this.nextToken(),n=this.finalize(n,new Tt),this.match("(")||this.match(".")||this.match("[")||this.throwUnexpectedToken(this.lookahead)):n=this.inheritCoverGrammar(this.matchKeyword("new")?this.parseNewExpression:this.parsePrimaryExpression),!r||!this.match("(")||this.context.inClassConstructor&&this.context.allowSuper||this.tolerateError("'super' keyword unexpected here");let a=!1;for(;;){let i=!1;if(this.match("?.")&&(i=!0,a=!0,this.expect("?.")),this.match("(")){const r=s&&e.lineNumber===this.lookahead.lineNumber;this.context.isBindingElement=!1,this.context.isAssignmentTarget=!1;const a=r?this.parseAsyncArguments():this.parseArguments();if(n.type===t.ImportExpression&&1!==a.length&&this.tolerateError("Unexpected token"),n=this.finalize(this.startNode(e),new N(n,a,i)),r&&this.match("=>")){for(let t=0;t<a.length;++t)this.reinterpretExpressionAsPattern(a[t]);n={type:fe,params:a,async:!0}}}else if(this.match("[")){this.context.isBindingElement=!1,this.context.isAssignmentTarget=!i,this.expect("[");const t=this.isolateCoverGrammar(this.parseExpression);this.expect("]"),n=this.finalize(this.startNode(e),new lt(!0,n,t,i))}else if(10===this.lookahead.type&&this.lookahead.head){i&&this.throwUnexpectedToken(this.lookahead),a&&this.throwError(se);const t=this.parseTemplateLiteral({isTagged:!0});n=this.finalize(this.startNode(e),new It(n,t))}else{if(!this.match(".")&&!i)break;{this.context.isBindingElement=!1,this.context.isAssignmentTarget=!i,i||this.expect(".");const t=this.parseIdentifierName(!0);n=this.finalize(this.startNode(e),new lt(!1,n,t,i))}}}return this.context.allowIn=i,a?new P(n):n}parseSuper(){const t=this.createNode();return this.expectKeyword("super"),this.match("[")||this.match(".")||this.throwUnexpectedToken(this.lookahead),this.finalize(t,new Tt)}parseLeftHandSideExpression(){Wt(this.context.allowIn,"callee of new expression always allow in keyword.");const t=this.startNode(this.lookahead);let e=this.matchKeyword("super")&&this.context.inFunctionBody?this.parseSuper():this.inheritCoverGrammar(this.matchKeyword("new")?this.parseNewExpression:this.parsePrimaryExpression),s=!1;for(;;){let i=!1;if(this.match("?.")&&(i=!0,s=!0,this.expect("?.")),this.match("[")){this.context.isBindingElement=!1,this.context.isAssignmentTarget=!i,this.expect("[");const s=this.isolateCoverGrammar(this.parseExpression);this.expect("]"),e=this.finalize(t,new lt(!0,e,s,i))}else if(10===this.lookahead.type&&this.lookahead.head){i&&this.throwUnexpectedToken(this.lookahead),s&&this.throwError(se);const n=this.parseTemplateLiteral({isTagged:!0});e=this.finalize(t,new It(e,n))}else{if(!this.match(".")&&!i)break;{this.context.isBindingElement=!1,this.context.isAssignmentTarget=!i,i||this.expect(".");const s=this.parseIdentifierName();e=this.finalize(t,new lt(!1,e,s,i))}}}return s?new P(e):e}parseUpdateExpression(){let e;const s=this.lookahead;if(this.match("++")||this.match("--")){const i=this.startNode(s),n=this.nextToken();e=this.inheritCoverGrammar(this.parseUnaryExpression),this.context.strict&&e.type===t.Identifier&&this.scanner.isRestrictedWord(e.name)&&this.tolerateError("Prefix increment/decrement may not have eval or arguments operand in strict mode"),this.context.isAssignmentTarget||this.tolerateError(Qt);const r=!0;e=this.finalize(i,new Mt(n.value,e,r)),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1}else if(e=this.inheritCoverGrammar(this.parseLeftHandSideExpressionAllowCall),!this.hasLineTerminator&&7===this.lookahead.type&&(this.match("++")||this.match("--"))){this.context.strict&&e.type===t.Identifier&&this.scanner.isRestrictedWord(e.name)&&this.tolerateError("Postfix increment/decrement may not have eval or arguments operand in strict mode"),this.context.isAssignmentTarget||this.tolerateError(Qt),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;const i=this.nextToken().value,n=!1;e=this.finalize(this.startNode(s),new Mt(i,e,n))}return e}parseAwaitExpression(){const t=this.createNode();this.nextToken();const e=this.parseUnaryExpression();return this.finalize(t,new w(e))}parseUnaryExpression(){let e;if(this.match("+")||this.match("-")||this.match("~")||this.match("!")||this.matchKeyword("delete")||this.matchKeyword("void")||this.matchKeyword("typeof")){const s=this.startNode(this.lookahead),i=this.nextToken();e=this.inheritCoverGrammar(this.parseUnaryExpression),e=this.finalize(s,new Lt(i.value,e)),this.context.strict&&"delete"===e.operator&&e.argument.type===t.Identifier&&this.tolerateError("Delete of an unqualified identifier in strict mode."),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1}else e=(this.context.isModule&&!this.context.inFunctionBody||this.context.isAsync)&&this.matchContextualKeyword("await")?this.parseAwaitExpression():this.parseUpdateExpression();return e}parseExponentiationExpression(){const e=this.lookahead,s=this.match("(");let i=this.inheritCoverGrammar(this.parseUnaryExpression);if((i.type!==t.UnaryExpression||s)&&this.match("**")){this.nextToken(),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;const t=i,s=this.isolateCoverGrammar(this.parseExponentiationExpression);i=this.finalize(this.startNode(e),new b("**",t,s))}return i}binaryPrecedence(t){const e=t.value;let s;return s=7===t.type?this.operatorPrecedence[e]||0:4===t.type&&("instanceof"===e||this.context.allowIn&&"in"===e)?12:0,s}parseBinaryExpression(){const t=this.lookahead;let e=this.inheritCoverGrammar(this.parseExponentiationExpression),s=!0,i=!0;const n=t=>{"&&"!==t.value&&"||"!==t.value||(i=!1),"??"===t.value&&(s=!1)},r=this.lookahead;let a=this.binaryPrecedence(r);if(a>0){n(r),this.nextToken(),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;const o=[t,this.lookahead];let h=e,u=this.isolateCoverGrammar(this.parseExponentiationExpression);const c=[h,r.value,u],l=[a];for(;a=this.binaryPrecedence(this.lookahead),!(a<=0);){for((s||"&&"!==this.lookahead.value&&"||"!==this.lookahead.value)&&(i||"??"!==this.lookahead.value)||this.throwUnexpectedToken(this.lookahead),n(this.lookahead);c.length>2&&a<=l[l.length-1];){u=c.pop();const t=c.pop();l.pop(),h=c.pop(),o.pop();const e=o[o.length-1],s=this.startNode(e,e.lineStart),i="||"===t||"&&"===t||"??"===t;c.push(this.finalize(s,i?new ct(t,h,u):new b(t,h,u)))}c.push(this.nextToken().value),l.push(a),o.push(this.lookahead),c.push(this.isolateCoverGrammar(this.parseExponentiationExpression))}let p=c.length-1;e=c[p];let D=o.pop();for(;p>1;){const t=o.pop(),s=D&&D.lineStart,i=this.startNode(t,s),n=c[p-1],r="||"===n||"&&"===n||"??"===n;e=this.finalize(i,r?new ct(n,c[p-2],e):new b(n,c[p-2],e)),p-=2,D=t}}return e}parseConditionalExpression(){const t=this.lookahead;let e=this.inheritCoverGrammar(this.parseBinaryExpression);if(this.match("?")){this.nextToken();const s=this.context.allowIn;this.context.allowIn=!0;const i=this.isolateCoverGrammar(this.parseAssignmentExpression);this.context.allowIn=s,this.expect(":");const n=this.isolateCoverGrammar(this.parseAssignmentExpression);e=this.finalize(this.startNode(t),new J(e,i,n)),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1}return e}checkPatternParam(e,s){switch(s.type){case t.Identifier:this.validateParam(e,s,s.name);break;case t.RestElement:this.checkPatternParam(e,s.argument);break;case t.AssignmentPattern:this.checkPatternParam(e,s.left);break;case t.ArrayPattern:for(let t=0;t<s.elements.length;t++)null!==s.elements[t]&&this.checkPatternParam(e,s.elements[t]);break;case t.ObjectPattern:for(let i=0;i<s.properties.length;i++){const n=s.properties[i];this.checkPatternParam(e,n.type===t.RestElement?n:n.value)}}e.simple=e.simple&&s instanceof tt}reinterpretAsCoverFormalsList(e){let s=[e];const i={simple:!0,paramSet:{}};let n=!1;switch(e.type){case t.Identifier:break;case fe:s=e.params,n=e.async;break;default:return null}for(let e=0;e<s.length;++e){const r=s[e];r.type===t.AssignmentPattern?r.right.type===t.YieldExpression&&(r.right.argument&&this.throwUnexpectedToken(this.lookahead),r.right.type=t.Identifier,r.right.name="yield",delete r.right.argument,delete r.right.delegate):n&&r.type===t.Identifier&&"await"===r.name&&this.throwUnexpectedToken(this.lookahead),this.checkPatternParam(i,r),s[e]=r}if(this.context.strict||!this.context.allowYield)for(let e=0;e<s.length;++e)s[e].type===t.YieldExpression&&this.throwUnexpectedToken(this.lookahead);if(i.hasDuplicateParameterNames){const t=this.context.strict?i.stricted:i.firstRestricted;this.throwUnexpectedToken(t,qt)}return{simple:i.simple,params:s,stricted:i.stricted,firstRestricted:i.firstRestricted,message:i.message}}parseAssignmentExpression(){let e;if(!this.context.allowYield&&this.matchKeyword("yield"))e=this.parseYieldExpression();else{const s=this.lookahead;let i=s;if(e=this.parseConditionalExpression(),3===i.type&&i.lineNumber===this.lookahead.lineNumber&&"async"===i.value&&(3===this.lookahead.type||this.matchKeyword("yield"))){const t=this.parsePrimaryExpression();this.reinterpretExpressionAsPattern(t),e={type:fe,params:[t],async:!0}}if(e.type===fe||this.match("=>")){this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;const i=e.async,n=this.reinterpretAsCoverFormalsList(e);if(n){this.hasLineTerminator&&this.tolerateUnexpectedToken(this.lookahead),this.context.firstCoverInitializedNameError=null;const r=this.context.strict,a=this.context.allowStrictDirective;this.context.allowStrictDirective=n.simple;const o=this.context.allowYield,h=this.context.isAsync;this.context.allowYield=!0,this.context.isAsync=i;const u=this.startNode(s);let c;if(this.expect("=>"),this.match("{")){const t=this.context.allowIn;this.context.allowIn=!0,c=this.parseFunctionSourceElements(),this.context.allowIn=t}else c=this.isolateCoverGrammar(this.parseAssignmentExpression);const l=c.type!==t.BlockStatement;this.context.strict&&n.firstRestricted&&this.throwUnexpectedToken(n.firstRestricted,n.message),this.context.strict&&n.stricted&&this.tolerateUnexpectedToken(n.stricted,n.message),e=this.finalize(u,new y(n.params,c,l,i)),this.context.strict=r,this.context.allowStrictDirective=a,this.context.allowYield=o,this.context.isAsync=h}}else if(this.matchAssign()){if(this.context.isAssignmentTarget||this.tolerateError(Qt),this.context.strict&&e.type===t.Identifier){const t=e;this.scanner.isRestrictedWord(t.name)&&this.tolerateUnexpectedToken(i,"Assignment to eval or arguments is not allowed in strict mode"),this.scanner.isStrictModeReservedWord(t.name)&&this.tolerateUnexpectedToken(i,ce)}this.match("=")?this.reinterpretExpressionAsPattern(e):(this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1),i=this.nextToken();const n=i.value,r=this.isolateCoverGrammar(this.parseAssignmentExpression);e=this.finalize(this.startNode(s),new k(n,e,r)),this.context.firstCoverInitializedNameError=null}}return e}parseExpression(){const t=this.lookahead;let e=this.isolateCoverGrammar(this.parseAssignmentExpression);if(this.match(",")){const s=[];for(s.push(e);2!==this.lookahead.type&&this.match(",");)this.nextToken(),s.push(this.isolateCoverGrammar(this.parseAssignmentExpression));e=this.finalize(this.startNode(t),new wt(s))}return e}parseStatementListItem(){let t;if(this.context.isAssignmentTarget=!0,this.context.isBindingElement=!0,4===this.lookahead.type)switch(this.lookahead.value){case"export":this.context.isModule||this.tolerateUnexpectedToken(this.lookahead,Vt),t=this.parseExportDeclaration();break;case"import":this.matchImportCall()?t=this.parseExpressionStatement():this.matchImportMeta()?t=this.parseStatement():(this.context.isModule||this.tolerateUnexpectedToken(this.lookahead,_t),t=this.parseImportDeclaration());break;case"const":t=this.parseLexicalDeclaration({inFor:!1});break;case"function":t=this.parseFunctionDeclaration();break;case"class":t=this.parseClassDeclaration();break;case"let":t=this.isLexicalDeclaration()?this.parseLexicalDeclaration({inFor:!1}):this.parseStatement();break;default:t=this.parseStatement()}else t=this.parseStatement();return t}parseBlock(){const t=this.createNode();this.expect("{");const e=[];for(;!this.match("}");)e.push(this.parseStatementListItem());return this.expect("}"),this.finalize(t,new T(e))}parseLexicalBinding(e,s){const i=this.createNode(),n=this.parsePattern([],e);this.context.strict&&n.type===t.Identifier&&this.scanner.isRestrictedWord(n.name)&&this.tolerateError(le);let r=null;return"const"===e?this.matchKeyword("in")||this.matchContextualKeyword("of")||(this.match("=")?(this.nextToken(),r=this.isolateCoverGrammar(this.parseAssignmentExpression)):this.throwError("Missing initializer in %0 declaration","const")):(!s.inFor&&n.type!==t.Identifier||this.match("="))&&(this.expect("="),r=this.isolateCoverGrammar(this.parseAssignmentExpression)),this.finalize(i,new Ot(n,r))}parseBindingList(t,e){const s=[this.parseLexicalBinding(t,e)];for(;this.match(",");)this.nextToken(),s.push(this.parseLexicalBinding(t,e));return s}isLexicalDeclaration(){const t=this.scanner.saveState();this.scanner.scanComments();const e=this.scanner.lex();return this.scanner.restoreState(t),3===e.type||7===e.type&&"["===e.value||7===e.type&&"{"===e.value||4===e.type&&"let"===e.value||4===e.type&&"yield"===e.value}parseLexicalDeclaration(t){const e=this.createNode(),s=this.nextToken().value;Wt("let"===s||"const"===s,"Lexical declaration must be either let or const");const i=this.parseBindingList(s,t);return this.consumeSemicolon(),this.finalize(e,new Kt(i,s))}isInitializedProperty(){let t=this.scanner.saveState();this.scanner.scanComments();let e=this.scanner.lex();return this.scanner.restoreState(t),3===this.lookahead.type&&"="===e.value}isDeclaredProperty(){let t=this.scanner.saveState();this.scanner.scanComments();let e=this.scanner.lex();return this.scanner.restoreState(t),3===this.lookahead.type&&";"===e.value||3===this.lookahead.type&&e.lineNumber!==this.startMarker.line}parseBindingRestElement(t,e){const s=this.createNode();this.expect("...");const i=this.parsePattern(t,e);return this.finalize(s,new kt(i))}parseArrayPattern(t,e){const s=this.createNode();this.expect("[");const i=[];for(;!this.match("]");)if(this.match(","))this.nextToken(),i.push(null);else{if(this.match("...")){i.push(this.parseBindingRestElement(t,e));break}i.push(this.parsePatternWithDefault(t,e)),this.match("]")||this.expect(",")}return this.expect("]"),this.finalize(s,new F(i))}parsePropertyPattern(t,e){const s=this.createNode();let i,n,r=!1,a=!1;if(3===this.lookahead.type){const r=this.lookahead;i=this.parseVariableIdentifier();const o=this.finalize(s,new tt(r.value));if(this.match("=")){t.push(r),a=!0,this.nextToken();const e=this.parseAssignmentExpression();n=this.finalize(this.startNode(r),new g(o,e))}else this.match(":")?(this.expect(":"),n=this.parsePatternWithDefault(t,e)):(t.push(r),a=!0,n=o)}else r=this.match("["),i=this.parseObjectPropertyKey(),this.expect(":"),n=this.parsePatternWithDefault(t,e);return this.finalize(s,new At("init",i,r,n,!1,a))}parseRestProperty(t){const e=this.createNode();this.expect("...");const s=this.parsePattern(t);return this.match("=")&&this.throwError("Unexpected token ="),this.match("}")||this.throwError("Unexpected token"),this.finalize(e,new kt(s))}parseObjectPattern(t,e){const s=this.createNode(),i=[];for(this.expect("{");!this.match("}");)i.push(this.match("...")?this.parseRestProperty(t):this.parsePropertyPattern(t,e)),this.match("}")||this.expect(",");return this.expect("}"),this.finalize(s,new Et(i))}parsePattern(t,e){let s;return this.match("[")?s=this.parseArrayPattern(t,e):this.match("{")?s=this.parseObjectPattern(t,e):(!this.matchKeyword("let")||"const"!==e&&"let"!==e||this.tolerateUnexpectedToken(this.lookahead,"let is disallowed as a lexically bound name"),t.push(this.lookahead),s=this.parseVariableIdentifier(e)),s}parsePatternWithDefault(t,e){const s=this.lookahead;let i=this.parsePattern(t,e);if(this.match("=")){this.nextToken();const t=this.context.allowYield;this.context.allowYield=!0;const e=this.isolateCoverGrammar(this.parseAssignmentExpression);this.context.allowYield=t,i=this.finalize(this.startNode(s),new g(i,e))}return i}parseVariableIdentifier(t){const e=this.createNode(),s=this.nextToken();return 4===s.type&&"yield"===s.value?this.context.strict?this.tolerateUnexpectedToken(s,ce):this.context.allowYield||this.throwUnexpectedToken(s):3!==s.type?this.context.strict&&4===s.type&&this.scanner.isStrictModeReservedWord(s.value)?this.tolerateUnexpectedToken(s,ce):(this.context.strict||"let"!==s.value||"var"!==t)&&this.throwUnexpectedToken(s):(this.context.isModule||this.context.isAsync)&&3===s.type&&"await"===s.value&&this.tolerateUnexpectedToken(s),this.finalize(e,new tt(s.value))}parseVariableDeclaration(e){const s=this.createNode(),i=this.parsePattern([],"var");this.context.strict&&i.type===t.Identifier&&this.scanner.isRestrictedWord(i.name)&&this.tolerateError(le);let n=null;return this.match("=")?(this.nextToken(),n=this.isolateCoverGrammar(this.parseAssignmentExpression)):i.type===t.Identifier||e.inFor||this.expect("="),this.finalize(s,new Ot(i,n))}parseVariableDeclarationList(t){const e={inFor:t.inFor},s=[];for(s.push(this.parseVariableDeclaration(e));this.match(",");)this.nextToken(),s.push(this.parseVariableDeclaration(e));return s}parseVariableStatement(){const t=this.createNode();this.expectKeyword("var");const e=this.parseVariableDeclarationList({inFor:!1});return this.consumeSemicolon(),this.finalize(t,new Kt(e,"var"))}parseEmptyStatement(){const t=this.createNode();return this.expect(";"),this.finalize(t,new j)}parseExpressionStatement(){const t=this.createNode(),e=this.parseExpression();return this.consumeSemicolon(),this.finalize(t,new q(e))}parseIfClause(){return this.context.strict&&this.matchKeyword("function")&&this.tolerateError(ae),this.parseStatement()}parseIfStatement(){const t=this.createNode();let e,s=null;this.expectKeyword("if"),this.expect("(");const i=this.parseExpression();return!this.match(")")&&this.config.tolerant?(this.tolerateUnexpectedToken(this.nextToken()),e=this.finalize(this.createNode(),new j)):(this.expect(")"),e=this.parseIfClause(),this.matchKeyword("else")&&(this.nextToken(),s=this.parseIfClause())),this.finalize(t,new et(i,e,s))}parseDoWhileStatement(){const t=this.createNode();this.expectKeyword("do"),this.tolerateInvalidLoopStatement();const e=this.context.inIteration;this.context.inIteration=!0;const s=this.parseStatement();this.context.inIteration=e,this.expectKeyword("while"),this.expect("(");const i=this.parseExpression();return!this.match(")")&&this.config.tolerant?this.tolerateUnexpectedToken(this.nextToken()):(this.expect(")"),this.match(";")&&this.nextToken()),this.finalize(t,new R(s,i))}parseWhileStatement(){const t=this.createNode();let e;this.expectKeyword("while"),this.expect("(");const s=this.parseExpression();if(!this.match(")")&&this.config.tolerant)this.tolerateUnexpectedToken(this.nextToken()),e=this.finalize(this.createNode(),new j);else{this.expect(")");const t=this.context.inIteration;this.context.inIteration=!0,e=this.parseStatement(),this.context.inIteration=t}return this.finalize(t,new Rt(s,e))}parseForStatement(){let e,s,i=null,n=null,r=null,a=!0,o=!1;const h=this.createNode();if(this.expectKeyword("for"),this.matchContextualKeyword("await")&&(this.context.isAsync||this.tolerateUnexpectedToken(this.lookahead),o=!0,this.nextToken()),this.expect("("),this.match(";"))this.nextToken();else if(this.matchKeyword("var")){i=this.createNode(),this.nextToken();const n=this.context.allowIn;this.context.allowIn=!1;const r=this.parseVariableDeclarationList({inFor:!0});if(this.context.allowIn=n,!o&&1===r.length&&this.matchKeyword("in")){const n=r[0];n.init&&(n.id.type===t.ArrayPattern||n.id.type===t.ObjectPattern||this.context.strict)&&this.tolerateError("%0 loop variable declaration may not have an initializer","for-in"),i=this.finalize(i,new Kt(r,"var")),this.nextToken(),e=i,s=this.parseExpression(),i=null}else 1===r.length&&null===r[0].init&&this.matchContextualKeyword("of")?(i=this.finalize(i,new Kt(r,"var")),this.nextToken(),e=i,s=this.parseAssignmentExpression(),i=null,a=!1):(i=this.finalize(i,new Kt(r,"var")),this.expect(";"))}else if(this.matchKeyword("const")||this.matchKeyword("let")){i=this.createNode();const t=this.nextToken().value;if(this.context.strict||"in"!==this.lookahead.value){const n=this.context.allowIn;this.context.allowIn=!1;const r=this.parseBindingList(t,{inFor:!0});this.context.allowIn=n,1===r.length&&null===r[0].init&&this.matchKeyword("in")?(i=this.finalize(i,new Kt(r,t)),this.nextToken(),e=i,s=this.parseExpression(),i=null):1===r.length&&null===r[0].init&&this.matchContextualKeyword("of")?(i=this.finalize(i,new Kt(r,t)),this.nextToken(),e=i,s=this.parseAssignmentExpression(),i=null,a=!1):(this.consumeSemicolon(),i=this.finalize(i,new Kt(r,t)))}else i=this.finalize(i,new tt(t)),this.nextToken(),e=i,s=this.parseExpression(),i=null}else{const n=this.lookahead,r=this.context.isBindingElement,o=this.context.isAssignmentTarget,h=this.context.firstCoverInitializedNameError,u=this.context.allowIn;if(this.context.allowIn=!1,i=this.inheritCoverGrammar(this.parseAssignmentExpression),this.context.allowIn=u,this.matchKeyword("in"))this.context.isAssignmentTarget&&i.type!==t.AssignmentExpression||this.tolerateError("Invalid left-hand side in for-in"),this.nextToken(),this.reinterpretExpressionAsPattern(i),e=i,s=this.parseExpression(),i=null;else if(this.matchContextualKeyword("of"))this.context.isAssignmentTarget&&i.type!==t.AssignmentExpression||this.tolerateError("Invalid left-hand side in for-loop"),this.nextToken(),this.reinterpretExpressionAsPattern(i),e=i,s=this.parseAssignmentExpression(),i=null,a=!1;else{if(this.context.isBindingElement=r,this.context.isAssignmentTarget=o,this.context.firstCoverInitializedNameError=h,this.match(",")){const t=[i];for(;this.match(",");)this.nextToken(),t.push(this.isolateCoverGrammar(this.parseAssignmentExpression));i=this.finalize(this.startNode(n),new wt(t))}this.expect(";")}}let u;if(void 0===e&&(this.match(";")||(n=this.isolateCoverGrammar(this.parseExpression)),this.expect(";"),this.match(")")||(r=this.isolateCoverGrammar(this.parseExpression))),!this.match(")")&&this.config.tolerant)this.tolerateUnexpectedToken(this.nextToken()),u=this.finalize(this.createNode(),new j);else{this.expect(")"),this.tolerateInvalidLoopStatement();const t=this.context.inIteration;this.context.inIteration=!0,u=this.isolateCoverGrammar(this.parseStatement),this.context.inIteration=t}return void 0===e?this.finalize(h,new $(i,n,r,u)):a?this.finalize(h,new V(e,s,u)):this.finalize(h,new _(e,s,u,o))}parseContinueStatement(){const t=this.createNode();this.expectKeyword("continue");let e=null;if(3===this.lookahead.type&&!this.hasLineTerminator){const t=this.parseVariableIdentifier();e=t;const s="$"+t.name;Object.prototype.hasOwnProperty.call(this.context.labelSet,s)||this.throwError(De,t.name)}return this.consumeSemicolon(),null!==e||this.context.inIteration||this.throwError("Illegal continue statement"),this.finalize(t,new L(e))}parseBreakStatement(){const t=this.createNode();this.expectKeyword("break");let e=null;if(3===this.lookahead.type&&!this.hasLineTerminator){const t=this.parseVariableIdentifier(),s="$"+t.name;Object.prototype.hasOwnProperty.call(this.context.labelSet,s)||this.throwError(De,t.name),e=t}return this.consumeSemicolon(),null!==e||this.context.inIteration||this.context.inSwitch||this.throwError("Illegal break statement"),this.finalize(t,new v(e))}parseReturnStatement(){this.context.inFunctionBody||this.tolerateError("Illegal return statement");const t=this.createNode();this.expectKeyword("return");const e=(this.match(";")||this.match("}")||this.hasLineTerminator||2===this.lookahead.type)&&8!==this.lookahead.type&&10!==this.lookahead.type?null:this.parseExpression();return this.consumeSemicolon(),this.finalize(t,new gt(e))}parseWithStatement(){this.context.strict&&this.tolerateError("Strict mode code may not include a with statement");const t=this.createNode();let e;this.expectKeyword("with"),this.expect("(");const s=this.parseExpression();return!this.match(")")&&this.config.tolerant?(this.tolerateUnexpectedToken(this.nextToken()),e=this.finalize(this.createNode(),new j)):(this.expect(")"),e=this.parseStatement()),this.finalize(t,new jt(s,e))}parseSwitchCase(){const t=this.createNode();let e;this.matchKeyword("default")?(this.nextToken(),e=null):(this.expectKeyword("case"),e=this.parseExpression()),this.expect(":");const s=[];for(;!(this.match("}")||this.matchKeyword("default")||this.matchKeyword("case"));)s.push(this.parseStatementListItem());return this.finalize(t,new vt(e,s))}parseSwitchStatement(){const t=this.createNode();this.expectKeyword("switch"),this.expect("(");const e=this.parseExpression();this.expect(")");const s=this.context.inSwitch;this.context.inSwitch=!0;const i=[];let n=!1;for(this.expect("{");!this.match("}");){const t=this.parseSwitchCase();null===t.test&&(n&&this.throwError("More than one default clause in switch statement"),n=!0),i.push(t)}return this.expect("}"),this.context.inSwitch=s,this.finalize(t,new Nt(e,i))}parseLabelledStatement(){const e=this.createNode(),s=this.parseExpression();let i;if(s.type===t.Identifier&&this.match(":")){this.nextToken();const t=s,e="$"+t.name;let n;if(Object.prototype.hasOwnProperty.call(this.context.labelSet,e)&&this.throwError("%0 '%1' has already been declared","Label",t.name),this.context.labelSet[e]=!0,this.matchKeyword("class"))this.tolerateUnexpectedToken(this.lookahead),n=this.parseClassDeclaration();else if(this.matchKeyword("function")){const t=this.lookahead,e=this.parseFunctionDeclaration();this.context.strict?this.tolerateUnexpectedToken(t,ae):e.generator&&this.tolerateUnexpectedToken(t,"Generator declarations are not allowed in legacy contexts"),n=e}else n=this.parseStatement();delete this.context.labelSet[e],i=new ht(t,n)}else this.consumeSemicolon(),i=new q(s);return this.finalize(e,i)}parseThrowStatement(){const t=this.createNode();this.expectKeyword("throw"),this.hasLineTerminator&&this.throwError("Illegal newline after throw");const e=this.parseExpression();return this.consumeSemicolon(),this.finalize(t,new Xt(e))}parseCatchClause(){const e=this.createNode();this.expectKeyword("catch");let s=null;if(this.match("(")){this.expect("("),this.match(")")&&this.throwUnexpectedToken(this.lookahead);const e=[];s=this.parsePattern(e);const i={};for(let t=0;t<e.length;t++){const s="$"+e[t].value;Object.prototype.hasOwnProperty.call(i,s)&&this.tolerateError("Duplicate binding %0",e[t].value),i[s]=!0}this.context.strict&&s.type===t.Identifier&&this.scanner.isRestrictedWord(s.name)&&this.tolerateError("Catch variable may not be eval or arguments in strict mode"),this.expect(")")}const i=this.parseBlock();return this.finalize(e,new I(s,i))}parseFinallyClause(){return this.expectKeyword("finally"),this.parseBlock()}parseTryStatement(){const t=this.createNode();this.expectKeyword("try");const e=this.parseBlock(),s=this.matchKeyword("catch")?this.parseCatchClause():null,i=this.matchKeyword("finally")?this.parseFinallyClause():null;return s||i||this.throwError("Missing catch or finally after try"),this.finalize(t,new Jt(e,s,i))}parseDebuggerStatement(){const t=this.createNode();return this.expectKeyword("debugger"),this.consumeSemicolon(),this.finalize(t,new M)}parseStatement(){let t;switch(this.lookahead.type){case 1:case 5:case 6:case 8:case 10:case 9:t=this.parseExpressionStatement();break;case 7:const e=this.lookahead.value;t="{"===e?this.parseBlock():"("===e?this.parseExpressionStatement():";"===e?this.parseEmptyStatement():this.parseExpressionStatement();break;case 3:t=this.matchAsyncFunction()?this.parseFunctionDeclaration():this.parseLabelledStatement();break;case 4:switch(this.lookahead.value){case"break":t=this.parseBreakStatement();break;case"continue":t=this.parseContinueStatement();break;case"debugger":t=this.parseDebuggerStatement();break;case"do":t=this.parseDoWhileStatement();break;case"for":t=this.parseForStatement();break;case"function":t=this.parseFunctionDeclaration();break;case"if":t=this.parseIfStatement();break;case"return":t=this.parseReturnStatement();break;case"switch":t=this.parseSwitchStatement();break;case"throw":t=this.parseThrowStatement();break;case"try":t=this.parseTryStatement();break;case"var":t=this.parseVariableStatement();break;case"while":t=this.parseWhileStatement();break;case"with":t=this.parseWithStatement();break;default:t=this.parseExpressionStatement()}break;default:t=this.throwUnexpectedToken(this.lookahead)}return t}parseFunctionSourceElements(){const t=this.createNode();this.expect("{");const e=this.parseDirectivePrologues(),s=this.context.labelSet,i=this.context.inIteration,n=this.context.inSwitch,r=this.context.inFunctionBody;for(this.context.labelSet={},this.context.inIteration=!1,this.context.inSwitch=!1,this.context.inFunctionBody=!0;2!==this.lookahead.type&&!this.match("}");)e.push(this.parseStatementListItem());return this.expect("}"),this.context.labelSet=s,this.context.inIteration=i,this.context.inSwitch=n,this.context.inFunctionBody=r,this.finalize(t,new T(e))}validateParam(t,e,s){const i="$"+s;this.context.strict?(this.scanner.isRestrictedWord(s)&&(t.stricted=e,t.message=ue),Object.prototype.hasOwnProperty.call(t.paramSet,i)&&(t.stricted=e,t.hasDuplicateParameterNames=!0)):t.firstRestricted||(this.scanner.isRestrictedWord(s)?(t.firstRestricted=e,t.message=ue):this.scanner.isStrictModeReservedWord(s)?(t.firstRestricted=e,t.message=ce):Object.prototype.hasOwnProperty.call(t.paramSet,i)&&(t.stricted=e,t.hasDuplicateParameterNames=!0)),"function"==typeof Object.defineProperty?Object.defineProperty(t.paramSet,i,{value:!0,enumerable:!0,writable:!0,configurable:!0}):t.paramSet[i]=!0}parseRestElement(t){const e=this.createNode();this.expect("...");const s=this.parsePattern(t);return this.match("=")&&this.throwError("Unexpected token ="),this.match(")")||this.throwError("Rest parameter must be last formal parameter"),this.finalize(e,new kt(s))}parseFormalParameter(t){const e=[],s=this.match("...")?this.parseRestElement(e):this.parsePatternWithDefault(e);for(let s=0;s<e.length;s++)this.validateParam(t,e[s],e[s].value);t.simple=t.simple&&s instanceof tt,t.params.push(s)}parseFormalParameters(t){const e={simple:!0,hasDuplicateParameterNames:!1,params:[],firstRestricted:t};if(this.expect("("),!this.match(")"))for(e.paramSet={};2!==this.lookahead.type&&(this.parseFormalParameter(e),!this.match(")"))&&(this.expect(","),!this.match(")")););return this.expect(")"),e.hasDuplicateParameterNames&&(this.context.strict||this.context.isAsync||!e.simple)&&this.throwError(qt),{simple:e.simple,params:e.params,stricted:e.stricted,firstRestricted:e.firstRestricted,message:e.message}}matchAsyncFunction(){let t=this.matchContextualKeyword("async");if(t){const e=this.scanner.saveState();this.scanner.scanComments();const s=this.scanner.lex();this.scanner.restoreState(e),t=e.lineNumber===s.lineNumber&&4===s.type&&"function"===s.value}return t}parseFunctionDeclaration(t){const e=this.createNode(),s=this.matchContextualKeyword("async");s&&(this.context.inIteration&&this.tolerateError("Async functions can only be declared at the top level or inside a block."),this.nextToken()),this.expectKeyword("function");const i=this.match("*");let n;i&&this.nextToken();let r=null,a=null;if(!t||!this.match("(")){const t=this.lookahead;r=this.parseVariableIdentifier(),this.context.strict?this.scanner.isRestrictedWord(t.value)&&this.tolerateUnexpectedToken(t,oe):this.scanner.isRestrictedWord(t.value)?(a=t,n=oe):this.scanner.isStrictModeReservedWord(t.value)&&(a=t,n=ce)}const o=this.context.isAsync,h=this.context.allowYield;this.context.isAsync=s,this.context.allowYield=!i;const u=this.parseFormalParameters(a),c=u.params,l=u.stricted;a=u.firstRestricted,u.message&&(n=u.message);const p=this.context.strict,D=this.context.allowStrictDirective;this.context.allowStrictDirective=u.simple;const d=this.parseFunctionSourceElements();return this.context.strict&&a&&this.throwUnexpectedToken(a,n),this.context.strict&&l&&this.tolerateUnexpectedToken(l,n),this.context.strict=p,this.context.allowStrictDirective=D,this.context.isAsync=o,this.context.allowYield=h,s?this.finalize(e,new S(r,c,d,i)):this.finalize(e,new Z(r,c,d,i))}parseFunctionExpression(){const t=this.createNode(),e=this.matchContextualKeyword("async");e&&this.nextToken(),this.expectKeyword("function");const s=this.match("*");let i;s&&this.nextToken();let n,r=null;const a=this.context.isAsync,o=this.context.allowYield;if(this.context.isAsync=e,this.context.allowYield=!s,!this.match("(")){const t=this.lookahead;r=this.context.strict||s||!this.matchKeyword("yield")?this.parseVariableIdentifier():this.parseIdentifierName(),this.context.strict?this.scanner.isRestrictedWord(t.value)&&this.tolerateUnexpectedToken(t,oe):this.scanner.isRestrictedWord(t.value)?(n=t,i=oe):this.scanner.isStrictModeReservedWord(t.value)&&(n=t,i=ce)}const h=this.parseFormalParameters(n),u=h.params,c=h.stricted;n=h.firstRestricted,h.message&&(i=h.message);const l=this.context.strict,p=this.context.allowStrictDirective;this.context.allowStrictDirective=h.simple;const D=this.parseFunctionSourceElements();return this.context.strict&&n&&this.throwUnexpectedToken(n,i),this.context.strict&&c&&this.tolerateUnexpectedToken(c,i),this.context.strict=l,this.context.allowStrictDirective=p,this.context.isAsync=a,this.context.allowYield=o,this.finalize(t,new Q(r,u,D,s,e))}parseDirective(){const e=this.lookahead,s=this.createNode(),i=this.parseExpression(),n=i.type===t.Literal?this.getTokenRaw(e).slice(1,-1):null;return this.consumeSemicolon(),this.finalize(s,n?new O(i,n):new q(i))}parseDirectivePrologues(){let t=null;const e=[];for(;;){const s=this.lookahead;if(8!==s.type)break;const i=this.parseDirective();e.push(i);const n=i.directive;if("string"!=typeof n)break;"use strict"===n?(this.context.strict=!0,t&&this.tolerateUnexpectedToken(t,he),this.context.allowStrictDirective||this.tolerateUnexpectedToken(s,"Illegal 'use strict' directive in function with non-simple parameter list")):!t&&s.octal&&(t=s)}return e}qualifiedPropertyName(t){switch(t.type){case 3:case 8:case 1:case 5:case 6:case 4:return!0;case 7:return"["===t.value||"#"===t.value}return!1}parseGetterMethod(){const t=this.createNode(),e=this.context.allowYield;this.context.allowYield=!0;const s=this.parseFormalParameters();s.params.length>0&&this.tolerateError("Getter must not have any formal parameters");const i=this.parsePropertyMethod(s);return this.context.allowYield=e,this.finalize(t,new Q(null,s.params,i,!1,!1))}parseSetterMethod(){const t=this.createNode(),e=this.context.allowYield;this.context.allowYield=!0;const s=this.parseFormalParameters();1!==s.params.length?this.tolerateError("Setter must have exactly one formal parameter"):s.params[0]instanceof kt&&this.tolerateError("Setter function argument must not be a rest parameter");const i=this.parsePropertyMethod(s);return this.context.allowYield=e,this.finalize(t,new Q(null,s.params,i,!1,!1))}parseGeneratorMethod(t){const e=this.createNode(),s=this.context.allowYield;this.context.allowYield=!0;const i=this.parseFormalParameters();this.context.allowYield=!1;const n=this.parsePropertyMethod(i);return this.context.allowYield=s,this.finalize(e,new Q(null,i.params,n,!0,t))}isStartOfExpression(){let t=!0;const e=this.lookahead.value;switch(this.lookahead.type){case 7:t="["===e||"("===e||"{"===e||"+"===e||"-"===e||"!"===e||"~"===e||"++"===e||"--"===e||"/"===e||"/="===e;break;case 4:t="class"===e||"delete"===e||"function"===e||"let"===e||"new"===e||"super"===e||"this"===e||"typeof"===e||"void"===e||"yield"===e}return t}parseYieldExpression(){const t=this.createNode();this.expectKeyword("yield");let e=null,s=!1;if(!this.hasLineTerminator){const t=this.context.allowYield;this.context.allowYield=!1,s=this.match("*"),s?(this.nextToken(),e=this.parseAssignmentExpression()):this.isStartOfExpression()&&(e=this.parseAssignmentExpression()),this.context.allowYield=t}return this.finalize(t,new Gt(e,s))}parseStaticBlock(){const t=this.createNode();this.expect("{");const e=[];for(;!this.match("}");)e.push(this.parseStatementListItem());return this.expect("}"),this.finalize(t,new bt(e))}parseDecorator(){const t=this.createNode();this.expect("@");const e=this.context.strict,s=this.context.allowYield,i=this.context.isAsync;this.context.strict=!1,this.context.allowYield=!0,this.context.isAsync=!1;const n=this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall);return this.context.strict=e,this.context.allowYield=s,this.context.isAsync=i,this.match(";")&&this.throwError("Decorators must not be followed by a semicolon."),this.finalize(t,new K(n))}parseDecorators(){let t=null;for(;this.match("@");)null==t&&(t=[]),t.push(this.parseDecorator());return t}parseClassElement(t){let e=this.lookahead;const s=this.createNode(),i=this.context.inConstructor;let n="",r=null,a=null,o=!1,h=!1,u=!1,c=!1,l=!1,p=!1;const D=this.parseDecorators();if(D&&(e=this.lookahead),this.match("*"))this.nextToken();else{o=this.match("["),this.match("#")&&(p=!0,this.nextToken(),e=this.lookahead),r=this.parseObjectPropertyKey(p);const t=r;if(this.context.inConstructor=3===e.type&&"constructor"===e.value,"static"===t.name&&(this.qualifiedPropertyName(this.lookahead)||this.match("*"))&&(e=this.lookahead,u=!0,o=this.match("["),this.match("*")?(this.nextToken(),this.match("#")&&(p=!0,this.nextToken(),e=this.lookahead)):(this.match("#")&&(p=!0,this.nextToken(),e=this.lookahead),r=this.parseObjectPropertyKey(p))),"static"===t.name&&this.match("{"))return this.parseStaticBlock();if(3===e.type&&!this.hasLineTerminator&&"async"===e.value){const t=this.lookahead.value;":"!==t&&"("!==t&&(c=!0,l=this.match("*"),l&&this.nextToken(),e=this.lookahead,o=this.match("["),this.match("*")?(this.nextToken(),this.match("#")&&(p=!0,this.nextToken())):(this.match("#")&&(p=!0,this.nextToken(),e=this.lookahead),r=this.parseObjectPropertyKey(p)),3!==e.type||"constructor"!==e.value||u||this.tolerateUnexpectedToken(e,"Class constructor may not be an async method"))}}3===e.type&&"constructor"===e.value&&p&&this.tolerateUnexpectedToken(e,"Class constructor may not be a private method");const d=this.qualifiedPropertyName(this.lookahead);if(3===e.type||8===e.type?"get"===e.value&&d?(n="get",this.match("#")&&(p=!0,this.nextToken(),e=this.lookahead),o=this.match("["),r=this.parseObjectPropertyKey(p),this.context.allowYield=!1,a=this.parseGetterMethod()):"set"===e.value&&d?(n="set",this.match("#")&&(p=!0,this.nextToken(),e=this.lookahead),o=this.match("["),r=this.parseObjectPropertyKey(p),a=this.parseSetterMethod()):this.match("(")||(n="property",o=!1,this.match("=")&&(this.nextToken(),a=this.isolateCoverGrammar(this.parseAssignmentExpression))):7===e.type&&"*"===e.value&&d?(n="init",o=this.match("["),r=this.parseObjectPropertyKey(p),a=this.parseGeneratorMethod(c),h=!0):7!==e.type||"["!==e.value||this.match("(")||(n="property",o=!0,this.match("=")&&(this.nextToken(),a=this.isolateCoverGrammar(this.parseAssignmentExpression))),!n&&r&&this.match("(")){const t=this.context.inClassConstructor;this.context.inClassConstructor="constructor"===e.value,n="init",a=c?this.parsePropertyMethodAsyncFunction(l):this.parsePropertyMethodFunction(l),this.context.inClassConstructor=t,h=!0}return n||this.throwUnexpectedToken(this.lookahead),"init"===n&&(n="method"),o||(u&&this.isPropertyKey(r,"prototype")&&this.throwUnexpectedToken(e,"Classes may not have static property named prototype"),!u&&this.isPropertyKey(r,"constructor")&&(("method"!==n||!h||a&&a.generator)&&this.throwUnexpectedToken(e,"Class constructor may not be an accessor"),t.value?this.throwUnexpectedToken(e,"A class may only have one constructor"):t.value=!0,n="constructor")),this.context.inConstructor=i,"property"===n?(this.consumeSemicolon(),this.finalize(s,new Ft(r,o,a,u,D))):this.finalize(s,new Dt(r,o,a,n,u,D))}parseClassElementList(){const t=[],e={value:!1};for(this.expect("{");!this.match("}");)this.match(";")?this.nextToken():t.push(this.parseClassElement(e));return this.expect("}"),t}parseClassBody(){const t=this.createNode(),e=this.parseClassElementList();return this.finalize(t,new z(e))}parseClassDeclaration(t){const e=this.createNode(),s=this.context.strict,i=this.context.allowSuper;this.context.strict=!0,this.expectKeyword("class");const n=t&&3!==this.lookahead.type?null:this.parseVariableIdentifier();let r=null;this.matchKeyword("extends")&&(this.nextToken(),r=this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall),this.context.allowSuper=!0);const a=this.parseClassBody();return this.context.allowSuper=i,this.context.strict=s,this.finalize(e,new U(n,r,a,this.context.decorators))}parseClassExpression(){const t=this.createNode(),e=this.context.strict;this.context.strict=!0,this.expectKeyword("class");const s=3===this.lookahead.type?this.parseVariableIdentifier():null;let i=null;this.matchKeyword("extends")&&(this.nextToken(),i=this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall),this.context.allowSuper=!0);const n=this.parseClassBody();return this.context.strict=e,this.finalize(t,new X(s,i,n,this.context.decorators))}parseModule(){this.context.strict=!0,this.context.isModule=!0,this.scanner.isModule=!0;const t=this.createNode(),e=this.parseDirectivePrologues();for(;2!==this.lookahead.type;)e.push(this.parseStatementListItem());return this.finalize(t,new dt(e))}parseScript(){const t=this.createNode(),e=this.parseDirectivePrologues();for(;2!==this.lookahead.type;)e.push(this.parseStatementListItem());return this.finalize(t,new St(e))}parseImportAttributes(){if("assert"===this.lookahead.value){this.nextToken(),this.expect("{");const t=[];for(;!this.match("}");)t.push(this.parseImportAttribute()),this.match("}")||this.expectCommaSeparator();return this.expect("}"),t}return null}parseImportAttribute(){const t=this.createNode();3!==this.lookahead.type&&this.throwUnexpectedToken(this.nextToken());const e=this.parseIdentifierName();this.match(":")||this.throwUnexpectedToken(this.nextToken()),this.nextToken();const s=this.nextToken(),i=this.getTokenRaw(s),n=this.finalize(t,new ut(s.value,i));return this.finalize(t,new st(e,n))}parseModuleSpecifier(){const t=this.createNode();8!==this.lookahead.type&&this.throwError(te);const e=this.nextToken(),s=this.getTokenRaw(e);return r.isStringWellFormedUnicode(e.value)||this.throwError(te),this.finalize(t,new ut(e.value,s))}parseImportSpecifier(){const t=this.createNode();let e,s;return 3===this.lookahead.type?(e=this.parseVariableIdentifier(),s=e,this.matchContextualKeyword("as")&&(this.nextToken(),s=this.parseVariableIdentifier())):(e=8==this.lookahead.type?this.parseModuleSpecifier():this.parseIdentifierName(),s=e,this.matchContextualKeyword("as")?(this.nextToken(),s=this.parseVariableIdentifier()):this.throwUnexpectedToken(this.nextToken())),this.finalize(t,new ot(s,e))}parseNamedImports(){this.expect("{");const t=[];for(;!this.match("}");)t.push(this.parseImportSpecifier()),this.match("}")||this.expect(",");return this.expect("}"),t}parseImportDefaultSpecifier(){const t=this.createNode(),e=this.parseIdentifierName();return this.finalize(t,new rt(e))}parseImportNamespaceSpecifier(){const t=this.createNode();this.expect("*"),this.matchContextualKeyword("as")||this.throwError("Unexpected token"),this.lookahead.escaped&&this.throwError(ne),this.nextToken();const e=this.parseIdentifierName();return this.finalize(t,new at(e))}parseImportDeclaration(){this.context.inFunctionBody&&this.throwError(_t);const t=this.createNode();let e;this.expectKeyword("import");let s=[];if(8===this.lookahead.type)e=this.parseModuleSpecifier();else{if(this.match("{")?s=s.concat(this.parseNamedImports()):this.match("*")?s.push(this.parseImportNamespaceSpecifier()):this.isIdentifierName(this.lookahead)&&!this.matchKeyword("default")?(s.push(this.parseImportDefaultSpecifier()),this.match(",")&&(this.nextToken(),this.match("*")?s.push(this.parseImportNamespaceSpecifier()):this.match("{")?s=s.concat(this.parseNamedImports()):this.throwUnexpectedToken(this.lookahead))):this.throwUnexpectedToken(this.nextToken()),!this.matchContextualKeyword("from")){const t=this.lookahead.value?pe:ie;this.throwError(t,this.lookahead.value)}this.nextToken(),e=this.parseModuleSpecifier()}const i=this.parseImportAttributes();return this.consumeSemicolon(),this.finalize(t,new nt(s,e,i))}parseExportSpecifier(){const t=this.createNode(),e=8==this.lookahead.type?this.parseModuleSpecifier():this.parseIdentifierName();let s=e;return this.matchContextualKeyword("as")&&(this.lookahead.escaped&&this.throwError(ne),this.nextToken(),s=8==this.lookahead.type?this.parseModuleSpecifier():this.parseIdentifierName()),this.finalize(t,new Y(e,s))}parseExportDeclaration(){this.context.inFunctionBody&&this.throwError(Vt);const t=this.createNode();let e;if(this.expectKeyword("export"),this.matchKeyword("default"))if(this.nextToken(),this.matchKeyword("function")){const s=this.parseFunctionDeclaration(!0);e=this.finalize(t,new H(s))}else if(this.matchKeyword("class")){const s=this.parseClassDeclaration(!0);e=this.finalize(t,new H(s))}else if(this.matchContextualKeyword("async")){const s=this.matchAsyncFunction()?this.parseFunctionDeclaration(!0):this.parseAssignmentExpression();e=this.finalize(t,new H(s))}else{this.matchContextualKeyword("from")&&this.throwError(pe,this.lookahead.value);const s=this.match("{")?this.parseObjectInitializer():this.match("[")?this.parseArrayInitializer():this.parseAssignmentExpression();this.consumeSemicolon(),e=this.finalize(t,new H(s))}else if(this.match("*")){this.nextToken();let s=null;if(this.matchContextualKeyword("as")&&(this.lookahead.escaped&&this.throwError(ne),this.nextToken(),s=8==this.lookahead.type?this.parseModuleSpecifier():this.parseIdentifierName()),!this.matchContextualKeyword("from")){const t=this.lookahead.value?pe:ie;this.throwError(t,this.lookahead.value)}this.lookahead.escaped&&this.throwError(ne),this.nextToken();const i=this.parseModuleSpecifier(),n=this.parseImportAttributes();this.consumeSemicolon(),e=this.finalize(t,new G(i,s,n))}else if(4===this.lookahead.type){let s;switch(this.lookahead.value){case"let":case"const":s=this.parseLexicalDeclaration({inFor:!1});break;case"var":case"class":case"function":s=this.parseStatementListItem();break;default:this.throwUnexpectedToken(this.lookahead)}e=this.finalize(t,new W(s,[],null,null))}else if(this.matchAsyncFunction()){const s=this.parseFunctionDeclaration();e=this.finalize(t,new W(s,[],null,null))}else{const s=[];let i=null,n=!1,r=null;for(this.expect("{");!this.match("}");)n=n||this.matchKeyword("default"),s.push(this.parseExportSpecifier()),this.match("}")||this.expect(",");if(this.expect("}"),this.matchContextualKeyword("from"))this.lookahead.escaped&&this.throwError(ne),this.nextToken(),i=this.parseModuleSpecifier(),r=this.parseImportAttributes(),this.consumeSemicolon();else if(n){const t=this.lookahead.value?pe:ie;this.throwError(t,this.lookahead.value)}else r=this.parseImportAttributes(),this.consumeSemicolon();e=this.finalize(t,new W(null,s,i,r))}return e}}const Fe={quot:'"',amp:"&",apos:"'",gt:">",nbsp:" ",iexcl:"¡",cent:"¢",pound:"£",curren:"¤",yen:"¥",brvbar:"¦",sect:"§",uml:"¨",copy:"©",ordf:"ª",laquo:"«",not:"¬",shy:"­",reg:"®",macr:"¯",deg:"°",plusmn:"±",sup2:"²",sup3:"³",acute:"´",micro:"µ",para:"¶",middot:"·",cedil:"¸",sup1:"¹",ordm:"º",raquo:"»",frac14:"¼",frac12:"½",frac34:"¾",iquest:"¿",Agrave:"À",Aacute:"Á",Acirc:"Â",Atilde:"Ã",Auml:"Ä",Aring:"Å",AElig:"Æ",Ccedil:"Ç",Egrave:"È",Eacute:"É",Ecirc:"Ê",Euml:"Ë",Igrave:"Ì",Iacute:"Í",Icirc:"Î",Iuml:"Ï",ETH:"Ð",Ntilde:"Ñ",Ograve:"Ò",Oacute:"Ó",Ocirc:"Ô",Otilde:"Õ",Ouml:"Ö",times:"×",Oslash:"Ø",Ugrave:"Ù",Uacute:"Ú",Ucirc:"Û",Uuml:"Ü",Yacute:"Ý",THORN:"Þ",szlig:"ß",agrave:"à",aacute:"á",acirc:"â",atilde:"ã",auml:"ä",aring:"å",aelig:"æ",ccedil:"ç",egrave:"è",eacute:"é",ecirc:"ê",euml:"ë",igrave:"ì",iacute:"í",icirc:"î",iuml:"ï",eth:"ð",ntilde:"ñ",ograve:"ò",oacute:"ó",ocirc:"ô",otilde:"õ",ouml:"ö",divide:"÷",oslash:"ø",ugrave:"ù",uacute:"ú",ucirc:"û",uuml:"ü",yacute:"ý",thorn:"þ",yuml:"ÿ",OElig:"Œ",oelig:"œ",Scaron:"Š",scaron:"š",Yuml:"Ÿ",fnof:"ƒ",circ:"ˆ",tilde:"˜",Alpha:"Α",Beta:"Β",Gamma:"Γ",Delta:"Δ",Epsilon:"Ε",Zeta:"Ζ",Eta:"Η",Theta:"Θ",Iota:"Ι",Kappa:"Κ",Lambda:"Λ",Mu:"Μ",Nu:"Ν",Xi:"Ξ",Omicron:"Ο",Pi:"Π",Rho:"Ρ",Sigma:"Σ",Tau:"Τ",Upsilon:"Υ",Phi:"Φ",Chi:"Χ",Psi:"Ψ",Omega:"Ω",alpha:"α",beta:"β",gamma:"γ",delta:"δ",epsilon:"ε",zeta:"ζ",eta:"η",theta:"θ",iota:"ι",kappa:"κ",lambda:"λ",mu:"μ",nu:"ν",xi:"ξ",omicron:"ο",pi:"π",rho:"ρ",sigmaf:"ς",sigma:"σ",tau:"τ",upsilon:"υ",phi:"φ",chi:"χ",psi:"ψ",omega:"ω",thetasym:"ϑ",upsih:"ϒ",piv:"ϖ",ensp:" ",emsp:" ",thinsp:" ",zwnj:"‌",zwj:"‍",lrm:"‎",rlm:"‏",ndash:"–",mdash:"—",lsquo:"‘",rsquo:"’",sbquo:"‚",ldquo:"“",rdquo:"”",bdquo:"„",dagger:"†",Dagger:"‡",bull:"•",hellip:"…",permil:"‰",prime:"′",Prime:"″",lsaquo:"‹",rsaquo:"›",oline:"‾",frasl:"⁄",euro:"€",image:"ℑ",weierp:"℘",real:"ℜ",trade:"™",alefsym:"ℵ",larr:"←",uarr:"↑",rarr:"→",darr:"↓",harr:"↔",crarr:"↵",lArr:"⇐",uArr:"⇑",rArr:"⇒",dArr:"⇓",hArr:"⇔",forall:"∀",part:"∂",exist:"∃",empty:"∅",nabla:"∇",isin:"∈",notin:"∉",ni:"∋",prod:"∏",sum:"∑",minus:"−",lowast:"∗",radic:"√",prop:"∝",infin:"∞",ang:"∠",and:"∧",or:"∨",cap:"∩",cup:"∪",int:"∫",there4:"∴",sim:"∼",cong:"≅",asymp:"≈",ne:"≠",equiv:"≡",le:"≤",ge:"≥",sub:"⊂",sup:"⊃",nsub:"⊄",sube:"⊆",supe:"⊇",oplus:"⊕",otimes:"⊗",perp:"⊥",sdot:"⋅",lceil:"⌈",rceil:"⌉",lfloor:"⌊",rfloor:"⌋",loz:"◊",spades:"♠",clubs:"♣",hearts:"♥",diams:"♦",lang:"⟨",rang:"⟩"};function ye(t){let e;switch(t.type){case a.JSXIdentifier:e=t.name;break;case a.JSXNamespacedName:const s=t;e=ye(s.namespace)+":"+ye(s.name);break;case a.JSXMemberExpression:const i=t;e=ye(i.object)+"."+ye(i.property)}return e}Ce[100]="JSXIdentifier",Ce[101]="JSXText";class ke extends Ae{constructor(t,e,s){super(t,e,s)}parsePrimaryExpression(){return this.match("<")?this.parseJSXRoot():super.parsePrimaryExpression()}startJSX(){this.scanner.index=this.startMarker.index,this.scanner.lineNumber=this.startMarker.line,this.scanner.lineStart=this.startMarker.index-this.startMarker.column}finishJSX(){this.nextToken()}reenterJSX(){this.startJSX(),this.expectJSX("}"),this.config.tokens&&this.tokens.pop()}createJSXNode(){return this.collectComments(),{index:this.scanner.index,line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}}createJSXChildNode(){return{index:this.scanner.index,line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}}scanXHTMLEntity(t){let e="&",s=!0,i=!1,n=!1,a=!1;for(;!this.scanner.eof()&&s&&!i;){const o=this.scanner.source[this.scanner.index];if(o===t)break;if(i=";"===o,e+=o,++this.scanner.index,!i)switch(e.length){case 2:n="#"===o;break;case 3:n&&(a="x"===o,s=a||r.isDecimalDigit(o.charCodeAt(0)),n=n&&!a);break;default:s=s&&!(n&&!r.isDecimalDigit(o.charCodeAt(0))),s=s&&!(a&&!r.isHexDigit(o.charCodeAt(0)))}}if(s&&i&&e.length>2){const t=e.substr(1,e.length-2);n&&t.length>1?e=String.fromCharCode(parseInt(t.substr(1),10)):a&&t.length>2?e=String.fromCharCode(parseInt("0"+t.substr(1),16)):n||a||!Fe[t]||(e=Fe[t])}return e}lexJSX(){const t=this.scanner.source.charCodeAt(this.scanner.index);if(60===t||62===t||47===t||58===t||61===t||123===t||125===t)return{type:7,value:this.scanner.source[this.scanner.index++],lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:this.scanner.index-1,end:this.scanner.index};if(34===t||39===t){const t=this.scanner.index,e=this.scanner.source[this.scanner.index++];let s="";for(;!this.scanner.eof();){const t=this.scanner.source[this.scanner.index++];if(t===e)break;s+="&"===t?this.scanXHTMLEntity(e):t}return{type:8,value:s,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:t,end:this.scanner.index}}if(46===t){const t=this.scanner.source.charCodeAt(this.scanner.index+1),e=this.scanner.source.charCodeAt(this.scanner.index+2),s=46===t&&46===e?"...":".",i=this.scanner.index;return this.scanner.index+=s.length,{type:7,value:s,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:i,end:this.scanner.index}}if(96===t)return{type:10,value:"",lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:this.scanner.index,end:this.scanner.index};if(r.isIdentifierStart(t)&&92!==t){const t=this.scanner.index;for(++this.scanner.index;!this.scanner.eof();){const t=this.scanner.source.charCodeAt(this.scanner.index);if(r.isIdentifierPart(t)&&92!==t)++this.scanner.index;else{if(45!==t)break;++this.scanner.index}}return{type:100,value:this.scanner.source.slice(t,this.scanner.index),lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:t,end:this.scanner.index}}return this.scanner.lex()}nextJSXToken(){this.collectComments(),this.startMarker.index=this.scanner.index,this.startMarker.line=this.scanner.lineNumber,this.startMarker.column=this.scanner.index-this.scanner.lineStart;const t=this.lexJSX();return this.lastMarker.index=this.scanner.index,this.lastMarker.line=this.scanner.lineNumber,this.lastMarker.column=this.scanner.index-this.scanner.lineStart,this.config.tokens&&this.tokens.push(this.convertToken(t)),t}nextJSXText(){this.startMarker.index=this.scanner.index,this.startMarker.line=this.scanner.lineNumber,this.startMarker.column=this.scanner.index-this.scanner.lineStart;const t=this.scanner.index;let e="";for(;!this.scanner.eof();){const t=this.scanner.source[this.scanner.index];if("{"===t||"<"===t)break;++this.scanner.index,e+=t,r.isLineTerminator(t.charCodeAt(0))&&(++this.scanner.lineNumber,"\r"===t&&"\n"===this.scanner.source[this.scanner.index]&&++this.scanner.index,this.scanner.lineStart=this.scanner.index)}this.lastMarker.index=this.scanner.index,this.lastMarker.line=this.scanner.lineNumber,this.lastMarker.column=this.scanner.index-this.scanner.lineStart;const s={type:101,value:e,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:t,end:this.scanner.index};return e.length>0&&this.config.tokens&&this.tokens.push(this.convertToken(s)),s}peekJSXToken(){const t=this.scanner.saveState();this.scanner.scanComments();const e=this.lexJSX();return this.scanner.restoreState(t),e}expectJSX(t){const e=this.nextJSXToken();7===e.type&&e.value===t||this.throwUnexpectedToken(e)}matchJSX(t){const e=this.peekJSXToken();return 7===e.type&&e.value===t}parseJSXIdentifier(){const t=this.createJSXNode(),e=this.nextJSXToken();return 100!==e.type&&this.throwUnexpectedToken(e),this.finalize(t,new p(e.value))}parseJSXElementName(){const t=this.createJSXNode();let e=this.parseJSXIdentifier();if(this.matchJSX(":")){const s=e;this.expectJSX(":");const i=this.parseJSXIdentifier();e=this.finalize(t,new m(s,i))}else if(this.matchJSX("."))for(;this.matchJSX(".");){const s=e;this.expectJSX(".");const i=this.parseJSXIdentifier();e=this.finalize(t,new D(s,i))}return e}parseJSXAttributeName(){const t=this.createJSXNode();let e;const s=this.parseJSXIdentifier();if(this.matchJSX(":")){const i=s;this.expectJSX(":");const n=this.parseJSXIdentifier();e=this.finalize(t,new m(i,n))}else e=s;return e}parseJSXStringLiteralAttribute(){const t=this.createJSXNode(),e=this.nextJSXToken();8!==e.type&&this.throwUnexpectedToken(e);const s=this.getTokenRaw(e);return this.finalize(t,new ut(e.value,s))}parseJSXExpressionAttribute(){const t=this.createJSXNode();this.expectJSX("{"),this.finishJSX(),this.match("}")&&this.tolerateError("JSX attributes must only be assigned a non-empty expression");const e=this.parseAssignmentExpression();return this.reenterJSX(),this.finalize(t,new l(e))}parseJSXAttributeValue(){return this.matchJSX("{")?this.parseJSXExpressionAttribute():this.matchJSX("<")?this.parseJSXElement():this.parseJSXStringLiteralAttribute()}parseJSXNameValueAttribute(){const t=this.createJSXNode(),e=this.parseJSXAttributeName();let s=null;return this.matchJSX("=")&&(this.expectJSX("="),s=this.parseJSXAttributeValue()),this.finalize(t,new d(e,s))}parseJSXSpreadAttribute(){const t=this.createJSXNode();this.expectJSX("{"),this.expectJSX("..."),this.finishJSX();const e=this.parseAssignmentExpression();return this.reenterJSX(),this.finalize(t,new C(e))}parseJSXAttributes(){const t=[];for(;!this.matchJSX("/")&&!this.matchJSX(">");){const e=this.matchJSX("{")?this.parseJSXSpreadAttribute():this.parseJSXNameValueAttribute();t.push(e)}return t}parseJSXOpeningElement(){const t=this.createJSXNode();if(this.expectJSX("<"),this.matchJSX(">"))return this.expectJSX(">"),this.finalize(t,new E(!1));const e=this.parseJSXElementName(),s=this.parseJSXAttributes(),i=this.matchJSX("/");return i&&this.expectJSX("/"),this.expectJSX(">"),this.finalize(t,new x(e,i,s))}parseJSXBoundaryElement(){const t=this.createJSXNode();if(this.expectJSX("<"),this.matchJSX("/")){if(this.expectJSX("/"),this.matchJSX(">"))return this.expectJSX(">"),this.finalize(t,new h);const e=this.parseJSXElementName();return this.expectJSX(">"),this.finalize(t,new o(e))}const e=this.parseJSXElementName(),s=this.parseJSXAttributes(),i=this.matchJSX("/");return i&&this.expectJSX("/"),this.expectJSX(">"),this.finalize(t,new x(e,i,s))}parseJSXEmptyExpression(){const t=this.createJSXChildNode();return this.collectComments(),this.lastMarker.index=this.scanner.index,this.lastMarker.line=this.scanner.lineNumber,this.lastMarker.column=this.scanner.index-this.scanner.lineStart,this.finalize(t,new c)}parseJSXExpressionContainer(){const t=this.createJSXNode();let e;return this.expectJSX("{"),this.matchJSX("}")?(e=this.parseJSXEmptyExpression(),this.expectJSX("}")):(this.finishJSX(),e=this.parseAssignmentExpression(),this.reenterJSX()),this.finalize(t,new l(e))}parseJSXChildren(){const t=[];for(;!this.scanner.eof();){const e=this.createJSXChildNode(),s=this.nextJSXText();if(s.start<s.end){const i=this.getTokenRaw(s),n=this.finalize(e,new f(s.value,i));t.push(n)}if("{"!==this.scanner.source[this.scanner.index])break;{const e=this.parseJSXExpressionContainer();t.push(e)}}return t}parseComplexJSXElement(t){const e=[];for(;!this.scanner.eof();){t.children=t.children.concat(this.parseJSXChildren());const s=this.createJSXChildNode(),i=this.parseJSXBoundaryElement();if(i.type===a.JSXOpeningElement){const n=i;if(n.selfClosing){const e=this.finalize(s,new u(n,[],null));t.children.push(e)}else e.push(t),t={node:s,opening:n,closing:null,children:[]}}if(i.type===a.JSXClosingElement){t.closing=i;const s=ye(t.opening.name);if(s!==ye(t.closing.name)&&this.tolerateError("Expected corresponding JSX closing tag for %0",s),!(e.length>0))break;{const s=this.finalize(t.node,new u(t.opening,t.children,t.closing));(t=e[e.length-1]).children.push(s),e.pop()}}if(i.type===a.JSXClosingFragment){if(t.closing=i,t.opening.type===a.JSXOpeningFragment)break;this.tolerateError("Expected corresponding JSX closing tag for jsx fragment")}}return t}parseJSXElement(){const t=this.createJSXNode(),e=this.parseJSXOpeningElement();let s=[],i=null;if(!e.selfClosing){const n=this.parseComplexJSXElement({node:t,opening:e,closing:i,children:s});s=n.children,i=n.closing}return this.finalize(t,new u(e,s,i))}parseJSXRoot(){this.config.tokens&&this.tokens.pop(),this.startJSX();const t=this.parseJSXElement();return this.finishJSX(),t}isStartOfExpression(){return super.isStartOfExpression()||this.match("<")}}const ge=["(","{","[","in","typeof","instanceof","new","return","case","delete","throw","void","=","+=","-=","*=","**=","/=","%=","<<=",">>=",">>>=","&=","|=","^=",",","+","-","*","**","/","%","++","--","<<",">>",">>>","&","|","^","!","~","&&","||","??","?",":","===","==",">=","<=","<",">","!=","!=="];class Se{constructor(){this.values=[],this.curly=this.paren=-1}beforeFunctionExpression(t){return ge.includes(t)}isRegexStart(){const t=this.values[this.values.length-1];let e=null!==t;switch(t){case"this":case"]":e=!1;break;case")":const t=this.values[this.paren-1];e="if"===t||"while"===t||"for"===t||"with"===t;break;case"}":if(e=!0,"function"===this.values[this.curly-3]){const t=this.values[this.curly-4];e=!!t&&!this.beforeFunctionExpression(t)}else if("function"===this.values[this.curly-4]){const t=this.values[this.curly-5];e=!t||!this.beforeFunctionExpression(t)}}return e}push(t){7===t.type||4===t.type?("{"===t.value?this.curly=this.values.length:"("===t.value&&(this.paren=this.values.length),this.values.push(t.value)):this.values.push(null)}}class we{constructor(t,e){this.errorHandler=new Yt,this.errorHandler.tolerant=!!e&&"boolean"==typeof e.tolerant&&e.tolerant,this.scanner=new Ee(t,this.errorHandler),this.scanner.trackComment=!!e&&"boolean"==typeof e.comment&&e.comment,this.trackRange=!!e&&"boolean"==typeof e.range&&e.range,this.trackLoc=!!e&&"boolean"==typeof e.loc&&e.loc,this.buffer=[],this.reader=new Se}errors(){return this.errorHandler.errors}getNextToken(){if(0===this.buffer.length){const t=this.scanner.scanComments();if(this.scanner.trackComment)for(let e=0;e<t.length;++e){const s=t[e],i=this.scanner.source.slice(s.slice[0],s.slice[1]),n={type:s.multiLine?"BlockComment":"LineComment",value:i};this.trackRange&&(n.range=s.range),this.trackLoc&&(n.loc=s.loc),this.buffer.push(n)}if(!this.scanner.eof()){let t,e;if(this.trackLoc&&(t={start:{line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart},end:{}}),"/"===this.scanner.source[this.scanner.index]&&this.reader.isRegexStart()){const t=this.scanner.saveState();try{e=this.scanner.scanRegExp()}catch(s){this.scanner.restoreState(t),e=this.scanner.lex()}}else e=this.scanner.lex();this.reader.push(e);const s={type:Ce[e.type],value:this.scanner.source.slice(e.start,e.end)};if(this.trackRange&&(s.range=[e.start,e.end]),this.trackLoc&&(t.end={line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart},s.loc=t),9===e.type){const t=e.pattern,i=e.flags;s.regex={pattern:t,flags:i}}this.buffer.push(s)}}return this.buffer.shift()}}function Be(t,e,s){let n=null;const r=(t,e)=>{s&&s(t,e),n&&n.visit(t,e)};let a="function"==typeof s?r:null,o=!1;if(e){o="boolean"==typeof e.comment&&e.comment;const t="boolean"==typeof e.attachComment&&e.attachComment;(o||t)&&(n=new i,n.attach=t,e.comment=!0,a=r)}let h,u=!1;e&&"string"==typeof e.sourceType&&(u="module"===e.sourceType),h=e&&"boolean"==typeof e.jsx&&e.jsx?new ke(t,e,a):new Ae(t,e,a);const c=u?h.parseModule():h.parseScript();return o&&n&&(c.comments=n.comments),h.config.tokens&&(c.tokens=h.tokens),h.config.tolerant&&(c.errors=h.errorHandler.errors),c}function be(t,e,s){const i=e||{};return i.sourceType="module",Be(t,i,s)}function Te(t,e,s){const i=e||{};return i.sourceType="script",Be(t,i,s)}function ve(t,e,s){const i=new we(t,e),n=[];try{for(;;){let t=i.getNextToken();if(!t)break;s&&(t=s(t)),n.push(t)}}catch(t){i.errorHandler.tolerate(t)}return i.errorHandler.tolerant&&(n.errors=i.errors()),n}const Ne="5.7.1";var Ie={parse:Be,parseModule:be,parseScript:Te,tokenize:ve,Syntax:t,version:Ne};return s})()));
