{"version":3,"file":"dls-analysis.umd.js","sources":["../node_modules/ml-spectra-processing/node_modules/is-any-array/lib-esm/index.js","../node_modules/ml-spectra-processing/lib/x/getOutputArray.js","../node_modules/ml-spectra-processing/lib/x/xMedian.js","../node_modules/ml-spectra-processing/lib/x/xCheck.js","../node_modules/ml-spectra-processing/lib/x/xFindClosestIndex.js","../node_modules/ml-spectra-processing/lib/x/xGetFromToIndex.js","../node_modules/ml-spectra-processing/lib/x/xAbsoluteSum.js","../node_modules/ml-spectra-processing/lib/x/xAdd.js","../node_modules/ml-spectra-processing/lib/x/xApplyFunctionStr.js","../node_modules/ml-spectra-processing/lib/x/xMultiply.js","../node_modules/ml-matrix/node_modules/is-any-array/lib-esm/index.js","../node_modules/ml-array-rescale/node_modules/is-any-array/lib-esm/index.js","../node_modules/ml-array-max/node_modules/is-any-array/lib-esm/index.js","../node_modules/ml-array-max/lib-es6/index.js","../node_modules/ml-array-min/node_modules/is-any-array/lib-esm/index.js","../node_modules/ml-array-min/lib-es6/index.js","../node_modules/ml-array-rescale/lib-es6/index.js","../node_modules/ml-matrix/matrix.js","../node_modules/ml-matrix/matrix.mjs","../node_modules/ml-spectra-processing/lib/x/xMean.js","../node_modules/ml-spectra-processing/lib/x/xVariance.js","../node_modules/ml-spectra-processing/lib/x/xStandardDeviation.js","../node_modules/ml-spectra-processing/lib/x/xDivide.js","../node_modules/ml-spectra-processing/lib/x/xEnsureFloat64.js","../node_modules/fft.js/lib/fft.js","../node_modules/ml-spectra-processing/lib/utils/createFromToArray.js","../node_modules/ml-spectra-processing/lib/utils/stringify.js","../node_modules/ml-spectra-processing/lib/x/xMaxValue.js","../node_modules/ml-spectra-processing/lib/x/xMinValue.js","../node_modules/ml-spectra-processing/lib/x/xIsEquallySpaced.js","../node_modules/ml-spectra-processing/lib/x/xIsMonotonic.js","../node_modules/ml-spectra-processing/lib/x/xMedianAbsoluteDeviation.js","../node_modules/ml-spectra-processing/lib/x/xMinMaxValues.js","../node_modules/ml-spectra-processing/lib/x/utils/erfcinv.js","../node_modules/ml-spectra-processing/lib/x/utils/simpleNormInv.js","../node_modules/ml-spectra-processing/lib/x/xNoiseSanPlot.js","../node_modules/ml-spectra-processing/lib/x/xNoiseStandardDeviation.js","../node_modules/ml-spectra-processing/lib/x/xSum.js","../node_modules/ml-spectra-processing/lib/x/xNormed.js","../node_modules/ml-spectra-processing/lib/x/xPadding.js","../node_modules/ml-spectra-processing/lib/x/xParetoNormalization.js","../node_modules/ml-spectra-processing/lib/x/xRescale.js","../node_modules/ml-spectra-processing/lib/x/xRolling.js","../node_modules/ml-spectra-processing/lib/x/xRollingAverage.js","../node_modules/ml-spectra-processing/lib/x/xRollingMedian.js","../node_modules/ml-spectra-processing/lib/matrix/matrixCheck.js","../node_modules/ml-spectra-processing/lib/matrix/matrixMinMaxZ.js","../node_modules/ml-spectra-processing/lib/xy/xyCheck.js","../node_modules/ml-spectra-processing/lib/xy/xyEnsureGrowingX.js","../node_modules/ml-spectra-processing/lib/zones/zonesNormalize.js","../node_modules/ml-spectra-processing/lib/zones/zonesWithPoints.js","../node_modules/ml-spectra-processing/lib/xy/utils/equallySpacedSlot.js","../node_modules/ml-spectra-processing/lib/xy/utils/integral.js","../node_modules/ml-spectra-processing/lib/xy/utils/equallySpacedSmooth.js","../node_modules/ml-spectra-processing/lib/xy/xyEquallySpaced.js","../node_modules/ml-spectra-processing/lib/xy/xyFilterX.js","../node_modules/ml-spectra-processing/lib/xy/xyFilterXPositive.js","../node_modules/ml-spectra-processing/lib/xy/xyGrowingX.js","../node_modules/ml-spectra-processing/lib/xy/xyJoinX.js","../node_modules/ml-spectra-processing/lib/xyArray/utils/getSlots.js","../node_modules/ml-spectra-processing/lib/xyArray/xyArrayAlign.js","../node_modules/common-spectrum/lib/jsgraph/addStyle.js","../node_modules/common-spectrum/lib/jsgraph/colors.js","../node_modules/common-spectrum/lib/jsgraph/getJSGraph.js","../node_modules/common-spectrum/lib/jsgraph/getNormalizationAnnotations.js","../node_modules/is-any-array/lib/index.js","../node_modules/ml-signal-processing/lib/filters/scaling/centerMean.js","../node_modules/ml-signal-processing/lib/filters/scaling/centerMedian.js","../node_modules/ml-signal-processing/lib/filters/x/fromTo.js","../node_modules/ml-signal-processing/lib/filters/scaling/normed.js","../node_modules/ml-signal-processing/lib/filters/scaling/divideBySD.js","../node_modules/ml-signal-processing/lib/filters/scaling/rescale.js","../node_modules/ml-signal-processing/lib/filters/scaling/paretoNormalization.js","../node_modules/ml-airpls/lib/choleskySolver.js","../node_modules/cuthill-mckee/cuthill-mckee.js","../node_modules/ml-airpls/lib/utils.js","../node_modules/ml-airpls/lib/index.js","../node_modules/ml-array-sequential-fill/node_modules/is-any-array/lib-esm/index.js","../node_modules/ml-array-sequential-fill/lib-es6/index.js","../node_modules/baselines/src/airPLS.js","../node_modules/ml-regression-base/node_modules/is-any-array/lib-esm/index.js","../node_modules/ml-regression-base/lib-esm/checkArrayLength.js","../node_modules/ml-regression-base/lib-esm/BaseRegression.js","../node_modules/ml-regression-base/lib-esm/maybeToPrecision.js","../node_modules/ml-regression-polynomial/lib-esm/index.js","../node_modules/ml-baseline-correction-regression/src/index.js","../node_modules/baselines/src/iterativePolynomial.js","../node_modules/baselines/src/rollingAverage.js","../node_modules/ml-rolling-ball-baseline/node_modules/is-any-array/lib-esm/index.js","../node_modules/ml-rolling-ball-baseline/lib-esm/rollingBall.js","../node_modules/baselines/src/rollingBall.js","../node_modules/baselines/src/rollingMedian.js","../node_modules/ml-signal-processing/lib/filters/baseline/airPLSBaseline.js","../node_modules/ml-signal-processing/lib/filters/baseline/iterativePolynomialBaseline.js","../node_modules/ml-signal-processing/lib/filters/baseline/rollingAverageBaseline.js","../node_modules/ml-signal-processing/lib/filters/baseline/rollingBallBaseline.js","../node_modules/ml-signal-processing/lib/filters/baseline/rollingMedianBaseline.js","../node_modules/ml-savitzky-golay-generalized/node_modules/is-any-array/lib-esm/index.js","../node_modules/ml-savitzky-golay-generalized/lib-esm/index.js","../node_modules/ml-signal-processing/lib/filters/sg/firstDerivative.js","../node_modules/ml-signal-processing/lib/filters/sg/secondDerivative.js","../node_modules/ml-signal-processing/lib/filters/sg/thirdDerivative.js","../node_modules/ml-signal-processing/lib/filters/sg/savitzkyGolay.js","../node_modules/ml-signal-processing/lib/filters/x/ensureGrowing.js","../node_modules/ml-signal-processing/lib/filters/x/reverseIfNeeded.js","../node_modules/ml-signal-processing/lib/filters/x/equallySpaced.js","../node_modules/ml-signal-processing/lib/filters/x/filterX.js","../node_modules/ml-signal-processing/lib/filters/x/setMaxX.js","../node_modules/ml-signal-processing/lib/filters/x/setMinX.js","../node_modules/ml-gsd/lib/algorithms/getMinMaxIntervals.js","../node_modules/ml-gsd/lib/algorithms/tryMatchOneIntervalWithMinData.js","../node_modules/ml-gsd/lib/algorithms/autoAlgorithm.js","../node_modules/ml-gsd/lib/algorithms/getPeaksFromIntervals.js","../node_modules/ml-gsd/lib/algorithms/xGetCrossZeroPoints.js","../node_modules/ml-gsd/lib/algorithms/firstDerivative.js","../node_modules/ml-gsd/lib/algorithms/secondDerivative.js","../node_modules/ml-gsd/lib/utils/optimizeTop.js","../node_modules/ml-gsd/lib/gsd.js","../node_modules/ml-signal-processing/lib/filters/x/calibrateX.js","../node_modules/ml-signal-processing/lib/filters/x/xFunction.js","../node_modules/ml-signal-processing/lib/filters/scaling/yFunction.js","../node_modules/ml-signal-processing/lib/filters/y/setMaxY.js","../node_modules/ml-signal-processing/lib/filters/y/setMinY.js","../node_modules/ml-signal-processing/lib/filterXY.js","../node_modules/common-spectrum/lib/util/getNormalizedSpectrum.js","../node_modules/js-quantities/build/quantities.js","../node_modules/common-spectrum/lib/util/convertUnit.js","../node_modules/common-spectrum/lib/util/ensureRegexp.js","../node_modules/common-spectrum/lib/util/getConvertedVariable.js","../node_modules/common-spectrum/lib/util/getXYSpectra.js","../node_modules/common-spectrum/lib/util/getXYSpectrum.js","../node_modules/common-spectrum/lib/Analysis.js","../node_modules/common-spectrum/lib/util/appendDistinctParameter.js","../node_modules/common-spectrum/lib/util/appendDistinctValue.js","../node_modules/common-spectrum/lib/AnalysesManager.js","../node_modules/ensure-string/lib/index.js","../node_modules/dynamic-typing/lib-esm/parseString.js","../node_modules/gyromagnetic-ratio/lib-esm/gyromagneticRatioMHzT.js","../node_modules/gyromagnetic-ratio/lib-esm/getGyromagneticNucleus.js","../node_modules/gyromagnetic-ratio/lib-esm/getGyromagneticRatio.js","../node_modules/gyromagnetic-ratio/lib-esm/index.js","../node_modules/ml-array-median/node_modules/is-any-array/lib-esm/index.js","../node_modules/median-quickselect/lib/median-quickselect.min.js","../node_modules/ml-array-median/lib-es6/index.js","../node_modules/jcampconverter/dist/jcampconverter.js","../node_modules/common-spectrum/lib/from/fromJcamp.js","../node_modules/convert-to-jcamp/lib-esm/utils/addInfoData.js","../node_modules/convert-to-jcamp/node_modules/is-any-array/lib-esm/index.js","../node_modules/convert-to-jcamp/lib-esm/utils/checkMatrix.js","../node_modules/convert-to-jcamp/lib-esm/utils/checkNumberOrArray.js","../node_modules/convert-to-jcamp/lib-esm/utils/getExtremeValues.js","../node_modules/convert-to-jcamp/lib-esm/creatorNtuples.js","../node_modules/convert-to-jcamp/lib-esm/utils/getFactorNumber.js","../node_modules/convert-to-jcamp/lib-esm/utils/getBestFactor.js","../node_modules/convert-to-jcamp/lib-esm/utils/getNumber.js","../node_modules/convert-to-jcamp/lib-esm/utils/peakTableCreator.js","../node_modules/convert-to-jcamp/lib-esm/utils/rescaleAndEnsureInteger.js","../node_modules/convert-to-jcamp/lib-esm/utils/vectorEncoder.js","../node_modules/convert-to-jcamp/lib-esm/utils/xyDataCreator.js","../node_modules/convert-to-jcamp/lib-esm/fromJSON.js","../node_modules/convert-to-jcamp/lib-esm/fromVariables.js","../node_modules/common-spectrum/lib/to/toJcamps.js","../node_modules/common-spectrum/lib/to/toJcamp.js","../node_modules/common-spectrum/lib/to/toText.js","../node_modules/common-spectrum/lib/to/toMatrix.js","../node_modules/common-spectrum/lib/index.js","../node_modules/parse-zetasizer/node_modules/dynamic-typing/lib/parseString.js","../node_modules/parse-zetasizer/lib/text/fromText.js","../node_modules/parse-zetasizer/lib/text/getArray.js","../lib/from/fromZetasizer.js","../node_modules/zmes-parser/lib/findParameter.js","../node_modules/@sqlite.org/sqlite-wasm/dist/index.mjs","../node_modules/zmes-parser/lib/sqlite3WasmGzBase64.js","../node_modules/zmes-parser/lib/openDatabase.js","../node_modules/zmes-parser/lib/decodeBlob.js","../node_modules/zmes-parser/lib/readParameterData.js","../node_modules/zmes-parser/lib/readParameterTree.js","../node_modules/zmes-parser/lib/readRecords.js","../node_modules/zmes-parser/lib/parse.js","../lib/from/fromZmes.js"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/unbound-method\nconst toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array, except those that contain bigint values).\n *\n * @param value - Object to check.\n * @returns True if the object is an array or a typed array.\n */\nexport function isAnyArray(value) {\n    const tag = toString.call(value);\n    return tag.endsWith('Array]') && !tag.includes('Big');\n}\n//# sourceMappingURL=index.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * This function\n * @param output - undefined or a new array\n * @param length - length of the output array\n * @returns\n */\nexport function getOutputArray(output, length) {\n    if (output !== undefined) {\n        if (!isAnyArray(output)) {\n            throw new TypeError('output option must be an array if specified');\n        }\n        if (output.length !== length) {\n            throw new TypeError('the output array does not have the correct length');\n        }\n        return output;\n    }\n    else {\n        return new Float64Array(length);\n    }\n}\n//# sourceMappingURL=getOutputArray.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Calculates the median of an array.\n * @param input - Array containing values\n * @param options\n * @returns - median\n */\nexport function xMedian(input, options = {}) {\n    if (!isAnyArray(input)) {\n        throw new TypeError('input must be an array');\n    }\n    if (input.length === 0) {\n        throw new TypeError('input must not be empty');\n    }\n    const { exact = false } = options || {};\n    const array = input.slice();\n    const middleIndex = calcMiddle(0, array.length - 1);\n    const median = quickSelect(array, middleIndex);\n    if (array.length % 2 === 1 || !exact) {\n        return median;\n    }\n    const medianNext = quickSelect(array, middleIndex + 1);\n    return (median + medianNext) / 2;\n}\nfunction quickSelect(array, middleIndex) {\n    let low = 0;\n    let high = array.length - 1;\n    let middle = 0;\n    let currentLow = 0;\n    let currentHigh = 0;\n    while (true) {\n        if (high <= low) {\n            return array[middleIndex];\n        }\n        if (high === low + 1) {\n            if (array[low] > array[high]) {\n                swap(array, low, high);\n            }\n            return array[middleIndex];\n        }\n        // Find median of low, middle and high items; swap into position low\n        middle = calcMiddle(low, high);\n        if (array[middle] > array[high])\n            swap(array, middle, high);\n        if (array[low] > array[high])\n            swap(array, low, high);\n        if (array[middle] > array[low])\n            swap(array, middle, low);\n        // Swap low item (now in position middle) into position (low+1)\n        swap(array, middle, low + 1);\n        // Nibble from each end towards middle, swapping items when stuck\n        currentLow = low + 1;\n        currentHigh = high;\n        while (true) {\n            do\n                currentLow++;\n            while (array[low] > array[currentLow]);\n            do\n                currentHigh--;\n            while (array[currentHigh] > array[low]);\n            if (currentHigh < currentLow) {\n                break;\n            }\n            swap(array, currentLow, currentHigh);\n        }\n        // Swap middle item (in position low) back into correct position\n        swap(array, low, currentHigh);\n        // Re-set active partition\n        if (currentHigh <= middleIndex) {\n            low = currentLow;\n        }\n        if (currentHigh >= middleIndex) {\n            high = currentHigh - 1;\n        }\n    }\n}\nfunction swap(array, i, j) {\n    const temp = array[j];\n    array[j] = array[i];\n    array[i] = temp;\n}\nfunction calcMiddle(i, j) {\n    return Math.floor((i + j) / 2);\n}\n//# sourceMappingURL=xMedian.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Checks if the input is a non-empty array of numbers.\n * Only checks the first element.\n * @param input - Array to check.\n * @param options - Additional checks.\n */\nexport function xCheck(input, options = {}) {\n    const { minLength } = options;\n    if (!isAnyArray(input)) {\n        throw new TypeError('input must be an array');\n    }\n    if (input.length === 0) {\n        throw new TypeError('input must not be empty');\n    }\n    if (typeof input[0] !== 'number') {\n        throw new TypeError('input must contain numbers');\n    }\n    if (minLength && input.length < minLength) {\n        throw new Error(`input must have a length of at least ${minLength}`);\n    }\n}\n//# sourceMappingURL=xCheck.js.map","/**\n * Returns the closest index of a `target`\n * @param array - array of numbers\n * @param target - target\n * @param options\n * @returns - closest index\n */\nexport function xFindClosestIndex(array, target, options = {}) {\n    const { sorted = true } = options;\n    if (sorted) {\n        let low = 0;\n        let high = array.length - 1;\n        let middle = 0;\n        while (high - low > 1) {\n            middle = low + ((high - low) >> 1);\n            if (array[middle] < target) {\n                low = middle;\n            }\n            else if (array[middle] > target) {\n                high = middle;\n            }\n            else {\n                return middle;\n            }\n        }\n        if (low < array.length - 1) {\n            if (Math.abs(target - array[low]) < Math.abs(array[low + 1] - target)) {\n                return low;\n            }\n            else {\n                return low + 1;\n            }\n        }\n        else {\n            return low;\n        }\n    }\n    else {\n        let index = 0;\n        let diff = Number.POSITIVE_INFINITY;\n        for (let i = 0; i < array.length; i++) {\n            const currentDiff = Math.abs(array[i] - target);\n            if (currentDiff < diff) {\n                diff = currentDiff;\n                index = i;\n            }\n        }\n        return index;\n    }\n}\n//# sourceMappingURL=xFindClosestIndex.js.map","import { xFindClosestIndex } from \"./xFindClosestIndex.js\";\n/**\n * Returns an object with {fromIndex, toIndex} for a specific from / to\n * @param x - array of numbers\n * @param options - Options\n */\nexport function xGetFromToIndex(x, options = {}) {\n    let { fromIndex, toIndex } = options;\n    const { from, to } = options;\n    if (fromIndex === undefined) {\n        if (from !== undefined) {\n            fromIndex = xFindClosestIndex(x, from);\n        }\n        else {\n            fromIndex = 0;\n        }\n    }\n    if (toIndex === undefined) {\n        if (to !== undefined) {\n            toIndex = xFindClosestIndex(x, to);\n        }\n        else {\n            toIndex = x.length - 1;\n        }\n    }\n    if (fromIndex < 0)\n        fromIndex = 0;\n    if (toIndex < 0)\n        toIndex = 0;\n    if (fromIndex >= x.length)\n        fromIndex = x.length - 1;\n    if (toIndex >= x.length)\n        toIndex = x.length - 1;\n    if (fromIndex > toIndex)\n        [fromIndex, toIndex] = [toIndex, fromIndex];\n    return { fromIndex, toIndex };\n}\n//# sourceMappingURL=xGetFromToIndex.js.map","import { xCheck } from \"./xCheck.js\";\nimport { xGetFromToIndex } from \"./xGetFromToIndex.js\";\nexport function xAbsoluteSum(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let sum = 0;\n    for (let i = fromIndex; i <= toIndex; i++) {\n        sum += Math.abs(array[i]);\n    }\n    return sum;\n}\n//# sourceMappingURL=xAbsoluteSum.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * This function xAdd the first array by the second array or a constant value to each element of the first array\n * @param array1 - the first array\n * @param array2 - the second array or number\n * @returns the result of the addition\n */\nexport function xAdd(array1, array2) {\n    let isConstant = false;\n    let constant = 0;\n    if (isAnyArray(array2)) {\n        if (array1.length !== array2.length) {\n            throw new Error('size of array1 and array2 must be identical');\n        }\n    }\n    else {\n        isConstant = true;\n        constant = array2;\n    }\n    const array3 = new Float64Array(array1.length);\n    if (isConstant) {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] + constant;\n        }\n    }\n    else {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] + array2[i];\n        }\n    }\n    return array3;\n}\n//# sourceMappingURL=xAdd.js.map","/**\n * Will apply a function on each element of the array described as a string\n * By default we will use as variable 'x'\n * In front of sequence of lowercase we will add 'Math.'. This allows to write\n * `sin(x) + cos(x)` and it will be replace internally by (x) => (Math.sin(x) + Math.cos(x))\n * @param array\n * @param options\n * @returns\n */\nexport function xApplyFunctionStr(array, options = {}) {\n    const { variableLabel = 'x', fctString = variableLabel } = options;\n    const fct = new Function(variableLabel, `return Number(${fctString\n        .replaceAll(/(?<before>^|\\W)(?<after>[\\da-z]{2,}\\()/g, '$<before>Math.$<after>')\n        .replaceAll('Math.Math', 'Math')})`);\n    const toReturn = Float64Array.from(array);\n    for (let i = 0; i < array.length; i++) {\n        toReturn[i] = fct(array[i]);\n        if (Number.isNaN(toReturn[i])) {\n            throw new Error(`The callback ${fctString} does not return a number: ${array[i]}`);\n        }\n    }\n    return toReturn;\n}\n//# sourceMappingURL=xApplyFunctionStr.js.map","import { isAnyArray } from 'is-any-array';\nimport { getOutputArray } from \"./getOutputArray.js\";\n/**\n * This function xMultiply the first array by the second array or a constant value to each element of the first array\n * @param array1 - first array\n * @param array2 - second array\n * @param options - options\n */\nexport function xMultiply(array1, array2, options = {}) {\n    let isConstant = false;\n    let constant = 0;\n    if (isAnyArray(array2)) {\n        if (array1.length !== array2.length) {\n            throw new Error('size of array1 and array2 must be identical');\n        }\n    }\n    else {\n        isConstant = true;\n        constant = array2;\n    }\n    const array3 = getOutputArray(options.output, array1.length);\n    if (isConstant) {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] * constant;\n        }\n    }\n    else {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] * array2[i];\n        }\n    }\n    return array3;\n}\n//# sourceMappingURL=xMultiply.js.map","// eslint-disable-next-line @typescript-eslint/unbound-method\nconst toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array, except those that contain bigint values).\n *\n * @param value - Object to check.\n * @returns True if the object is an array or a typed array.\n */\nexport function isAnyArray(value) {\n    const tag = toString.call(value);\n    return tag.endsWith('Array]') && !tag.includes('Big');\n}\n//# sourceMappingURL=index.js.map","// eslint-disable-next-line @typescript-eslint/unbound-method\nconst toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array, except those that contain bigint values).\n *\n * @param value - Object to check.\n * @returns True if the object is an array or a typed array.\n */\nexport function isAnyArray(value) {\n    const tag = toString.call(value);\n    return tag.endsWith('Array]') && !tag.includes('Big');\n}\n//# sourceMappingURL=index.js.map","// eslint-disable-next-line @typescript-eslint/unbound-method\nconst toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array, except those that contain bigint values).\n *\n * @param value - Object to check.\n * @returns True if the object is an array or a typed array.\n */\nexport function isAnyArray(value) {\n    const tag = toString.call(value);\n    return tag.endsWith('Array]') && !tag.includes('Big');\n}\n//# sourceMappingURL=index.js.map","import { isAnyArray } from 'is-any-array';\n\nfunction max(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var _options$fromIndex = options.fromIndex,\n      fromIndex = _options$fromIndex === void 0 ? 0 : _options$fromIndex,\n      _options$toIndex = options.toIndex,\n      toIndex = _options$toIndex === void 0 ? input.length : _options$toIndex;\n\n  if (fromIndex < 0 || fromIndex >= input.length || !Number.isInteger(fromIndex)) {\n    throw new Error('fromIndex must be a positive integer smaller than length');\n  }\n\n  if (toIndex <= fromIndex || toIndex > input.length || !Number.isInteger(toIndex)) {\n    throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n  }\n\n  var maxValue = input[fromIndex];\n\n  for (var i = fromIndex + 1; i < toIndex; i++) {\n    if (input[i] > maxValue) maxValue = input[i];\n  }\n\n  return maxValue;\n}\n\nexport { max as default };\n","// eslint-disable-next-line @typescript-eslint/unbound-method\nconst toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array, except those that contain bigint values).\n *\n * @param value - Object to check.\n * @returns True if the object is an array or a typed array.\n */\nexport function isAnyArray(value) {\n    const tag = toString.call(value);\n    return tag.endsWith('Array]') && !tag.includes('Big');\n}\n//# sourceMappingURL=index.js.map","import { isAnyArray } from 'is-any-array';\n\nfunction min(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var _options$fromIndex = options.fromIndex,\n      fromIndex = _options$fromIndex === void 0 ? 0 : _options$fromIndex,\n      _options$toIndex = options.toIndex,\n      toIndex = _options$toIndex === void 0 ? input.length : _options$toIndex;\n\n  if (fromIndex < 0 || fromIndex >= input.length || !Number.isInteger(fromIndex)) {\n    throw new Error('fromIndex must be a positive integer smaller than length');\n  }\n\n  if (toIndex <= fromIndex || toIndex > input.length || !Number.isInteger(toIndex)) {\n    throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n  }\n\n  var minValue = input[fromIndex];\n\n  for (var i = fromIndex + 1; i < toIndex; i++) {\n    if (input[i] < minValue) minValue = input[i];\n  }\n\n  return minValue;\n}\n\nexport { min as default };\n","import { isAnyArray } from 'is-any-array';\nimport max from 'ml-array-max';\nimport min from 'ml-array-min';\n\nfunction rescale(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  } else if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var output;\n\n  if (options.output !== undefined) {\n    if (!isAnyArray(options.output)) {\n      throw new TypeError('output option must be an array if specified');\n    }\n\n    output = options.output;\n  } else {\n    output = new Array(input.length);\n  }\n\n  var currentMin = min(input);\n  var currentMax = max(input);\n\n  if (currentMin === currentMax) {\n    throw new RangeError('minimum and maximum input values are equal. Cannot rescale a constant array');\n  }\n\n  var _options$min = options.min,\n      minValue = _options$min === void 0 ? options.autoMinMax ? currentMin : 0 : _options$min,\n      _options$max = options.max,\n      maxValue = _options$max === void 0 ? options.autoMinMax ? currentMax : 1 : _options$max;\n\n  if (minValue >= maxValue) {\n    throw new RangeError('min option must be smaller than max option');\n  }\n\n  var factor = (maxValue - minValue) / (currentMax - currentMin);\n\n  for (var i = 0; i < input.length; i++) {\n    output[i] = (input[i] - currentMin) * factor + minValue;\n  }\n\n  return output;\n}\n\nexport { rescale as default };\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar isAnyArray = require('is-any-array');\nvar rescale = require('ml-array-rescale');\n\nconst indent = ' '.repeat(2);\nconst indentData = ' '.repeat(4);\n\n/**\n * @this {Matrix}\n * @returns {string}\n */\nfunction inspectMatrix() {\n  return inspectMatrixWithOptions(this);\n}\n\nfunction inspectMatrixWithOptions(matrix, options = {}) {\n  const {\n    maxRows = 15,\n    maxColumns = 10,\n    maxNumSize = 8,\n    padMinus = 'auto',\n  } = options;\n  return `${matrix.constructor.name} {\n${indent}[\n${indentData}${inspectData(matrix, maxRows, maxColumns, maxNumSize, padMinus)}\n${indent}]\n${indent}rows: ${matrix.rows}\n${indent}columns: ${matrix.columns}\n}`;\n}\n\nfunction inspectData(matrix, maxRows, maxColumns, maxNumSize, padMinus) {\n  const { rows, columns } = matrix;\n  const maxI = Math.min(rows, maxRows);\n  const maxJ = Math.min(columns, maxColumns);\n  const result = [];\n\n  if (padMinus === 'auto') {\n    padMinus = false;\n    loop: for (let i = 0; i < maxI; i++) {\n      for (let j = 0; j < maxJ; j++) {\n        if (matrix.get(i, j) < 0) {\n          padMinus = true;\n          break loop;\n        }\n      }\n    }\n  }\n\n  for (let i = 0; i < maxI; i++) {\n    let line = [];\n    for (let j = 0; j < maxJ; j++) {\n      line.push(formatNumber(matrix.get(i, j), maxNumSize, padMinus));\n    }\n    result.push(`${line.join(' ')}`);\n  }\n  if (maxJ !== columns) {\n    result[result.length - 1] += ` ... ${columns - maxColumns} more columns`;\n  }\n  if (maxI !== rows) {\n    result.push(`... ${rows - maxRows} more rows`);\n  }\n  return result.join(`\\n${indentData}`);\n}\n\nfunction formatNumber(num, maxNumSize, padMinus) {\n  return (\n    num >= 0 && padMinus\n      ? ` ${formatNumber2(num, maxNumSize - 1)}`\n      : formatNumber2(num, maxNumSize)\n  ).padEnd(maxNumSize);\n}\n\nfunction formatNumber2(num, len) {\n  // small.length numbers should be as is\n  let str = num.toString();\n  if (str.length <= len) return str;\n\n  // (7)'0.00123' is better then (7)'1.23e-2'\n  // (8)'0.000123' is worse then (7)'1.23e-3',\n  let fix = num.toFixed(len);\n  if (fix.length > len) {\n    fix = num.toFixed(Math.max(0, len - (fix.length - len)));\n  }\n  if (\n    fix.length <= len &&\n    !fix.startsWith('0.000') &&\n    !fix.startsWith('-0.000')\n  ) {\n    return fix;\n  }\n\n  // well, if it's still too long the user should've used longer numbers\n  let exp = num.toExponential(len);\n  if (exp.length > len) {\n    exp = num.toExponential(Math.max(0, len - (exp.length - len)));\n  }\n  return exp.slice(0);\n}\n\nfunction installMathOperations(AbstractMatrix, Matrix) {\n  AbstractMatrix.prototype.add = function add(value) {\n    if (typeof value === 'number') return this.addS(value);\n    return this.addM(value);\n  };\n\n  AbstractMatrix.prototype.addS = function addS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.addM = function addM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.add = function add(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.add(value);\n  };\n\n  AbstractMatrix.prototype.sub = function sub(value) {\n    if (typeof value === 'number') return this.subS(value);\n    return this.subM(value);\n  };\n\n  AbstractMatrix.prototype.subS = function subS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.subM = function subM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sub = function sub(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sub(value);\n  };\n  AbstractMatrix.prototype.subtract = AbstractMatrix.prototype.sub;\n  AbstractMatrix.prototype.subtractS = AbstractMatrix.prototype.subS;\n  AbstractMatrix.prototype.subtractM = AbstractMatrix.prototype.subM;\n  AbstractMatrix.subtract = AbstractMatrix.sub;\n\n  AbstractMatrix.prototype.mul = function mul(value) {\n    if (typeof value === 'number') return this.mulS(value);\n    return this.mulM(value);\n  };\n\n  AbstractMatrix.prototype.mulS = function mulS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.mulM = function mulM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.mul = function mul(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.mul(value);\n  };\n  AbstractMatrix.prototype.multiply = AbstractMatrix.prototype.mul;\n  AbstractMatrix.prototype.multiplyS = AbstractMatrix.prototype.mulS;\n  AbstractMatrix.prototype.multiplyM = AbstractMatrix.prototype.mulM;\n  AbstractMatrix.multiply = AbstractMatrix.mul;\n\n  AbstractMatrix.prototype.div = function div(value) {\n    if (typeof value === 'number') return this.divS(value);\n    return this.divM(value);\n  };\n\n  AbstractMatrix.prototype.divS = function divS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.divM = function divM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.div = function div(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.div(value);\n  };\n  AbstractMatrix.prototype.divide = AbstractMatrix.prototype.div;\n  AbstractMatrix.prototype.divideS = AbstractMatrix.prototype.divS;\n  AbstractMatrix.prototype.divideM = AbstractMatrix.prototype.divM;\n  AbstractMatrix.divide = AbstractMatrix.div;\n\n  AbstractMatrix.prototype.mod = function mod(value) {\n    if (typeof value === 'number') return this.modS(value);\n    return this.modM(value);\n  };\n\n  AbstractMatrix.prototype.modS = function modS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) % value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.modM = function modM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) % matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.mod = function mod(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.mod(value);\n  };\n  AbstractMatrix.prototype.modulus = AbstractMatrix.prototype.mod;\n  AbstractMatrix.prototype.modulusS = AbstractMatrix.prototype.modS;\n  AbstractMatrix.prototype.modulusM = AbstractMatrix.prototype.modM;\n  AbstractMatrix.modulus = AbstractMatrix.mod;\n\n  AbstractMatrix.prototype.and = function and(value) {\n    if (typeof value === 'number') return this.andS(value);\n    return this.andM(value);\n  };\n\n  AbstractMatrix.prototype.andS = function andS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) & value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.andM = function andM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) & matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.and = function and(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.and(value);\n  };\n\n  AbstractMatrix.prototype.or = function or(value) {\n    if (typeof value === 'number') return this.orS(value);\n    return this.orM(value);\n  };\n\n  AbstractMatrix.prototype.orS = function orS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) | value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.orM = function orM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) | matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.or = function or(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.or(value);\n  };\n\n  AbstractMatrix.prototype.xor = function xor(value) {\n    if (typeof value === 'number') return this.xorS(value);\n    return this.xorM(value);\n  };\n\n  AbstractMatrix.prototype.xorS = function xorS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) ^ value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.xorM = function xorM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) ^ matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.xor = function xor(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.xor(value);\n  };\n\n  AbstractMatrix.prototype.leftShift = function leftShift(value) {\n    if (typeof value === 'number') return this.leftShiftS(value);\n    return this.leftShiftM(value);\n  };\n\n  AbstractMatrix.prototype.leftShiftS = function leftShiftS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) << value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.leftShiftM = function leftShiftM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) << matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.leftShift = function leftShift(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.leftShift(value);\n  };\n\n  AbstractMatrix.prototype.signPropagatingRightShift = function signPropagatingRightShift(value) {\n    if (typeof value === 'number') return this.signPropagatingRightShiftS(value);\n    return this.signPropagatingRightShiftM(value);\n  };\n\n  AbstractMatrix.prototype.signPropagatingRightShiftS = function signPropagatingRightShiftS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >> value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.signPropagatingRightShiftM = function signPropagatingRightShiftM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >> matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.signPropagatingRightShift = function signPropagatingRightShift(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.signPropagatingRightShift(value);\n  };\n\n  AbstractMatrix.prototype.rightShift = function rightShift(value) {\n    if (typeof value === 'number') return this.rightShiftS(value);\n    return this.rightShiftM(value);\n  };\n\n  AbstractMatrix.prototype.rightShiftS = function rightShiftS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >>> value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.rightShiftM = function rightShiftM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >>> matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.rightShift = function rightShift(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.rightShift(value);\n  };\n  AbstractMatrix.prototype.zeroFillRightShift = AbstractMatrix.prototype.rightShift;\n  AbstractMatrix.prototype.zeroFillRightShiftS = AbstractMatrix.prototype.rightShiftS;\n  AbstractMatrix.prototype.zeroFillRightShiftM = AbstractMatrix.prototype.rightShiftM;\n  AbstractMatrix.zeroFillRightShift = AbstractMatrix.rightShift;\n\n  AbstractMatrix.prototype.not = function not() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, ~(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.not = function not(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.not();\n  };\n\n  AbstractMatrix.prototype.abs = function abs() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.abs(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.abs = function abs(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.abs();\n  };\n\n  AbstractMatrix.prototype.acos = function acos() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.acos(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.acos = function acos(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.acos();\n  };\n\n  AbstractMatrix.prototype.acosh = function acosh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.acosh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.acosh = function acosh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.acosh();\n  };\n\n  AbstractMatrix.prototype.asin = function asin() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.asin(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.asin = function asin(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.asin();\n  };\n\n  AbstractMatrix.prototype.asinh = function asinh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.asinh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.asinh = function asinh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.asinh();\n  };\n\n  AbstractMatrix.prototype.atan = function atan() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.atan(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.atan = function atan(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.atan();\n  };\n\n  AbstractMatrix.prototype.atanh = function atanh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.atanh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.atanh = function atanh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.atanh();\n  };\n\n  AbstractMatrix.prototype.cbrt = function cbrt() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.cbrt(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.cbrt = function cbrt(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.cbrt();\n  };\n\n  AbstractMatrix.prototype.ceil = function ceil() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.ceil(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.ceil = function ceil(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.ceil();\n  };\n\n  AbstractMatrix.prototype.clz32 = function clz32() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.clz32(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.clz32 = function clz32(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.clz32();\n  };\n\n  AbstractMatrix.prototype.cos = function cos() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.cos(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.cos = function cos(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.cos();\n  };\n\n  AbstractMatrix.prototype.cosh = function cosh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.cosh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.cosh = function cosh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.cosh();\n  };\n\n  AbstractMatrix.prototype.exp = function exp() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.exp(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.exp = function exp(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.exp();\n  };\n\n  AbstractMatrix.prototype.expm1 = function expm1() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.expm1(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.expm1 = function expm1(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.expm1();\n  };\n\n  AbstractMatrix.prototype.floor = function floor() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.floor(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.floor = function floor(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.floor();\n  };\n\n  AbstractMatrix.prototype.fround = function fround() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.fround(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.fround = function fround(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.fround();\n  };\n\n  AbstractMatrix.prototype.log = function log() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log = function log(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log();\n  };\n\n  AbstractMatrix.prototype.log1p = function log1p() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log1p(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log1p = function log1p(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log1p();\n  };\n\n  AbstractMatrix.prototype.log10 = function log10() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log10(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log10 = function log10(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log10();\n  };\n\n  AbstractMatrix.prototype.log2 = function log2() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log2(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log2 = function log2(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log2();\n  };\n\n  AbstractMatrix.prototype.round = function round() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.round(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.round = function round(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.round();\n  };\n\n  AbstractMatrix.prototype.sign = function sign() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sign(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sign = function sign(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sign();\n  };\n\n  AbstractMatrix.prototype.sin = function sin() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sin(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sin = function sin(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sin();\n  };\n\n  AbstractMatrix.prototype.sinh = function sinh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sinh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sinh = function sinh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sinh();\n  };\n\n  AbstractMatrix.prototype.sqrt = function sqrt() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sqrt(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sqrt = function sqrt(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sqrt();\n  };\n\n  AbstractMatrix.prototype.tan = function tan() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.tan(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.tan = function tan(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.tan();\n  };\n\n  AbstractMatrix.prototype.tanh = function tanh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.tanh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.tanh = function tanh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.tanh();\n  };\n\n  AbstractMatrix.prototype.trunc = function trunc() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.trunc(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.trunc = function trunc(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.trunc();\n  };\n\n  AbstractMatrix.pow = function pow(matrix, arg0) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.pow(arg0);\n  };\n\n  AbstractMatrix.prototype.pow = function pow(value) {\n    if (typeof value === 'number') return this.powS(value);\n    return this.powM(value);\n  };\n\n  AbstractMatrix.prototype.powS = function powS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) ** value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.powM = function powM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) ** matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n}\n\n/**\n * @private\n * Check that a row index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nfunction checkRowIndex(matrix, index, outer) {\n  let max = outer ? matrix.rows : matrix.rows - 1;\n  if (index < 0 || index > max) {\n    throw new RangeError('Row index out of range');\n  }\n}\n\n/**\n * @private\n * Check that a column index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nfunction checkColumnIndex(matrix, index, outer) {\n  let max = outer ? matrix.columns : matrix.columns - 1;\n  if (index < 0 || index > max) {\n    throw new RangeError('Column index out of range');\n  }\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nfunction checkRowVector(matrix, vector) {\n  if (vector.to1DArray) {\n    vector = vector.to1DArray();\n  }\n  if (vector.length !== matrix.columns) {\n    throw new RangeError(\n      'vector size must be the same as the number of columns',\n    );\n  }\n  return vector;\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nfunction checkColumnVector(matrix, vector) {\n  if (vector.to1DArray) {\n    vector = vector.to1DArray();\n  }\n  if (vector.length !== matrix.rows) {\n    throw new RangeError('vector size must be the same as the number of rows');\n  }\n  return vector;\n}\n\nfunction checkRowIndices(matrix, rowIndices) {\n  if (!isAnyArray.isAnyArray(rowIndices)) {\n    throw new TypeError('row indices must be an array');\n  }\n\n  for (let i = 0; i < rowIndices.length; i++) {\n    if (rowIndices[i] < 0 || rowIndices[i] >= matrix.rows) {\n      throw new RangeError('row indices are out of range');\n    }\n  }\n}\n\nfunction checkColumnIndices(matrix, columnIndices) {\n  if (!isAnyArray.isAnyArray(columnIndices)) {\n    throw new TypeError('column indices must be an array');\n  }\n\n  for (let i = 0; i < columnIndices.length; i++) {\n    if (columnIndices[i] < 0 || columnIndices[i] >= matrix.columns) {\n      throw new RangeError('column indices are out of range');\n    }\n  }\n}\n\nfunction checkRange(matrix, startRow, endRow, startColumn, endColumn) {\n  if (arguments.length !== 5) {\n    throw new RangeError('expected 4 arguments');\n  }\n  checkNumber('startRow', startRow);\n  checkNumber('endRow', endRow);\n  checkNumber('startColumn', startColumn);\n  checkNumber('endColumn', endColumn);\n  if (\n    startRow > endRow ||\n    startColumn > endColumn ||\n    startRow < 0 ||\n    startRow >= matrix.rows ||\n    endRow < 0 ||\n    endRow >= matrix.rows ||\n    startColumn < 0 ||\n    startColumn >= matrix.columns ||\n    endColumn < 0 ||\n    endColumn >= matrix.columns\n  ) {\n    throw new RangeError('Submatrix indices are out of range');\n  }\n}\n\nfunction newArray(length, value = 0) {\n  let array = [];\n  for (let i = 0; i < length; i++) {\n    array.push(value);\n  }\n  return array;\n}\n\nfunction checkNumber(name, value) {\n  if (typeof value !== 'number') {\n    throw new TypeError(`${name} must be a number`);\n  }\n}\n\nfunction checkNonEmpty(matrix) {\n  if (matrix.isEmpty()) {\n    throw new Error('Empty matrix has no elements to index');\n  }\n}\n\nfunction sumByRow(matrix) {\n  let sum = newArray(matrix.rows);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[i] += matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nfunction sumByColumn(matrix) {\n  let sum = newArray(matrix.columns);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[j] += matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nfunction sumAll(matrix) {\n  let v = 0;\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      v += matrix.get(i, j);\n    }\n  }\n  return v;\n}\n\nfunction productByRow(matrix) {\n  let sum = newArray(matrix.rows, 1);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[i] *= matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nfunction productByColumn(matrix) {\n  let sum = newArray(matrix.columns, 1);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[j] *= matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nfunction productAll(matrix) {\n  let v = 1;\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      v *= matrix.get(i, j);\n    }\n  }\n  return v;\n}\n\nfunction varianceByRow(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const variance = [];\n\n  for (let i = 0; i < rows; i++) {\n    let sum1 = 0;\n    let sum2 = 0;\n    let x = 0;\n    for (let j = 0; j < cols; j++) {\n      x = matrix.get(i, j) - mean[i];\n      sum1 += x;\n      sum2 += x * x;\n    }\n    if (unbiased) {\n      variance.push((sum2 - (sum1 * sum1) / cols) / (cols - 1));\n    } else {\n      variance.push((sum2 - (sum1 * sum1) / cols) / cols);\n    }\n  }\n  return variance;\n}\n\nfunction varianceByColumn(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const variance = [];\n\n  for (let j = 0; j < cols; j++) {\n    let sum1 = 0;\n    let sum2 = 0;\n    let x = 0;\n    for (let i = 0; i < rows; i++) {\n      x = matrix.get(i, j) - mean[j];\n      sum1 += x;\n      sum2 += x * x;\n    }\n    if (unbiased) {\n      variance.push((sum2 - (sum1 * sum1) / rows) / (rows - 1));\n    } else {\n      variance.push((sum2 - (sum1 * sum1) / rows) / rows);\n    }\n  }\n  return variance;\n}\n\nfunction varianceAll(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const size = rows * cols;\n\n  let sum1 = 0;\n  let sum2 = 0;\n  let x = 0;\n  for (let i = 0; i < rows; i++) {\n    for (let j = 0; j < cols; j++) {\n      x = matrix.get(i, j) - mean;\n      sum1 += x;\n      sum2 += x * x;\n    }\n  }\n  if (unbiased) {\n    return (sum2 - (sum1 * sum1) / size) / (size - 1);\n  } else {\n    return (sum2 - (sum1 * sum1) / size) / size;\n  }\n}\n\nfunction centerByRow(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean[i]);\n    }\n  }\n}\n\nfunction centerByColumn(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean[j]);\n    }\n  }\n}\n\nfunction centerAll(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean);\n    }\n  }\n}\n\nfunction getScaleByRow(matrix) {\n  const scale = [];\n  for (let i = 0; i < matrix.rows; i++) {\n    let sum = 0;\n    for (let j = 0; j < matrix.columns; j++) {\n      sum += matrix.get(i, j) ** 2 / (matrix.columns - 1);\n    }\n    scale.push(Math.sqrt(sum));\n  }\n  return scale;\n}\n\nfunction scaleByRow(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale[i]);\n    }\n  }\n}\n\nfunction getScaleByColumn(matrix) {\n  const scale = [];\n  for (let j = 0; j < matrix.columns; j++) {\n    let sum = 0;\n    for (let i = 0; i < matrix.rows; i++) {\n      sum += matrix.get(i, j) ** 2 / (matrix.rows - 1);\n    }\n    scale.push(Math.sqrt(sum));\n  }\n  return scale;\n}\n\nfunction scaleByColumn(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale[j]);\n    }\n  }\n}\n\nfunction getScaleAll(matrix) {\n  const divider = matrix.size - 1;\n  let sum = 0;\n  for (let j = 0; j < matrix.columns; j++) {\n    for (let i = 0; i < matrix.rows; i++) {\n      sum += matrix.get(i, j) ** 2 / divider;\n    }\n  }\n  return Math.sqrt(sum);\n}\n\nfunction scaleAll(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale);\n    }\n  }\n}\n\nclass AbstractMatrix {\n  static from1DArray(newRows, newColumns, newData) {\n    let length = newRows * newColumns;\n    if (length !== newData.length) {\n      throw new RangeError('data length does not match given dimensions');\n    }\n    let newMatrix = new Matrix(newRows, newColumns);\n    for (let row = 0; row < newRows; row++) {\n      for (let column = 0; column < newColumns; column++) {\n        newMatrix.set(row, column, newData[row * newColumns + column]);\n      }\n    }\n    return newMatrix;\n  }\n\n  static rowVector(newData) {\n    let vector = new Matrix(1, newData.length);\n    for (let i = 0; i < newData.length; i++) {\n      vector.set(0, i, newData[i]);\n    }\n    return vector;\n  }\n\n  static columnVector(newData) {\n    let vector = new Matrix(newData.length, 1);\n    for (let i = 0; i < newData.length; i++) {\n      vector.set(i, 0, newData[i]);\n    }\n    return vector;\n  }\n\n  static zeros(rows, columns) {\n    return new Matrix(rows, columns);\n  }\n\n  static ones(rows, columns) {\n    return new Matrix(rows, columns).fill(1);\n  }\n\n  static rand(rows, columns, options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { random = Math.random } = options;\n    let matrix = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        matrix.set(i, j, random());\n      }\n    }\n    return matrix;\n  }\n\n  static randInt(rows, columns, options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { min = 0, max = 1000, random = Math.random } = options;\n    if (!Number.isInteger(min)) throw new TypeError('min must be an integer');\n    if (!Number.isInteger(max)) throw new TypeError('max must be an integer');\n    if (min >= max) throw new RangeError('min must be smaller than max');\n    let interval = max - min;\n    let matrix = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        let value = min + Math.round(random() * interval);\n        matrix.set(i, j, value);\n      }\n    }\n    return matrix;\n  }\n\n  static eye(rows, columns, value) {\n    if (columns === undefined) columns = rows;\n    if (value === undefined) value = 1;\n    let min = Math.min(rows, columns);\n    let matrix = this.zeros(rows, columns);\n    for (let i = 0; i < min; i++) {\n      matrix.set(i, i, value);\n    }\n    return matrix;\n  }\n\n  static diag(data, rows, columns) {\n    let l = data.length;\n    if (rows === undefined) rows = l;\n    if (columns === undefined) columns = rows;\n    let min = Math.min(l, rows, columns);\n    let matrix = this.zeros(rows, columns);\n    for (let i = 0; i < min; i++) {\n      matrix.set(i, i, data[i]);\n    }\n    return matrix;\n  }\n\n  static min(matrix1, matrix2) {\n    matrix1 = this.checkMatrix(matrix1);\n    matrix2 = this.checkMatrix(matrix2);\n    let rows = matrix1.rows;\n    let columns = matrix1.columns;\n    let result = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        result.set(i, j, Math.min(matrix1.get(i, j), matrix2.get(i, j)));\n      }\n    }\n    return result;\n  }\n\n  static max(matrix1, matrix2) {\n    matrix1 = this.checkMatrix(matrix1);\n    matrix2 = this.checkMatrix(matrix2);\n    let rows = matrix1.rows;\n    let columns = matrix1.columns;\n    let result = new this(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        result.set(i, j, Math.max(matrix1.get(i, j), matrix2.get(i, j)));\n      }\n    }\n    return result;\n  }\n\n  static checkMatrix(value) {\n    return AbstractMatrix.isMatrix(value) ? value : new Matrix(value);\n  }\n\n  static isMatrix(value) {\n    return value != null && value.klass === 'Matrix';\n  }\n\n  get size() {\n    return this.rows * this.columns;\n  }\n\n  apply(callback) {\n    if (typeof callback !== 'function') {\n      throw new TypeError('callback must be a function');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        callback.call(this, i, j);\n      }\n    }\n    return this;\n  }\n\n  to1DArray() {\n    let array = [];\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        array.push(this.get(i, j));\n      }\n    }\n    return array;\n  }\n\n  to2DArray() {\n    let copy = [];\n    for (let i = 0; i < this.rows; i++) {\n      copy.push([]);\n      for (let j = 0; j < this.columns; j++) {\n        copy[i].push(this.get(i, j));\n      }\n    }\n    return copy;\n  }\n\n  toJSON() {\n    return this.to2DArray();\n  }\n\n  isRowVector() {\n    return this.rows === 1;\n  }\n\n  isColumnVector() {\n    return this.columns === 1;\n  }\n\n  isVector() {\n    return this.rows === 1 || this.columns === 1;\n  }\n\n  isSquare() {\n    return this.rows === this.columns;\n  }\n\n  isEmpty() {\n    return this.rows === 0 || this.columns === 0;\n  }\n\n  isSymmetric() {\n    if (this.isSquare()) {\n      for (let i = 0; i < this.rows; i++) {\n        for (let j = 0; j <= i; j++) {\n          if (this.get(i, j) !== this.get(j, i)) {\n            return false;\n          }\n        }\n      }\n      return true;\n    }\n    return false;\n  }\n\n  isDistance() {\n    if (!this.isSymmetric()) return false;\n\n    for (let i = 0; i < this.rows; i++) {\n      if (this.get(i, i) !== 0) return false;\n    }\n\n    return true;\n  }\n\n  isEchelonForm() {\n    let i = 0;\n    let j = 0;\n    let previousColumn = -1;\n    let isEchelonForm = true;\n    let checked = false;\n    while (i < this.rows && isEchelonForm) {\n      j = 0;\n      checked = false;\n      while (j < this.columns && checked === false) {\n        if (this.get(i, j) === 0) {\n          j++;\n        } else if (this.get(i, j) === 1 && j > previousColumn) {\n          checked = true;\n          previousColumn = j;\n        } else {\n          isEchelonForm = false;\n          checked = true;\n        }\n      }\n      i++;\n    }\n    return isEchelonForm;\n  }\n\n  isReducedEchelonForm() {\n    let i = 0;\n    let j = 0;\n    let previousColumn = -1;\n    let isReducedEchelonForm = true;\n    let checked = false;\n    while (i < this.rows && isReducedEchelonForm) {\n      j = 0;\n      checked = false;\n      while (j < this.columns && checked === false) {\n        if (this.get(i, j) === 0) {\n          j++;\n        } else if (this.get(i, j) === 1 && j > previousColumn) {\n          checked = true;\n          previousColumn = j;\n        } else {\n          isReducedEchelonForm = false;\n          checked = true;\n        }\n      }\n      for (let k = j + 1; k < this.rows; k++) {\n        if (this.get(i, k) !== 0) {\n          isReducedEchelonForm = false;\n        }\n      }\n      i++;\n    }\n    return isReducedEchelonForm;\n  }\n\n  echelonForm() {\n    let result = this.clone();\n    let h = 0;\n    let k = 0;\n    while (h < result.rows && k < result.columns) {\n      let iMax = h;\n      for (let i = h; i < result.rows; i++) {\n        if (result.get(i, k) > result.get(iMax, k)) {\n          iMax = i;\n        }\n      }\n      if (result.get(iMax, k) === 0) {\n        k++;\n      } else {\n        result.swapRows(h, iMax);\n        let tmp = result.get(h, k);\n        for (let j = k; j < result.columns; j++) {\n          result.set(h, j, result.get(h, j) / tmp);\n        }\n        for (let i = h + 1; i < result.rows; i++) {\n          let factor = result.get(i, k) / result.get(h, k);\n          result.set(i, k, 0);\n          for (let j = k + 1; j < result.columns; j++) {\n            result.set(i, j, result.get(i, j) - result.get(h, j) * factor);\n          }\n        }\n        h++;\n        k++;\n      }\n    }\n    return result;\n  }\n\n  reducedEchelonForm() {\n    let result = this.echelonForm();\n    let m = result.columns;\n    let n = result.rows;\n    let h = n - 1;\n    while (h >= 0) {\n      if (result.maxRow(h) === 0) {\n        h--;\n      } else {\n        let p = 0;\n        let pivot = false;\n        while (p < n && pivot === false) {\n          if (result.get(h, p) === 1) {\n            pivot = true;\n          } else {\n            p++;\n          }\n        }\n        for (let i = 0; i < h; i++) {\n          let factor = result.get(i, p);\n          for (let j = p; j < m; j++) {\n            let tmp = result.get(i, j) - factor * result.get(h, j);\n            result.set(i, j, tmp);\n          }\n        }\n        h--;\n      }\n    }\n    return result;\n  }\n\n  set() {\n    throw new Error('set method is unimplemented');\n  }\n\n  get() {\n    throw new Error('get method is unimplemented');\n  }\n\n  repeat(options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { rows = 1, columns = 1 } = options;\n    if (!Number.isInteger(rows) || rows <= 0) {\n      throw new TypeError('rows must be a positive integer');\n    }\n    if (!Number.isInteger(columns) || columns <= 0) {\n      throw new TypeError('columns must be a positive integer');\n    }\n    let matrix = new Matrix(this.rows * rows, this.columns * columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        matrix.setSubMatrix(this, this.rows * i, this.columns * j);\n      }\n    }\n    return matrix;\n  }\n\n  fill(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, value);\n      }\n    }\n    return this;\n  }\n\n  neg() {\n    return this.mulS(-1);\n  }\n\n  getRow(index) {\n    checkRowIndex(this, index);\n    let row = [];\n    for (let i = 0; i < this.columns; i++) {\n      row.push(this.get(index, i));\n    }\n    return row;\n  }\n\n  getRowVector(index) {\n    return Matrix.rowVector(this.getRow(index));\n  }\n\n  setRow(index, array) {\n    checkRowIndex(this, index);\n    array = checkRowVector(this, array);\n    for (let i = 0; i < this.columns; i++) {\n      this.set(index, i, array[i]);\n    }\n    return this;\n  }\n\n  swapRows(row1, row2) {\n    checkRowIndex(this, row1);\n    checkRowIndex(this, row2);\n    for (let i = 0; i < this.columns; i++) {\n      let temp = this.get(row1, i);\n      this.set(row1, i, this.get(row2, i));\n      this.set(row2, i, temp);\n    }\n    return this;\n  }\n\n  getColumn(index) {\n    checkColumnIndex(this, index);\n    let column = [];\n    for (let i = 0; i < this.rows; i++) {\n      column.push(this.get(i, index));\n    }\n    return column;\n  }\n\n  getColumnVector(index) {\n    return Matrix.columnVector(this.getColumn(index));\n  }\n\n  setColumn(index, array) {\n    checkColumnIndex(this, index);\n    array = checkColumnVector(this, array);\n    for (let i = 0; i < this.rows; i++) {\n      this.set(i, index, array[i]);\n    }\n    return this;\n  }\n\n  swapColumns(column1, column2) {\n    checkColumnIndex(this, column1);\n    checkColumnIndex(this, column2);\n    for (let i = 0; i < this.rows; i++) {\n      let temp = this.get(i, column1);\n      this.set(i, column1, this.get(i, column2));\n      this.set(i, column2, temp);\n    }\n    return this;\n  }\n\n  addRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + vector[j]);\n      }\n    }\n    return this;\n  }\n\n  subRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - vector[j]);\n      }\n    }\n    return this;\n  }\n\n  mulRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * vector[j]);\n      }\n    }\n    return this;\n  }\n\n  divRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / vector[j]);\n      }\n    }\n    return this;\n  }\n\n  addColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + vector[i]);\n      }\n    }\n    return this;\n  }\n\n  subColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - vector[i]);\n      }\n    }\n    return this;\n  }\n\n  mulColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * vector[i]);\n      }\n    }\n    return this;\n  }\n\n  divColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / vector[i]);\n      }\n    }\n    return this;\n  }\n\n  mulRow(index, value) {\n    checkRowIndex(this, index);\n    for (let i = 0; i < this.columns; i++) {\n      this.set(index, i, this.get(index, i) * value);\n    }\n    return this;\n  }\n\n  mulColumn(index, value) {\n    checkColumnIndex(this, index);\n    for (let i = 0; i < this.rows; i++) {\n      this.set(i, index, this.get(i, index) * value);\n    }\n    return this;\n  }\n\n  max(by) {\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    switch (by) {\n      case 'row': {\n        const max = new Array(this.rows).fill(Number.NEGATIVE_INFINITY);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) > max[row]) {\n              max[row] = this.get(row, column);\n            }\n          }\n        }\n        return max;\n      }\n      case 'column': {\n        const max = new Array(this.columns).fill(Number.NEGATIVE_INFINITY);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) > max[column]) {\n              max[column] = this.get(row, column);\n            }\n          }\n        }\n        return max;\n      }\n      case undefined: {\n        let max = this.get(0, 0);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) > max) {\n              max = this.get(row, column);\n            }\n          }\n        }\n        return max;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  maxIndex() {\n    checkNonEmpty(this);\n    let v = this.get(0, 0);\n    let idx = [0, 0];\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        if (this.get(i, j) > v) {\n          v = this.get(i, j);\n          idx[0] = i;\n          idx[1] = j;\n        }\n      }\n    }\n    return idx;\n  }\n\n  min(by) {\n    if (this.isEmpty()) {\n      return NaN;\n    }\n\n    switch (by) {\n      case 'row': {\n        const min = new Array(this.rows).fill(Number.POSITIVE_INFINITY);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) < min[row]) {\n              min[row] = this.get(row, column);\n            }\n          }\n        }\n        return min;\n      }\n      case 'column': {\n        const min = new Array(this.columns).fill(Number.POSITIVE_INFINITY);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) < min[column]) {\n              min[column] = this.get(row, column);\n            }\n          }\n        }\n        return min;\n      }\n      case undefined: {\n        let min = this.get(0, 0);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) < min) {\n              min = this.get(row, column);\n            }\n          }\n        }\n        return min;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  minIndex() {\n    checkNonEmpty(this);\n    let v = this.get(0, 0);\n    let idx = [0, 0];\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        if (this.get(i, j) < v) {\n          v = this.get(i, j);\n          idx[0] = i;\n          idx[1] = j;\n        }\n      }\n    }\n    return idx;\n  }\n\n  maxRow(row) {\n    checkRowIndex(this, row);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(row, 0);\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) > v) {\n        v = this.get(row, i);\n      }\n    }\n    return v;\n  }\n\n  maxRowIndex(row) {\n    checkRowIndex(this, row);\n    checkNonEmpty(this);\n    let v = this.get(row, 0);\n    let idx = [row, 0];\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) > v) {\n        v = this.get(row, i);\n        idx[1] = i;\n      }\n    }\n    return idx;\n  }\n\n  minRow(row) {\n    checkRowIndex(this, row);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(row, 0);\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) < v) {\n        v = this.get(row, i);\n      }\n    }\n    return v;\n  }\n\n  minRowIndex(row) {\n    checkRowIndex(this, row);\n    checkNonEmpty(this);\n    let v = this.get(row, 0);\n    let idx = [row, 0];\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) < v) {\n        v = this.get(row, i);\n        idx[1] = i;\n      }\n    }\n    return idx;\n  }\n\n  maxColumn(column) {\n    checkColumnIndex(this, column);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(0, column);\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) > v) {\n        v = this.get(i, column);\n      }\n    }\n    return v;\n  }\n\n  maxColumnIndex(column) {\n    checkColumnIndex(this, column);\n    checkNonEmpty(this);\n    let v = this.get(0, column);\n    let idx = [0, column];\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) > v) {\n        v = this.get(i, column);\n        idx[0] = i;\n      }\n    }\n    return idx;\n  }\n\n  minColumn(column) {\n    checkColumnIndex(this, column);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(0, column);\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) < v) {\n        v = this.get(i, column);\n      }\n    }\n    return v;\n  }\n\n  minColumnIndex(column) {\n    checkColumnIndex(this, column);\n    checkNonEmpty(this);\n    let v = this.get(0, column);\n    let idx = [0, column];\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) < v) {\n        v = this.get(i, column);\n        idx[0] = i;\n      }\n    }\n    return idx;\n  }\n\n  diag() {\n    let min = Math.min(this.rows, this.columns);\n    let diag = [];\n    for (let i = 0; i < min; i++) {\n      diag.push(this.get(i, i));\n    }\n    return diag;\n  }\n\n  norm(type = 'frobenius') {\n    switch (type) {\n      case 'max':\n        return this.max();\n      case 'frobenius':\n        return Math.sqrt(this.dot(this));\n      default:\n        throw new RangeError(`unknown norm type: ${type}`);\n    }\n  }\n\n  cumulativeSum() {\n    let sum = 0;\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        sum += this.get(i, j);\n        this.set(i, j, sum);\n      }\n    }\n    return this;\n  }\n\n  dot(vector2) {\n    if (AbstractMatrix.isMatrix(vector2)) vector2 = vector2.to1DArray();\n    let vector1 = this.to1DArray();\n    if (vector1.length !== vector2.length) {\n      throw new RangeError('vectors do not have the same size');\n    }\n    let dot = 0;\n    for (let i = 0; i < vector1.length; i++) {\n      dot += vector1[i] * vector2[i];\n    }\n    return dot;\n  }\n\n  mmul(other) {\n    other = Matrix.checkMatrix(other);\n\n    let m = this.rows;\n    let n = this.columns;\n    let p = other.columns;\n\n    let result = new Matrix(m, p);\n\n    let Bcolj = new Float64Array(n);\n    for (let j = 0; j < p; j++) {\n      for (let k = 0; k < n; k++) {\n        Bcolj[k] = other.get(k, j);\n      }\n\n      for (let i = 0; i < m; i++) {\n        let s = 0;\n        for (let k = 0; k < n; k++) {\n          s += this.get(i, k) * Bcolj[k];\n        }\n\n        result.set(i, j, s);\n      }\n    }\n    return result;\n  }\n\n  mpow(scalar) {\n    if (!this.isSquare()) {\n      throw new RangeError('Matrix must be square');\n    }\n    if (!Number.isInteger(scalar) || scalar < 0) {\n      throw new RangeError('Exponent must be a non-negative integer');\n    }\n    // Russian Peasant exponentiation, i.e. exponentiation by squaring\n    let result = Matrix.eye(this.rows);\n    let bb = this;\n    // Note: Don't bit shift. In JS, that would truncate at 32 bits\n    for (let e = scalar; e >= 1; e /= 2) {\n      if ((e & 1) !== 0) {\n        result = result.mmul(bb);\n      }\n      bb = bb.mmul(bb);\n    }\n    return result;\n  }\n\n  strassen2x2(other) {\n    other = Matrix.checkMatrix(other);\n    let result = new Matrix(2, 2);\n    const a11 = this.get(0, 0);\n    const b11 = other.get(0, 0);\n    const a12 = this.get(0, 1);\n    const b12 = other.get(0, 1);\n    const a21 = this.get(1, 0);\n    const b21 = other.get(1, 0);\n    const a22 = this.get(1, 1);\n    const b22 = other.get(1, 1);\n\n    // Compute intermediate values.\n    const m1 = (a11 + a22) * (b11 + b22);\n    const m2 = (a21 + a22) * b11;\n    const m3 = a11 * (b12 - b22);\n    const m4 = a22 * (b21 - b11);\n    const m5 = (a11 + a12) * b22;\n    const m6 = (a21 - a11) * (b11 + b12);\n    const m7 = (a12 - a22) * (b21 + b22);\n\n    // Combine intermediate values into the output.\n    const c00 = m1 + m4 - m5 + m7;\n    const c01 = m3 + m5;\n    const c10 = m2 + m4;\n    const c11 = m1 - m2 + m3 + m6;\n\n    result.set(0, 0, c00);\n    result.set(0, 1, c01);\n    result.set(1, 0, c10);\n    result.set(1, 1, c11);\n    return result;\n  }\n\n  strassen3x3(other) {\n    other = Matrix.checkMatrix(other);\n    let result = new Matrix(3, 3);\n\n    const a00 = this.get(0, 0);\n    const a01 = this.get(0, 1);\n    const a02 = this.get(0, 2);\n    const a10 = this.get(1, 0);\n    const a11 = this.get(1, 1);\n    const a12 = this.get(1, 2);\n    const a20 = this.get(2, 0);\n    const a21 = this.get(2, 1);\n    const a22 = this.get(2, 2);\n\n    const b00 = other.get(0, 0);\n    const b01 = other.get(0, 1);\n    const b02 = other.get(0, 2);\n    const b10 = other.get(1, 0);\n    const b11 = other.get(1, 1);\n    const b12 = other.get(1, 2);\n    const b20 = other.get(2, 0);\n    const b21 = other.get(2, 1);\n    const b22 = other.get(2, 2);\n\n    const m1 = (a00 + a01 + a02 - a10 - a11 - a21 - a22) * b11;\n    const m2 = (a00 - a10) * (-b01 + b11);\n    const m3 = a11 * (-b00 + b01 + b10 - b11 - b12 - b20 + b22);\n    const m4 = (-a00 + a10 + a11) * (b00 - b01 + b11);\n    const m5 = (a10 + a11) * (-b00 + b01);\n    const m6 = a00 * b00;\n    const m7 = (-a00 + a20 + a21) * (b00 - b02 + b12);\n    const m8 = (-a00 + a20) * (b02 - b12);\n    const m9 = (a20 + a21) * (-b00 + b02);\n    const m10 = (a00 + a01 + a02 - a11 - a12 - a20 - a21) * b12;\n    const m11 = a21 * (-b00 + b02 + b10 - b11 - b12 - b20 + b21);\n    const m12 = (-a02 + a21 + a22) * (b11 + b20 - b21);\n    const m13 = (a02 - a22) * (b11 - b21);\n    const m14 = a02 * b20;\n    const m15 = (a21 + a22) * (-b20 + b21);\n    const m16 = (-a02 + a11 + a12) * (b12 + b20 - b22);\n    const m17 = (a02 - a12) * (b12 - b22);\n    const m18 = (a11 + a12) * (-b20 + b22);\n    const m19 = a01 * b10;\n    const m20 = a12 * b21;\n    const m21 = a10 * b02;\n    const m22 = a20 * b01;\n    const m23 = a22 * b22;\n\n    const c00 = m6 + m14 + m19;\n    const c01 = m1 + m4 + m5 + m6 + m12 + m14 + m15;\n    const c02 = m6 + m7 + m9 + m10 + m14 + m16 + m18;\n    const c10 = m2 + m3 + m4 + m6 + m14 + m16 + m17;\n    const c11 = m2 + m4 + m5 + m6 + m20;\n    const c12 = m14 + m16 + m17 + m18 + m21;\n    const c20 = m6 + m7 + m8 + m11 + m12 + m13 + m14;\n    const c21 = m12 + m13 + m14 + m15 + m22;\n    const c22 = m6 + m7 + m8 + m9 + m23;\n\n    result.set(0, 0, c00);\n    result.set(0, 1, c01);\n    result.set(0, 2, c02);\n    result.set(1, 0, c10);\n    result.set(1, 1, c11);\n    result.set(1, 2, c12);\n    result.set(2, 0, c20);\n    result.set(2, 1, c21);\n    result.set(2, 2, c22);\n    return result;\n  }\n\n  mmulStrassen(y) {\n    y = Matrix.checkMatrix(y);\n    let x = this.clone();\n    let r1 = x.rows;\n    let c1 = x.columns;\n    let r2 = y.rows;\n    let c2 = y.columns;\n    if (c1 !== r2) {\n      // eslint-disable-next-line no-console\n      console.warn(\n        `Multiplying ${r1} x ${c1} and ${r2} x ${c2} matrix: dimensions do not match.`,\n      );\n    }\n\n    // Put a matrix into the top left of a matrix of zeros.\n    // `rows` and `cols` are the dimensions of the output matrix.\n    function embed(mat, rows, cols) {\n      let r = mat.rows;\n      let c = mat.columns;\n      if (r === rows && c === cols) {\n        return mat;\n      } else {\n        let resultat = AbstractMatrix.zeros(rows, cols);\n        resultat = resultat.setSubMatrix(mat, 0, 0);\n        return resultat;\n      }\n    }\n\n    // Make sure both matrices are the same size.\n    // This is exclusively for simplicity:\n    // this algorithm can be implemented with matrices of different sizes.\n\n    let r = Math.max(r1, r2);\n    let c = Math.max(c1, c2);\n    x = embed(x, r, c);\n    y = embed(y, r, c);\n\n    // Our recursive multiplication function.\n    function blockMult(a, b, rows, cols) {\n      // For small matrices, resort to naive multiplication.\n      if (rows <= 512 || cols <= 512) {\n        return a.mmul(b); // a is equivalent to this\n      }\n\n      // Apply dynamic padding.\n      if (rows % 2 === 1 && cols % 2 === 1) {\n        a = embed(a, rows + 1, cols + 1);\n        b = embed(b, rows + 1, cols + 1);\n      } else if (rows % 2 === 1) {\n        a = embed(a, rows + 1, cols);\n        b = embed(b, rows + 1, cols);\n      } else if (cols % 2 === 1) {\n        a = embed(a, rows, cols + 1);\n        b = embed(b, rows, cols + 1);\n      }\n\n      let halfRows = parseInt(a.rows / 2, 10);\n      let halfCols = parseInt(a.columns / 2, 10);\n      // Subdivide input matrices.\n      let a11 = a.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n      let b11 = b.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n\n      let a12 = a.subMatrix(0, halfRows - 1, halfCols, a.columns - 1);\n      let b12 = b.subMatrix(0, halfRows - 1, halfCols, b.columns - 1);\n\n      let a21 = a.subMatrix(halfRows, a.rows - 1, 0, halfCols - 1);\n      let b21 = b.subMatrix(halfRows, b.rows - 1, 0, halfCols - 1);\n\n      let a22 = a.subMatrix(halfRows, a.rows - 1, halfCols, a.columns - 1);\n      let b22 = b.subMatrix(halfRows, b.rows - 1, halfCols, b.columns - 1);\n\n      // Compute intermediate values.\n      let m1 = blockMult(\n        AbstractMatrix.add(a11, a22),\n        AbstractMatrix.add(b11, b22),\n        halfRows,\n        halfCols,\n      );\n      let m2 = blockMult(AbstractMatrix.add(a21, a22), b11, halfRows, halfCols);\n      let m3 = blockMult(a11, AbstractMatrix.sub(b12, b22), halfRows, halfCols);\n      let m4 = blockMult(a22, AbstractMatrix.sub(b21, b11), halfRows, halfCols);\n      let m5 = blockMult(AbstractMatrix.add(a11, a12), b22, halfRows, halfCols);\n      let m6 = blockMult(\n        AbstractMatrix.sub(a21, a11),\n        AbstractMatrix.add(b11, b12),\n        halfRows,\n        halfCols,\n      );\n      let m7 = blockMult(\n        AbstractMatrix.sub(a12, a22),\n        AbstractMatrix.add(b21, b22),\n        halfRows,\n        halfCols,\n      );\n\n      // Combine intermediate values into the output.\n      let c11 = AbstractMatrix.add(m1, m4);\n      c11.sub(m5);\n      c11.add(m7);\n      let c12 = AbstractMatrix.add(m3, m5);\n      let c21 = AbstractMatrix.add(m2, m4);\n      let c22 = AbstractMatrix.sub(m1, m2);\n      c22.add(m3);\n      c22.add(m6);\n\n      // Crop output to the desired size (undo dynamic padding).\n      let result = AbstractMatrix.zeros(2 * c11.rows, 2 * c11.columns);\n      result = result.setSubMatrix(c11, 0, 0);\n      result = result.setSubMatrix(c12, c11.rows, 0);\n      result = result.setSubMatrix(c21, 0, c11.columns);\n      result = result.setSubMatrix(c22, c11.rows, c11.columns);\n      return result.subMatrix(0, rows - 1, 0, cols - 1);\n    }\n\n    return blockMult(x, y, r, c);\n  }\n\n  scaleRows(options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { min = 0, max = 1 } = options;\n    if (!Number.isFinite(min)) throw new TypeError('min must be a number');\n    if (!Number.isFinite(max)) throw new TypeError('max must be a number');\n    if (min >= max) throw new RangeError('min must be smaller than max');\n    let newMatrix = new Matrix(this.rows, this.columns);\n    for (let i = 0; i < this.rows; i++) {\n      const row = this.getRow(i);\n      if (row.length > 0) {\n        rescale(row, { min, max, output: row });\n      }\n      newMatrix.setRow(i, row);\n    }\n    return newMatrix;\n  }\n\n  scaleColumns(options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { min = 0, max = 1 } = options;\n    if (!Number.isFinite(min)) throw new TypeError('min must be a number');\n    if (!Number.isFinite(max)) throw new TypeError('max must be a number');\n    if (min >= max) throw new RangeError('min must be smaller than max');\n    let newMatrix = new Matrix(this.rows, this.columns);\n    for (let i = 0; i < this.columns; i++) {\n      const column = this.getColumn(i);\n      if (column.length) {\n        rescale(column, {\n          min,\n          max,\n          output: column,\n        });\n      }\n      newMatrix.setColumn(i, column);\n    }\n    return newMatrix;\n  }\n\n  flipRows() {\n    const middle = Math.ceil(this.columns / 2);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < middle; j++) {\n        let first = this.get(i, j);\n        let last = this.get(i, this.columns - 1 - j);\n        this.set(i, j, last);\n        this.set(i, this.columns - 1 - j, first);\n      }\n    }\n    return this;\n  }\n\n  flipColumns() {\n    const middle = Math.ceil(this.rows / 2);\n    for (let j = 0; j < this.columns; j++) {\n      for (let i = 0; i < middle; i++) {\n        let first = this.get(i, j);\n        let last = this.get(this.rows - 1 - i, j);\n        this.set(i, j, last);\n        this.set(this.rows - 1 - i, j, first);\n      }\n    }\n    return this;\n  }\n\n  kroneckerProduct(other) {\n    other = Matrix.checkMatrix(other);\n\n    let m = this.rows;\n    let n = this.columns;\n    let p = other.rows;\n    let q = other.columns;\n\n    let result = new Matrix(m * p, n * q);\n    for (let i = 0; i < m; i++) {\n      for (let j = 0; j < n; j++) {\n        for (let k = 0; k < p; k++) {\n          for (let l = 0; l < q; l++) {\n            result.set(p * i + k, q * j + l, this.get(i, j) * other.get(k, l));\n          }\n        }\n      }\n    }\n    return result;\n  }\n\n  kroneckerSum(other) {\n    other = Matrix.checkMatrix(other);\n    if (!this.isSquare() || !other.isSquare()) {\n      throw new Error('Kronecker Sum needs two Square Matrices');\n    }\n    let m = this.rows;\n    let n = other.rows;\n    let AxI = this.kroneckerProduct(Matrix.eye(n, n));\n    let IxB = Matrix.eye(m, m).kroneckerProduct(other);\n    return AxI.add(IxB);\n  }\n\n  transpose() {\n    let result = new Matrix(this.columns, this.rows);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        result.set(j, i, this.get(i, j));\n      }\n    }\n    return result;\n  }\n\n  sortRows(compareFunction = compareNumbers) {\n    for (let i = 0; i < this.rows; i++) {\n      this.setRow(i, this.getRow(i).sort(compareFunction));\n    }\n    return this;\n  }\n\n  sortColumns(compareFunction = compareNumbers) {\n    for (let i = 0; i < this.columns; i++) {\n      this.setColumn(i, this.getColumn(i).sort(compareFunction));\n    }\n    return this;\n  }\n\n  subMatrix(startRow, endRow, startColumn, endColumn) {\n    checkRange(this, startRow, endRow, startColumn, endColumn);\n    let newMatrix = new Matrix(\n      endRow - startRow + 1,\n      endColumn - startColumn + 1,\n    );\n    for (let i = startRow; i <= endRow; i++) {\n      for (let j = startColumn; j <= endColumn; j++) {\n        newMatrix.set(i - startRow, j - startColumn, this.get(i, j));\n      }\n    }\n    return newMatrix;\n  }\n\n  subMatrixRow(indices, startColumn, endColumn) {\n    if (startColumn === undefined) startColumn = 0;\n    if (endColumn === undefined) endColumn = this.columns - 1;\n    if (\n      startColumn > endColumn ||\n      startColumn < 0 ||\n      startColumn >= this.columns ||\n      endColumn < 0 ||\n      endColumn >= this.columns\n    ) {\n      throw new RangeError('Argument out of range');\n    }\n\n    let newMatrix = new Matrix(indices.length, endColumn - startColumn + 1);\n    for (let i = 0; i < indices.length; i++) {\n      for (let j = startColumn; j <= endColumn; j++) {\n        if (indices[i] < 0 || indices[i] >= this.rows) {\n          throw new RangeError(`Row index out of range: ${indices[i]}`);\n        }\n        newMatrix.set(i, j - startColumn, this.get(indices[i], j));\n      }\n    }\n    return newMatrix;\n  }\n\n  subMatrixColumn(indices, startRow, endRow) {\n    if (startRow === undefined) startRow = 0;\n    if (endRow === undefined) endRow = this.rows - 1;\n    if (\n      startRow > endRow ||\n      startRow < 0 ||\n      startRow >= this.rows ||\n      endRow < 0 ||\n      endRow >= this.rows\n    ) {\n      throw new RangeError('Argument out of range');\n    }\n\n    let newMatrix = new Matrix(endRow - startRow + 1, indices.length);\n    for (let i = 0; i < indices.length; i++) {\n      for (let j = startRow; j <= endRow; j++) {\n        if (indices[i] < 0 || indices[i] >= this.columns) {\n          throw new RangeError(`Column index out of range: ${indices[i]}`);\n        }\n        newMatrix.set(j - startRow, i, this.get(j, indices[i]));\n      }\n    }\n    return newMatrix;\n  }\n\n  setSubMatrix(matrix, startRow, startColumn) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (matrix.isEmpty()) {\n      return this;\n    }\n    let endRow = startRow + matrix.rows - 1;\n    let endColumn = startColumn + matrix.columns - 1;\n    checkRange(this, startRow, endRow, startColumn, endColumn);\n    for (let i = 0; i < matrix.rows; i++) {\n      for (let j = 0; j < matrix.columns; j++) {\n        this.set(startRow + i, startColumn + j, matrix.get(i, j));\n      }\n    }\n    return this;\n  }\n\n  selection(rowIndices, columnIndices) {\n    checkRowIndices(this, rowIndices);\n    checkColumnIndices(this, columnIndices);\n    let newMatrix = new Matrix(rowIndices.length, columnIndices.length);\n    for (let i = 0; i < rowIndices.length; i++) {\n      let rowIndex = rowIndices[i];\n      for (let j = 0; j < columnIndices.length; j++) {\n        let columnIndex = columnIndices[j];\n        newMatrix.set(i, j, this.get(rowIndex, columnIndex));\n      }\n    }\n    return newMatrix;\n  }\n\n  trace() {\n    let min = Math.min(this.rows, this.columns);\n    let trace = 0;\n    for (let i = 0; i < min; i++) {\n      trace += this.get(i, i);\n    }\n    return trace;\n  }\n\n  clone() {\n    return this.constructor.copy(this, new Matrix(this.rows, this.columns));\n  }\n\n  /**\n   * @template {AbstractMatrix} M\n   * @param {AbstractMatrix} from\n   * @param {M} to\n   * @return {M}\n   */\n  static copy(from, to) {\n    for (const [row, column, value] of from.entries()) {\n      to.set(row, column, value);\n    }\n\n    return to;\n  }\n\n  sum(by) {\n    switch (by) {\n      case 'row':\n        return sumByRow(this);\n      case 'column':\n        return sumByColumn(this);\n      case undefined:\n        return sumAll(this);\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  product(by) {\n    switch (by) {\n      case 'row':\n        return productByRow(this);\n      case 'column':\n        return productByColumn(this);\n      case undefined:\n        return productAll(this);\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  mean(by) {\n    const sum = this.sum(by);\n    switch (by) {\n      case 'row': {\n        for (let i = 0; i < this.rows; i++) {\n          sum[i] /= this.columns;\n        }\n        return sum;\n      }\n      case 'column': {\n        for (let i = 0; i < this.columns; i++) {\n          sum[i] /= this.rows;\n        }\n        return sum;\n      }\n      case undefined:\n        return sum / this.size;\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  variance(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { unbiased = true, mean = this.mean(by) } = options;\n    if (typeof unbiased !== 'boolean') {\n      throw new TypeError('unbiased must be a boolean');\n    }\n    switch (by) {\n      case 'row': {\n        if (!isAnyArray.isAnyArray(mean)) {\n          throw new TypeError('mean must be an array');\n        }\n        return varianceByRow(this, unbiased, mean);\n      }\n      case 'column': {\n        if (!isAnyArray.isAnyArray(mean)) {\n          throw new TypeError('mean must be an array');\n        }\n        return varianceByColumn(this, unbiased, mean);\n      }\n      case undefined: {\n        if (typeof mean !== 'number') {\n          throw new TypeError('mean must be a number');\n        }\n        return varianceAll(this, unbiased, mean);\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  standardDeviation(by, options) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    const variance = this.variance(by, options);\n    if (by === undefined) {\n      return Math.sqrt(variance);\n    } else {\n      for (let i = 0; i < variance.length; i++) {\n        variance[i] = Math.sqrt(variance[i]);\n      }\n      return variance;\n    }\n  }\n\n  center(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { center = this.mean(by) } = options;\n    switch (by) {\n      case 'row': {\n        if (!isAnyArray.isAnyArray(center)) {\n          throw new TypeError('center must be an array');\n        }\n        centerByRow(this, center);\n        return this;\n      }\n      case 'column': {\n        if (!isAnyArray.isAnyArray(center)) {\n          throw new TypeError('center must be an array');\n        }\n        centerByColumn(this, center);\n        return this;\n      }\n      case undefined: {\n        if (typeof center !== 'number') {\n          throw new TypeError('center must be a number');\n        }\n        centerAll(this, center);\n        return this;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  scale(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    let scale = options.scale;\n    switch (by) {\n      case 'row': {\n        if (scale === undefined) {\n          scale = getScaleByRow(this);\n        } else if (!isAnyArray.isAnyArray(scale)) {\n          throw new TypeError('scale must be an array');\n        }\n        scaleByRow(this, scale);\n        return this;\n      }\n      case 'column': {\n        if (scale === undefined) {\n          scale = getScaleByColumn(this);\n        } else if (!isAnyArray.isAnyArray(scale)) {\n          throw new TypeError('scale must be an array');\n        }\n        scaleByColumn(this, scale);\n        return this;\n      }\n      case undefined: {\n        if (scale === undefined) {\n          scale = getScaleAll(this);\n        } else if (typeof scale !== 'number') {\n          throw new TypeError('scale must be a number');\n        }\n        scaleAll(this, scale);\n        return this;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  toString(options) {\n    return inspectMatrixWithOptions(this, options);\n  }\n\n  [Symbol.iterator]() {\n    return this.entries();\n  }\n\n  /**\n   * iterator from left to right, from top to bottom\n   * yield [row, column, value]\n   * @returns {Generator<[number, number, number], void, void>}\n   */\n  *entries() {\n    for (let row = 0; row < this.rows; row++) {\n      for (let col = 0; col < this.columns; col++) {\n        yield [row, col, this.get(row, col)];\n      }\n    }\n  }\n\n  /**\n   * iterator from left to right, from top to bottom\n   * yield value\n   * @returns {Generator<number, void, void>}\n   */\n  *values() {\n    for (let row = 0; row < this.rows; row++) {\n      for (let col = 0; col < this.columns; col++) {\n        yield this.get(row, col);\n      }\n    }\n  }\n}\n\nAbstractMatrix.prototype.klass = 'Matrix';\nif (typeof Symbol !== 'undefined') {\n  AbstractMatrix.prototype[Symbol.for('nodejs.util.inspect.custom')] =\n    inspectMatrix;\n}\n\nfunction compareNumbers(a, b) {\n  return a - b;\n}\n\nfunction isArrayOfNumbers(array) {\n  return array.every((element) => {\n    return typeof element === 'number';\n  });\n}\n\n// Synonyms\nAbstractMatrix.random = AbstractMatrix.rand;\nAbstractMatrix.randomInt = AbstractMatrix.randInt;\nAbstractMatrix.diagonal = AbstractMatrix.diag;\nAbstractMatrix.prototype.diagonal = AbstractMatrix.prototype.diag;\nAbstractMatrix.identity = AbstractMatrix.eye;\nAbstractMatrix.prototype.negate = AbstractMatrix.prototype.neg;\nAbstractMatrix.prototype.tensorProduct =\n  AbstractMatrix.prototype.kroneckerProduct;\n\nclass Matrix extends AbstractMatrix {\n  /**\n   * @type {Float64Array[]}\n   */\n  data;\n\n  /**\n   * Init an empty matrix\n   * @param {number} nRows\n   * @param {number} nColumns\n   */\n  #initData(nRows, nColumns) {\n    this.data = [];\n\n    if (Number.isInteger(nColumns) && nColumns >= 0) {\n      for (let i = 0; i < nRows; i++) {\n        this.data.push(new Float64Array(nColumns));\n      }\n    } else {\n      throw new TypeError('nColumns must be a positive integer');\n    }\n\n    this.rows = nRows;\n    this.columns = nColumns;\n  }\n\n  constructor(nRows, nColumns) {\n    super();\n    if (Matrix.isMatrix(nRows)) {\n      this.#initData(nRows.rows, nRows.columns);\n      Matrix.copy(nRows, this);\n    } else if (Number.isInteger(nRows) && nRows >= 0) {\n      this.#initData(nRows, nColumns);\n    } else if (isAnyArray.isAnyArray(nRows)) {\n      // Copy the values from the 2D array\n      const arrayData = nRows;\n      nRows = arrayData.length;\n      nColumns = nRows ? arrayData[0].length : 0;\n      if (typeof nColumns !== 'number') {\n        throw new TypeError(\n          'Data must be a 2D array with at least one element',\n        );\n      }\n      this.data = [];\n\n      for (let i = 0; i < nRows; i++) {\n        if (arrayData[i].length !== nColumns) {\n          throw new RangeError('Inconsistent array dimensions');\n        }\n        if (!isArrayOfNumbers(arrayData[i])) {\n          throw new TypeError('Input data contains non-numeric values');\n        }\n        this.data.push(Float64Array.from(arrayData[i]));\n      }\n\n      this.rows = nRows;\n      this.columns = nColumns;\n    } else {\n      throw new TypeError(\n        'First argument must be a positive number or an array',\n      );\n    }\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.data[rowIndex][columnIndex] = value;\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.data[rowIndex][columnIndex];\n  }\n\n  removeRow(index) {\n    checkRowIndex(this, index);\n    this.data.splice(index, 1);\n    this.rows -= 1;\n    return this;\n  }\n\n  addRow(index, array) {\n    if (array === undefined) {\n      array = index;\n      index = this.rows;\n    }\n    checkRowIndex(this, index, true);\n    array = Float64Array.from(checkRowVector(this, array));\n    this.data.splice(index, 0, array);\n    this.rows += 1;\n    return this;\n  }\n\n  removeColumn(index) {\n    checkColumnIndex(this, index);\n    for (let i = 0; i < this.rows; i++) {\n      const newRow = new Float64Array(this.columns - 1);\n      for (let j = 0; j < index; j++) {\n        newRow[j] = this.data[i][j];\n      }\n      for (let j = index + 1; j < this.columns; j++) {\n        newRow[j - 1] = this.data[i][j];\n      }\n      this.data[i] = newRow;\n    }\n    this.columns -= 1;\n    return this;\n  }\n\n  addColumn(index, array) {\n    if (typeof array === 'undefined') {\n      array = index;\n      index = this.columns;\n    }\n    checkColumnIndex(this, index, true);\n    array = checkColumnVector(this, array);\n    for (let i = 0; i < this.rows; i++) {\n      const newRow = new Float64Array(this.columns + 1);\n      let j = 0;\n      for (; j < index; j++) {\n        newRow[j] = this.data[i][j];\n      }\n      newRow[j++] = array[i];\n      for (; j < this.columns + 1; j++) {\n        newRow[j] = this.data[i][j - 1];\n      }\n      this.data[i] = newRow;\n    }\n    this.columns += 1;\n    return this;\n  }\n}\n\ninstallMathOperations(AbstractMatrix, Matrix);\n\n/**\n * @typedef {0 | 1 | number | boolean} Mask\n */\n\nclass SymmetricMatrix extends AbstractMatrix {\n  /** @type {Matrix} */\n  #matrix;\n\n  get size() {\n    return this.#matrix.size;\n  }\n\n  get rows() {\n    return this.#matrix.rows;\n  }\n\n  get columns() {\n    return this.#matrix.columns;\n  }\n\n  get diagonalSize() {\n    return this.rows;\n  }\n\n  /**\n   * not the same as matrix.isSymmetric()\n   * Here is to check if it's instanceof SymmetricMatrix without bundling issues\n   *\n   * @param value\n   * @returns {boolean}\n   */\n  static isSymmetricMatrix(value) {\n    return Matrix.isMatrix(value) && value.klassType === 'SymmetricMatrix';\n  }\n\n  /**\n   * @param diagonalSize\n   * @return {SymmetricMatrix}\n   */\n  static zeros(diagonalSize) {\n    return new this(diagonalSize);\n  }\n\n  /**\n   * @param diagonalSize\n   * @return {SymmetricMatrix}\n   */\n  static ones(diagonalSize) {\n    return new this(diagonalSize).fill(1);\n  }\n\n  /**\n   * @param {number | AbstractMatrix | ArrayLike<ArrayLike<number>>} diagonalSize\n   * @return {this}\n   */\n  constructor(diagonalSize) {\n    super();\n\n    if (Matrix.isMatrix(diagonalSize)) {\n      if (!diagonalSize.isSymmetric()) {\n        throw new TypeError('not symmetric data');\n      }\n\n      this.#matrix = Matrix.copy(\n        diagonalSize,\n        new Matrix(diagonalSize.rows, diagonalSize.rows),\n      );\n    } else if (Number.isInteger(diagonalSize) && diagonalSize >= 0) {\n      this.#matrix = new Matrix(diagonalSize, diagonalSize);\n    } else {\n      this.#matrix = new Matrix(diagonalSize);\n\n      if (!this.isSymmetric()) {\n        throw new TypeError('not symmetric data');\n      }\n    }\n  }\n\n  clone() {\n    const matrix = new SymmetricMatrix(this.diagonalSize);\n\n    for (const [row, col, value] of this.upperRightEntries()) {\n      matrix.set(row, col, value);\n    }\n\n    return matrix;\n  }\n\n  toMatrix() {\n    return new Matrix(this);\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.#matrix.get(rowIndex, columnIndex);\n  }\n  set(rowIndex, columnIndex, value) {\n    // symmetric set\n    this.#matrix.set(rowIndex, columnIndex, value);\n    this.#matrix.set(columnIndex, rowIndex, value);\n\n    return this;\n  }\n\n  removeCross(index) {\n    // symmetric remove side\n    this.#matrix.removeRow(index);\n    this.#matrix.removeColumn(index);\n\n    return this;\n  }\n\n  addCross(index, array) {\n    if (array === undefined) {\n      array = index;\n      index = this.diagonalSize;\n    }\n\n    const row = array.slice();\n    row.splice(index, 1);\n\n    this.#matrix.addRow(index, row);\n    this.#matrix.addColumn(index, array);\n\n    return this;\n  }\n\n  /**\n   * @param {Mask[]} mask\n   */\n  applyMask(mask) {\n    if (mask.length !== this.diagonalSize) {\n      throw new RangeError('Mask size do not match with matrix size');\n    }\n\n    // prepare sides to remove from matrix from mask\n    /** @type {number[]} */\n    const sidesToRemove = [];\n    for (const [index, passthroughs] of mask.entries()) {\n      if (passthroughs) continue;\n      sidesToRemove.push(index);\n    }\n    // to remove from highest to lowest for no mutation shifting\n    sidesToRemove.reverse();\n\n    // remove sides\n    for (const sideIndex of sidesToRemove) {\n      this.removeCross(sideIndex);\n    }\n\n    return this;\n  }\n\n  /**\n   * Compact format upper-right corner of matrix\n   * iterate from left to right, from top to bottom.\n   *\n   * ```\n   *   A B C D\n   * A 1 2 3 4\n   * B 2 5 6 7\n   * C 3 6 8 9\n   * D 4 7 9 10\n   * ```\n   *\n   * will return compact 1D array `[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]`\n   *\n   * length is S(i=0, n=sideSize) => 10 for a 4 sideSized matrix\n   *\n   * @returns {number[]}\n   */\n  toCompact() {\n    const { diagonalSize } = this;\n\n    /** @type {number[]} */\n    const compact = new Array((diagonalSize * (diagonalSize + 1)) / 2);\n    for (let col = 0, row = 0, index = 0; index < compact.length; index++) {\n      compact[index] = this.get(row, col);\n\n      if (++col >= diagonalSize) col = ++row;\n    }\n\n    return compact;\n  }\n\n  /**\n   * @param {number[]} compact\n   * @return {SymmetricMatrix}\n   */\n  static fromCompact(compact) {\n    const compactSize = compact.length;\n    // compactSize = (sideSize * (sideSize + 1)) / 2\n    // https://mathsolver.microsoft.com/fr/solve-problem/y%20%3D%20%20x%20%60cdot%20%20%20%60frac%7B%20%20%60left(%20x%2B1%20%20%60right)%20%20%20%20%7D%7B%202%20%20%7D\n    // sideSize = (Sqrt(8 × compactSize + 1) - 1) / 2\n    const diagonalSize = (Math.sqrt(8 * compactSize + 1) - 1) / 2;\n\n    if (!Number.isInteger(diagonalSize)) {\n      throw new TypeError(\n        `This array is not a compact representation of a Symmetric Matrix, ${JSON.stringify(\n          compact,\n        )}`,\n      );\n    }\n\n    const matrix = new SymmetricMatrix(diagonalSize);\n    for (let col = 0, row = 0, index = 0; index < compactSize; index++) {\n      matrix.set(col, row, compact[index]);\n      if (++col >= diagonalSize) col = ++row;\n    }\n\n    return matrix;\n  }\n\n  /**\n   * half iterator upper-right-corner from left to right, from top to bottom\n   * yield [row, column, value]\n   *\n   * @returns {Generator<[number, number, number], void, void>}\n   */\n  *upperRightEntries() {\n    for (let row = 0, col = 0; row < this.diagonalSize; void 0) {\n      const value = this.get(row, col);\n\n      yield [row, col, value];\n\n      // at the end of row, move cursor to next row at diagonal position\n      if (++col >= this.diagonalSize) col = ++row;\n    }\n  }\n\n  /**\n   * half iterator upper-right-corner from left to right, from top to bottom\n   * yield value\n   *\n   * @returns {Generator<[number, number, number], void, void>}\n   */\n  *upperRightValues() {\n    for (let row = 0, col = 0; row < this.diagonalSize; void 0) {\n      const value = this.get(row, col);\n\n      yield value;\n\n      // at the end of row, move cursor to next row at diagonal position\n      if (++col >= this.diagonalSize) col = ++row;\n    }\n  }\n}\nSymmetricMatrix.prototype.klassType = 'SymmetricMatrix';\n\nclass DistanceMatrix extends SymmetricMatrix {\n  /**\n   * not the same as matrix.isSymmetric()\n   * Here is to check if it's instanceof SymmetricMatrix without bundling issues\n   *\n   * @param value\n   * @returns {boolean}\n   */\n  static isDistanceMatrix(value) {\n    return (\n      SymmetricMatrix.isSymmetricMatrix(value) &&\n      value.klassSubType === 'DistanceMatrix'\n    );\n  }\n\n  constructor(sideSize) {\n    super(sideSize);\n\n    if (!this.isDistance()) {\n      throw new TypeError('Provided arguments do no produce a distance matrix');\n    }\n  }\n\n  set(rowIndex, columnIndex, value) {\n    // distance matrix diagonal is 0\n    if (rowIndex === columnIndex) value = 0;\n\n    return super.set(rowIndex, columnIndex, value);\n  }\n\n  addCross(index, array) {\n    if (array === undefined) {\n      array = index;\n      index = this.diagonalSize;\n    }\n\n    // ensure distance\n    array = array.slice();\n    array[index] = 0;\n\n    return super.addCross(index, array);\n  }\n\n  toSymmetricMatrix() {\n    return new SymmetricMatrix(this);\n  }\n\n  clone() {\n    const matrix = new DistanceMatrix(this.diagonalSize);\n\n    for (const [row, col, value] of this.upperRightEntries()) {\n      if (row === col) continue;\n      matrix.set(row, col, value);\n    }\n\n    return matrix;\n  }\n\n  /**\n   * Compact format upper-right corner of matrix\n   * no diagonal (only zeros)\n   * iterable from left to right, from top to bottom.\n   *\n   * ```\n   *   A B C D\n   * A 0 1 2 3\n   * B 1 0 4 5\n   * C 2 4 0 6\n   * D 3 5 6 0\n   * ```\n   *\n   * will return compact 1D array `[1, 2, 3, 4, 5, 6]`\n   *\n   * length is S(i=0, n=sideSize-1) => 6 for a 4 side sized matrix\n   *\n   * @returns {number[]}\n   */\n  toCompact() {\n    const { diagonalSize } = this;\n    const compactLength = ((diagonalSize - 1) * diagonalSize) / 2;\n\n    /** @type {number[]} */\n    const compact = new Array(compactLength);\n    for (let col = 1, row = 0, index = 0; index < compact.length; index++) {\n      compact[index] = this.get(row, col);\n\n      if (++col >= diagonalSize) col = ++row + 1;\n    }\n\n    return compact;\n  }\n\n  /**\n   * @param {number[]} compact\n   */\n  static fromCompact(compact) {\n    const compactSize = compact.length;\n\n    if (compactSize === 0) {\n      return new this(0);\n    }\n\n    // compactSize in Natural integer range ]0;∞]\n    // compactSize = (sideSize * (sideSize - 1)) / 2\n    // sideSize = (Sqrt(8 × compactSize + 1) + 1) / 2\n    const diagonalSize = (Math.sqrt(8 * compactSize + 1) + 1) / 2;\n\n    if (!Number.isInteger(diagonalSize)) {\n      throw new TypeError(\n        `This array is not a compact representation of a DistanceMatrix, ${JSON.stringify(\n          compact,\n        )}`,\n      );\n    }\n\n    const matrix = new this(diagonalSize);\n    for (let col = 1, row = 0, index = 0; index < compactSize; index++) {\n      matrix.set(col, row, compact[index]);\n      if (++col >= diagonalSize) col = ++row + 1;\n    }\n\n    return matrix;\n  }\n}\nDistanceMatrix.prototype.klassSubType = 'DistanceMatrix';\n\nclass BaseView extends AbstractMatrix {\n  constructor(matrix, rows, columns) {\n    super();\n    this.matrix = matrix;\n    this.rows = rows;\n    this.columns = columns;\n  }\n}\n\nclass MatrixColumnView extends BaseView {\n  constructor(matrix, column) {\n    checkColumnIndex(matrix, column);\n    super(matrix, matrix.rows, 1);\n    this.column = column;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(rowIndex, this.column, value);\n    return this;\n  }\n\n  get(rowIndex) {\n    return this.matrix.get(rowIndex, this.column);\n  }\n}\n\nclass MatrixColumnSelectionView extends BaseView {\n  constructor(matrix, columnIndices) {\n    checkColumnIndices(matrix, columnIndices);\n    super(matrix, matrix.rows, columnIndices.length);\n    this.columnIndices = columnIndices;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(rowIndex, this.columnIndices[columnIndex], value);\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(rowIndex, this.columnIndices[columnIndex]);\n  }\n}\n\nclass MatrixFlipColumnView extends BaseView {\n  constructor(matrix) {\n    super(matrix, matrix.rows, matrix.columns);\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(rowIndex, this.columns - columnIndex - 1, value);\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(rowIndex, this.columns - columnIndex - 1);\n  }\n}\n\nclass MatrixFlipRowView extends BaseView {\n  constructor(matrix) {\n    super(matrix, matrix.rows, matrix.columns);\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(this.rows - rowIndex - 1, columnIndex, value);\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(this.rows - rowIndex - 1, columnIndex);\n  }\n}\n\nclass MatrixRowView extends BaseView {\n  constructor(matrix, row) {\n    checkRowIndex(matrix, row);\n    super(matrix, 1, matrix.columns);\n    this.row = row;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(this.row, columnIndex, value);\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(this.row, columnIndex);\n  }\n}\n\nclass MatrixRowSelectionView extends BaseView {\n  constructor(matrix, rowIndices) {\n    checkRowIndices(matrix, rowIndices);\n    super(matrix, rowIndices.length, matrix.columns);\n    this.rowIndices = rowIndices;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(this.rowIndices[rowIndex], columnIndex, value);\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(this.rowIndices[rowIndex], columnIndex);\n  }\n}\n\nclass MatrixSelectionView extends BaseView {\n  constructor(matrix, rowIndices, columnIndices) {\n    checkRowIndices(matrix, rowIndices);\n    checkColumnIndices(matrix, columnIndices);\n    super(matrix, rowIndices.length, columnIndices.length);\n    this.rowIndices = rowIndices;\n    this.columnIndices = columnIndices;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(\n      this.rowIndices[rowIndex],\n      this.columnIndices[columnIndex],\n      value,\n    );\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(\n      this.rowIndices[rowIndex],\n      this.columnIndices[columnIndex],\n    );\n  }\n}\n\nclass MatrixSubView extends BaseView {\n  constructor(matrix, startRow, endRow, startColumn, endColumn) {\n    checkRange(matrix, startRow, endRow, startColumn, endColumn);\n    super(matrix, endRow - startRow + 1, endColumn - startColumn + 1);\n    this.startRow = startRow;\n    this.startColumn = startColumn;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(\n      this.startRow + rowIndex,\n      this.startColumn + columnIndex,\n      value,\n    );\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(\n      this.startRow + rowIndex,\n      this.startColumn + columnIndex,\n    );\n  }\n}\n\nclass MatrixTransposeView extends BaseView {\n  constructor(matrix) {\n    super(matrix, matrix.columns, matrix.rows);\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(columnIndex, rowIndex, value);\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(columnIndex, rowIndex);\n  }\n}\n\nclass WrapperMatrix1D extends AbstractMatrix {\n  constructor(data, options = {}) {\n    const { rows = 1 } = options;\n\n    if (data.length % rows !== 0) {\n      throw new Error('the data length is not divisible by the number of rows');\n    }\n    super();\n    this.rows = rows;\n    this.columns = data.length / rows;\n    this.data = data;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    let index = this._calculateIndex(rowIndex, columnIndex);\n    this.data[index] = value;\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    let index = this._calculateIndex(rowIndex, columnIndex);\n    return this.data[index];\n  }\n\n  _calculateIndex(row, column) {\n    return row * this.columns + column;\n  }\n}\n\nclass WrapperMatrix2D extends AbstractMatrix {\n  constructor(data) {\n    super();\n    this.data = data;\n    this.rows = data.length;\n    this.columns = data[0].length;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.data[rowIndex][columnIndex] = value;\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.data[rowIndex][columnIndex];\n  }\n}\n\nfunction wrap(array, options) {\n  if (isAnyArray.isAnyArray(array)) {\n    if (array[0] && isAnyArray.isAnyArray(array[0])) {\n      return new WrapperMatrix2D(array);\n    } else {\n      return new WrapperMatrix1D(array, options);\n    }\n  } else {\n    throw new Error('the argument is not an array');\n  }\n}\n\nclass LuDecomposition {\n  constructor(matrix) {\n    matrix = WrapperMatrix2D.checkMatrix(matrix);\n\n    let lu = matrix.clone();\n    let rows = lu.rows;\n    let columns = lu.columns;\n    let pivotVector = new Float64Array(rows);\n    let pivotSign = 1;\n    let i, j, k, p, s, t, v;\n    let LUcolj, kmax;\n\n    for (i = 0; i < rows; i++) {\n      pivotVector[i] = i;\n    }\n\n    LUcolj = new Float64Array(rows);\n\n    for (j = 0; j < columns; j++) {\n      for (i = 0; i < rows; i++) {\n        LUcolj[i] = lu.get(i, j);\n      }\n\n      for (i = 0; i < rows; i++) {\n        kmax = Math.min(i, j);\n        s = 0;\n        for (k = 0; k < kmax; k++) {\n          s += lu.get(i, k) * LUcolj[k];\n        }\n        LUcolj[i] -= s;\n        lu.set(i, j, LUcolj[i]);\n      }\n\n      p = j;\n      for (i = j + 1; i < rows; i++) {\n        if (Math.abs(LUcolj[i]) > Math.abs(LUcolj[p])) {\n          p = i;\n        }\n      }\n\n      if (p !== j) {\n        for (k = 0; k < columns; k++) {\n          t = lu.get(p, k);\n          lu.set(p, k, lu.get(j, k));\n          lu.set(j, k, t);\n        }\n\n        v = pivotVector[p];\n        pivotVector[p] = pivotVector[j];\n        pivotVector[j] = v;\n\n        pivotSign = -pivotSign;\n      }\n\n      if (j < rows && lu.get(j, j) !== 0) {\n        for (i = j + 1; i < rows; i++) {\n          lu.set(i, j, lu.get(i, j) / lu.get(j, j));\n        }\n      }\n    }\n\n    this.LU = lu;\n    this.pivotVector = pivotVector;\n    this.pivotSign = pivotSign;\n  }\n\n  isSingular() {\n    let data = this.LU;\n    let col = data.columns;\n    for (let j = 0; j < col; j++) {\n      if (data.get(j, j) === 0) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  solve(value) {\n    value = Matrix.checkMatrix(value);\n\n    let lu = this.LU;\n    let rows = lu.rows;\n\n    if (rows !== value.rows) {\n      throw new Error('Invalid matrix dimensions');\n    }\n    if (this.isSingular()) {\n      throw new Error('LU matrix is singular');\n    }\n\n    let count = value.columns;\n    let X = value.subMatrixRow(this.pivotVector, 0, count - 1);\n    let columns = lu.columns;\n    let i, j, k;\n\n    for (k = 0; k < columns; k++) {\n      for (i = k + 1; i < columns; i++) {\n        for (j = 0; j < count; j++) {\n          X.set(i, j, X.get(i, j) - X.get(k, j) * lu.get(i, k));\n        }\n      }\n    }\n    for (k = columns - 1; k >= 0; k--) {\n      for (j = 0; j < count; j++) {\n        X.set(k, j, X.get(k, j) / lu.get(k, k));\n      }\n      for (i = 0; i < k; i++) {\n        for (j = 0; j < count; j++) {\n          X.set(i, j, X.get(i, j) - X.get(k, j) * lu.get(i, k));\n        }\n      }\n    }\n    return X;\n  }\n\n  get determinant() {\n    let data = this.LU;\n    if (!data.isSquare()) {\n      throw new Error('Matrix must be square');\n    }\n    let determinant = this.pivotSign;\n    let col = data.columns;\n    for (let j = 0; j < col; j++) {\n      determinant *= data.get(j, j);\n    }\n    return determinant;\n  }\n\n  get lowerTriangularMatrix() {\n    let data = this.LU;\n    let rows = data.rows;\n    let columns = data.columns;\n    let X = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        if (i > j) {\n          X.set(i, j, data.get(i, j));\n        } else if (i === j) {\n          X.set(i, j, 1);\n        } else {\n          X.set(i, j, 0);\n        }\n      }\n    }\n    return X;\n  }\n\n  get upperTriangularMatrix() {\n    let data = this.LU;\n    let rows = data.rows;\n    let columns = data.columns;\n    let X = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        if (i <= j) {\n          X.set(i, j, data.get(i, j));\n        } else {\n          X.set(i, j, 0);\n        }\n      }\n    }\n    return X;\n  }\n\n  get pivotPermutationVector() {\n    return Array.from(this.pivotVector);\n  }\n}\n\nfunction hypotenuse(a, b) {\n  let r = 0;\n  if (Math.abs(a) > Math.abs(b)) {\n    r = b / a;\n    return Math.abs(a) * Math.sqrt(1 + r * r);\n  }\n  if (b !== 0) {\n    r = a / b;\n    return Math.abs(b) * Math.sqrt(1 + r * r);\n  }\n  return 0;\n}\n\nclass QrDecomposition {\n  constructor(value) {\n    value = WrapperMatrix2D.checkMatrix(value);\n\n    let qr = value.clone();\n    let m = value.rows;\n    let n = value.columns;\n    let rdiag = new Float64Array(n);\n    let i, j, k, s;\n\n    for (k = 0; k < n; k++) {\n      let nrm = 0;\n      for (i = k; i < m; i++) {\n        nrm = hypotenuse(nrm, qr.get(i, k));\n      }\n      if (nrm !== 0) {\n        if (qr.get(k, k) < 0) {\n          nrm = -nrm;\n        }\n        for (i = k; i < m; i++) {\n          qr.set(i, k, qr.get(i, k) / nrm);\n        }\n        qr.set(k, k, qr.get(k, k) + 1);\n        for (j = k + 1; j < n; j++) {\n          s = 0;\n          for (i = k; i < m; i++) {\n            s += qr.get(i, k) * qr.get(i, j);\n          }\n          s = -s / qr.get(k, k);\n          for (i = k; i < m; i++) {\n            qr.set(i, j, qr.get(i, j) + s * qr.get(i, k));\n          }\n        }\n      }\n      rdiag[k] = -nrm;\n    }\n\n    this.QR = qr;\n    this.Rdiag = rdiag;\n  }\n\n  solve(value) {\n    value = Matrix.checkMatrix(value);\n\n    let qr = this.QR;\n    let m = qr.rows;\n\n    if (value.rows !== m) {\n      throw new Error('Matrix row dimensions must agree');\n    }\n    if (!this.isFullRank()) {\n      throw new Error('Matrix is rank deficient');\n    }\n\n    let count = value.columns;\n    let X = value.clone();\n    let n = qr.columns;\n    let i, j, k, s;\n\n    for (k = 0; k < n; k++) {\n      for (j = 0; j < count; j++) {\n        s = 0;\n        for (i = k; i < m; i++) {\n          s += qr.get(i, k) * X.get(i, j);\n        }\n        s = -s / qr.get(k, k);\n        for (i = k; i < m; i++) {\n          X.set(i, j, X.get(i, j) + s * qr.get(i, k));\n        }\n      }\n    }\n    for (k = n - 1; k >= 0; k--) {\n      for (j = 0; j < count; j++) {\n        X.set(k, j, X.get(k, j) / this.Rdiag[k]);\n      }\n      for (i = 0; i < k; i++) {\n        for (j = 0; j < count; j++) {\n          X.set(i, j, X.get(i, j) - X.get(k, j) * qr.get(i, k));\n        }\n      }\n    }\n\n    return X.subMatrix(0, n - 1, 0, count - 1);\n  }\n\n  isFullRank() {\n    let columns = this.QR.columns;\n    for (let i = 0; i < columns; i++) {\n      if (this.Rdiag[i] === 0) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  get upperTriangularMatrix() {\n    let qr = this.QR;\n    let n = qr.columns;\n    let X = new Matrix(n, n);\n    let i, j;\n    for (i = 0; i < n; i++) {\n      for (j = 0; j < n; j++) {\n        if (i < j) {\n          X.set(i, j, qr.get(i, j));\n        } else if (i === j) {\n          X.set(i, j, this.Rdiag[i]);\n        } else {\n          X.set(i, j, 0);\n        }\n      }\n    }\n    return X;\n  }\n\n  get orthogonalMatrix() {\n    let qr = this.QR;\n    let rows = qr.rows;\n    let columns = qr.columns;\n    let X = new Matrix(rows, columns);\n    let i, j, k, s;\n\n    for (k = columns - 1; k >= 0; k--) {\n      for (i = 0; i < rows; i++) {\n        X.set(i, k, 0);\n      }\n      X.set(k, k, 1);\n      for (j = k; j < columns; j++) {\n        if (qr.get(k, k) !== 0) {\n          s = 0;\n          for (i = k; i < rows; i++) {\n            s += qr.get(i, k) * X.get(i, j);\n          }\n\n          s = -s / qr.get(k, k);\n\n          for (i = k; i < rows; i++) {\n            X.set(i, j, X.get(i, j) + s * qr.get(i, k));\n          }\n        }\n      }\n    }\n    return X;\n  }\n}\n\nclass SingularValueDecomposition {\n  constructor(value, options = {}) {\n    value = WrapperMatrix2D.checkMatrix(value);\n\n    if (value.isEmpty()) {\n      throw new Error('Matrix must be non-empty');\n    }\n\n    let m = value.rows;\n    let n = value.columns;\n\n    const {\n      computeLeftSingularVectors = true,\n      computeRightSingularVectors = true,\n      autoTranspose = false,\n    } = options;\n\n    let wantu = Boolean(computeLeftSingularVectors);\n    let wantv = Boolean(computeRightSingularVectors);\n\n    let swapped = false;\n    let a;\n    if (m < n) {\n      if (!autoTranspose) {\n        a = value.clone();\n        // eslint-disable-next-line no-console\n        console.warn(\n          'Computing SVD on a matrix with more columns than rows. Consider enabling autoTranspose',\n        );\n      } else {\n        a = value.transpose();\n        m = a.rows;\n        n = a.columns;\n        swapped = true;\n        let aux = wantu;\n        wantu = wantv;\n        wantv = aux;\n      }\n    } else {\n      a = value.clone();\n    }\n\n    let nu = Math.min(m, n);\n    let ni = Math.min(m + 1, n);\n    let s = new Float64Array(ni);\n    let U = new Matrix(m, nu);\n    let V = new Matrix(n, n);\n\n    let e = new Float64Array(n);\n    let work = new Float64Array(m);\n\n    let si = new Float64Array(ni);\n    for (let i = 0; i < ni; i++) si[i] = i;\n\n    let nct = Math.min(m - 1, n);\n    let nrt = Math.max(0, Math.min(n - 2, m));\n    let mrc = Math.max(nct, nrt);\n\n    for (let k = 0; k < mrc; k++) {\n      if (k < nct) {\n        s[k] = 0;\n        for (let i = k; i < m; i++) {\n          s[k] = hypotenuse(s[k], a.get(i, k));\n        }\n        if (s[k] !== 0) {\n          if (a.get(k, k) < 0) {\n            s[k] = -s[k];\n          }\n          for (let i = k; i < m; i++) {\n            a.set(i, k, a.get(i, k) / s[k]);\n          }\n          a.set(k, k, a.get(k, k) + 1);\n        }\n        s[k] = -s[k];\n      }\n\n      for (let j = k + 1; j < n; j++) {\n        if (k < nct && s[k] !== 0) {\n          let t = 0;\n          for (let i = k; i < m; i++) {\n            t += a.get(i, k) * a.get(i, j);\n          }\n          t = -t / a.get(k, k);\n          for (let i = k; i < m; i++) {\n            a.set(i, j, a.get(i, j) + t * a.get(i, k));\n          }\n        }\n        e[j] = a.get(k, j);\n      }\n\n      if (wantu && k < nct) {\n        for (let i = k; i < m; i++) {\n          U.set(i, k, a.get(i, k));\n        }\n      }\n\n      if (k < nrt) {\n        e[k] = 0;\n        for (let i = k + 1; i < n; i++) {\n          e[k] = hypotenuse(e[k], e[i]);\n        }\n        if (e[k] !== 0) {\n          if (e[k + 1] < 0) {\n            e[k] = 0 - e[k];\n          }\n          for (let i = k + 1; i < n; i++) {\n            e[i] /= e[k];\n          }\n          e[k + 1] += 1;\n        }\n        e[k] = -e[k];\n        if (k + 1 < m && e[k] !== 0) {\n          for (let i = k + 1; i < m; i++) {\n            work[i] = 0;\n          }\n          for (let i = k + 1; i < m; i++) {\n            for (let j = k + 1; j < n; j++) {\n              work[i] += e[j] * a.get(i, j);\n            }\n          }\n          for (let j = k + 1; j < n; j++) {\n            let t = -e[j] / e[k + 1];\n            for (let i = k + 1; i < m; i++) {\n              a.set(i, j, a.get(i, j) + t * work[i]);\n            }\n          }\n        }\n        if (wantv) {\n          for (let i = k + 1; i < n; i++) {\n            V.set(i, k, e[i]);\n          }\n        }\n      }\n    }\n\n    let p = Math.min(n, m + 1);\n    if (nct < n) {\n      s[nct] = a.get(nct, nct);\n    }\n    if (m < p) {\n      s[p - 1] = 0;\n    }\n    if (nrt + 1 < p) {\n      e[nrt] = a.get(nrt, p - 1);\n    }\n    e[p - 1] = 0;\n\n    if (wantu) {\n      for (let j = nct; j < nu; j++) {\n        for (let i = 0; i < m; i++) {\n          U.set(i, j, 0);\n        }\n        U.set(j, j, 1);\n      }\n      for (let k = nct - 1; k >= 0; k--) {\n        if (s[k] !== 0) {\n          for (let j = k + 1; j < nu; j++) {\n            let t = 0;\n            for (let i = k; i < m; i++) {\n              t += U.get(i, k) * U.get(i, j);\n            }\n            t = -t / U.get(k, k);\n            for (let i = k; i < m; i++) {\n              U.set(i, j, U.get(i, j) + t * U.get(i, k));\n            }\n          }\n          for (let i = k; i < m; i++) {\n            U.set(i, k, -U.get(i, k));\n          }\n          U.set(k, k, 1 + U.get(k, k));\n          for (let i = 0; i < k - 1; i++) {\n            U.set(i, k, 0);\n          }\n        } else {\n          for (let i = 0; i < m; i++) {\n            U.set(i, k, 0);\n          }\n          U.set(k, k, 1);\n        }\n      }\n    }\n\n    if (wantv) {\n      for (let k = n - 1; k >= 0; k--) {\n        if (k < nrt && e[k] !== 0) {\n          for (let j = k + 1; j < n; j++) {\n            let t = 0;\n            for (let i = k + 1; i < n; i++) {\n              t += V.get(i, k) * V.get(i, j);\n            }\n            t = -t / V.get(k + 1, k);\n            for (let i = k + 1; i < n; i++) {\n              V.set(i, j, V.get(i, j) + t * V.get(i, k));\n            }\n          }\n        }\n        for (let i = 0; i < n; i++) {\n          V.set(i, k, 0);\n        }\n        V.set(k, k, 1);\n      }\n    }\n\n    let pp = p - 1;\n    let eps = Number.EPSILON;\n    while (p > 0) {\n      let k, kase;\n      for (k = p - 2; k >= -1; k--) {\n        if (k === -1) {\n          break;\n        }\n        const alpha =\n          Number.MIN_VALUE + eps * Math.abs(s[k] + Math.abs(s[k + 1]));\n        if (Math.abs(e[k]) <= alpha || Number.isNaN(e[k])) {\n          e[k] = 0;\n          break;\n        }\n      }\n      if (k === p - 2) {\n        kase = 4;\n      } else {\n        let ks;\n        for (ks = p - 1; ks >= k; ks--) {\n          if (ks === k) {\n            break;\n          }\n          let t =\n            (ks !== p ? Math.abs(e[ks]) : 0) +\n            (ks !== k + 1 ? Math.abs(e[ks - 1]) : 0);\n          if (Math.abs(s[ks]) <= eps * t) {\n            s[ks] = 0;\n            break;\n          }\n        }\n        if (ks === k) {\n          kase = 3;\n        } else if (ks === p - 1) {\n          kase = 1;\n        } else {\n          kase = 2;\n          k = ks;\n        }\n      }\n\n      k++;\n\n      switch (kase) {\n        case 1: {\n          let f = e[p - 2];\n          e[p - 2] = 0;\n          for (let j = p - 2; j >= k; j--) {\n            let t = hypotenuse(s[j], f);\n            let cs = s[j] / t;\n            let sn = f / t;\n            s[j] = t;\n            if (j !== k) {\n              f = -sn * e[j - 1];\n              e[j - 1] = cs * e[j - 1];\n            }\n            if (wantv) {\n              for (let i = 0; i < n; i++) {\n                t = cs * V.get(i, j) + sn * V.get(i, p - 1);\n                V.set(i, p - 1, -sn * V.get(i, j) + cs * V.get(i, p - 1));\n                V.set(i, j, t);\n              }\n            }\n          }\n          break;\n        }\n        case 2: {\n          let f = e[k - 1];\n          e[k - 1] = 0;\n          for (let j = k; j < p; j++) {\n            let t = hypotenuse(s[j], f);\n            let cs = s[j] / t;\n            let sn = f / t;\n            s[j] = t;\n            f = -sn * e[j];\n            e[j] = cs * e[j];\n            if (wantu) {\n              for (let i = 0; i < m; i++) {\n                t = cs * U.get(i, j) + sn * U.get(i, k - 1);\n                U.set(i, k - 1, -sn * U.get(i, j) + cs * U.get(i, k - 1));\n                U.set(i, j, t);\n              }\n            }\n          }\n          break;\n        }\n        case 3: {\n          const scale = Math.max(\n            Math.abs(s[p - 1]),\n            Math.abs(s[p - 2]),\n            Math.abs(e[p - 2]),\n            Math.abs(s[k]),\n            Math.abs(e[k]),\n          );\n          const sp = s[p - 1] / scale;\n          const spm1 = s[p - 2] / scale;\n          const epm1 = e[p - 2] / scale;\n          const sk = s[k] / scale;\n          const ek = e[k] / scale;\n          const b = ((spm1 + sp) * (spm1 - sp) + epm1 * epm1) / 2;\n          const c = sp * epm1 * (sp * epm1);\n          let shift = 0;\n          if (b !== 0 || c !== 0) {\n            if (b < 0) {\n              shift = 0 - Math.sqrt(b * b + c);\n            } else {\n              shift = Math.sqrt(b * b + c);\n            }\n            shift = c / (b + shift);\n          }\n          let f = (sk + sp) * (sk - sp) + shift;\n          let g = sk * ek;\n          for (let j = k; j < p - 1; j++) {\n            let t = hypotenuse(f, g);\n            if (t === 0) t = Number.MIN_VALUE;\n            let cs = f / t;\n            let sn = g / t;\n            if (j !== k) {\n              e[j - 1] = t;\n            }\n            f = cs * s[j] + sn * e[j];\n            e[j] = cs * e[j] - sn * s[j];\n            g = sn * s[j + 1];\n            s[j + 1] = cs * s[j + 1];\n            if (wantv) {\n              for (let i = 0; i < n; i++) {\n                t = cs * V.get(i, j) + sn * V.get(i, j + 1);\n                V.set(i, j + 1, -sn * V.get(i, j) + cs * V.get(i, j + 1));\n                V.set(i, j, t);\n              }\n            }\n            t = hypotenuse(f, g);\n            if (t === 0) t = Number.MIN_VALUE;\n            cs = f / t;\n            sn = g / t;\n            s[j] = t;\n            f = cs * e[j] + sn * s[j + 1];\n            s[j + 1] = -sn * e[j] + cs * s[j + 1];\n            g = sn * e[j + 1];\n            e[j + 1] = cs * e[j + 1];\n            if (wantu && j < m - 1) {\n              for (let i = 0; i < m; i++) {\n                t = cs * U.get(i, j) + sn * U.get(i, j + 1);\n                U.set(i, j + 1, -sn * U.get(i, j) + cs * U.get(i, j + 1));\n                U.set(i, j, t);\n              }\n            }\n          }\n          e[p - 2] = f;\n          break;\n        }\n        case 4: {\n          if (s[k] <= 0) {\n            s[k] = s[k] < 0 ? -s[k] : 0;\n            if (wantv) {\n              for (let i = 0; i <= pp; i++) {\n                V.set(i, k, -V.get(i, k));\n              }\n            }\n          }\n          while (k < pp) {\n            if (s[k] >= s[k + 1]) {\n              break;\n            }\n            let t = s[k];\n            s[k] = s[k + 1];\n            s[k + 1] = t;\n            if (wantv && k < n - 1) {\n              for (let i = 0; i < n; i++) {\n                t = V.get(i, k + 1);\n                V.set(i, k + 1, V.get(i, k));\n                V.set(i, k, t);\n              }\n            }\n            if (wantu && k < m - 1) {\n              for (let i = 0; i < m; i++) {\n                t = U.get(i, k + 1);\n                U.set(i, k + 1, U.get(i, k));\n                U.set(i, k, t);\n              }\n            }\n            k++;\n          }\n          p--;\n          break;\n        }\n        // no default\n      }\n    }\n\n    if (swapped) {\n      let tmp = V;\n      V = U;\n      U = tmp;\n    }\n\n    this.m = m;\n    this.n = n;\n    this.s = s;\n    this.U = U;\n    this.V = V;\n  }\n\n  solve(value) {\n    let Y = value;\n    let e = this.threshold;\n    let scols = this.s.length;\n    let Ls = Matrix.zeros(scols, scols);\n\n    for (let i = 0; i < scols; i++) {\n      if (Math.abs(this.s[i]) <= e) {\n        Ls.set(i, i, 0);\n      } else {\n        Ls.set(i, i, 1 / this.s[i]);\n      }\n    }\n\n    let U = this.U;\n    let V = this.rightSingularVectors;\n\n    let VL = V.mmul(Ls);\n    let vrows = V.rows;\n    let urows = U.rows;\n    let VLU = Matrix.zeros(vrows, urows);\n\n    for (let i = 0; i < vrows; i++) {\n      for (let j = 0; j < urows; j++) {\n        let sum = 0;\n        for (let k = 0; k < scols; k++) {\n          sum += VL.get(i, k) * U.get(j, k);\n        }\n        VLU.set(i, j, sum);\n      }\n    }\n\n    return VLU.mmul(Y);\n  }\n\n  solveForDiagonal(value) {\n    return this.solve(Matrix.diag(value));\n  }\n\n  inverse() {\n    let V = this.V;\n    let e = this.threshold;\n    let vrows = V.rows;\n    let vcols = V.columns;\n    let X = new Matrix(vrows, this.s.length);\n\n    for (let i = 0; i < vrows; i++) {\n      for (let j = 0; j < vcols; j++) {\n        if (Math.abs(this.s[j]) > e) {\n          X.set(i, j, V.get(i, j) / this.s[j]);\n        }\n      }\n    }\n\n    let U = this.U;\n\n    let urows = U.rows;\n    let ucols = U.columns;\n    let Y = new Matrix(vrows, urows);\n\n    for (let i = 0; i < vrows; i++) {\n      for (let j = 0; j < urows; j++) {\n        let sum = 0;\n        for (let k = 0; k < ucols; k++) {\n          sum += X.get(i, k) * U.get(j, k);\n        }\n        Y.set(i, j, sum);\n      }\n    }\n\n    return Y;\n  }\n\n  get condition() {\n    return this.s[0] / this.s[Math.min(this.m, this.n) - 1];\n  }\n\n  get norm2() {\n    return this.s[0];\n  }\n\n  get rank() {\n    let tol = Math.max(this.m, this.n) * this.s[0] * Number.EPSILON;\n    let r = 0;\n    let s = this.s;\n    for (let i = 0, ii = s.length; i < ii; i++) {\n      if (s[i] > tol) {\n        r++;\n      }\n    }\n    return r;\n  }\n\n  get diagonal() {\n    return Array.from(this.s);\n  }\n\n  get threshold() {\n    return (Number.EPSILON / 2) * Math.max(this.m, this.n) * this.s[0];\n  }\n\n  get leftSingularVectors() {\n    return this.U;\n  }\n\n  get rightSingularVectors() {\n    return this.V;\n  }\n\n  get diagonalMatrix() {\n    return Matrix.diag(this.s);\n  }\n}\n\nfunction inverse(matrix, useSVD = false) {\n  matrix = WrapperMatrix2D.checkMatrix(matrix);\n  if (useSVD) {\n    return new SingularValueDecomposition(matrix).inverse();\n  } else {\n    return solve(matrix, Matrix.eye(matrix.rows));\n  }\n}\n\nfunction solve(leftHandSide, rightHandSide, useSVD = false) {\n  leftHandSide = WrapperMatrix2D.checkMatrix(leftHandSide);\n  rightHandSide = WrapperMatrix2D.checkMatrix(rightHandSide);\n  if (useSVD) {\n    return new SingularValueDecomposition(leftHandSide).solve(rightHandSide);\n  } else {\n    return leftHandSide.isSquare()\n      ? new LuDecomposition(leftHandSide).solve(rightHandSide)\n      : new QrDecomposition(leftHandSide).solve(rightHandSide);\n  }\n}\n\nfunction determinant(matrix) {\n  matrix = Matrix.checkMatrix(matrix);\n  if (matrix.isSquare()) {\n    if (matrix.columns === 0) {\n      return 1;\n    }\n\n    let a, b, c, d;\n    if (matrix.columns === 2) {\n      // 2 x 2 matrix\n      a = matrix.get(0, 0);\n      b = matrix.get(0, 1);\n      c = matrix.get(1, 0);\n      d = matrix.get(1, 1);\n\n      return a * d - b * c;\n    } else if (matrix.columns === 3) {\n      // 3 x 3 matrix\n      let subMatrix0, subMatrix1, subMatrix2;\n      subMatrix0 = new MatrixSelectionView(matrix, [1, 2], [1, 2]);\n      subMatrix1 = new MatrixSelectionView(matrix, [1, 2], [0, 2]);\n      subMatrix2 = new MatrixSelectionView(matrix, [1, 2], [0, 1]);\n      a = matrix.get(0, 0);\n      b = matrix.get(0, 1);\n      c = matrix.get(0, 2);\n\n      return (\n        a * determinant(subMatrix0) -\n        b * determinant(subMatrix1) +\n        c * determinant(subMatrix2)\n      );\n    } else {\n      // general purpose determinant using the LU decomposition\n      return new LuDecomposition(matrix).determinant;\n    }\n  } else {\n    throw Error('determinant can only be calculated for a square matrix');\n  }\n}\n\nfunction xrange(n, exception) {\n  let range = [];\n  for (let i = 0; i < n; i++) {\n    if (i !== exception) {\n      range.push(i);\n    }\n  }\n  return range;\n}\n\nfunction dependenciesOneRow(\n  error,\n  matrix,\n  index,\n  thresholdValue = 10e-10,\n  thresholdError = 10e-10,\n) {\n  if (error > thresholdError) {\n    return new Array(matrix.rows + 1).fill(0);\n  } else {\n    let returnArray = matrix.addRow(index, [0]);\n    for (let i = 0; i < returnArray.rows; i++) {\n      if (Math.abs(returnArray.get(i, 0)) < thresholdValue) {\n        returnArray.set(i, 0, 0);\n      }\n    }\n    return returnArray.to1DArray();\n  }\n}\n\nfunction linearDependencies(matrix, options = {}) {\n  const { thresholdValue = 10e-10, thresholdError = 10e-10 } = options;\n  matrix = Matrix.checkMatrix(matrix);\n\n  let n = matrix.rows;\n  let results = new Matrix(n, n);\n\n  for (let i = 0; i < n; i++) {\n    let b = Matrix.columnVector(matrix.getRow(i));\n    let Abis = matrix.subMatrixRow(xrange(n, i)).transpose();\n    let svd = new SingularValueDecomposition(Abis);\n    let x = svd.solve(b);\n    let error = Matrix.sub(b, Abis.mmul(x)).abs().max();\n    results.setRow(\n      i,\n      dependenciesOneRow(error, x, i, thresholdValue, thresholdError),\n    );\n  }\n  return results;\n}\n\nfunction pseudoInverse(matrix, threshold = Number.EPSILON) {\n  matrix = Matrix.checkMatrix(matrix);\n  if (matrix.isEmpty()) {\n    // with a zero dimension, the pseudo-inverse is the transpose, since all 0xn and nx0 matrices are singular\n    // (0xn)*(nx0)*(0xn) = 0xn\n    // (nx0)*(0xn)*(nx0) = nx0\n    return matrix.transpose();\n  }\n  let svdSolution = new SingularValueDecomposition(matrix, { autoTranspose: true });\n\n  let U = svdSolution.leftSingularVectors;\n  let V = svdSolution.rightSingularVectors;\n  let s = svdSolution.diagonal;\n\n  for (let i = 0; i < s.length; i++) {\n    if (Math.abs(s[i]) > threshold) {\n      s[i] = 1.0 / s[i];\n    } else {\n      s[i] = 0.0;\n    }\n  }\n\n  return V.mmul(Matrix.diag(s).mmul(U.transpose()));\n}\n\nfunction covariance(xMatrix, yMatrix = xMatrix, options = {}) {\n  xMatrix = new Matrix(xMatrix);\n  let yIsSame = false;\n  if (\n    typeof yMatrix === 'object' &&\n    !Matrix.isMatrix(yMatrix) &&\n    !isAnyArray.isAnyArray(yMatrix)\n  ) {\n    options = yMatrix;\n    yMatrix = xMatrix;\n    yIsSame = true;\n  } else {\n    yMatrix = new Matrix(yMatrix);\n  }\n  if (xMatrix.rows !== yMatrix.rows) {\n    throw new TypeError('Both matrices must have the same number of rows');\n  }\n  const { center = true } = options;\n  if (center) {\n    xMatrix = xMatrix.center('column');\n    if (!yIsSame) {\n      yMatrix = yMatrix.center('column');\n    }\n  }\n  const cov = xMatrix.transpose().mmul(yMatrix);\n  for (let i = 0; i < cov.rows; i++) {\n    for (let j = 0; j < cov.columns; j++) {\n      cov.set(i, j, cov.get(i, j) * (1 / (xMatrix.rows - 1)));\n    }\n  }\n  return cov;\n}\n\nfunction correlation(xMatrix, yMatrix = xMatrix, options = {}) {\n  xMatrix = new Matrix(xMatrix);\n  let yIsSame = false;\n  if (\n    typeof yMatrix === 'object' &&\n    !Matrix.isMatrix(yMatrix) &&\n    !isAnyArray.isAnyArray(yMatrix)\n  ) {\n    options = yMatrix;\n    yMatrix = xMatrix;\n    yIsSame = true;\n  } else {\n    yMatrix = new Matrix(yMatrix);\n  }\n  if (xMatrix.rows !== yMatrix.rows) {\n    throw new TypeError('Both matrices must have the same number of rows');\n  }\n\n  const { center = true, scale = true } = options;\n  if (center) {\n    xMatrix.center('column');\n    if (!yIsSame) {\n      yMatrix.center('column');\n    }\n  }\n  if (scale) {\n    xMatrix.scale('column');\n    if (!yIsSame) {\n      yMatrix.scale('column');\n    }\n  }\n\n  const sdx = xMatrix.standardDeviation('column', { unbiased: true });\n  const sdy = yIsSame\n    ? sdx\n    : yMatrix.standardDeviation('column', { unbiased: true });\n\n  const corr = xMatrix.transpose().mmul(yMatrix);\n  for (let i = 0; i < corr.rows; i++) {\n    for (let j = 0; j < corr.columns; j++) {\n      corr.set(\n        i,\n        j,\n        corr.get(i, j) * (1 / (sdx[i] * sdy[j])) * (1 / (xMatrix.rows - 1)),\n      );\n    }\n  }\n  return corr;\n}\n\nclass EigenvalueDecomposition {\n  constructor(matrix, options = {}) {\n    const { assumeSymmetric = false } = options;\n\n    matrix = WrapperMatrix2D.checkMatrix(matrix);\n    if (!matrix.isSquare()) {\n      throw new Error('Matrix is not a square matrix');\n    }\n\n    if (matrix.isEmpty()) {\n      throw new Error('Matrix must be non-empty');\n    }\n\n    let n = matrix.columns;\n    let V = new Matrix(n, n);\n    let d = new Float64Array(n);\n    let e = new Float64Array(n);\n    let value = matrix;\n    let i, j;\n\n    let isSymmetric = false;\n    if (assumeSymmetric) {\n      isSymmetric = true;\n    } else {\n      isSymmetric = matrix.isSymmetric();\n    }\n\n    if (isSymmetric) {\n      for (i = 0; i < n; i++) {\n        for (j = 0; j < n; j++) {\n          V.set(i, j, value.get(i, j));\n        }\n      }\n      tred2(n, e, d, V);\n      tql2(n, e, d, V);\n    } else {\n      let H = new Matrix(n, n);\n      let ort = new Float64Array(n);\n      for (j = 0; j < n; j++) {\n        for (i = 0; i < n; i++) {\n          H.set(i, j, value.get(i, j));\n        }\n      }\n      orthes(n, H, ort, V);\n      hqr2(n, e, d, V, H);\n    }\n\n    this.n = n;\n    this.e = e;\n    this.d = d;\n    this.V = V;\n  }\n\n  get realEigenvalues() {\n    return Array.from(this.d);\n  }\n\n  get imaginaryEigenvalues() {\n    return Array.from(this.e);\n  }\n\n  get eigenvectorMatrix() {\n    return this.V;\n  }\n\n  get diagonalMatrix() {\n    let n = this.n;\n    let e = this.e;\n    let d = this.d;\n    let X = new Matrix(n, n);\n    let i, j;\n    for (i = 0; i < n; i++) {\n      for (j = 0; j < n; j++) {\n        X.set(i, j, 0);\n      }\n      X.set(i, i, d[i]);\n      if (e[i] > 0) {\n        X.set(i, i + 1, e[i]);\n      } else if (e[i] < 0) {\n        X.set(i, i - 1, e[i]);\n      }\n    }\n    return X;\n  }\n}\n\nfunction tred2(n, e, d, V) {\n  let f, g, h, i, j, k, hh, scale;\n\n  for (j = 0; j < n; j++) {\n    d[j] = V.get(n - 1, j);\n  }\n\n  for (i = n - 1; i > 0; i--) {\n    scale = 0;\n    h = 0;\n    for (k = 0; k < i; k++) {\n      scale = scale + Math.abs(d[k]);\n    }\n\n    if (scale === 0) {\n      e[i] = d[i - 1];\n      for (j = 0; j < i; j++) {\n        d[j] = V.get(i - 1, j);\n        V.set(i, j, 0);\n        V.set(j, i, 0);\n      }\n    } else {\n      for (k = 0; k < i; k++) {\n        d[k] /= scale;\n        h += d[k] * d[k];\n      }\n\n      f = d[i - 1];\n      g = Math.sqrt(h);\n      if (f > 0) {\n        g = -g;\n      }\n\n      e[i] = scale * g;\n      h = h - f * g;\n      d[i - 1] = f - g;\n      for (j = 0; j < i; j++) {\n        e[j] = 0;\n      }\n\n      for (j = 0; j < i; j++) {\n        f = d[j];\n        V.set(j, i, f);\n        g = e[j] + V.get(j, j) * f;\n        for (k = j + 1; k <= i - 1; k++) {\n          g += V.get(k, j) * d[k];\n          e[k] += V.get(k, j) * f;\n        }\n        e[j] = g;\n      }\n\n      f = 0;\n      for (j = 0; j < i; j++) {\n        e[j] /= h;\n        f += e[j] * d[j];\n      }\n\n      hh = f / (h + h);\n      for (j = 0; j < i; j++) {\n        e[j] -= hh * d[j];\n      }\n\n      for (j = 0; j < i; j++) {\n        f = d[j];\n        g = e[j];\n        for (k = j; k <= i - 1; k++) {\n          V.set(k, j, V.get(k, j) - (f * e[k] + g * d[k]));\n        }\n        d[j] = V.get(i - 1, j);\n        V.set(i, j, 0);\n      }\n    }\n    d[i] = h;\n  }\n\n  for (i = 0; i < n - 1; i++) {\n    V.set(n - 1, i, V.get(i, i));\n    V.set(i, i, 1);\n    h = d[i + 1];\n    if (h !== 0) {\n      for (k = 0; k <= i; k++) {\n        d[k] = V.get(k, i + 1) / h;\n      }\n\n      for (j = 0; j <= i; j++) {\n        g = 0;\n        for (k = 0; k <= i; k++) {\n          g += V.get(k, i + 1) * V.get(k, j);\n        }\n        for (k = 0; k <= i; k++) {\n          V.set(k, j, V.get(k, j) - g * d[k]);\n        }\n      }\n    }\n\n    for (k = 0; k <= i; k++) {\n      V.set(k, i + 1, 0);\n    }\n  }\n\n  for (j = 0; j < n; j++) {\n    d[j] = V.get(n - 1, j);\n    V.set(n - 1, j, 0);\n  }\n\n  V.set(n - 1, n - 1, 1);\n  e[0] = 0;\n}\n\nfunction tql2(n, e, d, V) {\n  let g, h, i, j, k, l, m, p, r, dl1, c, c2, c3, el1, s, s2;\n\n  for (i = 1; i < n; i++) {\n    e[i - 1] = e[i];\n  }\n\n  e[n - 1] = 0;\n\n  let f = 0;\n  let tst1 = 0;\n  let eps = Number.EPSILON;\n\n  for (l = 0; l < n; l++) {\n    tst1 = Math.max(tst1, Math.abs(d[l]) + Math.abs(e[l]));\n    m = l;\n    while (m < n) {\n      if (Math.abs(e[m]) <= eps * tst1) {\n        break;\n      }\n      m++;\n    }\n\n    if (m > l) {\n      do {\n\n        g = d[l];\n        p = (d[l + 1] - g) / (2 * e[l]);\n        r = hypotenuse(p, 1);\n        if (p < 0) {\n          r = -r;\n        }\n\n        d[l] = e[l] / (p + r);\n        d[l + 1] = e[l] * (p + r);\n        dl1 = d[l + 1];\n        h = g - d[l];\n        for (i = l + 2; i < n; i++) {\n          d[i] -= h;\n        }\n\n        f = f + h;\n\n        p = d[m];\n        c = 1;\n        c2 = c;\n        c3 = c;\n        el1 = e[l + 1];\n        s = 0;\n        s2 = 0;\n        for (i = m - 1; i >= l; i--) {\n          c3 = c2;\n          c2 = c;\n          s2 = s;\n          g = c * e[i];\n          h = c * p;\n          r = hypotenuse(p, e[i]);\n          e[i + 1] = s * r;\n          s = e[i] / r;\n          c = p / r;\n          p = c * d[i] - s * g;\n          d[i + 1] = h + s * (c * g + s * d[i]);\n\n          for (k = 0; k < n; k++) {\n            h = V.get(k, i + 1);\n            V.set(k, i + 1, s * V.get(k, i) + c * h);\n            V.set(k, i, c * V.get(k, i) - s * h);\n          }\n        }\n\n        p = (-s * s2 * c3 * el1 * e[l]) / dl1;\n        e[l] = s * p;\n        d[l] = c * p;\n      } while (Math.abs(e[l]) > eps * tst1);\n    }\n    d[l] = d[l] + f;\n    e[l] = 0;\n  }\n\n  for (i = 0; i < n - 1; i++) {\n    k = i;\n    p = d[i];\n    for (j = i + 1; j < n; j++) {\n      if (d[j] < p) {\n        k = j;\n        p = d[j];\n      }\n    }\n\n    if (k !== i) {\n      d[k] = d[i];\n      d[i] = p;\n      for (j = 0; j < n; j++) {\n        p = V.get(j, i);\n        V.set(j, i, V.get(j, k));\n        V.set(j, k, p);\n      }\n    }\n  }\n}\n\nfunction orthes(n, H, ort, V) {\n  let low = 0;\n  let high = n - 1;\n  let f, g, h, i, j, m;\n  let scale;\n\n  for (m = low + 1; m <= high - 1; m++) {\n    scale = 0;\n    for (i = m; i <= high; i++) {\n      scale = scale + Math.abs(H.get(i, m - 1));\n    }\n\n    if (scale !== 0) {\n      h = 0;\n      for (i = high; i >= m; i--) {\n        ort[i] = H.get(i, m - 1) / scale;\n        h += ort[i] * ort[i];\n      }\n\n      g = Math.sqrt(h);\n      if (ort[m] > 0) {\n        g = -g;\n      }\n\n      h = h - ort[m] * g;\n      ort[m] = ort[m] - g;\n\n      for (j = m; j < n; j++) {\n        f = 0;\n        for (i = high; i >= m; i--) {\n          f += ort[i] * H.get(i, j);\n        }\n\n        f = f / h;\n        for (i = m; i <= high; i++) {\n          H.set(i, j, H.get(i, j) - f * ort[i]);\n        }\n      }\n\n      for (i = 0; i <= high; i++) {\n        f = 0;\n        for (j = high; j >= m; j--) {\n          f += ort[j] * H.get(i, j);\n        }\n\n        f = f / h;\n        for (j = m; j <= high; j++) {\n          H.set(i, j, H.get(i, j) - f * ort[j]);\n        }\n      }\n\n      ort[m] = scale * ort[m];\n      H.set(m, m - 1, scale * g);\n    }\n  }\n\n  for (i = 0; i < n; i++) {\n    for (j = 0; j < n; j++) {\n      V.set(i, j, i === j ? 1 : 0);\n    }\n  }\n\n  for (m = high - 1; m >= low + 1; m--) {\n    if (H.get(m, m - 1) !== 0) {\n      for (i = m + 1; i <= high; i++) {\n        ort[i] = H.get(i, m - 1);\n      }\n\n      for (j = m; j <= high; j++) {\n        g = 0;\n        for (i = m; i <= high; i++) {\n          g += ort[i] * V.get(i, j);\n        }\n\n        g = g / ort[m] / H.get(m, m - 1);\n        for (i = m; i <= high; i++) {\n          V.set(i, j, V.get(i, j) + g * ort[i]);\n        }\n      }\n    }\n  }\n}\n\nfunction hqr2(nn, e, d, V, H) {\n  let n = nn - 1;\n  let low = 0;\n  let high = nn - 1;\n  let eps = Number.EPSILON;\n  let exshift = 0;\n  let norm = 0;\n  let p = 0;\n  let q = 0;\n  let r = 0;\n  let s = 0;\n  let z = 0;\n  let iter = 0;\n  let i, j, k, l, m, t, w, x, y;\n  let ra, sa, vr, vi;\n  let notlast, cdivres;\n\n  for (i = 0; i < nn; i++) {\n    if (i < low || i > high) {\n      d[i] = H.get(i, i);\n      e[i] = 0;\n    }\n\n    for (j = Math.max(i - 1, 0); j < nn; j++) {\n      norm = norm + Math.abs(H.get(i, j));\n    }\n  }\n\n  while (n >= low) {\n    l = n;\n    while (l > low) {\n      s = Math.abs(H.get(l - 1, l - 1)) + Math.abs(H.get(l, l));\n      if (s === 0) {\n        s = norm;\n      }\n      if (Math.abs(H.get(l, l - 1)) < eps * s) {\n        break;\n      }\n      l--;\n    }\n\n    if (l === n) {\n      H.set(n, n, H.get(n, n) + exshift);\n      d[n] = H.get(n, n);\n      e[n] = 0;\n      n--;\n      iter = 0;\n    } else if (l === n - 1) {\n      w = H.get(n, n - 1) * H.get(n - 1, n);\n      p = (H.get(n - 1, n - 1) - H.get(n, n)) / 2;\n      q = p * p + w;\n      z = Math.sqrt(Math.abs(q));\n      H.set(n, n, H.get(n, n) + exshift);\n      H.set(n - 1, n - 1, H.get(n - 1, n - 1) + exshift);\n      x = H.get(n, n);\n\n      if (q >= 0) {\n        z = p >= 0 ? p + z : p - z;\n        d[n - 1] = x + z;\n        d[n] = d[n - 1];\n        if (z !== 0) {\n          d[n] = x - w / z;\n        }\n        e[n - 1] = 0;\n        e[n] = 0;\n        x = H.get(n, n - 1);\n        s = Math.abs(x) + Math.abs(z);\n        p = x / s;\n        q = z / s;\n        r = Math.sqrt(p * p + q * q);\n        p = p / r;\n        q = q / r;\n\n        for (j = n - 1; j < nn; j++) {\n          z = H.get(n - 1, j);\n          H.set(n - 1, j, q * z + p * H.get(n, j));\n          H.set(n, j, q * H.get(n, j) - p * z);\n        }\n\n        for (i = 0; i <= n; i++) {\n          z = H.get(i, n - 1);\n          H.set(i, n - 1, q * z + p * H.get(i, n));\n          H.set(i, n, q * H.get(i, n) - p * z);\n        }\n\n        for (i = low; i <= high; i++) {\n          z = V.get(i, n - 1);\n          V.set(i, n - 1, q * z + p * V.get(i, n));\n          V.set(i, n, q * V.get(i, n) - p * z);\n        }\n      } else {\n        d[n - 1] = x + p;\n        d[n] = x + p;\n        e[n - 1] = z;\n        e[n] = -z;\n      }\n\n      n = n - 2;\n      iter = 0;\n    } else {\n      x = H.get(n, n);\n      y = 0;\n      w = 0;\n      if (l < n) {\n        y = H.get(n - 1, n - 1);\n        w = H.get(n, n - 1) * H.get(n - 1, n);\n      }\n\n      if (iter === 10) {\n        exshift += x;\n        for (i = low; i <= n; i++) {\n          H.set(i, i, H.get(i, i) - x);\n        }\n        s = Math.abs(H.get(n, n - 1)) + Math.abs(H.get(n - 1, n - 2));\n        // eslint-disable-next-line no-multi-assign\n        x = y = 0.75 * s;\n        w = -0.4375 * s * s;\n      }\n\n      if (iter === 30) {\n        s = (y - x) / 2;\n        s = s * s + w;\n        if (s > 0) {\n          s = Math.sqrt(s);\n          if (y < x) {\n            s = -s;\n          }\n          s = x - w / ((y - x) / 2 + s);\n          for (i = low; i <= n; i++) {\n            H.set(i, i, H.get(i, i) - s);\n          }\n          exshift += s;\n          // eslint-disable-next-line no-multi-assign\n          x = y = w = 0.964;\n        }\n      }\n\n      iter = iter + 1;\n\n      m = n - 2;\n      while (m >= l) {\n        z = H.get(m, m);\n        r = x - z;\n        s = y - z;\n        p = (r * s - w) / H.get(m + 1, m) + H.get(m, m + 1);\n        q = H.get(m + 1, m + 1) - z - r - s;\n        r = H.get(m + 2, m + 1);\n        s = Math.abs(p) + Math.abs(q) + Math.abs(r);\n        p = p / s;\n        q = q / s;\n        r = r / s;\n        if (m === l) {\n          break;\n        }\n        if (\n          Math.abs(H.get(m, m - 1)) * (Math.abs(q) + Math.abs(r)) <\n          eps *\n            (Math.abs(p) *\n              (Math.abs(H.get(m - 1, m - 1)) +\n                Math.abs(z) +\n                Math.abs(H.get(m + 1, m + 1))))\n        ) {\n          break;\n        }\n        m--;\n      }\n\n      for (i = m + 2; i <= n; i++) {\n        H.set(i, i - 2, 0);\n        if (i > m + 2) {\n          H.set(i, i - 3, 0);\n        }\n      }\n\n      for (k = m; k <= n - 1; k++) {\n        notlast = k !== n - 1;\n        if (k !== m) {\n          p = H.get(k, k - 1);\n          q = H.get(k + 1, k - 1);\n          r = notlast ? H.get(k + 2, k - 1) : 0;\n          x = Math.abs(p) + Math.abs(q) + Math.abs(r);\n          if (x !== 0) {\n            p = p / x;\n            q = q / x;\n            r = r / x;\n          }\n        }\n\n        if (x === 0) {\n          break;\n        }\n\n        s = Math.sqrt(p * p + q * q + r * r);\n        if (p < 0) {\n          s = -s;\n        }\n\n        if (s !== 0) {\n          if (k !== m) {\n            H.set(k, k - 1, -s * x);\n          } else if (l !== m) {\n            H.set(k, k - 1, -H.get(k, k - 1));\n          }\n\n          p = p + s;\n          x = p / s;\n          y = q / s;\n          z = r / s;\n          q = q / p;\n          r = r / p;\n\n          for (j = k; j < nn; j++) {\n            p = H.get(k, j) + q * H.get(k + 1, j);\n            if (notlast) {\n              p = p + r * H.get(k + 2, j);\n              H.set(k + 2, j, H.get(k + 2, j) - p * z);\n            }\n\n            H.set(k, j, H.get(k, j) - p * x);\n            H.set(k + 1, j, H.get(k + 1, j) - p * y);\n          }\n\n          for (i = 0; i <= Math.min(n, k + 3); i++) {\n            p = x * H.get(i, k) + y * H.get(i, k + 1);\n            if (notlast) {\n              p = p + z * H.get(i, k + 2);\n              H.set(i, k + 2, H.get(i, k + 2) - p * r);\n            }\n\n            H.set(i, k, H.get(i, k) - p);\n            H.set(i, k + 1, H.get(i, k + 1) - p * q);\n          }\n\n          for (i = low; i <= high; i++) {\n            p = x * V.get(i, k) + y * V.get(i, k + 1);\n            if (notlast) {\n              p = p + z * V.get(i, k + 2);\n              V.set(i, k + 2, V.get(i, k + 2) - p * r);\n            }\n\n            V.set(i, k, V.get(i, k) - p);\n            V.set(i, k + 1, V.get(i, k + 1) - p * q);\n          }\n        }\n      }\n    }\n  }\n\n  if (norm === 0) {\n    return;\n  }\n\n  for (n = nn - 1; n >= 0; n--) {\n    p = d[n];\n    q = e[n];\n\n    if (q === 0) {\n      l = n;\n      H.set(n, n, 1);\n      for (i = n - 1; i >= 0; i--) {\n        w = H.get(i, i) - p;\n        r = 0;\n        for (j = l; j <= n; j++) {\n          r = r + H.get(i, j) * H.get(j, n);\n        }\n\n        if (e[i] < 0) {\n          z = w;\n          s = r;\n        } else {\n          l = i;\n          if (e[i] === 0) {\n            H.set(i, n, w !== 0 ? -r / w : -r / (eps * norm));\n          } else {\n            x = H.get(i, i + 1);\n            y = H.get(i + 1, i);\n            q = (d[i] - p) * (d[i] - p) + e[i] * e[i];\n            t = (x * s - z * r) / q;\n            H.set(i, n, t);\n            H.set(\n              i + 1,\n              n,\n              Math.abs(x) > Math.abs(z) ? (-r - w * t) / x : (-s - y * t) / z,\n            );\n          }\n\n          t = Math.abs(H.get(i, n));\n          if (eps * t * t > 1) {\n            for (j = i; j <= n; j++) {\n              H.set(j, n, H.get(j, n) / t);\n            }\n          }\n        }\n      }\n    } else if (q < 0) {\n      l = n - 1;\n\n      if (Math.abs(H.get(n, n - 1)) > Math.abs(H.get(n - 1, n))) {\n        H.set(n - 1, n - 1, q / H.get(n, n - 1));\n        H.set(n - 1, n, -(H.get(n, n) - p) / H.get(n, n - 1));\n      } else {\n        cdivres = cdiv(0, -H.get(n - 1, n), H.get(n - 1, n - 1) - p, q);\n        H.set(n - 1, n - 1, cdivres[0]);\n        H.set(n - 1, n, cdivres[1]);\n      }\n\n      H.set(n, n - 1, 0);\n      H.set(n, n, 1);\n      for (i = n - 2; i >= 0; i--) {\n        ra = 0;\n        sa = 0;\n        for (j = l; j <= n; j++) {\n          ra = ra + H.get(i, j) * H.get(j, n - 1);\n          sa = sa + H.get(i, j) * H.get(j, n);\n        }\n\n        w = H.get(i, i) - p;\n\n        if (e[i] < 0) {\n          z = w;\n          r = ra;\n          s = sa;\n        } else {\n          l = i;\n          if (e[i] === 0) {\n            cdivres = cdiv(-ra, -sa, w, q);\n            H.set(i, n - 1, cdivres[0]);\n            H.set(i, n, cdivres[1]);\n          } else {\n            x = H.get(i, i + 1);\n            y = H.get(i + 1, i);\n            vr = (d[i] - p) * (d[i] - p) + e[i] * e[i] - q * q;\n            vi = (d[i] - p) * 2 * q;\n            if (vr === 0 && vi === 0) {\n              vr =\n                eps *\n                norm *\n                (Math.abs(w) +\n                  Math.abs(q) +\n                  Math.abs(x) +\n                  Math.abs(y) +\n                  Math.abs(z));\n            }\n            cdivres = cdiv(\n              x * r - z * ra + q * sa,\n              x * s - z * sa - q * ra,\n              vr,\n              vi,\n            );\n            H.set(i, n - 1, cdivres[0]);\n            H.set(i, n, cdivres[1]);\n            if (Math.abs(x) > Math.abs(z) + Math.abs(q)) {\n              H.set(\n                i + 1,\n                n - 1,\n                (-ra - w * H.get(i, n - 1) + q * H.get(i, n)) / x,\n              );\n              H.set(\n                i + 1,\n                n,\n                (-sa - w * H.get(i, n) - q * H.get(i, n - 1)) / x,\n              );\n            } else {\n              cdivres = cdiv(\n                -r - y * H.get(i, n - 1),\n                -s - y * H.get(i, n),\n                z,\n                q,\n              );\n              H.set(i + 1, n - 1, cdivres[0]);\n              H.set(i + 1, n, cdivres[1]);\n            }\n          }\n\n          t = Math.max(Math.abs(H.get(i, n - 1)), Math.abs(H.get(i, n)));\n          if (eps * t * t > 1) {\n            for (j = i; j <= n; j++) {\n              H.set(j, n - 1, H.get(j, n - 1) / t);\n              H.set(j, n, H.get(j, n) / t);\n            }\n          }\n        }\n      }\n    }\n  }\n\n  for (i = 0; i < nn; i++) {\n    if (i < low || i > high) {\n      for (j = i; j < nn; j++) {\n        V.set(i, j, H.get(i, j));\n      }\n    }\n  }\n\n  for (j = nn - 1; j >= low; j--) {\n    for (i = low; i <= high; i++) {\n      z = 0;\n      for (k = low; k <= Math.min(j, high); k++) {\n        z = z + V.get(i, k) * H.get(k, j);\n      }\n      V.set(i, j, z);\n    }\n  }\n}\n\nfunction cdiv(xr, xi, yr, yi) {\n  let r, d;\n  if (Math.abs(yr) > Math.abs(yi)) {\n    r = yi / yr;\n    d = yr + r * yi;\n    return [(xr + r * xi) / d, (xi - r * xr) / d];\n  } else {\n    r = yr / yi;\n    d = yi + r * yr;\n    return [(r * xr + xi) / d, (r * xi - xr) / d];\n  }\n}\n\nclass CholeskyDecomposition {\n  constructor(value) {\n    value = WrapperMatrix2D.checkMatrix(value);\n    if (!value.isSymmetric()) {\n      throw new Error('Matrix is not symmetric');\n    }\n\n    let a = value;\n    let dimension = a.rows;\n    let l = new Matrix(dimension, dimension);\n    let positiveDefinite = true;\n    let i, j, k;\n\n    for (j = 0; j < dimension; j++) {\n      let d = 0;\n      for (k = 0; k < j; k++) {\n        let s = 0;\n        for (i = 0; i < k; i++) {\n          s += l.get(k, i) * l.get(j, i);\n        }\n        s = (a.get(j, k) - s) / l.get(k, k);\n        l.set(j, k, s);\n        d = d + s * s;\n      }\n\n      d = a.get(j, j) - d;\n\n      positiveDefinite &&= d > 0;\n      l.set(j, j, Math.sqrt(Math.max(d, 0)));\n      for (k = j + 1; k < dimension; k++) {\n        l.set(j, k, 0);\n      }\n    }\n\n    this.L = l;\n    this.positiveDefinite = positiveDefinite;\n  }\n\n  isPositiveDefinite() {\n    return this.positiveDefinite;\n  }\n\n  solve(value) {\n    value = WrapperMatrix2D.checkMatrix(value);\n\n    let l = this.L;\n    let dimension = l.rows;\n\n    if (value.rows !== dimension) {\n      throw new Error('Matrix dimensions do not match');\n    }\n    if (this.isPositiveDefinite() === false) {\n      throw new Error('Matrix is not positive definite');\n    }\n\n    let count = value.columns;\n    let B = value.clone();\n    let i, j, k;\n\n    for (k = 0; k < dimension; k++) {\n      for (j = 0; j < count; j++) {\n        for (i = 0; i < k; i++) {\n          B.set(k, j, B.get(k, j) - B.get(i, j) * l.get(k, i));\n        }\n        B.set(k, j, B.get(k, j) / l.get(k, k));\n      }\n    }\n\n    for (k = dimension - 1; k >= 0; k--) {\n      for (j = 0; j < count; j++) {\n        for (i = k + 1; i < dimension; i++) {\n          B.set(k, j, B.get(k, j) - B.get(i, j) * l.get(i, k));\n        }\n        B.set(k, j, B.get(k, j) / l.get(k, k));\n      }\n    }\n\n    return B;\n  }\n\n  get lowerTriangularMatrix() {\n    return this.L;\n  }\n}\n\nclass nipals {\n  constructor(X, options = {}) {\n    X = WrapperMatrix2D.checkMatrix(X);\n    let { Y } = options;\n    const {\n      scaleScores = false,\n      maxIterations = 1000,\n      terminationCriteria = 1e-10,\n    } = options;\n\n    let u;\n    if (Y) {\n      if (isAnyArray.isAnyArray(Y) && typeof Y[0] === 'number') {\n        Y = Matrix.columnVector(Y);\n      } else {\n        Y = WrapperMatrix2D.checkMatrix(Y);\n      }\n      if (Y.rows !== X.rows) {\n        throw new Error('Y should have the same number of rows as X');\n      }\n      u = Y.getColumnVector(0);\n    } else {\n      u = X.getColumnVector(0);\n    }\n\n    let diff = 1;\n    let t, q, w, tOld;\n\n    for (\n      let counter = 0;\n      counter < maxIterations && diff > terminationCriteria;\n      counter++\n    ) {\n      w = X.transpose().mmul(u).div(u.transpose().mmul(u).get(0, 0));\n      w = w.div(w.norm());\n\n      t = X.mmul(w).div(w.transpose().mmul(w).get(0, 0));\n\n      if (counter > 0) {\n        diff = t.clone().sub(tOld).pow(2).sum();\n      }\n      tOld = t.clone();\n\n      if (Y) {\n        q = Y.transpose().mmul(t).div(t.transpose().mmul(t).get(0, 0));\n        q = q.div(q.norm());\n\n        u = Y.mmul(q).div(q.transpose().mmul(q).get(0, 0));\n      } else {\n        u = t;\n      }\n    }\n\n    if (Y) {\n      let p = X.transpose().mmul(t).div(t.transpose().mmul(t).get(0, 0));\n      p = p.div(p.norm());\n      let xResidual = X.clone().sub(t.clone().mmul(p.transpose()));\n      let residual = u.transpose().mmul(t).div(t.transpose().mmul(t).get(0, 0));\n      let yResidual = Y.clone().sub(\n        t.clone().mulS(residual.get(0, 0)).mmul(q.transpose()),\n      );\n\n      this.t = t;\n      this.p = p.transpose();\n      this.w = w.transpose();\n      this.q = q;\n      this.u = u;\n      this.s = t.transpose().mmul(t);\n      this.xResidual = xResidual;\n      this.yResidual = yResidual;\n      this.betas = residual;\n    } else {\n      this.w = w.transpose();\n      this.s = t.transpose().mmul(t).sqrt();\n      if (scaleScores) {\n        this.t = t.clone().div(this.s.get(0, 0));\n      } else {\n        this.t = t;\n      }\n      this.xResidual = X.sub(t.mmul(w.transpose()));\n    }\n  }\n}\n\nexports.AbstractMatrix = AbstractMatrix;\nexports.CHO = CholeskyDecomposition;\nexports.CholeskyDecomposition = CholeskyDecomposition;\nexports.DistanceMatrix = DistanceMatrix;\nexports.EVD = EigenvalueDecomposition;\nexports.EigenvalueDecomposition = EigenvalueDecomposition;\nexports.LU = LuDecomposition;\nexports.LuDecomposition = LuDecomposition;\nexports.Matrix = Matrix;\nexports.MatrixColumnSelectionView = MatrixColumnSelectionView;\nexports.MatrixColumnView = MatrixColumnView;\nexports.MatrixFlipColumnView = MatrixFlipColumnView;\nexports.MatrixFlipRowView = MatrixFlipRowView;\nexports.MatrixRowSelectionView = MatrixRowSelectionView;\nexports.MatrixRowView = MatrixRowView;\nexports.MatrixSelectionView = MatrixSelectionView;\nexports.MatrixSubView = MatrixSubView;\nexports.MatrixTransposeView = MatrixTransposeView;\nexports.NIPALS = nipals;\nexports.Nipals = nipals;\nexports.QR = QrDecomposition;\nexports.QrDecomposition = QrDecomposition;\nexports.SVD = SingularValueDecomposition;\nexports.SingularValueDecomposition = SingularValueDecomposition;\nexports.SymmetricMatrix = SymmetricMatrix;\nexports.WrapperMatrix1D = WrapperMatrix1D;\nexports.WrapperMatrix2D = WrapperMatrix2D;\nexports.correlation = correlation;\nexports.covariance = covariance;\nexports.default = Matrix;\nexports.determinant = determinant;\nexports.inverse = inverse;\nexports.linearDependencies = linearDependencies;\nexports.pseudoInverse = pseudoInverse;\nexports.solve = solve;\nexports.wrap = wrap;\n","import * as matrix from './matrix.js';\n\nexport const AbstractMatrix = matrix.AbstractMatrix;\nexport const CHO = matrix.CHO;\nexport const CholeskyDecomposition = matrix.CholeskyDecomposition;\nexport const DistanceMatrix = matrix.DistanceMatrix;\nexport const EVD = matrix.EVD;\nexport const EigenvalueDecomposition = matrix.EigenvalueDecomposition;\nexport const LU = matrix.LU;\nexport const LuDecomposition = matrix.LuDecomposition;\nexport const Matrix = matrix.Matrix;\nexport const MatrixColumnSelectionView = matrix.MatrixColumnSelectionView;\nexport const MatrixColumnView = matrix.MatrixColumnView;\nexport const MatrixFlipColumnView = matrix.MatrixFlipColumnView;\nexport const MatrixFlipRowView = matrix.MatrixFlipRowView;\nexport const MatrixRowSelectionView = matrix.MatrixRowSelectionView;\nexport const MatrixRowView = matrix.MatrixRowView;\nexport const MatrixSelectionView = matrix.MatrixSelectionView;\nexport const MatrixSubView = matrix.MatrixSubView;\nexport const MatrixTransposeView = matrix.MatrixTransposeView;\nexport const NIPALS = matrix.NIPALS;\nexport const Nipals = matrix.Nipals;\nexport const QR = matrix.QR;\nexport const QrDecomposition = matrix.QrDecomposition;\nexport const SVD = matrix.SVD;\nexport const SingularValueDecomposition = matrix.SingularValueDecomposition;\nexport const SymmetricMatrix = matrix.SymmetricMatrix;\nexport const WrapperMatrix1D = matrix.WrapperMatrix1D;\nexport const WrapperMatrix2D = matrix.WrapperMatrix2D;\nexport const correlation = matrix.correlation;\nexport const covariance = matrix.covariance;\nexport default matrix.default.Matrix ? matrix.default.Matrix : matrix.Matrix;\nexport const determinant = matrix.determinant;\nexport const inverse = matrix.inverse;\nexport const linearDependencies = matrix.linearDependencies;\nexport const pseudoInverse = matrix.pseudoInverse;\nexport const solve = matrix.solve;\nexport const wrap = matrix.wrap;\n","import { xCheck } from \"./xCheck.js\";\nimport { xGetFromToIndex } from \"./xGetFromToIndex.js\";\n/**\n * Computes the mean value of an array of values.\n * @param array - array of numbers\n * @param options - options\n */\nexport function xMean(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let sumValue = array[fromIndex];\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        sumValue += array[i];\n    }\n    return sumValue / (toIndex - fromIndex + 1);\n}\n//# sourceMappingURL=xMean.js.map","import { isAnyArray } from 'is-any-array';\nimport { xMean } from \"./xMean.js\";\n/**\n * Finds the variance of the data\n * @param values - the values of the array\n * @param options - options\n * @returns variance\n */\nexport function xVariance(values, options = {}) {\n    if (!isAnyArray(values)) {\n        throw new TypeError('input must be an array');\n    }\n    const { unbiased = true, mean = xMean(values) } = options;\n    let sqrError = 0;\n    for (const value of values) {\n        const x = value - mean;\n        sqrError += x * x;\n    }\n    if (unbiased) {\n        return sqrError / (values.length - 1);\n    }\n    else {\n        return sqrError / values.length;\n    }\n}\n//# sourceMappingURL=xVariance.js.map","import { xVariance } from \"./xVariance.js\";\n/**\n * Finds the standard deviation for the data at hand\n * @param values - values in the data\n * @param options - options\n * @returns standard deviation\n */\nexport function xStandardDeviation(values, options = {}) {\n    return Math.sqrt(xVariance(values, options));\n}\n//# sourceMappingURL=xStandardDeviation.js.map","import { isAnyArray } from 'is-any-array';\nimport { getOutputArray } from \"./getOutputArray.js\";\n/**\n * This function divide the first array by the second array or a constant value to each element of the first array\n * @param array1 - first array\n * @param array2 - second array or number\n * @param options - options\n */\nexport function xDivide(array1, array2, options = {}) {\n    let isConstant = false;\n    let constant = 0;\n    if (isAnyArray(array2)) {\n        if (array1.length !== array2.length) {\n            throw new RangeError('size of array1 and array2 must be identical');\n        }\n    }\n    else {\n        isConstant = true;\n        constant = array2;\n    }\n    const array3 = getOutputArray(options.output, array1.length);\n    if (isConstant) {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] / constant;\n        }\n    }\n    else {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] / array2[i];\n        }\n    }\n    return array3;\n}\n//# sourceMappingURL=xDivide.js.map","import { xCheck } from \"./xCheck.js\";\n/**\n * Returns a copy of the data as a Float64Array.\n * @param array - array of numbers\n */\nexport function xEnsureFloat64(array) {\n    xCheck(array);\n    if (array instanceof Float64Array) {\n        return array.slice(0);\n    }\n    return Float64Array.from(array);\n}\n//# sourceMappingURL=xEnsureFloat64.js.map","'use strict';\n\nfunction FFT(size) {\n  this.size = size | 0;\n  if (this.size <= 1 || (this.size & (this.size - 1)) !== 0)\n    throw new Error('FFT size must be a power of two and bigger than 1');\n\n  this._csize = size << 1;\n\n  // NOTE: Use of `var` is intentional for old V8 versions\n  var table = new Array(this.size * 2);\n  for (var i = 0; i < table.length; i += 2) {\n    const angle = Math.PI * i / this.size;\n    table[i] = Math.cos(angle);\n    table[i + 1] = -Math.sin(angle);\n  }\n  this.table = table;\n\n  // Find size's power of two\n  var power = 0;\n  for (var t = 1; this.size > t; t <<= 1)\n    power++;\n\n  // Calculate initial step's width:\n  //   * If we are full radix-4 - it is 2x smaller to give inital len=8\n  //   * Otherwise it is the same as `power` to give len=4\n  this._width = power % 2 === 0 ? power - 1 : power;\n\n  // Pre-compute bit-reversal patterns\n  this._bitrev = new Array(1 << this._width);\n  for (var j = 0; j < this._bitrev.length; j++) {\n    this._bitrev[j] = 0;\n    for (var shift = 0; shift < this._width; shift += 2) {\n      var revShift = this._width - shift - 2;\n      this._bitrev[j] |= ((j >>> shift) & 3) << revShift;\n    }\n  }\n\n  this._out = null;\n  this._data = null;\n  this._inv = 0;\n}\nmodule.exports = FFT;\n\nFFT.prototype.fromComplexArray = function fromComplexArray(complex, storage) {\n  var res = storage || new Array(complex.length >>> 1);\n  for (var i = 0; i < complex.length; i += 2)\n    res[i >>> 1] = complex[i];\n  return res;\n};\n\nFFT.prototype.createComplexArray = function createComplexArray() {\n  const res = new Array(this._csize);\n  for (var i = 0; i < res.length; i++)\n    res[i] = 0;\n  return res;\n};\n\nFFT.prototype.toComplexArray = function toComplexArray(input, storage) {\n  var res = storage || this.createComplexArray();\n  for (var i = 0; i < res.length; i += 2) {\n    res[i] = input[i >>> 1];\n    res[i + 1] = 0;\n  }\n  return res;\n};\n\nFFT.prototype.completeSpectrum = function completeSpectrum(spectrum) {\n  var size = this._csize;\n  var half = size >>> 1;\n  for (var i = 2; i < half; i += 2) {\n    spectrum[size - i] = spectrum[i];\n    spectrum[size - i + 1] = -spectrum[i + 1];\n  }\n};\n\nFFT.prototype.transform = function transform(out, data) {\n  if (out === data)\n    throw new Error('Input and output buffers must be different');\n\n  this._out = out;\n  this._data = data;\n  this._inv = 0;\n  this._transform4();\n  this._out = null;\n  this._data = null;\n};\n\nFFT.prototype.realTransform = function realTransform(out, data) {\n  if (out === data)\n    throw new Error('Input and output buffers must be different');\n\n  this._out = out;\n  this._data = data;\n  this._inv = 0;\n  this._realTransform4();\n  this._out = null;\n  this._data = null;\n};\n\nFFT.prototype.inverseTransform = function inverseTransform(out, data) {\n  if (out === data)\n    throw new Error('Input and output buffers must be different');\n\n  this._out = out;\n  this._data = data;\n  this._inv = 1;\n  this._transform4();\n  for (var i = 0; i < out.length; i++)\n    out[i] /= this.size;\n  this._out = null;\n  this._data = null;\n};\n\n// radix-4 implementation\n//\n// NOTE: Uses of `var` are intentional for older V8 version that do not\n// support both `let compound assignments` and `const phi`\nFFT.prototype._transform4 = function _transform4() {\n  var out = this._out;\n  var size = this._csize;\n\n  // Initial step (permute and transform)\n  var width = this._width;\n  var step = 1 << width;\n  var len = (size / step) << 1;\n\n  var outOff;\n  var t;\n  var bitrev = this._bitrev;\n  if (len === 4) {\n    for (outOff = 0, t = 0; outOff < size; outOff += len, t++) {\n      const off = bitrev[t];\n      this._singleTransform2(outOff, off, step);\n    }\n  } else {\n    // len === 8\n    for (outOff = 0, t = 0; outOff < size; outOff += len, t++) {\n      const off = bitrev[t];\n      this._singleTransform4(outOff, off, step);\n    }\n  }\n\n  // Loop through steps in decreasing order\n  var inv = this._inv ? -1 : 1;\n  var table = this.table;\n  for (step >>= 2; step >= 2; step >>= 2) {\n    len = (size / step) << 1;\n    var quarterLen = len >>> 2;\n\n    // Loop through offsets in the data\n    for (outOff = 0; outOff < size; outOff += len) {\n      // Full case\n      var limit = outOff + quarterLen;\n      for (var i = outOff, k = 0; i < limit; i += 2, k += step) {\n        const A = i;\n        const B = A + quarterLen;\n        const C = B + quarterLen;\n        const D = C + quarterLen;\n\n        // Original values\n        const Ar = out[A];\n        const Ai = out[A + 1];\n        const Br = out[B];\n        const Bi = out[B + 1];\n        const Cr = out[C];\n        const Ci = out[C + 1];\n        const Dr = out[D];\n        const Di = out[D + 1];\n\n        // Middle values\n        const MAr = Ar;\n        const MAi = Ai;\n\n        const tableBr = table[k];\n        const tableBi = inv * table[k + 1];\n        const MBr = Br * tableBr - Bi * tableBi;\n        const MBi = Br * tableBi + Bi * tableBr;\n\n        const tableCr = table[2 * k];\n        const tableCi = inv * table[2 * k + 1];\n        const MCr = Cr * tableCr - Ci * tableCi;\n        const MCi = Cr * tableCi + Ci * tableCr;\n\n        const tableDr = table[3 * k];\n        const tableDi = inv * table[3 * k + 1];\n        const MDr = Dr * tableDr - Di * tableDi;\n        const MDi = Dr * tableDi + Di * tableDr;\n\n        // Pre-Final values\n        const T0r = MAr + MCr;\n        const T0i = MAi + MCi;\n        const T1r = MAr - MCr;\n        const T1i = MAi - MCi;\n        const T2r = MBr + MDr;\n        const T2i = MBi + MDi;\n        const T3r = inv * (MBr - MDr);\n        const T3i = inv * (MBi - MDi);\n\n        // Final values\n        const FAr = T0r + T2r;\n        const FAi = T0i + T2i;\n\n        const FCr = T0r - T2r;\n        const FCi = T0i - T2i;\n\n        const FBr = T1r + T3i;\n        const FBi = T1i - T3r;\n\n        const FDr = T1r - T3i;\n        const FDi = T1i + T3r;\n\n        out[A] = FAr;\n        out[A + 1] = FAi;\n        out[B] = FBr;\n        out[B + 1] = FBi;\n        out[C] = FCr;\n        out[C + 1] = FCi;\n        out[D] = FDr;\n        out[D + 1] = FDi;\n      }\n    }\n  }\n};\n\n// radix-2 implementation\n//\n// NOTE: Only called for len=4\nFFT.prototype._singleTransform2 = function _singleTransform2(outOff, off,\n                                                             step) {\n  const out = this._out;\n  const data = this._data;\n\n  const evenR = data[off];\n  const evenI = data[off + 1];\n  const oddR = data[off + step];\n  const oddI = data[off + step + 1];\n\n  const leftR = evenR + oddR;\n  const leftI = evenI + oddI;\n  const rightR = evenR - oddR;\n  const rightI = evenI - oddI;\n\n  out[outOff] = leftR;\n  out[outOff + 1] = leftI;\n  out[outOff + 2] = rightR;\n  out[outOff + 3] = rightI;\n};\n\n// radix-4\n//\n// NOTE: Only called for len=8\nFFT.prototype._singleTransform4 = function _singleTransform4(outOff, off,\n                                                             step) {\n  const out = this._out;\n  const data = this._data;\n  const inv = this._inv ? -1 : 1;\n  const step2 = step * 2;\n  const step3 = step * 3;\n\n  // Original values\n  const Ar = data[off];\n  const Ai = data[off + 1];\n  const Br = data[off + step];\n  const Bi = data[off + step + 1];\n  const Cr = data[off + step2];\n  const Ci = data[off + step2 + 1];\n  const Dr = data[off + step3];\n  const Di = data[off + step3 + 1];\n\n  // Pre-Final values\n  const T0r = Ar + Cr;\n  const T0i = Ai + Ci;\n  const T1r = Ar - Cr;\n  const T1i = Ai - Ci;\n  const T2r = Br + Dr;\n  const T2i = Bi + Di;\n  const T3r = inv * (Br - Dr);\n  const T3i = inv * (Bi - Di);\n\n  // Final values\n  const FAr = T0r + T2r;\n  const FAi = T0i + T2i;\n\n  const FBr = T1r + T3i;\n  const FBi = T1i - T3r;\n\n  const FCr = T0r - T2r;\n  const FCi = T0i - T2i;\n\n  const FDr = T1r - T3i;\n  const FDi = T1i + T3r;\n\n  out[outOff] = FAr;\n  out[outOff + 1] = FAi;\n  out[outOff + 2] = FBr;\n  out[outOff + 3] = FBi;\n  out[outOff + 4] = FCr;\n  out[outOff + 5] = FCi;\n  out[outOff + 6] = FDr;\n  out[outOff + 7] = FDi;\n};\n\n// Real input radix-4 implementation\nFFT.prototype._realTransform4 = function _realTransform4() {\n  var out = this._out;\n  var size = this._csize;\n\n  // Initial step (permute and transform)\n  var width = this._width;\n  var step = 1 << width;\n  var len = (size / step) << 1;\n\n  var outOff;\n  var t;\n  var bitrev = this._bitrev;\n  if (len === 4) {\n    for (outOff = 0, t = 0; outOff < size; outOff += len, t++) {\n      const off = bitrev[t];\n      this._singleRealTransform2(outOff, off >>> 1, step >>> 1);\n    }\n  } else {\n    // len === 8\n    for (outOff = 0, t = 0; outOff < size; outOff += len, t++) {\n      const off = bitrev[t];\n      this._singleRealTransform4(outOff, off >>> 1, step >>> 1);\n    }\n  }\n\n  // Loop through steps in decreasing order\n  var inv = this._inv ? -1 : 1;\n  var table = this.table;\n  for (step >>= 2; step >= 2; step >>= 2) {\n    len = (size / step) << 1;\n    var halfLen = len >>> 1;\n    var quarterLen = halfLen >>> 1;\n    var hquarterLen = quarterLen >>> 1;\n\n    // Loop through offsets in the data\n    for (outOff = 0; outOff < size; outOff += len) {\n      for (var i = 0, k = 0; i <= hquarterLen; i += 2, k += step) {\n        var A = outOff + i;\n        var B = A + quarterLen;\n        var C = B + quarterLen;\n        var D = C + quarterLen;\n\n        // Original values\n        var Ar = out[A];\n        var Ai = out[A + 1];\n        var Br = out[B];\n        var Bi = out[B + 1];\n        var Cr = out[C];\n        var Ci = out[C + 1];\n        var Dr = out[D];\n        var Di = out[D + 1];\n\n        // Middle values\n        var MAr = Ar;\n        var MAi = Ai;\n\n        var tableBr = table[k];\n        var tableBi = inv * table[k + 1];\n        var MBr = Br * tableBr - Bi * tableBi;\n        var MBi = Br * tableBi + Bi * tableBr;\n\n        var tableCr = table[2 * k];\n        var tableCi = inv * table[2 * k + 1];\n        var MCr = Cr * tableCr - Ci * tableCi;\n        var MCi = Cr * tableCi + Ci * tableCr;\n\n        var tableDr = table[3 * k];\n        var tableDi = inv * table[3 * k + 1];\n        var MDr = Dr * tableDr - Di * tableDi;\n        var MDi = Dr * tableDi + Di * tableDr;\n\n        // Pre-Final values\n        var T0r = MAr + MCr;\n        var T0i = MAi + MCi;\n        var T1r = MAr - MCr;\n        var T1i = MAi - MCi;\n        var T2r = MBr + MDr;\n        var T2i = MBi + MDi;\n        var T3r = inv * (MBr - MDr);\n        var T3i = inv * (MBi - MDi);\n\n        // Final values\n        var FAr = T0r + T2r;\n        var FAi = T0i + T2i;\n\n        var FBr = T1r + T3i;\n        var FBi = T1i - T3r;\n\n        out[A] = FAr;\n        out[A + 1] = FAi;\n        out[B] = FBr;\n        out[B + 1] = FBi;\n\n        // Output final middle point\n        if (i === 0) {\n          var FCr = T0r - T2r;\n          var FCi = T0i - T2i;\n          out[C] = FCr;\n          out[C + 1] = FCi;\n          continue;\n        }\n\n        // Do not overwrite ourselves\n        if (i === hquarterLen)\n          continue;\n\n        // In the flipped case:\n        // MAi = -MAi\n        // MBr=-MBi, MBi=-MBr\n        // MCr=-MCr\n        // MDr=MDi, MDi=MDr\n        var ST0r = T1r;\n        var ST0i = -T1i;\n        var ST1r = T0r;\n        var ST1i = -T0i;\n        var ST2r = -inv * T3i;\n        var ST2i = -inv * T3r;\n        var ST3r = -inv * T2i;\n        var ST3i = -inv * T2r;\n\n        var SFAr = ST0r + ST2r;\n        var SFAi = ST0i + ST2i;\n\n        var SFBr = ST1r + ST3i;\n        var SFBi = ST1i - ST3r;\n\n        var SA = outOff + quarterLen - i;\n        var SB = outOff + halfLen - i;\n\n        out[SA] = SFAr;\n        out[SA + 1] = SFAi;\n        out[SB] = SFBr;\n        out[SB + 1] = SFBi;\n      }\n    }\n  }\n};\n\n// radix-2 implementation\n//\n// NOTE: Only called for len=4\nFFT.prototype._singleRealTransform2 = function _singleRealTransform2(outOff,\n                                                                     off,\n                                                                     step) {\n  const out = this._out;\n  const data = this._data;\n\n  const evenR = data[off];\n  const oddR = data[off + step];\n\n  const leftR = evenR + oddR;\n  const rightR = evenR - oddR;\n\n  out[outOff] = leftR;\n  out[outOff + 1] = 0;\n  out[outOff + 2] = rightR;\n  out[outOff + 3] = 0;\n};\n\n// radix-4\n//\n// NOTE: Only called for len=8\nFFT.prototype._singleRealTransform4 = function _singleRealTransform4(outOff,\n                                                                     off,\n                                                                     step) {\n  const out = this._out;\n  const data = this._data;\n  const inv = this._inv ? -1 : 1;\n  const step2 = step * 2;\n  const step3 = step * 3;\n\n  // Original values\n  const Ar = data[off];\n  const Br = data[off + step];\n  const Cr = data[off + step2];\n  const Dr = data[off + step3];\n\n  // Pre-Final values\n  const T0r = Ar + Cr;\n  const T1r = Ar - Cr;\n  const T2r = Br + Dr;\n  const T3r = inv * (Br - Dr);\n\n  // Final values\n  const FAr = T0r + T2r;\n\n  const FBr = T1r;\n  const FBi = -T3r;\n\n  const FCr = T0r - T2r;\n\n  const FDr = T1r;\n  const FDi = T3r;\n\n  out[outOff] = FAr;\n  out[outOff + 1] = 0;\n  out[outOff + 2] = FBr;\n  out[outOff + 3] = FBi;\n  out[outOff + 4] = FCr;\n  out[outOff + 5] = 0;\n  out[outOff + 6] = FDr;\n  out[outOff + 7] = FDi;\n};\n","/**\n * Create an array with numbers between \"from\" and \"to\" of length \"length\"\n * @param options - options\n * @returns - array of distributed numbers between \"from\" and \"to\"\n */\nexport function createFromToArray(options = {}) {\n    const { from = 0, to = 1, length = 1000, includeFrom = true, includeTo = true, distribution = 'uniform', } = options;\n    const array = new Float64Array(length);\n    let div = length;\n    if (includeFrom && includeTo) {\n        div = length - 1;\n    }\n    else if ((!includeFrom && includeTo) || (includeFrom && !includeTo)) {\n        div = length;\n    }\n    else if (!includeFrom && !includeTo) {\n        div = length + 1;\n    }\n    const delta = (to - from) / div;\n    if (distribution === 'uniform') {\n        if (includeFrom) {\n            let index = 0;\n            while (index < length) {\n                array[index] = from + delta * index;\n                index++;\n            }\n        }\n        else {\n            let index = 0;\n            while (index < length) {\n                array[index] = from + delta * (index + 1);\n                index++;\n            }\n        }\n    }\n    else if (distribution === 'log') {\n        const base = (to / from) ** (1 / div);\n        const firstExponent = Math.log(from) / Math.log(base);\n        if (includeFrom) {\n            let index = 0;\n            while (index < length) {\n                array[index] = base ** (firstExponent + index);\n                index++;\n            }\n        }\n        else {\n            let index = 0;\n            while (index < length) {\n                array[index] = base ** (firstExponent + index + 1);\n                index++;\n            }\n        }\n    }\n    else {\n        throw new Error('distribution must be uniform or log');\n    }\n    return array;\n}\n//# sourceMappingURL=createFromToArray.js.map","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Stringify an object and convert all typed arrays to arrays\n * @param object\n * @param replacer\n * @param space\n * @returns\n */\nexport function stringify(object, replacer, space) {\n    const internalReplacer = (key, value) => {\n        if (ArrayBuffer.isView(value)) {\n            value = Array.from(value);\n        }\n        if (replacer) {\n            return replacer(key, value);\n        }\n        return value;\n    };\n    return JSON.stringify(object, internalReplacer, space);\n}\n//# sourceMappingURL=stringify.js.map","import { xCheck } from \"./xCheck.js\";\nimport { xGetFromToIndex } from \"./xGetFromToIndex.js\";\n/**\n * Computes the maximal value of an array of values\n * @param array - array of numbers\n * @param options - options\n */\nexport function xMaxValue(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let maxValue = array[fromIndex];\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        if (array[i] > maxValue) {\n            maxValue = array[i];\n        }\n    }\n    return maxValue;\n}\n//# sourceMappingURL=xMaxValue.js.map","import { xCheck } from \"./xCheck.js\";\nimport { xGetFromToIndex } from \"./xGetFromToIndex.js\";\n/**\n * Computes the minimal value of an array of values.\n * @param array - array of numbers\n * @param options - options\n */\nexport function xMinValue(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let minValue = array[fromIndex];\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        if (array[i] < minValue) {\n            minValue = array[i];\n        }\n    }\n    return minValue;\n}\n//# sourceMappingURL=xMinValue.js.map","/**\n * Check if the values are separated always by the same difference\n * @param array - Monotone growing array of number\n * @param options\n */\nexport function xIsEquallySpaced(array, options = {}) {\n    if (array.length < 3)\n        return true;\n    const { tolerance = 0.05 } = options;\n    let maxDx = 0;\n    let minDx = Number.MAX_SAFE_INTEGER;\n    for (let i = 0; i < array.length - 1; ++i) {\n        const absoluteDifference = array[i + 1] - array[i];\n        if (absoluteDifference < minDx) {\n            minDx = absoluteDifference;\n        }\n        if (absoluteDifference > maxDx) {\n            maxDx = absoluteDifference;\n        }\n    }\n    return (maxDx - minDx) / maxDx < tolerance;\n}\n//# sourceMappingURL=xIsEquallySpaced.js.map","/**\n * Returns true if x is monotonic.\n * @param array - array of numbers.\n * @returns 1 if monotonic increasing, -1 if monotonic decreasing, 0 if not monotonic.\n */\nexport function xIsMonotonic(array) {\n    if (array.length <= 2) {\n        return 1;\n    }\n    if (array[0] === array[1]) {\n        // maybe a constant series\n        for (let i = 1; i < array.length - 1; i++) {\n            if (array[i] !== array[i + 1])\n                return 0;\n        }\n        return 1;\n    }\n    if (array[0] < array.at(-1)) {\n        for (let i = 0; i < array.length - 1; i++) {\n            if (array[i] >= array[i + 1])\n                return 0;\n        }\n        return 1;\n    }\n    else {\n        for (let i = 0; i < array.length - 1; i++) {\n            if (array[i] <= array[i + 1])\n                return 0;\n        }\n        return -1;\n    }\n}\n//# sourceMappingURL=xIsMonotonic.js.map","import { xMedian } from \"./xMedian.js\";\n/**\n * This function calculates the median absolute deviation (MAD).\n * https://en.wikipedia.org/wiki/Median_absolute_deviation\n * @param array\n */\nexport function xMedianAbsoluteDeviation(array) {\n    const median = xMedian(array);\n    const averageDeviations = new Float64Array(array.length);\n    for (let i = 0; i < array.length; i++) {\n        averageDeviations[i] = Math.abs(array[i] - median);\n    }\n    return {\n        median,\n        mad: xMedian(averageDeviations),\n    };\n}\n//# sourceMappingURL=xMedianAbsoluteDeviation.js.map","import { xCheck } from \"./xCheck.js\";\n/**\n * Return min and max values of an array.\n * @param array - array of number\n * @returns - Object with 2 properties, min and max.\n */\nexport function xMinMaxValues(array) {\n    xCheck(array);\n    let min = array[0];\n    let max = array[0];\n    for (const value of array) {\n        if (value < min)\n            min = value;\n        if (value > max)\n            max = value;\n    }\n    return { min, max };\n}\n//# sourceMappingURL=xMinMaxValues.js.map","/*\nAdapted from: https://github.com/compute-io/erfcinv/blob/aa116e23883839359e310ad41a7c42f72815fc1e/lib/number.js\n\nThe MIT License (MIT)\n\nCopyright (c) 2014-2015 The Compute.io Authors. All rights reserved.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n\nBoost Software License - Version 1.0 - August 17th, 2003\n\nPermission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the \"Software\") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following:\n\nThe copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n/* eslint-disable no-loss-of-precision */\n// Coefficients for erfcinv on [0, 0.5]:\nconst Y1 = 8.91314744949340820313e-2;\nconst P1 = [\n    -5.38772965071242932965e-3, 8.22687874676915743155e-3,\n    2.19878681111168899165e-2, -3.65637971411762664006e-2,\n    -1.26926147662974029034e-2, 3.34806625409744615033e-2,\n    -8.36874819741736770379e-3, -5.08781949658280665617e-4,\n];\nconst Q1 = [\n    8.86216390456424707504e-4, -2.33393759374190016776e-3,\n    7.95283687341571680018e-2, -5.27396382340099713954e-2,\n    -7.1228902341542847553e-1, 6.62328840472002992063e-1, 1.56221558398423026363,\n    -1.56574558234175846809, -9.70005043303290640362e-1, 1,\n];\n// Coefficients for erfcinv for 0.5 > 1-x >= 0:\nconst Y2 = 2.249481201171875;\nconst P2 = [\n    -3.67192254707729348546, 2.11294655448340526258e1, 1.7445385985570866523e1,\n    -4.46382324441786960818e1, -1.88510648058714251895e1,\n    1.76447298408374015486e1, 8.37050328343119927838, 1.05264680699391713268e-1,\n    -2.02433508355938759655e-1,\n];\nconst Q2 = [\n    1.72114765761200282724, -2.26436933413139721736e1, 1.08268667355460159008e1,\n    4.85609213108739935468e1, -2.01432634680485188801e1,\n    -2.86608180499800029974e1, 3.9713437953343869095, 6.24264124854247537712, 1,\n];\n// Coefficients for erfcinv for sqrt( -log(1-x)):\nconst Y3 = 8.07220458984375e-1;\nconst P3 = [\n    -6.81149956853776992068e-10, 2.85225331782217055858e-8,\n    -6.79465575181126350155e-7, 2.14558995388805277169e-3,\n    2.90157910005329060432e-2, 1.42869534408157156766e-1,\n    3.37785538912035898924e-1, 3.87079738972604337464e-1,\n    1.17030156341995252019e-1, -1.63794047193317060787e-1,\n    -1.31102781679951906451e-1,\n];\nconst Q3 = [\n    1.105924229346489121e-2, 1.52264338295331783612e-1, 8.48854343457902036425e-1,\n    2.59301921623620271374, 4.77846592945843778382, 5.38168345707006855425,\n    3.46625407242567245975, 1,\n];\nconst Y4 = 9.3995571136474609375e-1;\nconst P4 = [\n    2.66339227425782031962e-12, -2.30404776911882601748e-10,\n    4.60469890584317994083e-6, 1.57544617424960554631e-4,\n    1.87123492819559223345e-3, 9.50804701325919603619e-3,\n    1.85573306514231072324e-2, -2.22426529213447927281e-3,\n    -3.50353787183177984712e-2,\n];\nconst Q4 = [\n    7.64675292302794483503e-5, 2.63861676657015992959e-3,\n    3.41589143670947727934e-2, 2.20091105764131249824e-1,\n    7.62059164553623404043e-1, 1.3653349817554063097, 1,\n];\nconst Y5 = 9.8362827301025390625e-1;\nconst P5 = [\n    9.9055709973310326855e-17, -2.81128735628831791805e-14,\n    4.62596163522878599135e-9, 4.49696789927706453732e-7,\n    1.49624783758342370182e-5, 2.09386317487588078668e-4,\n    1.05628862152492910091e-3, -1.12951438745580278863e-3,\n    -1.67431005076633737133e-2,\n];\nconst Q5 = [\n    2.82243172016108031869e-7, 2.75335474764726041141e-5,\n    9.64011807005165528527e-4, 1.60746087093676504695e-2,\n    1.38151865749083321638e-1, 5.91429344886417493481e-1, 1,\n];\n/**\n * Polyval.\n * @param c - Array of Number.\n * @param x - Number.\n * @returns Number.\n */\nfunction polyval(c, x) {\n    let p = 0;\n    for (const coef of c) {\n        p = p * x + coef;\n    }\n    return p;\n}\n/**\n * Calculates a rational approximation.\n * @private\n * @param x - Number.\n * @param v - Number.\n * @param P - Array of polynomial coefficients.\n * @param Q - Array of polynomial coefficients.\n * @param Y - Number.\n * @returns Rational approximation.\n */\nfunction calc(x, v, P, Q, Y) {\n    const s = x - v;\n    const r = polyval(P, s) / polyval(Q, s);\n    return Y * x + r * x;\n}\n/**\n * Evaluates the complementary inverse error function for an input value.\n * @private\n * @param x - Input value.\n * @returns Evaluated complementary inverse error function.\n */\nexport default function erfcinv(x) {\n    let sign = false;\n    let val;\n    let q;\n    let g;\n    let r;\n    // [1] Special cases...\n    // NaN:\n    if (Number.isNaN(x)) {\n        return Number.NaN;\n    }\n    // x not on the interval: [0,2]\n    if (x < 0 || x > 2) {\n        throw new RangeError(`erfcinv()::invalid input argument. Value must be on the interval [0,2]. Value: \\`${x}\\`.`);\n    }\n    if (x === 0) {\n        return Number.POSITIVE_INFINITY;\n    }\n    if (x === 2) {\n        return Number.NEGATIVE_INFINITY;\n    }\n    if (x === 1) {\n        return 0;\n    }\n    // [2] Get the sign and make use of `erfc` reflection formula: `erfc(-z)=2 - erfc(z)`...\n    if (x > 1) {\n        q = 2 - x;\n        x = 1 - q;\n        sign = true;\n    }\n    else {\n        q = x;\n        x = 1 - x;\n    }\n    // [3] |x| <= 0.5\n    if (x <= 0.5) {\n        g = x * (x + 10);\n        r = polyval(P1, x) / polyval(Q1, x);\n        val = g * Y1 + g * r;\n        return sign ? -val : val;\n    }\n    // [4] 1-|x| >= 0.25\n    if (q >= 0.25) {\n        g = Math.sqrt(-2 * Math.log(q));\n        q = q - 0.25;\n        r = polyval(P2, q) / polyval(Q2, q);\n        val = g / (Y2 + r);\n        return sign ? -val : val;\n    }\n    q = Math.sqrt(-Math.log(q));\n    // [5] q < 3\n    if (q < 3) {\n        return calc(q, 1.125, P3, Q3, Y3);\n    }\n    // [6] q < 6\n    if (q < 6) {\n        return calc(q, 3, P4, Q4, Y4);\n    }\n    // Note that the smallest number in JavaScript is 5e-324. Math.sqrt( -Math.log( 5e-324 ) ) ~27.2844\n    return calc(q, 6, P5, Q5, Y5);\n    // Note that in the boost library, they are able to go to much smaller values, as 128 bit long doubles support ~1e-5000; something which JavaScript does not natively support.\n}\n//# sourceMappingURL=erfcinv.js.map","import erfcinv from \"./erfcinv.js\";\n/**\n * Applies a simple normalization inverse transformation to the input data.\n * @param data - The input array of numbers to be transformed.\n * @param options - Optional parameters for the transformation.\n * @returns A new Float64Array containing the transformed data.\n */\nexport function simpleNormInv(data, options = {}) {\n    const { magnitudeMode = false } = options;\n    const result = new Float64Array(data.length);\n    if (magnitudeMode) {\n        for (let i = 0; i < result.length; i++) {\n            result[i] = -Math.sqrt(-2 * Math.log(1 - data[i]));\n        }\n    }\n    else {\n        for (let i = 0; i < result.length; i++) {\n            result[i] = -1 * Math.SQRT2 * erfcinv(2 * data[i]);\n        }\n    }\n    return result;\n}\n/**\n * Convenience wrapper for single number processing by simpleNormInv function.\n * @param data - The number to be normalized.\n * @param options - The options for the normalization process.\n * @returns The normalized number.\n */\nexport function simpleNormInvNumber(data, options = {}) {\n    return simpleNormInv([data], options)[0];\n}\n//# sourceMappingURL=simpleNormInv.js.map","import { isAnyArray } from 'is-any-array';\nimport { createFromToArray } from \"../utils/index.js\";\nimport { simpleNormInvNumber } from \"./utils/simpleNormInv.js\";\nimport { xEnsureFloat64 } from \"./xEnsureFloat64.js\";\n/**\n * Determine noise level by san plot methodology (https://doi.org/10.1002/mrc.4882)\n * @param array - real or magnitude spectra data.\n * @param options - options\n * @returns noise level\n */\nexport function xNoiseSanPlot(array, options = {}) {\n    const { mask, cutOff, refine = true, magnitudeMode = false, scaleFactor = 1, factorStd = 5, fixOffset = true, } = options;\n    const input = prepareData(array, { scaleFactor, mask });\n    if (fixOffset && !magnitudeMode) {\n        const medianIndex = Math.floor(input.length / 2);\n        const median = input.length % 2 === 0\n            ? 0.5 * (input[medianIndex - 1] + input[medianIndex])\n            : input[medianIndex];\n        for (let i = 0; i < input.length; i++) {\n            input[i] -= median;\n        }\n    }\n    const firstNegativeValueIndex = input.at(-1) >= 0\n        ? input.length\n        : input.findIndex((e) => e < 0);\n    let lastPositiveValueIndex = firstNegativeValueIndex - 1;\n    for (let i = lastPositiveValueIndex; i >= 0; i--) {\n        if (input[i] > 0) {\n            lastPositiveValueIndex = i;\n            break;\n        }\n    }\n    const signPositive = input.slice(0, lastPositiveValueIndex + 1);\n    const signNegative = input.slice(firstNegativeValueIndex);\n    const cutOffDist = cutOff || determineCutOff(signPositive, { magnitudeMode });\n    const pIndex = Math.floor(signPositive.length * cutOffDist);\n    const initialNoiseLevelPositive = signPositive[pIndex];\n    const skyPoint = signPositive[0];\n    let initialNoiseLevelNegative;\n    if (signNegative.length > 0) {\n        const nIndex = Math.floor(signNegative.length * (1 - cutOffDist));\n        initialNoiseLevelNegative = -1 * signNegative[nIndex];\n    }\n    else {\n        initialNoiseLevelNegative = 0;\n    }\n    let noiseLevelPositive = initialNoiseLevelPositive;\n    let noiseLevelNegative = initialNoiseLevelNegative;\n    let cloneSignPositive = signPositive.slice();\n    let cloneSignNegative = signNegative.slice();\n    let cutOffSignalsIndexPlus = 0;\n    let cutOffSignalsIndexNeg = 2;\n    if (refine) {\n        let cutOffSignals = noiseLevelPositive * factorStd;\n        cutOffSignalsIndexPlus = signPositive.findIndex((e) => e < cutOffSignals);\n        if (cutOffSignalsIndexPlus > -1) {\n            cloneSignPositive = signPositive.slice(cutOffSignalsIndexPlus);\n            noiseLevelPositive =\n                cloneSignPositive[Math.floor(cloneSignPositive.length * cutOffDist)];\n        }\n        cutOffSignals = noiseLevelNegative * factorStd;\n        cutOffSignalsIndexNeg = signNegative.findIndex((e) => e < cutOffSignals);\n        if (cutOffSignalsIndexNeg > -1) {\n            cloneSignNegative = signNegative.slice(cutOffSignalsIndexNeg);\n            noiseLevelNegative =\n                cloneSignPositive[Math.floor(cloneSignNegative.length * (1 - cutOffDist))];\n        }\n    }\n    const correctionFactor = -simpleNormInvNumber(cutOffDist / 2, {\n        magnitudeMode,\n    });\n    let effectiveCutOffDist, refinedCorrectionFactor;\n    if (refine && cutOffSignalsIndexPlus > -1) {\n        effectiveCutOffDist =\n            (cutOffDist * cloneSignPositive.length + cutOffSignalsIndexPlus) /\n                (cloneSignPositive.length + cutOffSignalsIndexPlus);\n        refinedCorrectionFactor =\n            -1 * simpleNormInvNumber(effectiveCutOffDist / 2, { magnitudeMode });\n        noiseLevelPositive /= refinedCorrectionFactor;\n        if (cutOffSignalsIndexNeg > -1) {\n            effectiveCutOffDist =\n                (cutOffDist * cloneSignNegative.length + cutOffSignalsIndexNeg) /\n                    (cloneSignNegative.length + cutOffSignalsIndexNeg);\n            refinedCorrectionFactor =\n                -1 * simpleNormInvNumber(effectiveCutOffDist / 2, { magnitudeMode });\n            if (noiseLevelNegative !== 0) {\n                noiseLevelNegative /= refinedCorrectionFactor;\n            }\n        }\n    }\n    else {\n        noiseLevelPositive /= correctionFactor;\n        noiseLevelNegative /= correctionFactor;\n    }\n    return {\n        positive: noiseLevelPositive,\n        negative: noiseLevelNegative,\n        snr: skyPoint / noiseLevelPositive,\n        sanplot: generateSanPlot(input, {\n            fromTo: {\n                positive: { from: 0, to: lastPositiveValueIndex },\n                negative: { from: firstNegativeValueIndex, to: input.length },\n            },\n        }),\n    };\n}\n/**\n * Determines the optimal cut-off point for a given array of positive numbers.\n * @param signPositive - An array of positive numbers.\n * @param options - Optional parameters to configure the cut-off determination.\n * @param options.magnitudeMode - If true, uses magnitude mode for normalization. Default is false.\n * @param options.considerList - An object specifying the range and step for consideration.\n * @param options.considerList.from - The starting point of the range. Default is 0.5.\n * @param options.considerList.step - The step size for the range. Default is 0.1.\n * @param options.considerList.to - The ending point of the range. Default is 0.9.\n * @returns The optimal cut-off point as a number.\n */\nfunction determineCutOff(signPositive, options = {}) {\n    const { magnitudeMode = false, considerList = { from: 0.5, step: 0.1, to: 0.9 }, } = options;\n    //generate a list of values for\n    const cutOff = [];\n    const indexMax = signPositive.length - 1;\n    for (let i = 0.01; i <= 0.99; i += 0.01) {\n        const index = Math.round(indexMax * i);\n        const value = -signPositive[index] / simpleNormInvNumber(i / 2, { magnitudeMode });\n        cutOff.push([i, value]);\n    }\n    let minKi = Number.MAX_SAFE_INTEGER;\n    const { from, to, step } = considerList;\n    const delta = step / 2;\n    let whereToCutStat = 0.5;\n    for (let i = from; i <= to; i += step) {\n        const floor = i - delta;\n        const top = i + delta;\n        const elementsOfCutOff = cutOff.filter((e) => e[0] < top && e[0] > floor);\n        let averageValue = 0;\n        for (const element of elementsOfCutOff) {\n            averageValue += Math.abs(element[1]);\n        }\n        let kiSqrt = 0;\n        for (const element of elementsOfCutOff) {\n            kiSqrt += (element[1] - averageValue) ** 2;\n        }\n        if (kiSqrt < minKi) {\n            minKi = kiSqrt;\n            whereToCutStat = i;\n        }\n    }\n    return whereToCutStat;\n}\n/**\n * Generates a SAN plot from the given array based on the specified options.\n * @param array - The input array of numbers to be processed.\n * @param options - An optional object containing configuration options.\n * @param options.logBaseY - The logarithmic base for the Y-axis. Defaults to 2.\n * @param options.fromTo - An object specifying the range for each key. Each key maps to an object with `from` and `to` properties.\n * @returns An object where each key maps to a DataXY object containing the processed data.\n */\nfunction generateSanPlot(array, options = {}) {\n    const { fromTo, logBaseY = 2 } = options;\n    const sanplot = {};\n    for (const key in fromTo) {\n        const { from, to } = fromTo[key];\n        sanplot[key] =\n            from !== to\n                ? scale(array.slice(from, to), {\n                    logBaseY,\n                })\n                : { x: [], y: [] };\n        if (key === 'negative') {\n            sanplot[key].y.reverse();\n        }\n    }\n    return sanplot;\n}\n/**\n * Scales the input array based on the provided options.\n * @param array - The input array to be scaled.\n * @param options - An optional object containing scaling options.\n * @param options.logBaseY - If provided, the array values will be scaled using the logarithm of this base.\n * @returns An object containing the scaled x and y arrays.\n */\nfunction scale(array, options = {}) {\n    const { log10, abs } = Math;\n    const { logBaseY } = options;\n    if (logBaseY) {\n        array = array.slice(0);\n        const logOfBase = log10(logBaseY);\n        for (let i = 0; i < array.length; i++) {\n            array[i] = log10(abs(array[i])) / logOfBase;\n        }\n    }\n    const xAxis = createFromToArray({\n        from: 0,\n        to: array.length - 1,\n        length: array.length,\n    });\n    return { x: xAxis, y: array };\n}\n/**\n * Prepares and processes the input data array based on the provided options.\n * @param array - The input array of numbers to be processed.\n * @param options - An object containing the following properties:\n *   - scaleFactor: A number by which to scale each element of the array.\n *   - mask: An optional array of the same length as the input array, where\n *           elements corresponding to `true` values will be excluded from processing.\n * @param options.scaleFactor\n * @param options.mask\n * @returns A new Float64Array containing the processed data, scaled by the\n *          scaleFactor and sorted in descending order.\n */\nfunction prepareData(array, options) {\n    const { scaleFactor, mask } = options;\n    const input = xEnsureFloat64(isAnyArray(mask) && mask.length === array.length\n        ? array.filter((_e, i) => !mask[i])\n        : array);\n    if (scaleFactor > 1) {\n        for (let i = 0; i < input.length; i++) {\n            input[i] *= scaleFactor;\n        }\n    }\n    input.sort();\n    input.reverse();\n    return input;\n}\n//# sourceMappingURL=xNoiseSanPlot.js.map","import { xMedianAbsoluteDeviation } from \"./xMedianAbsoluteDeviation.js\";\n/**\n * Determine noise level using MAD https://en.wikipedia.org/wiki/Median_absolute_deviation\n * Constant to convert mad to sd calculated using https://www.wolframalpha.com/input?i=sqrt%282%29+inverse+erf%280.5%29\n * This assumes a gaussian distribution of the noise\n * @param array\n * @returns noise level corresponding to one standard deviation\n */\nexport function xNoiseStandardDeviation(array) {\n    const { mad, median } = xMedianAbsoluteDeviation(array);\n    return { sd: mad / 0.6744897501960817, mad, median };\n}\n//# sourceMappingURL=xNoiseStandardDeviation.js.map","import { xCheck } from \"./xCheck.js\";\nimport { xGetFromToIndex } from \"./xGetFromToIndex.js\";\n/**\n * Calculate the sum of the values\n * @param array - Object that contains property x (an ordered increasing array) and y (an array).\n * @param options - Options.\n * @returns XSum value on the specified range.\n */\nexport function xSum(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let sumValue = array[fromIndex];\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        sumValue += array[i];\n    }\n    return sumValue;\n}\n//# sourceMappingURL=xSum.js.map","import { getOutputArray } from \"./getOutputArray.js\";\nimport { xCheck } from \"./xCheck.js\";\nimport { xMaxValue } from \"./xMaxValue.js\";\nimport { xSum } from \"./xSum.js\";\n/**\n * Divides the data with either the sum, the absolute sum or the maximum of the data\n * @param input - Array containing values\n * @param options - options\n * @returns - normalized data\n */\nexport function xNormed(input, options = {}) {\n    const { algorithm = 'absolute', value = 1 } = options;\n    xCheck(input);\n    const output = getOutputArray(options.output, input.length);\n    if (input.length === 0) {\n        throw new Error('input must not be empty');\n    }\n    switch (algorithm) {\n        case 'absolute': {\n            const absoluteSumValue = absoluteSum(input) / value;\n            if (absoluteSumValue === 0) {\n                throw new Error('trying to divide by 0');\n            }\n            for (let i = 0; i < input.length; i++) {\n                output[i] = input[i] / absoluteSumValue;\n            }\n            return output;\n        }\n        case 'max': {\n            const currentMaxValue = xMaxValue(input);\n            if (currentMaxValue === 0) {\n                throw new Error('trying to divide by 0');\n            }\n            const factor = value / currentMaxValue;\n            for (let i = 0; i < input.length; i++) {\n                output[i] = input[i] * factor;\n            }\n            return output;\n        }\n        case 'sum': {\n            const sumFactor = xSum(input) / value;\n            if (sumFactor === 0) {\n                throw new Error('trying to divide by 0');\n            }\n            for (let i = 0; i < input.length; i++) {\n                output[i] = input[i] / sumFactor;\n            }\n            return output;\n        }\n        default:\n            throw new Error(`unknown algorithm: ${String(algorithm)}`);\n    }\n}\nfunction absoluteSum(input) {\n    let sumValue = 0;\n    for (const value of input) {\n        sumValue += Math.abs(value);\n    }\n    return sumValue;\n}\n//# sourceMappingURL=xNormed.js.map","import { xCheck } from \"./xCheck.js\";\nimport { xEnsureFloat64 } from \"./xEnsureFloat64.js\";\n/**\n * This function pads an array\n *s\n * @param array - the array that will be padded\n * @param options - options\n */\nexport function xPadding(array, options = {}) {\n    const { size = 0, value = 0, algorithm } = options;\n    xCheck(array);\n    if (!algorithm) {\n        return xEnsureFloat64(array);\n    }\n    const result = new Float64Array(array.length + size * 2);\n    for (let i = 0; i < array.length; i++) {\n        result[i + size] = array[i];\n    }\n    const fromEnd = size + array.length;\n    const toEnd = 2 * size + array.length;\n    switch (algorithm) {\n        case 'value':\n            for (let i = 0; i < size; i++) {\n                result[i] = value;\n            }\n            for (let i = fromEnd; i < toEnd; i++) {\n                result[i] = value;\n            }\n            break;\n        case 'duplicate':\n            for (let i = 0; i < size; i++) {\n                result[i] = array[0];\n            }\n            for (let i = fromEnd; i < toEnd; i++) {\n                result[i] = array.at(-1);\n            }\n            break;\n        case 'circular':\n            for (let i = 0; i < size; i++) {\n                result[i] =\n                    array[(array.length - (size % array.length) + i) % array.length];\n            }\n            for (let i = 0; i < size; i++) {\n                result[i + fromEnd] = array[i % array.length];\n            }\n            break;\n        default:\n            throw new Error(`unknown algorithm ${String(algorithm)}`);\n    }\n    return result;\n}\n//# sourceMappingURL=xPadding.js.map","import { xCheck } from \"./xCheck.js\";\nimport { xStandardDeviation } from \"./xStandardDeviation.js\";\n/**\n * Pareto scaling, which uses the square root of standard deviation as the scaling factor, circumvents the amplification of noise by retaining a small portion of magnitude information.\n * Noda, I. (2008). Scaling techniques to enhance two-dimensional correlation spectra. Journal of Molecular Structure, 883, 216-227.\n * DOI: 10.1016/j.molstruc.2007.12.026\n * @param array - array of number\n */\nexport function xParetoNormalization(array) {\n    xCheck(array);\n    const result = new Float64Array(array.length);\n    const sqrtSD = Math.sqrt(xStandardDeviation(array));\n    for (let i = 0; i < array.length; i++) {\n        result[i] = array[i] / sqrtSD;\n    }\n    return result;\n}\n//# sourceMappingURL=xParetoNormalization.js.map","import { getOutputArray } from \"./getOutputArray.js\";\nimport { xCheck } from \"./xCheck.js\";\nimport { xMaxValue } from \"./xMaxValue.js\";\nimport { xMinValue } from \"./xMinValue.js\";\n/**\n * Function used to rescale data\n * @param input - input for the rescale\n * @param options - options\n * @returns rescaled data\n */\nexport function xRescale(input, options = {}) {\n    xCheck(input);\n    const output = getOutputArray(options.output, input.length);\n    const currentMin = xMinValue(input);\n    const currentMax = xMaxValue(input);\n    if (currentMin === currentMax) {\n        throw new RangeError('minimum and maximum input values are equal. Cannot rescale a constant array');\n    }\n    const { min = 0, max = 1 } = options;\n    if (min >= max) {\n        throw new RangeError('min option must be smaller than max option');\n    }\n    const factor = (max - min) / (currentMax - currentMin);\n    for (let i = 0; i < input.length; i++) {\n        output[i] = (input[i] - currentMin) * factor + min;\n    }\n    return output;\n}\n//# sourceMappingURL=xRescale.js.map","import { xCheck } from \"./xCheck.js\";\nimport { xPadding } from \"./xPadding.js\";\n/**\n * This function calculates a rolling average\n * @param array - array\n * @param fct - callback function that from an array returns a value\n * @param options - options\n */\nexport function xRolling(array, fct, options = {}) {\n    xCheck(array);\n    if (typeof fct !== 'function') {\n        throw new TypeError('fct must be a function');\n    }\n    const { window = 5, padding = {} } = options;\n    const { size = window - 1, algorithm, value } = padding;\n    const padded = xPadding(array, { size, algorithm, value }); // ensure we get a copy and it is float64\n    const newArray = [];\n    for (let i = 0; i < padded.length - window + 1; i++) {\n        // we will send a view to the original buffer\n        newArray.push(fct(padded.subarray(i, i + window)));\n    }\n    return newArray;\n}\n//# sourceMappingURL=xRolling.js.map","import { xMean } from \"./xMean.js\";\nimport { xRolling } from \"./xRolling.js\";\n/**\n * This function calculates a rolling average\n * @param array - array\n * @param options - option\n */\nexport function xRollingAverage(array, options = {}) {\n    return xRolling(array, xMean, options);\n}\n//# sourceMappingURL=xRollingAverage.js.map","import { xMedian } from \"./xMedian.js\";\nimport { xRolling } from \"./xRolling.js\";\n/**\n * This function calculates a rolling average\n * @param array - array\n * @param options - options\n */\nexport function xRollingMedian(array, options = {}) {\n    return xRolling(array, xMedian, options);\n}\n//# sourceMappingURL=xRollingMedian.js.map","export function matrixCheck(data) {\n    if (data.length === 0 || data[0].length === 0) {\n        throw new RangeError('matrix must contain data');\n    }\n    const firstLength = data[0].length;\n    for (let i = 1; i < data.length; i++) {\n        if (data[i].length !== firstLength) {\n            throw new RangeError('all rows must has the same length');\n        }\n    }\n}\n//# sourceMappingURL=matrixCheck.js.map","import { matrixCheck } from \"./matrixCheck.js\";\n/**\n * Get min and max Z.\n * @param matrix - matrix [rows][cols].\n */\nexport function matrixMinMaxZ(matrix) {\n    matrixCheck(matrix);\n    const nbRows = matrix.length;\n    const nbColumns = matrix[0].length;\n    let min = matrix[0][0];\n    let max = matrix[0][0];\n    for (let column = 0; column < nbColumns; column++) {\n        for (let row = 0; row < nbRows; row++) {\n            if (matrix[row][column] < min)\n                min = matrix[row][column];\n            if (matrix[row][column] > max)\n                max = matrix[row][column];\n        }\n    }\n    return { min, max };\n}\n//# sourceMappingURL=matrixMinMaxZ.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Verify that `data` is an object of x,y arrays.\n * Throws an error if it's not.\n * @param data\n * @param options\n * @param options.minLength\n */\nexport function xyCheck(data, options = {}) {\n    const { minLength } = options;\n    if (data === null ||\n        typeof data !== 'object' ||\n        // @ts-expect-error Typechecking\n        !isAnyArray(data.x) ||\n        // @ts-expect-error Typechecking\n        !isAnyArray(data.y)) {\n        throw new Error('data must be an object of x and y arrays');\n    }\n    // @ts-expect-error Typechecking\n    if (data.x.length !== data.y.length) {\n        throw new Error('the x and y arrays must have the same length');\n    }\n    // @ts-expect-error Typechecking\n    if (minLength && data.x.length < minLength) {\n        throw new Error(`data.x must have a length of at least ${minLength}`);\n    }\n}\n//# sourceMappingURL=xyCheck.js.map","import { xIsMonotonic } from \"../x/index.js\";\nimport { xyCheck } from \"./xyCheck.js\";\n/**\n * Filters x,y values to allow strictly growing values in x-axis.\n * @param data - Object that contains property x (an ordered increasing array) and y (an array).\n */\nexport function xyEnsureGrowingX(data) {\n    xyCheck(data);\n    if (xIsMonotonic(data.x) === 1)\n        return data;\n    const x = Array.from(data.x);\n    const y = Array.from(data.y);\n    let prevX = Number.NEGATIVE_INFINITY;\n    let currentIndex = 0;\n    for (let index = 0; index < x.length; index++) {\n        if (prevX < x[index]) {\n            if (currentIndex < index) {\n                x[currentIndex] = x[index];\n                y[currentIndex] = y[index];\n            }\n            currentIndex++;\n            prevX = x[index];\n        }\n    }\n    x.length = currentIndex;\n    y.length = currentIndex;\n    return { x, y };\n}\n//# sourceMappingURL=xyEnsureGrowingX.js.map","/**\n * Normalize an array of zones:\n * - ensure than from < to\n * - merge overlapping zones\n * - deal with exclusions zones\n * - if no zones is specified add one between -Infinity and +Infinity\n * @param zones - array of zones\n * @param options - options\n * @returns array of zones\n */\nexport function zonesNormalize(zones = [], options = {}) {\n    const { exclusions = [] } = options;\n    let { from = Number.NEGATIVE_INFINITY, to = Number.POSITIVE_INFINITY } = options;\n    if (from > to)\n        [from, to] = [to, from];\n    zones = zones.map((zone) => zone.from > zone.to ? { from: zone.to, to: zone.from } : { ...zone });\n    zones.sort((a, b) => {\n        if (a.from !== b.from)\n            return a.from - b.from;\n        return a.to - b.to;\n    });\n    if (zones.length === 0) {\n        zones.push({ from, to });\n    }\n    for (const zone of zones) {\n        if (from > zone.from)\n            zone.from = from;\n        if (to < zone.to)\n            zone.to = to;\n    }\n    zones = zones.filter((zone) => zone.from <= zone.to);\n    if (zones.length === 0)\n        return [];\n    let currentZone = zones[0];\n    const beforeExclusionsZones = [currentZone];\n    for (let i = 1; i < zones.length; i++) {\n        const zone = zones[i];\n        if (zone.from <= currentZone.to) {\n            if (currentZone.to < zone.to) {\n                currentZone.to = zone.to;\n            }\n        }\n        else {\n            currentZone = zone;\n            beforeExclusionsZones.push(currentZone);\n        }\n    }\n    if (exclusions.length === 0)\n        return beforeExclusionsZones;\n    const normalizedExclusions = zonesNormalize(exclusions);\n    let currentExclusionIndex = 0;\n    const results = [];\n    for (let zoneIndex = 0; zoneIndex < beforeExclusionsZones.length; zoneIndex++) {\n        const zone = beforeExclusionsZones[zoneIndex];\n        if (currentExclusionIndex === normalizedExclusions.length) {\n            // we analysed all the exclusion zones\n            results.push(zone);\n            continue;\n        }\n        while (currentExclusionIndex < normalizedExclusions.length &&\n            normalizedExclusions[currentExclusionIndex].to <= zone.from) {\n            currentExclusionIndex++;\n        }\n        if (currentExclusionIndex === normalizedExclusions.length) {\n            // we analysed all the exclusion zones\n            results.push(zone);\n            continue;\n        }\n        if (zone.to < normalizedExclusions[currentExclusionIndex].from) {\n            // no problems, not yet in exclusion\n            results.push(zone);\n            continue;\n        }\n        if (normalizedExclusions[currentExclusionIndex].to >= zone.to) {\n            // could be totally excluded\n            if (normalizedExclusions[currentExclusionIndex].from <= zone.from) {\n                continue;\n            }\n            results.push({\n                from: normalizedExclusions[currentExclusionIndex].to,\n                to: zone.to,\n            });\n        }\n        // we cut in the middle, we need to create more zones, annoying !\n        if (normalizedExclusions[currentExclusionIndex].from > zone.from) {\n            results.push({\n                from: zone.from,\n                to: normalizedExclusions[currentExclusionIndex].from,\n            });\n        }\n        zone.from = normalizedExclusions[currentExclusionIndex].to;\n        zoneIndex--;\n    }\n    return results;\n}\n//# sourceMappingURL=zonesNormalize.js.map","import { zonesNormalize } from \"./zonesNormalize.js\";\n/**\n * Add the number of points per zone to reach a specified total\n * @param zones - array of zones\n * @param numberOfPoints - total number of points to distribute between zones\n * @param options - options\n * @returns array of zones with points\n */\nexport function zonesWithPoints(zones = [], \n/**\n * total number of points to distribute between zones\n * @default 10\n */\nnumberOfPoints = 10, options = {}) {\n    if (zones.length === 0)\n        return [];\n    const normalizedZones = zonesNormalize(zones, options);\n    const zonesWithNumberOfPoints = [];\n    const totalSize = normalizedZones.reduce((previous, current) => {\n        return previous + (current.to - current.from);\n    }, 0);\n    const unitsPerPoint = totalSize / numberOfPoints;\n    let currentTotal = 0;\n    for (let i = 0; i < normalizedZones.length - 1; i++) {\n        const tempZone = normalizedZones[i];\n        const tempZoneNumberOfPoints = Math.min(Math.round((tempZone.to - tempZone.from) / unitsPerPoint), numberOfPoints - currentTotal);\n        zonesWithNumberOfPoints.push({\n            ...tempZone,\n            numberOfPoints: tempZoneNumberOfPoints,\n        });\n        currentTotal += tempZoneNumberOfPoints;\n    }\n    zonesWithNumberOfPoints.push({\n        ...normalizedZones.at(-1),\n        numberOfPoints: numberOfPoints - currentTotal,\n    });\n    return zonesWithNumberOfPoints;\n}\n//# sourceMappingURL=zonesWithPoints.js.map","/**\n * Function that retrieves the getEquallySpacedData with the variant \"slot\".\n * @param x\n * @param y\n * @param from\n * @param to\n * @param numberOfPoints\n * @returns Array of y's equally spaced with the variant \"slot\"\n */\nexport default function equallySpacedSlot(\n/** x coordinates */\nx, \n/** y coordinates */\ny, \n/** from value */\nfrom, \n/** to value */\nto, \n/** number of points */\nnumberOfPoints) {\n    const xLength = x.length;\n    if (xLength < 2) {\n        return Float64Array.from(x);\n    }\n    const step = (to - from) / (numberOfPoints > 1 ? numberOfPoints - 1 : 1);\n    const halfStep = step / 2;\n    const lastStep = x.at(-1) - x.at(-2);\n    const start = from - halfStep;\n    // Changed Array to Float64Array\n    const output = new Float64Array(numberOfPoints);\n    // Init main variables\n    let min = start;\n    let max = start + step;\n    let previousX = -Number.MAX_VALUE;\n    let previousY = 0;\n    let nextX = x[0];\n    let nextY = y[0];\n    let frontOutsideSpectra = 0;\n    let backOutsideSpectra = true;\n    let currentValue = 0;\n    // for slot algorithm\n    let currentPoints = 0;\n    let i = 1; // index of input\n    let j = 0; // index of output\n    main: while (true) {\n        if (previousX >= nextX)\n            throw new Error('x must be a growing series');\n        while (previousX - max > 0) {\n            // no overlap with original point, just consume current value\n            if (backOutsideSpectra) {\n                currentPoints++;\n                backOutsideSpectra = false;\n            }\n            output[j] = currentPoints <= 0 ? 0 : currentValue / currentPoints;\n            j++;\n            if (j === numberOfPoints) {\n                break main;\n            }\n            min = max;\n            max += step;\n            currentValue = 0;\n            currentPoints = 0;\n        }\n        if (previousX > min) {\n            currentValue += previousY;\n            currentPoints++;\n        }\n        if (previousX === -Number.MAX_VALUE || frontOutsideSpectra > 1) {\n            currentPoints--;\n        }\n        previousX = nextX;\n        previousY = nextY;\n        if (i < xLength) {\n            nextX = x[i];\n            nextY = y[i];\n            i++;\n        }\n        else {\n            nextX += lastStep;\n            nextY = 0;\n            frontOutsideSpectra++;\n        }\n    }\n    return output;\n}\n//# sourceMappingURL=equallySpacedSlot.js.map","/**\n * Function that calculates the integral of the line between two\n * x-coordinates, given the slope and intercept of the line.\n * @param x0\n * @param x1\n * @param slope\n * @param intercept\n * @returns integral value.\n */\nexport default function integral(\n/** first coordinate of point */\nx0, \n/** second coordinate of point */\nx1, \n/** slope of the line */\nslope, \n/** intercept of the line on the y axis */\nintercept) {\n    return (0.5 * slope * x1 * x1 +\n        intercept * x1 -\n        (0.5 * slope * x0 * x0 + intercept * x0));\n}\n//# sourceMappingURL=integral.js.map","import integral from \"./integral.js\";\n/**\n * Function that retrieves the getEquallySpacedData with the variant \"smooth\".\n * @param x\n * @param y\n * @param from\n * @param to\n * @param numberOfPoints\n * @returns - Array of y's equally spaced with the variant \"smooth\"\n */\nexport default function equallySpacedSmooth(\n/** x coordinates */\nx, \n/** y coordinates */\ny, \n/** from value */\nfrom, \n/** to value */\nto, \n/** number of points */\nnumberOfPoints) {\n    const xLength = x.length;\n    const step = (to - from) / (numberOfPoints > 1 ? numberOfPoints - 1 : 1);\n    const halfStep = step / 2;\n    // Changed Array to Float64Array\n    const output = new Float64Array(numberOfPoints);\n    const initialOriginalStep = x[1] - x[0];\n    const lastOriginalStep = x[xLength - 1] - x[xLength - 2];\n    // Init main variables\n    let min = from - halfStep;\n    let max = from + halfStep;\n    let previousX = Number.MIN_SAFE_INTEGER;\n    let previousY = 0;\n    let nextX = x[0] - initialOriginalStep;\n    let nextY = 0;\n    let currentValue = 0;\n    let slope = 0;\n    let intercept = 0;\n    let sumAtMin = 0;\n    let sumAtMax = 0;\n    let i = 0; // index of input\n    let j = 0; // index of output\n    let add = 0;\n    main: while (true) {\n        if (previousX >= nextX)\n            throw new Error('x must be a growing series');\n        if (previousX <= min && min <= nextX) {\n            add = integral(0, min - previousX, slope, previousY);\n            sumAtMin = currentValue + add;\n        }\n        while (nextX - max >= 0) {\n            // no overlap with original point, just consume current value\n            add = integral(0, max - previousX, slope, previousY);\n            sumAtMax = currentValue + add;\n            output[j++] = (sumAtMax - sumAtMin) / step;\n            if (j === numberOfPoints) {\n                break main;\n            }\n            min = max;\n            max += step;\n            sumAtMin = sumAtMax;\n        }\n        currentValue += integral(previousX, nextX, slope, intercept);\n        previousX = nextX;\n        previousY = nextY;\n        if (i < xLength) {\n            nextX = x[i];\n            nextY = y[i];\n            i++;\n        }\n        else if (i === xLength) {\n            nextX += lastOriginalStep;\n            nextY = 0;\n        }\n        slope = getSlope(previousX, previousY, nextX, nextY);\n        intercept = -slope * previousX + previousY;\n    }\n    return output;\n}\nfunction getSlope(x0, y0, x1, y1) {\n    return (y1 - y0) / (x1 - x0);\n}\n//# sourceMappingURL=equallySpacedSmooth.js.map","import { createFromToArray } from \"../utils/index.js\";\nimport { zonesNormalize, zonesWithPoints } from \"../zones/index.js\";\nimport equallySpacedSlot from \"./utils/equallySpacedSlot.js\";\nimport equallySpacedSmooth from \"./utils/equallySpacedSmooth.js\";\nimport { xyCheck } from \"./xyCheck.js\";\n/**\n * Function that returns a Number array of equally spaced numberOfPoints\n * containing a representation of intensities of the spectra arguments x\n * and y.\n *\n * The options parameter contains an object in the following form:\n * from: starting point\n * to: last point\n * numberOfPoints: number of points between from and to\n * variant: \"slot\" or \"smooth\" - smooth is the default option\n *\n * The slot variant consist that each point in an array is calculated\n * averaging the existing points between the slot that belongs to the current\n * value. The smooth variant is the same but takes the integral of the range\n * of the slot and divide by the step size between two points in an array.\n *\n * If exclusions zone are present, zones are ignored !\n * @param data - object containing 2 properties x and y\n * @param options - options\n * @returns new object with x / y array with the equally spaced data.\n */\nexport function xyEquallySpaced(data, options = {}) {\n    const { x, y } = data;\n    const xLength = x.length;\n    const { from = x[0], to = x[xLength - 1], variant = 'smooth', numberOfPoints = 100, exclusions = [], zones = [{ from, to }], } = options;\n    if (from > to) {\n        throw new RangeError('from should be larger than to');\n    }\n    xyCheck(data);\n    if (numberOfPoints < 2) {\n        throw new RangeError(\"'numberOfPoints' option must be greater than 1\");\n    }\n    const normalizedZones = zonesNormalize(zones, { from, to, exclusions });\n    const zonesWithPointsRes = zonesWithPoints(normalizedZones, numberOfPoints, {\n        from,\n        to,\n    }).filter((zone) => zone.numberOfPoints);\n    let xResult = [];\n    let yResult = [];\n    for (const zone of zonesWithPointsRes) {\n        if (!zone.numberOfPoints) {\n            zone.numberOfPoints = 0;\n        }\n        const zoneResult = processZone(Array.from(x), Array.from(y), zone.from, zone.to, zone.numberOfPoints, variant);\n        xResult = xResult.concat(zoneResult.x);\n        yResult = yResult.concat(zoneResult.y);\n    }\n    return { x: xResult, y: yResult };\n}\nfunction processZone(x, y, from, to, numberOfPoints, variant) {\n    if (numberOfPoints < 1) {\n        throw new RangeError('the number of points must be at least 1');\n    }\n    const output = variant === 'slot'\n        ? Array.from(equallySpacedSlot(x, y, from, to, numberOfPoints))\n        : Array.from(equallySpacedSmooth(x, y, from, to, numberOfPoints));\n    return {\n        x: Array.from(createFromToArray({\n            from,\n            to,\n            length: numberOfPoints,\n        })),\n        y: output,\n    };\n}\n//# sourceMappingURL=xyEquallySpaced.js.map","import { zonesNormalize } from \"../zones/index.js\";\n/**\n * Filter an array x/y based on various criteria x points are expected to be sorted\n * @param data - object containing 2 properties x and y\n * @param options - options\n * @returns filtered array\n */\nexport function xyFilterX(data, options = {}) {\n    const { x, y } = data;\n    if (x.length === 0) {\n        return {\n            x: Array.from(x),\n            y: Array.from(y),\n        };\n    }\n    const { from = x[0], to = x.at(-1), zones = [{ from, to }], exclusions = [], } = options;\n    const normalizedZones = zonesNormalize(zones, { from, to, exclusions });\n    let currentZoneIndex = 0;\n    const newX = [];\n    const newY = [];\n    let position = 0;\n    while (position < x.length) {\n        if (x[position] <= normalizedZones[currentZoneIndex].to &&\n            x[position] >= normalizedZones[currentZoneIndex].from) {\n            newX.push(x[position]);\n            newY.push(y[position]);\n        }\n        else if (x[position] > normalizedZones[currentZoneIndex].to) {\n            currentZoneIndex++;\n            if (!normalizedZones[currentZoneIndex])\n                break;\n        }\n        position++;\n    }\n    return {\n        x: newX,\n        y: newY,\n    };\n}\n//# sourceMappingURL=xyFilterX.js.map","import { xyCheck } from \"./xyCheck.js\";\n/**\n * Filter out all the points for which x <= 0. Useful to display log scale data\n * @param data - data\n * @returns - An object with the filtered data\n */\nexport function xyFilterXPositive(data) {\n    xyCheck(data);\n    const { x, y } = data;\n    const newX = [];\n    const newY = [];\n    if (x === undefined || y === undefined) {\n        return { x: newX, y: newY };\n    }\n    for (let i = 0; i < x.length; i++) {\n        if (x[i] > 0) {\n            newX.push(x[i]);\n            newY.push(y[i]);\n        }\n    }\n    return { x: newX, y: newY };\n}\n//# sourceMappingURL=xyFilterXPositive.js.map","/**\n * Order object of array, x has to be monotone. Ensure x is growing\n * @param data - Object of kind {x:[], y:[]}.\n */\nexport function xyGrowingX(data) {\n    const { x, y } = data;\n    if (x.length !== y.length) {\n        throw new TypeError('length of x and y must be identical');\n    }\n    if (x.length < 2 || x[0] < x.at(-1))\n        return data;\n    return {\n        x: x.toReversed(),\n        y: y.toReversed(),\n    };\n}\n//# sourceMappingURL=xyGrowingX.js.map","import { xyCheck } from \"./xyCheck.js\";\n/**\n * Join x / y values when difference in X is closer than delta.\n * When joining, y values are summed and x values are weighted average\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - Options\n * @returns - An object with the xyIntegration function\n */\nexport function xyJoinX(data, options = {}) {\n    xyCheck(data);\n    const { delta = 1 } = options;\n    const deltaIsFunction = typeof delta === 'function';\n    const x = Array.from(data.x);\n    const y = Array.from(data.y);\n    if (x.length < 2) {\n        return { x, y };\n    }\n    let position = 0;\n    for (let i = 1; i < x.length; i++) {\n        const difference = x[i] - x[i - 1];\n        const currentDelta = deltaIsFunction ? delta((x[i] + x[i - 1]) / 2) : delta;\n        if (difference <= currentDelta) {\n            // we join\n            if (y[position] !== 0 || y[i] !== 0) {\n                x[position] =\n                    (x[position] * y[position] + x[i] * y[i]) / (y[position] + y[i]);\n                y[position] += y[i];\n            }\n        }\n        else {\n            position++;\n            x[position] = x[i];\n            y[position] = y[i];\n        }\n    }\n    x.length = position + 1;\n    y.length = position + 1;\n    return { x, y };\n}\n//# sourceMappingURL=xyJoinX.js.map","/**\n * GetSlots.\n * @param data - data.\n * @param options - Options.\n */\nexport function getSlots(data, options = {}) {\n    const { delta = 1 } = options;\n    const deltaIsFunction = typeof delta === 'function';\n    const possibleXs = Float64Array.from(data.flatMap((spectrum) => spectrum.x));\n    possibleXs.sort();\n    if (possibleXs.length === 0) {\n        throw new Error('can not process empty arrays');\n    }\n    let currentSlot = {\n        from: possibleXs[0],\n        to: possibleXs[0],\n        average: possibleXs[0],\n        sum: possibleXs[0],\n        number: 1,\n    };\n    const slots = [currentSlot];\n    for (let i = 1; i < possibleXs.length; i++) {\n        const currentDelta = deltaIsFunction ? delta(possibleXs[i]) : delta;\n        if (possibleXs[i] - currentSlot.to <= currentDelta) {\n            currentSlot.to = possibleXs[i];\n            currentSlot.number++;\n            currentSlot.sum += possibleXs[i];\n            currentSlot.average = currentSlot.sum / currentSlot.number;\n        }\n        else {\n            currentSlot = {\n                from: possibleXs[i],\n                to: possibleXs[i],\n                average: possibleXs[i],\n                sum: possibleXs[i],\n                number: 1,\n            };\n            slots.push(currentSlot);\n        }\n    }\n    return slots;\n}\n//# sourceMappingURL=getSlots.js.map","import { xyJoinX } from \"../xy/index.js\";\nimport { getSlots } from \"./utils/getSlots.js\";\n/**\n * Aligns data, can be used for spectra\n * @param data - data\n * @param options - Options\n */\nexport function xyArrayAlign(data, options = {}) {\n    const { delta = 1, requiredY = false } = options;\n    data = data.map((spectrum) => xyJoinX(spectrum, { delta }));\n    const slots = getSlots(data, { delta });\n    const x = Float64Array.from(slots.map((slot) => slot.average));\n    const ys = Array.from(data, () => new Float64Array(x.length));\n    const positions = new Uint32Array(data.length);\n    for (let i = 0; i < slots.length; i++) {\n        const slot = slots[i];\n        for (let j = 0; j < data.length; j++) {\n            const spectrum = data[j];\n            while (positions[j] < spectrum.x.length &&\n                spectrum.x[positions[j]] <= slot.to) {\n                ys[j][i] += spectrum.y[positions[j]];\n                positions[j]++;\n            }\n        }\n    }\n    if (requiredY)\n        return filterRequiredY(x, ys);\n    return { x, ys };\n}\nfunction filterRequiredY(x, ys) {\n    const newX = [];\n    const newYs = Array.from(ys, () => []);\n    for (let i = 0; i < x.length; i++) {\n        if (ys.every((y) => y[i] !== 0)) {\n            newX.push(x[i]);\n            for (let j = 0; j < ys.length; j++) {\n                newYs[j].push(ys[j][i]);\n            }\n        }\n    }\n    return { x: newX, ys: newYs };\n}\n//# sourceMappingURL=xyArrayAlign.js.map","export function addStyle(serie, spectrum, options = {}) {\n    let { color = '#A9A9A9' } = options;\n    const { opacity = 1, lineWidth = 1 } = options;\n    if (color.match(/#[\\da-f]{6}$/i)) {\n        color = (color + ((opacity * 255) >> 0).toString(16)).toUpperCase();\n    }\n    else {\n        color = color.replace(/rgb ?\\((.*)\\)/, `rgba($1,${opacity})`);\n    }\n    serie.style = [\n        {\n            name: 'unselected',\n            style: {\n                line: {\n                    color,\n                    width: lineWidth,\n                    dash: 1,\n                },\n            },\n        },\n        {\n            name: 'selected',\n            style: {\n                line: {\n                    color,\n                    width: lineWidth + 2,\n                    dash: 1,\n                },\n            },\n        },\n    ];\n    serie.name = spectrum.label || spectrum.id;\n}\n//# sourceMappingURL=addStyle.js.map","export const COLORS = [\n    '#FFB300',\n    '#803E75',\n    '#FF6800',\n    '#A6BDD7',\n    '#C10020',\n    '#CEA262',\n    '#817066',\n    '#007D34',\n    '#F6768E',\n    '#00538A',\n    '#FF7A5C',\n    '#53377A',\n    '#FF8E00',\n    '#B32851',\n    '#F4C800',\n    '#7F180D',\n    '#93AA00',\n    '#593315',\n    '#F13A13',\n    '#232C16',\n];\n//# sourceMappingURL=colors.js.map","import { xyFilterXPositive } from 'ml-spectra-processing';\nimport { addStyle } from './addStyle.js';\nimport { COLORS } from './colors.js';\n/**\n * Generate a jsgraph chart format from an array of Analysis\n * @param analyses\n * @param options\n */\nexport function getJSGraph(analyses, options = {}) {\n    const { colors = COLORS, opacities = [1], linesWidth = [1], selector = {}, normalization, xAxis = {}, yAxis = {}, } = options;\n    const series = [];\n    let xLabel = xAxis.label;\n    let yLabel = yAxis.label;\n    let xUnits = xAxis.units;\n    let yUnits = yAxis.units;\n    for (let i = 0; i < analyses.length; i++) {\n        const analysis = analyses[i];\n        const spectra = analysis.getNormalizedSpectra({\n            selector,\n            normalization,\n        });\n        if (spectra.length === 0)\n            continue;\n        const firstSpectrum = spectra[0];\n        // todo: if many spectra are available and not xUnits / yUnits are specified we should ensure that all the spectra are compatible\n        if (!xLabel)\n            xLabel = firstSpectrum.variables.x.label;\n        if (!yLabel)\n            yLabel = firstSpectrum.variables.y.label;\n        if (!xUnits)\n            xUnits = firstSpectrum.variables.x.units;\n        if (!yUnits)\n            yUnits = firstSpectrum.variables.y.units;\n        for (const spectrum of spectra) {\n            const serie = {};\n            addStyle(serie, analysis, {\n                color: colors[i % colors.length],\n                opacity: opacities[i % opacities.length],\n                lineWidth: linesWidth[i % linesWidth.length],\n            });\n            serie.data = {\n                x: spectrum.variables.x.data,\n                y: spectrum.variables.y.data,\n            };\n            serie.id = spectrum.id;\n            if (xAxis.logScale) {\n                serie.data = xyFilterXPositive(serie.data);\n            }\n            series.push(serie);\n        }\n    }\n    return {\n        axes: {\n            x: {\n                label: xLabel,\n                unit: xUnits,\n                unitWrapperBefore: '(',\n                unitWrapperAfter: ')',\n                flipped: false,\n                display: true,\n                ...xAxis,\n            },\n            y: {\n                label: yLabel,\n                unit: yUnits,\n                unitWrapperBefore: '(',\n                unitWrapperAfter: ')',\n                flipped: false,\n                display: true,\n                ...yAxis,\n            },\n        },\n        series,\n    };\n}\n//# sourceMappingURL=getJSGraph.js.map","const defaultBoundary = { y: { min: '0px', max: '2000px' } };\nexport function getNormalizationAnnotations(filter = {}, boundary = defaultBoundary) {\n    let { exclusions = [] } = filter;\n    let annotations = [];\n    exclusions = exclusions.filter((exclusion) => !exclusion.ignore);\n    annotations = exclusions.map((exclusion) => {\n        const annotation = {\n            type: 'rect',\n            position: [\n                { x: exclusion.from, y: boundary.y.min },\n                { x: exclusion.to, y: boundary.y.max },\n            ],\n            strokeWidth: 0,\n            fillColor: 'rgba(255,255,224,1)',\n        };\n        return annotation;\n    });\n    if (filter.from !== undefined) {\n        annotations.push({\n            type: 'rect',\n            position: [\n                { x: Number.MIN_SAFE_INTEGER, y: boundary.y.min },\n                { x: filter.from, y: boundary.y.max },\n            ],\n            strokeWidth: 0,\n            fillColor: 'rgba(255,255,224,1)',\n        });\n    }\n    if (filter.to !== undefined) {\n        annotations.push({\n            type: 'rect',\n            position: [\n                { x: filter.to, y: boundary.y.min },\n                { x: Number.MAX_SAFE_INTEGER, y: boundary.y.max },\n            ],\n            strokeWidth: 0,\n            fillColor: 'rgba(255,255,224,1)',\n        });\n    }\n    return annotations;\n}\n//# sourceMappingURL=getNormalizationAnnotations.js.map","// eslint-disable-next-line @typescript-eslint/unbound-method\nconst toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array, except those that contain bigint values).\n * @param value - Object to check.\n * @returns True if the object is an array or a typed array.\n */\nexport function isAnyArray(value) {\n    const tag = toString.call(value);\n    return tag.endsWith('Array]') && !tag.includes('Big');\n}\n//# sourceMappingURL=index.js.map","import { xMean } from 'ml-spectra-processing';\n/**\n * Center the mean\n * @param data\n */\nexport function centerMean(data) {\n    const { y } = data;\n    const mean = xMean(y);\n    for (let i = 0; i < y.length; i++) {\n        y[i] -= mean;\n    }\n    return { data };\n}\n//# sourceMappingURL=centerMean.js.map","import { xMedian } from 'ml-spectra-processing';\n/**\n * Center the median\n * @param data\n */\nexport function centerMedian(data) {\n    const { y } = data;\n    const median = xMedian(y);\n    for (let i = 0; i < y.length; i++) {\n        y[i] -= median;\n    }\n    return { data };\n}\n//# sourceMappingURL=centerMedian.js.map","import { xGetFromToIndex } from 'ml-spectra-processing';\n/**\n * Filter that allows to\n * @param data\n * @param options\n */\nexport function fromTo(data, options = {}) {\n    const { fromIndex, toIndex } = xGetFromToIndex(data.x, options);\n    return {\n        data: {\n            x: data.x.subarray(fromIndex, toIndex + 1),\n            y: data.y.subarray(fromIndex, toIndex + 1),\n        },\n    };\n}\n//# sourceMappingURL=fromTo.js.map","import { xNormed } from 'ml-spectra-processing';\n/**\n * Norm the Y values\n * @param data\n * @param options\n */\nexport function normed(data, options = {}) {\n    xNormed(data.y, { ...options, output: data.y });\n    return { data };\n}\n//# sourceMappingURL=normed.js.map","import { xStandardDeviation } from 'ml-spectra-processing';\n/**\n * Center the mean\n * @param data\n */\nexport function divideBySD(data) {\n    const { y } = data;\n    const sd = xStandardDeviation(y);\n    for (let i = 0; i < y.length; i++) {\n        y[i] /= sd;\n    }\n    return { data };\n}\n//# sourceMappingURL=divideBySD.js.map","import { xRescale } from 'ml-spectra-processing';\n/**\n * Center the mean\n * @param data\n * @param options\n */\nexport function rescale(data, options = {}) {\n    xRescale(data.y, { ...options, output: data.y });\n    return { data };\n}\n//# sourceMappingURL=rescale.js.map","import { xParetoNormalization } from 'ml-spectra-processing';\n/**\n * Filter that allows to\n * @param data\n */\nexport function paretoNormalization(data) {\n    return {\n        data: {\n            x: data.x,\n            y: xParetoNormalization(data.y),\n        },\n    };\n}\n//# sourceMappingURL=paretoNormalization.js.map","// Based on https://github.com/scijs/cholesky-solve\n/*\nThe MIT License (MIT)\n\nCopyright (c) 2013 Eric Arnebäck\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\nfunction ldlSymbolic(n, Ap, Ai, Lp, Parent, Lnz, Flag) {\n    let i, k, p, kk, p2;\n    for (k = 0; k < n; k++) {\n        /* L(k,:) pattern: all nodes reachable in etree from nz in A(0:k-1,k) */\n        Parent[k] = -1; /* parent of k is not yet known */\n        Flag[k] = k; /* mark node k as visited */\n        Lnz[k] = 0; /* count of nonzeros in column k of L */\n        kk = k; /* kth original, or permuted, column */\n        p2 = Ap[kk + 1];\n        for (p = Ap[kk]; p < p2; p++) {\n            /* A (i,k) is nonzero (original or permuted A) */\n            i = Ai[p];\n            if (i < k) {\n                /* follow path from i to root of etree, stop at flagged node */\n                for (; Flag[i] !== k; i = Parent[i]) {\n                    /* find parent of i if not yet determined */\n                    if (Parent[i] === -1)\n                        Parent[i] = k;\n                    Lnz[i]++; /* L (k,i) is nonzero */\n                    Flag[i] = k; /* mark i as visited */\n                }\n            }\n        }\n    }\n    /* construct Lp index array from Lnz column counts */\n    Lp[0] = 0;\n    for (k = 0; k < n; k++) {\n        Lp[k + 1] = Lp[k] + Lnz[k];\n    }\n}\nfunction ldlNumeric(n, Ap, Ai, Ax, Lp, Parent, Lnz, Li, Lx, D, Y, Pattern, Flag) {\n    let yi, lKi;\n    let i, k, p, kk, p2, len, top;\n    for (k = 0; k < n; k++) {\n        /* compute nonzero Pattern of kth row of L, in topological order */\n        Y[k] = 0; /* Y(0:k) is now all zero */\n        top = n; /* stack for pattern is empty */\n        Flag[k] = k; /* mark node k as visited */\n        Lnz[k] = 0; /* count of nonzeros in column k of L */\n        kk = k; /* kth original, or permuted, column */\n        p2 = Ap[kk + 1];\n        for (p = Ap[kk]; p < p2; p++) {\n            i = Ai[p]; /* get A(i,k) */\n            if (i <= k) {\n                Y[i] += Ax[p]; /* scatter A(i,k) into Y (sum duplicates) */\n                for (len = 0; Flag[i] !== k; i = Parent[i]) {\n                    Pattern[len++] = i; /* L(k,i) is nonzero */\n                    Flag[i] = k; /* mark i as visited */\n                }\n                while (len > 0)\n                    Pattern[--top] = Pattern[--len];\n            }\n        }\n        /* compute numerical values kth row of L (a sparse triangular solve) */\n        D[k] = Y[k]; /* get D(k,k) and clear Y(k) */\n        Y[k] = 0;\n        for (; top < n; top++) {\n            i = Pattern[top]; /* Pattern[top:n-1] is pattern of L(:,k) */\n            yi = Y[i]; /* get and clear Y(i) */\n            Y[i] = 0;\n            p2 = Lp[i] + Lnz[i];\n            for (p = Lp[i]; p < p2; p++) {\n                Y[Li[p]] -= Lx[p] * yi;\n            }\n            lKi = yi / D[i]; /* the nonzero entry L(k,i) */\n            D[k] -= lKi * yi;\n            Li[p] = k; /* store L(k,i) in column form of L */\n            Lx[p] = lKi;\n            Lnz[i]++; /* increment count of nonzeros in col i */\n        }\n        if (D[k] === 0)\n            return k; /* failure, D(k,k) is zero */\n    }\n    return n; /* success, diagonal of D is all nonzero */\n}\nfunction ldlLsolve(n, X, Lp, Li, Lx) {\n    let j, p, p2;\n    for (j = 0; j < n; j++) {\n        p2 = Lp[j + 1];\n        for (p = Lp[j]; p < p2; p++) {\n            X[Li[p]] -= Lx[p] * X[j];\n        }\n    }\n}\nfunction ldlDsolve(n, X, D) {\n    let j;\n    for (j = 0; j < n; j++) {\n        X[j] /= D[j];\n    }\n}\nfunction ldlLTsolve(n, X, Lp, Li, Lx) {\n    let j, p, p2;\n    for (j = n - 1; j >= 0; j--) {\n        p2 = Lp[j + 1];\n        for (p = Lp[j]; p < p2; p++) {\n            X[j] -= Lx[p] * X[Li[p]];\n        }\n    }\n}\nfunction ldlPerm(n, X, B, P) {\n    let j;\n    for (j = 0; j < n; j++) {\n        X[j] = B[P[j]];\n    }\n}\nfunction ldlPermt(n, X, B, P) {\n    let j;\n    for (j = 0; j < n; j++) {\n        X[P[j]] = B[j];\n    }\n}\n/**\n * Prepares a sparse matrix for Cholesky decomposition and returns a solver function.\n * @param M - Sparse matrix in triplet format (array of [row, col, value] entries).\n * @param n - Size of the matrix (n-by-n).\n * @param P - Optional permutation array of size n.\n * @returns A solver function that takes a right-hand side vector and returns the solution, or null if decomposition fails.\n */\nfunction prepare(M, n, P) {\n    // if a permutation was specified, apply it.\n    if (P) {\n        const Pinv = new Array(n);\n        for (let k = 0; k < n; k++) {\n            Pinv[P[k]] = k;\n        }\n        const Mt = []; // scratch memory\n        // Apply permutation. We make M into P*M*P^T\n        for (let a = 0; a < M.length; ++a) {\n            let ar = Pinv[M[a][0]];\n            let ac = Pinv[M[a][1]];\n            // we only store the upper-diagonal elements(since we assume matrix is symmetric, we only need to store these)\n            // if permuted element is below diagonal, we simply transpose it.\n            if (ac < ar) {\n                const t = ac;\n                ac = ar;\n                ar = t;\n            }\n            Mt[a] = [];\n            Mt[a][0] = ar;\n            Mt[a][1] = ac;\n            Mt[a][2] = M[a][2];\n        }\n        M = Mt; // copy scratch memory.\n    }\n    else {\n        // if P argument is null, we just use an identity permutation.\n        P = [];\n        for (let i = 0; i < n; ++i) {\n            P[i] = i;\n        }\n    }\n    // The sparse matrix we are decomposing is A.\n    // Now we shall create A from M.\n    const Ap = new Array(n + 1);\n    const Ai = new Array(M.length);\n    const Ax = new Array(M.length);\n    // count number of non-zero elements in columns.\n    const LNZ = [];\n    for (let i = 0; i < n; ++i) {\n        LNZ[i] = 0;\n    }\n    for (const entry of M) {\n        LNZ[entry[1]]++;\n    }\n    Ap[0] = 0;\n    for (let i = 0; i < n; ++i) {\n        Ap[i + 1] = Ap[i] + LNZ[i];\n    }\n    const coloffset = [];\n    for (let a = 0; a < n; ++a) {\n        coloffset[a] = 0;\n    }\n    // go through all elements in M, and add them to sparse matrix A.\n    for (const e of M) {\n        const col = e[1];\n        const adr = Ap[col] + coloffset[col];\n        Ai[adr] = e[0];\n        Ax[adr] = e[2];\n        coloffset[col]++;\n    }\n    const D = new Array(n);\n    const Y = new Array(n);\n    const Lp = new Array(n + 1);\n    const Parent = new Array(n);\n    const Lnz = new Array(n);\n    const Flag = new Array(n);\n    const Pattern = new Array(n);\n    const bp1 = new Array(n);\n    const x = new Array(n);\n    ldlSymbolic(n, Ap, Ai, Lp, Parent, Lnz, Flag);\n    const Lx = new Array(Lp[n]);\n    const Li = new Array(Lp[n]);\n    const d = ldlNumeric(n, Ap, Ai, Ax, Lp, Parent, Lnz, Li, Lx, D, Y, Pattern, Flag);\n    if (d === n) {\n        return (b) => {\n            ldlPerm(n, bp1, b, P);\n            ldlLsolve(n, bp1, Lp, Li, Lx);\n            ldlDsolve(n, bp1, D);\n            ldlLTsolve(n, bp1, Lp, Li, Lx);\n            ldlPermt(n, x, bp1, P);\n            return x;\n        };\n    }\n    else {\n        return null;\n    }\n}\nexport default prepare;\n//# sourceMappingURL=choleskySolver.js.map","'use strict'\n\nmodule.exports = cuthillMckee\n\nfunction compareNum(a, b) { return a - b }\n\nfunction cuthillMckee(list, n) {\n  var adj = new Array(n)\n  var visited = new Array(n)\n  for(var i=0; i<n; ++i) {\n    adj[i]     = []\n    visited[i] = false\n  }\n\n  for(var i=0; i<list.length; ++i) {\n    var l = list[i]\n    adj[l[0]].push(l[1])\n  }\n\n  var toVisit = new Array(n)\n  var eol = 0\n  var ptr = 0\n  for(var i=0; i<n; ++i) {\n    if(visited[i]) {\n      continue\n    }\n    toVisit[eol++] = i\n    visited[i] = true\n    while(ptr < eol) {\n      var v = toVisit[ptr++]\n      var nbhd = adj[v]\n      nbhd.sort(compareNum)\n      for(var j=0; j<nbhd.length; ++j) {\n        var u = nbhd[j]\n        if(visited[u]) {\n          continue\n        }\n        visited[u] = true\n        toVisit[eol++] = u\n      }\n    }\n  }\n\n  var result = new Array(n)\n  for(var i=0; i<n; ++i) {\n    result[toVisit[i]] = i\n  }\n\n  return result\n}\n","import cuthillMckee from 'cuthill-mckee';\n/**\n * Updates the system matrix with new weights and computes the weighted right-hand side vector.\n * @param matrix - The lower triangular non-zeros matrix in triplet format.\n * @param y - The original data vector.\n * @param weights - The weights vector.\n * @returns A tuple of the updated matrix and the weighted right-hand side vector.\n */\nexport function updateSystem(matrix, y, weights) {\n    const nbPoints = y.length;\n    const l = nbPoints - 1;\n    const newMatrix = new Array(matrix.length);\n    const newVector = new Float64Array(nbPoints);\n    for (let i = 0; i < l; i++) {\n        const w = weights[i];\n        const diag = i * 2;\n        const next = diag + 1;\n        newMatrix[diag] = matrix[diag].slice();\n        newMatrix[next] = matrix[next].slice();\n        if (w === 0) {\n            newVector[i] = 0;\n        }\n        else {\n            newVector[i] = y[i] * w;\n            newMatrix[diag][2] += w;\n        }\n    }\n    newVector[l] = y[l] * weights[l];\n    newMatrix[l * 2] = matrix[l * 2].slice();\n    newMatrix[l * 2][2] += weights[l];\n    return [newMatrix, newVector];\n}\n/**\n * Constructs the delta matrix and applies Cuthill-McKee permutation.\n * @param nbPoints - Number of data points.\n * @param lambda - Smoothing parameter.\n * @returns An object containing the lower triangular non-zeros matrix and the permutation array.\n */\nexport function getDeltaMatrix(nbPoints, lambda) {\n    const matrix = [];\n    const last = nbPoints - 1;\n    for (let i = 0; i < last; i++) {\n        matrix.push([i, i, lambda * 2], [i + 1, i, -1 * lambda]);\n    }\n    matrix[0][2] = lambda;\n    matrix.push([last, last, lambda]);\n    return {\n        lowerTriangularNonZeros: matrix,\n        permutationEncodedArray: cuthillMckee(matrix, nbPoints),\n    };\n}\n//# sourceMappingURL=utils.js.map","import { xAbsoluteSum, xFindClosestIndex, xMultiply, xNoiseSanPlot, } from 'ml-spectra-processing';\nimport cholesky from \"./choleskySolver.js\";\nimport { getDeltaMatrix, updateSystem } from \"./utils.js\";\n/**\n * Fit the baseline drift by iteratively changing weights of sum square error between the fitted baseline and original signals,\n * for further information about the parameters you can get the {@link https://github.com/zmzhang/airPLS/blob/main/airPLS_manuscript.pdf paper of airPLS}.\n * @param x - X axis data useful when control points or zones are submitted.\n * @param y - Original data.\n * @param options - Options object.\n * @returns An object containing the corrected data, baseline, iteration count, and error.\n */\nexport default function airPLS(x, y, options = {}) {\n    const { weights, controlPoints } = getControlPoints(x, y, options);\n    const { maxIterations = 100, lambda = 10, tolerance = 0.001 } = options;\n    let baseline = [];\n    let iteration;\n    let sumNegDifferences = Number.MAX_SAFE_INTEGER;\n    const corrected = Float64Array.from(y);\n    const stopCriterion = getStopCriterion(y, tolerance);\n    const { length } = y;\n    const { lowerTriangularNonZeros, permutationEncodedArray } = getDeltaMatrix(length, lambda);\n    let threshold = 1;\n    const l = length - 1;\n    let prevNegSum = Number.MAX_SAFE_INTEGER;\n    for (iteration = 0; iteration < maxIterations && Math.abs(sumNegDifferences) > stopCriterion; iteration++) {\n        const [leftHandSide, rightHandSide] = updateSystem(lowerTriangularNonZeros, y, weights);\n        const cho = cholesky(leftHandSide, length, permutationEncodedArray);\n        if (cho === null) {\n            throw new Error('Cholesky decomposition failed');\n        }\n        baseline = cho(rightHandSide);\n        sumNegDifferences = applyCorrection(y, baseline, corrected);\n        if (iteration === 1) {\n            const { positive } = xNoiseSanPlot(corrected);\n            threshold = positive;\n        }\n        else {\n            const absChange = Math.abs(prevNegSum / sumNegDifferences);\n            if (absChange < 1.01 && absChange > 0.99) {\n                break;\n            }\n        }\n        prevNegSum = sumNegDifferences + 0;\n        const absoluteSumNegatives = Math.abs(sumNegDifferences);\n        for (let i = 1; i < l; i++) {\n            const absDiff = Math.abs(corrected[i]);\n            const weight = Math.exp((-iteration * absDiff) / absoluteSumNegatives);\n            weights[i] =\n                controlPoints[i] < 1 && absDiff > threshold ? weight / 4 : weight;\n        }\n        weights[0] = 1;\n        weights[l] = 1;\n    }\n    return {\n        corrected,\n        baseline,\n        iteration,\n        error: sumNegDifferences,\n    };\n}\nfunction applyCorrection(y, baseline, corrected) {\n    let sumNegDifferences = 0;\n    for (let i = 0; i < y.length; i++) {\n        const diff = y[i] - baseline[i];\n        if (diff < 0)\n            sumNegDifferences += diff;\n        corrected[i] = diff;\n    }\n    return sumNegDifferences;\n}\nfunction getStopCriterion(y, tolerance) {\n    const sum = xAbsoluteSum(y);\n    return tolerance * sum;\n}\nfunction getControlPoints(x, y, options = {}) {\n    const { length } = x;\n    const { controlPoints = Int8Array.from({ length }).fill(0) } = options;\n    const { zones = [], weights = Float64Array.from({ length }).fill(0.5) } = options;\n    if (x.length !== y.length) {\n        throw new RangeError('Y should match the length with X');\n    }\n    else if (controlPoints.length !== x.length) {\n        throw new RangeError('controlPoints should match the length with X');\n    }\n    else if (weights.length !== x.length) {\n        throw new RangeError('weights should match the length with X');\n    }\n    for (const range of zones) {\n        let indexFrom = xFindClosestIndex(x, range.from);\n        let indexTo = xFindClosestIndex(x, range.to);\n        if (indexFrom > indexTo)\n            [indexFrom, indexTo] = [indexTo, indexFrom];\n        for (let i = indexFrom; i < indexTo; i++) {\n            controlPoints[i] = 1;\n        }\n    }\n    return {\n        weights: 'controlPoints' in options || zones.length > 0\n            ? xMultiply(weights, controlPoints)\n            : weights,\n        controlPoints,\n    };\n}\n//# sourceMappingURL=index.js.map","// eslint-disable-next-line @typescript-eslint/unbound-method\nconst toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array, except those that contain bigint values).\n *\n * @param value - Object to check.\n * @returns True if the object is an array or a typed array.\n */\nexport function isAnyArray(value) {\n    const tag = toString.call(value);\n    return tag.endsWith('Array]') && !tag.includes('Big');\n}\n//# sourceMappingURL=index.js.map","import { isAnyArray } from 'is-any-array';\n\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\n/**\n * Fill an array with sequential numbers\n * @param {Array<number>} [input] - optional destination array (if not provided a new array will be created)\n * @param {object} [options={}]\n * @param {number} [options.from=0] - first value in the array\n * @param {number} [options.to=10] - last value in the array\n * @param {number} [options.size=input.length] - size of the array (if not provided calculated from step)\n * @param {number} [options.step] - if not provided calculated from size\n * @return {Array<number>}\n */\n\nfunction sequentialFill() {\n  var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (_typeof(input) === 'object' && !isAnyArray(input)) {\n    options = input;\n    input = [];\n  }\n\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  var _options = options,\n      _options$from = _options.from,\n      from = _options$from === void 0 ? 0 : _options$from,\n      _options$to = _options.to,\n      to = _options$to === void 0 ? 10 : _options$to,\n      _options$size = _options.size,\n      size = _options$size === void 0 ? input.length : _options$size,\n      step = _options.step;\n\n  if (size !== 0 && step) {\n    throw new Error('step is defined by the array size');\n  }\n\n  if (!size) {\n    if (step) {\n      size = Math.floor((to - from) / step) + 1;\n    } else {\n      size = to - from + 1;\n    }\n  }\n\n  if (!step && size) {\n    step = (to - from) / (size - 1);\n  }\n\n  if (Array.isArray(input)) {\n    // only works with normal array\n    input.length = 0;\n\n    for (var i = 0; i < size; i++) {\n      input.push(from);\n      from += step;\n    }\n  } else {\n    if (input.length !== size) {\n      throw new Error('sequentialFill typed array must have the correct length');\n    }\n\n    for (var _i = 0; _i < size; _i++) {\n      input[_i] = from;\n      from += step;\n    }\n  }\n\n  return input;\n}\n\nexport { sequentialFill as default };\n","import airpls from 'ml-airpls';\nimport sequentialFill from 'ml-array-sequential-fill';\n/**\n * Adaptive iteratively reweighted penalized least squares [1]\n *\n * This function calls ml-airpls\n *\n * References:\n * [1] Zhang, Z.-M.; Chen, S.; Liang, Y.-Z.\n * Baseline Correction Using Adaptive Iteratively Reweighted Penalized Least Squares.\n * Analyst 2010, 135 (5), 1138–1146. https://doi.org/10.1039/B922045C.\n * @export\n * @param {Array<number>} ys\n * @param {object} [options] - Options object\n * @param {Array<number>} [options.x] Optional, Independent axis variable. If not specified, we use a linear grid\n * @param {object} [options.regression] - Options for the regression\n * @param {number} [options.regression.maxIterations = 100] - Maximum number of allowed iterations\n * @param {function} [options.regression.§Regression = PolynomialRegression] - Regression class with a predict method\n * @param {*} [options.regression.regressionOptions] - Options for regressionFunction\n * @param {number} [options.regression.tolerance = 0.001] - Convergence error tolerance\n * @returns {BaselineOutput}\n */\nexport function airPLSBaseline(ys, options = {}) {\n  const numberPoints = ys.length;\n  let { x, regressionOptions } = options;\n  if (!x) {\n    x = sequentialFill({ from: 0, to: numberPoints - 1, size: numberPoints });\n  }\n  let output = airpls(x, ys, regressionOptions);\n\n  return { baseline: output.baseline, correctedSpectrum: output.corrected };\n}\n","// eslint-disable-next-line @typescript-eslint/unbound-method\nconst toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array, except those that contain bigint values).\n *\n * @param value - Object to check.\n * @returns True if the object is an array or a typed array.\n */\nexport function isAnyArray(value) {\n    const tag = toString.call(value);\n    return tag.endsWith('Array]') && !tag.includes('Big');\n}\n//# sourceMappingURL=index.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Check that x and y are arrays with the same length.\n * @param x - first array\n * @param y - second array\n * @throws if x or y are not the same length, or if they are not arrays\n */\nexport function checkArrayLength(x, y) {\n    if (!isAnyArray(x) || !isAnyArray(y)) {\n        throw new TypeError('x and y must be arrays');\n    }\n    if (x.length !== y.length) {\n        throw new RangeError('x and y arrays must have the same length');\n    }\n}\n//# sourceMappingURL=checkArrayLength.js.map","import { isAnyArray } from 'is-any-array';\nimport { checkArrayLength } from './checkArrayLength';\nexport class BaseRegression {\n    constructor() {\n        if (new.target === BaseRegression) {\n            throw new Error('BaseRegression must be subclassed');\n        }\n    }\n    predict(x) {\n        if (typeof x === 'number') {\n            return this._predict(x);\n        }\n        else if (isAnyArray(x)) {\n            const y = [];\n            for (const xVal of x) {\n                y.push(this._predict(xVal));\n            }\n            return y;\n        }\n        else {\n            throw new TypeError('x must be a number or array');\n        }\n    }\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    _predict(x) {\n        throw new Error('_predict must be implemented');\n    }\n    train() {\n        // Do nothing for this package\n    }\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    toString(precision) {\n        return '';\n    }\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    toLaTeX(precision) {\n        return '';\n    }\n    /**\n     * Return the correlation coefficient of determination (r) and chi-square.\n     * @param x - explanatory variable\n     * @param y - response variable\n     * @return - Object with further statistics.\n     */\n    score(x, y) {\n        checkArrayLength(x, y);\n        const n = x.length;\n        const y2 = new Array(n);\n        for (let i = 0; i < n; i++) {\n            y2[i] = this._predict(x[i]);\n        }\n        let xSum = 0;\n        let ySum = 0;\n        let chi2 = 0;\n        let rmsd = 0;\n        let xSquared = 0;\n        let ySquared = 0;\n        let xY = 0;\n        for (let i = 0; i < n; i++) {\n            xSum += y2[i];\n            ySum += y[i];\n            xSquared += y2[i] * y2[i];\n            ySquared += y[i] * y[i];\n            xY += y2[i] * y[i];\n            if (y[i] !== 0) {\n                chi2 += ((y[i] - y2[i]) * (y[i] - y2[i])) / y[i];\n            }\n            rmsd += (y[i] - y2[i]) * (y[i] - y2[i]);\n        }\n        const r = (n * xY - xSum * ySum) /\n            Math.sqrt((n * xSquared - xSum * xSum) * (n * ySquared - ySum * ySum));\n        return {\n            r,\n            r2: r * r,\n            chi2,\n            rmsd: Math.sqrt(rmsd / n),\n        };\n    }\n}\n//# sourceMappingURL=BaseRegression.js.map","/**\n * Cast `number` to string. Optionally `digits` specifies significant figures.\n * @param number\n * @param figures\n * @returns - A string representation of `number`.\n */\nexport function maybeToPrecision(number, figures) {\n    if (number < 0) {\n        number = 0 - number;\n        if (typeof figures === 'number') {\n            return `- ${number.toPrecision(figures)}`;\n        }\n        else {\n            return `- ${number.toString()}`;\n        }\n    }\n    else if (typeof figures === 'number') {\n        return number.toPrecision(figures);\n    }\n    else {\n        return number.toString();\n    }\n}\n//# sourceMappingURL=maybeToPrecision.js.map","import { Matrix, MatrixTransposeView, solve } from 'ml-matrix';\nimport { BaseRegression, checkArrayLength, maybeToPrecision, } from 'ml-regression-base';\nexport class PolynomialRegression extends BaseRegression {\n    /**\n     * @param x - independent or explanatory variable\n     * @param y - dependent or response variable\n     * @param degree - degree of the polynomial regression, or array of powers to be used. When degree is an array, intercept at zero is forced to false/ignored.\n     * @example `new PolynomialRegression(x, y, 2)`, in this case, you can pass the option `interceptAtZero`, if you need it.\n     * @param options\n     * @example `new PolynomialRegression(x, y, [1, 3, 5])`\n     * Each of the degrees corresponds to a column, so if you have them switched, just do:\n     * @example `new PolynomialRegression(x, y, [3, 1, 5])`\n     * @param options.interceptAtZero - force the polynomial regression so that f(0) = 0\n     */\n    constructor(x, y, degree, options = {}) {\n        super();\n        // @ts-expect-error internal use only\n        if (x === true) {\n            // @ts-expect-error internal use only\n            this.degree = y.degree;\n            // @ts-expect-error internal use only\n            this.powers = y.powers;\n            // @ts-expect-error internal use only\n            this.coefficients = y.coefficients;\n        }\n        else {\n            checkArrayLength(x, y);\n            const result = regress(x, y, degree, options);\n            this.degree = result.degree;\n            this.powers = result.powers;\n            this.coefficients = result.coefficients;\n        }\n    }\n    _predict(x) {\n        let y = 0;\n        for (let k = 0; k < this.powers.length; k++) {\n            y += this.coefficients[k] * x ** this.powers[k];\n        }\n        return y;\n    }\n    toJSON() {\n        return {\n            name: 'polynomialRegression',\n            degree: this.degree,\n            powers: this.powers,\n            coefficients: this.coefficients,\n        };\n    }\n    toString(precision) {\n        return this._toFormula(precision, false);\n    }\n    toLaTeX(precision) {\n        return this._toFormula(precision, true);\n    }\n    _toFormula(precision, isLaTeX) {\n        let sup = '^';\n        let closeSup = '';\n        let times = ' * ';\n        if (isLaTeX) {\n            sup = '^{';\n            closeSup = '}';\n            times = '';\n        }\n        let fn = '';\n        let str = '';\n        for (let k = 0; k < this.coefficients.length; k++) {\n            str = '';\n            if (this.coefficients[k] !== 0) {\n                if (this.powers[k] === 0) {\n                    str = maybeToPrecision(this.coefficients[k], precision);\n                }\n                else if (this.powers[k] === 1) {\n                    str = `${maybeToPrecision(this.coefficients[k], precision) + times}x`;\n                }\n                else {\n                    str = `${maybeToPrecision(this.coefficients[k], precision) + times}x${sup}${this.powers[k]}${closeSup}`;\n                }\n                if (this.coefficients[k] > 0 && k !== this.coefficients.length - 1) {\n                    str = ` + ${str}`;\n                }\n                else if (k !== this.coefficients.length - 1) {\n                    str = ` ${str}`;\n                }\n            }\n            fn = str + fn;\n        }\n        if (fn.startsWith('+')) {\n            fn = fn.slice(1);\n        }\n        return `f(x) = ${fn}`;\n    }\n    static load(json) {\n        if (json.name !== 'polynomialRegression') {\n            throw new TypeError('not a polynomial regression model');\n        }\n        // @ts-expect-error internal use only\n        return new PolynomialRegression(true, json);\n    }\n}\n/**\n * Perform a polynomial regression on the given data set.\n * This is an internal function.\n * @param x - independent or explanatory variable\n * @param y - dependent or response variable\n * @param degree - degree of the polynomial regression\n * @param options.interceptAtZero - force the polynomial regression so that $f(0) = 0$\n * @param options\n */\nfunction regress(x, y, degree, options = {}) {\n    const n = x.length;\n    let { interceptAtZero = false } = options;\n    let powers = [];\n    if (Array.isArray(degree)) {\n        powers = degree;\n        interceptAtZero = false; //must be false in this case\n    }\n    else if (typeof degree === 'number') {\n        if (interceptAtZero) {\n            powers = new Array(degree);\n            for (let k = 0; k < degree; k++) {\n                powers[k] = k + 1;\n            }\n        }\n        else {\n            powers = new Array(degree + 1);\n            for (let k = 0; k <= degree; k++) {\n                powers[k] = k;\n            }\n        }\n    }\n    const nCoefficients = powers.length; //1 per power, in any case.\n    const F = new Matrix(n, nCoefficients);\n    const Y = new Matrix([y]);\n    for (let k = 0; k < nCoefficients; k++) {\n        for (let i = 0; i < n; i++) {\n            if (powers[k] === 0) {\n                F.set(i, k, 1);\n            }\n            else {\n                F.set(i, k, x[i] ** powers[k]);\n            }\n        }\n    }\n    const FT = new MatrixTransposeView(F);\n    const A = FT.mmul(F);\n    const B = FT.mmul(new MatrixTransposeView(Y));\n    return {\n        coefficients: solve(A, B).to1DArray(),\n        degree: Math.max(...powers),\n        powers,\n    };\n}\n//# sourceMappingURL=index.js.map","import { PolynomialRegression } from 'ml-regression-polynomial';\n\n/**\n * Iterative regression-based baseline correction\n * @param {Array<number>} x - Independent axis variable\n * @param {Array<number>} y - Dependent axis variable\n * @param {object} [options] - Options object\n * @param {number} [options.maxIterations = 100] - Maximum number of allowed iterations\n * @param {function} [options.Regression = PolynomialRegression] - Regression class with a predict method\n * @param {*} [options.regressionOptions] - Options for regressionFunction\n * @param {number} [options.tolerance = 0.001] - Convergence error tolerance\n * @return {{corrected: Array<number>, delta: number, iteration: number, baseline: Array<number>}}\n */\nexport function baselineCorrectionRegression(x, y, options = {}) {\n  let {\n    maxIterations = 100,\n    Regression = PolynomialRegression,\n    regressionOptions,\n    tolerance = 0.001,\n  } = options;\n\n  if (!regressionOptions && Regression === PolynomialRegression) {\n    regressionOptions = 3;\n  }\n\n  let baseline = y.slice();\n  let fitting = y.slice();\n  let oldFitting = y;\n  let iteration = 0;\n  let delta;\n  let regression;\n  while (iteration < maxIterations) {\n    // Calculate the fitting result\n    regression = new Regression(x, baseline, regressionOptions);\n\n    delta = 0;\n    for (let i = 0; i < baseline.length; i++) {\n      fitting[i] = regression.predict(x[i]);\n      if (baseline[i] > fitting[i]) {\n        baseline[i] = fitting[i];\n      }\n\n      delta += Math.abs((fitting[i] - oldFitting[i]) / oldFitting[i]);\n    }\n\n    // Stop criterion\n    if (delta < tolerance) {\n      break;\n    } else {\n      oldFitting = fitting.slice();\n      iteration++;\n    }\n  }\n\n  // removes baseline\n  let corrected = new Array(baseline.length);\n  for (let j = 0; j < baseline.length; j++) {\n    corrected[j] = y[j] - baseline[j];\n  }\n\n  return {\n    corrected,\n    delta,\n    iteration,\n    baseline,\n    regression,\n  };\n}\n","import sequentialFill from 'ml-array-sequential-fill';\nimport { baselineCorrectionRegression } from 'ml-baseline-correction-regression';\n\n/**\n * Iterative polynomial fitting [1]\n *\n * Implementation based on ml-baseline-correction-regression\n *\n * References:\n * [1] Gan, F.; Ruan, G.; Mo, J.\n * Baseline Correction by Improved Iterative Polynomial Fitting with Automatic Threshold.\n *  Chemometrics and Intelligent Laboratory Systems 2006, 82 (1), 59–65.\n * https://doi.org/10.1016/j.chemolab.2005.08.009.\n * @export\n * @param {Array<number>} ys\n * @param {object} [options] - Options object\n * @param {Array<number>} [options.x] Optional, Independent axis variable. If not specified, we use a linear grid\n * @param {Object} [options.regression]\n * @param {number} [options.regression.maxIterations = 100] - Maximum number of allowed iterations\n * @param {Object} [options.regression]\n * @param {function} [options.regression.Regression = PolynomialRegression] - Regression class with a predict method\n * @param {Object} [options.regression.regressionOptions] - Options for regressionFunction\n * @param {number} [options.regression.tolerance = 0.001] - Convergence error tolerance\n * @returns {BaselineOutput}\n */\nexport function iterativePolynomialBaseline(ys, options = {}) {\n  const numberPoints = ys.length;\n  let { x, regressionOptions } = options;\n  if (!x) {\n    x = sequentialFill({ from: 0, to: numberPoints - 1, size: numberPoints });\n  }\n\n  let output = baselineCorrectionRegression(x, ys, regressionOptions);\n\n  return { baseline: output.baseline, correctedSpectrum: output.corrected };\n}\n","import { xRollingAverage } from 'ml-spectra-processing';\n\n/**\n\n *\n * @export\n * @param {Array<number>} ys\n * @param {Object} [options={}]\n * @param {number} [options.window] rolling window size, defaults to 10% of the length of the spectrum\n * @param {string} [options.padding.size=window-1] none, value, circular, duplicate\n * @param {string} [options.padding.algorithm='duplicate'] none, value, circular, duplicate\n * @param {number} [options.padding.value=0] value to use for padding (if algorithm='value')\n * @returns {BaselineOutput}\n */\nexport function rollingAverageBaseline(ys, options = {}) {\n  let window = Math.max(Math.round(ys.length * 0.1), 2);\n  let defaults = {\n    window,\n    padding: {\n      size: window - 1,\n      algorithm: 'duplicate',\n      value: 0,\n    },\n  };\n  let actualOptions = { ...defaults, ...options };\n  let baseline = xRollingAverage(ys, actualOptions);\n  let corrected = new Float64Array(ys.length);\n  for (let i = 0; i < corrected.length; i++) {\n    corrected[i] = ys[i] - baseline[i];\n  }\n\n  return { baseline, correctedSpectrum: corrected };\n}\n","// eslint-disable-next-line @typescript-eslint/unbound-method\nconst toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array, except those that contain bigint values).\n *\n * @param value - Object to check.\n * @returns True if the object is an array or a typed array.\n */\nexport function isAnyArray(value) {\n    const tag = toString.call(value);\n    return tag.endsWith('Array]') && !tag.includes('Big');\n}\n//# sourceMappingURL=index.js.map","import { isAnyArray } from 'is-any-array';\nimport { xMean, xMaxValue, xMinValue } from 'ml-spectra-processing';\nexport function rollingBall(spectrum, options = {}) {\n    if (!isAnyArray(spectrum)) {\n        throw new Error('Spectrum must be an array');\n    }\n    if (spectrum.length === 0) {\n        throw new TypeError('Spectrum must not be empty');\n    }\n    const numberPoints = spectrum.length;\n    const maxima = new Float64Array(numberPoints);\n    const minima = new Float64Array(numberPoints);\n    const baseline = new Float64Array(numberPoints);\n    // windowM 4 percent of spectrum length\n    // windowS 8 percent of spectrum length\n    const { windowM = Math.round(numberPoints * 0.04), windowS = Math.round(numberPoints * 0.08), } = options;\n    // fi(1) in original paper\n    for (let i = 0; i < spectrum.length; i++) {\n        const windowLeft = Math.max(0, i - windowM);\n        const windowRight = Math.min(i + windowM + 1, spectrum.length);\n        minima[i] = xMinValue(spectrum, {\n            fromIndex: windowLeft,\n            toIndex: windowRight,\n        });\n    }\n    // fi in original paper\n    for (let i = 0; i < minima.length; i++) {\n        const windowLeft = Math.max(0, i - windowM);\n        const windowRight = Math.min(i + windowM + 1, minima.length);\n        maxima[i] = xMaxValue(minima, {\n            fromIndex: windowLeft,\n            toIndex: windowRight,\n        });\n    }\n    for (let i = 0; i < minima.length; i++) {\n        const windowLeft = Math.max(0, i - windowS);\n        const windowRight = Math.min(i + windowS + 1, maxima.length);\n        baseline[i] = xMean(maxima.subarray(windowLeft, windowRight));\n    }\n    return baseline;\n}\n//# sourceMappingURL=rollingBall.js.map","import { rollingBall } from 'ml-rolling-ball-baseline';\n\n/**\n * Rolling ball baseline correction algorithm.\n * From the abstract of (1):\n * \"This algorithm behaves equivalently to traditional polynomial backgrounds in simple spectra,\n * [...] and is considerably more robust for multiple overlapping peaks, rapidly varying background [...]\n *\n * The baseline is the trace one gets by rolling a ball below a spectrum. Algorithm has three steps:\n * Finding the minima in each window, find maxima among minima and then smooth over them by averaging.\n *\n * Algorithm described in (1), but in the implementation here the window width does not change.\n *\n * Reference:\n * (1) Kneen, M. A.; Annegarn, H. J.\n *     Algorithm for Fitting XRF, SEM and PIXE X-Ray Spectra Backgrounds.\n *     Nuclear Instruments and Methods in Physics Research Section B: Beam Interactions with Materials and Atoms 1996, 109–110, 209–213.\n *     https://doi.org/10.1016/0168-583X(95)00908-6.\n * (2) Kristian Hovde Liland, Bjørn-Helge Mevik, Roberto Canteri: baseline.\n *     https://cran.r-project.org/web/packages/baseline/index.html\n *\n * @export\n * @param {Array<number>} ys\n * @param {Object} [options={}]\n * @param {Number} [options.windowM] - width of local window for minimization/maximization, defaults to 4% of the spectrum length\n * @param {Number} [options.windowS] - width of local window for smoothing, defaults to 8% of the specturm length\n * @returns {BaselineOutput}\n */\nexport function rollingBallBaseline(ys, options = {}) {\n  const baseline = rollingBall(ys, options);\n  let corrected = new Float64Array(ys.length);\n  for (let i = 0; i < corrected.length; i++) {\n    corrected[i] = ys[i] - baseline[i];\n  }\n\n  return { baseline, correctedSpectrum: corrected };\n}\n","import { xRollingMedian } from 'ml-spectra-processing';\n\n/**\n\n *\n * @export\n * @param {Array<number>} ys\n * @param {Object} [options={}]\n * @param {number} [options.window] rolling window size, defaults to 10% of the length of the spectrum\n * @param {string} [options.padding.size=window-1] none, value, circular, duplicate\n * @param {string} [options.padding.algorithm='duplicate'] none, value, circular, duplicate\n * @param {number} [options.padding.value=0] value to use for padding (if algorithm='value')\n * @returns {BaselineOutput}\n */\nexport function rollingMedianBaseline(ys, options = {}) {\n  let window = Math.max(Math.round(ys.length * 0.1), 2);\n  let defaults = {\n    window,\n    padding: {\n      size: window - 1,\n      algorithm: 'duplicate',\n      value: 0,\n    },\n  };\n  let actualOptions = { ...defaults, ...options };\n  let baseline = xRollingMedian(ys, actualOptions);\n  let corrected = new Float64Array(ys.length);\n  for (let i = 0; i < corrected.length; i++) {\n    corrected[i] = ys[i] - baseline[i];\n  }\n\n  return { baseline, correctedSpectrum: corrected };\n}\n","//@ts-expect-error no type definition for baselines\nimport { airPLSBaseline as baselineFct } from 'baselines';\n/**\n * @param data\n */\nexport function airPLSBaseline(data) {\n    data.y = baselineFct(data.y).correctedSpectrum;\n    return { data };\n}\n//# sourceMappingURL=airPLSBaseline.js.map","//@ts-expect-error no type definition for baselines\nimport { iterativePolynomialBaseline as baselineFct } from 'baselines';\n/**\n * @param data\n */\nexport function iterativePolynomialBaseline(data) {\n    data.y = baselineFct(data.y).correctedSpectrum;\n    return { data };\n}\n//# sourceMappingURL=iterativePolynomialBaseline.js.map","//@ts-expect-error no type definition for baselines\nimport { rollingAverageBaseline as baselineFct } from 'baselines';\n/**\n * @param data\n */\nexport function rollingAverageBaseline(data) {\n    data.y = baselineFct(data.y).correctedSpectrum;\n    return { data };\n}\n//# sourceMappingURL=rollingAverageBaseline.js.map","//@ts-expect-error no type definition for baselines\nimport { rollingBallBaseline as baselineFct } from 'baselines';\n/**\n * @param data\n */\nexport function rollingBallBaseline(data) {\n    data.y = baselineFct(data.y).correctedSpectrum;\n    return { data };\n}\n//# sourceMappingURL=rollingBallBaseline.js.map","//@ts-expect-error no type definition for baselines\nimport { rollingMedianBaseline as baselineFct } from 'baselines';\n/**\n * @param data\n */\nexport function rollingMedianBaseline(data) {\n    data.y = baselineFct(data.y).correctedSpectrum;\n    return { data };\n}\n//# sourceMappingURL=rollingMedianBaseline.js.map","// eslint-disable-next-line @typescript-eslint/unbound-method\nconst toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array, except those that contain bigint values).\n *\n * @param value - Object to check.\n * @returns True if the object is an array or a typed array.\n */\nexport function isAnyArray(value) {\n    const tag = toString.call(value);\n    return tag.endsWith('Array]') && !tag.includes('Big');\n}\n//# sourceMappingURL=index.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Apply Savitzky Golay algorithm\n * @param [ys] Array of y values\n * @param [xs] Array of X or deltaX\n * @return  Array containing the new ys (same length)\n */\nexport function sgg(ys, xs, options = {}) {\n    const { windowSize = 9, derivative = 0, polynomial = 3 } = options;\n    if (windowSize % 2 === 0 || windowSize < 5 || !Number.isInteger(windowSize)) {\n        throw new RangeError('Invalid window size (should be odd and at least 5 integer number)');\n    }\n    if (!isAnyArray(ys)) {\n        throw new TypeError('Y values must be an array');\n    }\n    if (typeof xs === 'undefined') {\n        throw new TypeError('X must be defined');\n    }\n    if (windowSize > ys.length) {\n        throw new RangeError(`Window size is higher than the data length ${windowSize}>${ys.length}`);\n    }\n    if (derivative < 0 || !Number.isInteger(derivative)) {\n        throw new RangeError('Derivative should be a positive integer');\n    }\n    if (polynomial < 1 || !Number.isInteger(polynomial)) {\n        throw new RangeError('Polynomial should be a positive integer');\n    }\n    if (polynomial >= 6) {\n        // eslint-disable-next-line no-console\n        console.warn('You should not use polynomial grade higher than 5 if you are' +\n            ' not sure that your data arises from such a model. Possible polynomial oscillation problems');\n    }\n    const half = Math.floor(windowSize / 2);\n    const np = ys.length;\n    const ans = new Float64Array(np);\n    const weights = fullWeights(windowSize, polynomial, derivative);\n    let hs = 0;\n    let constantH = true;\n    if (isAnyArray(xs)) {\n        constantH = false;\n    }\n    else {\n        hs = xs ** derivative;\n    }\n    //For the borders\n    for (let i = 0; i < half; i++) {\n        const wg1 = weights[half - i - 1];\n        const wg2 = weights[half + i + 1];\n        let d1 = 0;\n        let d2 = 0;\n        for (let l = 0; l < windowSize; l++) {\n            d1 += wg1[l] * ys[l];\n            d2 += wg2[l] * ys[np - windowSize + l];\n        }\n        if (constantH) {\n            ans[half - i - 1] = d1 / hs;\n            ans[np - half + i] = d2 / hs;\n        }\n        else {\n            hs = getHs(xs, half - i - 1, half, derivative);\n            ans[half - i - 1] = d1 / hs;\n            hs = getHs(xs, np - half + i, half, derivative);\n            ans[np - half + i] = d2 / hs;\n        }\n    }\n    //For the internal points\n    const wg = weights[half];\n    for (let i = windowSize; i <= np; i++) {\n        let d = 0;\n        for (let l = 0; l < windowSize; l++)\n            d += wg[l] * ys[l + i - windowSize];\n        if (!constantH) {\n            hs = getHs(xs, i - half - 1, half, derivative);\n        }\n        ans[i - half - 1] = d / hs;\n    }\n    return ans;\n}\nfunction getHs(h, center, half, derivative) {\n    let hs = 0;\n    let count = 0;\n    for (let i = center - half; i < center + half; i++) {\n        if (i >= 0 && i < h.length - 1) {\n            hs += h[i + 1] - h[i];\n            count++;\n        }\n    }\n    return (hs / count) ** derivative;\n}\nfunction gramPoly(i, m, k, s) {\n    let Grampoly = 0;\n    if (k > 0) {\n        Grampoly =\n            ((4 * k - 2) / (k * (2 * m - k + 1))) *\n                (i * gramPoly(i, m, k - 1, s) + s * gramPoly(i, m, k - 1, s - 1)) -\n                (((k - 1) * (2 * m + k)) / (k * (2 * m - k + 1))) *\n                    gramPoly(i, m, k - 2, s);\n    }\n    else if (k === 0 && s === 0) {\n        Grampoly = 1;\n    }\n    else {\n        Grampoly = 0;\n    }\n    return Grampoly;\n}\nfunction genFact(a, b) {\n    let gf = 1;\n    if (a >= b) {\n        for (let j = a - b + 1; j <= a; j++) {\n            gf *= j;\n        }\n    }\n    return gf;\n}\nfunction weight(i, t, m, n, s) {\n    let sum = 0;\n    for (let k = 0; k <= n; k++) {\n        sum +=\n            (2 * k + 1) *\n                (genFact(2 * m, k) / genFact(2 * m + k + 1, k + 1)) *\n                gramPoly(i, m, k, 0) *\n                gramPoly(t, m, k, s);\n    }\n    return sum;\n}\n/**\n * @private\n * @param m  Number of points\n * @param n  Polynomial grade\n * @param s  Derivative\n */\nfunction fullWeights(m, n, s) {\n    const weights = new Array(m);\n    const np = Math.floor(m / 2);\n    for (let t = -np; t <= np; t++) {\n        weights[t + np] = new Float64Array(m);\n        for (let j = -np; j <= np; j++) {\n            weights[t + np][j + np] = weight(j, t, np, n, s);\n        }\n    }\n    return weights;\n}\n//# sourceMappingURL=index.js.map","import { sgg } from 'ml-savitzky-golay-generalized';\n/**\n * Calculate the first derivative using Savitzky–Golay filter.\n * @param data\n * @param options\n */\nexport function firstDerivative(data, options = {}) {\n    const { x, y } = data;\n    return { data: { x, y: sgg(y, x, { ...options, derivative: 1 }) } };\n}\n//# sourceMappingURL=firstDerivative.js.map","import { sgg } from 'ml-savitzky-golay-generalized';\n/**\n * Calculate the second derivative using Savitzky–Golay filter.\n * @param data\n * @param options\n */\nexport function secondDerivative(data, options = {}) {\n    const { x, y } = data;\n    return { data: { x, y: sgg(y, x, { ...options, derivative: 2 }) } };\n}\n//# sourceMappingURL=secondDerivative.js.map","import { sgg } from 'ml-savitzky-golay-generalized';\n/**\n * Calculate the third derivative using Savitzky–Golay filter.\n * @param data\n * @param options\n */\nexport function thirdDerivative(data, options = {}) {\n    const { x, y } = data;\n    return { data: { x, y: sgg(y, x, { ...options, derivative: 3 }) } };\n}\n//# sourceMappingURL=thirdDerivative.js.map","import { sgg } from 'ml-savitzky-golay-generalized';\n/**\n * Apply the Savitzky Golay Generalized Filter\n * @param data\n * @param options\n */\nexport function savitzkyGolay(data, options = {}) {\n    const { x, y } = data;\n    return { data: { x, y: sgg(y, x, options) } };\n}\n//# sourceMappingURL=savitzkyGolay.js.map","import { xyEnsureGrowingX } from 'ml-spectra-processing';\n/**\n * Ensure X values are strictly monotonic increasing\n * http://www-groups.mcs.st-andrews.ac.uk/~john/analysis/Lectures/L8.html\n * @param data\n */\nexport function ensureGrowing(data) {\n    return { data: xyEnsureGrowingX(data) };\n}\n//# sourceMappingURL=ensureGrowing.js.map","import { xyGrowingX } from 'ml-spectra-processing';\n/**\n * Ensure X values are strictly monotonic increasing\n * http://www-groups.mcs.st-andrews.ac.uk/~john/analysis/Lectures/L8.html\n * @param data\n */\nexport function reverseIfNeeded(data) {\n    return { data: xyGrowingX(data) };\n}\n//# sourceMappingURL=reverseIfNeeded.js.map","import { xyEquallySpaced } from 'ml-spectra-processing';\n/**\n * Filter that allows to\n * @param data\n * @param options\n */\nexport function equallySpaced(data, options = {}) {\n    return { data: xyEquallySpaced(data, options) };\n}\n//# sourceMappingURL=equallySpaced.js.map","import { xyFilterX } from 'ml-spectra-processing';\n/**\n * Filter that allows to\n * @param data\n * @param options\n */\nexport function filterX(data, options = {}) {\n    return {\n        data: xyFilterX(data, options),\n    };\n}\n//# sourceMappingURL=filterX.js.map","import { xAdd, xMaxValue } from 'ml-spectra-processing';\n/**\n * Filter that allows to\n * @param data\n * @param options\n */\nexport function setMaxX(data, options = {}) {\n    const { max = 1 } = options;\n    const existingMax = xMaxValue(data.x);\n    if (existingMax === max) {\n        return { data };\n    }\n    return {\n        data: {\n            x: xAdd(data.x, max - existingMax),\n            y: data.y,\n        },\n    };\n}\n//# sourceMappingURL=setMaxX.js.map","import { xAdd, xMinValue } from 'ml-spectra-processing';\n/**\n * Filter that allows to\n * @param data\n * @param options\n */\nexport function setMinX(data, options = {}) {\n    const { min = 0 } = options;\n    const existingMin = xMinValue(data.x);\n    if (existingMin === min) {\n        return { data };\n    }\n    return {\n        data: {\n            x: xAdd(data.x, min - existingMin),\n            y: data.y,\n        },\n    };\n}\n//# sourceMappingURL=setMinX.js.map","export function getMinMaxIntervalsDy(y, x, dY, dX) {\n    let lastMax = null;\n    let lastMin = null;\n    const intervalL = [];\n    const intervalR = [];\n    for (let i = 1; i < y.length - 1; ++i) {\n        if ((dY[i] < dY[i - 1] && dY[i] <= dY[i + 1]) ||\n            (dY[i] <= dY[i - 1] && dY[i] < dY[i + 1])) {\n            lastMin = {\n                x: x[i],\n                index: i,\n            };\n            if (dX > 0 && lastMax !== null) {\n                intervalL.push(lastMax);\n                intervalR.push(lastMin);\n            }\n        }\n        // Maximum in first derivative\n        if ((dY[i] >= dY[i - 1] && dY[i] > dY[i + 1]) ||\n            (dY[i] > dY[i - 1] && dY[i] >= dY[i + 1])) {\n            lastMax = {\n                x: x[i],\n                index: i,\n            };\n            if (dX < 0 && lastMin !== null) {\n                intervalL.push(lastMax);\n                intervalR.push(lastMin);\n            }\n        }\n    }\n    return { intervalL, intervalR };\n}\n//# sourceMappingURL=getMinMaxIntervals.js.map","export function tryMatchOneIntervalWithMinData(options) {\n    const { x, lastK, minData, yThreshold, intervalWidth, intervalCenter, yData, } = options;\n    let minDistance = Number.POSITIVE_INFINITY;\n    let possible = -1;\n    let newLastIndex = lastK;\n    for (let k = newLastIndex + 1; k < minData.length; k++) {\n        const centerIndex = minData[k];\n        if (yData[centerIndex] <= yThreshold) {\n            continue;\n        }\n        const deltaX = x[centerIndex];\n        const currentDistance = Math.abs(deltaX - intervalCenter);\n        if (currentDistance < intervalWidth) {\n            if (currentDistance < minDistance) {\n                possible = k;\n            }\n            newLastIndex = k;\n        }\n        if (currentDistance >= minDistance)\n            break;\n        minDistance = currentDistance;\n    }\n    return { lastIndex: newLastIndex, possible };\n}\n//# sourceMappingURL=tryMatchOneIntervalWithMinData.js.map","import { getMinMaxIntervalsDy } from \"./getMinMaxIntervals.js\";\nimport { tryMatchOneIntervalWithMinData } from \"./tryMatchOneIntervalWithMinData.js\";\nexport function autoAlgorithm(input) {\n    const { x, y, yData, dY, ddY, dX, yThreshold } = input;\n    const minddY = [];\n    const crossDy = [];\n    const { intervalL, intervalR } = getMinMaxIntervalsDy(y, x, dY, dX);\n    for (let i = 1; i < y.length - 1; ++i) {\n        if ((dY[i] < 0 && dY[i + 1] > 0) || (dY[i] > 0 && dY[i + 1] < 0)) {\n            // push the index of the element closer to zero\n            crossDy.push(Math.abs(dY[i]) < Math.abs(dY[i + 1]) ? i : i + 1);\n        }\n        // Handle exact zero\n        if (dY[i] === 0 &&\n            dY[i] < Math.abs(dY[i + 1]) &&\n            dY[i] < Math.abs(dY[i - 1])) {\n            crossDy.push(i);\n        }\n        // Minimum in second derivative\n        if (ddY[i] < ddY[i - 1] && ddY[i] < ddY[i + 1]) {\n            minddY.push(i);\n        }\n    }\n    const peaks = [];\n    let [lastK, lastJ] = [-1, -1];\n    for (let i = 0; i < intervalL.length; i++) {\n        const intervalWidth = (intervalR[i].x - intervalL[i].x) / 2;\n        const intervalCenter = (intervalR[i].x + intervalL[i].x) / 2;\n        let yIndex = -1;\n        let match = tryMatchOneIntervalWithMinData({\n            x,\n            yData,\n            lastK,\n            yThreshold,\n            intervalWidth,\n            intervalCenter,\n            minData: crossDy,\n        });\n        lastK = match.lastIndex;\n        if (match.possible !== -1) {\n            yIndex = crossDy[match.possible];\n        }\n        else {\n            match = tryMatchOneIntervalWithMinData({\n                x,\n                yData,\n                yThreshold,\n                lastK: lastJ,\n                intervalWidth,\n                intervalCenter,\n                minData: minddY,\n            });\n            if (match.possible !== -1) {\n                yIndex = minddY[match.possible];\n            }\n            lastJ = match.lastIndex;\n        }\n        if (yIndex !== -1) {\n            const width = Math.abs(intervalR[i].x - intervalL[i].x);\n            peaks.push({\n                id: crypto.randomUUID(),\n                x: x[yIndex],\n                y: y[yIndex],\n                width,\n                index: yIndex,\n                ddY: ddY[yIndex],\n                inflectionPoints: {\n                    from: intervalL[i],\n                    to: intervalR[i],\n                },\n            });\n        }\n    }\n    return peaks;\n}\n//# sourceMappingURL=autoAlgorithm.js.map","import { tryMatchOneIntervalWithMinData } from \"./tryMatchOneIntervalWithMinData.js\";\nexport function getPeakFromIntervals(options) {\n    let lastK = -1;\n    const peaks = [];\n    const { x, ddY, yData, yThreshold, intervalR, intervalL, minData } = options;\n    for (let i = 0; i < intervalL.length; i++) {\n        const intervalWidth = (intervalR[i].x - intervalL[i].x) / 2;\n        const intervalCenter = (intervalR[i].x + intervalL[i].x) / 2;\n        const { possible = -1, lastIndex } = tryMatchOneIntervalWithMinData({\n            x,\n            lastK,\n            minData,\n            yThreshold,\n            intervalWidth,\n            intervalCenter,\n            yData,\n        });\n        if (possible !== -1) {\n            const centerIndex = minData[possible];\n            const width = Math.abs(intervalR[i].x - intervalL[i].x);\n            peaks.push({\n                id: crypto.randomUUID(),\n                x: x[centerIndex],\n                y: yData[centerIndex],\n                width,\n                index: centerIndex,\n                ddY: ddY[centerIndex],\n                inflectionPoints: {\n                    from: intervalL[i],\n                    to: intervalR[i],\n                },\n            });\n        }\n        lastK = lastIndex;\n    }\n    return peaks;\n}\n//# sourceMappingURL=getPeaksFromIntervals.js.map","/**\n * Finds the indices where the first derivative crosses zero (sign change),\n * which are potential peak positions. This function does not detect zero-crossings\n * in regions with consecutive zero values in the derivative (flat regions).\n *\n * @param input - Object containing the y values and their first derivative (dY).\n * @returns Array of indices where the first derivative crosses zero (excluding consecutive zeros).\n */\nexport function xGetCrossZeroPoints(input) {\n    const { y, dY } = input;\n    const crossDy = [];\n    for (let i = 1; i < y.length - 1; ++i) {\n        if (isLessAndGreaterThanZero(dY[i], dY[i + 1])) {\n            // push the index of the element closer to zero\n            crossDy.push(Math.abs(dY[i]) < Math.abs(dY[i + 1]) ? i : i + 1);\n        }\n        else if (\n        // Handle exact zero\n        dY[i] === 0 &&\n            isLessAndGreaterThanZero(dY[i - 1], dY[i + 1])) {\n            crossDy.push(i);\n        }\n    }\n    return crossDy;\n}\nfunction isLessAndGreaterThanZero(back, next) {\n    return (back < 0 && next > 0) || (back > 0 && next < 0);\n}\n//# sourceMappingURL=xGetCrossZeroPoints.js.map","import { getMinMaxIntervalsDy } from \"./getMinMaxIntervals.js\";\nimport { getPeakFromIntervals } from \"./getPeaksFromIntervals.js\";\nimport { xGetCrossZeroPoints } from \"./xGetCrossZeroPoints.js\";\nexport function firstDerivative(input) {\n    const { y, x, dY, dX, yData, yThreshold, ddY } = input;\n    const crossDy = xGetCrossZeroPoints(input);\n    const { intervalL, intervalR } = getMinMaxIntervalsDy(y, x, dY, dX);\n    return getPeakFromIntervals({\n        minData: crossDy,\n        intervalL,\n        intervalR,\n        x,\n        yData,\n        yThreshold,\n        ddY,\n    });\n}\n//# sourceMappingURL=firstDerivative.js.map","import { getMinMaxIntervalsDy } from \"./getMinMaxIntervals.js\";\nimport { getPeakFromIntervals } from \"./getPeaksFromIntervals.js\";\nexport function secondDerivative(input) {\n    const { x, y, yData, dY, ddY, dX, yThreshold } = input;\n    const minddY = [];\n    const { intervalL, intervalR } = getMinMaxIntervalsDy(y, x, dY, dX);\n    // By the intermediate value theorem We cannot find 2 consecutive maximum or minimum\n    for (let i = 1; i < y.length - 1; ++i) {\n        // Minimum in second derivative\n        if (ddY[i] < ddY[i - 1] && ddY[i] < ddY[i + 1]) {\n            minddY.push(i);\n        }\n    }\n    return getPeakFromIntervals({\n        minData: minddY,\n        intervalL,\n        intervalR,\n        x,\n        yData,\n        yThreshold,\n        ddY,\n    });\n}\n//# sourceMappingURL=secondDerivative.js.map","/**\n * Correction of the x and y coordinates using a quadratic optimizations with the peak and its 3 closest neighbors to determine the true x,y values of the peak.\n * This process is done in place and is very fast.\n * @param data\n * @param peaks\n */\nexport function optimizeTop(data, peaks) {\n    const { x, y } = data;\n    for (const peak of peaks) {\n        let currentIndex = peak.index;\n        // The detected peak could be moved 1 or 2 units to left or right.\n        if (y[currentIndex - 1] >= y[currentIndex - 2] &&\n            y[currentIndex - 1] >= y[currentIndex]) {\n            currentIndex--;\n        }\n        else if (y[currentIndex + 1] >= y[currentIndex] &&\n            y[currentIndex + 1] >= y[currentIndex + 2]) {\n            currentIndex++;\n        }\n        else if (y[currentIndex - 2] >= y[currentIndex - 3] &&\n            y[currentIndex - 2] >= y[currentIndex - 1]) {\n            currentIndex -= 2;\n        }\n        else if (y[currentIndex + 2] >= y[currentIndex + 1] &&\n            y[currentIndex + 2] >= y[currentIndex + 3]) {\n            currentIndex += 2;\n        }\n        // interpolation to a sin() function\n        if (y[currentIndex - 1] > 0 &&\n            y[currentIndex + 1] > 0 &&\n            y[currentIndex] >= y[currentIndex - 1] &&\n            y[currentIndex] >= y[currentIndex + 1] &&\n            (y[currentIndex] !== y[currentIndex - 1] ||\n                y[currentIndex] !== y[currentIndex + 1])) {\n            const alpha = 20 * Math.log10(y[currentIndex - 1]);\n            const beta = 20 * Math.log10(y[currentIndex]);\n            const gamma = 20 * Math.log10(y[currentIndex + 1]);\n            const p = (0.5 * (alpha - gamma)) / (alpha - 2 * beta + gamma);\n            const xCurrent = x[currentIndex];\n            const xPrevious = x[currentIndex - 1];\n            peak.x = xCurrent + (xCurrent - xPrevious) * p;\n            peak.y =\n                y[currentIndex] -\n                    0.25 * (y[currentIndex - 1] - y[currentIndex + 1]) * p;\n        }\n    }\n}\n//# sourceMappingURL=optimizeTop.js.map","import { sgg } from 'ml-savitzky-golay-generalized';\nimport { xIsEquallySpaced, xIsMonotonic, xMinMaxValues, xNoiseStandardDeviation, } from 'ml-spectra-processing';\nimport { autoAlgorithm } from \"./algorithms/autoAlgorithm.js\";\nimport { firstDerivative } from \"./algorithms/firstDerivative.js\";\nimport { secondDerivative } from \"./algorithms/secondDerivative.js\";\nimport { optimizeTop } from \"./utils/optimizeTop.js\";\n/**\n * Global spectra deconvolution\n * @param  data - Object data with x and y arrays. Values in x has to be growing\n * @param options\n * @param {number} [options.broadRatio = 0.00] - If `broadRatio` is higher than 0, then all the peaks which second derivative\n * smaller than `broadRatio * maxAbsSecondDerivative` will be marked with the soft mask equal to true.\n */\nexport function gsd(data, options = {}) {\n    let { noiseLevel } = options;\n    const { sgOptions = {\n        windowSize: 9,\n        polynomial: 3,\n    }, smoothY = false, maxCriteria = true, minMaxRatio = 0.00025, realTopDetection = false, peakDetectionAlgorithm = 'second', } = options;\n    const { x } = data;\n    let { y } = data;\n    if (xIsMonotonic(x) !== 1) {\n        throw new Error('GSD only accepts monotone increasing x values');\n    }\n    //rescale;\n    y = y.slice();\n    // If the max difference between delta x is less than 5%, then,\n    // we can assume it to be equally spaced variable\n    const isEquallySpaced = xIsEquallySpaced(x);\n    if (noiseLevel === undefined) {\n        if (isEquallySpaced) {\n            const noiseInfo = xNoiseStandardDeviation(y);\n            if (maxCriteria) {\n                noiseLevel = noiseInfo.median + 1.5 * noiseInfo.sd;\n            }\n            else {\n                noiseLevel = -noiseInfo.median + 1.5 * noiseInfo.sd;\n            }\n        }\n        else {\n            noiseLevel = 0;\n        }\n    }\n    else if (!maxCriteria) {\n        noiseLevel *= -1;\n    }\n    if (!maxCriteria) {\n        for (let i = 0; i < y.length; i++) {\n            y[i] *= -1;\n        }\n    }\n    if (noiseLevel !== undefined) {\n        for (let i = 0; i < y.length; i++) {\n            if (y[i] < noiseLevel) {\n                y[i] = noiseLevel;\n            }\n        }\n    }\n    const xValue = isEquallySpaced ? x[1] - x[0] : x;\n    const yData = smoothY\n        ? sgg(y, xValue, {\n            ...sgOptions,\n            derivative: 0,\n        })\n        : y;\n    const { min: minY, max: maxY } = xMinMaxValues(yData);\n    if (minY > maxY || minY === maxY)\n        return [];\n    const dY = sgg(y, xValue, {\n        ...sgOptions,\n        derivative: 1,\n    });\n    const ddY = sgg(y, xValue, {\n        ...sgOptions,\n        derivative: 2,\n    });\n    const yThreshold = Math.max(noiseLevel, minY + (maxY - minY) * minMaxRatio);\n    const dX = x[1] - x[0];\n    const peakData = { x, y, yData, dY, ddY, dX, yThreshold };\n    let peaks = [];\n    if (peakDetectionAlgorithm === 'first') {\n        peaks = firstDerivative(peakData);\n    }\n    else if (peakDetectionAlgorithm === 'second') {\n        peaks = secondDerivative(peakData);\n    }\n    else {\n        peaks = autoAlgorithm(peakData);\n    }\n    if (realTopDetection) {\n        optimizeTop({ x, y: yData }, peaks);\n    }\n    peaks.forEach((peak) => {\n        if (!maxCriteria) {\n            peak.y *= -1;\n            peak.ddY = peak.ddY * -1;\n        }\n    });\n    peaks.sort((a, b) => {\n        return a.x - b.x;\n    });\n    return peaks;\n}\n//# sourceMappingURL=gsd.js.map","import { gsd } from 'ml-gsd';\nimport { xAdd, xFindClosestIndex, xMean } from 'ml-spectra-processing';\n/**\n * Filter that allows to calibrateX the x axis based on the presence of peaks\n * @param data\n * @param options\n */\nexport function calibrateX(data, options = {}) {\n    const { targetX = 0, nbPeaks = 1, from = data.x[0], to = data.x.at(-1), gsd: gsdOptions = {\n        minMaxRatio: 0.1,\n        realTopDetection: true,\n        smoothY: true,\n        sgOptions: {\n            windowSize: 7,\n            polynomial: 3,\n        },\n    }, } = options;\n    const fromIndex = xFindClosestIndex(data.x, from);\n    const toIndex = xFindClosestIndex(data.x, to);\n    let peaks = gsd({\n        x: data.x.subarray(fromIndex, toIndex),\n        y: data.y.subarray(fromIndex, toIndex),\n    }, gsdOptions);\n    peaks.sort((a, b) => b.y - a.y);\n    peaks = peaks.slice(0, nbPeaks);\n    if (peaks.length < nbPeaks)\n        return { data };\n    const middle = xMean(peaks.map((peak) => peak.x));\n    return { data: { x: xAdd(data.x, targetX - middle), y: data.y } };\n}\n//# sourceMappingURL=calibrateX.js.map","import { xApplyFunctionStr } from 'ml-spectra-processing';\n/**\n * Filter that allows to\n * @param data\n * @param options\n */\nexport function xFunction(data, options = {}) {\n    return {\n        data: {\n            x: xApplyFunctionStr(data.x, {\n                variableLabel: 'x',\n                fctString: options.function,\n            }),\n            y: data.y,\n        },\n    };\n}\n//# sourceMappingURL=xFunction.js.map","import { xApplyFunctionStr } from 'ml-spectra-processing';\n/**\n * Filter that allows to\n * @param data\n * @param options\n */\nexport function yFunction(data, options = {}) {\n    return {\n        data: {\n            x: data.x,\n            y: xApplyFunctionStr(data.y, {\n                variableLabel: 'y',\n                fctString: options.function,\n            }),\n        },\n    };\n}\n//# sourceMappingURL=yFunction.js.map","import { xAdd, xMaxValue } from 'ml-spectra-processing';\n/**\n * Filter that allows to\n * @param data\n * @param options\n */\nexport function setMaxY(data, options = {}) {\n    const { max = 1 } = options;\n    const existingMax = xMaxValue(data.y);\n    if (existingMax === max) {\n        return { data };\n    }\n    return {\n        data: {\n            x: data.x,\n            y: xAdd(data.y, max - existingMax),\n        },\n    };\n}\n//# sourceMappingURL=setMaxY.js.map","import { xAdd, xMinValue } from 'ml-spectra-processing';\n/**\n * Filter that allows to\n * @param data\n * @param options\n */\nexport function setMinY(data, options = {}) {\n    const { min = 0 } = options;\n    const existingMin = xMinValue(data.y);\n    if (existingMin === min) {\n        return { data };\n    }\n    return {\n        data: {\n            x: data.x,\n            y: xAdd(data.y, min - existingMin),\n        },\n    };\n}\n//# sourceMappingURL=setMinY.js.map","import { xEnsureFloat64, xyGrowingX } from 'ml-spectra-processing';\nimport * as Filters from \"./filters/filters.js\";\n/**\n * Apply filters on {x:[], y:[]}\n * @param data\n * @param filters\n * @returns\n */\nexport function filterXY(data, filters) {\n    let result = {\n        data: xyGrowingX({ x: xEnsureFloat64(data.x), y: xEnsureFloat64(data.y) }),\n    };\n    const logs = [];\n    for (const filter of filters) {\n        const start = Date.now();\n        if (!filter.name) {\n            // we ignore empty filter names\n            continue;\n        }\n        const filterFct = Filters[filter.name];\n        if (!filterFct) {\n            throw new Error(`Unknown filter: ${filter.name}`);\n        }\n        // @ts-expect-error some method have options and some other ones don't have any options\n        result = filterFct(result.data, filter.options);\n        result.data = xyGrowingX(result.data);\n        logs.push({\n            name: filter.name,\n            time: Date.now() - start,\n        });\n    }\n    return { logs, data: result.data };\n}\n//# sourceMappingURL=filterXY.js.map","import { filterXY } from 'ml-signal-processing';\nimport { xIsMonotonic, xMaxValue, xMinValue } from 'ml-spectra-processing';\nexport function getNormalizedSpectrum(spectrum, options = {}) {\n    const data = {\n        x: spectrum.variables.x.data,\n        y: spectrum.variables.y.data,\n    };\n    const newSpectrum = {\n        variables: {\n            x: {\n                data: spectrum.variables.x.data,\n                units: spectrum.variables.x.units,\n                label: spectrum.variables.x.label,\n            },\n            y: {\n                data: spectrum.variables.y.data,\n                units: spectrum.variables.y.units,\n                label: spectrum.variables.y.label,\n            },\n        },\n    };\n    if (spectrum.title)\n        newSpectrum.title = spectrum.title;\n    if (spectrum.dataType)\n        newSpectrum.dataType = spectrum.dataType;\n    if (spectrum.meta)\n        newSpectrum.meta = spectrum.meta;\n    if (spectrum.id)\n        newSpectrum.id = spectrum.id;\n    const { from = spectrum.variables.x.min, to = spectrum.variables.x.max, numberOfPoints, applyRangeSelectionFirst = false, exclusions = [], zones = [], } = options;\n    let { filters = [] } = options;\n    filters = structuredClone(filters);\n    if (numberOfPoints) {\n        if (applyRangeSelectionFirst) {\n            filters.unshift({\n                name: 'equallySpaced',\n                options: { from, to, exclusions, zones, numberOfPoints },\n            });\n        }\n        else {\n            filters.push({\n                name: 'equallySpaced',\n                options: { from, to, exclusions, zones, numberOfPoints },\n            });\n        }\n    }\n    else if (applyRangeSelectionFirst) {\n        filters.unshift({\n            name: 'filterX',\n            options: { from, to, exclusions, zones },\n        });\n    }\n    else {\n        filters.push({\n            name: 'filterX',\n            options: { from, to, exclusions, zones },\n        });\n    }\n    const { x, y } = filterXY(data, filters).data;\n    // filters change the y axis, we get rid of the units\n    // TODO we should deal correctly with this problem\n    if (filters.length > 1) {\n        newSpectrum.variables.y.units = '';\n        newSpectrum.variables.y.label = newSpectrum.variables.y.label?.replace(/\\s*\\[.*]/, '');\n    }\n    newSpectrum.variables.x.data = x;\n    newSpectrum.variables.x.min = xMinValue(x);\n    newSpectrum.variables.x.max = xMaxValue(x);\n    newSpectrum.variables.x.isMonotonic = xIsMonotonic(x);\n    newSpectrum.variables.y.data = y;\n    newSpectrum.variables.y.min = xMinValue(y);\n    newSpectrum.variables.y.max = xMaxValue(y);\n    newSpectrum.variables.y.isMonotonic = xIsMonotonic(y);\n    return newSpectrum;\n}\n//# sourceMappingURL=getNormalizedSpectrum.js.map","/*\nThe MIT License (MIT)\nCopyright © 2006-2007 Kevin C. Olbrich\nCopyright © 2010-2016 LIM SAS (http://lim.eu) - Julien Sanchez\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n*/\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Qty = factory());\n})(this, (function () { 'use strict';\n\n  /**\n   * Tests if a value is a string\n   *\n   * @param {*} value - Value to test\n   *\n   * @returns {boolean} true if value is a string, false otherwise\n   */\n  function isString(value) {\n    return typeof value === \"string\" || value instanceof String;\n  }\n\n  /*\n   * Prefer stricter Number.isFinite if currently supported.\n   * To be dropped when ES6 is finalized. Obsolete browsers will\n   * have to use ES6 polyfills.\n   */\n  var isFiniteImpl = Number.isFinite || window.isFinite;\n  /**\n   * Tests if a value is a number\n   *\n   * @param {*} value - Value to test\n   *\n   * @returns {boolean} true if value is a number, false otherwise\n   */\n  function isNumber(value) {\n    // Number.isFinite allows not to consider NaN or '1' as numbers\n    return isFiniteImpl(value);\n  }\n\n  /*\n   * Identity function\n   */\n  function identity(value) {\n    return value;\n  }\n\n  /**\n   * Returns unique strings from list\n   *\n   * @param {string[]} strings - array of strings\n   *\n   *\n   * @returns {string[]} a new array of strings without duplicates\n   */\n  function uniq(strings) {\n    var seen = {};\n    return strings.filter(function(item) {\n      return seen.hasOwnProperty(item) ? false : (seen[item] = true);\n    });\n  }\n\n  function compareArray(array1, array2) {\n    if (array2.length !== array1.length) {\n      return false;\n    }\n    for (var i = 0; i < array1.length; i++) {\n      if (array2[i].compareArray) {\n        if (!array2[i].compareArray(array1[i])) {\n          return false;\n        }\n      }\n      if (array2[i] !== array1[i]) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  function assign(target, properties) {\n    Object.keys(properties).forEach(function(key) {\n      target[key] = properties[key];\n    });\n  }\n\n  /**\n   * Safely multiplies numbers while avoiding floating errors\n   * like 0.1 * 0.1 => 0.010000000000000002\n   *\n   * @param {...number} numbers - numbers to multiply\n   *\n   * @returns {number} result\n   */\n  function mulSafe() {\n    var result = 1, decimals = 0;\n    for (var i = 0; i < arguments.length; i++) {\n      var arg = arguments[i];\n      decimals = decimals + getFractional(arg);\n      result *= arg;\n    }\n\n    return decimals !== 0 ? round(result, decimals) : result;\n  }\n\n  /**\n   * Safely divides two numbers while avoiding floating errors\n   * like 0.3 / 0.05 => 5.999999999999999\n   *\n   * @returns {number} result\n   * @param {number} num Numerator\n   * @param {number} den Denominator\n   */\n  function divSafe(num, den) {\n    if (den === 0) {\n      throw new Error(\"Divide by zero\");\n    }\n\n    var factor = Math.pow(10, getFractional(den));\n    var invDen = factor / (factor * den);\n\n    return mulSafe(num, invDen);\n  }\n\n  /**\n   * Rounds value at the specified number of decimals\n   *\n   * @param {number} val - value to round\n   * @param {number} decimals - number of decimals\n   *\n   * @returns {number} rounded number\n   */\n  function round(val, decimals) {\n    return Math.round(val * Math.pow(10, decimals)) / Math.pow(10, decimals);\n  }\n\n  function getFractional(num) {\n    // Check for NaNs or Infinities\n    if (!isFinite(num)) {\n      return 0;\n    }\n\n    // Faster than parsing strings\n    // http://jsperf.com/count-decimals/2\n    var count = 0;\n    while (num % 1 !== 0) {\n      num *= 10;\n      count++;\n    }\n    return count;\n  }\n\n  /**\n   * Custom error type definition\n   * @constructor\n   */\n  function QtyError() {\n    var err;\n    if (!this) { // Allows to instantiate QtyError without new()\n      err = Object.create(QtyError.prototype);\n      QtyError.apply(err, arguments);\n      return err;\n    }\n    err = Error.apply(this, arguments);\n    this.name = \"QtyError\";\n    this.message = err.message;\n    this.stack = err.stack;\n  }\n  QtyError.prototype = Object.create(Error.prototype, {constructor: { value: QtyError }});\n\n  /*\n   * Throws incompatible units error\n   * @param {string} left - units\n   * @param {string} right - units incompatible with first argument\n   * @throws \"Incompatible units\" error\n   */\n  function throwIncompatibleUnits(left, right) {\n    throw new QtyError(\"Incompatible units: \" + left + \" and \" + right);\n  }\n\n  var UNITS = {\n    /* prefixes */\n    \"<googol>\" : [[\"googol\"], 1e100, \"prefix\"],\n    \"<kibi>\"  :  [[\"Ki\",\"Kibi\",\"kibi\"], Math.pow(2,10), \"prefix\"],\n    \"<mebi>\"  :  [[\"Mi\",\"Mebi\",\"mebi\"], Math.pow(2,20), \"prefix\"],\n    \"<gibi>\"  :  [[\"Gi\",\"Gibi\",\"gibi\"], Math.pow(2,30), \"prefix\"],\n    \"<tebi>\"  :  [[\"Ti\",\"Tebi\",\"tebi\"], Math.pow(2,40), \"prefix\"],\n    \"<pebi>\"  :  [[\"Pi\",\"Pebi\",\"pebi\"], Math.pow(2,50), \"prefix\"],\n    \"<exi>\"   :  [[\"Ei\",\"Exi\",\"exi\"], Math.pow(2,60), \"prefix\"],\n    \"<zebi>\"  :  [[\"Zi\",\"Zebi\",\"zebi\"], Math.pow(2,70), \"prefix\"],\n    \"<yebi>\"  :  [[\"Yi\",\"Yebi\",\"yebi\"], Math.pow(2,80), \"prefix\"],\n    \"<yotta>\" :  [[\"Y\",\"Yotta\",\"yotta\"], 1e24, \"prefix\"],\n    \"<zetta>\" :  [[\"Z\",\"Zetta\",\"zetta\"], 1e21, \"prefix\"],\n    \"<exa>\"   :  [[\"E\",\"Exa\",\"exa\"], 1e18, \"prefix\"],\n    \"<peta>\"  :  [[\"P\",\"Peta\",\"peta\"], 1e15, \"prefix\"],\n    \"<tera>\"  :  [[\"T\",\"Tera\",\"tera\"], 1e12, \"prefix\"],\n    \"<giga>\"  :  [[\"G\",\"Giga\",\"giga\"], 1e9, \"prefix\"],\n    \"<mega>\"  :  [[\"M\",\"Mega\",\"mega\"], 1e6, \"prefix\"],\n    \"<kilo>\"  :  [[\"k\",\"kilo\"], 1e3, \"prefix\"],\n    \"<hecto>\" :  [[\"h\",\"Hecto\",\"hecto\"], 1e2, \"prefix\"],\n    \"<deca>\"  :  [[\"da\",\"Deca\",\"deca\",\"deka\"], 1e1, \"prefix\"],\n    \"<deci>\"  :  [[\"d\",\"Deci\",\"deci\"], 1e-1, \"prefix\"],\n    \"<centi>\"  : [[\"c\",\"Centi\",\"centi\"], 1e-2, \"prefix\"],\n    \"<milli>\" :  [[\"m\",\"Milli\",\"milli\"], 1e-3, \"prefix\"],\n    \"<micro>\"  : [\n      [\"u\",\"\\u03BC\"/*µ as greek letter*/,\"\\u00B5\"/*µ as micro sign*/,\"Micro\",\"mc\",\"micro\"],\n      1e-6,\n      \"prefix\"\n    ],\n    \"<nano>\"  :  [[\"n\",\"Nano\",\"nano\"], 1e-9, \"prefix\"],\n    \"<pico>\"  :  [[\"p\",\"Pico\",\"pico\"], 1e-12, \"prefix\"],\n    \"<femto>\" :  [[\"f\",\"Femto\",\"femto\"], 1e-15, \"prefix\"],\n    \"<atto>\"  :  [[\"a\",\"Atto\",\"atto\"], 1e-18, \"prefix\"],\n    \"<zepto>\" :  [[\"z\",\"Zepto\",\"zepto\"], 1e-21, \"prefix\"],\n    \"<yocto>\" :  [[\"y\",\"Yocto\",\"yocto\"], 1e-24, \"prefix\"],\n\n    \"<1>\"     :  [[\"1\", \"<1>\"], 1, \"\"],\n    /* length units */\n    \"<meter>\" :  [[\"m\",\"meter\",\"meters\",\"metre\",\"metres\"], 1.0, \"length\", [\"<meter>\"] ],\n    \"<inch>\"  :  [[\"in\",\"inch\",\"inches\",\"\\\"\"], 0.0254, \"length\", [\"<meter>\"]],\n    \"<foot>\"  :  [[\"ft\",\"foot\",\"feet\",\"'\"], 0.3048, \"length\", [\"<meter>\"]],\n    \"<yard>\"  :  [[\"yd\",\"yard\",\"yards\"], 0.9144, \"length\", [\"<meter>\"]],\n    \"<mile>\"  :  [[\"mi\",\"mile\",\"miles\"], 1609.344, \"length\", [\"<meter>\"]],\n    \"<naut-mile>\" : [[\"nmi\",\"naut-mile\"], 1852, \"length\", [\"<meter>\"]],\n    \"<league>\":  [[\"league\",\"leagues\"], 4828, \"length\", [\"<meter>\"]],\n    \"<furlong>\": [[\"furlong\",\"furlongs\"], 201.2, \"length\", [\"<meter>\"]],\n    \"<rod>\"   :  [[\"rd\",\"rod\",\"rods\"], 5.029, \"length\", [\"<meter>\"]],\n    \"<mil>\"   :  [[\"mil\",\"mils\"], 0.0000254, \"length\", [\"<meter>\"]],\n    \"<angstrom>\"  :[[\"ang\",\"angstrom\",\"angstroms\"], 1e-10, \"length\", [\"<meter>\"]],\n    \"<fathom>\" : [[\"fathom\",\"fathoms\"], 1.829, \"length\", [\"<meter>\"]],\n    \"<pica>\"  : [[\"pica\",\"picas\"], 0.00423333333, \"length\", [\"<meter>\"]],\n    \"<point>\" : [[\"pt\",\"point\",\"points\"], 0.000352777778, \"length\", [\"<meter>\"]],\n    \"<redshift>\" : [[\"z\",\"red-shift\", \"redshift\"], 1.302773e26, \"length\", [\"<meter>\"]],\n    \"<AU>\"    : [[\"AU\",\"astronomical-unit\"], 149597900000, \"length\", [\"<meter>\"]],\n    \"<light-second>\":[[\"ls\",\"light-second\"], 299792500, \"length\", [\"<meter>\"]],\n    \"<light-minute>\":[[\"lmin\",\"light-minute\"], 17987550000, \"length\", [\"<meter>\"]],\n    \"<light-year>\" : [[\"ly\",\"light-year\"], 9460528000000000, \"length\", [\"<meter>\"]],\n    \"<parsec>\"  : [[\"pc\",\"parsec\",\"parsecs\"], 30856780000000000, \"length\", [\"<meter>\"]],\n    \"<datamile>\"  :  [[\"DM\",\"datamile\"], 1828.8, \"length\", [\"<meter>\"]],\n\n    /* mass */\n    \"<kilogram>\" : [[\"kg\",\"kilogram\",\"kilograms\"], 1.0, \"mass\", [\"<kilogram>\"]],\n    \"<AMU>\" : [[\"u\",\"AMU\",\"amu\"], 1.660538921e-27, \"mass\", [\"<kilogram>\"]],\n    \"<dalton>\" : [[\"Da\",\"Dalton\",\"Daltons\",\"dalton\",\"daltons\"], 1.660538921e-27, \"mass\", [\"<kilogram>\"]],\n    \"<slug>\" : [[\"slug\",\"slugs\"], 14.5939029, \"mass\", [\"<kilogram>\"]],\n    \"<short-ton>\" : [[\"tn\",\"ton\",\"short-ton\"], 907.18474, \"mass\", [\"<kilogram>\"]],\n    \"<metric-ton>\":[[\"t\",\"tonne\",\"metric-ton\"], 1000, \"mass\", [\"<kilogram>\"]],\n    \"<carat>\" : [[\"ct\",\"carat\",\"carats\"], 0.0002, \"mass\", [\"<kilogram>\"]],\n    \"<pound>\" : [[\"lbs\",\"lb\",\"pound\",\"pounds\",\"#\"], 0.45359237, \"mass\", [\"<kilogram>\"]],\n    \"<ounce>\" : [[\"oz\",\"ounce\",\"ounces\"], 0.0283495231, \"mass\", [\"<kilogram>\"]],\n    \"<gram>\"    :  [[\"g\",\"gram\",\"grams\",\"gramme\",\"grammes\"], 1e-3, \"mass\", [\"<kilogram>\"]],\n    \"<grain>\" : [[\"grain\",\"grains\",\"gr\"], 6.479891e-5, \"mass\", [\"<kilogram>\"]],\n    \"<dram>\"  : [[\"dram\",\"drams\",\"dr\"], 0.0017718452, \"mass\",[\"<kilogram>\"]],\n    \"<stone>\" : [[\"stone\",\"stones\",\"st\"],6.35029318, \"mass\",[\"<kilogram>\"]],\n\n    /* area */\n    \"<hectare>\":[[\"hectare\"], 10000, \"area\", [\"<meter>\",\"<meter>\"]],\n    \"<acre>\":[[\"acre\",\"acres\"], 4046.85642, \"area\", [\"<meter>\",\"<meter>\"]],\n    \"<sqft>\":[[\"sqft\"], 1, \"area\", [\"<foot>\",\"<foot>\"]],\n\n    /* volume */\n    \"<liter>\" : [[\"l\",\"L\",\"liter\",\"liters\",\"litre\",\"litres\"], 0.001, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<gallon>\":  [[\"gal\",\"gallon\",\"gallons\"], 0.0037854118, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<gallon-imp>\":  [[\"galimp\",\"gallon-imp\",\"gallons-imp\"], 0.0045460900, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<quart>\":  [[\"qt\",\"quart\",\"quarts\"], 0.00094635295, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<pint>\":  [[\"pt\",\"pint\",\"pints\"], 0.000473176475, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<pint-imp>\":  [[\"ptimp\",\"pint-imp\",\"pints-imp\"], 5.6826125e-4, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<cup>\":  [[\"cu\",\"cup\",\"cups\"], 0.000236588238, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<fluid-ounce>\":  [[\"floz\",\"fluid-ounce\",\"fluid-ounces\"], 2.95735297e-5, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<fluid-ounce-imp>\":  [[\"flozimp\", \"floz-imp\",\"fluid-ounce-imp\",\"fluid-ounces-imp\"], 2.84130625e-5, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<tablespoon>\":  [[\"tb\",\"tbsp\",\"tbs\",\"tablespoon\",\"tablespoons\"], 1.47867648e-5, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<teaspoon>\":  [[\"tsp\",\"teaspoon\",\"teaspoons\"], 4.92892161e-6, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<bushel>\":  [[\"bu\",\"bsh\",\"bushel\",\"bushels\"], 0.035239072, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<oilbarrel>\":  [[\"bbl\",\"oilbarrel\", \"oilbarrels\", \"oil-barrel\",\"oil-barrels\"], 0.158987294928, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<beerbarrel>\":  [[\"bl\",\"bl-us\",\"beerbarrel\", \"beerbarrels\", \"beer-barrel\",\"beer-barrels\"], 0.1173477658, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<beerbarrel-imp>\":  [[\"blimp\",\"bl-imp\",\"beerbarrel-imp\", \"beerbarrels-imp\", \"beer-barrel-imp\",\"beer-barrels-imp\"], 0.16365924, \"volume\", [\"<meter>\",\"<meter>\",\"<meter>\"]],\n\n    /* speed */\n    \"<kph>\" : [[\"kph\"], 0.277777778, \"speed\", [\"<meter>\"], [\"<second>\"]],\n    \"<mph>\" : [[\"mph\"], 0.44704, \"speed\", [\"<meter>\"], [\"<second>\"]],\n    \"<knot>\" : [[\"kt\",\"kn\",\"kts\",\"knot\",\"knots\"], 0.514444444, \"speed\", [\"<meter>\"], [\"<second>\"]],\n    \"<fps>\"  : [[\"fps\"], 0.3048, \"speed\", [\"<meter>\"], [\"<second>\"]],\n\n    /* acceleration */\n    \"<gee>\" : [[\"gee\"], 9.80665, \"acceleration\", [\"<meter>\"], [\"<second>\",\"<second>\"]],\n    \"<Gal>\" : [[\"Gal\"], 1e-2, \"acceleration\", [\"<meter>\"], [\"<second>\",\"<second>\"]],\n\n    /* temperature_difference */\n    \"<kelvin>\" : [[\"degK\",\"kelvin\"], 1.0, \"temperature\", [\"<kelvin>\"]],\n    \"<celsius>\" : [[\"degC\",\"celsius\",\"celsius\",\"centigrade\"], 1.0, \"temperature\", [\"<kelvin>\"]],\n    \"<fahrenheit>\" : [[\"degF\",\"fahrenheit\"], 5 / 9, \"temperature\", [\"<kelvin>\"]],\n    \"<rankine>\" : [[\"degR\",\"rankine\"], 5 / 9, \"temperature\", [\"<kelvin>\"]],\n    \"<temp-K>\"  : [[\"tempK\",\"temp-K\"], 1.0, \"temperature\", [\"<temp-K>\"]],\n    \"<temp-C>\"  : [[\"tempC\",\"temp-C\"], 1.0, \"temperature\", [\"<temp-K>\"]],\n    \"<temp-F>\"  : [[\"tempF\",\"temp-F\"], 5 / 9, \"temperature\", [\"<temp-K>\"]],\n    \"<temp-R>\"  : [[\"tempR\",\"temp-R\"], 5 / 9, \"temperature\", [\"<temp-K>\"]],\n\n    /* time */\n    \"<second>\":  [[\"s\",\"sec\",\"secs\",\"second\",\"seconds\"], 1.0, \"time\", [\"<second>\"]],\n    \"<minute>\":  [[\"min\",\"mins\",\"minute\",\"minutes\"], 60.0, \"time\", [\"<second>\"]],\n    \"<hour>\":  [[\"h\",\"hr\",\"hrs\",\"hour\",\"hours\"], 3600.0, \"time\", [\"<second>\"]],\n    \"<day>\":  [[\"d\",\"day\",\"days\"], 3600 * 24, \"time\", [\"<second>\"]],\n    \"<week>\":  [[\"wk\",\"week\",\"weeks\"], 7 * 3600 * 24, \"time\", [\"<second>\"]],\n    \"<fortnight>\": [[\"fortnight\",\"fortnights\"], 1209600, \"time\", [\"<second>\"]],\n    \"<year>\":  [[\"y\",\"yr\",\"year\",\"years\",\"annum\"], 31556926, \"time\", [\"<second>\"]],\n    \"<decade>\":[[\"decade\",\"decades\"], 315569260, \"time\", [\"<second>\"]],\n    \"<century>\":[[\"century\",\"centuries\"], 3155692600, \"time\", [\"<second>\"]],\n\n    /* pressure */\n    \"<pascal>\" : [[\"Pa\",\"pascal\",\"Pascal\"], 1.0, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<bar>\" : [[\"bar\",\"bars\"], 100000, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<mmHg>\" : [[\"mmHg\"], 133.322368, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<inHg>\" : [[\"inHg\"], 3386.3881472, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<torr>\" : [[\"torr\"], 133.322368, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<atm>\" : [[\"atm\",\"ATM\",\"atmosphere\",\"atmospheres\"], 101325, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<psi>\" : [[\"psi\"], 6894.76, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<cmh2o>\" : [[\"cmH2O\",\"cmh2o\"], 98.0638, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n    \"<inh2o>\" : [[\"inH2O\",\"inh2o\"], 249.082052, \"pressure\", [\"<kilogram>\"],[\"<meter>\",\"<second>\",\"<second>\"]],\n\n    /* viscosity */\n    \"<poise>\"  : [[\"P\",\"poise\"], 0.1, \"viscosity\", [\"<kilogram>\"],[\"<meter>\",\"<second>\"] ],\n    \"<stokes>\" : [[\"St\",\"stokes\"], 1e-4, \"viscosity\", [\"<meter>\",\"<meter>\"], [\"<second>\"]],\n\n    /* substance */\n    \"<mole>\"  :  [[\"mol\",\"mole\"], 1.0, \"substance\", [\"<mole>\"]],\n\n    /* molar_concentration */\n    \"<molar>\" : [[\"M\",\"molar\"], 1000, \"molar_concentration\", [\"<mole>\"], [\"<meter>\",\"<meter>\",\"<meter>\"]],\n    \"<wtpercent>\"  : [[\"wt%\",\"wtpercent\"], 10, \"molar_concentration\", [\"<kilogram>\"], [\"<meter>\",\"<meter>\",\"<meter>\"]],\n\n    /* activity */\n    \"<katal>\" :  [[\"kat\",\"katal\",\"Katal\"], 1.0, \"activity\", [\"<mole>\"], [\"<second>\"]],\n    \"<unit>\"  :  [[\"U\",\"enzUnit\",\"unit\"], 16.667e-16, \"activity\", [\"<mole>\"], [\"<second>\"]],\n\n    /* capacitance */\n    \"<farad>\" :  [[\"F\",\"farad\",\"Farad\"], 1.0, \"capacitance\", [\"<second>\",\"<second>\",\"<second>\",\"<second>\",\"<ampere>\",\"<ampere>\"], [\"<meter>\", \"<meter>\", \"<kilogram>\"]],\n\n    /* charge */\n    \"<coulomb>\" :  [[\"C\",\"coulomb\",\"Coulomb\"], 1.0, \"charge\", [\"<ampere>\",\"<second>\"]],\n    \"<Ah>\" :  [[\"Ah\"], 3600, \"charge\", [\"<ampere>\",\"<second>\"]],\n\n    /* current */\n    \"<ampere>\"  :  [[\"A\",\"Ampere\",\"ampere\",\"amp\",\"amps\"], 1.0, \"current\", [\"<ampere>\"]],\n\n    /* conductance */\n    \"<siemens>\" : [[\"S\",\"Siemens\",\"siemens\"], 1.0, \"conductance\", [\"<second>\",\"<second>\",\"<second>\",\"<ampere>\",\"<ampere>\"], [\"<kilogram>\",\"<meter>\",\"<meter>\"]],\n\n    /* inductance */\n    \"<henry>\" :  [[\"H\",\"Henry\",\"henry\"], 1.0, \"inductance\", [\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\",\"<ampere>\",\"<ampere>\"]],\n\n    /* potential */\n    \"<volt>\"  :  [[\"V\",\"Volt\",\"volt\",\"volts\"], 1.0, \"potential\", [\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\",\"<second>\",\"<ampere>\"]],\n\n    /* resistance */\n    \"<ohm>\" :  [\n      [\"Ohm\",\"ohm\",\"\\u03A9\"/*Ω as greek letter*/,\"\\u2126\"/*Ω as ohm sign*/],\n      1.0,\n      \"resistance\",\n      [\"<meter>\",\"<meter>\",\"<kilogram>\"],[\"<second>\",\"<second>\",\"<second>\",\"<ampere>\",\"<ampere>\"]\n    ],\n    /* magnetism */\n    \"<weber>\" : [[\"Wb\",\"weber\",\"webers\"], 1.0, \"magnetism\", [\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\",\"<ampere>\"]],\n    \"<tesla>\"  : [[\"T\",\"tesla\",\"teslas\"], 1.0, \"magnetism\", [\"<kilogram>\"], [\"<second>\",\"<second>\",\"<ampere>\"]],\n    \"<gauss>\" : [[\"G\",\"gauss\"], 1e-4, \"magnetism\",  [\"<kilogram>\"], [\"<second>\",\"<second>\",\"<ampere>\"]],\n    \"<maxwell>\" : [[\"Mx\",\"maxwell\",\"maxwells\"], 1e-8, \"magnetism\", [\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\",\"<ampere>\"]],\n    \"<oersted>\"  : [[\"Oe\",\"oersted\",\"oersteds\"], 250.0 / Math.PI, \"magnetism\", [\"<ampere>\"], [\"<meter>\"]],\n\n    /* energy */\n    \"<joule>\" :  [[\"J\",\"joule\",\"Joule\",\"joules\",\"Joules\"], 1.0, \"energy\", [\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\"]],\n    \"<erg>\"   :  [[\"erg\",\"ergs\"], 1e-7, \"energy\", [\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\"]],\n    \"<btu>\"   :  [[\"BTU\",\"btu\",\"BTUs\"], 1055.056, \"energy\", [\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\"]],\n    \"<calorie>\" :  [[\"cal\",\"calorie\",\"calories\"], 4.18400, \"energy\",[\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\"]],\n    \"<Calorie>\" :  [[\"Cal\",\"Calorie\",\"Calories\"], 4184.00, \"energy\",[\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\"]],\n    \"<therm-US>\" : [[\"th\",\"therm\",\"therms\",\"Therm\",\"therm-US\"], 105480400, \"energy\",[\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\"]],\n    \"<Wh>\" : [[\"Wh\"], 3600, \"energy\",[\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\"]],\n    \"<electronvolt>\" : [[\"eV\", \"electronvolt\", \"electronvolts\"], 1.602176634E-19, \"energy\", [\"<meter>\",\"<meter>\",\"<kilogram>\"], [\"<second>\",\"<second>\"]],\n\n    /* force */\n    \"<newton>\"  : [[\"N\",\"Newton\",\"newton\"], 1.0, \"force\", [\"<kilogram>\",\"<meter>\"], [\"<second>\",\"<second>\"]],\n    \"<dyne>\"  : [[\"dyn\",\"dyne\"], 1e-5, \"force\", [\"<kilogram>\",\"<meter>\"], [\"<second>\",\"<second>\"]],\n    \"<pound-force>\"  : [[\"lbf\",\"pound-force\"], 4.448222, \"force\", [\"<kilogram>\",\"<meter>\"], [\"<second>\",\"<second>\"]],\n\n    /* frequency */\n    \"<hertz>\" : [[\"Hz\",\"hertz\",\"Hertz\"], 1.0, \"frequency\", [\"<1>\"], [\"<second>\"]],\n\n    /* angle */\n    \"<radian>\" :[[\"rad\",\"radian\",\"radians\"], 1.0, \"angle\", [\"<radian>\"]],\n    \"<degree>\" :[[\"deg\",\"degree\",\"degrees\"], Math.PI / 180.0, \"angle\", [\"<radian>\"]],\n    \"<arcminute>\" :[[\"arcmin\",\"arcminute\",\"arcminutes\"], Math.PI / 10800.0, \"angle\", [\"<radian>\"]],\n    \"<arcsecond>\" :[[\"arcsec\",\"arcsecond\",\"arcseconds\"], Math.PI / 648000.0, \"angle\", [\"<radian>\"]],\n    \"<gradian>\"   :[[\"gon\",\"grad\",\"gradian\",\"grads\"], Math.PI / 200.0, \"angle\", [\"<radian>\"]],\n    \"<steradian>\"  : [[\"sr\",\"steradian\",\"steradians\"], 1.0, \"solid_angle\", [\"<steradian>\"]],\n\n    /* rotation */\n    \"<rotation>\" : [[\"rotation\"], 2.0 * Math.PI, \"angle\", [\"<radian>\"]],\n    \"<rpm>\"   :[[\"rpm\"], 2.0 * Math.PI / 60.0, \"angular_velocity\", [\"<radian>\"], [\"<second>\"]],\n\n    /* information */\n    \"<byte>\"  :[[\"B\",\"byte\",\"bytes\"], 1.0, \"information\", [\"<byte>\"]],\n    \"<bit>\"  :[[\"b\",\"bit\",\"bits\"], 0.125, \"information\", [\"<byte>\"]],\n\n    /* information rate */\n    \"<Bps>\" : [[\"Bps\"], 1.0, \"information_rate\", [\"<byte>\"], [\"<second>\"]],\n    \"<bps>\" : [[\"bps\"], 0.125, \"information_rate\", [\"<byte>\"], [\"<second>\"]],\n\n    /* currency */\n    \"<dollar>\":[[\"USD\",\"dollar\"], 1.0, \"currency\", [\"<dollar>\"]],\n    \"<cents>\" :[[\"cents\"], 0.01, \"currency\", [\"<dollar>\"]],\n\n    /* luminosity */\n    \"<candela>\" : [[\"cd\",\"candela\"], 1.0, \"luminosity\", [\"<candela>\"]],\n    \"<lumen>\" : [[\"lm\",\"lumen\"], 1.0, \"luminous_power\", [\"<candela>\",\"<steradian>\"]],\n    \"<lux>\" :[[\"lux\"], 1.0, \"illuminance\", [\"<candela>\",\"<steradian>\"], [\"<meter>\",\"<meter>\"]],\n\n    /* power */\n    \"<watt>\"  : [[\"W\",\"watt\",\"watts\"], 1.0, \"power\", [\"<kilogram>\",\"<meter>\",\"<meter>\"], [\"<second>\",\"<second>\",\"<second>\"]],\n    \"<volt-ampere>\"  : [[\"VA\",\"volt-ampere\"], 1.0, \"power\", [\"<kilogram>\",\"<meter>\",\"<meter>\"], [\"<second>\",\"<second>\",\"<second>\"]],\n    \"<volt-ampere-reactive>\"  : [[\"var\",\"Var\",\"VAr\",\"VAR\",\"volt-ampere-reactive\"], 1.0, \"power\", [\"<kilogram>\",\"<meter>\",\"<meter>\"], [\"<second>\",\"<second>\",\"<second>\"]],\n    \"<horsepower>\"  :  [[\"hp\",\"horsepower\"], 745.699872, \"power\", [\"<kilogram>\",\"<meter>\",\"<meter>\"], [\"<second>\",\"<second>\",\"<second>\"]],\n\n    /* radiation */\n    \"<gray>\" : [[\"Gy\",\"gray\",\"grays\"], 1.0, \"radiation\", [\"<meter>\",\"<meter>\"], [\"<second>\",\"<second>\"]],\n    \"<roentgen>\" : [[\"R\",\"roentgen\"], 0.009330, \"radiation\", [\"<meter>\",\"<meter>\"], [\"<second>\",\"<second>\"]],\n    \"<sievert>\" : [[\"Sv\",\"sievert\",\"sieverts\"], 1.0, \"radiation\", [\"<meter>\",\"<meter>\"], [\"<second>\",\"<second>\"]],\n    \"<becquerel>\" : [[\"Bq\",\"becquerel\",\"becquerels\"], 1.0, \"radiation\", [\"<1>\"],[\"<second>\"]],\n    \"<curie>\" : [[\"Ci\",\"curie\",\"curies\"], 3.7e10, \"radiation\", [\"<1>\"],[\"<second>\"]],\n\n    /* rate */\n    \"<cpm>\" : [[\"cpm\"], 1.0 / 60.0, \"rate\", [\"<count>\"],[\"<second>\"]],\n    \"<dpm>\" : [[\"dpm\"], 1.0 / 60.0, \"rate\", [\"<count>\"],[\"<second>\"]],\n    \"<bpm>\" : [[\"bpm\"], 1.0 / 60.0, \"rate\", [\"<count>\"],[\"<second>\"]],\n\n    /* resolution / typography */\n    \"<dot>\" : [[\"dot\",\"dots\"], 1, \"resolution\", [\"<each>\"]],\n    \"<pixel>\" : [[\"pixel\",\"px\"], 1, \"resolution\", [\"<each>\"]],\n    \"<ppi>\" : [[\"ppi\"], 1, \"resolution\", [\"<pixel>\"], [\"<inch>\"]],\n    \"<dpi>\" : [[\"dpi\"], 1, \"typography\", [\"<dot>\"], [\"<inch>\"]],\n\n    /* other */\n    \"<cell>\" : [[\"cells\",\"cell\"], 1, \"counting\", [\"<each>\"]],\n    \"<each>\" : [[\"each\"], 1.0, \"counting\", [\"<each>\"]],\n    \"<count>\" : [[\"count\"], 1.0, \"counting\", [\"<each>\"]],\n    \"<base-pair>\"  : [[\"bp\",\"base-pair\"], 1.0, \"counting\", [\"<each>\"]],\n    \"<nucleotide>\" : [[\"nt\",\"nucleotide\"], 1.0, \"counting\", [\"<each>\"]],\n    \"<molecule>\" : [[\"molecule\",\"molecules\"], 1.0, \"counting\", [\"<1>\"]],\n    \"<dozen>\" :  [[\"doz\",\"dz\",\"dozen\"],12.0,\"prefix_only\", [\"<each>\"]],\n    \"<percent>\": [[\"%\",\"percent\"], 0.01, \"prefix_only\", [\"<1>\"]],\n    \"<ppm>\" :  [[\"ppm\"],1e-6, \"prefix_only\", [\"<1>\"]],\n    \"<ppb>\" :  [[\"ppb\"],1e-9, \"prefix_only\", [\"<1>\"]],\n    \"<ppt>\" :  [[\"ppt\"],1e-12, \"prefix_only\", [\"<1>\"]],\n    \"<ppq>\" :  [[\"ppq\"],1e-15, \"prefix_only\", [\"<1>\"]],\n    \"<gross>\" :  [[\"gr\",\"gross\"],144.0, \"prefix_only\", [\"<dozen>\",\"<dozen>\"]],\n    \"<decibel>\"  : [[\"dB\",\"decibel\",\"decibels\"], 1.0, \"logarithmic\", [\"<decibel>\"]]\n  };\n\n  var BASE_UNITS = [\"<meter>\",\"<kilogram>\",\"<second>\",\"<mole>\", \"<ampere>\",\"<radian>\",\"<kelvin>\",\"<temp-K>\",\"<byte>\",\"<dollar>\",\"<candela>\",\"<each>\",\"<steradian>\",\"<decibel>\"];\n\n  var UNITY = \"<1>\";\n  var UNITY_ARRAY = [UNITY];\n\n  // Setup\n\n  /**\n   * Asserts unit definition is valid\n   *\n   * @param {string} unitDef - Name of unit to test\n   * @param {Object} definition - Definition of unit to test\n   *\n   * @returns {void}\n   * @throws {QtyError} if unit definition is not valid\n   */\n  function validateUnitDefinition(unitDef, definition) {\n    var scalar = definition[1];\n    var numerator = definition[3] || [];\n    var denominator = definition[4] || [];\n    if (!isNumber(scalar)) {\n      throw new QtyError(unitDef + \": Invalid unit definition. \" +\n                         \"'scalar' must be a number\");\n    }\n\n    numerator.forEach(function(unit) {\n      if (UNITS[unit] === undefined) {\n        throw new QtyError(unitDef + \": Invalid unit definition. \" +\n                           \"Unit \" + unit + \" in 'numerator' is not recognized\");\n      }\n    });\n\n    denominator.forEach(function(unit) {\n      if (UNITS[unit] === undefined) {\n        throw new QtyError(unitDef + \": Invalid unit definition. \" +\n                           \"Unit \" + unit + \" in 'denominator' is not recognized\");\n      }\n    });\n  }\n\n  var PREFIX_VALUES = {};\n  var PREFIX_MAP = {};\n  var UNIT_VALUES = {};\n  var UNIT_MAP = {};\n  var OUTPUT_MAP = {};\n  for (var unitDef in UNITS) {\n    if (UNITS.hasOwnProperty(unitDef)) {\n      var definition = UNITS[unitDef];\n      if (definition[2] === \"prefix\") {\n        PREFIX_VALUES[unitDef] = definition[1];\n        for (var i = 0; i < definition[0].length; i++) {\n          PREFIX_MAP[definition[0][i]] = unitDef;\n        }\n      }\n      else {\n        validateUnitDefinition(unitDef, definition);\n        UNIT_VALUES[unitDef] = {\n          scalar: definition[1],\n          numerator: definition[3],\n          denominator: definition[4]\n        };\n        for (var j = 0; j < definition[0].length; j++) {\n          UNIT_MAP[definition[0][j]] = unitDef;\n        }\n      }\n      OUTPUT_MAP[unitDef] = definition[0][0];\n    }\n  }\n\n  /**\n   * Returns a list of available units of kind\n   *\n   * @param {string} [kind] - kind of units\n   * @returns {array} names of units\n   * @throws {QtyError} if kind is unknown\n   */\n  function getUnits(kind) {\n    var i;\n    var units = [];\n    var unitKeys = Object.keys(UNITS);\n    if (typeof kind === \"undefined\") {\n      for (i = 0; i < unitKeys.length; i++) {\n        if ([\"\", \"prefix\"].indexOf(UNITS[unitKeys[i]][2]) === -1) {\n          units.push(unitKeys[i].substr(1, unitKeys[i].length - 2));\n        }\n      }\n    }\n    else if (this.getKinds().indexOf(kind) === -1) {\n      throw new QtyError(\"Kind not recognized\");\n    }\n    else {\n      for (i = 0; i < unitKeys.length; i++) {\n        if (UNITS[unitKeys[i]][2] === kind) {\n          units.push(unitKeys[i].substr(1, unitKeys[i].length - 2));\n        }\n      }\n    }\n\n    return units.sort(function(a, b) {\n      if (a.toLowerCase() < b.toLowerCase()) {\n        return -1;\n      }\n      if (a.toLowerCase() > b.toLowerCase()) {\n        return 1;\n      }\n      return 0;\n    });\n  }\n\n  /**\n   * Returns a list of alternative names for a unit\n   *\n   * @param {string} unitName - name of unit\n   * @returns {string[]} aliases for unit\n   * @throws {QtyError} if unit is unknown\n   */\n  function getAliases(unitName) {\n    if (!UNIT_MAP[unitName]) {\n      throw new QtyError(\"Unit not recognized\");\n    }\n    return UNITS[UNIT_MAP[unitName]][0];\n  }\n\n  var SIGNATURE_VECTOR = [\"length\", \"time\", \"temperature\", \"mass\", \"current\", \"substance\", \"luminosity\", \"currency\", \"information\", \"angle\"];\n\n  /*\n  calculates the unit signature id for use in comparing compatible units and simplification\n  the signature is based on a simple classification of units and is based on the following publication\n\n  Novak, G.S., Jr. \"Conversion of units of measurement\", IEEE Transactions on Software Engineering,\n  21(8), Aug 1995, pp.651-661\n  doi://10.1109/32.403789\n  http://ieeexplore.ieee.org/Xplore/login.jsp?url=/iel1/32/9079/00403789.pdf?isnumber=9079&prod=JNL&arnumber=403789&arSt=651&ared=661&arAuthor=Novak%2C+G.S.%2C+Jr.\n  */\n  function unitSignature() {\n    if (this.signature) {\n      return this.signature;\n    }\n    var vector = unitSignatureVector.call(this);\n    for (var i = 0; i < vector.length; i++) {\n      vector[i] *= Math.pow(20, i);\n    }\n\n    return vector.reduce(\n      function(previous, current) {\n        return previous + current;\n      },\n      0\n    );\n  }\n\n  // calculates the unit signature vector used by unit_signature\n  function unitSignatureVector() {\n    if (!this.isBase()) {\n      return unitSignatureVector.call(this.toBase());\n    }\n\n    var vector = new Array(SIGNATURE_VECTOR.length);\n    for (var i = 0; i < vector.length; i++) {\n      vector[i] = 0;\n    }\n    var r, n;\n    for (var j = 0; j < this.numerator.length; j++) {\n      if ((r = UNITS[this.numerator[j]])) {\n        n = SIGNATURE_VECTOR.indexOf(r[2]);\n        if (n >= 0) {\n          vector[n] = vector[n] + 1;\n        }\n      }\n    }\n\n    for (var k = 0; k < this.denominator.length; k++) {\n      if ((r = UNITS[this.denominator[k]])) {\n        n = SIGNATURE_VECTOR.indexOf(r[2]);\n        if (n >= 0) {\n          vector[n] = vector[n] - 1;\n        }\n      }\n    }\n    return vector;\n  }\n\n  var SIGN = \"[+-]\";\n  var INTEGER = \"\\\\d+\";\n  var SIGNED_INTEGER = SIGN + \"?\" + INTEGER;\n  var FRACTION = \"\\\\.\" + INTEGER;\n  var FLOAT = \"(?:\" + INTEGER + \"(?:\" + FRACTION + \")?\" + \")\" +\n              \"|\" +\n              \"(?:\" + FRACTION + \")\";\n  var EXPONENT = \"[Ee]\" + SIGNED_INTEGER;\n  var SCI_NUMBER = \"(?:\" + FLOAT + \")(?:\" + EXPONENT + \")?\";\n  var SIGNED_NUMBER = SIGN + \"?\\\\s*\" + SCI_NUMBER;\n  var QTY_STRING = \"(\" + SIGNED_NUMBER + \")?\" + \"\\\\s*([^/]*)(?:\\/(.+))?\";\n  var QTY_STRING_REGEX = new RegExp(\"^\" + QTY_STRING + \"$\");\n\n  var POWER_OP = \"\\\\^|\\\\*{2}\";\n  // Allow unit powers representing scalar, length, area, volume; 4 is for some\n  // special case representations in SI base units.\n  var SAFE_POWER = \"[01234]\";\n  var TOP_REGEX = new RegExp (\"([^ \\\\*\\\\d]+?)(?:\" + POWER_OP + \")?(-?\" + SAFE_POWER + \"(?![a-zA-Z]))\");\n  var BOTTOM_REGEX = new RegExp(\"([^ \\\\*\\\\d]+?)(?:\" + POWER_OP + \")?(\" + SAFE_POWER + \"(?![a-zA-Z]))\");\n\n  /* parse a string into a unit object.\n   * Typical formats like :\n   * \"5.6 kg*m/s^2\"\n   * \"5.6 kg*m*s^-2\"\n   * \"5.6 kilogram*meter*second^-2\"\n   * \"2.2 kPa\"\n   * \"37 degC\"\n   * \"1\"  -- creates a unitless constant with value 1\n   * \"GPa\"  -- creates a unit with scalar 1 with units 'GPa'\n   * 6'4\"  -- recognized as 6 feet + 4 inches\n   * 8 lbs 8 oz -- recognized as 8 lbs + 8 ounces\n   */\n  function parse(val) {\n    if (!isString(val)) {\n      val = val.toString();\n    }\n    val = val.trim();\n\n    var result = QTY_STRING_REGEX.exec(val);\n    if (!result) {\n      throw new QtyError(val + \": Quantity not recognized\");\n    }\n\n    var scalarMatch = result[1];\n    if (scalarMatch) {\n      // Allow whitespaces between sign and scalar for loose parsing\n      scalarMatch = scalarMatch.replace(/\\s/g, \"\");\n      this.scalar = parseFloat(scalarMatch);\n    }\n    else {\n      this.scalar = 1;\n    }\n    var top = result[2];\n    var bottom = result[3];\n\n    var n, x, nx;\n    // TODO DRY me\n    while ((result = TOP_REGEX.exec(top))) {\n      n = parseFloat(result[2]);\n      if (isNaN(n)) {\n        // Prevents infinite loops\n        throw new QtyError(\"Unit exponent is not a number\");\n      }\n      // Disallow unrecognized unit even if exponent is 0\n      if (n === 0 && !UNIT_TEST_REGEX.test(result[1])) {\n        throw new QtyError(\"Unit not recognized\");\n      }\n      x = result[1] + \" \";\n      nx = \"\";\n      for (var i = 0; i < Math.abs(n) ; i++) {\n        nx += x;\n      }\n      if (n >= 0) {\n        top = top.replace(result[0], nx);\n      }\n      else {\n        bottom = bottom ? bottom + nx : nx;\n        top = top.replace(result[0], \"\");\n      }\n    }\n\n    while ((result = BOTTOM_REGEX.exec(bottom))) {\n      n = parseFloat(result[2]);\n      if (isNaN(n)) {\n        // Prevents infinite loops\n        throw new QtyError(\"Unit exponent is not a number\");\n      }\n      // Disallow unrecognized unit even if exponent is 0\n      if (n === 0 && !UNIT_TEST_REGEX.test(result[1])) {\n        throw new QtyError(\"Unit not recognized\");\n      }\n      x = result[1] + \" \";\n      nx = \"\";\n      for (var j = 0; j < n ; j++) {\n        nx += x;\n      }\n\n      bottom = bottom.replace(result[0], nx);\n    }\n\n    if (top) {\n      this.numerator = parseUnits(top.trim());\n    }\n    if (bottom) {\n      this.denominator = parseUnits(bottom.trim());\n    }\n  }\n\n  var PREFIX_REGEX = Object.keys(PREFIX_MAP).sort(function(a, b) {\n    return b.length - a.length;\n  }).join(\"|\");\n  var UNIT_REGEX = Object.keys(UNIT_MAP).sort(function(a, b) {\n    return b.length - a.length;\n  }).join(\"|\");\n  /*\n   * Minimal boundary regex to support units with Unicode characters\n   * \\b only works for ASCII\n   */\n  var BOUNDARY_REGEX = \"\\\\b|$\";\n  var UNIT_MATCH = \"(\" + PREFIX_REGEX + \")??(\" +\n                   UNIT_REGEX +\n                   \")(?:\" + BOUNDARY_REGEX + \")\";\n  var UNIT_TEST_REGEX = new RegExp(\"^\\\\s*(\" + UNIT_MATCH + \"[\\\\s\\\\*]*)+$\");\n  var UNIT_MATCH_REGEX = new RegExp(UNIT_MATCH, \"g\"); // g flag for multiple occurences\n  var parsedUnitsCache = {};\n  /**\n   * Parses and converts units string to normalized unit array.\n   * Result is cached to speed up next calls.\n   *\n   * @param {string} units Units string\n   * @returns {string[]} Array of normalized units\n   *\n   * @example\n   * // Returns [\"<second>\", \"<meter>\", \"<second>\"]\n   * parseUnits(\"s m s\");\n   *\n   */\n  function parseUnits(units) {\n    var cached = parsedUnitsCache[units];\n    if (cached) {\n      return cached;\n    }\n\n    var unitMatch, normalizedUnits = [];\n\n    // Scan\n    if (!UNIT_TEST_REGEX.test(units)) {\n      throw new QtyError(\"Unit not recognized\");\n    }\n\n    while ((unitMatch = UNIT_MATCH_REGEX.exec(units))) {\n      normalizedUnits.push(unitMatch.slice(1));\n    }\n\n    normalizedUnits = normalizedUnits.map(function(item) {\n      return PREFIX_MAP[item[0]] ? [PREFIX_MAP[item[0]], UNIT_MAP[item[1]]] : [UNIT_MAP[item[1]]];\n    });\n\n    // Flatten and remove null elements\n    normalizedUnits = normalizedUnits.reduce(function(a,b) {\n      return a.concat(b);\n    }, []);\n    normalizedUnits = normalizedUnits.filter(function(item) {\n      return item;\n    });\n\n    parsedUnitsCache[units] = normalizedUnits;\n\n    return normalizedUnits;\n  }\n\n  /**\n   * Parses a string as a quantity\n   * @param {string} value - quantity as text\n   * @throws if value is not a string\n   * @returns {Qty|null} Parsed quantity or null if unrecognized\n   */\n  function globalParse(value) {\n    if (!isString(value)) {\n      throw new QtyError(\"Argument should be a string\");\n    }\n\n    try {\n      return this(value);\n    }\n    catch (e) {\n      return null;\n    }\n  }\n\n  /**\n   * Tests if a value is a Qty instance\n   *\n   * @param {*} value - Value to test\n   *\n   * @returns {boolean} true if value is a Qty instance, false otherwise\n   */\n  function isQty(value) {\n    return value instanceof Qty;\n  }\n\n  function Qty(initValue, initUnits) {\n    assertValidConstructorArgs.apply(null, arguments);\n\n    if (!(isQty(this))) {\n      return new Qty(initValue, initUnits);\n    }\n\n    this.scalar = null;\n    this.baseScalar = null;\n    this.signature = null;\n    this._conversionCache = {};\n    this.numerator = UNITY_ARRAY;\n    this.denominator = UNITY_ARRAY;\n\n    if (isDefinitionObject(initValue)) {\n      this.scalar = initValue.scalar;\n      this.numerator = (initValue.numerator && initValue.numerator.length !== 0) ? initValue.numerator : UNITY_ARRAY;\n      this.denominator = (initValue.denominator && initValue.denominator.length !== 0) ? initValue.denominator : UNITY_ARRAY;\n    }\n    else if (initUnits) {\n      parse.call(this, initUnits);\n      this.scalar = initValue;\n    }\n    else {\n      parse.call(this, initValue);\n    }\n\n    // math with temperatures is very limited\n    if (this.denominator.join(\"*\").indexOf(\"temp\") >= 0) {\n      throw new QtyError(\"Cannot divide with temperatures\");\n    }\n    if (this.numerator.join(\"*\").indexOf(\"temp\") >= 0) {\n      if (this.numerator.length > 1) {\n        throw new QtyError(\"Cannot multiply by temperatures\");\n      }\n      if (!compareArray(this.denominator, UNITY_ARRAY)) {\n        throw new QtyError(\"Cannot divide with temperatures\");\n      }\n    }\n\n    this.initValue = initValue;\n    updateBaseScalar.call(this);\n\n    if (this.isTemperature() && this.baseScalar < 0) {\n      throw new QtyError(\"Temperatures must not be less than absolute zero\");\n    }\n  }\n\n  Qty.prototype = {\n    // Properly set up constructor\n    constructor: Qty,\n  };\n\n  /**\n   * Asserts constructor arguments are valid\n   *\n   * @param {*} value - Value to test\n   * @param {string} [units] - Optional units when value is passed as a number\n   *\n   * @returns {void}\n   * @throws {QtyError} if constructor arguments are invalid\n   */\n  function assertValidConstructorArgs(value, units) {\n    if (units) {\n      if (!(isNumber(value) && isString(units))) {\n        throw new QtyError(\"Only number accepted as initialization value \" +\n                           \"when units are explicitly provided\");\n      }\n    }\n    else {\n      if (!(isString(value) ||\n            isNumber(value) ||\n            isQty(value)    ||\n            isDefinitionObject(value))) {\n        throw new QtyError(\"Only string, number or quantity accepted as \" +\n                           \"single initialization value\");\n      }\n    }\n  }\n\n  /**\n   * Tests if a value is a Qty definition object\n   *\n   * @param {*} value - Value to test\n   *\n   * @returns {boolean} true if value is a definition object, false otherwise\n   */\n  function isDefinitionObject(value) {\n    return value && typeof value === \"object\" && value.hasOwnProperty(\"scalar\");\n  }\n\n  function updateBaseScalar() {\n    if (this.baseScalar) {\n      return this.baseScalar;\n    }\n    if (this.isBase()) {\n      this.baseScalar = this.scalar;\n      this.signature = unitSignature.call(this);\n    }\n    else {\n      var base = this.toBase();\n      this.baseScalar = base.scalar;\n      this.signature = base.signature;\n    }\n  }\n\n  var KINDS = {\n    \"-312078\": \"elastance\",\n    \"-312058\": \"resistance\",\n    \"-312038\": \"inductance\",\n    \"-152058\": \"potential\",\n    \"-152040\": \"magnetism\",\n    \"-152038\": \"magnetism\",\n    \"-7997\": \"specific_volume\",\n    \"-79\": \"snap\",\n    \"-59\": \"jolt\",\n    \"-39\": \"acceleration\",\n    \"-38\": \"radiation\",\n    \"-20\": \"frequency\",\n    \"-19\": \"speed\",\n    \"-18\": \"viscosity\",\n    \"-17\": \"volumetric_flow\",\n    \"-1\": \"wavenumber\",\n    \"0\": \"unitless\",\n    \"1\": \"length\",\n    \"2\": \"area\",\n    \"3\": \"volume\",\n    \"20\": \"time\",\n    \"400\": \"temperature\",\n    \"7941\": \"yank\",\n    \"7942\": \"power\",\n    \"7959\": \"pressure\",\n    \"7961\": \"force\",\n    \"7962\": \"energy\",\n    \"7979\": \"viscosity\",\n    \"7981\": \"momentum\",\n    \"7982\": \"angular_momentum\",\n    \"7997\": \"density\",\n    \"7998\": \"area_density\",\n    \"8000\": \"mass\",\n    \"152020\": \"radiation_exposure\",\n    \"159999\": \"magnetism\",\n    \"160000\": \"current\",\n    \"160020\": \"charge\",\n    \"312058\": \"conductance\",\n    \"312078\": \"capacitance\",\n    \"3199980\": \"activity\",\n    \"3199997\": \"molar_concentration\",\n    \"3200000\": \"substance\",\n    \"63999998\": \"illuminance\",\n    \"64000000\": \"luminous_power\",\n    \"1280000000\": \"currency\",\n    \"25599999980\": \"information_rate\",\n    \"25600000000\": \"information\",\n    \"511999999980\": \"angular_velocity\",\n    \"512000000000\": \"angle\"\n  };\n\n  /**\n   * Returns the list of available well-known kinds of units, e.g.\n   * \"radiation\" or \"length\".\n   *\n   * @returns {string[]} names of kinds of units\n   */\n  function getKinds() {\n    return uniq(Object.keys(KINDS).map(function(knownSignature) {\n      return KINDS[knownSignature];\n    }));\n  }\n\n  Qty.prototype.kind = function() {\n    return KINDS[this.signature.toString()];\n  };\n\n  assign(Qty.prototype, {\n    isDegrees: function() {\n      // signature may not have been calculated yet\n      return (this.signature === null || this.signature === 400) &&\n        this.numerator.length === 1 &&\n        compareArray(this.denominator, UNITY_ARRAY) &&\n        (this.numerator[0].match(/<temp-[CFRK]>/) || this.numerator[0].match(/<(kelvin|celsius|rankine|fahrenheit)>/));\n    },\n\n    isTemperature: function() {\n      return this.isDegrees() && this.numerator[0].match(/<temp-[CFRK]>/);\n    }\n  });\n\n  function subtractTemperatures(lhs,rhs) {\n    var lhsUnits = lhs.units();\n    var rhsConverted = rhs.to(lhsUnits);\n    var dstDegrees = Qty(getDegreeUnits(lhsUnits));\n    return Qty({\"scalar\": lhs.scalar - rhsConverted.scalar, \"numerator\": dstDegrees.numerator, \"denominator\": dstDegrees.denominator});\n  }\n\n  function subtractTempDegrees(temp,deg) {\n    var tempDegrees = deg.to(getDegreeUnits(temp.units()));\n    return Qty({\"scalar\": temp.scalar - tempDegrees.scalar, \"numerator\": temp.numerator, \"denominator\": temp.denominator});\n  }\n\n  function addTempDegrees(temp,deg) {\n    var tempDegrees = deg.to(getDegreeUnits(temp.units()));\n    return Qty({\"scalar\": temp.scalar + tempDegrees.scalar, \"numerator\": temp.numerator, \"denominator\": temp.denominator});\n  }\n\n  function getDegreeUnits(units) {\n    if (units === \"tempK\") {\n      return \"degK\";\n    }\n    else if (units === \"tempC\") {\n      return \"degC\";\n    }\n    else if (units === \"tempF\") {\n      return \"degF\";\n    }\n    else if (units === \"tempR\") {\n      return \"degR\";\n    }\n    else {\n      throw new QtyError(\"Unknown type for temp conversion from: \" + units);\n    }\n  }\n\n  function toDegrees(src,dst) {\n    var srcDegK = toDegK(src);\n    var dstUnits = dst.units();\n    var dstScalar;\n\n    if (dstUnits === \"degK\") {\n      dstScalar = srcDegK.scalar;\n    }\n    else if (dstUnits === \"degC\") {\n      dstScalar = srcDegK.scalar ;\n    }\n    else if (dstUnits === \"degF\") {\n      dstScalar = srcDegK.scalar * 9 / 5;\n    }\n    else if (dstUnits === \"degR\") {\n      dstScalar = srcDegK.scalar * 9 / 5;\n    }\n    else {\n      throw new QtyError(\"Unknown type for degree conversion to: \" + dstUnits);\n    }\n\n    return Qty({\"scalar\": dstScalar, \"numerator\": dst.numerator, \"denominator\": dst.denominator});\n  }\n\n  function toDegK(qty) {\n    var units = qty.units();\n    var q;\n    if (units.match(/(deg)[CFRK]/)) {\n      q = qty.baseScalar;\n    }\n    else if (units === \"tempK\") {\n      q = qty.scalar;\n    }\n    else if (units === \"tempC\") {\n      q = qty.scalar;\n    }\n    else if (units === \"tempF\") {\n      q = qty.scalar * 5 / 9;\n    }\n    else if (units === \"tempR\") {\n      q = qty.scalar * 5 / 9;\n    }\n    else {\n      throw new QtyError(\"Unknown type for temp conversion from: \" + units);\n    }\n\n    return Qty({\"scalar\": q, \"numerator\": [\"<kelvin>\"], \"denominator\": UNITY_ARRAY});\n  }\n\n  function toTemp(src,dst) {\n    var dstUnits = dst.units();\n    var dstScalar;\n\n    if (dstUnits === \"tempK\") {\n      dstScalar = src.baseScalar;\n    }\n    else if (dstUnits === \"tempC\") {\n      dstScalar = src.baseScalar - 273.15;\n    }\n    else if (dstUnits === \"tempF\") {\n      dstScalar = (src.baseScalar * 9 / 5) - 459.67;\n    }\n    else if (dstUnits === \"tempR\") {\n      dstScalar = src.baseScalar * 9 / 5;\n    }\n    else {\n      throw new QtyError(\"Unknown type for temp conversion to: \" + dstUnits);\n    }\n\n    return Qty({\"scalar\": dstScalar, \"numerator\": dst.numerator, \"denominator\": dst.denominator});\n  }\n\n  function toTempK(qty) {\n    var units = qty.units();\n    var q;\n    if (units.match(/(deg)[CFRK]/)) {\n      q = qty.baseScalar;\n    }\n    else if (units === \"tempK\") {\n      q = qty.scalar;\n    }\n    else if (units === \"tempC\") {\n      q = qty.scalar + 273.15;\n    }\n    else if (units === \"tempF\") {\n      q = (qty.scalar + 459.67) * 5 / 9;\n    }\n    else if (units === \"tempR\") {\n      q = qty.scalar * 5 / 9;\n    }\n    else {\n      throw new QtyError(\"Unknown type for temp conversion from: \" + units);\n    }\n\n    return Qty({\"scalar\": q, \"numerator\": [\"<temp-K>\"], \"denominator\": UNITY_ARRAY});\n  }\n\n  assign(Qty.prototype, {\n    /**\n     * Converts to other compatible units.\n     * Instance's converted quantities are cached for faster subsequent calls.\n     *\n     * @param {(string|Qty)} other - Target units as string or retrieved from\n     *                               other Qty instance (scalar is ignored)\n     *\n     * @returns {Qty} New converted Qty instance with target units\n     *\n     * @throws {QtyError} if target units are incompatible\n     *\n     * @example\n     * var weight = Qty(\"25 kg\");\n     * weight.to(\"lb\"); // => Qty(\"55.11556554621939 lbs\");\n     * weight.to(Qty(\"3 g\")); // => Qty(\"25000 g\"); // scalar of passed Qty is ignored\n     */\n    to: function(other) {\n      var cached, target;\n\n      if (other === undefined || other === null) {\n        return this;\n      }\n\n      if (!isString(other)) {\n        return this.to(other.units());\n      }\n\n      cached = this._conversionCache[other];\n      if (cached) {\n        return cached;\n      }\n\n      // Instantiating target to normalize units\n      target = Qty(other);\n      if (target.units() === this.units()) {\n        return this;\n      }\n\n      if (!this.isCompatible(target)) {\n        if (this.isInverse(target)) {\n          target = this.inverse().to(other);\n        }\n        else {\n          throwIncompatibleUnits(this.units(), target.units());\n        }\n      }\n      else {\n        if (target.isTemperature()) {\n          target = toTemp(this,target);\n        }\n        else if (target.isDegrees()) {\n          target = toDegrees(this,target);\n        }\n        else {\n          var q = divSafe(this.baseScalar, target.baseScalar);\n          target = Qty({\"scalar\": q, \"numerator\": target.numerator, \"denominator\": target.denominator});\n        }\n      }\n\n      this._conversionCache[other] = target;\n      return target;\n    },\n\n    // convert to base SI units\n    // results of the conversion are cached so subsequent calls to this will be fast\n    toBase: function() {\n      if (this.isBase()) {\n        return this;\n      }\n\n      if (this.isTemperature()) {\n        return toTempK(this);\n      }\n\n      var cached = baseUnitCache[this.units()];\n      if (!cached) {\n        cached = toBaseUnits(this.numerator,this.denominator);\n        baseUnitCache[this.units()] = cached;\n      }\n      return cached.mul(this.scalar);\n    },\n\n    // Converts the unit back to a float if it is unitless.  Otherwise raises an exception\n    toFloat: function() {\n      if (this.isUnitless()) {\n        return this.scalar;\n      }\n      throw new QtyError(\"Can't convert to Float unless unitless.  Use Unit#scalar\");\n    },\n\n    /**\n     * Returns the nearest multiple of quantity passed as\n     * precision\n     *\n     * @param {(Qty|string|number)} precQuantity - Quantity, string formated\n     *   quantity or number as expected precision\n     *\n     * @returns {Qty} Nearest multiple of precQuantity\n     *\n     * @example\n     * Qty('5.5 ft').toPrec('2 ft'); // returns 6 ft\n     * Qty('0.8 cu').toPrec('0.25 cu'); // returns 0.75 cu\n     * Qty('6.3782 m').toPrec('cm'); // returns 6.38 m\n     * Qty('1.146 MPa').toPrec('0.1 bar'); // returns 1.15 MPa\n     *\n     */\n    toPrec: function(precQuantity) {\n      if (isString(precQuantity)) {\n        precQuantity = Qty(precQuantity);\n      }\n      if (isNumber(precQuantity)) {\n        precQuantity = Qty(precQuantity + \" \" + this.units());\n      }\n\n      if (!this.isUnitless()) {\n        precQuantity = precQuantity.to(this.units());\n      }\n      else if (!precQuantity.isUnitless()) {\n        throwIncompatibleUnits(this.units(), precQuantity.units());\n      }\n\n      if (precQuantity.scalar === 0) {\n        throw new QtyError(\"Divide by zero\");\n      }\n\n      var precRoundedResult = mulSafe(\n        Math.round(this.scalar / precQuantity.scalar),\n        precQuantity.scalar\n      );\n\n      return Qty(precRoundedResult + this.units());\n    }\n  });\n\n  /**\n   * Configures and returns a fast function to convert\n   * Number values from units to others.\n   * Useful to efficiently convert large array of values\n   * with same units into others with iterative methods.\n   * Does not take care of rounding issues.\n   *\n   * @param {string} srcUnits Units of values to convert\n   * @param {string} dstUnits Units to convert to\n   *\n   * @returns {Function} Converting function accepting Number value\n   *   and returning converted value\n   *\n   * @throws \"Incompatible units\" if units are incompatible\n   *\n   * @example\n   * // Converting large array of numbers with the same units\n   * // into other units\n   * var converter = Qty.swiftConverter(\"m/h\", \"ft/s\");\n   * var convertedSerie = largeSerie.map(converter);\n   *\n   */\n  function swiftConverter(srcUnits, dstUnits) {\n    var srcQty = Qty(srcUnits);\n    var dstQty = Qty(dstUnits);\n\n    if (srcQty.eq(dstQty)) {\n      return identity;\n    }\n\n    var convert;\n    if (!srcQty.isTemperature()) {\n      convert = function(value) {\n        return value * srcQty.baseScalar / dstQty.baseScalar;\n      };\n    }\n    else {\n      convert = function(value) {\n        // TODO Not optimized\n        return srcQty.mul(value).to(dstQty).scalar;\n      };\n    }\n\n    return function converter(value) {\n      var i, length, result;\n      if (!Array.isArray(value)) {\n        return convert(value);\n      }\n      else {\n        length = value.length;\n        result = [];\n        for (i = 0; i < length; i++) {\n          result.push(convert(value[i]));\n        }\n        return result;\n      }\n    };\n  }\n\n  var baseUnitCache = {};\n\n  function toBaseUnits(numerator,denominator) {\n    var num = [];\n    var den = [];\n    var q = 1;\n    var unit;\n    for (var i = 0; i < numerator.length; i++) {\n      unit = numerator[i];\n      if (PREFIX_VALUES[unit]) {\n        // workaround to fix\n        // 0.1 * 0.1 => 0.010000000000000002\n        q = mulSafe(q, PREFIX_VALUES[unit]);\n      }\n      else {\n        if (UNIT_VALUES[unit]) {\n          q *= UNIT_VALUES[unit].scalar;\n\n          if (UNIT_VALUES[unit].numerator) {\n            num.push(UNIT_VALUES[unit].numerator);\n          }\n          if (UNIT_VALUES[unit].denominator) {\n            den.push(UNIT_VALUES[unit].denominator);\n          }\n        }\n      }\n    }\n    for (var j = 0; j < denominator.length; j++) {\n      unit = denominator[j];\n      if (PREFIX_VALUES[unit]) {\n        q /= PREFIX_VALUES[unit];\n      }\n      else {\n        if (UNIT_VALUES[unit]) {\n          q /= UNIT_VALUES[unit].scalar;\n\n          if (UNIT_VALUES[unit].numerator) {\n            den.push(UNIT_VALUES[unit].numerator);\n          }\n          if (UNIT_VALUES[unit].denominator) {\n            num.push(UNIT_VALUES[unit].denominator);\n          }\n        }\n      }\n    }\n\n    // Flatten\n    num = num.reduce(function(a,b) {\n      return a.concat(b);\n    }, []);\n    den = den.reduce(function(a,b) {\n      return a.concat(b);\n    }, []);\n\n    return Qty({\"scalar\": q, \"numerator\": num, \"denominator\": den});\n  }\n\n  Qty.parse = globalParse;\n\n  Qty.getUnits = getUnits;\n  Qty.getAliases = getAliases;\n\n  Qty.mulSafe = mulSafe;\n  Qty.divSafe = divSafe;\n\n  Qty.getKinds = getKinds;\n\n  Qty.swiftConverter = swiftConverter;\n\n  Qty.Error = QtyError;\n\n  assign(Qty.prototype, {\n    // Returns new instance with units of this\n    add: function(other) {\n      if (isString(other)) {\n        other = Qty(other);\n      }\n\n      if (!this.isCompatible(other)) {\n        throwIncompatibleUnits(this.units(), other.units());\n      }\n\n      if (this.isTemperature() && other.isTemperature()) {\n        throw new QtyError(\"Cannot add two temperatures\");\n      }\n      else if (this.isTemperature()) {\n        return addTempDegrees(this, other);\n      }\n      else if (other.isTemperature()) {\n        return addTempDegrees(other, this);\n      }\n\n      return Qty({\"scalar\": this.scalar + other.to(this).scalar, \"numerator\": this.numerator, \"denominator\": this.denominator});\n    },\n\n    sub: function(other) {\n      if (isString(other)) {\n        other = Qty(other);\n      }\n\n      if (!this.isCompatible(other)) {\n        throwIncompatibleUnits(this.units(), other.units());\n      }\n\n      if (this.isTemperature() && other.isTemperature()) {\n        return subtractTemperatures(this,other);\n      }\n      else if (this.isTemperature()) {\n        return subtractTempDegrees(this,other);\n      }\n      else if (other.isTemperature()) {\n        throw new QtyError(\"Cannot subtract a temperature from a differential degree unit\");\n      }\n\n      return Qty({\"scalar\": this.scalar - other.to(this).scalar, \"numerator\": this.numerator, \"denominator\": this.denominator});\n    },\n\n    mul: function(other) {\n      if (isNumber(other)) {\n        return Qty({\"scalar\": mulSafe(this.scalar, other), \"numerator\": this.numerator, \"denominator\": this.denominator});\n      }\n      else if (isString(other)) {\n        other = Qty(other);\n      }\n\n      if ((this.isTemperature() || other.isTemperature()) && !(this.isUnitless() || other.isUnitless())) {\n        throw new QtyError(\"Cannot multiply by temperatures\");\n      }\n\n      // Quantities should be multiplied with same units if compatible, with base units else\n      var op1 = this;\n      var op2 = other;\n\n      // so as not to confuse results, multiplication and division between temperature degrees will maintain original unit info in num/den\n      // multiplication and division between deg[CFRK] can never factor each other out, only themselves: \"degK*degC/degC^2\" == \"degK/degC\"\n      if (op1.isCompatible(op2) && op1.signature !== 400) {\n        op2 = op2.to(op1);\n      }\n      var numdenscale = cleanTerms(op1.numerator, op1.denominator, op2.numerator, op2.denominator);\n\n      return Qty({\"scalar\": mulSafe(op1.scalar, op2.scalar, numdenscale[2]), \"numerator\": numdenscale[0], \"denominator\": numdenscale[1]});\n    },\n\n    div: function(other) {\n      if (isNumber(other)) {\n        if (other === 0) {\n          throw new QtyError(\"Divide by zero\");\n        }\n        return Qty({\"scalar\": this.scalar / other, \"numerator\": this.numerator, \"denominator\": this.denominator});\n      }\n      else if (isString(other)) {\n        other = Qty(other);\n      }\n\n      if (other.scalar === 0) {\n        throw new QtyError(\"Divide by zero\");\n      }\n\n      if (other.isTemperature()) {\n        throw new QtyError(\"Cannot divide with temperatures\");\n      }\n      else if (this.isTemperature() && !other.isUnitless()) {\n        throw new QtyError(\"Cannot divide with temperatures\");\n      }\n\n      // Quantities should be multiplied with same units if compatible, with base units else\n      var op1 = this;\n      var op2 = other;\n\n      // so as not to confuse results, multiplication and division between temperature degrees will maintain original unit info in num/den\n      // multiplication and division between deg[CFRK] can never factor each other out, only themselves: \"degK*degC/degC^2\" == \"degK/degC\"\n      if (op1.isCompatible(op2) && op1.signature !== 400) {\n        op2 = op2.to(op1);\n      }\n      var numdenscale = cleanTerms(op1.numerator, op1.denominator, op2.denominator, op2.numerator);\n\n      return Qty({\"scalar\": mulSafe(op1.scalar, numdenscale[2]) / op2.scalar, \"numerator\": numdenscale[0], \"denominator\": numdenscale[1]});\n    },\n\n    // Returns a Qty that is the inverse of this Qty,\n    inverse: function() {\n      if (this.isTemperature()) {\n        throw new QtyError(\"Cannot divide with temperatures\");\n      }\n      if (this.scalar === 0) {\n        throw new QtyError(\"Divide by zero\");\n      }\n      return Qty({\"scalar\": 1 / this.scalar, \"numerator\": this.denominator, \"denominator\": this.numerator});\n    }\n  });\n\n  function cleanTerms(num1, den1, num2, den2) {\n    function notUnity(val) {\n      return val !== UNITY;\n    }\n\n    num1 = num1.filter(notUnity);\n    num2 = num2.filter(notUnity);\n    den1 = den1.filter(notUnity);\n    den2 = den2.filter(notUnity);\n\n    var combined = {};\n\n    function combineTerms(terms, direction) {\n      var k;\n      var prefix;\n      var prefixValue;\n      for (var i = 0; i < terms.length; i++) {\n        if (PREFIX_VALUES[terms[i]]) {\n          k = terms[i + 1];\n          prefix = terms[i];\n          prefixValue = PREFIX_VALUES[prefix];\n          i++;\n        }\n        else {\n          k = terms[i];\n          prefix = null;\n          prefixValue = 1;\n        }\n        if (k && k !== UNITY) {\n          if (combined[k]) {\n            combined[k][0] += direction;\n            var combinedPrefixValue = combined[k][2] ? PREFIX_VALUES[combined[k][2]] : 1;\n            combined[k][direction === 1 ? 3 : 4] *= divSafe(prefixValue, combinedPrefixValue);\n          }\n          else {\n            combined[k] = [direction, k, prefix, 1, 1];\n          }\n        }\n      }\n    }\n\n    combineTerms(num1, 1);\n    combineTerms(den1, -1);\n    combineTerms(num2, 1);\n    combineTerms(den2, -1);\n\n    var num = [];\n    var den = [];\n    var scale = 1;\n\n    for (var prop in combined) {\n      if (combined.hasOwnProperty(prop)) {\n        var item = combined[prop];\n        var n;\n        if (item[0] > 0) {\n          for (n = 0; n < item[0]; n++) {\n            num.push(item[2] === null ? item[1] : [item[2], item[1]]);\n          }\n        }\n        else if (item[0] < 0) {\n          for (n = 0; n < -item[0]; n++) {\n            den.push(item[2] === null ? item[1] : [item[2], item[1]]);\n          }\n        }\n        scale *= divSafe(item[3], item[4]);\n      }\n    }\n\n    if (num.length === 0) {\n      num = UNITY_ARRAY;\n    }\n    if (den.length === 0) {\n      den = UNITY_ARRAY;\n    }\n\n    // Flatten\n    num = num.reduce(function(a,b) {\n      return a.concat(b);\n    }, []);\n    den = den.reduce(function(a,b) {\n      return a.concat(b);\n    }, []);\n\n    return [num, den, scale];\n  }\n\n  assign(Qty.prototype, {\n    eq: function(other) {\n      return this.compareTo(other) === 0;\n    },\n\n    lt: function(other) {\n      return this.compareTo(other) === -1;\n    },\n\n    lte: function(other) {\n      return this.eq(other) || this.lt(other);\n    },\n\n    gt: function(other) {\n      return this.compareTo(other) === 1;\n    },\n\n    gte: function(other) {\n      return this.eq(other) || this.gt(other);\n    },\n\n    // Compare two Qty objects. Throws an exception if they are not of compatible types.\n    // Comparisons are done based on the value of the quantity in base SI units.\n    //\n    // NOTE: We cannot compare inverses as that breaks the general compareTo contract:\n    //   if a.compareTo(b) < 0 then b.compareTo(a) > 0\n    //   if a.compareTo(b) == 0 then b.compareTo(a) == 0\n    //\n    //   Since \"10S\" == \".1ohm\" (10 > .1) and \"10ohm\" == \".1S\" (10 > .1)\n    //     Qty(\"10S\").inverse().compareTo(\"10ohm\") == -1\n    //     Qty(\"10ohm\").inverse().compareTo(\"10S\") == -1\n    //\n    //   If including inverses in the sort is needed, I suggest writing: Qty.sort(qtyArray,units)\n    compareTo: function(other) {\n      if (isString(other)) {\n        return this.compareTo(Qty(other));\n      }\n      if (!this.isCompatible(other)) {\n        throwIncompatibleUnits(this.units(), other.units());\n      }\n      if (this.baseScalar < other.baseScalar) {\n        return -1;\n      }\n      else if (this.baseScalar === other.baseScalar) {\n        return 0;\n      }\n      else if (this.baseScalar > other.baseScalar) {\n        return 1;\n      }\n    },\n\n    // Return true if quantities and units match\n    // Unit(\"100 cm\").same(Unit(\"100 cm\"))  # => true\n    // Unit(\"100 cm\").same(Unit(\"1 m\"))     # => false\n    same: function(other) {\n      return (this.scalar === other.scalar) && (this.units() === other.units());\n    }\n  });\n\n  assign(Qty.prototype, {\n    // returns true if no associated units\n    // false, even if the units are \"unitless\" like 'radians, each, etc'\n    isUnitless: function() {\n      return [this.numerator, this.denominator].every(function(item) {\n        return compareArray(item, UNITY_ARRAY);\n      });\n    },\n\n    /*\n    check to see if units are compatible, but not the scalar part\n    this check is done by comparing signatures for performance reasons\n    if passed a string, it will create a unit object with the string and then do the comparison\n    this permits a syntax like:\n    unit =~ \"mm\"\n    if you want to do a regexp on the unit string do this ...\n    unit.units =~ /regexp/\n    */\n    isCompatible: function(other) {\n      if (isString(other)) {\n        return this.isCompatible(Qty(other));\n      }\n\n      if (!(isQty(other))) {\n        return false;\n      }\n\n      if (other.signature !== undefined) {\n        return this.signature === other.signature;\n      }\n      else {\n        return false;\n      }\n    },\n\n    /*\n    check to see if units are inverse of each other, but not the scalar part\n    this check is done by comparing signatures for performance reasons\n    if passed a string, it will create a unit object with the string and then do the comparison\n    this permits a syntax like:\n    unit =~ \"mm\"\n    if you want to do a regexp on the unit string do this ...\n    unit.units =~ /regexp/\n    */\n    isInverse: function(other) {\n      return this.inverse().isCompatible(other);\n    },\n\n    // Returns 'true' if the Unit is represented in base units\n    isBase: function() {\n      if (this._isBase !== undefined) {\n        return this._isBase;\n      }\n      if (this.isDegrees() && this.numerator[0].match(/<(kelvin|temp-K)>/)) {\n        this._isBase = true;\n        return this._isBase;\n      }\n\n      this.numerator.concat(this.denominator).forEach(function(item) {\n        if (item !== UNITY && BASE_UNITS.indexOf(item) === -1 ) {\n          this._isBase = false;\n        }\n      }, this);\n      if (this._isBase === false) {\n        return this._isBase;\n      }\n      this._isBase = true;\n      return this._isBase;\n    }\n  });\n\n  function NestedMap() {}\n\n  NestedMap.prototype.get = function(keys) {\n\n    // Allows to pass key1, key2, ... instead of [key1, key2, ...]\n    if (arguments.length > 1) {\n      // Slower with Firefox but faster with Chrome than\n      // Array.prototype.slice.call(arguments)\n      // See http://jsperf.com/array-apply-versus-array-prototype-slice-call\n      keys = Array.apply(null, arguments);\n    }\n\n    return keys.reduce(function(map, key, index) {\n      if (map) {\n\n        var childMap = map[key];\n\n        if (index === keys.length - 1) {\n          return childMap ? childMap.data : undefined;\n        }\n        else {\n          return childMap;\n        }\n      }\n    },\n    this);\n  };\n\n  NestedMap.prototype.set = function(keys, value) {\n\n    if (arguments.length > 2) {\n      keys = Array.prototype.slice.call(arguments, 0, -1);\n      value = arguments[arguments.length - 1];\n    }\n\n    return keys.reduce(function(map, key, index) {\n\n      var childMap = map[key];\n      if (childMap === undefined) {\n        childMap = map[key] = {};\n      }\n\n      if (index === keys.length - 1) {\n        childMap.data = value;\n        return value;\n      }\n      else {\n        return childMap;\n      }\n    }, this);\n  };\n\n  /**\n   * Default formatter\n   *\n   * @param {number} scalar - scalar value\n   * @param {string} units - units as string\n   *\n   * @returns {string} formatted result\n   */\n  function defaultFormatter(scalar, units) {\n    return (scalar + \" \" + units).trim();\n  }\n\n  /**\n   *\n   * Configurable Qty default formatter\n   *\n   * @type {function}\n   *\n   * @param {number} scalar\n   * @param {string} units\n   *\n   * @returns {string} formatted result\n   */\n  Qty.formatter = defaultFormatter;\n\n  assign(Qty.prototype, {\n\n    // returns the 'unit' part of the Unit object without the scalar\n    units: function() {\n      if (this._units !== undefined) {\n        return this._units;\n      }\n\n      var numIsUnity = compareArray(this.numerator, UNITY_ARRAY);\n      var denIsUnity = compareArray(this.denominator, UNITY_ARRAY);\n      if (numIsUnity && denIsUnity) {\n        this._units = \"\";\n        return this._units;\n      }\n\n      var numUnits = stringifyUnits(this.numerator);\n      var denUnits = stringifyUnits(this.denominator);\n      this._units = numUnits + (denIsUnity ? \"\" : (\"/\" + denUnits));\n      return this._units;\n    },\n\n    /**\n     * Stringifies the quantity\n     * Deprecation notice: only units parameter is supported.\n     *\n     * @param {(number|string|Qty)} targetUnitsOrMaxDecimalsOrPrec -\n     *                              target units if string,\n     *                              max number of decimals if number,\n     *                              passed to #toPrec before converting if Qty\n     *\n     * @param {number=} maxDecimals - Maximum number of decimals of\n     *                                formatted output\n     *\n     * @returns {string} reparseable quantity as string\n     */\n    toString: function(targetUnitsOrMaxDecimalsOrPrec, maxDecimals) {\n      var targetUnits;\n      if (isNumber(targetUnitsOrMaxDecimalsOrPrec)) {\n        targetUnits = this.units();\n        maxDecimals = targetUnitsOrMaxDecimalsOrPrec;\n      }\n      else if (isString(targetUnitsOrMaxDecimalsOrPrec)) {\n        targetUnits = targetUnitsOrMaxDecimalsOrPrec;\n      }\n      else if (isQty(targetUnitsOrMaxDecimalsOrPrec)) {\n        return this.toPrec(targetUnitsOrMaxDecimalsOrPrec).toString(maxDecimals);\n      }\n\n      var out = this.to(targetUnits);\n\n      var outScalar = maxDecimals !== undefined ? round(out.scalar, maxDecimals) : out.scalar;\n      out = (outScalar + \" \" + out.units()).trim();\n      return out;\n    },\n\n    /**\n     * Format the quantity according to optional passed target units\n     * and formatter\n     *\n     * @param {string} [targetUnits=current units] -\n     *                 optional units to convert to before formatting\n     *\n     * @param {function} [formatter=Qty.formatter] -\n     *                   delegates formatting to formatter callback.\n     *                   formatter is called back with two parameters (scalar, units)\n     *                   and should return formatted result.\n     *                   If unspecified, formatting is delegated to default formatter\n     *                   set to Qty.formatter\n     *\n     * @example\n     * var roundingAndLocalizingFormatter = function(scalar, units) {\n     *   // localize or limit scalar to n max decimals for instance\n     *   // return formatted result\n     * };\n     * var qty = Qty('1.1234 m');\n     * qty.format(); // same units, default formatter => \"1.234 m\"\n     * qty.format(\"cm\"); // converted to \"cm\", default formatter => \"123.45 cm\"\n     * qty.format(roundingAndLocalizingFormatter); // same units, custom formatter => \"1,2 m\"\n     * qty.format(\"cm\", roundingAndLocalizingFormatter); // convert to \"cm\", custom formatter => \"123,4 cm\"\n     *\n     * @returns {string} quantity as string\n     */\n    format: function(targetUnits, formatter) {\n      if (arguments.length === 1) {\n        if (typeof targetUnits === \"function\") {\n          formatter = targetUnits;\n          targetUnits = undefined;\n        }\n      }\n\n      formatter = formatter || Qty.formatter;\n      var targetQty = this.to(targetUnits);\n      return formatter.call(this, targetQty.scalar, targetQty.units());\n    }\n  });\n\n  var stringifiedUnitsCache = new NestedMap();\n  /**\n   * Returns a string representing a normalized unit array\n   *\n   * @param {string[]} units Normalized unit array\n   * @returns {string} String representing passed normalized unit array and\n   *   suitable for output\n   *\n   */\n  function stringifyUnits(units) {\n\n    var stringified = stringifiedUnitsCache.get(units);\n    if (stringified) {\n      return stringified;\n    }\n\n    var isUnity = compareArray(units, UNITY_ARRAY);\n    if (isUnity) {\n      stringified = \"1\";\n    }\n    else {\n      stringified = simplify(getOutputNames(units)).join(\"*\");\n    }\n\n    // Cache result\n    stringifiedUnitsCache.set(units, stringified);\n\n    return stringified;\n  }\n\n  function getOutputNames(units) {\n    var unitNames = [], token, tokenNext;\n    for (var i = 0; i < units.length; i++) {\n      token = units[i];\n      tokenNext = units[i + 1];\n      if (PREFIX_VALUES[token]) {\n        unitNames.push(OUTPUT_MAP[token] + OUTPUT_MAP[tokenNext]);\n        i++;\n      }\n      else {\n        unitNames.push(OUTPUT_MAP[token]);\n      }\n    }\n    return unitNames;\n  }\n\n  function simplify(units) {\n    // this turns ['s','m','s'] into ['s2','m']\n\n    var unitCounts = units.reduce(function(acc, unit) {\n      var unitCounter = acc[unit];\n      if (!unitCounter) {\n        acc.push(unitCounter = acc[unit] = [unit, 0]);\n      }\n\n      unitCounter[1]++;\n\n      return acc;\n    }, []);\n\n    return unitCounts.map(function(unitCount) {\n      return unitCount[0] + (unitCount[1] > 1 ? unitCount[1] : \"\");\n    });\n  }\n\n  Qty.version = \"1.8.0\";\n\n  return Qty;\n\n}));\n","import Qty from 'js-quantities';\nexport function convertUnit(array, fromUnit, toUnit) {\n    fromUnit = normalize(fromUnit);\n    toUnit = normalize(toUnit);\n    if (fromUnit === toUnit)\n        return array;\n    const convert = Qty.swiftConverter(fromUnit, toUnit); // Configures converter\n    //@ts-expect-error convert does not allowed typed array but it works\n    return convert(array);\n}\nfunction normalize(unit) {\n    unit = unit.replaceAll('°C', 'tempC');\n    unit = unit.replaceAll('°F', 'tempF');\n    unit = unit.replaceAll(/(^|\\W)K(\\W|$)/g, '$1tempK$2');\n    return unit;\n}\n//# sourceMappingURL=convertUnit.js.map","const testRegExp = /^\\/((?:\\\\\\/|[^/])+)\\/([gimuy]{0,5})?$/;\nexport function ensureRegexp(string) {\n    if (typeof string !== 'string')\n        return string;\n    const parts = testRegExp.exec(string);\n    if (parts) {\n        try {\n            return new RegExp(parts[1], parts[2]);\n        }\n        catch {\n            return stringToRegexp(string);\n        }\n    }\n    else {\n        return stringToRegexp(string);\n    }\n}\nfunction stringToRegexp(string, flags = 'i') {\n    return new RegExp(string.replaceAll(/[$()*+.?[\\\\\\]^{|}]/g, (match) => `\\\\${match}`), flags);\n}\n//# sourceMappingURL=ensureRegexp.js.map","import { xIsMonotonic, xMaxValue, xMinValue } from 'ml-spectra-processing';\nimport { convertUnit } from './convertUnit.js';\nexport function getConvertedVariable(variable, newUnits) {\n    const data = variable.units !== undefined && variable.units !== newUnits // would be nice if convertUnit would allow typedArray\n        ? convertUnit(Array.from(variable.data), variable.units, newUnits)\n        : variable.data;\n    return {\n        units: newUnits,\n        label: variable.label.replace(`[${variable.units || ''}]`, `[${newUnits}]`),\n        data: data || [],\n        min: data ? xMinValue(data) : undefined,\n        max: data ? xMaxValue(data) : undefined,\n        isMonotonic: xIsMonotonic(data),\n    };\n}\n//# sourceMappingURL=getConvertedVariable.js.map","/* eslint-disable @typescript-eslint/no-dynamic-delete */\nimport { convertUnit } from './convertUnit.js';\nimport { ensureRegexp } from './ensureRegexp.js';\nimport { getConvertedVariable } from './getConvertedVariable.js';\n/**\n * Retrieve the spectrum with only X/Y data that match all the selectors\n * If more than one variable match the selector the 'x' or 'y' variable will be\n * taken\n * @param spectra\n * @param selector\n */\nexport function getXYSpectra(spectra = [], selector = {}) {\n    const selectedSpectra = [];\n    if (spectra.length === 0)\n        return selectedSpectra;\n    const { variables, units, labels, meta, index } = selector;\n    let { dataType, title, xUnits, yUnits, xVariable = 'x', yVariable = 'y', xLabel, yLabel, } = selector;\n    if (index !== undefined) {\n        return [spectra[index]];\n    }\n    if (dataType) {\n        dataType = ensureRegexp(dataType);\n    }\n    if (title) {\n        title = ensureRegexp(title);\n    }\n    if (units && !xUnits && !yUnits)\n        [yUnits, xUnits] = units.split(/\\s*vs\\s*/);\n    if (labels && !xLabel && !yLabel) {\n        [yLabel, xLabel] = labels.split(/\\s*vs\\s*/);\n    }\n    if (variables) {\n        const parts = variables.split(/\\s*vs\\s*/);\n        if (parts.length === 2) {\n            xVariable = parts[1];\n            yVariable = parts[0];\n        }\n    }\n    if (xLabel)\n        xLabel = ensureRegexp(xLabel);\n    if (yLabel)\n        yLabel = ensureRegexp(yLabel);\n    for (const spectrum of spectra) {\n        const variableNames = Object.keys(spectrum.variables);\n        if (!(variableNames.length > 1))\n            continue;\n        // we filter on general spectrum information\n        if (dataType &&\n            (!spectrum.dataType || !dataType.exec(spectrum.dataType))) {\n            continue;\n        }\n        if (title && (!spectrum.title || !title.exec(spectrum.title))) {\n            continue;\n        }\n        if (meta && typeof meta === 'object') {\n            if (!spectrum.meta)\n                continue;\n            for (const key in spectrum.meta) {\n                if (!spectrum.meta[key])\n                    continue;\n                const value = ensureRegexp(spectrum.meta[key]);\n                if (!value.exec(spectrum.meta[key]))\n                    continue;\n            }\n        }\n        const x = getPossibleVariable(spectrum.variables, {\n            units: xUnits,\n            label: xLabel,\n            variableName: xVariable,\n        });\n        const y = getPossibleVariable(spectrum.variables, {\n            units: yUnits,\n            label: yLabel,\n            variableName: yVariable,\n        });\n        if (x && y) {\n            // should we reverse the x-axis?\n            if (x.data[0] > x.data.at(-1)) {\n                x.data = x.data.toReversed();\n                y.data = y.data.toReversed();\n            }\n            selectedSpectra.push({\n                title: spectrum.title,\n                dataType: spectrum.dataType,\n                meta: spectrum.meta,\n                variables: { x, y },\n                id: spectrum.id,\n            });\n        }\n    }\n    return selectedSpectra;\n}\nfunction getPossibleVariable(variables, selector = {}) {\n    const { units, label, variableName } = selector;\n    const possible = { ...variables };\n    let key;\n    if (units !== undefined) {\n        for (key in possible) {\n            const variable = variables[key];\n            let convertibleUnits = true;\n            try {\n                convertUnit(1, variable?.units || '', units);\n            }\n            catch {\n                convertibleUnits = false;\n            }\n            if (convertibleUnits && variable) {\n                possible[key] = getConvertedVariable(variable, units);\n            }\n            else {\n                delete possible[key];\n            }\n        }\n    }\n    if (label !== undefined) {\n        const regexpLabel = ensureRegexp(label);\n        for (key in possible) {\n            if (!regexpLabel.exec(variables[key]?.label ?? '')) {\n                delete possible[key];\n            }\n        }\n    }\n    if (variableName !== undefined) {\n        if (possible[variableName])\n            return possible[variableName];\n        const upper = variableName.toUpperCase();\n        if (Object.hasOwn(possible, upper)) {\n            return possible[upper];\n        }\n        const lower = variableName.toLowerCase();\n        if (Object.hasOwn(possible, lower)) {\n            return possible[lower];\n        }\n    }\n    const possibleFiltered = Object.values(possible).filter((val) => val !== undefined);\n    if (possibleFiltered.length > 0) {\n        return possibleFiltered[0];\n    }\n}\n//# sourceMappingURL=getXYSpectra.js.map","import { getXYSpectra } from './getXYSpectra.js';\n/**\n * Retrieve the spectrum with only X/Y data that match all the selectors\n * If more than one variable match the selector the 'x' or 'y' variable will be\n * taken\n * @param spectra\n * @param selector\n */\nexport function getXYSpectrum(spectra = [], selector = {}) {\n    const selectedSpectra = getXYSpectra(spectra, selector);\n    if (selectedSpectra.length === 0)\n        return undefined;\n    return selectedSpectra[0];\n}\n//# sourceMappingURL=getXYSpectrum.js.map","import { isAnyArray } from 'is-any-array';\nimport { stringify, xIsMonotonic, xMaxValue, xMinValue, } from 'ml-spectra-processing';\nimport { getNormalizedSpectrum } from './util/getNormalizedSpectrum.js';\nimport { getXYSpectra } from './util/getXYSpectra.js';\nimport { getXYSpectrum } from './util/getXYSpectrum.js';\n/**\n * Class allowing to store and manipulate an analysis.\n * An analysis may contain one or more spectra that can be selected\n * based on their units\n */\nexport class Analysis {\n    id;\n    label;\n    spectrumCallback;\n    spectra;\n    cache;\n    constructor(options = {}) {\n        this.id = options.id || Math.random().toString(36).slice(2, 10);\n        this.label = options.label || this.id;\n        this.spectrumCallback = options.spectrumCallback;\n        this.spectra = [];\n        this.cache = { spectrum: {}, spectra: {} };\n    }\n    clone({ filter }) {\n        const { ids } = filter;\n        const analysis = new Analysis();\n        analysis.id = this.id;\n        analysis.label = this.label;\n        analysis.spectrumCallback = this.spectrumCallback;\n        analysis.spectra = this.spectra.filter((spectrum) => {\n            //@ts-expect-error spectrum.id is not expected to be undefined at this level\n            return !ids || ids.includes(spectrum.id);\n        });\n        return analysis;\n    }\n    toJSON() {\n        // TODO this is likely not the most optimized way to remove typedArray\n        // if data are small seems still reasonable\n        return {\n            id: this.id,\n            label: this.label,\n            spectra: JSON.parse(stringify(this.spectra)),\n        };\n    }\n    static fromJSON(json) {\n        const analysis = new Analysis();\n        analysis.id = json.id;\n        analysis.label = json.label;\n        analysis.spectra = json.spectra;\n        return analysis;\n    }\n    /**\n     * Add a spectrum in the internal spectra variable\n     * @param variables\n     * @param options\n     */\n    pushSpectrum(variables, options = {}) {\n        this.spectra.push(standardizeData(variables, options, {\n            spectrumCallback: this.spectrumCallback,\n        }));\n        this.cache = { spectrum: {}, spectra: {} };\n    }\n    /**\n     * Retrieve a MeasurementXY based on x/y units\n     * @param selector\n     */\n    getXYSpectrum(selector = {}) {\n        const id = JSON.stringify(selector);\n        if (!this.cache.spectrum[id]) {\n            this.cache.spectrum[id] = getXYSpectrum(this.spectra, selector);\n        }\n        return this.cache.spectrum[id];\n    }\n    /**\n     * Retrieve spectra matching selector\n     * @param selector\n     */\n    getXYSpectra(selector = {}) {\n        const id = JSON.stringify(selector);\n        if (!this.cache.spectra[id]) {\n            this.cache.spectra[id] = getXYSpectra(this.spectra, selector);\n        }\n        return this.cache.spectra[id];\n    }\n    /**\n     * Retrieve a xy object\n     * @param selector.units - Units separated by vs like for example \"g vs °C\"\n     * @param selector.xUnits - if undefined takes the first variable\n     * @param selector.yUnits - if undefined takes the second variable\n     * @param selector\n     */\n    getXY(selector = {}) {\n        const spectrum = this.getXYSpectrum(selector);\n        if (!spectrum)\n            return undefined;\n        return {\n            x: spectrum.variables.x.data,\n            y: spectrum.variables.y.data,\n        };\n    }\n    /**\n     * Return the data object for specific x/y units with possibly some\n     * normalization options\n     * @param options.selector.xUnits - // if undefined takes the first variable\n     * @param options.selector.yUnits - // if undefined takes the second variable\n     * @param options\n     */\n    getNormalizedSpectrum(options = {}) {\n        const { normalization, selector } = options;\n        const spectrum = this.getXYSpectrum(selector);\n        if (!spectrum)\n            return undefined;\n        return getNormalizedSpectrum(spectrum, normalization);\n    }\n    /**\n     * @param options\n     */\n    getNormalizedSpectra(options = {}) {\n        const { normalization, selector } = options;\n        const spectra = this.getXYSpectra(selector);\n        if (spectra.length === 0)\n            return [];\n        const normalizedSpectra = [];\n        for (const spectrum of spectra) {\n            normalizedSpectra.push(getNormalizedSpectrum(spectrum, normalization));\n        }\n        return normalizedSpectra;\n    }\n    /**\n     * Returns the first spectrum. This method could be improved in the future\n     * @returns\n     */\n    getSpectrum() {\n        return this.spectra[0];\n    }\n    /**\n     * Returns the xLabel\n     * @param selector.xUnits - // if undefined takes the first variable\n     * @param selector.yUnits - // if undefined takes the second variable\n     * @param selector\n     */\n    getXLabel(selector) {\n        return this.getXYSpectrum(selector)?.variables.x.label;\n    }\n    /**\n     * Returns the yLabel\n     * @param selector.xUnits - // if undefined takes the first variable\n     * @param selector.yUnits - // if undefined takes the second variable\n     * @param selector\n     */\n    getYLabel(selector) {\n        return this.getXYSpectrum(selector)?.variables.y.label;\n    }\n}\n/**\n * Internal function that ensure the order of x / y array\n * @param variables\n * @param options\n * @param analysisOptions\n */\nfunction standardizeData(variables, options, analysisOptions) {\n    const { meta = {}, dataType = '', title = '', id = Math.random().toString(36).replace('0.', ''), } = options;\n    const { spectrumCallback } = analysisOptions;\n    if (spectrumCallback) {\n        spectrumCallback(variables);\n    }\n    const xVariable = variables.x;\n    const yVariable = variables.y;\n    if (!xVariable || !yVariable) {\n        throw new Error('A spectrum must contain at least x and y variables');\n    }\n    if (!isAnyArray(xVariable.data) || !isAnyArray(yVariable.data)) {\n        throw new Error('x and y variables must contain an array data');\n    }\n    const x = xVariable.data;\n    const reverse = x && x.length > 1 && x[0] > x.at(-1);\n    for (const [key, variable] of Object.entries(variables)) {\n        if (reverse)\n            variable.data = variable.data.toReversed();\n        variable.label = variable.label || key;\n        if (variable.label.match(/^.*[([](?<units>.*)[)\\]].*$/)) {\n            const units = variable.label.replace(/^.*[([](?<units>.*)[)\\]].*$/, '$<units>');\n            if (!variable.units || variable.units === units) {\n                variable.units = units;\n                variable.label = variable.label.replace(/[([].*[)\\]]/, '').trim();\n            }\n        }\n        variable.min = xMinValue(variable.data);\n        variable.max = xMaxValue(variable.data);\n        variable.isMonotonic = xIsMonotonic(variable.data);\n    }\n    return {\n        variables,\n        title,\n        dataType,\n        meta,\n        id,\n    };\n}\n//# sourceMappingURL=Analysis.js.map","export function appendDistinctParameter(values, key, value) {\n    if (!values[key]) {\n        values[key] = {\n            key,\n            values: [],\n            count: 0,\n        };\n    }\n    if (!values[key].values.includes(value)) {\n        values[key].values.push(value);\n    }\n    values[key].count++;\n}\n//# sourceMappingURL=appendDistinctParameter.js.map","export function appendDistinctValue(values, key) {\n    if (!values[key]) {\n        values[key] = {\n            key,\n            count: 0,\n        };\n    }\n    values[key].count++;\n}\n//# sourceMappingURL=appendDistinctValue.js.map","import { Analysis } from './Analysis.js';\nimport { appendDistinctParameter } from './util/appendDistinctParameter.js';\nimport { appendDistinctValue } from './util/appendDistinctValue.js';\nexport class AnalysesManager {\n    analyses;\n    constructor() {\n        this.analyses = [];\n    }\n    static fromJSON(json) {\n        const analysesManager = new AnalysesManager();\n        for (const analysis of json.analyses) {\n            analysesManager.analyses.push(Analysis.fromJSON(analysis));\n        }\n        return analysesManager;\n    }\n    addAnalysis(analysis) {\n        const index = this.getAnalysisIndex(analysis.id);\n        if (index === undefined) {\n            this.analyses.push(analysis);\n        }\n        else {\n            this.analyses[index] = analysis;\n        }\n    }\n    /**\n     *\n     * @param options\n     * @returns\n     */\n    getAnalyses(options = {}) {\n        const { ids } = options;\n        const analyses = [];\n        const processedAnalysisIds = new Set();\n        for (const analysis of this.analyses) {\n            if (!ids || ids.includes(analysis.id)) {\n                analyses.push(analysis);\n                processedAnalysisIds.add(analysis.id);\n                continue;\n            }\n            for (const spectrum of analysis.spectra) {\n                if (spectrum.id &&\n                    ids.includes(spectrum.id) &&\n                    !processedAnalysisIds.has(analysis.id)) {\n                    analyses.push(analysis.clone({ filter: { ids } }));\n                    processedAnalysisIds.add(analysis.id);\n                }\n            }\n        }\n        return analyses;\n    }\n    getSpectra() {\n        const spectra = [];\n        for (const analysis of this.analyses) {\n            spectra.push(...analysis.spectra);\n        }\n        return spectra;\n    }\n    getAnalysisBySpectrumId(id) {\n        for (const analysis of this.analyses) {\n            for (const spectrum of analysis.spectra) {\n                if (spectrum.id === id)\n                    return analysis;\n            }\n        }\n        return undefined;\n    }\n    getSpectrumById(id) {\n        for (const analysis of this.analyses) {\n            for (const spectrum of analysis.spectra) {\n                if (spectrum.id === id)\n                    return spectrum;\n            }\n        }\n        return undefined;\n    }\n    /**\n     * Get an array of objects (key + count) of all the titles\n     */\n    getDistinctTitles() {\n        const values = {};\n        for (const spectrum of this.getSpectra()) {\n            if (spectrum.title) {\n                appendDistinctValue(values, spectrum.title);\n            }\n        }\n        return Object.keys(values).map((key) => values[key]);\n    }\n    /**\n     * Get an array of objects (key + count) of all the units\n     */\n    getDistinctUnits() {\n        const values = {};\n        for (const spectrum of this.getSpectra()) {\n            if (spectrum.variables) {\n                for (const [, variable] of Object.entries(spectrum.variables)) {\n                    if (variable.units) {\n                        appendDistinctValue(values, variable.units);\n                    }\n                }\n            }\n        }\n        return Object.keys(values).map((key) => values[key]);\n    }\n    /**\n     * Get an array of objects (key + unit + label + count) of all the units\n     */\n    getDistinctLabelUnits() {\n        const values = {};\n        for (const spectrum of this.getSpectra()) {\n            if (spectrum.variables) {\n                for (const [, variable] of Object.entries(spectrum.variables)) {\n                    const { label, units } = normalizeLabelUnits(variable.label, variable.units);\n                    const key = label + (units ? ` (${units})` : '');\n                    if (key) {\n                        if (!values[key]) {\n                            values[key] = { key, units, label, count: 0 };\n                        }\n                        values[key].count++;\n                    }\n                }\n            }\n        }\n        return Object.keys(values).map((key) => values[key]);\n    }\n    /**\n     * Get an array of objects (key + count) of all the labels\n     */\n    getDistinctLabels() {\n        const values = {};\n        for (const spectrum of this.getSpectra()) {\n            if (spectrum.variables) {\n                for (const [, variable] of Object.entries(spectrum.variables)) {\n                    appendDistinctValue(values, variable.label.replace(/\\s+[([].*$/, ''));\n                }\n            }\n        }\n        return Object.keys(values).map((key) => values[key]);\n    }\n    /**\n     * Get an array of objects (key + count) of all the dataTypes\n     */\n    getDistinctDataTypes() {\n        const values = {};\n        for (const spectrum of this.getSpectra()) {\n            if (spectrum.dataType) {\n                appendDistinctValue(values, spectrum.dataType);\n            }\n        }\n        return Object.keys(values).map((key) => values[key]);\n    }\n    /**\n     * Get an array of objects (key + count) of all the meta\n     */\n    getDistinctMeta() {\n        const values = {};\n        for (const spectrum of this.getSpectra()) {\n            if (spectrum.meta) {\n                for (const key in spectrum.meta) {\n                    appendDistinctParameter(values, key, spectrum.meta[key]);\n                }\n            }\n        }\n        return Object.keys(values).map((key) => values[key]);\n    }\n    removeAllAnalyses() {\n        this.analyses.splice(0);\n    }\n    /**\n     * Remove the analysis from the AnalysesManager for the specified id\n     * @param id\n     */\n    removeAnalysis(id) {\n        const index = this.getAnalysisIndex(id);\n        if (index === undefined)\n            return undefined;\n        return this.analyses.splice(index, 1);\n    }\n    /**\n     * Returns the index of the analysis in the analyses array\n     * @param id\n     */\n    getAnalysisIndex(id) {\n        if (!id)\n            return undefined;\n        for (let i = 0; i < this.analyses.length; i++) {\n            const analysis = this.analyses[i];\n            if (analysis.id === id)\n                return i;\n        }\n        return undefined;\n    }\n    /**\n     * Checks if the ID of an analysis exists in the AnalysesManager\n     * @param id\n     */\n    includes(id) {\n        const index = this.getAnalysisIndex(id);\n        return index === undefined ? false : !Number.isNaN(index);\n    }\n}\nfunction normalizeLabelUnits(originalLabel, originalUnits) {\n    if (!originalLabel) {\n        return { units: '', label: '' };\n    }\n    if (originalLabel.search(/[([]]/) >= 0) {\n        const [units, label] = originalLabel.split(/\\s*[([]/);\n        return { units: originalUnits || units, label };\n    }\n    return { label: originalLabel, units: originalUnits };\n}\n//# sourceMappingURL=AnalysesManager.js.map","/**\n * Ensure that the data is string. If it is an ArrayBuffer it will be converted to string using TextDecoder.\n * @param blob\n * @param options\n * @returns\n */\nexport function ensureString(blob, options = {}) {\n    if (typeof blob === 'string') {\n        return blob;\n    }\n    if (ArrayBuffer.isView(blob) || blob instanceof ArrayBuffer) {\n        if (options.encoding) {\n            return new TextDecoder(options.encoding).decode(blob);\n        }\n        else {\n            return decodeText(blob);\n        }\n    }\n    throw new TypeError(`blob must be a string, ArrayBuffer or ArrayBufferView`);\n}\nfunction decodeText(blob) {\n    const uint8 = ArrayBuffer.isView(blob)\n        ? new Uint8Array(blob.buffer, blob.byteOffset, blob.byteLength)\n        : new Uint8Array(blob);\n    if (uint8.length >= 2) {\n        if (uint8[0] === 0xfe && uint8[1] === 0xff) {\n            return new TextDecoder('utf-16be').decode(uint8);\n        }\n        if (uint8[0] === 0xff && uint8[1] === 0xfe) {\n            return new TextDecoder('utf-16le').decode(uint8);\n        }\n    }\n    try {\n        return new TextDecoder('utf-8', { fatal: true }).decode(uint8);\n    }\n    catch {\n        return new TextDecoder('latin1').decode(uint8);\n    }\n}\n//# sourceMappingURL=index.js.map","export function parseString(value) {\n    if (value.length === 4 || value.length === 5) {\n        const lowercase = value.toLowerCase();\n        if (lowercase === 'true')\n            return true;\n        if (lowercase === 'false')\n            return false;\n    }\n    const number = Number(value);\n    if (number === 0 && !value.includes('0')) {\n        return value;\n    }\n    if (!Number.isNaN(number))\n        return number;\n    return value;\n}\n//# sourceMappingURL=parseString.js.map","export const gyromagneticRatioMHzT = {\n    '1H': 42.577478615342585,\n    '2H': 6.5359028540009305,\n    '3H': 45.41483815473964,\n    '3He': -32.43604456417949,\n    '6Li': 6.266099405837534,\n    '7Li': 16.548177299618295,\n    '9Be': -5.983379963834242,\n    '10B': 4.57473388220653,\n    '11B': 13.66160796005943,\n    '13C': 10.707746367473973,\n    '14N': 3.076272817251739,\n    '15N': -4.3152552187859134,\n    '17O': -5.7734832203316975,\n    '19F': 40.06924371705693,\n    '21Ne': -3.362579959801532,\n    '22Na': 4.436349259342206,\n    '23Na': 11.268733657034753,\n    '25Mg': -2.607933066661972,\n    '26Al': 4.273225764239245,\n    '27Al': 11.100630067688776,\n    '29Si': -8.461871234008282,\n    '31P': 17.241162495263175,\n    '33S': 3.2688220630834754,\n    '35Cl': 4.175656570906633,\n    '36Cl': 4.897135020041924,\n    '37Cl': 3.4759025124743057,\n    '39Ar': -3.462835209795831,\n    '39K': 1.9893443809332112,\n    '40K': -2.4734743333970806,\n    '41K': 1.091921234883595,\n    '41Ca': -3.4724832349401047,\n    '43Ca': -2.8689916395725414,\n    '45Sc': 10.353659488911559,\n    '47Hi': -2.403068251036403,\n    '49Hi': -2.403730327705445,\n    '50V': 4.248579379465121,\n    '51V': 11.208261084083814,\n    '53Cr': -2.4103147963328766,\n    '53Mn': 10.961289063460638,\n    '55Mn': 10.570707386401027,\n    '57Fe': 1.3818237005731187,\n    '59Co': 10.050933643526891,\n    '60Co': 5.7916463354780205,\n    '61Ni': -3.809518009468367,\n    '63Ni': 7.561612483277437,\n    '63Cu': 11.311420179117773,\n    '65Cu': 12.116874196993763,\n    '67Zn': 2.6674502745948656,\n    '69Ga': 10.23978520568125,\n    '71Ga': 13.010902748192017,\n    '73Ge': -1.4876591727852992,\n    '75As': 7.3090505609529135,\n    '77Se': 8.134221686648205,\n    '79Se': -2.21708568778123,\n    '79Br': 10.695006473323717,\n    '81Br': 11.528409999706447,\n    '81Kr': -1.9753405882294455,\n    '83Kr': -1.6443288722876133,\n    '85Kr': -1.703226109304539,\n    '85Rb': 4.125530397832004,\n    '87Rb': 13.981309683545954,\n    '87Sr': -1.851714225407608,\n    '89Y': -2.0931336103407774,\n    '91Zr': -3.970456361178983,\n    '91Nb': 11.032433266932335,\n    '92Nb': 5.58627189504799,\n    '93Nb': 10.439564904668199,\n    '95Mo': -2.784380854729418,\n    '97Mo': -2.842922370728985,\n    '97Hc': 9.858553909649345,\n    '99Hc': 9.618018745530753,\n    '99Ru': -1.9544329039438861,\n    '101Ru': -2.1892087754004836,\n    '103Rh': -1.3459975123963002,\n    '105Pd': -1.9574819412355304,\n    '107Ag': -1.730633566737207,\n    '109Ag': 1.9896492846623755,\n    '111Cd': -9.05564075618306,\n    '113Cd': -9.471834346492482,\n    '113In': 9.351736155393834,\n    '115In': 9.371724288750167,\n    '115Sn': -13.985934056771613,\n    '117Sn': -15.237563864991529,\n    '119Sn': -15.944940516652968,\n    '121Sn': 3.541456814244654,\n    '121Sb': 10.238667225340981,\n    '123Sb': 5.544238738098897,\n    '125Sb': 5.727834340731468,\n    '123He': -11.217408195958745,\n    '125He': -13.522480388441707,\n    '127I': 8.563831041040862,\n    '129I': 5.6984329097048985,\n    '129Xe': -11.860160502223787,\n    '131Xe': 3.5157686750625525,\n    '133Cs': 5.614148807428737,\n    '134Cs': 5.69655448494487,\n    '135Cs': 5.941920316280481,\n    '137Cs': 6.179527436650749,\n    '133Ba': 11.767759427100511,\n    '135Ba': 4.258996923544905,\n    '137Ba': 4.7641207681939495,\n    '137La': 5.871574670194692,\n    '138La': 5.653524946166542,\n    '139La': 6.052556812291568,\n    '141Pr': 13.00719308615385,\n    '143Nd': -2.319446225429283,\n    '145Nd': -1.4286917595132482,\n    '145Pm': 11.586341708247685,\n    '147Pm': 5.618940151744178,\n    '147Sm': -1.7619079778143567,\n    '149Sm': -1.454172999736274,\n    '151Sm': -1.099177943637708,\n    '150Eu': 4.119249381011216,\n    '151Eu': 10.560340659609437,\n    '152Eu': -4.917588978540037,\n    '153Eu': 4.66319763384053,\n    '154Eu': -5.081728819406879,\n    '155Eu': 4.622340534132499,\n    '155Gd': -1.3166759371083225,\n    '157Gd': -1.7267714528344573,\n    '157Hb': 10.315909503395963,\n    '158Hb': 4.4541353102101295,\n    '159Hb': 10.209193198188421,\n    '161Hy': -1.4604888626975372,\n    '163Hy': 2.04590402269321,\n    '163Ho': 9.190669550527298,\n    '165Ho': 9.059996523742551,\n    '166Ho': 3.941969641339908,\n    '167Er': -1.2246240493510665,\n    '169Hm': -3.5216380718489675,\n    '171Hm': -3.506392885390747,\n    '171Yb': 7.505205293382021,\n    '173Yb': -2.067247283734719,\n    '173Lu': 4.950329831362216,\n    '174Lu': 15.107979780096652,\n    '175Lu': 4.847315928580239,\n    '176Lu': 3.4410563719983727,\n    '177Hf': 1.7227060697789323,\n    '179Hf': -1.0822388475730185,\n    '179Ha': 4.978642320498912,\n    '180Ha': 4.077240422770786,\n    '181Ha': 5.15069513909883,\n    '183W': 1.7896324383305209,\n    '185Re': 9.683742438261751,\n    '187Re': 9.784360668886006,\n    '187Os': 0.9820949116385737,\n    '189Os': 3.3417448716419638,\n    '191Ir': 0.7632756686749131,\n    '193Ir': 0.8283217975633214,\n    '193Pt': 9.162357061390605,\n    '195Pt': 9.258401736077394,\n    '197Au': 0.7378670245778789,\n    '199Hg': 7.68204945629738,\n    '201Hg': -2.8356046812290385,\n    '203Hl': 24.63622131648455,\n    '204Hl': 0.3430166953099643,\n    '205Hl': 24.88014429981608,\n    '205Pb': 2.162987054692344,\n    '207Pb': 9.00380712222511,\n    '207Bi': 6.899124436187426,\n    '208Bi': 6.970099248698476,\n    '209Bi': 6.931478109670983,\n    '209Po': 10.366726791590036,\n    '227Ac': 6.1997091596763925,\n    '229Hh': 1.402557154156299,\n    '231Pa': 10.11264035061969,\n    '233U': -1.7989320020700355,\n    '235U': -0.827595836303406,\n    '237Np': 9.634957841595446,\n    '239Pu': 3.079527664560569,\n    '241Pu': -2.067247283734719,\n    '241Am': 4.878459666630606,\n    '243Am': 4.634536683299075,\n    '243Cm': 1.2196149166576515,\n    '245Cm': 1.0889418898729026,\n    '247Cm': 0.6098074583288254,\n};\n//# sourceMappingURL=gyromagneticRatioMHzT.js.map","import { gyromagneticRatio } from '.';\n/**\n * Attempts to resolve a nucleus string to a canonical gyromagnetic nucleus symbol.\n * @param nucleus - The name or symbol of the nucleus (e.g., '1H', 'proton').\n * @returns The canonical nucleus symbol if found, otherwise null.\n */\nexport function getGyromagneticNucleus(nucleus) {\n    nucleus = nucleus.toLowerCase();\n    if (nucleus === 'proton')\n        return '1H';\n    for (const key in gyromagneticRatio) {\n        if (key.toLowerCase() === nucleus)\n            return key;\n    }\n    if (nucleus in gyromagneticRatio) {\n        return nucleus;\n    }\n    // we try to use only the numbers\n    const nucleusNumber = nucleus.replaceAll(/[^0-9]/g, '');\n    if (!nucleusNumber)\n        return null;\n    const filteredNuclei = [];\n    for (const key in gyromagneticRatio) {\n        if (key.replaceAll(/[^0-9]/g, '') === nucleusNumber) {\n            filteredNuclei.push(key);\n        }\n    }\n    if (filteredNuclei.length === 1) {\n        return filteredNuclei[0];\n    }\n    return null;\n}\n//# sourceMappingURL=getGyromagneticNucleus.js.map","import { getGyromagneticNucleus, gyromagneticRatio } from '.';\n/**\n * Returns the gyromagnetic ratio for a given nucleus string.\n * @param nucleus - The name or symbol of the nucleus (e.g., '1H', 'proton').\n * @returns The gyromagnetic ratio for the nucleus, or null if not found.\n */\nexport function getGyromagneticRatio(nucleus) {\n    const realNucleus = getGyromagneticNucleus(nucleus);\n    if (realNucleus) {\n        return gyromagneticRatio[realNucleus];\n    }\n    return null;\n}\n//# sourceMappingURL=getGyromagneticRatio.js.map","import { gyromagneticRatioMHzT } from './gyromagneticRatioMHzT';\nexport const gyromagneticRatio = Object.fromEntries(Object.entries(gyromagneticRatioMHzT).map(([key, value]) => [\n    key,\n    value * 2 * Math.PI * 1e6,\n]));\nexport * from './gyromagneticRatioMHzT';\nexport * from './getGyromagneticNucleus';\nexport * from './getGyromagneticRatio';\n//# sourceMappingURL=index.js.map","// eslint-disable-next-line @typescript-eslint/unbound-method\nconst toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array, except those that contain bigint values).\n *\n * @param value - Object to check.\n * @returns True if the object is an array or a typed array.\n */\nexport function isAnyArray(value) {\n    const tag = toString.call(value);\n    return tag.endsWith('Array]') && !tag.includes('Big');\n}\n//# sourceMappingURL=index.js.map","(function(){function a(d){for(var e=0,f=d.length-1,g=void 0,h=void 0,i=void 0,j=c(e,f);!0;){if(f<=e)return d[j];if(f==e+1)return d[e]>d[f]&&b(d,e,f),d[j];for(g=c(e,f),d[g]>d[f]&&b(d,g,f),d[e]>d[f]&&b(d,e,f),d[g]>d[e]&&b(d,g,e),b(d,g,e+1),h=e+1,i=f;!0;){do h++;while(d[e]>d[h]);do i--;while(d[i]>d[e]);if(i<h)break;b(d,h,i)}b(d,e,i),i<=j&&(e=h),i>=j&&(f=i-1)}}var b=function b(d,e,f){var _ref;return _ref=[d[f],d[e]],d[e]=_ref[0],d[f]=_ref[1],_ref},c=function c(d,e){return~~((d+e)/2)};'undefined'!=typeof module&&module.exports?module.exports=a:window.median=a})();\n","import { isAnyArray } from 'is-any-array';\nimport quickSelectMedian from 'median-quickselect';\n\nfunction median(input) {\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  return quickSelectMedian(input.slice());\n}\n\nexport { median as default };\n","import{ensureString as me}from\"ensure-string\";var $=/\\s*\\$\\$.*/;function E(e,m=/\\r\\n/.exec(e)?`\\r\n`:`\n`){return e.split(m).map(o=>o.replace($,\"\")).filter(Boolean).join(m).trim()}function Le(e,m={}){e=me(e);let{flatten:t=!1}=m,o=e.split(/\\r?\\n/),l=[],i=[],n=[],f={title:\"\",jcamp:\"\",children:[]},s=0,u=e.includes(\"## \");for(let c=0;c<o.length;c++){let b=o[c],p=u?b.replaceAll(\" \",\"\"):b;if(p.startsWith(\"##NTUPLES\")&&s++,p.startsWith(\"##TITLE\")){let r=[p.slice(8).trim()];for(let a=c+1;a<o.length&&!o[a].startsWith(\"##\");a++)r.push(o[a].trim());i.push({title:r.join(`\n`),jcamp:`${b}\n`,children:[]}),f=i.at(-1),l.push(f)}else if(p.startsWith(\"##END\")&&s===0&&f){f.jcamp+=`${b}\n`;let r=i.pop();if(!r)throw new Error(\"Not finished\");i.length>0?(f=i.at(-1),f.children?.push(r)):(f=void 0,n.push(r))}else if(f?.jcamp){f.jcamp+=`${b}\n`;let r=p.match(/^##(.*?)=(.+)/);if(r){let a=r[1].replaceAll(/[ _-]/g,\"\").toUpperCase();a===\"DATATYPE\"?f.dataType=r[2].trim():a===\"DATACLASS\"?f.dataClass=r[2].trim():a===\"JCAMPDX\"?f.jcampDX=E(r[2].trim()):a===\"JCAMPCS\"&&(f.jcampCS=E(r[2].trim()))}}p.startsWith(\"##END\")&&s>0&&s--}if(t){for(let c of l)c.children=void 0;return l}else return n}import{parseString as be}from\"dynamic-typing\";import{ensureString as ge}from\"ensure-string\";var te=[\"TIC\",\".RIC\",\"SCANNUMBER\"];function ne(e){let m=e.spectra,t=m.length,o={times:new Array(t),series:{ms:{dimension:2,data:new Array(t)}}},l=[];for(let i of te){let n=k(i);m[0][n]&&(l.push(n),o.series[n]={dimension:1,data:new Array(t)})}for(let i=0;i<t;i++){let n=m[i];o.times[i]=n.pageValue;for(let f of l)o.series[f].data[i]=Number(n[f]);n.data&&(o.series.ms.data[i]=[n.data.x,n.data.y])}e.chromatogram=o}function re(e){return te.includes(e)}function k(e){return e.toLowerCase().replaceAll(/[^a-z0-9]/g,\"\")}function O(e){return e.map(Number)}function V(e,m,t){let{logger:o}=t;o&&(e.xFactor||o.info(\"The xFactor is not defined, it will be set to 1\"),e.yFactor||o.info(\"The yFactor is not defined, it will be set to 1\"));let l=e.yFactor??1,i=e.xFactor??1,n=e.deltaX??1,f=Math.abs(n*.1),s=.01;e.isXYdata=!0;let u={x:[],y:[]};e.data=u;let c=e.firstX||0,b=e.firstY||0,p=!1,r,a=0;for(;a<m.length;a++)if(r=m.codePointAt(a),r===13||r===10)p=!0;else if(p)break;let d=0,g=!0,A=!1,x=!1,I=0,S=!1,C=!1,h=0,X=0,L=!1,N=!1,Y=!1,F=0;for(;a<=m.length;a++)if(a===m.length?r=13:r=m.codePointAt(a),C)(r===13||r===10)&&(g=!0,C=!1,d++);else if(r<=57&&r>=48)N=!0,F>0?h+=(r-48)/10**F++:(h*=10,h+=r-48);else if(r===44||r===46)N=!0,F++;else{if(N){if(L&&(h=h*-1,L=!1),g)h*=i,o&&(x?Math.abs(c-n-h)>f&&(Math.abs(c-h)<f?o.trace(`Data line ${d}: After a DIFFERENCE the next line should repeat the last value and this does not seem to be the case: Current value: ${h} - Expected: ${c}.`):Math.abs(c-n-h)>10*f?o.trace(`Data line ${d}: The difference between the first value ${h} and the expected first x value ${c} based on increment after a DIFFERENCE is too high`):o.trace(`Data line ${d}: The difference between the first value ${h} and the expected first x value ${c} based on increment after a DIFFERENCE is too high`)):Math.abs(c-h)>f&&o.trace(`Data line ${d}: The difference between the first value ${h} and the first x value ${c} is too high`)),g=!1,x&&(Y=!0);else if(Y)Y=!1,o&&Math.abs(b-h)>s&&o.trace(`Data line ${d}: After a duplicate the next line should repeat the same value ${h} !== ${b}`),b=h;else{A?(I=L?0-h:h,x=!0,A=!1):S||(X=L?0-h:h);let y=S?h-1:1;for(let M=0;M<y;M++)x?b+=I:b=X,u.x.push(c),u.y.push(b*l),c+=n}L=!1,h=0,F=0,N=!1,S=!1}if(r<74&&r>63)N=!0,x=!1,h=r-64;else if(r>96&&r<106)N=!0,x=!1,h=r-96,L=!0;else if(r===115)N=!0,S=!0,h=9;else if(r>82&&r<91)N=!0,S=!0,h=r-82;else if(r>73&&r<83)N=!0,A=!0,h=r-73;else if(r>105&&r<115)N=!0,A=!0,h=r-105,L=!0;else if(r===36&&m.codePointAt(a+1)===36)N=!0,C=!0;else if(r===37)N=!0,A=!0,h=0,L=!1;else if(r===45){let y=m.codePointAt(a+1);(y!==void 0&&y>=48&&y<=57||y===44||y===46)&&(N=!0,g||(x=!1),L=!0)}else(r===13||r===10)&&(g=!0,C=!1,d++)}o&&x&&o.warn(\"The last value is a difference, it should be repeated on the next line\")}var oe=/[,\\t ]+/;function w(e,m,t){if(e.isPeaktable=!0,!e.variables||Object.keys(e.variables).length===2?ce(e,m,t):ue(e,m,t),e.variables)for(let o in e.variables)e.variables[o].data=e.data?.[o]}function ce(e,m,t){let{logger:o}=t,l={x:[],y:[]};e.data=l;let i=m.split(/,? *,?[;\\r\\n]+ */);for(let n=1;n<i.length;n++){let f=i[n].trim().replace($,\"\").split(oe);if(f.length%2===0)for(let s=0;s<f.length;s=s+2)e.xFactor!==void 0&&e.yFactor!==void 0&&(l.x.push(Number(f[s])*e.xFactor),l.y.push(Number(f[s+1])*e.yFactor));else o?.warn(`Format error: ${f.toString()}`)}}function ue(e,m,t){let{logger:o}=t,l={},i=Object.keys(e.variables),n=i.length;for(let s of i)l[s]=[];e.data=l;let f=m.split(/,? *,?[;\\r\\n]+ */);for(let s=1;s<f.length;s++){let u=f[s].trim().replace($,\"\").split(oe);if(u.length%n===0)for(let c=0;c<u.length;c++)l[i[c%n]].push(Number(u[c]));else o?.warn(`Wrong number of columns: ${u.toString()}`)}}function B(e,m){e.isXYAdata=!0;let t={};e.data=t;let o=m.split(/\\r?\\n/),l=o[0].replace(/^.*?([A-Z]+).*$/,\"$1\").split(\"\").map(i=>i.toLowerCase());for(let i=1;i<o.length;i++){let n=o[i].replace(/^\\((.*)\\)$/,\"$1\").split(/ *, */);for(let f=0;f<l.length;f++){let s=n[f];switch(l[f]){case\"x\":case\"y\":case\"w\":s=Number.parseFloat(s);break;case\"a\":s=s.replace(/^<(.*)>$/,\"$1\");break;case\"m\":break;default:continue}t[l[f]]||(t[l[f]]=[]),t[l[f]].push(s)}}}import{parseString as le}from\"dynamic-typing\";import{getGyromagneticRatio as ie}from\"gyromagnetic-ratio\";import ae from\"ml-array-median\";function se(e){return Array.isArray(e)?e[0]:e}function Z(e){let{spectra:m}=e,t=m[0].data.y[0],o=t,l=m.length,i=m[0].data.x.length||0,n=new Array(l);for(let r=0;r<l;r++){n[r]=m[r].data.y;for(let a=0;a<i;a++){let d=n[r][a];d<t&&(t=d),d>o&&(o=d)}}let f=m[0].data.x[0],s=m[0].data.x.at(-1),{firstY:u,lastY:c}=pe(e);if(f>s)for(let r of n)r.reverse();u>c&&n.reverse();let b=[];for(let r of n){let a=Float64Array.from(r);for(let d=0;d<a.length;d++)a[d]<0&&(a[d]=-a[d]);b.push(ae(a))}let p=ae(b);return{z:n,minX:Math.min(f,s),maxX:Math.max(f,s),minY:Math.min(u,c),maxY:Math.max(u,c),minZ:t,maxZ:o,noise:p}}function pe(e){let{spectra:m,ntuples:t,info:o}=e;if(t)for(let l of t){let{symbol:i,nucleus:n,units:f}=l;if(i.match(/[F|T]1/)&&f?.toUpperCase().match(\"HZ\")){let s=se(o[\".OBSERVEFREQUENCY\"]),{nucleus:u}=t.find(d=>d.symbol.match(/[F|T]2/));if([s,u,n].some(d=>!d))break;let c=ie(u),b=ie(n),{first:p,last:r}=l,a=b!==null&&c!==null?s*b/c:s;return{firstY:p/a,lastY:r/a}}}return{firstY:m[0].pageValue,lastY:m.at(-1).pageValue}}function H(e,m){let t=e.noise,o=e.z,l,i,n,f,s,u,c,b,p=o.length,r=o[0].length,a,d,g,A,x=e.minX,S=(e.maxX-x)/(r-1),C=e.minY,X=(e.maxY-C)/(p-1),L=e.minZ,N=e.maxZ,Y=m.nbContourLevels*2,F=new Array(Y),y;for(let M=0;M<Y;M++){let U={};F[M]=U;let fe=M%2,Q=(N-m.noiseMultiplier*t)*Math.exp((M>>1)-m.nbContourLevels);fe===0?y=Q+m.noiseMultiplier*t:y=0-Q-m.noiseMultiplier*t;let D=[];if(U.zValue=y,U.lines=D,!(y<=L||y>=N))for(let v=0;v<p-1;v++){let _=o[v],ee=o[v+1];for(let T=0;T<r-1;T++)l=_[T],i=_[T+1],n=ee[T],f=ee[T+1],s=l>y,u=i>y,c=n>y,b=f>y,s!==u&&s!==c&&(a=T+(y-l)/(i-l),d=v,g=T,A=v+(y-l)/(n-l),D.push(a*S+x,d*X+C,g*S+x,A*X+C)),b!==u&&b!==c&&(a=T+1,d=v+1-(y-f)/(i-f),g=T+1-(y-f)/(n-f),A=v+1,D.push(a*S+x,d*X+C,g*S+x,A*X+C)),u!==c&&(a=(T+1-(y-i)/(n-i))*S+x,d=(v+(y-i)/(n-i))*X+C,u!==s&&(g=T+1-(y-i)/(l-i),A=v,D.push(a,d,g*S+x,A*X+C)),c!==s&&(g=T,A=v+1-(y-n)/(l-n),D.push(a,d,g*S+x,A*X+C)),u!==b&&(g=T+1,A=v+(y-i)/(f-i),D.push(a,d,g*S+x,A*X+C)),c!==b&&(g=T+(y-n)/(f-n),A=v+1,D.push(a,d,g*S+x,A*X+C)))}}return{minX:e.minX,maxX:e.maxX,minY:e.minY,maxY:e.maxY,segments:F}}function G(e,m){let t=Z(e);m.noContour||(e.contourLines=H(t,m),delete t.z),e.minMax=t}import{getGyromagneticRatio as W}from\"gyromagnetic-ratio\";function z(e,m){for(let t of e){let o=0,l=0;for(let i of t.spectra){if(t.ntuples?.symbol?(!o&&i.observeFrequency&&(o=i.observeFrequency),!l&&i.shiftOffsetVal&&(l=i.shiftOffsetVal)):(o=i.observeFrequency,l=i.shiftOffsetVal),o&&i.xUnits?.toUpperCase().includes(\"HZ\")&&(i.xUnits=\"PPM\",i.xFactor=i.xFactor!==void 0?i.xFactor/o:void 0,i.firstX=i.firstX!==void 0?i.firstX/o:void 0,i.lastX=i.lastX!==void 0?i.lastX/o:void 0,i.deltaX=i.deltaX!==void 0?i.deltaX/o:void 0,i.data))for(let n=0;n<i.data.x.length;n++)i.data.x[n]/=o;if(l&&i.xUnits.toLowerCase().includes(\"ppm\")&&i.firstX!==void 0&&i.lastX!==void 0){let n=i.firstX-l;if(i.firstX=i.firstX-n,i.lastX=i.lastX-n,i.data)for(let f=0;f<i.data.x.length;f++)i.data.x[f]-=n}if(t.ntuples?.nucleus&&t.ntuples.symbol)for(let n=0;n<t.ntuples.nucleus.length;n++){let f=t.ntuples.symbol[n],s=t.ntuples.nucleus[n];if(f.match(/^[F|T]/)&&!s){if(f.match(/[F|T]1/))if(t.tmp.$NUC2&&typeof t.tmp.$NUC2==\"string\")t.ntuples.nucleus[n]=t.tmp.$NUC2;else{let u=t.ntuples.symbol.indexOf(f.replace(/^([F|T]).*/,\"$12\"));u&&t.ntuples.nucleus[u]&&(t.ntuples.nucleus[n]=t.ntuples.nucleus[u])}f.match(/[F|T]2/)&&typeof t.tmp.$NUC1==\"string\"&&(t.ntuples.nucleus[n]=t.tmp.$NUC1)}f.match(/[F|T]2/)&&(t.yType=t.ntuples.nucleus[0],t.xType&&!W(t.xType)&&(t.xType=t.ntuples.nucleus[1]))}if(o&&t.ntuples?.symbol&&t.ntuples.nucleus){let n=\"\",f=t.ntuples.symbol.indexOf(i.pageSymbol);t.ntuples.units?.[f]&&(n=t.ntuples.units[f]);let{nucleus:s}=t.ntuples;if(!n.toLowerCase().match(/(ppm|seconds)/)&&s.length>1){if(f!==0){let p=\"Not sure about this ntuples format\";if(m){m.warn(p);continue}else throw new Error(p)}let{nucleus:u}=t.ntuples,c=W(u[0]),b=W(u[1]);if(!c||!b){let p=`Problem with determination of gyromagnetic ratio for ${u.join(\"-\")}`;if(m)m.error(p);else throw new Error(p)}else{let p=c/b*o;i.pageValue/=p}}}}}}function J(e){let m=e.spectra[0].data;e.chromatogram={times:m.x.slice(),series:{intensity:{dimension:1,data:m.y.slice()}}}}function q(e,m,t){z(e,t.logger),de(e,t);for(let o of e){if(Object.keys(o.ntuples).length>0){let l=[],i=Object.keys(o.ntuples);for(let n of i){let f=o.ntuples[n];if(f)for(let s=0;s<f.length;s++)l[s]||(l[s]={}),l[s][n]=f[s]}o.ntuples=l}o.twoD&&t.wantXY&&(G(o,t),t.logger?.trace({profiling:!0},\"Finished countour plot calculation\"),t.keepSpectra||delete o.spectra),t.chromatogram&&(o.spectra.length>1?ne(o):J(o),t.logger?.trace({profiling:!0},\"Finished chromatogram calculation\")),delete o.tmp}}function de(e,m){for(let t of e)for(let o in t.meta){let l=t.meta[o];if(typeof l==\"string\"){if(l.startsWith(\"{\")){if(!l.includes(\":\")&&l.endsWith(\"}\")){let i=l.slice(1,-1).split(/[,; ]+/).filter(Boolean);for(let n=0;n<i.length;n++)t.meta[o+String(n)]=m.dynamicTyping?le(i[n]):i[n]}}else if(l.startsWith(\"(\")){let i=l.split(/\\r?\\n/),n=/^\\((?<from>\\d+)\\.\\.(?<to>\\d+)\\).*$/;if(n.test(i[0])){let[f,s]=i[0].match(n)?.slice(1).map(Number)??[],u=i.slice(1).join(\" \").split(/[,; ]+/).filter(Boolean);for(let c=f;c<=s;c++)m.dynamicTyping&&typeof u[c-f]==\"string\"?t.meta[o+String(c)]=le(u[c-f]):t.meta[o+String(c)]=u[c-f]}}}}}function K(e,m,t){let o=-1,l=-1,i=\"\",n=\"\";if(t.indexOf(\"++\")>0)i=t.replace(/.*\\(([a-zA-Z0-9]+)\\+\\+.*/,\"$1\"),n=t.replace(/.*\\.\\.([a-zA-Z0-9]+).*/,\"$1\");else{t=t.replaceAll(/[^a-zA-Z%]/g,\"\"),i=t.charAt(0),n=t.charAt(1),m.variables={};for(let f of t){let s=f.toLowerCase(),u=e.ntuples.symbol?.indexOf(f)||0;if(u===-1)throw new Error(`Symbol undefined: ${f}`);m.variables[s]={};for(let c in e.ntuples)e.ntuples[c]?.[u]&&(m.variables[s][c.replace(/^var/,\"\")]=e.ntuples[c]?.[u])}}o=e.ntuples.symbol?.indexOf(i)??-1,l=e.ntuples.symbol?.indexOf(n)??-1,o===-1&&(o=0),l===-1&&(l=0),e.ntuples.first&&(e.ntuples.first.length>o&&(m.firstX=e.ntuples.first[o]),e.ntuples.first.length>l&&(m.firstY=e.ntuples.first[l])),e.ntuples.last&&(e.ntuples.last.length>o&&(m.lastX=e.ntuples.last[o]),e.ntuples.last.length>l&&(m.lastY=e.ntuples.last[l])),e.ntuples.vardim&&e.ntuples.vardim.length>o&&(m.nbPoints=e.ntuples.vardim[o]),e.ntuples.factor&&(e.ntuples.factor.length>o&&(m.xFactor=e.ntuples.factor[o]),e.ntuples.factor.length>l&&(m.yFactor=e.ntuples.factor[l])),e.ntuples.units&&(e.ntuples.units.length>o&&(e.ntuples.varname?.[o]?m.xUnits=`${e.ntuples.varname[o]} [${e.ntuples.units[o]}]`:m.xUnits=e.ntuples.units[o]),e.ntuples.units.length>l&&(e.ntuples.varname?.[l]?m.yUnits=`${e.ntuples.varname[l]} [${e.ntuples.units[l]}]`:m.yUnits=e.ntuples.units[l]))}function j(e){e.xFactor||(e.xFactor=1),e.yFactor||(e.yFactor=1)}var R=/[ \\t]*,[ \\t]*/,he={removeComments:!1,keepRecordsRegExp:/^$/,canonicDataLabels:!0,canonicMetadataLabels:!1,dynamicTyping:!0,withoutXY:!1,noTrimRegExp:/^$/,chromatogram:!1,keepSpectra:!1,noContour:!1,nbContourLevels:7,noiseMultiplier:5};function pt(e,m={}){e=ge(e);let t={...he,...m};t.logger?.debug(\"Starting jcamp conversion\"),t.wantXY=!t.withoutXY,t.start=Date.now();let o=[],l={entries:[],flatten:[]},i={children:[],spectra:[],ntuples:{},info:{},meta:{},tmp:{}},n=i,f=[],s={data:{}};t.logger?.trace({profiling:!0},\"Before split to LDRS\");let u=e.replaceAll(/[\\r\\n]+##/g,`\n##`).split(`\n##`);t.logger?.trace({profiling:!0},\"Split to LDRS\"),u[0]&&(u[0]=u[0].replace(/^[\\r\\n ]*##/,\"\"));for(let c of u){let b=c.indexOf(\"=\"),p=b>0?c.slice(0,Math.max(0,b)):c,r=b>0?p.match(t.noTrimRegExp)?c.slice(Math.max(0,b+1)):c.slice(Math.max(0,b+1)).trim():\"\",a=p.replaceAll(/[_ -]/g,\"\").toUpperCase();if(a===\"DATATABLE\"){let d=r.indexOf(`\n`);if(d===-1&&(d=r.indexOf(\"\\r\")),d>0){let g=r.slice(0,Math.max(0,d)).split(/[ ,;\\t]+/);K(n,s,g[0]),s.datatable=g[0],g[1]?.includes(\"PEAKS\")?a=\"PEAKTABLE\":g[1]&&(g[1].indexOf(\"XYDATA\")||g[0].indexOf(\"++\")>0)&&(a=\"XYDATA\",s.nbPoints&&s.lastX!==void 0&&s.firstX!==void 0&&(s.deltaX=(s.lastX-s.firstX)/(s.nbPoints-1)))}}if(a===\"XYDATA\"){t.wantXY&&(j(s),r.match(/.*\\+\\+.*/)?(s.nbPoints&&s.lastX!==void 0&&s.firstX!==void 0&&(s.deltaX=(s.lastX-s.firstX)/(s.nbPoints-1)),V(s,r,t)):w(s,r,t),n?.spectra.push(s),s={data:{}});continue}else if(a===\"PEAKTABLE\"){t.wantXY&&(j(s),w(s,r,t),n?.spectra.push(s),s={data:{}});continue}if(a===\"PEAKASSIGNMENTS\"){t.wantXY&&(r.match(/.*[^A-Z]*.*/)&&B(s,r),n?.spectra.push(s),s={data:{}});continue}if(t.removeComments&&(r=r.split(/\\r?\\n/).map(d=>d.replace(/ *\\$\\$.*$/,\"\")).join(`\n`)),a===\"TITLE\"){let d=n;d.children||(d.children=[]),n={spectra:[],ntuples:{},info:{},meta:{},tmp:{}},d.children.push(n),f.push(d),o.push(n),n.title=r}else a===\"DATATYPE\"?(n.dataType=r,r.match(/^nd|\\snd\\s/i)&&(n.twoD=!0)):a===\"NTUPLES\"?r.match(/^nd|\\snd\\s/i)&&(n.twoD=!0):a===\"DATACLASS\"?n.dataClass=r:a===\"JCAMPDX\"?n.jcampDX=E(r):a===\"JCAMPCS\"?n.jcampCS=E(r):a===\"XUNITS\"?s.xUnits=r:a===\"YUNITS\"?s.yUnits=r:a===\"FIRSTX\"?s.firstX=Number(r):a===\"LASTX\"?s.lastX=Number(r):a===\"FIRSTY\"?s.firstY=Number(r):a===\"LASTY\"?s.lastY=Number(r):a===\"NPOINTS\"?s.nbPoints=Number(r):a===\"XFACTOR\"?s.xFactor=Number(r):a===\"YFACTOR\"?s.yFactor=Number(r):a===\"MAXX\"?s.maxX=Number(r):a===\"MINX\"?s.minX=Number(r):a===\"MAXY\"?s.maxY=Number(r):a===\"MINY\"?s.minY=Number(r):a===\"DELTAX\"?s.deltaX=Number(r):a===\".OBSERVEFREQUENCY\"||a===\"$SFO1\"?s.observeFrequency||(s.observeFrequency=Number(r)):a===\".OBSERVENUCLEUS\"?s.xType||(n.xType=r.replaceAll(/[^a-zA-Z0-9]/g,\"\")):a===\"$OFFSET\"?(n.shiftOffsetNum=0,s.shiftOffsetVal||(s.shiftOffsetVal=Number(r))):a===\"$REFERENCEPOINT\"||(a===\"VARNAME\"?n.ntuples.varname=r.split(R):a===\"SYMBOL\"?n.ntuples.symbol=r.split(R):a===\"VARTYPE\"?n.ntuples.vartype=r.split(R):a===\"VARFORM\"?n.ntuples.varform=r.split(R):a===\"VARDIM\"?n.ntuples.vardim=O(r.split(R)):a===\"UNITS\"?n.ntuples.units=r.split(R):a===\"FACTOR\"?n.ntuples.factor=O(r.split(R)):a===\"FIRST\"?n.ntuples.first=O(r.split(R)):a===\"LAST\"?n.ntuples.last=O(r.split(R)):a===\"MIN\"?n.ntuples.min=O(r.split(R)):a===\"MAX\"?n.ntuples.max=O(r.split(R)):a===\".NUCLEUS\"?n.ntuples&&(n.ntuples.nucleus=r.split(R).map(d=>d.replaceAll(/[^a-zA-Z0-9]/g,\"\"))):a===\"PAGE\"?(s.page=r.trim(),s.pageValue=Number(r.replace(/^.*=/,\"\")),s.pageSymbol=s.page.replace(/[=].*/,\"\")):a===\"RETENTIONTIME\"?s.pageValue=Number(r):re(a)?s[k(a)]=r:a===\"SAMPLEDESCRIPTION\"?s.sampleDescription=r:a.startsWith(\"$NUC\")?!n.tmp[a]&&!r.includes(\"off\")&&(n.tmp[a]=r.replaceAll(/[<>]/g,\"\")):a===\"END\"&&(n=f.pop()));if(n?.info&&n.meta&&a.match(t.keepRecordsRegExp)){let d,g;p.startsWith(\"$\")?(g=t.canonicMetadataLabels?a.slice(1):p.slice(1),d=n.meta):(g=t.canonicDataLabels?a:p,d=n.info),t.dynamicTyping&&(r=be(r)),d[g]?(Array.isArray(d[g])||(d[g]=[d[g]]),d[g].push(r)):d[g]=r}}if(t.logger?.trace({profiling:!0},\"Finished parsing\"),q(o,l,t),t.logger?.trace({profiling:!0},\"Total time\"),l.entries=i.children||[],l.flatten=o,t.logger){t.logger.debug(\"Finished jcamp conversion\");for(let c of l.flatten)t.logger.debug(`${c.dataType} - ${c.title}`)}return l}function gt(e,m){let{logger:t,OCL:o}=m;if(!e.info.ATOMLIST||!e.info.BONDLIST){t?.warn(\"No ATOMLIST or BONDLIST in the JCAMP-CS entry\");return}Te(e,t);let l=xe(e.info.ATOMLIST),i=Ae(e.info.BONDLIST),n=Ne(e.info.CHARGE,t),f=Se(e.info.XYRASTER,t),s=Ce(e.info.STEREOCENTER,t),u=ye(o,{atoms:l,bonds:i,charges:n,xyRasters:f,stereocenters:s},t);return{molecule:u,molfile:u.toMolfile()}}function ye(e,m,t){let{atoms:o,bonds:l,charges:i,xyRasters:n,stereocenters:f}=m,s={S:e.Molecule.cBondTypeSingle,D:e.Molecule.cBondTypeDouble,T:e.Molecule.cBondTypeTriple,Q:e.Molecule.cBondTypeQuadruple},u={},c=new e.Molecule(o.length,l.length);for(let p of o){let r=e.Molecule.getAtomicNoFromLabel(p.element);r||(t?.error(`Atomic number of ${p.element} could not be determined`),r=e.Molecule.getAtomicNoFromLabel(\"X\")),u[p.atomNumber]=c.addAtom(r),c.setAtomMapNo(u[p.atomNumber],p.atomNumber,!1)}for(let p of l){if(u[p.atomNumber1]===void 0){t?.error(`A bond goes from atomNumber ${p.atomNumber1} that does not exists`);continue}if(u[p.atomNumber2]===void 0){t?.error(`A bond goes to atomNumber ${p.atomNumber2} that does not exists`);continue}let r=c.addBond(u[p.atomNumber1],u[p.atomNumber2]);c.setBondType(r,s[p.bondType])}for(let p of i){if(u[p.atomNumber]===void 0){t?.error(`A charge goes to atomNumber ${p.atomNumber} that does not exists`);continue}c.setAtomCharge(u[p.atomNumber],p.value)}let b=n.length===0||f.length>0;for(let p of n){if(u[p.atomNumber]===void 0){t?.error(`A XYRASTER goes to atomNumber ${p.atomNumber} that does not exists`);continue}c.setAtomX(u[p.atomNumber],p.x),c.setAtomY(u[p.atomNumber],p.y),c.setAtomZ(u[p.atomNumber],p.z)}c.ensureHelperArrays(e.Molecule.cHelperParities);for(let p of f){let{atomNumber:r,type:a}=p,d=u[r];if(d===void 0){t?.error(`A stereocenter goes to atomNumber ${r} that does not exists`);continue}if(!c.isAtomStereoCenter(d)){t?.warn(`Want to set chirality of atom number ${r} but it is not a stereocenter`);continue}if(c.getAtomParity(d)!==e.Molecule.cAtomParityUnknown){t?.debug(`Atom number ${r} already has a parity defined based on 3D coordinates`);continue}let x=a===\"P\"?e.Molecule.cAtomParity1:e.Molecule.cAtomParity2;c.setAtomParity(u[r],x,!1)}return c.ensureHelperArrays(e.Molecule.cHelperParities),b&&c.inventCoordinates({keepHydrogens:!0}),c}function xe(e){let m=P(e),t=[];for(let o of m){let[l,i,n]=o.trim().split(/\\s+/);t.push({atomNumber:Number(l),element:i,nbImplicitHydrogens:n?.length>0?Number(n):void 0})}return t}function Ae(e){let m=P(e),t=[];for(let o of m){let[l,i,n]=o.trim().split(/\\s+/);t.push({atomNumber1:Number(l),atomNumber2:Number(i),bondType:n})}return t}function Ne(e,m){if(!e)return[];let t=P(e),o=[];for(let l of t){let[i,n,f]=l.trim().split(/\\s+/);f!==void 0&&m?.warn(\"Charge on multiple atom is not supported\"),o.push({atomNumber:Number(n),value:Number(i)})}return o}function Se(e,m){if(!e)return[];let t=P(e),o=[];for(let l of t){let[i,n,f,s]=l.trim().split(/\\s+/);if(i===void 0){m?.warn(\"XYRASTER without atom number is not supported\");continue}o.push({atomNumber:Number(i),x:Number(n),y:Number(f),z:s!==void 0?Number(s):0})}return o}function Ce(e,m){if(!e)return[];let t=P(e),o=[];for(let l of t){let[i,n]=l.trim().split(/\\s+/);if(![\"P\",\"M\"].includes(n)){m?.warn(`Stereocenter type ${n} is not supported`);continue}o.push({atomNumber:Number(i),type:n})}return o}function P(e){return e.split(/\\r?\\n/).map(m=>E(m)).filter(Boolean)}function Te(e,m){let t=[\"STEREOPAIR\",\"STEREOCENTER\",\"RADICAL\",\"STEREOMOLECULE\"];for(let o of t)e.info[o]&&m?.warn(`JCAMP-CS parser do not support: ${o}`)}export{pt as convert,Le as createTree,gt as parseJcampCS,E as removeComment,$ as removeCommentRegExp};\n","import { convert } from 'jcampconverter';\nimport { Analysis } from '../Analysis.js';\n/**\n * Creates a new Analysis from a JCAMP string.\n * @param jcamp - String containing the JCAMP data\n * @param options - Options for the analysis\n * @returns New Analysis instance with the parsed data\n */\nexport function fromJcamp(jcamp, options = {}) {\n    const analysis = new Analysis(options);\n    addJcamp(analysis, jcamp);\n    return analysis;\n}\nfunction addJcamp(analysis, jcamp) {\n    const converted = convert(jcamp, {\n        keepRecordsRegExp: /.*/,\n    });\n    for (const entry of converted.flatten) {\n        if (!entry.spectra?.[0])\n            continue;\n        const currentSpectrum = entry.spectra[0];\n        // we ensure variables\n        if (!currentSpectrum.variables) {\n            const variables = {};\n            currentSpectrum.variables = variables;\n            variables.x = {\n                label: currentSpectrum.xUnits,\n                symbol: 'X',\n                data: currentSpectrum.data.x || currentSpectrum.data.X,\n            };\n            variables.y = {\n                label: currentSpectrum.yUnits,\n                symbol: 'Y',\n                data: currentSpectrum.data.y || currentSpectrum.data.Y,\n            };\n        }\n        else {\n            for (const key in currentSpectrum.variables) {\n                const variable = currentSpectrum.variables[key];\n                if (variable.label)\n                    continue;\n                variable.label = variable.name || variable.symbol || key;\n                if (variable.units && !variable.label.includes(variable.units)) {\n                    // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n                    variable.label += ` [${variable.units}]`;\n                }\n            }\n        }\n        analysis.pushSpectrum(currentSpectrum.variables, {\n            dataType: entry.dataType,\n            title: entry.title,\n            meta: entry.meta,\n        });\n    }\n}\n//# sourceMappingURL=fromJcamp.js.map","export const addInfoData = (data, options = {}) => {\n    const { keys = Object.keys(data), prefix = '##$' } = options;\n    let header = '';\n    for (const key of keys) {\n        header +=\n            typeof data[key] === 'object'\n                ? `${prefix}${key}=${JSON.stringify(data[key])}\\n`\n                : `${prefix}${key}=${data[key]}\\n`;\n    }\n    return header;\n};\n//# sourceMappingURL=addInfoData.js.map","// eslint-disable-next-line @typescript-eslint/unbound-method\nconst toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array, except those that contain bigint values).\n *\n * @param value - Object to check.\n * @returns True if the object is an array or a typed array.\n */\nexport function isAnyArray(value) {\n    const tag = toString.call(value);\n    return tag.endsWith('Array]') && !tag.includes('Big');\n}\n//# sourceMappingURL=index.js.map","import { isAnyArray } from 'is-any-array';\nexport function checkMatrix(data) {\n    if (!isAnyArray(data) || !isAnyArray(data[0])) {\n        throw new Error(`2D data should be a matrix`);\n    }\n}\n//# sourceMappingURL=checkMatrix.js.map","import { isAnyArray } from 'is-any-array';\nexport function checkNumberOrArray(data) {\n    if (!isAnyArray(data) || isAnyArray(data[0])) {\n        throw new Error(`x and y data should be an array of numbers`);\n    }\n}\n//# sourceMappingURL=checkNumberOrArray.js.map","import { isAnyArray } from 'is-any-array';\nimport { matrixMinMaxZ, xMinMaxValues, } from 'ml-spectra-processing';\nimport { checkMatrix } from './checkMatrix';\nimport { checkNumberOrArray } from './checkNumberOrArray';\nexport function getExtremeValues(data) {\n    if (isAnyArray(data[0])) {\n        checkMatrix(data);\n        const firstRow = data[0];\n        return {\n            firstLast: {\n                first: firstRow[0],\n                last: data[data.length - 1][data[0].length - 1],\n            },\n            minMax: matrixMinMaxZ(data),\n        };\n    }\n    checkNumberOrArray(data);\n    return {\n        firstLast: {\n            first: data[0],\n            last: data[data.length - 1],\n        },\n        minMax: xMinMaxValues(data),\n    };\n}\n//# sourceMappingURL=getExtremeValues.js.map","import { addInfoData } from './utils/addInfoData';\nimport { getExtremeValues } from './utils/getExtremeValues';\n/**\n * Parse from a xyxy data array\n * @param variables - Variables to convert to jcamp\n * @param [options={}] - options that allows to add meta data in the jcamp\n * @return JCAMP-DX text file corresponding to the variables\n */\nexport default function creatorNtuples(variables, options) {\n    const { meta = {}, info = {} } = options;\n    const { title = '', owner = '', origin = '', dataType = '', ...resInfo } = info;\n    const symbol = [];\n    const varName = [];\n    const varType = [];\n    const varDim = [];\n    const units = [];\n    const first = [];\n    const last = [];\n    const min = [];\n    const max = [];\n    const keys = Object.keys(variables);\n    for (let i = 0; i < keys.length; i++) {\n        const key = keys[i];\n        const variable = variables[key];\n        if (!variable)\n            continue;\n        const name = variable?.label.replace(/ *\\[.*/, '');\n        const unit = variable?.label.replace(/.*\\[(?<units>.*)\\].*/, '$<units>');\n        const { firstLast, minMax } = getExtremeValues(variable.data);\n        symbol.push(variable.symbol || key);\n        varName.push(name || key);\n        varDim.push(variable.data.length);\n        first.push(firstLast.first);\n        last.push(firstLast.last);\n        max.push(minMax.max);\n        min.push(minMax.min);\n        if (variable.isDependent !== undefined) {\n            varType.push(variable.isDependent ? 'DEPENDENT' : 'INDEPENDENT');\n        }\n        else {\n            varType.push(variable.isDependent !== undefined\n                ? !variable.isDependent\n                : i === 0\n                    ? 'INDEPENDENT'\n                    : 'DEPENDENT');\n        }\n        units.push(variable.units || unit || '');\n    }\n    let header = `##TITLE=${title}\n##JCAMP-DX=6.00\n##DATA TYPE=${dataType}\n##DATA CLASS= NTUPLES\n##ORIGIN=${origin}\n##OWNER=${owner}\\n`;\n    header += addInfoData(resInfo, { prefix: '##' });\n    header += addInfoData(meta);\n    header += `##NTUPLES= ${dataType}\n##VAR_NAME=  ${varName.join()}\n##SYMBOL=    ${symbol.join()}\n##VAR_TYPE=  ${varType.join()}\n##VAR_DIM=   ${varDim.join()}\n##UNITS=     ${units.join()}\n##FIRST=     ${first.join()}\n##LAST=      ${last.join()}\n##MIN=       ${min.join()}\n##MAX=       ${max.join()}\n##PAGE= N=1\\n`;\n    header += `##DATA TABLE= (${symbol.join('')}..${symbol.join('')}), PEAKS\\n`;\n    for (let i = 0; i < variables.x.data.length; i++) {\n        const point = [];\n        for (const key of keys) {\n            const variable = variables[key];\n            if (!variable)\n                continue;\n            point.push(variable.data[i]);\n        }\n        header += `${point.join('\\t')}\\n`;\n    }\n    header += `##END NTUPLES= ${dataType}\\n`;\n    header += '##END=\\n##END=';\n    return header;\n}\n//# sourceMappingURL=creatorNtuples.js.map","export function getFactorNumber(minMax, maxValue = 2 ** 31 - 1) {\n    let factor;\n    if (minMax.min < 0) {\n        if (minMax.max > 0) {\n            factor = Math.max(-minMax.min, minMax.max) / maxValue;\n        }\n        else {\n            factor = -minMax.min / maxValue;\n        }\n    }\n    else {\n        factor = minMax.max / maxValue;\n    }\n    return factor;\n}\n//# sourceMappingURL=getFactorNumber.js.map","import { xMinMaxValues } from 'ml-spectra-processing';\nimport { getFactorNumber } from './getFactorNumber';\nexport function getBestFactor(array, options = {}) {\n    const { maxValue, factor, minMax } = options;\n    if (factor !== undefined) {\n        return factor;\n    }\n    // is there non integer number ?\n    let onlyInteger = true;\n    for (const y of array) {\n        if (Math.round(y) !== y) {\n            onlyInteger = false;\n            break;\n        }\n    }\n    if (onlyInteger) {\n        return 1;\n    }\n    // we need to rescale the values\n    // need to find the max and min values\n    const extremeValues = minMax || xMinMaxValues(array);\n    return getFactorNumber(extremeValues, maxValue);\n}\n//# sourceMappingURL=getBestFactor.js.map","/**\n * Reconvert number to original value\n * @param number Number used for computation\n * @param factor Multiplying factor\n * @returns Original value\n */\nexport function getNumber(number, factor) {\n    if (factor !== 1)\n        number /= factor;\n    const rounded = Math.round(number);\n    if (rounded !== number && Math.abs(rounded - number) <= Number.EPSILON) {\n        return rounded;\n    }\n    return number;\n}\n//# sourceMappingURL=getNumber.js.map","import { getNumber } from './getNumber';\nexport function peakTableCreator(data, options = {}) {\n    const { xFactor = 1, yFactor = 1 } = options.info || {};\n    let firstX = Number.POSITIVE_INFINITY;\n    let lastX = Number.NEGATIVE_INFINITY;\n    let firstY = Number.POSITIVE_INFINITY;\n    let lastY = Number.NEGATIVE_INFINITY;\n    const lines = [];\n    for (let i = 0; i < data.x.length; i++) {\n        const x = data.x[i];\n        const y = data.y[i];\n        if (firstX > x) {\n            firstX = x;\n        }\n        if (lastX < x) {\n            lastX = x;\n        }\n        if (firstY > y) {\n            firstY = y;\n        }\n        if (lastY < y) {\n            lastY = y;\n        }\n    }\n    lines.push(`##FIRSTX=${firstX}`);\n    lines.push(`##LASTX=${lastX}`);\n    lines.push(`##FIRSTY=${firstY}`);\n    lines.push(`##LASTY=${lastY}`);\n    lines.push(`##XFACTOR=${xFactor}`);\n    lines.push(`##YFACTOR=${yFactor}`);\n    lines.push('##PEAK TABLE=(XY..XY)');\n    for (let i = 0; i < data.x.length; i++) {\n        lines.push(`${getNumber(data.x[i], xFactor)} ${getNumber(data.y[i], yFactor)}`);\n    }\n    return lines;\n}\n//# sourceMappingURL=peakTableCreator.js.map","import { xDivide } from 'ml-spectra-processing';\nexport function rescaleAndEnsureInteger(data, factor = 1) {\n    if (factor === 1)\n        return data.map((value) => Math.round(value));\n    return xDivide(data, factor).map((value) => Math.round(value));\n}\n//# sourceMappingURL=rescaleAndEnsureInteger.js.map","/**\n * class encodes a integer vector as a String in order to store it in a text file.\n * The algorithms used to encode the data are describe in:\n *            http://www.iupac.org/publications/pac/pdf/2001/pdf/7311x1765.pdf\n */\nconst newLine = '\\n';\nconst pseudoDigits = [\n    ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],\n    ['@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'],\n    ['@', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'],\n    ['%', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R'],\n    ['%', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r'],\n    [' ', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 's'],\n];\nconst SQZ_P = 1;\nconst SQZ_N = 2;\nconst DIF_P = 3;\nconst DIF_N = 4;\nconst DUP = 5;\nconst maxLinelength = 100;\n/**\n * This function encodes the given vector. The xyEncoding format is specified by the\n * xyEncoding option\n * @param xyEncoding: ('FIX','SQZ','DIF','DIFDUP','CVS','PAC') Default 'DIFDUP'\n * @return {string}\n */\nexport function vectorEncoder(data, firstX, intervalX, xyEncoding) {\n    switch (xyEncoding) {\n        case 'FIX':\n            return fixEncoding(data, firstX, intervalX);\n        case 'SQZ':\n            return squeezedEncoding(data, firstX, intervalX);\n        case 'DIF':\n            return differenceEncoding(data, firstX, intervalX);\n        case 'DIFDUP':\n            return differenceDuplicateEncoding(data, firstX, intervalX);\n        case 'CSV':\n            return commaSeparatedValuesEncoding(data, firstX, intervalX);\n        case 'PAC':\n            return packedEncoding(data, firstX, intervalX);\n        default:\n            return differenceEncoding(data, firstX, intervalX);\n    }\n}\n/**\n * @private\n * No data compression used. The data is separated by a comma(',').\n */\nexport function commaSeparatedValuesEncoding(data, firstX, intervalX) {\n    return fixEncoding(data, firstX, intervalX, ',');\n}\n/**\n * @private\n * No data compression used. The data is separated by the specified separator.\n */\nexport function fixEncoding(data, firstX, intervalX, separator = ' ') {\n    let outputData = '';\n    let j = 0;\n    const dataLength = data.length;\n    while (j < dataLength - 7) {\n        outputData += String(Math.ceil(firstX + j * intervalX));\n        for (let i = 0; i < 8; i++) {\n            outputData += `${separator}${data[j++]}`;\n        }\n        outputData += newLine;\n    }\n    if (j < dataLength) {\n        // We add last numbers\n        outputData += String(Math.ceil(firstX + j * intervalX));\n        for (let i = j; i < dataLength; i++) {\n            outputData += `${separator}${data[i]}`;\n        }\n    }\n    return outputData;\n}\n/**\n * @private\n * No data compression used. The data is separated by the sign of the number.\n */\nexport function packedEncoding(data, firstX, intervalX) {\n    let outputData = '';\n    let j = 0;\n    const dataLength = data.length;\n    while (j < dataLength - 7) {\n        outputData += String(Math.ceil(firstX + j * intervalX));\n        for (let i = 0; i < 8; i++) {\n            outputData += data[j] < 0 ? String(data[j++]) : `+${data[j++]}`;\n        }\n        outputData += newLine;\n    }\n    if (j < dataLength) {\n        // We add last numbers\n        outputData += String(Math.ceil(firstX + j * intervalX));\n        for (let i = j; i < dataLength; i++) {\n            outputData += data[i] < 0 ? String(data[i]) : `+${data[i]}`;\n        }\n    }\n    return outputData;\n}\n/**\n * @private\n * Data compression is possible using the squeezed form (SQZ) in which the delimiter, the leading digit,\n * and sign are replaced by a pseudo-digit from Table 1. For example, the Y-values 30, 32 would be\n * represented as C0C2.\n */\nexport function squeezedEncoding(data, firstX, intervalX) {\n    let outputData = '';\n    // String outputData = new String();\n    let j = 0;\n    const dataLength = data.length;\n    while (j < dataLength - 10) {\n        outputData += String(Math.ceil(firstX + j * intervalX));\n        for (let i = 0; i < 10; i++) {\n            outputData += squeezedDigit(data[j++].toString());\n        }\n        outputData += newLine;\n    }\n    if (j < dataLength) {\n        // We add last numbers\n        outputData += String(Math.ceil(firstX + j * intervalX));\n        for (let i = j; i < dataLength; i++) {\n            outputData += squeezedDigit(data[i].toString());\n        }\n    }\n    return outputData;\n}\n/**\n * @private\n * Duplicate suppression xyEncoding\n */\nexport function differenceDuplicateEncoding(data, firstX, intervalX) {\n    let mult = 0;\n    let index = 0;\n    let charCount = 0;\n    // We built a string where we store the encoded data.\n    let encodedData = '';\n    let encodedNumber = '';\n    let temp = '';\n    // We calculate the differences vector\n    const diffData = new Array(data.length - 1);\n    for (let i = 0; i < diffData.length; i++) {\n        diffData[i] = data[i + 1] - data[i];\n    }\n    // We simulate a line carry\n    const numDiff = diffData.length;\n    while (index < numDiff) {\n        if (charCount === 0) {\n            // Start line\n            encodedNumber = `${Math.ceil(firstX + index * intervalX)}${squeezedDigit(data[index].toString())}${differenceDigit(diffData[index].toString())}`;\n            encodedData += encodedNumber;\n            charCount += encodedNumber.length;\n        }\n        else if (diffData[index - 1] === diffData[index]) {\n            // Try to insert next difference\n            mult++;\n        }\n        else if (mult > 0) {\n            // Now we know that it can be in line\n            mult++;\n            encodedNumber = duplicateDigit(mult.toString());\n            encodedData += encodedNumber;\n            charCount += encodedNumber.length;\n            mult = 0;\n            index--;\n        }\n        else {\n            // Check if it fits, otherwise start a new line\n            encodedNumber = differenceDigit(diffData[index].toString());\n            if (encodedNumber.length + charCount < maxLinelength) {\n                encodedData += encodedNumber;\n                charCount += encodedNumber.length;\n            }\n            else {\n                // start a new line\n                encodedData += newLine;\n                temp = `${Math.ceil(firstX + index * intervalX)}${squeezedDigit(data[index].toString())}${encodedNumber}`;\n                encodedData += temp; // Each line start with first index number.\n                charCount = temp.length;\n            }\n        }\n        index++;\n    }\n    if (mult > 0) {\n        encodedData += duplicateDigit((mult + 1).toString());\n    }\n    // We insert the last data from fid. It is done to control of data\n    // The last line start with the number of datas in the fid.\n    encodedData += `${newLine}${Math.ceil(firstX + index * intervalX)}${squeezedDigit(data[index].toString())}`;\n    return encodedData;\n}\n/**\n * @private\n * Differential xyEncoding\n */\nexport function differenceEncoding(data, firstX, intervalX) {\n    let index = 0;\n    let charCount = 0;\n    let i;\n    let encodedData = '';\n    let encodedNumber = '';\n    let temp = '';\n    // We calculate the differences vector\n    const diffData = new Array(data.length - 1);\n    for (i = 0; i < diffData.length; i++) {\n        diffData[i] = data[i + 1] - data[i];\n    }\n    const numDiff = diffData.length;\n    while (index < numDiff) {\n        if (charCount === 0) {\n            // We convert the first number.\n            encodedNumber = `${Math.ceil(firstX + index * intervalX)}${squeezedDigit(data[index].toString())}${differenceDigit(diffData[index].toString())}`;\n            encodedData += encodedNumber;\n            charCount += encodedNumber.length;\n        }\n        else {\n            encodedNumber = differenceDigit(diffData[index].toString());\n            if (encodedNumber.length + charCount < maxLinelength) {\n                encodedData += encodedNumber;\n                charCount += encodedNumber.length;\n            }\n            else {\n                encodedData += newLine;\n                temp = `${Math.ceil(firstX + index * intervalX)}${squeezedDigit(data[index].toString())}${encodedNumber}`;\n                encodedData += temp; // Each line start with first index number.\n                charCount = temp.length;\n            }\n        }\n        index++;\n    }\n    // We insert the last number from data. It is done to control of data\n    encodedData += `${newLine}${Math.ceil(firstX + index * intervalX)}${squeezedDigit(data[index].toString())}`;\n    return encodedData;\n}\n/**\n * @private\n * Convert number to the ZQZ format, using pseudo digits.\n */\nfunction squeezedDigit(num) {\n    let sqzDigits = '';\n    if (num.startsWith('-')) {\n        sqzDigits += pseudoDigits[SQZ_N][num.charCodeAt(1) - 48];\n        if (num.length > 2) {\n            sqzDigits += num.substring(2);\n        }\n    }\n    else {\n        sqzDigits += pseudoDigits[SQZ_P][num.charCodeAt(0) - 48];\n        if (num.length > 1) {\n            sqzDigits += num.substring(1);\n        }\n    }\n    return sqzDigits;\n}\n/**\n * Convert number to the DIF format, using pseudo digits.\n */\nfunction differenceDigit(num) {\n    let diffDigits = '';\n    if (num.startsWith('-')) {\n        diffDigits += pseudoDigits[DIF_N][num.charCodeAt(1) - 48];\n        if (num.length > 2) {\n            diffDigits += num.substring(2);\n        }\n    }\n    else {\n        diffDigits += pseudoDigits[DIF_P][num.charCodeAt(0) - 48];\n        if (num.length > 1) {\n            diffDigits += num.substring(1);\n        }\n    }\n    return diffDigits;\n}\n/**\n * Convert number to the DUP format, using pseudo digits.\n */\nfunction duplicateDigit(num) {\n    let dupDigits = '';\n    dupDigits += pseudoDigits[DUP][num.charCodeAt(0) - 48];\n    if (num.length > 1) {\n        dupDigits += num.substring(1);\n    }\n    return dupDigits;\n}\n//# sourceMappingURL=vectorEncoder.js.map","import { rescaleAndEnsureInteger } from './rescaleAndEnsureInteger';\nimport { vectorEncoder } from './vectorEncoder';\nexport function xyDataCreator(data, options = {}) {\n    const { xyEncoding = 'DIF' } = options;\n    const { xFactor = 1, yFactor = 1 } = options.info || {};\n    const firstX = data.x[0];\n    const lastX = data.x[data.x.length - 1];\n    const firstY = data.y[0];\n    const lastY = data.y[data.y.length - 1];\n    const nbPoints = data.x.length;\n    const deltaX = (lastX - firstX) / (nbPoints - 1);\n    const lines = [];\n    lines.push(`##FIRSTX=${firstX}`);\n    lines.push(`##LASTX=${lastX}`);\n    lines.push(`##FIRSTY=${firstY}`);\n    lines.push(`##LASTY=${lastY}`);\n    lines.push(`##DELTAX=${deltaX}`);\n    lines.push(`##XFACTOR=${xFactor}`);\n    lines.push(`##YFACTOR=${yFactor}`);\n    lines.push('##XYDATA=(X++(Y..Y))');\n    const line = vectorEncoder(rescaleAndEnsureInteger(data.y, yFactor), firstX / xFactor, deltaX / xFactor, xyEncoding);\n    if (line)\n        lines.push(line);\n    return lines;\n}\n//# sourceMappingURL=xyDataCreator.js.map","import { addInfoData } from './utils/addInfoData';\nimport { getBestFactor } from './utils/getBestFactor';\nimport { peakTableCreator } from './utils/peakTableCreator';\nimport { xyDataCreator } from './utils/xyDataCreator';\n/**\n * Create a jcamp\n * @param data object of array\n * @param [options={meta:{},info:{}} - metadata object\n * @returns JCAMP of the input\n */\nexport function fromJSON(data, options = {}) {\n    const { meta = {}, info = {}, xyEncoding } = options;\n    const { title = '', owner = '', origin = '', dataType = '', xUnits = '', yUnits = '', ...resInfo } = info;\n    let { xFactor, yFactor } = info;\n    data = { x: data.x, y: data.y };\n    let header = `##TITLE=${title}\n##JCAMP-DX=4.24\n##DATA TYPE=${dataType}\n##ORIGIN=${origin}\n##OWNER=${owner}\n##XUNITS=${xUnits}\n##YUNITS=${yUnits}\\n`;\n    header += addInfoData(resInfo, { prefix: '##' });\n    header += addInfoData(meta);\n    // we leave the header and utf8 fonts ${header.replace(/[^\\t\\n\\x20-\\x7F]/g, '')\n    if (xyEncoding) {\n        xFactor = getBestFactor(data.x, { factor: xFactor });\n        yFactor = getBestFactor(data.y, { factor: yFactor });\n        return `${header}##NPOINTS=${data.x.length}\n${xyDataCreator(data, { info: { xFactor, yFactor }, xyEncoding }).join('\\n')}\n##END=`;\n    }\n    else {\n        if (xFactor === undefined)\n            xFactor = 1;\n        if (yFactor === undefined)\n            yFactor = 1;\n        if (xFactor !== 1) {\n            //@ts-expect-error xFactor is always defined\n            data.x = data.x.map((value) => value / xFactor);\n        }\n        if (yFactor !== 1) {\n            //@ts-expect-error yFactor is always defined\n            data.y = data.y.map((value) => value / yFactor);\n        }\n        return `${header}##NPOINTS=${data.x.length}\n${peakTableCreator(data, { info: { xFactor, yFactor } }).join('\\n')}\n##END=`;\n    }\n}\n//# sourceMappingURL=fromJSON.js.map","import creatorNtuples from './creatorNtuples';\nimport { fromJSON } from './fromJSON';\nimport { checkNumberOrArray } from './utils/checkNumberOrArray';\n/**\n * Create a jcamp from variables\n */\nexport function fromVariables(\n/** object of variables */\nvariables, options = {}) {\n    const { info = {}, meta = {}, forceNtuples = false } = options;\n    const jcampOptions = {\n        info,\n        meta,\n    };\n    const keys = Object.keys(variables).map((key) => key.toLowerCase());\n    if (!forceNtuples && keys.length === 2) {\n        const x = variables.x;\n        const xLabel = x.label || 'x';\n        if (variables.x.units) {\n            if (xLabel.includes(variables.x.units)) {\n                jcampOptions.info.xUnits = xLabel;\n            }\n            else {\n                jcampOptions.info.xUnits = `${xLabel} (${variables.x.units})`;\n            }\n        }\n        else {\n            jcampOptions.info.xUnits = xLabel;\n        }\n        const y = variables.y;\n        const yLabel = y.label || 'y';\n        if (variables.y.units) {\n            if (yLabel.includes(variables.y.units)) {\n                jcampOptions.info.xUnits = yLabel;\n            }\n            else {\n                jcampOptions.info.yUnits = `${yLabel} (${variables.y.units})`;\n            }\n        }\n        else {\n            jcampOptions.info.yUnits = yLabel;\n        }\n        const xData = variables.x.data;\n        const yData = variables.y.data;\n        checkNumberOrArray(xData);\n        checkNumberOrArray(yData);\n        return fromJSON({ x: xData, y: yData }, jcampOptions);\n    }\n    else {\n        return creatorNtuples(variables, options);\n    }\n}\n//# sourceMappingURL=fromVariables.js.map","import { fromVariables } from 'convert-to-jcamp';\nexport function toJcamps(analysis, options = {}) {\n    const jcamps = [];\n    for (const spectrum of analysis.spectra) {\n        jcamps.push(getJcamp(spectrum, options));\n    }\n    return jcamps;\n}\nfunction getJcamp(spectrum, options) {\n    const { info = {}, meta = {} } = options;\n    const jcampOptions = {\n        options: {},\n        info: {\n            title: spectrum.title,\n            dataType: spectrum.dataType,\n            ...info,\n        },\n        meta: { ...spectrum.meta, ...meta },\n    };\n    return fromVariables(spectrum.variables, jcampOptions);\n}\n//# sourceMappingURL=toJcamps.js.map","import { toJcamps } from './toJcamps.js';\n/**\n * Convert an Analysis to a single JCAMP string (all spectra joined).\n * @param analysis - The analysis to convert\n * @param options - Options for the JCAMP output\n * @returns JCAMP string\n */\nexport function toJcamp(analysis, options = {}) {\n    return toJcamps(analysis, options).join('\\n');\n}\n//# sourceMappingURL=toJcamp.js.map","export function toText(analysis, options = {}) {\n    // Export all the data to Csv\n    if (!options.selector && !options.normalization) {\n        return exportText(analysis.spectra, options);\n    }\n    // Export selected variables\n    const spectra = analysis.getNormalizedSpectra(options);\n    // const spectra = analysis.getXYSpectrum(options.selector);\n    return exportText(spectra, options);\n}\nfunction exportText(spectrums, options) {\n    const { endOfLine = '\\n', fieldSeparator = ',' } = options;\n    const result = new Array(spectrums.length);\n    for (let index = 0; index < spectrums.length; index++) {\n        const variables = Object.values(spectrums[index].variables);\n        const labels = variables.map((v) => v.label);\n        const maxNumberData = Math.max(...variables.map((v) => v.data.length));\n        const lines = [labels.join(fieldSeparator)];\n        for (let lineIndex = 0; lineIndex < maxNumberData; lineIndex++) {\n            lines.push(variables\n                .map(({ data }) => data[lineIndex] === undefined ? '' : data[lineIndex])\n                .join(fieldSeparator));\n        }\n        result[index] = lines.join(endOfLine);\n    }\n    return result;\n}\n//# sourceMappingURL=toText.js.map","import { xyArrayAlign } from 'ml-spectra-processing';\n/**\n * Generate a jsgraph chart format from an array of Analysis\n * @param analyses\n * @param options\n */\nexport function toMatrix(analyses, options = {}) {\n    const { selector = {}, normalization, xLabel = 'x', delta = 0, endOfLine = '\\n', } = options;\n    const data = [];\n    const labels = [xLabel];\n    const titles = ['x'];\n    for (const analysis of analyses) {\n        const spectra = analysis.getNormalizedSpectra({\n            selector,\n            normalization,\n        });\n        for (const spectrum of spectra) {\n            titles.push(spectrum.title || '');\n            labels.push(analysis.label || '');\n            data.push({ x: spectrum.variables.x.data, y: spectrum.variables.y.data });\n        }\n    }\n    const aligned = xyArrayAlign(data, { delta });\n    const lines = [labels.join('\\t'), titles.join('\\t')];\n    for (let row = 0; row < aligned.x.length; row++) {\n        const line = [aligned.x[row]];\n        for (const column of aligned.ys) {\n            line.push(column[row]);\n        }\n        lines.push(line.join('\\t'));\n    }\n    const text = lines.join(endOfLine);\n    return text;\n}\n// need to find all the unique Xs\n//# sourceMappingURL=toMatrix.js.map","import { getJSGraph } from './jsgraph/getJSGraph.js';\nimport { getNormalizationAnnotations } from './jsgraph/getNormalizationAnnotations.js';\nexport * from './AnalysesManager.js';\nexport * from './Analysis.js';\nexport * from './from/fromJcamp.js';\nexport * from './from/fromText.js';\nexport * from './to/toJcamp.js';\nexport * from './to/toJcamps.js';\nexport * from './to/toText.js';\nexport * from './to/toMatrix.js';\nexport * from './util/getNormalizedSpectrum.js';\nexport * from './util/peakPicking.js';\nexport * from './util/autoPeakPicking.js';\nexport * from './types/types.js';\nexport * from './types/NormalizedSpectrumOptions.js';\nexport * from './types/SpectrumSelector.js';\nexport { getReactPlotJSON } from './reactPlot/getReactPlotJSON.js';\nexport const JSGraph = {\n    getJSGraph,\n    getNormalizationAnnotations,\n};\n//# sourceMappingURL=index.js.map","export function parseString(value) {\n    if (value.length === 4 || value.length === 5) {\n        const lowercase = value.toLowerCase();\n        if (lowercase === 'true')\n            return true;\n        if (lowercase === 'false')\n            return false;\n    }\n    const number = Number(value);\n    if (number === 0 && !value.includes('0')) {\n        return value;\n    }\n    if (!Number.isNaN(number))\n        return number;\n    return value;\n}\n//# sourceMappingURL=parseString.js.map","/**\n * Generic parser for Malvern Zetasizer tab-separated text exports.\n *\n * The parser dynamically discovers array columns (e.g., `Sizes[1] (d.nm)`)\n * and scalar metadata columns from the header row. This makes it work\n * regardless of which fields the user selected for export or which\n * instrument model produced the file.\n *\n * Some exports contain multiple sections (e.g., a summary table followed\n * by a distribution table). The parser detects new header rows and merges\n * corresponding records from each section.\n */\nimport { parseString } from 'dynamic-typing';\nimport { ensureString } from 'ensure-string';\n/**\n * Parse a Zetasizer tab-separated text export into structured records.\n *\n * The parser dynamically discovers columns from the header row:\n * - Columns matching `Name[N] (units)` are grouped into array data.\n * - All other columns become scalar metadata entries.\n *\n * Files may contain multiple sections with different headers. Each new\n * header row starts a new section, and records are merged across sections\n * in order.\n * @param data - The raw content of the Zetasizer export file (string, ArrayBuffer, or typed array)\n * @returns Array of parsed measurement records\n */\nexport function fromText(data) {\n    const text = ensureString(data);\n    const lines = text.split(/\\r?\\n/).filter((line) => line.trim() !== '');\n    if (lines.length < 2) {\n        return [];\n    }\n    const sections = splitSections(lines);\n    const sectionResults = [];\n    for (const section of sections) {\n        const headers = section[0]?.split('\\t') ?? [];\n        const { arrayGroups, scalarIndices } = classifyColumns(headers);\n        const records = [];\n        for (let i = 1; i < section.length; i++) {\n            const line = section[i];\n            if (!line)\n                continue;\n            const values = line.split('\\t');\n            const record = { meta: {} };\n            for (const group of arrayGroups) {\n                record[group.name] = {\n                    data: extractFloatArray(values, group.start, group.count),\n                    units: group.units,\n                };\n            }\n            const meta = {};\n            for (const [name, index] of scalarIndices) {\n                const raw = values[index] ?? '';\n                if (raw !== '') {\n                    meta[name] = parseString(raw);\n                }\n            }\n            record.meta = meta;\n            records.push(record);\n        }\n        sectionResults.push(records);\n    }\n    return mergeSections(sectionResults);\n}\n/**\n * Split lines into sections, each starting with a header row.\n *\n * The first line is always treated as a header. Subsequent lines that\n * contain array column patterns (e.g., `Name[1]`) are detected as new\n * header rows, starting a new section.\n * @param lines - Non-empty lines from the file\n * @returns Array of sections, each being an array of lines (header + data)\n */\nfunction splitSections(lines) {\n    const sections = [];\n    let current = [];\n    for (let i = 0; i < lines.length; i++) {\n        const line = lines[i] ?? '';\n        if (i === 0) {\n            current.push(line);\n        }\n        else if (isHeaderLine(line)) {\n            if (current.length > 0) {\n                sections.push(current);\n            }\n            current = [line];\n        }\n        else {\n            current.push(line);\n        }\n    }\n    if (current.length > 0) {\n        sections.push(current);\n    }\n    return sections;\n}\nconst ARRAY_HEADER_PATTERN = /^(?<name>.+?)\\[(?:\\d+)]\\s*(?:\\((?<units>.+?)\\))?$/;\n/**\n * Check if a line looks like a header row by testing whether any\n * tab-separated value matches the array column pattern.\n * @param line - A line from the file\n * @returns True if the line appears to be a header row\n */\nfunction isHeaderLine(line) {\n    const fields = line.split('\\t');\n    return fields.some((field) => ARRAY_HEADER_PATTERN.test(field));\n}\n/**\n * Scan headers to identify groups of array columns and scalar columns.\n *\n * Array columns follow the pattern `Name[N] (units)` where N is sequential.\n * All other columns are treated as scalar metadata.\n * @param headers - Array of header strings\n * @returns Object with arrayGroups and scalarIndices\n */\nfunction classifyColumns(headers) {\n    const arrayGroups = [];\n    const scalarIndices = new Map();\n    let currentGroup;\n    for (let i = 0; i < headers.length; i++) {\n        const header = headers[i] ?? '';\n        const match = ARRAY_HEADER_PATTERN.exec(header);\n        if (match) {\n            const name = match.groups?.name ?? '';\n            const units = match.groups?.units ?? '';\n            if (currentGroup?.name === name) {\n                currentGroup.count++;\n            }\n            else {\n                if (currentGroup) {\n                    arrayGroups.push(currentGroup);\n                }\n                currentGroup = { name, units, start: i, count: 1 };\n            }\n        }\n        else {\n            if (currentGroup) {\n                arrayGroups.push(currentGroup);\n                currentGroup = undefined;\n            }\n            if (header) {\n                // For duplicate header names (e.g., \"Sample Name\" appears twice),\n                // keep the last occurrence which is in the metadata section.\n                scalarIndices.set(header, i);\n            }\n        }\n    }\n    if (currentGroup) {\n        arrayGroups.push(currentGroup);\n    }\n    return { arrayGroups, scalarIndices };\n}\n/**\n * Merge records from multiple sections by index. Records at the same\n * position across sections are combined, with later sections' metadata\n * and arrays added to earlier ones.\n * @param sectionResults - Array of record arrays, one per section\n * @returns Merged array of records\n */\nfunction mergeSections(sectionResults) {\n    if (sectionResults.length === 0)\n        return [];\n    if (sectionResults.length === 1)\n        return sectionResults[0] ?? [];\n    const maxLength = Math.max(...sectionResults.map((s) => s.length));\n    const merged = [];\n    for (let i = 0; i < maxLength; i++) {\n        const record = { meta: {} };\n        for (const section of sectionResults) {\n            const sectionRecord = section[i];\n            if (!sectionRecord)\n                continue;\n            for (const [key, value] of Object.entries(sectionRecord)) {\n                if (key === 'meta') {\n                    Object.assign(record.meta, value);\n                }\n                else {\n                    record[key] = value;\n                }\n            }\n        }\n        merged.push(record);\n    }\n    return merged;\n}\n/**\n * Extract a Float64Array from a row of tab-separated values.\n * @param values - Array of string values from the row\n * @param start - Start column index\n * @param count - Number of columns to extract\n * @returns Float64Array of parsed values\n */\nfunction extractFloatArray(values, start, count) {\n    const result = new Float64Array(count);\n    for (let i = 0; i < count; i++) {\n        result[i] = Number(values[start + i]);\n    }\n    return result;\n}\n//# sourceMappingURL=fromText.js.map","/**\n * Get a ZetasizerArray from a record by name.\n *\n * Since ZetasizerRecord uses an index signature, accessing a property\n * returns a union type. This helper narrows it to ZetasizerArray.\n * @param record - Parsed Zetasizer record\n * @param name - Array name (e.g., \"Sizes\", \"Intensities\")\n * @returns The array, or undefined if not found\n */\nexport function getArray(record, name) {\n    const value = record[name];\n    if (value && typeof value === 'object' && 'data' in value) {\n        return value;\n    }\n    return undefined;\n}\n//# sourceMappingURL=getArray.js.map","import { Analysis } from 'common-spectrum';\nimport { fromText, getArray } from 'parse-zetasizer';\n/**\n * Mapping from array column names to variable descriptors.\n *\n * The first entry whose name is found in the record becomes x (independent).\n * Subsequent matches become dependent variables using the given symbol.\n */\nconst VARIABLE_MAPPING = [\n    {\n        arrayName: 'Sizes',\n        symbol: 'x',\n        label: 'Particle diameter',\n        defaultUnits: 'nm',\n        isDependent: false,\n    },\n    {\n        arrayName: 'Intensities',\n        symbol: 'y',\n        label: 'Intensity',\n        defaultUnits: '%',\n        isDependent: true,\n    },\n    {\n        arrayName: 'Volumes',\n        symbol: 'v',\n        label: 'Volume',\n        defaultUnits: '%',\n        isDependent: true,\n    },\n    {\n        arrayName: 'Numbers',\n        symbol: 'n',\n        label: 'Number',\n        defaultUnits: '%',\n        isDependent: true,\n    },\n];\n/**\n * Parse a Zetasizer tab-separated text export and create an Analysis.\n *\n * The parser dynamically discovers whatever columns the file contains.\n * Known array columns (Sizes, Intensities, Volumes, Numbers) are mapped\n * to standard variable symbols (x, y, v, n). Records missing Sizes or\n * Intensities are skipped.\n * @param data - The raw content of a Zetasizer export file (string, ArrayBuffer, or typed array)\n * @param options - Options for the analysis\n * @returns An Analysis containing one spectrum per measurement\n */\nexport function fromZetasizer(data, options = {}) {\n    const analysis = new Analysis(options);\n    const records = fromText(data);\n    for (let i = 0; i < records.length; i++) {\n        const record = records[i];\n        if (!record)\n            continue;\n        const variables = buildVariables(record);\n        if (!variables)\n            continue;\n        const meta = extractMeta(record);\n        const cheminfo = extractCheminfo(record);\n        if (cheminfo) {\n            meta.cheminfo = cheminfo;\n        }\n        analysis.pushSpectrum(variables, {\n            id: String(i + 1),\n            title: extractTitle(record),\n            dataType: 'DLS measurement',\n            meta,\n        });\n        const spectrum = analysis.spectra.at(-1);\n        if (spectrum) {\n            spectrum.settings = extractSettings(record);\n        }\n    }\n    return analysis;\n}\n/**\n * Build MeasurementXYVariables from a parsed record.\n *\n * Returns undefined if the required Sizes or Intensities arrays are missing.\n * @param record - Parsed Zetasizer record\n * @returns Variables object, or undefined if required data is missing\n */\nfunction buildVariables(record) {\n    const sizes = getArray(record, 'Sizes');\n    const intensities = getArray(record, 'Intensities');\n    if (!sizes?.data.length || !intensities?.data.length) {\n        return undefined;\n    }\n    const variables = {\n        x: {\n            symbol: 'x',\n            label: 'Particle diameter',\n            units: 'nm',\n            data: sizes.data,\n            isDependent: false,\n        },\n        y: {\n            symbol: 'y',\n            label: 'Intensity',\n            units: '%',\n            data: intensities.data,\n            isDependent: true,\n        },\n    };\n    for (const mapping of VARIABLE_MAPPING) {\n        if (mapping.symbol === 'x' || mapping.symbol === 'y')\n            continue;\n        const array = getArray(record, mapping.arrayName);\n        if (array?.data.length) {\n            const letter = mapping.symbol;\n            variables[letter] = {\n                symbol: mapping.symbol,\n                label: mapping.label,\n                units: mapping.defaultUnits,\n                data: array.data,\n                isDependent: mapping.isDependent,\n            };\n        }\n    }\n    return variables;\n}\n/**\n * Extract the sample name from the record metadata.\n * @param record - Parsed Zetasizer record\n * @returns The sample name, or empty string if not found\n */\nfunction extractTitle(record) {\n    const sampleName = record.meta['Sample Name'];\n    return typeof sampleName === 'string' ? sampleName : '';\n}\n/**\n * Extract metadata from a parsed record.\n *\n * All scalar metadata from the record is included except Sample Name (used as title).\n * @param record - Parsed Zetasizer record\n * @returns Record of metadata key-value pairs\n */\nfunction extractMeta(record) {\n    const meta = {};\n    for (const [key, value] of Object.entries(record.meta)) {\n        if (key === 'Sample Name')\n            continue;\n        meta[key] = value;\n    }\n    return meta;\n}\n/**\n * Build standardized cheminfo metadata from a Zetasizer record.\n *\n * Extracts cumulants results (Z-Average, PdI, intercept, derived count rate),\n * overall distribution means, and per-peak distribution summaries.\n * @param record - Parsed Zetasizer record\n * @returns DLSCheminfo object, or undefined if no relevant data is found\n */\nfunction extractCheminfo(record) {\n    const { meta } = record;\n    const dlsMeta = {};\n    const zAverage = getNumber(meta, 'Z-Ave (d.nm)') ?? getNumber(meta, 'Z-Average (d.nm)');\n    if (zAverage !== undefined) {\n        dlsMeta.zAverage = { value: zAverage, units: 'nm' };\n    }\n    const pdi = getNumber(meta, 'PdI');\n    if (pdi !== undefined) {\n        dlsMeta.polydispersityIndex = pdi;\n    }\n    const countRate = getNumber(meta, 'Derived Count Rate (kcps)');\n    if (countRate !== undefined) {\n        dlsMeta.derivedMeanCountRate = { value: countRate, units: 'kcps' };\n    }\n    const intercept = getNumber(meta, 'Intercept');\n    if (intercept !== undefined) {\n        dlsMeta.intercept = intercept;\n    }\n    const average = extractAverage(record);\n    if (average) {\n        dlsMeta.average = average;\n    }\n    const distributions = extractDistributions(record);\n    if (distributions.length > 0) {\n        dlsMeta.distributions = distributions;\n    }\n    if (Object.keys(dlsMeta).length === 0) {\n        return undefined;\n    }\n    return { meta: dlsMeta };\n}\n/**\n * Get a numeric value from the record meta, or undefined if not present.\n * @param meta - Record metadata\n * @param key - Meta key to look up\n * @returns The numeric value, or undefined\n */\nfunction getNumber(meta, key) {\n    const value = meta[key];\n    return typeof value === 'number' ? value : undefined;\n}\n/**\n * Meta key patterns for overall distribution means.\n */\nconst OVERALL_MEAN_KEYS = [\n    { metaKey: 'Intensity Mean (d.nm)', key: 'intensity' },\n    { metaKey: 'Volume Mean (d.nm)', key: 'volume' },\n    { metaKey: 'Number Mean (d.nm)', key: 'number' },\n];\n/**\n * Extract overall distribution means from meta keys.\n *\n * Looks for \"Intensity Mean (d.nm)\", \"Volume Mean (d.nm)\", \"Number Mean (d.nm)\".\n * @param record - Parsed Zetasizer record\n * @returns Overall size distribution averages, or undefined if none found\n */\nfunction extractAverage(record) {\n    const average = {};\n    for (const { metaKey, key } of OVERALL_MEAN_KEYS) {\n        const value = getNumber(record.meta, metaKey);\n        if (value !== undefined) {\n            average[key] = { mean: { value, units: 'nm' } };\n        }\n    }\n    if (Object.keys(average).length === 0) {\n        return undefined;\n    }\n    return average;\n}\n/**\n * Patterns matching per-peak meta keys from Zetasizer exports.\n *\n * Examples: \"Intensity peak 1 (d.nm)\", \"Intensity Width Peak 1 (d.nm)\",\n * \"Volume Peak 2 (d.nm)\", \"Number Width Peak 3 (d.nm)\"\n */\nconst PEAK_MEAN_PATTERN = /^(?<dist>Intensity|Volume|Number)\\s+peak\\s+(?<n>\\d+)/i;\nconst PEAK_WIDTH_PATTERN = /^(?<dist>Intensity|Volume|Number)\\s+width\\s+peak\\s+(?<n>\\d+)/i;\nconst META_DISTRIBUTION_MAP = {\n    intensity: 'intensity',\n    volume: 'volume',\n    number: 'number',\n};\n/**\n * Extract per-peak distribution summaries from meta keys.\n *\n * Scans meta for \"Intensity peak N\", \"Intensity Width Peak N\", etc.\n * Peaks with zero mean and zero width are filtered out. When only one\n * peak is detected, overall means from arrays (volume, number) are used\n * to enrich the peak.\n * @param record - Parsed Zetasizer record\n * @returns Array of distributions, one per detected particle population\n */\nfunction extractDistributions(record) {\n    const peakMap = new Map();\n    for (const [key, value] of Object.entries(record.meta)) {\n        if (typeof value !== 'number' || value === 0)\n            continue;\n        let match = PEAK_MEAN_PATTERN.exec(key);\n        if (match?.groups?.dist && match.groups.n) {\n            const distributionKey = META_DISTRIBUTION_MAP[match.groups.dist.toLowerCase()];\n            if (!distributionKey)\n                continue;\n            const peakNumber = Number(match.groups.n);\n            const distribution = getOrCreateDistribution(peakMap, peakNumber);\n            let stats = distribution[distributionKey];\n            if (!stats) {\n                stats = {};\n                distribution[distributionKey] = stats;\n            }\n            stats.mean = { value, units: 'nm' };\n            continue;\n        }\n        match = PEAK_WIDTH_PATTERN.exec(key);\n        if (match?.groups?.dist && match.groups.n) {\n            const distributionKey = META_DISTRIBUTION_MAP[match.groups.dist.toLowerCase()];\n            if (!distributionKey)\n                continue;\n            const peakNumber = Number(match.groups.n);\n            const distribution = getOrCreateDistribution(peakMap, peakNumber);\n            let stats = distribution[distributionKey];\n            if (!stats) {\n                stats = {};\n                distribution[distributionKey] = stats;\n            }\n            stats.standardDeviation = { value, units: 'nm' };\n        }\n    }\n    // When there's exactly one peak, enrich it with overall means\n    // from distributions that don't have per-peak data.\n    if (peakMap.size === 1) {\n        const onlyPeak = peakMap.values().next().value;\n        if (onlyPeak) {\n            for (const { metaKey, key } of OVERALL_MEAN_KEYS) {\n                if (onlyPeak[key])\n                    continue;\n                const value = getNumber(record.meta, metaKey);\n                if (value !== undefined) {\n                    onlyPeak[key] = { mean: { value, units: 'nm' } };\n                }\n            }\n        }\n    }\n    const sortedKeys = [...peakMap.keys()].toSorted((a, b) => a - b);\n    const distributions = [];\n    for (const peakNumber of sortedKeys) {\n        const distribution = peakMap.get(peakNumber);\n        if (distribution) {\n            distributions.push(distribution);\n        }\n    }\n    return distributions;\n}\n/**\n * Get or create a DLSDistribution for a given peak number.\n * @param peakMap - Map of peak numbers to distributions\n * @param peakNumber - Peak number\n * @returns The distribution for the given peak\n */\nfunction getOrCreateDistribution(peakMap, peakNumber) {\n    let distribution = peakMap.get(peakNumber);\n    if (!distribution) {\n        distribution = {};\n        peakMap.set(peakNumber, distribution);\n    }\n    return distribution;\n}\n/**\n * Extract instrument settings from a parsed record.\n * @param record - Parsed Zetasizer record\n * @returns Settings object with instrument info and measurement parameters\n */\nfunction extractSettings(record) {\n    const { meta } = record;\n    const serialNumber = meta['Serial Number'];\n    const softwareVersion = meta['S/W Version'];\n    const settings = {\n        instrument: {\n            manufacturer: 'Malvern Panalytical',\n            model: 'Zetasizer',\n            ...(typeof serialNumber === 'string' ? { serialNumber } : {}),\n            software: {\n                name: 'Zetasizer Nano',\n                ...(typeof softwareVersion === 'string' ||\n                    typeof softwareVersion === 'number'\n                    ? { version: String(softwareVersion) }\n                    : {}),\n            },\n        },\n    };\n    return settings;\n}\n//# sourceMappingURL=fromZetasizer.js.map","/**\n * Find a parameter by name in a flat list of children (direct children only).\n * @param children - List of parameters to search\n * @param name - Name to search for\n * @returns The matching parameter, or undefined if not found\n */\nexport function findParameter(children, name) {\n    return children.find((child) => child.name === name);\n}\n/**\n * Recursively search for a parameter by name in the parameter tree.\n * @param parameter - Root parameter node to search from\n * @param name - Name to search for\n * @returns The matching parameter, or undefined if not found\n */\nexport function findParameterDeep(parameter, name) {\n    if (parameter.name === name) {\n        return parameter;\n    }\n    if (parameter.children) {\n        for (const child of parameter.children) {\n            const found = findParameterDeep(child, name);\n            if (found) {\n                return found;\n            }\n        }\n    }\n    return undefined;\n}\n//# sourceMappingURL=findParameter.js.map","//#region src/bin/sqlite3-worker1-promiser.mjs\n/**\nConfigures an sqlite3 Worker API #1 Worker such that it can be\nmanipulated via a Promise-based interface and returns a factory\nfunction which returns Promises for communicating with the worker.\nThis proxy has an _almost_ identical interface to the normal\nworker API, with any exceptions documented below.\n\nIt requires a configuration object with the following properties:\n\n- `worker` (required): a Worker instance which loads\n`sqlite3-worker1.js` or a functional equivalent. Note that the\npromiser factory replaces the worker.onmessage property. This\nconfig option may alternately be a function, in which case this\nfunction re-assigns this property with the result of calling that\nfunction, enabling delayed instantiation of a Worker.\n\n- `onready` (optional, but...): this callback is called with no\narguments when the worker fires its initial\n'sqlite3-api'/'worker1-ready' message, which it does when\nsqlite3.initWorker1API() completes its initialization. This is the\nsimplest way to tell the worker to kick off work at the earliest\nopportunity, and the only way to know when the worker module has\ncompleted loading. The irony of using a callback for this, instead\nof returning a promise from sqlite3Worker1Promiser() is not lost on\nthe developers: see sqlite3Worker1Promiser.v2() which uses a\nPromise instead.\n\n- `onunhandled` (optional): a callback which gets passed the\nmessage event object for any worker.onmessage() events which\nare not handled by this proxy. Ideally that \"should\" never\nhappen, as this proxy aims to handle all known message types.\n\n- `generateMessageId` (optional): a function which, when passed an\nabout-to-be-posted message object, generates a _unique_ message ID\nfor the message, which this API then assigns as the messageId\nproperty of the message. It _must_ generate unique IDs on each call\nso that dispatching can work. If not defined, a default generator\nis used (which should be sufficient for most or all cases).\n\n- `debug` (optional): a console.debug()-style function for logging\ninformation about messages.\n\nThis function returns a stateful factory function with the\nfollowing interfaces:\n\n- Promise function(messageType, messageArgs)\n- Promise function({message object})\n\nThe first form expects the \"type\" and \"args\" values for a Worker\nmessage. The second expects an object in the form {type:...,\nargs:...}  plus any other properties the client cares to set. This\nfunction will always set the `messageId` property on the object,\neven if it's already set, and will set the `dbId` property to the\ncurrent database ID if it is _not_ set in the message object.\n\nThe function throws on error.\n\nThe function installs a temporary message listener, posts a\nmessage to the configured Worker, and handles the message's\nresponse via the temporary message listener. The then() callback\nof the returned Promise is passed the `message.data` property from\nthe resulting message, i.e. the payload from the worker, stripped\nof the lower-level event state which the onmessage() handler\nreceives.\n\nExample usage:\n\n```\nconst config = {...};\nconst sq3Promiser = sqlite3Worker1Promiser(config);\nsq3Promiser('open', {filename:\"/foo.db\"}).then(function(msg){\nconsole.log(\"open response\",msg); // => {type:'open', result: {filename:'/foo.db'}, ...}\n});\nsq3Promiser({type:'close'}).then((msg)=>{\nconsole.log(\"close response\",msg); // => {type:'close', result: {filename:'/foo.db'}, ...}\n});\n```\n\nDifferences from Worker API #1:\n\n- exec's {callback: STRING} option does not work via this\ninterface (it triggers an exception), but {callback: function}\ndoes and works exactly like the STRING form does in the Worker:\nthe callback is called one time for each row of the result set,\npassed the same worker message format as the worker API emits:\n\n{\ntype:typeString,\nrow:VALUE,\nrowNumber:1-based-#,\ncolumnNames: array\n}\n\nWhere `typeString` is an internally-synthesized message type string\nused temporarily for worker message dispatching. It can be ignored\nby all client code except that which tests this API. The `row`\nproperty contains the row result in the form implied by the\n`rowMode` option (defaulting to `'array'`). The `rowNumber` is a\n1-based integer value incremented by 1 on each call into the\ncallback.\n\nAt the end of the result set, the same event is fired with\n(row=undefined, rowNumber=null) to indicate that the end of the\nresult set has been reached. The rows arrive via worker-posted\nmessages, with all the implications of that.\n\nNotable shortcomings:\n\n- \"v1\" of this this API is not suitable for use as an ESM module\nbecause ESM worker modules were not widely supported when it was\ndeveloped. For use as an ESM module, see the \"v2\" interface later\non in this file.\n*/\nglobalThis.sqlite3Worker1Promiser = function callee(config = callee.defaultConfig) {\n\tif (1 === arguments.length && \"function\" === typeof arguments[0]) {\n\t\tconst f = config;\n\t\tconfig = Object.assign(Object.create(null), callee.defaultConfig);\n\t\tconfig.onready = f;\n\t} else config = Object.assign(Object.create(null), callee.defaultConfig, config);\n\tconst handlerMap = Object.create(null);\n\tconst noop = function() {};\n\tconst err = config.onerror || noop;\n\tconst debug = config.debug || noop;\n\tconst idTypeMap = config.generateMessageId ? void 0 : Object.create(null);\n\tconst genMsgId = config.generateMessageId || function(msg) {\n\t\treturn msg.type + \"#\" + (idTypeMap[msg.type] = (idTypeMap[msg.type] || 0) + 1);\n\t};\n\tconst toss = (...args) => {\n\t\tthrow new Error(args.join(\" \"));\n\t};\n\tif (!config.worker) config.worker = callee.defaultConfig.worker;\n\tif (\"function\" === typeof config.worker) config.worker = config.worker();\n\tlet dbId;\n\tlet promiserFunc;\n\tconfig.worker.onmessage = function(ev) {\n\t\tev = ev.data;\n\t\tdebug(\"worker1.onmessage\", ev);\n\t\tlet msgHandler = handlerMap[ev.messageId];\n\t\tif (!msgHandler) {\n\t\t\tif (ev && \"sqlite3-api\" === ev.type && \"worker1-ready\" === ev.result) {\n\t\t\t\tif (config.onready) config.onready(promiserFunc);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tmsgHandler = handlerMap[ev.type];\n\t\t\tif (msgHandler && msgHandler.onrow) {\n\t\t\t\tmsgHandler.onrow(ev);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (config.onunhandled) config.onunhandled(arguments[0]);\n\t\t\telse err(\"sqlite3Worker1Promiser() unhandled worker message:\", ev);\n\t\t\treturn;\n\t\t}\n\t\tdelete handlerMap[ev.messageId];\n\t\tswitch (ev.type) {\n\t\t\tcase \"error\":\n\t\t\t\tmsgHandler.reject(ev);\n\t\t\t\treturn;\n\t\t\tcase \"open\":\n\t\t\t\tif (!dbId) dbId = ev.dbId;\n\t\t\t\tbreak;\n\t\t\tcase \"close\":\n\t\t\t\tif (ev.dbId === dbId) dbId = void 0;\n\t\t\t\tbreak;\n\t\t\tdefault: break;\n\t\t}\n\t\ttry {\n\t\t\tmsgHandler.resolve(ev);\n\t\t} catch (e) {\n\t\t\tmsgHandler.reject(e);\n\t\t}\n\t};\n\treturn promiserFunc = function() {\n\t\tlet msg;\n\t\tif (1 === arguments.length) msg = arguments[0];\n\t\telse if (2 === arguments.length) {\n\t\t\tmsg = Object.create(null);\n\t\t\tmsg.type = arguments[0];\n\t\t\tmsg.args = arguments[1];\n\t\t\tmsg.dbId = msg.args.dbId;\n\t\t} else toss(\"Invalid arguments for sqlite3Worker1Promiser()-created factory.\");\n\t\tif (!msg.dbId && msg.type !== \"open\") msg.dbId = dbId;\n\t\tmsg.messageId = genMsgId(msg);\n\t\tmsg.departureTime = performance.now();\n\t\tconst proxy = Object.create(null);\n\t\tproxy.message = msg;\n\t\tlet rowCallbackId;\n\t\tif (\"exec\" === msg.type && msg.args) {\n\t\t\tif (\"function\" === typeof msg.args.callback) {\n\t\t\t\trowCallbackId = msg.messageId + \":row\";\n\t\t\t\tproxy.onrow = msg.args.callback;\n\t\t\t\tmsg.args.callback = rowCallbackId;\n\t\t\t\thandlerMap[rowCallbackId] = proxy;\n\t\t\t} else if (\"string\" === typeof msg.args.callback) toss(\"exec callback may not be a string when using the Promise interface.\");\n\t\t}\n\t\tlet p = new Promise(function(resolve, reject) {\n\t\t\tproxy.resolve = resolve;\n\t\t\tproxy.reject = reject;\n\t\t\thandlerMap[msg.messageId] = proxy;\n\t\t\tdebug(\"Posting\", msg.type, \"message to Worker dbId=\" + (dbId || \"default\") + \":\", msg);\n\t\t\tconfig.worker.postMessage(msg);\n\t\t});\n\t\tif (rowCallbackId) p = p.finally(() => delete handlerMap[rowCallbackId]);\n\t\treturn p;\n\t};\n};\nglobalThis.sqlite3Worker1Promiser.defaultConfig = {\n\tworker: function() {\n\t\treturn new Worker(new URL(\"sqlite3-worker1.mjs\", import.meta.url), { type: \"module\" });\n\t},\n\tonerror: (...args) => console.error(\"sqlite3Worker1Promiser():\", ...args)\n};\n/**\nsqlite3Worker1Promiser.v2(), added in 3.46, works identically to\nsqlite3Worker1Promiser() except that it returns a Promise instead\nof relying an an onready callback in the config object. The Promise\nresolves to the same factory function which\nsqlite3Worker1Promiser() returns.\n\nIf config is-a function or is an object which contains an onready\nfunction, that function is replaced by a proxy which will resolve\nafter calling the original function and will reject if that\nfunction throws.\n*/\nglobalThis.sqlite3Worker1Promiser.v2 = function callee(config = callee.defaultConfig) {\n\tlet oldFunc;\n\tif (\"function\" == typeof config) {\n\t\toldFunc = config;\n\t\tconfig = {};\n\t} else if (\"function\" === typeof config?.onready) {\n\t\toldFunc = config.onready;\n\t\tdelete config.onready;\n\t}\n\tconst promiseProxy = Object.create(null);\n\tconfig = Object.assign(config || Object.create(null), { onready: async function(func) {\n\t\ttry {\n\t\t\tif (oldFunc) await oldFunc(func);\n\t\t\tpromiseProxy.resolve(func);\n\t\t} catch (e) {\n\t\t\tpromiseProxy.reject(e);\n\t\t}\n\t} });\n\tconst p = new Promise(function(resolve, reject) {\n\t\tpromiseProxy.resolve = resolve;\n\t\tpromiseProxy.reject = reject;\n\t});\n\ttry {\n\t\tthis.original(config);\n\t} catch (e) {\n\t\tpromiseProxy.reject(e);\n\t}\n\treturn p;\n}.bind({ original: sqlite3Worker1Promiser });\nglobalThis.sqlite3Worker1Promiser.v2.defaultConfig = globalThis.sqlite3Worker1Promiser.defaultConfig;\n/**\nWhen built as a module, we export sqlite3Worker1Promiser.v2()\ninstead of sqlite3Worker1Promise() because (A) its interface is more\nconventional for ESM usage and (B) the ESM export option for this\nAPI did not exist until v2 was created, so there's no backwards\nincompatibility.\n*/\nvar sqlite3_worker1_promiser_default = sqlite3Worker1Promiser.v2;\ndelete globalThis.sqlite3Worker1Promiser;\n//#endregion\n//#region src/bin/sqlite3-bundler-friendly.mjs\n/* @preserve\n**\n** LICENSE for the sqlite3 WebAssembly/JavaScript APIs.\n**\n** This bundle (typically released as sqlite3.js or sqlite3.mjs)\n** is an amalgamation of JavaScript source code from two projects:\n**\n** 1) https://emscripten.org: the Emscripten \"glue code\" is covered by\n**    the terms of the MIT license and University of Illinois/NCSA\n**    Open Source License, as described at:\n**\n**    https://emscripten.org/docs/introducing_emscripten/emscripten_license.html\n**\n** 2) https://sqlite.org: all code and documentation labeled as being\n**    from this source are released under the same terms as the sqlite3\n**    C library:\n**\n** 2022-10-16\n**\n** The author disclaims copyright to this source code.  In place of a\n** legal notice, here is a blessing:\n**\n** *   May you do good and not evil.\n** *   May you find forgiveness for yourself and forgive others.\n** *   May you share freely, never taking more than you give.\n*/\n/* @preserve\n** This code was built from sqlite3 version...\n**\n** SQLITE_VERSION \"3.52.0\"\n** SQLITE_VERSION_NUMBER 3052000\n** SQLITE_SOURCE_ID \"2026-01-30 06:37:34 407724c4e80efdf93d885e95b5209a100a3f470fe0298138be57201f65f9817e\"\n**\n** Emscripten SDK: 5.0.0\n*/\nasync function sqlite3InitModule(moduleArg = {}) {\n\tvar moduleRtn;\n\tvar Module = moduleArg;\n\tvar ENVIRONMENT_IS_WEB = !!globalThis.window;\n\tvar ENVIRONMENT_IS_WORKER = !!globalThis.WorkerGlobalScope;\n\tglobalThis.process?.versions?.node && globalThis.process?.type;\n\tvar thisProgram = \"./this.program\";\n\tvar _scriptName = import.meta.url;\n\tvar scriptDirectory = \"\";\n\tfunction locateFile(path) {\n\t\tif (Module[\"locateFile\"]) return Module[\"locateFile\"](path, scriptDirectory);\n\t\treturn scriptDirectory + path;\n\t}\n\tvar readAsync, readBinary;\n\tif (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n\t\ttry {\n\t\t\tscriptDirectory = new URL(\".\", _scriptName).href;\n\t\t} catch {}\n\t\tif (ENVIRONMENT_IS_WORKER) readBinary = (url) => {\n\t\t\tvar xhr = new XMLHttpRequest();\n\t\t\txhr.open(\"GET\", url, false);\n\t\t\txhr.responseType = \"arraybuffer\";\n\t\t\txhr.send(null);\n\t\t\treturn new Uint8Array(xhr.response);\n\t\t};\n\t\treadAsync = async (url) => {\n\t\t\tvar response = await fetch(url, { credentials: \"same-origin\" });\n\t\t\tif (response.ok) return response.arrayBuffer();\n\t\t\tthrow new Error(response.status + \" : \" + response.url);\n\t\t};\n\t}\n\tvar out = console.log.bind(console);\n\tvar err = console.error.bind(console);\n\tvar wasmBinary;\n\tvar ABORT = false, readyPromiseResolve, readyPromiseReject, HEAP8, HEAPU8, HEAP16, HEAP32, HEAPU32, HEAP64;\n\tvar runtimeInitialized = false;\n\tfunction updateMemoryViews() {\n\t\tvar b = wasmMemory.buffer;\n\t\tHEAP8 = new Int8Array(b);\n\t\tHEAP16 = new Int16Array(b);\n\t\tHEAPU8 = new Uint8Array(b);\n\t\tnew Uint16Array(b);\n\t\tHEAP32 = new Int32Array(b);\n\t\tHEAPU32 = new Uint32Array(b);\n\t\tnew Float32Array(b);\n\t\tnew Float64Array(b);\n\t\tHEAP64 = new BigInt64Array(b);\n\t\tnew BigUint64Array(b);\n\t}\n\tfunction initMemory() {\n\t\tif (Module[\"wasmMemory\"]) wasmMemory = Module[\"wasmMemory\"];\n\t\telse {\n\t\t\tvar INITIAL_MEMORY = Module[\"INITIAL_MEMORY\"] || 8388608;\n\t\t\t/** @suppress {checkTypes} */\n\t\t\twasmMemory = new WebAssembly.Memory({\n\t\t\t\t\"initial\": INITIAL_MEMORY / 65536,\n\t\t\t\t\"maximum\": 32768\n\t\t\t});\n\t\t}\n\t\tupdateMemoryViews();\n\t}\n\tfunction preRun() {\n\t\tif (Module[\"preRun\"]) {\n\t\t\tif (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [Module[\"preRun\"]];\n\t\t\twhile (Module[\"preRun\"].length) addOnPreRun(Module[\"preRun\"].shift());\n\t\t}\n\t\tcallRuntimeCallbacks(onPreRuns);\n\t}\n\tfunction initRuntime() {\n\t\truntimeInitialized = true;\n\t\tif (!Module[\"noFSInit\"] && !FS.initialized) FS.init();\n\t\tTTY.init();\n\t\twasmExports[\"__wasm_call_ctors\"]();\n\t\tFS.ignorePermissions = false;\n\t}\n\tfunction postRun() {\n\t\tif (Module[\"postRun\"]) {\n\t\t\tif (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [Module[\"postRun\"]];\n\t\t\twhile (Module[\"postRun\"].length) addOnPostRun(Module[\"postRun\"].shift());\n\t\t}\n\t\tcallRuntimeCallbacks(onPostRuns);\n\t}\n\t/** @param {string|number=} what */\n\tfunction abort(what) {\n\t\tModule[\"onAbort\"]?.(what);\n\t\twhat = \"Aborted(\" + what + \")\";\n\t\terr(what);\n\t\tABORT = true;\n\t\twhat += \". Build with -sASSERTIONS for more info.\";\n\t\t/** @suppress {checkTypes} */\n\t\tvar e = new WebAssembly.RuntimeError(what);\n\t\treadyPromiseReject?.(e);\n\t\tthrow e;\n\t}\n\tvar wasmBinaryFile;\n\tfunction findWasmBinary() {\n\t\tif (Module[\"locateFile\"]) return locateFile(\"sqlite3.wasm\");\n\t\treturn new URL(\"sqlite3.wasm\", import.meta.url).href;\n\t}\n\tfunction getBinarySync(file) {\n\t\tif (file == wasmBinaryFile && wasmBinary) return new Uint8Array(wasmBinary);\n\t\tif (readBinary) return readBinary(file);\n\t\tthrow \"both async and sync fetching of the wasm failed\";\n\t}\n\tasync function getWasmBinary(binaryFile) {\n\t\tif (!wasmBinary) try {\n\t\t\tvar response = await readAsync(binaryFile);\n\t\t\treturn new Uint8Array(response);\n\t\t} catch {}\n\t\treturn getBinarySync(binaryFile);\n\t}\n\tasync function instantiateArrayBuffer(binaryFile, imports) {\n\t\ttry {\n\t\t\tvar binary = await getWasmBinary(binaryFile);\n\t\t\treturn await WebAssembly.instantiate(binary, imports);\n\t\t} catch (reason) {\n\t\t\terr(`failed to asynchronously prepare wasm: ${reason}`);\n\t\t\tabort(reason);\n\t\t}\n\t}\n\tasync function instantiateAsync(binary, binaryFile, imports) {\n\t\tif (!binary) try {\n\t\t\tvar response = fetch(binaryFile, { credentials: \"same-origin\" });\n\t\t\treturn await WebAssembly.instantiateStreaming(response, imports);\n\t\t} catch (reason) {\n\t\t\terr(`wasm streaming compile failed: ${reason}`);\n\t\t\terr(\"falling back to ArrayBuffer instantiation\");\n\t\t}\n\t\treturn instantiateArrayBuffer(binaryFile, imports);\n\t}\n\tfunction getWasmImports() {\n\t\treturn {\n\t\t\t\"env\": wasmImports,\n\t\t\t\"wasi_snapshot_preview1\": wasmImports\n\t\t};\n\t}\n\tasync function createWasm() {\n\t\t/** @param {WebAssembly.Module=} module*/\n\t\tfunction receiveInstance(instance, module) {\n\t\t\twasmExports = instance.exports;\n\t\t\tassignWasmExports(wasmExports);\n\t\t\treturn wasmExports;\n\t\t}\n\t\tfunction receiveInstantiationResult(result) {\n\t\t\treturn receiveInstance(result[\"instance\"]);\n\t\t}\n\t\tvar info = getWasmImports();\n\t\tif (Module[\"instantiateWasm\"]) return new Promise((resolve, reject) => {\n\t\t\tModule[\"instantiateWasm\"](info, (inst, mod) => {\n\t\t\t\tresolve(receiveInstance(inst, mod));\n\t\t\t});\n\t\t});\n\t\twasmBinaryFile ??= findWasmBinary();\n\t\treturn receiveInstantiationResult(await instantiateAsync(wasmBinary, wasmBinaryFile, info));\n\t}\n\tvar callRuntimeCallbacks = (callbacks) => {\n\t\twhile (callbacks.length > 0) callbacks.shift()(Module);\n\t};\n\tvar onPostRuns = [];\n\tvar addOnPostRun = (cb) => onPostRuns.push(cb);\n\tvar onPreRuns = [];\n\tvar addOnPreRun = (cb) => onPreRuns.push(cb);\n\tvar wasmMemory;\n\tvar PATH = {\n\t\tisAbs: (path) => path.charAt(0) === \"/\",\n\t\tsplitPath: (filename) => {\n\t\t\treturn /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/.exec(filename).slice(1);\n\t\t},\n\t\tnormalizeArray: (parts, allowAboveRoot) => {\n\t\t\tvar up = 0;\n\t\t\tfor (var i = parts.length - 1; i >= 0; i--) {\n\t\t\t\tvar last = parts[i];\n\t\t\t\tif (last === \".\") parts.splice(i, 1);\n\t\t\t\telse if (last === \"..\") {\n\t\t\t\t\tparts.splice(i, 1);\n\t\t\t\t\tup++;\n\t\t\t\t} else if (up) {\n\t\t\t\t\tparts.splice(i, 1);\n\t\t\t\t\tup--;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (allowAboveRoot) for (; up; up--) parts.unshift(\"..\");\n\t\t\treturn parts;\n\t\t},\n\t\tnormalize: (path) => {\n\t\t\tvar isAbsolute = PATH.isAbs(path), trailingSlash = path.slice(-1) === \"/\";\n\t\t\tpath = PATH.normalizeArray(path.split(\"/\").filter((p) => !!p), !isAbsolute).join(\"/\");\n\t\t\tif (!path && !isAbsolute) path = \".\";\n\t\t\tif (path && trailingSlash) path += \"/\";\n\t\t\treturn (isAbsolute ? \"/\" : \"\") + path;\n\t\t},\n\t\tdirname: (path) => {\n\t\t\tvar result = PATH.splitPath(path), root = result[0], dir = result[1];\n\t\t\tif (!root && !dir) return \".\";\n\t\t\tif (dir) dir = dir.slice(0, -1);\n\t\t\treturn root + dir;\n\t\t},\n\t\tbasename: (path) => path && path.match(/([^\\/]+|\\/)\\/*$/)[1],\n\t\tjoin: (...paths) => PATH.normalize(paths.join(\"/\")),\n\t\tjoin2: (l, r) => PATH.normalize(l + \"/\" + r)\n\t};\n\tvar initRandomFill = () => {\n\t\treturn (view) => crypto.getRandomValues(view);\n\t};\n\tvar randomFill = (view) => {\n\t\t(randomFill = initRandomFill())(view);\n\t};\n\tvar PATH_FS = {\n\t\tresolve: (...args) => {\n\t\t\tvar resolvedPath = \"\", resolvedAbsolute = false;\n\t\t\tfor (var i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n\t\t\t\tvar path = i >= 0 ? args[i] : FS.cwd();\n\t\t\t\tif (typeof path != \"string\") throw new TypeError(\"Arguments to path.resolve must be strings\");\n\t\t\t\telse if (!path) return \"\";\n\t\t\t\tresolvedPath = path + \"/\" + resolvedPath;\n\t\t\t\tresolvedAbsolute = PATH.isAbs(path);\n\t\t\t}\n\t\t\tresolvedPath = PATH.normalizeArray(resolvedPath.split(\"/\").filter((p) => !!p), !resolvedAbsolute).join(\"/\");\n\t\t\treturn (resolvedAbsolute ? \"/\" : \"\") + resolvedPath || \".\";\n\t\t},\n\t\trelative: (from, to) => {\n\t\t\tfrom = PATH_FS.resolve(from).slice(1);\n\t\t\tto = PATH_FS.resolve(to).slice(1);\n\t\t\tfunction trim(arr) {\n\t\t\t\tvar start = 0;\n\t\t\t\tfor (; start < arr.length; start++) if (arr[start] !== \"\") break;\n\t\t\t\tvar end = arr.length - 1;\n\t\t\t\tfor (; end >= 0; end--) if (arr[end] !== \"\") break;\n\t\t\t\tif (start > end) return [];\n\t\t\t\treturn arr.slice(start, end - start + 1);\n\t\t\t}\n\t\t\tvar fromParts = trim(from.split(\"/\"));\n\t\t\tvar toParts = trim(to.split(\"/\"));\n\t\t\tvar length = Math.min(fromParts.length, toParts.length);\n\t\t\tvar samePartsLength = length;\n\t\t\tfor (var i = 0; i < length; i++) if (fromParts[i] !== toParts[i]) {\n\t\t\t\tsamePartsLength = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tvar outputParts = [];\n\t\t\tfor (var i = samePartsLength; i < fromParts.length; i++) outputParts.push(\"..\");\n\t\t\toutputParts = outputParts.concat(toParts.slice(samePartsLength));\n\t\t\treturn outputParts.join(\"/\");\n\t\t}\n\t};\n\tvar UTF8Decoder = new TextDecoder();\n\tvar findStringEnd = (heapOrArray, idx, maxBytesToRead, ignoreNul) => {\n\t\tvar maxIdx = idx + maxBytesToRead;\n\t\tif (ignoreNul) return maxIdx;\n\t\twhile (heapOrArray[idx] && !(idx >= maxIdx)) ++idx;\n\t\treturn idx;\n\t};\n\t/**\n\t* Given a pointer 'idx' to a null-terminated UTF8-encoded string in the given\n\t* array that contains uint8 values, returns a copy of that string as a\n\t* Javascript String object.\n\t* heapOrArray is either a regular array, or a JavaScript typed array view.\n\t* @param {number=} idx\n\t* @param {number=} maxBytesToRead\n\t* @param {boolean=} ignoreNul - If true, the function will not stop on a NUL character.\n\t* @return {string}\n\t*/\n\tvar UTF8ArrayToString = (heapOrArray, idx = 0, maxBytesToRead, ignoreNul) => {\n\t\tvar endPtr = findStringEnd(heapOrArray, idx, maxBytesToRead, ignoreNul);\n\t\treturn UTF8Decoder.decode(heapOrArray.buffer ? heapOrArray.subarray(idx, endPtr) : new Uint8Array(heapOrArray.slice(idx, endPtr)));\n\t};\n\tvar FS_stdin_getChar_buffer = [];\n\tvar lengthBytesUTF8 = (str) => {\n\t\tvar len = 0;\n\t\tfor (var i = 0; i < str.length; ++i) {\n\t\t\tvar c = str.charCodeAt(i);\n\t\t\tif (c <= 127) len++;\n\t\t\telse if (c <= 2047) len += 2;\n\t\t\telse if (c >= 55296 && c <= 57343) {\n\t\t\t\tlen += 4;\n\t\t\t\t++i;\n\t\t\t} else len += 3;\n\t\t}\n\t\treturn len;\n\t};\n\tvar stringToUTF8Array = (str, heap, outIdx, maxBytesToWrite) => {\n\t\tif (!(maxBytesToWrite > 0)) return 0;\n\t\tvar startIdx = outIdx;\n\t\tvar endIdx = outIdx + maxBytesToWrite - 1;\n\t\tfor (var i = 0; i < str.length; ++i) {\n\t\t\tvar u = str.codePointAt(i);\n\t\t\tif (u <= 127) {\n\t\t\t\tif (outIdx >= endIdx) break;\n\t\t\t\theap[outIdx++] = u;\n\t\t\t} else if (u <= 2047) {\n\t\t\t\tif (outIdx + 1 >= endIdx) break;\n\t\t\t\theap[outIdx++] = 192 | u >> 6;\n\t\t\t\theap[outIdx++] = 128 | u & 63;\n\t\t\t} else if (u <= 65535) {\n\t\t\t\tif (outIdx + 2 >= endIdx) break;\n\t\t\t\theap[outIdx++] = 224 | u >> 12;\n\t\t\t\theap[outIdx++] = 128 | u >> 6 & 63;\n\t\t\t\theap[outIdx++] = 128 | u & 63;\n\t\t\t} else {\n\t\t\t\tif (outIdx + 3 >= endIdx) break;\n\t\t\t\theap[outIdx++] = 240 | u >> 18;\n\t\t\t\theap[outIdx++] = 128 | u >> 12 & 63;\n\t\t\t\theap[outIdx++] = 128 | u >> 6 & 63;\n\t\t\t\theap[outIdx++] = 128 | u & 63;\n\t\t\t\ti++;\n\t\t\t}\n\t\t}\n\t\theap[outIdx] = 0;\n\t\treturn outIdx - startIdx;\n\t};\n\t/** @type {function(string, boolean=, number=)} */\n\tvar intArrayFromString = (stringy, dontAddNull, length) => {\n\t\tvar len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;\n\t\tvar u8array = new Array(len);\n\t\tvar numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length);\n\t\tif (dontAddNull) u8array.length = numBytesWritten;\n\t\treturn u8array;\n\t};\n\tvar FS_stdin_getChar = () => {\n\t\tif (!FS_stdin_getChar_buffer.length) {\n\t\t\tvar result = null;\n\t\t\tif (globalThis.window?.prompt) {\n\t\t\t\tresult = window.prompt(\"Input: \");\n\t\t\t\tif (result !== null) result += \"\\n\";\n\t\t\t}\n\t\t\tif (!result) return null;\n\t\t\tFS_stdin_getChar_buffer = intArrayFromString(result, true);\n\t\t}\n\t\treturn FS_stdin_getChar_buffer.shift();\n\t};\n\tvar TTY = {\n\t\tttys: [],\n\t\tinit() {},\n\t\tshutdown() {},\n\t\tregister(dev, ops) {\n\t\t\tTTY.ttys[dev] = {\n\t\t\t\tinput: [],\n\t\t\t\toutput: [],\n\t\t\t\tops\n\t\t\t};\n\t\t\tFS.registerDevice(dev, TTY.stream_ops);\n\t\t},\n\t\tstream_ops: {\n\t\t\topen(stream) {\n\t\t\t\tvar tty = TTY.ttys[stream.node.rdev];\n\t\t\t\tif (!tty) throw new FS.ErrnoError(43);\n\t\t\t\tstream.tty = tty;\n\t\t\t\tstream.seekable = false;\n\t\t\t},\n\t\t\tclose(stream) {\n\t\t\t\tstream.tty.ops.fsync(stream.tty);\n\t\t\t},\n\t\t\tfsync(stream) {\n\t\t\t\tstream.tty.ops.fsync(stream.tty);\n\t\t\t},\n\t\t\tread(stream, buffer, offset, length, pos) {\n\t\t\t\tif (!stream.tty || !stream.tty.ops.get_char) throw new FS.ErrnoError(60);\n\t\t\t\tvar bytesRead = 0;\n\t\t\t\tfor (var i = 0; i < length; i++) {\n\t\t\t\t\tvar result;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tresult = stream.tty.ops.get_char(stream.tty);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tthrow new FS.ErrnoError(29);\n\t\t\t\t\t}\n\t\t\t\t\tif (result === void 0 && bytesRead === 0) throw new FS.ErrnoError(6);\n\t\t\t\t\tif (result === null || result === void 0) break;\n\t\t\t\t\tbytesRead++;\n\t\t\t\t\tbuffer[offset + i] = result;\n\t\t\t\t}\n\t\t\t\tif (bytesRead) stream.node.atime = Date.now();\n\t\t\t\treturn bytesRead;\n\t\t\t},\n\t\t\twrite(stream, buffer, offset, length, pos) {\n\t\t\t\tif (!stream.tty || !stream.tty.ops.put_char) throw new FS.ErrnoError(60);\n\t\t\t\ttry {\n\t\t\t\t\tfor (var i = 0; i < length; i++) stream.tty.ops.put_char(stream.tty, buffer[offset + i]);\n\t\t\t\t} catch (e) {\n\t\t\t\t\tthrow new FS.ErrnoError(29);\n\t\t\t\t}\n\t\t\t\tif (length) stream.node.mtime = stream.node.ctime = Date.now();\n\t\t\t\treturn i;\n\t\t\t}\n\t\t},\n\t\tdefault_tty_ops: {\n\t\t\tget_char(tty) {\n\t\t\t\treturn FS_stdin_getChar();\n\t\t\t},\n\t\t\tput_char(tty, val) {\n\t\t\t\tif (val === null || val === 10) {\n\t\t\t\t\tout(UTF8ArrayToString(tty.output));\n\t\t\t\t\ttty.output = [];\n\t\t\t\t} else if (val != 0) tty.output.push(val);\n\t\t\t},\n\t\t\tfsync(tty) {\n\t\t\t\tif (tty.output?.length > 0) {\n\t\t\t\t\tout(UTF8ArrayToString(tty.output));\n\t\t\t\t\ttty.output = [];\n\t\t\t\t}\n\t\t\t},\n\t\t\tioctl_tcgets(tty) {\n\t\t\t\treturn {\n\t\t\t\t\tc_iflag: 25856,\n\t\t\t\t\tc_oflag: 5,\n\t\t\t\t\tc_cflag: 191,\n\t\t\t\t\tc_lflag: 35387,\n\t\t\t\t\tc_cc: [\n\t\t\t\t\t\t3,\n\t\t\t\t\t\t28,\n\t\t\t\t\t\t127,\n\t\t\t\t\t\t21,\n\t\t\t\t\t\t4,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t17,\n\t\t\t\t\t\t19,\n\t\t\t\t\t\t26,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t18,\n\t\t\t\t\t\t15,\n\t\t\t\t\t\t23,\n\t\t\t\t\t\t22,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t\t]\n\t\t\t\t};\n\t\t\t},\n\t\t\tioctl_tcsets(tty, optional_actions, data) {\n\t\t\t\treturn 0;\n\t\t\t},\n\t\t\tioctl_tiocgwinsz(tty) {\n\t\t\t\treturn [24, 80];\n\t\t\t}\n\t\t},\n\t\tdefault_tty1_ops: {\n\t\t\tput_char(tty, val) {\n\t\t\t\tif (val === null || val === 10) {\n\t\t\t\t\terr(UTF8ArrayToString(tty.output));\n\t\t\t\t\ttty.output = [];\n\t\t\t\t} else if (val != 0) tty.output.push(val);\n\t\t\t},\n\t\t\tfsync(tty) {\n\t\t\t\tif (tty.output?.length > 0) {\n\t\t\t\t\terr(UTF8ArrayToString(tty.output));\n\t\t\t\t\ttty.output = [];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\tvar zeroMemory = (ptr, size) => HEAPU8.fill(0, ptr, ptr + size);\n\tvar alignMemory = (size, alignment) => {\n\t\treturn Math.ceil(size / alignment) * alignment;\n\t};\n\tvar mmapAlloc = (size) => {\n\t\tsize = alignMemory(size, 65536);\n\t\tvar ptr = _emscripten_builtin_memalign(65536, size);\n\t\tif (ptr) zeroMemory(ptr, size);\n\t\treturn ptr;\n\t};\n\tvar MEMFS = {\n\t\tops_table: null,\n\t\tmount(mount) {\n\t\t\treturn MEMFS.createNode(null, \"/\", 16895, 0);\n\t\t},\n\t\tcreateNode(parent, name, mode, dev) {\n\t\t\tif (FS.isBlkdev(mode) || FS.isFIFO(mode)) throw new FS.ErrnoError(63);\n\t\t\tMEMFS.ops_table ||= {\n\t\t\t\tdir: {\n\t\t\t\t\tnode: {\n\t\t\t\t\t\tgetattr: MEMFS.node_ops.getattr,\n\t\t\t\t\t\tsetattr: MEMFS.node_ops.setattr,\n\t\t\t\t\t\tlookup: MEMFS.node_ops.lookup,\n\t\t\t\t\t\tmknod: MEMFS.node_ops.mknod,\n\t\t\t\t\t\trename: MEMFS.node_ops.rename,\n\t\t\t\t\t\tunlink: MEMFS.node_ops.unlink,\n\t\t\t\t\t\trmdir: MEMFS.node_ops.rmdir,\n\t\t\t\t\t\treaddir: MEMFS.node_ops.readdir,\n\t\t\t\t\t\tsymlink: MEMFS.node_ops.symlink\n\t\t\t\t\t},\n\t\t\t\t\tstream: { llseek: MEMFS.stream_ops.llseek }\n\t\t\t\t},\n\t\t\t\tfile: {\n\t\t\t\t\tnode: {\n\t\t\t\t\t\tgetattr: MEMFS.node_ops.getattr,\n\t\t\t\t\t\tsetattr: MEMFS.node_ops.setattr\n\t\t\t\t\t},\n\t\t\t\t\tstream: {\n\t\t\t\t\t\tllseek: MEMFS.stream_ops.llseek,\n\t\t\t\t\t\tread: MEMFS.stream_ops.read,\n\t\t\t\t\t\twrite: MEMFS.stream_ops.write,\n\t\t\t\t\t\tmmap: MEMFS.stream_ops.mmap,\n\t\t\t\t\t\tmsync: MEMFS.stream_ops.msync\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tlink: {\n\t\t\t\t\tnode: {\n\t\t\t\t\t\tgetattr: MEMFS.node_ops.getattr,\n\t\t\t\t\t\tsetattr: MEMFS.node_ops.setattr,\n\t\t\t\t\t\treadlink: MEMFS.node_ops.readlink\n\t\t\t\t\t},\n\t\t\t\t\tstream: {}\n\t\t\t\t},\n\t\t\t\tchrdev: {\n\t\t\t\t\tnode: {\n\t\t\t\t\t\tgetattr: MEMFS.node_ops.getattr,\n\t\t\t\t\t\tsetattr: MEMFS.node_ops.setattr\n\t\t\t\t\t},\n\t\t\t\t\tstream: FS.chrdev_stream_ops\n\t\t\t\t}\n\t\t\t};\n\t\t\tvar node = FS.createNode(parent, name, mode, dev);\n\t\t\tif (FS.isDir(node.mode)) {\n\t\t\t\tnode.node_ops = MEMFS.ops_table.dir.node;\n\t\t\t\tnode.stream_ops = MEMFS.ops_table.dir.stream;\n\t\t\t\tnode.contents = {};\n\t\t\t} else if (FS.isFile(node.mode)) {\n\t\t\t\tnode.node_ops = MEMFS.ops_table.file.node;\n\t\t\t\tnode.stream_ops = MEMFS.ops_table.file.stream;\n\t\t\t\tnode.usedBytes = 0;\n\t\t\t\tnode.contents = null;\n\t\t\t} else if (FS.isLink(node.mode)) {\n\t\t\t\tnode.node_ops = MEMFS.ops_table.link.node;\n\t\t\t\tnode.stream_ops = MEMFS.ops_table.link.stream;\n\t\t\t} else if (FS.isChrdev(node.mode)) {\n\t\t\t\tnode.node_ops = MEMFS.ops_table.chrdev.node;\n\t\t\t\tnode.stream_ops = MEMFS.ops_table.chrdev.stream;\n\t\t\t}\n\t\t\tnode.atime = node.mtime = node.ctime = Date.now();\n\t\t\tif (parent) {\n\t\t\t\tparent.contents[name] = node;\n\t\t\t\tparent.atime = parent.mtime = parent.ctime = node.atime;\n\t\t\t}\n\t\t\treturn node;\n\t\t},\n\t\tgetFileDataAsTypedArray(node) {\n\t\t\tif (!node.contents) return new Uint8Array(0);\n\t\t\tif (node.contents.subarray) return node.contents.subarray(0, node.usedBytes);\n\t\t\treturn new Uint8Array(node.contents);\n\t\t},\n\t\texpandFileStorage(node, newCapacity) {\n\t\t\tvar prevCapacity = node.contents ? node.contents.length : 0;\n\t\t\tif (prevCapacity >= newCapacity) return;\n\t\t\tnewCapacity = Math.max(newCapacity, prevCapacity * (prevCapacity < 1024 * 1024 ? 2 : 1.125) >>> 0);\n\t\t\tif (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256);\n\t\t\tvar oldContents = node.contents;\n\t\t\tnode.contents = new Uint8Array(newCapacity);\n\t\t\tif (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0);\n\t\t},\n\t\tresizeFileStorage(node, newSize) {\n\t\t\tif (node.usedBytes == newSize) return;\n\t\t\tif (newSize == 0) {\n\t\t\t\tnode.contents = null;\n\t\t\t\tnode.usedBytes = 0;\n\t\t\t} else {\n\t\t\t\tvar oldContents = node.contents;\n\t\t\t\tnode.contents = new Uint8Array(newSize);\n\t\t\t\tif (oldContents) node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes)));\n\t\t\t\tnode.usedBytes = newSize;\n\t\t\t}\n\t\t},\n\t\tnode_ops: {\n\t\t\tgetattr(node) {\n\t\t\t\tvar attr = {};\n\t\t\t\tattr.dev = FS.isChrdev(node.mode) ? node.id : 1;\n\t\t\t\tattr.ino = node.id;\n\t\t\t\tattr.mode = node.mode;\n\t\t\t\tattr.nlink = 1;\n\t\t\t\tattr.uid = 0;\n\t\t\t\tattr.gid = 0;\n\t\t\t\tattr.rdev = node.rdev;\n\t\t\t\tif (FS.isDir(node.mode)) attr.size = 4096;\n\t\t\t\telse if (FS.isFile(node.mode)) attr.size = node.usedBytes;\n\t\t\t\telse if (FS.isLink(node.mode)) attr.size = node.link.length;\n\t\t\t\telse attr.size = 0;\n\t\t\t\tattr.atime = new Date(node.atime);\n\t\t\t\tattr.mtime = new Date(node.mtime);\n\t\t\t\tattr.ctime = new Date(node.ctime);\n\t\t\t\tattr.blksize = 4096;\n\t\t\t\tattr.blocks = Math.ceil(attr.size / attr.blksize);\n\t\t\t\treturn attr;\n\t\t\t},\n\t\t\tsetattr(node, attr) {\n\t\t\t\tfor (const key of [\n\t\t\t\t\t\"mode\",\n\t\t\t\t\t\"atime\",\n\t\t\t\t\t\"mtime\",\n\t\t\t\t\t\"ctime\"\n\t\t\t\t]) if (attr[key] != null) node[key] = attr[key];\n\t\t\t\tif (attr.size !== void 0) MEMFS.resizeFileStorage(node, attr.size);\n\t\t\t},\n\t\t\tlookup(parent, name) {\n\t\t\t\tif (!MEMFS.doesNotExistError) {\n\t\t\t\t\tMEMFS.doesNotExistError = new FS.ErrnoError(44);\n\t\t\t\t\t/** @suppress {checkTypes} */\n\t\t\t\t\tMEMFS.doesNotExistError.stack = \"<generic error, no stack>\";\n\t\t\t\t}\n\t\t\t\tthrow MEMFS.doesNotExistError;\n\t\t\t},\n\t\t\tmknod(parent, name, mode, dev) {\n\t\t\t\treturn MEMFS.createNode(parent, name, mode, dev);\n\t\t\t},\n\t\t\trename(old_node, new_dir, new_name) {\n\t\t\t\tvar new_node;\n\t\t\t\ttry {\n\t\t\t\t\tnew_node = FS.lookupNode(new_dir, new_name);\n\t\t\t\t} catch (e) {}\n\t\t\t\tif (new_node) {\n\t\t\t\t\tif (FS.isDir(old_node.mode)) for (var i in new_node.contents) throw new FS.ErrnoError(55);\n\t\t\t\t\tFS.hashRemoveNode(new_node);\n\t\t\t\t}\n\t\t\t\tdelete old_node.parent.contents[old_node.name];\n\t\t\t\tnew_dir.contents[new_name] = old_node;\n\t\t\t\told_node.name = new_name;\n\t\t\t\tnew_dir.ctime = new_dir.mtime = old_node.parent.ctime = old_node.parent.mtime = Date.now();\n\t\t\t},\n\t\t\tunlink(parent, name) {\n\t\t\t\tdelete parent.contents[name];\n\t\t\t\tparent.ctime = parent.mtime = Date.now();\n\t\t\t},\n\t\t\trmdir(parent, name) {\n\t\t\t\tfor (var i in FS.lookupNode(parent, name).contents) throw new FS.ErrnoError(55);\n\t\t\t\tdelete parent.contents[name];\n\t\t\t\tparent.ctime = parent.mtime = Date.now();\n\t\t\t},\n\t\t\treaddir(node) {\n\t\t\t\treturn [\n\t\t\t\t\t\".\",\n\t\t\t\t\t\"..\",\n\t\t\t\t\t...Object.keys(node.contents)\n\t\t\t\t];\n\t\t\t},\n\t\t\tsymlink(parent, newname, oldpath) {\n\t\t\t\tvar node = MEMFS.createNode(parent, newname, 41471, 0);\n\t\t\t\tnode.link = oldpath;\n\t\t\t\treturn node;\n\t\t\t},\n\t\t\treadlink(node) {\n\t\t\t\tif (!FS.isLink(node.mode)) throw new FS.ErrnoError(28);\n\t\t\t\treturn node.link;\n\t\t\t}\n\t\t},\n\t\tstream_ops: {\n\t\t\tread(stream, buffer, offset, length, position) {\n\t\t\t\tvar contents = stream.node.contents;\n\t\t\t\tif (position >= stream.node.usedBytes) return 0;\n\t\t\t\tvar size = Math.min(stream.node.usedBytes - position, length);\n\t\t\t\tif (size > 8 && contents.subarray) buffer.set(contents.subarray(position, position + size), offset);\n\t\t\t\telse for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i];\n\t\t\t\treturn size;\n\t\t\t},\n\t\t\twrite(stream, buffer, offset, length, position, canOwn) {\n\t\t\t\tif (buffer.buffer === HEAP8.buffer) canOwn = false;\n\t\t\t\tif (!length) return 0;\n\t\t\t\tvar node = stream.node;\n\t\t\t\tnode.mtime = node.ctime = Date.now();\n\t\t\t\tif (buffer.subarray && (!node.contents || node.contents.subarray)) {\n\t\t\t\t\tif (canOwn) {\n\t\t\t\t\t\tnode.contents = buffer.subarray(offset, offset + length);\n\t\t\t\t\t\tnode.usedBytes = length;\n\t\t\t\t\t\treturn length;\n\t\t\t\t\t} else if (node.usedBytes === 0 && position === 0) {\n\t\t\t\t\t\tnode.contents = buffer.slice(offset, offset + length);\n\t\t\t\t\t\tnode.usedBytes = length;\n\t\t\t\t\t\treturn length;\n\t\t\t\t\t} else if (position + length <= node.usedBytes) {\n\t\t\t\t\t\tnode.contents.set(buffer.subarray(offset, offset + length), position);\n\t\t\t\t\t\treturn length;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tMEMFS.expandFileStorage(node, position + length);\n\t\t\t\tif (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position);\n\t\t\t\telse for (var i = 0; i < length; i++) node.contents[position + i] = buffer[offset + i];\n\t\t\t\tnode.usedBytes = Math.max(node.usedBytes, position + length);\n\t\t\t\treturn length;\n\t\t\t},\n\t\t\tllseek(stream, offset, whence) {\n\t\t\t\tvar position = offset;\n\t\t\t\tif (whence === 1) position += stream.position;\n\t\t\t\telse if (whence === 2) {\n\t\t\t\t\tif (FS.isFile(stream.node.mode)) position += stream.node.usedBytes;\n\t\t\t\t}\n\t\t\t\tif (position < 0) throw new FS.ErrnoError(28);\n\t\t\t\treturn position;\n\t\t\t},\n\t\t\tmmap(stream, length, position, prot, flags) {\n\t\t\t\tif (!FS.isFile(stream.node.mode)) throw new FS.ErrnoError(43);\n\t\t\t\tvar ptr;\n\t\t\t\tvar allocated;\n\t\t\t\tvar contents = stream.node.contents;\n\t\t\t\tif (!(flags & 2) && contents && contents.buffer === HEAP8.buffer) {\n\t\t\t\t\tallocated = false;\n\t\t\t\t\tptr = contents.byteOffset;\n\t\t\t\t} else {\n\t\t\t\t\tallocated = true;\n\t\t\t\t\tptr = mmapAlloc(length);\n\t\t\t\t\tif (!ptr) throw new FS.ErrnoError(48);\n\t\t\t\t\tif (contents) {\n\t\t\t\t\t\tif (position > 0 || position + length < contents.length) if (contents.subarray) contents = contents.subarray(position, position + length);\n\t\t\t\t\t\telse contents = Array.prototype.slice.call(contents, position, position + length);\n\t\t\t\t\t\tHEAP8.set(contents, ptr);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tptr,\n\t\t\t\t\tallocated\n\t\t\t\t};\n\t\t\t},\n\t\t\tmsync(stream, buffer, offset, length, mmapFlags) {\n\t\t\t\tMEMFS.stream_ops.write(stream, buffer, 0, length, offset, false);\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t};\n\tvar FS_modeStringToFlags = (str) => {\n\t\tvar flags = {\n\t\t\t\"r\": 0,\n\t\t\t\"r+\": 2,\n\t\t\t\"w\": 577,\n\t\t\t\"w+\": 578,\n\t\t\t\"a\": 1089,\n\t\t\t\"a+\": 1090\n\t\t}[str];\n\t\tif (typeof flags == \"undefined\") throw new Error(`Unknown file open mode: ${str}`);\n\t\treturn flags;\n\t};\n\tvar FS_getMode = (canRead, canWrite) => {\n\t\tvar mode = 0;\n\t\tif (canRead) mode |= 365;\n\t\tif (canWrite) mode |= 146;\n\t\treturn mode;\n\t};\n\tvar asyncLoad = async (url) => {\n\t\tvar arrayBuffer = await readAsync(url);\n\t\treturn new Uint8Array(arrayBuffer);\n\t};\n\tvar FS_createDataFile = (...args) => FS.createDataFile(...args);\n\tvar getUniqueRunDependency = (id) => {\n\t\treturn id;\n\t};\n\tvar runDependencies = 0;\n\tvar dependenciesFulfilled = null;\n\tvar removeRunDependency = (id) => {\n\t\trunDependencies--;\n\t\tModule[\"monitorRunDependencies\"]?.(runDependencies);\n\t\tif (runDependencies == 0) {\n\t\t\tif (dependenciesFulfilled) {\n\t\t\t\tvar callback = dependenciesFulfilled;\n\t\t\t\tdependenciesFulfilled = null;\n\t\t\t\tcallback();\n\t\t\t}\n\t\t}\n\t};\n\tvar addRunDependency = (id) => {\n\t\trunDependencies++;\n\t\tModule[\"monitorRunDependencies\"]?.(runDependencies);\n\t};\n\tvar preloadPlugins = [];\n\tvar FS_handledByPreloadPlugin = async (byteArray, fullname) => {\n\t\tif (typeof Browser != \"undefined\") Browser.init();\n\t\tfor (var plugin of preloadPlugins) if (plugin[\"canHandle\"](fullname)) return plugin[\"handle\"](byteArray, fullname);\n\t\treturn byteArray;\n\t};\n\tvar FS_preloadFile = async (parent, name, url, canRead, canWrite, dontCreateFile, canOwn, preFinish) => {\n\t\tvar fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;\n\t\tvar dep = getUniqueRunDependency(`cp ${fullname}`);\n\t\taddRunDependency(dep);\n\t\ttry {\n\t\t\tvar byteArray = url;\n\t\t\tif (typeof url == \"string\") byteArray = await asyncLoad(url);\n\t\t\tbyteArray = await FS_handledByPreloadPlugin(byteArray, fullname);\n\t\t\tpreFinish?.();\n\t\t\tif (!dontCreateFile) FS_createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);\n\t\t} finally {\n\t\t\tremoveRunDependency(dep);\n\t\t}\n\t};\n\tvar FS_createPreloadedFile = (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) => {\n\t\tFS_preloadFile(parent, name, url, canRead, canWrite, dontCreateFile, canOwn, preFinish).then(onload).catch(onerror);\n\t};\n\tvar FS = {\n\t\troot: null,\n\t\tmounts: [],\n\t\tdevices: {},\n\t\tstreams: [],\n\t\tnextInode: 1,\n\t\tnameTable: null,\n\t\tcurrentPath: \"/\",\n\t\tinitialized: false,\n\t\tignorePermissions: true,\n\t\tfilesystems: null,\n\t\tsyncFSRequests: 0,\n\t\treadFiles: {},\n\t\tErrnoError: class {\n\t\t\tname = \"ErrnoError\";\n\t\t\tconstructor(errno) {\n\t\t\t\tthis.errno = errno;\n\t\t\t}\n\t\t},\n\t\tFSStream: class {\n\t\t\tshared = {};\n\t\t\tget object() {\n\t\t\t\treturn this.node;\n\t\t\t}\n\t\t\tset object(val) {\n\t\t\t\tthis.node = val;\n\t\t\t}\n\t\t\tget isRead() {\n\t\t\t\treturn (this.flags & 2097155) !== 1;\n\t\t\t}\n\t\t\tget isWrite() {\n\t\t\t\treturn (this.flags & 2097155) !== 0;\n\t\t\t}\n\t\t\tget isAppend() {\n\t\t\t\treturn this.flags & 1024;\n\t\t\t}\n\t\t\tget flags() {\n\t\t\t\treturn this.shared.flags;\n\t\t\t}\n\t\t\tset flags(val) {\n\t\t\t\tthis.shared.flags = val;\n\t\t\t}\n\t\t\tget position() {\n\t\t\t\treturn this.shared.position;\n\t\t\t}\n\t\t\tset position(val) {\n\t\t\t\tthis.shared.position = val;\n\t\t\t}\n\t\t},\n\t\tFSNode: class {\n\t\t\tnode_ops = {};\n\t\t\tstream_ops = {};\n\t\t\treadMode = 365;\n\t\t\twriteMode = 146;\n\t\t\tmounted = null;\n\t\t\tconstructor(parent, name, mode, rdev) {\n\t\t\t\tif (!parent) parent = this;\n\t\t\t\tthis.parent = parent;\n\t\t\t\tthis.mount = parent.mount;\n\t\t\t\tthis.id = FS.nextInode++;\n\t\t\t\tthis.name = name;\n\t\t\t\tthis.mode = mode;\n\t\t\t\tthis.rdev = rdev;\n\t\t\t\tthis.atime = this.mtime = this.ctime = Date.now();\n\t\t\t}\n\t\t\tget read() {\n\t\t\t\treturn (this.mode & this.readMode) === this.readMode;\n\t\t\t}\n\t\t\tset read(val) {\n\t\t\t\tval ? this.mode |= this.readMode : this.mode &= ~this.readMode;\n\t\t\t}\n\t\t\tget write() {\n\t\t\t\treturn (this.mode & this.writeMode) === this.writeMode;\n\t\t\t}\n\t\t\tset write(val) {\n\t\t\t\tval ? this.mode |= this.writeMode : this.mode &= ~this.writeMode;\n\t\t\t}\n\t\t\tget isFolder() {\n\t\t\t\treturn FS.isDir(this.mode);\n\t\t\t}\n\t\t\tget isDevice() {\n\t\t\t\treturn FS.isChrdev(this.mode);\n\t\t\t}\n\t\t},\n\t\tlookupPath(path, opts = {}) {\n\t\t\tif (!path) throw new FS.ErrnoError(44);\n\t\t\topts.follow_mount ??= true;\n\t\t\tif (!PATH.isAbs(path)) path = FS.cwd() + \"/\" + path;\n\t\t\tlinkloop: for (var nlinks = 0; nlinks < 40; nlinks++) {\n\t\t\t\tvar parts = path.split(\"/\").filter((p) => !!p);\n\t\t\t\tvar current = FS.root;\n\t\t\t\tvar current_path = \"/\";\n\t\t\t\tfor (var i = 0; i < parts.length; i++) {\n\t\t\t\t\tvar islast = i === parts.length - 1;\n\t\t\t\t\tif (islast && opts.parent) break;\n\t\t\t\t\tif (parts[i] === \".\") continue;\n\t\t\t\t\tif (parts[i] === \"..\") {\n\t\t\t\t\t\tcurrent_path = PATH.dirname(current_path);\n\t\t\t\t\t\tif (FS.isRoot(current)) {\n\t\t\t\t\t\t\tpath = current_path + \"/\" + parts.slice(i + 1).join(\"/\");\n\t\t\t\t\t\t\tnlinks--;\n\t\t\t\t\t\t\tcontinue linkloop;\n\t\t\t\t\t\t} else current = current.parent;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tcurrent_path = PATH.join2(current_path, parts[i]);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tcurrent = FS.lookupNode(current, parts[i]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tif (e?.errno === 44 && islast && opts.noent_okay) return { path: current_path };\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t\tif (FS.isMountpoint(current) && (!islast || opts.follow_mount)) current = current.mounted.root;\n\t\t\t\t\tif (FS.isLink(current.mode) && (!islast || opts.follow)) {\n\t\t\t\t\t\tif (!current.node_ops.readlink) throw new FS.ErrnoError(52);\n\t\t\t\t\t\tvar link = current.node_ops.readlink(current);\n\t\t\t\t\t\tif (!PATH.isAbs(link)) link = PATH.dirname(current_path) + \"/\" + link;\n\t\t\t\t\t\tpath = link + \"/\" + parts.slice(i + 1).join(\"/\");\n\t\t\t\t\t\tcontinue linkloop;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tpath: current_path,\n\t\t\t\t\tnode: current\n\t\t\t\t};\n\t\t\t}\n\t\t\tthrow new FS.ErrnoError(32);\n\t\t},\n\t\tgetPath(node) {\n\t\t\tvar path;\n\t\t\twhile (true) {\n\t\t\t\tif (FS.isRoot(node)) {\n\t\t\t\t\tvar mount = node.mount.mountpoint;\n\t\t\t\t\tif (!path) return mount;\n\t\t\t\t\treturn mount[mount.length - 1] !== \"/\" ? `${mount}/${path}` : mount + path;\n\t\t\t\t}\n\t\t\t\tpath = path ? `${node.name}/${path}` : node.name;\n\t\t\t\tnode = node.parent;\n\t\t\t}\n\t\t},\n\t\thashName(parentid, name) {\n\t\t\tvar hash = 0;\n\t\t\tfor (var i = 0; i < name.length; i++) hash = (hash << 5) - hash + name.charCodeAt(i) | 0;\n\t\t\treturn (parentid + hash >>> 0) % FS.nameTable.length;\n\t\t},\n\t\thashAddNode(node) {\n\t\t\tvar hash = FS.hashName(node.parent.id, node.name);\n\t\t\tnode.name_next = FS.nameTable[hash];\n\t\t\tFS.nameTable[hash] = node;\n\t\t},\n\t\thashRemoveNode(node) {\n\t\t\tvar hash = FS.hashName(node.parent.id, node.name);\n\t\t\tif (FS.nameTable[hash] === node) FS.nameTable[hash] = node.name_next;\n\t\t\telse {\n\t\t\t\tvar current = FS.nameTable[hash];\n\t\t\t\twhile (current) {\n\t\t\t\t\tif (current.name_next === node) {\n\t\t\t\t\t\tcurrent.name_next = node.name_next;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcurrent = current.name_next;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tlookupNode(parent, name) {\n\t\t\tvar errCode = FS.mayLookup(parent);\n\t\t\tif (errCode) throw new FS.ErrnoError(errCode);\n\t\t\tvar hash = FS.hashName(parent.id, name);\n\t\t\tfor (var node = FS.nameTable[hash]; node; node = node.name_next) {\n\t\t\t\tvar nodeName = node.name;\n\t\t\t\tif (node.parent.id === parent.id && nodeName === name) return node;\n\t\t\t}\n\t\t\treturn FS.lookup(parent, name);\n\t\t},\n\t\tcreateNode(parent, name, mode, rdev) {\n\t\t\tvar node = new FS.FSNode(parent, name, mode, rdev);\n\t\t\tFS.hashAddNode(node);\n\t\t\treturn node;\n\t\t},\n\t\tdestroyNode(node) {\n\t\t\tFS.hashRemoveNode(node);\n\t\t},\n\t\tisRoot(node) {\n\t\t\treturn node === node.parent;\n\t\t},\n\t\tisMountpoint(node) {\n\t\t\treturn !!node.mounted;\n\t\t},\n\t\tisFile(mode) {\n\t\t\treturn (mode & 61440) === 32768;\n\t\t},\n\t\tisDir(mode) {\n\t\t\treturn (mode & 61440) === 16384;\n\t\t},\n\t\tisLink(mode) {\n\t\t\treturn (mode & 61440) === 40960;\n\t\t},\n\t\tisChrdev(mode) {\n\t\t\treturn (mode & 61440) === 8192;\n\t\t},\n\t\tisBlkdev(mode) {\n\t\t\treturn (mode & 61440) === 24576;\n\t\t},\n\t\tisFIFO(mode) {\n\t\t\treturn (mode & 61440) === 4096;\n\t\t},\n\t\tisSocket(mode) {\n\t\t\treturn (mode & 49152) === 49152;\n\t\t},\n\t\tflagsToPermissionString(flag) {\n\t\t\tvar perms = [\n\t\t\t\t\"r\",\n\t\t\t\t\"w\",\n\t\t\t\t\"rw\"\n\t\t\t][flag & 3];\n\t\t\tif (flag & 512) perms += \"w\";\n\t\t\treturn perms;\n\t\t},\n\t\tnodePermissions(node, perms) {\n\t\t\tif (FS.ignorePermissions) return 0;\n\t\t\tif (perms.includes(\"r\") && !(node.mode & 292)) return 2;\n\t\t\telse if (perms.includes(\"w\") && !(node.mode & 146)) return 2;\n\t\t\telse if (perms.includes(\"x\") && !(node.mode & 73)) return 2;\n\t\t\treturn 0;\n\t\t},\n\t\tmayLookup(dir) {\n\t\t\tif (!FS.isDir(dir.mode)) return 54;\n\t\t\tvar errCode = FS.nodePermissions(dir, \"x\");\n\t\t\tif (errCode) return errCode;\n\t\t\tif (!dir.node_ops.lookup) return 2;\n\t\t\treturn 0;\n\t\t},\n\t\tmayCreate(dir, name) {\n\t\t\tif (!FS.isDir(dir.mode)) return 54;\n\t\t\ttry {\n\t\t\t\tFS.lookupNode(dir, name);\n\t\t\t\treturn 20;\n\t\t\t} catch (e) {}\n\t\t\treturn FS.nodePermissions(dir, \"wx\");\n\t\t},\n\t\tmayDelete(dir, name, isdir) {\n\t\t\tvar node;\n\t\t\ttry {\n\t\t\t\tnode = FS.lookupNode(dir, name);\n\t\t\t} catch (e) {\n\t\t\t\treturn e.errno;\n\t\t\t}\n\t\t\tvar errCode = FS.nodePermissions(dir, \"wx\");\n\t\t\tif (errCode) return errCode;\n\t\t\tif (isdir) {\n\t\t\t\tif (!FS.isDir(node.mode)) return 54;\n\t\t\t\tif (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) return 10;\n\t\t\t} else if (FS.isDir(node.mode)) return 31;\n\t\t\treturn 0;\n\t\t},\n\t\tmayOpen(node, flags) {\n\t\t\tif (!node) return 44;\n\t\t\tif (FS.isLink(node.mode)) return 32;\n\t\t\telse if (FS.isDir(node.mode)) {\n\t\t\t\tif (FS.flagsToPermissionString(flags) !== \"r\" || flags & 576) return 31;\n\t\t\t}\n\t\t\treturn FS.nodePermissions(node, FS.flagsToPermissionString(flags));\n\t\t},\n\t\tcheckOpExists(op, err) {\n\t\t\tif (!op) throw new FS.ErrnoError(err);\n\t\t\treturn op;\n\t\t},\n\t\tMAX_OPEN_FDS: 4096,\n\t\tnextfd() {\n\t\t\tfor (var fd = 0; fd <= FS.MAX_OPEN_FDS; fd++) if (!FS.streams[fd]) return fd;\n\t\t\tthrow new FS.ErrnoError(33);\n\t\t},\n\t\tgetStreamChecked(fd) {\n\t\t\tvar stream = FS.getStream(fd);\n\t\t\tif (!stream) throw new FS.ErrnoError(8);\n\t\t\treturn stream;\n\t\t},\n\t\tgetStream: (fd) => FS.streams[fd],\n\t\tcreateStream(stream, fd = -1) {\n\t\t\tstream = Object.assign(new FS.FSStream(), stream);\n\t\t\tif (fd == -1) fd = FS.nextfd();\n\t\t\tstream.fd = fd;\n\t\t\tFS.streams[fd] = stream;\n\t\t\treturn stream;\n\t\t},\n\t\tcloseStream(fd) {\n\t\t\tFS.streams[fd] = null;\n\t\t},\n\t\tdupStream(origStream, fd = -1) {\n\t\t\tvar stream = FS.createStream(origStream, fd);\n\t\t\tstream.stream_ops?.dup?.(stream);\n\t\t\treturn stream;\n\t\t},\n\t\tdoSetAttr(stream, node, attr) {\n\t\t\tvar setattr = stream?.stream_ops.setattr;\n\t\t\tvar arg = setattr ? stream : node;\n\t\t\tsetattr ??= node.node_ops.setattr;\n\t\t\tFS.checkOpExists(setattr, 63);\n\t\t\tsetattr(arg, attr);\n\t\t},\n\t\tchrdev_stream_ops: {\n\t\t\topen(stream) {\n\t\t\t\tstream.stream_ops = FS.getDevice(stream.node.rdev).stream_ops;\n\t\t\t\tstream.stream_ops.open?.(stream);\n\t\t\t},\n\t\t\tllseek() {\n\t\t\t\tthrow new FS.ErrnoError(70);\n\t\t\t}\n\t\t},\n\t\tmajor: (dev) => dev >> 8,\n\t\tminor: (dev) => dev & 255,\n\t\tmakedev: (ma, mi) => ma << 8 | mi,\n\t\tregisterDevice(dev, ops) {\n\t\t\tFS.devices[dev] = { stream_ops: ops };\n\t\t},\n\t\tgetDevice: (dev) => FS.devices[dev],\n\t\tgetMounts(mount) {\n\t\t\tvar mounts = [];\n\t\t\tvar check = [mount];\n\t\t\twhile (check.length) {\n\t\t\t\tvar m = check.pop();\n\t\t\t\tmounts.push(m);\n\t\t\t\tcheck.push(...m.mounts);\n\t\t\t}\n\t\t\treturn mounts;\n\t\t},\n\t\tsyncfs(populate, callback) {\n\t\t\tif (typeof populate == \"function\") {\n\t\t\t\tcallback = populate;\n\t\t\t\tpopulate = false;\n\t\t\t}\n\t\t\tFS.syncFSRequests++;\n\t\t\tif (FS.syncFSRequests > 1) err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);\n\t\t\tvar mounts = FS.getMounts(FS.root.mount);\n\t\t\tvar completed = 0;\n\t\t\tfunction doCallback(errCode) {\n\t\t\t\tFS.syncFSRequests--;\n\t\t\t\treturn callback(errCode);\n\t\t\t}\n\t\t\tfunction done(errCode) {\n\t\t\t\tif (errCode) {\n\t\t\t\t\tif (!done.errored) {\n\t\t\t\t\t\tdone.errored = true;\n\t\t\t\t\t\treturn doCallback(errCode);\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (++completed >= mounts.length) doCallback(null);\n\t\t\t}\n\t\t\tfor (var mount of mounts) if (mount.type.syncfs) mount.type.syncfs(mount, populate, done);\n\t\t\telse done(null);\n\t\t},\n\t\tmount(type, opts, mountpoint) {\n\t\t\tvar root = mountpoint === \"/\";\n\t\t\tvar pseudo = !mountpoint;\n\t\t\tvar node;\n\t\t\tif (root && FS.root) throw new FS.ErrnoError(10);\n\t\t\telse if (!root && !pseudo) {\n\t\t\t\tvar lookup = FS.lookupPath(mountpoint, { follow_mount: false });\n\t\t\t\tmountpoint = lookup.path;\n\t\t\t\tnode = lookup.node;\n\t\t\t\tif (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n\t\t\t\tif (!FS.isDir(node.mode)) throw new FS.ErrnoError(54);\n\t\t\t}\n\t\t\tvar mount = {\n\t\t\t\ttype,\n\t\t\t\topts,\n\t\t\t\tmountpoint,\n\t\t\t\tmounts: []\n\t\t\t};\n\t\t\tvar mountRoot = type.mount(mount);\n\t\t\tmountRoot.mount = mount;\n\t\t\tmount.root = mountRoot;\n\t\t\tif (root) FS.root = mountRoot;\n\t\t\telse if (node) {\n\t\t\t\tnode.mounted = mount;\n\t\t\t\tif (node.mount) node.mount.mounts.push(mount);\n\t\t\t}\n\t\t\treturn mountRoot;\n\t\t},\n\t\tunmount(mountpoint) {\n\t\t\tvar lookup = FS.lookupPath(mountpoint, { follow_mount: false });\n\t\t\tif (!FS.isMountpoint(lookup.node)) throw new FS.ErrnoError(28);\n\t\t\tvar node = lookup.node;\n\t\t\tvar mount = node.mounted;\n\t\t\tvar mounts = FS.getMounts(mount);\n\t\t\tfor (var [hash, current] of Object.entries(FS.nameTable)) while (current) {\n\t\t\t\tvar next = current.name_next;\n\t\t\t\tif (mounts.includes(current.mount)) FS.destroyNode(current);\n\t\t\t\tcurrent = next;\n\t\t\t}\n\t\t\tnode.mounted = null;\n\t\t\tvar idx = node.mount.mounts.indexOf(mount);\n\t\t\tnode.mount.mounts.splice(idx, 1);\n\t\t},\n\t\tlookup(parent, name) {\n\t\t\treturn parent.node_ops.lookup(parent, name);\n\t\t},\n\t\tmknod(path, mode, dev) {\n\t\t\tvar parent = FS.lookupPath(path, { parent: true }).node;\n\t\t\tvar name = PATH.basename(path);\n\t\t\tif (!name) throw new FS.ErrnoError(28);\n\t\t\tif (name === \".\" || name === \"..\") throw new FS.ErrnoError(20);\n\t\t\tvar errCode = FS.mayCreate(parent, name);\n\t\t\tif (errCode) throw new FS.ErrnoError(errCode);\n\t\t\tif (!parent.node_ops.mknod) throw new FS.ErrnoError(63);\n\t\t\treturn parent.node_ops.mknod(parent, name, mode, dev);\n\t\t},\n\t\tstatfs(path) {\n\t\t\treturn FS.statfsNode(FS.lookupPath(path, { follow: true }).node);\n\t\t},\n\t\tstatfsStream(stream) {\n\t\t\treturn FS.statfsNode(stream.node);\n\t\t},\n\t\tstatfsNode(node) {\n\t\t\tvar rtn = {\n\t\t\t\tbsize: 4096,\n\t\t\t\tfrsize: 4096,\n\t\t\t\tblocks: 1e6,\n\t\t\t\tbfree: 5e5,\n\t\t\t\tbavail: 5e5,\n\t\t\t\tfiles: FS.nextInode,\n\t\t\t\tffree: FS.nextInode - 1,\n\t\t\t\tfsid: 42,\n\t\t\t\tflags: 2,\n\t\t\t\tnamelen: 255\n\t\t\t};\n\t\t\tif (node.node_ops.statfs) Object.assign(rtn, node.node_ops.statfs(node.mount.opts.root));\n\t\t\treturn rtn;\n\t\t},\n\t\tcreate(path, mode = 438) {\n\t\t\tmode &= 4095;\n\t\t\tmode |= 32768;\n\t\t\treturn FS.mknod(path, mode, 0);\n\t\t},\n\t\tmkdir(path, mode = 511) {\n\t\t\tmode &= 1023;\n\t\t\tmode |= 16384;\n\t\t\treturn FS.mknod(path, mode, 0);\n\t\t},\n\t\tmkdirTree(path, mode) {\n\t\t\tvar dirs = path.split(\"/\");\n\t\t\tvar d = \"\";\n\t\t\tfor (var dir of dirs) {\n\t\t\t\tif (!dir) continue;\n\t\t\t\tif (d || PATH.isAbs(path)) d += \"/\";\n\t\t\t\td += dir;\n\t\t\t\ttry {\n\t\t\t\t\tFS.mkdir(d, mode);\n\t\t\t\t} catch (e) {\n\t\t\t\t\tif (e.errno != 20) throw e;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tmkdev(path, mode, dev) {\n\t\t\tif (typeof dev == \"undefined\") {\n\t\t\t\tdev = mode;\n\t\t\t\tmode = 438;\n\t\t\t}\n\t\t\tmode |= 8192;\n\t\t\treturn FS.mknod(path, mode, dev);\n\t\t},\n\t\tsymlink(oldpath, newpath) {\n\t\t\tif (!PATH_FS.resolve(oldpath)) throw new FS.ErrnoError(44);\n\t\t\tvar parent = FS.lookupPath(newpath, { parent: true }).node;\n\t\t\tif (!parent) throw new FS.ErrnoError(44);\n\t\t\tvar newname = PATH.basename(newpath);\n\t\t\tvar errCode = FS.mayCreate(parent, newname);\n\t\t\tif (errCode) throw new FS.ErrnoError(errCode);\n\t\t\tif (!parent.node_ops.symlink) throw new FS.ErrnoError(63);\n\t\t\treturn parent.node_ops.symlink(parent, newname, oldpath);\n\t\t},\n\t\trename(old_path, new_path) {\n\t\t\tvar old_dirname = PATH.dirname(old_path);\n\t\t\tvar new_dirname = PATH.dirname(new_path);\n\t\t\tvar old_name = PATH.basename(old_path);\n\t\t\tvar new_name = PATH.basename(new_path);\n\t\t\tvar lookup = FS.lookupPath(old_path, { parent: true }), old_dir = lookup.node, new_dir;\n\t\t\tlookup = FS.lookupPath(new_path, { parent: true });\n\t\t\tnew_dir = lookup.node;\n\t\t\tif (!old_dir || !new_dir) throw new FS.ErrnoError(44);\n\t\t\tif (old_dir.mount !== new_dir.mount) throw new FS.ErrnoError(75);\n\t\t\tvar old_node = FS.lookupNode(old_dir, old_name);\n\t\t\tvar relative = PATH_FS.relative(old_path, new_dirname);\n\t\t\tif (relative.charAt(0) !== \".\") throw new FS.ErrnoError(28);\n\t\t\trelative = PATH_FS.relative(new_path, old_dirname);\n\t\t\tif (relative.charAt(0) !== \".\") throw new FS.ErrnoError(55);\n\t\t\tvar new_node;\n\t\t\ttry {\n\t\t\t\tnew_node = FS.lookupNode(new_dir, new_name);\n\t\t\t} catch (e) {}\n\t\t\tif (old_node === new_node) return;\n\t\t\tvar isdir = FS.isDir(old_node.mode);\n\t\t\tvar errCode = FS.mayDelete(old_dir, old_name, isdir);\n\t\t\tif (errCode) throw new FS.ErrnoError(errCode);\n\t\t\terrCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);\n\t\t\tif (errCode) throw new FS.ErrnoError(errCode);\n\t\t\tif (!old_dir.node_ops.rename) throw new FS.ErrnoError(63);\n\t\t\tif (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) throw new FS.ErrnoError(10);\n\t\t\tif (new_dir !== old_dir) {\n\t\t\t\terrCode = FS.nodePermissions(old_dir, \"w\");\n\t\t\t\tif (errCode) throw new FS.ErrnoError(errCode);\n\t\t\t}\n\t\t\tFS.hashRemoveNode(old_node);\n\t\t\ttry {\n\t\t\t\told_dir.node_ops.rename(old_node, new_dir, new_name);\n\t\t\t\told_node.parent = new_dir;\n\t\t\t} catch (e) {\n\t\t\t\tthrow e;\n\t\t\t} finally {\n\t\t\t\tFS.hashAddNode(old_node);\n\t\t\t}\n\t\t},\n\t\trmdir(path) {\n\t\t\tvar parent = FS.lookupPath(path, { parent: true }).node;\n\t\t\tvar name = PATH.basename(path);\n\t\t\tvar node = FS.lookupNode(parent, name);\n\t\t\tvar errCode = FS.mayDelete(parent, name, true);\n\t\t\tif (errCode) throw new FS.ErrnoError(errCode);\n\t\t\tif (!parent.node_ops.rmdir) throw new FS.ErrnoError(63);\n\t\t\tif (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n\t\t\tparent.node_ops.rmdir(parent, name);\n\t\t\tFS.destroyNode(node);\n\t\t},\n\t\treaddir(path) {\n\t\t\tvar node = FS.lookupPath(path, { follow: true }).node;\n\t\t\treturn FS.checkOpExists(node.node_ops.readdir, 54)(node);\n\t\t},\n\t\tunlink(path) {\n\t\t\tvar parent = FS.lookupPath(path, { parent: true }).node;\n\t\t\tif (!parent) throw new FS.ErrnoError(44);\n\t\t\tvar name = PATH.basename(path);\n\t\t\tvar node = FS.lookupNode(parent, name);\n\t\t\tvar errCode = FS.mayDelete(parent, name, false);\n\t\t\tif (errCode) throw new FS.ErrnoError(errCode);\n\t\t\tif (!parent.node_ops.unlink) throw new FS.ErrnoError(63);\n\t\t\tif (FS.isMountpoint(node)) throw new FS.ErrnoError(10);\n\t\t\tparent.node_ops.unlink(parent, name);\n\t\t\tFS.destroyNode(node);\n\t\t},\n\t\treadlink(path) {\n\t\t\tvar link = FS.lookupPath(path).node;\n\t\t\tif (!link) throw new FS.ErrnoError(44);\n\t\t\tif (!link.node_ops.readlink) throw new FS.ErrnoError(28);\n\t\t\treturn link.node_ops.readlink(link);\n\t\t},\n\t\tstat(path, dontFollow) {\n\t\t\tvar node = FS.lookupPath(path, { follow: !dontFollow }).node;\n\t\t\treturn FS.checkOpExists(node.node_ops.getattr, 63)(node);\n\t\t},\n\t\tfstat(fd) {\n\t\t\tvar stream = FS.getStreamChecked(fd);\n\t\t\tvar node = stream.node;\n\t\t\tvar getattr = stream.stream_ops.getattr;\n\t\t\tvar arg = getattr ? stream : node;\n\t\t\tgetattr ??= node.node_ops.getattr;\n\t\t\tFS.checkOpExists(getattr, 63);\n\t\t\treturn getattr(arg);\n\t\t},\n\t\tlstat(path) {\n\t\t\treturn FS.stat(path, true);\n\t\t},\n\t\tdoChmod(stream, node, mode, dontFollow) {\n\t\t\tFS.doSetAttr(stream, node, {\n\t\t\t\tmode: mode & 4095 | node.mode & -4096,\n\t\t\t\tctime: Date.now(),\n\t\t\t\tdontFollow\n\t\t\t});\n\t\t},\n\t\tchmod(path, mode, dontFollow) {\n\t\t\tvar node;\n\t\t\tif (typeof path == \"string\") node = FS.lookupPath(path, { follow: !dontFollow }).node;\n\t\t\telse node = path;\n\t\t\tFS.doChmod(null, node, mode, dontFollow);\n\t\t},\n\t\tlchmod(path, mode) {\n\t\t\tFS.chmod(path, mode, true);\n\t\t},\n\t\tfchmod(fd, mode) {\n\t\t\tvar stream = FS.getStreamChecked(fd);\n\t\t\tFS.doChmod(stream, stream.node, mode, false);\n\t\t},\n\t\tdoChown(stream, node, dontFollow) {\n\t\t\tFS.doSetAttr(stream, node, {\n\t\t\t\ttimestamp: Date.now(),\n\t\t\t\tdontFollow\n\t\t\t});\n\t\t},\n\t\tchown(path, uid, gid, dontFollow) {\n\t\t\tvar node;\n\t\t\tif (typeof path == \"string\") node = FS.lookupPath(path, { follow: !dontFollow }).node;\n\t\t\telse node = path;\n\t\t\tFS.doChown(null, node, dontFollow);\n\t\t},\n\t\tlchown(path, uid, gid) {\n\t\t\tFS.chown(path, uid, gid, true);\n\t\t},\n\t\tfchown(fd, uid, gid) {\n\t\t\tvar stream = FS.getStreamChecked(fd);\n\t\t\tFS.doChown(stream, stream.node, false);\n\t\t},\n\t\tdoTruncate(stream, node, len) {\n\t\t\tif (FS.isDir(node.mode)) throw new FS.ErrnoError(31);\n\t\t\tif (!FS.isFile(node.mode)) throw new FS.ErrnoError(28);\n\t\t\tvar errCode = FS.nodePermissions(node, \"w\");\n\t\t\tif (errCode) throw new FS.ErrnoError(errCode);\n\t\t\tFS.doSetAttr(stream, node, {\n\t\t\t\tsize: len,\n\t\t\t\ttimestamp: Date.now()\n\t\t\t});\n\t\t},\n\t\ttruncate(path, len) {\n\t\t\tif (len < 0) throw new FS.ErrnoError(28);\n\t\t\tvar node;\n\t\t\tif (typeof path == \"string\") node = FS.lookupPath(path, { follow: true }).node;\n\t\t\telse node = path;\n\t\t\tFS.doTruncate(null, node, len);\n\t\t},\n\t\tftruncate(fd, len) {\n\t\t\tvar stream = FS.getStreamChecked(fd);\n\t\t\tif (len < 0 || (stream.flags & 2097155) === 0) throw new FS.ErrnoError(28);\n\t\t\tFS.doTruncate(stream, stream.node, len);\n\t\t},\n\t\tutime(path, atime, mtime) {\n\t\t\tvar node = FS.lookupPath(path, { follow: true }).node;\n\t\t\tFS.checkOpExists(node.node_ops.setattr, 63)(node, {\n\t\t\t\tatime,\n\t\t\t\tmtime\n\t\t\t});\n\t\t},\n\t\topen(path, flags, mode = 438) {\n\t\t\tif (path === \"\") throw new FS.ErrnoError(44);\n\t\t\tflags = typeof flags == \"string\" ? FS_modeStringToFlags(flags) : flags;\n\t\t\tif (flags & 64) mode = mode & 4095 | 32768;\n\t\t\telse mode = 0;\n\t\t\tvar node;\n\t\t\tvar isDirPath;\n\t\t\tif (typeof path == \"object\") node = path;\n\t\t\telse {\n\t\t\t\tisDirPath = path.endsWith(\"/\");\n\t\t\t\tvar lookup = FS.lookupPath(path, {\n\t\t\t\t\tfollow: !(flags & 131072),\n\t\t\t\t\tnoent_okay: true\n\t\t\t\t});\n\t\t\t\tnode = lookup.node;\n\t\t\t\tpath = lookup.path;\n\t\t\t}\n\t\t\tvar created = false;\n\t\t\tif (flags & 64) if (node) {\n\t\t\t\tif (flags & 128) throw new FS.ErrnoError(20);\n\t\t\t} else if (isDirPath) throw new FS.ErrnoError(31);\n\t\t\telse {\n\t\t\t\tnode = FS.mknod(path, mode | 511, 0);\n\t\t\t\tcreated = true;\n\t\t\t}\n\t\t\tif (!node) throw new FS.ErrnoError(44);\n\t\t\tif (FS.isChrdev(node.mode)) flags &= -513;\n\t\t\tif (flags & 65536 && !FS.isDir(node.mode)) throw new FS.ErrnoError(54);\n\t\t\tif (!created) {\n\t\t\t\tvar errCode = FS.mayOpen(node, flags);\n\t\t\t\tif (errCode) throw new FS.ErrnoError(errCode);\n\t\t\t}\n\t\t\tif (flags & 512 && !created) FS.truncate(node, 0);\n\t\t\tflags &= -131713;\n\t\t\tvar stream = FS.createStream({\n\t\t\t\tnode,\n\t\t\t\tpath: FS.getPath(node),\n\t\t\t\tflags,\n\t\t\t\tseekable: true,\n\t\t\t\tposition: 0,\n\t\t\t\tstream_ops: node.stream_ops,\n\t\t\t\tungotten: [],\n\t\t\t\terror: false\n\t\t\t});\n\t\t\tif (stream.stream_ops.open) stream.stream_ops.open(stream);\n\t\t\tif (created) FS.chmod(node, mode & 511);\n\t\t\tif (Module[\"logReadFiles\"] && !(flags & 1)) {\n\t\t\t\tif (!(path in FS.readFiles)) FS.readFiles[path] = 1;\n\t\t\t}\n\t\t\treturn stream;\n\t\t},\n\t\tclose(stream) {\n\t\t\tif (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n\t\t\tif (stream.getdents) stream.getdents = null;\n\t\t\ttry {\n\t\t\t\tif (stream.stream_ops.close) stream.stream_ops.close(stream);\n\t\t\t} catch (e) {\n\t\t\t\tthrow e;\n\t\t\t} finally {\n\t\t\t\tFS.closeStream(stream.fd);\n\t\t\t}\n\t\t\tstream.fd = null;\n\t\t},\n\t\tisClosed(stream) {\n\t\t\treturn stream.fd === null;\n\t\t},\n\t\tllseek(stream, offset, whence) {\n\t\t\tif (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n\t\t\tif (!stream.seekable || !stream.stream_ops.llseek) throw new FS.ErrnoError(70);\n\t\t\tif (whence != 0 && whence != 1 && whence != 2) throw new FS.ErrnoError(28);\n\t\t\tstream.position = stream.stream_ops.llseek(stream, offset, whence);\n\t\t\tstream.ungotten = [];\n\t\t\treturn stream.position;\n\t\t},\n\t\tread(stream, buffer, offset, length, position) {\n\t\t\tif (length < 0 || position < 0) throw new FS.ErrnoError(28);\n\t\t\tif (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n\t\t\tif ((stream.flags & 2097155) === 1) throw new FS.ErrnoError(8);\n\t\t\tif (FS.isDir(stream.node.mode)) throw new FS.ErrnoError(31);\n\t\t\tif (!stream.stream_ops.read) throw new FS.ErrnoError(28);\n\t\t\tvar seeking = typeof position != \"undefined\";\n\t\t\tif (!seeking) position = stream.position;\n\t\t\telse if (!stream.seekable) throw new FS.ErrnoError(70);\n\t\t\tvar bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);\n\t\t\tif (!seeking) stream.position += bytesRead;\n\t\t\treturn bytesRead;\n\t\t},\n\t\twrite(stream, buffer, offset, length, position, canOwn) {\n\t\t\tif (length < 0 || position < 0) throw new FS.ErrnoError(28);\n\t\t\tif (FS.isClosed(stream)) throw new FS.ErrnoError(8);\n\t\t\tif ((stream.flags & 2097155) === 0) throw new FS.ErrnoError(8);\n\t\t\tif (FS.isDir(stream.node.mode)) throw new FS.ErrnoError(31);\n\t\t\tif (!stream.stream_ops.write) throw new FS.ErrnoError(28);\n\t\t\tif (stream.seekable && stream.flags & 1024) FS.llseek(stream, 0, 2);\n\t\t\tvar seeking = typeof position != \"undefined\";\n\t\t\tif (!seeking) position = stream.position;\n\t\t\telse if (!stream.seekable) throw new FS.ErrnoError(70);\n\t\t\tvar bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);\n\t\t\tif (!seeking) stream.position += bytesWritten;\n\t\t\treturn bytesWritten;\n\t\t},\n\t\tmmap(stream, length, position, prot, flags) {\n\t\t\tif ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) throw new FS.ErrnoError(2);\n\t\t\tif ((stream.flags & 2097155) === 1) throw new FS.ErrnoError(2);\n\t\t\tif (!stream.stream_ops.mmap) throw new FS.ErrnoError(43);\n\t\t\tif (!length) throw new FS.ErrnoError(28);\n\t\t\treturn stream.stream_ops.mmap(stream, length, position, prot, flags);\n\t\t},\n\t\tmsync(stream, buffer, offset, length, mmapFlags) {\n\t\t\tif (!stream.stream_ops.msync) return 0;\n\t\t\treturn stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags);\n\t\t},\n\t\tioctl(stream, cmd, arg) {\n\t\t\tif (!stream.stream_ops.ioctl) throw new FS.ErrnoError(59);\n\t\t\treturn stream.stream_ops.ioctl(stream, cmd, arg);\n\t\t},\n\t\treadFile(path, opts = {}) {\n\t\t\topts.flags = opts.flags || 0;\n\t\t\topts.encoding = opts.encoding || \"binary\";\n\t\t\tif (opts.encoding !== \"utf8\" && opts.encoding !== \"binary\") abort(`Invalid encoding type \"${opts.encoding}\"`);\n\t\t\tvar stream = FS.open(path, opts.flags);\n\t\t\tvar length = FS.stat(path).size;\n\t\t\tvar buf = new Uint8Array(length);\n\t\t\tFS.read(stream, buf, 0, length, 0);\n\t\t\tif (opts.encoding === \"utf8\") buf = UTF8ArrayToString(buf);\n\t\t\tFS.close(stream);\n\t\t\treturn buf;\n\t\t},\n\t\twriteFile(path, data, opts = {}) {\n\t\t\topts.flags = opts.flags || 577;\n\t\t\tvar stream = FS.open(path, opts.flags, opts.mode);\n\t\t\tif (typeof data == \"string\") data = new Uint8Array(intArrayFromString(data, true));\n\t\t\tif (ArrayBuffer.isView(data)) FS.write(stream, data, 0, data.byteLength, void 0, opts.canOwn);\n\t\t\telse abort(\"Unsupported data type\");\n\t\t\tFS.close(stream);\n\t\t},\n\t\tcwd: () => FS.currentPath,\n\t\tchdir(path) {\n\t\t\tvar lookup = FS.lookupPath(path, { follow: true });\n\t\t\tif (lookup.node === null) throw new FS.ErrnoError(44);\n\t\t\tif (!FS.isDir(lookup.node.mode)) throw new FS.ErrnoError(54);\n\t\t\tvar errCode = FS.nodePermissions(lookup.node, \"x\");\n\t\t\tif (errCode) throw new FS.ErrnoError(errCode);\n\t\t\tFS.currentPath = lookup.path;\n\t\t},\n\t\tcreateDefaultDirectories() {\n\t\t\tFS.mkdir(\"/tmp\");\n\t\t\tFS.mkdir(\"/home\");\n\t\t\tFS.mkdir(\"/home/web_user\");\n\t\t},\n\t\tcreateDefaultDevices() {\n\t\t\tFS.mkdir(\"/dev\");\n\t\t\tFS.registerDevice(FS.makedev(1, 3), {\n\t\t\t\tread: () => 0,\n\t\t\t\twrite: (stream, buffer, offset, length, pos) => length,\n\t\t\t\tllseek: () => 0\n\t\t\t});\n\t\t\tFS.mkdev(\"/dev/null\", FS.makedev(1, 3));\n\t\t\tTTY.register(FS.makedev(5, 0), TTY.default_tty_ops);\n\t\t\tTTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);\n\t\t\tFS.mkdev(\"/dev/tty\", FS.makedev(5, 0));\n\t\t\tFS.mkdev(\"/dev/tty1\", FS.makedev(6, 0));\n\t\t\tvar randomBuffer = new Uint8Array(1024), randomLeft = 0;\n\t\t\tvar randomByte = () => {\n\t\t\t\tif (randomLeft === 0) {\n\t\t\t\t\trandomFill(randomBuffer);\n\t\t\t\t\trandomLeft = randomBuffer.byteLength;\n\t\t\t\t}\n\t\t\t\treturn randomBuffer[--randomLeft];\n\t\t\t};\n\t\t\tFS.createDevice(\"/dev\", \"random\", randomByte);\n\t\t\tFS.createDevice(\"/dev\", \"urandom\", randomByte);\n\t\t\tFS.mkdir(\"/dev/shm\");\n\t\t\tFS.mkdir(\"/dev/shm/tmp\");\n\t\t},\n\t\tcreateSpecialDirectories() {\n\t\t\tFS.mkdir(\"/proc\");\n\t\t\tvar proc_self = FS.mkdir(\"/proc/self\");\n\t\t\tFS.mkdir(\"/proc/self/fd\");\n\t\t\tFS.mount({ mount() {\n\t\t\t\tvar node = FS.createNode(proc_self, \"fd\", 16895, 73);\n\t\t\t\tnode.stream_ops = { llseek: MEMFS.stream_ops.llseek };\n\t\t\t\tnode.node_ops = {\n\t\t\t\t\tlookup(parent, name) {\n\t\t\t\t\t\tvar fd = +name;\n\t\t\t\t\t\tvar stream = FS.getStreamChecked(fd);\n\t\t\t\t\t\tvar ret = {\n\t\t\t\t\t\t\tparent: null,\n\t\t\t\t\t\t\tmount: { mountpoint: \"fake\" },\n\t\t\t\t\t\t\tnode_ops: { readlink: () => stream.path },\n\t\t\t\t\t\t\tid: fd + 1\n\t\t\t\t\t\t};\n\t\t\t\t\t\tret.parent = ret;\n\t\t\t\t\t\treturn ret;\n\t\t\t\t\t},\n\t\t\t\t\treaddir() {\n\t\t\t\t\t\treturn Array.from(FS.streams.entries()).filter(([k, v]) => v).map(([k, v]) => k.toString());\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\treturn node;\n\t\t\t} }, {}, \"/proc/self/fd\");\n\t\t},\n\t\tcreateStandardStreams(input, output, error) {\n\t\t\tif (input) FS.createDevice(\"/dev\", \"stdin\", input);\n\t\t\telse FS.symlink(\"/dev/tty\", \"/dev/stdin\");\n\t\t\tif (output) FS.createDevice(\"/dev\", \"stdout\", null, output);\n\t\t\telse FS.symlink(\"/dev/tty\", \"/dev/stdout\");\n\t\t\tif (error) FS.createDevice(\"/dev\", \"stderr\", null, error);\n\t\t\telse FS.symlink(\"/dev/tty1\", \"/dev/stderr\");\n\t\t\tFS.open(\"/dev/stdin\", 0);\n\t\t\tFS.open(\"/dev/stdout\", 1);\n\t\t\tFS.open(\"/dev/stderr\", 1);\n\t\t},\n\t\tstaticInit() {\n\t\t\tFS.nameTable = new Array(4096);\n\t\t\tFS.mount(MEMFS, {}, \"/\");\n\t\t\tFS.createDefaultDirectories();\n\t\t\tFS.createDefaultDevices();\n\t\t\tFS.createSpecialDirectories();\n\t\t\tFS.filesystems = { \"MEMFS\": MEMFS };\n\t\t},\n\t\tinit(input, output, error) {\n\t\t\tFS.initialized = true;\n\t\t\tinput ??= Module[\"stdin\"];\n\t\t\toutput ??= Module[\"stdout\"];\n\t\t\terror ??= Module[\"stderr\"];\n\t\t\tFS.createStandardStreams(input, output, error);\n\t\t},\n\t\tquit() {\n\t\t\tFS.initialized = false;\n\t\t\tfor (var stream of FS.streams) if (stream) FS.close(stream);\n\t\t},\n\t\tfindObject(path, dontResolveLastLink) {\n\t\t\tvar ret = FS.analyzePath(path, dontResolveLastLink);\n\t\t\tif (!ret.exists) return null;\n\t\t\treturn ret.object;\n\t\t},\n\t\tanalyzePath(path, dontResolveLastLink) {\n\t\t\ttry {\n\t\t\t\tvar lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });\n\t\t\t\tpath = lookup.path;\n\t\t\t} catch (e) {}\n\t\t\tvar ret = {\n\t\t\t\tisRoot: false,\n\t\t\t\texists: false,\n\t\t\t\terror: 0,\n\t\t\t\tname: null,\n\t\t\t\tpath: null,\n\t\t\t\tobject: null,\n\t\t\t\tparentExists: false,\n\t\t\t\tparentPath: null,\n\t\t\t\tparentObject: null\n\t\t\t};\n\t\t\ttry {\n\t\t\t\tvar lookup = FS.lookupPath(path, { parent: true });\n\t\t\t\tret.parentExists = true;\n\t\t\t\tret.parentPath = lookup.path;\n\t\t\t\tret.parentObject = lookup.node;\n\t\t\t\tret.name = PATH.basename(path);\n\t\t\t\tlookup = FS.lookupPath(path, { follow: !dontResolveLastLink });\n\t\t\t\tret.exists = true;\n\t\t\t\tret.path = lookup.path;\n\t\t\t\tret.object = lookup.node;\n\t\t\t\tret.name = lookup.node.name;\n\t\t\t\tret.isRoot = lookup.path === \"/\";\n\t\t\t} catch (e) {\n\t\t\t\tret.error = e.errno;\n\t\t\t}\n\t\t\treturn ret;\n\t\t},\n\t\tcreatePath(parent, path, canRead, canWrite) {\n\t\t\tparent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n\t\t\tvar parts = path.split(\"/\").reverse();\n\t\t\twhile (parts.length) {\n\t\t\t\tvar part = parts.pop();\n\t\t\t\tif (!part) continue;\n\t\t\t\tvar current = PATH.join2(parent, part);\n\t\t\t\ttry {\n\t\t\t\t\tFS.mkdir(current);\n\t\t\t\t} catch (e) {\n\t\t\t\t\tif (e.errno != 20) throw e;\n\t\t\t\t}\n\t\t\t\tparent = current;\n\t\t\t}\n\t\t\treturn current;\n\t\t},\n\t\tcreateFile(parent, name, properties, canRead, canWrite) {\n\t\t\tvar path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n\t\t\tvar mode = FS_getMode(canRead, canWrite);\n\t\t\treturn FS.create(path, mode);\n\t\t},\n\t\tcreateDataFile(parent, name, data, canRead, canWrite, canOwn) {\n\t\t\tvar path = name;\n\t\t\tif (parent) {\n\t\t\t\tparent = typeof parent == \"string\" ? parent : FS.getPath(parent);\n\t\t\t\tpath = name ? PATH.join2(parent, name) : parent;\n\t\t\t}\n\t\t\tvar mode = FS_getMode(canRead, canWrite);\n\t\t\tvar node = FS.create(path, mode);\n\t\t\tif (data) {\n\t\t\t\tif (typeof data == \"string\") {\n\t\t\t\t\tvar arr = new Array(data.length);\n\t\t\t\t\tfor (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i);\n\t\t\t\t\tdata = arr;\n\t\t\t\t}\n\t\t\t\tFS.chmod(node, mode | 146);\n\t\t\t\tvar stream = FS.open(node, 577);\n\t\t\t\tFS.write(stream, data, 0, data.length, 0, canOwn);\n\t\t\t\tFS.close(stream);\n\t\t\t\tFS.chmod(node, mode);\n\t\t\t}\n\t\t},\n\t\tcreateDevice(parent, name, input, output) {\n\t\t\tvar path = PATH.join2(typeof parent == \"string\" ? parent : FS.getPath(parent), name);\n\t\t\tvar mode = FS_getMode(!!input, !!output);\n\t\t\tFS.createDevice.major ??= 64;\n\t\t\tvar dev = FS.makedev(FS.createDevice.major++, 0);\n\t\t\tFS.registerDevice(dev, {\n\t\t\t\topen(stream) {\n\t\t\t\t\tstream.seekable = false;\n\t\t\t\t},\n\t\t\t\tclose(stream) {\n\t\t\t\t\tif (output?.buffer?.length) output(10);\n\t\t\t\t},\n\t\t\t\tread(stream, buffer, offset, length, pos) {\n\t\t\t\t\tvar bytesRead = 0;\n\t\t\t\t\tfor (var i = 0; i < length; i++) {\n\t\t\t\t\t\tvar result;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresult = input();\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tthrow new FS.ErrnoError(29);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (result === void 0 && bytesRead === 0) throw new FS.ErrnoError(6);\n\t\t\t\t\t\tif (result === null || result === void 0) break;\n\t\t\t\t\t\tbytesRead++;\n\t\t\t\t\t\tbuffer[offset + i] = result;\n\t\t\t\t\t}\n\t\t\t\t\tif (bytesRead) stream.node.atime = Date.now();\n\t\t\t\t\treturn bytesRead;\n\t\t\t\t},\n\t\t\t\twrite(stream, buffer, offset, length, pos) {\n\t\t\t\t\tfor (var i = 0; i < length; i++) try {\n\t\t\t\t\t\toutput(buffer[offset + i]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tthrow new FS.ErrnoError(29);\n\t\t\t\t\t}\n\t\t\t\t\tif (length) stream.node.mtime = stream.node.ctime = Date.now();\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn FS.mkdev(path, mode, dev);\n\t\t},\n\t\tforceLoadFile(obj) {\n\t\t\tif (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;\n\t\t\tif (globalThis.XMLHttpRequest) abort(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\");\n\t\t\telse try {\n\t\t\t\tobj.contents = readBinary(obj.url);\n\t\t\t} catch (e) {\n\t\t\t\tthrow new FS.ErrnoError(29);\n\t\t\t}\n\t\t},\n\t\tcreateLazyFile(parent, name, url, canRead, canWrite) {\n\t\t\tclass LazyUint8Array {\n\t\t\t\tlengthKnown = false;\n\t\t\t\tchunks = [];\n\t\t\t\tget(idx) {\n\t\t\t\t\tif (idx > this.length - 1 || idx < 0) return;\n\t\t\t\t\tvar chunkOffset = idx % this.chunkSize;\n\t\t\t\t\tvar chunkNum = idx / this.chunkSize | 0;\n\t\t\t\t\treturn this.getter(chunkNum)[chunkOffset];\n\t\t\t\t}\n\t\t\t\tsetDataGetter(getter) {\n\t\t\t\t\tthis.getter = getter;\n\t\t\t\t}\n\t\t\t\tcacheLength() {\n\t\t\t\t\tvar xhr = new XMLHttpRequest();\n\t\t\t\t\txhr.open(\"HEAD\", url, false);\n\t\t\t\t\txhr.send(null);\n\t\t\t\t\tif (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) abort(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n\t\t\t\t\tvar datalength = Number(xhr.getResponseHeader(\"Content-length\"));\n\t\t\t\t\tvar header;\n\t\t\t\t\tvar hasByteServing = (header = xhr.getResponseHeader(\"Accept-Ranges\")) && header === \"bytes\";\n\t\t\t\t\tvar usesGzip = (header = xhr.getResponseHeader(\"Content-Encoding\")) && header === \"gzip\";\n\t\t\t\t\tvar chunkSize = 1024 * 1024;\n\t\t\t\t\tif (!hasByteServing) chunkSize = datalength;\n\t\t\t\t\tvar doXHR = (from, to) => {\n\t\t\t\t\t\tif (from > to) abort(\"invalid range (\" + from + \", \" + to + \") or no bytes requested!\");\n\t\t\t\t\t\tif (to > datalength - 1) abort(\"only \" + datalength + \" bytes available! programmer error!\");\n\t\t\t\t\t\tvar xhr = new XMLHttpRequest();\n\t\t\t\t\t\txhr.open(\"GET\", url, false);\n\t\t\t\t\t\tif (datalength !== chunkSize) xhr.setRequestHeader(\"Range\", \"bytes=\" + from + \"-\" + to);\n\t\t\t\t\t\txhr.responseType = \"arraybuffer\";\n\t\t\t\t\t\tif (xhr.overrideMimeType) xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\n\t\t\t\t\t\txhr.send(null);\n\t\t\t\t\t\tif (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) abort(\"Couldn't load \" + url + \". Status: \" + xhr.status);\n\t\t\t\t\t\tif (xhr.response !== void 0) return new Uint8Array(xhr.response || []);\n\t\t\t\t\t\treturn intArrayFromString(xhr.responseText || \"\", true);\n\t\t\t\t\t};\n\t\t\t\t\tvar lazyArray = this;\n\t\t\t\t\tlazyArray.setDataGetter((chunkNum) => {\n\t\t\t\t\t\tvar start = chunkNum * chunkSize;\n\t\t\t\t\t\tvar end = (chunkNum + 1) * chunkSize - 1;\n\t\t\t\t\t\tend = Math.min(end, datalength - 1);\n\t\t\t\t\t\tif (typeof lazyArray.chunks[chunkNum] == \"undefined\") lazyArray.chunks[chunkNum] = doXHR(start, end);\n\t\t\t\t\t\tif (typeof lazyArray.chunks[chunkNum] == \"undefined\") abort(\"doXHR failed!\");\n\t\t\t\t\t\treturn lazyArray.chunks[chunkNum];\n\t\t\t\t\t});\n\t\t\t\t\tif (usesGzip || !datalength) {\n\t\t\t\t\t\tchunkSize = datalength = 1;\n\t\t\t\t\t\tdatalength = this.getter(0).length;\n\t\t\t\t\t\tchunkSize = datalength;\n\t\t\t\t\t\tout(\"LazyFiles on gzip forces download of the whole file when length is accessed\");\n\t\t\t\t\t}\n\t\t\t\t\tthis._length = datalength;\n\t\t\t\t\tthis._chunkSize = chunkSize;\n\t\t\t\t\tthis.lengthKnown = true;\n\t\t\t\t}\n\t\t\t\tget length() {\n\t\t\t\t\tif (!this.lengthKnown) this.cacheLength();\n\t\t\t\t\treturn this._length;\n\t\t\t\t}\n\t\t\t\tget chunkSize() {\n\t\t\t\t\tif (!this.lengthKnown) this.cacheLength();\n\t\t\t\t\treturn this._chunkSize;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (globalThis.XMLHttpRequest) {\n\t\t\t\tif (!ENVIRONMENT_IS_WORKER) abort(\"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\");\n\t\t\t\tvar properties = {\n\t\t\t\t\tisDevice: false,\n\t\t\t\t\tcontents: new LazyUint8Array()\n\t\t\t\t};\n\t\t\t} else var properties = {\n\t\t\t\tisDevice: false,\n\t\t\t\turl\n\t\t\t};\n\t\t\tvar node = FS.createFile(parent, name, properties, canRead, canWrite);\n\t\t\tif (properties.contents) node.contents = properties.contents;\n\t\t\telse if (properties.url) {\n\t\t\t\tnode.contents = null;\n\t\t\t\tnode.url = properties.url;\n\t\t\t}\n\t\t\tObject.defineProperties(node, { usedBytes: { get: function() {\n\t\t\t\treturn this.contents.length;\n\t\t\t} } });\n\t\t\tvar stream_ops = {};\n\t\t\tfor (const [key, fn] of Object.entries(node.stream_ops)) stream_ops[key] = (...args) => {\n\t\t\t\tFS.forceLoadFile(node);\n\t\t\t\treturn fn(...args);\n\t\t\t};\n\t\t\tfunction writeChunks(stream, buffer, offset, length, position) {\n\t\t\t\tvar contents = stream.node.contents;\n\t\t\t\tif (position >= contents.length) return 0;\n\t\t\t\tvar size = Math.min(contents.length - position, length);\n\t\t\t\tif (contents.slice) for (var i = 0; i < size; i++) buffer[offset + i] = contents[position + i];\n\t\t\t\telse for (var i = 0; i < size; i++) buffer[offset + i] = contents.get(position + i);\n\t\t\t\treturn size;\n\t\t\t}\n\t\t\tstream_ops.read = (stream, buffer, offset, length, position) => {\n\t\t\t\tFS.forceLoadFile(node);\n\t\t\t\treturn writeChunks(stream, buffer, offset, length, position);\n\t\t\t};\n\t\t\tstream_ops.mmap = (stream, length, position, prot, flags) => {\n\t\t\t\tFS.forceLoadFile(node);\n\t\t\t\tvar ptr = mmapAlloc(length);\n\t\t\t\tif (!ptr) throw new FS.ErrnoError(48);\n\t\t\t\twriteChunks(stream, HEAP8, ptr, length, position);\n\t\t\t\treturn {\n\t\t\t\t\tptr,\n\t\t\t\t\tallocated: true\n\t\t\t\t};\n\t\t\t};\n\t\t\tnode.stream_ops = stream_ops;\n\t\t\treturn node;\n\t\t}\n\t};\n\t/**\n\t* Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the\n\t* emscripten HEAP, returns a copy of that string as a Javascript String object.\n\t*\n\t* @param {number} ptr\n\t* @param {number=} maxBytesToRead - An optional length that specifies the\n\t*   maximum number of bytes to read. You can omit this parameter to scan the\n\t*   string until the first 0 byte. If maxBytesToRead is passed, and the string\n\t*   at [ptr, ptr+maxBytesToReadr[ contains a null byte in the middle, then the\n\t*   string will cut short at that byte index.\n\t* @param {boolean=} ignoreNul - If true, the function will not stop on a NUL character.\n\t* @return {string}\n\t*/\n\tvar UTF8ToString = (ptr, maxBytesToRead, ignoreNul) => {\n\t\tif (!ptr) return \"\";\n\t\tvar end = findStringEnd(HEAPU8, ptr, maxBytesToRead, ignoreNul);\n\t\treturn UTF8Decoder.decode(HEAPU8.subarray(ptr, end));\n\t};\n\tvar SYSCALLS = {\n\t\tcalculateAt(dirfd, path, allowEmpty) {\n\t\t\tif (PATH.isAbs(path)) return path;\n\t\t\tvar dir;\n\t\t\tif (dirfd === -100) dir = FS.cwd();\n\t\t\telse dir = SYSCALLS.getStreamFromFD(dirfd).path;\n\t\t\tif (path.length == 0) {\n\t\t\t\tif (!allowEmpty) throw new FS.ErrnoError(44);\n\t\t\t\treturn dir;\n\t\t\t}\n\t\t\treturn dir + \"/\" + path;\n\t\t},\n\t\twriteStat(buf, stat) {\n\t\t\tHEAPU32[buf >> 2] = stat.dev;\n\t\t\tHEAPU32[buf + 4 >> 2] = stat.mode;\n\t\t\tHEAPU32[buf + 8 >> 2] = stat.nlink;\n\t\t\tHEAPU32[buf + 12 >> 2] = stat.uid;\n\t\t\tHEAPU32[buf + 16 >> 2] = stat.gid;\n\t\t\tHEAPU32[buf + 20 >> 2] = stat.rdev;\n\t\t\tHEAP64[buf + 24 >> 3] = BigInt(stat.size);\n\t\t\tHEAP32[buf + 32 >> 2] = 4096;\n\t\t\tHEAP32[buf + 36 >> 2] = stat.blocks;\n\t\t\tvar atime = stat.atime.getTime();\n\t\t\tvar mtime = stat.mtime.getTime();\n\t\t\tvar ctime = stat.ctime.getTime();\n\t\t\tHEAP64[buf + 40 >> 3] = BigInt(Math.floor(atime / 1e3));\n\t\t\tHEAPU32[buf + 48 >> 2] = atime % 1e3 * 1e3 * 1e3;\n\t\t\tHEAP64[buf + 56 >> 3] = BigInt(Math.floor(mtime / 1e3));\n\t\t\tHEAPU32[buf + 64 >> 2] = mtime % 1e3 * 1e3 * 1e3;\n\t\t\tHEAP64[buf + 72 >> 3] = BigInt(Math.floor(ctime / 1e3));\n\t\t\tHEAPU32[buf + 80 >> 2] = ctime % 1e3 * 1e3 * 1e3;\n\t\t\tHEAP64[buf + 88 >> 3] = BigInt(stat.ino);\n\t\t\treturn 0;\n\t\t},\n\t\twriteStatFs(buf, stats) {\n\t\t\tHEAPU32[buf + 4 >> 2] = stats.bsize;\n\t\t\tHEAPU32[buf + 60 >> 2] = stats.bsize;\n\t\t\tHEAP64[buf + 8 >> 3] = BigInt(stats.blocks);\n\t\t\tHEAP64[buf + 16 >> 3] = BigInt(stats.bfree);\n\t\t\tHEAP64[buf + 24 >> 3] = BigInt(stats.bavail);\n\t\t\tHEAP64[buf + 32 >> 3] = BigInt(stats.files);\n\t\t\tHEAP64[buf + 40 >> 3] = BigInt(stats.ffree);\n\t\t\tHEAPU32[buf + 48 >> 2] = stats.fsid;\n\t\t\tHEAPU32[buf + 64 >> 2] = stats.flags;\n\t\t\tHEAPU32[buf + 56 >> 2] = stats.namelen;\n\t\t},\n\t\tdoMsync(addr, stream, len, flags, offset) {\n\t\t\tif (!FS.isFile(stream.node.mode)) throw new FS.ErrnoError(43);\n\t\t\tif (flags & 2) return 0;\n\t\t\tvar buffer = HEAPU8.slice(addr, addr + len);\n\t\t\tFS.msync(stream, buffer, offset, len, flags);\n\t\t},\n\t\tgetStreamFromFD(fd) {\n\t\t\treturn FS.getStreamChecked(fd);\n\t\t},\n\t\tvarargs: void 0,\n\t\tgetStr(ptr) {\n\t\t\treturn UTF8ToString(ptr);\n\t\t}\n\t};\n\tfunction ___syscall_chmod(path, mode) {\n\t\ttry {\n\t\t\tpath = SYSCALLS.getStr(path);\n\t\t\tFS.chmod(path, mode);\n\t\t\treturn 0;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tfunction ___syscall_faccessat(dirfd, path, amode, flags) {\n\t\ttry {\n\t\t\tpath = SYSCALLS.getStr(path);\n\t\t\tpath = SYSCALLS.calculateAt(dirfd, path);\n\t\t\tif (amode & -8) return -28;\n\t\t\tvar node = FS.lookupPath(path, { follow: true }).node;\n\t\t\tif (!node) return -44;\n\t\t\tvar perms = \"\";\n\t\t\tif (amode & 4) perms += \"r\";\n\t\t\tif (amode & 2) perms += \"w\";\n\t\t\tif (amode & 1) perms += \"x\";\n\t\t\tif (perms && FS.nodePermissions(node, perms)) return -2;\n\t\t\treturn 0;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tfunction ___syscall_fchmod(fd, mode) {\n\t\ttry {\n\t\t\tFS.fchmod(fd, mode);\n\t\t\treturn 0;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tfunction ___syscall_fchown32(fd, owner, group) {\n\t\ttry {\n\t\t\tFS.fchown(fd, owner, group);\n\t\t\treturn 0;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tvar syscallGetVarargI = () => {\n\t\tvar ret = HEAP32[+SYSCALLS.varargs >> 2];\n\t\tSYSCALLS.varargs += 4;\n\t\treturn ret;\n\t};\n\tvar syscallGetVarargP = syscallGetVarargI;\n\tfunction ___syscall_fcntl64(fd, cmd, varargs) {\n\t\tSYSCALLS.varargs = varargs;\n\t\ttry {\n\t\t\tvar stream = SYSCALLS.getStreamFromFD(fd);\n\t\t\tswitch (cmd) {\n\t\t\t\tcase 0:\n\t\t\t\t\tvar arg = syscallGetVarargI();\n\t\t\t\t\tif (arg < 0) return -28;\n\t\t\t\t\twhile (FS.streams[arg]) arg++;\n\t\t\t\t\treturn FS.dupStream(stream, arg).fd;\n\t\t\t\tcase 1:\n\t\t\t\tcase 2: return 0;\n\t\t\t\tcase 3: return stream.flags;\n\t\t\t\tcase 4:\n\t\t\t\t\tvar arg = syscallGetVarargI();\n\t\t\t\t\tstream.flags |= arg;\n\t\t\t\t\treturn 0;\n\t\t\t\tcase 12:\n\t\t\t\t\tvar arg = syscallGetVarargP();\n\t\t\t\t\tvar offset = 0;\n\t\t\t\t\tHEAP16[arg + offset >> 1] = 2;\n\t\t\t\t\treturn 0;\n\t\t\t\tcase 13:\n\t\t\t\tcase 14: return 0;\n\t\t\t}\n\t\t\treturn -28;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tfunction ___syscall_fstat64(fd, buf) {\n\t\ttry {\n\t\t\treturn SYSCALLS.writeStat(buf, FS.fstat(fd));\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tvar INT53_MAX = 9007199254740992;\n\tvar INT53_MIN = -9007199254740992;\n\tvar bigintToI53Checked = (num) => num < INT53_MIN || num > INT53_MAX ? NaN : Number(num);\n\tfunction ___syscall_ftruncate64(fd, length) {\n\t\tlength = bigintToI53Checked(length);\n\t\ttry {\n\t\t\tif (isNaN(length)) return -61;\n\t\t\tFS.ftruncate(fd, length);\n\t\t\treturn 0;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tvar stringToUTF8 = (str, outPtr, maxBytesToWrite) => {\n\t\treturn stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n\t};\n\tfunction ___syscall_getcwd(buf, size) {\n\t\ttry {\n\t\t\tif (size === 0) return -28;\n\t\t\tvar cwd = FS.cwd();\n\t\t\tvar cwdLengthInBytes = lengthBytesUTF8(cwd) + 1;\n\t\t\tif (size < cwdLengthInBytes) return -68;\n\t\t\tstringToUTF8(cwd, buf, size);\n\t\t\treturn cwdLengthInBytes;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tfunction ___syscall_ioctl(fd, op, varargs) {\n\t\tSYSCALLS.varargs = varargs;\n\t\ttry {\n\t\t\tvar stream = SYSCALLS.getStreamFromFD(fd);\n\t\t\tswitch (op) {\n\t\t\t\tcase 21509:\n\t\t\t\t\tif (!stream.tty) return -59;\n\t\t\t\t\treturn 0;\n\t\t\t\tcase 21505:\n\t\t\t\t\tif (!stream.tty) return -59;\n\t\t\t\t\tif (stream.tty.ops.ioctl_tcgets) {\n\t\t\t\t\t\tvar termios = stream.tty.ops.ioctl_tcgets(stream);\n\t\t\t\t\t\tvar argp = syscallGetVarargP();\n\t\t\t\t\t\tHEAP32[argp >> 2] = termios.c_iflag || 0;\n\t\t\t\t\t\tHEAP32[argp + 4 >> 2] = termios.c_oflag || 0;\n\t\t\t\t\t\tHEAP32[argp + 8 >> 2] = termios.c_cflag || 0;\n\t\t\t\t\t\tHEAP32[argp + 12 >> 2] = termios.c_lflag || 0;\n\t\t\t\t\t\tfor (var i = 0; i < 32; i++) HEAP8[argp + i + 17] = termios.c_cc[i] || 0;\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\tcase 21510:\n\t\t\t\tcase 21511:\n\t\t\t\tcase 21512:\n\t\t\t\t\tif (!stream.tty) return -59;\n\t\t\t\t\treturn 0;\n\t\t\t\tcase 21506:\n\t\t\t\tcase 21507:\n\t\t\t\tcase 21508:\n\t\t\t\t\tif (!stream.tty) return -59;\n\t\t\t\t\tif (stream.tty.ops.ioctl_tcsets) {\n\t\t\t\t\t\tvar argp = syscallGetVarargP();\n\t\t\t\t\t\tvar c_iflag = HEAP32[argp >> 2];\n\t\t\t\t\t\tvar c_oflag = HEAP32[argp + 4 >> 2];\n\t\t\t\t\t\tvar c_cflag = HEAP32[argp + 8 >> 2];\n\t\t\t\t\t\tvar c_lflag = HEAP32[argp + 12 >> 2];\n\t\t\t\t\t\tvar c_cc = [];\n\t\t\t\t\t\tfor (var i = 0; i < 32; i++) c_cc.push(HEAP8[argp + i + 17]);\n\t\t\t\t\t\treturn stream.tty.ops.ioctl_tcsets(stream.tty, op, {\n\t\t\t\t\t\t\tc_iflag,\n\t\t\t\t\t\t\tc_oflag,\n\t\t\t\t\t\t\tc_cflag,\n\t\t\t\t\t\t\tc_lflag,\n\t\t\t\t\t\t\tc_cc\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\tcase 21519:\n\t\t\t\t\tif (!stream.tty) return -59;\n\t\t\t\t\tvar argp = syscallGetVarargP();\n\t\t\t\t\tHEAP32[argp >> 2] = 0;\n\t\t\t\t\treturn 0;\n\t\t\t\tcase 21520:\n\t\t\t\t\tif (!stream.tty) return -59;\n\t\t\t\t\treturn -28;\n\t\t\t\tcase 21537:\n\t\t\t\tcase 21531:\n\t\t\t\t\tvar argp = syscallGetVarargP();\n\t\t\t\t\treturn FS.ioctl(stream, op, argp);\n\t\t\t\tcase 21523:\n\t\t\t\t\tif (!stream.tty) return -59;\n\t\t\t\t\tif (stream.tty.ops.ioctl_tiocgwinsz) {\n\t\t\t\t\t\tvar winsize = stream.tty.ops.ioctl_tiocgwinsz(stream.tty);\n\t\t\t\t\t\tvar argp = syscallGetVarargP();\n\t\t\t\t\t\tHEAP16[argp >> 1] = winsize[0];\n\t\t\t\t\t\tHEAP16[argp + 2 >> 1] = winsize[1];\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\tcase 21524:\n\t\t\t\t\tif (!stream.tty) return -59;\n\t\t\t\t\treturn 0;\n\t\t\t\tcase 21515:\n\t\t\t\t\tif (!stream.tty) return -59;\n\t\t\t\t\treturn 0;\n\t\t\t\tdefault: return -28;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tfunction ___syscall_lstat64(path, buf) {\n\t\ttry {\n\t\t\tpath = SYSCALLS.getStr(path);\n\t\t\treturn SYSCALLS.writeStat(buf, FS.lstat(path));\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tfunction ___syscall_mkdirat(dirfd, path, mode) {\n\t\ttry {\n\t\t\tpath = SYSCALLS.getStr(path);\n\t\t\tpath = SYSCALLS.calculateAt(dirfd, path);\n\t\t\tFS.mkdir(path, mode, 0);\n\t\t\treturn 0;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tfunction ___syscall_newfstatat(dirfd, path, buf, flags) {\n\t\ttry {\n\t\t\tpath = SYSCALLS.getStr(path);\n\t\t\tvar nofollow = flags & 256;\n\t\t\tvar allowEmpty = flags & 4096;\n\t\t\tflags = flags & -6401;\n\t\t\tpath = SYSCALLS.calculateAt(dirfd, path, allowEmpty);\n\t\t\treturn SYSCALLS.writeStat(buf, nofollow ? FS.lstat(path) : FS.stat(path));\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tfunction ___syscall_openat(dirfd, path, flags, varargs) {\n\t\tSYSCALLS.varargs = varargs;\n\t\ttry {\n\t\t\tpath = SYSCALLS.getStr(path);\n\t\t\tpath = SYSCALLS.calculateAt(dirfd, path);\n\t\t\tvar mode = varargs ? syscallGetVarargI() : 0;\n\t\t\treturn FS.open(path, flags, mode).fd;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tfunction ___syscall_readlinkat(dirfd, path, buf, bufsize) {\n\t\ttry {\n\t\t\tpath = SYSCALLS.getStr(path);\n\t\t\tpath = SYSCALLS.calculateAt(dirfd, path);\n\t\t\tif (bufsize <= 0) return -28;\n\t\t\tvar ret = FS.readlink(path);\n\t\t\tvar len = Math.min(bufsize, lengthBytesUTF8(ret));\n\t\t\tvar endChar = HEAP8[buf + len];\n\t\t\tstringToUTF8(ret, buf, bufsize + 1);\n\t\t\tHEAP8[buf + len] = endChar;\n\t\t\treturn len;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tfunction ___syscall_rmdir(path) {\n\t\ttry {\n\t\t\tpath = SYSCALLS.getStr(path);\n\t\t\tFS.rmdir(path);\n\t\t\treturn 0;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tfunction ___syscall_stat64(path, buf) {\n\t\ttry {\n\t\t\tpath = SYSCALLS.getStr(path);\n\t\t\treturn SYSCALLS.writeStat(buf, FS.stat(path));\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tfunction ___syscall_unlinkat(dirfd, path, flags) {\n\t\ttry {\n\t\t\tpath = SYSCALLS.getStr(path);\n\t\t\tpath = SYSCALLS.calculateAt(dirfd, path);\n\t\t\tif (!flags) FS.unlink(path);\n\t\t\telse if (flags === 512) FS.rmdir(path);\n\t\t\telse return -28;\n\t\t\treturn 0;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tvar readI53FromI64 = (ptr) => {\n\t\treturn HEAPU32[ptr >> 2] + HEAP32[ptr + 4 >> 2] * 4294967296;\n\t};\n\tfunction ___syscall_utimensat(dirfd, path, times, flags) {\n\t\ttry {\n\t\t\tpath = SYSCALLS.getStr(path);\n\t\t\tpath = SYSCALLS.calculateAt(dirfd, path, true);\n\t\t\tvar now = Date.now(), atime, mtime;\n\t\t\tif (!times) {\n\t\t\t\tatime = now;\n\t\t\t\tmtime = now;\n\t\t\t} else {\n\t\t\t\tvar seconds = readI53FromI64(times);\n\t\t\t\tvar nanoseconds = HEAP32[times + 8 >> 2];\n\t\t\t\tif (nanoseconds == 1073741823) atime = now;\n\t\t\t\telse if (nanoseconds == 1073741822) atime = null;\n\t\t\t\telse atime = seconds * 1e3 + nanoseconds / (1e3 * 1e3);\n\t\t\t\ttimes += 16;\n\t\t\t\tseconds = readI53FromI64(times);\n\t\t\t\tnanoseconds = HEAP32[times + 8 >> 2];\n\t\t\t\tif (nanoseconds == 1073741823) mtime = now;\n\t\t\t\telse if (nanoseconds == 1073741822) mtime = null;\n\t\t\t\telse mtime = seconds * 1e3 + nanoseconds / (1e3 * 1e3);\n\t\t\t}\n\t\t\tif ((mtime ?? atime) !== null) FS.utime(path, atime, mtime);\n\t\t\treturn 0;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tvar isLeapYear = (year) => year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n\tvar MONTH_DAYS_LEAP_CUMULATIVE = [\n\t\t0,\n\t\t31,\n\t\t60,\n\t\t91,\n\t\t121,\n\t\t152,\n\t\t182,\n\t\t213,\n\t\t244,\n\t\t274,\n\t\t305,\n\t\t335\n\t];\n\tvar MONTH_DAYS_REGULAR_CUMULATIVE = [\n\t\t0,\n\t\t31,\n\t\t59,\n\t\t90,\n\t\t120,\n\t\t151,\n\t\t181,\n\t\t212,\n\t\t243,\n\t\t273,\n\t\t304,\n\t\t334\n\t];\n\tvar ydayFromDate = (date) => {\n\t\treturn (isLeapYear(date.getFullYear()) ? MONTH_DAYS_LEAP_CUMULATIVE : MONTH_DAYS_REGULAR_CUMULATIVE)[date.getMonth()] + date.getDate() - 1;\n\t};\n\tfunction __localtime_js(time, tmPtr) {\n\t\ttime = bigintToI53Checked(time);\n\t\tvar date = /* @__PURE__ */ new Date(time * 1e3);\n\t\tHEAP32[tmPtr >> 2] = date.getSeconds();\n\t\tHEAP32[tmPtr + 4 >> 2] = date.getMinutes();\n\t\tHEAP32[tmPtr + 8 >> 2] = date.getHours();\n\t\tHEAP32[tmPtr + 12 >> 2] = date.getDate();\n\t\tHEAP32[tmPtr + 16 >> 2] = date.getMonth();\n\t\tHEAP32[tmPtr + 20 >> 2] = date.getFullYear() - 1900;\n\t\tHEAP32[tmPtr + 24 >> 2] = date.getDay();\n\t\tvar yday = ydayFromDate(date) | 0;\n\t\tHEAP32[tmPtr + 28 >> 2] = yday;\n\t\tHEAP32[tmPtr + 36 >> 2] = -(date.getTimezoneOffset() * 60);\n\t\tvar start = new Date(date.getFullYear(), 0, 1);\n\t\tvar summerOffset = new Date(date.getFullYear(), 6, 1).getTimezoneOffset();\n\t\tvar winterOffset = start.getTimezoneOffset();\n\t\tvar dst = (summerOffset != winterOffset && date.getTimezoneOffset() == Math.min(winterOffset, summerOffset)) | 0;\n\t\tHEAP32[tmPtr + 32 >> 2] = dst;\n\t}\n\tfunction __mmap_js(len, prot, flags, fd, offset, allocated, addr) {\n\t\toffset = bigintToI53Checked(offset);\n\t\ttry {\n\t\t\tvar stream = SYSCALLS.getStreamFromFD(fd);\n\t\t\tvar res = FS.mmap(stream, len, offset, prot, flags);\n\t\t\tvar ptr = res.ptr;\n\t\t\tHEAP32[allocated >> 2] = res.allocated;\n\t\t\tHEAPU32[addr >> 2] = ptr;\n\t\t\treturn 0;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tfunction __munmap_js(addr, len, prot, flags, fd, offset) {\n\t\toffset = bigintToI53Checked(offset);\n\t\ttry {\n\t\t\tvar stream = SYSCALLS.getStreamFromFD(fd);\n\t\t\tif (prot & 2) SYSCALLS.doMsync(addr, stream, len, flags, offset);\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn -e.errno;\n\t\t}\n\t}\n\tvar __tzset_js = (timezone, daylight, std_name, dst_name) => {\n\t\tvar currentYear = (/* @__PURE__ */ new Date()).getFullYear();\n\t\tvar winter = new Date(currentYear, 0, 1);\n\t\tvar summer = new Date(currentYear, 6, 1);\n\t\tvar winterOffset = winter.getTimezoneOffset();\n\t\tvar summerOffset = summer.getTimezoneOffset();\n\t\tvar stdTimezoneOffset = Math.max(winterOffset, summerOffset);\n\t\tHEAPU32[timezone >> 2] = stdTimezoneOffset * 60;\n\t\tHEAP32[daylight >> 2] = Number(winterOffset != summerOffset);\n\t\tvar extractZone = (timezoneOffset) => {\n\t\t\tvar sign = timezoneOffset >= 0 ? \"-\" : \"+\";\n\t\t\tvar absOffset = Math.abs(timezoneOffset);\n\t\t\treturn `UTC${sign}${String(Math.floor(absOffset / 60)).padStart(2, \"0\")}${String(absOffset % 60).padStart(2, \"0\")}`;\n\t\t};\n\t\tvar winterName = extractZone(winterOffset);\n\t\tvar summerName = extractZone(summerOffset);\n\t\tif (summerOffset < winterOffset) {\n\t\t\tstringToUTF8(winterName, std_name, 17);\n\t\t\tstringToUTF8(summerName, dst_name, 17);\n\t\t} else {\n\t\t\tstringToUTF8(winterName, dst_name, 17);\n\t\t\tstringToUTF8(summerName, std_name, 17);\n\t\t}\n\t};\n\tvar _emscripten_get_now = () => performance.now();\n\tvar _emscripten_date_now = () => Date.now();\n\tvar nowIsMonotonic = 1;\n\tvar checkWasiClock = (clock_id) => clock_id >= 0 && clock_id <= 3;\n\tfunction _clock_time_get(clk_id, ignored_precision, ptime) {\n\t\tignored_precision = bigintToI53Checked(ignored_precision);\n\t\tif (!checkWasiClock(clk_id)) return 28;\n\t\tvar now;\n\t\tif (clk_id === 0) now = _emscripten_date_now();\n\t\telse if (nowIsMonotonic) now = _emscripten_get_now();\n\t\telse return 52;\n\t\tvar nsec = Math.round(now * 1e3 * 1e3);\n\t\tHEAP64[ptime >> 3] = BigInt(nsec);\n\t\treturn 0;\n\t}\n\tvar getHeapMax = () => 2147483648;\n\tvar _emscripten_get_heap_max = () => getHeapMax();\n\tvar growMemory = (size) => {\n\t\tvar pages = (size - wasmMemory.buffer.byteLength + 65535) / 65536 | 0;\n\t\ttry {\n\t\t\twasmMemory.grow(pages);\n\t\t\tupdateMemoryViews();\n\t\t\treturn 1;\n\t\t} catch (e) {}\n\t};\n\tvar _emscripten_resize_heap = (requestedSize) => {\n\t\tvar oldSize = HEAPU8.length;\n\t\trequestedSize >>>= 0;\n\t\tvar maxHeapSize = getHeapMax();\n\t\tif (requestedSize > maxHeapSize) return false;\n\t\tfor (var cutDown = 1; cutDown <= 4; cutDown *= 2) {\n\t\t\tvar overGrownHeapSize = oldSize * (1 + .2 / cutDown);\n\t\t\toverGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n\t\t\tif (growMemory(Math.min(maxHeapSize, alignMemory(Math.max(requestedSize, overGrownHeapSize), 65536)))) return true;\n\t\t}\n\t\treturn false;\n\t};\n\tvar ENV = {};\n\tvar getExecutableName = () => thisProgram || \"./this.program\";\n\tvar getEnvStrings = () => {\n\t\tif (!getEnvStrings.strings) {\n\t\t\tvar lang = (globalThis.navigator?.language ?? \"C\").replace(\"-\", \"_\") + \".UTF-8\";\n\t\t\tvar env = {\n\t\t\t\t\"USER\": \"web_user\",\n\t\t\t\t\"LOGNAME\": \"web_user\",\n\t\t\t\t\"PATH\": \"/\",\n\t\t\t\t\"PWD\": \"/\",\n\t\t\t\t\"HOME\": \"/home/web_user\",\n\t\t\t\t\"LANG\": lang,\n\t\t\t\t\"_\": getExecutableName()\n\t\t\t};\n\t\t\tfor (var x in ENV) if (ENV[x] === void 0) delete env[x];\n\t\t\telse env[x] = ENV[x];\n\t\t\tvar strings = [];\n\t\t\tfor (var x in env) strings.push(`${x}=${env[x]}`);\n\t\t\tgetEnvStrings.strings = strings;\n\t\t}\n\t\treturn getEnvStrings.strings;\n\t};\n\tvar _environ_get = (__environ, environ_buf) => {\n\t\tvar bufSize = 0;\n\t\tvar envp = 0;\n\t\tfor (var string of getEnvStrings()) {\n\t\t\tvar ptr = environ_buf + bufSize;\n\t\t\tHEAPU32[__environ + envp >> 2] = ptr;\n\t\t\tbufSize += stringToUTF8(string, ptr, Infinity) + 1;\n\t\t\tenvp += 4;\n\t\t}\n\t\treturn 0;\n\t};\n\tvar _environ_sizes_get = (penviron_count, penviron_buf_size) => {\n\t\tvar strings = getEnvStrings();\n\t\tHEAPU32[penviron_count >> 2] = strings.length;\n\t\tvar bufSize = 0;\n\t\tfor (var string of strings) bufSize += lengthBytesUTF8(string) + 1;\n\t\tHEAPU32[penviron_buf_size >> 2] = bufSize;\n\t\treturn 0;\n\t};\n\tfunction _fd_close(fd) {\n\t\ttry {\n\t\t\tvar stream = SYSCALLS.getStreamFromFD(fd);\n\t\t\tFS.close(stream);\n\t\t\treturn 0;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn e.errno;\n\t\t}\n\t}\n\tfunction _fd_fdstat_get(fd, pbuf) {\n\t\ttry {\n\t\t\tvar rightsBase = 0;\n\t\t\tvar rightsInheriting = 0;\n\t\t\tvar flags = 0;\n\t\t\tvar stream = SYSCALLS.getStreamFromFD(fd);\n\t\t\tvar type = stream.tty ? 2 : FS.isDir(stream.mode) ? 3 : FS.isLink(stream.mode) ? 7 : 4;\n\t\t\tHEAP8[pbuf] = type;\n\t\t\tHEAP16[pbuf + 2 >> 1] = flags;\n\t\t\tHEAP64[pbuf + 8 >> 3] = BigInt(rightsBase);\n\t\t\tHEAP64[pbuf + 16 >> 3] = BigInt(rightsInheriting);\n\t\t\treturn 0;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn e.errno;\n\t\t}\n\t}\n\t/** @param {number=} offset */\n\tvar doReadv = (stream, iov, iovcnt, offset) => {\n\t\tvar ret = 0;\n\t\tfor (var i = 0; i < iovcnt; i++) {\n\t\t\tvar ptr = HEAPU32[iov >> 2];\n\t\t\tvar len = HEAPU32[iov + 4 >> 2];\n\t\t\tiov += 8;\n\t\t\tvar curr = FS.read(stream, HEAP8, ptr, len, offset);\n\t\t\tif (curr < 0) return -1;\n\t\t\tret += curr;\n\t\t\tif (curr < len) break;\n\t\t\tif (typeof offset != \"undefined\") offset += curr;\n\t\t}\n\t\treturn ret;\n\t};\n\tfunction _fd_read(fd, iov, iovcnt, pnum) {\n\t\ttry {\n\t\t\tvar num = doReadv(SYSCALLS.getStreamFromFD(fd), iov, iovcnt);\n\t\t\tHEAPU32[pnum >> 2] = num;\n\t\t\treturn 0;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn e.errno;\n\t\t}\n\t}\n\tfunction _fd_seek(fd, offset, whence, newOffset) {\n\t\toffset = bigintToI53Checked(offset);\n\t\ttry {\n\t\t\tif (isNaN(offset)) return 61;\n\t\t\tvar stream = SYSCALLS.getStreamFromFD(fd);\n\t\t\tFS.llseek(stream, offset, whence);\n\t\t\tHEAP64[newOffset >> 3] = BigInt(stream.position);\n\t\t\tif (stream.getdents && offset === 0 && whence === 0) stream.getdents = null;\n\t\t\treturn 0;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn e.errno;\n\t\t}\n\t}\n\tfunction _fd_sync(fd) {\n\t\ttry {\n\t\t\tvar stream = SYSCALLS.getStreamFromFD(fd);\n\t\t\treturn stream.stream_ops?.fsync?.(stream);\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn e.errno;\n\t\t}\n\t}\n\t/** @param {number=} offset */\n\tvar doWritev = (stream, iov, iovcnt, offset) => {\n\t\tvar ret = 0;\n\t\tfor (var i = 0; i < iovcnt; i++) {\n\t\t\tvar ptr = HEAPU32[iov >> 2];\n\t\t\tvar len = HEAPU32[iov + 4 >> 2];\n\t\t\tiov += 8;\n\t\t\tvar curr = FS.write(stream, HEAP8, ptr, len, offset);\n\t\t\tif (curr < 0) return -1;\n\t\t\tret += curr;\n\t\t\tif (curr < len) break;\n\t\t\tif (typeof offset != \"undefined\") offset += curr;\n\t\t}\n\t\treturn ret;\n\t};\n\tfunction _fd_write(fd, iov, iovcnt, pnum) {\n\t\ttry {\n\t\t\tvar num = doWritev(SYSCALLS.getStreamFromFD(fd), iov, iovcnt);\n\t\t\tHEAPU32[pnum >> 2] = num;\n\t\t\treturn 0;\n\t\t} catch (e) {\n\t\t\tif (typeof FS == \"undefined\" || !(e.name === \"ErrnoError\")) throw e;\n\t\t\treturn e.errno;\n\t\t}\n\t}\n\tFS.createPreloadedFile = FS_createPreloadedFile;\n\tFS.preloadFile = FS_preloadFile;\n\tFS.staticInit();\n\tinitMemory();\n\tif (Module[\"noExitRuntime\"]) Module[\"noExitRuntime\"];\n\tif (Module[\"preloadPlugins\"]) preloadPlugins = Module[\"preloadPlugins\"];\n\tif (Module[\"print\"]) out = Module[\"print\"];\n\tif (Module[\"printErr\"]) err = Module[\"printErr\"];\n\tif (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\n\tif (Module[\"arguments\"]) Module[\"arguments\"];\n\tif (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n\tif (Module[\"preInit\"]) {\n\t\tif (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [Module[\"preInit\"]];\n\t\twhile (Module[\"preInit\"].length > 0) Module[\"preInit\"].shift()();\n\t}\n\tModule[\"wasmMemory\"] = wasmMemory;\n\tvar _emscripten_builtin_memalign;\n\tfunction assignWasmExports(wasmExports) {\n\t\tModule[\"_sqlite3_status64\"] = wasmExports[\"sqlite3_status64\"];\n\t\tModule[\"_sqlite3_status\"] = wasmExports[\"sqlite3_status\"];\n\t\tModule[\"_sqlite3_db_status64\"] = wasmExports[\"sqlite3_db_status64\"];\n\t\tModule[\"_sqlite3_msize\"] = wasmExports[\"sqlite3_msize\"];\n\t\tModule[\"_sqlite3_db_status\"] = wasmExports[\"sqlite3_db_status\"];\n\t\tModule[\"_sqlite3_vfs_find\"] = wasmExports[\"sqlite3_vfs_find\"];\n\t\tModule[\"_sqlite3_initialize\"] = wasmExports[\"sqlite3_initialize\"];\n\t\tModule[\"_sqlite3_malloc\"] = wasmExports[\"sqlite3_malloc\"];\n\t\tModule[\"_sqlite3_free\"] = wasmExports[\"sqlite3_free\"];\n\t\tModule[\"_sqlite3_vfs_register\"] = wasmExports[\"sqlite3_vfs_register\"];\n\t\tModule[\"_sqlite3_vfs_unregister\"] = wasmExports[\"sqlite3_vfs_unregister\"];\n\t\tModule[\"_sqlite3_malloc64\"] = wasmExports[\"sqlite3_malloc64\"];\n\t\tModule[\"_sqlite3_realloc\"] = wasmExports[\"sqlite3_realloc\"];\n\t\tModule[\"_sqlite3_realloc64\"] = wasmExports[\"sqlite3_realloc64\"];\n\t\tModule[\"_sqlite3_value_text\"] = wasmExports[\"sqlite3_value_text\"];\n\t\tModule[\"_sqlite3_randomness\"] = wasmExports[\"sqlite3_randomness\"];\n\t\tModule[\"_sqlite3_stricmp\"] = wasmExports[\"sqlite3_stricmp\"];\n\t\tModule[\"_sqlite3_strnicmp\"] = wasmExports[\"sqlite3_strnicmp\"];\n\t\tModule[\"_sqlite3_uri_parameter\"] = wasmExports[\"sqlite3_uri_parameter\"];\n\t\tModule[\"_sqlite3_uri_boolean\"] = wasmExports[\"sqlite3_uri_boolean\"];\n\t\tModule[\"_sqlite3_serialize\"] = wasmExports[\"sqlite3_serialize\"];\n\t\tModule[\"_sqlite3_prepare_v2\"] = wasmExports[\"sqlite3_prepare_v2\"];\n\t\tModule[\"_sqlite3_step\"] = wasmExports[\"sqlite3_step\"];\n\t\tModule[\"_sqlite3_column_int64\"] = wasmExports[\"sqlite3_column_int64\"];\n\t\tModule[\"_sqlite3_reset\"] = wasmExports[\"sqlite3_reset\"];\n\t\tModule[\"_sqlite3_exec\"] = wasmExports[\"sqlite3_exec\"];\n\t\tModule[\"_sqlite3_column_int\"] = wasmExports[\"sqlite3_column_int\"];\n\t\tModule[\"_sqlite3_finalize\"] = wasmExports[\"sqlite3_finalize\"];\n\t\tModule[\"_sqlite3_file_control\"] = wasmExports[\"sqlite3_file_control\"];\n\t\tModule[\"_sqlite3_column_name\"] = wasmExports[\"sqlite3_column_name\"];\n\t\tModule[\"_sqlite3_column_text\"] = wasmExports[\"sqlite3_column_text\"];\n\t\tModule[\"_sqlite3_column_type\"] = wasmExports[\"sqlite3_column_type\"];\n\t\tModule[\"_sqlite3_errmsg\"] = wasmExports[\"sqlite3_errmsg\"];\n\t\tModule[\"_sqlite3_deserialize\"] = wasmExports[\"sqlite3_deserialize\"];\n\t\tModule[\"_sqlite3_clear_bindings\"] = wasmExports[\"sqlite3_clear_bindings\"];\n\t\tModule[\"_sqlite3_value_blob\"] = wasmExports[\"sqlite3_value_blob\"];\n\t\tModule[\"_sqlite3_value_bytes\"] = wasmExports[\"sqlite3_value_bytes\"];\n\t\tModule[\"_sqlite3_value_double\"] = wasmExports[\"sqlite3_value_double\"];\n\t\tModule[\"_sqlite3_value_int\"] = wasmExports[\"sqlite3_value_int\"];\n\t\tModule[\"_sqlite3_value_int64\"] = wasmExports[\"sqlite3_value_int64\"];\n\t\tModule[\"_sqlite3_value_subtype\"] = wasmExports[\"sqlite3_value_subtype\"];\n\t\tModule[\"_sqlite3_value_pointer\"] = wasmExports[\"sqlite3_value_pointer\"];\n\t\tModule[\"_sqlite3_value_type\"] = wasmExports[\"sqlite3_value_type\"];\n\t\tModule[\"_sqlite3_value_nochange\"] = wasmExports[\"sqlite3_value_nochange\"];\n\t\tModule[\"_sqlite3_value_frombind\"] = wasmExports[\"sqlite3_value_frombind\"];\n\t\tModule[\"_sqlite3_value_dup\"] = wasmExports[\"sqlite3_value_dup\"];\n\t\tModule[\"_sqlite3_value_free\"] = wasmExports[\"sqlite3_value_free\"];\n\t\tModule[\"_sqlite3_result_blob\"] = wasmExports[\"sqlite3_result_blob\"];\n\t\tModule[\"_sqlite3_result_error_toobig\"] = wasmExports[\"sqlite3_result_error_toobig\"];\n\t\tModule[\"_sqlite3_result_error_nomem\"] = wasmExports[\"sqlite3_result_error_nomem\"];\n\t\tModule[\"_sqlite3_result_double\"] = wasmExports[\"sqlite3_result_double\"];\n\t\tModule[\"_sqlite3_result_error\"] = wasmExports[\"sqlite3_result_error\"];\n\t\tModule[\"_sqlite3_result_int\"] = wasmExports[\"sqlite3_result_int\"];\n\t\tModule[\"_sqlite3_result_int64\"] = wasmExports[\"sqlite3_result_int64\"];\n\t\tModule[\"_sqlite3_result_null\"] = wasmExports[\"sqlite3_result_null\"];\n\t\tModule[\"_sqlite3_result_pointer\"] = wasmExports[\"sqlite3_result_pointer\"];\n\t\tModule[\"_sqlite3_result_subtype\"] = wasmExports[\"sqlite3_result_subtype\"];\n\t\tModule[\"_sqlite3_result_text\"] = wasmExports[\"sqlite3_result_text\"];\n\t\tModule[\"_sqlite3_result_zeroblob\"] = wasmExports[\"sqlite3_result_zeroblob\"];\n\t\tModule[\"_sqlite3_result_zeroblob64\"] = wasmExports[\"sqlite3_result_zeroblob64\"];\n\t\tModule[\"_sqlite3_result_error_code\"] = wasmExports[\"sqlite3_result_error_code\"];\n\t\tModule[\"_sqlite3_user_data\"] = wasmExports[\"sqlite3_user_data\"];\n\t\tModule[\"_sqlite3_context_db_handle\"] = wasmExports[\"sqlite3_context_db_handle\"];\n\t\tModule[\"_sqlite3_vtab_nochange\"] = wasmExports[\"sqlite3_vtab_nochange\"];\n\t\tModule[\"_sqlite3_vtab_in_first\"] = wasmExports[\"sqlite3_vtab_in_first\"];\n\t\tModule[\"_sqlite3_vtab_in_next\"] = wasmExports[\"sqlite3_vtab_in_next\"];\n\t\tModule[\"_sqlite3_aggregate_context\"] = wasmExports[\"sqlite3_aggregate_context\"];\n\t\tModule[\"_sqlite3_get_auxdata\"] = wasmExports[\"sqlite3_get_auxdata\"];\n\t\tModule[\"_sqlite3_set_auxdata\"] = wasmExports[\"sqlite3_set_auxdata\"];\n\t\tModule[\"_sqlite3_column_count\"] = wasmExports[\"sqlite3_column_count\"];\n\t\tModule[\"_sqlite3_data_count\"] = wasmExports[\"sqlite3_data_count\"];\n\t\tModule[\"_sqlite3_column_blob\"] = wasmExports[\"sqlite3_column_blob\"];\n\t\tModule[\"_sqlite3_column_bytes\"] = wasmExports[\"sqlite3_column_bytes\"];\n\t\tModule[\"_sqlite3_column_double\"] = wasmExports[\"sqlite3_column_double\"];\n\t\tModule[\"_sqlite3_column_value\"] = wasmExports[\"sqlite3_column_value\"];\n\t\tModule[\"_sqlite3_column_decltype\"] = wasmExports[\"sqlite3_column_decltype\"];\n\t\tModule[\"_sqlite3_column_database_name\"] = wasmExports[\"sqlite3_column_database_name\"];\n\t\tModule[\"_sqlite3_column_table_name\"] = wasmExports[\"sqlite3_column_table_name\"];\n\t\tModule[\"_sqlite3_column_origin_name\"] = wasmExports[\"sqlite3_column_origin_name\"];\n\t\tModule[\"_sqlite3_bind_blob\"] = wasmExports[\"sqlite3_bind_blob\"];\n\t\tModule[\"_sqlite3_bind_double\"] = wasmExports[\"sqlite3_bind_double\"];\n\t\tModule[\"_sqlite3_bind_int\"] = wasmExports[\"sqlite3_bind_int\"];\n\t\tModule[\"_sqlite3_bind_int64\"] = wasmExports[\"sqlite3_bind_int64\"];\n\t\tModule[\"_sqlite3_bind_null\"] = wasmExports[\"sqlite3_bind_null\"];\n\t\tModule[\"_sqlite3_bind_pointer\"] = wasmExports[\"sqlite3_bind_pointer\"];\n\t\tModule[\"_sqlite3_bind_text\"] = wasmExports[\"sqlite3_bind_text\"];\n\t\tModule[\"_sqlite3_bind_parameter_count\"] = wasmExports[\"sqlite3_bind_parameter_count\"];\n\t\tModule[\"_sqlite3_bind_parameter_name\"] = wasmExports[\"sqlite3_bind_parameter_name\"];\n\t\tModule[\"_sqlite3_bind_parameter_index\"] = wasmExports[\"sqlite3_bind_parameter_index\"];\n\t\tModule[\"_sqlite3_db_handle\"] = wasmExports[\"sqlite3_db_handle\"];\n\t\tModule[\"_sqlite3_stmt_readonly\"] = wasmExports[\"sqlite3_stmt_readonly\"];\n\t\tModule[\"_sqlite3_stmt_isexplain\"] = wasmExports[\"sqlite3_stmt_isexplain\"];\n\t\tModule[\"_sqlite3_stmt_explain\"] = wasmExports[\"sqlite3_stmt_explain\"];\n\t\tModule[\"_sqlite3_stmt_busy\"] = wasmExports[\"sqlite3_stmt_busy\"];\n\t\tModule[\"_sqlite3_next_stmt\"] = wasmExports[\"sqlite3_next_stmt\"];\n\t\tModule[\"_sqlite3_stmt_status\"] = wasmExports[\"sqlite3_stmt_status\"];\n\t\tModule[\"_sqlite3_sql\"] = wasmExports[\"sqlite3_sql\"];\n\t\tModule[\"_sqlite3_expanded_sql\"] = wasmExports[\"sqlite3_expanded_sql\"];\n\t\tModule[\"_sqlite3_preupdate_old\"] = wasmExports[\"sqlite3_preupdate_old\"];\n\t\tModule[\"_sqlite3_preupdate_count\"] = wasmExports[\"sqlite3_preupdate_count\"];\n\t\tModule[\"_sqlite3_preupdate_depth\"] = wasmExports[\"sqlite3_preupdate_depth\"];\n\t\tModule[\"_sqlite3_preupdate_blobwrite\"] = wasmExports[\"sqlite3_preupdate_blobwrite\"];\n\t\tModule[\"_sqlite3_preupdate_new\"] = wasmExports[\"sqlite3_preupdate_new\"];\n\t\tModule[\"_sqlite3_value_numeric_type\"] = wasmExports[\"sqlite3_value_numeric_type\"];\n\t\tModule[\"_sqlite3_set_authorizer\"] = wasmExports[\"sqlite3_set_authorizer\"];\n\t\tModule[\"_sqlite3_strglob\"] = wasmExports[\"sqlite3_strglob\"];\n\t\tModule[\"_sqlite3_strlike\"] = wasmExports[\"sqlite3_strlike\"];\n\t\tModule[\"_sqlite3_auto_extension\"] = wasmExports[\"sqlite3_auto_extension\"];\n\t\tModule[\"_sqlite3_cancel_auto_extension\"] = wasmExports[\"sqlite3_cancel_auto_extension\"];\n\t\tModule[\"_sqlite3_reset_auto_extension\"] = wasmExports[\"sqlite3_reset_auto_extension\"];\n\t\tModule[\"_sqlite3_prepare_v3\"] = wasmExports[\"sqlite3_prepare_v3\"];\n\t\tModule[\"_sqlite3_create_module\"] = wasmExports[\"sqlite3_create_module\"];\n\t\tModule[\"_sqlite3_create_module_v2\"] = wasmExports[\"sqlite3_create_module_v2\"];\n\t\tModule[\"_sqlite3_drop_modules\"] = wasmExports[\"sqlite3_drop_modules\"];\n\t\tModule[\"_sqlite3_declare_vtab\"] = wasmExports[\"sqlite3_declare_vtab\"];\n\t\tModule[\"_sqlite3_vtab_on_conflict\"] = wasmExports[\"sqlite3_vtab_on_conflict\"];\n\t\tModule[\"_sqlite3_vtab_collation\"] = wasmExports[\"sqlite3_vtab_collation\"];\n\t\tModule[\"_sqlite3_vtab_in\"] = wasmExports[\"sqlite3_vtab_in\"];\n\t\tModule[\"_sqlite3_vtab_rhs_value\"] = wasmExports[\"sqlite3_vtab_rhs_value\"];\n\t\tModule[\"_sqlite3_vtab_distinct\"] = wasmExports[\"sqlite3_vtab_distinct\"];\n\t\tModule[\"_sqlite3_keyword_name\"] = wasmExports[\"sqlite3_keyword_name\"];\n\t\tModule[\"_sqlite3_keyword_count\"] = wasmExports[\"sqlite3_keyword_count\"];\n\t\tModule[\"_sqlite3_keyword_check\"] = wasmExports[\"sqlite3_keyword_check\"];\n\t\tModule[\"_sqlite3_complete\"] = wasmExports[\"sqlite3_complete\"];\n\t\tModule[\"_sqlite3_libversion\"] = wasmExports[\"sqlite3_libversion\"];\n\t\tModule[\"_sqlite3_libversion_number\"] = wasmExports[\"sqlite3_libversion_number\"];\n\t\tModule[\"_sqlite3_shutdown\"] = wasmExports[\"sqlite3_shutdown\"];\n\t\tModule[\"_sqlite3_last_insert_rowid\"] = wasmExports[\"sqlite3_last_insert_rowid\"];\n\t\tModule[\"_sqlite3_set_last_insert_rowid\"] = wasmExports[\"sqlite3_set_last_insert_rowid\"];\n\t\tModule[\"_sqlite3_changes64\"] = wasmExports[\"sqlite3_changes64\"];\n\t\tModule[\"_sqlite3_changes\"] = wasmExports[\"sqlite3_changes\"];\n\t\tModule[\"_sqlite3_total_changes64\"] = wasmExports[\"sqlite3_total_changes64\"];\n\t\tModule[\"_sqlite3_total_changes\"] = wasmExports[\"sqlite3_total_changes\"];\n\t\tModule[\"_sqlite3_txn_state\"] = wasmExports[\"sqlite3_txn_state\"];\n\t\tModule[\"_sqlite3_close_v2\"] = wasmExports[\"sqlite3_close_v2\"];\n\t\tModule[\"_sqlite3_busy_handler\"] = wasmExports[\"sqlite3_busy_handler\"];\n\t\tModule[\"_sqlite3_progress_handler\"] = wasmExports[\"sqlite3_progress_handler\"];\n\t\tModule[\"_sqlite3_busy_timeout\"] = wasmExports[\"sqlite3_busy_timeout\"];\n\t\tModule[\"_sqlite3_interrupt\"] = wasmExports[\"sqlite3_interrupt\"];\n\t\tModule[\"_sqlite3_is_interrupted\"] = wasmExports[\"sqlite3_is_interrupted\"];\n\t\tModule[\"_sqlite3_create_function\"] = wasmExports[\"sqlite3_create_function\"];\n\t\tModule[\"_sqlite3_create_function_v2\"] = wasmExports[\"sqlite3_create_function_v2\"];\n\t\tModule[\"_sqlite3_create_window_function\"] = wasmExports[\"sqlite3_create_window_function\"];\n\t\tModule[\"_sqlite3_overload_function\"] = wasmExports[\"sqlite3_overload_function\"];\n\t\tModule[\"_sqlite3_trace_v2\"] = wasmExports[\"sqlite3_trace_v2\"];\n\t\tModule[\"_sqlite3_commit_hook\"] = wasmExports[\"sqlite3_commit_hook\"];\n\t\tModule[\"_sqlite3_update_hook\"] = wasmExports[\"sqlite3_update_hook\"];\n\t\tModule[\"_sqlite3_rollback_hook\"] = wasmExports[\"sqlite3_rollback_hook\"];\n\t\tModule[\"_sqlite3_preupdate_hook\"] = wasmExports[\"sqlite3_preupdate_hook\"];\n\t\tModule[\"_sqlite3_set_errmsg\"] = wasmExports[\"sqlite3_set_errmsg\"];\n\t\tModule[\"_sqlite3_error_offset\"] = wasmExports[\"sqlite3_error_offset\"];\n\t\tModule[\"_sqlite3_errcode\"] = wasmExports[\"sqlite3_errcode\"];\n\t\tModule[\"_sqlite3_extended_errcode\"] = wasmExports[\"sqlite3_extended_errcode\"];\n\t\tModule[\"_sqlite3_errstr\"] = wasmExports[\"sqlite3_errstr\"];\n\t\tModule[\"_sqlite3_limit\"] = wasmExports[\"sqlite3_limit\"];\n\t\tModule[\"_sqlite3_open\"] = wasmExports[\"sqlite3_open\"];\n\t\tModule[\"_sqlite3_open_v2\"] = wasmExports[\"sqlite3_open_v2\"];\n\t\tModule[\"_sqlite3_create_collation\"] = wasmExports[\"sqlite3_create_collation\"];\n\t\tModule[\"_sqlite3_create_collation_v2\"] = wasmExports[\"sqlite3_create_collation_v2\"];\n\t\tModule[\"_sqlite3_collation_needed\"] = wasmExports[\"sqlite3_collation_needed\"];\n\t\tModule[\"_sqlite3_get_autocommit\"] = wasmExports[\"sqlite3_get_autocommit\"];\n\t\tModule[\"_sqlite3_table_column_metadata\"] = wasmExports[\"sqlite3_table_column_metadata\"];\n\t\tModule[\"_sqlite3_extended_result_codes\"] = wasmExports[\"sqlite3_extended_result_codes\"];\n\t\tModule[\"_sqlite3_uri_key\"] = wasmExports[\"sqlite3_uri_key\"];\n\t\tModule[\"_sqlite3_uri_int64\"] = wasmExports[\"sqlite3_uri_int64\"];\n\t\tModule[\"_sqlite3_db_name\"] = wasmExports[\"sqlite3_db_name\"];\n\t\tModule[\"_sqlite3_db_filename\"] = wasmExports[\"sqlite3_db_filename\"];\n\t\tModule[\"_sqlite3_db_readonly\"] = wasmExports[\"sqlite3_db_readonly\"];\n\t\tModule[\"_sqlite3_compileoption_used\"] = wasmExports[\"sqlite3_compileoption_used\"];\n\t\tModule[\"_sqlite3_compileoption_get\"] = wasmExports[\"sqlite3_compileoption_get\"];\n\t\tModule[\"_sqlite3session_diff\"] = wasmExports[\"sqlite3session_diff\"];\n\t\tModule[\"_sqlite3session_attach\"] = wasmExports[\"sqlite3session_attach\"];\n\t\tModule[\"_sqlite3session_create\"] = wasmExports[\"sqlite3session_create\"];\n\t\tModule[\"_sqlite3session_delete\"] = wasmExports[\"sqlite3session_delete\"];\n\t\tModule[\"_sqlite3session_table_filter\"] = wasmExports[\"sqlite3session_table_filter\"];\n\t\tModule[\"_sqlite3session_changeset\"] = wasmExports[\"sqlite3session_changeset\"];\n\t\tModule[\"_sqlite3session_changeset_strm\"] = wasmExports[\"sqlite3session_changeset_strm\"];\n\t\tModule[\"_sqlite3session_patchset_strm\"] = wasmExports[\"sqlite3session_patchset_strm\"];\n\t\tModule[\"_sqlite3session_patchset\"] = wasmExports[\"sqlite3session_patchset\"];\n\t\tModule[\"_sqlite3session_enable\"] = wasmExports[\"sqlite3session_enable\"];\n\t\tModule[\"_sqlite3session_indirect\"] = wasmExports[\"sqlite3session_indirect\"];\n\t\tModule[\"_sqlite3session_isempty\"] = wasmExports[\"sqlite3session_isempty\"];\n\t\tModule[\"_sqlite3session_memory_used\"] = wasmExports[\"sqlite3session_memory_used\"];\n\t\tModule[\"_sqlite3session_object_config\"] = wasmExports[\"sqlite3session_object_config\"];\n\t\tModule[\"_sqlite3session_changeset_size\"] = wasmExports[\"sqlite3session_changeset_size\"];\n\t\tModule[\"_sqlite3changeset_start\"] = wasmExports[\"sqlite3changeset_start\"];\n\t\tModule[\"_sqlite3changeset_start_v2\"] = wasmExports[\"sqlite3changeset_start_v2\"];\n\t\tModule[\"_sqlite3changeset_start_strm\"] = wasmExports[\"sqlite3changeset_start_strm\"];\n\t\tModule[\"_sqlite3changeset_start_v2_strm\"] = wasmExports[\"sqlite3changeset_start_v2_strm\"];\n\t\tModule[\"_sqlite3changeset_next\"] = wasmExports[\"sqlite3changeset_next\"];\n\t\tModule[\"_sqlite3changeset_op\"] = wasmExports[\"sqlite3changeset_op\"];\n\t\tModule[\"_sqlite3changeset_pk\"] = wasmExports[\"sqlite3changeset_pk\"];\n\t\tModule[\"_sqlite3changeset_old\"] = wasmExports[\"sqlite3changeset_old\"];\n\t\tModule[\"_sqlite3changeset_new\"] = wasmExports[\"sqlite3changeset_new\"];\n\t\tModule[\"_sqlite3changeset_conflict\"] = wasmExports[\"sqlite3changeset_conflict\"];\n\t\tModule[\"_sqlite3changeset_fk_conflicts\"] = wasmExports[\"sqlite3changeset_fk_conflicts\"];\n\t\tModule[\"_sqlite3changeset_finalize\"] = wasmExports[\"sqlite3changeset_finalize\"];\n\t\tModule[\"_sqlite3changeset_invert\"] = wasmExports[\"sqlite3changeset_invert\"];\n\t\tModule[\"_sqlite3changeset_invert_strm\"] = wasmExports[\"sqlite3changeset_invert_strm\"];\n\t\tModule[\"_sqlite3changeset_apply_v2\"] = wasmExports[\"sqlite3changeset_apply_v2\"];\n\t\tModule[\"_sqlite3changeset_apply_v3\"] = wasmExports[\"sqlite3changeset_apply_v3\"];\n\t\tModule[\"_sqlite3changeset_apply\"] = wasmExports[\"sqlite3changeset_apply\"];\n\t\tModule[\"_sqlite3changeset_apply_v3_strm\"] = wasmExports[\"sqlite3changeset_apply_v3_strm\"];\n\t\tModule[\"_sqlite3changeset_apply_v2_strm\"] = wasmExports[\"sqlite3changeset_apply_v2_strm\"];\n\t\tModule[\"_sqlite3changeset_apply_strm\"] = wasmExports[\"sqlite3changeset_apply_strm\"];\n\t\tModule[\"_sqlite3changegroup_new\"] = wasmExports[\"sqlite3changegroup_new\"];\n\t\tModule[\"_sqlite3changegroup_add\"] = wasmExports[\"sqlite3changegroup_add\"];\n\t\tModule[\"_sqlite3changegroup_output\"] = wasmExports[\"sqlite3changegroup_output\"];\n\t\tModule[\"_sqlite3changegroup_add_strm\"] = wasmExports[\"sqlite3changegroup_add_strm\"];\n\t\tModule[\"_sqlite3changegroup_output_strm\"] = wasmExports[\"sqlite3changegroup_output_strm\"];\n\t\tModule[\"_sqlite3changegroup_delete\"] = wasmExports[\"sqlite3changegroup_delete\"];\n\t\tModule[\"_sqlite3changeset_concat\"] = wasmExports[\"sqlite3changeset_concat\"];\n\t\tModule[\"_sqlite3changeset_concat_strm\"] = wasmExports[\"sqlite3changeset_concat_strm\"];\n\t\tModule[\"_sqlite3session_config\"] = wasmExports[\"sqlite3session_config\"];\n\t\tModule[\"_sqlite3_sourceid\"] = wasmExports[\"sqlite3_sourceid\"];\n\t\tModule[\"_sqlite3__wasm_pstack_ptr\"] = wasmExports[\"sqlite3__wasm_pstack_ptr\"];\n\t\tModule[\"_sqlite3__wasm_pstack_restore\"] = wasmExports[\"sqlite3__wasm_pstack_restore\"];\n\t\tModule[\"_sqlite3__wasm_pstack_alloc\"] = wasmExports[\"sqlite3__wasm_pstack_alloc\"];\n\t\tModule[\"_sqlite3__wasm_pstack_remaining\"] = wasmExports[\"sqlite3__wasm_pstack_remaining\"];\n\t\tModule[\"_sqlite3__wasm_pstack_quota\"] = wasmExports[\"sqlite3__wasm_pstack_quota\"];\n\t\tModule[\"_sqlite3__wasm_test_struct\"] = wasmExports[\"sqlite3__wasm_test_struct\"];\n\t\tModule[\"_sqlite3__wasm_enum_json\"] = wasmExports[\"sqlite3__wasm_enum_json\"];\n\t\tModule[\"_sqlite3__wasm_vfs_unlink\"] = wasmExports[\"sqlite3__wasm_vfs_unlink\"];\n\t\tModule[\"_sqlite3__wasm_db_vfs\"] = wasmExports[\"sqlite3__wasm_db_vfs\"];\n\t\tModule[\"_sqlite3__wasm_db_reset\"] = wasmExports[\"sqlite3__wasm_db_reset\"];\n\t\tModule[\"_sqlite3__wasm_db_export_chunked\"] = wasmExports[\"sqlite3__wasm_db_export_chunked\"];\n\t\tModule[\"_sqlite3__wasm_db_serialize\"] = wasmExports[\"sqlite3__wasm_db_serialize\"];\n\t\tModule[\"_sqlite3__wasm_vfs_create_file\"] = wasmExports[\"sqlite3__wasm_vfs_create_file\"];\n\t\tModule[\"_sqlite3__wasm_posix_create_file\"] = wasmExports[\"sqlite3__wasm_posix_create_file\"];\n\t\tModule[\"_sqlite3__wasm_kvvfsMakeKey\"] = wasmExports[\"sqlite3__wasm_kvvfsMakeKey\"];\n\t\tModule[\"_sqlite3__wasm_kvvfs_methods\"] = wasmExports[\"sqlite3__wasm_kvvfs_methods\"];\n\t\tModule[\"_sqlite3__wasm_vtab_config\"] = wasmExports[\"sqlite3__wasm_vtab_config\"];\n\t\tModule[\"_sqlite3__wasm_db_config_ip\"] = wasmExports[\"sqlite3__wasm_db_config_ip\"];\n\t\tModule[\"_sqlite3__wasm_db_config_pii\"] = wasmExports[\"sqlite3__wasm_db_config_pii\"];\n\t\tModule[\"_sqlite3__wasm_db_config_s\"] = wasmExports[\"sqlite3__wasm_db_config_s\"];\n\t\tModule[\"_sqlite3__wasm_config_i\"] = wasmExports[\"sqlite3__wasm_config_i\"];\n\t\tModule[\"_sqlite3__wasm_config_ii\"] = wasmExports[\"sqlite3__wasm_config_ii\"];\n\t\tModule[\"_sqlite3__wasm_config_j\"] = wasmExports[\"sqlite3__wasm_config_j\"];\n\t\tModule[\"_sqlite3__wasm_qfmt_token\"] = wasmExports[\"sqlite3__wasm_qfmt_token\"];\n\t\tModule[\"_sqlite3__wasm_kvvfs_decode\"] = wasmExports[\"sqlite3__wasm_kvvfs_decode\"];\n\t\tModule[\"_sqlite3__wasm_kvvfs_encode\"] = wasmExports[\"sqlite3__wasm_kvvfs_encode\"];\n\t\tModule[\"_sqlite3__wasm_init_wasmfs\"] = wasmExports[\"sqlite3__wasm_init_wasmfs\"];\n\t\tModule[\"_sqlite3__wasm_test_intptr\"] = wasmExports[\"sqlite3__wasm_test_intptr\"];\n\t\tModule[\"_sqlite3__wasm_test_voidptr\"] = wasmExports[\"sqlite3__wasm_test_voidptr\"];\n\t\tModule[\"_sqlite3__wasm_test_int64_max\"] = wasmExports[\"sqlite3__wasm_test_int64_max\"];\n\t\tModule[\"_sqlite3__wasm_test_int64_min\"] = wasmExports[\"sqlite3__wasm_test_int64_min\"];\n\t\tModule[\"_sqlite3__wasm_test_int64_times2\"] = wasmExports[\"sqlite3__wasm_test_int64_times2\"];\n\t\tModule[\"_sqlite3__wasm_test_int64_minmax\"] = wasmExports[\"sqlite3__wasm_test_int64_minmax\"];\n\t\tModule[\"_sqlite3__wasm_test_int64ptr\"] = wasmExports[\"sqlite3__wasm_test_int64ptr\"];\n\t\tModule[\"_sqlite3__wasm_test_stack_overflow\"] = wasmExports[\"sqlite3__wasm_test_stack_overflow\"];\n\t\tModule[\"_sqlite3__wasm_test_str_hello\"] = wasmExports[\"sqlite3__wasm_test_str_hello\"];\n\t\tModule[\"_sqlite3__wasm_SQLTester_strglob\"] = wasmExports[\"sqlite3__wasm_SQLTester_strglob\"];\n\t\tModule[\"_malloc\"] = wasmExports[\"malloc\"];\n\t\tModule[\"_free\"] = wasmExports[\"free\"];\n\t\tModule[\"_realloc\"] = wasmExports[\"realloc\"];\n\t\t_emscripten_builtin_memalign = wasmExports[\"emscripten_builtin_memalign\"];\n\t\twasmExports[\"_emscripten_stack_restore\"];\n\t\twasmExports[\"_emscripten_stack_alloc\"];\n\t\twasmExports[\"emscripten_stack_get_current\"];\n\t\twasmExports[\"__indirect_function_table\"];\n\t}\n\tvar wasmImports = {\n\t\t__syscall_chmod: ___syscall_chmod,\n\t\t__syscall_faccessat: ___syscall_faccessat,\n\t\t__syscall_fchmod: ___syscall_fchmod,\n\t\t__syscall_fchown32: ___syscall_fchown32,\n\t\t__syscall_fcntl64: ___syscall_fcntl64,\n\t\t__syscall_fstat64: ___syscall_fstat64,\n\t\t__syscall_ftruncate64: ___syscall_ftruncate64,\n\t\t__syscall_getcwd: ___syscall_getcwd,\n\t\t__syscall_ioctl: ___syscall_ioctl,\n\t\t__syscall_lstat64: ___syscall_lstat64,\n\t\t__syscall_mkdirat: ___syscall_mkdirat,\n\t\t__syscall_newfstatat: ___syscall_newfstatat,\n\t\t__syscall_openat: ___syscall_openat,\n\t\t__syscall_readlinkat: ___syscall_readlinkat,\n\t\t__syscall_rmdir: ___syscall_rmdir,\n\t\t__syscall_stat64: ___syscall_stat64,\n\t\t__syscall_unlinkat: ___syscall_unlinkat,\n\t\t__syscall_utimensat: ___syscall_utimensat,\n\t\t_localtime_js: __localtime_js,\n\t\t_mmap_js: __mmap_js,\n\t\t_munmap_js: __munmap_js,\n\t\t_tzset_js: __tzset_js,\n\t\tclock_time_get: _clock_time_get,\n\t\temscripten_date_now: _emscripten_date_now,\n\t\temscripten_get_heap_max: _emscripten_get_heap_max,\n\t\temscripten_get_now: _emscripten_get_now,\n\t\temscripten_resize_heap: _emscripten_resize_heap,\n\t\tenviron_get: _environ_get,\n\t\tenviron_sizes_get: _environ_sizes_get,\n\t\tfd_close: _fd_close,\n\t\tfd_fdstat_get: _fd_fdstat_get,\n\t\tfd_read: _fd_read,\n\t\tfd_seek: _fd_seek,\n\t\tfd_sync: _fd_sync,\n\t\tfd_write: _fd_write,\n\t\tmemory: wasmMemory\n\t};\n\tfunction run() {\n\t\tif (runDependencies > 0) {\n\t\t\tdependenciesFulfilled = run;\n\t\t\treturn;\n\t\t}\n\t\tpreRun();\n\t\tif (runDependencies > 0) {\n\t\t\tdependenciesFulfilled = run;\n\t\t\treturn;\n\t\t}\n\t\tfunction doRun() {\n\t\t\tModule[\"calledRun\"] = true;\n\t\t\tif (ABORT) return;\n\t\t\tinitRuntime();\n\t\t\treadyPromiseResolve?.(Module);\n\t\t\tModule[\"onRuntimeInitialized\"]?.();\n\t\t\tpostRun();\n\t\t}\n\t\tif (Module[\"setStatus\"]) {\n\t\t\tModule[\"setStatus\"](\"Running...\");\n\t\t\tsetTimeout(() => {\n\t\t\t\tsetTimeout(() => Module[\"setStatus\"](\"\"), 1);\n\t\t\t\tdoRun();\n\t\t\t}, 1);\n\t\t} else doRun();\n\t}\n\tvar wasmExports = await createWasm();\n\trun();\n\t/**\n\tpost-js-header.js is to be prepended to other code to create\n\tpost-js.js for use with Emscripten's --post-js flag, so it gets\n\tinjected in the earliest stages of sqlite3InitModule().\n\t\n\tRunning this function will bootstrap the library and return\n\ta Promise to the sqlite3 namespace object.\n\t\n\tIn the canonical builds, this gets called by extern-post-js.c-pp.js\n\t*/\n\tModule.runSQLite3PostLoadInit = async function(sqlite3InitScriptInfo, EmscriptenModule, sqlite3IsUnderTest) {\n\t\t/** ^^^ Don't use Module.postRun, as that runs a different time\n\t\tdepending on whether this file is built with emcc 3.1.x or\n\t\t4.0.x. This function name is intentionally obnoxiously verbose to\n\t\tensure that we don't collide with current and future Emscripten\n\t\tsymbol names. */\n\t\t\"use strict\";\n\t\tdelete EmscriptenModule.runSQLite3PostLoadInit;\n\t\tglobalThis.sqlite3ApiBootstrap = async function sqlite3ApiBootstrap(apiConfig = globalThis.sqlite3ApiConfig || sqlite3ApiBootstrap.defaultConfig) {\n\t\t\tif (sqlite3ApiBootstrap.sqlite3) {\n\t\t\t\t(sqlite3ApiBootstrap.sqlite3.config || console).warn(\"sqlite3ApiBootstrap() called multiple times.\", \"Config and external initializers are ignored on calls after the first.\");\n\t\t\t\treturn sqlite3ApiBootstrap.sqlite3;\n\t\t\t}\n\t\t\tconst config = Object.assign(Object.create(null), {\n\t\t\t\texports: void 0,\n\t\t\t\tmemory: void 0,\n\t\t\t\tbigIntEnabled: !!globalThis.BigInt64Array,\n\t\t\t\tdebug: console.debug.bind(console),\n\t\t\t\twarn: console.warn.bind(console),\n\t\t\t\terror: console.error.bind(console),\n\t\t\t\tlog: console.log.bind(console),\n\t\t\t\twasmfsOpfsDir: \"/opfs\",\n\t\t\t\tuseStdAlloc: false\n\t\t\t}, apiConfig || {});\n\t\t\tObject.assign(config, {\n\t\t\t\tallocExportName: config.useStdAlloc ? \"malloc\" : \"sqlite3_malloc\",\n\t\t\t\tdeallocExportName: config.useStdAlloc ? \"free\" : \"sqlite3_free\",\n\t\t\t\treallocExportName: config.useStdAlloc ? \"realloc\" : \"sqlite3_realloc\"\n\t\t\t});\n\t\t\t[\n\t\t\t\t\"exports\",\n\t\t\t\t\"memory\",\n\t\t\t\t\"functionTable\",\n\t\t\t\t\"wasmfsOpfsDir\"\n\t\t\t].forEach((k) => {\n\t\t\t\tif (\"function\" === typeof config[k]) config[k] = config[k]();\n\t\t\t});\n\t\t\t/**\n\t\t\tThe main sqlite3 binding API gets installed into this object,\n\t\t\tmimicking the C API as closely as we can. The numerous members\n\t\t\tnames with prefixes 'sqlite3_' and 'SQLITE_' behave, insofar as\n\t\t\tpossible, identically to the C-native counterparts, as documented at:\n\t\t\t\n\t\t\thttps://sqlite.org/c3ref/intro.html\n\t\t\t\n\t\t\tA very few exceptions require an additional level of proxy\n\t\t\tfunction or may otherwise require special attention in the WASM\n\t\t\tenvironment, and all such cases are documented somewhere below\n\t\t\tin this file or in sqlite3-api-glue.js. capi members which are\n\t\t\tnot documented are installed as 1-to-1 proxies for their\n\t\t\tC-side counterparts.\n\t\t\t*/\n\t\t\tconst capi = Object.create(null);\n\t\t\t/**\n\t\t\tHolds state which are specific to the WASM-related\n\t\t\tinfrastructure and glue code.\n\t\t\t\n\t\t\tNote that a number of members of this object are injected\n\t\t\tdynamically after the api object is fully constructed, so\n\t\t\tnot all are documented in this file.\n\t\t\t*/\n\t\t\tconst wasm = Object.create(null);\n\t\t\t/** Internal helper for SQLite3Error ctor. */\n\t\t\tconst __rcStr = (rc) => {\n\t\t\t\treturn capi.sqlite3_js_rc_str && capi.sqlite3_js_rc_str(rc) || \"Unknown result code #\" + rc;\n\t\t\t};\n\t\t\t/** Internal helper for SQLite3Error ctor. */\n\t\t\tconst isInt32 = (n) => \"number\" === typeof n && n === (n | 0) && n <= 2147483647 && n >= -2147483648;\n\t\t\t/**\n\t\t\tAn Error subclass specifically for reporting DB-level errors and\n\t\t\tenabling clients to unambiguously identify such exceptions.\n\t\t\tThe C-level APIs never throw, but some of the higher-level\n\t\t\tC-style APIs do and the object-oriented APIs use exceptions\n\t\t\texclusively to report errors.\n\t\t\t*/\n\t\t\tclass SQLite3Error extends Error {\n\t\t\t\t/**\n\t\t\t\tConstructs this object with a message depending on its arguments:\n\t\t\t\t\n\t\t\t\tIf its first argument is an integer, it is assumed to be\n\t\t\t\tan SQLITE_... result code and it is passed to\n\t\t\t\tsqlite3.capi.sqlite3_js_rc_str() to stringify it.\n\t\t\t\t\n\t\t\t\tIf called with exactly 2 arguments and the 2nd is an object,\n\t\t\t\tthat object is treated as the 2nd argument to the parent\n\t\t\t\tconstructor.\n\t\t\t\t\n\t\t\t\tThe exception's message is created by concatenating its\n\t\t\t\targuments with a space between each, except for the\n\t\t\t\ttwo-args-with-an-object form and that the first argument will\n\t\t\t\tget coerced to a string, as described above, if it's an\n\t\t\t\tinteger.\n\t\t\t\t\n\t\t\t\tIf passed an integer first argument, the error object's\n\t\t\t\t`resultCode` member will be set to the given integer value,\n\t\t\t\telse it will be set to capi.SQLITE_ERROR.\n\t\t\t\t*/\n\t\t\t\tconstructor(...args) {\n\t\t\t\t\tlet rc;\n\t\t\t\t\tif (args.length) if (isInt32(args[0])) {\n\t\t\t\t\t\trc = args[0];\n\t\t\t\t\t\tif (1 === args.length) super(__rcStr(args[0]));\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tconst rcStr = __rcStr(rc);\n\t\t\t\t\t\t\tif (\"object\" === typeof args[1]) super(rcStr, args[1]);\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\targs[0] = rcStr + \":\";\n\t\t\t\t\t\t\t\tsuper(args.join(\" \"));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (2 === args.length && \"object\" === typeof args[1]) super(...args);\n\t\t\t\t\telse super(args.join(\" \"));\n\t\t\t\t\tthis.resultCode = rc || capi.SQLITE_ERROR;\n\t\t\t\t\tthis.name = \"SQLite3Error\";\n\t\t\t\t}\n\t\t\t}\n\t\t\t/**\n\t\t\tFunctionally equivalent to the SQLite3Error constructor but may\n\t\t\tbe used as part of an expression, e.g.:\n\t\t\t\n\t\t\t```\n\t\t\treturn someFunction(x) || SQLite3Error.toss(...);\n\t\t\t```\n\t\t\t*/\n\t\t\tSQLite3Error.toss = (...args) => {\n\t\t\t\tthrow new SQLite3Error(...args);\n\t\t\t};\n\t\t\tconst toss3 = SQLite3Error.toss;\n\t\t\tif (config.wasmfsOpfsDir && !/^\\/[^/]+$/.test(config.wasmfsOpfsDir)) toss3(\"config.wasmfsOpfsDir must be falsy or in the form '/dir-name'.\");\n\t\t\t/**\n\t\t\tReturns true if the given BigInt value is small enough to fit\n\t\t\tinto an int64 value, else false.\n\t\t\t*/\n\t\t\tconst bigIntFits64 = function f(b) {\n\t\t\t\tif (!f._max) {\n\t\t\t\t\tf._max = BigInt(\"0x7fffffffffffffff\");\n\t\t\t\t\tf._min = ~f._max;\n\t\t\t\t}\n\t\t\t\treturn b >= f._min && b <= f._max;\n\t\t\t};\n\t\t\t/**\n\t\t\tReturns true if the given BigInt value is small enough to fit\n\t\t\tinto an int32, else false.\n\t\t\t*/\n\t\t\tconst bigIntFits32 = (b) => b >= -2147483647n - 1n && b <= 2147483647n;\n\t\t\t/**\n\t\t\tReturns true if the given BigInt value is small enough to fit\n\t\t\tinto a double value without loss of precision, else false.\n\t\t\t*/\n\t\t\tconst bigIntFitsDouble = function f(b) {\n\t\t\t\tif (!f._min) {\n\t\t\t\t\tf._min = Number.MIN_SAFE_INTEGER;\n\t\t\t\t\tf._max = Number.MAX_SAFE_INTEGER;\n\t\t\t\t}\n\t\t\t\treturn b >= f._min && b <= f._max;\n\t\t\t};\n\t\t\t/** Returns v if v appears to be a TypedArray, else false. */\n\t\t\tconst isTypedArray = (v) => {\n\t\t\t\treturn v && v.constructor && isInt32(v.constructor.BYTES_PER_ELEMENT) ? v : false;\n\t\t\t};\n\t\t\t/**\n\t\t\tReturns true if v appears to be one of our bind()-able TypedArray\n\t\t\ttypes: Uint8Array or Int8Array or ArrayBuffer. Support for\n\t\t\tTypedArrays with element sizes >1 is a potential TODO just\n\t\t\twaiting on a use case to justify them. Until then, their `buffer`\n\t\t\tproperty can be used to pass them as an ArrayBuffer. If it's not\n\t\t\ta bindable array type, a falsy value is returned.\n\t\t\t*/\n\t\t\tconst isBindableTypedArray = (v) => v && (v instanceof Uint8Array || v instanceof Int8Array || v instanceof ArrayBuffer);\n\t\t\t/**\n\t\t\tReturns true if v appears to be one of the TypedArray types\n\t\t\twhich is legal for holding SQL code (as opposed to binary blobs).\n\t\t\t\n\t\t\tCurrently this is the same as isBindableTypedArray() but it\n\t\t\tseems likely that we'll eventually want to add Uint32Array\n\t\t\tand friends to the isBindableTypedArray() list but not to the\n\t\t\tisSQLableTypedArray() list.\n\t\t\t*/\n\t\t\tconst isSQLableTypedArray = (v) => v && (v instanceof Uint8Array || v instanceof Int8Array || v instanceof ArrayBuffer);\n\t\t\t/** Returns true if isBindableTypedArray(v) does, else throws with a message\n\t\t\tthat v is not a supported TypedArray value. */\n\t\t\tconst affirmBindableTypedArray = (v) => isBindableTypedArray(v) || toss3(\"Value is not of a supported TypedArray type.\");\n\t\t\t/**\n\t\t\tIf v is-a Array, its join(\"\") result is returned.  If\n\t\t\tisSQLableTypedArray(v) is true then wasm.typedArrayToString(v) is\n\t\t\treturned. If it looks like a WASM pointer, wasm.cstrToJs(v) is\n\t\t\treturned. Else v is returned as-is.\n\t\t\t\n\t\t\tReminder to self: the \"return as-is\" instead of returning ''+v is\n\t\t\targuably a design mistake but changing it is risky at this point.\n\t\t\t*/\n\t\t\tconst flexibleString = function(v) {\n\t\t\t\tif (isSQLableTypedArray(v)) return wasm.typedArrayToString(v instanceof ArrayBuffer ? new Uint8Array(v) : v, 0, v.length);\n\t\t\t\telse if (Array.isArray(v)) return v.join(\"\");\n\t\t\t\telse if (wasm.isPtr(v)) v = wasm.cstrToJs(v);\n\t\t\t\treturn v;\n\t\t\t};\n\t\t\t/**\n\t\t\tAn Error subclass specifically for reporting Wasm-level malloc()\n\t\t\tfailure and enabling clients to unambiguously identify such\n\t\t\texceptions.\n\t\t\t*/\n\t\t\tclass WasmAllocError extends Error {\n\t\t\t\t/**\n\t\t\t\tIf called with 2 arguments and the 2nd one is an object, it\n\t\t\t\tbehaves like the Error constructor, else it concatenates all\n\t\t\t\targuments together with a single space between each to\n\t\t\t\tconstruct an error message string. As a special case, if\n\t\t\t\tcalled with no arguments then it uses a default error\n\t\t\t\tmessage.\n\t\t\t\t*/\n\t\t\t\tconstructor(...args) {\n\t\t\t\t\tif (2 === args.length && \"object\" === typeof args[1]) super(...args);\n\t\t\t\t\telse if (args.length) super(args.join(\" \"));\n\t\t\t\t\telse super(\"Allocation failed.\");\n\t\t\t\t\tthis.resultCode = capi.SQLITE_NOMEM;\n\t\t\t\t\tthis.name = \"WasmAllocError\";\n\t\t\t\t}\n\t\t\t}\n\t\t\t/**\n\t\t\tFunctionally equivalent to the WasmAllocError constructor but may\n\t\t\tbe used as part of an expression, e.g.:\n\t\t\t\n\t\t\t```\n\t\t\treturn someAllocatingFunction(x) || WasmAllocError.toss(...);\n\t\t\t```\n\t\t\t*/\n\t\t\tWasmAllocError.toss = (...args) => {\n\t\t\t\tthrow new WasmAllocError(...args);\n\t\t\t};\n\t\t\tObject.assign(capi, {\n\t\t\t\tsqlite3_bind_blob: void 0,\n\t\t\t\tsqlite3_bind_text: void 0,\n\t\t\t\tsqlite3_create_function_v2: (pDb, funcName, nArg, eTextRep, pApp, xFunc, xStep, xFinal, xDestroy) => {},\n\t\t\t\tsqlite3_create_function: (pDb, funcName, nArg, eTextRep, pApp, xFunc, xStep, xFinal) => {},\n\t\t\t\tsqlite3_create_window_function: (pDb, funcName, nArg, eTextRep, pApp, xStep, xFinal, xValue, xInverse, xDestroy) => {},\n\t\t\t\tsqlite3_prepare_v3: (dbPtr, sql, sqlByteLen, prepFlags, stmtPtrPtr, strPtrPtr) => {},\n\t\t\t\tsqlite3_prepare_v2: (dbPtr, sql, sqlByteLen, stmtPtrPtr, strPtrPtr) => {},\n\t\t\t\tsqlite3_exec: (pDb, sql, callback, pVoid, pErrMsg) => {},\n\t\t\t\tsqlite3_randomness: (n, outPtr) => {}\n\t\t\t});\n\t\t\t/**\n\t\t\tVarious internal-use utilities are added here as needed. They\n\t\t\tare bound to an object only so that we have access to them in\n\t\t\tthe differently-scoped steps of the API bootstrapping\n\t\t\tprocess. At the end of the API setup process, this object gets\n\t\t\tremoved. These are NOT part of the public API.\n\t\t\t*/\n\t\t\tconst util = {\n\t\t\t\taffirmBindableTypedArray,\n\t\t\t\tflexibleString,\n\t\t\t\tbigIntFits32,\n\t\t\t\tbigIntFits64,\n\t\t\t\tbigIntFitsDouble,\n\t\t\t\tisBindableTypedArray,\n\t\t\t\tisInt32,\n\t\t\t\tisSQLableTypedArray,\n\t\t\t\tisTypedArray,\n\t\t\t\tisUIThread: () => globalThis.window === globalThis && !!globalThis.document,\n\t\t\t\ttoss: function(...args) {\n\t\t\t\t\tthrow new Error(args.join(\" \"));\n\t\t\t\t},\n\t\t\t\ttoss3,\n\t\t\t\ttypedArrayPart: wasm.typedArrayPart,\n\t\t\t\tassert: function(arg, msg) {\n\t\t\t\t\tif (!arg) util.toss(\"Assertion failed:\", msg);\n\t\t\t\t},\n\t\t\t\taffirmDbHeader: function(bytes) {\n\t\t\t\t\tif (bytes instanceof ArrayBuffer) bytes = new Uint8Array(bytes);\n\t\t\t\t\tconst header = \"SQLite format 3\";\n\t\t\t\t\tif (15 > bytes.byteLength) toss3(\"Input does not contain an SQLite3 database header.\");\n\t\t\t\t\tfor (let i = 0; i < 15; ++i) if (header.charCodeAt(i) !== bytes[i]) toss3(\"Input does not contain an SQLite3 database header.\");\n\t\t\t\t},\n\t\t\t\taffirmIsDb: function(bytes) {\n\t\t\t\t\tif (bytes instanceof ArrayBuffer) bytes = new Uint8Array(bytes);\n\t\t\t\t\tconst n = bytes.byteLength;\n\t\t\t\t\tif (n < 512 || n % 512 !== 0) toss3(\"Byte array size\", n, \"is invalid for an SQLite3 db.\");\n\t\t\t\t\tutil.affirmDbHeader(bytes);\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\twasm.X properties which are used for configuring the wasm\n\t\t\tenvironment via whwashutil.js. This object gets fleshed out with\n\t\t\ta number of WASM-specific utilities, in sqlite3-api-glue.c-pp.js.\n\t\t\t*/\n\t\t\tObject.assign(wasm, {\n\t\t\t\texports: config.exports || toss3(\"Missing API config.exports (WASM module exports).\"),\n\t\t\t\tmemory: config.memory || config.exports[\"memory\"] || toss3(\"API config object requires a WebAssembly.Memory object\", \"in either config.exports.memory (exported)\", \"or config.memory (imported).\"),\n\t\t\t\tpointerSize: \"number\" === typeof config.exports.sqlite3_libversion() ? 4 : 8,\n\t\t\t\tbigIntEnabled: !!config.bigIntEnabled,\n\t\t\t\tfunctionTable: config.functionTable,\n\t\t\t\talloc: void 0,\n\t\t\t\trealloc: void 0,\n\t\t\t\tdealloc: void 0\n\t\t\t});\n\t\t\t/**\n\t\t\twasm.alloc()'s srcTypedArray.byteLength bytes,\n\t\t\tpopulates them with the values from the source\n\t\t\tTypedArray, and returns the pointer to that memory. The\n\t\t\treturned pointer must eventually be passed to\n\t\t\twasm.dealloc() to clean it up.\n\t\t\t\n\t\t\tThe argument may be a Uint8Array, Int8Array, or ArrayBuffer,\n\t\t\tand it throws if passed any other type.\n\t\t\t\n\t\t\tAs a special case, to avoid further special cases where\n\t\t\tthis is used, if srcTypedArray.byteLength is 0, it\n\t\t\tallocates a single byte and sets it to the value\n\t\t\t0. Even in such cases, calls must behave as if the\n\t\t\tallocated memory has exactly srcTypedArray.byteLength\n\t\t\tbytes.\n\t\t\t*/\n\t\t\twasm.allocFromTypedArray = function(srcTypedArray) {\n\t\t\t\tif (srcTypedArray instanceof ArrayBuffer) srcTypedArray = new Uint8Array(srcTypedArray);\n\t\t\t\taffirmBindableTypedArray(srcTypedArray);\n\t\t\t\tconst pRet = wasm.alloc(srcTypedArray.byteLength || 1);\n\t\t\t\twasm.heapForSize(srcTypedArray.constructor).set(srcTypedArray.byteLength ? srcTypedArray : [0], Number(pRet));\n\t\t\t\treturn pRet;\n\t\t\t};\n\t\t\t{\n\t\t\t\tconst keyAlloc = config.allocExportName, keyDealloc = config.deallocExportName, keyRealloc = config.reallocExportName;\n\t\t\t\tfor (const key of [\n\t\t\t\t\tkeyAlloc,\n\t\t\t\t\tkeyDealloc,\n\t\t\t\t\tkeyRealloc\n\t\t\t\t]) if (!(wasm.exports[key] instanceof Function)) toss3(\"Missing required exports[\", key, \"] function.\");\n\t\t\t\twasm.alloc = function f(n) {\n\t\t\t\t\treturn f.impl(n) || WasmAllocError.toss(\"Failed to allocate\", n, \" bytes.\");\n\t\t\t\t};\n\t\t\t\twasm.alloc.impl = wasm.exports[keyAlloc];\n\t\t\t\twasm.realloc = function f(m, n) {\n\t\t\t\t\tconst m2 = f.impl(wasm.ptr.coerce(m), n);\n\t\t\t\t\treturn n ? m2 || WasmAllocError.toss(\"Failed to reallocate\", n, \" bytes.\") : wasm.ptr.null;\n\t\t\t\t};\n\t\t\t\twasm.realloc.impl = wasm.exports[keyRealloc];\n\t\t\t\twasm.dealloc = function f(m) {\n\t\t\t\t\tf.impl(wasm.ptr.coerce(m));\n\t\t\t\t};\n\t\t\t\twasm.dealloc.impl = wasm.exports[keyDealloc];\n\t\t\t}\n\t\t\t/**\n\t\t\tReports info about compile-time options using\n\t\t\tsqlite3_compileoption_get() and sqlite3_compileoption_used(). It\n\t\t\thas several distinct uses:\n\t\t\t\n\t\t\tIf optName is an array then it is expected to be a list of\n\t\t\tcompilation options and this function returns an object\n\t\t\twhich maps each such option to true or false, indicating\n\t\t\twhether or not the given option was included in this\n\t\t\tbuild. That object is returned.\n\t\t\t\n\t\t\tIf optName is an object, its keys are expected to be compilation\n\t\t\toptions and this function sets each entry to true or false,\n\t\t\tindicating whether the compilation option was used or not. That\n\t\t\tobject is returned.\n\t\t\t\n\t\t\tIf passed no arguments then it returns an object mapping\n\t\t\tall known compilation options to their compile-time values,\n\t\t\tor boolean true if they are defined with no value. This\n\t\t\tresult, which is relatively expensive to compute, is cached\n\t\t\tand returned for future no-argument calls.\n\t\t\t\n\t\t\tIn all other cases it returns true if the given option was\n\t\t\tactive when when compiling the sqlite3 module, else false.\n\t\t\t\n\t\t\tCompile-time option names may optionally include their\n\t\t\t\"SQLITE_\" prefix. When it returns an object of all options,\n\t\t\tthe prefix is elided.\n\t\t\t*/\n\t\t\twasm.compileOptionUsed = function f(optName) {\n\t\t\t\tif (!arguments.length) {\n\t\t\t\t\tif (f._result) return f._result;\n\t\t\t\t\telse if (!f._opt) {\n\t\t\t\t\t\tf._rx = /^([^=]+)=(.+)/;\n\t\t\t\t\t\tf._rxInt = /^-?\\d+$/;\n\t\t\t\t\t\tf._opt = function(opt, rv) {\n\t\t\t\t\t\t\tconst m = f._rx.exec(opt);\n\t\t\t\t\t\t\trv[0] = m ? m[1] : opt;\n\t\t\t\t\t\t\trv[1] = m ? f._rxInt.test(m[2]) ? +m[2] : m[2] : true;\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tconst rc = Object.create(null), ov = [0, 0];\n\t\t\t\t\tlet i = 0, k;\n\t\t\t\t\twhile (k = capi.sqlite3_compileoption_get(i++)) {\n\t\t\t\t\t\tf._opt(k, ov);\n\t\t\t\t\t\trc[ov[0]] = ov[1];\n\t\t\t\t\t}\n\t\t\t\t\treturn f._result = rc;\n\t\t\t\t} else if (Array.isArray(optName)) {\n\t\t\t\t\tconst rc = Object.create(null);\n\t\t\t\t\toptName.forEach((v) => {\n\t\t\t\t\t\trc[v] = capi.sqlite3_compileoption_used(v);\n\t\t\t\t\t});\n\t\t\t\t\treturn rc;\n\t\t\t\t} else if (\"object\" === typeof optName) {\n\t\t\t\t\tObject.keys(optName).forEach((k) => {\n\t\t\t\t\t\toptName[k] = capi.sqlite3_compileoption_used(k);\n\t\t\t\t\t});\n\t\t\t\t\treturn optName;\n\t\t\t\t}\n\t\t\t\treturn \"string\" === typeof optName ? !!capi.sqlite3_compileoption_used(optName) : false;\n\t\t\t};\n\t\t\t/**\n\t\t\tsqlite3.wasm.pstack (pseudo-stack) holds a special-case allocator\n\t\t\tintended solely for short-lived, small data. In practice, it's\n\t\t\tprimarily used to allocate output pointers. It must not be used\n\t\t\tfor any memory which needs to outlive the scope in which it's\n\t\t\tobtained from pstack.\n\t\t\t\n\t\t\tThe library guarantees only that a minimum of 2kb are available\n\t\t\tin this allocator, and it may provide more (it's a build-time\n\t\t\tvalue). pstack.quota and pstack.remaining can be used to get the\n\t\t\ttotal resp. remaining amount of memory.\n\t\t\t\n\t\t\tIt has only a single intended usage pattern:\n\t\t\t\n\t\t\t```\n\t\t\tconst stackPos = pstack.pointer;\n\t\t\ttry{\n\t\t\tconst ptr = pstack.alloc(8);\n\t\t\t// ==> pstack.pointer === ptr\n\t\t\tconst otherPtr = pstack.alloc(8);\n\t\t\t// ==> pstack.pointer === otherPtr\n\t\t\t...\n\t\t\t}finally{\n\t\t\tpstack.restore(stackPos);\n\t\t\t// ==> pstack.pointer === stackPos\n\t\t\t}\n\t\t\t```\n\t\t\t\n\t\t\tThis allocator is much faster than a general-purpose one but is\n\t\t\tlimited to usage patterns like the one shown above (which are\n\t\t\tpretty common when using sqlite3.capi).\n\t\t\t\n\t\t\tThe memory lives in the WASM heap and can be used with routines\n\t\t\tsuch as wasm.poke() and wasm.heap8u().slice().\n\t\t\t*/\n\t\t\twasm.pstack = Object.assign(Object.create(null), {\n\t\t\t\trestore: wasm.exports.sqlite3__wasm_pstack_restore,\n\t\t\t\talloc: function(n) {\n\t\t\t\t\tif (\"string\" === typeof n && !(n = wasm.sizeofIR(n))) WasmAllocError.toss(\"Invalid value for pstack.alloc(\", arguments[0], \")\");\n\t\t\t\t\treturn wasm.exports.sqlite3__wasm_pstack_alloc(n) || WasmAllocError.toss(\"Could not allocate\", n, \"bytes from the pstack.\");\n\t\t\t\t},\n\t\t\t\tallocChunks: function(n, sz) {\n\t\t\t\t\tif (\"string\" === typeof sz && !(sz = wasm.sizeofIR(sz))) WasmAllocError.toss(\"Invalid size value for allocChunks(\", arguments[1], \")\");\n\t\t\t\t\tconst mem = wasm.pstack.alloc(n * sz);\n\t\t\t\t\tconst rc = [mem];\n\t\t\t\t\tlet i = 1, offset = sz;\n\t\t\t\t\tfor (; i < n; ++i, offset += sz) rc.push(wasm.ptr.add(mem, offset));\n\t\t\t\t\treturn rc;\n\t\t\t\t},\n\t\t\t\tallocPtr: (n = 1, safePtrSize = true) => {\n\t\t\t\t\treturn 1 === n ? wasm.pstack.alloc(safePtrSize ? 8 : wasm.ptr.size) : wasm.pstack.allocChunks(n, safePtrSize ? 8 : wasm.ptr.size);\n\t\t\t\t},\n\t\t\t\tcall: function(f) {\n\t\t\t\t\tconst stackPos = wasm.pstack.pointer;\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn f(sqlite3);\n\t\t\t\t\t} finally {\n\t\t\t\t\t\twasm.pstack.restore(stackPos);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tObject.defineProperties(wasm.pstack, {\n\t\t\t\tpointer: {\n\t\t\t\t\tconfigurable: false,\n\t\t\t\t\titerable: true,\n\t\t\t\t\twriteable: false,\n\t\t\t\t\tget: wasm.exports.sqlite3__wasm_pstack_ptr\n\t\t\t\t},\n\t\t\t\tquota: {\n\t\t\t\t\tconfigurable: false,\n\t\t\t\t\titerable: true,\n\t\t\t\t\twriteable: false,\n\t\t\t\t\tget: wasm.exports.sqlite3__wasm_pstack_quota\n\t\t\t\t},\n\t\t\t\tremaining: {\n\t\t\t\t\tconfigurable: false,\n\t\t\t\t\titerable: true,\n\t\t\t\t\twriteable: false,\n\t\t\t\t\tget: wasm.exports.sqlite3__wasm_pstack_remaining\n\t\t\t\t}\n\t\t\t});\n\t\t\t/**\n\t\t\tDocs: https://sqlite.org/wasm/doc/trunk/api-c-style.md#sqlite3_randomness\n\t\t\t*/\n\t\t\tcapi.sqlite3_randomness = (...args) => {\n\t\t\t\tif (1 === args.length && util.isTypedArray(args[0]) && 1 === args[0].BYTES_PER_ELEMENT) {\n\t\t\t\t\tconst ta = args[0];\n\t\t\t\t\tif (0 === ta.byteLength) {\n\t\t\t\t\t\twasm.exports.sqlite3_randomness(0, wasm.ptr.null);\n\t\t\t\t\t\treturn ta;\n\t\t\t\t\t}\n\t\t\t\t\tconst stack = wasm.pstack.pointer;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlet n = ta.byteLength, offset = 0;\n\t\t\t\t\t\tconst r = wasm.exports.sqlite3_randomness;\n\t\t\t\t\t\tconst heap = wasm.heap8u();\n\t\t\t\t\t\tconst nAlloc = n < 512 ? n : 512;\n\t\t\t\t\t\tconst ptr = wasm.pstack.alloc(nAlloc);\n\t\t\t\t\t\tdo {\n\t\t\t\t\t\t\tconst j = n > nAlloc ? nAlloc : n;\n\t\t\t\t\t\t\tr(j, ptr);\n\t\t\t\t\t\t\tta.set(wasm.typedArrayPart(heap, ptr, wasm.ptr.add(ptr, j)), offset);\n\t\t\t\t\t\t\tn -= j;\n\t\t\t\t\t\t\toffset += j;\n\t\t\t\t\t\t} while (n > 0);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tconfig.error(\"Highly unexpected (and ignored!) exception in sqlite3_randomness():\", e);\n\t\t\t\t\t} finally {\n\t\t\t\t\t\twasm.pstack.restore(stack);\n\t\t\t\t\t}\n\t\t\t\t\treturn ta;\n\t\t\t\t}\n\t\t\t\twasm.exports.sqlite3_randomness(...args);\n\t\t\t};\n\t\t\t/**\n\t\t\tIf the wasm environment has a WASMFS/OPFS-backed persistent\n\t\t\tstorage directory, its path is returned by this function. If it\n\t\t\tdoes not then it returns \"\" (noting that \"\" is a falsy value).\n\t\t\t\n\t\t\tThe first time this is called, this function inspects the current\n\t\t\tenvironment to determine whether WASMFS persistence support is\n\t\t\tavailable and, if it is, enables it (if needed). After the first\n\t\t\tcall it always returns the cached result.\n\t\t\t\n\t\t\tIf the returned string is not empty, any files stored under the\n\t\t\treturned path (recursively) are housed in OPFS storage. If the\n\t\t\treturned string is empty, this particular persistent storage\n\t\t\toption is not available on the client.\n\t\t\t\n\t\t\tThough the mount point name returned by this function is intended\n\t\t\tto remain stable, clients should not hard-coded it anywhere.\n\t\t\tAlways call this function to get the path.\n\t\t\t\n\t\t\tThis function is a no-op in most builds of this library, as the\n\t\t\tWASMFS capability requires a custom build.\n\t\t\t*/\n\t\t\tcapi.sqlite3_wasmfs_opfs_dir = function() {\n\t\t\t\tif (void 0 !== this.dir) return this.dir;\n\t\t\t\tconst pdir = config.wasmfsOpfsDir;\n\t\t\t\tif (!pdir || !globalThis.FileSystemHandle || !globalThis.FileSystemDirectoryHandle || !globalThis.FileSystemFileHandle || !wasm.exports.sqlite3__wasm_init_wasmfs) return this.dir = \"\";\n\t\t\t\ttry {\n\t\t\t\t\tif (pdir && 0 === wasm.xCallWrapped(\"sqlite3__wasm_init_wasmfs\", \"i32\", [\"string\"], pdir)) return this.dir = pdir;\n\t\t\t\t\telse return this.dir = \"\";\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn this.dir = \"\";\n\t\t\t\t}\n\t\t\t}.bind(Object.create(null));\n\t\t\t/**\n\t\t\tReturns true if sqlite3.capi.sqlite3_wasmfs_opfs_dir() is a\n\t\t\tnon-empty string and the given name starts with (that string +\n\t\t\t'/'), else returns false.\n\t\t\t*/\n\t\t\tcapi.sqlite3_wasmfs_filename_is_persistent = function(name) {\n\t\t\t\tconst p = capi.sqlite3_wasmfs_opfs_dir();\n\t\t\t\treturn p && name ? name.startsWith(p + \"/\") : false;\n\t\t\t};\n\t\t\t/**\n\t\t\tGiven an `sqlite3*`, an sqlite3_vfs name, and an optional db name\n\t\t\t(defaulting to \"main\"), returns a truthy value (see below) if\n\t\t\tthat db uses that VFS, else returns false. If pDb is falsy then\n\t\t\tthe 3rd argument is ignored and this function returns a truthy\n\t\t\tvalue if the default VFS name matches that of the 2nd argument.\n\t\t\tResults are undefined if pDb is truthy but refers to an invalid\n\t\t\tpointer. The 3rd argument specifies the database name of the\n\t\t\tgiven database connection to check, defaulting to the main db.\n\t\t\t\n\t\t\tThe 2nd and 3rd arguments may either be a JS string or a WASM\n\t\t\tC-string. If the 2nd argument is a NULL WASM pointer, the default\n\t\t\tVFS is assumed. If the 3rd is a NULL WASM pointer, \"main\" is\n\t\t\tassumed.\n\t\t\t\n\t\t\tThe truthy value it returns is a pointer to the `sqlite3_vfs`\n\t\t\tobject.\n\t\t\t\n\t\t\tTo permit safe use of this function from APIs which may be called\n\t\t\tvia C (like SQL UDFs), this function does not throw: if bad\n\t\t\targuments cause a conversion error when passing into wasm-space,\n\t\t\tfalse is returned.\n\t\t\t*/\n\t\t\tcapi.sqlite3_js_db_uses_vfs = function(pDb, vfsName, dbName = 0) {\n\t\t\t\ttry {\n\t\t\t\t\tconst pK = capi.sqlite3_vfs_find(vfsName);\n\t\t\t\t\tif (!pK) return false;\n\t\t\t\t\telse if (!pDb) return pK === capi.sqlite3_vfs_find(0) ? pK : false;\n\t\t\t\t\telse return pK === capi.sqlite3_js_db_vfs(pDb, dbName) ? pK : false;\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\tReturns an array of the names of all currently-registered sqlite3\n\t\t\tVFSes.\n\t\t\t*/\n\t\t\tcapi.sqlite3_js_vfs_list = function() {\n\t\t\t\tconst rc = [];\n\t\t\t\tlet pVfs = capi.sqlite3_vfs_find(wasm.ptr.null);\n\t\t\t\twhile (pVfs) {\n\t\t\t\t\tconst oVfs = new capi.sqlite3_vfs(pVfs);\n\t\t\t\t\trc.push(wasm.cstrToJs(oVfs.$zName));\n\t\t\t\t\tpVfs = oVfs.$pNext;\n\t\t\t\t\toVfs.dispose();\n\t\t\t\t}\n\t\t\t\treturn rc;\n\t\t\t};\n\t\t\t/**\n\t\t\tA convenience wrapper around sqlite3_serialize() which serializes\n\t\t\tthe given `sqlite3*` pointer to a Uint8Array. The first argument\n\t\t\tmay be either an `sqlite3*` or an sqlite3.oo1.DB instance.\n\t\t\t\n\t\t\tOn success it returns a Uint8Array. If the schema is empty, an\n\t\t\tempty array is returned.\n\t\t\t\n\t\t\t`schema` is the schema to serialize. It may be a WASM C-string\n\t\t\tpointer or a JS string. If it is falsy, it defaults to `\"main\"`.\n\t\t\t\n\t\t\tOn error it throws with a description of the problem.\n\t\t\t*/\n\t\t\tcapi.sqlite3_js_db_export = function(pDb, schema = 0) {\n\t\t\t\tpDb = wasm.xWrap.testConvertArg(\"sqlite3*\", pDb);\n\t\t\t\tif (!pDb) toss3(\"Invalid sqlite3* argument.\");\n\t\t\t\tif (!wasm.bigIntEnabled) toss3(\"BigInt support is not enabled.\");\n\t\t\t\tconst scope = wasm.scopedAllocPush();\n\t\t\t\tlet pOut;\n\t\t\t\ttry {\n\t\t\t\t\tconst pSize = wasm.scopedAlloc(8 + wasm.ptr.size);\n\t\t\t\t\tconst ppOut = wasm.ptr.add(pSize, 8);\n\t\t\t\t\t/**\n\t\t\t\t\tMaintenance reminder, since this cost a full hour of grief\n\t\t\t\t\tand confusion: if the order of pSize/ppOut are reversed in\n\t\t\t\t\tthat memory block, fetching the value of pSize after the\n\t\t\t\t\texport reads a garbage size because it's not on an 8-byte\n\t\t\t\t\tmemory boundary!\n\t\t\t\t\t*/\n\t\t\t\t\tconst zSchema = schema ? wasm.isPtr(schema) ? schema : wasm.scopedAllocCString(\"\" + schema) : wasm.ptr.null;\n\t\t\t\t\tlet rc = wasm.exports.sqlite3__wasm_db_serialize(pDb, zSchema, ppOut, pSize, 0);\n\t\t\t\t\tif (rc) toss3(\"Database serialization failed with code\", sqlite3.capi.sqlite3_js_rc_str(rc));\n\t\t\t\t\tpOut = wasm.peekPtr(ppOut);\n\t\t\t\t\tconst nOut = wasm.peek(pSize, \"i64\");\n\t\t\t\t\trc = nOut ? wasm.heap8u().slice(Number(pOut), Number(pOut) + Number(nOut)) : new Uint8Array();\n\t\t\t\t\treturn rc;\n\t\t\t\t} finally {\n\t\t\t\t\tif (pOut) wasm.exports.sqlite3_free(pOut);\n\t\t\t\t\twasm.scopedAllocPop(scope);\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\tGiven a `sqlite3*` and a database name (JS string or WASM\n\t\t\tC-string pointer, which may be 0), returns a pointer to the\n\t\t\tsqlite3_vfs responsible for it. If the given db name is null/0,\n\t\t\tor not provided, then \"main\" is assumed.\n\t\t\t*/\n\t\t\tcapi.sqlite3_js_db_vfs = (dbPointer, dbName = wasm.ptr.null) => util.sqlite3__wasm_db_vfs(dbPointer, dbName);\n\t\t\t/**\n\t\t\tA thin wrapper around capi.sqlite3_aggregate_context() which\n\t\t\tbehaves the same except that it throws a WasmAllocError if that\n\t\t\tfunction returns 0. As a special case, if n is falsy it does\n\t\t\t_not_ throw if that function returns 0. That special case is\n\t\t\tintended for use with xFinal() implementations.\n\t\t\t*/\n\t\t\tcapi.sqlite3_js_aggregate_context = (pCtx, n) => {\n\t\t\t\treturn capi.sqlite3_aggregate_context(pCtx, n) || (n ? WasmAllocError.toss(\"Cannot allocate\", n, \"bytes for sqlite3_aggregate_context()\") : 0);\n\t\t\t};\n\t\t\t/**\n\t\t\tIf the current environment supports the POSIX file APIs, this routine\n\t\t\tcreates (or overwrites) the given file using those APIs. This is\n\t\t\tprimarily intended for use in Emscripten-based builds where the POSIX\n\t\t\tAPIs are transparently proxied by an in-memory virtual filesystem.\n\t\t\tIt may behave differently in other environments.\n\t\t\t\n\t\t\tThe first argument must be either a JS string or WASM C-string\n\t\t\tholding the filename. This routine does _not_ create intermediary\n\t\t\tdirectories if the filename has a directory part.\n\t\t\t\n\t\t\tThe 2nd argument may either a valid WASM memory pointer, an\n\t\t\tArrayBuffer, or a Uint8Array. The 3rd must be the length, in\n\t\t\tbytes, of the data array to copy. If the 2nd argument is an\n\t\t\tArrayBuffer or Uint8Array and the 3rd is not a positive integer\n\t\t\tthen the 3rd defaults to the array's byteLength value.\n\t\t\t\n\t\t\tResults are undefined if data is a WASM pointer and dataLen is\n\t\t\texceeds data's bounds.\n\t\t\t\n\t\t\tThrows if any arguments are invalid or if creating or writing to\n\t\t\tthe file fails.\n\t\t\t\n\t\t\tAdded in 3.43 as an alternative for the deprecated\n\t\t\tsqlite3_js_vfs_create_file().\n\t\t\t*/\n\t\t\tcapi.sqlite3_js_posix_create_file = function(filename, data, dataLen) {\n\t\t\t\tlet pData;\n\t\t\t\tif (data && wasm.isPtr(data)) pData = data;\n\t\t\t\telse if (data instanceof ArrayBuffer || data instanceof Uint8Array) {\n\t\t\t\t\tpData = wasm.allocFromTypedArray(data);\n\t\t\t\t\tif (arguments.length < 3 || !util.isInt32(dataLen) || dataLen < 0) dataLen = data.byteLength;\n\t\t\t\t} else SQLite3Error.toss(\"Invalid 2nd argument for sqlite3_js_posix_create_file().\");\n\t\t\t\ttry {\n\t\t\t\t\tif (!util.isInt32(dataLen) || dataLen < 0) SQLite3Error.toss(\"Invalid 3rd argument for sqlite3_js_posix_create_file().\");\n\t\t\t\t\tconst rc = util.sqlite3__wasm_posix_create_file(filename, pData, dataLen);\n\t\t\t\t\tif (rc) SQLite3Error.toss(\"Creation of file failed with sqlite3 result code\", capi.sqlite3_js_rc_str(rc));\n\t\t\t\t} finally {\n\t\t\t\t\tif (pData && pData !== data) wasm.dealloc(pData);\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\tDeprecation warning: this function does not work properly in\n\t\t\tdebug builds of sqlite3 because its out-of-scope use of the\n\t\t\tsqlite3_vfs API triggers assertions in the core library.  That\n\t\t\twas unfortunately not discovered until 2023-08-11. This function\n\t\t\tis now deprecated. It should not be used in new code and should\n\t\t\tbe removed from existing code.\n\t\t\t\n\t\t\tAlternative options:\n\t\t\t\n\t\t\t- The \"unix\" VFS and its variants can get equivalent\n\t\t\tfunctionality with sqlite3_js_posix_create_file().\n\t\t\t\n\t\t\t- OPFS: use either sqlite3.oo1.OpfsDb.importDb(), for the \"opfs\"\n\t\t\tVFS, or the importDb() method of the PoolUtil object provided\n\t\t\tby the \"opfs-sahpool\" OPFS (noting that its VFS name may differ\n\t\t\tdepending on client-side configuration). We cannot proxy those\n\t\t\tfrom here because the former is necessarily asynchronous and\n\t\t\tthe latter requires information not available to this function.\n\t\t\t\n\t\t\tHistorical (deprecated) behaviour:\n\t\t\t\n\t\t\tCreates a file using the storage appropriate for the given\n\t\t\tsqlite3_vfs.  The first argument may be a VFS name (JS string\n\t\t\tonly, NOT a WASM C-string), WASM-managed `sqlite3_vfs*`, or\n\t\t\ta capi.sqlite3_vfs instance. Pass 0 (a NULL pointer) to use the\n\t\t\tdefault VFS. If passed a string which does not resolve using\n\t\t\tsqlite3_vfs_find(), an exception is thrown. (Note that a WASM\n\t\t\tC-string is not accepted because it is impossible to\n\t\t\tdistinguish from a C-level `sqlite3_vfs*`.)\n\t\t\t\n\t\t\tThe second argument, the filename, must be a JS or WASM C-string.\n\t\t\t\n\t\t\tThe 3rd may either be falsy, a valid WASM memory pointer, an\n\t\t\tArrayBuffer, or a Uint8Array. The 4th must be the length, in\n\t\t\tbytes, of the data array to copy. If the 3rd argument is an\n\t\t\tArrayBuffer or Uint8Array and the 4th is not a positive integer\n\t\t\tthen the 4th defaults to the array's byteLength value.\n\t\t\t\n\t\t\tIf data is falsy then a file is created with dataLen bytes filled\n\t\t\twith uninitialized data (whatever truncate() leaves there). If\n\t\t\tdata is not falsy then a file is created or truncated and it is\n\t\t\tfilled with the first dataLen bytes of the data source.\n\t\t\t\n\t\t\tThrows if any arguments are invalid or if creating or writing to\n\t\t\tthe file fails.\n\t\t\t\n\t\t\tNote that most VFSes do _not_ automatically create directory\n\t\t\tparts of filenames, nor do all VFSes have a concept of\n\t\t\tdirectories.  If the given filename is not valid for the given\n\t\t\tVFS, an exception will be thrown. This function exists primarily\n\t\t\tto assist in implementing file-upload capability, with the caveat\n\t\t\tthat clients must have some idea of the VFS into which they want\n\t\t\tto upload and that VFS must support the operation.\n\t\t\t\n\t\t\tVFS-specific notes:\n\t\t\t\n\t\t\t- \"memdb\": results are undefined.\n\t\t\t\n\t\t\t- \"kvvfs\": will fail with an I/O error due to strict internal\n\t\t\trequirements of that VFS's xTruncate().\n\t\t\t\n\t\t\t- \"unix\" and related: will use the WASM build's equivalent of the\n\t\t\tPOSIX I/O APIs. This will work so long as neither a specific\n\t\t\tVFS nor the WASM environment imposes requirements which break\n\t\t\tit.  (Much later: it turns out that debug builds of the library\n\t\t\timpose such requirements, in that they assert() that dataLen is\n\t\t\tan even multiple of a valid db page size.)\n\t\t\t\n\t\t\t- \"opfs\": uses OPFS storage and creates directory parts of the\n\t\t\tfilename. It can only be used to import an SQLite3 database\n\t\t\tfile and will fail if given anything else.\n\t\t\t*/\n\t\t\tcapi.sqlite3_js_vfs_create_file = function(vfs, filename, data, dataLen) {\n\t\t\t\tconfig.warn(\"sqlite3_js_vfs_create_file() is deprecated and\", \"should be avoided because it can lead to C-level crashes.\", \"See its documentation for alternatives.\");\n\t\t\t\tlet pData;\n\t\t\t\tif (data) if (wasm.isPtr(data)) pData = data;\n\t\t\t\telse {\n\t\t\t\t\tif (data instanceof ArrayBuffer) data = new Uint8Array(data);\n\t\t\t\t\tif (data instanceof Uint8Array) {\n\t\t\t\t\t\tpData = wasm.allocFromTypedArray(data);\n\t\t\t\t\t\tif (arguments.length < 4 || !util.isInt32(dataLen) || dataLen < 0) dataLen = data.byteLength;\n\t\t\t\t\t} else SQLite3Error.toss(\"Invalid 3rd argument type for sqlite3_js_vfs_create_file().\");\n\t\t\t\t}\n\t\t\t\telse pData = 0;\n\t\t\t\tif (!util.isInt32(dataLen) || dataLen < 0) {\n\t\t\t\t\tif (pData && pData !== data) wasm.dealloc(pData);\n\t\t\t\t\tSQLite3Error.toss(\"Invalid 4th argument for sqlite3_js_vfs_create_file().\");\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tconst rc = util.sqlite3__wasm_vfs_create_file(vfs, filename, pData, dataLen);\n\t\t\t\t\tif (rc) SQLite3Error.toss(\"Creation of file failed with sqlite3 result code\", capi.sqlite3_js_rc_str(rc));\n\t\t\t\t} finally {\n\t\t\t\t\tif (pData && pData !== data) wasm.dealloc(pData);\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\tConverts SQL input from a variety of convenient formats\n\t\t\tto plain strings.\n\t\t\t\n\t\t\tIf v is a string, it is returned as-is. If it is-a Array, its\n\t\t\tjoin(\"\") result is returned.  If is is a Uint8Array, Int8Array,\n\t\t\tor ArrayBuffer, it is assumed to hold UTF-8-encoded text and is\n\t\t\tdecoded to a string. If it looks like a WASM pointer,\n\t\t\twasm.cstrToJs(sql) is returned. Else undefined is returned.\n\t\t\t\n\t\t\tAdded in 3.44\n\t\t\t*/\n\t\t\tcapi.sqlite3_js_sql_to_string = (sql) => {\n\t\t\t\tif (\"string\" === typeof sql) return sql;\n\t\t\t\tconst x = flexibleString(v);\n\t\t\t\treturn x === v ? void 0 : x;\n\t\t\t};\n\t\t\t/**\n\t\t\tWraps all known variants of the C-side variadic\n\t\t\tsqlite3_db_config().\n\t\t\t\n\t\t\tFull docs: https://sqlite.org/c3ref/db_config.html\n\t\t\t\n\t\t\tReturns capi.SQLITE_MISUSE if op is not a valid operation ID.\n\t\t\t\n\t\t\tThe variants which take `(int, int*)` arguments treat a\n\t\t\tmissing or falsy pointer argument as 0.\n\t\t\t*/\n\t\t\tcapi.sqlite3_db_config = function(pDb, op, ...args) {\n\t\t\t\tswitch (op) {\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_ENABLE_FKEY:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_ENABLE_TRIGGER:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_ENABLE_QPSG:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_TRIGGER_EQP:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_RESET_DATABASE:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_DEFENSIVE:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_WRITABLE_SCHEMA:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_LEGACY_ALTER_TABLE:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_DQS_DML:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_DQS_DDL:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_ENABLE_VIEW:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_LEGACY_FILE_FORMAT:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_TRUSTED_SCHEMA:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_STMT_SCANSTATUS:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_REVERSE_SCANORDER:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_ENABLE_ATTACH_CREATE:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_ENABLE_ATTACH_WRITE:\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_ENABLE_COMMENTS:\n\t\t\t\t\t\tif (!this.ip) this.ip = wasm.xWrap(\"sqlite3__wasm_db_config_ip\", \"int\", [\n\t\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\t\"*\"\n\t\t\t\t\t\t]);\n\t\t\t\t\t\treturn this.ip(pDb, op, args[0], args[1] || 0);\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_LOOKASIDE:\n\t\t\t\t\t\tif (!this.pii) this.pii = wasm.xWrap(\"sqlite3__wasm_db_config_pii\", \"int\", [\n\t\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\t\"int\"\n\t\t\t\t\t\t]);\n\t\t\t\t\t\treturn this.pii(pDb, op, args[0], args[1], args[2]);\n\t\t\t\t\tcase capi.SQLITE_DBCONFIG_MAINDBNAME:\n\t\t\t\t\t\tif (!this.s) this.s = wasm.xWrap(\"sqlite3__wasm_db_config_s\", \"int\", [\n\t\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\t\"string:static\"\n\t\t\t\t\t\t]);\n\t\t\t\t\t\treturn this.s(pDb, op, args[0]);\n\t\t\t\t\tdefault: return capi.SQLITE_MISUSE;\n\t\t\t\t}\n\t\t\t}.bind(Object.create(null));\n\t\t\t/**\n\t\t\tGiven a (sqlite3_value*), this function attempts to convert it\n\t\t\tto an equivalent JS value with as much fidelity as feasible and\n\t\t\treturn it.\n\t\t\t\n\t\t\tBy default it throws if it cannot determine any sensible\n\t\t\tconversion. If passed a falsy second argument, it instead returns\n\t\t\t`undefined` if no suitable conversion is found.  Note that there\n\t\t\tis no conversion from SQL to JS which results in the `undefined`\n\t\t\tvalue, so `undefined` has an unambiguous meaning here.  It will\n\t\t\talways throw a WasmAllocError if allocating memory for a\n\t\t\tconversion fails.\n\t\t\t\n\t\t\tCaveats:\n\t\t\t\n\t\t\t- It does not support sqlite3_value_to_pointer() conversions\n\t\t\tbecause those require a type name string which this function\n\t\t\tdoes not have and cannot sensibly be given at the level of the\n\t\t\tAPI where this is used (e.g. automatically converting UDF\n\t\t\targuments). Clients using sqlite3_value_to_pointer(), and its\n\t\t\trelated APIs, will need to manage those themselves.\n\t\t\t*/\n\t\t\tcapi.sqlite3_value_to_js = function(pVal, throwIfCannotConvert = true) {\n\t\t\t\tlet arg;\n\t\t\t\tconst valType = capi.sqlite3_value_type(pVal);\n\t\t\t\tswitch (valType) {\n\t\t\t\t\tcase capi.SQLITE_INTEGER:\n\t\t\t\t\t\tif (wasm.bigIntEnabled) {\n\t\t\t\t\t\t\targ = capi.sqlite3_value_int64(pVal);\n\t\t\t\t\t\t\tif (util.bigIntFitsDouble(arg)) arg = Number(arg);\n\t\t\t\t\t\t} else arg = capi.sqlite3_value_double(pVal);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase capi.SQLITE_FLOAT:\n\t\t\t\t\t\targ = capi.sqlite3_value_double(pVal);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase capi.SQLITE_TEXT:\n\t\t\t\t\t\targ = capi.sqlite3_value_text(pVal);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase capi.SQLITE_BLOB: {\n\t\t\t\t\t\tconst n = capi.sqlite3_value_bytes(pVal);\n\t\t\t\t\t\tconst pBlob = capi.sqlite3_value_blob(pVal);\n\t\t\t\t\t\tif (n && !pBlob) sqlite3.WasmAllocError.toss(\"Cannot allocate memory for blob argument of\", n, \"byte(s)\");\n\t\t\t\t\t\targ = n ? wasm.heap8u().slice(Number(pBlob), Number(pBlob) + Number(n)) : null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase capi.SQLITE_NULL:\n\t\t\t\t\t\targ = null;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif (throwIfCannotConvert) toss3(capi.SQLITE_MISMATCH, \"Unhandled sqlite3_value_type():\", valType);\n\t\t\t\t\t\targ = void 0;\n\t\t\t\t}\n\t\t\t\treturn arg;\n\t\t\t};\n\t\t\t/**\n\t\t\tRequires a C-style array of `sqlite3_value*` objects and the\n\t\t\tnumber of entries in that array. Returns a JS array containing\n\t\t\tthe results of passing each C array entry to\n\t\t\tsqlite3_value_to_js(). The 3rd argument to this function is\n\t\t\tpassed on as the 2nd argument to that one.\n\t\t\t*/\n\t\t\tcapi.sqlite3_values_to_js = function(argc, pArgv, throwIfCannotConvert = true) {\n\t\t\t\tlet i;\n\t\t\t\tconst tgt = [];\n\t\t\t\tfor (i = 0; i < argc; ++i)\n /**\n\t\t\t\tCuriously: despite ostensibly requiring 8-byte\n\t\t\t\talignment, the pArgv array is parcelled into chunks of\n\t\t\t\t4 bytes (1 pointer each). The values those point to\n\t\t\t\thave 8-byte alignment but the individual argv entries\n\t\t\t\tdo not.\n\t\t\t\t*/\n\t\t\t\ttgt.push(capi.sqlite3_value_to_js(wasm.peekPtr(wasm.ptr.add(pArgv, wasm.ptr.size * i)), throwIfCannotConvert));\n\t\t\t\treturn tgt;\n\t\t\t};\n\t\t\t/**\n\t\t\tCalls either sqlite3_result_error_nomem(), if e is-a\n\t\t\tWasmAllocError, or sqlite3_result_error(). In the latter case,\n\t\t\tthe second argument is coerced to a string to create the error\n\t\t\tmessage.\n\t\t\t\n\t\t\tThe first argument is a (sqlite3_context*). Returns void.\n\t\t\tDoes not throw.\n\t\t\t*/\n\t\t\tcapi.sqlite3_result_error_js = function(pCtx, e) {\n\t\t\t\tif (e instanceof WasmAllocError) capi.sqlite3_result_error_nomem(pCtx);\n\t\t\t\telse capi.sqlite3_result_error(pCtx, \"\" + e, -1);\n\t\t\t};\n\t\t\t/**\n\t\t\tThis function passes its 2nd argument to one of the\n\t\t\tsqlite3_result_xyz() routines, depending on the type of that\n\t\t\targument:\n\t\t\t\n\t\t\t- If (val instanceof Error), this function passes it to\n\t\t\tsqlite3_result_error_js().\n\t\t\t- `null`: `sqlite3_result_null()`\n\t\t\t- `boolean`: `sqlite3_result_int()` with a value of 0 or 1.\n\t\t\t- `number`: `sqlite3_result_int()`, `sqlite3_result_int64()`, or\n\t\t\t`sqlite3_result_double()`, depending on the range of the number\n\t\t\tand whether or not int64 support is enabled.\n\t\t\t- `bigint`: similar to `number` but will trigger an error if the\n\t\t\tvalue is too big to store in an int64.\n\t\t\t- `string`: `sqlite3_result_text()`\n\t\t\t- Uint8Array or Int8Array or ArrayBuffer: `sqlite3_result_blob()`\n\t\t\t- `undefined`: is a no-op provided to simplify certain use cases.\n\t\t\t\n\t\t\tAnything else triggers `sqlite3_result_error()` with a\n\t\t\tdescription of the problem.\n\t\t\t\n\t\t\tThe first argument to this function is a `(sqlite3_context*)`.\n\t\t\tReturns void. Does not throw.\n\t\t\t*/\n\t\t\tcapi.sqlite3_result_js = function(pCtx, val) {\n\t\t\t\tif (val instanceof Error) {\n\t\t\t\t\tcapi.sqlite3_result_error_js(pCtx, val);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tswitch (typeof val) {\n\t\t\t\t\t\tcase \"undefined\": break;\n\t\t\t\t\t\tcase \"boolean\":\n\t\t\t\t\t\t\tcapi.sqlite3_result_int(pCtx, val ? 1 : 0);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"bigint\":\n\t\t\t\t\t\t\tif (util.bigIntFits32(val)) capi.sqlite3_result_int(pCtx, Number(val));\n\t\t\t\t\t\t\telse if (util.bigIntFitsDouble(val)) capi.sqlite3_result_double(pCtx, Number(val));\n\t\t\t\t\t\t\telse if (wasm.bigIntEnabled) if (util.bigIntFits64(val)) capi.sqlite3_result_int64(pCtx, val);\n\t\t\t\t\t\t\telse toss3(\"BigInt value\", val.toString(), \"is too BigInt for int64.\");\n\t\t\t\t\t\t\telse toss3(\"BigInt value\", val.toString(), \"is too BigInt.\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"number\": {\n\t\t\t\t\t\t\tlet f;\n\t\t\t\t\t\t\tif (util.isInt32(val)) f = capi.sqlite3_result_int;\n\t\t\t\t\t\t\telse if (wasm.bigIntEnabled && Number.isInteger(val) && util.bigIntFits64(BigInt(val))) f = capi.sqlite3_result_int64;\n\t\t\t\t\t\t\telse f = capi.sqlite3_result_double;\n\t\t\t\t\t\t\tf(pCtx, val);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase \"string\": {\n\t\t\t\t\t\t\tconst [p, n] = wasm.allocCString(val, true);\n\t\t\t\t\t\t\tcapi.sqlite3_result_text(pCtx, p, n, capi.SQLITE_WASM_DEALLOC);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase \"object\": if (null === val) {\n\t\t\t\t\t\t\tcapi.sqlite3_result_null(pCtx);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t} else if (util.isBindableTypedArray(val)) {\n\t\t\t\t\t\t\tconst pBlob = wasm.allocFromTypedArray(val);\n\t\t\t\t\t\t\tcapi.sqlite3_result_blob(pCtx, pBlob, val.byteLength, capi.SQLITE_WASM_DEALLOC);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdefault: toss3(\"Don't not how to handle this UDF result value:\", typeof val, val);\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcapi.sqlite3_result_error_js(pCtx, e);\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\tReturns the result sqlite3_column_value(pStmt,iCol) passed to\n\t\t\tsqlite3_value_to_js(). The 3rd argument of this function is\n\t\t\tignored by this function except to pass it on as the second\n\t\t\targument of sqlite3_value_to_js(). If the sqlite3_column_value()\n\t\t\treturns NULL (e.g. because the column index is out of range),\n\t\t\tthis function returns `undefined`, regardless of the 3rd\n\t\t\targument. If the 3rd argument is falsy and conversion fails,\n\t\t\t`undefined` will be returned.\n\t\t\t\n\t\t\tNote that sqlite3_column_value() returns an \"unprotected\" value\n\t\t\tobject, but in a single-threaded environment (like this one)\n\t\t\tthere is no distinction between protected and unprotected values.\n\t\t\t*/\n\t\t\tcapi.sqlite3_column_js = function(pStmt, iCol, throwIfCannotConvert = true) {\n\t\t\t\tconst v = capi.sqlite3_column_value(pStmt, iCol);\n\t\t\t\treturn 0 === v ? void 0 : capi.sqlite3_value_to_js(v, throwIfCannotConvert);\n\t\t\t};\n\t\t\t{\n\t\t\t\t/**\n\t\t\t\tInternal impl of sqlite3_preupdate_new/old_js() and\n\t\t\t\tsqlite3changeset_new/old_js().\n\t\t\t\t*/\n\t\t\t\tconst __newOldValue = function(pObj, iCol, impl) {\n\t\t\t\t\timpl = capi[impl];\n\t\t\t\t\tif (!this.ptr) this.ptr = wasm.allocPtr();\n\t\t\t\t\telse wasm.pokePtr(this.ptr, 0);\n\t\t\t\t\tconst rc = impl(pObj, iCol, this.ptr);\n\t\t\t\t\tif (rc) return SQLite3Error.toss(rc, arguments[2] + \"() failed with code \" + rc);\n\t\t\t\t\tconst pv = wasm.peekPtr(this.ptr);\n\t\t\t\t\treturn pv ? capi.sqlite3_value_to_js(pv, true) : void 0;\n\t\t\t\t}.bind(Object.create(null));\n\t\t\t\t/**\n\t\t\t\tA wrapper around sqlite3_preupdate_new() which fetches the\n\t\t\t\tsqlite3_value at the given index and returns the result of\n\t\t\t\tpassing it to sqlite3_value_to_js(). Throws on error.\n\t\t\t\t*/\n\t\t\t\tcapi.sqlite3_preupdate_new_js = (pDb, iCol) => __newOldValue(pDb, iCol, \"sqlite3_preupdate_new\");\n\t\t\t\t/**\n\t\t\t\tThe sqlite3_preupdate_old() counterpart of\n\t\t\t\tsqlite3_preupdate_new_js(), with an identical interface.\n\t\t\t\t*/\n\t\t\t\tcapi.sqlite3_preupdate_old_js = (pDb, iCol) => __newOldValue(pDb, iCol, \"sqlite3_preupdate_old\");\n\t\t\t\t/**\n\t\t\t\tA wrapper around sqlite3changeset_new() which fetches the\n\t\t\t\tsqlite3_value at the given index and returns the result of\n\t\t\t\tpassing it to sqlite3_value_to_js(). Throws on error.\n\t\t\t\t\n\t\t\t\tIf sqlite3changeset_new() succeeds but has no value to report,\n\t\t\t\tthis function returns the undefined value, noting that\n\t\t\t\tundefined is not a valid conversion from an `sqlite3_value`, so\n\t\t\t\tis unambiguous.\n\t\t\t\t*/\n\t\t\t\tcapi.sqlite3changeset_new_js = (pChangesetIter, iCol) => __newOldValue(pChangesetIter, iCol, \"sqlite3changeset_new\");\n\t\t\t\t/**\n\t\t\t\tThe sqlite3changeset_old() counterpart of\n\t\t\t\tsqlite3changeset_new_js(), with an identical interface.\n\t\t\t\t*/\n\t\t\t\tcapi.sqlite3changeset_old_js = (pChangesetIter, iCol) => __newOldValue(pChangesetIter, iCol, \"sqlite3changeset_old\");\n\t\t\t}\n\t\t\tconst sqlite3 = {\n\t\t\t\tWasmAllocError,\n\t\t\t\tSQLite3Error,\n\t\t\t\tcapi,\n\t\t\t\tutil,\n\t\t\t\twasm,\n\t\t\t\tconfig,\n\t\t\t\tversion: Object.create(null),\n\t\t\t\tclient: void 0,\n\t\t\t\tasyncPostInit: async function ff() {\n\t\t\t\t\tif (ff.isReady instanceof Promise) return ff.isReady;\n\t\t\t\t\tlet lia = this.initializersAsync;\n\t\t\t\t\tdelete this.initializersAsync;\n\t\t\t\t\tconst postInit = async () => {\n\t\t\t\t\t\tif (!sqlite3.__isUnderTest) {\n\t\t\t\t\t\t\tdelete sqlite3.util;\n\t\t\t\t\t\t\tdelete sqlite3.StructBinder;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn sqlite3;\n\t\t\t\t\t};\n\t\t\t\t\tconst catcher = (e) => {\n\t\t\t\t\t\tconfig.error(\"an async sqlite3 initializer failed:\", e);\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t};\n\t\t\t\t\tif (!lia || !lia.length) return ff.isReady = postInit().catch(catcher);\n\t\t\t\t\tlia = lia.map((f) => {\n\t\t\t\t\t\treturn f instanceof Function ? async (x) => f(sqlite3) : f;\n\t\t\t\t\t});\n\t\t\t\t\tlia.push(postInit);\n\t\t\t\t\tlet p = Promise.resolve(sqlite3);\n\t\t\t\t\twhile (lia.length) p = p.then(lia.shift());\n\t\t\t\t\treturn ff.isReady = p.catch(catcher);\n\t\t\t\t}.bind(sqlite3ApiBootstrap),\n\t\t\t\tscriptInfo: void 0\n\t\t\t};\n\t\t\tif (\"undefined\" !== typeof sqlite3IsUnderTest) sqlite3.__isUnderTest = !!sqlite3IsUnderTest;\n\t\t\ttry {\n\t\t\t\tsqlite3ApiBootstrap.initializers.forEach((f) => {\n\t\t\t\t\tf(sqlite3);\n\t\t\t\t});\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error(\"sqlite3 bootstrap initializer threw:\", e);\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t\tdelete sqlite3ApiBootstrap.initializers;\n\t\t\tsqlite3ApiBootstrap.sqlite3 = sqlite3;\n\t\t\tif (\"undefined\" !== typeof sqlite3InitScriptInfo) {\n\t\t\t\tsqlite3InitScriptInfo.debugModule(\"sqlite3ApiBootstrap() complete\", sqlite3);\n\t\t\t\tsqlite3.scriptInfo = sqlite3InitScriptInfo;\n\t\t\t}\n\t\t\tif (sqlite3.__isUnderTest) {\n\t\t\t\tif (\"undefined\" !== typeof EmscriptenModule) sqlite3.config.emscripten = EmscriptenModule;\n\t\t\t\tconst iw = sqlite3.scriptInfo?.instantiateWasm;\n\t\t\t\tif (iw) {\n\t\t\t\t\tsqlite3.wasm.module = iw.module;\n\t\t\t\t\tsqlite3.wasm.instance = iw.instance;\n\t\t\t\t\tsqlite3.wasm.imports = iw.imports;\n\t\t\t\t}\n\t\t\t}\n\t\t\t/**\n\t\t\tEliminate any confusion about whether these config objects may\n\t\t\tbe used after library initialization by eliminating the outward-facing\n\t\t\tobjects...\n\t\t\t*/\n\t\t\tdelete globalThis.sqlite3ApiConfig;\n\t\t\tdelete globalThis.sqlite3ApiBootstrap;\n\t\t\tdelete sqlite3ApiBootstrap.defaultConfig;\n\t\t\treturn sqlite3.asyncPostInit().then((s) => {\n\t\t\t\tif (\"undefined\" !== typeof sqlite3InitScriptInfo) sqlite3InitScriptInfo.debugModule(\"sqlite3.asyncPostInit() complete\", s);\n\t\t\t\tdelete s.asyncPostInit;\n\t\t\t\tdelete s.scriptInfo;\n\t\t\t\tdelete s.emscripten;\n\t\t\t\treturn s;\n\t\t\t});\n\t\t};\n\t\t/**\n\t\tglobalThis.sqlite3ApiBootstrap.initializers is an internal detail\n\t\tused by the various pieces of the sqlite3 API's amalgamation\n\t\tprocess. It must not be modified by client code except when plugging\n\t\tsuch code into the amalgamation process.\n\t\t\n\t\tEach component of the amalgamation is expected to append a function\n\t\tto this array. When sqlite3ApiBootstrap() is called for the first\n\t\ttime, each such function will be called (in their appended order)\n\t\tand passed the sqlite3 namespace object, into which they can install\n\t\ttheir features. At the end of that process, this array is deleted.\n\t\t\n\t\tThe order of insertion into this array is significant for\n\t\tsome pieces. e.g. sqlite3.capi and sqlite3.wasm cannot be fully\n\t\tutilized until the whwasmutil.js part is plugged in via\n\t\tsqlite3-api-glue.js.\n\t\t*/\n\t\tglobalThis.sqlite3ApiBootstrap.initializers = [];\n\t\t/**\n\t\tglobalThis.sqlite3ApiBootstrap.initializersAsync is an internal detail\n\t\tused by the sqlite3 API's amalgamation process. It must not be\n\t\tmodified by client code except when plugging such code into the\n\t\tamalgamation process.\n\t\t\n\t\tThe counterpart of globalThis.sqlite3ApiBootstrap.initializers,\n\t\tspecifically for initializers which are asynchronous. All entries in\n\t\tthis list must be either async functions, non-async functions which\n\t\treturn a Promise, or a Promise. Each function in the list is called\n\t\twith the sqlite3 object as its only argument.\n\t\t\n\t\tThe resolved value of any Promise is ignored and rejection will kill\n\t\tthe asyncPostInit() process (at an indeterminate point because all\n\t\tof them are run asynchronously in parallel).\n\t\t\n\t\tThis list is not processed until the client calls\n\t\tsqlite3.asyncPostInit(). This means, for example, that intializers\n\t\tadded to globalThis.sqlite3ApiBootstrap.initializers may push entries to\n\t\tthis list.\n\t\t*/\n\t\tglobalThis.sqlite3ApiBootstrap.initializersAsync = [];\n\t\t/**\n\t\tClient code may assign sqlite3ApiBootstrap.defaultConfig an\n\t\tobject-type value before calling sqlite3ApiBootstrap() (without\n\t\targuments) in order to tell that call to use this object as its\n\t\tdefault config value. The intention of this is to provide\n\t\tdownstream clients with a reasonably flexible approach for plugging in\n\t\tan environment-suitable configuration without having to define a new\n\t\tglobal-scope symbol.\n\t\t*/\n\t\tglobalThis.sqlite3ApiBootstrap.defaultConfig = Object.create(null);\n\t\t/**\n\t\tPlaceholder: gets installed by the first call to\n\t\tglobalThis.sqlite3ApiBootstrap(). However, it is recommended that the\n\t\tcaller of sqlite3ApiBootstrap() capture its return value and delete\n\t\tglobalThis.sqlite3ApiBootstrap after calling it. It returns the same\n\t\tvalue which will be stored here.\n\t\t*/\n\t\tglobalThis.sqlite3ApiBootstrap.sqlite3 = void 0;\n\t\tglobalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3) {\n\t\t\tsqlite3.version = {\n\t\t\t\t\"libVersion\": \"3.52.0\",\n\t\t\t\t\"libVersionNumber\": 3052e3,\n\t\t\t\t\"sourceId\": \"2026-01-30 06:37:34 407724c4e80efdf93d885e95b5209a100a3f470fe0298138be57201f65f9817e\",\n\t\t\t\t\"downloadVersion\": 352e4,\n\t\t\t\t\"scm\": {\n\t\t\t\t\t\"sha3-256\": \"407724c4e80efdf93d885e95b5209a100a3f470fe0298138be57201f65f9817e\",\n\t\t\t\t\t\"branch\": \"trunk\",\n\t\t\t\t\t\"tags\": \"\",\n\t\t\t\t\t\"datetime\": \"2026-01-30T06:37:34.096Z\"\n\t\t\t\t}\n\t\t\t};\n\t\t});\n\t\tglobalThis.WhWasmUtilInstaller = function WhWasmUtilInstaller(target) {\n\t\t\t\"use strict\";\n\t\t\tif (void 0 === target.bigIntEnabled) target.bigIntEnabled = !!globalThis[\"BigInt64Array\"];\n\t\t\t/** Throws a new Error, the message of which is the concatenation of\n\t\t\tall args with a space between each. */\n\t\t\tconst toss = (...args) => {\n\t\t\t\tthrow new Error(args.join(\" \"));\n\t\t\t};\n\t\t\tif (!target.pointerSize && !target.pointerIR && target.alloc && target.dealloc) {\n\t\t\t\tconst ptr = target.alloc(1);\n\t\t\t\ttarget.pointerSize = \"bigint\" === typeof ptr ? 8 : 4;\n\t\t\t\ttarget.dealloc(ptr);\n\t\t\t}\n\t\t\t/**\n\t\t\tAs of 2025-09-21, this library works with 64-bit WASM modules\n\t\t\tbuilt with Emscripten's -sMEMORY64=1.\n\t\t\t*/\n\t\t\tif (target.pointerSize && !target.pointerIR) target.pointerIR = 4 === target.pointerSize ? \"i32\" : \"i64\";\n\t\t\tconst __ptrIR = target.pointerIR ??= \"i32\";\n\t\t\tconst __ptrSize = target.pointerSize ??= \"i32\" === __ptrIR ? 4 : \"i64\" === __ptrIR ? 8 : 0;\n\t\t\tdelete target.pointerSize;\n\t\t\tdelete target.pointerIR;\n\t\t\tif (\"i32\" !== __ptrIR && \"i64\" !== __ptrIR) toss(\"Invalid pointerIR:\", __ptrIR);\n\t\t\telse if (8 !== __ptrSize && 4 !== __ptrSize) toss(\"Invalid pointerSize:\", __ptrSize);\n\t\t\t/** Either BigInt or, if !target.bigIntEnabled, a function which\n\t\t\tthrows complaining that BigInt is not enabled. */\n\t\t\tconst __BigInt = target.bigIntEnabled ? (v) => BigInt(v || 0) : (v) => toss(\"BigInt support is disabled in this build.\");\n\t\t\tconst __Number = (v) => Number(v || 0);\n\t\t\t/**\n\t\t\tIf target.ptr.ir==='i32' then this is equivalent to\n\t\t\tNumber(v||0) else it's equivalent to BigInt(v||0), throwing\n\t\t\tif BigInt support is disabled.\n\t\t\t\n\t\t\tWhy? Because Number(null)===0, but BigInt(null) throws.  We\n\t\t\tperform the same for Number to allow the undefined value to be\n\t\t\ttreated as a NULL WASM pointer, primarily to reduce friction in\n\t\t\tmany SQLite3 bindings which have long relied on that.\n\t\t\t*/\n\t\t\tconst __asPtrType = 4 === __ptrSize ? __Number : __BigInt;\n\t\t\t/**\n\t\t\tThe number 0 as either type Number or BigInt, depending on\n\t\t\ttarget.ptr.ir.\n\t\t\t*/\n\t\t\tconst __NullPtr = __asPtrType(0);\n\t\t\t/**\n\t\t\tExpects any number of numeric arguments, each one of either type\n\t\t\tNumber or BigInt. It sums them up (from an implicit starting\n\t\t\tpoint of 0 or 0n) and returns them as a number of the same type\n\t\t\twhich target.ptr.coerce() uses.\n\t\t\t\n\t\t\tThis is a workaround for not being able to mix Number/BigInt in\n\t\t\taddition/subtraction expressions (which we frequently need for\n\t\t\tcalculating pointer offsets).\n\t\t\t*/\n\t\t\tconst __ptrAdd = function(...args) {\n\t\t\t\tlet rc = __asPtrType(0);\n\t\t\t\tfor (const v of args) rc += __asPtrType(v);\n\t\t\t\treturn rc;\n\t\t\t};\n\t\t\t/** Set up target.ptr... */\n\t\t\t{\n\t\t\t\tconst __ptr = Object.create(null);\n\t\t\t\tObject.defineProperty(target, \"ptr\", {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tget: () => __ptr,\n\t\t\t\t\tset: () => toss(\"The ptr property is read-only.\")\n\t\t\t\t});\n\t\t\t\t(function f(name, val) {\n\t\t\t\t\tObject.defineProperty(__ptr, name, {\n\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t\tget: () => val,\n\t\t\t\t\t\tset: () => toss(\"ptr[\" + name + \"] is read-only.\")\n\t\t\t\t\t});\n\t\t\t\t\treturn f;\n\t\t\t\t})(\"null\", __NullPtr)(\"size\", __ptrSize)(\"ir\", __ptrIR)(\"coerce\", __asPtrType)(\"add\", __ptrAdd)(\"addn\", 4 === __ptrIR ? __ptrAdd : (...args) => Number(__ptrAdd(...args)));\n\t\t\t}\n\t\t\tif (!target.exports) Object.defineProperty(target, \"exports\", {\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\tget: () => target.instance?.exports\n\t\t\t});\n\t\t\t/** Stores various cached state. */\n\t\t\tconst cache = Object.create(null);\n\t\t\t/** Previously-recorded size of cache.memory.buffer, noted so that\n\t\t\twe can recreate the view objects if the heap grows. */\n\t\t\tcache.heapSize = 0;\n\t\t\t/** WebAssembly.Memory object extracted from target.memory or\n\t\t\ttarget.exports.memory the first time heapWrappers() is\n\t\t\tcalled. */\n\t\t\tcache.memory = null;\n\t\t\t/** uninstallFunction() puts table indexes in here for reuse and\n\t\t\tinstallFunction() extracts them. */\n\t\t\tcache.freeFuncIndexes = [];\n\t\t\t/**\n\t\t\tList-of-lists used by scopedAlloc() and friends.\n\t\t\t*/\n\t\t\tcache.scopedAlloc = [];\n\t\t\t/** Push the pointer ptr to the current cache.scopedAlloc list\n\t\t\t(which must already exist) and return ptr. */\n\t\t\tcache.scopedAlloc.pushPtr = (ptr) => {\n\t\t\t\tcache.scopedAlloc[cache.scopedAlloc.length - 1].push(ptr);\n\t\t\t\treturn ptr;\n\t\t\t};\n\t\t\tcache.utf8Decoder = new TextDecoder();\n\t\t\tcache.utf8Encoder = new TextEncoder(\"utf-8\");\n\t\t\t/**\n\t\t\tFor the given IR-like string in the set ('i8', 'i16', 'i32',\n\t\t\t'f32', 'float', 'i64', 'f64', 'double', '*'), or any string value\n\t\t\tending in '*', returns the sizeof for that value\n\t\t\t(target.ptr.size in the latter case). For any other value, it\n\t\t\treturns the undefined value.\n\t\t\t*/\n\t\t\ttarget.sizeofIR = (n) => {\n\t\t\t\tswitch (n) {\n\t\t\t\t\tcase \"i8\": return 1;\n\t\t\t\t\tcase \"i16\": return 2;\n\t\t\t\t\tcase \"i32\":\n\t\t\t\t\tcase \"f32\":\n\t\t\t\t\tcase \"float\": return 4;\n\t\t\t\t\tcase \"i64\":\n\t\t\t\t\tcase \"f64\":\n\t\t\t\t\tcase \"double\": return 8;\n\t\t\t\t\tcase \"*\": return __ptrSize;\n\t\t\t\t\tdefault: return (\"\" + n).endsWith(\"*\") ? __ptrSize : void 0;\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\tIf (cache.heapSize !== cache.memory.buffer.byteLength), i.e. if\n\t\t\tthe heap has grown since the last call, updates cache.HEAPxyz.\n\t\t\tReturns the cache object.\n\t\t\t*/\n\t\t\tconst heapWrappers = function() {\n\t\t\t\tif (!cache.memory) cache.memory = target.memory instanceof WebAssembly.Memory ? target.memory : target.exports.memory;\n\t\t\t\telse if (cache.heapSize === cache.memory.buffer.byteLength) return cache;\n\t\t\t\tconst b = cache.memory.buffer;\n\t\t\t\tcache.HEAP8 = new Int8Array(b);\n\t\t\t\tcache.HEAP8U = new Uint8Array(b);\n\t\t\t\tcache.HEAP16 = new Int16Array(b);\n\t\t\t\tcache.HEAP16U = new Uint16Array(b);\n\t\t\t\tcache.HEAP32 = new Int32Array(b);\n\t\t\t\tcache.HEAP32U = new Uint32Array(b);\n\t\t\t\tcache.HEAP32F = new Float32Array(b);\n\t\t\t\tcache.HEAP64F = new Float64Array(b);\n\t\t\t\tif (target.bigIntEnabled) if (\"undefined\" !== typeof BigInt64Array) {\n\t\t\t\t\tcache.HEAP64 = new BigInt64Array(b);\n\t\t\t\t\tcache.HEAP64U = new BigUint64Array(b);\n\t\t\t\t} else toss(\"BigInt support is enabled, but the BigInt64Array type is missing.\");\n\t\t\t\tcache.heapSize = b.byteLength;\n\t\t\t\treturn cache;\n\t\t\t};\n\t\t\t/** Convenience equivalent of this.heapForSize(8,false). */\n\t\t\ttarget.heap8 = () => heapWrappers().HEAP8;\n\t\t\t/** Convenience equivalent of this.heapForSize(8,true). */\n\t\t\ttarget.heap8u = () => heapWrappers().HEAP8U;\n\t\t\t/** Convenience equivalent of this.heapForSize(16,false). */\n\t\t\ttarget.heap16 = () => heapWrappers().HEAP16;\n\t\t\t/** Convenience equivalent of this.heapForSize(16,true). */\n\t\t\ttarget.heap16u = () => heapWrappers().HEAP16U;\n\t\t\t/** Convenience equivalent of this.heapForSize(32,false). */\n\t\t\ttarget.heap32 = () => heapWrappers().HEAP32;\n\t\t\t/** Convenience equivalent of this.heapForSize(32,true). */\n\t\t\ttarget.heap32u = () => heapWrappers().HEAP32U;\n\t\t\t/**\n\t\t\tRequires n to be one of:\n\t\t\t\n\t\t\t- integer 8, 16, or 32.\n\t\t\t- A integer-type TypedArray constructor: Int8Array, Int16Array,\n\t\t\tInt32Array, or their Uint counterparts.\n\t\t\t\n\t\t\tIf this.bigIntEnabled is true, it also accepts the value 64 or a\n\t\t\tBigInt64Array/BigUint64Array, else it throws if passed 64 or one\n\t\t\tof those constructors.\n\t\t\t\n\t\t\tReturns an integer-based TypedArray view of the WASM heap memory\n\t\t\tbuffer associated with the given block size. If passed an integer\n\t\t\tas the first argument and unsigned is truthy then the \"U\"\n\t\t\t(unsigned) variant of that view is returned, else the signed\n\t\t\tvariant is returned. If passed a TypedArray value, the 2nd\n\t\t\targument is ignored. Float32Array and Float64Array views are not\n\t\t\tsupported by this function.\n\t\t\t\n\t\t\tGrowth of the heap will invalidate any references to this heap,\n\t\t\tso do not hold a reference longer than needed and do not use a\n\t\t\treference after any operation which may allocate. Instead,\n\t\t\tre-fetch the reference by calling this function again.\n\t\t\t\n\t\t\tThrows if passed an invalid n.\n\t\t\t*/\n\t\t\ttarget.heapForSize = function(n, unsigned = true) {\n\t\t\t\tconst c = cache.memory && cache.heapSize === cache.memory.buffer.byteLength ? cache : heapWrappers();\n\t\t\t\tswitch (n) {\n\t\t\t\t\tcase Int8Array: return c.HEAP8;\n\t\t\t\t\tcase Uint8Array: return c.HEAP8U;\n\t\t\t\t\tcase Int16Array: return c.HEAP16;\n\t\t\t\t\tcase Uint16Array: return c.HEAP16U;\n\t\t\t\t\tcase Int32Array: return c.HEAP32;\n\t\t\t\t\tcase Uint32Array: return c.HEAP32U;\n\t\t\t\t\tcase 8: return unsigned ? c.HEAP8U : c.HEAP8;\n\t\t\t\t\tcase 16: return unsigned ? c.HEAP16U : c.HEAP16;\n\t\t\t\t\tcase 32: return unsigned ? c.HEAP32U : c.HEAP32;\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\tif (c.HEAP64) return unsigned ? c.HEAP64U : c.HEAP64;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault: if (target.bigIntEnabled) {\n\t\t\t\t\t\tif (n === globalThis[\"BigUint64Array\"]) return c.HEAP64U;\n\t\t\t\t\t\telse if (n === globalThis[\"BigInt64Array\"]) return c.HEAP64;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttoss(\"Invalid heapForSize() size: expecting 8, 16, 32,\", \"or (if BigInt is enabled) 64.\");\n\t\t\t};\n\t\t\tconst __funcTable = target.functionTable;\n\t\t\tdelete target.functionTable;\n\t\t\t/**\n\t\t\tReturns the WASM-exported \"indirect function table\".\n\t\t\t*/\n\t\t\ttarget.functionTable = __funcTable ? () => __funcTable : () => target.exports.__indirect_function_table;\n\t\t\t/**\n\t\t\tGiven a function pointer, returns the WASM function table entry\n\t\t\tif found, else returns a falsy value: undefined if fptr is out of\n\t\t\trange or null if it's in range but the table entry is empty.\n\t\t\t*/\n\t\t\ttarget.functionEntry = function(fptr) {\n\t\t\t\tconst ft = target.functionTable();\n\t\t\t\treturn fptr < ft.length ? ft.get(__asPtrType(fptr)) : void 0;\n\t\t\t};\n\t\t\t/**\n\t\t\tCreates a WASM function which wraps the given JS function and\n\t\t\treturns the JS binding of that WASM function. The signature\n\t\t\tstring must be the Jaccwabyt-format or Emscripten\n\t\t\taddFunction()-format function signature string. In short: in may\n\t\t\thave one of the following formats:\n\t\t\t\n\t\t\t- Emscripten: `\"x...\"`, where the first x is a letter representing\n\t\t\tthe result type and subsequent letters represent the argument\n\t\t\ttypes. Functions with no arguments have only a single\n\t\t\tletter.\n\t\t\t\n\t\t\t- Jaccwabyt: `\"x(...)\"` where `x` is the letter representing the\n\t\t\tresult type and letters in the parens (if any) represent the\n\t\t\targument types. Functions with no arguments use `x()`.\n\t\t\t\n\t\t\tSupported letters:\n\t\t\t\n\t\t\t- `i` = int32\n\t\t\t- `p` = int32 or int64 (\"pointer\"), depending on target.ptr.size\n\t\t\t- `j` = int64\n\t\t\t- `f` = float32\n\t\t\t- `d` = float64\n\t\t\t- `v` = void, only legal for use as the result type\n\t\t\t\n\t\t\tIt throws if an invalid signature letter is used.\n\t\t\t\n\t\t\tJaccwabyt-format signatures support some additional letters which\n\t\t\thave no special meaning here but (in this context) act as aliases\n\t\t\tfor other letters:\n\t\t\t\n\t\t\t- `s`, `P`: same as `p`\n\t\t\t\n\t\t\tSidebar: this code is developed together with Jaccwabyt, thus the\n\t\t\tsupport for its signature format.\n\t\t\t\n\t\t\tThe arguments may be supplied in either order: (func,sig) or\n\t\t\t(sig,func).\n\t\t\t*/\n\t\t\ttarget.jsFuncToWasm = function f(func, sig) {\n\t\t\t\t/** Attribution: adapted up from Emscripten-generated glue code,\n\t\t\t\trefactored primarily for efficiency's sake, eliminating\n\t\t\t\tcall-local functions and superfluous temporary arrays. */\n\t\t\t\tif (!f._) f._ = {\n\t\t\t\t\tsigTypes: Object.assign(Object.create(null), {\n\t\t\t\t\t\ti: \"i32\",\n\t\t\t\t\t\tp: __ptrIR,\n\t\t\t\t\t\tP: __ptrIR,\n\t\t\t\t\t\ts: __ptrIR,\n\t\t\t\t\t\tj: \"i64\",\n\t\t\t\t\t\tf: \"f32\",\n\t\t\t\t\t\td: \"f64\"\n\t\t\t\t\t}),\n\t\t\t\t\ttypeCodes: Object.assign(Object.create(null), {\n\t\t\t\t\t\tf64: 124,\n\t\t\t\t\t\tf32: 125,\n\t\t\t\t\t\ti64: 126,\n\t\t\t\t\t\ti32: 127\n\t\t\t\t\t}),\n\t\t\t\t\tuleb128Encode: (tgt, method, n) => {\n\t\t\t\t\t\tif (n < 128) tgt[method](n);\n\t\t\t\t\t\telse tgt[method](n % 128 | 128, n >> 7);\n\t\t\t\t\t},\n\t\t\t\t\trxJSig: /^(\\w)\\((\\w*)\\)$/,\n\t\t\t\t\tsigParams: (sig) => {\n\t\t\t\t\t\tconst m = f._.rxJSig.exec(sig);\n\t\t\t\t\t\treturn m ? m[2] : sig.substr(1);\n\t\t\t\t\t},\n\t\t\t\t\tletterType: (x) => f._.sigTypes[x] || toss(\"Invalid signature letter:\", x),\n\t\t\t\t\tpushSigType: (dest, letter) => dest.push(f._.typeCodes[f._.letterType(letter)])\n\t\t\t\t};\n\t\t\t\tif (\"string\" === typeof func) {\n\t\t\t\t\tconst x = sig;\n\t\t\t\t\tsig = func;\n\t\t\t\t\tfunc = x;\n\t\t\t\t}\n\t\t\t\tconst _ = f._;\n\t\t\t\tconst sigParams = _.sigParams(sig);\n\t\t\t\tconst wasmCode = [1, 96];\n\t\t\t\t_.uleb128Encode(wasmCode, \"push\", sigParams.length);\n\t\t\t\tfor (const x of sigParams) _.pushSigType(wasmCode, x);\n\t\t\t\tif (\"v\" === sig[0]) wasmCode.push(0);\n\t\t\t\telse {\n\t\t\t\t\twasmCode.push(1);\n\t\t\t\t\t_.pushSigType(wasmCode, sig[0]);\n\t\t\t\t}\n\t\t\t\t_.uleb128Encode(wasmCode, \"unshift\", wasmCode.length);\n\t\t\t\twasmCode.unshift(0, 97, 115, 109, 1, 0, 0, 0, 1);\n\t\t\t\twasmCode.push(2, 7, 1, 1, 101, 1, 102, 0, 0, 7, 5, 1, 1, 102, 0, 0);\n\t\t\t\treturn new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array(wasmCode)), { e: { f: func } }).exports[\"f\"];\n\t\t\t};\n\t\t\t/**\n\t\t\tDocumented as target.installFunction() except for the 3rd\n\t\t\targument: if truthy, the newly-created function pointer\n\t\t\tis stashed in the current scoped-alloc scope and will be\n\t\t\tcleaned up at the matching scopedAllocPop(), else it\n\t\t\tis not stashed there.\n\t\t\t*/\n\t\t\tconst __installFunction = function f(func, sig, scoped) {\n\t\t\t\tif (scoped && !cache.scopedAlloc.length) toss(\"No scopedAllocPush() scope is active.\");\n\t\t\t\tif (\"string\" === typeof func) {\n\t\t\t\t\tconst x = sig;\n\t\t\t\t\tsig = func;\n\t\t\t\t\tfunc = x;\n\t\t\t\t}\n\t\t\t\tif (\"string\" !== typeof sig || !(func instanceof Function)) toss(\"Invalid arguments: expecting (function,signature) or (signature,function).\");\n\t\t\t\tconst ft = target.functionTable();\n\t\t\t\tconst oldLen = __asPtrType(ft.length);\n\t\t\t\tlet ptr;\n\t\t\t\twhile (ptr = cache.freeFuncIndexes.pop()) if (ft.get(ptr)) {\n\t\t\t\t\tptr = null;\n\t\t\t\t\tcontinue;\n\t\t\t\t} else break;\n\t\t\t\tif (!ptr) {\n\t\t\t\t\tptr = __asPtrType(oldLen);\n\t\t\t\t\tft.grow(__asPtrType(1));\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tft.set(ptr, func);\n\t\t\t\t\tif (scoped) cache.scopedAlloc.pushPtr(ptr);\n\t\t\t\t\treturn ptr;\n\t\t\t\t} catch (e) {\n\t\t\t\t\tif (!(e instanceof TypeError)) {\n\t\t\t\t\t\tif (ptr === oldLen) cache.freeFuncIndexes.push(oldLen);\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tconst fptr = target.jsFuncToWasm(func, sig);\n\t\t\t\t\tft.set(ptr, fptr);\n\t\t\t\t\tif (scoped) cache.scopedAlloc.pushPtr(ptr);\n\t\t\t\t} catch (e) {\n\t\t\t\t\tif (ptr === oldLen) cache.freeFuncIndexes.push(oldLen);\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t\treturn ptr;\n\t\t\t};\n\t\t\t/**\n\t\t\tExpects a JS function and signature, exactly as for\n\t\t\tthis.jsFuncToWasm(). It uses that function to create a\n\t\t\tWASM-exported function, installs that function to the next\n\t\t\tavailable slot of this.functionTable(), and returns the\n\t\t\tfunction's index in that table (which acts as a pointer to that\n\t\t\tfunction). The returned pointer can be passed to\n\t\t\tuninstallFunction() to uninstall it and free up the table slot\n\t\t\tfor reuse.\n\t\t\t\n\t\t\tIf passed (string,function) arguments then it treats the first\n\t\t\targument as the signature and second as the function.\n\t\t\t\n\t\t\tAs a special case, if the passed-in function is a WASM-exported\n\t\t\tfunction then the signature argument is ignored and func is\n\t\t\tinstalled as-is, without requiring re-compilation/re-wrapping.\n\t\t\t\n\t\t\tThis function will propagate an exception if\n\t\t\tWebAssembly.Table.grow() throws or this.jsFuncToWasm() throws.\n\t\t\tThe former case can happen in an Emscripten-compiled environment\n\t\t\twhen building without Emscripten's `-sALLOW_TABLE_GROWTH` flag.\n\t\t\t\n\t\t\tSidebar: this function differs from Emscripten's addFunction()\n\t\t\t_primarily_ in that it does not share that function's\n\t\t\tundocumented behavior of reusing a function if it's passed to\n\t\t\taddFunction() more than once, which leads to uninstallFunction()\n\t\t\tbreaking clients which do not take care to avoid that case:\n\t\t\t\n\t\t\thttps://github.com/emscripten-core/emscripten/issues/17323\n\t\t\t*/\n\t\t\ttarget.installFunction = (func, sig) => __installFunction(func, sig, false);\n\t\t\t/**\n\t\t\tWorks exactly like installFunction() but requires that a\n\t\t\tscopedAllocPush() is active and uninstalls the given function\n\t\t\twhen that alloc scope is popped via scopedAllocPop().\n\t\t\tThis is used for implementing JS/WASM function bindings which\n\t\t\tshould only persist for the life of a call into a single\n\t\t\tC-side function.\n\t\t\t*/\n\t\t\ttarget.scopedInstallFunction = (func, sig) => __installFunction(func, sig, true);\n\t\t\t/**\n\t\t\tRequires a pointer value previously returned from\n\t\t\tthis.installFunction(). Removes that function from the WASM\n\t\t\tfunction table, marks its table slot as free for re-use, and\n\t\t\treturns that function. It is illegal to call this before\n\t\t\tinstallFunction() has been called and results are undefined if\n\t\t\tptr was not returned by that function. The returned function\n\t\t\tmay be passed back to installFunction() to reinstall it.\n\t\t\t\n\t\t\tTo simplify certain use cases, if passed a falsy non-0 value\n\t\t\t(noting that 0 is a valid function table index), this function\n\t\t\thas no side effects and returns undefined.\n\t\t\t*/\n\t\t\ttarget.uninstallFunction = function(ptr) {\n\t\t\t\tif (!ptr && __NullPtr !== ptr) return void 0;\n\t\t\t\tconst ft = target.functionTable();\n\t\t\t\tcache.freeFuncIndexes.push(ptr);\n\t\t\t\tconst rc = ft.get(ptr);\n\t\t\t\tft.set(ptr, null);\n\t\t\t\treturn rc;\n\t\t\t};\n\t\t\t/**\n\t\t\tGiven a WASM heap memory address and a data type name in the form\n\t\t\t(i8, i16, i32, i64, float (or f32), double (or f64)), this\n\t\t\tfetches the numeric value from that address and returns it as a\n\t\t\tnumber or, for the case of type='i64', a BigInt (with the caveat\n\t\t\tBigInt will trigger an exception if this.bigIntEnabled is\n\t\t\tfalsy). Throws if given an invalid type.\n\t\t\t\n\t\t\tIf the first argument is an array, it is treated as an array of\n\t\t\taddresses and the result is an array of the values from each of\n\t\t\tthose address, using the same 2nd argument for determining the\n\t\t\tvalue type to fetch.\n\t\t\t\n\t\t\tAs a special case, if type ends with a `*`, it is considered to\n\t\t\tbe a pointer type and is treated as the WASM numeric type\n\t\t\tappropriate for the pointer size (==this.ptr.ir).\n\t\t\t\n\t\t\tWhile possibly not obvious, this routine and its poke()\n\t\t\tcounterpart are how pointer-to-value _output_ parameters in\n\t\t\tWASM-compiled C code can be interacted with:\n\t\t\t\n\t\t\t```\n\t\t\tconst ptr = alloc(4);\n\t\t\tpoke32(ptr, 0); // clear the ptr's value\n\t\t\taCFuncWithOutputPtrToInt32Arg(ptr); // e.g. void foo(int *x);\n\t\t\tconst result = peek32(ptr); // fetch ptr's value\n\t\t\tdealloc(ptr);\n\t\t\t```\n\t\t\t\n\t\t\tscopedAlloc() and friends can be used to make handling of\n\t\t\t`ptr` safe against leaks in the case of an exception:\n\t\t\t\n\t\t\t```\n\t\t\tlet result;\n\t\t\tconst scope = scopedAllocPush();\n\t\t\ttry{\n\t\t\tconst ptr = scopedAlloc(4);\n\t\t\tpoke32(ptr, 0);\n\t\t\taCFuncWithOutputPtrArg(ptr);\n\t\t\tresult = peek32(ptr);\n\t\t\t}finally{\n\t\t\tscopedAllocPop(scope);\n\t\t\t}\n\t\t\t```\n\t\t\t\n\t\t\tAs a rule poke() must be called to set (typically zero out) the\n\t\t\tpointer's value, else it will contain an essentially random\n\t\t\tvalue.\n\t\t\t\n\t\t\tACHTUNG: calling this often, e.g. in a loop, can have a noticably\n\t\t\tpainful impact on performance. Rather than doing so, use\n\t\t\theapForSize() to fetch the heap object and read directly from it.\n\t\t\t\n\t\t\tACHTUNG #2: ptr may be a BigInt (and generally will be in 64-bit\n\t\t\tbuilds) but this function must coerce it into a Number in order\n\t\t\tto access the heap's contents. Ergo: BitInts outside of the\n\t\t\t(extrardinarily genereous) address range exposed to browser-side\n\t\t\tWASM may cause misbehavior.\n\t\t\t\n\t\t\tSee also: poke()\n\t\t\t*/\n\t\t\ttarget.peek = function f(ptr, type = \"i8\") {\n\t\t\t\tif (type.endsWith(\"*\")) type = __ptrIR;\n\t\t\t\tconst c = cache.memory && cache.heapSize === cache.memory.buffer.byteLength ? cache : heapWrappers();\n\t\t\t\tconst list = Array.isArray(ptr) ? [] : void 0;\n\t\t\t\tlet rc;\n\t\t\t\tdo {\n\t\t\t\t\tif (list) ptr = arguments[0].shift();\n\t\t\t\t\tswitch (type) {\n\t\t\t\t\t\tcase \"i1\":\n\t\t\t\t\t\tcase \"i8\":\n\t\t\t\t\t\t\trc = c.HEAP8[Number(ptr) >> 0];\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"i16\":\n\t\t\t\t\t\t\trc = c.HEAP16[Number(ptr) >> 1];\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"i32\":\n\t\t\t\t\t\t\trc = c.HEAP32[Number(ptr) >> 2];\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"float\":\n\t\t\t\t\t\tcase \"f32\":\n\t\t\t\t\t\t\trc = c.HEAP32F[Number(ptr) >> 2];\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"double\":\n\t\t\t\t\t\tcase \"f64\":\n\t\t\t\t\t\t\trc = Number(c.HEAP64F[Number(ptr) >> 3]);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"i64\": if (c.HEAP64) {\n\t\t\t\t\t\t\trc = __BigInt(c.HEAP64[Number(ptr) >> 3]);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdefault: toss(\"Invalid type for peek():\", type);\n\t\t\t\t\t}\n\t\t\t\t\tif (list) list.push(rc);\n\t\t\t\t} while (list && arguments[0].length);\n\t\t\t\treturn list || rc;\n\t\t\t};\n\t\t\t/**\n\t\t\tThe counterpart of peek(), this sets a numeric value at the given\n\t\t\tWASM heap address, using the 3rd argument to define how many\n\t\t\tbytes are written. Throws if given an invalid type. See peek()\n\t\t\tfor details about the `type` argument. If the 3rd argument ends\n\t\t\twith `*` then it is treated as a pointer type and this function\n\t\t\tbehaves as if the 3rd argument were this.ptr.ir.\n\t\t\t\n\t\t\tIf the first argument is an array, it is treated like a list\n\t\t\tof pointers and the given value is written to each one.\n\t\t\t\n\t\t\tReturns `this`. (Prior to 2022-12-09 it returned this function.)\n\t\t\t\n\t\t\tACHTUNG #1: see peek()'s ACHTUNG #1.\n\t\t\t\n\t\t\tACHTUNG #2: see peek()'s ACHTUNG #2.\n\t\t\t*/\n\t\t\ttarget.poke = function(ptr, value, type = \"i8\") {\n\t\t\t\tif (type.endsWith(\"*\")) type = __ptrIR;\n\t\t\t\tconst c = cache.memory && cache.heapSize === cache.memory.buffer.byteLength ? cache : heapWrappers();\n\t\t\t\tfor (const p of Array.isArray(ptr) ? ptr : [ptr]) switch (type) {\n\t\t\t\t\tcase \"i1\":\n\t\t\t\t\tcase \"i8\":\n\t\t\t\t\t\tc.HEAP8[Number(p) >> 0] = value;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tcase \"i16\":\n\t\t\t\t\t\tc.HEAP16[Number(p) >> 1] = value;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tcase \"i32\":\n\t\t\t\t\t\tc.HEAP32[Number(p) >> 2] = value;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tcase \"float\":\n\t\t\t\t\tcase \"f32\":\n\t\t\t\t\t\tc.HEAP32F[Number(p) >> 2] = value;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tcase \"double\":\n\t\t\t\t\tcase \"f64\":\n\t\t\t\t\t\tc.HEAP64F[Number(p) >> 3] = value;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\tcase \"i64\": if (c.HEAP64) {\n\t\t\t\t\t\tc.HEAP64[Number(p) >> 3] = __BigInt(value);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tdefault: toss(\"Invalid type for poke(): \" + type);\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t};\n\t\t\t/**\n\t\t\tConvenience form of peek() intended for fetching\n\t\t\tpointer-to-pointer values. If passed a single non-array argument\n\t\t\tit returns the value of that one pointer address. If passed\n\t\t\tmultiple arguments, or a single array of arguments, it returns an\n\t\t\tarray of their values.\n\t\t\t*/\n\t\t\ttarget.peekPtr = (...ptr) => target.peek(1 === ptr.length ? ptr[0] : ptr, __ptrIR);\n\t\t\t/**\n\t\t\tA variant of poke() intended for setting pointer-to-pointer\n\t\t\tvalues. Its differences from poke() are that (1) it defaults to a\n\t\t\tvalue of 0 and (2) it always writes to the pointer-sized heap\n\t\t\tview.\n\t\t\t*/\n\t\t\ttarget.pokePtr = (ptr, value = 0) => target.poke(ptr, value, __ptrIR);\n\t\t\t/**\n\t\t\tConvenience form of peek() intended for fetching i8 values. If\n\t\t\tpassed a single non-array argument it returns the value of that\n\t\t\tone pointer address. If passed multiple arguments, or a single\n\t\t\tarray of arguments, it returns an array of their values.\n\t\t\t*/\n\t\t\ttarget.peek8 = (...ptr) => target.peek(1 === ptr.length ? ptr[0] : ptr, \"i8\");\n\t\t\t/**\n\t\t\tConvenience form of poke() intended for setting individual bytes.\n\t\t\tIts difference from poke() is that it always writes to the\n\t\t\ti8-sized heap view.\n\t\t\t*/\n\t\t\ttarget.poke8 = (ptr, value) => target.poke(ptr, value, \"i8\");\n\t\t\t/** i16 variant of peek8(). */\n\t\t\ttarget.peek16 = (...ptr) => target.peek(1 === ptr.length ? ptr[0] : ptr, \"i16\");\n\t\t\t/** i16 variant of poke8(). */\n\t\t\ttarget.poke16 = (ptr, value) => target.poke(ptr, value, \"i16\");\n\t\t\t/** i32 variant of peek8(). */\n\t\t\ttarget.peek32 = (...ptr) => target.peek(1 === ptr.length ? ptr[0] : ptr, \"i32\");\n\t\t\t/** i32 variant of poke8(). */\n\t\t\ttarget.poke32 = (ptr, value) => target.poke(ptr, value, \"i32\");\n\t\t\t/** i64 variant of peek8(). Will throw if this build is not\n\t\t\tconfigured for BigInt support. */\n\t\t\ttarget.peek64 = (...ptr) => target.peek(1 === ptr.length ? ptr[0] : ptr, \"i64\");\n\t\t\t/** i64 variant of poke8(). Will throw if this build is not\n\t\t\tconfigured for BigInt support. Note that this returns\n\t\t\ta BigInt-type value, not a Number-type value. */\n\t\t\ttarget.poke64 = (ptr, value) => target.poke(ptr, value, \"i64\");\n\t\t\t/** f32 variant of peek8(). */\n\t\t\ttarget.peek32f = (...ptr) => target.peek(1 === ptr.length ? ptr[0] : ptr, \"f32\");\n\t\t\t/** f32 variant of poke8(). */\n\t\t\ttarget.poke32f = (ptr, value) => target.poke(ptr, value, \"f32\");\n\t\t\t/** f64 variant of peek8(). */\n\t\t\ttarget.peek64f = (...ptr) => target.peek(1 === ptr.length ? ptr[0] : ptr, \"f64\");\n\t\t\t/** f64 variant of poke8(). */\n\t\t\ttarget.poke64f = (ptr, value) => target.poke(ptr, value, \"f64\");\n\t\t\t/** Deprecated alias for getMemValue() */\n\t\t\ttarget.getMemValue = target.peek;\n\t\t\t/** Deprecated alias for peekPtr() */\n\t\t\ttarget.getPtrValue = target.peekPtr;\n\t\t\t/** Deprecated alias for poke() */\n\t\t\ttarget.setMemValue = target.poke;\n\t\t\t/** Deprecated alias for pokePtr() */\n\t\t\ttarget.setPtrValue = target.pokePtr;\n\t\t\t/**\n\t\t\tReturns true if the given value appears to be legal for use as\n\t\t\ta WASM pointer value. Its _range_ of values is not (cannot be)\n\t\t\tvalidated except to ensure that it is a 32-bit integer with a\n\t\t\tvalue of 0 or greater. Likewise, it cannot verify whether the\n\t\t\tvalue actually refers to allocated memory in the WASM heap.\n\t\t\t\n\t\t\tWhether or not null or undefined are legal are context-dependent.\n\t\t\tThey generally are legal but this function does not treat them as\n\t\t\tsuch because they're not strictly legal for passing as-is as WASM\n\t\t\tinteger arguments.\n\t\t\t*/\n\t\t\ttarget.isPtr32 = (ptr) => \"number\" === typeof ptr && ptr >= 0 && ptr === (ptr | 0);\n\t\t\t/** 64-bit counterpart of isPtr32() and falls back to that function\n\t\t\tif ptr is not a BigInt. */\n\t\t\ttarget.isPtr64 = (ptr) => \"bigint\" === typeof ptr ? ptr >= 0 : target.isPtr32(ptr);\n\t\t\t/**\n\t\t\tisPtr() is an alias for isPtr32() or isPtr64(), depending on the\n\t\t\tvalue of target.ptr.size.\n\t\t\t*/\n\t\t\ttarget.isPtr = 4 === __ptrSize ? target.isPtr32 : target.isPtr64;\n\t\t\t/**\n\t\t\tExpects ptr to be a pointer into the WASM heap memory which\n\t\t\trefers to a NUL-terminated C-style string encoded as UTF-8.\n\t\t\tReturns the length, in bytes, of the string, as for `strlen(3)`.\n\t\t\tAs a special case, if !ptr or if it's not a pointer then it\n\t\t\treturns `null`. Throws if ptr is out of range for\n\t\t\ttarget.heap8u().\n\t\t\t*/\n\t\t\ttarget.cstrlen = function(ptr) {\n\t\t\t\tif (!ptr || !target.isPtr(ptr)) return null;\n\t\t\t\tptr = Number(ptr);\n\t\t\t\tconst h = heapWrappers().HEAP8U;\n\t\t\t\tlet pos = ptr;\n\t\t\t\tfor (; h[pos] !== 0; ++pos);\n\t\t\t\treturn pos - ptr;\n\t\t\t};\n\t\t\t/** Internal helper to use in operations which need to distinguish\n\t\t\tbetween TypedArrays which are backed by a SharedArrayBuffer\n\t\t\tfrom those which are not. */\n\t\t\tconst __SAB = \"undefined\" === typeof SharedArrayBuffer ? function() {} : SharedArrayBuffer;\n\t\t\t/** Returns true if the given TypedArray object is backed by a\n\t\t\tSharedArrayBuffer, else false. */\n\t\t\tconst isSharedTypedArray = (aTypedArray) => aTypedArray.buffer instanceof __SAB;\n\t\t\ttarget.isSharedTypedArray = isSharedTypedArray;\n\t\t\t/**\n\t\t\tReturns either aTypedArray.slice(begin,end) (if\n\t\t\taTypedArray.buffer is a SharedArrayBuffer) or\n\t\t\taTypedArray.subarray(begin,end) (if it's not).\n\t\t\t\n\t\t\tThis distinction is important for APIs which don't like to\n\t\t\twork on SABs, e.g. TextDecoder, and possibly for our\n\t\t\town APIs which work on memory ranges which \"might\" be\n\t\t\tmodified by other threads while they're working.\n\t\t\t\n\t\t\tbegin and end may be of type Number or (in 64-bit builds) BigInt\n\t\t\t(which get coerced to Numbers).\n\t\t\t*/\n\t\t\tconst typedArrayPart = (aTypedArray, begin, end) => {\n\t\t\t\tif (8 === __ptrSize) {\n\t\t\t\t\tif (\"bigint\" === typeof begin) begin = Number(begin);\n\t\t\t\t\tif (\"bigint\" === typeof end) end = Number(end);\n\t\t\t\t}\n\t\t\t\treturn isSharedTypedArray(aTypedArray) ? aTypedArray.slice(begin, end) : aTypedArray.subarray(begin, end);\n\t\t\t};\n\t\t\ttarget.typedArrayPart = typedArrayPart;\n\t\t\t/**\n\t\t\tUses TextDecoder to decode the given half-open range of the given\n\t\t\tTypedArray to a string. This differs from a simple call to\n\t\t\tTextDecoder in that it accounts for whether the first argument is\n\t\t\tbacked by a SharedArrayBuffer or not, and can work more\n\t\t\tefficiently if it's not (TextDecoder refuses to act upon an SAB).\n\t\t\t\n\t\t\tIf begin/end are not provided or are falsy then each defaults to\n\t\t\tthe start/end of the array.\n\t\t\t*/\n\t\t\tconst typedArrayToString = (typedArray, begin, end) => cache.utf8Decoder.decode(typedArrayPart(typedArray, begin, end));\n\t\t\ttarget.typedArrayToString = typedArrayToString;\n\t\t\t/**\n\t\t\tExpects ptr to be a pointer into the WASM heap memory which\n\t\t\trefers to a NUL-terminated C-style string encoded as UTF-8. This\n\t\t\tfunction counts its byte length using cstrlen() then returns a\n\t\t\tJS-format string representing its contents. As a special case, if\n\t\t\tptr is falsy or not a pointer, `null` is returned.\n\t\t\t*/\n\t\t\ttarget.cstrToJs = function(ptr) {\n\t\t\t\tconst n = target.cstrlen(ptr);\n\t\t\t\treturn n ? typedArrayToString(heapWrappers().HEAP8U, Number(ptr), Number(ptr) + n) : null === n ? n : \"\";\n\t\t\t};\n\t\t\t/**\n\t\t\tGiven a JS string, this function returns its UTF-8 length in\n\t\t\tbytes. Returns null if str is not a string.\n\t\t\t*/\n\t\t\ttarget.jstrlen = function(str) {\n\t\t\t\t/** Attribution: derived from Emscripten's lengthBytesUTF8() */\n\t\t\t\tif (\"string\" !== typeof str) return null;\n\t\t\t\tconst n = str.length;\n\t\t\t\tlet len = 0;\n\t\t\t\tfor (let i = 0; i < n; ++i) {\n\t\t\t\t\tlet u = str.charCodeAt(i);\n\t\t\t\t\tif (u >= 55296 && u <= 57343) u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023;\n\t\t\t\t\tif (u <= 127) ++len;\n\t\t\t\t\telse if (u <= 2047) len += 2;\n\t\t\t\t\telse if (u <= 65535) len += 3;\n\t\t\t\t\telse len += 4;\n\t\t\t\t}\n\t\t\t\treturn len;\n\t\t\t};\n\t\t\t/**\n\t\t\tEncodes the given JS string as UTF8 into the given TypedArray\n\t\t\ttgt, starting at the given offset and writing, at most, maxBytes\n\t\t\tbytes (including the NUL terminator if addNul is true, else no\n\t\t\tNUL is added). If it writes any bytes at all and addNul is true,\n\t\t\tit always NUL-terminates the output, even if doing so means that\n\t\t\tthe NUL byte is all that it writes.\n\t\t\t\n\t\t\tIf maxBytes is negative (the default) then it is treated as the\n\t\t\tremaining length of tgt, starting at the given offset.\n\t\t\t\n\t\t\tIf writing the last character would surpass the maxBytes count\n\t\t\tbecause the character is multi-byte, that character will not be\n\t\t\twritten (as opposed to writing a truncated multi-byte character).\n\t\t\tThis can lead to it writing as many as 3 fewer bytes than\n\t\t\tmaxBytes specifies.\n\t\t\t\n\t\t\tReturns the number of bytes written to the target, _including_\n\t\t\tthe NUL terminator (if any). If it returns 0, it wrote nothing at\n\t\t\tall, which can happen if:\n\t\t\t\n\t\t\t- str is empty and addNul is false.\n\t\t\t- offset < 0.\n\t\t\t- maxBytes == 0.\n\t\t\t- maxBytes is less than the byte length of a multi-byte str[0].\n\t\t\t\n\t\t\tThrows if tgt is not an Int8Array or Uint8Array.\n\t\t\t\n\t\t\tDesign notes:\n\t\t\t\n\t\t\t- In C's strcpy(), the destination pointer is the first\n\t\t\targument. That is not the case here primarily because the 3rd+\n\t\t\targuments are all referring to the destination, so it seems to\n\t\t\tmake sense to have them grouped with it.\n\t\t\t\n\t\t\t- Emscripten's counterpart of this function (stringToUTF8Array())\n\t\t\treturns the number of bytes written sans NUL terminator. That\n\t\t\tis, however, ambiguous: str.length===0 or maxBytes===(0 or 1)\n\t\t\tall cause 0 to be returned.\n\t\t\t*/\n\t\t\ttarget.jstrcpy = function(jstr, tgt, offset = 0, maxBytes = -1, addNul = true) {\n\t\t\t\t/** Attribution: the encoding bits are taken from Emscripten's\n\t\t\t\tstringToUTF8Array(). */\n\t\t\t\tif (!tgt || !(tgt instanceof Int8Array) && !(tgt instanceof Uint8Array)) toss(\"jstrcpy() target must be an Int8Array or Uint8Array.\");\n\t\t\t\tmaxBytes = Number(maxBytes);\n\t\t\t\toffset = Number(offset);\n\t\t\t\tif (maxBytes < 0) maxBytes = tgt.length - offset;\n\t\t\t\tif (!(maxBytes > 0) || !(offset >= 0)) return 0;\n\t\t\t\tlet i = 0, max = jstr.length;\n\t\t\t\tconst begin = offset, end = offset + maxBytes - (addNul ? 1 : 0);\n\t\t\t\tfor (; i < max && offset < end; ++i) {\n\t\t\t\t\tlet u = jstr.charCodeAt(i);\n\t\t\t\t\tif (u >= 55296 && u <= 57343) u = 65536 + ((u & 1023) << 10) | jstr.charCodeAt(++i) & 1023;\n\t\t\t\t\tif (u <= 127) {\n\t\t\t\t\t\tif (offset >= end) break;\n\t\t\t\t\t\ttgt[offset++] = u;\n\t\t\t\t\t} else if (u <= 2047) {\n\t\t\t\t\t\tif (offset + 1 >= end) break;\n\t\t\t\t\t\ttgt[offset++] = 192 | u >> 6;\n\t\t\t\t\t\ttgt[offset++] = 128 | u & 63;\n\t\t\t\t\t} else if (u <= 65535) {\n\t\t\t\t\t\tif (offset + 2 >= end) break;\n\t\t\t\t\t\ttgt[offset++] = 224 | u >> 12;\n\t\t\t\t\t\ttgt[offset++] = 128 | u >> 6 & 63;\n\t\t\t\t\t\ttgt[offset++] = 128 | u & 63;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (offset + 3 >= end) break;\n\t\t\t\t\t\ttgt[offset++] = 240 | u >> 18;\n\t\t\t\t\t\ttgt[offset++] = 128 | u >> 12 & 63;\n\t\t\t\t\t\ttgt[offset++] = 128 | u >> 6 & 63;\n\t\t\t\t\t\ttgt[offset++] = 128 | u & 63;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (addNul) tgt[offset++] = 0;\n\t\t\t\treturn offset - begin;\n\t\t\t};\n\t\t\t/**\n\t\t\tWorks similarly to C's strncpy(), copying, at most, n bytes (not\n\t\t\tcharacters) from srcPtr to tgtPtr. It copies until n bytes have\n\t\t\tbeen copied or a 0 byte is reached in src. _Unlike_ strncpy(), it\n\t\t\treturns the number of bytes it assigns in tgtPtr, _including_ the\n\t\t\tNUL byte (if any). If n is reached before a NUL byte in srcPtr,\n\t\t\ttgtPtr will _not_ be NULL-terminated. If a NUL byte is reached\n\t\t\tbefore n bytes are copied, tgtPtr will be NUL-terminated.\n\t\t\t\n\t\t\tIf n is negative, cstrlen(srcPtr)+1 is used to calculate it, the\n\t\t\t+1 being for the NUL byte.\n\t\t\t\n\t\t\tThrows if tgtPtr or srcPtr are falsy. Results are undefined if:\n\t\t\t\n\t\t\t- either is not a pointer into the WASM heap or\n\t\t\t\n\t\t\t- srcPtr is not NUL-terminated AND n is less than srcPtr's\n\t\t\tlogical length.\n\t\t\t\n\t\t\tACHTUNG: it is possible to copy partial multi-byte characters\n\t\t\tthis way, and converting such strings back to JS strings will\n\t\t\thave undefined results.\n\t\t\t*/\n\t\t\ttarget.cstrncpy = function(tgtPtr, srcPtr, n) {\n\t\t\t\tif (!tgtPtr || !srcPtr) toss(\"cstrncpy() does not accept NULL strings.\");\n\t\t\t\tif (n < 0) n = target.cstrlen(strPtr) + 1;\n\t\t\t\telse if (!(n > 0)) return 0;\n\t\t\t\tconst heap = target.heap8u();\n\t\t\t\tlet i = 0, ch;\n\t\t\t\tconst tgtNumber = Number(tgtPtr), srcNumber = Number(srcPtr);\n\t\t\t\tfor (; i < n && (ch = heap[srcNumber + i]); ++i) heap[tgtNumber + i] = ch;\n\t\t\t\tif (i < n) heap[tgtNumber + i++] = 0;\n\t\t\t\treturn i;\n\t\t\t};\n\t\t\t/**\n\t\t\tFor the given JS string, returns a Uint8Array of its contents\n\t\t\tencoded as UTF-8. If addNul is true, the returned array will have\n\t\t\ta trailing 0 entry, else it will not.\n\t\t\t*/\n\t\t\ttarget.jstrToUintArray = (str, addNul = false) => {\n\t\t\t\treturn cache.utf8Encoder.encode(addNul ? str + \"\\0\" : str);\n\t\t\t};\n\t\t\tconst __affirmAlloc = (obj, funcName) => {\n\t\t\t\tif (!(obj.alloc instanceof Function) || !(obj.dealloc instanceof Function)) toss(\"Object is missing alloc() and/or dealloc() function(s)\", \"required by\", funcName + \"().\");\n\t\t\t};\n\t\t\tconst __allocCStr = function(jstr, returnWithLength, allocator, funcName) {\n\t\t\t\t__affirmAlloc(target, funcName);\n\t\t\t\tif (\"string\" !== typeof jstr) return null;\n\t\t\t\tconst u = cache.utf8Encoder.encode(jstr), ptr = allocator(u.length + 1);\n\t\t\t\tlet toFree = ptr;\n\t\t\t\ttry {\n\t\t\t\t\tconst heap = heapWrappers().HEAP8U;\n\t\t\t\t\theap.set(u, Number(ptr));\n\t\t\t\t\theap[__ptrAdd(ptr, u.length)] = 0;\n\t\t\t\t\ttoFree = __NullPtr;\n\t\t\t\t\treturn returnWithLength ? [ptr, u.length] : ptr;\n\t\t\t\t} finally {\n\t\t\t\t\tif (toFree) target.dealloc(toFree);\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\tUses target.alloc() to allocate enough memory for jstrlen(jstr)+1\n\t\t\tbytes of memory, copies jstr to that memory using jstrcpy(),\n\t\t\tNUL-terminates it, and returns the pointer to that C-string.\n\t\t\tOwnership of the pointer is transfered to the caller, who must\n\t\t\teventually pass the pointer to dealloc() to free it.\n\t\t\t\n\t\t\tIf passed a truthy 2nd argument then its return semantics change:\n\t\t\tit returns [ptr,n], where ptr is the C-string's pointer and n is\n\t\t\tits cstrlen().\n\t\t\t\n\t\t\tThrows if `target.alloc` or `target.dealloc` are not functions.\n\t\t\t*/\n\t\t\ttarget.allocCString = (jstr, returnWithLength = false) => __allocCStr(jstr, returnWithLength, target.alloc, \"allocCString()\");\n\t\t\t/**\n\t\t\tStarts an \"allocation scope.\" All allocations made using\n\t\t\tscopedAlloc() are recorded in this scope and are freed when the\n\t\t\tvalue returned from this function is passed to\n\t\t\tscopedAllocPop().\n\t\t\t\n\t\t\tThis family of functions requires that the API's object have both\n\t\t\t`alloc()` and `dealloc()` methods, else this function will throw.\n\t\t\t\n\t\t\tIntended usage:\n\t\t\t\n\t\t\t```\n\t\t\tconst scope = scopedAllocPush();\n\t\t\ttry {\n\t\t\tconst ptr1 = scopedAlloc(100);\n\t\t\tconst ptr2 = scopedAlloc(200);\n\t\t\tconst ptr3 = scopedAlloc(300);\n\t\t\t...\n\t\t\t// Note that only allocations made via scopedAlloc()\n\t\t\t// are managed by this allocation scope.\n\t\t\t}finally{\n\t\t\tscopedAllocPop(scope);\n\t\t\t}\n\t\t\t```\n\t\t\t\n\t\t\tThe value returned by this function must be treated as opaque by\n\t\t\tthe caller, suitable _only_ for passing to scopedAllocPop().\n\t\t\tIts type and value are not part of this function's API and may\n\t\t\tchange in any given version of this code.\n\t\t\t\n\t\t\t`scopedAlloc.level` can be used to determine how many scoped\n\t\t\talloc levels are currently active.\n\t\t\t*/\n\t\t\ttarget.scopedAllocPush = function() {\n\t\t\t\t__affirmAlloc(target, \"scopedAllocPush\");\n\t\t\t\tconst a = [];\n\t\t\t\tcache.scopedAlloc.push(a);\n\t\t\t\treturn a;\n\t\t\t};\n\t\t\t/**\n\t\t\tCleans up all allocations made using scopedAlloc() in the context\n\t\t\tof the given opaque state object, which must be a value returned\n\t\t\tby scopedAllocPush(). See that function for an example of how to\n\t\t\tuse this function. It also uninstalls any WASM functions\n\t\t\tinstalled with scopedInstallFunction().\n\t\t\t\n\t\t\tThough scoped allocations are managed like a stack, this API\n\t\t\tbehaves properly if allocation scopes are popped in an order\n\t\t\tother than the order they were pushed. The intent is that it\n\t\t\t_always_ be used in a stack-like manner.\n\t\t\t\n\t\t\tIf called with no arguments, it pops the most recent\n\t\t\tscopedAllocPush() result:\n\t\t\t\n\t\t\t```\n\t\t\tscopedAllocPush();\n\t\t\ttry{ ... } finally { scopedAllocPop(); }\n\t\t\t```\n\t\t\t\n\t\t\tIt's generally recommended that it be passed an explicit argument\n\t\t\tto help ensure that push/push are used in matching pairs, but in\n\t\t\ttrivial code that may be a non-issue.\n\t\t\t*/\n\t\t\ttarget.scopedAllocPop = function(state) {\n\t\t\t\t__affirmAlloc(target, \"scopedAllocPop\");\n\t\t\t\tconst n = arguments.length ? cache.scopedAlloc.indexOf(state) : cache.scopedAlloc.length - 1;\n\t\t\t\tif (n < 0) toss(\"Invalid state object for scopedAllocPop().\");\n\t\t\t\tif (0 === arguments.length) state = cache.scopedAlloc[n];\n\t\t\t\tcache.scopedAlloc.splice(n, 1);\n\t\t\t\tfor (let p; p = state.pop();) if (target.functionEntry(p)) target.uninstallFunction(p);\n\t\t\t\telse target.dealloc(p);\n\t\t\t};\n\t\t\t/**\n\t\t\tAllocates n bytes of memory using this.alloc() and records that\n\t\t\tfact in the state for the most recent call of scopedAllocPush().\n\t\t\tOwnership of the memory is given to scopedAllocPop(), which\n\t\t\twill clean it up when it is called. The memory _must not_ be\n\t\t\tpassed to this.dealloc(). Throws if this API object is missing\n\t\t\tthe required `alloc()` or `dealloc()` functions or no scoped\n\t\t\talloc is active.\n\t\t\t\n\t\t\tSee scopedAllocPush() for an example of how to use this function.\n\t\t\t\n\t\t\tThe `level` property of this function can be queried to query how\n\t\t\tmany scoped allocation levels are currently active.\n\t\t\t\n\t\t\tSee also: scopedAllocPtr(), scopedAllocCString()\n\t\t\t*/\n\t\t\ttarget.scopedAlloc = function(n) {\n\t\t\t\tif (!cache.scopedAlloc.length) toss(\"No scopedAllocPush() scope is active.\");\n\t\t\t\tconst p = __asPtrType(target.alloc(n));\n\t\t\t\treturn cache.scopedAlloc.pushPtr(p);\n\t\t\t};\n\t\t\tObject.defineProperty(target.scopedAlloc, \"level\", {\n\t\t\t\tconfigurable: false,\n\t\t\t\tenumerable: false,\n\t\t\t\tget: () => cache.scopedAlloc.length,\n\t\t\t\tset: () => toss(\"The 'active' property is read-only.\")\n\t\t\t});\n\t\t\t/**\n\t\t\tWorks identically to allocCString() except that it allocates the\n\t\t\tmemory using scopedAlloc().\n\t\t\t\n\t\t\tWill throw if no scopedAllocPush() call is active.\n\t\t\t*/\n\t\t\ttarget.scopedAllocCString = (jstr, returnWithLength = false) => __allocCStr(jstr, returnWithLength, target.scopedAlloc, \"scopedAllocCString()\");\n\t\t\tconst __allocMainArgv = function(isScoped, list) {\n\t\t\t\tconst pList = target[isScoped ? \"scopedAlloc\" : \"alloc\"]((list.length + 1) * target.ptr.size);\n\t\t\t\tlet i = 0;\n\t\t\t\tlist.forEach((e) => {\n\t\t\t\t\ttarget.pokePtr(__ptrAdd(pList, target.ptr.size * i++), target[isScoped ? \"scopedAllocCString\" : \"allocCString\"](\"\" + e));\n\t\t\t\t});\n\t\t\t\ttarget.pokePtr(__ptrAdd(pList, target.ptr.size * i), 0);\n\t\t\t\treturn pList;\n\t\t\t};\n\t\t\t/**\n\t\t\tCreates an array, using scopedAlloc(), suitable for passing to a\n\t\t\tC-level main() routine. The input is a collection with a length\n\t\t\tproperty and a forEach() method. A block of memory\n\t\t\t(list.length+1) entries long is allocated and each pointer-sized\n\t\t\tblock of that memory is populated with a scopedAllocCString()\n\t\t\tconversion of the (\"\"+value) of each element, with the exception\n\t\t\tthat the final entry is a NULL pointer. Returns a pointer to the\n\t\t\tstart of the list, suitable for passing as the 2nd argument to a\n\t\t\tC-style main() function.\n\t\t\t\n\t\t\tThrows if scopedAllocPush() is not active.\n\t\t\t\n\t\t\tDesign note: the returned array is allocated with an extra NULL\n\t\t\tpointer entry to accommodate certain APIs, but client code which\n\t\t\tdoes not need that functionality should treat the returned array\n\t\t\tas list.length entries long.\n\t\t\t*/\n\t\t\ttarget.scopedAllocMainArgv = (list) => __allocMainArgv(true, list);\n\t\t\t/**\n\t\t\tIdentical to scopedAllocMainArgv() but uses alloc() instead of\n\t\t\tscopedAlloc().\n\t\t\t*/\n\t\t\ttarget.allocMainArgv = (list) => __allocMainArgv(false, list);\n\t\t\t/**\n\t\t\tExpects to be given a C-style string array and its length. It\n\t\t\treturns a JS array of strings and/or nulls: any entry in the\n\t\t\tpArgv array which is NULL results in a null entry in the result\n\t\t\tarray. If argc is 0 then an empty array is returned.\n\t\t\t\n\t\t\tResults are undefined if any entry in the first argc entries of\n\t\t\tpArgv are neither 0 (NULL) nor legal UTF-format C strings.\n\t\t\t\n\t\t\tTo be clear, the expected C-style arguments to be passed to this\n\t\t\tfunction are `(int, char **)` (optionally const-qualified).\n\t\t\t*/\n\t\t\ttarget.cArgvToJs = (argc, pArgv) => {\n\t\t\t\tconst list = [];\n\t\t\t\tfor (let i = 0; i < argc; ++i) {\n\t\t\t\t\tconst arg = target.peekPtr(__ptrAdd(pArgv, target.ptr.size * i));\n\t\t\t\t\tlist.push(arg ? target.cstrToJs(arg) : null);\n\t\t\t\t}\n\t\t\t\treturn list;\n\t\t\t};\n\t\t\t/**\n\t\t\tWraps function call func() in a scopedAllocPush() and\n\t\t\tscopedAllocPop() block, such that all calls to scopedAlloc() and\n\t\t\tfriends from within that call will have their memory freed\n\t\t\tautomatically when func() returns. If func throws or propagates\n\t\t\tan exception, the scope is still popped, otherwise it returns the\n\t\t\tresult of calling func().\n\t\t\t*/\n\t\t\ttarget.scopedAllocCall = function(func) {\n\t\t\t\ttarget.scopedAllocPush();\n\t\t\t\ttry {\n\t\t\t\t\treturn func();\n\t\t\t\t} finally {\n\t\t\t\t\ttarget.scopedAllocPop();\n\t\t\t\t}\n\t\t\t};\n\t\t\t/** Internal impl for allocPtr() and scopedAllocPtr(). */\n\t\t\tconst __allocPtr = function(howMany, safePtrSize, method) {\n\t\t\t\t__affirmAlloc(target, method);\n\t\t\t\tconst pIr = safePtrSize ? \"i64\" : __ptrIR;\n\t\t\t\tlet m = target[method](howMany * (safePtrSize ? 8 : __ptrSize));\n\t\t\t\ttarget.poke(m, 0, pIr);\n\t\t\t\tif (1 === howMany) return m;\n\t\t\t\tconst a = [m];\n\t\t\t\tfor (let i = 1; i < howMany; ++i) {\n\t\t\t\t\tm = __ptrAdd(m, safePtrSize ? 8 : __ptrSize);\n\t\t\t\t\ta[i] = m;\n\t\t\t\t\ttarget.poke(m, 0, pIr);\n\t\t\t\t}\n\t\t\t\treturn a;\n\t\t\t};\n\t\t\t/**\n\t\t\tAllocates one or more pointers as a single chunk of memory and\n\t\t\tzeroes them out.\n\t\t\t\n\t\t\tThe first argument is the number of pointers to allocate. The\n\t\t\tsecond specifies whether they should use a \"safe\" pointer size (8\n\t\t\tbytes) or whether they may use the default pointer size\n\t\t\t(typically 4 but also possibly 8).\n\t\t\t\n\t\t\tHow the result is returned depends on its first argument: if\n\t\t\tpassed 1, it returns the allocated memory address. If passed more\n\t\t\tthan one then an array of pointer addresses is returned, which\n\t\t\tcan optionally be used with \"destructuring assignment\" like this:\n\t\t\t\n\t\t\t```\n\t\t\tconst [p1, p2, p3] = allocPtr(3);\n\t\t\t```\n\t\t\t\n\t\t\tACHTUNG: when freeing the memory, pass only the _first_ result\n\t\t\tvalue to dealloc(). The others are part of the same memory chunk\n\t\t\tand must not be freed separately.\n\t\t\t\n\t\t\tThe reason for the 2nd argument is...\n\t\t\t\n\t\t\tWhen one of the returned pointers will refer to a 64-bit value,\n\t\t\te.g. a double or int64, and that value must be written or fetched,\n\t\t\te.g. using poke() or peek(), it is important that\n\t\t\tthe pointer in question be aligned to an 8-byte boundary or else\n\t\t\tit will not be fetched or written properly and will corrupt or\n\t\t\tread neighboring memory. It is only safe to pass false when the\n\t\t\tclient code is certain that it will only get/fetch 4-byte values\n\t\t\t(or smaller).\n\t\t\t*/\n\t\t\ttarget.allocPtr = (howMany = 1, safePtrSize = true) => __allocPtr(howMany, safePtrSize, \"alloc\");\n\t\t\t/**\n\t\t\tIdentical to allocPtr() except that it allocates using scopedAlloc()\n\t\t\tinstead of alloc().\n\t\t\t*/\n\t\t\ttarget.scopedAllocPtr = (howMany = 1, safePtrSize = true) => __allocPtr(howMany, safePtrSize, \"scopedAlloc\");\n\t\t\t/**\n\t\t\tIf target.exports[name] exists, it is returned, else an\n\t\t\texception is thrown.\n\t\t\t*/\n\t\t\ttarget.xGet = function(name) {\n\t\t\t\treturn target.exports[name] || toss(\"Cannot find exported symbol:\", name);\n\t\t\t};\n\t\t\tconst __argcMismatch = (f, n) => toss(f + \"() requires\", n, \"argument(s).\");\n\t\t\t/**\n\t\t\tLooks up a WASM-exported function named fname from\n\t\t\ttarget.exports. If found, it is called, passed all remaining\n\t\t\targuments, and its return value is returned to xCall's caller. If\n\t\t\tnot found, an exception is thrown. This function does no\n\t\t\tconversion of argument or return types, but see xWrap() and\n\t\t\txCallWrapped() for variants which do.\n\t\t\t\n\t\t\tIf the first argument is a function is is assumed to be\n\t\t\ta WASM-bound function and is used as-is instead of looking up\n\t\t\tthe function via xGet().\n\t\t\t\n\t\t\tAs a special case, if passed only 1 argument after the name and\n\t\t\tthat argument in an Array, that array's entries become the\n\t\t\tfunction arguments. (This is not an ambiguous case because it's\n\t\t\tnot legal to pass an Array object to a WASM function.)\n\t\t\t*/\n\t\t\ttarget.xCall = function(fname, ...args) {\n\t\t\t\tconst f = fname instanceof Function ? fname : target.xGet(fname);\n\t\t\t\tif (!(f instanceof Function)) toss(\"Exported symbol\", fname, \"is not a function.\");\n\t\t\t\tif (f.length !== args.length) __argcMismatch(f === fname ? f.name : fname, f.length);\n\t\t\t\treturn 2 === arguments.length && Array.isArray(arguments[1]) ? f.apply(null, arguments[1]) : f.apply(null, args);\n\t\t\t};\n\t\t\t/**\n\t\t\tState for use with xWrap().\n\t\t\t*/\n\t\t\tcache.xWrap = Object.create(null);\n\t\t\tcache.xWrap.convert = Object.create(null);\n\t\t\t/** Map of type names to argument conversion functions. */\n\t\t\tcache.xWrap.convert.arg = /* @__PURE__ */ new Map();\n\t\t\t/** Map of type names to return result conversion functions. */\n\t\t\tcache.xWrap.convert.result = /* @__PURE__ */ new Map();\n\t\t\t/** Scope-local convenience aliases. */\n\t\t\tconst xArg = cache.xWrap.convert.arg, xResult = cache.xWrap.convert.result;\n\t\t\tconst __xArgPtr = __asPtrType;\n\t\t\txArg.set(\"i64\", __BigInt).set(\"i32\", (i) => i | 0).set(\"i16\", (i) => (i | 0) & 65535).set(\"i8\", (i) => (i | 0) & 255).set(\"f32\", (i) => Number(i).valueOf()).set(\"float\", xArg.get(\"f32\")).set(\"f64\", xArg.get(\"f32\")).set(\"double\", xArg.get(\"f64\")).set(\"int\", xArg.get(\"i32\")).set(\"null\", (i) => i).set(null, xArg.get(\"null\")).set(\"**\", __xArgPtr).set(\"*\", __xArgPtr);\n\t\t\txResult.set(\"*\", __xArgPtr).set(\"pointer\", __xArgPtr).set(\"number\", (v) => Number(v)).set(\"void\", (v) => void 0).set(void 0, xResult.get(\"void\")).set(\"null\", (v) => v).set(null, xResult.get(\"null\"));\n\t\t\tfor (const t of [\n\t\t\t\t\"i8\",\n\t\t\t\t\"i16\",\n\t\t\t\t\"i32\",\n\t\t\t\t\"i64\",\n\t\t\t\t\"int\",\n\t\t\t\t\"f32\",\n\t\t\t\t\"float\",\n\t\t\t\t\"f64\",\n\t\t\t\t\"double\"\n\t\t\t]) {\n\t\t\t\txArg.set(t + \"*\", __xArgPtr);\n\t\t\t\txResult.set(t + \"*\", __xArgPtr);\n\t\t\t\txResult.set(t, xArg.get(t) || toss(\"Maintenance required: missing arg converter for\", t));\n\t\t\t}\n\t\t\t/**\n\t\t\tIn order for args of type string to work in various contexts in\n\t\t\tthe sqlite3 API, we need to pass them on as, variably, a C-string\n\t\t\tor a pointer value. Thus for ARGs of type 'string' and\n\t\t\t'*'/'pointer' we behave differently depending on whether the\n\t\t\targument is a string or not:\n\t\t\t\n\t\t\t- If v is a string, scopeAlloc() a new C-string from it and return\n\t\t\tthat temp string's pointer.\n\t\t\t\n\t\t\t- Else return the value from the arg adapter defined for\n\t\t\ttarget.ptr.ir.\n\t\t\t\n\t\t\tTODO? Permit an Int8Array/Uint8Array and convert it to a string?\n\t\t\tWould that be too much magic concentrated in one place, ready to\n\t\t\tbackfire? We handle that at the client level in sqlite3 with a\n\t\t\tcustom argument converter.\n\t\t\t*/\n\t\t\tconst __xArgString = (v) => {\n\t\t\t\treturn \"string\" === typeof v ? target.scopedAllocCString(v) : __asPtrType(v);\n\t\t\t};\n\t\t\txArg.set(\"string\", __xArgString).set(\"utf8\", __xArgString);\n\t\t\txResult.set(\"string\", (i) => target.cstrToJs(i)).set(\"utf8\", xResult.get(\"string\")).set(\"string:dealloc\", (i) => {\n\t\t\t\ttry {\n\t\t\t\t\treturn i ? target.cstrToJs(i) : null;\n\t\t\t\t} finally {\n\t\t\t\t\ttarget.dealloc(i);\n\t\t\t\t}\n\t\t\t}).set(\"utf8:dealloc\", xResult.get(\"string:dealloc\")).set(\"json\", (i) => JSON.parse(target.cstrToJs(i))).set(\"json:dealloc\", (i) => {\n\t\t\t\ttry {\n\t\t\t\t\treturn i ? JSON.parse(target.cstrToJs(i)) : null;\n\t\t\t\t} finally {\n\t\t\t\t\ttarget.dealloc(i);\n\t\t\t\t}\n\t\t\t});\n\t\t\t/**\n\t\t\tInternal-use-only base class for FuncPtrAdapter and potentially\n\t\t\tadditional stateful argument adapter classes.\n\t\t\t\n\t\t\tIts main interface (convertArg()) is strictly internal, not to be\n\t\t\texposed to client code, as it may still need re-shaping. Only the\n\t\t\tconstructors of concrete subclasses should be exposed to clients,\n\t\t\tand those in such a way that does not hinder internal redesign of\n\t\t\tthe convertArg() interface.\n\t\t\t*/\n\t\t\tconst AbstractArgAdapter = class {\n\t\t\t\tconstructor(opt) {\n\t\t\t\t\tthis.name = opt.name || \"unnamed adapter\";\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tGets called via xWrap() to \"convert\" v to whatever type\n\t\t\t\tthis specific class supports.\n\t\t\t\t\n\t\t\t\targIndex is the argv index of _this_ argument in the\n\t\t\t\tbeing-xWrap()'d call. argv is the current argument list\n\t\t\t\tundergoing xWrap() argument conversion. argv entries to the\n\t\t\t\tleft of argIndex will have already undergone transformation and\n\t\t\t\tthose to the right will not have (they will have the values the\n\t\t\t\tclient-level code passed in, awaiting conversion). The RHS\n\t\t\t\tindexes must never be relied upon for anything because their\n\t\t\t\ttypes are indeterminate, whereas the LHS values will be\n\t\t\t\tWASM-compatible values by the time this is called.\n\t\t\t\t\n\t\t\t\tThe reason for the argv and argIndex arguments is that we\n\t\t\t\tfrequently need more context than v for a specific conversion,\n\t\t\t\tand that context invariably lies in the LHS arguments of v.\n\t\t\t\tExamples of how this is useful can be found in FuncPtrAdapter.\n\t\t\t\t*/\n\t\t\t\tconvertArg(v, argv, argIndex) {\n\t\t\t\t\ttoss(\"AbstractArgAdapter must be subclassed.\");\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\tThis type is recognized by xWrap() as a proxy for converting a JS\n\t\t\tfunction to a C-side function, either permanently, for the\n\t\t\tduration of a single call into the C layer, or semi-contextual,\n\t\t\twhere it may keep track of a single binding for a given context\n\t\t\tand uninstall the binding if it's replaced.\n\t\t\t\n\t\t\tThe constructor requires an options object with these properties:\n\t\t\t\n\t\t\t- name (optional): string describing the function binding. This\n\t\t\tis solely for debugging and error-reporting purposes. If not\n\t\t\tprovided, an empty string is assumed.\n\t\t\t\n\t\t\t- signature: a function signature string compatible with\n\t\t\tjsFuncToWasm().\n\t\t\t\n\t\t\t- bindScope (string): one of ('transient', 'context',\n\t\t\t'singleton', 'permanent'). Bind scopes are:\n\t\t\t\n\t\t\t- 'transient': it will convert JS functions to WASM only for\n\t\t\tthe duration of the xWrap()'d function call, using\n\t\t\tscopedInstallFunction(). Before that call returns, the\n\t\t\tWASM-side binding will be uninstalled.\n\t\t\t\n\t\t\t- 'singleton': holds one function-pointer binding for this\n\t\t\tinstance. If it's called with a different function pointer,\n\t\t\tit uninstalls the previous one after converting the new\n\t\t\tvalue. This is only useful for use with \"global\" functions\n\t\t\twhich do not rely on any state other than this function\n\t\t\tpointer. If the being-converted function pointer is intended\n\t\t\tto be mapped to some sort of state object (e.g. an\n\t\t\t`sqlite3*`) then \"context\" (see below) is the proper mode.\n\t\t\t\n\t\t\t- 'context': similar to singleton mode but for a given\n\t\t\t\"context\", where the context is a key provided by the user\n\t\t\tand possibly dependent on a small amount of call-time\n\t\t\tcontext. This mode is the default if bindScope is _not_ set\n\t\t\tbut a property named contextKey (described below) is.\n\t\t\t\n\t\t\t- 'permanent': the function is installed and left there\n\t\t\tforever. There is no way to recover its pointer address\n\t\t\tlater on for cleanup purposes. i.e. it effectively leaks.\n\t\t\t\n\t\t\t- callProxy (function): if set, this must be a function which\n\t\t\twill act as a proxy for any \"converted\" JS function. It is\n\t\t\tpassed the being-converted function value and must return\n\t\t\teither that function or a function which acts on its\n\t\t\tbehalf. The returned function will be the one which gets\n\t\t\tinstalled into the WASM function table. The proxy must perform\n\t\t\tany required argument conversion (it will be called from C\n\t\t\tcode, so will receive C-format arguments) before passing them\n\t\t\ton to the being-converted function. Whether or not the proxy\n\t\t\titself must return a value depends on the context. If it does,\n\t\t\tit must be a WASM-friendly value, as it will be returning from\n\t\t\ta call made from WASM code.\n\t\t\t\n\t\t\t- contextKey (function): is only used if bindScope is 'context'\n\t\t\tor if bindScope is not set and this function is, in which case\n\t\t\ta bindScope of 'context' is assumed. This function gets bound\n\t\t\tto this object, so its \"this\" is this object. It gets passed\n\t\t\t(argv,argIndex), where argIndex is the index of _this_ function\n\t\t\tin its _wrapping_ function's arguments, and argv is the\n\t\t\t_current_ still-being-xWrap()-processed args array. (Got all\n\t\t\tthat?) When thisFunc(argv,argIndex) is called by xWrap(), all\n\t\t\targuments in argv to the left of argIndex will have been\n\t\t\tprocessed by xWrap() by the time this is called. argv[argIndex]\n\t\t\twill be the value the user passed in to the xWrap()'d function\n\t\t\tfor the argument this FuncPtrAdapter is mapped to. Arguments to\n\t\t\tthe right of argv[argIndex] will not yet have been converted\n\t\t\tbefore this is called. The function must return a key which\n\t\t\tuniquely identifies this function mapping context for _this_\n\t\t\tFuncPtrAdapter instance (other instances are not considered),\n\t\t\ttaking into account that C functions often take some sort of\n\t\t\tstate object as one or more of their arguments. As an example,\n\t\t\tif the xWrap()'d function takes `(int,T*,functionPtr,X*)` then\n\t\t\tthis FuncPtrAdapter instance is argv[2], and contextKey(argv,2)\n\t\t\tmight return 'T@'+argv[1], or even just argv[1].  Note,\n\t\t\thowever, that the (`X*`) argument will not yet have been\n\t\t\tprocessed by the time this is called and should not be used as\n\t\t\tpart of that key because its pre-conversion data type might be\n\t\t\tunpredictable. Similarly, care must be taken with C-string-type\n\t\t\targuments: those to the left in argv will, when this is called,\n\t\t\tbe WASM pointers, whereas those to the right might (and likely\n\t\t\tdo) have another data type. When using C-strings in keys, never\n\t\t\tuse their pointers in the key because most C-strings in this\n\t\t\tconstellation are transient. Conversely, the pointer address\n\t\t\tmakes an ideal key for longer-lived native pointer types.\n\t\t\t\n\t\t\tYes, that ^^^ is quite awkward, but it's what we have. In\n\t\t\tcontext, as it were, it actually makes some sense, but one must\n\t\t\tlook under its hook a bit to understand why it's shaped the\n\t\t\tway it is.\n\t\t\t\n\t\t\tThe constructor only saves the above state for later, and does\n\t\t\tnot actually bind any functions. The conversion, if any, is\n\t\t\tperformed when its convertArg() method is called via xWrap().\n\t\t\t\n\t\t\tShortcomings:\n\t\t\t\n\t\t\t- These \"reverse\" bindings, i.e. calling into a JS-defined\n\t\t\tfunction from a WASM-defined function (the generated proxy\n\t\t\twrapper), lack all type conversion support. That means, for\n\t\t\texample, that...\n\t\t\t\n\t\t\t- Function pointers which include C-string arguments may still\n\t\t\tneed a level of hand-written wrappers around them, depending on\n\t\t\thow they're used, in order to provide the client with JS\n\t\t\tstrings. Alternately, clients will need to perform such\n\t\t\tconversions on their own, e.g. using cstrToJs(). The purpose of\n\t\t\tthe callProxy() method is to account for such cases.\n\t\t\t*/\n\t\t\txArg.FuncPtrAdapter = class FuncPtrAdapter extends AbstractArgAdapter {\n\t\t\t\tconstructor(opt) {\n\t\t\t\t\tsuper(opt);\n\t\t\t\t\tif (xArg.FuncPtrAdapter.warnOnUse) console.warn(\"xArg.FuncPtrAdapter is an internal-only API\", \"and is not intended to be invoked from\", \"client-level code. Invoked with:\", opt);\n\t\t\t\t\tthis.name = opt.name || \"unnamed\";\n\t\t\t\t\tthis.signature = opt.signature;\n\t\t\t\t\tif (opt.contextKey instanceof Function) {\n\t\t\t\t\t\tthis.contextKey = opt.contextKey;\n\t\t\t\t\t\tif (!opt.bindScope) opt.bindScope = \"context\";\n\t\t\t\t\t}\n\t\t\t\t\tthis.bindScope = opt.bindScope || toss(\"FuncPtrAdapter options requires a bindScope (explicit or implied).\");\n\t\t\t\t\tif (FuncPtrAdapter.bindScopes.indexOf(opt.bindScope) < 0) toss(\"Invalid options.bindScope (\" + opt.bindMod + \") for FuncPtrAdapter. Expecting one of: (\" + FuncPtrAdapter.bindScopes.join(\", \") + \")\");\n\t\t\t\t\tthis.isTransient = \"transient\" === this.bindScope;\n\t\t\t\t\tthis.isContext = \"context\" === this.bindScope;\n\t\t\t\t\tthis.isPermanent = \"permanent\" === this.bindScope;\n\t\t\t\t\tthis.singleton = \"singleton\" === this.bindScope ? [] : void 0;\n\t\t\t\t\tthis.callProxy = opt.callProxy instanceof Function ? opt.callProxy : void 0;\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tThe static class members are defined outside of the class to\n\t\t\t\twork around an emcc toolchain build problem: one of the tools\n\t\t\t\tin emsdk v3.1.42 does not support the static keyword.\n\t\t\t\t*/\n\t\t\t\tcontextKey(argv, argIndex) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tReturns this object's mapping for the given context key, in the\n\t\t\t\tform of an an array, creating the mapping if needed. The key\n\t\t\t\tmay be anything suitable for use in a Map.\n\t\t\t\t\n\t\t\t\tThe returned array is intended to be used as a pair of\n\t\t\t\t[JSValue, WasmFuncPtr], where the first element is one passed\n\t\t\t\tto this.convertArg() and the second is its WASM form.\n\t\t\t\t*/\n\t\t\t\tcontextMap(key) {\n\t\t\t\t\tconst cm = this.__cmap || (this.__cmap = /* @__PURE__ */ new Map());\n\t\t\t\t\tlet rc = cm.get(key);\n\t\t\t\t\tif (void 0 === rc) cm.set(key, rc = []);\n\t\t\t\t\treturn rc;\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tGets called via xWrap() to \"convert\" v to a WASM-bound function\n\t\t\t\tpointer. If v is one of (a WASM pointer, null, undefined) then\n\t\t\t\t(v||0) is returned and any earlier function installed by this\n\t\t\t\tmapping _might_, depending on how it's bound, be uninstalled.\n\t\t\t\tIf v is not one of those types, it must be a Function, for\n\t\t\t\twhich this method creates (if needed) a WASM function binding\n\t\t\t\tand returns the WASM pointer to that binding.\n\t\t\t\t\n\t\t\t\tIf this instance is not in 'transient' mode, it will remember\n\t\t\t\tthe binding for at least the next call, to avoid recreating the\n\t\t\t\tfunction binding unnecessarily.\n\t\t\t\t\n\t\t\t\tIf it's passed a pointer(ish) value for v, it assumes it's a\n\t\t\t\tWASM function pointer and does _not_ perform any function\n\t\t\t\tbinding, so this object's bindMode is irrelevant/ignored for\n\t\t\t\tsuch cases.\n\t\t\t\t\n\t\t\t\tSee the parent class's convertArg() docs for details on what\n\t\t\t\texactly the 2nd and 3rd arguments are.\n\t\t\t\t*/\n\t\t\t\tconvertArg(v, argv, argIndex) {\n\t\t\t\t\tlet pair = this.singleton;\n\t\t\t\t\tif (!pair && this.isContext) pair = this.contextMap(this.contextKey(argv, argIndex));\n\t\t\t\t\tif (pair && 2 === pair.length && pair[0] === v) return pair[1];\n\t\t\t\t\tif (v instanceof Function) {\n\t\t\t\t\t\tif (this.callProxy) v = this.callProxy(v);\n\t\t\t\t\t\tconst fp = __installFunction(v, this.signature, this.isTransient);\n\t\t\t\t\t\tif (FuncPtrAdapter.debugFuncInstall) FuncPtrAdapter.debugOut(\"FuncPtrAdapter installed\", this, this.contextKey(argv, argIndex), \"@\" + fp, v);\n\t\t\t\t\t\tif (pair) {\n\t\t\t\t\t\t\tif (pair[1]) {\n\t\t\t\t\t\t\t\tif (FuncPtrAdapter.debugFuncInstall) FuncPtrAdapter.debugOut(\"FuncPtrAdapter uninstalling\", this, this.contextKey(argv, argIndex), \"@\" + pair[1], v);\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tcache.scopedAlloc.pushPtr(pair[1]);\n\t\t\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tpair[0] = arguments[0] || __NullPtr;\n\t\t\t\t\t\t\tpair[1] = fp;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn fp;\n\t\t\t\t\t} else if (target.isPtr(v) || null === v || void 0 === v) {\n\t\t\t\t\t\tif (pair && pair[1] && pair[1] !== v) {\n\t\t\t\t\t\t\tif (FuncPtrAdapter.debugFuncInstall) FuncPtrAdapter.debugOut(\"FuncPtrAdapter uninstalling\", this, this.contextKey(argv, argIndex), \"@\" + pair[1], v);\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tcache.scopedAlloc.pushPtr(pair[1]);\n\t\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t\t\tpair[0] = pair[1] = v || __NullPtr;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn v || __NullPtr;\n\t\t\t\t\t} else throw new TypeError(\"Invalid FuncPtrAdapter argument type. Expecting a function pointer or a \" + (this.name ? this.name + \" \" : \"\") + \"function matching signature \" + this.signature + \".\");\n\t\t\t\t}\n\t\t\t};\n\t\t\t/** If true, the constructor emits a warning. The intent is that\n\t\t\tthis be set to true after bootstrapping of the higher-level\n\t\t\tclient library is complete, to warn downstream clients that\n\t\t\tthey shouldn't be relying on this implementation detail which\n\t\t\tdoes not have a stable interface. */\n\t\t\txArg.FuncPtrAdapter.warnOnUse = false;\n\t\t\t/** If true, convertArg() will call FuncPtrAdapter.debugOut() when\n\t\t\tit (un)installs a function binding to/from WASM. Note that\n\t\t\tdeinstallation of bindScope=transient bindings happens via\n\t\t\tscopedAllocPop() so will not be output. */\n\t\t\txArg.FuncPtrAdapter.debugFuncInstall = false;\n\t\t\t/** Function used for debug output. */\n\t\t\txArg.FuncPtrAdapter.debugOut = console.debug.bind(console);\n\t\t\t/**\n\t\t\tList of legal values for the FuncPtrAdapter bindScope config\n\t\t\toption.\n\t\t\t*/\n\t\t\txArg.FuncPtrAdapter.bindScopes = [\n\t\t\t\t\"transient\",\n\t\t\t\t\"context\",\n\t\t\t\t\"singleton\",\n\t\t\t\t\"permanent\"\n\t\t\t];\n\t\t\t/** Throws if xArg.get(t) returns falsy. */\n\t\t\tconst __xArgAdapterCheck = (t) => xArg.get(t) || toss(\"Argument adapter not found:\", t);\n\t\t\t/** Throws if xResult.get(t) returns falsy. */\n\t\t\tconst __xResultAdapterCheck = (t) => xResult.get(t) || toss(\"Result adapter not found:\", t);\n\t\t\t/**\n\t\t\tFetches the xWrap() argument adapter mapped to t, calls it,\n\t\t\tpassing in all remaining arguments, and returns the result.\n\t\t\tThrows if t is not mapped to an argument converter.\n\t\t\t*/\n\t\t\tcache.xWrap.convertArg = (t, ...args) => __xArgAdapterCheck(t)(...args);\n\t\t\t/**\n\t\t\tIdentical to convertArg() except that it does not perform\n\t\t\tan is-defined check on the mapping to t before invoking it.\n\t\t\t*/\n\t\t\tcache.xWrap.convertArgNoCheck = (t, ...args) => xArg.get(t)(...args);\n\t\t\t/**\n\t\t\tFetches the xWrap() result adapter mapped to t, calls it, passing\n\t\t\tit v, and returns the result.  Throws if t is not mapped to an\n\t\t\targument converter.\n\t\t\t*/\n\t\t\tcache.xWrap.convertResult = (t, v) => null === t ? v : t ? __xResultAdapterCheck(t)(v) : void 0;\n\t\t\t/**\n\t\t\tIdentical to convertResult() except that it does not perform an\n\t\t\tis-defined check on the mapping to t before invoking it.\n\t\t\t*/\n\t\t\tcache.xWrap.convertResultNoCheck = (t, v) => null === t ? v : t ? xResult.get(t)(v) : void 0;\n\t\t\t/**\n\t\t\tCreates a wrapper for another function which converts the arguments\n\t\t\tof the wrapper to argument types accepted by the wrapped function,\n\t\t\tthen converts the wrapped function's result to another form\n\t\t\tfor the wrapper.\n\t\t\t\n\t\t\tThe first argument must be one of:\n\t\t\t\n\t\t\t- A JavaScript function.\n\t\t\t- The name of a WASM-exported function. xGet() is used to fetch\n\t\t\tthe exported function, which throws if it's not found.\n\t\t\t- A pointer into the indirect function table. e.g. a pointer\n\t\t\treturned from target.installFunction().\n\t\t\t\n\t\t\tIt returns either the passed-in function or a wrapper for that\n\t\t\tfunction which converts the JS-side argument types into WASM-side\n\t\t\ttypes and converts the result type.\n\t\t\t\n\t\t\tThe second argument, `resultType`, describes the conversion for\n\t\t\tthe wrapped functions result. A literal `null` or the string\n\t\t\t`'null'` both mean to return the original function's value as-is\n\t\t\t(mnemonic: there is \"null\" conversion going on). Literal\n\t\t\t`undefined` or the string `\"void\"` both mean to ignore the\n\t\t\tfunction's result and return `undefined`. Aside from those two\n\t\t\tspecial cases, the `resultType` value may be one of the values\n\t\t\tdescribed below or any mapping installed by the client using\n\t\t\txWrap.resultAdapter().\n\t\t\t\n\t\t\tIf passed 3 arguments and the final one is an array, that array\n\t\t\tmust contain a list of type names (see below) for adapting the\n\t\t\targuments from JS to WASM.  If passed 2 arguments, more than 3,\n\t\t\tor the 3rd is not an array, all arguments after the 2nd (if any)\n\t\t\tare treated as type names. i.e.:\n\t\t\t\n\t\t\t```\n\t\t\txWrap('funcname', 'i32', 'string', 'f64');\n\t\t\t// is equivalent to:\n\t\t\txWrap('funcname', 'i32', ['string', 'f64']);\n\t\t\t```\n\t\t\t\n\t\t\tThis function enforces that the given list of arguments has the\n\t\t\tsame arity as the being-wrapped function (as defined by its\n\t\t\t`length` property) and it will throw if that is not the case.\n\t\t\tSimilarly, the created wrapper will throw if passed a differing\n\t\t\targument count. The intent of that strictness is to help catch\n\t\t\tcoding errors in using JS-bound WASM functions earlier rather\n\t\t\tthan laer.\n\t\t\t\n\t\t\tType names are symbolic names which map the arguments to an\n\t\t\tadapter function to convert, if needed, the value before passing\n\t\t\tit on to WASM or to convert a return result from WASM. The list\n\t\t\tof pre-defined names:\n\t\t\t\n\t\t\t- `i8`, `i16`, `i32` (args and results): all integer conversions\n\t\t\twhich convert their argument to an integer and truncate it to\n\t\t\tthe given bit length.\n\t\t\t\n\t\t\t- `*`, `**`, and `pointer` (args): are assumed to be WASM pointer\n\t\t\tvalues and are returned coerced to an appropriately-sized\n\t\t\tpointer value (i32 or i64). Non-numeric values will coerce to 0\n\t\t\tand out-of-range values will have undefined results (just as\n\t\t\twith any pointer misuse).\n\t\t\t\n\t\t\t- `*` and `pointer` (results): aliases for the current\n\t\t\tWASM pointer numeric type.\n\t\t\t\n\t\t\t- `**` (args): is simply a descriptive alias for the WASM pointer\n\t\t\ttype. It's primarily intended to mark output-pointer arguments,\n\t\t\tnoting that JS's view of WASM does not distinguish between\n\t\t\tpointers and pointers-to-pointers, so all such interpretation\n\t\t\tof `**`, as distinct from `*`, necessarily happens at the\n\t\t\tclient level.\n\t\t\t\n\t\t\t- `NumType*` (args): a type name in this form, where T is\n\t\t\tthe name of a numeric mapping, e.g. 'int16' or 'double',\n\t\t\tis treated like `*`.\n\t\t\t\n\t\t\t- `i64` (args and results): passes the value to BigInt() to\n\t\t\tconvert it to an int64. This conversion will if bigIntEnabled\n\t\t\tis falsy.\n\t\t\t\n\t\t\t- `f32` (`float`), `f64` (`double`) (args and results): pass\n\t\t\ttheir argument to Number(). i.e. the adapter does not currently\n\t\t\tdistinguish between the two types of floating-point numbers.\n\t\t\t\n\t\t\t- `number` (results): converts the result to a JS Number using\n\t\t\tNumber(theValue). This is for result conversions only, as it's\n\t\t\tnot possible to generically know which type of number to\n\t\t\tconvert arguments to.\n\t\t\t\n\t\t\tNon-numeric conversions include:\n\t\t\t\n\t\t\t- `null` literal or `\"null\"` string (args and results): perform\n\t\t\tno translation and pass the arg on as-is. This is primarily\n\t\t\tuseful for results but may have a use or two for arguments.\n\t\t\t\n\t\t\t- `string` or `utf8` (args): has two different semantics in order\n\t\t\tto accommodate various uses of certain C APIs\n\t\t\t(e.g. output-style strings)...\n\t\t\t\n\t\t\t- If the arg is a JS string, it creates a _temporary_\n\t\t\tUTF-8-encoded C-string to pass to the exported function,\n\t\t\tcleaning it up before the wrapper returns. If a long-lived\n\t\t\tC-string pointer is required, that requires client-side code\n\t\t\tto create the string then pass its pointer to the function.\n\t\t\t\n\t\t\t- Else the arg is assumed to be a pointer to a string the\n\t\t\tclient has already allocated and it's passed on as\n\t\t\ta WASM pointer.\n\t\t\t\n\t\t\t- `string` or `utf8` (results): treats the result value as a\n\t\t\tconst C-string, encoded as UTF-8, copies it to a JS string,\n\t\t\tand returns that JS string.\n\t\t\t\n\t\t\t- `string:dealloc` or `utf8:dealloc` (results): treats the result\n\t\t\tvalue as a non-const UTF-8 C-string, ownership of which has\n\t\t\tjust been transfered to the caller. It copies the C-string to a\n\t\t\tJS string, frees the C-string using dealloc(), and returns the\n\t\t\tJS string. If such a result value is NULL, the JS result is\n\t\t\t`null`. Achtung: when using an API which returns results from a\n\t\t\tspecific allocator, e.g. `my_malloc()`, this conversion _is not\n\t\t\tlegal_. Instead, an equivalent conversion which uses the\n\t\t\tappropriate deallocator is required. For example:\n\t\t\t\n\t\t\t```js\n\t\t\ttarget.xWrap.resultAdapter('string:my_free',(i)=>{\n\t\t\ttry { return i ? target.cstrToJs(i) : null; }\n\t\t\tfinally{ target.exports.my_free(i); }\n\t\t\t};\n\t\t\t```\n\t\t\t\n\t\t\t- `json` (results): treats the result as a const C-string and\n\t\t\treturns the result of passing the converted-to-JS string to\n\t\t\tJSON.parse(). Returns `null` if the C-string is a NULL pointer.\n\t\t\t\n\t\t\t- `json:dealloc` (results): works exactly like `string:dealloc` but\n\t\t\treturns the same thing as the `json` adapter. Note the\n\t\t\twarning in `string:dealloc` regarding matching allocators and\n\t\t\tdeallocators.\n\t\t\t\n\t\t\tThe type names for results and arguments are validated when\n\t\t\txWrap() is called and any unknown names will trigger an\n\t\t\texception.\n\t\t\t\n\t\t\tClients may map their own result and argument adapters using\n\t\t\txWrap.resultAdapter() and xWrap.argAdapter(), noting that not all\n\t\t\ttype conversions are valid for both arguments _and_ result types\n\t\t\tas they often have different memory ownership requirements.\n\t\t\t\n\t\t\tDesign note: the ability to pass in a JS function as the first\n\t\t\targument is of relatively limited use, primarily for testing\n\t\t\targument and result converters. JS functions, by and large, will\n\t\t\tnot want to deal with C-type arguments.\n\t\t\t\n\t\t\tTODOs:\n\t\t\t\n\t\t\t- Figure out how/whether we can (semi-)transparently handle\n\t\t\tpointer-type _output_ arguments. Those currently require\n\t\t\texplicit handling by allocating pointers, assigning them before\n\t\t\tthe call using poke(), and fetching them with\n\t\t\tpeek() after the call. We may be able to automate some\n\t\t\tor all of that.\n\t\t\t\n\t\t\t- Figure out whether it makes sense to extend the arg adapter\n\t\t\tinterface such that each arg adapter gets an array containing\n\t\t\tthe results of the previous arguments in the current call. That\n\t\t\tmight allow some interesting type-conversion feature. Use case:\n\t\t\thandling of the final argument to sqlite3_prepare_v2() depends\n\t\t\ton the type (pointer vs JS string) of its 2nd\n\t\t\targument. Currently that distinction requires hand-writing a\n\t\t\twrapper for that function. That case is unusual enough that\n\t\t\tabstracting it into this API (and taking on the associated\n\t\t\tcosts) may well not make good sense.\n\t\t\t*/\n\t\t\ttarget.xWrap = function callee(fArg, resultType, ...argTypes) {\n\t\t\t\tif (3 === arguments.length && Array.isArray(arguments[2])) argTypes = arguments[2];\n\t\t\t\tif (target.isPtr(fArg)) fArg = target.functionEntry(fArg) || toss(\"Function pointer not found in WASM function table.\");\n\t\t\t\tconst fIsFunc = fArg instanceof Function;\n\t\t\t\tconst xf = fIsFunc ? fArg : target.xGet(fArg);\n\t\t\t\tif (fIsFunc) fArg = xf.name || \"unnamed function\";\n\t\t\t\tif (argTypes.length !== xf.length) __argcMismatch(fArg, xf.length);\n\t\t\t\tif (0 === xf.length && (null === resultType || \"null\" === resultType)) return xf;\n\t\t\t\t__xResultAdapterCheck(resultType);\n\t\t\t\tfor (const t of argTypes) if (t instanceof AbstractArgAdapter) xArg.set(t, (...args) => t.convertArg(...args));\n\t\t\t\telse __xArgAdapterCheck(t);\n\t\t\t\tconst cxw = cache.xWrap;\n\t\t\t\tif (0 === xf.length) return (...args) => args.length ? __argcMismatch(fArg, xf.length) : cxw.convertResult(resultType, xf.call(null));\n\t\t\t\treturn function(...args) {\n\t\t\t\t\tif (args.length !== xf.length) __argcMismatch(fArg, xf.length);\n\t\t\t\t\tconst scope = target.scopedAllocPush();\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlet i = 0;\n\t\t\t\t\t\tif (callee.debug) console.debug(\"xWrap() preparing: resultType \", resultType, \"xf\", xf, \"argTypes\", argTypes, \"args\", args);\n\t\t\t\t\t\tfor (; i < args.length; ++i) args[i] = cxw.convertArgNoCheck(argTypes[i], args[i], args, i);\n\t\t\t\t\t\tif (callee.debug) console.debug(\"xWrap() calling: resultType \", resultType, \"xf\", xf, \"argTypes\", argTypes, \"args\", args);\n\t\t\t\t\t\treturn cxw.convertResultNoCheck(resultType, xf.apply(null, args));\n\t\t\t\t\t} finally {\n\t\t\t\t\t\ttarget.scopedAllocPop(scope);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\t\t\t/**\n\t\t\tInternal impl for xWrap.resultAdapter() and argAdapter().\n\t\t\t\n\t\t\tfunc = one of xWrap.resultAdapter or xWrap.argAdapter.\n\t\t\t\n\t\t\targc = the number of args in the wrapping call to this\n\t\t\tfunction.\n\t\t\t\n\t\t\ttypeName = the first arg to the wrapping function.\n\t\t\t\n\t\t\tadapter = the second arg to the wrapping function.\n\t\t\t\n\t\t\tmodeName = a descriptive name of the wrapping function for\n\t\t\terror-reporting purposes.\n\t\t\t\n\t\t\txcvPart = one of xResult or xArg.\n\t\t\t\n\t\t\tThis acts as either a getter (if 1===argc) or setter (if\n\t\t\t2===argc) for the given adapter. Returns func on success or\n\t\t\tthrows if (A) called with 2 args but adapter is-not-a Function or\n\t\t\t(B) typeName is not a string or (C) argc is not one of (1, 2).\n\t\t\t*/\n\t\t\tconst __xAdapter = function(func, argc, typeName, adapter, modeName, xcvPart) {\n\t\t\t\tif (\"string\" === typeof typeName) {\n\t\t\t\t\tif (1 === argc) return xcvPart.get(typeName);\n\t\t\t\t\telse if (2 === argc) {\n\t\t\t\t\t\tif (!adapter) {\n\t\t\t\t\t\t\txcvPart.delete(typeName);\n\t\t\t\t\t\t\treturn func;\n\t\t\t\t\t\t} else if (!(adapter instanceof Function)) toss(modeName, \"requires a function argument.\");\n\t\t\t\t\t\txcvPart.set(typeName, adapter);\n\t\t\t\t\t\treturn func;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttoss(\"Invalid arguments to\", modeName);\n\t\t\t};\n\t\t\t/**\n\t\t\tGets, sets, or removes a result value adapter for use with\n\t\t\txWrap(). If passed only 1 argument, the adapter function for the\n\t\t\tgiven type name is returned.  If the second argument is explicit\n\t\t\tfalsy (as opposed to defaulted), the adapter named by the first\n\t\t\targument is removed. If the 2nd argument is not falsy, it must be\n\t\t\ta function which takes one value and returns a value appropriate\n\t\t\tfor the given type name. The adapter may throw if its argument is\n\t\t\tnot of a type it can work with. This function throws for invalid\n\t\t\targuments.\n\t\t\t\n\t\t\tExample:\n\t\t\t\n\t\t\t```\n\t\t\txWrap.resultAdapter('twice',(v)=>v+v);\n\t\t\t```\n\t\t\t\n\t\t\tResult adapters MUST NOT use the scopedAlloc() family of APIs to\n\t\t\tallocate a result value. xWrap()-generated wrappers run in the\n\t\t\tcontext of scopedAllocPush() so that argument adapters can easily\n\t\t\tconvert, e.g., to C-strings, and have them cleaned up\n\t\t\tautomatically before the wrapper returns to the caller. Likewise,\n\t\t\tif a _result_ adapter uses scoped allocation, the result will be\n\t\t\tfreed before the wrapper returns, leading to chaos and undefined\n\t\t\tbehavior.\n\t\t\t\n\t\t\tWhen called as a setter, this function returns itself.\n\t\t\t*/\n\t\t\ttarget.xWrap.resultAdapter = function f(typeName, adapter) {\n\t\t\t\treturn __xAdapter(f, arguments.length, typeName, adapter, \"resultAdapter()\", xResult);\n\t\t\t};\n\t\t\t/**\n\t\t\tFunctions identically to xWrap.resultAdapter() but applies to\n\t\t\tcall argument conversions instead of result value conversions.\n\t\t\t\n\t\t\txWrap()-generated wrappers perform argument conversion in the\n\t\t\tcontext of a scopedAllocPush(), so any memory allocation\n\t\t\tperformed by argument adapters really, really, really should be\n\t\t\tmade using the scopedAlloc() family of functions unless\n\t\t\tspecifically necessary. For example:\n\t\t\t\n\t\t\t```\n\t\t\txWrap.argAdapter('my-string', function(v){\n\t\t\treturn ('string'===typeof v)\n\t\t\t? myWasmObj.scopedAllocCString(v) : null;\n\t\t\t};\n\t\t\t```\n\t\t\t\n\t\t\tContrariwise, _result_ adapters _must not_ use scopedAlloc() to\n\t\t\tallocate results because they would be freed before the\n\t\t\txWrap()-created wrapper returns.\n\t\t\t\n\t\t\tIt is perfectly legitimate to use these adapters to perform\n\t\t\targument validation, as opposed (or in addition) to conversion.\n\t\t\tWhen used that way, they should throw for invalid arguments.\n\t\t\t*/\n\t\t\ttarget.xWrap.argAdapter = function f(typeName, adapter) {\n\t\t\t\treturn __xAdapter(f, arguments.length, typeName, adapter, \"argAdapter()\", xArg);\n\t\t\t};\n\t\t\ttarget.xWrap.FuncPtrAdapter = xArg.FuncPtrAdapter;\n\t\t\t/**\n\t\t\tFunctions like xCall() but performs argument and result type\n\t\t\tconversions as for xWrap(). The first, second, and third\n\t\t\targuments are as documented for xWrap(), except that the 3rd\n\t\t\targument may be either a falsy value or empty array to represent\n\t\t\tnullary functions. The 4th+ arguments are arguments for the call,\n\t\t\twith the special case that if the 4th argument is an array, it is\n\t\t\tused as the arguments for the call. Returns the converted result\n\t\t\tof the call.\n\t\t\t\n\t\t\tThis is just a thin wrapper around xWrap(). If the given function\n\t\t\tis to be called more than once, it's more efficient to use\n\t\t\txWrap() to create a wrapper, then to call that wrapper as many\n\t\t\ttimes as needed. For one-shot calls, however, this variant is\n\t\t\tsimpler.\n\t\t\t*/\n\t\t\ttarget.xCallWrapped = function(fArg, resultType, argTypes, ...args) {\n\t\t\t\tif (Array.isArray(arguments[3])) args = arguments[3];\n\t\t\t\treturn target.xWrap(fArg, resultType, argTypes || []).apply(null, args || []);\n\t\t\t};\n\t\t\t/**\n\t\t\tThis function is ONLY exposed in the public API to facilitate\n\t\t\ttesting. It should not be used in application-level code, only\n\t\t\tin test code.\n\t\t\t\n\t\t\tExpects to be given (typeName, value) and returns a conversion\n\t\t\tof that value as has been registered using argAdapter().\n\t\t\tIt throws if no adapter is found.\n\t\t\t\n\t\t\tACHTUNG: the adapter may require that a scopedAllocPush() is\n\t\t\tactive and it may allocate memory within that scope. It may also\n\t\t\trequire additional arguments, depending on the type of\n\t\t\tconversion.\n\t\t\t*/\n\t\t\ttarget.xWrap.testConvertArg = cache.xWrap.convertArg;\n\t\t\t/**\n\t\t\tThis function is ONLY exposed in the public API to facilitate\n\t\t\ttesting. It should not be used in application-level code, only\n\t\t\tin test code.\n\t\t\t\n\t\t\tExpects to be given (typeName, value) and returns a conversion\n\t\t\tof that value as has been registered using resultAdapter().\n\t\t\tIt throws if no adapter is found.\n\t\t\t\n\t\t\tACHTUNG: the adapter may allocate memory which the caller may need\n\t\t\tto know how to free.\n\t\t\t*/\n\t\t\ttarget.xWrap.testConvertResult = cache.xWrap.convertResult;\n\t\t\treturn target;\n\t\t};\n\t\t/**\n\t\tyawl (Yet Another Wasm Loader) provides very basic wasm loader.\n\t\tIt requires a config object:\n\t\t\n\t\t- `uri`: required URI of the WASM file to load.\n\t\t\n\t\t- `onload(loadResult)`: optional callback. Its argument is an\n\t\tobject described in more detail below.\n\t\t\n\t\t- `imports`: optional imports object for\n\t\tWebAssembly.instantiate[Streaming]().  The default is an empty\n\t\tset of imports. If the module requires any imports, this object\n\t\tmust include them.\n\t\t\n\t\t- `wasmUtilTarget`: optional object suitable for passing to\n\t\tWhWasmUtilInstaller(). If set, it gets passed to that function\n\t\tbefore the returned promise resolves. This function sets several\n\t\tproperties on it before passing it on to that function (which\n\t\tsets many more):\n\t\t\n\t\t- `module`, `instance`: the properties from the\n\t\tinstantiate[Streaming]() result.\n\t\t\n\t\t- If `instance.exports.memory` is _not_ set then it requires that\n\t\t`config.imports.env.memory` be set (else it throws), and\n\t\tassigns that to `wasmUtilTarget.memory`.\n\t\t\n\t\t- If `wasmUtilTarget.alloc` is not set and\n\t\t`instance.exports.malloc` is, it installs\n\t\t`wasmUtilTarget.alloc()` and `wasmUtilTarget.dealloc()`\n\t\twrappers for the exports' `malloc` and `free` functions\n\t\tif exports.malloc exists.\n\t\t\n\t\tIt returns a function which, when called, initiates loading of the\n\t\tmodule and returns a Promise. When that Promise resolves, it calls\n\t\tthe `config.onload` callback (if set) and passes it `(loadResult)`,\n\t\twhere `loadResult` is derived from the result of\n\t\tWebAssembly.instantiate[Streaming](), an object in the form:\n\t\t\n\t\t```\n\t\t{\n\t\tmodule: a WebAssembly.Module,\n\t\tinstance: a WebAssembly.Instance,\n\t\tconfig: the config arg to this function\n\t\t}\n\t\t```\n\t\t\n\t\t(The initial `then()` attached to the promise gets only that\n\t\tobject, and not the `config` object, thus the potential need for a\n\t\t`config.onload` handler.)\n\t\t\n\t\tError handling is up to the caller, who may attach a `catch()` call\n\t\tto the promise.\n\t\t*/\n\t\tglobalThis.WhWasmUtilInstaller.yawl = function yawl(config) {\n\t\t\t\"use strict\";\n\t\t\tconst wfetch = () => fetch(config.uri, { credentials: \"same-origin\" });\n\t\t\tconst wui = this;\n\t\t\tconst finalThen = function(arg) {\n\t\t\t\tif (config.wasmUtilTarget) {\n\t\t\t\t\tconst toss = (...args) => {\n\t\t\t\t\t\tthrow new Error(args.join(\" \"));\n\t\t\t\t\t};\n\t\t\t\t\tconst tgt = config.wasmUtilTarget;\n\t\t\t\t\ttgt.module = arg.module;\n\t\t\t\t\ttgt.instance = arg.instance;\n\t\t\t\t\tif (!tgt.instance.exports.memory)\n /**\n\t\t\t\t\tWhWasmUtilInstaller requires either tgt.exports.memory\n\t\t\t\t\t(exported from WASM) or tgt.memory (JS-provided memory\n\t\t\t\t\timported into WASM).\n\t\t\t\t\t*/\n\t\t\t\t\ttgt.memory = config?.imports?.env?.memory || toss(\"Missing 'memory' object!\");\n\t\t\t\t\tif (!tgt.alloc && arg.instance.exports.malloc) {\n\t\t\t\t\t\tconst exports = arg.instance.exports;\n\t\t\t\t\t\ttgt.alloc = function(n) {\n\t\t\t\t\t\t\treturn exports.malloc(n) || toss(\"Allocation of\", n, \"bytes failed.\");\n\t\t\t\t\t\t};\n\t\t\t\t\t\ttgt.dealloc = function(m) {\n\t\t\t\t\t\t\tm && exports.free(m);\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\twui(tgt);\n\t\t\t\t}\n\t\t\t\targ.config = config;\n\t\t\t\tif (config.onload) config.onload(arg);\n\t\t\t\treturn arg;\n\t\t\t};\n\t\t\treturn WebAssembly.instantiateStreaming ? () => WebAssembly.instantiateStreaming(wfetch(), config.imports || {}).then(finalThen) : () => wfetch().then((response) => response.arrayBuffer()).then((bytes) => WebAssembly.instantiate(bytes, config.imports || {})).then(finalThen);\n\t\t}.bind(globalThis.WhWasmUtilInstaller);\n\t\tglobalThis.Jaccwabyt = function StructBinderFactory(config) {\n\t\t\t\"use strict\";\n\t\t\t/** Throws a new Error, the message of which is the concatenation\n\t\t\tall args with a space between each. */\n\t\t\tconst toss = (...args) => {\n\t\t\t\tthrow new Error(args.join(\" \"));\n\t\t\t};\n\t\t\t{\n\t\t\t\tlet h = config.heap;\n\t\t\t\tif (h instanceof WebAssembly.Memory) h = function() {\n\t\t\t\t\treturn new Uint8Array(this.buffer);\n\t\t\t\t}.bind(h);\n\t\t\t\telse if (!(h instanceof Function)) toss(\"config.heap must be WebAssembly.Memory instance or\", \"a function which returns one.\");\n\t\t\t\tconfig.heap = h;\n\t\t\t}\n\t\t\t[\"alloc\", \"dealloc\"].forEach(function(k) {\n\t\t\t\tconfig[k] instanceof Function || toss(\"Config option '\" + k + \"' must be a function.\");\n\t\t\t});\n\t\t\tconst SBF = StructBinderFactory, heap = config.heap, alloc = config.alloc, dealloc = config.dealloc;\n\t\t\tconfig.realloc;\n\t\t\tconst log = config.log || console.debug.bind(console), memberPrefix = config.memberPrefix || \"\", memberSuffix = config.memberSuffix || \"\", BigInt = globalThis[\"BigInt\"], BigInt64Array = globalThis[\"BigInt64Array\"], bigIntEnabled = config.bigIntEnabled ?? !!BigInt64Array;\n\t\t\tlet ptr;\n\t\t\tconst ptrSize = config.pointerSize || config.ptrSize || (\"bigint\" === typeof (ptr = alloc(1)) ? 8 : 4);\n\t\t\tconst ptrIR = config.pointerIR || config.ptrIR || (4 === ptrSize ? \"i32\" : \"i64\");\n\t\t\tif (ptr) {\n\t\t\t\tdealloc(ptr);\n\t\t\t\tptr = void 0;\n\t\t\t}\n\t\t\tif (ptrSize !== 4 && ptrSize !== 8) toss(\"Invalid pointer size:\", ptrSize);\n\t\t\tif (ptrIR !== \"i32\" && ptrIR !== \"i64\") toss(\"Invalid pointer representation:\", ptrIR);\n\t\t\t/** Either BigInt or, if !bigIntEnabled, a function which\n\t\t\tthrows complaining that BigInt is not enabled. */\n\t\t\tconst __BigInt = bigIntEnabled && BigInt ? (v) => BigInt(v || 0) : (v) => toss(\"BigInt support is disabled in this build.\");\n\t\t\tconst __asPtrType = \"i32\" == ptrIR ? Number : __BigInt;\n\t\t\tconst __NullPtr = __asPtrType(0);\n\t\t\t/**\n\t\t\tExpects any number of numeric arguments, each one of either type\n\t\t\tNumber or BigInt. It sums them up (from an implicit starting\n\t\t\tpoint of 0 or 0n) and returns them as a number of the same type\n\t\t\twhich target.asPtrType() uses.\n\t\t\t\n\t\t\tThis is a workaround for not being able to mix Number/BigInt in\n\t\t\taddition/subtraction expressions (which we frequently need for\n\t\t\tcalculating pointer offsets).\n\t\t\t*/\n\t\t\tconst __ptrAdd = function(...args) {\n\t\t\t\tlet rc = __NullPtr;\n\t\t\t\tfor (let i = 0; i < args.length; ++i) rc += __asPtrType(args[i]);\n\t\t\t\treturn rc;\n\t\t\t};\n\t\t\tconst __ptrAddSelf = function(...args) {\n\t\t\t\treturn __ptrAdd(this.pointer, ...args);\n\t\t\t};\n\t\t\tif (!SBF.debugFlags) {\n\t\t\t\tSBF.__makeDebugFlags = function(deriveFrom = null) {\n\t\t\t\t\tif (deriveFrom && deriveFrom.__flags) deriveFrom = deriveFrom.__flags;\n\t\t\t\t\tconst f = function f(flags) {\n\t\t\t\t\t\tif (0 === arguments.length) return f.__flags;\n\t\t\t\t\t\tif (flags < 0) {\n\t\t\t\t\t\t\tdelete f.__flags.getter;\n\t\t\t\t\t\t\tdelete f.__flags.setter;\n\t\t\t\t\t\t\tdelete f.__flags.alloc;\n\t\t\t\t\t\t\tdelete f.__flags.dealloc;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tf.__flags.getter = 0 !== (1 & flags);\n\t\t\t\t\t\t\tf.__flags.setter = 0 !== (2 & flags);\n\t\t\t\t\t\t\tf.__flags.alloc = 0 !== (4 & flags);\n\t\t\t\t\t\t\tf.__flags.dealloc = 0 !== (8 & flags);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn f._flags;\n\t\t\t\t\t};\n\t\t\t\t\tObject.defineProperty(f, \"__flags\", {\n\t\t\t\t\t\titerable: false,\n\t\t\t\t\t\twritable: false,\n\t\t\t\t\t\tvalue: Object.create(deriveFrom)\n\t\t\t\t\t});\n\t\t\t\t\tif (!deriveFrom) f(0);\n\t\t\t\t\treturn f;\n\t\t\t\t};\n\t\t\t\tSBF.debugFlags = SBF.__makeDebugFlags();\n\t\t\t}\n\t\t\tconst isLittleEndian = true;\n\t\t\t/**\n\t\t\tSome terms used in the internal docs:\n\t\t\t\n\t\t\tStructType: a struct-wrapping class generated by this\n\t\t\tframework.\n\t\t\t\n\t\t\tDEF: struct description object.\n\t\t\t\n\t\t\tSIG: struct member signature string.\n\t\t\t*/\n\t\t\t/** True if SIG s looks like a function signature, else\n\t\t\tfalse. */\n\t\t\tconst isFuncSig = (s) => \"(\" === s[1];\n\t\t\t/** True if SIG s is-a pointer-type signature. */\n\t\t\tconst isPtrSig = (s) => \"p\" === s || \"P\" === s || \"s\" === s;\n\t\t\tconst isAutoPtrSig = (s) => \"P\" === s;\n\t\t\t/** Returns p if SIG s is a function SIG, else returns s[0]. */\n\t\t\tconst sigLetter = (s) => s ? isFuncSig(s) ? \"p\" : s[0] : void 0;\n\t\t\t/** Returns the WASM IR form of the letter at SIG s[0]. Throws for\n\t\t\tan unknown SIG. */\n\t\t\tconst sigIR = function(s) {\n\t\t\t\tswitch (sigLetter(s)) {\n\t\t\t\t\tcase \"c\":\n\t\t\t\t\tcase \"C\": return \"i8\";\n\t\t\t\t\tcase \"i\": return \"i32\";\n\t\t\t\t\tcase \"p\":\n\t\t\t\t\tcase \"P\":\n\t\t\t\t\tcase \"s\": return ptrIR;\n\t\t\t\t\tcase \"j\": return \"i64\";\n\t\t\t\t\tcase \"f\": return \"float\";\n\t\t\t\t\tcase \"d\": return \"double\";\n\t\t\t\t}\n\t\t\t\ttoss(\"Unhandled signature IR:\", s);\n\t\t\t};\n\t\t\t/** Returns the WASM sizeof of the letter at SIG s[0]. Throws for an\n\t\t\tunknown SIG. */\n\t\t\tconst sigSize = function(s) {\n\t\t\t\tswitch (sigLetter(s)) {\n\t\t\t\t\tcase \"c\":\n\t\t\t\t\tcase \"C\": return 1;\n\t\t\t\t\tcase \"i\": return 4;\n\t\t\t\t\tcase \"p\":\n\t\t\t\t\tcase \"P\":\n\t\t\t\t\tcase \"s\": return ptrSize;\n\t\t\t\t\tcase \"j\": return 8;\n\t\t\t\t\tcase \"f\": return 4;\n\t\t\t\t\tcase \"d\": return 8;\n\t\t\t\t}\n\t\t\t\ttoss(\"Unhandled signature sizeof:\", s);\n\t\t\t};\n\t\t\tconst affirmBigIntArray = BigInt64Array ? () => true : () => toss(\"BigInt64Array is not available.\");\n\t\t\t/** Returns the name of a DataView getter method corresponding\n\t\t\tto the given SIG. */\n\t\t\tconst sigDVGetter = function(s) {\n\t\t\t\tswitch (sigLetter(s)) {\n\t\t\t\t\tcase \"p\":\n\t\t\t\t\tcase \"P\":\n\t\t\t\t\tcase \"s\":\n\t\t\t\t\t\tswitch (ptrSize) {\n\t\t\t\t\t\t\tcase 4: return \"getInt32\";\n\t\t\t\t\t\t\tcase 8: return affirmBigIntArray() && \"getBigInt64\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"i\": return \"getInt32\";\n\t\t\t\t\tcase \"c\": return \"getInt8\";\n\t\t\t\t\tcase \"C\": return \"getUint8\";\n\t\t\t\t\tcase \"j\": return affirmBigIntArray() && \"getBigInt64\";\n\t\t\t\t\tcase \"f\": return \"getFloat32\";\n\t\t\t\t\tcase \"d\": return \"getFloat64\";\n\t\t\t\t}\n\t\t\t\ttoss(\"Unhandled DataView getter for signature:\", s);\n\t\t\t};\n\t\t\t/** Returns the name of a DataView setter method corresponding\n\t\t\tto the given SIG. */\n\t\t\tconst sigDVSetter = function(s) {\n\t\t\t\tswitch (sigLetter(s)) {\n\t\t\t\t\tcase \"p\":\n\t\t\t\t\tcase \"P\":\n\t\t\t\t\tcase \"s\":\n\t\t\t\t\t\tswitch (ptrSize) {\n\t\t\t\t\t\t\tcase 4: return \"setInt32\";\n\t\t\t\t\t\t\tcase 8: return affirmBigIntArray() && \"setBigInt64\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"i\": return \"setInt32\";\n\t\t\t\t\tcase \"c\": return \"setInt8\";\n\t\t\t\t\tcase \"C\": return \"setUint8\";\n\t\t\t\t\tcase \"j\": return affirmBigIntArray() && \"setBigInt64\";\n\t\t\t\t\tcase \"f\": return \"setFloat32\";\n\t\t\t\t\tcase \"d\": return \"setFloat64\";\n\t\t\t\t}\n\t\t\t\ttoss(\"Unhandled DataView setter for signature:\", s);\n\t\t\t};\n\t\t\t/**\n\t\t\tReturns a factory for either Number or BigInt, depending on the\n\t\t\tgiven SIG. This constructor is used in property setters to coerce\n\t\t\tthe being-set value to the correct pointer size.\n\t\t\t*/\n\t\t\tconst sigDVSetWrapper = function(s) {\n\t\t\t\tswitch (sigLetter(s)) {\n\t\t\t\t\tcase \"i\":\n\t\t\t\t\tcase \"f\":\n\t\t\t\t\tcase \"c\":\n\t\t\t\t\tcase \"C\":\n\t\t\t\t\tcase \"d\": return Number;\n\t\t\t\t\tcase \"j\": return __BigInt;\n\t\t\t\t\tcase \"p\":\n\t\t\t\t\tcase \"P\":\n\t\t\t\t\tcase \"s\":\n\t\t\t\t\t\tswitch (ptrSize) {\n\t\t\t\t\t\t\tcase 4: return Number;\n\t\t\t\t\t\t\tcase 8: return __BigInt;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\ttoss(\"Unhandled DataView set wrapper for signature:\", s);\n\t\t\t};\n\t\t\t/** Returns the given struct and member name in a form suitable for\n\t\t\tdebugging and error output. */\n\t\t\tconst sPropName = (s, k) => s + \"::\" + k;\n\t\t\tconst __propThrowOnSet = function(structName, propName) {\n\t\t\t\treturn () => toss(sPropName(structName, propName), \"is read-only.\");\n\t\t\t};\n\t\t\t/**\n\t\t\tIn order to completely hide StructBinder-bound struct pointers\n\t\t\tfrom JS code, we store them in a scope-local WeakMap which maps\n\t\t\tthe struct-bound objects to an object with their metadata:\n\t\t\t\n\t\t\t{\n\t\t\t.p = the native pointer,\n\t\t\t.o = self (for an eventual reverse-mapping),\n\t\t\t.xb = extra bytes allocated for p,\n\t\t\t.zod = zeroOnDispose,\n\t\t\t.ownsPointer = true if this object owns p\n\t\t\t}\n\t\t\t\n\t\t\tThe .p data are accessible via obj.pointer, which is gated behind\n\t\t\ta property interceptor, but are not exposed anywhere else in the\n\t\t\tpublic API.\n\t\t\t*/\n\t\t\tconst getInstanceHandle = function f(obj, create = true) {\n\t\t\t\tlet ii = f.map.get(obj);\n\t\t\t\tif (!ii && create) f.map.set(obj, ii = f.create(obj));\n\t\t\t\treturn ii;\n\t\t\t};\n\t\t\tgetInstanceHandle.map = /* @__PURE__ */ new WeakMap();\n\t\t\tgetInstanceHandle.create = (forObj) => {\n\t\t\t\treturn Object.assign(Object.create(null), {\n\t\t\t\t\to: forObj,\n\t\t\t\t\tp: void 0,\n\t\t\t\t\townsPointer: false,\n\t\t\t\t\tzod: false,\n\t\t\t\t\txb: 0\n\t\t\t\t});\n\t\t\t};\n\t\t\t/**\n\t\t\tRemove the getInstanceHandle() mapping for obj.\n\t\t\t*/\n\t\t\tconst rmInstanceHandle = (obj) => getInstanceHandle.map.delete(obj);\n\t\t\tconst __isPtr32 = (ptr) => \"number\" === typeof ptr && ptr === (ptr | 0) && ptr >= 0;\n\t\t\tconst __isPtr64 = (ptr) => \"bigint\" === typeof ptr && ptr >= 0 || __isPtr32(ptr);\n\t\t\t/**\n\t\t\tisPtr() is an alias for isPtr32() or isPtr64(), depending on\n\t\t\tptrSize.\n\t\t\t*/\n\t\t\tconst __isPtr = 4 === ptrSize ? __isPtr32 : __isPtr64;\n\t\t\tconst __isNonNullPtr = (v) => __isPtr(v) && v > 0;\n\t\t\t/** Frees the obj.pointer memory (a.k.a. m), handles obj.ondispose,\n\t\t\tand unmaps obj from its native resources. */\n\t\t\tconst __freeStruct = function(ctor, obj, m) {\n\t\t\t\tconst ii = getInstanceHandle(obj, false);\n\t\t\t\tif (!ii) return;\n\t\t\t\trmInstanceHandle(obj);\n\t\t\t\tif (!m && !(m = ii.p)) {\n\t\t\t\t\tconsole.warn(\"Cannot(?) happen: __freeStruct() found no instanceInfo\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (Array.isArray(obj.ondispose)) {\n\t\t\t\t\tlet x;\n\t\t\t\t\twhile (x = obj.ondispose.pop()) try {\n\t\t\t\t\t\tif (x instanceof Function) x.call(obj);\n\t\t\t\t\t\telse if (x instanceof StructType) x.dispose();\n\t\t\t\t\t\telse if (__isPtr(x)) dealloc(x);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tconsole.warn(\"ondispose() for\", ctor.structName, \"@\", m, \"threw. NOT propagating it.\", e);\n\t\t\t\t\t}\n\t\t\t\t} else if (obj.ondispose instanceof Function) try {\n\t\t\t\t\tobj.ondispose();\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconsole.warn(\"ondispose() for\", ctor.structName, \"@\", m, \"threw. NOT propagating it.\", e);\n\t\t\t\t}\n\t\t\t\tdelete obj.ondispose;\n\t\t\t\tif (ctor.debugFlags.__flags.dealloc) log(\"debug.dealloc:\", ii.ownsPointer ? \"\" : \"EXTERNAL\", ctor.structName, \"instance:\", ctor.structInfo.sizeof, \"bytes @\" + m);\n\t\t\t\tif (ii.ownsPointer) {\n\t\t\t\t\tif (ii.zod || ctor.structInfo.zeroOnDispose) heap().fill(0, Number(m), Number(m) + ctor.structInfo.sizeof + ii.xb);\n\t\t\t\t\tdealloc(m);\n\t\t\t\t}\n\t\t\t};\n\t\t\t/** Returns a skeleton for a read-only, non-iterable property\n\t\t\t* descriptor. */\n\t\t\tconst rop0 = () => {\n\t\t\t\treturn {\n\t\t\t\t\tconfigurable: false,\n\t\t\t\t\twritable: false,\n\t\t\t\t\titerable: false\n\t\t\t\t};\n\t\t\t};\n\t\t\t/** Returns a skeleton for a read-only property accessor wrapping\n\t\t\tvalue v. */\n\t\t\tconst rop = (v) => {\n\t\t\t\treturn {\n\t\t\t\t\t...rop0(),\n\t\t\t\t\tvalue: v\n\t\t\t\t};\n\t\t\t};\n\t\t\t/** Allocates obj's memory buffer based on the size defined in\n\t\t\tctor.structInfo.sizeof. */\n\t\t\tconst __allocStruct = function f(ctor, obj, xm) {\n\t\t\t\tlet opt;\n\t\t\t\tconst checkPtr = (ptr) => {\n\t\t\t\t\t__isNonNullPtr(ptr) || toss(\"Invalid pointer value\", arguments[0], \"for\", ctor.structName, \"constructor.\");\n\t\t\t\t};\n\t\t\t\tif (arguments.length >= 3) if (xm && \"object\" === typeof xm) {\n\t\t\t\t\topt = xm;\n\t\t\t\t\txm = opt?.wrap;\n\t\t\t\t} else {\n\t\t\t\t\tcheckPtr(xm);\n\t\t\t\t\topt = { wrap: xm };\n\t\t\t\t}\n\t\t\t\telse opt = {};\n\t\t\t\tconst fill = !xm;\n\t\t\t\tlet nAlloc = 0;\n\t\t\t\tlet ownsPointer = false;\n\t\t\t\tif (xm) {\n\t\t\t\t\tcheckPtr(xm);\n\t\t\t\t\townsPointer = !!opt?.takeOwnership;\n\t\t\t\t} else {\n\t\t\t\t\tconst nX = opt?.extraBytes ?? 0;\n\t\t\t\t\tif (nX < 0 || nX !== (nX | 0)) toss(\"Invalid extraBytes value:\", opt?.extraBytes);\n\t\t\t\t\tnAlloc = ctor.structInfo.sizeof + nX;\n\t\t\t\t\txm = alloc(nAlloc) || toss(\"Allocation of\", ctor.structName, \"structure failed.\");\n\t\t\t\t\townsPointer = true;\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tif (opt?.debugFlags) obj.debugFlags(opt.debugFlags);\n\t\t\t\t\tif (ctor.debugFlags.__flags.alloc) log(\"debug.alloc:\", fill ? \"\" : \"EXTERNAL\", ctor.structName, \"instance:\", ctor.structInfo.sizeof, \"bytes @\" + xm);\n\t\t\t\t\tif (fill) heap().fill(0, Number(xm), Number(xm) + nAlloc);\n\t\t\t\t\tconst ii = getInstanceHandle(obj);\n\t\t\t\t\tii.p = xm;\n\t\t\t\t\tii.ownsPointer = ownsPointer;\n\t\t\t\t\tii.xb = nAlloc ? nAlloc - ctor.structInfo.sizeof : 0;\n\t\t\t\t\tii.zod = !!opt?.zeroOnDispose;\n\t\t\t\t\tif (opt?.ondispose && opt.ondispose !== xm) obj.addOnDispose(opt.ondispose);\n\t\t\t\t} catch (e) {\n\t\t\t\t\t__freeStruct(ctor, obj, xm);\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t};\n\t\t\t/** True if sig looks like an emscripten/jaccwabyt\n\t\t\ttype signature, else false. */\n\t\t\tconst looksLikeASig = function f(sig) {\n\t\t\t\tf.rxSig1 ??= /^[ipPsjfdcC]$/;\n\t\t\t\tf.rxSig2 ??= /^[vipPsjfdcC]\\([ipPsjfdcC]*\\)$/;\n\t\t\t\treturn f.rxSig1.test(sig) || f.rxSig2.test(sig);\n\t\t\t};\n\t\t\t/** Returns a pair of adaptor maps (objects) in a length-3\n\t\t\tarray specific to the given object. */\n\t\t\tconst __adaptorsFor = function(who) {\n\t\t\t\tlet x = this.get(who);\n\t\t\t\tif (!x) {\n\t\t\t\t\tx = [\n\t\t\t\t\t\tObject.create(null),\n\t\t\t\t\t\tObject.create(null),\n\t\t\t\t\t\tObject.create(null)\n\t\t\t\t\t];\n\t\t\t\t\tthis.set(who, x);\n\t\t\t\t}\n\t\t\t\treturn x;\n\t\t\t}.bind(/* @__PURE__ */ new WeakMap());\n\t\t\t/** Code de-duplifier for __adaptGet(), __adaptSet(), and\n\t\t\t__adaptStruct(). */\n\t\t\tconst __adaptor = function(who, which, key, proxy) {\n\t\t\t\tconst a = __adaptorsFor(who)[which];\n\t\t\t\tif (3 === arguments.length) return a[key];\n\t\t\t\tif (proxy) return a[key] = proxy;\n\t\t\t\treturn delete a[key];\n\t\t\t};\n\t\t\tconst __adaptGet = function(key, ...args) {\n\t\t\t\treturn __adaptor(this, 0, key, ...args);\n\t\t\t};\n\t\t\tconst __affirmNotASig = function(ctx, key) {\n\t\t\t\tlooksLikeASig(key) && toss(ctx, \"(\", key, \") collides with a data type signature.\");\n\t\t\t};\n\t\t\tconst __adaptSet = function(key, ...args) {\n\t\t\t\t__affirmNotASig(\"Setter adaptor\", key);\n\t\t\t\treturn __adaptor(this, 1, key, ...args);\n\t\t\t};\n\t\t\tconst __adaptStruct = function(key, ...args) {\n\t\t\t\t__affirmNotASig(\"Struct adaptor\", key);\n\t\t\t\treturn __adaptor(this, 2, key, ...args);\n\t\t\t};\n\t\t\t/**\n\t\t\tAn internal counterpart of __adaptStruct().  If key is-a string,\n\t\t\tuses __adaptor(who) to fetch the struct-adaptor entry for key,\n\t\t\telse key is assumed to be a struct description object. If it\n\t\t\tresolves to an object, that's returned, else an exception is\n\t\t\tthrown.\n\t\t\t*/\n\t\t\tconst __adaptStruct2 = function(who, key) {\n\t\t\t\tconst si = \"string\" === typeof key ? __adaptor(who, 2, key) : key;\n\t\t\t\tif (\"object\" !== typeof si) toss(\"Invalid struct mapping object. Arg =\", key, JSON.stringify(si));\n\t\t\t\treturn si;\n\t\t\t};\n\t\t\tconst __memberKey = (k) => memberPrefix + k + memberSuffix;\n\t\t\tconst __memberKeyProp = rop(__memberKey);\n\t\t\t/**\n\t\t\tLooks up a struct member in structInfo.members. Throws if found\n\t\t\tif tossIfNotFound is true, else returns undefined if not\n\t\t\tfound. The given name may be either the name of the\n\t\t\tstructInfo.members key (faster) or the key as modified by the\n\t\t\tmemberPrefix and memberSuffix settings.\n\t\t\t*/\n\t\t\tconst __lookupMember = function(structInfo, memberName, tossIfNotFound = true) {\n\t\t\t\tlet m = structInfo.members[memberName];\n\t\t\t\tif (!m && (memberPrefix || memberSuffix)) {\n\t\t\t\t\tfor (const v of Object.values(structInfo.members)) if (v.key === memberName) {\n\t\t\t\t\t\tm = v;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (!m && tossIfNotFound) toss(sPropName(structInfo.name || structInfo.structName, memberName), \"is not a mapped struct member.\");\n\t\t\t\t}\n\t\t\t\treturn m;\n\t\t\t};\n\t\t\t/**\n\t\t\tUses __lookupMember(obj.structInfo,memberName) to find a member,\n\t\t\tthrowing if not found. Returns its signature, either in this\n\t\t\tframework's native format or in Emscripten format.\n\t\t\t*/\n\t\t\tconst __memberSignature = function f(obj, memberName, emscriptenFormat = false) {\n\t\t\t\tif (!f._) f._ = (x) => x.replace(/[^vipPsjrdcC]/g, \"\").replace(/[pPscC]/g, \"i\");\n\t\t\t\tconst m = __lookupMember(obj.structInfo, memberName, true);\n\t\t\t\treturn emscriptenFormat ? f._(m.signature) : m.signature;\n\t\t\t};\n\t\t\t/** Impl of X.memberKeys() for StructType and struct ctors. */\n\t\t\tconst __structMemberKeys = rop(function() {\n\t\t\t\tconst a = [];\n\t\t\t\tfor (const k of Object.keys(this.structInfo.members)) a.push(this.memberKey(k));\n\t\t\t\treturn a;\n\t\t\t});\n\t\t\tconst __utf8Decoder = new TextDecoder(\"utf-8\");\n\t\t\tconst __utf8Encoder = new TextEncoder();\n\t\t\t/** Internal helper to use in operations which need to distinguish\n\t\t\tbetween SharedArrayBuffer heap memory and non-shared heap. */\n\t\t\tconst __SAB = \"undefined\" === typeof SharedArrayBuffer ? function() {} : SharedArrayBuffer;\n\t\t\tconst __utf8Decode = function(arrayBuffer, begin, end) {\n\t\t\t\tif (8 === ptrSize) {\n\t\t\t\t\tbegin = Number(begin);\n\t\t\t\t\tend = Number(end);\n\t\t\t\t}\n\t\t\t\treturn __utf8Decoder.decode(arrayBuffer.buffer instanceof __SAB ? arrayBuffer.slice(begin, end) : arrayBuffer.subarray(begin, end));\n\t\t\t};\n\t\t\t/**\n\t\t\tUses __lookupMember() to find the given obj.structInfo key.\n\t\t\tReturns that member if it is a string, else returns false. If the\n\t\t\tmember is not found, throws if tossIfNotFound is true, else\n\t\t\treturns false.\n\t\t\t*/\n\t\t\tconst __memberIsString = function(obj, memberName, tossIfNotFound = false) {\n\t\t\t\tconst m = __lookupMember(obj.structInfo, memberName, tossIfNotFound);\n\t\t\t\treturn m && 1 === m.signature.length && \"s\" === m.signature[0] ? m : false;\n\t\t\t};\n\t\t\t/**\n\t\t\tGiven a member description object, throws if member.signature is\n\t\t\tnot valid for assigning to or interpretation as a C-style string.\n\t\t\tIt optimistically assumes that any signature of (i,p,s) is\n\t\t\tC-string compatible.\n\t\t\t*/\n\t\t\tconst __affirmCStringSignature = function(member) {\n\t\t\t\tif (\"s\" === member.signature) return;\n\t\t\t\ttoss(\"Invalid member type signature for C-string value:\", JSON.stringify(member));\n\t\t\t};\n\t\t\t/**\n\t\t\tLooks up the given member in obj.structInfo. If it has a\n\t\t\tsignature of 's' then it is assumed to be a C-style UTF-8 string\n\t\t\tand a decoded copy of the string at its address is returned. If\n\t\t\tthe signature is of any other type, it throws. If an s-type\n\t\t\tmember's address is 0, `null` is returned.\n\t\t\t*/\n\t\t\tconst __memberToJsString = function f(obj, memberName) {\n\t\t\t\tconst m = __lookupMember(obj.structInfo, memberName, true);\n\t\t\t\t__affirmCStringSignature(m);\n\t\t\t\tconst addr = obj[m.key];\n\t\t\t\tif (!addr) return null;\n\t\t\t\tlet pos = addr;\n\t\t\t\tconst mem = heap();\n\t\t\t\tfor (; mem[pos] !== 0; ++pos);\n\t\t\t\treturn addr === pos ? \"\" : __utf8Decode(mem, addr, pos);\n\t\t\t};\n\t\t\t/**\n\t\t\tAdds value v to obj.ondispose, creating ondispose,\n\t\t\tor converting it to an array, if needed.\n\t\t\t*/\n\t\t\tconst __addOnDispose = function(obj, ...v) {\n\t\t\t\tif (obj.ondispose) {\n\t\t\t\t\tif (!Array.isArray(obj.ondispose)) obj.ondispose = [obj.ondispose];\n\t\t\t\t} else obj.ondispose = [];\n\t\t\t\tobj.ondispose.push(...v);\n\t\t\t};\n\t\t\t/**\n\t\t\tAllocates a new UTF-8-encoded, NUL-terminated copy of the given\n\t\t\tJS string and returns its address relative to heap(). If\n\t\t\tallocation returns 0 this function throws. Ownership of the\n\t\t\tmemory is transfered to the caller, who must eventually pass it\n\t\t\tto the configured dealloc() function.\n\t\t\t*/\n\t\t\tconst __allocCString = function(str) {\n\t\t\t\tconst u = __utf8Encoder.encode(str);\n\t\t\t\tconst mem = alloc(u.length + 1);\n\t\t\t\tif (!mem) toss(\"Allocation error while duplicating string:\", str);\n\t\t\t\tconst h = heap();\n\t\t\t\th.set(u, Number(mem));\n\t\t\t\th[__ptrAdd(mem, u.length)] = 0;\n\t\t\t\treturn mem;\n\t\t\t};\n\t\t\t/**\n\t\t\tSets the given struct member of obj to a dynamically-allocated,\n\t\t\tUTF-8-encoded, NUL-terminated copy of str. It is up to the caller\n\t\t\tto free any prior memory, if appropriate. The newly-allocated\n\t\t\tstring is added to obj.ondispose so will be freed when the object\n\t\t\tis disposed.\n\t\t\t\n\t\t\tThe given name may be either the name of the structInfo.members\n\t\t\tkey (faster) or the key as modified by the memberPrefix and\n\t\t\tmemberSuffix settings.\n\t\t\t*/\n\t\t\tconst __setMemberCString = function(obj, memberName, str) {\n\t\t\t\tconst m = __lookupMember(obj.structInfo, memberName, true);\n\t\t\t\t__affirmCStringSignature(m);\n\t\t\t\tconst mem = __allocCString(str);\n\t\t\t\tobj[m.key] = mem;\n\t\t\t\t__addOnDispose(obj, mem);\n\t\t\t\treturn obj;\n\t\t\t};\n\t\t\t/**\n\t\t\tPrototype for all StructFactory instances (the constructors\n\t\t\treturned from StructBinder).\n\t\t\t*/\n\t\t\tconst StructType = function StructType(structName, structInfo) {\n\t\t\t\tif (arguments[2] !== rop) toss(\"Do not call the StructType constructor\", \"from client-level code.\");\n\t\t\t\tObject.defineProperties(this, {\n\t\t\t\t\tstructName: rop(structName),\n\t\t\t\t\tstructInfo: rop(structInfo)\n\t\t\t\t});\n\t\t\t};\n\t\t\t/**\n\t\t\tProperties inherited by struct-type-specific StructType instances\n\t\t\tand (indirectly) concrete struct-type instances.\n\t\t\t*/\n\t\t\tStructType.prototype = Object.create(null, {\n\t\t\t\tdispose: rop(function() {\n\t\t\t\t\t__freeStruct(this.constructor, this);\n\t\t\t\t}),\n\t\t\t\tlookupMember: rop(function(memberName, tossIfNotFound = true) {\n\t\t\t\t\treturn __lookupMember(this.structInfo, memberName, tossIfNotFound);\n\t\t\t\t}),\n\t\t\t\tmemberToJsString: rop(function(memberName) {\n\t\t\t\t\treturn __memberToJsString(this, memberName);\n\t\t\t\t}),\n\t\t\t\tmemberIsString: rop(function(memberName, tossIfNotFound = true) {\n\t\t\t\t\treturn __memberIsString(this, memberName, tossIfNotFound);\n\t\t\t\t}),\n\t\t\t\tmemberKey: __memberKeyProp,\n\t\t\t\tmemberKeys: __structMemberKeys,\n\t\t\t\tmemberSignature: rop(function(memberName, emscriptenFormat = false) {\n\t\t\t\t\treturn __memberSignature(this, memberName, emscriptenFormat);\n\t\t\t\t}),\n\t\t\t\tmemoryDump: rop(function() {\n\t\t\t\t\tconst p = this.pointer;\n\t\t\t\t\treturn p ? new Uint8Array(heap().slice(Number(p), Number(p) + this.structInfo.sizeof)) : null;\n\t\t\t\t}),\n\t\t\t\textraBytes: {\n\t\t\t\t\tconfigurable: false,\n\t\t\t\t\tenumerable: false,\n\t\t\t\t\tget: function() {\n\t\t\t\t\t\treturn getInstanceHandle(this, false)?.xb ?? 0;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tzeroOnDispose: {\n\t\t\t\t\tconfigurable: false,\n\t\t\t\t\tenumerable: false,\n\t\t\t\t\tget: function() {\n\t\t\t\t\t\treturn getInstanceHandle(this, false)?.zod ?? !!this.structInfo.zeroOnDispose;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tpointer: {\n\t\t\t\t\tconfigurable: false,\n\t\t\t\t\tenumerable: false,\n\t\t\t\t\tget: function() {\n\t\t\t\t\t\treturn getInstanceHandle(this, false)?.p;\n\t\t\t\t\t},\n\t\t\t\t\tset: () => toss(\"Cannot assign the 'pointer' property of a struct.\")\n\t\t\t\t},\n\t\t\t\tsetMemberCString: rop(function(memberName, str) {\n\t\t\t\t\treturn __setMemberCString(this, memberName, str);\n\t\t\t\t})\n\t\t\t});\n\t\t\tObject.assign(StructType.prototype, { addOnDispose: function(...v) {\n\t\t\t\t__addOnDispose(this, ...v);\n\t\t\t\treturn this;\n\t\t\t} });\n\t\t\t/**\n\t\t\t\"Static\" properties for StructType.\n\t\t\t*/\n\t\t\tObject.defineProperties(StructType, {\n\t\t\t\tallocCString: rop(__allocCString),\n\t\t\t\tisA: rop((v) => v instanceof StructType),\n\t\t\t\thasExternalPointer: rop((v) => {\n\t\t\t\t\tconst ii = getInstanceHandle(v, false);\n\t\t\t\t\treturn !!(ii?.p && !ii?.ownsPointer);\n\t\t\t\t}),\n\t\t\t\tmemberKey: __memberKeyProp\n\t\t\t});\n\t\t\t/**\n\t\t\tIf struct description object si has a getter proxy, return it (a\n\t\t\tfunction), else return undefined.\n\t\t\t*/\n\t\t\tconst memberGetterProxy = function(si) {\n\t\t\t\treturn si.get || (si.adaptGet ? StructBinder.adaptGet(si.adaptGet) : void 0);\n\t\t\t};\n\t\t\t/**\n\t\t\tIf struct description object si has a setter proxy, return it (a\n\t\t\tfunction), else return undefined.\n\t\t\t*/\n\t\t\tconst memberSetterProxy = function(si) {\n\t\t\t\treturn si.set || (si.adaptSet ? StructBinder.adaptSet(si.adaptSet) : void 0);\n\t\t\t};\n\t\t\t/**\n\t\t\tTo be called by makeMemberWrapper() when si has a 'members'\n\t\t\tmember, i.e. is an embedded struct. This function sets up that\n\t\t\tstruct like any other and also sets up property accessor for\n\t\t\tctor.memberKey(name) which returns an instance of that new\n\t\t\tStructType when the member is accessed. That instance wraps the\n\t\t\tmemory of the member's part of the containing C struct instance.\n\t\t\t\n\t\t\tThat is, if struct Foo has member bar which is an inner struct\n\t\t\tthen:\n\t\t\t\n\t\t\tconst f = new Foo;\n\t\t\tconst b = f.bar;\n\t\t\tassert( b is-a StructType object );\n\t\t\tassert( b.pointer === f.b.pointer );\n\t\t\t\n\t\t\tb will be disposed of when f() is. Calling b.dispose() will not\n\t\t\tdo any permanent harm, as the wrapper object will be recreated\n\t\t\twhen accessing f.bar, pointing to the same memory in f.\n\t\t\t\n\t\t\tThe si.zeroOnDispose flag has no effect on embedded structs because\n\t\t\tthey wrap \"external\" memory, so do not own it, and are thus never\n\t\t\tfreed, as such.\n\t\t\t*/\n\t\t\tconst makeMemberStructWrapper = function callee(ctor, name, si) {\n\t\t\t\t/**\n\t\t\t\tWhere we store inner-struct member proxies. Keys are a\n\t\t\t\tcombination of the parent object's pointer address and the\n\t\t\t\tproperty's name. The values are StructType instances.\n\t\t\t\t*/\n\t\t\t\tconst __innerStructs = callee.innerStructs ??= /* @__PURE__ */ new Map();\n\t\t\t\tconst key = ctor.memberKey(name);\n\t\t\t\tif (void 0 !== si.signature) toss(\"'signature' cannot be used on an embedded struct (\", ctor.structName, \".\", key, \").\");\n\t\t\t\tif (memberSetterProxy(si)) toss(\"'set' and 'adaptSet' are not permitted for nested struct members.\");\n\t\t\t\tsi.structName ??= ctor.structName + \"::\" + name;\n\t\t\t\tsi.key = key;\n\t\t\t\tsi.name = name;\n\t\t\t\tsi.constructor = this.call(this, si.structName, si);\n\t\t\t\tconst getterProxy = memberGetterProxy(si);\n\t\t\t\tconst prop = Object.assign(Object.create(null), {\n\t\t\t\t\tconfigurable: false,\n\t\t\t\t\tenumerable: false,\n\t\t\t\t\tset: __propThrowOnSet(ctor.structName, key),\n\t\t\t\t\tget: function() {\n\t\t\t\t\t\tconst dbg = this.debugFlags.__flags;\n\t\t\t\t\t\tconst p = this.pointer;\n\t\t\t\t\t\tconst k = p + \".\" + key;\n\t\t\t\t\t\tlet s = __innerStructs.get(k);\n\t\t\t\t\t\tif (dbg.getter) log(\"debug.getter: k =\", k);\n\t\t\t\t\t\tif (!s) {\n\t\t\t\t\t\t\ts = new si.constructor(__ptrAdd(p, si.offset));\n\t\t\t\t\t\t\t__innerStructs.set(k, s);\n\t\t\t\t\t\t\tthis.addOnDispose(() => s.dispose());\n\t\t\t\t\t\t\ts.addOnDispose(() => __innerStructs.delete(k));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (getterProxy) s = getterProxy.apply(this, [s, key]);\n\t\t\t\t\t\tif (dbg.getter) log(\"debug.getter: result =\", s);\n\t\t\t\t\t\treturn s;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tObject.defineProperty(ctor.prototype, key, prop);\n\t\t\t};\n\t\t\t/**\n\t\t\tThis is where most of the magic happens.\n\t\t\t\n\t\t\tPass this a StructBinderImpl-generated constructor, a member\n\t\t\tproperty name, and the struct member description object. It will\n\t\t\tdefine property accessors for proto[memberKey] which read\n\t\t\tfrom/write to memory in this.pointer. It modifies si to make\n\t\t\tcertain downstream operations simpler.\n\t\t\t*/\n\t\t\tconst makeMemberWrapper = function f(ctor, name, si) {\n\t\t\t\tsi = __adaptStruct2(this, si);\n\t\t\t\tif (si.members) return makeMemberStructWrapper.call(this, ctor, name, si);\n\t\t\t\tif (!f.cache) {\n\t\t\t\t\tf.cache = {\n\t\t\t\t\t\tgetters: {},\n\t\t\t\t\t\tsetters: {},\n\t\t\t\t\t\tsw: {}\n\t\t\t\t\t};\n\t\t\t\t\tconst a = [\n\t\t\t\t\t\t\"i\",\n\t\t\t\t\t\t\"c\",\n\t\t\t\t\t\t\"C\",\n\t\t\t\t\t\t\"p\",\n\t\t\t\t\t\t\"P\",\n\t\t\t\t\t\t\"s\",\n\t\t\t\t\t\t\"f\",\n\t\t\t\t\t\t\"d\",\n\t\t\t\t\t\t\"v()\"\n\t\t\t\t\t];\n\t\t\t\t\tif (bigIntEnabled) a.push(\"j\");\n\t\t\t\t\ta.forEach(function(v) {\n\t\t\t\t\t\tf.cache.getters[v] = sigDVGetter(v);\n\t\t\t\t\t\tf.cache.setters[v] = sigDVSetter(v);\n\t\t\t\t\t\tf.cache.sw[v] = sigDVSetWrapper(v);\n\t\t\t\t\t});\n\t\t\t\t\tf.sigCheck = function(obj, name, key, sig) {\n\t\t\t\t\t\tif (Object.prototype.hasOwnProperty.call(obj, key)) toss(obj.structName, \"already has a property named\", key + \".\");\n\t\t\t\t\t\tlooksLikeASig(sig) || toss(\"Malformed signature for\", sPropName(obj.structName, name) + \":\", sig);\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst key = ctor.memberKey(name);\n\t\t\t\tf.sigCheck(ctor.prototype, name, key, si.signature);\n\t\t\t\tsi.key = key;\n\t\t\t\tsi.name = name;\n\t\t\t\tconst sigGlyph = sigLetter(si.signature);\n\t\t\t\tconst xPropName = sPropName(ctor.structName, key);\n\t\t\t\tconst dbg = ctor.debugFlags.__flags;\n\t\t\t\tconst getterProxy = memberGetterProxy(si);\n\t\t\t\tconst prop = Object.create(null);\n\t\t\t\tprop.configurable = false;\n\t\t\t\tprop.enumerable = false;\n\t\t\t\tprop.get = function() {\n\t\t\t\t\t/**\n\t\t\t\t\tThis getter proxy reads its value from the appropriate pointer\n\t\t\t\t\taddress in the heap. It knows where and how much to read based on\n\t\t\t\t\tthis.pointer, si.offset, and si.sizeof.\n\t\t\t\t\t*/\n\t\t\t\t\tif (dbg.getter) log(\"debug.getter:\", f.cache.getters[sigGlyph], \"for\", sigIR(sigGlyph), xPropName, \"@\", this.pointer, \"+\", si.offset, \"sz\", si.sizeof);\n\t\t\t\t\tlet rc = new DataView(heap().buffer, Number(this.pointer) + si.offset, si.sizeof)[f.cache.getters[sigGlyph]](0, isLittleEndian);\n\t\t\t\t\tif (getterProxy) rc = getterProxy.apply(this, [key, rc]);\n\t\t\t\t\tif (dbg.getter) log(\"debug.getter:\", xPropName, \"result =\", rc);\n\t\t\t\t\treturn rc;\n\t\t\t\t};\n\t\t\t\tif (si.readOnly) prop.set = __propThrowOnSet(ctor.prototype.structName, key);\n\t\t\t\telse {\n\t\t\t\t\tconst setterProxy = memberSetterProxy(si);\n\t\t\t\t\tprop.set = function(v) {\n\t\t\t\t\t\t/**\n\t\t\t\t\t\tThe converse of prop.get(), this encodes v into the appropriate\n\t\t\t\t\t\tspot in the WASM heap.\n\t\t\t\t\t\t*/\n\t\t\t\t\t\tif (dbg.setter) log(\"debug.setter:\", f.cache.setters[sigGlyph], \"for\", sigIR(sigGlyph), xPropName, \"@\", this.pointer, \"+\", si.offset, \"sz\", si.sizeof, v);\n\t\t\t\t\t\tif (!this.pointer) toss(\"Cannot set native property on a disposed\", this.structName, \"instance.\");\n\t\t\t\t\t\tif (setterProxy) v = setterProxy.apply(this, [key, v]);\n\t\t\t\t\t\tif (null === v || void 0 === v) v = __NullPtr;\n\t\t\t\t\t\telse if (isPtrSig(si.signature) && !__isPtr(v)) if (isAutoPtrSig(si.signature) && v instanceof StructType) {\n\t\t\t\t\t\t\tv = v.pointer || __NullPtr;\n\t\t\t\t\t\t\tif (dbg.setter) log(\"debug.setter:\", xPropName, \"resolved to\", v);\n\t\t\t\t\t\t} else toss(\"Invalid value for pointer-type\", xPropName + \".\");\n\t\t\t\t\t\tnew DataView(heap().buffer, Number(this.pointer) + si.offset, si.sizeof)[f.cache.setters[sigGlyph]](0, f.cache.sw[sigGlyph](v), isLittleEndian);\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tObject.defineProperty(ctor.prototype, key, prop);\n\t\t\t};\n\t\t\t/**\n\t\t\tThe main factory function which will be returned to the\n\t\t\tcaller. The third argument is structly for internal use.\n\t\t\t\n\t\t\tThis level of indirection is to avoid that clients can pass a\n\t\t\tthird argument to this, as that's only for internal use.\n\t\t\t\n\t\t\tinternalOpt options:\n\t\t\t\n\t\t\t- None right now. This is for potential use in recursion.\n\t\t\t\n\t\t\tUsages:\n\t\t\t\n\t\t\tStructBinder(string, obj [,optObj]);\n\t\t\tStructBinder(obj);\n\t\t\t*/\n\t\t\tconst StructBinderImpl = function StructBinderImpl(structName, si, opt = Object.create(null)) {\n\t\t\t\t/**\n\t\t\t\tStructCtor is the eventual return value of this function. We\n\t\t\t\tneed to populate this early on so that we can do some trickery\n\t\t\t\tin feeding it through recursion.\n\t\t\t\t\n\t\t\t\tUses:\n\t\t\t\t\n\t\t\t\t// heap-allocated:\n\t\t\t\tconst x = new StructCtor;\n\t\t\t\t// externally-managed memory:\n\t\t\t\tconst y = new StructCtor( aPtrToACompatibleCStruct );\n\t\t\t\t\n\t\t\t\tor, more recently:\n\t\t\t\t\n\t\t\t\tconst z = new StructCtor({\n\t\t\t\textraBytes: [int=0] extra bytes to allocate after the struct\n\t\t\t\t\n\t\t\t\twrap: [aPtrToACompatibleCStruct=undefined]. If provided, this\n\t\t\t\tinstance waps, but does not (by default) own the memory, else\n\t\t\t\ta new instance is allocated from the WASM heap.\n\t\t\t\t\n\t\t\t\townsPointer: true if this object takes over ownership of\n\t\t\t\twrap.\n\t\t\t\t\n\t\t\t\tzeroOnDispose: [bool=StructCtor.structInfo.zeroOnDispose]\n\t\t\t\t\n\t\t\t\tautoCalcSizeOffset: [bool=false] Automatically calculate\n\t\t\t\tsizeof an offset. This is fine for pure-JS structs (which\n\t\t\t\tprobably aren't useful beyond testing of Jaccwabyt) but it's\n\t\t\t\tdangerous to use with actual WASM objects because we cannot\n\t\t\t\tbe guaranteed to have the same memory layout as an ostensibly\n\t\t\t\tmatching C struct. This applies recursively to all children\n\t\t\t\tof the struct description.\n\t\t\t\t\n\t\t\t\t// TODO? Per-instance overrides of the struct-level flags?\n\t\t\t\t\n\t\t\t\tget: (k,v)=>v,\n\t\t\t\tset: (k,v)=>v,\n\t\t\t\tadaptGet: string,\n\t\t\t\tadaptSet: string\n\t\t\t\t\n\t\t\t\t// That wouldn't fit really well right now, apparently.\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\t*/\n\t\t\t\tconst StructCtor = function StructCtor(arg) {\n\t\t\t\t\tif (!(this instanceof StructCtor)) toss(\"The\", structName, \"constructor may only be called via 'new'.\");\n\t\t\t\t\t__allocStruct(StructCtor, this, ...arguments);\n\t\t\t\t};\n\t\t\t\tconst self = this;\n\t\t\t\t/**\n\t\t\t\t\"Convert\" struct description x to a struct description, if\n\t\t\t\tneeded. This expands adaptStruct() mappings and transforms\n\t\t\t\t{memberName:signatureString} signature syntax to object form.\n\t\t\t\t*/\n\t\t\t\tconst ads = (x) => {\n\t\t\t\t\treturn \"string\" === typeof x && looksLikeASig(x) ? { signature: x } : __adaptStruct2(self, x);\n\t\t\t\t};\n\t\t\t\tif (1 === arguments.length) {\n\t\t\t\t\tsi = ads(structName);\n\t\t\t\t\tstructName = si.structName || si.name;\n\t\t\t\t} else if (2 === arguments.length) {\n\t\t\t\t\tsi = ads(si);\n\t\t\t\t\tsi.name ??= structName;\n\t\t\t\t} else si = ads(si);\n\t\t\t\tstructName ??= si.structName;\n\t\t\t\tstructName ??= opt.structName;\n\t\t\t\tif (!structName) toss(\"One of 'name' or 'structName' are required.\");\n\t\t\t\tif (si.adapt) {\n\t\t\t\t\tObject.keys(si.adapt.struct || {}).forEach((k) => {\n\t\t\t\t\t\t__adaptStruct.call(StructBinderImpl, k, si.adapt.struct[k]);\n\t\t\t\t\t});\n\t\t\t\t\tObject.keys(si.adapt.set || {}).forEach((k) => {\n\t\t\t\t\t\t__adaptSet.call(StructBinderImpl, k, si.adapt.set[k]);\n\t\t\t\t\t});\n\t\t\t\t\tObject.keys(si.adapt.get || {}).forEach((k) => {\n\t\t\t\t\t\t__adaptGet.call(StructBinderImpl, k, si.adapt.get[k]);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (!si.members && !si.sizeof) si.sizeof = sigSize(si.signature);\n\t\t\t\tconst debugFlags = rop(SBF.__makeDebugFlags(StructBinder.debugFlags));\n\t\t\t\tObject.defineProperties(StructCtor, {\n\t\t\t\t\tdebugFlags,\n\t\t\t\t\tisA: rop((v) => v instanceof StructCtor),\n\t\t\t\t\tmemberKey: __memberKeyProp,\n\t\t\t\t\tmemberKeys: __structMemberKeys,\n\t\t\t\t\tstructInfo: rop(si),\n\t\t\t\t\tstructName: rop(structName),\n\t\t\t\t\tptrAdd: rop(__ptrAdd)\n\t\t\t\t});\n\t\t\t\tStructCtor.prototype = new StructType(structName, si, rop);\n\t\t\t\tObject.defineProperties(StructCtor.prototype, {\n\t\t\t\t\tdebugFlags,\n\t\t\t\t\tconstructor: rop(StructCtor),\n\t\t\t\t\tptrAdd: rop(__ptrAddSelf)\n\t\t\t\t});\n\t\t\t\tlet lastMember = false;\n\t\t\t\tlet offset = 0;\n\t\t\t\tconst autoCalc = !!si.autoCalcSizeOffset;\n\t\t\t\tif (!autoCalc) {\n\t\t\t\t\tif (!si.sizeof) toss(structName, \"description is missing its sizeof property.\");\n\t\t\t\t\tsi.offset ??= 0;\n\t\t\t\t} else si.offset ??= 0;\n\t\t\t\tObject.keys(si.members || {}).forEach((k) => {\n\t\t\t\t\tlet m = ads(si.members[k]);\n\t\t\t\t\tif (!m.members && !m.sizeof) {\n\t\t\t\t\t\tm.sizeof = sigSize(m.signature);\n\t\t\t\t\t\tif (!m.sizeof) toss(sPropName(structName, k), \"is missing a sizeof property.\", m);\n\t\t\t\t\t}\n\t\t\t\t\tif (void 0 === m.offset) if (autoCalc) m.offset = offset;\n\t\t\t\t\telse toss(sPropName(structName, k), \"is missing its offset.\", JSON.stringify(m));\n\t\t\t\t\tsi.members[k] = m;\n\t\t\t\t\tif (!lastMember || lastMember.offset < m.offset) lastMember = m;\n\t\t\t\t\tconst oldAutoCalc = !!m.autoCalc;\n\t\t\t\t\tif (autoCalc) m.autoCalcSizeOffset = true;\n\t\t\t\t\tmakeMemberWrapper.call(self, StructCtor, k, m);\n\t\t\t\t\tif (oldAutoCalc) m.autoCalcSizeOffset = true;\n\t\t\t\t\telse delete m.autoCalcSizeOffset;\n\t\t\t\t\toffset += m.sizeof;\n\t\t\t\t});\n\t\t\t\tif (!lastMember) toss(\"No member property descriptions found.\");\n\t\t\t\tif (!si.sizeof) si.sizeof = offset;\n\t\t\t\tif (si.sizeof === 1) si.signature === \"c\" || si.signature === \"C\" || toss(\"Unexpected sizeof==1 member\", sPropName(structName, k), \"with signature\", si.signature);\n\t\t\t\telse {\n\t\t\t\t\tif (0 !== si.sizeof % 4) {\n\t\t\t\t\t\tconsole.warn(\"Invalid struct member description\", si);\n\t\t\t\t\t\ttoss(structName, \"sizeof is not aligned. sizeof=\" + si.sizeof);\n\t\t\t\t\t}\n\t\t\t\t\tif (0 !== si.offset % 4) {\n\t\t\t\t\t\tconsole.warn(\"Invalid struct member description\", si);\n\t\t\t\t\t\ttoss(structName, \"offset is not aligned. offset=\" + si.offset);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (si.sizeof < offset) {\n\t\t\t\t\tconsole.warn(\"Suspect struct description:\", si, \"offset =\", offset);\n\t\t\t\t\ttoss(\"Mismatch in the calculated vs. the provided sizeof/offset info.\", \"Expected sizeof\", offset, \"but got\", si.sizeof, \"for\", si);\n\t\t\t\t}\n\t\t\t\tdelete si.autoCalcSizeOffset;\n\t\t\t\treturn StructCtor;\n\t\t\t};\n\t\t\tconst StructBinder = function StructBinder(structName, structInfo) {\n\t\t\t\treturn 1 == arguments.length ? StructBinderImpl.call(StructBinder, structName) : StructBinderImpl.call(StructBinder, structName, structInfo);\n\t\t\t};\n\t\t\tStructBinder.StructType = StructType;\n\t\t\tStructBinder.config = config;\n\t\t\tStructBinder.allocCString = __allocCString;\n\t\t\tStructBinder.adaptGet = __adaptGet;\n\t\t\tStructBinder.adaptSet = __adaptSet;\n\t\t\tStructBinder.adaptStruct = __adaptStruct;\n\t\t\tStructBinder.ptrAdd = __ptrAdd;\n\t\t\tif (!StructBinder.debugFlags) StructBinder.debugFlags = SBF.__makeDebugFlags(SBF.debugFlags);\n\t\t\treturn StructBinder;\n\t\t};\n\t\tglobalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3) {\n\t\t\t\"use strict\";\n\t\t\tconst toss = (...args) => {\n\t\t\t\tthrow new Error(args.join(\" \"));\n\t\t\t};\n\t\t\tconst capi = sqlite3.capi, wasm = sqlite3.wasm, util = sqlite3.util;\n\t\t\tglobalThis.WhWasmUtilInstaller(wasm);\n\t\t\tdelete globalThis.WhWasmUtilInstaller;\n\t\t\t/**\n\t\t\tSignatures for the WASM-exported C-side functions. Each entry\n\t\t\tis an array with 2+ elements:\n\t\t\t\n\t\t\t[ \"c-side name\",\n\t\t\t\"result type\" (wasm.xWrap() syntax),\n\t\t\t[arg types in xWrap() syntax]\n\t\t\t// ^^^ this needn't strictly be an array: it can be subsequent\n\t\t\t// elements instead: [x,y,z] is equivalent to x,y,z\n\t\t\t]\n\t\t\t\n\t\t\tSupport for the API-specific data types in the result/argument\n\t\t\ttype strings gets plugged in at a later phase in the API\n\t\t\tinitialization process.\n\t\t\t*/\n\t\t\tconst bindingSignatures = {\n\t\t\t\tcore: [\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_aggregate_context\",\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\t\"sqlite3_context*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_bind_double\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"f64\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_bind_int\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_bind_null\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_bind_parameter_count\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_stmt*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_bind_parameter_index\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\t\"string\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_bind_parameter_name\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_bind_pointer\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"string:static\",\n\t\t\t\t\t\t\"*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_busy_handler\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\t\tsignature: \"i(pi)\",\n\t\t\t\t\t\t\t\tcontextKey: (argv, argIndex) => argv[0]\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\"*\"\n\t\t\t\t\t\t]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_busy_timeout\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_changes\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_clear_bindings\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_stmt*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_collation_needed\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_column_blob\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_column_bytes\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_column_count\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_stmt*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_column_decltype\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_column_double\",\n\t\t\t\t\t\t\"f64\",\n\t\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_column_int\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_column_name\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_column_type\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_column_value\",\n\t\t\t\t\t\t\"sqlite3_value*\",\n\t\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_commit_hook\",\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\t\tname: \"sqlite3_commit_hook\",\n\t\t\t\t\t\t\t\tsignature: \"i(p)\",\n\t\t\t\t\t\t\t\tcontextKey: (argv) => argv[0]\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\"*\"\n\t\t\t\t\t\t]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_compileoption_get\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_compileoption_used\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"string\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_complete\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"string:flexible\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_context_db_handle\",\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"sqlite3_context*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_data_count\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_stmt*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_db_filename\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"string\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_db_handle\",\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"sqlite3_stmt*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_db_name\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_db_readonly\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"string\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_db_status\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_errcode\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_errmsg\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"sqlite3*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_error_offset\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_errstr\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_exec\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\t\"string:flexible\",\n\t\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\t\tsignature: \"i(pipp)\",\n\t\t\t\t\t\t\t\tbindScope: \"transient\",\n\t\t\t\t\t\t\t\tcallProxy: (callback) => {\n\t\t\t\t\t\t\t\t\tlet aNames;\n\t\t\t\t\t\t\t\t\treturn (pVoid, nCols, pColVals, pColNames) => {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tconst aVals = wasm.cArgvToJs(nCols, pColVals);\n\t\t\t\t\t\t\t\t\t\t\tif (!aNames) aNames = wasm.cArgvToJs(nCols, pColNames);\n\t\t\t\t\t\t\t\t\t\t\treturn callback(aVals, aNames) | 0;\n\t\t\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\t\t\treturn e.resultCode || capi.SQLITE_ERROR;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\t\"**\"\n\t\t\t\t\t\t]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_expanded_sql\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"sqlite3_stmt*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_extended_errcode\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_extended_result_codes\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_file_control\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_finalize\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_stmt*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_free\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t\"*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_get_autocommit\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_get_auxdata\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"sqlite3_context*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\"sqlite3_initialize\", void 0],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_interrupt\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t\"sqlite3*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_is_interrupted\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\"sqlite3_keyword_count\", \"int\"],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_keyword_name\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\t\"**\",\n\t\t\t\t\t\t\t\"*\"\n\t\t\t\t\t\t]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_keyword_check\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t[\"string\", \"int\"]\n\t\t\t\t\t],\n\t\t\t\t\t[\"sqlite3_libversion\", \"string\"],\n\t\t\t\t\t[\"sqlite3_libversion_number\", \"int\"],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_limit\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\t\"int\"\n\t\t\t\t\t\t]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_malloc\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_next_stmt\",\n\t\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\t[\"sqlite3*\", \"sqlite3_stmt*\"]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_open\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_open_v2\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"string\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_realloc\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_reset\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_stmt*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_result_blob\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t\"sqlite3_context*\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_result_double\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t\"sqlite3_context*\",\n\t\t\t\t\t\t\"f64\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_result_error\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t\"sqlite3_context*\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_result_error_code\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t\"sqlite3_context*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_result_error_nomem\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t\"sqlite3_context*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_result_error_toobig\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t\"sqlite3_context*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_result_int\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t\"sqlite3_context*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_result_null\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t\"sqlite3_context*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_result_pointer\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t\"sqlite3_context*\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"string:static\",\n\t\t\t\t\t\t\"*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_result_subtype\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t\"sqlite3_value*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_result_text\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t\"sqlite3_context*\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_result_zeroblob\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t\"sqlite3_context*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_rollback_hook\",\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\t\tname: \"sqlite3_rollback_hook\",\n\t\t\t\t\t\t\t\tsignature: \"v(p)\",\n\t\t\t\t\t\t\t\tcontextKey: (argv) => argv[0]\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\"*\"\n\t\t\t\t\t\t]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_set_auxdata\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\"sqlite3_context*\",\n\t\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\t\"*\"\n\t\t\t\t\t\t]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_set_errmsg\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"string\"\n\t\t\t\t\t],\n\t\t\t\t\t[\"sqlite3_shutdown\", void 0],\n\t\t\t\t\t[\"sqlite3_sourceid\", \"string\"],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_sql\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"sqlite3_stmt*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_status\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_step\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_stmt*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_stmt_busy\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_stmt*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_stmt_readonly\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_stmt*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_stmt_status\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_strglob\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"string\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_stricmp\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"string\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_strlike\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_strnicmp\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_table_column_metadata\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"**\",\n\t\t\t\t\t\t\"**\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_total_changes\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_trace_v2\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\t\tname: \"sqlite3_trace_v2::callback\",\n\t\t\t\t\t\t\t\tsignature: \"i(ippp)\",\n\t\t\t\t\t\t\t\tcontextKey: (argv, argIndex) => argv[0]\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\"*\"\n\t\t\t\t\t\t]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_txn_state\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t[\"sqlite3*\", \"string\"]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_uri_boolean\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_filename\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_uri_key\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"sqlite3_filename\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_uri_parameter\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"sqlite3_filename\",\n\t\t\t\t\t\t\"string\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_user_data\",\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\t\"sqlite3_context*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_value_blob\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"sqlite3_value*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_value_bytes\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_value*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_value_double\",\n\t\t\t\t\t\t\"f64\",\n\t\t\t\t\t\t\"sqlite3_value*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_value_dup\",\n\t\t\t\t\t\t\"sqlite3_value*\",\n\t\t\t\t\t\t\"sqlite3_value*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_value_free\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t\"sqlite3_value*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_value_frombind\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_value*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_value_int\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_value*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_value_nochange\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_value*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_value_numeric_type\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_value*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_value_pointer\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"sqlite3_value*\",\n\t\t\t\t\t\t\"string:static\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_value_subtype\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_value*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_value_type\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_value*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_vfs_find\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"string\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_vfs_register\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_vfs*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_vfs_unregister\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_vfs*\"\n\t\t\t\t\t]\n\t\t\t\t],\n\t\t\t\tint64: [\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_bind_int64\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\t\"i64\"\n\t\t\t\t\t\t]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_changes64\",\n\t\t\t\t\t\t\"i64\",\n\t\t\t\t\t\t[\"sqlite3*\"]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_column_int64\",\n\t\t\t\t\t\t\"i64\",\n\t\t\t\t\t\t[\"sqlite3_stmt*\", \"int\"]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_deserialize\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"i64\",\n\t\t\t\t\t\t\"i64\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_last_insert_rowid\",\n\t\t\t\t\t\t\"i64\",\n\t\t\t\t\t\t[\"sqlite3*\"]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_malloc64\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"i64\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_msize\",\n\t\t\t\t\t\t\"i64\",\n\t\t\t\t\t\t\"*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_overload_function\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\t\"int\"\n\t\t\t\t\t\t]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_realloc64\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"i64\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_result_int64\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"i64\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_result_zeroblob64\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"i64\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_serialize\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_set_last_insert_rowid\",\n\t\t\t\t\t\tvoid 0,\n\t\t\t\t\t\t[\"sqlite3*\", \"i64\"]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_status64\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_db_status64\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_total_changes64\",\n\t\t\t\t\t\t\"i64\",\n\t\t\t\t\t\t[\"sqlite3*\"]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_update_hook\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\t\tname: \"sqlite3_update_hook::callback\",\n\t\t\t\t\t\t\t\tsignature: \"v(pippj)\",\n\t\t\t\t\t\t\t\tcontextKey: (argv) => argv[0],\n\t\t\t\t\t\t\t\tcallProxy: (callback) => {\n\t\t\t\t\t\t\t\t\treturn (p, op, z0, z1, rowid) => {\n\t\t\t\t\t\t\t\t\t\tcallback(p, op, wasm.cstrToJs(z0), wasm.cstrToJs(z1), rowid);\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\"*\"\n\t\t\t\t\t\t]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_uri_int64\",\n\t\t\t\t\t\t\"i64\",\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\"sqlite3_filename\",\n\t\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\t\"i64\"\n\t\t\t\t\t\t]\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_value_int64\",\n\t\t\t\t\t\t\"i64\",\n\t\t\t\t\t\t\"sqlite3_value*\"\n\t\t\t\t\t]\n\t\t\t\t],\n\t\t\t\twasmInternal: [\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3__wasm_db_reset\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3*\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3__wasm_db_vfs\",\n\t\t\t\t\t\t\"sqlite3_vfs*\",\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"string\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3__wasm_vfs_create_file\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_vfs*\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3__wasm_posix_create_file\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3__wasm_vfs_unlink\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"sqlite3_vfs*\",\n\t\t\t\t\t\t\"string\"\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3__wasm_qfmt_token\",\n\t\t\t\t\t\t\"string:dealloc\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t]\n\t\t\t\t]\n\t\t\t};\n\t\t\tif (!!wasm.exports.sqlite3_progress_handler) bindingSignatures.core.push([\n\t\t\t\t\"sqlite3_progress_handler\",\n\t\t\t\tvoid 0,\n\t\t\t\t[\n\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\tname: \"xProgressHandler\",\n\t\t\t\t\t\tsignature: \"i(p)\",\n\t\t\t\t\t\tbindScope: \"context\",\n\t\t\t\t\t\tcontextKey: (argv, argIndex) => argv[0]\n\t\t\t\t\t}),\n\t\t\t\t\t\"*\"\n\t\t\t\t]\n\t\t\t]);\n\t\t\tif (!!wasm.exports.sqlite3_stmt_explain) bindingSignatures.core.push([\n\t\t\t\t\"sqlite3_stmt_explain\",\n\t\t\t\t\"int\",\n\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\"int\"\n\t\t\t], [\n\t\t\t\t\"sqlite3_stmt_isexplain\",\n\t\t\t\t\"int\",\n\t\t\t\t\"sqlite3_stmt*\"\n\t\t\t]);\n\t\t\tif (!!wasm.exports.sqlite3_set_authorizer) bindingSignatures.core.push([\n\t\t\t\t\"sqlite3_set_authorizer\",\n\t\t\t\t\"int\",\n\t\t\t\t[\n\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\tname: \"sqlite3_set_authorizer::xAuth\",\n\t\t\t\t\t\tsignature: \"i(pissss)\",\n\t\t\t\t\t\tcontextKey: (argv, argIndex) => argv[0],\n\t\t\t\t\t\tcallProxy: (callback) => {\n\t\t\t\t\t\t\treturn (pV, iCode, s0, s1, s2, s3) => {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\ts0 = s0 && wasm.cstrToJs(s0);\n\t\t\t\t\t\t\t\t\ts1 = s1 && wasm.cstrToJs(s1);\n\t\t\t\t\t\t\t\t\ts2 = s2 && wasm.cstrToJs(s2);\n\t\t\t\t\t\t\t\t\ts3 = s3 && wasm.cstrToJs(s3);\n\t\t\t\t\t\t\t\t\treturn callback(pV, iCode, s0, s1, s2, s3) | 0;\n\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\treturn e.resultCode || capi.SQLITE_ERROR;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\t\"*\"\n\t\t\t\t]\n\t\t\t]);\n\t\t\tif (!!wasm.exports.sqlite3_column_origin_name) bindingSignatures.core.push([\n\t\t\t\t\"sqlite3_column_database_name\",\n\t\t\t\t\"string\",\n\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\"int\"\n\t\t\t], [\n\t\t\t\t\"sqlite3_column_origin_name\",\n\t\t\t\t\"string\",\n\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\"int\"\n\t\t\t], [\n\t\t\t\t\"sqlite3_column_table_name\",\n\t\t\t\t\"string\",\n\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\"int\"\n\t\t\t]);\n\t\t\tif (wasm.bigIntEnabled && !!wasm.exports.sqlite3_declare_vtab) bindingSignatures.int64.push([\n\t\t\t\t\"sqlite3_create_module\",\n\t\t\t\t\"int\",\n\t\t\t\t[\n\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\"string\",\n\t\t\t\t\t\"sqlite3_module*\",\n\t\t\t\t\t\"*\"\n\t\t\t\t]\n\t\t\t], [\n\t\t\t\t\"sqlite3_create_module_v2\",\n\t\t\t\t\"int\",\n\t\t\t\t[\n\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\"string\",\n\t\t\t\t\t\"sqlite3_module*\",\n\t\t\t\t\t\"*\",\n\t\t\t\t\t\"*\"\n\t\t\t\t]\n\t\t\t], [\n\t\t\t\t\"sqlite3_declare_vtab\",\n\t\t\t\t\"int\",\n\t\t\t\t[\"sqlite3*\", \"string:flexible\"]\n\t\t\t], [\n\t\t\t\t\"sqlite3_drop_modules\",\n\t\t\t\t\"int\",\n\t\t\t\t[\"sqlite3*\", \"**\"]\n\t\t\t], [\n\t\t\t\t\"sqlite3_vtab_collation\",\n\t\t\t\t\"string\",\n\t\t\t\t\"sqlite3_index_info*\",\n\t\t\t\t\"int\"\n\t\t\t], [\n\t\t\t\t\"sqlite3_vtab_distinct\",\n\t\t\t\t\"int\",\n\t\t\t\t\"sqlite3_index_info*\"\n\t\t\t], [\n\t\t\t\t\"sqlite3_vtab_in\",\n\t\t\t\t\"int\",\n\t\t\t\t\"sqlite3_index_info*\",\n\t\t\t\t\"int\",\n\t\t\t\t\"int\"\n\t\t\t], [\n\t\t\t\t\"sqlite3_vtab_in_first\",\n\t\t\t\t\"int\",\n\t\t\t\t\"sqlite3_value*\",\n\t\t\t\t\"**\"\n\t\t\t], [\n\t\t\t\t\"sqlite3_vtab_in_next\",\n\t\t\t\t\"int\",\n\t\t\t\t\"sqlite3_value*\",\n\t\t\t\t\"**\"\n\t\t\t], [\n\t\t\t\t\"sqlite3_vtab_nochange\",\n\t\t\t\t\"int\",\n\t\t\t\t\"sqlite3_context*\"\n\t\t\t], [\n\t\t\t\t\"sqlite3_vtab_on_conflict\",\n\t\t\t\t\"int\",\n\t\t\t\t\"sqlite3*\"\n\t\t\t], [\n\t\t\t\t\"sqlite3_vtab_rhs_value\",\n\t\t\t\t\"int\",\n\t\t\t\t\"sqlite3_index_info*\",\n\t\t\t\t\"int\",\n\t\t\t\t\"**\"\n\t\t\t]);\n\t\t\tif (wasm.bigIntEnabled && !!wasm.exports.sqlite3_preupdate_hook) bindingSignatures.int64.push([\n\t\t\t\t\"sqlite3_preupdate_blobwrite\",\n\t\t\t\t\"int\",\n\t\t\t\t\"sqlite3*\"\n\t\t\t], [\n\t\t\t\t\"sqlite3_preupdate_count\",\n\t\t\t\t\"int\",\n\t\t\t\t\"sqlite3*\"\n\t\t\t], [\n\t\t\t\t\"sqlite3_preupdate_depth\",\n\t\t\t\t\"int\",\n\t\t\t\t\"sqlite3*\"\n\t\t\t], [\n\t\t\t\t\"sqlite3_preupdate_hook\",\n\t\t\t\t\"*\",\n\t\t\t\t[\n\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\tname: \"sqlite3_preupdate_hook\",\n\t\t\t\t\t\tsignature: \"v(ppippjj)\",\n\t\t\t\t\t\tcontextKey: (argv) => argv[0],\n\t\t\t\t\t\tcallProxy: (callback) => {\n\t\t\t\t\t\t\treturn (p, db, op, zDb, zTbl, iKey1, iKey2) => {\n\t\t\t\t\t\t\t\tcallback(p, db, op, wasm.cstrToJs(zDb), wasm.cstrToJs(zTbl), iKey1, iKey2);\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\t\"*\"\n\t\t\t\t]\n\t\t\t], [\n\t\t\t\t\"sqlite3_preupdate_new\",\n\t\t\t\t\"int\",\n\t\t\t\t[\n\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t\"**\"\n\t\t\t\t]\n\t\t\t], [\n\t\t\t\t\"sqlite3_preupdate_old\",\n\t\t\t\t\"int\",\n\t\t\t\t[\n\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t\"**\"\n\t\t\t\t]\n\t\t\t]);\n\t\t\tif (wasm.bigIntEnabled && !!wasm.exports.sqlite3changegroup_add && !!wasm.exports.sqlite3session_create && !!wasm.exports.sqlite3_preupdate_hook) {\n\t\t\t\t/**\n\t\t\t\tFuncPtrAdapter options for session-related callbacks with the\n\t\t\t\tnative signature \"i(ps)\". This proxy converts the 2nd argument\n\t\t\t\tfrom a C string to a JS string before passing the arguments on\n\t\t\t\tto the client-provided JS callback.\n\t\t\t\t*/\n\t\t\t\tconst __ipsProxy = {\n\t\t\t\t\tsignature: \"i(ps)\",\n\t\t\t\t\tcallProxy: (callback) => {\n\t\t\t\t\t\treturn (p, s) => {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\treturn callback(p, wasm.cstrToJs(s)) | 0;\n\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\treturn e.resultCode || capi.SQLITE_ERROR;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tbindingSignatures.int64.push([\n\t\t\t\t\t\"sqlite3changegroup_add\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_changegroup*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"void*\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changegroup_add_strm\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_changegroup*\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xInput\",\n\t\t\t\t\t\t\tsignature: \"i(ppp)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changegroup_delete\",\n\t\t\t\t\tvoid 0,\n\t\t\t\t\t[\"sqlite3_changegroup*\"]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changegroup_new\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\"**\"]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changegroup_output\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_changegroup*\",\n\t\t\t\t\t\t\"int*\",\n\t\t\t\t\t\t\"**\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changegroup_output_strm\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_changegroup*\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xOutput\",\n\t\t\t\t\t\t\tsignature: \"i(ppi)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_apply\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xFilter\",\n\t\t\t\t\t\t\tbindScope: \"transient\",\n\t\t\t\t\t\t\t...__ipsProxy\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xConflict\",\n\t\t\t\t\t\t\tsignature: \"i(pip)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_apply_strm\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xInput\",\n\t\t\t\t\t\t\tsignature: \"i(ppp)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xFilter\",\n\t\t\t\t\t\t\tbindScope: \"transient\",\n\t\t\t\t\t\t\t...__ipsProxy\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xConflict\",\n\t\t\t\t\t\t\tsignature: \"i(pip)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_apply_v2\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xFilter\",\n\t\t\t\t\t\t\tbindScope: \"transient\",\n\t\t\t\t\t\t\t...__ipsProxy\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xConflict\",\n\t\t\t\t\t\t\tsignature: \"i(pip)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\t\"**\",\n\t\t\t\t\t\t\"int*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_apply_v2_strm\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xInput\",\n\t\t\t\t\t\t\tsignature: \"i(ppp)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xFilter\",\n\t\t\t\t\t\t\tbindScope: \"transient\",\n\t\t\t\t\t\t\t...__ipsProxy\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xConflict\",\n\t\t\t\t\t\t\tsignature: \"i(pip)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\t\"**\",\n\t\t\t\t\t\t\"int*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_apply_v3\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xFilter\",\n\t\t\t\t\t\t\tsignature: \"i(pp)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xConflict\",\n\t\t\t\t\t\t\tsignature: \"i(pip)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\t\"**\",\n\t\t\t\t\t\t\"int*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_apply_v3_strm\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xInput\",\n\t\t\t\t\t\t\tsignature: \"i(ppp)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xFilter\",\n\t\t\t\t\t\t\tsignature: \"i(pp)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xConflict\",\n\t\t\t\t\t\t\tsignature: \"i(pip)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\t\"**\",\n\t\t\t\t\t\t\"int*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_concat\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\t\"int*\",\n\t\t\t\t\t\t\"**\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_concat_strm\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xInputA\",\n\t\t\t\t\t\t\tsignature: \"i(ppp)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xInputB\",\n\t\t\t\t\t\t\tsignature: \"i(ppp)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xOutput\",\n\t\t\t\t\t\t\tsignature: \"i(ppi)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_conflict\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_changeset_iter*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"**\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_finalize\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\"sqlite3_changeset_iter*\"]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_fk_conflicts\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\"sqlite3_changeset_iter*\", \"int*\"]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_invert\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\t\"int*\",\n\t\t\t\t\t\t\"**\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_invert_strm\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xInput\",\n\t\t\t\t\t\t\tsignature: \"i(ppp)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xOutput\",\n\t\t\t\t\t\t\tsignature: \"i(ppi)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_new\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_changeset_iter*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"**\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_next\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\"sqlite3_changeset_iter*\"]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_old\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_changeset_iter*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"**\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_op\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_changeset_iter*\",\n\t\t\t\t\t\t\"**\",\n\t\t\t\t\t\t\"int*\",\n\t\t\t\t\t\t\"int*\",\n\t\t\t\t\t\t\"int*\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_pk\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_changeset_iter*\",\n\t\t\t\t\t\t\"**\",\n\t\t\t\t\t\t\"int*\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_start\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"**\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"*\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_start_strm\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"**\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xInput\",\n\t\t\t\t\t\t\tsignature: \"i(ppp)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_start_v2\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"**\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3changeset_start_v2_strm\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"**\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xInput\",\n\t\t\t\t\t\t\tsignature: \"i(ppp)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3session_attach\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\"sqlite3_session*\", \"string\"]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3session_changeset\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_session*\",\n\t\t\t\t\t\t\"int*\",\n\t\t\t\t\t\t\"**\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3session_changeset_size\",\n\t\t\t\t\t\"i64\",\n\t\t\t\t\t[\"sqlite3_session*\"]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3session_changeset_strm\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_session*\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xOutput\",\n\t\t\t\t\t\t\tsignature: \"i(ppp)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3session_config\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\"int\", \"void*\"]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3session_create\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"**\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3session_diff\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_session*\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"**\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3session_enable\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\"sqlite3_session*\", \"int\"]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3session_indirect\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\"sqlite3_session*\", \"int\"]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3session_isempty\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\"sqlite3_session*\"]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3session_memory_used\",\n\t\t\t\t\t\"i64\",\n\t\t\t\t\t[\"sqlite3_session*\"]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3session_object_config\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_session*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"void*\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3session_patchset\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_session*\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"**\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3session_patchset_strm\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_session*\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xOutput\",\n\t\t\t\t\t\t\tsignature: \"i(ppp)\",\n\t\t\t\t\t\t\tbindScope: \"transient\"\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"void*\"\n\t\t\t\t\t]\n\t\t\t\t], [\n\t\t\t\t\t\"sqlite3session_table_filter\",\n\t\t\t\t\tvoid 0,\n\t\t\t\t\t[\n\t\t\t\t\t\t\"sqlite3_session*\",\n\t\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\t\tname: \"xFilter\",\n\t\t\t\t\t\t\t...__ipsProxy,\n\t\t\t\t\t\t\tcontextKey: (argv, argIndex) => argv[0]\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t\"*\"\n\t\t\t\t\t]\n\t\t\t\t]);\n\t\t\t}\n\t\t\t/**\n\t\t\tPrepare JS<->C struct bindings for the non-opaque struct types we\n\t\t\tneed...\n\t\t\t*/\n\t\t\tsqlite3.StructBinder = globalThis.Jaccwabyt({\n\t\t\t\theap: wasm.heap8u,\n\t\t\t\talloc: wasm.alloc,\n\t\t\t\tdealloc: wasm.dealloc,\n\t\t\t\tbigIntEnabled: wasm.bigIntEnabled,\n\t\t\t\tpointerIR: wasm.ptr.ir,\n\t\t\t\tmemberPrefix: \"$\"\n\t\t\t});\n\t\t\tdelete globalThis.Jaccwabyt;\n\t\t\t{\n\t\t\t\tconst __xString = wasm.xWrap.argAdapter(\"string\");\n\t\t\t\twasm.xWrap.argAdapter(\"string:flexible\", (v) => __xString(util.flexibleString(v)));\n\t\t\t\t/**\n\t\t\t\tThe 'string:static' argument adapter treats its argument as\n\t\t\t\teither...\n\t\t\t\t\n\t\t\t\t- WASM pointer: assumed to be a long-lived C-string which gets\n\t\t\t\treturned as-is.\n\t\t\t\t\n\t\t\t\t- Anything else: gets coerced to a JS string for use as a map\n\t\t\t\tkey. If a matching entry is found (as described next), it is\n\t\t\t\treturned, else wasm.allocCString() is used to create a a new\n\t\t\t\tstring, map its pointer to a copy of (''+v) for the remainder\n\t\t\t\tof the application's life, and returns that pointer value for\n\t\t\t\tthis call and all future calls which are passed a\n\t\t\t\tstring-equivalent argument.\n\t\t\t\t\n\t\t\t\tUse case: sqlite3_bind_pointer(), sqlite3_result_pointer(), and\n\t\t\t\tsqlite3_value_pointer() call for \"a static string and\n\t\t\t\tpreferably a string literal\". This converter is used to ensure\n\t\t\t\tthat the string value seen by those functions is long-lived and\n\t\t\t\tbehaves as they need it to, at the cost of a one-time leak of\n\t\t\t\teach distinct key.\n\t\t\t\t*/\n\t\t\t\twasm.xWrap.argAdapter(\"string:static\", function(v) {\n\t\t\t\t\tif (wasm.isPtr(v)) return v;\n\t\t\t\t\tv = \"\" + v;\n\t\t\t\t\treturn this[v] || (this[v] = wasm.allocCString(v));\n\t\t\t\t}.bind(Object.create(null)));\n\t\t\t\t/**\n\t\t\t\tAdd some descriptive xWrap() aliases for '*' intended to (A)\n\t\t\t\timprove readability/correctness of bindingSignatures and (B)\n\t\t\t\tprovide automatic conversion from higher-level representations,\n\t\t\t\te.g. capi.sqlite3_vfs to `sqlite3_vfs*` via (capi.sqlite3_vfs\n\t\t\t\tinstance).pointer.\n\t\t\t\t*/\n\t\t\t\tconst __xArgPtr = wasm.xWrap.argAdapter(\"*\");\n\t\t\t\tconst nilType = function() {};\n\t\t\t\twasm.xWrap.argAdapter(\"sqlite3_filename\", __xArgPtr)(\"sqlite3_context*\", __xArgPtr)(\"sqlite3_value*\", __xArgPtr)(\"void*\", __xArgPtr)(\"sqlite3_changegroup*\", __xArgPtr)(\"sqlite3_changeset_iter*\", __xArgPtr)(\"sqlite3_session*\", __xArgPtr)(\"sqlite3_stmt*\", (v) => __xArgPtr(v instanceof (sqlite3?.oo1?.Stmt || nilType) ? v.pointer : v))(\"sqlite3*\", (v) => __xArgPtr(v instanceof (sqlite3?.oo1?.DB || nilType) ? v.pointer : v))(\"sqlite3_vfs*\", (v) => {\n\t\t\t\t\tif (\"string\" === typeof v) return capi.sqlite3_vfs_find(v) || sqlite3.SQLite3Error.toss(capi.SQLITE_NOTFOUND, \"Unknown sqlite3_vfs name:\", v);\n\t\t\t\t\treturn __xArgPtr(v instanceof (capi.sqlite3_vfs || nilType) ? v.pointer : v);\n\t\t\t\t});\n\t\t\t\tif (wasm.exports.sqlite3_declare_vtab) wasm.xWrap.argAdapter(\"sqlite3_index_info*\", (v) => __xArgPtr(v instanceof (capi.sqlite3_index_info || nilType) ? v.pointer : v))(\"sqlite3_module*\", (v) => __xArgPtr(v instanceof (capi.sqlite3_module || nilType) ? v.pointer : v));\n\t\t\t\t/**\n\t\t\t\tAlias `T*` to `*` for return type conversions for common T\n\t\t\t\ttypes, primarily to improve legibility of their binding\n\t\t\t\tsignatures.\n\t\t\t\t*/\n\t\t\t\tconst __xRcPtr = wasm.xWrap.resultAdapter(\"*\");\n\t\t\t\twasm.xWrap.resultAdapter(\"sqlite3*\", __xRcPtr)(\"sqlite3_context*\", __xRcPtr)(\"sqlite3_stmt*\", __xRcPtr)(\"sqlite3_value*\", __xRcPtr)(\"sqlite3_vfs*\", __xRcPtr)(\"void*\", __xRcPtr);\n\t\t\t\t/**\n\t\t\t\tPopulate api object with sqlite3_...() by binding the \"raw\" wasm\n\t\t\t\texports into type-converting proxies using wasm.xWrap().\n\t\t\t\t*/\n\t\t\t\tfor (const e of bindingSignatures.core) capi[e[0]] = wasm.xWrap.apply(null, e);\n\t\t\t\tfor (const e of bindingSignatures.wasmInternal) util[e[0]] = wasm.xWrap.apply(null, e);\n\t\t\t\tfor (const e of bindingSignatures.int64) capi[e[0]] = wasm.bigIntEnabled ? wasm.xWrap.apply(null, e) : () => toss(e[0] + \"() is unavailable due to lack\", \"of BigInt support in this build.\");\n\t\t\t\tdelete bindingSignatures.core;\n\t\t\t\tdelete bindingSignatures.int64;\n\t\t\t\tdelete bindingSignatures.wasmInternal;\n\t\t\t\t/**\n\t\t\t\tSets the given db's error state. Accepts:\n\t\t\t\t\n\t\t\t\t- (sqlite3*, int code, string msg)\n\t\t\t\t- (sqlite3*, Error e [,string msg = ''+e])\n\t\t\t\t\n\t\t\t\tIf passed a WasmAllocError, the message is ignored and the\n\t\t\t\tresult code is SQLITE_NOMEM. If passed any other Error type,\n\t\t\t\tthe result code defaults to SQLITE_ERROR unless the Error\n\t\t\t\tobject has a resultCode property, in which case that is used\n\t\t\t\t(e.g. SQLite3Error has that). If passed a non-WasmAllocError\n\t\t\t\texception, the message string defaults to ''+theError.\n\t\t\t\t\n\t\t\t\tReturns either the final result code, capi.SQLITE_NOMEM if\n\t\t\t\tsetting the message string triggers an OOM, or\n\t\t\t\tcapi.SQLITE_MISUSE if pDb is NULL or invalid (with the caveat\n\t\t\t\tthat behavior in the later case is undefined if pDb is not\n\t\t\t\t\"valid enough\").\n\t\t\t\t\n\t\t\t\tPass (pDb,0,0) to clear the error state.\n\t\t\t\t*/\n\t\t\t\tutil.sqlite3__wasm_db_error = function(pDb, resultCode, message) {\n\t\t\t\t\tif (!pDb) return capi.SQLITE_MISUSE;\n\t\t\t\t\tif (resultCode instanceof sqlite3.WasmAllocError) {\n\t\t\t\t\t\tresultCode = capi.SQLITE_NOMEM;\n\t\t\t\t\t\tmessage = 0;\n\t\t\t\t\t} else if (resultCode instanceof Error) {\n\t\t\t\t\t\tmessage = message || \"\" + resultCode;\n\t\t\t\t\t\tresultCode = resultCode.resultCode || capi.SQLITE_ERROR;\n\t\t\t\t\t}\n\t\t\t\t\treturn capi.sqlite3_set_errmsg(pDb, resultCode, message) || resultCode;\n\t\t\t\t};\n\t\t\t}\n\t\t\t{\n\t\t\t\tconst cJson = wasm.xCall(\"sqlite3__wasm_enum_json\");\n\t\t\t\tif (!cJson) toss(\"Maintenance required: increase sqlite3__wasm_enum_json()'s\", \"static buffer size!\");\n\t\t\t\twasm.ctype = JSON.parse(wasm.cstrToJs(cJson));\n\t\t\t\tconst defineGroups = [\n\t\t\t\t\t\"access\",\n\t\t\t\t\t\"authorizer\",\n\t\t\t\t\t\"blobFinalizers\",\n\t\t\t\t\t\"changeset\",\n\t\t\t\t\t\"config\",\n\t\t\t\t\t\"dataTypes\",\n\t\t\t\t\t\"dbConfig\",\n\t\t\t\t\t\"dbStatus\",\n\t\t\t\t\t\"encodings\",\n\t\t\t\t\t\"fcntl\",\n\t\t\t\t\t\"flock\",\n\t\t\t\t\t\"ioCap\",\n\t\t\t\t\t\"limits\",\n\t\t\t\t\t\"openFlags\",\n\t\t\t\t\t\"prepareFlags\",\n\t\t\t\t\t\"resultCodes\",\n\t\t\t\t\t\"sqlite3Status\",\n\t\t\t\t\t\"stmtStatus\",\n\t\t\t\t\t\"syncFlags\",\n\t\t\t\t\t\"trace\",\n\t\t\t\t\t\"txnState\",\n\t\t\t\t\t\"udfFlags\",\n\t\t\t\t\t\"version\"\n\t\t\t\t];\n\t\t\t\tif (wasm.bigIntEnabled) defineGroups.push(\"serialize\", \"session\", \"vtab\");\n\t\t\t\tfor (const t of defineGroups) for (const e of Object.entries(wasm.ctype[t])) capi[e[0]] = e[1];\n\t\t\t\tif (!wasm.functionEntry(capi.SQLITE_WASM_DEALLOC)) toss(\"Internal error: cannot resolve exported function\", \"entry SQLITE_WASM_DEALLOC (==\" + capi.SQLITE_WASM_DEALLOC + \").\");\n\t\t\t\tconst __rcMap = Object.create(null);\n\t\t\t\tfor (const e of Object.entries(wasm.ctype[\"resultCodes\"])) __rcMap[e[1]] = e[0];\n\t\t\t\t/**\n\t\t\t\tFor the given integer, returns the SQLITE_xxx result code as a\n\t\t\t\tstring, or undefined if no such mapping is found.\n\t\t\t\t*/\n\t\t\t\tcapi.sqlite3_js_rc_str = (rc) => __rcMap[rc];\n\t\t\t\tconst notThese = Object.assign(Object.create(null), {\n\t\t\t\t\tWasmTestStruct: true,\n\t\t\t\t\tsqlite3_index_info: !wasm.bigIntEnabled,\n\t\t\t\t\tsqlite3_index_constraint: !wasm.bigIntEnabled,\n\t\t\t\t\tsqlite3_index_orderby: !wasm.bigIntEnabled,\n\t\t\t\t\tsqlite3_index_constraint_usage: !wasm.bigIntEnabled\n\t\t\t\t});\n\t\t\t\tfor (const s of wasm.ctype.structs) if (!notThese[s.name]) capi[s.name] = sqlite3.StructBinder(s);\n\t\t\t\tif (capi.sqlite3_index_info) {\n\t\t\t\t\tfor (const k of [\n\t\t\t\t\t\t\"sqlite3_index_constraint\",\n\t\t\t\t\t\t\"sqlite3_index_orderby\",\n\t\t\t\t\t\t\"sqlite3_index_constraint_usage\"\n\t\t\t\t\t]) {\n\t\t\t\t\t\tcapi.sqlite3_index_info[k] = capi[k];\n\t\t\t\t\t\tdelete capi[k];\n\t\t\t\t\t}\n\t\t\t\t\tcapi.sqlite3_vtab_config = wasm.xWrap(\"sqlite3__wasm_vtab_config\", \"int\", [\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"int\"\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t}\n\t\t\t/**\n\t\t\tInternal helper to assist in validating call argument counts in\n\t\t\tthe hand-written sqlite3_xyz() wrappers. We do this only for\n\t\t\tconsistency with non-special-case wrappings.\n\t\t\t*/\n\t\t\tconst __dbArgcMismatch = (pDb, f, n) => {\n\t\t\t\treturn util.sqlite3__wasm_db_error(pDb, capi.SQLITE_MISUSE, f + \"() requires \" + n + \" argument\" + (1 === n ? \"\" : \"s\") + \".\");\n\t\t\t};\n\t\t\t/** Code duplication reducer for functions which take an encoding\n\t\t\targument and require SQLITE_UTF8.  Sets the db error code to\n\t\t\tSQLITE_FORMAT, installs a descriptive error message,\n\t\t\tand returns SQLITE_FORMAT. */\n\t\t\tconst __errEncoding = (pDb) => {\n\t\t\t\treturn util.sqlite3__wasm_db_error(pDb, capi.SQLITE_FORMAT, \"SQLITE_UTF8 is the only supported encoding.\");\n\t\t\t};\n\t\t\t/**\n\t\t\t__dbCleanupMap is infrastructure for recording registration of\n\t\t\tUDFs and collations so that sqlite3_close_v2() can clean up any\n\t\t\tautomated JS-to-WASM function conversions installed by those.\n\t\t\t*/\n\t\t\tconst __argPDb = (pDb) => wasm.xWrap.argAdapter(\"sqlite3*\")(pDb);\n\t\t\tconst __argStr = (str) => wasm.isPtr(str) ? wasm.cstrToJs(str) : str;\n\t\t\tconst __dbCleanupMap = function(pDb, mode) {\n\t\t\t\tpDb = __argPDb(pDb);\n\t\t\t\tlet m = this.dbMap.get(pDb);\n\t\t\t\tif (!mode) {\n\t\t\t\t\tthis.dbMap.delete(pDb);\n\t\t\t\t\treturn m;\n\t\t\t\t} else if (!m && mode > 0) this.dbMap.set(pDb, m = Object.create(null));\n\t\t\t\treturn m;\n\t\t\t}.bind(Object.assign(Object.create(null), { dbMap: /* @__PURE__ */ new Map() }));\n\t\t\t__dbCleanupMap.addCollation = function(pDb, name) {\n\t\t\t\tconst m = __dbCleanupMap(pDb, 1);\n\t\t\t\tif (!m.collation) m.collation = /* @__PURE__ */ new Set();\n\t\t\t\tm.collation.add(__argStr(name).toLowerCase());\n\t\t\t};\n\t\t\t__dbCleanupMap._addUDF = function(pDb, name, arity, map) {\n\t\t\t\tname = __argStr(name).toLowerCase();\n\t\t\t\tlet u = map.get(name);\n\t\t\t\tif (!u) map.set(name, u = /* @__PURE__ */ new Set());\n\t\t\t\tu.add(arity < 0 ? -1 : arity);\n\t\t\t};\n\t\t\t__dbCleanupMap.addFunction = function(pDb, name, arity) {\n\t\t\t\tconst m = __dbCleanupMap(pDb, 1);\n\t\t\t\tif (!m.udf) m.udf = /* @__PURE__ */ new Map();\n\t\t\t\tthis._addUDF(pDb, name, arity, m.udf);\n\t\t\t};\n\t\t\tif (wasm.exports.sqlite3_create_window_function) __dbCleanupMap.addWindowFunc = function(pDb, name, arity) {\n\t\t\t\tconst m = __dbCleanupMap(pDb, 1);\n\t\t\t\tif (!m.wudf) m.wudf = /* @__PURE__ */ new Map();\n\t\t\t\tthis._addUDF(pDb, name, arity, m.wudf);\n\t\t\t};\n\t\t\t/**\n\t\t\tIntended to be called _only_ from sqlite3_close_v2(),\n\t\t\tpassed its non-0 db argument.\n\t\t\t\n\t\t\tThis function frees up certain automatically-installed WASM\n\t\t\tfunction bindings which were installed on behalf of the given db,\n\t\t\tas those may otherwise leak.\n\t\t\t\n\t\t\tNotable caveat: this is only ever run via\n\t\t\tsqlite3.capi.sqlite3_close_v2(). If a client, for whatever\n\t\t\treason, uses sqlite3.wasm.exports.sqlite3_close_v2() (the\n\t\t\tfunction directly exported from WASM), this cleanup will not\n\t\t\thappen.\n\t\t\t\n\t\t\tThis is not a silver bullet for avoiding automation-related\n\t\t\tleaks but represents \"an honest effort.\"\n\t\t\t\n\t\t\tThe issue being addressed here is covered at:\n\t\t\t\n\t\t\thttps://sqlite.org/wasm/doc/trunk/api-c-style.md#convert-func-ptr\n\t\t\t*/\n\t\t\t__dbCleanupMap.cleanup = function(pDb) {\n\t\t\t\tpDb = __argPDb(pDb);\n\t\t\t\t/**\n\t\t\t\tInstalling NULL functions in the C API will remove those\n\t\t\t\tbindings. The FuncPtrAdapter which sits between us and the C\n\t\t\t\tAPI will also treat that as an opportunity to\n\t\t\t\twasm.uninstallFunction() any WASM function bindings it has\n\t\t\t\tinstalled for pDb.\n\t\t\t\t*/\n\t\t\t\tfor (const obj of [\n\t\t\t\t\t[\"sqlite3_busy_handler\", 3],\n\t\t\t\t\t[\"sqlite3_commit_hook\", 3],\n\t\t\t\t\t[\"sqlite3_preupdate_hook\", 3],\n\t\t\t\t\t[\"sqlite3_progress_handler\", 4],\n\t\t\t\t\t[\"sqlite3_rollback_hook\", 3],\n\t\t\t\t\t[\"sqlite3_set_authorizer\", 3],\n\t\t\t\t\t[\"sqlite3_trace_v2\", 4],\n\t\t\t\t\t[\"sqlite3_update_hook\", 3]\n\t\t\t\t]) {\n\t\t\t\t\tconst [name, arity] = obj;\n\t\t\t\t\tif (!wasm.exports[name]) continue;\n\t\t\t\t\tconst closeArgs = [pDb];\n\t\t\t\t\tcloseArgs.length = arity;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tcapi[name](...closeArgs);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tsqlite3.config.warn(\"close-time call of\", name + \"(\", closeArgs, \") threw:\", e);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst m = __dbCleanupMap(pDb, 0);\n\t\t\t\tif (!m) return;\n\t\t\t\tif (m.collation) {\n\t\t\t\t\tfor (const name of m.collation) try {\n\t\t\t\t\t\tcapi.sqlite3_create_collation_v2(pDb, name, capi.SQLITE_UTF8, 0, 0, 0);\n\t\t\t\t\t} catch (e) {}\n\t\t\t\t\tdelete m.collation;\n\t\t\t\t}\n\t\t\t\tlet i;\n\t\t\t\tfor (i = 0; i < 2; ++i) {\n\t\t\t\t\tconst fmap = i ? m.wudf : m.udf;\n\t\t\t\t\tif (!fmap) continue;\n\t\t\t\t\tconst func = i ? capi.sqlite3_create_window_function : capi.sqlite3_create_function_v2;\n\t\t\t\t\tfor (const e of fmap) {\n\t\t\t\t\t\tconst name = e[0], arities = e[1];\n\t\t\t\t\t\tconst fargs = [\n\t\t\t\t\t\t\tpDb,\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\tcapi.SQLITE_UTF8,\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t0\n\t\t\t\t\t\t];\n\t\t\t\t\t\tif (i) fargs.push(0);\n\t\t\t\t\t\tfor (const arity of arities) try {\n\t\t\t\t\t\t\tfargs[2] = arity;\n\t\t\t\t\t\t\tfunc.apply(null, fargs);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t\tarities.clear();\n\t\t\t\t\t}\n\t\t\t\t\tfmap.clear();\n\t\t\t\t}\n\t\t\t\tdelete m.udf;\n\t\t\t\tdelete m.wudf;\n\t\t\t};\n\t\t\t{\n\t\t\t\tconst __sqlite3CloseV2 = wasm.xWrap(\"sqlite3_close_v2\", \"int\", \"sqlite3*\");\n\t\t\t\tcapi.sqlite3_close_v2 = function(pDb) {\n\t\t\t\t\tif (1 !== arguments.length) return __dbArgcMismatch(pDb, \"sqlite3_close_v2\", 1);\n\t\t\t\t\tif (pDb) try {\n\t\t\t\t\t\t__dbCleanupMap.cleanup(pDb);\n\t\t\t\t\t} catch (e) {}\n\t\t\t\t\treturn __sqlite3CloseV2(pDb);\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (capi.sqlite3session_create) {\n\t\t\t\tconst __sqlite3SessionDelete = wasm.xWrap(\"sqlite3session_delete\", void 0, [\"sqlite3_session*\"]);\n\t\t\t\tcapi.sqlite3session_delete = function(pSession) {\n\t\t\t\t\tif (1 !== arguments.length) return __dbArgcMismatch(pDb, \"sqlite3session_delete\", 1);\n\t\t\t\t\telse if (pSession) capi.sqlite3session_table_filter(pSession, 0, 0);\n\t\t\t\t\t__sqlite3SessionDelete(pSession);\n\t\t\t\t};\n\t\t\t}\n\t\t\t{\n\t\t\t\tconst contextKey = (argv, argIndex) => {\n\t\t\t\t\treturn \"argv[\" + argIndex + \"]:\" + argv[0] + \":\" + wasm.cstrToJs(argv[1]).toLowerCase();\n\t\t\t\t};\n\t\t\t\tconst __sqlite3CreateCollationV2 = wasm.xWrap(\"sqlite3_create_collation_v2\", \"int\", [\n\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\"string\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t\"*\",\n\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\tname: \"xCompare\",\n\t\t\t\t\t\tsignature: \"i(pipip)\",\n\t\t\t\t\t\tcontextKey\n\t\t\t\t\t}),\n\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\tname: \"xDestroy\",\n\t\t\t\t\t\tsignature: \"v(p)\",\n\t\t\t\t\t\tcontextKey\n\t\t\t\t\t})\n\t\t\t\t]);\n\t\t\t\t/**\n\t\t\t\tWorks exactly like C's sqlite3_create_collation_v2() except that:\n\t\t\t\t\n\t\t\t\t1) It returns capi.SQLITE_FORMAT if the 3rd argument contains\n\t\t\t\tany encoding-related value other than capi.SQLITE_UTF8.  No\n\t\t\t\tother encodings are supported. As a special case, if the\n\t\t\t\tbottom 4 bits of that argument are 0, SQLITE_UTF8 is\n\t\t\t\tassumed.\n\t\t\t\t\n\t\t\t\t2) It accepts JS functions for its function-pointer arguments,\n\t\t\t\tfor which it will install WASM-bound proxies. The bindings\n\t\t\t\tare \"permanent,\" in that they will stay in the WASM\n\t\t\t\tenvironment until it shuts down unless the client calls this\n\t\t\t\tagain with the same collation name and a value of 0 or null\n\t\t\t\tfor the the function pointer(s). sqlite3_close_v2() will\n\t\t\t\talso clean up such automatically-installed WASM functions.\n\t\t\t\t\n\t\t\t\tFor consistency with the C API, it requires the same number of\n\t\t\t\targuments. It returns capi.SQLITE_MISUSE if passed any other\n\t\t\t\targument count.\n\t\t\t\t\n\t\t\t\tReturns 0 on success, non-0 on error, in which case the error\n\t\t\t\tstate of pDb (of type `sqlite3*` or argument-convertible to it)\n\t\t\t\tmay contain more information.\n\t\t\t\t*/\n\t\t\t\tcapi.sqlite3_create_collation_v2 = function(pDb, zName, eTextRep, pArg, xCompare, xDestroy) {\n\t\t\t\t\tif (6 !== arguments.length) return __dbArgcMismatch(pDb, \"sqlite3_create_collation_v2\", 6);\n\t\t\t\t\telse if (0 === (eTextRep & 15)) eTextRep |= capi.SQLITE_UTF8;\n\t\t\t\t\telse if (capi.SQLITE_UTF8 !== (eTextRep & 15)) return __errEncoding(pDb);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst rc = __sqlite3CreateCollationV2(pDb, zName, eTextRep, pArg, xCompare, xDestroy);\n\t\t\t\t\t\tif (0 === rc && xCompare instanceof Function) __dbCleanupMap.addCollation(pDb, zName);\n\t\t\t\t\t\treturn rc;\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn util.sqlite3__wasm_db_error(pDb, e);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tcapi.sqlite3_create_collation = (pDb, zName, eTextRep, pArg, xCompare) => {\n\t\t\t\t\treturn 5 === arguments.length ? capi.sqlite3_create_collation_v2(pDb, zName, eTextRep, pArg, xCompare, 0) : __dbArgcMismatch(pDb, \"sqlite3_create_collation\", 5);\n\t\t\t\t};\n\t\t\t}\n\t\t\t{\n\t\t\t\t/** FuncPtrAdapter for contextKey() for sqlite3_create_function()\n\t\t\t\tand friends. */\n\t\t\t\tconst contextKey = function(argv, argIndex) {\n\t\t\t\t\treturn argv[0] + \":\" + (argv[2] < 0 ? -1 : argv[2]) + \":\" + argIndex + \":\" + wasm.cstrToJs(argv[1]).toLowerCase();\n\t\t\t\t};\n\t\t\t\t/**\n\t\t\t\tJS proxies for the various sqlite3_create[_window]_function()\n\t\t\t\tcallbacks, structured in a form usable by wasm.xWrap.FuncPtrAdapter.\n\t\t\t\t*/\n\t\t\t\tconst __cfProxy = Object.assign(Object.create(null), {\n\t\t\t\t\txInverseAndStep: {\n\t\t\t\t\t\tsignature: \"v(pip)\",\n\t\t\t\t\t\tcontextKey,\n\t\t\t\t\t\tcallProxy: (callback) => {\n\t\t\t\t\t\t\treturn (pCtx, argc, pArgv) => {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tcallback(pCtx, ...capi.sqlite3_values_to_js(argc, pArgv));\n\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\tcapi.sqlite3_result_error_js(pCtx, e);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\txFinalAndValue: {\n\t\t\t\t\t\tsignature: \"v(p)\",\n\t\t\t\t\t\tcontextKey,\n\t\t\t\t\t\tcallProxy: (callback) => {\n\t\t\t\t\t\t\treturn (pCtx) => {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tcapi.sqlite3_result_js(pCtx, callback(pCtx));\n\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\tcapi.sqlite3_result_error_js(pCtx, e);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\txFunc: {\n\t\t\t\t\t\tsignature: \"v(pip)\",\n\t\t\t\t\t\tcontextKey,\n\t\t\t\t\t\tcallProxy: (callback) => {\n\t\t\t\t\t\t\treturn (pCtx, argc, pArgv) => {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tcapi.sqlite3_result_js(pCtx, callback(pCtx, ...capi.sqlite3_values_to_js(argc, pArgv)));\n\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\tcapi.sqlite3_result_error_js(pCtx, e);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\txDestroy: {\n\t\t\t\t\t\tsignature: \"v(p)\",\n\t\t\t\t\t\tcontextKey,\n\t\t\t\t\t\tcallProxy: (callback) => {\n\t\t\t\t\t\t\treturn (pVoid) => {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tcallback(pVoid);\n\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\tconsole.error(\"UDF xDestroy method threw:\", e);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tconst __sqlite3CreateFunction = wasm.xWrap(\"sqlite3_create_function_v2\", \"int\", [\n\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\"string\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t\"*\",\n\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\tname: \"xFunc\",\n\t\t\t\t\t\t...__cfProxy.xFunc\n\t\t\t\t\t}),\n\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\tname: \"xStep\",\n\t\t\t\t\t\t...__cfProxy.xInverseAndStep\n\t\t\t\t\t}),\n\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\tname: \"xFinal\",\n\t\t\t\t\t\t...__cfProxy.xFinalAndValue\n\t\t\t\t\t}),\n\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\tname: \"xDestroy\",\n\t\t\t\t\t\t...__cfProxy.xDestroy\n\t\t\t\t\t})\n\t\t\t\t]);\n\t\t\t\tconst __sqlite3CreateWindowFunction = wasm.exports.sqlite3_create_window_function ? wasm.xWrap(\"sqlite3_create_window_function\", \"int\", [\n\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\"string\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t\"*\",\n\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\tname: \"xStep\",\n\t\t\t\t\t\t...__cfProxy.xInverseAndStep\n\t\t\t\t\t}),\n\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\tname: \"xFinal\",\n\t\t\t\t\t\t...__cfProxy.xFinalAndValue\n\t\t\t\t\t}),\n\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\tname: \"xValue\",\n\t\t\t\t\t\t...__cfProxy.xFinalAndValue\n\t\t\t\t\t}),\n\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\tname: \"xInverse\",\n\t\t\t\t\t\t...__cfProxy.xInverseAndStep\n\t\t\t\t\t}),\n\t\t\t\t\tnew wasm.xWrap.FuncPtrAdapter({\n\t\t\t\t\t\tname: \"xDestroy\",\n\t\t\t\t\t\t...__cfProxy.xDestroy\n\t\t\t\t\t})\n\t\t\t\t]) : void 0;\n\t\t\t\tcapi.sqlite3_create_function_v2 = function f(pDb, funcName, nArg, eTextRep, pApp, xFunc, xStep, xFinal, xDestroy) {\n\t\t\t\t\tif (f.length !== arguments.length) return __dbArgcMismatch(pDb, \"sqlite3_create_function_v2\", f.length);\n\t\t\t\t\telse if (0 === (eTextRep & 15)) eTextRep |= capi.SQLITE_UTF8;\n\t\t\t\t\telse if (capi.SQLITE_UTF8 !== (eTextRep & 15)) return __errEncoding(pDb);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst rc = __sqlite3CreateFunction(pDb, funcName, nArg, eTextRep, pApp, xFunc, xStep, xFinal, xDestroy);\n\t\t\t\t\t\tif (0 === rc && (xFunc instanceof Function || xStep instanceof Function || xFinal instanceof Function || xDestroy instanceof Function)) __dbCleanupMap.addFunction(pDb, funcName, nArg);\n\t\t\t\t\t\treturn rc;\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tconsole.error(\"sqlite3_create_function_v2() setup threw:\", e);\n\t\t\t\t\t\treturn util.sqlite3__wasm_db_error(pDb, e, \"Creation of UDF threw: \" + e);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tcapi.sqlite3_create_function = function f(pDb, funcName, nArg, eTextRep, pApp, xFunc, xStep, xFinal) {\n\t\t\t\t\treturn f.length === arguments.length ? capi.sqlite3_create_function_v2(pDb, funcName, nArg, eTextRep, pApp, xFunc, xStep, xFinal, 0) : __dbArgcMismatch(pDb, \"sqlite3_create_function\", f.length);\n\t\t\t\t};\n\t\t\t\tif (__sqlite3CreateWindowFunction) capi.sqlite3_create_window_function = function f(pDb, funcName, nArg, eTextRep, pApp, xStep, xFinal, xValue, xInverse, xDestroy) {\n\t\t\t\t\tif (f.length !== arguments.length) return __dbArgcMismatch(pDb, \"sqlite3_create_window_function\", f.length);\n\t\t\t\t\telse if (0 === (eTextRep & 15)) eTextRep |= capi.SQLITE_UTF8;\n\t\t\t\t\telse if (capi.SQLITE_UTF8 !== (eTextRep & 15)) return __errEncoding(pDb);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst rc = __sqlite3CreateWindowFunction(pDb, funcName, nArg, eTextRep, pApp, xStep, xFinal, xValue, xInverse, xDestroy);\n\t\t\t\t\t\tif (0 === rc && (xStep instanceof Function || xFinal instanceof Function || xValue instanceof Function || xInverse instanceof Function || xDestroy instanceof Function)) __dbCleanupMap.addWindowFunc(pDb, funcName, nArg);\n\t\t\t\t\t\treturn rc;\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tconsole.error(\"sqlite3_create_window_function() setup threw:\", e);\n\t\t\t\t\t\treturn util.sqlite3__wasm_db_error(pDb, e, \"Creation of UDF threw: \" + e);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\telse delete capi.sqlite3_create_window_function;\n\t\t\t\t/**\n\t\t\t\tA _deprecated_ alias for capi.sqlite3_result_js() which\n\t\t\t\tpredates the addition of that function in the public API.\n\t\t\t\t*/\n\t\t\t\tcapi.sqlite3_create_function_v2.udfSetResult = capi.sqlite3_create_function.udfSetResult = capi.sqlite3_result_js;\n\t\t\t\tif (capi.sqlite3_create_window_function) capi.sqlite3_create_window_function.udfSetResult = capi.sqlite3_result_js;\n\t\t\t\t/**\n\t\t\t\tA _deprecated_ alias for capi.sqlite3_values_to_js() which\n\t\t\t\tpredates the addition of that function in the public API.\n\t\t\t\t*/\n\t\t\t\tcapi.sqlite3_create_function_v2.udfConvertArgs = capi.sqlite3_create_function.udfConvertArgs = capi.sqlite3_values_to_js;\n\t\t\t\tif (capi.sqlite3_create_window_function) capi.sqlite3_create_window_function.udfConvertArgs = capi.sqlite3_values_to_js;\n\t\t\t\t/**\n\t\t\t\tA _deprecated_ alias for capi.sqlite3_result_error_js() which\n\t\t\t\tpredates the addition of that function in the public API.\n\t\t\t\t*/\n\t\t\t\tcapi.sqlite3_create_function_v2.udfSetError = capi.sqlite3_create_function.udfSetError = capi.sqlite3_result_error_js;\n\t\t\t\tif (capi.sqlite3_create_window_function) capi.sqlite3_create_window_function.udfSetError = capi.sqlite3_result_error_js;\n\t\t\t}\n\t\t\t{\n\t\t\t\t/**\n\t\t\t\tHelper for string:flexible conversions which requires a\n\t\t\t\tbyte-length counterpart argument. Passed a value and its\n\t\t\t\tostensible length, this function returns [V,N], where V is\n\t\t\t\teither v or a to-string transformed copy of v and N is either n\n\t\t\t\t(if v is a WASM pointer, in which case n might be a BigInt), -1\n\t\t\t\t(if v is a string or Array), or the byte length of v (if it's a\n\t\t\t\tbyte array or ArrayBuffer).\n\t\t\t\t*/\n\t\t\t\tconst __flexiString = (v, n) => {\n\t\t\t\t\tif (\"string\" === typeof v) n = -1;\n\t\t\t\t\telse if (util.isSQLableTypedArray(v)) {\n\t\t\t\t\t\tn = v.byteLength;\n\t\t\t\t\t\tv = wasm.typedArrayToString(v instanceof ArrayBuffer ? new Uint8Array(v) : v);\n\t\t\t\t\t} else if (Array.isArray(v)) {\n\t\t\t\t\t\tv = v.join(\"\");\n\t\t\t\t\t\tn = -1;\n\t\t\t\t\t}\n\t\t\t\t\treturn [v, n];\n\t\t\t\t};\n\t\t\t\t/**\n\t\t\t\tScope-local holder of the two impls of sqlite3_prepare_v2/v3().\n\t\t\t\t*/\n\t\t\t\tconst __prepare = {\n\t\t\t\t\tbasic: wasm.xWrap(\"sqlite3_prepare_v3\", \"int\", [\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"string\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"**\",\n\t\t\t\t\t\t\"**\"\n\t\t\t\t\t]),\n\t\t\t\t\tfull: wasm.xWrap(\"sqlite3_prepare_v3\", \"int\", [\n\t\t\t\t\t\t\"sqlite3*\",\n\t\t\t\t\t\t\"*\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"int\",\n\t\t\t\t\t\t\"**\",\n\t\t\t\t\t\t\"**\"\n\t\t\t\t\t])\n\t\t\t\t};\n\t\t\t\tcapi.sqlite3_prepare_v3 = function f(pDb, sql, sqlLen, prepFlags, ppStmt, pzTail) {\n\t\t\t\t\tif (f.length !== arguments.length) return __dbArgcMismatch(pDb, \"sqlite3_prepare_v3\", f.length);\n\t\t\t\t\tconst [xSql, xSqlLen] = __flexiString(sql, Number(sqlLen));\n\t\t\t\t\tswitch (typeof xSql) {\n\t\t\t\t\t\tcase \"string\": return __prepare.basic(pDb, xSql, xSqlLen, prepFlags, ppStmt, null);\n\t\t\t\t\t\tcase typeof wasm.ptr.null: return __prepare.full(pDb, wasm.ptr.coerce(xSql), xSqlLen, prepFlags, ppStmt, pzTail);\n\t\t\t\t\t\tdefault: return util.sqlite3__wasm_db_error(pDb, capi.SQLITE_MISUSE, \"Invalid SQL argument type for sqlite3_prepare_v2/v3(). typeof=\" + typeof xSql);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tcapi.sqlite3_prepare_v2 = function f(pDb, sql, sqlLen, ppStmt, pzTail) {\n\t\t\t\t\treturn f.length === arguments.length ? capi.sqlite3_prepare_v3(pDb, sql, sqlLen, 0, ppStmt, pzTail) : __dbArgcMismatch(pDb, \"sqlite3_prepare_v2\", f.length);\n\t\t\t\t};\n\t\t\t}\n\t\t\t{\n\t\t\t\tconst __bindText = wasm.xWrap(\"sqlite3_bind_text\", \"int\", [\n\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t\"string\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t\"*\"\n\t\t\t\t]);\n\t\t\t\tconst __bindBlob = wasm.xWrap(\"sqlite3_bind_blob\", \"int\", [\n\t\t\t\t\t\"sqlite3_stmt*\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t\"*\",\n\t\t\t\t\t\"int\",\n\t\t\t\t\t\"*\"\n\t\t\t\t]);\n\t\t\t\t/** Documented in the capi object's initializer. */\n\t\t\t\tcapi.sqlite3_bind_text = function f(pStmt, iCol, text, nText, xDestroy) {\n\t\t\t\t\tif (f.length !== arguments.length) return __dbArgcMismatch(capi.sqlite3_db_handle(pStmt), \"sqlite3_bind_text\", f.length);\n\t\t\t\t\telse if (wasm.isPtr(text) || null === text) return __bindText(pStmt, iCol, text, nText, xDestroy);\n\t\t\t\t\telse if (text instanceof ArrayBuffer) text = new Uint8Array(text);\n\t\t\t\t\telse if (Array.isArray(pMem)) text = pMem.join(\"\");\n\t\t\t\t\tlet p, n;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (util.isSQLableTypedArray(text)) {\n\t\t\t\t\t\t\tp = wasm.allocFromTypedArray(text);\n\t\t\t\t\t\t\tn = text.byteLength;\n\t\t\t\t\t\t} else if (\"string\" === typeof text) [p, n] = wasm.allocCString(text);\n\t\t\t\t\t\telse return util.sqlite3__wasm_db_error(capi.sqlite3_db_handle(pStmt), capi.SQLITE_MISUSE, \"Invalid 3rd argument type for sqlite3_bind_text().\");\n\t\t\t\t\t\treturn __bindText(pStmt, iCol, p, n, capi.SQLITE_WASM_DEALLOC);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\twasm.dealloc(p);\n\t\t\t\t\t\treturn util.sqlite3__wasm_db_error(capi.sqlite3_db_handle(pStmt), e);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t/** Documented in the capi object's initializer. */\n\t\t\t\tcapi.sqlite3_bind_blob = function f(pStmt, iCol, pMem, nMem, xDestroy) {\n\t\t\t\t\tif (f.length !== arguments.length) return __dbArgcMismatch(capi.sqlite3_db_handle(pStmt), \"sqlite3_bind_blob\", f.length);\n\t\t\t\t\telse if (wasm.isPtr(pMem) || null === pMem) return __bindBlob(pStmt, iCol, pMem, nMem, xDestroy);\n\t\t\t\t\telse if (pMem instanceof ArrayBuffer) pMem = new Uint8Array(pMem);\n\t\t\t\t\telse if (Array.isArray(pMem)) pMem = pMem.join(\"\");\n\t\t\t\t\tlet p, n;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (util.isBindableTypedArray(pMem)) {\n\t\t\t\t\t\t\tp = wasm.allocFromTypedArray(pMem);\n\t\t\t\t\t\t\tn = nMem >= 0 ? nMem : pMem.byteLength;\n\t\t\t\t\t\t} else if (\"string\" === typeof pMem) [p, n] = wasm.allocCString(pMem);\n\t\t\t\t\t\telse return util.sqlite3__wasm_db_error(capi.sqlite3_db_handle(pStmt), capi.SQLITE_MISUSE, \"Invalid 3rd argument type for sqlite3_bind_blob().\");\n\t\t\t\t\t\treturn __bindBlob(pStmt, iCol, p, n, capi.SQLITE_WASM_DEALLOC);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\twasm.dealloc(p);\n\t\t\t\t\t\treturn util.sqlite3__wasm_db_error(capi.sqlite3_db_handle(pStmt), e);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (!capi.sqlite3_column_text) {\n\t\t\t\tconst argStmt = wasm.xWrap.argAdapter(\"sqlite3_stmt*\"), argInt = wasm.xWrap.argAdapter(\"int\"), argValue = wasm.xWrap.argAdapter(\"sqlite3_value*\"), newStr = (cstr, n) => wasm.typedArrayToString(wasm.heap8u(), Number(cstr), Number(cstr) + n);\n\t\t\t\tcapi.sqlite3_column_text = function(stmt, colIndex) {\n\t\t\t\t\tconst a0 = argStmt(stmt), a1 = argInt(colIndex);\n\t\t\t\t\tconst cstr = wasm.exports.sqlite3_column_text(a0, a1);\n\t\t\t\t\treturn cstr ? newStr(cstr, wasm.exports.sqlite3_column_bytes(a0, a1)) : null;\n\t\t\t\t};\n\t\t\t\tcapi.sqlite3_value_text = function(val) {\n\t\t\t\t\tconst a0 = argValue(val);\n\t\t\t\t\tconst cstr = wasm.exports.sqlite3_value_text(a0);\n\t\t\t\t\treturn cstr ? newStr(cstr, wasm.exports.sqlite3_value_bytes(a0)) : null;\n\t\t\t\t};\n\t\t\t}\n\t\t\t/**\n\t\t\tWraps a small subset of the C API's sqlite3_config() options.\n\t\t\tUnsupported options trigger the return of capi.SQLITE_NOTFOUND.\n\t\t\tPassing fewer than 2 arguments triggers return of\n\t\t\tcapi.SQLITE_MISUSE.\n\t\t\t*/\n\t\t\tcapi.sqlite3_config = function(op, ...args) {\n\t\t\t\tif (arguments.length < 2) return capi.SQLITE_MISUSE;\n\t\t\t\tswitch (op) {\n\t\t\t\t\tcase capi.SQLITE_CONFIG_COVERING_INDEX_SCAN:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_MEMSTATUS:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_SMALL_MALLOC:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_SORTERREF_SIZE:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_STMTJRNL_SPILL:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_URI: return wasm.exports.sqlite3__wasm_config_i(op, args[0]);\n\t\t\t\t\tcase capi.SQLITE_CONFIG_LOOKASIDE: return wasm.exports.sqlite3__wasm_config_ii(op, args[0], args[1]);\n\t\t\t\t\tcase capi.SQLITE_CONFIG_MEMDB_MAXSIZE: return wasm.exports.sqlite3__wasm_config_j(op, args[0]);\n\t\t\t\t\tcase capi.SQLITE_CONFIG_GETMALLOC:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_GETMUTEX:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_GETPCACHE2:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_GETPCACHE:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_HEAP:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_LOG:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_MALLOC:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_MMAP_SIZE:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_MULTITHREAD:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_MUTEX:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_PAGECACHE:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_PCACHE2:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_PCACHE:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_PCACHE_HDRSZ:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_PMASZ:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_SERIALIZED:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_SINGLETHREAD:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_SQLLOG:\n\t\t\t\t\tcase capi.SQLITE_CONFIG_WIN32_HEAPSIZE:\n\t\t\t\t\tdefault: return capi.SQLITE_NOTFOUND;\n\t\t\t\t}\n\t\t\t};\n\t\t\t{\n\t\t\t\tconst __autoExtFptr = /* @__PURE__ */ new Set();\n\t\t\t\tcapi.sqlite3_auto_extension = function(fPtr) {\n\t\t\t\t\tif (fPtr instanceof Function) fPtr = wasm.installFunction(\"i(ppp)\", fPtr);\n\t\t\t\t\telse if (1 !== arguments.length || !wasm.isPtr(fPtr)) return capi.SQLITE_MISUSE;\n\t\t\t\t\tconst rc = wasm.exports.sqlite3_auto_extension(fPtr);\n\t\t\t\t\tif (fPtr !== arguments[0]) if (0 === rc) __autoExtFptr.add(fPtr);\n\t\t\t\t\telse wasm.uninstallFunction(fPtr);\n\t\t\t\t\treturn rc;\n\t\t\t\t};\n\t\t\t\tcapi.sqlite3_cancel_auto_extension = function(fPtr) {\n\t\t\t\t\tif (!fPtr || 1 !== arguments.length || !wasm.isPtr(fPtr)) return 0;\n\t\t\t\t\treturn wasm.exports.sqlite3_cancel_auto_extension(fPtr);\n\t\t\t\t};\n\t\t\t\tcapi.sqlite3_reset_auto_extension = function() {\n\t\t\t\t\twasm.exports.sqlite3_reset_auto_extension();\n\t\t\t\t\tfor (const fp of __autoExtFptr) wasm.uninstallFunction(fp);\n\t\t\t\t\t__autoExtFptr.clear();\n\t\t\t\t};\n\t\t\t}\n\t\t\twasm.xWrap.FuncPtrAdapter.warnOnUse = true;\n\t\t\tconst StructBinder = sqlite3.StructBinder;\n\t\t\t/**\n\t\t\tInstalls a StructBinder-bound function pointer member of the\n\t\t\tgiven name and function in the given StructBinder.StructType\n\t\t\ttarget object.\n\t\t\t\n\t\t\tIt creates a WASM proxy for the given function and arranges for\n\t\t\tthat proxy to be cleaned up when tgt.dispose() is called. Throws\n\t\t\ton the slightest hint of error, e.g. tgt is-not-a StructType,\n\t\t\tname does not map to a struct-bound member, etc.\n\t\t\t\n\t\t\tAs a special case, if the given function is a pointer, then\n\t\t\t`wasm.functionEntry()` is used to validate that it is a known\n\t\t\tfunction. If so, it is used as-is with no extra level of proxying\n\t\t\tor cleanup, else an exception is thrown. It is legal to pass a\n\t\t\tvalue of 0, indicating a NULL pointer, with the caveat that 0\n\t\t\t_is_ a legal function pointer in WASM but it will not be accepted\n\t\t\tas such _here_. (Justification: the function at address zero must\n\t\t\tbe one which initially came from the WASM module, not a method we\n\t\t\twant to bind to a virtual table or VFS.)\n\t\t\t\n\t\t\tThis function returns a proxy for itself which is bound to tgt\n\t\t\tand takes 2 args (name,func). That function returns the same\n\t\t\tthing as this one, permitting calls to be chained.\n\t\t\t\n\t\t\tIf called with only 1 arg, it has no side effects but returns a\n\t\t\tfunc with the same signature as described above.\n\t\t\t\n\t\t\tACHTUNG: because we cannot generically know how to transform JS\n\t\t\texceptions into result codes, the installed functions do no\n\t\t\tautomatic catching of exceptions. It is critical, to avoid\n\t\t\tundefined behavior in the C layer, that methods mapped via\n\t\t\tthis function do not throw. The exception, as it were, to that\n\t\t\trule is...\n\t\t\t\n\t\t\tIf applyArgcCheck is true then each JS function (as opposed to\n\t\t\tfunction pointers) gets wrapped in a proxy which asserts that it\n\t\t\tis passed the expected number of arguments, throwing if the\n\t\t\targument count does not match expectations. That is only intended\n\t\t\tfor dev-time usage for sanity checking, and may leave the C\n\t\t\tenvironment in an undefined state.\n\t\t\t*/\n\t\t\tconst installMethod = function callee(tgt, name, func, applyArgcCheck = callee.installMethodArgcCheck) {\n\t\t\t\tif (!(tgt instanceof StructBinder.StructType)) toss(\"Usage error: target object is-not-a StructType.\");\n\t\t\t\telse if (!(func instanceof Function) && !wasm.isPtr(func)) toss(\"Usage error: expecting a Function or WASM pointer to one.\");\n\t\t\t\tif (1 === arguments.length) return (n, f) => callee(tgt, n, f, applyArgcCheck);\n\t\t\t\tif (!callee.argcProxy) {\n\t\t\t\t\tcallee.argcProxy = function(tgt, funcName, func, sig) {\n\t\t\t\t\t\treturn function(...args) {\n\t\t\t\t\t\t\tif (func.length !== arguments.length) toss(\"Argument mismatch for\", tgt.structInfo.name + \"::\" + funcName + \": Native signature is:\", sig);\n\t\t\t\t\t\t\treturn func.apply(this, args);\n\t\t\t\t\t\t};\n\t\t\t\t\t};\n\t\t\t\t\tcallee.removeFuncList = function() {\n\t\t\t\t\t\tif (this.ondispose.__removeFuncList) {\n\t\t\t\t\t\t\tthis.ondispose.__removeFuncList.forEach((v, ndx) => {\n\t\t\t\t\t\t\t\tif (wasm.isPtr(v)) try {\n\t\t\t\t\t\t\t\t\twasm.uninstallFunction(v);\n\t\t\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tdelete this.ondispose.__removeFuncList;\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst sigN = tgt.memberSignature(name);\n\t\t\t\tif (sigN.length < 2) toss(\"Member\", name, \"does not have a function pointer signature:\", sigN);\n\t\t\t\tconst memKey = tgt.memberKey(name);\n\t\t\t\tconst fProxy = applyArgcCheck && !wasm.isPtr(func) ? callee.argcProxy(tgt, memKey, func, sigN) : func;\n\t\t\t\tif (wasm.isPtr(fProxy)) {\n\t\t\t\t\tif (fProxy && !wasm.functionEntry(fProxy)) toss(\"Pointer\", fProxy, \"is not a WASM function table entry.\");\n\t\t\t\t\ttgt[memKey] = fProxy;\n\t\t\t\t} else {\n\t\t\t\t\tconst pFunc = wasm.installFunction(fProxy, sigN);\n\t\t\t\t\ttgt[memKey] = pFunc;\n\t\t\t\t\tif (!tgt.ondispose || !tgt.ondispose.__removeFuncList) {\n\t\t\t\t\t\ttgt.addOnDispose(\"ondispose.__removeFuncList handler\", callee.removeFuncList);\n\t\t\t\t\t\ttgt.ondispose.__removeFuncList = [];\n\t\t\t\t\t}\n\t\t\t\t\ttgt.ondispose.__removeFuncList.push(memKey, pFunc);\n\t\t\t\t}\n\t\t\t\treturn (n, f) => callee(tgt, n, f, applyArgcCheck);\n\t\t\t};\n\t\t\tinstallMethod.installMethodArgcCheck = false;\n\t\t\t/**\n\t\t\tInstalls methods into the given StructBinder.StructType-type\n\t\t\tinstance. Each entry in the given methods object must map to a\n\t\t\tknown member of the given StructType, else an exception will be\n\t\t\ttriggered.  See installMethod() for more details, including the\n\t\t\tsemantics of the 3rd argument.\n\t\t\t\n\t\t\tAs an exception to the above, if any two or more methods in the\n\t\t\t2nd argument are the exact same function, installMethod() is\n\t\t\t_not_ called for the 2nd and subsequent instances, and instead\n\t\t\tthose instances get assigned the same method pointer which is\n\t\t\tcreated for the first instance. This optimization is primarily to\n\t\t\taccommodate special handling of sqlite3_module::xConnect and\n\t\t\txCreate methods.\n\t\t\t\n\t\t\tOn success, returns its first argument. Throws on error.\n\t\t\t*/\n\t\t\tconst installMethods = function(structInstance, methods, applyArgcCheck = installMethod.installMethodArgcCheck) {\n\t\t\t\tconst seen = /* @__PURE__ */ new Map();\n\t\t\t\tfor (const k of Object.keys(methods)) {\n\t\t\t\t\tconst m = methods[k];\n\t\t\t\t\tconst prior = seen.get(m);\n\t\t\t\t\tif (prior) {\n\t\t\t\t\t\tconst mkey = structInstance.memberKey(k);\n\t\t\t\t\t\tstructInstance[mkey] = structInstance[structInstance.memberKey(prior)];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tinstallMethod(structInstance, k, m, applyArgcCheck);\n\t\t\t\t\t\tseen.set(m, k);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn structInstance;\n\t\t\t};\n\t\t\t/**\n\t\t\tEquivalent to calling installMethod(this,...arguments) with a\n\t\t\tfirst argument of this object. If called with 1 or 2 arguments\n\t\t\tand the first is an object, it's instead equivalent to calling\n\t\t\tinstallMethods(this,...arguments).\n\t\t\t*/\n\t\t\tStructBinder.StructType.prototype.installMethod = function callee(name, func, applyArgcCheck = installMethod.installMethodArgcCheck) {\n\t\t\t\treturn arguments.length < 3 && name && \"object\" === typeof name ? installMethods(this, ...arguments) : installMethod(this, ...arguments);\n\t\t\t};\n\t\t\t/**\n\t\t\tEquivalent to calling installMethods() with a first argument\n\t\t\tof this object.\n\t\t\t*/\n\t\t\tStructBinder.StructType.prototype.installMethods = function(methods, applyArgcCheck = installMethod.installMethodArgcCheck) {\n\t\t\t\treturn installMethods(this, methods, applyArgcCheck);\n\t\t\t};\n\t\t});\n\t\tglobalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3) {\n\t\t\tconst toss3 = (...args) => {\n\t\t\t\tthrow new sqlite3.SQLite3Error(...args);\n\t\t\t};\n\t\t\tconst capi = sqlite3.capi, wasm = sqlite3.wasm, util = sqlite3.util;\n\t\t\tconst outWrapper = function(f) {\n\t\t\t\treturn (...args) => f(\"sqlite3.oo1:\", ...args);\n\t\t\t};\n\t\t\tsqlite3.__isUnderTest ? outWrapper(console.debug.bind(console)) : outWrapper(sqlite3.config.debug);\n\t\t\tsqlite3.__isUnderTest ? outWrapper(console.warn.bind(console)) : outWrapper(sqlite3.config.warn);\n\t\t\tsqlite3.__isUnderTest ? outWrapper(console.error.bind(console)) : outWrapper(sqlite3.config.error);\n\t\t\t/**\n\t\t\tIn order to keep clients from manipulating, perhaps\n\t\t\tinadvertently, the underlying pointer values of DB and Stmt\n\t\t\tinstances, we'll gate access to them via the `pointer` property\n\t\t\taccessor and store their real values in this map. Keys = DB/Stmt\n\t\t\tobjects, values = pointer values. This also unifies how those are\n\t\t\taccessed, for potential use downstream via custom\n\t\t\twasm.xWrap() function signatures which know how to extract\n\t\t\tit.\n\t\t\t*/\n\t\t\tconst __ptrMap = /* @__PURE__ */ new WeakMap();\n\t\t\t/**\n\t\t\tA Set of oo1.DB or oo1.Stmt objects which are proxies for\n\t\t\t(sqlite3*) resp. (sqlite3_stmt*) pointers which themselves are\n\t\t\towned elsewhere. Objects in this Set do not own their underlying\n\t\t\thandle and that handle must be guaranteed (by the client) to\n\t\t\toutlive the proxy. DB.close()/Stmt.finalize() methods will remove\n\t\t\tthe object from this Set _instead_ of closing/finalizing the\n\t\t\tpointer. These proxies are primarily intended as a way to briefly\n\t\t\twrap an (sqlite3[_stmt]*) object as an oo1.DB/Stmt without taking\n\t\t\tover ownership, to take advantage of simplifies usage compared to\n\t\t\tthe C API while not imposing any change of ownership.\n\t\t\t\n\t\t\tSee DB.wrapHandle() and Stmt.wrapHandle().\n\t\t\t*/\n\t\t\tconst __doesNotOwnHandle = /* @__PURE__ */ new Set();\n\t\t\t/**\n\t\t\tMap of DB instances to objects, each object being a map of Stmt\n\t\t\twasm pointers to Stmt objects.\n\t\t\t*/\n\t\t\tconst __stmtMap = /* @__PURE__ */ new WeakMap();\n\t\t\t/** If object opts has _its own_ property named p then that\n\t\t\tproperty's value is returned, else dflt is returned. */\n\t\t\tconst getOwnOption = (opts, p, dflt) => {\n\t\t\t\tconst d = Object.getOwnPropertyDescriptor(opts, p);\n\t\t\t\treturn d ? d.value : dflt;\n\t\t\t};\n\t\t\tconst checkSqlite3Rc = function(dbPtr, sqliteResultCode) {\n\t\t\t\tif (sqliteResultCode) {\n\t\t\t\t\tif (dbPtr instanceof DB) dbPtr = dbPtr.pointer;\n\t\t\t\t\ttoss3(sqliteResultCode, \"sqlite3 result code\", sqliteResultCode + \":\", dbPtr ? capi.sqlite3_errmsg(dbPtr) : capi.sqlite3_errstr(sqliteResultCode));\n\t\t\t\t}\n\t\t\t\treturn arguments[0];\n\t\t\t};\n\t\t\t/**\n\t\t\tsqlite3_trace_v2() callback which gets installed by the DB ctor\n\t\t\tif its open-flags contain \"t\".\n\t\t\t*/\n\t\t\tconst __dbTraceToConsole = wasm.installFunction(\"i(ippp)\", function(t, c, p, x) {\n\t\t\t\tif (capi.SQLITE_TRACE_STMT === t) console.log(\"SQL TRACE #\" + ++this.counter, \"via sqlite3@\" + c + \"[\" + capi.sqlite3_db_filename(c, null) + \"]\", wasm.cstrToJs(x));\n\t\t\t}.bind({ counter: 0 }));\n\t\t\t/**\n\t\t\tA map of sqlite3_vfs pointers to SQL code or a callback function\n\t\t\tto run when the DB constructor opens a database with the given\n\t\t\tVFS. In the latter case, the call signature is\n\t\t\t(theDbObject,sqlite3Namespace) and the callback is expected to\n\t\t\tthrow on error.\n\t\t\t*/\n\t\t\tconst __vfsPostOpenCallback = Object.create(null);\n\t\t\t/**\n\t\t\tA proxy for DB class constructors. It must be called with the\n\t\t\tbeing-construct DB object as its \"this\". See the DB constructor\n\t\t\tfor the argument docs. This is split into a separate function\n\t\t\tin order to enable simple creation of special-case DB constructors,\n\t\t\te.g. JsStorageDb and OpfsDb.\n\t\t\t\n\t\t\tExpects to be passed a configuration object with the following\n\t\t\tproperties:\n\t\t\t\n\t\t\t- `.filename`: the db filename. It may be a special name like \":memory:\"\n\t\t\tor \"\". It may also be a URI-style name.\n\t\t\t\n\t\t\t- `.flags`: as documented in the DB constructor.\n\t\t\t\n\t\t\t- `.vfs`: as documented in the DB constructor.\n\t\t\t\n\t\t\tIt also accepts those as the first 3 arguments.\n\t\t\t\n\t\t\tIn non-default builds it may accept additional configuration\n\t\t\toptions.\n\t\t\t*/\n\t\t\tconst dbCtorHelper = function ctor(...args) {\n\t\t\t\tconst opt = ctor.normalizeArgs(...args);\n\t\t\t\tlet pDb;\n\t\t\t\tif (pDb = opt[\"sqlite3*\"]) {\n\t\t\t\t\tif (!opt[\"sqlite3*:takeOwnership\"]) __doesNotOwnHandle.add(this);\n\t\t\t\t\tthis.filename = capi.sqlite3_db_filename(pDb, \"main\");\n\t\t\t\t} else {\n\t\t\t\t\tlet fn = opt.filename, vfsName = opt.vfs, flagsStr = opt.flags;\n\t\t\t\t\tif (\"string\" !== typeof fn && !wasm.isPtr(fn) || \"string\" !== typeof flagsStr || vfsName && \"string\" !== typeof vfsName && !wasm.isPtr(vfsName)) {\n\t\t\t\t\t\tsqlite3.config.error(\"Invalid DB ctor args\", opt, arguments);\n\t\t\t\t\t\ttoss3(\"Invalid arguments for DB constructor:\", arguments, \"opts:\", opt);\n\t\t\t\t\t}\n\t\t\t\t\tlet oflags = 0;\n\t\t\t\t\tif (flagsStr.indexOf(\"c\") >= 0) oflags |= capi.SQLITE_OPEN_CREATE | capi.SQLITE_OPEN_READWRITE;\n\t\t\t\t\tif (flagsStr.indexOf(\"w\") >= 0) oflags |= capi.SQLITE_OPEN_READWRITE;\n\t\t\t\t\tif (0 === oflags) oflags |= capi.SQLITE_OPEN_READONLY;\n\t\t\t\t\toflags |= capi.SQLITE_OPEN_EXRESCODE;\n\t\t\t\t\tconst stack = wasm.pstack.pointer;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst pPtr = wasm.pstack.allocPtr();\n\t\t\t\t\t\tlet rc = capi.sqlite3_open_v2(fn, pPtr, oflags, vfsName || wasm.ptr.null);\n\t\t\t\t\t\tpDb = wasm.peekPtr(pPtr);\n\t\t\t\t\t\tcheckSqlite3Rc(pDb, rc);\n\t\t\t\t\t\tcapi.sqlite3_extended_result_codes(pDb, 1);\n\t\t\t\t\t\tif (flagsStr.indexOf(\"t\") >= 0) capi.sqlite3_trace_v2(pDb, capi.SQLITE_TRACE_STMT, __dbTraceToConsole, pDb);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tif (pDb) capi.sqlite3_close_v2(pDb);\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t} finally {\n\t\t\t\t\t\twasm.pstack.restore(stack);\n\t\t\t\t\t}\n\t\t\t\t\tthis.filename = wasm.isPtr(fn) ? wasm.cstrToJs(fn) : fn;\n\t\t\t\t}\n\t\t\t\t__ptrMap.set(this, pDb);\n\t\t\t\t__stmtMap.set(this, Object.create(null));\n\t\t\t\tif (!opt[\"sqlite3*\"]) try {\n\t\t\t\t\tconst postInitSql = __vfsPostOpenCallback[capi.sqlite3_js_db_vfs(pDb) || toss3(\"Internal error: cannot get VFS for new db handle.\")];\n\t\t\t\t\tif (postInitSql)\n /**\n\t\t\t\t\tReminder: if this db is encrypted and the client did _not_ pass\n\t\t\t\t\tin the key, any init code will fail, causing the ctor to throw.\n\t\t\t\t\tWe don't actually know whether the db is encrypted, so we cannot\n\t\t\t\t\tsensibly apply any heuristics which skip the init code only for\n\t\t\t\t\tencrypted databases for which no key has yet been supplied.\n\t\t\t\t\t*/\n\t\t\t\t\tif (postInitSql instanceof Function) postInitSql(this, sqlite3);\n\t\t\t\t\telse checkSqlite3Rc(pDb, capi.sqlite3_exec(pDb, postInitSql, 0, 0, 0));\n\t\t\t\t} catch (e) {\n\t\t\t\t\tthis.close();\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\tSets a callback which should be called after a db is opened with\n\t\t\tthe given sqlite3_vfs pointer. The 2nd argument must be a\n\t\t\tfunction, which gets called with\n\t\t\t(theOo1DbObject,sqlite3Namespace) at the end of the DB()\n\t\t\tconstructor. The function must throw on error, in which case the\n\t\t\tdb is closed and the exception is propagated.  This function is\n\t\t\tintended only for use by DB subclasses or sqlite3_vfs\n\t\t\timplementations.\n\t\t\t\n\t\t\tPrior to 2024-07-22, it was legal to pass SQL code as the second\n\t\t\targument, but that can interfere with a client's ability to run\n\t\t\tpragmas which must be run before anything else, namely (pragma\n\t\t\tlocking_mode=exclusive) for use with WAL mode.  That capability\n\t\t\thad only ever been used as an internal detail of the two OPFS\n\t\t\tVFSes, and they no longer use it that way.\n\t\t\t*/\n\t\t\tdbCtorHelper.setVfsPostOpenCallback = function(pVfs, callback) {\n\t\t\t\tif (!(callback instanceof Function)) toss3(\"dbCtorHelper.setVfsPostOpenCallback() should not be used with a non-function argument.\", arguments);\n\t\t\t\t__vfsPostOpenCallback[pVfs] = callback;\n\t\t\t};\n\t\t\t/**\n\t\t\tA helper for DB constructors. It accepts either a single\n\t\t\tconfig-style object or up to 3 arguments (filename, dbOpenFlags,\n\t\t\tdbVfsName). It returns a new object containing:\n\t\t\t\n\t\t\t{ filename: ..., flags: ..., vfs: ... }\n\t\t\t\n\t\t\tIf passed an object, any additional properties it has are copied\n\t\t\tas-is into the new object.\n\t\t\t*/\n\t\t\tdbCtorHelper.normalizeArgs = function(filename = \":memory:\", flags = \"c\", vfs = null) {\n\t\t\t\tconst arg = {};\n\t\t\t\tif (1 === arguments.length && arguments[0] && \"object\" === typeof arguments[0]) {\n\t\t\t\t\tObject.assign(arg, arguments[0]);\n\t\t\t\t\tif (void 0 === arg.flags) arg.flags = \"c\";\n\t\t\t\t\tif (void 0 === arg.vfs) arg.vfs = null;\n\t\t\t\t\tif (void 0 === arg.filename) arg.filename = \":memory:\";\n\t\t\t\t} else {\n\t\t\t\t\targ.filename = filename;\n\t\t\t\t\targ.flags = flags;\n\t\t\t\t\targ.vfs = vfs;\n\t\t\t\t}\n\t\t\t\treturn arg;\n\t\t\t};\n\t\t\t/**\n\t\t\tThe DB class provides a high-level OO wrapper around an sqlite3\n\t\t\tdb handle.\n\t\t\t\n\t\t\tThe given db filename must be resolvable using whatever\n\t\t\tfilesystem layer (virtual or otherwise) is set up for the default\n\t\t\tsqlite3 VFS or a VFS which can resolve it must be specified.\n\t\t\t\n\t\t\tThe special sqlite3 db names \":memory:\" and \"\" (temporary db)\n\t\t\thave their normal special meanings here and need not resolve to\n\t\t\treal filenames, but \"\" uses an on-storage temporary database and\n\t\t\trequires that the VFS support that.\n\t\t\t\n\t\t\tThe second argument specifies the open/create mode for the\n\t\t\tdatabase. It must be string containing a sequence of letters (in\n\t\t\tany order, but case sensitive) specifying the mode:\n\t\t\t\n\t\t\t- \"c\": create if it does not exist, else fail if it does not\n\t\t\texist. Implies the \"w\" flag.\n\t\t\t\n\t\t\t- \"w\": write. Implies \"r\": a db cannot be write-only.\n\t\t\t\n\t\t\t- \"r\": read-only if neither \"w\" nor \"c\" are provided, else it\n\t\t\tis ignored.\n\t\t\t\n\t\t\t- \"t\": enable tracing of SQL executed on this database handle,\n\t\t\tsending it to `console.log()`. To disable it later, call\n\t\t\t`sqlite3.capi.sqlite3_trace_v2(thisDb.pointer, 0, 0, 0)`.\n\t\t\t\n\t\t\tIf \"w\" is not provided, the db is implicitly read-only, noting\n\t\t\tthat \"rc\" is meaningless\n\t\t\t\n\t\t\tAny other letters are currently ignored. The default is\n\t\t\t\"c\". These modes are ignored for the special \":memory:\" and \"\"\n\t\t\tnames and _may_ be ignored altogether for certain VFSes.\n\t\t\t\n\t\t\tThe final argument is analogous to the final argument of\n\t\t\tsqlite3_open_v2(): the name of an sqlite3 VFS. Pass a falsy value,\n\t\t\tor none at all, to use the default. If passed a value, it must\n\t\t\tbe the string name of a VFS.\n\t\t\t\n\t\t\tThe constructor optionally (and preferably) takes its arguments\n\t\t\tin the form of a single configuration object with the following\n\t\t\tproperties:\n\t\t\t\n\t\t\t- `filename`: database file name\n\t\t\t- `flags`: open-mode flags\n\t\t\t- `vfs`: the VFS fname\n\t\t\t\n\t\t\t\n\t\t\tThe `filename` and `vfs` arguments may be either JS strings or\n\t\t\tC-strings allocated via WASM. `flags` is required to be a JS\n\t\t\tstring (because it's specific to this API, which is specific\n\t\t\tto JS).\n\t\t\t\n\t\t\tFor purposes of passing a DB instance to C-style sqlite3\n\t\t\tfunctions, the DB object's read-only `pointer` property holds its\n\t\t\t`sqlite3*` pointer value. That property can also be used to check\n\t\t\twhether this DB instance is still open: it will evaluate to\n\t\t\t`undefined` after the DB object's close() method is called.\n\t\t\t\n\t\t\tIn the main window thread, the filenames `\":localStorage:\"` and\n\t\t\t`\":sessionStorage:\"` are special: they cause the db to use either\n\t\t\tlocalStorage or sessionStorage for storing the database using\n\t\t\tthe kvvfs. If one of these names are used, they trump\n\t\t\tany vfs name set in the arguments.\n\t\t\t*/\n\t\t\tconst DB = function(...args) {\n\t\t\t\tdbCtorHelper.apply(this, args);\n\t\t\t};\n\t\t\tDB.dbCtorHelper = dbCtorHelper;\n\t\t\t/**\n\t\t\tInternal-use enum for mapping JS types to DB-bindable types.\n\t\t\tThese do not (and need not) line up with the SQLITE_type\n\t\t\tvalues. All values in this enum must be truthy and (mostly)\n\t\t\tdistinct but they need not be numbers.\n\t\t\t*/\n\t\t\tconst BindTypes = {\n\t\t\t\tnull: 1,\n\t\t\t\tnumber: 2,\n\t\t\t\tstring: 3,\n\t\t\t\tboolean: 4,\n\t\t\t\tblob: 5\n\t\t\t};\n\t\t\tif (wasm.bigIntEnabled) BindTypes.bigint = BindTypes.number;\n\t\t\t/**\n\t\t\tThis class wraps sqlite3_stmt. Calling this constructor\n\t\t\tdirectly will trigger an exception. Use DB.prepare() to create\n\t\t\tnew instances.\n\t\t\t\n\t\t\tFor purposes of passing a Stmt instance to C-style sqlite3\n\t\t\tfunctions, its read-only `pointer` property holds its `sqlite3_stmt*`\n\t\t\tpointer value.\n\t\t\t\n\t\t\tOther non-function properties include:\n\t\t\t\n\t\t\t- `db`: the DB object which created the statement.\n\t\t\t\n\t\t\t- `columnCount`: the number of result columns in the query, or 0\n\t\t\tfor queries which cannot return results. This property is a\n\t\t\tread-only proxy for sqlite3_column_count() and its use in loops\n\t\t\tshould be avoided because of the call overhead associated with\n\t\t\tthat. The `columnCount` is not cached when the Stmt is created\n\t\t\tbecause a schema change made between this statement's preparation\n\t\t\tand when it is stepped may invalidate it.\n\t\t\t\n\t\t\t- `parameterCount`: the number of bindable parameters in the\n\t\t\tquery.  Like `columnCount`, this property is ready-only and is a\n\t\t\tproxy for a C API call.\n\t\t\t\n\t\t\tAs a general rule, most methods of this class will throw if\n\t\t\tcalled on an instance which has been finalized. For brevity's\n\t\t\tsake, the method docs do not all repeat this warning.\n\t\t\t*/\n\t\t\tconst Stmt = function() {\n\t\t\t\tif (BindTypes !== arguments[2]) toss3(capi.SQLITE_MISUSE, \"Do not call the Stmt constructor directly. Use DB.prepare().\");\n\t\t\t\tthis.db = arguments[0];\n\t\t\t\t__ptrMap.set(this, arguments[1]);\n\t\t\t\tif (arguments.length > 3 && !arguments[3]) __doesNotOwnHandle.add(this);\n\t\t\t};\n\t\t\t/** Throws if the given DB has been closed, else it is returned. */\n\t\t\tconst affirmDbOpen = function(db) {\n\t\t\t\tif (!db.pointer) toss3(\"DB has been closed.\");\n\t\t\t\treturn db;\n\t\t\t};\n\t\t\t/** Throws if ndx is not an integer or if it is out of range\n\t\t\tfor stmt.columnCount, else returns stmt.\n\t\t\t\n\t\t\tReminder: this will also fail after the statement is finalized\n\t\t\tbut the resulting error will be about an out-of-bounds column\n\t\t\tindex rather than a statement-is-finalized error.\n\t\t\t*/\n\t\t\tconst affirmColIndex = function(stmt, ndx) {\n\t\t\t\tif (ndx !== (ndx | 0) || ndx < 0 || ndx >= stmt.columnCount) toss3(\"Column index\", ndx, \"is out of range.\");\n\t\t\t\treturn stmt;\n\t\t\t};\n\t\t\t/**\n\t\t\tExpects to be passed the `arguments` object from DB.exec(). Does\n\t\t\tthe argument processing/validation, throws on error, and returns\n\t\t\ta new object on success:\n\t\t\t\n\t\t\t{ sql: the SQL, opt: optionsObj, cbArg: function}\n\t\t\t\n\t\t\tThe opt object is a normalized copy of any passed to this\n\t\t\tfunction. The sql will be converted to a string if it is provided\n\t\t\tin one of the supported non-string formats.\n\t\t\t\n\t\t\tcbArg is only set if the opt.callback or opt.resultRows are set,\n\t\t\tin which case it's a function which expects to be passed the\n\t\t\tcurrent Stmt and returns the callback argument of the type\n\t\t\tindicated by the input arguments.\n\t\t\t*/\n\t\t\tconst parseExecArgs = function(db, args) {\n\t\t\t\tconst out = Object.create(null);\n\t\t\t\tout.opt = Object.create(null);\n\t\t\t\tswitch (args.length) {\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tif (\"string\" === typeof args[0] || util.isSQLableTypedArray(args[0])) out.sql = args[0];\n\t\t\t\t\t\telse if (Array.isArray(args[0])) out.sql = args[0];\n\t\t\t\t\t\telse if (args[0] && \"object\" === typeof args[0]) {\n\t\t\t\t\t\t\tout.opt = args[0];\n\t\t\t\t\t\t\tout.sql = out.opt.sql;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tout.sql = args[0];\n\t\t\t\t\t\tout.opt = args[1];\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault: toss3(\"Invalid argument count for exec().\");\n\t\t\t\t}\n\t\t\t\tout.sql = util.flexibleString(out.sql);\n\t\t\t\tif (\"string\" !== typeof out.sql) toss3(\"Missing SQL argument or unsupported SQL value type.\");\n\t\t\t\tconst opt = out.opt;\n\t\t\t\tswitch (opt.returnValue) {\n\t\t\t\t\tcase \"resultRows\":\n\t\t\t\t\t\tif (!opt.resultRows) opt.resultRows = [];\n\t\t\t\t\t\tout.returnVal = () => opt.resultRows;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"saveSql\":\n\t\t\t\t\t\tif (!opt.saveSql) opt.saveSql = [];\n\t\t\t\t\t\tout.returnVal = () => opt.saveSql;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase void 0:\n\t\t\t\t\tcase \"this\":\n\t\t\t\t\t\tout.returnVal = () => db;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault: toss3(\"Invalid returnValue value:\", opt.returnValue);\n\t\t\t\t}\n\t\t\t\tif (!opt.callback && !opt.returnValue && void 0 !== opt.rowMode) {\n\t\t\t\t\tif (!opt.resultRows) opt.resultRows = [];\n\t\t\t\t\tout.returnVal = () => opt.resultRows;\n\t\t\t\t}\n\t\t\t\tif (opt.callback || opt.resultRows) switch (void 0 === opt.rowMode ? \"array\" : opt.rowMode) {\n\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\tout.cbArg = (stmt, cache) => {\n\t\t\t\t\t\t\tif (!cache.columnNames) cache.columnNames = stmt.getColumnNames([]);\n\t\t\t\t\t\t\tconst row = stmt.get([]);\n\t\t\t\t\t\t\tconst rv = Object.create(null);\n\t\t\t\t\t\t\tfor (const i in cache.columnNames) rv[cache.columnNames[i]] = row[i];\n\t\t\t\t\t\t\treturn rv;\n\t\t\t\t\t\t};\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"array\":\n\t\t\t\t\t\tout.cbArg = (stmt) => stmt.get([]);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"stmt\":\n\t\t\t\t\t\tif (Array.isArray(opt.resultRows)) toss3(\"exec(): invalid rowMode for a resultRows array: must\", \"be one of 'array', 'object',\", \"a result column number, or column name reference.\");\n\t\t\t\t\t\tout.cbArg = (stmt) => stmt;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif (util.isInt32(opt.rowMode)) {\n\t\t\t\t\t\t\tout.cbArg = (stmt) => stmt.get(opt.rowMode);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t} else if (\"string\" === typeof opt.rowMode && opt.rowMode.length > 1 && \"$\" === opt.rowMode[0]) {\n\t\t\t\t\t\t\tconst $colName = opt.rowMode.substr(1);\n\t\t\t\t\t\t\tout.cbArg = (stmt) => {\n\t\t\t\t\t\t\t\tconst rc = stmt.get(Object.create(null))[$colName];\n\t\t\t\t\t\t\t\treturn void 0 === rc ? toss3(capi.SQLITE_NOTFOUND, \"exec(): unknown result column:\", $colName) : rc;\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttoss3(\"Invalid rowMode:\", opt.rowMode);\n\t\t\t\t}\n\t\t\t\treturn out;\n\t\t\t};\n\t\t\t/**\n\t\t\tInternal impl of the DB.selectValue(), selectArray(), and\n\t\t\tselectObject() methods.\n\t\t\t*/\n\t\t\tconst __selectFirstRow = (db, sql, bind, ...getArgs) => {\n\t\t\t\tconst stmt = db.prepare(sql);\n\t\t\t\ttry {\n\t\t\t\t\tconst rc = stmt.bind(bind).step() ? stmt.get(...getArgs) : void 0;\n\t\t\t\t\tstmt.reset();\n\t\t\t\t\treturn rc;\n\t\t\t\t} finally {\n\t\t\t\t\tstmt.finalize();\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\tInternal impl of the DB.selectArrays() and selectObjects()\n\t\t\tmethods.\n\t\t\t*/\n\t\t\tconst __selectAll = (db, sql, bind, rowMode) => db.exec({\n\t\t\t\tsql,\n\t\t\t\tbind,\n\t\t\t\trowMode,\n\t\t\t\treturnValue: \"resultRows\"\n\t\t\t});\n\t\t\t/**\n\t\t\tExpects to be given a DB instance or an `sqlite3*` pointer (may\n\t\t\tbe null) and an sqlite3 API result code. If the result code is\n\t\t\tnot falsy, this function throws an SQLite3Error with an error\n\t\t\tmessage from sqlite3_errmsg(), using db (or, if db is-a DB,\n\t\t\tdb.pointer) as the db handle, or sqlite3_errstr() if db is\n\t\t\tfalsy. Note that if it's passed a non-error code like SQLITE_ROW\n\t\t\tor SQLITE_DONE, it will still throw but the error string might be\n\t\t\t\"Not an error.\"  The various non-0 non-error codes need to be\n\t\t\tchecked for in client code where they are expected.\n\t\t\t\n\t\t\tThe thrown exception's `resultCode` property will be the value of\n\t\t\tthe second argument to this function.\n\t\t\t\n\t\t\tIf it does not throw, it returns its first argument.\n\t\t\t*/\n\t\t\tDB.checkRc = (db, resultCode) => checkSqlite3Rc(db, resultCode);\n\t\t\tDB.prototype = {\n\t\t\t\tisOpen: function() {\n\t\t\t\t\treturn !!this.pointer;\n\t\t\t\t},\n\t\t\t\taffirmOpen: function() {\n\t\t\t\t\treturn affirmDbOpen(this);\n\t\t\t\t},\n\t\t\t\tclose: function() {\n\t\t\t\t\tconst pDb = this.pointer;\n\t\t\t\t\tif (pDb) {\n\t\t\t\t\t\tif (this.onclose && this.onclose.before instanceof Function) try {\n\t\t\t\t\t\t\tthis.onclose.before(this);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t\tObject.keys(__stmtMap.get(this)).forEach((k, s) => {\n\t\t\t\t\t\t\tif (s && s.pointer) try {\n\t\t\t\t\t\t\t\ts.finalize();\n\t\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t\t});\n\t\t\t\t\t\t__ptrMap.delete(this);\n\t\t\t\t\t\t__stmtMap.delete(this);\n\t\t\t\t\t\tif (!__doesNotOwnHandle.delete(this)) capi.sqlite3_close_v2(pDb);\n\t\t\t\t\t\tif (this.onclose && this.onclose.after instanceof Function) try {\n\t\t\t\t\t\t\tthis.onclose.after(this);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t\tdelete this.filename;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tchanges: function(total = false, sixtyFour = false) {\n\t\t\t\t\tconst p = affirmDbOpen(this).pointer;\n\t\t\t\t\tif (total) return sixtyFour ? capi.sqlite3_total_changes64(p) : capi.sqlite3_total_changes(p);\n\t\t\t\t\telse return sixtyFour ? capi.sqlite3_changes64(p) : capi.sqlite3_changes(p);\n\t\t\t\t},\n\t\t\t\tdbFilename: function(dbName = \"main\") {\n\t\t\t\t\treturn capi.sqlite3_db_filename(affirmDbOpen(this).pointer, dbName);\n\t\t\t\t},\n\t\t\t\tdbName: function(dbNumber = 0) {\n\t\t\t\t\treturn capi.sqlite3_db_name(affirmDbOpen(this).pointer, dbNumber);\n\t\t\t\t},\n\t\t\t\tdbVfsName: function(dbName = 0) {\n\t\t\t\t\tlet rc;\n\t\t\t\t\tconst pVfs = capi.sqlite3_js_db_vfs(affirmDbOpen(this).pointer, dbName);\n\t\t\t\t\tif (pVfs) {\n\t\t\t\t\t\tconst v = new capi.sqlite3_vfs(pVfs);\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\trc = wasm.cstrToJs(v.$zName);\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tv.dispose();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn rc;\n\t\t\t\t},\n\t\t\t\tprepare: function(sql) {\n\t\t\t\t\taffirmDbOpen(this);\n\t\t\t\t\tconst stack = wasm.pstack.pointer;\n\t\t\t\t\tlet ppStmt, pStmt;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tppStmt = wasm.pstack.alloc(8);\n\t\t\t\t\t\tDB.checkRc(this, capi.sqlite3_prepare_v2(this.pointer, sql, -1, ppStmt, null));\n\t\t\t\t\t\tpStmt = wasm.peekPtr(ppStmt);\n\t\t\t\t\t} finally {\n\t\t\t\t\t\twasm.pstack.restore(stack);\n\t\t\t\t\t}\n\t\t\t\t\tif (!pStmt) toss3(\"Cannot prepare empty SQL.\");\n\t\t\t\t\tconst stmt = new Stmt(this, pStmt, BindTypes);\n\t\t\t\t\t__stmtMap.get(this)[pStmt] = stmt;\n\t\t\t\t\treturn stmt;\n\t\t\t\t},\n\t\t\t\texec: function() {\n\t\t\t\t\taffirmDbOpen(this);\n\t\t\t\t\tconst arg = parseExecArgs(this, arguments);\n\t\t\t\t\tif (!arg.sql) return toss3(\"exec() requires an SQL string.\");\n\t\t\t\t\tconst opt = arg.opt;\n\t\t\t\t\tconst callback = opt.callback;\n\t\t\t\t\tconst resultRows = Array.isArray(opt.resultRows) ? opt.resultRows : void 0;\n\t\t\t\t\tlet stmt;\n\t\t\t\t\tlet bind = opt.bind;\n\t\t\t\t\tlet evalFirstResult = !!(arg.cbArg || opt.columnNames || resultRows);\n\t\t\t\t\tconst stack = wasm.scopedAllocPush();\n\t\t\t\t\tconst saveSql = Array.isArray(opt.saveSql) ? opt.saveSql : void 0;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst isTA = util.isSQLableTypedArray(arg.sql);\n\t\t\t\t\t\tlet sqlByteLen = isTA ? arg.sql.byteLength : wasm.jstrlen(arg.sql);\n\t\t\t\t\t\tconst ppStmt = wasm.scopedAlloc(2 * wasm.ptr.size + (sqlByteLen + 1));\n\t\t\t\t\t\tconst pzTail = wasm.ptr.add(ppStmt, wasm.ptr.size);\n\t\t\t\t\t\tlet pSql = wasm.ptr.add(pzTail, wasm.ptr.size);\n\t\t\t\t\t\tconst pSqlEnd = wasm.ptr.add(pSql, sqlByteLen);\n\t\t\t\t\t\tif (isTA) wasm.heap8().set(arg.sql, pSql);\n\t\t\t\t\t\telse wasm.jstrcpy(arg.sql, wasm.heap8(), pSql, sqlByteLen, false);\n\t\t\t\t\t\twasm.poke8(wasm.ptr.add(pSql, sqlByteLen), 0);\n\t\t\t\t\t\twhile (pSql && wasm.peek8(pSql)) {\n\t\t\t\t\t\t\twasm.pokePtr([ppStmt, pzTail], 0);\n\t\t\t\t\t\t\tDB.checkRc(this, capi.sqlite3_prepare_v3(this.pointer, pSql, sqlByteLen, 0, ppStmt, pzTail));\n\t\t\t\t\t\t\tconst pStmt = wasm.peekPtr(ppStmt);\n\t\t\t\t\t\t\tpSql = wasm.peekPtr(pzTail);\n\t\t\t\t\t\t\tsqlByteLen = Number(wasm.ptr.add(pSqlEnd, -pSql));\n\t\t\t\t\t\t\tif (!pStmt) continue;\n\t\t\t\t\t\t\tif (saveSql) saveSql.push(capi.sqlite3_sql(pStmt).trim());\n\t\t\t\t\t\t\tstmt = new Stmt(this, pStmt, BindTypes);\n\t\t\t\t\t\t\tif (bind && stmt.parameterCount) {\n\t\t\t\t\t\t\t\tstmt.bind(bind);\n\t\t\t\t\t\t\t\tbind = null;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (evalFirstResult && stmt.columnCount) {\n\t\t\t\t\t\t\t\tlet gotColNames = Array.isArray(opt.columnNames) ? 0 : 1;\n\t\t\t\t\t\t\t\tevalFirstResult = false;\n\t\t\t\t\t\t\t\tif (arg.cbArg || resultRows) {\n\t\t\t\t\t\t\t\t\tconst cbArgCache = Object.create(null);\n\t\t\t\t\t\t\t\t\tfor (; stmt.step(); __execLock.delete(stmt)) {\n\t\t\t\t\t\t\t\t\t\tif (0 === gotColNames++) stmt.getColumnNames(cbArgCache.columnNames = opt.columnNames || []);\n\t\t\t\t\t\t\t\t\t\t__execLock.add(stmt);\n\t\t\t\t\t\t\t\t\t\tconst row = arg.cbArg(stmt, cbArgCache);\n\t\t\t\t\t\t\t\t\t\tif (resultRows) resultRows.push(row);\n\t\t\t\t\t\t\t\t\t\tif (callback && false === callback.call(opt, row, stmt)) break;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t__execLock.delete(stmt);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (0 === gotColNames) stmt.getColumnNames(opt.columnNames);\n\t\t\t\t\t\t\t} else stmt.step();\n\t\t\t\t\t\t\tstmt.reset().finalize();\n\t\t\t\t\t\t\tstmt = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif (stmt) {\n\t\t\t\t\t\t\t__execLock.delete(stmt);\n\t\t\t\t\t\t\tstmt.finalize();\n\t\t\t\t\t\t}\n\t\t\t\t\t\twasm.scopedAllocPop(stack);\n\t\t\t\t\t}\n\t\t\t\t\treturn arg.returnVal();\n\t\t\t\t},\n\t\t\t\tcreateFunction: function f(name, xFunc, opt) {\n\t\t\t\t\tconst isFunc = (f) => f instanceof Function;\n\t\t\t\t\tswitch (arguments.length) {\n\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\topt = name;\n\t\t\t\t\t\t\tname = opt.name;\n\t\t\t\t\t\t\txFunc = opt.xFunc || 0;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\tif (!isFunc(xFunc)) {\n\t\t\t\t\t\t\t\topt = xFunc;\n\t\t\t\t\t\t\t\txFunc = opt.xFunc || 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 3: break;\n\t\t\t\t\t\tdefault: break;\n\t\t\t\t\t}\n\t\t\t\t\tif (!opt) opt = {};\n\t\t\t\t\tif (\"string\" !== typeof name) toss3(\"Invalid arguments: missing function name.\");\n\t\t\t\t\tlet xStep = opt.xStep || 0;\n\t\t\t\t\tlet xFinal = opt.xFinal || 0;\n\t\t\t\t\tconst xValue = opt.xValue || 0;\n\t\t\t\t\tconst xInverse = opt.xInverse || 0;\n\t\t\t\t\tlet isWindow = void 0;\n\t\t\t\t\tif (isFunc(xFunc)) {\n\t\t\t\t\t\tisWindow = false;\n\t\t\t\t\t\tif (isFunc(xStep) || isFunc(xFinal)) toss3(\"Ambiguous arguments: scalar or aggregate?\");\n\t\t\t\t\t\txStep = xFinal = null;\n\t\t\t\t\t} else if (isFunc(xStep)) {\n\t\t\t\t\t\tif (!isFunc(xFinal)) toss3(\"Missing xFinal() callback for aggregate or window UDF.\");\n\t\t\t\t\t\txFunc = null;\n\t\t\t\t\t} else if (isFunc(xFinal)) toss3(\"Missing xStep() callback for aggregate or window UDF.\");\n\t\t\t\t\telse toss3(\"Missing function-type properties.\");\n\t\t\t\t\tif (false === isWindow) {\n\t\t\t\t\t\tif (isFunc(xValue) || isFunc(xInverse)) toss3(\"xValue and xInverse are not permitted for non-window UDFs.\");\n\t\t\t\t\t} else if (isFunc(xValue)) {\n\t\t\t\t\t\tif (!isFunc(xInverse)) toss3(\"xInverse must be provided if xValue is.\");\n\t\t\t\t\t\tisWindow = true;\n\t\t\t\t\t} else if (isFunc(xInverse)) toss3(\"xValue must be provided if xInverse is.\");\n\t\t\t\t\tconst pApp = opt.pApp;\n\t\t\t\t\tif (void 0 !== pApp && null !== pApp && !wasm.isPtr(pApp)) toss3(\"Invalid value for pApp property. Must be a legal WASM pointer value.\");\n\t\t\t\t\tconst xDestroy = opt.xDestroy || 0;\n\t\t\t\t\tif (xDestroy && !isFunc(xDestroy)) toss3(\"xDestroy property must be a function.\");\n\t\t\t\t\tlet fFlags = 0;\n\t\t\t\t\tif (getOwnOption(opt, \"deterministic\")) fFlags |= capi.SQLITE_DETERMINISTIC;\n\t\t\t\t\tif (getOwnOption(opt, \"directOnly\")) fFlags |= capi.SQLITE_DIRECTONLY;\n\t\t\t\t\tif (getOwnOption(opt, \"innocuous\")) fFlags |= capi.SQLITE_INNOCUOUS;\n\t\t\t\t\tname = name.toLowerCase();\n\t\t\t\t\tconst xArity = xFunc || xStep;\n\t\t\t\t\tconst arity = getOwnOption(opt, \"arity\");\n\t\t\t\t\tconst arityArg = \"number\" === typeof arity ? arity : xArity.length ? xArity.length - 1 : 0;\n\t\t\t\t\tlet rc;\n\t\t\t\t\tif (isWindow) rc = capi.sqlite3_create_window_function(this.pointer, name, arityArg, capi.SQLITE_UTF8 | fFlags, pApp || 0, xStep, xFinal, xValue, xInverse, xDestroy);\n\t\t\t\t\telse rc = capi.sqlite3_create_function_v2(this.pointer, name, arityArg, capi.SQLITE_UTF8 | fFlags, pApp || 0, xFunc, xStep, xFinal, xDestroy);\n\t\t\t\t\tDB.checkRc(this, rc);\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tselectValue: function(sql, bind, asType) {\n\t\t\t\t\treturn __selectFirstRow(this, sql, bind, 0, asType);\n\t\t\t\t},\n\t\t\t\tselectValues: function(sql, bind, asType) {\n\t\t\t\t\tconst stmt = this.prepare(sql), rc = [];\n\t\t\t\t\ttry {\n\t\t\t\t\t\tstmt.bind(bind);\n\t\t\t\t\t\twhile (stmt.step()) rc.push(stmt.get(0, asType));\n\t\t\t\t\t\tstmt.reset();\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tstmt.finalize();\n\t\t\t\t\t}\n\t\t\t\t\treturn rc;\n\t\t\t\t},\n\t\t\t\tselectArray: function(sql, bind) {\n\t\t\t\t\treturn __selectFirstRow(this, sql, bind, []);\n\t\t\t\t},\n\t\t\t\tselectObject: function(sql, bind) {\n\t\t\t\t\treturn __selectFirstRow(this, sql, bind, {});\n\t\t\t\t},\n\t\t\t\tselectArrays: function(sql, bind) {\n\t\t\t\t\treturn __selectAll(this, sql, bind, \"array\");\n\t\t\t\t},\n\t\t\t\tselectObjects: function(sql, bind) {\n\t\t\t\t\treturn __selectAll(this, sql, bind, \"object\");\n\t\t\t\t},\n\t\t\t\topenStatementCount: function() {\n\t\t\t\t\treturn this.pointer ? Object.keys(__stmtMap.get(this)).length : 0;\n\t\t\t\t},\n\t\t\t\ttransaction: function(callback) {\n\t\t\t\t\tlet opener = \"BEGIN\";\n\t\t\t\t\tif (arguments.length > 1) {\n\t\t\t\t\t\tif (/[^a-zA-Z]/.test(arguments[0])) toss3(capi.SQLITE_MISUSE, \"Invalid argument for BEGIN qualifier.\");\n\t\t\t\t\t\topener += \" \" + arguments[0];\n\t\t\t\t\t\tcallback = arguments[1];\n\t\t\t\t\t}\n\t\t\t\t\taffirmDbOpen(this).exec(opener);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst rc = callback(this);\n\t\t\t\t\t\tthis.exec(\"COMMIT\");\n\t\t\t\t\t\treturn rc;\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tthis.exec(\"ROLLBACK\");\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tsavepoint: function(callback) {\n\t\t\t\t\taffirmDbOpen(this).exec(\"SAVEPOINT oo1\");\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst rc = callback(this);\n\t\t\t\t\t\tthis.exec(\"RELEASE oo1\");\n\t\t\t\t\t\treturn rc;\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tthis.exec(\"ROLLBACK to SAVEPOINT oo1; RELEASE SAVEPOINT oo1\");\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tcheckRc: function(resultCode) {\n\t\t\t\t\treturn checkSqlite3Rc(this, resultCode);\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\tReturns a new oo1.DB instance which wraps the given (sqlite3*)\n\t\t\tWASM pointer, optionally with or without taking over ownership of\n\t\t\tthat pointer.\n\t\t\t\n\t\t\tThe first argument must be either a non-NULL (sqlite3*) WASM\n\t\t\tpointer.\n\t\t\t\n\t\t\tThe second argument, defaulting to false, specifies ownership of\n\t\t\tthe first argument. If it is truthy, the returned object will\n\t\t\tpass that pointer to sqlite3_close() when its close() method is\n\t\t\tcalled, otherwise it will not.\n\t\t\t\n\t\t\tThrows if pDb is not a non-0 WASM pointer.\n\t\t\t\n\t\t\tThe caller MUST GUARANTEE that the passed-in handle will outlive\n\t\t\tthe returned object, i.e. that it will not be closed. If it is closed,\n\t\t\tthis object will hold a stale pointer and results are undefined.\n\t\t\t\n\t\t\tAside from its lifetime, the proxy is to be treated as any other\n\t\t\tDB instance, including the requirement of calling close() on\n\t\t\tit. close() will free up internal resources owned by the proxy\n\t\t\tand disassociate the proxy from that handle but will not\n\t\t\tactually close the proxied db handle unless this function is\n\t\t\tpassed a thruthy second argument.\n\t\t\t\n\t\t\tTo stress:\n\t\t\t\n\t\t\t- DO NOT call sqlite3_close() (or similar) on the being-proxied\n\t\t\tpointer while a proxy is active.\n\t\t\t\n\t\t\t- ALWAYS eventually call close() on the returned object. If the\n\t\t\tproxy does not own the underlying handle then its MUST be\n\t\t\tclosed BEFORE the being-proxied handle is closed.\n\t\t\t\n\t\t\tDesign notes:\n\t\t\t\n\t\t\t- wrapHandle() \"could\" accept a DB object instance as its first\n\t\t\targument and proxy thatDb.pointer but there is currently no use\n\t\t\tcase where doing so would be useful, so it does not allow\n\t\t\tthat. That restriction may be lifted in a future version.\n\t\t\t*/\n\t\t\tDB.wrapHandle = function(pDb, takeOwnership = false) {\n\t\t\t\tif (!pDb || !wasm.isPtr(pDb)) throw new sqlite3.SQLite3Error(capi.SQLITE_MISUSE, \"Argument must be a WASM sqlite3 pointer\");\n\t\t\t\treturn new DB({\n\t\t\t\t\t\"sqlite3*\": pDb,\n\t\t\t\t\t\"sqlite3*:takeOwnership\": !!takeOwnership\n\t\t\t\t});\n\t\t\t};\n\t\t\t/** Throws if the given Stmt has been finalized, else stmt is\n\t\t\treturned. */\n\t\t\tconst affirmStmtOpen = function(stmt) {\n\t\t\t\tif (!stmt.pointer) toss3(\"Stmt has been closed.\");\n\t\t\t\treturn stmt;\n\t\t\t};\n\t\t\t/** Returns an opaque truthy value from the BindTypes\n\t\t\tenum if v's type is a valid bindable type, else\n\t\t\treturns a falsy value. As a special case, a value of\n\t\t\tundefined is treated as a bind type of null. */\n\t\t\tconst isSupportedBindType = function(v) {\n\t\t\t\tlet t = BindTypes[null === v || void 0 === v ? \"null\" : typeof v];\n\t\t\t\tswitch (t) {\n\t\t\t\t\tcase BindTypes.boolean:\n\t\t\t\t\tcase BindTypes.null:\n\t\t\t\t\tcase BindTypes.number:\n\t\t\t\t\tcase BindTypes.string: return t;\n\t\t\t\t\tcase BindTypes.bigint: return wasm.bigIntEnabled ? t : void 0;\n\t\t\t\t\tdefault: return util.isBindableTypedArray(v) ? BindTypes.blob : void 0;\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\tIf isSupportedBindType(v) returns a truthy value, this\n\t\t\tfunction returns that value, else it throws.\n\t\t\t*/\n\t\t\tconst affirmSupportedBindType = function(v) {\n\t\t\t\treturn isSupportedBindType(v) || toss3(\"Unsupported bind() argument type:\", typeof v);\n\t\t\t};\n\t\t\t/**\n\t\t\tIf key is a number and within range of stmt's bound parameter\n\t\t\tcount, key is returned.\n\t\t\t\n\t\t\tIf key is not a number then it must be a JS string (not a WASM\n\t\t\tstring) and it is checked against named parameters. If a match is\n\t\t\tfound, its index is returned.\n\t\t\t\n\t\t\tElse it throws.\n\t\t\t*/\n\t\t\tconst affirmParamIndex = function(stmt, key) {\n\t\t\t\tconst n = \"number\" === typeof key ? key : capi.sqlite3_bind_parameter_index(stmt.pointer, key);\n\t\t\t\tif (0 === n || !util.isInt32(n)) toss3(\"Invalid bind() parameter name: \" + key);\n\t\t\t\telse if (n < 1 || n > stmt.parameterCount) toss3(\"Bind index\", key, \"is out of range.\");\n\t\t\t\treturn n;\n\t\t\t};\n\t\t\t/**\n\t\t\tEach Stmt object which is \"locked\" by DB.exec() gets an entry\n\t\t\there to note that \"lock\".\n\t\t\t\n\t\t\tThe reason this is in place is because exec({callback:...})'s\n\t\t\tcallback gets access to the Stmt objects created internally by\n\t\t\texec() but it must not use certain Stmt APIs.\n\t\t\t*/\n\t\t\tconst __execLock = /* @__PURE__ */ new Set();\n\t\t\t/**\n\t\t\tThis is a Stmt.get() counterpart of __execLock. Each time\n\t\t\tStmt.step() returns true, the statement is added to this set,\n\t\t\tindicating that Stmt.get() is legal. Stmt APIs which invalidate\n\t\t\tthat status remove the Stmt object from this set, which will\n\t\t\tcause Stmt.get() to throw with a descriptive error message\n\t\t\tinstead of a more generic \"API misuse\" if we were to allow that\n\t\t\tcall to reach the C API.\n\t\t\t*/\n\t\t\tconst __stmtMayGet = /* @__PURE__ */ new Set();\n\t\t\t/**\n\t\t\tStmt APIs which are prohibited on locked objects must call\n\t\t\taffirmNotLockedByExec() before doing any work.\n\t\t\t\n\t\t\tIf __execLock.has(stmt) is truthy, this throws an exception\n\t\t\tcomplaining that the 2nd argument (an operation name,\n\t\t\te.g. \"bind()\") is not legal while the statement is \"locked\".\n\t\t\tLocking happens before an exec()-like callback is passed a\n\t\t\tstatement, to ensure that the callback does not mutate or\n\t\t\tfinalize the statement. If it does not throw, it returns stmt.\n\t\t\t*/\n\t\t\tconst affirmNotLockedByExec = function(stmt, currentOpName) {\n\t\t\t\tif (__execLock.has(stmt)) toss3(\"Operation is illegal when statement is locked:\", currentOpName);\n\t\t\t\treturn stmt;\n\t\t\t};\n\t\t\t/**\n\t\t\tBinds a single bound parameter value on the given stmt at the\n\t\t\tgiven index (numeric or named) using the given bindType (see\n\t\t\tthe BindTypes enum) and value. Throws on error. Returns stmt on\n\t\t\tsuccess.\n\t\t\t*/\n\t\t\tconst bindOne = function f(stmt, ndx, bindType, val) {\n\t\t\t\taffirmNotLockedByExec(affirmStmtOpen(stmt), \"bind()\");\n\t\t\t\tif (!f._) {\n\t\t\t\t\tf._tooBigInt = (v) => toss3(\"BigInt value is too big to store without precision loss:\", v);\n\t\t\t\t\tf._ = { string: function(stmt, ndx, val, asBlob) {\n\t\t\t\t\t\tconst [pStr, n] = wasm.allocCString(val, true);\n\t\t\t\t\t\treturn (asBlob ? capi.sqlite3_bind_blob : capi.sqlite3_bind_text)(stmt.pointer, ndx, pStr, n, capi.SQLITE_WASM_DEALLOC);\n\t\t\t\t\t} };\n\t\t\t\t}\n\t\t\t\taffirmSupportedBindType(val);\n\t\t\t\tndx = affirmParamIndex(stmt, ndx);\n\t\t\t\tlet rc = 0;\n\t\t\t\tswitch (null === val || void 0 === val ? BindTypes.null : bindType) {\n\t\t\t\t\tcase BindTypes.null:\n\t\t\t\t\t\trc = capi.sqlite3_bind_null(stmt.pointer, ndx);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BindTypes.string:\n\t\t\t\t\t\trc = f._.string(stmt, ndx, val, false);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BindTypes.number: {\n\t\t\t\t\t\tlet m;\n\t\t\t\t\t\tif (util.isInt32(val)) m = capi.sqlite3_bind_int;\n\t\t\t\t\t\telse if (\"bigint\" === typeof val) if (!util.bigIntFits64(val)) f._tooBigInt(val);\n\t\t\t\t\t\telse if (wasm.bigIntEnabled) m = capi.sqlite3_bind_int64;\n\t\t\t\t\t\telse if (util.bigIntFitsDouble(val)) {\n\t\t\t\t\t\t\tval = Number(val);\n\t\t\t\t\t\t\tm = capi.sqlite3_bind_double;\n\t\t\t\t\t\t} else f._tooBigInt(val);\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tval = Number(val);\n\t\t\t\t\t\t\tif (wasm.bigIntEnabled && Number.isInteger(val)) m = capi.sqlite3_bind_int64;\n\t\t\t\t\t\t\telse m = capi.sqlite3_bind_double;\n\t\t\t\t\t\t}\n\t\t\t\t\t\trc = m(stmt.pointer, ndx, val);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase BindTypes.boolean:\n\t\t\t\t\t\trc = capi.sqlite3_bind_int(stmt.pointer, ndx, val ? 1 : 0);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase BindTypes.blob: {\n\t\t\t\t\t\tif (\"string\" === typeof val) {\n\t\t\t\t\t\t\trc = f._.string(stmt, ndx, val, true);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t} else if (val instanceof ArrayBuffer) val = new Uint8Array(val);\n\t\t\t\t\t\telse if (!util.isBindableTypedArray(val)) toss3(\"Binding a value as a blob requires\", \"that it be a string, Uint8Array, Int8Array, or ArrayBuffer.\");\n\t\t\t\t\t\tconst pBlob = wasm.alloc(val.byteLength || 1);\n\t\t\t\t\t\twasm.heap8().set(val.byteLength ? val : [0], Number(pBlob));\n\t\t\t\t\t\trc = capi.sqlite3_bind_blob(stmt.pointer, ndx, pBlob, val.byteLength, capi.SQLITE_WASM_DEALLOC);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tsqlite3.config.warn(\"Unsupported bind() argument type:\", val);\n\t\t\t\t\t\ttoss3(\"Unsupported bind() argument type: \" + typeof val);\n\t\t\t\t}\n\t\t\t\tif (rc) DB.checkRc(stmt.db.pointer, rc);\n\t\t\t\treturn stmt;\n\t\t\t};\n\t\t\tStmt.prototype = {\n\t\t\t\tfinalize: function() {\n\t\t\t\t\tconst ptr = this.pointer;\n\t\t\t\t\tif (ptr) {\n\t\t\t\t\t\taffirmNotLockedByExec(this, \"finalize()\");\n\t\t\t\t\t\tconst rc = __doesNotOwnHandle.delete(this) ? 0 : capi.sqlite3_finalize(ptr);\n\t\t\t\t\t\tdelete __stmtMap.get(this.db)[ptr];\n\t\t\t\t\t\t__ptrMap.delete(this);\n\t\t\t\t\t\t__execLock.delete(this);\n\t\t\t\t\t\t__stmtMayGet.delete(this);\n\t\t\t\t\t\tdelete this.parameterCount;\n\t\t\t\t\t\tdelete this.db;\n\t\t\t\t\t\treturn rc;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tclearBindings: function() {\n\t\t\t\t\taffirmNotLockedByExec(affirmStmtOpen(this), \"clearBindings()\");\n\t\t\t\t\tcapi.sqlite3_clear_bindings(this.pointer);\n\t\t\t\t\t__stmtMayGet.delete(this);\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\treset: function(alsoClearBinds) {\n\t\t\t\t\taffirmNotLockedByExec(this, \"reset()\");\n\t\t\t\t\tif (alsoClearBinds) this.clearBindings();\n\t\t\t\t\tconst rc = capi.sqlite3_reset(affirmStmtOpen(this).pointer);\n\t\t\t\t\t__stmtMayGet.delete(this);\n\t\t\t\t\tcheckSqlite3Rc(this.db, rc);\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tbind: function() {\n\t\t\t\t\taffirmStmtOpen(this);\n\t\t\t\t\tlet ndx, arg;\n\t\t\t\t\tswitch (arguments.length) {\n\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\tndx = 1;\n\t\t\t\t\t\t\targ = arguments[0];\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\tndx = arguments[0];\n\t\t\t\t\t\t\targ = arguments[1];\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault: toss3(\"Invalid bind() arguments.\");\n\t\t\t\t\t}\n\t\t\t\t\tif (void 0 === arg) return this;\n\t\t\t\t\telse if (!this.parameterCount) toss3(\"This statement has no bindable parameters.\");\n\t\t\t\t\t__stmtMayGet.delete(this);\n\t\t\t\t\tif (null === arg) return bindOne(this, ndx, BindTypes.null, arg);\n\t\t\t\t\telse if (Array.isArray(arg)) {\n\t\t\t\t\t\tif (1 !== arguments.length) toss3(\"When binding an array, an index argument is not permitted.\");\n\t\t\t\t\t\targ.forEach((v, i) => bindOne(this, i + 1, affirmSupportedBindType(v), v));\n\t\t\t\t\t\treturn this;\n\t\t\t\t\t} else if (arg instanceof ArrayBuffer) arg = new Uint8Array(arg);\n\t\t\t\t\tif (\"object\" === typeof arg && !util.isBindableTypedArray(arg)) {\n\t\t\t\t\t\tif (1 !== arguments.length) toss3(\"When binding an object, an index argument is not permitted.\");\n\t\t\t\t\t\tObject.keys(arg).forEach((k) => bindOne(this, k, affirmSupportedBindType(arg[k]), arg[k]));\n\t\t\t\t\t\treturn this;\n\t\t\t\t\t} else return bindOne(this, ndx, affirmSupportedBindType(arg), arg);\n\t\t\t\t\ttoss3(\"Should not reach this point.\");\n\t\t\t\t},\n\t\t\t\tbindAsBlob: function(ndx, arg) {\n\t\t\t\t\taffirmStmtOpen(this);\n\t\t\t\t\tif (1 === arguments.length) {\n\t\t\t\t\t\targ = ndx;\n\t\t\t\t\t\tndx = 1;\n\t\t\t\t\t}\n\t\t\t\t\tconst t = affirmSupportedBindType(arg);\n\t\t\t\t\tif (BindTypes.string !== t && BindTypes.blob !== t && BindTypes.null !== t) toss3(\"Invalid value type for bindAsBlob()\");\n\t\t\t\t\treturn bindOne(this, ndx, BindTypes.blob, arg);\n\t\t\t\t},\n\t\t\t\tstep: function() {\n\t\t\t\t\taffirmNotLockedByExec(this, \"step()\");\n\t\t\t\t\tconst rc = capi.sqlite3_step(affirmStmtOpen(this).pointer);\n\t\t\t\t\tswitch (rc) {\n\t\t\t\t\t\tcase capi.SQLITE_DONE:\n\t\t\t\t\t\t\t__stmtMayGet.delete(this);\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\tcase capi.SQLITE_ROW:\n\t\t\t\t\t\t\t__stmtMayGet.add(this);\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t__stmtMayGet.delete(this);\n\t\t\t\t\t\t\tsqlite3.config.warn(\"sqlite3_step() rc=\", rc, capi.sqlite3_js_rc_str(rc), \"SQL =\", capi.sqlite3_sql(this.pointer));\n\t\t\t\t\t\t\tDB.checkRc(this.db.pointer, rc);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tstepReset: function() {\n\t\t\t\t\tthis.step();\n\t\t\t\t\treturn this.reset();\n\t\t\t\t},\n\t\t\t\tstepFinalize: function() {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst rc = this.step();\n\t\t\t\t\t\tthis.reset();\n\t\t\t\t\t\treturn rc;\n\t\t\t\t\t} finally {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tthis.finalize();\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tget: function(ndx, asType) {\n\t\t\t\t\tif (!__stmtMayGet.has(affirmStmtOpen(this))) toss3(\"Stmt.step() has not (recently) returned true.\");\n\t\t\t\t\tif (Array.isArray(ndx)) {\n\t\t\t\t\t\tlet i = 0;\n\t\t\t\t\t\tconst n = this.columnCount;\n\t\t\t\t\t\twhile (i < n) ndx[i] = this.get(i++);\n\t\t\t\t\t\treturn ndx;\n\t\t\t\t\t} else if (ndx && \"object\" === typeof ndx) {\n\t\t\t\t\t\tlet i = 0;\n\t\t\t\t\t\tconst n = this.columnCount;\n\t\t\t\t\t\twhile (i < n) ndx[capi.sqlite3_column_name(this.pointer, i)] = this.get(i++);\n\t\t\t\t\t\treturn ndx;\n\t\t\t\t\t}\n\t\t\t\t\taffirmColIndex(this, ndx);\n\t\t\t\t\tswitch (void 0 === asType ? capi.sqlite3_column_type(this.pointer, ndx) : asType) {\n\t\t\t\t\t\tcase capi.SQLITE_NULL: return null;\n\t\t\t\t\t\tcase capi.SQLITE_INTEGER: if (wasm.bigIntEnabled) {\n\t\t\t\t\t\t\tconst rc = capi.sqlite3_column_int64(this.pointer, ndx);\n\t\t\t\t\t\t\tif (rc >= Number.MIN_SAFE_INTEGER && rc <= Number.MAX_SAFE_INTEGER) return Number(rc).valueOf();\n\t\t\t\t\t\t\treturn rc;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst rc = capi.sqlite3_column_double(this.pointer, ndx);\n\t\t\t\t\t\t\tif (rc > Number.MAX_SAFE_INTEGER || rc < Number.MIN_SAFE_INTEGER) toss3(\"Integer is out of range for JS integer range: \" + rc);\n\t\t\t\t\t\t\treturn util.isInt32(rc) ? rc | 0 : rc;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase capi.SQLITE_FLOAT: return capi.sqlite3_column_double(this.pointer, ndx);\n\t\t\t\t\t\tcase capi.SQLITE_TEXT: return capi.sqlite3_column_text(this.pointer, ndx);\n\t\t\t\t\t\tcase capi.SQLITE_BLOB: {\n\t\t\t\t\t\t\tconst n = capi.sqlite3_column_bytes(this.pointer, ndx), ptr = capi.sqlite3_column_blob(this.pointer, ndx), rc = new Uint8Array(n);\n\t\t\t\t\t\t\tif (n) {\n\t\t\t\t\t\t\t\trc.set(wasm.heap8u().slice(Number(ptr), Number(ptr) + n), 0);\n\t\t\t\t\t\t\t\tif (this.db._blobXfer instanceof Array) this.db._blobXfer.push(rc.buffer);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn rc;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdefault: toss3(\"Don't know how to translate\", \"type of result column #\" + ndx + \".\");\n\t\t\t\t\t}\n\t\t\t\t\ttoss3(\"Not reached.\");\n\t\t\t\t},\n\t\t\t\tgetInt: function(ndx) {\n\t\t\t\t\treturn this.get(ndx, capi.SQLITE_INTEGER);\n\t\t\t\t},\n\t\t\t\tgetFloat: function(ndx) {\n\t\t\t\t\treturn this.get(ndx, capi.SQLITE_FLOAT);\n\t\t\t\t},\n\t\t\t\tgetString: function(ndx) {\n\t\t\t\t\treturn this.get(ndx, capi.SQLITE_TEXT);\n\t\t\t\t},\n\t\t\t\tgetBlob: function(ndx) {\n\t\t\t\t\treturn this.get(ndx, capi.SQLITE_BLOB);\n\t\t\t\t},\n\t\t\t\tgetJSON: function(ndx) {\n\t\t\t\t\tconst s = this.get(ndx, capi.SQLITE_STRING);\n\t\t\t\t\treturn null === s ? s : JSON.parse(s);\n\t\t\t\t},\n\t\t\t\tgetColumnName: function(ndx) {\n\t\t\t\t\treturn capi.sqlite3_column_name(affirmColIndex(affirmStmtOpen(this), ndx).pointer, ndx);\n\t\t\t\t},\n\t\t\t\tgetColumnNames: function(tgt = []) {\n\t\t\t\t\taffirmColIndex(affirmStmtOpen(this), 0);\n\t\t\t\t\tconst n = this.columnCount;\n\t\t\t\t\tfor (let i = 0; i < n; ++i) tgt.push(capi.sqlite3_column_name(this.pointer, i));\n\t\t\t\t\treturn tgt;\n\t\t\t\t},\n\t\t\t\tgetParamIndex: function(name) {\n\t\t\t\t\treturn affirmStmtOpen(this).parameterCount ? capi.sqlite3_bind_parameter_index(this.pointer, name) : void 0;\n\t\t\t\t},\n\t\t\t\tgetParamName: function(ndx) {\n\t\t\t\t\treturn affirmStmtOpen(this).parameterCount ? capi.sqlite3_bind_parameter_name(this.pointer, ndx) : void 0;\n\t\t\t\t},\n\t\t\t\tisBusy: function() {\n\t\t\t\t\treturn 0 !== capi.sqlite3_stmt_busy(affirmStmtOpen(this));\n\t\t\t\t},\n\t\t\t\tisReadOnly: function() {\n\t\t\t\t\treturn 0 !== capi.sqlite3_stmt_readonly(affirmStmtOpen(this));\n\t\t\t\t}\n\t\t\t};\n\t\t\t{\n\t\t\t\tconst prop = {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tget: function() {\n\t\t\t\t\t\treturn __ptrMap.get(this);\n\t\t\t\t\t},\n\t\t\t\t\tset: () => toss3(\"The pointer property is read-only.\")\n\t\t\t\t};\n\t\t\t\tObject.defineProperty(Stmt.prototype, \"pointer\", prop);\n\t\t\t\tObject.defineProperty(DB.prototype, \"pointer\", prop);\n\t\t\t}\n\t\t\t/**\n\t\t\tStmt.columnCount is an interceptor for sqlite3_column_count().\n\t\t\t\n\t\t\tThis requires an unfortunate performance hit compared to caching\n\t\t\tcolumnCount when the Stmt is created/prepared (as was done in\n\t\t\tSQLite <=3.42.0), but is necessary in order to handle certain\n\t\t\tcorner cases, as described in\n\t\t\thttps://sqlite.org/forum/forumpost/7774b773937cbe0a.\n\t\t\t*/\n\t\t\tObject.defineProperty(Stmt.prototype, \"columnCount\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tget: function() {\n\t\t\t\t\treturn capi.sqlite3_column_count(this.pointer);\n\t\t\t\t},\n\t\t\t\tset: () => toss3(\"The columnCount property is read-only.\")\n\t\t\t});\n\t\t\tObject.defineProperty(Stmt.prototype, \"parameterCount\", {\n\t\t\t\tenumerable: false,\n\t\t\t\tget: function() {\n\t\t\t\t\treturn capi.sqlite3_bind_parameter_count(this.pointer);\n\t\t\t\t},\n\t\t\t\tset: () => toss3(\"The parameterCount property is read-only.\")\n\t\t\t});\n\t\t\t/**\n\t\t\tThe Stmt counterpart of oo1.DB.wrapHandle(), this creates a Stmt\n\t\t\tinstance which wraps a WASM (sqlite3_stmt*) in the oo1 API,\n\t\t\toptionally with or without taking over ownership of that pointer.\n\t\t\t\n\t\t\tThe first argument must be an oo1.DB instance[^1].\n\t\t\t\n\t\t\tThe second argument must be a valid WASM (sqlite3_stmt*), as\n\t\t\tproduced by sqlite3_prepare_v2() and sqlite3_prepare_v3().\n\t\t\t\n\t\t\tThe third argument, defaulting to false, specifies whether the\n\t\t\treturned Stmt object takes over ownership of the underlying\n\t\t\t(sqlite3_stmt*). If true, the returned object's finalize() method\n\t\t\twill finalize that handle, else it will not. If it is false,\n\t\t\townership of pStmt is unchanged and pStmt MUST outlive the\n\t\t\treturned object or results are undefined.\n\t\t\t\n\t\t\tThis function throws if the arguments are invalid. On success it\n\t\t\treturns a new Stmt object which wraps the given statement\n\t\t\tpointer.\n\t\t\t\n\t\t\tLike all Stmt objects, the finalize() method must eventually be\n\t\t\tcalled on the returned object to free up internal resources,\n\t\t\tregardless of whether this function's third argument is true or\n\t\t\tnot.\n\t\t\t\n\t\t\t[^1]: The first argument cannot be a (sqlite3*) because the\n\t\t\tresulting Stmt object requires a parent DB object. It is not yet\n\t\t\tdetermined whether it would be of general benefit to refactor the\n\t\t\tDB/Stmt pair internals to communicate in terms of the underlying\n\t\t\t(sqlite3*) rather than a DB object. If so, we could laxen the\n\t\t\tfirst argument's requirement and allow an (sqlite3*). Because\n\t\t\tDB.wrapHandle() enables multiple DB objects to proxy the same\n\t\t\t(sqlite3*), we cannot unambiguously translate the first arugment\n\t\t\tfrom (sqlite3*) to DB instances for us with this function's first\n\t\t\targument.\n\t\t\t*/\n\t\t\tStmt.wrapHandle = function(oo1db, pStmt, takeOwnership = false) {\n\t\t\t\tif (!(oo1db instanceof DB) || !oo1db.pointer) throw new sqlite3.SQLite3Error(sqlite3.SQLITE_MISUSE, \"First argument must be an opened sqlite3.oo1.DB instance\");\n\t\t\t\tif (!pStmt || !wasm.isPtr(pStmt)) throw new sqlite3.SQLite3Error(sqlite3.SQLITE_MISUSE, \"Second argument must be a WASM sqlite3_stmt pointer\");\n\t\t\t\treturn new Stmt(oo1db, pStmt, BindTypes, !!takeOwnership);\n\t\t\t};\n\t\t\t/** The OO API's public namespace. */\n\t\t\tsqlite3.oo1 = {\n\t\t\t\tDB,\n\t\t\t\tStmt\n\t\t\t};\n\t\t});\n\t\t/**\n\t\t2022-07-22\n\t\t\n\t\tThe author disclaims copyright to this source code.  In place of a\n\t\tlegal notice, here is a blessing:\n\t\t\n\t\t*   May you do good and not evil.\n\t\t*   May you find forgiveness for yourself and forgive others.\n\t\t*   May you share freely, never taking more than you give.\n\t\t\n\t\t***********************************************************************\n\t\t\n\t\tThis file implements the initializer for SQLite's \"Worker API #1\", a\n\t\tvery basic DB access API intended to be scripted from a main window\n\t\tthread via Worker-style messages. Because of limitations in that\n\t\ttype of communication, this API is minimalistic and only capable of\n\t\tserving relatively basic DB requests (e.g. it cannot process nested\n\t\tquery loops concurrently).\n\t\t\n\t\tThis file requires that the core C-style sqlite3 API and OO API #1\n\t\thave been loaded.\n\t\t*/\n\t\t/**\n\t\tsqlite3.initWorker1API() implements a Worker-based wrapper around\n\t\tSQLite3 OO API #1, colloquially known as \"Worker API #1\".\n\t\t\n\t\tIn order to permit this API to be loaded in worker threads without\n\t\tautomatically registering onmessage handlers, initializing the\n\t\tworker API requires calling initWorker1API(). If this function is\n\t\tcalled from a non-worker thread then it throws an exception.  It\n\t\tmust only be called once per Worker.\n\t\t\n\t\tWhen initialized, it installs message listeners to receive Worker\n\t\tmessages and then it posts a message in the form:\n\t\t\n\t\t```\n\t\t{type:'sqlite3-api', result:'worker1-ready'}\n\t\t```\n\t\t\n\t\tto let the client know that it has been initialized. Clients may\n\t\toptionally depend on this function not returning until\n\t\tinitialization is complete, as the initialization is synchronous.\n\t\tIn some contexts, however, listening for the above message is\n\t\ta better fit.\n\t\t\n\t\tNote that the worker-based interface can be slightly quirky because\n\t\tof its async nature. In particular, any number of messages may be posted\n\t\tto the worker before it starts handling any of them. If, e.g., an\n\t\t\"open\" operation fails, any subsequent messages will fail. The\n\t\tPromise-based wrapper for this API (`sqlite3-worker1-promiser.js`)\n\t\tis more comfortable to use in that regard.\n\t\t\n\t\tThe documentation for the input and output worker messages for\n\t\tthis API follows...\n\t\t\n\t\t====================================================================\n\t\tCommon message format...\n\t\t\n\t\tEach message posted to the worker has an operation-independent\n\t\tenvelope and operation-dependent arguments:\n\t\t\n\t\t```\n\t\t{\n\t\ttype: string, // one of: 'open', 'close', 'exec', 'export', 'config-get'\n\t\t\n\t\tmessageId: OPTIONAL arbitrary value. The worker will copy it as-is\n\t\tinto response messages to assist in client-side dispatching.\n\t\t\n\t\tdbId: a db identifier string (returned by 'open') which tells the\n\t\toperation which database instance to work on. If not provided, the\n\t\tfirst-opened db is used. This is an \"opaque\" value, with no\n\t\tinherently useful syntax or information. Its value is subject to\n\t\tchange with any given build of this API and cannot be used as a\n\t\tbasis for anything useful beyond its one intended purpose.\n\t\t\n\t\targs: ...operation-dependent arguments...\n\t\t\n\t\t// the framework may add other properties for testing or debugging\n\t\t// purposes.\n\t\t\n\t\t}\n\t\t```\n\t\t\n\t\tResponse messages, posted back to the main thread, look like:\n\t\t\n\t\t```\n\t\t{\n\t\ttype: string. Same as above except for error responses, which have the type\n\t\t'error',\n\t\t\n\t\tmessageId: same value, if any, provided by the inbound message\n\t\t\n\t\tdbId: the id of the db which was operated on, if any, as returned\n\t\tby the corresponding 'open' operation.\n\t\t\n\t\tresult: ...operation-dependent result...\n\t\t\n\t\t}\n\t\t```\n\t\t\n\t\t====================================================================\n\t\tError responses\n\t\t\n\t\tErrors are reported messages in an operation-independent format:\n\t\t\n\t\t```\n\t\t{\n\t\ttype: \"error\",\n\t\t\n\t\tmessageId: ...as above...,\n\t\t\n\t\tdbId: ...as above...\n\t\t\n\t\tresult: {\n\t\t\n\t\toperation: type of the triggering operation: 'open', 'close', ...\n\t\t\n\t\tmessage: ...error message text...\n\t\t\n\t\terrorClass: string. The ErrorClass.name property from the thrown exception.\n\t\t\n\t\tinput: the message object which triggered the error.\n\t\t\n\t\tstack: _if available_, a stack trace array.\n\t\t\n\t\t}\n\t\t\n\t\t}\n\t\t```\n\t\t\n\t\t\n\t\t====================================================================\n\t\t\"config-get\"\n\t\t\n\t\tThis operation fetches the serializable parts of the sqlite3 API\n\t\tconfiguration.\n\t\t\n\t\tMessage format:\n\t\t\n\t\t```\n\t\t{\n\t\ttype: \"config-get\",\n\t\tmessageId: ...as above...,\n\t\targs: currently ignored and may be elided.\n\t\t}\n\t\t```\n\t\t\n\t\tResponse:\n\t\t\n\t\t```\n\t\t{\n\t\ttype: \"config-get\",\n\t\tmessageId: ...as above...,\n\t\tresult: {\n\t\t\n\t\tversion: sqlite3.version object\n\t\t\n\t\tbigIntEnabled: bool. True if BigInt support is enabled.\n\t\t\n\t\tvfsList: result of sqlite3.capi.sqlite3_js_vfs_list()\n\t\t}\n\t\t}\n\t\t```\n\t\t\n\t\t\n\t\t====================================================================\n\t\t\"open\" a database\n\t\t\n\t\tMessage format:\n\t\t\n\t\t```\n\t\t{\n\t\ttype: \"open\",\n\t\tmessageId: ...as above...,\n\t\targs:{\n\t\t\n\t\tfilename [=\":memory:\" or \"\" (unspecified)]: the db filename.\n\t\tSee the sqlite3.oo1.DB constructor for peculiarities and\n\t\ttransformations,\n\t\t\n\t\tvfs: sqlite3_vfs name. Ignored if filename is \":memory:\" or \"\".\n\t\tThis may change how the given filename is resolved.\n\t\t}\n\t\t}\n\t\t```\n\t\t\n\t\tResponse:\n\t\t\n\t\t```\n\t\t{\n\t\ttype: \"open\",\n\t\tmessageId: ...as above...,\n\t\tresult: {\n\t\tfilename: db filename, possibly differing from the input.\n\t\t\n\t\tdbId: an opaque ID value which must be passed in the message\n\t\tenvelope to other calls in this API to tell them which db to\n\t\tuse. If it is not provided to future calls, they will default to\n\t\toperating on the least-recently-opened db. This property is, for\n\t\tAPI consistency's sake, also part of the containing message\n\t\tenvelope.  Only the `open` operation includes it in the `result`\n\t\tproperty.\n\t\t\n\t\tpersistent: true if the given filename resides in the\n\t\tknown-persistent storage, else false.\n\t\t\n\t\tvfs: name of the VFS the \"main\" db is using.\n\t\t}\n\t\t}\n\t\t```\n\t\t\n\t\t====================================================================\n\t\t\"close\" a database\n\t\t\n\t\tMessage format:\n\t\t\n\t\t```\n\t\t{\n\t\ttype: \"close\",\n\t\tmessageId: ...as above...\n\t\tdbId: ...as above...\n\t\targs: OPTIONAL {unlink: boolean}\n\t\t}\n\t\t```\n\t\t\n\t\tIf the `dbId` does not refer to an opened ID, this is a no-op. If\n\t\tthe `args` object contains a truthy `unlink` value then the database\n\t\twill be unlinked (deleted) after closing it. The inability to close a\n\t\tdb (because it's not opened) or delete its file does not trigger an\n\t\terror.\n\t\t\n\t\tResponse:\n\t\t\n\t\t```\n\t\t{\n\t\ttype: \"close\",\n\t\tmessageId: ...as above...,\n\t\tresult: {\n\t\t\n\t\tfilename: filename of closed db, or undefined if no db was closed\n\t\t\n\t\t}\n\t\t}\n\t\t```\n\t\t\n\t\t====================================================================\n\t\t\"exec\" SQL\n\t\t\n\t\tAll SQL execution is processed through the exec operation. It offers\n\t\tmost of the features of the oo1.DB.exec() method, with a few limitations\n\t\timposed by the state having to cross thread boundaries.\n\t\t\n\t\tMessage format:\n\t\t\n\t\t```\n\t\t{\n\t\ttype: \"exec\",\n\t\tmessageId: ...as above...\n\t\tdbId: ...as above...\n\t\targs: string (SQL) or {... see below ...}\n\t\t}\n\t\t```\n\t\t\n\t\tResponse:\n\t\t\n\t\t```\n\t\t{\n\t\ttype: \"exec\",\n\t\tmessageId: ...as above...,\n\t\tdbId: ...as above...\n\t\tresult: {\n\t\tinput arguments, possibly modified. See below.\n\t\t}\n\t\t}\n\t\t```\n\t\t\n\t\tThe arguments are in the same form accepted by oo1.DB.exec(), with\n\t\tthe exceptions noted below.\n\t\t\n\t\tIf `args.countChanges` (added in version 3.43) is truthy then the\n\t\t`result` property contained by the returned object will have a\n\t\t`changeCount` property which holds the number of changes made by the\n\t\tprovided SQL. Because the SQL may contain an arbitrary number of\n\t\tstatements, the `changeCount` is calculated by calling\n\t\t`sqlite3_total_changes()` before and after the SQL is evaluated. If\n\t\tthe value of `countChanges` is 64 then the `changeCount` property\n\t\twill be returned as a 64-bit integer in the form of a BigInt (noting\n\t\tthat that will trigger an exception if used in a BigInt-incapable\n\t\tbuild).  In the latter case, the number of changes is calculated by\n\t\tcalling `sqlite3_total_changes64()` before and after the SQL is\n\t\tevaluated.\n\t\t\n\t\tIf the `args.lastInsertRowId` (added in version 3.50.0) is truthy\n\t\tthen the `result` property contained by the returned object will\n\t\thave a `lastInsertRowId` will hold a BigInt-type value corresponding\n\t\tto the result of sqlite3_last_insert_rowid(). This value is only\n\t\tfetched once, after the SQL is run, regardless of how many\n\t\tstatements the SQL contains. This API has no idea whether the SQL\n\t\tcontains any INSERTs, so it is up to the client to apply/rely on\n\t\tthis property only when it makes sense to do so.\n\t\t\n\t\tA function-type args.callback property cannot cross\n\t\tthe window/Worker boundary, so is not useful here. If\n\t\targs.callback is a string then it is assumed to be a\n\t\tmessage type key, in which case a callback function will be\n\t\tapplied which posts each row result via:\n\t\t\n\t\tpostMessage({type: thatKeyType,\n\t\trowNumber: 1-based-#,\n\t\trow: theRow,\n\t\tcolumnNames: anArray\n\t\t})\n\t\t\n\t\tAnd, at the end of the result set (whether or not any result rows\n\t\twere produced), it will post an identical message with\n\t\t(row=undefined, rowNumber=null) to alert the caller than the result\n\t\tset is completed. Note that a row value of `null` is a legal row\n\t\tresult for certain arg.rowMode values.\n\t\t\n\t\t(Design note: we don't use (row=undefined, rowNumber=undefined) to\n\t\tindicate end-of-results because fetching those would be\n\t\tindistinguishable from fetching from an empty object unless the\n\t\tclient used hasOwnProperty() (or similar) to distinguish \"missing\n\t\tproperty\" from \"property with the undefined value\".  Similarly,\n\t\t`null` is a legal value for `row` in some case , whereas the db\n\t\tlayer won't emit a result value of `undefined`.)\n\t\t\n\t\tThe callback proxy must not recurse into this interface. An exec()\n\t\tcall will tie up the Worker thread, causing any recursion attempt\n\t\tto wait until the first exec() is completed.\n\t\t\n\t\tThe response is the input options object (or a synthesized one if\n\t\tpassed only a string), noting that options.resultRows and\n\t\toptions.columnNames may be populated by the call to db.exec().\n\t\t\n\t\t\n\t\t====================================================================\n\t\t\"export\" the current db\n\t\t\n\t\tTo export the underlying database as a byte array...\n\t\t\n\t\tMessage format:\n\t\t\n\t\t```\n\t\t{\n\t\ttype: \"export\",\n\t\tmessageId: ...as above...,\n\t\tdbId: ...as above...\n\t\t}\n\t\t```\n\t\t\n\t\tResponse:\n\t\t\n\t\t```\n\t\t{\n\t\ttype: \"export\",\n\t\tmessageId: ...as above...,\n\t\tdbId: ...as above...\n\t\tresult: {\n\t\tbyteArray: Uint8Array (as per sqlite3_js_db_export()),\n\t\tfilename: the db filename,\n\t\tmimetype: \"application/x-sqlite3\"\n\t\t}\n\t\t}\n\t\t```\n\t\t\n\t\t*/\n\t\tglobalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3) {\n\t\t\tconst util = sqlite3.util;\n\t\t\tsqlite3.initWorker1API = function() {\n\t\t\t\t\"use strict\";\n\t\t\t\tconst toss = (...args) => {\n\t\t\t\t\tthrow new Error(args.join(\" \"));\n\t\t\t\t};\n\t\t\t\tif (!(globalThis.WorkerGlobalScope instanceof Function)) toss(\"initWorker1API() must be run from a Worker thread.\");\n\t\t\t\tconst sqlite3 = this.sqlite3 || toss(\"Missing this.sqlite3 object.\");\n\t\t\t\tconst DB = sqlite3.oo1.DB;\n\t\t\t\t/**\n\t\t\t\tReturns the app-wide unique ID for the given db, creating one if\n\t\t\t\tneeded.\n\t\t\t\t*/\n\t\t\t\tconst getDbId = function(db) {\n\t\t\t\t\tlet id = wState.idMap.get(db);\n\t\t\t\t\tif (id) return id;\n\t\t\t\t\tid = \"db#\" + ++wState.idSeq + \":\" + Math.floor(Math.random() * 1e8) + \":\" + Math.floor(Math.random() * 1e8);\n\t\t\t\t\t/** ^^^ can't simply use db.pointer b/c closing/opening may re-use\n\t\t\t\t\tthe same address, which could map pending messages to a wrong\n\t\t\t\t\tinstance.\n\t\t\t\t\t\n\t\t\t\t\t2025-07: https://github.com/sqlite/sqlite-wasm/issues/113\n\t\t\t\t\tdemonstrates that two Worker1s can end up with the same IDs,\n\t\t\t\t\tdespite using different instances of the library, so we need\n\t\t\t\t\tto add some randomness to the IDs instead of relying on the\n\t\t\t\t\tpointer addresses.\n\t\t\t\t\t*/\n\t\t\t\t\twState.idMap.set(db, id);\n\t\t\t\t\treturn id;\n\t\t\t\t};\n\t\t\t\t/**\n\t\t\t\tInternal helper for managing Worker-level state.\n\t\t\t\t*/\n\t\t\t\tconst wState = {\n\t\t\t\t\tdbList: [],\n\t\t\t\t\tidSeq: 0,\n\t\t\t\t\tidMap: /* @__PURE__ */ new WeakMap(),\n\t\t\t\t\txfer: [],\n\t\t\t\t\topen: function(opt) {\n\t\t\t\t\t\tconst db = new DB(opt);\n\t\t\t\t\t\tthis.dbs[getDbId(db)] = db;\n\t\t\t\t\t\tif (this.dbList.indexOf(db) < 0) this.dbList.push(db);\n\t\t\t\t\t\treturn db;\n\t\t\t\t\t},\n\t\t\t\t\tclose: function(db, alsoUnlink) {\n\t\t\t\t\t\tif (db) {\n\t\t\t\t\t\t\tdelete this.dbs[getDbId(db)];\n\t\t\t\t\t\t\tconst filename = db.filename;\n\t\t\t\t\t\t\tconst pVfs = util.sqlite3__wasm_db_vfs(db.pointer, 0);\n\t\t\t\t\t\t\tdb.close();\n\t\t\t\t\t\t\tconst ddNdx = this.dbList.indexOf(db);\n\t\t\t\t\t\t\tif (ddNdx >= 0) this.dbList.splice(ddNdx, 1);\n\t\t\t\t\t\t\tif (alsoUnlink && filename && pVfs) util.sqlite3__wasm_vfs_unlink(pVfs, filename);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tpost: function(msg, xferList) {\n\t\t\t\t\t\tif (xferList && xferList.length) {\n\t\t\t\t\t\t\tglobalThis.postMessage(msg, Array.from(xferList));\n\t\t\t\t\t\t\txferList.length = 0;\n\t\t\t\t\t\t} else globalThis.postMessage(msg);\n\t\t\t\t\t},\n\t\t\t\t\tdbs: Object.create(null),\n\t\t\t\t\tgetDb: function(id, require = true) {\n\t\t\t\t\t\treturn this.dbs[id] || (require ? toss(\"Unknown (or closed) DB ID:\", id) : void 0);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\t/** Throws if the given db is falsy or not opened, else returns its\n\t\t\t\targument. */\n\t\t\t\tconst affirmDbOpen = function(db = wState.dbList[0]) {\n\t\t\t\t\treturn db && db.pointer ? db : toss(\"DB is not opened.\");\n\t\t\t\t};\n\t\t\t\t/** Extract dbId from the given message payload. */\n\t\t\t\tconst getMsgDb = function(msgData, affirmExists = true) {\n\t\t\t\t\tconst db = wState.getDb(msgData.dbId, false) || wState.dbList[0];\n\t\t\t\t\treturn affirmExists ? affirmDbOpen(db) : db;\n\t\t\t\t};\n\t\t\t\tconst getDefaultDbId = function() {\n\t\t\t\t\treturn wState.dbList[0] && getDbId(wState.dbList[0]);\n\t\t\t\t};\n\t\t\t\t/**\n\t\t\t\tA level of \"organizational abstraction\" for the Worker1\n\t\t\t\tAPI. Each method in this object must map directly to a Worker1\n\t\t\t\tmessage type key. The onmessage() dispatcher attempts to\n\t\t\t\tdispatch all inbound messages to a method of this object,\n\t\t\t\tpassing it the event.data part of the inbound event object. All\n\t\t\t\tmethods must return a plain Object containing any result\n\t\t\t\tstate, which the dispatcher may amend. All methods must throw\n\t\t\t\ton error.\n\t\t\t\t*/\n\t\t\t\tconst wMsgHandler = {\n\t\t\t\t\topen: function(ev) {\n\t\t\t\t\t\tconst oargs = Object.create(null), args = ev.args || Object.create(null);\n\t\t\t\t\t\tif (args.simulateError) toss(\"Throwing because of simulateError flag.\");\n\t\t\t\t\t\tconst rc = Object.create(null);\n\t\t\t\t\t\toargs.vfs = args.vfs;\n\t\t\t\t\t\toargs.filename = args.filename || \"\";\n\t\t\t\t\t\tconst db = wState.open(oargs);\n\t\t\t\t\t\trc.filename = db.filename;\n\t\t\t\t\t\trc.persistent = !!sqlite3.capi.sqlite3_js_db_uses_vfs(db.pointer, \"opfs\");\n\t\t\t\t\t\trc.dbId = getDbId(db);\n\t\t\t\t\t\trc.vfs = db.dbVfsName();\n\t\t\t\t\t\treturn rc;\n\t\t\t\t\t},\n\t\t\t\t\tclose: function(ev) {\n\t\t\t\t\t\tconst db = getMsgDb(ev, false);\n\t\t\t\t\t\tconst response = { filename: db && db.filename };\n\t\t\t\t\t\tif (db) {\n\t\t\t\t\t\t\tconst doUnlink = ev.args && \"object\" === typeof ev.args ? !!ev.args.unlink : false;\n\t\t\t\t\t\t\twState.close(db, doUnlink);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn response;\n\t\t\t\t\t},\n\t\t\t\t\texec: function(ev) {\n\t\t\t\t\t\tconst rc = \"string\" === typeof ev.args ? { sql: ev.args } : ev.args || Object.create(null);\n\t\t\t\t\t\tif (\"stmt\" === rc.rowMode) toss(\"Invalid rowMode for 'exec': stmt mode\", \"does not work in the Worker API.\");\n\t\t\t\t\t\telse if (!rc.sql) toss(\"'exec' requires input SQL.\");\n\t\t\t\t\t\tconst db = getMsgDb(ev);\n\t\t\t\t\t\tif (rc.callback || Array.isArray(rc.resultRows)) db._blobXfer = wState.xfer;\n\t\t\t\t\t\tconst theCallback = rc.callback;\n\t\t\t\t\t\tlet rowNumber = 0;\n\t\t\t\t\t\tconst hadColNames = !!rc.columnNames;\n\t\t\t\t\t\tif (\"string\" === typeof theCallback) {\n\t\t\t\t\t\t\tif (!hadColNames) rc.columnNames = [];\n\t\t\t\t\t\t\trc.callback = function(row, stmt) {\n\t\t\t\t\t\t\t\twState.post({\n\t\t\t\t\t\t\t\t\ttype: theCallback,\n\t\t\t\t\t\t\t\t\tcolumnNames: rc.columnNames,\n\t\t\t\t\t\t\t\t\trowNumber: ++rowNumber,\n\t\t\t\t\t\t\t\t\trow\n\t\t\t\t\t\t\t\t}, wState.xfer);\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst changeCount = !!rc.countChanges ? db.changes(true, 64 === rc.countChanges) : void 0;\n\t\t\t\t\t\t\tdb.exec(rc);\n\t\t\t\t\t\t\tif (void 0 !== changeCount) rc.changeCount = db.changes(true, 64 === rc.countChanges) - changeCount;\n\t\t\t\t\t\t\tconst lastInsertRowId = !!rc.lastInsertRowId ? sqlite3.capi.sqlite3_last_insert_rowid(db) : void 0;\n\t\t\t\t\t\t\tif (void 0 !== lastInsertRowId) rc.lastInsertRowId = lastInsertRowId;\n\t\t\t\t\t\t\tif (rc.callback instanceof Function) {\n\t\t\t\t\t\t\t\trc.callback = theCallback;\n\t\t\t\t\t\t\t\twState.post({\n\t\t\t\t\t\t\t\t\ttype: theCallback,\n\t\t\t\t\t\t\t\t\tcolumnNames: rc.columnNames,\n\t\t\t\t\t\t\t\t\trowNumber: null,\n\t\t\t\t\t\t\t\t\trow: void 0\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tdelete db._blobXfer;\n\t\t\t\t\t\t\tif (rc.callback) rc.callback = theCallback;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn rc;\n\t\t\t\t\t},\n\t\t\t\t\t\"config-get\": function() {\n\t\t\t\t\t\tconst rc = Object.create(null), src = sqlite3.config;\n\t\t\t\t\t\t[\"bigIntEnabled\"].forEach(function(k) {\n\t\t\t\t\t\t\tif (Object.getOwnPropertyDescriptor(src, k)) rc[k] = src[k];\n\t\t\t\t\t\t});\n\t\t\t\t\t\trc.version = sqlite3.version;\n\t\t\t\t\t\trc.vfsList = sqlite3.capi.sqlite3_js_vfs_list();\n\t\t\t\t\t\treturn rc;\n\t\t\t\t\t},\n\t\t\t\t\texport: function(ev) {\n\t\t\t\t\t\tconst db = getMsgDb(ev);\n\t\t\t\t\t\tconst response = {\n\t\t\t\t\t\t\tbyteArray: sqlite3.capi.sqlite3_js_db_export(db.pointer),\n\t\t\t\t\t\t\tfilename: db.filename,\n\t\t\t\t\t\t\tmimetype: \"application/x-sqlite3\"\n\t\t\t\t\t\t};\n\t\t\t\t\t\twState.xfer.push(response.byteArray.buffer);\n\t\t\t\t\t\treturn response;\n\t\t\t\t\t},\n\t\t\t\t\ttoss: function(ev) {\n\t\t\t\t\t\ttoss(\"Testing worker exception\");\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tglobalThis.onmessage = async function(ev) {\n\t\t\t\t\tev = ev.data;\n\t\t\t\t\tlet result, dbId = ev.dbId, evType = ev.type;\n\t\t\t\t\tconst arrivalTime = performance.now();\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (wMsgHandler.hasOwnProperty(evType) && wMsgHandler[evType] instanceof Function) result = await wMsgHandler[evType](ev);\n\t\t\t\t\t\telse toss(\"Unknown db worker message type:\", ev.type);\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tevType = \"error\";\n\t\t\t\t\t\tresult = {\n\t\t\t\t\t\t\toperation: ev.type,\n\t\t\t\t\t\t\tmessage: err.message,\n\t\t\t\t\t\t\terrorClass: err.name,\n\t\t\t\t\t\t\tinput: ev\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (err.stack) result.stack = \"string\" === typeof err.stack ? err.stack.split(/\\n\\s*/) : err.stack;\n\t\t\t\t\t}\n\t\t\t\t\tif (!dbId) dbId = result.dbId || getDefaultDbId();\n\t\t\t\t\twState.post({\n\t\t\t\t\t\ttype: evType,\n\t\t\t\t\t\tdbId,\n\t\t\t\t\t\tmessageId: ev.messageId,\n\t\t\t\t\t\tworkerReceivedTime: arrivalTime,\n\t\t\t\t\t\tworkerRespondTime: performance.now(),\n\t\t\t\t\t\tdepartureTime: ev.departureTime,\n\t\t\t\t\t\tresult\n\t\t\t\t\t}, wState.xfer);\n\t\t\t\t};\n\t\t\t\tglobalThis.postMessage({\n\t\t\t\t\ttype: \"sqlite3-api\",\n\t\t\t\t\tresult: \"worker1-ready\"\n\t\t\t\t});\n\t\t\t}.bind({ sqlite3 });\n\t\t});\n\t\tglobalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3) {\n\t\t\tconst wasm = sqlite3.wasm, capi = sqlite3.capi, toss = sqlite3.util.toss3;\n\t\t\tconst vfs = Object.create(null);\n\t\t\tsqlite3.vfs = vfs;\n\t\t\t/**\n\t\t\tUses sqlite3_vfs_register() to register this\n\t\t\tsqlite3.capi.sqlite3_vfs instance. This object must have already\n\t\t\tbeen filled out properly. If the first argument is truthy, the\n\t\t\tVFS is registered as the default VFS, else it is not.\n\t\t\t\n\t\t\tOn success, returns this object. Throws on error.\n\t\t\t*/\n\t\t\tcapi.sqlite3_vfs.prototype.registerVfs = function(asDefault = false) {\n\t\t\t\tif (!(this instanceof sqlite3.capi.sqlite3_vfs)) toss(\"Expecting a sqlite3_vfs-type argument.\");\n\t\t\t\tconst rc = capi.sqlite3_vfs_register(this, asDefault ? 1 : 0);\n\t\t\t\tif (rc) toss(\"sqlite3_vfs_register(\", this, \") failed with rc\", rc);\n\t\t\t\tif (this.pointer !== capi.sqlite3_vfs_find(this.$zName)) toss(\"BUG: sqlite3_vfs_find(vfs.$zName) failed for just-installed VFS\", this);\n\t\t\t\treturn this;\n\t\t\t};\n\t\t\t/**\n\t\t\tA wrapper for\n\t\t\tsqlite3.StructBinder.StructType.prototype.installMethods() or\n\t\t\tregisterVfs() to reduce installation of a VFS and/or its I/O\n\t\t\tmethods to a single call.\n\t\t\t\n\t\t\tAccepts an object which contains the properties \"io\" and/or\n\t\t\t\"vfs\", each of which is itself an object with following properties:\n\t\t\t\n\t\t\t- `struct`: an sqlite3.StructBinder.StructType-type struct. This\n\t\t\tmust be a populated (except for the methods) object of type\n\t\t\tsqlite3_io_methods (for the \"io\" entry) or sqlite3_vfs (for the\n\t\t\t\"vfs\" entry).\n\t\t\t\n\t\t\t- `methods`: an object mapping sqlite3_io_methods method names\n\t\t\t(e.g. 'xClose') to JS implementations of those methods. The JS\n\t\t\timplementations must be call-compatible with their native\n\t\t\tcounterparts.\n\t\t\t\n\t\t\tFor each of those object, this function passes its (`struct`,\n\t\t\t`methods`, (optional) `applyArgcCheck`) properties to\n\t\t\tinstallMethods().\n\t\t\t\n\t\t\tIf the `vfs` entry is set then:\n\t\t\t\n\t\t\t- Its `struct` property's registerVfs() is called. The\n\t\t\t`vfs` entry may optionally have an `asDefault` property, which\n\t\t\tgets passed as the argument to registerVfs().\n\t\t\t\n\t\t\t- If `struct.$zName` is falsy and the entry has a string-type\n\t\t\t`name` property, `struct.$zName` is set to the C-string form of\n\t\t\tthat `name` value before registerVfs() is called. That string\n\t\t\tgets added to the on-dispose state of the struct.\n\t\t\t\n\t\t\tOn success returns this object. Throws on error.\n\t\t\t*/\n\t\t\tvfs.installVfs = function(opt) {\n\t\t\t\tlet count = 0;\n\t\t\t\tconst propList = [\"io\", \"vfs\"];\n\t\t\t\tfor (const key of propList) {\n\t\t\t\t\tconst o = opt[key];\n\t\t\t\t\tif (o) {\n\t\t\t\t\t\t++count;\n\t\t\t\t\t\to.struct.installMethods(o.methods, !!o.applyArgcCheck);\n\t\t\t\t\t\tif (\"vfs\" === key) {\n\t\t\t\t\t\t\tif (!o.struct.$zName && \"string\" === typeof o.name) o.struct.addOnDispose(o.struct.$zName = wasm.allocCString(o.name));\n\t\t\t\t\t\t\to.struct.registerVfs(!!o.asDefault);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!count) toss(\"Misuse: installVfs() options object requires at least\", \"one of:\", propList);\n\t\t\t\treturn this;\n\t\t\t};\n\t\t});\n\t\tglobalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3) {\n\t\t\tif (!sqlite3.wasm.exports.sqlite3_declare_vtab) return;\n\t\t\tconst wasm = sqlite3.wasm, capi = sqlite3.capi, toss = sqlite3.util.toss3;\n\t\t\tconst vtab = Object.create(null);\n\t\t\tsqlite3.vtab = vtab;\n\t\t\tconst sii = capi.sqlite3_index_info;\n\t\t\t/**\n\t\t\tIf n is >=0 and less than this.$nConstraint, this function\n\t\t\treturns either a WASM pointer to the 0-based nth entry of\n\t\t\tthis.$aConstraint (if passed a truthy 2nd argument) or an\n\t\t\tsqlite3_index_info.sqlite3_index_constraint object wrapping that\n\t\t\taddress (if passed a falsy value or no 2nd argument). Returns a\n\t\t\tfalsy value if n is out of range.\n\t\t\t*/\n\t\t\tsii.prototype.nthConstraint = function(n, asPtr = false) {\n\t\t\t\tif (n < 0 || n >= this.$nConstraint) return false;\n\t\t\t\tconst ptr = wasm.ptr.add(this.$aConstraint, sii.sqlite3_index_constraint.structInfo.sizeof * n);\n\t\t\t\treturn asPtr ? ptr : new sii.sqlite3_index_constraint(ptr);\n\t\t\t};\n\t\t\t/**\n\t\t\tWorks identically to nthConstraint() but returns state from\n\t\t\tthis.$aConstraintUsage, so returns an\n\t\t\tsqlite3_index_info.sqlite3_index_constraint_usage instance\n\t\t\tif passed no 2nd argument or a falsy 2nd argument.\n\t\t\t*/\n\t\t\tsii.prototype.nthConstraintUsage = function(n, asPtr = false) {\n\t\t\t\tif (n < 0 || n >= this.$nConstraint) return false;\n\t\t\t\tconst ptr = wasm.ptr.add(this.$aConstraintUsage, sii.sqlite3_index_constraint_usage.structInfo.sizeof * n);\n\t\t\t\treturn asPtr ? ptr : new sii.sqlite3_index_constraint_usage(ptr);\n\t\t\t};\n\t\t\t/**\n\t\t\tIf n is >=0 and less than this.$nOrderBy, this function\n\t\t\treturns either a WASM pointer to the 0-based nth entry of\n\t\t\tthis.$aOrderBy (if passed a truthy 2nd argument) or an\n\t\t\tsqlite3_index_info.sqlite3_index_orderby object wrapping that\n\t\t\taddress (if passed a falsy value or no 2nd argument). Returns a\n\t\t\tfalsy value if n is out of range.\n\t\t\t*/\n\t\t\tsii.prototype.nthOrderBy = function(n, asPtr = false) {\n\t\t\t\tif (n < 0 || n >= this.$nOrderBy) return false;\n\t\t\t\tconst ptr = wasm.ptr.add(this.$aOrderBy, sii.sqlite3_index_orderby.structInfo.sizeof * n);\n\t\t\t\treturn asPtr ? ptr : new sii.sqlite3_index_orderby(ptr);\n\t\t\t};\n\t\t\t/**\n\t\t\tInternal factory function for xVtab and xCursor impls.\n\t\t\t*/\n\t\t\tconst __xWrapFactory = function(methodName, StructType) {\n\t\t\t\treturn function(ptr, removeMapping = false) {\n\t\t\t\t\tif (0 === arguments.length) ptr = new StructType();\n\t\t\t\t\tif (ptr instanceof StructType) {\n\t\t\t\t\t\tthis.set(ptr.pointer, ptr);\n\t\t\t\t\t\treturn ptr;\n\t\t\t\t\t} else if (!wasm.isPtr(ptr)) sqlite3.SQLite3Error.toss(\"Invalid argument to\", methodName + \"()\");\n\t\t\t\t\tlet rc = this.get(ptr);\n\t\t\t\t\tif (removeMapping) this.delete(ptr);\n\t\t\t\t\treturn rc;\n\t\t\t\t}.bind(/* @__PURE__ */ new Map());\n\t\t\t};\n\t\t\t/**\n\t\t\tA factory function which implements a simple lifetime manager for\n\t\t\tmappings between C struct pointers and their JS-level wrappers.\n\t\t\tThe first argument must be the logical name of the manager\n\t\t\t(e.g. 'xVtab' or 'xCursor'), which is only used for error\n\t\t\treporting. The second must be the capi.XYZ struct-type value,\n\t\t\te.g. capi.sqlite3_vtab or capi.sqlite3_vtab_cursor.\n\t\t\t\n\t\t\tReturns an object with 4 methods: create(), get(), unget(), and\n\t\t\tdispose(), plus a StructType member with the value of the 2nd\n\t\t\targument. The methods are documented in the body of this\n\t\t\tfunction.\n\t\t\t*/\n\t\t\tconst StructPtrMapper = function(name, StructType) {\n\t\t\t\tconst __xWrap = __xWrapFactory(name, StructType);\n\t\t\t\t/**\n\t\t\t\tThis object houses a small API for managing mappings of (`T*`)\n\t\t\t\tto StructType<T> objects, specifically within the lifetime\n\t\t\t\trequirements of sqlite3_module methods.\n\t\t\t\t*/\n\t\t\t\treturn Object.assign(Object.create(null), {\n\t\t\t\t\tStructType,\n\t\t\t\t\tcreate: (ppOut) => {\n\t\t\t\t\t\tconst rc = __xWrap();\n\t\t\t\t\t\twasm.pokePtr(ppOut, rc.pointer);\n\t\t\t\t\t\treturn rc;\n\t\t\t\t\t},\n\t\t\t\t\tget: (pCObj) => __xWrap(pCObj),\n\t\t\t\t\tunget: (pCObj) => __xWrap(pCObj, true),\n\t\t\t\t\tdispose: (pCObj) => __xWrap(pCObj, true)?.dispose?.()\n\t\t\t\t});\n\t\t\t};\n\t\t\t/**\n\t\t\tA lifetime-management object for mapping `sqlite3_vtab*`\n\t\t\tinstances in sqlite3_module methods to capi.sqlite3_vtab\n\t\t\tobjects.\n\t\t\t\n\t\t\tThe API docs are in the API-internal StructPtrMapper().\n\t\t\t*/\n\t\t\tvtab.xVtab = StructPtrMapper(\"xVtab\", capi.sqlite3_vtab);\n\t\t\t/**\n\t\t\tA lifetime-management object for mapping `sqlite3_vtab_cursor*`\n\t\t\tinstances in sqlite3_module methods to capi.sqlite3_vtab_cursor\n\t\t\tobjects.\n\t\t\t\n\t\t\tThe API docs are in the API-internal StructPtrMapper().\n\t\t\t*/\n\t\t\tvtab.xCursor = StructPtrMapper(\"xCursor\", capi.sqlite3_vtab_cursor);\n\t\t\t/**\n\t\t\tConvenience form of creating an sqlite3_index_info wrapper,\n\t\t\tintended for use in xBestIndex implementations. Note that the\n\t\t\tcaller is expected to call dispose() on the returned object\n\t\t\tbefore returning. Though not _strictly_ required, as that object\n\t\t\tdoes not own the pIdxInfo memory, it is nonetheless good form.\n\t\t\t*/\n\t\t\tvtab.xIndexInfo = (pIdxInfo) => new capi.sqlite3_index_info(pIdxInfo);\n\t\t\t/**\n\t\t\tGiven an sqlite3_module method name and error object, this\n\t\t\tfunction returns sqlite3.capi.SQLITE_NOMEM if (e instanceof\n\t\t\tsqlite3.WasmAllocError), else it returns its second argument. Its\n\t\t\tintended usage is in the methods of a sqlite3_vfs or\n\t\t\tsqlite3_module:\n\t\t\t\n\t\t\t```\n\t\t\ttry{\n\t\t\tlet rc = ...\n\t\t\treturn rc;\n\t\t\t}catch(e){\n\t\t\treturn sqlite3.vtab.xError(\n\t\t\t'xColumn', e, sqlite3.capi.SQLITE_XYZ);\n\t\t\t// where SQLITE_XYZ is some call-appropriate result code.\n\t\t\t}\n\t\t\t```\n\t\t\t\n\t\t\tIf no 3rd argument is provided, its default depends on\n\t\t\tthe error type:\n\t\t\t\n\t\t\t- An sqlite3.WasmAllocError always resolves to capi.SQLITE_NOMEM.\n\t\t\t\n\t\t\t- If err is an SQLite3Error then its `resultCode` property\n\t\t\tis used.\n\t\t\t\n\t\t\t- If all else fails, capi.SQLITE_ERROR is used.\n\t\t\t\n\t\t\tIf xError.errorReporter is a function, it is called in\n\t\t\torder to report the error, else the error is not reported.\n\t\t\tIf that function throws, that exception is ignored.\n\t\t\t*/\n\t\t\tvtab.xError = function f(methodName, err, defaultRc) {\n\t\t\t\tif (f.errorReporter instanceof Function) try {\n\t\t\t\t\tf.errorReporter(\"sqlite3_module::\" + methodName + \"(): \" + err.message);\n\t\t\t\t} catch (e) {}\n\t\t\t\tlet rc;\n\t\t\t\tif (err instanceof sqlite3.WasmAllocError) rc = capi.SQLITE_NOMEM;\n\t\t\t\telse if (arguments.length > 2) rc = defaultRc;\n\t\t\t\telse if (err instanceof sqlite3.SQLite3Error) rc = err.resultCode;\n\t\t\t\treturn rc || capi.SQLITE_ERROR;\n\t\t\t};\n\t\t\tvtab.xError.errorReporter = sqlite3.config.error.bind(sqlite3.config);\n\t\t\t/**\n\t\t\tA helper for sqlite3_vtab::xRowid() and xUpdate()\n\t\t\timplementations. It must be passed the final argument to one of\n\t\t\tthose methods (an output pointer to an int64 row ID) and the\n\t\t\tvalue to store at the output pointer's address. Returns the same\n\t\t\tas wasm.poke() and will throw if the 1st or 2nd arguments\n\t\t\tare invalid for that function.\n\t\t\t\n\t\t\tExample xRowid impl:\n\t\t\t\n\t\t\t```\n\t\t\tconst xRowid = (pCursor, ppRowid64)=>{\n\t\t\tconst c = vtab.xCursor(pCursor);\n\t\t\tvtab.xRowid(ppRowid64, c.myRowId);\n\t\t\treturn 0;\n\t\t\t};\n\t\t\t```\n\t\t\t*/\n\t\t\tvtab.xRowid = (ppRowid64, value) => wasm.poke(ppRowid64, value, \"i64\");\n\t\t\t/**\n\t\t\tA helper to initialize and set up an sqlite3_module object for\n\t\t\tlater installation into individual databases using\n\t\t\tsqlite3_create_module(). Requires an object with the following\n\t\t\tproperties:\n\t\t\t\n\t\t\t- `methods`: an object containing a mapping of properties with\n\t\t\tthe C-side names of the sqlite3_module methods, e.g. xCreate,\n\t\t\txBestIndex, etc., to JS implementations for those functions.\n\t\t\tCertain special-case handling is performed, as described below.\n\t\t\t\n\t\t\t- `catchExceptions` (default=false): if truthy, the given methods\n\t\t\tare not mapped as-is, but are instead wrapped inside wrappers\n\t\t\twhich translate exceptions into result codes of SQLITE_ERROR or\n\t\t\tSQLITE_NOMEM, depending on whether the exception is an\n\t\t\tsqlite3.WasmAllocError. In the case of the xConnect and xCreate\n\t\t\tmethods, the exception handler also sets the output error\n\t\t\tstring to the exception's error string.\n\t\t\t\n\t\t\t- OPTIONAL `struct`: a sqlite3.capi.sqlite3_module() instance. If\n\t\t\tnot set, one will be created automatically. If the current\n\t\t\t\"this\" is-a sqlite3_module then it is unconditionally used in\n\t\t\tplace of `struct`.\n\t\t\t\n\t\t\t- OPTIONAL `iVersion`: if set, it must be an integer value and it\n\t\t\tgets assigned to the `$iVersion` member of the struct object.\n\t\t\tIf it's _not_ set, and the passed-in `struct` object's `$iVersion`\n\t\t\tis 0 (the default) then this function attempts to define a value\n\t\t\tfor that property based on the list of methods it has.\n\t\t\t\n\t\t\tIf `catchExceptions` is false, it is up to the client to ensure\n\t\t\tthat no exceptions escape the methods, as doing so would move\n\t\t\tthem through the C API, leading to undefined\n\t\t\tbehavior. (vtab.xError() is intended to assist in reporting\n\t\t\tsuch exceptions.)\n\t\t\t\n\t\t\tCertain methods may refer to the same implementation. To simplify\n\t\t\tthe definition of such methods:\n\t\t\t\n\t\t\t- If `methods.xConnect` is `true` then the value of\n\t\t\t`methods.xCreate` is used in its place, and vice versa. sqlite\n\t\t\ttreats xConnect/xCreate functions specially if they are exactly\n\t\t\tthe same function (same pointer value).\n\t\t\t\n\t\t\t- If `methods.xDisconnect` is true then the value of\n\t\t\t`methods.xDestroy` is used in its place, and vice versa.\n\t\t\t\n\t\t\tThis is to facilitate creation of those methods inline in the\n\t\t\tpassed-in object without requiring the client to explicitly get a\n\t\t\treference to one of them in order to assign it to the other\n\t\t\tone.\n\t\t\t\n\t\t\tThe `catchExceptions`-installed handlers will account for\n\t\t\tidentical references to the above functions and will install the\n\t\t\tsame wrapper function for both.\n\t\t\t\n\t\t\tThe given methods are expected to return integer values, as\n\t\t\texpected by the C API. If `catchExceptions` is truthy, the return\n\t\t\tvalue of the wrapped function will be used as-is and will be\n\t\t\ttranslated to 0 if the function returns a falsy value (e.g. if it\n\t\t\tdoes not have an explicit return). If `catchExceptions` is _not_\n\t\t\tactive, the method implementations must explicitly return integer\n\t\t\tvalues.\n\t\t\t\n\t\t\tThrows on error. On success, returns the sqlite3_module object\n\t\t\t(`this` or `opt.struct` or a new sqlite3_module instance,\n\t\t\tdepending on how it's called).\n\t\t\t*/\n\t\t\tvtab.setupModule = function(opt) {\n\t\t\t\tlet createdMod = false;\n\t\t\t\tconst mod = this instanceof capi.sqlite3_module ? this : opt.struct || (createdMod = new capi.sqlite3_module());\n\t\t\t\ttry {\n\t\t\t\t\tconst methods = opt.methods || toss(\"Missing 'methods' object.\");\n\t\t\t\t\tfor (const e of Object.entries({\n\t\t\t\t\t\txConnect: \"xCreate\",\n\t\t\t\t\t\txDisconnect: \"xDestroy\"\n\t\t\t\t\t})) {\n\t\t\t\t\t\tconst k = e[0], v = e[1];\n\t\t\t\t\t\tif (true === methods[k]) methods[k] = methods[v];\n\t\t\t\t\t\telse if (true === methods[v]) methods[v] = methods[k];\n\t\t\t\t\t}\n\t\t\t\t\tif (opt.catchExceptions) {\n\t\t\t\t\t\tconst fwrap = function(methodName, func) {\n\t\t\t\t\t\t\tif ([\"xConnect\", \"xCreate\"].indexOf(methodName) >= 0) return function(pDb, pAux, argc, argv, ppVtab, pzErr) {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\treturn func(...arguments) || 0;\n\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\tif (!(e instanceof sqlite3.WasmAllocError)) {\n\t\t\t\t\t\t\t\t\t\twasm.dealloc(wasm.peekPtr(pzErr));\n\t\t\t\t\t\t\t\t\t\twasm.pokePtr(pzErr, wasm.allocCString(e.message));\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn vtab.xError(methodName, e);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\telse return function(...args) {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\treturn func(...args) || 0;\n\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\treturn vtab.xError(methodName, e);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst mnames = [\n\t\t\t\t\t\t\t\"xCreate\",\n\t\t\t\t\t\t\t\"xConnect\",\n\t\t\t\t\t\t\t\"xBestIndex\",\n\t\t\t\t\t\t\t\"xDisconnect\",\n\t\t\t\t\t\t\t\"xDestroy\",\n\t\t\t\t\t\t\t\"xOpen\",\n\t\t\t\t\t\t\t\"xClose\",\n\t\t\t\t\t\t\t\"xFilter\",\n\t\t\t\t\t\t\t\"xNext\",\n\t\t\t\t\t\t\t\"xEof\",\n\t\t\t\t\t\t\t\"xColumn\",\n\t\t\t\t\t\t\t\"xRowid\",\n\t\t\t\t\t\t\t\"xUpdate\",\n\t\t\t\t\t\t\t\"xBegin\",\n\t\t\t\t\t\t\t\"xSync\",\n\t\t\t\t\t\t\t\"xCommit\",\n\t\t\t\t\t\t\t\"xRollback\",\n\t\t\t\t\t\t\t\"xFindFunction\",\n\t\t\t\t\t\t\t\"xRename\",\n\t\t\t\t\t\t\t\"xSavepoint\",\n\t\t\t\t\t\t\t\"xRelease\",\n\t\t\t\t\t\t\t\"xRollbackTo\",\n\t\t\t\t\t\t\t\"xShadowName\"\n\t\t\t\t\t\t];\n\t\t\t\t\t\tconst remethods = Object.create(null);\n\t\t\t\t\t\tfor (const k of mnames) {\n\t\t\t\t\t\t\tconst m = methods[k];\n\t\t\t\t\t\t\tif (!(m instanceof Function)) continue;\n\t\t\t\t\t\t\telse if (\"xConnect\" === k && methods.xCreate === m) remethods[k] = methods.xCreate;\n\t\t\t\t\t\t\telse if (\"xCreate\" === k && methods.xConnect === m) remethods[k] = methods.xConnect;\n\t\t\t\t\t\t\telse remethods[k] = fwrap(k, m);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmod.installMethods(remethods, false);\n\t\t\t\t\t} else mod.installMethods(methods, !!opt.applyArgcCheck);\n\t\t\t\t\tif (0 === mod.$iVersion) {\n\t\t\t\t\t\tlet v;\n\t\t\t\t\t\tif (\"number\" === typeof opt.iVersion) v = opt.iVersion;\n\t\t\t\t\t\telse if (mod.$xIntegrity) v = 4;\n\t\t\t\t\t\telse if (mod.$xShadowName) v = 3;\n\t\t\t\t\t\telse if (mod.$xSavePoint || mod.$xRelease || mod.$xRollbackTo) v = 2;\n\t\t\t\t\t\telse v = 1;\n\t\t\t\t\t\tmod.$iVersion = v;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {\n\t\t\t\t\tif (createdMod) createdMod.dispose();\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t\treturn mod;\n\t\t\t};\n\t\t\t/**\n\t\t\tEquivalent to calling vtab.setupModule() with this sqlite3_module\n\t\t\tobject as the call's `this`.\n\t\t\t*/\n\t\t\tcapi.sqlite3_module.prototype.setupModule = function(opt) {\n\t\t\t\treturn vtab.setupModule.call(this, opt);\n\t\t\t};\n\t\t});\n\t\t/**\n\t\tkvvfs - the Key/Value VFS - is an SQLite3 VFS which delegates\n\t\tstorage of its pages and metadata to a key-value store.\n\t\t\n\t\tIt was conceived in order to support JS's localStorage and\n\t\tsessionStorage objects. Its native implementation uses files as\n\t\tkey/value storage (one file per record) but the JS implementation\n\t\treplaces a few methods so that it can use the aforementioned\n\t\tobjects as storage.\n\t\t\n\t\tIt uses a bespoke ASCII encoding to store each db page as a\n\t\tseparate record and stores some metadata, like the db's unencoded\n\t\tsize and its journal, as individual records.\n\t\t\n\t\tkvvfs is significantly less efficient than a plain in-memory db but\n\t\tit also, as a side effect of its design, offers a JSON-friendly\n\t\tinterchange format for exporting and importing databases.\n\t\t\n\t\tkvvfs is _not_ designed for heavy db loads. It is relatively\n\t\tmalloc()-heavy, having to de/allocate frequently, and it\n\t\tspends much of its time converting the raw db pages into and out of\n\t\tan ASCII encoding.\n\t\t\n\t\tBut it _does_ work and is \"performant enough\" for db work of the\n\t\tscale of a db which will fit within sessionStorage or localStorage\n\t\t(just 2-3mb).\n\t\t\n\t\t\"Version 2\" extends it to support using Storage-like objects as\n\t\tbacking storage, Storage being the JS class which localStorage and\n\t\tsessionStorage both derive from. This essentially moves the backing\n\t\tstore from whatever localStorage and sessionStorage use to an\n\t\tin-memory object.\n\t\t\n\t\tThis effort is primarily a stepping stone towards eliminating, if\n\t\tit proves possible, the POSIX I/O API dependencies in SQLite's WASM\n\t\tbuilds. That is: if this VFS works properly, it can be set as the\n\t\tdefault VFS and we can eliminate the \"unix\" VFS from the JS/WASM\n\t\tbuilds (as opposed to server-wise/WASI builds). That still, as of\n\t\t2025-11-23, a ways away, but it's the main driver for version 2 of\n\t\tkvvfs.\n\t\t\n\t\tVersion 2 remains compatible with version 1 databases and always\n\t\twrites localStorage/sessionStorage metadata in the v1 format, so\n\t\tsuch dbs can be manipulated freely by either version. For transient\n\t\tstorage objects (new in version 2), the format of its record keys\n\t\tis simpified, requiring less space than v1 keys by eliding\n\t\tredundant (in this context) info from the keys.\n\t\t\n\t\tAnother benefit of v2 is its ability to export dbs into a\n\t\tJSON-friendly (but not human-friendly) format.\n\t\t\n\t\tA potential, as-yet-unproven, benefit, would be the ability to plug\n\t\tarbitrary Storage-compatible objects in so that clients could,\n\t\te.g. asynchronously post updates to db pages to some back-end for\n\t\tbackups.\n\t\t*/\n\t\tglobalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3) {\n\t\t\t\"use strict\";\n\t\t\tconst capi = sqlite3.capi, sqlite3_kvvfs_methods = capi.sqlite3_kvvfs_methods, KVVfsFile = capi.KVVfsFile, pKvvfs = sqlite3.capi.sqlite3_vfs_find(\"kvvfs\");\n\t\t\tdelete capi.sqlite3_kvvfs_methods;\n\t\t\tdelete capi.KVVfsFile;\n\t\t\tif (!pKvvfs) return;\n\t\t\tconst util = sqlite3.util, wasm = sqlite3.wasm, toss3 = util.toss3, hop = (o, k) => Object.prototype.hasOwnProperty.call(o, k);\n\t\t\tconst kvvfsMethods = new sqlite3_kvvfs_methods(wasm.exports.sqlite3__wasm_kvvfs_methods());\n\t\t\tutil.assert(32 <= kvvfsMethods.$nKeySize, \"unexpected kvvfsMethods.$nKeySize: \" + kvvfsMethods.$nKeySize);\n\t\t\t/**\n\t\t\tMost of the VFS-internal state.\n\t\t\t*/\n\t\t\tconst cache = Object.assign(Object.create(null), {\n\t\t\t\trxJournalSuffix: /-journal$/,\n\t\t\t\tzKeyJrnl: wasm.allocCString(\"jrnl\"),\n\t\t\t\tzKeySz: wasm.allocCString(\"sz\"),\n\t\t\t\tkeySize: kvvfsMethods.$nKeySize,\n\t\t\t\tbuffer: Object.assign(Object.create(null), {\n\t\t\t\t\tn: kvvfsMethods.$nBufferSize,\n\t\t\t\t\tpool: Object.create(null)\n\t\t\t\t})\n\t\t\t});\n\t\t\t/**\n\t\t\tReturns a (cached) wasm.alloc()'d buffer of cache.buffer.n size,\n\t\t\tthrowing on OOM.\n\t\t\t\n\t\t\tWe leak this one-time alloc because we've no better option.\n\t\t\tsqlite3_vfs does not have a finalizer, so we've no place to hook\n\t\t\tin the cleanup. We \"could\" extend sqlite3_shutdown() to have a\n\t\t\tcleanup list for stuff like this but that function is never\n\t\t\tused in JS, so it's hardly worth it.\n\t\t\t*/\n\t\t\tcache.memBuffer = (id = 0) => cache.buffer.pool[id] ??= wasm.alloc(cache.buffer.n);\n\t\t\t/** Frees the buffer with the given id. */\n\t\t\tcache.memBufferFree = (id) => {\n\t\t\t\tconst b = cache.buffer.pool[id];\n\t\t\t\tif (b) {\n\t\t\t\t\twasm.dealloc(b);\n\t\t\t\t\tdelete cache.buffer.pool[id];\n\t\t\t\t}\n\t\t\t};\n\t\t\tconst noop = () => {};\n\t\t\tconst debug = sqlite3.__isUnderTest ? (...args) => sqlite3.config.debug(\"kvvfs:\", ...args) : noop;\n\t\t\tconst warn = (...args) => sqlite3.config.warn(\"kvvfs:\", ...args);\n\t\t\tconst error = (...args) => sqlite3.config.error(\"kvvfs:\", ...args);\n\t\t\t/**\n\t\t\tImplementation of JS's Storage interface for use as backing store\n\t\t\tof the kvvfs. Storage is a native class and its constructor\n\t\t\tcannot be legally called from JS, making it impossible to\n\t\t\tdirectly subclass Storage. This class implements (only) the\n\t\t\tStorage interface, to make it a drop-in replacement for\n\t\t\tlocalStorage/sessionStorage. (Any behavioral discrepancies are to\n\t\t\tbe considered bugs.)\n\t\t\t\n\t\t\tThis impl simply proxies a plain, prototype-less Object, suitable\n\t\t\tfor JSON-ing.\n\t\t\t\n\t\t\tDesign note: Storage has a bit of an odd iteration-related\n\t\t\tinterface as does not (AFAIK) specify specific behavior regarding\n\t\t\tmodification during traversal. Because of that, this class does\n\t\t\tsome seemingly unnecessary things with its #keys member, deleting\n\t\t\tand recreating it whenever a property index might be invalidated.\n\t\t\t*/\n\t\t\tclass KVVfsStorage {\n\t\t\t\t#map;\n\t\t\t\t#keys;\n\t\t\t\t#getKeys() {\n\t\t\t\t\treturn this.#keys ??= Object.keys(this.#map);\n\t\t\t\t}\n\t\t\t\tconstructor() {\n\t\t\t\t\tthis.clear();\n\t\t\t\t}\n\t\t\t\tkey(n) {\n\t\t\t\t\tconst k = this.#getKeys();\n\t\t\t\t\treturn n < k.length ? k[n] : null;\n\t\t\t\t}\n\t\t\t\tgetItem(k) {\n\t\t\t\t\treturn this.#map[k] ?? null;\n\t\t\t\t}\n\t\t\t\tsetItem(k, v) {\n\t\t\t\t\tif (!hop(this.#map, k)) this.#keys = null;\n\t\t\t\t\tthis.#map[k] = \"\" + v;\n\t\t\t\t}\n\t\t\t\tremoveItem(k) {\n\t\t\t\t\tif (delete this.#map[k]) this.#keys = null;\n\t\t\t\t}\n\t\t\t\tclear() {\n\t\t\t\t\tthis.#map = Object.create(null);\n\t\t\t\t\tthis.#keys = null;\n\t\t\t\t}\n\t\t\t\tget length() {\n\t\t\t\t\treturn this.#getKeys().length;\n\t\t\t\t}\n\t\t\t}\n\t\t\t/** True if v is the name of one of the special persistant Storage\n\t\t\tobjects. */\n\t\t\tconst kvvfsIsPersistentName = (v) => \"local\" === v || \"session\" === v;\n\t\t\t/**\n\t\t\tKeys in kvvfs have a prefix of \"kvvfs-NAME-\", where NAME is the\n\t\t\tdb name. This key is redundant in JS but it's how kvvfs works (it\n\t\t\tsaves each key to a separate file, so needs a distinct namespace\n\t\t\tper data source name). We retain this prefix in 'local' and\n\t\t\t'session' storage for backwards compatibility and so that they\n\t\t\tcan co-exist with client data in their storage, but we elide them\n\t\t\tfrom \"v2\" storage, where they're superfluous.\n\t\t\t*/\n\t\t\tconst kvvfsKeyPrefix = (v) => kvvfsIsPersistentName(v) ? \"kvvfs-\" + v + \"-\" : \"\";\n\t\t\t/**\n\t\t\tThrows if storage name n (JS string) is not valid for use as a\n\t\t\tstorage name.  Much of this goes back to kvvfs having a fixed\n\t\t\tbuffer size for its keys, and the storage name needing to be\n\t\t\tencoded in the keys for local/session storage.\n\t\t\t\n\t\t\tThe second argument must only be true when called from xOpen() -\n\t\t\tit makes names with a \"-journal\" suffix legal.\n\t\t\t*/\n\t\t\tconst validateStorageName = function(n, mayBeJournal = false) {\n\t\t\t\tif (kvvfsIsPersistentName(n)) return;\n\t\t\t\tconst len = new Blob([n]).size;\n\t\t\t\tif (!len) toss3(capi.SQLITE_MISUSE, \"Empty name is not permitted.\");\n\t\t\t\tlet maxLen = cache.keySize - 1;\n\t\t\t\tif (cache.rxJournalSuffix.test(n)) {\n\t\t\t\t\tif (!mayBeJournal) toss3(capi.SQLITE_MISUSE, \"Storage names may not have a '-journal' suffix.\");\n\t\t\t\t} else if ([\"-wal\", \"-shm\"].filter((v) => n.endsWith(v)).length) toss3(capi.SQLITE_MISUSE, \"Storage names may not have a -wal or -shm suffix.\");\n\t\t\t\telse maxLen -= 8;\n\t\t\t\tif (len > maxLen) toss3(capi.SQLITE_RANGE, \"Storage name is too long. Limit =\", maxLen);\n\t\t\t\tlet i;\n\t\t\t\tfor (i = 0; i < len; ++i) {\n\t\t\t\t\tconst ch = n.codePointAt(i);\n\t\t\t\t\tif (ch < 32) toss3(capi.SQLITE_RANGE, \"Illegal character (\" + ch + \"d) in storage name:\", n);\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\tCreate a new instance of the objects which go into\n\t\t\tcache.storagePool, with a refcount of 1. If passed a Storage-like\n\t\t\tobject as its second argument, it is used for the storage,\n\t\t\totherwise it creates a new KVVfsStorage object.\n\t\t\t*/\n\t\t\tconst newStorageObj = (name, storage = void 0) => Object.assign(Object.create(null), {\n\t\t\t\tjzClass: name,\n\t\t\t\trefc: 1,\n\t\t\t\tdeleteAtRefc0: false,\n\t\t\t\tstorage: storage || new KVVfsStorage(),\n\t\t\t\tkeyPrefix: kvvfsKeyPrefix(name),\n\t\t\t\tfiles: [],\n\t\t\t\tlisteners: void 0\n\t\t\t});\n\t\t\t/**\n\t\t\tPublic interface for kvvfs v2. The capi.sqlite3_js_kvvfs_...()\n\t\t\troutines remain in place for v1. Some members of this class proxy\n\t\t\tto those functions but use different default argument values in\n\t\t\tsome cases.\n\t\t\t*/\n\t\t\tconst kvvfs = sqlite3.kvvfs = Object.create(null);\n\t\t\tif (sqlite3.__isUnderTest) kvvfs.log = Object.assign(Object.create(null), {\n\t\t\t\txOpen: false,\n\t\t\t\txClose: false,\n\t\t\t\txWrite: false,\n\t\t\t\txRead: false,\n\t\t\t\txSync: false,\n\t\t\t\txAccess: false,\n\t\t\t\txFileControl: false,\n\t\t\t\txRcrdRead: false,\n\t\t\t\txRcrdWrite: false,\n\t\t\t\txRcrdDelete: false\n\t\t\t});\n\t\t\t/**\n\t\t\tDeletes the cache.storagePool entries for store (a\n\t\t\tcache.storagePool entry) and its db/journal counterpart.\n\t\t\t*/\n\t\t\tconst deleteStorage = function(store) {\n\t\t\t\tconst other = cache.rxJournalSuffix.test(store.jzClass) ? store.jzClass.replace(cache.rxJournalSuffix, \"\") : store.jzClass + \"-journal\";\n\t\t\t\tkvvfs?.log?.xClose && debug(\"cleaning up storage handles [\", store.jzClass, other, \"]\", store);\n\t\t\t\tdelete cache.storagePool[store.jzClass];\n\t\t\t\tdelete cache.storagePool[other];\n\t\t\t\tif (!sqlite3.__isUnderTest) {\n\t\t\t\t\tdelete store.storage;\n\t\t\t\t\tdelete store.refc;\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\tAdd both store.jzClass and store.jzClass+\"-journal\"\n\t\t\tto cache,storagePool.\n\t\t\t*/\n\t\t\tconst installStorageAndJournal = (store) => cache.storagePool[store.jzClass] = cache.storagePool[store.jzClass + \"-journal\"] = store;\n\t\t\t/**\n\t\t\tThe public name of the current thread's transient storage\n\t\t\tobject. A storage object with this name gets preinstalled.\n\t\t\t*/\n\t\t\tconst nameOfThisThreadStorage = \".\";\n\t\t\t/**\n\t\t\tMap of JS-stringified KVVfsFile::zClass names to\n\t\t\treference-counted Storage objects. These objects are created in\n\t\t\txOpen(). Their refcount is decremented in xClose(), and the\n\t\t\trecord is destroyed if the refcount reaches 0. We refcount so\n\t\t\tthat concurrent active xOpen()s on a given name, and within a\n\t\t\tgiven thread, use the same storage object.\n\t\t\t*/\n\t\t\tcache.storagePool = Object.assign(Object.create(null), { [nameOfThisThreadStorage]: newStorageObj(nameOfThisThreadStorage) });\n\t\t\tif (globalThis.Storage) {\n\t\t\t\tif (globalThis.localStorage instanceof globalThis.Storage) cache.storagePool.local = newStorageObj(\"local\", globalThis.localStorage);\n\t\t\t\tif (globalThis.sessionStorage instanceof globalThis.Storage) cache.storagePool.session = newStorageObj(\"session\", globalThis.sessionStorage);\n\t\t\t}\n\t\t\tcache.builtinStorageNames = Object.keys(cache.storagePool);\n\t\t\tconst isBuiltinName = (n) => cache.builtinStorageNames.indexOf(n) > -1;\n\t\t\tfor (const k of Object.keys(cache.storagePool)) {\n\t\t\t\tconst orig = cache.storagePool[k];\n\t\t\t\tcache.storagePool[k + \"-journal\"] = orig;\n\t\t\t}\n\t\t\tcache.setError = (e = void 0, dfltErrCode = capi.SQLITE_ERROR) => {\n\t\t\t\tif (e) {\n\t\t\t\t\tcache.lastError = e;\n\t\t\t\t\treturn e.resultCode | 0 || dfltErrCode;\n\t\t\t\t}\n\t\t\t\tdelete cache.lastError;\n\t\t\t\treturn 0;\n\t\t\t};\n\t\t\tcache.popError = () => {\n\t\t\t\tconst e = cache.lastError;\n\t\t\t\tdelete cache.lastError;\n\t\t\t\treturn e;\n\t\t\t};\n\t\t\t/** Exception handler for notifyListeners(). */\n\t\t\tconst catchForNotify = (e) => {\n\t\t\t\twarn(\"kvvfs.listener handler threw:\", e);\n\t\t\t};\n\t\t\tconst kvvfsDecode = wasm.exports.sqlite3__wasm_kvvfs_decode;\n\t\t\tconst kvvfsEncode = wasm.exports.sqlite3__wasm_kvvfs_encode;\n\t\t\t/**\n\t\t\tListener events and their argument(s) (via the callback(ev)\n\t\t\tev.data member):\n\t\t\t\n\t\t\t'open': number of opened handles on this storage.\n\t\t\t\n\t\t\t'close': number of opened handles on this storage.\n\t\t\t\n\t\t\t'write': key, value\n\t\t\t\n\t\t\t'delete': key\n\t\t\t\n\t\t\t'sync': true if it's from xSync(), false if it's from\n\t\t\txFileControl().\n\t\t\t\n\t\t\tFor efficiency's sake, all calls to this function should\n\t\t\tbe in the form:\n\t\t\t\n\t\t\tstore.listeners && notifyListeners(...);\n\t\t\t\n\t\t\tFailing to do so will trigger an exceptin in this function (which\n\t\t\twill be ignored but may produce a console warning).\n\t\t\t*/\n\t\t\tconst notifyListeners = async function(eventName, store, ...args) {\n\t\t\t\ttry {\n\t\t\t\t\tif (store.keyPrefix && args[0]) args[0] = args[0].replace(store.keyPrefix, \"\");\n\t\t\t\t\tlet u8enc, z0, z1, wcache;\n\t\t\t\t\tfor (const ear of store.listeners) {\n\t\t\t\t\t\tconst ev = Object.create(null);\n\t\t\t\t\t\tev.storageName = store.jzClass;\n\t\t\t\t\t\tev.type = eventName;\n\t\t\t\t\t\tear.decodePages;\n\t\t\t\t\t\tconst f = ear.events[eventName];\n\t\t\t\t\t\tif (f) {\n\t\t\t\t\t\t\tif (!ear.includeJournal && args[0] === \"jrnl\") continue;\n\t\t\t\t\t\t\tif (\"write\" === eventName && ear.decodePages && +args[0] > 0) {\n\t\t\t\t\t\t\t\tev.data = [args[0]];\n\t\t\t\t\t\t\t\tif (wcache?.[args[0]]) {\n\t\t\t\t\t\t\t\t\tev.data[1] = wcache[args[0]];\n\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tu8enc ??= new TextEncoder(\"utf-8\");\n\t\t\t\t\t\t\t\tz0 ??= cache.memBuffer(10);\n\t\t\t\t\t\t\t\tz1 ??= cache.memBuffer(11);\n\t\t\t\t\t\t\t\tconst u = u8enc.encode(args[1]);\n\t\t\t\t\t\t\t\tconst heap = wasm.heap8u();\n\t\t\t\t\t\t\t\theap.set(u, Number(z0));\n\t\t\t\t\t\t\t\theap[wasm.ptr.addn(z0, u.length)] = 0;\n\t\t\t\t\t\t\t\tconst rc = kvvfsDecode(z0, z1, cache.buffer.n);\n\t\t\t\t\t\t\t\tif (rc > 0) {\n\t\t\t\t\t\t\t\t\twcache ??= Object.create(null);\n\t\t\t\t\t\t\t\t\twcache[args[0]] = ev.data[1] = heap.slice(Number(z1), wasm.ptr.addn(z1, rc));\n\t\t\t\t\t\t\t\t} else continue;\n\t\t\t\t\t\t\t} else ev.data = args.length ? args.length === 1 ? args[0] : args : void 0;\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tf(ev)?.catch?.(catchForNotify);\n\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\twarn(\"notifyListeners [\", store.jzClass, \"]\", eventName, e);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcatchForNotify(e);\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\tReturns the storage object mapped to the given string zClass\n\t\t\t(C-string pointer or JS string).\n\t\t\t*/\n\t\t\tconst storageForZClass = (zClass) => \"string\" === typeof zClass ? cache.storagePool[zClass] : cache.storagePool[wasm.cstrToJs(zClass)];\n\t\t\tconst kvvfsMakeKey = wasm.exports.sqlite3__wasm_kvvfsMakeKey;\n\t\t\t/**\n\t\t\tReturns a C string from kvvfsMakeKey() OR returns zKey. In the\n\t\t\tformer case the memory is static, so must be copied before a\n\t\t\tsecond call. zKey MUST be a pointer passed to a VFS/file method,\n\t\t\tto allow us to avoid an alloc and/or an snprintf(). It requires\n\t\t\tC-string arguments for zClass and zKey. zClass may be NULL but\n\t\t\tzKey may not.\n\t\t\t*/\n\t\t\tconst zKeyForStorage = (store, zClass, zKey) => {\n\t\t\t\treturn zClass && store.keyPrefix ? kvvfsMakeKey(zClass, zKey) : zKey;\n\t\t\t};\n\t\t\tconst jsKeyForStorage = (store, zClass, zKey) => wasm.cstrToJs(zKeyForStorage(store, zClass, zKey));\n\t\t\tconst storageGetDbSize = (store) => +store.storage.getItem(store.keyPrefix + \"sz\");\n\t\t\t/**\n\t\t\tsqlite3_file pointers => objects, each of which has:\n\t\t\t\n\t\t\t.file = KVVfsFile instance\n\t\t\t\n\t\t\t.jzClass = JS-string form of f.$zClass\n\t\t\t\n\t\t\t.storage = Storage object. It is shared between a db and its\n\t\t\tjournal.\n\t\t\t*/\n\t\t\tconst pFileHandles = /* @__PURE__ */ new Map();\n\t\t\t/**\n\t\t\tOriginal WASM functions for methods we partially override.\n\t\t\t*/\n\t\t\tconst originalMethods = {\n\t\t\t\tvfs: Object.create(null),\n\t\t\t\tioDb: Object.create(null),\n\t\t\t\tioJrnl: Object.create(null)\n\t\t\t};\n\t\t\tconst pVfs = new capi.sqlite3_vfs(kvvfsMethods.$pVfs);\n\t\t\tconst pIoDb = new capi.sqlite3_io_methods(kvvfsMethods.$pIoDb);\n\t\t\tconst pIoJrnl = new capi.sqlite3_io_methods(kvvfsMethods.$pIoJrnl);\n\t\t\tconst recordHandler = Object.create(null);\n\t\t\tconst kvvfsInternal = Object.assign(Object.create(null), {\n\t\t\t\tpFileHandles,\n\t\t\t\tcache,\n\t\t\t\tstorageForZClass,\n\t\t\t\tKVVfsStorage,\n\t\t\t\tdisablePageSizeChange: true\n\t\t\t});\n\t\t\tif (kvvfs.log) kvvfs.internal = kvvfsInternal;\n\t\t\t/**\n\t\t\tImplementations for members of the object referred to by\n\t\t\tsqlite3__wasm_kvvfs_methods(). We swap out some native\n\t\t\timplementations with these so that we can use JS Storage for\n\t\t\ttheir backing store.\n\t\t\t*/\n\t\t\tconst methodOverrides = {\n\t\t\t\trecordHandler: {\n\t\t\t\t\txRcrdRead: (zClass, zKey, zBuf, nBuf) => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst jzClass = wasm.cstrToJs(zClass);\n\t\t\t\t\t\t\tconst store = storageForZClass(jzClass);\n\t\t\t\t\t\t\tif (!store) return -1;\n\t\t\t\t\t\t\tconst jXKey = jsKeyForStorage(store, zClass, zKey);\n\t\t\t\t\t\t\tkvvfs?.log?.xRcrdRead && warn(\"xRcrdRead\", jzClass, jXKey, nBuf, store);\n\t\t\t\t\t\t\tconst jV = store.storage.getItem(jXKey);\n\t\t\t\t\t\t\tif (null === jV) return -1;\n\t\t\t\t\t\t\tconst nV = jV.length;\n\t\t\t\t\t\t\tif (nBuf <= 0) return nV;\n\t\t\t\t\t\t\telse if (1 === nBuf) {\n\t\t\t\t\t\t\t\twasm.poke(zBuf, 0);\n\t\t\t\t\t\t\t\treturn nV;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (nBuf + 1 < nV) toss3(capi.SQLITE_RANGE, \"xRcrdRead()\", jzClass, jXKey, \"input buffer is too small: need\", nV, \"but have\", nBuf);\n\t\t\t\t\t\t\tconst zV = cache.memBuffer(0);\n\t\t\t\t\t\t\tconst heap = wasm.heap8();\n\t\t\t\t\t\t\tlet i;\n\t\t\t\t\t\t\tfor (i = 0; i < nV; ++i) heap[wasm.ptr.add(zV, i)] = jV.codePointAt(i) & 255;\n\t\t\t\t\t\t\theap.copyWithin(Number(zBuf), Number(zV), wasm.ptr.addn(zV, i));\n\t\t\t\t\t\t\theap[wasm.ptr.add(zBuf, nV)] = 0;\n\t\t\t\t\t\t\treturn nBuf;\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\terror(\"kvrecordRead()\", e);\n\t\t\t\t\t\t\tcache.setError(e);\n\t\t\t\t\t\t\treturn -2;\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\txRcrdWrite: (zClass, zKey, zData) => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst store = storageForZClass(zClass);\n\t\t\t\t\t\t\tconst jxKey = jsKeyForStorage(store, zClass, zKey);\n\t\t\t\t\t\t\tconst jData = wasm.cstrToJs(zData);\n\t\t\t\t\t\t\tkvvfs?.log?.xRcrdWrite && warn(\"xRcrdWrite\", jxKey, store);\n\t\t\t\t\t\t\tstore.storage.setItem(jxKey, jData);\n\t\t\t\t\t\t\tstore.listeners && notifyListeners(\"write\", store, jxKey, jData);\n\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\terror(\"kvrecordWrite()\", e);\n\t\t\t\t\t\t\treturn cache.setError(e, capi.SQLITE_IOERR);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\txRcrdDelete: (zClass, zKey) => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst store = storageForZClass(zClass);\n\t\t\t\t\t\t\tconst jxKey = jsKeyForStorage(store, zClass, zKey);\n\t\t\t\t\t\t\tkvvfs?.log?.xRcrdDelete && warn(\"xRcrdDelete\", jxKey, store);\n\t\t\t\t\t\t\tstore.storage.removeItem(jxKey);\n\t\t\t\t\t\t\tstore.listeners && notifyListeners(\"delete\", store, jxKey);\n\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\terror(\"kvrecordDelete()\", e);\n\t\t\t\t\t\t\treturn cache.setError(e, capi.SQLITE_IOERR);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tvfs: {\n\t\t\t\t\txOpen: function(pProtoVfs, zName, pProtoFile, flags, pOutFlags) {\n\t\t\t\t\t\tcache.popError();\n\t\t\t\t\t\tlet zToFree;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tif (!zName) {\n\t\t\t\t\t\t\t\tzToFree = wasm.allocCString(\"\" + pProtoFile + \".\" + (Math.random() * 1e5 | 0));\n\t\t\t\t\t\t\t\tzName = zToFree;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst jzClass = wasm.cstrToJs(zName);\n\t\t\t\t\t\t\tkvvfs?.log?.xOpen && debug(\"xOpen\", jzClass, \"flags =\", flags);\n\t\t\t\t\t\t\tvalidateStorageName(jzClass, true);\n\t\t\t\t\t\t\tif (flags & (capi.SQLITE_OPEN_MAIN_DB | capi.SQLITE_OPEN_TEMP_DB | capi.SQLITE_OPEN_TRANSIENT_DB) && cache.rxJournalSuffix.test(jzClass)) toss3(capi.SQLITE_ERROR, \"DB files may not have a '-journal' suffix.\");\n\t\t\t\t\t\t\tlet s = storageForZClass(jzClass);\n\t\t\t\t\t\t\tif (!s && !(flags & capi.SQLITE_OPEN_CREATE)) toss3(capi.SQLITE_ERROR, \"Storage not found:\", jzClass);\n\t\t\t\t\t\t\tconst rc = originalMethods.vfs.xOpen(pProtoVfs, zName, pProtoFile, flags, pOutFlags);\n\t\t\t\t\t\t\tif (rc) return rc;\n\t\t\t\t\t\t\tlet deleteAt0 = !!(capi.SQLITE_OPEN_DELETEONCLOSE & flags);\n\t\t\t\t\t\t\tif (wasm.isPtr(arguments[1])) {\n\t\t\t\t\t\t\t\tif (capi.sqlite3_uri_boolean(zName, \"delete-on-close\", 0)) deleteAt0 = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst f = new KVVfsFile(pProtoFile);\n\t\t\t\t\t\t\tutil.assert(f.$zClass, \"Missing f.$zClass\");\n\t\t\t\t\t\t\tf.addOnDispose(zToFree);\n\t\t\t\t\t\t\tzToFree = void 0;\n\t\t\t\t\t\t\tif (s) {\n\t\t\t\t\t\t\t\t++s.refc;\n\t\t\t\t\t\t\t\ts.files.push(f);\n\t\t\t\t\t\t\t\twasm.poke32(pOutFlags, flags);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twasm.poke32(pOutFlags, flags | capi.SQLITE_OPEN_CREATE);\n\t\t\t\t\t\t\t\tutil.assert(!f.$isJournal, \"Opening a journal before its db? \" + jzClass);\n\t\t\t\t\t\t\t\tconst nm = jzClass.replace(cache.rxJournalSuffix, \"\");\n\t\t\t\t\t\t\t\ts = newStorageObj(nm);\n\t\t\t\t\t\t\t\tinstallStorageAndJournal(s);\n\t\t\t\t\t\t\t\ts.files.push(f);\n\t\t\t\t\t\t\t\ts.deleteAtRefc0 = deleteAt0;\n\t\t\t\t\t\t\t\tkvvfs?.log?.xOpen && debug(\"xOpen installed storage handle [\", nm, nm + \"-journal\", \"]\", s);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tpFileHandles.set(pProtoFile, {\n\t\t\t\t\t\t\t\tstore: s,\n\t\t\t\t\t\t\t\tfile: f,\n\t\t\t\t\t\t\t\tjzClass\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\ts.listeners && notifyListeners(\"open\", s, s.files.length);\n\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\twarn(\"xOpen:\", e);\n\t\t\t\t\t\t\treturn cache.setError(e);\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tzToFree && wasm.dealloc(zToFree);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\txDelete: function(pVfs, zName, iSyncFlag) {\n\t\t\t\t\t\tcache.popError();\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst jzName = wasm.cstrToJs(zName);\n\t\t\t\t\t\t\tif (cache.rxJournalSuffix.test(jzName)) recordHandler.xRcrdDelete(zName, cache.zKeyJrnl);\n\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\twarn(\"xDelete\", e);\n\t\t\t\t\t\t\treturn cache.setError(e);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\txAccess: function(pProtoVfs, zPath, flags, pResOut) {\n\t\t\t\t\t\tcache.popError();\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst s = storageForZClass(zPath);\n\t\t\t\t\t\t\tconst jzPath = s?.jzClass || wasm.cstrToJs(zPath);\n\t\t\t\t\t\t\tif (kvvfs?.log?.xAccess) debug(\"xAccess\", jzPath, \"flags =\", flags, \"*pResOut =\", wasm.peek32(pResOut), \"store =\", s);\n\t\t\t\t\t\t\tif (!s)\n /** The xAccess method returns [SQLITE_OK] on success or some\n\t\t\t\t\t\t\t** non-zero error code if there is an I/O error or if the name of\n\t\t\t\t\t\t\t** the file given in the second argument is illegal.\n\t\t\t\t\t\t\t*/\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tvalidateStorageName(jzPath);\n\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\twasm.poke32(pResOut, 0);\n\t\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (s) {\n\t\t\t\t\t\t\t\tconst key = s.keyPrefix + (cache.rxJournalSuffix.test(jzPath) ? \"jrnl\" : \"1\");\n\t\t\t\t\t\t\t\tconst res = s.storage.getItem(key) ? 0 : 1;\n\t\t\t\t\t\t\t\twasm.poke32(pResOut, res);\n\t\t\t\t\t\t\t} else wasm.poke32(pResOut, 0);\n\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\terror(\"xAccess\", e);\n\t\t\t\t\t\t\treturn cache.setError(e);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\txRandomness: function(pVfs, nOut, pOut) {\n\t\t\t\t\t\tconst heap = wasm.heap8u();\n\t\t\t\t\t\tlet i = 0;\n\t\t\t\t\t\tconst npOut = Number(pOut);\n\t\t\t\t\t\tfor (; i < nOut; ++i) heap[npOut + i] = Math.random() * 255e3 & 255;\n\t\t\t\t\t\treturn nOut;\n\t\t\t\t\t},\n\t\t\t\t\txGetLastError: function(pVfs, nOut, pOut) {\n\t\t\t\t\t\tconst e = cache.popError();\n\t\t\t\t\t\tdebug(\"xGetLastError\", e);\n\t\t\t\t\t\tif (e) {\n\t\t\t\t\t\t\tconst scope = wasm.scopedAllocPush();\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst [cMsg, n] = wasm.scopedAllocCString(e.message, true);\n\t\t\t\t\t\t\t\twasm.cstrncpy(pOut, cMsg, nOut);\n\t\t\t\t\t\t\t\tif (n > nOut) wasm.poke8(wasm.ptr.add(pOut, nOut, -1), 0);\n\t\t\t\t\t\t\t\tdebug(\"set xGetLastError\", e.message);\n\t\t\t\t\t\t\t\treturn e.resultCode | 0 || capi.SQLITE_IOERR;\n\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\treturn capi.SQLITE_NOMEM;\n\t\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\t\twasm.scopedAllocPop(scope);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tioDb: {\n\t\t\t\t\txClose: function(pFile) {\n\t\t\t\t\t\tcache.popError();\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst h = pFileHandles.get(pFile);\n\t\t\t\t\t\t\tkvvfs?.log?.xClose && debug(\"xClose\", pFile, h);\n\t\t\t\t\t\t\tif (h) {\n\t\t\t\t\t\t\t\tpFileHandles.delete(pFile);\n\t\t\t\t\t\t\t\tconst s = h.store;\n\t\t\t\t\t\t\t\ts.files = s.files.filter((v) => v !== h.file);\n\t\t\t\t\t\t\t\tif (--s.refc <= 0 && s.deleteAtRefc0) deleteStorage(s);\n\t\t\t\t\t\t\t\toriginalMethods.ioDb.xClose(pFile);\n\t\t\t\t\t\t\t\th.file.dispose();\n\t\t\t\t\t\t\t\ts.listeners && notifyListeners(\"close\", s, s.files.length);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\terror(\"xClose\", e);\n\t\t\t\t\t\t\treturn cache.setError(e);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\txFileControl: function(pFile, opId, pArg) {\n\t\t\t\t\t\tcache.popError();\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst h = pFileHandles.get(pFile);\n\t\t\t\t\t\t\tutil.assert(h, \"Missing KVVfsFile handle\");\n\t\t\t\t\t\t\tkvvfs?.log?.xFileControl && debug(\"xFileControl\", h, \"op =\", opId);\n\t\t\t\t\t\t\tif (opId === capi.SQLITE_FCNTL_PRAGMA && kvvfsInternal.disablePageSizeChange) {\n\t\t\t\t\t\t\t\tconst zName = wasm.peekPtr(wasm.ptr.add(pArg, wasm.ptr.size));\n\t\t\t\t\t\t\t\tif (\"page_size\" === wasm.cstrToJs(zName)) {\n\t\t\t\t\t\t\t\t\tkvvfs?.log?.xFileControl && debug(\"xFileControl pragma\", wasm.cstrToJs(zName));\n\t\t\t\t\t\t\t\t\tconst zVal = wasm.peekPtr(wasm.ptr.add(pArg, 2 * wasm.ptr.size));\n\t\t\t\t\t\t\t\t\tif (zVal) {\n\t\t\t\t\t\t\t\t\t\tkvvfs?.log?.xFileControl && warn(\"xFileControl pragma\", h, \"NOT setting page size to\", wasm.cstrToJs(zVal));\n\t\t\t\t\t\t\t\t\t\th.file.$szPage = -1;\n\t\t\t\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t\t\t\t} else if (h.file.$szPage > 0) {\n\t\t\t\t\t\t\t\t\t\tkvvfs?.log?.xFileControl && warn(\"xFileControl\", h, \"getting page size\", h.file.$szPage);\n\t\t\t\t\t\t\t\t\t\twasm.pokePtr(pArg, wasm.allocCString(\"\" + h.file.$szPage));\n\t\t\t\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst rc = originalMethods.ioDb.xFileControl(pFile, opId, pArg);\n\t\t\t\t\t\t\tif (0 == rc && capi.SQLITE_FCNTL_SYNC === opId) h.store.listeners && notifyListeners(\"sync\", h.store, false);\n\t\t\t\t\t\t\treturn rc;\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\terror(\"xFileControl\", e);\n\t\t\t\t\t\t\treturn cache.setError(e);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\txSync: function(pFile, flags) {\n\t\t\t\t\t\tcache.popError();\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst h = pFileHandles.get(pFile);\n\t\t\t\t\t\t\tkvvfs?.log?.xSync && debug(\"xSync\", h);\n\t\t\t\t\t\t\tutil.assert(h, \"Missing KVVfsFile handle\");\n\t\t\t\t\t\t\tconst rc = originalMethods.ioDb.xSync(pFile, flags);\n\t\t\t\t\t\t\tif (0 == rc && h.store.listeners) notifyListeners(\"sync\", h.store, true);\n\t\t\t\t\t\t\treturn rc;\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\terror(\"xSync\", e);\n\t\t\t\t\t\t\treturn cache.setError(e);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\txRead: function(pFile, pTgt, n, iOff64) {\n\t\t\t\t\t\tcache.popError();\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tif (kvvfs?.log?.xRead) {\n\t\t\t\t\t\t\t\tconst h = pFileHandles.get(pFile);\n\t\t\t\t\t\t\t\tutil.assert(h, \"Missing KVVfsFile handle\");\n\t\t\t\t\t\t\t\tdebug(\"xRead\", n, iOff64, h);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn originalMethods.ioDb.xRead(pFile, pTgt, n, iOff64);\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\terror(\"xRead\", e);\n\t\t\t\t\t\t\treturn cache.setError(e);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\txWrite: function(pFile, pSrc, n, iOff64) {\n\t\t\t\t\t\tcache.popError();\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tif (kvvfs?.log?.xWrite) {\n\t\t\t\t\t\t\t\tconst h = pFileHandles.get(pFile);\n\t\t\t\t\t\t\t\tutil.assert(h, \"Missing KVVfsFile handle\");\n\t\t\t\t\t\t\t\tdebug(\"xWrite\", n, iOff64, h);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn originalMethods.ioDb.xWrite(pFile, pSrc, n, iOff64);\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\terror(\"xWrite\", e);\n\t\t\t\t\t\t\treturn cache.setError(e);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tioJrnl: { xClose: true }\n\t\t\t};\n\t\t\tdebug(\"pVfs and friends\", pVfs, pIoDb, pIoJrnl, kvvfsMethods, capi.sqlite3_file.structInfo, KVVfsFile.structInfo);\n\t\t\ttry {\n\t\t\t\tutil.assert(cache.buffer.n > 1024 * 129, \"Heap buffer is not large enough\");\n\t\t\t\tfor (const e of Object.entries(methodOverrides.recordHandler)) {\n\t\t\t\t\tconst k = e[0], f = e[1];\n\t\t\t\t\trecordHandler[k] = f;\n\t\t\t\t\tkvvfsMethods[kvvfsMethods.memberKey(k)] = wasm.installFunction(kvvfsMethods.memberSignature(k), f);\n\t\t\t\t}\n\t\t\t\tfor (const e of Object.entries(methodOverrides.vfs)) {\n\t\t\t\t\tconst k = e[0], f = e[1], km = pVfs.memberKey(k), member = pVfs.structInfo.members[k] || util.toss(\"Missing pVfs.structInfo[\", k, \"]\");\n\t\t\t\t\toriginalMethods.vfs[k] = wasm.functionEntry(pVfs[km]);\n\t\t\t\t\tpVfs[km] = wasm.installFunction(member.signature, f);\n\t\t\t\t}\n\t\t\t\tfor (const e of Object.entries(methodOverrides.ioDb)) {\n\t\t\t\t\tconst k = e[0], f = e[1], km = pIoDb.memberKey(k);\n\t\t\t\t\toriginalMethods.ioDb[k] = wasm.functionEntry(pIoDb[km]) || util.toss(\"Missing native pIoDb[\", km, \"]\");\n\t\t\t\t\tpIoDb[km] = wasm.installFunction(pIoDb.memberSignature(k), f);\n\t\t\t\t}\n\t\t\t\tfor (const e of Object.entries(methodOverrides.ioJrnl)) {\n\t\t\t\t\tconst k = e[0], f = e[1], km = pIoJrnl.memberKey(k);\n\t\t\t\t\toriginalMethods.ioJrnl[k] = wasm.functionEntry(pIoJrnl[km]) || util.toss(\"Missing native pIoJrnl[\", km, \"]\");\n\t\t\t\t\tif (true === f) pIoJrnl[km] = pIoDb[km] || util.toss(\"Missing copied pIoDb[\", km, \"]\");\n\t\t\t\t\telse pIoJrnl[km] = wasm.installFunction(pIoJrnl.memberSignature(k), f);\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tkvvfsMethods.dispose();\n\t\t\t\tpVfs.dispose();\n\t\t\t\tpIoDb.dispose();\n\t\t\t\tpIoJrnl.dispose();\n\t\t\t}\n\t\t\t/**\n\t\t\tClears all storage used by the kvvfs DB backend, deleting any\n\t\t\tDB(s) stored there.\n\t\t\t\n\t\t\tIts argument must be the name of a kvvfs storage object:\n\t\t\t\n\t\t\t- 'session'\n\t\t\t- 'local'\n\t\t\t- '' - see below.\n\t\t\t- A transient kvvfs storage object name.\n\t\t\t\n\t\t\tIn the first two cases, only sessionStorage resp. localStorage is\n\t\t\tcleared. An empty string resolves to both 'local' and 'session'\n\t\t\tstorage.\n\t\t\t\n\t\t\tReturns the number of entries cleared.\n\t\t\t\n\t\t\tAs of kvvfs version 2:\n\t\t\t\n\t\t\tThis API is available in Worker threads but does not have access\n\t\t\tto localStorage or sessionStorage in them. Prior versions did not\n\t\t\tinclude this API in Worker threads.\n\t\t\t\n\t\t\tDifferences in this function in version 2:\n\t\t\t\n\t\t\t- It accepts an arbitrary storage name. In v1 this was a silent\n\t\t\tno-op for any names other than ('local','session','').\n\t\t\t\n\t\t\t- It throws if a db currently has the storage opened UNLESS the\n\t\t\tstorage object is localStorage or sessionStorage. That version 1\n\t\t\tdid not throw for this case was due to an architectural\n\t\t\tlimitation which has since been overcome, but removal of\n\t\t\tJsStorageDb.prototype.clearStorage() would be a backwards compatibility\n\t\t\tbreak, so this function permits wiping the storage for those two\n\t\t\tcases even if they are opened. Use with case.\n\t\t\t*/\n\t\t\tconst sqlite3_js_kvvfs_clear = function callee(which) {\n\t\t\t\tif (\"\" === which) return callee(\"local\") + callee(\"session\");\n\t\t\t\tconst store = storageForZClass(which);\n\t\t\t\tif (!store) return 0;\n\t\t\t\tif (store.files.length) if (globalThis.localStorage === store.storage || globalThis.sessionStorage === store.storage) {} else toss3(capi.SQLITE_ACCESS, \"Cannot clear in-use database storage.\");\n\t\t\t\tconst s = store.storage;\n\t\t\t\tconst toRm = [];\n\t\t\t\tlet i, n = s.length;\n\t\t\t\tfor (i = 0; i < n; ++i) {\n\t\t\t\t\tconst k = s.key(i);\n\t\t\t\t\tif (!store.keyPrefix || k.startsWith(store.keyPrefix)) toRm.push(k);\n\t\t\t\t}\n\t\t\t\ttoRm.forEach((kk) => s.removeItem(kk));\n\t\t\t\treturn toRm.length;\n\t\t\t};\n\t\t\t/**\n\t\t\tThis routine estimates the approximate amount of\n\t\t\tstorage used by the given kvvfs back-end.\n\t\t\t\n\t\t\tIts arguments are as documented for sqlite3_js_kvvfs_clear(),\n\t\t\tonly the operation this performs is different.\n\t\t\t\n\t\t\tThe returned value is twice the \"length\" value of every matching\n\t\t\tkey and value, noting that JavaScript stores each character in 2\n\t\t\tbytes.\n\t\t\t\n\t\t\tThe returned size is not authoritative from the perspective of\n\t\t\thow much data can fit into localStorage and sessionStorage, as\n\t\t\tthe precise algorithms for determining those limits are\n\t\t\tunspecified and may include per-entry overhead invisible to\n\t\t\tclients.\n\t\t\t*/\n\t\t\tconst sqlite3_js_kvvfs_size = function callee(which) {\n\t\t\t\tif (\"\" === which) return callee(\"local\") + callee(\"session\");\n\t\t\t\tconst store = storageForZClass(which);\n\t\t\t\tif (!store) return 0;\n\t\t\t\tconst s = store.storage;\n\t\t\t\tlet i, sz = 0;\n\t\t\t\tfor (i = 0; i < s.length; ++i) {\n\t\t\t\t\tconst k = s.key(i);\n\t\t\t\t\tif (!store.keyPrefix || k.startsWith(store.keyPrefix)) {\n\t\t\t\t\t\tsz += k.length;\n\t\t\t\t\t\tsz += s.getItem(k).length;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn sz * 2;\n\t\t\t};\n\t\t\t/**\n\t\t\tExports a kvvfs storage object to an object, optionally\n\t\t\tJSON-friendly.\n\t\t\t\n\t\t\tUsages:\n\t\t\t\n\t\t\tthisfunc(storageName);\n\t\t\tthisfunc(options);\n\t\t\t\n\t\t\tIn the latter case, the options object must be an object with\n\t\t\tthe following properties:\n\t\t\t\n\t\t\t- \"name\" (string) required. The storage to export.\n\t\t\t\n\t\t\t- \"decodePages\" (bool=false). If true, the .pages result property\n\t\t\tholdes Uint8Array objects holding the raw binary-format db\n\t\t\tpages. The default is to use kvvfs-encoded string pages\n\t\t\t(JSON-friendly).\n\t\t\t\n\t\t\t- \"includeJournal\" (bool=false). If true and the db has a current\n\t\t\tjournal, it is exported as well. (Kvvfs journals are stored as a\n\t\t\tsingle record within the db's storage object.)\n\t\t\t\n\t\t\tThe returned object is structured as follows...\n\t\t\t\n\t\t\t- \"name\": the name of the storage. This is 'local' or 'session'\n\t\t\tfor localStorage resp. sessionStorage, and an arbitrary name for\n\t\t\ttransient storage. This propery may be changed before passing\n\t\t\tthis object to sqlite3_js_kvvfs_import() in order to\n\t\t\timport into a different storage object.\n\t\t\t\n\t\t\t- \"timestamp\": the time this function was called, in Unix\n\t\t\tepoch milliseconds.\n\t\t\t\n\t\t\t- \"size\": the unencoded db size.\n\t\t\t\n\t\t\t- \"journal\": if options.includeJournal is true and this db has a\n\t\t\tjournal, it is stored as a string here, otherwise this property\n\t\t\tis not set.\n\t\t\t\n\t\t\t- \"pages\": An array holding the raw encoded db pages in their\n\t\t\tproper order.\n\t\t\t\n\t\t\tThrows if this db is not opened.\n\t\t\t\n\t\t\tThe encoding of the underlying database is not part of this\n\t\t\tinterface - it is simply passed on as-is. Interested parties are\n\t\t\tdirected to src/os_kv.c in the SQLite source tree, with the\n\t\t\tcaveat that that code also does not offer a public interface.\n\t\t\ti.e. the encoding is a private implementation detail of kvvfs.\n\t\t\tThe format may be changed in the future but kvvfs will continue\n\t\t\tto support the current form.\n\t\t\t\n\t\t\tAdded in version 3.52.0.\n\t\t\t*/\n\t\t\tconst sqlite3_js_kvvfs_export = function callee(...args) {\n\t\t\t\tlet opt;\n\t\t\t\tif (1 === args.length && \"object\" === typeof args[0]) opt = args[0];\n\t\t\t\telse if (args.length) opt = Object.assign(Object.create(null), { name: args[0] });\n\t\t\t\tconst store = opt ? storageForZClass(opt.name) : null;\n\t\t\t\tif (!store) toss3(capi.SQLITE_NOTFOUND, \"There is no kvvfs storage named\", opt?.name);\n\t\t\t\tconst s = store.storage;\n\t\t\t\tconst rc = Object.assign(Object.create(null), {\n\t\t\t\t\tname: store.jzClass,\n\t\t\t\t\ttimestamp: Date.now(),\n\t\t\t\t\tpages: []\n\t\t\t\t});\n\t\t\t\tconst pages = Object.create(null);\n\t\t\t\tconst keyPrefix = store.keyPrefix;\n\t\t\t\tconst rxTail = keyPrefix ? /^kvvfs-[^-]+-(\\w+)/ : void 0;\n\t\t\t\tlet i = 0, n = s.length;\n\t\t\t\tfor (; i < n; ++i) {\n\t\t\t\t\tconst k = s.key(i);\n\t\t\t\t\tif (!keyPrefix || k.startsWith(keyPrefix)) {\n\t\t\t\t\t\tlet kk = (keyPrefix ? rxTail.exec(k) : void 0)?.[1] ?? k;\n\t\t\t\t\t\tswitch (kk) {\n\t\t\t\t\t\t\tcase \"jrnl\":\n\t\t\t\t\t\t\t\tif (opt.includeJournal) rc.journal = s.getItem(k);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase \"sz\":\n\t\t\t\t\t\t\t\trc.size = +s.getItem(k);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tkk = +kk;\n\t\t\t\t\t\t\t\tif (!util.isInt32(kk) || kk <= 0) toss3(capi.SQLITE_RANGE, \"Malformed kvvfs key: \" + k);\n\t\t\t\t\t\t\t\tif (opt.decodePages) {\n\t\t\t\t\t\t\t\t\tconst spg = s.getItem(k), n = spg.length, z = cache.memBuffer(0), zDec = cache.memBuffer(1), heap = wasm.heap8u();\n\t\t\t\t\t\t\t\t\tlet i = 0;\n\t\t\t\t\t\t\t\t\tfor (; i < n; ++i) heap[wasm.ptr.add(z, i)] = spg.codePointAt(i) & 255;\n\t\t\t\t\t\t\t\t\theap[wasm.ptr.add(z, i)] = 0;\n\t\t\t\t\t\t\t\t\tconst nDec = kvvfsDecode(z, zDec, cache.buffer.n);\n\t\t\t\t\t\t\t\t\tpages[kk] = heap.slice(Number(zDec), wasm.ptr.addn(zDec, nDec));\n\t\t\t\t\t\t\t\t} else pages[kk] = s.getItem(k);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (opt.decodePages) cache.memBufferFree(1);\n\t\t\t\tObject.keys(pages).map((v) => +v).sort().forEach((v) => rc.pages.push(pages[v]));\n\t\t\t\treturn rc;\n\t\t\t};\n\t\t\t/**\n\t\t\tThe counterpart of sqlite3_js_kvvfs_export(). Its\n\t\t\targument must be the result of that function() or\n\t\t\ta compatible one.\n\t\t\t\n\t\t\tThis either replaces the contents of an existing transient\n\t\t\tstorage object or installs one named exp.name, setting\n\t\t\tthe storage's db contents to that of the exp object.\n\t\t\t\n\t\t\tThrows on error. Error conditions include:\n\t\t\t\n\t\t\t- The given storage object is currently opened by any db.\n\t\t\tPerforming this page-by-page import would invoke undefined\n\t\t\tbehavior on them.\n\t\t\t\n\t\t\t- Malformed input object.\n\t\t\t\n\t\t\tIf it throws after starting the import then it clears the storage\n\t\t\tbefore returning, to avoid leaving the db in an undefined\n\t\t\tstate. It may throw for any of the above-listed conditions before\n\t\t\treaching that step, in which case the db is not modified. If\n\t\t\texp.name refers to a new storage name then if it throws, the name\n\t\t\tdoes not get installed.\n\t\t\t\n\t\t\tAdded in version 3.52.0.\n\t\t\t*/\n\t\t\tconst sqlite3_js_kvvfs_import = function(exp, overwrite = false) {\n\t\t\t\tif (!exp?.timestamp || !exp.name || void 0 === exp.size || !Array.isArray(exp.pages)) toss3(capi.SQLITE_MISUSE, \"Malformed export object.\");\n\t\t\t\telse if (!exp.size || exp.size !== (exp.size | 0) || exp.size >= 2147483647) toss3(capi.SQLITE_RANGE, \"Invalid db size: \" + exp.size);\n\t\t\t\tvalidateStorageName(exp.name);\n\t\t\t\tlet store = storageForZClass(exp.name);\n\t\t\t\tconst isNew = !store;\n\t\t\t\tif (store) {\n\t\t\t\t\tif (!overwrite) toss3(capi.SQLITE_ACCESS, \"Storage '\" + exp.name + \"' already exists and\", \"overwrite was not specified.\");\n\t\t\t\t\telse if (!store.files || !store.jzClass) toss3(capi.SQLITE_ERROR, \"Internal storage object\", exp.name, \"seems to be malformed.\");\n\t\t\t\t\telse if (store.files.length) toss3(capi.SQLITE_IOERR_ACCESS, \"Cannot import db storage while it is in use.\");\n\t\t\t\t\tsqlite3_js_kvvfs_clear(exp.name);\n\t\t\t\t} else store = newStorageObj(exp.name);\n\t\t\t\tconst keyPrefix = kvvfsKeyPrefix(exp.name);\n\t\t\t\tlet zEnc;\n\t\t\t\ttry {\n\t\t\t\t\tconst s = store.storage;\n\t\t\t\t\ts.setItem(keyPrefix + \"sz\", exp.size);\n\t\t\t\t\tif (exp.journal) s.setItem(keyPrefix + \"jrnl\", exp.journal);\n\t\t\t\t\tif (exp.pages[0] instanceof Uint8Array) exp.pages.forEach((u, ndx) => {\n\t\t\t\t\t\tconst n = u.length;\n\t\t\t\t\t\tzEnc ??= cache.memBuffer(1);\n\t\t\t\t\t\tconst zBin = cache.memBuffer(0), heap = wasm.heap8u();\n\t\t\t\t\t\theap.set(u, Number(zBin));\n\t\t\t\t\t\theap[wasm.ptr.addn(zBin, n)] = 0;\n\t\t\t\t\t\tconst rc = kvvfsEncode(zBin, n, zEnc);\n\t\t\t\t\t\tutil.assert(rc < cache.buffer.n, \"Impossibly long output - possibly smashed the heap\");\n\t\t\t\t\t\tutil.assert(0 === wasm.peek8(wasm.ptr.add(zEnc, rc)), \"Expecting NUL-terminated encoded output\");\n\t\t\t\t\t\tconst jenc = wasm.cstrToJs(zEnc);\n\t\t\t\t\t\ts.setItem(keyPrefix + (ndx + 1), jenc);\n\t\t\t\t\t});\n\t\t\t\t\telse if (exp.pages[0]) exp.pages.forEach((v, ndx) => s.setItem(keyPrefix + (ndx + 1), v));\n\t\t\t\t\tif (isNew) installStorageAndJournal(store);\n\t\t\t\t} catch {\n\t\t\t\t\tif (!isNew) try {\n\t\t\t\t\t\tsqlite3_js_kvvfs_clear(exp.name);\n\t\t\t\t\t} catch (ee) {}\n\t\t\t\t} finally {\n\t\t\t\t\tif (zEnc) cache.memBufferFree(1);\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t};\n\t\t\t/**\n\t\t\tIf no kvvfs storage exists with the given name, one is\n\t\t\tinstalled. If one exists, its reference count is increased so\n\t\t\tthat it won't be freed by the closing of a database or journal\n\t\t\tfile.\n\t\t\t\n\t\t\tThrows if the name is not valid for a new storage object.\n\t\t\t\n\t\t\tAdded in version 3.52.0.\n\t\t\t*/\n\t\t\tconst sqlite3_js_kvvfs_reserve = function(name) {\n\t\t\t\tlet store = storageForZClass(name);\n\t\t\t\tif (store) {\n\t\t\t\t\t++store.refc;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvalidateStorageName(name);\n\t\t\t\tinstallStorageAndJournal(newStorageObj(name));\n\t\t\t};\n\t\t\t/**\n\t\t\tConditionally \"unlinks\" a kvvfs storage object, reducing its\n\t\t\treference count by 1.\n\t\t\t\n\t\t\tThis is a no-op if name ends in \"-journal\" or refers to a\n\t\t\tbuilt-in storage object.\n\t\t\t\n\t\t\tIt will not lower the refcount below the number of\n\t\t\tcurrently-opened db/journal files for the storage (so that it\n\t\t\tcannot delete it out from under them).\n\t\t\t\n\t\t\tIf the refcount reaches 0 then the storage object is\n\t\t\tremoved.\n\t\t\t\n\t\t\tReturns true if it reduces the refcount, else false.  A result of\n\t\t\ttrue does not necessarily mean that the storage unit was removed,\n\t\t\tjust that its refcount was lowered. Similarly, a result of false\n\t\t\tdoes not mean that the storage is removed - it may still have\n\t\t\topened handles.\n\t\t\t\n\t\t\tAdded in version 3.52.0.\n\t\t\t*/\n\t\t\tconst sqlite3_js_kvvfs_unlink = function(name) {\n\t\t\t\tconst store = storageForZClass(name);\n\t\t\t\tif (!store || kvvfsIsPersistentName(store.jzClass) || isBuiltinName(store.jzClass) || cache.rxJournalSuffix.test(name)) return false;\n\t\t\t\tif (store.refc > store.files.length || 0 === store.files.length) {\n\t\t\t\t\tif (--store.refc <= 0) deleteStorage(store);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t};\n\t\t\t/**\n\t\t\tAdds an event listener to a kvvfs storage object. The idea is\n\t\t\tthat this can be used to asynchronously back up one kvvfs storage\n\t\t\tobject to another or another channel entirely. (The caveat in the\n\t\t\tlatter case is that kvvfs's format is not readily consumable by\n\t\t\tdownstream code.)\n\t\t\t\n\t\t\tIts argument must be an object with the following properties:\n\t\t\t\n\t\t\t- storage: the name of the kvvfs storage object.\n\t\t\t\n\t\t\t- reserve [=false]: if true, sqlite3_js_kvvfs_reserve() is used\n\t\t\tto ensure that the storage exists if it does not already.\n\t\t\tIf this is false and the storage does not exist then an\n\t\t\texception is thrown.\n\t\t\t\n\t\t\t- events: an object which may have any of the following\n\t\t\tcallback function properties: open, close, write, delete.\n\t\t\t\n\t\t\t- decodePages [=false]: if true, write events will receive each\n\t\t\tdb page write in the form of a Uint8Array holding the raw binary\n\t\t\tdb page. The default is to emit the kvvfs-format page because it\n\t\t\trequires no extra work, we already have it in hand, and it's\n\t\t\toften smaller. It's not great for interchange, though.\n\t\t\t\n\t\t\t- includeJournal [=false]: if true, writes and deletes of\n\t\t\t\"jrnl\" records are included. If false, no events are sent\n\t\t\tfor journal updates.\n\t\t\t\n\t\t\tPassing the same object to sqlite3_js_kvvfs_unlisten() will\n\t\t\tremove the listener.\n\t\t\t\n\t\t\tEach one of the events callbacks will be called asynchronously\n\t\t\twhen the given storage performs those operations. They may be\n\t\t\tasynchronous functions but are not required to be (the events are\n\t\t\tfired async either way, but making the event callbacks async may\n\t\t\tbe advantageous when multiple listeners are involved). All\n\t\t\texceptions, including those via Promises, are ignored but may (or\n\t\t\tmay not) trigger warning output on the console.\n\t\t\t\n\t\t\tEach callback gets passed a single object with the following\n\t\t\tproperties:\n\t\t\t\n\t\t\t.type = the same as the name of the callback\n\t\t\t\n\t\t\t.storageName = the name of the storage object\n\t\t\t\n\t\t\t.data = callback-dependent:\n\t\t\t\n\t\t\t- 'open' and 'close' get an integer, the number of\n\t\t\tcurrently-opened handles on the storage.\n\t\t\t\n\t\t\t- 'write' gets a length-two array holding the key and value which\n\t\t\twere written. The key is always a string, even if it's a db page\n\t\t\tnumber. For db-page records, the value's type depends on\n\t\t\topt.decodePages.  All others, including the journal, are strings.\n\t\t\t(The journal, being a kvvfs-specific format, is delivered in\n\t\t\tthat same JSON-friendly format.) More details below.\n\t\t\t\n\t\t\t- 'delete' gets the string-type key of the deleted record.\n\t\t\t\n\t\t\t- 'sync' gets a boolean value: true if it was triggered by db\n\t\t\tfile's xSync(), false if it was triggered by xFileControl().  The\n\t\t\tlatter triggers before the xSync() and also triggers if the DB\n\t\t\thas PRAGMA SYNCHRONOUS=OFF (in which case xSync() is not\n\t\t\ttriggered).\n\t\t\t\n\t\t\tThe key/value arguments to 'write', and key argument to 'delete',\n\t\t\tare in one of the following forms:\n\t\t\t\n\t\t\t- 'sz' = the unencoded db size as a string. This specific key is\n\t\t\tkey is never deleted, so is only ever passed to 'write' events.\n\t\t\t\n\t\t\t- 'jrnl' = the current db journal as a kvvfs-encoded string. This\n\t\t\tjournal format is not useful anywhere except in the kvvfs\n\t\t\tinternals. These events are not fired if opt.includeJournal is\n\t\t\tfalse.\n\t\t\t\n\t\t\t- '[1-9][0-9]*' (a db page number) = Its type depends on\n\t\t\topt.decodePages. These may be written and deleted in arbitrary\n\t\t\torder.\n\t\t\t\n\t\t\tDesign note: JS has StorageEvents but only in the main thread,\n\t\t\twhich is why the listeners are not based on that.\n\t\t\t\n\t\t\tAdded in version 3.52.0.\n\t\t\t*/\n\t\t\tconst sqlite3_js_kvvfs_listen = function(opt) {\n\t\t\t\tif (!opt || \"object\" !== typeof opt) toss3(capi.SQLITE_MISUSE, \"Expecting a listener object.\");\n\t\t\t\tlet store = storageForZClass(opt.storage);\n\t\t\t\tif (!store) if (opt.storage && opt.reserve) {\n\t\t\t\t\tsqlite3_js_kvvfs_reserve(opt.storage);\n\t\t\t\t\tstore = storageForZClass(opt.storage);\n\t\t\t\t\tutil.assert(store, \"Unexpectedly cannot fetch reserved storage \" + opt.storage);\n\t\t\t\t} else toss3(capi.SQLITE_NOTFOUND, \"No such storage:\", opt.storage);\n\t\t\t\tif (opt.events) (store.listeners ??= []).push(opt);\n\t\t\t};\n\t\t\t/**\n\t\t\tRemoves the kvvfs event listeners for the given options\n\t\t\tobject. It must be passed the same object instance which was\n\t\t\tpassed to sqlite3_js_kvvfs_listen().\n\t\t\t\n\t\t\tThis has no side effects if opt is invalid or is not a match for\n\t\t\tany listeners.\n\t\t\t\n\t\t\tReturn true if it unregisters its argument, else false.\n\t\t\t\n\t\t\tAdded in version 3.52.0.\n\t\t\t*/\n\t\t\tconst sqlite3_js_kvvfs_unlisten = function(opt) {\n\t\t\t\tconst store = storageForZClass(opt?.storage);\n\t\t\t\tif (store?.listeners && opt.events) {\n\t\t\t\t\tconst n = store.listeners.length;\n\t\t\t\t\tstore.listeners = store.listeners.filter((v) => v !== opt);\n\t\t\t\t\tconst rc = n > store.listeners.length;\n\t\t\t\t\tif (!store.listeners.length) store.listeners = void 0;\n\t\t\t\t\treturn rc;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t};\n\t\t\tsqlite3.kvvfs.reserve = sqlite3_js_kvvfs_reserve;\n\t\t\tsqlite3.kvvfs.import = sqlite3_js_kvvfs_import;\n\t\t\tsqlite3.kvvfs.export = sqlite3_js_kvvfs_export;\n\t\t\tsqlite3.kvvfs.unlink = sqlite3_js_kvvfs_unlink;\n\t\t\tsqlite3.kvvfs.listen = sqlite3_js_kvvfs_listen;\n\t\t\tsqlite3.kvvfs.unlisten = sqlite3_js_kvvfs_unlisten;\n\t\t\tsqlite3.kvvfs.exists = (name) => !!storageForZClass(name);\n\t\t\tsqlite3.kvvfs.estimateSize = sqlite3_js_kvvfs_size;\n\t\t\tsqlite3.kvvfs.clear = sqlite3_js_kvvfs_clear;\n\t\t\tif (globalThis.Storage) {\n\t\t\t\t/**\n\t\t\t\tPrior to version 2, kvvfs was only available in the main\n\t\t\t\tthread.  We retain that for the v1 APIs, exposing them only in\n\t\t\t\tthe main UI thread. As of version 2, kvvfs is available in all\n\t\t\t\tthreads but only via its v2 interface (sqlite3.kvvfs).\n\t\t\t\t\n\t\t\t\tThese versions have a default argument value of \"\" which the v2\n\t\t\t\tversions lack.\n\t\t\t\t*/\n\t\t\t\tcapi.sqlite3_js_kvvfs_size = (which = \"\") => sqlite3_js_kvvfs_size(which);\n\t\t\t\tcapi.sqlite3_js_kvvfs_clear = (which = \"\") => sqlite3_js_kvvfs_clear(which);\n\t\t\t}\n\t\t\tif (sqlite3.oo1?.DB) {\n\t\t\t\t/**\n\t\t\t\tFunctionally equivalent to DB(storageName,'c','kvvfs') except\n\t\t\t\tthat it throws if the given storage name is not one of 'local'\n\t\t\t\tor 'session'.\n\t\t\t\t\n\t\t\t\tAs of version 3.46, the argument may optionally be an options\n\t\t\t\tobject in the form:\n\t\t\t\t\n\t\t\t\t{\n\t\t\t\tfilename: 'session'|'local',\n\t\t\t\t... etc. (all options supported by the DB ctor)\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tnoting that the 'vfs' option supported by main DB\n\t\t\t\tconstructor is ignored here: the vfs is always 'kvvfs'.\n\t\t\t\t*/\n\t\t\t\tconst DB = sqlite3.oo1.DB;\n\t\t\t\tsqlite3.oo1.JsStorageDb = function(storageName = sqlite3.oo1.JsStorageDb.defaultStorageName) {\n\t\t\t\t\tconst opt = DB.dbCtorHelper.normalizeArgs(...arguments);\n\t\t\t\t\topt.vfs = \"kvvfs\";\n\t\t\t\t\tswitch (opt.filename) {\n\t\t\t\t\t\tcase \":sessionStorage:\":\n\t\t\t\t\t\t\topt.filename = \"session\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \":localStorage:\":\n\t\t\t\t\t\t\topt.filename = \"local\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst m = /(file:(\\/\\/)?)([^?]+)/.exec(opt.filename);\n\t\t\t\t\tvalidateStorageName(m ? m[3] : opt.filename);\n\t\t\t\t\tDB.dbCtorHelper.call(this, opt);\n\t\t\t\t};\n\t\t\t\tsqlite3.oo1.JsStorageDb.defaultStorageName = cache.storagePool.session ? \"session\" : nameOfThisThreadStorage;\n\t\t\t\tconst jdb = sqlite3.oo1.JsStorageDb;\n\t\t\t\tjdb.prototype = Object.create(DB.prototype);\n\t\t\t\tjdb.clearStorage = sqlite3_js_kvvfs_clear;\n\t\t\t\t/**\n\t\t\t\tDEPRECATED: the inherited method of this name (as opposed to\n\t\t\t\tthe \"static\" class method) is deprecated with version 2 of\n\t\t\t\tkvvfs. This function will, for backwards comaptibility,\n\t\t\t\tcontinue to work with localStorage and sessionStorage, but will\n\t\t\t\tthrow for all other storage because they are opened. Version 1\n\t\t\t\twas not capable of recognizing that the storage was opened so\n\t\t\t\tpermitted wiping it out at any time, but that was arguably a\n\t\t\t\tbug.\n\t\t\t\t\n\t\t\t\tClears this database instance's storage or throws if this\n\t\t\t\tinstance has been closed. Returns the number of\n\t\t\t\tdatabase pages which were cleaned up.\n\t\t\t\t*/\n\t\t\t\tjdb.prototype.clearStorage = function() {\n\t\t\t\t\treturn jdb.clearStorage(this.affirmOpen().dbFilename(), true);\n\t\t\t\t};\n\t\t\t\t/** Equivalent to sqlite3_js_kvvfs_size(). */\n\t\t\t\tjdb.storageSize = sqlite3_js_kvvfs_size;\n\t\t\t\t/**\n\t\t\t\tReturns the _approximate_ number of bytes this database takes\n\t\t\t\tup in its storage or throws if this instance has been closed.\n\t\t\t\t*/\n\t\t\t\tjdb.prototype.storageSize = function() {\n\t\t\t\t\treturn jdb.storageSize(this.affirmOpen().dbFilename(), true);\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (sqlite3.__isUnderTest && sqlite3.vtab) {\n\t\t\t\t/**\n\t\t\t\tAn eponymous vtab for inspecting the kvvfs state.  This is only\n\t\t\t\tintended for use in testing and development, not part of the\n\t\t\t\tpublic API.\n\t\t\t\t*/\n\t\t\t\tconst cols = Object.assign(Object.create(null), {\n\t\t\t\t\trowid: { type: \"INTEGER\" },\n\t\t\t\t\tname: { type: \"TEXT\" },\n\t\t\t\t\tnRef: { type: \"INTEGER\" },\n\t\t\t\t\tnOpen: { type: \"INTEGER\" },\n\t\t\t\t\tisTransient: { type: \"INTEGER\" },\n\t\t\t\t\tdbSize: { type: \"INTEGER\" }\n\t\t\t\t});\n\t\t\t\tObject.keys(cols).forEach((v, i) => cols[v].colId = i);\n\t\t\t\tconst VT = sqlite3.vtab;\n\t\t\t\tconst ProtoCursor = Object.assign(Object.create(null), { row: function() {\n\t\t\t\t\treturn cache.storagePool[this.names[this.rowid]];\n\t\t\t\t} });\n\t\t\t\tObject.assign(Object.create(ProtoCursor), {\n\t\t\t\t\trowid: 0,\n\t\t\t\t\tnames: Object.keys(cache.storagePool).filter((v) => !cache.rxJournalSuffix.test(v))\n\t\t\t\t});\n\t\t\t\tconst cursorState = function(cursor, reset) {\n\t\t\t\t\tconst o = cursor instanceof capi.sqlite3_vtab_cursor ? cursor : VT.xCursor.get(cursor);\n\t\t\t\t\tif (reset || !o.vTabState) o.vTabState = Object.assign(Object.create(ProtoCursor), {\n\t\t\t\t\t\trowid: 0,\n\t\t\t\t\t\tnames: Object.keys(cache.storagePool).filter((v) => !cache.rxJournalSuffix.test(v))\n\t\t\t\t\t});\n\t\t\t\t\treturn o.vTabState;\n\t\t\t\t};\n\t\t\t\tconst dbg = () => {};\n\t\t\t\tconst theModule = function f() {\n\t\t\t\t\treturn f.mod ??= new sqlite3.capi.sqlite3_module().setupModule({\n\t\t\t\t\t\tcatchExceptions: true,\n\t\t\t\t\t\tmethods: {\n\t\t\t\t\t\t\txConnect: function(pDb, pAux, argc, argv, ppVtab, pzErr) {\n\t\t\t\t\t\t\t\tdbg(\"xConnect\");\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tconst xcol = [];\n\t\t\t\t\t\t\t\t\tObject.keys(cols).forEach((k) => {\n\t\t\t\t\t\t\t\t\t\txcol.push(k + \" \" + cols[k].type);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\tconst rc = capi.sqlite3_declare_vtab(pDb, \"CREATE TABLE ignored(\" + xcol.join(\",\") + \")\");\n\t\t\t\t\t\t\t\t\tif (0 === rc) {\n\t\t\t\t\t\t\t\t\t\tconst t = VT.xVtab.create(ppVtab);\n\t\t\t\t\t\t\t\t\t\tutil.assert(t === VT.xVtab.get(wasm.peekPtr(ppVtab)), \"output pointer check failed\");\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn rc;\n\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\treturn VT.xErrror(\"xConnect\", e, capi.SQLITE_ERROR);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\txCreate: wasm.ptr.null,\n\t\t\t\t\t\t\txDisconnect: function(pVtab) {\n\t\t\t\t\t\t\t\tdbg(\"xDisconnect\", ...arguments);\n\t\t\t\t\t\t\t\tVT.xVtab.dispose(pVtab);\n\t\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\txOpen: function(pVtab, ppCursor) {\n\t\t\t\t\t\t\t\tdbg(\"xOpen\", ...arguments);\n\t\t\t\t\t\t\t\tVT.xCursor.create(ppCursor);\n\t\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\txClose: function(pCursor) {\n\t\t\t\t\t\t\t\tdbg(\"xClose\", ...arguments);\n\t\t\t\t\t\t\t\tconst c = VT.xCursor.unget(pCursor);\n\t\t\t\t\t\t\t\tdelete c.vTabState;\n\t\t\t\t\t\t\t\tc.dispose();\n\t\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\txNext: function(pCursor) {\n\t\t\t\t\t\t\t\tdbg(\"xNext\", ...arguments);\n\t\t\t\t\t\t\t\tconst c = VT.xCursor.get(pCursor);\n\t\t\t\t\t\t\t\t++cursorState(c).rowid;\n\t\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\txColumn: function(pCursor, pCtx, iCol) {\n\t\t\t\t\t\t\t\tdbg(\"xColumn\", ...arguments);\n\t\t\t\t\t\t\t\tconst st = cursorState(pCursor);\n\t\t\t\t\t\t\t\tconst store = st.row();\n\t\t\t\t\t\t\t\tutil.assert(store, \"Unexpected xColumn call\");\n\t\t\t\t\t\t\t\tswitch (iCol) {\n\t\t\t\t\t\t\t\t\tcase cols.rowid.colId:\n\t\t\t\t\t\t\t\t\t\tcapi.sqlite3_result_int(pCtx, st.rowid);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase cols.name.colId:\n\t\t\t\t\t\t\t\t\t\tcapi.sqlite3_result_text(pCtx, store.jzClass, -1, capi.SQLITE_TRANSIENT);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase cols.nRef.colId:\n\t\t\t\t\t\t\t\t\t\tcapi.sqlite3_result_int(pCtx, store.refc);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase cols.nOpen.colId:\n\t\t\t\t\t\t\t\t\t\tcapi.sqlite3_result_int(pCtx, store.files.length);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase cols.isTransient.colId:\n\t\t\t\t\t\t\t\t\t\tcapi.sqlite3_result_int(pCtx, !!store.deleteAtRefc0);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase cols.dbSize.colId:\n\t\t\t\t\t\t\t\t\t\tcapi.sqlite3_result_int(pCtx, storageGetDbSize(store));\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tcapi.sqlite3_result_error(pCtx, \"Invalid column id: \" + iCol);\n\t\t\t\t\t\t\t\t\t\treturn capi.SQLITE_RANGE;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\txRowid: function(pCursor, ppRowid64) {\n\t\t\t\t\t\t\t\tdbg(\"xRowid\", ...arguments);\n\t\t\t\t\t\t\t\tconst st = cursorState(pCursor);\n\t\t\t\t\t\t\t\tVT.xRowid(ppRowid64, st.rowid);\n\t\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\txEof: function(pCursor) {\n\t\t\t\t\t\t\t\tconst st = cursorState(pCursor);\n\t\t\t\t\t\t\t\tdbg(\"xEof?=\" + !st.row(), ...arguments);\n\t\t\t\t\t\t\t\treturn !st.row();\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\txFilter: function(pCursor, idxNum, idxCStr, argc, argv) {\n\t\t\t\t\t\t\t\tdbg(\"xFilter\", ...arguments);\n\t\t\t\t\t\t\t\tcursorState(pCursor, true);\n\t\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\txBestIndex: function(pVtab, pIdxInfo) {\n\t\t\t\t\t\t\t\tdbg(\"xBestIndex\", ...arguments);\n\t\t\t\t\t\t\t\tconst pii = new capi.sqlite3_index_info(pIdxInfo);\n\t\t\t\t\t\t\t\tpii.$estimatedRows = cache.storagePool.size;\n\t\t\t\t\t\t\t\tpii.$estimatedCost = 1;\n\t\t\t\t\t\t\t\tpii.dispose();\n\t\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t};\n\t\t\t\tsqlite3.kvvfs.create_module = function(pDb, name = \"sqlite_kvvfs\") {\n\t\t\t\t\treturn capi.sqlite3_create_module(pDb, name, theModule(), wasm.ptr.null);\n\t\t\t\t};\n\t\t\t}\n\t\t});\n\t\tglobalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3) {\n\t\t\t/**\n\t\t\tinstallOpfsVfs() returns a Promise which, on success, installs an\n\t\t\tsqlite3_vfs named \"opfs\", suitable for use with all sqlite3 APIs\n\t\t\twhich accept a VFS. It is intended to be called via\n\t\t\tsqlite3ApiBootstrap.initializers or an equivalent mechanism.\n\t\t\t\n\t\t\tThe installed VFS uses the Origin-Private FileSystem API for\n\t\t\tall file storage. On error it is rejected with an exception\n\t\t\texplaining the problem. Reasons for rejection include, but are\n\t\t\tnot limited to:\n\t\t\t\n\t\t\t- The counterpart Worker (see below) could not be loaded.\n\t\t\t\n\t\t\t- The environment does not support OPFS. That includes when\n\t\t\tthis function is called from the main window thread.\n\t\t\t\n\t\t\tSignificant notes and limitations:\n\t\t\t\n\t\t\t- The OPFS features used here are only available in dedicated Worker\n\t\t\tthreads. This file tries to detect that case, resulting in a\n\t\t\trejected Promise if those features do not seem to be available.\n\t\t\t\n\t\t\t- It requires the SharedArrayBuffer and Atomics classes, and the\n\t\t\tformer is only available if the HTTP server emits the so-called\n\t\t\tCOOP and COEP response headers. These features are required for\n\t\t\tproxying OPFS's synchronous API via the synchronous interface\n\t\t\trequired by the sqlite3_vfs API.\n\t\t\t\n\t\t\t- This function may only be called a single time. When called, this\n\t\t\tfunction removes itself from the sqlite3 object.\n\t\t\t\n\t\t\tAll arguments to this function are for internal/development purposes\n\t\t\tonly. They do not constitute a public API and may change at any\n\t\t\ttime.\n\t\t\t\n\t\t\tThe argument may optionally be a plain object with the following\n\t\t\tconfiguration options:\n\t\t\t\n\t\t\t- proxyUri: name of the async proxy JS file.\n\t\t\t\n\t\t\t- verbose (=2): an integer 0-3. 0 disables all logging, 1 enables\n\t\t\tlogging of errors. 2 enables logging of warnings and errors. 3\n\t\t\tadditionally enables debugging info. Logging is performed\n\t\t\tvia the sqlite3.config.{log|warn|error}() functions.\n\t\t\t\n\t\t\t- sanityChecks (=false): if true, some basic sanity tests are run on\n\t\t\tthe OPFS VFS API after it's initialized, before the returned\n\t\t\tPromise resolves. This is only intended for testing and\n\t\t\tdevelopment of the VFS, not client-side use.\n\t\t\t\n\t\t\tOn success, the Promise resolves to the top-most sqlite3 namespace\n\t\t\tobject and that object gets a new object installed in its\n\t\t\t`opfs` property, containing several OPFS-specific utilities.\n\t\t\t*/\n\t\t\tconst installOpfsVfs = function callee(options) {\n\t\t\t\tif (!globalThis.SharedArrayBuffer || !globalThis.Atomics) return Promise.reject(/* @__PURE__ */ new Error(\"Cannot install OPFS: Missing SharedArrayBuffer and/or Atomics. The server must emit the COOP/COEP response headers to enable those. See https://sqlite.org/wasm/doc/trunk/persistence.md#coop-coep\"));\n\t\t\t\telse if (\"undefined\" === typeof WorkerGlobalScope) return Promise.reject(/* @__PURE__ */ new Error(\"The OPFS sqlite3_vfs cannot run in the main thread because it requires Atomics.wait().\"));\n\t\t\t\telse if (!globalThis.FileSystemHandle || !globalThis.FileSystemDirectoryHandle || !globalThis.FileSystemFileHandle || !globalThis.FileSystemFileHandle.prototype.createSyncAccessHandle || !navigator?.storage?.getDirectory) return Promise.reject(/* @__PURE__ */ new Error(\"Missing required OPFS APIs.\"));\n\t\t\t\tif (!options || \"object\" !== typeof options) options = Object.create(null);\n\t\t\t\tconst urlParams = new URL(globalThis.location.href).searchParams;\n\t\t\t\tif (urlParams.has(\"opfs-disable\")) return Promise.resolve(sqlite3);\n\t\t\t\tif (void 0 === options.verbose) options.verbose = urlParams.has(\"opfs-verbose\") ? +urlParams.get(\"opfs-verbose\") || 2 : 1;\n\t\t\t\tif (void 0 === options.sanityChecks) options.sanityChecks = urlParams.has(\"opfs-sanity-check\");\n\t\t\t\tif (void 0 === options.proxyUri) options.proxyUri = callee.defaultProxyUri;\n\t\t\t\tif (\"function\" === typeof options.proxyUri) options.proxyUri = options.proxyUri();\n\t\t\t\treturn new Promise(function(promiseResolve_, promiseReject_) {\n\t\t\t\t\tconst loggers = [\n\t\t\t\t\t\tsqlite3.config.error,\n\t\t\t\t\t\tsqlite3.config.warn,\n\t\t\t\t\t\tsqlite3.config.log\n\t\t\t\t\t];\n\t\t\t\t\tconst logImpl = (level, ...args) => {\n\t\t\t\t\t\tif (options.verbose > level) loggers[level](\"OPFS syncer:\", ...args);\n\t\t\t\t\t};\n\t\t\t\t\tconst log = (...args) => logImpl(2, ...args);\n\t\t\t\t\tconst warn = (...args) => logImpl(1, ...args);\n\t\t\t\t\tconst error = (...args) => logImpl(0, ...args);\n\t\t\t\t\tconst toss = sqlite3.util.toss;\n\t\t\t\t\tconst capi = sqlite3.capi;\n\t\t\t\t\tconst util = sqlite3.util;\n\t\t\t\t\tconst wasm = sqlite3.wasm;\n\t\t\t\t\tconst sqlite3_vfs = capi.sqlite3_vfs;\n\t\t\t\t\tconst sqlite3_file = capi.sqlite3_file;\n\t\t\t\t\tconst sqlite3_io_methods = capi.sqlite3_io_methods;\n\t\t\t\t\t/**\n\t\t\t\t\tGeneric utilities for working with OPFS. This will get filled out\n\t\t\t\t\tby the Promise setup and, on success, installed as sqlite3.opfs.\n\t\t\t\t\t\n\t\t\t\t\tACHTUNG: do not rely on these APIs in client code. They are\n\t\t\t\t\texperimental and subject to change or removal as the\n\t\t\t\t\tOPFS-specific sqlite3_vfs evolves.\n\t\t\t\t\t*/\n\t\t\t\t\tconst opfsUtil = Object.create(null);\n\t\t\t\t\t/**\n\t\t\t\t\tReturns true if _this_ thread has access to the OPFS APIs.\n\t\t\t\t\t*/\n\t\t\t\t\tconst thisThreadHasOPFS = () => {\n\t\t\t\t\t\treturn globalThis.FileSystemHandle && globalThis.FileSystemDirectoryHandle && globalThis.FileSystemFileHandle && globalThis.FileSystemFileHandle.prototype.createSyncAccessHandle && navigator?.storage?.getDirectory;\n\t\t\t\t\t};\n\t\t\t\t\t/**\n\t\t\t\t\tNot part of the public API. Solely for internal/development\n\t\t\t\t\tuse.\n\t\t\t\t\t*/\n\t\t\t\t\topfsUtil.metrics = {\n\t\t\t\t\t\tdump: function() {\n\t\t\t\t\t\t\tlet k, n = 0, t = 0, w = 0;\n\t\t\t\t\t\t\tfor (k in state.opIds) {\n\t\t\t\t\t\t\t\tconst m = metrics[k];\n\t\t\t\t\t\t\t\tn += m.count;\n\t\t\t\t\t\t\t\tt += m.time;\n\t\t\t\t\t\t\t\tw += m.wait;\n\t\t\t\t\t\t\t\tm.avgTime = m.count && m.time ? m.time / m.count : 0;\n\t\t\t\t\t\t\t\tm.avgWait = m.count && m.wait ? m.wait / m.count : 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsqlite3.config.log(globalThis.location.href, \"metrics for\", globalThis.location.href, \":\", metrics, \"\\nTotal of\", n, \"op(s) for\", t, \"ms (incl. \" + w + \" ms of waiting on the async side)\");\n\t\t\t\t\t\t\tsqlite3.config.log(\"Serialization metrics:\", metrics.s11n);\n\t\t\t\t\t\t\tW.postMessage({ type: \"opfs-async-metrics\" });\n\t\t\t\t\t\t},\n\t\t\t\t\t\treset: function() {\n\t\t\t\t\t\t\tlet k;\n\t\t\t\t\t\t\tconst r = (m) => m.count = m.time = m.wait = 0;\n\t\t\t\t\t\t\tfor (k in state.opIds) r(metrics[k] = Object.create(null));\n\t\t\t\t\t\t\tlet s = metrics.s11n = Object.create(null);\n\t\t\t\t\t\t\ts = s.serialize = Object.create(null);\n\t\t\t\t\t\t\ts.count = s.time = 0;\n\t\t\t\t\t\t\ts = metrics.s11n.deserialize = Object.create(null);\n\t\t\t\t\t\t\ts.count = s.time = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tconst opfsIoMethods = new sqlite3_io_methods();\n\t\t\t\t\tconst opfsVfs = new sqlite3_vfs().addOnDispose(() => opfsIoMethods.dispose());\n\t\t\t\t\tlet promiseWasRejected = void 0;\n\t\t\t\t\tconst promiseReject = (err) => {\n\t\t\t\t\t\tpromiseWasRejected = true;\n\t\t\t\t\t\topfsVfs.dispose();\n\t\t\t\t\t\treturn promiseReject_(err);\n\t\t\t\t\t};\n\t\t\t\t\tconst promiseResolve = () => {\n\t\t\t\t\t\tpromiseWasRejected = false;\n\t\t\t\t\t\treturn promiseResolve_(sqlite3);\n\t\t\t\t\t};\n\t\t\t\t\tconst W = new Worker(new URL(\"sqlite3-opfs-async-proxy.js\", import.meta.url));\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tif (void 0 === promiseWasRejected) promiseReject(/* @__PURE__ */ new Error(\"Timeout while waiting for OPFS async proxy worker.\"));\n\t\t\t\t\t}, 4e3);\n\t\t\t\t\tW._originalOnError = W.onerror;\n\t\t\t\t\tW.onerror = function(err) {\n\t\t\t\t\t\terror(\"Error initializing OPFS asyncer:\", err);\n\t\t\t\t\t\tpromiseReject(/* @__PURE__ */ new Error(\"Loading OPFS async Worker failed for unknown reasons.\"));\n\t\t\t\t\t};\n\t\t\t\t\tconst pDVfs = capi.sqlite3_vfs_find(null);\n\t\t\t\t\tconst dVfs = pDVfs ? new sqlite3_vfs(pDVfs) : null;\n\t\t\t\t\topfsIoMethods.$iVersion = 1;\n\t\t\t\t\topfsVfs.$iVersion = 2;\n\t\t\t\t\topfsVfs.$szOsFile = capi.sqlite3_file.structInfo.sizeof;\n\t\t\t\t\topfsVfs.$mxPathname = 1024;\n\t\t\t\t\topfsVfs.$zName = wasm.allocCString(\"opfs\");\n\t\t\t\t\topfsVfs.$xDlOpen = opfsVfs.$xDlError = opfsVfs.$xDlSym = opfsVfs.$xDlClose = null;\n\t\t\t\t\topfsVfs.addOnDispose(\"$zName\", opfsVfs.$zName, \"cleanup default VFS wrapper\", () => dVfs ? dVfs.dispose() : null);\n\t\t\t\t\t/**\n\t\t\t\t\tPedantic sidebar about opfsVfs.ondispose: the entries in that array\n\t\t\t\t\tare items to clean up when opfsVfs.dispose() is called, but in this\n\t\t\t\t\tenvironment it will never be called. The VFS instance simply\n\t\t\t\t\thangs around until the WASM module instance is cleaned up. We\n\t\t\t\t\t\"could\" _hypothetically_ clean it up by \"importing\" an\n\t\t\t\t\tsqlite3_os_end() impl into the wasm build, but the shutdown order\n\t\t\t\t\tof the wasm engine and the JS one are undefined so there is no\n\t\t\t\t\tguaranty that the opfsVfs instance would be available in one\n\t\t\t\t\tenvironment or the other when sqlite3_os_end() is called (_if_ it\n\t\t\t\t\tgets called at all in a wasm build, which is undefined).\n\t\t\t\t\t*/\n\t\t\t\t\t/**\n\t\t\t\t\tState which we send to the async-api Worker or share with it.\n\t\t\t\t\tThis object must initially contain only cloneable or sharable\n\t\t\t\t\tobjects. After the worker's \"inited\" message arrives, other types\n\t\t\t\t\tof data may be added to it.\n\t\t\t\t\t\n\t\t\t\t\tFor purposes of Atomics.wait() and Atomics.notify(), we use a\n\t\t\t\t\tSharedArrayBuffer with one slot reserved for each of the API\n\t\t\t\t\tproxy's methods. The sync side of the API uses Atomics.wait()\n\t\t\t\t\ton the corresponding slot and the async side uses\n\t\t\t\t\tAtomics.notify() on that slot.\n\t\t\t\t\t\n\t\t\t\t\tThe approach of using a single SAB to serialize comms for all\n\t\t\t\t\tinstances might(?) lead to deadlock situations in multi-db\n\t\t\t\t\tcases. We should probably have one SAB here with a single slot\n\t\t\t\t\tfor locking a per-file initialization step and then allocate a\n\t\t\t\t\tseparate SAB like the above one for each file. That will\n\t\t\t\t\trequire a bit of acrobatics but should be feasible. The most\n\t\t\t\t\tproblematic part is that xOpen() would have to use\n\t\t\t\t\tpostMessage() to communicate its SharedArrayBuffer, and mixing\n\t\t\t\t\tthat approach with Atomics.wait/notify() gets a bit messy.\n\t\t\t\t\t*/\n\t\t\t\t\tconst state = Object.create(null);\n\t\t\t\t\tstate.verbose = options.verbose;\n\t\t\t\t\tstate.littleEndian = (() => {\n\t\t\t\t\t\tconst buffer = /* @__PURE__ */ new ArrayBuffer(2);\n\t\t\t\t\t\tnew DataView(buffer).setInt16(0, 256, true);\n\t\t\t\t\t\treturn new Int16Array(buffer)[0] === 256;\n\t\t\t\t\t})();\n\t\t\t\t\t/**\n\t\t\t\t\tasyncIdleWaitTime is how long (ms) to wait, in the async proxy,\n\t\t\t\t\tfor each Atomics.wait() when waiting on inbound VFS API calls.\n\t\t\t\t\tWe need to wake up periodically to give the thread a chance to\n\t\t\t\t\tdo other things. If this is too high (e.g. 500ms) then even two\n\t\t\t\t\tworkers/tabs can easily run into locking errors. Some multiple\n\t\t\t\t\tof this value is also used for determining how long to wait on\n\t\t\t\t\tlock contention to free up.\n\t\t\t\t\t*/\n\t\t\t\t\tstate.asyncIdleWaitTime = 150;\n\t\t\t\t\t/**\n\t\t\t\t\tWhether the async counterpart should log exceptions to\n\t\t\t\t\tthe serialization channel. That produces a great deal of\n\t\t\t\t\tnoise for seemingly innocuous things like xAccess() checks\n\t\t\t\t\tfor missing files, so this option may have one of 3 values:\n\t\t\t\t\t\n\t\t\t\t\t0 = no exception logging.\n\t\t\t\t\t\n\t\t\t\t\t1 = only log exceptions for \"significant\" ops like xOpen(),\n\t\t\t\t\txRead(), and xWrite().\n\t\t\t\t\t\n\t\t\t\t\t2 = log all exceptions.\n\t\t\t\t\t*/\n\t\t\t\t\tstate.asyncS11nExceptions = 1;\n\t\t\t\t\tstate.fileBufferSize = 1024 * 64;\n\t\t\t\t\tstate.sabS11nOffset = state.fileBufferSize;\n\t\t\t\t\t/**\n\t\t\t\t\tThe size of the block in our SAB for serializing arguments and\n\t\t\t\t\tresult values. Needs to be large enough to hold serialized\n\t\t\t\t\tvalues of any of the proxied APIs. Filenames are the largest\n\t\t\t\t\tpart but are limited to opfsVfs.$mxPathname bytes. We also\n\t\t\t\t\tstore exceptions there, so it needs to be long enough to hold\n\t\t\t\t\ta reasonably long exception string.\n\t\t\t\t\t*/\n\t\t\t\t\tstate.sabS11nSize = opfsVfs.$mxPathname * 2;\n\t\t\t\t\t/**\n\t\t\t\t\tThe SAB used for all data I/O between the synchronous and\n\t\t\t\t\tasync halves (file i/o and arg/result s11n).\n\t\t\t\t\t*/\n\t\t\t\t\tstate.sabIO = new SharedArrayBuffer(state.fileBufferSize + state.sabS11nSize);\n\t\t\t\t\tstate.opIds = Object.create(null);\n\t\t\t\t\tconst metrics = Object.create(null);\n\t\t\t\t\t{\n\t\t\t\t\t\tlet i = 0;\n\t\t\t\t\t\tstate.opIds.whichOp = i++;\n\t\t\t\t\t\tstate.opIds.rc = i++;\n\t\t\t\t\t\tstate.opIds.xAccess = i++;\n\t\t\t\t\t\tstate.opIds.xClose = i++;\n\t\t\t\t\t\tstate.opIds.xDelete = i++;\n\t\t\t\t\t\tstate.opIds.xDeleteNoWait = i++;\n\t\t\t\t\t\tstate.opIds.xFileSize = i++;\n\t\t\t\t\t\tstate.opIds.xLock = i++;\n\t\t\t\t\t\tstate.opIds.xOpen = i++;\n\t\t\t\t\t\tstate.opIds.xRead = i++;\n\t\t\t\t\t\tstate.opIds.xSleep = i++;\n\t\t\t\t\t\tstate.opIds.xSync = i++;\n\t\t\t\t\t\tstate.opIds.xTruncate = i++;\n\t\t\t\t\t\tstate.opIds.xUnlock = i++;\n\t\t\t\t\t\tstate.opIds.xWrite = i++;\n\t\t\t\t\t\tstate.opIds.mkdir = i++;\n\t\t\t\t\t\tstate.opIds[\"opfs-async-metrics\"] = i++;\n\t\t\t\t\t\tstate.opIds[\"opfs-async-shutdown\"] = i++;\n\t\t\t\t\t\tstate.opIds.retry = i++;\n\t\t\t\t\t\tstate.sabOP = new SharedArrayBuffer(i * 4);\n\t\t\t\t\t\topfsUtil.metrics.reset();\n\t\t\t\t\t}\n\t\t\t\t\t/**\n\t\t\t\t\tSQLITE_xxx constants to export to the async worker\n\t\t\t\t\tcounterpart...\n\t\t\t\t\t*/\n\t\t\t\t\tstate.sq3Codes = Object.create(null);\n\t\t\t\t\t[\n\t\t\t\t\t\t\"SQLITE_ACCESS_EXISTS\",\n\t\t\t\t\t\t\"SQLITE_ACCESS_READWRITE\",\n\t\t\t\t\t\t\"SQLITE_BUSY\",\n\t\t\t\t\t\t\"SQLITE_CANTOPEN\",\n\t\t\t\t\t\t\"SQLITE_ERROR\",\n\t\t\t\t\t\t\"SQLITE_IOERR\",\n\t\t\t\t\t\t\"SQLITE_IOERR_ACCESS\",\n\t\t\t\t\t\t\"SQLITE_IOERR_CLOSE\",\n\t\t\t\t\t\t\"SQLITE_IOERR_DELETE\",\n\t\t\t\t\t\t\"SQLITE_IOERR_FSYNC\",\n\t\t\t\t\t\t\"SQLITE_IOERR_LOCK\",\n\t\t\t\t\t\t\"SQLITE_IOERR_READ\",\n\t\t\t\t\t\t\"SQLITE_IOERR_SHORT_READ\",\n\t\t\t\t\t\t\"SQLITE_IOERR_TRUNCATE\",\n\t\t\t\t\t\t\"SQLITE_IOERR_UNLOCK\",\n\t\t\t\t\t\t\"SQLITE_IOERR_WRITE\",\n\t\t\t\t\t\t\"SQLITE_LOCK_EXCLUSIVE\",\n\t\t\t\t\t\t\"SQLITE_LOCK_NONE\",\n\t\t\t\t\t\t\"SQLITE_LOCK_PENDING\",\n\t\t\t\t\t\t\"SQLITE_LOCK_RESERVED\",\n\t\t\t\t\t\t\"SQLITE_LOCK_SHARED\",\n\t\t\t\t\t\t\"SQLITE_LOCKED\",\n\t\t\t\t\t\t\"SQLITE_MISUSE\",\n\t\t\t\t\t\t\"SQLITE_NOTFOUND\",\n\t\t\t\t\t\t\"SQLITE_OPEN_CREATE\",\n\t\t\t\t\t\t\"SQLITE_OPEN_DELETEONCLOSE\",\n\t\t\t\t\t\t\"SQLITE_OPEN_MAIN_DB\",\n\t\t\t\t\t\t\"SQLITE_OPEN_READONLY\"\n\t\t\t\t\t].forEach((k) => {\n\t\t\t\t\t\tif (void 0 === (state.sq3Codes[k] = capi[k])) toss(\"Maintenance required: not found:\", k);\n\t\t\t\t\t});\n\t\t\t\t\tstate.opfsFlags = Object.assign(Object.create(null), {\n\t\t\t\t\t\tOPFS_UNLOCK_ASAP: 1,\n\t\t\t\t\t\tOPFS_UNLINK_BEFORE_OPEN: 2,\n\t\t\t\t\t\tdefaultUnlockAsap: false\n\t\t\t\t\t});\n\t\t\t\t\t/**\n\t\t\t\t\tRuns the given operation (by name) in the async worker\n\t\t\t\t\tcounterpart, waits for its response, and returns the result\n\t\t\t\t\twhich the async worker writes to SAB[state.opIds.rc]. The\n\t\t\t\t\t2nd and subsequent arguments must be the arguments for the\n\t\t\t\t\tasync op.\n\t\t\t\t\t*/\n\t\t\t\t\tconst opRun = (op, ...args) => {\n\t\t\t\t\t\tconst opNdx = state.opIds[op] || toss(\"Invalid op ID:\", op);\n\t\t\t\t\t\tstate.s11n.serialize(...args);\n\t\t\t\t\t\tAtomics.store(state.sabOPView, state.opIds.rc, -1);\n\t\t\t\t\t\tAtomics.store(state.sabOPView, state.opIds.whichOp, opNdx);\n\t\t\t\t\t\tAtomics.notify(state.sabOPView, state.opIds.whichOp);\n\t\t\t\t\t\tconst t = performance.now();\n\t\t\t\t\t\twhile (\"not-equal\" !== Atomics.wait(state.sabOPView, state.opIds.rc, -1));\n\t\t\t\t\t\tconst rc = Atomics.load(state.sabOPView, state.opIds.rc);\n\t\t\t\t\t\tmetrics[op].wait += performance.now() - t;\n\t\t\t\t\t\tif (rc && state.asyncS11nExceptions) {\n\t\t\t\t\t\t\tconst err = state.s11n.deserialize();\n\t\t\t\t\t\t\tif (err) error(op + \"() async error:\", ...err);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn rc;\n\t\t\t\t\t};\n\t\t\t\t\t/**\n\t\t\t\t\tNot part of the public API. Only for test/development use.\n\t\t\t\t\t*/\n\t\t\t\t\topfsUtil.debug = {\n\t\t\t\t\t\tasyncShutdown: () => {\n\t\t\t\t\t\t\twarn(\"Shutting down OPFS async listener. The OPFS VFS will no longer work.\");\n\t\t\t\t\t\t\topRun(\"opfs-async-shutdown\");\n\t\t\t\t\t\t},\n\t\t\t\t\t\tasyncRestart: () => {\n\t\t\t\t\t\t\twarn(\"Attempting to restart OPFS VFS async listener. Might work, might not.\");\n\t\t\t\t\t\t\tW.postMessage({ type: \"opfs-async-restart\" });\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tconst initS11n = () => {\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\t\t\t\t\t\tACHTUNG: this code is 100% duplicated in the other half of\n\t\t\t\t\t\tthis proxy! The documentation is maintained in the\n\t\t\t\t\t\t\"synchronous half\".\n\t\t\t\t\t\t!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\t\t\t\t\t\t\n\t\t\t\t\t\tThis proxy de/serializes cross-thread function arguments and\n\t\t\t\t\t\toutput-pointer values via the state.sabIO SharedArrayBuffer,\n\t\t\t\t\t\tusing the region defined by (state.sabS11nOffset,\n\t\t\t\t\t\tstate.sabS11nOffset + state.sabS11nSize]. Only one dataset is\n\t\t\t\t\t\trecorded at a time.\n\t\t\t\t\t\t\n\t\t\t\t\t\tThis is not a general-purpose format. It only supports the\n\t\t\t\t\t\trange of operations, and data sizes, needed by the\n\t\t\t\t\t\tsqlite3_vfs and sqlite3_io_methods operations. Serialized\n\t\t\t\t\t\tdata are transient and this serialization algorithm may\n\t\t\t\t\t\tchange at any time.\n\t\t\t\t\t\t\n\t\t\t\t\t\tThe data format can be succinctly summarized as:\n\t\t\t\t\t\t\n\t\t\t\t\t\tNt...Td...D\n\t\t\t\t\t\t\n\t\t\t\t\t\tWhere:\n\t\t\t\t\t\t\n\t\t\t\t\t\t- N = number of entries (1 byte)\n\t\t\t\t\t\t\n\t\t\t\t\t\t- t = type ID of first argument (1 byte)\n\t\t\t\t\t\t\n\t\t\t\t\t\t- ...T = type IDs of the 2nd and subsequent arguments (1 byte\n\t\t\t\t\t\teach).\n\t\t\t\t\t\t\n\t\t\t\t\t\t- d = raw bytes of first argument (per-type size).\n\t\t\t\t\t\t\n\t\t\t\t\t\t- ...D = raw bytes of the 2nd and subsequent arguments (per-type\n\t\t\t\t\t\tsize).\n\t\t\t\t\t\t\n\t\t\t\t\t\tAll types except strings have fixed sizes. Strings are stored\n\t\t\t\t\t\tusing their TextEncoder/TextDecoder representations. It would\n\t\t\t\t\t\targuably make more sense to store them as Int16Arrays of\n\t\t\t\t\t\ttheir JS character values, but how best/fastest to get that\n\t\t\t\t\t\tin and out of string form is an open point. Initial\n\t\t\t\t\t\texperimentation with that approach did not gain us any speed.\n\t\t\t\t\t\t\n\t\t\t\t\t\tHistorical note: this impl was initially about 1% this size by\n\t\t\t\t\t\tusing using JSON.stringify/parse(), but using fit-to-purpose\n\t\t\t\t\t\tserialization saves considerable runtime.\n\t\t\t\t\t\t*/\n\t\t\t\t\t\tif (state.s11n) return state.s11n;\n\t\t\t\t\t\tconst textDecoder = new TextDecoder(), textEncoder = new TextEncoder(\"utf-8\"), viewU8 = new Uint8Array(state.sabIO, state.sabS11nOffset, state.sabS11nSize), viewDV = new DataView(state.sabIO, state.sabS11nOffset, state.sabS11nSize);\n\t\t\t\t\t\tstate.s11n = Object.create(null);\n\t\t\t\t\t\tconst TypeIds = Object.create(null);\n\t\t\t\t\t\tTypeIds.number = {\n\t\t\t\t\t\t\tid: 1,\n\t\t\t\t\t\t\tsize: 8,\n\t\t\t\t\t\t\tgetter: \"getFloat64\",\n\t\t\t\t\t\t\tsetter: \"setFloat64\"\n\t\t\t\t\t\t};\n\t\t\t\t\t\tTypeIds.bigint = {\n\t\t\t\t\t\t\tid: 2,\n\t\t\t\t\t\t\tsize: 8,\n\t\t\t\t\t\t\tgetter: \"getBigInt64\",\n\t\t\t\t\t\t\tsetter: \"setBigInt64\"\n\t\t\t\t\t\t};\n\t\t\t\t\t\tTypeIds.boolean = {\n\t\t\t\t\t\t\tid: 3,\n\t\t\t\t\t\t\tsize: 4,\n\t\t\t\t\t\t\tgetter: \"getInt32\",\n\t\t\t\t\t\t\tsetter: \"setInt32\"\n\t\t\t\t\t\t};\n\t\t\t\t\t\tTypeIds.string = { id: 4 };\n\t\t\t\t\t\tconst getTypeId = (v) => TypeIds[typeof v] || toss(\"Maintenance required: this value type cannot be serialized.\", v);\n\t\t\t\t\t\tconst getTypeIdById = (tid) => {\n\t\t\t\t\t\t\tswitch (tid) {\n\t\t\t\t\t\t\t\tcase TypeIds.number.id: return TypeIds.number;\n\t\t\t\t\t\t\t\tcase TypeIds.bigint.id: return TypeIds.bigint;\n\t\t\t\t\t\t\t\tcase TypeIds.boolean.id: return TypeIds.boolean;\n\t\t\t\t\t\t\t\tcase TypeIds.string.id: return TypeIds.string;\n\t\t\t\t\t\t\t\tdefault: toss(\"Invalid type ID:\", tid);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\t/**\n\t\t\t\t\t\tReturns an array of the deserialized state stored by the most\n\t\t\t\t\t\trecent serialize() operation (from this thread or the\n\t\t\t\t\t\tcounterpart thread), or null if the serialization buffer is\n\t\t\t\t\t\tempty.  If passed a truthy argument, the serialization buffer\n\t\t\t\t\t\tis cleared after deserialization.\n\t\t\t\t\t\t*/\n\t\t\t\t\t\tstate.s11n.deserialize = function(clear = false) {\n\t\t\t\t\t\t\t++metrics.s11n.deserialize.count;\n\t\t\t\t\t\t\tconst t = performance.now();\n\t\t\t\t\t\t\tconst argc = viewU8[0];\n\t\t\t\t\t\t\tconst rc = argc ? [] : null;\n\t\t\t\t\t\t\tif (argc) {\n\t\t\t\t\t\t\t\tconst typeIds = [];\n\t\t\t\t\t\t\t\tlet offset = 1, i, n, v;\n\t\t\t\t\t\t\t\tfor (i = 0; i < argc; ++i, ++offset) typeIds.push(getTypeIdById(viewU8[offset]));\n\t\t\t\t\t\t\t\tfor (i = 0; i < argc; ++i) {\n\t\t\t\t\t\t\t\t\tconst t = typeIds[i];\n\t\t\t\t\t\t\t\t\tif (t.getter) {\n\t\t\t\t\t\t\t\t\t\tv = viewDV[t.getter](offset, state.littleEndian);\n\t\t\t\t\t\t\t\t\t\toffset += t.size;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tn = viewDV.getInt32(offset, state.littleEndian);\n\t\t\t\t\t\t\t\t\t\toffset += 4;\n\t\t\t\t\t\t\t\t\t\tv = textDecoder.decode(viewU8.slice(offset, offset + n));\n\t\t\t\t\t\t\t\t\t\toffset += n;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\trc.push(v);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (clear) viewU8[0] = 0;\n\t\t\t\t\t\t\tmetrics.s11n.deserialize.time += performance.now() - t;\n\t\t\t\t\t\t\treturn rc;\n\t\t\t\t\t\t};\n\t\t\t\t\t\t/**\n\t\t\t\t\t\tSerializes all arguments to the shared buffer for consumption\n\t\t\t\t\t\tby the counterpart thread.\n\t\t\t\t\t\t\n\t\t\t\t\t\tThis routine is only intended for serializing OPFS VFS\n\t\t\t\t\t\targuments and (in at least one special case) result values,\n\t\t\t\t\t\tand the buffer is sized to be able to comfortably handle\n\t\t\t\t\t\tthose.\n\t\t\t\t\t\t\n\t\t\t\t\t\tIf passed no arguments then it zeroes out the serialization\n\t\t\t\t\t\tstate.\n\t\t\t\t\t\t*/\n\t\t\t\t\t\tstate.s11n.serialize = function(...args) {\n\t\t\t\t\t\t\tconst t = performance.now();\n\t\t\t\t\t\t\t++metrics.s11n.serialize.count;\n\t\t\t\t\t\t\tif (args.length) {\n\t\t\t\t\t\t\t\tconst typeIds = [];\n\t\t\t\t\t\t\t\tlet i = 0, offset = 1;\n\t\t\t\t\t\t\t\tviewU8[0] = args.length & 255;\n\t\t\t\t\t\t\t\tfor (; i < args.length; ++i, ++offset) {\n\t\t\t\t\t\t\t\t\ttypeIds.push(getTypeId(args[i]));\n\t\t\t\t\t\t\t\t\tviewU8[offset] = typeIds[i].id;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tfor (i = 0; i < args.length; ++i) {\n\t\t\t\t\t\t\t\t\tconst t = typeIds[i];\n\t\t\t\t\t\t\t\t\tif (t.setter) {\n\t\t\t\t\t\t\t\t\t\tviewDV[t.setter](offset, args[i], state.littleEndian);\n\t\t\t\t\t\t\t\t\t\toffset += t.size;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst s = textEncoder.encode(args[i]);\n\t\t\t\t\t\t\t\t\t\tviewDV.setInt32(offset, s.byteLength, state.littleEndian);\n\t\t\t\t\t\t\t\t\t\toffset += 4;\n\t\t\t\t\t\t\t\t\t\tviewU8.set(s, offset);\n\t\t\t\t\t\t\t\t\t\toffset += s.byteLength;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else viewU8[0] = 0;\n\t\t\t\t\t\t\tmetrics.s11n.serialize.time += performance.now() - t;\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn state.s11n;\n\t\t\t\t\t};\n\t\t\t\t\t/**\n\t\t\t\t\tGenerates a random ASCII string len characters long, intended for\n\t\t\t\t\tuse as a temporary file name.\n\t\t\t\t\t*/\n\t\t\t\t\tconst randomFilename = function f(len = 16) {\n\t\t\t\t\t\tif (!f._chars) {\n\t\t\t\t\t\t\tf._chars = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012346789\";\n\t\t\t\t\t\t\tf._n = f._chars.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst a = [];\n\t\t\t\t\t\tlet i = 0;\n\t\t\t\t\t\tfor (; i < len; ++i) {\n\t\t\t\t\t\t\tconst ndx = Math.random() * (f._n * 64) % f._n | 0;\n\t\t\t\t\t\t\ta[i] = f._chars[ndx];\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn a.join(\"\");\n\t\t\t\t\t};\n\t\t\t\t\t/**\n\t\t\t\t\tMap of sqlite3_file pointers to objects constructed by xOpen().\n\t\t\t\t\t*/\n\t\t\t\t\tconst __openFiles = Object.create(null);\n\t\t\t\t\tconst opTimer = Object.create(null);\n\t\t\t\t\topTimer.op = void 0;\n\t\t\t\t\topTimer.start = void 0;\n\t\t\t\t\tconst mTimeStart = (op) => {\n\t\t\t\t\t\topTimer.start = performance.now();\n\t\t\t\t\t\topTimer.op = op;\n\t\t\t\t\t\t++metrics[op].count;\n\t\t\t\t\t};\n\t\t\t\t\tconst mTimeEnd = () => metrics[opTimer.op].time += performance.now() - opTimer.start;\n\t\t\t\t\t/**\n\t\t\t\t\tImpls for the sqlite3_io_methods methods. Maintenance reminder:\n\t\t\t\t\tmembers are in alphabetical order to simplify finding them.\n\t\t\t\t\t*/\n\t\t\t\t\tconst ioSyncWrappers = {\n\t\t\t\t\t\txCheckReservedLock: function(pFile, pOut) {\n\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\tAs of late 2022, only a single lock can be held on an OPFS\n\t\t\t\t\t\t\tfile. We have no way of checking whether any _other_ db\n\t\t\t\t\t\t\tconnection has a lock except by trying to obtain and (on\n\t\t\t\t\t\t\tsuccess) release a sync-handle for it, but doing so would\n\t\t\t\t\t\t\tinvolve an inherent race condition. For the time being,\n\t\t\t\t\t\t\tpending a better solution, we simply report whether the\n\t\t\t\t\t\t\tgiven pFile is open.\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tUpdate 2024-06-12: based on forum discussions, this\n\t\t\t\t\t\t\tfunction now always sets pOut to 0 (false):\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\thttps://sqlite.org/forum/forumpost/a2f573b00cda1372\n\t\t\t\t\t\t\t*/\n\t\t\t\t\t\t\twasm.poke(pOut, 0, \"i32\");\n\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t},\n\t\t\t\t\t\txClose: function(pFile) {\n\t\t\t\t\t\t\tmTimeStart(\"xClose\");\n\t\t\t\t\t\t\tlet rc = 0;\n\t\t\t\t\t\t\tconst f = __openFiles[pFile];\n\t\t\t\t\t\t\tif (f) {\n\t\t\t\t\t\t\t\tdelete __openFiles[pFile];\n\t\t\t\t\t\t\t\trc = opRun(\"xClose\", pFile);\n\t\t\t\t\t\t\t\tif (f.sq3File) f.sq3File.dispose();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tmTimeEnd();\n\t\t\t\t\t\t\treturn rc;\n\t\t\t\t\t\t},\n\t\t\t\t\t\txDeviceCharacteristics: function(pFile) {\n\t\t\t\t\t\t\treturn capi.SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN;\n\t\t\t\t\t\t},\n\t\t\t\t\t\txFileControl: function(pFile, opId, pArg) {\n\t\t\t\t\t\t\treturn capi.SQLITE_NOTFOUND;\n\t\t\t\t\t\t},\n\t\t\t\t\t\txFileSize: function(pFile, pSz64) {\n\t\t\t\t\t\t\tmTimeStart(\"xFileSize\");\n\t\t\t\t\t\t\tlet rc = opRun(\"xFileSize\", pFile);\n\t\t\t\t\t\t\tif (0 == rc) try {\n\t\t\t\t\t\t\t\tconst sz = state.s11n.deserialize()[0];\n\t\t\t\t\t\t\t\twasm.poke(pSz64, sz, \"i64\");\n\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\terror(\"Unexpected error reading xFileSize() result:\", e);\n\t\t\t\t\t\t\t\trc = state.sq3Codes.SQLITE_IOERR;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tmTimeEnd();\n\t\t\t\t\t\t\treturn rc;\n\t\t\t\t\t\t},\n\t\t\t\t\t\txLock: function(pFile, lockType) {\n\t\t\t\t\t\t\tmTimeStart(\"xLock\");\n\t\t\t\t\t\t\tconst f = __openFiles[pFile];\n\t\t\t\t\t\t\tlet rc = 0;\n\t\t\t\t\t\t\tif (!f.lockType) {\n\t\t\t\t\t\t\t\trc = opRun(\"xLock\", pFile, lockType);\n\t\t\t\t\t\t\t\tif (0 === rc) f.lockType = lockType;\n\t\t\t\t\t\t\t} else f.lockType = lockType;\n\t\t\t\t\t\t\tmTimeEnd();\n\t\t\t\t\t\t\treturn rc;\n\t\t\t\t\t\t},\n\t\t\t\t\t\txRead: function(pFile, pDest, n, offset64) {\n\t\t\t\t\t\t\tmTimeStart(\"xRead\");\n\t\t\t\t\t\t\tconst f = __openFiles[pFile];\n\t\t\t\t\t\t\tlet rc;\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\trc = opRun(\"xRead\", pFile, n, Number(offset64));\n\t\t\t\t\t\t\t\tif (0 === rc || capi.SQLITE_IOERR_SHORT_READ === rc)\n /**\n\t\t\t\t\t\t\t\tResults get written to the SharedArrayBuffer f.sabView.\n\t\t\t\t\t\t\t\tBecause the heap is _not_ a SharedArrayBuffer, we have\n\t\t\t\t\t\t\t\tto copy the results. TypedArray.set() seems to be the\n\t\t\t\t\t\t\t\tfastest way to copy this. */\n\t\t\t\t\t\t\t\twasm.heap8u().set(f.sabView.subarray(0, n), Number(pDest));\n\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\terror(\"xRead(\", arguments, \") failed:\", e, f);\n\t\t\t\t\t\t\t\trc = capi.SQLITE_IOERR_READ;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tmTimeEnd();\n\t\t\t\t\t\t\treturn rc;\n\t\t\t\t\t\t},\n\t\t\t\t\t\txSync: function(pFile, flags) {\n\t\t\t\t\t\t\tmTimeStart(\"xSync\");\n\t\t\t\t\t\t\t++metrics.xSync.count;\n\t\t\t\t\t\t\tconst rc = opRun(\"xSync\", pFile, flags);\n\t\t\t\t\t\t\tmTimeEnd();\n\t\t\t\t\t\t\treturn rc;\n\t\t\t\t\t\t},\n\t\t\t\t\t\txTruncate: function(pFile, sz64) {\n\t\t\t\t\t\t\tmTimeStart(\"xTruncate\");\n\t\t\t\t\t\t\tconst rc = opRun(\"xTruncate\", pFile, Number(sz64));\n\t\t\t\t\t\t\tmTimeEnd();\n\t\t\t\t\t\t\treturn rc;\n\t\t\t\t\t\t},\n\t\t\t\t\t\txUnlock: function(pFile, lockType) {\n\t\t\t\t\t\t\tmTimeStart(\"xUnlock\");\n\t\t\t\t\t\t\tconst f = __openFiles[pFile];\n\t\t\t\t\t\t\tlet rc = 0;\n\t\t\t\t\t\t\tif (capi.SQLITE_LOCK_NONE === lockType && f.lockType) rc = opRun(\"xUnlock\", pFile, lockType);\n\t\t\t\t\t\t\tif (0 === rc) f.lockType = lockType;\n\t\t\t\t\t\t\tmTimeEnd();\n\t\t\t\t\t\t\treturn rc;\n\t\t\t\t\t\t},\n\t\t\t\t\t\txWrite: function(pFile, pSrc, n, offset64) {\n\t\t\t\t\t\t\tmTimeStart(\"xWrite\");\n\t\t\t\t\t\t\tconst f = __openFiles[pFile];\n\t\t\t\t\t\t\tlet rc;\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tf.sabView.set(wasm.heap8u().subarray(Number(pSrc), Number(pSrc) + n));\n\t\t\t\t\t\t\t\trc = opRun(\"xWrite\", pFile, n, Number(offset64));\n\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\terror(\"xWrite(\", arguments, \") failed:\", e, f);\n\t\t\t\t\t\t\t\trc = capi.SQLITE_IOERR_WRITE;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tmTimeEnd();\n\t\t\t\t\t\t\treturn rc;\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t/**\n\t\t\t\t\tImpls for the sqlite3_vfs methods. Maintenance reminder: members\n\t\t\t\t\tare in alphabetical order to simplify finding them.\n\t\t\t\t\t*/\n\t\t\t\t\tconst vfsSyncWrappers = {\n\t\t\t\t\t\txAccess: function(pVfs, zName, flags, pOut) {\n\t\t\t\t\t\t\tmTimeStart(\"xAccess\");\n\t\t\t\t\t\t\tconst rc = opRun(\"xAccess\", wasm.cstrToJs(zName));\n\t\t\t\t\t\t\twasm.poke(pOut, rc ? 0 : 1, \"i32\");\n\t\t\t\t\t\t\tmTimeEnd();\n\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t},\n\t\t\t\t\t\txCurrentTime: function(pVfs, pOut) {\n\t\t\t\t\t\t\twasm.poke(pOut, 2440587.5 + (/* @__PURE__ */ new Date()).getTime() / 864e5, \"double\");\n\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t},\n\t\t\t\t\t\txCurrentTimeInt64: function(pVfs, pOut) {\n\t\t\t\t\t\t\twasm.poke(pOut, 2440587.5 * 864e5 + (/* @__PURE__ */ new Date()).getTime(), \"i64\");\n\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t},\n\t\t\t\t\t\txDelete: function(pVfs, zName, doSyncDir) {\n\t\t\t\t\t\t\tmTimeStart(\"xDelete\");\n\t\t\t\t\t\t\tconst rc = opRun(\"xDelete\", wasm.cstrToJs(zName), doSyncDir, false);\n\t\t\t\t\t\t\tmTimeEnd();\n\t\t\t\t\t\t\treturn rc;\n\t\t\t\t\t\t},\n\t\t\t\t\t\txFullPathname: function(pVfs, zName, nOut, pOut) {\n\t\t\t\t\t\t\treturn wasm.cstrncpy(pOut, zName, nOut) < nOut ? 0 : capi.SQLITE_CANTOPEN;\n\t\t\t\t\t\t},\n\t\t\t\t\t\txGetLastError: function(pVfs, nOut, pOut) {\n\t\t\t\t\t\t\twarn(\"OPFS xGetLastError() has nothing sensible to return.\");\n\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t},\n\t\t\t\t\t\txOpen: function f(pVfs, zName, pFile, flags, pOutFlags) {\n\t\t\t\t\t\t\tmTimeStart(\"xOpen\");\n\t\t\t\t\t\t\tlet opfsFlags = 0;\n\t\t\t\t\t\t\tif (0 === zName) zName = randomFilename();\n\t\t\t\t\t\t\telse if (wasm.isPtr(zName)) {\n\t\t\t\t\t\t\t\tif (capi.sqlite3_uri_boolean(zName, \"opfs-unlock-asap\", 0)) opfsFlags |= state.opfsFlags.OPFS_UNLOCK_ASAP;\n\t\t\t\t\t\t\t\tif (capi.sqlite3_uri_boolean(zName, \"delete-before-open\", 0)) opfsFlags |= state.opfsFlags.OPFS_UNLINK_BEFORE_OPEN;\n\t\t\t\t\t\t\t\tzName = wasm.cstrToJs(zName);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst fh = Object.create(null);\n\t\t\t\t\t\t\tfh.fid = pFile;\n\t\t\t\t\t\t\tfh.filename = zName;\n\t\t\t\t\t\t\tfh.sab = new SharedArrayBuffer(state.fileBufferSize);\n\t\t\t\t\t\t\tfh.flags = flags;\n\t\t\t\t\t\t\tfh.readOnly = !(capi.SQLITE_OPEN_CREATE & flags) && !!(flags & capi.SQLITE_OPEN_READONLY);\n\t\t\t\t\t\t\tconst rc = opRun(\"xOpen\", pFile, zName, flags, opfsFlags);\n\t\t\t\t\t\t\tif (!rc) {\n\t\t\t\t\t\t\t\tif (fh.readOnly) wasm.poke(pOutFlags, capi.SQLITE_OPEN_READONLY, \"i32\");\n\t\t\t\t\t\t\t\t__openFiles[pFile] = fh;\n\t\t\t\t\t\t\t\tfh.sabView = state.sabFileBufView;\n\t\t\t\t\t\t\t\tfh.sq3File = new sqlite3_file(pFile);\n\t\t\t\t\t\t\t\tfh.sq3File.$pMethods = opfsIoMethods.pointer;\n\t\t\t\t\t\t\t\tfh.lockType = capi.SQLITE_LOCK_NONE;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tmTimeEnd();\n\t\t\t\t\t\t\treturn rc;\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tif (dVfs) {\n\t\t\t\t\t\topfsVfs.$xRandomness = dVfs.$xRandomness;\n\t\t\t\t\t\topfsVfs.$xSleep = dVfs.$xSleep;\n\t\t\t\t\t}\n\t\t\t\t\tif (!opfsVfs.$xRandomness) vfsSyncWrappers.xRandomness = function(pVfs, nOut, pOut) {\n\t\t\t\t\t\tconst heap = wasm.heap8u();\n\t\t\t\t\t\tlet i = 0;\n\t\t\t\t\t\tconst npOut = Number(pOut);\n\t\t\t\t\t\tfor (; i < nOut; ++i) heap[npOut + i] = Math.random() * 255e3 & 255;\n\t\t\t\t\t\treturn i;\n\t\t\t\t\t};\n\t\t\t\t\tif (!opfsVfs.$xSleep) vfsSyncWrappers.xSleep = function(pVfs, ms) {\n\t\t\t\t\t\tAtomics.wait(state.sabOPView, state.opIds.xSleep, 0, ms);\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t};\n\t\t\t\t\t/**\n\t\t\t\t\tExpects an OPFS file path. It gets resolved, such that \"..\"\n\t\t\t\t\tcomponents are properly expanded, and returned. If the 2nd arg\n\t\t\t\t\tis true, the result is returned as an array of path elements,\n\t\t\t\t\telse an absolute path string is returned.\n\t\t\t\t\t*/\n\t\t\t\t\topfsUtil.getResolvedPath = function(filename, splitIt) {\n\t\t\t\t\t\tconst p = new URL(filename, \"file://irrelevant\").pathname;\n\t\t\t\t\t\treturn splitIt ? p.split(\"/\").filter((v) => !!v) : p;\n\t\t\t\t\t};\n\t\t\t\t\t/**\n\t\t\t\t\tTakes the absolute path to a filesystem element. Returns an\n\t\t\t\t\tarray of [handleOfContainingDir, filename]. If the 2nd argument\n\t\t\t\t\tis truthy then each directory element leading to the file is\n\t\t\t\t\tcreated along the way. Throws if any creation or resolution\n\t\t\t\t\tfails.\n\t\t\t\t\t*/\n\t\t\t\t\topfsUtil.getDirForFilename = async function f(absFilename, createDirs = false) {\n\t\t\t\t\t\tconst path = opfsUtil.getResolvedPath(absFilename, true);\n\t\t\t\t\t\tconst filename = path.pop();\n\t\t\t\t\t\tlet dh = opfsUtil.rootDirectory;\n\t\t\t\t\t\tfor (const dirName of path) if (dirName) dh = await dh.getDirectoryHandle(dirName, { create: !!createDirs });\n\t\t\t\t\t\treturn [dh, filename];\n\t\t\t\t\t};\n\t\t\t\t\t/**\n\t\t\t\t\tCreates the given directory name, recursively, in\n\t\t\t\t\tthe OPFS filesystem. Returns true if it succeeds or the\n\t\t\t\t\tdirectory already exists, else false.\n\t\t\t\t\t*/\n\t\t\t\t\topfsUtil.mkdir = async function(absDirName) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait opfsUtil.getDirForFilename(absDirName + \"/filepart\", true);\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t/**\n\t\t\t\t\tChecks whether the given OPFS filesystem entry exists,\n\t\t\t\t\treturning true if it does, false if it doesn't or if an\n\t\t\t\t\texception is intercepted while trying to make the\n\t\t\t\t\tdetermination.\n\t\t\t\t\t*/\n\t\t\t\t\topfsUtil.entryExists = async function(fsEntryName) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst [dh, fn] = await opfsUtil.getDirForFilename(fsEntryName);\n\t\t\t\t\t\t\tawait dh.getFileHandle(fn);\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t/**\n\t\t\t\t\tGenerates a random ASCII string, intended for use as a\n\t\t\t\t\ttemporary file name. Its argument is the length of the string,\n\t\t\t\t\tdefaulting to 16.\n\t\t\t\t\t*/\n\t\t\t\t\topfsUtil.randomFilename = randomFilename;\n\t\t\t\t\t/**\n\t\t\t\t\tReturns a promise which resolves to an object which represents\n\t\t\t\t\tall files and directories in the OPFS tree. The top-most object\n\t\t\t\t\thas two properties: `dirs` is an array of directory entries\n\t\t\t\t\t(described below) and `files` is a list of file names for all\n\t\t\t\t\tfiles in that directory.\n\t\t\t\t\t\n\t\t\t\t\tTraversal starts at sqlite3.opfs.rootDirectory.\n\t\t\t\t\t\n\t\t\t\t\tEach `dirs` entry is an object in this form:\n\t\t\t\t\t\n\t\t\t\t\t```\n\t\t\t\t\t{ name: directoryName,\n\t\t\t\t\tdirs: [...subdirs],\n\t\t\t\t\tfiles: [...file names]\n\t\t\t\t\t}\n\t\t\t\t\t```\n\t\t\t\t\t\n\t\t\t\t\tThe `files` and `subdirs` entries are always set but may be\n\t\t\t\t\tempty arrays.\n\t\t\t\t\t\n\t\t\t\t\tThe returned object has the same structure but its `name` is\n\t\t\t\t\tan empty string. All returned objects are created with\n\t\t\t\t\tObject.create(null), so have no prototype.\n\t\t\t\t\t\n\t\t\t\t\tDesign note: the entries do not contain more information,\n\t\t\t\t\te.g. file sizes, because getting such info is not only\n\t\t\t\t\texpensive but is subject to locking-related errors.\n\t\t\t\t\t*/\n\t\t\t\t\topfsUtil.treeList = async function() {\n\t\t\t\t\t\tconst doDir = async function callee(dirHandle, tgt) {\n\t\t\t\t\t\t\ttgt.name = dirHandle.name;\n\t\t\t\t\t\t\ttgt.dirs = [];\n\t\t\t\t\t\t\ttgt.files = [];\n\t\t\t\t\t\t\tfor await (const handle of dirHandle.values()) if (\"directory\" === handle.kind) {\n\t\t\t\t\t\t\t\tconst subDir = Object.create(null);\n\t\t\t\t\t\t\t\ttgt.dirs.push(subDir);\n\t\t\t\t\t\t\t\tawait callee(handle, subDir);\n\t\t\t\t\t\t\t} else tgt.files.push(handle.name);\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst root = Object.create(null);\n\t\t\t\t\t\tawait doDir(opfsUtil.rootDirectory, root);\n\t\t\t\t\t\treturn root;\n\t\t\t\t\t};\n\t\t\t\t\t/**\n\t\t\t\t\tIrrevocably deletes _all_ files in the current origin's OPFS.\n\t\t\t\t\tObviously, this must be used with great caution. It may throw\n\t\t\t\t\tan exception if removal of anything fails (e.g. a file is\n\t\t\t\t\tlocked), but the precise conditions under which the underlying\n\t\t\t\t\tAPIs will throw are not documented (so we cannot tell you what\n\t\t\t\t\tthey are).\n\t\t\t\t\t*/\n\t\t\t\t\topfsUtil.rmfr = async function() {\n\t\t\t\t\t\tconst dir = opfsUtil.rootDirectory, opt = { recurse: true };\n\t\t\t\t\t\tfor await (const handle of dir.values()) dir.removeEntry(handle.name, opt);\n\t\t\t\t\t};\n\t\t\t\t\t/**\n\t\t\t\t\tDeletes the given OPFS filesystem entry.  As this environment\n\t\t\t\t\thas no notion of \"current directory\", the given name must be an\n\t\t\t\t\tabsolute path. If the 2nd argument is truthy, deletion is\n\t\t\t\t\trecursive (use with caution!).\n\t\t\t\t\t\n\t\t\t\t\tThe returned Promise resolves to true if the deletion was\n\t\t\t\t\tsuccessful, else false (but...). The OPFS API reports the\n\t\t\t\t\treason for the failure only in human-readable form, not\n\t\t\t\t\texceptions which can be type-checked to determine the\n\t\t\t\t\tfailure. Because of that...\n\t\t\t\t\t\n\t\t\t\t\tIf the final argument is truthy then this function will\n\t\t\t\t\tpropagate any exception on error, rather than returning false.\n\t\t\t\t\t*/\n\t\t\t\t\topfsUtil.unlink = async function(fsEntryName, recursive = false, throwOnError = false) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst [hDir, filenamePart] = await opfsUtil.getDirForFilename(fsEntryName, false);\n\t\t\t\t\t\t\tawait hDir.removeEntry(filenamePart, { recursive });\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tif (throwOnError) throw new Error(\"unlink(\", arguments[0], \") failed: \" + e.message, { cause: e });\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t/**\n\t\t\t\t\tTraverses the OPFS filesystem, calling a callback for each\n\t\t\t\t\tentry.  The argument may be either a callback function or an\n\t\t\t\t\toptions object with any of the following properties:\n\t\t\t\t\t\n\t\t\t\t\t- `callback`: function which gets called for each filesystem\n\t\t\t\t\tentry.  It gets passed 3 arguments: 1) the\n\t\t\t\t\tFileSystemFileHandle or FileSystemDirectoryHandle of each\n\t\t\t\t\tentry (noting that both are instanceof FileSystemHandle). 2)\n\t\t\t\t\tthe FileSystemDirectoryHandle of the parent directory. 3) the\n\t\t\t\t\tcurrent depth level, with 0 being at the top of the tree\n\t\t\t\t\trelative to the starting directory. If the callback returns a\n\t\t\t\t\tliteral false, as opposed to any other falsy value, traversal\n\t\t\t\t\tstops without an error. Any exceptions it throws are\n\t\t\t\t\tpropagated. Results are undefined if the callback manipulate\n\t\t\t\t\tthe filesystem (e.g. removing or adding entries) because the\n\t\t\t\t\thow OPFS iterators behave in the face of such changes is\n\t\t\t\t\tundocumented.\n\t\t\t\t\t\n\t\t\t\t\t- `recursive` [bool=true]: specifies whether to recurse into\n\t\t\t\t\tsubdirectories or not. Whether recursion is depth-first or\n\t\t\t\t\tbreadth-first is unspecified!\n\t\t\t\t\t\n\t\t\t\t\t- `directory` [FileSystemDirectoryEntry=sqlite3.opfs.rootDirectory]\n\t\t\t\t\tspecifies the starting directory.\n\t\t\t\t\t\n\t\t\t\t\tIf this function is passed a function, it is assumed to be the\n\t\t\t\t\tcallback.\n\t\t\t\t\t\n\t\t\t\t\tReturns a promise because it has to (by virtue of being async)\n\t\t\t\t\tbut that promise has no specific meaning: the traversal it\n\t\t\t\t\tperforms is synchronous. The promise must be used to catch any\n\t\t\t\t\texceptions propagated by the callback, however.\n\t\t\t\t\t*/\n\t\t\t\t\topfsUtil.traverse = async function(opt) {\n\t\t\t\t\t\tconst defaultOpt = {\n\t\t\t\t\t\t\trecursive: true,\n\t\t\t\t\t\t\tdirectory: opfsUtil.rootDirectory\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (\"function\" === typeof opt) opt = { callback: opt };\n\t\t\t\t\t\topt = Object.assign(defaultOpt, opt || {});\n\t\t\t\t\t\t(async function callee(dirHandle, depth) {\n\t\t\t\t\t\t\tfor await (const handle of dirHandle.values()) if (false === opt.callback(handle, dirHandle, depth)) return false;\n\t\t\t\t\t\t\telse if (opt.recursive && \"directory\" === handle.kind) {\n\t\t\t\t\t\t\t\tif (false === await callee(handle, depth + 1)) break;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})(opt.directory, 0);\n\t\t\t\t\t};\n\t\t\t\t\t/**\n\t\t\t\t\timpl of importDb() when it's given a function as its second\n\t\t\t\t\targument.\n\t\t\t\t\t*/\n\t\t\t\t\tconst importDbChunked = async function(filename, callback) {\n\t\t\t\t\t\tconst [hDir, fnamePart] = await opfsUtil.getDirForFilename(filename, true);\n\t\t\t\t\t\tlet sah = await (await hDir.getFileHandle(fnamePart, { create: true })).createSyncAccessHandle(), nWrote = 0, chunk, checkedHeader = false;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tsah.truncate(0);\n\t\t\t\t\t\t\twhile (void 0 !== (chunk = await callback())) {\n\t\t\t\t\t\t\t\tif (chunk instanceof ArrayBuffer) chunk = new Uint8Array(chunk);\n\t\t\t\t\t\t\t\tif (!checkedHeader && 0 === nWrote && chunk.byteLength >= 15) {\n\t\t\t\t\t\t\t\t\tutil.affirmDbHeader(chunk);\n\t\t\t\t\t\t\t\t\tcheckedHeader = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tsah.write(chunk, { at: nWrote });\n\t\t\t\t\t\t\t\tnWrote += chunk.byteLength;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (nWrote < 512 || 0 !== nWrote % 512) toss(\"Input size\", nWrote, \"is not correct for an SQLite database.\");\n\t\t\t\t\t\t\tif (!checkedHeader) {\n\t\t\t\t\t\t\t\tconst header = new Uint8Array(20);\n\t\t\t\t\t\t\t\tsah.read(header, { at: 0 });\n\t\t\t\t\t\t\t\tutil.affirmDbHeader(header);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsah.write(new Uint8Array([1, 1]), { at: 18 });\n\t\t\t\t\t\t\treturn nWrote;\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tawait sah.close();\n\t\t\t\t\t\t\tsah = void 0;\n\t\t\t\t\t\t\tawait hDir.removeEntry(fnamePart).catch(() => {});\n\t\t\t\t\t\t\tthrow e;\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tif (sah) await sah.close();\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t/**\n\t\t\t\t\tAsynchronously imports the given bytes (a byte array or\n\t\t\t\t\tArrayBuffer) into the given database file.\n\t\t\t\t\t\n\t\t\t\t\tResults are undefined if the given db name refers to an opened\n\t\t\t\t\tdb.\n\t\t\t\t\t\n\t\t\t\t\tIf passed a function for its second argument, its behaviour\n\t\t\t\t\tchanges: imports its data in chunks fed to it by the given\n\t\t\t\t\tcallback function. It calls the callback (which may be async)\n\t\t\t\t\trepeatedly, expecting either a Uint8Array or ArrayBuffer (to\n\t\t\t\t\tdenote new input) or undefined (to denote EOF). For so long as\n\t\t\t\t\tthe callback continues to return non-undefined, it will append\n\t\t\t\t\tincoming data to the given VFS-hosted database file. When\n\t\t\t\t\tcalled this way, the resolved value of the returned Promise is\n\t\t\t\t\tthe number of bytes written to the target file.\n\t\t\t\t\t\n\t\t\t\t\tIt very specifically requires the input to be an SQLite3\n\t\t\t\t\tdatabase and throws if that's not the case.  It does so in\n\t\t\t\t\torder to prevent this function from taking on a larger scope\n\t\t\t\t\tthan it is specifically intended to. i.e. we do not want it to\n\t\t\t\t\tbecome a convenience for importing arbitrary files into OPFS.\n\t\t\t\t\t\n\t\t\t\t\tThis routine rewrites the database header bytes in the output\n\t\t\t\t\tfile (not the input array) to force disabling of WAL mode.\n\t\t\t\t\t\n\t\t\t\t\tOn error this throws and the state of the input file is\n\t\t\t\t\tundefined (it depends on where the exception was triggered).\n\t\t\t\t\t\n\t\t\t\t\tOn success, resolves to the number of bytes written.\n\t\t\t\t\t*/\n\t\t\t\t\topfsUtil.importDb = async function(filename, bytes) {\n\t\t\t\t\t\tif (bytes instanceof Function) return importDbChunked(filename, bytes);\n\t\t\t\t\t\tif (bytes instanceof ArrayBuffer) bytes = new Uint8Array(bytes);\n\t\t\t\t\t\tutil.affirmIsDb(bytes);\n\t\t\t\t\t\tconst n = bytes.byteLength;\n\t\t\t\t\t\tconst [hDir, fnamePart] = await opfsUtil.getDirForFilename(filename, true);\n\t\t\t\t\t\tlet sah, nWrote = 0;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tsah = await (await hDir.getFileHandle(fnamePart, { create: true })).createSyncAccessHandle();\n\t\t\t\t\t\t\tsah.truncate(0);\n\t\t\t\t\t\t\tnWrote = sah.write(bytes, { at: 0 });\n\t\t\t\t\t\t\tif (nWrote != n) toss(\"Expected to write \" + n + \" bytes but wrote \" + nWrote + \".\");\n\t\t\t\t\t\t\tsah.write(new Uint8Array([1, 1]), { at: 18 });\n\t\t\t\t\t\t\treturn nWrote;\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tif (sah) {\n\t\t\t\t\t\t\t\tawait sah.close();\n\t\t\t\t\t\t\t\tsah = void 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tawait hDir.removeEntry(fnamePart).catch(() => {});\n\t\t\t\t\t\t\tthrow e;\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tif (sah) await sah.close();\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tif (sqlite3.oo1) {\n\t\t\t\t\t\tconst OpfsDb = function(...args) {\n\t\t\t\t\t\t\tconst opt = sqlite3.oo1.DB.dbCtorHelper.normalizeArgs(...args);\n\t\t\t\t\t\t\topt.vfs = opfsVfs.$zName;\n\t\t\t\t\t\t\tsqlite3.oo1.DB.dbCtorHelper.call(this, opt);\n\t\t\t\t\t\t};\n\t\t\t\t\t\tOpfsDb.prototype = Object.create(sqlite3.oo1.DB.prototype);\n\t\t\t\t\t\tsqlite3.oo1.OpfsDb = OpfsDb;\n\t\t\t\t\t\tOpfsDb.importDb = opfsUtil.importDb;\n\t\t\t\t\t\tsqlite3.oo1.DB.dbCtorHelper.setVfsPostOpenCallback(opfsVfs.pointer, function(oo1Db, sqlite3) {\n\t\t\t\t\t\t\tsqlite3.capi.sqlite3_busy_timeout(oo1Db, 1e4);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tconst sanityCheck = function() {\n\t\t\t\t\t\tconst scope = wasm.scopedAllocPush();\n\t\t\t\t\t\tconst sq3File = new sqlite3_file();\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst fid = sq3File.pointer;\n\t\t\t\t\t\t\tconst openFlags = capi.SQLITE_OPEN_CREATE | capi.SQLITE_OPEN_READWRITE | capi.SQLITE_OPEN_MAIN_DB;\n\t\t\t\t\t\t\tconst pOut = wasm.scopedAlloc(8);\n\t\t\t\t\t\t\tconst dbFile = \"/sanity/check/file\" + randomFilename(8);\n\t\t\t\t\t\t\tconst zDbFile = wasm.scopedAllocCString(dbFile);\n\t\t\t\t\t\t\tlet rc;\n\t\t\t\t\t\t\tstate.s11n.serialize(\"This is ä string.\");\n\t\t\t\t\t\t\trc = state.s11n.deserialize();\n\t\t\t\t\t\t\tlog(\"deserialize() says:\", rc);\n\t\t\t\t\t\t\tif (\"This is ä string.\" !== rc[0]) toss(\"String d13n error.\");\n\t\t\t\t\t\t\tvfsSyncWrappers.xAccess(opfsVfs.pointer, zDbFile, 0, pOut);\n\t\t\t\t\t\t\trc = wasm.peek(pOut, \"i32\");\n\t\t\t\t\t\t\tlog(\"xAccess(\", dbFile, \") exists ?=\", rc);\n\t\t\t\t\t\t\trc = vfsSyncWrappers.xOpen(opfsVfs.pointer, zDbFile, fid, openFlags, pOut);\n\t\t\t\t\t\t\tlog(\"open rc =\", rc, \"state.sabOPView[xOpen] =\", state.sabOPView[state.opIds.xOpen]);\n\t\t\t\t\t\t\tif (0 !== rc) {\n\t\t\t\t\t\t\t\terror(\"open failed with code\", rc);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvfsSyncWrappers.xAccess(opfsVfs.pointer, zDbFile, 0, pOut);\n\t\t\t\t\t\t\trc = wasm.peek(pOut, \"i32\");\n\t\t\t\t\t\t\tif (!rc) toss(\"xAccess() failed to detect file.\");\n\t\t\t\t\t\t\trc = ioSyncWrappers.xSync(sq3File.pointer, 0);\n\t\t\t\t\t\t\tif (rc) toss(\"sync failed w/ rc\", rc);\n\t\t\t\t\t\t\trc = ioSyncWrappers.xTruncate(sq3File.pointer, 1024);\n\t\t\t\t\t\t\tif (rc) toss(\"truncate failed w/ rc\", rc);\n\t\t\t\t\t\t\twasm.poke(pOut, 0, \"i64\");\n\t\t\t\t\t\t\trc = ioSyncWrappers.xFileSize(sq3File.pointer, pOut);\n\t\t\t\t\t\t\tif (rc) toss(\"xFileSize failed w/ rc\", rc);\n\t\t\t\t\t\t\tlog(\"xFileSize says:\", wasm.peek(pOut, \"i64\"));\n\t\t\t\t\t\t\trc = ioSyncWrappers.xWrite(sq3File.pointer, zDbFile, 10, 1);\n\t\t\t\t\t\t\tif (rc) toss(\"xWrite() failed!\");\n\t\t\t\t\t\t\tconst readBuf = wasm.scopedAlloc(16);\n\t\t\t\t\t\t\trc = ioSyncWrappers.xRead(sq3File.pointer, readBuf, 6, 2);\n\t\t\t\t\t\t\twasm.poke(readBuf + 6, 0);\n\t\t\t\t\t\t\tlet jRead = wasm.cstrToJs(readBuf);\n\t\t\t\t\t\t\tlog(\"xRead() got:\", jRead);\n\t\t\t\t\t\t\tif (\"sanity\" !== jRead) toss(\"Unexpected xRead() value.\");\n\t\t\t\t\t\t\tif (vfsSyncWrappers.xSleep) {\n\t\t\t\t\t\t\t\tlog(\"xSleep()ing before close()ing...\");\n\t\t\t\t\t\t\t\tvfsSyncWrappers.xSleep(opfsVfs.pointer, 2e3);\n\t\t\t\t\t\t\t\tlog(\"waking up from xSleep()\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\trc = ioSyncWrappers.xClose(fid);\n\t\t\t\t\t\t\tlog(\"xClose rc =\", rc, \"sabOPView =\", state.sabOPView);\n\t\t\t\t\t\t\tlog(\"Deleting file:\", dbFile);\n\t\t\t\t\t\t\tvfsSyncWrappers.xDelete(opfsVfs.pointer, zDbFile, 4660);\n\t\t\t\t\t\t\tvfsSyncWrappers.xAccess(opfsVfs.pointer, zDbFile, 0, pOut);\n\t\t\t\t\t\t\trc = wasm.peek(pOut, \"i32\");\n\t\t\t\t\t\t\tif (rc) toss(\"Expecting 0 from xAccess(\", dbFile, \") after xDelete().\");\n\t\t\t\t\t\t\twarn(\"End of OPFS sanity checks.\");\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tsq3File.dispose();\n\t\t\t\t\t\t\twasm.scopedAllocPop(scope);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tW.onmessage = function({ data }) {\n\t\t\t\t\t\tswitch (data.type) {\n\t\t\t\t\t\t\tcase \"opfs-unavailable\":\n\t\t\t\t\t\t\t\tpromiseReject(new Error(data.payload.join(\" \")));\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase \"opfs-async-loaded\":\n\t\t\t\t\t\t\t\tW.postMessage({\n\t\t\t\t\t\t\t\t\ttype: \"opfs-async-init\",\n\t\t\t\t\t\t\t\t\targs: state\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase \"opfs-async-inited\":\n\t\t\t\t\t\t\t\tif (true === promiseWasRejected) break;\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tsqlite3.vfs.installVfs({\n\t\t\t\t\t\t\t\t\t\tio: {\n\t\t\t\t\t\t\t\t\t\t\tstruct: opfsIoMethods,\n\t\t\t\t\t\t\t\t\t\t\tmethods: ioSyncWrappers\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tvfs: {\n\t\t\t\t\t\t\t\t\t\t\tstruct: opfsVfs,\n\t\t\t\t\t\t\t\t\t\t\tmethods: vfsSyncWrappers\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\tstate.sabOPView = new Int32Array(state.sabOP);\n\t\t\t\t\t\t\t\t\tstate.sabFileBufView = new Uint8Array(state.sabIO, 0, state.fileBufferSize);\n\t\t\t\t\t\t\t\t\tstate.sabS11nView = new Uint8Array(state.sabIO, state.sabS11nOffset, state.sabS11nSize);\n\t\t\t\t\t\t\t\t\tinitS11n();\n\t\t\t\t\t\t\t\t\tif (options.sanityChecks) {\n\t\t\t\t\t\t\t\t\t\twarn(\"Running sanity checks because of opfs-sanity-check URL arg...\");\n\t\t\t\t\t\t\t\t\t\tsanityCheck();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (thisThreadHasOPFS()) navigator.storage.getDirectory().then((d) => {\n\t\t\t\t\t\t\t\t\t\tW.onerror = W._originalOnError;\n\t\t\t\t\t\t\t\t\t\tdelete W._originalOnError;\n\t\t\t\t\t\t\t\t\t\tsqlite3.opfs = opfsUtil;\n\t\t\t\t\t\t\t\t\t\topfsUtil.rootDirectory = d;\n\t\t\t\t\t\t\t\t\t\tlog(\"End of OPFS sqlite3_vfs setup.\", opfsVfs);\n\t\t\t\t\t\t\t\t\t\tpromiseResolve();\n\t\t\t\t\t\t\t\t\t}).catch(promiseReject);\n\t\t\t\t\t\t\t\t\telse promiseResolve();\n\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\terror(e);\n\t\t\t\t\t\t\t\t\tpromiseReject(e);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\tconst errMsg = \"Unexpected message from the OPFS async worker: \" + JSON.stringify(data);\n\t\t\t\t\t\t\t\terror(errMsg);\n\t\t\t\t\t\t\t\tpromiseReject(new Error(errMsg));\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t};\n\t\t\tinstallOpfsVfs.defaultProxyUri = \"sqlite3-opfs-async-proxy.js\";\n\t\t\tglobalThis.sqlite3ApiBootstrap.initializersAsync.push(async (sqlite3) => {\n\t\t\t\ttry {\n\t\t\t\t\tlet proxyJs = installOpfsVfs.defaultProxyUri;\n\t\t\t\t\tif (sqlite3?.scriptInfo?.sqlite3Dir) installOpfsVfs.defaultProxyUri = sqlite3.scriptInfo.sqlite3Dir + proxyJs;\n\t\t\t\t\treturn installOpfsVfs().catch((e) => {\n\t\t\t\t\t\tsqlite3.config.warn(\"Ignoring inability to install OPFS sqlite3_vfs:\", e.message);\n\t\t\t\t\t});\n\t\t\t\t} catch (e) {\n\t\t\t\t\tsqlite3.config.error(\"installOpfsVfs() exception:\", e);\n\t\t\t\t\treturn Promise.reject(e);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tglobalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3) {\n\t\t\t\"use strict\";\n\t\t\tconst toss = sqlite3.util.toss;\n\t\t\tconst toss3 = sqlite3.util.toss3;\n\t\t\tconst initPromises = Object.create(null);\n\t\t\tconst capi = sqlite3.capi;\n\t\t\tconst util = sqlite3.util;\n\t\t\tconst wasm = sqlite3.wasm;\n\t\t\tconst SECTOR_SIZE = 4096;\n\t\t\tconst HEADER_MAX_PATH_SIZE = 512;\n\t\t\tconst HEADER_FLAGS_SIZE = 4;\n\t\t\tconst HEADER_DIGEST_SIZE = 8;\n\t\t\tconst HEADER_CORPUS_SIZE = HEADER_MAX_PATH_SIZE + HEADER_FLAGS_SIZE;\n\t\t\tconst HEADER_OFFSET_FLAGS = HEADER_MAX_PATH_SIZE;\n\t\t\tconst HEADER_OFFSET_DIGEST = HEADER_CORPUS_SIZE;\n\t\t\tconst HEADER_OFFSET_DATA = SECTOR_SIZE;\n\t\t\tconst PERSISTENT_FILE_TYPES = capi.SQLITE_OPEN_MAIN_DB | capi.SQLITE_OPEN_MAIN_JOURNAL | capi.SQLITE_OPEN_SUPER_JOURNAL | capi.SQLITE_OPEN_WAL;\n\t\t\tconst FLAG_COMPUTE_DIGEST_V2 = capi.SQLITE_OPEN_MEMORY;\n\t\t\t/** Subdirectory of the VFS's space where \"opaque\" (randomly-named)\n\t\t\tfiles are stored. Changing this effectively invalidates the data\n\t\t\tstored under older names (orphaning it), so don't do that. */\n\t\t\tconst OPAQUE_DIR_NAME = \".opaque\";\n\t\t\t/**\n\t\t\tReturns short a string of random alphanumeric characters\n\t\t\tsuitable for use as a random filename.\n\t\t\t*/\n\t\t\tconst getRandomName = () => Math.random().toString(36).slice(2);\n\t\t\tconst textDecoder = new TextDecoder();\n\t\t\tconst textEncoder = new TextEncoder();\n\t\t\tconst optionDefaults = Object.assign(Object.create(null), {\n\t\t\t\tname: \"opfs-sahpool\",\n\t\t\t\tdirectory: void 0,\n\t\t\t\tinitialCapacity: 6,\n\t\t\t\tclearOnInit: false,\n\t\t\t\tverbosity: 2,\n\t\t\t\tforceReinitIfPreviouslyFailed: false\n\t\t\t});\n\t\t\t/** Logging routines, from most to least serious. */\n\t\t\tconst loggers = [\n\t\t\t\tsqlite3.config.error,\n\t\t\t\tsqlite3.config.warn,\n\t\t\t\tsqlite3.config.log\n\t\t\t];\n\t\t\tsqlite3.config.log;\n\t\t\tconst warn = sqlite3.config.warn;\n\t\t\tsqlite3.config.error;\n\t\t\tconst __mapVfsToPool = /* @__PURE__ */ new Map();\n\t\t\tconst getPoolForVfs = (pVfs) => __mapVfsToPool.get(pVfs);\n\t\t\tconst setPoolForVfs = (pVfs, pool) => {\n\t\t\t\tif (pool) __mapVfsToPool.set(pVfs, pool);\n\t\t\t\telse __mapVfsToPool.delete(pVfs);\n\t\t\t};\n\t\t\tconst __mapSqlite3File = /* @__PURE__ */ new Map();\n\t\t\tconst getPoolForPFile = (pFile) => __mapSqlite3File.get(pFile);\n\t\t\tconst setPoolForPFile = (pFile, pool) => {\n\t\t\t\tif (pool) __mapSqlite3File.set(pFile, pool);\n\t\t\t\telse __mapSqlite3File.delete(pFile);\n\t\t\t};\n\t\t\t/**\n\t\t\tImpls for the sqlite3_io_methods methods. Maintenance reminder:\n\t\t\tmembers are in alphabetical order to simplify finding them.\n\t\t\t*/\n\t\t\tconst ioMethods = {\n\t\t\t\txCheckReservedLock: function(pFile, pOut) {\n\t\t\t\t\tconst pool = getPoolForPFile(pFile);\n\t\t\t\t\tpool.log(\"xCheckReservedLock\");\n\t\t\t\t\tpool.storeErr();\n\t\t\t\t\twasm.poke32(pOut, 1);\n\t\t\t\t\treturn 0;\n\t\t\t\t},\n\t\t\t\txClose: function(pFile) {\n\t\t\t\t\tconst pool = getPoolForPFile(pFile);\n\t\t\t\t\tpool.storeErr();\n\t\t\t\t\tconst file = pool.getOFileForS3File(pFile);\n\t\t\t\t\tif (file) try {\n\t\t\t\t\t\tpool.log(`xClose ${file.path}`);\n\t\t\t\t\t\tpool.mapS3FileToOFile(pFile, false);\n\t\t\t\t\t\tfile.sah.flush();\n\t\t\t\t\t\tif (file.flags & capi.SQLITE_OPEN_DELETEONCLOSE) pool.deletePath(file.path);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn pool.storeErr(e, capi.SQLITE_IOERR);\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t},\n\t\t\t\txDeviceCharacteristics: function(pFile) {\n\t\t\t\t\treturn capi.SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN;\n\t\t\t\t},\n\t\t\t\txFileControl: function(pFile, opId, pArg) {\n\t\t\t\t\treturn capi.SQLITE_NOTFOUND;\n\t\t\t\t},\n\t\t\t\txFileSize: function(pFile, pSz64) {\n\t\t\t\t\tconst pool = getPoolForPFile(pFile);\n\t\t\t\t\tpool.log(`xFileSize`);\n\t\t\t\t\tconst size = pool.getOFileForS3File(pFile).sah.getSize() - HEADER_OFFSET_DATA;\n\t\t\t\t\twasm.poke64(pSz64, BigInt(size));\n\t\t\t\t\treturn 0;\n\t\t\t\t},\n\t\t\t\txLock: function(pFile, lockType) {\n\t\t\t\t\tconst pool = getPoolForPFile(pFile);\n\t\t\t\t\tpool.log(`xLock ${lockType}`);\n\t\t\t\t\tpool.storeErr();\n\t\t\t\t\tconst file = pool.getOFileForS3File(pFile);\n\t\t\t\t\tfile.lockType = lockType;\n\t\t\t\t\treturn 0;\n\t\t\t\t},\n\t\t\t\txRead: function(pFile, pDest, n, offset64) {\n\t\t\t\t\tconst pool = getPoolForPFile(pFile);\n\t\t\t\t\tpool.storeErr();\n\t\t\t\t\tconst file = pool.getOFileForS3File(pFile);\n\t\t\t\t\tpool.log(`xRead ${file.path} ${n} @ ${offset64}`);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst nRead = file.sah.read(wasm.heap8u().subarray(Number(pDest), Number(pDest) + n), { at: HEADER_OFFSET_DATA + Number(offset64) });\n\t\t\t\t\t\tif (nRead < n) {\n\t\t\t\t\t\t\twasm.heap8u().fill(0, Number(pDest) + nRead, Number(pDest) + n);\n\t\t\t\t\t\t\treturn capi.SQLITE_IOERR_SHORT_READ;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn pool.storeErr(e, capi.SQLITE_IOERR);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\txSectorSize: function(pFile) {\n\t\t\t\t\treturn SECTOR_SIZE;\n\t\t\t\t},\n\t\t\t\txSync: function(pFile, flags) {\n\t\t\t\t\tconst pool = getPoolForPFile(pFile);\n\t\t\t\t\tpool.log(`xSync ${flags}`);\n\t\t\t\t\tpool.storeErr();\n\t\t\t\t\tconst file = pool.getOFileForS3File(pFile);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfile.sah.flush();\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn pool.storeErr(e, capi.SQLITE_IOERR);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\txTruncate: function(pFile, sz64) {\n\t\t\t\t\tconst pool = getPoolForPFile(pFile);\n\t\t\t\t\tpool.log(`xTruncate ${sz64}`);\n\t\t\t\t\tpool.storeErr();\n\t\t\t\t\tconst file = pool.getOFileForS3File(pFile);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfile.sah.truncate(HEADER_OFFSET_DATA + Number(sz64));\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn pool.storeErr(e, capi.SQLITE_IOERR);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\txUnlock: function(pFile, lockType) {\n\t\t\t\t\tconst pool = getPoolForPFile(pFile);\n\t\t\t\t\tpool.log(\"xUnlock\");\n\t\t\t\t\tconst file = pool.getOFileForS3File(pFile);\n\t\t\t\t\tfile.lockType = lockType;\n\t\t\t\t\treturn 0;\n\t\t\t\t},\n\t\t\t\txWrite: function(pFile, pSrc, n, offset64) {\n\t\t\t\t\tconst pool = getPoolForPFile(pFile);\n\t\t\t\t\tpool.storeErr();\n\t\t\t\t\tconst file = pool.getOFileForS3File(pFile);\n\t\t\t\t\tpool.log(`xWrite ${file.path} ${n} ${offset64}`);\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn n === file.sah.write(wasm.heap8u().subarray(Number(pSrc), Number(pSrc) + n), { at: HEADER_OFFSET_DATA + Number(offset64) }) ? 0 : toss(\"Unknown write() failure.\");\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn pool.storeErr(e, capi.SQLITE_IOERR);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t\tconst opfsIoMethods = new capi.sqlite3_io_methods();\n\t\t\topfsIoMethods.$iVersion = 1;\n\t\t\tsqlite3.vfs.installVfs({ io: {\n\t\t\t\tstruct: opfsIoMethods,\n\t\t\t\tmethods: ioMethods\n\t\t\t} });\n\t\t\t/**\n\t\t\tImpls for the sqlite3_vfs methods. Maintenance reminder: members\n\t\t\tare in alphabetical order to simplify finding them.\n\t\t\t*/\n\t\t\tconst vfsMethods = {\n\t\t\t\txAccess: function(pVfs, zName, flags, pOut) {\n\t\t\t\t\tconst pool = getPoolForVfs(pVfs);\n\t\t\t\t\tpool.storeErr();\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst name = pool.getPath(zName);\n\t\t\t\t\t\twasm.poke32(pOut, pool.hasFilename(name) ? 1 : 0);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\twasm.poke32(pOut, 0);\n\t\t\t\t\t}\n\t\t\t\t\treturn 0;\n\t\t\t\t},\n\t\t\t\txCurrentTime: function(pVfs, pOut) {\n\t\t\t\t\twasm.poke(pOut, 2440587.5 + (/* @__PURE__ */ new Date()).getTime() / 864e5, \"double\");\n\t\t\t\t\treturn 0;\n\t\t\t\t},\n\t\t\t\txCurrentTimeInt64: function(pVfs, pOut) {\n\t\t\t\t\twasm.poke(pOut, 2440587.5 * 864e5 + (/* @__PURE__ */ new Date()).getTime(), \"i64\");\n\t\t\t\t\treturn 0;\n\t\t\t\t},\n\t\t\t\txDelete: function(pVfs, zName, doSyncDir) {\n\t\t\t\t\tconst pool = getPoolForVfs(pVfs);\n\t\t\t\t\tpool.log(`xDelete ${wasm.cstrToJs(zName)}`);\n\t\t\t\t\tpool.storeErr();\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpool.deletePath(pool.getPath(zName));\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tpool.storeErr(e);\n\t\t\t\t\t\treturn capi.SQLITE_IOERR_DELETE;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\txFullPathname: function(pVfs, zName, nOut, pOut) {\n\t\t\t\t\treturn wasm.cstrncpy(pOut, zName, nOut) < nOut ? 0 : capi.SQLITE_CANTOPEN;\n\t\t\t\t},\n\t\t\t\txGetLastError: function(pVfs, nOut, pOut) {\n\t\t\t\t\tconst pool = getPoolForVfs(pVfs);\n\t\t\t\t\tconst e = pool.popErr();\n\t\t\t\t\tpool.log(`xGetLastError ${nOut} e =`, e);\n\t\t\t\t\tif (e) {\n\t\t\t\t\t\tconst scope = wasm.scopedAllocPush();\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst [cMsg, n] = wasm.scopedAllocCString(e.message, true);\n\t\t\t\t\t\t\twasm.cstrncpy(pOut, cMsg, nOut);\n\t\t\t\t\t\t\tif (n > nOut) wasm.poke8(wasm.ptr.add(pOut, nOut, -1), 0);\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\treturn capi.SQLITE_NOMEM;\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\twasm.scopedAllocPop(scope);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn e ? e.sqlite3Rc || capi.SQLITE_IOERR : 0;\n\t\t\t\t},\n\t\t\t\txOpen: function f(pVfs, zName, pFile, flags, pOutFlags) {\n\t\t\t\t\tconst pool = getPoolForVfs(pVfs);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tflags &= ~FLAG_COMPUTE_DIGEST_V2;\n\t\t\t\t\t\tpool.log(`xOpen ${wasm.cstrToJs(zName)} ${flags}`);\n\t\t\t\t\t\tconst path = zName && wasm.peek8(zName) ? pool.getPath(zName) : getRandomName();\n\t\t\t\t\t\tlet sah = pool.getSAHForPath(path);\n\t\t\t\t\t\tif (!sah && flags & capi.SQLITE_OPEN_CREATE) if (pool.getFileCount() < pool.getCapacity()) {\n\t\t\t\t\t\t\tsah = pool.nextAvailableSAH();\n\t\t\t\t\t\t\tpool.setAssociatedPath(sah, path, flags);\n\t\t\t\t\t\t} else toss(\"SAH pool is full. Cannot create file\", path);\n\t\t\t\t\t\tif (!sah) toss(\"file not found:\", path);\n\t\t\t\t\t\tconst file = {\n\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\tflags,\n\t\t\t\t\t\t\tsah\n\t\t\t\t\t\t};\n\t\t\t\t\t\tpool.mapS3FileToOFile(pFile, file);\n\t\t\t\t\t\tfile.lockType = capi.SQLITE_LOCK_NONE;\n\t\t\t\t\t\tconst sq3File = new capi.sqlite3_file(pFile);\n\t\t\t\t\t\tsq3File.$pMethods = opfsIoMethods.pointer;\n\t\t\t\t\t\tsq3File.dispose();\n\t\t\t\t\t\twasm.poke32(pOutFlags, flags);\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tpool.storeErr(e);\n\t\t\t\t\t\treturn capi.SQLITE_CANTOPEN;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t\t/**\n\t\t\tCreates, initializes, and returns an sqlite3_vfs instance for an\n\t\t\tOpfsSAHPool. The argument is the VFS's name (JS string).\n\t\t\t\n\t\t\tThrows if the VFS name is already registered or if something\n\t\t\tgoes terribly wrong via sqlite3.vfs.installVfs().\n\t\t\t\n\t\t\tMaintenance reminder: the only detail about the returned object\n\t\t\twhich is specific to any given OpfsSAHPool instance is the $zName\n\t\t\tmember. All other state is identical.\n\t\t\t*/\n\t\t\tconst createOpfsVfs = function(vfsName) {\n\t\t\t\tif (sqlite3.capi.sqlite3_vfs_find(vfsName)) toss3(\"VFS name is already registered:\", vfsName);\n\t\t\t\tconst opfsVfs = new capi.sqlite3_vfs();\n\t\t\t\tconst pDVfs = capi.sqlite3_vfs_find(null);\n\t\t\t\tconst dVfs = pDVfs ? new capi.sqlite3_vfs(pDVfs) : null;\n\t\t\t\topfsVfs.$iVersion = 2;\n\t\t\t\topfsVfs.$szOsFile = capi.sqlite3_file.structInfo.sizeof;\n\t\t\t\topfsVfs.$mxPathname = HEADER_MAX_PATH_SIZE;\n\t\t\t\topfsVfs.addOnDispose(opfsVfs.$zName = wasm.allocCString(vfsName), () => setPoolForVfs(opfsVfs.pointer, 0));\n\t\t\t\tif (dVfs) {\n\t\t\t\t\topfsVfs.$xRandomness = dVfs.$xRandomness;\n\t\t\t\t\topfsVfs.$xSleep = dVfs.$xSleep;\n\t\t\t\t\tdVfs.dispose();\n\t\t\t\t}\n\t\t\t\tif (!opfsVfs.$xRandomness && !vfsMethods.xRandomness) vfsMethods.xRandomness = function(pVfs, nOut, pOut) {\n\t\t\t\t\tconst heap = wasm.heap8u();\n\t\t\t\t\tlet i = 0;\n\t\t\t\t\tconst npOut = Number(pOut);\n\t\t\t\t\tfor (; i < nOut; ++i) heap[npOut + i] = Math.random() * 255e3 & 255;\n\t\t\t\t\treturn i;\n\t\t\t\t};\n\t\t\t\tif (!opfsVfs.$xSleep && !vfsMethods.xSleep) vfsMethods.xSleep = (pVfs, ms) => 0;\n\t\t\t\tsqlite3.vfs.installVfs({ vfs: {\n\t\t\t\t\tstruct: opfsVfs,\n\t\t\t\t\tmethods: vfsMethods\n\t\t\t\t} });\n\t\t\t\treturn opfsVfs;\n\t\t\t};\n\t\t\t/**\n\t\t\tClass for managing OPFS-related state for the\n\t\t\tOPFS SharedAccessHandle Pool sqlite3_vfs.\n\t\t\t*/\n\t\t\tclass OpfsSAHPool {\n\t\t\t\tvfsDir;\n\t\t\t\t#dhVfsRoot;\n\t\t\t\t#dhOpaque;\n\t\t\t\t#dhVfsParent;\n\t\t\t\t#mapSAHToName = /* @__PURE__ */ new Map();\n\t\t\t\t#mapFilenameToSAH = /* @__PURE__ */ new Map();\n\t\t\t\t#availableSAH = /* @__PURE__ */ new Set();\n\t\t\t\t#mapS3FileToOFile_ = /* @__PURE__ */ new Map();\n\t\t\t\t/** Buffer used by [sg]etAssociatedPath(). */\n\t\t\t\t#apBody = new Uint8Array(HEADER_CORPUS_SIZE);\n\t\t\t\t#dvBody;\n\t\t\t\t#cVfs;\n\t\t\t\t#verbosity;\n\t\t\t\tconstructor(options = Object.create(null)) {\n\t\t\t\t\tthis.#verbosity = options.verbosity ?? optionDefaults.verbosity;\n\t\t\t\t\tthis.vfsName = options.name || optionDefaults.name;\n\t\t\t\t\tthis.#cVfs = createOpfsVfs(this.vfsName);\n\t\t\t\t\tsetPoolForVfs(this.#cVfs.pointer, this);\n\t\t\t\t\tthis.vfsDir = options.directory || \".\" + this.vfsName;\n\t\t\t\t\tthis.#dvBody = new DataView(this.#apBody.buffer, this.#apBody.byteOffset);\n\t\t\t\t\tthis.isReady = this.reset(!!(options.clearOnInit ?? optionDefaults.clearOnInit)).then(() => {\n\t\t\t\t\t\tif (this.$error) throw this.$error;\n\t\t\t\t\t\treturn this.getCapacity() ? Promise.resolve(void 0) : this.addCapacity(options.initialCapacity || optionDefaults.initialCapacity);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t#logImpl(level, ...args) {\n\t\t\t\t\tif (this.#verbosity > level) loggers[level](this.vfsName + \":\", ...args);\n\t\t\t\t}\n\t\t\t\tlog(...args) {\n\t\t\t\t\tthis.#logImpl(2, ...args);\n\t\t\t\t}\n\t\t\t\twarn(...args) {\n\t\t\t\t\tthis.#logImpl(1, ...args);\n\t\t\t\t}\n\t\t\t\terror(...args) {\n\t\t\t\t\tthis.#logImpl(0, ...args);\n\t\t\t\t}\n\t\t\t\tgetVfs() {\n\t\t\t\t\treturn this.#cVfs;\n\t\t\t\t}\n\t\t\t\tgetCapacity() {\n\t\t\t\t\treturn this.#mapSAHToName.size;\n\t\t\t\t}\n\t\t\t\tgetFileCount() {\n\t\t\t\t\treturn this.#mapFilenameToSAH.size;\n\t\t\t\t}\n\t\t\t\tgetFileNames() {\n\t\t\t\t\tconst rc = [];\n\t\t\t\t\tfor (const n of this.#mapFilenameToSAH.keys()) rc.push(n);\n\t\t\t\t\treturn rc;\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tAdds n files to the pool's capacity. This change is\n\t\t\t\tpersistent across settings. Returns a Promise which resolves\n\t\t\t\tto the new capacity.\n\t\t\t\t*/\n\t\t\t\tasync addCapacity(n) {\n\t\t\t\t\tfor (let i = 0; i < n; ++i) {\n\t\t\t\t\t\tconst name = getRandomName();\n\t\t\t\t\t\tconst ah = await (await this.#dhOpaque.getFileHandle(name, { create: true })).createSyncAccessHandle();\n\t\t\t\t\t\tthis.#mapSAHToName.set(ah, name);\n\t\t\t\t\t\tthis.setAssociatedPath(ah, \"\", 0);\n\t\t\t\t\t}\n\t\t\t\t\treturn this.getCapacity();\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tReduce capacity by n, but can only reduce up to the limit\n\t\t\t\tof currently-available SAHs. Returns a Promise which resolves\n\t\t\t\tto the number of slots really removed.\n\t\t\t\t*/\n\t\t\t\tasync reduceCapacity(n) {\n\t\t\t\t\tlet nRm = 0;\n\t\t\t\t\tfor (const ah of Array.from(this.#availableSAH)) {\n\t\t\t\t\t\tif (nRm === n || this.getFileCount() === this.getCapacity()) break;\n\t\t\t\t\t\tconst name = this.#mapSAHToName.get(ah);\n\t\t\t\t\t\tah.close();\n\t\t\t\t\t\tawait this.#dhOpaque.removeEntry(name);\n\t\t\t\t\t\tthis.#mapSAHToName.delete(ah);\n\t\t\t\t\t\tthis.#availableSAH.delete(ah);\n\t\t\t\t\t\t++nRm;\n\t\t\t\t\t}\n\t\t\t\t\treturn nRm;\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tReleases all currently-opened SAHs. The only legal operation\n\t\t\t\tafter this is acquireAccessHandles() or (if this is called from\n\t\t\t\tpauseVfs()) either of isPaused() or unpauseVfs().\n\t\t\t\t*/\n\t\t\t\treleaseAccessHandles() {\n\t\t\t\t\tfor (const ah of this.#mapSAHToName.keys()) ah.close();\n\t\t\t\t\tthis.#mapSAHToName.clear();\n\t\t\t\t\tthis.#mapFilenameToSAH.clear();\n\t\t\t\t\tthis.#availableSAH.clear();\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tOpens all files under this.vfsDir/this.#dhOpaque and acquires a\n\t\t\t\tSAH for each. Returns a Promise which resolves to no value but\n\t\t\t\tcompletes once all SAHs are acquired. If acquiring an SAH\n\t\t\t\tthrows, this.$error will contain the corresponding Error\n\t\t\t\tobject.\n\t\t\t\t\n\t\t\t\tIf it throws, it releases any SAHs which it may have\n\t\t\t\tacquired before the exception was thrown, leaving the VFS in a\n\t\t\t\twell-defined but unusable state.\n\t\t\t\t\n\t\t\t\tIf clearFiles is true, the client-stored state of each file is\n\t\t\t\tcleared when its handle is acquired, including its name, flags,\n\t\t\t\tand any data stored after the metadata block.\n\t\t\t\t*/\n\t\t\t\tasync acquireAccessHandles(clearFiles = false) {\n\t\t\t\t\tconst files = [];\n\t\t\t\t\tfor await (const [name, h] of this.#dhOpaque) if (\"file\" === h.kind) files.push([name, h]);\n\t\t\t\t\treturn Promise.all(files.map(async ([name, h]) => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst ah = await h.createSyncAccessHandle();\n\t\t\t\t\t\t\tthis.#mapSAHToName.set(ah, name);\n\t\t\t\t\t\t\tif (clearFiles) {\n\t\t\t\t\t\t\t\tah.truncate(HEADER_OFFSET_DATA);\n\t\t\t\t\t\t\t\tthis.setAssociatedPath(ah, \"\", 0);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst path = this.getAssociatedPath(ah);\n\t\t\t\t\t\t\t\tif (path) this.#mapFilenameToSAH.set(path, ah);\n\t\t\t\t\t\t\t\telse this.#availableSAH.add(ah);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tthis.storeErr(e);\n\t\t\t\t\t\t\tthis.releaseAccessHandles();\n\t\t\t\t\t\t\tthrow e;\n\t\t\t\t\t\t}\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tGiven an SAH, returns the client-specified name of\n\t\t\t\tthat file by extracting it from the SAH's header.\n\t\t\t\t\n\t\t\t\tOn error, it disassociates SAH from the pool and\n\t\t\t\treturns an empty string.\n\t\t\t\t*/\n\t\t\t\tgetAssociatedPath(sah) {\n\t\t\t\t\tsah.read(this.#apBody, { at: 0 });\n\t\t\t\t\tconst flags = this.#dvBody.getUint32(HEADER_OFFSET_FLAGS);\n\t\t\t\t\tif (this.#apBody[0] && (flags & capi.SQLITE_OPEN_DELETEONCLOSE || (flags & PERSISTENT_FILE_TYPES) === 0)) {\n\t\t\t\t\t\twarn(`Removing file with unexpected flags ${flags.toString(16)}`, this.#apBody);\n\t\t\t\t\t\tthis.setAssociatedPath(sah, \"\", 0);\n\t\t\t\t\t\treturn \"\";\n\t\t\t\t\t}\n\t\t\t\t\tconst fileDigest = new Uint32Array(HEADER_DIGEST_SIZE / 4);\n\t\t\t\t\tsah.read(fileDigest, { at: HEADER_OFFSET_DIGEST });\n\t\t\t\t\tconst compDigest = this.computeDigest(this.#apBody, flags);\n\t\t\t\t\tif (fileDigest.every((v, i) => v === compDigest[i])) {\n\t\t\t\t\t\tconst pathBytes = this.#apBody.findIndex((v) => 0 === v);\n\t\t\t\t\t\tif (0 === pathBytes) sah.truncate(HEADER_OFFSET_DATA);\n\t\t\t\t\t\treturn pathBytes ? textDecoder.decode(this.#apBody.subarray(0, pathBytes)) : \"\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\twarn(\"Disassociating file with bad digest.\");\n\t\t\t\t\t\tthis.setAssociatedPath(sah, \"\", 0);\n\t\t\t\t\t\treturn \"\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tStores the given client-defined path and SQLITE_OPEN_xyz flags\n\t\t\t\tinto the given SAH. If path is an empty string then the file is\n\t\t\t\tdisassociated from the pool but its previous name is preserved\n\t\t\t\tin the metadata.\n\t\t\t\t*/\n\t\t\t\tsetAssociatedPath(sah, path, flags) {\n\t\t\t\t\tconst enc = textEncoder.encodeInto(path, this.#apBody);\n\t\t\t\t\tif (HEADER_MAX_PATH_SIZE <= enc.written + 1) toss(\"Path too long:\", path);\n\t\t\t\t\tif (path && flags) flags |= FLAG_COMPUTE_DIGEST_V2;\n\t\t\t\t\tthis.#apBody.fill(0, enc.written, HEADER_MAX_PATH_SIZE);\n\t\t\t\t\tthis.#dvBody.setUint32(HEADER_OFFSET_FLAGS, flags);\n\t\t\t\t\tconst digest = this.computeDigest(this.#apBody, flags);\n\t\t\t\t\tsah.write(this.#apBody, { at: 0 });\n\t\t\t\t\tsah.write(digest, { at: HEADER_OFFSET_DIGEST });\n\t\t\t\t\tsah.flush();\n\t\t\t\t\tif (path) {\n\t\t\t\t\t\tthis.#mapFilenameToSAH.set(path, sah);\n\t\t\t\t\t\tthis.#availableSAH.delete(sah);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsah.truncate(HEADER_OFFSET_DATA);\n\t\t\t\t\t\tthis.#availableSAH.add(sah);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tComputes a digest for the given byte array and returns it as a\n\t\t\t\ttwo-element Uint32Array. This digest gets stored in the\n\t\t\t\tmetadata for each file as a validation check. Changing this\n\t\t\t\talgorithm invalidates all existing databases for this VFS, so\n\t\t\t\tdon't do that.\n\t\t\t\t\n\t\t\t\tSee the docs for FLAG_COMPUTE_DIGEST_V2 for more details.\n\t\t\t\t*/\n\t\t\t\tcomputeDigest(byteArray, fileFlags) {\n\t\t\t\t\tif (fileFlags & FLAG_COMPUTE_DIGEST_V2) {\n\t\t\t\t\t\tlet h1 = 3735928559;\n\t\t\t\t\t\tlet h2 = 1103547991;\n\t\t\t\t\t\tfor (const v of byteArray) {\n\t\t\t\t\t\t\th1 = Math.imul(h1 ^ v, 2654435761);\n\t\t\t\t\t\t\th2 = Math.imul(h2 ^ v, 104729);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn new Uint32Array([h1 >>> 0, h2 >>> 0]);\n\t\t\t\t\t} else return new Uint32Array([0, 0]);\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tRe-initializes the state of the SAH pool, releasing and\n\t\t\t\tre-acquiring all handles.\n\t\t\t\t\n\t\t\t\tSee acquireAccessHandles() for the specifics of the clearFiles\n\t\t\t\targument.\n\t\t\t\t*/\n\t\t\t\tasync reset(clearFiles) {\n\t\t\t\t\tawait this.isReady;\n\t\t\t\t\tlet h = await navigator.storage.getDirectory(), prev;\n\t\t\t\t\tfor (const d of this.vfsDir.split(\"/\")) if (d) {\n\t\t\t\t\t\tprev = h;\n\t\t\t\t\t\th = await h.getDirectoryHandle(d, { create: true });\n\t\t\t\t\t}\n\t\t\t\t\tthis.#dhVfsRoot = h;\n\t\t\t\t\tthis.#dhVfsParent = prev;\n\t\t\t\t\tthis.#dhOpaque = await this.#dhVfsRoot.getDirectoryHandle(OPAQUE_DIR_NAME, { create: true });\n\t\t\t\t\tthis.releaseAccessHandles();\n\t\t\t\t\treturn this.acquireAccessHandles(clearFiles);\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tReturns the pathname part of the given argument,\n\t\t\t\twhich may be any of:\n\t\t\t\t\n\t\t\t\t- a URL object\n\t\t\t\t- A JS string representing a file name\n\t\t\t\t- Wasm C-string representing a file name\n\t\t\t\t\n\t\t\t\tAll \"../\" parts and duplicate slashes are resolve/removed from\n\t\t\t\tthe returned result.\n\t\t\t\t*/\n\t\t\t\tgetPath(arg) {\n\t\t\t\t\tif (wasm.isPtr(arg)) arg = wasm.cstrToJs(arg);\n\t\t\t\t\treturn (arg instanceof URL ? arg : new URL(arg, \"file://localhost/\")).pathname;\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tRemoves the association of the given client-specified file\n\t\t\t\tname (JS string) from the pool. Returns true if a mapping\n\t\t\t\tis found, else false.\n\t\t\t\t*/\n\t\t\t\tdeletePath(path) {\n\t\t\t\t\tconst sah = this.#mapFilenameToSAH.get(path);\n\t\t\t\t\tif (sah) {\n\t\t\t\t\t\tthis.#mapFilenameToSAH.delete(path);\n\t\t\t\t\t\tthis.setAssociatedPath(sah, \"\", 0);\n\t\t\t\t\t}\n\t\t\t\t\treturn !!sah;\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tSets e (an Error object) as this object's current error. Pass a\n\t\t\t\tfalsy (or no) value to clear it. If code is truthy it is\n\t\t\t\tassumed to be an SQLITE_xxx result code, defaulting to\n\t\t\t\tSQLITE_IOERR if code is falsy.\n\t\t\t\t\n\t\t\t\tReturns the 2nd argument.\n\t\t\t\t*/\n\t\t\t\tstoreErr(e, code) {\n\t\t\t\t\tif (e) {\n\t\t\t\t\t\te.sqlite3Rc = code || capi.SQLITE_IOERR;\n\t\t\t\t\t\tthis.error(e);\n\t\t\t\t\t}\n\t\t\t\t\tthis.$error = e;\n\t\t\t\t\treturn code;\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tPops this object's Error object and returns\n\t\t\t\tit (a falsy value if no error is set).\n\t\t\t\t*/\n\t\t\t\tpopErr() {\n\t\t\t\t\tconst rc = this.$error;\n\t\t\t\t\tthis.$error = void 0;\n\t\t\t\t\treturn rc;\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tReturns the next available SAH without removing\n\t\t\t\tit from the set.\n\t\t\t\t*/\n\t\t\t\tnextAvailableSAH() {\n\t\t\t\t\tconst [rc] = this.#availableSAH.keys();\n\t\t\t\t\treturn rc;\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tGiven an (sqlite3_file*), returns the mapped\n\t\t\t\txOpen file object.\n\t\t\t\t*/\n\t\t\t\tgetOFileForS3File(pFile) {\n\t\t\t\t\treturn this.#mapS3FileToOFile_.get(pFile);\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tMaps or unmaps (if file is falsy) the given (sqlite3_file*)\n\t\t\t\tto an xOpen file object and to this pool object.\n\t\t\t\t*/\n\t\t\t\tmapS3FileToOFile(pFile, file) {\n\t\t\t\t\tif (file) {\n\t\t\t\t\t\tthis.#mapS3FileToOFile_.set(pFile, file);\n\t\t\t\t\t\tsetPoolForPFile(pFile, this);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.#mapS3FileToOFile_.delete(pFile);\n\t\t\t\t\t\tsetPoolForPFile(pFile, false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tReturns true if the given client-defined file name is in this\n\t\t\t\tobject's name-to-SAH map.\n\t\t\t\t*/\n\t\t\t\thasFilename(name) {\n\t\t\t\t\treturn this.#mapFilenameToSAH.has(name);\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tReturns the SAH associated with the given\n\t\t\t\tclient-defined file name.\n\t\t\t\t*/\n\t\t\t\tgetSAHForPath(path) {\n\t\t\t\t\treturn this.#mapFilenameToSAH.get(path);\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tRemoves this object's sqlite3_vfs registration and shuts down\n\t\t\t\tthis object, releasing all handles, mappings, and whatnot,\n\t\t\t\tincluding deleting its data directory. There is currently no\n\t\t\t\tway to \"revive\" the object and reaquire its\n\t\t\t\tresources. Similarly, there is no recovery strategy if removal\n\t\t\t\tof any given SAH fails, so such errors are ignored by this\n\t\t\t\tfunction.\n\t\t\t\t\n\t\t\t\tThis function is intended primarily for testing.\n\t\t\t\t\n\t\t\t\tResolves to true if it did its job, false if the\n\t\t\t\tVFS has already been shut down.\n\t\t\t\t\n\t\t\t\t@see pauseVfs()\n\t\t\t\t@see unpauseVfs()\n\t\t\t\t*/\n\t\t\t\tasync removeVfs() {\n\t\t\t\t\tif (!this.#cVfs.pointer || !this.#dhOpaque) return false;\n\t\t\t\t\tcapi.sqlite3_vfs_unregister(this.#cVfs.pointer);\n\t\t\t\t\tthis.#cVfs.dispose();\n\t\t\t\t\tdelete initPromises[this.vfsName];\n\t\t\t\t\ttry {\n\t\t\t\t\t\tthis.releaseAccessHandles();\n\t\t\t\t\t\tawait this.#dhVfsRoot.removeEntry(OPAQUE_DIR_NAME, { recursive: true });\n\t\t\t\t\t\tthis.#dhOpaque = void 0;\n\t\t\t\t\t\tawait this.#dhVfsParent.removeEntry(this.#dhVfsRoot.name, { recursive: true });\n\t\t\t\t\t\tthis.#dhVfsRoot = this.#dhVfsParent = void 0;\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tsqlite3.config.error(this.vfsName, \"removeVfs() failed with no recovery strategy:\", e);\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\t\"Pauses\" this VFS by unregistering it from SQLite and\n\t\t\t\trelinquishing all open SAHs, leaving the associated files\n\t\t\t\tintact. If this object is already paused, this is a\n\t\t\t\tno-op. Returns this object.\n\t\t\t\t\n\t\t\t\tThis function throws if SQLite has any opened file handles\n\t\t\t\thosted by this VFS, as the alternative would be to invoke\n\t\t\t\tUndefined Behavior by closing file handles out from under the\n\t\t\t\tlibrary. Similarly, automatically closing any database handles\n\t\t\t\topened by this VFS would invoke Undefined Behavior in\n\t\t\t\tdownstream code which is holding those pointers.\n\t\t\t\t\n\t\t\t\tIf this function throws due to open file handles then it has\n\t\t\t\tno side effects. If the OPFS API throws while closing handles\n\t\t\t\tthen the VFS is left in an undefined state.\n\t\t\t\t\n\t\t\t\t@see isPaused()\n\t\t\t\t@see unpauseVfs()\n\t\t\t\t*/\n\t\t\t\tpauseVfs() {\n\t\t\t\t\tif (this.#mapS3FileToOFile_.size > 0) sqlite3.SQLite3Error.toss(capi.SQLITE_MISUSE, \"Cannot pause VFS\", this.vfsName, \"because it has opened files.\");\n\t\t\t\t\tif (this.#mapSAHToName.size > 0) {\n\t\t\t\t\t\tcapi.sqlite3_vfs_unregister(this.vfsName);\n\t\t\t\t\t\tthis.releaseAccessHandles();\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\tReturns true if this pool is currently paused else false.\n\t\t\t\t\n\t\t\t\t@see pauseVfs()\n\t\t\t\t@see unpauseVfs()\n\t\t\t\t*/\n\t\t\t\tisPaused() {\n\t\t\t\t\treturn 0 === this.#mapSAHToName.size;\n\t\t\t\t}\n\t\t\t\t/**\n\t\t\t\t\"Unpauses\" this VFS, reacquiring all SAH's and (if successful)\n\t\t\t\tre-registering it with SQLite. This is a no-op if the VFS is\n\t\t\t\tnot currently paused.\n\t\t\t\t\n\t\t\t\tThe returned Promise resolves to this object. See\n\t\t\t\tacquireAccessHandles() for how it behaves if it throws due to\n\t\t\t\tSAH acquisition failure.\n\t\t\t\t\n\t\t\t\t@see isPaused()\n\t\t\t\t@see pauseVfs()\n\t\t\t\t*/\n\t\t\t\tasync unpauseVfs() {\n\t\t\t\t\tif (0 === this.#mapSAHToName.size) return this.acquireAccessHandles(false).then(() => capi.sqlite3_vfs_register(this.#cVfs, 0), this);\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\t//! Documented elsewhere in this file.\n\t\t\t\texportFile(name) {\n\t\t\t\t\tconst sah = this.#mapFilenameToSAH.get(name) || toss(\"File not found:\", name);\n\t\t\t\t\tconst n = sah.getSize() - HEADER_OFFSET_DATA;\n\t\t\t\t\tconst b = new Uint8Array(n > 0 ? n : 0);\n\t\t\t\t\tif (n > 0) {\n\t\t\t\t\t\tconst nRead = sah.read(b, { at: HEADER_OFFSET_DATA });\n\t\t\t\t\t\tif (nRead != n) toss(\"Expected to read \" + n + \" bytes but read \" + nRead + \".\");\n\t\t\t\t\t}\n\t\t\t\t\treturn b;\n\t\t\t\t}\n\t\t\t\t//! Impl for importDb() when its 2nd arg is a function.\n\t\t\t\tasync importDbChunked(name, callback) {\n\t\t\t\t\tconst sah = this.#mapFilenameToSAH.get(name) || this.nextAvailableSAH() || toss(\"No available handles to import to.\");\n\t\t\t\t\tsah.truncate(0);\n\t\t\t\t\tlet nWrote = 0, chunk, checkedHeader = false;\n\t\t\t\t\ttry {\n\t\t\t\t\t\twhile (void 0 !== (chunk = await callback())) {\n\t\t\t\t\t\t\tif (chunk instanceof ArrayBuffer) chunk = new Uint8Array(chunk);\n\t\t\t\t\t\t\tif (!checkedHeader && 0 === nWrote && chunk.byteLength >= 15) {\n\t\t\t\t\t\t\t\tutil.affirmDbHeader(chunk);\n\t\t\t\t\t\t\t\tcheckedHeader = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsah.write(chunk, { at: HEADER_OFFSET_DATA + nWrote });\n\t\t\t\t\t\t\tnWrote += chunk.byteLength;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (nWrote < 512 || 0 !== nWrote % 512) toss(\"Input size\", nWrote, \"is not correct for an SQLite database.\");\n\t\t\t\t\t\tif (!checkedHeader) {\n\t\t\t\t\t\t\tconst header = new Uint8Array(20);\n\t\t\t\t\t\t\tsah.read(header, { at: 0 });\n\t\t\t\t\t\t\tutil.affirmDbHeader(header);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsah.write(new Uint8Array([1, 1]), { at: HEADER_OFFSET_DATA + 18 });\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tthis.setAssociatedPath(sah, \"\", 0);\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t\tthis.setAssociatedPath(sah, name, capi.SQLITE_OPEN_MAIN_DB);\n\t\t\t\t\treturn nWrote;\n\t\t\t\t}\n\t\t\t\t//! Documented elsewhere in this file.\n\t\t\t\timportDb(name, bytes) {\n\t\t\t\t\tif (bytes instanceof ArrayBuffer) bytes = new Uint8Array(bytes);\n\t\t\t\t\telse if (bytes instanceof Function) return this.importDbChunked(name, bytes);\n\t\t\t\t\tconst sah = this.#mapFilenameToSAH.get(name) || this.nextAvailableSAH() || toss(\"No available handles to import to.\");\n\t\t\t\t\tconst n = bytes.byteLength;\n\t\t\t\t\tif (n < 512 || n % 512 != 0) toss(\"Byte array size is invalid for an SQLite db.\");\n\t\t\t\t\tconst header = \"SQLite format 3\";\n\t\t\t\t\tfor (let i = 0; i < 15; ++i) if (header.charCodeAt(i) !== bytes[i]) toss(\"Input does not contain an SQLite database header.\");\n\t\t\t\t\tconst nWrote = sah.write(bytes, { at: HEADER_OFFSET_DATA });\n\t\t\t\t\tif (nWrote != n) {\n\t\t\t\t\t\tthis.setAssociatedPath(sah, \"\", 0);\n\t\t\t\t\t\ttoss(\"Expected to write \" + n + \" bytes but wrote \" + nWrote + \".\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsah.write(new Uint8Array([1, 1]), { at: HEADER_OFFSET_DATA + 18 });\n\t\t\t\t\t\tthis.setAssociatedPath(sah, name, capi.SQLITE_OPEN_MAIN_DB);\n\t\t\t\t\t}\n\t\t\t\t\treturn nWrote;\n\t\t\t\t}\n\t\t\t}\n\t\t\t/**\n\t\t\tA OpfsSAHPoolUtil instance is exposed to clients in order to\n\t\t\tmanipulate an OpfsSAHPool object without directly exposing that\n\t\t\tobject and allowing for some semantic changes compared to that\n\t\t\tclass.\n\t\t\t\n\t\t\tClass docs are in the client-level docs for\n\t\t\tinstallOpfsSAHPoolVfs().\n\t\t\t*/\n\t\t\tclass OpfsSAHPoolUtil {\n\t\t\t\t#p;\n\t\t\t\tconstructor(sahPool) {\n\t\t\t\t\tthis.#p = sahPool;\n\t\t\t\t\tthis.vfsName = sahPool.vfsName;\n\t\t\t\t}\n\t\t\t\tasync addCapacity(n) {\n\t\t\t\t\treturn this.#p.addCapacity(n);\n\t\t\t\t}\n\t\t\t\tasync reduceCapacity(n) {\n\t\t\t\t\treturn this.#p.reduceCapacity(n);\n\t\t\t\t}\n\t\t\t\tgetCapacity() {\n\t\t\t\t\treturn this.#p.getCapacity(this.#p);\n\t\t\t\t}\n\t\t\t\tgetFileCount() {\n\t\t\t\t\treturn this.#p.getFileCount();\n\t\t\t\t}\n\t\t\t\tgetFileNames() {\n\t\t\t\t\treturn this.#p.getFileNames();\n\t\t\t\t}\n\t\t\t\tasync reserveMinimumCapacity(min) {\n\t\t\t\t\tconst c = this.#p.getCapacity();\n\t\t\t\t\treturn c < min ? this.#p.addCapacity(min - c) : c;\n\t\t\t\t}\n\t\t\t\texportFile(name) {\n\t\t\t\t\treturn this.#p.exportFile(name);\n\t\t\t\t}\n\t\t\t\timportDb(name, bytes) {\n\t\t\t\t\treturn this.#p.importDb(name, bytes);\n\t\t\t\t}\n\t\t\t\tasync wipeFiles() {\n\t\t\t\t\treturn this.#p.reset(true);\n\t\t\t\t}\n\t\t\t\tunlink(filename) {\n\t\t\t\t\treturn this.#p.deletePath(filename);\n\t\t\t\t}\n\t\t\t\tasync removeVfs() {\n\t\t\t\t\treturn this.#p.removeVfs();\n\t\t\t\t}\n\t\t\t\tpauseVfs() {\n\t\t\t\t\tthis.#p.pauseVfs();\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tasync unpauseVfs() {\n\t\t\t\t\treturn this.#p.unpauseVfs().then(() => this);\n\t\t\t\t}\n\t\t\t\tisPaused() {\n\t\t\t\t\treturn this.#p.isPaused();\n\t\t\t\t}\n\t\t\t}\n\t\t\t/**\n\t\t\tReturns a resolved Promise if the current environment\n\t\t\thas a \"fully-sync\" SAH impl, else a rejected Promise.\n\t\t\t*/\n\t\t\tconst apiVersionCheck = async () => {\n\t\t\t\tconst dh = await navigator.storage.getDirectory();\n\t\t\t\tconst fn = \".opfs-sahpool-sync-check-\" + getRandomName();\n\t\t\t\tconst close = (await (await dh.getFileHandle(fn, { create: true })).createSyncAccessHandle()).close();\n\t\t\t\tawait close;\n\t\t\t\tawait dh.removeEntry(fn);\n\t\t\t\tif (close?.then) toss(\"The local OPFS API is too old for opfs-sahpool:\", \"it has an async FileSystemSyncAccessHandle.close() method.\");\n\t\t\t\treturn true;\n\t\t\t};\n\t\t\t/**\n\t\t\tinstallOpfsSAHPoolVfs() asynchronously initializes the OPFS\n\t\t\tSyncAccessHandle (a.k.a. SAH) Pool VFS. It returns a Promise which\n\t\t\teither resolves to a utility object described below or rejects with\n\t\t\tan Error value.\n\t\t\t\n\t\t\tInitialization of this VFS is not automatic because its\n\t\t\tregistration requires that it lock all resources it\n\t\t\twill potentially use, even if client code does not want\n\t\t\tto use them. That, in turn, can lead to locking errors\n\t\t\twhen, for example, one page in a given origin has loaded\n\t\t\tthis VFS but does not use it, then another page in that\n\t\t\torigin tries to use the VFS. If the VFS were automatically\n\t\t\tregistered, the second page would fail to load the VFS\n\t\t\tdue to OPFS locking errors.\n\t\t\t\n\t\t\tIf this function is called more than once with a given \"name\"\n\t\t\toption (see below), it will return the same Promise. Calls for\n\t\t\tdifferent names will return different Promises which resolve to\n\t\t\tindependent objects and refer to different VFS registrations.\n\t\t\t\n\t\t\tOn success, the resulting Promise resolves to a utility object\n\t\t\twhich can be used to query and manipulate the pool. Its API is\n\t\t\tdescribed at the end of these docs.\n\t\t\t\n\t\t\tThis function accepts an options object to configure certain\n\t\t\tparts but it is only acknowledged for the very first call for\n\t\t\teach distinct name and ignored for all subsequent calls with that\n\t\t\tsame name.\n\t\t\t\n\t\t\tThe options, in alphabetical order:\n\t\t\t\n\t\t\t- `clearOnInit`: (default=false) if truthy, contents and filename\n\t\t\tmapping are removed from each SAH it is acquired during\n\t\t\tinitialization of the VFS, leaving the VFS's storage in a pristine\n\t\t\tstate. Use this only for databases which need not survive a page\n\t\t\treload.\n\t\t\t\n\t\t\t- `initialCapacity`: (default=6) Specifies the default capacity of\n\t\t\tthe VFS. This should not be set unduly high because the VFS has\n\t\t\tto open (and keep open) a file for each entry in the pool. This\n\t\t\tsetting only has an effect when the pool is initially empty. It\n\t\t\tdoes not have any effect if a pool already exists.\n\t\t\t\n\t\t\t- `directory`: (default=\".\"+`name`) Specifies the OPFS directory\n\t\t\tname in which to store metadata for the `\"opfs-sahpool\"`\n\t\t\tsqlite3_vfs.  Only one instance of this VFS can be installed per\n\t\t\tJavaScript engine, and any two engines with the same storage\n\t\t\tdirectory name will collide with each other, leading to locking\n\t\t\terrors and the inability to register the VFS in the second and\n\t\t\tsubsequent engine. Using a different directory name for each\n\t\t\tapplication enables different engines in the same HTTP origin to\n\t\t\tco-exist, but their data are invisible to each other. Changing\n\t\t\tthis name will effectively orphan any databases stored under\n\t\t\tprevious names. The default is unspecified but descriptive.  This\n\t\t\toption may contain multiple path elements, e.g. \"foo/bar/baz\",\n\t\t\tand they are created automatically.  In practice there should be\n\t\t\tno driving need to change this. ACHTUNG: all files in this\n\t\t\tdirectory are assumed to be managed by the VFS. Do not place\n\t\t\tother files in that directory, as they may be deleted or\n\t\t\totherwise modified by the VFS.\n\t\t\t\n\t\t\t- `name`: (default=\"opfs-sahpool\") sets the name to register this\n\t\t\tVFS under. Normally this should not be changed, but it is\n\t\t\tpossible to register this VFS under multiple names so long as\n\t\t\teach has its own separate directory to work from. The storage for\n\t\t\teach is invisible to all others. The name must be a string\n\t\t\tcompatible with `sqlite3_vfs_register()` and friends and suitable\n\t\t\tfor use in URI-style database file names.\n\t\t\t\n\t\t\tAchtung: if a custom `name` is provided, a custom `directory`\n\t\t\tmust also be provided if any other instance is registered with\n\t\t\tthe default directory. If no directory is explicitly provided\n\t\t\tthen a directory name is synthesized from the `name` option.\n\t\t\t\n\t\t\t\n\t\t\t- `forceReinitIfPreviouslyFailed`: (default=`false`) Is a fallback option\n\t\t\tto assist in working around certain flaky environments which may\n\t\t\tmysteriously fail to permit access to OPFS sync access handles on\n\t\t\tan initial attempt but permit it on a second attemp. This option\n\t\t\tshould never be used but is provided for those who choose to\n\t\t\tthrow caution to the wind and trust such environments. If this\n\t\t\toption is truthy _and_ the previous attempt to initialize this\n\t\t\tVFS with the same `name` failed, the VFS will attempt to\n\t\t\tinitialize a second time instead of returning the cached\n\t\t\tfailure. See discussion at:\n\t\t\t<https://github.com/sqlite/sqlite-wasm/issues/79>\n\t\t\t\n\t\t\t\n\t\t\tPeculiarities of this VFS vis a vis other SQLite VFSes:\n\t\t\t\n\t\t\t- Paths given to it _must_ be absolute. Relative paths will not\n\t\t\tbe properly recognized. This is arguably a bug but correcting it\n\t\t\trequires some hoop-jumping in routines which have no business\n\t\t\tdoing such tricks. (2026-01-19 (2.5 years later): the specifics\n\t\t\tare lost to history, but this was a side effect of xOpen()\n\t\t\treceiving an immutable C-string filename, to which no implicit\n\t\t\t\"/\" can be prefixed without causing a discrepancy between what\n\t\t\tthe user provided and what the VFS stores. Its conceivable that\n\t\t\tthat quirk could be glossed over in xFullPathname(), but\n\t\t\tregressions when doing so cannot be ruled out, so there are no\n\t\t\tcurrent plans to change this behavior.)\n\t\t\t\n\t\t\t- It is possible to install multiple instances under different\n\t\t\tnames, each sandboxed from one another inside their own private\n\t\t\tdirectory.  This feature exists primarily as a way for disparate\n\t\t\tapplications within a given HTTP origin to use this VFS without\n\t\t\tintroducing locking issues between them.\n\t\t\t\n\t\t\t\n\t\t\tThe API for the utility object passed on by this function's\n\t\t\tPromise, in alphabetical order...\n\t\t\t\n\t\t\t- [async] number addCapacity(n)\n\t\t\t\n\t\t\tAdds `n` entries to the current pool. This change is persistent\n\t\t\tacross sessions so should not be called automatically at each app\n\t\t\tstartup (but see `reserveMinimumCapacity()`). Its returned Promise\n\t\t\tresolves to the new capacity.  Because this operation is necessarily\n\t\t\tasynchronous, the C-level VFS API cannot call this on its own as\n\t\t\tneeded.\n\t\t\t\n\t\t\t- byteArray exportFile(name)\n\t\t\t\n\t\t\tSynchronously reads the contents of the given file into a Uint8Array\n\t\t\tand returns it. This will throw if the given name is not currently\n\t\t\tin active use or on I/O error. Note that the given name is _not_\n\t\t\tvisible directly in OPFS (or, if it is, it's not from this VFS).\n\t\t\t\n\t\t\t- number getCapacity()\n\t\t\t\n\t\t\tReturns the number of files currently contained\n\t\t\tin the SAH pool. The default capacity is only large enough for one\n\t\t\tor two databases and their associated temp files.\n\t\t\t\n\t\t\t- number getFileCount()\n\t\t\t\n\t\t\tReturns the number of files from the pool currently allocated to\n\t\t\tslots. This is not the same as the files being \"opened\".\n\t\t\t\n\t\t\t- array getFileNames()\n\t\t\t\n\t\t\tReturns an array of the names of the files currently allocated to\n\t\t\tslots. This list is the same length as getFileCount().\n\t\t\t\n\t\t\t- void importDb(name, bytes)\n\t\t\t\n\t\t\tImports the contents of an SQLite database, provided as a byte\n\t\t\tarray or ArrayBuffer, under the given name, overwriting any\n\t\t\texisting content. Throws if the pool has no available file slots,\n\t\t\ton I/O error, or if the input does not appear to be a\n\t\t\tdatabase. In the latter case, only a cursory examination is made.\n\t\t\tResults are undefined if the given db name refers to an opened\n\t\t\tdb.  Note that this routine is _only_ for importing database\n\t\t\tfiles, not arbitrary files, the reason being that this VFS will\n\t\t\tautomatically clean up any non-database files so importing them\n\t\t\tis pointless.\n\t\t\t\n\t\t\tIf passed a function for its second argument, its behavior\n\t\t\tchanges to asynchronous and it imports its data in chunks fed to\n\t\t\tit by the given callback function. It calls the callback (which\n\t\t\tmay be async) repeatedly, expecting either a Uint8Array or\n\t\t\tArrayBuffer (to denote new input) or undefined (to denote\n\t\t\tEOF). For so long as the callback continues to return\n\t\t\tnon-undefined, it will append incoming data to the given\n\t\t\tVFS-hosted database file. The result of the resolved Promise when\n\t\t\tcalled this way is the size of the resulting database.\n\t\t\t\n\t\t\tOn success this routine rewrites the database header bytes in the\n\t\t\toutput file (not the input array) to force disabling of WAL mode.\n\t\t\t\n\t\t\tOn a write error, the handle is removed from the pool and made\n\t\t\tavailable for re-use.\n\t\t\t\n\t\t\t- [async] number reduceCapacity(n)\n\t\t\t\n\t\t\tRemoves up to `n` entries from the pool, with the caveat that it can\n\t\t\tonly remove currently-unused entries. It returns a Promise which\n\t\t\tresolves to the number of entries actually removed.\n\t\t\t\n\t\t\t- [async] boolean removeVfs()\n\t\t\t\n\t\t\tUnregisters the opfs-sahpool VFS and removes its directory from OPFS\n\t\t\t(which means that _all client content_ is removed). After calling\n\t\t\tthis, the VFS may no longer be used and there is no way to re-add it\n\t\t\taside from reloading the current JavaScript context.\n\t\t\t\n\t\t\tResults are undefined if a database is currently in use with this\n\t\t\tVFS.\n\t\t\t\n\t\t\tThe returned Promise resolves to true if it performed the removal\n\t\t\tand false if the VFS was not installed.\n\t\t\t\n\t\t\tIf the VFS has a multi-level directory, e.g. \"/foo/bar/baz\", _only_\n\t\t\tthe bottom-most directory is removed because this VFS cannot know for\n\t\t\tcertain whether the higher-level directories contain data which\n\t\t\tshould be removed.\n\t\t\t\n\t\t\t- [async] number reserveMinimumCapacity(min)\n\t\t\t\n\t\t\tIf the current capacity is less than `min`, the capacity is\n\t\t\tincreased to `min`, else this returns with no side effects. The\n\t\t\tresulting Promise resolves to the new capacity.\n\t\t\t\n\t\t\t- boolean unlink(filename)\n\t\t\t\n\t\t\tIf a virtual file exists with the given name, disassociates it from\n\t\t\tthe pool and returns true, else returns false without side\n\t\t\teffects. Results are undefined if the file is currently in active\n\t\t\tuse.\n\t\t\t\n\t\t\t- string vfsName\n\t\t\t\n\t\t\tThe SQLite VFS name under which this pool's VFS is registered.\n\t\t\t\n\t\t\t- [async] void wipeFiles()\n\t\t\t\n\t\t\tClears all client-defined state of all SAHs and makes all of them\n\t\t\tavailable for re-use by the pool. Results are undefined if any such\n\t\t\thandles are currently in use, e.g. by an sqlite3 db.\n\t\t\t\n\t\t\tAPIs specific to the \"pause\" capability (added in version 3.49):\n\t\t\t\n\t\t\tSummary: \"pausing\" the VFS disassociates it from SQLite and\n\t\t\trelinquishes its SAHs so that they may be opened by another\n\t\t\tinstance of this VFS (running in a separate tab/page or Worker).\n\t\t\t\"Unpausing\" it takes back control, if able.\n\t\t\t\n\t\t\t- pauseVfs()\n\t\t\t\n\t\t\t\"Pauses\" this VFS by unregistering it from SQLite and\n\t\t\trelinquishing all open SAHs, leaving the associated files intact.\n\t\t\tThis enables pages/tabs to coordinate semi-concurrent usage of\n\t\t\tthis VFS.  If this object is already paused, this is a\n\t\t\tno-op. Returns this object. Throws if SQLite has any opened file\n\t\t\thandles hosted by this VFS. If this function throws due to open\n\t\t\tfile handles then it has no side effects. If the OPFS API throws\n\t\t\twhile closing handles then the VFS is left in an undefined state.\n\t\t\t\n\t\t\t- isPaused()\n\t\t\t\n\t\t\tReturns true if this VFS is paused, else false.\n\t\t\t\n\t\t\t- [async] unpauseVfs()\n\t\t\t\n\t\t\tRestores the VFS to an active state after having called\n\t\t\tpauseVfs() on it.  This is a no-op if the VFS is not paused. The\n\t\t\treturned Promise resolves to this object on success. A rejected\n\t\t\tPromise means there was a problem reacquiring the SAH handles\n\t\t\t(possibly because they're in use by another instance or have\n\t\t\tsince been removed). Generically speaking, there is no recovery\n\t\t\tstrategy for that type of error, but if the problem is simply\n\t\t\tthat the OPFS files are locked, then a later attempt to unpause\n\t\t\tit, made after the concurrent instance releases the SAHs, may\n\t\t\trecover from the situation.\n\t\t\t*/\n\t\t\tsqlite3.installOpfsSAHPoolVfs = async function(options = Object.create(null)) {\n\t\t\t\toptions = Object.assign(Object.create(null), optionDefaults, options || {});\n\t\t\t\tconst vfsName = options.name;\n\t\t\t\tif (options.$testThrowPhase1) throw options.$testThrowPhase1;\n\t\t\t\tif (initPromises[vfsName]) try {\n\t\t\t\t\treturn await initPromises[vfsName];\n\t\t\t\t} catch (e) {\n\t\t\t\t\tif (options.forceReinitIfPreviouslyFailed) delete initPromises[vfsName];\n\t\t\t\t\telse throw e;\n\t\t\t\t}\n\t\t\t\tif (!globalThis.FileSystemHandle || !globalThis.FileSystemDirectoryHandle || !globalThis.FileSystemFileHandle || !globalThis.FileSystemFileHandle.prototype.createSyncAccessHandle || !navigator?.storage?.getDirectory) return initPromises[vfsName] = Promise.reject(/* @__PURE__ */ new Error(\"Missing required OPFS APIs.\"));\n\t\t\t\t/**\n\t\t\t\tMaintenance reminder: the order of ASYNC ops in this function\n\t\t\t\tis significant. We need to have them all chained at the very\n\t\t\t\tend in order to be able to catch a race condition where\n\t\t\t\tinstallOpfsSAHPoolVfs() is called twice in rapid succession,\n\t\t\t\te.g.:\n\t\t\t\t\n\t\t\t\tinstallOpfsSAHPoolVfs().then(console.warn.bind(console));\n\t\t\t\tinstallOpfsSAHPoolVfs().then(console.warn.bind(console));\n\t\t\t\t\n\t\t\t\tIf the timing of the async calls is not \"just right\" then that\n\t\t\t\tsecond call can end up triggering the init a second time and chaos\n\t\t\t\tensues.\n\t\t\t\t*/\n\t\t\t\treturn initPromises[vfsName] = apiVersionCheck().then(async function() {\n\t\t\t\t\tif (options.$testThrowPhase2) throw options.$testThrowPhase2;\n\t\t\t\t\tconst thePool = new OpfsSAHPool(options);\n\t\t\t\t\treturn thePool.isReady.then(async () => {\n\t\t\t\t\t\t/** The poolUtil object will be the result of the\n\t\t\t\t\t\tresolved Promise. */\n\t\t\t\t\t\tconst poolUtil = new OpfsSAHPoolUtil(thePool);\n\t\t\t\t\t\tif (sqlite3.oo1) {\n\t\t\t\t\t\t\tconst oo1 = sqlite3.oo1;\n\t\t\t\t\t\t\tconst theVfs = thePool.getVfs();\n\t\t\t\t\t\t\tconst OpfsSAHPoolDb = function(...args) {\n\t\t\t\t\t\t\t\tconst opt = oo1.DB.dbCtorHelper.normalizeArgs(...args);\n\t\t\t\t\t\t\t\topt.vfs = theVfs.$zName;\n\t\t\t\t\t\t\t\too1.DB.dbCtorHelper.call(this, opt);\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tOpfsSAHPoolDb.prototype = Object.create(oo1.DB.prototype);\n\t\t\t\t\t\t\tpoolUtil.OpfsSAHPoolDb = OpfsSAHPoolDb;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthePool.log(\"VFS initialized.\");\n\t\t\t\t\t\treturn poolUtil;\n\t\t\t\t\t}).catch(async (e) => {\n\t\t\t\t\t\tawait thePool.removeVfs().catch(() => {});\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t});\n\t\t\t\t}).catch((err) => {\n\t\t\t\t\treturn initPromises[vfsName] = Promise.reject(err);\n\t\t\t\t});\n\t\t\t};\n\t\t});\n\t\ttry {\n\t\t\tconst bootstrapConfig = Object.assign(\n\t\t\t\tObject.create(null),\n\t\t\t\t/** The WASM-environment-dependent configuration for sqlite3ApiBootstrap() */\n\t\t\t\t{\n\t\t\t\t\tmemory: \"undefined\" !== typeof wasmMemory ? wasmMemory : EmscriptenModule[\"wasmMemory\"],\n\t\t\t\t\texports: \"undefined\" !== typeof wasmExports ? wasmExports : Object.prototype.hasOwnProperty.call(EmscriptenModule, \"wasmExports\") ? EmscriptenModule[\"wasmExports\"] : EmscriptenModule[\"asm\"]\n\t\t\t\t},\n\t\t\t\tglobalThis.sqlite3ApiBootstrap.defaultConfig,\n\t\t\t\tglobalThis.sqlite3ApiConfig || {}\n\t\t\t);\n\t\t\tsqlite3InitScriptInfo.debugModule(\"Bootstrapping lib config\", bootstrapConfig);\n\t\t\t/**\n\t\t\tFor purposes of the Emscripten build, call sqlite3ApiBootstrap().\n\t\t\tIdeally clients should be able to inject their own config here,\n\t\t\tbut that's not practical in this particular build constellation\n\t\t\tbecause of the order everything happens in.  Clients may either\n\t\t\tdefine globalThis.sqlite3ApiConfig or modify\n\t\t\tglobalThis.sqlite3ApiBootstrap.defaultConfig to tweak the default\n\t\t\tconfiguration used by a no-args call to sqlite3ApiBootstrap(),\n\t\t\tbut must have first loaded their WASM module in order to be able\n\t\t\tto provide the necessary configuration state.\n\t\t\t*/\n\t\t\tconst p = globalThis.sqlite3ApiBootstrap(bootstrapConfig);\n\t\t\tdelete globalThis.sqlite3ApiBootstrap;\n\t\t\treturn p;\n\t\t} catch (e) {\n\t\t\tconsole.error(\"sqlite3ApiBootstrap() error:\", e);\n\t\t\tthrow e;\n\t\t}\n\t};\n\tif (runtimeInitialized) moduleRtn = Module;\n\telse moduleRtn = new Promise((resolve, reject) => {\n\t\treadyPromiseResolve = resolve;\n\t\treadyPromiseReject = reject;\n\t});\n\treturn moduleRtn;\n}\nsqlite3InitModule = (function() {\n\t/**\n\tIn order to hide the sqlite3InitModule()'s resulting\n\tEmscripten module from downstream clients (and simplify our\n\tdocumentation by being able to elide those details), we hide that\n\tfunction and expose a hand-written sqlite3InitModule() to return\n\tthe sqlite3 object (most of the time).\n\t*/\n\tconst originalInit = sqlite3InitModule;\n\tif (!originalInit) throw new Error(\"Expecting sqlite3InitModule to be defined by the Emscripten build.\");\n\t/**\n\tWe need to add some state which our custom Module.locateFile()\n\tcan see, but an Emscripten limitation currently prevents us from\n\tattaching it to the sqlite3InitModule function object:\n\t\n\thttps://github.com/emscripten-core/emscripten/issues/18071\n\t\n\tThe only(?) current workaround is to temporarily stash this state\n\tinto the global scope and delete it when sqlite3InitModule()\n\tis called.\n\t*/\n\tconst sIMS = globalThis.sqlite3InitModuleState = Object.assign(Object.create(null), {\n\t\tmoduleScript: globalThis?.document?.currentScript,\n\t\tisWorker: \"undefined\" !== typeof WorkerGlobalScope,\n\t\tlocation: globalThis.location,\n\t\turlParams: globalThis?.location?.href ? new URL(globalThis.location.href).searchParams : new URLSearchParams(),\n\t\twasmFilename: \"sqlite3.wasm\"\n\t});\n\tsIMS.debugModule = sIMS.urlParams.has(\"sqlite3.debugModule\") ? (...args) => console.warn(\"sqlite3.debugModule:\", ...args) : () => {};\n\tif (sIMS.urlParams.has(\"sqlite3.dir\")) sIMS.sqlite3Dir = sIMS.urlParams.get(\"sqlite3.dir\") + \"/\";\n\telse if (sIMS.moduleScript) {\n\t\tconst li = sIMS.moduleScript.src.split(\"/\");\n\t\tli.pop();\n\t\tsIMS.sqlite3Dir = li.join(\"/\") + \"/\";\n\t}\n\tconst sIM = globalThis.sqlite3InitModule = function ff(...args) {\n\t\tsIMS.emscriptenLocateFile = args[0]?.locateFile;\n\t\tsIMS.emscriptenInstantiateWasm = args[0]?.instantiateWasm;\n\t\treturn originalInit(...args).then((EmscriptenModule) => {\n\t\t\tsIMS.debugModule(\"sqlite3InitModule() sIMS =\", sIMS);\n\t\t\tsIMS.debugModule(\"sqlite3InitModule() EmscriptenModule =\", EmscriptenModule);\n\t\t\tconst s = EmscriptenModule.runSQLite3PostLoadInit(sIMS, EmscriptenModule, !!ff.__isUnderTest);\n\t\t\tsIMS.debugModule(\"sqlite3InitModule() sqlite3 =\", s);\n\t\t\treturn s;\n\t\t}).catch((e) => {\n\t\t\tconsole.error(\"Exception loading sqlite3 module:\", e);\n\t\t\tthrow e;\n\t\t});\n\t};\n\tsIM.ready = originalInit.ready;\n\tif (sIMS.moduleScript) {\n\t\tlet src = sIMS.moduleScript.src.split(\"/\");\n\t\tsrc.pop();\n\t\tsIMS.scriptDir = src.join(\"/\") + \"/\";\n\t}\n\tsIMS.debugModule(\"extern-post-js.c-pp.js sqlite3InitModuleState =\", sIMS);\n\treturn sIM;\n})();\nvar sqlite3_bundler_friendly_default = sqlite3InitModule;\n//#endregion\nexport { sqlite3_bundler_friendly_default as default, sqlite3_worker1_promiser_default as sqlite3Worker1Promiser };\n","// Auto-generated — do not edit. Regenerate with: npm run generate-wasm\nexport const sqlite3WasmGzBase64 = \"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\";\n//# sourceMappingURL=sqlite3WasmGzBase64.js.map","import sqlite3InitModule from '@sqlite.org/sqlite-wasm';\nimport { sqlite3WasmGzBase64 } from \"./sqlite3WasmGzBase64.js\";\n/**\n * Decode a base64-encoded gzip-compressed buffer using the native\n * DecompressionStream API (available in Node.js 18+ and modern browsers).\n * @param base64 - Base64-encoded gzip data\n * @returns The decompressed ArrayBuffer\n */\nasync function decompressBase64Gzip(base64) {\n    const compressed = Uint8Array.from(atob(base64), (character) => character.codePointAt(0));\n    const stream = new Blob([compressed])\n        .stream()\n        .pipeThrough(new DecompressionStream('gzip'));\n    return new Response(stream).arrayBuffer();\n}\n/** Lazily decompress the embedded wasm (once). */\nlet wasmBinaryPromise;\nfunction getWasmBinary() {\n    wasmBinaryPromise ??= decompressBase64Gzip(sqlite3WasmGzBase64);\n    return wasmBinaryPromise;\n}\n/**\n * Initialize the SQLite WASM runtime and deserialize an ArrayBuffer\n * into an in-memory SQLite database.\n * @param data - Raw bytes of a .zmes file (SQLite3 database)\n * @returns The opened database handle and sqlite3 runtime\n */\nexport async function openDatabase(data) {\n    const wasmBinary = await getWasmBinary();\n    // @ts-expect-error wasmBinary is a valid Emscripten option not exposed in the type declarations\n    const sqlite3 = await sqlite3InitModule({ wasmBinary });\n    const uint8 = new Uint8Array(data);\n    const database = new sqlite3.oo1.DB();\n    if (database.pointer === undefined) {\n        throw new Error('Failed to create SQLite database handle');\n    }\n    const dataPointer = sqlite3.wasm.allocFromTypedArray(uint8);\n    const resultCode = sqlite3.capi.sqlite3_deserialize(database.pointer, 'main', dataPointer, uint8.byteLength, uint8.byteLength, sqlite3.capi.SQLITE_DESERIALIZE_FREEONCLOSE |\n        sqlite3.capi.SQLITE_DESERIALIZE_RESIZEABLE);\n    database.checkRc(resultCode);\n    return { database, sqlite3 };\n}\n//# sourceMappingURL=openDatabase.js.map","/**\n * 6-byte marker that precedes each IEEE 754 double in\n * .NET BinaryFormatter serialized System.Double[] arrays.\n */\nconst ENTRY_MARKER = new Uint8Array([0x06, 0x01, 0x01, 0x01, 0x02, 0x01]);\n/** Total bytes per entry: 6 marker bytes + 8 bytes for the double. */\nconst ENTRY_SIZE = 14;\n/**\n * Decode a .NET BinaryFormatter serialized `System.Double[]` blob\n * into a `Float64Array`.\n *\n * The binary format consists of a ~205-byte type metadata header\n * followed by repeating 14-byte entries (6-byte marker + 8-byte\n * little-endian IEEE 754 double).\n * @param blob - Raw blob bytes from the database\n * @returns Decoded array of double-precision values\n */\nexport function decodeBlob(blob) {\n    const markerOffset = findMarker(blob);\n    if (markerOffset === -1) {\n        return new Float64Array(0);\n    }\n    const remainingBytes = blob.byteLength - markerOffset;\n    const count = Math.floor(remainingBytes / ENTRY_SIZE);\n    const result = new Float64Array(count);\n    const dataView = new DataView(blob.buffer, blob.byteOffset, blob.byteLength);\n    for (let i = 0; i < count; i++) {\n        result[i] = dataView.getFloat64(markerOffset + i * ENTRY_SIZE + 6, true);\n    }\n    return result;\n}\n/**\n * Find the byte offset of the first occurrence of ENTRY_MARKER in the blob.\n * @param blob - Raw blob bytes\n * @returns Byte offset of the marker, or -1 if not found\n */\nfunction findMarker(blob) {\n    const end = blob.byteLength - ENTRY_MARKER.length;\n    for (let i = 0; i <= end; i++) {\n        let match = true;\n        for (let j = 0; j < ENTRY_MARKER.length; j++) {\n            if (blob[i + j] !== ENTRY_MARKER[j]) {\n                match = false;\n                break;\n            }\n        }\n        if (match) {\n            return i;\n        }\n    }\n    return -1;\n}\n//# sourceMappingURL=decodeBlob.js.map","import { decodeBlob } from \"./decodeBlob.js\";\n/**\n * Data type values from RecordParameterTypes.ParameterDataType.\n * Determines which column in RecordParameterData holds the actual value.\n */\nconst DATA_TYPE_NONE = 0;\nconst DATA_TYPE_INT32_SINGLE = 1;\nconst DATA_TYPE_INT32 = 2;\nconst DATA_TYPE_DOUBLE = 4;\nconst DATA_TYPE_SINGLE = 5;\nconst DATA_TYPE_BOOLEAN = 6;\nconst DATA_TYPE_INT64_SINGLE = 7;\nconst DATA_TYPE_INT64 = 9;\nconst DATA_TYPE_GUID = 16;\nconst DATA_TYPE_TEXT = 17;\nconst DATA_TYPE_DICTIONARY_KEYS = 32;\nconst DATA_TYPE_DICTIONARY = 36;\nconst DATA_TYPE_GUID_LIST = 42;\nconst DATA_TYPE_DATE_TIME = 48;\nconst DATA_TYPE_DURATION = 50;\nconst DATA_TYPE_BLOB_ARRAY = 70;\n/**\n * Read all parameter data for a record and convert the tree into\n * the output ZmesParameter format.\n * @param database - Opened SQLite database handle\n * @param sqlite3 - SQLite3 runtime (needed for SQLITE_BLOB constant)\n * @param recordId - The record id to read data for\n * @param rootNode - The root of the parameter tree\n * @returns The root ZmesParameter with values attached\n */\nexport function readParameterData(database, sqlite3, recordId, rootNode) {\n    // Load all data for this record, indexed by tree node id\n    const dataByNodeId = loadDataMap(database, sqlite3, recordId);\n    // Recursively convert tree nodes to output format\n    return convertNode(rootNode, dataByNodeId);\n}\n/**\n * Load all RecordParameterData rows for a record into a Map\n * keyed by ParameterTreeNodeId. Each tree node may have multiple\n * data rows (e.g. when there are multiple peaks), so the map\n * stores an array of rows per node, ordered by the Index column.\n * @param database - Opened SQLite database handle\n * @param sqlite3 - SQLite3 runtime\n * @param recordId - The record id\n * @returns Map of tree node id to array of raw data rows\n */\nfunction loadDataMap(database, sqlite3, recordId) {\n    const rows = database.selectObjects(`\n    SELECT\n      ParameterTreeNodeId AS parameterTreeNodeId,\n      ParameterTypeId     AS parameterTypeId,\n      \"Index\"             AS dataIndex,\n      Data_Boolean        AS dataBoolean,\n      Data_Double         AS dataDouble,\n      Data_Int32          AS dataInt32,\n      Data_Int64          AS dataInt64,\n      Data_Single         AS dataSingle,\n      Data_Text           AS dataText\n    FROM RecordParameterData\n    WHERE RecordId = ?\n    ORDER BY \"Index\"\n  `, [recordId]);\n    // Also load blobs separately since they need special retrieval\n    const blobRows = database.selectObjects(`\n    SELECT\n      ParameterTreeNodeId AS parameterTreeNodeId,\n      \"Index\"             AS dataIndex,\n      Data_Blob           AS dataBlob\n    FROM RecordParameterData\n    WHERE RecordId = ? AND Data_Blob IS NOT NULL\n    ORDER BY \"Index\"\n  `, [recordId]);\n    const blobMap = new Map();\n    for (const blobRow of blobRows) {\n        const nodeId = blobRow.parameterTreeNodeId;\n        const dataIndex = blobRow.dataIndex;\n        blobMap.set(`${nodeId}:${dataIndex}`, blobRow.dataBlob);\n    }\n    const dataMap = new Map();\n    for (const row of rows) {\n        const raw = row;\n        const entry = {\n            parameterTreeNodeId: raw.parameterTreeNodeId,\n            parameterTypeId: raw.parameterTypeId,\n            dataBoolean: raw.dataBoolean,\n            dataDouble: raw.dataDouble,\n            dataInt32: raw.dataInt32,\n            dataInt64: raw.dataInt64,\n            dataSingle: raw.dataSingle,\n            dataText: raw.dataText,\n            dataBlob: blobMap.get(`${raw.parameterTreeNodeId}:${raw.dataIndex}`) ?? null,\n        };\n        const existing = dataMap.get(raw.parameterTreeNodeId);\n        if (existing) {\n            existing.push(entry);\n        }\n        else {\n            dataMap.set(raw.parameterTreeNodeId, [entry]);\n        }\n    }\n    return dataMap;\n}\n/**\n * Recursively convert a TreeNode into a ZmesParameter,\n * extracting the appropriate value from the data map.\n *\n * When a tree node has multiple data rows (e.g. multiple peaks),\n * each row represents a separate instance. The node is duplicated\n * once per instance, and each child picks the corresponding row\n * at the same instance index.\n * @param node - The tree node to convert\n * @param dataMap - Map of tree node id to array of raw data rows\n * @param instanceIndex - Which instance to use when this node has multiple rows (default: 0)\n * @returns The converted ZmesParameter\n */\nfunction convertNode(node, dataMap, instanceIndex = 0) {\n    const parameter = {\n        name: node.parameterType.friendlyName ?? '',\n        urn: node.parameterType.urn ?? '',\n    };\n    const dataRows = dataMap.get(node.id);\n    const dataRow = dataRows?.[instanceIndex];\n    // Extract value from the data row based on the parameter's data type\n    if (dataRow) {\n        const value = extractValue(node.parameterType.dataType, dataRow);\n        if (value !== undefined) {\n            parameter.value = value;\n        }\n    }\n    // Recursively convert children\n    if (node.children.length > 0) {\n        const currentInstanceCount = dataRows?.length ?? 1;\n        parameter.children = [];\n        for (const child of node.children) {\n            const childRows = dataMap.get(child.id);\n            const childInstanceCount = childRows?.length ?? 1;\n            if (childInstanceCount > 1 && currentInstanceCount <= 1) {\n                // This child has multiple instances (e.g. multiple peaks)\n                // but the current node does not — expand the child into\n                // one copy per instance, each with its own subtree.\n                for (let i = 0; i < childInstanceCount; i++) {\n                    parameter.children.push(convertNode(child, dataMap, i));\n                }\n            }\n            else {\n                // Either single instance, or we're already inside a\n                // multi-instance subtree — propagate the instance index.\n                parameter.children.push(convertNode(child, dataMap, instanceIndex));\n            }\n        }\n    }\n    return parameter;\n}\n/**\n * Extract the typed value from a raw data row based on the parameter data type.\n *\n * Note: SQLite stores both Data_Single and Data_Double as its native REAL type,\n * so the WASM layer may return the value in either column. We use a fallback\n * approach for numeric types to handle this.\n * @param dataType - The ParameterDataType enum value\n * @param row - The raw data row\n * @returns The extracted value, or undefined if no value is present\n */\nfunction extractValue(dataType, row) {\n    switch (dataType) {\n        case DATA_TYPE_NONE:\n        case DATA_TYPE_DICTIONARY:\n            return undefined;\n        case DATA_TYPE_INT32_SINGLE:\n        case DATA_TYPE_INT32:\n            return row.dataInt32 ?? undefined;\n        case DATA_TYPE_DOUBLE:\n        case DATA_TYPE_SINGLE:\n        case DATA_TYPE_DURATION:\n            return row.dataDouble ?? row.dataSingle ?? undefined;\n        case DATA_TYPE_BOOLEAN:\n            return row.dataBoolean !== null ? row.dataBoolean !== 0 : undefined;\n        case DATA_TYPE_INT64_SINGLE:\n            return row.dataInt64 ?? row.dataInt32 ?? undefined;\n        case DATA_TYPE_INT64:\n            return row.dataInt64 ?? undefined;\n        case DATA_TYPE_GUID:\n        case DATA_TYPE_TEXT:\n        case DATA_TYPE_DICTIONARY_KEYS:\n        case DATA_TYPE_GUID_LIST:\n        case DATA_TYPE_DATE_TIME:\n            return row.dataText ?? undefined;\n        case DATA_TYPE_BLOB_ARRAY:\n            if (row.dataBlob) {\n                return decodeBlob(row.dataBlob);\n            }\n            return undefined;\n        default:\n            return undefined;\n    }\n}\n//# sourceMappingURL=readParameterData.js.map","/**\n * Load all parameter types from RecordParameterTypes into a Map.\n * @param database - Opened SQLite database handle\n * @returns Map of type id to ParameterType\n */\nfunction loadParameterTypes(database) {\n    const rows = database.selectObjects(`\n    SELECT\n      Id                AS id,\n      Guid              AS guid,\n      UniformResourceName AS urn,\n      FriendlyName      AS friendlyName,\n      ParameterDataType AS dataType,\n      Description       AS description,\n      DataUnitsUrn      AS dataUnitsUrn\n    FROM RecordParameterTypes\n  `);\n    const types = new Map();\n    for (const row of rows) {\n        const parameterType = row;\n        types.set(parameterType.id, parameterType);\n    }\n    return types;\n}\n/**\n * Build the hierarchical parameter tree for a given root parameter type.\n *\n * Queries all tree nodes that share the given root type, resolves their\n * parameter types, and assembles them into a tree structure.\n * @param database - Opened SQLite database handle\n * @param rootParameterTypeId - The root parameter type id for the record\n * @returns The root TreeNode with all children populated\n */\nexport function buildParameterTree(database, rootParameterTypeId) {\n    const parameterTypes = loadParameterTypes(database);\n    const rows = database.selectObjects(`\n    SELECT\n      Id              AS id,\n      ParameterTypeId AS parameterTypeId,\n      ParentNodeId    AS parentNodeId,\n      SiblingIndex    AS siblingIndex\n    FROM RecordParameterTreeNodes\n    WHERE RootParameterTypeId = ?\n    ORDER BY SiblingIndex\n  `, [rootParameterTypeId]);\n    // Index all nodes by id\n    const nodeMap = new Map();\n    for (const row of rows) {\n        const rawNode = row;\n        const parameterType = parameterTypes.get(rawNode.parameterTypeId);\n        if (!parameterType) {\n            throw new Error(`Unknown parameter type id ${rawNode.parameterTypeId} for tree node ${rawNode.id}`);\n        }\n        nodeMap.set(rawNode.id, {\n            ...rawNode,\n            parameterType,\n            children: [],\n        });\n    }\n    // Assemble tree by linking children to parents\n    let root;\n    for (const node of nodeMap.values()) {\n        if (node.parentNodeId === null) {\n            root = node;\n        }\n        else {\n            const parent = nodeMap.get(node.parentNodeId);\n            if (parent) {\n                parent.children.push(node);\n            }\n        }\n    }\n    if (!root) {\n        throw new Error(`No root tree node found for RootParameterTypeId ${rootParameterTypeId}`);\n    }\n    // Sort children by sibling index at each level\n    sortChildren(root);\n    return root;\n}\n/**\n * Recursively sort children of each tree node by sibling index.\n * @param node - The tree node whose children to sort\n */\nfunction sortChildren(node) {\n    node.children = node.children.toSorted((a, b) => a.siblingIndex - b.siblingIndex);\n    for (const child of node.children) {\n        sortChildren(child);\n    }\n}\n//# sourceMappingURL=readParameterTree.js.map","/**\n * Query all measurement records with their group information.\n * @param database - Opened SQLite database handle\n * @returns Array of raw record rows\n */\nexport function readRecords(database) {\n    const rows = database.selectObjects(`\n    SELECT\n      r.Id           AS id,\n      r.Guid         AS guid,\n      r.CreatedDateTime   AS createdDateTime,\n      r.ModifiedDateTime  AS modifiedDateTime,\n      r.RootParameterTypeId AS rootParameterTypeId,\n      g.Id           AS groupId,\n      g.Guid         AS groupGuid,\n      g.GivenName    AS groupName\n    FROM StandardRecords r\n    JOIN StandardRecordGroups g ON r.GroupId = g.Id\n    ORDER BY r.Id\n  `);\n    return rows;\n}\n//# sourceMappingURL=readRecords.js.map","import { openDatabase } from \"./openDatabase.js\";\nimport { readParameterData } from \"./readParameterData.js\";\nimport { buildParameterTree } from \"./readParameterTree.js\";\nimport { readRecords } from \"./readRecords.js\";\n/**\n * Parse a .zmes file (Malvern Panalytical Zetasizer measurement database)\n * and return a structured representation of all records and their parameters.\n *\n * The .zmes format is a SQLite3 database used by ZS XPLORER software for\n * exporting Dynamic Light Scattering (DLS) measurement data.\n * @param data - Raw bytes of the .zmes file as an ArrayBuffer\n * @returns Parsed file with schema version, metadata, and measurement records\n * @example\n * ```ts\n * import { readFileSync } from 'node:fs';\n * import { parse } from 'zmes-parser';\n *\n * const buffer = readFileSync('measurement.zmes');\n * const result = await parse(buffer.buffer);\n * console.log(result.records[0].parameters.name);\n * ```\n */\nexport async function parse(data) {\n    const { database, sqlite3 } = await openDatabase(data);\n    try {\n        const schemaVersion = readSchemaVersion(database);\n        const metadata = readStoreMetadata(database);\n        const records = buildRecords(database, sqlite3);\n        return { schemaVersion, metadata, records };\n    }\n    finally {\n        database.close();\n    }\n}\n/**\n * Read the schema version from the SchemaMeta table.\n * @param database - Opened SQLite database handle\n * @returns The current schema version number\n */\nfunction readSchemaVersion(database) {\n    const version = database.selectValue('SELECT CurrentVersion FROM SchemaMeta LIMIT 1');\n    return version ?? 0;\n}\n/**\n * Read all key-value pairs from the StoreMetadata table.\n * @param database - Opened SQLite database handle\n * @returns Record of metadata key-value pairs\n */\nfunction readStoreMetadata(database) {\n    const rows = database.selectObjects('SELECT Key, Value FROM StoreMetadata');\n    const metadata = {};\n    for (const row of rows) {\n        const key = row.Key;\n        const value = row.Value;\n        metadata[key] = value;\n    }\n    return metadata;\n}\n/**\n * Build all ZmesRecord objects from the database.\n * @param database - Opened SQLite database handle\n * @param sqlite3 - SQLite3 runtime\n * @returns Array of fully populated measurement records\n */\nfunction buildRecords(database, sqlite3) {\n    const rawRecords = readRecords(database);\n    const records = [];\n    for (const raw of rawRecords) {\n        const tree = buildParameterTree(database, raw.rootParameterTypeId);\n        const parameters = readParameterData(database, sqlite3, raw.id, tree);\n        records.push({\n            id: raw.id,\n            guid: raw.guid,\n            group: {\n                id: raw.groupId,\n                guid: raw.groupGuid,\n                ...(raw.groupName !== null ? { name: raw.groupName } : {}),\n            },\n            createdDateTime: raw.createdDateTime,\n            modifiedDateTime: raw.modifiedDateTime,\n            parameters,\n        });\n    }\n    return records;\n}\n//# sourceMappingURL=parse.js.map","import { Analysis } from 'common-spectrum';\nimport { findParameter, findParameterDeep, parse } from 'zmes-parser';\nconst VARIABLE_DESCRIPTORS = [\n    {\n        parameterName: 'Sizes',\n        symbol: 'x',\n        label: 'Particle diameter',\n        units: 'nm',\n        isDependent: false,\n    },\n    {\n        parameterName: 'Particle Size Intensity Distribution',\n        symbol: 'y',\n        label: 'Intensity',\n        units: '%',\n        isDependent: true,\n    },\n    {\n        parameterName: 'Particle Size Volume Distribution (%)',\n        symbol: 'v',\n        label: 'Volume',\n        units: '%',\n        isDependent: true,\n    },\n    {\n        parameterName: 'Particle Size Number Distribution',\n        symbol: 'n',\n        label: 'Number',\n        units: '%',\n        isDependent: true,\n    },\n    {\n        parameterName: 'Molecular Weights',\n        symbol: 'w',\n        label: 'Molecular weight',\n        units: 'Da',\n        isDependent: true,\n    },\n    {\n        parameterName: 'Diffusion Coefficients',\n        symbol: 'd',\n        label: 'Diffusion coefficient',\n        units: 'µm²/s',\n        isDependent: true,\n    },\n    {\n        parameterName: 'Relaxation Times',\n        symbol: 'r',\n        label: 'Relaxation time',\n        units: 'µs',\n        isDependent: true,\n    },\n    {\n        parameterName: 'Form Factor',\n        symbol: 'f',\n        label: 'Form factor',\n        units: '',\n        isDependent: true,\n    },\n];\nconst PEAK_CONTAINERS = [\n    {\n        parameterName: 'Particle Size Intensity Distribution Peaks ordered by area',\n        key: 'intensity',\n    },\n    {\n        parameterName: 'Particle Size Volume Distribution Peaks ordered by area',\n        key: 'volume',\n    },\n    {\n        parameterName: 'Particle Size Number Distribution Peaks ordered by area',\n        key: 'number',\n    },\n];\n/**\n * Parse a raw .zmes file and create an Analysis.\n *\n * Each record in the file is pushed as a spectrum with multiple variables:\n * - x: Sizes (particle diameter in nm)\n * - y: Particle Size Intensity Distribution (%)\n * - v: Particle Size Volume Distribution (%)\n * - n: Particle Size Number Distribution (%)\n * - w: Molecular Weights (Da)\n * - d: Diffusion Coefficients (µm²/s)\n * - r: Relaxation Times (µs)\n * - f: Form Factor\n *\n * Only variables present in the data are included. A record is skipped\n * if the required x (Sizes) or y (Intensity) variable is missing.\n * @param data - The raw ArrayBuffer contents of a .zmes file\n * @param options - Options for the analysis\n * @returns An Analysis containing one spectrum per record\n */\nexport async function fromZmes(data, options = {}) {\n    const analysis = new Analysis(options);\n    const zmesFile = await parse(data);\n    for (const record of zmesFile.records) {\n        const { parameters } = record;\n        const variables = buildVariables(parameters);\n        if (!variables) {\n            continue;\n        }\n        const meta = extractMeta(parameters);\n        const cheminfo = extractCheminfo(parameters);\n        if (cheminfo) {\n            meta.cheminfo = cheminfo;\n        }\n        analysis.pushSpectrum(variables, {\n            id: record.guid,\n            title: extractTitle(parameters),\n            dataType: 'DLS measurement',\n            meta,\n        });\n        const spectrum = analysis.spectra.at(-1);\n        if (spectrum) {\n            spectrum.settings = extractSettings(parameters);\n        }\n    }\n    return analysis;\n}\n/**\n * Build the MeasurementXYVariables object from the parameter tree.\n *\n * Returns undefined if the required x (Sizes) or y (Intensity) variable is missing.\n * @param parameters - Root parameter node\n * @returns Variables object with x, y, and optional additional variables\n */\nfunction buildVariables(parameters) {\n    const found = new Map();\n    for (const descriptor of VARIABLE_DESCRIPTORS) {\n        const parameter = findParameterDeep(parameters, descriptor.parameterName);\n        if (!(parameter?.value instanceof Float64Array)) {\n            continue;\n        }\n        found.set(descriptor.symbol, {\n            symbol: descriptor.symbol,\n            label: descriptor.label,\n            units: descriptor.units,\n            data: parameter.value,\n            isDependent: descriptor.isDependent,\n        });\n    }\n    const x = found.get('x');\n    const y = found.get('y');\n    if (!x || !y) {\n        return undefined;\n    }\n    const variables = { x, y };\n    for (const [key, variable] of found) {\n        if (key !== 'x' && key !== 'y') {\n            const letter = key;\n            variables[letter] = variable;\n        }\n    }\n    return variables;\n}\n/**\n * Extract the sample name from the parameter tree to use as title.\n * @param parameters - Root parameter node\n * @returns The sample name, or an empty string if not found\n */\nfunction extractTitle(parameters) {\n    const sampleSettings = findParameter(parameters.children ?? [], 'Sample Settings');\n    if (!sampleSettings)\n        return '';\n    const sampleName = findParameterDeep(sampleSettings, 'Sample Name');\n    return typeof sampleName?.value === 'string' ? sampleName.value : '';\n}\n/**\n * Extract scalar metadata values from the parameter tree.\n * @param parameters - Root parameter node\n * @returns Record of metadata key-value pairs\n */\nfunction extractMeta(parameters) {\n    const children = parameters.children ?? [];\n    const meta = {};\n    const topLevelFields = [\n        { parameterName: 'Operator Name', metaKey: 'operatorName' },\n        {\n            parameterName: 'Measurement Start Date And Time',\n            metaKey: 'measurementStartDateTime',\n        },\n        {\n            parameterName: 'Measurement Completed Date And Time',\n            metaKey: 'measurementCompletedDateTime',\n        },\n        { parameterName: 'Repeat', metaKey: 'repeat' },\n        { parameterName: 'Number Of Repeats', metaKey: 'numberOfRepeats' },\n        {\n            parameterName: 'Pause Between Repeats (s)',\n            metaKey: 'pauseBetweenRepeats',\n        },\n        { parameterName: 'Quality Indicator', metaKey: 'qualityIndicator' },\n        { parameterName: 'Result State', metaKey: 'resultState' },\n        { parameterName: 'Measurement Type', metaKey: 'measurementType' },\n    ];\n    for (const field of topLevelFields) {\n        const parameter = findParameter(children, field.parameterName);\n        if (parameter?.value !== undefined) {\n            meta[field.metaKey] = parameter.value;\n        }\n    }\n    // Cumulants results (Z-Average, PDI)\n    const deepFields = [\n        { parameterName: 'Z-Average (nm)', metaKey: 'zAverage' },\n        {\n            parameterName: 'Polydispersity Index (PI)',\n            metaKey: 'polydispersityIndex',\n        },\n        {\n            parameterName: 'Derived Mean Count Rate (kcps)',\n            metaKey: 'derivedMeanCountRate',\n        },\n    ];\n    for (const field of deepFields) {\n        const parameter = findParameterDeep(parameters, field.parameterName);\n        if (parameter?.value !== undefined) {\n            meta[field.metaKey] = parameter.value;\n        }\n    }\n    // Material info (search within Material Settings to avoid Core Characteristics)\n    const materialSettings = findParameterDeep(parameters, 'Material Settings');\n    if (materialSettings) {\n        const materialRI = findParameterDeep(materialSettings, 'Material RI');\n        const materialAbsorption = findParameterDeep(materialSettings, 'Material Absorption');\n        if (materialRI?.value !== undefined) {\n            meta.materialRI = materialRI.value;\n        }\n        if (materialAbsorption?.value !== undefined) {\n            meta.materialAbsorption = materialAbsorption.value;\n        }\n    }\n    // Dispersant info (from Actual Instrument Settings)\n    const dispersantViscosity = findParameterDeep(parameters, 'Dispersant Viscosity (cP)');\n    const dispersantRI = findParameterDeep(parameters, 'Dispersant RI');\n    if (dispersantViscosity?.value !== undefined) {\n        meta.dispersantViscosity = dispersantViscosity.value;\n    }\n    if (dispersantRI?.value !== undefined) {\n        meta.dispersantRI = dispersantRI.value;\n    }\n    return meta;\n}\n/**\n * Extract instrument settings from the parameter tree.\n * @param parameters - Root parameter node\n * @returns Settings object with instrument info and measurement parameters\n */\nfunction extractSettings(parameters) {\n    const children = parameters.children ?? [];\n    const softwareVersion = findParameter(children, 'Software Version');\n    const instrumentSerialNumber = findParameterDeep(parameters, 'Instrument Serial Number');\n    const settings = {\n        instrument: {\n            manufacturer: 'Malvern Panalytical',\n            model: 'Zetasizer',\n            ...(typeof instrumentSerialNumber?.value === 'string'\n                ? { serialNumber: instrumentSerialNumber.value }\n                : {}),\n            software: {\n                name: 'ZS XPLORER',\n                ...(typeof softwareVersion?.value === 'string'\n                    ? { version: softwareVersion.value }\n                    : {}),\n            },\n        },\n    };\n    // Actual instrument settings\n    const instrumentSettingsFields = [\n        { parameterName: 'Detector Angle (°)', settingsKey: 'detectorAngle' },\n        { parameterName: 'Run Duration (s)', settingsKey: 'runDuration' },\n        { parameterName: 'Number Of Runs', settingsKey: 'numberOfRuns' },\n        { parameterName: 'Temperature (°C)', settingsKey: 'temperature' },\n        { parameterName: 'Attenuator', settingsKey: 'attenuator' },\n        { parameterName: 'Attenuation Factor', settingsKey: 'attenuationFactor' },\n        {\n            parameterName: 'Cuvette Position (mm)',\n            settingsKey: 'cuvettePosition',\n        },\n        {\n            parameterName: 'Laser Wavelength (nm)',\n            settingsKey: 'laserWavelength',\n        },\n    ];\n    for (const field of instrumentSettingsFields) {\n        const parameter = findParameterDeep(parameters, field.parameterName);\n        if (typeof parameter?.value === 'number') {\n            settings[field.settingsKey] = parameter.value;\n        }\n    }\n    return settings;\n}\n/**\n * Build the standardized cheminfo metadata for a DLS measurement.\n *\n * Extracts cumulants results (Z-Average, PDI, derived count rate) and\n * peak summaries from the parameter tree into the `DLSCheminfo` structure.\n * @param parameters - Root parameter node\n * @returns DLSCheminfo object, or undefined if no relevant data is found\n */\nfunction extractCheminfo(parameters) {\n    const dlsMeta = {};\n    const zAverage = findParameterDeep(parameters, 'Z-Average (nm)');\n    if (typeof zAverage?.value === 'number') {\n        dlsMeta.zAverage = { value: zAverage.value, units: 'nm' };\n    }\n    const pdi = findParameterDeep(parameters, 'Polydispersity Index (PI)');\n    if (typeof pdi?.value === 'number') {\n        dlsMeta.polydispersityIndex = pdi.value;\n    }\n    const countRate = findParameterDeep(parameters, 'Derived Mean Count Rate (kcps)');\n    if (typeof countRate?.value === 'number') {\n        dlsMeta.derivedMeanCountRate = { value: countRate.value, units: 'kcps' };\n    }\n    const intercept = findParameterDeep(parameters, 'Intercept');\n    if (typeof intercept?.value === 'number') {\n        dlsMeta.intercept = intercept.value;\n    }\n    const distributions = extractDistributions(parameters);\n    if (distributions.length > 0) {\n        dlsMeta.distributions = distributions;\n        const average = computeAverage(distributions);\n        if (average) {\n            dlsMeta.average = average;\n        }\n    }\n    if (Object.keys(dlsMeta).length === 0) {\n        return undefined;\n    }\n    return { meta: dlsMeta };\n}\n/**\n * Extract peak summary data from the parameter tree.\n *\n * The Zmes format stores peaks per distribution type in separate containers\n * (e.g., \"Particle Size Intensity Distribution Peaks ordered by area\").\n * Each container holds \"Size Peak\" children with Mean, Area, and\n * Standard Deviation. Peaks are merged by index across distribution types\n * into a single DLSDistribution per detected population.\n * @param parameters - Root parameter node\n * @returns Array of distributions, one per detected particle population\n */\nfunction extractDistributions(parameters) {\n    const distributions = [];\n    for (const container of PEAK_CONTAINERS) {\n        const containerParameter = findParameterDeep(parameters, container.parameterName);\n        if (!containerParameter?.children)\n            continue;\n        let peakIndex = 0;\n        for (const peakNode of containerParameter.children) {\n            if (peakNode.name !== 'Size Peak' || !peakNode.children)\n                continue;\n            const stats = extractPeakStats(peakNode.children);\n            let distribution = distributions[peakIndex];\n            if (!distribution) {\n                distribution = {};\n                distributions[peakIndex] = distribution;\n            }\n            distribution[container.key] = stats;\n            peakIndex++;\n        }\n    }\n    return distributions;\n}\n/**\n * Compute overall weighted-average distribution stats from per-peak data.\n *\n * For each distribution type (intensity, volume, number), the overall mean\n * is computed as the area-weighted average of peak means.\n * @param distributions - Per-peak distribution data\n * @returns Overall size distribution averages, or undefined if none computed\n */\nfunction computeAverage(distributions) {\n    const keys = [\n        'intensity',\n        'volume',\n        'number',\n    ];\n    const average = {};\n    for (const key of keys) {\n        let weightedSum = 0;\n        let totalArea = 0;\n        for (const distribution of distributions) {\n            const stats = distribution[key];\n            if (stats?.mean?.value === undefined ||\n                stats?.area?.value === undefined) {\n                continue;\n            }\n            weightedSum += stats.mean.value * stats.area.value;\n            totalArea += stats.area.value;\n        }\n        if (totalArea > 0) {\n            average[key] = {\n                mean: { value: weightedSum / totalArea, units: 'nm' },\n            };\n        }\n    }\n    if (Object.keys(average).length === 0) {\n        return undefined;\n    }\n    return average;\n}\n/**\n * Extract distribution stats from a single peak node's children.\n * @param children - Children of a \"Size Peak\" parameter node\n * @returns DLSDistributionStats with mean, area, and standardDeviation\n */\nfunction extractPeakStats(children) {\n    const stats = {};\n    for (const property of children) {\n        if (typeof property.value !== 'number')\n            continue;\n        if (property.name === 'Mean') {\n            stats.mean = { value: property.value, units: 'nm' };\n        }\n        else if (property.name === 'Area') {\n            stats.area = { value: property.value, units: '%' };\n        }\n        else if (property.name === 'Standard Deviation') {\n            stats.standardDeviation = { value: property.value, units: 'nm' };\n        }\n    }\n    return stats;\n}\n//# sourceMappingURL=fromZmes.js.map"],"names":["toString","Object","prototype","isAnyArray","value","tag","call","endsWith","includes","getOutputArray","output","length","undefined","TypeError","Float64Array","xMedian","input","options","exact","array","slice","middleIndex","calcMiddle","median","quickSelect","medianNext","low","high","middle","currentLow","currentHigh","swap","i","j","temp","Math","floor","xCheck","minLength","Error","xFindClosestIndex","target","sorted","abs","index","diff","Number","POSITIVE_INFINITY","currentDiff","xGetFromToIndex","x","fromIndex","toIndex","from","to","xAbsoluteSum","sum","xAdd","array1","array2","isConstant","constant","array3","xApplyFunctionStr","variableLabel","fctString","fct","Function","replaceAll","toReturn","isNaN","xMultiply","max","arguments","_options$fromIndex","_options$toIndex","isInteger","maxValue","min","minValue","rescale","Array","currentMin","currentMax","RangeError","_options$min","autoMinMax","_options$max","factor","defineProperty","matrix","require$$0","require$$1","indent","repeat","indentData","inspectMatrix","inspectMatrixWithOptions","maxRows","maxColumns","maxNumSize","padMinus","constructor","name","inspectData","rows","columns","maxI","maxJ","result","loop","get","line","push","formatNumber","join","num","formatNumber2","padEnd","len","str","fix","toFixed","startsWith","exp","toExponential","installMathOperations","AbstractMatrix","Matrix","add","addS","addM","set","checkMatrix","newMatrix","sub","subS","subM","subtract","subtractS","subtractM","mul","mulS","mulM","multiply","multiplyS","multiplyM","div","divS","divM","divide","divideS","divideM","mod","modS","modM","modulus","modulusS","modulusM","and","andS","andM","or","orS","orM","xor","xorS","xorM","leftShift","leftShiftS","leftShiftM","signPropagatingRightShift","signPropagatingRightShiftS","signPropagatingRightShiftM","rightShift","rightShiftS","rightShiftM","zeroFillRightShift","zeroFillRightShiftS","zeroFillRightShiftM","not","acos","acosh","asin","asinh","atan","atanh","cbrt","ceil","clz32","cos","cosh","expm1","fround","log","log1p","log10","log2","round","sign","sin","sinh","sqrt","tan","tanh","trunc","pow","arg0","powS","powM","checkRowIndex","outer","checkColumnIndex","checkRowVector","vector","to1DArray","checkColumnVector","checkRowIndices","rowIndices","checkColumnIndices","columnIndices","checkRange","startRow","endRow","startColumn","endColumn","checkNumber","newArray","checkNonEmpty","isEmpty","sumByRow","sumByColumn","sumAll","v","productByRow","productByColumn","productAll","varianceByRow","unbiased","mean","cols","variance","sum1","sum2","varianceByColumn","varianceAll","size","centerByRow","centerByColumn","centerAll","getScaleByRow","scale","scaleByRow","getScaleByColumn","scaleByColumn","getScaleAll","divider","scaleAll","from1DArray","newRows","newColumns","newData","row","column","rowVector","columnVector","zeros","ones","fill","rand","random","randInt","interval","eye","diag","data","l","matrix1","matrix2","isMatrix","klass","apply","callback","to2DArray","copy","toJSON","isRowVector","isColumnVector","isVector","isSquare","isSymmetric","isDistance","isEchelonForm","previousColumn","checked","isReducedEchelonForm","k","echelonForm","clone","h","iMax","swapRows","tmp","reducedEchelonForm","m","n","maxRow","p","pivot","setSubMatrix","neg","getRow","getRowVector","setRow","row1","row2","getColumn","getColumnVector","setColumn","swapColumns","column1","column2","addRowVector","subRowVector","mulRowVector","divRowVector","addColumnVector","subColumnVector","mulColumnVector","divColumnVector","mulRow","mulColumn","by","NaN","NEGATIVE_INFINITY","maxIndex","idx","minIndex","maxRowIndex","minRow","minRowIndex","maxColumn","maxColumnIndex","minColumn","minColumnIndex","norm","type","dot","cumulativeSum","vector2","vector1","mmul","other","Bcolj","s","mpow","scalar","bb","e","strassen2x2","a11","b11","a12","b12","a21","b21","a22","b22","m1","m2","m3","m4","m5","m6","m7","c00","c01","c10","c11","strassen3x3","a00","a01","a02","a10","a20","b00","b01","b02","b10","b20","m8","m9","m10","m11","m12","m13","m14","m15","m16","m17","m18","m19","m20","m21","m22","m23","c02","c12","c20","c21","c22","mmulStrassen","y","r1","c1","r2","c2","console","warn","embed","mat","r","c","resultat","blockMult","a","b","halfRows","parseInt","halfCols","subMatrix","scaleRows","isFinite","scaleColumns","flipRows","first","last","flipColumns","kroneckerProduct","q","kroneckerSum","AxI","IxB","transpose","sortRows","compareFunction","compareNumbers","sort","sortColumns","subMatrixRow","indices","subMatrixColumn","selection","rowIndex","columnIndex","trace","entries","product","standardDeviation","center","Symbol","iterator","col","values","for","isArrayOfNumbers","every","element","randomInt","diagonal","identity","negate","tensorProduct","#initData","nRows","nColumns","arrayData","removeRow","splice","addRow","removeColumn","newRow","addColumn","SymmetricMatrix","diagonalSize","isSymmetricMatrix","klassType","upperRightEntries","toMatrix","removeCross","addCross","applyMask","mask","sidesToRemove","passthroughs","reverse","sideIndex","toCompact","compact","fromCompact","compactSize","JSON","stringify","upperRightValues","DistanceMatrix","isDistanceMatrix","klassSubType","sideSize","toSymmetricMatrix","compactLength","BaseView","MatrixColumnView","MatrixColumnSelectionView","MatrixFlipColumnView","MatrixFlipRowView","MatrixRowView","MatrixRowSelectionView","MatrixSelectionView","MatrixSubView","MatrixTransposeView","WrapperMatrix1D","_calculateIndex","WrapperMatrix2D","wrap","LuDecomposition","lu","pivotVector","pivotSign","t","LUcolj","kmax","LU","isSingular","solve","count","X","determinant","lowerTriangularMatrix","upperTriangularMatrix","pivotPermutationVector","hypotenuse","QrDecomposition","qr","rdiag","nrm","QR","Rdiag","isFullRank","orthogonalMatrix","SingularValueDecomposition","computeLeftSingularVectors","computeRightSingularVectors","autoTranspose","wantu","Boolean","wantv","swapped","aux","nu","ni","U","V","work","si","nct","nrt","mrc","pp","eps","EPSILON","kase","alpha","MIN_VALUE","ks","f","cs","sn","sp","spm1","epm1","sk","ek","shift","g","Y","threshold","scols","Ls","rightSingularVectors","VL","vrows","urows","VLU","solveForDiagonal","inverse","vcols","ucols","condition","norm2","rank","tol","ii","leftSingularVectors","diagonalMatrix","useSVD","leftHandSide","rightHandSide","d","subMatrix0","subMatrix1","subMatrix2","xrange","exception","range","dependenciesOneRow","error","thresholdValue","thresholdError","returnArray","linearDependencies","results","Abis","svd","pseudoInverse","svdSolution","covariance","xMatrix","yMatrix","yIsSame","cov","correlation","sdx","sdy","corr","EigenvalueDecomposition","assumeSymmetric","tred2","tql2","H","ort","orthes","hqr2","realEigenvalues","imaginaryEigenvalues","eigenvectorMatrix","hh","dl1","c3","el1","s2","tst1","nn","exshift","z","iter","w","ra","sa","vr","vi","notlast","cdivres","cdiv","xr","xi","yr","yi","CholeskyDecomposition","dimension","positiveDefinite","L","isPositiveDefinite","B","nipals","scaleScores","maxIterations","terminationCriteria","u","tOld","counter","xResidual","residual","yResidual","betas","CHO","EVD","Matrix_1","MatrixTransposeView_1","NIPALS","Nipals","SVD","_default","default","solve_1","xMean","sumValue","xVariance","sqrError","xStandardDeviation","xDivide","xEnsureFloat64","FFT","_csize","table","angle","PI","power","_width","_bitrev","revShift","_out","_data","_inv","fromComplexArray","complex","storage","res","createComplexArray","toComplexArray","completeSpectrum","spectrum","half","transform","out","_transform4","realTransform","_realTransform4","inverseTransform","width","step","outOff","bitrev","off","_singleTransform2","_singleTransform4","inv","quarterLen","limit","A","C","D","Ar","Ai","Br","Bi","Cr","Ci","Dr","Di","MAr","MAi","tableBr","tableBi","MBr","MBi","tableCr","tableCi","MCr","MCi","tableDr","tableDi","MDr","MDi","T0r","T0i","T1r","T1i","T2r","T2i","T3r","T3i","FAr","FAi","FCr","FCi","FBr","FBi","FDr","FDi","evenR","evenI","oddR","oddI","leftR","leftI","rightR","rightI","step2","step3","_singleRealTransform2","_singleRealTransform4","halfLen","hquarterLen","ST0r","ST0i","ST1r","ST1i","ST2r","ST2i","ST3r","ST3i","SFAr","SFAi","SFBr","SFBi","SA","SB","createFromToArray","includeFrom","includeTo","distribution","delta","base","firstExponent","object","replacer","space","internalReplacer","key","ArrayBuffer","isView","xMaxValue","xMinValue","xIsEquallySpaced","tolerance","maxDx","minDx","MAX_SAFE_INTEGER","absoluteDifference","xIsMonotonic","at","xMedianAbsoluteDeviation","averageDeviations","mad","xMinMaxValues","Y1","P1","Q1","Y2","P2","Q2","Y3","P3","Q3","Y4","P4","Q4","Y5","P5","Q5","polyval","coef","calc","P","Q","erfcinv","val","simpleNormInv","magnitudeMode","SQRT2","simpleNormInvNumber","xNoiseSanPlot","cutOff","refine","scaleFactor","factorStd","fixOffset","prepareData","medianIndex","firstNegativeValueIndex","findIndex","lastPositiveValueIndex","signPositive","signNegative","cutOffDist","determineCutOff","pIndex","initialNoiseLevelPositive","skyPoint","initialNoiseLevelNegative","nIndex","noiseLevelPositive","noiseLevelNegative","cloneSignPositive","cloneSignNegative","cutOffSignalsIndexPlus","cutOffSignalsIndexNeg","cutOffSignals","correctionFactor","effectiveCutOffDist","refinedCorrectionFactor","positive","negative","snr","sanplot","generateSanPlot","fromTo","considerList","indexMax","minKi","whereToCutStat","top","elementsOfCutOff","filter","averageValue","kiSqrt","logBaseY","logOfBase","xAxis","_e","xNoiseStandardDeviation","sd","xSum","xNormed","algorithm","absoluteSumValue","absoluteSum","currentMaxValue","sumFactor","String","xPadding","fromEnd","toEnd","xParetoNormalization","sqrtSD","xRescale","xRolling","window","padding","padded","subarray","xRollingAverage","xRollingMedian","matrixCheck","firstLength","matrixMinMaxZ","nbRows","nbColumns","xyCheck","xyEnsureGrowingX","prevX","currentIndex","zonesNormalize","zones","exclusions","map","zone","currentZone","beforeExclusionsZones","normalizedExclusions","currentExclusionIndex","zoneIndex","zonesWithPoints","numberOfPoints","normalizedZones","zonesWithNumberOfPoints","totalSize","reduce","previous","current","unitsPerPoint","currentTotal","tempZone","tempZoneNumberOfPoints","equallySpacedSlot","xLength","halfStep","lastStep","start","previousX","MAX_VALUE","previousY","nextX","nextY","frontOutsideSpectra","backOutsideSpectra","currentValue","currentPoints","main","integral","x0","x1","slope","intercept","equallySpacedSmooth","initialOriginalStep","lastOriginalStep","MIN_SAFE_INTEGER","sumAtMin","sumAtMax","getSlope","y0","y1","xyEquallySpaced","variant","zonesWithPointsRes","xResult","yResult","zoneResult","processZone","concat","xyFilterX","currentZoneIndex","newX","newY","position","xyFilterXPositive","xyGrowingX","toReversed","xyJoinX","deltaIsFunction","difference","currentDelta","getSlots","possibleXs","flatMap","currentSlot","average","number","slots","xyArrayAlign","requiredY","slot","ys","positions","Uint32Array","filterRequiredY","newYs","addStyle","serie","color","opacity","lineWidth","match","toUpperCase","replace","style","dash","label","id","COLORS","getJSGraph","analyses","colors","opacities","linesWidth","selector","normalization","yAxis","series","xLabel","yLabel","xUnits","units","yUnits","analysis","spectra","getNormalizedSpectra","firstSpectrum","variables","logScale","axes","unit","unitWrapperBefore","unitWrapperAfter","flipped","display","defaultBoundary","getNormalizationAnnotations","boundary","annotations","exclusion","ignore","annotation","strokeWidth","fillColor","centerMean","centerMedian","normed","divideBySD","paretoNormalization","ldlSymbolic","Ap","Lp","Parent","Lnz","Flag","kk","p2","ldlNumeric","Ax","Li","Lx","Pattern","lKi","ldlLsolve","ldlDsolve","ldlLTsolve","ldlPerm","ldlPermt","prepare","M","Pinv","Mt","ar","ac","LNZ","entry","coloffset","adr","bp1","cuthillMckee_1","cuthillMckee","compareNum","list","adj","visited","toVisit","eol","ptr","nbhd","updateSystem","weights","nbPoints","newVector","next","getDeltaMatrix","lambda","lowerTriangularNonZeros","permutationEncodedArray","airPLS","controlPoints","getControlPoints","baseline","iteration","sumNegDifferences","corrected","stopCriterion","getStopCriterion","prevNegSum","cho","cholesky","applyCorrection","absChange","absoluteSumNegatives","absDiff","weight","Int8Array","indexFrom","indexTo","_typeof","obj","sequentialFill","_options","_options$from","_options$to","_options$size","isArray","_i","airPLSBaseline","numberPoints","regressionOptions","airpls","correctedSpectrum","checkArrayLength","BaseRegression","new","predict","_predict","xVal","train","precision","toLaTeX","score","y2","ySum","chi2","rmsd","xSquared","ySquared","xY","maybeToPrecision","figures","toPrecision","PolynomialRegression","degree","powers","coefficients","regress","_toFormula","isLaTeX","sup","closeSup","times","fn","load","json","interceptAtZero","nCoefficients","F","FT","baselineCorrectionRegression","Regression","fitting","oldFitting","regression","iterativePolynomialBaseline","rollingAverageBaseline","defaults","actualOptions","rollingBall","maxima","minima","windowM","windowS","windowLeft","windowRight","rollingBallBaseline","rollingMedianBaseline","baselineFct","sgg","xs","windowSize","derivative","polynomial","np","ans","fullWeights","hs","constantH","wg1","wg2","d1","d2","getHs","wg","gramPoly","Grampoly","genFact","gf","firstDerivative","secondDerivative","thirdDerivative","savitzkyGolay","ensureGrowing","reverseIfNeeded","equallySpaced","filterX","setMaxX","existingMax","setMinX","existingMin","getMinMaxIntervalsDy","dY","dX","lastMax","lastMin","intervalL","intervalR","tryMatchOneIntervalWithMinData","lastK","minData","yThreshold","intervalWidth","intervalCenter","yData","minDistance","possible","newLastIndex","centerIndex","deltaX","currentDistance","lastIndex","autoAlgorithm","ddY","minddY","crossDy","peaks","lastJ","yIndex","crypto","randomUUID","inflectionPoints","getPeakFromIntervals","xGetCrossZeroPoints","isLessAndGreaterThanZero","back","optimizeTop","peak","beta","gamma","xCurrent","xPrevious","gsd","noiseLevel","sgOptions","smoothY","maxCriteria","minMaxRatio","realTopDetection","peakDetectionAlgorithm","isEquallySpaced","noiseInfo","xValue","minY","maxY","peakData","forEach","calibrateX","targetX","nbPeaks","gsdOptions","xFunction","function","yFunction","setMaxY","setMinY","filterXY","filters","logs","Date","now","filterFct","Filters","time","getNormalizedSpectrum","newSpectrum","title","dataType","meta","applyRangeSelectionFirst","structuredClone","unshift","isMonotonic","global","factory","module","exports","this","isString","isFiniteImpl","isNumber","uniq","strings","seen","item","hasOwnProperty","compareArray","assign","properties","keys","mulSafe","decimals","arg","getFractional","divSafe","den","invDen","QtyError","err","create","message","stack","throwIncompatibleUnits","left","right","UNITS","BASE_UNITS","UNITY","UNITY_ARRAY","validateUnitDefinition","unitDef","definition","numerator","denominator","PREFIX_VALUES","PREFIX_MAP","UNIT_VALUES","UNIT_MAP","OUTPUT_MAP","getUnits","kind","unitKeys","indexOf","substr","getKinds","toLowerCase","getAliases","unitName","SIGNATURE_VECTOR","unitSignature","signature","unitSignatureVector","isBase","toBase","SIGN","INTEGER","SIGNED_INTEGER","FRACTION","FLOAT","EXPONENT","SCI_NUMBER","SIGNED_NUMBER","QTY_STRING","QTY_STRING_REGEX","RegExp","POWER_OP","SAFE_POWER","TOP_REGEX","BOTTOM_REGEX","parse","trim","exec","scalarMatch","parseFloat","bottom","nx","UNIT_TEST_REGEX","test","parseUnits","PREFIX_REGEX","UNIT_REGEX","BOUNDARY_REGEX","UNIT_MATCH","UNIT_MATCH_REGEX","parsedUnitsCache","cached","unitMatch","normalizedUnits","globalParse","isQty","Qty","initValue","initUnits","assertValidConstructorArgs","baseScalar","_conversionCache","isDefinitionObject","updateBaseScalar","isTemperature","KINDS","knownSignature","isDegrees","subtractTemperatures","lhs","rhs","lhsUnits","rhsConverted","dstDegrees","getDegreeUnits","subtractTempDegrees","deg","tempDegrees","addTempDegrees","toDegrees","src","dst","srcDegK","toDegK","dstUnits","dstScalar","qty","toTemp","toTempK","isCompatible","isInverse","baseUnitCache","toBaseUnits","toFloat","isUnitless","toPrec","precQuantity","precRoundedResult","swiftConverter","srcUnits","srcQty","dstQty","eq","convert","converter","op1","op2","numdenscale","cleanTerms","num1","den1","num2","den2","notUnity","combined","combineTerms","terms","direction","prefix","prefixValue","combinedPrefixValue","prop","compareTo","lt","lte","gt","gte","same","_isBase","NestedMap","childMap","defaultFormatter","formatter","_units","numIsUnity","denIsUnity","numUnits","stringifyUnits","denUnits","targetUnitsOrMaxDecimalsOrPrec","maxDecimals","targetUnits","outScalar","format","targetQty","stringifiedUnitsCache","stringified","isUnity","simplify","getOutputNames","unitNames","token","tokenNext","unitCounts","acc","unitCounter","unitCount","version","convertUnit","fromUnit","toUnit","normalize","testRegExp","ensureRegexp","string","parts","stringToRegexp","flags","getConvertedVariable","variable","newUnits","getXYSpectra","selectedSpectra","labels","xVariable","yVariable","split","variableNames","getPossibleVariable","variableName","convertibleUnits","regexpLabel","upper","hasOwn","lower","possibleFiltered","getXYSpectrum","Analysis","spectrumCallback","cache","ids","fromJSON","pushSpectrum","standardizeData","getXY","normalizedSpectra","getSpectrum","getXLabel","getYLabel","analysisOptions","appendDistinctParameter","appendDistinctValue","AnalysesManager","analysesManager","addAnalysis","getAnalysisIndex","getAnalyses","processedAnalysisIds","Set","has","getSpectra","getAnalysisBySpectrumId","getSpectrumById","getDistinctTitles","getDistinctUnits","getDistinctLabelUnits","normalizeLabelUnits","getDistinctLabels","getDistinctDataTypes","getDistinctMeta","removeAllAnalyses","removeAnalysis","originalLabel","originalUnits","search","ensureString","blob","encoding","TextDecoder","decode","decodeText","uint8","Uint8Array","buffer","byteOffset","byteLength","fatal","parseString","lowercase","gyromagneticRatioMHzT","getGyromagneticNucleus","nucleus","gyromagneticRatio","nucleusNumber","filteredNuclei","getGyromagneticRatio","realNucleus","fromEntries","_ref","quickSelectMedian","$","E","o","te","ne","ms","pageValue","chromatogram","re","O","logger","xFactor","info","yFactor","isXYdata","firstX","firstY","codePointAt","I","S","N","oe","isPeaktable","ce","ue","isXYAdata","se","Z","lastY","pe","ae","minX","maxX","minZ","maxZ","noise","ntuples","symbol","find","some","ie","nbContourLevels","fe","noiseMultiplier","zValue","lines","_","ee","T","segments","G","noContour","contourLines","minMax","observeFrequency","shiftOffsetVal","lastX","$NUC2","$NUC1","yType","xType","W","pageSymbol","J","intensity","de","twoD","wantXY","profiling","keepSpectra","dynamicTyping","le","K","charAt","vardim","varname","R","he","removeComments","keepRecordsRegExp","canonicDataLabels","canonicMetadataLabels","withoutXY","noTrimRegExp","pt","ge","debug","flatten","children","datatable","dataClass","jcampDX","jcampCS","shiftOffsetNum","vartype","varform","page","sampleDescription","pop","be","fromJcamp","jcamp","addJcamp","converted","currentSpectrum","addInfoData","header","checkNumberOrArray","getExtremeValues","firstRow","firstLast","creatorNtuples","owner","origin","resInfo","varName","varType","varDim","isDependent","point","getFactorNumber","getBestFactor","onlyInteger","extremeValues","getNumber","rounded","peakTableCreator","rescaleAndEnsureInteger","newLine","pseudoDigits","SQZ_P","SQZ_N","DIF_P","DIF_N","DUP","maxLinelength","vectorEncoder","intervalX","xyEncoding","fixEncoding","squeezedEncoding","differenceEncoding","differenceDuplicateEncoding","commaSeparatedValuesEncoding","packedEncoding","separator","outputData","dataLength","squeezedDigit","mult","charCount","encodedData","encodedNumber","diffData","numDiff","differenceDigit","duplicateDigit","sqzDigits","charCodeAt","substring","diffDigits","dupDigits","xyDataCreator","fromVariables","forceNtuples","jcampOptions","xData","toJcamps","jcamps","getJcamp","toJcamp","toText","exportText","spectrums","endOfLine","fieldSeparator","maxNumberData","lineIndex","titles","aligned","text","JSGraph","fromText","sections","splitSections","sectionResults","section","headers","arrayGroups","scalarIndices","classifyColumns","records","record","group","extractFloatArray","raw","mergeSections","isHeaderLine","ARRAY_HEADER_PATTERN","fields","field","Map","currentGroup","groups","maxLength","merged","sectionRecord","getArray","VARIABLE_MAPPING","arrayName","defaultUnits","fromZetasizer","buildVariables","extractMeta","cheminfo","extractCheminfo","extractTitle","settings","extractSettings","sizes","intensities","mapping","letter","sampleName","dlsMeta","zAverage","pdi","polydispersityIndex","countRate","derivedMeanCountRate","extractAverage","distributions","extractDistributions","OVERALL_MEAN_KEYS","metaKey","PEAK_MEAN_PATTERN","PEAK_WIDTH_PATTERN","META_DISTRIBUTION_MAP","volume","peakMap","dist","distributionKey","peakNumber","getOrCreateDistribution","stats","onlyPeak","sortedKeys","toSorted","serialNumber","softwareVersion","instrument","manufacturer","model","software","findParameter","child","findParameterDeep","parameter","found","globalThis","sqlite3Worker1Promiser","callee","config","defaultConfig","onready","handlerMap","noop","onerror","idTypeMap","generateMessageId","genMsgId","msg","toss","args","worker","dbId","promiserFunc","onmessage","ev","msgHandler","messageId","onrow","onunhandled","reject","resolve","departureTime","performance","proxy","rowCallbackId","Promise","postMessage","finally","Worker","URL","import","v2","oldFunc","promiseProxy","func","original","bind","sqlite3InitModule","moduleArg","moduleRtn","Module","ENVIRONMENT_IS_WEB","ENVIRONMENT_IS_WORKER","WorkerGlobalScope","process","versions","node","thisProgram","_scriptName","scriptDirectory","locateFile","path","readAsync","readBinary","href","url","xhr","XMLHttpRequest","open","responseType","send","response","fetch","credentials","ok","arrayBuffer","status","wasmBinary","ABORT","readyPromiseResolve","readyPromiseReject","HEAP8","HEAPU8","HEAP16","HEAP32","HEAPU32","HEAP64","runtimeInitialized","updateMemoryViews","wasmMemory","Int16Array","Int32Array","BigInt64Array","BigUint64Array","initMemory","INITIAL_MEMORY","WebAssembly","Memory","preRun","addOnPreRun","callRuntimeCallbacks","onPreRuns","initRuntime","FS","initialized","init","wasmExports","ignorePermissions","postRun","addOnPostRun","onPostRuns","abort","what","RuntimeError","wasmBinaryFile","findWasmBinary","getBinarySync","file","getWasmBinary","binaryFile","instantiateArrayBuffer","imports","binary","instantiate","reason","instantiateAsync","instantiateStreaming","getWasmImports","wasmImports","createWasm","receiveInstance","instance","assignWasmExports","receiveInstantiationResult","inst","callbacks","cb","PATH","isAbs","splitPath","filename","normalizeArray","allowAboveRoot","up","isAbsolute","trailingSlash","dirname","root","dir","basename","paths","join2","initRandomFill","view","getRandomValues","randomFill","PATH_FS","resolvedPath","resolvedAbsolute","cwd","relative","arr","end","fromParts","toParts","samePartsLength","outputParts","UTF8Decoder","findStringEnd","heapOrArray","maxBytesToRead","ignoreNul","maxIdx","UTF8ArrayToString","endPtr","FS_stdin_getChar_buffer","lengthBytesUTF8","stringToUTF8Array","heap","outIdx","maxBytesToWrite","startIdx","endIdx","intArrayFromString","stringy","dontAddNull","u8array","numBytesWritten","FS_stdin_getChar","prompt","TTY","ttys","shutdown","register","dev","ops","registerDevice","stream_ops","stream","tty","rdev","ErrnoError","seekable","close","fsync","read","offset","pos","get_char","bytesRead","atime","write","put_char","mtime","ctime","default_tty_ops","ioctl_tcgets","c_iflag","c_oflag","c_cflag","c_lflag","c_cc","ioctl_tcsets","optional_actions","ioctl_tiocgwinsz","default_tty1_ops","zeroMemory","alignMemory","alignment","mmapAlloc","_emscripten_builtin_memalign","MEMFS","ops_table","mount","createNode","parent","mode","isBlkdev","isFIFO","getattr","node_ops","setattr","lookup","mknod","rename","unlink","rmdir","readdir","symlink","llseek","mmap","msync","link","readlink","chrdev","chrdev_stream_ops","isDir","contents","isFile","usedBytes","isLink","isChrdev","getFileDataAsTypedArray","expandFileStorage","newCapacity","prevCapacity","oldContents","resizeFileStorage","newSize","attr","ino","nlink","uid","gid","blksize","blocks","doesNotExistError","old_node","new_dir","new_name","new_node","lookupNode","hashRemoveNode","newname","oldpath","canOwn","whence","prot","allocated","mmapFlags","FS_modeStringToFlags","FS_getMode","canRead","canWrite","asyncLoad","FS_createDataFile","createDataFile","runDependencies","dependenciesFulfilled","removeRunDependency","addRunDependency","preloadPlugins","FS_handledByPreloadPlugin","byteArray","fullname","Browser","plugin","FS_preloadFile","dontCreateFile","preFinish","FS_createPreloadedFile","onload","then","catch","mounts","devices","streams","nextInode","nameTable","currentPath","filesystems","syncFSRequests","readFiles","errno","FSStream","shared","isRead","isWrite","isAppend","FSNode","readMode","writeMode","mounted","isFolder","isDevice","lookupPath","opts","follow_mount","linkloop","nlinks","current_path","islast","isRoot","noent_okay","isMountpoint","follow","getPath","mountpoint","hashName","parentid","hash","hashAddNode","name_next","errCode","mayLookup","nodeName","destroyNode","isSocket","flagsToPermissionString","flag","perms","nodePermissions","mayCreate","mayDelete","isdir","mayOpen","checkOpExists","op","MAX_OPEN_FDS","nextfd","fd","getStreamChecked","getStream","createStream","closeStream","dupStream","origStream","dup","doSetAttr","getDevice","major","minor","makedev","ma","mi","getMounts","check","syncfs","populate","completed","doCallback","done","errored","pseudo","mountRoot","unmount","statfs","statfsNode","statfsStream","rtn","bsize","frsize","bfree","bavail","files","ffree","fsid","namelen","mkdir","mkdirTree","dirs","mkdev","newpath","old_path","new_path","old_dirname","new_dirname","old_name","old_dir","stat","dontFollow","fstat","lstat","doChmod","chmod","lchmod","fchmod","doChown","timestamp","chown","lchown","fchown","doTruncate","truncate","ftruncate","utime","isDirPath","created","ungotten","isClosed","getdents","seeking","bytesWritten","ioctl","cmd","readFile","buf","writeFile","chdir","createDefaultDirectories","createDefaultDevices","randomBuffer","randomLeft","randomByte","createDevice","createSpecialDirectories","proc_self","ret","createStandardStreams","staticInit","quit","findObject","dontResolveLastLink","analyzePath","exists","parentExists","parentPath","parentObject","createPath","part","createFile","forceLoadFile","createLazyFile","LazyUint8Array","lengthKnown","chunks","chunkOffset","chunkSize","chunkNum","getter","setDataGetter","cacheLength","datalength","getResponseHeader","hasByteServing","usesGzip","doXHR","setRequestHeader","overrideMimeType","responseText","lazyArray","_length","_chunkSize","defineProperties","writeChunks","UTF8ToString","SYSCALLS","calculateAt","dirfd","allowEmpty","getStreamFromFD","writeStat","BigInt","getTime","writeStatFs","doMsync","addr","varargs","getStr","___syscall_chmod","___syscall_faccessat","amode","___syscall_fchmod","___syscall_fchown32","syscallGetVarargI","syscallGetVarargP","___syscall_fcntl64","___syscall_fstat64","INT53_MAX","INT53_MIN","bigintToI53Checked","___syscall_ftruncate64","stringToUTF8","outPtr","___syscall_getcwd","cwdLengthInBytes","___syscall_ioctl","termios","argp","winsize","___syscall_lstat64","___syscall_mkdirat","___syscall_newfstatat","nofollow","___syscall_openat","___syscall_readlinkat","bufsize","endChar","___syscall_rmdir","___syscall_stat64","___syscall_unlinkat","readI53FromI64","___syscall_utimensat","seconds","nanoseconds","isLeapYear","year","MONTH_DAYS_LEAP_CUMULATIVE","MONTH_DAYS_REGULAR_CUMULATIVE","ydayFromDate","date","getFullYear","getMonth","getDate","__localtime_js","tmPtr","getSeconds","getMinutes","getHours","getDay","yday","getTimezoneOffset","summerOffset","winterOffset","__mmap_js","__munmap_js","__tzset_js","timezone","daylight","std_name","dst_name","currentYear","winter","summer","stdTimezoneOffset","extractZone","timezoneOffset","absOffset","padStart","winterName","summerName","_emscripten_get_now","_emscripten_date_now","checkWasiClock","clock_id","_clock_time_get","clk_id","ignored_precision","ptime","nsec","getHeapMax","_emscripten_get_heap_max","growMemory","pages","grow","_emscripten_resize_heap","requestedSize","oldSize","maxHeapSize","cutDown","overGrownHeapSize","ENV","getExecutableName","getEnvStrings","lang","navigator","language","env","_environ_get","__environ","environ_buf","bufSize","envp","Infinity","_environ_sizes_get","penviron_count","penviron_buf_size","_fd_close","_fd_fdstat_get","pbuf","rightsBase","rightsInheriting","doReadv","iov","iovcnt","curr","_fd_read","pnum","_fd_seek","newOffset","_fd_sync","doWritev","_fd_write","createPreloadedFile","preloadFile","__syscall_chmod","__syscall_faccessat","__syscall_fchmod","__syscall_fchown32","__syscall_fcntl64","__syscall_fstat64","__syscall_ftruncate64","__syscall_getcwd","__syscall_ioctl","__syscall_lstat64","__syscall_mkdirat","__syscall_newfstatat","__syscall_openat","__syscall_readlinkat","__syscall_rmdir","__syscall_stat64","__syscall_unlinkat","__syscall_utimensat","_localtime_js","_mmap_js","_munmap_js","_tzset_js","clock_time_get","emscripten_date_now","emscripten_get_heap_max","emscripten_get_now","emscripten_resize_heap","environ_get","environ_sizes_get","fd_close","fd_fdstat_get","fd_read","fd_seek","fd_sync","fd_write","memory","run","doRun","setTimeout","runSQLite3PostLoadInit","sqlite3InitScriptInfo","EmscriptenModule","sqlite3IsUnderTest","sqlite3ApiBootstrap","apiConfig","sqlite3ApiConfig","sqlite3","bigIntEnabled","wasmfsOpfsDir","useStdAlloc","allocExportName","deallocExportName","reallocExportName","capi","wasm","__rcStr","rc","sqlite3_js_rc_str","isInt32","SQLite3Error","rcStr","resultCode","SQLITE_ERROR","toss3","bigIntFits64","_max","_min","bigIntFits32","bigIntFitsDouble","isTypedArray","BYTES_PER_ELEMENT","isBindableTypedArray","isSQLableTypedArray","affirmBindableTypedArray","flexibleString","typedArrayToString","isPtr","cstrToJs","WasmAllocError","SQLITE_NOMEM","sqlite3_bind_blob","sqlite3_bind_text","sqlite3_create_function_v2","pDb","funcName","nArg","eTextRep","pApp","xFunc","xStep","xFinal","xDestroy","sqlite3_create_function","sqlite3_create_window_function","xInverse","sqlite3_prepare_v3","dbPtr","sql","sqlByteLen","prepFlags","stmtPtrPtr","strPtrPtr","sqlite3_prepare_v2","sqlite3_exec","pVoid","pErrMsg","sqlite3_randomness","util","isUIThread","document","typedArrayPart","assert","affirmDbHeader","bytes","affirmIsDb","pointerSize","sqlite3_libversion","functionTable","alloc","realloc","dealloc","allocFromTypedArray","srcTypedArray","pRet","heapForSize","keyAlloc","keyDealloc","keyRealloc","impl","coerce","null","compileOptionUsed","optName","_result","_opt","_rx","_rxInt","opt","rv","ov","sqlite3_compileoption_get","sqlite3_compileoption_used","pstack","restore","sqlite3__wasm_pstack_restore","sizeofIR","sqlite3__wasm_pstack_alloc","allocChunks","sz","mem","allocPtr","safePtrSize","stackPos","pointer","configurable","iterable","writeable","sqlite3__wasm_pstack_ptr","quota","sqlite3__wasm_pstack_quota","remaining","sqlite3__wasm_pstack_remaining","ta","heap8u","nAlloc","sqlite3_wasmfs_opfs_dir","pdir","FileSystemHandle","FileSystemDirectoryHandle","FileSystemFileHandle","sqlite3__wasm_init_wasmfs","xCallWrapped","sqlite3_wasmfs_filename_is_persistent","sqlite3_js_db_uses_vfs","vfsName","dbName","pK","sqlite3_vfs_find","sqlite3_js_db_vfs","sqlite3_js_vfs_list","pVfs","oVfs","sqlite3_vfs","$zName","$pNext","dispose","sqlite3_js_db_export","schema","xWrap","testConvertArg","scope","scopedAllocPush","pOut","pSize","scopedAlloc","ppOut","zSchema","scopedAllocCString","sqlite3__wasm_db_serialize","peekPtr","nOut","peek","sqlite3_free","scopedAllocPop","dbPointer","sqlite3__wasm_db_vfs","sqlite3_js_aggregate_context","pCtx","sqlite3_aggregate_context","sqlite3_js_posix_create_file","dataLen","pData","sqlite3__wasm_posix_create_file","sqlite3_js_vfs_create_file","vfs","sqlite3__wasm_vfs_create_file","sqlite3_js_sql_to_string","sqlite3_db_config","SQLITE_DBCONFIG_ENABLE_FKEY","SQLITE_DBCONFIG_ENABLE_TRIGGER","SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER","SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION","SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE","SQLITE_DBCONFIG_ENABLE_QPSG","SQLITE_DBCONFIG_TRIGGER_EQP","SQLITE_DBCONFIG_RESET_DATABASE","SQLITE_DBCONFIG_DEFENSIVE","SQLITE_DBCONFIG_WRITABLE_SCHEMA","SQLITE_DBCONFIG_LEGACY_ALTER_TABLE","SQLITE_DBCONFIG_DQS_DML","SQLITE_DBCONFIG_DQS_DDL","SQLITE_DBCONFIG_ENABLE_VIEW","SQLITE_DBCONFIG_LEGACY_FILE_FORMAT","SQLITE_DBCONFIG_TRUSTED_SCHEMA","SQLITE_DBCONFIG_STMT_SCANSTATUS","SQLITE_DBCONFIG_REVERSE_SCANORDER","SQLITE_DBCONFIG_ENABLE_ATTACH_CREATE","SQLITE_DBCONFIG_ENABLE_ATTACH_WRITE","SQLITE_DBCONFIG_ENABLE_COMMENTS","ip","SQLITE_DBCONFIG_LOOKASIDE","pii","SQLITE_DBCONFIG_MAINDBNAME","SQLITE_MISUSE","sqlite3_value_to_js","pVal","throwIfCannotConvert","valType","sqlite3_value_type","SQLITE_INTEGER","sqlite3_value_int64","sqlite3_value_double","SQLITE_FLOAT","SQLITE_TEXT","sqlite3_value_text","SQLITE_BLOB","sqlite3_value_bytes","pBlob","sqlite3_value_blob","SQLITE_NULL","SQLITE_MISMATCH","sqlite3_values_to_js","argc","pArgv","tgt","sqlite3_result_error_js","sqlite3_result_error_nomem","sqlite3_result_error","sqlite3_result_js","sqlite3_result_int","sqlite3_result_double","sqlite3_result_int64","allocCString","sqlite3_result_text","SQLITE_WASM_DEALLOC","sqlite3_result_null","sqlite3_result_blob","sqlite3_column_js","pStmt","iCol","sqlite3_column_value","__newOldValue","pObj","pokePtr","pv","sqlite3_preupdate_new_js","sqlite3_preupdate_old_js","sqlite3changeset_new_js","pChangesetIter","sqlite3changeset_old_js","client","asyncPostInit","ff","isReady","lia","initializersAsync","postInit","__isUnderTest","StructBinder","catcher","scriptInfo","initializers","debugModule","emscripten","iw","instantiateWasm","WhWasmUtilInstaller","pointerIR","__ptrIR","__ptrSize","__BigInt","__Number","__asPtrType","__NullPtr","__ptrAdd","__ptr","enumerable","heapSize","freeFuncIndexes","pushPtr","utf8Decoder","utf8Encoder","TextEncoder","heapWrappers","HEAP8U","HEAP16U","Uint16Array","HEAP32U","HEAP32F","Float32Array","HEAP64F","HEAP64U","heap8","heap16","heap16u","heap32","heap32u","unsigned","__funcTable","__indirect_function_table","functionEntry","fptr","ft","jsFuncToWasm","sig","sigTypes","typeCodes","f64","f32","i64","i32","uleb128Encode","method","rxJSig","sigParams","letterType","pushSigType","dest","wasmCode","Instance","__installFunction","scoped","oldLen","installFunction","scopedInstallFunction","uninstallFunction","poke","peek8","poke8","peek16","poke16","peek32","poke32","peek64","poke64","peek32f","poke32f","peek64f","poke64f","getMemValue","getPtrValue","setMemValue","setPtrValue","isPtr32","isPtr64","cstrlen","__SAB","SharedArrayBuffer","isSharedTypedArray","aTypedArray","begin","typedArray","jstrlen","jstrcpy","jstr","maxBytes","addNul","cstrncpy","tgtPtr","srcPtr","strPtr","ch","tgtNumber","srcNumber","jstrToUintArray","encode","__affirmAlloc","__allocCStr","returnWithLength","allocator","toFree","state","__allocMainArgv","isScoped","pList","scopedAllocMainArgv","allocMainArgv","cArgvToJs","scopedAllocCall","__allocPtr","howMany","pIr","scopedAllocPtr","xGet","__argcMismatch","xCall","fname","xArg","__xArgPtr","valueOf","__xArgString","AbstractArgAdapter","convertArg","argv","argIndex","FuncPtrAdapter","warnOnUse","contextKey","bindScope","bindScopes","bindMod","isTransient","isContext","isPermanent","singleton","callProxy","contextMap","cm","__cmap","pair","fp","debugFuncInstall","debugOut","__xArgAdapterCheck","__xResultAdapterCheck","convertArgNoCheck","convertResult","convertResultNoCheck","fArg","resultType","argTypes","fIsFunc","xf","cxw","__xAdapter","typeName","adapter","modeName","xcvPart","delete","resultAdapter","argAdapter","testConvertResult","yawl","wfetch","uri","wui","finalThen","wasmUtilTarget","malloc","free","Jaccwabyt","StructBinderFactory","SBF","memberPrefix","memberSuffix","ptrSize","ptrIR","__ptrAddSelf","debugFlags","__makeDebugFlags","deriveFrom","__flags","setter","_flags","writable","isLittleEndian","isFuncSig","isPtrSig","isAutoPtrSig","sigLetter","sigIR","sigSize","affirmBigIntArray","sigDVGetter","sigDVSetter","sigDVSetWrapper","sPropName","__propThrowOnSet","structName","propName","getInstanceHandle","WeakMap","forObj","ownsPointer","zod","xb","rmInstanceHandle","__isPtr32","__isPtr64","__isPtr","__isNonNullPtr","__freeStruct","ctor","ondispose","StructType","structInfo","sizeof","zeroOnDispose","rop0","rop","__allocStruct","xm","checkPtr","takeOwnership","nX","extraBytes","addOnDispose","looksLikeASig","rxSig1","rxSig2","__adaptorsFor","who","__adaptor","which","__adaptGet","__affirmNotASig","ctx","__adaptSet","__adaptStruct","__adaptStruct2","__memberKey","__memberKeyProp","__lookupMember","memberName","tossIfNotFound","members","__memberSignature","emscriptenFormat","__structMemberKeys","memberKey","__utf8Decoder","__utf8Encoder","__utf8Decode","__memberIsString","__affirmCStringSignature","member","__memberToJsString","__addOnDispose","__allocCString","__setMemberCString","lookupMember","memberToJsString","memberIsString","memberKeys","memberSignature","memoryDump","setMemberCString","isA","hasExternalPointer","memberGetterProxy","adaptGet","memberSetterProxy","adaptSet","makeMemberStructWrapper","__innerStructs","innerStructs","getterProxy","dbg","makeMemberWrapper","getters","setters","sw","sigCheck","sigGlyph","xPropName","DataView","readOnly","setterProxy","StructBinderImpl","StructCtor","self","ads","adapt","struct","ptrAdd","lastMember","autoCalc","autoCalcSizeOffset","oldAutoCalc","adaptStruct","bindingSignatures","core","aNames","nCols","pColVals","pColNames","aVals","int64","z0","z1","rowid","wasmInternal","sqlite3_progress_handler","sqlite3_stmt_explain","sqlite3_set_authorizer","pV","iCode","s0","s1","s3","sqlite3_column_origin_name","sqlite3_declare_vtab","sqlite3_preupdate_hook","db","zDb","zTbl","iKey1","iKey2","sqlite3changegroup_add","sqlite3session_create","__ipsProxy","ir","__xString","nilType","oo1","Stmt","DB","SQLITE_NOTFOUND","sqlite3_index_info","sqlite3_module","__xRcPtr","sqlite3__wasm_db_error","sqlite3_set_errmsg","cJson","ctype","defineGroups","__rcMap","notThese","WasmTestStruct","sqlite3_index_constraint","sqlite3_index_orderby","sqlite3_index_constraint_usage","structs","sqlite3_vtab_config","__dbArgcMismatch","__errEncoding","SQLITE_FORMAT","__argPDb","__argStr","__dbCleanupMap","dbMap","addCollation","collation","_addUDF","arity","addFunction","udf","addWindowFunc","wudf","cleanup","closeArgs","sqlite3_create_collation_v2","SQLITE_UTF8","fmap","arities","fargs","clear","__sqlite3CloseV2","sqlite3_close_v2","__sqlite3SessionDelete","sqlite3session_delete","pSession","sqlite3session_table_filter","__sqlite3CreateCollationV2","zName","pArg","xCompare","sqlite3_create_collation","__cfProxy","xInverseAndStep","xFinalAndValue","__sqlite3CreateFunction","__sqlite3CreateWindowFunction","udfSetResult","udfConvertArgs","udfSetError","__flexiString","__prepare","basic","full","sqlLen","ppStmt","pzTail","xSql","xSqlLen","__bindText","__bindBlob","nText","sqlite3_db_handle","pMem","nMem","sqlite3_column_text","argStmt","argInt","argValue","newStr","cstr","stmt","colIndex","a0","a1","sqlite3_column_bytes","sqlite3_config","SQLITE_CONFIG_COVERING_INDEX_SCAN","SQLITE_CONFIG_MEMSTATUS","SQLITE_CONFIG_SMALL_MALLOC","SQLITE_CONFIG_SORTERREF_SIZE","SQLITE_CONFIG_STMTJRNL_SPILL","SQLITE_CONFIG_URI","sqlite3__wasm_config_i","SQLITE_CONFIG_LOOKASIDE","sqlite3__wasm_config_ii","SQLITE_CONFIG_MEMDB_MAXSIZE","sqlite3__wasm_config_j","SQLITE_CONFIG_GETMALLOC","SQLITE_CONFIG_GETMUTEX","SQLITE_CONFIG_GETPCACHE2","SQLITE_CONFIG_GETPCACHE","SQLITE_CONFIG_HEAP","SQLITE_CONFIG_LOG","SQLITE_CONFIG_MALLOC","SQLITE_CONFIG_MMAP_SIZE","SQLITE_CONFIG_MULTITHREAD","SQLITE_CONFIG_MUTEX","SQLITE_CONFIG_PAGECACHE","SQLITE_CONFIG_PCACHE2","SQLITE_CONFIG_PCACHE","SQLITE_CONFIG_PCACHE_HDRSZ","SQLITE_CONFIG_PMASZ","SQLITE_CONFIG_SERIALIZED","SQLITE_CONFIG_SINGLETHREAD","SQLITE_CONFIG_SQLLOG","SQLITE_CONFIG_WIN32_HEAPSIZE","__autoExtFptr","sqlite3_auto_extension","fPtr","sqlite3_cancel_auto_extension","sqlite3_reset_auto_extension","installMethod","applyArgcCheck","installMethodArgcCheck","argcProxy","removeFuncList","__removeFuncList","ndx","sigN","memKey","fProxy","pFunc","installMethods","structInstance","methods","prior","mkey","outWrapper","__ptrMap","__doesNotOwnHandle","__stmtMap","getOwnOption","dflt","getOwnPropertyDescriptor","checkSqlite3Rc","sqliteResultCode","sqlite3_errmsg","sqlite3_errstr","__dbTraceToConsole","SQLITE_TRACE_STMT","sqlite3_db_filename","__vfsPostOpenCallback","dbCtorHelper","normalizeArgs","flagsStr","oflags","SQLITE_OPEN_CREATE","SQLITE_OPEN_READWRITE","SQLITE_OPEN_READONLY","SQLITE_OPEN_EXRESCODE","pPtr","sqlite3_open_v2","sqlite3_extended_result_codes","sqlite3_trace_v2","postInitSql","setVfsPostOpenCallback","BindTypes","boolean","bigint","affirmDbOpen","affirmColIndex","columnCount","parseExecArgs","returnValue","resultRows","returnVal","saveSql","rowMode","cbArg","columnNames","getColumnNames","$colName","__selectFirstRow","getArgs","reset","finalize","__selectAll","checkRc","isOpen","affirmOpen","onclose","before","after","changes","total","sixtyFour","sqlite3_total_changes64","sqlite3_total_changes","sqlite3_changes64","sqlite3_changes","dbFilename","dbNumber","sqlite3_db_name","dbVfsName","evalFirstResult","isTA","pSql","pSqlEnd","sqlite3_sql","parameterCount","gotColNames","cbArgCache","__execLock","createFunction","isFunc","isWindow","fFlags","SQLITE_DETERMINISTIC","SQLITE_DIRECTONLY","SQLITE_INNOCUOUS","xArity","arityArg","selectValue","asType","selectValues","selectArray","selectObject","selectArrays","selectObjects","openStatementCount","transaction","opener","savepoint","wrapHandle","affirmStmtOpen","isSupportedBindType","affirmSupportedBindType","affirmParamIndex","sqlite3_bind_parameter_index","__stmtMayGet","affirmNotLockedByExec","currentOpName","bindOne","bindType","_tooBigInt","asBlob","pStr","sqlite3_bind_null","sqlite3_bind_int","sqlite3_bind_int64","sqlite3_bind_double","sqlite3_finalize","clearBindings","sqlite3_clear_bindings","alsoClearBinds","sqlite3_reset","bindAsBlob","sqlite3_step","SQLITE_DONE","SQLITE_ROW","stepReset","stepFinalize","sqlite3_column_name","sqlite3_column_type","sqlite3_column_int64","sqlite3_column_double","sqlite3_column_blob","_blobXfer","getInt","getFloat","getString","getBlob","getJSON","SQLITE_STRING","getColumnName","getParamIndex","getParamName","sqlite3_bind_parameter_name","isBusy","sqlite3_stmt_busy","isReadOnly","sqlite3_stmt_readonly","sqlite3_column_count","sqlite3_bind_parameter_count","oo1db","initWorker1API","getDbId","wState","idMap","idSeq","dbList","xfer","dbs","alsoUnlink","ddNdx","sqlite3__wasm_vfs_unlink","post","xferList","getDb","require","getMsgDb","msgData","affirmExists","getDefaultDbId","wMsgHandler","oargs","simulateError","persistent","doUnlink","theCallback","rowNumber","hadColNames","changeCount","countChanges","lastInsertRowId","sqlite3_last_insert_rowid","vfsList","export","mimetype","evType","arrivalTime","operation","errorClass","workerReceivedTime","workerRespondTime","registerVfs","asDefault","sqlite3_vfs_register","installVfs","propList","vtab","sii","nthConstraint","asPtr","$nConstraint","$aConstraint","nthConstraintUsage","$aConstraintUsage","nthOrderBy","$nOrderBy","$aOrderBy","__xWrapFactory","methodName","removeMapping","StructPtrMapper","__xWrap","pCObj","unget","xVtab","sqlite3_vtab","xCursor","sqlite3_vtab_cursor","xIndexInfo","pIdxInfo","xError","defaultRc","errorReporter","xRowid","ppRowid64","setupModule","createdMod","xConnect","xDisconnect","catchExceptions","fwrap","pAux","ppVtab","pzErr","mnames","remethods","xCreate","$iVersion","iVersion","$xIntegrity","$xShadowName","$xSavePoint","$xRelease","$xRollbackTo","sqlite3_kvvfs_methods","KVVfsFile","pKvvfs","hop","kvvfsMethods","sqlite3__wasm_kvvfs_methods","$nKeySize","rxJournalSuffix","zKeyJrnl","zKeySz","keySize","$nBufferSize","pool","memBuffer","memBufferFree","KVVfsStorage","#getKeys","getItem","setItem","removeItem","kvvfsIsPersistentName","kvvfsKeyPrefix","validateStorageName","mayBeJournal","Blob","maxLen","SQLITE_RANGE","newStorageObj","jzClass","refc","deleteAtRefc0","keyPrefix","listeners","kvvfs","xOpen","xClose","xWrite","xRead","xSync","xAccess","xFileControl","xRcrdRead","xRcrdWrite","xRcrdDelete","deleteStorage","store","storagePool","installStorageAndJournal","nameOfThisThreadStorage","Storage","localStorage","local","sessionStorage","session","builtinStorageNames","isBuiltinName","orig","setError","dfltErrCode","lastError","popError","catchForNotify","kvvfsDecode","sqlite3__wasm_kvvfs_decode","kvvfsEncode","sqlite3__wasm_kvvfs_encode","notifyListeners","eventName","u8enc","wcache","ear","storageName","decodePages","events","includeJournal","addn","storageForZClass","zClass","kvvfsMakeKey","sqlite3__wasm_kvvfsMakeKey","zKeyForStorage","zKey","jsKeyForStorage","storageGetDbSize","pFileHandles","originalMethods","ioDb","ioJrnl","$pVfs","pIoDb","sqlite3_io_methods","$pIoDb","pIoJrnl","$pIoJrnl","recordHandler","kvvfsInternal","disablePageSizeChange","internal","methodOverrides","zBuf","nBuf","jXKey","jV","nV","zV","copyWithin","zData","jxKey","jData","SQLITE_IOERR","pProtoVfs","pProtoFile","pOutFlags","zToFree","SQLITE_OPEN_MAIN_DB","SQLITE_OPEN_TEMP_DB","SQLITE_OPEN_TRANSIENT_DB","deleteAt0","SQLITE_OPEN_DELETEONCLOSE","sqlite3_uri_boolean","$zClass","$isJournal","nm","xDelete","iSyncFlag","jzName","zPath","pResOut","jzPath","xRandomness","npOut","xGetLastError","cMsg","pFile","opId","SQLITE_FCNTL_PRAGMA","zVal","$szPage","SQLITE_FCNTL_SYNC","pTgt","iOff64","pSrc","sqlite3_file","km","sqlite3_js_kvvfs_clear","SQLITE_ACCESS","toRm","sqlite3_js_kvvfs_size","sqlite3_js_kvvfs_export","rxTail","journal","spg","zDec","nDec","sqlite3_js_kvvfs_import","overwrite","isNew","SQLITE_IOERR_ACCESS","zEnc","zBin","jenc","sqlite3_js_kvvfs_reserve","sqlite3_js_kvvfs_unlink","sqlite3_js_kvvfs_listen","reserve","sqlite3_js_kvvfs_unlisten","listen","unlisten","estimateSize","JsStorageDb","defaultStorageName","jdb","clearStorage","storageSize","nRef","nOpen","dbSize","colId","VT","ProtoCursor","names","cursorState","cursor","vTabState","theModule","xcol","xErrror","pVtab","ppCursor","pCursor","xNext","xColumn","st","SQLITE_TRANSIENT","xEof","xFilter","idxNum","idxCStr","xBestIndex","$estimatedRows","$estimatedCost","create_module","sqlite3_create_module","installOpfsVfs","Atomics","createSyncAccessHandle","getDirectory","urlParams","location","searchParams","verbose","sanityChecks","proxyUri","defaultProxyUri","promiseResolve_","promiseReject_","loggers","logImpl","level","opfsUtil","thisThreadHasOPFS","metrics","dump","opIds","wait","avgTime","avgWait","s11n","serialize","deserialize","opfsIoMethods","opfsVfs","promiseWasRejected","promiseReject","promiseResolve","_originalOnError","pDVfs","dVfs","$szOsFile","$mxPathname","$xDlOpen","$xDlError","$xDlSym","$xDlClose","littleEndian","setInt16","asyncIdleWaitTime","asyncS11nExceptions","fileBufferSize","sabS11nOffset","sabS11nSize","sabIO","whichOp","xDeleteNoWait","xFileSize","xLock","xSleep","xTruncate","xUnlock","retry","sabOP","sq3Codes","opfsFlags","OPFS_UNLOCK_ASAP","OPFS_UNLINK_BEFORE_OPEN","defaultUnlockAsap","opRun","opNdx","sabOPView","notify","asyncShutdown","asyncRestart","initS11n","textDecoder","textEncoder","viewU8","viewDV","TypeIds","getTypeId","getTypeIdById","tid","typeIds","getInt32","setInt32","randomFilename","_chars","_n","__openFiles","opTimer","mTimeStart","mTimeEnd","ioSyncWrappers","xCheckReservedLock","sq3File","xDeviceCharacteristics","SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN","pSz64","lockType","pDest","offset64","SQLITE_IOERR_SHORT_READ","sabView","SQLITE_IOERR_READ","sz64","SQLITE_LOCK_NONE","SQLITE_IOERR_WRITE","vfsSyncWrappers","xCurrentTime","xCurrentTimeInt64","doSyncDir","xFullPathname","SQLITE_CANTOPEN","fh","fid","sab","sabFileBufView","$pMethods","$xRandomness","$xSleep","getResolvedPath","splitIt","pathname","getDirForFilename","absFilename","createDirs","dh","rootDirectory","dirName","getDirectoryHandle","absDirName","entryExists","fsEntryName","getFileHandle","treeList","doDir","dirHandle","handle","subDir","rmfr","recurse","removeEntry","recursive","throwOnError","hDir","filenamePart","cause","traverse","defaultOpt","directory","depth","importDbChunked","fnamePart","sah","nWrote","chunk","checkedHeader","importDb","OpfsDb","oo1Db","sqlite3_busy_timeout","sanityCheck","openFlags","dbFile","zDbFile","readBuf","jRead","payload","io","sabS11nView","opfs","errMsg","proxyJs","sqlite3Dir","initPromises","SECTOR_SIZE","HEADER_MAX_PATH_SIZE","HEADER_FLAGS_SIZE","HEADER_DIGEST_SIZE","HEADER_CORPUS_SIZE","HEADER_OFFSET_FLAGS","HEADER_OFFSET_DIGEST","HEADER_OFFSET_DATA","PERSISTENT_FILE_TYPES","SQLITE_OPEN_MAIN_JOURNAL","SQLITE_OPEN_SUPER_JOURNAL","SQLITE_OPEN_WAL","FLAG_COMPUTE_DIGEST_V2","SQLITE_OPEN_MEMORY","OPAQUE_DIR_NAME","getRandomName","optionDefaults","initialCapacity","clearOnInit","verbosity","forceReinitIfPreviouslyFailed","__mapVfsToPool","getPoolForVfs","setPoolForVfs","__mapSqlite3File","getPoolForPFile","setPoolForPFile","ioMethods","storeErr","getOFileForS3File","mapS3FileToOFile","flush","deletePath","getSize","nRead","xSectorSize","vfsMethods","hasFilename","SQLITE_IOERR_DELETE","popErr","sqlite3Rc","getSAHForPath","getFileCount","getCapacity","nextAvailableSAH","setAssociatedPath","createOpfsVfs","OpfsSAHPool","vfsDir","$error","addCapacity","#logImpl","getVfs","getFileNames","ah","reduceCapacity","nRm","releaseAccessHandles","acquireAccessHandles","clearFiles","all","getAssociatedPath","getUint32","fileDigest","compDigest","computeDigest","pathBytes","enc","encodeInto","written","setUint32","digest","fileFlags","h1","h2","imul","prev","code","removeVfs","sqlite3_vfs_unregister","pauseVfs","isPaused","unpauseVfs","exportFile","OpfsSAHPoolUtil","sahPool","reserveMinimumCapacity","wipeFiles","apiVersionCheck","installOpfsSAHPoolVfs","$testThrowPhase1","$testThrowPhase2","thePool","poolUtil","theVfs","OpfsSAHPoolDb","bootstrapConfig","originalInit","sIMS","sqlite3InitModuleState","moduleScript","currentScript","isWorker","URLSearchParams","wasmFilename","li","sIM","emscriptenLocateFile","emscriptenInstantiateWasm","ready","scriptDir","sqlite3_bundler_friendly_default","sqlite3WasmGzBase64","decompressBase64Gzip","base64","compressed","atob","character","pipeThrough","DecompressionStream","Response","wasmBinaryPromise","openDatabase","database","dataPointer","sqlite3_deserialize","SQLITE_DESERIALIZE_FREEONCLOSE","SQLITE_DESERIALIZE_RESIZEABLE","ENTRY_MARKER","ENTRY_SIZE","decodeBlob","markerOffset","findMarker","remainingBytes","dataView","getFloat64","DATA_TYPE_NONE","DATA_TYPE_INT32_SINGLE","DATA_TYPE_INT32","DATA_TYPE_DOUBLE","DATA_TYPE_SINGLE","DATA_TYPE_BOOLEAN","DATA_TYPE_INT64_SINGLE","DATA_TYPE_INT64","DATA_TYPE_GUID","DATA_TYPE_TEXT","DATA_TYPE_DICTIONARY_KEYS","DATA_TYPE_DICTIONARY","DATA_TYPE_GUID_LIST","DATA_TYPE_DATE_TIME","DATA_TYPE_DURATION","DATA_TYPE_BLOB_ARRAY","readParameterData","recordId","rootNode","dataByNodeId","loadDataMap","convertNode","blobRows","blobMap","blobRow","nodeId","parameterTreeNodeId","dataIndex","dataBlob","dataMap","parameterTypeId","dataBoolean","dataDouble","dataInt32","dataInt64","dataSingle","dataText","existing","instanceIndex","parameterType","friendlyName","urn","dataRows","dataRow","extractValue","currentInstanceCount","childRows","childInstanceCount","loadParameterTypes","types","buildParameterTree","rootParameterTypeId","parameterTypes","nodeMap","rawNode","parentNodeId","sortChildren","siblingIndex","readRecords","schemaVersion","readSchemaVersion","metadata","readStoreMetadata","buildRecords","Key","Value","rawRecords","tree","parameters","guid","groupId","groupGuid","groupName","createdDateTime","modifiedDateTime","VARIABLE_DESCRIPTORS","parameterName","PEAK_CONTAINERS","fromZmes","zmesFile","descriptor","sampleSettings","topLevelFields","deepFields","materialSettings","materialRI","materialAbsorption","dispersantViscosity","dispersantRI","instrumentSerialNumber","instrumentSettingsFields","settingsKey","computeAverage","container","containerParameter","peakIndex","peakNode","extractPeakStats","weightedSum","totalArea","area","property"],"mappings":"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CACX,GAAIyvB,GAAG,GAAK6tD,MAAM,CAAEhyC,KAAK,CAACovC,eAAe,CAAC/pF,IAAI,CAAC2sF,MAAM,CAAC,CACtD,MAAMt9E,CAAC,CACR,CACA,OAAOyvB,GAAG,CACX,CAAC,CACD;IACH;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,KACGtjC,MAAM,CAACoxF,eAAe,CAAG,CAAC17B,IAAI,CAAEu6B,GAAG,GAAKgB,iBAAiB,CAACv7B,IAAI,CAAEu6B,GAAG,CAAE,KAAK,CAAC,CAC3E;IACH;IACA;IACA;IACA;IACA;IACA;IACA,KACGjwF,MAAM,CAACqxF,qBAAqB,CAAG,CAAC37B,IAAI,CAAEu6B,GAAG,GAAKgB,iBAAiB,CAACv7B,IAAI,CAAEu6B,GAAG,CAAE,IAAI,CAAC,CAChF;IACH;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,KACGjwF,MAAM,CAACsxF,iBAAiB,CAAG,SAAShuD,GAAG,CAAE,CACxC,GAAI,CAACA,GAAG,EAAI4qD,SAAS,GAAK5qD,GAAG,CAAE,OAAO,MAAM,CAC5C,MAAMysD,EAAE,CAAG/vF,MAAM,CAAC8hF,aAAa,EAAE,CACjC3iC,KAAK,CAACovC,eAAe,CAAC/pF,IAAI,CAAC8+B,GAAG,CAAC,CAC/B,MAAM26C,EAAE,CAAG8R,EAAE,CAACzrF,GAAG,CAACg/B,GAAG,CAAC,CACtBysD,EAAE,CAACpqF,GAAG,CAAC29B,GAAG,CAAE,IAAI,CAAC,CACjB,OAAO26C,EAAE,CACV,CAAC,CACD;IACH;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA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K,CACnI,GAAI,CACH,OAAOA,CAAC,CAAGqd,IAAI,CAAC64B,KAAK,CAACz1C,MAAM,CAACs/E,QAAQ,CAAC//E,CAAC,CAAC,CAAC,CAAG,IAAI,CACjD,CAAC,OAAS,CACTS,MAAM,CAACiiF,OAAO,CAAC1iF,CAAC,CAAC,CAClB,CACD,CAAC,CAAC,CACF;IACH;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,KACG,MAAMi2F,kBAAkB,CAAG,KAAM,CAChC3xF,WAAWA,CAACq/E,GAAG,CAAE,CAChB,IAAI,CAACp/E,IAAI,CAAGo/E,GAAG,CAACp/E,IAAI,EAAI,iBAAiB,CAC1C,CACA;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,MACI2xF,UAAUA,CAACzpF,CAAC,CAAE0pF,IAAI,CAAEC,QAAQ,CAAE,CAC7B3hC,IAAI,CAAC,wCAAwC,CAAC,CAC/C,CACD,CAAC,CACD;IACH;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,KACGohC,IAAI,CAACQ,cAAc,CAAG,MAAMA,cAAc,SAASJ,kBAAmB,CACrE3xF,WAAWA,CAACq/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AKuS,CAAC,CAAGvS,CAAC,CAAGuS,CAAC,CAAGod,OAAO,CAACr3B,GAAG,CAACia,CAAC,CAAC,CAACvS,CAAC,CAAC,CAAG,MAAM,CAC5F;IACH;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,KACGhM,MAAM,CAACqmF,KAAK,CAAG,SAAShzB,MAAMA,CAAC8jC,IAAI,CAAEC,UAAU,CAAE,GAAGC,QAAQ,CAAE,CAC7D,GAAI,CAAC,GAAKr1F,SAAS,CAAC9D,MAAM,EAAIsE,KAAK,CAACojC,OAAO,CAAC5jC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAEq1F,QAAQ,CAAGr1F,SAAS,CAAC,CAAC,CA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AAC,CACF,GAAG,CACH,IAAI,CACJ,CACD,CACD,CACC,sBAAsB,CACtB,QAAQ,CACR,eAAe,CACf,CACD,CACC,0BAA0B,CAC1B,KAAK,CACL,UAAU,CACV,CACD,CACC,+BAA+B,CAC/B,KAAK,CACL,UAAU,CACV,KAAK,CACL,CACD,CACC,sBAAsB,CACtB,KAAK,CACL,UAAU,CACV,QAAQ,CACR,KAAK,CACL,GAAG,CACH,CACD,CACC,kBAAkB,CAClB,KAAK,CACL,eAAe,CACf,CACD,CACC,cAAc,CACd,MAAM,CACN,GAAG,CACH,CACD,CACC,wBAAwB,CACxB,KAAK,CACL,UAAU,CACV,CACD,CACC,qBAAqB,CACrB,GAAG,CACH,kBAAkB,CAClB,KAAK,CACL,CACD,CAAC,oBAAoB,CAAE,MAAM,CAAC,CAC9B,CACC,mBAAmB,CACnB,MAAM,CACN,UAAU,CACV,CACD,CACC,wBAAwB,CACxB,KAAK,CACL,UAAU,CACV,CACD,CAAC,uBAAuB,CAAE,KAAK,CAAC,CAChC,CACC,sBAAsB,CACtB,KAAK,CACL,CACC,KAAK,CACL,IAAI,CACJ,GAAG,CACH,CACD,CACD,CACC,uBAAuB,CACvB,KAAK,CACL,CAAC,QAAQ,CAAE,KAAK,CAAC,CACjB,CACD,CAAC,oBAAoB,CAAE,QAAQ,CAAC,CAChC,CAAC,2BAA2B,CAAE,KAAK,CAAC,CACpC,CACC,eAAe,CACf,KAAK,CACL,CACC,UAAU,CACV,KAAK,CACL,KAAK,CACL,CACD,CACD,CACC,gBAAgB,CAChB,GAAG,CACH,KAAK,CACL,CACD,CACC,mBAAmB,CACnB,eAAe,CACf,CAAC,UAAU,CAAE,eAAe,CAAC,CAC7B,CACD,CACC,cAAc,CACd,KAAK,CACL,QAAQ,CACR,GAAG,CACH,CACD,CACC,iBAAiB,CACjB,KAAK,CACL,QAAQ,CACR,GAAG,CACH,KAAK,CACL,QAAQ,CACR,CACD,CACC,iBAAiB,CACjB,GAAG,CACH,GAAG,CACH,KAAK,CACL,CACD,CACC,eAAe,CACf,KAAK,CACL,eAAe,CACf,CACD,CACC,qBAAqB,CACrB,M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AChB,CACD,CACC,qBAAqB,CACrB,KAAK,CACL,gBAAgB,CAChB,CACD,CACC,sBAAsB,CACtB,KAAK,CACL,gBAAgB,CAChB,CACD,CACC,mBAAmB,CACnB,gBAAgB,CAChB,gBAAgB,CAChB,CACD,CACC,oBAAoB,CACpB,MAAM,CACN,gBAAgB,CAChB,CACD,CACC,wBAAwB,CACxB,KAAK,CACL,gBAAgB,CAChB,CACD,CACC,mBAAmB,CACnB,KAAK,CACL,gBAAgB,CAChB,CACD,CACC,wBAAwB,CACxB,KAAK,CACL,gBAAgB,CAChB,CACD,CACC,4BAA4B,CAC5B,KAAK,CACL,gBAAgB,CAChB,CACD,CACC,uBAAuB,CACvB,GAAG,CACH,gBAAgB,CAChB,eAAe,CACf,CACD,CACC,uBAAuB,CACvB,KAAK,CACL,gBAAgB,CAChB,CACD,CACC,oBAAoB,CACpB,KAAK,CACL,gBAAgB,CAChB,CACD,CACC,kBAAkB,CAClB,GAAG,CACH,QAAQ,CACR,CACD,CACC,sBAAsB,CACtB,KAAK,CACL,cAAc,CACd,KAAK,CACL,CACD,CACC,wBAAwB,CACxB,KAAK,CACL,cAAc,CACd,CACD,CACDyL,KAAK,CAAE,CACN,CACC,oBAAoB,CACpB,KAAK,CACL,CACC,eAAe,CACf,KAAK,CACL,KAAK,CACL,CACD,CACD,CACC,mBAAmB,CACnB,KAAK,CACL,CAAC,UAAU,CAAC,CACZ,CACD,CACC,sBAAsB,CACtB,KAAK,CACL,CAAC,eAAe,CAAE,KAAK,CAAC,CACxB,CACD,CACC,qBAAqB,CACrB,KAAK,CACL,UAAU,CACV,QAAQ,CACR,GAAG,CACH,KAAK,CACL,KAAK,CACL,KAAK,CACL,CACD,CACC,2BAA2B,CAC3B,KAAK,CACL,CAAC,UAAU,CAAC,CACZ,CACD,CACC,kBAAkB,CAClB,GAAG,CACH,KAAK,CACL,CACD,CACC,eAAe,CACf,KAAK,CACL,GAAG,CACH,CACD,CACC,2BAA2B,CAC3B,KAAK,CACL,CACC,UAAU,CACV,QAAQ,CACR,KAAK,CACL,CACD,CACD,CACC,mBAAmB,CACnB,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,CAAC,CAACxR,aAAa,CAAC,CAC1D,CAAC,CACD,qCACAxe,OAAO,CAACulB,GAAG,CAAG,CACbE,EAAE,CACFD,IACD,CAAC,CACF,CAAC,CAAC,CACF;IACF;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IACE5vC,UAAU,CAACiqB,mBAAmB,CAACkQ,YAAY,CAAC9oF,IAAI,CAAC,SAAS+4E,OAAO,CAAE,CAClE,MAAM6D,IAAI,CAAG7D,OAAO,CAAC6D,IAAI,CACzB7D,OAAO,CAACu3B,cAAc,CAAG,UAAW,CAEnC,MAAM9gD,IAAI,CAAGA,CAAC,GAAGC,IAAI,GAAK,CACzB,UAAUn0D,KAAK,CAACm0D,IAAI,CAACvvD,IAAI,CAAC,GAAG,CAAC,CAAC,CAChC,CAAC,CACD,GAAI,EAAEyuD,UAAU,CAACgD,iBAAiB,YAAYz0D,QAAQ,CAAC,CAAEsyD,IAAI,CAAC,oDAAoD,CAAC,CACnH,MAAMupB,OAAO,CAAG,IAAI,CAACA,OAAO,EAAIvpB,IAAI,CAAC,8BAA8B,CAAC,CACpE,MAAMgvC,EAAE,CAAGzlB,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K,CAACs8D,aAAa,CAAC,CAAC,CAAC,CACjC,CACA,OAAO,IAAI,CACZ,CAAC,CACD;IACH;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,KACG,MAAMmJ,wBAAwB,CAAG,SAAS9gH,IAAI,CAAE,CAC/C,IAAI05G,KAAK,CAAG+B,gBAAgB,CAACz7G,IAAI,CAAC,CAClC,GAAI05G,KAAK,CAAE,CACV,EAAEA,KAAK,CAAChB,IAAI,CACZ,OACD,CACAP,mBAAmB,CAACn4G,IAAI,CAAC,CACzB45G,wBAAwB,CAACpB,aAAa,CAACx4G,IAAI,CAAC,CAAC,CAC9C,CAAC,CACD;IACH;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,KACG,MAAM+gH,uBAAuB,CAAG,SAAS/gH,IAAI,CAAE,CAC9C,MAAM05G,KAAK,CAAG+B,gBAAgB,CAACz7G,IAAI,CAAC,CACpC,GAAI,CAAC05G,KAAK,EAAIzB,qBAAqB,CAACyB,KAAK,CAACjB,OAAO,CAAC,EAAI2B,aAAa,CAACV,KAAK,CAACjB,OAAO,CAAC,EAAIp9D,KAAK,CAAC+7D,eAAe,CAACjlE,IAAI,CAACnyC,IAAI,CAAC,CAAE,YAAY,CACpI,GAAI05G,KAAK,CAAChB,IAAI,CAAGgB,KAAK,CAACtxC,KAAK,CAAChuE,MAAM,EAAI,CAAC,GAAKs/G,KAAK,CAACtxC,KAAK,CAAChuE,MAAM,CAAE,CAChE,GAAI,EAAEs/G,KAAK,CAAChB,IAAI,EAAI,CAAC,CAAEe,aAAa,CAACC,KAAK,CAAC,CAC3C,WAAW,CACZ,CACA,OAAO,KAAK,CACb,CAAC,CACD;IACH;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;I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EAAE,CAACO,aAAa,CAACtnF,EAAE,CAAE,CAAEsK,MAAM,CAAE,IAAK,CAAC,CAAC,EAAEi1E,sBAAsB,EAAE,EAAE/nD,KAAK,EAAE,CACrG,MAAMA,KAAK,CACX,MAAMuvD,EAAE,CAACe,WAAW,CAAC9nF,EAAE,CAAC,CACxB,GAAIw3B,KAAK,EAAE6G,IAAI,CAAEtS,IAAI,CAAC,iDAAiD,CAAE,4DAA4D,CAAC,CACtI,OAAO,IAAI,CACZ,CAAC,CACD;IACH;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA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","x_google_ignoreList":[0,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,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,170,171,172,173,174,175,176,177,178]}