@hpcc-js/observablehq-compiler 1.2.10 → 1.2.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.esm.js +404 -92
- package/dist/index.esm.js.map +1 -1
- package/dist/index.esm.min.js +2 -2
- package/dist/index.esm.min.js.map +1 -1
- package/dist/index.js +404 -92
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +2 -2
- package/dist/index.min.js.map +1 -1
- package/package.json +4 -4
- package/src/__package__.ts +2 -2
- package/src/cst.ts +5 -2
- package/types/__package__.d.ts +2 -2
- package/types/cst.d.ts.map +1 -1
- package/types-3.4/__package__.d.ts +2 -2
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../../../node_modules/acorn/dist/acorn.mjs","../../../node_modules/@observablehq/parser/src/globals.js","../../../node_modules/acorn-walk/dist/walk.mjs","../../../node_modules/@observablehq/parser/src/walk.js","../../../node_modules/@observablehq/parser/src/references.js","../../../node_modules/@observablehq/parser/src/features.js","../../../node_modules/@observablehq/parser/src/parse.js","../../observable-shim/src/parse.ts","../src/util.ts","../src/cst.ts","../src/writer.ts","../src/compiler.ts"],"sourcesContent":["// This file was generated. Do not modify manually!\nvar astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 81, 2, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 9, 5351, 0, 7, 14, 13835, 9, 87, 9, 39, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4706, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 983, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];\n\n// This file was generated. Do not modify manually!\nvar astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 68, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 4026, 582, 8634, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 757, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 3104, 541, 1507, 4938, 6, 4191];\n\n// This file was generated. Do not modify manually!\nvar nonASCIIidentifierChars = \"\\u200c\\u200d\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0898-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0cf3\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ece\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1ace\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\";\n\n// This file was generated. Do not modify manually!\nvar nonASCIIidentifierStartChars = \"\\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\\u0870-\\u0887\\u0889-\\u088e\\u08a0-\\u08c9\\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\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\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-\\u1711\\u171f-\\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-\\u1b4c\\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-\\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-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7ca\\ua7d0\\ua7d1\\ua7d3\\ua7d5-\\ua7d9\\ua7f2-\\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-\\uab69\\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\";\n\n// These are a run-length and offset encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range.\n\n// Reserved word lists for various dialects of the language\n\nvar reservedWords = {\n 3: \"abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile\",\n 5: \"class enum extends super const export import\",\n 6: \"enum\",\n strict: \"implements interface let package private protected public static yield\",\n strictBind: \"eval arguments\"\n};\n\n// And the keywords\n\nvar ecma5AndLessKeywords = \"break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this\";\n\nvar keywords$1 = {\n 5: ecma5AndLessKeywords,\n \"5module\": ecma5AndLessKeywords + \" export import\",\n 6: ecma5AndLessKeywords + \" const class extends export import super\"\n};\n\nvar keywordRelationalOperator = /^in(stanceof)?$/;\n\n// ## Character categories\n\nvar nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\");\nvar nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\");\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code, set) {\n var pos = 0x10000;\n for (var i = 0; i < set.length; i += 2) {\n pos += set[i];\n if (pos > code) { return false }\n pos += set[i + 1];\n if (pos >= code) { return true }\n }\n return false\n}\n\n// Test whether a given character code starts an identifier.\n\nfunction isIdentifierStart(code, astral) {\n if (code < 65) { return code === 36 }\n if (code < 91) { return true }\n if (code < 97) { return code === 95 }\n if (code < 123) { return true }\n if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)) }\n if (astral === false) { return false }\n return isInAstralSet(code, astralIdentifierStartCodes)\n}\n\n// Test whether a given character is part of an identifier.\n\nfunction isIdentifierChar(code, astral) {\n if (code < 48) { return code === 36 }\n if (code < 58) { return true }\n if (code < 65) { return false }\n if (code < 91) { return true }\n if (code < 97) { return code === 95 }\n if (code < 123) { return true }\n if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)) }\n if (astral === false) { return false }\n return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes)\n}\n\n// ## Token types\n\n// The assignment of fine-grained, information-carrying type objects\n// allows the tokenizer to store the information it has about a\n// token in a way that is very cheap for the parser to look up.\n\n// All token type variables start with an underscore, to make them\n// easy to recognize.\n\n// The `beforeExpr` property is used to disambiguate between regular\n// expressions and divisions. It is set on all token types that can\n// be followed by an expression (thus, a slash after them would be a\n// regular expression).\n//\n// The `startsExpr` property is used to check if the token ends a\n// `yield` expression. It is set on all token types that either can\n// directly start an expression (like a quotation mark) or can\n// continue an expression (like the body of a string).\n//\n// `isLoop` marks a keyword as starting a loop, which is important\n// to know when parsing a label, in order to allow or disallow\n// continue jumps to that label.\n\nvar TokenType = function TokenType(label, conf) {\n if ( conf === void 0 ) conf = {};\n\n this.label = label;\n this.keyword = conf.keyword;\n this.beforeExpr = !!conf.beforeExpr;\n this.startsExpr = !!conf.startsExpr;\n this.isLoop = !!conf.isLoop;\n this.isAssign = !!conf.isAssign;\n this.prefix = !!conf.prefix;\n this.postfix = !!conf.postfix;\n this.binop = conf.binop || null;\n this.updateContext = null;\n};\n\nfunction binop(name, prec) {\n return new TokenType(name, {beforeExpr: true, binop: prec})\n}\nvar beforeExpr = {beforeExpr: true}, startsExpr = {startsExpr: true};\n\n// Map keyword names to token types.\n\nvar keywords = {};\n\n// Succinct definitions of keyword token types\nfunction kw(name, options) {\n if ( options === void 0 ) options = {};\n\n options.keyword = name;\n return keywords[name] = new TokenType(name, options)\n}\n\nvar types$1 = {\n num: new TokenType(\"num\", startsExpr),\n regexp: new TokenType(\"regexp\", startsExpr),\n string: new TokenType(\"string\", startsExpr),\n name: new TokenType(\"name\", startsExpr),\n privateId: new TokenType(\"privateId\", startsExpr),\n eof: new TokenType(\"eof\"),\n\n // Punctuation token types.\n bracketL: new TokenType(\"[\", {beforeExpr: true, startsExpr: true}),\n bracketR: new TokenType(\"]\"),\n braceL: new TokenType(\"{\", {beforeExpr: true, startsExpr: true}),\n braceR: new TokenType(\"}\"),\n parenL: new TokenType(\"(\", {beforeExpr: true, startsExpr: true}),\n parenR: new TokenType(\")\"),\n comma: new TokenType(\",\", beforeExpr),\n semi: new TokenType(\";\", beforeExpr),\n colon: new TokenType(\":\", beforeExpr),\n dot: new TokenType(\".\"),\n question: new TokenType(\"?\", beforeExpr),\n questionDot: new TokenType(\"?.\"),\n arrow: new TokenType(\"=>\", beforeExpr),\n template: new TokenType(\"template\"),\n invalidTemplate: new TokenType(\"invalidTemplate\"),\n ellipsis: new TokenType(\"...\", beforeExpr),\n backQuote: new TokenType(\"`\", startsExpr),\n dollarBraceL: new TokenType(\"${\", {beforeExpr: true, startsExpr: true}),\n\n // Operators. These carry several kinds of properties to help the\n // parser use them properly (the presence of these properties is\n // what categorizes them as operators).\n //\n // `binop`, when present, specifies that this operator is a binary\n // operator, and will refer to its precedence.\n //\n // `prefix` and `postfix` mark the operator as a prefix or postfix\n // unary operator.\n //\n // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as\n // binary operators with a very low precedence, that should result\n // in AssignmentExpression nodes.\n\n eq: new TokenType(\"=\", {beforeExpr: true, isAssign: true}),\n assign: new TokenType(\"_=\", {beforeExpr: true, isAssign: true}),\n incDec: new TokenType(\"++/--\", {prefix: true, postfix: true, startsExpr: true}),\n prefix: new TokenType(\"!/~\", {beforeExpr: true, prefix: true, startsExpr: true}),\n logicalOR: binop(\"||\", 1),\n logicalAND: binop(\"&&\", 2),\n bitwiseOR: binop(\"|\", 3),\n bitwiseXOR: binop(\"^\", 4),\n bitwiseAND: binop(\"&\", 5),\n equality: binop(\"==/!=/===/!==\", 6),\n relational: binop(\"</>/<=/>=\", 7),\n bitShift: binop(\"<</>>/>>>\", 8),\n plusMin: new TokenType(\"+/-\", {beforeExpr: true, binop: 9, prefix: true, startsExpr: true}),\n modulo: binop(\"%\", 10),\n star: binop(\"*\", 10),\n slash: binop(\"/\", 10),\n starstar: new TokenType(\"**\", {beforeExpr: true}),\n coalesce: binop(\"??\", 1),\n\n // Keyword token types.\n _break: kw(\"break\"),\n _case: kw(\"case\", beforeExpr),\n _catch: kw(\"catch\"),\n _continue: kw(\"continue\"),\n _debugger: kw(\"debugger\"),\n _default: kw(\"default\", beforeExpr),\n _do: kw(\"do\", {isLoop: true, beforeExpr: true}),\n _else: kw(\"else\", beforeExpr),\n _finally: kw(\"finally\"),\n _for: kw(\"for\", {isLoop: true}),\n _function: kw(\"function\", startsExpr),\n _if: kw(\"if\"),\n _return: kw(\"return\", beforeExpr),\n _switch: kw(\"switch\"),\n _throw: kw(\"throw\", beforeExpr),\n _try: kw(\"try\"),\n _var: kw(\"var\"),\n _const: kw(\"const\"),\n _while: kw(\"while\", {isLoop: true}),\n _with: kw(\"with\"),\n _new: kw(\"new\", {beforeExpr: true, startsExpr: true}),\n _this: kw(\"this\", startsExpr),\n _super: kw(\"super\", startsExpr),\n _class: kw(\"class\", startsExpr),\n _extends: kw(\"extends\", beforeExpr),\n _export: kw(\"export\"),\n _import: kw(\"import\", startsExpr),\n _null: kw(\"null\", startsExpr),\n _true: kw(\"true\", startsExpr),\n _false: kw(\"false\", startsExpr),\n _in: kw(\"in\", {beforeExpr: true, binop: 7}),\n _instanceof: kw(\"instanceof\", {beforeExpr: true, binop: 7}),\n _typeof: kw(\"typeof\", {beforeExpr: true, prefix: true, startsExpr: true}),\n _void: kw(\"void\", {beforeExpr: true, prefix: true, startsExpr: true}),\n _delete: kw(\"delete\", {beforeExpr: true, prefix: true, startsExpr: true})\n};\n\n// Matches a whole line break (where CRLF is considered a single\n// line break). Used to count lines.\n\nvar lineBreak = /\\r\\n?|\\n|\\u2028|\\u2029/;\nvar lineBreakG = new RegExp(lineBreak.source, \"g\");\n\nfunction isNewLine(code) {\n return code === 10 || code === 13 || code === 0x2028 || code === 0x2029\n}\n\nfunction nextLineBreak(code, from, end) {\n if ( end === void 0 ) end = code.length;\n\n for (var i = from; i < end; i++) {\n var next = code.charCodeAt(i);\n if (isNewLine(next))\n { return i < end - 1 && next === 13 && code.charCodeAt(i + 1) === 10 ? i + 2 : i + 1 }\n }\n return -1\n}\n\nvar nonASCIIwhitespace = /[\\u1680\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]/;\n\nvar skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g;\n\nvar ref = Object.prototype;\nvar hasOwnProperty = ref.hasOwnProperty;\nvar toString = ref.toString;\n\nvar hasOwn = Object.hasOwn || (function (obj, propName) { return (\n hasOwnProperty.call(obj, propName)\n); });\n\nvar isArray = Array.isArray || (function (obj) { return (\n toString.call(obj) === \"[object Array]\"\n); });\n\nfunction wordsRegexp(words) {\n return new RegExp(\"^(?:\" + words.replace(/ /g, \"|\") + \")$\")\n}\n\nfunction codePointToString(code) {\n // UTF-16 Decoding\n if (code <= 0xFFFF) { return String.fromCharCode(code) }\n code -= 0x10000;\n return String.fromCharCode((code >> 10) + 0xD800, (code & 1023) + 0xDC00)\n}\n\nvar loneSurrogate = /(?:[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/;\n\n// These are used when `options.locations` is on, for the\n// `startLoc` and `endLoc` properties.\n\nvar Position = function Position(line, col) {\n this.line = line;\n this.column = col;\n};\n\nPosition.prototype.offset = function offset (n) {\n return new Position(this.line, this.column + n)\n};\n\nvar SourceLocation = function SourceLocation(p, start, end) {\n this.start = start;\n this.end = end;\n if (p.sourceFile !== null) { this.source = p.sourceFile; }\n};\n\n// The `getLineInfo` function is mostly useful when the\n// `locations` option is off (for performance reasons) and you\n// want to find the line/column position for a given character\n// offset. `input` should be the code string that the offset refers\n// into.\n\nfunction getLineInfo(input, offset) {\n for (var line = 1, cur = 0;;) {\n var nextBreak = nextLineBreak(input, cur, offset);\n if (nextBreak < 0) { return new Position(line, offset - cur) }\n ++line;\n cur = nextBreak;\n }\n}\n\n// A second argument must be given to configure the parser process.\n// These options are recognized (only `ecmaVersion` is required):\n\nvar defaultOptions = {\n // `ecmaVersion` indicates the ECMAScript version to parse. Must be\n // either 3, 5, 6 (or 2015), 7 (2016), 8 (2017), 9 (2018), 10\n // (2019), 11 (2020), 12 (2021), 13 (2022), 14 (2023), or `\"latest\"`\n // (the latest version the library supports). This influences\n // support for strict mode, the set of reserved words, and support\n // for new syntax features.\n ecmaVersion: null,\n // `sourceType` indicates the mode the code should be parsed in.\n // Can be either `\"script\"` or `\"module\"`. This influences global\n // strict mode and parsing of `import` and `export` declarations.\n sourceType: \"script\",\n // `onInsertedSemicolon` can be a callback that will be called\n // when a semicolon is automatically inserted. It will be passed\n // the position of the comma as an offset, and if `locations` is\n // enabled, it is given the location as a `{line, column}` object\n // as second argument.\n onInsertedSemicolon: null,\n // `onTrailingComma` is similar to `onInsertedSemicolon`, but for\n // trailing commas.\n onTrailingComma: null,\n // By default, reserved words are only enforced if ecmaVersion >= 5.\n // Set `allowReserved` to a boolean value to explicitly turn this on\n // an off. When this option has the value \"never\", reserved words\n // and keywords can also not be used as property names.\n allowReserved: null,\n // When enabled, a return at the top level is not considered an\n // error.\n allowReturnOutsideFunction: false,\n // When enabled, import/export statements are not constrained to\n // appearing at the top of the program, and an import.meta expression\n // in a script isn't considered an error.\n allowImportExportEverywhere: false,\n // By default, await identifiers are allowed to appear at the top-level scope only if ecmaVersion >= 2022.\n // When enabled, await identifiers are allowed to appear at the top-level scope,\n // but they are still not allowed in non-async functions.\n allowAwaitOutsideFunction: null,\n // When enabled, super identifiers are not constrained to\n // appearing in methods and do not raise an error when they appear elsewhere.\n allowSuperOutsideMethod: null,\n // When enabled, hashbang directive in the beginning of file is\n // allowed and treated as a line comment. Enabled by default when\n // `ecmaVersion` >= 2023.\n allowHashBang: false,\n // By default, the parser will verify that private properties are\n // only used in places where they are valid and have been declared.\n // Set this to false to turn such checks off.\n checkPrivateFields: true,\n // When `locations` is on, `loc` properties holding objects with\n // `start` and `end` properties in `{line, column}` form (with\n // line being 1-based and column 0-based) will be attached to the\n // nodes.\n locations: false,\n // A function can be passed as `onToken` option, which will\n // cause Acorn to call that function with object in the same\n // format as tokens returned from `tokenizer().getToken()`. Note\n // that you are not allowed to call the parser from the\n // callback—that will corrupt its internal state.\n onToken: null,\n // A function can be passed as `onComment` option, which will\n // cause Acorn to call that function with `(block, text, start,\n // end)` parameters whenever a comment is skipped. `block` is a\n // boolean indicating whether this is a block (`/* */`) comment,\n // `text` is the content of the comment, and `start` and `end` are\n // character offsets that denote the start and end of the comment.\n // When the `locations` option is on, two more parameters are\n // passed, the full `{line, column}` locations of the start and\n // end of the comments. Note that you are not allowed to call the\n // parser from the callback—that will corrupt its internal state.\n onComment: null,\n // Nodes have their start and end characters offsets recorded in\n // `start` and `end` properties (directly on the node, rather than\n // the `loc` object, which holds line/column data. To also add a\n // [semi-standardized][range] `range` property holding a `[start,\n // end]` array with the same numbers, set the `ranges` option to\n // `true`.\n //\n // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678\n ranges: false,\n // It is possible to parse multiple files into a single AST by\n // passing the tree produced by parsing the first file as\n // `program` option in subsequent parses. This will add the\n // toplevel forms of the parsed file to the `Program` (top) node\n // of an existing parse tree.\n program: null,\n // When `locations` is on, you can pass this to record the source\n // file in every node's `loc` object.\n sourceFile: null,\n // This value, if given, is stored in every node, whether\n // `locations` is on or off.\n directSourceFile: null,\n // When enabled, parenthesized expressions are represented by\n // (non-standard) ParenthesizedExpression nodes\n preserveParens: false\n};\n\n// Interpret and default an options object\n\nvar warnedAboutEcmaVersion = false;\n\nfunction getOptions(opts) {\n var options = {};\n\n for (var opt in defaultOptions)\n { options[opt] = opts && hasOwn(opts, opt) ? opts[opt] : defaultOptions[opt]; }\n\n if (options.ecmaVersion === \"latest\") {\n options.ecmaVersion = 1e8;\n } else if (options.ecmaVersion == null) {\n if (!warnedAboutEcmaVersion && typeof console === \"object\" && console.warn) {\n warnedAboutEcmaVersion = true;\n console.warn(\"Since Acorn 8.0.0, options.ecmaVersion is required.\\nDefaulting to 2020, but this will stop working in the future.\");\n }\n options.ecmaVersion = 11;\n } else if (options.ecmaVersion >= 2015) {\n options.ecmaVersion -= 2009;\n }\n\n if (options.allowReserved == null)\n { options.allowReserved = options.ecmaVersion < 5; }\n\n if (!opts || opts.allowHashBang == null)\n { options.allowHashBang = options.ecmaVersion >= 14; }\n\n if (isArray(options.onToken)) {\n var tokens = options.onToken;\n options.onToken = function (token) { return tokens.push(token); };\n }\n if (isArray(options.onComment))\n { options.onComment = pushComment(options, options.onComment); }\n\n return options\n}\n\nfunction pushComment(options, array) {\n return function(block, text, start, end, startLoc, endLoc) {\n var comment = {\n type: block ? \"Block\" : \"Line\",\n value: text,\n start: start,\n end: end\n };\n if (options.locations)\n { comment.loc = new SourceLocation(this, startLoc, endLoc); }\n if (options.ranges)\n { comment.range = [start, end]; }\n array.push(comment);\n }\n}\n\n// Each scope gets a bitset that may contain these flags\nvar\n SCOPE_TOP = 1,\n SCOPE_FUNCTION = 2,\n SCOPE_ASYNC = 4,\n SCOPE_GENERATOR = 8,\n SCOPE_ARROW = 16,\n SCOPE_SIMPLE_CATCH = 32,\n SCOPE_SUPER = 64,\n SCOPE_DIRECT_SUPER = 128,\n SCOPE_CLASS_STATIC_BLOCK = 256,\n SCOPE_VAR = SCOPE_TOP | SCOPE_FUNCTION | SCOPE_CLASS_STATIC_BLOCK;\n\nfunction functionFlags(async, generator) {\n return SCOPE_FUNCTION | (async ? SCOPE_ASYNC : 0) | (generator ? SCOPE_GENERATOR : 0)\n}\n\n// Used in checkLVal* and declareName to determine the type of a binding\nvar\n BIND_NONE = 0, // Not a binding\n BIND_VAR = 1, // Var-style binding\n BIND_LEXICAL = 2, // Let- or const-style binding\n BIND_FUNCTION = 3, // Function declaration\n BIND_SIMPLE_CATCH = 4, // Simple (identifier pattern) catch binding\n BIND_OUTSIDE = 5; // Special case for function names as bound inside the function\n\nvar Parser = function Parser(options, input, startPos) {\n this.options = options = getOptions(options);\n this.sourceFile = options.sourceFile;\n this.keywords = wordsRegexp(keywords$1[options.ecmaVersion >= 6 ? 6 : options.sourceType === \"module\" ? \"5module\" : 5]);\n var reserved = \"\";\n if (options.allowReserved !== true) {\n reserved = reservedWords[options.ecmaVersion >= 6 ? 6 : options.ecmaVersion === 5 ? 5 : 3];\n if (options.sourceType === \"module\") { reserved += \" await\"; }\n }\n this.reservedWords = wordsRegexp(reserved);\n var reservedStrict = (reserved ? reserved + \" \" : \"\") + reservedWords.strict;\n this.reservedWordsStrict = wordsRegexp(reservedStrict);\n this.reservedWordsStrictBind = wordsRegexp(reservedStrict + \" \" + reservedWords.strictBind);\n this.input = String(input);\n\n // Used to signal to callers of `readWord1` whether the word\n // contained any escape sequences. This is needed because words with\n // escape sequences must not be interpreted as keywords.\n this.containsEsc = false;\n\n // Set up token state\n\n // The current position of the tokenizer in the input.\n if (startPos) {\n this.pos = startPos;\n this.lineStart = this.input.lastIndexOf(\"\\n\", startPos - 1) + 1;\n this.curLine = this.input.slice(0, this.lineStart).split(lineBreak).length;\n } else {\n this.pos = this.lineStart = 0;\n this.curLine = 1;\n }\n\n // Properties of the current token:\n // Its type\n this.type = types$1.eof;\n // For tokens that include more information than their type, the value\n this.value = null;\n // Its start and end offset\n this.start = this.end = this.pos;\n // And, if locations are used, the {line, column} object\n // corresponding to those offsets\n this.startLoc = this.endLoc = this.curPosition();\n\n // Position information for the previous token\n this.lastTokEndLoc = this.lastTokStartLoc = null;\n this.lastTokStart = this.lastTokEnd = this.pos;\n\n // The context stack is used to superficially track syntactic\n // context to predict whether a regular expression is allowed in a\n // given position.\n this.context = this.initialContext();\n this.exprAllowed = true;\n\n // Figure out if it's a module code.\n this.inModule = options.sourceType === \"module\";\n this.strict = this.inModule || this.strictDirective(this.pos);\n\n // Used to signify the start of a potential arrow function\n this.potentialArrowAt = -1;\n this.potentialArrowInForAwait = false;\n\n // Positions to delayed-check that yield/await does not exist in default parameters.\n this.yieldPos = this.awaitPos = this.awaitIdentPos = 0;\n // Labels in scope.\n this.labels = [];\n // Thus-far undefined exports.\n this.undefinedExports = Object.create(null);\n\n // If enabled, skip leading hashbang line.\n if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === \"#!\")\n { this.skipLineComment(2); }\n\n // Scope tracking for duplicate variable names (see scope.js)\n this.scopeStack = [];\n this.enterScope(SCOPE_TOP);\n\n // For RegExp validation\n this.regexpState = null;\n\n // The stack of private names.\n // Each element has two properties: 'declared' and 'used'.\n // When it exited from the outermost class definition, all used private names must be declared.\n this.privateNameStack = [];\n};\n\nvar prototypeAccessors = { inFunction: { configurable: true },inGenerator: { configurable: true },inAsync: { configurable: true },canAwait: { configurable: true },allowSuper: { configurable: true },allowDirectSuper: { configurable: true },treatFunctionsAsVar: { configurable: true },allowNewDotTarget: { configurable: true },inClassStaticBlock: { configurable: true } };\n\nParser.prototype.parse = function parse () {\n var node = this.options.program || this.startNode();\n this.nextToken();\n return this.parseTopLevel(node)\n};\n\nprototypeAccessors.inFunction.get = function () { return (this.currentVarScope().flags & SCOPE_FUNCTION) > 0 };\n\nprototypeAccessors.inGenerator.get = function () { return (this.currentVarScope().flags & SCOPE_GENERATOR) > 0 && !this.currentVarScope().inClassFieldInit };\n\nprototypeAccessors.inAsync.get = function () { return (this.currentVarScope().flags & SCOPE_ASYNC) > 0 && !this.currentVarScope().inClassFieldInit };\n\nprototypeAccessors.canAwait.get = function () {\n for (var i = this.scopeStack.length - 1; i >= 0; i--) {\n var scope = this.scopeStack[i];\n if (scope.inClassFieldInit || scope.flags & SCOPE_CLASS_STATIC_BLOCK) { return false }\n if (scope.flags & SCOPE_FUNCTION) { return (scope.flags & SCOPE_ASYNC) > 0 }\n }\n return (this.inModule && this.options.ecmaVersion >= 13) || this.options.allowAwaitOutsideFunction\n};\n\nprototypeAccessors.allowSuper.get = function () {\n var ref = this.currentThisScope();\n var flags = ref.flags;\n var inClassFieldInit = ref.inClassFieldInit;\n return (flags & SCOPE_SUPER) > 0 || inClassFieldInit || this.options.allowSuperOutsideMethod\n};\n\nprototypeAccessors.allowDirectSuper.get = function () { return (this.currentThisScope().flags & SCOPE_DIRECT_SUPER) > 0 };\n\nprototypeAccessors.treatFunctionsAsVar.get = function () { return this.treatFunctionsAsVarInScope(this.currentScope()) };\n\nprototypeAccessors.allowNewDotTarget.get = function () {\n var ref = this.currentThisScope();\n var flags = ref.flags;\n var inClassFieldInit = ref.inClassFieldInit;\n return (flags & (SCOPE_FUNCTION | SCOPE_CLASS_STATIC_BLOCK)) > 0 || inClassFieldInit\n};\n\nprototypeAccessors.inClassStaticBlock.get = function () {\n return (this.currentVarScope().flags & SCOPE_CLASS_STATIC_BLOCK) > 0\n};\n\nParser.extend = function extend () {\n var plugins = [], len = arguments.length;\n while ( len-- ) plugins[ len ] = arguments[ len ];\n\n var cls = this;\n for (var i = 0; i < plugins.length; i++) { cls = plugins[i](cls); }\n return cls\n};\n\nParser.parse = function parse (input, options) {\n return new this(options, input).parse()\n};\n\nParser.parseExpressionAt = function parseExpressionAt (input, pos, options) {\n var parser = new this(options, input, pos);\n parser.nextToken();\n return parser.parseExpression()\n};\n\nParser.tokenizer = function tokenizer (input, options) {\n return new this(options, input)\n};\n\nObject.defineProperties( Parser.prototype, prototypeAccessors );\n\nvar pp$9 = Parser.prototype;\n\n// ## Parser utilities\n\nvar literal = /^(?:'((?:\\\\.|[^'\\\\])*?)'|\"((?:\\\\.|[^\"\\\\])*?)\")/;\npp$9.strictDirective = function(start) {\n if (this.options.ecmaVersion < 5) { return false }\n for (;;) {\n // Try to find string literal.\n skipWhiteSpace.lastIndex = start;\n start += skipWhiteSpace.exec(this.input)[0].length;\n var match = literal.exec(this.input.slice(start));\n if (!match) { return false }\n if ((match[1] || match[2]) === \"use strict\") {\n skipWhiteSpace.lastIndex = start + match[0].length;\n var spaceAfter = skipWhiteSpace.exec(this.input), end = spaceAfter.index + spaceAfter[0].length;\n var next = this.input.charAt(end);\n return next === \";\" || next === \"}\" ||\n (lineBreak.test(spaceAfter[0]) &&\n !(/[(`.[+\\-/*%<>=,?^&]/.test(next) || next === \"!\" && this.input.charAt(end + 1) === \"=\"))\n }\n start += match[0].length;\n\n // Skip semicolon, if any.\n skipWhiteSpace.lastIndex = start;\n start += skipWhiteSpace.exec(this.input)[0].length;\n if (this.input[start] === \";\")\n { start++; }\n }\n};\n\n// Predicate that tests whether the next token is of the given\n// type, and if yes, consumes it as a side effect.\n\npp$9.eat = function(type) {\n if (this.type === type) {\n this.next();\n return true\n } else {\n return false\n }\n};\n\n// Tests whether parsed token is a contextual keyword.\n\npp$9.isContextual = function(name) {\n return this.type === types$1.name && this.value === name && !this.containsEsc\n};\n\n// Consumes contextual keyword if possible.\n\npp$9.eatContextual = function(name) {\n if (!this.isContextual(name)) { return false }\n this.next();\n return true\n};\n\n// Asserts that following token is given contextual keyword.\n\npp$9.expectContextual = function(name) {\n if (!this.eatContextual(name)) { this.unexpected(); }\n};\n\n// Test whether a semicolon can be inserted at the current position.\n\npp$9.canInsertSemicolon = function() {\n return this.type === types$1.eof ||\n this.type === types$1.braceR ||\n lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n};\n\npp$9.insertSemicolon = function() {\n if (this.canInsertSemicolon()) {\n if (this.options.onInsertedSemicolon)\n { this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc); }\n return true\n }\n};\n\n// Consume a semicolon, or, failing that, see if we are allowed to\n// pretend that there is a semicolon at this position.\n\npp$9.semicolon = function() {\n if (!this.eat(types$1.semi) && !this.insertSemicolon()) { this.unexpected(); }\n};\n\npp$9.afterTrailingComma = function(tokType, notNext) {\n if (this.type === tokType) {\n if (this.options.onTrailingComma)\n { this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc); }\n if (!notNext)\n { this.next(); }\n return true\n }\n};\n\n// Expect a token of a given type. If found, consume it, otherwise,\n// raise an unexpected token error.\n\npp$9.expect = function(type) {\n this.eat(type) || this.unexpected();\n};\n\n// Raise an unexpected token error.\n\npp$9.unexpected = function(pos) {\n this.raise(pos != null ? pos : this.start, \"Unexpected token\");\n};\n\nvar DestructuringErrors = function DestructuringErrors() {\n this.shorthandAssign =\n this.trailingComma =\n this.parenthesizedAssign =\n this.parenthesizedBind =\n this.doubleProto =\n -1;\n};\n\npp$9.checkPatternErrors = function(refDestructuringErrors, isAssign) {\n if (!refDestructuringErrors) { return }\n if (refDestructuringErrors.trailingComma > -1)\n { this.raiseRecoverable(refDestructuringErrors.trailingComma, \"Comma is not permitted after the rest element\"); }\n var parens = isAssign ? refDestructuringErrors.parenthesizedAssign : refDestructuringErrors.parenthesizedBind;\n if (parens > -1) { this.raiseRecoverable(parens, isAssign ? \"Assigning to rvalue\" : \"Parenthesized pattern\"); }\n};\n\npp$9.checkExpressionErrors = function(refDestructuringErrors, andThrow) {\n if (!refDestructuringErrors) { return false }\n var shorthandAssign = refDestructuringErrors.shorthandAssign;\n var doubleProto = refDestructuringErrors.doubleProto;\n if (!andThrow) { return shorthandAssign >= 0 || doubleProto >= 0 }\n if (shorthandAssign >= 0)\n { this.raise(shorthandAssign, \"Shorthand property assignments are valid only in destructuring patterns\"); }\n if (doubleProto >= 0)\n { this.raiseRecoverable(doubleProto, \"Redefinition of __proto__ property\"); }\n};\n\npp$9.checkYieldAwaitInDefaultParams = function() {\n if (this.yieldPos && (!this.awaitPos || this.yieldPos < this.awaitPos))\n { this.raise(this.yieldPos, \"Yield expression cannot be a default value\"); }\n if (this.awaitPos)\n { this.raise(this.awaitPos, \"Await expression cannot be a default value\"); }\n};\n\npp$9.isSimpleAssignTarget = function(expr) {\n if (expr.type === \"ParenthesizedExpression\")\n { return this.isSimpleAssignTarget(expr.expression) }\n return expr.type === \"Identifier\" || expr.type === \"MemberExpression\"\n};\n\nvar pp$8 = Parser.prototype;\n\n// ### Statement parsing\n\n// Parse a program. Initializes the parser, reads any number of\n// statements, and wraps them in a Program node. Optionally takes a\n// `program` argument. If present, the statements will be appended\n// to its body instead of creating a new node.\n\npp$8.parseTopLevel = function(node) {\n var exports = Object.create(null);\n if (!node.body) { node.body = []; }\n while (this.type !== types$1.eof) {\n var stmt = this.parseStatement(null, true, exports);\n node.body.push(stmt);\n }\n if (this.inModule)\n { for (var i = 0, list = Object.keys(this.undefinedExports); i < list.length; i += 1)\n {\n var name = list[i];\n\n this.raiseRecoverable(this.undefinedExports[name].start, (\"Export '\" + name + \"' is not defined\"));\n } }\n this.adaptDirectivePrologue(node.body);\n this.next();\n node.sourceType = this.options.sourceType;\n return this.finishNode(node, \"Program\")\n};\n\nvar loopLabel = {kind: \"loop\"}, switchLabel = {kind: \"switch\"};\n\npp$8.isLet = function(context) {\n if (this.options.ecmaVersion < 6 || !this.isContextual(\"let\")) { return false }\n skipWhiteSpace.lastIndex = this.pos;\n var skip = skipWhiteSpace.exec(this.input);\n var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next);\n // For ambiguous cases, determine if a LexicalDeclaration (or only a\n // Statement) is allowed here. If context is not empty then only a Statement\n // is allowed. However, `let [` is an explicit negative lookahead for\n // ExpressionStatement, so special-case it first.\n if (nextCh === 91 || nextCh === 92) { return true } // '[', '/'\n if (context) { return false }\n\n if (nextCh === 123 || nextCh > 0xd7ff && nextCh < 0xdc00) { return true } // '{', astral\n if (isIdentifierStart(nextCh, true)) {\n var pos = next + 1;\n while (isIdentifierChar(nextCh = this.input.charCodeAt(pos), true)) { ++pos; }\n if (nextCh === 92 || nextCh > 0xd7ff && nextCh < 0xdc00) { return true }\n var ident = this.input.slice(next, pos);\n if (!keywordRelationalOperator.test(ident)) { return true }\n }\n return false\n};\n\n// check 'async [no LineTerminator here] function'\n// - 'async /*foo*/ function' is OK.\n// - 'async /*\\n*/ function' is invalid.\npp$8.isAsyncFunction = function() {\n if (this.options.ecmaVersion < 8 || !this.isContextual(\"async\"))\n { return false }\n\n skipWhiteSpace.lastIndex = this.pos;\n var skip = skipWhiteSpace.exec(this.input);\n var next = this.pos + skip[0].length, after;\n return !lineBreak.test(this.input.slice(this.pos, next)) &&\n this.input.slice(next, next + 8) === \"function\" &&\n (next + 8 === this.input.length ||\n !(isIdentifierChar(after = this.input.charCodeAt(next + 8)) || after > 0xd7ff && after < 0xdc00))\n};\n\n// Parse a single statement.\n//\n// If expecting a statement and finding a slash operator, parse a\n// regular expression literal. This is to handle cases like\n// `if (foo) /blah/.exec(foo)`, where looking at the previous token\n// does not help.\n\npp$8.parseStatement = function(context, topLevel, exports) {\n var starttype = this.type, node = this.startNode(), kind;\n\n if (this.isLet(context)) {\n starttype = types$1._var;\n kind = \"let\";\n }\n\n // Most types of statements are recognized by the keyword they\n // start with. Many are trivial to parse, some require a bit of\n // complexity.\n\n switch (starttype) {\n case types$1._break: case types$1._continue: return this.parseBreakContinueStatement(node, starttype.keyword)\n case types$1._debugger: return this.parseDebuggerStatement(node)\n case types$1._do: return this.parseDoStatement(node)\n case types$1._for: return this.parseForStatement(node)\n case types$1._function:\n // Function as sole body of either an if statement or a labeled statement\n // works, but not when it is part of a labeled statement that is the sole\n // body of an if statement.\n if ((context && (this.strict || context !== \"if\" && context !== \"label\")) && this.options.ecmaVersion >= 6) { this.unexpected(); }\n return this.parseFunctionStatement(node, false, !context)\n case types$1._class:\n if (context) { this.unexpected(); }\n return this.parseClass(node, true)\n case types$1._if: return this.parseIfStatement(node)\n case types$1._return: return this.parseReturnStatement(node)\n case types$1._switch: return this.parseSwitchStatement(node)\n case types$1._throw: return this.parseThrowStatement(node)\n case types$1._try: return this.parseTryStatement(node)\n case types$1._const: case types$1._var:\n kind = kind || this.value;\n if (context && kind !== \"var\") { this.unexpected(); }\n return this.parseVarStatement(node, kind)\n case types$1._while: return this.parseWhileStatement(node)\n case types$1._with: return this.parseWithStatement(node)\n case types$1.braceL: return this.parseBlock(true, node)\n case types$1.semi: return this.parseEmptyStatement(node)\n case types$1._export:\n case types$1._import:\n if (this.options.ecmaVersion > 10 && starttype === types$1._import) {\n skipWhiteSpace.lastIndex = this.pos;\n var skip = skipWhiteSpace.exec(this.input);\n var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next);\n if (nextCh === 40 || nextCh === 46) // '(' or '.'\n { return this.parseExpressionStatement(node, this.parseExpression()) }\n }\n\n if (!this.options.allowImportExportEverywhere) {\n if (!topLevel)\n { this.raise(this.start, \"'import' and 'export' may only appear at the top level\"); }\n if (!this.inModule)\n { this.raise(this.start, \"'import' and 'export' may appear only with 'sourceType: module'\"); }\n }\n return starttype === types$1._import ? this.parseImport(node) : this.parseExport(node, exports)\n\n // If the statement does not start with a statement keyword or a\n // brace, it's an ExpressionStatement or LabeledStatement. We\n // simply start parsing an expression, and afterwards, if the\n // next token is a colon and the expression was a simple\n // Identifier node, we switch to interpreting it as a label.\n default:\n if (this.isAsyncFunction()) {\n if (context) { this.unexpected(); }\n this.next();\n return this.parseFunctionStatement(node, true, !context)\n }\n\n var maybeName = this.value, expr = this.parseExpression();\n if (starttype === types$1.name && expr.type === \"Identifier\" && this.eat(types$1.colon))\n { return this.parseLabeledStatement(node, maybeName, expr, context) }\n else { return this.parseExpressionStatement(node, expr) }\n }\n};\n\npp$8.parseBreakContinueStatement = function(node, keyword) {\n var isBreak = keyword === \"break\";\n this.next();\n if (this.eat(types$1.semi) || this.insertSemicolon()) { node.label = null; }\n else if (this.type !== types$1.name) { this.unexpected(); }\n else {\n node.label = this.parseIdent();\n this.semicolon();\n }\n\n // Verify that there is an actual destination to break or\n // continue to.\n var i = 0;\n for (; i < this.labels.length; ++i) {\n var lab = this.labels[i];\n if (node.label == null || lab.name === node.label.name) {\n if (lab.kind != null && (isBreak || lab.kind === \"loop\")) { break }\n if (node.label && isBreak) { break }\n }\n }\n if (i === this.labels.length) { this.raise(node.start, \"Unsyntactic \" + keyword); }\n return this.finishNode(node, isBreak ? \"BreakStatement\" : \"ContinueStatement\")\n};\n\npp$8.parseDebuggerStatement = function(node) {\n this.next();\n this.semicolon();\n return this.finishNode(node, \"DebuggerStatement\")\n};\n\npp$8.parseDoStatement = function(node) {\n this.next();\n this.labels.push(loopLabel);\n node.body = this.parseStatement(\"do\");\n this.labels.pop();\n this.expect(types$1._while);\n node.test = this.parseParenExpression();\n if (this.options.ecmaVersion >= 6)\n { this.eat(types$1.semi); }\n else\n { this.semicolon(); }\n return this.finishNode(node, \"DoWhileStatement\")\n};\n\n// Disambiguating between a `for` and a `for`/`in` or `for`/`of`\n// loop is non-trivial. Basically, we have to parse the init `var`\n// statement or expression, disallowing the `in` operator (see\n// the second parameter to `parseExpression`), and then check\n// whether the next token is `in` or `of`. When there is no init\n// part (semicolon immediately after the opening parenthesis), it\n// is a regular `for` loop.\n\npp$8.parseForStatement = function(node) {\n this.next();\n var awaitAt = (this.options.ecmaVersion >= 9 && this.canAwait && this.eatContextual(\"await\")) ? this.lastTokStart : -1;\n this.labels.push(loopLabel);\n this.enterScope(0);\n this.expect(types$1.parenL);\n if (this.type === types$1.semi) {\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n return this.parseFor(node, null)\n }\n var isLet = this.isLet();\n if (this.type === types$1._var || this.type === types$1._const || isLet) {\n var init$1 = this.startNode(), kind = isLet ? \"let\" : this.value;\n this.next();\n this.parseVar(init$1, true, kind);\n this.finishNode(init$1, \"VariableDeclaration\");\n if ((this.type === types$1._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) && init$1.declarations.length === 1) {\n if (this.options.ecmaVersion >= 9) {\n if (this.type === types$1._in) {\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n } else { node.await = awaitAt > -1; }\n }\n return this.parseForIn(node, init$1)\n }\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n return this.parseFor(node, init$1)\n }\n var startsWithLet = this.isContextual(\"let\"), isForOf = false;\n var refDestructuringErrors = new DestructuringErrors;\n var init = this.parseExpression(awaitAt > -1 ? \"await\" : true, refDestructuringErrors);\n if (this.type === types$1._in || (isForOf = this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) {\n if (this.options.ecmaVersion >= 9) {\n if (this.type === types$1._in) {\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n } else { node.await = awaitAt > -1; }\n }\n if (startsWithLet && isForOf) { this.raise(init.start, \"The left-hand side of a for-of loop may not start with 'let'.\"); }\n this.toAssignable(init, false, refDestructuringErrors);\n this.checkLValPattern(init);\n return this.parseForIn(node, init)\n } else {\n this.checkExpressionErrors(refDestructuringErrors, true);\n }\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n return this.parseFor(node, init)\n};\n\npp$8.parseFunctionStatement = function(node, isAsync, declarationPosition) {\n this.next();\n return this.parseFunction(node, FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT), false, isAsync)\n};\n\npp$8.parseIfStatement = function(node) {\n this.next();\n node.test = this.parseParenExpression();\n // allow function declarations in branches, but only in non-strict mode\n node.consequent = this.parseStatement(\"if\");\n node.alternate = this.eat(types$1._else) ? this.parseStatement(\"if\") : null;\n return this.finishNode(node, \"IfStatement\")\n};\n\npp$8.parseReturnStatement = function(node) {\n if (!this.inFunction && !this.options.allowReturnOutsideFunction)\n { this.raise(this.start, \"'return' outside of function\"); }\n this.next();\n\n // In `return` (and `break`/`continue`), the keywords with\n // optional arguments, we eagerly look for a semicolon or the\n // possibility to insert one.\n\n if (this.eat(types$1.semi) || this.insertSemicolon()) { node.argument = null; }\n else { node.argument = this.parseExpression(); this.semicolon(); }\n return this.finishNode(node, \"ReturnStatement\")\n};\n\npp$8.parseSwitchStatement = function(node) {\n this.next();\n node.discriminant = this.parseParenExpression();\n node.cases = [];\n this.expect(types$1.braceL);\n this.labels.push(switchLabel);\n this.enterScope(0);\n\n // Statements under must be grouped (by label) in SwitchCase\n // nodes. `cur` is used to keep the node that we are currently\n // adding statements to.\n\n var cur;\n for (var sawDefault = false; this.type !== types$1.braceR;) {\n if (this.type === types$1._case || this.type === types$1._default) {\n var isCase = this.type === types$1._case;\n if (cur) { this.finishNode(cur, \"SwitchCase\"); }\n node.cases.push(cur = this.startNode());\n cur.consequent = [];\n this.next();\n if (isCase) {\n cur.test = this.parseExpression();\n } else {\n if (sawDefault) { this.raiseRecoverable(this.lastTokStart, \"Multiple default clauses\"); }\n sawDefault = true;\n cur.test = null;\n }\n this.expect(types$1.colon);\n } else {\n if (!cur) { this.unexpected(); }\n cur.consequent.push(this.parseStatement(null));\n }\n }\n this.exitScope();\n if (cur) { this.finishNode(cur, \"SwitchCase\"); }\n this.next(); // Closing brace\n this.labels.pop();\n return this.finishNode(node, \"SwitchStatement\")\n};\n\npp$8.parseThrowStatement = function(node) {\n this.next();\n if (lineBreak.test(this.input.slice(this.lastTokEnd, this.start)))\n { this.raise(this.lastTokEnd, \"Illegal newline after throw\"); }\n node.argument = this.parseExpression();\n this.semicolon();\n return this.finishNode(node, \"ThrowStatement\")\n};\n\n// Reused empty array added for node fields that are always empty.\n\nvar empty$1 = [];\n\npp$8.parseCatchClauseParam = function() {\n var param = this.parseBindingAtom();\n var simple = param.type === \"Identifier\";\n this.enterScope(simple ? SCOPE_SIMPLE_CATCH : 0);\n this.checkLValPattern(param, simple ? BIND_SIMPLE_CATCH : BIND_LEXICAL);\n this.expect(types$1.parenR);\n\n return param\n};\n\npp$8.parseTryStatement = function(node) {\n this.next();\n node.block = this.parseBlock();\n node.handler = null;\n if (this.type === types$1._catch) {\n var clause = this.startNode();\n this.next();\n if (this.eat(types$1.parenL)) {\n clause.param = this.parseCatchClauseParam();\n } else {\n if (this.options.ecmaVersion < 10) { this.unexpected(); }\n clause.param = null;\n this.enterScope(0);\n }\n clause.body = this.parseBlock(false);\n this.exitScope();\n node.handler = this.finishNode(clause, \"CatchClause\");\n }\n node.finalizer = this.eat(types$1._finally) ? this.parseBlock() : null;\n if (!node.handler && !node.finalizer)\n { this.raise(node.start, \"Missing catch or finally clause\"); }\n return this.finishNode(node, \"TryStatement\")\n};\n\npp$8.parseVarStatement = function(node, kind, allowMissingInitializer) {\n this.next();\n this.parseVar(node, false, kind, allowMissingInitializer);\n this.semicolon();\n return this.finishNode(node, \"VariableDeclaration\")\n};\n\npp$8.parseWhileStatement = function(node) {\n this.next();\n node.test = this.parseParenExpression();\n this.labels.push(loopLabel);\n node.body = this.parseStatement(\"while\");\n this.labels.pop();\n return this.finishNode(node, \"WhileStatement\")\n};\n\npp$8.parseWithStatement = function(node) {\n if (this.strict) { this.raise(this.start, \"'with' in strict mode\"); }\n this.next();\n node.object = this.parseParenExpression();\n node.body = this.parseStatement(\"with\");\n return this.finishNode(node, \"WithStatement\")\n};\n\npp$8.parseEmptyStatement = function(node) {\n this.next();\n return this.finishNode(node, \"EmptyStatement\")\n};\n\npp$8.parseLabeledStatement = function(node, maybeName, expr, context) {\n for (var i$1 = 0, list = this.labels; i$1 < list.length; i$1 += 1)\n {\n var label = list[i$1];\n\n if (label.name === maybeName)\n { this.raise(expr.start, \"Label '\" + maybeName + \"' is already declared\");\n } }\n var kind = this.type.isLoop ? \"loop\" : this.type === types$1._switch ? \"switch\" : null;\n for (var i = this.labels.length - 1; i >= 0; i--) {\n var label$1 = this.labels[i];\n if (label$1.statementStart === node.start) {\n // Update information about previous labels on this node\n label$1.statementStart = this.start;\n label$1.kind = kind;\n } else { break }\n }\n this.labels.push({name: maybeName, kind: kind, statementStart: this.start});\n node.body = this.parseStatement(context ? context.indexOf(\"label\") === -1 ? context + \"label\" : context : \"label\");\n this.labels.pop();\n node.label = expr;\n return this.finishNode(node, \"LabeledStatement\")\n};\n\npp$8.parseExpressionStatement = function(node, expr) {\n node.expression = expr;\n this.semicolon();\n return this.finishNode(node, \"ExpressionStatement\")\n};\n\n// Parse a semicolon-enclosed block of statements, handling `\"use\n// strict\"` declarations when `allowStrict` is true (used for\n// function bodies).\n\npp$8.parseBlock = function(createNewLexicalScope, node, exitStrict) {\n if ( createNewLexicalScope === void 0 ) createNewLexicalScope = true;\n if ( node === void 0 ) node = this.startNode();\n\n node.body = [];\n this.expect(types$1.braceL);\n if (createNewLexicalScope) { this.enterScope(0); }\n while (this.type !== types$1.braceR) {\n var stmt = this.parseStatement(null);\n node.body.push(stmt);\n }\n if (exitStrict) { this.strict = false; }\n this.next();\n if (createNewLexicalScope) { this.exitScope(); }\n return this.finishNode(node, \"BlockStatement\")\n};\n\n// Parse a regular `for` loop. The disambiguation code in\n// `parseStatement` will already have parsed the init statement or\n// expression.\n\npp$8.parseFor = function(node, init) {\n node.init = init;\n this.expect(types$1.semi);\n node.test = this.type === types$1.semi ? null : this.parseExpression();\n this.expect(types$1.semi);\n node.update = this.type === types$1.parenR ? null : this.parseExpression();\n this.expect(types$1.parenR);\n node.body = this.parseStatement(\"for\");\n this.exitScope();\n this.labels.pop();\n return this.finishNode(node, \"ForStatement\")\n};\n\n// Parse a `for`/`in` and `for`/`of` loop, which are almost\n// same from parser's perspective.\n\npp$8.parseForIn = function(node, init) {\n var isForIn = this.type === types$1._in;\n this.next();\n\n if (\n init.type === \"VariableDeclaration\" &&\n init.declarations[0].init != null &&\n (\n !isForIn ||\n this.options.ecmaVersion < 8 ||\n this.strict ||\n init.kind !== \"var\" ||\n init.declarations[0].id.type !== \"Identifier\"\n )\n ) {\n this.raise(\n init.start,\n ((isForIn ? \"for-in\" : \"for-of\") + \" loop variable declaration may not have an initializer\")\n );\n }\n node.left = init;\n node.right = isForIn ? this.parseExpression() : this.parseMaybeAssign();\n this.expect(types$1.parenR);\n node.body = this.parseStatement(\"for\");\n this.exitScope();\n this.labels.pop();\n return this.finishNode(node, isForIn ? \"ForInStatement\" : \"ForOfStatement\")\n};\n\n// Parse a list of variable declarations.\n\npp$8.parseVar = function(node, isFor, kind, allowMissingInitializer) {\n node.declarations = [];\n node.kind = kind;\n for (;;) {\n var decl = this.startNode();\n this.parseVarId(decl, kind);\n if (this.eat(types$1.eq)) {\n decl.init = this.parseMaybeAssign(isFor);\n } else if (!allowMissingInitializer && kind === \"const\" && !(this.type === types$1._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\")))) {\n this.unexpected();\n } else if (!allowMissingInitializer && decl.id.type !== \"Identifier\" && !(isFor && (this.type === types$1._in || this.isContextual(\"of\")))) {\n this.raise(this.lastTokEnd, \"Complex binding patterns require an initialization value\");\n } else {\n decl.init = null;\n }\n node.declarations.push(this.finishNode(decl, \"VariableDeclarator\"));\n if (!this.eat(types$1.comma)) { break }\n }\n return node\n};\n\npp$8.parseVarId = function(decl, kind) {\n decl.id = this.parseBindingAtom();\n this.checkLValPattern(decl.id, kind === \"var\" ? BIND_VAR : BIND_LEXICAL, false);\n};\n\nvar FUNC_STATEMENT = 1, FUNC_HANGING_STATEMENT = 2, FUNC_NULLABLE_ID = 4;\n\n// Parse a function declaration or literal (depending on the\n// `statement & FUNC_STATEMENT`).\n\n// Remove `allowExpressionBody` for 7.0.0, as it is only called with false\npp$8.parseFunction = function(node, statement, allowExpressionBody, isAsync, forInit) {\n this.initFunction(node);\n if (this.options.ecmaVersion >= 9 || this.options.ecmaVersion >= 6 && !isAsync) {\n if (this.type === types$1.star && (statement & FUNC_HANGING_STATEMENT))\n { this.unexpected(); }\n node.generator = this.eat(types$1.star);\n }\n if (this.options.ecmaVersion >= 8)\n { node.async = !!isAsync; }\n\n if (statement & FUNC_STATEMENT) {\n node.id = (statement & FUNC_NULLABLE_ID) && this.type !== types$1.name ? null : this.parseIdent();\n if (node.id && !(statement & FUNC_HANGING_STATEMENT))\n // If it is a regular function declaration in sloppy mode, then it is\n // subject to Annex B semantics (BIND_FUNCTION). Otherwise, the binding\n // mode depends on properties of the current scope (see\n // treatFunctionsAsVar).\n { this.checkLValSimple(node.id, (this.strict || node.generator || node.async) ? this.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION); }\n }\n\n var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n this.yieldPos = 0;\n this.awaitPos = 0;\n this.awaitIdentPos = 0;\n this.enterScope(functionFlags(node.async, node.generator));\n\n if (!(statement & FUNC_STATEMENT))\n { node.id = this.type === types$1.name ? this.parseIdent() : null; }\n\n this.parseFunctionParams(node);\n this.parseFunctionBody(node, allowExpressionBody, false, forInit);\n\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n this.awaitIdentPos = oldAwaitIdentPos;\n return this.finishNode(node, (statement & FUNC_STATEMENT) ? \"FunctionDeclaration\" : \"FunctionExpression\")\n};\n\npp$8.parseFunctionParams = function(node) {\n this.expect(types$1.parenL);\n node.params = this.parseBindingList(types$1.parenR, false, this.options.ecmaVersion >= 8);\n this.checkYieldAwaitInDefaultParams();\n};\n\n// Parse a class declaration or literal (depending on the\n// `isStatement` parameter).\n\npp$8.parseClass = function(node, isStatement) {\n this.next();\n\n // ecma-262 14.6 Class Definitions\n // A class definition is always strict mode code.\n var oldStrict = this.strict;\n this.strict = true;\n\n this.parseClassId(node, isStatement);\n this.parseClassSuper(node);\n var privateNameMap = this.enterClassBody();\n var classBody = this.startNode();\n var hadConstructor = false;\n classBody.body = [];\n this.expect(types$1.braceL);\n while (this.type !== types$1.braceR) {\n var element = this.parseClassElement(node.superClass !== null);\n if (element) {\n classBody.body.push(element);\n if (element.type === \"MethodDefinition\" && element.kind === \"constructor\") {\n if (hadConstructor) { this.raiseRecoverable(element.start, \"Duplicate constructor in the same class\"); }\n hadConstructor = true;\n } else if (element.key && element.key.type === \"PrivateIdentifier\" && isPrivateNameConflicted(privateNameMap, element)) {\n this.raiseRecoverable(element.key.start, (\"Identifier '#\" + (element.key.name) + \"' has already been declared\"));\n }\n }\n }\n this.strict = oldStrict;\n this.next();\n node.body = this.finishNode(classBody, \"ClassBody\");\n this.exitClassBody();\n return this.finishNode(node, isStatement ? \"ClassDeclaration\" : \"ClassExpression\")\n};\n\npp$8.parseClassElement = function(constructorAllowsSuper) {\n if (this.eat(types$1.semi)) { return null }\n\n var ecmaVersion = this.options.ecmaVersion;\n var node = this.startNode();\n var keyName = \"\";\n var isGenerator = false;\n var isAsync = false;\n var kind = \"method\";\n var isStatic = false;\n\n if (this.eatContextual(\"static\")) {\n // Parse static init block\n if (ecmaVersion >= 13 && this.eat(types$1.braceL)) {\n this.parseClassStaticBlock(node);\n return node\n }\n if (this.isClassElementNameStart() || this.type === types$1.star) {\n isStatic = true;\n } else {\n keyName = \"static\";\n }\n }\n node.static = isStatic;\n if (!keyName && ecmaVersion >= 8 && this.eatContextual(\"async\")) {\n if ((this.isClassElementNameStart() || this.type === types$1.star) && !this.canInsertSemicolon()) {\n isAsync = true;\n } else {\n keyName = \"async\";\n }\n }\n if (!keyName && (ecmaVersion >= 9 || !isAsync) && this.eat(types$1.star)) {\n isGenerator = true;\n }\n if (!keyName && !isAsync && !isGenerator) {\n var lastValue = this.value;\n if (this.eatContextual(\"get\") || this.eatContextual(\"set\")) {\n if (this.isClassElementNameStart()) {\n kind = lastValue;\n } else {\n keyName = lastValue;\n }\n }\n }\n\n // Parse element name\n if (keyName) {\n // 'async', 'get', 'set', or 'static' were not a keyword contextually.\n // The last token is any of those. Make it the element name.\n node.computed = false;\n node.key = this.startNodeAt(this.lastTokStart, this.lastTokStartLoc);\n node.key.name = keyName;\n this.finishNode(node.key, \"Identifier\");\n } else {\n this.parseClassElementName(node);\n }\n\n // Parse element value\n if (ecmaVersion < 13 || this.type === types$1.parenL || kind !== \"method\" || isGenerator || isAsync) {\n var isConstructor = !node.static && checkKeyName(node, \"constructor\");\n var allowsDirectSuper = isConstructor && constructorAllowsSuper;\n // Couldn't move this check into the 'parseClassMethod' method for backward compatibility.\n if (isConstructor && kind !== \"method\") { this.raise(node.key.start, \"Constructor can't have get/set modifier\"); }\n node.kind = isConstructor ? \"constructor\" : kind;\n this.parseClassMethod(node, isGenerator, isAsync, allowsDirectSuper);\n } else {\n this.parseClassField(node);\n }\n\n return node\n};\n\npp$8.isClassElementNameStart = function() {\n return (\n this.type === types$1.name ||\n this.type === types$1.privateId ||\n this.type === types$1.num ||\n this.type === types$1.string ||\n this.type === types$1.bracketL ||\n this.type.keyword\n )\n};\n\npp$8.parseClassElementName = function(element) {\n if (this.type === types$1.privateId) {\n if (this.value === \"constructor\") {\n this.raise(this.start, \"Classes can't have an element named '#constructor'\");\n }\n element.computed = false;\n element.key = this.parsePrivateIdent();\n } else {\n this.parsePropertyName(element);\n }\n};\n\npp$8.parseClassMethod = function(method, isGenerator, isAsync, allowsDirectSuper) {\n // Check key and flags\n var key = method.key;\n if (method.kind === \"constructor\") {\n if (isGenerator) { this.raise(key.start, \"Constructor can't be a generator\"); }\n if (isAsync) { this.raise(key.start, \"Constructor can't be an async method\"); }\n } else if (method.static && checkKeyName(method, \"prototype\")) {\n this.raise(key.start, \"Classes may not have a static property named prototype\");\n }\n\n // Parse value\n var value = method.value = this.parseMethod(isGenerator, isAsync, allowsDirectSuper);\n\n // Check value\n if (method.kind === \"get\" && value.params.length !== 0)\n { this.raiseRecoverable(value.start, \"getter should have no params\"); }\n if (method.kind === \"set\" && value.params.length !== 1)\n { this.raiseRecoverable(value.start, \"setter should have exactly one param\"); }\n if (method.kind === \"set\" && value.params[0].type === \"RestElement\")\n { this.raiseRecoverable(value.params[0].start, \"Setter cannot use rest params\"); }\n\n return this.finishNode(method, \"MethodDefinition\")\n};\n\npp$8.parseClassField = function(field) {\n if (checkKeyName(field, \"constructor\")) {\n this.raise(field.key.start, \"Classes can't have a field named 'constructor'\");\n } else if (field.static && checkKeyName(field, \"prototype\")) {\n this.raise(field.key.start, \"Classes can't have a static field named 'prototype'\");\n }\n\n if (this.eat(types$1.eq)) {\n // To raise SyntaxError if 'arguments' exists in the initializer.\n var scope = this.currentThisScope();\n var inClassFieldInit = scope.inClassFieldInit;\n scope.inClassFieldInit = true;\n field.value = this.parseMaybeAssign();\n scope.inClassFieldInit = inClassFieldInit;\n } else {\n field.value = null;\n }\n this.semicolon();\n\n return this.finishNode(field, \"PropertyDefinition\")\n};\n\npp$8.parseClassStaticBlock = function(node) {\n node.body = [];\n\n var oldLabels = this.labels;\n this.labels = [];\n this.enterScope(SCOPE_CLASS_STATIC_BLOCK | SCOPE_SUPER);\n while (this.type !== types$1.braceR) {\n var stmt = this.parseStatement(null);\n node.body.push(stmt);\n }\n this.next();\n this.exitScope();\n this.labels = oldLabels;\n\n return this.finishNode(node, \"StaticBlock\")\n};\n\npp$8.parseClassId = function(node, isStatement) {\n if (this.type === types$1.name) {\n node.id = this.parseIdent();\n if (isStatement)\n { this.checkLValSimple(node.id, BIND_LEXICAL, false); }\n } else {\n if (isStatement === true)\n { this.unexpected(); }\n node.id = null;\n }\n};\n\npp$8.parseClassSuper = function(node) {\n node.superClass = this.eat(types$1._extends) ? this.parseExprSubscripts(null, false) : null;\n};\n\npp$8.enterClassBody = function() {\n var element = {declared: Object.create(null), used: []};\n this.privateNameStack.push(element);\n return element.declared\n};\n\npp$8.exitClassBody = function() {\n var ref = this.privateNameStack.pop();\n var declared = ref.declared;\n var used = ref.used;\n if (!this.options.checkPrivateFields) { return }\n var len = this.privateNameStack.length;\n var parent = len === 0 ? null : this.privateNameStack[len - 1];\n for (var i = 0; i < used.length; ++i) {\n var id = used[i];\n if (!hasOwn(declared, id.name)) {\n if (parent) {\n parent.used.push(id);\n } else {\n this.raiseRecoverable(id.start, (\"Private field '#\" + (id.name) + \"' must be declared in an enclosing class\"));\n }\n }\n }\n};\n\nfunction isPrivateNameConflicted(privateNameMap, element) {\n var name = element.key.name;\n var curr = privateNameMap[name];\n\n var next = \"true\";\n if (element.type === \"MethodDefinition\" && (element.kind === \"get\" || element.kind === \"set\")) {\n next = (element.static ? \"s\" : \"i\") + element.kind;\n }\n\n // `class { get #a(){}; static set #a(_){} }` is also conflict.\n if (\n curr === \"iget\" && next === \"iset\" ||\n curr === \"iset\" && next === \"iget\" ||\n curr === \"sget\" && next === \"sset\" ||\n curr === \"sset\" && next === \"sget\"\n ) {\n privateNameMap[name] = \"true\";\n return false\n } else if (!curr) {\n privateNameMap[name] = next;\n return false\n } else {\n return true\n }\n}\n\nfunction checkKeyName(node, name) {\n var computed = node.computed;\n var key = node.key;\n return !computed && (\n key.type === \"Identifier\" && key.name === name ||\n key.type === \"Literal\" && key.value === name\n )\n}\n\n// Parses module export declaration.\n\npp$8.parseExportAllDeclaration = function(node, exports) {\n if (this.options.ecmaVersion >= 11) {\n if (this.eatContextual(\"as\")) {\n node.exported = this.parseModuleExportName();\n this.checkExport(exports, node.exported, this.lastTokStart);\n } else {\n node.exported = null;\n }\n }\n this.expectContextual(\"from\");\n if (this.type !== types$1.string) { this.unexpected(); }\n node.source = this.parseExprAtom();\n this.semicolon();\n return this.finishNode(node, \"ExportAllDeclaration\")\n};\n\npp$8.parseExport = function(node, exports) {\n this.next();\n // export * from '...'\n if (this.eat(types$1.star)) {\n return this.parseExportAllDeclaration(node, exports)\n }\n if (this.eat(types$1._default)) { // export default ...\n this.checkExport(exports, \"default\", this.lastTokStart);\n node.declaration = this.parseExportDefaultDeclaration();\n return this.finishNode(node, \"ExportDefaultDeclaration\")\n }\n // export var|const|let|function|class ...\n if (this.shouldParseExportStatement()) {\n node.declaration = this.parseExportDeclaration(node);\n if (node.declaration.type === \"VariableDeclaration\")\n { this.checkVariableExport(exports, node.declaration.declarations); }\n else\n { this.checkExport(exports, node.declaration.id, node.declaration.id.start); }\n node.specifiers = [];\n node.source = null;\n } else { // export { x, y as z } [from '...']\n node.declaration = null;\n node.specifiers = this.parseExportSpecifiers(exports);\n if (this.eatContextual(\"from\")) {\n if (this.type !== types$1.string) { this.unexpected(); }\n node.source = this.parseExprAtom();\n } else {\n for (var i = 0, list = node.specifiers; i < list.length; i += 1) {\n // check for keywords used as local names\n var spec = list[i];\n\n this.checkUnreserved(spec.local);\n // check if export is defined\n this.checkLocalExport(spec.local);\n\n if (spec.local.type === \"Literal\") {\n this.raise(spec.local.start, \"A string literal cannot be used as an exported binding without `from`.\");\n }\n }\n\n node.source = null;\n }\n this.semicolon();\n }\n return this.finishNode(node, \"ExportNamedDeclaration\")\n};\n\npp$8.parseExportDeclaration = function(node) {\n return this.parseStatement(null)\n};\n\npp$8.parseExportDefaultDeclaration = function() {\n var isAsync;\n if (this.type === types$1._function || (isAsync = this.isAsyncFunction())) {\n var fNode = this.startNode();\n this.next();\n if (isAsync) { this.next(); }\n return this.parseFunction(fNode, FUNC_STATEMENT | FUNC_NULLABLE_ID, false, isAsync)\n } else if (this.type === types$1._class) {\n var cNode = this.startNode();\n return this.parseClass(cNode, \"nullableID\")\n } else {\n var declaration = this.parseMaybeAssign();\n this.semicolon();\n return declaration\n }\n};\n\npp$8.checkExport = function(exports, name, pos) {\n if (!exports) { return }\n if (typeof name !== \"string\")\n { name = name.type === \"Identifier\" ? name.name : name.value; }\n if (hasOwn(exports, name))\n { this.raiseRecoverable(pos, \"Duplicate export '\" + name + \"'\"); }\n exports[name] = true;\n};\n\npp$8.checkPatternExport = function(exports, pat) {\n var type = pat.type;\n if (type === \"Identifier\")\n { this.checkExport(exports, pat, pat.start); }\n else if (type === \"ObjectPattern\")\n { for (var i = 0, list = pat.properties; i < list.length; i += 1)\n {\n var prop = list[i];\n\n this.checkPatternExport(exports, prop);\n } }\n else if (type === \"ArrayPattern\")\n { for (var i$1 = 0, list$1 = pat.elements; i$1 < list$1.length; i$1 += 1) {\n var elt = list$1[i$1];\n\n if (elt) { this.checkPatternExport(exports, elt); }\n } }\n else if (type === \"Property\")\n { this.checkPatternExport(exports, pat.value); }\n else if (type === \"AssignmentPattern\")\n { this.checkPatternExport(exports, pat.left); }\n else if (type === \"RestElement\")\n { this.checkPatternExport(exports, pat.argument); }\n else if (type === \"ParenthesizedExpression\")\n { this.checkPatternExport(exports, pat.expression); }\n};\n\npp$8.checkVariableExport = function(exports, decls) {\n if (!exports) { return }\n for (var i = 0, list = decls; i < list.length; i += 1)\n {\n var decl = list[i];\n\n this.checkPatternExport(exports, decl.id);\n }\n};\n\npp$8.shouldParseExportStatement = function() {\n return this.type.keyword === \"var\" ||\n this.type.keyword === \"const\" ||\n this.type.keyword === \"class\" ||\n this.type.keyword === \"function\" ||\n this.isLet() ||\n this.isAsyncFunction()\n};\n\n// Parses a comma-separated list of module exports.\n\npp$8.parseExportSpecifier = function(exports) {\n var node = this.startNode();\n node.local = this.parseModuleExportName();\n\n node.exported = this.eatContextual(\"as\") ? this.parseModuleExportName() : node.local;\n this.checkExport(\n exports,\n node.exported,\n node.exported.start\n );\n\n return this.finishNode(node, \"ExportSpecifier\")\n};\n\npp$8.parseExportSpecifiers = function(exports) {\n var nodes = [], first = true;\n // export { x, y as z } [from '...']\n this.expect(types$1.braceL);\n while (!this.eat(types$1.braceR)) {\n if (!first) {\n this.expect(types$1.comma);\n if (this.afterTrailingComma(types$1.braceR)) { break }\n } else { first = false; }\n\n nodes.push(this.parseExportSpecifier(exports));\n }\n return nodes\n};\n\n// Parses import declaration.\n\npp$8.parseImport = function(node) {\n this.next();\n\n // import '...'\n if (this.type === types$1.string) {\n node.specifiers = empty$1;\n node.source = this.parseExprAtom();\n } else {\n node.specifiers = this.parseImportSpecifiers();\n this.expectContextual(\"from\");\n node.source = this.type === types$1.string ? this.parseExprAtom() : this.unexpected();\n }\n this.semicolon();\n return this.finishNode(node, \"ImportDeclaration\")\n};\n\n// Parses a comma-separated list of module imports.\n\npp$8.parseImportSpecifier = function() {\n var node = this.startNode();\n node.imported = this.parseModuleExportName();\n\n if (this.eatContextual(\"as\")) {\n node.local = this.parseIdent();\n } else {\n this.checkUnreserved(node.imported);\n node.local = node.imported;\n }\n this.checkLValSimple(node.local, BIND_LEXICAL);\n\n return this.finishNode(node, \"ImportSpecifier\")\n};\n\npp$8.parseImportDefaultSpecifier = function() {\n // import defaultObj, { x, y as z } from '...'\n var node = this.startNode();\n node.local = this.parseIdent();\n this.checkLValSimple(node.local, BIND_LEXICAL);\n return this.finishNode(node, \"ImportDefaultSpecifier\")\n};\n\npp$8.parseImportNamespaceSpecifier = function() {\n var node = this.startNode();\n this.next();\n this.expectContextual(\"as\");\n node.local = this.parseIdent();\n this.checkLValSimple(node.local, BIND_LEXICAL);\n return this.finishNode(node, \"ImportNamespaceSpecifier\")\n};\n\npp$8.parseImportSpecifiers = function() {\n var nodes = [], first = true;\n if (this.type === types$1.name) {\n nodes.push(this.parseImportDefaultSpecifier());\n if (!this.eat(types$1.comma)) { return nodes }\n }\n if (this.type === types$1.star) {\n nodes.push(this.parseImportNamespaceSpecifier());\n return nodes\n }\n this.expect(types$1.braceL);\n while (!this.eat(types$1.braceR)) {\n if (!first) {\n this.expect(types$1.comma);\n if (this.afterTrailingComma(types$1.braceR)) { break }\n } else { first = false; }\n\n nodes.push(this.parseImportSpecifier());\n }\n return nodes\n};\n\npp$8.parseModuleExportName = function() {\n if (this.options.ecmaVersion >= 13 && this.type === types$1.string) {\n var stringLiteral = this.parseLiteral(this.value);\n if (loneSurrogate.test(stringLiteral.value)) {\n this.raise(stringLiteral.start, \"An export name cannot include a lone surrogate.\");\n }\n return stringLiteral\n }\n return this.parseIdent(true)\n};\n\n// Set `ExpressionStatement#directive` property for directive prologues.\npp$8.adaptDirectivePrologue = function(statements) {\n for (var i = 0; i < statements.length && this.isDirectiveCandidate(statements[i]); ++i) {\n statements[i].directive = statements[i].expression.raw.slice(1, -1);\n }\n};\npp$8.isDirectiveCandidate = function(statement) {\n return (\n this.options.ecmaVersion >= 5 &&\n statement.type === \"ExpressionStatement\" &&\n statement.expression.type === \"Literal\" &&\n typeof statement.expression.value === \"string\" &&\n // Reject parenthesized strings.\n (this.input[statement.start] === \"\\\"\" || this.input[statement.start] === \"'\")\n )\n};\n\nvar pp$7 = Parser.prototype;\n\n// Convert existing expression atom to assignable pattern\n// if possible.\n\npp$7.toAssignable = function(node, isBinding, refDestructuringErrors) {\n if (this.options.ecmaVersion >= 6 && node) {\n switch (node.type) {\n case \"Identifier\":\n if (this.inAsync && node.name === \"await\")\n { this.raise(node.start, \"Cannot use 'await' as identifier inside an async function\"); }\n break\n\n case \"ObjectPattern\":\n case \"ArrayPattern\":\n case \"AssignmentPattern\":\n case \"RestElement\":\n break\n\n case \"ObjectExpression\":\n node.type = \"ObjectPattern\";\n if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n for (var i = 0, list = node.properties; i < list.length; i += 1) {\n var prop = list[i];\n\n this.toAssignable(prop, isBinding);\n // Early error:\n // AssignmentRestProperty[Yield, Await] :\n // `...` DestructuringAssignmentTarget[Yield, Await]\n //\n // It is a Syntax Error if |DestructuringAssignmentTarget| is an |ArrayLiteral| or an |ObjectLiteral|.\n if (\n prop.type === \"RestElement\" &&\n (prop.argument.type === \"ArrayPattern\" || prop.argument.type === \"ObjectPattern\")\n ) {\n this.raise(prop.argument.start, \"Unexpected token\");\n }\n }\n break\n\n case \"Property\":\n // AssignmentProperty has type === \"Property\"\n if (node.kind !== \"init\") { this.raise(node.key.start, \"Object pattern can't contain getter or setter\"); }\n this.toAssignable(node.value, isBinding);\n break\n\n case \"ArrayExpression\":\n node.type = \"ArrayPattern\";\n if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n this.toAssignableList(node.elements, isBinding);\n break\n\n case \"SpreadElement\":\n node.type = \"RestElement\";\n this.toAssignable(node.argument, isBinding);\n if (node.argument.type === \"AssignmentPattern\")\n { this.raise(node.argument.start, \"Rest elements cannot have a default value\"); }\n break\n\n case \"AssignmentExpression\":\n if (node.operator !== \"=\") { this.raise(node.left.end, \"Only '=' operator can be used for specifying default value.\"); }\n node.type = \"AssignmentPattern\";\n delete node.operator;\n this.toAssignable(node.left, isBinding);\n break\n\n case \"ParenthesizedExpression\":\n this.toAssignable(node.expression, isBinding, refDestructuringErrors);\n break\n\n case \"ChainExpression\":\n this.raiseRecoverable(node.start, \"Optional chaining cannot appear in left-hand side\");\n break\n\n case \"MemberExpression\":\n if (!isBinding) { break }\n\n default:\n this.raise(node.start, \"Assigning to rvalue\");\n }\n } else if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n return node\n};\n\n// Convert list of expression atoms to binding list.\n\npp$7.toAssignableList = function(exprList, isBinding) {\n var end = exprList.length;\n for (var i = 0; i < end; i++) {\n var elt = exprList[i];\n if (elt) { this.toAssignable(elt, isBinding); }\n }\n if (end) {\n var last = exprList[end - 1];\n if (this.options.ecmaVersion === 6 && isBinding && last && last.type === \"RestElement\" && last.argument.type !== \"Identifier\")\n { this.unexpected(last.argument.start); }\n }\n return exprList\n};\n\n// Parses spread element.\n\npp$7.parseSpread = function(refDestructuringErrors) {\n var node = this.startNode();\n this.next();\n node.argument = this.parseMaybeAssign(false, refDestructuringErrors);\n return this.finishNode(node, \"SpreadElement\")\n};\n\npp$7.parseRestBinding = function() {\n var node = this.startNode();\n this.next();\n\n // RestElement inside of a function parameter must be an identifier\n if (this.options.ecmaVersion === 6 && this.type !== types$1.name)\n { this.unexpected(); }\n\n node.argument = this.parseBindingAtom();\n\n return this.finishNode(node, \"RestElement\")\n};\n\n// Parses lvalue (assignable) atom.\n\npp$7.parseBindingAtom = function() {\n if (this.options.ecmaVersion >= 6) {\n switch (this.type) {\n case types$1.bracketL:\n var node = this.startNode();\n this.next();\n node.elements = this.parseBindingList(types$1.bracketR, true, true);\n return this.finishNode(node, \"ArrayPattern\")\n\n case types$1.braceL:\n return this.parseObj(true)\n }\n }\n return this.parseIdent()\n};\n\npp$7.parseBindingList = function(close, allowEmpty, allowTrailingComma, allowModifiers) {\n var elts = [], first = true;\n while (!this.eat(close)) {\n if (first) { first = false; }\n else { this.expect(types$1.comma); }\n if (allowEmpty && this.type === types$1.comma) {\n elts.push(null);\n } else if (allowTrailingComma && this.afterTrailingComma(close)) {\n break\n } else if (this.type === types$1.ellipsis) {\n var rest = this.parseRestBinding();\n this.parseBindingListItem(rest);\n elts.push(rest);\n if (this.type === types$1.comma) { this.raiseRecoverable(this.start, \"Comma is not permitted after the rest element\"); }\n this.expect(close);\n break\n } else {\n elts.push(this.parseAssignableListItem(allowModifiers));\n }\n }\n return elts\n};\n\npp$7.parseAssignableListItem = function(allowModifiers) {\n var elem = this.parseMaybeDefault(this.start, this.startLoc);\n this.parseBindingListItem(elem);\n return elem\n};\n\npp$7.parseBindingListItem = function(param) {\n return param\n};\n\n// Parses assignment pattern around given atom if possible.\n\npp$7.parseMaybeDefault = function(startPos, startLoc, left) {\n left = left || this.parseBindingAtom();\n if (this.options.ecmaVersion < 6 || !this.eat(types$1.eq)) { return left }\n var node = this.startNodeAt(startPos, startLoc);\n node.left = left;\n node.right = this.parseMaybeAssign();\n return this.finishNode(node, \"AssignmentPattern\")\n};\n\n// The following three functions all verify that a node is an lvalue —\n// something that can be bound, or assigned to. In order to do so, they perform\n// a variety of checks:\n//\n// - Check that none of the bound/assigned-to identifiers are reserved words.\n// - Record name declarations for bindings in the appropriate scope.\n// - Check duplicate argument names, if checkClashes is set.\n//\n// If a complex binding pattern is encountered (e.g., object and array\n// destructuring), the entire pattern is recursively checked.\n//\n// There are three versions of checkLVal*() appropriate for different\n// circumstances:\n//\n// - checkLValSimple() shall be used if the syntactic construct supports\n// nothing other than identifiers and member expressions. Parenthesized\n// expressions are also correctly handled. This is generally appropriate for\n// constructs for which the spec says\n//\n// > It is a Syntax Error if AssignmentTargetType of [the production] is not\n// > simple.\n//\n// It is also appropriate for checking if an identifier is valid and not\n// defined elsewhere, like import declarations or function/class identifiers.\n//\n// Examples where this is used include:\n// a += …;\n// import a from '…';\n// where a is the node to be checked.\n//\n// - checkLValPattern() shall be used if the syntactic construct supports\n// anything checkLValSimple() supports, as well as object and array\n// destructuring patterns. This is generally appropriate for constructs for\n// which the spec says\n//\n// > It is a Syntax Error if [the production] is neither an ObjectLiteral nor\n// > an ArrayLiteral and AssignmentTargetType of [the production] is not\n// > simple.\n//\n// Examples where this is used include:\n// (a = …);\n// const a = …;\n// try { … } catch (a) { … }\n// where a is the node to be checked.\n//\n// - checkLValInnerPattern() shall be used if the syntactic construct supports\n// anything checkLValPattern() supports, as well as default assignment\n// patterns, rest elements, and other constructs that may appear within an\n// object or array destructuring pattern.\n//\n// As a special case, function parameters also use checkLValInnerPattern(),\n// as they also support defaults and rest constructs.\n//\n// These functions deliberately support both assignment and binding constructs,\n// as the logic for both is exceedingly similar. If the node is the target of\n// an assignment, then bindingType should be set to BIND_NONE. Otherwise, it\n// should be set to the appropriate BIND_* constant, like BIND_VAR or\n// BIND_LEXICAL.\n//\n// If the function is called with a non-BIND_NONE bindingType, then\n// additionally a checkClashes object may be specified to allow checking for\n// duplicate argument names. checkClashes is ignored if the provided construct\n// is an assignment (i.e., bindingType is BIND_NONE).\n\npp$7.checkLValSimple = function(expr, bindingType, checkClashes) {\n if ( bindingType === void 0 ) bindingType = BIND_NONE;\n\n var isBind = bindingType !== BIND_NONE;\n\n switch (expr.type) {\n case \"Identifier\":\n if (this.strict && this.reservedWordsStrictBind.test(expr.name))\n { this.raiseRecoverable(expr.start, (isBind ? \"Binding \" : \"Assigning to \") + expr.name + \" in strict mode\"); }\n if (isBind) {\n if (bindingType === BIND_LEXICAL && expr.name === \"let\")\n { this.raiseRecoverable(expr.start, \"let is disallowed as a lexically bound name\"); }\n if (checkClashes) {\n if (hasOwn(checkClashes, expr.name))\n { this.raiseRecoverable(expr.start, \"Argument name clash\"); }\n checkClashes[expr.name] = true;\n }\n if (bindingType !== BIND_OUTSIDE) { this.declareName(expr.name, bindingType, expr.start); }\n }\n break\n\n case \"ChainExpression\":\n this.raiseRecoverable(expr.start, \"Optional chaining cannot appear in left-hand side\");\n break\n\n case \"MemberExpression\":\n if (isBind) { this.raiseRecoverable(expr.start, \"Binding member expression\"); }\n break\n\n case \"ParenthesizedExpression\":\n if (isBind) { this.raiseRecoverable(expr.start, \"Binding parenthesized expression\"); }\n return this.checkLValSimple(expr.expression, bindingType, checkClashes)\n\n default:\n this.raise(expr.start, (isBind ? \"Binding\" : \"Assigning to\") + \" rvalue\");\n }\n};\n\npp$7.checkLValPattern = function(expr, bindingType, checkClashes) {\n if ( bindingType === void 0 ) bindingType = BIND_NONE;\n\n switch (expr.type) {\n case \"ObjectPattern\":\n for (var i = 0, list = expr.properties; i < list.length; i += 1) {\n var prop = list[i];\n\n this.checkLValInnerPattern(prop, bindingType, checkClashes);\n }\n break\n\n case \"ArrayPattern\":\n for (var i$1 = 0, list$1 = expr.elements; i$1 < list$1.length; i$1 += 1) {\n var elem = list$1[i$1];\n\n if (elem) { this.checkLValInnerPattern(elem, bindingType, checkClashes); }\n }\n break\n\n default:\n this.checkLValSimple(expr, bindingType, checkClashes);\n }\n};\n\npp$7.checkLValInnerPattern = function(expr, bindingType, checkClashes) {\n if ( bindingType === void 0 ) bindingType = BIND_NONE;\n\n switch (expr.type) {\n case \"Property\":\n // AssignmentProperty has type === \"Property\"\n this.checkLValInnerPattern(expr.value, bindingType, checkClashes);\n break\n\n case \"AssignmentPattern\":\n this.checkLValPattern(expr.left, bindingType, checkClashes);\n break\n\n case \"RestElement\":\n this.checkLValPattern(expr.argument, bindingType, checkClashes);\n break\n\n default:\n this.checkLValPattern(expr, bindingType, checkClashes);\n }\n};\n\n// The algorithm used to determine whether a regexp can appear at a\n// given point in the program is loosely based on sweet.js' approach.\n// See https://github.com/mozilla/sweet.js/wiki/design\n\n\nvar TokContext = function TokContext(token, isExpr, preserveSpace, override, generator) {\n this.token = token;\n this.isExpr = !!isExpr;\n this.preserveSpace = !!preserveSpace;\n this.override = override;\n this.generator = !!generator;\n};\n\nvar types = {\n b_stat: new TokContext(\"{\", false),\n b_expr: new TokContext(\"{\", true),\n b_tmpl: new TokContext(\"${\", false),\n p_stat: new TokContext(\"(\", false),\n p_expr: new TokContext(\"(\", true),\n q_tmpl: new TokContext(\"`\", true, true, function (p) { return p.tryReadTemplateToken(); }),\n f_stat: new TokContext(\"function\", false),\n f_expr: new TokContext(\"function\", true),\n f_expr_gen: new TokContext(\"function\", true, false, null, true),\n f_gen: new TokContext(\"function\", false, false, null, true)\n};\n\nvar pp$6 = Parser.prototype;\n\npp$6.initialContext = function() {\n return [types.b_stat]\n};\n\npp$6.curContext = function() {\n return this.context[this.context.length - 1]\n};\n\npp$6.braceIsBlock = function(prevType) {\n var parent = this.curContext();\n if (parent === types.f_expr || parent === types.f_stat)\n { return true }\n if (prevType === types$1.colon && (parent === types.b_stat || parent === types.b_expr))\n { return !parent.isExpr }\n\n // The check for `tt.name && exprAllowed` detects whether we are\n // after a `yield` or `of` construct. See the `updateContext` for\n // `tt.name`.\n if (prevType === types$1._return || prevType === types$1.name && this.exprAllowed)\n { return lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) }\n if (prevType === types$1._else || prevType === types$1.semi || prevType === types$1.eof || prevType === types$1.parenR || prevType === types$1.arrow)\n { return true }\n if (prevType === types$1.braceL)\n { return parent === types.b_stat }\n if (prevType === types$1._var || prevType === types$1._const || prevType === types$1.name)\n { return false }\n return !this.exprAllowed\n};\n\npp$6.inGeneratorContext = function() {\n for (var i = this.context.length - 1; i >= 1; i--) {\n var context = this.context[i];\n if (context.token === \"function\")\n { return context.generator }\n }\n return false\n};\n\npp$6.updateContext = function(prevType) {\n var update, type = this.type;\n if (type.keyword && prevType === types$1.dot)\n { this.exprAllowed = false; }\n else if (update = type.updateContext)\n { update.call(this, prevType); }\n else\n { this.exprAllowed = type.beforeExpr; }\n};\n\n// Used to handle egde cases when token context could not be inferred correctly during tokenization phase\n\npp$6.overrideContext = function(tokenCtx) {\n if (this.curContext() !== tokenCtx) {\n this.context[this.context.length - 1] = tokenCtx;\n }\n};\n\n// Token-specific context update code\n\ntypes$1.parenR.updateContext = types$1.braceR.updateContext = function() {\n if (this.context.length === 1) {\n this.exprAllowed = true;\n return\n }\n var out = this.context.pop();\n if (out === types.b_stat && this.curContext().token === \"function\") {\n out = this.context.pop();\n }\n this.exprAllowed = !out.isExpr;\n};\n\ntypes$1.braceL.updateContext = function(prevType) {\n this.context.push(this.braceIsBlock(prevType) ? types.b_stat : types.b_expr);\n this.exprAllowed = true;\n};\n\ntypes$1.dollarBraceL.updateContext = function() {\n this.context.push(types.b_tmpl);\n this.exprAllowed = true;\n};\n\ntypes$1.parenL.updateContext = function(prevType) {\n var statementParens = prevType === types$1._if || prevType === types$1._for || prevType === types$1._with || prevType === types$1._while;\n this.context.push(statementParens ? types.p_stat : types.p_expr);\n this.exprAllowed = true;\n};\n\ntypes$1.incDec.updateContext = function() {\n // tokExprAllowed stays unchanged\n};\n\ntypes$1._function.updateContext = types$1._class.updateContext = function(prevType) {\n if (prevType.beforeExpr && prevType !== types$1._else &&\n !(prevType === types$1.semi && this.curContext() !== types.p_stat) &&\n !(prevType === types$1._return && lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) &&\n !((prevType === types$1.colon || prevType === types$1.braceL) && this.curContext() === types.b_stat))\n { this.context.push(types.f_expr); }\n else\n { this.context.push(types.f_stat); }\n this.exprAllowed = false;\n};\n\ntypes$1.backQuote.updateContext = function() {\n if (this.curContext() === types.q_tmpl)\n { this.context.pop(); }\n else\n { this.context.push(types.q_tmpl); }\n this.exprAllowed = false;\n};\n\ntypes$1.star.updateContext = function(prevType) {\n if (prevType === types$1._function) {\n var index = this.context.length - 1;\n if (this.context[index] === types.f_expr)\n { this.context[index] = types.f_expr_gen; }\n else\n { this.context[index] = types.f_gen; }\n }\n this.exprAllowed = true;\n};\n\ntypes$1.name.updateContext = function(prevType) {\n var allowed = false;\n if (this.options.ecmaVersion >= 6 && prevType !== types$1.dot) {\n if (this.value === \"of\" && !this.exprAllowed ||\n this.value === \"yield\" && this.inGeneratorContext())\n { allowed = true; }\n }\n this.exprAllowed = allowed;\n};\n\n// A recursive descent parser operates by defining functions for all\n// syntactic elements, and recursively calling those, each function\n// advancing the input stream and returning an AST node. Precedence\n// of constructs (for example, the fact that `!x[1]` means `!(x[1])`\n// instead of `(!x)[1]` is handled by the fact that the parser\n// function that parses unary prefix operators is called first, and\n// in turn calls the function that parses `[]` subscripts — that\n// way, it'll receive the node for `x[1]` already parsed, and wraps\n// *that* in the unary operator node.\n//\n// Acorn uses an [operator precedence parser][opp] to handle binary\n// operator precedence, because it is much more compact than using\n// the technique outlined above, which uses different, nesting\n// functions to specify precedence, for all of the ten binary\n// precedence levels that JavaScript defines.\n//\n// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser\n\n\nvar pp$5 = Parser.prototype;\n\n// Check if property name clashes with already added.\n// Object/class getters and setters are not allowed to clash —\n// either with each other or with an init property — and in\n// strict mode, init properties are also not allowed to be repeated.\n\npp$5.checkPropClash = function(prop, propHash, refDestructuringErrors) {\n if (this.options.ecmaVersion >= 9 && prop.type === \"SpreadElement\")\n { return }\n if (this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand))\n { return }\n var key = prop.key;\n var name;\n switch (key.type) {\n case \"Identifier\": name = key.name; break\n case \"Literal\": name = String(key.value); break\n default: return\n }\n var kind = prop.kind;\n if (this.options.ecmaVersion >= 6) {\n if (name === \"__proto__\" && kind === \"init\") {\n if (propHash.proto) {\n if (refDestructuringErrors) {\n if (refDestructuringErrors.doubleProto < 0) {\n refDestructuringErrors.doubleProto = key.start;\n }\n } else {\n this.raiseRecoverable(key.start, \"Redefinition of __proto__ property\");\n }\n }\n propHash.proto = true;\n }\n return\n }\n name = \"$\" + name;\n var other = propHash[name];\n if (other) {\n var redefinition;\n if (kind === \"init\") {\n redefinition = this.strict && other.init || other.get || other.set;\n } else {\n redefinition = other.init || other[kind];\n }\n if (redefinition)\n { this.raiseRecoverable(key.start, \"Redefinition of property\"); }\n } else {\n other = propHash[name] = {\n init: false,\n get: false,\n set: false\n };\n }\n other[kind] = true;\n};\n\n// ### Expression parsing\n\n// These nest, from the most general expression type at the top to\n// 'atomic', nondivisible expression types at the bottom. Most of\n// the functions will simply let the function(s) below them parse,\n// and, *if* the syntactic construct they handle is present, wrap\n// the AST node that the inner parser gave them in another node.\n\n// Parse a full expression. The optional arguments are used to\n// forbid the `in` operator (in for loops initalization expressions)\n// and provide reference for storing '=' operator inside shorthand\n// property assignment in contexts where both object expression\n// and object pattern might appear (so it's possible to raise\n// delayed syntax error at correct position).\n\npp$5.parseExpression = function(forInit, refDestructuringErrors) {\n var startPos = this.start, startLoc = this.startLoc;\n var expr = this.parseMaybeAssign(forInit, refDestructuringErrors);\n if (this.type === types$1.comma) {\n var node = this.startNodeAt(startPos, startLoc);\n node.expressions = [expr];\n while (this.eat(types$1.comma)) { node.expressions.push(this.parseMaybeAssign(forInit, refDestructuringErrors)); }\n return this.finishNode(node, \"SequenceExpression\")\n }\n return expr\n};\n\n// Parse an assignment expression. This includes applications of\n// operators like `+=`.\n\npp$5.parseMaybeAssign = function(forInit, refDestructuringErrors, afterLeftParse) {\n if (this.isContextual(\"yield\")) {\n if (this.inGenerator) { return this.parseYield(forInit) }\n // The tokenizer will assume an expression is allowed after\n // `yield`, but this isn't that kind of yield\n else { this.exprAllowed = false; }\n }\n\n var ownDestructuringErrors = false, oldParenAssign = -1, oldTrailingComma = -1, oldDoubleProto = -1;\n if (refDestructuringErrors) {\n oldParenAssign = refDestructuringErrors.parenthesizedAssign;\n oldTrailingComma = refDestructuringErrors.trailingComma;\n oldDoubleProto = refDestructuringErrors.doubleProto;\n refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = -1;\n } else {\n refDestructuringErrors = new DestructuringErrors;\n ownDestructuringErrors = true;\n }\n\n var startPos = this.start, startLoc = this.startLoc;\n if (this.type === types$1.parenL || this.type === types$1.name) {\n this.potentialArrowAt = this.start;\n this.potentialArrowInForAwait = forInit === \"await\";\n }\n var left = this.parseMaybeConditional(forInit, refDestructuringErrors);\n if (afterLeftParse) { left = afterLeftParse.call(this, left, startPos, startLoc); }\n if (this.type.isAssign) {\n var node = this.startNodeAt(startPos, startLoc);\n node.operator = this.value;\n if (this.type === types$1.eq)\n { left = this.toAssignable(left, false, refDestructuringErrors); }\n if (!ownDestructuringErrors) {\n refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = refDestructuringErrors.doubleProto = -1;\n }\n if (refDestructuringErrors.shorthandAssign >= left.start)\n { refDestructuringErrors.shorthandAssign = -1; } // reset because shorthand default was used correctly\n if (this.type === types$1.eq)\n { this.checkLValPattern(left); }\n else\n { this.checkLValSimple(left); }\n node.left = left;\n this.next();\n node.right = this.parseMaybeAssign(forInit);\n if (oldDoubleProto > -1) { refDestructuringErrors.doubleProto = oldDoubleProto; }\n return this.finishNode(node, \"AssignmentExpression\")\n } else {\n if (ownDestructuringErrors) { this.checkExpressionErrors(refDestructuringErrors, true); }\n }\n if (oldParenAssign > -1) { refDestructuringErrors.parenthesizedAssign = oldParenAssign; }\n if (oldTrailingComma > -1) { refDestructuringErrors.trailingComma = oldTrailingComma; }\n return left\n};\n\n// Parse a ternary conditional (`?:`) operator.\n\npp$5.parseMaybeConditional = function(forInit, refDestructuringErrors) {\n var startPos = this.start, startLoc = this.startLoc;\n var expr = this.parseExprOps(forInit, refDestructuringErrors);\n if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n if (this.eat(types$1.question)) {\n var node = this.startNodeAt(startPos, startLoc);\n node.test = expr;\n node.consequent = this.parseMaybeAssign();\n this.expect(types$1.colon);\n node.alternate = this.parseMaybeAssign(forInit);\n return this.finishNode(node, \"ConditionalExpression\")\n }\n return expr\n};\n\n// Start the precedence parser.\n\npp$5.parseExprOps = function(forInit, refDestructuringErrors) {\n var startPos = this.start, startLoc = this.startLoc;\n var expr = this.parseMaybeUnary(refDestructuringErrors, false, false, forInit);\n if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n return expr.start === startPos && expr.type === \"ArrowFunctionExpression\" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, forInit)\n};\n\n// Parse binary operators with the operator precedence parsing\n// algorithm. `left` is the left-hand side of the operator.\n// `minPrec` provides context that allows the function to stop and\n// defer further parser to one of its callers when it encounters an\n// operator that has a lower precedence than the set it is parsing.\n\npp$5.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, forInit) {\n var prec = this.type.binop;\n if (prec != null && (!forInit || this.type !== types$1._in)) {\n if (prec > minPrec) {\n var logical = this.type === types$1.logicalOR || this.type === types$1.logicalAND;\n var coalesce = this.type === types$1.coalesce;\n if (coalesce) {\n // Handle the precedence of `tt.coalesce` as equal to the range of logical expressions.\n // In other words, `node.right` shouldn't contain logical expressions in order to check the mixed error.\n prec = types$1.logicalAND.binop;\n }\n var op = this.value;\n this.next();\n var startPos = this.start, startLoc = this.startLoc;\n var right = this.parseExprOp(this.parseMaybeUnary(null, false, false, forInit), startPos, startLoc, prec, forInit);\n var node = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical || coalesce);\n if ((logical && this.type === types$1.coalesce) || (coalesce && (this.type === types$1.logicalOR || this.type === types$1.logicalAND))) {\n this.raiseRecoverable(this.start, \"Logical expressions and coalesce expressions cannot be mixed. Wrap either by parentheses\");\n }\n return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, forInit)\n }\n }\n return left\n};\n\npp$5.buildBinary = function(startPos, startLoc, left, right, op, logical) {\n if (right.type === \"PrivateIdentifier\") { this.raise(right.start, \"Private identifier can only be left side of binary expression\"); }\n var node = this.startNodeAt(startPos, startLoc);\n node.left = left;\n node.operator = op;\n node.right = right;\n return this.finishNode(node, logical ? \"LogicalExpression\" : \"BinaryExpression\")\n};\n\n// Parse unary operators, both prefix and postfix.\n\npp$5.parseMaybeUnary = function(refDestructuringErrors, sawUnary, incDec, forInit) {\n var startPos = this.start, startLoc = this.startLoc, expr;\n if (this.isContextual(\"await\") && this.canAwait) {\n expr = this.parseAwait(forInit);\n sawUnary = true;\n } else if (this.type.prefix) {\n var node = this.startNode(), update = this.type === types$1.incDec;\n node.operator = this.value;\n node.prefix = true;\n this.next();\n node.argument = this.parseMaybeUnary(null, true, update, forInit);\n this.checkExpressionErrors(refDestructuringErrors, true);\n if (update) { this.checkLValSimple(node.argument); }\n else if (this.strict && node.operator === \"delete\" &&\n node.argument.type === \"Identifier\")\n { this.raiseRecoverable(node.start, \"Deleting local variable in strict mode\"); }\n else if (node.operator === \"delete\" && isPrivateFieldAccess(node.argument))\n { this.raiseRecoverable(node.start, \"Private fields can not be deleted\"); }\n else { sawUnary = true; }\n expr = this.finishNode(node, update ? \"UpdateExpression\" : \"UnaryExpression\");\n } else if (!sawUnary && this.type === types$1.privateId) {\n if ((forInit || this.privateNameStack.length === 0) && this.options.checkPrivateFields) { this.unexpected(); }\n expr = this.parsePrivateIdent();\n // only could be private fields in 'in', such as #x in obj\n if (this.type !== types$1._in) { this.unexpected(); }\n } else {\n expr = this.parseExprSubscripts(refDestructuringErrors, forInit);\n if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n while (this.type.postfix && !this.canInsertSemicolon()) {\n var node$1 = this.startNodeAt(startPos, startLoc);\n node$1.operator = this.value;\n node$1.prefix = false;\n node$1.argument = expr;\n this.checkLValSimple(expr);\n this.next();\n expr = this.finishNode(node$1, \"UpdateExpression\");\n }\n }\n\n if (!incDec && this.eat(types$1.starstar)) {\n if (sawUnary)\n { this.unexpected(this.lastTokStart); }\n else\n { return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, false, false, forInit), \"**\", false) }\n } else {\n return expr\n }\n};\n\nfunction isPrivateFieldAccess(node) {\n return (\n node.type === \"MemberExpression\" && node.property.type === \"PrivateIdentifier\" ||\n node.type === \"ChainExpression\" && isPrivateFieldAccess(node.expression)\n )\n}\n\n// Parse call, dot, and `[]`-subscript expressions.\n\npp$5.parseExprSubscripts = function(refDestructuringErrors, forInit) {\n var startPos = this.start, startLoc = this.startLoc;\n var expr = this.parseExprAtom(refDestructuringErrors, forInit);\n if (expr.type === \"ArrowFunctionExpression\" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== \")\")\n { return expr }\n var result = this.parseSubscripts(expr, startPos, startLoc, false, forInit);\n if (refDestructuringErrors && result.type === \"MemberExpression\") {\n if (refDestructuringErrors.parenthesizedAssign >= result.start) { refDestructuringErrors.parenthesizedAssign = -1; }\n if (refDestructuringErrors.parenthesizedBind >= result.start) { refDestructuringErrors.parenthesizedBind = -1; }\n if (refDestructuringErrors.trailingComma >= result.start) { refDestructuringErrors.trailingComma = -1; }\n }\n return result\n};\n\npp$5.parseSubscripts = function(base, startPos, startLoc, noCalls, forInit) {\n var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === \"Identifier\" && base.name === \"async\" &&\n this.lastTokEnd === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 &&\n this.potentialArrowAt === base.start;\n var optionalChained = false;\n\n while (true) {\n var element = this.parseSubscript(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit);\n\n if (element.optional) { optionalChained = true; }\n if (element === base || element.type === \"ArrowFunctionExpression\") {\n if (optionalChained) {\n var chainNode = this.startNodeAt(startPos, startLoc);\n chainNode.expression = element;\n element = this.finishNode(chainNode, \"ChainExpression\");\n }\n return element\n }\n\n base = element;\n }\n};\n\npp$5.shouldParseAsyncArrow = function() {\n return !this.canInsertSemicolon() && this.eat(types$1.arrow)\n};\n\npp$5.parseSubscriptAsyncArrow = function(startPos, startLoc, exprList, forInit) {\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, true, forInit)\n};\n\npp$5.parseSubscript = function(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit) {\n var optionalSupported = this.options.ecmaVersion >= 11;\n var optional = optionalSupported && this.eat(types$1.questionDot);\n if (noCalls && optional) { this.raise(this.lastTokStart, \"Optional chaining cannot appear in the callee of new expressions\"); }\n\n var computed = this.eat(types$1.bracketL);\n if (computed || (optional && this.type !== types$1.parenL && this.type !== types$1.backQuote) || this.eat(types$1.dot)) {\n var node = this.startNodeAt(startPos, startLoc);\n node.object = base;\n if (computed) {\n node.property = this.parseExpression();\n this.expect(types$1.bracketR);\n } else if (this.type === types$1.privateId && base.type !== \"Super\") {\n node.property = this.parsePrivateIdent();\n } else {\n node.property = this.parseIdent(this.options.allowReserved !== \"never\");\n }\n node.computed = !!computed;\n if (optionalSupported) {\n node.optional = optional;\n }\n base = this.finishNode(node, \"MemberExpression\");\n } else if (!noCalls && this.eat(types$1.parenL)) {\n var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n this.yieldPos = 0;\n this.awaitPos = 0;\n this.awaitIdentPos = 0;\n var exprList = this.parseExprList(types$1.parenR, this.options.ecmaVersion >= 8, false, refDestructuringErrors);\n if (maybeAsyncArrow && !optional && this.shouldParseAsyncArrow()) {\n this.checkPatternErrors(refDestructuringErrors, false);\n this.checkYieldAwaitInDefaultParams();\n if (this.awaitIdentPos > 0)\n { this.raise(this.awaitIdentPos, \"Cannot use 'await' as identifier inside an async function\"); }\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n this.awaitIdentPos = oldAwaitIdentPos;\n return this.parseSubscriptAsyncArrow(startPos, startLoc, exprList, forInit)\n }\n this.checkExpressionErrors(refDestructuringErrors, true);\n this.yieldPos = oldYieldPos || this.yieldPos;\n this.awaitPos = oldAwaitPos || this.awaitPos;\n this.awaitIdentPos = oldAwaitIdentPos || this.awaitIdentPos;\n var node$1 = this.startNodeAt(startPos, startLoc);\n node$1.callee = base;\n node$1.arguments = exprList;\n if (optionalSupported) {\n node$1.optional = optional;\n }\n base = this.finishNode(node$1, \"CallExpression\");\n } else if (this.type === types$1.backQuote) {\n if (optional || optionalChained) {\n this.raise(this.start, \"Optional chaining cannot appear in the tag of tagged template expressions\");\n }\n var node$2 = this.startNodeAt(startPos, startLoc);\n node$2.tag = base;\n node$2.quasi = this.parseTemplate({isTagged: true});\n base = this.finishNode(node$2, \"TaggedTemplateExpression\");\n }\n return base\n};\n\n// Parse an atomic expression — either a single token that is an\n// expression, an expression started by a keyword like `function` or\n// `new`, or an expression wrapped in punctuation like `()`, `[]`,\n// or `{}`.\n\npp$5.parseExprAtom = function(refDestructuringErrors, forInit, forNew) {\n // If a division operator appears in an expression position, the\n // tokenizer got confused, and we force it to read a regexp instead.\n if (this.type === types$1.slash) { this.readRegexp(); }\n\n var node, canBeArrow = this.potentialArrowAt === this.start;\n switch (this.type) {\n case types$1._super:\n if (!this.allowSuper)\n { this.raise(this.start, \"'super' keyword outside a method\"); }\n node = this.startNode();\n this.next();\n if (this.type === types$1.parenL && !this.allowDirectSuper)\n { this.raise(node.start, \"super() call outside constructor of a subclass\"); }\n // The `super` keyword can appear at below:\n // SuperProperty:\n // super [ Expression ]\n // super . IdentifierName\n // SuperCall:\n // super ( Arguments )\n if (this.type !== types$1.dot && this.type !== types$1.bracketL && this.type !== types$1.parenL)\n { this.unexpected(); }\n return this.finishNode(node, \"Super\")\n\n case types$1._this:\n node = this.startNode();\n this.next();\n return this.finishNode(node, \"ThisExpression\")\n\n case types$1.name:\n var startPos = this.start, startLoc = this.startLoc, containsEsc = this.containsEsc;\n var id = this.parseIdent(false);\n if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === \"async\" && !this.canInsertSemicolon() && this.eat(types$1._function)) {\n this.overrideContext(types.f_expr);\n return this.parseFunction(this.startNodeAt(startPos, startLoc), 0, false, true, forInit)\n }\n if (canBeArrow && !this.canInsertSemicolon()) {\n if (this.eat(types$1.arrow))\n { return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false, forInit) }\n if (this.options.ecmaVersion >= 8 && id.name === \"async\" && this.type === types$1.name && !containsEsc &&\n (!this.potentialArrowInForAwait || this.value !== \"of\" || this.containsEsc)) {\n id = this.parseIdent(false);\n if (this.canInsertSemicolon() || !this.eat(types$1.arrow))\n { this.unexpected(); }\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true, forInit)\n }\n }\n return id\n\n case types$1.regexp:\n var value = this.value;\n node = this.parseLiteral(value.value);\n node.regex = {pattern: value.pattern, flags: value.flags};\n return node\n\n case types$1.num: case types$1.string:\n return this.parseLiteral(this.value)\n\n case types$1._null: case types$1._true: case types$1._false:\n node = this.startNode();\n node.value = this.type === types$1._null ? null : this.type === types$1._true;\n node.raw = this.type.keyword;\n this.next();\n return this.finishNode(node, \"Literal\")\n\n case types$1.parenL:\n var start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow, forInit);\n if (refDestructuringErrors) {\n if (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr))\n { refDestructuringErrors.parenthesizedAssign = start; }\n if (refDestructuringErrors.parenthesizedBind < 0)\n { refDestructuringErrors.parenthesizedBind = start; }\n }\n return expr\n\n case types$1.bracketL:\n node = this.startNode();\n this.next();\n node.elements = this.parseExprList(types$1.bracketR, true, true, refDestructuringErrors);\n return this.finishNode(node, \"ArrayExpression\")\n\n case types$1.braceL:\n this.overrideContext(types.b_expr);\n return this.parseObj(false, refDestructuringErrors)\n\n case types$1._function:\n node = this.startNode();\n this.next();\n return this.parseFunction(node, 0)\n\n case types$1._class:\n return this.parseClass(this.startNode(), false)\n\n case types$1._new:\n return this.parseNew()\n\n case types$1.backQuote:\n return this.parseTemplate()\n\n case types$1._import:\n if (this.options.ecmaVersion >= 11) {\n return this.parseExprImport(forNew)\n } else {\n return this.unexpected()\n }\n\n default:\n return this.parseExprAtomDefault()\n }\n};\n\npp$5.parseExprAtomDefault = function() {\n this.unexpected();\n};\n\npp$5.parseExprImport = function(forNew) {\n var node = this.startNode();\n\n // Consume `import` as an identifier for `import.meta`.\n // Because `this.parseIdent(true)` doesn't check escape sequences, it needs the check of `this.containsEsc`.\n if (this.containsEsc) { this.raiseRecoverable(this.start, \"Escape sequence in keyword import\"); }\n var meta = this.parseIdent(true);\n\n if (this.type === types$1.parenL && !forNew) {\n return this.parseDynamicImport(node)\n } else if (this.type === types$1.dot) {\n node.meta = meta;\n return this.parseImportMeta(node)\n } else {\n this.unexpected();\n }\n};\n\npp$5.parseDynamicImport = function(node) {\n this.next(); // skip `(`\n\n // Parse node.source.\n node.source = this.parseMaybeAssign();\n\n // Verify ending.\n if (!this.eat(types$1.parenR)) {\n var errorPos = this.start;\n if (this.eat(types$1.comma) && this.eat(types$1.parenR)) {\n this.raiseRecoverable(errorPos, \"Trailing comma is not allowed in import()\");\n } else {\n this.unexpected(errorPos);\n }\n }\n\n return this.finishNode(node, \"ImportExpression\")\n};\n\npp$5.parseImportMeta = function(node) {\n this.next(); // skip `.`\n\n var containsEsc = this.containsEsc;\n node.property = this.parseIdent(true);\n\n if (node.property.name !== \"meta\")\n { this.raiseRecoverable(node.property.start, \"The only valid meta property for import is 'import.meta'\"); }\n if (containsEsc)\n { this.raiseRecoverable(node.start, \"'import.meta' must not contain escaped characters\"); }\n if (this.options.sourceType !== \"module\" && !this.options.allowImportExportEverywhere)\n { this.raiseRecoverable(node.start, \"Cannot use 'import.meta' outside a module\"); }\n\n return this.finishNode(node, \"MetaProperty\")\n};\n\npp$5.parseLiteral = function(value) {\n var node = this.startNode();\n node.value = value;\n node.raw = this.input.slice(this.start, this.end);\n if (node.raw.charCodeAt(node.raw.length - 1) === 110) { node.bigint = node.raw.slice(0, -1).replace(/_/g, \"\"); }\n this.next();\n return this.finishNode(node, \"Literal\")\n};\n\npp$5.parseParenExpression = function() {\n this.expect(types$1.parenL);\n var val = this.parseExpression();\n this.expect(types$1.parenR);\n return val\n};\n\npp$5.shouldParseArrow = function(exprList) {\n return !this.canInsertSemicolon()\n};\n\npp$5.parseParenAndDistinguishExpression = function(canBeArrow, forInit) {\n var startPos = this.start, startLoc = this.startLoc, val, allowTrailingComma = this.options.ecmaVersion >= 8;\n if (this.options.ecmaVersion >= 6) {\n this.next();\n\n var innerStartPos = this.start, innerStartLoc = this.startLoc;\n var exprList = [], first = true, lastIsComma = false;\n var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart;\n this.yieldPos = 0;\n this.awaitPos = 0;\n // Do not save awaitIdentPos to allow checking awaits nested in parameters\n while (this.type !== types$1.parenR) {\n first ? first = false : this.expect(types$1.comma);\n if (allowTrailingComma && this.afterTrailingComma(types$1.parenR, true)) {\n lastIsComma = true;\n break\n } else if (this.type === types$1.ellipsis) {\n spreadStart = this.start;\n exprList.push(this.parseParenItem(this.parseRestBinding()));\n if (this.type === types$1.comma) {\n this.raiseRecoverable(\n this.start,\n \"Comma is not permitted after the rest element\"\n );\n }\n break\n } else {\n exprList.push(this.parseMaybeAssign(false, refDestructuringErrors, this.parseParenItem));\n }\n }\n var innerEndPos = this.lastTokEnd, innerEndLoc = this.lastTokEndLoc;\n this.expect(types$1.parenR);\n\n if (canBeArrow && this.shouldParseArrow(exprList) && this.eat(types$1.arrow)) {\n this.checkPatternErrors(refDestructuringErrors, false);\n this.checkYieldAwaitInDefaultParams();\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n return this.parseParenArrowList(startPos, startLoc, exprList, forInit)\n }\n\n if (!exprList.length || lastIsComma) { this.unexpected(this.lastTokStart); }\n if (spreadStart) { this.unexpected(spreadStart); }\n this.checkExpressionErrors(refDestructuringErrors, true);\n this.yieldPos = oldYieldPos || this.yieldPos;\n this.awaitPos = oldAwaitPos || this.awaitPos;\n\n if (exprList.length > 1) {\n val = this.startNodeAt(innerStartPos, innerStartLoc);\n val.expressions = exprList;\n this.finishNodeAt(val, \"SequenceExpression\", innerEndPos, innerEndLoc);\n } else {\n val = exprList[0];\n }\n } else {\n val = this.parseParenExpression();\n }\n\n if (this.options.preserveParens) {\n var par = this.startNodeAt(startPos, startLoc);\n par.expression = val;\n return this.finishNode(par, \"ParenthesizedExpression\")\n } else {\n return val\n }\n};\n\npp$5.parseParenItem = function(item) {\n return item\n};\n\npp$5.parseParenArrowList = function(startPos, startLoc, exprList, forInit) {\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, false, forInit)\n};\n\n// New's precedence is slightly tricky. It must allow its argument to\n// be a `[]` or dot subscript expression, but not a call — at least,\n// not without wrapping it in parentheses. Thus, it uses the noCalls\n// argument to parseSubscripts to prevent it from consuming the\n// argument list.\n\nvar empty = [];\n\npp$5.parseNew = function() {\n if (this.containsEsc) { this.raiseRecoverable(this.start, \"Escape sequence in keyword new\"); }\n var node = this.startNode();\n var meta = this.parseIdent(true);\n if (this.options.ecmaVersion >= 6 && this.eat(types$1.dot)) {\n node.meta = meta;\n var containsEsc = this.containsEsc;\n node.property = this.parseIdent(true);\n if (node.property.name !== \"target\")\n { this.raiseRecoverable(node.property.start, \"The only valid meta property for new is 'new.target'\"); }\n if (containsEsc)\n { this.raiseRecoverable(node.start, \"'new.target' must not contain escaped characters\"); }\n if (!this.allowNewDotTarget)\n { this.raiseRecoverable(node.start, \"'new.target' can only be used in functions and class static block\"); }\n return this.finishNode(node, \"MetaProperty\")\n }\n var startPos = this.start, startLoc = this.startLoc;\n node.callee = this.parseSubscripts(this.parseExprAtom(null, false, true), startPos, startLoc, true, false);\n if (this.eat(types$1.parenL)) { node.arguments = this.parseExprList(types$1.parenR, this.options.ecmaVersion >= 8, false); }\n else { node.arguments = empty; }\n return this.finishNode(node, \"NewExpression\")\n};\n\n// Parse template expression.\n\npp$5.parseTemplateElement = function(ref) {\n var isTagged = ref.isTagged;\n\n var elem = this.startNode();\n if (this.type === types$1.invalidTemplate) {\n if (!isTagged) {\n this.raiseRecoverable(this.start, \"Bad escape sequence in untagged template literal\");\n }\n elem.value = {\n raw: this.value,\n cooked: null\n };\n } else {\n elem.value = {\n raw: this.input.slice(this.start, this.end).replace(/\\r\\n?/g, \"\\n\"),\n cooked: this.value\n };\n }\n this.next();\n elem.tail = this.type === types$1.backQuote;\n return this.finishNode(elem, \"TemplateElement\")\n};\n\npp$5.parseTemplate = function(ref) {\n if ( ref === void 0 ) ref = {};\n var isTagged = ref.isTagged; if ( isTagged === void 0 ) isTagged = false;\n\n var node = this.startNode();\n this.next();\n node.expressions = [];\n var curElt = this.parseTemplateElement({isTagged: isTagged});\n node.quasis = [curElt];\n while (!curElt.tail) {\n if (this.type === types$1.eof) { this.raise(this.pos, \"Unterminated template literal\"); }\n this.expect(types$1.dollarBraceL);\n node.expressions.push(this.parseExpression());\n this.expect(types$1.braceR);\n node.quasis.push(curElt = this.parseTemplateElement({isTagged: isTagged}));\n }\n this.next();\n return this.finishNode(node, \"TemplateLiteral\")\n};\n\npp$5.isAsyncProp = function(prop) {\n return !prop.computed && prop.key.type === \"Identifier\" && prop.key.name === \"async\" &&\n (this.type === types$1.name || this.type === types$1.num || this.type === types$1.string || this.type === types$1.bracketL || this.type.keyword || (this.options.ecmaVersion >= 9 && this.type === types$1.star)) &&\n !lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n};\n\n// Parse an object literal or binding pattern.\n\npp$5.parseObj = function(isPattern, refDestructuringErrors) {\n var node = this.startNode(), first = true, propHash = {};\n node.properties = [];\n this.next();\n while (!this.eat(types$1.braceR)) {\n if (!first) {\n this.expect(types$1.comma);\n if (this.options.ecmaVersion >= 5 && this.afterTrailingComma(types$1.braceR)) { break }\n } else { first = false; }\n\n var prop = this.parseProperty(isPattern, refDestructuringErrors);\n if (!isPattern) { this.checkPropClash(prop, propHash, refDestructuringErrors); }\n node.properties.push(prop);\n }\n return this.finishNode(node, isPattern ? \"ObjectPattern\" : \"ObjectExpression\")\n};\n\npp$5.parseProperty = function(isPattern, refDestructuringErrors) {\n var prop = this.startNode(), isGenerator, isAsync, startPos, startLoc;\n if (this.options.ecmaVersion >= 9 && this.eat(types$1.ellipsis)) {\n if (isPattern) {\n prop.argument = this.parseIdent(false);\n if (this.type === types$1.comma) {\n this.raiseRecoverable(this.start, \"Comma is not permitted after the rest element\");\n }\n return this.finishNode(prop, \"RestElement\")\n }\n // Parse argument.\n prop.argument = this.parseMaybeAssign(false, refDestructuringErrors);\n // To disallow trailing comma via `this.toAssignable()`.\n if (this.type === types$1.comma && refDestructuringErrors && refDestructuringErrors.trailingComma < 0) {\n refDestructuringErrors.trailingComma = this.start;\n }\n // Finish\n return this.finishNode(prop, \"SpreadElement\")\n }\n if (this.options.ecmaVersion >= 6) {\n prop.method = false;\n prop.shorthand = false;\n if (isPattern || refDestructuringErrors) {\n startPos = this.start;\n startLoc = this.startLoc;\n }\n if (!isPattern)\n { isGenerator = this.eat(types$1.star); }\n }\n var containsEsc = this.containsEsc;\n this.parsePropertyName(prop);\n if (!isPattern && !containsEsc && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop)) {\n isAsync = true;\n isGenerator = this.options.ecmaVersion >= 9 && this.eat(types$1.star);\n this.parsePropertyName(prop);\n } else {\n isAsync = false;\n }\n this.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc);\n return this.finishNode(prop, \"Property\")\n};\n\npp$5.parseGetterSetter = function(prop) {\n prop.kind = prop.key.name;\n this.parsePropertyName(prop);\n prop.value = this.parseMethod(false);\n var paramCount = prop.kind === \"get\" ? 0 : 1;\n if (prop.value.params.length !== paramCount) {\n var start = prop.value.start;\n if (prop.kind === \"get\")\n { this.raiseRecoverable(start, \"getter should have no params\"); }\n else\n { this.raiseRecoverable(start, \"setter should have exactly one param\"); }\n } else {\n if (prop.kind === \"set\" && prop.value.params[0].type === \"RestElement\")\n { this.raiseRecoverable(prop.value.params[0].start, \"Setter cannot use rest params\"); }\n }\n};\n\npp$5.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc) {\n if ((isGenerator || isAsync) && this.type === types$1.colon)\n { this.unexpected(); }\n\n if (this.eat(types$1.colon)) {\n prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(false, refDestructuringErrors);\n prop.kind = \"init\";\n } else if (this.options.ecmaVersion >= 6 && this.type === types$1.parenL) {\n if (isPattern) { this.unexpected(); }\n prop.kind = \"init\";\n prop.method = true;\n prop.value = this.parseMethod(isGenerator, isAsync);\n } else if (!isPattern && !containsEsc &&\n this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === \"Identifier\" &&\n (prop.key.name === \"get\" || prop.key.name === \"set\") &&\n (this.type !== types$1.comma && this.type !== types$1.braceR && this.type !== types$1.eq)) {\n if (isGenerator || isAsync) { this.unexpected(); }\n this.parseGetterSetter(prop);\n } else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === \"Identifier\") {\n if (isGenerator || isAsync) { this.unexpected(); }\n this.checkUnreserved(prop.key);\n if (prop.key.name === \"await\" && !this.awaitIdentPos)\n { this.awaitIdentPos = startPos; }\n prop.kind = \"init\";\n if (isPattern) {\n prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key));\n } else if (this.type === types$1.eq && refDestructuringErrors) {\n if (refDestructuringErrors.shorthandAssign < 0)\n { refDestructuringErrors.shorthandAssign = this.start; }\n prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key));\n } else {\n prop.value = this.copyNode(prop.key);\n }\n prop.shorthand = true;\n } else { this.unexpected(); }\n};\n\npp$5.parsePropertyName = function(prop) {\n if (this.options.ecmaVersion >= 6) {\n if (this.eat(types$1.bracketL)) {\n prop.computed = true;\n prop.key = this.parseMaybeAssign();\n this.expect(types$1.bracketR);\n return prop.key\n } else {\n prop.computed = false;\n }\n }\n return prop.key = this.type === types$1.num || this.type === types$1.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== \"never\")\n};\n\n// Initialize empty function node.\n\npp$5.initFunction = function(node) {\n node.id = null;\n if (this.options.ecmaVersion >= 6) { node.generator = node.expression = false; }\n if (this.options.ecmaVersion >= 8) { node.async = false; }\n};\n\n// Parse object or class method.\n\npp$5.parseMethod = function(isGenerator, isAsync, allowDirectSuper) {\n var node = this.startNode(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n\n this.initFunction(node);\n if (this.options.ecmaVersion >= 6)\n { node.generator = isGenerator; }\n if (this.options.ecmaVersion >= 8)\n { node.async = !!isAsync; }\n\n this.yieldPos = 0;\n this.awaitPos = 0;\n this.awaitIdentPos = 0;\n this.enterScope(functionFlags(isAsync, node.generator) | SCOPE_SUPER | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0));\n\n this.expect(types$1.parenL);\n node.params = this.parseBindingList(types$1.parenR, false, this.options.ecmaVersion >= 8);\n this.checkYieldAwaitInDefaultParams();\n this.parseFunctionBody(node, false, true, false);\n\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n this.awaitIdentPos = oldAwaitIdentPos;\n return this.finishNode(node, \"FunctionExpression\")\n};\n\n// Parse arrow function expression with given parameters.\n\npp$5.parseArrowExpression = function(node, params, isAsync, forInit) {\n var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n\n this.enterScope(functionFlags(isAsync, false) | SCOPE_ARROW);\n this.initFunction(node);\n if (this.options.ecmaVersion >= 8) { node.async = !!isAsync; }\n\n this.yieldPos = 0;\n this.awaitPos = 0;\n this.awaitIdentPos = 0;\n\n node.params = this.toAssignableList(params, true);\n this.parseFunctionBody(node, true, false, forInit);\n\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n this.awaitIdentPos = oldAwaitIdentPos;\n return this.finishNode(node, \"ArrowFunctionExpression\")\n};\n\n// Parse function body and check parameters.\n\npp$5.parseFunctionBody = function(node, isArrowFunction, isMethod, forInit) {\n var isExpression = isArrowFunction && this.type !== types$1.braceL;\n var oldStrict = this.strict, useStrict = false;\n\n if (isExpression) {\n node.body = this.parseMaybeAssign(forInit);\n node.expression = true;\n this.checkParams(node, false);\n } else {\n var nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params);\n if (!oldStrict || nonSimple) {\n useStrict = this.strictDirective(this.end);\n // If this is a strict mode function, verify that argument names\n // are not repeated, and it does not try to bind the words `eval`\n // or `arguments`.\n if (useStrict && nonSimple)\n { this.raiseRecoverable(node.start, \"Illegal 'use strict' directive in function with non-simple parameter list\"); }\n }\n // Start a new scope with regard to labels and the `inFunction`\n // flag (restore them to their old value afterwards).\n var oldLabels = this.labels;\n this.labels = [];\n if (useStrict) { this.strict = true; }\n\n // Add the params to varDeclaredNames to ensure that an error is thrown\n // if a let/const declaration in the function clashes with one of the params.\n this.checkParams(node, !oldStrict && !useStrict && !isArrowFunction && !isMethod && this.isSimpleParamList(node.params));\n // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval'\n if (this.strict && node.id) { this.checkLValSimple(node.id, BIND_OUTSIDE); }\n node.body = this.parseBlock(false, undefined, useStrict && !oldStrict);\n node.expression = false;\n this.adaptDirectivePrologue(node.body.body);\n this.labels = oldLabels;\n }\n this.exitScope();\n};\n\npp$5.isSimpleParamList = function(params) {\n for (var i = 0, list = params; i < list.length; i += 1)\n {\n var param = list[i];\n\n if (param.type !== \"Identifier\") { return false\n } }\n return true\n};\n\n// Checks function params for various disallowed patterns such as using \"eval\"\n// or \"arguments\" and duplicate parameters.\n\npp$5.checkParams = function(node, allowDuplicates) {\n var nameHash = Object.create(null);\n for (var i = 0, list = node.params; i < list.length; i += 1)\n {\n var param = list[i];\n\n this.checkLValInnerPattern(param, BIND_VAR, allowDuplicates ? null : nameHash);\n }\n};\n\n// Parses a comma-separated list of expressions, and returns them as\n// an array. `close` is the token type that ends the list, and\n// `allowEmpty` can be turned on to allow subsequent commas with\n// nothing in between them to be parsed as `null` (which is needed\n// for array literals).\n\npp$5.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) {\n var elts = [], first = true;\n while (!this.eat(close)) {\n if (!first) {\n this.expect(types$1.comma);\n if (allowTrailingComma && this.afterTrailingComma(close)) { break }\n } else { first = false; }\n\n var elt = (void 0);\n if (allowEmpty && this.type === types$1.comma)\n { elt = null; }\n else if (this.type === types$1.ellipsis) {\n elt = this.parseSpread(refDestructuringErrors);\n if (refDestructuringErrors && this.type === types$1.comma && refDestructuringErrors.trailingComma < 0)\n { refDestructuringErrors.trailingComma = this.start; }\n } else {\n elt = this.parseMaybeAssign(false, refDestructuringErrors);\n }\n elts.push(elt);\n }\n return elts\n};\n\npp$5.checkUnreserved = function(ref) {\n var start = ref.start;\n var end = ref.end;\n var name = ref.name;\n\n if (this.inGenerator && name === \"yield\")\n { this.raiseRecoverable(start, \"Cannot use 'yield' as identifier inside a generator\"); }\n if (this.inAsync && name === \"await\")\n { this.raiseRecoverable(start, \"Cannot use 'await' as identifier inside an async function\"); }\n if (this.currentThisScope().inClassFieldInit && name === \"arguments\")\n { this.raiseRecoverable(start, \"Cannot use 'arguments' in class field initializer\"); }\n if (this.inClassStaticBlock && (name === \"arguments\" || name === \"await\"))\n { this.raise(start, (\"Cannot use \" + name + \" in class static initialization block\")); }\n if (this.keywords.test(name))\n { this.raise(start, (\"Unexpected keyword '\" + name + \"'\")); }\n if (this.options.ecmaVersion < 6 &&\n this.input.slice(start, end).indexOf(\"\\\\\") !== -1) { return }\n var re = this.strict ? this.reservedWordsStrict : this.reservedWords;\n if (re.test(name)) {\n if (!this.inAsync && name === \"await\")\n { this.raiseRecoverable(start, \"Cannot use keyword 'await' outside an async function\"); }\n this.raiseRecoverable(start, (\"The keyword '\" + name + \"' is reserved\"));\n }\n};\n\n// Parse the next token as an identifier. If `liberal` is true (used\n// when parsing properties), it will also convert keywords into\n// identifiers.\n\npp$5.parseIdent = function(liberal) {\n var node = this.parseIdentNode();\n this.next(!!liberal);\n this.finishNode(node, \"Identifier\");\n if (!liberal) {\n this.checkUnreserved(node);\n if (node.name === \"await\" && !this.awaitIdentPos)\n { this.awaitIdentPos = node.start; }\n }\n return node\n};\n\npp$5.parseIdentNode = function() {\n var node = this.startNode();\n if (this.type === types$1.name) {\n node.name = this.value;\n } else if (this.type.keyword) {\n node.name = this.type.keyword;\n\n // To fix https://github.com/acornjs/acorn/issues/575\n // `class` and `function` keywords push new context into this.context.\n // But there is no chance to pop the context if the keyword is consumed as an identifier such as a property name.\n // If the previous token is a dot, this does not apply because the context-managing code already ignored the keyword\n if ((node.name === \"class\" || node.name === \"function\") &&\n (this.lastTokEnd !== this.lastTokStart + 1 || this.input.charCodeAt(this.lastTokStart) !== 46)) {\n this.context.pop();\n }\n } else {\n this.unexpected();\n }\n return node\n};\n\npp$5.parsePrivateIdent = function() {\n var node = this.startNode();\n if (this.type === types$1.privateId) {\n node.name = this.value;\n } else {\n this.unexpected();\n }\n this.next();\n this.finishNode(node, \"PrivateIdentifier\");\n\n // For validating existence\n if (this.options.checkPrivateFields) {\n if (this.privateNameStack.length === 0) {\n this.raise(node.start, (\"Private field '#\" + (node.name) + \"' must be declared in an enclosing class\"));\n } else {\n this.privateNameStack[this.privateNameStack.length - 1].used.push(node);\n }\n }\n\n return node\n};\n\n// Parses yield expression inside generator.\n\npp$5.parseYield = function(forInit) {\n if (!this.yieldPos) { this.yieldPos = this.start; }\n\n var node = this.startNode();\n this.next();\n if (this.type === types$1.semi || this.canInsertSemicolon() || (this.type !== types$1.star && !this.type.startsExpr)) {\n node.delegate = false;\n node.argument = null;\n } else {\n node.delegate = this.eat(types$1.star);\n node.argument = this.parseMaybeAssign(forInit);\n }\n return this.finishNode(node, \"YieldExpression\")\n};\n\npp$5.parseAwait = function(forInit) {\n if (!this.awaitPos) { this.awaitPos = this.start; }\n\n var node = this.startNode();\n this.next();\n node.argument = this.parseMaybeUnary(null, true, false, forInit);\n return this.finishNode(node, \"AwaitExpression\")\n};\n\nvar pp$4 = Parser.prototype;\n\n// This function is used to raise exceptions on parse errors. It\n// takes an offset integer (into the current `input`) to indicate\n// the location of the error, attaches the position to the end\n// of the error message, and then raises a `SyntaxError` with that\n// message.\n\npp$4.raise = function(pos, message) {\n var loc = getLineInfo(this.input, pos);\n message += \" (\" + loc.line + \":\" + loc.column + \")\";\n var err = new SyntaxError(message);\n err.pos = pos; err.loc = loc; err.raisedAt = this.pos;\n throw err\n};\n\npp$4.raiseRecoverable = pp$4.raise;\n\npp$4.curPosition = function() {\n if (this.options.locations) {\n return new Position(this.curLine, this.pos - this.lineStart)\n }\n};\n\nvar pp$3 = Parser.prototype;\n\nvar Scope = function Scope(flags) {\n this.flags = flags;\n // A list of var-declared names in the current lexical scope\n this.var = [];\n // A list of lexically-declared names in the current lexical scope\n this.lexical = [];\n // A list of lexically-declared FunctionDeclaration names in the current lexical scope\n this.functions = [];\n // A switch to disallow the identifier reference 'arguments'\n this.inClassFieldInit = false;\n};\n\n// The functions in this module keep track of declared variables in the current scope in order to detect duplicate variable names.\n\npp$3.enterScope = function(flags) {\n this.scopeStack.push(new Scope(flags));\n};\n\npp$3.exitScope = function() {\n this.scopeStack.pop();\n};\n\n// The spec says:\n// > At the top level of a function, or script, function declarations are\n// > treated like var declarations rather than like lexical declarations.\npp$3.treatFunctionsAsVarInScope = function(scope) {\n return (scope.flags & SCOPE_FUNCTION) || !this.inModule && (scope.flags & SCOPE_TOP)\n};\n\npp$3.declareName = function(name, bindingType, pos) {\n var redeclared = false;\n if (bindingType === BIND_LEXICAL) {\n var scope = this.currentScope();\n redeclared = scope.lexical.indexOf(name) > -1 || scope.functions.indexOf(name) > -1 || scope.var.indexOf(name) > -1;\n scope.lexical.push(name);\n if (this.inModule && (scope.flags & SCOPE_TOP))\n { delete this.undefinedExports[name]; }\n } else if (bindingType === BIND_SIMPLE_CATCH) {\n var scope$1 = this.currentScope();\n scope$1.lexical.push(name);\n } else if (bindingType === BIND_FUNCTION) {\n var scope$2 = this.currentScope();\n if (this.treatFunctionsAsVar)\n { redeclared = scope$2.lexical.indexOf(name) > -1; }\n else\n { redeclared = scope$2.lexical.indexOf(name) > -1 || scope$2.var.indexOf(name) > -1; }\n scope$2.functions.push(name);\n } else {\n for (var i = this.scopeStack.length - 1; i >= 0; --i) {\n var scope$3 = this.scopeStack[i];\n if (scope$3.lexical.indexOf(name) > -1 && !((scope$3.flags & SCOPE_SIMPLE_CATCH) && scope$3.lexical[0] === name) ||\n !this.treatFunctionsAsVarInScope(scope$3) && scope$3.functions.indexOf(name) > -1) {\n redeclared = true;\n break\n }\n scope$3.var.push(name);\n if (this.inModule && (scope$3.flags & SCOPE_TOP))\n { delete this.undefinedExports[name]; }\n if (scope$3.flags & SCOPE_VAR) { break }\n }\n }\n if (redeclared) { this.raiseRecoverable(pos, (\"Identifier '\" + name + \"' has already been declared\")); }\n};\n\npp$3.checkLocalExport = function(id) {\n // scope.functions must be empty as Module code is always strict.\n if (this.scopeStack[0].lexical.indexOf(id.name) === -1 &&\n this.scopeStack[0].var.indexOf(id.name) === -1) {\n this.undefinedExports[id.name] = id;\n }\n};\n\npp$3.currentScope = function() {\n return this.scopeStack[this.scopeStack.length - 1]\n};\n\npp$3.currentVarScope = function() {\n for (var i = this.scopeStack.length - 1;; i--) {\n var scope = this.scopeStack[i];\n if (scope.flags & SCOPE_VAR) { return scope }\n }\n};\n\n// Could be useful for `this`, `new.target`, `super()`, `super.property`, and `super[property]`.\npp$3.currentThisScope = function() {\n for (var i = this.scopeStack.length - 1;; i--) {\n var scope = this.scopeStack[i];\n if (scope.flags & SCOPE_VAR && !(scope.flags & SCOPE_ARROW)) { return scope }\n }\n};\n\nvar Node = function Node(parser, pos, loc) {\n this.type = \"\";\n this.start = pos;\n this.end = 0;\n if (parser.options.locations)\n { this.loc = new SourceLocation(parser, loc); }\n if (parser.options.directSourceFile)\n { this.sourceFile = parser.options.directSourceFile; }\n if (parser.options.ranges)\n { this.range = [pos, 0]; }\n};\n\n// Start an AST node, attaching a start offset.\n\nvar pp$2 = Parser.prototype;\n\npp$2.startNode = function() {\n return new Node(this, this.start, this.startLoc)\n};\n\npp$2.startNodeAt = function(pos, loc) {\n return new Node(this, pos, loc)\n};\n\n// Finish an AST node, adding `type` and `end` properties.\n\nfunction finishNodeAt(node, type, pos, loc) {\n node.type = type;\n node.end = pos;\n if (this.options.locations)\n { node.loc.end = loc; }\n if (this.options.ranges)\n { node.range[1] = pos; }\n return node\n}\n\npp$2.finishNode = function(node, type) {\n return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc)\n};\n\n// Finish node at given position\n\npp$2.finishNodeAt = function(node, type, pos, loc) {\n return finishNodeAt.call(this, node, type, pos, loc)\n};\n\npp$2.copyNode = function(node) {\n var newNode = new Node(this, node.start, this.startLoc);\n for (var prop in node) { newNode[prop] = node[prop]; }\n return newNode\n};\n\n// This file contains Unicode properties extracted from the ECMAScript specification.\n// The lists are extracted like so:\n// $$('#table-binary-unicode-properties > figure > table > tbody > tr > td:nth-child(1) code').map(el => el.innerText)\n\n// #table-binary-unicode-properties\nvar ecma9BinaryProperties = \"ASCII ASCII_Hex_Digit AHex Alphabetic Alpha Any Assigned Bidi_Control Bidi_C Bidi_Mirrored Bidi_M Case_Ignorable CI Cased Changes_When_Casefolded CWCF Changes_When_Casemapped CWCM Changes_When_Lowercased CWL Changes_When_NFKC_Casefolded CWKCF Changes_When_Titlecased CWT Changes_When_Uppercased CWU Dash Default_Ignorable_Code_Point DI Deprecated Dep Diacritic Dia Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Extender Ext Grapheme_Base Gr_Base Grapheme_Extend Gr_Ext Hex_Digit Hex IDS_Binary_Operator IDSB IDS_Trinary_Operator IDST ID_Continue IDC ID_Start IDS Ideographic Ideo Join_Control Join_C Logical_Order_Exception LOE Lowercase Lower Math Noncharacter_Code_Point NChar Pattern_Syntax Pat_Syn Pattern_White_Space Pat_WS Quotation_Mark QMark Radical Regional_Indicator RI Sentence_Terminal STerm Soft_Dotted SD Terminal_Punctuation Term Unified_Ideograph UIdeo Uppercase Upper Variation_Selector VS White_Space space XID_Continue XIDC XID_Start XIDS\";\nvar ecma10BinaryProperties = ecma9BinaryProperties + \" Extended_Pictographic\";\nvar ecma11BinaryProperties = ecma10BinaryProperties;\nvar ecma12BinaryProperties = ecma11BinaryProperties + \" EBase EComp EMod EPres ExtPict\";\nvar ecma13BinaryProperties = ecma12BinaryProperties;\nvar ecma14BinaryProperties = ecma13BinaryProperties;\n\nvar unicodeBinaryProperties = {\n 9: ecma9BinaryProperties,\n 10: ecma10BinaryProperties,\n 11: ecma11BinaryProperties,\n 12: ecma12BinaryProperties,\n 13: ecma13BinaryProperties,\n 14: ecma14BinaryProperties\n};\n\n// #table-binary-unicode-properties-of-strings\nvar ecma14BinaryPropertiesOfStrings = \"Basic_Emoji Emoji_Keycap_Sequence RGI_Emoji_Modifier_Sequence RGI_Emoji_Flag_Sequence RGI_Emoji_Tag_Sequence RGI_Emoji_ZWJ_Sequence RGI_Emoji\";\n\nvar unicodeBinaryPropertiesOfStrings = {\n 9: \"\",\n 10: \"\",\n 11: \"\",\n 12: \"\",\n 13: \"\",\n 14: ecma14BinaryPropertiesOfStrings\n};\n\n// #table-unicode-general-category-values\nvar unicodeGeneralCategoryValues = \"Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu\";\n\n// #table-unicode-script-values\nvar ecma9ScriptValues = \"Adlam Adlm Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb\";\nvar ecma10ScriptValues = ecma9ScriptValues + \" Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd\";\nvar ecma11ScriptValues = ecma10ScriptValues + \" Elymaic Elym Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Wancho Wcho\";\nvar ecma12ScriptValues = ecma11ScriptValues + \" Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi\";\nvar ecma13ScriptValues = ecma12ScriptValues + \" Cypro_Minoan Cpmn Old_Uyghur Ougr Tangsa Tnsa Toto Vithkuqi Vith\";\nvar ecma14ScriptValues = ecma13ScriptValues + \" Hrkt Katakana_Or_Hiragana Kawi Nag_Mundari Nagm Unknown Zzzz\";\n\nvar unicodeScriptValues = {\n 9: ecma9ScriptValues,\n 10: ecma10ScriptValues,\n 11: ecma11ScriptValues,\n 12: ecma12ScriptValues,\n 13: ecma13ScriptValues,\n 14: ecma14ScriptValues\n};\n\nvar data = {};\nfunction buildUnicodeData(ecmaVersion) {\n var d = data[ecmaVersion] = {\n binary: wordsRegexp(unicodeBinaryProperties[ecmaVersion] + \" \" + unicodeGeneralCategoryValues),\n binaryOfStrings: wordsRegexp(unicodeBinaryPropertiesOfStrings[ecmaVersion]),\n nonBinary: {\n General_Category: wordsRegexp(unicodeGeneralCategoryValues),\n Script: wordsRegexp(unicodeScriptValues[ecmaVersion])\n }\n };\n d.nonBinary.Script_Extensions = d.nonBinary.Script;\n\n d.nonBinary.gc = d.nonBinary.General_Category;\n d.nonBinary.sc = d.nonBinary.Script;\n d.nonBinary.scx = d.nonBinary.Script_Extensions;\n}\n\nfor (var i = 0, list = [9, 10, 11, 12, 13, 14]; i < list.length; i += 1) {\n var ecmaVersion = list[i];\n\n buildUnicodeData(ecmaVersion);\n}\n\nvar pp$1 = Parser.prototype;\n\nvar RegExpValidationState = function RegExpValidationState(parser) {\n this.parser = parser;\n this.validFlags = \"gim\" + (parser.options.ecmaVersion >= 6 ? \"uy\" : \"\") + (parser.options.ecmaVersion >= 9 ? \"s\" : \"\") + (parser.options.ecmaVersion >= 13 ? \"d\" : \"\") + (parser.options.ecmaVersion >= 15 ? \"v\" : \"\");\n this.unicodeProperties = data[parser.options.ecmaVersion >= 14 ? 14 : parser.options.ecmaVersion];\n this.source = \"\";\n this.flags = \"\";\n this.start = 0;\n this.switchU = false;\n this.switchV = false;\n this.switchN = false;\n this.pos = 0;\n this.lastIntValue = 0;\n this.lastStringValue = \"\";\n this.lastAssertionIsQuantifiable = false;\n this.numCapturingParens = 0;\n this.maxBackReference = 0;\n this.groupNames = [];\n this.backReferenceNames = [];\n};\n\nRegExpValidationState.prototype.reset = function reset (start, pattern, flags) {\n var unicodeSets = flags.indexOf(\"v\") !== -1;\n var unicode = flags.indexOf(\"u\") !== -1;\n this.start = start | 0;\n this.source = pattern + \"\";\n this.flags = flags;\n if (unicodeSets && this.parser.options.ecmaVersion >= 15) {\n this.switchU = true;\n this.switchV = true;\n this.switchN = true;\n } else {\n this.switchU = unicode && this.parser.options.ecmaVersion >= 6;\n this.switchV = false;\n this.switchN = unicode && this.parser.options.ecmaVersion >= 9;\n }\n};\n\nRegExpValidationState.prototype.raise = function raise (message) {\n this.parser.raiseRecoverable(this.start, (\"Invalid regular expression: /\" + (this.source) + \"/: \" + message));\n};\n\n// If u flag is given, this returns the code point at the index (it combines a surrogate pair).\n// Otherwise, this returns the code unit of the index (can be a part of a surrogate pair).\nRegExpValidationState.prototype.at = function at (i, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n var s = this.source;\n var l = s.length;\n if (i >= l) {\n return -1\n }\n var c = s.charCodeAt(i);\n if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l) {\n return c\n }\n var next = s.charCodeAt(i + 1);\n return next >= 0xDC00 && next <= 0xDFFF ? (c << 10) + next - 0x35FDC00 : c\n};\n\nRegExpValidationState.prototype.nextIndex = function nextIndex (i, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n var s = this.source;\n var l = s.length;\n if (i >= l) {\n return l\n }\n var c = s.charCodeAt(i), next;\n if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l ||\n (next = s.charCodeAt(i + 1)) < 0xDC00 || next > 0xDFFF) {\n return i + 1\n }\n return i + 2\n};\n\nRegExpValidationState.prototype.current = function current (forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n return this.at(this.pos, forceU)\n};\n\nRegExpValidationState.prototype.lookahead = function lookahead (forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n return this.at(this.nextIndex(this.pos, forceU), forceU)\n};\n\nRegExpValidationState.prototype.advance = function advance (forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n this.pos = this.nextIndex(this.pos, forceU);\n};\n\nRegExpValidationState.prototype.eat = function eat (ch, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n if (this.current(forceU) === ch) {\n this.advance(forceU);\n return true\n }\n return false\n};\n\nRegExpValidationState.prototype.eatChars = function eatChars (chs, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n var pos = this.pos;\n for (var i = 0, list = chs; i < list.length; i += 1) {\n var ch = list[i];\n\n var current = this.at(pos, forceU);\n if (current === -1 || current !== ch) {\n return false\n }\n pos = this.nextIndex(pos, forceU);\n }\n this.pos = pos;\n return true\n};\n\n/**\n * Validate the flags part of a given RegExpLiteral.\n *\n * @param {RegExpValidationState} state The state to validate RegExp.\n * @returns {void}\n */\npp$1.validateRegExpFlags = function(state) {\n var validFlags = state.validFlags;\n var flags = state.flags;\n\n var u = false;\n var v = false;\n\n for (var i = 0; i < flags.length; i++) {\n var flag = flags.charAt(i);\n if (validFlags.indexOf(flag) === -1) {\n this.raise(state.start, \"Invalid regular expression flag\");\n }\n if (flags.indexOf(flag, i + 1) > -1) {\n this.raise(state.start, \"Duplicate regular expression flag\");\n }\n if (flag === \"u\") { u = true; }\n if (flag === \"v\") { v = true; }\n }\n if (this.options.ecmaVersion >= 15 && u && v) {\n this.raise(state.start, \"Invalid regular expression flag\");\n }\n};\n\n/**\n * Validate the pattern part of a given RegExpLiteral.\n *\n * @param {RegExpValidationState} state The state to validate RegExp.\n * @returns {void}\n */\npp$1.validateRegExpPattern = function(state) {\n this.regexp_pattern(state);\n\n // The goal symbol for the parse is |Pattern[~U, ~N]|. If the result of\n // parsing contains a |GroupName|, reparse with the goal symbol\n // |Pattern[~U, +N]| and use this result instead. Throw a *SyntaxError*\n // exception if _P_ did not conform to the grammar, if any elements of _P_\n // were not matched by the parse, or if any Early Error conditions exist.\n if (!state.switchN && this.options.ecmaVersion >= 9 && state.groupNames.length > 0) {\n state.switchN = true;\n this.regexp_pattern(state);\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Pattern\npp$1.regexp_pattern = function(state) {\n state.pos = 0;\n state.lastIntValue = 0;\n state.lastStringValue = \"\";\n state.lastAssertionIsQuantifiable = false;\n state.numCapturingParens = 0;\n state.maxBackReference = 0;\n state.groupNames.length = 0;\n state.backReferenceNames.length = 0;\n\n this.regexp_disjunction(state);\n\n if (state.pos !== state.source.length) {\n // Make the same messages as V8.\n if (state.eat(0x29 /* ) */)) {\n state.raise(\"Unmatched ')'\");\n }\n if (state.eat(0x5D /* ] */) || state.eat(0x7D /* } */)) {\n state.raise(\"Lone quantifier brackets\");\n }\n }\n if (state.maxBackReference > state.numCapturingParens) {\n state.raise(\"Invalid escape\");\n }\n for (var i = 0, list = state.backReferenceNames; i < list.length; i += 1) {\n var name = list[i];\n\n if (state.groupNames.indexOf(name) === -1) {\n state.raise(\"Invalid named capture referenced\");\n }\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Disjunction\npp$1.regexp_disjunction = function(state) {\n this.regexp_alternative(state);\n while (state.eat(0x7C /* | */)) {\n this.regexp_alternative(state);\n }\n\n // Make the same message as V8.\n if (this.regexp_eatQuantifier(state, true)) {\n state.raise(\"Nothing to repeat\");\n }\n if (state.eat(0x7B /* { */)) {\n state.raise(\"Lone quantifier brackets\");\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Alternative\npp$1.regexp_alternative = function(state) {\n while (state.pos < state.source.length && this.regexp_eatTerm(state))\n { }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Term\npp$1.regexp_eatTerm = function(state) {\n if (this.regexp_eatAssertion(state)) {\n // Handle `QuantifiableAssertion Quantifier` alternative.\n // `state.lastAssertionIsQuantifiable` is true if the last eaten Assertion\n // is a QuantifiableAssertion.\n if (state.lastAssertionIsQuantifiable && this.regexp_eatQuantifier(state)) {\n // Make the same message as V8.\n if (state.switchU) {\n state.raise(\"Invalid quantifier\");\n }\n }\n return true\n }\n\n if (state.switchU ? this.regexp_eatAtom(state) : this.regexp_eatExtendedAtom(state)) {\n this.regexp_eatQuantifier(state);\n return true\n }\n\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Assertion\npp$1.regexp_eatAssertion = function(state) {\n var start = state.pos;\n state.lastAssertionIsQuantifiable = false;\n\n // ^, $\n if (state.eat(0x5E /* ^ */) || state.eat(0x24 /* $ */)) {\n return true\n }\n\n // \\b \\B\n if (state.eat(0x5C /* \\ */)) {\n if (state.eat(0x42 /* B */) || state.eat(0x62 /* b */)) {\n return true\n }\n state.pos = start;\n }\n\n // Lookahead / Lookbehind\n if (state.eat(0x28 /* ( */) && state.eat(0x3F /* ? */)) {\n var lookbehind = false;\n if (this.options.ecmaVersion >= 9) {\n lookbehind = state.eat(0x3C /* < */);\n }\n if (state.eat(0x3D /* = */) || state.eat(0x21 /* ! */)) {\n this.regexp_disjunction(state);\n if (!state.eat(0x29 /* ) */)) {\n state.raise(\"Unterminated group\");\n }\n state.lastAssertionIsQuantifiable = !lookbehind;\n return true\n }\n }\n\n state.pos = start;\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Quantifier\npp$1.regexp_eatQuantifier = function(state, noError) {\n if ( noError === void 0 ) noError = false;\n\n if (this.regexp_eatQuantifierPrefix(state, noError)) {\n state.eat(0x3F /* ? */);\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-QuantifierPrefix\npp$1.regexp_eatQuantifierPrefix = function(state, noError) {\n return (\n state.eat(0x2A /* * */) ||\n state.eat(0x2B /* + */) ||\n state.eat(0x3F /* ? */) ||\n this.regexp_eatBracedQuantifier(state, noError)\n )\n};\npp$1.regexp_eatBracedQuantifier = function(state, noError) {\n var start = state.pos;\n if (state.eat(0x7B /* { */)) {\n var min = 0, max = -1;\n if (this.regexp_eatDecimalDigits(state)) {\n min = state.lastIntValue;\n if (state.eat(0x2C /* , */) && this.regexp_eatDecimalDigits(state)) {\n max = state.lastIntValue;\n }\n if (state.eat(0x7D /* } */)) {\n // SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-term\n if (max !== -1 && max < min && !noError) {\n state.raise(\"numbers out of order in {} quantifier\");\n }\n return true\n }\n }\n if (state.switchU && !noError) {\n state.raise(\"Incomplete quantifier\");\n }\n state.pos = start;\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Atom\npp$1.regexp_eatAtom = function(state) {\n return (\n this.regexp_eatPatternCharacters(state) ||\n state.eat(0x2E /* . */) ||\n this.regexp_eatReverseSolidusAtomEscape(state) ||\n this.regexp_eatCharacterClass(state) ||\n this.regexp_eatUncapturingGroup(state) ||\n this.regexp_eatCapturingGroup(state)\n )\n};\npp$1.regexp_eatReverseSolidusAtomEscape = function(state) {\n var start = state.pos;\n if (state.eat(0x5C /* \\ */)) {\n if (this.regexp_eatAtomEscape(state)) {\n return true\n }\n state.pos = start;\n }\n return false\n};\npp$1.regexp_eatUncapturingGroup = function(state) {\n var start = state.pos;\n if (state.eat(0x28 /* ( */)) {\n if (state.eat(0x3F /* ? */) && state.eat(0x3A /* : */)) {\n this.regexp_disjunction(state);\n if (state.eat(0x29 /* ) */)) {\n return true\n }\n state.raise(\"Unterminated group\");\n }\n state.pos = start;\n }\n return false\n};\npp$1.regexp_eatCapturingGroup = function(state) {\n if (state.eat(0x28 /* ( */)) {\n if (this.options.ecmaVersion >= 9) {\n this.regexp_groupSpecifier(state);\n } else if (state.current() === 0x3F /* ? */) {\n state.raise(\"Invalid group\");\n }\n this.regexp_disjunction(state);\n if (state.eat(0x29 /* ) */)) {\n state.numCapturingParens += 1;\n return true\n }\n state.raise(\"Unterminated group\");\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedAtom\npp$1.regexp_eatExtendedAtom = function(state) {\n return (\n state.eat(0x2E /* . */) ||\n this.regexp_eatReverseSolidusAtomEscape(state) ||\n this.regexp_eatCharacterClass(state) ||\n this.regexp_eatUncapturingGroup(state) ||\n this.regexp_eatCapturingGroup(state) ||\n this.regexp_eatInvalidBracedQuantifier(state) ||\n this.regexp_eatExtendedPatternCharacter(state)\n )\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-InvalidBracedQuantifier\npp$1.regexp_eatInvalidBracedQuantifier = function(state) {\n if (this.regexp_eatBracedQuantifier(state, true)) {\n state.raise(\"Nothing to repeat\");\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-SyntaxCharacter\npp$1.regexp_eatSyntaxCharacter = function(state) {\n var ch = state.current();\n if (isSyntaxCharacter(ch)) {\n state.lastIntValue = ch;\n state.advance();\n return true\n }\n return false\n};\nfunction isSyntaxCharacter(ch) {\n return (\n ch === 0x24 /* $ */ ||\n ch >= 0x28 /* ( */ && ch <= 0x2B /* + */ ||\n ch === 0x2E /* . */ ||\n ch === 0x3F /* ? */ ||\n ch >= 0x5B /* [ */ && ch <= 0x5E /* ^ */ ||\n ch >= 0x7B /* { */ && ch <= 0x7D /* } */\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-PatternCharacter\n// But eat eager.\npp$1.regexp_eatPatternCharacters = function(state) {\n var start = state.pos;\n var ch = 0;\n while ((ch = state.current()) !== -1 && !isSyntaxCharacter(ch)) {\n state.advance();\n }\n return state.pos !== start\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedPatternCharacter\npp$1.regexp_eatExtendedPatternCharacter = function(state) {\n var ch = state.current();\n if (\n ch !== -1 &&\n ch !== 0x24 /* $ */ &&\n !(ch >= 0x28 /* ( */ && ch <= 0x2B /* + */) &&\n ch !== 0x2E /* . */ &&\n ch !== 0x3F /* ? */ &&\n ch !== 0x5B /* [ */ &&\n ch !== 0x5E /* ^ */ &&\n ch !== 0x7C /* | */\n ) {\n state.advance();\n return true\n }\n return false\n};\n\n// GroupSpecifier ::\n// [empty]\n// `?` GroupName\npp$1.regexp_groupSpecifier = function(state) {\n if (state.eat(0x3F /* ? */)) {\n if (this.regexp_eatGroupName(state)) {\n if (state.groupNames.indexOf(state.lastStringValue) !== -1) {\n state.raise(\"Duplicate capture group name\");\n }\n state.groupNames.push(state.lastStringValue);\n return\n }\n state.raise(\"Invalid group\");\n }\n};\n\n// GroupName ::\n// `<` RegExpIdentifierName `>`\n// Note: this updates `state.lastStringValue` property with the eaten name.\npp$1.regexp_eatGroupName = function(state) {\n state.lastStringValue = \"\";\n if (state.eat(0x3C /* < */)) {\n if (this.regexp_eatRegExpIdentifierName(state) && state.eat(0x3E /* > */)) {\n return true\n }\n state.raise(\"Invalid capture group name\");\n }\n return false\n};\n\n// RegExpIdentifierName ::\n// RegExpIdentifierStart\n// RegExpIdentifierName RegExpIdentifierPart\n// Note: this updates `state.lastStringValue` property with the eaten name.\npp$1.regexp_eatRegExpIdentifierName = function(state) {\n state.lastStringValue = \"\";\n if (this.regexp_eatRegExpIdentifierStart(state)) {\n state.lastStringValue += codePointToString(state.lastIntValue);\n while (this.regexp_eatRegExpIdentifierPart(state)) {\n state.lastStringValue += codePointToString(state.lastIntValue);\n }\n return true\n }\n return false\n};\n\n// RegExpIdentifierStart ::\n// UnicodeIDStart\n// `$`\n// `_`\n// `\\` RegExpUnicodeEscapeSequence[+U]\npp$1.regexp_eatRegExpIdentifierStart = function(state) {\n var start = state.pos;\n var forceU = this.options.ecmaVersion >= 11;\n var ch = state.current(forceU);\n state.advance(forceU);\n\n if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) {\n ch = state.lastIntValue;\n }\n if (isRegExpIdentifierStart(ch)) {\n state.lastIntValue = ch;\n return true\n }\n\n state.pos = start;\n return false\n};\nfunction isRegExpIdentifierStart(ch) {\n return isIdentifierStart(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */\n}\n\n// RegExpIdentifierPart ::\n// UnicodeIDContinue\n// `$`\n// `_`\n// `\\` RegExpUnicodeEscapeSequence[+U]\n// <ZWNJ>\n// <ZWJ>\npp$1.regexp_eatRegExpIdentifierPart = function(state) {\n var start = state.pos;\n var forceU = this.options.ecmaVersion >= 11;\n var ch = state.current(forceU);\n state.advance(forceU);\n\n if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) {\n ch = state.lastIntValue;\n }\n if (isRegExpIdentifierPart(ch)) {\n state.lastIntValue = ch;\n return true\n }\n\n state.pos = start;\n return false\n};\nfunction isRegExpIdentifierPart(ch) {\n return isIdentifierChar(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */ || ch === 0x200C /* <ZWNJ> */ || ch === 0x200D /* <ZWJ> */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-AtomEscape\npp$1.regexp_eatAtomEscape = function(state) {\n if (\n this.regexp_eatBackReference(state) ||\n this.regexp_eatCharacterClassEscape(state) ||\n this.regexp_eatCharacterEscape(state) ||\n (state.switchN && this.regexp_eatKGroupName(state))\n ) {\n return true\n }\n if (state.switchU) {\n // Make the same message as V8.\n if (state.current() === 0x63 /* c */) {\n state.raise(\"Invalid unicode escape\");\n }\n state.raise(\"Invalid escape\");\n }\n return false\n};\npp$1.regexp_eatBackReference = function(state) {\n var start = state.pos;\n if (this.regexp_eatDecimalEscape(state)) {\n var n = state.lastIntValue;\n if (state.switchU) {\n // For SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-atomescape\n if (n > state.maxBackReference) {\n state.maxBackReference = n;\n }\n return true\n }\n if (n <= state.numCapturingParens) {\n return true\n }\n state.pos = start;\n }\n return false\n};\npp$1.regexp_eatKGroupName = function(state) {\n if (state.eat(0x6B /* k */)) {\n if (this.regexp_eatGroupName(state)) {\n state.backReferenceNames.push(state.lastStringValue);\n return true\n }\n state.raise(\"Invalid named reference\");\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-CharacterEscape\npp$1.regexp_eatCharacterEscape = function(state) {\n return (\n this.regexp_eatControlEscape(state) ||\n this.regexp_eatCControlLetter(state) ||\n this.regexp_eatZero(state) ||\n this.regexp_eatHexEscapeSequence(state) ||\n this.regexp_eatRegExpUnicodeEscapeSequence(state, false) ||\n (!state.switchU && this.regexp_eatLegacyOctalEscapeSequence(state)) ||\n this.regexp_eatIdentityEscape(state)\n )\n};\npp$1.regexp_eatCControlLetter = function(state) {\n var start = state.pos;\n if (state.eat(0x63 /* c */)) {\n if (this.regexp_eatControlLetter(state)) {\n return true\n }\n state.pos = start;\n }\n return false\n};\npp$1.regexp_eatZero = function(state) {\n if (state.current() === 0x30 /* 0 */ && !isDecimalDigit(state.lookahead())) {\n state.lastIntValue = 0;\n state.advance();\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlEscape\npp$1.regexp_eatControlEscape = function(state) {\n var ch = state.current();\n if (ch === 0x74 /* t */) {\n state.lastIntValue = 0x09; /* \\t */\n state.advance();\n return true\n }\n if (ch === 0x6E /* n */) {\n state.lastIntValue = 0x0A; /* \\n */\n state.advance();\n return true\n }\n if (ch === 0x76 /* v */) {\n state.lastIntValue = 0x0B; /* \\v */\n state.advance();\n return true\n }\n if (ch === 0x66 /* f */) {\n state.lastIntValue = 0x0C; /* \\f */\n state.advance();\n return true\n }\n if (ch === 0x72 /* r */) {\n state.lastIntValue = 0x0D; /* \\r */\n state.advance();\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlLetter\npp$1.regexp_eatControlLetter = function(state) {\n var ch = state.current();\n if (isControlLetter(ch)) {\n state.lastIntValue = ch % 0x20;\n state.advance();\n return true\n }\n return false\n};\nfunction isControlLetter(ch) {\n return (\n (ch >= 0x41 /* A */ && ch <= 0x5A /* Z */) ||\n (ch >= 0x61 /* a */ && ch <= 0x7A /* z */)\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-RegExpUnicodeEscapeSequence\npp$1.regexp_eatRegExpUnicodeEscapeSequence = function(state, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n var start = state.pos;\n var switchU = forceU || state.switchU;\n\n if (state.eat(0x75 /* u */)) {\n if (this.regexp_eatFixedHexDigits(state, 4)) {\n var lead = state.lastIntValue;\n if (switchU && lead >= 0xD800 && lead <= 0xDBFF) {\n var leadSurrogateEnd = state.pos;\n if (state.eat(0x5C /* \\ */) && state.eat(0x75 /* u */) && this.regexp_eatFixedHexDigits(state, 4)) {\n var trail = state.lastIntValue;\n if (trail >= 0xDC00 && trail <= 0xDFFF) {\n state.lastIntValue = (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000;\n return true\n }\n }\n state.pos = leadSurrogateEnd;\n state.lastIntValue = lead;\n }\n return true\n }\n if (\n switchU &&\n state.eat(0x7B /* { */) &&\n this.regexp_eatHexDigits(state) &&\n state.eat(0x7D /* } */) &&\n isValidUnicode(state.lastIntValue)\n ) {\n return true\n }\n if (switchU) {\n state.raise(\"Invalid unicode escape\");\n }\n state.pos = start;\n }\n\n return false\n};\nfunction isValidUnicode(ch) {\n return ch >= 0 && ch <= 0x10FFFF\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-IdentityEscape\npp$1.regexp_eatIdentityEscape = function(state) {\n if (state.switchU) {\n if (this.regexp_eatSyntaxCharacter(state)) {\n return true\n }\n if (state.eat(0x2F /* / */)) {\n state.lastIntValue = 0x2F; /* / */\n return true\n }\n return false\n }\n\n var ch = state.current();\n if (ch !== 0x63 /* c */ && (!state.switchN || ch !== 0x6B /* k */)) {\n state.lastIntValue = ch;\n state.advance();\n return true\n }\n\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalEscape\npp$1.regexp_eatDecimalEscape = function(state) {\n state.lastIntValue = 0;\n var ch = state.current();\n if (ch >= 0x31 /* 1 */ && ch <= 0x39 /* 9 */) {\n do {\n state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */);\n state.advance();\n } while ((ch = state.current()) >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */)\n return true\n }\n return false\n};\n\n// Return values used by character set parsing methods, needed to\n// forbid negation of sets that can match strings.\nvar CharSetNone = 0; // Nothing parsed\nvar CharSetOk = 1; // Construct parsed, cannot contain strings\nvar CharSetString = 2; // Construct parsed, can contain strings\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClassEscape\npp$1.regexp_eatCharacterClassEscape = function(state) {\n var ch = state.current();\n\n if (isCharacterClassEscape(ch)) {\n state.lastIntValue = -1;\n state.advance();\n return CharSetOk\n }\n\n var negate = false;\n if (\n state.switchU &&\n this.options.ecmaVersion >= 9 &&\n ((negate = ch === 0x50 /* P */) || ch === 0x70 /* p */)\n ) {\n state.lastIntValue = -1;\n state.advance();\n var result;\n if (\n state.eat(0x7B /* { */) &&\n (result = this.regexp_eatUnicodePropertyValueExpression(state)) &&\n state.eat(0x7D /* } */)\n ) {\n if (negate && result === CharSetString) { state.raise(\"Invalid property name\"); }\n return result\n }\n state.raise(\"Invalid property name\");\n }\n\n return CharSetNone\n};\n\nfunction isCharacterClassEscape(ch) {\n return (\n ch === 0x64 /* d */ ||\n ch === 0x44 /* D */ ||\n ch === 0x73 /* s */ ||\n ch === 0x53 /* S */ ||\n ch === 0x77 /* w */ ||\n ch === 0x57 /* W */\n )\n}\n\n// UnicodePropertyValueExpression ::\n// UnicodePropertyName `=` UnicodePropertyValue\n// LoneUnicodePropertyNameOrValue\npp$1.regexp_eatUnicodePropertyValueExpression = function(state) {\n var start = state.pos;\n\n // UnicodePropertyName `=` UnicodePropertyValue\n if (this.regexp_eatUnicodePropertyName(state) && state.eat(0x3D /* = */)) {\n var name = state.lastStringValue;\n if (this.regexp_eatUnicodePropertyValue(state)) {\n var value = state.lastStringValue;\n this.regexp_validateUnicodePropertyNameAndValue(state, name, value);\n return CharSetOk\n }\n }\n state.pos = start;\n\n // LoneUnicodePropertyNameOrValue\n if (this.regexp_eatLoneUnicodePropertyNameOrValue(state)) {\n var nameOrValue = state.lastStringValue;\n return this.regexp_validateUnicodePropertyNameOrValue(state, nameOrValue)\n }\n return CharSetNone\n};\n\npp$1.regexp_validateUnicodePropertyNameAndValue = function(state, name, value) {\n if (!hasOwn(state.unicodeProperties.nonBinary, name))\n { state.raise(\"Invalid property name\"); }\n if (!state.unicodeProperties.nonBinary[name].test(value))\n { state.raise(\"Invalid property value\"); }\n};\n\npp$1.regexp_validateUnicodePropertyNameOrValue = function(state, nameOrValue) {\n if (state.unicodeProperties.binary.test(nameOrValue)) { return CharSetOk }\n if (state.switchV && state.unicodeProperties.binaryOfStrings.test(nameOrValue)) { return CharSetString }\n state.raise(\"Invalid property name\");\n};\n\n// UnicodePropertyName ::\n// UnicodePropertyNameCharacters\npp$1.regexp_eatUnicodePropertyName = function(state) {\n var ch = 0;\n state.lastStringValue = \"\";\n while (isUnicodePropertyNameCharacter(ch = state.current())) {\n state.lastStringValue += codePointToString(ch);\n state.advance();\n }\n return state.lastStringValue !== \"\"\n};\n\nfunction isUnicodePropertyNameCharacter(ch) {\n return isControlLetter(ch) || ch === 0x5F /* _ */\n}\n\n// UnicodePropertyValue ::\n// UnicodePropertyValueCharacters\npp$1.regexp_eatUnicodePropertyValue = function(state) {\n var ch = 0;\n state.lastStringValue = \"\";\n while (isUnicodePropertyValueCharacter(ch = state.current())) {\n state.lastStringValue += codePointToString(ch);\n state.advance();\n }\n return state.lastStringValue !== \"\"\n};\nfunction isUnicodePropertyValueCharacter(ch) {\n return isUnicodePropertyNameCharacter(ch) || isDecimalDigit(ch)\n}\n\n// LoneUnicodePropertyNameOrValue ::\n// UnicodePropertyValueCharacters\npp$1.regexp_eatLoneUnicodePropertyNameOrValue = function(state) {\n return this.regexp_eatUnicodePropertyValue(state)\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClass\npp$1.regexp_eatCharacterClass = function(state) {\n if (state.eat(0x5B /* [ */)) {\n var negate = state.eat(0x5E /* ^ */);\n var result = this.regexp_classContents(state);\n if (!state.eat(0x5D /* ] */))\n { state.raise(\"Unterminated character class\"); }\n if (negate && result === CharSetString)\n { state.raise(\"Negated character class may contain strings\"); }\n return true\n }\n return false\n};\n\n// https://tc39.es/ecma262/#prod-ClassContents\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassRanges\npp$1.regexp_classContents = function(state) {\n if (state.current() === 0x5D /* ] */) { return CharSetOk }\n if (state.switchV) { return this.regexp_classSetExpression(state) }\n this.regexp_nonEmptyClassRanges(state);\n return CharSetOk\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRanges\n// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRangesNoDash\npp$1.regexp_nonEmptyClassRanges = function(state) {\n while (this.regexp_eatClassAtom(state)) {\n var left = state.lastIntValue;\n if (state.eat(0x2D /* - */) && this.regexp_eatClassAtom(state)) {\n var right = state.lastIntValue;\n if (state.switchU && (left === -1 || right === -1)) {\n state.raise(\"Invalid character class\");\n }\n if (left !== -1 && right !== -1 && left > right) {\n state.raise(\"Range out of order in character class\");\n }\n }\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtom\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtomNoDash\npp$1.regexp_eatClassAtom = function(state) {\n var start = state.pos;\n\n if (state.eat(0x5C /* \\ */)) {\n if (this.regexp_eatClassEscape(state)) {\n return true\n }\n if (state.switchU) {\n // Make the same message as V8.\n var ch$1 = state.current();\n if (ch$1 === 0x63 /* c */ || isOctalDigit(ch$1)) {\n state.raise(\"Invalid class escape\");\n }\n state.raise(\"Invalid escape\");\n }\n state.pos = start;\n }\n\n var ch = state.current();\n if (ch !== 0x5D /* ] */) {\n state.lastIntValue = ch;\n state.advance();\n return true\n }\n\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassEscape\npp$1.regexp_eatClassEscape = function(state) {\n var start = state.pos;\n\n if (state.eat(0x62 /* b */)) {\n state.lastIntValue = 0x08; /* <BS> */\n return true\n }\n\n if (state.switchU && state.eat(0x2D /* - */)) {\n state.lastIntValue = 0x2D; /* - */\n return true\n }\n\n if (!state.switchU && state.eat(0x63 /* c */)) {\n if (this.regexp_eatClassControlLetter(state)) {\n return true\n }\n state.pos = start;\n }\n\n return (\n this.regexp_eatCharacterClassEscape(state) ||\n this.regexp_eatCharacterEscape(state)\n )\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetExpression\n// https://tc39.es/ecma262/#prod-ClassUnion\n// https://tc39.es/ecma262/#prod-ClassIntersection\n// https://tc39.es/ecma262/#prod-ClassSubtraction\npp$1.regexp_classSetExpression = function(state) {\n var result = CharSetOk, subResult;\n if (this.regexp_eatClassSetRange(state)) ; else if (subResult = this.regexp_eatClassSetOperand(state)) {\n if (subResult === CharSetString) { result = CharSetString; }\n // https://tc39.es/ecma262/#prod-ClassIntersection\n var start = state.pos;\n while (state.eatChars([0x26, 0x26] /* && */)) {\n if (\n state.current() !== 0x26 /* & */ &&\n (subResult = this.regexp_eatClassSetOperand(state))\n ) {\n if (subResult !== CharSetString) { result = CharSetOk; }\n continue\n }\n state.raise(\"Invalid character in character class\");\n }\n if (start !== state.pos) { return result }\n // https://tc39.es/ecma262/#prod-ClassSubtraction\n while (state.eatChars([0x2D, 0x2D] /* -- */)) {\n if (this.regexp_eatClassSetOperand(state)) { continue }\n state.raise(\"Invalid character in character class\");\n }\n if (start !== state.pos) { return result }\n } else {\n state.raise(\"Invalid character in character class\");\n }\n // https://tc39.es/ecma262/#prod-ClassUnion\n for (;;) {\n if (this.regexp_eatClassSetRange(state)) { continue }\n subResult = this.regexp_eatClassSetOperand(state);\n if (!subResult) { return result }\n if (subResult === CharSetString) { result = CharSetString; }\n }\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetRange\npp$1.regexp_eatClassSetRange = function(state) {\n var start = state.pos;\n if (this.regexp_eatClassSetCharacter(state)) {\n var left = state.lastIntValue;\n if (state.eat(0x2D /* - */) && this.regexp_eatClassSetCharacter(state)) {\n var right = state.lastIntValue;\n if (left !== -1 && right !== -1 && left > right) {\n state.raise(\"Range out of order in character class\");\n }\n return true\n }\n state.pos = start;\n }\n return false\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetOperand\npp$1.regexp_eatClassSetOperand = function(state) {\n if (this.regexp_eatClassSetCharacter(state)) { return CharSetOk }\n return this.regexp_eatClassStringDisjunction(state) || this.regexp_eatNestedClass(state)\n};\n\n// https://tc39.es/ecma262/#prod-NestedClass\npp$1.regexp_eatNestedClass = function(state) {\n var start = state.pos;\n if (state.eat(0x5B /* [ */)) {\n var negate = state.eat(0x5E /* ^ */);\n var result = this.regexp_classContents(state);\n if (state.eat(0x5D /* ] */)) {\n if (negate && result === CharSetString) {\n state.raise(\"Negated character class may contain strings\");\n }\n return result\n }\n state.pos = start;\n }\n if (state.eat(0x5C /* \\ */)) {\n var result$1 = this.regexp_eatCharacterClassEscape(state);\n if (result$1) {\n return result$1\n }\n state.pos = start;\n }\n return null\n};\n\n// https://tc39.es/ecma262/#prod-ClassStringDisjunction\npp$1.regexp_eatClassStringDisjunction = function(state) {\n var start = state.pos;\n if (state.eatChars([0x5C, 0x71] /* \\q */)) {\n if (state.eat(0x7B /* { */)) {\n var result = this.regexp_classStringDisjunctionContents(state);\n if (state.eat(0x7D /* } */)) {\n return result\n }\n } else {\n // Make the same message as V8.\n state.raise(\"Invalid escape\");\n }\n state.pos = start;\n }\n return null\n};\n\n// https://tc39.es/ecma262/#prod-ClassStringDisjunctionContents\npp$1.regexp_classStringDisjunctionContents = function(state) {\n var result = this.regexp_classString(state);\n while (state.eat(0x7C /* | */)) {\n if (this.regexp_classString(state) === CharSetString) { result = CharSetString; }\n }\n return result\n};\n\n// https://tc39.es/ecma262/#prod-ClassString\n// https://tc39.es/ecma262/#prod-NonEmptyClassString\npp$1.regexp_classString = function(state) {\n var count = 0;\n while (this.regexp_eatClassSetCharacter(state)) { count++; }\n return count === 1 ? CharSetOk : CharSetString\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetCharacter\npp$1.regexp_eatClassSetCharacter = function(state) {\n var start = state.pos;\n if (state.eat(0x5C /* \\ */)) {\n if (\n this.regexp_eatCharacterEscape(state) ||\n this.regexp_eatClassSetReservedPunctuator(state)\n ) {\n return true\n }\n if (state.eat(0x62 /* b */)) {\n state.lastIntValue = 0x08; /* <BS> */\n return true\n }\n state.pos = start;\n return false\n }\n var ch = state.current();\n if (ch < 0 || ch === state.lookahead() && isClassSetReservedDoublePunctuatorCharacter(ch)) { return false }\n if (isClassSetSyntaxCharacter(ch)) { return false }\n state.advance();\n state.lastIntValue = ch;\n return true\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetReservedDoublePunctuator\nfunction isClassSetReservedDoublePunctuatorCharacter(ch) {\n return (\n ch === 0x21 /* ! */ ||\n ch >= 0x23 /* # */ && ch <= 0x26 /* & */ ||\n ch >= 0x2A /* * */ && ch <= 0x2C /* , */ ||\n ch === 0x2E /* . */ ||\n ch >= 0x3A /* : */ && ch <= 0x40 /* @ */ ||\n ch === 0x5E /* ^ */ ||\n ch === 0x60 /* ` */ ||\n ch === 0x7E /* ~ */\n )\n}\n\n// https://tc39.es/ecma262/#prod-ClassSetSyntaxCharacter\nfunction isClassSetSyntaxCharacter(ch) {\n return (\n ch === 0x28 /* ( */ ||\n ch === 0x29 /* ) */ ||\n ch === 0x2D /* - */ ||\n ch === 0x2F /* / */ ||\n ch >= 0x5B /* [ */ && ch <= 0x5D /* ] */ ||\n ch >= 0x7B /* { */ && ch <= 0x7D /* } */\n )\n}\n\n// https://tc39.es/ecma262/#prod-ClassSetReservedPunctuator\npp$1.regexp_eatClassSetReservedPunctuator = function(state) {\n var ch = state.current();\n if (isClassSetReservedPunctuator(ch)) {\n state.lastIntValue = ch;\n state.advance();\n return true\n }\n return false\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetReservedPunctuator\nfunction isClassSetReservedPunctuator(ch) {\n return (\n ch === 0x21 /* ! */ ||\n ch === 0x23 /* # */ ||\n ch === 0x25 /* % */ ||\n ch === 0x26 /* & */ ||\n ch === 0x2C /* , */ ||\n ch === 0x2D /* - */ ||\n ch >= 0x3A /* : */ && ch <= 0x3E /* > */ ||\n ch === 0x40 /* @ */ ||\n ch === 0x60 /* ` */ ||\n ch === 0x7E /* ~ */\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassControlLetter\npp$1.regexp_eatClassControlLetter = function(state) {\n var ch = state.current();\n if (isDecimalDigit(ch) || ch === 0x5F /* _ */) {\n state.lastIntValue = ch % 0x20;\n state.advance();\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\npp$1.regexp_eatHexEscapeSequence = function(state) {\n var start = state.pos;\n if (state.eat(0x78 /* x */)) {\n if (this.regexp_eatFixedHexDigits(state, 2)) {\n return true\n }\n if (state.switchU) {\n state.raise(\"Invalid escape\");\n }\n state.pos = start;\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalDigits\npp$1.regexp_eatDecimalDigits = function(state) {\n var start = state.pos;\n var ch = 0;\n state.lastIntValue = 0;\n while (isDecimalDigit(ch = state.current())) {\n state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */);\n state.advance();\n }\n return state.pos !== start\n};\nfunction isDecimalDigit(ch) {\n return ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigits\npp$1.regexp_eatHexDigits = function(state) {\n var start = state.pos;\n var ch = 0;\n state.lastIntValue = 0;\n while (isHexDigit(ch = state.current())) {\n state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch);\n state.advance();\n }\n return state.pos !== start\n};\nfunction isHexDigit(ch) {\n return (\n (ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */) ||\n (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) ||\n (ch >= 0x61 /* a */ && ch <= 0x66 /* f */)\n )\n}\nfunction hexToInt(ch) {\n if (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) {\n return 10 + (ch - 0x41 /* A */)\n }\n if (ch >= 0x61 /* a */ && ch <= 0x66 /* f */) {\n return 10 + (ch - 0x61 /* a */)\n }\n return ch - 0x30 /* 0 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-LegacyOctalEscapeSequence\n// Allows only 0-377(octal) i.e. 0-255(decimal).\npp$1.regexp_eatLegacyOctalEscapeSequence = function(state) {\n if (this.regexp_eatOctalDigit(state)) {\n var n1 = state.lastIntValue;\n if (this.regexp_eatOctalDigit(state)) {\n var n2 = state.lastIntValue;\n if (n1 <= 3 && this.regexp_eatOctalDigit(state)) {\n state.lastIntValue = n1 * 64 + n2 * 8 + state.lastIntValue;\n } else {\n state.lastIntValue = n1 * 8 + n2;\n }\n } else {\n state.lastIntValue = n1;\n }\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-OctalDigit\npp$1.regexp_eatOctalDigit = function(state) {\n var ch = state.current();\n if (isOctalDigit(ch)) {\n state.lastIntValue = ch - 0x30; /* 0 */\n state.advance();\n return true\n }\n state.lastIntValue = 0;\n return false\n};\nfunction isOctalDigit(ch) {\n return ch >= 0x30 /* 0 */ && ch <= 0x37 /* 7 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Hex4Digits\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigit\n// And HexDigit HexDigit in https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\npp$1.regexp_eatFixedHexDigits = function(state, length) {\n var start = state.pos;\n state.lastIntValue = 0;\n for (var i = 0; i < length; ++i) {\n var ch = state.current();\n if (!isHexDigit(ch)) {\n state.pos = start;\n return false\n }\n state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch);\n state.advance();\n }\n return true\n};\n\n// Object type used to represent tokens. Note that normally, tokens\n// simply exist as properties on the parser object. This is only\n// used for the onToken callback and the external tokenizer.\n\nvar Token = function Token(p) {\n this.type = p.type;\n this.value = p.value;\n this.start = p.start;\n this.end = p.end;\n if (p.options.locations)\n { this.loc = new SourceLocation(p, p.startLoc, p.endLoc); }\n if (p.options.ranges)\n { this.range = [p.start, p.end]; }\n};\n\n// ## Tokenizer\n\nvar pp = Parser.prototype;\n\n// Move to the next token\n\npp.next = function(ignoreEscapeSequenceInKeyword) {\n if (!ignoreEscapeSequenceInKeyword && this.type.keyword && this.containsEsc)\n { this.raiseRecoverable(this.start, \"Escape sequence in keyword \" + this.type.keyword); }\n if (this.options.onToken)\n { this.options.onToken(new Token(this)); }\n\n this.lastTokEnd = this.end;\n this.lastTokStart = this.start;\n this.lastTokEndLoc = this.endLoc;\n this.lastTokStartLoc = this.startLoc;\n this.nextToken();\n};\n\npp.getToken = function() {\n this.next();\n return new Token(this)\n};\n\n// If we're in an ES6 environment, make parsers iterable\nif (typeof Symbol !== \"undefined\")\n { pp[Symbol.iterator] = function() {\n var this$1$1 = this;\n\n return {\n next: function () {\n var token = this$1$1.getToken();\n return {\n done: token.type === types$1.eof,\n value: token\n }\n }\n }\n }; }\n\n// Toggle strict mode. Re-reads the next number or string to please\n// pedantic tests (`\"use strict\"; 010;` should fail).\n\n// Read a single token, updating the parser object's token-related\n// properties.\n\npp.nextToken = function() {\n var curContext = this.curContext();\n if (!curContext || !curContext.preserveSpace) { this.skipSpace(); }\n\n this.start = this.pos;\n if (this.options.locations) { this.startLoc = this.curPosition(); }\n if (this.pos >= this.input.length) { return this.finishToken(types$1.eof) }\n\n if (curContext.override) { return curContext.override(this) }\n else { this.readToken(this.fullCharCodeAtPos()); }\n};\n\npp.readToken = function(code) {\n // Identifier or keyword. '\\uXXXX' sequences are allowed in\n // identifiers, so '\\' also dispatches to that.\n if (isIdentifierStart(code, this.options.ecmaVersion >= 6) || code === 92 /* '\\' */)\n { return this.readWord() }\n\n return this.getTokenFromCode(code)\n};\n\npp.fullCharCodeAtPos = function() {\n var code = this.input.charCodeAt(this.pos);\n if (code <= 0xd7ff || code >= 0xdc00) { return code }\n var next = this.input.charCodeAt(this.pos + 1);\n return next <= 0xdbff || next >= 0xe000 ? code : (code << 10) + next - 0x35fdc00\n};\n\npp.skipBlockComment = function() {\n var startLoc = this.options.onComment && this.curPosition();\n var start = this.pos, end = this.input.indexOf(\"*/\", this.pos += 2);\n if (end === -1) { this.raise(this.pos - 2, \"Unterminated comment\"); }\n this.pos = end + 2;\n if (this.options.locations) {\n for (var nextBreak = (void 0), pos = start; (nextBreak = nextLineBreak(this.input, pos, this.pos)) > -1;) {\n ++this.curLine;\n pos = this.lineStart = nextBreak;\n }\n }\n if (this.options.onComment)\n { this.options.onComment(true, this.input.slice(start + 2, end), start, this.pos,\n startLoc, this.curPosition()); }\n};\n\npp.skipLineComment = function(startSkip) {\n var start = this.pos;\n var startLoc = this.options.onComment && this.curPosition();\n var ch = this.input.charCodeAt(this.pos += startSkip);\n while (this.pos < this.input.length && !isNewLine(ch)) {\n ch = this.input.charCodeAt(++this.pos);\n }\n if (this.options.onComment)\n { this.options.onComment(false, this.input.slice(start + startSkip, this.pos), start, this.pos,\n startLoc, this.curPosition()); }\n};\n\n// Called at the start of the parse and after every token. Skips\n// whitespace and comments, and.\n\npp.skipSpace = function() {\n loop: while (this.pos < this.input.length) {\n var ch = this.input.charCodeAt(this.pos);\n switch (ch) {\n case 32: case 160: // ' '\n ++this.pos;\n break\n case 13:\n if (this.input.charCodeAt(this.pos + 1) === 10) {\n ++this.pos;\n }\n case 10: case 8232: case 8233:\n ++this.pos;\n if (this.options.locations) {\n ++this.curLine;\n this.lineStart = this.pos;\n }\n break\n case 47: // '/'\n switch (this.input.charCodeAt(this.pos + 1)) {\n case 42: // '*'\n this.skipBlockComment();\n break\n case 47:\n this.skipLineComment(2);\n break\n default:\n break loop\n }\n break\n default:\n if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) {\n ++this.pos;\n } else {\n break loop\n }\n }\n }\n};\n\n// Called at the end of every token. Sets `end`, `val`, and\n// maintains `context` and `exprAllowed`, and skips the space after\n// the token, so that the next one's `start` will point at the\n// right position.\n\npp.finishToken = function(type, val) {\n this.end = this.pos;\n if (this.options.locations) { this.endLoc = this.curPosition(); }\n var prevType = this.type;\n this.type = type;\n this.value = val;\n\n this.updateContext(prevType);\n};\n\n// ### Token reading\n\n// This is the function that is called to fetch the next token. It\n// is somewhat obscure, because it works in character codes rather\n// than characters, and because operator parsing has been inlined\n// into it.\n//\n// All in the name of speed.\n//\npp.readToken_dot = function() {\n var next = this.input.charCodeAt(this.pos + 1);\n if (next >= 48 && next <= 57) { return this.readNumber(true) }\n var next2 = this.input.charCodeAt(this.pos + 2);\n if (this.options.ecmaVersion >= 6 && next === 46 && next2 === 46) { // 46 = dot '.'\n this.pos += 3;\n return this.finishToken(types$1.ellipsis)\n } else {\n ++this.pos;\n return this.finishToken(types$1.dot)\n }\n};\n\npp.readToken_slash = function() { // '/'\n var next = this.input.charCodeAt(this.pos + 1);\n if (this.exprAllowed) { ++this.pos; return this.readRegexp() }\n if (next === 61) { return this.finishOp(types$1.assign, 2) }\n return this.finishOp(types$1.slash, 1)\n};\n\npp.readToken_mult_modulo_exp = function(code) { // '%*'\n var next = this.input.charCodeAt(this.pos + 1);\n var size = 1;\n var tokentype = code === 42 ? types$1.star : types$1.modulo;\n\n // exponentiation operator ** and **=\n if (this.options.ecmaVersion >= 7 && code === 42 && next === 42) {\n ++size;\n tokentype = types$1.starstar;\n next = this.input.charCodeAt(this.pos + 2);\n }\n\n if (next === 61) { return this.finishOp(types$1.assign, size + 1) }\n return this.finishOp(tokentype, size)\n};\n\npp.readToken_pipe_amp = function(code) { // '|&'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === code) {\n if (this.options.ecmaVersion >= 12) {\n var next2 = this.input.charCodeAt(this.pos + 2);\n if (next2 === 61) { return this.finishOp(types$1.assign, 3) }\n }\n return this.finishOp(code === 124 ? types$1.logicalOR : types$1.logicalAND, 2)\n }\n if (next === 61) { return this.finishOp(types$1.assign, 2) }\n return this.finishOp(code === 124 ? types$1.bitwiseOR : types$1.bitwiseAND, 1)\n};\n\npp.readToken_caret = function() { // '^'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 61) { return this.finishOp(types$1.assign, 2) }\n return this.finishOp(types$1.bitwiseXOR, 1)\n};\n\npp.readToken_plus_min = function(code) { // '+-'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === code) {\n if (next === 45 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 62 &&\n (this.lastTokEnd === 0 || lineBreak.test(this.input.slice(this.lastTokEnd, this.pos)))) {\n // A `-->` line comment\n this.skipLineComment(3);\n this.skipSpace();\n return this.nextToken()\n }\n return this.finishOp(types$1.incDec, 2)\n }\n if (next === 61) { return this.finishOp(types$1.assign, 2) }\n return this.finishOp(types$1.plusMin, 1)\n};\n\npp.readToken_lt_gt = function(code) { // '<>'\n var next = this.input.charCodeAt(this.pos + 1);\n var size = 1;\n if (next === code) {\n size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2;\n if (this.input.charCodeAt(this.pos + size) === 61) { return this.finishOp(types$1.assign, size + 1) }\n return this.finishOp(types$1.bitShift, size)\n }\n if (next === 33 && code === 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 45 &&\n this.input.charCodeAt(this.pos + 3) === 45) {\n // `<!--`, an XML-style comment that should be interpreted as a line comment\n this.skipLineComment(4);\n this.skipSpace();\n return this.nextToken()\n }\n if (next === 61) { size = 2; }\n return this.finishOp(types$1.relational, size)\n};\n\npp.readToken_eq_excl = function(code) { // '=!'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 61) { return this.finishOp(types$1.equality, this.input.charCodeAt(this.pos + 2) === 61 ? 3 : 2) }\n if (code === 61 && next === 62 && this.options.ecmaVersion >= 6) { // '=>'\n this.pos += 2;\n return this.finishToken(types$1.arrow)\n }\n return this.finishOp(code === 61 ? types$1.eq : types$1.prefix, 1)\n};\n\npp.readToken_question = function() { // '?'\n var ecmaVersion = this.options.ecmaVersion;\n if (ecmaVersion >= 11) {\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 46) {\n var next2 = this.input.charCodeAt(this.pos + 2);\n if (next2 < 48 || next2 > 57) { return this.finishOp(types$1.questionDot, 2) }\n }\n if (next === 63) {\n if (ecmaVersion >= 12) {\n var next2$1 = this.input.charCodeAt(this.pos + 2);\n if (next2$1 === 61) { return this.finishOp(types$1.assign, 3) }\n }\n return this.finishOp(types$1.coalesce, 2)\n }\n }\n return this.finishOp(types$1.question, 1)\n};\n\npp.readToken_numberSign = function() { // '#'\n var ecmaVersion = this.options.ecmaVersion;\n var code = 35; // '#'\n if (ecmaVersion >= 13) {\n ++this.pos;\n code = this.fullCharCodeAtPos();\n if (isIdentifierStart(code, true) || code === 92 /* '\\' */) {\n return this.finishToken(types$1.privateId, this.readWord1())\n }\n }\n\n this.raise(this.pos, \"Unexpected character '\" + codePointToString(code) + \"'\");\n};\n\npp.getTokenFromCode = function(code) {\n switch (code) {\n // The interpretation of a dot depends on whether it is followed\n // by a digit or another two dots.\n case 46: // '.'\n return this.readToken_dot()\n\n // Punctuation tokens.\n case 40: ++this.pos; return this.finishToken(types$1.parenL)\n case 41: ++this.pos; return this.finishToken(types$1.parenR)\n case 59: ++this.pos; return this.finishToken(types$1.semi)\n case 44: ++this.pos; return this.finishToken(types$1.comma)\n case 91: ++this.pos; return this.finishToken(types$1.bracketL)\n case 93: ++this.pos; return this.finishToken(types$1.bracketR)\n case 123: ++this.pos; return this.finishToken(types$1.braceL)\n case 125: ++this.pos; return this.finishToken(types$1.braceR)\n case 58: ++this.pos; return this.finishToken(types$1.colon)\n\n case 96: // '`'\n if (this.options.ecmaVersion < 6) { break }\n ++this.pos;\n return this.finishToken(types$1.backQuote)\n\n case 48: // '0'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 120 || next === 88) { return this.readRadixNumber(16) } // '0x', '0X' - hex number\n if (this.options.ecmaVersion >= 6) {\n if (next === 111 || next === 79) { return this.readRadixNumber(8) } // '0o', '0O' - octal number\n if (next === 98 || next === 66) { return this.readRadixNumber(2) } // '0b', '0B' - binary number\n }\n\n // Anything else beginning with a digit is an integer, octal\n // number, or float.\n case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: // 1-9\n return this.readNumber(false)\n\n // Quotes produce strings.\n case 34: case 39: // '\"', \"'\"\n return this.readString(code)\n\n // Operators are parsed inline in tiny state machines. '=' (61) is\n // often referred to. `finishOp` simply skips the amount of\n // characters it is given as second argument, and returns a token\n // of the type given by its first argument.\n case 47: // '/'\n return this.readToken_slash()\n\n case 37: case 42: // '%*'\n return this.readToken_mult_modulo_exp(code)\n\n case 124: case 38: // '|&'\n return this.readToken_pipe_amp(code)\n\n case 94: // '^'\n return this.readToken_caret()\n\n case 43: case 45: // '+-'\n return this.readToken_plus_min(code)\n\n case 60: case 62: // '<>'\n return this.readToken_lt_gt(code)\n\n case 61: case 33: // '=!'\n return this.readToken_eq_excl(code)\n\n case 63: // '?'\n return this.readToken_question()\n\n case 126: // '~'\n return this.finishOp(types$1.prefix, 1)\n\n case 35: // '#'\n return this.readToken_numberSign()\n }\n\n this.raise(this.pos, \"Unexpected character '\" + codePointToString(code) + \"'\");\n};\n\npp.finishOp = function(type, size) {\n var str = this.input.slice(this.pos, this.pos + size);\n this.pos += size;\n return this.finishToken(type, str)\n};\n\npp.readRegexp = function() {\n var escaped, inClass, start = this.pos;\n for (;;) {\n if (this.pos >= this.input.length) { this.raise(start, \"Unterminated regular expression\"); }\n var ch = this.input.charAt(this.pos);\n if (lineBreak.test(ch)) { this.raise(start, \"Unterminated regular expression\"); }\n if (!escaped) {\n if (ch === \"[\") { inClass = true; }\n else if (ch === \"]\" && inClass) { inClass = false; }\n else if (ch === \"/\" && !inClass) { break }\n escaped = ch === \"\\\\\";\n } else { escaped = false; }\n ++this.pos;\n }\n var pattern = this.input.slice(start, this.pos);\n ++this.pos;\n var flagsStart = this.pos;\n var flags = this.readWord1();\n if (this.containsEsc) { this.unexpected(flagsStart); }\n\n // Validate pattern\n var state = this.regexpState || (this.regexpState = new RegExpValidationState(this));\n state.reset(start, pattern, flags);\n this.validateRegExpFlags(state);\n this.validateRegExpPattern(state);\n\n // Create Literal#value property value.\n var value = null;\n try {\n value = new RegExp(pattern, flags);\n } catch (e) {\n // ESTree requires null if it failed to instantiate RegExp object.\n // https://github.com/estree/estree/blob/a27003adf4fd7bfad44de9cef372a2eacd527b1c/es5.md#regexpliteral\n }\n\n return this.finishToken(types$1.regexp, {pattern: pattern, flags: flags, value: value})\n};\n\n// Read an integer in the given radix. Return null if zero digits\n// were read, the integer value otherwise. When `len` is given, this\n// will return `null` unless the integer has exactly `len` digits.\n\npp.readInt = function(radix, len, maybeLegacyOctalNumericLiteral) {\n // `len` is used for character escape sequences. In that case, disallow separators.\n var allowSeparators = this.options.ecmaVersion >= 12 && len === undefined;\n\n // `maybeLegacyOctalNumericLiteral` is true if it doesn't have prefix (0x,0o,0b)\n // and isn't fraction part nor exponent part. In that case, if the first digit\n // is zero then disallow separators.\n var isLegacyOctalNumericLiteral = maybeLegacyOctalNumericLiteral && this.input.charCodeAt(this.pos) === 48;\n\n var start = this.pos, total = 0, lastCode = 0;\n for (var i = 0, e = len == null ? Infinity : len; i < e; ++i, ++this.pos) {\n var code = this.input.charCodeAt(this.pos), val = (void 0);\n\n if (allowSeparators && code === 95) {\n if (isLegacyOctalNumericLiteral) { this.raiseRecoverable(this.pos, \"Numeric separator is not allowed in legacy octal numeric literals\"); }\n if (lastCode === 95) { this.raiseRecoverable(this.pos, \"Numeric separator must be exactly one underscore\"); }\n if (i === 0) { this.raiseRecoverable(this.pos, \"Numeric separator is not allowed at the first of digits\"); }\n lastCode = code;\n continue\n }\n\n if (code >= 97) { val = code - 97 + 10; } // a\n else if (code >= 65) { val = code - 65 + 10; } // A\n else if (code >= 48 && code <= 57) { val = code - 48; } // 0-9\n else { val = Infinity; }\n if (val >= radix) { break }\n lastCode = code;\n total = total * radix + val;\n }\n\n if (allowSeparators && lastCode === 95) { this.raiseRecoverable(this.pos - 1, \"Numeric separator is not allowed at the last of digits\"); }\n if (this.pos === start || len != null && this.pos - start !== len) { return null }\n\n return total\n};\n\nfunction stringToNumber(str, isLegacyOctalNumericLiteral) {\n if (isLegacyOctalNumericLiteral) {\n return parseInt(str, 8)\n }\n\n // `parseFloat(value)` stops parsing at the first numeric separator then returns a wrong value.\n return parseFloat(str.replace(/_/g, \"\"))\n}\n\nfunction stringToBigInt(str) {\n if (typeof BigInt !== \"function\") {\n return null\n }\n\n // `BigInt(value)` throws syntax error if the string contains numeric separators.\n return BigInt(str.replace(/_/g, \"\"))\n}\n\npp.readRadixNumber = function(radix) {\n var start = this.pos;\n this.pos += 2; // 0x\n var val = this.readInt(radix);\n if (val == null) { this.raise(this.start + 2, \"Expected number in radix \" + radix); }\n if (this.options.ecmaVersion >= 11 && this.input.charCodeAt(this.pos) === 110) {\n val = stringToBigInt(this.input.slice(start, this.pos));\n ++this.pos;\n } else if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n return this.finishToken(types$1.num, val)\n};\n\n// Read an integer, octal integer, or floating-point number.\n\npp.readNumber = function(startsWithDot) {\n var start = this.pos;\n if (!startsWithDot && this.readInt(10, undefined, true) === null) { this.raise(start, \"Invalid number\"); }\n var octal = this.pos - start >= 2 && this.input.charCodeAt(start) === 48;\n if (octal && this.strict) { this.raise(start, \"Invalid number\"); }\n var next = this.input.charCodeAt(this.pos);\n if (!octal && !startsWithDot && this.options.ecmaVersion >= 11 && next === 110) {\n var val$1 = stringToBigInt(this.input.slice(start, this.pos));\n ++this.pos;\n if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n return this.finishToken(types$1.num, val$1)\n }\n if (octal && /[89]/.test(this.input.slice(start, this.pos))) { octal = false; }\n if (next === 46 && !octal) { // '.'\n ++this.pos;\n this.readInt(10);\n next = this.input.charCodeAt(this.pos);\n }\n if ((next === 69 || next === 101) && !octal) { // 'eE'\n next = this.input.charCodeAt(++this.pos);\n if (next === 43 || next === 45) { ++this.pos; } // '+-'\n if (this.readInt(10) === null) { this.raise(start, \"Invalid number\"); }\n }\n if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n\n var val = stringToNumber(this.input.slice(start, this.pos), octal);\n return this.finishToken(types$1.num, val)\n};\n\n// Read a string value, interpreting backslash-escapes.\n\npp.readCodePoint = function() {\n var ch = this.input.charCodeAt(this.pos), code;\n\n if (ch === 123) { // '{'\n if (this.options.ecmaVersion < 6) { this.unexpected(); }\n var codePos = ++this.pos;\n code = this.readHexChar(this.input.indexOf(\"}\", this.pos) - this.pos);\n ++this.pos;\n if (code > 0x10FFFF) { this.invalidStringToken(codePos, \"Code point out of bounds\"); }\n } else {\n code = this.readHexChar(4);\n }\n return code\n};\n\npp.readString = function(quote) {\n var out = \"\", chunkStart = ++this.pos;\n for (;;) {\n if (this.pos >= this.input.length) { this.raise(this.start, \"Unterminated string constant\"); }\n var ch = this.input.charCodeAt(this.pos);\n if (ch === quote) { break }\n if (ch === 92) { // '\\'\n out += this.input.slice(chunkStart, this.pos);\n out += this.readEscapedChar(false);\n chunkStart = this.pos;\n } else if (ch === 0x2028 || ch === 0x2029) {\n if (this.options.ecmaVersion < 10) { this.raise(this.start, \"Unterminated string constant\"); }\n ++this.pos;\n if (this.options.locations) {\n this.curLine++;\n this.lineStart = this.pos;\n }\n } else {\n if (isNewLine(ch)) { this.raise(this.start, \"Unterminated string constant\"); }\n ++this.pos;\n }\n }\n out += this.input.slice(chunkStart, this.pos++);\n return this.finishToken(types$1.string, out)\n};\n\n// Reads template string tokens.\n\nvar INVALID_TEMPLATE_ESCAPE_ERROR = {};\n\npp.tryReadTemplateToken = function() {\n this.inTemplateElement = true;\n try {\n this.readTmplToken();\n } catch (err) {\n if (err === INVALID_TEMPLATE_ESCAPE_ERROR) {\n this.readInvalidTemplateToken();\n } else {\n throw err\n }\n }\n\n this.inTemplateElement = false;\n};\n\npp.invalidStringToken = function(position, message) {\n if (this.inTemplateElement && this.options.ecmaVersion >= 9) {\n throw INVALID_TEMPLATE_ESCAPE_ERROR\n } else {\n this.raise(position, message);\n }\n};\n\npp.readTmplToken = function() {\n var out = \"\", chunkStart = this.pos;\n for (;;) {\n if (this.pos >= this.input.length) { this.raise(this.start, \"Unterminated template\"); }\n var ch = this.input.charCodeAt(this.pos);\n if (ch === 96 || ch === 36 && this.input.charCodeAt(this.pos + 1) === 123) { // '`', '${'\n if (this.pos === this.start && (this.type === types$1.template || this.type === types$1.invalidTemplate)) {\n if (ch === 36) {\n this.pos += 2;\n return this.finishToken(types$1.dollarBraceL)\n } else {\n ++this.pos;\n return this.finishToken(types$1.backQuote)\n }\n }\n out += this.input.slice(chunkStart, this.pos);\n return this.finishToken(types$1.template, out)\n }\n if (ch === 92) { // '\\'\n out += this.input.slice(chunkStart, this.pos);\n out += this.readEscapedChar(true);\n chunkStart = this.pos;\n } else if (isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.pos);\n ++this.pos;\n switch (ch) {\n case 13:\n if (this.input.charCodeAt(this.pos) === 10) { ++this.pos; }\n case 10:\n out += \"\\n\";\n break\n default:\n out += String.fromCharCode(ch);\n break\n }\n if (this.options.locations) {\n ++this.curLine;\n this.lineStart = this.pos;\n }\n chunkStart = this.pos;\n } else {\n ++this.pos;\n }\n }\n};\n\n// Reads a template token to search for the end, without validating any escape sequences\npp.readInvalidTemplateToken = function() {\n for (; this.pos < this.input.length; this.pos++) {\n switch (this.input[this.pos]) {\n case \"\\\\\":\n ++this.pos;\n break\n\n case \"$\":\n if (this.input[this.pos + 1] !== \"{\") {\n break\n }\n\n // falls through\n case \"`\":\n return this.finishToken(types$1.invalidTemplate, this.input.slice(this.start, this.pos))\n\n // no default\n }\n }\n this.raise(this.start, \"Unterminated template\");\n};\n\n// Used to read escaped characters\n\npp.readEscapedChar = function(inTemplate) {\n var ch = this.input.charCodeAt(++this.pos);\n ++this.pos;\n switch (ch) {\n case 110: return \"\\n\" // 'n' -> '\\n'\n case 114: return \"\\r\" // 'r' -> '\\r'\n case 120: return String.fromCharCode(this.readHexChar(2)) // 'x'\n case 117: return codePointToString(this.readCodePoint()) // 'u'\n case 116: return \"\\t\" // 't' -> '\\t'\n case 98: return \"\\b\" // 'b' -> '\\b'\n case 118: return \"\\u000b\" // 'v' -> '\\u000b'\n case 102: return \"\\f\" // 'f' -> '\\f'\n case 13: if (this.input.charCodeAt(this.pos) === 10) { ++this.pos; } // '\\r\\n'\n case 10: // ' \\n'\n if (this.options.locations) { this.lineStart = this.pos; ++this.curLine; }\n return \"\"\n case 56:\n case 57:\n if (this.strict) {\n this.invalidStringToken(\n this.pos - 1,\n \"Invalid escape sequence\"\n );\n }\n if (inTemplate) {\n var codePos = this.pos - 1;\n\n this.invalidStringToken(\n codePos,\n \"Invalid escape sequence in template string\"\n );\n }\n default:\n if (ch >= 48 && ch <= 55) {\n var octalStr = this.input.substr(this.pos - 1, 3).match(/^[0-7]+/)[0];\n var octal = parseInt(octalStr, 8);\n if (octal > 255) {\n octalStr = octalStr.slice(0, -1);\n octal = parseInt(octalStr, 8);\n }\n this.pos += octalStr.length - 1;\n ch = this.input.charCodeAt(this.pos);\n if ((octalStr !== \"0\" || ch === 56 || ch === 57) && (this.strict || inTemplate)) {\n this.invalidStringToken(\n this.pos - 1 - octalStr.length,\n inTemplate\n ? \"Octal literal in template string\"\n : \"Octal literal in strict mode\"\n );\n }\n return String.fromCharCode(octal)\n }\n if (isNewLine(ch)) {\n // Unicode new line characters after \\ get removed from output in both\n // template literals and strings\n return \"\"\n }\n return String.fromCharCode(ch)\n }\n};\n\n// Used to read character escape sequences ('\\x', '\\u', '\\U').\n\npp.readHexChar = function(len) {\n var codePos = this.pos;\n var n = this.readInt(16, len);\n if (n === null) { this.invalidStringToken(codePos, \"Bad character escape sequence\"); }\n return n\n};\n\n// Read an identifier, and return it as a string. Sets `this.containsEsc`\n// to whether the word contained a '\\u' escape.\n//\n// Incrementally adds only escaped chars, adding other chunks as-is\n// as a micro-optimization.\n\npp.readWord1 = function() {\n this.containsEsc = false;\n var word = \"\", first = true, chunkStart = this.pos;\n var astral = this.options.ecmaVersion >= 6;\n while (this.pos < this.input.length) {\n var ch = this.fullCharCodeAtPos();\n if (isIdentifierChar(ch, astral)) {\n this.pos += ch <= 0xffff ? 1 : 2;\n } else if (ch === 92) { // \"\\\"\n this.containsEsc = true;\n word += this.input.slice(chunkStart, this.pos);\n var escStart = this.pos;\n if (this.input.charCodeAt(++this.pos) !== 117) // \"u\"\n { this.invalidStringToken(this.pos, \"Expecting Unicode escape sequence \\\\uXXXX\"); }\n ++this.pos;\n var esc = this.readCodePoint();\n if (!(first ? isIdentifierStart : isIdentifierChar)(esc, astral))\n { this.invalidStringToken(escStart, \"Invalid Unicode escape\"); }\n word += codePointToString(esc);\n chunkStart = this.pos;\n } else {\n break\n }\n first = false;\n }\n return word + this.input.slice(chunkStart, this.pos)\n};\n\n// Read an identifier or keyword token. Will check for reserved\n// words when necessary.\n\npp.readWord = function() {\n var word = this.readWord1();\n var type = types$1.name;\n if (this.keywords.test(word)) {\n type = keywords[word];\n }\n return this.finishToken(type, word)\n};\n\n// Acorn is a tiny, fast JavaScript parser written in JavaScript.\n//\n// Acorn was written by Marijn Haverbeke, Ingvar Stepanyan, and\n// various contributors and released under an MIT license.\n//\n// Git repositories for Acorn are available at\n//\n// http://marijnhaverbeke.nl/git/acorn\n// https://github.com/acornjs/acorn.git\n//\n// Please use the [github bug tracker][ghbt] to report issues.\n//\n// [ghbt]: https://github.com/acornjs/acorn/issues\n//\n// [walk]: util/walk.js\n\n\nvar version = \"8.10.0\";\n\nParser.acorn = {\n Parser: Parser,\n version: version,\n defaultOptions: defaultOptions,\n Position: Position,\n SourceLocation: SourceLocation,\n getLineInfo: getLineInfo,\n Node: Node,\n TokenType: TokenType,\n tokTypes: types$1,\n keywordTypes: keywords,\n TokContext: TokContext,\n tokContexts: types,\n isIdentifierChar: isIdentifierChar,\n isIdentifierStart: isIdentifierStart,\n Token: Token,\n isNewLine: isNewLine,\n lineBreak: lineBreak,\n lineBreakG: lineBreakG,\n nonASCIIwhitespace: nonASCIIwhitespace\n};\n\n// The main exported interface (under `self.acorn` when in the\n// browser) is a `parse` function that takes a code string and\n// returns an abstract syntax tree as specified by [Mozilla parser\n// API][api].\n//\n// [api]: https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API\n\nfunction parse(input, options) {\n return Parser.parse(input, options)\n}\n\n// This function tries to parse a single expression at a given\n// offset in a string. Useful for parsing mixed-language formats\n// that embed JavaScript expressions.\n\nfunction parseExpressionAt(input, pos, options) {\n return Parser.parseExpressionAt(input, pos, options)\n}\n\n// Acorn is organized as a tokenizer and a recursive-descent parser.\n// The `tokenizer` export provides an interface to the tokenizer.\n\nfunction tokenizer(input, options) {\n return Parser.tokenizer(input, options)\n}\n\nexport { Node, Parser, Position, SourceLocation, TokContext, Token, TokenType, defaultOptions, getLineInfo, isIdentifierChar, isIdentifierStart, isNewLine, keywords as keywordTypes, lineBreak, lineBreakG, nonASCIIwhitespace, parse, parseExpressionAt, types as tokContexts, types$1 as tokTypes, tokenizer, version };\n","export default new Set([\n \"Array\",\n \"ArrayBuffer\",\n \"atob\",\n \"AudioContext\",\n \"Blob\",\n \"Boolean\",\n \"BigInt\",\n \"btoa\",\n \"clearInterval\",\n \"clearTimeout\",\n \"console\",\n \"crypto\",\n \"CustomEvent\",\n \"DataView\",\n \"Date\",\n \"decodeURI\",\n \"decodeURIComponent\",\n \"devicePixelRatio\",\n \"document\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"Error\",\n \"escape\",\n \"eval\",\n \"fetch\",\n \"File\",\n \"FileList\",\n \"FileReader\",\n \"Float32Array\",\n \"Float64Array\",\n \"Function\",\n \"Headers\",\n \"Image\",\n \"ImageData\",\n \"Infinity\",\n \"Int16Array\",\n \"Int32Array\",\n \"Int8Array\",\n \"Intl\",\n \"isFinite\",\n \"isNaN\",\n \"JSON\",\n \"Map\",\n \"Math\",\n \"NaN\",\n \"Number\",\n \"navigator\",\n \"Object\",\n \"parseFloat\",\n \"parseInt\",\n \"performance\",\n \"Path2D\",\n \"Promise\",\n \"Proxy\",\n \"RangeError\",\n \"ReferenceError\",\n \"Reflect\",\n \"RegExp\",\n \"cancelAnimationFrame\",\n \"requestAnimationFrame\",\n \"Set\",\n \"setInterval\",\n \"setTimeout\",\n \"String\",\n \"Symbol\",\n \"SyntaxError\",\n \"TextDecoder\",\n \"TextEncoder\",\n \"this\",\n \"TypeError\",\n \"Uint16Array\",\n \"Uint32Array\",\n \"Uint8Array\",\n \"Uint8ClampedArray\",\n \"undefined\",\n \"unescape\",\n \"URIError\",\n \"URL\",\n \"WeakMap\",\n \"WeakSet\",\n \"WebSocket\",\n \"Worker\",\n \"window\"\n]);\n","// AST walker module for Mozilla Parser API compatible trees\n\n// A simple walk is one where you simply specify callbacks to be\n// called on specific nodes. The last two arguments are optional. A\n// simple use would be\n//\n// walk.simple(myTree, {\n// Expression: function(node) { ... }\n// });\n//\n// to do something with all expressions. All Parser API node types\n// can be used to identify node types, as well as Expression and\n// Statement, which denote categories of nodes.\n//\n// The base argument can be used to pass a custom (recursive)\n// walker, and state can be used to give this walked an initial\n// state.\n\nfunction simple(node, visitors, baseVisitor, state, override) {\n if (!baseVisitor) { baseVisitor = base\n ; }(function c(node, st, override) {\n var type = override || node.type, found = visitors[type];\n baseVisitor[type](node, st, c);\n if (found) { found(node, st); }\n })(node, state, override);\n}\n\n// An ancestor walk keeps an array of ancestor nodes (including the\n// current node) and passes them to the callback as third parameter\n// (and also as state parameter when no other state is present).\nfunction ancestor(node, visitors, baseVisitor, state, override) {\n var ancestors = [];\n if (!baseVisitor) { baseVisitor = base\n ; }(function c(node, st, override) {\n var type = override || node.type, found = visitors[type];\n var isNew = node !== ancestors[ancestors.length - 1];\n if (isNew) { ancestors.push(node); }\n baseVisitor[type](node, st, c);\n if (found) { found(node, st || ancestors, ancestors); }\n if (isNew) { ancestors.pop(); }\n })(node, state, override);\n}\n\n// A recursive walk is one where your functions override the default\n// walkers. They can modify and replace the state parameter that's\n// threaded through the walk, and can opt how and whether to walk\n// their child nodes (by calling their third argument on these\n// nodes).\nfunction recursive(node, state, funcs, baseVisitor, override) {\n var visitor = funcs ? make(funcs, baseVisitor || undefined) : baseVisitor\n ;(function c(node, st, override) {\n visitor[override || node.type](node, st, c);\n })(node, state, override);\n}\n\nfunction makeTest(test) {\n if (typeof test === \"string\")\n { return function (type) { return type === test; } }\n else if (!test)\n { return function () { return true; } }\n else\n { return test }\n}\n\nvar Found = function Found(node, state) { this.node = node; this.state = state; };\n\n// A full walk triggers the callback on each node\nfunction full(node, callback, baseVisitor, state, override) {\n if (!baseVisitor) { baseVisitor = base; }\n var last\n ;(function c(node, st, override) {\n var type = override || node.type;\n baseVisitor[type](node, st, c);\n if (last !== node) {\n callback(node, st, type);\n last = node;\n }\n })(node, state, override);\n}\n\n// An fullAncestor walk is like an ancestor walk, but triggers\n// the callback on each node\nfunction fullAncestor(node, callback, baseVisitor, state) {\n if (!baseVisitor) { baseVisitor = base; }\n var ancestors = [], last\n ;(function c(node, st, override) {\n var type = override || node.type;\n var isNew = node !== ancestors[ancestors.length - 1];\n if (isNew) { ancestors.push(node); }\n baseVisitor[type](node, st, c);\n if (last !== node) {\n callback(node, st || ancestors, ancestors, type);\n last = node;\n }\n if (isNew) { ancestors.pop(); }\n })(node, state);\n}\n\n// Find a node with a given start, end, and type (all are optional,\n// null can be used as wildcard). Returns a {node, state} object, or\n// undefined when it doesn't find a matching node.\nfunction findNodeAt(node, start, end, test, baseVisitor, state) {\n if (!baseVisitor) { baseVisitor = base; }\n test = makeTest(test);\n try {\n (function c(node, st, override) {\n var type = override || node.type;\n if ((start == null || node.start <= start) &&\n (end == null || node.end >= end))\n { baseVisitor[type](node, st, c); }\n if ((start == null || node.start === start) &&\n (end == null || node.end === end) &&\n test(type, node))\n { throw new Found(node, st) }\n })(node, state);\n } catch (e) {\n if (e instanceof Found) { return e }\n throw e\n }\n}\n\n// Find the innermost node of a given type that contains the given\n// position. Interface similar to findNodeAt.\nfunction findNodeAround(node, pos, test, baseVisitor, state) {\n test = makeTest(test);\n if (!baseVisitor) { baseVisitor = base; }\n try {\n (function c(node, st, override) {\n var type = override || node.type;\n if (node.start > pos || node.end < pos) { return }\n baseVisitor[type](node, st, c);\n if (test(type, node)) { throw new Found(node, st) }\n })(node, state);\n } catch (e) {\n if (e instanceof Found) { return e }\n throw e\n }\n}\n\n// Find the outermost matching node after a given position.\nfunction findNodeAfter(node, pos, test, baseVisitor, state) {\n test = makeTest(test);\n if (!baseVisitor) { baseVisitor = base; }\n try {\n (function c(node, st, override) {\n if (node.end < pos) { return }\n var type = override || node.type;\n if (node.start >= pos && test(type, node)) { throw new Found(node, st) }\n baseVisitor[type](node, st, c);\n })(node, state);\n } catch (e) {\n if (e instanceof Found) { return e }\n throw e\n }\n}\n\n// Find the outermost matching node before a given position.\nfunction findNodeBefore(node, pos, test, baseVisitor, state) {\n test = makeTest(test);\n if (!baseVisitor) { baseVisitor = base; }\n var max\n ;(function c(node, st, override) {\n if (node.start > pos) { return }\n var type = override || node.type;\n if (node.end <= pos && (!max || max.node.end < node.end) && test(type, node))\n { max = new Found(node, st); }\n baseVisitor[type](node, st, c);\n })(node, state);\n return max\n}\n\n// Used to create a custom walker. Will fill in all missing node\n// type properties with the defaults.\nfunction make(funcs, baseVisitor) {\n var visitor = Object.create(baseVisitor || base);\n for (var type in funcs) { visitor[type] = funcs[type]; }\n return visitor\n}\n\nfunction skipThrough(node, st, c) { c(node, st); }\nfunction ignore(_node, _st, _c) {}\n\n// Node walkers.\n\nvar base = {};\n\nbase.Program = base.BlockStatement = base.StaticBlock = function (node, st, c) {\n for (var i = 0, list = node.body; i < list.length; i += 1)\n {\n var stmt = list[i];\n\n c(stmt, st, \"Statement\");\n }\n};\nbase.Statement = skipThrough;\nbase.EmptyStatement = ignore;\nbase.ExpressionStatement = base.ParenthesizedExpression = base.ChainExpression =\n function (node, st, c) { return c(node.expression, st, \"Expression\"); };\nbase.IfStatement = function (node, st, c) {\n c(node.test, st, \"Expression\");\n c(node.consequent, st, \"Statement\");\n if (node.alternate) { c(node.alternate, st, \"Statement\"); }\n};\nbase.LabeledStatement = function (node, st, c) { return c(node.body, st, \"Statement\"); };\nbase.BreakStatement = base.ContinueStatement = ignore;\nbase.WithStatement = function (node, st, c) {\n c(node.object, st, \"Expression\");\n c(node.body, st, \"Statement\");\n};\nbase.SwitchStatement = function (node, st, c) {\n c(node.discriminant, st, \"Expression\");\n for (var i$1 = 0, list$1 = node.cases; i$1 < list$1.length; i$1 += 1) {\n var cs = list$1[i$1];\n\n if (cs.test) { c(cs.test, st, \"Expression\"); }\n for (var i = 0, list = cs.consequent; i < list.length; i += 1)\n {\n var cons = list[i];\n\n c(cons, st, \"Statement\");\n }\n }\n};\nbase.SwitchCase = function (node, st, c) {\n if (node.test) { c(node.test, st, \"Expression\"); }\n for (var i = 0, list = node.consequent; i < list.length; i += 1)\n {\n var cons = list[i];\n\n c(cons, st, \"Statement\");\n }\n};\nbase.ReturnStatement = base.YieldExpression = base.AwaitExpression = function (node, st, c) {\n if (node.argument) { c(node.argument, st, \"Expression\"); }\n};\nbase.ThrowStatement = base.SpreadElement =\n function (node, st, c) { return c(node.argument, st, \"Expression\"); };\nbase.TryStatement = function (node, st, c) {\n c(node.block, st, \"Statement\");\n if (node.handler) { c(node.handler, st); }\n if (node.finalizer) { c(node.finalizer, st, \"Statement\"); }\n};\nbase.CatchClause = function (node, st, c) {\n if (node.param) { c(node.param, st, \"Pattern\"); }\n c(node.body, st, \"Statement\");\n};\nbase.WhileStatement = base.DoWhileStatement = function (node, st, c) {\n c(node.test, st, \"Expression\");\n c(node.body, st, \"Statement\");\n};\nbase.ForStatement = function (node, st, c) {\n if (node.init) { c(node.init, st, \"ForInit\"); }\n if (node.test) { c(node.test, st, \"Expression\"); }\n if (node.update) { c(node.update, st, \"Expression\"); }\n c(node.body, st, \"Statement\");\n};\nbase.ForInStatement = base.ForOfStatement = function (node, st, c) {\n c(node.left, st, \"ForInit\");\n c(node.right, st, \"Expression\");\n c(node.body, st, \"Statement\");\n};\nbase.ForInit = function (node, st, c) {\n if (node.type === \"VariableDeclaration\") { c(node, st); }\n else { c(node, st, \"Expression\"); }\n};\nbase.DebuggerStatement = ignore;\n\nbase.FunctionDeclaration = function (node, st, c) { return c(node, st, \"Function\"); };\nbase.VariableDeclaration = function (node, st, c) {\n for (var i = 0, list = node.declarations; i < list.length; i += 1)\n {\n var decl = list[i];\n\n c(decl, st);\n }\n};\nbase.VariableDeclarator = function (node, st, c) {\n c(node.id, st, \"Pattern\");\n if (node.init) { c(node.init, st, \"Expression\"); }\n};\n\nbase.Function = function (node, st, c) {\n if (node.id) { c(node.id, st, \"Pattern\"); }\n for (var i = 0, list = node.params; i < list.length; i += 1)\n {\n var param = list[i];\n\n c(param, st, \"Pattern\");\n }\n c(node.body, st, node.expression ? \"Expression\" : \"Statement\");\n};\n\nbase.Pattern = function (node, st, c) {\n if (node.type === \"Identifier\")\n { c(node, st, \"VariablePattern\"); }\n else if (node.type === \"MemberExpression\")\n { c(node, st, \"MemberPattern\"); }\n else\n { c(node, st); }\n};\nbase.VariablePattern = ignore;\nbase.MemberPattern = skipThrough;\nbase.RestElement = function (node, st, c) { return c(node.argument, st, \"Pattern\"); };\nbase.ArrayPattern = function (node, st, c) {\n for (var i = 0, list = node.elements; i < list.length; i += 1) {\n var elt = list[i];\n\n if (elt) { c(elt, st, \"Pattern\"); }\n }\n};\nbase.ObjectPattern = function (node, st, c) {\n for (var i = 0, list = node.properties; i < list.length; i += 1) {\n var prop = list[i];\n\n if (prop.type === \"Property\") {\n if (prop.computed) { c(prop.key, st, \"Expression\"); }\n c(prop.value, st, \"Pattern\");\n } else if (prop.type === \"RestElement\") {\n c(prop.argument, st, \"Pattern\");\n }\n }\n};\n\nbase.Expression = skipThrough;\nbase.ThisExpression = base.Super = base.MetaProperty = ignore;\nbase.ArrayExpression = function (node, st, c) {\n for (var i = 0, list = node.elements; i < list.length; i += 1) {\n var elt = list[i];\n\n if (elt) { c(elt, st, \"Expression\"); }\n }\n};\nbase.ObjectExpression = function (node, st, c) {\n for (var i = 0, list = node.properties; i < list.length; i += 1)\n {\n var prop = list[i];\n\n c(prop, st);\n }\n};\nbase.FunctionExpression = base.ArrowFunctionExpression = base.FunctionDeclaration;\nbase.SequenceExpression = function (node, st, c) {\n for (var i = 0, list = node.expressions; i < list.length; i += 1)\n {\n var expr = list[i];\n\n c(expr, st, \"Expression\");\n }\n};\nbase.TemplateLiteral = function (node, st, c) {\n for (var i = 0, list = node.quasis; i < list.length; i += 1)\n {\n var quasi = list[i];\n\n c(quasi, st);\n }\n\n for (var i$1 = 0, list$1 = node.expressions; i$1 < list$1.length; i$1 += 1)\n {\n var expr = list$1[i$1];\n\n c(expr, st, \"Expression\");\n }\n};\nbase.TemplateElement = ignore;\nbase.UnaryExpression = base.UpdateExpression = function (node, st, c) {\n c(node.argument, st, \"Expression\");\n};\nbase.BinaryExpression = base.LogicalExpression = function (node, st, c) {\n c(node.left, st, \"Expression\");\n c(node.right, st, \"Expression\");\n};\nbase.AssignmentExpression = base.AssignmentPattern = function (node, st, c) {\n c(node.left, st, \"Pattern\");\n c(node.right, st, \"Expression\");\n};\nbase.ConditionalExpression = function (node, st, c) {\n c(node.test, st, \"Expression\");\n c(node.consequent, st, \"Expression\");\n c(node.alternate, st, \"Expression\");\n};\nbase.NewExpression = base.CallExpression = function (node, st, c) {\n c(node.callee, st, \"Expression\");\n if (node.arguments)\n { for (var i = 0, list = node.arguments; i < list.length; i += 1)\n {\n var arg = list[i];\n\n c(arg, st, \"Expression\");\n } }\n};\nbase.MemberExpression = function (node, st, c) {\n c(node.object, st, \"Expression\");\n if (node.computed) { c(node.property, st, \"Expression\"); }\n};\nbase.ExportNamedDeclaration = base.ExportDefaultDeclaration = function (node, st, c) {\n if (node.declaration)\n { c(node.declaration, st, node.type === \"ExportNamedDeclaration\" || node.declaration.id ? \"Statement\" : \"Expression\"); }\n if (node.source) { c(node.source, st, \"Expression\"); }\n};\nbase.ExportAllDeclaration = function (node, st, c) {\n if (node.exported)\n { c(node.exported, st); }\n c(node.source, st, \"Expression\");\n};\nbase.ImportDeclaration = function (node, st, c) {\n for (var i = 0, list = node.specifiers; i < list.length; i += 1)\n {\n var spec = list[i];\n\n c(spec, st);\n }\n c(node.source, st, \"Expression\");\n};\nbase.ImportExpression = function (node, st, c) {\n c(node.source, st, \"Expression\");\n};\nbase.ImportSpecifier = base.ImportDefaultSpecifier = base.ImportNamespaceSpecifier = base.Identifier = base.PrivateIdentifier = base.Literal = ignore;\n\nbase.TaggedTemplateExpression = function (node, st, c) {\n c(node.tag, st, \"Expression\");\n c(node.quasi, st, \"Expression\");\n};\nbase.ClassDeclaration = base.ClassExpression = function (node, st, c) { return c(node, st, \"Class\"); };\nbase.Class = function (node, st, c) {\n if (node.id) { c(node.id, st, \"Pattern\"); }\n if (node.superClass) { c(node.superClass, st, \"Expression\"); }\n c(node.body, st);\n};\nbase.ClassBody = function (node, st, c) {\n for (var i = 0, list = node.body; i < list.length; i += 1)\n {\n var elt = list[i];\n\n c(elt, st);\n }\n};\nbase.MethodDefinition = base.PropertyDefinition = base.Property = function (node, st, c) {\n if (node.computed) { c(node.key, st, \"Expression\"); }\n if (node.value) { c(node.value, st, \"Expression\"); }\n};\n\nexport { ancestor, base, findNodeAfter, findNodeAround, findNodeAt, findNodeBefore, full, fullAncestor, make, recursive, simple };\n","import {make} from \"acorn-walk\";\n\nexport default make({\n Import() {},\n ViewExpression(node, st, c) {\n c(node.id, st, \"Identifier\");\n },\n MutableExpression(node, st, c) {\n c(node.id, st, \"Identifier\");\n }\n});\n","// Based on https://github.com/ForbesLindesay/acorn-globals\n// Copyright (c) 2014 Forbes Lindesay\n// https://github.com/ForbesLindesay/acorn-globals/blob/master/LICENSE\n\nimport {ancestor} from \"acorn-walk\";\nimport walk from \"./walk.js\";\n\nfunction isScope(node) {\n return node.type === \"FunctionExpression\"\n || node.type === \"FunctionDeclaration\"\n || node.type === \"ArrowFunctionExpression\"\n || node.type === \"Program\";\n}\n\nfunction isBlockScope(node) {\n return node.type === \"BlockStatement\"\n || node.type === \"ForInStatement\"\n || node.type === \"ForOfStatement\"\n || node.type === \"ForStatement\"\n || isScope(node);\n}\n\nfunction declaresArguments(node) {\n return node.type === \"FunctionExpression\"\n || node.type === \"FunctionDeclaration\";\n}\n\nexport default function findReferences(cell, globals) {\n const ast = {type: \"Program\", body: [cell.body]};\n const locals = new Map;\n const globalSet = new Set(globals);\n const references = [];\n\n function hasLocal(node, name) {\n const l = locals.get(node);\n return l ? l.has(name) : false;\n }\n\n function declareLocal(node, id) {\n const l = locals.get(node);\n if (l) l.add(id.name);\n else locals.set(node, new Set([id.name]));\n }\n\n function declareClass(node) {\n if (node.id) declareLocal(node, node.id);\n }\n\n function declareFunction(node) {\n node.params.forEach(param => declarePattern(param, node));\n if (node.id) declareLocal(node, node.id);\n }\n\n function declareCatchClause(node) {\n if (node.param) declarePattern(node.param, node);\n }\n\n function declarePattern(node, parent) {\n switch (node.type) {\n case \"Identifier\":\n declareLocal(parent, node);\n break;\n case \"ObjectPattern\":\n node.properties.forEach(node => declarePattern(node, parent));\n break;\n case \"ArrayPattern\":\n node.elements.forEach(node => node && declarePattern(node, parent));\n break;\n case \"Property\":\n declarePattern(node.value, parent);\n break;\n case \"RestElement\":\n declarePattern(node.argument, parent);\n break;\n case \"AssignmentPattern\":\n declarePattern(node.left, parent);\n break;\n default:\n throw new Error(\"Unrecognized pattern type: \" + node.type);\n }\n }\n\n function declareModuleSpecifier(node) {\n declareLocal(ast, node.local);\n }\n\n ancestor(\n ast,\n {\n VariableDeclaration: (node, parents) => {\n let parent = null;\n for (let i = parents.length - 1; i >= 0 && parent === null; --i) {\n if (node.kind === \"var\" ? isScope(parents[i]) : isBlockScope(parents[i])) {\n parent = parents[i];\n }\n }\n node.declarations.forEach(declaration => declarePattern(declaration.id, parent));\n },\n FunctionDeclaration: (node, parents) => {\n let parent = null;\n for (let i = parents.length - 2; i >= 0 && parent === null; --i) {\n if (isScope(parents[i])) {\n parent = parents[i];\n }\n }\n declareLocal(parent, node.id);\n declareFunction(node);\n },\n Function: declareFunction,\n ClassDeclaration: (node, parents) => {\n let parent = null;\n for (let i = parents.length - 2; i >= 0 && parent === null; i--) {\n if (isScope(parents[i])) {\n parent = parents[i];\n }\n }\n declareLocal(parent, node.id);\n },\n Class: declareClass,\n CatchClause: declareCatchClause,\n ImportDefaultSpecifier: declareModuleSpecifier,\n ImportSpecifier: declareModuleSpecifier,\n ImportNamespaceSpecifier: declareModuleSpecifier\n },\n walk\n );\n\n function identifier(node, parents) {\n let name = node.name;\n if (name === \"undefined\") return;\n for (let i = parents.length - 2; i >= 0; --i) {\n if (name === \"arguments\") {\n if (declaresArguments(parents[i])) {\n return;\n }\n }\n if (hasLocal(parents[i], name)) {\n return;\n }\n if (parents[i].type === \"ViewExpression\") {\n node = parents[i];\n name = `viewof ${node.id.name}`;\n }\n if (parents[i].type === \"MutableExpression\") {\n node = parents[i];\n name = `mutable ${node.id.name}`;\n }\n }\n if (!globalSet.has(name)) {\n if (name === \"arguments\") {\n throw Object.assign(new SyntaxError(`arguments is not allowed`), {node});\n }\n references.push(node);\n }\n }\n\n ancestor(\n ast,\n {\n VariablePattern: identifier,\n Identifier: identifier\n },\n walk\n );\n\n function checkConst(node, parents) {\n if (!node) return;\n switch (node.type) {\n case \"Identifier\":\n case \"VariablePattern\": {\n for (const parent of parents) {\n if (hasLocal(parent, node.name)) {\n return;\n }\n }\n if (parents[parents.length - 2].type === \"MutableExpression\") {\n return;\n }\n throw Object.assign(new SyntaxError(`Assignment to constant variable ${node.name}`), {node});\n }\n case \"ArrayPattern\": {\n for (const element of node.elements) {\n checkConst(element, parents);\n }\n return;\n }\n case \"ObjectPattern\": {\n for (const property of node.properties) {\n checkConst(property, parents);\n }\n return;\n }\n case \"Property\": {\n checkConst(node.value, parents);\n return;\n }\n case \"RestElement\": {\n checkConst(node.argument, parents);\n return;\n }\n }\n }\n\n function checkConstArgument(node, parents) {\n checkConst(node.argument, parents);\n }\n\n function checkConstLeft(node, parents) {\n checkConst(node.left, parents);\n }\n\n ancestor(\n ast,\n {\n AssignmentExpression: checkConstLeft,\n AssignmentPattern: checkConstLeft,\n UpdateExpression: checkConstArgument,\n ForOfStatement: checkConstLeft,\n ForInStatement: checkConstLeft\n },\n walk\n );\n\n return references;\n}\n","import {simple} from \"acorn-walk\";\nimport walk from \"./walk.js\";\n\nexport default function findFeatures(cell, featureName) {\n const ast = {type: \"Program\", body: [cell.body]};\n const features = new Map();\n const {references} = cell;\n\n simple(\n ast,\n {\n CallExpression: node => {\n const {callee, arguments: args} = node;\n\n // Ignore function calls that are not references to the feature.\n if (\n callee.type !== \"Identifier\" ||\n callee.name !== featureName ||\n references.indexOf(callee) < 0\n ) return;\n\n // Forbid dynamic calls.\n if (\n args.length !== 1 ||\n !((args[0].type === \"Literal\" && /^['\"]/.test(args[0].raw)) ||\n (args[0].type === \"TemplateLiteral\" && args[0].expressions.length === 0))\n ) {\n throw Object.assign(new SyntaxError(`${featureName} requires a single literal string argument`), {node});\n }\n\n const [arg] = args;\n const name = arg.type === \"Literal\" ? arg.value : arg.quasis[0].value.cooked;\n const location = {start: arg.start, end: arg.end};\n if (features.has(name)) features.get(name).push(location);\n else features.set(name, [location]);\n }\n },\n walk\n );\n\n return features;\n}\n","import {getLineInfo, TokContext, tokTypes as tt, Parser} from \"acorn\";\nimport defaultGlobals from \"./globals.js\";\nimport findReferences from \"./references.js\";\nimport findFeatures from \"./features.js\";\n\nconst SCOPE_FUNCTION = 2;\nconst SCOPE_ASYNC = 4;\nconst SCOPE_GENERATOR = 8;\n\nexport function parseCell(input, {tag, raw, globals, ...options} = {}) {\n let cell;\n // Parse empty input as JavaScript to keep ensure resulting ast\n // is consistent for all empty input cases.\n if (tag != null && input) {\n cell = TemplateCellParser.parse(input, options);\n const parsedTag = CellTagParser.parse(tag, options);\n parseReferences(parsedTag, tag, globals);\n parseFeatures(parsedTag, tag);\n cell.tag = parsedTag;\n cell.raw = !!raw;\n } else {\n cell = CellParser.parse(input, options);\n }\n parseReferences(cell, input, globals);\n parseFeatures(cell, input);\n return cell;\n}\n\nexport class CellParser extends Parser {\n constructor(options, ...args) {\n super(Object.assign({ecmaVersion: 13}, options), ...args);\n }\n enterScope(flags) {\n if (flags & SCOPE_FUNCTION) ++this.O_function;\n return super.enterScope(flags);\n }\n exitScope() {\n if (this.currentScope().flags & SCOPE_FUNCTION) --this.O_function;\n return super.exitScope();\n }\n parseForIn(node, init) {\n if (this.O_function === 1 && node.await) this.O_async = true;\n return super.parseForIn(node, init);\n }\n parseAwait() {\n if (this.O_function === 1) this.O_async = true;\n return super.parseAwait();\n }\n parseYield(noIn) {\n if (this.O_function === 1) this.O_generator = true;\n return super.parseYield(noIn);\n }\n parseImport(node) {\n this.next();\n node.specifiers = this.parseImportSpecifiers();\n if (this.type === tt._with) {\n this.next();\n node.injections = this.parseImportSpecifiers();\n }\n this.expectContextual(\"from\");\n node.source = this.type === tt.string ? this.parseExprAtom() : this.unexpected();\n return this.finishNode(node, \"ImportDeclaration\");\n }\n parseImportSpecifiers() {\n const nodes = [];\n const identifiers = new Set;\n let first = true;\n this.expect(tt.braceL);\n while (!this.eat(tt.braceR)) {\n if (first) {\n first = false;\n } else {\n this.expect(tt.comma);\n if (this.afterTrailingComma(tt.braceR)) break;\n }\n const node = this.startNode();\n node.view = this.eatContextual(\"viewof\");\n node.mutable = node.view ? false : this.eatContextual(\"mutable\");\n node.imported = this.parseIdent();\n this.checkUnreserved(node.imported);\n this.checkLocal(node.imported);\n if (this.eatContextual(\"as\")) {\n node.local = this.parseIdent();\n this.checkUnreserved(node.local);\n this.checkLocal(node.local);\n } else {\n node.local = node.imported;\n }\n this.checkLValSimple(node.local, \"let\");\n if (identifiers.has(node.local.name)) {\n this.raise(node.local.start, `Identifier '${node.local.name}' has already been declared`);\n }\n identifiers.add(node.local.name);\n nodes.push(this.finishNode(node, \"ImportSpecifier\"));\n }\n return nodes;\n }\n parseExprAtom(refDestructuringErrors) {\n return (\n this.parseMaybeKeywordExpression(\"viewof\", \"ViewExpression\") ||\n this.parseMaybeKeywordExpression(\"mutable\", \"MutableExpression\") ||\n super.parseExprAtom(refDestructuringErrors)\n );\n }\n startCell() {\n this.O_function = 0;\n this.O_async = false;\n this.O_generator = false;\n this.strict = true;\n this.enterScope(SCOPE_FUNCTION | SCOPE_ASYNC | SCOPE_GENERATOR);\n }\n finishCell(node, body, id) {\n if (id) this.checkLocal(id);\n node.id = id;\n node.body = body;\n node.async = this.O_async;\n node.generator = this.O_generator;\n this.exitScope();\n return this.finishNode(node, \"Cell\");\n }\n parseCell(node, eof) {\n const lookahead = new CellParser({}, this.input, this.start);\n let token = lookahead.getToken();\n let body = null;\n let id = null;\n\n this.startCell();\n\n // An import?\n if (token.type === tt._import && lookahead.getToken().type !== tt.parenL) {\n body = this.parseImport(this.startNode());\n }\n\n // A non-empty cell?\n else if (token.type !== tt.eof && token.type !== tt.semi) {\n // A named cell?\n if (token.type === tt.name) {\n if (token.value === \"viewof\" || token.value === \"mutable\") {\n token = lookahead.getToken();\n if (token.type !== tt.name) {\n lookahead.unexpected();\n }\n }\n token = lookahead.getToken();\n if (token.type === tt.eq) {\n id =\n this.parseMaybeKeywordExpression(\"viewof\", \"ViewExpression\") ||\n this.parseMaybeKeywordExpression(\"mutable\", \"MutableExpression\") ||\n this.parseIdent();\n token = lookahead.getToken();\n this.expect(tt.eq);\n }\n }\n\n // A block?\n if (token.type === tt.braceL) {\n body = this.parseBlock();\n }\n\n // An expression?\n // Possibly a function or class declaration?\n else {\n body = this.parseExpression();\n if (\n id === null &&\n (body.type === \"FunctionExpression\" ||\n body.type === \"ClassExpression\")\n ) {\n id = body.id;\n }\n }\n }\n\n this.semicolon();\n if (eof) this.expect(tt.eof); // TODO\n\n return this.finishCell(node, body, id);\n }\n parseTopLevel(node) {\n return this.parseCell(node, true);\n }\n toAssignable(node, isBinding, refDestructuringErrors) {\n return node.type === \"MutableExpression\"\n ? node\n : super.toAssignable(node, isBinding, refDestructuringErrors);\n }\n checkLocal(id) {\n const node = id.id || id;\n if (defaultGlobals.has(node.name) || node.name === \"arguments\") {\n this.raise(node.start, `Identifier '${node.name}' is reserved`);\n }\n }\n checkUnreserved(node) {\n if (node.name === \"viewof\" || node.name === \"mutable\") {\n this.raise(node.start, `Unexpected keyword '${node.name}'`);\n }\n return super.checkUnreserved(node);\n }\n checkLValSimple(expr, bindingType, checkClashes) {\n return super.checkLValSimple(\n expr.type === \"MutableExpression\" ? expr.id : expr,\n bindingType,\n checkClashes\n );\n }\n unexpected(pos) {\n this.raise(\n pos != null ? pos : this.start,\n this.type === tt.eof ? \"Unexpected end of input\" : \"Unexpected token\"\n );\n }\n parseMaybeKeywordExpression(keyword, type) {\n if (this.isContextual(keyword)) {\n const node = this.startNode();\n this.next();\n node.id = this.parseIdent();\n return this.finishNode(node, type);\n }\n }\n}\n\n// Based on acorn’s q_tmpl. We will use this to initialize the\n// parser context so our `readTemplateToken` override is called.\n// `readTemplateToken` is based on acorn's `readTmplToken` which\n// is used inside template literals. Our version allows backQuotes.\nconst o_tmpl = new TokContext(\n \"`\", // token\n true, // isExpr\n true, // preserveSpace\n parser => readTemplateToken.call(parser) // override\n);\n\nexport class TemplateCellParser extends CellParser {\n constructor(...args) {\n super(...args);\n // Initialize the type so that we're inside a backQuote\n this.type = tt.backQuote;\n this.exprAllowed = false;\n }\n initialContext() {\n // Provide our custom TokContext\n return [o_tmpl];\n }\n parseCell(node) {\n this.startCell();\n\n // Fix for nextToken calling finishToken(tt.eof)\n if (this.type === tt.eof) this.value = \"\";\n\n // Based on acorn.Parser.parseTemplate\n const isTagged = true;\n const body = this.startNode();\n body.expressions = [];\n let curElt = this.parseTemplateElement({isTagged});\n body.quasis = [curElt];\n while (this.type !== tt.eof) {\n this.expect(tt.dollarBraceL);\n body.expressions.push(this.parseExpression());\n this.expect(tt.braceR);\n body.quasis.push(curElt = this.parseTemplateElement({isTagged}));\n }\n curElt.tail = true;\n this.next();\n this.finishNode(body, \"TemplateLiteral\");\n\n this.expect(tt.eof);\n return this.finishCell(node, body, null);\n }\n}\n\n// This is our custom override for parsing a template that allows backticks.\n// Based on acorn's readInvalidTemplateToken.\nfunction readTemplateToken() {\n out: for (; this.pos < this.input.length; this.pos++) {\n switch (this.input.charCodeAt(this.pos)) {\n case 92: { // slash\n if (this.pos < this.input.length - 1) ++this.pos; // not a terminal slash\n break;\n }\n case 36: { // dollar\n if (this.input.charCodeAt(this.pos + 1) === 123) { // dollar curly\n if (this.pos === this.start && this.type === tt.invalidTemplate) {\n this.pos += 2;\n return this.finishToken(tt.dollarBraceL);\n }\n break out;\n }\n break;\n }\n }\n }\n return this.finishToken(tt.invalidTemplate, this.input.slice(this.start, this.pos));\n}\n\nexport class CellTagParser extends Parser {\n constructor(options, ...args) {\n super(Object.assign({ecmaVersion: 12}, options), ...args);\n }\n enterScope(flags) {\n if (flags & SCOPE_FUNCTION) ++this.O_function;\n return super.enterScope(flags);\n }\n exitScope() {\n if (this.currentScope().flags & SCOPE_FUNCTION) --this.O_function;\n return super.exitScope();\n }\n parseForIn(node, init) {\n if (this.O_function === 1 && node.await) this.O_async = true;\n return super.parseForIn(node, init);\n }\n parseAwait() {\n if (this.O_function === 1) this.O_async = true;\n return super.parseAwait();\n }\n parseYield(noIn) {\n if (this.O_function === 1) this.O_generator = true;\n return super.parseYield(noIn);\n }\n parseTopLevel(node) {\n this.O_function = 0;\n this.O_async = false;\n this.O_generator = false;\n this.strict = true;\n this.enterScope(SCOPE_FUNCTION | SCOPE_ASYNC | SCOPE_GENERATOR);\n node.body = this.parseExpression();\n node.input = this.input;\n node.async = this.O_async;\n node.generator = this.O_generator;\n this.exitScope();\n return this.finishNode(node, \"CellTag\");\n }\n}\n\n// Find references.\n// Check for illegal references to arguments.\n// Check for illegal assignments to global references.\nfunction parseReferences(cell, input, globals = defaultGlobals) {\n if (!cell.body) {\n cell.references = [];\n } else if (cell.body.type === \"ImportDeclaration\") {\n cell.references = cell.body.injections\n ? cell.body.injections.map(i => i.imported)\n : [];\n } else {\n try {\n cell.references = findReferences(cell, globals);\n } catch (error) {\n if (error.node) {\n const loc = getLineInfo(input, error.node.start);\n error.message += ` (${loc.line}:${loc.column})`;\n error.pos = error.node.start;\n error.loc = loc;\n delete error.node;\n }\n throw error;\n }\n }\n return cell;\n}\n\n// Find features: file attachments, secrets, database clients.\n// Check for illegal references to arguments.\n// Check for illegal assignments to global references.\nfunction parseFeatures(cell, input) {\n if (cell.body && cell.body.type !== \"ImportDeclaration\") {\n try {\n cell.fileAttachments = findFeatures(cell, \"FileAttachment\");\n cell.databaseClients = findFeatures(cell, \"DatabaseClient\");\n cell.secrets = findFeatures(cell, \"Secret\");\n cell.notificationClients = findFeatures(cell, \"NotificationClient\");\n } catch (error) {\n if (error.node) {\n const loc = getLineInfo(input, error.node.start);\n error.message += ` (${loc.line}:${loc.column})`;\n error.pos = error.node.start;\n error.loc = loc;\n delete error.node;\n }\n throw error;\n }\n } else {\n cell.fileAttachments = new Map();\n cell.databaseClients = new Map();\n cell.secrets = new Map();\n cell.notificationClients = new Map();\n }\n return cell;\n}\n","// Compare with ../../../node_modules/@observablehq/parser/src/parse.js\nimport { getLineInfo, tokTypes as tt } from \"acorn\";\nimport { parseCell as ohqParseCell, CellParser } from \"@observablehq/parser\";\nimport defaultGlobals from \"../../../node_modules/@observablehq/parser/src/globals.js\";\nimport findReferences from \"../../../node_modules/@observablehq/parser/src/references.js\";\nimport findFeatures from \"../../../node_modules/@observablehq/parser/src/features.js\";\n\n// Find references.\n// Check for illegal references to arguments.\n// Check for illegal assignments to global references.\nfunction parseReferences(cell, input, globals = defaultGlobals) {\n if (!cell.body) {\n cell.references = [];\n } else if (cell.body.type === \"ImportDeclaration\") {\n // This is correct?!?\n cell.references = cell.body.specifiers\n ? cell.body.specifiers.map(i => i.imported)\n : [];\n } else {\n try {\n cell.references = findReferences(cell, globals);\n } catch (error) {\n if (error.node) {\n const loc = getLineInfo(input, error.node.start);\n error.message += ` (${loc.line}:${loc.column})`;\n error.pos = error.node.start;\n error.loc = loc;\n delete error.node;\n }\n throw error;\n }\n }\n return cell;\n}\n\n// Find features: file attachments, secrets, database clients.\n// Check for illegal references to arguments.\n// Check for illegal assignments to global references.\nfunction parseFeatures(cell, input) {\n if (cell.body && cell.body.type !== \"ImportDeclaration\") {\n try {\n cell.fileAttachments = findFeatures(cell, \"FileAttachment\");\n cell.databaseClients = findFeatures(cell, \"DatabaseClient\");\n cell.secrets = findFeatures(cell, \"Secret\");\n } catch (error) {\n if (error.node) {\n const loc = getLineInfo(input, error.node.start);\n error.message += ` (${loc.line}:${loc.column})`;\n error.pos = error.node.start;\n error.loc = loc;\n delete error.node;\n }\n throw error;\n }\n } else {\n cell.fileAttachments = new Map();\n cell.databaseClients = new Map();\n cell.secrets = new Map();\n }\n return cell;\n}\n\nclass ModuleParser extends CellParser {\n\n parseTopLevel(node) {\n if (!node.cells) node.cells = [];\n // @ts-ignore\n while (this.type !== tt.eof) {\n // @ts-ignore\n const cell = this.parseCell(this.startNode());\n // @ts-ignore\n cell.input = this.input;\n node.cells.push(cell);\n }\n // @ts-ignore\n this.next();\n // @ts-ignore\n return this.finishNode(node, \"Program\");\n }\n}\n\n// @ts-ignore\nexport function parseModule(input, { globals } = {}) {\n // @ts-ignore\n const program = ModuleParser.parse(input, { ecmaVersion: 2020 });\n for (const cell of program.cells) {\n parseReferences(cell, input, globals);\n parseFeatures(cell, input);\n }\n return program;\n}\n\nexport interface Cell {\n text: string;\n start: number;\n end: number;\n}\n\nexport function splitModule(input: string): Cell[] {\n return (ModuleParser as any)\n .parse(input, { ecmaVersion: \"latest\" })\n .cells.map((cell: any) => ({\n text: input.substring(cell.start, cell.end),\n start: cell.start,\n end: cell.end\n }));\n}\n\nexport function parseCell(input: string) {\n return ohqParseCell(input);\n}\n\n","import type { ohq } from \"@hpcc-js/observable-shim\";\nimport { parseCell, splitModule } from \"@hpcc-js/observable-shim\";\n\nconst FuncTypes = {\n functionType: Object.getPrototypeOf(function () { }).constructor,\n asyncFunctionType: Object.getPrototypeOf(async function () { }).constructor,\n generatorFunctionType: Object.getPrototypeOf(function* () { }).constructor,\n asyncGeneratorFunctionType: Object.getPrototypeOf(async function* () { }).constructor\n};\n\nfunction funcType(async: boolean = false, generator: boolean = false) {\n if (!async && !generator) return FuncTypes.functionType;\n if (async && !generator) return FuncTypes.asyncFunctionType;\n if (!async && generator) return FuncTypes.generatorFunctionType;\n return FuncTypes.asyncGeneratorFunctionType;\n}\n\ninterface Ref {\n start: number,\n end: number,\n newText: string\n}\n\nexport interface Refs {\n inputs: string[];\n args: string[];\n patches: Ref[];\n}\n\nexport function createFunction(refs: Refs, async = false, generator = false, blockStatement = false, body?: string) {\n if (body === undefined) {\n return undefined;\n }\n\n refs.patches.sort((l, r) => r.start - l.start);\n refs.patches.forEach(r => {\n body = body!.substring(0, r.start) + r.newText + body!.substring(r.end);\n });\n return new (funcType(async, generator))(...refs.args, blockStatement ?\n body.substring(1, body.length - 1).trim() :\n `return (\\n${body}\\n);`);\n}\n\nfunction join(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, \"\") + \"/\" + relativeURL.replace(/^\\/+/, \"\")\n : baseURL;\n}\n\nexport const isRelativePath = (path: string) => path[0] === \".\";\nexport const fixRelativeUrl = (path: string, basePath: string) => {\n if (isRelativePath(path)) {\n return join(basePath, path);\n }\n return path;\n};\n\n// Hide \"import\" from bundlers as they have a habit of replacing \"import\" with \"require\"\nexport async function obfuscatedImport(url: string) {\n return new FuncTypes.asyncFunctionType(\"url\", \"return import(url)\")(url);\n}\n\ninterface ParsedOJS {\n ojs: string;\n offset: number;\n inlineMD: boolean;\n cell: any;\n error: any;\n}\n\nexport function encodeBacktick(str: string) {\n return str\n .split(\"`\").join(\"\\\\`\")\n ;\n}\n\nfunction createParsedOJS(ojs: string, offset: number, inlineMD: boolean): ParsedOJS {\n let cell;\n let error;\n try {\n cell = parseCell(ojs);\n } catch (e) {\n error = e;\n }\n return {\n ojs,\n offset,\n inlineMD,\n cell,\n error\n };\n}\n\nfunction splitOmd(_: string): ParsedOJS[] {\n const retVal: ParsedOJS[] = [];\n // Load Markdown ---\n const re = /(```(?:\\s|\\S)[\\s\\S]*?```)/g;\n let prevOffset = 0;\n let match = re.exec(_);\n while (match !== null) {\n if (match.index > prevOffset) {\n retVal.push(createParsedOJS(_.substring(prevOffset, match.index), prevOffset, true));\n }\n\n const outer = match[0];\n if (outer.indexOf(\"``` \") === 0 || outer.indexOf(\"```\\n\") === 0 || outer.indexOf(\"```\\r\\n\") === 0) {\n const prefixLen = 3;\n const inner = outer.substring(prefixLen, outer.length - prefixLen);\n retVal.push(createParsedOJS(inner, match.index + prefixLen, false));\n } else {\n retVal.push(createParsedOJS(outer, match.index, true));\n }\n\n prevOffset = match.index + match[0].length;\n match = re.exec(_);\n }\n if (_.length > prevOffset) {\n retVal.push(createParsedOJS(_.substring(prevOffset, _.length), prevOffset, true));\n }\n return retVal;\n}\n\nexport function notebook2ojs(_: string): ParsedOJS[] {\n const parsed: ohq.Notebook = JSON.parse(_);\n return parsed.nodes.map(node => createParsedOJS(node.value, 0, node.mode === \"md\"));\n}\n\nexport function ojs2notebook(ojs: string): ohq.Notebook {\n const cells = splitModule(ojs);\n return {\n files: [],\n nodes: cells.map((cell, idx) => {\n return {\n id: idx,\n mode: \"js\",\n value: cell.text,\n start: cell.start,\n end: cell.end\n };\n })\n } as ohq.Notebook;\n}\n\nexport function omd2notebook(omd: string): ohq.Notebook {\n const cells = splitOmd(omd);\n return {\n files: [],\n nodes: cells.map((cell, idx) => {\n return {\n id: idx,\n mode: cell.inlineMD ? \"md\" : \"js\",\n value: cell.ojs,\n start: cell.offset,\n end: cell.offset + cell.ojs.length\n };\n })\n } as ohq.Notebook;\n}\n\nexport function fetchEx(url: string, proxyPrefix = \"https://api.codetabs.com/v1/proxy/?quest=\", proxyPostfix = \"\") {\n const matches = url.match(/^(?:https?:\\/\\/)?(?:[^@\\n]+@)?(?:www\\.)?([^:\\/\\n?]+)/img);\n return fetch(url, { headers: { origin: matches[0], referer: url } }).then(response => {\n if (response.ok) return response;\n throw new Error(\"CORS?\");\n }).catch(e => {\n url = `${proxyPrefix}${url}${proxyPostfix}`;\n return fetch(url, { headers: { origin: matches[0], referer: url } });\n });\n}\n\nexport function download(impUrl: string, proxyPrefix?: string, proxyPostfix?: string): Promise<ohq.Notebook> {\n const isShared = impUrl.indexOf(\"https://observablehq.com/d\") === 0;\n return fetchEx(impUrl.replace(`https://observablehq.com/${isShared ? \"d/\" : \"\"}`, \"https://api.observablehq.com/document/\"), proxyPrefix, proxyPostfix)\n .then(r => r.json())\n ;\n}","import { parseCell as ohqParseCell, ancestor, walk } from \"@hpcc-js/observable-shim\";\nimport { fixRelativeUrl, createFunction, Refs } from \"./util\";\n\nfunction calcRefs(cellAst, cellStr): Refs {\n if (cellAst.references === undefined) return { inputs: [], args: [], patches: [] };\n\n const dedup = {};\n cellAst.references.forEach(r => dedup[cellStr.substring(r.start, r.end)] = true);\n const retVal: Refs = {\n inputs: Object.keys(dedup),\n args: Object.keys(dedup).map(r => r.split(\" \").join(\"_\")),\n patches: []\n };\n const pushPatch = (node, newText) => retVal.patches.push({ start: node.start - cellAst.body.start, end: node.end - cellAst.body.start, newText });\n if (cellAst.body) {\n ancestor(cellAst.body, {\n Identifier(node) {\n const value = cellStr.substring(node.start, node.end);\n if (dedup[value]) {\n }\n },\n MutableExpression(node) {\n const value = cellStr.substring(node.start, node.end);\n const newText = value.split(\" \").join(\"_\") + \".value\";\n pushPatch(node, newText);\n },\n ViewExpression(node) {\n const value = cellStr.substring(node.start, node.end);\n const newText = value.split(\" \").join(\"_\");\n pushPatch(node, newText);\n },\n ThisExpression(node, ancestors: acorn.Node[]) {\n const value = cellStr.substring(node.start, node.end);\n if (value === \"this\" && !ancestors.find(n => n.type === \"FunctionExpression\")) {\n pushPatch(node, \"((this === globalThis || this === globalThis.window)? undefined : this?.valueOf())\");\n }\n }\n }, walk);\n }\n return retVal;\n}\n\nexport interface ParsedCell {\n type: \"import\" | \"viewof\" | \"mutable\" | \"variable\" | \"identifier\"\n}\n\nexport interface ParsedImportCell extends ParsedCell {\n type: \"import\"\n src: string;\n specifiers: { view: boolean, name: string, alias?: string }[];\n injections: { name: string, alias: string }[];\n}\n\nfunction parseImportDeclaration(cellAst): ParsedImportCell {\n return {\n type: \"import\",\n src: cellAst.body.source.value,\n specifiers: cellAst.body.specifiers?.map(spec => {\n return {\n view: spec.view,\n name: spec.imported.name,\n alias: (spec.local?.name && spec.imported.name !== spec.local.name) ? spec.local.name : spec.imported.name\n };\n }) ?? [],\n injections: cellAst.body.injections?.map(inj => {\n return {\n name: inj.imported.name,\n alias: inj.local?.name ?? inj.imported.name\n };\n }) ?? [],\n };\n}\n\nexport interface ParsedVariable extends ParsedCell {\n type: \"variable\"\n id?: string,\n inputs: string[],\n func: any,\n}\n\nexport interface ParsedViewCell extends ParsedCell {\n type: \"viewof\",\n variable: ParsedVariable;\n variableValue: ParsedVariable;\n}\n\nfunction parseViewExpression(cellStr: string, cellAst, refs: Refs, bodyStr?: string): ParsedViewCell {\n const id = cellAst.id && cellStr.substring(cellAst.id.start, cellAst.id.end);\n return {\n type: \"viewof\",\n variable: {\n type: \"variable\",\n id,\n inputs: refs.inputs,\n func: createFunction(refs, cellAst.async, cellAst.generator, cellAst.body.type === \"BlockStatement\", bodyStr)\n },\n variableValue: {\n type: \"variable\",\n id: cellAst?.id?.id?.name,\n inputs: [\"Generators\", id],\n func: (G, _) => G.input(_)\n }\n };\n}\n\ninterface ParsedMutableCell extends ParsedCell {\n type: \"mutable\",\n initial: ParsedVariable;\n variable: ParsedVariable;\n variableValue: ParsedVariable;\n}\n\nfunction parseMutableExpression(cellStr: string, cellAst, refs: Refs, bodyStr?: string): ParsedMutableCell {\n const id = cellAst.id && cellStr.substring(cellAst.id.start, cellAst.id.end);\n const initialValueId = cellAst?.id?.id?.name;\n const initialId = `initial ${initialValueId}`;\n return {\n type: \"mutable\",\n initial: {\n type: \"variable\",\n id: initialId,\n inputs: refs.inputs,\n func: createFunction(refs, cellAst.async, cellAst.generator, cellAst.body.type === \"BlockStatement\", bodyStr)\n },\n variable: {\n type: \"variable\",\n id,\n inputs: [\"Mutable\", initialId],\n func: (M, _) => new M(_)\n },\n variableValue: {\n type: \"variable\",\n id: initialValueId,\n inputs: [id],\n func: _ => _.generator\n }\n };\n}\n\ninterface ParsedVariableCell extends ParsedCell {\n type: \"variable\",\n id: string,\n inputs: string[],\n func: any,\n}\n\nfunction parseVariableExpression(cellStr: string, cellAst, refs: Refs, bodyStr?: string): ParsedVariableCell {\n return {\n type: \"variable\",\n id: cellAst.id && cellStr.substring(cellAst.id?.start, cellAst.id?.end),\n inputs: refs.inputs,\n func: createFunction(refs, cellAst.async, cellAst.generator, cellAst.body.type === \"BlockStatement\", bodyStr)\n };\n}\n\nexport function parseCell(cellStr: string, baseUrl: string): ParsedImportCell | ParsedViewCell | ParsedMutableCell | ParsedVariableCell {\n const cellAst = ohqParseCell(cellStr);\n let bodyStr = cellAst.body && cellStr.substring(cellAst.body.start, cellAst.body.end);\n switch ((cellAst.body)?.type) {\n case \"ImportDeclaration\":\n return parseImportDeclaration(cellAst);\n case \"ImportExpression\":\n bodyStr = `import(\"${fixRelativeUrl(cellAst.body.source.value, baseUrl)}\")`;\n }\n const refs = calcRefs(cellAst, cellStr);\n\n switch (cellAst.id?.type) {\n case \"ViewExpression\":\n return parseViewExpression(cellStr, cellAst, refs, bodyStr);\n case \"MutableExpression\":\n return parseMutableExpression(cellStr, cellAst, refs, bodyStr);\n default:\n return parseVariableExpression(cellStr, cellAst, refs, bodyStr);\n }\n}\n","import { ohq } from \"@hpcc-js/observable-shim\";\nimport { ParsedImportCell, ParsedVariable } from \"./cst\";\n\nexport class Writer {\n\n protected _files: ohq.File[] = [];\n protected _imports: string[] = [];\n protected _functions: string[] = [];\n protected _defines: string[] = [];\n protected _defineUid = 0;\n protected _functionUid = 0;\n\n constructor() {\n }\n\n toString() {\n return `\\\n${this._imports.join(\"\\n\")}\n\n${this._functions.join(\"\\n\").split(\"\\n) {\").join(\"){\")}\n\nexport default function define(runtime, observer) {\n const main = runtime.module();\n\n function toString() { return this.url; }\n const fileAttachments = new Map([\n ${this._files.map(f => `[\"${f.name}\", { url: new URL(\"${f.url}\"), mimeType: ${JSON.stringify(f.mime_type)}, toString }]`).join(\",\\n \")}\n ]);\n main.builtin(\"FileAttachment\", runtime.fileAttachments(name => fileAttachments.get(name)));\n\n ${this._defines.join(\"\\n \")}\n\n return main;\n}\\n`;\n }\n\n files(files: ohq.File[]) {\n this._files = [...this._files, ...files];\n }\n\n import(url: string) {\n this._imports.push(`import define${++this._defineUid} from \"${url}\"; `);\n }\n\n importDefine(imp: Partial<ParsedImportCell>) {\n const injections = imp.injections.map(inj => {\n return inj.name === inj.alias ?\n `\"${inj.name}\"` :\n `{name: \"${inj.name}\", alias: \"${inj.alias}\"}`;\n });\n const derive = imp.injections.length ? `.derive([${injections.join(\", \")}], main)` : \"\";\n this._defines.push(`const child${this._defineUid} = runtime.module(define${this._defineUid})${derive};`);\n imp.specifiers.forEach(s => {\n this._defines.push(`main.import(\"${s.name}\"${s.alias && s.alias !== s.name ? `, \"${s.alias}\"` : \"\"}, child${this._defineUid}); `);\n });\n }\n\n function(variable: Partial<ParsedVariable>) {\n let id = variable.id ?? `${++this._functionUid}`;\n const idParts = id.split(\" \");\n id = `_${idParts[idParts.length - 1]}`;\n this._functions.push(`${variable.func?.toString()?.replace(\"anonymous\", `${id}`)}`);\n return id;\n }\n\n define(variable: Partial<ParsedVariable>, observable = true, inlineFunc = false, funcId?: string) {\n funcId = funcId ?? variable.id;\n const observe = observable ? `.variable(observer(${variable.id ? JSON.stringify(variable.id) : \"\"}))` : \"\";\n const id = variable.id ? `${JSON.stringify(variable.id)}, ` : \"\";\n const inputs = variable.inputs.length ? `[${variable.inputs.map(i => JSON.stringify(i)).join(\", \")}], ` : \"\";\n const func = inlineFunc ?\n variable.func?.toString() :\n funcId;\n this._defines.push(`main${observe}.define(${id}${inputs}${func});`);\n }\n\n error(msg: string) {\n }\n}\n\n","import { ohq, splitModule } from \"@hpcc-js/observable-shim\";\nimport { parseCell, ParsedImportCell } from \"./cst\";\nimport { Writer } from \"./writer\";\nimport { fixRelativeUrl, isRelativePath, encodeBacktick, fetchEx, obfuscatedImport, ojs2notebook, omd2notebook } from \"./util\";\n\n// Inspector Factory ---\nexport type InspectorFactoryEx = (name: string | undefined, id: string | number) => Inspector;\n\nexport interface Inspector {\n _node?: HTMLDivElement;\n pending();\n fulfilled(value);\n rejected(error);\n}\n\n// Module ---\n\ninterface ImportDefine {\n (runtime: ohq.Runtime, inspector?: InspectorFactoryEx): ohq.Module;\n delete: () => void;\n write: (w: Writer) => void;\n}\n\nasync function importFile(relativePath: string, baseUrl: string) {\n const path = fixRelativeUrl(relativePath, baseUrl);\n const content = await fetchEx(path).then(r => r.text());\n let notebook: ohq.Notebook;\n if (relativePath.endsWith(\".ojsnb\")) {\n notebook = JSON.parse(content);\n } else if (relativePath.endsWith(\".ojs\")) {\n notebook = ojs2notebook(content);\n } else if (relativePath.endsWith(\".omd\")) {\n notebook = omd2notebook(content);\n }\n const retVal: ImportDefine = compile(notebook, { baseUrl }) as any;\n retVal.delete = () => { };\n retVal.write = (w: Writer) => {\n w.import(path);\n };\n return retVal;\n}\n\n// Import precompiled notebook from observable ---\nasync function importCompiledNotebook(partial: string) {\n const url = `https://api.observablehq.com/${partial[0] === \"@\" ? partial : `d/${partial}`}.js?v=3`;\n let impMod = {\n default: function (runtime: ohq.Runtime, inspector?: InspectorFactoryEx): ohq.Module {\n return undefined;\n } as any\n };\n try {\n impMod = await obfuscatedImport(url);\n } catch (e) {\n }\n const retVal: ImportDefine = impMod.default;\n retVal.delete = () => { };\n retVal.write = (w: Writer) => {\n w.import(url);\n };\n return retVal;\n}\n\n// Recursive notebook parsing and compiling\nasync function importNotebook(partial: string) {\n const url = `https://api.observablehq.com/document/${partial}`;\n const notebook = fetchEx(url)\n .then(r => {\n return r.json();\n }).catch(e => {\n console.error(url);\n console.error(e);\n });\n const retVal: ImportDefine = compile(await notebook) as any;\n retVal.delete = () => { };\n retVal.write = (w: Writer) => {\n w.import(url);\n };\n return retVal;\n}\n\nasync function createModule(node: ohq.Node, parsed: ParsedImportCell, text: string, { baseUrl, importMode }: CompileOptions) {\n const otherModule = isRelativePath(parsed.src) ?\n await importFile(parsed.src, baseUrl) :\n importMode === \"recursive\" ?\n await importNotebook(parsed.src) :\n await importCompiledNotebook(parsed.src);\n\n const importVariables: ImportVariableFunc[] = [];\n const variables: VariableFunc[] = [];\n parsed.specifiers.forEach(spec => {\n const viewof = spec.view ? \"viewof \" : \"\";\n importVariables.push(createImportVariable(viewof + spec.name, viewof + spec.alias));\n if (spec.view) {\n importVariables.push(createImportVariable(spec.name, spec.alias));\n }\n });\n\n const retVal = (runtime: ohq.Runtime, main: ohq.Module, inspector?: InspectorFactoryEx) => {\n\n let mod = runtime.module(otherModule);\n if (parsed.injections.length) {\n mod = mod.derive(parsed.injections, main);\n }\n variables.forEach(v => v(main, inspector));\n importVariables.forEach(v => v(main, mod));\n return mod;\n };\n retVal.importVariables = importVariables;\n retVal.variables = variables;\n retVal.delete = () => {\n importVariables.forEach(v => v.delete());\n variables.forEach(v => v.delete());\n otherModule.delete();\n };\n retVal.write = (w: Writer) => {\n otherModule.write(w);\n w.importDefine(parsed);\n };\n return retVal;\n}\ntype ModuleFunc = Awaited<ReturnType<typeof createModule>>;\n\n// Variable ---\nfunction createVariable(node: ohq.Node, inspect: boolean, name?: string, inputs?: string[], definition?: any, inline = false) {\n\n let i: ohq.Inspector;\n let v: ohq.Variable;\n\n const retVal = (module: ohq.Module, inspector?: InspectorFactoryEx) => {\n i = inspect ? inspector(name, node.id) : undefined;\n v = module.variable(i);\n if (arguments.length > 1) {\n try {\n v.define(name, inputs, definition);\n } catch (e: any) {\n console.error(e?.message);\n }\n }\n if (node.pinned) {\n v = module.variable(inspector(name, node.id));\n try {\n v.define(undefined, [\"md\"], md => {\n return md`\\`\\`\\`js\n${node.value}\n\\`\\`\\``;\n });\n } catch (e: any) {\n console.error(e?.message);\n }\n }\n return v;\n };\n retVal.delete = () => {\n try {\n i?._node?.remove();\n } catch (e) {\n }\n i = undefined;\n try {\n v?.delete();\n } catch (e) {\n }\n v = undefined;\n };\n retVal.write = (w: Writer) => {\n if (inline) {\n w.define({ id: name, inputs, func: definition }, inspect, true);\n } else {\n const id = w.function({ id: name, func: definition });\n w.define({ id: name, inputs, func: definition }, inspect, false, id);\n }\n };\n return retVal;\n}\ntype VariableFunc = ReturnType<typeof createVariable>;\n\nfunction createImportVariable(name?: string, alias?: string) {\n\n let v: ohq.Variable;\n\n const retVal = (main: ohq.Module, otherModule: ohq.Module) => {\n v = main.variable();\n v.import(name, alias, otherModule);\n };\n\n retVal.delete = () => {\n v?.delete();\n };\n return retVal;\n}\ntype ImportVariableFunc = ReturnType<typeof createImportVariable>;\n\n// Cell ---\nasync function createCell(node: ohq.Node, options: CompileOptions) {\n const modules: ModuleFunc[] = [];\n const variables: VariableFunc[] = [];\n try {\n const text = node.mode && node.mode !== \"js\" ? `${node.mode}\\`${encodeBacktick(node.value)}\\`` : node.value;\n const parsedModule = splitModule(text);\n for (const cell of parsedModule) {\n const parsed = parseCell(cell.text, options.baseUrl);\n switch (parsed.type) {\n case \"import\":\n modules.push(await createModule(node, parsed, cell.text, options));\n break;\n case \"viewof\":\n variables.push(createVariable(node, true, parsed.variable.id, parsed.variable.inputs, parsed.variable.func));\n variables.push(createVariable(node, false, parsed.variableValue.id, parsed.variableValue.inputs, parsed.variableValue.func, true));\n break;\n case \"mutable\":\n variables.push(createVariable(node, false, parsed.initial.id, parsed.initial.inputs, parsed.initial.func));\n variables.push(createVariable(node, false, parsed.variable.id, parsed.variable.inputs, parsed.variable.func));\n variables.push(createVariable(node, true, parsed.variableValue.id, parsed.variableValue.inputs, parsed.variableValue.func, true));\n break;\n case \"variable\":\n variables.push(createVariable(node, true, parsed.id, parsed.inputs, parsed.func));\n break;\n }\n }\n } catch (e) {\n variables.push(createVariable(node, true, undefined, [], e.message));\n }\n\n const retVal = (runtime: ohq.Runtime, main: ohq.Module, inspector?: InspectorFactoryEx) => {\n modules.forEach(imp => imp(runtime, main, inspector));\n variables.forEach(v => v(main, inspector));\n };\n retVal.id = node.id;\n retVal.modules = modules;\n retVal.variables = variables;\n retVal.delete = () => {\n variables.forEach(v => v.delete());\n modules.forEach(mod => mod.delete());\n };\n retVal.write = (w: Writer) => {\n modules.forEach(imp => imp.write(w));\n variables.forEach(v => v.write(w));\n };\n return retVal;\n}\nexport type CellFunc = Awaited<ReturnType<typeof createCell>>;\n\n// File ---\nfunction createFile(file: ohq.File, options: CompileOptions): [string, any] {\n function toString() { return globalThis.url; }\n return [file.name, { url: new URL(fixRelativeUrl(file.url, options.baseUrl)), mimeType: file.mime_type, toString }];\n}\ntype FileFunc = ReturnType<typeof createFile>;\n\n// Interpret ---\nexport interface CompileOptions {\n baseUrl?: string;\n importMode?: \"recursive\" | \"precompiled\";\n}\nexport function notebook(_files: ohq.File[] = [], _cells: CellFunc[] = [], { baseUrl = \".\", importMode = \"precompiled\" }: CompileOptions = {}) {\n const files: FileFunc[] = _files.map(f => createFile(f, { baseUrl, importMode }));\n const fileAttachments = new Map<string, any>(files);\n const cells = new Map<string | number, CellFunc>(_cells.map(c => [c.id, c]));\n\n const retVal = (runtime: ohq.Runtime, inspector?: InspectorFactoryEx): ohq.Module => {\n const main = runtime.module();\n main.builtin(\"FileAttachment\", runtime.fileAttachments(name => {\n return fileAttachments.get(name) ?? { url: new URL(fixRelativeUrl(name, baseUrl)), mimeType: null };\n }));\n main.builtin(\"fetchEx\", fetchEx);\n\n cells.forEach(cell => {\n cell(runtime, main, inspector);\n });\n return main;\n };\n retVal.fileAttachments = fileAttachments;\n retVal.cells = cells;\n retVal.set = async (n: ohq.Node): Promise<CellFunc> => {\n const cell = await createCell(n, { baseUrl, importMode });\n retVal.delete(cell.id);\n cells.set(cell.id, cell);\n return cell;\n };\n retVal.get = (id: string | number): CellFunc => {\n return cells.get(id);\n };\n retVal.delete = (id: string | number): boolean => {\n const cell = cells.get(id);\n if (cell) {\n cell.delete();\n return cells.delete(id);\n }\n return false;\n };\n retVal.clear = () => {\n cells.forEach(cell => cell.delete());\n cells.clear();\n };\n retVal.write = (w: Writer) => {\n w.files(_files);\n cells.forEach(cell => cell.write(w));\n };\n retVal.toString = (w = new Writer()) => {\n retVal.write(w);\n return w.toString().trim();\n };\n return retVal;\n}\n\nexport async function compile(notebookOrOjs: ohq.Notebook | string, { baseUrl = \".\", importMode = \"precompiled\" }: CompileOptions = {}) {\n const ojsNotebook = typeof notebookOrOjs === \"string\" ? ojs2notebook(notebookOrOjs) : notebookOrOjs;\n const _cells: CellFunc[] = await Promise.all(ojsNotebook.nodes.map(n => createCell(n, { baseUrl, importMode })));\n return notebook(ojsNotebook.files, _cells, { baseUrl, importMode });\n}\nexport type compileFunc = Awaited<ReturnType<typeof compile>>;\n"],"names":["SCOPE_FUNCTION","SCOPE_ASYNC","SCOPE_GENERATOR","parseCell","parseReferences","parseFeatures","tt","ohqParseCell"],"mappings":"AAAA;AACA,IAAI,qBAAqB,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;AAC7hC;AACA;AACA,IAAI,0BAA0B,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI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"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../../../node_modules/acorn/dist/acorn.mjs","../../../node_modules/@observablehq/parser/src/globals.js","../../../node_modules/acorn-walk/dist/walk.mjs","../../../node_modules/@observablehq/parser/src/walk.js","../../../node_modules/@observablehq/parser/src/references.js","../../../node_modules/@observablehq/parser/src/features.js","../../../node_modules/@observablehq/parser/src/parse.js","../../observable-shim/src/parse.ts","../src/util.ts","../src/cst.ts","../src/writer.ts","../src/compiler.ts"],"sourcesContent":["// This file was generated. Do not modify manually!\nvar astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 81, 2, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 9, 5351, 0, 7, 14, 13835, 9, 87, 9, 39, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4706, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 983, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];\n\n// This file was generated. Do not modify manually!\nvar astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 68, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 4026, 582, 8634, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 757, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 4191];\n\n// This file was generated. Do not modify manually!\nvar nonASCIIidentifierChars = \"\\u200c\\u200d\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0898-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0cf3\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ece\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1ace\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\u30fb\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\\uff65\";\n\n// This file was generated. Do not modify manually!\nvar nonASCIIidentifierStartChars = \"\\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\\u0870-\\u0887\\u0889-\\u088e\\u08a0-\\u08c9\\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\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\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-\\u1711\\u171f-\\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-\\u1b4c\\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-\\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-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7ca\\ua7d0\\ua7d1\\ua7d3\\ua7d5-\\ua7d9\\ua7f2-\\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-\\uab69\\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\";\n\n// These are a run-length and offset encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range.\n\n// Reserved word lists for various dialects of the language\n\nvar reservedWords = {\n 3: \"abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile\",\n 5: \"class enum extends super const export import\",\n 6: \"enum\",\n strict: \"implements interface let package private protected public static yield\",\n strictBind: \"eval arguments\"\n};\n\n// And the keywords\n\nvar ecma5AndLessKeywords = \"break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this\";\n\nvar keywords$1 = {\n 5: ecma5AndLessKeywords,\n \"5module\": ecma5AndLessKeywords + \" export import\",\n 6: ecma5AndLessKeywords + \" const class extends export import super\"\n};\n\nvar keywordRelationalOperator = /^in(stanceof)?$/;\n\n// ## Character categories\n\nvar nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\");\nvar nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\");\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code, set) {\n var pos = 0x10000;\n for (var i = 0; i < set.length; i += 2) {\n pos += set[i];\n if (pos > code) { return false }\n pos += set[i + 1];\n if (pos >= code) { return true }\n }\n return false\n}\n\n// Test whether a given character code starts an identifier.\n\nfunction isIdentifierStart(code, astral) {\n if (code < 65) { return code === 36 }\n if (code < 91) { return true }\n if (code < 97) { return code === 95 }\n if (code < 123) { return true }\n if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)) }\n if (astral === false) { return false }\n return isInAstralSet(code, astralIdentifierStartCodes)\n}\n\n// Test whether a given character is part of an identifier.\n\nfunction isIdentifierChar(code, astral) {\n if (code < 48) { return code === 36 }\n if (code < 58) { return true }\n if (code < 65) { return false }\n if (code < 91) { return true }\n if (code < 97) { return code === 95 }\n if (code < 123) { return true }\n if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)) }\n if (astral === false) { return false }\n return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes)\n}\n\n// ## Token types\n\n// The assignment of fine-grained, information-carrying type objects\n// allows the tokenizer to store the information it has about a\n// token in a way that is very cheap for the parser to look up.\n\n// All token type variables start with an underscore, to make them\n// easy to recognize.\n\n// The `beforeExpr` property is used to disambiguate between regular\n// expressions and divisions. It is set on all token types that can\n// be followed by an expression (thus, a slash after them would be a\n// regular expression).\n//\n// The `startsExpr` property is used to check if the token ends a\n// `yield` expression. It is set on all token types that either can\n// directly start an expression (like a quotation mark) or can\n// continue an expression (like the body of a string).\n//\n// `isLoop` marks a keyword as starting a loop, which is important\n// to know when parsing a label, in order to allow or disallow\n// continue jumps to that label.\n\nvar TokenType = function TokenType(label, conf) {\n if ( conf === void 0 ) conf = {};\n\n this.label = label;\n this.keyword = conf.keyword;\n this.beforeExpr = !!conf.beforeExpr;\n this.startsExpr = !!conf.startsExpr;\n this.isLoop = !!conf.isLoop;\n this.isAssign = !!conf.isAssign;\n this.prefix = !!conf.prefix;\n this.postfix = !!conf.postfix;\n this.binop = conf.binop || null;\n this.updateContext = null;\n};\n\nfunction binop(name, prec) {\n return new TokenType(name, {beforeExpr: true, binop: prec})\n}\nvar beforeExpr = {beforeExpr: true}, startsExpr = {startsExpr: true};\n\n// Map keyword names to token types.\n\nvar keywords = {};\n\n// Succinct definitions of keyword token types\nfunction kw(name, options) {\n if ( options === void 0 ) options = {};\n\n options.keyword = name;\n return keywords[name] = new TokenType(name, options)\n}\n\nvar types$1 = {\n num: new TokenType(\"num\", startsExpr),\n regexp: new TokenType(\"regexp\", startsExpr),\n string: new TokenType(\"string\", startsExpr),\n name: new TokenType(\"name\", startsExpr),\n privateId: new TokenType(\"privateId\", startsExpr),\n eof: new TokenType(\"eof\"),\n\n // Punctuation token types.\n bracketL: new TokenType(\"[\", {beforeExpr: true, startsExpr: true}),\n bracketR: new TokenType(\"]\"),\n braceL: new TokenType(\"{\", {beforeExpr: true, startsExpr: true}),\n braceR: new TokenType(\"}\"),\n parenL: new TokenType(\"(\", {beforeExpr: true, startsExpr: true}),\n parenR: new TokenType(\")\"),\n comma: new TokenType(\",\", beforeExpr),\n semi: new TokenType(\";\", beforeExpr),\n colon: new TokenType(\":\", beforeExpr),\n dot: new TokenType(\".\"),\n question: new TokenType(\"?\", beforeExpr),\n questionDot: new TokenType(\"?.\"),\n arrow: new TokenType(\"=>\", beforeExpr),\n template: new TokenType(\"template\"),\n invalidTemplate: new TokenType(\"invalidTemplate\"),\n ellipsis: new TokenType(\"...\", beforeExpr),\n backQuote: new TokenType(\"`\", startsExpr),\n dollarBraceL: new TokenType(\"${\", {beforeExpr: true, startsExpr: true}),\n\n // Operators. These carry several kinds of properties to help the\n // parser use them properly (the presence of these properties is\n // what categorizes them as operators).\n //\n // `binop`, when present, specifies that this operator is a binary\n // operator, and will refer to its precedence.\n //\n // `prefix` and `postfix` mark the operator as a prefix or postfix\n // unary operator.\n //\n // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as\n // binary operators with a very low precedence, that should result\n // in AssignmentExpression nodes.\n\n eq: new TokenType(\"=\", {beforeExpr: true, isAssign: true}),\n assign: new TokenType(\"_=\", {beforeExpr: true, isAssign: true}),\n incDec: new TokenType(\"++/--\", {prefix: true, postfix: true, startsExpr: true}),\n prefix: new TokenType(\"!/~\", {beforeExpr: true, prefix: true, startsExpr: true}),\n logicalOR: binop(\"||\", 1),\n logicalAND: binop(\"&&\", 2),\n bitwiseOR: binop(\"|\", 3),\n bitwiseXOR: binop(\"^\", 4),\n bitwiseAND: binop(\"&\", 5),\n equality: binop(\"==/!=/===/!==\", 6),\n relational: binop(\"</>/<=/>=\", 7),\n bitShift: binop(\"<</>>/>>>\", 8),\n plusMin: new TokenType(\"+/-\", {beforeExpr: true, binop: 9, prefix: true, startsExpr: true}),\n modulo: binop(\"%\", 10),\n star: binop(\"*\", 10),\n slash: binop(\"/\", 10),\n starstar: new TokenType(\"**\", {beforeExpr: true}),\n coalesce: binop(\"??\", 1),\n\n // Keyword token types.\n _break: kw(\"break\"),\n _case: kw(\"case\", beforeExpr),\n _catch: kw(\"catch\"),\n _continue: kw(\"continue\"),\n _debugger: kw(\"debugger\"),\n _default: kw(\"default\", beforeExpr),\n _do: kw(\"do\", {isLoop: true, beforeExpr: true}),\n _else: kw(\"else\", beforeExpr),\n _finally: kw(\"finally\"),\n _for: kw(\"for\", {isLoop: true}),\n _function: kw(\"function\", startsExpr),\n _if: kw(\"if\"),\n _return: kw(\"return\", beforeExpr),\n _switch: kw(\"switch\"),\n _throw: kw(\"throw\", beforeExpr),\n _try: kw(\"try\"),\n _var: kw(\"var\"),\n _const: kw(\"const\"),\n _while: kw(\"while\", {isLoop: true}),\n _with: kw(\"with\"),\n _new: kw(\"new\", {beforeExpr: true, startsExpr: true}),\n _this: kw(\"this\", startsExpr),\n _super: kw(\"super\", startsExpr),\n _class: kw(\"class\", startsExpr),\n _extends: kw(\"extends\", beforeExpr),\n _export: kw(\"export\"),\n _import: kw(\"import\", startsExpr),\n _null: kw(\"null\", startsExpr),\n _true: kw(\"true\", startsExpr),\n _false: kw(\"false\", startsExpr),\n _in: kw(\"in\", {beforeExpr: true, binop: 7}),\n _instanceof: kw(\"instanceof\", {beforeExpr: true, binop: 7}),\n _typeof: kw(\"typeof\", {beforeExpr: true, prefix: true, startsExpr: true}),\n _void: kw(\"void\", {beforeExpr: true, prefix: true, startsExpr: true}),\n _delete: kw(\"delete\", {beforeExpr: true, prefix: true, startsExpr: true})\n};\n\n// Matches a whole line break (where CRLF is considered a single\n// line break). Used to count lines.\n\nvar lineBreak = /\\r\\n?|\\n|\\u2028|\\u2029/;\nvar lineBreakG = new RegExp(lineBreak.source, \"g\");\n\nfunction isNewLine(code) {\n return code === 10 || code === 13 || code === 0x2028 || code === 0x2029\n}\n\nfunction nextLineBreak(code, from, end) {\n if ( end === void 0 ) end = code.length;\n\n for (var i = from; i < end; i++) {\n var next = code.charCodeAt(i);\n if (isNewLine(next))\n { return i < end - 1 && next === 13 && code.charCodeAt(i + 1) === 10 ? i + 2 : i + 1 }\n }\n return -1\n}\n\nvar nonASCIIwhitespace = /[\\u1680\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]/;\n\nvar skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g;\n\nvar ref = Object.prototype;\nvar hasOwnProperty = ref.hasOwnProperty;\nvar toString = ref.toString;\n\nvar hasOwn = Object.hasOwn || (function (obj, propName) { return (\n hasOwnProperty.call(obj, propName)\n); });\n\nvar isArray = Array.isArray || (function (obj) { return (\n toString.call(obj) === \"[object Array]\"\n); });\n\nvar regexpCache = Object.create(null);\n\nfunction wordsRegexp(words) {\n return regexpCache[words] || (regexpCache[words] = new RegExp(\"^(?:\" + words.replace(/ /g, \"|\") + \")$\"))\n}\n\nfunction codePointToString(code) {\n // UTF-16 Decoding\n if (code <= 0xFFFF) { return String.fromCharCode(code) }\n code -= 0x10000;\n return String.fromCharCode((code >> 10) + 0xD800, (code & 1023) + 0xDC00)\n}\n\nvar loneSurrogate = /(?:[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/;\n\n// These are used when `options.locations` is on, for the\n// `startLoc` and `endLoc` properties.\n\nvar Position = function Position(line, col) {\n this.line = line;\n this.column = col;\n};\n\nPosition.prototype.offset = function offset (n) {\n return new Position(this.line, this.column + n)\n};\n\nvar SourceLocation = function SourceLocation(p, start, end) {\n this.start = start;\n this.end = end;\n if (p.sourceFile !== null) { this.source = p.sourceFile; }\n};\n\n// The `getLineInfo` function is mostly useful when the\n// `locations` option is off (for performance reasons) and you\n// want to find the line/column position for a given character\n// offset. `input` should be the code string that the offset refers\n// into.\n\nfunction getLineInfo(input, offset) {\n for (var line = 1, cur = 0;;) {\n var nextBreak = nextLineBreak(input, cur, offset);\n if (nextBreak < 0) { return new Position(line, offset - cur) }\n ++line;\n cur = nextBreak;\n }\n}\n\n// A second argument must be given to configure the parser process.\n// These options are recognized (only `ecmaVersion` is required):\n\nvar defaultOptions = {\n // `ecmaVersion` indicates the ECMAScript version to parse. Must be\n // either 3, 5, 6 (or 2015), 7 (2016), 8 (2017), 9 (2018), 10\n // (2019), 11 (2020), 12 (2021), 13 (2022), 14 (2023), or `\"latest\"`\n // (the latest version the library supports). This influences\n // support for strict mode, the set of reserved words, and support\n // for new syntax features.\n ecmaVersion: null,\n // `sourceType` indicates the mode the code should be parsed in.\n // Can be either `\"script\"` or `\"module\"`. This influences global\n // strict mode and parsing of `import` and `export` declarations.\n sourceType: \"script\",\n // `onInsertedSemicolon` can be a callback that will be called when\n // a semicolon is automatically inserted. It will be passed the\n // position of the inserted semicolon as an offset, and if\n // `locations` is enabled, it is given the location as a `{line,\n // column}` object as second argument.\n onInsertedSemicolon: null,\n // `onTrailingComma` is similar to `onInsertedSemicolon`, but for\n // trailing commas.\n onTrailingComma: null,\n // By default, reserved words are only enforced if ecmaVersion >= 5.\n // Set `allowReserved` to a boolean value to explicitly turn this on\n // an off. When this option has the value \"never\", reserved words\n // and keywords can also not be used as property names.\n allowReserved: null,\n // When enabled, a return at the top level is not considered an\n // error.\n allowReturnOutsideFunction: false,\n // When enabled, import/export statements are not constrained to\n // appearing at the top of the program, and an import.meta expression\n // in a script isn't considered an error.\n allowImportExportEverywhere: false,\n // By default, await identifiers are allowed to appear at the top-level scope only if ecmaVersion >= 2022.\n // When enabled, await identifiers are allowed to appear at the top-level scope,\n // but they are still not allowed in non-async functions.\n allowAwaitOutsideFunction: null,\n // When enabled, super identifiers are not constrained to\n // appearing in methods and do not raise an error when they appear elsewhere.\n allowSuperOutsideMethod: null,\n // When enabled, hashbang directive in the beginning of file is\n // allowed and treated as a line comment. Enabled by default when\n // `ecmaVersion` >= 2023.\n allowHashBang: false,\n // By default, the parser will verify that private properties are\n // only used in places where they are valid and have been declared.\n // Set this to false to turn such checks off.\n checkPrivateFields: true,\n // When `locations` is on, `loc` properties holding objects with\n // `start` and `end` properties in `{line, column}` form (with\n // line being 1-based and column 0-based) will be attached to the\n // nodes.\n locations: false,\n // A function can be passed as `onToken` option, which will\n // cause Acorn to call that function with object in the same\n // format as tokens returned from `tokenizer().getToken()`. Note\n // that you are not allowed to call the parser from the\n // callback—that will corrupt its internal state.\n onToken: null,\n // A function can be passed as `onComment` option, which will\n // cause Acorn to call that function with `(block, text, start,\n // end)` parameters whenever a comment is skipped. `block` is a\n // boolean indicating whether this is a block (`/* */`) comment,\n // `text` is the content of the comment, and `start` and `end` are\n // character offsets that denote the start and end of the comment.\n // When the `locations` option is on, two more parameters are\n // passed, the full `{line, column}` locations of the start and\n // end of the comments. Note that you are not allowed to call the\n // parser from the callback—that will corrupt its internal state.\n // When this option has an array as value, objects representing the\n // comments are pushed to it.\n onComment: null,\n // Nodes have their start and end characters offsets recorded in\n // `start` and `end` properties (directly on the node, rather than\n // the `loc` object, which holds line/column data. To also add a\n // [semi-standardized][range] `range` property holding a `[start,\n // end]` array with the same numbers, set the `ranges` option to\n // `true`.\n //\n // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678\n ranges: false,\n // It is possible to parse multiple files into a single AST by\n // passing the tree produced by parsing the first file as\n // `program` option in subsequent parses. This will add the\n // toplevel forms of the parsed file to the `Program` (top) node\n // of an existing parse tree.\n program: null,\n // When `locations` is on, you can pass this to record the source\n // file in every node's `loc` object.\n sourceFile: null,\n // This value, if given, is stored in every node, whether\n // `locations` is on or off.\n directSourceFile: null,\n // When enabled, parenthesized expressions are represented by\n // (non-standard) ParenthesizedExpression nodes\n preserveParens: false\n};\n\n// Interpret and default an options object\n\nvar warnedAboutEcmaVersion = false;\n\nfunction getOptions(opts) {\n var options = {};\n\n for (var opt in defaultOptions)\n { options[opt] = opts && hasOwn(opts, opt) ? opts[opt] : defaultOptions[opt]; }\n\n if (options.ecmaVersion === \"latest\") {\n options.ecmaVersion = 1e8;\n } else if (options.ecmaVersion == null) {\n if (!warnedAboutEcmaVersion && typeof console === \"object\" && console.warn) {\n warnedAboutEcmaVersion = true;\n console.warn(\"Since Acorn 8.0.0, options.ecmaVersion is required.\\nDefaulting to 2020, but this will stop working in the future.\");\n }\n options.ecmaVersion = 11;\n } else if (options.ecmaVersion >= 2015) {\n options.ecmaVersion -= 2009;\n }\n\n if (options.allowReserved == null)\n { options.allowReserved = options.ecmaVersion < 5; }\n\n if (!opts || opts.allowHashBang == null)\n { options.allowHashBang = options.ecmaVersion >= 14; }\n\n if (isArray(options.onToken)) {\n var tokens = options.onToken;\n options.onToken = function (token) { return tokens.push(token); };\n }\n if (isArray(options.onComment))\n { options.onComment = pushComment(options, options.onComment); }\n\n return options\n}\n\nfunction pushComment(options, array) {\n return function(block, text, start, end, startLoc, endLoc) {\n var comment = {\n type: block ? \"Block\" : \"Line\",\n value: text,\n start: start,\n end: end\n };\n if (options.locations)\n { comment.loc = new SourceLocation(this, startLoc, endLoc); }\n if (options.ranges)\n { comment.range = [start, end]; }\n array.push(comment);\n }\n}\n\n// Each scope gets a bitset that may contain these flags\nvar\n SCOPE_TOP = 1,\n SCOPE_FUNCTION = 2,\n SCOPE_ASYNC = 4,\n SCOPE_GENERATOR = 8,\n SCOPE_ARROW = 16,\n SCOPE_SIMPLE_CATCH = 32,\n SCOPE_SUPER = 64,\n SCOPE_DIRECT_SUPER = 128,\n SCOPE_CLASS_STATIC_BLOCK = 256,\n SCOPE_VAR = SCOPE_TOP | SCOPE_FUNCTION | SCOPE_CLASS_STATIC_BLOCK;\n\nfunction functionFlags(async, generator) {\n return SCOPE_FUNCTION | (async ? SCOPE_ASYNC : 0) | (generator ? SCOPE_GENERATOR : 0)\n}\n\n// Used in checkLVal* and declareName to determine the type of a binding\nvar\n BIND_NONE = 0, // Not a binding\n BIND_VAR = 1, // Var-style binding\n BIND_LEXICAL = 2, // Let- or const-style binding\n BIND_FUNCTION = 3, // Function declaration\n BIND_SIMPLE_CATCH = 4, // Simple (identifier pattern) catch binding\n BIND_OUTSIDE = 5; // Special case for function names as bound inside the function\n\nvar Parser = function Parser(options, input, startPos) {\n this.options = options = getOptions(options);\n this.sourceFile = options.sourceFile;\n this.keywords = wordsRegexp(keywords$1[options.ecmaVersion >= 6 ? 6 : options.sourceType === \"module\" ? \"5module\" : 5]);\n var reserved = \"\";\n if (options.allowReserved !== true) {\n reserved = reservedWords[options.ecmaVersion >= 6 ? 6 : options.ecmaVersion === 5 ? 5 : 3];\n if (options.sourceType === \"module\") { reserved += \" await\"; }\n }\n this.reservedWords = wordsRegexp(reserved);\n var reservedStrict = (reserved ? reserved + \" \" : \"\") + reservedWords.strict;\n this.reservedWordsStrict = wordsRegexp(reservedStrict);\n this.reservedWordsStrictBind = wordsRegexp(reservedStrict + \" \" + reservedWords.strictBind);\n this.input = String(input);\n\n // Used to signal to callers of `readWord1` whether the word\n // contained any escape sequences. This is needed because words with\n // escape sequences must not be interpreted as keywords.\n this.containsEsc = false;\n\n // Set up token state\n\n // The current position of the tokenizer in the input.\n if (startPos) {\n this.pos = startPos;\n this.lineStart = this.input.lastIndexOf(\"\\n\", startPos - 1) + 1;\n this.curLine = this.input.slice(0, this.lineStart).split(lineBreak).length;\n } else {\n this.pos = this.lineStart = 0;\n this.curLine = 1;\n }\n\n // Properties of the current token:\n // Its type\n this.type = types$1.eof;\n // For tokens that include more information than their type, the value\n this.value = null;\n // Its start and end offset\n this.start = this.end = this.pos;\n // And, if locations are used, the {line, column} object\n // corresponding to those offsets\n this.startLoc = this.endLoc = this.curPosition();\n\n // Position information for the previous token\n this.lastTokEndLoc = this.lastTokStartLoc = null;\n this.lastTokStart = this.lastTokEnd = this.pos;\n\n // The context stack is used to superficially track syntactic\n // context to predict whether a regular expression is allowed in a\n // given position.\n this.context = this.initialContext();\n this.exprAllowed = true;\n\n // Figure out if it's a module code.\n this.inModule = options.sourceType === \"module\";\n this.strict = this.inModule || this.strictDirective(this.pos);\n\n // Used to signify the start of a potential arrow function\n this.potentialArrowAt = -1;\n this.potentialArrowInForAwait = false;\n\n // Positions to delayed-check that yield/await does not exist in default parameters.\n this.yieldPos = this.awaitPos = this.awaitIdentPos = 0;\n // Labels in scope.\n this.labels = [];\n // Thus-far undefined exports.\n this.undefinedExports = Object.create(null);\n\n // If enabled, skip leading hashbang line.\n if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === \"#!\")\n { this.skipLineComment(2); }\n\n // Scope tracking for duplicate variable names (see scope.js)\n this.scopeStack = [];\n this.enterScope(SCOPE_TOP);\n\n // For RegExp validation\n this.regexpState = null;\n\n // The stack of private names.\n // Each element has two properties: 'declared' and 'used'.\n // When it exited from the outermost class definition, all used private names must be declared.\n this.privateNameStack = [];\n};\n\nvar prototypeAccessors = { inFunction: { configurable: true },inGenerator: { configurable: true },inAsync: { configurable: true },canAwait: { configurable: true },allowSuper: { configurable: true },allowDirectSuper: { configurable: true },treatFunctionsAsVar: { configurable: true },allowNewDotTarget: { configurable: true },inClassStaticBlock: { configurable: true } };\n\nParser.prototype.parse = function parse () {\n var node = this.options.program || this.startNode();\n this.nextToken();\n return this.parseTopLevel(node)\n};\n\nprototypeAccessors.inFunction.get = function () { return (this.currentVarScope().flags & SCOPE_FUNCTION) > 0 };\n\nprototypeAccessors.inGenerator.get = function () { return (this.currentVarScope().flags & SCOPE_GENERATOR) > 0 && !this.currentVarScope().inClassFieldInit };\n\nprototypeAccessors.inAsync.get = function () { return (this.currentVarScope().flags & SCOPE_ASYNC) > 0 && !this.currentVarScope().inClassFieldInit };\n\nprototypeAccessors.canAwait.get = function () {\n for (var i = this.scopeStack.length - 1; i >= 0; i--) {\n var scope = this.scopeStack[i];\n if (scope.inClassFieldInit || scope.flags & SCOPE_CLASS_STATIC_BLOCK) { return false }\n if (scope.flags & SCOPE_FUNCTION) { return (scope.flags & SCOPE_ASYNC) > 0 }\n }\n return (this.inModule && this.options.ecmaVersion >= 13) || this.options.allowAwaitOutsideFunction\n};\n\nprototypeAccessors.allowSuper.get = function () {\n var ref = this.currentThisScope();\n var flags = ref.flags;\n var inClassFieldInit = ref.inClassFieldInit;\n return (flags & SCOPE_SUPER) > 0 || inClassFieldInit || this.options.allowSuperOutsideMethod\n};\n\nprototypeAccessors.allowDirectSuper.get = function () { return (this.currentThisScope().flags & SCOPE_DIRECT_SUPER) > 0 };\n\nprototypeAccessors.treatFunctionsAsVar.get = function () { return this.treatFunctionsAsVarInScope(this.currentScope()) };\n\nprototypeAccessors.allowNewDotTarget.get = function () {\n var ref = this.currentThisScope();\n var flags = ref.flags;\n var inClassFieldInit = ref.inClassFieldInit;\n return (flags & (SCOPE_FUNCTION | SCOPE_CLASS_STATIC_BLOCK)) > 0 || inClassFieldInit\n};\n\nprototypeAccessors.inClassStaticBlock.get = function () {\n return (this.currentVarScope().flags & SCOPE_CLASS_STATIC_BLOCK) > 0\n};\n\nParser.extend = function extend () {\n var plugins = [], len = arguments.length;\n while ( len-- ) plugins[ len ] = arguments[ len ];\n\n var cls = this;\n for (var i = 0; i < plugins.length; i++) { cls = plugins[i](cls); }\n return cls\n};\n\nParser.parse = function parse (input, options) {\n return new this(options, input).parse()\n};\n\nParser.parseExpressionAt = function parseExpressionAt (input, pos, options) {\n var parser = new this(options, input, pos);\n parser.nextToken();\n return parser.parseExpression()\n};\n\nParser.tokenizer = function tokenizer (input, options) {\n return new this(options, input)\n};\n\nObject.defineProperties( Parser.prototype, prototypeAccessors );\n\nvar pp$9 = Parser.prototype;\n\n// ## Parser utilities\n\nvar literal = /^(?:'((?:\\\\.|[^'\\\\])*?)'|\"((?:\\\\.|[^\"\\\\])*?)\")/;\npp$9.strictDirective = function(start) {\n if (this.options.ecmaVersion < 5) { return false }\n for (;;) {\n // Try to find string literal.\n skipWhiteSpace.lastIndex = start;\n start += skipWhiteSpace.exec(this.input)[0].length;\n var match = literal.exec(this.input.slice(start));\n if (!match) { return false }\n if ((match[1] || match[2]) === \"use strict\") {\n skipWhiteSpace.lastIndex = start + match[0].length;\n var spaceAfter = skipWhiteSpace.exec(this.input), end = spaceAfter.index + spaceAfter[0].length;\n var next = this.input.charAt(end);\n return next === \";\" || next === \"}\" ||\n (lineBreak.test(spaceAfter[0]) &&\n !(/[(`.[+\\-/*%<>=,?^&]/.test(next) || next === \"!\" && this.input.charAt(end + 1) === \"=\"))\n }\n start += match[0].length;\n\n // Skip semicolon, if any.\n skipWhiteSpace.lastIndex = start;\n start += skipWhiteSpace.exec(this.input)[0].length;\n if (this.input[start] === \";\")\n { start++; }\n }\n};\n\n// Predicate that tests whether the next token is of the given\n// type, and if yes, consumes it as a side effect.\n\npp$9.eat = function(type) {\n if (this.type === type) {\n this.next();\n return true\n } else {\n return false\n }\n};\n\n// Tests whether parsed token is a contextual keyword.\n\npp$9.isContextual = function(name) {\n return this.type === types$1.name && this.value === name && !this.containsEsc\n};\n\n// Consumes contextual keyword if possible.\n\npp$9.eatContextual = function(name) {\n if (!this.isContextual(name)) { return false }\n this.next();\n return true\n};\n\n// Asserts that following token is given contextual keyword.\n\npp$9.expectContextual = function(name) {\n if (!this.eatContextual(name)) { this.unexpected(); }\n};\n\n// Test whether a semicolon can be inserted at the current position.\n\npp$9.canInsertSemicolon = function() {\n return this.type === types$1.eof ||\n this.type === types$1.braceR ||\n lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n};\n\npp$9.insertSemicolon = function() {\n if (this.canInsertSemicolon()) {\n if (this.options.onInsertedSemicolon)\n { this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc); }\n return true\n }\n};\n\n// Consume a semicolon, or, failing that, see if we are allowed to\n// pretend that there is a semicolon at this position.\n\npp$9.semicolon = function() {\n if (!this.eat(types$1.semi) && !this.insertSemicolon()) { this.unexpected(); }\n};\n\npp$9.afterTrailingComma = function(tokType, notNext) {\n if (this.type === tokType) {\n if (this.options.onTrailingComma)\n { this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc); }\n if (!notNext)\n { this.next(); }\n return true\n }\n};\n\n// Expect a token of a given type. If found, consume it, otherwise,\n// raise an unexpected token error.\n\npp$9.expect = function(type) {\n this.eat(type) || this.unexpected();\n};\n\n// Raise an unexpected token error.\n\npp$9.unexpected = function(pos) {\n this.raise(pos != null ? pos : this.start, \"Unexpected token\");\n};\n\nvar DestructuringErrors = function DestructuringErrors() {\n this.shorthandAssign =\n this.trailingComma =\n this.parenthesizedAssign =\n this.parenthesizedBind =\n this.doubleProto =\n -1;\n};\n\npp$9.checkPatternErrors = function(refDestructuringErrors, isAssign) {\n if (!refDestructuringErrors) { return }\n if (refDestructuringErrors.trailingComma > -1)\n { this.raiseRecoverable(refDestructuringErrors.trailingComma, \"Comma is not permitted after the rest element\"); }\n var parens = isAssign ? refDestructuringErrors.parenthesizedAssign : refDestructuringErrors.parenthesizedBind;\n if (parens > -1) { this.raiseRecoverable(parens, isAssign ? \"Assigning to rvalue\" : \"Parenthesized pattern\"); }\n};\n\npp$9.checkExpressionErrors = function(refDestructuringErrors, andThrow) {\n if (!refDestructuringErrors) { return false }\n var shorthandAssign = refDestructuringErrors.shorthandAssign;\n var doubleProto = refDestructuringErrors.doubleProto;\n if (!andThrow) { return shorthandAssign >= 0 || doubleProto >= 0 }\n if (shorthandAssign >= 0)\n { this.raise(shorthandAssign, \"Shorthand property assignments are valid only in destructuring patterns\"); }\n if (doubleProto >= 0)\n { this.raiseRecoverable(doubleProto, \"Redefinition of __proto__ property\"); }\n};\n\npp$9.checkYieldAwaitInDefaultParams = function() {\n if (this.yieldPos && (!this.awaitPos || this.yieldPos < this.awaitPos))\n { this.raise(this.yieldPos, \"Yield expression cannot be a default value\"); }\n if (this.awaitPos)\n { this.raise(this.awaitPos, \"Await expression cannot be a default value\"); }\n};\n\npp$9.isSimpleAssignTarget = function(expr) {\n if (expr.type === \"ParenthesizedExpression\")\n { return this.isSimpleAssignTarget(expr.expression) }\n return expr.type === \"Identifier\" || expr.type === \"MemberExpression\"\n};\n\nvar pp$8 = Parser.prototype;\n\n// ### Statement parsing\n\n// Parse a program. Initializes the parser, reads any number of\n// statements, and wraps them in a Program node. Optionally takes a\n// `program` argument. If present, the statements will be appended\n// to its body instead of creating a new node.\n\npp$8.parseTopLevel = function(node) {\n var exports = Object.create(null);\n if (!node.body) { node.body = []; }\n while (this.type !== types$1.eof) {\n var stmt = this.parseStatement(null, true, exports);\n node.body.push(stmt);\n }\n if (this.inModule)\n { for (var i = 0, list = Object.keys(this.undefinedExports); i < list.length; i += 1)\n {\n var name = list[i];\n\n this.raiseRecoverable(this.undefinedExports[name].start, (\"Export '\" + name + \"' is not defined\"));\n } }\n this.adaptDirectivePrologue(node.body);\n this.next();\n node.sourceType = this.options.sourceType;\n return this.finishNode(node, \"Program\")\n};\n\nvar loopLabel = {kind: \"loop\"}, switchLabel = {kind: \"switch\"};\n\npp$8.isLet = function(context) {\n if (this.options.ecmaVersion < 6 || !this.isContextual(\"let\")) { return false }\n skipWhiteSpace.lastIndex = this.pos;\n var skip = skipWhiteSpace.exec(this.input);\n var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next);\n // For ambiguous cases, determine if a LexicalDeclaration (or only a\n // Statement) is allowed here. If context is not empty then only a Statement\n // is allowed. However, `let [` is an explicit negative lookahead for\n // ExpressionStatement, so special-case it first.\n if (nextCh === 91 || nextCh === 92) { return true } // '[', '/'\n if (context) { return false }\n\n if (nextCh === 123 || nextCh > 0xd7ff && nextCh < 0xdc00) { return true } // '{', astral\n if (isIdentifierStart(nextCh, true)) {\n var pos = next + 1;\n while (isIdentifierChar(nextCh = this.input.charCodeAt(pos), true)) { ++pos; }\n if (nextCh === 92 || nextCh > 0xd7ff && nextCh < 0xdc00) { return true }\n var ident = this.input.slice(next, pos);\n if (!keywordRelationalOperator.test(ident)) { return true }\n }\n return false\n};\n\n// check 'async [no LineTerminator here] function'\n// - 'async /*foo*/ function' is OK.\n// - 'async /*\\n*/ function' is invalid.\npp$8.isAsyncFunction = function() {\n if (this.options.ecmaVersion < 8 || !this.isContextual(\"async\"))\n { return false }\n\n skipWhiteSpace.lastIndex = this.pos;\n var skip = skipWhiteSpace.exec(this.input);\n var next = this.pos + skip[0].length, after;\n return !lineBreak.test(this.input.slice(this.pos, next)) &&\n this.input.slice(next, next + 8) === \"function\" &&\n (next + 8 === this.input.length ||\n !(isIdentifierChar(after = this.input.charCodeAt(next + 8)) || after > 0xd7ff && after < 0xdc00))\n};\n\n// Parse a single statement.\n//\n// If expecting a statement and finding a slash operator, parse a\n// regular expression literal. This is to handle cases like\n// `if (foo) /blah/.exec(foo)`, where looking at the previous token\n// does not help.\n\npp$8.parseStatement = function(context, topLevel, exports) {\n var starttype = this.type, node = this.startNode(), kind;\n\n if (this.isLet(context)) {\n starttype = types$1._var;\n kind = \"let\";\n }\n\n // Most types of statements are recognized by the keyword they\n // start with. Many are trivial to parse, some require a bit of\n // complexity.\n\n switch (starttype) {\n case types$1._break: case types$1._continue: return this.parseBreakContinueStatement(node, starttype.keyword)\n case types$1._debugger: return this.parseDebuggerStatement(node)\n case types$1._do: return this.parseDoStatement(node)\n case types$1._for: return this.parseForStatement(node)\n case types$1._function:\n // Function as sole body of either an if statement or a labeled statement\n // works, but not when it is part of a labeled statement that is the sole\n // body of an if statement.\n if ((context && (this.strict || context !== \"if\" && context !== \"label\")) && this.options.ecmaVersion >= 6) { this.unexpected(); }\n return this.parseFunctionStatement(node, false, !context)\n case types$1._class:\n if (context) { this.unexpected(); }\n return this.parseClass(node, true)\n case types$1._if: return this.parseIfStatement(node)\n case types$1._return: return this.parseReturnStatement(node)\n case types$1._switch: return this.parseSwitchStatement(node)\n case types$1._throw: return this.parseThrowStatement(node)\n case types$1._try: return this.parseTryStatement(node)\n case types$1._const: case types$1._var:\n kind = kind || this.value;\n if (context && kind !== \"var\") { this.unexpected(); }\n return this.parseVarStatement(node, kind)\n case types$1._while: return this.parseWhileStatement(node)\n case types$1._with: return this.parseWithStatement(node)\n case types$1.braceL: return this.parseBlock(true, node)\n case types$1.semi: return this.parseEmptyStatement(node)\n case types$1._export:\n case types$1._import:\n if (this.options.ecmaVersion > 10 && starttype === types$1._import) {\n skipWhiteSpace.lastIndex = this.pos;\n var skip = skipWhiteSpace.exec(this.input);\n var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next);\n if (nextCh === 40 || nextCh === 46) // '(' or '.'\n { return this.parseExpressionStatement(node, this.parseExpression()) }\n }\n\n if (!this.options.allowImportExportEverywhere) {\n if (!topLevel)\n { this.raise(this.start, \"'import' and 'export' may only appear at the top level\"); }\n if (!this.inModule)\n { this.raise(this.start, \"'import' and 'export' may appear only with 'sourceType: module'\"); }\n }\n return starttype === types$1._import ? this.parseImport(node) : this.parseExport(node, exports)\n\n // If the statement does not start with a statement keyword or a\n // brace, it's an ExpressionStatement or LabeledStatement. We\n // simply start parsing an expression, and afterwards, if the\n // next token is a colon and the expression was a simple\n // Identifier node, we switch to interpreting it as a label.\n default:\n if (this.isAsyncFunction()) {\n if (context) { this.unexpected(); }\n this.next();\n return this.parseFunctionStatement(node, true, !context)\n }\n\n var maybeName = this.value, expr = this.parseExpression();\n if (starttype === types$1.name && expr.type === \"Identifier\" && this.eat(types$1.colon))\n { return this.parseLabeledStatement(node, maybeName, expr, context) }\n else { return this.parseExpressionStatement(node, expr) }\n }\n};\n\npp$8.parseBreakContinueStatement = function(node, keyword) {\n var isBreak = keyword === \"break\";\n this.next();\n if (this.eat(types$1.semi) || this.insertSemicolon()) { node.label = null; }\n else if (this.type !== types$1.name) { this.unexpected(); }\n else {\n node.label = this.parseIdent();\n this.semicolon();\n }\n\n // Verify that there is an actual destination to break or\n // continue to.\n var i = 0;\n for (; i < this.labels.length; ++i) {\n var lab = this.labels[i];\n if (node.label == null || lab.name === node.label.name) {\n if (lab.kind != null && (isBreak || lab.kind === \"loop\")) { break }\n if (node.label && isBreak) { break }\n }\n }\n if (i === this.labels.length) { this.raise(node.start, \"Unsyntactic \" + keyword); }\n return this.finishNode(node, isBreak ? \"BreakStatement\" : \"ContinueStatement\")\n};\n\npp$8.parseDebuggerStatement = function(node) {\n this.next();\n this.semicolon();\n return this.finishNode(node, \"DebuggerStatement\")\n};\n\npp$8.parseDoStatement = function(node) {\n this.next();\n this.labels.push(loopLabel);\n node.body = this.parseStatement(\"do\");\n this.labels.pop();\n this.expect(types$1._while);\n node.test = this.parseParenExpression();\n if (this.options.ecmaVersion >= 6)\n { this.eat(types$1.semi); }\n else\n { this.semicolon(); }\n return this.finishNode(node, \"DoWhileStatement\")\n};\n\n// Disambiguating between a `for` and a `for`/`in` or `for`/`of`\n// loop is non-trivial. Basically, we have to parse the init `var`\n// statement or expression, disallowing the `in` operator (see\n// the second parameter to `parseExpression`), and then check\n// whether the next token is `in` or `of`. When there is no init\n// part (semicolon immediately after the opening parenthesis), it\n// is a regular `for` loop.\n\npp$8.parseForStatement = function(node) {\n this.next();\n var awaitAt = (this.options.ecmaVersion >= 9 && this.canAwait && this.eatContextual(\"await\")) ? this.lastTokStart : -1;\n this.labels.push(loopLabel);\n this.enterScope(0);\n this.expect(types$1.parenL);\n if (this.type === types$1.semi) {\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n return this.parseFor(node, null)\n }\n var isLet = this.isLet();\n if (this.type === types$1._var || this.type === types$1._const || isLet) {\n var init$1 = this.startNode(), kind = isLet ? \"let\" : this.value;\n this.next();\n this.parseVar(init$1, true, kind);\n this.finishNode(init$1, \"VariableDeclaration\");\n if ((this.type === types$1._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) && init$1.declarations.length === 1) {\n if (this.options.ecmaVersion >= 9) {\n if (this.type === types$1._in) {\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n } else { node.await = awaitAt > -1; }\n }\n return this.parseForIn(node, init$1)\n }\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n return this.parseFor(node, init$1)\n }\n var startsWithLet = this.isContextual(\"let\"), isForOf = false;\n var refDestructuringErrors = new DestructuringErrors;\n var init = this.parseExpression(awaitAt > -1 ? \"await\" : true, refDestructuringErrors);\n if (this.type === types$1._in || (isForOf = this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) {\n if (this.options.ecmaVersion >= 9) {\n if (this.type === types$1._in) {\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n } else { node.await = awaitAt > -1; }\n }\n if (startsWithLet && isForOf) { this.raise(init.start, \"The left-hand side of a for-of loop may not start with 'let'.\"); }\n this.toAssignable(init, false, refDestructuringErrors);\n this.checkLValPattern(init);\n return this.parseForIn(node, init)\n } else {\n this.checkExpressionErrors(refDestructuringErrors, true);\n }\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n return this.parseFor(node, init)\n};\n\npp$8.parseFunctionStatement = function(node, isAsync, declarationPosition) {\n this.next();\n return this.parseFunction(node, FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT), false, isAsync)\n};\n\npp$8.parseIfStatement = function(node) {\n this.next();\n node.test = this.parseParenExpression();\n // allow function declarations in branches, but only in non-strict mode\n node.consequent = this.parseStatement(\"if\");\n node.alternate = this.eat(types$1._else) ? this.parseStatement(\"if\") : null;\n return this.finishNode(node, \"IfStatement\")\n};\n\npp$8.parseReturnStatement = function(node) {\n if (!this.inFunction && !this.options.allowReturnOutsideFunction)\n { this.raise(this.start, \"'return' outside of function\"); }\n this.next();\n\n // In `return` (and `break`/`continue`), the keywords with\n // optional arguments, we eagerly look for a semicolon or the\n // possibility to insert one.\n\n if (this.eat(types$1.semi) || this.insertSemicolon()) { node.argument = null; }\n else { node.argument = this.parseExpression(); this.semicolon(); }\n return this.finishNode(node, \"ReturnStatement\")\n};\n\npp$8.parseSwitchStatement = function(node) {\n this.next();\n node.discriminant = this.parseParenExpression();\n node.cases = [];\n this.expect(types$1.braceL);\n this.labels.push(switchLabel);\n this.enterScope(0);\n\n // Statements under must be grouped (by label) in SwitchCase\n // nodes. `cur` is used to keep the node that we are currently\n // adding statements to.\n\n var cur;\n for (var sawDefault = false; this.type !== types$1.braceR;) {\n if (this.type === types$1._case || this.type === types$1._default) {\n var isCase = this.type === types$1._case;\n if (cur) { this.finishNode(cur, \"SwitchCase\"); }\n node.cases.push(cur = this.startNode());\n cur.consequent = [];\n this.next();\n if (isCase) {\n cur.test = this.parseExpression();\n } else {\n if (sawDefault) { this.raiseRecoverable(this.lastTokStart, \"Multiple default clauses\"); }\n sawDefault = true;\n cur.test = null;\n }\n this.expect(types$1.colon);\n } else {\n if (!cur) { this.unexpected(); }\n cur.consequent.push(this.parseStatement(null));\n }\n }\n this.exitScope();\n if (cur) { this.finishNode(cur, \"SwitchCase\"); }\n this.next(); // Closing brace\n this.labels.pop();\n return this.finishNode(node, \"SwitchStatement\")\n};\n\npp$8.parseThrowStatement = function(node) {\n this.next();\n if (lineBreak.test(this.input.slice(this.lastTokEnd, this.start)))\n { this.raise(this.lastTokEnd, \"Illegal newline after throw\"); }\n node.argument = this.parseExpression();\n this.semicolon();\n return this.finishNode(node, \"ThrowStatement\")\n};\n\n// Reused empty array added for node fields that are always empty.\n\nvar empty$1 = [];\n\npp$8.parseCatchClauseParam = function() {\n var param = this.parseBindingAtom();\n var simple = param.type === \"Identifier\";\n this.enterScope(simple ? SCOPE_SIMPLE_CATCH : 0);\n this.checkLValPattern(param, simple ? BIND_SIMPLE_CATCH : BIND_LEXICAL);\n this.expect(types$1.parenR);\n\n return param\n};\n\npp$8.parseTryStatement = function(node) {\n this.next();\n node.block = this.parseBlock();\n node.handler = null;\n if (this.type === types$1._catch) {\n var clause = this.startNode();\n this.next();\n if (this.eat(types$1.parenL)) {\n clause.param = this.parseCatchClauseParam();\n } else {\n if (this.options.ecmaVersion < 10) { this.unexpected(); }\n clause.param = null;\n this.enterScope(0);\n }\n clause.body = this.parseBlock(false);\n this.exitScope();\n node.handler = this.finishNode(clause, \"CatchClause\");\n }\n node.finalizer = this.eat(types$1._finally) ? this.parseBlock() : null;\n if (!node.handler && !node.finalizer)\n { this.raise(node.start, \"Missing catch or finally clause\"); }\n return this.finishNode(node, \"TryStatement\")\n};\n\npp$8.parseVarStatement = function(node, kind, allowMissingInitializer) {\n this.next();\n this.parseVar(node, false, kind, allowMissingInitializer);\n this.semicolon();\n return this.finishNode(node, \"VariableDeclaration\")\n};\n\npp$8.parseWhileStatement = function(node) {\n this.next();\n node.test = this.parseParenExpression();\n this.labels.push(loopLabel);\n node.body = this.parseStatement(\"while\");\n this.labels.pop();\n return this.finishNode(node, \"WhileStatement\")\n};\n\npp$8.parseWithStatement = function(node) {\n if (this.strict) { this.raise(this.start, \"'with' in strict mode\"); }\n this.next();\n node.object = this.parseParenExpression();\n node.body = this.parseStatement(\"with\");\n return this.finishNode(node, \"WithStatement\")\n};\n\npp$8.parseEmptyStatement = function(node) {\n this.next();\n return this.finishNode(node, \"EmptyStatement\")\n};\n\npp$8.parseLabeledStatement = function(node, maybeName, expr, context) {\n for (var i$1 = 0, list = this.labels; i$1 < list.length; i$1 += 1)\n {\n var label = list[i$1];\n\n if (label.name === maybeName)\n { this.raise(expr.start, \"Label '\" + maybeName + \"' is already declared\");\n } }\n var kind = this.type.isLoop ? \"loop\" : this.type === types$1._switch ? \"switch\" : null;\n for (var i = this.labels.length - 1; i >= 0; i--) {\n var label$1 = this.labels[i];\n if (label$1.statementStart === node.start) {\n // Update information about previous labels on this node\n label$1.statementStart = this.start;\n label$1.kind = kind;\n } else { break }\n }\n this.labels.push({name: maybeName, kind: kind, statementStart: this.start});\n node.body = this.parseStatement(context ? context.indexOf(\"label\") === -1 ? context + \"label\" : context : \"label\");\n this.labels.pop();\n node.label = expr;\n return this.finishNode(node, \"LabeledStatement\")\n};\n\npp$8.parseExpressionStatement = function(node, expr) {\n node.expression = expr;\n this.semicolon();\n return this.finishNode(node, \"ExpressionStatement\")\n};\n\n// Parse a semicolon-enclosed block of statements, handling `\"use\n// strict\"` declarations when `allowStrict` is true (used for\n// function bodies).\n\npp$8.parseBlock = function(createNewLexicalScope, node, exitStrict) {\n if ( createNewLexicalScope === void 0 ) createNewLexicalScope = true;\n if ( node === void 0 ) node = this.startNode();\n\n node.body = [];\n this.expect(types$1.braceL);\n if (createNewLexicalScope) { this.enterScope(0); }\n while (this.type !== types$1.braceR) {\n var stmt = this.parseStatement(null);\n node.body.push(stmt);\n }\n if (exitStrict) { this.strict = false; }\n this.next();\n if (createNewLexicalScope) { this.exitScope(); }\n return this.finishNode(node, \"BlockStatement\")\n};\n\n// Parse a regular `for` loop. The disambiguation code in\n// `parseStatement` will already have parsed the init statement or\n// expression.\n\npp$8.parseFor = function(node, init) {\n node.init = init;\n this.expect(types$1.semi);\n node.test = this.type === types$1.semi ? null : this.parseExpression();\n this.expect(types$1.semi);\n node.update = this.type === types$1.parenR ? null : this.parseExpression();\n this.expect(types$1.parenR);\n node.body = this.parseStatement(\"for\");\n this.exitScope();\n this.labels.pop();\n return this.finishNode(node, \"ForStatement\")\n};\n\n// Parse a `for`/`in` and `for`/`of` loop, which are almost\n// same from parser's perspective.\n\npp$8.parseForIn = function(node, init) {\n var isForIn = this.type === types$1._in;\n this.next();\n\n if (\n init.type === \"VariableDeclaration\" &&\n init.declarations[0].init != null &&\n (\n !isForIn ||\n this.options.ecmaVersion < 8 ||\n this.strict ||\n init.kind !== \"var\" ||\n init.declarations[0].id.type !== \"Identifier\"\n )\n ) {\n this.raise(\n init.start,\n ((isForIn ? \"for-in\" : \"for-of\") + \" loop variable declaration may not have an initializer\")\n );\n }\n node.left = init;\n node.right = isForIn ? this.parseExpression() : this.parseMaybeAssign();\n this.expect(types$1.parenR);\n node.body = this.parseStatement(\"for\");\n this.exitScope();\n this.labels.pop();\n return this.finishNode(node, isForIn ? \"ForInStatement\" : \"ForOfStatement\")\n};\n\n// Parse a list of variable declarations.\n\npp$8.parseVar = function(node, isFor, kind, allowMissingInitializer) {\n node.declarations = [];\n node.kind = kind;\n for (;;) {\n var decl = this.startNode();\n this.parseVarId(decl, kind);\n if (this.eat(types$1.eq)) {\n decl.init = this.parseMaybeAssign(isFor);\n } else if (!allowMissingInitializer && kind === \"const\" && !(this.type === types$1._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\")))) {\n this.unexpected();\n } else if (!allowMissingInitializer && decl.id.type !== \"Identifier\" && !(isFor && (this.type === types$1._in || this.isContextual(\"of\")))) {\n this.raise(this.lastTokEnd, \"Complex binding patterns require an initialization value\");\n } else {\n decl.init = null;\n }\n node.declarations.push(this.finishNode(decl, \"VariableDeclarator\"));\n if (!this.eat(types$1.comma)) { break }\n }\n return node\n};\n\npp$8.parseVarId = function(decl, kind) {\n decl.id = this.parseBindingAtom();\n this.checkLValPattern(decl.id, kind === \"var\" ? BIND_VAR : BIND_LEXICAL, false);\n};\n\nvar FUNC_STATEMENT = 1, FUNC_HANGING_STATEMENT = 2, FUNC_NULLABLE_ID = 4;\n\n// Parse a function declaration or literal (depending on the\n// `statement & FUNC_STATEMENT`).\n\n// Remove `allowExpressionBody` for 7.0.0, as it is only called with false\npp$8.parseFunction = function(node, statement, allowExpressionBody, isAsync, forInit) {\n this.initFunction(node);\n if (this.options.ecmaVersion >= 9 || this.options.ecmaVersion >= 6 && !isAsync) {\n if (this.type === types$1.star && (statement & FUNC_HANGING_STATEMENT))\n { this.unexpected(); }\n node.generator = this.eat(types$1.star);\n }\n if (this.options.ecmaVersion >= 8)\n { node.async = !!isAsync; }\n\n if (statement & FUNC_STATEMENT) {\n node.id = (statement & FUNC_NULLABLE_ID) && this.type !== types$1.name ? null : this.parseIdent();\n if (node.id && !(statement & FUNC_HANGING_STATEMENT))\n // If it is a regular function declaration in sloppy mode, then it is\n // subject to Annex B semantics (BIND_FUNCTION). Otherwise, the binding\n // mode depends on properties of the current scope (see\n // treatFunctionsAsVar).\n { this.checkLValSimple(node.id, (this.strict || node.generator || node.async) ? this.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION); }\n }\n\n var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n this.yieldPos = 0;\n this.awaitPos = 0;\n this.awaitIdentPos = 0;\n this.enterScope(functionFlags(node.async, node.generator));\n\n if (!(statement & FUNC_STATEMENT))\n { node.id = this.type === types$1.name ? this.parseIdent() : null; }\n\n this.parseFunctionParams(node);\n this.parseFunctionBody(node, allowExpressionBody, false, forInit);\n\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n this.awaitIdentPos = oldAwaitIdentPos;\n return this.finishNode(node, (statement & FUNC_STATEMENT) ? \"FunctionDeclaration\" : \"FunctionExpression\")\n};\n\npp$8.parseFunctionParams = function(node) {\n this.expect(types$1.parenL);\n node.params = this.parseBindingList(types$1.parenR, false, this.options.ecmaVersion >= 8);\n this.checkYieldAwaitInDefaultParams();\n};\n\n// Parse a class declaration or literal (depending on the\n// `isStatement` parameter).\n\npp$8.parseClass = function(node, isStatement) {\n this.next();\n\n // ecma-262 14.6 Class Definitions\n // A class definition is always strict mode code.\n var oldStrict = this.strict;\n this.strict = true;\n\n this.parseClassId(node, isStatement);\n this.parseClassSuper(node);\n var privateNameMap = this.enterClassBody();\n var classBody = this.startNode();\n var hadConstructor = false;\n classBody.body = [];\n this.expect(types$1.braceL);\n while (this.type !== types$1.braceR) {\n var element = this.parseClassElement(node.superClass !== null);\n if (element) {\n classBody.body.push(element);\n if (element.type === \"MethodDefinition\" && element.kind === \"constructor\") {\n if (hadConstructor) { this.raiseRecoverable(element.start, \"Duplicate constructor in the same class\"); }\n hadConstructor = true;\n } else if (element.key && element.key.type === \"PrivateIdentifier\" && isPrivateNameConflicted(privateNameMap, element)) {\n this.raiseRecoverable(element.key.start, (\"Identifier '#\" + (element.key.name) + \"' has already been declared\"));\n }\n }\n }\n this.strict = oldStrict;\n this.next();\n node.body = this.finishNode(classBody, \"ClassBody\");\n this.exitClassBody();\n return this.finishNode(node, isStatement ? \"ClassDeclaration\" : \"ClassExpression\")\n};\n\npp$8.parseClassElement = function(constructorAllowsSuper) {\n if (this.eat(types$1.semi)) { return null }\n\n var ecmaVersion = this.options.ecmaVersion;\n var node = this.startNode();\n var keyName = \"\";\n var isGenerator = false;\n var isAsync = false;\n var kind = \"method\";\n var isStatic = false;\n\n if (this.eatContextual(\"static\")) {\n // Parse static init block\n if (ecmaVersion >= 13 && this.eat(types$1.braceL)) {\n this.parseClassStaticBlock(node);\n return node\n }\n if (this.isClassElementNameStart() || this.type === types$1.star) {\n isStatic = true;\n } else {\n keyName = \"static\";\n }\n }\n node.static = isStatic;\n if (!keyName && ecmaVersion >= 8 && this.eatContextual(\"async\")) {\n if ((this.isClassElementNameStart() || this.type === types$1.star) && !this.canInsertSemicolon()) {\n isAsync = true;\n } else {\n keyName = \"async\";\n }\n }\n if (!keyName && (ecmaVersion >= 9 || !isAsync) && this.eat(types$1.star)) {\n isGenerator = true;\n }\n if (!keyName && !isAsync && !isGenerator) {\n var lastValue = this.value;\n if (this.eatContextual(\"get\") || this.eatContextual(\"set\")) {\n if (this.isClassElementNameStart()) {\n kind = lastValue;\n } else {\n keyName = lastValue;\n }\n }\n }\n\n // Parse element name\n if (keyName) {\n // 'async', 'get', 'set', or 'static' were not a keyword contextually.\n // The last token is any of those. Make it the element name.\n node.computed = false;\n node.key = this.startNodeAt(this.lastTokStart, this.lastTokStartLoc);\n node.key.name = keyName;\n this.finishNode(node.key, \"Identifier\");\n } else {\n this.parseClassElementName(node);\n }\n\n // Parse element value\n if (ecmaVersion < 13 || this.type === types$1.parenL || kind !== \"method\" || isGenerator || isAsync) {\n var isConstructor = !node.static && checkKeyName(node, \"constructor\");\n var allowsDirectSuper = isConstructor && constructorAllowsSuper;\n // Couldn't move this check into the 'parseClassMethod' method for backward compatibility.\n if (isConstructor && kind !== \"method\") { this.raise(node.key.start, \"Constructor can't have get/set modifier\"); }\n node.kind = isConstructor ? \"constructor\" : kind;\n this.parseClassMethod(node, isGenerator, isAsync, allowsDirectSuper);\n } else {\n this.parseClassField(node);\n }\n\n return node\n};\n\npp$8.isClassElementNameStart = function() {\n return (\n this.type === types$1.name ||\n this.type === types$1.privateId ||\n this.type === types$1.num ||\n this.type === types$1.string ||\n this.type === types$1.bracketL ||\n this.type.keyword\n )\n};\n\npp$8.parseClassElementName = function(element) {\n if (this.type === types$1.privateId) {\n if (this.value === \"constructor\") {\n this.raise(this.start, \"Classes can't have an element named '#constructor'\");\n }\n element.computed = false;\n element.key = this.parsePrivateIdent();\n } else {\n this.parsePropertyName(element);\n }\n};\n\npp$8.parseClassMethod = function(method, isGenerator, isAsync, allowsDirectSuper) {\n // Check key and flags\n var key = method.key;\n if (method.kind === \"constructor\") {\n if (isGenerator) { this.raise(key.start, \"Constructor can't be a generator\"); }\n if (isAsync) { this.raise(key.start, \"Constructor can't be an async method\"); }\n } else if (method.static && checkKeyName(method, \"prototype\")) {\n this.raise(key.start, \"Classes may not have a static property named prototype\");\n }\n\n // Parse value\n var value = method.value = this.parseMethod(isGenerator, isAsync, allowsDirectSuper);\n\n // Check value\n if (method.kind === \"get\" && value.params.length !== 0)\n { this.raiseRecoverable(value.start, \"getter should have no params\"); }\n if (method.kind === \"set\" && value.params.length !== 1)\n { this.raiseRecoverable(value.start, \"setter should have exactly one param\"); }\n if (method.kind === \"set\" && value.params[0].type === \"RestElement\")\n { this.raiseRecoverable(value.params[0].start, \"Setter cannot use rest params\"); }\n\n return this.finishNode(method, \"MethodDefinition\")\n};\n\npp$8.parseClassField = function(field) {\n if (checkKeyName(field, \"constructor\")) {\n this.raise(field.key.start, \"Classes can't have a field named 'constructor'\");\n } else if (field.static && checkKeyName(field, \"prototype\")) {\n this.raise(field.key.start, \"Classes can't have a static field named 'prototype'\");\n }\n\n if (this.eat(types$1.eq)) {\n // To raise SyntaxError if 'arguments' exists in the initializer.\n var scope = this.currentThisScope();\n var inClassFieldInit = scope.inClassFieldInit;\n scope.inClassFieldInit = true;\n field.value = this.parseMaybeAssign();\n scope.inClassFieldInit = inClassFieldInit;\n } else {\n field.value = null;\n }\n this.semicolon();\n\n return this.finishNode(field, \"PropertyDefinition\")\n};\n\npp$8.parseClassStaticBlock = function(node) {\n node.body = [];\n\n var oldLabels = this.labels;\n this.labels = [];\n this.enterScope(SCOPE_CLASS_STATIC_BLOCK | SCOPE_SUPER);\n while (this.type !== types$1.braceR) {\n var stmt = this.parseStatement(null);\n node.body.push(stmt);\n }\n this.next();\n this.exitScope();\n this.labels = oldLabels;\n\n return this.finishNode(node, \"StaticBlock\")\n};\n\npp$8.parseClassId = function(node, isStatement) {\n if (this.type === types$1.name) {\n node.id = this.parseIdent();\n if (isStatement)\n { this.checkLValSimple(node.id, BIND_LEXICAL, false); }\n } else {\n if (isStatement === true)\n { this.unexpected(); }\n node.id = null;\n }\n};\n\npp$8.parseClassSuper = function(node) {\n node.superClass = this.eat(types$1._extends) ? this.parseExprSubscripts(null, false) : null;\n};\n\npp$8.enterClassBody = function() {\n var element = {declared: Object.create(null), used: []};\n this.privateNameStack.push(element);\n return element.declared\n};\n\npp$8.exitClassBody = function() {\n var ref = this.privateNameStack.pop();\n var declared = ref.declared;\n var used = ref.used;\n if (!this.options.checkPrivateFields) { return }\n var len = this.privateNameStack.length;\n var parent = len === 0 ? null : this.privateNameStack[len - 1];\n for (var i = 0; i < used.length; ++i) {\n var id = used[i];\n if (!hasOwn(declared, id.name)) {\n if (parent) {\n parent.used.push(id);\n } else {\n this.raiseRecoverable(id.start, (\"Private field '#\" + (id.name) + \"' must be declared in an enclosing class\"));\n }\n }\n }\n};\n\nfunction isPrivateNameConflicted(privateNameMap, element) {\n var name = element.key.name;\n var curr = privateNameMap[name];\n\n var next = \"true\";\n if (element.type === \"MethodDefinition\" && (element.kind === \"get\" || element.kind === \"set\")) {\n next = (element.static ? \"s\" : \"i\") + element.kind;\n }\n\n // `class { get #a(){}; static set #a(_){} }` is also conflict.\n if (\n curr === \"iget\" && next === \"iset\" ||\n curr === \"iset\" && next === \"iget\" ||\n curr === \"sget\" && next === \"sset\" ||\n curr === \"sset\" && next === \"sget\"\n ) {\n privateNameMap[name] = \"true\";\n return false\n } else if (!curr) {\n privateNameMap[name] = next;\n return false\n } else {\n return true\n }\n}\n\nfunction checkKeyName(node, name) {\n var computed = node.computed;\n var key = node.key;\n return !computed && (\n key.type === \"Identifier\" && key.name === name ||\n key.type === \"Literal\" && key.value === name\n )\n}\n\n// Parses module export declaration.\n\npp$8.parseExportAllDeclaration = function(node, exports) {\n if (this.options.ecmaVersion >= 11) {\n if (this.eatContextual(\"as\")) {\n node.exported = this.parseModuleExportName();\n this.checkExport(exports, node.exported, this.lastTokStart);\n } else {\n node.exported = null;\n }\n }\n this.expectContextual(\"from\");\n if (this.type !== types$1.string) { this.unexpected(); }\n node.source = this.parseExprAtom();\n this.semicolon();\n return this.finishNode(node, \"ExportAllDeclaration\")\n};\n\npp$8.parseExport = function(node, exports) {\n this.next();\n // export * from '...'\n if (this.eat(types$1.star)) {\n return this.parseExportAllDeclaration(node, exports)\n }\n if (this.eat(types$1._default)) { // export default ...\n this.checkExport(exports, \"default\", this.lastTokStart);\n node.declaration = this.parseExportDefaultDeclaration();\n return this.finishNode(node, \"ExportDefaultDeclaration\")\n }\n // export var|const|let|function|class ...\n if (this.shouldParseExportStatement()) {\n node.declaration = this.parseExportDeclaration(node);\n if (node.declaration.type === \"VariableDeclaration\")\n { this.checkVariableExport(exports, node.declaration.declarations); }\n else\n { this.checkExport(exports, node.declaration.id, node.declaration.id.start); }\n node.specifiers = [];\n node.source = null;\n } else { // export { x, y as z } [from '...']\n node.declaration = null;\n node.specifiers = this.parseExportSpecifiers(exports);\n if (this.eatContextual(\"from\")) {\n if (this.type !== types$1.string) { this.unexpected(); }\n node.source = this.parseExprAtom();\n } else {\n for (var i = 0, list = node.specifiers; i < list.length; i += 1) {\n // check for keywords used as local names\n var spec = list[i];\n\n this.checkUnreserved(spec.local);\n // check if export is defined\n this.checkLocalExport(spec.local);\n\n if (spec.local.type === \"Literal\") {\n this.raise(spec.local.start, \"A string literal cannot be used as an exported binding without `from`.\");\n }\n }\n\n node.source = null;\n }\n this.semicolon();\n }\n return this.finishNode(node, \"ExportNamedDeclaration\")\n};\n\npp$8.parseExportDeclaration = function(node) {\n return this.parseStatement(null)\n};\n\npp$8.parseExportDefaultDeclaration = function() {\n var isAsync;\n if (this.type === types$1._function || (isAsync = this.isAsyncFunction())) {\n var fNode = this.startNode();\n this.next();\n if (isAsync) { this.next(); }\n return this.parseFunction(fNode, FUNC_STATEMENT | FUNC_NULLABLE_ID, false, isAsync)\n } else if (this.type === types$1._class) {\n var cNode = this.startNode();\n return this.parseClass(cNode, \"nullableID\")\n } else {\n var declaration = this.parseMaybeAssign();\n this.semicolon();\n return declaration\n }\n};\n\npp$8.checkExport = function(exports, name, pos) {\n if (!exports) { return }\n if (typeof name !== \"string\")\n { name = name.type === \"Identifier\" ? name.name : name.value; }\n if (hasOwn(exports, name))\n { this.raiseRecoverable(pos, \"Duplicate export '\" + name + \"'\"); }\n exports[name] = true;\n};\n\npp$8.checkPatternExport = function(exports, pat) {\n var type = pat.type;\n if (type === \"Identifier\")\n { this.checkExport(exports, pat, pat.start); }\n else if (type === \"ObjectPattern\")\n { for (var i = 0, list = pat.properties; i < list.length; i += 1)\n {\n var prop = list[i];\n\n this.checkPatternExport(exports, prop);\n } }\n else if (type === \"ArrayPattern\")\n { for (var i$1 = 0, list$1 = pat.elements; i$1 < list$1.length; i$1 += 1) {\n var elt = list$1[i$1];\n\n if (elt) { this.checkPatternExport(exports, elt); }\n } }\n else if (type === \"Property\")\n { this.checkPatternExport(exports, pat.value); }\n else if (type === \"AssignmentPattern\")\n { this.checkPatternExport(exports, pat.left); }\n else if (type === \"RestElement\")\n { this.checkPatternExport(exports, pat.argument); }\n};\n\npp$8.checkVariableExport = function(exports, decls) {\n if (!exports) { return }\n for (var i = 0, list = decls; i < list.length; i += 1)\n {\n var decl = list[i];\n\n this.checkPatternExport(exports, decl.id);\n }\n};\n\npp$8.shouldParseExportStatement = function() {\n return this.type.keyword === \"var\" ||\n this.type.keyword === \"const\" ||\n this.type.keyword === \"class\" ||\n this.type.keyword === \"function\" ||\n this.isLet() ||\n this.isAsyncFunction()\n};\n\n// Parses a comma-separated list of module exports.\n\npp$8.parseExportSpecifier = function(exports) {\n var node = this.startNode();\n node.local = this.parseModuleExportName();\n\n node.exported = this.eatContextual(\"as\") ? this.parseModuleExportName() : node.local;\n this.checkExport(\n exports,\n node.exported,\n node.exported.start\n );\n\n return this.finishNode(node, \"ExportSpecifier\")\n};\n\npp$8.parseExportSpecifiers = function(exports) {\n var nodes = [], first = true;\n // export { x, y as z } [from '...']\n this.expect(types$1.braceL);\n while (!this.eat(types$1.braceR)) {\n if (!first) {\n this.expect(types$1.comma);\n if (this.afterTrailingComma(types$1.braceR)) { break }\n } else { first = false; }\n\n nodes.push(this.parseExportSpecifier(exports));\n }\n return nodes\n};\n\n// Parses import declaration.\n\npp$8.parseImport = function(node) {\n this.next();\n\n // import '...'\n if (this.type === types$1.string) {\n node.specifiers = empty$1;\n node.source = this.parseExprAtom();\n } else {\n node.specifiers = this.parseImportSpecifiers();\n this.expectContextual(\"from\");\n node.source = this.type === types$1.string ? this.parseExprAtom() : this.unexpected();\n }\n this.semicolon();\n return this.finishNode(node, \"ImportDeclaration\")\n};\n\n// Parses a comma-separated list of module imports.\n\npp$8.parseImportSpecifier = function() {\n var node = this.startNode();\n node.imported = this.parseModuleExportName();\n\n if (this.eatContextual(\"as\")) {\n node.local = this.parseIdent();\n } else {\n this.checkUnreserved(node.imported);\n node.local = node.imported;\n }\n this.checkLValSimple(node.local, BIND_LEXICAL);\n\n return this.finishNode(node, \"ImportSpecifier\")\n};\n\npp$8.parseImportDefaultSpecifier = function() {\n // import defaultObj, { x, y as z } from '...'\n var node = this.startNode();\n node.local = this.parseIdent();\n this.checkLValSimple(node.local, BIND_LEXICAL);\n return this.finishNode(node, \"ImportDefaultSpecifier\")\n};\n\npp$8.parseImportNamespaceSpecifier = function() {\n var node = this.startNode();\n this.next();\n this.expectContextual(\"as\");\n node.local = this.parseIdent();\n this.checkLValSimple(node.local, BIND_LEXICAL);\n return this.finishNode(node, \"ImportNamespaceSpecifier\")\n};\n\npp$8.parseImportSpecifiers = function() {\n var nodes = [], first = true;\n if (this.type === types$1.name) {\n nodes.push(this.parseImportDefaultSpecifier());\n if (!this.eat(types$1.comma)) { return nodes }\n }\n if (this.type === types$1.star) {\n nodes.push(this.parseImportNamespaceSpecifier());\n return nodes\n }\n this.expect(types$1.braceL);\n while (!this.eat(types$1.braceR)) {\n if (!first) {\n this.expect(types$1.comma);\n if (this.afterTrailingComma(types$1.braceR)) { break }\n } else { first = false; }\n\n nodes.push(this.parseImportSpecifier());\n }\n return nodes\n};\n\npp$8.parseModuleExportName = function() {\n if (this.options.ecmaVersion >= 13 && this.type === types$1.string) {\n var stringLiteral = this.parseLiteral(this.value);\n if (loneSurrogate.test(stringLiteral.value)) {\n this.raise(stringLiteral.start, \"An export name cannot include a lone surrogate.\");\n }\n return stringLiteral\n }\n return this.parseIdent(true)\n};\n\n// Set `ExpressionStatement#directive` property for directive prologues.\npp$8.adaptDirectivePrologue = function(statements) {\n for (var i = 0; i < statements.length && this.isDirectiveCandidate(statements[i]); ++i) {\n statements[i].directive = statements[i].expression.raw.slice(1, -1);\n }\n};\npp$8.isDirectiveCandidate = function(statement) {\n return (\n this.options.ecmaVersion >= 5 &&\n statement.type === \"ExpressionStatement\" &&\n statement.expression.type === \"Literal\" &&\n typeof statement.expression.value === \"string\" &&\n // Reject parenthesized strings.\n (this.input[statement.start] === \"\\\"\" || this.input[statement.start] === \"'\")\n )\n};\n\nvar pp$7 = Parser.prototype;\n\n// Convert existing expression atom to assignable pattern\n// if possible.\n\npp$7.toAssignable = function(node, isBinding, refDestructuringErrors) {\n if (this.options.ecmaVersion >= 6 && node) {\n switch (node.type) {\n case \"Identifier\":\n if (this.inAsync && node.name === \"await\")\n { this.raise(node.start, \"Cannot use 'await' as identifier inside an async function\"); }\n break\n\n case \"ObjectPattern\":\n case \"ArrayPattern\":\n case \"AssignmentPattern\":\n case \"RestElement\":\n break\n\n case \"ObjectExpression\":\n node.type = \"ObjectPattern\";\n if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n for (var i = 0, list = node.properties; i < list.length; i += 1) {\n var prop = list[i];\n\n this.toAssignable(prop, isBinding);\n // Early error:\n // AssignmentRestProperty[Yield, Await] :\n // `...` DestructuringAssignmentTarget[Yield, Await]\n //\n // It is a Syntax Error if |DestructuringAssignmentTarget| is an |ArrayLiteral| or an |ObjectLiteral|.\n if (\n prop.type === \"RestElement\" &&\n (prop.argument.type === \"ArrayPattern\" || prop.argument.type === \"ObjectPattern\")\n ) {\n this.raise(prop.argument.start, \"Unexpected token\");\n }\n }\n break\n\n case \"Property\":\n // AssignmentProperty has type === \"Property\"\n if (node.kind !== \"init\") { this.raise(node.key.start, \"Object pattern can't contain getter or setter\"); }\n this.toAssignable(node.value, isBinding);\n break\n\n case \"ArrayExpression\":\n node.type = \"ArrayPattern\";\n if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n this.toAssignableList(node.elements, isBinding);\n break\n\n case \"SpreadElement\":\n node.type = \"RestElement\";\n this.toAssignable(node.argument, isBinding);\n if (node.argument.type === \"AssignmentPattern\")\n { this.raise(node.argument.start, \"Rest elements cannot have a default value\"); }\n break\n\n case \"AssignmentExpression\":\n if (node.operator !== \"=\") { this.raise(node.left.end, \"Only '=' operator can be used for specifying default value.\"); }\n node.type = \"AssignmentPattern\";\n delete node.operator;\n this.toAssignable(node.left, isBinding);\n break\n\n case \"ParenthesizedExpression\":\n this.toAssignable(node.expression, isBinding, refDestructuringErrors);\n break\n\n case \"ChainExpression\":\n this.raiseRecoverable(node.start, \"Optional chaining cannot appear in left-hand side\");\n break\n\n case \"MemberExpression\":\n if (!isBinding) { break }\n\n default:\n this.raise(node.start, \"Assigning to rvalue\");\n }\n } else if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n return node\n};\n\n// Convert list of expression atoms to binding list.\n\npp$7.toAssignableList = function(exprList, isBinding) {\n var end = exprList.length;\n for (var i = 0; i < end; i++) {\n var elt = exprList[i];\n if (elt) { this.toAssignable(elt, isBinding); }\n }\n if (end) {\n var last = exprList[end - 1];\n if (this.options.ecmaVersion === 6 && isBinding && last && last.type === \"RestElement\" && last.argument.type !== \"Identifier\")\n { this.unexpected(last.argument.start); }\n }\n return exprList\n};\n\n// Parses spread element.\n\npp$7.parseSpread = function(refDestructuringErrors) {\n var node = this.startNode();\n this.next();\n node.argument = this.parseMaybeAssign(false, refDestructuringErrors);\n return this.finishNode(node, \"SpreadElement\")\n};\n\npp$7.parseRestBinding = function() {\n var node = this.startNode();\n this.next();\n\n // RestElement inside of a function parameter must be an identifier\n if (this.options.ecmaVersion === 6 && this.type !== types$1.name)\n { this.unexpected(); }\n\n node.argument = this.parseBindingAtom();\n\n return this.finishNode(node, \"RestElement\")\n};\n\n// Parses lvalue (assignable) atom.\n\npp$7.parseBindingAtom = function() {\n if (this.options.ecmaVersion >= 6) {\n switch (this.type) {\n case types$1.bracketL:\n var node = this.startNode();\n this.next();\n node.elements = this.parseBindingList(types$1.bracketR, true, true);\n return this.finishNode(node, \"ArrayPattern\")\n\n case types$1.braceL:\n return this.parseObj(true)\n }\n }\n return this.parseIdent()\n};\n\npp$7.parseBindingList = function(close, allowEmpty, allowTrailingComma, allowModifiers) {\n var elts = [], first = true;\n while (!this.eat(close)) {\n if (first) { first = false; }\n else { this.expect(types$1.comma); }\n if (allowEmpty && this.type === types$1.comma) {\n elts.push(null);\n } else if (allowTrailingComma && this.afterTrailingComma(close)) {\n break\n } else if (this.type === types$1.ellipsis) {\n var rest = this.parseRestBinding();\n this.parseBindingListItem(rest);\n elts.push(rest);\n if (this.type === types$1.comma) { this.raiseRecoverable(this.start, \"Comma is not permitted after the rest element\"); }\n this.expect(close);\n break\n } else {\n elts.push(this.parseAssignableListItem(allowModifiers));\n }\n }\n return elts\n};\n\npp$7.parseAssignableListItem = function(allowModifiers) {\n var elem = this.parseMaybeDefault(this.start, this.startLoc);\n this.parseBindingListItem(elem);\n return elem\n};\n\npp$7.parseBindingListItem = function(param) {\n return param\n};\n\n// Parses assignment pattern around given atom if possible.\n\npp$7.parseMaybeDefault = function(startPos, startLoc, left) {\n left = left || this.parseBindingAtom();\n if (this.options.ecmaVersion < 6 || !this.eat(types$1.eq)) { return left }\n var node = this.startNodeAt(startPos, startLoc);\n node.left = left;\n node.right = this.parseMaybeAssign();\n return this.finishNode(node, \"AssignmentPattern\")\n};\n\n// The following three functions all verify that a node is an lvalue —\n// something that can be bound, or assigned to. In order to do so, they perform\n// a variety of checks:\n//\n// - Check that none of the bound/assigned-to identifiers are reserved words.\n// - Record name declarations for bindings in the appropriate scope.\n// - Check duplicate argument names, if checkClashes is set.\n//\n// If a complex binding pattern is encountered (e.g., object and array\n// destructuring), the entire pattern is recursively checked.\n//\n// There are three versions of checkLVal*() appropriate for different\n// circumstances:\n//\n// - checkLValSimple() shall be used if the syntactic construct supports\n// nothing other than identifiers and member expressions. Parenthesized\n// expressions are also correctly handled. This is generally appropriate for\n// constructs for which the spec says\n//\n// > It is a Syntax Error if AssignmentTargetType of [the production] is not\n// > simple.\n//\n// It is also appropriate for checking if an identifier is valid and not\n// defined elsewhere, like import declarations or function/class identifiers.\n//\n// Examples where this is used include:\n// a += …;\n// import a from '…';\n// where a is the node to be checked.\n//\n// - checkLValPattern() shall be used if the syntactic construct supports\n// anything checkLValSimple() supports, as well as object and array\n// destructuring patterns. This is generally appropriate for constructs for\n// which the spec says\n//\n// > It is a Syntax Error if [the production] is neither an ObjectLiteral nor\n// > an ArrayLiteral and AssignmentTargetType of [the production] is not\n// > simple.\n//\n// Examples where this is used include:\n// (a = …);\n// const a = …;\n// try { … } catch (a) { … }\n// where a is the node to be checked.\n//\n// - checkLValInnerPattern() shall be used if the syntactic construct supports\n// anything checkLValPattern() supports, as well as default assignment\n// patterns, rest elements, and other constructs that may appear within an\n// object or array destructuring pattern.\n//\n// As a special case, function parameters also use checkLValInnerPattern(),\n// as they also support defaults and rest constructs.\n//\n// These functions deliberately support both assignment and binding constructs,\n// as the logic for both is exceedingly similar. If the node is the target of\n// an assignment, then bindingType should be set to BIND_NONE. Otherwise, it\n// should be set to the appropriate BIND_* constant, like BIND_VAR or\n// BIND_LEXICAL.\n//\n// If the function is called with a non-BIND_NONE bindingType, then\n// additionally a checkClashes object may be specified to allow checking for\n// duplicate argument names. checkClashes is ignored if the provided construct\n// is an assignment (i.e., bindingType is BIND_NONE).\n\npp$7.checkLValSimple = function(expr, bindingType, checkClashes) {\n if ( bindingType === void 0 ) bindingType = BIND_NONE;\n\n var isBind = bindingType !== BIND_NONE;\n\n switch (expr.type) {\n case \"Identifier\":\n if (this.strict && this.reservedWordsStrictBind.test(expr.name))\n { this.raiseRecoverable(expr.start, (isBind ? \"Binding \" : \"Assigning to \") + expr.name + \" in strict mode\"); }\n if (isBind) {\n if (bindingType === BIND_LEXICAL && expr.name === \"let\")\n { this.raiseRecoverable(expr.start, \"let is disallowed as a lexically bound name\"); }\n if (checkClashes) {\n if (hasOwn(checkClashes, expr.name))\n { this.raiseRecoverable(expr.start, \"Argument name clash\"); }\n checkClashes[expr.name] = true;\n }\n if (bindingType !== BIND_OUTSIDE) { this.declareName(expr.name, bindingType, expr.start); }\n }\n break\n\n case \"ChainExpression\":\n this.raiseRecoverable(expr.start, \"Optional chaining cannot appear in left-hand side\");\n break\n\n case \"MemberExpression\":\n if (isBind) { this.raiseRecoverable(expr.start, \"Binding member expression\"); }\n break\n\n case \"ParenthesizedExpression\":\n if (isBind) { this.raiseRecoverable(expr.start, \"Binding parenthesized expression\"); }\n return this.checkLValSimple(expr.expression, bindingType, checkClashes)\n\n default:\n this.raise(expr.start, (isBind ? \"Binding\" : \"Assigning to\") + \" rvalue\");\n }\n};\n\npp$7.checkLValPattern = function(expr, bindingType, checkClashes) {\n if ( bindingType === void 0 ) bindingType = BIND_NONE;\n\n switch (expr.type) {\n case \"ObjectPattern\":\n for (var i = 0, list = expr.properties; i < list.length; i += 1) {\n var prop = list[i];\n\n this.checkLValInnerPattern(prop, bindingType, checkClashes);\n }\n break\n\n case \"ArrayPattern\":\n for (var i$1 = 0, list$1 = expr.elements; i$1 < list$1.length; i$1 += 1) {\n var elem = list$1[i$1];\n\n if (elem) { this.checkLValInnerPattern(elem, bindingType, checkClashes); }\n }\n break\n\n default:\n this.checkLValSimple(expr, bindingType, checkClashes);\n }\n};\n\npp$7.checkLValInnerPattern = function(expr, bindingType, checkClashes) {\n if ( bindingType === void 0 ) bindingType = BIND_NONE;\n\n switch (expr.type) {\n case \"Property\":\n // AssignmentProperty has type === \"Property\"\n this.checkLValInnerPattern(expr.value, bindingType, checkClashes);\n break\n\n case \"AssignmentPattern\":\n this.checkLValPattern(expr.left, bindingType, checkClashes);\n break\n\n case \"RestElement\":\n this.checkLValPattern(expr.argument, bindingType, checkClashes);\n break\n\n default:\n this.checkLValPattern(expr, bindingType, checkClashes);\n }\n};\n\n// The algorithm used to determine whether a regexp can appear at a\n// given point in the program is loosely based on sweet.js' approach.\n// See https://github.com/mozilla/sweet.js/wiki/design\n\n\nvar TokContext = function TokContext(token, isExpr, preserveSpace, override, generator) {\n this.token = token;\n this.isExpr = !!isExpr;\n this.preserveSpace = !!preserveSpace;\n this.override = override;\n this.generator = !!generator;\n};\n\nvar types = {\n b_stat: new TokContext(\"{\", false),\n b_expr: new TokContext(\"{\", true),\n b_tmpl: new TokContext(\"${\", false),\n p_stat: new TokContext(\"(\", false),\n p_expr: new TokContext(\"(\", true),\n q_tmpl: new TokContext(\"`\", true, true, function (p) { return p.tryReadTemplateToken(); }),\n f_stat: new TokContext(\"function\", false),\n f_expr: new TokContext(\"function\", true),\n f_expr_gen: new TokContext(\"function\", true, false, null, true),\n f_gen: new TokContext(\"function\", false, false, null, true)\n};\n\nvar pp$6 = Parser.prototype;\n\npp$6.initialContext = function() {\n return [types.b_stat]\n};\n\npp$6.curContext = function() {\n return this.context[this.context.length - 1]\n};\n\npp$6.braceIsBlock = function(prevType) {\n var parent = this.curContext();\n if (parent === types.f_expr || parent === types.f_stat)\n { return true }\n if (prevType === types$1.colon && (parent === types.b_stat || parent === types.b_expr))\n { return !parent.isExpr }\n\n // The check for `tt.name && exprAllowed` detects whether we are\n // after a `yield` or `of` construct. See the `updateContext` for\n // `tt.name`.\n if (prevType === types$1._return || prevType === types$1.name && this.exprAllowed)\n { return lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) }\n if (prevType === types$1._else || prevType === types$1.semi || prevType === types$1.eof || prevType === types$1.parenR || prevType === types$1.arrow)\n { return true }\n if (prevType === types$1.braceL)\n { return parent === types.b_stat }\n if (prevType === types$1._var || prevType === types$1._const || prevType === types$1.name)\n { return false }\n return !this.exprAllowed\n};\n\npp$6.inGeneratorContext = function() {\n for (var i = this.context.length - 1; i >= 1; i--) {\n var context = this.context[i];\n if (context.token === \"function\")\n { return context.generator }\n }\n return false\n};\n\npp$6.updateContext = function(prevType) {\n var update, type = this.type;\n if (type.keyword && prevType === types$1.dot)\n { this.exprAllowed = false; }\n else if (update = type.updateContext)\n { update.call(this, prevType); }\n else\n { this.exprAllowed = type.beforeExpr; }\n};\n\n// Used to handle edge cases when token context could not be inferred correctly during tokenization phase\n\npp$6.overrideContext = function(tokenCtx) {\n if (this.curContext() !== tokenCtx) {\n this.context[this.context.length - 1] = tokenCtx;\n }\n};\n\n// Token-specific context update code\n\ntypes$1.parenR.updateContext = types$1.braceR.updateContext = function() {\n if (this.context.length === 1) {\n this.exprAllowed = true;\n return\n }\n var out = this.context.pop();\n if (out === types.b_stat && this.curContext().token === \"function\") {\n out = this.context.pop();\n }\n this.exprAllowed = !out.isExpr;\n};\n\ntypes$1.braceL.updateContext = function(prevType) {\n this.context.push(this.braceIsBlock(prevType) ? types.b_stat : types.b_expr);\n this.exprAllowed = true;\n};\n\ntypes$1.dollarBraceL.updateContext = function() {\n this.context.push(types.b_tmpl);\n this.exprAllowed = true;\n};\n\ntypes$1.parenL.updateContext = function(prevType) {\n var statementParens = prevType === types$1._if || prevType === types$1._for || prevType === types$1._with || prevType === types$1._while;\n this.context.push(statementParens ? types.p_stat : types.p_expr);\n this.exprAllowed = true;\n};\n\ntypes$1.incDec.updateContext = function() {\n // tokExprAllowed stays unchanged\n};\n\ntypes$1._function.updateContext = types$1._class.updateContext = function(prevType) {\n if (prevType.beforeExpr && prevType !== types$1._else &&\n !(prevType === types$1.semi && this.curContext() !== types.p_stat) &&\n !(prevType === types$1._return && lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) &&\n !((prevType === types$1.colon || prevType === types$1.braceL) && this.curContext() === types.b_stat))\n { this.context.push(types.f_expr); }\n else\n { this.context.push(types.f_stat); }\n this.exprAllowed = false;\n};\n\ntypes$1.colon.updateContext = function() {\n if (this.curContext().token === \"function\") { this.context.pop(); }\n this.exprAllowed = true;\n};\n\ntypes$1.backQuote.updateContext = function() {\n if (this.curContext() === types.q_tmpl)\n { this.context.pop(); }\n else\n { this.context.push(types.q_tmpl); }\n this.exprAllowed = false;\n};\n\ntypes$1.star.updateContext = function(prevType) {\n if (prevType === types$1._function) {\n var index = this.context.length - 1;\n if (this.context[index] === types.f_expr)\n { this.context[index] = types.f_expr_gen; }\n else\n { this.context[index] = types.f_gen; }\n }\n this.exprAllowed = true;\n};\n\ntypes$1.name.updateContext = function(prevType) {\n var allowed = false;\n if (this.options.ecmaVersion >= 6 && prevType !== types$1.dot) {\n if (this.value === \"of\" && !this.exprAllowed ||\n this.value === \"yield\" && this.inGeneratorContext())\n { allowed = true; }\n }\n this.exprAllowed = allowed;\n};\n\n// A recursive descent parser operates by defining functions for all\n// syntactic elements, and recursively calling those, each function\n// advancing the input stream and returning an AST node. Precedence\n// of constructs (for example, the fact that `!x[1]` means `!(x[1])`\n// instead of `(!x)[1]` is handled by the fact that the parser\n// function that parses unary prefix operators is called first, and\n// in turn calls the function that parses `[]` subscripts — that\n// way, it'll receive the node for `x[1]` already parsed, and wraps\n// *that* in the unary operator node.\n//\n// Acorn uses an [operator precedence parser][opp] to handle binary\n// operator precedence, because it is much more compact than using\n// the technique outlined above, which uses different, nesting\n// functions to specify precedence, for all of the ten binary\n// precedence levels that JavaScript defines.\n//\n// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser\n\n\nvar pp$5 = Parser.prototype;\n\n// Check if property name clashes with already added.\n// Object/class getters and setters are not allowed to clash —\n// either with each other or with an init property — and in\n// strict mode, init properties are also not allowed to be repeated.\n\npp$5.checkPropClash = function(prop, propHash, refDestructuringErrors) {\n if (this.options.ecmaVersion >= 9 && prop.type === \"SpreadElement\")\n { return }\n if (this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand))\n { return }\n var key = prop.key;\n var name;\n switch (key.type) {\n case \"Identifier\": name = key.name; break\n case \"Literal\": name = String(key.value); break\n default: return\n }\n var kind = prop.kind;\n if (this.options.ecmaVersion >= 6) {\n if (name === \"__proto__\" && kind === \"init\") {\n if (propHash.proto) {\n if (refDestructuringErrors) {\n if (refDestructuringErrors.doubleProto < 0) {\n refDestructuringErrors.doubleProto = key.start;\n }\n } else {\n this.raiseRecoverable(key.start, \"Redefinition of __proto__ property\");\n }\n }\n propHash.proto = true;\n }\n return\n }\n name = \"$\" + name;\n var other = propHash[name];\n if (other) {\n var redefinition;\n if (kind === \"init\") {\n redefinition = this.strict && other.init || other.get || other.set;\n } else {\n redefinition = other.init || other[kind];\n }\n if (redefinition)\n { this.raiseRecoverable(key.start, \"Redefinition of property\"); }\n } else {\n other = propHash[name] = {\n init: false,\n get: false,\n set: false\n };\n }\n other[kind] = true;\n};\n\n// ### Expression parsing\n\n// These nest, from the most general expression type at the top to\n// 'atomic', nondivisible expression types at the bottom. Most of\n// the functions will simply let the function(s) below them parse,\n// and, *if* the syntactic construct they handle is present, wrap\n// the AST node that the inner parser gave them in another node.\n\n// Parse a full expression. The optional arguments are used to\n// forbid the `in` operator (in for loops initalization expressions)\n// and provide reference for storing '=' operator inside shorthand\n// property assignment in contexts where both object expression\n// and object pattern might appear (so it's possible to raise\n// delayed syntax error at correct position).\n\npp$5.parseExpression = function(forInit, refDestructuringErrors) {\n var startPos = this.start, startLoc = this.startLoc;\n var expr = this.parseMaybeAssign(forInit, refDestructuringErrors);\n if (this.type === types$1.comma) {\n var node = this.startNodeAt(startPos, startLoc);\n node.expressions = [expr];\n while (this.eat(types$1.comma)) { node.expressions.push(this.parseMaybeAssign(forInit, refDestructuringErrors)); }\n return this.finishNode(node, \"SequenceExpression\")\n }\n return expr\n};\n\n// Parse an assignment expression. This includes applications of\n// operators like `+=`.\n\npp$5.parseMaybeAssign = function(forInit, refDestructuringErrors, afterLeftParse) {\n if (this.isContextual(\"yield\")) {\n if (this.inGenerator) { return this.parseYield(forInit) }\n // The tokenizer will assume an expression is allowed after\n // `yield`, but this isn't that kind of yield\n else { this.exprAllowed = false; }\n }\n\n var ownDestructuringErrors = false, oldParenAssign = -1, oldTrailingComma = -1, oldDoubleProto = -1;\n if (refDestructuringErrors) {\n oldParenAssign = refDestructuringErrors.parenthesizedAssign;\n oldTrailingComma = refDestructuringErrors.trailingComma;\n oldDoubleProto = refDestructuringErrors.doubleProto;\n refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = -1;\n } else {\n refDestructuringErrors = new DestructuringErrors;\n ownDestructuringErrors = true;\n }\n\n var startPos = this.start, startLoc = this.startLoc;\n if (this.type === types$1.parenL || this.type === types$1.name) {\n this.potentialArrowAt = this.start;\n this.potentialArrowInForAwait = forInit === \"await\";\n }\n var left = this.parseMaybeConditional(forInit, refDestructuringErrors);\n if (afterLeftParse) { left = afterLeftParse.call(this, left, startPos, startLoc); }\n if (this.type.isAssign) {\n var node = this.startNodeAt(startPos, startLoc);\n node.operator = this.value;\n if (this.type === types$1.eq)\n { left = this.toAssignable(left, false, refDestructuringErrors); }\n if (!ownDestructuringErrors) {\n refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = refDestructuringErrors.doubleProto = -1;\n }\n if (refDestructuringErrors.shorthandAssign >= left.start)\n { refDestructuringErrors.shorthandAssign = -1; } // reset because shorthand default was used correctly\n if (this.type === types$1.eq)\n { this.checkLValPattern(left); }\n else\n { this.checkLValSimple(left); }\n node.left = left;\n this.next();\n node.right = this.parseMaybeAssign(forInit);\n if (oldDoubleProto > -1) { refDestructuringErrors.doubleProto = oldDoubleProto; }\n return this.finishNode(node, \"AssignmentExpression\")\n } else {\n if (ownDestructuringErrors) { this.checkExpressionErrors(refDestructuringErrors, true); }\n }\n if (oldParenAssign > -1) { refDestructuringErrors.parenthesizedAssign = oldParenAssign; }\n if (oldTrailingComma > -1) { refDestructuringErrors.trailingComma = oldTrailingComma; }\n return left\n};\n\n// Parse a ternary conditional (`?:`) operator.\n\npp$5.parseMaybeConditional = function(forInit, refDestructuringErrors) {\n var startPos = this.start, startLoc = this.startLoc;\n var expr = this.parseExprOps(forInit, refDestructuringErrors);\n if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n if (this.eat(types$1.question)) {\n var node = this.startNodeAt(startPos, startLoc);\n node.test = expr;\n node.consequent = this.parseMaybeAssign();\n this.expect(types$1.colon);\n node.alternate = this.parseMaybeAssign(forInit);\n return this.finishNode(node, \"ConditionalExpression\")\n }\n return expr\n};\n\n// Start the precedence parser.\n\npp$5.parseExprOps = function(forInit, refDestructuringErrors) {\n var startPos = this.start, startLoc = this.startLoc;\n var expr = this.parseMaybeUnary(refDestructuringErrors, false, false, forInit);\n if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n return expr.start === startPos && expr.type === \"ArrowFunctionExpression\" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, forInit)\n};\n\n// Parse binary operators with the operator precedence parsing\n// algorithm. `left` is the left-hand side of the operator.\n// `minPrec` provides context that allows the function to stop and\n// defer further parser to one of its callers when it encounters an\n// operator that has a lower precedence than the set it is parsing.\n\npp$5.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, forInit) {\n var prec = this.type.binop;\n if (prec != null && (!forInit || this.type !== types$1._in)) {\n if (prec > minPrec) {\n var logical = this.type === types$1.logicalOR || this.type === types$1.logicalAND;\n var coalesce = this.type === types$1.coalesce;\n if (coalesce) {\n // Handle the precedence of `tt.coalesce` as equal to the range of logical expressions.\n // In other words, `node.right` shouldn't contain logical expressions in order to check the mixed error.\n prec = types$1.logicalAND.binop;\n }\n var op = this.value;\n this.next();\n var startPos = this.start, startLoc = this.startLoc;\n var right = this.parseExprOp(this.parseMaybeUnary(null, false, false, forInit), startPos, startLoc, prec, forInit);\n var node = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical || coalesce);\n if ((logical && this.type === types$1.coalesce) || (coalesce && (this.type === types$1.logicalOR || this.type === types$1.logicalAND))) {\n this.raiseRecoverable(this.start, \"Logical expressions and coalesce expressions cannot be mixed. Wrap either by parentheses\");\n }\n return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, forInit)\n }\n }\n return left\n};\n\npp$5.buildBinary = function(startPos, startLoc, left, right, op, logical) {\n if (right.type === \"PrivateIdentifier\") { this.raise(right.start, \"Private identifier can only be left side of binary expression\"); }\n var node = this.startNodeAt(startPos, startLoc);\n node.left = left;\n node.operator = op;\n node.right = right;\n return this.finishNode(node, logical ? \"LogicalExpression\" : \"BinaryExpression\")\n};\n\n// Parse unary operators, both prefix and postfix.\n\npp$5.parseMaybeUnary = function(refDestructuringErrors, sawUnary, incDec, forInit) {\n var startPos = this.start, startLoc = this.startLoc, expr;\n if (this.isContextual(\"await\") && this.canAwait) {\n expr = this.parseAwait(forInit);\n sawUnary = true;\n } else if (this.type.prefix) {\n var node = this.startNode(), update = this.type === types$1.incDec;\n node.operator = this.value;\n node.prefix = true;\n this.next();\n node.argument = this.parseMaybeUnary(null, true, update, forInit);\n this.checkExpressionErrors(refDestructuringErrors, true);\n if (update) { this.checkLValSimple(node.argument); }\n else if (this.strict && node.operator === \"delete\" &&\n node.argument.type === \"Identifier\")\n { this.raiseRecoverable(node.start, \"Deleting local variable in strict mode\"); }\n else if (node.operator === \"delete\" && isPrivateFieldAccess(node.argument))\n { this.raiseRecoverable(node.start, \"Private fields can not be deleted\"); }\n else { sawUnary = true; }\n expr = this.finishNode(node, update ? \"UpdateExpression\" : \"UnaryExpression\");\n } else if (!sawUnary && this.type === types$1.privateId) {\n if ((forInit || this.privateNameStack.length === 0) && this.options.checkPrivateFields) { this.unexpected(); }\n expr = this.parsePrivateIdent();\n // only could be private fields in 'in', such as #x in obj\n if (this.type !== types$1._in) { this.unexpected(); }\n } else {\n expr = this.parseExprSubscripts(refDestructuringErrors, forInit);\n if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n while (this.type.postfix && !this.canInsertSemicolon()) {\n var node$1 = this.startNodeAt(startPos, startLoc);\n node$1.operator = this.value;\n node$1.prefix = false;\n node$1.argument = expr;\n this.checkLValSimple(expr);\n this.next();\n expr = this.finishNode(node$1, \"UpdateExpression\");\n }\n }\n\n if (!incDec && this.eat(types$1.starstar)) {\n if (sawUnary)\n { this.unexpected(this.lastTokStart); }\n else\n { return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, false, false, forInit), \"**\", false) }\n } else {\n return expr\n }\n};\n\nfunction isPrivateFieldAccess(node) {\n return (\n node.type === \"MemberExpression\" && node.property.type === \"PrivateIdentifier\" ||\n node.type === \"ChainExpression\" && isPrivateFieldAccess(node.expression)\n )\n}\n\n// Parse call, dot, and `[]`-subscript expressions.\n\npp$5.parseExprSubscripts = function(refDestructuringErrors, forInit) {\n var startPos = this.start, startLoc = this.startLoc;\n var expr = this.parseExprAtom(refDestructuringErrors, forInit);\n if (expr.type === \"ArrowFunctionExpression\" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== \")\")\n { return expr }\n var result = this.parseSubscripts(expr, startPos, startLoc, false, forInit);\n if (refDestructuringErrors && result.type === \"MemberExpression\") {\n if (refDestructuringErrors.parenthesizedAssign >= result.start) { refDestructuringErrors.parenthesizedAssign = -1; }\n if (refDestructuringErrors.parenthesizedBind >= result.start) { refDestructuringErrors.parenthesizedBind = -1; }\n if (refDestructuringErrors.trailingComma >= result.start) { refDestructuringErrors.trailingComma = -1; }\n }\n return result\n};\n\npp$5.parseSubscripts = function(base, startPos, startLoc, noCalls, forInit) {\n var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === \"Identifier\" && base.name === \"async\" &&\n this.lastTokEnd === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 &&\n this.potentialArrowAt === base.start;\n var optionalChained = false;\n\n while (true) {\n var element = this.parseSubscript(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit);\n\n if (element.optional) { optionalChained = true; }\n if (element === base || element.type === \"ArrowFunctionExpression\") {\n if (optionalChained) {\n var chainNode = this.startNodeAt(startPos, startLoc);\n chainNode.expression = element;\n element = this.finishNode(chainNode, \"ChainExpression\");\n }\n return element\n }\n\n base = element;\n }\n};\n\npp$5.shouldParseAsyncArrow = function() {\n return !this.canInsertSemicolon() && this.eat(types$1.arrow)\n};\n\npp$5.parseSubscriptAsyncArrow = function(startPos, startLoc, exprList, forInit) {\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, true, forInit)\n};\n\npp$5.parseSubscript = function(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit) {\n var optionalSupported = this.options.ecmaVersion >= 11;\n var optional = optionalSupported && this.eat(types$1.questionDot);\n if (noCalls && optional) { this.raise(this.lastTokStart, \"Optional chaining cannot appear in the callee of new expressions\"); }\n\n var computed = this.eat(types$1.bracketL);\n if (computed || (optional && this.type !== types$1.parenL && this.type !== types$1.backQuote) || this.eat(types$1.dot)) {\n var node = this.startNodeAt(startPos, startLoc);\n node.object = base;\n if (computed) {\n node.property = this.parseExpression();\n this.expect(types$1.bracketR);\n } else if (this.type === types$1.privateId && base.type !== \"Super\") {\n node.property = this.parsePrivateIdent();\n } else {\n node.property = this.parseIdent(this.options.allowReserved !== \"never\");\n }\n node.computed = !!computed;\n if (optionalSupported) {\n node.optional = optional;\n }\n base = this.finishNode(node, \"MemberExpression\");\n } else if (!noCalls && this.eat(types$1.parenL)) {\n var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n this.yieldPos = 0;\n this.awaitPos = 0;\n this.awaitIdentPos = 0;\n var exprList = this.parseExprList(types$1.parenR, this.options.ecmaVersion >= 8, false, refDestructuringErrors);\n if (maybeAsyncArrow && !optional && this.shouldParseAsyncArrow()) {\n this.checkPatternErrors(refDestructuringErrors, false);\n this.checkYieldAwaitInDefaultParams();\n if (this.awaitIdentPos > 0)\n { this.raise(this.awaitIdentPos, \"Cannot use 'await' as identifier inside an async function\"); }\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n this.awaitIdentPos = oldAwaitIdentPos;\n return this.parseSubscriptAsyncArrow(startPos, startLoc, exprList, forInit)\n }\n this.checkExpressionErrors(refDestructuringErrors, true);\n this.yieldPos = oldYieldPos || this.yieldPos;\n this.awaitPos = oldAwaitPos || this.awaitPos;\n this.awaitIdentPos = oldAwaitIdentPos || this.awaitIdentPos;\n var node$1 = this.startNodeAt(startPos, startLoc);\n node$1.callee = base;\n node$1.arguments = exprList;\n if (optionalSupported) {\n node$1.optional = optional;\n }\n base = this.finishNode(node$1, \"CallExpression\");\n } else if (this.type === types$1.backQuote) {\n if (optional || optionalChained) {\n this.raise(this.start, \"Optional chaining cannot appear in the tag of tagged template expressions\");\n }\n var node$2 = this.startNodeAt(startPos, startLoc);\n node$2.tag = base;\n node$2.quasi = this.parseTemplate({isTagged: true});\n base = this.finishNode(node$2, \"TaggedTemplateExpression\");\n }\n return base\n};\n\n// Parse an atomic expression — either a single token that is an\n// expression, an expression started by a keyword like `function` or\n// `new`, or an expression wrapped in punctuation like `()`, `[]`,\n// or `{}`.\n\npp$5.parseExprAtom = function(refDestructuringErrors, forInit, forNew) {\n // If a division operator appears in an expression position, the\n // tokenizer got confused, and we force it to read a regexp instead.\n if (this.type === types$1.slash) { this.readRegexp(); }\n\n var node, canBeArrow = this.potentialArrowAt === this.start;\n switch (this.type) {\n case types$1._super:\n if (!this.allowSuper)\n { this.raise(this.start, \"'super' keyword outside a method\"); }\n node = this.startNode();\n this.next();\n if (this.type === types$1.parenL && !this.allowDirectSuper)\n { this.raise(node.start, \"super() call outside constructor of a subclass\"); }\n // The `super` keyword can appear at below:\n // SuperProperty:\n // super [ Expression ]\n // super . IdentifierName\n // SuperCall:\n // super ( Arguments )\n if (this.type !== types$1.dot && this.type !== types$1.bracketL && this.type !== types$1.parenL)\n { this.unexpected(); }\n return this.finishNode(node, \"Super\")\n\n case types$1._this:\n node = this.startNode();\n this.next();\n return this.finishNode(node, \"ThisExpression\")\n\n case types$1.name:\n var startPos = this.start, startLoc = this.startLoc, containsEsc = this.containsEsc;\n var id = this.parseIdent(false);\n if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === \"async\" && !this.canInsertSemicolon() && this.eat(types$1._function)) {\n this.overrideContext(types.f_expr);\n return this.parseFunction(this.startNodeAt(startPos, startLoc), 0, false, true, forInit)\n }\n if (canBeArrow && !this.canInsertSemicolon()) {\n if (this.eat(types$1.arrow))\n { return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false, forInit) }\n if (this.options.ecmaVersion >= 8 && id.name === \"async\" && this.type === types$1.name && !containsEsc &&\n (!this.potentialArrowInForAwait || this.value !== \"of\" || this.containsEsc)) {\n id = this.parseIdent(false);\n if (this.canInsertSemicolon() || !this.eat(types$1.arrow))\n { this.unexpected(); }\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true, forInit)\n }\n }\n return id\n\n case types$1.regexp:\n var value = this.value;\n node = this.parseLiteral(value.value);\n node.regex = {pattern: value.pattern, flags: value.flags};\n return node\n\n case types$1.num: case types$1.string:\n return this.parseLiteral(this.value)\n\n case types$1._null: case types$1._true: case types$1._false:\n node = this.startNode();\n node.value = this.type === types$1._null ? null : this.type === types$1._true;\n node.raw = this.type.keyword;\n this.next();\n return this.finishNode(node, \"Literal\")\n\n case types$1.parenL:\n var start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow, forInit);\n if (refDestructuringErrors) {\n if (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr))\n { refDestructuringErrors.parenthesizedAssign = start; }\n if (refDestructuringErrors.parenthesizedBind < 0)\n { refDestructuringErrors.parenthesizedBind = start; }\n }\n return expr\n\n case types$1.bracketL:\n node = this.startNode();\n this.next();\n node.elements = this.parseExprList(types$1.bracketR, true, true, refDestructuringErrors);\n return this.finishNode(node, \"ArrayExpression\")\n\n case types$1.braceL:\n this.overrideContext(types.b_expr);\n return this.parseObj(false, refDestructuringErrors)\n\n case types$1._function:\n node = this.startNode();\n this.next();\n return this.parseFunction(node, 0)\n\n case types$1._class:\n return this.parseClass(this.startNode(), false)\n\n case types$1._new:\n return this.parseNew()\n\n case types$1.backQuote:\n return this.parseTemplate()\n\n case types$1._import:\n if (this.options.ecmaVersion >= 11) {\n return this.parseExprImport(forNew)\n } else {\n return this.unexpected()\n }\n\n default:\n return this.parseExprAtomDefault()\n }\n};\n\npp$5.parseExprAtomDefault = function() {\n this.unexpected();\n};\n\npp$5.parseExprImport = function(forNew) {\n var node = this.startNode();\n\n // Consume `import` as an identifier for `import.meta`.\n // Because `this.parseIdent(true)` doesn't check escape sequences, it needs the check of `this.containsEsc`.\n if (this.containsEsc) { this.raiseRecoverable(this.start, \"Escape sequence in keyword import\"); }\n this.next();\n\n if (this.type === types$1.parenL && !forNew) {\n return this.parseDynamicImport(node)\n } else if (this.type === types$1.dot) {\n var meta = this.startNodeAt(node.start, node.loc && node.loc.start);\n meta.name = \"import\";\n node.meta = this.finishNode(meta, \"Identifier\");\n return this.parseImportMeta(node)\n } else {\n this.unexpected();\n }\n};\n\npp$5.parseDynamicImport = function(node) {\n this.next(); // skip `(`\n\n // Parse node.source.\n node.source = this.parseMaybeAssign();\n\n // Verify ending.\n if (!this.eat(types$1.parenR)) {\n var errorPos = this.start;\n if (this.eat(types$1.comma) && this.eat(types$1.parenR)) {\n this.raiseRecoverable(errorPos, \"Trailing comma is not allowed in import()\");\n } else {\n this.unexpected(errorPos);\n }\n }\n\n return this.finishNode(node, \"ImportExpression\")\n};\n\npp$5.parseImportMeta = function(node) {\n this.next(); // skip `.`\n\n var containsEsc = this.containsEsc;\n node.property = this.parseIdent(true);\n\n if (node.property.name !== \"meta\")\n { this.raiseRecoverable(node.property.start, \"The only valid meta property for import is 'import.meta'\"); }\n if (containsEsc)\n { this.raiseRecoverable(node.start, \"'import.meta' must not contain escaped characters\"); }\n if (this.options.sourceType !== \"module\" && !this.options.allowImportExportEverywhere)\n { this.raiseRecoverable(node.start, \"Cannot use 'import.meta' outside a module\"); }\n\n return this.finishNode(node, \"MetaProperty\")\n};\n\npp$5.parseLiteral = function(value) {\n var node = this.startNode();\n node.value = value;\n node.raw = this.input.slice(this.start, this.end);\n if (node.raw.charCodeAt(node.raw.length - 1) === 110) { node.bigint = node.raw.slice(0, -1).replace(/_/g, \"\"); }\n this.next();\n return this.finishNode(node, \"Literal\")\n};\n\npp$5.parseParenExpression = function() {\n this.expect(types$1.parenL);\n var val = this.parseExpression();\n this.expect(types$1.parenR);\n return val\n};\n\npp$5.shouldParseArrow = function(exprList) {\n return !this.canInsertSemicolon()\n};\n\npp$5.parseParenAndDistinguishExpression = function(canBeArrow, forInit) {\n var startPos = this.start, startLoc = this.startLoc, val, allowTrailingComma = this.options.ecmaVersion >= 8;\n if (this.options.ecmaVersion >= 6) {\n this.next();\n\n var innerStartPos = this.start, innerStartLoc = this.startLoc;\n var exprList = [], first = true, lastIsComma = false;\n var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart;\n this.yieldPos = 0;\n this.awaitPos = 0;\n // Do not save awaitIdentPos to allow checking awaits nested in parameters\n while (this.type !== types$1.parenR) {\n first ? first = false : this.expect(types$1.comma);\n if (allowTrailingComma && this.afterTrailingComma(types$1.parenR, true)) {\n lastIsComma = true;\n break\n } else if (this.type === types$1.ellipsis) {\n spreadStart = this.start;\n exprList.push(this.parseParenItem(this.parseRestBinding()));\n if (this.type === types$1.comma) {\n this.raiseRecoverable(\n this.start,\n \"Comma is not permitted after the rest element\"\n );\n }\n break\n } else {\n exprList.push(this.parseMaybeAssign(false, refDestructuringErrors, this.parseParenItem));\n }\n }\n var innerEndPos = this.lastTokEnd, innerEndLoc = this.lastTokEndLoc;\n this.expect(types$1.parenR);\n\n if (canBeArrow && this.shouldParseArrow(exprList) && this.eat(types$1.arrow)) {\n this.checkPatternErrors(refDestructuringErrors, false);\n this.checkYieldAwaitInDefaultParams();\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n return this.parseParenArrowList(startPos, startLoc, exprList, forInit)\n }\n\n if (!exprList.length || lastIsComma) { this.unexpected(this.lastTokStart); }\n if (spreadStart) { this.unexpected(spreadStart); }\n this.checkExpressionErrors(refDestructuringErrors, true);\n this.yieldPos = oldYieldPos || this.yieldPos;\n this.awaitPos = oldAwaitPos || this.awaitPos;\n\n if (exprList.length > 1) {\n val = this.startNodeAt(innerStartPos, innerStartLoc);\n val.expressions = exprList;\n this.finishNodeAt(val, \"SequenceExpression\", innerEndPos, innerEndLoc);\n } else {\n val = exprList[0];\n }\n } else {\n val = this.parseParenExpression();\n }\n\n if (this.options.preserveParens) {\n var par = this.startNodeAt(startPos, startLoc);\n par.expression = val;\n return this.finishNode(par, \"ParenthesizedExpression\")\n } else {\n return val\n }\n};\n\npp$5.parseParenItem = function(item) {\n return item\n};\n\npp$5.parseParenArrowList = function(startPos, startLoc, exprList, forInit) {\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, false, forInit)\n};\n\n// New's precedence is slightly tricky. It must allow its argument to\n// be a `[]` or dot subscript expression, but not a call — at least,\n// not without wrapping it in parentheses. Thus, it uses the noCalls\n// argument to parseSubscripts to prevent it from consuming the\n// argument list.\n\nvar empty = [];\n\npp$5.parseNew = function() {\n if (this.containsEsc) { this.raiseRecoverable(this.start, \"Escape sequence in keyword new\"); }\n var node = this.startNode();\n this.next();\n if (this.options.ecmaVersion >= 6 && this.type === types$1.dot) {\n var meta = this.startNodeAt(node.start, node.loc && node.loc.start);\n meta.name = \"new\";\n node.meta = this.finishNode(meta, \"Identifier\");\n this.next();\n var containsEsc = this.containsEsc;\n node.property = this.parseIdent(true);\n if (node.property.name !== \"target\")\n { this.raiseRecoverable(node.property.start, \"The only valid meta property for new is 'new.target'\"); }\n if (containsEsc)\n { this.raiseRecoverable(node.start, \"'new.target' must not contain escaped characters\"); }\n if (!this.allowNewDotTarget)\n { this.raiseRecoverable(node.start, \"'new.target' can only be used in functions and class static block\"); }\n return this.finishNode(node, \"MetaProperty\")\n }\n var startPos = this.start, startLoc = this.startLoc;\n node.callee = this.parseSubscripts(this.parseExprAtom(null, false, true), startPos, startLoc, true, false);\n if (this.eat(types$1.parenL)) { node.arguments = this.parseExprList(types$1.parenR, this.options.ecmaVersion >= 8, false); }\n else { node.arguments = empty; }\n return this.finishNode(node, \"NewExpression\")\n};\n\n// Parse template expression.\n\npp$5.parseTemplateElement = function(ref) {\n var isTagged = ref.isTagged;\n\n var elem = this.startNode();\n if (this.type === types$1.invalidTemplate) {\n if (!isTagged) {\n this.raiseRecoverable(this.start, \"Bad escape sequence in untagged template literal\");\n }\n elem.value = {\n raw: this.value,\n cooked: null\n };\n } else {\n elem.value = {\n raw: this.input.slice(this.start, this.end).replace(/\\r\\n?/g, \"\\n\"),\n cooked: this.value\n };\n }\n this.next();\n elem.tail = this.type === types$1.backQuote;\n return this.finishNode(elem, \"TemplateElement\")\n};\n\npp$5.parseTemplate = function(ref) {\n if ( ref === void 0 ) ref = {};\n var isTagged = ref.isTagged; if ( isTagged === void 0 ) isTagged = false;\n\n var node = this.startNode();\n this.next();\n node.expressions = [];\n var curElt = this.parseTemplateElement({isTagged: isTagged});\n node.quasis = [curElt];\n while (!curElt.tail) {\n if (this.type === types$1.eof) { this.raise(this.pos, \"Unterminated template literal\"); }\n this.expect(types$1.dollarBraceL);\n node.expressions.push(this.parseExpression());\n this.expect(types$1.braceR);\n node.quasis.push(curElt = this.parseTemplateElement({isTagged: isTagged}));\n }\n this.next();\n return this.finishNode(node, \"TemplateLiteral\")\n};\n\npp$5.isAsyncProp = function(prop) {\n return !prop.computed && prop.key.type === \"Identifier\" && prop.key.name === \"async\" &&\n (this.type === types$1.name || this.type === types$1.num || this.type === types$1.string || this.type === types$1.bracketL || this.type.keyword || (this.options.ecmaVersion >= 9 && this.type === types$1.star)) &&\n !lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n};\n\n// Parse an object literal or binding pattern.\n\npp$5.parseObj = function(isPattern, refDestructuringErrors) {\n var node = this.startNode(), first = true, propHash = {};\n node.properties = [];\n this.next();\n while (!this.eat(types$1.braceR)) {\n if (!first) {\n this.expect(types$1.comma);\n if (this.options.ecmaVersion >= 5 && this.afterTrailingComma(types$1.braceR)) { break }\n } else { first = false; }\n\n var prop = this.parseProperty(isPattern, refDestructuringErrors);\n if (!isPattern) { this.checkPropClash(prop, propHash, refDestructuringErrors); }\n node.properties.push(prop);\n }\n return this.finishNode(node, isPattern ? \"ObjectPattern\" : \"ObjectExpression\")\n};\n\npp$5.parseProperty = function(isPattern, refDestructuringErrors) {\n var prop = this.startNode(), isGenerator, isAsync, startPos, startLoc;\n if (this.options.ecmaVersion >= 9 && this.eat(types$1.ellipsis)) {\n if (isPattern) {\n prop.argument = this.parseIdent(false);\n if (this.type === types$1.comma) {\n this.raiseRecoverable(this.start, \"Comma is not permitted after the rest element\");\n }\n return this.finishNode(prop, \"RestElement\")\n }\n // Parse argument.\n prop.argument = this.parseMaybeAssign(false, refDestructuringErrors);\n // To disallow trailing comma via `this.toAssignable()`.\n if (this.type === types$1.comma && refDestructuringErrors && refDestructuringErrors.trailingComma < 0) {\n refDestructuringErrors.trailingComma = this.start;\n }\n // Finish\n return this.finishNode(prop, \"SpreadElement\")\n }\n if (this.options.ecmaVersion >= 6) {\n prop.method = false;\n prop.shorthand = false;\n if (isPattern || refDestructuringErrors) {\n startPos = this.start;\n startLoc = this.startLoc;\n }\n if (!isPattern)\n { isGenerator = this.eat(types$1.star); }\n }\n var containsEsc = this.containsEsc;\n this.parsePropertyName(prop);\n if (!isPattern && !containsEsc && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop)) {\n isAsync = true;\n isGenerator = this.options.ecmaVersion >= 9 && this.eat(types$1.star);\n this.parsePropertyName(prop);\n } else {\n isAsync = false;\n }\n this.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc);\n return this.finishNode(prop, \"Property\")\n};\n\npp$5.parseGetterSetter = function(prop) {\n prop.kind = prop.key.name;\n this.parsePropertyName(prop);\n prop.value = this.parseMethod(false);\n var paramCount = prop.kind === \"get\" ? 0 : 1;\n if (prop.value.params.length !== paramCount) {\n var start = prop.value.start;\n if (prop.kind === \"get\")\n { this.raiseRecoverable(start, \"getter should have no params\"); }\n else\n { this.raiseRecoverable(start, \"setter should have exactly one param\"); }\n } else {\n if (prop.kind === \"set\" && prop.value.params[0].type === \"RestElement\")\n { this.raiseRecoverable(prop.value.params[0].start, \"Setter cannot use rest params\"); }\n }\n};\n\npp$5.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc) {\n if ((isGenerator || isAsync) && this.type === types$1.colon)\n { this.unexpected(); }\n\n if (this.eat(types$1.colon)) {\n prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(false, refDestructuringErrors);\n prop.kind = \"init\";\n } else if (this.options.ecmaVersion >= 6 && this.type === types$1.parenL) {\n if (isPattern) { this.unexpected(); }\n prop.kind = \"init\";\n prop.method = true;\n prop.value = this.parseMethod(isGenerator, isAsync);\n } else if (!isPattern && !containsEsc &&\n this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === \"Identifier\" &&\n (prop.key.name === \"get\" || prop.key.name === \"set\") &&\n (this.type !== types$1.comma && this.type !== types$1.braceR && this.type !== types$1.eq)) {\n if (isGenerator || isAsync) { this.unexpected(); }\n this.parseGetterSetter(prop);\n } else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === \"Identifier\") {\n if (isGenerator || isAsync) { this.unexpected(); }\n this.checkUnreserved(prop.key);\n if (prop.key.name === \"await\" && !this.awaitIdentPos)\n { this.awaitIdentPos = startPos; }\n prop.kind = \"init\";\n if (isPattern) {\n prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key));\n } else if (this.type === types$1.eq && refDestructuringErrors) {\n if (refDestructuringErrors.shorthandAssign < 0)\n { refDestructuringErrors.shorthandAssign = this.start; }\n prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key));\n } else {\n prop.value = this.copyNode(prop.key);\n }\n prop.shorthand = true;\n } else { this.unexpected(); }\n};\n\npp$5.parsePropertyName = function(prop) {\n if (this.options.ecmaVersion >= 6) {\n if (this.eat(types$1.bracketL)) {\n prop.computed = true;\n prop.key = this.parseMaybeAssign();\n this.expect(types$1.bracketR);\n return prop.key\n } else {\n prop.computed = false;\n }\n }\n return prop.key = this.type === types$1.num || this.type === types$1.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== \"never\")\n};\n\n// Initialize empty function node.\n\npp$5.initFunction = function(node) {\n node.id = null;\n if (this.options.ecmaVersion >= 6) { node.generator = node.expression = false; }\n if (this.options.ecmaVersion >= 8) { node.async = false; }\n};\n\n// Parse object or class method.\n\npp$5.parseMethod = function(isGenerator, isAsync, allowDirectSuper) {\n var node = this.startNode(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n\n this.initFunction(node);\n if (this.options.ecmaVersion >= 6)\n { node.generator = isGenerator; }\n if (this.options.ecmaVersion >= 8)\n { node.async = !!isAsync; }\n\n this.yieldPos = 0;\n this.awaitPos = 0;\n this.awaitIdentPos = 0;\n this.enterScope(functionFlags(isAsync, node.generator) | SCOPE_SUPER | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0));\n\n this.expect(types$1.parenL);\n node.params = this.parseBindingList(types$1.parenR, false, this.options.ecmaVersion >= 8);\n this.checkYieldAwaitInDefaultParams();\n this.parseFunctionBody(node, false, true, false);\n\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n this.awaitIdentPos = oldAwaitIdentPos;\n return this.finishNode(node, \"FunctionExpression\")\n};\n\n// Parse arrow function expression with given parameters.\n\npp$5.parseArrowExpression = function(node, params, isAsync, forInit) {\n var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n\n this.enterScope(functionFlags(isAsync, false) | SCOPE_ARROW);\n this.initFunction(node);\n if (this.options.ecmaVersion >= 8) { node.async = !!isAsync; }\n\n this.yieldPos = 0;\n this.awaitPos = 0;\n this.awaitIdentPos = 0;\n\n node.params = this.toAssignableList(params, true);\n this.parseFunctionBody(node, true, false, forInit);\n\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n this.awaitIdentPos = oldAwaitIdentPos;\n return this.finishNode(node, \"ArrowFunctionExpression\")\n};\n\n// Parse function body and check parameters.\n\npp$5.parseFunctionBody = function(node, isArrowFunction, isMethod, forInit) {\n var isExpression = isArrowFunction && this.type !== types$1.braceL;\n var oldStrict = this.strict, useStrict = false;\n\n if (isExpression) {\n node.body = this.parseMaybeAssign(forInit);\n node.expression = true;\n this.checkParams(node, false);\n } else {\n var nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params);\n if (!oldStrict || nonSimple) {\n useStrict = this.strictDirective(this.end);\n // If this is a strict mode function, verify that argument names\n // are not repeated, and it does not try to bind the words `eval`\n // or `arguments`.\n if (useStrict && nonSimple)\n { this.raiseRecoverable(node.start, \"Illegal 'use strict' directive in function with non-simple parameter list\"); }\n }\n // Start a new scope with regard to labels and the `inFunction`\n // flag (restore them to their old value afterwards).\n var oldLabels = this.labels;\n this.labels = [];\n if (useStrict) { this.strict = true; }\n\n // Add the params to varDeclaredNames to ensure that an error is thrown\n // if a let/const declaration in the function clashes with one of the params.\n this.checkParams(node, !oldStrict && !useStrict && !isArrowFunction && !isMethod && this.isSimpleParamList(node.params));\n // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval'\n if (this.strict && node.id) { this.checkLValSimple(node.id, BIND_OUTSIDE); }\n node.body = this.parseBlock(false, undefined, useStrict && !oldStrict);\n node.expression = false;\n this.adaptDirectivePrologue(node.body.body);\n this.labels = oldLabels;\n }\n this.exitScope();\n};\n\npp$5.isSimpleParamList = function(params) {\n for (var i = 0, list = params; i < list.length; i += 1)\n {\n var param = list[i];\n\n if (param.type !== \"Identifier\") { return false\n } }\n return true\n};\n\n// Checks function params for various disallowed patterns such as using \"eval\"\n// or \"arguments\" and duplicate parameters.\n\npp$5.checkParams = function(node, allowDuplicates) {\n var nameHash = Object.create(null);\n for (var i = 0, list = node.params; i < list.length; i += 1)\n {\n var param = list[i];\n\n this.checkLValInnerPattern(param, BIND_VAR, allowDuplicates ? null : nameHash);\n }\n};\n\n// Parses a comma-separated list of expressions, and returns them as\n// an array. `close` is the token type that ends the list, and\n// `allowEmpty` can be turned on to allow subsequent commas with\n// nothing in between them to be parsed as `null` (which is needed\n// for array literals).\n\npp$5.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) {\n var elts = [], first = true;\n while (!this.eat(close)) {\n if (!first) {\n this.expect(types$1.comma);\n if (allowTrailingComma && this.afterTrailingComma(close)) { break }\n } else { first = false; }\n\n var elt = (void 0);\n if (allowEmpty && this.type === types$1.comma)\n { elt = null; }\n else if (this.type === types$1.ellipsis) {\n elt = this.parseSpread(refDestructuringErrors);\n if (refDestructuringErrors && this.type === types$1.comma && refDestructuringErrors.trailingComma < 0)\n { refDestructuringErrors.trailingComma = this.start; }\n } else {\n elt = this.parseMaybeAssign(false, refDestructuringErrors);\n }\n elts.push(elt);\n }\n return elts\n};\n\npp$5.checkUnreserved = function(ref) {\n var start = ref.start;\n var end = ref.end;\n var name = ref.name;\n\n if (this.inGenerator && name === \"yield\")\n { this.raiseRecoverable(start, \"Cannot use 'yield' as identifier inside a generator\"); }\n if (this.inAsync && name === \"await\")\n { this.raiseRecoverable(start, \"Cannot use 'await' as identifier inside an async function\"); }\n if (this.currentThisScope().inClassFieldInit && name === \"arguments\")\n { this.raiseRecoverable(start, \"Cannot use 'arguments' in class field initializer\"); }\n if (this.inClassStaticBlock && (name === \"arguments\" || name === \"await\"))\n { this.raise(start, (\"Cannot use \" + name + \" in class static initialization block\")); }\n if (this.keywords.test(name))\n { this.raise(start, (\"Unexpected keyword '\" + name + \"'\")); }\n if (this.options.ecmaVersion < 6 &&\n this.input.slice(start, end).indexOf(\"\\\\\") !== -1) { return }\n var re = this.strict ? this.reservedWordsStrict : this.reservedWords;\n if (re.test(name)) {\n if (!this.inAsync && name === \"await\")\n { this.raiseRecoverable(start, \"Cannot use keyword 'await' outside an async function\"); }\n this.raiseRecoverable(start, (\"The keyword '\" + name + \"' is reserved\"));\n }\n};\n\n// Parse the next token as an identifier. If `liberal` is true (used\n// when parsing properties), it will also convert keywords into\n// identifiers.\n\npp$5.parseIdent = function(liberal) {\n var node = this.parseIdentNode();\n this.next(!!liberal);\n this.finishNode(node, \"Identifier\");\n if (!liberal) {\n this.checkUnreserved(node);\n if (node.name === \"await\" && !this.awaitIdentPos)\n { this.awaitIdentPos = node.start; }\n }\n return node\n};\n\npp$5.parseIdentNode = function() {\n var node = this.startNode();\n if (this.type === types$1.name) {\n node.name = this.value;\n } else if (this.type.keyword) {\n node.name = this.type.keyword;\n\n // To fix https://github.com/acornjs/acorn/issues/575\n // `class` and `function` keywords push new context into this.context.\n // But there is no chance to pop the context if the keyword is consumed as an identifier such as a property name.\n // If the previous token is a dot, this does not apply because the context-managing code already ignored the keyword\n if ((node.name === \"class\" || node.name === \"function\") &&\n (this.lastTokEnd !== this.lastTokStart + 1 || this.input.charCodeAt(this.lastTokStart) !== 46)) {\n this.context.pop();\n }\n this.type = types$1.name;\n } else {\n this.unexpected();\n }\n return node\n};\n\npp$5.parsePrivateIdent = function() {\n var node = this.startNode();\n if (this.type === types$1.privateId) {\n node.name = this.value;\n } else {\n this.unexpected();\n }\n this.next();\n this.finishNode(node, \"PrivateIdentifier\");\n\n // For validating existence\n if (this.options.checkPrivateFields) {\n if (this.privateNameStack.length === 0) {\n this.raise(node.start, (\"Private field '#\" + (node.name) + \"' must be declared in an enclosing class\"));\n } else {\n this.privateNameStack[this.privateNameStack.length - 1].used.push(node);\n }\n }\n\n return node\n};\n\n// Parses yield expression inside generator.\n\npp$5.parseYield = function(forInit) {\n if (!this.yieldPos) { this.yieldPos = this.start; }\n\n var node = this.startNode();\n this.next();\n if (this.type === types$1.semi || this.canInsertSemicolon() || (this.type !== types$1.star && !this.type.startsExpr)) {\n node.delegate = false;\n node.argument = null;\n } else {\n node.delegate = this.eat(types$1.star);\n node.argument = this.parseMaybeAssign(forInit);\n }\n return this.finishNode(node, \"YieldExpression\")\n};\n\npp$5.parseAwait = function(forInit) {\n if (!this.awaitPos) { this.awaitPos = this.start; }\n\n var node = this.startNode();\n this.next();\n node.argument = this.parseMaybeUnary(null, true, false, forInit);\n return this.finishNode(node, \"AwaitExpression\")\n};\n\nvar pp$4 = Parser.prototype;\n\n// This function is used to raise exceptions on parse errors. It\n// takes an offset integer (into the current `input`) to indicate\n// the location of the error, attaches the position to the end\n// of the error message, and then raises a `SyntaxError` with that\n// message.\n\npp$4.raise = function(pos, message) {\n var loc = getLineInfo(this.input, pos);\n message += \" (\" + loc.line + \":\" + loc.column + \")\";\n var err = new SyntaxError(message);\n err.pos = pos; err.loc = loc; err.raisedAt = this.pos;\n throw err\n};\n\npp$4.raiseRecoverable = pp$4.raise;\n\npp$4.curPosition = function() {\n if (this.options.locations) {\n return new Position(this.curLine, this.pos - this.lineStart)\n }\n};\n\nvar pp$3 = Parser.prototype;\n\nvar Scope = function Scope(flags) {\n this.flags = flags;\n // A list of var-declared names in the current lexical scope\n this.var = [];\n // A list of lexically-declared names in the current lexical scope\n this.lexical = [];\n // A list of lexically-declared FunctionDeclaration names in the current lexical scope\n this.functions = [];\n // A switch to disallow the identifier reference 'arguments'\n this.inClassFieldInit = false;\n};\n\n// The functions in this module keep track of declared variables in the current scope in order to detect duplicate variable names.\n\npp$3.enterScope = function(flags) {\n this.scopeStack.push(new Scope(flags));\n};\n\npp$3.exitScope = function() {\n this.scopeStack.pop();\n};\n\n// The spec says:\n// > At the top level of a function, or script, function declarations are\n// > treated like var declarations rather than like lexical declarations.\npp$3.treatFunctionsAsVarInScope = function(scope) {\n return (scope.flags & SCOPE_FUNCTION) || !this.inModule && (scope.flags & SCOPE_TOP)\n};\n\npp$3.declareName = function(name, bindingType, pos) {\n var redeclared = false;\n if (bindingType === BIND_LEXICAL) {\n var scope = this.currentScope();\n redeclared = scope.lexical.indexOf(name) > -1 || scope.functions.indexOf(name) > -1 || scope.var.indexOf(name) > -1;\n scope.lexical.push(name);\n if (this.inModule && (scope.flags & SCOPE_TOP))\n { delete this.undefinedExports[name]; }\n } else if (bindingType === BIND_SIMPLE_CATCH) {\n var scope$1 = this.currentScope();\n scope$1.lexical.push(name);\n } else if (bindingType === BIND_FUNCTION) {\n var scope$2 = this.currentScope();\n if (this.treatFunctionsAsVar)\n { redeclared = scope$2.lexical.indexOf(name) > -1; }\n else\n { redeclared = scope$2.lexical.indexOf(name) > -1 || scope$2.var.indexOf(name) > -1; }\n scope$2.functions.push(name);\n } else {\n for (var i = this.scopeStack.length - 1; i >= 0; --i) {\n var scope$3 = this.scopeStack[i];\n if (scope$3.lexical.indexOf(name) > -1 && !((scope$3.flags & SCOPE_SIMPLE_CATCH) && scope$3.lexical[0] === name) ||\n !this.treatFunctionsAsVarInScope(scope$3) && scope$3.functions.indexOf(name) > -1) {\n redeclared = true;\n break\n }\n scope$3.var.push(name);\n if (this.inModule && (scope$3.flags & SCOPE_TOP))\n { delete this.undefinedExports[name]; }\n if (scope$3.flags & SCOPE_VAR) { break }\n }\n }\n if (redeclared) { this.raiseRecoverable(pos, (\"Identifier '\" + name + \"' has already been declared\")); }\n};\n\npp$3.checkLocalExport = function(id) {\n // scope.functions must be empty as Module code is always strict.\n if (this.scopeStack[0].lexical.indexOf(id.name) === -1 &&\n this.scopeStack[0].var.indexOf(id.name) === -1) {\n this.undefinedExports[id.name] = id;\n }\n};\n\npp$3.currentScope = function() {\n return this.scopeStack[this.scopeStack.length - 1]\n};\n\npp$3.currentVarScope = function() {\n for (var i = this.scopeStack.length - 1;; i--) {\n var scope = this.scopeStack[i];\n if (scope.flags & SCOPE_VAR) { return scope }\n }\n};\n\n// Could be useful for `this`, `new.target`, `super()`, `super.property`, and `super[property]`.\npp$3.currentThisScope = function() {\n for (var i = this.scopeStack.length - 1;; i--) {\n var scope = this.scopeStack[i];\n if (scope.flags & SCOPE_VAR && !(scope.flags & SCOPE_ARROW)) { return scope }\n }\n};\n\nvar Node = function Node(parser, pos, loc) {\n this.type = \"\";\n this.start = pos;\n this.end = 0;\n if (parser.options.locations)\n { this.loc = new SourceLocation(parser, loc); }\n if (parser.options.directSourceFile)\n { this.sourceFile = parser.options.directSourceFile; }\n if (parser.options.ranges)\n { this.range = [pos, 0]; }\n};\n\n// Start an AST node, attaching a start offset.\n\nvar pp$2 = Parser.prototype;\n\npp$2.startNode = function() {\n return new Node(this, this.start, this.startLoc)\n};\n\npp$2.startNodeAt = function(pos, loc) {\n return new Node(this, pos, loc)\n};\n\n// Finish an AST node, adding `type` and `end` properties.\n\nfunction finishNodeAt(node, type, pos, loc) {\n node.type = type;\n node.end = pos;\n if (this.options.locations)\n { node.loc.end = loc; }\n if (this.options.ranges)\n { node.range[1] = pos; }\n return node\n}\n\npp$2.finishNode = function(node, type) {\n return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc)\n};\n\n// Finish node at given position\n\npp$2.finishNodeAt = function(node, type, pos, loc) {\n return finishNodeAt.call(this, node, type, pos, loc)\n};\n\npp$2.copyNode = function(node) {\n var newNode = new Node(this, node.start, this.startLoc);\n for (var prop in node) { newNode[prop] = node[prop]; }\n return newNode\n};\n\n// This file contains Unicode properties extracted from the ECMAScript specification.\n// The lists are extracted like so:\n// $$('#table-binary-unicode-properties > figure > table > tbody > tr > td:nth-child(1) code').map(el => el.innerText)\n\n// #table-binary-unicode-properties\nvar ecma9BinaryProperties = \"ASCII ASCII_Hex_Digit AHex Alphabetic Alpha Any Assigned Bidi_Control Bidi_C Bidi_Mirrored Bidi_M Case_Ignorable CI Cased Changes_When_Casefolded CWCF Changes_When_Casemapped CWCM Changes_When_Lowercased CWL Changes_When_NFKC_Casefolded CWKCF Changes_When_Titlecased CWT Changes_When_Uppercased CWU Dash Default_Ignorable_Code_Point DI Deprecated Dep Diacritic Dia Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Extender Ext Grapheme_Base Gr_Base Grapheme_Extend Gr_Ext Hex_Digit Hex IDS_Binary_Operator IDSB IDS_Trinary_Operator IDST ID_Continue IDC ID_Start IDS Ideographic Ideo Join_Control Join_C Logical_Order_Exception LOE Lowercase Lower Math Noncharacter_Code_Point NChar Pattern_Syntax Pat_Syn Pattern_White_Space Pat_WS Quotation_Mark QMark Radical Regional_Indicator RI Sentence_Terminal STerm Soft_Dotted SD Terminal_Punctuation Term Unified_Ideograph UIdeo Uppercase Upper Variation_Selector VS White_Space space XID_Continue XIDC XID_Start XIDS\";\nvar ecma10BinaryProperties = ecma9BinaryProperties + \" Extended_Pictographic\";\nvar ecma11BinaryProperties = ecma10BinaryProperties;\nvar ecma12BinaryProperties = ecma11BinaryProperties + \" EBase EComp EMod EPres ExtPict\";\nvar ecma13BinaryProperties = ecma12BinaryProperties;\nvar ecma14BinaryProperties = ecma13BinaryProperties;\n\nvar unicodeBinaryProperties = {\n 9: ecma9BinaryProperties,\n 10: ecma10BinaryProperties,\n 11: ecma11BinaryProperties,\n 12: ecma12BinaryProperties,\n 13: ecma13BinaryProperties,\n 14: ecma14BinaryProperties\n};\n\n// #table-binary-unicode-properties-of-strings\nvar ecma14BinaryPropertiesOfStrings = \"Basic_Emoji Emoji_Keycap_Sequence RGI_Emoji_Modifier_Sequence RGI_Emoji_Flag_Sequence RGI_Emoji_Tag_Sequence RGI_Emoji_ZWJ_Sequence RGI_Emoji\";\n\nvar unicodeBinaryPropertiesOfStrings = {\n 9: \"\",\n 10: \"\",\n 11: \"\",\n 12: \"\",\n 13: \"\",\n 14: ecma14BinaryPropertiesOfStrings\n};\n\n// #table-unicode-general-category-values\nvar unicodeGeneralCategoryValues = \"Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu\";\n\n// #table-unicode-script-values\nvar ecma9ScriptValues = \"Adlam Adlm Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb\";\nvar ecma10ScriptValues = ecma9ScriptValues + \" Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd\";\nvar ecma11ScriptValues = ecma10ScriptValues + \" Elymaic Elym Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Wancho Wcho\";\nvar ecma12ScriptValues = ecma11ScriptValues + \" Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi\";\nvar ecma13ScriptValues = ecma12ScriptValues + \" Cypro_Minoan Cpmn Old_Uyghur Ougr Tangsa Tnsa Toto Vithkuqi Vith\";\nvar ecma14ScriptValues = ecma13ScriptValues + \" Hrkt Katakana_Or_Hiragana Kawi Nag_Mundari Nagm Unknown Zzzz\";\n\nvar unicodeScriptValues = {\n 9: ecma9ScriptValues,\n 10: ecma10ScriptValues,\n 11: ecma11ScriptValues,\n 12: ecma12ScriptValues,\n 13: ecma13ScriptValues,\n 14: ecma14ScriptValues\n};\n\nvar data = {};\nfunction buildUnicodeData(ecmaVersion) {\n var d = data[ecmaVersion] = {\n binary: wordsRegexp(unicodeBinaryProperties[ecmaVersion] + \" \" + unicodeGeneralCategoryValues),\n binaryOfStrings: wordsRegexp(unicodeBinaryPropertiesOfStrings[ecmaVersion]),\n nonBinary: {\n General_Category: wordsRegexp(unicodeGeneralCategoryValues),\n Script: wordsRegexp(unicodeScriptValues[ecmaVersion])\n }\n };\n d.nonBinary.Script_Extensions = d.nonBinary.Script;\n\n d.nonBinary.gc = d.nonBinary.General_Category;\n d.nonBinary.sc = d.nonBinary.Script;\n d.nonBinary.scx = d.nonBinary.Script_Extensions;\n}\n\nfor (var i = 0, list = [9, 10, 11, 12, 13, 14]; i < list.length; i += 1) {\n var ecmaVersion = list[i];\n\n buildUnicodeData(ecmaVersion);\n}\n\nvar pp$1 = Parser.prototype;\n\nvar RegExpValidationState = function RegExpValidationState(parser) {\n this.parser = parser;\n this.validFlags = \"gim\" + (parser.options.ecmaVersion >= 6 ? \"uy\" : \"\") + (parser.options.ecmaVersion >= 9 ? \"s\" : \"\") + (parser.options.ecmaVersion >= 13 ? \"d\" : \"\") + (parser.options.ecmaVersion >= 15 ? \"v\" : \"\");\n this.unicodeProperties = data[parser.options.ecmaVersion >= 14 ? 14 : parser.options.ecmaVersion];\n this.source = \"\";\n this.flags = \"\";\n this.start = 0;\n this.switchU = false;\n this.switchV = false;\n this.switchN = false;\n this.pos = 0;\n this.lastIntValue = 0;\n this.lastStringValue = \"\";\n this.lastAssertionIsQuantifiable = false;\n this.numCapturingParens = 0;\n this.maxBackReference = 0;\n this.groupNames = [];\n this.backReferenceNames = [];\n};\n\nRegExpValidationState.prototype.reset = function reset (start, pattern, flags) {\n var unicodeSets = flags.indexOf(\"v\") !== -1;\n var unicode = flags.indexOf(\"u\") !== -1;\n this.start = start | 0;\n this.source = pattern + \"\";\n this.flags = flags;\n if (unicodeSets && this.parser.options.ecmaVersion >= 15) {\n this.switchU = true;\n this.switchV = true;\n this.switchN = true;\n } else {\n this.switchU = unicode && this.parser.options.ecmaVersion >= 6;\n this.switchV = false;\n this.switchN = unicode && this.parser.options.ecmaVersion >= 9;\n }\n};\n\nRegExpValidationState.prototype.raise = function raise (message) {\n this.parser.raiseRecoverable(this.start, (\"Invalid regular expression: /\" + (this.source) + \"/: \" + message));\n};\n\n// If u flag is given, this returns the code point at the index (it combines a surrogate pair).\n// Otherwise, this returns the code unit of the index (can be a part of a surrogate pair).\nRegExpValidationState.prototype.at = function at (i, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n var s = this.source;\n var l = s.length;\n if (i >= l) {\n return -1\n }\n var c = s.charCodeAt(i);\n if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l) {\n return c\n }\n var next = s.charCodeAt(i + 1);\n return next >= 0xDC00 && next <= 0xDFFF ? (c << 10) + next - 0x35FDC00 : c\n};\n\nRegExpValidationState.prototype.nextIndex = function nextIndex (i, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n var s = this.source;\n var l = s.length;\n if (i >= l) {\n return l\n }\n var c = s.charCodeAt(i), next;\n if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l ||\n (next = s.charCodeAt(i + 1)) < 0xDC00 || next > 0xDFFF) {\n return i + 1\n }\n return i + 2\n};\n\nRegExpValidationState.prototype.current = function current (forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n return this.at(this.pos, forceU)\n};\n\nRegExpValidationState.prototype.lookahead = function lookahead (forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n return this.at(this.nextIndex(this.pos, forceU), forceU)\n};\n\nRegExpValidationState.prototype.advance = function advance (forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n this.pos = this.nextIndex(this.pos, forceU);\n};\n\nRegExpValidationState.prototype.eat = function eat (ch, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n if (this.current(forceU) === ch) {\n this.advance(forceU);\n return true\n }\n return false\n};\n\nRegExpValidationState.prototype.eatChars = function eatChars (chs, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n var pos = this.pos;\n for (var i = 0, list = chs; i < list.length; i += 1) {\n var ch = list[i];\n\n var current = this.at(pos, forceU);\n if (current === -1 || current !== ch) {\n return false\n }\n pos = this.nextIndex(pos, forceU);\n }\n this.pos = pos;\n return true\n};\n\n/**\n * Validate the flags part of a given RegExpLiteral.\n *\n * @param {RegExpValidationState} state The state to validate RegExp.\n * @returns {void}\n */\npp$1.validateRegExpFlags = function(state) {\n var validFlags = state.validFlags;\n var flags = state.flags;\n\n var u = false;\n var v = false;\n\n for (var i = 0; i < flags.length; i++) {\n var flag = flags.charAt(i);\n if (validFlags.indexOf(flag) === -1) {\n this.raise(state.start, \"Invalid regular expression flag\");\n }\n if (flags.indexOf(flag, i + 1) > -1) {\n this.raise(state.start, \"Duplicate regular expression flag\");\n }\n if (flag === \"u\") { u = true; }\n if (flag === \"v\") { v = true; }\n }\n if (this.options.ecmaVersion >= 15 && u && v) {\n this.raise(state.start, \"Invalid regular expression flag\");\n }\n};\n\n/**\n * Validate the pattern part of a given RegExpLiteral.\n *\n * @param {RegExpValidationState} state The state to validate RegExp.\n * @returns {void}\n */\npp$1.validateRegExpPattern = function(state) {\n this.regexp_pattern(state);\n\n // The goal symbol for the parse is |Pattern[~U, ~N]|. If the result of\n // parsing contains a |GroupName|, reparse with the goal symbol\n // |Pattern[~U, +N]| and use this result instead. Throw a *SyntaxError*\n // exception if _P_ did not conform to the grammar, if any elements of _P_\n // were not matched by the parse, or if any Early Error conditions exist.\n if (!state.switchN && this.options.ecmaVersion >= 9 && state.groupNames.length > 0) {\n state.switchN = true;\n this.regexp_pattern(state);\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Pattern\npp$1.regexp_pattern = function(state) {\n state.pos = 0;\n state.lastIntValue = 0;\n state.lastStringValue = \"\";\n state.lastAssertionIsQuantifiable = false;\n state.numCapturingParens = 0;\n state.maxBackReference = 0;\n state.groupNames.length = 0;\n state.backReferenceNames.length = 0;\n\n this.regexp_disjunction(state);\n\n if (state.pos !== state.source.length) {\n // Make the same messages as V8.\n if (state.eat(0x29 /* ) */)) {\n state.raise(\"Unmatched ')'\");\n }\n if (state.eat(0x5D /* ] */) || state.eat(0x7D /* } */)) {\n state.raise(\"Lone quantifier brackets\");\n }\n }\n if (state.maxBackReference > state.numCapturingParens) {\n state.raise(\"Invalid escape\");\n }\n for (var i = 0, list = state.backReferenceNames; i < list.length; i += 1) {\n var name = list[i];\n\n if (state.groupNames.indexOf(name) === -1) {\n state.raise(\"Invalid named capture referenced\");\n }\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Disjunction\npp$1.regexp_disjunction = function(state) {\n this.regexp_alternative(state);\n while (state.eat(0x7C /* | */)) {\n this.regexp_alternative(state);\n }\n\n // Make the same message as V8.\n if (this.regexp_eatQuantifier(state, true)) {\n state.raise(\"Nothing to repeat\");\n }\n if (state.eat(0x7B /* { */)) {\n state.raise(\"Lone quantifier brackets\");\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Alternative\npp$1.regexp_alternative = function(state) {\n while (state.pos < state.source.length && this.regexp_eatTerm(state))\n { }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Term\npp$1.regexp_eatTerm = function(state) {\n if (this.regexp_eatAssertion(state)) {\n // Handle `QuantifiableAssertion Quantifier` alternative.\n // `state.lastAssertionIsQuantifiable` is true if the last eaten Assertion\n // is a QuantifiableAssertion.\n if (state.lastAssertionIsQuantifiable && this.regexp_eatQuantifier(state)) {\n // Make the same message as V8.\n if (state.switchU) {\n state.raise(\"Invalid quantifier\");\n }\n }\n return true\n }\n\n if (state.switchU ? this.regexp_eatAtom(state) : this.regexp_eatExtendedAtom(state)) {\n this.regexp_eatQuantifier(state);\n return true\n }\n\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Assertion\npp$1.regexp_eatAssertion = function(state) {\n var start = state.pos;\n state.lastAssertionIsQuantifiable = false;\n\n // ^, $\n if (state.eat(0x5E /* ^ */) || state.eat(0x24 /* $ */)) {\n return true\n }\n\n // \\b \\B\n if (state.eat(0x5C /* \\ */)) {\n if (state.eat(0x42 /* B */) || state.eat(0x62 /* b */)) {\n return true\n }\n state.pos = start;\n }\n\n // Lookahead / Lookbehind\n if (state.eat(0x28 /* ( */) && state.eat(0x3F /* ? */)) {\n var lookbehind = false;\n if (this.options.ecmaVersion >= 9) {\n lookbehind = state.eat(0x3C /* < */);\n }\n if (state.eat(0x3D /* = */) || state.eat(0x21 /* ! */)) {\n this.regexp_disjunction(state);\n if (!state.eat(0x29 /* ) */)) {\n state.raise(\"Unterminated group\");\n }\n state.lastAssertionIsQuantifiable = !lookbehind;\n return true\n }\n }\n\n state.pos = start;\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Quantifier\npp$1.regexp_eatQuantifier = function(state, noError) {\n if ( noError === void 0 ) noError = false;\n\n if (this.regexp_eatQuantifierPrefix(state, noError)) {\n state.eat(0x3F /* ? */);\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-QuantifierPrefix\npp$1.regexp_eatQuantifierPrefix = function(state, noError) {\n return (\n state.eat(0x2A /* * */) ||\n state.eat(0x2B /* + */) ||\n state.eat(0x3F /* ? */) ||\n this.regexp_eatBracedQuantifier(state, noError)\n )\n};\npp$1.regexp_eatBracedQuantifier = function(state, noError) {\n var start = state.pos;\n if (state.eat(0x7B /* { */)) {\n var min = 0, max = -1;\n if (this.regexp_eatDecimalDigits(state)) {\n min = state.lastIntValue;\n if (state.eat(0x2C /* , */) && this.regexp_eatDecimalDigits(state)) {\n max = state.lastIntValue;\n }\n if (state.eat(0x7D /* } */)) {\n // SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-term\n if (max !== -1 && max < min && !noError) {\n state.raise(\"numbers out of order in {} quantifier\");\n }\n return true\n }\n }\n if (state.switchU && !noError) {\n state.raise(\"Incomplete quantifier\");\n }\n state.pos = start;\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Atom\npp$1.regexp_eatAtom = function(state) {\n return (\n this.regexp_eatPatternCharacters(state) ||\n state.eat(0x2E /* . */) ||\n this.regexp_eatReverseSolidusAtomEscape(state) ||\n this.regexp_eatCharacterClass(state) ||\n this.regexp_eatUncapturingGroup(state) ||\n this.regexp_eatCapturingGroup(state)\n )\n};\npp$1.regexp_eatReverseSolidusAtomEscape = function(state) {\n var start = state.pos;\n if (state.eat(0x5C /* \\ */)) {\n if (this.regexp_eatAtomEscape(state)) {\n return true\n }\n state.pos = start;\n }\n return false\n};\npp$1.regexp_eatUncapturingGroup = function(state) {\n var start = state.pos;\n if (state.eat(0x28 /* ( */)) {\n if (state.eat(0x3F /* ? */) && state.eat(0x3A /* : */)) {\n this.regexp_disjunction(state);\n if (state.eat(0x29 /* ) */)) {\n return true\n }\n state.raise(\"Unterminated group\");\n }\n state.pos = start;\n }\n return false\n};\npp$1.regexp_eatCapturingGroup = function(state) {\n if (state.eat(0x28 /* ( */)) {\n if (this.options.ecmaVersion >= 9) {\n this.regexp_groupSpecifier(state);\n } else if (state.current() === 0x3F /* ? */) {\n state.raise(\"Invalid group\");\n }\n this.regexp_disjunction(state);\n if (state.eat(0x29 /* ) */)) {\n state.numCapturingParens += 1;\n return true\n }\n state.raise(\"Unterminated group\");\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedAtom\npp$1.regexp_eatExtendedAtom = function(state) {\n return (\n state.eat(0x2E /* . */) ||\n this.regexp_eatReverseSolidusAtomEscape(state) ||\n this.regexp_eatCharacterClass(state) ||\n this.regexp_eatUncapturingGroup(state) ||\n this.regexp_eatCapturingGroup(state) ||\n this.regexp_eatInvalidBracedQuantifier(state) ||\n this.regexp_eatExtendedPatternCharacter(state)\n )\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-InvalidBracedQuantifier\npp$1.regexp_eatInvalidBracedQuantifier = function(state) {\n if (this.regexp_eatBracedQuantifier(state, true)) {\n state.raise(\"Nothing to repeat\");\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-SyntaxCharacter\npp$1.regexp_eatSyntaxCharacter = function(state) {\n var ch = state.current();\n if (isSyntaxCharacter(ch)) {\n state.lastIntValue = ch;\n state.advance();\n return true\n }\n return false\n};\nfunction isSyntaxCharacter(ch) {\n return (\n ch === 0x24 /* $ */ ||\n ch >= 0x28 /* ( */ && ch <= 0x2B /* + */ ||\n ch === 0x2E /* . */ ||\n ch === 0x3F /* ? */ ||\n ch >= 0x5B /* [ */ && ch <= 0x5E /* ^ */ ||\n ch >= 0x7B /* { */ && ch <= 0x7D /* } */\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-PatternCharacter\n// But eat eager.\npp$1.regexp_eatPatternCharacters = function(state) {\n var start = state.pos;\n var ch = 0;\n while ((ch = state.current()) !== -1 && !isSyntaxCharacter(ch)) {\n state.advance();\n }\n return state.pos !== start\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedPatternCharacter\npp$1.regexp_eatExtendedPatternCharacter = function(state) {\n var ch = state.current();\n if (\n ch !== -1 &&\n ch !== 0x24 /* $ */ &&\n !(ch >= 0x28 /* ( */ && ch <= 0x2B /* + */) &&\n ch !== 0x2E /* . */ &&\n ch !== 0x3F /* ? */ &&\n ch !== 0x5B /* [ */ &&\n ch !== 0x5E /* ^ */ &&\n ch !== 0x7C /* | */\n ) {\n state.advance();\n return true\n }\n return false\n};\n\n// GroupSpecifier ::\n// [empty]\n// `?` GroupName\npp$1.regexp_groupSpecifier = function(state) {\n if (state.eat(0x3F /* ? */)) {\n if (this.regexp_eatGroupName(state)) {\n if (state.groupNames.indexOf(state.lastStringValue) !== -1) {\n state.raise(\"Duplicate capture group name\");\n }\n state.groupNames.push(state.lastStringValue);\n return\n }\n state.raise(\"Invalid group\");\n }\n};\n\n// GroupName ::\n// `<` RegExpIdentifierName `>`\n// Note: this updates `state.lastStringValue` property with the eaten name.\npp$1.regexp_eatGroupName = function(state) {\n state.lastStringValue = \"\";\n if (state.eat(0x3C /* < */)) {\n if (this.regexp_eatRegExpIdentifierName(state) && state.eat(0x3E /* > */)) {\n return true\n }\n state.raise(\"Invalid capture group name\");\n }\n return false\n};\n\n// RegExpIdentifierName ::\n// RegExpIdentifierStart\n// RegExpIdentifierName RegExpIdentifierPart\n// Note: this updates `state.lastStringValue` property with the eaten name.\npp$1.regexp_eatRegExpIdentifierName = function(state) {\n state.lastStringValue = \"\";\n if (this.regexp_eatRegExpIdentifierStart(state)) {\n state.lastStringValue += codePointToString(state.lastIntValue);\n while (this.regexp_eatRegExpIdentifierPart(state)) {\n state.lastStringValue += codePointToString(state.lastIntValue);\n }\n return true\n }\n return false\n};\n\n// RegExpIdentifierStart ::\n// UnicodeIDStart\n// `$`\n// `_`\n// `\\` RegExpUnicodeEscapeSequence[+U]\npp$1.regexp_eatRegExpIdentifierStart = function(state) {\n var start = state.pos;\n var forceU = this.options.ecmaVersion >= 11;\n var ch = state.current(forceU);\n state.advance(forceU);\n\n if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) {\n ch = state.lastIntValue;\n }\n if (isRegExpIdentifierStart(ch)) {\n state.lastIntValue = ch;\n return true\n }\n\n state.pos = start;\n return false\n};\nfunction isRegExpIdentifierStart(ch) {\n return isIdentifierStart(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */\n}\n\n// RegExpIdentifierPart ::\n// UnicodeIDContinue\n// `$`\n// `_`\n// `\\` RegExpUnicodeEscapeSequence[+U]\n// <ZWNJ>\n// <ZWJ>\npp$1.regexp_eatRegExpIdentifierPart = function(state) {\n var start = state.pos;\n var forceU = this.options.ecmaVersion >= 11;\n var ch = state.current(forceU);\n state.advance(forceU);\n\n if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) {\n ch = state.lastIntValue;\n }\n if (isRegExpIdentifierPart(ch)) {\n state.lastIntValue = ch;\n return true\n }\n\n state.pos = start;\n return false\n};\nfunction isRegExpIdentifierPart(ch) {\n return isIdentifierChar(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */ || ch === 0x200C /* <ZWNJ> */ || ch === 0x200D /* <ZWJ> */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-AtomEscape\npp$1.regexp_eatAtomEscape = function(state) {\n if (\n this.regexp_eatBackReference(state) ||\n this.regexp_eatCharacterClassEscape(state) ||\n this.regexp_eatCharacterEscape(state) ||\n (state.switchN && this.regexp_eatKGroupName(state))\n ) {\n return true\n }\n if (state.switchU) {\n // Make the same message as V8.\n if (state.current() === 0x63 /* c */) {\n state.raise(\"Invalid unicode escape\");\n }\n state.raise(\"Invalid escape\");\n }\n return false\n};\npp$1.regexp_eatBackReference = function(state) {\n var start = state.pos;\n if (this.regexp_eatDecimalEscape(state)) {\n var n = state.lastIntValue;\n if (state.switchU) {\n // For SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-atomescape\n if (n > state.maxBackReference) {\n state.maxBackReference = n;\n }\n return true\n }\n if (n <= state.numCapturingParens) {\n return true\n }\n state.pos = start;\n }\n return false\n};\npp$1.regexp_eatKGroupName = function(state) {\n if (state.eat(0x6B /* k */)) {\n if (this.regexp_eatGroupName(state)) {\n state.backReferenceNames.push(state.lastStringValue);\n return true\n }\n state.raise(\"Invalid named reference\");\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-CharacterEscape\npp$1.regexp_eatCharacterEscape = function(state) {\n return (\n this.regexp_eatControlEscape(state) ||\n this.regexp_eatCControlLetter(state) ||\n this.regexp_eatZero(state) ||\n this.regexp_eatHexEscapeSequence(state) ||\n this.regexp_eatRegExpUnicodeEscapeSequence(state, false) ||\n (!state.switchU && this.regexp_eatLegacyOctalEscapeSequence(state)) ||\n this.regexp_eatIdentityEscape(state)\n )\n};\npp$1.regexp_eatCControlLetter = function(state) {\n var start = state.pos;\n if (state.eat(0x63 /* c */)) {\n if (this.regexp_eatControlLetter(state)) {\n return true\n }\n state.pos = start;\n }\n return false\n};\npp$1.regexp_eatZero = function(state) {\n if (state.current() === 0x30 /* 0 */ && !isDecimalDigit(state.lookahead())) {\n state.lastIntValue = 0;\n state.advance();\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlEscape\npp$1.regexp_eatControlEscape = function(state) {\n var ch = state.current();\n if (ch === 0x74 /* t */) {\n state.lastIntValue = 0x09; /* \\t */\n state.advance();\n return true\n }\n if (ch === 0x6E /* n */) {\n state.lastIntValue = 0x0A; /* \\n */\n state.advance();\n return true\n }\n if (ch === 0x76 /* v */) {\n state.lastIntValue = 0x0B; /* \\v */\n state.advance();\n return true\n }\n if (ch === 0x66 /* f */) {\n state.lastIntValue = 0x0C; /* \\f */\n state.advance();\n return true\n }\n if (ch === 0x72 /* r */) {\n state.lastIntValue = 0x0D; /* \\r */\n state.advance();\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlLetter\npp$1.regexp_eatControlLetter = function(state) {\n var ch = state.current();\n if (isControlLetter(ch)) {\n state.lastIntValue = ch % 0x20;\n state.advance();\n return true\n }\n return false\n};\nfunction isControlLetter(ch) {\n return (\n (ch >= 0x41 /* A */ && ch <= 0x5A /* Z */) ||\n (ch >= 0x61 /* a */ && ch <= 0x7A /* z */)\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-RegExpUnicodeEscapeSequence\npp$1.regexp_eatRegExpUnicodeEscapeSequence = function(state, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n var start = state.pos;\n var switchU = forceU || state.switchU;\n\n if (state.eat(0x75 /* u */)) {\n if (this.regexp_eatFixedHexDigits(state, 4)) {\n var lead = state.lastIntValue;\n if (switchU && lead >= 0xD800 && lead <= 0xDBFF) {\n var leadSurrogateEnd = state.pos;\n if (state.eat(0x5C /* \\ */) && state.eat(0x75 /* u */) && this.regexp_eatFixedHexDigits(state, 4)) {\n var trail = state.lastIntValue;\n if (trail >= 0xDC00 && trail <= 0xDFFF) {\n state.lastIntValue = (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000;\n return true\n }\n }\n state.pos = leadSurrogateEnd;\n state.lastIntValue = lead;\n }\n return true\n }\n if (\n switchU &&\n state.eat(0x7B /* { */) &&\n this.regexp_eatHexDigits(state) &&\n state.eat(0x7D /* } */) &&\n isValidUnicode(state.lastIntValue)\n ) {\n return true\n }\n if (switchU) {\n state.raise(\"Invalid unicode escape\");\n }\n state.pos = start;\n }\n\n return false\n};\nfunction isValidUnicode(ch) {\n return ch >= 0 && ch <= 0x10FFFF\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-IdentityEscape\npp$1.regexp_eatIdentityEscape = function(state) {\n if (state.switchU) {\n if (this.regexp_eatSyntaxCharacter(state)) {\n return true\n }\n if (state.eat(0x2F /* / */)) {\n state.lastIntValue = 0x2F; /* / */\n return true\n }\n return false\n }\n\n var ch = state.current();\n if (ch !== 0x63 /* c */ && (!state.switchN || ch !== 0x6B /* k */)) {\n state.lastIntValue = ch;\n state.advance();\n return true\n }\n\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalEscape\npp$1.regexp_eatDecimalEscape = function(state) {\n state.lastIntValue = 0;\n var ch = state.current();\n if (ch >= 0x31 /* 1 */ && ch <= 0x39 /* 9 */) {\n do {\n state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */);\n state.advance();\n } while ((ch = state.current()) >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */)\n return true\n }\n return false\n};\n\n// Return values used by character set parsing methods, needed to\n// forbid negation of sets that can match strings.\nvar CharSetNone = 0; // Nothing parsed\nvar CharSetOk = 1; // Construct parsed, cannot contain strings\nvar CharSetString = 2; // Construct parsed, can contain strings\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClassEscape\npp$1.regexp_eatCharacterClassEscape = function(state) {\n var ch = state.current();\n\n if (isCharacterClassEscape(ch)) {\n state.lastIntValue = -1;\n state.advance();\n return CharSetOk\n }\n\n var negate = false;\n if (\n state.switchU &&\n this.options.ecmaVersion >= 9 &&\n ((negate = ch === 0x50 /* P */) || ch === 0x70 /* p */)\n ) {\n state.lastIntValue = -1;\n state.advance();\n var result;\n if (\n state.eat(0x7B /* { */) &&\n (result = this.regexp_eatUnicodePropertyValueExpression(state)) &&\n state.eat(0x7D /* } */)\n ) {\n if (negate && result === CharSetString) { state.raise(\"Invalid property name\"); }\n return result\n }\n state.raise(\"Invalid property name\");\n }\n\n return CharSetNone\n};\n\nfunction isCharacterClassEscape(ch) {\n return (\n ch === 0x64 /* d */ ||\n ch === 0x44 /* D */ ||\n ch === 0x73 /* s */ ||\n ch === 0x53 /* S */ ||\n ch === 0x77 /* w */ ||\n ch === 0x57 /* W */\n )\n}\n\n// UnicodePropertyValueExpression ::\n// UnicodePropertyName `=` UnicodePropertyValue\n// LoneUnicodePropertyNameOrValue\npp$1.regexp_eatUnicodePropertyValueExpression = function(state) {\n var start = state.pos;\n\n // UnicodePropertyName `=` UnicodePropertyValue\n if (this.regexp_eatUnicodePropertyName(state) && state.eat(0x3D /* = */)) {\n var name = state.lastStringValue;\n if (this.regexp_eatUnicodePropertyValue(state)) {\n var value = state.lastStringValue;\n this.regexp_validateUnicodePropertyNameAndValue(state, name, value);\n return CharSetOk\n }\n }\n state.pos = start;\n\n // LoneUnicodePropertyNameOrValue\n if (this.regexp_eatLoneUnicodePropertyNameOrValue(state)) {\n var nameOrValue = state.lastStringValue;\n return this.regexp_validateUnicodePropertyNameOrValue(state, nameOrValue)\n }\n return CharSetNone\n};\n\npp$1.regexp_validateUnicodePropertyNameAndValue = function(state, name, value) {\n if (!hasOwn(state.unicodeProperties.nonBinary, name))\n { state.raise(\"Invalid property name\"); }\n if (!state.unicodeProperties.nonBinary[name].test(value))\n { state.raise(\"Invalid property value\"); }\n};\n\npp$1.regexp_validateUnicodePropertyNameOrValue = function(state, nameOrValue) {\n if (state.unicodeProperties.binary.test(nameOrValue)) { return CharSetOk }\n if (state.switchV && state.unicodeProperties.binaryOfStrings.test(nameOrValue)) { return CharSetString }\n state.raise(\"Invalid property name\");\n};\n\n// UnicodePropertyName ::\n// UnicodePropertyNameCharacters\npp$1.regexp_eatUnicodePropertyName = function(state) {\n var ch = 0;\n state.lastStringValue = \"\";\n while (isUnicodePropertyNameCharacter(ch = state.current())) {\n state.lastStringValue += codePointToString(ch);\n state.advance();\n }\n return state.lastStringValue !== \"\"\n};\n\nfunction isUnicodePropertyNameCharacter(ch) {\n return isControlLetter(ch) || ch === 0x5F /* _ */\n}\n\n// UnicodePropertyValue ::\n// UnicodePropertyValueCharacters\npp$1.regexp_eatUnicodePropertyValue = function(state) {\n var ch = 0;\n state.lastStringValue = \"\";\n while (isUnicodePropertyValueCharacter(ch = state.current())) {\n state.lastStringValue += codePointToString(ch);\n state.advance();\n }\n return state.lastStringValue !== \"\"\n};\nfunction isUnicodePropertyValueCharacter(ch) {\n return isUnicodePropertyNameCharacter(ch) || isDecimalDigit(ch)\n}\n\n// LoneUnicodePropertyNameOrValue ::\n// UnicodePropertyValueCharacters\npp$1.regexp_eatLoneUnicodePropertyNameOrValue = function(state) {\n return this.regexp_eatUnicodePropertyValue(state)\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClass\npp$1.regexp_eatCharacterClass = function(state) {\n if (state.eat(0x5B /* [ */)) {\n var negate = state.eat(0x5E /* ^ */);\n var result = this.regexp_classContents(state);\n if (!state.eat(0x5D /* ] */))\n { state.raise(\"Unterminated character class\"); }\n if (negate && result === CharSetString)\n { state.raise(\"Negated character class may contain strings\"); }\n return true\n }\n return false\n};\n\n// https://tc39.es/ecma262/#prod-ClassContents\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassRanges\npp$1.regexp_classContents = function(state) {\n if (state.current() === 0x5D /* ] */) { return CharSetOk }\n if (state.switchV) { return this.regexp_classSetExpression(state) }\n this.regexp_nonEmptyClassRanges(state);\n return CharSetOk\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRanges\n// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRangesNoDash\npp$1.regexp_nonEmptyClassRanges = function(state) {\n while (this.regexp_eatClassAtom(state)) {\n var left = state.lastIntValue;\n if (state.eat(0x2D /* - */) && this.regexp_eatClassAtom(state)) {\n var right = state.lastIntValue;\n if (state.switchU && (left === -1 || right === -1)) {\n state.raise(\"Invalid character class\");\n }\n if (left !== -1 && right !== -1 && left > right) {\n state.raise(\"Range out of order in character class\");\n }\n }\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtom\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtomNoDash\npp$1.regexp_eatClassAtom = function(state) {\n var start = state.pos;\n\n if (state.eat(0x5C /* \\ */)) {\n if (this.regexp_eatClassEscape(state)) {\n return true\n }\n if (state.switchU) {\n // Make the same message as V8.\n var ch$1 = state.current();\n if (ch$1 === 0x63 /* c */ || isOctalDigit(ch$1)) {\n state.raise(\"Invalid class escape\");\n }\n state.raise(\"Invalid escape\");\n }\n state.pos = start;\n }\n\n var ch = state.current();\n if (ch !== 0x5D /* ] */) {\n state.lastIntValue = ch;\n state.advance();\n return true\n }\n\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassEscape\npp$1.regexp_eatClassEscape = function(state) {\n var start = state.pos;\n\n if (state.eat(0x62 /* b */)) {\n state.lastIntValue = 0x08; /* <BS> */\n return true\n }\n\n if (state.switchU && state.eat(0x2D /* - */)) {\n state.lastIntValue = 0x2D; /* - */\n return true\n }\n\n if (!state.switchU && state.eat(0x63 /* c */)) {\n if (this.regexp_eatClassControlLetter(state)) {\n return true\n }\n state.pos = start;\n }\n\n return (\n this.regexp_eatCharacterClassEscape(state) ||\n this.regexp_eatCharacterEscape(state)\n )\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetExpression\n// https://tc39.es/ecma262/#prod-ClassUnion\n// https://tc39.es/ecma262/#prod-ClassIntersection\n// https://tc39.es/ecma262/#prod-ClassSubtraction\npp$1.regexp_classSetExpression = function(state) {\n var result = CharSetOk, subResult;\n if (this.regexp_eatClassSetRange(state)) ; else if (subResult = this.regexp_eatClassSetOperand(state)) {\n if (subResult === CharSetString) { result = CharSetString; }\n // https://tc39.es/ecma262/#prod-ClassIntersection\n var start = state.pos;\n while (state.eatChars([0x26, 0x26] /* && */)) {\n if (\n state.current() !== 0x26 /* & */ &&\n (subResult = this.regexp_eatClassSetOperand(state))\n ) {\n if (subResult !== CharSetString) { result = CharSetOk; }\n continue\n }\n state.raise(\"Invalid character in character class\");\n }\n if (start !== state.pos) { return result }\n // https://tc39.es/ecma262/#prod-ClassSubtraction\n while (state.eatChars([0x2D, 0x2D] /* -- */)) {\n if (this.regexp_eatClassSetOperand(state)) { continue }\n state.raise(\"Invalid character in character class\");\n }\n if (start !== state.pos) { return result }\n } else {\n state.raise(\"Invalid character in character class\");\n }\n // https://tc39.es/ecma262/#prod-ClassUnion\n for (;;) {\n if (this.regexp_eatClassSetRange(state)) { continue }\n subResult = this.regexp_eatClassSetOperand(state);\n if (!subResult) { return result }\n if (subResult === CharSetString) { result = CharSetString; }\n }\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetRange\npp$1.regexp_eatClassSetRange = function(state) {\n var start = state.pos;\n if (this.regexp_eatClassSetCharacter(state)) {\n var left = state.lastIntValue;\n if (state.eat(0x2D /* - */) && this.regexp_eatClassSetCharacter(state)) {\n var right = state.lastIntValue;\n if (left !== -1 && right !== -1 && left > right) {\n state.raise(\"Range out of order in character class\");\n }\n return true\n }\n state.pos = start;\n }\n return false\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetOperand\npp$1.regexp_eatClassSetOperand = function(state) {\n if (this.regexp_eatClassSetCharacter(state)) { return CharSetOk }\n return this.regexp_eatClassStringDisjunction(state) || this.regexp_eatNestedClass(state)\n};\n\n// https://tc39.es/ecma262/#prod-NestedClass\npp$1.regexp_eatNestedClass = function(state) {\n var start = state.pos;\n if (state.eat(0x5B /* [ */)) {\n var negate = state.eat(0x5E /* ^ */);\n var result = this.regexp_classContents(state);\n if (state.eat(0x5D /* ] */)) {\n if (negate && result === CharSetString) {\n state.raise(\"Negated character class may contain strings\");\n }\n return result\n }\n state.pos = start;\n }\n if (state.eat(0x5C /* \\ */)) {\n var result$1 = this.regexp_eatCharacterClassEscape(state);\n if (result$1) {\n return result$1\n }\n state.pos = start;\n }\n return null\n};\n\n// https://tc39.es/ecma262/#prod-ClassStringDisjunction\npp$1.regexp_eatClassStringDisjunction = function(state) {\n var start = state.pos;\n if (state.eatChars([0x5C, 0x71] /* \\q */)) {\n if (state.eat(0x7B /* { */)) {\n var result = this.regexp_classStringDisjunctionContents(state);\n if (state.eat(0x7D /* } */)) {\n return result\n }\n } else {\n // Make the same message as V8.\n state.raise(\"Invalid escape\");\n }\n state.pos = start;\n }\n return null\n};\n\n// https://tc39.es/ecma262/#prod-ClassStringDisjunctionContents\npp$1.regexp_classStringDisjunctionContents = function(state) {\n var result = this.regexp_classString(state);\n while (state.eat(0x7C /* | */)) {\n if (this.regexp_classString(state) === CharSetString) { result = CharSetString; }\n }\n return result\n};\n\n// https://tc39.es/ecma262/#prod-ClassString\n// https://tc39.es/ecma262/#prod-NonEmptyClassString\npp$1.regexp_classString = function(state) {\n var count = 0;\n while (this.regexp_eatClassSetCharacter(state)) { count++; }\n return count === 1 ? CharSetOk : CharSetString\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetCharacter\npp$1.regexp_eatClassSetCharacter = function(state) {\n var start = state.pos;\n if (state.eat(0x5C /* \\ */)) {\n if (\n this.regexp_eatCharacterEscape(state) ||\n this.regexp_eatClassSetReservedPunctuator(state)\n ) {\n return true\n }\n if (state.eat(0x62 /* b */)) {\n state.lastIntValue = 0x08; /* <BS> */\n return true\n }\n state.pos = start;\n return false\n }\n var ch = state.current();\n if (ch < 0 || ch === state.lookahead() && isClassSetReservedDoublePunctuatorCharacter(ch)) { return false }\n if (isClassSetSyntaxCharacter(ch)) { return false }\n state.advance();\n state.lastIntValue = ch;\n return true\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetReservedDoublePunctuator\nfunction isClassSetReservedDoublePunctuatorCharacter(ch) {\n return (\n ch === 0x21 /* ! */ ||\n ch >= 0x23 /* # */ && ch <= 0x26 /* & */ ||\n ch >= 0x2A /* * */ && ch <= 0x2C /* , */ ||\n ch === 0x2E /* . */ ||\n ch >= 0x3A /* : */ && ch <= 0x40 /* @ */ ||\n ch === 0x5E /* ^ */ ||\n ch === 0x60 /* ` */ ||\n ch === 0x7E /* ~ */\n )\n}\n\n// https://tc39.es/ecma262/#prod-ClassSetSyntaxCharacter\nfunction isClassSetSyntaxCharacter(ch) {\n return (\n ch === 0x28 /* ( */ ||\n ch === 0x29 /* ) */ ||\n ch === 0x2D /* - */ ||\n ch === 0x2F /* / */ ||\n ch >= 0x5B /* [ */ && ch <= 0x5D /* ] */ ||\n ch >= 0x7B /* { */ && ch <= 0x7D /* } */\n )\n}\n\n// https://tc39.es/ecma262/#prod-ClassSetReservedPunctuator\npp$1.regexp_eatClassSetReservedPunctuator = function(state) {\n var ch = state.current();\n if (isClassSetReservedPunctuator(ch)) {\n state.lastIntValue = ch;\n state.advance();\n return true\n }\n return false\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetReservedPunctuator\nfunction isClassSetReservedPunctuator(ch) {\n return (\n ch === 0x21 /* ! */ ||\n ch === 0x23 /* # */ ||\n ch === 0x25 /* % */ ||\n ch === 0x26 /* & */ ||\n ch === 0x2C /* , */ ||\n ch === 0x2D /* - */ ||\n ch >= 0x3A /* : */ && ch <= 0x3E /* > */ ||\n ch === 0x40 /* @ */ ||\n ch === 0x60 /* ` */ ||\n ch === 0x7E /* ~ */\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassControlLetter\npp$1.regexp_eatClassControlLetter = function(state) {\n var ch = state.current();\n if (isDecimalDigit(ch) || ch === 0x5F /* _ */) {\n state.lastIntValue = ch % 0x20;\n state.advance();\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\npp$1.regexp_eatHexEscapeSequence = function(state) {\n var start = state.pos;\n if (state.eat(0x78 /* x */)) {\n if (this.regexp_eatFixedHexDigits(state, 2)) {\n return true\n }\n if (state.switchU) {\n state.raise(\"Invalid escape\");\n }\n state.pos = start;\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalDigits\npp$1.regexp_eatDecimalDigits = function(state) {\n var start = state.pos;\n var ch = 0;\n state.lastIntValue = 0;\n while (isDecimalDigit(ch = state.current())) {\n state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */);\n state.advance();\n }\n return state.pos !== start\n};\nfunction isDecimalDigit(ch) {\n return ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigits\npp$1.regexp_eatHexDigits = function(state) {\n var start = state.pos;\n var ch = 0;\n state.lastIntValue = 0;\n while (isHexDigit(ch = state.current())) {\n state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch);\n state.advance();\n }\n return state.pos !== start\n};\nfunction isHexDigit(ch) {\n return (\n (ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */) ||\n (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) ||\n (ch >= 0x61 /* a */ && ch <= 0x66 /* f */)\n )\n}\nfunction hexToInt(ch) {\n if (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) {\n return 10 + (ch - 0x41 /* A */)\n }\n if (ch >= 0x61 /* a */ && ch <= 0x66 /* f */) {\n return 10 + (ch - 0x61 /* a */)\n }\n return ch - 0x30 /* 0 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-LegacyOctalEscapeSequence\n// Allows only 0-377(octal) i.e. 0-255(decimal).\npp$1.regexp_eatLegacyOctalEscapeSequence = function(state) {\n if (this.regexp_eatOctalDigit(state)) {\n var n1 = state.lastIntValue;\n if (this.regexp_eatOctalDigit(state)) {\n var n2 = state.lastIntValue;\n if (n1 <= 3 && this.regexp_eatOctalDigit(state)) {\n state.lastIntValue = n1 * 64 + n2 * 8 + state.lastIntValue;\n } else {\n state.lastIntValue = n1 * 8 + n2;\n }\n } else {\n state.lastIntValue = n1;\n }\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-OctalDigit\npp$1.regexp_eatOctalDigit = function(state) {\n var ch = state.current();\n if (isOctalDigit(ch)) {\n state.lastIntValue = ch - 0x30; /* 0 */\n state.advance();\n return true\n }\n state.lastIntValue = 0;\n return false\n};\nfunction isOctalDigit(ch) {\n return ch >= 0x30 /* 0 */ && ch <= 0x37 /* 7 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Hex4Digits\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigit\n// And HexDigit HexDigit in https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\npp$1.regexp_eatFixedHexDigits = function(state, length) {\n var start = state.pos;\n state.lastIntValue = 0;\n for (var i = 0; i < length; ++i) {\n var ch = state.current();\n if (!isHexDigit(ch)) {\n state.pos = start;\n return false\n }\n state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch);\n state.advance();\n }\n return true\n};\n\n// Object type used to represent tokens. Note that normally, tokens\n// simply exist as properties on the parser object. This is only\n// used for the onToken callback and the external tokenizer.\n\nvar Token = function Token(p) {\n this.type = p.type;\n this.value = p.value;\n this.start = p.start;\n this.end = p.end;\n if (p.options.locations)\n { this.loc = new SourceLocation(p, p.startLoc, p.endLoc); }\n if (p.options.ranges)\n { this.range = [p.start, p.end]; }\n};\n\n// ## Tokenizer\n\nvar pp = Parser.prototype;\n\n// Move to the next token\n\npp.next = function(ignoreEscapeSequenceInKeyword) {\n if (!ignoreEscapeSequenceInKeyword && this.type.keyword && this.containsEsc)\n { this.raiseRecoverable(this.start, \"Escape sequence in keyword \" + this.type.keyword); }\n if (this.options.onToken)\n { this.options.onToken(new Token(this)); }\n\n this.lastTokEnd = this.end;\n this.lastTokStart = this.start;\n this.lastTokEndLoc = this.endLoc;\n this.lastTokStartLoc = this.startLoc;\n this.nextToken();\n};\n\npp.getToken = function() {\n this.next();\n return new Token(this)\n};\n\n// If we're in an ES6 environment, make parsers iterable\nif (typeof Symbol !== \"undefined\")\n { pp[Symbol.iterator] = function() {\n var this$1$1 = this;\n\n return {\n next: function () {\n var token = this$1$1.getToken();\n return {\n done: token.type === types$1.eof,\n value: token\n }\n }\n }\n }; }\n\n// Toggle strict mode. Re-reads the next number or string to please\n// pedantic tests (`\"use strict\"; 010;` should fail).\n\n// Read a single token, updating the parser object's token-related\n// properties.\n\npp.nextToken = function() {\n var curContext = this.curContext();\n if (!curContext || !curContext.preserveSpace) { this.skipSpace(); }\n\n this.start = this.pos;\n if (this.options.locations) { this.startLoc = this.curPosition(); }\n if (this.pos >= this.input.length) { return this.finishToken(types$1.eof) }\n\n if (curContext.override) { return curContext.override(this) }\n else { this.readToken(this.fullCharCodeAtPos()); }\n};\n\npp.readToken = function(code) {\n // Identifier or keyword. '\\uXXXX' sequences are allowed in\n // identifiers, so '\\' also dispatches to that.\n if (isIdentifierStart(code, this.options.ecmaVersion >= 6) || code === 92 /* '\\' */)\n { return this.readWord() }\n\n return this.getTokenFromCode(code)\n};\n\npp.fullCharCodeAtPos = function() {\n var code = this.input.charCodeAt(this.pos);\n if (code <= 0xd7ff || code >= 0xdc00) { return code }\n var next = this.input.charCodeAt(this.pos + 1);\n return next <= 0xdbff || next >= 0xe000 ? code : (code << 10) + next - 0x35fdc00\n};\n\npp.skipBlockComment = function() {\n var startLoc = this.options.onComment && this.curPosition();\n var start = this.pos, end = this.input.indexOf(\"*/\", this.pos += 2);\n if (end === -1) { this.raise(this.pos - 2, \"Unterminated comment\"); }\n this.pos = end + 2;\n if (this.options.locations) {\n for (var nextBreak = (void 0), pos = start; (nextBreak = nextLineBreak(this.input, pos, this.pos)) > -1;) {\n ++this.curLine;\n pos = this.lineStart = nextBreak;\n }\n }\n if (this.options.onComment)\n { this.options.onComment(true, this.input.slice(start + 2, end), start, this.pos,\n startLoc, this.curPosition()); }\n};\n\npp.skipLineComment = function(startSkip) {\n var start = this.pos;\n var startLoc = this.options.onComment && this.curPosition();\n var ch = this.input.charCodeAt(this.pos += startSkip);\n while (this.pos < this.input.length && !isNewLine(ch)) {\n ch = this.input.charCodeAt(++this.pos);\n }\n if (this.options.onComment)\n { this.options.onComment(false, this.input.slice(start + startSkip, this.pos), start, this.pos,\n startLoc, this.curPosition()); }\n};\n\n// Called at the start of the parse and after every token. Skips\n// whitespace and comments, and.\n\npp.skipSpace = function() {\n loop: while (this.pos < this.input.length) {\n var ch = this.input.charCodeAt(this.pos);\n switch (ch) {\n case 32: case 160: // ' '\n ++this.pos;\n break\n case 13:\n if (this.input.charCodeAt(this.pos + 1) === 10) {\n ++this.pos;\n }\n case 10: case 8232: case 8233:\n ++this.pos;\n if (this.options.locations) {\n ++this.curLine;\n this.lineStart = this.pos;\n }\n break\n case 47: // '/'\n switch (this.input.charCodeAt(this.pos + 1)) {\n case 42: // '*'\n this.skipBlockComment();\n break\n case 47:\n this.skipLineComment(2);\n break\n default:\n break loop\n }\n break\n default:\n if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) {\n ++this.pos;\n } else {\n break loop\n }\n }\n }\n};\n\n// Called at the end of every token. Sets `end`, `val`, and\n// maintains `context` and `exprAllowed`, and skips the space after\n// the token, so that the next one's `start` will point at the\n// right position.\n\npp.finishToken = function(type, val) {\n this.end = this.pos;\n if (this.options.locations) { this.endLoc = this.curPosition(); }\n var prevType = this.type;\n this.type = type;\n this.value = val;\n\n this.updateContext(prevType);\n};\n\n// ### Token reading\n\n// This is the function that is called to fetch the next token. It\n// is somewhat obscure, because it works in character codes rather\n// than characters, and because operator parsing has been inlined\n// into it.\n//\n// All in the name of speed.\n//\npp.readToken_dot = function() {\n var next = this.input.charCodeAt(this.pos + 1);\n if (next >= 48 && next <= 57) { return this.readNumber(true) }\n var next2 = this.input.charCodeAt(this.pos + 2);\n if (this.options.ecmaVersion >= 6 && next === 46 && next2 === 46) { // 46 = dot '.'\n this.pos += 3;\n return this.finishToken(types$1.ellipsis)\n } else {\n ++this.pos;\n return this.finishToken(types$1.dot)\n }\n};\n\npp.readToken_slash = function() { // '/'\n var next = this.input.charCodeAt(this.pos + 1);\n if (this.exprAllowed) { ++this.pos; return this.readRegexp() }\n if (next === 61) { return this.finishOp(types$1.assign, 2) }\n return this.finishOp(types$1.slash, 1)\n};\n\npp.readToken_mult_modulo_exp = function(code) { // '%*'\n var next = this.input.charCodeAt(this.pos + 1);\n var size = 1;\n var tokentype = code === 42 ? types$1.star : types$1.modulo;\n\n // exponentiation operator ** and **=\n if (this.options.ecmaVersion >= 7 && code === 42 && next === 42) {\n ++size;\n tokentype = types$1.starstar;\n next = this.input.charCodeAt(this.pos + 2);\n }\n\n if (next === 61) { return this.finishOp(types$1.assign, size + 1) }\n return this.finishOp(tokentype, size)\n};\n\npp.readToken_pipe_amp = function(code) { // '|&'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === code) {\n if (this.options.ecmaVersion >= 12) {\n var next2 = this.input.charCodeAt(this.pos + 2);\n if (next2 === 61) { return this.finishOp(types$1.assign, 3) }\n }\n return this.finishOp(code === 124 ? types$1.logicalOR : types$1.logicalAND, 2)\n }\n if (next === 61) { return this.finishOp(types$1.assign, 2) }\n return this.finishOp(code === 124 ? types$1.bitwiseOR : types$1.bitwiseAND, 1)\n};\n\npp.readToken_caret = function() { // '^'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 61) { return this.finishOp(types$1.assign, 2) }\n return this.finishOp(types$1.bitwiseXOR, 1)\n};\n\npp.readToken_plus_min = function(code) { // '+-'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === code) {\n if (next === 45 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 62 &&\n (this.lastTokEnd === 0 || lineBreak.test(this.input.slice(this.lastTokEnd, this.pos)))) {\n // A `-->` line comment\n this.skipLineComment(3);\n this.skipSpace();\n return this.nextToken()\n }\n return this.finishOp(types$1.incDec, 2)\n }\n if (next === 61) { return this.finishOp(types$1.assign, 2) }\n return this.finishOp(types$1.plusMin, 1)\n};\n\npp.readToken_lt_gt = function(code) { // '<>'\n var next = this.input.charCodeAt(this.pos + 1);\n var size = 1;\n if (next === code) {\n size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2;\n if (this.input.charCodeAt(this.pos + size) === 61) { return this.finishOp(types$1.assign, size + 1) }\n return this.finishOp(types$1.bitShift, size)\n }\n if (next === 33 && code === 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 45 &&\n this.input.charCodeAt(this.pos + 3) === 45) {\n // `<!--`, an XML-style comment that should be interpreted as a line comment\n this.skipLineComment(4);\n this.skipSpace();\n return this.nextToken()\n }\n if (next === 61) { size = 2; }\n return this.finishOp(types$1.relational, size)\n};\n\npp.readToken_eq_excl = function(code) { // '=!'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 61) { return this.finishOp(types$1.equality, this.input.charCodeAt(this.pos + 2) === 61 ? 3 : 2) }\n if (code === 61 && next === 62 && this.options.ecmaVersion >= 6) { // '=>'\n this.pos += 2;\n return this.finishToken(types$1.arrow)\n }\n return this.finishOp(code === 61 ? types$1.eq : types$1.prefix, 1)\n};\n\npp.readToken_question = function() { // '?'\n var ecmaVersion = this.options.ecmaVersion;\n if (ecmaVersion >= 11) {\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 46) {\n var next2 = this.input.charCodeAt(this.pos + 2);\n if (next2 < 48 || next2 > 57) { return this.finishOp(types$1.questionDot, 2) }\n }\n if (next === 63) {\n if (ecmaVersion >= 12) {\n var next2$1 = this.input.charCodeAt(this.pos + 2);\n if (next2$1 === 61) { return this.finishOp(types$1.assign, 3) }\n }\n return this.finishOp(types$1.coalesce, 2)\n }\n }\n return this.finishOp(types$1.question, 1)\n};\n\npp.readToken_numberSign = function() { // '#'\n var ecmaVersion = this.options.ecmaVersion;\n var code = 35; // '#'\n if (ecmaVersion >= 13) {\n ++this.pos;\n code = this.fullCharCodeAtPos();\n if (isIdentifierStart(code, true) || code === 92 /* '\\' */) {\n return this.finishToken(types$1.privateId, this.readWord1())\n }\n }\n\n this.raise(this.pos, \"Unexpected character '\" + codePointToString(code) + \"'\");\n};\n\npp.getTokenFromCode = function(code) {\n switch (code) {\n // The interpretation of a dot depends on whether it is followed\n // by a digit or another two dots.\n case 46: // '.'\n return this.readToken_dot()\n\n // Punctuation tokens.\n case 40: ++this.pos; return this.finishToken(types$1.parenL)\n case 41: ++this.pos; return this.finishToken(types$1.parenR)\n case 59: ++this.pos; return this.finishToken(types$1.semi)\n case 44: ++this.pos; return this.finishToken(types$1.comma)\n case 91: ++this.pos; return this.finishToken(types$1.bracketL)\n case 93: ++this.pos; return this.finishToken(types$1.bracketR)\n case 123: ++this.pos; return this.finishToken(types$1.braceL)\n case 125: ++this.pos; return this.finishToken(types$1.braceR)\n case 58: ++this.pos; return this.finishToken(types$1.colon)\n\n case 96: // '`'\n if (this.options.ecmaVersion < 6) { break }\n ++this.pos;\n return this.finishToken(types$1.backQuote)\n\n case 48: // '0'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 120 || next === 88) { return this.readRadixNumber(16) } // '0x', '0X' - hex number\n if (this.options.ecmaVersion >= 6) {\n if (next === 111 || next === 79) { return this.readRadixNumber(8) } // '0o', '0O' - octal number\n if (next === 98 || next === 66) { return this.readRadixNumber(2) } // '0b', '0B' - binary number\n }\n\n // Anything else beginning with a digit is an integer, octal\n // number, or float.\n case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: // 1-9\n return this.readNumber(false)\n\n // Quotes produce strings.\n case 34: case 39: // '\"', \"'\"\n return this.readString(code)\n\n // Operators are parsed inline in tiny state machines. '=' (61) is\n // often referred to. `finishOp` simply skips the amount of\n // characters it is given as second argument, and returns a token\n // of the type given by its first argument.\n case 47: // '/'\n return this.readToken_slash()\n\n case 37: case 42: // '%*'\n return this.readToken_mult_modulo_exp(code)\n\n case 124: case 38: // '|&'\n return this.readToken_pipe_amp(code)\n\n case 94: // '^'\n return this.readToken_caret()\n\n case 43: case 45: // '+-'\n return this.readToken_plus_min(code)\n\n case 60: case 62: // '<>'\n return this.readToken_lt_gt(code)\n\n case 61: case 33: // '=!'\n return this.readToken_eq_excl(code)\n\n case 63: // '?'\n return this.readToken_question()\n\n case 126: // '~'\n return this.finishOp(types$1.prefix, 1)\n\n case 35: // '#'\n return this.readToken_numberSign()\n }\n\n this.raise(this.pos, \"Unexpected character '\" + codePointToString(code) + \"'\");\n};\n\npp.finishOp = function(type, size) {\n var str = this.input.slice(this.pos, this.pos + size);\n this.pos += size;\n return this.finishToken(type, str)\n};\n\npp.readRegexp = function() {\n var escaped, inClass, start = this.pos;\n for (;;) {\n if (this.pos >= this.input.length) { this.raise(start, \"Unterminated regular expression\"); }\n var ch = this.input.charAt(this.pos);\n if (lineBreak.test(ch)) { this.raise(start, \"Unterminated regular expression\"); }\n if (!escaped) {\n if (ch === \"[\") { inClass = true; }\n else if (ch === \"]\" && inClass) { inClass = false; }\n else if (ch === \"/\" && !inClass) { break }\n escaped = ch === \"\\\\\";\n } else { escaped = false; }\n ++this.pos;\n }\n var pattern = this.input.slice(start, this.pos);\n ++this.pos;\n var flagsStart = this.pos;\n var flags = this.readWord1();\n if (this.containsEsc) { this.unexpected(flagsStart); }\n\n // Validate pattern\n var state = this.regexpState || (this.regexpState = new RegExpValidationState(this));\n state.reset(start, pattern, flags);\n this.validateRegExpFlags(state);\n this.validateRegExpPattern(state);\n\n // Create Literal#value property value.\n var value = null;\n try {\n value = new RegExp(pattern, flags);\n } catch (e) {\n // ESTree requires null if it failed to instantiate RegExp object.\n // https://github.com/estree/estree/blob/a27003adf4fd7bfad44de9cef372a2eacd527b1c/es5.md#regexpliteral\n }\n\n return this.finishToken(types$1.regexp, {pattern: pattern, flags: flags, value: value})\n};\n\n// Read an integer in the given radix. Return null if zero digits\n// were read, the integer value otherwise. When `len` is given, this\n// will return `null` unless the integer has exactly `len` digits.\n\npp.readInt = function(radix, len, maybeLegacyOctalNumericLiteral) {\n // `len` is used for character escape sequences. In that case, disallow separators.\n var allowSeparators = this.options.ecmaVersion >= 12 && len === undefined;\n\n // `maybeLegacyOctalNumericLiteral` is true if it doesn't have prefix (0x,0o,0b)\n // and isn't fraction part nor exponent part. In that case, if the first digit\n // is zero then disallow separators.\n var isLegacyOctalNumericLiteral = maybeLegacyOctalNumericLiteral && this.input.charCodeAt(this.pos) === 48;\n\n var start = this.pos, total = 0, lastCode = 0;\n for (var i = 0, e = len == null ? Infinity : len; i < e; ++i, ++this.pos) {\n var code = this.input.charCodeAt(this.pos), val = (void 0);\n\n if (allowSeparators && code === 95) {\n if (isLegacyOctalNumericLiteral) { this.raiseRecoverable(this.pos, \"Numeric separator is not allowed in legacy octal numeric literals\"); }\n if (lastCode === 95) { this.raiseRecoverable(this.pos, \"Numeric separator must be exactly one underscore\"); }\n if (i === 0) { this.raiseRecoverable(this.pos, \"Numeric separator is not allowed at the first of digits\"); }\n lastCode = code;\n continue\n }\n\n if (code >= 97) { val = code - 97 + 10; } // a\n else if (code >= 65) { val = code - 65 + 10; } // A\n else if (code >= 48 && code <= 57) { val = code - 48; } // 0-9\n else { val = Infinity; }\n if (val >= radix) { break }\n lastCode = code;\n total = total * radix + val;\n }\n\n if (allowSeparators && lastCode === 95) { this.raiseRecoverable(this.pos - 1, \"Numeric separator is not allowed at the last of digits\"); }\n if (this.pos === start || len != null && this.pos - start !== len) { return null }\n\n return total\n};\n\nfunction stringToNumber(str, isLegacyOctalNumericLiteral) {\n if (isLegacyOctalNumericLiteral) {\n return parseInt(str, 8)\n }\n\n // `parseFloat(value)` stops parsing at the first numeric separator then returns a wrong value.\n return parseFloat(str.replace(/_/g, \"\"))\n}\n\nfunction stringToBigInt(str) {\n if (typeof BigInt !== \"function\") {\n return null\n }\n\n // `BigInt(value)` throws syntax error if the string contains numeric separators.\n return BigInt(str.replace(/_/g, \"\"))\n}\n\npp.readRadixNumber = function(radix) {\n var start = this.pos;\n this.pos += 2; // 0x\n var val = this.readInt(radix);\n if (val == null) { this.raise(this.start + 2, \"Expected number in radix \" + radix); }\n if (this.options.ecmaVersion >= 11 && this.input.charCodeAt(this.pos) === 110) {\n val = stringToBigInt(this.input.slice(start, this.pos));\n ++this.pos;\n } else if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n return this.finishToken(types$1.num, val)\n};\n\n// Read an integer, octal integer, or floating-point number.\n\npp.readNumber = function(startsWithDot) {\n var start = this.pos;\n if (!startsWithDot && this.readInt(10, undefined, true) === null) { this.raise(start, \"Invalid number\"); }\n var octal = this.pos - start >= 2 && this.input.charCodeAt(start) === 48;\n if (octal && this.strict) { this.raise(start, \"Invalid number\"); }\n var next = this.input.charCodeAt(this.pos);\n if (!octal && !startsWithDot && this.options.ecmaVersion >= 11 && next === 110) {\n var val$1 = stringToBigInt(this.input.slice(start, this.pos));\n ++this.pos;\n if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n return this.finishToken(types$1.num, val$1)\n }\n if (octal && /[89]/.test(this.input.slice(start, this.pos))) { octal = false; }\n if (next === 46 && !octal) { // '.'\n ++this.pos;\n this.readInt(10);\n next = this.input.charCodeAt(this.pos);\n }\n if ((next === 69 || next === 101) && !octal) { // 'eE'\n next = this.input.charCodeAt(++this.pos);\n if (next === 43 || next === 45) { ++this.pos; } // '+-'\n if (this.readInt(10) === null) { this.raise(start, \"Invalid number\"); }\n }\n if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n\n var val = stringToNumber(this.input.slice(start, this.pos), octal);\n return this.finishToken(types$1.num, val)\n};\n\n// Read a string value, interpreting backslash-escapes.\n\npp.readCodePoint = function() {\n var ch = this.input.charCodeAt(this.pos), code;\n\n if (ch === 123) { // '{'\n if (this.options.ecmaVersion < 6) { this.unexpected(); }\n var codePos = ++this.pos;\n code = this.readHexChar(this.input.indexOf(\"}\", this.pos) - this.pos);\n ++this.pos;\n if (code > 0x10FFFF) { this.invalidStringToken(codePos, \"Code point out of bounds\"); }\n } else {\n code = this.readHexChar(4);\n }\n return code\n};\n\npp.readString = function(quote) {\n var out = \"\", chunkStart = ++this.pos;\n for (;;) {\n if (this.pos >= this.input.length) { this.raise(this.start, \"Unterminated string constant\"); }\n var ch = this.input.charCodeAt(this.pos);\n if (ch === quote) { break }\n if (ch === 92) { // '\\'\n out += this.input.slice(chunkStart, this.pos);\n out += this.readEscapedChar(false);\n chunkStart = this.pos;\n } else if (ch === 0x2028 || ch === 0x2029) {\n if (this.options.ecmaVersion < 10) { this.raise(this.start, \"Unterminated string constant\"); }\n ++this.pos;\n if (this.options.locations) {\n this.curLine++;\n this.lineStart = this.pos;\n }\n } else {\n if (isNewLine(ch)) { this.raise(this.start, \"Unterminated string constant\"); }\n ++this.pos;\n }\n }\n out += this.input.slice(chunkStart, this.pos++);\n return this.finishToken(types$1.string, out)\n};\n\n// Reads template string tokens.\n\nvar INVALID_TEMPLATE_ESCAPE_ERROR = {};\n\npp.tryReadTemplateToken = function() {\n this.inTemplateElement = true;\n try {\n this.readTmplToken();\n } catch (err) {\n if (err === INVALID_TEMPLATE_ESCAPE_ERROR) {\n this.readInvalidTemplateToken();\n } else {\n throw err\n }\n }\n\n this.inTemplateElement = false;\n};\n\npp.invalidStringToken = function(position, message) {\n if (this.inTemplateElement && this.options.ecmaVersion >= 9) {\n throw INVALID_TEMPLATE_ESCAPE_ERROR\n } else {\n this.raise(position, message);\n }\n};\n\npp.readTmplToken = function() {\n var out = \"\", chunkStart = this.pos;\n for (;;) {\n if (this.pos >= this.input.length) { this.raise(this.start, \"Unterminated template\"); }\n var ch = this.input.charCodeAt(this.pos);\n if (ch === 96 || ch === 36 && this.input.charCodeAt(this.pos + 1) === 123) { // '`', '${'\n if (this.pos === this.start && (this.type === types$1.template || this.type === types$1.invalidTemplate)) {\n if (ch === 36) {\n this.pos += 2;\n return this.finishToken(types$1.dollarBraceL)\n } else {\n ++this.pos;\n return this.finishToken(types$1.backQuote)\n }\n }\n out += this.input.slice(chunkStart, this.pos);\n return this.finishToken(types$1.template, out)\n }\n if (ch === 92) { // '\\'\n out += this.input.slice(chunkStart, this.pos);\n out += this.readEscapedChar(true);\n chunkStart = this.pos;\n } else if (isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.pos);\n ++this.pos;\n switch (ch) {\n case 13:\n if (this.input.charCodeAt(this.pos) === 10) { ++this.pos; }\n case 10:\n out += \"\\n\";\n break\n default:\n out += String.fromCharCode(ch);\n break\n }\n if (this.options.locations) {\n ++this.curLine;\n this.lineStart = this.pos;\n }\n chunkStart = this.pos;\n } else {\n ++this.pos;\n }\n }\n};\n\n// Reads a template token to search for the end, without validating any escape sequences\npp.readInvalidTemplateToken = function() {\n for (; this.pos < this.input.length; this.pos++) {\n switch (this.input[this.pos]) {\n case \"\\\\\":\n ++this.pos;\n break\n\n case \"$\":\n if (this.input[this.pos + 1] !== \"{\") {\n break\n }\n\n // falls through\n case \"`\":\n return this.finishToken(types$1.invalidTemplate, this.input.slice(this.start, this.pos))\n\n // no default\n }\n }\n this.raise(this.start, \"Unterminated template\");\n};\n\n// Used to read escaped characters\n\npp.readEscapedChar = function(inTemplate) {\n var ch = this.input.charCodeAt(++this.pos);\n ++this.pos;\n switch (ch) {\n case 110: return \"\\n\" // 'n' -> '\\n'\n case 114: return \"\\r\" // 'r' -> '\\r'\n case 120: return String.fromCharCode(this.readHexChar(2)) // 'x'\n case 117: return codePointToString(this.readCodePoint()) // 'u'\n case 116: return \"\\t\" // 't' -> '\\t'\n case 98: return \"\\b\" // 'b' -> '\\b'\n case 118: return \"\\u000b\" // 'v' -> '\\u000b'\n case 102: return \"\\f\" // 'f' -> '\\f'\n case 13: if (this.input.charCodeAt(this.pos) === 10) { ++this.pos; } // '\\r\\n'\n case 10: // ' \\n'\n if (this.options.locations) { this.lineStart = this.pos; ++this.curLine; }\n return \"\"\n case 56:\n case 57:\n if (this.strict) {\n this.invalidStringToken(\n this.pos - 1,\n \"Invalid escape sequence\"\n );\n }\n if (inTemplate) {\n var codePos = this.pos - 1;\n\n this.invalidStringToken(\n codePos,\n \"Invalid escape sequence in template string\"\n );\n }\n default:\n if (ch >= 48 && ch <= 55) {\n var octalStr = this.input.substr(this.pos - 1, 3).match(/^[0-7]+/)[0];\n var octal = parseInt(octalStr, 8);\n if (octal > 255) {\n octalStr = octalStr.slice(0, -1);\n octal = parseInt(octalStr, 8);\n }\n this.pos += octalStr.length - 1;\n ch = this.input.charCodeAt(this.pos);\n if ((octalStr !== \"0\" || ch === 56 || ch === 57) && (this.strict || inTemplate)) {\n this.invalidStringToken(\n this.pos - 1 - octalStr.length,\n inTemplate\n ? \"Octal literal in template string\"\n : \"Octal literal in strict mode\"\n );\n }\n return String.fromCharCode(octal)\n }\n if (isNewLine(ch)) {\n // Unicode new line characters after \\ get removed from output in both\n // template literals and strings\n return \"\"\n }\n return String.fromCharCode(ch)\n }\n};\n\n// Used to read character escape sequences ('\\x', '\\u', '\\U').\n\npp.readHexChar = function(len) {\n var codePos = this.pos;\n var n = this.readInt(16, len);\n if (n === null) { this.invalidStringToken(codePos, \"Bad character escape sequence\"); }\n return n\n};\n\n// Read an identifier, and return it as a string. Sets `this.containsEsc`\n// to whether the word contained a '\\u' escape.\n//\n// Incrementally adds only escaped chars, adding other chunks as-is\n// as a micro-optimization.\n\npp.readWord1 = function() {\n this.containsEsc = false;\n var word = \"\", first = true, chunkStart = this.pos;\n var astral = this.options.ecmaVersion >= 6;\n while (this.pos < this.input.length) {\n var ch = this.fullCharCodeAtPos();\n if (isIdentifierChar(ch, astral)) {\n this.pos += ch <= 0xffff ? 1 : 2;\n } else if (ch === 92) { // \"\\\"\n this.containsEsc = true;\n word += this.input.slice(chunkStart, this.pos);\n var escStart = this.pos;\n if (this.input.charCodeAt(++this.pos) !== 117) // \"u\"\n { this.invalidStringToken(this.pos, \"Expecting Unicode escape sequence \\\\uXXXX\"); }\n ++this.pos;\n var esc = this.readCodePoint();\n if (!(first ? isIdentifierStart : isIdentifierChar)(esc, astral))\n { this.invalidStringToken(escStart, \"Invalid Unicode escape\"); }\n word += codePointToString(esc);\n chunkStart = this.pos;\n } else {\n break\n }\n first = false;\n }\n return word + this.input.slice(chunkStart, this.pos)\n};\n\n// Read an identifier or keyword token. Will check for reserved\n// words when necessary.\n\npp.readWord = function() {\n var word = this.readWord1();\n var type = types$1.name;\n if (this.keywords.test(word)) {\n type = keywords[word];\n }\n return this.finishToken(type, word)\n};\n\n// Acorn is a tiny, fast JavaScript parser written in JavaScript.\n//\n// Acorn was written by Marijn Haverbeke, Ingvar Stepanyan, and\n// various contributors and released under an MIT license.\n//\n// Git repositories for Acorn are available at\n//\n// http://marijnhaverbeke.nl/git/acorn\n// https://github.com/acornjs/acorn.git\n//\n// Please use the [github bug tracker][ghbt] to report issues.\n//\n// [ghbt]: https://github.com/acornjs/acorn/issues\n//\n// [walk]: util/walk.js\n\n\nvar version = \"8.11.3\";\n\nParser.acorn = {\n Parser: Parser,\n version: version,\n defaultOptions: defaultOptions,\n Position: Position,\n SourceLocation: SourceLocation,\n getLineInfo: getLineInfo,\n Node: Node,\n TokenType: TokenType,\n tokTypes: types$1,\n keywordTypes: keywords,\n TokContext: TokContext,\n tokContexts: types,\n isIdentifierChar: isIdentifierChar,\n isIdentifierStart: isIdentifierStart,\n Token: Token,\n isNewLine: isNewLine,\n lineBreak: lineBreak,\n lineBreakG: lineBreakG,\n nonASCIIwhitespace: nonASCIIwhitespace\n};\n\n// The main exported interface (under `self.acorn` when in the\n// browser) is a `parse` function that takes a code string and returns\n// an abstract syntax tree as specified by the [ESTree spec][estree].\n//\n// [estree]: https://github.com/estree/estree\n\nfunction parse(input, options) {\n return Parser.parse(input, options)\n}\n\n// This function tries to parse a single expression at a given\n// offset in a string. Useful for parsing mixed-language formats\n// that embed JavaScript expressions.\n\nfunction parseExpressionAt(input, pos, options) {\n return Parser.parseExpressionAt(input, pos, options)\n}\n\n// Acorn is organized as a tokenizer and a recursive-descent parser.\n// The `tokenizer` export provides an interface to the tokenizer.\n\nfunction tokenizer(input, options) {\n return Parser.tokenizer(input, options)\n}\n\nexport { Node, Parser, Position, SourceLocation, TokContext, Token, TokenType, defaultOptions, getLineInfo, isIdentifierChar, isIdentifierStart, isNewLine, keywords as keywordTypes, lineBreak, lineBreakG, nonASCIIwhitespace, parse, parseExpressionAt, types as tokContexts, types$1 as tokTypes, tokenizer, version };\n","export default new Set([\n \"Array\",\n \"ArrayBuffer\",\n \"atob\",\n \"AudioContext\",\n \"Blob\",\n \"Boolean\",\n \"BigInt\",\n \"btoa\",\n \"clearInterval\",\n \"clearTimeout\",\n \"console\",\n \"crypto\",\n \"CustomEvent\",\n \"DataView\",\n \"Date\",\n \"decodeURI\",\n \"decodeURIComponent\",\n \"devicePixelRatio\",\n \"document\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"Error\",\n \"escape\",\n \"eval\",\n \"fetch\",\n \"File\",\n \"FileList\",\n \"FileReader\",\n \"Float32Array\",\n \"Float64Array\",\n \"Function\",\n \"Headers\",\n \"Image\",\n \"ImageData\",\n \"Infinity\",\n \"Int16Array\",\n \"Int32Array\",\n \"Int8Array\",\n \"Intl\",\n \"isFinite\",\n \"isNaN\",\n \"JSON\",\n \"Map\",\n \"Math\",\n \"NaN\",\n \"Number\",\n \"navigator\",\n \"Object\",\n \"parseFloat\",\n \"parseInt\",\n \"performance\",\n \"Path2D\",\n \"Promise\",\n \"Proxy\",\n \"RangeError\",\n \"ReferenceError\",\n \"Reflect\",\n \"RegExp\",\n \"cancelAnimationFrame\",\n \"requestAnimationFrame\",\n \"Set\",\n \"setInterval\",\n \"setTimeout\",\n \"String\",\n \"Symbol\",\n \"SyntaxError\",\n \"TextDecoder\",\n \"TextEncoder\",\n \"this\",\n \"TypeError\",\n \"Uint16Array\",\n \"Uint32Array\",\n \"Uint8Array\",\n \"Uint8ClampedArray\",\n \"undefined\",\n \"unescape\",\n \"URIError\",\n \"URL\",\n \"WeakMap\",\n \"WeakSet\",\n \"WebSocket\",\n \"Worker\",\n \"window\"\n]);\n","// AST walker module for ESTree compatible trees\n\n// A simple walk is one where you simply specify callbacks to be\n// called on specific nodes. The last two arguments are optional. A\n// simple use would be\n//\n// walk.simple(myTree, {\n// Expression: function(node) { ... }\n// });\n//\n// to do something with all expressions. All ESTree node types\n// can be used to identify node types, as well as Expression and\n// Statement, which denote categories of nodes.\n//\n// The base argument can be used to pass a custom (recursive)\n// walker, and state can be used to give this walked an initial\n// state.\n\nfunction simple(node, visitors, baseVisitor, state, override) {\n if (!baseVisitor) { baseVisitor = base\n ; }(function c(node, st, override) {\n var type = override || node.type;\n baseVisitor[type](node, st, c);\n if (visitors[type]) { visitors[type](node, st); }\n })(node, state, override);\n}\n\n// An ancestor walk keeps an array of ancestor nodes (including the\n// current node) and passes them to the callback as third parameter\n// (and also as state parameter when no other state is present).\nfunction ancestor(node, visitors, baseVisitor, state, override) {\n var ancestors = [];\n if (!baseVisitor) { baseVisitor = base\n ; }(function c(node, st, override) {\n var type = override || node.type;\n var isNew = node !== ancestors[ancestors.length - 1];\n if (isNew) { ancestors.push(node); }\n baseVisitor[type](node, st, c);\n if (visitors[type]) { visitors[type](node, st || ancestors, ancestors); }\n if (isNew) { ancestors.pop(); }\n })(node, state, override);\n}\n\n// A recursive walk is one where your functions override the default\n// walkers. They can modify and replace the state parameter that's\n// threaded through the walk, and can opt how and whether to walk\n// their child nodes (by calling their third argument on these\n// nodes).\nfunction recursive(node, state, funcs, baseVisitor, override) {\n var visitor = funcs ? make(funcs, baseVisitor || undefined) : baseVisitor\n ;(function c(node, st, override) {\n visitor[override || node.type](node, st, c);\n })(node, state, override);\n}\n\nfunction makeTest(test) {\n if (typeof test === \"string\")\n { return function (type) { return type === test; } }\n else if (!test)\n { return function () { return true; } }\n else\n { return test }\n}\n\nvar Found = function Found(node, state) { this.node = node; this.state = state; };\n\n// A full walk triggers the callback on each node\nfunction full(node, callback, baseVisitor, state, override) {\n if (!baseVisitor) { baseVisitor = base; }\n var last\n ;(function c(node, st, override) {\n var type = override || node.type;\n baseVisitor[type](node, st, c);\n if (last !== node) {\n callback(node, st, type);\n last = node;\n }\n })(node, state, override);\n}\n\n// An fullAncestor walk is like an ancestor walk, but triggers\n// the callback on each node\nfunction fullAncestor(node, callback, baseVisitor, state) {\n if (!baseVisitor) { baseVisitor = base; }\n var ancestors = [], last\n ;(function c(node, st, override) {\n var type = override || node.type;\n var isNew = node !== ancestors[ancestors.length - 1];\n if (isNew) { ancestors.push(node); }\n baseVisitor[type](node, st, c);\n if (last !== node) {\n callback(node, st || ancestors, ancestors, type);\n last = node;\n }\n if (isNew) { ancestors.pop(); }\n })(node, state);\n}\n\n// Find a node with a given start, end, and type (all are optional,\n// null can be used as wildcard). Returns a {node, state} object, or\n// undefined when it doesn't find a matching node.\nfunction findNodeAt(node, start, end, test, baseVisitor, state) {\n if (!baseVisitor) { baseVisitor = base; }\n test = makeTest(test);\n try {\n (function c(node, st, override) {\n var type = override || node.type;\n if ((start == null || node.start <= start) &&\n (end == null || node.end >= end))\n { baseVisitor[type](node, st, c); }\n if ((start == null || node.start === start) &&\n (end == null || node.end === end) &&\n test(type, node))\n { throw new Found(node, st) }\n })(node, state);\n } catch (e) {\n if (e instanceof Found) { return e }\n throw e\n }\n}\n\n// Find the innermost node of a given type that contains the given\n// position. Interface similar to findNodeAt.\nfunction findNodeAround(node, pos, test, baseVisitor, state) {\n test = makeTest(test);\n if (!baseVisitor) { baseVisitor = base; }\n try {\n (function c(node, st, override) {\n var type = override || node.type;\n if (node.start > pos || node.end < pos) { return }\n baseVisitor[type](node, st, c);\n if (test(type, node)) { throw new Found(node, st) }\n })(node, state);\n } catch (e) {\n if (e instanceof Found) { return e }\n throw e\n }\n}\n\n// Find the outermost matching node after a given position.\nfunction findNodeAfter(node, pos, test, baseVisitor, state) {\n test = makeTest(test);\n if (!baseVisitor) { baseVisitor = base; }\n try {\n (function c(node, st, override) {\n if (node.end < pos) { return }\n var type = override || node.type;\n if (node.start >= pos && test(type, node)) { throw new Found(node, st) }\n baseVisitor[type](node, st, c);\n })(node, state);\n } catch (e) {\n if (e instanceof Found) { return e }\n throw e\n }\n}\n\n// Find the outermost matching node before a given position.\nfunction findNodeBefore(node, pos, test, baseVisitor, state) {\n test = makeTest(test);\n if (!baseVisitor) { baseVisitor = base; }\n var max\n ;(function c(node, st, override) {\n if (node.start > pos) { return }\n var type = override || node.type;\n if (node.end <= pos && (!max || max.node.end < node.end) && test(type, node))\n { max = new Found(node, st); }\n baseVisitor[type](node, st, c);\n })(node, state);\n return max\n}\n\n// Used to create a custom walker. Will fill in all missing node\n// type properties with the defaults.\nfunction make(funcs, baseVisitor) {\n var visitor = Object.create(baseVisitor || base);\n for (var type in funcs) { visitor[type] = funcs[type]; }\n return visitor\n}\n\nfunction skipThrough(node, st, c) { c(node, st); }\nfunction ignore(_node, _st, _c) {}\n\n// Node walkers.\n\nvar base = {};\n\nbase.Program = base.BlockStatement = base.StaticBlock = function (node, st, c) {\n for (var i = 0, list = node.body; i < list.length; i += 1)\n {\n var stmt = list[i];\n\n c(stmt, st, \"Statement\");\n }\n};\nbase.Statement = skipThrough;\nbase.EmptyStatement = ignore;\nbase.ExpressionStatement = base.ParenthesizedExpression = base.ChainExpression =\n function (node, st, c) { return c(node.expression, st, \"Expression\"); };\nbase.IfStatement = function (node, st, c) {\n c(node.test, st, \"Expression\");\n c(node.consequent, st, \"Statement\");\n if (node.alternate) { c(node.alternate, st, \"Statement\"); }\n};\nbase.LabeledStatement = function (node, st, c) { return c(node.body, st, \"Statement\"); };\nbase.BreakStatement = base.ContinueStatement = ignore;\nbase.WithStatement = function (node, st, c) {\n c(node.object, st, \"Expression\");\n c(node.body, st, \"Statement\");\n};\nbase.SwitchStatement = function (node, st, c) {\n c(node.discriminant, st, \"Expression\");\n for (var i$1 = 0, list$1 = node.cases; i$1 < list$1.length; i$1 += 1) {\n var cs = list$1[i$1];\n\n if (cs.test) { c(cs.test, st, \"Expression\"); }\n for (var i = 0, list = cs.consequent; i < list.length; i += 1)\n {\n var cons = list[i];\n\n c(cons, st, \"Statement\");\n }\n }\n};\nbase.SwitchCase = function (node, st, c) {\n if (node.test) { c(node.test, st, \"Expression\"); }\n for (var i = 0, list = node.consequent; i < list.length; i += 1)\n {\n var cons = list[i];\n\n c(cons, st, \"Statement\");\n }\n};\nbase.ReturnStatement = base.YieldExpression = base.AwaitExpression = function (node, st, c) {\n if (node.argument) { c(node.argument, st, \"Expression\"); }\n};\nbase.ThrowStatement = base.SpreadElement =\n function (node, st, c) { return c(node.argument, st, \"Expression\"); };\nbase.TryStatement = function (node, st, c) {\n c(node.block, st, \"Statement\");\n if (node.handler) { c(node.handler, st); }\n if (node.finalizer) { c(node.finalizer, st, \"Statement\"); }\n};\nbase.CatchClause = function (node, st, c) {\n if (node.param) { c(node.param, st, \"Pattern\"); }\n c(node.body, st, \"Statement\");\n};\nbase.WhileStatement = base.DoWhileStatement = function (node, st, c) {\n c(node.test, st, \"Expression\");\n c(node.body, st, \"Statement\");\n};\nbase.ForStatement = function (node, st, c) {\n if (node.init) { c(node.init, st, \"ForInit\"); }\n if (node.test) { c(node.test, st, \"Expression\"); }\n if (node.update) { c(node.update, st, \"Expression\"); }\n c(node.body, st, \"Statement\");\n};\nbase.ForInStatement = base.ForOfStatement = function (node, st, c) {\n c(node.left, st, \"ForInit\");\n c(node.right, st, \"Expression\");\n c(node.body, st, \"Statement\");\n};\nbase.ForInit = function (node, st, c) {\n if (node.type === \"VariableDeclaration\") { c(node, st); }\n else { c(node, st, \"Expression\"); }\n};\nbase.DebuggerStatement = ignore;\n\nbase.FunctionDeclaration = function (node, st, c) { return c(node, st, \"Function\"); };\nbase.VariableDeclaration = function (node, st, c) {\n for (var i = 0, list = node.declarations; i < list.length; i += 1)\n {\n var decl = list[i];\n\n c(decl, st);\n }\n};\nbase.VariableDeclarator = function (node, st, c) {\n c(node.id, st, \"Pattern\");\n if (node.init) { c(node.init, st, \"Expression\"); }\n};\n\nbase.Function = function (node, st, c) {\n if (node.id) { c(node.id, st, \"Pattern\"); }\n for (var i = 0, list = node.params; i < list.length; i += 1)\n {\n var param = list[i];\n\n c(param, st, \"Pattern\");\n }\n c(node.body, st, node.expression ? \"Expression\" : \"Statement\");\n};\n\nbase.Pattern = function (node, st, c) {\n if (node.type === \"Identifier\")\n { c(node, st, \"VariablePattern\"); }\n else if (node.type === \"MemberExpression\")\n { c(node, st, \"MemberPattern\"); }\n else\n { c(node, st); }\n};\nbase.VariablePattern = ignore;\nbase.MemberPattern = skipThrough;\nbase.RestElement = function (node, st, c) { return c(node.argument, st, \"Pattern\"); };\nbase.ArrayPattern = function (node, st, c) {\n for (var i = 0, list = node.elements; i < list.length; i += 1) {\n var elt = list[i];\n\n if (elt) { c(elt, st, \"Pattern\"); }\n }\n};\nbase.ObjectPattern = function (node, st, c) {\n for (var i = 0, list = node.properties; i < list.length; i += 1) {\n var prop = list[i];\n\n if (prop.type === \"Property\") {\n if (prop.computed) { c(prop.key, st, \"Expression\"); }\n c(prop.value, st, \"Pattern\");\n } else if (prop.type === \"RestElement\") {\n c(prop.argument, st, \"Pattern\");\n }\n }\n};\n\nbase.Expression = skipThrough;\nbase.ThisExpression = base.Super = base.MetaProperty = ignore;\nbase.ArrayExpression = function (node, st, c) {\n for (var i = 0, list = node.elements; i < list.length; i += 1) {\n var elt = list[i];\n\n if (elt) { c(elt, st, \"Expression\"); }\n }\n};\nbase.ObjectExpression = function (node, st, c) {\n for (var i = 0, list = node.properties; i < list.length; i += 1)\n {\n var prop = list[i];\n\n c(prop, st);\n }\n};\nbase.FunctionExpression = base.ArrowFunctionExpression = base.FunctionDeclaration;\nbase.SequenceExpression = function (node, st, c) {\n for (var i = 0, list = node.expressions; i < list.length; i += 1)\n {\n var expr = list[i];\n\n c(expr, st, \"Expression\");\n }\n};\nbase.TemplateLiteral = function (node, st, c) {\n for (var i = 0, list = node.quasis; i < list.length; i += 1)\n {\n var quasi = list[i];\n\n c(quasi, st);\n }\n\n for (var i$1 = 0, list$1 = node.expressions; i$1 < list$1.length; i$1 += 1)\n {\n var expr = list$1[i$1];\n\n c(expr, st, \"Expression\");\n }\n};\nbase.TemplateElement = ignore;\nbase.UnaryExpression = base.UpdateExpression = function (node, st, c) {\n c(node.argument, st, \"Expression\");\n};\nbase.BinaryExpression = base.LogicalExpression = function (node, st, c) {\n c(node.left, st, \"Expression\");\n c(node.right, st, \"Expression\");\n};\nbase.AssignmentExpression = base.AssignmentPattern = function (node, st, c) {\n c(node.left, st, \"Pattern\");\n c(node.right, st, \"Expression\");\n};\nbase.ConditionalExpression = function (node, st, c) {\n c(node.test, st, \"Expression\");\n c(node.consequent, st, \"Expression\");\n c(node.alternate, st, \"Expression\");\n};\nbase.NewExpression = base.CallExpression = function (node, st, c) {\n c(node.callee, st, \"Expression\");\n if (node.arguments)\n { for (var i = 0, list = node.arguments; i < list.length; i += 1)\n {\n var arg = list[i];\n\n c(arg, st, \"Expression\");\n } }\n};\nbase.MemberExpression = function (node, st, c) {\n c(node.object, st, \"Expression\");\n if (node.computed) { c(node.property, st, \"Expression\"); }\n};\nbase.ExportNamedDeclaration = base.ExportDefaultDeclaration = function (node, st, c) {\n if (node.declaration)\n { c(node.declaration, st, node.type === \"ExportNamedDeclaration\" || node.declaration.id ? \"Statement\" : \"Expression\"); }\n if (node.source) { c(node.source, st, \"Expression\"); }\n};\nbase.ExportAllDeclaration = function (node, st, c) {\n if (node.exported)\n { c(node.exported, st); }\n c(node.source, st, \"Expression\");\n};\nbase.ImportDeclaration = function (node, st, c) {\n for (var i = 0, list = node.specifiers; i < list.length; i += 1)\n {\n var spec = list[i];\n\n c(spec, st);\n }\n c(node.source, st, \"Expression\");\n};\nbase.ImportExpression = function (node, st, c) {\n c(node.source, st, \"Expression\");\n};\nbase.ImportSpecifier = base.ImportDefaultSpecifier = base.ImportNamespaceSpecifier = base.Identifier = base.PrivateIdentifier = base.Literal = ignore;\n\nbase.TaggedTemplateExpression = function (node, st, c) {\n c(node.tag, st, \"Expression\");\n c(node.quasi, st, \"Expression\");\n};\nbase.ClassDeclaration = base.ClassExpression = function (node, st, c) { return c(node, st, \"Class\"); };\nbase.Class = function (node, st, c) {\n if (node.id) { c(node.id, st, \"Pattern\"); }\n if (node.superClass) { c(node.superClass, st, \"Expression\"); }\n c(node.body, st);\n};\nbase.ClassBody = function (node, st, c) {\n for (var i = 0, list = node.body; i < list.length; i += 1)\n {\n var elt = list[i];\n\n c(elt, st);\n }\n};\nbase.MethodDefinition = base.PropertyDefinition = base.Property = function (node, st, c) {\n if (node.computed) { c(node.key, st, \"Expression\"); }\n if (node.value) { c(node.value, st, \"Expression\"); }\n};\n\nexport { ancestor, base, findNodeAfter, findNodeAround, findNodeAt, findNodeBefore, full, fullAncestor, make, recursive, simple };\n","import {make} from \"acorn-walk\";\n\nexport default make({\n Import() {},\n ViewExpression(node, st, c) {\n c(node.id, st, \"Identifier\");\n },\n MutableExpression(node, st, c) {\n c(node.id, st, \"Identifier\");\n }\n});\n","// Based on https://github.com/ForbesLindesay/acorn-globals\n// Copyright (c) 2014 Forbes Lindesay\n// https://github.com/ForbesLindesay/acorn-globals/blob/master/LICENSE\n\nimport {ancestor} from \"acorn-walk\";\nimport walk from \"./walk.js\";\n\nfunction isScope(node) {\n return node.type === \"FunctionExpression\"\n || node.type === \"FunctionDeclaration\"\n || node.type === \"ArrowFunctionExpression\"\n || node.type === \"Program\";\n}\n\nfunction isBlockScope(node) {\n return node.type === \"BlockStatement\"\n || node.type === \"ForInStatement\"\n || node.type === \"ForOfStatement\"\n || node.type === \"ForStatement\"\n || isScope(node);\n}\n\nfunction declaresArguments(node) {\n return node.type === \"FunctionExpression\"\n || node.type === \"FunctionDeclaration\";\n}\n\nexport default function findReferences(cell, globals) {\n const ast = {type: \"Program\", body: [cell.body]};\n const locals = new Map;\n const globalSet = new Set(globals);\n const references = [];\n\n function hasLocal(node, name) {\n const l = locals.get(node);\n return l ? l.has(name) : false;\n }\n\n function declareLocal(node, id) {\n const l = locals.get(node);\n if (l) l.add(id.name);\n else locals.set(node, new Set([id.name]));\n }\n\n function declareClass(node) {\n if (node.id) declareLocal(node, node.id);\n }\n\n function declareFunction(node) {\n node.params.forEach(param => declarePattern(param, node));\n if (node.id) declareLocal(node, node.id);\n }\n\n function declareCatchClause(node) {\n if (node.param) declarePattern(node.param, node);\n }\n\n function declarePattern(node, parent) {\n switch (node.type) {\n case \"Identifier\":\n declareLocal(parent, node);\n break;\n case \"ObjectPattern\":\n node.properties.forEach(node => declarePattern(node, parent));\n break;\n case \"ArrayPattern\":\n node.elements.forEach(node => node && declarePattern(node, parent));\n break;\n case \"Property\":\n declarePattern(node.value, parent);\n break;\n case \"RestElement\":\n declarePattern(node.argument, parent);\n break;\n case \"AssignmentPattern\":\n declarePattern(node.left, parent);\n break;\n default:\n throw new Error(\"Unrecognized pattern type: \" + node.type);\n }\n }\n\n function declareModuleSpecifier(node) {\n declareLocal(ast, node.local);\n }\n\n ancestor(\n ast,\n {\n VariableDeclaration: (node, parents) => {\n let parent = null;\n for (let i = parents.length - 1; i >= 0 && parent === null; --i) {\n if (node.kind === \"var\" ? isScope(parents[i]) : isBlockScope(parents[i])) {\n parent = parents[i];\n }\n }\n node.declarations.forEach(declaration => declarePattern(declaration.id, parent));\n },\n FunctionDeclaration: (node, parents) => {\n let parent = null;\n for (let i = parents.length - 2; i >= 0 && parent === null; --i) {\n if (isScope(parents[i])) {\n parent = parents[i];\n }\n }\n declareLocal(parent, node.id);\n declareFunction(node);\n },\n Function: declareFunction,\n ClassDeclaration: (node, parents) => {\n let parent = null;\n for (let i = parents.length - 2; i >= 0 && parent === null; i--) {\n if (isScope(parents[i])) {\n parent = parents[i];\n }\n }\n declareLocal(parent, node.id);\n },\n Class: declareClass,\n CatchClause: declareCatchClause,\n ImportDefaultSpecifier: declareModuleSpecifier,\n ImportSpecifier: declareModuleSpecifier,\n ImportNamespaceSpecifier: declareModuleSpecifier\n },\n walk\n );\n\n function identifier(node, parents) {\n let name = node.name;\n if (name === \"undefined\") return;\n for (let i = parents.length - 2; i >= 0; --i) {\n if (name === \"arguments\") {\n if (declaresArguments(parents[i])) {\n return;\n }\n }\n if (hasLocal(parents[i], name)) {\n return;\n }\n if (parents[i].type === \"ViewExpression\") {\n node = parents[i];\n name = `viewof ${node.id.name}`;\n }\n if (parents[i].type === \"MutableExpression\") {\n node = parents[i];\n name = `mutable ${node.id.name}`;\n }\n }\n if (!globalSet.has(name)) {\n if (name === \"arguments\") {\n throw Object.assign(new SyntaxError(`arguments is not allowed`), {node});\n }\n references.push(node);\n }\n }\n\n ancestor(\n ast,\n {\n VariablePattern: identifier,\n Identifier: identifier\n },\n walk\n );\n\n function checkConst(node, parents) {\n if (!node) return;\n switch (node.type) {\n case \"Identifier\":\n case \"VariablePattern\": {\n for (const parent of parents) {\n if (hasLocal(parent, node.name)) {\n return;\n }\n }\n if (parents[parents.length - 2].type === \"MutableExpression\") {\n return;\n }\n throw Object.assign(new SyntaxError(`Assignment to constant variable ${node.name}`), {node});\n }\n case \"ArrayPattern\": {\n for (const element of node.elements) {\n checkConst(element, parents);\n }\n return;\n }\n case \"ObjectPattern\": {\n for (const property of node.properties) {\n checkConst(property, parents);\n }\n return;\n }\n case \"Property\": {\n checkConst(node.value, parents);\n return;\n }\n case \"RestElement\": {\n checkConst(node.argument, parents);\n return;\n }\n }\n }\n\n function checkConstArgument(node, parents) {\n checkConst(node.argument, parents);\n }\n\n function checkConstLeft(node, parents) {\n checkConst(node.left, parents);\n }\n\n ancestor(\n ast,\n {\n AssignmentExpression: checkConstLeft,\n AssignmentPattern: checkConstLeft,\n UpdateExpression: checkConstArgument,\n ForOfStatement: checkConstLeft,\n ForInStatement: checkConstLeft\n },\n walk\n );\n\n return references;\n}\n","import {simple} from \"acorn-walk\";\nimport walk from \"./walk.js\";\n\nexport default function findFeatures(cell, featureName) {\n const ast = {type: \"Program\", body: [cell.body]};\n const features = new Map();\n const {references} = cell;\n\n simple(\n ast,\n {\n CallExpression: node => {\n const {callee, arguments: args} = node;\n\n // Ignore function calls that are not references to the feature.\n if (\n callee.type !== \"Identifier\" ||\n callee.name !== featureName ||\n references.indexOf(callee) < 0\n ) return;\n\n // Forbid dynamic calls.\n if (\n args.length !== 1 ||\n !((args[0].type === \"Literal\" && /^['\"]/.test(args[0].raw)) ||\n (args[0].type === \"TemplateLiteral\" && args[0].expressions.length === 0))\n ) {\n throw Object.assign(new SyntaxError(`${featureName} requires a single literal string argument`), {node});\n }\n\n const [arg] = args;\n const name = arg.type === \"Literal\" ? arg.value : arg.quasis[0].value.cooked;\n const location = {start: arg.start, end: arg.end};\n if (features.has(name)) features.get(name).push(location);\n else features.set(name, [location]);\n }\n },\n walk\n );\n\n return features;\n}\n","import {getLineInfo, TokContext, tokTypes as tt, Parser} from \"acorn\";\nimport defaultGlobals from \"./globals.js\";\nimport findReferences from \"./references.js\";\nimport findFeatures from \"./features.js\";\n\nconst SCOPE_FUNCTION = 2;\nconst SCOPE_ASYNC = 4;\nconst SCOPE_GENERATOR = 8;\n\nexport function parseCell(input, {tag, raw, globals, ...options} = {}) {\n let cell;\n // Parse empty input as JavaScript to keep ensure resulting ast\n // is consistent for all empty input cases.\n if (tag != null && input) {\n cell = TemplateCellParser.parse(input, options);\n const parsedTag = CellTagParser.parse(tag, options);\n parseReferences(parsedTag, tag, globals);\n parseFeatures(parsedTag, tag);\n cell.tag = parsedTag;\n cell.raw = !!raw;\n } else {\n cell = CellParser.parse(input, options);\n }\n parseReferences(cell, input, globals);\n parseFeatures(cell, input);\n return cell;\n}\n\nexport class CellParser extends Parser {\n constructor(options, ...args) {\n super(Object.assign({ecmaVersion: 13}, options), ...args);\n }\n enterScope(flags) {\n if (flags & SCOPE_FUNCTION) ++this.O_function;\n return super.enterScope(flags);\n }\n exitScope() {\n if (this.currentScope().flags & SCOPE_FUNCTION) --this.O_function;\n return super.exitScope();\n }\n parseForIn(node, init) {\n if (this.O_function === 1 && node.await) this.O_async = true;\n return super.parseForIn(node, init);\n }\n parseAwait() {\n if (this.O_function === 1) this.O_async = true;\n return super.parseAwait();\n }\n parseYield(noIn) {\n if (this.O_function === 1) this.O_generator = true;\n return super.parseYield(noIn);\n }\n parseImport(node) {\n this.next();\n node.specifiers = this.parseImportSpecifiers();\n if (this.type === tt._with) {\n this.next();\n node.injections = this.parseImportSpecifiers();\n }\n this.expectContextual(\"from\");\n node.source = this.type === tt.string ? this.parseExprAtom() : this.unexpected();\n return this.finishNode(node, \"ImportDeclaration\");\n }\n parseImportSpecifiers() {\n const nodes = [];\n const identifiers = new Set;\n let first = true;\n this.expect(tt.braceL);\n while (!this.eat(tt.braceR)) {\n if (first) {\n first = false;\n } else {\n this.expect(tt.comma);\n if (this.afterTrailingComma(tt.braceR)) break;\n }\n const node = this.startNode();\n node.view = this.eatContextual(\"viewof\");\n node.mutable = node.view ? false : this.eatContextual(\"mutable\");\n node.imported = this.parseIdent();\n this.checkUnreserved(node.imported);\n this.checkLocal(node.imported);\n if (this.eatContextual(\"as\")) {\n node.local = this.parseIdent();\n this.checkUnreserved(node.local);\n this.checkLocal(node.local);\n } else {\n node.local = node.imported;\n }\n this.checkLValSimple(node.local, \"let\");\n if (identifiers.has(node.local.name)) {\n this.raise(node.local.start, `Identifier '${node.local.name}' has already been declared`);\n }\n identifiers.add(node.local.name);\n nodes.push(this.finishNode(node, \"ImportSpecifier\"));\n }\n return nodes;\n }\n parseExprAtom(refDestructuringErrors) {\n return (\n this.parseMaybeKeywordExpression(\"viewof\", \"ViewExpression\") ||\n this.parseMaybeKeywordExpression(\"mutable\", \"MutableExpression\") ||\n super.parseExprAtom(refDestructuringErrors)\n );\n }\n startCell() {\n this.O_function = 0;\n this.O_async = false;\n this.O_generator = false;\n this.strict = true;\n this.enterScope(SCOPE_FUNCTION | SCOPE_ASYNC | SCOPE_GENERATOR);\n }\n finishCell(node, body, id) {\n if (id) this.checkLocal(id);\n node.id = id;\n node.body = body;\n node.async = this.O_async;\n node.generator = this.O_generator;\n this.exitScope();\n return this.finishNode(node, \"Cell\");\n }\n parseCell(node, eof) {\n const lookahead = new CellParser({}, this.input, this.start);\n let token = lookahead.getToken();\n let body = null;\n let id = null;\n\n this.startCell();\n\n // An import?\n if (token.type === tt._import && lookahead.getToken().type !== tt.parenL) {\n body = this.parseImport(this.startNode());\n }\n\n // A non-empty cell?\n else if (token.type !== tt.eof && token.type !== tt.semi) {\n // A named cell?\n if (token.type === tt.name) {\n if (token.value === \"viewof\" || token.value === \"mutable\") {\n token = lookahead.getToken();\n if (token.type !== tt.name) {\n lookahead.unexpected();\n }\n }\n token = lookahead.getToken();\n if (token.type === tt.eq) {\n id =\n this.parseMaybeKeywordExpression(\"viewof\", \"ViewExpression\") ||\n this.parseMaybeKeywordExpression(\"mutable\", \"MutableExpression\") ||\n this.parseIdent();\n token = lookahead.getToken();\n this.expect(tt.eq);\n }\n }\n\n // A block?\n if (token.type === tt.braceL) {\n body = this.parseBlock();\n }\n\n // An expression?\n // Possibly a function or class declaration?\n else {\n body = this.parseExpression();\n if (\n id === null &&\n (body.type === \"FunctionExpression\" ||\n body.type === \"ClassExpression\")\n ) {\n id = body.id;\n }\n }\n }\n\n this.semicolon();\n if (eof) this.expect(tt.eof); // TODO\n\n return this.finishCell(node, body, id);\n }\n parseTopLevel(node) {\n return this.parseCell(node, true);\n }\n toAssignable(node, isBinding, refDestructuringErrors) {\n return node.type === \"MutableExpression\"\n ? node\n : super.toAssignable(node, isBinding, refDestructuringErrors);\n }\n checkLocal(id) {\n const node = id.id || id;\n if (defaultGlobals.has(node.name) || node.name === \"arguments\") {\n this.raise(node.start, `Identifier '${node.name}' is reserved`);\n }\n }\n checkUnreserved(node) {\n if (node.name === \"viewof\" || node.name === \"mutable\") {\n this.raise(node.start, `Unexpected keyword '${node.name}'`);\n }\n return super.checkUnreserved(node);\n }\n checkLValSimple(expr, bindingType, checkClashes) {\n return super.checkLValSimple(\n expr.type === \"MutableExpression\" ? expr.id : expr,\n bindingType,\n checkClashes\n );\n }\n unexpected(pos) {\n this.raise(\n pos != null ? pos : this.start,\n this.type === tt.eof ? \"Unexpected end of input\" : \"Unexpected token\"\n );\n }\n parseMaybeKeywordExpression(keyword, type) {\n if (this.isContextual(keyword)) {\n const node = this.startNode();\n this.next();\n node.id = this.parseIdent();\n return this.finishNode(node, type);\n }\n }\n}\n\n// Based on acorn’s q_tmpl. We will use this to initialize the\n// parser context so our `readTemplateToken` override is called.\n// `readTemplateToken` is based on acorn's `readTmplToken` which\n// is used inside template literals. Our version allows backQuotes.\nconst o_tmpl = new TokContext(\n \"`\", // token\n true, // isExpr\n true, // preserveSpace\n parser => readTemplateToken.call(parser) // override\n);\n\nexport class TemplateCellParser extends CellParser {\n constructor(...args) {\n super(...args);\n // Initialize the type so that we're inside a backQuote\n this.type = tt.backQuote;\n this.exprAllowed = false;\n }\n initialContext() {\n // Provide our custom TokContext\n return [o_tmpl];\n }\n parseCell(node) {\n this.startCell();\n\n // Fix for nextToken calling finishToken(tt.eof)\n if (this.type === tt.eof) this.value = \"\";\n\n // Based on acorn.Parser.parseTemplate\n const isTagged = true;\n const body = this.startNode();\n body.expressions = [];\n let curElt = this.parseTemplateElement({isTagged});\n body.quasis = [curElt];\n while (this.type !== tt.eof) {\n this.expect(tt.dollarBraceL);\n body.expressions.push(this.parseExpression());\n this.expect(tt.braceR);\n body.quasis.push(curElt = this.parseTemplateElement({isTagged}));\n }\n curElt.tail = true;\n this.next();\n this.finishNode(body, \"TemplateLiteral\");\n\n this.expect(tt.eof);\n return this.finishCell(node, body, null);\n }\n}\n\n// This is our custom override for parsing a template that allows backticks.\n// Based on acorn's readInvalidTemplateToken.\nfunction readTemplateToken() {\n out: for (; this.pos < this.input.length; this.pos++) {\n switch (this.input.charCodeAt(this.pos)) {\n case 92: { // slash\n if (this.pos < this.input.length - 1) ++this.pos; // not a terminal slash\n break;\n }\n case 36: { // dollar\n if (this.input.charCodeAt(this.pos + 1) === 123) { // dollar curly\n if (this.pos === this.start && this.type === tt.invalidTemplate) {\n this.pos += 2;\n return this.finishToken(tt.dollarBraceL);\n }\n break out;\n }\n break;\n }\n }\n }\n return this.finishToken(tt.invalidTemplate, this.input.slice(this.start, this.pos));\n}\n\nexport class CellTagParser extends Parser {\n constructor(options, ...args) {\n super(Object.assign({ecmaVersion: 12}, options), ...args);\n }\n enterScope(flags) {\n if (flags & SCOPE_FUNCTION) ++this.O_function;\n return super.enterScope(flags);\n }\n exitScope() {\n if (this.currentScope().flags & SCOPE_FUNCTION) --this.O_function;\n return super.exitScope();\n }\n parseForIn(node, init) {\n if (this.O_function === 1 && node.await) this.O_async = true;\n return super.parseForIn(node, init);\n }\n parseAwait() {\n if (this.O_function === 1) this.O_async = true;\n return super.parseAwait();\n }\n parseYield(noIn) {\n if (this.O_function === 1) this.O_generator = true;\n return super.parseYield(noIn);\n }\n parseTopLevel(node) {\n this.O_function = 0;\n this.O_async = false;\n this.O_generator = false;\n this.strict = true;\n this.enterScope(SCOPE_FUNCTION | SCOPE_ASYNC | SCOPE_GENERATOR);\n node.body = this.parseExpression();\n node.input = this.input;\n node.async = this.O_async;\n node.generator = this.O_generator;\n this.exitScope();\n return this.finishNode(node, \"CellTag\");\n }\n}\n\n// Find references.\n// Check for illegal references to arguments.\n// Check for illegal assignments to global references.\nfunction parseReferences(cell, input, globals = defaultGlobals) {\n if (!cell.body) {\n cell.references = [];\n } else if (cell.body.type === \"ImportDeclaration\") {\n cell.references = cell.body.injections\n ? cell.body.injections.map(i => i.imported)\n : [];\n } else {\n try {\n cell.references = findReferences(cell, globals);\n } catch (error) {\n if (error.node) {\n const loc = getLineInfo(input, error.node.start);\n error.message += ` (${loc.line}:${loc.column})`;\n error.pos = error.node.start;\n error.loc = loc;\n delete error.node;\n }\n throw error;\n }\n }\n return cell;\n}\n\n// Find features: file attachments, secrets, database clients.\n// Check for illegal references to arguments.\n// Check for illegal assignments to global references.\nfunction parseFeatures(cell, input) {\n if (cell.body && cell.body.type !== \"ImportDeclaration\") {\n try {\n cell.fileAttachments = findFeatures(cell, \"FileAttachment\");\n cell.databaseClients = findFeatures(cell, \"DatabaseClient\");\n cell.secrets = findFeatures(cell, \"Secret\");\n cell.notificationClients = findFeatures(cell, \"NotificationClient\");\n } catch (error) {\n if (error.node) {\n const loc = getLineInfo(input, error.node.start);\n error.message += ` (${loc.line}:${loc.column})`;\n error.pos = error.node.start;\n error.loc = loc;\n delete error.node;\n }\n throw error;\n }\n } else {\n cell.fileAttachments = new Map();\n cell.databaseClients = new Map();\n cell.secrets = new Map();\n cell.notificationClients = new Map();\n }\n return cell;\n}\n","// Compare with ../../../node_modules/@observablehq/parser/src/parse.js\nimport { getLineInfo, tokTypes as tt } from \"acorn\";\nimport { parseCell as ohqParseCell, CellParser } from \"@observablehq/parser\";\nimport defaultGlobals from \"../../../node_modules/@observablehq/parser/src/globals.js\";\nimport findReferences from \"../../../node_modules/@observablehq/parser/src/references.js\";\nimport findFeatures from \"../../../node_modules/@observablehq/parser/src/features.js\";\n\n// Find references.\n// Check for illegal references to arguments.\n// Check for illegal assignments to global references.\nfunction parseReferences(cell, input, globals = defaultGlobals) {\n if (!cell.body) {\n cell.references = [];\n } else if (cell.body.type === \"ImportDeclaration\") {\n // This is correct?!?\n cell.references = cell.body.specifiers\n ? cell.body.specifiers.map(i => i.imported)\n : [];\n } else {\n try {\n cell.references = findReferences(cell, globals);\n } catch (error) {\n if (error.node) {\n const loc = getLineInfo(input, error.node.start);\n error.message += ` (${loc.line}:${loc.column})`;\n error.pos = error.node.start;\n error.loc = loc;\n delete error.node;\n }\n throw error;\n }\n }\n return cell;\n}\n\n// Find features: file attachments, secrets, database clients.\n// Check for illegal references to arguments.\n// Check for illegal assignments to global references.\nfunction parseFeatures(cell, input) {\n if (cell.body && cell.body.type !== \"ImportDeclaration\") {\n try {\n cell.fileAttachments = findFeatures(cell, \"FileAttachment\");\n cell.databaseClients = findFeatures(cell, \"DatabaseClient\");\n cell.secrets = findFeatures(cell, \"Secret\");\n } catch (error) {\n if (error.node) {\n const loc = getLineInfo(input, error.node.start);\n error.message += ` (${loc.line}:${loc.column})`;\n error.pos = error.node.start;\n error.loc = loc;\n delete error.node;\n }\n throw error;\n }\n } else {\n cell.fileAttachments = new Map();\n cell.databaseClients = new Map();\n cell.secrets = new Map();\n }\n return cell;\n}\n\nclass ModuleParser extends CellParser {\n\n parseTopLevel(node) {\n if (!node.cells) node.cells = [];\n // @ts-ignore\n while (this.type !== tt.eof) {\n // @ts-ignore\n const cell = this.parseCell(this.startNode());\n // @ts-ignore\n cell.input = this.input;\n node.cells.push(cell);\n }\n // @ts-ignore\n this.next();\n // @ts-ignore\n return this.finishNode(node, \"Program\");\n }\n}\n\n// @ts-ignore\nexport function parseModule(input, { globals } = {}) {\n // @ts-ignore\n const program = ModuleParser.parse(input, { ecmaVersion: 2020 });\n for (const cell of program.cells) {\n parseReferences(cell, input, globals);\n parseFeatures(cell, input);\n }\n return program;\n}\n\nexport interface Cell {\n text: string;\n start: number;\n end: number;\n}\n\nexport function splitModule(input: string): Cell[] {\n return (ModuleParser as any)\n .parse(input, { ecmaVersion: \"latest\" })\n .cells.map((cell: any) => ({\n text: input.substring(cell.start, cell.end),\n start: cell.start,\n end: cell.end\n }));\n}\n\nexport function parseCell(input: string) {\n return ohqParseCell(input);\n}\n\n","import type { ohq } from \"@hpcc-js/observable-shim\";\nimport { parseCell, splitModule } from \"@hpcc-js/observable-shim\";\n\nconst FuncTypes = {\n functionType: Object.getPrototypeOf(function () { }).constructor,\n asyncFunctionType: Object.getPrototypeOf(async function () { }).constructor,\n generatorFunctionType: Object.getPrototypeOf(function* () { }).constructor,\n asyncGeneratorFunctionType: Object.getPrototypeOf(async function* () { }).constructor\n};\n\nfunction funcType(async: boolean = false, generator: boolean = false) {\n if (!async && !generator) return FuncTypes.functionType;\n if (async && !generator) return FuncTypes.asyncFunctionType;\n if (!async && generator) return FuncTypes.generatorFunctionType;\n return FuncTypes.asyncGeneratorFunctionType;\n}\n\ninterface Ref {\n start: number,\n end: number,\n newText: string\n}\n\nexport interface Refs {\n inputs: string[];\n args: string[];\n patches: Ref[];\n}\n\nexport function createFunction(refs: Refs, async = false, generator = false, blockStatement = false, body?: string) {\n if (body === undefined) {\n return undefined;\n }\n\n refs.patches.sort((l, r) => r.start - l.start);\n refs.patches.forEach(r => {\n body = body!.substring(0, r.start) + r.newText + body!.substring(r.end);\n });\n return new (funcType(async, generator))(...refs.args, blockStatement ?\n body.substring(1, body.length - 1).trim() :\n `return (\\n${body}\\n);`);\n}\n\nfunction join(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, \"\") + \"/\" + relativeURL.replace(/^\\/+/, \"\")\n : baseURL;\n}\n\nexport const isRelativePath = (path: string) => path[0] === \".\";\nexport const fixRelativeUrl = (path: string, basePath: string) => {\n if (isRelativePath(path)) {\n return join(basePath, path);\n }\n return path;\n};\n\n// Hide \"import\" from bundlers as they have a habit of replacing \"import\" with \"require\"\nexport async function obfuscatedImport(url: string) {\n return new FuncTypes.asyncFunctionType(\"url\", \"return import(url)\")(url);\n}\n\ninterface ParsedOJS {\n ojs: string;\n offset: number;\n inlineMD: boolean;\n cell: any;\n error: any;\n}\n\nexport function encodeBacktick(str: string) {\n return str\n .split(\"`\").join(\"\\\\`\")\n ;\n}\n\nfunction createParsedOJS(ojs: string, offset: number, inlineMD: boolean): ParsedOJS {\n let cell;\n let error;\n try {\n cell = parseCell(ojs);\n } catch (e) {\n error = e;\n }\n return {\n ojs,\n offset,\n inlineMD,\n cell,\n error\n };\n}\n\nfunction splitOmd(_: string): ParsedOJS[] {\n const retVal: ParsedOJS[] = [];\n // Load Markdown ---\n const re = /(```(?:\\s|\\S)[\\s\\S]*?```)/g;\n let prevOffset = 0;\n let match = re.exec(_);\n while (match !== null) {\n if (match.index > prevOffset) {\n retVal.push(createParsedOJS(_.substring(prevOffset, match.index), prevOffset, true));\n }\n\n const outer = match[0];\n if (outer.indexOf(\"``` \") === 0 || outer.indexOf(\"```\\n\") === 0 || outer.indexOf(\"```\\r\\n\") === 0) {\n const prefixLen = 3;\n const inner = outer.substring(prefixLen, outer.length - prefixLen);\n retVal.push(createParsedOJS(inner, match.index + prefixLen, false));\n } else {\n retVal.push(createParsedOJS(outer, match.index, true));\n }\n\n prevOffset = match.index + match[0].length;\n match = re.exec(_);\n }\n if (_.length > prevOffset) {\n retVal.push(createParsedOJS(_.substring(prevOffset, _.length), prevOffset, true));\n }\n return retVal;\n}\n\nexport function notebook2ojs(_: string): ParsedOJS[] {\n const parsed: ohq.Notebook = JSON.parse(_);\n return parsed.nodes.map(node => createParsedOJS(node.value, 0, node.mode === \"md\"));\n}\n\nexport function ojs2notebook(ojs: string): ohq.Notebook {\n const cells = splitModule(ojs);\n return {\n files: [],\n nodes: cells.map((cell, idx) => {\n return {\n id: idx,\n mode: \"js\",\n value: cell.text,\n start: cell.start,\n end: cell.end\n };\n })\n } as ohq.Notebook;\n}\n\nexport function omd2notebook(omd: string): ohq.Notebook {\n const cells = splitOmd(omd);\n return {\n files: [],\n nodes: cells.map((cell, idx) => {\n return {\n id: idx,\n mode: cell.inlineMD ? \"md\" : \"js\",\n value: cell.ojs,\n start: cell.offset,\n end: cell.offset + cell.ojs.length\n };\n })\n } as ohq.Notebook;\n}\n\nexport function fetchEx(url: string, proxyPrefix = \"https://api.codetabs.com/v1/proxy/?quest=\", proxyPostfix = \"\") {\n const matches = url.match(/^(?:https?:\\/\\/)?(?:[^@\\n]+@)?(?:www\\.)?([^:\\/\\n?]+)/img);\n return fetch(url, { headers: { origin: matches[0], referer: url } }).then(response => {\n if (response.ok) return response;\n throw new Error(\"CORS?\");\n }).catch(e => {\n url = `${proxyPrefix}${url}${proxyPostfix}`;\n return fetch(url, { headers: { origin: matches[0], referer: url } });\n });\n}\n\nexport function download(impUrl: string, proxyPrefix?: string, proxyPostfix?: string): Promise<ohq.Notebook> {\n const isShared = impUrl.indexOf(\"https://observablehq.com/d\") === 0;\n return fetchEx(impUrl.replace(`https://observablehq.com/${isShared ? \"d/\" : \"\"}`, \"https://api.observablehq.com/document/\"), proxyPrefix, proxyPostfix)\n .then(r => r.json())\n ;\n}","import { parseCell as ohqParseCell } from \"@hpcc-js/observable-shim\";\nimport { acorn, walk } from \"@observablehq/parser\";\nimport { ancestor } from \"acorn-walk\";\n\nimport { fixRelativeUrl, createFunction, Refs } from \"./util\";\n\nfunction calcRefs(cellAst, cellStr): Refs {\n if (cellAst.references === undefined) return { inputs: [], args: [], patches: [] };\n\n const dedup = {};\n cellAst.references.forEach(r => dedup[cellStr.substring(r.start, r.end)] = true);\n const retVal: Refs = {\n inputs: Object.keys(dedup),\n args: Object.keys(dedup).map(r => r.split(\" \").join(\"_\")),\n patches: []\n };\n const pushPatch = (node, newText) => retVal.patches.push({ start: node.start - cellAst.body.start, end: node.end - cellAst.body.start, newText });\n if (cellAst.body) {\n ancestor(cellAst.body, {\n Identifier(node) {\n const value = cellStr.substring(node.start, node.end);\n if (dedup[value]) {\n }\n },\n MutableExpression(node) {\n const value = cellStr.substring(node.start, node.end);\n const newText = value.split(\" \").join(\"_\") + \".value\";\n pushPatch(node, newText);\n },\n ViewExpression(node) {\n const value = cellStr.substring(node.start, node.end);\n const newText = value.split(\" \").join(\"_\");\n pushPatch(node, newText);\n },\n ThisExpression(node, ancestors: acorn.Node[]) {\n const value = cellStr.substring(node.start, node.end);\n if (value === \"this\" && !ancestors.find(n => n.type === \"FunctionExpression\")) {\n pushPatch(node, \"((this === globalThis || this === globalThis.window)? undefined : this?.valueOf())\");\n }\n }\n } as acorn.AncestorVisitors, walk);\n }\n return retVal;\n}\n\nexport interface ParsedCell {\n type: \"import\" | \"viewof\" | \"mutable\" | \"variable\" | \"identifier\"\n}\n\nexport interface ParsedImportCell extends ParsedCell {\n type: \"import\"\n src: string;\n specifiers: { view: boolean, name: string, alias?: string }[];\n injections: { name: string, alias: string }[];\n}\n\nfunction parseImportDeclaration(cellAst): ParsedImportCell {\n return {\n type: \"import\",\n src: cellAst.body.source.value,\n specifiers: cellAst.body.specifiers?.map(spec => {\n return {\n view: spec.view,\n name: spec.imported.name,\n alias: (spec.local?.name && spec.imported.name !== spec.local.name) ? spec.local.name : spec.imported.name\n };\n }) ?? [],\n injections: cellAst.body.injections?.map(inj => {\n return {\n name: inj.imported.name,\n alias: inj.local?.name ?? inj.imported.name\n };\n }) ?? [],\n };\n}\n\nexport interface ParsedVariable extends ParsedCell {\n type: \"variable\"\n id?: string,\n inputs: string[],\n func: any,\n}\n\nexport interface ParsedViewCell extends ParsedCell {\n type: \"viewof\",\n variable: ParsedVariable;\n variableValue: ParsedVariable;\n}\n\nfunction parseViewExpression(cellStr: string, cellAst, refs: Refs, bodyStr?: string): ParsedViewCell {\n const id = cellAst.id && cellStr.substring(cellAst.id.start, cellAst.id.end);\n return {\n type: \"viewof\",\n variable: {\n type: \"variable\",\n id,\n inputs: refs.inputs,\n func: createFunction(refs, cellAst.async, cellAst.generator, cellAst.body.type === \"BlockStatement\", bodyStr)\n },\n variableValue: {\n type: \"variable\",\n id: cellAst?.id?.id?.name,\n inputs: [\"Generators\", id],\n func: (G, _) => G.input(_)\n }\n };\n}\n\ninterface ParsedMutableCell extends ParsedCell {\n type: \"mutable\",\n initial: ParsedVariable;\n variable: ParsedVariable;\n variableValue: ParsedVariable;\n}\n\nfunction parseMutableExpression(cellStr: string, cellAst, refs: Refs, bodyStr?: string): ParsedMutableCell {\n const id = cellAst.id && cellStr.substring(cellAst.id.start, cellAst.id.end);\n const initialValueId = cellAst?.id?.id?.name;\n const initialId = `initial ${initialValueId}`;\n return {\n type: \"mutable\",\n initial: {\n type: \"variable\",\n id: initialId,\n inputs: refs.inputs,\n func: createFunction(refs, cellAst.async, cellAst.generator, cellAst.body.type === \"BlockStatement\", bodyStr)\n },\n variable: {\n type: \"variable\",\n id,\n inputs: [\"Mutable\", initialId],\n func: (M, _) => new M(_)\n },\n variableValue: {\n type: \"variable\",\n id: initialValueId,\n inputs: [id],\n func: _ => _.generator\n }\n };\n}\n\ninterface ParsedVariableCell extends ParsedCell {\n type: \"variable\",\n id: string,\n inputs: string[],\n func: any,\n}\n\nfunction parseVariableExpression(cellStr: string, cellAst, refs: Refs, bodyStr?: string): ParsedVariableCell {\n return {\n type: \"variable\",\n id: cellAst.id && cellStr.substring(cellAst.id?.start, cellAst.id?.end),\n inputs: refs.inputs,\n func: createFunction(refs, cellAst.async, cellAst.generator, cellAst.body.type === \"BlockStatement\", bodyStr)\n };\n}\n\nexport function parseCell(cellStr: string, baseUrl: string): ParsedImportCell | ParsedViewCell | ParsedMutableCell | ParsedVariableCell {\n const cellAst = ohqParseCell(cellStr);\n let bodyStr = cellAst.body && cellStr.substring(cellAst.body.start, cellAst.body.end);\n switch ((cellAst.body)?.type) {\n case \"ImportDeclaration\":\n return parseImportDeclaration(cellAst);\n case \"ImportExpression\":\n bodyStr = `import(\"${fixRelativeUrl(cellAst.body.source.value, baseUrl)}\")`;\n }\n const refs = calcRefs(cellAst, cellStr);\n\n switch (cellAst.id?.type) {\n case \"ViewExpression\":\n return parseViewExpression(cellStr, cellAst, refs, bodyStr);\n case \"MutableExpression\":\n return parseMutableExpression(cellStr, cellAst, refs, bodyStr);\n default:\n return parseVariableExpression(cellStr, cellAst, refs, bodyStr);\n }\n}\n","import { ohq } from \"@hpcc-js/observable-shim\";\nimport { ParsedImportCell, ParsedVariable } from \"./cst\";\n\nexport class Writer {\n\n protected _files: ohq.File[] = [];\n protected _imports: string[] = [];\n protected _functions: string[] = [];\n protected _defines: string[] = [];\n protected _defineUid = 0;\n protected _functionUid = 0;\n\n constructor() {\n }\n\n toString() {\n return `\\\n${this._imports.join(\"\\n\")}\n\n${this._functions.join(\"\\n\").split(\"\\n) {\").join(\"){\")}\n\nexport default function define(runtime, observer) {\n const main = runtime.module();\n\n function toString() { return this.url; }\n const fileAttachments = new Map([\n ${this._files.map(f => `[\"${f.name}\", { url: new URL(\"${f.url}\"), mimeType: ${JSON.stringify(f.mime_type)}, toString }]`).join(\",\\n \")}\n ]);\n main.builtin(\"FileAttachment\", runtime.fileAttachments(name => fileAttachments.get(name)));\n\n ${this._defines.join(\"\\n \")}\n\n return main;\n}\\n`;\n }\n\n files(files: ohq.File[]) {\n this._files = [...this._files, ...files];\n }\n\n import(url: string) {\n this._imports.push(`import define${++this._defineUid} from \"${url}\"; `);\n }\n\n importDefine(imp: Partial<ParsedImportCell>) {\n const injections = imp.injections.map(inj => {\n return inj.name === inj.alias ?\n `\"${inj.name}\"` :\n `{name: \"${inj.name}\", alias: \"${inj.alias}\"}`;\n });\n const derive = imp.injections.length ? `.derive([${injections.join(\", \")}], main)` : \"\";\n this._defines.push(`const child${this._defineUid} = runtime.module(define${this._defineUid})${derive};`);\n imp.specifiers.forEach(s => {\n this._defines.push(`main.import(\"${s.name}\"${s.alias && s.alias !== s.name ? `, \"${s.alias}\"` : \"\"}, child${this._defineUid}); `);\n });\n }\n\n function(variable: Partial<ParsedVariable>) {\n let id = variable.id ?? `${++this._functionUid}`;\n const idParts = id.split(\" \");\n id = `_${idParts[idParts.length - 1]}`;\n this._functions.push(`${variable.func?.toString()?.replace(\"anonymous\", `${id}`)}`);\n return id;\n }\n\n define(variable: Partial<ParsedVariable>, observable = true, inlineFunc = false, funcId?: string) {\n funcId = funcId ?? variable.id;\n const observe = observable ? `.variable(observer(${variable.id ? JSON.stringify(variable.id) : \"\"}))` : \"\";\n const id = variable.id ? `${JSON.stringify(variable.id)}, ` : \"\";\n const inputs = variable.inputs.length ? `[${variable.inputs.map(i => JSON.stringify(i)).join(\", \")}], ` : \"\";\n const func = inlineFunc ?\n variable.func?.toString() :\n funcId;\n this._defines.push(`main${observe}.define(${id}${inputs}${func});`);\n }\n\n error(msg: string) {\n }\n}\n\n","import { ohq, splitModule } from \"@hpcc-js/observable-shim\";\nimport { parseCell, ParsedImportCell } from \"./cst\";\nimport { Writer } from \"./writer\";\nimport { fixRelativeUrl, isRelativePath, encodeBacktick, fetchEx, obfuscatedImport, ojs2notebook, omd2notebook } from \"./util\";\n\n// Inspector Factory ---\nexport type InspectorFactoryEx = (name: string | undefined, id: string | number) => Inspector;\n\nexport interface Inspector {\n _node?: HTMLDivElement;\n pending();\n fulfilled(value);\n rejected(error);\n}\n\n// Module ---\n\ninterface ImportDefine {\n (runtime: ohq.Runtime, inspector?: InspectorFactoryEx): ohq.Module;\n delete: () => void;\n write: (w: Writer) => void;\n}\n\nasync function importFile(relativePath: string, baseUrl: string) {\n const path = fixRelativeUrl(relativePath, baseUrl);\n const content = await fetchEx(path).then(r => r.text());\n let notebook: ohq.Notebook;\n if (relativePath.endsWith(\".ojsnb\")) {\n notebook = JSON.parse(content);\n } else if (relativePath.endsWith(\".ojs\")) {\n notebook = ojs2notebook(content);\n } else if (relativePath.endsWith(\".omd\")) {\n notebook = omd2notebook(content);\n }\n const retVal: ImportDefine = compile(notebook, { baseUrl }) as any;\n retVal.delete = () => { };\n retVal.write = (w: Writer) => {\n w.import(path);\n };\n return retVal;\n}\n\n// Import precompiled notebook from observable ---\nasync function importCompiledNotebook(partial: string) {\n const url = `https://api.observablehq.com/${partial[0] === \"@\" ? partial : `d/${partial}`}.js?v=3`;\n let impMod = {\n default: function (runtime: ohq.Runtime, inspector?: InspectorFactoryEx): ohq.Module {\n return undefined;\n } as any\n };\n try {\n impMod = await obfuscatedImport(url);\n } catch (e) {\n }\n const retVal: ImportDefine = impMod.default;\n retVal.delete = () => { };\n retVal.write = (w: Writer) => {\n w.import(url);\n };\n return retVal;\n}\n\n// Recursive notebook parsing and compiling\nasync function importNotebook(partial: string) {\n const url = `https://api.observablehq.com/document/${partial}`;\n const notebook = fetchEx(url)\n .then(r => {\n return r.json();\n }).catch(e => {\n console.error(url);\n console.error(e);\n });\n const retVal: ImportDefine = compile(await notebook) as any;\n retVal.delete = () => { };\n retVal.write = (w: Writer) => {\n w.import(url);\n };\n return retVal;\n}\n\nasync function createModule(node: ohq.Node, parsed: ParsedImportCell, text: string, { baseUrl, importMode }: CompileOptions) {\n const otherModule = isRelativePath(parsed.src) ?\n await importFile(parsed.src, baseUrl) :\n importMode === \"recursive\" ?\n await importNotebook(parsed.src) :\n await importCompiledNotebook(parsed.src);\n\n const importVariables: ImportVariableFunc[] = [];\n const variables: VariableFunc[] = [];\n parsed.specifiers.forEach(spec => {\n const viewof = spec.view ? \"viewof \" : \"\";\n importVariables.push(createImportVariable(viewof + spec.name, viewof + spec.alias));\n if (spec.view) {\n importVariables.push(createImportVariable(spec.name, spec.alias));\n }\n });\n\n const retVal = (runtime: ohq.Runtime, main: ohq.Module, inspector?: InspectorFactoryEx) => {\n\n let mod = runtime.module(otherModule);\n if (parsed.injections.length) {\n mod = mod.derive(parsed.injections, main);\n }\n variables.forEach(v => v(main, inspector));\n importVariables.forEach(v => v(main, mod));\n return mod;\n };\n retVal.importVariables = importVariables;\n retVal.variables = variables;\n retVal.delete = () => {\n importVariables.forEach(v => v.delete());\n variables.forEach(v => v.delete());\n otherModule.delete();\n };\n retVal.write = (w: Writer) => {\n otherModule.write(w);\n w.importDefine(parsed);\n };\n return retVal;\n}\ntype ModuleFunc = Awaited<ReturnType<typeof createModule>>;\n\n// Variable ---\nfunction createVariable(node: ohq.Node, inspect: boolean, name?: string, inputs?: string[], definition?: any, inline = false) {\n\n let i: ohq.Inspector;\n let v: ohq.Variable;\n\n const retVal = (module: ohq.Module, inspector?: InspectorFactoryEx) => {\n i = inspect ? inspector(name, node.id) : undefined;\n v = module.variable(i);\n if (arguments.length > 1) {\n try {\n v.define(name, inputs, definition);\n } catch (e: any) {\n console.error(e?.message);\n }\n }\n if (node.pinned) {\n v = module.variable(inspector(name, node.id));\n try {\n v.define(undefined, [\"md\"], md => {\n return md`\\`\\`\\`js\n${node.value}\n\\`\\`\\``;\n });\n } catch (e: any) {\n console.error(e?.message);\n }\n }\n return v;\n };\n retVal.delete = () => {\n try {\n i?._node?.remove();\n } catch (e) {\n }\n i = undefined;\n try {\n v?.delete();\n } catch (e) {\n }\n v = undefined;\n };\n retVal.write = (w: Writer) => {\n if (inline) {\n w.define({ id: name, inputs, func: definition }, inspect, true);\n } else {\n const id = w.function({ id: name, func: definition });\n w.define({ id: name, inputs, func: definition }, inspect, false, id);\n }\n };\n return retVal;\n}\ntype VariableFunc = ReturnType<typeof createVariable>;\n\nfunction createImportVariable(name?: string, alias?: string) {\n\n let v: ohq.Variable;\n\n const retVal = (main: ohq.Module, otherModule: ohq.Module) => {\n v = main.variable();\n v.import(name, alias, otherModule);\n };\n\n retVal.delete = () => {\n v?.delete();\n };\n return retVal;\n}\ntype ImportVariableFunc = ReturnType<typeof createImportVariable>;\n\n// Cell ---\nasync function createCell(node: ohq.Node, options: CompileOptions) {\n const modules: ModuleFunc[] = [];\n const variables: VariableFunc[] = [];\n try {\n const text = node.mode && node.mode !== \"js\" ? `${node.mode}\\`${encodeBacktick(node.value)}\\`` : node.value;\n const parsedModule = splitModule(text);\n for (const cell of parsedModule) {\n const parsed = parseCell(cell.text, options.baseUrl);\n switch (parsed.type) {\n case \"import\":\n modules.push(await createModule(node, parsed, cell.text, options));\n break;\n case \"viewof\":\n variables.push(createVariable(node, true, parsed.variable.id, parsed.variable.inputs, parsed.variable.func));\n variables.push(createVariable(node, false, parsed.variableValue.id, parsed.variableValue.inputs, parsed.variableValue.func, true));\n break;\n case \"mutable\":\n variables.push(createVariable(node, false, parsed.initial.id, parsed.initial.inputs, parsed.initial.func));\n variables.push(createVariable(node, false, parsed.variable.id, parsed.variable.inputs, parsed.variable.func));\n variables.push(createVariable(node, true, parsed.variableValue.id, parsed.variableValue.inputs, parsed.variableValue.func, true));\n break;\n case \"variable\":\n variables.push(createVariable(node, true, parsed.id, parsed.inputs, parsed.func));\n break;\n }\n }\n } catch (e) {\n variables.push(createVariable(node, true, undefined, [], e.message));\n }\n\n const retVal = (runtime: ohq.Runtime, main: ohq.Module, inspector?: InspectorFactoryEx) => {\n modules.forEach(imp => imp(runtime, main, inspector));\n variables.forEach(v => v(main, inspector));\n };\n retVal.id = node.id;\n retVal.modules = modules;\n retVal.variables = variables;\n retVal.delete = () => {\n variables.forEach(v => v.delete());\n modules.forEach(mod => mod.delete());\n };\n retVal.write = (w: Writer) => {\n modules.forEach(imp => imp.write(w));\n variables.forEach(v => v.write(w));\n };\n return retVal;\n}\nexport type CellFunc = Awaited<ReturnType<typeof createCell>>;\n\n// File ---\nfunction createFile(file: ohq.File, options: CompileOptions): [string, any] {\n function toString() { return globalThis.url; }\n return [file.name, { url: new URL(fixRelativeUrl(file.url, options.baseUrl)), mimeType: file.mime_type, toString }];\n}\ntype FileFunc = ReturnType<typeof createFile>;\n\n// Interpret ---\nexport interface CompileOptions {\n baseUrl?: string;\n importMode?: \"recursive\" | \"precompiled\";\n}\nexport function notebook(_files: ohq.File[] = [], _cells: CellFunc[] = [], { baseUrl = \".\", importMode = \"precompiled\" }: CompileOptions = {}) {\n const files: FileFunc[] = _files.map(f => createFile(f, { baseUrl, importMode }));\n const fileAttachments = new Map<string, any>(files);\n const cells = new Map<string | number, CellFunc>(_cells.map(c => [c.id, c]));\n\n const retVal = (runtime: ohq.Runtime, inspector?: InspectorFactoryEx): ohq.Module => {\n const main = runtime.module();\n main.builtin(\"FileAttachment\", runtime.fileAttachments(name => {\n return fileAttachments.get(name) ?? { url: new URL(fixRelativeUrl(name, baseUrl)), mimeType: null };\n }));\n main.builtin(\"fetchEx\", fetchEx);\n\n cells.forEach(cell => {\n cell(runtime, main, inspector);\n });\n return main;\n };\n retVal.fileAttachments = fileAttachments;\n retVal.cells = cells;\n retVal.set = async (n: ohq.Node): Promise<CellFunc> => {\n const cell = await createCell(n, { baseUrl, importMode });\n retVal.delete(cell.id);\n cells.set(cell.id, cell);\n return cell;\n };\n retVal.get = (id: string | number): CellFunc => {\n return cells.get(id);\n };\n retVal.delete = (id: string | number): boolean => {\n const cell = cells.get(id);\n if (cell) {\n cell.delete();\n return cells.delete(id);\n }\n return false;\n };\n retVal.clear = () => {\n cells.forEach(cell => cell.delete());\n cells.clear();\n };\n retVal.write = (w: Writer) => {\n w.files(_files);\n cells.forEach(cell => cell.write(w));\n };\n retVal.toString = (w = new Writer()) => {\n retVal.write(w);\n return w.toString().trim();\n };\n return retVal;\n}\n\nexport async function compile(notebookOrOjs: ohq.Notebook | string, { baseUrl = \".\", importMode = \"precompiled\" }: CompileOptions = {}) {\n const ojsNotebook = typeof notebookOrOjs === \"string\" ? ojs2notebook(notebookOrOjs) : notebookOrOjs;\n const _cells: CellFunc[] = await Promise.all(ojsNotebook.nodes.map(n => createCell(n, { baseUrl, importMode })));\n return notebook(ojsNotebook.files, _cells, { baseUrl, importMode });\n}\nexport type compileFunc = Awaited<ReturnType<typeof compile>>;\n"],"names":["SCOPE_FUNCTION","SCOPE_ASYNC","SCOPE_GENERATOR","base","ancestor","make","skipThrough","ignore","walk","parseCell","parseReferences","parseFeatures","tt","ohqParseCell"],"mappings":"AAAA;AACA,IAAI,qBAAqB,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;AAC7hC;AACA;AACA,IAAI,0BAA0B,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI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"}
|