@meridianlabs/log-viewer 0.3.272 → 0.3.275
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/lib/AnsiDisplayRich-302CIkEj.js +1431 -0
- package/lib/AnsiDisplayRich-302CIkEj.js.map +1 -0
- package/lib/ToolButton-BmBvTvKO.js +124 -0
- package/lib/ToolButton-BmBvTvKO.js.map +1 -0
- package/lib/e2e/content-trust.spec.d.ts +2 -0
- package/lib/e2e/content-trust.spec.d.ts.map +1 -0
- package/lib/e2e/expandable-panel-sticky-toggle.spec.d.ts +2 -0
- package/lib/e2e/expandable-panel-sticky-toggle.spec.d.ts.map +1 -0
- package/lib/e2e/fixtures/log-list-scenario.d.ts +37 -1
- package/lib/e2e/fixtures/log-list-scenario.d.ts.map +1 -1
- package/lib/e2e/fixtures/serve-eval-file.d.ts +20 -0
- package/lib/e2e/fixtures/serve-eval-file.d.ts.map +1 -0
- package/lib/e2e/log-location-trust.spec.d.ts +2 -0
- package/lib/e2e/log-location-trust.spec.d.ts.map +1 -0
- package/lib/e2e/sample-activity.spec.d.ts +10 -0
- package/lib/e2e/sample-activity.spec.d.ts.map +1 -0
- package/lib/e2e/scanner-glob.spec.d.ts +2 -0
- package/lib/e2e/scanner-glob.spec.d.ts.map +1 -0
- package/lib/e2e/timeline-axis-bounds.spec.d.ts +2 -0
- package/lib/e2e/timeline-axis-bounds.spec.d.ts.map +1 -0
- package/lib/e2e/zip-reader.spec.d.ts +2 -0
- package/lib/e2e/zip-reader.spec.d.ts.map +1 -0
- package/lib/index.js +27678 -45828
- package/lib/index.js.map +1 -1
- package/lib/markdownPipeline-BeMkkZRz.js +8575 -0
- package/lib/markdownPipeline-BeMkkZRz.js.map +1 -0
- package/lib/markdownText-z5R6PHwt.js +105 -0
- package/lib/markdownText-z5R6PHwt.js.map +1 -0
- package/lib/prismHighlighter-D-PZtkPX.js +1927 -0
- package/lib/prismHighlighter-D-PZtkPX.js.map +1 -0
- package/lib/rolldown-runtime-B-lAHAz2.js +37 -0
- package/lib/src/app/App.d.ts.map +1 -1
- package/lib/src/app/flow/FlowButton.d.ts +2 -1
- package/lib/src/app/flow/FlowButton.d.ts.map +1 -1
- package/lib/src/app/flow/FlowPanel.d.ts.map +1 -1
- package/lib/src/app/log-list/grid/LogListGrid.d.ts.map +1 -1
- package/lib/src/app/log-list/grid/columns/hooks.d.ts.map +1 -1
- package/lib/src/app/log-view/LogSampleDetailView.d.ts.map +1 -1
- package/lib/src/app/log-view/LogView.d.ts.map +1 -1
- package/lib/src/app/log-view/tabs/ConfigCard.d.ts.map +1 -1
- package/lib/src/app/log-view/tabs/InfoTab.d.ts +1 -0
- package/lib/src/app/log-view/tabs/InfoTab.d.ts.map +1 -1
- package/lib/src/app/log-view/tabs/JsonTab.d.ts +9 -1
- package/lib/src/app/log-view/tabs/JsonTab.d.ts.map +1 -1
- package/lib/src/app/log-view/tabs/ModelsTab.d.ts +1 -0
- package/lib/src/app/log-view/tabs/ModelsTab.d.ts.map +1 -1
- package/lib/src/app/log-view/tabs/SamplesTab.d.ts +1 -1
- package/lib/src/app/log-view/tabs/SamplesTab.d.ts.map +1 -1
- package/lib/src/app/log-view/tabs/TaskTab.d.ts +1 -0
- package/lib/src/app/log-view/tabs/TaskTab.d.ts.map +1 -1
- package/lib/src/app/log-view/tabs/timeline/HistoryList.d.ts +3 -2
- package/lib/src/app/log-view/tabs/timeline/HistoryList.d.ts.map +1 -1
- package/lib/src/app/log-view/tabs/timeline/OpenSampleLink.d.ts +24 -0
- package/lib/src/app/log-view/tabs/timeline/OpenSampleLink.d.ts.map +1 -0
- package/lib/src/app/log-view/tabs/timeline/TimelineChart.d.ts +3 -2
- package/lib/src/app/log-view/tabs/timeline/TimelineChart.d.ts.map +1 -1
- package/lib/src/app/log-view/tabs/timeline/TimelineTab.d.ts +6 -36
- package/lib/src/app/log-view/tabs/timeline/TimelineTab.d.ts.map +1 -1
- package/lib/src/app/log-view/tabs/timeline/timelineAxis.d.ts +11 -0
- package/lib/src/app/log-view/tabs/timeline/timelineAxis.d.ts.map +1 -0
- package/lib/src/app/log-view/title-view/ScoreGrid.d.ts.map +1 -1
- package/lib/src/app/log-view/title-view/SecondaryBar.d.ts.map +1 -1
- package/lib/src/app/log-view/useTimelineNavigation.d.ts +24 -0
- package/lib/src/app/log-view/useTimelineNavigation.d.ts.map +1 -0
- package/lib/src/app/navbar/ViewSegmentedControl.d.ts.map +1 -1
- package/lib/src/app/routing/AppRouter.d.ts.map +1 -1
- package/lib/src/app/routing/logNavigation.d.ts +1 -0
- package/lib/src/app/routing/logNavigation.d.ts.map +1 -1
- package/lib/src/app/routing/sampleNavigation.d.ts +4 -1
- package/lib/src/app/routing/sampleNavigation.d.ts.map +1 -1
- package/lib/src/app/routing/url.d.ts.map +1 -1
- package/lib/src/app/samples/SampleDisplay.d.ts.map +1 -1
- package/lib/src/app/samples/SampleNavbar.d.ts +3 -0
- package/lib/src/app/samples/SampleNavbar.d.ts.map +1 -1
- package/lib/src/app/samples/SampleSummaryView.d.ts.map +1 -1
- package/lib/src/app/samples/descriptor/samplesDescriptor.d.ts.map +1 -1
- package/lib/src/app/samples/descriptor/score/BooleanScoreDescriptor.d.ts.map +1 -1
- package/lib/src/app/samples/descriptor/score/CategoricalScoreDescriptor.d.ts.map +1 -1
- package/lib/src/app/samples/descriptor/score/PassFailScoreDescriptor.d.ts.map +1 -1
- package/lib/src/app/samples/event/SampleEventView.d.ts.map +1 -1
- package/lib/src/app/samples/header-v2/ScorePanel.d.ts.map +1 -1
- package/lib/src/app/samples/header-v2/ScoreValueDisplay.d.ts.map +1 -1
- package/lib/src/app/samples/header-v2/scoreTone.d.ts.map +1 -1
- package/lib/src/app/samples/list/SampleList.d.ts.map +1 -1
- package/lib/src/app/samples/print/SamplePrintView.d.ts.map +1 -1
- package/lib/src/app/samples/sample-tools/filters.d.ts.map +1 -1
- package/lib/src/app/samples/sample-tools/sample-filter/completions.d.ts.map +1 -1
- package/lib/src/app/samples/status/status.d.ts +1 -1
- package/lib/src/app/samples-panel/SampleDetailView.d.ts.map +1 -1
- package/lib/src/app/samples-panel/SamplesPanel.d.ts.map +1 -1
- package/lib/src/app/shared/contentTrust.d.ts +14 -0
- package/lib/src/app/shared/contentTrust.d.ts.map +1 -0
- package/lib/src/app/shared/data-grid/DataGrid.d.ts +8 -3
- package/lib/src/app/shared/data-grid/DataGrid.d.ts.map +1 -1
- package/lib/src/app/shared/openInNewTab.d.ts +7 -1
- package/lib/src/app/shared/openInNewTab.d.ts.map +1 -1
- package/lib/src/app/shared/samples-grid/SamplesGrid.d.ts +3 -1
- package/lib/src/app/shared/samples-grid/SamplesGrid.d.ts.map +1 -1
- package/lib/src/app/shared/samples-grid/cells.d.ts.map +1 -1
- package/lib/src/app/shared/samples-grid/columns.d.ts.map +1 -1
- package/lib/src/app/shared/samples-grid/types.d.ts +1 -0
- package/lib/src/app/shared/samples-grid/types.d.ts.map +1 -1
- package/lib/src/app_config/LogLocationGate.d.ts +12 -0
- package/lib/src/app_config/LogLocationGate.d.ts.map +1 -0
- package/lib/src/app_config/appConfig.d.ts +14 -0
- package/lib/src/app_config/appConfig.d.ts.map +1 -1
- package/lib/src/app_config/index.d.ts +2 -1
- package/lib/src/app_config/index.d.ts.map +1 -1
- package/lib/src/app_config/logLocationTrust.d.ts +28 -0
- package/lib/src/app_config/logLocationTrust.d.ts.map +1 -0
- package/lib/src/app_config/resolveBackend.d.ts +9 -0
- package/lib/src/app_config/resolveBackend.d.ts.map +1 -1
- package/lib/src/client/api/static-http/fetch.d.ts +3 -1
- package/lib/src/client/api/static-http/fetch.d.ts.map +1 -1
- package/lib/src/client/api/types.d.ts +9 -3
- package/lib/src/client/api/types.d.ts.map +1 -1
- package/lib/src/client/api/view-server/api-view-server.d.ts.map +1 -1
- package/lib/src/client/api/view-server/request.d.ts +0 -4
- package/lib/src/client/api/view-server/request.d.ts.map +1 -1
- package/lib/src/client/database/schema.d.ts +3 -5
- package/lib/src/client/database/schema.d.ts.map +1 -1
- package/lib/src/client/database/service.d.ts +1 -0
- package/lib/src/client/database/service.d.ts.map +1 -1
- package/lib/src/client/remote/decompression.d.ts +1 -1
- package/lib/src/client/remote/remoteLogFile.d.ts.map +1 -1
- package/lib/src/client/remote/remotePendingSampleData.d.ts.map +1 -1
- package/lib/src/client/remote/remoteZipFile.d.ts +4 -19
- package/lib/src/client/remote/remoteZipFile.d.ts.map +1 -1
- package/lib/src/client/remote/zstd-decoder.d.ts +20 -0
- package/lib/src/client/remote/zstd-decoder.d.ts.map +1 -0
- package/lib/src/client/remote/zstd-worker-code.d.ts +1 -1
- package/lib/src/client/remote/zstd-worker-code.d.ts.map +1 -1
- package/lib/src/client/remote/zstd-worker.d.ts +23 -8
- package/lib/src/client/remote/zstd-worker.d.ts.map +1 -1
- package/lib/src/client/utils/derive.d.ts +3 -0
- package/lib/src/client/utils/derive.d.ts.map +1 -1
- package/lib/src/client/utils/normalize.d.ts +19 -3
- package/lib/src/client/utils/normalize.d.ts.map +1 -1
- package/lib/src/components/CodePanel.d.ts.map +1 -1
- package/lib/src/constants.d.ts +1 -0
- package/lib/src/constants.d.ts.map +1 -1
- package/lib/src/log_data/fetchEngine.d.ts +13 -2
- package/lib/src/log_data/fetchEngine.d.ts.map +1 -1
- package/lib/src/log_data/logsContent.d.ts +3 -2
- package/lib/src/log_data/logsContent.d.ts.map +1 -1
- package/lib/src/log_data/runningSampleQuery.d.ts.map +1 -1
- package/lib/src/log_data/sampleSummaries.d.ts.map +1 -1
- package/lib/src/log_data/samplesListing.d.ts +3 -0
- package/lib/src/log_data/samplesListing.d.ts.map +1 -1
- package/lib/src/state/actions.d.ts.map +1 -1
- package/lib/src/state/hooks.d.ts +1 -0
- package/lib/src/state/hooks.d.ts.map +1 -1
- package/lib/src/test/nodeBlobWorker.d.ts +2 -0
- package/lib/src/test/nodeBlobWorker.d.ts.map +1 -0
- package/lib/src/utils/format.d.ts +0 -6
- package/lib/src/utils/format.d.ts.map +1 -1
- package/lib/src-s8Cexy_j.js +9977 -0
- package/lib/src-s8Cexy_j.js.map +1 -0
- package/lib/styles/index.css +2840 -1492
- package/lib/type-CI-Mc4Kw.js +29 -0
- package/lib/type-CI-Mc4Kw.js.map +1 -0
- package/package.json +27 -28
- package/lib/src/app/log-view/useShowTimeline.d.ts +0 -24
- package/lib/src/app/log-view/useShowTimeline.d.ts.map +0 -1
- package/lib/src/utils/html.d.ts +0 -6
- package/lib/src/utils/html.d.ts.map +0 -1
- package/lib/src/utils/markdown.d.ts +0 -16
- package/lib/src/utils/markdown.d.ts.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src-s8Cexy_j.js","names":["kAnsiEscapePattern","isAnsiOutput","text","test","kAnsiEscapesGlobal","RegExp","source","stripAnsi","replace","isArray","isArray","random","_random","entries","array","date","json","math","object","string","isArray","toString","toString","isArray","isArray","Function","list","isArray","toString","ecma14BinaryProperties","data","Function","CompressionType","setCompressionCodec","table","arqueroTable","escape","fromArrow","lz4js","decodeArrowBase64","base64","binaryString","atob","bytes","Uint8Array","length","i","charCodeAt","decodeArrowBytes","ensureLZ4CodecRegistered","input","castColumns","columns","columnNames","colName","colData","array","Array","isArray","from","codecRegistered","lz4Codec","encode","data","compress","decode","decompress","LZ4_FRAME","castScanValue","value","valueType","undefined","strVal","String","toLowerCase","trim","num","Number","isNaN","hasValue","includes","hasScanRefusal","derivations","d","value_type","scan_error_refusal","derive","make","value","make","compose","hooks","result","errors","loadingResult","key","loading","error","data","push","map","asyncData","fn","logFetchInit","Object","freeze","credentials","referrerPolicy","redirect","fetchRange","url","start","end","response","fetch","headers","Range","arrayBuffer","Uint8Array","HIDDEN_RANGES","ZWNJ","ZWJ","VARIATION_SELECTOR_16","kEmoji","kJoiningScript","isEmoji","codePoint","test","String","fromCodePoint","isJoiningScript","isPurposefulJoiner","prev","next","undefined","LINE_FEED","CARRIAGE_RETURN","hex","toString","kCandidates","RegExp","flatMap","lo","hi","map","join","codePointBefore","text","index","low","charCodeAt","high","codePointAt","isHidden","revealHiddenCharacters","replace","match","offset","length","toUpperCase","padStart","module","exports","JSON5","JsonWorkerPool","workers","blobURL","nextRequestId","pendingRequests","Map","poolSize","ensureWorkers","length","blob","Blob","kWorkerCode","type","URL","createObjectURL","i","push","createWorker","worker","Worker","onmessage","e","handleMessage","onerror","error","failWorker","Error","message","onmessageerror","rejectPendingFor","postMessage","scriptContent","kJson5ScriptBase64","requestId","success","result","reparse","sourceText","nonFinitePaths","sentinels","stack","data","pending","get","delete","parsed","JSON","parse","applyNonFinitePaths","resolve","parseError","reject","err","index","indexOf","terminate","text","submit","parseBytes","owned","byteOffset","byteLength","buffer","ArrayBuffer","Uint8Array","slice","bytes","pickWorker","inflight","values","set","best","bestCount","count","payload","transfer","Promise","postError","String","forEach","w","revokeObjectURL","clear","kReparseThresholdChars","repairNonFiniteJson","source","nanToken","infToken","negInfToken","n","parts","copied","isKeyPosition","after","j","charCodeAt","c","s","startsWith","join","root","paths","isRecord","v","path","target","leaf","value","nan","NaN","inf","Infinity","ninf","findSentinelPaths","maxPaths","node","key","prev","frame","pop","f","reverse","Array","isArray","Object","keys","replaceSentinelsInPlace","restore","isDenseGraph","Math","min","seps","quote","backslashes","parseFallback","nonce","random","toString","repaired","plain","repairedOk","workerPool","kWorkerMinSize","asParsed","asyncJsonParse","jsonParse","asyncJsonParseBytes","TextDecoder","decode","isDevWatch","__DEV_WATCH__","loggingFilter","__LOGGING_FILTER__","getEnabledNamespaces","split","map","ns","trim","filter","Boolean","ENABLED_NAMESPACES","Set","filterNameSpace","namespace","has","createLogger","logger","debug","message","args","console","info","warn","error","debugIf","fn"],"sources":["../../../packages/util/src/ansi.ts","../../../node_modules/.pnpm/@uwdata+flechette@2.5.0/node_modules/@uwdata/flechette/src/util/arrays.js","../../../node_modules/.pnpm/@uwdata+flechette@2.5.0/node_modules/@uwdata/flechette/src/util/numbers.js","../../../node_modules/.pnpm/@uwdata+flechette@2.5.0/node_modules/@uwdata/flechette/src/util/strings.js","../../../node_modules/.pnpm/@uwdata+flechette@2.5.0/node_modules/@uwdata/flechette/src/encode/schema.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/op/functions/bin.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/util/is-date.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/util/is-regexp.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/util/is-object.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/op/functions/equal.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/op/functions/recode.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/op/functions/sequence.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/util/is-array.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/util/is-typed-array.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/util/is-array-type.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/util/is-string.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/util/is-valid.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/op/functions/array.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/util/pad.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/util/format-date.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/util/is-iso-date-string.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/util/parse-iso-date.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/op/functions/date.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/op/functions/json.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/util/random.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/op/functions/math.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/util/is-map.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/util/is-set.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/util/is-map-or-set.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/op/functions/object.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/op/functions/string.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/op/functions/index.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/util/to-array.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/util/is-bigint.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/util/to-string.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/op/op-api.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/util/error.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/util/is-function.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/util/bins.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/util/key-function.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/util/distinct-map.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/util/no-op.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/util/product.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/op/aggregate-functions.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/op/window-functions.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/op/index.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/util/ascending.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/util/entries.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/expression/ast/constants.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/expression/ast/walk.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/expression/ast/util.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/expression/rewrite.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/expression/row-object.js","../../../node_modules/.pnpm/acorn@8.18.0/node_modules/acorn/dist/acorn.mjs","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/expression/constants.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/util/is-number.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/expression/parse-expression.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/util/bisector.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/verbs/window/window-state.js","../../../node_modules/.pnpm/arquero@8.0.3/node_modules/arquero/src/op/register.js","../../../node_modules/.pnpm/lz4js@0.2.0/node_modules/lz4js/util.js","../../../node_modules/.pnpm/lz4js@0.2.0/node_modules/lz4js/xxh32.js","../../../node_modules/.pnpm/lz4js@0.2.0/node_modules/lz4js/lz4.js","../../../packages/util/src/arrow.ts","../../../packages/util/src/brand.ts","../../../packages/util/src/asyncData.ts","../../../packages/util/src/http.ts","../../../packages/util/src/hiddenCharacters.ts","../../../node_modules/.pnpm/json5@2.2.3/node_modules/json5/dist/index.js","../../../packages/util/src/json-worker.ts","../../../packages/util/src/logger.ts"],"sourcesContent":["// Comprehensive ANSI escape sequence regex\n// Matches:\n// 1. CSI sequences: ESC [ <params> <command>\n// Examples: \\x1b[0m (reset), \\x1b[31m (red), \\x1b[2J (clear screen)\n// 2. OSC sequences: ESC ] <params> BEL or ESC ] <params> ESC \\\n// Examples: \\x1b]0;Title\\x07 (set title), \\x1b]8;;url\\x07 (hyperlink)\n// The body excludes ESC (and the line breaks `.` would not cross) so an\n// unterminated `ESC ]` stops at the next ESC instead of rescanning to\n// end of line; with `.*?` that rescan was quadratic on repeated `ESC ]`.\n// 3. Simple escape sequences: ESC <letter>\n// Examples: \\x1bM (reverse index), \\x1b7 (save cursor)\n// Non-global, so `test` carries no `lastIndex` state between calls.\nconst kAnsiEscapePattern =\n // eslint-disable-next-line no-control-regex\n /\\x1b(?:\\[[\\x30-\\x3f]*[\\x20-\\x2f]*[\\x40-\\x7e]|\\][^\\x07\\x1b\\n\\r\\u2028\\u2029]*(?:\\x07|\\x1b\\\\)|[^[\\]>])/;\n\n/**\n * Detects if text contains ANSI escape sequences.\n *\n * This function checks for various ANSI escape codes including:\n * - CSI (Control Sequence Introducer) sequences: ESC [ ... (colors, cursor movement, etc.)\n * - OSC (Operating System Command) sequences: ESC ] ... (terminal titles, hyperlinks)\n * - Simple escape sequences: ESC followed by a single character\n *\n * @param text - The text to check for ANSI escape sequences\n * @returns true if ANSI escape sequences are detected, false otherwise\n */\nexport const isAnsiOutput = (text: string): boolean =>\n kAnsiEscapePattern.test(text);\n\n// `replace` resets a global regex's `lastIndex`, so sharing one is safe.\nconst kAnsiEscapesGlobal = new RegExp(kAnsiEscapePattern.source, \"g\");\n\n/** `text` with its ANSI escape sequences removed. */\nexport const stripAnsi = (text: string): string =>\n text.replace(kAnsiEscapesGlobal, \"\");\n","/**\n * @import { Int64ArrayConstructor, IntArrayConstructor, IntegerArray, TypedArray } from '../types.js'\n */\nexport const uint8Array = Uint8Array;\nexport const uint16Array = Uint16Array;\nexport const uint32Array = Uint32Array;\nexport const uint64Array = BigUint64Array;\nexport const int8Array = Int8Array;\nexport const int16Array = Int16Array;\nexport const int32Array = Int32Array;\nexport const int64Array = BigInt64Array;\nexport const float32Array = Float32Array;\nexport const float64Array = Float64Array;\n\n/**\n * @param {unknown} value\n * @returns {string}\n */\nfunction objectToString(value) {\n return Object.prototype.toString.call(value);\n}\n\n/**\n * Check if an input value is an ArrayBuffer or SharedArrayBuffer,\n * applicable cross-realms. \n * @param {unknown} data\n * @returns {data is ArrayBufferLike}\n */\nexport function isArrayBufferLike(data) {\n return objectToString(data) === '[object ArrayBuffer]'\n || objectToString(data) === '[object SharedArrayBuffer]';\n}\n\n/**\n * Check in an input value is a Uint8Array, applicable cross-realms. \n * @param {unknown} value \n * @returns {value is Uint8Array}\n */\nexport function isUint8Array(value) {\n return objectToString(value) === '[object Uint8Array]';\n}\n\n/**\n * Return the appropriate typed array constructor for the given\n * integer type metadata.\n * @param {number} bitWidth The integer size in bits.\n * @param {boolean} signed Flag indicating if the integer is signed.\n * @returns {IntArrayConstructor}\n */\nexport function intArrayType(bitWidth, signed) {\n const i = Math.log2(bitWidth) - 3;\n return (\n signed\n ? [int8Array, int16Array, int32Array, int64Array]\n : [uint8Array, uint16Array, uint32Array, uint64Array]\n )[i];\n}\n\n/**\n * Check if a value is a typed array, applicable cross-realms.\n * @param {unknown} value The value to check.\n * @returns {value is TypedArray}\n * True if value is a typed array, false otherwise.\n */\nexport function isTypedArray(value) {\n return ArrayBuffer.isView(value)\n && objectToString(value) !== '[object DataView]';\n}\n\n/**\n * Check if a value is either a standard array or typed array.\n * @param {*} value The value to check.\n * @returns {value is (Array | TypedArray)}\n * True if value is an array, false otherwise.\n */\nexport function isArray(value) {\n return Array.isArray(value) || isTypedArray(value);\n}\n\n/**\n * Check if a value is an array type (constructor) for 64-bit integers,\n * one of BigInt64Array or BigUint64Array.\n * @param {*} value The value to check.\n * @returns {value is Int64ArrayConstructor}\n * True if value is a 64-bit array type, false otherwise.\n */\nexport function isInt64ArrayType(value) {\n return value === int64Array || value === uint64Array;\n}\n\n/**\n * Determine the correct index into an offset array for a given\n * full column row index. Assumes offset indices can be manipulated\n * as 32-bit signed integers.\n * @param {IntegerArray} offsets The offsets array.\n * @param {number} index The full column row index.\n */\nexport function bisect(offsets, index) {\n let a = 0;\n let b = offsets.length;\n if (b <= 2147483648) { // 2 ** 31\n // fast version, use unsigned bit shift\n // array length fits within 32-bit signed integer\n do {\n const mid = (a + b) >>> 1;\n if (offsets[mid] <= index) a = mid + 1;\n else b = mid;\n } while (a < b);\n } else {\n // slow version, use division and truncate\n // array length exceeds 32-bit signed integer\n do {\n const mid = Math.trunc((a + b) / 2);\n if (offsets[mid] <= index) a = mid + 1;\n else b = mid;\n } while (a < b);\n }\n return a;\n}\n\n/**\n * Compute a 64-bit aligned buffer size.\n * @param {number} length The starting size.\n * @param {number} bpe Bytes per element.\n * @returns {number} The aligned size.\n */\nfunction align64(length, bpe = 1) {\n return (((length * bpe) + 7) & ~7) / bpe;\n}\n\n/**\n * Return a 64-bit aligned version of the array.\n * @template {TypedArray} T\n * @param {T} array The array.\n * @param {number} length The current array length.\n * @returns {T} The aligned array.\n */\nexport function align(array, length = array.length) {\n const alignedLength = align64(length, array.BYTES_PER_ELEMENT);\n return array.length > alignedLength ? /** @type {T} */ (array.subarray(0, alignedLength))\n : array.length < alignedLength ? resize(array, alignedLength)\n : array;\n}\n\n/**\n * Resize a typed array to exactly the specified length.\n * @template {TypedArray} T\n * @param {T} array The array.\n * @param {number} newLength The new length.\n * @param {number} [offset] The offset at which to copy the old array.\n * @returns {T} The resized array.\n */\nexport function resize(array, newLength, offset = 0) {\n // @ts-ignore\n const newArray = new array.constructor(newLength);\n newArray.set(array, offset);\n return newArray;\n}\n\n/**\n * Grow a typed array to accommdate a minimum index. The array size is\n * doubled until it exceeds the minimum index.\n * @template {TypedArray} T\n * @param {T} array The array.\n * @param {number} index The minimum index.\n * @param {boolean} [shift] Flag to shift copied bytes to back of array.\n * @returns {T} The resized array.\n */\nexport function grow(array, index, shift) {\n while (array.length <= index) {\n array = resize(array, array.length << 1, shift ? array.length : 0);\n }\n return array;\n}\n","/**\n * @import { TimeUnit_, TypedArray } from '../types.js';\n */\nimport { float64Array, int32Array, int64Array, isInt64ArrayType, uint32Array, uint8Array } from './arrays.js';\nimport { TimeUnit } from '../constants.js';\n\n// typed arrays over a shared buffer to aid binary conversion\nconst f64 = new float64Array(2);\nconst buf = f64.buffer;\nconst i64 = new int64Array(buf);\nconst u32 = new uint32Array(buf);\nconst i32 = new int32Array(buf);\nconst u8 = new uint8Array(buf);\n\n/**\n * Return a value unchanged.\n * @template T\n * @param {T} value The value.\n * @returns {T} The value.\n */\nexport function identity(value) {\n return value;\n}\n\n/**\n * Return a value coerced to a BigInt.\n * @param {*} value The value.\n * @returns {bigint} The BigInt value.\n */\nexport function toBigInt(value) {\n return BigInt(value);\n}\n\n/**\n * Return an offset conversion method for the given data type.\n * @param {{ offsets: TypedArray}} type The array type.\n */\nexport function toOffset(type) {\n return isInt64ArrayType(type) ? toBigInt : identity;\n}\n\n/**\n * Return the number of days from a millisecond timestamp.\n * @param {number} value The millisecond timestamp.\n * @returns {number} The number of days.\n */\nexport function toDateDay(value) {\n return (value / 864e5) | 0;\n}\n\n/**\n * Return a timestamp conversion method for the given time unit.\n * @param {TimeUnit_} unit The time unit.\n * @returns {(value: number) => bigint} The conversion method.\n */\nexport function toTimestamp(unit) {\n return unit === TimeUnit.SECOND ? value => toBigInt(value / 1e3)\n : unit === TimeUnit.MILLISECOND ? toBigInt\n : unit === TimeUnit.MICROSECOND ? value => toBigInt(value * 1e3)\n : value => toBigInt(value * 1e6);\n}\n\n/**\n * Write month/day/nanosecond interval to a byte buffer.\n * @param {Array | Float64Array} interval The interval data.\n * @returns {Uint8Array} A byte buffer with the interval data.\n * The returned buffer is reused across calls, and so should be\n * copied to a target buffer immediately.\n */\nexport function toMonthDayNanoBytes([m, d, n]) {\n i32[0] = m;\n i32[1] = d;\n i64[1] = toBigInt(n);\n return u8;\n}\n\n/**\n * Coerce a bigint value to a number. Throws an error if the bigint value\n * lies outside the range of what a number can precisely represent.\n * @param {bigint} value The value to check and possibly convert.\n * @returns {number} The converted number value.\n */\nexport function toNumber(value) {\n if (value > Number.MAX_SAFE_INTEGER || value < Number.MIN_SAFE_INTEGER) {\n throw Error(`BigInt exceeds integer number representation: ${value}`);\n }\n return Number(value);\n}\n\n/**\n * Divide one BigInt value by another, and return the result as a number.\n * The division may involve unsafe integers and a loss of precision.\n * @param {bigint} num The numerator.\n * @param {bigint} div The divisor.\n * @returns {number} The result of the division as a floating point number.\n */\nexport function divide(num, div) {\n return Number(num / div) + Number(num % div) / Number(div);\n}\n\n/**\n * Return a 32-bit decimal conversion method for the given decimal scale.\n * @param {number} scale The scale mapping fractional digits to integers.\n * @returns {(value: number|bigint) => number} A conversion method that maps\n * floating point numbers to 32-bit decimals.\n */\nexport function toDecimal32(scale) {\n return (value) => typeof value === 'bigint'\n ? Number(value)\n : Math.trunc(value * scale);\n}\n\n/**\n * Convert a floating point number or bigint to decimal bytes.\n * @param {number|bigint} value The number to encode. If a bigint, we assume\n * it already represents the decimal in integer form with the correct scale.\n * Otherwise, we assume a float that requires scaled integer conversion.\n * @param {BigUint64Array} buf The uint64 array to write to.\n * @param {number} offset The starting index offset into the array.\n * @param {number} stride The stride of an encoded decimal, in 64-bit steps.\n * @param {number} scale The scale mapping fractional digits to integers.\n */\nexport function toDecimal(value, buf, offset, stride, scale) {\n const v = typeof value === 'bigint'\n ? value\n : toBigInt(Math.trunc(value * scale));\n // assignment into uint64array performs needed truncation for us\n buf[offset] = v;\n if (stride > 1) {\n buf[offset + 1] = (v >> 64n);\n if (stride > 2) {\n buf[offset + 2] = (v >> 128n);\n buf[offset + 3] = (v >> 192n);\n }\n }\n}\n\n// helper method to extract uint64 values from bigints\nconst asUint64 = v => BigInt.asUintN(64, v);\n\n/**\n * Convert a 64-bit decimal value to a bigint.\n * @param {BigUint64Array} buf The uint64 array containing the decimal bytes.\n * @param {number} offset The starting index offset into the array.\n * @returns {bigint} The converted decimal as a bigint, such that all\n * fractional digits are scaled up to integers (for example, 1.12 -> 112).\n */\nexport function fromDecimal64(buf, offset) {\n return BigInt.asIntN(64, buf[offset]);\n}\n\n/**\n * Convert a 128-bit decimal value to a bigint.\n * @param {BigUint64Array} buf The uint64 array containing the decimal bytes.\n * @param {number} offset The starting index offset into the array.\n * @returns {bigint} The converted decimal as a bigint, such that all\n * fractional digits are scaled up to integers (for example, 1.12 -> 112).\n */\nexport function fromDecimal128(buf, offset) {\n const i = offset << 1;\n let x;\n if (BigInt.asIntN(64, buf[i + 1]) < 0) {\n x = asUint64(~buf[i]) | (asUint64(~buf[i + 1]) << 64n);\n x = -(x + 1n);\n } else {\n x = buf[i] | (buf[i + 1] << 64n);\n }\n return x;\n}\n\n/**\n * Convert a 256-bit decimal value to a bigint.\n * @param {BigUint64Array} buf The uint64 array containing the decimal bytes.\n * @param {number} offset The starting index offset into the array.\n * @returns {bigint} The converted decimal as a bigint, such that all\n * fractional digits are scaled up to integers (for example, 1.12 -> 112).\n */\nexport function fromDecimal256(buf, offset) {\n const i = offset << 2;\n let x;\n if (BigInt.asIntN(64, buf[i + 3]) < 0) {\n x = asUint64(~buf[i])\n | (asUint64(~buf[i + 1]) << 64n)\n | (asUint64(~buf[i + 2]) << 128n)\n | (asUint64(~buf[i + 3]) << 192n);\n x = -(x + 1n);\n } else {\n x = buf[i]\n | (buf[i + 1] << 64n)\n | (buf[i + 2] << 128n)\n | (buf[i + 3] << 192n);\n }\n return x;\n}\n\n/**\n * Convert a 16-bit float from integer bytes to a number.\n * Adapted from https://github.com/apache/arrow/blob/main/js/src/util/math.ts\n * @param {number} value The float as a 16-bit integer.\n * @returns {number} The converted 64-bit floating point number.\n */\nexport function fromFloat16(value) {\n const expo = (value & 0x7C00) >> 10;\n const sigf = (value & 0x03FF) / 1024;\n const sign = (-1) ** ((value & 0x8000) >> 15);\n switch (expo) {\n case 0x1F: return sign * (sigf ? Number.NaN : 1 / 0);\n case 0x00: return sign * (sigf ? 6.103515625e-5 * sigf : 0);\n }\n return sign * (2 ** (expo - 15)) * (1 + sigf);\n}\n\n/**\n * Convert a number to a 16-bit float as integer bytes..\n * Inspired by numpy's `npy_double_to_half`:\n * https://github.com/numpy/numpy/blob/5a5987291dc95376bb098be8d8e5391e89e77a2c/numpy/core/src/npymath/halffloat.c#L43\n * Adapted from https://github.com/apache/arrow/blob/main/js/src/util/math.ts\n * @param {number} value The 64-bit floating point number to convert.\n * @returns {number} The converted 16-bit integer.\n */\nexport function toFloat16(value) {\n if (value !== value) return 0x7E00; // NaN\n f64[0] = value;\n\n // Magic numbers:\n // 0x80000000 = 10000000 00000000 00000000 00000000 -- masks the 32nd bit\n // 0x7ff00000 = 01111111 11110000 00000000 00000000 -- masks the 21st-31st bits\n // 0x000fffff = 00000000 00001111 11111111 11111111 -- masks the 1st-20th bit\n const sign = (u32[1] & 0x80000000) >> 16 & 0xFFFF;\n let expo = (u32[1] & 0x7FF00000), sigf = 0x0000;\n\n if (expo >= 0x40F00000) {\n //\n // If exponent overflowed, the float16 is either NaN or Infinity.\n // Rules to propagate the sign bit: mantissa > 0 ? NaN : +/-Infinity\n //\n // Magic numbers:\n // 0x40F00000 = 01000000 11110000 00000000 00000000 -- 6-bit exponent overflow\n // 0x7C000000 = 01111100 00000000 00000000 00000000 -- masks the 27th-31st bits\n //\n // returns:\n // qNaN, aka 32256 decimal, 0x7E00 hex, or 01111110 00000000 binary\n // sNaN, aka 32000 decimal, 0x7D00 hex, or 01111101 00000000 binary\n // +inf, aka 31744 decimal, 0x7C00 hex, or 01111100 00000000 binary\n // -inf, aka 64512 decimal, 0xFC00 hex, or 11111100 00000000 binary\n //\n // If mantissa is greater than 23 bits, set to +Infinity like numpy\n if (u32[0] > 0) {\n expo = 0x7C00;\n } else {\n expo = (expo & 0x7C000000) >> 16;\n sigf = (u32[1] & 0x000FFFFF) >> 10;\n }\n } else if (expo <= 0x3F000000) {\n //\n // If exponent underflowed, the float is either signed zero or subnormal.\n //\n // Magic numbers:\n // 0x3F000000 = 00111111 00000000 00000000 00000000 -- 6-bit exponent underflow\n //\n sigf = 0x100000 + (u32[1] & 0x000FFFFF);\n sigf = 0x100000 + (sigf << ((expo >> 20) - 998)) >> 21;\n expo = 0;\n } else {\n //\n // No overflow or underflow, rebase the exponent and round the mantissa\n // Magic numbers:\n // 0x200 = 00000010 00000000 -- masks off the 10th bit\n //\n // Ensure the first mantissa bit (the 10th one) is 1 and round\n expo = (expo - 0x3F000000) >> 10;\n sigf = ((u32[1] & 0x000FFFFF) + 0x200) >> 10;\n }\n return sign | expo | sigf & 0xFFFF;\n}\n","import { isArray } from './arrays.js';\nimport { isDate } from './objects.js';\n\nconst textDecoder = new TextDecoder('utf-8');\nconst textEncoder = new TextEncoder();\n\n/**\n * Return a UTF-8 string decoded from a byte buffer.\n * @param {Uint8Array} buf The byte buffer.\n * @returns {string} The decoded string.\n */\nexport function decodeUtf8(buf) {\n return textDecoder.decode(buf);\n}\n\n/**\n * Return a byte buffer encoded from a UTF-8 string.\n * @param {string } str The string to encode.\n * @returns {Uint8Array} The encoded byte buffer.\n */\nexport function encodeUtf8(str) {\n return textEncoder.encode(str);\n}\n\n/**\n * Return a string-coercible key value that uniquely identifies a value.\n * @param {*} value The input value.\n * @returns {string} The key string.\n */\nexport function keyString(value) {\n const val = typeof value !== 'object' || !value ? (value ?? null)\n : isDate(value) ? +value\n // @ts-ignore\n : isArray(value) ? `[${value.map(keyString)}]`\n : objectKey(value);\n return `${val}`;\n}\n\nfunction objectKey(value) {\n let s = '';\n let i = -1;\n for (const k in value) {\n if (++i > 0) s += ',';\n s += `\"${k}\":${keyString(value[k])}`;\n }\n return `{${s}}`;\n}\n","/**\n * @import { DictionaryType, Field, Schema } from '../types.js';\n * @import { Builder } from './builder.js';\n */\nimport { Type } from '../constants.js';\nimport { encodeDataType } from './data-type.js';\nimport { encodeMetadata } from './metadata.js';\n\nconst isLittleEndian = new Uint16Array(new Uint8Array([1, 0]).buffer)[0] === 1;\n\n/**\n * @param {Builder} builder\n * @param {Schema} schema\n * @returns {number}\n */\nexport function encodeSchema(builder, schema) {\n const { fields, metadata } = schema;\n const fieldOffsets = fields.map(f => encodeField(builder, f));\n const fieldsVectorOffset = builder.addOffsetVector(fieldOffsets);\n const metadataOffset = encodeMetadata(builder, metadata);\n return builder.addObject(4, b => {\n b.addInt16(0, +(!isLittleEndian), 0);\n b.addOffset(1, fieldsVectorOffset, 0);\n b.addOffset(2, metadataOffset, 0);\n // NOT SUPPORTED: 3, features\n });\n}\n\n/**\n * @param {Builder} builder\n * @param {Field} field\n * @returns {number}\n */\nfunction encodeField(builder, field) {\n const { name, nullable, type, metadata } = field;\n let { typeId } = type;\n\n // encode field data type\n let typeOffset = 0;\n let dictionaryOffset = 0;\n if (typeId !== Type.Dictionary) {\n typeOffset = encodeDataType(builder, type);\n } else {\n const dict = /** @type {DictionaryType} */ (type).dictionary;\n typeId = dict.typeId;\n dictionaryOffset = encodeDataType(builder, type);\n typeOffset = encodeDataType(builder, dict);\n }\n\n // encode children, metadata, name, and field object\n // @ts-ignore\n const childOffsets = (type.children || []).map(f => encodeField(builder, f));\n const childrenVectorOffset = builder.addOffsetVector(childOffsets);\n const metadataOffset = encodeMetadata(builder, metadata);\n const nameOffset = builder.addString(name);\n return builder.addObject(7, b => {\n b.addOffset(0, nameOffset, 0);\n b.addInt8(1, +nullable, +false);\n b.addInt8(2, typeId, Type.NONE);\n b.addOffset(3, typeOffset, 0);\n b.addOffset(4, dictionaryOffset, 0);\n b.addOffset(5, childrenVectorOffset, 0);\n b.addOffset(6, metadataOffset, 0);\n });\n}\n","/**\n * Truncate a value to a bin boundary.\n * Useful for creating equal-width histograms.\n * Values outside the [min, max] range will be mapped to\n * -Infinity (< min) or +Infinity (> max).\n * @param {number} value The value to bin.\n * @param {number} min The minimum bin boundary.\n * @param {number} max The maximum bin boundary.\n * @param {number} step The step size between bin boundaries.\n * @param {number} [offset=0] Offset in steps by which to adjust\n * the bin value. An offset of 1 will return the next boundary.\n */\nexport function bin(value, min, max, step, offset) {\n return value == null ? null\n : value < min ? -Infinity\n : value > max ? +Infinity\n : (\n value = Math.max(min, Math.min(value, max)),\n min + step * Math.floor(1e-14 + (value - min) / step + (offset || 0))\n );\n}\n","/**\n * @param {*} value\n * @returns {value is Date}\n */\nexport function isDate(value) {\n return value instanceof Date;\n}\n","/**\n * @param {*} value\n * @returns {value is RegExp}\n */\nexport function isRegExp(value) {\n return value instanceof RegExp;\n}\n","export function isObject(value) {\n return value === Object(value);\n}\n","import { isDate } from '../../util/is-date.js';\nimport { isRegExp } from '../../util/is-regexp.js';\nimport { isObject } from '../../util/is-object.js';\n\n/**\n * Compare two values for equality, using join semantics in which null\n * !== null. If the inputs are object-valued, a deep equality check\n * of array entries or object key-value pairs is performed.\n * @param {*} a The first input.\n * @param {*} b The second input.\n * @return {boolean} True if equal, false if not.\n */\nexport function equal(a, b) {\n return (a == null || b == null || a !== a || b !== b) ? false\n : a === b ? true\n : (isDate(a) || isDate(b)) ? +a === +b\n : (isRegExp(a) && isRegExp(b)) ? a + '' === b + ''\n : (isObject(a) && isObject(b)) ? deepEqual(a, b)\n : false;\n}\n\nfunction deepEqual(a, b) {\n if (Object.getPrototypeOf(a) !== Object.getPrototypeOf(b)) {\n return false;\n }\n\n if (a.length || b.length) {\n return arrayEqual(a, b);\n }\n\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) {\n return false;\n }\n keysA.sort();\n keysB.sort();\n\n if (!arrayEqual(keysA, keysB, (a, b) => a === b)) {\n return false;\n }\n\n const n = keysA.length;\n for (let i = 0; i < n; ++i) {\n const k = keysA[i];\n if (!equal(a[k], b[k])) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction arrayEqual(a, b, test = equal) {\n const n = a.length;\n if (n !== b.length) return false;\n\n for (let i = 0; i < n; ++i) {\n if (!test(a[i], b[i])) {\n return false;\n }\n }\n\n return true;\n}\n","/**\n * Recodes an input value to an alternative value, based on a provided\n * value map. If a fallback value is specified, it will be returned when\n * a matching value is not found in the map; otherwise, the input value\n * is returned unchanged.\n * @template T\n * @param {T} value The value to recode. The value must be safely\n * coercible to a string for lookup against the value map.\n * @param {Map|Record<string,any>} map An object or Map with input values\n * for keys and output recoded values as values. If a non-Map object, only\n * the object's own properties will be considered.\n * @param {T} [fallback] A default fallback value to use if the input\n * value is not found in the value map.\n * @return {T} The recoded value.\n */\nexport function recode(value, map, fallback) {\n if (map instanceof Map) {\n if (map.has(value)) return map.get(value);\n } else {\n const key = `${value}`;\n if (Object.hasOwn(map, key)) return map[key];\n }\n return fallback !== undefined ? fallback : value;\n}\n","/**\n * Returns an array containing an arithmetic sequence from the start value\n * to the stop value, in step increments. If step is positive, the last\n * element is the largest start + i * step less than stop; if step is\n * negative, the last element is the smallest start + i * step greater\n * than stop. If the returned array would contain an infinite number of\n * values, an empty range is returned.\n * @param {number} [start=0] The starting value of the sequence.\n * @param {number} [stop] The stopping value of the sequence.\n * The stop value is exclusive; it is not included in the result.\n * @param {number} [step=1] The step increment between sequence values.\n * @return {number[]} The generated sequence.\n */\nexport function sequence(start, stop, step) {\n let n = arguments.length;\n start = +start;\n stop = +stop;\n step = n < 2\n ? (stop = start, start = 0, 1)\n : n < 3 ? 1 : +step;\n\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0;\n const seq = new Array(n);\n\n for (let i = 0; i < n; ++i) {\n seq[i] = start + i * step;\n }\n\n return seq;\n}\n","/**\n * @param {*} value\n * @returns {value is Array}\n */\nexport function isArray(value) {\n return Array.isArray(value);\n}\n","const TypedArray = Object.getPrototypeOf(Int8Array);\n\n/**\n * @param {*} value\n * @return {value is import(\"../table/types.js\").TypedArray}\n */\nexport function isTypedArray(value) {\n return value instanceof TypedArray;\n}\n","import { isArray } from './is-array.js';\nimport { isTypedArray } from './is-typed-array.js';\n\n/**\n * @param {*} value\n * @return {value is (any[] | import('../table/types.js').TypedArray)}\n */\nexport function isArrayType(value) {\n return isArray(value) || isTypedArray(value);\n}\n","/**\n * @param {*} value\n * @return {value is String}\n */\nexport function isString(value) {\n return typeof value === 'string';\n}\n","export function isValid(value) {\n return value != null && value === value;\n}\n","import { NULL } from '../../util/null.js';\nimport { isArrayType } from '../../util/is-array-type.js';\nimport { isString } from '../../util/is-string.js';\nimport { isValid } from '../../util/is-valid.js';\n\nconst isSeq = (seq) => isArrayType(seq) || isString(seq);\n\n/**\n * Returns a new compacted array with invalid values\n * (`null`, `undefined`, `NaN`) removed.\n * @template T\n * @param {T[]} array The input array.\n * @return {T[]} A compacted array.\n */\nexport function compact(array) {\n return isArrayType(array)\n ? array.filter(v => isValid(v))\n : array;\n}\n\n/**\n * Merges two or more arrays in sequence, returning a new array.\n * @template T\n * @param {...(T|T[])} values The arrays to merge.\n * @return {T[]} The merged array.\n */\nexport function concat(...values) {\n return [].concat(...values);\n}\n\n/**\n * Determines whether an *array* includes a certain *value* among its\n * entries, returning `true` or `false` as appropriate.\n * @template T\n * @param {T[]} sequence The input array value.\n * @param {T} value The value to search for.\n * @param {number} [index=0] The integer index to start searching\n * from (default `0`).\n * @return {boolean} True if the value is included, false otherwise.\n */\nexport function includes(sequence, value, index) {\n return isSeq(sequence)\n ? sequence.includes(value, index)\n : false;\n}\n\n/**\n * Returns the first index at which a given *value* can be found in the\n * *sequence* (array or string), or -1 if it is not present.\n * @template T\n * @param {T[]|string} sequence The input array or string value.\n * @param {T} value The value to search for.\n * @return {number} The index of the value, or -1 if not present.\n */\nexport function indexof(sequence, value) {\n return isSeq(sequence)\n // @ts-ignore\n ? sequence.indexOf(value)\n : -1;\n}\n\n/**\n * Creates and returns a new string by concatenating all of the elements\n * in an *array* (or an array-like object), separated by commas or a\n * specified *delimiter* string. If the *array* has only one item, then\n * that item will be returned without using the delimiter.\n * @template T\n * @param {T[]} array The input array value.\n * @param {string} delim The delimiter string (default `','`).\n * @return {string} The joined string.\n */\nexport function join(array, delim) {\n return isArrayType(array) ? array.join(delim) : NULL;\n}\n\n/**\n * Returns the last index at which a given *value* can be found in the\n * *sequence* (array or string), or -1 if it is not present.\n * @template T\n * @param {T[]|string} sequence The input array or string value.\n * @param {T} value The value to search for.\n * @return {number} The last index of the value, or -1 if not present.\n */\nexport function lastindexof(sequence, value) {\n return isSeq(sequence)\n // @ts-ignore\n ? sequence.lastIndexOf(value)\n : -1;\n}\n\n/**\n * Returns the length of the input *sequence* (array or string).\n * @param {Array|string} sequence The input array or string value.\n * @return {number} The length of the sequence.\n */\nexport function length(sequence) {\n return isSeq(sequence) ? sequence.length : 0;\n}\n\n/**\n * Returns a new array in which the given *property* has been extracted\n * for each element in the input *array*.\n * @param {Array} array The input array value.\n * @param {string} property The property name string to extract. Nested\n * properties are not supported: the input `\"a.b\"` will indicates a\n * property with that exact name, *not* a nested property `\"b\"` of\n * the object `\"a\"`.\n * @return {Array} An array of plucked properties.\n */\nexport function pluck(array, property) {\n return isArrayType(array)\n ? array.map(v => isValid(v) ? v[property] : NULL)\n : NULL;\n}\n\n/**\n * Returns a new array or string with the element order reversed: the first\n * *sequence* element becomes the last, and the last *sequence* element\n * becomes the first. The input *sequence* is unchanged.\n * @template T\n * @param {T[]|string} sequence The input array or string value.\n * @return {T[]|string} The reversed sequence.\n */\nexport function reverse(sequence) {\n return isArrayType(sequence) ? sequence.slice().reverse()\n : isString(sequence) ? sequence.split('').reverse().join('')\n : NULL;\n}\n\n/**\n * Returns a copy of a portion of the input *sequence* (array or string)\n * selected from *start* to *end* (*end* not included) where *start* and\n * *end* represent the index of items in the sequence.\n * @template T\n * @param {T[]|string} sequence The input array or string value.\n * @param {number} [start=0] The starting integer index to copy from\n * (inclusive, default `0`).\n * @param {number} [end] The ending integer index to copy from (exclusive,\n * default `sequence.length`).\n * @return {T[]|string} The sliced sequence.\n */\nexport function slice(sequence, start, end) {\n return isSeq(sequence)\n ? sequence.slice(start, end)\n : NULL;\n}\n","export function pad(value, width, char = '0') {\n const s = value + '';\n const len = s.length;\n return len < width ? Array(width - len + 1).join(char) + s : s;\n}\n","import { pad } from './pad.js';\n\nconst pad2 = v => (v < 10 ? '0' : '') + v;\n\nconst formatYear = year => year < 0 ? '-' + pad(-year, 6)\n : year > 9999 ? '+' + pad(year, 6)\n : pad(year, 4);\n\nexport function formatISO(year, month, date, hours, min, sec, ms, utc, short) {\n const suffix = utc ? 'Z' : '';\n return formatYear(year) + '-' + pad2(month + 1) + '-' + pad2(date) + (\n !short || ms ? 'T' + pad2(hours) + ':' + pad2(min) + ':' + pad2(sec) + '.' + pad(ms, 3) + suffix\n : sec ? 'T' + pad2(hours) + ':' + pad2(min) + ':' + pad2(sec) + suffix\n : min || hours || !utc ? 'T' + pad2(hours) + ':' + pad2(min) + suffix\n : ''\n );\n}\n\nexport function formatDate(d, short) {\n return isNaN(d)\n ? 'Invalid Date'\n : formatISO(\n d.getFullYear(),\n d.getMonth(),\n d.getDate(),\n d.getHours(),\n d.getMinutes(),\n d.getSeconds(),\n d.getMilliseconds(),\n false, short\n );\n}\n\nexport function formatUTCDate(d, short) {\n return isNaN(d)\n ? 'Invalid Date'\n : formatISO(\n d.getUTCFullYear(),\n d.getUTCMonth(),\n d.getUTCDate(),\n d.getUTCHours(),\n d.getUTCMinutes(),\n d.getUTCSeconds(),\n d.getUTCMilliseconds(),\n true, short\n );\n}\n","const iso_re = /^([-+]\\d{2})?\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{3})?)?(Z|[-+]\\d{2}:\\d{2})?)?$/;\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nexport function isISODateString(value) {\n return value.match(iso_re) && !isNaN(Date.parse(value));\n}\n","import { isISODateString } from './is-iso-date-string.js';\n\nexport function parseISODate(value, parse = Date.parse) {\n return isISODateString(value) ? parse(value) : value;\n}\n","import { formatDate, formatUTCDate } from '../../util/format-date.js';\nimport { parseISODate } from '../../util/parse-iso-date.js';\n\nconst msMinute = 6e4;\nconst msDay = 864e5;\nconst msWeek = 6048e5;\n\nconst t0 = new Date();\nconst t1 = new Date();\nconst t = d => (\n t0.setTime(typeof d === 'string' ? parseISODate(d) : d),\n t0\n);\n\n/**\n * Returns an [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) formatted\n * string for the given *date* in local timezone. The resulting string is\n * compatible with *parse_date* and JavaScript's built-in *Date.parse*.\n * @param {Date | number} date The input Date or timestamp value.\n * @param {boolean} [shorten=false] A boolean flag (default `false`)\n * indicating if the formatted string should be shortened if possible.\n * For example, the local date `2001-01-01` will shorten from\n * `\"2001-01-01T00:00:00.000\"` to `\"2001-01-01T00:00\"`.\n * @return {string} The formatted date string in local time.\n */\nexport function format_date(date, shorten) {\n return formatDate(t(date), !shorten);\n}\n\n/**\n * Returns an [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) formatted\n * string for the given *date* in Coordinated Universal Time (UTC). The\n * resulting string is compatible with *parse_date* and JavaScript's\n * built-in *Date.parse*.\n * @param {Date | number} date The input Date or timestamp value.\n * @param {boolean} [shorten=false] A boolean flag (default `false`)\n * indicating if the formatted string should be shortened if possible.\n * For example, the the UTC date `2001-01-01` will shorten from\n * `\"2001-01-01T00:00:00.000Z\"` to `\"2001-01-01\"`\n * @return {string} The formatted date string in UTC time.\n */\nexport function format_utcdate(date, shorten){\n return formatUTCDate(t(date), !shorten);\n}\n\n/**\n * Returns the number of milliseconds elapsed since midnight, January 1,\n * 1970 Universal Coordinated Time (UTC).\n * @return {number} The timestamp for now.\n */\nexport function now() {\n return Date.now();\n}\n\n/**\n * Returns the timestamp for a *date* as the number of milliseconds elapsed\n * since January 1, 1970 00:00:00 UTC.\n * @param {Date | number} date The input Date value.\n * @return {number} The timestamp value.\n */\nexport function timestamp(date) {\n return +t(date);\n}\n\n/**\n * Creates and returns a new Date value. If no arguments are provided,\n * the current date and time are used.\n * @param {number} [year] The year.\n * @param {number} [month=0] The (zero-based) month.\n * @param {number} [date=1] The date within the month.\n * @param {number} [hours=0] The hour within the day.\n * @param {number} [minutes=0] The minute within the hour.\n * @param {number} [seconds=0] The second within the minute.\n * @param {number} [milliseconds=0] The milliseconds within the second.\n * @return {Date} The Date value.\n */\nexport function datetime(year, month, date, hours, minutes, seconds, milliseconds) {\n return !arguments.length\n ? new Date(Date.now())\n : new Date(\n year,\n month || 0,\n date == null ? 1 : date,\n hours || 0,\n minutes || 0,\n seconds || 0,\n milliseconds || 0\n );\n}\n\n/**\n * Returns the year of the specified *date* according to local time.\n * @param {Date | number} date The input Date or timestamp value.\n * @return {number} The year value in local time.\n */\nexport function year(date) {\n return t(date).getFullYear();\n}\n\n/**\n * Returns the zero-based quarter of the specified *date* according to\n * local time.\n * @param {Date | number} date The input Date or timestamp value.\n * @return {number} The quarter value in local time.\n */\nexport function quarter(date) {\n return Math.floor(t(date).getMonth() / 3);\n}\n\n/**\n * Returns the zero-based month of the specified *date* according to local\n * time. A value of `0` indicates January, `1` indicates February, and so on.\n * @param {Date | number} date The input Date or timestamp value.\n * @return {number} The month value in local time.\n */\nexport function month(date) {\n return t(date).getMonth();\n}\n\n/**\n * Returns the week number of the year (0-53) for the specified *date*\n * according to local time. By default, Sunday is used as the first day\n * of the week. All days in a new year preceding the first Sunday are\n * considered to be in week 0.\n * @param {Date | number} date The input Date or timestamp value.\n * @param {number} firstday The number of first day of the week (default\n * `0` for Sunday, `1` for Monday and so on).\n * @return {number} The week of the year in local time.\n */\nexport function week(date, firstday) {\n const i = firstday || 0;\n t1.setTime(+date);\n t1.setDate(t1.getDate() - (t1.getDay() + 7 - i) % 7);\n t1.setHours(0, 0, 0, 0);\n t0.setTime(+date);\n t0.setMonth(0);\n t0.setDate(1);\n t0.setDate(1 - (t0.getDay() + 7 - i) % 7);\n t0.setHours(0, 0, 0, 0);\n const tz = (t1.getTimezoneOffset() - t0.getTimezoneOffset()) * msMinute;\n return Math.floor((1 + (+t1 - +t0) - tz) / msWeek);\n}\n\n/**\n * Returns the date (day of month) of the specified *date* according\n * to local time.\n * @param {Date | number} date The input Date or timestamp value.\n * @return {number} The date (day of month) value.\n */\nexport function date(date) {\n return t(date).getDate();\n}\n\n/**\n * Returns the day of the year (1-366) of the specified *date* according\n * to local time.\n * @param {Date | number} date A date or timestamp.\n * @return {number} The day of the year in local time.\n */\nexport function dayofyear(date) {\n t1.setTime(+date);\n t1.setHours(0, 0, 0, 0);\n t0.setTime(+t1);\n t0.setMonth(0);\n t0.setDate(1);\n const tz = (t1.getTimezoneOffset() - t0.getTimezoneOffset()) * msMinute;\n return Math.floor(1 + ((+t1 - +t0) - tz) / msDay);\n}\n\n/**\n * Returns the Sunday-based day of the week (0-6) of the specified *date*\n * according to local time. A value of `0` indicates Sunday, `1` indicates\n * Monday, and so on.\n * @param {Date | number} date The input Date or timestamp value.\n * @return {number} The day of the week value in local time.\n */\nexport function dayofweek(date) {\n return t(date).getDay();\n}\n\n/**\n * Returns the hour of the day for the specified *date* according\n * to local time.\n * @param {Date | number} date The input Date or timestamp value.\n * @return {number} The hour value in local time.\n */\nexport function hours(date) {\n return t(date).getHours();\n}\n\n/**\n * Returns the minute of the hour for the specified *date* according\n * to local time.\n * @param {Date | number} date The input Date or timestamp value.\n * @return {number} The minutes value in local time.\n */\nexport function minutes(date) {\n return t(date).getMinutes();\n}\n\n/**\n * Returns the seconds of the minute for the specified *date* according\n * to local time.\n * @param {Date | number} date The input Date or timestamp value.\n * @return {number} The seconds value in local time.\n */\nexport function seconds(date) {\n return t(date).getSeconds();\n}\n\n/**\n * Returns the milliseconds of the second for the specified *date* according\n * to local time.\n * @param {Date | number} date The input Date or timestamp value.\n * @return {number} The milliseconds value in local time.\n */\nexport function milliseconds(date) {\n return t(date).getMilliseconds();\n}\n\n/**\n * Creates and returns a new Date value using Coordinated Universal Time\n * (UTC). If no arguments are provided, the current date and time are used.\n * @param {number} [year] The year.\n * @param {number} [month=0] The (zero-based) month.\n * @param {number} [date=1] The date within the month.\n * @param {number} [hours=0] The hour within the day.\n * @param {number} [minutes=0] The minute within the hour.\n * @param {number} [seconds=0] The second within the minute.\n * @param {number} [milliseconds=0] The milliseconds within the second.\n * @return {Date} The Date value.\n */\nexport function utcdatetime(year, month, date, hours, minutes, seconds, milliseconds) {\n return !arguments.length\n ? new Date(Date.now())\n : new Date(Date.UTC(\n year,\n month || 0,\n date == null ? 1 : date,\n hours || 0,\n minutes || 0,\n seconds || 0,\n milliseconds || 0\n ));\n}\n\n/**\n * Returns the year of the specified *date* according to Coordinated\n * Universal Time (UTC).\n * @param {Date | number} date The input Date or timestamp value.\n * @return {number} The year value in UTC time.\n */\nexport function utcyear(date) {\n return t(date).getUTCFullYear();\n}\n\n/**\n * Returns the zero-based quarter of the specified *date* according to\n * Coordinated Universal Time (UTC)\n * @param {Date | number} date The input Date or timestamp value.\n * @return {number} The quarter value in UTC time.\n */\nexport function utcquarter(date) {\n return Math.floor(t(date).getUTCMonth() / 3);\n}\n\n/**\n * Returns the zero-based month of the specified *date* according to\n * Coordinated Universal Time (UTC). A value of `0` indicates January,\n * `1` indicates February, and so on.\n * @param {Date | number} date The input Date or timestamp value.\n * @return {number} The month value in UTC time.\n */\nexport function utcmonth(date) {\n return t(date).getUTCMonth();\n}\n\n/**\n * Returns the week number of the year (0-53) for the specified *date*\n * according to Coordinated Universal Time (UTC). By default, Sunday is\n * used as the first day of the week. All days in a new year preceding the\n * first Sunday are considered to be in week 0.\n * @param {Date | number} date The input Date or timestamp value.\n * @param {number} firstday The number of first day of the week (default\n * `0` for Sunday, `1` for Monday and so on).\n * @return {number} The week of the year in UTC time.\n */\nexport function utcweek(date, firstday) {\n const i = firstday || 0;\n t1.setTime(+date);\n t1.setUTCDate(t1.getUTCDate() - (t1.getUTCDay() + 7 - i) % 7);\n t1.setUTCHours(0, 0, 0, 0);\n t0.setTime(+date);\n t0.setUTCMonth(0);\n t0.setUTCDate(1);\n t0.setUTCDate(1 - (t0.getUTCDay() + 7 - i) % 7);\n t0.setUTCHours(0, 0, 0, 0);\n return Math.floor((1 + (+t1 - +t0)) / msWeek);\n}\n\n/**\n * Returns the date (day of month) of the specified *date* according to\n * Coordinated Universal Time (UTC).\n * @param {Date | number} date The input Date or timestamp value.\n * @return {number} The date (day of month) value in UTC time.\n */\nexport function utcdate(date) {\n return t(date).getUTCDate();\n}\n\n/**\n * Returns the day of the year (1-366) of the specified *date* according\n * to Coordinated Universal Time (UTC).\n * @param {Date | number} date The input Date or timestamp value.\n * @return {number} The day of the year in UTC time.\n */\nexport function utcdayofyear(date) {\n t1.setTime(+date);\n t1.setUTCHours(0, 0, 0, 0);\n const t0 = Date.UTC(t1.getUTCFullYear(), 0, 1);\n return Math.floor(1 + (+t1 - t0) / msDay);\n}\n\n/**\n * Returns the Sunday-based day of the week (0-6) of the specified *date*\n * according to Coordinated Universal Time (UTC). A value of `0` indicates\n * Sunday, `1` indicates Monday, and so on.\n * @param {Date | number} date The input Date or timestamp value.\n * @return {number} The day of the week in UTC time.\n */\nexport function utcdayofweek(date) {\n return t(date).getUTCDay();\n}\n\n/**\n * Returns the hour of the day for the specified *date* according to\n * Coordinated Universal Time (UTC).\n * @param {Date | number} date The input Date or timestamp value.\n * @return {number} The hours value in UTC time.\n */\nexport function utchours(date) {\n return t(date).getUTCHours();\n}\n\n/**\n * Returns the minute of the hour for the specified *date* according to\n * Coordinated Universal Time (UTC).\n * @param {Date | number} date The input Date or timestamp value.\n * @return {number} The minutes value in UTC time.\n */\nexport function utcminutes(date) {\n return t(date).getUTCMinutes();\n}\n\n/**\n * Returns the seconds of the minute for the specified *date* according to\n * Coordinated Universal Time (UTC).\n * @param {Date | number} date The input Date or timestamp value.\n * @return {number} The seconds value in UTC time.\n */\nexport function utcseconds(date) {\n return t(date).getUTCSeconds();\n}\n\n/**\n * Returns the milliseconds of the second for the specified *date* according to\n * Coordinated Universal Time (UTC).\n * @param {Date | number} date The input Date or timestamp value.\n * @return {number} The milliseconds value in UTC time.\n */\nexport function utcmilliseconds(date) {\n return t(date).getUTCMilliseconds();\n}\n","/**\n * Parses a string *value* in JSON format, constructing the JavaScript\n * value or object described by the string.\n * @param {string} value The input string value.\n * @return {any} The parsed JSON.\n */\nexport function parse_json(value) {\n return JSON.parse(value);\n}\n\n/**\n * Converts a JavaScript object or value to a JSON string.\n * @param {*} value The value to convert to a JSON string.\n * @return {string} The JSON string.\n */\nexport function to_json(value) {\n return JSON.stringify(value);\n}\n","import { isValid } from './is-valid.js';\n\nlet source = Math.random;\n\nexport function random() {\n return source();\n}\n\n/**\n * Set a seed value for random number generation.\n * If the seed is a valid number, a 32-bit linear congruential generator\n * with the given seed will be used to generate random values.\n * If the seed is null, undefined, or not a valid number, the random\n * number generator will revert to Math.random.\n * @param {number} seed The random seed value. Should either be an\n * integer or a fraction between 0 and 1.\n */\nexport function seed(seed) {\n source = isValid(seed) && isFinite(seed = +seed) ? lcg(seed) : Math.random;\n}\n\nfunction lcg(seed) {\n const a = 0x19660D;\n const c = 0x3C6EF35F;\n const m = 1 / 0x100000000;\n seed = (0 <= seed && seed < 1 ? seed / m : Math.abs(seed)) | 0;\n\n // Random numbers using a Linear Congruential Generator with seed value\n // https://en.wikipedia.org/wiki/Linear_congruential_generator\n return () => (seed = a * seed + c | 0, m * (seed >>> 0));\n}\n","import { random as _random } from '../../util/random.js';\n\n/**\n * Return a random floating point number between 0 (inclusive) and 1\n * (exclusive). By default uses *Math.random*. Use the *seed* method\n * to instead use a seeded random number generator.\n * @return {number} A pseudorandom number between 0 and 1.\n */\nexport function random() {\n return _random();\n}\n\n/**\n * Tests if the input *value* is not a number (`NaN`); equivalent\n * to *Number.isNaN*.\n * @param {*} value The value to test.\n * @return {boolean} True if the value is not a number, false otherwise.\n */\nexport function is_nan(value) {\n return Number.isNaN(value);\n}\n\n/**\n * Tests if the input *value* is finite; equivalent to *Number.isFinite*.\n * @param {*} value The value to test.\n * @return {boolean} True if the value is finite, false otherwise.\n */\nexport function is_finite(value) {\n return Number.isFinite(value);\n}\n\n/**\n * Returns the absolute value of the input *value*; equivalent to *Math.abs*.\n * @param {number} value The input number value.\n * @return {number} The absolute value.\n */\nexport function abs(value) {\n return Math.abs(value);\n}\n\n/**\n * Returns the cube root value of the input *value*; equivalent to\n * *Math.cbrt*.\n * @param {number} value The input number value.\n * @return {number} The cube root value.\n */\nexport function cbrt(value) {\n return Math.cbrt(value);\n}\n\n/**\n * Returns the ceiling of the input *value*, the nearest integer equal to\n * or greater than the input; equivalent to *Math.ceil*.\n * @param {number} value The input number value.\n * @return {number} The ceiling value.\n */\nexport function ceil(value) {\n return Math.ceil(value);\n}\n\n/**\n * Returns the number of leading zero bits in the 32-bit binary\n * representation of a number *value*; equivalent to *Math.clz32*.\n * @param {number} value The input number value.\n * @return {number} The leading zero bits value.\n */\nexport function clz32(value) {\n return Math.clz32(value);\n}\n\n/**\n * Returns *e<sup>value</sup>*, where *e* is Euler's number, the base of the\n * natural logarithm; equivalent to *Math.exp*.\n * @param {number} value The input number value.\n * @return {number} The base-e exponentiated value.\n */\nexport function exp(value) {\n return Math.exp(value);\n}\n\n/**\n * Returns *e<sup>value</sup> - 1*, where *e* is Euler's number, the base of\n * the natural logarithm; equivalent to *Math.expm1*.\n * @param {number} value The input number value.\n * @return {number} The base-e exponentiated value minus 1.\n */\nexport function expm1(value) {\n return Math.expm1(value);\n}\n\n/**\n * Returns the floor of the input *value*, the nearest integer equal to or\n * less than the input; equivalent to *Math.floor*.\n * @param {number} value The input number value.\n * @return {number} The floor value.\n */\nexport function floor(value) {\n return Math.floor(value);\n}\n\n/**\n * Returns the nearest 32-bit single precision float representation of the\n * input number *value*; equivalent to *Math.fround*. Useful for translating\n * between 64-bit `Number` values and values from a `Float32Array`.\n * @param {number} value The input number value.\n * @return {number} The rounded value.\n */\nexport function fround(value) {\n return Math.fround(value);\n}\n\n/**\n * Returns the greatest (maximum) value among the input *values*; equivalent\n * to *Math.max*. This is _not_ an aggregate function, see *op.max* to\n * compute a maximum value across multiple rows.\n * @param {...number} values The input number values.\n * @return {number} The greatest (maximum) value among the inputs.\n */\nexport function greatest(...values) {\n return Math.max(...values);\n}\n\n/**\n * Returns the least (minimum) value among the input *values*; equivalent\n * to *Math.min*. This is _not_ an aggregate function, see *op.min* to\n * compute a minimum value across multiple rows.\n * @param {...number} values The input number values.\n * @return {number} The least (minimum) value among the inputs.\n */\nexport function least(...values) {\n return Math.min(...values);\n}\n\n/**\n * Returns the natural logarithm (base *e*) of a number *value*; equivalent\n * to *Math.log*.\n * @param {number} value The input number value.\n * @return {number} The base-e log value.\n */\nexport function log(value) {\n return Math.log(value);\n}\n\n/**\n * Returns the base 10 logarithm of a number *value*; equivalent\n * to *Math.log10*.\n * @param {number} value The input number value.\n * @return {number} The base-10 log value.\n */\nexport function log10(value) {\n return Math.log10(value);\n}\n\n/**\n * Returns the natural logarithm (base *e*) of 1 + a number *value*;\n * equivalent to *Math.log1p*.\n * @param {number} value The input number value.\n * @return {number} The base-e log of value + 1.\n */\nexport function log1p(value) {\n return Math.log1p(value);\n}\n\n/**\n * Returns the base 2 logarithm of a number *value*; equivalent\n * to *Math.log2*.\n * @param {number} value The input number value.\n * @return {number} The base-2 log value.\n */\nexport function log2(value) {\n return Math.log2(value);\n}\n\n/**\n * Returns the *base* raised to the *exponent* power, that is,\n * *base*<sup>*exponent*</sup>; equivalent to *Math.pow*.\n * @param {number} base The base number value.\n * @param {number} exponent The exponent number value.\n * @return {number} The exponentiated value.\n */\nexport function pow(base, exponent) {\n return Math.pow(base, exponent);\n}\n\n/**\n * Returns the value of a number rounded to the nearest integer;\n * equivalent to *Math.round*.\n * @param {number} value The input number value.\n * @return {number} The rounded value.\n */\nexport function round(value) {\n return Math.round(value);\n}\n\n/**\n * Returns either a positive or negative +/- 1, indicating the sign of the\n * input *value*; equivalent to *Math.sign*.\n * @param {number} value The input number value.\n * @return {number} The sign of the value.\n */\nexport function sign(value) {\n return Math.sign(value);\n}\n\n/**\n * Returns the square root of the input *value*; equivalent to *Math.sqrt*.\n * @param {number} value The input number value.\n * @return {number} The square root value.\n */\nexport function sqrt(value) {\n return Math.sqrt(value);\n}\n\n/**\n * Returns the integer part of a number by removing any fractional digits;\n * equivalent to *Math.trunc*.\n * @param {number} value The input number value.\n * @return {number} The truncated value.\n */\nexport function trunc(value) {\n return Math.trunc(value);\n}\n\n/**\n * Converts the input *radians* value to degrees.\n * @param {number} radians The input radians value.\n * @return {number} The value in degrees\n */\nexport function degrees(radians) {\n return 180 * radians / Math.PI;\n}\n\n/**\n * Converts the input *degrees* value to radians.\n * @param {number} degrees The input degrees value.\n * @return {number} The value in radians.\n */\nexport function radians(degrees) {\n return Math.PI * degrees / 180;\n}\n\n/**\n * Returns the arc-cosine (in radians) of a number *value*;\n * equivalent to *Math.acos*.\n * @param {number} value The input number value.\n * @return {number} The arc-cosine value.\n */\nexport function acos(value) {\n return Math.acos(value);\n}\n\n/**\n * Returns the hyperbolic arc-cosine of a number *value*;\n * equivalent to *Math.acosh*.\n * @param {number} value The input number value.\n * @return {number} The hyperbolic arc-cosine value.\n */\nexport function acosh(value) {\n return Math.acosh(value);\n}\n\n/**\n * Returns the arc-sine (in radians) of a number *value*;\n * equivalent to *Math.asin*.\n * @param {number} value The input number value.\n * @return {number} The arc-sine value.\n */\nexport function asin(value) {\n return Math.asin(value);\n}\n\n/**\n * Returns the hyperbolic arc-sine of a number *value*;\n * equivalent to *Math.asinh*.\n * @param {number} value The input number value.\n * @return {number} The hyperbolic arc-sine value.\n */\nexport function asinh(value) {\n return Math.asinh(value);\n}\n\n/**\n * Returns the arc-tangent (in radians) of a number *value*;\n * equivalent to *Math.atan*.\n * @param {number} value The input number value.\n * @return {number} The arc-tangent value.\n */\nexport function atan(value) {\n return Math.atan(value);\n}\n\n/**\n * Returns the angle in the plane (in radians) between the positive x-axis\n * and the ray from (0, 0) to the point (*x*, *y*);\n * equivalent to *Math.atan2*.\n * @param {number} y The y coordinate of the point.\n * @param {number} x The x coordinate of the point.\n * @return {number} The arc-tangent angle.\n */\nexport function atan2(y, x) {\n return Math.atan2(y, x);\n}\n\n/**\n * Returns the hyperbolic arc-tangent of a number *value*;\n * equivalent to *Math.atanh*.\n * @param {number} value The input number value.\n * @return {number} The hyperbolic arc-tangent value.\n */\nexport function atanh(value) {\n return Math.atanh(value);\n}\n\n/**\n * Returns the cosine (in radians) of a number *value*;\n * equivalent to *Math.cos*.\n * @param {number} value The input number value.\n * @return {number} The cosine value.\n */\nexport function cos(value) {\n return Math.cos(value);\n}\n\n/**\n * Returns the hyperbolic cosine (in radians) of a number *value*;\n * equivalent to *Math.cosh*.\n * @param {number} value The input number value.\n * @return {number} The hyperbolic cosine value.\n */\nexport function cosh(value) {\n return Math.cosh(value);\n}\n\n/**\n * Returns the sine (in radians) of a number *value*;\n * equivalent to *Math.sin*.\n * @param {number} value The input number value.\n * @return {number} The sine value.\n */\nexport function sin(value) {\n return Math.sin(value);\n}\n\n/**\n * Returns the hyperbolic sine (in radians) of a number *value*;\n * equivalent to *Math.sinh*.\n * @param {number} value The input number value.\n * @return {number} The hyperbolic sine value.\n */\nexport function sinh(value) {\n return Math.sinh(value);\n}\n\n/**\n * Returns the tangent (in radians) of a number *value*;\n * equivalent to *Math.tan*.\n * @param {number} value The input number value.\n * @return {number} The tangent value.\n */\nexport function tan(value) {\n return Math.tan(value);\n}\n\n/**\n * Returns the hyperbolic tangent (in radians) of a number *value*;\n * equivalent to *Math.tanh*.\n * @param {number} value The input number value.\n * @return {number} The hyperbolic tangent value.\n */\nexport function tanh(value) {\n return Math.tanh(value);\n}\n","/**\n * @param {*} value\n * @return {value is Map}\n */\nexport function isMap(value) {\n return value instanceof Map;\n}\n","/**\n * @param {*} value\n * @return {value is Set}\n */\nexport function isSet(value) {\n return value instanceof Set;\n}\n","import { isMap } from './is-map.js';\nimport { isSet } from './is-set.js';\n\n/**\n * @param {*} value\n * @return {value is Map | Set}\n */\nexport function isMapOrSet(value) {\n return isMap(value) || isSet(value);\n}\n","import { NULL } from '../../util/null.js';\nimport { isMap } from '../../util/is-map.js';\nimport { isMapOrSet } from '../../util/is-map-or-set.js';\n\nfunction array(iter) {\n return Array.from(iter);\n}\n\n/**\n * Returns a boolean indicating whether the *object* has the specified *key*\n * as its own property (as opposed to inheriting it). If the *object* is a\n * *Map* or *Set* instance, the *has* method will be invoked directly on the\n * object, otherwise *Object.hasOwnProperty* is used.\n * @template {string | number} K\n * @template V\n * @param {Map<K, V>|Set<K>|Record<K, V>} object The object, Map, or Set to\n * test for property membership.\n * @param {K} key The property key to test for.\n * @return {boolean} True if the object has the given key, false otherwise.\n */\nexport function has(object, key) {\n return isMapOrSet(object) ? object.has(key)\n : object != null ? Object.hasOwn(object, `${key}`)\n : false;\n}\n\n/**\n * Returns an array of a given *object*'s own enumerable property names. If\n * the *object* is a *Map* instance, the *keys* method will be invoked\n * directly on the object, otherwise *Object.keys* is used.\n * @template {string | number} K\n * @template V\n * @param {Map<K, V>|Record<K, V>} object The input object or Map value.\n * @return {K[]} An array of property key name strings.\n */\nexport function keys(object) {\n return isMap(object) ? array(object.keys())\n : object != null ? /** @type {K[]} */(Object.keys(object))\n : [];\n}\n\n/**\n * Returns an array of a given *object*'s own enumerable property values. If\n * the *object* is a *Map* or *Set* instance, the *values* method will be\n * invoked directly on the object, otherwise *Object.values* is used.\n * @template {string | number} K\n * @template V\n * @param {Map<K, V> | Set<V> | Record<K, V>} object The input object, Map,\n * or Set value.\n * @return {V[]} An array of property values.\n */\nexport function values(object) {\n return isMapOrSet(object) ? array(object.values())\n : object != null ? Object.values(object)\n : [];\n}\n\n/**\n * Returns an array of a given *object*'s own enumerable keyed property\n * `[key, value]` pairs. If the *object* is a *Map* or *Set* instance, the\n * *entries* method will be invoked directly on the object, otherwise\n * *Object.entries* is used.\n * @template {string | number} K\n * @template V\n * @param {Map<K, V> | Set<V> | Record<K, V>} object The input object, Map,\n * or Set value.\n * @return {[K, V][]} An array of property values.\n */\nexport function entries(object) {\n return isMapOrSet(object) ? array(object.entries())\n : object != null ? /** @type {[K, V][]} */(Object.entries(object))\n : [];\n}\n\n/**\n * Returns a new object given iterable *entries* of `[key, value]` pairs.\n * This method is Arquero's version of the *Object.fromEntries* method.\n * @template {string | number} K\n * @template V\n * @param {Iterable<[K, V]>} entries An iterable collection of `[key, value]`\n * pairs, such as an array of two-element arrays or a *Map*.\n * @return {Record<K, V>} An object of consolidated key-value pairs.\n */\nexport function object(entries) {\n return entries\n ? /** @type {Record<K, V>} */(Object.fromEntries(entries))\n : NULL;\n}\n","/**\n * Parses a string *value* and returns a Date instance. Beware: this method\n * uses JavaScript's *Date.parse()* functionality, which is inconsistently\n * implemented across browsers. That said,\n * [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) formatted strings such\n * as those produced by *op.format_date* and *op.format_utcdate* should be\n * supported across platforms. Note that \"bare\" ISO date strings such as\n * `\"2001-01-01\"` are interpreted by JavaScript as indicating midnight of\n * that day in Coordinated Universal Time (UTC), *not* local time. To\n * indicate the local timezone, an ISO string can include additional time\n * components and no `Z` suffix: `\"2001-01-01T00:00\"`.\n * @param {*} value The input value.\n * @return {Date} The parsed date value.\n */\nexport function parse_date(value) {\n return value == null ? value : new Date(value);\n}\n\n/**\n * Parses a string *value* and returns a floating point number.\n * @param {*} value The input value.\n * @return {number} The parsed number value.\n */\nexport function parse_float(value) {\n return value == null ? value : Number.parseFloat(value);\n}\n\n/**\n * Parses a string *value* and returns an integer of the specified radix\n * (the base in mathematical numeral systems).\n * @param {*} value The input value.\n * @param {number} [radix] An integer between 2 and 36 that represents the\n * radix (the base in mathematical numeral systems) of the string. Be\n * careful: this does not default to 10! If *radix* is `undefined`, `0`,\n * or unspecified, JavaScript assumes the following: If the input string\n * begins with `\"0x\"` or `\"0X\"` (a zero, followed by lowercase or\n * uppercase X), the radix is assumed to be 16 and the rest of the string\n * is parsed as a hexidecimal number. If the input string begins with `\"0\"`\n * (a zero), the radix is assumed to be 8 (octal) or 10 (decimal). Exactly\n * which radix is chosen is implementation-dependent. If the input string\n * begins with any other value, the radix is 10 (decimal).\n * @return {number} The parsed integer value.\n */\nexport function parse_int(value, radix) {\n return value == null ? value : Number.parseInt(value, radix);\n}\n\n/**\n * Determines whether a string *value* ends with the characters of a\n * specified *search* string, returning `true` or `false` as appropriate.\n * @param {any} value The input string value.\n * @param {string} search The search string to test for.\n * @param {number} [length] If provided, used as the length of *value*\n * (default `value.length`).\n * @return {boolean} True if the value ends with the search string,\n * false otherwise.\n */\nexport function endswith(value, search, length) {\n return value == null ? false : String(value).endsWith(search, length);\n}\n\n/**\n * Retrieves the result of matching a string *value* against a regular\n * expression *regexp*. If no *index* is specified, returns an array\n * whose contents depend on the presence or absence of the regular\n * expression global (`g`) flag, or `null` if no matches are found. If the\n * `g` flag is used, all results matching the complete regular expression\n * will be returned, but capturing groups will not. If the `g` flag is not\n * used, only the first complete match and its related capturing groups are\n * returned.\n *\n * If specified, the *index* looks up a value of the resulting match. If\n * *index* is a number, the corresponding index of the result array is\n * returned. If *index* is a string, the value of the corresponding\n * named capture group is returned, or `null` if there is no such group.\n * @param {*} value The input string value.\n * @param {*} regexp The regular expression to match against.\n * @param {number|string} index The index into the match result array\n * or capture group.\n * @return {string|string[]} The match result.\n */\nexport function match(value, regexp, index) {\n const m = value == null ? value : String(value).match(regexp);\n return index == null || m == null ? m\n : typeof index === 'number' ? m[index]\n : m.groups ? m.groups[index]\n : null;\n}\n\n/**\n * Returns the Unicode normalization form of the string *value*.\n * @param {*} value The input value to normalize.\n * @param {string} form The Unicode normalization form, one of\n * `'NFC'` (default, canonical decomposition, followed by canonical\n * composition), `'NFD'` (canonical decomposition), `'NFKC'` (compatibility\n * decomposition, followed by canonical composition),\n * or `'NFKD'` (compatibility decomposition).\n * @return {string} The normalized string value.\n */\nexport function normalize(value, form) {\n return value == null ? value : String(value).normalize(form);\n}\n\n/**\n * Pad a string *value* with a given *fill* string (applied from the end of\n * *value* and repeated, if needed) so that the resulting string reaches a\n * given *length*.\n * @param {*} value The input value to pad.\n * @param {number} length The length of the resulting string once the\n * *value* string has been padded. If the length is lower than\n * `value.length`, the *value* string will be returned as-is.\n * @param {string} [fill] The string to pad the *value* string with\n * (default `''`). If *fill* is too long to stay within the target\n * *length*, it will be truncated: for left-to-right languages the\n * left-most part and for right-to-left languages the right-most will\n * be applied.\n * @return {string} The padded string.\n */\nexport function padend(value, length, fill) {\n return value == null ? value : String(value).padEnd(length, fill);\n}\n\n/**\n * Pad a string *value* with a given *fill* string (applied from the start\n * of *value* and repeated, if needed) so that the resulting string reaches\n * a given *length*.\n * @param {*} value The input value to pad.\n * @param {number} length The length of the resulting string once the\n * *value* string has been padded. If the length is lower than\n * `value.length`, the *value* string will be returned as-is.\n * @param {string} [fill] The string to pad the *value* string with\n * (default `''`). If *fill* is too long to stay within the target\n * *length*, it will be truncated: for left-to-right languages the\n * left-most part and for right-to-left languages the right-most will\n * be applied.\n * @return {string} The padded string.\n */\nexport function padstart(value, length, fill) {\n return value == null ? value : String(value).padStart(length, fill);\n}\n\n/**\n * Returns the string *value* converted to upper case.\n * @param {*} value The input string value.\n * @return {string} The upper case string.\n */\nexport function upper(value) {\n return value == null ? value : String(value).toUpperCase();\n}\n\n/**\n * Returns the string *value* converted to lower case.\n * @param {*} value The input string value.\n * @return {string} The lower case string.\n */\nexport function lower(value) {\n return value == null ? value : String(value).toLowerCase();\n}\n\n/**\n * Returns a new string which contains the specified *number* of copies of\n * the *value* string concatenated together.\n * @param {*} value The input string to repeat.\n * @param {*} number An integer between `0` and `+Infinity`, indicating the\n * number of times to repeat the string.\n * @return {string} The repeated string.\n */\nexport function repeat(value, number) {\n return value == null ? value : String(value).repeat(number);\n}\n\n/**\n * Returns a new string with some or all matches of a *pattern* replaced by\n * a *replacement*. The *pattern* can be a string or a regular expression,\n * and the *replacement* must be a string. If *pattern* is a string, only\n * the first occurrence will be replaced; to make multiple replacements, use\n * a regular expression *pattern* with a `g` (global) flag.\n * @param {*} value The input string value.\n * @param {*} pattern The pattern string or regular expression to replace.\n * @param {*} replacement The replacement string to use.\n * @return {string} The string with patterns replaced.\n */\nexport function replace(value, pattern, replacement) {\n return value == null\n ? value\n : String(value).replace(pattern, String(replacement));\n}\n\n/**\n * Divides a string *value* into an ordered list of substrings based on a\n * *separator* pattern, puts these substrings into an array, and returns the\n * array.\n * @param {*} value The input string value.\n * @param {*} separator A string or regular expression pattern describing\n * where each split should occur.\n * @param {number} [limit] An integer specifying a limit on the number of\n * substrings to be included in the array.\n * @return {string[]}\n */\nexport function split(value, separator, limit) {\n return value == null ? [] : String(value).split(separator, limit);\n}\n\n/**\n * Determines whether a string *value* starts with the characters of a\n * specified *search* string, returning `true` or `false` as appropriate.\n * @param {*} value The input string value.\n * @param {string} search The search string to test for.\n * @param {number} [position=0] The position in the *value* string at which\n * to begin searching (default `0`).\n * @return {boolean} True if the string starts with the search pattern,\n * false otherwise.\n */\nexport function startswith(value, search, position) {\n return value == null ? false : String(value).startsWith(search, position);\n}\n\n/**\n * Returns the part of the string *value* between the *start* and *end*\n * indexes, or to the end of the string.\n * @param {*} value The input string value.\n * @param {number} [start=0] The index of the first character to include in\n * the returned substring (default `0`).\n * @param {number} [end] The index of the first character to exclude from\n * the returned substring (default `value.length`).\n * @return {string} The substring.\n */\nexport function substring(value, start, end) {\n return value == null ? value : String(value).substring(start, end);\n}\n\n/**\n * Returns a new string with whitespace removed from both ends of the input\n * *value* string. Whitespace in this context is all the whitespace\n * characters (space, tab, no-break space, etc.) and all the line terminator\n * characters (LF, CR, etc.).\n * @param {*} value The input string value to trim.\n * @return {string} The trimmed string.\n */\nexport function trim(value) {\n return value == null ? value : String(value).trim();\n}\n","import { bin } from './bin.js';\nimport { equal } from './equal.js';\nimport { recode } from './recode.js';\nimport { sequence } from './sequence.js';\n\nimport * as array from './array.js';\nimport * as date from './date.js';\nimport * as json from './json.js';\nimport * as math from './math.js';\nimport * as object from './object.js';\nimport * as string from './string.js';\n\nexport const functions = {\n bin,\n equal,\n recode,\n sequence,\n ...array,\n ...date,\n ...json,\n ...math,\n ...object,\n ...string\n};\n","import { isArray } from './is-array.js';\n\nexport function toArray(value) {\n return value != null\n ? (isArray(value) ? value : [value])\n : [];\n}\n","/**\n * @param {*} value\n * @returns {value is bigint}\n */\nexport function isBigInt(value) {\n return typeof value === 'bigint';\n}\n","import { isBigInt } from './is-bigint.js';\n\nexport function toString(v) {\n return v === undefined ? v + ''\n : isBigInt(v) ? v + 'n'\n : JSON.stringify(v);\n}\n","import { functions } from './functions/index.js';\nimport { toArray } from '../util/to-array.js';\nimport { toString } from '../util/to-string.js';\n\nexport class Op {\n constructor(name, fields, params) {\n this.name = name;\n this.fields = fields;\n this.params = params;\n }\n toString() {\n const args = [\n ...this.fields.map(f => `d[${toString(f)}]`),\n ...this.params.map(toString)\n ];\n return `d => op.${this.name}(${args})`;\n }\n toObject() {\n return { expr: this.toString(), func: true };\n }\n}\n\n/**\n * @param {string} name\n * @param {any | any[]} [fields]\n * @param {any | any[]} [params]\n */\nexport function op(name, fields = [], params = []) {\n return new Op(name, toArray(fields), toArray(params));\n}\n\nexport const any = (field) => op('any', field);\nexport const count = () => op('count');\nexport const array_agg = (field) => op('array_agg', field);\nexport const array_agg_distinct = (field) => op('array_agg_distinct', field);\nexport const map_agg = (key, value) => op('map_agg', [key, value]);\nexport const object_agg = (key, value) => op('object_agg', [key, value]);\nexport const entries_agg = (key, value) => op('entries_agg', [key, value]);\n\n/**\n * @typedef {import('../table/types.js').Struct} Struct\n */\n\n/**\n * All table expression operations including normal functions,\n * aggregate functions, and window functions.\n */\nexport const opApi = {\n ...functions,\n\n /**\n * Generate an object representing the current table row.\n * @param {...string} names The column names to include in the object.\n * If unspecified, all columns are included.\n * @return {Struct} The generated row object.\n */\n row_object: (...names) => op('row_object', null, names.flat()),\n\n /**\n * Aggregate function to count the number of records (rows).\n * @returns {number} The count of records.\n */\n count,\n\n /**\n * Aggregate function returning an arbitrary observed value.\n * @template T\n * @param {T} field The data field.\n * @return {T} An arbitrary observed value.\n */\n any,\n\n /**\n * Aggregate function to collect an array of values.\n * @template T\n * @param {T} field The data field.\n * @return {Array<T>} A list of values.\n */\n array_agg,\n\n /**\n * Aggregate function to collect an array of distinct (unique) values.\n * @template T\n * @param {T} field The data field.\n * @return {Array<T>} An array of unique values.\n */\n array_agg_distinct,\n\n /**\n * Aggregate function to create an object given input key and value fields.\n * @template K, V\n * @param {K} key The object key field.\n * @param {V} value The object value field.\n * @return {Record<K, V>} An object of key-value pairs.\n */\n object_agg,\n\n /**\n * Aggregate function to create a Map given input key and value fields.\n * @template K, V\n * @param {K} key The object key field.\n * @param {V} value The object value field.\n * @return {Map<K, V>} A Map of key-value pairs.\n */\n map_agg,\n\n /**\n * Aggregate function to create an array in the style of Object.entries()\n * given input key and value fields.\n * @template K, V\n * @param {K} key The object key field.\n * @param {V} value The object value field.\n * @return {[K, V][]} An array of [key, value] arrays.\n */\n entries_agg,\n\n /**\n * Aggregate function to count the number of valid values.\n * Invalid values are null, undefined, or NaN.\n * @param {*} field The data field.\n * @return {number} The count of valid values.\n */\n // @ts-ignore\n valid: (field) => op('valid', field),\n\n /**\n * Aggregate function to count the number of invalid values.\n * Invalid values are null, undefined, or NaN.\n * @param {*} field The data field.\n * @return {number} The count of invalid values.\n */\n // @ts-ignore\n invalid: (field) => op('invalid', field),\n\n /**\n * Aggregate function to count the number of distinct values.\n * @param {*} field The data field.\n * @return {number} The count of distinct values.\n */\n // @ts-ignore\n distinct: (field) => op('distinct', field),\n\n /**\n * Aggregate function to determine the mode (most frequent) value.\n * @template T\n * @param {T} field The data field.\n * @return {T} The mode value.\n */\n // @ts-ignore\n mode: (field) => op('mode', field),\n\n /**\n * Aggregate function to sum values.\n * @param {*} field The data field.\n * @return {number} The sum of the values.\n */\n // @ts-ignore\n sum: (field) => op('sum', field),\n\n /**\n * Aggregate function to multiply values.\n * @param {*} field The data field.\n * @return {number} The product of the values.\n */\n // @ts-ignore\n product: (field) => op('product', field),\n\n /**\n * Aggregate function for the mean (average) value.\n * @param {*} field The data field.\n * @return {number} The mean (average) of the values.\n */\n // @ts-ignore\n mean: (field) => op('mean', field),\n\n /**\n * Aggregate function for the average (mean) value.\n * @param {*} field The data field.\n * @return {number} The average (mean) of the values.\n */\n // @ts-ignore\n average: (field) => op('average', field),\n\n /**\n * Aggregate function for the sample variance.\n * @param {*} field The data field.\n * @return {number} The sample variance of the values.\n */\n // @ts-ignore\n variance: (field) => op('variance', field),\n\n /**\n * Aggregate function for the population variance.\n * @param {*} field The data field.\n * @return {number} The population variance of the values.\n */\n // @ts-ignore\n variancep: (field) => op('variancep', field),\n\n /**\n * Aggregate function for the sample standard deviation.\n * @param {*} field The data field.\n * @return {number} The sample standard deviation of the values.\n */\n // @ts-ignore\n stdev: (field) => op('stdev', field),\n\n /**\n * Aggregate function for the population standard deviation.\n * @param {*} field The data field.\n * @return {number} The population standard deviation of the values.\n */\n // @ts-ignore\n stdevp: (field) => op('stdevp', field),\n\n /**\n * Aggregate function for the minimum value.\n * @template T\n * @param {T} field The data field.\n * @return {T} The minimum value.\n */\n // @ts-ignore\n min: (field) => op('min', field),\n\n /**\n * Aggregate function for the maximum value.\n * @template T\n * @param {T} field The data field.\n * @return {T} The maximum value.\n */\n // @ts-ignore\n max: (field) => op('max', field),\n\n /**\n * Aggregate function to compute the quantile boundary\n * of a data field for a probability threshold.\n * @param {*} field The data field.\n * @param {number} p The probability threshold.\n * @return {number} The quantile value.\n */\n // @ts-ignore\n quantile: (field, p) => op('quantile', field, p),\n\n /**\n * Aggregate function for the median value.\n * This is a shorthand for the 0.5 quantile value.\n * @param {*} field The data field.\n * @return {number} The median value.\n */\n // @ts-ignore\n median: (field) => op('median', field),\n\n /**\n * Aggregate function for the sample covariance between two variables.\n * @param {*} field1 The first data field.\n * @param {*} field2 The second data field.\n * @return {number} The sample covariance of the values.\n */\n // @ts-ignore\n covariance: (field1, field2) => op('covariance', [field1, field2]),\n\n /**\n * Aggregate function for the population covariance between two variables.\n * @param {*} field1 The first data field.\n * @param {*} field2 The second data field.\n * @return {number} The population covariance of the values.\n */\n // @ts-ignore\n covariancep: (field1, field2) => op('covariancep', [field1, field2]),\n\n /**\n * Aggregate function for the product-moment correlation between two variables.\n * To instead compute a rank correlation, compute the average ranks for each\n * variable and then apply this function to the result.\n * @param {*} field1 The first data field.\n * @param {*} field2 The second data field.\n * @return {number} The correlation between the field values.\n */\n // @ts-ignore\n corr: (field1, field2) => op('corr', [field1, field2]),\n\n /**\n * Aggregate function for calculating a binning scheme in terms of\n * the minimum bin boundary, maximum bin boundary, and step size.\n * @param {*} field The data field.\n * @param {number} [maxbins=15] The maximum number of allowed bins.\n * @param {boolean} [nice=true] Flag indicating if the bin min and max\n * should snap to \"nice\" human-friendly values.\n * @param {number} [minstep] The minimum allowed step size between bins.\n * @param {number} [step] The exact step size to use between bins.\n * If specified, the maxbins and minstep arguments are ignored.\n * @return {[number, number, number]} The bin [min, max, and step] values.\n */\n // @ts-ignore\n bins: (field, maxbins, nice, minstep, step) => op(\n 'bins',\n field,\n [maxbins, nice, minstep, step]\n ),\n\n /**\n * Window function to assign consecutive row numbers, starting from 1.\n * @return {number} The row number value.\n */\n // @ts-ignore\n row_number: () => op('row_number'),\n\n /**\n * Window function to assign a rank to each value in a group, starting\n * from 1. Peer values are assigned the same rank. Subsequent ranks\n * reflect the number of prior values: if the first two values tie for\n * rank 1, the third value is assigned rank 3.\n * @return {number} The rank value.\n */\n // @ts-ignore\n rank: () => op('rank'),\n\n /**\n * Window function to assign a fractional (average) rank to each value in\n * a group, starting from 1. Peer values are assigned the average of their\n * indices: if the first two values tie, both will be assigned rank 1.5.\n * @return {number} The peer-averaged rank value.\n */\n // @ts-ignore\n avg_rank: () => op('avg_rank'),\n\n /**\n * Window function to assign a dense rank to each value in a group,\n * starting from 1. Peer values are assigned the same rank. Subsequent\n * ranks do not reflect the number of prior values: if the first two\n * values tie for rank 1, the third value is assigned rank 2.\n * @return {number} The dense rank value.\n */\n // @ts-ignore\n dense_rank: () => op('dense_rank'),\n\n /**\n * Window function to assign a percentage rank to each value in a group.\n * The percent is calculated as (rank - 1) / (group_size - 1).\n * @return {number} The percentage rank value.\n */\n // @ts-ignore\n percent_rank: () => op('percent_rank'),\n\n /**\n * Window function to assign a cumulative distribution value between 0 and 1\n * to each value in a group.\n * @return {number} The cumulative distribution value.\n */\n // @ts-ignore\n cume_dist: () => op('cume_dist'),\n\n /**\n * Window function to assign a quantile (e.g., percentile) value to each\n * value in a group. Accepts an integer parameter indicating the number of\n * buckets to use (e.g., 100 for percentiles, 5 for quintiles).\n * @param {number} num The number of buckets for ntile calculation.\n * @return {number} The quantile value.\n */\n // @ts-ignore\n ntile: (num) => op('ntile', null, num),\n\n /**\n * Window function to assign a value that precedes the current value by\n * a specified number of positions. If no such value exists, returns a\n * default value instead.\n * @template T\n * @param {T} field The data field.\n * @param {number} [offset=1] The lag offset from the current value.\n * @param {T} [defaultValue=undefined] The default value.\n * @return {T} The lagging value.\n */\n // @ts-ignore\n lag: (field, offset, defaultValue) => op('lag', field, [offset, defaultValue]),\n\n /**\n * Window function to assign a value that follows the current value by\n * a specified number of positions. If no such value exists, returns a\n * default value instead.\n * @template T\n * @param {T} field The data field.\n * @param {number} [offset=1] The lead offset from the current value.\n * @param {T} [defaultValue=undefined] The default value.\n * @return {T} The leading value.\n */\n // @ts-ignore\n lead: (field, offset, defaultValue) => op('lead', field, [offset, defaultValue]),\n\n /**\n * Window function to assign the first value in a sliding window frame.\n * @template T\n * @param {T} field The data field.\n * @return {T} The first value in the current frame.\n */\n // @ts-ignore\n first_value: (field) => op('first_value', field),\n\n /**\n * Window function to assign the last value in a sliding window frame.\n * @template T\n * @param {T} field The data field.\n * @return {T} The last value in the current frame.\n */\n // @ts-ignore\n last_value: (field) => op('last_value', field),\n\n /**\n * Window function to assign the nth value in a sliding window frame\n * (counting from 1), or undefined if no such value exists.\n * @template T\n * @param {T} field The data field.\n * @param {number} nth The nth position, starting from 1.\n * @return {T} The nth value in the current frame.\n */\n // @ts-ignore\n nth_value: (field, nth) => op('nth_value', field, nth),\n\n /**\n * Window function to fill in missing values with preceding values.\n * @template T\n * @param {T} field The data field.\n * @param {T} [defaultValue=undefined] The default value.\n * @return {T} The current value if valid, otherwise the first preceding\n * valid value. If no such value exists, returns the default value.\n */\n // @ts-ignore\n fill_down: (field, defaultValue) => op('fill_down', field, defaultValue),\n\n /**\n * Window function to fill in missing values with subsequent values.\n * @template T\n * @param {T} field The data field.\n * @param {T} [defaultValue=undefined] The default value.\n * @return {T} The current value if valid, otherwise the first subsequent\n * valid value. If no such value exists, returns the default value.\n */\n // @ts-ignore\n fill_up: (field, defaultValue) => op('fill_up', field, defaultValue)\n};\n","export function error(message, cause) {\n // @ts-ignore\n throw Error(message, { cause });\n}\n","/**\n * @param {*} value\n * @returns {value is Function}\n */\nexport function isFunction(value) {\n return typeof value === 'function';\n}\n","export function bins(min, max, maxbins = 15, nice = true, minstep = 0, step) {\n const base = 10;\n const logb = Math.LN10;\n\n if (step == null) {\n const level = Math.ceil(Math.log(maxbins) / logb);\n const span = (max - min) || Math.abs(min) || 1;\n const div = [5, 2];\n\n step = Math.max(\n minstep,\n Math.pow(base, Math.round(Math.log(span) / logb) - level)\n );\n\n // increase step size if too many bins\n while (Math.ceil(span / step) > maxbins) {\n step *= base;\n }\n\n // decrease step size if it stays within maxbins\n const n = div.length;\n for (let i = 0; i < n; ++i) {\n const v = step / div[i];\n if (v >= minstep && span / v <= maxbins) {\n step = v;\n }\n }\n }\n\n // snap to \"nice\" boundaries\n if (nice) {\n let v = Math.log(step);\n const precision = v >= 0 ? 0 : ~~(-v / logb) + 1;\n const eps = Math.pow(base, -precision - 1);\n v = Math.floor(min / step + eps) * step;\n min = min < v ? v - step : v;\n max = Math.ceil(max / step) * step;\n }\n\n return [\n min,\n max === min ? min + step : max,\n step\n ];\n}\n","import { isArray } from './is-array.js';\nimport { isDate } from './is-date.js';\nimport { isRegExp } from './is-regexp.js';\nimport { isTypedArray } from './is-typed-array.js';\n\nexport function key(value) {\n const type = typeof value;\n return type === 'string' ? `\"${value}\"`\n : type !== 'object' || !value ? value\n : isDate(value) ? +value\n : isArray(value) || isTypedArray(value) ? `[${value.map(key)}]`\n : isRegExp(value) ? value + ''\n : objectKey(value);\n}\n\nfunction objectKey(value) {\n let s = '{';\n let i = -1;\n for (const k in value) {\n if (++i > 0) s += ',';\n s += `\"${k}\":${key(value[k])}`;\n }\n s += '}';\n return s;\n}\n\nexport function keyFunction(get, nulls) {\n const n = get.length;\n return n === 1\n ? (row, data) => key(get[0](row, data))\n : (row, data) => {\n let s = '';\n for (let i = 0; i < n; ++i) {\n if (i > 0) s += '|';\n const v = get[i](row, data);\n if (nulls && (v == null || v !== v)) return null;\n s += key(v);\n }\n return s;\n };\n}\n","import { key } from './key-function.js';\n\nexport function distinctMap() {\n const map = new Map();\n return {\n count() {\n return map.size;\n },\n values() {\n return Array.from(map.values(), _ => _.v);\n },\n increment(v) {\n const k = key(v);\n const e = map.get(k);\n e ? ++e.n : map.set(k, { v, n: 1 });\n },\n decrement(v) {\n const k = key(v);\n const e = map.get(k);\n e.n === 1 ? map.delete(k) : --e.n;\n },\n forEach(fn) {\n map.forEach(({ v, n }) => fn(v, n));\n }\n };\n}\n","export function noop() {}\n","export function product(values, start = 0, stop = values.length) {\n let prod = values[start++];\n\n for (let i = start; i < stop; ++i) {\n prod *= values[i];\n }\n\n return prod;\n}\n","import { bins } from '../util/bins.js';\nimport { distinctMap } from '../util/distinct-map.js';\nimport { isBigInt } from '../util/is-bigint.js';\nimport { noop } from '../util/no-op.js';\nimport { NULL } from '../util/null.js';\nimport { product } from '../util/product.js';\n\n/**\n * Initialize an aggregate operator.\n */\nfunction initOp(op) {\n op.init = op.init || noop;\n op.add = op.add || noop;\n op.rem = op.rem || noop;\n return op;\n}\n\nfunction initProduct(s, value) {\n s.product_v = false;\n return s.product = value;\n}\n\n/**\n * Initialize an aggregate operator.\n * @callback AggregateInit\n * @param {object} state The aggregate state object.\n * @return {void}\n */\n\n/**\n * Add a value to an aggregate operator.\n * @callback AggregateAdd\n * @param {object} state The aggregate state object.\n * @param {*} value The value to add.\n * @return {void}\n */\n\n/**\n * Remove a value from an aggregate operator.\n * @callback AggregateRem\n * @param {object} state The aggregate state object.\n * @param {*} value The value to remove.\n * @return {void}\n */\n\n/**\n * Retrive an output value from an aggregate operator.\n * @callback AggregateValue\n * @param {object} state The aggregate state object.\n * @return {*} The output value.\n */\n\n/**\n * An operator instance for an aggregate function.\n * @typedef {object} AggregateOperator\n * @property {AggregateInit} init Initialize the operator.\n * @property {AggregateAdd} [add] Add a value to the operator state.\n * @property {AggregateRem} [rem] Remove a value from the operator state.\n * @property {AggregateValue} value Retrieve an output value.\n */\n\n/**\n * Create a new aggregate operator instance.\n * @callback AggregateCreate\n * @param {...any} params The aggregate operator parameters.\n * @return {AggregateOperator} The instantiated aggregate operator.\n */\n\n/**\n * An operator definition for an aggregate function.\n * @typedef {object} AggregateDef\n * @property {AggregateCreate} create Create a new operator instance.\n * @property {number[]} param Two-element array containing the\n * counts of input fields and additional parameters.\n * @property {string[]} [req] Names of operators required by this one.\n * @property {string[]} [stream] Names of operators required by this one\n * for streaming operations (value removes).\n */\n\n/**\n * Aggregate operator definitions.\n */\nexport const aggregateFunctions = {\n /** @type {AggregateDef} */\n count: {\n create: () => initOp({\n value: s => s.count\n }),\n param: []\n },\n\n /** @type {AggregateDef} */\n array_agg: {\n create: () => initOp({\n init: s => s.values = true,\n value: s => s.list.values(s.stream)\n }),\n param: [1]\n },\n\n /** @type {AggregateDef} */\n object_agg: {\n create: () => initOp({\n init: s => s.values = true,\n value: s => Object.fromEntries(s.list.values())\n }),\n param: [2]\n },\n\n /** @type {AggregateDef} */\n map_agg: {\n create: () => initOp({\n init: s => s.values = true,\n value: s => new Map(s.list.values())\n }),\n param: [2]\n },\n\n /** @type {AggregateDef} */\n entries_agg: {\n create: () => initOp({\n init: s => s.values = true,\n value: s => s.list.values(s.stream)\n }),\n param: [2]\n },\n\n /** @type {AggregateDef} */\n any: {\n create: () => initOp({\n add: (s, v) => { if (s.any == null) s.any = v; },\n value: s => s.valid ? s.any : NULL\n }),\n param: [1]\n },\n\n /** @type {AggregateDef} */\n valid: {\n create: () => initOp({\n value: s => s.valid\n }),\n param: [1]\n },\n\n /** @type {AggregateDef} */\n invalid: {\n create: () => initOp({\n value: s => s.count - s.valid\n }),\n param: [1]\n },\n\n /** @type {AggregateDef} */\n distinct: {\n create: () => ({\n init: s => s.distinct = distinctMap(),\n value: s => s.distinct.count() + (s.valid === s.count ? 0 : 1),\n add: (s, v) => s.distinct.increment(v),\n rem: (s, v) => s.distinct.decrement(v)\n }),\n param: [1]\n },\n\n /** @type {AggregateDef} */\n array_agg_distinct: {\n create: () => initOp({\n value: s => s.distinct.values()\n }),\n param: [1],\n req: ['distinct']\n },\n\n /** @type {AggregateDef} */\n mode: {\n create: () => initOp({\n value: s => {\n let mode = NULL;\n let max = 0;\n s.distinct.forEach((value, count) => {\n if (count > max) {\n max = count;\n mode = value;\n }\n });\n return mode;\n }\n }),\n param: [1],\n req: ['distinct']\n },\n\n /** @type {AggregateDef} */\n sum: {\n create: () => ({\n init: s => s.sum = 0,\n value: s => s.valid ? s.sum : NULL,\n add: (s, v) => isBigInt(v)\n ? (s.sum === 0 ? s.sum = v : s.sum += v)\n : s.sum += +v,\n rem: (s, v) => s.sum -= v\n }),\n param: [1]\n },\n\n /** @type {AggregateDef} */\n product: {\n create: () => ({\n init: s => initProduct(s, 1),\n value: s => s.valid\n ? (\n s.product_v\n ? initProduct(s, product(s.list.values()))\n : s.product\n )\n : undefined,\n add: (s, v) => isBigInt(v)\n ? (s.product === 1 ? s.product = v : s.product *= v)\n : s.product *= v,\n rem: (s, v) => (v == 0 || v === Infinity || v === -Infinity)\n ? s.product_v = true\n : s.product /= v\n }),\n param: [1],\n stream: ['array_agg']\n },\n\n /** @type {AggregateDef} */\n mean: {\n create: () => ({\n init: s => s.mean = 0,\n value: s => s.valid ? s.mean : NULL,\n add: (s, v) => {\n s.mean_d = v - s.mean;\n s.mean += s.mean_d / s.valid;\n },\n rem: (s, v) => {\n s.mean_d = v - s.mean;\n s.mean -= s.valid ? s.mean_d / s.valid : s.mean;\n }\n }),\n param: [1]\n },\n\n /** @type {AggregateDef} */\n average: {\n create: () => initOp({\n value: s => s.valid ? s.mean : NULL\n }),\n param: [1],\n req: ['mean']\n },\n\n /** @type {AggregateDef} */\n variance: {\n create: () => ({\n init: s => s.dev = 0,\n value: s => s.valid > 1 ? s.dev / (s.valid - 1) : NULL,\n add: (s, v) => s.dev += s.mean_d * (v - s.mean),\n rem: (s, v) => s.dev -= s.mean_d * (v - s.mean)\n }),\n param: [1],\n req: ['mean']\n },\n\n /** @type {AggregateDef} */\n variancep: {\n create: () => initOp({\n value: s => s.valid > 1 ? s.dev / s.valid : NULL\n }),\n param: [1],\n req: ['variance']\n },\n\n /** @type {AggregateDef} */\n stdev: {\n create: () => initOp({\n value: s => s.valid > 1 ? Math.sqrt(s.dev / (s.valid - 1)) : NULL\n }),\n param: [1],\n req: ['variance']\n },\n\n /** @type {AggregateDef} */\n stdevp: {\n create: () => initOp({\n value: s => s.valid > 1 ? Math.sqrt(s.dev / s.valid) : NULL\n }),\n param: [1],\n req: ['variance']\n },\n\n /** @type {AggregateDef} */\n min: {\n create: () => ({\n init: s => s.min = NULL,\n value: s => s.min = (Number.isNaN(s.min) ? s.list.min() : s.min),\n add: (s, v) => { if (v < s.min || s.min === NULL) s.min = v; },\n rem: (s, v) => { if (v <= s.min) s.min = NaN; }\n }),\n param: [1],\n stream: ['array_agg']\n },\n\n /** @type {AggregateDef} */\n max: {\n create: () => ({\n init: s => s.max = NULL,\n value: s => s.max = (Number.isNaN(s.max) ? s.list.max() : s.max),\n add: (s, v) => { if (v > s.max || s.max === NULL) s.max = v; },\n rem: (s, v) => { if (v >= s.max) s.max = NaN; }\n }),\n param: [1],\n stream: ['array_agg']\n },\n\n /** @type {AggregateDef} */\n quantile: {\n create: (p) => initOp({\n value: s => s.list.quantile(p)\n }),\n param: [1, 1],\n req: ['array_agg']\n },\n\n /** @type {AggregateDef} */\n median: {\n create: () => initOp({\n value: s => s.list.quantile(0.5)\n }),\n param: [1],\n req: ['array_agg']\n },\n\n /** @type {AggregateDef} */\n covariance: {\n create: () => ({\n init: s => {\n s.cov = s.mean_x = s.mean_y = s.dev_x = s.dev_y = 0;\n },\n value: s => s.valid > 1 ? s.cov / (s.valid - 1) : NULL,\n add: (s, x, y) => {\n const dx = x - s.mean_x;\n const dy = y - s.mean_y;\n s.mean_x += dx / s.valid;\n s.mean_y += dy / s.valid;\n const dy2 = y - s.mean_y;\n s.dev_x += dx * (x - s.mean_x);\n s.dev_y += dy * dy2;\n s.cov += dx * dy2;\n },\n rem: (s, x, y) => {\n const dx = x - s.mean_x;\n const dy = y - s.mean_y;\n s.mean_x -= s.valid ? dx / s.valid : s.mean_x;\n s.mean_y -= s.valid ? dy / s.valid : s.mean_y;\n const dy2 = y - s.mean_y;\n s.dev_x -= dx * (x - s.mean_x);\n s.dev_y -= dy * dy2;\n s.cov -= dx * dy2;\n }\n }),\n param: [2]\n },\n\n /** @type {AggregateDef} */\n covariancep: {\n create: () => initOp({\n value: s => s.valid > 1 ? s.cov / s.valid : NULL\n }),\n param: [2],\n req: ['covariance']\n },\n\n /** @type {AggregateDef} */\n corr: {\n create: () => initOp({\n value: s => s.valid > 1\n ? s.cov / (Math.sqrt(s.dev_x) * Math.sqrt(s.dev_y))\n : NULL\n }),\n param: [2],\n req: ['covariance']\n },\n\n /** @type {AggregateDef} */\n bins: {\n create: (maxbins, nice, minstep, step) => initOp({\n value: s => bins(s.min, s.max, maxbins, nice, minstep, step)\n }),\n param: [1, 4],\n req: ['min', 'max']\n }\n};\n","import { error } from '../util/error.js';\nimport { isValid } from '../util/is-valid.js';\nimport { noop } from '../util/no-op.js';\nimport { NULL } from '../util/null.js';\n\n/**\n * Initialize a window operator.\n * @callback WindowInit\n * @return {void}\n */\n\n/**\n * A storage object for the state of the window.\n * @typedef {import('../verbs/window/window-state.js').windowState} WindowState\n */\n\n/**\n * Retrieve an output value from a window operator.\n * @callback WindowValue\n * @param {WindowState} state The window state object.\n * @return {*} The output value.\n */\n\n/**\n * Initialize an aggregate operator.\n * @typedef {import('./aggregate-functions.js').AggregateInit} AggregateInit\n */\n\n/**\n * Retrive an output value from an aggregate operator.\n * @typedef {import('./aggregate-functions.js').AggregateValue} AggregateValue\n */\n\n/**\n * An operator instance for a window function.\n * @typedef {object} WindowOperator\n * @property {AggregateInit} init Initialize the operator.\n * @property {AggregateValue} value Retrieve an output value.\n */\n\n/**\n * Create a new window operator instance.\n * @callback WindowCreate\n * @param {...any} params The aggregate operator parameters.\n * @return {WindowOperator} The instantiated window operator.\n */\n\n/**\n * Create a new aggregate operator instance.\n * @typedef {import('./aggregate-functions.js').AggregateCreate} AggregateCreate\n */\n\n/**\n * An operator definition for a window function.\n * @typedef {object} WindowDef\n * @property {AggregateCreate} create Create a new operator instance.\n * @property {number[]} param Two-element array containing the\n * counts of input fields and additional parameters.\n */\n\nconst rank = {\n create() {\n let rank;\n return {\n init: () => rank = 1,\n value: w => {\n const i = w.index;\n return (i && !w.peer(i)) ? (rank = i + 1) : rank;\n }\n };\n },\n param: []\n};\n\nconst cume_dist = {\n create() {\n let cume;\n return {\n init: () => cume = 0,\n value: w => {\n const { index, peer, size } = w;\n let i = index;\n if (cume < i) {\n while (i + 1 < size && peer(i + 1)) ++i;\n cume = i;\n }\n return (1 + cume) / size;\n }\n };\n },\n param: []\n};\n\n/**\n * Window operator definitions.\n */\nexport const windowFunctions = {\n /** @type {WindowDef} */\n row_number: {\n create() {\n return {\n init: noop,\n value: w => w.index + 1\n };\n },\n param: []\n },\n\n /** @type {WindowDef} */\n rank,\n\n /** @type {WindowDef} */\n avg_rank: {\n create() {\n let j, rank;\n return {\n init: () => (j = -1, rank = 1),\n value: w => {\n const i = w.index;\n if (i >= j) {\n for (rank = j = i + 1; w.peer(j); rank += ++j);\n rank /= (j - i);\n }\n return rank;\n }\n };\n },\n param: []\n },\n\n /** @type {WindowDef} */\n dense_rank: {\n create() {\n let drank;\n return {\n init: () => drank = 1,\n value: w => {\n const i = w.index;\n return (i && !w.peer(i)) ? ++drank : drank;\n }\n };\n },\n param: []\n },\n\n /** @type {WindowDef} */\n percent_rank: {\n create() {\n const { init, value } = rank.create();\n return {\n init,\n value: w => (value(w) - 1) / (w.size - 1)\n };\n },\n param: []\n },\n\n /** @type {WindowDef} */\n cume_dist,\n\n /** @type {WindowDef} */\n ntile: {\n create(num) {\n num = +num;\n if (!(num > 0)) error('ntile num must be greater than zero.');\n const { init, value } = cume_dist.create();\n return {\n init,\n value: w => Math.ceil(num * value(w))\n };\n },\n param: [0, 1]\n },\n\n /** @type {WindowDef} */\n lag: {\n create(offset, defaultValue = NULL) {\n offset = +offset || 1;\n return {\n init: noop,\n value: (w, f) => {\n const i = w.index - offset;\n return i >= 0 ? w.value(i, f) : defaultValue;\n }\n };\n },\n param: [1, 2]\n },\n\n /** @type {WindowDef} */\n lead: {\n create(offset, defaultValue = NULL) {\n offset = +offset || 1;\n return {\n init: noop,\n value: (w, f) => {\n const i = w.index + offset;\n return i < w.size ? w.value(i, f) : defaultValue;\n }\n };\n },\n param: [1, 2]\n },\n\n /** @type {WindowDef} */\n first_value: {\n create() {\n return {\n init: noop,\n value: (w, f) => w.value(w.i0, f)\n };\n },\n param: [1]\n },\n\n /** @type {WindowDef} */\n last_value: {\n create() {\n return {\n init: noop,\n value: (w, f) => w.value(w.i1 - 1, f)\n };\n },\n param: [1]\n },\n\n /** @type {WindowDef} */\n nth_value: {\n create(nth) {\n nth = +nth;\n if (!(nth > 0)) error('nth_value nth must be greater than zero.');\n return {\n init: noop,\n value: (w, f) => {\n const i = w.i0 + (nth - 1);\n return i < w.i1 ? w.value(i, f) : NULL;\n }\n };\n },\n param: [1, 1]\n },\n\n /** @type {WindowDef} */\n fill_down: {\n create(defaultValue = NULL) {\n let value;\n return {\n init: () => value = defaultValue,\n value: (w, f) => {\n const v = w.value(w.index, f);\n return isValid(v) ? (value = v) : value;\n }\n };\n },\n param: [1, 1]\n },\n\n /** @type {WindowDef} */\n fill_up: {\n create(defaultValue = NULL) {\n let value, idx;\n return {\n init: () => (value = defaultValue, idx = -1),\n value: (w, f) => w.index <= idx ? value\n : (idx = find(w, f, w.index)) >= 0 ? (value = w.value(idx, f))\n : (idx = w.size, value = defaultValue)\n };\n },\n param: [1, 1]\n }\n};\n\nfunction find(w, f, i) {\n for (const n = w.size; i < n; ++i) {\n if (isValid(w.value(i, f))) return i;\n }\n return -1;\n}\n","import { aggregateFunctions } from './aggregate-functions.js';\nimport { windowFunctions } from './window-functions.js';\nimport { functions } from './functions/index.js';\n\nexport { aggregateFunctions } from './aggregate-functions.js';\nexport { windowFunctions } from './window-functions.js';\nexport { functions } from './functions/index.js';\n\n/**\n * Check if an aggregate function with the given name exists.\n * @param {string} name The name of the aggregate function.\n * @return {boolean} True if found, false otherwise.\n */\nexport function hasAggregate(name) {\n return Object.hasOwn(aggregateFunctions, name);\n}\n\n/**\n * Check if a window function with the given name exists.\n * @param {string} name The name of the window function.\n * @return {boolean} True if found, false otherwise.\n */\nexport function hasWindow(name) {\n return Object.hasOwn(windowFunctions, name);\n}\n\n/**\n * Check if an expression function with the given name exists.\n * @param {string} name The name of the function.\n * @return {boolean} True if found, false otherwise.\n */\n export function hasFunction(name) {\n return Object.hasOwn(functions, name) || name === 'row_object';\n}\n\n/**\n * Get an aggregate function definition.\n * @param {string} name The name of the aggregate function.\n * @return {import('./aggregate-functions.js').AggregateDef}\n * The aggregate function definition, or undefined if not found.\n */\nexport function getAggregate(name) {\n return hasAggregate(name) && aggregateFunctions[name];\n}\n\n/**\n * Get a window function definition.\n * @param {string} name The name of the window function.\n * @return {import('./window-functions.js').WindowDef}\n * The window function definition, or undefined if not found.\n */\nexport function getWindow(name) {\n return hasWindow(name) && windowFunctions[name];\n}\n\n/**\n * Get an expression function definition.\n * @param {string} name The name of the function.\n * @return {Function} The function instance, or undefined if not found.\n */\nexport function getFunction(name) {\n return hasFunction(name) && functions[name];\n}\n","export function ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import { isArray } from './is-array.js';\nimport { isMap } from './is-map.js';\n\nexport function entries(value) {\n return isArray(value) ? value\n : isMap(value) ? value.entries()\n : value ? Object.entries(value)\n : [];\n}\n","export const ArrayPattern = 'ArrayPattern';\nexport const ArrowFunctionExpression = 'ArrowFunctionExpression';\nexport const FunctionExpression = 'FunctionExpression';\nexport const Identifier = 'Identifier';\nexport const Literal = 'Literal';\nexport const MemberExpression = 'MemberExpression';\nexport const ObjectExpression = 'ObjectExpression';\nexport const ObjectPattern = 'ObjectPattern';\nexport const Property = 'Property';\n\nexport const Column = 'Column';\nexport const Constant = 'Constant';\nexport const Dictionary = 'Dictionary';\nexport const Function = 'Function';\nexport const Parameter = 'Parameter';\nexport const Op = 'Op';\n","export function walk(node, ctx, visitors, parent) {\n const visit = visitors[node.type] || visitors['Default'];\n if (visit && visit(node, ctx, parent) === false) return;\n\n const walker = walkers[node.type];\n if (walker) walker(node, ctx, visitors);\n}\n\nconst unary = (node, ctx, visitors) => {\n walk(node.argument, ctx, visitors, node);\n};\n\nconst binary = (node, ctx, visitors) => {\n walk(node.left, ctx, visitors, node);\n walk(node.right, ctx, visitors, node);\n};\n\nconst ternary = (node, ctx, visitors) => {\n walk(node.test, ctx, visitors, node);\n walk(node.consequent, ctx, visitors, node);\n if (node.alternate) walk(node.alternate, ctx, visitors, node);\n};\n\nconst func = (node, ctx, visitors) => {\n list(node.params, ctx, visitors, node);\n walk(node.body, ctx, visitors, node);\n};\n\nconst call = (node, ctx, visitors) => {\n walk(node.callee, ctx, visitors, node);\n list(node.arguments, ctx, visitors, node);\n};\n\nconst list = (nodes, ctx, visitors, node) => {\n nodes.forEach(item => walk(item, ctx, visitors, node));\n};\n\nconst walkers = {\n TemplateLiteral: (node, ctx, visitors) => {\n list(node.expressions, ctx, visitors, node);\n list(node.quasis, ctx, visitors, node);\n },\n MemberExpression: (node, ctx, visitors) => {\n walk(node.object, ctx, visitors, node);\n walk(node.property, ctx, visitors, node);\n },\n CallExpression: call,\n NewExpression: call,\n ArrayExpression: (node, ctx, visitors) => {\n list(node.elements, ctx, visitors, node);\n },\n AssignmentExpression: binary,\n AwaitExpression: unary,\n BinaryExpression: binary,\n LogicalExpression: binary,\n UnaryExpression: unary,\n UpdateExpression: unary,\n ConditionalExpression: ternary,\n ObjectExpression: (node, ctx, visitors) => {\n list(node.properties, ctx, visitors, node);\n },\n Property: (node, ctx, visitors) => {\n walk(node.key, ctx, visitors, node);\n walk(node.value, ctx, visitors, node);\n },\n\n ArrowFunctionExpression: func,\n FunctionExpression: func,\n FunctionDeclaration: func,\n\n VariableDeclaration: (node, ctx, visitors) => {\n list(node.declarations, ctx, visitors, node);\n },\n VariableDeclarator: (node, ctx, visitors) => {\n walk(node.id, ctx, visitors, node);\n walk(node.init, ctx, visitors, node);\n },\n SpreadElement: (node, ctx, visitors) => {\n walk(node.argument, ctx, visitors, node);\n },\n\n BlockStatement: (node, ctx, visitors) => {\n list(node.body, ctx, visitors, node);\n },\n ExpressionStatement: (node, ctx, visitors) => {\n walk(node.expression, ctx, visitors, node);\n },\n IfStatement: ternary,\n ForStatement: (node, ctx, visitors) => {\n walk(node.init, ctx, visitors, node);\n walk(node.test, ctx, visitors, node);\n walk(node.update, ctx, visitors, node);\n walk(node.body, ctx, visitors, node);\n },\n WhileStatement: (node, ctx, visitors) => {\n walk(node.test, ctx, visitors, node);\n walk(node.body, ctx, visitors, node);\n },\n DoWhileStatement: (node, ctx, visitors) => {\n walk(node.body, ctx, visitors, node);\n walk(node.test, ctx, visitors, node);\n },\n SwitchStatement: (node, ctx, visitors) => {\n walk(node.discriminant, ctx, visitors, node);\n list(node.cases, ctx, visitors, node);\n },\n SwitchCase: (node, ctx, visitors) => {\n if (node.test) walk(node.test, ctx, visitors, node);\n list(node.consequent, ctx, visitors, node);\n },\n ReturnStatement: unary,\n\n Program: (node, ctx, visitors) => {\n walk(node.body[0], ctx, visitors, node);\n }\n};\n","import { ArrowFunctionExpression, FunctionExpression } from './constants.js';\n\nexport function is(type, node) {\n return node && node.type === type;\n}\n\nexport function isFunctionExpression(node) {\n return is(FunctionExpression, node)\n || is(ArrowFunctionExpression, node);\n}\n","import { Column, Dictionary, Literal } from './ast/constants.js';\nimport { isArrayType } from '../util/is-array-type.js';\nimport { isFunction } from '../util/is-function.js';\n\nconst dictOps = {\n '==': 1,\n '!=': 1,\n '===': 1,\n '!==': 1\n};\n\n/**\n * Rewrite AST node to be a table column reference.\n * Additionally optimizes dictionary column operations.\n * @param {object} ref AST node to rewrite to a column reference.\n * @param {string} name The name of the column.\n * @param {number} [index] The table index of the column.\n * @param {object} [col] The actual table column instance.\n * @param {object} [op] Parent AST node operating on the column reference.\n */\nexport function rewrite(ref, name, index = 0, col = undefined, op = undefined) {\n ref.type = Column;\n ref.name = name;\n ref.table = index;\n\n // annotate arrays as such for optimized access\n if (isArrayType(col)) {\n ref.array = true;\n }\n\n // proceed only if has parent op and is a dictionary column\n if (op && col && isFunction(col.keyFor)) {\n // get other arg if op is an optimizeable operation\n const lit = dictOps[op.operator]\n ? op.left === ref ? op.right : op.left\n : op.callee && op.callee.name === 'equal'\n ? op.arguments[op.arguments[0] === ref ? 1 : 0]\n : null;\n\n // rewrite as dictionary lookup if other arg is a literal\n if (lit && lit.type === Literal) {\n rewriteDictionary(op, ref, lit, col.keyFor(lit.value));\n }\n }\n\n return ref;\n}\n\nfunction rewriteDictionary(op, ref, lit, key) {\n if (key < 0) {\n // value not in dictionary, rewrite op as false literal\n op.type = Literal;\n op.value = false;\n op.raw = 'false';\n } else {\n // rewrite ref as dict key access\n ref.type = Dictionary;\n\n // rewrite literal as target dict key\n lit.value = key;\n lit.raw = key + '';\n }\n\n return true;\n}\n","import { Literal, ObjectExpression, Property } from './ast/constants.js';\nimport { codegen } from './codegen.js';\nimport { compile } from './compile.js';\nimport { rewrite } from './rewrite.js';\nimport { entries } from '../util/entries.js';\nimport { isArray } from '../util/is-array.js';\nimport { toString } from '../util/to-string.js';\n\nexport const ROW_OBJECT = 'row_object';\n\nexport function rowObjectExpression(\n node,\n table,\n props = table.columnNames())\n{\n node.type = ObjectExpression;\n\n const p = node.properties = [];\n for (const prop of entries(props)) {\n const [name, key] = isArray(prop) ? prop : [prop, prop];\n p.push({\n type: Property,\n key: { type: Literal, raw: toString(key) },\n value: rewrite({ computed: true }, name, 0, table.column(name))\n });\n }\n\n return node;\n}\n\nexport function rowObjectCode(table, props) {\n return codegen(rowObjectExpression({}, table, props));\n}\n\nexport function rowObjectBuilder(table, props) {\n return compile.expr(rowObjectCode(table, props));\n}\n","// 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, 7, 9, 32, 4, 318, 1, 78, 5, 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, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 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, 199, 7, 137, 9, 54, 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, 55, 9, 266, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 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, 245, 1, 2, 9, 233, 0, 3, 0, 8, 1, 6, 0, 475, 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, 4, 51, 13, 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, 7, 25, 39, 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, 39, 27, 10, 22, 251, 41, 7, 1, 17, 5, 57, 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, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 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, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 24, 43, 261, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 33, 24, 3, 24, 45, 74, 6, 0, 67, 12, 65, 1, 2, 0, 15, 4, 10, 7381, 42, 31, 98, 114, 8702, 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, 229, 29, 3, 0, 208, 30, 2, 2, 2, 1, 2, 6, 3, 4, 10, 1, 225, 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, 4381, 3, 5773, 3, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 8489];\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\\u0897-\\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-\\u1add\\u1ae0-\\u1aeb\\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-\\u088f\\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\\u0c5c\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdc-\\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-\\u1c8a\\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-\\ua7dc\\ua7f1-\\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\"`, `\"module\"` or `\"commonjs\"`. This influences global\n // strict mode and parsing of `import` and `export` declarations.\n sourceType: \"script\",\n // When set to true, enable strict parsing mode even if `sourceType`\n // is `\"script\"`.\n strict: false,\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 // Pass an optional `{line, column}` object to use for the start of\n // the parse. This is mostly useful when using `parseExpressionAt`\n // with `locations: true`, to prevent the parser from having to\n // determine the line position at the start position.\n startLocation: null,\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 if (options.sourceType === \"commonjs\" && options.allowAwaitOutsideFunction)\n { throw new Error(\"Cannot use allowAwaitOutsideFunction with sourceType: commonjs\") }\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_CLASS_FIELD_INIT = 512,\n SCOPE_SWITCH = 1024,\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 this.pos = startPos || 0;\n this.curLine = 1;\n if (options.startLocation) {\n this.lineStart = this.pos - options.startLocation.column;\n this.curLine = options.startLocation.line;\n } else if (startPos) {\n this.lineStart = this.input.lastIndexOf(\"\\n\", startPos - 1) + 1;\n if (this.options.locations)\n { this.curLine = this.input.slice(0, this.lineStart).split(lineBreak).length; }\n } else {\n this.lineStart = 0;\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 || options.strict === true || 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(\n this.options.sourceType === \"commonjs\"\n // In commonjs, the top-level scope behaves like a function scope\n ? SCOPE_FUNCTION\n : SCOPE_TOP\n );\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 },allowReturn: { configurable: true },allowSuper: { configurable: true },allowDirectSuper: { configurable: true },treatFunctionsAsVar: { configurable: true },allowNewDotTarget: { configurable: true },allowUsing: { configurable: true },inClassStaticBlock: { configurable: true } };\n\nParser.prototype.parse = function parse () {\n var this$1$1 = this;\n\n var node = this.options.program || this.startNode();\n this.nextToken();\n return this.catchStackOverflow(function () { return this$1$1.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 };\n\nprototypeAccessors.inAsync.get = function () { return (this.currentVarScope().flags & SCOPE_ASYNC) > 0 };\n\nprototypeAccessors.canAwait.get = function () {\n for (var i = this.scopeStack.length - 1; i >= 0; i--) {\n var ref = this.scopeStack[i];\n var flags = ref.flags;\n if (flags & (SCOPE_CLASS_STATIC_BLOCK | SCOPE_CLASS_FIELD_INIT)) { return false }\n if (flags & SCOPE_FUNCTION) { return (flags & SCOPE_ASYNC) > 0 }\n }\n return (this.inModule && this.options.ecmaVersion >= 13) || this.options.allowAwaitOutsideFunction\n};\n\nprototypeAccessors.allowReturn.get = function () {\n if (this.inFunction) { return true }\n if (this.options.allowReturnOutsideFunction && this.currentVarScope().flags & SCOPE_TOP) { return true }\n return false\n};\n\nprototypeAccessors.allowSuper.get = function () {\n var ref = this.currentThisScope();\n var flags = ref.flags;\n return (flags & SCOPE_SUPER) > 0 || 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 for (var i = this.scopeStack.length - 1; i >= 0; i--) {\n var ref = this.scopeStack[i];\n var flags = ref.flags;\n if (flags & (SCOPE_CLASS_STATIC_BLOCK | SCOPE_CLASS_FIELD_INIT) ||\n ((flags & SCOPE_FUNCTION) && !(flags & SCOPE_ARROW))) { return true }\n }\n return false\n};\n\nprototypeAccessors.allowUsing.get = function () {\n var ref = this.currentScope();\n var flags = ref.flags;\n if (flags & SCOPE_SWITCH) { return false }\n if (!this.inModule && flags & SCOPE_TOP) { return false }\n return true\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\npp$9.catchStackOverflow = function(f) {\n try {\n return f()\n } catch (e) {\n if (e instanceof Error && (/\\bstack\\b.*\\b(exceeded|overflow)\\b/i.test(e.message) || /\\btoo much recursion\\b/i.test(e.message)))\n { this.raise(this.start, \"Not enough stack space to parse input\"); }\n else\n { throw e }\n }\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$1 = Object.create(null);\n if (!node.body) { node.body = []; }\n while (this.type !== types$1.eof) {\n var stmt = this.parseStatement(null, true, exports$1);\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 === \"commonjs\" ? \"script\" : 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.fullCharCodeAt(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) { return true } // '{'\n if (isIdentifierStart(nextCh)) {\n var start = next;\n do { next += nextCh <= 0xffff ? 1 : 2; }\n while (isIdentifierChar(nextCh = this.fullCharCodeAt(next)))\n if (nextCh === 92) { return true }\n var ident = this.input.slice(start, next);\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.fullCharCodeAt(next + 8)) || after === 92 /* '\\' */))\n};\n\npp$8.isUsingKeyword = function(isAwaitUsing, isFor) {\n if (this.options.ecmaVersion < 17 || !this.isContextual(isAwaitUsing ? \"await\" : \"using\"))\n { return false }\n\n skipWhiteSpace.lastIndex = this.pos;\n var skip = skipWhiteSpace.exec(this.input);\n var next = this.pos + skip[0].length;\n\n if (lineBreak.test(this.input.slice(this.pos, next))) { return false }\n\n if (isAwaitUsing) {\n var usingEndPos = next + 5 /* using */, after;\n if (this.input.slice(next, usingEndPos) !== \"using\" ||\n usingEndPos === this.input.length ||\n isIdentifierChar(after = this.fullCharCodeAt(usingEndPos)) ||\n after === 92 /* '\\' */\n ) { return false }\n\n skipWhiteSpace.lastIndex = usingEndPos;\n var skipAfterUsing = skipWhiteSpace.exec(this.input);\n next = usingEndPos + skipAfterUsing[0].length;\n if (skipAfterUsing && lineBreak.test(this.input.slice(usingEndPos, next))) { return false }\n }\n\n var ch = this.fullCharCodeAt(next);\n if (!isIdentifierStart(ch) && ch !== 92 /* '\\' */) { return false }\n var idStart = next;\n do { next += ch <= 0xffff ? 1 : 2; }\n while (isIdentifierChar(ch = this.fullCharCodeAt(next)))\n if (ch === 92) { return true }\n var id = this.input.slice(idStart, next);\n if (keywordRelationalOperator.test(id)) { return false }\n if (isFor && !isAwaitUsing && id === \"of\") {\n // Look ahead for using declaration with initializer, i.e., `for (using of = ...)`\n skipWhiteSpace.lastIndex = next;\n var skipAfterOf = skipWhiteSpace.exec(this.input);\n next = next + skipAfterOf[0].length;\n if (this.input.charCodeAt(next) !== 61 /* '=' */ ||\n // Check for ==, === and => operators\n (ch = this.input.charCodeAt(next + 1)) === 61 /* '=' */ || ch === 62 /* '>' */) {\n return false\n }\n }\n return true\n};\n\npp$8.isAwaitUsing = function(isFor) {\n return this.isUsingKeyword(true, isFor)\n};\n\npp$8.isUsing = function(isFor) {\n return this.isUsingKeyword(false, isFor)\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$1) {\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$1)\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 usingKind = this.isAwaitUsing(false) ? \"await using\" : this.isUsing(false) ? \"using\" : null;\n if (usingKind) {\n if (!this.allowUsing) {\n this.raise(this.start, \"Using declaration cannot appear in the top level when source type is `script` or in the bare case statement\");\n }\n if (context) {\n // Cases like `for (;;) using x = ...;`, `if (true) await using x = ...;`, etc. are not allowed.\n this.raise(this.start, \"Using declaration is not allowed in single-statement positions\");\n }\n if (usingKind === \"await using\") {\n if (!this.canAwait) {\n this.raise(this.start, \"Await using cannot appear outside of async function\");\n }\n this.next();\n }\n this.next();\n this.parseVar(node, false, usingKind);\n this.semicolon();\n return this.finishNode(node, \"VariableDeclaration\")\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 return this.parseForAfterInit(node, init$1, awaitAt)\n }\n var startsWithLet = this.isContextual(\"let\"), isForOf = false;\n\n var usingKind = this.isUsing(true) ? \"using\" : this.isAwaitUsing(true) ? \"await using\" : null;\n if (usingKind) {\n var init$2 = this.startNode();\n this.next();\n if (usingKind === \"await using\") {\n if (!this.canAwait) {\n this.raise(this.start, \"Await using cannot appear outside of async function\");\n }\n this.next();\n }\n this.parseVar(init$2, true, usingKind);\n this.finishNode(init$2, \"VariableDeclaration\");\n return this.parseForAfterInit(node, init$2, awaitAt)\n }\n var containsEsc = this.containsEsc;\n var refDestructuringErrors = new DestructuringErrors;\n var initPos = this.start;\n var init = awaitAt > -1\n ? this.parseExprSubscripts(refDestructuringErrors, \"await\")\n : this.parseExpression(true, refDestructuringErrors);\n if (this.type === types$1._in || (isForOf = this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) {\n if (awaitAt > -1) { // implies `ecmaVersion >= 9` (see declaration of awaitAt)\n if (this.type === types$1._in) { this.unexpected(awaitAt); }\n node.await = true;\n } else if (isForOf && this.options.ecmaVersion >= 8) {\n if (init.start === initPos && !containsEsc && init.type === \"Identifier\" && init.name === \"async\") { this.unexpected(); }\n else if (this.options.ecmaVersion >= 9) { node.await = false; }\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\n// Helper method to parse for loop after variable initialization\npp$8.parseForAfterInit = function(node, init, awaitAt) {\n if ((this.type === types$1._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) && init.declarations.length === 1) {\n if (this.type === types$1._in) {\n if ((init.kind === \"using\" || init.kind === \"await using\") && !init.declarations[0].init) {\n this.raise(this.start, \"Using declaration is not allowed in for-in loops\");\n }\n if (this.options.ecmaVersion >= 9 && awaitAt > -1) { this.unexpected(awaitAt); }\n } else if (this.options.ecmaVersion >= 9) { node.await = awaitAt > -1; }\n return this.parseForIn(node, init)\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.allowReturn)\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(SCOPE_SWITCH);\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 && (kind === \"using\" || kind === \"await using\") && this.options.ecmaVersion >= 17 && this.type !== types$1._in && !this.isContextual(\"of\")) {\n this.raise(this.lastTokEnd, (\"Missing initializer in \" + kind + \" declaration\"));\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 = kind === \"using\" || kind === \"await using\"\n ? this.parseIdent()\n : this.parseBindingAtom();\n\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 this.enterScope(SCOPE_CLASS_FIELD_INIT | SCOPE_SUPER);\n field.value = this.parseMaybeAssign();\n this.exitScope();\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$1) {\n if (this.options.ecmaVersion >= 11) {\n if (this.eatContextual(\"as\")) {\n node.exported = this.parseModuleExportName();\n this.checkExport(exports$1, 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 if (this.options.ecmaVersion >= 16)\n { node.attributes = this.parseWithClause(); }\n this.semicolon();\n return this.finishNode(node, \"ExportAllDeclaration\")\n};\n\npp$8.parseExport = function(node, exports$1) {\n this.next();\n // export * from '...'\n if (this.eat(types$1.star)) {\n return this.parseExportAllDeclaration(node, exports$1)\n }\n if (this.eat(types$1._default)) { // export default ...\n this.checkExport(exports$1, \"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$1, node.declaration.declarations); }\n else\n { this.checkExport(exports$1, node.declaration.id, node.declaration.id.start); }\n node.specifiers = [];\n node.source = null;\n if (this.options.ecmaVersion >= 16)\n { node.attributes = []; }\n } else { // export { x, y as z } [from '...']\n node.declaration = null;\n node.specifiers = this.parseExportSpecifiers(exports$1);\n if (this.eatContextual(\"from\")) {\n if (this.type !== types$1.string) { this.unexpected(); }\n node.source = this.parseExprAtom();\n if (this.options.ecmaVersion >= 16)\n { node.attributes = this.parseWithClause(); }\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 if (this.options.ecmaVersion >= 16)\n { node.attributes = []; }\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$1, name, pos) {\n if (!exports$1) { return }\n if (typeof name !== \"string\")\n { name = name.type === \"Identifier\" ? name.name : name.value; }\n if (hasOwn(exports$1, name))\n { this.raiseRecoverable(pos, \"Duplicate export '\" + name + \"'\"); }\n exports$1[name] = true;\n};\n\npp$8.checkPatternExport = function(exports$1, pat) {\n var type = pat.type;\n if (type === \"Identifier\")\n { this.checkExport(exports$1, 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$1, 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$1, elt); }\n } }\n else if (type === \"Property\")\n { this.checkPatternExport(exports$1, pat.value); }\n else if (type === \"AssignmentPattern\")\n { this.checkPatternExport(exports$1, pat.left); }\n else if (type === \"RestElement\")\n { this.checkPatternExport(exports$1, pat.argument); }\n};\n\npp$8.checkVariableExport = function(exports$1, decls) {\n if (!exports$1) { return }\n for (var i = 0, list = decls; i < list.length; i += 1)\n {\n var decl = list[i];\n\n this.checkPatternExport(exports$1, 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$1) {\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$1,\n node.exported,\n node.exported.start\n );\n\n return this.finishNode(node, \"ExportSpecifier\")\n};\n\npp$8.parseExportSpecifiers = function(exports$1) {\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$1));\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 if (this.options.ecmaVersion >= 16)\n { node.attributes = this.parseWithClause(); }\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.parseWithClause = function() {\n var nodes = [];\n if (!this.eat(types$1._with)) {\n return nodes\n }\n this.expect(types$1.braceL);\n var attributeKeys = {};\n var first = true;\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 var attr = this.parseImportAttribute();\n var keyName = attr.key.type === \"Identifier\" ? attr.key.name : attr.key.value;\n if (hasOwn(attributeKeys, keyName))\n { this.raiseRecoverable(attr.key.start, \"Duplicate attribute key '\" + keyName + \"'\"); }\n attributeKeys[keyName] = true;\n nodes.push(attr);\n }\n return nodes\n};\n\npp$8.parseImportAttribute = function() {\n var node = this.startNode();\n node.key = this.type === types$1.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== \"never\");\n this.expect(types$1.colon);\n if (this.type !== types$1.string) {\n this.unexpected();\n }\n node.value = this.parseExprAtom();\n return this.finishNode(node, \"ImportAttribute\")\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 this$1$1 = this;\n\n return this.catchStackOverflow(function () {\n var startPos = this$1$1.start, startLoc = this$1$1.startLoc;\n var expr = this$1$1.parseMaybeAssign(forInit, refDestructuringErrors);\n if (this$1$1.type === types$1.comma) {\n var node = this$1$1.startNodeAt(startPos, startLoc);\n node.expressions = [expr];\n while (this$1$1.eat(types$1.comma)) { node.expressions.push(this$1$1.parseMaybeAssign(forInit, refDestructuringErrors)); }\n return this$1$1.finishNode(node, \"SequenceExpression\")\n }\n return expr\n })\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 (!(expr.type === \"ArrowFunctionExpression\" && expr.start === startPos) && 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\" && isLocalVariableAccess(node.argument))\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 && !(expr.type === \"ArrowFunctionExpression\" && expr.start === startPos) && 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 isLocalVariableAccess(node) {\n return (\n node.type === \"Identifier\" ||\n node.type === \"ParenthesizedExpression\" && isLocalVariableAccess(node.expression)\n )\n}\n\nfunction isPrivateFieldAccess(node) {\n return (\n node.type === \"MemberExpression\" && node.property.type === \"PrivateIdentifier\" ||\n node.type === \"ChainExpression\" && isPrivateFieldAccess(node.expression) ||\n node.type === \"ParenthesizedExpression\" && 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 if (this.options.ecmaVersion >= 16) {\n if (!this.eat(types$1.parenR)) {\n this.expect(types$1.comma);\n if (!this.afterTrailingComma(types$1.parenR)) {\n node.options = this.parseMaybeAssign();\n if (!this.eat(types$1.parenR)) {\n this.expect(types$1.comma);\n if (!this.afterTrailingComma(types$1.parenR)) {\n this.unexpected();\n }\n }\n } else {\n node.options = null;\n }\n } else {\n node.options = null;\n }\n } else {\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\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)\n { node.bigint = node.value != null ? node.value.toString() : 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 (node.callee.type === \"Super\")\n { this.raiseRecoverable(startPos, \"Invalid use of 'super'\"); }\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.replace(/\\r\\n?/g, \"\\n\"),\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 var kind = prop.key.name;\n this.parsePropertyName(prop);\n prop.value = this.parseMethod(false);\n prop.kind = kind;\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.method = true;\n prop.value = this.parseMethod(isGenerator, isAsync);\n prop.kind = \"init\";\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 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.kind = \"init\";\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().flags & SCOPE_VAR) && 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 if (this.sourceFile) {\n message += \" in \" + this.sourceFile;\n }\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};\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 | SCOPE_CLASS_FIELD_INIT | SCOPE_CLASS_STATIC_BLOCK)) { 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_CLASS_FIELD_INIT | SCOPE_CLASS_STATIC_BLOCK) &&\n !(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 was generated by \"bin/generate-unicode-script-values.js\". Do not modify manually!\nvar scriptValuesAddedInUnicode = \"Berf Beria_Erfe Gara Garay Gukh Gurung_Khema Hrkt Katakana_Or_Hiragana Kawi Kirat_Rai Krai Nag_Mundari Nagm Ol_Onal Onao Sidetic Sidt Sunu Sunuwar Tai_Yo Tayo Todhri Todr Tolong_Siki Tols Tulu_Tigalari Tutg Unknown Zzzz\";\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 + \" \" + scriptValuesAddedInUnicode;\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\n// Track disjunction structure to determine whether a duplicate\n// capture group name is allowed because it is in a separate branch.\nvar BranchID = function BranchID(parent, base) {\n // Parent disjunction branch\n this.parent = parent;\n // Identifies this set of sibling branches\n this.base = base || this;\n};\n\nBranchID.prototype.separatedFrom = function separatedFrom (alt) {\n // A branch is separate from another branch if they or any of\n // their parents are siblings in a given disjunction\n for (var self = this; self; self = self.parent) {\n for (var other = alt; other; other = other.parent) {\n if (self.base === other.base && self !== other) { return true }\n }\n }\n return false\n};\n\nBranchID.prototype.sibling = function sibling () {\n return new BranchID(this.parent, this.base)\n};\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 = Object.create(null);\n this.backReferenceNames = [];\n this.branchID = null;\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\nfunction hasProp(obj) {\n for (var _ in obj) { return true }\n return false\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 && hasProp(state.groupNames)) {\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 = Object.create(null);\n state.backReferenceNames.length = 0;\n state.branchID = null;\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[name]) {\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 var trackDisjunction = this.options.ecmaVersion >= 16;\n if (trackDisjunction) { state.branchID = new BranchID(state.branchID, null); }\n this.regexp_alternative(state);\n while (state.eat(0x7C /* | */)) {\n if (trackDisjunction) { state.branchID = state.branchID.sibling(); }\n this.regexp_alternative(state);\n }\n if (trackDisjunction) { state.branchID = state.branchID.parent; }\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// 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 /* ? */)) {\n if (this.options.ecmaVersion >= 16) {\n var addModifiers = this.regexp_eatModifiers(state);\n var hasHyphen = state.eat(0x2D /* - */);\n if (addModifiers || hasHyphen) {\n for (var i = 0; i < addModifiers.length; i++) {\n var modifier = addModifiers.charAt(i);\n if (addModifiers.indexOf(modifier, i + 1) > -1) {\n state.raise(\"Duplicate regular expression modifiers\");\n }\n }\n if (hasHyphen) {\n var removeModifiers = this.regexp_eatModifiers(state);\n if (!addModifiers && !removeModifiers && state.current() === 0x3A /* : */) {\n state.raise(\"Invalid regular expression modifiers\");\n }\n for (var i$1 = 0; i$1 < removeModifiers.length; i$1++) {\n var modifier$1 = removeModifiers.charAt(i$1);\n if (\n removeModifiers.indexOf(modifier$1, i$1 + 1) > -1 ||\n addModifiers.indexOf(modifier$1) > -1\n ) {\n state.raise(\"Duplicate regular expression modifiers\");\n }\n }\n }\n }\n }\n if (state.eat(0x3A /* : */)) {\n this.regexp_disjunction(state);\n if (state.eat(0x29 /* ) */)) {\n return true\n }\n state.raise(\"Unterminated group\");\n }\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// RegularExpressionModifiers ::\n// [empty]\n// RegularExpressionModifiers RegularExpressionModifier\npp$1.regexp_eatModifiers = function(state) {\n var modifiers = \"\";\n var ch = 0;\n while ((ch = state.current()) !== -1 && isRegularExpressionModifier(ch)) {\n modifiers += codePointToString(ch);\n state.advance();\n }\n return modifiers\n};\n// RegularExpressionModifier :: one of\n// `i` `m` `s`\nfunction isRegularExpressionModifier(ch) {\n return ch === 0x69 /* i */ || ch === 0x6d /* m */ || ch === 0x73 /* s */\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)) { state.raise(\"Invalid group\"); }\n var trackDisjunction = this.options.ecmaVersion >= 16;\n var known = state.groupNames[state.lastStringValue];\n if (known) {\n if (trackDisjunction) {\n for (var i = 0, list = known; i < list.length; i += 1) {\n var altID = list[i];\n\n if (!altID.separatedFrom(state.branchID))\n { state.raise(\"Duplicate capture group name\"); }\n }\n } else {\n state.raise(\"Duplicate capture group name\");\n }\n }\n if (trackDisjunction) {\n (known || (state.groupNames[state.lastStringValue] = [])).push(state.branchID);\n } else {\n state.groupNames[state.lastStringValue] = true;\n }\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.fullCharCodeAt = function(pos) {\n var code = this.input.charCodeAt(pos);\n if (code <= 0xd7ff || code >= 0xdc00) { return code }\n var next = this.input.charCodeAt(pos + 1);\n return next <= 0xdbff || next >= 0xe000 ? code : (code << 10) + next - 0x35fdc00\n};\n\npp.fullCharCodeAtPos = function() {\n return this.fullCharCodeAt(this.pos)\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] !== \"{\") { break }\n // fall through\n case \"`\":\n return this.finishToken(types$1.invalidTemplate, this.input.slice(this.start, this.pos))\n\n case \"\\r\":\n if (this.input[this.pos + 1] === \"\\n\") { ++this.pos; }\n // fall through\n case \"\\n\": case \"\\u2028\": case \"\\u2029\":\n ++this.curLine;\n this.lineStart = this.pos + 1;\n break\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 if (this.options.locations) { this.lineStart = this.pos; ++this.curLine; }\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\nvar version = \"8.18.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 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 const constants = {\n undefined: 'void(0)',\n Infinity: 'Number.POSITIVE_INFINITY',\n NaN: 'Number.NaN',\n E: 'Math.E',\n LN2: 'Math.LN2',\n LN10: 'Math.LN10',\n LOG2E: 'Math.LOG2E',\n LOG10E: 'Math.LOG10E',\n PI: 'Math.PI',\n SQRT1_2: 'Math.SQRT1_2',\n SQRT2: 'Math.SQRT2'\n};\n","/**\n * @param {*} value\n * @returns {value is number}\n */\nexport function isNumber(value) {\n return typeof value === 'number';\n}\n","import { parse } from 'acorn';\nimport {\n ArrayPattern,\n Constant,\n Function,\n Identifier,\n Literal,\n MemberExpression,\n ObjectPattern,\n Op,\n Parameter,\n Property\n} from './ast/constants.js';\nimport { is, isFunctionExpression } from './ast/util.js';\nimport { walk } from './ast/walk.js';\nimport { constants } from './constants.js';\nimport { rewrite } from './rewrite.js';\nimport { ROW_OBJECT, rowObjectExpression } from './row-object.js';\nimport {\n getAggregate, getWindow,\n hasAggregate, hasFunction, hasWindow\n} from '../op/index.js';\n\nimport { error } from '../util/error.js';\nimport { isArray } from '../util/is-array.js';\nimport { isNumber } from '../util/is-number.js';\nimport { toString } from '../util/to-string.js';\n\nconst PARSER_OPT = { ecmaVersion: 11 };\nconst DEFAULT_PARAM_ID = '$';\nconst DEFAULT_TUPLE_ID = 'd';\nconst DEFAULT_TUPLE_ID1 = 'd1';\nconst DEFAULT_TUPLE_ID2 = 'd2';\n\nconst NO = msg => (node, ctx) => ctx.error(node, msg + ' not allowed');\nconst ERROR_AGGREGATE = NO('Aggregate function');\nconst ERROR_WINDOW = NO('Window function');\nconst ERROR_ARGUMENT = 'Invalid argument';\nconst ERROR_COLUMN = 'Invalid column reference';\nconst ERROR_AGGRONLY = ERROR_COLUMN + ' (must be input to an aggregate function)';\nconst ERROR_FUNCTION = 'Invalid function call';\nconst ERROR_MEMBER = 'Invalid member expression';\nconst ERROR_OP_PARAMETER = 'Invalid operator parameter';\nconst ERROR_PARAM = 'Invalid param reference';\nconst ERROR_VARIABLE = 'Invalid variable reference';\nconst ERROR_VARIABLE_OP = 'Variable not accessible in operator call';\nconst ERROR_DECLARATION = 'Unsupported variable declaration';\nconst ERROR_DESTRUCTURE = 'Unsupported destructuring pattern';\nconst ERROR_CLOSURE = 'Table expressions do not support closures';\nconst ERROR_ESCAPE = 'Use aq.escape(fn) to use a function as-is (including closures)';\nconst ERROR_USE_PARAMS = 'use table.params({ name: value }) to define dynamic parameters';\nconst ERROR_ADD_FUNCTION = 'use aq.addFunction(name, fn) to add new op functions';\nconst ERROR_VARIABLE_NOTE = `\\nNote: ${ERROR_CLOSURE}. ${ERROR_ESCAPE}, or ${ERROR_USE_PARAMS}.`;\nconst ERROR_FUNCTION_NOTE = `\\nNote: ${ERROR_CLOSURE}. ${ERROR_ESCAPE}, or ${ERROR_ADD_FUNCTION}.`;\nconst ERROR_ROW_OBJECT = `The ${ROW_OBJECT} method is not valid in multi-table expressions.`;\n\nexport function parseExpression(ctx, spec) {\n const ast = parseAST(spec);\n let node = ctx.root = ast;\n ctx.spec = spec;\n ctx.tuple = null;\n ctx.tuple1 = null;\n ctx.tuple2 = null;\n ctx.$param = null;\n ctx.$op = 0;\n ctx.scope = new Set();\n ctx.paramsRef = new Map();\n ctx.columnRef = new Map();\n\n // parse input column parameters\n // if no function def, assume default tuple identifiers\n if (isFunctionExpression(node)) {\n parseFunction(node, ctx);\n node = node.body;\n } else if (ctx.join) {\n ctx.scope.add(ctx.tuple1 = DEFAULT_TUPLE_ID1);\n ctx.scope.add(ctx.tuple2 = DEFAULT_TUPLE_ID2);\n ctx.scope.add(ctx.$param = DEFAULT_PARAM_ID);\n } else {\n ctx.scope.add(ctx.tuple = DEFAULT_TUPLE_ID);\n ctx.scope.add(ctx.$param = DEFAULT_PARAM_ID);\n }\n\n // rewrite column references & function calls\n walk(node, ctx, visitors);\n\n return ctx.root;\n}\n\nfunction parseAST(expr) {\n try {\n const code = expr.field ? fieldRef(expr)\n : isArray(expr) ? toString(expr)\n : expr;\n // @ts-ignore\n return parse(`expr=(${code})`, PARSER_OPT).body[0].expression.right;\n } catch (err) { // eslint-disable-line no-unused-vars\n error(`Expression parse error: ${expr+''}`);\n }\n}\n\nfunction fieldRef(expr) {\n const col = JSON.stringify(expr+'');\n return !(expr.table || 0) ? `d=>d[${col}]` : `(a,b)=>b[${col}]`;\n}\n\nconst visitors = {\n FunctionDeclaration: NO('Function definitions'),\n ForStatement: NO('For loops'),\n ForOfStatement: NO('For-of loops'),\n ForInStatement: NO('For-in loops'),\n WhileStatement: NO('While loops'),\n DoWhileStatement: NO('Do-while loops'),\n AwaitExpression: NO('Await expressions'),\n ArrowFunctionExpression: NO('Function definitions'),\n AssignmentExpression: NO('Assignments'),\n FunctionExpression: NO('Function definitions'),\n NewExpression: NO('Use of \"new\"'),\n UpdateExpression: NO('Update expressions'),\n\n VariableDeclarator(node, ctx) {\n handleDeclaration(node.id, ctx);\n },\n Identifier(node, ctx, parent) {\n if (handleIdentifier(node, ctx, parent) && !ctx.scope.has(node.name)) {\n // handle identifier passed responsibility here\n // raise error if identifier not defined in scope\n ctx.error(node, ERROR_VARIABLE, ERROR_VARIABLE_NOTE);\n }\n },\n CallExpression(node, ctx) {\n const name = functionName(node.callee);\n const def = getAggregate(name) || getWindow(name);\n\n // parse operator and rewrite invocation\n if (def) {\n if ((ctx.join || ctx.aggregate === false) && hasAggregate(name)) {\n ERROR_AGGREGATE(node, ctx);\n }\n if ((ctx.join || ctx.window === false) && hasWindow(name)) {\n ERROR_WINDOW(node, ctx);\n }\n\n ctx.$op = 1;\n if (ctx.ast) {\n updateFunctionNode(node, name, ctx);\n node.arguments.forEach(arg => walk(arg, ctx, opVisitors));\n } else {\n const op = ctx.op(parseOperator(ctx, def, name, node.arguments));\n Object.assign(node, { type: Op, name: op.id });\n }\n ctx.$op = 0;\n return false;\n } else if (hasFunction(name)) {\n updateFunctionNode(node, name, ctx);\n } else {\n ctx.error(node, ERROR_FUNCTION, ERROR_FUNCTION_NOTE);\n }\n },\n MemberExpression(node, ctx, parent) {\n const { object, property } = node;\n\n // bail if left head is not an identifier\n // in this case we will recurse and handle it later\n if (!is(Identifier, object)) return;\n const { name } = object;\n\n // allow use of Math prefix to access constant values\n if (isMath(node) && is(Identifier, property)\n && Object.hasOwn(constants, property.name)) {\n updateConstantNode(node, property.name);\n return;\n }\n\n const index = name === ctx.tuple ? 0\n : name === ctx.tuple1 ? 1\n : name === ctx.tuple2 ? 2\n : -1;\n\n if (index >= 0) {\n // replace member expression with column ref\n return spliceMember(node, index, ctx, checkColumn, parent);\n } else if (name === ctx.$param) {\n // replace member expression with param ref\n return spliceMember(node, index, ctx, checkParam);\n } else if (ctx.paramsRef.has(name)) {\n updateParameterNode(node, ctx.paramsRef.get(name));\n } else if (ctx.columnRef.has(name)) {\n updateColumnNode(object, name, ctx, node);\n } else if (Object.hasOwn(ctx.params, name)) {\n updateParameterNode(object, name);\n }\n }\n};\n\nfunction spliceMember(node, index, ctx, check, parent) {\n const { property, computed } = node;\n let name;\n\n if (!computed) {\n name = property.name;\n } else if (is(Literal, property)) {\n name = property.value;\n } else try {\n // visit subtree to ensure nodes are rewritten as needed\n // then compile the code to compute the property name\n walk(property, ctx, visitors, node);\n name = ctx.param(property);\n } catch (e) { // eslint-disable-line no-unused-vars\n ctx.error(node, ERROR_MEMBER);\n }\n\n check(node, name, index, ctx, parent);\n return false;\n}\n\nconst opVisitors = {\n ...visitors,\n VariableDeclarator: NO('Variable declaration in operator call'),\n Identifier(node, ctx, parent) {\n if (handleIdentifier(node, ctx, parent)) {\n ctx.error(node, ERROR_VARIABLE_OP);\n }\n },\n CallExpression(node, ctx) {\n const name = functionName(node.callee);\n\n // rewrite if built-in function\n if (hasFunction(name)) {\n updateFunctionNode(node, name, ctx);\n } else {\n ctx.error(node, ERROR_FUNCTION, ERROR_FUNCTION_NOTE);\n }\n }\n};\n\nfunction parseFunction(node, ctx) {\n if (node.generator) NO('Generator functions')(node, ctx);\n if (node.async) NO('Async functions')(node, ctx);\n\n const { params } = node;\n const len = params.length;\n const setc = index => (name, key) => ctx.columnRef.set(name, [key, index]);\n const setp = (name, key) => ctx.paramsRef.set(name, key);\n\n if (!len) {\n // do nothing\n } else if (ctx.join) {\n parseRef(ctx, params[0], 'tuple1', setc(1));\n if (len > 1) parseRef(ctx, params[1], 'tuple2', setc(2));\n if (len > 2) parseRef(ctx, params[2], '$param', setp);\n } else {\n parseRef(ctx, params[0], 'tuple', setc(0));\n if (len > 1) parseRef(ctx, params[1], '$param', setp);\n }\n\n ctx.root = node.body;\n}\n\nfunction parseRef(ctx, node, refName, alias) {\n if (is(Identifier, node)) {\n ctx.scope.add(node.name);\n ctx[refName] = node.name;\n } else if (is(ObjectPattern, node)) {\n node.properties.forEach(p => {\n const key = is(Identifier, p.key) ? p.key.name\n : is(Literal, p.key) ? p.key.value\n : ctx.error(p, ERROR_ARGUMENT);\n if (!is(Identifier, p.value)) {\n ctx.error(p.value, ERROR_DESTRUCTURE);\n }\n alias(p.value.name, key);\n });\n }\n}\n\nfunction parseOperator(ctx, def, name, args) {\n const fields = [];\n const params = [];\n const idxFields = def.param[0] || 0;\n const idxParams = idxFields + (def.param[1] || 0);\n\n args.forEach((arg, index) => {\n if (index < idxFields) {\n walk(arg, ctx, opVisitors);\n fields.push(ctx.field(arg));\n } else if (index < idxParams) {\n walk(arg, ctx, opVisitors);\n params.push(ctx.param(arg));\n } else {\n ctx.error(arg, ERROR_OP_PARAMETER);\n }\n });\n\n return { name, fields, params, ...(ctx.spec.window || {}) };\n}\n\nfunction functionName(node) {\n return is(Identifier, node) ? node.name\n : !is(MemberExpression, node) ? null\n : isMath(node) ? rewriteMath(node.property.name)\n : node.property.name;\n}\n\nfunction isMath(node) {\n return is(Identifier, node.object) && node.object.name === 'Math';\n}\n\nfunction rewriteMath(name) {\n return name === 'max' ? 'greatest'\n : name === 'min' ? 'least'\n : name;\n}\n\nfunction handleIdentifier(node, ctx, parent) {\n const { name } = node;\n\n if (is(MemberExpression, parent) && parent.property === node) {\n // do nothing: check head node, not nested properties\n } else if (is(Property, parent) && parent.key === node) {\n // do nothing: identifiers allowed in object expressions\n } else if (ctx.paramsRef.has(name)) {\n updateParameterNode(node, ctx.paramsRef.get(name));\n } else if (ctx.columnRef.has(name)) {\n updateColumnNode(node, name, ctx, parent);\n } else if (Object.hasOwn(ctx.params, name)) {\n updateParameterNode(node, name);\n } else if (Object.hasOwn(constants, name)) {\n updateConstantNode(node, name);\n } else {\n return true;\n }\n}\n\nfunction checkColumn(node, name, index, ctx, parent) {\n // check column existence if we have a backing table\n const table = index === 0 ? ctx.table\n : index > 0 ? ctx.join[index - 1]\n : null;\n const col = table && table.column(name);\n if (table && !col) {\n ctx.error(node, ERROR_COLUMN);\n }\n\n // check if column reference is valid in current context\n if (ctx.aggronly && !ctx.$op) {\n ctx.error(node, ERROR_AGGRONLY);\n }\n\n // rewrite ast node as a column access\n rewrite(node, name, index, col, parent);\n}\n\nfunction updateColumnNode(node, key, ctx, parent) {\n const [name, index] = ctx.columnRef.get(key);\n checkColumn(node, name, index, ctx, parent);\n}\n\nfunction checkParam(node, name, index, ctx) {\n if (ctx.params && !Object.hasOwn(ctx.params, name)) {\n ctx.error(node, ERROR_PARAM);\n }\n updateParameterNode(node, name);\n}\n\nfunction updateParameterNode(node, name) {\n node.type = Parameter;\n node.name = name;\n}\n\nfunction updateConstantNode(node, name) {\n node.type = Constant;\n node.name = name;\n node.raw = constants[name];\n}\n\nfunction updateFunctionNode(node, name, ctx) {\n if (name === ROW_OBJECT) {\n const t = ctx.table;\n if (!t) ctx.error(node, ERROR_ROW_OBJECT);\n rowObjectExpression(node, t,\n node.arguments.length\n ? node.arguments.map(node => {\n const col = ctx.param(node);\n const name = isNumber(col) ? t.columnName(col) : col;\n if (!t.column(name)) ctx.error(node, ERROR_COLUMN);\n return name;\n })\n : t.columnNames()\n );\n } else {\n node.callee = { type: Function, name };\n }\n}\n\nfunction handleDeclaration(node, ctx) {\n if (is(Identifier, node)) {\n ctx.scope.add(node.name);\n } else if (is(ArrayPattern, node)) {\n node.elements.forEach(elm => handleDeclaration(elm, ctx));\n } else if (is(ObjectPattern, node)) {\n node.properties.forEach(prop => handleDeclaration(prop.value, ctx));\n } else {\n ctx.error(node.id, ERROR_DECLARATION);\n }\n}\n","export function bisector(compare) {\n return {\n left(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n const mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n const mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n","import { ascending } from '../../util/ascending.js';\nimport { bisector } from '../../util/bisector.js';\nimport { concat } from '../../util/concat.js';\nimport { unroll } from '../../util/unroll.js';\n\nconst bisect = bisector(ascending);\n\nexport function windowState(data, frame, adjust, ops, aggrs) {\n let rows, peer, cells, result, key;\n const isPeer = index => peer[index - 1] === peer[index];\n const numOps = ops.length;\n const numAgg = aggrs.length;\n\n const evaluate = ops.length\n ? unroll(\n ['w', 'r', 'k'],\n '{' + concat(ops, (_, i) => `r[_${i}.id][k]=_${i}.value(w,_${i}.get);`) + '}',\n ops\n )\n : () => {};\n\n const w = {\n i0: 0,\n i1: 0,\n index: 0,\n size: 0,\n peer: isPeer,\n\n init(partition, peers, results, group) {\n w.index = w.i0 = w.i1 = 0;\n w.size = peers.length;\n rows = partition;\n peer = peers;\n result = results;\n key = group;\n\n // initialize aggregates\n cells = aggrs ? aggrs.map(aggr => aggr.init()) : null;\n\n // initialize window ops\n for (let i = 0; i < numOps; ++i) {\n ops[i].init();\n }\n\n return w;\n },\n\n value(index, get) {\n return get(rows[index], data);\n },\n\n step(idx) {\n const [f0, f1] = frame;\n const n = w.size;\n const p0 = w.i0;\n const p1 = w.i1;\n\n w.i0 = f0 != null ? Math.max(0, idx - Math.abs(f0)) : 0;\n w.i1 = f1 != null ? Math.min(n, idx + Math.abs(f1) + 1) : n;\n w.index = idx;\n\n if (adjust) {\n if (w.i0 > 0 && isPeer(w.i0)) {\n w.i0 = bisect.left(peer, peer[w.i0]);\n }\n if (w.i1 < n && isPeer(w.i1)) {\n w.i1 = bisect.right(peer, peer[w.i1 - 1]);\n }\n }\n\n // evaluate aggregates\n for (let i = 0; i < numAgg; ++i) {\n const aggr = aggrs[i];\n const cell = cells[i];\n for (let j = p0; j < w.i0; ++j) {\n aggr.rem(cell, rows[j], data);\n }\n for (let j = p1; j < w.i1; ++j) {\n aggr.add(cell, rows[j], data);\n }\n aggr.write(cell, result, key);\n }\n\n // evaluate window ops\n evaluate(w, result, key);\n\n return result;\n }\n };\n\n return w;\n}\n","import { aggregateFunctions } from './aggregate-functions.js';\nimport { windowFunctions } from './window-functions.js';\nimport { functions } from './functions/index.js';\nimport { op, opApi } from './op-api.js';\nimport { ROW_OBJECT } from '../expression/row-object.js';\nimport { error } from '../util/error.js';\nimport { toString } from '../util/to-string.js';\n\nconst onIllegal = (name, type) =>\n error(`Illegal ${type} name: ${toString(name)}`);\n\nconst onDefined = (name, type) =>\n error(`The ${type} ${toString(name)} is already defined. Use override option?`);\n\nconst onReserve = (name, type) =>\n error(`The ${type} name ${toString(name)} is reserved and can not be overridden.`);\n\nfunction check(name, options, obj = opApi, type = 'function') {\n if (!name) onIllegal(name, type);\n if (!options.override && Object.hasOwn(obj, name)) onDefined(name, type);\n}\n\nfunction verifyFunction(name, def, object, options) {\n return object[name] === def || check(name, options);\n}\n\n/**\n * Register an aggregate or window operation.\n * @param {string} name The name of the operation\n * @param {AggregateDef|WindowDef} def The operation definition.\n * @param {object} object The registry object to add the definition to.\n * @param {RegisterOptions} [options] Registration options.\n */\nfunction addOp(name, def, object, options = {}) {\n if (verifyFunction(name, def, object, options)) return;\n const [nf = 0, np = 0] = def.param; // num fields, num params\n object[name] = def;\n opApi[name] = (...params) => op(\n name,\n params.slice(0, nf),\n params.slice(nf, nf + np)\n );\n}\n\n/**\n * Register a custom aggregate function.\n * @param {string} name The name to use for the aggregate function.\n * @param {AggregateDef} def The aggregate operator definition.\n * @param {RegisterOptions} [options] Function registration options.\n * @throws If a function with the same name is already registered and\n * the override option is not specified.\n */\nexport function addAggregateFunction(name, def, options) {\n addOp(name, def, aggregateFunctions, options);\n}\n\n/**\n * Register a custom window function.\n * @param {string} name The name to use for the window function.\n * @param {WindowDef} def The window operator definition.\n * @param {RegisterOptions} [options] Function registration options.\n * @throws If a function with the same name is already registered and\n * the override option is not specified.\n */\nexport function addWindowFunction(name, def, options) {\n addOp(name, def, windowFunctions, options);\n}\n\n/**\n * Register a function for use within table expressions.\n * If only a single argument is provided, it will be assumed to be a\n * function and the system will try to extract its name.\n * @param {string} name The name to use for the function.\n * @param {Function} fn A standard JavaScript function.\n * @param {RegisterOptions} [options] Function registration options.\n * @throws If a function with the same name is already registered and\n * the override option is not specified, or if no name is provided\n * and the input function is anonymous.\n */\nexport function addFunction(name, fn, options = {}) {\n if (arguments.length === 1) {\n // @ts-ignore\n fn = name;\n name = fn.name;\n if (name === '' || name === 'anonymous') {\n error('Anonymous function provided, please include a name argument.');\n } else if (name === ROW_OBJECT) {\n onReserve(ROW_OBJECT, 'function');\n }\n }\n if (verifyFunction(name, fn, functions, options)) return;\n functions[name] = fn;\n opApi[name] = fn;\n}\n\n/**\n * Aggregate function definition.\n * @typedef {import('./aggregate-functions.js').AggregateDef} AggregateDef\n */\n\n/**\n * Window function definition.\n * @typedef {import('./window-functions.js').WindowDef} WindowDef\n */\n\n/**\n * Options for registering new functions.\n * @typedef {object} RegisterOptions\n * @property {boolean} [override=false] Flag indicating if the added\n * function can override an existing function with the same name.\n */\n","// Simple hash function, from: http://burtleburtle.net/bob/hash/integer.html.\n// Chosen because it doesn't use multiply and achieves full avalanche.\nexports.hashU32 = function hashU32 (a) {\n a = a | 0;\n a = a + 2127912214 + (a << 12) | 0;\n a = a ^ -949894596 ^ a >>> 19;\n a = a + 374761393 + (a << 5) | 0;\n a = a + -744332180 ^ a << 9;\n a = a + -42973499 + (a << 3) | 0;\n return a ^ -1252372727 ^ a >>> 16 | 0;\n};\n\n// Reads a 64-bit little-endian integer from an array.\nexports.readU64 = function readU64 (b, n) {\n var x = 0;\n x |= b[n++] << 0;\n x |= b[n++] << 8;\n x |= b[n++] << 16;\n x |= b[n++] << 24;\n x |= b[n++] << 32;\n x |= b[n++] << 40;\n x |= b[n++] << 48;\n x |= b[n++] << 56;\n return x;\n};\n\n// Reads a 32-bit little-endian integer from an array.\nexports.readU32 = function readU32 (b, n) {\n var x = 0;\n x |= b[n++] << 0;\n x |= b[n++] << 8;\n x |= b[n++] << 16;\n x |= b[n++] << 24;\n return x;\n};\n\n// Writes a 32-bit little-endian integer from an array.\nexports.writeU32 = function writeU32 (b, n, x) {\n b[n++] = (x >> 0) & 0xff;\n b[n++] = (x >> 8) & 0xff;\n b[n++] = (x >> 16) & 0xff;\n b[n++] = (x >> 24) & 0xff;\n};\n\n// Multiplies two numbers using 32-bit integer multiplication.\n// Algorithm from Emscripten.\nexports.imul = function imul (a, b) {\n var ah = a >>> 16;\n var al = a & 65535;\n var bh = b >>> 16;\n var bl = b & 65535;\n\n return al * bl + (ah * bl + al * bh << 16) | 0;\n};\n","// xxh32.js - implementation of xxhash32 in plain JavaScript\nvar util = require('./util.js');\n\n// xxhash32 primes\nvar prime1 = 0x9e3779b1;\nvar prime2 = 0x85ebca77;\nvar prime3 = 0xc2b2ae3d;\nvar prime4 = 0x27d4eb2f;\nvar prime5 = 0x165667b1;\n\n// Utility functions/primitives\n// --\n\nfunction rotl32 (x, r) {\n x = x | 0;\n r = r | 0;\n\n return x >>> (32 - r | 0) | x << r | 0;\n}\n\nfunction rotmul32 (h, r, m) {\n h = h | 0;\n r = r | 0;\n m = m | 0;\n\n return util.imul(h >>> (32 - r | 0) | h << r, m) | 0;\n}\n\nfunction shiftxor32 (h, s) {\n h = h | 0;\n s = s | 0;\n\n return h >>> s ^ h | 0;\n}\n\n// Implementation\n// --\n\nfunction xxhapply (h, src, m0, s, m1) {\n return rotmul32(util.imul(src, m0) + h, s, m1);\n}\n\nfunction xxh1 (h, src, index) {\n return rotmul32((h + util.imul(src[index], prime5)), 11, prime1);\n}\n\nfunction xxh4 (h, src, index) {\n return xxhapply(h, util.readU32(src, index), prime3, 17, prime4);\n}\n\nfunction xxh16 (h, src, index) {\n return [\n xxhapply(h[0], util.readU32(src, index + 0), prime2, 13, prime1),\n xxhapply(h[1], util.readU32(src, index + 4), prime2, 13, prime1),\n xxhapply(h[2], util.readU32(src, index + 8), prime2, 13, prime1),\n xxhapply(h[3], util.readU32(src, index + 12), prime2, 13, prime1)\n ];\n}\n\nfunction xxh32 (seed, src, index, len) {\n var h, l;\n l = len;\n if (len >= 16) {\n h = [\n seed + prime1 + prime2,\n seed + prime2,\n seed,\n seed - prime1\n ];\n\n while (len >= 16) {\n h = xxh16(h, src, index);\n\n index += 16;\n len -= 16;\n }\n\n h = rotl32(h[0], 1) + rotl32(h[1], 7) + rotl32(h[2], 12) + rotl32(h[3], 18) + l;\n } else {\n h = (seed + prime5 + len) >>> 0;\n }\n\n while (len >= 4) {\n h = xxh4(h, src, index);\n\n index += 4;\n len -= 4;\n }\n\n while (len > 0) {\n h = xxh1(h, src, index);\n\n index++;\n len--;\n }\n\n h = shiftxor32(util.imul(shiftxor32(util.imul(shiftxor32(h, 15), prime2), 13), prime3), 16);\n\n return h >>> 0;\n}\n\nexports.hash = xxh32;\n","// lz4.js - An implementation of Lz4 in plain JavaScript.\n//\n// TODO:\n// - Unify header parsing/writing.\n// - Support options (block size, checksums)\n// - Support streams\n// - Better error handling (handle bad offset, etc.)\n// - HC support (better search algorithm)\n// - Tests/benchmarking\n\nvar xxhash = require('./xxh32.js');\nvar util = require('./util.js');\n\n// Constants\n// --\n\n// Compression format parameters/constants.\nvar minMatch = 4;\nvar minLength = 13;\nvar searchLimit = 5;\nvar skipTrigger = 6;\nvar hashSize = 1 << 16;\n\n// Token constants.\nvar mlBits = 4;\nvar mlMask = (1 << mlBits) - 1;\nvar runBits = 4;\nvar runMask = (1 << runBits) - 1;\n\n// Shared buffers\nvar blockBuf = makeBuffer(5 << 20);\nvar hashTable = makeHashTable();\n\n// Frame constants.\nvar magicNum = 0x184D2204;\n\n// Frame descriptor flags.\nvar fdContentChksum = 0x4;\nvar fdContentSize = 0x8;\nvar fdBlockChksum = 0x10;\n// var fdBlockIndep = 0x20;\nvar fdVersion = 0x40;\nvar fdVersionMask = 0xC0;\n\n// Block sizes.\nvar bsUncompressed = 0x80000000;\nvar bsDefault = 7;\nvar bsShift = 4;\nvar bsMask = 7;\nvar bsMap = {\n 4: 0x10000,\n 5: 0x40000,\n 6: 0x100000,\n 7: 0x400000\n};\n\n// Utility functions/primitives\n// --\n\n// Makes our hashtable. On older browsers, may return a plain array.\nfunction makeHashTable () {\n try {\n return new Uint32Array(hashSize);\n } catch (error) {\n var hashTable = new Array(hashSize);\n\n for (var i = 0; i < hashSize; i++) {\n hashTable[i] = 0;\n }\n\n return hashTable;\n }\n}\n\n// Clear hashtable.\nfunction clearHashTable (table) {\n for (var i = 0; i < hashSize; i++) {\n hashTable[i] = 0;\n }\n}\n\n// Makes a byte buffer. On older browsers, may return a plain array.\nfunction makeBuffer (size) {\n try {\n return new Uint8Array(size);\n } catch (error) {\n var buf = new Array(size);\n\n for (var i = 0; i < size; i++) {\n buf[i] = 0;\n }\n\n return buf;\n }\n}\n\nfunction sliceArray (array, start, end) {\n if (typeof array.buffer !== undefined) {\n if (Uint8Array.prototype.slice) {\n return array.slice(start, end);\n } else {\n // Uint8Array#slice polyfill.\n var len = array.length;\n\n // Calculate start.\n start = start | 0;\n start = (start < 0) ? Math.max(len + start, 0) : Math.min(start, len);\n\n // Calculate end.\n end = (end === undefined) ? len : end | 0;\n end = (end < 0) ? Math.max(len + end, 0) : Math.min(end, len);\n\n // Copy into new array.\n var arraySlice = new Uint8Array(end - start);\n for (var i = start, n = 0; i < end;) {\n arraySlice[n++] = array[i++];\n }\n\n return arraySlice;\n }\n } else {\n // Assume normal array.\n return array.slice(start, end);\n }\n}\n\n// Implementation\n// --\n\n// Calculates an upper bound for lz4 compression.\nexports.compressBound = function compressBound (n) {\n return (n + (n / 255) + 16) | 0;\n};\n\n// Calculates an upper bound for lz4 decompression, by reading the data.\nexports.decompressBound = function decompressBound (src) {\n var sIndex = 0;\n\n // Read magic number\n if (util.readU32(src, sIndex) !== magicNum) {\n throw new Error('invalid magic number');\n }\n\n sIndex += 4;\n\n // Read descriptor\n var descriptor = src[sIndex++];\n\n // Check version\n if ((descriptor & fdVersionMask) !== fdVersion) {\n throw new Error('incompatible descriptor version ' + (descriptor & fdVersionMask));\n }\n\n // Read flags\n var useBlockSum = (descriptor & fdBlockChksum) !== 0;\n var useContentSize = (descriptor & fdContentSize) !== 0;\n\n // Read block size\n var bsIdx = (src[sIndex++] >> bsShift) & bsMask;\n\n if (bsMap[bsIdx] === undefined) {\n throw new Error('invalid block size ' + bsIdx);\n }\n\n var maxBlockSize = bsMap[bsIdx];\n\n // Get content size\n if (useContentSize) {\n return util.readU64(src, sIndex);\n }\n\n // Checksum\n sIndex++;\n\n // Read blocks.\n var maxSize = 0;\n while (true) {\n var blockSize = util.readU32(src, sIndex);\n sIndex += 4;\n\n if (blockSize & bsUncompressed) {\n blockSize &= ~bsUncompressed;\n maxSize += blockSize;\n } else {\n maxSize += maxBlockSize;\n }\n\n if (blockSize === 0) {\n return maxSize;\n }\n\n if (useBlockSum) {\n sIndex += 4;\n }\n\n sIndex += blockSize;\n }\n};\n\n// Creates a buffer of a given byte-size, falling back to plain arrays.\nexports.makeBuffer = makeBuffer;\n\n// Decompresses a block of Lz4.\nexports.decompressBlock = function decompressBlock (src, dst, sIndex, sLength, dIndex) {\n var mLength, mOffset, sEnd, n, i;\n\n // Setup initial state.\n sEnd = sIndex + sLength;\n\n // Consume entire input block.\n while (sIndex < sEnd) {\n var token = src[sIndex++];\n\n // Copy literals.\n var literalCount = (token >> 4);\n if (literalCount > 0) {\n // Parse length.\n if (literalCount === 0xf) {\n while (true) {\n literalCount += src[sIndex];\n if (src[sIndex++] !== 0xff) {\n break;\n }\n }\n }\n\n // Copy literals\n for (n = sIndex + literalCount; sIndex < n;) {\n dst[dIndex++] = src[sIndex++];\n }\n }\n\n if (sIndex >= sEnd) {\n break;\n }\n\n // Copy match.\n mLength = (token & 0xf);\n\n // Parse offset.\n mOffset = src[sIndex++] | (src[sIndex++] << 8);\n\n // Parse length.\n if (mLength === 0xf) {\n while (true) {\n mLength += src[sIndex];\n if (src[sIndex++] !== 0xff) {\n break;\n }\n }\n }\n\n mLength += minMatch;\n\n // Copy match.\n for (i = dIndex - mOffset, n = i + mLength; i < n;) {\n dst[dIndex++] = dst[i++] | 0;\n }\n }\n\n return dIndex;\n};\n\n// Compresses a block with Lz4.\nexports.compressBlock = function compressBlock (src, dst, sIndex, sLength, hashTable) {\n var mIndex, mAnchor, mLength, mOffset, mStep;\n var literalCount, dIndex, sEnd, n;\n\n // Setup initial state.\n dIndex = 0;\n sEnd = sLength + sIndex;\n mAnchor = sIndex;\n\n // Process only if block is large enough.\n if (sLength >= minLength) {\n var searchMatchCount = (1 << skipTrigger) + 3;\n\n // Consume until last n literals (Lz4 spec limitation.)\n while (sIndex + minMatch < sEnd - searchLimit) {\n var seq = util.readU32(src, sIndex);\n var hash = util.hashU32(seq) >>> 0;\n\n // Crush hash to 16 bits.\n hash = ((hash >> 16) ^ hash) >>> 0 & 0xffff;\n\n // Look for a match in the hashtable. NOTE: remove one; see below.\n mIndex = hashTable[hash] - 1;\n\n // Put pos in hash table. NOTE: add one so that zero = invalid.\n hashTable[hash] = sIndex + 1;\n\n // Determine if there is a match (within range.)\n if (mIndex < 0 || ((sIndex - mIndex) >>> 16) > 0 || util.readU32(src, mIndex) !== seq) {\n mStep = searchMatchCount++ >> skipTrigger;\n sIndex += mStep;\n continue;\n }\n\n searchMatchCount = (1 << skipTrigger) + 3;\n\n // Calculate literal count and offset.\n literalCount = sIndex - mAnchor;\n mOffset = sIndex - mIndex;\n\n // We've already matched one word, so get that out of the way.\n sIndex += minMatch;\n mIndex += minMatch;\n\n // Determine match length.\n // N.B.: mLength does not include minMatch, Lz4 adds it back\n // in decoding.\n mLength = sIndex;\n while (sIndex < sEnd - searchLimit && src[sIndex] === src[mIndex]) {\n sIndex++;\n mIndex++;\n }\n mLength = sIndex - mLength;\n\n // Write token + literal count.\n var token = mLength < mlMask ? mLength : mlMask;\n if (literalCount >= runMask) {\n dst[dIndex++] = (runMask << mlBits) + token;\n for (n = literalCount - runMask; n >= 0xff; n -= 0xff) {\n dst[dIndex++] = 0xff;\n }\n dst[dIndex++] = n;\n } else {\n dst[dIndex++] = (literalCount << mlBits) + token;\n }\n\n // Write literals.\n for (var i = 0; i < literalCount; i++) {\n dst[dIndex++] = src[mAnchor + i];\n }\n\n // Write offset.\n dst[dIndex++] = mOffset;\n dst[dIndex++] = (mOffset >> 8);\n\n // Write match length.\n if (mLength >= mlMask) {\n for (n = mLength - mlMask; n >= 0xff; n -= 0xff) {\n dst[dIndex++] = 0xff;\n }\n dst[dIndex++] = n;\n }\n\n // Move the anchor.\n mAnchor = sIndex;\n }\n }\n\n // Nothing was encoded.\n if (mAnchor === 0) {\n return 0;\n }\n\n // Write remaining literals.\n // Write literal token+count.\n literalCount = sEnd - mAnchor;\n if (literalCount >= runMask) {\n dst[dIndex++] = (runMask << mlBits);\n for (n = literalCount - runMask; n >= 0xff; n -= 0xff) {\n dst[dIndex++] = 0xff;\n }\n dst[dIndex++] = n;\n } else {\n dst[dIndex++] = (literalCount << mlBits);\n }\n\n // Write literals.\n sIndex = mAnchor;\n while (sIndex < sEnd) {\n dst[dIndex++] = src[sIndex++];\n }\n\n return dIndex;\n};\n\n// Decompresses a frame of Lz4 data.\nexports.decompressFrame = function decompressFrame (src, dst) {\n var useBlockSum, useContentSum, useContentSize, descriptor;\n var sIndex = 0;\n var dIndex = 0;\n\n // Read magic number\n if (util.readU32(src, sIndex) !== magicNum) {\n throw new Error('invalid magic number');\n }\n\n sIndex += 4;\n\n // Read descriptor\n descriptor = src[sIndex++];\n\n // Check version\n if ((descriptor & fdVersionMask) !== fdVersion) {\n throw new Error('incompatible descriptor version');\n }\n\n // Read flags\n useBlockSum = (descriptor & fdBlockChksum) !== 0;\n useContentSum = (descriptor & fdContentChksum) !== 0;\n useContentSize = (descriptor & fdContentSize) !== 0;\n\n // Read block size\n var bsIdx = (src[sIndex++] >> bsShift) & bsMask;\n\n if (bsMap[bsIdx] === undefined) {\n throw new Error('invalid block size');\n }\n\n if (useContentSize) {\n // TODO: read content size\n sIndex += 8;\n }\n\n sIndex++;\n\n // Read blocks.\n while (true) {\n var compSize;\n\n compSize = util.readU32(src, sIndex);\n sIndex += 4;\n\n if (compSize === 0) {\n break;\n }\n\n if (useBlockSum) {\n // TODO: read block checksum\n sIndex += 4;\n }\n\n // Check if block is compressed\n if ((compSize & bsUncompressed) !== 0) {\n // Mask off the 'uncompressed' bit\n compSize &= ~bsUncompressed;\n\n // Copy uncompressed data into destination buffer.\n for (var j = 0; j < compSize; j++) {\n dst[dIndex++] = src[sIndex++];\n }\n } else {\n // Decompress into blockBuf\n dIndex = exports.decompressBlock(src, dst, sIndex, compSize, dIndex);\n sIndex += compSize;\n }\n }\n\n if (useContentSum) {\n // TODO: read content checksum\n sIndex += 4;\n }\n\n return dIndex;\n};\n\n// Compresses data to an Lz4 frame.\nexports.compressFrame = function compressFrame (src, dst) {\n var dIndex = 0;\n\n // Write magic number.\n util.writeU32(dst, dIndex, magicNum);\n dIndex += 4;\n\n // Descriptor flags.\n dst[dIndex++] = fdVersion;\n dst[dIndex++] = bsDefault << bsShift;\n\n // Descriptor checksum.\n dst[dIndex] = xxhash.hash(0, dst, 4, dIndex - 4) >> 8;\n dIndex++;\n\n // Write blocks.\n var maxBlockSize = bsMap[bsDefault];\n var remaining = src.length;\n var sIndex = 0;\n\n // Clear the hashtable.\n clearHashTable(hashTable);\n\n // Split input into blocks and write.\n while (remaining > 0) {\n var compSize = 0;\n var blockSize = remaining > maxBlockSize ? maxBlockSize : remaining;\n\n compSize = exports.compressBlock(src, blockBuf, sIndex, blockSize, hashTable);\n\n if (compSize > blockSize || compSize === 0) {\n // Output uncompressed.\n util.writeU32(dst, dIndex, 0x80000000 | blockSize);\n dIndex += 4;\n\n for (var z = sIndex + blockSize; sIndex < z;) {\n dst[dIndex++] = src[sIndex++];\n }\n\n remaining -= blockSize;\n } else {\n // Output compressed.\n util.writeU32(dst, dIndex, compSize);\n dIndex += 4;\n\n for (var j = 0; j < compSize;) {\n dst[dIndex++] = blockBuf[j++];\n }\n\n sIndex += blockSize;\n remaining -= blockSize;\n }\n }\n\n // Write blank end block.\n util.writeU32(dst, dIndex, 0);\n dIndex += 4;\n\n return dIndex;\n};\n\n// Decompresses a buffer containing an Lz4 frame. maxSize is optional; if not\n// provided, a maximum size will be determined by examining the data. The\n// buffer returned will always be perfectly-sized.\nexports.decompress = function decompress (src, maxSize) {\n var dst, size;\n\n if (maxSize === undefined) {\n maxSize = exports.decompressBound(src);\n }\n\n dst = exports.makeBuffer(maxSize);\n size = exports.decompressFrame(src, dst);\n\n if (size !== maxSize) {\n dst = sliceArray(dst, 0, size);\n }\n\n return dst;\n};\n\n// Compresses a buffer to an Lz4 frame. maxSize is optional; if not provided,\n// a buffer will be created based on the theoretical worst output size for a\n// given input size. The buffer returned will always be perfectly-sized.\nexports.compress = function compress (src, maxSize) {\n var dst, size;\n\n if (maxSize === undefined) {\n maxSize = exports.compressBound(src.length);\n }\n\n dst = exports.makeBuffer(maxSize);\n size = exports.compressFrame(src, dst);\n\n if (size !== maxSize) {\n dst = sliceArray(dst, 0, size);\n }\n\n return dst;\n};\n","import { CompressionType, setCompressionCodec } from \"@uwdata/flechette\";\nimport type { Codec } from \"@uwdata/flechette\";\nimport type { ColumnTable } from \"arquero\";\nimport { table as arqueroTable, escape, fromArrow } from \"arquero\";\nimport * as lz4js from \"lz4js\";\n\nexport const decodeArrowBase64 = (base64: string) => {\n // Decode base64 string to Uint8Array\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n\n // Delegate to decodeArrowBytes\n return decodeArrowBytes(bytes);\n};\n\nexport const decodeArrowBytes = (bytes: ArrayBuffer | Uint8Array) => {\n // Register LZ4 codec before first use. Arquero's `fromArrow` calls\n // flechette's `tableFromIPC` internally, which honors this registry —\n // so LZ4-compressed IPC bytes decode directly without a re-encode hop.\n ensureLZ4CodecRegistered();\n\n const input = bytes instanceof Uint8Array ? bytes : new Uint8Array(bytes);\n let table = fromArrow(input);\n\n // Cast columns to appropriate types\n // (Mixed-type columns get converted to strings by Arrow/Pandas)\n table = castColumns(table);\n\n // Eagerly materialize the table to prevent Safari from\n // detaching the underlying ArrayBuffer during navigation.\n // The Arquero table holds lazy references to the Arrow buffers,\n // and Safari's aggressive memory management can detach these buffers\n // when navigating, causing \"Bad value\" errors in LZ4 decompression.\n const columns: Record<string, unknown[]> = {};\n const columnNames = table.columnNames();\n\n // Convert to column-oriented format (arrays) which forces\n // immediate materialization and doesn't hold references to Arrow buffers.\n for (const colName of columnNames) {\n // Get the column as an array - this forces materialization\n // Convert TypedArray to regular array to ensure no buffer references\n const colData = table.array(colName);\n columns[colName] = Array.isArray(colData)\n ? colData\n : Array.from(colData as Iterable<unknown>);\n }\n\n // Recreate the table from the materialized column arrays\n // This ensures the table no longer has any references to detachable buffers\n return arqueroTable(columns);\n};\n\n// Register LZ4 codec (only needs to be done once)\nlet codecRegistered = false;\nfunction ensureLZ4CodecRegistered(): void {\n if (!codecRegistered) {\n const lz4Codec: Codec = {\n encode(data: Uint8Array): Uint8Array {\n return lz4js.compress(data);\n },\n decode(data: Uint8Array): Uint8Array {\n return lz4js.decompress(data);\n },\n };\n setCompressionCodec(CompressionType.LZ4_FRAME, lz4Codec);\n codecRegistered = true;\n }\n}\n\n/**\n * Cast one scan `value` cell to its `value_type`. Mixed-type value columns\n * arrive as text; boolean/number text decodes, anything it can't decode is\n * null, and other types pass through. Also used for resultset rows, which\n * are expanded after the table-level cast.\n */\nexport const castScanValue = (value: unknown, valueType: string): unknown => {\n if (value === null || value === undefined) {\n return null;\n }\n\n if (valueType === \"boolean\") {\n if (typeof value === \"boolean\") {\n return value;\n }\n const strVal = String(value).toLowerCase();\n if (strVal === \"true\") {\n return true;\n }\n if (strVal === \"false\") {\n return false;\n }\n return null;\n } else if (valueType === \"number\") {\n if (typeof value === \"number\") {\n return value;\n }\n const strVal = String(value).trim();\n if (strVal === \"\") {\n return null;\n }\n const num = Number(strVal);\n return isNaN(num) ? null : num;\n } else {\n return value;\n }\n};\n\n// When Arrow/Pandas encounters mixed-type columns (e.g., numbers and nulls),\n// it converts everything to strings for safety. This function restores the\n// original types based on the value_type column (or a known type).\nfunction castColumns(table: ColumnTable): ColumnTable {\n const columnNames = table.columnNames();\n const hasValue =\n columnNames.includes(\"value\") && columnNames.includes(\"value_type\");\n const hasScanRefusal = columnNames.includes(\"scan_error_refusal\");\n\n // If neither column needs casting, return as-is\n if (!hasValue && !hasScanRefusal) {\n return table;\n }\n\n // Build derivation object for all columns that need casting\n const derivations: {\n value?: ReturnType<typeof escape>;\n scan_error_refusal?: ReturnType<typeof escape>;\n } = {};\n\n if (hasValue) {\n derivations.value = escape((d: { value: unknown; value_type: string }) => {\n return castScanValue(d.value, d.value_type);\n });\n }\n\n if (hasScanRefusal) {\n derivations.scan_error_refusal = escape(\n (d: { scan_error_refusal: string }) => {\n if (typeof d.scan_error_refusal === \"string\") {\n return d.scan_error_refusal.toLowerCase() === \"true\";\n }\n\n return !!d.scan_error_refusal;\n }\n );\n }\n\n // Apply all derivations in a single pass\n return table.derive(derivations);\n}\n","/**\n * Branded types for nominal typing in TypeScript.\n *\n * Branded types create distinct types from the same base type,\n * preventing accidental misuse at compile time with zero runtime overhead.\n *\n * @example\n * ```ts\n * type UserId = Brand<number, \"UserId\">;\n * type PostId = Brand<number, \"PostId\">;\n *\n * const makeUserId = make<UserId>();\n * const makePostId = make<PostId>();\n *\n * const userId = makeUserId(42);\n * const postId = makePostId(42);\n * getUser(postId); // ✗ compile error - PostId !== UserId\n * ```\n *\n * @module\n */\n\ndeclare const __brand: unique symbol;\n\n/**\n * Creates a branded type from a base type.\n *\n * The brand exists only at compile time—no runtime overhead.\n *\n * @typeParam Base - The underlying primitive or object type\n * @typeParam Branding - A unique type used to distinguish this brand (often the entity type itself)\n *\n * @example\n * ```ts\n * type UserId = Brand<number, User>;\n * type PostId = Brand<number, Post>;\n * // UserId and PostId are incompatible even though both are numbers\n * ```\n */\nexport type Brand<Base, Branding> = Base & { [__brand]: Branding };\n\n/**\n * Extracts the base type from a branded type.\n *\n * @typeParam B - A branded type\n * @returns The underlying base type without the brand\n *\n * @example\n * ```ts\n * type UserId = Brand<number, User>;\n * type Base = BaseOf<UserId>; // number\n * ```\n */\ntype BaseOf<B extends Brand<unknown, unknown>> = Omit<B, typeof __brand>;\n\n/** A function that converts a base value into a branded value. */\ntype Brander<B extends Brand<unknown, unknown>> = (value: BaseOf<B>) => B;\n\n/**\n * Creates a brander function for a given branded type.\n *\n * @typeParam B - The branded type to produce\n * @returns A function that casts base values to the branded type\n *\n * @example\n * ```ts\n * type UserId = Brand<number, \"UserId\">;\n * const makeUserId = make<UserId>();\n * const id = makeUserId(42);\n * ```\n */\nexport function make<B extends Brand<unknown, unknown>>(): Brander<B> {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- branding is the assertion: the tag exists only in the type system, so there is nothing to check at runtime\n return (value: BaseOf<B>): B => value as B;\n}\n","import { Brand, make } from \"./brand\";\n\n/**\n * AsyncData represents the possible states of some asynchronous operation like\n * a network request to an API. When the request is first made, it's `loading`, but\n * once we get a response, it will either represent the requested `data` or maybe\n * the operation failed due to an `error`.\n *\n * @typeParam T - the data that will be returned\n */\nexport type AsyncData<T> = AsyncDataLoading | AsyncDataNotLoading<T>;\n\n// Brand this to prevent code from making its own instances\nexport type AsyncDataLoading = Brand<\n {\n data?: undefined;\n loading: true;\n error?: undefined;\n },\n \"_please_use_AsyncData.loading_rather_than_your_own_instance_of_this_type_\"\n>;\n\n/**\n * The different states the async data can be in when loading is finished.\n *\n * @typeParam T - the data type that can be returned when error is undefined\n */\nexport type AsyncDataNotLoading<T> =\n | {\n data: T;\n loading: false;\n error?: undefined;\n }\n | {\n data?: undefined;\n loading: false;\n error: Error;\n };\n\ntype AsyncDataMap<Mapping> = { [K in keyof Mapping]: AsyncData<Mapping[K]> };\n/**\n * The `compose` function allows a set of `AsyncData` values to be combined into\n * a single `AsyncData`. The complex type of the function represents a transformation\n * from an argument like this...\n *\n * ```typescript\n * { a: AsyncData<A>, b: AsyncData<B>, c: AsyncData<C> }\n *```\n * ...to a return value like this...\n *```\n * AsyncData<{ a: A, b: B, c: C }>\n *```\n *\n * In practice, this can be used to create hooks that depend on multiple API\n * calls.\n *\n */\nexport function compose<Mapping>(\n hooks: AsyncDataMap<Mapping>\n): AsyncData<Mapping> {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion, @typescript-eslint/consistent-type-assertions -- a mapped type has no empty value to start from; the loop below fills every key of Mapping\n const result = {} as Mapping;\n const errors: Error[] = [];\n let loadingResult = false;\n\n for (const key in hooks) {\n const { loading, error, data } = hooks[key];\n\n if (error) {\n errors.push(error);\n } else if (loading) {\n loadingResult = true;\n } else {\n result[key] = data;\n }\n }\n\n // If any `AsyncData` has an error, we know the entire set of operations will\n // not succeed. Right now we return the first error, but the keys of JS objects\n // don't have a defined order. Potentially in the future, we'll want to represent\n // the entire set of errors somehow, allowing the caller to prioritize the errors\n // as they'd like.\n if (errors[0]) {\n return { loading: false, error: errors[0] };\n }\n\n if (loadingResult) {\n return loading;\n }\n\n return { loading: false, data: result };\n}\n\nexport function map<T, U>(\n asyncData: AsyncData<T>,\n fn: (data: T) => U\n): AsyncData<U> {\n if (asyncData.loading || asyncData.error) {\n return asyncData;\n } else {\n return data(fn(asyncData.data));\n }\n}\n\n/**\n * The `data` function wraps the provided data in an `AsyncData` object, indicating\n * that the data is not loading and there is no error.\n *\n * @template T - The type of the data\n * @param {T} data - The data to wrap\n * @returns {AsyncData<T>} - An `AsyncData` object with `loading` set to `false`\n * and `data` set to the provided data\n */\nexport function data<T>(data: T): AsyncData<T> {\n return { loading: false, data };\n}\n\n/**\n * The `loading` constant is an instance of `AsyncDataLoading` that can be shared\n * to provide identity stability. It represents the state when the data is loading.\n */\nexport const loading: AsyncDataLoading = make<AsyncDataLoading>()({\n loading: true,\n});\n","/**\n * Request options for every fetch the browser issues directly to a log\n * location. That location is data (a link param, a listing entry, a\n * server-supplied direct URL), not the page's own origin: it gets no\n * referrer, no cross-origin credentials, and no redirect to a destination\n * other than the one that was named.\n */\nexport const logFetchInit = Object.freeze({\n credentials: \"same-origin\",\n referrerPolicy: \"no-referrer\",\n redirect: \"error\",\n}) satisfies RequestInit;\n\n/**\n * Fetches a range of bytes from a remote resource and returns it as a `Uint8Array`.\n */\nexport const fetchRange = async (\n url: string,\n start: number,\n end: number\n): Promise<Uint8Array> => {\n const response = await fetch(url, {\n ...logFetchInit,\n headers: { Range: `bytes=${start}-${end}` },\n });\n const arrayBuffer = await response.arrayBuffer();\n return new Uint8Array(arrayBuffer);\n};\n","// Code points that render as nothing (or reorder what follows) and so let\n// text read differently on screen than it is: C0/C1 controls (tab and newline\n// are handled separately), zero-width and joiner characters, bidi\n// embeddings/overrides/isolates, invisible fillers, and the tag /\n// variation-selector-supplement blocks used to smuggle hidden text.\n// U+FE00–FE0F are left alone: emoji presentation depends on them. ZWNJ and\n// ZWJ are kept where they do visible work (see isPurposefulJoiner).\nconst HIDDEN_RANGES: ReadonlyArray<readonly [number, number]> = [\n [0x0000, 0x001f],\n [0x007f, 0x009f],\n [0x00ad, 0x00ad],\n [0x034f, 0x034f],\n [0x061c, 0x061c],\n [0x115f, 0x1160],\n [0x17b4, 0x17b5],\n [0x180b, 0x180f],\n [0x200b, 0x200f],\n [0x2028, 0x202e],\n [0x2060, 0x206f],\n [0x3164, 0x3164],\n [0xfeff, 0xfeff],\n [0xffa0, 0xffa0],\n [0xfff9, 0xfffb],\n [0x1d173, 0x1d17a],\n [0xe0000, 0xe007f],\n [0xe0100, 0xe01ef],\n];\n\nconst ZWNJ = 0x200c;\nconst ZWJ = 0x200d;\nconst VARIATION_SELECTOR_16 = 0xfe0f;\nconst kEmoji = /^[\\p{Extended_Pictographic}\\p{Emoji_Modifier}]$/u;\n// Scripts whose shaping or conjuncts use ZWNJ/ZWJ (Persian word parts,\n// Indic half forms, ...). Between letters of other scripts a joiner is\n// invisible and only hides content.\nconst kJoiningScript =\n /^[\\p{Script=Arabic}\\p{Script=Syriac}\\p{Script=Nko}\\p{Script=Mongolian}\\p{Script=Devanagari}\\p{Script=Bengali}\\p{Script=Gurmukhi}\\p{Script=Gujarati}\\p{Script=Oriya}\\p{Script=Tamil}\\p{Script=Telugu}\\p{Script=Kannada}\\p{Script=Malayalam}\\p{Script=Sinhala}\\p{Script=Myanmar}\\p{Script=Khmer}]$/u;\n\nconst isEmoji = (codePoint: number): boolean =>\n kEmoji.test(String.fromCodePoint(codePoint));\n\nconst isJoiningScript = (codePoint: number): boolean =>\n kJoiningScript.test(String.fromCodePoint(codePoint));\n\n/** A joiner inside an emoji ZWJ sequence or between letters of a joining\n * script renders (it shapes what's around it), so it hides nothing. */\nconst isPurposefulJoiner = (\n codePoint: number,\n prev: number | undefined,\n next: number | undefined\n): boolean => {\n if (prev === undefined || next === undefined) return false;\n if (\n codePoint === ZWJ &&\n (isEmoji(prev) || prev === VARIATION_SELECTOR_16) &&\n isEmoji(next)\n ) {\n return true;\n }\n return isJoiningScript(prev) && isJoiningScript(next);\n};\n\nconst LINE_FEED = 0x0a;\nconst CARRIAGE_RETURN = 0x0d;\n\nconst hex = (codePoint: number): string => codePoint.toString(16);\n\n// One class of every candidate (tab and newline excluded), so ordinary text\n// is scanned natively and only candidates reach the context checks.\nconst kCandidates = new RegExp(\n `[${HIDDEN_RANGES.flatMap(\n ([lo, hi]): ReadonlyArray<readonly [number, number]> =>\n lo <= LINE_FEED && hi >= LINE_FEED\n ? [\n [lo, LINE_FEED - 2],\n [LINE_FEED + 1, hi],\n ]\n : [[lo, hi]]\n )\n .map(([lo, hi]) => `\\\\u{${hex(lo)}}-\\\\u{${hex(hi)}}`)\n .join(\"\")}]`,\n \"gu\"\n);\n\nconst codePointBefore = (text: string, index: number): number | undefined => {\n if (index === 0) return undefined;\n const low = text.charCodeAt(index - 1);\n if (index >= 2 && low >= 0xdc00 && low <= 0xdfff) {\n const high = text.charCodeAt(index - 2);\n if (high >= 0xd800 && high <= 0xdbff) return text.codePointAt(index - 2);\n }\n return low;\n};\n\nconst isHidden = (\n codePoint: number,\n prev: number | undefined,\n next: number | undefined\n): boolean => {\n if (codePoint === ZWNJ || codePoint === ZWJ) {\n return !isPurposefulJoiner(codePoint, prev, next);\n }\n if (codePoint === CARRIAGE_RETURN) {\n // Half of a CRLF is an ordinary line break; a lone CR can overprint.\n return next !== LINE_FEED;\n }\n return true;\n};\n\n/**\n * Replaces each hidden character with a visible `⟨U+XXXX⟩` marker, so text\n * shown for inspection can't hide content or disguise itself (e.g. a bidi\n * override making `gnp.exe` display as `exe.png`).\n */\nexport const revealHiddenCharacters = (text: string): string =>\n text.replace(kCandidates, (match: string, offset: number) => {\n const codePoint = match.codePointAt(0) ?? 0;\n return isHidden(\n codePoint,\n codePointBefore(text, offset),\n text.codePointAt(offset + match.length)\n )\n ? `⟨U+${hex(codePoint).toUpperCase().padStart(4, \"0\")}⟩`\n : match;\n });\n","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.JSON5 = factory());\n}(this, (function () { 'use strict';\n\n\tfunction createCommonjsModule(fn, module) {\n\t\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n\t}\n\n\tvar _global = createCommonjsModule(function (module) {\n\t// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\n\tvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n\t ? window : typeof self != 'undefined' && self.Math == Math ? self\n\t // eslint-disable-next-line no-new-func\n\t : Function('return this')();\n\tif (typeof __g == 'number') { __g = global; } // eslint-disable-line no-undef\n\t});\n\n\tvar _core = createCommonjsModule(function (module) {\n\tvar core = module.exports = { version: '2.6.5' };\n\tif (typeof __e == 'number') { __e = core; } // eslint-disable-line no-undef\n\t});\n\tvar _core_1 = _core.version;\n\n\tvar _isObject = function (it) {\n\t return typeof it === 'object' ? it !== null : typeof it === 'function';\n\t};\n\n\tvar _anObject = function (it) {\n\t if (!_isObject(it)) { throw TypeError(it + ' is not an object!'); }\n\t return it;\n\t};\n\n\tvar _fails = function (exec) {\n\t try {\n\t return !!exec();\n\t } catch (e) {\n\t return true;\n\t }\n\t};\n\n\t// Thank's IE8 for his funny defineProperty\n\tvar _descriptors = !_fails(function () {\n\t return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n\t});\n\n\tvar document = _global.document;\n\t// typeof document.createElement is 'object' in old IE\n\tvar is = _isObject(document) && _isObject(document.createElement);\n\tvar _domCreate = function (it) {\n\t return is ? document.createElement(it) : {};\n\t};\n\n\tvar _ie8DomDefine = !_descriptors && !_fails(function () {\n\t return Object.defineProperty(_domCreate('div'), 'a', { get: function () { return 7; } }).a != 7;\n\t});\n\n\t// 7.1.1 ToPrimitive(input [, PreferredType])\n\n\t// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n\t// and the second argument - flag - preferred type is a string\n\tvar _toPrimitive = function (it, S) {\n\t if (!_isObject(it)) { return it; }\n\t var fn, val;\n\t if (S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) { return val; }\n\t if (typeof (fn = it.valueOf) == 'function' && !_isObject(val = fn.call(it))) { return val; }\n\t if (!S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) { return val; }\n\t throw TypeError(\"Can't convert object to primitive value\");\n\t};\n\n\tvar dP = Object.defineProperty;\n\n\tvar f = _descriptors ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n\t _anObject(O);\n\t P = _toPrimitive(P, true);\n\t _anObject(Attributes);\n\t if (_ie8DomDefine) { try {\n\t return dP(O, P, Attributes);\n\t } catch (e) { /* empty */ } }\n\t if ('get' in Attributes || 'set' in Attributes) { throw TypeError('Accessors not supported!'); }\n\t if ('value' in Attributes) { O[P] = Attributes.value; }\n\t return O;\n\t};\n\n\tvar _objectDp = {\n\t\tf: f\n\t};\n\n\tvar _propertyDesc = function (bitmap, value) {\n\t return {\n\t enumerable: !(bitmap & 1),\n\t configurable: !(bitmap & 2),\n\t writable: !(bitmap & 4),\n\t value: value\n\t };\n\t};\n\n\tvar _hide = _descriptors ? function (object, key, value) {\n\t return _objectDp.f(object, key, _propertyDesc(1, value));\n\t} : function (object, key, value) {\n\t object[key] = value;\n\t return object;\n\t};\n\n\tvar hasOwnProperty = {}.hasOwnProperty;\n\tvar _has = function (it, key) {\n\t return hasOwnProperty.call(it, key);\n\t};\n\n\tvar id = 0;\n\tvar px = Math.random();\n\tvar _uid = function (key) {\n\t return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n\t};\n\n\tvar _library = false;\n\n\tvar _shared = createCommonjsModule(function (module) {\n\tvar SHARED = '__core-js_shared__';\n\tvar store = _global[SHARED] || (_global[SHARED] = {});\n\n\t(module.exports = function (key, value) {\n\t return store[key] || (store[key] = value !== undefined ? value : {});\n\t})('versions', []).push({\n\t version: _core.version,\n\t mode: _library ? 'pure' : 'global',\n\t copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n\t});\n\t});\n\n\tvar _functionToString = _shared('native-function-to-string', Function.toString);\n\n\tvar _redefine = createCommonjsModule(function (module) {\n\tvar SRC = _uid('src');\n\n\tvar TO_STRING = 'toString';\n\tvar TPL = ('' + _functionToString).split(TO_STRING);\n\n\t_core.inspectSource = function (it) {\n\t return _functionToString.call(it);\n\t};\n\n\t(module.exports = function (O, key, val, safe) {\n\t var isFunction = typeof val == 'function';\n\t if (isFunction) { _has(val, 'name') || _hide(val, 'name', key); }\n\t if (O[key] === val) { return; }\n\t if (isFunction) { _has(val, SRC) || _hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key))); }\n\t if (O === _global) {\n\t O[key] = val;\n\t } else if (!safe) {\n\t delete O[key];\n\t _hide(O, key, val);\n\t } else if (O[key]) {\n\t O[key] = val;\n\t } else {\n\t _hide(O, key, val);\n\t }\n\t// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n\t})(Function.prototype, TO_STRING, function toString() {\n\t return typeof this == 'function' && this[SRC] || _functionToString.call(this);\n\t});\n\t});\n\n\tvar _aFunction = function (it) {\n\t if (typeof it != 'function') { throw TypeError(it + ' is not a function!'); }\n\t return it;\n\t};\n\n\t// optional / simple context binding\n\n\tvar _ctx = function (fn, that, length) {\n\t _aFunction(fn);\n\t if (that === undefined) { return fn; }\n\t switch (length) {\n\t case 1: return function (a) {\n\t return fn.call(that, a);\n\t };\n\t case 2: return function (a, b) {\n\t return fn.call(that, a, b);\n\t };\n\t case 3: return function (a, b, c) {\n\t return fn.call(that, a, b, c);\n\t };\n\t }\n\t return function (/* ...args */) {\n\t return fn.apply(that, arguments);\n\t };\n\t};\n\n\tvar PROTOTYPE = 'prototype';\n\n\tvar $export = function (type, name, source) {\n\t var IS_FORCED = type & $export.F;\n\t var IS_GLOBAL = type & $export.G;\n\t var IS_STATIC = type & $export.S;\n\t var IS_PROTO = type & $export.P;\n\t var IS_BIND = type & $export.B;\n\t var target = IS_GLOBAL ? _global : IS_STATIC ? _global[name] || (_global[name] = {}) : (_global[name] || {})[PROTOTYPE];\n\t var exports = IS_GLOBAL ? _core : _core[name] || (_core[name] = {});\n\t var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n\t var key, own, out, exp;\n\t if (IS_GLOBAL) { source = name; }\n\t for (key in source) {\n\t // contains in native\n\t own = !IS_FORCED && target && target[key] !== undefined;\n\t // export native or passed\n\t out = (own ? target : source)[key];\n\t // bind timers to global for call from export context\n\t exp = IS_BIND && own ? _ctx(out, _global) : IS_PROTO && typeof out == 'function' ? _ctx(Function.call, out) : out;\n\t // extend global\n\t if (target) { _redefine(target, key, out, type & $export.U); }\n\t // export\n\t if (exports[key] != out) { _hide(exports, key, exp); }\n\t if (IS_PROTO && expProto[key] != out) { expProto[key] = out; }\n\t }\n\t};\n\t_global.core = _core;\n\t// type bitmap\n\t$export.F = 1; // forced\n\t$export.G = 2; // global\n\t$export.S = 4; // static\n\t$export.P = 8; // proto\n\t$export.B = 16; // bind\n\t$export.W = 32; // wrap\n\t$export.U = 64; // safe\n\t$export.R = 128; // real proto method for `library`\n\tvar _export = $export;\n\n\t// 7.1.4 ToInteger\n\tvar ceil = Math.ceil;\n\tvar floor = Math.floor;\n\tvar _toInteger = function (it) {\n\t return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n\t};\n\n\t// 7.2.1 RequireObjectCoercible(argument)\n\tvar _defined = function (it) {\n\t if (it == undefined) { throw TypeError(\"Can't call method on \" + it); }\n\t return it;\n\t};\n\n\t// true -> String#at\n\t// false -> String#codePointAt\n\tvar _stringAt = function (TO_STRING) {\n\t return function (that, pos) {\n\t var s = String(_defined(that));\n\t var i = _toInteger(pos);\n\t var l = s.length;\n\t var a, b;\n\t if (i < 0 || i >= l) { return TO_STRING ? '' : undefined; }\n\t a = s.charCodeAt(i);\n\t return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n\t ? TO_STRING ? s.charAt(i) : a\n\t : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n\t };\n\t};\n\n\tvar $at = _stringAt(false);\n\t_export(_export.P, 'String', {\n\t // 21.1.3.3 String.prototype.codePointAt(pos)\n\t codePointAt: function codePointAt(pos) {\n\t return $at(this, pos);\n\t }\n\t});\n\n\tvar codePointAt = _core.String.codePointAt;\n\n\tvar max = Math.max;\n\tvar min = Math.min;\n\tvar _toAbsoluteIndex = function (index, length) {\n\t index = _toInteger(index);\n\t return index < 0 ? max(index + length, 0) : min(index, length);\n\t};\n\n\tvar fromCharCode = String.fromCharCode;\n\tvar $fromCodePoint = String.fromCodePoint;\n\n\t// length should be 1, old FF problem\n\t_export(_export.S + _export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n\t // 21.1.2.2 String.fromCodePoint(...codePoints)\n\t fromCodePoint: function fromCodePoint(x) {\n\t var arguments$1 = arguments;\n\t // eslint-disable-line no-unused-vars\n\t var res = [];\n\t var aLen = arguments.length;\n\t var i = 0;\n\t var code;\n\t while (aLen > i) {\n\t code = +arguments$1[i++];\n\t if (_toAbsoluteIndex(code, 0x10ffff) !== code) { throw RangeError(code + ' is not a valid code point'); }\n\t res.push(code < 0x10000\n\t ? fromCharCode(code)\n\t : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)\n\t );\n\t } return res.join('');\n\t }\n\t});\n\n\tvar fromCodePoint = _core.String.fromCodePoint;\n\n\t// This is a generated file. Do not edit.\n\tvar Space_Separator = /[\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/;\n\tvar ID_Start = /[\\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\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\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\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\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-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF19]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE83\\uDE86-\\uDE89\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]/;\n\tvar ID_Continue = /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u08D4-\\u08E1\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u09FC\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9-\\u0AFF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C80-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D00-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D54-\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1CD0-\\u1CD2\\u1CD4-\\u1CF9\\u1D00-\\u1DF9\\u1DFB-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C5\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC6F\\uDC7F-\\uDCBA\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDCA-\\uDDCC\\uDDD0-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE3E\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3C-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC00-\\uDC4A\\uDC50-\\uDC59\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB7\\uDEC0-\\uDEC9\\uDF00-\\uDF19\\uDF1D-\\uDF2B\\uDF30-\\uDF39]|\\uD806[\\uDCA0-\\uDCE9\\uDCFF\\uDE00-\\uDE3E\\uDE47\\uDE50-\\uDE83\\uDE86-\\uDE99\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC36\\uDC38-\\uDC40\\uDC50-\\uDC59\\uDC72-\\uDC8F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD47\\uDD50-\\uDD59]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50-\\uDF7E\\uDF8F-\\uDF9F\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6\\uDD00-\\uDD4A\\uDD50-\\uDD59]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uDB40[\\uDD00-\\uDDEF]/;\n\n\tvar unicode = {\n\t\tSpace_Separator: Space_Separator,\n\t\tID_Start: ID_Start,\n\t\tID_Continue: ID_Continue\n\t};\n\n\tvar util = {\n\t isSpaceSeparator: function isSpaceSeparator (c) {\n\t return typeof c === 'string' && unicode.Space_Separator.test(c)\n\t },\n\n\t isIdStartChar: function isIdStartChar (c) {\n\t return typeof c === 'string' && (\n\t (c >= 'a' && c <= 'z') ||\n\t (c >= 'A' && c <= 'Z') ||\n\t (c === '$') || (c === '_') ||\n\t unicode.ID_Start.test(c)\n\t )\n\t },\n\n\t isIdContinueChar: function isIdContinueChar (c) {\n\t return typeof c === 'string' && (\n\t (c >= 'a' && c <= 'z') ||\n\t (c >= 'A' && c <= 'Z') ||\n\t (c >= '0' && c <= '9') ||\n\t (c === '$') || (c === '_') ||\n\t (c === '\\u200C') || (c === '\\u200D') ||\n\t unicode.ID_Continue.test(c)\n\t )\n\t },\n\n\t isDigit: function isDigit (c) {\n\t return typeof c === 'string' && /[0-9]/.test(c)\n\t },\n\n\t isHexDigit: function isHexDigit (c) {\n\t return typeof c === 'string' && /[0-9A-Fa-f]/.test(c)\n\t },\n\t};\n\n\tvar source;\n\tvar parseState;\n\tvar stack;\n\tvar pos;\n\tvar line;\n\tvar column;\n\tvar token;\n\tvar key;\n\tvar root;\n\n\tvar parse = function parse (text, reviver) {\n\t source = String(text);\n\t parseState = 'start';\n\t stack = [];\n\t pos = 0;\n\t line = 1;\n\t column = 0;\n\t token = undefined;\n\t key = undefined;\n\t root = undefined;\n\n\t do {\n\t token = lex();\n\n\t // This code is unreachable.\n\t // if (!parseStates[parseState]) {\n\t // throw invalidParseState()\n\t // }\n\n\t parseStates[parseState]();\n\t } while (token.type !== 'eof')\n\n\t if (typeof reviver === 'function') {\n\t return internalize({'': root}, '', reviver)\n\t }\n\n\t return root\n\t};\n\n\tfunction internalize (holder, name, reviver) {\n\t var value = holder[name];\n\t if (value != null && typeof value === 'object') {\n\t if (Array.isArray(value)) {\n\t for (var i = 0; i < value.length; i++) {\n\t var key = String(i);\n\t var replacement = internalize(value, key, reviver);\n\t if (replacement === undefined) {\n\t delete value[key];\n\t } else {\n\t Object.defineProperty(value, key, {\n\t value: replacement,\n\t writable: true,\n\t enumerable: true,\n\t configurable: true,\n\t });\n\t }\n\t }\n\t } else {\n\t for (var key$1 in value) {\n\t var replacement$1 = internalize(value, key$1, reviver);\n\t if (replacement$1 === undefined) {\n\t delete value[key$1];\n\t } else {\n\t Object.defineProperty(value, key$1, {\n\t value: replacement$1,\n\t writable: true,\n\t enumerable: true,\n\t configurable: true,\n\t });\n\t }\n\t }\n\t }\n\t }\n\n\t return reviver.call(holder, name, value)\n\t}\n\n\tvar lexState;\n\tvar buffer;\n\tvar doubleQuote;\n\tvar sign;\n\tvar c;\n\n\tfunction lex () {\n\t lexState = 'default';\n\t buffer = '';\n\t doubleQuote = false;\n\t sign = 1;\n\n\t for (;;) {\n\t c = peek();\n\n\t // This code is unreachable.\n\t // if (!lexStates[lexState]) {\n\t // throw invalidLexState(lexState)\n\t // }\n\n\t var token = lexStates[lexState]();\n\t if (token) {\n\t return token\n\t }\n\t }\n\t}\n\n\tfunction peek () {\n\t if (source[pos]) {\n\t return String.fromCodePoint(source.codePointAt(pos))\n\t }\n\t}\n\n\tfunction read () {\n\t var c = peek();\n\n\t if (c === '\\n') {\n\t line++;\n\t column = 0;\n\t } else if (c) {\n\t column += c.length;\n\t } else {\n\t column++;\n\t }\n\n\t if (c) {\n\t pos += c.length;\n\t }\n\n\t return c\n\t}\n\n\tvar lexStates = {\n\t default: function default$1 () {\n\t switch (c) {\n\t case '\\t':\n\t case '\\v':\n\t case '\\f':\n\t case ' ':\n\t case '\\u00A0':\n\t case '\\uFEFF':\n\t case '\\n':\n\t case '\\r':\n\t case '\\u2028':\n\t case '\\u2029':\n\t read();\n\t return\n\n\t case '/':\n\t read();\n\t lexState = 'comment';\n\t return\n\n\t case undefined:\n\t read();\n\t return newToken('eof')\n\t }\n\n\t if (util.isSpaceSeparator(c)) {\n\t read();\n\t return\n\t }\n\n\t // This code is unreachable.\n\t // if (!lexStates[parseState]) {\n\t // throw invalidLexState(parseState)\n\t // }\n\n\t return lexStates[parseState]()\n\t },\n\n\t comment: function comment () {\n\t switch (c) {\n\t case '*':\n\t read();\n\t lexState = 'multiLineComment';\n\t return\n\n\t case '/':\n\t read();\n\t lexState = 'singleLineComment';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t multiLineComment: function multiLineComment () {\n\t switch (c) {\n\t case '*':\n\t read();\n\t lexState = 'multiLineCommentAsterisk';\n\t return\n\n\t case undefined:\n\t throw invalidChar(read())\n\t }\n\n\t read();\n\t },\n\n\t multiLineCommentAsterisk: function multiLineCommentAsterisk () {\n\t switch (c) {\n\t case '*':\n\t read();\n\t return\n\n\t case '/':\n\t read();\n\t lexState = 'default';\n\t return\n\n\t case undefined:\n\t throw invalidChar(read())\n\t }\n\n\t read();\n\t lexState = 'multiLineComment';\n\t },\n\n\t singleLineComment: function singleLineComment () {\n\t switch (c) {\n\t case '\\n':\n\t case '\\r':\n\t case '\\u2028':\n\t case '\\u2029':\n\t read();\n\t lexState = 'default';\n\t return\n\n\t case undefined:\n\t read();\n\t return newToken('eof')\n\t }\n\n\t read();\n\t },\n\n\t value: function value () {\n\t switch (c) {\n\t case '{':\n\t case '[':\n\t return newToken('punctuator', read())\n\n\t case 'n':\n\t read();\n\t literal('ull');\n\t return newToken('null', null)\n\n\t case 't':\n\t read();\n\t literal('rue');\n\t return newToken('boolean', true)\n\n\t case 'f':\n\t read();\n\t literal('alse');\n\t return newToken('boolean', false)\n\n\t case '-':\n\t case '+':\n\t if (read() === '-') {\n\t sign = -1;\n\t }\n\n\t lexState = 'sign';\n\t return\n\n\t case '.':\n\t buffer = read();\n\t lexState = 'decimalPointLeading';\n\t return\n\n\t case '0':\n\t buffer = read();\n\t lexState = 'zero';\n\t return\n\n\t case '1':\n\t case '2':\n\t case '3':\n\t case '4':\n\t case '5':\n\t case '6':\n\t case '7':\n\t case '8':\n\t case '9':\n\t buffer = read();\n\t lexState = 'decimalInteger';\n\t return\n\n\t case 'I':\n\t read();\n\t literal('nfinity');\n\t return newToken('numeric', Infinity)\n\n\t case 'N':\n\t read();\n\t literal('aN');\n\t return newToken('numeric', NaN)\n\n\t case '\"':\n\t case \"'\":\n\t doubleQuote = (read() === '\"');\n\t buffer = '';\n\t lexState = 'string';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t identifierNameStartEscape: function identifierNameStartEscape () {\n\t if (c !== 'u') {\n\t throw invalidChar(read())\n\t }\n\n\t read();\n\t var u = unicodeEscape();\n\t switch (u) {\n\t case '$':\n\t case '_':\n\t break\n\n\t default:\n\t if (!util.isIdStartChar(u)) {\n\t throw invalidIdentifier()\n\t }\n\n\t break\n\t }\n\n\t buffer += u;\n\t lexState = 'identifierName';\n\t },\n\n\t identifierName: function identifierName () {\n\t switch (c) {\n\t case '$':\n\t case '_':\n\t case '\\u200C':\n\t case '\\u200D':\n\t buffer += read();\n\t return\n\n\t case '\\\\':\n\t read();\n\t lexState = 'identifierNameEscape';\n\t return\n\t }\n\n\t if (util.isIdContinueChar(c)) {\n\t buffer += read();\n\t return\n\t }\n\n\t return newToken('identifier', buffer)\n\t },\n\n\t identifierNameEscape: function identifierNameEscape () {\n\t if (c !== 'u') {\n\t throw invalidChar(read())\n\t }\n\n\t read();\n\t var u = unicodeEscape();\n\t switch (u) {\n\t case '$':\n\t case '_':\n\t case '\\u200C':\n\t case '\\u200D':\n\t break\n\n\t default:\n\t if (!util.isIdContinueChar(u)) {\n\t throw invalidIdentifier()\n\t }\n\n\t break\n\t }\n\n\t buffer += u;\n\t lexState = 'identifierName';\n\t },\n\n\t sign: function sign$1 () {\n\t switch (c) {\n\t case '.':\n\t buffer = read();\n\t lexState = 'decimalPointLeading';\n\t return\n\n\t case '0':\n\t buffer = read();\n\t lexState = 'zero';\n\t return\n\n\t case '1':\n\t case '2':\n\t case '3':\n\t case '4':\n\t case '5':\n\t case '6':\n\t case '7':\n\t case '8':\n\t case '9':\n\t buffer = read();\n\t lexState = 'decimalInteger';\n\t return\n\n\t case 'I':\n\t read();\n\t literal('nfinity');\n\t return newToken('numeric', sign * Infinity)\n\n\t case 'N':\n\t read();\n\t literal('aN');\n\t return newToken('numeric', NaN)\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t zero: function zero () {\n\t switch (c) {\n\t case '.':\n\t buffer += read();\n\t lexState = 'decimalPoint';\n\t return\n\n\t case 'e':\n\t case 'E':\n\t buffer += read();\n\t lexState = 'decimalExponent';\n\t return\n\n\t case 'x':\n\t case 'X':\n\t buffer += read();\n\t lexState = 'hexadecimal';\n\t return\n\t }\n\n\t return newToken('numeric', sign * 0)\n\t },\n\n\t decimalInteger: function decimalInteger () {\n\t switch (c) {\n\t case '.':\n\t buffer += read();\n\t lexState = 'decimalPoint';\n\t return\n\n\t case 'e':\n\t case 'E':\n\t buffer += read();\n\t lexState = 'decimalExponent';\n\t return\n\t }\n\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t return\n\t }\n\n\t return newToken('numeric', sign * Number(buffer))\n\t },\n\n\t decimalPointLeading: function decimalPointLeading () {\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t lexState = 'decimalFraction';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t decimalPoint: function decimalPoint () {\n\t switch (c) {\n\t case 'e':\n\t case 'E':\n\t buffer += read();\n\t lexState = 'decimalExponent';\n\t return\n\t }\n\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t lexState = 'decimalFraction';\n\t return\n\t }\n\n\t return newToken('numeric', sign * Number(buffer))\n\t },\n\n\t decimalFraction: function decimalFraction () {\n\t switch (c) {\n\t case 'e':\n\t case 'E':\n\t buffer += read();\n\t lexState = 'decimalExponent';\n\t return\n\t }\n\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t return\n\t }\n\n\t return newToken('numeric', sign * Number(buffer))\n\t },\n\n\t decimalExponent: function decimalExponent () {\n\t switch (c) {\n\t case '+':\n\t case '-':\n\t buffer += read();\n\t lexState = 'decimalExponentSign';\n\t return\n\t }\n\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t lexState = 'decimalExponentInteger';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t decimalExponentSign: function decimalExponentSign () {\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t lexState = 'decimalExponentInteger';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t decimalExponentInteger: function decimalExponentInteger () {\n\t if (util.isDigit(c)) {\n\t buffer += read();\n\t return\n\t }\n\n\t return newToken('numeric', sign * Number(buffer))\n\t },\n\n\t hexadecimal: function hexadecimal () {\n\t if (util.isHexDigit(c)) {\n\t buffer += read();\n\t lexState = 'hexadecimalInteger';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t hexadecimalInteger: function hexadecimalInteger () {\n\t if (util.isHexDigit(c)) {\n\t buffer += read();\n\t return\n\t }\n\n\t return newToken('numeric', sign * Number(buffer))\n\t },\n\n\t string: function string () {\n\t switch (c) {\n\t case '\\\\':\n\t read();\n\t buffer += escape();\n\t return\n\n\t case '\"':\n\t if (doubleQuote) {\n\t read();\n\t return newToken('string', buffer)\n\t }\n\n\t buffer += read();\n\t return\n\n\t case \"'\":\n\t if (!doubleQuote) {\n\t read();\n\t return newToken('string', buffer)\n\t }\n\n\t buffer += read();\n\t return\n\n\t case '\\n':\n\t case '\\r':\n\t throw invalidChar(read())\n\n\t case '\\u2028':\n\t case '\\u2029':\n\t separatorChar(c);\n\t break\n\n\t case undefined:\n\t throw invalidChar(read())\n\t }\n\n\t buffer += read();\n\t },\n\n\t start: function start () {\n\t switch (c) {\n\t case '{':\n\t case '[':\n\t return newToken('punctuator', read())\n\n\t // This code is unreachable since the default lexState handles eof.\n\t // case undefined:\n\t // return newToken('eof')\n\t }\n\n\t lexState = 'value';\n\t },\n\n\t beforePropertyName: function beforePropertyName () {\n\t switch (c) {\n\t case '$':\n\t case '_':\n\t buffer = read();\n\t lexState = 'identifierName';\n\t return\n\n\t case '\\\\':\n\t read();\n\t lexState = 'identifierNameStartEscape';\n\t return\n\n\t case '}':\n\t return newToken('punctuator', read())\n\n\t case '\"':\n\t case \"'\":\n\t doubleQuote = (read() === '\"');\n\t lexState = 'string';\n\t return\n\t }\n\n\t if (util.isIdStartChar(c)) {\n\t buffer += read();\n\t lexState = 'identifierName';\n\t return\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t afterPropertyName: function afterPropertyName () {\n\t if (c === ':') {\n\t return newToken('punctuator', read())\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t beforePropertyValue: function beforePropertyValue () {\n\t lexState = 'value';\n\t },\n\n\t afterPropertyValue: function afterPropertyValue () {\n\t switch (c) {\n\t case ',':\n\t case '}':\n\t return newToken('punctuator', read())\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t beforeArrayValue: function beforeArrayValue () {\n\t if (c === ']') {\n\t return newToken('punctuator', read())\n\t }\n\n\t lexState = 'value';\n\t },\n\n\t afterArrayValue: function afterArrayValue () {\n\t switch (c) {\n\t case ',':\n\t case ']':\n\t return newToken('punctuator', read())\n\t }\n\n\t throw invalidChar(read())\n\t },\n\n\t end: function end () {\n\t // This code is unreachable since it's handled by the default lexState.\n\t // if (c === undefined) {\n\t // read()\n\t // return newToken('eof')\n\t // }\n\n\t throw invalidChar(read())\n\t },\n\t};\n\n\tfunction newToken (type, value) {\n\t return {\n\t type: type,\n\t value: value,\n\t line: line,\n\t column: column,\n\t }\n\t}\n\n\tfunction literal (s) {\n\t for (var i = 0, list = s; i < list.length; i += 1) {\n\t var c = list[i];\n\n\t var p = peek();\n\n\t if (p !== c) {\n\t throw invalidChar(read())\n\t }\n\n\t read();\n\t }\n\t}\n\n\tfunction escape () {\n\t var c = peek();\n\t switch (c) {\n\t case 'b':\n\t read();\n\t return '\\b'\n\n\t case 'f':\n\t read();\n\t return '\\f'\n\n\t case 'n':\n\t read();\n\t return '\\n'\n\n\t case 'r':\n\t read();\n\t return '\\r'\n\n\t case 't':\n\t read();\n\t return '\\t'\n\n\t case 'v':\n\t read();\n\t return '\\v'\n\n\t case '0':\n\t read();\n\t if (util.isDigit(peek())) {\n\t throw invalidChar(read())\n\t }\n\n\t return '\\0'\n\n\t case 'x':\n\t read();\n\t return hexEscape()\n\n\t case 'u':\n\t read();\n\t return unicodeEscape()\n\n\t case '\\n':\n\t case '\\u2028':\n\t case '\\u2029':\n\t read();\n\t return ''\n\n\t case '\\r':\n\t read();\n\t if (peek() === '\\n') {\n\t read();\n\t }\n\n\t return ''\n\n\t case '1':\n\t case '2':\n\t case '3':\n\t case '4':\n\t case '5':\n\t case '6':\n\t case '7':\n\t case '8':\n\t case '9':\n\t throw invalidChar(read())\n\n\t case undefined:\n\t throw invalidChar(read())\n\t }\n\n\t return read()\n\t}\n\n\tfunction hexEscape () {\n\t var buffer = '';\n\t var c = peek();\n\n\t if (!util.isHexDigit(c)) {\n\t throw invalidChar(read())\n\t }\n\n\t buffer += read();\n\n\t c = peek();\n\t if (!util.isHexDigit(c)) {\n\t throw invalidChar(read())\n\t }\n\n\t buffer += read();\n\n\t return String.fromCodePoint(parseInt(buffer, 16))\n\t}\n\n\tfunction unicodeEscape () {\n\t var buffer = '';\n\t var count = 4;\n\n\t while (count-- > 0) {\n\t var c = peek();\n\t if (!util.isHexDigit(c)) {\n\t throw invalidChar(read())\n\t }\n\n\t buffer += read();\n\t }\n\n\t return String.fromCodePoint(parseInt(buffer, 16))\n\t}\n\n\tvar parseStates = {\n\t start: function start () {\n\t if (token.type === 'eof') {\n\t throw invalidEOF()\n\t }\n\n\t push();\n\t },\n\n\t beforePropertyName: function beforePropertyName () {\n\t switch (token.type) {\n\t case 'identifier':\n\t case 'string':\n\t key = token.value;\n\t parseState = 'afterPropertyName';\n\t return\n\n\t case 'punctuator':\n\t // This code is unreachable since it's handled by the lexState.\n\t // if (token.value !== '}') {\n\t // throw invalidToken()\n\t // }\n\n\t pop();\n\t return\n\n\t case 'eof':\n\t throw invalidEOF()\n\t }\n\n\t // This code is unreachable since it's handled by the lexState.\n\t // throw invalidToken()\n\t },\n\n\t afterPropertyName: function afterPropertyName () {\n\t // This code is unreachable since it's handled by the lexState.\n\t // if (token.type !== 'punctuator' || token.value !== ':') {\n\t // throw invalidToken()\n\t // }\n\n\t if (token.type === 'eof') {\n\t throw invalidEOF()\n\t }\n\n\t parseState = 'beforePropertyValue';\n\t },\n\n\t beforePropertyValue: function beforePropertyValue () {\n\t if (token.type === 'eof') {\n\t throw invalidEOF()\n\t }\n\n\t push();\n\t },\n\n\t beforeArrayValue: function beforeArrayValue () {\n\t if (token.type === 'eof') {\n\t throw invalidEOF()\n\t }\n\n\t if (token.type === 'punctuator' && token.value === ']') {\n\t pop();\n\t return\n\t }\n\n\t push();\n\t },\n\n\t afterPropertyValue: function afterPropertyValue () {\n\t // This code is unreachable since it's handled by the lexState.\n\t // if (token.type !== 'punctuator') {\n\t // throw invalidToken()\n\t // }\n\n\t if (token.type === 'eof') {\n\t throw invalidEOF()\n\t }\n\n\t switch (token.value) {\n\t case ',':\n\t parseState = 'beforePropertyName';\n\t return\n\n\t case '}':\n\t pop();\n\t }\n\n\t // This code is unreachable since it's handled by the lexState.\n\t // throw invalidToken()\n\t },\n\n\t afterArrayValue: function afterArrayValue () {\n\t // This code is unreachable since it's handled by the lexState.\n\t // if (token.type !== 'punctuator') {\n\t // throw invalidToken()\n\t // }\n\n\t if (token.type === 'eof') {\n\t throw invalidEOF()\n\t }\n\n\t switch (token.value) {\n\t case ',':\n\t parseState = 'beforeArrayValue';\n\t return\n\n\t case ']':\n\t pop();\n\t }\n\n\t // This code is unreachable since it's handled by the lexState.\n\t // throw invalidToken()\n\t },\n\n\t end: function end () {\n\t // This code is unreachable since it's handled by the lexState.\n\t // if (token.type !== 'eof') {\n\t // throw invalidToken()\n\t // }\n\t },\n\t};\n\n\tfunction push () {\n\t var value;\n\n\t switch (token.type) {\n\t case 'punctuator':\n\t switch (token.value) {\n\t case '{':\n\t value = {};\n\t break\n\n\t case '[':\n\t value = [];\n\t break\n\t }\n\n\t break\n\n\t case 'null':\n\t case 'boolean':\n\t case 'numeric':\n\t case 'string':\n\t value = token.value;\n\t break\n\n\t // This code is unreachable.\n\t // default:\n\t // throw invalidToken()\n\t }\n\n\t if (root === undefined) {\n\t root = value;\n\t } else {\n\t var parent = stack[stack.length - 1];\n\t if (Array.isArray(parent)) {\n\t parent.push(value);\n\t } else {\n\t Object.defineProperty(parent, key, {\n\t value: value,\n\t writable: true,\n\t enumerable: true,\n\t configurable: true,\n\t });\n\t }\n\t }\n\n\t if (value !== null && typeof value === 'object') {\n\t stack.push(value);\n\n\t if (Array.isArray(value)) {\n\t parseState = 'beforeArrayValue';\n\t } else {\n\t parseState = 'beforePropertyName';\n\t }\n\t } else {\n\t var current = stack[stack.length - 1];\n\t if (current == null) {\n\t parseState = 'end';\n\t } else if (Array.isArray(current)) {\n\t parseState = 'afterArrayValue';\n\t } else {\n\t parseState = 'afterPropertyValue';\n\t }\n\t }\n\t}\n\n\tfunction pop () {\n\t stack.pop();\n\n\t var current = stack[stack.length - 1];\n\t if (current == null) {\n\t parseState = 'end';\n\t } else if (Array.isArray(current)) {\n\t parseState = 'afterArrayValue';\n\t } else {\n\t parseState = 'afterPropertyValue';\n\t }\n\t}\n\n\t// This code is unreachable.\n\t// function invalidParseState () {\n\t// return new Error(`JSON5: invalid parse state '${parseState}'`)\n\t// }\n\n\t// This code is unreachable.\n\t// function invalidLexState (state) {\n\t// return new Error(`JSON5: invalid lex state '${state}'`)\n\t// }\n\n\tfunction invalidChar (c) {\n\t if (c === undefined) {\n\t return syntaxError((\"JSON5: invalid end of input at \" + line + \":\" + column))\n\t }\n\n\t return syntaxError((\"JSON5: invalid character '\" + (formatChar(c)) + \"' at \" + line + \":\" + column))\n\t}\n\n\tfunction invalidEOF () {\n\t return syntaxError((\"JSON5: invalid end of input at \" + line + \":\" + column))\n\t}\n\n\t// This code is unreachable.\n\t// function invalidToken () {\n\t// if (token.type === 'eof') {\n\t// return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)\n\t// }\n\n\t// const c = String.fromCodePoint(token.value.codePointAt(0))\n\t// return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`)\n\t// }\n\n\tfunction invalidIdentifier () {\n\t column -= 5;\n\t return syntaxError((\"JSON5: invalid identifier character at \" + line + \":\" + column))\n\t}\n\n\tfunction separatorChar (c) {\n\t console.warn((\"JSON5: '\" + (formatChar(c)) + \"' in strings is not valid ECMAScript; consider escaping\"));\n\t}\n\n\tfunction formatChar (c) {\n\t var replacements = {\n\t \"'\": \"\\\\'\",\n\t '\"': '\\\\\"',\n\t '\\\\': '\\\\\\\\',\n\t '\\b': '\\\\b',\n\t '\\f': '\\\\f',\n\t '\\n': '\\\\n',\n\t '\\r': '\\\\r',\n\t '\\t': '\\\\t',\n\t '\\v': '\\\\v',\n\t '\\0': '\\\\0',\n\t '\\u2028': '\\\\u2028',\n\t '\\u2029': '\\\\u2029',\n\t };\n\n\t if (replacements[c]) {\n\t return replacements[c]\n\t }\n\n\t if (c < ' ') {\n\t var hexString = c.charCodeAt(0).toString(16);\n\t return '\\\\x' + ('00' + hexString).substring(hexString.length)\n\t }\n\n\t return c\n\t}\n\n\tfunction syntaxError (message) {\n\t var err = new SyntaxError(message);\n\t err.lineNumber = line;\n\t err.columnNumber = column;\n\t return err\n\t}\n\n\tvar stringify = function stringify (value, replacer, space) {\n\t var stack = [];\n\t var indent = '';\n\t var propertyList;\n\t var replacerFunc;\n\t var gap = '';\n\t var quote;\n\n\t if (\n\t replacer != null &&\n\t typeof replacer === 'object' &&\n\t !Array.isArray(replacer)\n\t ) {\n\t space = replacer.space;\n\t quote = replacer.quote;\n\t replacer = replacer.replacer;\n\t }\n\n\t if (typeof replacer === 'function') {\n\t replacerFunc = replacer;\n\t } else if (Array.isArray(replacer)) {\n\t propertyList = [];\n\t for (var i = 0, list = replacer; i < list.length; i += 1) {\n\t var v = list[i];\n\n\t var item = (void 0);\n\n\t if (typeof v === 'string') {\n\t item = v;\n\t } else if (\n\t typeof v === 'number' ||\n\t v instanceof String ||\n\t v instanceof Number\n\t ) {\n\t item = String(v);\n\t }\n\n\t if (item !== undefined && propertyList.indexOf(item) < 0) {\n\t propertyList.push(item);\n\t }\n\t }\n\t }\n\n\t if (space instanceof Number) {\n\t space = Number(space);\n\t } else if (space instanceof String) {\n\t space = String(space);\n\t }\n\n\t if (typeof space === 'number') {\n\t if (space > 0) {\n\t space = Math.min(10, Math.floor(space));\n\t gap = ' '.substr(0, space);\n\t }\n\t } else if (typeof space === 'string') {\n\t gap = space.substr(0, 10);\n\t }\n\n\t return serializeProperty('', {'': value})\n\n\t function serializeProperty (key, holder) {\n\t var value = holder[key];\n\t if (value != null) {\n\t if (typeof value.toJSON5 === 'function') {\n\t value = value.toJSON5(key);\n\t } else if (typeof value.toJSON === 'function') {\n\t value = value.toJSON(key);\n\t }\n\t }\n\n\t if (replacerFunc) {\n\t value = replacerFunc.call(holder, key, value);\n\t }\n\n\t if (value instanceof Number) {\n\t value = Number(value);\n\t } else if (value instanceof String) {\n\t value = String(value);\n\t } else if (value instanceof Boolean) {\n\t value = value.valueOf();\n\t }\n\n\t switch (value) {\n\t case null: return 'null'\n\t case true: return 'true'\n\t case false: return 'false'\n\t }\n\n\t if (typeof value === 'string') {\n\t return quoteString(value, false)\n\t }\n\n\t if (typeof value === 'number') {\n\t return String(value)\n\t }\n\n\t if (typeof value === 'object') {\n\t return Array.isArray(value) ? serializeArray(value) : serializeObject(value)\n\t }\n\n\t return undefined\n\t }\n\n\t function quoteString (value) {\n\t var quotes = {\n\t \"'\": 0.1,\n\t '\"': 0.2,\n\t };\n\n\t var replacements = {\n\t \"'\": \"\\\\'\",\n\t '\"': '\\\\\"',\n\t '\\\\': '\\\\\\\\',\n\t '\\b': '\\\\b',\n\t '\\f': '\\\\f',\n\t '\\n': '\\\\n',\n\t '\\r': '\\\\r',\n\t '\\t': '\\\\t',\n\t '\\v': '\\\\v',\n\t '\\0': '\\\\0',\n\t '\\u2028': '\\\\u2028',\n\t '\\u2029': '\\\\u2029',\n\t };\n\n\t var product = '';\n\n\t for (var i = 0; i < value.length; i++) {\n\t var c = value[i];\n\t switch (c) {\n\t case \"'\":\n\t case '\"':\n\t quotes[c]++;\n\t product += c;\n\t continue\n\n\t case '\\0':\n\t if (util.isDigit(value[i + 1])) {\n\t product += '\\\\x00';\n\t continue\n\t }\n\t }\n\n\t if (replacements[c]) {\n\t product += replacements[c];\n\t continue\n\t }\n\n\t if (c < ' ') {\n\t var hexString = c.charCodeAt(0).toString(16);\n\t product += '\\\\x' + ('00' + hexString).substring(hexString.length);\n\t continue\n\t }\n\n\t product += c;\n\t }\n\n\t var quoteChar = quote || Object.keys(quotes).reduce(function (a, b) { return (quotes[a] < quotes[b]) ? a : b; });\n\n\t product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar]);\n\n\t return quoteChar + product + quoteChar\n\t }\n\n\t function serializeObject (value) {\n\t if (stack.indexOf(value) >= 0) {\n\t throw TypeError('Converting circular structure to JSON5')\n\t }\n\n\t stack.push(value);\n\n\t var stepback = indent;\n\t indent = indent + gap;\n\n\t var keys = propertyList || Object.keys(value);\n\t var partial = [];\n\t for (var i = 0, list = keys; i < list.length; i += 1) {\n\t var key = list[i];\n\n\t var propertyString = serializeProperty(key, value);\n\t if (propertyString !== undefined) {\n\t var member = serializeKey(key) + ':';\n\t if (gap !== '') {\n\t member += ' ';\n\t }\n\t member += propertyString;\n\t partial.push(member);\n\t }\n\t }\n\n\t var final;\n\t if (partial.length === 0) {\n\t final = '{}';\n\t } else {\n\t var properties;\n\t if (gap === '') {\n\t properties = partial.join(',');\n\t final = '{' + properties + '}';\n\t } else {\n\t var separator = ',\\n' + indent;\n\t properties = partial.join(separator);\n\t final = '{\\n' + indent + properties + ',\\n' + stepback + '}';\n\t }\n\t }\n\n\t stack.pop();\n\t indent = stepback;\n\t return final\n\t }\n\n\t function serializeKey (key) {\n\t if (key.length === 0) {\n\t return quoteString(key, true)\n\t }\n\n\t var firstChar = String.fromCodePoint(key.codePointAt(0));\n\t if (!util.isIdStartChar(firstChar)) {\n\t return quoteString(key, true)\n\t }\n\n\t for (var i = firstChar.length; i < key.length; i++) {\n\t if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) {\n\t return quoteString(key, true)\n\t }\n\t }\n\n\t return key\n\t }\n\n\t function serializeArray (value) {\n\t if (stack.indexOf(value) >= 0) {\n\t throw TypeError('Converting circular structure to JSON5')\n\t }\n\n\t stack.push(value);\n\n\t var stepback = indent;\n\t indent = indent + gap;\n\n\t var partial = [];\n\t for (var i = 0; i < value.length; i++) {\n\t var propertyString = serializeProperty(String(i), value);\n\t partial.push((propertyString !== undefined) ? propertyString : 'null');\n\t }\n\n\t var final;\n\t if (partial.length === 0) {\n\t final = '[]';\n\t } else {\n\t if (gap === '') {\n\t var properties = partial.join(',');\n\t final = '[' + properties + ']';\n\t } else {\n\t var separator = ',\\n' + indent;\n\t var properties$1 = partial.join(separator);\n\t final = '[\\n' + indent + properties$1 + ',\\n' + stepback + ']';\n\t }\n\t }\n\n\t stack.pop();\n\t indent = stepback;\n\t return final\n\t }\n\t};\n\n\tvar JSON5 = {\n\t parse: parse,\n\t stringify: stringify,\n\t};\n\n\tvar lib = JSON5;\n\n\tvar es5 = lib;\n\n\treturn es5;\n\n})));\n","import JSON5 from \"json5\";\n\n// Shape posted back by the worker for a parse request.\ninterface WorkerParseResponse {\n requestId: number;\n success: boolean;\n result?: unknown;\n // Payload is (possibly repaired) strict JSON too large to clone\n // efficiently — re-parse it on the main thread from sourceText (or the\n // retained request text for string inputs).\n reparse?: boolean;\n sourceText?: string;\n // Set when sourceText is repaired JSON: paths whose values are sentinel\n // strings to restore to NaN/Infinity/-Infinity after the plain parse.\n nonFinitePaths?: (string | number)[][];\n sentinels?: { nan: string; inf: string; ninf: string };\n error?: string;\n stack?: string;\n}\n\ninterface PendingRequest {\n resolve: (value: unknown) => void;\n reject: (error: unknown) => void;\n worker: Worker;\n sourceText?: string;\n}\n\n// Pool of workers to parse JSON/JSON5 off the main thread\nclass JsonWorkerPool {\n private workers: Worker[] = [];\n private blobURL: string | null = null;\n private nextRequestId = 0;\n private pendingRequests = new Map<number, PendingRequest>();\n private readonly poolSize = 4;\n\n private ensureWorkers() {\n if (this.workers.length === 0) {\n const blob = new Blob([kWorkerCode], { type: \"application/javascript\" });\n this.blobURL = URL.createObjectURL(blob);\n\n for (let i = 0; i < this.poolSize; i++) {\n this.workers.push(this.createWorker(this.blobURL));\n }\n }\n }\n\n private createWorker(blobURL: string): Worker {\n const worker = new Worker(blobURL);\n worker.onmessage = (e) => this.handleMessage(e);\n worker.onerror = (error) =>\n this.failWorker(worker, new Error(`Worker error: ${error.message}`));\n // Fires when a response can't be deserialized; there's no requestId to\n // correlate, so everything in flight on this worker must reject.\n worker.onmessageerror = () =>\n this.rejectPendingFor(\n worker,\n new Error(\"Worker response could not be deserialized\")\n );\n\n // one-time JSON5 init message\n worker.postMessage({\n type: \"init\",\n scriptContent: kJson5ScriptBase64,\n });\n return worker;\n }\n\n private handleMessage(e: MessageEvent) {\n const {\n requestId,\n success,\n result,\n reparse,\n sourceText,\n nonFinitePaths,\n sentinels,\n error,\n stack,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- worker message boundary: MessageEvent.data is `any` and the payload is only what our own worker posts back\n } = e.data as WorkerParseResponse;\n const pending = this.pendingRequests.get(requestId);\n if (!pending) return;\n\n this.pendingRequests.delete(requestId);\n\n if (success) {\n if (reparse) {\n // The worker validated this as strict JSON; one plain JSON.parse\n // here is the cheapest way to materialize a large result on this\n // thread (structured clone of a big graph costs more, and a reviver\n // is ~8x slower than plain parse — see kWorkerCode). For repaired\n // payloads the worker pre-located the sentinel values, so restoring\n // NaN/Infinity is a targeted walk of just those paths (~µs).\n try {\n const parsed: unknown = JSON.parse(\n sourceText ?? pending.sourceText ?? \"\"\n );\n if (nonFinitePaths && sentinels) {\n applyNonFinitePaths(parsed, nonFinitePaths, sentinels);\n }\n pending.resolve(parsed);\n } catch (parseError) {\n pending.reject(parseError);\n }\n } else {\n pending.resolve(result);\n }\n } else {\n const err = new Error(error);\n if (stack) err.stack = stack;\n pending.reject(err);\n }\n }\n\n private rejectPendingFor(worker: Worker, err: Error) {\n for (const [requestId, pending] of this.pendingRequests) {\n if (pending.worker === worker) {\n this.pendingRequests.delete(requestId);\n pending.reject(err);\n }\n }\n }\n\n // A fatally-errored worker (e.g. OOM on a huge parse) can't serve further\n // requests — replace it in place so its rotation slot doesn't hang every\n // future request routed to it.\n private failWorker(worker: Worker, err: Error) {\n this.rejectPendingFor(worker, err);\n const index = this.workers.indexOf(worker);\n worker.terminate();\n if (index >= 0 && this.blobURL) {\n this.workers[index] = this.createWorker(this.blobURL);\n }\n }\n\n // Strings cross postMessage as a flat memcpy-style clone, which is much\n // cheaper than the TextEncoder.encode pass this used to do on the main\n // thread before transferring. The text is retained so a reparse response\n // doesn't need to ship it back.\n async parse(text: string): Promise<unknown> {\n return this.submit({ text }, [], text);\n }\n\n async parseBytes(data: Uint8Array): Promise<unknown> {\n // Ensure we own the full buffer before transferring\n const owned =\n data.byteOffset === 0 &&\n data.byteLength === data.buffer.byteLength &&\n data.buffer instanceof ArrayBuffer\n ? new Uint8Array(data.buffer)\n : data.slice();\n return this.submit({ bytes: owned }, [owned.buffer]);\n }\n\n // Least-loaded dispatch: pure round-robin would queue small requests\n // behind a multi-second parse while other workers sit idle.\n private pickWorker(): Worker {\n const inflight = new Map<Worker, number>();\n for (const pending of this.pendingRequests.values()) {\n inflight.set(pending.worker, (inflight.get(pending.worker) ?? 0) + 1);\n }\n let best = this.workers[this.nextRequestId % this.workers.length]!;\n let bestCount = inflight.get(best) ?? 0;\n for (const worker of this.workers) {\n const count = inflight.get(worker) ?? 0;\n if (count < bestCount) {\n best = worker;\n bestCount = count;\n }\n }\n return best;\n }\n\n private submit(\n payload: { text?: string; bytes?: Uint8Array },\n transfer: Transferable[] = [],\n sourceText?: string\n ): Promise<unknown> {\n this.ensureWorkers();\n\n const requestId = this.nextRequestId++;\n const worker = this.pickWorker();\n\n return new Promise((resolve, reject) => {\n this.pendingRequests.set(requestId, {\n resolve,\n reject,\n worker,\n sourceText,\n });\n try {\n worker.postMessage({ type: \"parse\", requestId, ...payload }, transfer);\n } catch (postError) {\n // e.g. DataCloneError on an already-detached buffer — without this\n // the pending entry would leak and the promise never settle\n this.pendingRequests.delete(requestId);\n reject(\n postError instanceof Error ? postError : new Error(String(postError))\n );\n }\n });\n }\n\n terminate() {\n this.workers.forEach((w) => w.terminate());\n this.workers = [];\n if (this.blobURL) {\n URL.revokeObjectURL(this.blobURL);\n this.blobURL = null;\n }\n const err = new Error(\"Worker pool terminated\");\n for (const pending of this.pendingRequests.values()) {\n pending.reject(err);\n }\n this.pendingRequests.clear();\n }\n}\n\n// Above this size, node-dense strict-JSON results skip the structured clone\n// and are re-parsed on the main thread instead (see kWorkerCode). Below it,\n// clone stalls are ~20ms or less and cloning avoids the second parse.\nconst kReparseThresholdChars = 10_000_000;\n\n// Repairs \"almost strict\" JSON — strict JSON except bare NaN/Infinity/\n// -Infinity tokens, which is what Python's json.dumps emits for non-finite\n// floats and the dominant real reason the JSON5 fallback exists — by\n// swapping those tokens for the given sentinel strings so native JSON.parse\n// (~100x faster than JSON5.parse) can take it from there. Tracks in-string\n// state, so tokens inside string values are never touched. Returns null if\n// the text needs real JSON5 (comments, unquoted keys, quotes, ...) or\n// contains no bare tokens; JSON.parse of the output remains the final\n// validator for anything this scan waves through (digits, exponents, ...).\n// Self-contained by design: its compiled source is injected into the worker\n// blob via toString(), so it must not reference module scope.\nconst repairNonFiniteJson = (\n source: string,\n nanToken: string,\n infToken: string,\n negInfToken: string\n): string | null => {\n const n = source.length;\n const parts: string[] = [];\n let copied = 0;\n let i = 0;\n // A bare token followed by ':' is a JSON5 unquoted object KEY ({NaN: 1}),\n // not a value — replacing it would silently rename the key, so bail to the\n // full JSON5 parser instead.\n const isKeyPosition = (after: number): boolean => {\n let j = after;\n while (j < n) {\n const w = source.charCodeAt(j);\n if (w === 32 || w === 9 || w === 10 || w === 13) j++;\n else return w === 58; /* : */\n }\n return false;\n };\n while (i < n) {\n const c = source.charCodeAt(i);\n if (c === 34 /* \" */) {\n i++;\n while (i < n) {\n const s = source.charCodeAt(i);\n if (s === 92 /* \\ */) i += 2;\n else if (s === 34) break;\n else i++;\n }\n i++;\n continue;\n }\n if (c === 78 /* N */) {\n if (!source.startsWith(\"NaN\", i) || isKeyPosition(i + 3)) return null;\n parts.push(source.slice(copied, i), nanToken);\n i += 3;\n copied = i;\n continue;\n }\n if (c === 73 /* I */) {\n if (!source.startsWith(\"Infinity\", i) || isKeyPosition(i + 8)) {\n return null;\n }\n parts.push(source.slice(copied, i), infToken);\n i += 8;\n copied = i;\n continue;\n }\n if (c === 45 /* - */) {\n if (source.startsWith(\"-Infinity\", i)) {\n if (isKeyPosition(i + 9)) return null;\n parts.push(source.slice(copied, i), negInfToken);\n i += 9;\n copied = i;\n } else {\n i++;\n }\n continue;\n }\n if (c === 116 /* t */) {\n if (!source.startsWith(\"true\", i)) return null;\n i += 4;\n continue;\n }\n if (c === 102 /* f */) {\n if (!source.startsWith(\"false\", i)) return null;\n i += 5;\n continue;\n }\n if (c === 110 /* n */) {\n if (!source.startsWith(\"null\", i)) return null;\n i += 4;\n continue;\n }\n if (\n c === 32 ||\n c === 9 ||\n c === 10 ||\n c === 13 || // whitespace\n c === 44 ||\n c === 58 ||\n c === 123 ||\n c === 125 ||\n c === 91 ||\n c === 93 || // , : { } [ ]\n (c >= 48 && c <= 57) ||\n c === 46 ||\n c === 101 ||\n c === 69 ||\n c === 43 // number chars . e E +\n ) {\n i++;\n continue;\n }\n return null;\n }\n if (parts.length === 0) return null;\n parts.push(source.slice(copied));\n return parts.join(\"\");\n};\n\n// Restores non-finite values at pre-located paths after a plain JSON.parse\n// of repaired text. Self-contained: injected into the worker via toString().\nconst applyNonFinitePaths = (\n root: unknown,\n paths: (string | number)[][],\n sentinels: { nan: string; inf: string; ninf: string }\n): void => {\n const isRecord = (v: unknown): v is Record<string | number, unknown> =>\n typeof v === \"object\" && v !== null;\n for (const path of paths) {\n let target: unknown = root;\n for (let i = 0; i < path.length - 1; i++) {\n if (!isRecord(target)) break;\n target = target[path[i]!];\n }\n // paths come from a walk of this same graph, so a miss here means the\n // document changed underneath us — skip rather than throw.\n if (!isRecord(target)) continue;\n const leaf = path[path.length - 1]!;\n const value = target[leaf];\n target[leaf] =\n value === sentinels.nan\n ? NaN\n : value === sentinels.inf\n ? Infinity\n : value === sentinels.ninf\n ? -Infinity\n : value;\n }\n};\n\n// Collects paths of sentinel-string values in a plain-parsed repaired\n// document. Bails (returns null) past maxPaths so a pathological all-NaN\n// document falls back to fixup-in-place + clone rather than shipping a huge\n// path list. Iterative with a reverse-linked key chain (materialized only on\n// hits): JSON.parse handles nesting far deeper than the JS call stack, so a\n// recursive walk would overflow where the parse succeeded. Self-contained:\n// injected into the worker via toString().\nconst findSentinelPaths = (\n root: unknown,\n sentinels: { nan: string; inf: string; ninf: string },\n maxPaths: number\n): (string | number)[][] | null => {\n const isRecord = (v: unknown): v is Record<string, unknown> =>\n typeof v === \"object\" && v !== null;\n type Frame = {\n node: unknown;\n key: string | number | null;\n prev: Frame | null;\n };\n const paths: (string | number)[][] = [];\n const stack: Frame[] = [{ node: root, key: null, prev: null }];\n while (stack.length > 0) {\n const frame = stack.pop()!;\n const node = frame.node;\n if (typeof node === \"string\") {\n if (\n node === sentinels.nan ||\n node === sentinels.inf ||\n node === sentinels.ninf\n ) {\n if (paths.length >= maxPaths) return null;\n const path: (string | number)[] = [];\n for (let f: Frame | null = frame; f && f.key !== null; f = f.prev) {\n path.push(f.key);\n }\n path.reverse();\n paths.push(path);\n }\n } else if (Array.isArray(node)) {\n for (let i = 0; i < node.length; i++) {\n const v: unknown = node[i];\n if (typeof v === \"string\" || (v && typeof v === \"object\")) {\n stack.push({ node: v, key: i, prev: frame });\n }\n }\n } else if (isRecord(node)) {\n for (const key of Object.keys(node)) {\n const v = node[key];\n if (typeof v === \"string\" || (v && typeof v === \"object\")) {\n stack.push({ node: v, key, prev: frame });\n }\n }\n }\n }\n return paths;\n};\n\n// Restores every sentinel in a parsed repaired document in place. Iterative\n// for the same deep-nesting reason as findSentinelPaths. Does not handle a\n// sentinel at the root (callers special-case root strings). Self-contained:\n// injected into the worker via toString().\nconst replaceSentinelsInPlace = (\n root: unknown,\n sentinels: { nan: string; inf: string; ninf: string }\n): void => {\n const isRecord = (v: unknown): v is Record<string, unknown> =>\n typeof v === \"object\" && v !== null;\n const restore = (v: unknown): unknown =>\n v === sentinels.nan\n ? NaN\n : v === sentinels.inf\n ? Infinity\n : v === sentinels.ninf\n ? -Infinity\n : v;\n const stack: unknown[] = [root];\n while (stack.length > 0) {\n const node = stack.pop();\n if (Array.isArray(node)) {\n for (let i = 0; i < node.length; i++) {\n const v: unknown = node[i];\n if (typeof v === \"string\") node[i] = restore(v);\n else if (v && typeof v === \"object\") stack.push(v);\n }\n } else if (isRecord(node)) {\n for (const key of Object.keys(node)) {\n const v = node[key];\n if (typeof v === \"string\") node[key] = restore(v);\n else if (v && typeof v === \"object\") stack.push(v);\n }\n }\n }\n};\n\n// Structural density of the document: separators per character, ignoring\n// string contents entirely — strings often embed serialized JSON or prose\n// commas, which say nothing about the size of the parsed graph (a >10MB\n// tool-call-heavy log would otherwise misclassify and take a main-thread\n// parse stall). Scans from position 0, where in-string state is known — a\n// mid-document sample can't tell string from structure — and stops after\n// 16M chars: enough to classify real transcript files whose heads are less\n// dense than their bodies (186MB scout: head-8MB reads 0.0499, head-16MB\n// 0.0799, full file 0.1321), while capping cost at ~45ms off-thread.\n// Strings are skipped via indexOf (SIMD-fast on string-heavy documents)\n// with backslash-parity checks for escaped quotes. Threshold from measured\n// shapes: dense 0.08-0.13 vs string-heavy <= 0.03 and embedded-JSON-in-\n// strings 0.011. Self-contained: injected into the worker via toString().\nconst isDenseGraph = (source: string): boolean => {\n const n = Math.min(source.length, 16_000_000);\n let seps = 0;\n let i = 0;\n while (i < n) {\n const c = source.charCodeAt(i);\n if (c === 34 /* \" */) {\n i++;\n while (i < n) {\n const quote = source.indexOf('\"', i);\n if (quote === -1 || quote >= n) {\n i = n;\n break;\n }\n let backslashes = 0;\n for (let j = quote - 1; j >= 0 && source.charCodeAt(j) === 92; j--) {\n backslashes++;\n }\n i = quote + 1;\n if (backslashes % 2 === 0) break;\n }\n continue;\n }\n if (c === 44 /* , */ || c === 58 /* : */) seps++;\n i++;\n }\n return seps / n > 0.05;\n};\n\n// Fallback for text JSON.parse rejected: try the cheap non-finite repair +\n// native parse first, full JSON5 only for real JSON5 syntax. (A restoring\n// reviver would be ~8x slower than plain parse + walk — see bench/.)\nconst parseFallback = (text: string): unknown => {\n const nonce = Math.random().toString(36).slice(2);\n const sentinels = {\n nan: `__json5_nan_${nonce}__`,\n inf: `__json5_inf_${nonce}__`,\n ninf: `__json5_ninf_${nonce}__`,\n };\n const repaired = repairNonFiniteJson(\n text,\n `\"${sentinels.nan}\"`,\n `\"${sentinels.inf}\"`,\n `\"${sentinels.ninf}\"`\n );\n if (repaired !== null) {\n let plain: unknown;\n let repairedOk = true;\n try {\n plain = JSON.parse(repaired);\n } catch {\n // repaired text still invalid — let JSON5 produce the real error\n repairedOk = false;\n }\n if (repairedOk) {\n if (typeof plain === \"string\") {\n // bare non-finite at the root (e.g. jsonParse(\"NaN\"))\n return plain === sentinels.nan\n ? NaN\n : plain === sentinels.inf\n ? Infinity\n : plain === sentinels.ninf\n ? -Infinity\n : plain;\n }\n replaceSentinelsInPlace(plain, sentinels);\n return plain;\n }\n }\n return JSON5.parse<unknown>(text);\n};\n\nconst workerPool = new JsonWorkerPool();\n\n// Below this size the worker round-trip costs more than it saves, so parsing\n// happens synchronously on the caller's thread. Measured in UTF-16 chars for\n// string inputs and bytes for byte inputs — close enough for a heuristic.\nconst kWorkerMinSize = 50000;\n\n/**\n * The one unchecked step in this module. Every entry point here names a `T`\n * the parser cannot verify — the same contract `JSON.parse(text) as T` has,\n * where the shape is the caller's claim about their own data. Funnelled\n * through here so no other line in the module has to assert.\n */\nconst asParsed = <T>(value: unknown): T =>\n // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- unsound-by-design generic parse API; see above\n value as T;\n\nexport const asyncJsonParse = async <T>(text: string): Promise<T> => {\n if (text.length < kWorkerMinSize) {\n return jsonParse<T>(text);\n } else {\n return asParsed<T>(await workerPool.parse(text));\n }\n};\n\n/**\n * Parse JSON from raw UTF-8 bytes, avoiding redundant main-thread\n * string allocation for large payloads.\n *\n * For small data (<50KB) decodes and parses on the main thread.\n * For large data, transfers the bytes directly to a Web Worker,\n * skipping the main-thread TextDecoder.decode + TextEncoder.encode\n * round-trip that asyncJsonParse(string) would require.\n *\n * NOTE: for large inputs the bytes are TRANSFERRED to the worker — the\n * caller's Uint8Array (and its whole ArrayBuffer, when the view covers it)\n * is detached and unusable afterwards. Pass a copy if you still need the\n * bytes; passing an already-detached view rejects with a DataCloneError.\n */\nexport const asyncJsonParseBytes = async <T>(data: Uint8Array): Promise<T> => {\n if (data.length < kWorkerMinSize) {\n const text = new TextDecoder(\"utf-8\").decode(data);\n return jsonParse<T>(text);\n } else {\n return asParsed<T>(await workerPool.parseBytes(data));\n }\n};\n\nexport const jsonParse = <T>(text: string): T => {\n try {\n // Optimistically, try a regular JSON parse first (this is much faster)\n return asParsed<T>(JSON.parse(text));\n } catch {\n return asParsed<T>(parseFallback(text));\n }\n};\n\nconst kWorkerCode = `\n// Store the JSON5 parser once loaded\nlet JSON5 = null;\nconst decoder = new TextDecoder();\n\n// Injected from the module-scope implementations (kept self-contained and\n// typechecked there; any change over there lands here automatically)\nconst repairNonFiniteJson = ${repairNonFiniteJson.toString()};\nconst findSentinelPaths = ${findSentinelPaths.toString()};\nconst replaceSentinelsInPlace = ${replaceSentinelsInPlace.toString()};\nconst isDenseGraph = ${isDenseGraph.toString()};\n\n// Non-strict JSON: repair Python-style bare NaN/Infinity and parse natively;\n// full (slow) JSON5 only for real JSON5 syntax. Returns { result } to clone\n// back, or { reparse, sourceText, nonFinitePaths, sentinels } when the main\n// thread is better off parsing the repaired text itself. A reviver would be\n// ~8x slower than plain parse on either thread, so sentinels are located\n// with an off-thread walk and restored by targeted fixup instead.\nfunction parseFallback(source, big, jsonError) {\n const nonce = Math.random().toString(36).slice(2);\n const sentinels = {\n nan: '__json5_nan_' + nonce + '__',\n inf: '__json5_inf_' + nonce + '__',\n ninf: '__json5_ninf_' + nonce + '__'\n };\n const repaired = repairNonFiniteJson(\n source,\n '\"' + sentinels.nan + '\"',\n '\"' + sentinels.inf + '\"',\n '\"' + sentinels.ninf + '\"');\n if (repaired !== null) {\n let plain;\n let repairedOk = true;\n try {\n plain = JSON.parse(repaired);\n } catch (repairError) {\n // repaired text still invalid — let JSON5 produce the real error\n repairedOk = false;\n }\n if (repairedOk) {\n if (typeof plain === 'string') {\n // bare non-finite at the root\n return {\n result: plain === sentinels.nan ? NaN\n : plain === sentinels.inf ? Infinity\n : plain === sentinels.ninf ? -Infinity\n : plain\n };\n }\n if (big && isDenseGraph(source)) {\n const paths = findSentinelPaths(plain, sentinels, 100000);\n if (paths !== null) {\n return { reparse: true, sourceText: repaired, nonFinitePaths: paths, sentinels };\n }\n // Path cap exceeded: a big dense document saturated with non-finite\n // values lands on the (slower) clone path — accepted inversion, the\n // alternative is shipping a path list rivaling the payload itself.\n }\n replaceSentinelsInPlace(plain, sentinels);\n return { result: plain };\n }\n }\n // Surface the original JSON error, not a null-JSON5 one, if init failed\n if (!JSON5) throw jsonError;\n return { result: JSON5.parse(source) };\n}\n\nself.onmessage = function (e) {\n const { type } = e.data || {};\n\n if (type === 'init') {\n const { scriptContent } = e.data;\n try {\n if (!JSON5) {\n const script = atob(scriptContent);\n new Function(script)();\n if (typeof self.JSON5 !== 'object' || typeof self.JSON5.parse !== 'function') {\n throw new Error('Failed to initialize JSON5 parser');\n }\n JSON5 = self.JSON5;\n }\n } catch (err) {\n // nothing to respond to yet; worker will fail on first parse if init failed\n console.error('JSON5 init error in worker', err);\n }\n return;\n }\n\n if (type === 'parse') {\n const { requestId, text, bytes } = e.data;\n\n try {\n const source = text !== undefined ? text : decoder.decode(bytes);\n const big = source.length > ${kReparseThresholdChars};\n\n // Structured clone hands the object graph straight to the main thread,\n // but its cost scales with node count: for big node-dense payloads it\n // blocks the receiving thread longer than a plain JSON.parse of the\n // source would (measured 4x total / 2x blocking on real 186MB\n // transcript data — see bench/). For those, skip the clone and tell\n // the main thread to run one JSON.parse itself — the cheapest possible\n // materialization. String-heavy payloads keep the clone (cheaper than\n // re-parsing).\n let response;\n try {\n // Optimistically, try a regular JSON parse first (this is much faster)\n const result = JSON.parse(source);\n if (big && isDenseGraph(source)) {\n // string requests retain their text on the main thread; byte\n // requests need the decoded source shipped back (cheap flat clone)\n response = text !== undefined\n ? { reparse: true }\n : { reparse: true, sourceText: source };\n } else {\n response = { result };\n }\n } catch (jsonError) {\n response = parseFallback(source, big, jsonError);\n }\n response.requestId = requestId;\n response.success = true;\n postMessage(response);\n } catch (err) {\n postMessage({\n requestId,\n success: false,\n error: err.message,\n stack: err.stack || ''\n });\n }\n }\n};`;\n\nconst kJson5ScriptBase64 = `IWZ1bmN0aW9uKHUsRCl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1EKCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoRCk6dS5KU09ONT1EKCl9KHRoaXMsZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdSh1LEQpe3JldHVybiB1KEQ9e2V4cG9ydHM6e319LEQuZXhwb3J0cyksRC5leHBvcnRzfXZhciBEPXUoZnVuY3Rpb24odSl7dmFyIEQ9dS5leHBvcnRzPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cuTWF0aD09TWF0aD93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmJiZzZWxmLk1hdGg9PU1hdGg/c2VsZjpGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpOyJudW1iZXIiPT10eXBlb2YgX19nJiYoX19nPUQpfSksZT11KGZ1bmN0aW9uKHUpe3ZhciBEPXUuZXhwb3J0cz17dmVyc2lvbjoiMi42LjUifTsibnVtYmVyIj09dHlwZW9mIF9fZSYmKF9fZT1EKX0pLHI9KGUudmVyc2lvbixmdW5jdGlvbih1KXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHU/bnVsbCE9PXU6ImZ1bmN0aW9uIj09dHlwZW9mIHV9KSx0PWZ1bmN0aW9uKHUpe2lmKCFyKHUpKXRocm93IFR5cGVFcnJvcih1KyIgaXMgbm90IGFuIG9iamVjdCEiKTtyZXR1cm4gdX0sbj1mdW5jdGlvbih1KXt0cnl7cmV0dXJuISF1KCl9Y2F0Y2godSl7cmV0dXJuITB9fSxGPSFuKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwiYSIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9KSxDPUQuZG9jdW1lbnQsQT1yKEMpJiZyKEMuY3JlYXRlRWxlbWVudCksaT0hRiYmIW4oZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KCh1PSJkaXYiLEE/Qy5jcmVhdGVFbGVtZW50KHUpOnt9KSwiYSIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmE7dmFyIHV9KSxFPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxvPXtmOkY/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKHUsRCxlKXtpZih0KHUpLEQ9ZnVuY3Rpb24odSxEKXtpZighcih1KSlyZXR1cm4gdTt2YXIgZSx0O2lmKEQmJiJmdW5jdGlvbiI9PXR5cGVvZihlPXUudG9TdHJpbmcpJiYhcih0PWUuY2FsbCh1KSkpcmV0dXJuIHQ7aWYoImZ1bmN0aW9uIj09dHlwZW9mKGU9dS52YWx1ZU9mKSYmIXIodD1lLmNhbGwodSkpKXJldHVybiB0O2lmKCFEJiYiZnVuY3Rpb24iPT10eXBlb2YoZT11LnRvU3RyaW5nKSYmIXIodD1lLmNhbGwodSkpKXJldHVybiB0O3Rocm93IFR5cGVFcnJvcigiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIil9KEQsITApLHQoZSksaSl0cnl7cmV0dXJuIEUodSxELGUpfWNhdGNoKHUpe31pZigiZ2V0ImluIGV8fCJzZXQiaW4gZSl0aHJvdyBUeXBlRXJyb3IoIkFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkISIpO3JldHVybiJ2YWx1ZSJpbiBlJiYodVtEXT1lLnZhbHVlKSx1fX0sYT1GP2Z1bmN0aW9uKHUsRCxlKXtyZXR1cm4gby5mKHUsRCxmdW5jdGlvbih1LEQpe3JldHVybntlbnVtZXJhYmxlOiEoMSZ1KSxjb25maWd1cmFibGU6ISgyJnUpLHdyaXRhYmxlOiEoNCZ1KSx2YWx1ZTpEfX0oMSxlKSl9OmZ1bmN0aW9uKHUsRCxlKXtyZXR1cm4gdVtEXT1lLHV9LGM9e30uaGFzT3duUHJvcGVydHksQj1mdW5jdGlvbih1LEQpe3JldHVybiBjLmNhbGwodSxEKX0scz0wLGY9TWF0aC5yYW5kb20oKSxsPXUoZnVuY3Rpb24odSl7dmFyIHI9RFsiX19jb3JlLWpzX3NoYXJlZF9fIl18fChEWyJfX2NvcmUtanNfc2hhcmVkX18iXT17fSk7KHUuZXhwb3J0cz1mdW5jdGlvbih1LEQpe3JldHVybiByW3VdfHwoclt1XT12b2lkIDAhPT1EP0Q6e30pfSkoInZlcnNpb25zIixbXSkucHVzaCh7dmVyc2lvbjplLnZlcnNpb24sbW9kZToiZ2xvYmFsIixjb3B5cmlnaHQ6IsKpIDIwMTkgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSkifSl9KSgibmF0aXZlLWZ1bmN0aW9uLXRvLXN0cmluZyIsRnVuY3Rpb24udG9TdHJpbmcpLGQ9dShmdW5jdGlvbih1KXt2YXIgcix0PSJTeW1ib2woIi5jb25jYXQodm9pZCAwPT09KHI9InNyYyIpPyIiOnIsIilfIiwoKytzK2YpLnRvU3RyaW5nKDM2KSksbj0oIiIrbCkuc3BsaXQoInRvU3RyaW5nIik7ZS5pbnNwZWN0U291cmNlPWZ1bmN0aW9uKHUpe3JldHVybiBsLmNhbGwodSl9LCh1LmV4cG9ydHM9ZnVuY3Rpb24odSxlLHIsRil7dmFyIEM9ImZ1bmN0aW9uIj09dHlwZW9mIHI7QyYmKEIociwibmFtZSIpfHxhKHIsIm5hbWUiLGUpKSx1W2VdIT09ciYmKEMmJihCKHIsdCl8fGEocix0LHVbZV0/IiIrdVtlXTpuLmpvaW4oU3RyaW5nKGUpKSkpLHU9PT1EP3VbZV09cjpGP3VbZV0/dVtlXT1yOmEodSxlLHIpOihkZWxldGUgdVtlXSxhKHUsZSxyKSkpfSkoRnVuY3Rpb24ucHJvdG90eXBlLCJ0b1N0cmluZyIsZnVuY3Rpb24oKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdGhpcyYmdGhpc1t0XXx8bC5jYWxsKHRoaXMpfSl9KSx2PWZ1bmN0aW9uKHUsRCxlKXtpZihmdW5jdGlvbih1KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdSl0aHJvdyBUeXBlRXJyb3IodSsiIGlzIG5vdCBhIGZ1bmN0aW9uISIpfSh1KSx2b2lkIDA9PT1EKXJldHVybiB1O3N3aXRjaChlKXtjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB1LmNhbGwoRCxlKX07Y2FzZSAyOnJldHVybiBmdW5jdGlvbihlLHIpe3JldHVybiB1LmNhbGwoRCxlLHIpfTtjYXNlIDM6cmV0dXJuIGZ1bmN0aW9uKGUscix0KXtyZXR1cm4gdS5jYWxsKEQsZSxyLHQpfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdS5hcHBseShELGFyZ3VtZW50cyl9fSxwPWZ1bmN0aW9uKHUscix0KXt2YXIgbixGLEMsQSxpPXUmcC5GLEU9dSZwLkcsbz11JnAuUyxjPXUmcC5QLEI9dSZwLkIscz1FP0Q6bz9EW3JdfHwoRFtyXT17fSk6KERbcl18fHt9KS5wcm90b3R5cGUsZj1FP2U6ZVtyXXx8KGVbcl09e30pLGw9Zi5wcm90b3R5cGV8fChmLnByb3RvdHlwZT17fSk7Zm9yKG4gaW4gRSYmKHQ9ciksdClDPSgoRj0haSYmcyYmdm9pZCAwIT09c1tuXSk/czp0KVtuXSxBPUImJkY/dihDLEQpOmMmJiJmdW5jdGlvbiI9PXR5cGVvZiBDP3YoRnVuY3Rpb24uY2FsbCxDKTpDLHMmJmQocyxuLEMsdSZwLlUpLGZbbl0hPUMmJmEoZixuLEEpLGMmJmxbbl0hPUMmJihsW25dPUMpfTtELmNvcmU9ZSxwLkY9MSxwLkc9MixwLlM9NCxwLlA9OCxwLkI9MTYscC5XPTMyLHAuVT02NCxwLlI9MTI4O3ZhciBoLG09cCxnPU1hdGguY2VpbCx5PU1hdGguZmxvb3Isdz1mdW5jdGlvbih1KXtyZXR1cm4gaXNOYU4odT0rdSk/MDoodT4wP3k6ZykodSl9LGI9KGg9ITEsZnVuY3Rpb24odSxEKXt2YXIgZSxyLHQ9U3RyaW5nKGZ1bmN0aW9uKHUpe2lmKG51bGw9PXUpdGhyb3cgVHlwZUVycm9yKCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAgIit1KTtyZXR1cm4gdX0odSkpLG49dyhEKSxGPXQubGVuZ3RoO3JldHVybiBuPDB8fG4+PUY/aD8iIjp2b2lkIDA6KGU9dC5jaGFyQ29kZUF0KG4pKTw1NTI5Nnx8ZT41NjMxOXx8bisxPT09Rnx8KHI9dC5jaGFyQ29kZUF0KG4rMSkpPDU2MzIwfHxyPjU3MzQzP2g/dC5jaGFyQXQobik6ZTpoP3Quc2xpY2UobixuKzIpOnItNTYzMjArKGUtNTUyOTY8PDEwKSs2NTUzNn0pO20obS5QLCJTdHJpbmciLHtjb2RlUG9pbnRBdDpmdW5jdGlvbih1KXtyZXR1cm4gYih0aGlzLHUpfX0pO2UuU3RyaW5nLmNvZGVQb2ludEF0O3ZhciBTPU1hdGgubWF4LHg9TWF0aC5taW4sTj1TdHJpbmcuZnJvbUNoYXJDb2RlLFA9U3RyaW5nLmZyb21Db2RlUG9pbnQ7bShtLlMrbS5GKighIVAmJjEhPVAubGVuZ3RoKSwiU3RyaW5nIix7ZnJvbUNvZGVQb2ludDpmdW5jdGlvbih1KXtmb3IodmFyIEQsZSxyLHQ9YXJndW1lbnRzLG49W10sRj1hcmd1bWVudHMubGVuZ3RoLEM9MDtGPkM7KXtpZihEPSt0W0MrK10scj0xMTE0MTExLCgoZT13KGU9RCkpPDA/UyhlK3IsMCk6eChlLHIpKSE9PUQpdGhyb3cgUmFuZ2VFcnJvcihEKyIgaXMgbm90IGEgdmFsaWQgY29kZSBwb2ludCIpO24ucHVzaChEPDY1NTM2P04oRCk6Tig1NTI5NisoKEQtPTY1NTM2KT4+MTApLEQlMTAyNCs1NjMyMCkpfXJldHVybiBuLmpvaW4oIiIpfX0pO2UuU3RyaW5nLmZyb21Db2RlUG9pbnQ7dmFyIF8sTyxqLEksVixKLE0sayxMLFQseixILCQsUixHPXtTcGFjZV9TZXBhcmF0b3I6L1tcdTE2ODBcdTIwMDAtXHUyMDBBXHUyMDJGXHUyMDVGXHUzMDAwXS8sSURfU3RhcnQ6L1tceEFBXHhCNVx4QkFceEMwLVx4RDZceEQ4LVx4RjZceEY4LVx1MDJDMVx1MDJDNi1cdTAyRDFcdTAyRTAtXHUwMkU0XHUwMkVDXHUwMkVFXHUwMzcwLVx1MDM3NFx1MDM3Nlx1MDM3N1x1MDM3QS1cdTAzN0RcdTAzN0ZcdTAzODZcdTAzODgtXHUwMzhBXHUwMzhDXHUwMzhFLVx1MDNBMVx1MDNBMy1cdTAzRjVcdTAzRjctXHUwNDgxXHUwNDhBLVx1MDUyRlx1MDUzMS1cdTA1NTZcdTA1NTlcdTA1NjEtXHUwNTg3XHUwNUQwLVx1MDVFQVx1MDVGMC1cdTA1RjJcdTA2MjAtXHUwNjRBXHUwNjZFXHUwNjZGXHUwNjcxLVx1MDZEM1x1MDZENVx1MDZFNVx1MDZFNlx1MDZFRVx1MDZFRlx1MDZGQS1cdTA2RkNcdTA2RkZcdTA3MTBcdTA3MTItXHUwNzJGXHUwNzRELVx1MDdBNVx1MDdCMVx1MDdDQS1cdTA3RUFcdTA3RjRcdTA3RjVcdTA3RkFcdTA4MDAtXHUwODE1XHUwODFBXHUwODI0XHUwODI4XHUwODQwLVx1MDg1OFx1MDg2MC1cdTA4NkFcdTA4QTAtXHUwOEI0XHUwOEI2LVx1MDhCRFx1MDkwNC1cdTA5MzlcdTA5M0RcdTA5NTBcdTA5NTgtXHUwOTYxXHUwOTcxLVx1MDk4MFx1MDk4NS1cdTA5OENcdTA5OEZcdTA5OTBcdTA5OTMtXHUwOUE4XHUwOUFBLVx1MDlCMFx1MDlCMlx1MDlCNi1cdTA5QjlcdTA5QkRcdTA5Q0VcdTA5RENcdTA5RERcdTA5REYtXHUwOUUxXHUwOUYwXHUwOUYxXHUwOUZDXHUwQTA1LVx1MEEwQVx1MEEwRlx1MEExMFx1MEExMy1cdTBBMjhcdTBBMkEtXHUwQTMwXHUwQTMyXHUwQTMzXHUwQTM1XHUwQTM2XHUwQTM4XHUwQTM5XHUwQTU5LVx1MEE1Q1x1MEE1RVx1MEE3Mi1cdTBBNzRcdTBBODUtXHUwQThEXHUwQThGLVx1MEE5MVx1MEE5My1cdTBBQThcdTBBQUEtXHUwQUIwXHUwQUIyXHUwQUIzXHUwQUI1LVx1MEFCOVx1MEFCRFx1MEFEMFx1MEFFMFx1MEFFMVx1MEFGOVx1MEIwNS1cdTBCMENcdTBCMEZcdTBCMTBcdTBCMTMtXHUwQjI4XHUwQjJBLVx1MEIzMFx1MEIzMlx1MEIzM1x1MEIzNS1cdTBCMzlcdTBCM0RcdTBCNUNcdTBCNURcdTBCNUYtXHUwQjYxXHUwQjcxXHUwQjgzXHUwQjg1LVx1MEI4QVx1MEI4RS1cdTBCOTBcdTBCOTItXHUwQjk1XHUwQjk5XHUwQjlBXHUwQjlDXHUwQjlFXHUwQjlGXHUwQkEzXHUwQkE0XHUwQkE4LVx1MEJBQVx1MEJBRS1cdTBCQjlcdTBCRDBcdTBDMDUtXHUwQzBDXHUwQzBFLVx1MEMxMFx1MEMxMi1cdTBDMjhcdTBDMkEtXHUwQzM5XHUwQzNEXHUwQzU4LVx1MEM1QVx1MEM2MFx1MEM2MVx1MEM4MFx1MEM4NS1cdTBDOENcdTBDOEUtXHUwQzkwXHUwQzkyLVx1MENBOFx1MENBQS1cdTBDQjNcdTBDQjUtXHUwQ0I5XHUwQ0JEXHUwQ0RFXHUwQ0UwXHUwQ0UxXHUwQ0YxXHUwQ0YyXHUwRDA1LVx1MEQwQ1x1MEQwRS1cdTBEMTBcdTBEMTItXHUwRDNBXHUwRDNEXHUwRDRFXHUwRDU0LVx1MEQ1Nlx1MEQ1Ri1cdTBENjFcdTBEN0EtXHUwRDdGXHUwRDg1LVx1MEQ5Nlx1MEQ5QS1cdTBEQjFcdTBEQjMtXHUwREJCXHUwREJEXHUwREMwLVx1MERDNlx1MEUwMS1cdTBFMzBcdTBFMzJcdTBFMzNcdTBFNDAtXHUwRTQ2XHUwRTgxXHUwRTgyXHUwRTg0XHUwRTg3XHUwRTg4XHUwRThBXHUwRThEXHUwRTk0LVx1MEU5N1x1MEU5OS1cdTBFOUZcdTBFQTEtXHUwRUEzXHUwRUE1XHUwRUE3XHUwRUFBXHUwRUFCXHUwRUFELVx1MEVCMFx1MEVCMlx1MEVCM1x1MEVCRFx1MEVDMC1cdTBFQzRcdTBFQzZcdTBFREMtXHUwRURGXHUwRjAwXHUwRjQwLVx1MEY0N1x1MEY0OS1cdTBGNkNcdTBGODgtXHUwRjhDXHUxMDAwLVx1MTAyQVx1MTAzRlx1MTA1MC1cdTEwNTVcdTEwNUEtXHUxMDVEXHUxMDYxXHUxMDY1XHUxMDY2XHUxMDZFLVx1MTA3MFx1MTA3NS1cdTEwODFcdTEwOEVcdTEwQTAtXHUxMEM1XHUxMEM3XHUxMENEXHUxMEQwLVx1MTBGQVx1MTBGQy1cdTEyNDhcdTEyNEEtXHUxMjREXHUxMjUwLVx1MTI1Nlx1MTI1OFx1MTI1QS1cdTEyNURcdTEyNjAtXHUxMjg4XHUxMjhBLVx1MTI4RFx1MTI5MC1cdTEyQjBcdTEyQjItXHUxMkI1XHUxMkI4LVx1MTJCRVx1MTJDMFx1MTJDMi1cdTEyQzVcdTEyQzgtXHUxMkQ2XHUxMkQ4LVx1MTMxMFx1MTMxMi1cdTEzMTVcdTEzMTgtXHUxMzVBXHUxMzgwLVx1MTM4Rlx1MTNBMC1cdTEzRjVcdTEzRjgtXHUxM0ZEXHUxNDAxLVx1MTY2Q1x1MTY2Ri1cdTE2N0ZcdTE2ODEtXHUxNjlBXHUxNkEwLVx1MTZFQVx1MTZFRS1cdTE2RjhcdTE3MDAtXHUxNzBDXHUxNzBFLVx1MTcxMVx1MTcyMC1cdTE3MzFcdTE3NDAtXHUxNzUxXHUxNzYwLVx1MTc2Q1x1MTc2RS1cdTE3NzBcdTE3ODAtXHUxN0IzXHUxN0Q3XHUxN0RDXHUxODIwLVx1MTg3N1x1MTg4MC1cdTE4ODRcdTE4ODctXHUxOEE4XHUxOEFBXHUxOEIwLVx1MThGNVx1MTkwMC1cdTE5MUVcdTE5NTAtXHUxOTZEXHUxOTcwLVx1MTk3NFx1MTk4MC1cdTE5QUJcdTE5QjAtXHUxOUM5XHUxQTAwLVx1MUExNlx1MUEyMC1cdTFBNTRcdTFBQTdcdTFCMDUtXHUxQjMzXHUxQjQ1LVx1MUI0Qlx1MUI4My1cdTFCQTBcdTFCQUVcdTFCQUZcdTFCQkEtXHUxQkU1XHUxQzAwLVx1MUMyM1x1MUM0RC1cdTFDNEZcdTFDNUEtXHUxQzdEXHUxQzgwLVx1MUM4OFx1MUNFOS1cdTFDRUNcdTFDRUUtXHUxQ0YxXHUxQ0Y1XHUxQ0Y2XHUxRDAwLVx1MURCRlx1MUUwMC1cdTFGMTVcdTFGMTgtXHUxRjFEXHUxRjIwLVx1MUY0NVx1MUY0OC1cdTFGNERcdTFGNTAtXHUxRjU3XHUxRjU5XHUxRjVCXHUxRjVEXHUxRjVGLVx1MUY3RFx1MUY4MC1cdTFGQjRcdTFGQjYtXHUxRkJDXHUxRkJFXHUxRkMyLVx1MUZDNFx1MUZDNi1cdTFGQ0NcdTFGRDAtXHUxRkQzXHUxRkQ2LVx1MUZEQlx1MUZFMC1cdTFGRUNcdTFGRjItXHUxRkY0XHUxRkY2LVx1MUZGQ1x1MjA3MVx1MjA3Rlx1MjA5MC1cdTIwOUNcdTIxMDJcdTIxMDdcdTIxMEEtXHUyMTEzXHUyMTE1XHUyMTE5LVx1MjExRFx1MjEyNFx1MjEyNlx1MjEyOFx1MjEyQS1cdTIxMkRcdTIxMkYtXHUyMTM5XHUyMTNDLVx1MjEzRlx1MjE0NS1cdTIxNDlcdTIxNEVcdTIxNjAtXHUyMTg4XHUyQzAwLVx1MkMyRVx1MkMzMC1cdTJDNUVcdTJDNjAtXHUyQ0U0XHUyQ0VCLVx1MkNFRVx1MkNGMlx1MkNGM1x1MkQwMC1cdTJEMjVcdTJEMjdcdTJEMkRcdTJEMzAtXHUyRDY3XHUyRDZGXHUyRDgwLVx1MkQ5Nlx1MkRBMC1cdTJEQTZcdTJEQTgtXHUyREFFXHUyREIwLVx1MkRCNlx1MkRCOC1cdTJEQkVcdTJEQzAtXHUyREM2XHUyREM4LVx1MkRDRVx1MkREMC1cdTJERDZcdTJERDgtXHUyRERFXHUyRTJGXHUzMDA1LVx1MzAwN1x1MzAyMS1cdTMwMjlcdTMwMzEtXHUzMDM1XHUzMDM4LVx1MzAzQ1x1MzA0MS1cdTMwOTZcdTMwOUQtXHUzMDlGXHUzMEExLVx1MzBGQVx1MzBGQy1cdTMwRkZcdTMxMDUtXHUzMTJFXHUzMTMxLVx1MzE4RVx1MzFBMC1cdTMxQkFcdTMxRjAtXHUzMUZGXHUzNDAwLVx1NERCNVx1NEUwMC1cdTlGRUFcdUEwMDAtXHVBNDhDXHVBNEQwLVx1QTRGRFx1QTUwMC1cdUE2MENcdUE2MTAtXHVBNjFGXHVBNjJBXHVBNjJCXHVBNjQwLVx1QTY2RVx1QTY3Ri1cdUE2OURcdUE2QTAtXHVBNkVGXHVBNzE3LVx1QTcxRlx1QTcyMi1cdUE3ODhcdUE3OEItXHVBN0FFXHVBN0IwLVx1QTdCN1x1QTdGNy1cdUE4MDFcdUE4MDMtXHVBODA1XHVBODA3LVx1QTgwQVx1QTgwQy1cdUE4MjJcdUE4NDAtXHVBODczXHVBODgyLVx1QThCM1x1QThGMi1cdUE4RjdcdUE4RkJcdUE4RkRcdUE5MEEtXHVBOTI1XHVBOTMwLVx1QTk0Nlx1QTk2MC1cdUE5N0NcdUE5ODQtXHVBOUIyXHVBOUNGXHVBOUUwLVx1QTlFNFx1QTlFNi1cdUE5RUZcdUE5RkEtXHVBOUZFXHVBQTAwLVx1QUEyOFx1QUE0MC1cdUFBNDJcdUFBNDQtXHVBQTRCXHVBQTYwLVx1QUE3Nlx1QUE3QVx1QUE3RS1cdUFBQUZcdUFBQjFcdUFBQjVcdUFBQjZcdUFBQjktXHVBQUJEXHVBQUMwXHVBQUMyXHVBQURCLVx1QUFERFx1QUFFMC1cdUFBRUFcdUFBRjItXHVBQUY0XHVBQjAxLVx1QUIwNlx1QUIwOS1cdUFCMEVcdUFCMTEtXHVBQjE2XHVBQjIwLVx1QUIyNlx1QUIyOC1cdUFCMkVcdUFCMzAtXHVBQjVBXHVBQjVDLVx1QUI2NVx1QUI3MC1cdUFCRTJcdUFDMDAtXHVEN0EzXHVEN0IwLVx1RDdDNlx1RDdDQi1cdUQ3RkJcdUY5MDAtXHVGQTZEXHVGQTcwLVx1RkFEOVx1RkIwMC1cdUZCMDZcdUZCMTMtXHVGQjE3XHVGQjFEXHVGQjFGLVx1RkIyOFx1RkIyQS1cdUZCMzZcdUZCMzgtXHVGQjNDXHVGQjNFXHVGQjQwXHVGQjQxXHVGQjQzXHVGQjQ0XHVGQjQ2LVx1RkJCMVx1RkJEMy1cdUZEM0RcdUZENTAtXHVGRDhGXHVGRDkyLVx1RkRDN1x1RkRGMC1cdUZERkJcdUZFNzAtXHVGRTc0XHVGRTc2LVx1RkVGQ1x1RkYyMS1cdUZGM0FcdUZGNDEtXHVGRjVBXHVGRjY2LVx1RkZCRVx1RkZDMi1cdUZGQzdcdUZGQ0EtXHVGRkNGXHVGRkQyLVx1RkZEN1x1RkZEQS1cdUZGRENdfFx1RDgwMFtcdURDMDAtXHVEQzBCXHVEQzBELVx1REMyNlx1REMyOC1cdURDM0FcdURDM0NcdURDM0RcdURDM0YtXHVEQzREXHVEQzUwLVx1REM1RFx1REM4MC1cdURDRkFcdURENDAtXHVERDc0XHVERTgwLVx1REU5Q1x1REVBMC1cdURFRDBcdURGMDAtXHVERjFGXHVERjJELVx1REY0QVx1REY1MC1cdURGNzVcdURGODAtXHVERjlEXHVERkEwLVx1REZDM1x1REZDOC1cdURGQ0ZcdURGRDEtXHVERkQ1XXxcdUQ4MDFbXHVEQzAwLVx1REM5RFx1RENCMC1cdURDRDNcdURDRDgtXHVEQ0ZCXHVERDAwLVx1REQyN1x1REQzMC1cdURENjNcdURFMDAtXHVERjM2XHVERjQwLVx1REY1NVx1REY2MC1cdURGNjddfFx1RDgwMltcdURDMDAtXHVEQzA1XHVEQzA4XHVEQzBBLVx1REMzNVx1REMzN1x1REMzOFx1REMzQ1x1REMzRi1cdURDNTVcdURDNjAtXHVEQzc2XHVEQzgwLVx1REM5RVx1RENFMC1cdURDRjJcdURDRjRcdURDRjVcdUREMDAtXHVERDE1XHVERDIwLVx1REQzOVx1REQ4MC1cdUREQjdcdUREQkVcdUREQkZcdURFMDBcdURFMTAtXHVERTEzXHVERTE1LVx1REUxN1x1REUxOS1cdURFMzNcdURFNjAtXHVERTdDXHVERTgwLVx1REU5Q1x1REVDMC1cdURFQzdcdURFQzktXHVERUU0XHVERjAwLVx1REYzNVx1REY0MC1cdURGNTVcdURGNjAtXHVERjcyXHVERjgwLVx1REY5MV18XHVEODAzW1x1REMwMC1cdURDNDhcdURDODAtXHVEQ0IyXHVEQ0MwLVx1RENGMl18XHVEODA0W1x1REMwMy1cdURDMzdcdURDODMtXHVEQ0FGXHVEQ0QwLVx1RENFOFx1REQwMy1cdUREMjZcdURENTAtXHVERDcyXHVERDc2XHVERDgzLVx1RERCMlx1RERDMS1cdUREQzRcdUREREFcdURERENcdURFMDAtXHVERTExXHVERTEzLVx1REUyQlx1REU4MC1cdURFODZcdURFODhcdURFOEEtXHVERThEXHVERThGLVx1REU5RFx1REU5Ri1cdURFQThcdURFQjAtXHVERURFXHVERjA1LVx1REYwQ1x1REYwRlx1REYxMFx1REYxMy1cdURGMjhcdURGMkEtXHVERjMwXHVERjMyXHVERjMzXHVERjM1LVx1REYzOVx1REYzRFx1REY1MFx1REY1RC1cdURGNjFdfFx1RDgwNVtcdURDMDAtXHVEQzM0XHVEQzQ3LVx1REM0QVx1REM4MC1cdURDQUZcdURDQzRcdURDQzVcdURDQzdcdUREODAtXHVEREFFXHVEREQ4LVx1REREQlx1REUwMC1cdURFMkZcdURFNDRcdURFODAtXHVERUFBXHVERjAwLVx1REYxOV18XHVEODA2W1x1RENBMC1cdURDREZcdURDRkZcdURFMDBcdURFMEItXHVERTMyXHVERTNBXHVERTUwXHVERTVDLVx1REU4M1x1REU4Ni1cdURFODlcdURFQzAtXHVERUY4XXxcdUQ4MDdbXHVEQzAwLVx1REMwOFx1REMwQS1cdURDMkVcdURDNDBcdURDNzItXHVEQzhGXHVERDAwLVx1REQwNlx1REQwOFx1REQwOVx1REQwQi1cdUREMzBcdURENDZdfFx1RDgwOFtcdURDMDAtXHVERjk5XXxcdUQ4MDlbXHVEQzAwLVx1REM2RVx1REM4MC1cdURENDNdfFtcdUQ4MENcdUQ4MUMtXHVEODIwXHVEODQwLVx1RDg2OFx1RDg2QS1cdUQ4NkNcdUQ4NkYtXHVEODcyXHVEODc0LVx1RDg3OV1bXHVEQzAwLVx1REZGRl18XHVEODBEW1x1REMwMC1cdURDMkVdfFx1RDgxMVtcdURDMDAtXHVERTQ2XXxcdUQ4MUFbXHVEQzAwLVx1REUzOFx1REU0MC1cdURFNUVcdURFRDAtXHVERUVEXHVERjAwLVx1REYyRlx1REY0MC1cdURGNDNcdURGNjMtXHVERjc3XHVERjdELVx1REY4Rl18XHVEODFCW1x1REYwMC1cdURGNDRcdURGNTBcdURGOTMtXHVERjlGXHVERkUwXHVERkUxXXxcdUQ4MjFbXHVEQzAwLVx1REZFQ118XHVEODIyW1x1REMwMC1cdURFRjJdfFx1RDgyQ1tcdURDMDAtXHVERDFFXHVERDcwLVx1REVGQl18XHVEODJGW1x1REMwMC1cdURDNkFcdURDNzAtXHVEQzdDXHVEQzgwLVx1REM4OFx1REM5MC1cdURDOTldfFx1RDgzNVtcdURDMDAtXHVEQzU0XHVEQzU2LVx1REM5Q1x1REM5RVx1REM5Rlx1RENBMlx1RENBNVx1RENBNlx1RENBOS1cdURDQUNcdURDQUUtXHVEQ0I5XHVEQ0JCXHVEQ0JELVx1RENDM1x1RENDNS1cdUREMDVcdUREMDctXHVERDBBXHVERDBELVx1REQxNFx1REQxNi1cdUREMUNcdUREMUUtXHVERDM5XHVERDNCLVx1REQzRVx1REQ0MC1cdURENDRcdURENDZcdURENEEtXHVERDUwXHVERDUyLVx1REVBNVx1REVBOC1cdURFQzBcdURFQzItXHVERURBXHVERURDLVx1REVGQVx1REVGQy1cdURGMTRcdURGMTYtXHVERjM0XHVERjM2LVx1REY0RVx1REY1MC1cdURGNkVcdURGNzAtXHVERjg4XHVERjhBLVx1REZBOFx1REZBQS1cdURGQzJcdURGQzQtXHVERkNCXXxcdUQ4M0FbXHVEQzAwLVx1RENDNFx1REQwMC1cdURENDNdfFx1RDgzQltcdURFMDAtXHVERTAzXHVERTA1LVx1REUxRlx1REUyMVx1REUyMlx1REUyNFx1REUyN1x1REUyOS1cdURFMzJcdURFMzQtXHVERTM3XHVERTM5XHVERTNCXHVERTQyXHVERTQ3XHVERTQ5XHVERTRCXHVERTRELVx1REU0Rlx1REU1MVx1REU1Mlx1REU1NFx1REU1N1x1REU1OVx1REU1Qlx1REU1RFx1REU1Rlx1REU2MVx1REU2Mlx1REU2NFx1REU2Ny1cdURFNkFcdURFNkMtXHVERTcyXHVERTc0LVx1REU3N1x1REU3OS1cdURFN0NcdURFN0VcdURFODAtXHVERTg5XHVERThCLVx1REU5Qlx1REVBMS1cdURFQTNcdURFQTUtXHVERUE5XHVERUFCLVx1REVCQl18XHVEODY5W1x1REMwMC1cdURFRDZcdURGMDAtXHVERkZGXXxcdUQ4NkRbXHVEQzAwLVx1REYzNFx1REY0MC1cdURGRkZdfFx1RDg2RVtcdURDMDAtXHVEQzFEXHVEQzIwLVx1REZGRl18XHVEODczW1x1REMwMC1cdURFQTFcdURFQjAtXHVERkZGXXxcdUQ4N0FbXHVEQzAwLVx1REZFMF18XHVEODdFW1x1REMwMC1cdURFMURdLyxJRF9Db250aW51ZTovW1x4QUFceEI1XHhCQVx4QzAtXHhENlx4RDgtXHhGNlx4RjgtXHUwMkMxXHUwMkM2LVx1MDJEMVx1MDJFMC1cdTAyRTRcdTAyRUNcdTAyRUVcdTAzMDAtXHUwMzc0XHUwMzc2XHUwMzc3XHUwMzdBLVx1MDM3RFx1MDM3Rlx1MDM4Nlx1MDM4OC1cdTAzOEFcdTAzOENcdTAzOEUtXHUwM0ExXHUwM0EzLVx1MDNGNVx1MDNGNy1cdTA0ODFcdTA0ODMtXHUwNDg3XHUwNDhBLVx1MDUyRlx1MDUzMS1cdTA1NTZcdTA1NTlcdTA1NjEtXHUwNTg3XHUwNTkxLVx1MDVCRFx1MDVCRlx1MDVDMVx1MDVDMlx1MDVDNFx1MDVDNVx1MDVDN1x1MDVEMC1cdTA1RUFcdTA1RjAtXHUwNUYyXHUwNjEwLVx1MDYxQVx1MDYyMC1cdTA2NjlcdTA2NkUtXHUwNkQzXHUwNkQ1LVx1MDZEQ1x1MDZERi1cdTA2RThcdTA2RUEtXHUwNkZDXHUwNkZGXHUwNzEwLVx1MDc0QVx1MDc0RC1cdTA3QjFcdTA3QzAtXHUwN0Y1XHUwN0ZBXHUwODAwLVx1MDgyRFx1MDg0MC1cdTA4NUJcdTA4NjAtXHUwODZBXHUwOEEwLVx1MDhCNFx1MDhCNi1cdTA4QkRcdTA4RDQtXHUwOEUxXHUwOEUzLVx1MDk2M1x1MDk2Ni1cdTA5NkZcdTA5NzEtXHUwOTgzXHUwOTg1LVx1MDk4Q1x1MDk4Rlx1MDk5MFx1MDk5My1cdTA5QThcdTA5QUEtXHUwOUIwXHUwOUIyXHUwOUI2LVx1MDlCOVx1MDlCQy1cdTA5QzRcdTA5QzdcdTA5QzhcdTA5Q0ItXHUwOUNFXHUwOUQ3XHUwOURDXHUwOUREXHUwOURGLVx1MDlFM1x1MDlFNi1cdTA5RjFcdTA5RkNcdTBBMDEtXHUwQTAzXHUwQTA1LVx1MEEwQVx1MEEwRlx1MEExMFx1MEExMy1cdTBBMjhcdTBBMkEtXHUwQTMwXHUwQTMyXHUwQTMzXHUwQTM1XHUwQTM2XHUwQTM4XHUwQTM5XHUwQTNDXHUwQTNFLVx1MEE0Mlx1MEE0N1x1MEE0OFx1MEE0Qi1cdTBBNERcdTBBNTFcdTBBNTktXHUwQTVDXHUwQTVFXHUwQTY2LVx1MEE3NVx1MEE4MS1cdTBBODNcdTBBODUtXHUwQThEXHUwQThGLVx1MEE5MVx1MEE5My1cdTBBQThcdTBBQUEtXHUwQUIwXHUwQUIyXHUwQUIzXHUwQUI1LVx1MEFCOVx1MEFCQy1cdTBBQzVcdTBBQzctXHUwQUM5XHUwQUNCLVx1MEFDRFx1MEFEMFx1MEFFMC1cdTBBRTNcdTBBRTYtXHUwQUVGXHUwQUY5LVx1MEFGRlx1MEIwMS1cdTBCMDNcdTBCMDUtXHUwQjBDXHUwQjBGXHUwQjEwXHUwQjEzLVx1MEIyOFx1MEIyQS1cdTBCMzBcdTBCMzJcdTBCMzNcdTBCMzUtXHUwQjM5XHUwQjNDLVx1MEI0NFx1MEI0N1x1MEI0OFx1MEI0Qi1cdTBCNERcdTBCNTZcdTBCNTdcdTBCNUNcdTBCNURcdTBCNUYtXHUwQjYzXHUwQjY2LVx1MEI2Rlx1MEI3MVx1MEI4Mlx1MEI4M1x1MEI4NS1cdTBCOEFcdTBCOEUtXHUwQjkwXHUwQjkyLVx1MEI5NVx1MEI5OVx1MEI5QVx1MEI5Q1x1MEI5RVx1MEI5Rlx1MEJBM1x1MEJBNFx1MEJBOC1cdTBCQUFcdTBCQUUtXHUwQkI5XHUwQkJFLVx1MEJDMlx1MEJDNi1cdTBCQzhcdTBCQ0EtXHUwQkNEXHUwQkQwXHUwQkQ3XHUwQkU2LVx1MEJFRlx1MEMwMC1cdTBDMDNcdTBDMDUtXHUwQzBDXHUwQzBFLVx1MEMxMFx1MEMxMi1cdTBDMjhcdTBDMkEtXHUwQzM5XHUwQzNELVx1MEM0NFx1MEM0Ni1cdTBDNDhcdTBDNEEtXHUwQzREXHUwQzU1XHUwQzU2XHUwQzU4LVx1MEM1QVx1MEM2MC1cdTBDNjNcdTBDNjYtXHUwQzZGXHUwQzgwLVx1MEM4M1x1MEM4NS1cdTBDOENcdTBDOEUtXHUwQzkwXHUwQzkyLVx1MENBOFx1MENBQS1cdTBDQjNcdTBDQjUtXHUwQ0I5XHUwQ0JDLVx1MENDNFx1MENDNi1cdTBDQzhcdTBDQ0EtXHUwQ0NEXHUwQ0Q1XHUwQ0Q2XHUwQ0RFXHUwQ0UwLVx1MENFM1x1MENFNi1cdTBDRUZcdTBDRjFcdTBDRjJcdTBEMDAtXHUwRDAzXHUwRDA1LVx1MEQwQ1x1MEQwRS1cdTBEMTBcdTBEMTItXHUwRDQ0XHUwRDQ2LVx1MEQ0OFx1MEQ0QS1cdTBENEVcdTBENTQtXHUwRDU3XHUwRDVGLVx1MEQ2M1x1MEQ2Ni1cdTBENkZcdTBEN0EtXHUwRDdGXHUwRDgyXHUwRDgzXHUwRDg1LVx1MEQ5Nlx1MEQ5QS1cdTBEQjFcdTBEQjMtXHUwREJCXHUwREJEXHUwREMwLVx1MERDNlx1MERDQVx1MERDRi1cdTBERDRcdTBERDZcdTBERDgtXHUwRERGXHUwREU2LVx1MERFRlx1MERGMlx1MERGM1x1MEUwMS1cdTBFM0FcdTBFNDAtXHUwRTRFXHUwRTUwLVx1MEU1OVx1MEU4MVx1MEU4Mlx1MEU4NFx1MEU4N1x1MEU4OFx1MEU4QVx1MEU4RFx1MEU5NC1cdTBFOTdcdTBFOTktXHUwRTlGXHUwRUExLVx1MEVBM1x1MEVBNVx1MEVBN1x1MEVBQVx1MEVBQlx1MEVBRC1cdTBFQjlcdTBFQkItXHUwRUJEXHUwRUMwLVx1MEVDNFx1MEVDNlx1MEVDOC1cdTBFQ0RcdTBFRDAtXHUwRUQ5XHUwRURDLVx1MEVERlx1MEYwMFx1MEYxOFx1MEYxOVx1MEYyMC1cdTBGMjlcdTBGMzVcdTBGMzdcdTBGMzlcdTBGM0UtXHUwRjQ3XHUwRjQ5LVx1MEY2Q1x1MEY3MS1cdTBGODRcdTBGODYtXHUwRjk3XHUwRjk5LVx1MEZCQ1x1MEZDNlx1MTAwMC1cdTEwNDlcdTEwNTAtXHUxMDlEXHUxMEEwLVx1MTBDNVx1MTBDN1x1MTBDRFx1MTBEMC1cdTEwRkFcdTEwRkMtXHUxMjQ4XHUxMjRBLVx1MTI0RFx1MTI1MC1cdTEyNTZcdTEyNThcdTEyNUEtXHUxMjVEXHUxMjYwLVx1MTI4OFx1MTI4QS1cdTEyOERcdTEyOTAtXHUxMkIwXHUxMkIyLVx1MTJCNVx1MTJCOC1cdTEyQkVcdTEyQzBcdTEyQzItXHUxMkM1XHUxMkM4LVx1MTJENlx1MTJEOC1cdTEzMTBcdTEzMTItXHUxMzE1XHUxMzE4LVx1MTM1QVx1MTM1RC1cdTEzNUZcdTEzODAtXHUxMzhGXHUxM0EwLVx1MTNGNVx1MTNGOC1cdTEzRkRcdTE0MDEtXHUxNjZDXHUxNjZGLVx1MTY3Rlx1MTY4MS1cdTE2OUFcdTE2QTAtXHUxNkVBXHUxNkVFLVx1MTZGOFx1MTcwMC1cdTE3MENcdTE3MEUtXHUxNzE0XHUxNzIwLVx1MTczNFx1MTc0MC1cdTE3NTNcdTE3NjAtXHUxNzZDXHUxNzZFLVx1MTc3MFx1MTc3Mlx1MTc3M1x1MTc4MC1cdTE3RDNcdTE3RDdcdTE3RENcdTE3RERcdTE3RTAtXHUxN0U5XHUxODBCLVx1MTgwRFx1MTgxMC1cdTE4MTlcdTE4MjAtXHUxODc3XHUxODgwLVx1MThBQVx1MThCMC1cdTE4RjVcdTE5MDAtXHUxOTFFXHUxOTIwLVx1MTkyQlx1MTkzMC1cdTE5M0JcdTE5NDYtXHUxOTZEXHUxOTcwLVx1MTk3NFx1MTk4MC1cdTE5QUJcdTE5QjAtXHUxOUM5XHUxOUQwLVx1MTlEOVx1MUEwMC1cdTFBMUJcdTFBMjAtXHUxQTVFXHUxQTYwLVx1MUE3Q1x1MUE3Ri1cdTFBODlcdTFBOTAtXHUxQTk5XHUxQUE3XHUxQUIwLVx1MUFCRFx1MUIwMC1cdTFCNEJcdTFCNTAtXHUxQjU5XHUxQjZCLVx1MUI3M1x1MUI4MC1cdTFCRjNcdTFDMDAtXHUxQzM3XHUxQzQwLVx1MUM0OVx1MUM0RC1cdTFDN0RcdTFDODAtXHUxQzg4XHUxQ0QwLVx1MUNEMlx1MUNENC1cdTFDRjlcdTFEMDAtXHUxREY5XHUxREZCLVx1MUYxNVx1MUYxOC1cdTFGMURcdTFGMjAtXHUxRjQ1XHUxRjQ4LVx1MUY0RFx1MUY1MC1cdTFGNTdcdTFGNTlcdTFGNUJcdTFGNURcdTFGNUYtXHUxRjdEXHUxRjgwLVx1MUZCNFx1MUZCNi1cdTFGQkNcdTFGQkVcdTFGQzItXHUxRkM0XHUxRkM2LVx1MUZDQ1x1MUZEMC1cdTFGRDNcdTFGRDYtXHUxRkRCXHUxRkUwLVx1MUZFQ1x1MUZGMi1cdTFGRjRcdTFGRjYtXHUxRkZDXHUyMDNGXHUyMDQwXHUyMDU0XHUyMDcxXHUyMDdGXHUyMDkwLVx1MjA5Q1x1MjBEMC1cdTIwRENcdTIwRTFcdTIwRTUtXHUyMEYwXHUyMTAyXHUyMTA3XHUyMTBBLVx1MjExM1x1MjExNVx1MjExOS1cdTIxMURcdTIxMjRcdTIxMjZcdTIxMjhcdTIxMkEtXHUyMTJEXHUyMTJGLVx1MjEzOVx1MjEzQy1cdTIxM0ZcdTIxNDUtXHUyMTQ5XHUyMTRFXHUyMTYwLVx1MjE4OFx1MkMwMC1cdTJDMkVcdTJDMzAtXHUyQzVFXHUyQzYwLVx1MkNFNFx1MkNFQi1cdTJDRjNcdTJEMDAtXHUyRDI1XHUyRDI3XHUyRDJEXHUyRDMwLVx1MkQ2N1x1MkQ2Rlx1MkQ3Ri1cdTJEOTZcdTJEQTAtXHUyREE2XHUyREE4LVx1MkRBRVx1MkRCMC1cdTJEQjZcdTJEQjgtXHUyREJFXHUyREMwLVx1MkRDNlx1MkRDOC1cdTJEQ0VcdTJERDAtXHUyREQ2XHUyREQ4LVx1MkRERVx1MkRFMC1cdTJERkZcdTJFMkZcdTMwMDUtXHUzMDA3XHUzMDIxLVx1MzAyRlx1MzAzMS1cdTMwMzVcdTMwMzgtXHUzMDNDXHUzMDQxLVx1MzA5Nlx1MzA5OVx1MzA5QVx1MzA5RC1cdTMwOUZcdTMwQTEtXHUzMEZBXHUzMEZDLVx1MzBGRlx1MzEwNS1cdTMxMkVcdTMxMzEtXHUzMThFXHUzMUEwLVx1MzFCQVx1MzFGMC1cdTMxRkZcdTM0MDAtXHU0REI1XHU0RTAwLVx1OUZFQVx1QTAwMC1cdUE0OENcdUE0RDAtXHVBNEZEXHVBNTAwLVx1QTYwQ1x1QTYxMC1cdUE2MkJcdUE2NDAtXHVBNjZGXHVBNjc0LVx1QTY3RFx1QTY3Ri1cdUE2RjFcdUE3MTctXHVBNzFGXHVBNzIyLVx1QTc4OFx1QTc4Qi1cdUE3QUVcdUE3QjAtXHVBN0I3XHVBN0Y3LVx1QTgyN1x1QTg0MC1cdUE4NzNcdUE4ODAtXHVBOEM1XHVBOEQwLVx1QThEOVx1QThFMC1cdUE4RjdcdUE4RkJcdUE4RkRcdUE5MDAtXHVBOTJEXHVBOTMwLVx1QTk1M1x1QTk2MC1cdUE5N0NcdUE5ODAtXHVBOUMwXHVBOUNGLVx1QTlEOVx1QTlFMC1cdUE5RkVcdUFBMDAtXHVBQTM2XHVBQTQwLVx1QUE0RFx1QUE1MC1cdUFBNTlcdUFBNjAtXHVBQTc2XHVBQTdBLVx1QUFDMlx1QUFEQi1cdUFBRERcdUFBRTAtXHVBQUVGXHVBQUYyLVx1QUFGNlx1QUIwMS1cdUFCMDZcdUFCMDktXHVBQjBFXHVBQjExLVx1QUIxNlx1QUIyMC1cdUFCMjZcdUFCMjgtXHVBQjJFXHVBQjMwLVx1QUI1QVx1QUI1Qy1cdUFCNjVcdUFCNzAtXHVBQkVBXHVBQkVDXHVBQkVEXHVBQkYwLVx1QUJGOVx1QUMwMC1cdUQ3QTNcdUQ3QjAtXHVEN0M2XHVEN0NCLVx1RDdGQlx1RjkwMC1cdUZBNkRcdUZBNzAtXHVGQUQ5XHVGQjAwLVx1RkIwNlx1RkIxMy1cdUZCMTdcdUZCMUQtXHVGQjI4XHVGQjJBLVx1RkIzNlx1RkIzOC1cdUZCM0NcdUZCM0VcdUZCNDBcdUZCNDFcdUZCNDNcdUZCNDRcdUZCNDYtXHVGQkIxXHVGQkQzLVx1RkQzRFx1RkQ1MC1cdUZEOEZcdUZEOTItXHVGREM3XHVGREYwLVx1RkRGQlx1RkUwMC1cdUZFMEZcdUZFMjAtXHVGRTJGXHVGRTMzXHVGRTM0XHVGRTRELVx1RkU0Rlx1RkU3MC1cdUZFNzRcdUZFNzYtXHVGRUZDXHVGRjEwLVx1RkYxOVx1RkYyMS1cdUZGM0FcdUZGM0ZcdUZGNDEtXHVGRjVBXHVGRjY2LVx1RkZCRVx1RkZDMi1cdUZGQzdcdUZGQ0EtXHVGRkNGXHVGRkQyLVx1RkZEN1x1RkZEQS1cdUZGRENdfFx1RDgwMFtcdURDMDAtXHVEQzBCXHVEQzBELVx1REMyNlx1REMyOC1cdURDM0FcdURDM0NcdURDM0RcdURDM0YtXHVEQzREXHVEQzUwLVx1REM1RFx1REM4MC1cdURDRkFcdURENDAtXHVERDc0XHVEREZEXHVERTgwLVx1REU5Q1x1REVBMC1cdURFRDBcdURFRTBcdURGMDAtXHVERjFGXHVERjJELVx1REY0QVx1REY1MC1cdURGN0FcdURGODAtXHVERjlEXHVERkEwLVx1REZDM1x1REZDOC1cdURGQ0ZcdURGRDEtXHVERkQ1XXxcdUQ4MDFbXHVEQzAwLVx1REM5RFx1RENBMC1cdURDQTlcdURDQjAtXHVEQ0QzXHVEQ0Q4LVx1RENGQlx1REQwMC1cdUREMjdcdUREMzAtXHVERDYzXHVERTAwLVx1REYzNlx1REY0MC1cdURGNTVcdURGNjAtXHVERjY3XXxcdUQ4MDJbXHVEQzAwLVx1REMwNVx1REMwOFx1REMwQS1cdURDMzVcdURDMzdcdURDMzhcdURDM0NcdURDM0YtXHVEQzU1XHVEQzYwLVx1REM3Nlx1REM4MC1cdURDOUVcdURDRTAtXHVEQ0YyXHVEQ0Y0XHVEQ0Y1XHVERDAwLVx1REQxNVx1REQyMC1cdUREMzlcdUREODAtXHVEREI3XHVEREJFXHVEREJGXHVERTAwLVx1REUwM1x1REUwNVx1REUwNlx1REUwQy1cdURFMTNcdURFMTUtXHVERTE3XHVERTE5LVx1REUzM1x1REUzOC1cdURFM0FcdURFM0ZcdURFNjAtXHVERTdDXHVERTgwLVx1REU5Q1x1REVDMC1cdURFQzdcdURFQzktXHVERUU2XHVERjAwLVx1REYzNVx1REY0MC1cdURGNTVcdURGNjAtXHVERjcyXHVERjgwLVx1REY5MV18XHVEODAzW1x1REMwMC1cdURDNDhcdURDODAtXHVEQ0IyXHVEQ0MwLVx1RENGMl18XHVEODA0W1x1REMwMC1cdURDNDZcdURDNjYtXHVEQzZGXHVEQzdGLVx1RENCQVx1RENEMC1cdURDRThcdURDRjAtXHVEQ0Y5XHVERDAwLVx1REQzNFx1REQzNi1cdUREM0ZcdURENTAtXHVERDczXHVERDc2XHVERDgwLVx1RERDNFx1RERDQS1cdUREQ0NcdURERDAtXHVERERBXHVERERDXHVERTAwLVx1REUxMVx1REUxMy1cdURFMzdcdURFM0VcdURFODAtXHVERTg2XHVERTg4XHVERThBLVx1REU4RFx1REU4Ri1cdURFOURcdURFOUYtXHVERUE4XHVERUIwLVx1REVFQVx1REVGMC1cdURFRjlcdURGMDAtXHVERjAzXHVERjA1LVx1REYwQ1x1REYwRlx1REYxMFx1REYxMy1cdURGMjhcdURGMkEtXHVERjMwXHVERjMyXHVERjMzXHVERjM1LVx1REYzOVx1REYzQy1cdURGNDRcdURGNDdcdURGNDhcdURGNEItXHVERjREXHVERjUwXHVERjU3XHVERjVELVx1REY2M1x1REY2Ni1cdURGNkNcdURGNzAtXHVERjc0XXxcdUQ4MDVbXHVEQzAwLVx1REM0QVx1REM1MC1cdURDNTlcdURDODAtXHVEQ0M1XHVEQ0M3XHVEQ0QwLVx1RENEOVx1REQ4MC1cdUREQjVcdUREQjgtXHVEREMwXHVEREQ4LVx1RERERFx1REUwMC1cdURFNDBcdURFNDRcdURFNTAtXHVERTU5XHVERTgwLVx1REVCN1x1REVDMC1cdURFQzlcdURGMDAtXHVERjE5XHVERjFELVx1REYyQlx1REYzMC1cdURGMzldfFx1RDgwNltcdURDQTAtXHVEQ0U5XHVEQ0ZGXHVERTAwLVx1REUzRVx1REU0N1x1REU1MC1cdURFODNcdURFODYtXHVERTk5XHVERUMwLVx1REVGOF18XHVEODA3W1x1REMwMC1cdURDMDhcdURDMEEtXHVEQzM2XHVEQzM4LVx1REM0MFx1REM1MC1cdURDNTlcdURDNzItXHVEQzhGXHVEQzkyLVx1RENBN1x1RENBOS1cdURDQjZcdUREMDAtXHVERDA2XHVERDA4XHVERDA5XHVERDBCLVx1REQzNlx1REQzQVx1REQzQ1x1REQzRFx1REQzRi1cdURENDdcdURENTAtXHVERDU5XXxcdUQ4MDhbXHVEQzAwLVx1REY5OV18XHVEODA5W1x1REMwMC1cdURDNkVcdURDODAtXHVERDQzXXxbXHVEODBDXHVEODFDLVx1RDgyMFx1RDg0MC1cdUQ4NjhcdUQ4NkEtXHVEODZDXHVEODZGLVx1RDg3Mlx1RDg3NC1cdUQ4NzldW1x1REMwMC1cdURGRkZdfFx1RDgwRFtcdURDMDAtXHVEQzJFXXxcdUQ4MTFbXHVEQzAwLVx1REU0Nl18XHVEODFBW1x1REMwMC1cdURFMzhcdURFNDAtXHVERTVFXHVERTYwLVx1REU2OVx1REVEMC1cdURFRURcdURFRjAtXHVERUY0XHVERjAwLVx1REYzNlx1REY0MC1cdURGNDNcdURGNTAtXHVERjU5XHVERjYzLVx1REY3N1x1REY3RC1cdURGOEZdfFx1RDgxQltcdURGMDAtXHVERjQ0XHVERjUwLVx1REY3RVx1REY4Ri1cdURGOUZcdURGRTBcdURGRTFdfFx1RDgyMVtcdURDMDAtXHVERkVDXXxcdUQ4MjJbXHVEQzAwLVx1REVGMl18XHVEODJDW1x1REMwMC1cdUREMUVcdURENzAtXHVERUZCXXxcdUQ4MkZbXHVEQzAwLVx1REM2QVx1REM3MC1cdURDN0NcdURDODAtXHVEQzg4XHVEQzkwLVx1REM5OVx1REM5RFx1REM5RV18XHVEODM0W1x1REQ2NS1cdURENjlcdURENkQtXHVERDcyXHVERDdCLVx1REQ4Mlx1REQ4NS1cdUREOEJcdUREQUEtXHVEREFEXHVERTQyLVx1REU0NF18XHVEODM1W1x1REMwMC1cdURDNTRcdURDNTYtXHVEQzlDXHVEQzlFXHVEQzlGXHVEQ0EyXHVEQ0E1XHVEQ0E2XHVEQ0E5LVx1RENBQ1x1RENBRS1cdURDQjlcdURDQkJcdURDQkQtXHVEQ0MzXHVEQ0M1LVx1REQwNVx1REQwNy1cdUREMEFcdUREMEQtXHVERDE0XHVERDE2LVx1REQxQ1x1REQxRS1cdUREMzlcdUREM0ItXHVERDNFXHVERDQwLVx1REQ0NFx1REQ0Nlx1REQ0QS1cdURENTBcdURENTItXHVERUE1XHVERUE4LVx1REVDMFx1REVDMi1cdURFREFcdURFREMtXHVERUZBXHVERUZDLVx1REYxNFx1REYxNi1cdURGMzRcdURGMzYtXHVERjRFXHVERjUwLVx1REY2RVx1REY3MC1cdURGODhcdURGOEEtXHVERkE4XHVERkFBLVx1REZDMlx1REZDNC1cdURGQ0JcdURGQ0UtXHVERkZGXXxcdUQ4MzZbXHVERTAwLVx1REUzNlx1REUzQi1cdURFNkNcdURFNzVcdURFODRcdURFOUItXHVERTlGXHVERUExLVx1REVBRl18XHVEODM4W1x1REMwMC1cdURDMDZcdURDMDgtXHVEQzE4XHVEQzFCLVx1REMyMVx1REMyM1x1REMyNFx1REMyNi1cdURDMkFdfFx1RDgzQVtcdURDMDAtXHVEQ0M0XHVEQ0QwLVx1RENENlx1REQwMC1cdURENEFcdURENTAtXHVERDU5XXxcdUQ4M0JbXHVERTAwLVx1REUwM1x1REUwNS1cdURFMUZcdURFMjFcdURFMjJcdURFMjRcdURFMjdcdURFMjktXHVERTMyXHVERTM0LVx1REUzN1x1REUzOVx1REUzQlx1REU0Mlx1REU0N1x1REU0OVx1REU0Qlx1REU0RC1cdURFNEZcdURFNTFcdURFNTJcdURFNTRcdURFNTdcdURFNTlcdURFNUJcdURFNURcdURFNUZcdURFNjFcdURFNjJcdURFNjRcdURFNjctXHVERTZBXHVERTZDLVx1REU3Mlx1REU3NC1cdURFNzdcdURFNzktXHVERTdDXHVERTdFXHVERTgwLVx1REU4OVx1REU4Qi1cdURFOUJcdURFQTEtXHVERUEzXHVERUE1LVx1REVBOVx1REVBQi1cdURFQkJdfFx1RDg2OVtcdURDMDAtXHVERUQ2XHVERjAwLVx1REZGRl18XHVEODZEW1x1REMwMC1cdURGMzRcdURGNDAtXHVERkZGXXxcdUQ4NkVbXHVEQzAwLVx1REMxRFx1REMyMC1cdURGRkZdfFx1RDg3M1tcdURDMDAtXHVERUExXHVERUIwLVx1REZGRl18XHVEODdBW1x1REMwMC1cdURGRTBdfFx1RDg3RVtcdURDMDAtXHVERTFEXXxcdURCNDBbXHVERDAwLVx1RERFRl0vfSxVPXtpc1NwYWNlU2VwYXJhdG9yOmZ1bmN0aW9uKHUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdSYmRy5TcGFjZV9TZXBhcmF0b3IudGVzdCh1KX0saXNJZFN0YXJ0Q2hhcjpmdW5jdGlvbih1KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHUmJih1Pj0iYSImJnU8PSJ6Inx8dT49IkEiJiZ1PD0iWiJ8fCIkIj09PXV8fCJfIj09PXV8fEcuSURfU3RhcnQudGVzdCh1KSl9LGlzSWRDb250aW51ZUNoYXI6ZnVuY3Rpb24odSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB1JiYodT49ImEiJiZ1PD0ieiJ8fHU+PSJBIiYmdTw9IloifHx1Pj0iMCImJnU8PSI5Inx8IiQiPT09dXx8Il8iPT09dXx8IuKAjCI9PT11fHwi4oCNIj09PXV8fEcuSURfQ29udGludWUudGVzdCh1KSl9LGlzRGlnaXQ6ZnVuY3Rpb24odSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB1JiYvWzAtOV0vLnRlc3QodSl9LGlzSGV4RGlnaXQ6ZnVuY3Rpb24odSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB1JiYvWzAtOUEtRmEtZl0vLnRlc3QodSl9fTtmdW5jdGlvbiBaKCl7Zm9yKFQ9ImRlZmF1bHQiLHo9IiIsSD0hMSwkPTE7Oyl7Uj1xKCk7dmFyIHU9WFtUXSgpO2lmKHUpcmV0dXJuIHV9fWZ1bmN0aW9uIHEoKXtpZihfW0ldKXJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludChfLmNvZGVQb2ludEF0KEkpKX1mdW5jdGlvbiBXKCl7dmFyIHU9cSgpO3JldHVybiJcbiI9PT11PyhWKyssSj0wKTp1P0orPXUubGVuZ3RoOkorKyx1JiYoSSs9dS5sZW5ndGgpLHV9dmFyIFg9e2RlZmF1bHQ6ZnVuY3Rpb24oKXtzd2l0Y2goUil7Y2FzZSJcdCI6Y2FzZSJcdiI6Y2FzZSJcZiI6Y2FzZSIgIjpjYXNlIiAiOmNhc2UiXHVmZWZmIjpjYXNlIlxuIjpjYXNlIlxyIjpjYXNlIlx1MjAyOCI6Y2FzZSJcdTIwMjkiOnJldHVybiB2b2lkIFcoKTtjYXNlIi8iOnJldHVybiBXKCksdm9pZChUPSJjb21tZW50Iik7Y2FzZSB2b2lkIDA6cmV0dXJuIFcoKSxLKCJlb2YiKX1pZighVS5pc1NwYWNlU2VwYXJhdG9yKFIpKXJldHVybiBYW09dKCk7VygpfSxjb21tZW50OmZ1bmN0aW9uKCl7c3dpdGNoKFIpe2Nhc2UiKiI6cmV0dXJuIFcoKSx2b2lkKFQ9Im11bHRpTGluZUNvbW1lbnQiKTtjYXNlIi8iOnJldHVybiBXKCksdm9pZChUPSJzaW5nbGVMaW5lQ29tbWVudCIpfXRocm93IHJ1KFcoKSl9LG11bHRpTGluZUNvbW1lbnQ6ZnVuY3Rpb24oKXtzd2l0Y2goUil7Y2FzZSIqIjpyZXR1cm4gVygpLHZvaWQoVD0ibXVsdGlMaW5lQ29tbWVudEFzdGVyaXNrIik7Y2FzZSB2b2lkIDA6dGhyb3cgcnUoVygpKX1XKCl9LG11bHRpTGluZUNvbW1lbnRBc3RlcmlzazpmdW5jdGlvbigpe3N3aXRjaChSKXtjYXNlIioiOnJldHVybiB2b2lkIFcoKTtjYXNlIi8iOnJldHVybiBXKCksdm9pZChUPSJkZWZhdWx0Iik7Y2FzZSB2b2lkIDA6dGhyb3cgcnUoVygpKX1XKCksVD0ibXVsdGlMaW5lQ29tbWVudCJ9LHNpbmdsZUxpbmVDb21tZW50OmZ1bmN0aW9uKCl7c3dpdGNoKFIpe2Nhc2UiXG4iOmNhc2UiXHIiOmNhc2UiXHUyMDI4IjpjYXNlIlx1MjAyOSI6cmV0dXJuIFcoKSx2b2lkKFQ9ImRlZmF1bHQiKTtjYXNlIHZvaWQgMDpyZXR1cm4gVygpLEsoImVvZiIpfVcoKX0sdmFsdWU6ZnVuY3Rpb24oKXtzd2l0Y2goUil7Y2FzZSJ7IjpjYXNlIlsiOnJldHVybiBLKCJwdW5jdHVhdG9yIixXKCkpO2Nhc2UibiI6cmV0dXJuIFcoKSxRKCJ1bGwiKSxLKCJudWxsIixudWxsKTtjYXNlInQiOnJldHVybiBXKCksUSgicnVlIiksSygiYm9vbGVhbiIsITApO2Nhc2UiZiI6cmV0dXJuIFcoKSxRKCJhbHNlIiksSygiYm9vbGVhbiIsITEpO2Nhc2UiLSI6Y2FzZSIrIjpyZXR1cm4iLSI9PT1XKCkmJigkPS0xKSx2b2lkKFQ9InNpZ24iKTtjYXNlIi4iOnJldHVybiB6PVcoKSx2b2lkKFQ9ImRlY2ltYWxQb2ludExlYWRpbmciKTtjYXNlIjAiOnJldHVybiB6PVcoKSx2b2lkKFQ9Inplcm8iKTtjYXNlIjEiOmNhc2UiMiI6Y2FzZSIzIjpjYXNlIjQiOmNhc2UiNSI6Y2FzZSI2IjpjYXNlIjciOmNhc2UiOCI6Y2FzZSI5IjpyZXR1cm4gej1XKCksdm9pZChUPSJkZWNpbWFsSW50ZWdlciIpO2Nhc2UiSSI6cmV0dXJuIFcoKSxRKCJuZmluaXR5IiksSygibnVtZXJpYyIsMS8wKTtjYXNlIk4iOnJldHVybiBXKCksUSgiYU4iKSxLKCJudW1lcmljIixOYU4pO2Nhc2UnIic6Y2FzZSInIjpyZXR1cm4gSD0nIic9PT1XKCksej0iIix2b2lkKFQ9InN0cmluZyIpfXRocm93IHJ1KFcoKSl9LGlkZW50aWZpZXJOYW1lU3RhcnRFc2NhcGU6ZnVuY3Rpb24oKXtpZigidSIhPT1SKXRocm93IHJ1KFcoKSk7VygpO3ZhciB1PVkoKTtzd2l0Y2godSl7Y2FzZSIkIjpjYXNlIl8iOmJyZWFrO2RlZmF1bHQ6aWYoIVUuaXNJZFN0YXJ0Q2hhcih1KSl0aHJvdyBudSgpfXorPXUsVD0iaWRlbnRpZmllck5hbWUifSxpZGVudGlmaWVyTmFtZTpmdW5jdGlvbigpe3N3aXRjaChSKXtjYXNlIiQiOmNhc2UiXyI6Y2FzZSLigIwiOmNhc2Ui4oCNIjpyZXR1cm4gdm9pZCh6Kz1XKCkpO2Nhc2UiXFwiOnJldHVybiBXKCksdm9pZChUPSJpZGVudGlmaWVyTmFtZUVzY2FwZSIpfWlmKCFVLmlzSWRDb250aW51ZUNoYXIoUikpcmV0dXJuIEsoImlkZW50aWZpZXIiLHopO3orPVcoKX0saWRlbnRpZmllck5hbWVFc2NhcGU6ZnVuY3Rpb24oKXtpZigidSIhPT1SKXRocm93IHJ1KFcoKSk7VygpO3ZhciB1PVkoKTtzd2l0Y2godSl7Y2FzZSIkIjpjYXNlIl8iOmNhc2Ui4oCMIjpjYXNlIuKAjSI6YnJlYWs7ZGVmYXVsdDppZighVS5pc0lkQ29udGludWVDaGFyKHUpKXRocm93IG51KCl9eis9dSxUPSJpZGVudGlmaWVyTmFtZSJ9LHNpZ246ZnVuY3Rpb24oKXtzd2l0Y2goUil7Y2FzZSIuIjpyZXR1cm4gej1XKCksdm9pZChUPSJkZWNpbWFsUG9pbnRMZWFkaW5nIik7Y2FzZSIwIjpyZXR1cm4gej1XKCksdm9pZChUPSJ6ZXJvIik7Y2FzZSIxIjpjYXNlIjIiOmNhc2UiMyI6Y2FzZSI0IjpjYXNlIjUiOmNhc2UiNiI6Y2FzZSI3IjpjYXNlIjgiOmNhc2UiOSI6cmV0dXJuIHo9VygpLHZvaWQoVD0iZGVjaW1hbEludGVnZXIiKTtjYXNlIkkiOnJldHVybiBXKCksUSgibmZpbml0eSIpLEsoIm51bWVyaWMiLCQqKDEvMCkpO2Nhc2UiTiI6cmV0dXJuIFcoKSxRKCJhTiIpLEsoIm51bWVyaWMiLE5hTil9dGhyb3cgcnUoVygpKX0semVybzpmdW5jdGlvbigpe3N3aXRjaChSKXtjYXNlIi4iOnJldHVybiB6Kz1XKCksdm9pZChUPSJkZWNpbWFsUG9pbnQiKTtjYXNlImUiOmNhc2UiRSI6cmV0dXJuIHorPVcoKSx2b2lkKFQ9ImRlY2ltYWxFeHBvbmVudCIpO2Nhc2UieCI6Y2FzZSJYIjpyZXR1cm4geis9VygpLHZvaWQoVD0iaGV4YWRlY2ltYWwiKX1yZXR1cm4gSygibnVtZXJpYyIsMCokKX0sZGVjaW1hbEludGVnZXI6ZnVuY3Rpb24oKXtzd2l0Y2goUil7Y2FzZSIuIjpyZXR1cm4geis9VygpLHZvaWQoVD0iZGVjaW1hbFBvaW50Iik7Y2FzZSJlIjpjYXNlIkUiOnJldHVybiB6Kz1XKCksdm9pZChUPSJkZWNpbWFsRXhwb25lbnQiKX1pZighVS5pc0RpZ2l0KFIpKXJldHVybiBLKCJudW1lcmljIiwkKk51bWJlcih6KSk7eis9VygpfSxkZWNpbWFsUG9pbnRMZWFkaW5nOmZ1bmN0aW9uKCl7aWYoVS5pc0RpZ2l0KFIpKXJldHVybiB6Kz1XKCksdm9pZChUPSJkZWNpbWFsRnJhY3Rpb24iKTt0aHJvdyBydShXKCkpfSxkZWNpbWFsUG9pbnQ6ZnVuY3Rpb24oKXtzd2l0Y2goUil7Y2FzZSJlIjpjYXNlIkUiOnJldHVybiB6Kz1XKCksdm9pZChUPSJkZWNpbWFsRXhwb25lbnQiKX1yZXR1cm4gVS5pc0RpZ2l0KFIpPyh6Kz1XKCksdm9pZChUPSJkZWNpbWFsRnJhY3Rpb24iKSk6SygibnVtZXJpYyIsJCpOdW1iZXIoeikpfSxkZWNpbWFsRnJhY3Rpb246ZnVuY3Rpb24oKXtzd2l0Y2goUil7Y2FzZSJlIjpjYXNlIkUiOnJldHVybiB6Kz1XKCksdm9pZChUPSJkZWNpbWFsRXhwb25lbnQiKX1pZighVS5pc0RpZ2l0KFIpKXJldHVybiBLKCJudW1lcmljIiwkKk51bWJlcih6KSk7eis9VygpfSxkZWNpbWFsRXhwb25lbnQ6ZnVuY3Rpb24oKXtzd2l0Y2goUil7Y2FzZSIrIjpjYXNlIi0iOnJldHVybiB6Kz1XKCksdm9pZChUPSJkZWNpbWFsRXhwb25lbnRTaWduIil9aWYoVS5pc0RpZ2l0KFIpKXJldHVybiB6Kz1XKCksdm9pZChUPSJkZWNpbWFsRXhwb25lbnRJbnRlZ2VyIik7dGhyb3cgcnUoVygpKX0sZGVjaW1hbEV4cG9uZW50U2lnbjpmdW5jdGlvbigpe2lmKFUuaXNEaWdpdChSKSlyZXR1cm4geis9VygpLHZvaWQoVD0iZGVjaW1hbEV4cG9uZW50SW50ZWdlciIpO3Rocm93IHJ1KFcoKSl9LGRlY2ltYWxFeHBvbmVudEludGVnZXI6ZnVuY3Rpb24oKXtpZighVS5pc0RpZ2l0KFIpKXJldHVybiBLKCJudW1lcmljIiwkKk51bWJlcih6KSk7eis9VygpfSxoZXhhZGVjaW1hbDpmdW5jdGlvbigpe2lmKFUuaXNIZXhEaWdpdChSKSlyZXR1cm4geis9VygpLHZvaWQoVD0iaGV4YWRlY2ltYWxJbnRlZ2VyIik7dGhyb3cgcnUoVygpKX0saGV4YWRlY2ltYWxJbnRlZ2VyOmZ1bmN0aW9uKCl7aWYoIVUuaXNIZXhEaWdpdChSKSlyZXR1cm4gSygibnVtZXJpYyIsJCpOdW1iZXIoeikpO3orPVcoKX0sc3RyaW5nOmZ1bmN0aW9uKCl7c3dpdGNoKFIpe2Nhc2UiXFwiOnJldHVybiBXKCksdm9pZCh6Kz1mdW5jdGlvbigpe3N3aXRjaChxKCkpe2Nhc2UiYiI6cmV0dXJuIFcoKSwiXGIiO2Nhc2UiZiI6cmV0dXJuIFcoKSwiXGYiO2Nhc2UibiI6cmV0dXJuIFcoKSwiXG4iO2Nhc2UiciI6cmV0dXJuIFcoKSwiXHIiO2Nhc2UidCI6cmV0dXJuIFcoKSwiXHQiO2Nhc2UidiI6cmV0dXJuIFcoKSwiXHYiO2Nhc2UiMCI6aWYoVygpLFUuaXNEaWdpdChxKCkpKXRocm93IHJ1KFcoKSk7cmV0dXJuIlwwIjtjYXNlIngiOnJldHVybiBXKCksZnVuY3Rpb24oKXt2YXIgdT0iIixEPXEoKTtpZighVS5pc0hleERpZ2l0KEQpKXRocm93IHJ1KFcoKSk7aWYodSs9VygpLEQ9cSgpLCFVLmlzSGV4RGlnaXQoRCkpdGhyb3cgcnUoVygpKTtyZXR1cm4gdSs9VygpLFN0cmluZy5mcm9tQ29kZVBvaW50KHBhcnNlSW50KHUsMTYpKX0oKTtjYXNlInUiOnJldHVybiBXKCksWSgpO2Nhc2UiXG4iOmNhc2UiXHUyMDI4IjpjYXNlIlx1MjAyOSI6cmV0dXJuIFcoKSwiIjtjYXNlIlxyIjpyZXR1cm4gVygpLCJcbiI9PT1xKCkmJlcoKSwiIjtjYXNlIjEiOmNhc2UiMiI6Y2FzZSIzIjpjYXNlIjQiOmNhc2UiNSI6Y2FzZSI2IjpjYXNlIjciOmNhc2UiOCI6Y2FzZSI5IjpjYXNlIHZvaWQgMDp0aHJvdyBydShXKCkpfXJldHVybiBXKCl9KCkpO2Nhc2UnIic6cmV0dXJuIEg/KFcoKSxLKCJzdHJpbmciLHopKTp2b2lkKHorPVcoKSk7Y2FzZSInIjpyZXR1cm4gSD92b2lkKHorPVcoKSk6KFcoKSxLKCJzdHJpbmciLHopKTtjYXNlIlxuIjpjYXNlIlxyIjp0aHJvdyBydShXKCkpO2Nhc2UiXHUyMDI4IjpjYXNlIlx1MjAyOSI6IWZ1bmN0aW9uKHUpe2NvbnNvbGUud2FybigiSlNPTjU6ICciK0Z1KHUpKyInIGluIHN0cmluZ3MgaXMgbm90IHZhbGlkIEVDTUFTY3JpcHQ7IGNvbnNpZGVyIGVzY2FwaW5nIil9KFIpO2JyZWFrO2Nhc2Ugdm9pZCAwOnRocm93IHJ1KFcoKSl9eis9VygpfSxzdGFydDpmdW5jdGlvbigpe3N3aXRjaChSKXtjYXNlInsiOmNhc2UiWyI6cmV0dXJuIEsoInB1bmN0dWF0b3IiLFcoKSl9VD0idmFsdWUifSxiZWZvcmVQcm9wZXJ0eU5hbWU6ZnVuY3Rpb24oKXtzd2l0Y2goUil7Y2FzZSIkIjpjYXNlIl8iOnJldHVybiB6PVcoKSx2b2lkKFQ9ImlkZW50aWZpZXJOYW1lIik7Y2FzZSJcXCI6cmV0dXJuIFcoKSx2b2lkKFQ9ImlkZW50aWZpZXJOYW1lU3RhcnRFc2NhcGUiKTtjYXNlIn0iOnJldHVybiBLKCJwdW5jdHVhdG9yIixXKCkpO2Nhc2UnIic6Y2FzZSInIjpyZXR1cm4gSD0nIic9PT1XKCksdm9pZChUPSJzdHJpbmciKX1pZihVLmlzSWRTdGFydENoYXIoUikpcmV0dXJuIHorPVcoKSx2b2lkKFQ9ImlkZW50aWZpZXJOYW1lIik7dGhyb3cgcnUoVygpKX0sYWZ0ZXJQcm9wZXJ0eU5hbWU6ZnVuY3Rpb24oKXtpZigiOiI9PT1SKXJldHVybiBLKCJwdW5jdHVhdG9yIixXKCkpO3Rocm93IHJ1KFcoKSl9LGJlZm9yZVByb3BlcnR5VmFsdWU6ZnVuY3Rpb24oKXtUPSJ2YWx1ZSJ9LGFmdGVyUHJvcGVydHlWYWx1ZTpmdW5jdGlvbigpe3N3aXRjaChSKXtjYXNlIiwiOmNhc2UifSI6cmV0dXJuIEsoInB1bmN0dWF0b3IiLFcoKSl9dGhyb3cgcnUoVygpKX0sYmVmb3JlQXJyYXlWYWx1ZTpmdW5jdGlvbigpe2lmKCJdIj09PVIpcmV0dXJuIEsoInB1bmN0dWF0b3IiLFcoKSk7VD0idmFsdWUifSxhZnRlckFycmF5VmFsdWU6ZnVuY3Rpb24oKXtzd2l0Y2goUil7Y2FzZSIsIjpjYXNlIl0iOnJldHVybiBLKCJwdW5jdHVhdG9yIixXKCkpfXRocm93IHJ1KFcoKSl9LGVuZDpmdW5jdGlvbigpe3Rocm93IHJ1KFcoKSl9fTtmdW5jdGlvbiBLKHUsRCl7cmV0dXJue3R5cGU6dSx2YWx1ZTpELGxpbmU6Vixjb2x1bW46Sn19ZnVuY3Rpb24gUSh1KXtmb3IodmFyIEQ9MCxlPXU7RDxlLmxlbmd0aDtEKz0xKXt2YXIgcj1lW0RdO2lmKHEoKSE9PXIpdGhyb3cgcnUoVygpKTtXKCl9fWZ1bmN0aW9uIFkoKXtmb3IodmFyIHU9IiIsRD00O0QtLSA+MDspe3ZhciBlPXEoKTtpZighVS5pc0hleERpZ2l0KGUpKXRocm93IHJ1KFcoKSk7dSs9VygpfXJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludChwYXJzZUludCh1LDE2KSl9dmFyIHV1PXtzdGFydDpmdW5jdGlvbigpe2lmKCJlb2YiPT09TS50eXBlKXRocm93IHR1KCk7RHUoKX0sYmVmb3JlUHJvcGVydHlOYW1lOmZ1bmN0aW9uKCl7c3dpdGNoKE0udHlwZSl7Y2FzZSJpZGVudGlmaWVyIjpjYXNlInN0cmluZyI6cmV0dXJuIGs9TS52YWx1ZSx2b2lkKE89ImFmdGVyUHJvcGVydHlOYW1lIik7Y2FzZSJwdW5jdHVhdG9yIjpyZXR1cm4gdm9pZCBldSgpO2Nhc2UiZW9mIjp0aHJvdyB0dSgpfX0sYWZ0ZXJQcm9wZXJ0eU5hbWU6ZnVuY3Rpb24oKXtpZigiZW9mIj09PU0udHlwZSl0aHJvdyB0dSgpO089ImJlZm9yZVByb3BlcnR5VmFsdWUifSxiZWZvcmVQcm9wZXJ0eVZhbHVlOmZ1bmN0aW9uKCl7aWYoImVvZiI9PT1NLnR5cGUpdGhyb3cgdHUoKTtEdSgpfSxiZWZvcmVBcnJheVZhbHVlOmZ1bmN0aW9uKCl7aWYoImVvZiI9PT1NLnR5cGUpdGhyb3cgdHUoKTsicHVuY3R1YXRvciIhPT1NLnR5cGV8fCJdIiE9PU0udmFsdWU/RHUoKTpldSgpfSxhZnRlclByb3BlcnR5VmFsdWU6ZnVuY3Rpb24oKXtpZigiZW9mIj09PU0udHlwZSl0aHJvdyB0dSgpO3N3aXRjaChNLnZhbHVlKXtjYXNlIiwiOnJldHVybiB2b2lkKE89ImJlZm9yZVByb3BlcnR5TmFtZSIpO2Nhc2UifSI6ZXUoKX19LGFmdGVyQXJyYXlWYWx1ZTpmdW5jdGlvbigpe2lmKCJlb2YiPT09TS50eXBlKXRocm93IHR1KCk7c3dpdGNoKE0udmFsdWUpe2Nhc2UiLCI6cmV0dXJuIHZvaWQoTz0iYmVmb3JlQXJyYXlWYWx1ZSIpO2Nhc2UiXSI6ZXUoKX19LGVuZDpmdW5jdGlvbigpe319O2Z1bmN0aW9uIER1KCl7dmFyIHU7c3dpdGNoKE0udHlwZSl7Y2FzZSJwdW5jdHVhdG9yIjpzd2l0Y2goTS52YWx1ZSl7Y2FzZSJ7Ijp1PXt9O2JyZWFrO2Nhc2UiWyI6dT1bXX1icmVhaztjYXNlIm51bGwiOmNhc2UiYm9vbGVhbiI6Y2FzZSJudW1lcmljIjpjYXNlInN0cmluZyI6dT1NLnZhbHVlfWlmKHZvaWQgMD09PUwpTD11O2Vsc2V7dmFyIEQ9altqLmxlbmd0aC0xXTtBcnJheS5pc0FycmF5KEQpP0QucHVzaCh1KTpPYmplY3QuZGVmaW5lUHJvcGVydHkoRCxrLHt2YWx1ZTp1LHdyaXRhYmxlOiEwLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSl9aWYobnVsbCE9PXUmJiJvYmplY3QiPT10eXBlb2YgdSlqLnB1c2godSksTz1BcnJheS5pc0FycmF5KHUpPyJiZWZvcmVBcnJheVZhbHVlIjoiYmVmb3JlUHJvcGVydHlOYW1lIjtlbHNle3ZhciBlPWpbai5sZW5ndGgtMV07Tz1udWxsPT1lPyJlbmQiOkFycmF5LmlzQXJyYXkoZSk/ImFmdGVyQXJyYXlWYWx1ZSI6ImFmdGVyUHJvcGVydHlWYWx1ZSJ9fWZ1bmN0aW9uIGV1KCl7ai5wb3AoKTt2YXIgdT1qW2oubGVuZ3RoLTFdO089bnVsbD09dT8iZW5kIjpBcnJheS5pc0FycmF5KHUpPyJhZnRlckFycmF5VmFsdWUiOiJhZnRlclByb3BlcnR5VmFsdWUifWZ1bmN0aW9uIHJ1KHUpe3JldHVybiBDdSh2b2lkIDA9PT11PyJKU09ONTogaW52YWxpZCBlbmQgb2YgaW5wdXQgYXQgIitWKyI6IitKOiJKU09ONTogaW52YWxpZCBjaGFyYWN0ZXIgJyIrRnUodSkrIicgYXQgIitWKyI6IitKKX1mdW5jdGlvbiB0dSgpe3JldHVybiBDdSgiSlNPTjU6IGludmFsaWQgZW5kIG9mIGlucHV0IGF0ICIrVisiOiIrSil9ZnVuY3Rpb24gbnUoKXtyZXR1cm4gQ3UoIkpTT041OiBpbnZhbGlkIGlkZW50aWZpZXIgY2hhcmFjdGVyIGF0ICIrVisiOiIrKEotPTUpKX1mdW5jdGlvbiBGdSh1KXt2YXIgRD17IiciOiJcXCciLCciJzonXFwiJywiXFwiOiJcXFxcIiwiXGIiOiJcXGIiLCJcZiI6IlxcZiIsIlxuIjoiXFxuIiwiXHIiOiJcXHIiLCJcdCI6IlxcdCIsIlx2IjoiXFx2IiwiXDAiOiJcXDAiLCJcdTIwMjgiOiJcXHUyMDI4IiwiXHUyMDI5IjoiXFx1MjAyOSJ9O2lmKERbdV0pcmV0dXJuIERbdV07aWYodTwiICIpe3ZhciBlPXUuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNik7cmV0dXJuIlxceCIrKCIwMCIrZSkuc3Vic3RyaW5nKGUubGVuZ3RoKX1yZXR1cm4gdX1mdW5jdGlvbiBDdSh1KXt2YXIgRD1uZXcgU3ludGF4RXJyb3IodSk7cmV0dXJuIEQubGluZU51bWJlcj1WLEQuY29sdW1uTnVtYmVyPUosRH1yZXR1cm57cGFyc2U6ZnVuY3Rpb24odSxEKXtfPVN0cmluZyh1KSxPPSJzdGFydCIsaj1bXSxJPTAsVj0xLEo9MCxNPXZvaWQgMCxrPXZvaWQgMCxMPXZvaWQgMDtkb3tNPVooKSx1dVtPXSgpfXdoaWxlKCJlb2YiIT09TS50eXBlKTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgRD9mdW5jdGlvbiB1KEQsZSxyKXt2YXIgdD1EW2VdO2lmKG51bGwhPXQmJiJvYmplY3QiPT10eXBlb2YgdClpZihBcnJheS5pc0FycmF5KHQpKWZvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgRj1TdHJpbmcobiksQz11KHQsRixyKTt2b2lkIDA9PT1DP2RlbGV0ZSB0W0ZdOk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LEYse3ZhbHVlOkMsd3JpdGFibGU6ITAsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KX1lbHNlIGZvcih2YXIgQSBpbiB0KXt2YXIgaT11KHQsQSxyKTt2b2lkIDA9PT1pP2RlbGV0ZSB0W0FdOk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LEEse3ZhbHVlOmksd3JpdGFibGU6ITAsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KX1yZXR1cm4gci5jYWxsKEQsZSx0KX0oeyIiOkx9LCIiLEQpOkx9LHN0cmluZ2lmeTpmdW5jdGlvbih1LEQsZSl7dmFyIHIsdCxuLEY9W10sQz0iIixBPSIiO2lmKG51bGw9PUR8fCJvYmplY3QiIT10eXBlb2YgRHx8QXJyYXkuaXNBcnJheShEKXx8KGU9RC5zcGFjZSxuPUQucXVvdGUsRD1ELnJlcGxhY2VyKSwiZnVuY3Rpb24iPT10eXBlb2YgRCl0PUQ7ZWxzZSBpZihBcnJheS5pc0FycmF5KEQpKXtyPVtdO2Zvcih2YXIgaT0wLEU9RDtpPEUubGVuZ3RoO2krPTEpe3ZhciBvPUVbaV0sYT12b2lkIDA7InN0cmluZyI9PXR5cGVvZiBvP2E9bzooIm51bWJlciI9PXR5cGVvZiBvfHxvIGluc3RhbmNlb2YgU3RyaW5nfHxvIGluc3RhbmNlb2YgTnVtYmVyKSYmKGE9U3RyaW5nKG8pKSx2b2lkIDAhPT1hJiZyLmluZGV4T2YoYSk8MCYmci5wdXNoKGEpfX1yZXR1cm4gZSBpbnN0YW5jZW9mIE51bWJlcj9lPU51bWJlcihlKTplIGluc3RhbmNlb2YgU3RyaW5nJiYoZT1TdHJpbmcoZSkpLCJudW1iZXIiPT10eXBlb2YgZT9lPjAmJihlPU1hdGgubWluKDEwLE1hdGguZmxvb3IoZSkpLEE9IiAgICAgICAgICAiLnN1YnN0cigwLGUpKToic3RyaW5nIj09dHlwZW9mIGUmJihBPWUuc3Vic3RyKDAsMTApKSxjKCIiLHsiIjp1fSk7ZnVuY3Rpb24gYyh1LEQpe3ZhciBlPURbdV07c3dpdGNoKG51bGwhPWUmJigiZnVuY3Rpb24iPT10eXBlb2YgZS50b0pTT041P2U9ZS50b0pTT041KHUpOiJmdW5jdGlvbiI9PXR5cGVvZiBlLnRvSlNPTiYmKGU9ZS50b0pTT04odSkpKSx0JiYoZT10LmNhbGwoRCx1LGUpKSxlIGluc3RhbmNlb2YgTnVtYmVyP2U9TnVtYmVyKGUpOmUgaW5zdGFuY2VvZiBTdHJpbmc/ZT1TdHJpbmcoZSk6ZSBpbnN0YW5jZW9mIEJvb2xlYW4mJihlPWUudmFsdWVPZigpKSxlKXtjYXNlIG51bGw6cmV0dXJuIm51bGwiO2Nhc2UhMDpyZXR1cm4idHJ1ZSI7Y2FzZSExOnJldHVybiJmYWxzZSJ9cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP0IoZSk6Im51bWJlciI9PXR5cGVvZiBlP1N0cmluZyhlKToib2JqZWN0Ij09dHlwZW9mIGU/QXJyYXkuaXNBcnJheShlKT9mdW5jdGlvbih1KXtpZihGLmluZGV4T2YodSk+PTApdGhyb3cgVHlwZUVycm9yKCJDb252ZXJ0aW5nIGNpcmN1bGFyIHN0cnVjdHVyZSB0byBKU09ONSIpO0YucHVzaCh1KTt2YXIgRD1DO0MrPUE7Zm9yKHZhciBlLHI9W10sdD0wO3Q8dS5sZW5ndGg7dCsrKXt2YXIgbj1jKFN0cmluZyh0KSx1KTtyLnB1c2godm9pZCAwIT09bj9uOiJudWxsIil9aWYoMD09PXIubGVuZ3RoKWU9IltdIjtlbHNlIGlmKCIiPT09QSl7dmFyIGk9ci5qb2luKCIsIik7ZT0iWyIraSsiXSJ9ZWxzZXt2YXIgRT0iLFxuIitDLG89ci5qb2luKEUpO2U9IltcbiIrQytvKyIsXG4iK0QrIl0ifXJldHVybiBGLnBvcCgpLEM9RCxlfShlKTpmdW5jdGlvbih1KXtpZihGLmluZGV4T2YodSk+PTApdGhyb3cgVHlwZUVycm9yKCJDb252ZXJ0aW5nIGNpcmN1bGFyIHN0cnVjdHVyZSB0byBKU09ONSIpO0YucHVzaCh1KTt2YXIgRD1DO0MrPUE7Zm9yKHZhciBlLHQsbj1yfHxPYmplY3Qua2V5cyh1KSxpPVtdLEU9MCxvPW47RTxvLmxlbmd0aDtFKz0xKXt2YXIgYT1vW0VdLEI9YyhhLHUpO2lmKHZvaWQgMCE9PUIpe3ZhciBmPXMoYSkrIjoiOyIiIT09QSYmKGYrPSIgIiksZis9QixpLnB1c2goZil9fWlmKDA9PT1pLmxlbmd0aCllPSJ7fSI7ZWxzZSBpZigiIj09PUEpdD1pLmpvaW4oIiwiKSxlPSJ7Iit0KyJ9IjtlbHNle3ZhciBsPSIsXG4iK0M7dD1pLmpvaW4obCksZT0ie1xuIitDK3QrIixcbiIrRCsifSJ9cmV0dXJuIEYucG9wKCksQz1ELGV9KGUpOnZvaWQgMH1mdW5jdGlvbiBCKHUpe2Zvcih2YXIgRD17IiciOi4xLCciJzouMn0sZT17IiciOiJcXCciLCciJzonXFwiJywiXFwiOiJcXFxcIiwiXGIiOiJcXGIiLCJcZiI6IlxcZiIsIlxuIjoiXFxuIiwiXHIiOiJcXHIiLCJcdCI6IlxcdCIsIlx2IjoiXFx2IiwiXDAiOiJcXDAiLCJcdTIwMjgiOiJcXHUyMDI4IiwiXHUyMDI5IjoiXFx1MjAyOSJ9LHI9IiIsdD0wO3Q8dS5sZW5ndGg7dCsrKXt2YXIgRj11W3RdO3N3aXRjaChGKXtjYXNlIiciOmNhc2UnIic6RFtGXSsrLHIrPUY7Y29udGludWU7Y2FzZSJcMCI6aWYoVS5pc0RpZ2l0KHVbdCsxXSkpe3IrPSJcXHgwMCI7Y29udGludWV9fWlmKGVbRl0pcis9ZVtGXTtlbHNlIGlmKEY8IiAiKXt2YXIgQz1GLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpO3IrPSJcXHgiKygiMDAiK0MpLnN1YnN0cmluZyhDLmxlbmd0aCl9ZWxzZSByKz1GfXZhciBBPW58fE9iamVjdC5rZXlzKEQpLnJlZHVjZShmdW5jdGlvbih1LGUpe3JldHVybiBEW3VdPERbZV0/dTplfSk7cmV0dXJuIEErKHI9ci5yZXBsYWNlKG5ldyBSZWdFeHAoQSwiZyIpLGVbQV0pKStBfWZ1bmN0aW9uIHModSl7aWYoMD09PXUubGVuZ3RoKXJldHVybiBCKHUpO3ZhciBEPVN0cmluZy5mcm9tQ29kZVBvaW50KHUuY29kZVBvaW50QXQoMCkpO2lmKCFVLmlzSWRTdGFydENoYXIoRCkpcmV0dXJuIEIodSk7Zm9yKHZhciBlPUQubGVuZ3RoO2U8dS5sZW5ndGg7ZSsrKWlmKCFVLmlzSWRDb250aW51ZUNoYXIoU3RyaW5nLmZyb21Db2RlUG9pbnQodS5jb2RlUG9pbnRBdChlKSkpKXJldHVybiBCKHUpO3JldHVybiB1fX19fSk7`;\n","// These globals are replaced at build time by Vite's `define` in the consuming\n// app. When the module is loaded outside that pipeline (e.g. vitest in a\n// different workspace package) the globals won't exist, so fall back to safe\n// defaults.\ndeclare const __DEV_WATCH__: boolean;\ndeclare const __LOGGING_FILTER__: string;\n\nconst isDevWatch = typeof __DEV_WATCH__ !== \"undefined\" && __DEV_WATCH__;\nconst loggingFilter =\n typeof __LOGGING_FILTER__ !== \"undefined\" ? __LOGGING_FILTER__ : \"*\";\n\nconst getEnabledNamespaces = () => {\n // Split by comma and filter out empty strings\n return loggingFilter\n .split(\",\")\n .map((ns) => ns.trim())\n .filter(Boolean);\n};\n\nconst ENABLED_NAMESPACES = new Set<string>(getEnabledNamespaces());\nconst filterNameSpace = (namespace: string) => {\n if (ENABLED_NAMESPACES.has(\"*\")) return true;\n\n return ENABLED_NAMESPACES.has(namespace);\n};\n\n// Create a logger for a specific namespace\nexport const createLogger = (namespace: string) => {\n // Logger functions that only activate in dev-watch mode\n const logger = {\n debug: (message: string, ...args: unknown[]) => {\n if (isDevWatch && filterNameSpace(namespace))\n console.debug(`[${namespace}] ${message}`, ...args);\n },\n\n info: (message: string, ...args: unknown[]) => {\n if (isDevWatch && filterNameSpace(namespace))\n console.info(`[${namespace}] ${message}`, ...args);\n },\n\n warn: (message: string, ...args: unknown[]) => {\n if (isDevWatch && filterNameSpace(namespace))\n console.warn(`[${namespace}] ${message}`, ...args);\n },\n\n // Always log errors, even in production\n error: (message: string, ...args: unknown[]) => {\n console.error(`[${namespace}] ${message}`, ...args);\n },\n\n // Lazy evaluation for expensive logs\n debugIf: (fn: () => string) => {\n if (isDevWatch && filterNameSpace(namespace))\n console.debug(`[${namespace}] ${fn()}`);\n },\n };\n\n return logger;\n};\n"],"x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,68],"mappings":"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AG;CAAK;CAAG;CAAK;CAAG;CAAM;CAAG;CAAG;CAAG;CAAG;CAAG;CAAI;CAAG;CAAG;CAAG;CAAK;CAAG;CAAK;CAAG;CAAG;CAAG;CAAG;CAAG;CAAI;CAAG;CAAK;CAAG;CAAI;CAAG;CAAI;CAAI;CAAI;CAAG;CAAK;CAAG;CAAI;CAAI;CAAI;CAAI;CAAG;CAAG;CAAI;CAAG;CAAI;CAAI;CAAG;CAAG;CAAI;CAAG;CAAG;CAAG;CAAI;CAAI;CAAG;CAAG;CAAG;CAAG;CAAI;CAAG;CAAI;CAAG;CAAI;CAAI;CAAG;CAAG;CAAG;CAAI;CAAI;CAAI;CAAG;CAAG;CAAG;CAAG;CAAK;CAAI;CAAG;CAAG;CAAG;CAAG;CAAI;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAI;CAAG;CAAI;CAAG;CAAG;CAAG;CAAG;CAAG;CAAI;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAI;CAAG;CAAI;CAAI;CAAI;CAAG;CAAG;CAAG;CAAI;CAAI;CAAI;CAAG;CAAK;CAAG;CAAG;CAAG;CAAI;CAAG;CAAI;CAAI;CAAI;CAAG;CAAI;CAAI;CAAG;CAAG;CAAG;CAAI;CAAI;CAAI;CAAG;CAAG;CAAK;CAAI;CAAK;CAAG;CAAI;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAI;CAAG;CAAK;CAAG;CAAG;CAAG;CAAG;CAAG;CAAI;CAAG;CAAI;CAAG;CAAG;CAAG;CAAG;CAAG;CAAI;CAAI;CAAI;CAAI;CAAK;CAAG;CAAK;CAAG;CAAI;CAAG;CAAG;CAAG;CAAI;CAAG;CAAI;CAAI;CAAG;CAAI;CAAK;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAI;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAI;CAAG;CAAK;CAAG;CAAI;CAAG;CAAG;CAAG;CAAI;CAAG;CAAG;CAAG;CAAI;CAAI;CAAM;CAAG;CAAG;CAAI;CAAO;CAAI;CAAM;CAAG;CAAI;CAAG;CAAI;CAAG;CAAI;CAAG;CAAI;CAAG;CAAK;CAAG;CAAK;CAAG;CAAG;CAAI;CAAG;CAAG;CAAI;CAAG;CAAI;CAAG;CAAO;CAAG;CAAM;CAAG;CAAK;CAAI;CAAG;CAAI;CAAK;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAI;CAAG;CAAK;CAAG;CAAM;CAAI;CAAK;CAAI;CAAG;CAAI;CAAG;CAAG;CAAI;CAAG;CAAI;CAAG;CAAG;CAAI;CAAM;CAAG;CAAG;CAAI;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAK;CAAG;CAAK;CAAG;CAAI;CAAG;CAAK;CAAG;CAAI;CAAI;CAAK;CAAI;CAAK;CAAG;CAAG;CAAG;CAAK;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAK;CAAG;CAAK;CAAG;CAAG;CAAG;CAAM;CAAG;CAAQ;AAAG;AAGlrC,IAAI,6BAA6B;CAAC;CAAG;CAAI;CAAG;CAAI;CAAG;CAAI;CAAG;CAAG;CAAG;CAAI;CAAG;CAAI;CAAI;CAAK;CAAI;CAAI;CAAK;CAAI;CAAG;CAAI;CAAI;CAAI;CAAI;CAAI;CAAG;CAAI;CAAI;CAAI;CAAG;CAAI;CAAG;CAAG;CAAG;CAAG;CAAI;CAAK;CAAI;CAAI;CAAG;CAAI;CAAG;CAAI;CAAG;CAAI;CAAI;CAAI;CAAG;CAAI;CAAG;CAAG;CAAG;CAAG;CAAG;CAAI;CAAG;CAAI;CAAG;CAAG;CAAG;CAAG;CAAG;CAAI;CAAI;CAAK;CAAI;CAAI;CAAI;CAAG;CAAI;CAAG;CAAG;CAAI;CAAG;CAAG;CAAI;CAAG;CAAG;CAAG;CAAG;CAAI;CAAG;CAAG;CAAG;CAAG;CAAG;CAAI;CAAI;CAAI;CAAI;CAAI;CAAI;CAAI;CAAG;CAAG;CAAI;CAAI;CAAI;CAAI;CAAG;CAAI;CAAI;CAAI;CAAG;CAAG;CAAI;CAAG;CAAI;CAAG;CAAG;CAAG;CAAG;CAAI;CAAI;CAAI;CAAG;CAAI;CAAI;CAAG;CAAG;CAAI;CAAI;CAAI;CAAI;CAAI;CAAI;CAAI;CAAI;CAAI;CAAK;CAAI;CAAI;CAAI;CAAI;CAAI;CAAI;CAAI;CAAI;CAAI;CAAI;CAAI;CAAK;CAAI;CAAG;CAAG;CAAI;CAAG;CAAI;CAAI;CAAI;CAAG;CAAG;CAAI;CAAI;CAAI;CAAI;CAAI;CAAI;CAAI;CAAI;CAAI;CAAI;CAAG;CAAG;CAAG;CAAI;CAAI;CAAI;CAAI;CAAI;CAAI;CAAI;CAAG;CAAG;CAAG;CAAG;CAAI;CAAG;CAAG;CAAI;CAAI;CAAI;CAAG;CAAI;CAAG;CAAG;CAAG;CAAI;CAAI;CAAG;CAAI;CAAI;CAAG;CAAI;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAI;CAAG;CAAG;CAAG;CAAI;CAAI;CAAG;CAAG;CAAG;CAAG;CAAI;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAI;CAAG;CAAI;CAAG;CAAI;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAI;CAAG;CAAG;CAAI;CAAG;CAAG;CAAG;CAAI;CAAI;CAAI;CAAG;CAAI;CAAG;CAAI;CAAI;CAAI;CAAG;CAAG;CAAG;CAAK;CAAI;CAAI;CAAG;CAAI;CAAI;CAAI;CAAG;CAAI;CAAI;CAAI;CAAG;CAAI;CAAI;CAAI;CAAG;CAAK;CAAI;CAAK;CAAI;CAAI;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAG;CAAI;CAAI;CAAG;CAAG;CAAG;CAAI;CAAG;CAAG;CAAI;CAAI;CAAG;CAAG;CAAG;CAAI;CAAG;CAAI;CAAI;CAAG;CAAG;CAAI;CAAG;CAAI;CAAI;CAAI;CAAG;CAAI;CAAI;CAAK;CAAI;CAAI;CAAG;CAAG;CAAI;CAAI;CAAG;CAAI;CAAI;CAAK;CAAG;CAAG;CAAG;CAAG;CAAI;CAAI;CAAG;CAAI;CAAG;CAAG;CAAG;CAAG;CAAI;CAAI;CAAG;CAAI;CAAI;CAAK;CAAI;CAAI;CAAG;CAAG;CAAI;CAAG;CAAI;CAAK;CAAG;CAAI;CAAK;CAAK;CAAK;CAAI;CAAK;CAAM;CAAI;CAAI;CAAM;CAAI;CAAG;CAAI;CAAM;CAAG;CAAK;CAAM;CAAI;CAAM;CAAK;CAAG;CAAI;CAAI;CAAI;CAAI;CAAI;CAAI;CAAI;CAAI;CAAG;CAAI;CAAI;CAAG;CAAI;CAAK;CAAI;CAAK;CAAI;CAAI;CAAI;CAAG;CAAI;CAAI;CAAI;CAAG;CAAG;CAA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"}
|