{"version":3,"file":"oan-data.umd.js","sources":["../node_modules/is-any-array/lib/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/xBinning.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/xSubtract.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/matrixCholeskySolver.js","../node_modules/ml-spectra-processing/lib/matrix/matrixCuthillMckee.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/xyInterpolateLinear.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/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/utils.js","../node_modules/ml-airpls/lib/index.js","../node_modules/ml-array-sequential-fill/lib/index.js","../node_modules/baselines/src/airPLS.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/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/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/lib/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-signal-processing/node_modules/ml-gsd/lib/algorithms/getMinMaxIntervals.js","../node_modules/ml-signal-processing/node_modules/ml-gsd/lib/algorithms/tryMatchOneIntervalWithMinData.js","../node_modules/ml-signal-processing/node_modules/ml-gsd/lib/algorithms/autoAlgorithm.js","../node_modules/ml-signal-processing/node_modules/ml-gsd/lib/algorithms/getPeaksFromIntervals.js","../node_modules/ml-signal-processing/node_modules/ml-gsd/lib/algorithms/xGetCrossZeroPoints.js","../node_modules/ml-signal-processing/node_modules/ml-gsd/lib/algorithms/firstDerivative.js","../node_modules/ml-signal-processing/node_modules/ml-gsd/lib/algorithms/secondDerivative.js","../node_modules/ml-signal-processing/node_modules/ml-gsd/lib/utils/optimizeTop.js","../node_modules/ml-signal-processing/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/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/median-quickselect/lib/median-quickselect.min.js","../node_modules/ml-array-median/lib/index.js","../node_modules/jcampconverter/dist/jcampconverter.js","../node_modules/common-spectrum/lib/from/fromJcamp.js","../node_modules/convert-to-jcamp/lib/utils/addInfoData.js","../node_modules/convert-to-jcamp/lib/utils/checkMatrix.js","../node_modules/convert-to-jcamp/lib/utils/checkNumberOrArray.js","../node_modules/convert-to-jcamp/lib/utils/getExtremeValues.js","../node_modules/convert-to-jcamp/lib/creatorNtuples.js","../node_modules/convert-to-jcamp/lib/utils/getFactorNumber.js","../node_modules/convert-to-jcamp/lib/utils/getBestFactor.js","../node_modules/convert-to-jcamp/lib/utils/getNumber.js","../node_modules/convert-to-jcamp/lib/utils/peakTableCreator.js","../node_modules/convert-to-jcamp/lib/utils/rescaleAndEnsureInteger.js","../node_modules/convert-to-jcamp/lib/utils/vectorEncoder.js","../node_modules/convert-to-jcamp/lib/utils/xyDataCreator.js","../node_modules/convert-to-jcamp/lib/fromJSON.js","../node_modules/convert-to-jcamp/lib/fromVariables.js","../node_modules/common-spectrum/lib/to/toJcamps.js","../node_modules/common-spectrum/lib/to/toJcamp.js","../node_modules/common-spectrum/lib/index.js","../node_modules/xlsx/xlsx.mjs","../node_modules/physical-chemistry-parser/src/hgPorosimetry/thermoFinnigan/hgParseThermoFinnigan.js","../node_modules/physical-chemistry-parser/src/oan/hitec/utils/parseRes.js","../node_modules/physical-chemistry-parser/src/oan/hitec/utils/parseXLSX.js","../node_modules/physical-chemistry-parser/src/oan/hitec/oanParseHitec.js","../node_modules/physical-chemistry-parser/src/xrf/panalytical/xrfParserPanalytical.js","../src/from/fromHitec.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 * @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 { xCheck } from \"./xCheck.js\";\n/**\n * Downsample an array by averaging consecutive non-overlapping points (binning).\n * Either specify a fixed `binSize` or a target `numberOfPoints`.\n * @param array - Input array.\n * @param options - Options.\n * @returns Downsampled array.\n */\nexport function xBinning(array, options = {}) {\n    xCheck(array);\n    const { binSize, numberOfPoints, keepFirstAndLast = true } = options;\n    const { length } = array;\n    if (numberOfPoints !== undefined) {\n        if (binSize !== undefined) {\n            throw new RangeError('binSize and numberOfPoints are mutually exclusive');\n        }\n        if (!Number.isInteger(numberOfPoints) || numberOfPoints <= 0) {\n            throw new RangeError('numberOfPoints must be a positive integer');\n        }\n        if (numberOfPoints > length) {\n            throw new RangeError('numberOfPoints must be <= array.length');\n        }\n        return binByNumberOfPoints(array, numberOfPoints, keepFirstAndLast);\n    }\n    const effectiveBinSize = binSize ?? 10;\n    if (!Number.isInteger(effectiveBinSize) || effectiveBinSize <= 0) {\n        throw new RangeError('binSize must be a positive integer');\n    }\n    if (effectiveBinSize === 1) {\n        return Float64Array.from(array);\n    }\n    if (keepFirstAndLast) {\n        if (length <= 2) {\n            return Float64Array.from(array);\n        }\n        const innerLength = length - 2;\n        const innerBinCount = Math.ceil(innerLength / effectiveBinSize);\n        const output = new Float64Array(innerBinCount + 2);\n        output[0] = array[0];\n        output[output.length - 1] = array[length - 1];\n        for (let i = 0, j = 1; i < innerLength; i += effectiveBinSize, j++) {\n            const start = i + 1;\n            const end = Math.min(start + effectiveBinSize, length - 1);\n            let sum = 0;\n            for (let k = start; k < end; k++) {\n                sum += array[k];\n            }\n            output[j] = sum / (end - start);\n        }\n        return output;\n    }\n    const outputLength = Math.ceil(length / effectiveBinSize);\n    const output = new Float64Array(outputLength);\n    for (let i = 0, j = 0; i < length; i += effectiveBinSize, j++) {\n        const end = Math.min(i + effectiveBinSize, length);\n        let sum = 0;\n        for (let k = i; k < end; k++) {\n            sum += array[k];\n        }\n        output[j] = sum / (end - i);\n    }\n    return output;\n}\nfunction binByNumberOfPoints(array, numberOfPoints, keepFirstAndLast) {\n    const { length } = array;\n    const output = new Float64Array(numberOfPoints);\n    if (keepFirstAndLast) {\n        if (numberOfPoints < 2) {\n            throw new RangeError('numberOfPoints must be >= 2 when keepFirstAndLast is true');\n        }\n        output[0] = array[0];\n        output[numberOfPoints - 1] = array[length - 1];\n        if (numberOfPoints === 2) {\n            return output;\n        }\n        const innerLength = length - 2;\n        const innerBins = numberOfPoints - 2;\n        for (let j = 0; j < innerBins; j++) {\n            const start = 1 + Math.floor((j * innerLength) / innerBins);\n            const end = 1 + Math.floor(((j + 1) * innerLength) / innerBins);\n            let sum = 0;\n            for (let k = start; k < end; k++) {\n                sum += array[k];\n            }\n            output[j + 1] = sum / (end - start);\n        }\n        return output;\n    }\n    for (let j = 0; j < numberOfPoints; j++) {\n        const start = Math.floor((j * length) / numberOfPoints);\n        const end = Math.floor(((j + 1) * length) / numberOfPoints);\n        let sum = 0;\n        for (let k = start; k < end; k++) {\n            sum += array[k];\n        }\n        output[j] = sum / (end - start);\n    }\n    return output;\n}\n//# sourceMappingURL=xBinning.js.map","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\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 * @param value - Object to check.\n * @returns True if the object is an array or a typed array.\n */\nfunction isAnyArray(value) {\n    const tag = toString.call(value);\n    return tag.endsWith('Array]') && !tag.includes('Big');\n}\n\n/**\n * Computes the maximum of the given values.\n *\n * @param input\n * @param options\n */\nfunction max(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 { fromIndex = 0, toIndex = input.length } = options;\n    if (fromIndex < 0 ||\n        fromIndex >= input.length ||\n        !Number.isInteger(fromIndex)) {\n        throw new Error('fromIndex must be a positive integer smaller than length');\n    }\n    if (toIndex <= fromIndex ||\n        toIndex > input.length ||\n        !Number.isInteger(toIndex)) {\n        throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n    }\n    let maxValue = input[fromIndex];\n    for (let i = fromIndex + 1; i < toIndex; i++) {\n        if (input[i] > maxValue)\n            maxValue = input[i];\n    }\n    return maxValue;\n}\n\n/**\n * Computes the minimum of the given values.\n */\nfunction min(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 { fromIndex = 0, toIndex = input.length } = options;\n    if (fromIndex < 0 ||\n        fromIndex >= input.length ||\n        !Number.isInteger(fromIndex)) {\n        throw new Error('fromIndex must be a positive integer smaller than length');\n    }\n    if (toIndex <= fromIndex ||\n        toIndex > input.length ||\n        !Number.isInteger(toIndex)) {\n        throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n    }\n    let minValue = input[fromIndex];\n    for (let i = fromIndex + 1; i < toIndex; i++) {\n        if (input[i] < minValue)\n            minValue = input[i];\n    }\n    return minValue;\n}\n\n/**\n * Rescale an array into a range.\n */\nfunction rescale(input, options = {}) {\n    if (!isAnyArray(input)) {\n        throw new TypeError('input must be an array');\n    }\n    else if (input.length === 0) {\n        throw new TypeError('input must not be empty');\n    }\n    let output;\n    if (options.output !== undefined) {\n        if (!isAnyArray(options.output)) {\n            throw new TypeError('output option must be an array if specified');\n        }\n        output = options.output;\n    }\n    else {\n        output = new Array(input.length);\n    }\n    const currentMin = min(input);\n    const currentMax = max(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: minValue = options.autoMinMax ? currentMin : 0, max: maxValue = options.autoMinMax ? currentMax : 1, } = options;\n    if (minValue >= maxValue) {\n        throw new RangeError('min option must be smaller than max option');\n    }\n    const factor = (maxValue - minValue) / (currentMax - currentMin);\n    for (let i = 0; i < input.length; i++) {\n        output[i] = (input[i] - currentMin) * factor + minValue;\n    }\n    return output;\n}\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(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(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(mean)) {\n          throw new TypeError('mean must be an array');\n        }\n        return varianceByRow(this, unbiased, mean);\n      }\n      case 'column': {\n        if (!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(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(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(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(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(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(array)) {\n    if (array[0] && 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(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(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(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//# sourceMappingURL=matrix.js.map\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 { isAnyArray } from 'is-any-array';\n/**\n * This function xSubtract the first array by the second array or a constant value from each element of the first array\n * @param array1 - the array that will be rotated\n * @param array2 - second array or number\n * @returns array after subtraction\n */\nexport function xSubtract(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=xSubtract.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","/*\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*/\n/**\n * Solves a system of linear equations using the Cholesky decomposition method.\n * It is a direct conversion to TS from {@link https://github.com/scijs/cholesky-solve}\n * @param nonZerosArray - The matrix in triplet form (array of arrays), where each sub-array contains three elements: row index, column index, and value.\n * @param dimension - The order of the matrix (number of rows/columns).\n * @param permutationEncoded - Optional permutation array. If provided, it will be used to permute the matrix.\n * @returns A function that takes a right-hand side vector `b` and returns the solution vector `x`, or `null` if the decomposition fails.\n */\nexport function matrixCholeskySolver(nonZerosArray, dimension, permutationEncoded) {\n    if (permutationEncoded) {\n        const pinv = new Int32Array(dimension);\n        for (let k = 0; k < dimension; k++) {\n            pinv[permutationEncoded[k]] = k;\n        }\n        // Build a permuted copy (kept as plain arrays for compatibility)\n        const mt = new Array(nonZerosArray.length);\n        for (let a = 0; a < nonZerosArray.length; ++a) {\n            const [r, c, value] = nonZerosArray[a];\n            const ar = pinv[r];\n            const ac = pinv[c];\n            mt[a] = ac < ar ? [ac, ar, value] : [ar, ac, value];\n        }\n        nonZerosArray = mt;\n    }\n    else {\n        // use a typed identity permutation\n        const p = new Int32Array(dimension);\n        for (let i = 0; i < dimension; ++i) {\n            p[i] = i;\n        }\n        permutationEncoded = p;\n    }\n    const nnz = nonZerosArray.length;\n    const ap = new Int32Array(dimension + 1);\n    const ai = new Int32Array(nnz);\n    const ax = new Float64Array(nnz);\n    const lnz = new Int32Array(dimension);\n    for (let idx = 0; idx < nnz; idx++) {\n        const col = nonZerosArray[idx][1];\n        lnz[col]++;\n    }\n    ap[0] = 0;\n    for (let i = 0; i < dimension; ++i) {\n        ap[i + 1] = ap[i] + lnz[i];\n    }\n    const colOffset = new Int32Array(dimension);\n    for (let idx = 0; idx < nnz; idx++) {\n        const e = nonZerosArray[idx];\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 Float64Array(dimension);\n    const y = new Float64Array(dimension);\n    const lp = new Int32Array(dimension + 1);\n    const parent = new Int32Array(dimension);\n    const lnzArray = new Int32Array(dimension);\n    const flag = new Int32Array(dimension);\n    const pattern = new Int32Array(dimension);\n    const bp1 = new Float64Array(dimension);\n    const x = new Float64Array(dimension);\n    ldlSymbolic(dimension, ap, ai, lp, parent, lnzArray, flag);\n    const nz = lp[dimension];\n    const lx = new Float64Array(nz);\n    const li = new Int32Array(nz);\n    const result = ldlNumeric(dimension, ap, ai, ax, lp, parent, lnzArray, li, lx, d, y, pattern, flag);\n    if (result === dimension) {\n        return (b) => {\n            ldlPerm(dimension, bp1, b, permutationEncoded);\n            ldlLsolve(dimension, bp1, lp, li, lx);\n            ldlDsolve(dimension, bp1, d);\n            ldlLTsolve(dimension, bp1, lp, li, lx);\n            ldlPermt(dimension, x, bp1, permutationEncoded);\n            return x;\n        };\n    }\n    else {\n        return null;\n    }\n}\nfunction ldlSymbolic(dimension, ap, ai, lp, parent, lnz, flag) {\n    const apLoc = ap;\n    const aiLoc = ai;\n    const parentLoc = parent;\n    const lnzLoc = lnz;\n    const flagLoc = flag;\n    for (let k = 0; k < dimension; k++) {\n        parentLoc[k] = -1;\n        flagLoc[k] = k;\n        lnzLoc[k] = 0;\n        const kk = k;\n        const p2 = apLoc[kk + 1];\n        for (let p = apLoc[kk]; p < p2; p++) {\n            let i = aiLoc[p];\n            if (i < k) {\n                for (; flagLoc[i] !== k; i = parentLoc[i]) {\n                    if (parentLoc[i] === -1)\n                        parentLoc[i] = k;\n                    lnzLoc[i]++;\n                    flagLoc[i] = k;\n                }\n            }\n        }\n    }\n    lp[0] = 0;\n    for (let k = 0; k < dimension; k++) {\n        lp[k + 1] = lp[k] + lnz[k];\n    }\n}\nfunction ldlNumeric(dimension, ap, ai, ax, lp, parent, lnz, li, lx, d, y, pattern, flag) {\n    const apLoc = ap;\n    const aiLoc = ai;\n    const axLoc = ax;\n    const lpLoc = lp;\n    const parentLoc = parent;\n    const lnzLoc = lnz;\n    const liLoc = li;\n    const lxLoc = lx;\n    const dLoc = d;\n    const yLoc = y;\n    const patternLoc = pattern;\n    const flagLoc = flag;\n    let yi, lKi;\n    for (let k = 0; k < dimension; k++) {\n        yLoc[k] = 0;\n        let top = dimension;\n        flagLoc[k] = k;\n        lnzLoc[k] = 0;\n        const kk = k;\n        const p2col = apLoc[kk + 1];\n        for (let p = apLoc[kk]; p < p2col; p++) {\n            let i = aiLoc[p];\n            if (i <= k) {\n                yLoc[i] += axLoc[p];\n                let len = 0;\n                for (; flagLoc[i] !== k; i = parentLoc[i]) {\n                    patternLoc[len++] = i;\n                    flagLoc[i] = k;\n                }\n                while (len > 0)\n                    patternLoc[--top] = patternLoc[--len];\n            }\n        }\n        dLoc[k] = yLoc[k];\n        yLoc[k] = 0;\n        for (; top < dimension; top++) {\n            const i = patternLoc[top];\n            yi = yLoc[i];\n            yLoc[i] = 0;\n            const p2 = lpLoc[i] + lnzLoc[i];\n            let p;\n            for (p = lpLoc[i]; p < p2; p++) {\n                yLoc[liLoc[p]] -= lxLoc[p] * yi;\n            }\n            lKi = yi / dLoc[i];\n            dLoc[k] -= lKi * yi;\n            liLoc[p] = k;\n            lxLoc[p] = lKi;\n            lnzLoc[i]++;\n        }\n        if (dLoc[k] === 0)\n            return k;\n    }\n    return dimension;\n}\nfunction ldlLsolve(dimension, x, lp, li, lx) {\n    const lpLoc = lp;\n    const liLoc = li;\n    const lxLoc = lx;\n    const xLoc = x;\n    for (let j = 0; j < dimension; j++) {\n        const p2 = lpLoc[j + 1];\n        for (let p = lpLoc[j]; p < p2; p++) {\n            xLoc[liLoc[p]] -= lxLoc[p] * xLoc[j];\n        }\n    }\n}\nfunction ldlDsolve(dimension, x, d) {\n    const xLoc = x;\n    const dLoc = d;\n    for (let j = 0; j < dimension; j++) {\n        xLoc[j] /= dLoc[j];\n    }\n}\nfunction ldlLTsolve(dimension, x, lp, li, lx) {\n    const lpLoc = lp;\n    const liLoc = li;\n    const lxLoc = lx;\n    const xLoc = x;\n    for (let j = dimension - 1; j >= 0; j--) {\n        const p2 = lpLoc[j + 1];\n        for (let p = lpLoc[j]; p < p2; p++) {\n            xLoc[j] -= lxLoc[p] * xLoc[liLoc[p]];\n        }\n    }\n}\nfunction ldlPerm(dimension, x, b, permutationEncoded) {\n    const perm = permutationEncoded;\n    const xLoc = x;\n    const bLoc = b;\n    for (let j = 0; j < dimension; j++) {\n        xLoc[j] = bLoc[perm[j]];\n    }\n}\nfunction ldlPermt(dimension, x, b, permutationEncoded) {\n    const perm = permutationEncoded;\n    const xLoc = x;\n    const bLoc = b;\n    for (let j = 0; j < dimension; j++) {\n        xLoc[perm[j]] = bLoc[j];\n    }\n}\n//# sourceMappingURL=matrixCholeskySolver.js.map","/**\n * The MIT License (MIT)\n *\n * Copyright (c) 2013 Mikola Lysenko\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n/**\n * The reverse Cuthill-Mckee method is a fast and effective preconditioner for reducing the bandwidth of sparse linear systems.\n * When solving a positive semidefinite linear system using Cholesky factorization, it greatly reduces fill-in.\n * It is a direct conversion to TS from {@link github.com/mikolalysenko/cuthill-mckee}\n * @param list - lower triangular non zeros from a symmetric sparse matrix.\n * @param dimension - matrix dimension\n * @returns A Float64Array where the value at each index represents the new position of the node\n *          in the bandwidth-reduced ordering.\n */\nexport function matrixCuthillMckee(list, dimension) {\n    const adj = new Array(dimension);\n    const visited = new Array(dimension).fill(false);\n    for (let i = 0; i < dimension; ++i) {\n        adj[i] = [];\n    }\n    for (const l of list) {\n        adj[l[0]].push(l[1]);\n    }\n    const toVisit = new Float64Array(dimension);\n    let eol = 0;\n    let ptr = 0;\n    for (let i = 0; i < dimension; ++i) {\n        if (visited[i]) {\n            continue;\n        }\n        toVisit[eol++] = i;\n        visited[i] = true;\n        while (ptr < eol) {\n            const v = toVisit[ptr++];\n            const nbhd = Float64Array.from(adj[v]);\n            nbhd.sort();\n            for (const u of nbhd) {\n                if (visited[u]) {\n                    continue;\n                }\n                visited[u] = true;\n                toVisit[eol++] = u;\n            }\n        }\n    }\n    const result = new Float64Array(dimension);\n    for (let i = 0; i < dimension; ++i) {\n        result[toVisit[i]] = i;\n    }\n    return result;\n}\n//# sourceMappingURL=matrixCuthillMckee.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    // @ts-expect-error -- x.at(-1) returns number | undefined but array is guaranteed non-empty here\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 * Interpolate y values at target x positions using linear interpolation.\n * This is useful for upsampling or resampling data to specific x positions.\n * Both the input data and target x values must be sorted in ascending order.\n * Uses a two-pointer approach with O(n + m) complexity.\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param xTarget - Target x positions where y values should be interpolated\n * @returns - Interpolated y values at target x positions\n */\nexport function xyInterpolateLinear(data, xTarget) {\n    xyCheck(data);\n    const { x, y } = data;\n    if (x.length === 0) {\n        return new Float64Array(0);\n    }\n    const result = new Float64Array(xTarget.length);\n    let sparseIndex = 0;\n    for (let i = 0; i < xTarget.length; i++) {\n        const targetX = xTarget[i];\n        // Move sparse index forward while we can\n        while (sparseIndex < x.length - 1 && x[sparseIndex + 1] < targetX) {\n            sparseIndex++;\n        }\n        // Handle edge cases\n        if (sparseIndex === 0 && targetX <= x[0]) {\n            // Before first point\n            if (x.length === 1) {\n                result[i] = y[0];\n            }\n            else {\n                // Extrapolate using first two points\n                const t = (targetX - x[0]) / (x[1] - x[0]);\n                result[i] = y[0] * (1 - t) + y[1] * t;\n            }\n        }\n        else if (sparseIndex >= x.length - 1) {\n            // After last point\n            result[i] = y[x.length - 1];\n        }\n        else {\n            // Normal interpolation between two points\n            const leftIdx = sparseIndex;\n            const rightIdx = sparseIndex + 1;\n            const t = (targetX - x[leftIdx]) / (x[rightIdx] - x[leftIdx]);\n            result[i] = y[leftIdx] * (1 - t) + y[rightIdx] * t;\n        }\n    }\n    return result;\n}\n//# sourceMappingURL=xyInterpolateLinear.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    const { from, to } = filter;\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 (from !== undefined) {\n        annotations.push({\n            type: 'rect',\n            position: [\n                { x: Number.MIN_SAFE_INTEGER, y: boundary.y.min },\n                { x: from, y: boundary.y.max },\n            ],\n            strokeWidth: 0,\n            fillColor: 'rgba(255,255,224,1)',\n        });\n    }\n    if (to !== undefined) {\n        annotations.push({\n            type: 'rect',\n            position: [\n                { x: 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","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","import { matrixCuthillMckee } from 'ml-spectra-processing';\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: matrixCuthillMckee(matrix, nbPoints),\n    };\n}\n//# sourceMappingURL=utils.js.map","import { matrixCholeskySolver, xAbsoluteSum, xBinning, xFindClosestIndex, xNoiseSanPlot, xSubtract, xyInterpolateLinear, } from 'ml-spectra-processing';\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 { xWork, yWork, optionsWork, shouldDownsample } = getDownSampleData(x, y, options);\n    const { weights, controlPoints } = getControlPoints(xWork, yWork, optionsWork);\n    const { maxIterations = 100, lambda = 10, tolerance = 0.001 } = optionsWork;\n    let baseline = [];\n    let iteration;\n    let sumNegDifferences = Number.MAX_SAFE_INTEGER;\n    const corrected = Float64Array.from(yWork);\n    const stopCriterion = getStopCriterion(yWork, tolerance);\n    const { length } = yWork;\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, yWork, weights);\n        const cho = matrixCholeskySolver(leftHandSide, length, permutationEncodedArray);\n        if (cho === null) {\n            throw new Error('Cholesky decomposition failed');\n        }\n        baseline = cho(rightHandSide);\n        sumNegDifferences = applyCorrection(yWork, 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        for (let i = 1; i < l; i++) {\n            const diff = Math.abs(corrected[i]);\n            if (controlPoints[i] < 1 && diff > threshold * 2) {\n                weights[i] = 0;\n            }\n            else {\n                weights[i] = Math.exp(-((diff / threshold) ** 2));\n            }\n        }\n        weights[0] = 1;\n        weights[l] = 1;\n    }\n    // Interpolate results back to original resolution if downsampling was applied\n    let finalBaseline = baseline;\n    let finalCorrected = corrected;\n    if (shouldDownsample) {\n        finalBaseline = xyInterpolateLinear({ x: xWork, y: baseline }, x);\n        finalCorrected = xSubtract(y, finalBaseline);\n    }\n    return {\n        corrected: finalCorrected,\n        baseline: finalBaseline,\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 getDownSampleData(x, y, options = {}) {\n    const { autoDownsample = false, maxResolution = 5000, controlPoints, } = options;\n    const shouldDownsample = autoDownsample && y.length > maxResolution;\n    if (!shouldDownsample) {\n        return { xWork: x, yWork: y, optionsWork: options, shouldDownsample };\n    }\n    const binSize = getDownsampleFactor(y.length, maxResolution);\n    const xWork = xBinning(x, {\n        binSize,\n        keepFirstAndLast: true,\n    });\n    const yWork = xBinning(y, {\n        binSize,\n        keepFirstAndLast: true,\n    });\n    let optionsWork = options;\n    // Downsample controlPoints if provided, to match downsampled x and y\n    if (controlPoints) {\n        const downsampledControlPoints = new Int8Array(xWork.length);\n        for (let i = 0; i < x.length; i++) {\n            if (controlPoints[i] > 0) {\n                const closestIndex = xFindClosestIndex(xWork, x[i]);\n                downsampledControlPoints[closestIndex] = 1;\n            }\n        }\n        optionsWork = {\n            ...options,\n            controlPoints: downsampledControlPoints,\n        };\n    }\n    return { xWork, yWork, optionsWork, shouldDownsample };\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(1) } = 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,\n        controlPoints,\n    };\n}\n/**\n * Calculate the downsampling factor to reduce data to target resolution.\n * @param originalLength - Original data length.\n * @param targetResolution - Target number of points.\n * @returns Downsampling factor.\n */\nfunction getDownsampleFactor(originalLength, targetResolution) {\n    return Math.max(1, Math.ceil(originalLength / targetResolution));\n}\n//# sourceMappingURL=index.js.map","import { isAnyArray } from 'is-any-array';\nfunction sequentialFill(input, options = {}) {\n    if (!isAnyArray(input)) {\n        if (typeof input === 'object') {\n            options = input ?? {};\n        }\n        input = [];\n    }\n    if (!isAnyArray(input)) {\n        throw new TypeError('input must be an array');\n    }\n    let { from = 0, size = input.length, step } = options;\n    const { to = 10 } = options;\n    if (size !== 0 && step) {\n        throw new Error('step is defined by the array size');\n    }\n    if (!size) {\n        if (step) {\n            size = Math.floor((to - from) / step) + 1;\n        }\n        else {\n            size = to - from + 1;\n        }\n    }\n    if (!step && size) {\n        step = (to - from) / (size - 1);\n    }\n    if (typeof step !== 'number') {\n        throw new TypeError('No checks initialized the step');\n    }\n    if (Array.isArray(input)) {\n        // only works with normal array\n        input.length = 0;\n        for (let i = 0; i < size; i++) {\n            input.push(from);\n            from += step;\n        }\n    }\n    else {\n        if (input.length !== size) {\n            throw new Error('sequentialFill typed array must have the correct length');\n        }\n        for (let i = 0; i < size; i++) {\n            input[i] = from;\n            from += step;\n        }\n    }\n    return input;\n}\nexport default sequentialFill;\n//# sourceMappingURL=index.js.map","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","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    degree;\n    powers;\n    coefficients;\n    /**\n     * Build a polynomial regression model from the given data set.\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     * @param options - regression options\n     * @example `new PolynomialRegression(x, y, 2)`, in this case, you can pass the option `interceptAtZero`, if you need it.\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     */\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        const { coefficients, powers } = this;\n        let y = 0;\n        for (let k = 0; k < powers.length; k++) {\n            const coefficient = coefficients[k] ?? 0;\n            const power = powers[k] ?? 0;\n            y += coefficient * x ** power;\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            const coefficient = this.coefficients[k] ?? 0;\n            const power = this.powers[k] ?? 0;\n            if (coefficient !== 0) {\n                if (power === 0) {\n                    str = maybeToPrecision(coefficient, precision);\n                }\n                else if (power === 1) {\n                    str = `${maybeToPrecision(coefficient, precision) + times}x`;\n                }\n                else {\n                    str = `${maybeToPrecision(coefficient, precision) + times}x${sup}${power}${closeSup}`;\n                }\n                if (coefficient > 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 - regression options\n * @returns degree, powers and coefficients of the fitted polynomial\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;\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;\n    const F = new Matrix(n, nCoefficients);\n    const Y = new Matrix([Array.from(y)]);\n    for (let k = 0; k < nCoefficients; k++) {\n        const power = powers[k] ?? 0;\n        for (let i = 0; i < n; i++) {\n            if (power === 0) {\n                F.set(i, k, 1);\n            }\n            else {\n                F.set(i, k, (x[i] ?? 0) ** power);\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","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","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 * @param options - Options controlling window size, derivative and polynomial order.\n * @returns 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 (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 * Compute the full weights matrix for every position inside the window.\n * @param m - Number of points.\n * @param n - Polynomial grade.\n * @param s - Derivative.\n * @returns Array of Float64Array weight vectors, one per position in the window.\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","/**\n * Compute the `[left, right]` intervals around each peak by locating\n * consecutive extrema (minima / maxima) of the first derivative.\n * @param y - Spectrum y values.\n * @param x - Spectrum x values.\n * @param dY - First derivative of `y`.\n * @param dX - Sign of the x step (positive for increasing x, negative otherwise).\n * @returns `intervalL` / `intervalR` arrays defining each peak's inflection-point bounds.\n */\nexport 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","/**\n * Find the `minData` index closest to the center of one interval,\n * above the intensity threshold and bounded by the half-width.\n * @param options - Interval, candidate indices and spectrum data.\n * @returns The picked candidate (`possible`) and the last visited index (`lastIndex`).\n */\nexport 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\";\n/**\n * Peak detection that combines first-derivative zero-crossings and\n * second-derivative local minima to find peaks inside each interval.\n * @param input - Spectrum values together with its first and second derivatives.\n * @returns The detected peaks.\n */\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 = -1;\n    let lastJ = -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\";\n/**\n * Build the list of detected peaks by matching each `[left, right]` interval\n * with the best candidate index from `minData`.\n * @param options - Intervals, candidate indices and spectrum data.\n * @returns The detected peaks.\n */\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, 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 * @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\";\n/**\n * Detect peaks using zero-crossings of the first derivative.\n * @param input - Spectrum values and its first/second derivatives.\n * @returns The detected peaks.\n */\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\";\n/**\n * Detect peaks using local minima of the second derivative (inflection points).\n * @param input - Spectrum values and its first/second derivatives.\n * @returns The detected peaks.\n */\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 * Refine the `x` and `y` coordinates of each peak by running a quadratic\n * interpolation over the peak and its 3 closest neighbors.\n * The correction is performed in place.\n * @param data - Object with `x` and `y` arrays.\n * @param peaks - Peaks to refine (mutated in place).\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        // Quadratic interpolation on log-intensities to refine the peak top.\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 = Math.log10(y[currentIndex - 1]);\n            const beta = Math.log10(y[currentIndex]);\n            const gamma = 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 with `x` and `y` arrays. `x` must be monotone increasing.\n * @param options - Peak detection options.\n * @returns The detected peaks, sorted by ascending `x`.\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    // Copy so the `maxCriteria` / clipping loops below don't mutate the caller's array.\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    for (const peak of peaks) {\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","(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","/// <reference path=\"median-quickselect.d.ts\" />\nimport { isAnyArray } from 'is-any-array';\nimport quickSelectMedian from 'median-quickselect';\nexport default function median(input) {\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    return quickSelectMedian(input.slice());\n}\n//# sourceMappingURL=index.js.map","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/),f=[],i=[],n=[],l={title:\"\",jcamp:\"\",children:[]},s=0,c=e.includes(\"## \");for(let u=0;u<o.length;u++){let b=o[u],p=c?b.replaceAll(\" \",\"\"):b;if(p.startsWith(\"##NTUPLES\")&&s++,p.startsWith(\"##TITLE\")){let r=[p.slice(8).trim()];for(let a=u+1;a<o.length&&!o[a].startsWith(\"##\");a++)r.push(o[a].trim());l={title:r.join(`\n`),jcamp:`${b}\n`,children:[]},i.push(l),f.push(l)}else if(p.startsWith(\"##END\")&&s===0&&l){l.jcamp+=`${b}\n`;let r=i.pop();if(!r)throw new Error(\"Not finished\");l=i.at(-1),l!==void 0?l.children?.push(r):n.push(r)}else if(l?.jcamp){l.jcamp+=`${b}\n`;let r=p.match(/^##(.*?)=(.+)/);if(r){let a=r[1].replaceAll(/[ _-]/g,\"\").toUpperCase();a===\"DATATYPE\"?l.dataType=r[2].trim():a===\"DATACLASS\"?l.dataClass=r[2].trim():a===\"JCAMPDX\"?l.jcampDX=E(r[2].trim()):a===\"JCAMPCS\"&&(l.jcampCS=E(r[2].trim()))}}p.startsWith(\"##END\")&&s>0&&s--}if(t){for(let u of f)u.children=void 0;return f}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)}}},f=[];for(let i of te){let n=k(i);m[0][n]&&(f.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 l of f)o.series[l].data[i]=Number(n[l]);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 f=e.yFactor??1,i=e.xFactor??1,n=e.deltaX??1,l=Math.abs(n*.1),s=.01;e.isXYdata=!0;let c={x:[],y:[]};e.data=c;let u=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(u-n-h)>l&&(Math.abs(u-h)<l?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: ${u}.`):Math.abs(u-n-h)>10*l?o.trace(`Data line ${d}: The difference between the first value ${h} and the expected first x value ${u} 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 ${u} based on increment after a DIFFERENCE is too high`)):Math.abs(u-h)>l&&o.trace(`Data line ${d}: The difference between the first value ${h} and the first x value ${u} 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,c.x.push(u),c.y.push(b*f),u+=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?ue(e,m,t):ce(e,m,t),e.variables)for(let o in e.variables)e.variables[o].data=e.data?.[o]}function ue(e,m,t){let{logger:o}=t,f={x:[],y:[]};e.data=f;let i=m.split(/,? *,?[;\\r\\n]+ */);for(let n=1;n<i.length;n++){let l=i[n].trim().replace($,\"\").split(oe);if(l.length%2===0)for(let s=0;s<l.length;s=s+2)e.xFactor!==void 0&&e.yFactor!==void 0&&(f.x.push(Number(l[s])*e.xFactor),f.y.push(Number(l[s+1])*e.yFactor));else o?.warn(`Format error: ${l.toString()}`)}}function ce(e,m,t){let{logger:o}=t,f={},i=Object.keys(e.variables),n=i.length;for(let s of i)f[s]=[];e.data=f;let l=m.split(/,? *,?[;\\r\\n]+ */);for(let s=1;s<l.length;s++){let c=l[s].trim().replace($,\"\").split(oe);if(c.length%n===0)for(let u=0;u<c.length;u++)f[i[u%n]].push(Number(c[u]));else o?.warn(`Wrong number of columns: ${c.toString()}`)}}function B(e,m){e.isXYAdata=!0;let t={};e.data=t;let o=m.split(/\\r?\\n/),f=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 l=0;l<f.length;l++){let s=n[l];switch(f[l]){case\"x\":case\"y\":case\"w\":s=Number.parseFloat(s);break;case\"a\":s=s.replace(/^<(.*)>$/,\"$1\");break;case\"m\":break;default:continue}t[f[l]]||(t[f[l]]=[]),t[f[l]].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,f=m.length,i=m[0].data.x.length||0,n=new Array(f);for(let r=0;r<f;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 l=m[0].data.x[0],s=m[0].data.x.at(-1),{firstY:c,lastY:u}=pe(e);if(l>s)for(let r of n)r.reverse();c>u&&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(l,s),maxX:Math.max(l,s),minY:Math.min(c,u),maxY:Math.max(c,u),minZ:t,maxZ:o,noise:p}}function pe(e){let{spectra:m,ntuples:t,info:o}=e;if(t)for(let f of t){let{symbol:i,nucleus:n,units:l}=f;if(i.match(/[F|T]1/)&&l?.toUpperCase().match(\"HZ\")){let s=se(o[\".OBSERVEFREQUENCY\"]),{nucleus:c}=t.find(d=>d.symbol.match(/[F|T]2/));if([s,c,n].some(d=>!d))break;let u=ie(c),b=ie(n),{first:p,last:r}=f,a=b!==null&&u!==null?s*b/u: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,f,i,n,l,s,c,u,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++)f=_[T],i=_[T+1],n=ee[T],l=ee[T+1],s=f>y,c=i>y,u=n>y,b=l>y,s!==c&&s!==u&&(a=T+(y-f)/(i-f),d=v,g=T,A=v+(y-f)/(n-f),D.push(a*S+x,d*X+C,g*S+x,A*X+C)),b!==c&&b!==u&&(a=T+1,d=v+1-(y-l)/(i-l),g=T+1-(y-l)/(n-l),A=v+1,D.push(a*S+x,d*X+C,g*S+x,A*X+C)),c!==u&&(a=(T+1-(y-i)/(n-i))*S+x,d=(v+(y-i)/(n-i))*X+C,c!==s&&(g=T+1-(y-i)/(f-i),A=v,D.push(a,d,g*S+x,A*X+C)),u!==s&&(g=T,A=v+1-(y-n)/(f-n),D.push(a,d,g*S+x,A*X+C)),c!==b&&(g=T+1,A=v+(y-i)/(l-i),D.push(a,d,g*S+x,A*X+C)),u!==b&&(g=T+(y-n)/(l-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,f=0;for(let i of t.spectra){if(t.ntuples?.symbol?(!o&&i.observeFrequency&&(o=i.observeFrequency),!f&&i.shiftOffsetVal&&(f=i.shiftOffsetVal)):(o=i.observeFrequency,f=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(f&&i.xUnits.toLowerCase().includes(\"ppm\")&&i.firstX!==void 0&&i.lastX!==void 0){let n=i.firstX-f;if(i.firstX=i.firstX-n,i.lastX=i.lastX-n,i.data)for(let l=0;l<i.data.x.length;l++)i.data.x[l]-=n}if(t.ntuples?.nucleus&&t.ntuples.symbol)for(let n=0;n<t.ntuples.nucleus.length;n++){let l=t.ntuples.symbol[n],s=t.ntuples.nucleus[n];if(l.match(/^[F|T]/)&&!s){if(l.match(/[F|T]1/))if(t.tmp.$NUC2&&typeof t.tmp.$NUC2==\"string\")t.ntuples.nucleus[n]=t.tmp.$NUC2;else{let c=t.ntuples.symbol.indexOf(l.replace(/^([F|T]).*/,\"$12\"));c&&t.ntuples.nucleus[c]&&(t.ntuples.nucleus[n]=t.ntuples.nucleus[c])}l.match(/[F|T]2/)&&typeof t.tmp.$NUC1==\"string\"&&(t.ntuples.nucleus[n]=t.tmp.$NUC1)}l.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=\"\",l=t.ntuples.symbol.indexOf(i.pageSymbol);t.ntuples.units?.[l]&&(n=t.ntuples.units[l]);let{nucleus:s}=t.ntuples;if(!n.toLowerCase().match(/(ppm|seconds)/)&&s.length>1){if(l!==0){let p=\"Not sure about this ntuples format\";if(m){m.warn(p);continue}else throw new Error(p)}let{nucleus:c}=t.ntuples,u=W(c[0]),b=W(c[1]);if(!u||!b){let p=`Problem with determination of gyromagnetic ratio for ${c.join(\"-\")}`;if(m)m.error(p);else throw new Error(p)}else{let p=u/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 f=[],i=Object.keys(o.ntuples);for(let n of i){let l=o.ntuples[n];if(l)for(let s=0;s<l.length;s++)f[s]||(f[s]={}),f[s][n]=l[s]}o.ntuples=f}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 f=t.meta[o];if(typeof f==\"string\"){if(f.startsWith(\"{\")){if(!f.includes(\":\")&&f.endsWith(\"}\")){let i=f.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(f.startsWith(\"(\")){let i=f.split(/\\r?\\n/),n=/^\\((?<from>\\d+)\\.\\.(?<to>\\d+)\\).*$/;if(n.test(i[0])){let[l,s]=i[0].match(n)?.slice(1).map(Number)??[],c=i.slice(1).join(\" \").split(/[,; ]+/).filter(Boolean);for(let u=l;u<=s;u++)m.dynamicTyping&&typeof c[u-l]==\"string\"?t.meta[o+String(u)]=le(c[u-l]):t.meta[o+String(u)]=c[u-l]}}}}}function K(e,m,t){let o=-1,f=-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 l of t){let s=l.toLowerCase(),c=e.ntuples.symbol?.indexOf(l)||0;if(c===-1)throw new Error(`Symbol undefined: ${l}`);m.variables[s]={};for(let u in e.ntuples)e.ntuples[u]?.[c]&&(m.variables[s][u.replace(/^var/,\"\")]=e.ntuples[u]?.[c])}}o=e.ntuples.symbol?.indexOf(i)??-1,f=e.ntuples.symbol?.indexOf(n)??-1,o===-1&&(o=0),f===-1&&(f=0),e.ntuples.first&&(e.ntuples.first.length>o&&(m.firstX=e.ntuples.first[o]),e.ntuples.first.length>f&&(m.firstY=e.ntuples.first[f])),e.ntuples.last&&(e.ntuples.last.length>o&&(m.lastX=e.ntuples.last[o]),e.ntuples.last.length>f&&(m.lastY=e.ntuples.last[f])),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>f&&(m.yFactor=e.ntuples.factor[f])),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>f&&(e.ntuples.varname?.[f]?m.yUnits=`${e.ntuples.varname[f]} [${e.ntuples.units[f]}]`:m.yUnits=e.ntuples.units[f]))}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=[],f={entries:[],flatten:[]},i={children:[],spectra:[],ntuples:{},info:{},meta:{},tmp:{}},n=i,l=[],s={data:{}};t.logger?.trace({profiling:!0},\"Before split to LDRS\");let c=e.replaceAll(/[\\r\\n]+##/g,`\n##`).split(`\n##`);t.logger?.trace({profiling:!0},\"Split to LDRS\"),c[0]&&(c[0]=c[0].replace(/^[\\r\\n ]*##/,\"\"));for(let u of c){let b=u.indexOf(\"=\"),p=b>0?u.slice(0,Math.max(0,b)):u,r=b>0?p.match(t.noTrimRegExp)?u.slice(Math.max(0,b+1)):u.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),l.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=l.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,f,t),t.logger?.trace({profiling:!0},\"Total time\"),f.entries=i.children||[],f.flatten=o,t.logger){t.logger.debug(\"Finished jcamp conversion\");for(let u of f.flatten)t.logger.debug(`${u.dataType} - ${u.title}`)}return f}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 f=xe(e.info.ATOMLIST),i=Ae(e.info.BONDLIST),n=Ne(e.info.CHARGE,t),l=Se(e.info.XYRASTER,t),s=Ce(e.info.STEREOCENTER,t),c=ye(o,{atoms:f,bonds:i,charges:n,xyRasters:l,stereocenters:s},t);return{molecule:c,molfile:c.toMolfile()}}function ye(e,m,t){let{atoms:o,bonds:f,charges:i,xyRasters:n,stereocenters:l}=m,s={S:e.Molecule.cBondTypeSingle,D:e.Molecule.cBondTypeDouble,T:e.Molecule.cBondTypeTriple,Q:e.Molecule.cBondTypeQuadruple},c={},u=new e.Molecule(o.length,f.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\")),c[p.atomNumber]=u.addAtom(r),u.setAtomMapNo(c[p.atomNumber],p.atomNumber,!1)}for(let p of f){if(c[p.atomNumber1]===void 0){t?.error(`A bond goes from atomNumber ${p.atomNumber1} that does not exists`);continue}if(c[p.atomNumber2]===void 0){t?.error(`A bond goes to atomNumber ${p.atomNumber2} that does not exists`);continue}let r=u.addBond(c[p.atomNumber1],c[p.atomNumber2]);u.setBondType(r,s[p.bondType])}for(let p of i){if(c[p.atomNumber]===void 0){t?.error(`A charge goes to atomNumber ${p.atomNumber} that does not exists`);continue}u.setAtomCharge(c[p.atomNumber],p.value)}let b=n.length===0||l.length>0;for(let p of n){if(c[p.atomNumber]===void 0){t?.error(`A XYRASTER goes to atomNumber ${p.atomNumber} that does not exists`);continue}u.setAtomX(c[p.atomNumber],p.x),u.setAtomY(c[p.atomNumber],p.y),u.setAtomZ(c[p.atomNumber],p.z)}u.ensureHelperArrays(e.Molecule.cHelperParities);for(let p of l){let{atomNumber:r,type:a}=p,d=c[r];if(d===void 0){t?.error(`A stereocenter goes to atomNumber ${r} that does not exists`);continue}if(!u.isAtomStereoCenter(d)){t?.warn(`Want to set chirality of atom number ${r} but it is not a stereocenter`);continue}if(u.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;u.setAtomParity(c[r],x,!1)}return u.ensureHelperArrays(e.Molecule.cHelperParities),b&&u.inventCoordinates({keepHydrogens:!0}),u}function xe(e){let m=P(e),t=[];for(let o of m){let[f,i,n]=o.trim().split(/\\s+/);t.push({atomNumber:Number(f),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[f,i,n]=o.trim().split(/\\s+/);t.push({atomNumber1:Number(f),atomNumber2:Number(i),bondType:n})}return t}function Ne(e,m){if(!e)return[];let t=P(e),o=[];for(let f of t){let[i,n,l]=f.trim().split(/\\s+/);l!==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 f of t){let[i,n,l,s]=f.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(l),z:s!==void 0?Number(s):0})}return o}function Ce(e,m){if(!e)return[];let t=P(e),o=[];for(let f of t){let[i,n]=f.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","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.js\";\nimport { checkNumberOrArray } from \"./checkNumberOrArray.js\";\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.js\";\nimport { getExtremeValues } from \"./utils/getExtremeValues.js\";\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.js\";\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.js\";\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        case undefined:\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.js\";\nimport { vectorEncoder } from \"./vectorEncoder.js\";\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.js\";\nimport { getBestFactor } from \"./utils/getBestFactor.js\";\nimport { peakTableCreator } from \"./utils/peakTableCreator.js\";\nimport { xyDataCreator } from \"./utils/xyDataCreator.js\";\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.js\";\nimport { fromJSON } from \"./fromJSON.js\";\nimport { checkNumberOrArray } from \"./utils/checkNumberOrArray.js\";\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","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","/*! xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*exported XLSX */\n/*global process:false, Buffer:false, ArrayBuffer:false, DataView:false, Deno:false */\nvar XLSX = {};\nXLSX.version = '0.18.5';\nvar current_codepage = 1200, current_ansi = 1252;\n\nvar VALID_ANSI = [ 874, 932, 936, 949, 950, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 10000 ];\n/* ECMA-376 Part I 18.4.1 charset to codepage mapping */\nvar CS2CP = ({\n\t/*::[*/0/*::]*/:    1252, /* ANSI */\n\t/*::[*/1/*::]*/:   65001, /* DEFAULT */\n\t/*::[*/2/*::]*/:   65001, /* SYMBOL */\n\t/*::[*/77/*::]*/:  10000, /* MAC */\n\t/*::[*/128/*::]*/:   932, /* SHIFTJIS */\n\t/*::[*/129/*::]*/:   949, /* HANGUL */\n\t/*::[*/130/*::]*/:  1361, /* JOHAB */\n\t/*::[*/134/*::]*/:   936, /* GB2312 */\n\t/*::[*/136/*::]*/:   950, /* CHINESEBIG5 */\n\t/*::[*/161/*::]*/:  1253, /* GREEK */\n\t/*::[*/162/*::]*/:  1254, /* TURKISH */\n\t/*::[*/163/*::]*/:  1258, /* VIETNAMESE */\n\t/*::[*/177/*::]*/:  1255, /* HEBREW */\n\t/*::[*/178/*::]*/:  1256, /* ARABIC */\n\t/*::[*/186/*::]*/:  1257, /* BALTIC */\n\t/*::[*/204/*::]*/:  1251, /* RUSSIAN */\n\t/*::[*/222/*::]*/:   874, /* THAI */\n\t/*::[*/238/*::]*/:  1250, /* EASTEUROPE */\n\t/*::[*/255/*::]*/:  1252, /* OEM */\n\t/*::[*/69/*::]*/:   6969  /* MISC */\n}/*:any*/);\n\nvar set_ansi = function(cp/*:number*/) { if(VALID_ANSI.indexOf(cp) == -1) return; current_ansi = CS2CP[0] = cp; };\nfunction reset_ansi() { set_ansi(1252); }\n\nvar set_cp = function(cp/*:number*/) { current_codepage = cp; set_ansi(cp); };\nfunction reset_cp() { set_cp(1200); reset_ansi(); }\n\nfunction char_codes(data/*:string*/)/*:Array<number>*/ { var o/*:Array<number>*/ = []; for(var i = 0, len = data.length; i < len; ++i) o[i] = data.charCodeAt(i); return o; }\n\nfunction utf16leread(data/*:string*/)/*:string*/ {\n\tvar o/*:Array<string>*/ = [];\n\tfor(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i) + (data.charCodeAt(2*i+1)<<8));\n\treturn o.join(\"\");\n}\nfunction utf16beread(data/*:string*/)/*:string*/ {\n\tvar o/*:Array<string>*/ = [];\n\tfor(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i+1) + (data.charCodeAt(2*i)<<8));\n\treturn o.join(\"\");\n}\n\nvar debom = function(data/*:string*/)/*:string*/ {\n\tvar c1 = data.charCodeAt(0), c2 = data.charCodeAt(1);\n\tif(c1 == 0xFF && c2 == 0xFE) return utf16leread(data.slice(2));\n\tif(c1 == 0xFE && c2 == 0xFF) return utf16beread(data.slice(2));\n\tif(c1 == 0xFEFF) return data.slice(1);\n\treturn data;\n};\n\nvar _getchar = function _gc1(x/*:number*/)/*:string*/ { return String.fromCharCode(x); };\nvar _getansi = function _ga1(x/*:number*/)/*:string*/ { return String.fromCharCode(x); };\n\nvar $cptable;\nfunction set_cptable(cptable) {\n\t$cptable = cptable;\n\tset_cp = function(cp/*:number*/) { current_codepage = cp; set_ansi(cp); };\n\tdebom = function(data/*:string*/) {\n\t\tif(data.charCodeAt(0) === 0xFF && data.charCodeAt(1) === 0xFE) { return $cptable.utils.decode(1200, char_codes(data.slice(2))); }\n\t\treturn data;\n\t};\n\t_getchar = function _gc2(x/*:number*/)/*:string*/ {\n\t\tif(current_codepage === 1200) return String.fromCharCode(x);\n\t\treturn $cptable.utils.decode(current_codepage, [x&255,x>>8])[0];\n\t};\n\t_getansi = function _ga2(x/*:number*/)/*:string*/ {\n\t\treturn $cptable.utils.decode(current_ansi, [x])[0];\n\t};\n\tcpdoit();\n}\nexport { set_cptable };\nvar DENSE = null;\nvar DIF_XL = true;\nvar Base64_map = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nfunction Base64_encode(input) {\n  var o = \"\";\n  var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0;\n  for (var i = 0; i < input.length; ) {\n    c1 = input.charCodeAt(i++);\n    e1 = c1 >> 2;\n    c2 = input.charCodeAt(i++);\n    e2 = (c1 & 3) << 4 | c2 >> 4;\n    c3 = input.charCodeAt(i++);\n    e3 = (c2 & 15) << 2 | c3 >> 6;\n    e4 = c3 & 63;\n    if (isNaN(c2)) {\n      e3 = e4 = 64;\n    } else if (isNaN(c3)) {\n      e4 = 64;\n    }\n    o += Base64_map.charAt(e1) + Base64_map.charAt(e2) + Base64_map.charAt(e3) + Base64_map.charAt(e4);\n  }\n  return o;\n}\nfunction Base64_decode(input) {\n  var o = \"\";\n  var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0;\n  input = input.replace(/[^\\w\\+\\/\\=]/g, \"\");\n  for (var i = 0; i < input.length; ) {\n    e1 = Base64_map.indexOf(input.charAt(i++));\n    e2 = Base64_map.indexOf(input.charAt(i++));\n    c1 = e1 << 2 | e2 >> 4;\n    o += String.fromCharCode(c1);\n    e3 = Base64_map.indexOf(input.charAt(i++));\n    c2 = (e2 & 15) << 4 | e3 >> 2;\n    if (e3 !== 64) {\n      o += String.fromCharCode(c2);\n    }\n    e4 = Base64_map.indexOf(input.charAt(i++));\n    c3 = (e3 & 3) << 6 | e4;\n    if (e4 !== 64) {\n      o += String.fromCharCode(c3);\n    }\n  }\n  return o;\n}\nvar has_buf = /*#__PURE__*/(function() { return typeof Buffer !== 'undefined' && typeof process !== 'undefined' && typeof process.versions !== 'undefined' && !!process.versions.node; })();\n\nvar Buffer_from = /*#__PURE__*/(function() {\n\tif(typeof Buffer !== 'undefined') {\n\t\tvar nbfs = !Buffer.from;\n\t\tif(!nbfs) try { Buffer.from(\"foo\", \"utf8\"); } catch(e) { nbfs = true; }\n\t\treturn nbfs ? function(buf, enc) { return (enc) ? new Buffer(buf, enc) : new Buffer(buf); } : Buffer.from.bind(Buffer);\n\t}\n\treturn function() {};\n})();\n\n\nfunction new_raw_buf(len/*:number*/) {\n\t/* jshint -W056 */\n\tif(has_buf) return Buffer.alloc ? Buffer.alloc(len) : new Buffer(len);\n\treturn typeof Uint8Array != \"undefined\" ? new Uint8Array(len) : new Array(len);\n\t/* jshint +W056 */\n}\n\nfunction new_unsafe_buf(len/*:number*/) {\n\t/* jshint -W056 */\n\tif(has_buf) return Buffer.allocUnsafe ? Buffer.allocUnsafe(len) : new Buffer(len);\n\treturn typeof Uint8Array != \"undefined\" ? new Uint8Array(len) : new Array(len);\n\t/* jshint +W056 */\n}\n\nvar s2a = function s2a(s/*:string*/)/*:any*/ {\n\tif(has_buf) return Buffer_from(s, \"binary\");\n\treturn s.split(\"\").map(function(x/*:string*/)/*:number*/{ return x.charCodeAt(0) & 0xff; });\n};\n\nfunction s2ab(s/*:string*/)/*:any*/ {\n\tif(typeof ArrayBuffer === 'undefined') return s2a(s);\n\tvar buf = new ArrayBuffer(s.length), view = new Uint8Array(buf);\n\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\n\treturn buf;\n}\n\nfunction a2s(data/*:any*/)/*:string*/ {\n\tif(Array.isArray(data)) return data.map(function(c) { return String.fromCharCode(c); }).join(\"\");\n\tvar o/*:Array<string>*/ = []; for(var i = 0; i < data.length; ++i) o[i] = String.fromCharCode(data[i]); return o.join(\"\");\n}\n\nfunction a2u(data/*:Array<number>*/)/*:Uint8Array*/ {\n\tif(typeof Uint8Array === 'undefined') throw new Error(\"Unsupported\");\n\treturn new Uint8Array(data);\n}\n\nfunction ab2a(data/*:ArrayBuffer|Uint8Array*/)/*:Array<number>*/ {\n\tif(typeof ArrayBuffer == 'undefined') throw new Error(\"Unsupported\");\n\tif(data instanceof ArrayBuffer) return ab2a(new Uint8Array(data));\n\t/*:: if(data instanceof ArrayBuffer) throw new Error(\"unreachable\"); */\n\tvar o = new Array(data.length);\n\tfor(var i = 0; i < data.length; ++i) o[i] = data[i];\n\treturn o;\n}\n\nvar bconcat = has_buf ? function(bufs) { return Buffer.concat(bufs.map(function(buf) { return Buffer.isBuffer(buf) ? buf : Buffer_from(buf); })); } : function(bufs) {\n\tif(typeof Uint8Array !== \"undefined\") {\n\t\tvar i = 0, maxlen = 0;\n\t\tfor(i = 0; i < bufs.length; ++i) maxlen += bufs[i].length;\n\t\tvar o = new Uint8Array(maxlen);\n\t\tvar len = 0;\n\t\tfor(i = 0, maxlen = 0; i < bufs.length; maxlen += len, ++i) {\n\t\t\tlen = bufs[i].length;\n\t\t\tif(bufs[i] instanceof Uint8Array) o.set(bufs[i], maxlen);\n\t\t\telse if(typeof bufs[i] == \"string\") { throw \"wtf\"; }\n\t\t\telse o.set(new Uint8Array(bufs[i]), maxlen);\n\t\t}\n\t\treturn o;\n\t}\n\treturn [].concat.apply([], bufs.map(function(buf) { return Array.isArray(buf) ? buf : [].slice.call(buf); }));\n};\n\nfunction utf8decode(content/*:string*/) {\n\tvar out = [], widx = 0, L = content.length + 250;\n\tvar o = new_raw_buf(content.length + 255);\n\tfor(var ridx = 0; ridx < content.length; ++ridx) {\n\t\tvar c = content.charCodeAt(ridx);\n\t\tif(c < 0x80) o[widx++] = c;\n\t\telse if(c < 0x800) {\n\t\t\to[widx++] = (192|((c>>6)&31));\n\t\t\to[widx++] = (128|(c&63));\n\t\t} else if(c >= 0xD800 && c < 0xE000) {\n\t\t\tc = (c&1023)+64;\n\t\t\tvar d = content.charCodeAt(++ridx)&1023;\n\t\t\to[widx++] = (240|((c>>8)&7));\n\t\t\to[widx++] = (128|((c>>2)&63));\n\t\t\to[widx++] = (128|((d>>6)&15)|((c&3)<<4));\n\t\t\to[widx++] = (128|(d&63));\n\t\t} else {\n\t\t\to[widx++] = (224|((c>>12)&15));\n\t\t\to[widx++] = (128|((c>>6)&63));\n\t\t\to[widx++] = (128|(c&63));\n\t\t}\n\t\tif(widx > L) {\n\t\t\tout.push(o.slice(0, widx));\n\t\t\twidx = 0;\n\t\t\to = new_raw_buf(65535);\n\t\t\tL = 65530;\n\t\t}\n\t}\n\tout.push(o.slice(0, widx));\n\treturn bconcat(out);\n}\n\nvar chr0 = /\\u0000/g, chr1 = /[\\u0001-\\u0006]/g;\n/*::\ndeclare type Block = any;\ndeclare type BufArray = {\n\tnewblk(sz:number):Block;\n\tnext(sz:number):Block;\n\tend():any;\n\tpush(buf:Block):void;\n};\n\ntype RecordHopperCB = {(d:any, Rn:string, RT:number):?boolean;};\n\ntype EvertType = {[string]:string};\ntype EvertNumType = {[string]:number};\ntype EvertArrType = {[string]:Array<string>};\n\ntype StringConv = {(string):string};\n\n*/\n/* ssf.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/*jshint -W041 */\nfunction _strrev(x/*:string*/)/*:string*/ { var o = \"\", i = x.length-1; while(i>=0) o += x.charAt(i--); return o; }\nfunction pad0(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:fill('0',d-t.length)+t;}\nfunction pad_(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v;return t.length>=d?t:fill(' ',d-t.length)+t;}\nfunction rpad_(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:t+fill(' ',d-t.length);}\nfunction pad0r1(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+Math.round(v); return t.length>=d?t:fill('0',d-t.length)+t;}\nfunction pad0r2(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:fill('0',d-t.length)+t;}\nvar p2_32 = /*#__PURE__*/Math.pow(2,32);\nfunction pad0r(v/*:any*/,d/*:number*/)/*:string*/{if(v>p2_32||v<-p2_32) return pad0r1(v,d); var i = Math.round(v); return pad0r2(i,d); }\n/* yes, in 2022 this is still faster than string compare */\nfunction SSF_isgeneral(s/*:string*/, i/*:?number*/)/*:boolean*/ { i = i || 0; return s.length >= 7 + i && (s.charCodeAt(i)|32) === 103 && (s.charCodeAt(i+1)|32) === 101 && (s.charCodeAt(i+2)|32) === 110 && (s.charCodeAt(i+3)|32) === 101 && (s.charCodeAt(i+4)|32) === 114 && (s.charCodeAt(i+5)|32) === 97 && (s.charCodeAt(i+6)|32) === 108; }\nvar days/*:Array<Array<string> >*/ = [\n\t['Sun', 'Sunday'],\n\t['Mon', 'Monday'],\n\t['Tue', 'Tuesday'],\n\t['Wed', 'Wednesday'],\n\t['Thu', 'Thursday'],\n\t['Fri', 'Friday'],\n\t['Sat', 'Saturday']\n];\nvar months/*:Array<Array<string> >*/ = [\n\t['J', 'Jan', 'January'],\n\t['F', 'Feb', 'February'],\n\t['M', 'Mar', 'March'],\n\t['A', 'Apr', 'April'],\n\t['M', 'May', 'May'],\n\t['J', 'Jun', 'June'],\n\t['J', 'Jul', 'July'],\n\t['A', 'Aug', 'August'],\n\t['S', 'Sep', 'September'],\n\t['O', 'Oct', 'October'],\n\t['N', 'Nov', 'November'],\n\t['D', 'Dec', 'December']\n];\nfunction SSF_init_table(t/*:any*/) {\n\tif(!t) t = {};\n\tt[0]=  'General';\n\tt[1]=  '0';\n\tt[2]=  '0.00';\n\tt[3]=  '#,##0';\n\tt[4]=  '#,##0.00';\n\tt[9]=  '0%';\n\tt[10]= '0.00%';\n\tt[11]= '0.00E+00';\n\tt[12]= '# ?/?';\n\tt[13]= '# ??/??';\n\tt[14]= 'm/d/yy';\n\tt[15]= 'd-mmm-yy';\n\tt[16]= 'd-mmm';\n\tt[17]= 'mmm-yy';\n\tt[18]= 'h:mm AM/PM';\n\tt[19]= 'h:mm:ss AM/PM';\n\tt[20]= 'h:mm';\n\tt[21]= 'h:mm:ss';\n\tt[22]= 'm/d/yy h:mm';\n\tt[37]= '#,##0 ;(#,##0)';\n\tt[38]= '#,##0 ;[Red](#,##0)';\n\tt[39]= '#,##0.00;(#,##0.00)';\n\tt[40]= '#,##0.00;[Red](#,##0.00)';\n\tt[45]= 'mm:ss';\n\tt[46]= '[h]:mm:ss';\n\tt[47]= 'mmss.0';\n\tt[48]= '##0.0E+0';\n\tt[49]= '@';\n\tt[56]= '\"上午/下午 \"hh\"時\"mm\"分\"ss\"秒 \"';\n\treturn t;\n}\n/* repeated to satiate webpack */\nvar table_fmt = {\n\t0:  'General',\n\t1:  '0',\n\t2:  '0.00',\n\t3:  '#,##0',\n\t4:  '#,##0.00',\n\t9:  '0%',\n\t10: '0.00%',\n\t11: '0.00E+00',\n\t12: '# ?/?',\n\t13: '# ??/??',\n\t14: 'm/d/yy',\n\t15: 'd-mmm-yy',\n\t16: 'd-mmm',\n\t17: 'mmm-yy',\n\t18: 'h:mm AM/PM',\n\t19: 'h:mm:ss AM/PM',\n\t20: 'h:mm',\n\t21: 'h:mm:ss',\n\t22: 'm/d/yy h:mm',\n\t37: '#,##0 ;(#,##0)',\n\t38: '#,##0 ;[Red](#,##0)',\n\t39: '#,##0.00;(#,##0.00)',\n\t40: '#,##0.00;[Red](#,##0.00)',\n\t45: 'mm:ss',\n\t46: '[h]:mm:ss',\n\t47: 'mmss.0',\n\t48: '##0.0E+0',\n\t49: '@',\n\t56: '\"上午/下午 \"hh\"時\"mm\"分\"ss\"秒 \"'\n};\n\n/* Defaults determined by systematically testing in Excel 2019 */\n\n/* These formats appear to default to other formats in the table */\nvar SSF_default_map = {\n\t5:  37, 6:  38, 7:  39, 8:  40,         //  5 -> 37 ...  8 -> 40\n\n\t23:  0, 24:  0, 25:  0, 26:  0,         // 23 ->  0 ... 26 ->  0\n\n\t27: 14, 28: 14, 29: 14, 30: 14, 31: 14, // 27 -> 14 ... 31 -> 14\n\n\t50: 14, 51: 14, 52: 14, 53: 14, 54: 14, // 50 -> 14 ... 58 -> 14\n\t55: 14, 56: 14, 57: 14, 58: 14,\n\t59:  1, 60:  2, 61:  3, 62:  4,         // 59 ->  1 ... 62 ->  4\n\n\t67:  9, 68: 10,                         // 67 ->  9 ... 68 -> 10\n\t69: 12, 70: 13, 71: 14,                 // 69 -> 12 ... 71 -> 14\n\t72: 14, 73: 15, 74: 16, 75: 17,         // 72 -> 14 ... 75 -> 17\n\t76: 20, 77: 21, 78: 22,                 // 76 -> 20 ... 78 -> 22\n\t79: 45, 80: 46, 81: 47,                 // 79 -> 45 ... 81 -> 47\n\t82: 0                                   // 82 ->  0 ... 65536 -> 0 (omitted)\n};\n\n\n/* These formats technically refer to Accounting formats with no equivalent */\nvar SSF_default_str = {\n\t//  5 -- Currency,   0 decimal, black negative\n\t5:  '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t63: '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\n\t//  6 -- Currency,   0 decimal, red   negative\n\t6:  '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t64: '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\n\t//  7 -- Currency,   2 decimal, black negative\n\t7:  '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t65: '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\n\t//  8 -- Currency,   2 decimal, red   negative\n\t8:  '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t66: '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\n\t// 41 -- Accounting, 0 decimal, No Symbol\n\t41: '_(* #,##0_);_(* \\\\(#,##0\\\\);_(* \"-\"_);_(@_)',\n\n\t// 42 -- Accounting, 0 decimal, $  Symbol\n\t42: '_(\"$\"* #,##0_);_(\"$\"* \\\\(#,##0\\\\);_(\"$\"* \"-\"_);_(@_)',\n\n\t// 43 -- Accounting, 2 decimal, No Symbol\n\t43: '_(* #,##0.00_);_(* \\\\(#,##0.00\\\\);_(* \"-\"??_);_(@_)',\n\n\t// 44 -- Accounting, 2 decimal, $  Symbol\n\t44: '_(\"$\"* #,##0.00_);_(\"$\"* \\\\(#,##0.00\\\\);_(\"$\"* \"-\"??_);_(@_)'\n};\n\nfunction SSF_frac(x/*:number*/, D/*:number*/, mixed/*:?boolean*/)/*:Array<number>*/ {\n\tvar sgn = x < 0 ? -1 : 1;\n\tvar B = x * sgn;\n\tvar P_2 = 0, P_1 = 1, P = 0;\n\tvar Q_2 = 1, Q_1 = 0, Q = 0;\n\tvar A = Math.floor(B);\n\twhile(Q_1 < D) {\n\t\tA = Math.floor(B);\n\t\tP = A * P_1 + P_2;\n\t\tQ = A * Q_1 + Q_2;\n\t\tif((B - A) < 0.00000005) break;\n\t\tB = 1 / (B - A);\n\t\tP_2 = P_1; P_1 = P;\n\t\tQ_2 = Q_1; Q_1 = Q;\n\t}\n\tif(Q > D) { if(Q_1 > D) { Q = Q_2; P = P_2; } else { Q = Q_1; P = P_1; } }\n\tif(!mixed) return [0, sgn * P, Q];\n\tvar q = Math.floor(sgn * P/Q);\n\treturn [q, sgn*P - q*Q, Q];\n}\nfunction SSF_parse_date_code(v/*:number*/,opts/*:?any*/,b2/*:?boolean*/) {\n\tif(v > 2958465 || v < 0) return null;\n\tvar date = (v|0), time = Math.floor(86400 * (v - date)), dow=0;\n\tvar dout=[];\n\tvar out={D:date, T:time, u:86400*(v-date)-time,y:0,m:0,d:0,H:0,M:0,S:0,q:0};\n\tif(Math.abs(out.u) < 1e-6) out.u = 0;\n\tif(opts && opts.date1904) date += 1462;\n\tif(out.u > 0.9999) {\n\t\tout.u = 0;\n\t\tif(++time == 86400) { out.T = time = 0; ++date; ++out.D; }\n\t}\n\tif(date === 60) {dout = b2 ? [1317,10,29] : [1900,2,29]; dow=3;}\n\telse if(date === 0) {dout = b2 ? [1317,8,29] : [1900,1,0]; dow=6;}\n\telse {\n\t\tif(date > 60) --date;\n\t\t/* 1 = Jan 1 1900 in Gregorian */\n\t\tvar d = new Date(1900, 0, 1);\n\t\td.setDate(d.getDate() + date - 1);\n\t\tdout = [d.getFullYear(), d.getMonth()+1,d.getDate()];\n\t\tdow = d.getDay();\n\t\tif(date < 60) dow = (dow + 6) % 7;\n\t\tif(b2) dow = SSF_fix_hijri(d, dout);\n\t}\n\tout.y = dout[0]; out.m = dout[1]; out.d = dout[2];\n\tout.S = time % 60; time = Math.floor(time / 60);\n\tout.M = time % 60; time = Math.floor(time / 60);\n\tout.H = time;\n\tout.q = dow;\n\treturn out;\n}\nvar SSFbasedate = /*#__PURE__*/new Date(1899, 11, 31, 0, 0, 0);\nvar SSFdnthresh = /*#__PURE__*/SSFbasedate.getTime();\nvar SSFbase1904 = /*#__PURE__*/new Date(1900, 2, 1, 0, 0, 0);\nfunction datenum_local(v/*:Date*/, date1904/*:?boolean*/)/*:number*/ {\n\tvar epoch = /*#__PURE__*/v.getTime();\n\tif(date1904) epoch -= 1461*24*60*60*1000;\n\telse if(v >= SSFbase1904) epoch += 24*60*60*1000;\n\treturn (epoch - (SSFdnthresh + (/*#__PURE__*/v.getTimezoneOffset() - /*#__PURE__*/SSFbasedate.getTimezoneOffset()) * 60000)) / (24 * 60 * 60 * 1000);\n}\n/* ECMA-376 18.8.30 numFmt*/\n/* Note: `toPrecision` uses standard form when prec > E and E >= -6 */\n/* exponent >= -9 and <= 9 */\nfunction SSF_strip_decimal(o/*:string*/)/*:string*/ {\n\treturn (o.indexOf(\".\") == -1) ? o : o.replace(/(?:\\.0*|(\\.\\d*[1-9])0+)$/, \"$1\");\n}\n\n/* General Exponential always shows 2 digits exp and trims the mantissa */\nfunction SSF_normalize_exp(o/*:string*/)/*:string*/ {\n\tif(o.indexOf(\"E\") == -1) return o;\n\treturn o.replace(/(?:\\.0*|(\\.\\d*[1-9])0+)[Ee]/,\"$1E\").replace(/(E[+-])(\\d)$/,\"$10$2\");\n}\n\n/* exponent >= -9 and <= 9 */\nfunction SSF_small_exp(v/*:number*/)/*:string*/ {\n\tvar w = (v<0?12:11);\n\tvar o = SSF_strip_decimal(v.toFixed(12)); if(o.length <= w) return o;\n\to = v.toPrecision(10); if(o.length <= w) return o;\n\treturn v.toExponential(5);\n}\n\n/* exponent >= 11 or <= -10 likely exponential */\nfunction SSF_large_exp(v/*:number*/)/*:string*/ {\n\tvar o = SSF_strip_decimal(v.toFixed(11));\n\treturn (o.length > (v<0?12:11) || o === \"0\" || o === \"-0\") ? v.toPrecision(6) : o;\n}\n\nfunction SSF_general_num(v/*:number*/)/*:string*/ {\n\tvar V = Math.floor(Math.log(Math.abs(v))*Math.LOG10E), o;\n\n\tif(V >= -4 && V <= -1) o = v.toPrecision(10+V);\n\telse if(Math.abs(V) <= 9) o = SSF_small_exp(v);\n\telse if(V === 10) o = v.toFixed(10).substr(0,12);\n\telse o = SSF_large_exp(v);\n\n\treturn SSF_strip_decimal(SSF_normalize_exp(o.toUpperCase()));\n}\n\n\n/*\n\t\"General\" rules:\n\t- text is passed through (\"@\")\n\t- booleans are rendered as TRUE/FALSE\n\t- \"up to 11 characters\" displayed for numbers\n\t- Default date format (code 14) used for Dates\n\n\tThe longest 32-bit integer text is \"-2147483648\", exactly 11 chars\n\tTODO: technically the display depends on the width of the cell\n*/\nfunction SSF_general(v/*:any*/, opts/*:any*/) {\n\tswitch(typeof v) {\n\t\tcase 'string': return v;\n\t\tcase 'boolean': return v ? \"TRUE\" : \"FALSE\";\n\t\tcase 'number': return (v|0) === v ? v.toString(10) : SSF_general_num(v);\n\t\tcase 'undefined': return \"\";\n\t\tcase 'object':\n\t\t\tif(v == null) return \"\";\n\t\t\tif(v instanceof Date) return SSF_format(14, datenum_local(v, opts && opts.date1904), opts);\n\t}\n\tthrow new Error(\"unsupported value in General format: \" + v);\n}\n\nfunction SSF_fix_hijri(date/*:Date*/, o/*:[number, number, number]*/) {\n  /* TODO: properly adjust y/m/d and  */\n  o[0] -= 581;\n  var dow = date.getDay();\n  if(date < 60) dow = (dow + 6) % 7;\n  return dow;\n}\n//var THAI_DIGITS = \"\\u0E50\\u0E51\\u0E52\\u0E53\\u0E54\\u0E55\\u0E56\\u0E57\\u0E58\\u0E59\".split(\"\");\nfunction SSF_write_date(type/*:number*/, fmt/*:string*/, val, ss0/*:?number*/)/*:string*/ {\n\tvar o=\"\", ss=0, tt=0, y = val.y, out, outl = 0;\n\tswitch(type) {\n\t\tcase 98: /* 'b' buddhist year */\n\t\t\ty = val.y + 543;\n\t\t\t/* falls through */\n\t\tcase 121: /* 'y' year */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = y % 100; outl = 2; break;\n\t\t\tdefault: out = y % 10000; outl = 4; break;\n\t\t} break;\n\t\tcase 109: /* 'm' month */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.m; outl = fmt.length; break;\n\t\t\tcase 3: return months[val.m-1][1];\n\t\t\tcase 5: return months[val.m-1][0];\n\t\t\tdefault: return months[val.m-1][2];\n\t\t} break;\n\t\tcase 100: /* 'd' day */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.d; outl = fmt.length; break;\n\t\t\tcase 3: return days[val.q][0];\n\t\t\tdefault: return days[val.q][1];\n\t\t} break;\n\t\tcase 104: /* 'h' 12-hour */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = 1+(val.H+11)%12; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad hour format: ' + fmt;\n\t\t} break;\n\t\tcase 72: /* 'H' 24-hour */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.H; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad hour format: ' + fmt;\n\t\t} break;\n\t\tcase 77: /* 'M' minutes */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.M; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad minute format: ' + fmt;\n\t\t} break;\n\t\tcase 115: /* 's' seconds */\n\t\t\tif(fmt != 's' && fmt != 'ss' && fmt != '.0' && fmt != '.00' && fmt != '.000') throw 'bad second format: ' + fmt;\n\t\t\tif(val.u === 0 && (fmt == \"s\" || fmt == \"ss\")) return pad0(val.S, fmt.length);\n\t\t\t/*::if(!ss0) ss0 = 0; */\n\t\t\tif(ss0 >= 2) tt = ss0 === 3 ? 1000 : 100;\n\t\t\telse tt = ss0 === 1 ? 10 : 1;\n\t\t\tss = Math.round((tt)*(val.S + val.u));\n\t\t\tif(ss >= 60*tt) ss = 0;\n\t\t\tif(fmt === 's') return ss === 0 ? \"0\" : \"\"+ss/tt;\n\t\t\to = pad0(ss,2 + ss0);\n\t\t\tif(fmt === 'ss') return o.substr(0,2);\n\t\t\treturn \".\" + o.substr(2,fmt.length-1);\n\t\tcase 90: /* 'Z' absolute time */\n\t\tswitch(fmt) {\n\t\t\tcase '[h]': case '[hh]': out = val.D*24+val.H; break;\n\t\t\tcase '[m]': case '[mm]': out = (val.D*24+val.H)*60+val.M; break;\n\t\t\tcase '[s]': case '[ss]': out = ((val.D*24+val.H)*60+val.M)*60+Math.round(val.S+val.u); break;\n\t\t\tdefault: throw 'bad abstime format: ' + fmt;\n\t\t} outl = fmt.length === 3 ? 1 : 2; break;\n\t\tcase 101: /* 'e' era */\n\t\t\tout = y; outl = 1; break;\n\t}\n\tvar outstr = outl > 0 ? pad0(out, outl) : \"\";\n\treturn outstr;\n}\n\n\n/*jshint -W086 */\n/*jshint +W086 */\nfunction commaify(s/*:string*/)/*:string*/ {\n\tvar w = 3;\n\tif(s.length <= w) return s;\n\tvar j = (s.length % w), o = s.substr(0,j);\n\tfor(; j!=s.length; j+=w) o+=(o.length > 0 ? \",\" : \"\") + s.substr(j,w);\n\treturn o;\n}\nvar pct1 = /%/g;\nfunction write_num_pct(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar sfmt = fmt.replace(pct1,\"\"), mul = fmt.length - sfmt.length;\n\treturn write_num(type, sfmt, val * Math.pow(10,2*mul)) + fill(\"%\",mul);\n}\n\nfunction write_num_cm(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar idx = fmt.length - 1;\n\twhile(fmt.charCodeAt(idx-1) === 44) --idx;\n\treturn write_num(type, fmt.substr(0,idx), val / Math.pow(10,3*(fmt.length-idx)));\n}\n\nfunction write_num_exp(fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar o/*:string*/;\n\tvar idx = fmt.indexOf(\"E\") - fmt.indexOf(\".\") - 1;\n\tif(fmt.match(/^#+0.0E\\+0$/)) {\n\t\tif(val == 0) return \"0.0E+0\";\n\t\telse if(val < 0) return \"-\" + write_num_exp(fmt, -val);\n\t\tvar period = fmt.indexOf(\".\"); if(period === -1) period=fmt.indexOf('E');\n\t\tvar ee = Math.floor(Math.log(val)*Math.LOG10E)%period;\n\t\tif(ee < 0) ee += period;\n\t\to = (val/Math.pow(10,ee)).toPrecision(idx+1+(period+ee)%period);\n\t\tif(o.indexOf(\"e\") === -1) {\n\t\t\tvar fakee = Math.floor(Math.log(val)*Math.LOG10E);\n\t\t\tif(o.indexOf(\".\") === -1) o = o.charAt(0) + \".\" + o.substr(1) + \"E+\" + (fakee - o.length+ee);\n\t\t\telse o += \"E+\" + (fakee - ee);\n\t\t\twhile(o.substr(0,2) === \"0.\") {\n\t\t\t\to = o.charAt(0) + o.substr(2,period) + \".\" + o.substr(2+period);\n\t\t\t\to = o.replace(/^0+([1-9])/,\"$1\").replace(/^0+\\./,\"0.\");\n\t\t\t}\n\t\t\to = o.replace(/\\+-/,\"-\");\n\t\t}\n\t\to = o.replace(/^([+-]?)(\\d*)\\.(\\d*)[Ee]/,function($$,$1,$2,$3) { return $1 + $2 + $3.substr(0,(period+ee)%period) + \".\" + $3.substr(ee) + \"E\"; });\n\t} else o = val.toExponential(idx);\n\tif(fmt.match(/E\\+00$/) && o.match(/e[+-]\\d$/)) o = o.substr(0,o.length-1) + \"0\" + o.charAt(o.length-1);\n\tif(fmt.match(/E\\-/) && o.match(/e\\+/)) o = o.replace(/e\\+/,\"e\");\n\treturn o.replace(\"e\",\"E\");\n}\nvar frac1 = /# (\\?+)( ?)\\/( ?)(\\d+)/;\nfunction write_num_f1(r/*:Array<string>*/, aval/*:number*/, sign/*:string*/)/*:string*/ {\n\tvar den = parseInt(r[4],10), rr = Math.round(aval * den), base = Math.floor(rr/den);\n\tvar myn = (rr - base*den), myd = den;\n\treturn sign + (base === 0 ? \"\" : \"\"+base) + \" \" + (myn === 0 ? fill(\" \", r[1].length + 1 + r[4].length) : pad_(myn,r[1].length) + r[2] + \"/\" + r[3] + pad0(myd,r[4].length));\n}\nfunction write_num_f2(r/*:Array<string>*/, aval/*:number*/, sign/*:string*/)/*:string*/ {\n\treturn sign + (aval === 0 ? \"\" : \"\"+aval) + fill(\" \", r[1].length + 2 + r[4].length);\n}\nvar dec1 = /^#*0*\\.([0#]+)/;\nvar closeparen = /\\).*[0#]/;\nvar phone = /\\(###\\) ###\\\\?-####/;\nfunction hashq(str/*:string*/)/*:string*/ {\n\tvar o = \"\", cc;\n\tfor(var i = 0; i != str.length; ++i) switch((cc=str.charCodeAt(i))) {\n\t\tcase 35: break;\n\t\tcase 63: o+= \" \"; break;\n\t\tcase 48: o+= \"0\"; break;\n\t\tdefault: o+= String.fromCharCode(cc);\n\t}\n\treturn o;\n}\nfunction rnd(val/*:number*/, d/*:number*/)/*:string*/ { var dd = Math.pow(10,d); return \"\"+(Math.round(val * dd)/dd); }\nfunction dec(val/*:number*/, d/*:number*/)/*:number*/ {\n\tvar _frac = val - Math.floor(val), dd = Math.pow(10,d);\n\tif (d < ('' + Math.round(_frac * dd)).length) return 0;\n\treturn Math.round(_frac * dd);\n}\nfunction carry(val/*:number*/, d/*:number*/)/*:number*/ {\n\tif (d < ('' + Math.round((val-Math.floor(val))*Math.pow(10,d))).length) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\nfunction flr(val/*:number*/)/*:string*/ {\n\tif(val < 2147483647 && val > -2147483648) return \"\"+(val >= 0 ? (val|0) : (val-1|0));\n\treturn \"\"+Math.floor(val);\n}\nfunction write_num_flt(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/ {\n\tif(type.charCodeAt(0) === 40 && !fmt.match(closeparen)) {\n\t\tvar ffmt = fmt.replace(/\\( */,\"\").replace(/ \\)/,\"\").replace(/\\)/,\"\");\n\t\tif(val >= 0) return write_num_flt('n', ffmt, val);\n\t\treturn '(' + write_num_flt('n', ffmt, -val) + ')';\n\t}\n\tif(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm(type, fmt, val);\n\tif(fmt.indexOf('%') !== -1) return write_num_pct(type, fmt, val);\n\tif(fmt.indexOf('E') !== -1) return write_num_exp(fmt, val);\n\tif(fmt.charCodeAt(0) === 36) return \"$\"+write_num_flt(type,fmt.substr(fmt.charAt(1)==' '?2:1),val);\n\tvar o;\n\tvar r/*:?Array<string>*/, ri, ff, aval = Math.abs(val), sign = val < 0 ? \"-\" : \"\";\n\tif(fmt.match(/^00+$/)) return sign + pad0r(aval,fmt.length);\n\tif(fmt.match(/^[#?]+$/)) {\n\t\to = pad0r(val,0); if(o === \"0\") o = \"\";\n\t\treturn o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(frac1))) return write_num_f1(r, aval, sign);\n\tif(fmt.match(/^#+0+$/)) return sign + pad0r(aval,fmt.length - fmt.indexOf(\"0\"));\n\tif((r = fmt.match(dec1))) {\n\t\to = rnd(val, r[1].length).replace(/^([^\\.]+)$/,\"$1.\"+hashq(r[1])).replace(/\\.$/,\".\"+hashq(r[1])).replace(/\\.(\\d*)$/,function($$, $1) { return \".\" + $1 + fill(\"0\", hashq(/*::(*/r/*::||[\"\"])*/[1]).length-$1.length); });\n\t\treturn fmt.indexOf(\"0.\") !== -1 ? o : o.replace(/^0\\./,\".\");\n\t}\n\tfmt = fmt.replace(/^#+([0.])/, \"$1\");\n\tif((r = fmt.match(/^(0*)\\.(#*)$/))) {\n\t\treturn sign + rnd(aval, r[2].length).replace(/\\.(\\d*[1-9])0*$/,\".$1\").replace(/^(-?\\d*)$/,\"$1.\").replace(/^0\\./,r[1].length?\"0.\":\".\");\n\t}\n\tif((r = fmt.match(/^#{1,3},##0(\\.?)$/))) return sign + commaify(pad0r(aval,0));\n\tif((r = fmt.match(/^#,##0\\.([#0]*0)$/))) {\n\t\treturn val < 0 ? \"-\" + write_num_flt(type, fmt, -val) : commaify(\"\"+(Math.floor(val) + carry(val, r[1].length))) + \".\" + pad0(dec(val, r[1].length),r[1].length);\n\t}\n\tif((r = fmt.match(/^#,#*,#0/))) return write_num_flt(type,fmt.replace(/^#,#*,/,\"\"),val);\n\tif((r = fmt.match(/^([0#]+)(\\\\?-([0#]+))+$/))) {\n\t\to = _strrev(write_num_flt(type, fmt.replace(/[\\\\-]/g,\"\"), val));\n\t\tri = 0;\n\t\treturn _strrev(_strrev(fmt.replace(/\\\\/g,\"\")).replace(/[0#]/g,function(x){return ri<o.length?o.charAt(ri++):x==='0'?'0':\"\";}));\n\t}\n\tif(fmt.match(phone)) {\n\t\to = write_num_flt(type, \"##########\", val);\n\t\treturn \"(\" + o.substr(0,3) + \") \" + o.substr(3, 3) + \"-\" + o.substr(6);\n\t}\n\tvar oa = \"\";\n\tif((r = fmt.match(/^([#0?]+)( ?)\\/( ?)([#0?]+)/))) {\n\t\tri = Math.min(/*::String(*/r[4]/*::)*/.length,7);\n\t\tff = SSF_frac(aval, Math.pow(10,ri)-1, false);\n\t\to = \"\" + sign;\n\t\toa = write_num(\"n\", /*::String(*/r[1]/*::)*/, ff[1]);\n\t\tif(oa.charAt(oa.length-1) == \" \") oa = oa.substr(0,oa.length-1) + \"0\";\n\t\to += oa + /*::String(*/r[2]/*::)*/ + \"/\" + /*::String(*/r[3]/*::)*/;\n\t\toa = rpad_(ff[2],ri);\n\t\tif(oa.length < r[4].length) oa = hashq(r[4].substr(r[4].length-oa.length)) + oa;\n\t\to += oa;\n\t\treturn o;\n\t}\n\tif((r = fmt.match(/^# ([#0?]+)( ?)\\/( ?)([#0?]+)/))) {\n\t\tri = Math.min(Math.max(r[1].length, r[4].length),7);\n\t\tff = SSF_frac(aval, Math.pow(10,ri)-1, true);\n\t\treturn sign + (ff[0]||(ff[1] ? \"\" : \"0\")) + \" \" + (ff[1] ? pad_(ff[1],ri) + r[2] + \"/\" + r[3] + rpad_(ff[2],ri): fill(\" \", 2*ri+1 + r[2].length + r[3].length));\n\t}\n\tif((r = fmt.match(/^[#0?]+$/))) {\n\t\to = pad0r(val, 0);\n\t\tif(fmt.length <= o.length) return o;\n\t\treturn hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(/^([#0?]+)\\.([#0]+)$/))) {\n\t\to = \"\" + val.toFixed(Math.min(r[2].length,10)).replace(/([^0])0+$/,\"$1\");\n\t\tri = o.indexOf(\".\");\n\t\tvar lres = fmt.indexOf(\".\") - ri, rres = fmt.length - o.length - lres;\n\t\treturn hashq(fmt.substr(0,lres) + o + fmt.substr(fmt.length-rres));\n\t}\n\tif((r = fmt.match(/^00,000\\.([#0]*0)$/))) {\n\t\tri = dec(val, r[1].length);\n\t\treturn val < 0 ? \"-\" + write_num_flt(type, fmt, -val) : commaify(flr(val)).replace(/^\\d,\\d{3}$/,\"0$&\").replace(/^\\d*$/,function($$) { return \"00,\" + ($$.length < 3 ? pad0(0,3-$$.length) : \"\") + $$; }) + \".\" + pad0(ri,r[1].length);\n\t}\n\tswitch(fmt) {\n\t\tcase \"###,##0.00\": return write_num_flt(type, \"#,##0.00\", val);\n\t\tcase \"###,###\":\n\t\tcase \"##,###\":\n\t\tcase \"#,###\": var x = commaify(pad0r(aval,0)); return x !== \"0\" ? sign + x : \"\";\n\t\tcase \"###,###.00\": return write_num_flt(type, \"###,##0.00\",val).replace(/^0\\./,\".\");\n\t\tcase \"#,###.00\": return write_num_flt(type, \"#,##0.00\",val).replace(/^0\\./,\".\");\n\t\tdefault:\n\t}\n\tthrow new Error(\"unsupported format |\" + fmt + \"|\");\n}\nfunction write_num_cm2(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar idx = fmt.length - 1;\n\twhile(fmt.charCodeAt(idx-1) === 44) --idx;\n\treturn write_num(type, fmt.substr(0,idx), val / Math.pow(10,3*(fmt.length-idx)));\n}\nfunction write_num_pct2(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar sfmt = fmt.replace(pct1,\"\"), mul = fmt.length - sfmt.length;\n\treturn write_num(type, sfmt, val * Math.pow(10,2*mul)) + fill(\"%\",mul);\n}\nfunction write_num_exp2(fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar o/*:string*/;\n\tvar idx = fmt.indexOf(\"E\") - fmt.indexOf(\".\") - 1;\n\tif(fmt.match(/^#+0.0E\\+0$/)) {\n\t\tif(val == 0) return \"0.0E+0\";\n\t\telse if(val < 0) return \"-\" + write_num_exp2(fmt, -val);\n\t\tvar period = fmt.indexOf(\".\"); if(period === -1) period=fmt.indexOf('E');\n\t\tvar ee = Math.floor(Math.log(val)*Math.LOG10E)%period;\n\t\tif(ee < 0) ee += period;\n\t\to = (val/Math.pow(10,ee)).toPrecision(idx+1+(period+ee)%period);\n\t\tif(!o.match(/[Ee]/)) {\n\t\t\tvar fakee = Math.floor(Math.log(val)*Math.LOG10E);\n\t\t\tif(o.indexOf(\".\") === -1) o = o.charAt(0) + \".\" + o.substr(1) + \"E+\" + (fakee - o.length+ee);\n\t\t\telse o += \"E+\" + (fakee - ee);\n\t\t\to = o.replace(/\\+-/,\"-\");\n\t\t}\n\t\to = o.replace(/^([+-]?)(\\d*)\\.(\\d*)[Ee]/,function($$,$1,$2,$3) { return $1 + $2 + $3.substr(0,(period+ee)%period) + \".\" + $3.substr(ee) + \"E\"; });\n\t} else o = val.toExponential(idx);\n\tif(fmt.match(/E\\+00$/) && o.match(/e[+-]\\d$/)) o = o.substr(0,o.length-1) + \"0\" + o.charAt(o.length-1);\n\tif(fmt.match(/E\\-/) && o.match(/e\\+/)) o = o.replace(/e\\+/,\"e\");\n\treturn o.replace(\"e\",\"E\");\n}\nfunction write_num_int(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/ {\n\tif(type.charCodeAt(0) === 40 && !fmt.match(closeparen)) {\n\t\tvar ffmt = fmt.replace(/\\( */,\"\").replace(/ \\)/,\"\").replace(/\\)/,\"\");\n\t\tif(val >= 0) return write_num_int('n', ffmt, val);\n\t\treturn '(' + write_num_int('n', ffmt, -val) + ')';\n\t}\n\tif(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm2(type, fmt, val);\n\tif(fmt.indexOf('%') !== -1) return write_num_pct2(type, fmt, val);\n\tif(fmt.indexOf('E') !== -1) return write_num_exp2(fmt, val);\n\tif(fmt.charCodeAt(0) === 36) return \"$\"+write_num_int(type,fmt.substr(fmt.charAt(1)==' '?2:1),val);\n\tvar o;\n\tvar r/*:?Array<string>*/, ri, ff, aval = Math.abs(val), sign = val < 0 ? \"-\" : \"\";\n\tif(fmt.match(/^00+$/)) return sign + pad0(aval,fmt.length);\n\tif(fmt.match(/^[#?]+$/)) {\n\t\to = (\"\"+val); if(val === 0) o = \"\";\n\t\treturn o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(frac1))) return write_num_f2(r, aval, sign);\n\tif(fmt.match(/^#+0+$/)) return sign + pad0(aval,fmt.length - fmt.indexOf(\"0\"));\n\tif((r = fmt.match(dec1))) {\n\t\t/*:: if(!Array.isArray(r)) throw new Error(\"unreachable\"); */\n\t\to = (\"\"+val).replace(/^([^\\.]+)$/,\"$1.\"+hashq(r[1])).replace(/\\.$/,\".\"+hashq(r[1]));\n\t\to = o.replace(/\\.(\\d*)$/,function($$, $1) {\n\t\t/*:: if(!Array.isArray(r)) throw new Error(\"unreachable\"); */\n\t\t\treturn \".\" + $1 + fill(\"0\", hashq(r[1]).length-$1.length); });\n\t\treturn fmt.indexOf(\"0.\") !== -1 ? o : o.replace(/^0\\./,\".\");\n\t}\n\tfmt = fmt.replace(/^#+([0.])/, \"$1\");\n\tif((r = fmt.match(/^(0*)\\.(#*)$/))) {\n\t\treturn sign + (\"\"+aval).replace(/\\.(\\d*[1-9])0*$/,\".$1\").replace(/^(-?\\d*)$/,\"$1.\").replace(/^0\\./,r[1].length?\"0.\":\".\");\n\t}\n\tif((r = fmt.match(/^#{1,3},##0(\\.?)$/))) return sign + commaify((\"\"+aval));\n\tif((r = fmt.match(/^#,##0\\.([#0]*0)$/))) {\n\t\treturn val < 0 ? \"-\" + write_num_int(type, fmt, -val) : commaify((\"\"+val)) + \".\" + fill('0',r[1].length);\n\t}\n\tif((r = fmt.match(/^#,#*,#0/))) return write_num_int(type,fmt.replace(/^#,#*,/,\"\"),val);\n\tif((r = fmt.match(/^([0#]+)(\\\\?-([0#]+))+$/))) {\n\t\to = _strrev(write_num_int(type, fmt.replace(/[\\\\-]/g,\"\"), val));\n\t\tri = 0;\n\t\treturn _strrev(_strrev(fmt.replace(/\\\\/g,\"\")).replace(/[0#]/g,function(x){return ri<o.length?o.charAt(ri++):x==='0'?'0':\"\";}));\n\t}\n\tif(fmt.match(phone)) {\n\t\to = write_num_int(type, \"##########\", val);\n\t\treturn \"(\" + o.substr(0,3) + \") \" + o.substr(3, 3) + \"-\" + o.substr(6);\n\t}\n\tvar oa = \"\";\n\tif((r = fmt.match(/^([#0?]+)( ?)\\/( ?)([#0?]+)/))) {\n\t\tri = Math.min(/*::String(*/r[4]/*::)*/.length,7);\n\t\tff = SSF_frac(aval, Math.pow(10,ri)-1, false);\n\t\to = \"\" + sign;\n\t\toa = write_num(\"n\", /*::String(*/r[1]/*::)*/, ff[1]);\n\t\tif(oa.charAt(oa.length-1) == \" \") oa = oa.substr(0,oa.length-1) + \"0\";\n\t\to += oa + /*::String(*/r[2]/*::)*/ + \"/\" + /*::String(*/r[3]/*::)*/;\n\t\toa = rpad_(ff[2],ri);\n\t\tif(oa.length < r[4].length) oa = hashq(r[4].substr(r[4].length-oa.length)) + oa;\n\t\to += oa;\n\t\treturn o;\n\t}\n\tif((r = fmt.match(/^# ([#0?]+)( ?)\\/( ?)([#0?]+)/))) {\n\t\tri = Math.min(Math.max(r[1].length, r[4].length),7);\n\t\tff = SSF_frac(aval, Math.pow(10,ri)-1, true);\n\t\treturn sign + (ff[0]||(ff[1] ? \"\" : \"0\")) + \" \" + (ff[1] ? pad_(ff[1],ri) + r[2] + \"/\" + r[3] + rpad_(ff[2],ri): fill(\" \", 2*ri+1 + r[2].length + r[3].length));\n\t}\n\tif((r = fmt.match(/^[#0?]+$/))) {\n\t\to = \"\" + val;\n\t\tif(fmt.length <= o.length) return o;\n\t\treturn hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(/^([#0]+)\\.([#0]+)$/))) {\n\t\to = \"\" + val.toFixed(Math.min(r[2].length,10)).replace(/([^0])0+$/,\"$1\");\n\t\tri = o.indexOf(\".\");\n\t\tvar lres = fmt.indexOf(\".\") - ri, rres = fmt.length - o.length - lres;\n\t\treturn hashq(fmt.substr(0,lres) + o + fmt.substr(fmt.length-rres));\n\t}\n\tif((r = fmt.match(/^00,000\\.([#0]*0)$/))) {\n\t\treturn val < 0 ? \"-\" + write_num_int(type, fmt, -val) : commaify(\"\"+val).replace(/^\\d,\\d{3}$/,\"0$&\").replace(/^\\d*$/,function($$) { return \"00,\" + ($$.length < 3 ? pad0(0,3-$$.length) : \"\") + $$; }) + \".\" + pad0(0,r[1].length);\n\t}\n\tswitch(fmt) {\n\t\tcase \"###,###\":\n\t\tcase \"##,###\":\n\t\tcase \"#,###\": var x = commaify(\"\"+aval); return x !== \"0\" ? sign + x : \"\";\n\t\tdefault:\n\t\t\tif(fmt.match(/\\.[0#?]*$/)) return write_num_int(type, fmt.slice(0,fmt.lastIndexOf(\".\")), val) + hashq(fmt.slice(fmt.lastIndexOf(\".\")));\n\t}\n\tthrow new Error(\"unsupported format |\" + fmt + \"|\");\n}\nfunction write_num(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/ {\n\treturn (val|0) === val ? write_num_int(type, fmt, val) : write_num_flt(type, fmt, val);\n}\nfunction SSF_split_fmt(fmt/*:string*/)/*:Array<string>*/ {\n\tvar out/*:Array<string>*/ = [];\n\tvar in_str = false/*, cc*/;\n\tfor(var i = 0, j = 0; i < fmt.length; ++i) switch((/*cc=*/fmt.charCodeAt(i))) {\n\t\tcase 34: /* '\"' */\n\t\t\tin_str = !in_str; break;\n\t\tcase 95: case 42: case 92: /* '_' '*' '\\\\' */\n\t\t\t++i; break;\n\t\tcase 59: /* ';' */\n\t\t\tout[out.length] = fmt.substr(j,i-j);\n\t\t\tj = i+1;\n\t}\n\tout[out.length] = fmt.substr(j);\n\tif(in_str === true) throw new Error(\"Format |\" + fmt + \"| unterminated string \");\n\treturn out;\n}\n\nvar SSF_abstime = /\\[[HhMmSs\\u0E0A\\u0E19\\u0E17]*\\]/;\nfunction fmt_is_date(fmt/*:string*/)/*:boolean*/ {\n\tvar i = 0, /*cc = 0,*/ c = \"\", o = \"\";\n\twhile(i < fmt.length) {\n\t\tswitch((c = fmt.charAt(i))) {\n\t\t\tcase 'G': if(SSF_isgeneral(fmt, i)) i+= 6; i++; break;\n\t\t\tcase '\"': for(;(/*cc=*/fmt.charCodeAt(++i)) !== 34 && i < fmt.length;){/*empty*/} ++i; break;\n\t\t\tcase '\\\\': i+=2; break;\n\t\t\tcase '_': i+=2; break;\n\t\t\tcase '@': ++i; break;\n\t\t\tcase 'B': case 'b':\n\t\t\t\tif(fmt.charAt(i+1) === \"1\" || fmt.charAt(i+1) === \"2\") return true;\n\t\t\t\t/* falls through */\n\t\t\tcase 'M': case 'D': case 'Y': case 'H': case 'S': case 'E':\n\t\t\t\t/* falls through */\n\t\t\tcase 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g': return true;\n\t\t\tcase 'A': case 'a': case '上':\n\t\t\t\tif(fmt.substr(i, 3).toUpperCase() === \"A/P\") return true;\n\t\t\t\tif(fmt.substr(i, 5).toUpperCase() === \"AM/PM\") return true;\n\t\t\t\tif(fmt.substr(i, 5).toUpperCase() === \"上午/下午\") return true;\n\t\t\t\t++i; break;\n\t\t\tcase '[':\n\t\t\t\to = c;\n\t\t\t\twhile(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i);\n\t\t\t\tif(o.match(SSF_abstime)) return true;\n\t\t\t\tbreak;\n\t\t\tcase '.':\n\t\t\t\t/* falls through */\n\t\t\tcase '0': case '#':\n\t\t\t\twhile(i < fmt.length && (\"0#?.,E+-%\".indexOf(c=fmt.charAt(++i)) > -1 || (c=='\\\\' && fmt.charAt(i+1) == \"-\" && \"0#\".indexOf(fmt.charAt(i+2))>-1))){/* empty */}\n\t\t\t\tbreak;\n\t\t\tcase '?': while(fmt.charAt(++i) === c){/* empty */} break;\n\t\t\tcase '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break;\n\t\t\tcase '(': case ')': ++i; break;\n\t\t\tcase '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':\n\t\t\t\twhile(i < fmt.length && \"0123456789\".indexOf(fmt.charAt(++i)) > -1){/* empty */} break;\n\t\t\tcase ' ': ++i; break;\n\t\t\tdefault: ++i; break;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction eval_fmt(fmt/*:string*/, v/*:any*/, opts/*:any*/, flen/*:number*/) {\n\tvar out = [], o = \"\", i = 0, c = \"\", lst='t', dt, j, cc;\n\tvar hr='H';\n\t/* Tokenize */\n\twhile(i < fmt.length) {\n\t\tswitch((c = fmt.charAt(i))) {\n\t\t\tcase 'G': /* General */\n\t\t\t\tif(!SSF_isgeneral(fmt, i)) throw new Error('unrecognized character ' + c + ' in ' +fmt);\n\t\t\t\tout[out.length] = {t:'G', v:'General'}; i+=7; break;\n\t\t\tcase '\"': /* Literal text */\n\t\t\t\tfor(o=\"\";(cc=fmt.charCodeAt(++i)) !== 34 && i < fmt.length;) o += String.fromCharCode(cc);\n\t\t\t\tout[out.length] = {t:'t', v:o}; ++i; break;\n\t\t\tcase '\\\\': var w = fmt.charAt(++i), t = (w === \"(\" || w === \")\") ? w : 't';\n\t\t\t\tout[out.length] = {t:t, v:w}; ++i; break;\n\t\t\tcase '_': out[out.length] = {t:'t', v:\" \"}; i+=2; break;\n\t\t\tcase '@': /* Text Placeholder */\n\t\t\t\tout[out.length] = {t:'T', v:v}; ++i; break;\n\t\t\tcase 'B': case 'b':\n\t\t\t\tif(fmt.charAt(i+1) === \"1\" || fmt.charAt(i+1) === \"2\") {\n\t\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts, fmt.charAt(i+1) === \"2\"); if(dt==null) return \"\"; }\n\t\t\t\t\tout[out.length] = {t:'X', v:fmt.substr(i,2)}; lst = c; i+=2; break;\n\t\t\t\t}\n\t\t\t\t/* falls through */\n\t\t\tcase 'M': case 'D': case 'Y': case 'H': case 'S': case 'E':\n\t\t\t\tc = c.toLowerCase();\n\t\t\t\t/* falls through */\n\t\t\tcase 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g':\n\t\t\t\tif(v < 0) return \"\";\n\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts); if(dt==null) return \"\"; }\n\t\t\t\to = c; while(++i < fmt.length && fmt.charAt(i).toLowerCase() === c) o+=c;\n\t\t\t\tif(c === 'm' && lst.toLowerCase() === 'h') c = 'M';\n\t\t\t\tif(c === 'h') c = hr;\n\t\t\t\tout[out.length] = {t:c, v:o}; lst = c; break;\n\t\t\tcase 'A': case 'a': case '上':\n\t\t\t\tvar q={t:c, v:c};\n\t\t\t\tif(dt==null) dt=SSF_parse_date_code(v, opts);\n\t\t\t\tif(fmt.substr(i, 3).toUpperCase() === \"A/P\") { if(dt!=null) q.v = dt.H >= 12 ? \"P\" : \"A\"; q.t = 'T'; hr='h';i+=3;}\n\t\t\t\telse if(fmt.substr(i,5).toUpperCase() === \"AM/PM\") { if(dt!=null) q.v = dt.H >= 12 ? \"PM\" : \"AM\"; q.t = 'T'; i+=5; hr='h'; }\n\t\t\t\telse if(fmt.substr(i,5).toUpperCase() === \"上午/下午\") { if(dt!=null) q.v = dt.H >= 12 ? \"下午\" : \"上午\"; q.t = 'T'; i+=5; hr='h'; }\n\t\t\t\telse { q.t = \"t\"; ++i; }\n\t\t\t\tif(dt==null && q.t === 'T') return \"\";\n\t\t\t\tout[out.length] = q; lst = c; break;\n\t\t\tcase '[':\n\t\t\t\to = c;\n\t\t\t\twhile(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i);\n\t\t\t\tif(o.slice(-1) !== ']') throw 'unterminated \"[\" block: |' + o + '|';\n\t\t\t\tif(o.match(SSF_abstime)) {\n\t\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts); if(dt==null) return \"\"; }\n\t\t\t\t\tout[out.length] = {t:'Z', v:o.toLowerCase()};\n\t\t\t\t\tlst = o.charAt(1);\n\t\t\t\t} else if(o.indexOf(\"$\") > -1) {\n\t\t\t\t\to = (o.match(/\\$([^-\\[\\]]*)/)||[])[1]||\"$\";\n\t\t\t\t\tif(!fmt_is_date(fmt)) out[out.length] = {t:'t',v:o};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t/* Numbers */\n\t\t\tcase '.':\n\t\t\t\tif(dt != null) {\n\t\t\t\t\to = c; while(++i < fmt.length && (c=fmt.charAt(i)) === \"0\") o += c;\n\t\t\t\t\tout[out.length] = {t:'s', v:o}; break;\n\t\t\t\t}\n\t\t\t\t/* falls through */\n\t\t\tcase '0': case '#':\n\t\t\t\to = c; while(++i < fmt.length && \"0#?.,E+-%\".indexOf(c=fmt.charAt(i)) > -1) o += c;\n\t\t\t\tout[out.length] = {t:'n', v:o}; break;\n\t\t\tcase '?':\n\t\t\t\to = c; while(fmt.charAt(++i) === c) o+=c;\n\t\t\t\tout[out.length] = {t:c, v:o}; lst = c; break;\n\t\t\tcase '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break; // **\n\t\t\tcase '(': case ')': out[out.length] = {t:(flen===1?'t':c), v:c}; ++i; break;\n\t\t\tcase '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':\n\t\t\t\to = c; while(i < fmt.length && \"0123456789\".indexOf(fmt.charAt(++i)) > -1) o+=fmt.charAt(i);\n\t\t\t\tout[out.length] = {t:'D', v:o}; break;\n\t\t\tcase ' ': out[out.length] = {t:c, v:c}; ++i; break;\n\t\t\tcase '$': out[out.length] = {t:'t', v:'$'}; ++i; break;\n\t\t\tdefault:\n\t\t\t\tif(\",$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP\".indexOf(c) === -1) throw new Error('unrecognized character ' + c + ' in ' + fmt);\n\t\t\t\tout[out.length] = {t:'t', v:c}; ++i; break;\n\t\t}\n\t}\n\n\t/* Scan for date/time parts */\n\tvar bt = 0, ss0 = 0, ssm;\n\tfor(i=out.length-1, lst='t'; i >= 0; --i) {\n\t\tswitch(out[i].t) {\n\t\t\tcase 'h': case 'H': out[i].t = hr; lst='h'; if(bt < 1) bt = 1; break;\n\t\t\tcase 's':\n\t\t\t\tif((ssm=out[i].v.match(/\\.0+$/))) ss0=Math.max(ss0,ssm[0].length-1);\n\t\t\t\tif(bt < 3) bt = 3;\n\t\t\t/* falls through */\n\t\t\tcase 'd': case 'y': case 'M': case 'e': lst=out[i].t; break;\n\t\t\tcase 'm': if(lst === 's') { out[i].t = 'M'; if(bt < 2) bt = 2; } break;\n\t\t\tcase 'X': /*if(out[i].v === \"B2\");*/\n\t\t\t\tbreak;\n\t\t\tcase 'Z':\n\t\t\t\tif(bt < 1 && out[i].v.match(/[Hh]/)) bt = 1;\n\t\t\t\tif(bt < 2 && out[i].v.match(/[Mm]/)) bt = 2;\n\t\t\t\tif(bt < 3 && out[i].v.match(/[Ss]/)) bt = 3;\n\t\t}\n\t}\n\t/* time rounding depends on presence of minute / second / usec fields */\n\tswitch(bt) {\n\t\tcase 0: break;\n\t\tcase 1:\n\t\t\t/*::if(!dt) break;*/\n\t\t\tif(dt.u >= 0.5) { dt.u = 0; ++dt.S; }\n\t\t\tif(dt.S >=  60) { dt.S = 0; ++dt.M; }\n\t\t\tif(dt.M >=  60) { dt.M = 0; ++dt.H; }\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\t/*::if(!dt) break;*/\n\t\t\tif(dt.u >= 0.5) { dt.u = 0; ++dt.S; }\n\t\t\tif(dt.S >=  60) { dt.S = 0; ++dt.M; }\n\t\t\tbreak;\n\t}\n\n\t/* replace fields */\n\tvar nstr = \"\", jj;\n\tfor(i=0; i < out.length; ++i) {\n\t\tswitch(out[i].t) {\n\t\t\tcase 't': case 'T': case ' ': case 'D': break;\n\t\t\tcase 'X': out[i].v = \"\"; out[i].t = \";\"; break;\n\t\t\tcase 'd': case 'm': case 'y': case 'h': case 'H': case 'M': case 's': case 'e': case 'b': case 'Z':\n\t\t\t\t/*::if(!dt) throw \"unreachable\"; */\n\t\t\t\tout[i].v = SSF_write_date(out[i].t.charCodeAt(0), out[i].v, dt, ss0);\n\t\t\t\tout[i].t = 't'; break;\n\t\t\tcase 'n': case '?':\n\t\t\t\tjj = i+1;\n\t\t\t\twhile(out[jj] != null && (\n\t\t\t\t\t(c=out[jj].t) === \"?\" || c === \"D\" ||\n\t\t\t\t\t((c === \" \" || c === \"t\") && out[jj+1] != null && (out[jj+1].t === '?' || out[jj+1].t === \"t\" && out[jj+1].v === '/')) ||\n\t\t\t\t\t(out[i].t === '(' && (c === ' ' || c === 'n' || c === ')')) ||\n\t\t\t\t\t(c === 't' && (out[jj].v === '/' || out[jj].v === ' ' && out[jj+1] != null && out[jj+1].t == '?'))\n\t\t\t\t)) {\n\t\t\t\t\tout[i].v += out[jj].v;\n\t\t\t\t\tout[jj] = {v:\"\", t:\";\"}; ++jj;\n\t\t\t\t}\n\t\t\t\tnstr += out[i].v;\n\t\t\t\ti = jj-1; break;\n\t\t\tcase 'G': out[i].t = 't'; out[i].v = SSF_general(v,opts); break;\n\t\t}\n\t}\n\tvar vv = \"\", myv, ostr;\n\tif(nstr.length > 0) {\n\t\tif(nstr.charCodeAt(0) == 40) /* '(' */ {\n\t\t\tmyv = (v<0&&nstr.charCodeAt(0) === 45 ? -v : v);\n\t\t\tostr = write_num('n', nstr, myv);\n\t\t} else {\n\t\t\tmyv = (v<0 && flen > 1 ? -v : v);\n\t\t\tostr = write_num('n', nstr, myv);\n\t\t\tif(myv < 0 && out[0] && out[0].t == 't') {\n\t\t\t\tostr = ostr.substr(1);\n\t\t\t\tout[0].v = \"-\" + out[0].v;\n\t\t\t}\n\t\t}\n\t\tjj=ostr.length-1;\n\t\tvar decpt = out.length;\n\t\tfor(i=0; i < out.length; ++i) if(out[i] != null && out[i].t != 't' && out[i].v.indexOf(\".\") > -1) { decpt = i; break; }\n\t\tvar lasti=out.length;\n\t\tif(decpt === out.length && ostr.indexOf(\"E\") === -1) {\n\t\t\tfor(i=out.length-1; i>= 0;--i) {\n\t\t\t\tif(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue;\n\t\t\t\tif(jj>=out[i].v.length-1) { jj -= out[i].v.length; out[i].v = ostr.substr(jj+1, out[i].v.length); }\n\t\t\t\telse if(jj < 0) out[i].v = \"\";\n\t\t\t\telse { out[i].v = ostr.substr(0, jj+1); jj = -1; }\n\t\t\t\tout[i].t = 't';\n\t\t\t\tlasti = i;\n\t\t\t}\n\t\t\tif(jj>=0 && lasti<out.length) out[lasti].v = ostr.substr(0,jj+1) + out[lasti].v;\n\t\t}\n\t\telse if(decpt !== out.length && ostr.indexOf(\"E\") === -1) {\n\t\t\tjj = ostr.indexOf(\".\")-1;\n\t\t\tfor(i=decpt; i>= 0; --i) {\n\t\t\t\tif(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue;\n\t\t\t\tj=out[i].v.indexOf(\".\")>-1&&i===decpt?out[i].v.indexOf(\".\")-1:out[i].v.length-1;\n\t\t\t\tvv = out[i].v.substr(j+1);\n\t\t\t\tfor(; j>=0; --j) {\n\t\t\t\t\tif(jj>=0 && (out[i].v.charAt(j) === \"0\" || out[i].v.charAt(j) === \"#\")) vv = ostr.charAt(jj--) + vv;\n\t\t\t\t}\n\t\t\t\tout[i].v = vv;\n\t\t\t\tout[i].t = 't';\n\t\t\t\tlasti = i;\n\t\t\t}\n\t\t\tif(jj>=0 && lasti<out.length) out[lasti].v = ostr.substr(0,jj+1) + out[lasti].v;\n\t\t\tjj = ostr.indexOf(\".\")+1;\n\t\t\tfor(i=decpt; i<out.length; ++i) {\n\t\t\t\tif(out[i] == null || ('n?('.indexOf(out[i].t) === -1 && i !== decpt)) continue;\n\t\t\t\tj=out[i].v.indexOf(\".\")>-1&&i===decpt?out[i].v.indexOf(\".\")+1:0;\n\t\t\t\tvv = out[i].v.substr(0,j);\n\t\t\t\tfor(; j<out[i].v.length; ++j) {\n\t\t\t\t\tif(jj<ostr.length) vv += ostr.charAt(jj++);\n\t\t\t\t}\n\t\t\t\tout[i].v = vv;\n\t\t\t\tout[i].t = 't';\n\t\t\t\tlasti = i;\n\t\t\t}\n\t\t}\n\t}\n\tfor(i=0; i<out.length; ++i) if(out[i] != null && 'n?'.indexOf(out[i].t)>-1) {\n\t\tmyv = (flen >1 && v < 0 && i>0 && out[i-1].v === \"-\" ? -v:v);\n\t\tout[i].v = write_num(out[i].t, out[i].v, myv);\n\t\tout[i].t = 't';\n\t}\n\tvar retval = \"\";\n\tfor(i=0; i !== out.length; ++i) if(out[i] != null) retval += out[i].v;\n\treturn retval;\n}\n\nvar cfregex2 = /\\[(=|>[=]?|<[>=]?)(-?\\d+(?:\\.\\d*)?)\\]/;\nfunction chkcond(v, rr) {\n\tif(rr == null) return false;\n\tvar thresh = parseFloat(rr[2]);\n\tswitch(rr[1]) {\n\t\tcase \"=\":  if(v == thresh) return true; break;\n\t\tcase \">\":  if(v >  thresh) return true; break;\n\t\tcase \"<\":  if(v <  thresh) return true; break;\n\t\tcase \"<>\": if(v != thresh) return true; break;\n\t\tcase \">=\": if(v >= thresh) return true; break;\n\t\tcase \"<=\": if(v <= thresh) return true; break;\n\t}\n\treturn false;\n}\nfunction choose_fmt(f/*:string*/, v/*:any*/) {\n\tvar fmt = SSF_split_fmt(f);\n\tvar l = fmt.length, lat = fmt[l-1].indexOf(\"@\");\n\tif(l<4 && lat>-1) --l;\n\tif(fmt.length > 4) throw new Error(\"cannot find right format for |\" + fmt.join(\"|\") + \"|\");\n\tif(typeof v !== \"number\") return [4, fmt.length === 4 || lat>-1?fmt[fmt.length-1]:\"@\"];\n\tswitch(fmt.length) {\n\t\tcase 1: fmt = lat>-1 ? [\"General\", \"General\", \"General\", fmt[0]] : [fmt[0], fmt[0], fmt[0], \"@\"]; break;\n\t\tcase 2: fmt = lat>-1 ? [fmt[0], fmt[0], fmt[0], fmt[1]] : [fmt[0], fmt[1], fmt[0], \"@\"]; break;\n\t\tcase 3: fmt = lat>-1 ? [fmt[0], fmt[1], fmt[0], fmt[2]] : [fmt[0], fmt[1], fmt[2], \"@\"]; break;\n\t\tcase 4: break;\n\t}\n\tvar ff = v > 0 ? fmt[0] : v < 0 ? fmt[1] : fmt[2];\n\tif(fmt[0].indexOf(\"[\") === -1 && fmt[1].indexOf(\"[\") === -1) return [l, ff];\n\tif(fmt[0].match(/\\[[=<>]/) != null || fmt[1].match(/\\[[=<>]/) != null) {\n\t\tvar m1 = fmt[0].match(cfregex2);\n\t\tvar m2 = fmt[1].match(cfregex2);\n\t\treturn chkcond(v, m1) ? [l, fmt[0]] : chkcond(v, m2) ? [l, fmt[1]] : [l, fmt[m1 != null && m2 != null ? 2 : 1]];\n\t}\n\treturn [l, ff];\n}\nfunction SSF_format(fmt/*:string|number*/,v/*:any*/,o/*:?any*/) {\n\tif(o == null) o = {};\n\tvar sfmt = \"\";\n\tswitch(typeof fmt) {\n\t\tcase \"string\":\n\t\t\tif(fmt == \"m/d/yy\" && o.dateNF) sfmt = o.dateNF;\n\t\t\telse sfmt = fmt;\n\t\t\tbreak;\n\t\tcase \"number\":\n\t\t\tif(fmt == 14 && o.dateNF) sfmt = o.dateNF;\n\t\t\telse sfmt = (o.table != null ? (o.table/*:any*/) : table_fmt)[fmt];\n\t\t\tif(sfmt == null) sfmt = (o.table && o.table[SSF_default_map[fmt]]) || table_fmt[SSF_default_map[fmt]];\n\t\t\tif(sfmt == null) sfmt = SSF_default_str[fmt] || \"General\";\n\t\t\tbreak;\n\t}\n\tif(SSF_isgeneral(sfmt,0)) return SSF_general(v, o);\n\tif(v instanceof Date) v = datenum_local(v, o.date1904);\n\tvar f = choose_fmt(sfmt, v);\n\tif(SSF_isgeneral(f[1])) return SSF_general(v, o);\n\tif(v === true) v = \"TRUE\"; else if(v === false) v = \"FALSE\";\n\telse if(v === \"\" || v == null) return \"\";\n\treturn eval_fmt(f[1], v, o, f[0]);\n}\nfunction SSF_load(fmt/*:string*/, idx/*:?number*/)/*:number*/ {\n\tif(typeof idx != 'number') {\n\t\tidx = +idx || -1;\n/*::if(typeof idx != 'number') return 0x188; */\n\t\tfor(var i = 0; i < 0x0188; ++i) {\n/*::if(typeof idx != 'number') return 0x188; */\n\t\t\tif(table_fmt[i] == undefined) { if(idx < 0) idx = i; continue; }\n\t\t\tif(table_fmt[i] == fmt) { idx = i; break; }\n\t\t}\n/*::if(typeof idx != 'number') return 0x188; */\n\t\tif(idx < 0) idx = 0x187;\n\t}\n/*::if(typeof idx != 'number') return 0x188; */\n\ttable_fmt[idx] = fmt;\n\treturn idx;\n}\nfunction SSF_load_table(tbl/*:SSFTable*/)/*:void*/ {\n\tfor(var i=0; i!=0x0188; ++i)\n\t\tif(tbl[i] !== undefined) SSF_load(tbl[i], i);\n}\n\nfunction make_ssf() {\n\ttable_fmt = SSF_init_table();\n}\n\nvar SSF = {\n\tformat: SSF_format,\n\tload: SSF_load,\n\t_table: table_fmt,\n\tload_table: SSF_load_table,\n\tparse_date_code: SSF_parse_date_code,\n\tis_date: fmt_is_date,\n\tget_table: function get_table() { return SSF._table = table_fmt; }\n};\n\nvar SSFImplicit/*{[number]:string}*/ = ({\n\t\"5\": '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t\"6\": '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t\"7\": '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t\"8\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\"23\": 'General', \"24\": 'General', \"25\": 'General', \"26\": 'General',\n\t\"27\": 'm/d/yy', \"28\": 'm/d/yy', \"29\": 'm/d/yy', \"30\": 'm/d/yy', \"31\": 'm/d/yy',\n\t\"32\": 'h:mm:ss', \"33\": 'h:mm:ss', \"34\": 'h:mm:ss', \"35\": 'h:mm:ss',\n\t\"36\": 'm/d/yy',\n\t\"41\": '_(* #,##0_);_(* \\(#,##0\\);_(* \"-\"_);_(@_)',\n\t\"42\": '_(\"$\"* #,##0_);_(\"$\"* \\(#,##0\\);_(\"$\"* \"-\"_);_(@_)',\n\t\"43\": '_(* #,##0.00_);_(* \\(#,##0.00\\);_(* \"-\"??_);_(@_)',\n\t\"44\": '_(\"$\"* #,##0.00_);_(\"$\"* \\(#,##0.00\\);_(\"$\"* \"-\"??_);_(@_)',\n\t\"50\": 'm/d/yy', \"51\": 'm/d/yy', \"52\": 'm/d/yy', \"53\": 'm/d/yy', \"54\": 'm/d/yy',\n\t\"55\": 'm/d/yy', \"56\": 'm/d/yy', \"57\": 'm/d/yy', \"58\": 'm/d/yy',\n\t\"59\": '0',\n\t\"60\": '0.00',\n\t\"61\": '#,##0',\n\t\"62\": '#,##0.00',\n\t\"63\": '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t\"64\": '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t\"65\": '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t\"66\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\"67\": '0%',\n\t\"68\": '0.00%',\n\t\"69\": '# ?/?',\n\t\"70\": '# ??/??',\n\t\"71\": 'm/d/yy',\n\t\"72\": 'm/d/yy',\n\t\"73\": 'd-mmm-yy',\n\t\"74\": 'd-mmm',\n\t\"75\": 'mmm-yy',\n\t\"76\": 'h:mm',\n\t\"77\": 'h:mm:ss',\n\t\"78\": 'm/d/yy h:mm',\n\t\"79\": 'mm:ss',\n\t\"80\": '[h]:mm:ss',\n\t\"81\": 'mmss.0'\n}/*:any*/);\n\n/* dateNF parse TODO: move to SSF */\nvar dateNFregex = /[dD]+|[mM]+|[yYeE]+|[Hh]+|[Ss]+/g;\nfunction dateNF_regex(dateNF/*:string|number*/)/*:RegExp*/ {\n\tvar fmt = typeof dateNF == \"number\" ? table_fmt[dateNF] : dateNF;\n\tfmt = fmt.replace(dateNFregex, \"(\\\\d+)\");\n\treturn new RegExp(\"^\" + fmt + \"$\");\n}\nfunction dateNF_fix(str/*:string*/, dateNF/*:string*/, match/*:Array<string>*/)/*:string*/ {\n\tvar Y = -1, m = -1, d = -1, H = -1, M = -1, S = -1;\n\t(dateNF.match(dateNFregex)||[]).forEach(function(n, i) {\n\t\tvar v = parseInt(match[i+1], 10);\n\t\tswitch(n.toLowerCase().charAt(0)) {\n\t\t\tcase 'y': Y = v; break; case 'd': d = v; break;\n\t\t\tcase 'h': H = v; break; case 's': S = v; break;\n\t\t\tcase 'm': if(H >= 0) M = v; else m = v; break;\n\t\t}\n\t});\n\tif(S >= 0 && M == -1 && m >= 0) { M = m; m = -1; }\n\tvar datestr = ((\"\" + (Y>=0?Y: new Date().getFullYear())).slice(-4) + \"-\" + (\"00\" + (m>=1?m:1)).slice(-2) + \"-\" + (\"00\" + (d>=1?d:1)).slice(-2));\n\tif(datestr.length == 7) datestr = \"0\" + datestr;\n\tif(datestr.length == 8) datestr = \"20\" + datestr;\n\tvar timestr = ((\"00\" + (H>=0?H:0)).slice(-2) + \":\" + (\"00\" + (M>=0?M:0)).slice(-2) + \":\" + (\"00\" + (S>=0?S:0)).slice(-2));\n\tif(H == -1 && M == -1 && S == -1) return datestr;\n\tif(Y == -1 && m == -1 && d == -1) return timestr;\n\treturn datestr + \"T\" + timestr;\n}\n\n/*::\ndeclare var ReadShift:any;\ndeclare var CheckField:any;\ndeclare var prep_blob:any;\ndeclare var __readUInt32LE:any;\ndeclare var __readInt32LE:any;\ndeclare var __toBuffer:any;\ndeclare var __utf16le:any;\ndeclare var bconcat:any;\ndeclare var s2a:any;\ndeclare var chr0:any;\ndeclare var chr1:any;\ndeclare var has_buf:boolean;\ndeclare var new_buf:any;\ndeclare var new_raw_buf:any;\ndeclare var new_unsafe_buf:any;\ndeclare var Buffer_from:any;\n*/\n/* cfb.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*jshint eqnull:true */\n/*exported CFB */\n/*global Uint8Array:false, Uint16Array:false */\n\n/*::\ntype SectorEntry = {\n\tname?:string;\n\tnodes?:Array<number>;\n\tdata:RawBytes;\n};\ntype SectorList = {\n\t[k:string|number]:SectorEntry;\n\tname:?string;\n\tfat_addrs:Array<number>;\n\tssz:number;\n}\ntype CFBFiles = {[n:string]:CFBEntry};\n*/\n/* crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*exported CRC32 */\nvar CRC32 = /*#__PURE__*/(function() {\nvar CRC32 = {};\nCRC32.version = '1.2.0';\n/* see perf/crc32table.js */\n/*global Int32Array */\nfunction signed_crc_table()/*:any*/ {\n\tvar c = 0, table/*:Array<number>*/ = new Array(256);\n\n\tfor(var n =0; n != 256; ++n){\n\t\tc = n;\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\ttable[n] = c;\n\t}\n\n\treturn typeof Int32Array !== 'undefined' ? new Int32Array(table) : table;\n}\n\nvar T0 = signed_crc_table();\nfunction slice_by_16_tables(T) {\n\tvar c = 0, v = 0, n = 0, table/*:Array<number>*/ = typeof Int32Array !== 'undefined' ? new Int32Array(4096) : new Array(4096) ;\n\n\tfor(n = 0; n != 256; ++n) table[n] = T[n];\n\tfor(n = 0; n != 256; ++n) {\n\t\tv = T[n];\n\t\tfor(c = 256 + n; c < 4096; c += 256) v = table[c] = (v >>> 8) ^ T[v & 0xFF];\n\t}\n\tvar out = [];\n\tfor(n = 1; n != 16; ++n) out[n - 1] = typeof Int32Array !== 'undefined' ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256);\n\treturn out;\n}\nvar TT = slice_by_16_tables(T0);\nvar T1 = TT[0],  T2 = TT[1],  T3 = TT[2],  T4 = TT[3],  T5 = TT[4];\nvar T6 = TT[5],  T7 = TT[6],  T8 = TT[7],  T9 = TT[8],  Ta = TT[9];\nvar Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14];\nfunction crc32_bstr(bstr/*:string*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed/*:: ? 0 : 0 */ ^ -1;\n\tfor(var i = 0, L = bstr.length; i < L;) C = (C>>>8) ^ T0[(C^bstr.charCodeAt(i++))&0xFF];\n\treturn ~C;\n}\n\nfunction crc32_buf(B/*:Uint8Array|Array<number>*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed/*:: ? 0 : 0 */ ^ -1, L = B.length - 15, i = 0;\n\tfor(; i < L;) C =\n\t\tTf[B[i++] ^ (C & 255)] ^\n\t\tTe[B[i++] ^ ((C >> 8) & 255)] ^\n\t\tTd[B[i++] ^ ((C >> 16) & 255)] ^\n\t\tTc[B[i++] ^ (C >>> 24)] ^\n\t\tTb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^\n\t\tT7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^\n\t\tT3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]];\n\tL += 15;\n\twhile(i < L) C = (C>>>8) ^ T0[(C^B[i++])&0xFF];\n\treturn ~C;\n}\n\nfunction crc32_str(str/*:string*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed ^ -1;\n\tfor(var i = 0, L = str.length, c = 0, d = 0; i < L;) {\n\t\tc = str.charCodeAt(i++);\n\t\tif(c < 0x80) {\n\t\t\tC = (C>>>8) ^ T0[(C^c)&0xFF];\n\t\t} else if(c < 0x800) {\n\t\t\tC = (C>>>8) ^ T0[(C ^ (192|((c>>6)&31)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\n\t\t} else if(c >= 0xD800 && c < 0xE000) {\n\t\t\tc = (c&1023)+64; d = str.charCodeAt(i++)&1023;\n\t\t\tC = (C>>>8) ^ T0[(C ^ (240|((c>>8)&7)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>2)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(d&63)))&0xFF];\n\t\t} else {\n\t\t\tC = (C>>>8) ^ T0[(C ^ (224|((c>>12)&15)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>6)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\n\t\t}\n\t}\n\treturn ~C;\n}\nCRC32.table = T0;\nCRC32.bstr = crc32_bstr;\nCRC32.buf = crc32_buf;\nCRC32.str = crc32_str;\nreturn CRC32;\n})();\n/* [MS-CFB] v20171201 */\nvar CFB = /*#__PURE__*/(function _CFB(){\nvar exports = {};\nexports.version = '1.2.1';\n/* [MS-CFB] 2.6.4 */\nfunction namecmp(l/*:string*/, r/*:string*/)/*:number*/ {\n\tvar L = l.split(\"/\"), R = r.split(\"/\");\n\tfor(var i = 0, c = 0, Z = Math.min(L.length, R.length); i < Z; ++i) {\n\t\tif((c = L[i].length - R[i].length)) return c;\n\t\tif(L[i] != R[i]) return L[i] < R[i] ? -1 : 1;\n\t}\n\treturn L.length - R.length;\n}\nfunction dirname(p/*:string*/)/*:string*/ {\n\tif(p.charAt(p.length - 1) == \"/\") return (p.slice(0,-1).indexOf(\"/\") === -1) ? p : dirname(p.slice(0, -1));\n\tvar c = p.lastIndexOf(\"/\");\n\treturn (c === -1) ? p : p.slice(0, c+1);\n}\n\nfunction filename(p/*:string*/)/*:string*/ {\n\tif(p.charAt(p.length - 1) == \"/\") return filename(p.slice(0, -1));\n\tvar c = p.lastIndexOf(\"/\");\n\treturn (c === -1) ? p : p.slice(c+1);\n}\n/* -------------------------------------------------------------------------- */\n/* DOS Date format:\n   high|YYYYYYYm.mmmddddd.HHHHHMMM.MMMSSSSS|low\n   add 1980 to stored year\n   stored second should be doubled\n*/\n\n/* write JS date to buf as a DOS date */\nfunction write_dos_date(buf/*:CFBlob*/, date/*:Date|string*/) {\n\tif(typeof date === \"string\") date = new Date(date);\n\tvar hms/*:number*/ = date.getHours();\n\thms = hms << 6 | date.getMinutes();\n\thms = hms << 5 | (date.getSeconds()>>>1);\n\tbuf.write_shift(2, hms);\n\tvar ymd/*:number*/ = (date.getFullYear() - 1980);\n\tymd = ymd << 4 | (date.getMonth()+1);\n\tymd = ymd << 5 | date.getDate();\n\tbuf.write_shift(2, ymd);\n}\n\n/* read four bytes from buf and interpret as a DOS date */\nfunction parse_dos_date(buf/*:CFBlob*/)/*:Date*/ {\n\tvar hms = buf.read_shift(2) & 0xFFFF;\n\tvar ymd = buf.read_shift(2) & 0xFFFF;\n\tvar val = new Date();\n\tvar d = ymd & 0x1F; ymd >>>= 5;\n\tvar m = ymd & 0x0F; ymd >>>= 4;\n\tval.setMilliseconds(0);\n\tval.setFullYear(ymd + 1980);\n\tval.setMonth(m-1);\n\tval.setDate(d);\n\tvar S = hms & 0x1F; hms >>>= 5;\n\tvar M = hms & 0x3F; hms >>>= 6;\n\tval.setHours(hms);\n\tval.setMinutes(M);\n\tval.setSeconds(S<<1);\n\treturn val;\n}\nfunction parse_extra_field(blob/*:CFBlob*/)/*:any*/ {\n\tprep_blob(blob, 0);\n\tvar o = /*::(*/{}/*:: :any)*/;\n\tvar flags = 0;\n\twhile(blob.l <= blob.length - 4) {\n\t\tvar type = blob.read_shift(2);\n\t\tvar sz = blob.read_shift(2), tgt = blob.l + sz;\n\t\tvar p = {};\n\t\tswitch(type) {\n\t\t\t/* UNIX-style Timestamps */\n\t\t\tcase 0x5455: {\n\t\t\t\tflags = blob.read_shift(1);\n\t\t\t\tif(flags & 1) p.mtime = blob.read_shift(4);\n\t\t\t\t/* for some reason, CD flag corresponds to LFH */\n\t\t\t\tif(sz > 5) {\n\t\t\t\t\tif(flags & 2) p.atime = blob.read_shift(4);\n\t\t\t\t\tif(flags & 4) p.ctime = blob.read_shift(4);\n\t\t\t\t}\n\t\t\t\tif(p.mtime) p.mt = new Date(p.mtime*1000);\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tblob.l = tgt;\n\t\to[type] = p;\n\t}\n\treturn o;\n}\nvar fs/*:: = require('fs'); */;\nfunction get_fs() { return fs || (fs = {}); }\nfunction parse(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\nif(file[0] == 0x50 && file[1] == 0x4b) return parse_zip(file, options);\nif((file[0] | 0x20) == 0x6d && (file[1]|0x20) == 0x69) return parse_mad(file, options);\nif(file.length < 512) throw new Error(\"CFB file size \" + file.length + \" < 512\");\nvar mver = 3;\nvar ssz = 512;\nvar nmfs = 0; // number of mini FAT sectors\nvar difat_sec_cnt = 0;\nvar dir_start = 0;\nvar minifat_start = 0;\nvar difat_start = 0;\n\nvar fat_addrs/*:Array<number>*/ = []; // locations of FAT sectors\n\n/* [MS-CFB] 2.2 Compound File Header */\nvar blob/*:CFBlob*/ = /*::(*/file.slice(0,512)/*:: :any)*/;\nprep_blob(blob, 0);\n\n/* major version */\nvar mv = check_get_mver(blob);\nmver = mv[0];\nswitch(mver) {\n\tcase 3: ssz = 512; break; case 4: ssz = 4096; break;\n\tcase 0: if(mv[1] == 0) return parse_zip(file, options);\n\t/* falls through */\n\tdefault: throw new Error(\"Major Version: Expected 3 or 4 saw \" + mver);\n}\n\n/* reprocess header */\nif(ssz !== 512) { blob = /*::(*/file.slice(0,ssz)/*:: :any)*/; prep_blob(blob, 28 /* blob.l */); }\n/* Save header for final object */\nvar header/*:RawBytes*/ = file.slice(0,ssz);\n\ncheck_shifts(blob, mver);\n\n// Number of Directory Sectors\nvar dir_cnt/*:number*/ = blob.read_shift(4, 'i');\nif(mver === 3 && dir_cnt !== 0) throw new Error('# Directory Sectors: Expected 0 saw ' + dir_cnt);\n\n// Number of FAT Sectors\nblob.l += 4;\n\n// First Directory Sector Location\ndir_start = blob.read_shift(4, 'i');\n\n// Transaction Signature\nblob.l += 4;\n\n// Mini Stream Cutoff Size\nblob.chk('00100000', 'Mini Stream Cutoff Size: ');\n\n// First Mini FAT Sector Location\nminifat_start = blob.read_shift(4, 'i');\n\n// Number of Mini FAT Sectors\nnmfs = blob.read_shift(4, 'i');\n\n// First DIFAT sector location\ndifat_start = blob.read_shift(4, 'i');\n\n// Number of DIFAT Sectors\ndifat_sec_cnt = blob.read_shift(4, 'i');\n\n// Grab FAT Sector Locations\nfor(var q = -1, j = 0; j < 109; ++j) { /* 109 = (512 - blob.l)>>>2; */\n\tq = blob.read_shift(4, 'i');\n\tif(q<0) break;\n\tfat_addrs[j] = q;\n}\n\n/** Break the file up into sectors */\nvar sectors/*:Array<RawBytes>*/ = sectorify(file, ssz);\n\nsleuth_fat(difat_start, difat_sec_cnt, sectors, ssz, fat_addrs);\n\n/** Chains */\nvar sector_list/*:SectorList*/ = make_sector_list(sectors, dir_start, fat_addrs, ssz);\n\nsector_list[dir_start].name = \"!Directory\";\nif(nmfs > 0 && minifat_start !== ENDOFCHAIN) sector_list[minifat_start].name = \"!MiniFAT\";\nsector_list[fat_addrs[0]].name = \"!FAT\";\nsector_list.fat_addrs = fat_addrs;\nsector_list.ssz = ssz;\n\n/* [MS-CFB] 2.6.1 Compound File Directory Entry */\nvar files/*:CFBFiles*/ = {}, Paths/*:Array<string>*/ = [], FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array<string>*/ = [];\nread_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex, minifat_start);\n\nbuild_full_paths(FileIndex, FullPaths, Paths);\nPaths.shift();\n\nvar o = {\n\tFileIndex: FileIndex,\n\tFullPaths: FullPaths\n};\n\n// $FlowIgnore\nif(options && options.raw) o.raw = {header: header, sectors: sectors};\nreturn o;\n} // parse\n\n/* [MS-CFB] 2.2 Compound File Header -- read up to major version */\nfunction check_get_mver(blob/*:CFBlob*/)/*:[number, number]*/ {\n\tif(blob[blob.l] == 0x50 && blob[blob.l + 1] == 0x4b) return [0, 0];\n\t// header signature 8\n\tblob.chk(HEADER_SIGNATURE, 'Header Signature: ');\n\n\t// clsid 16\n\t//blob.chk(HEADER_CLSID, 'CLSID: ');\n\tblob.l += 16;\n\n\t// minor version 2\n\tvar mver/*:number*/ = blob.read_shift(2, 'u');\n\n\treturn [blob.read_shift(2,'u'), mver];\n}\nfunction check_shifts(blob/*:CFBlob*/, mver/*:number*/)/*:void*/ {\n\tvar shift = 0x09;\n\n\t// Byte Order\n\t//blob.chk('feff', 'Byte Order: '); // note: some writers put 0xffff\n\tblob.l += 2;\n\n\t// Sector Shift\n\tswitch((shift = blob.read_shift(2))) {\n\t\tcase 0x09: if(mver != 3) throw new Error('Sector Shift: Expected 9 saw ' + shift); break;\n\t\tcase 0x0c: if(mver != 4) throw new Error('Sector Shift: Expected 12 saw ' + shift); break;\n\t\tdefault: throw new Error('Sector Shift: Expected 9 or 12 saw ' + shift);\n\t}\n\n\t// Mini Sector Shift\n\tblob.chk('0600', 'Mini Sector Shift: ');\n\n\t// Reserved\n\tblob.chk('000000000000', 'Reserved: ');\n}\n\n/** Break the file up into sectors */\nfunction sectorify(file/*:RawBytes*/, ssz/*:number*/)/*:Array<RawBytes>*/ {\n\tvar nsectors = Math.ceil(file.length/ssz)-1;\n\tvar sectors/*:Array<RawBytes>*/ = [];\n\tfor(var i=1; i < nsectors; ++i) sectors[i-1] = file.slice(i*ssz,(i+1)*ssz);\n\tsectors[nsectors-1] = file.slice(nsectors*ssz);\n\treturn sectors;\n}\n\n/* [MS-CFB] 2.6.4 Red-Black Tree */\nfunction build_full_paths(FI/*:CFBFileIndex*/, FP/*:Array<string>*/, Paths/*:Array<string>*/)/*:void*/ {\n\tvar i = 0, L = 0, R = 0, C = 0, j = 0, pl = Paths.length;\n\tvar dad/*:Array<number>*/ = [], q/*:Array<number>*/ = [];\n\n\tfor(; i < pl; ++i) { dad[i]=q[i]=i; FP[i]=Paths[i]; }\n\n\tfor(; j < q.length; ++j) {\n\t\ti = q[j];\n\t\tL = FI[i].L; R = FI[i].R; C = FI[i].C;\n\t\tif(dad[i] === i) {\n\t\t\tif(L !== -1 /*NOSTREAM*/ && dad[L] !== L) dad[i] = dad[L];\n\t\t\tif(R !== -1 && dad[R] !== R) dad[i] = dad[R];\n\t\t}\n\t\tif(C !== -1 /*NOSTREAM*/) dad[C] = i;\n\t\tif(L !== -1 && i != dad[i]) { dad[L] = dad[i]; if(q.lastIndexOf(L) < j) q.push(L); }\n\t\tif(R !== -1 && i != dad[i]) { dad[R] = dad[i]; if(q.lastIndexOf(R) < j) q.push(R); }\n\t}\n\tfor(i=1; i < pl; ++i) if(dad[i] === i) {\n\t\tif(R !== -1 /*NOSTREAM*/ && dad[R] !== R) dad[i] = dad[R];\n\t\telse if(L !== -1 && dad[L] !== L) dad[i] = dad[L];\n\t}\n\n\tfor(i=1; i < pl; ++i) {\n\t\tif(FI[i].type === 0 /* unknown */) continue;\n\t\tj = i;\n\t\tif(j != dad[j]) do {\n\t\t\tj = dad[j];\n\t\t\tFP[i] = FP[j] + \"/\" + FP[i];\n\t\t} while (j !== 0 && -1 !== dad[j] && j != dad[j]);\n\t\tdad[i] = -1;\n\t}\n\n\tFP[0] += \"/\";\n\tfor(i=1; i < pl; ++i) {\n\t\tif(FI[i].type !== 2 /* stream */) FP[i] += \"/\";\n\t}\n}\n\nfunction get_mfat_entry(entry/*:CFBEntry*/, payload/*:RawBytes*/, mini/*:?RawBytes*/)/*:CFBlob*/ {\n\tvar start = entry.start, size = entry.size;\n\t//return (payload.slice(start*MSSZ, start*MSSZ + size)/*:any*/);\n\tvar o = [];\n\tvar idx = start;\n\twhile(mini && size > 0 && idx >= 0) {\n\t\to.push(payload.slice(idx * MSSZ, idx * MSSZ + MSSZ));\n\t\tsize -= MSSZ;\n\t\tidx = __readInt32LE(mini, idx * 4);\n\t}\n\tif(o.length === 0) return (new_buf(0)/*:any*/);\n\treturn (bconcat(o).slice(0, entry.size)/*:any*/);\n}\n\n/** Chase down the rest of the DIFAT chain to build a comprehensive list\n    DIFAT chains by storing the next sector number as the last 32 bits */\nfunction sleuth_fat(idx/*:number*/, cnt/*:number*/, sectors/*:Array<RawBytes>*/, ssz/*:number*/, fat_addrs)/*:void*/ {\n\tvar q/*:number*/ = ENDOFCHAIN;\n\tif(idx === ENDOFCHAIN) {\n\t\tif(cnt !== 0) throw new Error(\"DIFAT chain shorter than expected\");\n\t} else if(idx !== -1 /*FREESECT*/) {\n\t\tvar sector = sectors[idx], m = (ssz>>>2)-1;\n\t\tif(!sector) return;\n\t\tfor(var i = 0; i < m; ++i) {\n\t\t\tif((q = __readInt32LE(sector,i*4)) === ENDOFCHAIN) break;\n\t\t\tfat_addrs.push(q);\n\t\t}\n\t\tsleuth_fat(__readInt32LE(sector,ssz-4),cnt - 1, sectors, ssz, fat_addrs);\n\t}\n}\n\n/** Follow the linked list of sectors for a given starting point */\nfunction get_sector_list(sectors/*:Array<RawBytes>*/, start/*:number*/, fat_addrs/*:Array<number>*/, ssz/*:number*/, chkd/*:?Array<boolean>*/)/*:SectorEntry*/ {\n\tvar buf/*:Array<number>*/ = [], buf_chain/*:Array<any>*/ = [];\n\tif(!chkd) chkd = [];\n\tvar modulus = ssz - 1, j = 0, jj = 0;\n\tfor(j=start; j>=0;) {\n\t\tchkd[j] = true;\n\t\tbuf[buf.length] = j;\n\t\tbuf_chain.push(sectors[j]);\n\t\tvar addr = fat_addrs[Math.floor(j*4/ssz)];\n\t\tjj = ((j*4) & modulus);\n\t\tif(ssz < 4 + jj) throw new Error(\"FAT boundary crossed: \" + j + \" 4 \"+ssz);\n\t\tif(!sectors[addr]) break;\n\t\tj = __readInt32LE(sectors[addr], jj);\n\t}\n\treturn {nodes: buf, data:__toBuffer([buf_chain])};\n}\n\n/** Chase down the sector linked lists */\nfunction make_sector_list(sectors/*:Array<RawBytes>*/, dir_start/*:number*/, fat_addrs/*:Array<number>*/, ssz/*:number*/)/*:SectorList*/ {\n\tvar sl = sectors.length, sector_list/*:SectorList*/ = ([]/*:any*/);\n\tvar chkd/*:Array<boolean>*/ = [], buf/*:Array<number>*/ = [], buf_chain/*:Array<RawBytes>*/ = [];\n\tvar modulus = ssz - 1, i=0, j=0, k=0, jj=0;\n\tfor(i=0; i < sl; ++i) {\n\t\tbuf = ([]/*:Array<number>*/);\n\t\tk = (i + dir_start); if(k >= sl) k-=sl;\n\t\tif(chkd[k]) continue;\n\t\tbuf_chain = [];\n\t\tvar seen = [];\n\t\tfor(j=k; j>=0;) {\n\t\t\tseen[j] = true;\n\t\t\tchkd[j] = true;\n\t\t\tbuf[buf.length] = j;\n\t\t\tbuf_chain.push(sectors[j]);\n\t\t\tvar addr/*:number*/ = fat_addrs[Math.floor(j*4/ssz)];\n\t\t\tjj = ((j*4) & modulus);\n\t\t\tif(ssz < 4 + jj) throw new Error(\"FAT boundary crossed: \" + j + \" 4 \"+ssz);\n\t\t\tif(!sectors[addr]) break;\n\t\t\tj = __readInt32LE(sectors[addr], jj);\n\t\t\tif(seen[j]) break;\n\t\t}\n\t\tsector_list[k] = ({nodes: buf, data:__toBuffer([buf_chain])}/*:SectorEntry*/);\n\t}\n\treturn sector_list;\n}\n\n/* [MS-CFB] 2.6.1 Compound File Directory Entry */\nfunction read_directory(dir_start/*:number*/, sector_list/*:SectorList*/, sectors/*:Array<RawBytes>*/, Paths/*:Array<string>*/, nmfs, files, FileIndex, mini) {\n\tvar minifat_store = 0, pl = (Paths.length?2:0);\n\tvar sector = sector_list[dir_start].data;\n\tvar i = 0, namelen = 0, name;\n\tfor(; i < sector.length; i+= 128) {\n\t\tvar blob/*:CFBlob*/ = /*::(*/sector.slice(i, i+128)/*:: :any)*/;\n\t\tprep_blob(blob, 64);\n\t\tnamelen = blob.read_shift(2);\n\t\tname = __utf16le(blob,0,namelen-pl);\n\t\tPaths.push(name);\n\t\tvar o/*:CFBEntry*/ = ({\n\t\t\tname:  name,\n\t\t\ttype:  blob.read_shift(1),\n\t\t\tcolor: blob.read_shift(1),\n\t\t\tL:     blob.read_shift(4, 'i'),\n\t\t\tR:     blob.read_shift(4, 'i'),\n\t\t\tC:     blob.read_shift(4, 'i'),\n\t\t\tclsid: blob.read_shift(16),\n\t\t\tstate: blob.read_shift(4, 'i'),\n\t\t\tstart: 0,\n\t\t\tsize: 0\n\t\t});\n\t\tvar ctime/*:number*/ = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2);\n\t\tif(ctime !== 0) o.ct = read_date(blob, blob.l-8);\n\t\tvar mtime/*:number*/ = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2);\n\t\tif(mtime !== 0) o.mt = read_date(blob, blob.l-8);\n\t\to.start = blob.read_shift(4, 'i');\n\t\to.size = blob.read_shift(4, 'i');\n\t\tif(o.size < 0 && o.start < 0) { o.size = o.type = 0; o.start = ENDOFCHAIN; o.name = \"\"; }\n\t\tif(o.type === 5) { /* root */\n\t\t\tminifat_store = o.start;\n\t\t\tif(nmfs > 0 && minifat_store !== ENDOFCHAIN) sector_list[minifat_store].name = \"!StreamData\";\n\t\t\t/*minifat_size = o.size;*/\n\t\t} else if(o.size >= 4096 /* MSCSZ */) {\n\t\t\to.storage = 'fat';\n\t\t\tif(sector_list[o.start] === undefined) sector_list[o.start] = get_sector_list(sectors, o.start, sector_list.fat_addrs, sector_list.ssz);\n\t\t\tsector_list[o.start].name = o.name;\n\t\t\to.content = (sector_list[o.start].data.slice(0,o.size)/*:any*/);\n\t\t} else {\n\t\t\to.storage = 'minifat';\n\t\t\tif(o.size < 0) o.size = 0;\n\t\t\telse if(minifat_store !== ENDOFCHAIN && o.start !== ENDOFCHAIN && sector_list[minifat_store]) {\n\t\t\t\to.content = get_mfat_entry(o, sector_list[minifat_store].data, (sector_list[mini]||{}).data);\n\t\t\t}\n\t\t}\n\t\tif(o.content) prep_blob(o.content, 0);\n\t\tfiles[name] = o;\n\t\tFileIndex.push(o);\n\t}\n}\n\nfunction read_date(blob/*:RawBytes|CFBlob*/, offset/*:number*/)/*:Date*/ {\n\treturn new Date(( ( (__readUInt32LE(blob,offset+4)/1e7)*Math.pow(2,32)+__readUInt32LE(blob,offset)/1e7 ) - 11644473600)*1000);\n}\n\nfunction read_file(filename/*:string*/, options/*:CFBReadOpts*/) {\n\tget_fs();\n\treturn parse(fs.readFileSync(filename), options);\n}\n\nfunction read(blob/*:RawBytes|string*/, options/*:CFBReadOpts*/) {\n\tvar type = options && options.type;\n\tif(!type) {\n\t\tif(has_buf && Buffer.isBuffer(blob)) type = \"buffer\";\n\t}\n\tswitch(type || \"base64\") {\n\t\tcase \"file\": /*:: if(typeof blob !== 'string') throw \"Must pass a filename when type='file'\"; */return read_file(blob, options);\n\t\tcase \"base64\": /*:: if(typeof blob !== 'string') throw \"Must pass a base64-encoded binary string when type='file'\"; */return parse(s2a(Base64_decode(blob)), options);\n\t\tcase \"binary\": /*:: if(typeof blob !== 'string') throw \"Must pass a binary string when type='file'\"; */return parse(s2a(blob), options);\n\t}\n\treturn parse(/*::typeof blob == 'string' ? new Buffer(blob, 'utf-8') : */blob, options);\n}\n\nfunction init_cfb(cfb/*:CFBContainer*/, opts/*:?any*/)/*:void*/ {\n\tvar o = opts || {}, root = o.root || \"Root Entry\";\n\tif(!cfb.FullPaths) cfb.FullPaths = [];\n\tif(!cfb.FileIndex) cfb.FileIndex = [];\n\tif(cfb.FullPaths.length !== cfb.FileIndex.length) throw new Error(\"inconsistent CFB structure\");\n\tif(cfb.FullPaths.length === 0) {\n\t\tcfb.FullPaths[0] = root + \"/\";\n\t\tcfb.FileIndex[0] = ({ name: root, type: 5 }/*:any*/);\n\t}\n\tif(o.CLSID) cfb.FileIndex[0].clsid = o.CLSID;\n\tseed_cfb(cfb);\n}\nfunction seed_cfb(cfb/*:CFBContainer*/)/*:void*/ {\n\tvar nm = \"\\u0001Sh33tJ5\";\n\tif(CFB.find(cfb, \"/\" + nm)) return;\n\tvar p = new_buf(4); p[0] = 55; p[1] = p[3] = 50; p[2] = 54;\n\tcfb.FileIndex.push(({ name: nm, type: 2, content:p, size:4, L:69, R:69, C:69 }/*:any*/));\n\tcfb.FullPaths.push(cfb.FullPaths[0] + nm);\n\trebuild_cfb(cfb);\n}\nfunction rebuild_cfb(cfb/*:CFBContainer*/, f/*:?boolean*/)/*:void*/ {\n\tinit_cfb(cfb);\n\tvar gc = false, s = false;\n\tfor(var i = cfb.FullPaths.length - 1; i >= 0; --i) {\n\t\tvar _file = cfb.FileIndex[i];\n\t\tswitch(_file.type) {\n\t\t\tcase 0:\n\t\t\t\tif(s) gc = true;\n\t\t\t\telse { cfb.FileIndex.pop(); cfb.FullPaths.pop(); }\n\t\t\t\tbreak;\n\t\t\tcase 1: case 2: case 5:\n\t\t\t\ts = true;\n\t\t\t\tif(isNaN(_file.R * _file.L * _file.C)) gc = true;\n\t\t\t\tif(_file.R > -1 && _file.L > -1 && _file.R == _file.L) gc = true;\n\t\t\t\tbreak;\n\t\t\tdefault: gc = true; break;\n\t\t}\n\t}\n\tif(!gc && !f) return;\n\n\tvar now = new Date(1987, 1, 19), j = 0;\n\t// Track which names exist\n\tvar fullPaths = Object.create ? Object.create(null) : {};\n\tvar data/*:Array<[string, CFBEntry]>*/ = [];\n\tfor(i = 0; i < cfb.FullPaths.length; ++i) {\n\t\tfullPaths[cfb.FullPaths[i]] = true;\n\t\tif(cfb.FileIndex[i].type === 0) continue;\n\t\tdata.push([cfb.FullPaths[i], cfb.FileIndex[i]]);\n\t}\n\tfor(i = 0; i < data.length; ++i) {\n\t\tvar dad = dirname(data[i][0]);\n\t\ts = fullPaths[dad];\n\t\tif(!s) {\n\t\t\tdata.push([dad, ({\n\t\t\t\tname: filename(dad).replace(\"/\",\"\"),\n\t\t\t\ttype: 1,\n\t\t\t\tclsid: HEADER_CLSID,\n\t\t\t\tct: now, mt: now,\n\t\t\t\tcontent: null\n\t\t\t}/*:any*/)]);\n\t\t\t// Add name to set\n\t\t\tfullPaths[dad] = true;\n\t\t}\n\t}\n\n\tdata.sort(function(x,y) { return namecmp(x[0], y[0]); });\n\tcfb.FullPaths = []; cfb.FileIndex = [];\n\tfor(i = 0; i < data.length; ++i) { cfb.FullPaths[i] = data[i][0]; cfb.FileIndex[i] = data[i][1]; }\n\tfor(i = 0; i < data.length; ++i) {\n\t\tvar elt = cfb.FileIndex[i];\n\t\tvar nm = cfb.FullPaths[i];\n\n\t\telt.name =  filename(nm).replace(\"/\",\"\");\n\t\telt.L = elt.R = elt.C = -(elt.color = 1);\n\t\telt.size = elt.content ? elt.content.length : 0;\n\t\telt.start = 0;\n\t\telt.clsid = (elt.clsid || HEADER_CLSID);\n\t\tif(i === 0) {\n\t\t\telt.C = data.length > 1 ? 1 : -1;\n\t\t\telt.size = 0;\n\t\t\telt.type = 5;\n\t\t} else if(nm.slice(-1) == \"/\") {\n\t\t\tfor(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==nm) break;\n\t\t\telt.C = j >= data.length ? -1 : j;\n\t\t\tfor(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==dirname(nm)) break;\n\t\t\telt.R = j >= data.length ? -1 : j;\n\t\t\telt.type = 1;\n\t\t} else {\n\t\t\tif(dirname(cfb.FullPaths[i+1]||\"\") == dirname(nm)) elt.R = i + 1;\n\t\t\telt.type = 2;\n\t\t}\n\t}\n\n}\n\nfunction _write(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes|string*/ {\n\tvar _opts = options || {};\n\t/* MAD is order-sensitive, skip rebuild and sort */\n\tif(_opts.fileType == 'mad') return write_mad(cfb, _opts);\n\trebuild_cfb(cfb);\n\tswitch(_opts.fileType) {\n\t\tcase 'zip': return write_zip(cfb, _opts);\n\t\t//case 'mad': return write_mad(cfb, _opts);\n\t}\n\tvar L = (function(cfb/*:CFBContainer*/)/*:Array<number>*/{\n\t\tvar mini_size = 0, fat_size = 0;\n\t\tfor(var i = 0; i < cfb.FileIndex.length; ++i) {\n\t\t\tvar file = cfb.FileIndex[i];\n\t\t\tif(!file.content) continue;\n\t\t\t/*:: if(file.content == null) throw new Error(\"unreachable\"); */\n\t\t\tvar flen = file.content.length;\n\t\t\tif(flen > 0){\n\t\t\t\tif(flen < 0x1000) mini_size += (flen + 0x3F) >> 6;\n\t\t\t\telse fat_size += (flen + 0x01FF) >> 9;\n\t\t\t}\n\t\t}\n\t\tvar dir_cnt = (cfb.FullPaths.length +3) >> 2;\n\t\tvar mini_cnt = (mini_size + 7) >> 3;\n\t\tvar mfat_cnt = (mini_size + 0x7F) >> 7;\n\t\tvar fat_base = mini_cnt + fat_size + dir_cnt + mfat_cnt;\n\t\tvar fat_cnt = (fat_base + 0x7F) >> 7;\n\t\tvar difat_cnt = fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F);\n\t\twhile(((fat_base + fat_cnt + difat_cnt + 0x7F) >> 7) > fat_cnt) difat_cnt = ++fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F);\n\t\tvar L =  [1, difat_cnt, fat_cnt, mfat_cnt, dir_cnt, fat_size, mini_size, 0];\n\t\tcfb.FileIndex[0].size = mini_size << 6;\n\t\tL[7] = (cfb.FileIndex[0].start=L[0]+L[1]+L[2]+L[3]+L[4]+L[5])+((L[6]+7) >> 3);\n\t\treturn L;\n\t})(cfb);\n\tvar o = new_buf(L[7] << 9);\n\tvar i = 0, T = 0;\n\t{\n\t\tfor(i = 0; i < 8; ++i) o.write_shift(1, HEADER_SIG[i]);\n\t\tfor(i = 0; i < 8; ++i) o.write_shift(2, 0);\n\t\to.write_shift(2, 0x003E);\n\t\to.write_shift(2, 0x0003);\n\t\to.write_shift(2, 0xFFFE);\n\t\to.write_shift(2, 0x0009);\n\t\to.write_shift(2, 0x0006);\n\t\tfor(i = 0; i < 3; ++i) o.write_shift(2, 0);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, L[2]);\n\t\to.write_shift(4, L[0] + L[1] + L[2] + L[3] - 1);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, 1<<12);\n\t\to.write_shift(4, L[3] ? L[0] + L[1] + L[2] - 1: ENDOFCHAIN);\n\t\to.write_shift(4, L[3]);\n\t\to.write_shift(-4, L[1] ? L[0] - 1: ENDOFCHAIN);\n\t\to.write_shift(4, L[1]);\n\t\tfor(i = 0; i < 109; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1);\n\t}\n\tif(L[1]) {\n\t\tfor(T = 0; T < L[1]; ++T) {\n\t\t\tfor(; i < 236 + T * 127; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1);\n\t\t\to.write_shift(-4, T === L[1] - 1 ? ENDOFCHAIN : T + 1);\n\t\t}\n\t}\n\tvar chainit = function(w/*:number*/)/*:void*/ {\n\t\tfor(T += w; i<T-1; ++i) o.write_shift(-4, i+1);\n\t\tif(w) { ++i; o.write_shift(-4, ENDOFCHAIN); }\n\t};\n\tT = i = 0;\n\tfor(T+=L[1]; i<T; ++i) o.write_shift(-4, consts.DIFSECT);\n\tfor(T+=L[2]; i<T; ++i) o.write_shift(-4, consts.FATSECT);\n\tchainit(L[3]);\n\tchainit(L[4]);\n\tvar j/*:number*/ = 0, flen/*:number*/ = 0;\n\tvar file/*:CFBEntry*/ = cfb.FileIndex[0];\n\tfor(; j < cfb.FileIndex.length; ++j) {\n\t\tfile = cfb.FileIndex[j];\n\t\tif(!file.content) continue;\n\t\t/*:: if(file.content == null) throw new Error(\"unreachable\"); */\n\t\tflen = file.content.length;\n\t\tif(flen < 0x1000) continue;\n\t\tfile.start = T;\n\t\tchainit((flen + 0x01FF) >> 9);\n\t}\n\tchainit((L[6] + 7) >> 3);\n\twhile(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN);\n\tT = i = 0;\n\tfor(j = 0; j < cfb.FileIndex.length; ++j) {\n\t\tfile = cfb.FileIndex[j];\n\t\tif(!file.content) continue;\n\t\t/*:: if(file.content == null) throw new Error(\"unreachable\"); */\n\t\tflen = file.content.length;\n\t\tif(!flen || flen >= 0x1000) continue;\n\t\tfile.start = T;\n\t\tchainit((flen + 0x3F) >> 6);\n\t}\n\twhile(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN);\n\tfor(i = 0; i < L[4]<<2; ++i) {\n\t\tvar nm = cfb.FullPaths[i];\n\t\tif(!nm || nm.length === 0) {\n\t\t\tfor(j = 0; j < 17; ++j) o.write_shift(4, 0);\n\t\t\tfor(j = 0; j < 3; ++j) o.write_shift(4, -1);\n\t\t\tfor(j = 0; j < 12; ++j) o.write_shift(4, 0);\n\t\t\tcontinue;\n\t\t}\n\t\tfile = cfb.FileIndex[i];\n\t\tif(i === 0) file.start = file.size ? file.start - 1 : ENDOFCHAIN;\n\t\tvar _nm/*:string*/ = (i === 0 && _opts.root) || file.name;\n\t\tflen = 2*(_nm.length+1);\n\t\to.write_shift(64, _nm, \"utf16le\");\n\t\to.write_shift(2, flen);\n\t\to.write_shift(1, file.type);\n\t\to.write_shift(1, file.color);\n\t\to.write_shift(-4, file.L);\n\t\to.write_shift(-4, file.R);\n\t\to.write_shift(-4, file.C);\n\t\tif(!file.clsid) for(j = 0; j < 4; ++j) o.write_shift(4, 0);\n\t\telse o.write_shift(16, file.clsid, \"hex\");\n\t\to.write_shift(4, file.state || 0);\n\t\to.write_shift(4, 0); o.write_shift(4, 0);\n\t\to.write_shift(4, 0); o.write_shift(4, 0);\n\t\to.write_shift(4, file.start);\n\t\to.write_shift(4, file.size); o.write_shift(4, 0);\n\t}\n\tfor(i = 1; i < cfb.FileIndex.length; ++i) {\n\t\tfile = cfb.FileIndex[i];\n\t\t/*:: if(!file.content) throw new Error(\"unreachable\"); */\n\t\tif(file.size >= 0x1000) {\n\t\t\to.l = (file.start+1) << 9;\n\t\t\tif (has_buf && Buffer.isBuffer(file.content)) {\n\t\t\t\tfile.content.copy(o, o.l, 0, file.size);\n\t\t\t\t// o is a 0-filled Buffer so just set next offset\n\t\t\t\to.l += (file.size + 511) & -512;\n\t\t\t} else {\n\t\t\t\tfor(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]);\n\t\t\t\tfor(; j & 0x1FF; ++j) o.write_shift(1, 0);\n\t\t\t}\n\t\t}\n\t}\n\tfor(i = 1; i < cfb.FileIndex.length; ++i) {\n\t\tfile = cfb.FileIndex[i];\n\t\t/*:: if(!file.content) throw new Error(\"unreachable\"); */\n\t\tif(file.size > 0 && file.size < 0x1000) {\n\t\t\tif (has_buf && Buffer.isBuffer(file.content)) {\n\t\t\t\tfile.content.copy(o, o.l, 0, file.size);\n\t\t\t\t// o is a 0-filled Buffer so just set next offset\n\t\t\t\to.l += (file.size + 63) & -64;\n\t\t\t} else {\n\t\t\t\tfor(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]);\n\t\t\t\tfor(; j & 0x3F; ++j) o.write_shift(1, 0);\n\t\t\t}\n\t\t}\n\t}\n\tif (has_buf) {\n\t\to.l = o.length;\n\t} else {\n\t\t// When using Buffer, already 0-filled\n\t\twhile(o.l < o.length) o.write_shift(1, 0);\n\t}\n\treturn o;\n}\n/* [MS-CFB] 2.6.4 (Unicode 3.0.1 case conversion) */\nfunction find(cfb/*:CFBContainer*/, path/*:string*/)/*:?CFBEntry*/ {\n\tvar UCFullPaths/*:Array<string>*/ = cfb.FullPaths.map(function(x) { return x.toUpperCase(); });\n\tvar UCPaths/*:Array<string>*/ = UCFullPaths.map(function(x) { var y = x.split(\"/\"); return y[y.length - (x.slice(-1) == \"/\" ? 2 : 1)]; });\n\tvar k/*:boolean*/ = false;\n\tif(path.charCodeAt(0) === 47 /* \"/\" */) { k = true; path = UCFullPaths[0].slice(0, -1) + path; }\n\telse k = path.indexOf(\"/\") !== -1;\n\tvar UCPath/*:string*/ = path.toUpperCase();\n\tvar w/*:number*/ = k === true ? UCFullPaths.indexOf(UCPath) : UCPaths.indexOf(UCPath);\n\tif(w !== -1) return cfb.FileIndex[w];\n\n\tvar m = !UCPath.match(chr1);\n\tUCPath = UCPath.replace(chr0,'');\n\tif(m) UCPath = UCPath.replace(chr1,'!');\n\tfor(w = 0; w < UCFullPaths.length; ++w) {\n\t\tif((m ? UCFullPaths[w].replace(chr1,'!') : UCFullPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w];\n\t\tif((m ? UCPaths[w].replace(chr1,'!') : UCPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w];\n\t}\n\treturn null;\n}\n/** CFB Constants */\nvar MSSZ = 64; /* Mini Sector Size = 1<<6 */\n//var MSCSZ = 4096; /* Mini Stream Cutoff Size */\n/* 2.1 Compound File Sector Numbers and Types */\nvar ENDOFCHAIN = -2;\n/* 2.2 Compound File Header */\nvar HEADER_SIGNATURE = 'd0cf11e0a1b11ae1';\nvar HEADER_SIG = [0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1];\nvar HEADER_CLSID = '00000000000000000000000000000000';\nvar consts = {\n\t/* 2.1 Compund File Sector Numbers and Types */\n\tMAXREGSECT: -6,\n\tDIFSECT: -4,\n\tFATSECT: -3,\n\tENDOFCHAIN: ENDOFCHAIN,\n\tFREESECT: -1,\n\t/* 2.2 Compound File Header */\n\tHEADER_SIGNATURE: HEADER_SIGNATURE,\n\tHEADER_MINOR_VERSION: '3e00',\n\tMAXREGSID: -6,\n\tNOSTREAM: -1,\n\tHEADER_CLSID: HEADER_CLSID,\n\t/* 2.6.1 Compound File Directory Entry */\n\tEntryTypes: ['unknown','storage','stream','lockbytes','property','root']\n};\n\nfunction write_file(cfb/*:CFBContainer*/, filename/*:string*/, options/*:CFBWriteOpts*/)/*:void*/ {\n\tget_fs();\n\tvar o = _write(cfb, options);\n\t/*:: if(typeof Buffer == 'undefined' || !Buffer.isBuffer(o) || !(o instanceof Buffer)) throw new Error(\"unreachable\"); */\n\tfs.writeFileSync(filename, o);\n}\n\nfunction a2s(o/*:RawBytes*/)/*:string*/ {\n\tvar out = new Array(o.length);\n\tfor(var i = 0; i < o.length; ++i) out[i] = String.fromCharCode(o[i]);\n\treturn out.join(\"\");\n}\n\nfunction write(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes|string*/ {\n\tvar o = _write(cfb, options);\n\tswitch(options && options.type || \"buffer\") {\n\t\tcase \"file\": get_fs(); fs.writeFileSync(options.filename, (o/*:any*/)); return o;\n\t\tcase \"binary\": return typeof o == \"string\" ? o : a2s(o);\n\t\tcase \"base64\": return Base64_encode(typeof o == \"string\" ? o : a2s(o));\n\t\tcase \"buffer\": if(has_buf) return Buffer.isBuffer(o) ? o : Buffer_from(o);\n\t\t\t/* falls through */\n\t\tcase \"array\": return typeof o == \"string\" ? s2a(o) : o;\n\t}\n\treturn o;\n}\n/* node < 8.1 zlib does not expose bytesRead, so default to pure JS */\nvar _zlib;\nfunction use_zlib(zlib) { try {\n\tvar InflateRaw = zlib.InflateRaw;\n\tvar InflRaw = new InflateRaw();\n\tInflRaw._processChunk(new Uint8Array([3, 0]), InflRaw._finishFlushFlag);\n\tif(InflRaw.bytesRead) _zlib = zlib;\n\telse throw new Error(\"zlib does not expose bytesRead\");\n} catch(e) {console.error(\"cannot use native zlib: \" + (e.message || e)); } }\n\nfunction _inflateRawSync(payload, usz) {\n\tif(!_zlib) return _inflate(payload, usz);\n\tvar InflateRaw = _zlib.InflateRaw;\n\tvar InflRaw = new InflateRaw();\n\tvar out = InflRaw._processChunk(payload.slice(payload.l), InflRaw._finishFlushFlag);\n\tpayload.l += InflRaw.bytesRead;\n\treturn out;\n}\n\nfunction _deflateRawSync(payload) {\n\treturn _zlib ? _zlib.deflateRawSync(payload) : _deflate(payload);\n}\nvar CLEN_ORDER = [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n/*  LEN_ID = [ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285 ]; */\nvar LEN_LN = [   3,   4,   5,   6,   7,   8,   9,  10,  11,  13 , 15,  17,  19,  23,  27,  31,  35,  43,  51,  59,  67,  83,  99, 115, 131, 163, 195, 227, 258 ];\n\n/*  DST_ID = [  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 ]; */\nvar DST_LN = [  1,  2,  3,  4,  5,  7,  9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577 ];\n\nfunction bit_swap_8(n) { var t = (((((n<<1)|(n<<11)) & 0x22110) | (((n<<5)|(n<<15)) & 0x88440))); return ((t>>16) | (t>>8) |t)&0xFF; }\n\nvar use_typed_arrays = typeof Uint8Array !== 'undefined';\n\nvar bitswap8 = use_typed_arrays ? new Uint8Array(1<<8) : [];\nfor(var q = 0; q < (1<<8); ++q) bitswap8[q] = bit_swap_8(q);\n\nfunction bit_swap_n(n, b) {\n\tvar rev = bitswap8[n & 0xFF];\n\tif(b <= 8) return rev >>> (8-b);\n\trev = (rev << 8) | bitswap8[(n>>8)&0xFF];\n\tif(b <= 16) return rev >>> (16-b);\n\trev = (rev << 8) | bitswap8[(n>>16)&0xFF];\n\treturn rev >>> (24-b);\n}\n\n/* helpers for unaligned bit reads */\nfunction read_bits_2(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 6 ? 0 : buf[h+1]<<8))>>>w)& 0x03; }\nfunction read_bits_3(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 5 ? 0 : buf[h+1]<<8))>>>w)& 0x07; }\nfunction read_bits_4(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 4 ? 0 : buf[h+1]<<8))>>>w)& 0x0F; }\nfunction read_bits_5(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 3 ? 0 : buf[h+1]<<8))>>>w)& 0x1F; }\nfunction read_bits_7(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 1 ? 0 : buf[h+1]<<8))>>>w)& 0x7F; }\n\n/* works up to n = 3 * 8 + 1 = 25 */\nfunction read_bits_n(buf, bl, n) {\n\tvar w = (bl&7), h = (bl>>>3), f = ((1<<n)-1);\n\tvar v = buf[h] >>> w;\n\tif(n < 8 - w) return v & f;\n\tv |= buf[h+1]<<(8-w);\n\tif(n < 16 - w) return v & f;\n\tv |= buf[h+2]<<(16-w);\n\tif(n < 24 - w) return v & f;\n\tv |= buf[h+3]<<(24-w);\n\treturn v & f;\n}\n\n/* helpers for unaligned bit writes */\nfunction write_bits_3(buf, bl, v) { var w = bl & 7, h = bl >>> 3;\n\tif(w <= 5) buf[h] |= (v & 7) << w;\n\telse {\n\t\tbuf[h] |= (v << w) & 0xFF;\n\t\tbuf[h+1] = (v&7) >> (8-w);\n\t}\n\treturn bl + 3;\n}\n\nfunction write_bits_1(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv = (v&1) << w;\n\tbuf[h] |= v;\n\treturn bl + 1;\n}\nfunction write_bits_8(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv <<= w;\n\tbuf[h] |=  v & 0xFF; v >>>= 8;\n\tbuf[h+1] = v;\n\treturn bl + 8;\n}\nfunction write_bits_16(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv <<= w;\n\tbuf[h] |=  v & 0xFF; v >>>= 8;\n\tbuf[h+1] = v & 0xFF;\n\tbuf[h+2] = v >>> 8;\n\treturn bl + 16;\n}\n\n/* until ArrayBuffer#realloc is a thing, fake a realloc */\nfunction realloc(b, sz/*:number*/) {\n\tvar L = b.length, M = 2*L > sz ? 2*L : sz + 5, i = 0;\n\tif(L >= sz) return b;\n\tif(has_buf) {\n\t\tvar o = new_unsafe_buf(M);\n\t\t// $FlowIgnore\n\t\tif(b.copy) b.copy(o);\n\t\telse for(; i < b.length; ++i) o[i] = b[i];\n\t\treturn o;\n\t} else if(use_typed_arrays) {\n\t\tvar a = new Uint8Array(M);\n\t\tif(a.set) a.set(b);\n\t\telse for(; i < L; ++i) a[i] = b[i];\n\t\treturn a;\n\t}\n\tb.length = M;\n\treturn b;\n}\n\n/* zero-filled arrays for older browsers */\nfunction zero_fill_array(n) {\n\tvar o = new Array(n);\n\tfor(var i = 0; i < n; ++i) o[i] = 0;\n\treturn o;\n}\n\n/* build tree (used for literals and lengths) */\nfunction build_tree(clens, cmap, MAX/*:number*/)/*:number*/ {\n\tvar maxlen = 1, w = 0, i = 0, j = 0, ccode = 0, L = clens.length;\n\n\tvar bl_count  = use_typed_arrays ? new Uint16Array(32) : zero_fill_array(32);\n\tfor(i = 0; i < 32; ++i) bl_count[i] = 0;\n\n\tfor(i = L; i < MAX; ++i) clens[i] = 0;\n\tL = clens.length;\n\n\tvar ctree = use_typed_arrays ? new Uint16Array(L) : zero_fill_array(L); // []\n\n\t/* build code tree */\n\tfor(i = 0; i < L; ++i) {\n\t\tbl_count[(w = clens[i])]++;\n\t\tif(maxlen < w) maxlen = w;\n\t\tctree[i] = 0;\n\t}\n\tbl_count[0] = 0;\n\tfor(i = 1; i <= maxlen; ++i) bl_count[i+16] = (ccode = (ccode + bl_count[i-1])<<1);\n\tfor(i = 0; i < L; ++i) {\n\t\tccode = clens[i];\n\t\tif(ccode != 0) ctree[i] = bl_count[ccode+16]++;\n\t}\n\n\t/* cmap[maxlen + 4 bits] = (off&15) + (lit<<4) reverse mapping */\n\tvar cleni = 0;\n\tfor(i = 0; i < L; ++i) {\n\t\tcleni = clens[i];\n\t\tif(cleni != 0) {\n\t\t\tccode = bit_swap_n(ctree[i], maxlen)>>(maxlen-cleni);\n\t\t\tfor(j = (1<<(maxlen + 4 - cleni)) - 1; j>=0; --j)\n\t\t\t\tcmap[ccode|(j<<cleni)] = (cleni&15) | (i<<4);\n\t\t}\n\t}\n\treturn maxlen;\n}\n\n/* Fixed Huffman */\nvar fix_lmap = use_typed_arrays ? new Uint16Array(512) : zero_fill_array(512);\nvar fix_dmap = use_typed_arrays ? new Uint16Array(32)  : zero_fill_array(32);\nif(!use_typed_arrays) {\n\tfor(var i = 0; i < 512; ++i) fix_lmap[i] = 0;\n\tfor(i = 0; i < 32; ++i) fix_dmap[i] = 0;\n}\n(function() {\n\tvar dlens/*:Array<number>*/ = [];\n\tvar i = 0;\n\tfor(;i<32; i++) dlens.push(5);\n\tbuild_tree(dlens, fix_dmap, 32);\n\n\tvar clens/*:Array<number>*/ = [];\n\ti = 0;\n\tfor(; i<=143; i++) clens.push(8);\n\tfor(; i<=255; i++) clens.push(9);\n\tfor(; i<=279; i++) clens.push(7);\n\tfor(; i<=287; i++) clens.push(8);\n\tbuild_tree(clens, fix_lmap, 288);\n})();var _deflateRaw = /*#__PURE__*/(function _deflateRawIIFE() {\n\tvar DST_LN_RE = use_typed_arrays ? new Uint8Array(0x8000) : [];\n\tvar j = 0, k = 0;\n\tfor(; j < DST_LN.length - 1; ++j) {\n\t\tfor(; k < DST_LN[j+1]; ++k) DST_LN_RE[k] = j;\n\t}\n\tfor(;k < 32768; ++k) DST_LN_RE[k] = 29;\n\n\tvar LEN_LN_RE = use_typed_arrays ? new Uint8Array(0x103) : [];\n\tfor(j = 0, k = 0; j < LEN_LN.length - 1; ++j) {\n\t\tfor(; k < LEN_LN[j+1]; ++k) LEN_LN_RE[k] = j;\n\t}\n\n\tfunction write_stored(data, out) {\n\t\tvar boff = 0;\n\t\twhile(boff < data.length) {\n\t\t\tvar L = Math.min(0xFFFF, data.length - boff);\n\t\t\tvar h = boff + L == data.length;\n\t\t\tout.write_shift(1, +h);\n\t\t\tout.write_shift(2, L);\n\t\t\tout.write_shift(2, (~L) & 0xFFFF);\n\t\t\twhile(L-- > 0) out[out.l++] = data[boff++];\n\t\t}\n\t\treturn out.l;\n\t}\n\n\t/* Fixed Huffman */\n\tfunction write_huff_fixed(data, out) {\n\t\tvar bl = 0;\n\t\tvar boff = 0;\n\t\tvar addrs = use_typed_arrays ? new Uint16Array(0x8000) : [];\n\t\twhile(boff < data.length) {\n\t\t\tvar L = /* data.length - boff; */ Math.min(0xFFFF, data.length - boff);\n\n\t\t\t/* write a stored block for short data */\n\t\t\tif(L < 10) {\n\t\t\t\tbl = write_bits_3(out, bl, +!!(boff + L == data.length)); // jshint ignore:line\n\t\t\t\tif(bl & 7) bl += 8 - (bl & 7);\n\t\t\t\tout.l = (bl / 8) | 0;\n\t\t\t\tout.write_shift(2, L);\n\t\t\t\tout.write_shift(2, (~L) & 0xFFFF);\n\t\t\t\twhile(L-- > 0) out[out.l++] = data[boff++];\n\t\t\t\tbl = out.l * 8;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tbl = write_bits_3(out, bl, +!!(boff + L == data.length) + 2); // jshint ignore:line\n\t\t\tvar hash = 0;\n\t\t\twhile(L-- > 0) {\n\t\t\t\tvar d = data[boff];\n\t\t\t\thash = ((hash << 5) ^ d) & 0x7FFF;\n\n\t\t\t\tvar match = -1, mlen = 0;\n\n\t\t\t\tif((match = addrs[hash])) {\n\t\t\t\t\tmatch |= boff & ~0x7FFF;\n\t\t\t\t\tif(match > boff) match -= 0x8000;\n\t\t\t\t\tif(match < boff) while(data[match + mlen] == data[boff + mlen] && mlen < 250) ++mlen;\n\t\t\t\t}\n\n\t\t\t\tif(mlen > 2) {\n\t\t\t\t\t/* Copy Token  */\n\t\t\t\t\td = LEN_LN_RE[mlen];\n\t\t\t\t\tif(d <= 22) bl = write_bits_8(out, bl, bitswap8[d+1]>>1) - 1;\n\t\t\t\t\telse {\n\t\t\t\t\t\twrite_bits_8(out, bl, 3);\n\t\t\t\t\t\tbl += 5;\n\t\t\t\t\t\twrite_bits_8(out, bl, bitswap8[d-23]>>5);\n\t\t\t\t\t\tbl += 3;\n\t\t\t\t\t}\n\t\t\t\t\tvar len_eb = (d < 8) ? 0 : ((d - 4)>>2);\n\t\t\t\t\tif(len_eb > 0) {\n\t\t\t\t\t\twrite_bits_16(out, bl, mlen - LEN_LN[d]);\n\t\t\t\t\t\tbl += len_eb;\n\t\t\t\t\t}\n\n\t\t\t\t\td = DST_LN_RE[boff - match];\n\t\t\t\t\tbl = write_bits_8(out, bl, bitswap8[d]>>3);\n\t\t\t\t\tbl -= 3;\n\n\t\t\t\t\tvar dst_eb = d < 4 ? 0 : (d-2)>>1;\n\t\t\t\t\tif(dst_eb > 0) {\n\t\t\t\t\t\twrite_bits_16(out, bl, boff - match - DST_LN[d]);\n\t\t\t\t\t\tbl += dst_eb;\n\t\t\t\t\t}\n\t\t\t\t\tfor(var q = 0; q < mlen; ++q) {\n\t\t\t\t\t\taddrs[hash] = boff & 0x7FFF;\n\t\t\t\t\t\thash = ((hash << 5) ^ data[boff]) & 0x7FFF;\n\t\t\t\t\t\t++boff;\n\t\t\t\t\t}\n\t\t\t\t\tL-= mlen - 1;\n\t\t\t\t} else {\n\t\t\t\t\t/* Literal Token */\n\t\t\t\t\tif(d <= 143) d = d + 48;\n\t\t\t\t\telse bl = write_bits_1(out, bl, 1);\n\t\t\t\t\tbl = write_bits_8(out, bl, bitswap8[d]);\n\t\t\t\t\taddrs[hash] = boff & 0x7FFF;\n\t\t\t\t\t++boff;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbl = write_bits_8(out, bl, 0) - 1;\n\t\t}\n\t\tout.l = ((bl + 7)/8)|0;\n\t\treturn out.l;\n\t}\n\treturn function _deflateRaw(data, out) {\n\t\tif(data.length < 8) return write_stored(data, out);\n\t\treturn write_huff_fixed(data, out);\n\t};\n})();\n\nfunction _deflate(data) {\n\tvar buf = new_buf(50+Math.floor(data.length*1.1));\n\tvar off = _deflateRaw(data, buf);\n\treturn buf.slice(0, off);\n}\n/* modified inflate function also moves original read head */\n\nvar dyn_lmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768);\nvar dyn_dmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768);\nvar dyn_cmap = use_typed_arrays ? new Uint16Array(128)   : zero_fill_array(128);\nvar dyn_len_1 = 1, dyn_len_2 = 1;\n\n/* 5.5.3 Expanding Huffman Codes */\nfunction dyn(data, boff/*:number*/) {\n\t/* nomenclature from RFC1951 refers to bit values; these are offset by the implicit constant */\n\tvar _HLIT = read_bits_5(data, boff) + 257; boff += 5;\n\tvar _HDIST = read_bits_5(data, boff) + 1; boff += 5;\n\tvar _HCLEN = read_bits_4(data, boff) + 4; boff += 4;\n\tvar w = 0;\n\n\t/* grab and store code lengths */\n\tvar clens = use_typed_arrays ? new Uint8Array(19) : zero_fill_array(19);\n\tvar ctree = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n\tvar maxlen = 1;\n\tvar bl_count =  use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8);\n\tvar next_code = use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8);\n\tvar L = clens.length; /* 19 */\n\tfor(var i = 0; i < _HCLEN; ++i) {\n\t\tclens[CLEN_ORDER[i]] = w = read_bits_3(data, boff);\n\t\tif(maxlen < w) maxlen = w;\n\t\tbl_count[w]++;\n\t\tboff += 3;\n\t}\n\n\t/* build code tree */\n\tvar ccode = 0;\n\tbl_count[0] = 0;\n\tfor(i = 1; i <= maxlen; ++i) next_code[i] = ccode = (ccode + bl_count[i-1])<<1;\n\tfor(i = 0; i < L; ++i) if((ccode = clens[i]) != 0) ctree[i] = next_code[ccode]++;\n\t/* cmap[7 bits from stream] = (off&7) + (lit<<3) */\n\tvar cleni = 0;\n\tfor(i = 0; i < L; ++i) {\n\t\tcleni = clens[i];\n\t\tif(cleni != 0) {\n\t\t\tccode = bitswap8[ctree[i]]>>(8-cleni);\n\t\t\tfor(var j = (1<<(7-cleni))-1; j>=0; --j) dyn_cmap[ccode|(j<<cleni)] = (cleni&7) | (i<<3);\n\t\t}\n\t}\n\n\t/* read literal and dist codes at once */\n\tvar hcodes/*:Array<number>*/ = [];\n\tmaxlen = 1;\n\tfor(; hcodes.length < _HLIT + _HDIST;) {\n\t\tccode = dyn_cmap[read_bits_7(data, boff)];\n\t\tboff += ccode & 7;\n\t\tswitch((ccode >>>= 3)) {\n\t\t\tcase 16:\n\t\t\t\tw = 3 + read_bits_2(data, boff); boff += 2;\n\t\t\t\tccode = hcodes[hcodes.length - 1];\n\t\t\t\twhile(w-- > 0) hcodes.push(ccode);\n\t\t\t\tbreak;\n\t\t\tcase 17:\n\t\t\t\tw = 3 + read_bits_3(data, boff); boff += 3;\n\t\t\t\twhile(w-- > 0) hcodes.push(0);\n\t\t\t\tbreak;\n\t\t\tcase 18:\n\t\t\t\tw = 11 + read_bits_7(data, boff); boff += 7;\n\t\t\t\twhile(w -- > 0) hcodes.push(0);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\thcodes.push(ccode);\n\t\t\t\tif(maxlen < ccode) maxlen = ccode;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t/* build literal / length trees */\n\tvar h1 = hcodes.slice(0, _HLIT), h2 = hcodes.slice(_HLIT);\n\tfor(i = _HLIT; i < 286; ++i) h1[i] = 0;\n\tfor(i = _HDIST; i < 30; ++i) h2[i] = 0;\n\tdyn_len_1 = build_tree(h1, dyn_lmap, 286);\n\tdyn_len_2 = build_tree(h2, dyn_dmap, 30);\n\treturn boff;\n}\n\n/* return [ data, bytesRead ] */\nfunction inflate(data, usz/*:number*/) {\n\t/* shortcircuit for empty buffer [0x03, 0x00] */\n\tif(data[0] == 3 && !(data[1] & 0x3)) { return [new_raw_buf(usz), 2]; }\n\n\t/* bit offset */\n\tvar boff = 0;\n\n\t/* header includes final bit and type bits */\n\tvar header = 0;\n\n\tvar outbuf = new_unsafe_buf(usz ? usz : (1<<18));\n\tvar woff = 0;\n\tvar OL = outbuf.length>>>0;\n\tvar max_len_1 = 0, max_len_2 = 0;\n\n\twhile((header&1) == 0) {\n\t\theader = read_bits_3(data, boff); boff += 3;\n\t\tif((header >>> 1) == 0) {\n\t\t\t/* Stored block */\n\t\t\tif(boff & 7) boff += 8 - (boff&7);\n\t\t\t/* 2 bytes sz, 2 bytes bit inverse */\n\t\t\tvar sz = data[boff>>>3] | data[(boff>>>3)+1]<<8;\n\t\t\tboff += 32;\n\t\t\t/* push sz bytes */\n\t\t\tif(sz > 0) {\n\t\t\t\tif(!usz && OL < woff + sz) { outbuf = realloc(outbuf, woff + sz); OL = outbuf.length; }\n\t\t\t\twhile(sz-- > 0) { outbuf[woff++] = data[boff>>>3]; boff += 8; }\n\t\t\t}\n\t\t\tcontinue;\n\t\t} else if((header >> 1) == 1) {\n\t\t\t/* Fixed Huffman */\n\t\t\tmax_len_1 = 9; max_len_2 = 5;\n\t\t} else {\n\t\t\t/* Dynamic Huffman */\n\t\t\tboff = dyn(data, boff);\n\t\t\tmax_len_1 = dyn_len_1; max_len_2 = dyn_len_2;\n\t\t}\n\t\tfor(;;) { // while(true) is apparently out of vogue in modern JS circles\n\t\t\tif(!usz && (OL < woff + 32767)) { outbuf = realloc(outbuf, woff + 32767); OL = outbuf.length; }\n\t\t\t/* ingest code and move read head */\n\t\t\tvar bits = read_bits_n(data, boff, max_len_1);\n\t\t\tvar code = (header>>>1) == 1 ? fix_lmap[bits] : dyn_lmap[bits];\n\t\t\tboff += code & 15; code >>>= 4;\n\t\t\t/* 0-255 are literals, 256 is end of block token, 257+ are copy tokens */\n\t\t\tif(((code>>>8)&0xFF) === 0) outbuf[woff++] = code;\n\t\t\telse if(code == 256) break;\n\t\t\telse {\n\t\t\t\tcode -= 257;\n\t\t\t\tvar len_eb = (code < 8) ? 0 : ((code-4)>>2); if(len_eb > 5) len_eb = 0;\n\t\t\t\tvar tgt = woff + LEN_LN[code];\n\t\t\t\t/* length extra bits */\n\t\t\t\tif(len_eb > 0) {\n\t\t\t\t\ttgt += read_bits_n(data, boff, len_eb);\n\t\t\t\t\tboff += len_eb;\n\t\t\t\t}\n\n\t\t\t\t/* dist code */\n\t\t\t\tbits = read_bits_n(data, boff, max_len_2);\n\t\t\t\tcode = (header>>>1) == 1 ? fix_dmap[bits] : dyn_dmap[bits];\n\t\t\t\tboff += code & 15; code >>>= 4;\n\t\t\t\tvar dst_eb = (code < 4 ? 0 : (code-2)>>1);\n\t\t\t\tvar dst = DST_LN[code];\n\t\t\t\t/* dist extra bits */\n\t\t\t\tif(dst_eb > 0) {\n\t\t\t\t\tdst += read_bits_n(data, boff, dst_eb);\n\t\t\t\t\tboff += dst_eb;\n\t\t\t\t}\n\n\t\t\t\t/* in the common case, manual byte copy is faster than TA set / Buffer copy */\n\t\t\t\tif(!usz && OL < tgt) { outbuf = realloc(outbuf, tgt + 100); OL = outbuf.length; }\n\t\t\t\twhile(woff < tgt) { outbuf[woff] = outbuf[woff - dst]; ++woff; }\n\t\t\t}\n\t\t}\n\t}\n\tif(usz) return [outbuf, (boff+7)>>>3];\n\treturn [outbuf.slice(0, woff), (boff+7)>>>3];\n}\n\nfunction _inflate(payload, usz) {\n\tvar data = payload.slice(payload.l||0);\n\tvar out = inflate(data, usz);\n\tpayload.l += out[1];\n\treturn out[0];\n}\n\nfunction warn_or_throw(wrn, msg) {\n\tif(wrn) { if(typeof console !== 'undefined') console.error(msg); }\n\telse throw new Error(msg);\n}\n\nfunction parse_zip(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\n\tvar blob/*:CFBlob*/ = /*::(*/file/*:: :any)*/;\n\tprep_blob(blob, 0);\n\n\tvar FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array<string>*/ = [];\n\tvar o = {\n\t\tFileIndex: FileIndex,\n\t\tFullPaths: FullPaths\n\t};\n\tinit_cfb(o, { root: options.root });\n\n\t/* find end of central directory, start just after signature */\n\tvar i = blob.length - 4;\n\twhile((blob[i] != 0x50 || blob[i+1] != 0x4b || blob[i+2] != 0x05 || blob[i+3] != 0x06) && i >= 0) --i;\n\tblob.l = i + 4;\n\n\t/* parse end of central directory */\n\tblob.l += 4;\n\tvar fcnt = blob.read_shift(2);\n\tblob.l += 6;\n\tvar start_cd = blob.read_shift(4);\n\n\t/* parse central directory */\n\tblob.l = start_cd;\n\n\tfor(i = 0; i < fcnt; ++i) {\n\t\t/* trust local file header instead of CD entry */\n\t\tblob.l += 20;\n\t\tvar csz = blob.read_shift(4);\n\t\tvar usz = blob.read_shift(4);\n\t\tvar namelen = blob.read_shift(2);\n\t\tvar efsz = blob.read_shift(2);\n\t\tvar fcsz = blob.read_shift(2);\n\t\tblob.l += 8;\n\t\tvar offset = blob.read_shift(4);\n\t\tvar EF = parse_extra_field(/*::(*/blob.slice(blob.l+namelen, blob.l+namelen+efsz)/*:: :any)*/);\n\t\tblob.l += namelen + efsz + fcsz;\n\n\t\tvar L = blob.l;\n\t\tblob.l = offset + 4;\n\t\tparse_local_file(blob, csz, usz, o, EF);\n\t\tblob.l = L;\n\t}\n\treturn o;\n}\n\n\n/* head starts just after local file header signature */\nfunction parse_local_file(blob/*:CFBlob*/, csz/*:number*/, usz/*:number*/, o/*:CFBContainer*/, EF) {\n\t/* [local file header] */\n\tblob.l += 2;\n\tvar flags = blob.read_shift(2);\n\tvar meth = blob.read_shift(2);\n\tvar date = parse_dos_date(blob);\n\n\tif(flags & 0x2041) throw new Error(\"Unsupported ZIP encryption\");\n\tvar crc32 = blob.read_shift(4);\n\tvar _csz = blob.read_shift(4);\n\tvar _usz = blob.read_shift(4);\n\n\tvar namelen = blob.read_shift(2);\n\tvar efsz = blob.read_shift(2);\n\n\t// TODO: flags & (1<<11) // UTF8\n\tvar name = \"\"; for(var i = 0; i < namelen; ++i) name += String.fromCharCode(blob[blob.l++]);\n\tif(efsz) {\n\t\tvar ef = parse_extra_field(/*::(*/blob.slice(blob.l, blob.l + efsz)/*:: :any)*/);\n\t\tif((ef[0x5455]||{}).mt) date = ef[0x5455].mt;\n\t\tif(((EF||{})[0x5455]||{}).mt) date = EF[0x5455].mt;\n\t}\n\tblob.l += efsz;\n\n\t/* [encryption header] */\n\n\t/* [file data] */\n\tvar data = blob.slice(blob.l, blob.l + _csz);\n\tswitch(meth) {\n\t\tcase 8: data = _inflateRawSync(blob, _usz); break;\n\t\tcase 0: break; // TODO: scan for magic number\n\t\tdefault: throw new Error(\"Unsupported ZIP Compression method \" + meth);\n\t}\n\n\t/* [data descriptor] */\n\tvar wrn = false;\n\tif(flags & 8) {\n\t\tcrc32 = blob.read_shift(4);\n\t\tif(crc32 == 0x08074b50) { crc32 = blob.read_shift(4); wrn = true; }\n\t\t_csz = blob.read_shift(4);\n\t\t_usz = blob.read_shift(4);\n\t}\n\n\tif(_csz != csz) warn_or_throw(wrn, \"Bad compressed size: \" + csz + \" != \" + _csz);\n\tif(_usz != usz) warn_or_throw(wrn, \"Bad uncompressed size: \" + usz + \" != \" + _usz);\n\t//var _crc32 = CRC32.buf(data, 0);\n\t//if((crc32>>0) != (_crc32>>0)) warn_or_throw(wrn, \"Bad CRC32 checksum: \" + crc32 + \" != \" + _crc32);\n\tcfb_add(o, name, data, {unsafe: true, mt: date});\n}\nfunction write_zip(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes*/ {\n\tvar _opts = options || {};\n\tvar out = [], cdirs = [];\n\tvar o/*:CFBlob*/ = new_buf(1);\n\tvar method = (_opts.compression ? 8 : 0), flags = 0;\n\tvar desc = false;\n\tif(desc) flags |= 8;\n\tvar i = 0, j = 0;\n\n\tvar start_cd = 0, fcnt = 0;\n\tvar root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0];\n\tvar crcs = [];\n\tvar sz_cd = 0;\n\n\tfor(i = 1; i < cfb.FullPaths.length; ++i) {\n\t\tfp = cfb.FullPaths[i].slice(root.length); fi = cfb.FileIndex[i];\n\t\tif(!fi.size || !fi.content || fp == \"\\u0001Sh33tJ5\") continue;\n\t\tvar start = start_cd;\n\n\t\t/* TODO: CP437 filename */\n\t\tvar namebuf = new_buf(fp.length);\n\t\tfor(j = 0; j < fp.length; ++j) namebuf.write_shift(1, fp.charCodeAt(j) & 0x7F);\n\t\tnamebuf = namebuf.slice(0, namebuf.l);\n\t\tcrcs[fcnt] = CRC32.buf(/*::((*/fi.content/*::||[]):any)*/, 0);\n\n\t\tvar outbuf = fi.content/*::||[]*/;\n\t\tif(method == 8) outbuf = _deflateRawSync(outbuf);\n\n\t\t/* local file header */\n\t\to = new_buf(30);\n\t\to.write_shift(4, 0x04034b50);\n\t\to.write_shift(2, 20);\n\t\to.write_shift(2, flags);\n\t\to.write_shift(2, method);\n\t\t/* TODO: last mod file time/date */\n\t\tif(fi.mt) write_dos_date(o, fi.mt);\n\t\telse o.write_shift(4, 0);\n\t\to.write_shift(-4, (flags & 8) ? 0 : crcs[fcnt]);\n\t\to.write_shift(4,  (flags & 8) ? 0 : outbuf.length);\n\t\to.write_shift(4,  (flags & 8) ? 0 : /*::(*/fi.content/*::||[])*/.length);\n\t\to.write_shift(2, namebuf.length);\n\t\to.write_shift(2, 0);\n\n\t\tstart_cd += o.length;\n\t\tout.push(o);\n\t\tstart_cd += namebuf.length;\n\t\tout.push(namebuf);\n\n\t\t/* TODO: extra fields? */\n\n\t\t/* TODO: encryption header ? */\n\n\t\tstart_cd += outbuf.length;\n\t\tout.push(outbuf);\n\n\t\t/* data descriptor */\n\t\tif(flags & 8) {\n\t\t\to = new_buf(12);\n\t\t\to.write_shift(-4, crcs[fcnt]);\n\t\t\to.write_shift(4, outbuf.length);\n\t\t\to.write_shift(4, /*::(*/fi.content/*::||[])*/.length);\n\t\t\tstart_cd += o.l;\n\t\t\tout.push(o);\n\t\t}\n\n\t\t/* central directory */\n\t\to = new_buf(46);\n\t\to.write_shift(4, 0x02014b50);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 20);\n\t\to.write_shift(2, flags);\n\t\to.write_shift(2, method);\n\t\to.write_shift(4, 0); /* TODO: last mod file time/date */\n\t\to.write_shift(-4, crcs[fcnt]);\n\n\t\to.write_shift(4, outbuf.length);\n\t\to.write_shift(4, /*::(*/fi.content/*::||[])*/.length);\n\t\to.write_shift(2, namebuf.length);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, start);\n\n\t\tsz_cd += o.l;\n\t\tcdirs.push(o);\n\t\tsz_cd += namebuf.length;\n\t\tcdirs.push(namebuf);\n\t\t++fcnt;\n\t}\n\n\t/* end of central directory */\n\to = new_buf(22);\n\to.write_shift(4, 0x06054b50);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, fcnt);\n\to.write_shift(2, fcnt);\n\to.write_shift(4, sz_cd);\n\to.write_shift(4, start_cd);\n\to.write_shift(2, 0);\n\n\treturn bconcat(([bconcat((out/*:any*/)), bconcat(cdirs), o]/*:any*/));\n}\nvar ContentTypeMap = ({\n\t\"htm\": \"text/html\",\n\t\"xml\": \"text/xml\",\n\n\t\"gif\": \"image/gif\",\n\t\"jpg\": \"image/jpeg\",\n\t\"png\": \"image/png\",\n\n\t\"mso\": \"application/x-mso\",\n\t\"thmx\": \"application/vnd.ms-officetheme\",\n\t\"sh33tj5\": \"application/octet-stream\"\n}/*:any*/);\n\nfunction get_content_type(fi/*:CFBEntry*/, fp/*:string*/)/*:string*/ {\n\tif(fi.ctype) return fi.ctype;\n\n\tvar ext = fi.name || \"\", m = ext.match(/\\.([^\\.]+)$/);\n\tif(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]];\n\n\tif(fp) {\n\t\tm = (ext = fp).match(/[\\.\\\\]([^\\.\\\\])+$/);\n\t\tif(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]];\n\t}\n\n\treturn \"application/octet-stream\";\n}\n\n/* 76 character chunks TODO: intertwine encoding */\nfunction write_base64_76(bstr/*:string*/)/*:string*/ {\n\tvar data = Base64_encode(bstr);\n\tvar o = [];\n\tfor(var i = 0; i < data.length; i+= 76) o.push(data.slice(i, i+76));\n\treturn o.join(\"\\r\\n\") + \"\\r\\n\";\n}\n\n/*\nRules for QP:\n\t- escape =## applies for all non-display characters and literal \"=\"\n\t- space or tab at end of line must be encoded\n\t- \\r\\n newlines can be preserved, but bare \\r and \\n must be escaped\n\t- lines must not exceed 76 characters, use soft breaks =\\r\\n\n\nTODO: Some files from word appear to write line extensions with bare equals:\n\n```\n<table class=3DMsoTableGrid border=3D1 cellspacing=3D0 cellpadding=3D0 width=\n=\"70%\"\n```\n*/\nfunction write_quoted_printable(text/*:string*/)/*:string*/ {\n\tvar encoded = text.replace(/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7E-\\xFF=]/g, function(c) {\n\t\tvar w = c.charCodeAt(0).toString(16).toUpperCase();\n\t\treturn \"=\" + (w.length == 1 ? \"0\" + w : w);\n\t});\n\n\tencoded = encoded.replace(/ $/mg, \"=20\").replace(/\\t$/mg, \"=09\");\n\n\tif(encoded.charAt(0) == \"\\n\") encoded = \"=0D\" + encoded.slice(1);\n\tencoded = encoded.replace(/\\r(?!\\n)/mg, \"=0D\").replace(/\\n\\n/mg, \"\\n=0A\").replace(/([^\\r\\n])\\n/mg, \"$1=0A\");\n\n\tvar o/*:Array<string>*/ = [], split = encoded.split(\"\\r\\n\");\n\tfor(var si = 0; si < split.length; ++si) {\n\t\tvar str = split[si];\n\t\tif(str.length == 0) { o.push(\"\"); continue; }\n\t\tfor(var i = 0; i < str.length;) {\n\t\t\tvar end = 76;\n\t\t\tvar tmp = str.slice(i, i + end);\n\t\t\tif(tmp.charAt(end - 1) == \"=\") end --;\n\t\t\telse if(tmp.charAt(end - 2) == \"=\") end -= 2;\n\t\t\telse if(tmp.charAt(end - 3) == \"=\") end -= 3;\n\t\t\ttmp = str.slice(i, i + end);\n\t\t\ti += end;\n\t\t\tif(i < str.length) tmp += \"=\";\n\t\t\to.push(tmp);\n\t\t}\n\t}\n\n\treturn o.join(\"\\r\\n\");\n}\nfunction parse_quoted_printable(data/*:Array<string>*/)/*:RawBytes*/ {\n\tvar o = [];\n\n\t/* unify long lines */\n\tfor(var di = 0; di < data.length; ++di) {\n\t\tvar line = data[di];\n\t\twhile(di <= data.length && line.charAt(line.length - 1) == \"=\") line = line.slice(0, line.length - 1) + data[++di];\n\t\to.push(line);\n\t}\n\n\t/* decode */\n\tfor(var oi = 0; oi < o.length; ++oi) o[oi] = o[oi].replace(/[=][0-9A-Fa-f]{2}/g, function($$) { return String.fromCharCode(parseInt($$.slice(1), 16)); });\n\treturn s2a(o.join(\"\\r\\n\"));\n}\n\n\nfunction parse_mime(cfb/*:CFBContainer*/, data/*:Array<string>*/, root/*:string*/)/*:void*/ {\n\tvar fname = \"\", cte = \"\", ctype = \"\", fdata;\n\tvar di = 0;\n\tfor(;di < 10; ++di) {\n\t\tvar line = data[di];\n\t\tif(!line || line.match(/^\\s*$/)) break;\n\t\tvar m = line.match(/^(.*?):\\s*([^\\s].*)$/);\n\t\tif(m) switch(m[1].toLowerCase()) {\n\t\t\tcase \"content-location\": fname = m[2].trim(); break;\n\t\t\tcase \"content-type\": ctype = m[2].trim(); break;\n\t\t\tcase \"content-transfer-encoding\": cte = m[2].trim(); break;\n\t\t}\n\t}\n\t++di;\n\tswitch(cte.toLowerCase()) {\n\t\tcase 'base64': fdata = s2a(Base64_decode(data.slice(di).join(\"\"))); break;\n\t\tcase 'quoted-printable': fdata = parse_quoted_printable(data.slice(di)); break;\n\t\tdefault: throw new Error(\"Unsupported Content-Transfer-Encoding \" + cte);\n\t}\n\tvar file = cfb_add(cfb, fname.slice(root.length), fdata, {unsafe: true});\n\tif(ctype) file.ctype = ctype;\n}\n\nfunction parse_mad(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\n\tif(a2s(file.slice(0,13)).toLowerCase() != \"mime-version:\") throw new Error(\"Unsupported MAD header\");\n\tvar root = (options && options.root || \"\");\n\t// $FlowIgnore\n\tvar data = (has_buf && Buffer.isBuffer(file) ? file.toString(\"binary\") : a2s(file)).split(\"\\r\\n\");\n\tvar di = 0, row = \"\";\n\n\t/* if root is not specified, scan for the common prefix */\n\tfor(di = 0; di < data.length; ++di) {\n\t\trow = data[di];\n\t\tif(!/^Content-Location:/i.test(row)) continue;\n\t\trow = row.slice(row.indexOf(\"file\"));\n\t\tif(!root) root = row.slice(0, row.lastIndexOf(\"/\") + 1);\n\t\tif(row.slice(0, root.length) == root) continue;\n\t\twhile(root.length > 0) {\n\t\t\troot = root.slice(0, root.length - 1);\n\t\t\troot = root.slice(0, root.lastIndexOf(\"/\") + 1);\n\t\t\tif(row.slice(0,root.length) == root) break;\n\t\t}\n\t}\n\n\tvar mboundary = (data[1] || \"\").match(/boundary=\"(.*?)\"/);\n\tif(!mboundary) throw new Error(\"MAD cannot find boundary\");\n\tvar boundary = \"--\" + (mboundary[1] || \"\");\n\n\tvar FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array<string>*/ = [];\n\tvar o = {\n\t\tFileIndex: FileIndex,\n\t\tFullPaths: FullPaths\n\t};\n\tinit_cfb(o);\n\tvar start_di, fcnt = 0;\n\tfor(di = 0; di < data.length; ++di) {\n\t\tvar line = data[di];\n\t\tif(line !== boundary && line !== boundary + \"--\") continue;\n\t\tif(fcnt++) parse_mime(o, data.slice(start_di, di), root);\n\t\tstart_di = di;\n\t}\n\treturn o;\n}\n\nfunction write_mad(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:string*/ {\n\tvar opts = options || {};\n\tvar boundary = opts.boundary || \"SheetJS\";\n\tboundary = '------=' + boundary;\n\n\tvar out = [\n\t\t'MIME-Version: 1.0',\n\t\t'Content-Type: multipart/related; boundary=\"' + boundary.slice(2) + '\"',\n\t\t'',\n\t\t'',\n\t\t''\n\t];\n\n\tvar root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0];\n\tfor(var i = 1; i < cfb.FullPaths.length; ++i) {\n\t\tfp = cfb.FullPaths[i].slice(root.length);\n\t\tfi = cfb.FileIndex[i];\n\t\tif(!fi.size || !fi.content || fp == \"\\u0001Sh33tJ5\") continue;\n\n\t\t/* Normalize filename */\n\t\tfp = fp.replace(/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7E-\\xFF]/g, function(c) {\n\t\t\treturn \"_x\" + c.charCodeAt(0).toString(16) + \"_\";\n\t\t}).replace(/[\\u0080-\\uFFFF]/g, function(u) {\n\t\t\treturn \"_u\" + u.charCodeAt(0).toString(16) + \"_\";\n\t\t});\n\n\t\t/* Extract content as binary string */\n\t\tvar ca = fi.content;\n\t\t// $FlowIgnore\n\t\tvar cstr = has_buf && Buffer.isBuffer(ca) ? ca.toString(\"binary\") : a2s(ca);\n\n\t\t/* 4/5 of first 1024 chars ascii -> quoted printable, else base64 */\n\t\tvar dispcnt = 0, L = Math.min(1024, cstr.length), cc = 0;\n\t\tfor(var csl = 0; csl <= L; ++csl) if((cc=cstr.charCodeAt(csl)) >= 0x20 && cc < 0x80) ++dispcnt;\n\t\tvar qp = dispcnt >= L * 4 / 5;\n\n\t\tout.push(boundary);\n\t\tout.push('Content-Location: ' + (opts.root || 'file:///C:/SheetJS/') + fp);\n\t\tout.push('Content-Transfer-Encoding: ' + (qp ? 'quoted-printable' : 'base64'));\n\t\tout.push('Content-Type: ' + get_content_type(fi, fp));\n\t\tout.push('');\n\n\t\tout.push(qp ? write_quoted_printable(cstr) : write_base64_76(cstr));\n\t}\n\tout.push(boundary + '--\\r\\n');\n\treturn out.join(\"\\r\\n\");\n}\nfunction cfb_new(opts/*:?any*/)/*:CFBContainer*/ {\n\tvar o/*:CFBContainer*/ = ({}/*:any*/);\n\tinit_cfb(o, opts);\n\treturn o;\n}\n\nfunction cfb_add(cfb/*:CFBContainer*/, name/*:string*/, content/*:?RawBytes*/, opts/*:?any*/)/*:CFBEntry*/ {\n\tvar unsafe = opts && opts.unsafe;\n\tif(!unsafe) init_cfb(cfb);\n\tvar file = !unsafe && CFB.find(cfb, name);\n\tif(!file) {\n\t\tvar fpath/*:string*/ = cfb.FullPaths[0];\n\t\tif(name.slice(0, fpath.length) == fpath) fpath = name;\n\t\telse {\n\t\t\tif(fpath.slice(-1) != \"/\") fpath += \"/\";\n\t\t\tfpath = (fpath + name).replace(\"//\",\"/\");\n\t\t}\n\t\tfile = ({name: filename(name), type: 2}/*:any*/);\n\t\tcfb.FileIndex.push(file);\n\t\tcfb.FullPaths.push(fpath);\n\t\tif(!unsafe) CFB.utils.cfb_gc(cfb);\n\t}\n\t/*:: if(!file) throw new Error(\"unreachable\"); */\n\tfile.content = (content/*:any*/);\n\tfile.size = content ? content.length : 0;\n\tif(opts) {\n\t\tif(opts.CLSID) file.clsid = opts.CLSID;\n\t\tif(opts.mt) file.mt = opts.mt;\n\t\tif(opts.ct) file.ct = opts.ct;\n\t}\n\treturn file;\n}\n\nfunction cfb_del(cfb/*:CFBContainer*/, name/*:string*/)/*:boolean*/ {\n\tinit_cfb(cfb);\n\tvar file = CFB.find(cfb, name);\n\tif(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) {\n\t\tcfb.FileIndex.splice(j, 1);\n\t\tcfb.FullPaths.splice(j, 1);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction cfb_mov(cfb/*:CFBContainer*/, old_name/*:string*/, new_name/*:string*/)/*:boolean*/ {\n\tinit_cfb(cfb);\n\tvar file = CFB.find(cfb, old_name);\n\tif(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) {\n\t\tcfb.FileIndex[j].name = filename(new_name);\n\t\tcfb.FullPaths[j] = new_name;\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction cfb_gc(cfb/*:CFBContainer*/)/*:void*/ { rebuild_cfb(cfb, true); }\n\nexports.find = find;\nexports.read = read;\nexports.parse = parse;\nexports.write = write;\nexports.writeFile = write_file;\nexports.utils = {\n\tcfb_new: cfb_new,\n\tcfb_add: cfb_add,\n\tcfb_del: cfb_del,\n\tcfb_mov: cfb_mov,\n\tcfb_gc: cfb_gc,\n\tReadShift: ReadShift,\n\tCheckField: CheckField,\n\tprep_blob: prep_blob,\n\tbconcat: bconcat,\n\tuse_zlib: use_zlib,\n\t_deflateRaw: _deflate,\n\t_inflateRaw: _inflate,\n\tconsts: consts\n};\n\nreturn exports;\n})();\n\nlet _fs = void 0;\nfunction set_fs(fs) { _fs = fs; }\nexport { set_fs };\n\n/* normalize data for blob ctor */\nfunction blobify(data) {\n\tif(typeof data === \"string\") return s2ab(data);\n\tif(Array.isArray(data)) return a2u(data);\n\treturn data;\n}\n/* write or download file */\nfunction write_dl(fname/*:string*/, payload/*:any*/, enc/*:?string*/) {\n\t/*global IE_SaveFile, Blob, navigator, saveAs, document, File, chrome */\n\tif(typeof _fs !== 'undefined' && _fs.writeFileSync) return enc ? _fs.writeFileSync(fname, payload, enc) : _fs.writeFileSync(fname, payload);\n\tif(typeof Deno !== 'undefined') {\n\t\t/* in this spot, it's safe to assume typed arrays and TextEncoder/TextDecoder exist */\n\t\tif(enc && typeof payload == \"string\") switch(enc) {\n\t\t\tcase \"utf8\": payload = new TextEncoder(enc).encode(payload); break;\n\t\t\tcase \"binary\": payload = s2ab(payload); break;\n\t\t\t/* TODO: binary equivalent */\n\t\t\tdefault: throw new Error(\"Unsupported encoding \" + enc);\n\t\t}\n\t\treturn Deno.writeFileSync(fname, payload);\n\t}\n\tvar data = (enc == \"utf8\") ? utf8write(payload) : payload;\n\t/*:: declare var IE_SaveFile: any; */\n\tif(typeof IE_SaveFile !== 'undefined') return IE_SaveFile(data, fname);\n\tif(typeof Blob !== 'undefined') {\n\t\tvar blob = new Blob([blobify(data)], {type:\"application/octet-stream\"});\n\t\t/*:: declare var navigator: any; */\n\t\tif(typeof navigator !== 'undefined' && navigator.msSaveBlob) return navigator.msSaveBlob(blob, fname);\n\t\t/*:: declare var saveAs: any; */\n\t\tif(typeof saveAs !== 'undefined') return saveAs(blob, fname);\n\t\tif(typeof URL !== 'undefined' && typeof document !== 'undefined' && document.createElement && URL.createObjectURL) {\n\t\t\tvar url = URL.createObjectURL(blob);\n\t\t\t/*:: declare var chrome: any; */\n\t\t\tif(typeof chrome === 'object' && typeof (chrome.downloads||{}).download == \"function\") {\n\t\t\t\tif(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000);\n\t\t\t\treturn chrome.downloads.download({ url: url, filename: fname, saveAs: true});\n\t\t\t}\n\t\t\tvar a = document.createElement(\"a\");\n\t\t\tif(a.download != null) {\n\t\t\t\t/*:: if(document.body == null) throw new Error(\"unreachable\"); */\n\t\t\t\ta.download = fname; a.href = url; document.body.appendChild(a); a.click();\n\t\t\t\t/*:: if(document.body == null) throw new Error(\"unreachable\"); */ document.body.removeChild(a);\n\t\t\t\tif(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000);\n\t\t\t\treturn url;\n\t\t\t}\n\t\t}\n\t}\n\t// $FlowIgnore\n\tif(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript\n\t\t// $FlowIgnore\n\t\tvar out = File(fname); out.open(\"w\"); out.encoding = \"binary\";\n\t\tif(Array.isArray(payload)) payload = a2s(payload);\n\t\tout.write(payload); out.close(); return payload;\n\t} catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; }\n\tthrow new Error(\"cannot save file \" + fname);\n}\n\n/* read binary data from file */\nfunction read_binary(path/*:string*/) {\n\tif(typeof _fs !== 'undefined') return _fs.readFileSync(path);\n\tif(typeof Deno !== 'undefined') return Deno.readFileSync(path);\n\t// $FlowIgnore\n\tif(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript\n\t\t// $FlowIgnore\n\t\tvar infile = File(path); infile.open(\"r\"); infile.encoding = \"binary\";\n\t\tvar data = infile.read(); infile.close();\n\t\treturn data;\n\t} catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; }\n\tthrow new Error(\"Cannot access file \" + path);\n}\nfunction keys(o/*:any*/)/*:Array<any>*/ {\n\tvar ks = Object.keys(o), o2 = [];\n\tfor(var i = 0; i < ks.length; ++i) if(Object.prototype.hasOwnProperty.call(o, ks[i])) o2.push(ks[i]);\n\treturn o2;\n}\n\nfunction evert_key(obj/*:any*/, key/*:string*/)/*:EvertType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) if(o[obj[K[i]][key]] == null) o[obj[K[i]][key]] = K[i];\n\treturn o;\n}\n\nfunction evert(obj/*:any*/)/*:EvertType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = K[i];\n\treturn o;\n}\n\nfunction evert_num(obj/*:any*/)/*:EvertNumType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = parseInt(K[i],10);\n\treturn o;\n}\n\nfunction evert_arr(obj/*:any*/)/*:EvertArrType*/ {\n\tvar o/*:EvertArrType*/ = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) {\n\t\tif(o[obj[K[i]]] == null) o[obj[K[i]]] = [];\n\t\to[obj[K[i]]].push(K[i]);\n\t}\n\treturn o;\n}\n\nvar basedate = /*#__PURE__*/new Date(1899, 11, 30, 0, 0, 0); // 2209161600000\nfunction datenum(v/*:Date*/, date1904/*:?boolean*/)/*:number*/ {\n\tvar epoch = /*#__PURE__*/v.getTime();\n\tif(date1904) epoch -= 1462*24*60*60*1000;\n\tvar dnthresh = /*#__PURE__*/basedate.getTime() + (/*#__PURE__*/v.getTimezoneOffset() - /*#__PURE__*/basedate.getTimezoneOffset()) * 60000;\n\treturn (epoch - dnthresh) / (24 * 60 * 60 * 1000);\n}\nvar refdate = /*#__PURE__*/new Date();\nvar dnthresh = /*#__PURE__*/basedate.getTime() + (/*#__PURE__*/refdate.getTimezoneOffset() - /*#__PURE__*/basedate.getTimezoneOffset()) * 60000;\nvar refoffset = /*#__PURE__*/refdate.getTimezoneOffset();\nfunction numdate(v/*:number*/)/*:Date*/ {\n\tvar out = new Date();\n\tout.setTime(v * 24 * 60 * 60 * 1000 + dnthresh);\n\tif (out.getTimezoneOffset() !== refoffset) {\n\t\tout.setTime(out.getTime() + (out.getTimezoneOffset() - refoffset) * 60000);\n\t}\n\treturn out;\n}\n\n/* ISO 8601 Duration */\nfunction parse_isodur(s) {\n\tvar sec = 0, mt = 0, time = false;\n\tvar m = s.match(/P([0-9\\.]+Y)?([0-9\\.]+M)?([0-9\\.]+D)?T([0-9\\.]+H)?([0-9\\.]+M)?([0-9\\.]+S)?/);\n\tif(!m) throw new Error(\"|\" + s + \"| is not an ISO8601 Duration\");\n\tfor(var i = 1; i != m.length; ++i) {\n\t\tif(!m[i]) continue;\n\t\tmt = 1;\n\t\tif(i > 3) time = true;\n\t\tswitch(m[i].slice(m[i].length-1)) {\n\t\t\tcase 'Y':\n\t\t\t\tthrow new Error(\"Unsupported ISO Duration Field: \" + m[i].slice(m[i].length-1));\n\t\t\tcase 'D': mt *= 24;\n\t\t\t\t/* falls through */\n\t\t\tcase 'H': mt *= 60;\n\t\t\t\t/* falls through */\n\t\t\tcase 'M':\n\t\t\t\tif(!time) throw new Error(\"Unsupported ISO Duration Field: M\");\n\t\t\t\telse mt *= 60;\n\t\t\t\t/* falls through */\n\t\t\tcase 'S': break;\n\t\t}\n\t\tsec += mt * parseInt(m[i], 10);\n\t}\n\treturn sec;\n}\n\nvar good_pd_date_1 = /*#__PURE__*/new Date('2017-02-19T19:06:09.000Z');\nvar good_pd_date = /*#__PURE__*/isNaN(/*#__PURE__*/good_pd_date_1.getFullYear()) ? /*#__PURE__*/new Date('2/19/17') : good_pd_date_1;\nvar good_pd = /*#__PURE__*/good_pd_date.getFullYear() == 2017;\n/* parses a date as a local date */\nfunction parseDate(str/*:string|Date*/, fixdate/*:?number*/)/*:Date*/ {\n\tvar d = new Date(str);\n\tif(good_pd) {\n\t\t/*:: if(fixdate == null) fixdate = 0; */\n\t\tif(fixdate > 0) d.setTime(d.getTime() + d.getTimezoneOffset() * 60 * 1000);\n\t\telse if(fixdate < 0) d.setTime(d.getTime() - d.getTimezoneOffset() * 60 * 1000);\n\t\treturn d;\n\t}\n\tif(str instanceof Date) return str;\n\tif(good_pd_date.getFullYear() == 1917 && !isNaN(d.getFullYear())) {\n\t\tvar s = d.getFullYear();\n\t\tif(str.indexOf(\"\" + s) > -1) return d;\n\t\td.setFullYear(d.getFullYear() + 100); return d;\n\t}\n\tvar n = str.match(/\\d+/g)||[\"2017\",\"2\",\"19\",\"0\",\"0\",\"0\"];\n\tvar out = new Date(+n[0], +n[1] - 1, +n[2], (+n[3]||0), (+n[4]||0), (+n[5]||0));\n\tif(str.indexOf(\"Z\") > -1) out = new Date(out.getTime() - out.getTimezoneOffset() * 60 * 1000);\n\treturn out;\n}\n\nfunction cc2str(arr/*:Array<number>*/, debomit)/*:string*/ {\n\tif(has_buf && Buffer.isBuffer(arr)) {\n\t\tif(debomit) {\n\t\t\tif(arr[0] == 0xFF && arr[1] == 0xFE) return utf8write(arr.slice(2).toString(\"utf16le\"));\n\t\t\tif(arr[1] == 0xFE && arr[2] == 0xFF) return utf8write(utf16beread(arr.slice(2).toString(\"binary\")));\n\t\t}\n\t\treturn arr.toString(\"binary\");\n\t}\n\n\tif(typeof TextDecoder !== \"undefined\") try {\n\t\tif(debomit) {\n\t\t\tif(arr[0] == 0xFF && arr[1] == 0xFE) return utf8write(new TextDecoder(\"utf-16le\").decode(arr.slice(2)));\n\t\t\tif(arr[0] == 0xFE && arr[1] == 0xFF) return utf8write(new TextDecoder(\"utf-16be\").decode(arr.slice(2)));\n\t\t}\n\t\tvar rev = {\n\t\t\t\"\\u20ac\": \"\\x80\", \"\\u201a\": \"\\x82\", \"\\u0192\": \"\\x83\", \"\\u201e\": \"\\x84\",\n\t\t\t\"\\u2026\": \"\\x85\", \"\\u2020\": \"\\x86\", \"\\u2021\": \"\\x87\", \"\\u02c6\": \"\\x88\",\n\t\t\t\"\\u2030\": \"\\x89\", \"\\u0160\": \"\\x8a\", \"\\u2039\": \"\\x8b\", \"\\u0152\": \"\\x8c\",\n\t\t\t\"\\u017d\": \"\\x8e\", \"\\u2018\": \"\\x91\", \"\\u2019\": \"\\x92\", \"\\u201c\": \"\\x93\",\n\t\t\t\"\\u201d\": \"\\x94\", \"\\u2022\": \"\\x95\", \"\\u2013\": \"\\x96\", \"\\u2014\": \"\\x97\",\n\t\t\t\"\\u02dc\": \"\\x98\", \"\\u2122\": \"\\x99\", \"\\u0161\": \"\\x9a\", \"\\u203a\": \"\\x9b\",\n\t\t\t\"\\u0153\": \"\\x9c\", \"\\u017e\": \"\\x9e\", \"\\u0178\": \"\\x9f\"\n\t\t};\n\t\tif(Array.isArray(arr)) arr = new Uint8Array(arr);\n\t\treturn new TextDecoder(\"latin1\").decode(arr).replace(/[€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ]/g, function(c) { return rev[c] || c; });\n\t} catch(e) {}\n\n\tvar o = [];\n\tfor(var i = 0; i != arr.length; ++i) o.push(String.fromCharCode(arr[i]));\n\treturn o.join(\"\");\n}\n\nfunction dup(o/*:any*/)/*:any*/ {\n\tif(typeof JSON != 'undefined' && !Array.isArray(o)) return JSON.parse(JSON.stringify(o));\n\tif(typeof o != 'object' || o == null) return o;\n\tif(o instanceof Date) return new Date(o.getTime());\n\tvar out = {};\n\tfor(var k in o) if(Object.prototype.hasOwnProperty.call(o, k)) out[k] = dup(o[k]);\n\treturn out;\n}\n\nfunction fill(c/*:string*/,l/*:number*/)/*:string*/ { var o = \"\"; while(o.length < l) o+=c; return o; }\n\n/* TODO: stress test */\nfunction fuzzynum(s/*:string*/)/*:number*/ {\n\tvar v/*:number*/ = Number(s);\n\tif(!isNaN(v)) return isFinite(v) ? v : NaN;\n\tif(!/\\d/.test(s)) return v;\n\tvar wt = 1;\n\tvar ss = s.replace(/([\\d]),([\\d])/g,\"$1$2\").replace(/[$]/g,\"\").replace(/[%]/g, function() { wt *= 100; return \"\";});\n\tif(!isNaN(v = Number(ss))) return v / wt;\n\tss = ss.replace(/[(](.*)[)]/,function($$, $1) { wt = -wt; return $1;});\n\tif(!isNaN(v = Number(ss))) return v / wt;\n\treturn v;\n}\nvar lower_months = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'];\nfunction fuzzydate(s/*:string*/)/*:Date*/ {\n\tvar o = new Date(s), n = new Date(NaN);\n\tvar y = o.getYear(), m = o.getMonth(), d = o.getDate();\n\tif(isNaN(d)) return n;\n\tvar lower = s.toLowerCase();\n\tif(lower.match(/jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec/)) {\n\t\tlower = lower.replace(/[^a-z]/g,\"\").replace(/([^a-z]|^)[ap]m?([^a-z]|$)/,\"\");\n\t\tif(lower.length > 3 && lower_months.indexOf(lower) == -1) return n;\n\t} else if(lower.match(/[a-z]/)) return n;\n\tif(y < 0 || y > 8099) return n;\n\tif((m > 0 || d > 1) && y != 101) return o;\n\tif(s.match(/[^-0-9:,\\/\\\\]/)) return n;\n\treturn o;\n}\n\nvar split_regex = /*#__PURE__*/(function() {\n\tvar safe_split_regex = \"abacaba\".split(/(:?b)/i).length == 5;\n\treturn function split_regex(str/*:string*/, re, def/*:string*/)/*:Array<string>*/ {\n\t\tif(safe_split_regex || typeof re == \"string\") return str.split(re);\n\t\tvar p = str.split(re), o = [p[0]];\n\t\tfor(var i = 1; i < p.length; ++i) { o.push(def); o.push(p[i]); }\n\t\treturn o;\n\t};\n})();\nfunction getdatastr(data)/*:?string*/ {\n\tif(!data) return null;\n\tif(data.content && data.type) return cc2str(data.content, true);\n\tif(data.data) return debom(data.data);\n\tif(data.asNodeBuffer && has_buf) return debom(data.asNodeBuffer().toString('binary'));\n\tif(data.asBinary) return debom(data.asBinary());\n\tif(data._data && data._data.getContent) return debom(cc2str(Array.prototype.slice.call(data._data.getContent(),0)));\n\treturn null;\n}\n\nfunction getdatabin(data) {\n\tif(!data) return null;\n\tif(data.data) return char_codes(data.data);\n\tif(data.asNodeBuffer && has_buf) return data.asNodeBuffer();\n\tif(data._data && data._data.getContent) {\n\t\tvar o = data._data.getContent();\n\t\tif(typeof o == \"string\") return char_codes(o);\n\t\treturn Array.prototype.slice.call(o);\n\t}\n\tif(data.content && data.type) return data.content;\n\treturn null;\n}\n\nfunction getdata(data) { return (data && data.name.slice(-4) === \".bin\") ? getdatabin(data) : getdatastr(data); }\n\n/* Part 2 Section 10.1.2 \"Mapping Content Types\" Names are case-insensitive */\n/* OASIS does not comment on filename case sensitivity */\nfunction safegetzipfile(zip, file/*:string*/) {\n\tvar k = zip.FullPaths || keys(zip.files);\n\tvar f = file.toLowerCase().replace(/[\\/]/g, '\\\\'), g = f.replace(/\\\\/g,'\\/');\n\tfor(var i=0; i<k.length; ++i) {\n\t\tvar n = k[i].replace(/^Root Entry[\\/]/,\"\").toLowerCase();\n\t\tif(f == n || g == n) return zip.files ? zip.files[k[i]] : zip.FileIndex[i];\n\t}\n\treturn null;\n}\n\nfunction getzipfile(zip, file/*:string*/) {\n\tvar o = safegetzipfile(zip, file);\n\tif(o == null) throw new Error(\"Cannot find file \" + file + \" in zip\");\n\treturn o;\n}\n\nfunction getzipdata(zip, file/*:string*/, safe/*:?boolean*/)/*:any*/ {\n\tif(!safe) return getdata(getzipfile(zip, file));\n\tif(!file) return null;\n\ttry { return getzipdata(zip, file); } catch(e) { return null; }\n}\n\nfunction getzipstr(zip, file/*:string*/, safe/*:?boolean*/)/*:?string*/ {\n\tif(!safe) return getdatastr(getzipfile(zip, file));\n\tif(!file) return null;\n\ttry { return getzipstr(zip, file); } catch(e) { return null; }\n}\n\nfunction getzipbin(zip, file/*:string*/, safe/*:?boolean*/)/*:any*/ {\n\tif(!safe) return getdatabin(getzipfile(zip, file));\n\tif(!file) return null;\n\ttry { return getzipbin(zip, file); } catch(e) { return null; }\n}\n\nfunction zipentries(zip) {\n\tvar k = zip.FullPaths || keys(zip.files), o = [];\n\tfor(var i = 0; i < k.length; ++i) if(k[i].slice(-1) != '/') o.push(k[i].replace(/^Root Entry[\\/]/, \"\"));\n\treturn o.sort();\n}\n\nfunction zip_add_file(zip, path, content) {\n\tif(zip.FullPaths) {\n\t\tif(typeof content == \"string\") {\n\t\t\tvar res;\n\t\t\tif(has_buf) res = Buffer_from(content);\n\t\t\t/* TODO: investigate performance in Edge 13 */\n\t\t\t//else if(typeof TextEncoder !== \"undefined\") res = new TextEncoder().encode(content);\n\t\t\telse res = utf8decode(content);\n\t\t\treturn CFB.utils.cfb_add(zip, path, res);\n\t\t}\n\t\tCFB.utils.cfb_add(zip, path, content);\n\t}\n\telse zip.file(path, content);\n}\n\nfunction zip_new() { return CFB.utils.cfb_new(); }\n\nfunction zip_read(d, o) {\n\tswitch(o.type) {\n\t\tcase \"base64\": return CFB.read(d, { type: \"base64\" });\n\t\tcase \"binary\": return CFB.read(d, { type: \"binary\" });\n\t\tcase \"buffer\": case \"array\": return CFB.read(d, { type: \"buffer\" });\n\t}\n\tthrow new Error(\"Unrecognized type \" + o.type);\n}\n\nfunction resolve_path(path/*:string*/, base/*:string*/)/*:string*/ {\n\tif(path.charAt(0) == \"/\") return path.slice(1);\n\tvar result = base.split('/');\n\tif(base.slice(-1) != \"/\") result.pop(); // folder path\n\tvar target = path.split('/');\n\twhile (target.length !== 0) {\n\t\tvar step = target.shift();\n\t\tif (step === '..') result.pop();\n\t\telse if (step !== '.') result.push(step);\n\t}\n\treturn result.join('/');\n}\nvar XML_HEADER = '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\\r\\n';\nvar attregexg=/([^\"\\s?>\\/]+)\\s*=\\s*((?:\")([^\"]*)(?:\")|(?:')([^']*)(?:')|([^'\">\\s]+))/g;\nvar tagregex1=/<[\\/\\?]?[a-zA-Z0-9:_-]+(?:\\s+[^\"\\s?>\\/]+\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^'\">\\s=]+))*\\s*[\\/\\?]?>/mg, tagregex2 = /<[^>]*>/g;\nvar tagregex = /*#__PURE__*/XML_HEADER.match(tagregex1) ? tagregex1 : tagregex2;\nvar nsregex=/<\\w*:/, nsregex2 = /<(\\/?)\\w+:/;\nfunction parsexmltag(tag/*:string*/, skip_root/*:?boolean*/, skip_LC/*:?boolean*/)/*:any*/ {\n\tvar z = ({}/*:any*/);\n\tvar eq = 0, c = 0;\n\tfor(; eq !== tag.length; ++eq) if((c = tag.charCodeAt(eq)) === 32 || c === 10 || c === 13) break;\n\tif(!skip_root) z[0] = tag.slice(0, eq);\n\tif(eq === tag.length) return z;\n\tvar m = tag.match(attregexg), j=0, v=\"\", i=0, q=\"\", cc=\"\", quot = 1;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\tcc = m[i];\n\t\tfor(c=0; c != cc.length; ++c) if(cc.charCodeAt(c) === 61) break;\n\t\tq = cc.slice(0,c).trim();\n\t\twhile(cc.charCodeAt(c+1) == 32) ++c;\n\t\tquot = ((eq=cc.charCodeAt(c+1)) == 34 || eq == 39) ? 1 : 0;\n\t\tv = cc.slice(c+1+quot, cc.length-quot);\n\t\tfor(j=0;j!=q.length;++j) if(q.charCodeAt(j) === 58) break;\n\t\tif(j===q.length) {\n\t\t\tif(q.indexOf(\"_\") > 0) q = q.slice(0, q.indexOf(\"_\")); // from ods\n\t\t\tz[q] = v;\n\t\t\tif(!skip_LC) z[q.toLowerCase()] = v;\n\t\t}\n\t\telse {\n\t\t\tvar k = (j===5 && q.slice(0,5)===\"xmlns\"?\"xmlns\":\"\")+q.slice(j+1);\n\t\t\tif(z[k] && q.slice(j-3,j) == \"ext\") continue; // from ods\n\t\t\tz[k] = v;\n\t\t\tif(!skip_LC) z[k.toLowerCase()] = v;\n\t\t}\n\t}\n\treturn z;\n}\nfunction strip_ns(x/*:string*/)/*:string*/ { return x.replace(nsregex2, \"<$1\"); }\n\nvar encodings = {\n\t'&quot;': '\"',\n\t'&apos;': \"'\",\n\t'&gt;': '>',\n\t'&lt;': '<',\n\t'&amp;': '&'\n};\nvar rencoding = /*#__PURE__*/evert(encodings);\n//var rencstr = \"&<>'\\\"\".split(\"\");\n\n// TODO: CP remap (need to read file version to determine OS)\nvar unescapexml/*:StringConv*/ = /*#__PURE__*/(function() {\n\t/* 22.4.2.4 bstr (Basic String) */\n\tvar encregex = /&(?:quot|apos|gt|lt|amp|#x?([\\da-fA-F]+));/ig, coderegex = /_x([\\da-fA-F]{4})_/ig;\n\treturn function unescapexml(text/*:string*/)/*:string*/ {\n\t\tvar s = text + '', i = s.indexOf(\"<![CDATA[\");\n\t\tif(i == -1) return s.replace(encregex, function($$, $1) { return encodings[$$]||String.fromCharCode(parseInt($1,$$.indexOf(\"x\")>-1?16:10))||$$; }).replace(coderegex,function(m,c) {return String.fromCharCode(parseInt(c,16));});\n\t\tvar j = s.indexOf(\"]]>\");\n\t\treturn unescapexml(s.slice(0, i)) + s.slice(i+9,j) + unescapexml(s.slice(j+3));\n\t};\n})();\n\nvar decregex=/[&<>'\"]/g, charegex = /[\\u0000-\\u0008\\u000b-\\u001f]/g;\nfunction escapexml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(charegex,function(s) { return \"_x\" + (\"000\"+s.charCodeAt(0).toString(16)).slice(-4) + \"_\";});\n}\nfunction escapexmltag(text/*:string*/)/*:string*/{ return escapexml(text).replace(/ /g,\"_x0020_\"); }\n\nvar htmlcharegex = /[\\u0000-\\u001f]/g;\nfunction escapehtml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(/\\n/g, \"<br/>\").replace(htmlcharegex,function(s) { return \"&#x\" + (\"000\"+s.charCodeAt(0).toString(16)).slice(-4) + \";\"; });\n}\n\nfunction escapexlml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(htmlcharegex,function(s) { return \"&#x\" + (s.charCodeAt(0).toString(16)).toUpperCase() + \";\"; });\n}\n\n/* TODO: handle codepages */\nvar xlml_fixstr/*:StringConv*/ = /*#__PURE__*/(function() {\n\tvar entregex = /&#(\\d+);/g;\n\tfunction entrepl($$/*:string*/,$1/*:string*/)/*:string*/ { return String.fromCharCode(parseInt($1,10)); }\n\treturn function xlml_fixstr(str/*:string*/)/*:string*/ { return str.replace(entregex,entrepl); };\n})();\nfunction xlml_unfixstr(str/*:string*/)/*:string*/ { return str.replace(/(\\r\\n|[\\r\\n])/g,\"\\&#10;\"); }\n\nfunction parsexmlbool(value/*:any*/)/*:boolean*/ {\n\tswitch(value) {\n\t\tcase 1: case true: case '1': case 'true': case 'TRUE': return true;\n\t\t/* case '0': case 'false': case 'FALSE':*/\n\t\tdefault: return false;\n\t}\n}\n\nfunction utf8reada(orig/*:string*/)/*:string*/ {\n\tvar out = \"\", i = 0, c = 0, d = 0, e = 0, f = 0, w = 0;\n\twhile (i < orig.length) {\n\t\tc = orig.charCodeAt(i++);\n\t\tif (c < 128) { out += String.fromCharCode(c); continue; }\n\t\td = orig.charCodeAt(i++);\n\t\tif (c>191 && c<224) { f = ((c & 31) << 6); f |= (d & 63); out += String.fromCharCode(f); continue; }\n\t\te = orig.charCodeAt(i++);\n\t\tif (c < 240) { out += String.fromCharCode(((c & 15) << 12) | ((d & 63) << 6) | (e & 63)); continue; }\n\t\tf = orig.charCodeAt(i++);\n\t\tw = (((c & 7) << 18) | ((d & 63) << 12) | ((e & 63) << 6) | (f & 63))-65536;\n\t\tout += String.fromCharCode(0xD800 + ((w>>>10)&1023));\n\t\tout += String.fromCharCode(0xDC00 + (w&1023));\n\t}\n\treturn out;\n}\n\nfunction utf8readb(data) {\n\tvar out = new_raw_buf(2*data.length), w, i, j = 1, k = 0, ww=0, c;\n\tfor(i = 0; i < data.length; i+=j) {\n\t\tj = 1;\n\t\tif((c=data.charCodeAt(i)) < 128) w = c;\n\t\telse if(c < 224) { w = (c&31)*64+(data.charCodeAt(i+1)&63); j=2; }\n\t\telse if(c < 240) { w=(c&15)*4096+(data.charCodeAt(i+1)&63)*64+(data.charCodeAt(i+2)&63); j=3; }\n\t\telse { j = 4;\n\t\t\tw = (c & 7)*262144+(data.charCodeAt(i+1)&63)*4096+(data.charCodeAt(i+2)&63)*64+(data.charCodeAt(i+3)&63);\n\t\t\tw -= 65536; ww = 0xD800 + ((w>>>10)&1023); w = 0xDC00 + (w&1023);\n\t\t}\n\t\tif(ww !== 0) { out[k++] = ww&255; out[k++] = ww>>>8; ww = 0; }\n\t\tout[k++] = w%256; out[k++] = w>>>8;\n\t}\n\treturn out.slice(0,k).toString('ucs2');\n}\n\nfunction utf8readc(data) { return Buffer_from(data, 'binary').toString('utf8'); }\n\nvar utf8corpus = \"foo bar baz\\u00e2\\u0098\\u0083\\u00f0\\u009f\\u008d\\u00a3\";\nvar utf8read = has_buf && (/*#__PURE__*/utf8readc(utf8corpus) == /*#__PURE__*/utf8reada(utf8corpus) && utf8readc || /*#__PURE__*/utf8readb(utf8corpus) == /*#__PURE__*/utf8reada(utf8corpus) && utf8readb) || utf8reada;\n\nvar utf8write/*:StringConv*/ = has_buf ? function(data) { return Buffer_from(data, 'utf8').toString(\"binary\"); } : function(orig/*:string*/)/*:string*/ {\n\tvar out/*:Array<string>*/ = [], i = 0, c = 0, d = 0;\n\twhile(i < orig.length) {\n\t\tc = orig.charCodeAt(i++);\n\t\tswitch(true) {\n\t\t\tcase c < 128: out.push(String.fromCharCode(c)); break;\n\t\t\tcase c < 2048:\n\t\t\t\tout.push(String.fromCharCode(192 + (c >> 6)));\n\t\t\t\tout.push(String.fromCharCode(128 + (c & 63)));\n\t\t\t\tbreak;\n\t\t\tcase c >= 55296 && c < 57344:\n\t\t\t\tc -= 55296; d = orig.charCodeAt(i++) - 56320 + (c<<10);\n\t\t\t\tout.push(String.fromCharCode(240 + ((d >>18) & 7)));\n\t\t\t\tout.push(String.fromCharCode(144 + ((d >>12) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + ((d >> 6) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + (d & 63)));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tout.push(String.fromCharCode(224 + (c >> 12)));\n\t\t\t\tout.push(String.fromCharCode(128 + ((c >> 6) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + (c & 63)));\n\t\t}\n\t}\n\treturn out.join(\"\");\n};\n\n// matches <foo>...</foo> extracts content\nvar matchtag = /*#__PURE__*/(function() {\n\tvar mtcache/*:{[k:string]:RegExp}*/ = ({}/*:any*/);\n\treturn function matchtag(f/*:string*/,g/*:?string*/)/*:RegExp*/ {\n\t\tvar t = f+\"|\"+(g||\"\");\n\t\tif(mtcache[t]) return mtcache[t];\n\t\treturn (mtcache[t] = new RegExp('<(?:\\\\w+:)?'+f+'(?: xml:space=\"preserve\")?(?:[^>]*)>([\\\\s\\\\S]*?)</(?:\\\\w+:)?'+f+'>',((g||\"\")/*:any*/)));\n\t};\n})();\n\nvar htmldecode/*:{(s:string):string}*/ = /*#__PURE__*/(function() {\n\tvar entities/*:Array<[RegExp, string]>*/ = [\n\t\t['nbsp', ' '], ['middot', '·'],\n\t\t['quot', '\"'], ['apos', \"'\"], ['gt',   '>'], ['lt',   '<'], ['amp',  '&']\n\t].map(function(x/*:[string, string]*/) { return [new RegExp('&' + x[0] + ';', \"ig\"), x[1]]; });\n\treturn function htmldecode(str/*:string*/)/*:string*/ {\n\t\tvar o = str\n\t\t\t\t// Remove new lines and spaces from start of content\n\t\t\t\t.replace(/^[\\t\\n\\r ]+/, \"\")\n\t\t\t\t// Remove new lines and spaces from end of content\n\t\t\t\t.replace(/[\\t\\n\\r ]+$/,\"\")\n\t\t\t\t// Added line which removes any white space characters after and before html tags\n\t\t\t\t.replace(/>\\s+/g,\">\").replace(/\\s+</g,\"<\")\n\t\t\t\t// Replace remaining new lines and spaces with space\n\t\t\t\t.replace(/[\\t\\n\\r ]+/g, \" \")\n\t\t\t\t// Replace <br> tags with new lines\n\t\t\t\t.replace(/<\\s*[bB][rR]\\s*\\/?>/g,\"\\n\")\n\t\t\t\t// Strip HTML elements\n\t\t\t\t.replace(/<[^>]*>/g,\"\");\n\t\tfor(var i = 0; i < entities.length; ++i) o = o.replace(entities[i][0], entities[i][1]);\n\t\treturn o;\n\t};\n})();\n\nvar vtregex = /*#__PURE__*/(function(){ var vt_cache = {};\n\treturn function vt_regex(bt) {\n\t\tif(vt_cache[bt] !== undefined) return vt_cache[bt];\n\t\treturn (vt_cache[bt] = new RegExp(\"<(?:vt:)?\" + bt + \">([\\\\s\\\\S]*?)</(?:vt:)?\" + bt + \">\", 'g') );\n};})();\nvar vtvregex = /<\\/?(?:vt:)?variant>/g, vtmregex = /<(?:vt:)([^>]*)>([\\s\\S]*)</;\nfunction parseVector(data/*:string*/, opts)/*:Array<{v:string,t:string}>*/ {\n\tvar h = parsexmltag(data);\n\n\tvar matches/*:Array<string>*/ = data.match(vtregex(h.baseType))||[];\n\tvar res/*:Array<any>*/ = [];\n\tif(matches.length != h.size) {\n\t\tif(opts.WTF) throw new Error(\"unexpected vector length \" + matches.length + \" != \" + h.size);\n\t\treturn res;\n\t}\n\tmatches.forEach(function(x/*:string*/) {\n\t\tvar v = x.replace(vtvregex,\"\").match(vtmregex);\n\t\tif(v) res.push({v:utf8read(v[2]), t:v[1]});\n\t});\n\treturn res;\n}\n\nvar wtregex = /(^\\s|\\s$|\\n)/;\nfunction writetag(f/*:string*/,g/*:string*/)/*:string*/ { return '<' + f + (g.match(wtregex)?' xml:space=\"preserve\"' : \"\") + '>' + g + '</' + f + '>'; }\n\nfunction wxt_helper(h)/*:string*/ { return keys(h).map(function(k) { return \" \" + k + '=\"' + h[k] + '\"';}).join(\"\"); }\nfunction writextag(f/*:string*/,g/*:?string*/,h) { return '<' + f + ((h != null) ? wxt_helper(h) : \"\") + ((g != null) ? (g.match(wtregex)?' xml:space=\"preserve\"' : \"\") + '>' + g + '</' + f : \"/\") + '>';}\n\nfunction write_w3cdtf(d/*:Date*/, t/*:?boolean*/)/*:string*/ { try { return d.toISOString().replace(/\\.\\d*/,\"\"); } catch(e) { if(t) throw e; } return \"\"; }\n\nfunction write_vt(s, xlsx/*:?boolean*/)/*:string*/ {\n\tswitch(typeof s) {\n\t\tcase 'string':\n\t\t\tvar o = writextag('vt:lpwstr', escapexml(s));\n\t\t\tif(xlsx) o = o.replace(/&quot;/g, \"_x0022_\");\n\t\t\treturn o;\n\t\tcase 'number': return writextag((s|0)==s?'vt:i4':'vt:r8', escapexml(String(s)));\n\t\tcase 'boolean': return writextag('vt:bool',s?'true':'false');\n\t}\n\tif(s instanceof Date) return writextag('vt:filetime', write_w3cdtf(s));\n\tthrow new Error(\"Unable to serialize \" + s);\n}\n\nfunction xlml_normalize(d)/*:string*/ {\n\tif(has_buf &&/*::typeof Buffer !== \"undefined\" && d != null && d instanceof Buffer &&*/ Buffer.isBuffer(d)) return d.toString('utf8');\n\tif(typeof d === 'string') return d;\n\t/* duktape */\n\tif(typeof Uint8Array !== 'undefined' && d instanceof Uint8Array) return utf8read(a2s(ab2a(d)));\n\tthrow new Error(\"Bad input format: expected Buffer or string\");\n}\n/* UOS uses CJK in tags */\nvar xlmlregex = /<(\\/?)([^\\s?><!\\/:]*:|)([^\\s?<>:\\/]+)(?:[\\s?:\\/][^>]*)?>/mg;\n//var xlmlregex = /<(\\/?)([a-z0-9]*:|)(\\w+)[^>]*>/mg;\n\nvar XMLNS = ({\n\tCORE_PROPS: 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties',\n\tCUST_PROPS: \"http://schemas.openxmlformats.org/officeDocument/2006/custom-properties\",\n\tEXT_PROPS: \"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties\",\n\tCT: 'http://schemas.openxmlformats.org/package/2006/content-types',\n\tRELS: 'http://schemas.openxmlformats.org/package/2006/relationships',\n\tTCMNT: 'http://schemas.microsoft.com/office/spreadsheetml/2018/threadedcomments',\n\t'dc': 'http://purl.org/dc/elements/1.1/',\n\t'dcterms': 'http://purl.org/dc/terms/',\n\t'dcmitype': 'http://purl.org/dc/dcmitype/',\n\t'mx': 'http://schemas.microsoft.com/office/mac/excel/2008/main',\n\t'r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',\n\t'sjs': 'http://schemas.openxmlformats.org/package/2006/sheetjs/core-properties',\n\t'vt': 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes',\n\t'xsi': 'http://www.w3.org/2001/XMLSchema-instance',\n\t'xsd': 'http://www.w3.org/2001/XMLSchema'\n}/*:any*/);\n\nvar XMLNS_main = [\n\t'http://schemas.openxmlformats.org/spreadsheetml/2006/main',\n\t'http://purl.oclc.org/ooxml/spreadsheetml/main',\n\t'http://schemas.microsoft.com/office/excel/2006/main',\n\t'http://schemas.microsoft.com/office/excel/2006/2'\n];\n\nvar XLMLNS = ({\n\t'o':    'urn:schemas-microsoft-com:office:office',\n\t'x':    'urn:schemas-microsoft-com:office:excel',\n\t'ss':   'urn:schemas-microsoft-com:office:spreadsheet',\n\t'dt':   'uuid:C2F41010-65B3-11d1-A29F-00AA00C14882',\n\t'mv':   'http://macVmlSchemaUri',\n\t'v':    'urn:schemas-microsoft-com:vml',\n\t'html': 'http://www.w3.org/TR/REC-html40'\n}/*:any*/);\nfunction read_double_le(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ {\n\tvar s = 1 - 2 * (b[idx + 7] >>> 7);\n\tvar e = ((b[idx + 7] & 0x7f) << 4) + ((b[idx + 6] >>> 4) & 0x0f);\n\tvar m = (b[idx+6]&0x0f);\n\tfor(var i = 5; i >= 0; --i) m = m * 256 + b[idx + i];\n\tif(e == 0x7ff) return m == 0 ? (s * Infinity) : NaN;\n\tif(e == 0) e = -1022;\n\telse { e -= 1023; m += Math.pow(2,52); }\n\treturn s * Math.pow(2, e - 52) * m;\n}\n\nfunction write_double_le(b/*:RawBytes|CFBlob*/, v/*:number*/, idx/*:number*/) {\n\tvar bs = ((((v < 0) || (1/v == -Infinity)) ? 1 : 0) << 7), e = 0, m = 0;\n\tvar av = bs ? (-v) : v;\n\tif(!isFinite(av)) { e = 0x7ff; m = isNaN(v) ? 0x6969 : 0; }\n\telse if(av == 0) e = m = 0;\n\telse {\n\t\te = Math.floor(Math.log(av) / Math.LN2);\n\t\tm = av * Math.pow(2, 52 - e);\n\t\tif((e <= -1023) && (!isFinite(m) || (m < Math.pow(2,52)))) { e = -1022; }\n\t\telse { m -= Math.pow(2,52); e+=1023; }\n\t}\n\tfor(var i = 0; i <= 5; ++i, m/=256) b[idx + i] = m & 0xff;\n\tb[idx + 6] = ((e & 0x0f) << 4) | (m & 0xf);\n\tb[idx + 7] = (e >> 4) | bs;\n}\n\nvar ___toBuffer = function(bufs/*:Array<Array<RawBytes> >*/)/*:RawBytes*/ { var x=[],w=10240; for(var i=0;i<bufs[0].length;++i) if(bufs[0][i]) for(var j=0,L=bufs[0][i].length;j<L;j+=w) x.push.apply(x, bufs[0][i].slice(j,j+w)); return x; };\nvar __toBuffer = has_buf ? function(bufs) { return (bufs[0].length > 0 && Buffer.isBuffer(bufs[0][0])) ? Buffer.concat(bufs[0].map(function(x) { return Buffer.isBuffer(x) ? x : Buffer_from(x); })) : ___toBuffer(bufs);} : ___toBuffer;\n\nvar ___utf16le = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/)/*:string*/ { var ss/*:Array<string>*/=[]; for(var i=s; i<e; i+=2) ss.push(String.fromCharCode(__readUInt16LE(b,i))); return ss.join(\"\").replace(chr0,''); };\nvar __utf16le = has_buf ? function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/)/*:string*/ { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___utf16le(b,s,e); return b.toString('utf16le',s,e).replace(chr0,'')/*.replace(chr1,'!')*/; } : ___utf16le;\n\nvar ___hexlify = function(b/*:RawBytes|CFBlob*/,s/*:number*/,l/*:number*/)/*:string*/ { var ss/*:Array<string>*/=[]; for(var i=s; i<s+l; ++i) ss.push((\"0\" + b[i].toString(16)).slice(-2)); return ss.join(\"\"); };\nvar __hexlify = has_buf ? function(b/*:RawBytes|CFBlob*/,s/*:number*/,l/*:number*/)/*:string*/ { return Buffer.isBuffer(b)/*:: && b instanceof Buffer*/ ? b.toString('hex',s,s+l) : ___hexlify(b,s,l); } : ___hexlify;\n\nvar ___utf8 = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/) { var ss=[]; for(var i=s; i<e; i++) ss.push(String.fromCharCode(__readUInt8(b,i))); return ss.join(\"\"); };\nvar __utf8 = has_buf ? function utf8_b(b/*:RawBytes|CFBlob*/, s/*:number*/, e/*:number*/) { return (Buffer.isBuffer(b)/*:: && (b instanceof Buffer)*/) ? b.toString('utf8',s,e) : ___utf8(b,s,e); } : ___utf8;\n\nvar ___lpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __lpstr = ___lpstr;\n\nvar ___cpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __cpstr = ___cpstr;\n\nvar ___lpwstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = 2*__readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __lpwstr = ___lpwstr;\n\nvar ___lpp4 = function lpp4_(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf16le(b, i+4,i+4+len) : \"\";};\nvar __lpp4 = ___lpp4;\n\nvar ___8lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len) : \"\";};\nvar __8lpp4 = ___8lpp4;\n\nvar ___double = function(b/*:RawBytes|CFBlob*/, idx/*:number*/) { return read_double_le(b, idx);};\nvar __double = ___double;\n\nvar is_buf = function is_buf_a(a) { return Array.isArray(a) || (typeof Uint8Array !== \"undefined\" && a instanceof Uint8Array); };\n\nif(has_buf/*:: && typeof Buffer !== 'undefined'*/) {\n\t__lpstr = function lpstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___lpstr(b, i); var len = b.readUInt32LE(i); return len > 0 ? b.toString('utf8',i+4,i+4+len-1) : \"\";};\n\t__cpstr = function cpstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___cpstr(b, i); var len = b.readUInt32LE(i); return len > 0 ? b.toString('utf8',i+4,i+4+len-1) : \"\";};\n\t__lpwstr = function lpwstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___lpwstr(b, i); var len = 2*b.readUInt32LE(i); return b.toString('utf16le',i+4,i+4+len-1);};\n\t__lpp4 = function lpp4_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___lpp4(b, i); var len = b.readUInt32LE(i); return b.toString('utf16le',i+4,i+4+len);};\n\t__8lpp4 = function lpp4_8b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___8lpp4(b, i); var len = b.readUInt32LE(i); return b.toString('utf8',i+4,i+4+len);};\n\t__double = function double_(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(Buffer.isBuffer(b)/*::&& b instanceof Buffer*/) return b.readDoubleLE(i); return ___double(b,i); };\n\tis_buf = function is_buf_b(a) { return Buffer.isBuffer(a) || Array.isArray(a) || (typeof Uint8Array !== \"undefined\" && a instanceof Uint8Array); };\n}\n\n/* from js-xls */\nfunction cpdoit() {\n\t__utf16le = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/) { return $cptable.utils.decode(1200, b.slice(s,e)).replace(chr0, ''); };\n\t__utf8 = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/) { return $cptable.utils.decode(65001, b.slice(s,e)); };\n\t__lpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(current_ansi, b.slice(i+4, i+4+len-1)) : \"\";};\n\t__cpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(current_codepage, b.slice(i+4, i+4+len-1)) : \"\";};\n\t__lpwstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = 2*__readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(1200, b.slice(i+4,i+4+len-1)) : \"\";};\n\t__lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(1200, b.slice(i+4,i+4+len)) : \"\";};\n\t__8lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(65001, b.slice(i+4,i+4+len)) : \"\";};\n}\nif(typeof $cptable !== 'undefined') cpdoit();\n\nvar __readUInt8 = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return b[idx]; };\nvar __readUInt16LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx+1]*(1<<8))+b[idx]; };\nvar __readInt16LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { var u = (b[idx+1]*(1<<8))+b[idx]; return (u < 0x8000) ? u : ((0xffff - u + 1) * -1); };\nvar __readUInt32LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return b[idx+3]*(1<<24)+(b[idx+2]<<16)+(b[idx+1]<<8)+b[idx]; };\nvar __readInt32LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx+3]<<24)|(b[idx+2]<<16)|(b[idx+1]<<8)|b[idx]; };\nvar __readInt32BE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx]<<24)|(b[idx+1]<<16)|(b[idx+2]<<8)|b[idx+3]; };\n\nfunction ReadShift(size/*:number*/, t/*:?string*/)/*:number|string*/ {\n\tvar o=\"\", oI/*:: :number = 0*/, oR, oo=[], w, vv, i, loc;\n\tswitch(t) {\n\t\tcase 'dbcs':\n\t\t\tloc = this.l;\n\t\t\tif(has_buf && Buffer.isBuffer(this)) o = this.slice(this.l, this.l+2*size).toString(\"utf16le\");\n\t\t\telse for(i = 0; i < size; ++i) { o+=String.fromCharCode(__readUInt16LE(this, loc)); loc+=2; }\n\t\t\tsize *= 2;\n\t\t\tbreak;\n\n\t\tcase 'utf8': o = __utf8(this, this.l, this.l + size); break;\n\t\tcase 'utf16le': size *= 2; o = __utf16le(this, this.l, this.l + size); break;\n\n\t\tcase 'wstr':\n\t\t\tif(typeof $cptable !== 'undefined') o = $cptable.utils.decode(current_codepage, this.slice(this.l, this.l+2*size));\n\t\t\telse return ReadShift.call(this, size, 'dbcs');\n\t\t\tsize = 2 * size; break;\n\n\t\t/* [MS-OLEDS] 2.1.4 LengthPrefixedAnsiString */\n\t\tcase 'lpstr-ansi': o = __lpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break;\n\t\tcase 'lpstr-cp': o = __cpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break;\n\t\t/* [MS-OLEDS] 2.1.5 LengthPrefixedUnicodeString */\n\t\tcase 'lpwstr': o = __lpwstr(this, this.l); size = 4 + 2 * __readUInt32LE(this, this.l); break;\n\t\t/* [MS-OFFCRYPTO] 2.1.2 Length-Prefixed Padded Unicode String (UNICODE-LP-P4) */\n\t\tcase 'lpp4': size = 4 +  __readUInt32LE(this, this.l); o = __lpp4(this, this.l); if(size & 0x02) size += 2; break;\n\t\t/* [MS-OFFCRYPTO] 2.1.3 Length-Prefixed UTF-8 String (UTF-8-LP-P4) */\n\t\tcase '8lpp4': size = 4 +  __readUInt32LE(this, this.l); o = __8lpp4(this, this.l); if(size & 0x03) size += 4 - (size & 0x03); break;\n\n\t\tcase 'cstr': size = 0; o = \"\";\n\t\t\twhile((w=__readUInt8(this, this.l + size++))!==0) oo.push(_getchar(w));\n\t\t\to = oo.join(\"\"); break;\n\t\tcase '_wstr': size = 0; o = \"\";\n\t\t\twhile((w=__readUInt16LE(this,this.l +size))!==0){oo.push(_getchar(w));size+=2;}\n\t\t\tsize+=2; o = oo.join(\"\"); break;\n\n\t\t/* sbcs and dbcs support continue records in the SST way TODO codepages */\n\t\tcase 'dbcs-cont': o = \"\"; loc = this.l;\n\t\t\tfor(i = 0; i < size; ++i) {\n\t\t\t\tif(this.lens && this.lens.indexOf(loc) !== -1) {\n\t\t\t\t\tw = __readUInt8(this, loc);\n\t\t\t\t\tthis.l = loc + 1;\n\t\t\t\t\tvv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont');\n\t\t\t\t\treturn oo.join(\"\") + vv;\n\t\t\t\t}\n\t\t\t\too.push(_getchar(__readUInt16LE(this, loc)));\n\t\t\t\tloc+=2;\n\t\t\t} o = oo.join(\"\"); size *= 2; break;\n\n\t\tcase 'cpstr':\n\t\t\tif(typeof $cptable !== 'undefined') {\n\t\t\t\to = $cptable.utils.decode(current_codepage, this.slice(this.l, this.l + size));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t/* falls through */\n\t\tcase 'sbcs-cont': o = \"\"; loc = this.l;\n\t\t\tfor(i = 0; i != size; ++i) {\n\t\t\t\tif(this.lens && this.lens.indexOf(loc) !== -1) {\n\t\t\t\t\tw = __readUInt8(this, loc);\n\t\t\t\t\tthis.l = loc + 1;\n\t\t\t\t\tvv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont');\n\t\t\t\t\treturn oo.join(\"\") + vv;\n\t\t\t\t}\n\t\t\t\too.push(_getchar(__readUInt8(this, loc)));\n\t\t\t\tloc+=1;\n\t\t\t} o = oo.join(\"\"); break;\n\n\t\tdefault:\n\tswitch(size) {\n\t\tcase 1: oI = __readUInt8(this, this.l); this.l++; return oI;\n\t\tcase 2: oI = (t === 'i' ? __readInt16LE : __readUInt16LE)(this, this.l); this.l += 2; return oI;\n\t\tcase 4: case -4:\n\t\t\tif(t === 'i' || ((this[this.l+3] & 0x80)===0)) { oI = ((size > 0) ? __readInt32LE : __readInt32BE)(this, this.l); this.l += 4; return oI; }\n\t\t\telse { oR = __readUInt32LE(this, this.l); this.l += 4; } return oR;\n\t\tcase 8: case -8:\n\t\t\tif(t === 'f') {\n\t\t\t\tif(size == 8) oR = __double(this, this.l);\n\t\t\t\telse oR = __double([this[this.l+7],this[this.l+6],this[this.l+5],this[this.l+4],this[this.l+3],this[this.l+2],this[this.l+1],this[this.l+0]], 0);\n\t\t\t\tthis.l += 8; return oR;\n\t\t\t} else size = 8;\n\t\t/* falls through */\n\t\tcase 16: o = __hexlify(this, this.l, size); break;\n\t}}\n\tthis.l+=size; return o;\n}\n\nvar __writeUInt32LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); b[idx+2] = ((val >>> 16) & 0xFF); b[idx+3] = ((val >>> 24) & 0xFF); };\nvar __writeInt32LE  = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >> 8) & 0xFF); b[idx+2] = ((val >> 16) & 0xFF); b[idx+3] = ((val >> 24) & 0xFF); };\nvar __writeUInt16LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); };\n\nfunction WriteShift(t/*:number*/, val/*:string|number*/, f/*:?string*/)/*:any*/ {\n\tvar size = 0, i = 0;\n\tif(f === 'dbcs') {\n\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\tfor(i = 0; i != val.length; ++i) __writeUInt16LE(this, val.charCodeAt(i), this.l + 2 * i);\n\t\tsize = 2 * val.length;\n\t} else if(f === 'sbcs') {\n\t\tif(typeof $cptable !== 'undefined' && current_ansi == 874) {\n\t\t\t/* TODO: use tables directly, don't encode */\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tfor(i = 0; i != val.length; ++i) {\n\t\t\t\tvar cppayload = $cptable.utils.encode(current_ansi, val.charAt(i));\n\t\t\t\tthis[this.l + i] = cppayload[0];\n\t\t\t}\n\t\t} else {\n\t\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\t\tval = val.replace(/[^\\x00-\\x7F]/g, \"_\");\n\t\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\t\tfor(i = 0; i != val.length; ++i) this[this.l + i] = (val.charCodeAt(i) & 0xFF);\n\t\t}\n\t\tsize = val.length;\n\t} else if(f === 'hex') {\n\t\tfor(; i < t; ++i) {\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tthis[this.l++] = (parseInt(val.slice(2*i, 2*i+2), 16)||0);\n\t\t} return this;\n\t} else if(f === 'utf16le') {\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tvar end/*:number*/ = Math.min(this.l + t, this.length);\n\t\t\tfor(i = 0; i < Math.min(val.length, t); ++i) {\n\t\t\t\tvar cc = val.charCodeAt(i);\n\t\t\t\tthis[this.l++] = (cc & 0xff);\n\t\t\t\tthis[this.l++] = (cc >> 8);\n\t\t\t}\n\t\t\twhile(this.l < end) this[this.l++] = 0;\n\t\t\treturn this;\n\t} else /*:: if(typeof val === 'number') */ switch(t) {\n\t\tcase  1: size = 1; this[this.l] = val&0xFF; break;\n\t\tcase  2: size = 2; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; break;\n\t\tcase  3: size = 3; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; val >>>= 8; this[this.l+2] = val&0xFF; break;\n\t\tcase  4: size = 4; __writeUInt32LE(this, val, this.l); break;\n\t\tcase  8: size = 8; if(f === 'f') { write_double_le(this, val, this.l); break; }\n\t\t/* falls through */\n\t\tcase 16: break;\n\t\tcase -4: size = 4; __writeInt32LE(this, val, this.l); break;\n\t}\n\tthis.l += size; return this;\n}\n\nfunction CheckField(hexstr/*:string*/, fld/*:string*/)/*:void*/ {\n\tvar m = __hexlify(this,this.l,hexstr.length>>1);\n\tif(m !== hexstr) throw new Error(fld + 'Expected ' + hexstr + ' saw ' + m);\n\tthis.l += hexstr.length>>1;\n}\n\nfunction prep_blob(blob, pos/*:number*/)/*:void*/ {\n\tblob.l = pos;\n\tblob.read_shift = /*::(*/ReadShift/*:: :any)*/;\n\tblob.chk = CheckField;\n\tblob.write_shift = WriteShift;\n}\n\nfunction parsenoop(blob, length/*:: :number, opts?:any */) { blob.l += length; }\n\nfunction new_buf(sz/*:number*/)/*:Block*/ {\n\tvar o = new_raw_buf(sz);\n\tprep_blob(o, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.1.4 Record */\nfunction recordhopper(data, cb/*:RecordHopperCB*/, opts/*:?any*/) {\n\tif(!data) return;\n\tvar tmpbyte, cntbyte, length;\n\tprep_blob(data, data.l || 0);\n\tvar L = data.length, RT = 0, tgt = 0;\n\twhile(data.l < L) {\n\t\tRT = data.read_shift(1);\n\t\tif(RT & 0x80) RT = (RT & 0x7F) + ((data.read_shift(1) & 0x7F)<<7);\n\t\tvar R = XLSBRecordEnum[RT] || XLSBRecordEnum[0xFFFF];\n\t\ttmpbyte = data.read_shift(1);\n\t\tlength = tmpbyte & 0x7F;\n\t\tfor(cntbyte = 1; cntbyte <4 && (tmpbyte & 0x80); ++cntbyte) length += ((tmpbyte = data.read_shift(1)) & 0x7F)<<(7*cntbyte);\n\t\ttgt = data.l + length;\n\t\tvar d = R.f && R.f(data, length, opts);\n\t\tdata.l = tgt;\n\t\tif(cb(d, R, RT)) return;\n\t}\n}\n\n/* control buffer usage for fixed-length buffers */\nfunction buf_array()/*:BufArray*/ {\n\tvar bufs/*:Array<Block>*/ = [], blksz = has_buf ? 256 : 2048;\n\tvar newblk = function ba_newblk(sz/*:number*/)/*:Block*/ {\n\t\tvar o/*:Block*/ = (new_buf(sz)/*:any*/);\n\t\tprep_blob(o, 0);\n\t\treturn o;\n\t};\n\n\tvar curbuf/*:Block*/ = newblk(blksz);\n\n\tvar endbuf = function ba_endbuf() {\n\t\tif(!curbuf) return;\n\t\tif(curbuf.length > curbuf.l) { curbuf = curbuf.slice(0, curbuf.l); curbuf.l = curbuf.length; }\n\t\tif(curbuf.length > 0) bufs.push(curbuf);\n\t\tcurbuf = null;\n\t};\n\n\tvar next = function ba_next(sz/*:number*/)/*:Block*/ {\n\t\tif(curbuf && (sz < (curbuf.length - curbuf.l))) return curbuf;\n\t\tendbuf();\n\t\treturn (curbuf = newblk(Math.max(sz+1, blksz)));\n\t};\n\n\tvar end = function ba_end() {\n\t\tendbuf();\n\t\treturn bconcat(bufs);\n\t};\n\n\tvar push = function ba_push(buf) { endbuf(); curbuf = buf; if(curbuf.l == null) curbuf.l = curbuf.length; next(blksz); };\n\n\treturn ({ next:next, push:push, end:end, _bufs:bufs }/*:any*/);\n}\n\nfunction write_record(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/) {\n\tvar t/*:number*/ = +type, l;\n\tif(isNaN(t)) return; // TODO: throw something here?\n\tif(!length) length = XLSBRecordEnum[t].p || (payload||[]).length || 0;\n\tl = 1 + (t >= 0x80 ? 1 : 0) + 1/* + length*/;\n\tif(length >= 0x80) ++l; if(length >= 0x4000) ++l; if(length >= 0x200000) ++l;\n\tvar o = ba.next(l);\n\tif(t <= 0x7F) o.write_shift(1, t);\n\telse {\n\t\to.write_shift(1, (t & 0x7F) + 0x80);\n\t\to.write_shift(1, (t >> 7));\n\t}\n\tfor(var i = 0; i != 4; ++i) {\n\t\tif(length >= 0x80) { o.write_shift(1, (length & 0x7F)+0x80); length >>= 7; }\n\t\telse { o.write_shift(1, length); break; }\n\t}\n\tif(/*:: length != null &&*/length > 0 && is_buf(payload)) ba.push(payload);\n}\n/* XLS ranges enforced */\nfunction shift_cell_xls(cell/*:CellAddress*/, tgt/*:any*/, opts/*:?any*/)/*:CellAddress*/ {\n\tvar out = dup(cell);\n\tif(tgt.s) {\n\t\tif(out.cRel) out.c += tgt.s.c;\n\t\tif(out.rRel) out.r += tgt.s.r;\n\t} else {\n\t\tif(out.cRel) out.c += tgt.c;\n\t\tif(out.rRel) out.r += tgt.r;\n\t}\n\tif(!opts || opts.biff < 12) {\n\t\twhile(out.c >= 0x100) out.c -= 0x100;\n\t\twhile(out.r >= 0x10000) out.r -= 0x10000;\n\t}\n\treturn out;\n}\n\nfunction shift_range_xls(cell, range, opts) {\n\tvar out = dup(cell);\n\tout.s = shift_cell_xls(out.s, range.s, opts);\n\tout.e = shift_cell_xls(out.e, range.s, opts);\n\treturn out;\n}\n\nfunction encode_cell_xls(c/*:CellAddress*/, biff/*:number*/)/*:string*/ {\n\tif(c.cRel && c.c < 0) { c = dup(c); while(c.c < 0) c.c += (biff > 8) ? 0x4000 : 0x100; }\n\tif(c.rRel && c.r < 0) { c = dup(c); while(c.r < 0) c.r += (biff > 8) ? 0x100000 : ((biff > 5) ? 0x10000 : 0x4000); }\n\tvar s = encode_cell(c);\n\tif(!c.cRel && c.cRel != null) s = fix_col(s);\n\tif(!c.rRel && c.rRel != null) s = fix_row(s);\n\treturn s;\n}\n\nfunction encode_range_xls(r, opts)/*:string*/ {\n\tif(r.s.r == 0 && !r.s.rRel) {\n\t\tif(r.e.r == (opts.biff >= 12 ? 0xFFFFF : (opts.biff >= 8 ? 0x10000 : 0x4000)) && !r.e.rRel) {\n\t\t\treturn (r.s.cRel ? \"\" : \"$\") + encode_col(r.s.c) + \":\" + (r.e.cRel ? \"\" : \"$\") + encode_col(r.e.c);\n\t\t}\n\t}\n\tif(r.s.c == 0 && !r.s.cRel) {\n\t\tif(r.e.c == (opts.biff >= 12 ? 0x3FFF : 0xFF) && !r.e.cRel) {\n\t\t\treturn (r.s.rRel ? \"\" : \"$\") + encode_row(r.s.r) + \":\" + (r.e.rRel ? \"\" : \"$\") + encode_row(r.e.r);\n\t\t}\n\t}\n\treturn encode_cell_xls(r.s, opts.biff) + \":\" + encode_cell_xls(r.e, opts.biff);\n}\nfunction decode_row(rowstr/*:string*/)/*:number*/ { return parseInt(unfix_row(rowstr),10) - 1; }\nfunction encode_row(row/*:number*/)/*:string*/ { return \"\" + (row + 1); }\nfunction fix_row(cstr/*:string*/)/*:string*/ { return cstr.replace(/([A-Z]|^)(\\d+)$/,\"$1$$$2\"); }\nfunction unfix_row(cstr/*:string*/)/*:string*/ { return cstr.replace(/\\$(\\d+)$/,\"$1\"); }\n\nfunction decode_col(colstr/*:string*/)/*:number*/ { var c = unfix_col(colstr), d = 0, i = 0; for(; i !== c.length; ++i) d = 26*d + c.charCodeAt(i) - 64; return d - 1; }\nfunction encode_col(col/*:number*/)/*:string*/ { if(col < 0) throw new Error(\"invalid column \" + col); var s=\"\"; for(++col; col; col=Math.floor((col-1)/26)) s = String.fromCharCode(((col-1)%26) + 65) + s; return s; }\nfunction fix_col(cstr/*:string*/)/*:string*/ { return cstr.replace(/^([A-Z])/,\"$$$1\"); }\nfunction unfix_col(cstr/*:string*/)/*:string*/ { return cstr.replace(/^\\$([A-Z])/,\"$1\"); }\n\nfunction split_cell(cstr/*:string*/)/*:Array<string>*/ { return cstr.replace(/(\\$?[A-Z]*)(\\$?\\d*)/,\"$1,$2\").split(\",\"); }\n//function decode_cell(cstr/*:string*/)/*:CellAddress*/ { var splt = split_cell(cstr); return { c:decode_col(splt[0]), r:decode_row(splt[1]) }; }\nfunction decode_cell(cstr/*:string*/)/*:CellAddress*/ {\n\tvar R = 0, C = 0;\n\tfor(var i = 0; i < cstr.length; ++i) {\n\t\tvar cc = cstr.charCodeAt(i);\n\t\tif(cc >= 48 && cc <= 57) R = 10 * R + (cc - 48);\n\t\telse if(cc >= 65 && cc <= 90) C = 26 * C + (cc - 64);\n\t}\n\treturn { c: C - 1, r:R - 1 };\n}\n//function encode_cell(cell/*:CellAddress*/)/*:string*/ { return encode_col(cell.c) + encode_row(cell.r); }\nfunction encode_cell(cell/*:CellAddress*/)/*:string*/ {\n\tvar col = cell.c + 1;\n\tvar s=\"\";\n\tfor(; col; col=((col-1)/26)|0) s = String.fromCharCode(((col-1)%26) + 65) + s;\n\treturn s + (cell.r + 1);\n}\nfunction decode_range(range/*:string*/)/*:Range*/ {\n\tvar idx = range.indexOf(\":\");\n\tif(idx == -1) return { s: decode_cell(range), e: decode_cell(range) };\n\treturn { s: decode_cell(range.slice(0, idx)), e: decode_cell(range.slice(idx + 1)) };\n}\n/*# if only one arg, it is assumed to be a Range.  If 2 args, both are cell addresses */\nfunction encode_range(cs/*:CellAddrSpec|Range*/,ce/*:?CellAddrSpec*/)/*:string*/ {\n\tif(typeof ce === 'undefined' || typeof ce === 'number') {\n/*:: if(!(cs instanceof Range)) throw \"unreachable\"; */\n\t\treturn encode_range(cs.s, cs.e);\n\t}\n/*:: if((cs instanceof Range)) throw \"unreachable\"; */\n\tif(typeof cs !== 'string') cs = encode_cell((cs/*:any*/));\n\tif(typeof ce !== 'string') ce = encode_cell((ce/*:any*/));\n/*:: if(typeof cs !== 'string') throw \"unreachable\"; */\n/*:: if(typeof ce !== 'string') throw \"unreachable\"; */\n\treturn cs == ce ? cs : cs + \":\" + ce;\n}\n\nfunction safe_decode_range(range/*:string*/)/*:Range*/ {\n\tvar o = {s:{c:0,r:0},e:{c:0,r:0}};\n\tvar idx = 0, i = 0, cc = 0;\n\tvar len = range.length;\n\tfor(idx = 0; i < len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\tidx = 26*idx + cc;\n\t}\n\to.s.c = --idx;\n\n\tfor(idx = 0; i < len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break;\n\t\tidx = 10*idx + cc;\n\t}\n\to.s.r = --idx;\n\n\tif(i === len || cc != 10) { o.e.c=o.s.c; o.e.r=o.s.r; return o; }\n\t++i;\n\n\tfor(idx = 0; i != len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\tidx = 26*idx + cc;\n\t}\n\to.e.c = --idx;\n\n\tfor(idx = 0; i != len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break;\n\t\tidx = 10*idx + cc;\n\t}\n\to.e.r = --idx;\n\treturn o;\n}\n\nfunction safe_format_cell(cell/*:Cell*/, v/*:any*/) {\n\tvar q = (cell.t == 'd' && v instanceof Date);\n\tif(cell.z != null) try { return (cell.w = SSF_format(cell.z, q ? datenum(v) : v)); } catch(e) { }\n\ttry { return (cell.w = SSF_format((cell.XF||{}).numFmtId||(q ? 14 : 0),  q ? datenum(v) : v)); } catch(e) { return ''+v; }\n}\n\nfunction format_cell(cell/*:Cell*/, v/*:any*/, o/*:any*/) {\n\tif(cell == null || cell.t == null || cell.t == 'z') return \"\";\n\tif(cell.w !== undefined) return cell.w;\n\tif(cell.t == 'd' && !cell.z && o && o.dateNF) cell.z = o.dateNF;\n\tif(cell.t == \"e\") return BErr[cell.v] || cell.v;\n\tif(v == undefined) return safe_format_cell(cell, cell.v);\n\treturn safe_format_cell(cell, v);\n}\n\nfunction sheet_to_workbook(sheet/*:Worksheet*/, opts)/*:Workbook*/ {\n\tvar n = opts && opts.sheet ? opts.sheet : \"Sheet1\";\n\tvar sheets = {}; sheets[n] = sheet;\n\treturn { SheetNames: [n], Sheets: sheets };\n}\n\nfunction sheet_add_aoa(_ws/*:?Worksheet*/, data/*:AOA*/, opts/*:?any*/)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tvar dense = _ws ? Array.isArray(_ws) : o.dense;\n\tif(DENSE != null && dense == null) dense = DENSE;\n\tvar ws/*:Worksheet*/ = _ws || (dense ? ([]/*:any*/) : ({}/*:any*/));\n\tvar _R = 0, _C = 0;\n\tif(ws && o.origin != null) {\n\t\tif(typeof o.origin == 'number') _R = o.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof o.origin == \"string\" ? decode_cell(o.origin) : o.origin;\n\t\t\t_R = _origin.r; _C = _origin.c;\n\t\t}\n\t\tif(!ws[\"!ref\"]) ws[\"!ref\"] = \"A1:A1\";\n\t}\n\tvar range/*:Range*/ = ({s: {c:10000000, r:10000000}, e: {c:0, r:0}}/*:any*/);\n\tif(ws['!ref']) {\n\t\tvar _range = safe_decode_range(ws['!ref']);\n\t\trange.s.c = _range.s.c;\n\t\trange.s.r = _range.s.r;\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\tif(_R == -1) range.e.r = _R = _range.e.r + 1;\n\t}\n\tfor(var R = 0; R != data.length; ++R) {\n\t\tif(!data[R]) continue;\n\t\tif(!Array.isArray(data[R])) throw new Error(\"aoa_to_sheet expects an array of arrays\");\n\t\tfor(var C = 0; C != data[R].length; ++C) {\n\t\t\tif(typeof data[R][C] === 'undefined') continue;\n\t\t\tvar cell/*:Cell*/ = ({v: data[R][C] }/*:any*/);\n\t\t\tvar __R = _R + R, __C = _C + C;\n\t\t\tif(range.s.r > __R) range.s.r = __R;\n\t\t\tif(range.s.c > __C) range.s.c = __C;\n\t\t\tif(range.e.r < __R) range.e.r = __R;\n\t\t\tif(range.e.c < __C) range.e.c = __C;\n\t\t\tif(data[R][C] && typeof data[R][C] === 'object' && !Array.isArray(data[R][C]) && !(data[R][C] instanceof Date)) cell = data[R][C];\n\t\t\telse {\n\t\t\t\tif(Array.isArray(cell.v)) { cell.f = data[R][C][1]; cell.v = cell.v[0]; }\n\t\t\t\tif(cell.v === null) {\n\t\t\t\t\tif(cell.f) cell.t = 'n';\n\t\t\t\t\telse if(o.nullError) { cell.t = 'e'; cell.v = 0; }\n\t\t\t\t\telse if(!o.sheetStubs) continue;\n\t\t\t\t\telse cell.t = 'z';\n\t\t\t\t}\n\t\t\t\telse if(typeof cell.v === 'number') cell.t = 'n';\n\t\t\t\telse if(typeof cell.v === 'boolean') cell.t = 'b';\n\t\t\t\telse if(cell.v instanceof Date) {\n\t\t\t\t\tcell.z = o.dateNF || table_fmt[14];\n\t\t\t\t\tif(o.cellDates) { cell.t = 'd'; cell.w = SSF_format(cell.z, datenum(cell.v)); }\n\t\t\t\t\telse { cell.t = 'n'; cell.v = datenum(cell.v); cell.w = SSF_format(cell.z, cell.v); }\n\t\t\t\t}\n\t\t\t\telse cell.t = 's';\n\t\t\t}\n\t\t\tif(dense) {\n\t\t\t\tif(!ws[__R]) ws[__R] = [];\n\t\t\t\tif(ws[__R][__C] && ws[__R][__C].z) cell.z = ws[__R][__C].z;\n\t\t\t\tws[__R][__C] = cell;\n\t\t\t} else {\n\t\t\t\tvar cell_ref = encode_cell(({c:__C,r:__R}/*:any*/));\n\t\t\t\tif(ws[cell_ref] && ws[cell_ref].z) cell.z = ws[cell_ref].z;\n\t\t\t\tws[cell_ref] = cell;\n\t\t\t}\n\t\t}\n\t}\n\tif(range.s.c < 10000000) ws['!ref'] = encode_range(range);\n\treturn ws;\n}\nfunction aoa_to_sheet(data/*:AOA*/, opts/*:?any*/)/*:Worksheet*/ { return sheet_add_aoa(null, data, opts); }\n\nfunction parse_Int32LE(data) {\n\treturn data.read_shift(4, 'i');\n}\nfunction write_UInt32LE(x/*:number*/, o) {\n\tif (!o) o = new_buf(4);\n\to.write_shift(4, x);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.168 */\nfunction parse_XLWideString(data/*::, length*/)/*:string*/ {\n\tvar cchCharacters = data.read_shift(4);\n\treturn cchCharacters === 0 ? \"\" : data.read_shift(cchCharacters, 'dbcs');\n}\nfunction write_XLWideString(data/*:string*/, o) {\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(4 + 2 * data.length); }\n\to.write_shift(4, data.length);\n\tif (data.length > 0) o.write_shift(0, data, 'dbcs');\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.91 */\n//function parse_LPWideString(data/*::, length*/)/*:string*/ {\n//\tvar cchCharacters = data.read_shift(2);\n//\treturn cchCharacters === 0 ? \"\" : data.read_shift(cchCharacters, \"utf16le\");\n//}\n\n/* [MS-XLSB] 2.5.143 */\nfunction parse_StrRun(data) {\n\treturn { ich: data.read_shift(2), ifnt: data.read_shift(2) };\n}\nfunction write_StrRun(run, o) {\n\tif (!o) o = new_buf(4);\n\to.write_shift(2, run.ich || 0);\n\to.write_shift(2, run.ifnt || 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.121 */\nfunction parse_RichStr(data, length/*:number*/)/*:XLString*/ {\n\tvar start = data.l;\n\tvar flags = data.read_shift(1);\n\tvar str = parse_XLWideString(data);\n\tvar rgsStrRun = [];\n\tvar z = ({ t: str, h: str }/*:any*/);\n\tif ((flags & 1) !== 0) { /* fRichStr */\n\t\t/* TODO: formatted string */\n\t\tvar dwSizeStrRun = data.read_shift(4);\n\t\tfor (var i = 0; i != dwSizeStrRun; ++i) rgsStrRun.push(parse_StrRun(data));\n\t\tz.r = rgsStrRun;\n\t}\n\telse z.r = [{ ich: 0, ifnt: 0 }];\n\t//if((flags & 2) !== 0) { /* fExtStr */\n\t//\t/* TODO: phonetic string */\n\t//}\n\tdata.l = start + length;\n\treturn z;\n}\nfunction write_RichStr(str/*:XLString*/, o/*:?Block*/)/*:Block*/ {\n\t/* TODO: formatted string */\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(15 + 4 * str.t.length); }\n\to.write_shift(1, 0);\n\twrite_XLWideString(str.t, o);\n\treturn _null ? o.slice(0, o.l) : o;\n}\n/* [MS-XLSB] 2.4.328 BrtCommentText (RichStr w/1 run) */\nvar parse_BrtCommentText = parse_RichStr;\nfunction write_BrtCommentText(str/*:XLString*/, o/*:?Block*/)/*:Block*/ {\n\t/* TODO: formatted string */\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(23 + 4 * str.t.length); }\n\to.write_shift(1, 1);\n\twrite_XLWideString(str.t, o);\n\to.write_shift(4, 1);\n\twrite_StrRun({ ich: 0, ifnt: 0 }, o);\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.9 */\nfunction parse_XLSBCell(data)/*:any*/ {\n\tvar col = data.read_shift(4);\n\tvar iStyleRef = data.read_shift(2);\n\tiStyleRef += data.read_shift(1) << 16;\n\tdata.l++; //var fPhShow = data.read_shift(1);\n\treturn { c: col, iStyleRef: iStyleRef };\n}\nfunction write_XLSBCell(cell/*:any*/, o/*:?Block*/) {\n\tif (o == null) o = new_buf(8);\n\to.write_shift(-4, cell.c);\n\to.write_shift(3, cell.iStyleRef || cell.s);\n\to.write_shift(1, 0); /* fPhShow */\n\treturn o;\n}\n\n/* Short XLSB Cell does not include column */\nfunction parse_XLSBShortCell(data)/*:any*/ {\n\tvar iStyleRef = data.read_shift(2);\n\tiStyleRef += data.read_shift(1) <<16;\n\tdata.l++; //var fPhShow = data.read_shift(1);\n\treturn { c:-1, iStyleRef: iStyleRef };\n}\nfunction write_XLSBShortCell(cell/*:any*/, o/*:?Block*/) {\n\tif(o == null) o = new_buf(4);\n\to.write_shift(3, cell.iStyleRef || cell.s);\n\to.write_shift(1, 0); /* fPhShow */\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.21 */\nvar parse_XLSBCodeName = parse_XLWideString;\nvar write_XLSBCodeName = write_XLWideString;\n\n/* [MS-XLSB] 2.5.166 */\nfunction parse_XLNullableWideString(data/*::, length*/)/*:string*/ {\n\tvar cchCharacters = data.read_shift(4);\n\treturn cchCharacters === 0 || cchCharacters === 0xFFFFFFFF ? \"\" : data.read_shift(cchCharacters, 'dbcs');\n}\nfunction write_XLNullableWideString(data/*:string*/, o) {\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(127); }\n\to.write_shift(4, data.length > 0 ? data.length : 0xFFFFFFFF);\n\tif (data.length > 0) o.write_shift(0, data, 'dbcs');\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.165 */\nvar parse_XLNameWideString = parse_XLWideString;\n//var write_XLNameWideString = write_XLWideString;\n\n/* [MS-XLSB] 2.5.114 */\nvar parse_RelID = parse_XLNullableWideString;\nvar write_RelID = write_XLNullableWideString;\n\n\n/* [MS-XLS] 2.5.217 ; [MS-XLSB] 2.5.122 */\nfunction parse_RkNumber(data)/*:number*/ {\n\tvar b = data.slice(data.l, data.l + 4);\n\tvar fX100 = (b[0] & 1), fInt = (b[0] & 2);\n\tdata.l += 4;\n\tvar RK = fInt === 0 ? __double([0, 0, 0, 0, (b[0] & 0xFC), b[1], b[2], b[3]], 0) : __readInt32LE(b, 0) >> 2;\n\treturn fX100 ? (RK / 100) : RK;\n}\nfunction write_RkNumber(data/*:number*/, o) {\n\tif (o == null) o = new_buf(4);\n\tvar fX100 = 0, fInt = 0, d100 = data * 100;\n\tif ((data == (data | 0)) && (data >= -(1 << 29)) && (data < (1 << 29))) { fInt = 1; }\n\telse if ((d100 == (d100 | 0)) && (d100 >= -(1 << 29)) && (d100 < (1 << 29))) { fInt = 1; fX100 = 1; }\n\tif (fInt) o.write_shift(-4, ((fX100 ? d100 : data) << 2) + (fX100 + 2));\n\telse throw new Error(\"unsupported RkNumber \" + data); // TODO\n}\n\n\n/* [MS-XLSB] 2.5.117 RfX */\nfunction parse_RfX(data /*::, length*/)/*:Range*/ {\n\tvar cell/*:Range*/ = ({ s: {}, e: {} }/*:any*/);\n\tcell.s.r = data.read_shift(4);\n\tcell.e.r = data.read_shift(4);\n\tcell.s.c = data.read_shift(4);\n\tcell.e.c = data.read_shift(4);\n\treturn cell;\n}\nfunction write_RfX(r/*:Range*/, o) {\n\tif (!o) o = new_buf(16);\n\to.write_shift(4, r.s.r);\n\to.write_shift(4, r.e.r);\n\to.write_shift(4, r.s.c);\n\to.write_shift(4, r.e.c);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.153 UncheckedRfX */\nvar parse_UncheckedRfX = parse_RfX;\nvar write_UncheckedRfX = write_RfX;\n\n/* [MS-XLSB] 2.5.155 UncheckedSqRfX */\n//function parse_UncheckedSqRfX(data) {\n//\tvar cnt = data.read_shift(4);\n//\tvar out = [];\n//\tfor(var i = 0; i < cnt; ++i) {\n//\t\tvar rng = parse_UncheckedRfX(data);\n//\t\tout.push(encode_range(rng));\n//\t}\n//\treturn out.join(\",\");\n//}\n//function write_UncheckedSqRfX(sqrfx/*:string*/) {\n//\tvar parts = sqrfx.split(/\\s*,\\s*/);\n//\tvar o = new_buf(4); o.write_shift(4, parts.length);\n//\tvar out = [o];\n//\tparts.forEach(function(rng) {\n//\t\tout.push(write_UncheckedRfX(safe_decode_range(rng)));\n//\t});\n//\treturn bconcat(out);\n//}\n\n/* [MS-XLS] 2.5.342 ; [MS-XLSB] 2.5.171 */\n/* TODO: error checking, NaN and Infinity values are not valid Xnum */\nfunction parse_Xnum(data/*::, length*/) {\n\tif(data.length - data.l < 8) throw \"XLS Xnum Buffer underflow\";\n\treturn data.read_shift(8, 'f');\n}\nfunction write_Xnum(data, o) { return (o || new_buf(8)).write_shift(8, data, 'f'); }\n\n/* [MS-XLSB] 2.4.324 BrtColor */\nfunction parse_BrtColor(data/*::, length*/) {\n\tvar out = {};\n\tvar d = data.read_shift(1);\n\n\t//var fValidRGB = d & 1;\n\tvar xColorType = d >>> 1;\n\n\tvar index = data.read_shift(1);\n\tvar nTS = data.read_shift(2, 'i');\n\tvar bR = data.read_shift(1);\n\tvar bG = data.read_shift(1);\n\tvar bB = data.read_shift(1);\n\tdata.l++; //var bAlpha = data.read_shift(1);\n\n\tswitch (xColorType) {\n\t\tcase 0: out.auto = 1; break;\n\t\tcase 1:\n\t\t\tout.index = index;\n\t\t\tvar icv = XLSIcv[index];\n\t\t\t/* automatic pseudo index 81 */\n\t\t\tif (icv) out.rgb = rgb2Hex(icv);\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\t/* if(!fValidRGB) throw new Error(\"invalid\"); */\n\t\t\tout.rgb = rgb2Hex([bR, bG, bB]);\n\t\t\tbreak;\n\t\tcase 3: out.theme = index; break;\n\t}\n\tif (nTS != 0) out.tint = nTS > 0 ? nTS / 32767 : nTS / 32768;\n\n\treturn out;\n}\nfunction write_BrtColor(color, o) {\n\tif (!o) o = new_buf(8);\n\tif (!color || color.auto) { o.write_shift(4, 0); o.write_shift(4, 0); return o; }\n\tif (color.index != null) {\n\t\to.write_shift(1, 0x02);\n\t\to.write_shift(1, color.index);\n\t} else if (color.theme != null) {\n\t\to.write_shift(1, 0x06);\n\t\to.write_shift(1, color.theme);\n\t} else {\n\t\to.write_shift(1, 0x05);\n\t\to.write_shift(1, 0);\n\t}\n\tvar nTS = color.tint || 0;\n\tif (nTS > 0) nTS *= 32767;\n\telse if (nTS < 0) nTS *= 32768;\n\to.write_shift(2, nTS);\n\tif (!color.rgb || color.theme != null) {\n\t\to.write_shift(2, 0);\n\t\to.write_shift(1, 0);\n\t\to.write_shift(1, 0);\n\t} else {\n\t\tvar rgb = (color.rgb || 'FFFFFF');\n\t\tif (typeof rgb == 'number') rgb = (\"000000\" + rgb.toString(16)).slice(-6);\n\t\to.write_shift(1, parseInt(rgb.slice(0, 2), 16));\n\t\to.write_shift(1, parseInt(rgb.slice(2, 4), 16));\n\t\to.write_shift(1, parseInt(rgb.slice(4, 6), 16));\n\t\to.write_shift(1, 0xFF);\n\t}\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.52 */\nfunction parse_FontFlags(data/*::, length, opts*/) {\n\tvar d = data.read_shift(1);\n\tdata.l++;\n\tvar out = {\n\t\tfBold: d & 0x01,\n\t\tfItalic: d & 0x02,\n\t\tfUnderline: d & 0x04,\n\t\tfStrikeout: d & 0x08,\n\t\tfOutline: d & 0x10,\n\t\tfShadow: d & 0x20,\n\t\tfCondense: d & 0x40,\n\t\tfExtend: d & 0x80\n\t};\n\treturn out;\n}\nfunction write_FontFlags(font, o) {\n\tif (!o) o = new_buf(2);\n\tvar grbit =\n\t\t(font.italic ? 0x02 : 0) |\n\t\t(font.strike ? 0x08 : 0) |\n\t\t(font.outline ? 0x10 : 0) |\n\t\t(font.shadow ? 0x20 : 0) |\n\t\t(font.condense ? 0x40 : 0) |\n\t\t(font.extend ? 0x80 : 0);\n\to.write_shift(1, grbit);\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n/* [MS-OLEDS] 2.3.1 and 2.3.2 */\nfunction parse_ClipboardFormatOrString(o, w/*:number*/)/*:string*/ {\n\t// $FlowIgnore\n\tvar ClipFmt = { 2: \"BITMAP\", 3: \"METAFILEPICT\", 8: \"DIB\", 14: \"ENHMETAFILE\" };\n\tvar m/*:number*/ = o.read_shift(4);\n\tswitch (m) {\n\t\tcase 0x00000000: return \"\";\n\t\tcase 0xffffffff: case 0xfffffffe: return ClipFmt[o.read_shift(4)] || \"\";\n\t}\n\tif (m > 0x190) throw new Error(\"Unsupported Clipboard: \" + m.toString(16));\n\to.l -= 4;\n\treturn o.read_shift(0, w == 1 ? \"lpstr\" : \"lpwstr\");\n}\nfunction parse_ClipboardFormatOrAnsiString(o) { return parse_ClipboardFormatOrString(o, 1); }\nfunction parse_ClipboardFormatOrUnicodeString(o) { return parse_ClipboardFormatOrString(o, 2); }\n\n/* [MS-OLEPS] 2.2 PropertyType */\n// Note: some tree shakers cannot handle VT_VECTOR | $CONST, hence extra vars\n//var VT_EMPTY    = 0x0000;\n//var VT_NULL     = 0x0001;\nvar VT_I2       = 0x0002;\nvar VT_I4       = 0x0003;\n//var VT_R4       = 0x0004;\n//var VT_R8       = 0x0005;\n//var VT_CY       = 0x0006;\n//var VT_DATE     = 0x0007;\n//var VT_BSTR     = 0x0008;\n//var VT_ERROR    = 0x000A;\nvar VT_BOOL     = 0x000B;\nvar VT_VARIANT  = 0x000C;\n//var VT_DECIMAL  = 0x000E;\n//var VT_I1       = 0x0010;\n//var VT_UI1      = 0x0011;\n//var VT_UI2      = 0x0012;\nvar VT_UI4      = 0x0013;\n//var VT_I8       = 0x0014;\n//var VT_UI8      = 0x0015;\n//var VT_INT      = 0x0016;\n//var VT_UINT     = 0x0017;\nvar VT_LPSTR    = 0x001E;\n//var VT_LPWSTR   = 0x001F;\nvar VT_FILETIME = 0x0040;\nvar VT_BLOB     = 0x0041;\n//var VT_STREAM   = 0x0042;\n//var VT_STORAGE  = 0x0043;\n//var VT_STREAMED_Object  = 0x0044;\n//var VT_STORED_Object    = 0x0045;\n//var VT_BLOB_Object      = 0x0046;\nvar VT_CF       = 0x0047;\n//var VT_CLSID    = 0x0048;\n//var VT_VERSIONED_STREAM = 0x0049;\nvar VT_VECTOR   = 0x1000;\nvar VT_VECTOR_VARIANT = 0x100C;\nvar VT_VECTOR_LPSTR   = 0x101E;\n//var VT_ARRAY    = 0x2000;\n\nvar VT_STRING   = 0x0050; // 2.3.3.1.11 VtString\nvar VT_USTR     = 0x0051; // 2.3.3.1.12 VtUnalignedString\nvar VT_CUSTOM   = [VT_STRING, VT_USTR];\n\n/* [MS-OSHARED] 2.3.3.2.2.1 Document Summary Information PIDDSI */\nvar DocSummaryPIDDSI = {\n\t/*::[*/0x01/*::]*/: { n: 'CodePage', t: VT_I2 },\n\t/*::[*/0x02/*::]*/: { n: 'Category', t: VT_STRING },\n\t/*::[*/0x03/*::]*/: { n: 'PresentationFormat', t: VT_STRING },\n\t/*::[*/0x04/*::]*/: { n: 'ByteCount', t: VT_I4 },\n\t/*::[*/0x05/*::]*/: { n: 'LineCount', t: VT_I4 },\n\t/*::[*/0x06/*::]*/: { n: 'ParagraphCount', t: VT_I4 },\n\t/*::[*/0x07/*::]*/: { n: 'SlideCount', t: VT_I4 },\n\t/*::[*/0x08/*::]*/: { n: 'NoteCount', t: VT_I4 },\n\t/*::[*/0x09/*::]*/: { n: 'HiddenCount', t: VT_I4 },\n\t/*::[*/0x0a/*::]*/: { n: 'MultimediaClipCount', t: VT_I4 },\n\t/*::[*/0x0b/*::]*/: { n: 'ScaleCrop', t: VT_BOOL },\n\t/*::[*/0x0c/*::]*/: { n: 'HeadingPairs', t: VT_VECTOR_VARIANT /* VT_VECTOR | VT_VARIANT */ },\n\t/*::[*/0x0d/*::]*/: { n: 'TitlesOfParts', t: VT_VECTOR_LPSTR /* VT_VECTOR | VT_LPSTR */ },\n\t/*::[*/0x0e/*::]*/: { n: 'Manager', t: VT_STRING },\n\t/*::[*/0x0f/*::]*/: { n: 'Company', t: VT_STRING },\n\t/*::[*/0x10/*::]*/: { n: 'LinksUpToDate', t: VT_BOOL },\n\t/*::[*/0x11/*::]*/: { n: 'CharacterCount', t: VT_I4 },\n\t/*::[*/0x13/*::]*/: { n: 'SharedDoc', t: VT_BOOL },\n\t/*::[*/0x16/*::]*/: { n: 'HyperlinksChanged', t: VT_BOOL },\n\t/*::[*/0x17/*::]*/: { n: 'AppVersion', t: VT_I4, p: 'version' },\n\t/*::[*/0x18/*::]*/: { n: 'DigSig', t: VT_BLOB },\n\t/*::[*/0x1A/*::]*/: { n: 'ContentType', t: VT_STRING },\n\t/*::[*/0x1B/*::]*/: { n: 'ContentStatus', t: VT_STRING },\n\t/*::[*/0x1C/*::]*/: { n: 'Language', t: VT_STRING },\n\t/*::[*/0x1D/*::]*/: { n: 'Version', t: VT_STRING },\n\t/*::[*/0xFF/*::]*/: {},\n\t/* [MS-OLEPS] 2.18 */\n\t/*::[*/0x80000000/*::]*/: { n: 'Locale', t: VT_UI4 },\n\t/*::[*/0x80000003/*::]*/: { n: 'Behavior', t: VT_UI4 },\n\t/*::[*/0x72627262/*::]*/: {}\n};\n\n/* [MS-OSHARED] 2.3.3.2.1.1 Summary Information Property Set PIDSI */\nvar SummaryPIDSI = {\n\t/*::[*/0x01/*::]*/: { n: 'CodePage', t: VT_I2 },\n\t/*::[*/0x02/*::]*/: { n: 'Title', t: VT_STRING },\n\t/*::[*/0x03/*::]*/: { n: 'Subject', t: VT_STRING },\n\t/*::[*/0x04/*::]*/: { n: 'Author', t: VT_STRING },\n\t/*::[*/0x05/*::]*/: { n: 'Keywords', t: VT_STRING },\n\t/*::[*/0x06/*::]*/: { n: 'Comments', t: VT_STRING },\n\t/*::[*/0x07/*::]*/: { n: 'Template', t: VT_STRING },\n\t/*::[*/0x08/*::]*/: { n: 'LastAuthor', t: VT_STRING },\n\t/*::[*/0x09/*::]*/: { n: 'RevNumber', t: VT_STRING },\n\t/*::[*/0x0A/*::]*/: { n: 'EditTime', t: VT_FILETIME },\n\t/*::[*/0x0B/*::]*/: { n: 'LastPrinted', t: VT_FILETIME },\n\t/*::[*/0x0C/*::]*/: { n: 'CreatedDate', t: VT_FILETIME },\n\t/*::[*/0x0D/*::]*/: { n: 'ModifiedDate', t: VT_FILETIME },\n\t/*::[*/0x0E/*::]*/: { n: 'PageCount', t: VT_I4 },\n\t/*::[*/0x0F/*::]*/: { n: 'WordCount', t: VT_I4 },\n\t/*::[*/0x10/*::]*/: { n: 'CharCount', t: VT_I4 },\n\t/*::[*/0x11/*::]*/: { n: 'Thumbnail', t: VT_CF },\n\t/*::[*/0x12/*::]*/: { n: 'Application', t: VT_STRING },\n\t/*::[*/0x13/*::]*/: { n: 'DocSecurity', t: VT_I4 },\n\t/*::[*/0xFF/*::]*/: {},\n\t/* [MS-OLEPS] 2.18 */\n\t/*::[*/0x80000000/*::]*/: { n: 'Locale', t: VT_UI4 },\n\t/*::[*/0x80000003/*::]*/: { n: 'Behavior', t: VT_UI4 },\n\t/*::[*/0x72627262/*::]*/: {}\n};\n\n/* [MS-XLS] 2.4.63 Country/Region codes */\nvar CountryEnum = {\n\t/*::[*/0x0001/*::]*/: \"US\", // United States\n\t/*::[*/0x0002/*::]*/: \"CA\", // Canada\n\t/*::[*/0x0003/*::]*/: \"\", // Latin America (except Brazil)\n\t/*::[*/0x0007/*::]*/: \"RU\", // Russia\n\t/*::[*/0x0014/*::]*/: \"EG\", // Egypt\n\t/*::[*/0x001E/*::]*/: \"GR\", // Greece\n\t/*::[*/0x001F/*::]*/: \"NL\", // Netherlands\n\t/*::[*/0x0020/*::]*/: \"BE\", // Belgium\n\t/*::[*/0x0021/*::]*/: \"FR\", // France\n\t/*::[*/0x0022/*::]*/: \"ES\", // Spain\n\t/*::[*/0x0024/*::]*/: \"HU\", // Hungary\n\t/*::[*/0x0027/*::]*/: \"IT\", // Italy\n\t/*::[*/0x0029/*::]*/: \"CH\", // Switzerland\n\t/*::[*/0x002B/*::]*/: \"AT\", // Austria\n\t/*::[*/0x002C/*::]*/: \"GB\", // United Kingdom\n\t/*::[*/0x002D/*::]*/: \"DK\", // Denmark\n\t/*::[*/0x002E/*::]*/: \"SE\", // Sweden\n\t/*::[*/0x002F/*::]*/: \"NO\", // Norway\n\t/*::[*/0x0030/*::]*/: \"PL\", // Poland\n\t/*::[*/0x0031/*::]*/: \"DE\", // Germany\n\t/*::[*/0x0034/*::]*/: \"MX\", // Mexico\n\t/*::[*/0x0037/*::]*/: \"BR\", // Brazil\n\t/*::[*/0x003d/*::]*/: \"AU\", // Australia\n\t/*::[*/0x0040/*::]*/: \"NZ\", // New Zealand\n\t/*::[*/0x0042/*::]*/: \"TH\", // Thailand\n\t/*::[*/0x0051/*::]*/: \"JP\", // Japan\n\t/*::[*/0x0052/*::]*/: \"KR\", // Korea\n\t/*::[*/0x0054/*::]*/: \"VN\", // Viet Nam\n\t/*::[*/0x0056/*::]*/: \"CN\", // China\n\t/*::[*/0x005A/*::]*/: \"TR\", // Turkey\n\t/*::[*/0x0069/*::]*/: \"JS\", // Ramastan\n\t/*::[*/0x00D5/*::]*/: \"DZ\", // Algeria\n\t/*::[*/0x00D8/*::]*/: \"MA\", // Morocco\n\t/*::[*/0x00DA/*::]*/: \"LY\", // Libya\n\t/*::[*/0x015F/*::]*/: \"PT\", // Portugal\n\t/*::[*/0x0162/*::]*/: \"IS\", // Iceland\n\t/*::[*/0x0166/*::]*/: \"FI\", // Finland\n\t/*::[*/0x01A4/*::]*/: \"CZ\", // Czech Republic\n\t/*::[*/0x0376/*::]*/: \"TW\", // Taiwan\n\t/*::[*/0x03C1/*::]*/: \"LB\", // Lebanon\n\t/*::[*/0x03C2/*::]*/: \"JO\", // Jordan\n\t/*::[*/0x03C3/*::]*/: \"SY\", // Syria\n\t/*::[*/0x03C4/*::]*/: \"IQ\", // Iraq\n\t/*::[*/0x03C5/*::]*/: \"KW\", // Kuwait\n\t/*::[*/0x03C6/*::]*/: \"SA\", // Saudi Arabia\n\t/*::[*/0x03CB/*::]*/: \"AE\", // United Arab Emirates\n\t/*::[*/0x03CC/*::]*/: \"IL\", // Israel\n\t/*::[*/0x03CE/*::]*/: \"QA\", // Qatar\n\t/*::[*/0x03D5/*::]*/: \"IR\", // Iran\n\t/*::[*/0xFFFF/*::]*/: \"US\"  // United States\n};\n\n/* [MS-XLS] 2.5.127 */\nvar XLSFillPattern = [\n\tnull,\n\t'solid',\n\t'mediumGray',\n\t'darkGray',\n\t'lightGray',\n\t'darkHorizontal',\n\t'darkVertical',\n\t'darkDown',\n\t'darkUp',\n\t'darkGrid',\n\t'darkTrellis',\n\t'lightHorizontal',\n\t'lightVertical',\n\t'lightDown',\n\t'lightUp',\n\t'lightGrid',\n\t'lightTrellis',\n\t'gray125',\n\t'gray0625'\n];\n\nfunction rgbify(arr/*:Array<number>*/)/*:Array<[number, number, number]>*/ { return arr.map(function(x) { return [(x>>16)&255,(x>>8)&255,x&255]; }); }\n\n/* [MS-XLS] 2.5.161 */\n/* [MS-XLSB] 2.5.75 Icv */\nvar _XLSIcv = /*#__PURE__*/ rgbify([\n\t/* Color Constants */\n\t0x000000,\n\t0xFFFFFF,\n\t0xFF0000,\n\t0x00FF00,\n\t0x0000FF,\n\t0xFFFF00,\n\t0xFF00FF,\n\t0x00FFFF,\n\n\t/* Overridable Defaults */\n\t0x000000,\n\t0xFFFFFF,\n\t0xFF0000,\n\t0x00FF00,\n\t0x0000FF,\n\t0xFFFF00,\n\t0xFF00FF,\n\t0x00FFFF,\n\n\t0x800000,\n\t0x008000,\n\t0x000080,\n\t0x808000,\n\t0x800080,\n\t0x008080,\n\t0xC0C0C0,\n\t0x808080,\n\t0x9999FF,\n\t0x993366,\n\t0xFFFFCC,\n\t0xCCFFFF,\n\t0x660066,\n\t0xFF8080,\n\t0x0066CC,\n\t0xCCCCFF,\n\n\t0x000080,\n\t0xFF00FF,\n\t0xFFFF00,\n\t0x00FFFF,\n\t0x800080,\n\t0x800000,\n\t0x008080,\n\t0x0000FF,\n\t0x00CCFF,\n\t0xCCFFFF,\n\t0xCCFFCC,\n\t0xFFFF99,\n\t0x99CCFF,\n\t0xFF99CC,\n\t0xCC99FF,\n\t0xFFCC99,\n\n\t0x3366FF,\n\t0x33CCCC,\n\t0x99CC00,\n\t0xFFCC00,\n\t0xFF9900,\n\t0xFF6600,\n\t0x666699,\n\t0x969696,\n\t0x003366,\n\t0x339966,\n\t0x003300,\n\t0x333300,\n\t0x993300,\n\t0x993366,\n\t0x333399,\n\t0x333333,\n\n\t/* Other entries to appease BIFF8/12 */\n\t0xFFFFFF, /* 0x40 icvForeground ?? */\n\t0x000000, /* 0x41 icvBackground ?? */\n\t0x000000, /* 0x42 icvFrame ?? */\n\t0x000000, /* 0x43 icv3D ?? */\n\t0x000000, /* 0x44 icv3DText ?? */\n\t0x000000, /* 0x45 icv3DHilite ?? */\n\t0x000000, /* 0x46 icv3DShadow ?? */\n\t0x000000, /* 0x47 icvHilite ?? */\n\t0x000000, /* 0x48 icvCtlText ?? */\n\t0x000000, /* 0x49 icvCtlScrl ?? */\n\t0x000000, /* 0x4A icvCtlInv ?? */\n\t0x000000, /* 0x4B icvCtlBody ?? */\n\t0x000000, /* 0x4C icvCtlFrame ?? */\n\t0x000000, /* 0x4D icvCtlFore ?? */\n\t0x000000, /* 0x4E icvCtlBack ?? */\n\t0x000000, /* 0x4F icvCtlNeutral */\n\t0x000000, /* 0x50 icvInfoBk ?? */\n\t0x000000 /* 0x51 icvInfoText ?? */\n]);\nvar XLSIcv = /*#__PURE__*/dup(_XLSIcv);\n\n/* [MS-XLSB] 2.5.97.2 */\nvar BErr = {\n\t/*::[*/0x00/*::]*/: \"#NULL!\",\n\t/*::[*/0x07/*::]*/: \"#DIV/0!\",\n\t/*::[*/0x0F/*::]*/: \"#VALUE!\",\n\t/*::[*/0x17/*::]*/: \"#REF!\",\n\t/*::[*/0x1D/*::]*/: \"#NAME?\",\n\t/*::[*/0x24/*::]*/: \"#NUM!\",\n\t/*::[*/0x2A/*::]*/: \"#N/A\",\n\t/*::[*/0x2B/*::]*/: \"#GETTING_DATA\",\n\t/*::[*/0xFF/*::]*/: \"#WTF?\"\n};\n//var RBErr = evert_num(BErr);\nvar RBErr = {\n\t\"#NULL!\":        0x00,\n\t\"#DIV/0!\":       0x07,\n\t\"#VALUE!\":       0x0F,\n\t\"#REF!\":         0x17,\n\t\"#NAME?\":        0x1D,\n\t\"#NUM!\":         0x24,\n\t\"#N/A\":          0x2A,\n\t\"#GETTING_DATA\": 0x2B,\n\t\"#WTF?\":         0xFF\n};\n\n/* Parts enumerated in OPC spec, MS-XLSB and MS-XLSX */\n/* 12.3 Part Summary <SpreadsheetML> */\n/* 14.2 Part Summary <DrawingML> */\n/* [MS-XLSX] 2.1 Part Enumerations ; [MS-XLSB] 2.1.7 Part Enumeration */\nvar ct2type/*{[string]:string}*/ = ({\n\t/* Workbook */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\": \"workbooks\",\n\t\"application/vnd.ms-excel.sheet.macroEnabled.main+xml\": \"workbooks\",\n\t\"application/vnd.ms-excel.sheet.binary.macroEnabled.main\": \"workbooks\",\n\t\"application/vnd.ms-excel.addin.macroEnabled.main+xml\": \"workbooks\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\": \"workbooks\",\n\n\t/* Worksheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\": \"sheets\",\n\t\"application/vnd.ms-excel.worksheet\": \"sheets\",\n\t\"application/vnd.ms-excel.binIndexWs\": \"TODO\", /* Binary Index */\n\n\t/* Chartsheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\": \"charts\",\n\t\"application/vnd.ms-excel.chartsheet\": \"charts\",\n\n\t/* Macrosheet */\n\t\"application/vnd.ms-excel.macrosheet+xml\": \"macros\",\n\t\"application/vnd.ms-excel.macrosheet\": \"macros\",\n\t\"application/vnd.ms-excel.intlmacrosheet\": \"TODO\",\n\t\"application/vnd.ms-excel.binIndexMs\": \"TODO\", /* Binary Index */\n\n\t/* Dialogsheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\": \"dialogs\",\n\t\"application/vnd.ms-excel.dialogsheet\": \"dialogs\",\n\n\t/* Shared Strings */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\": \"strs\",\n\t\"application/vnd.ms-excel.sharedStrings\": \"strs\",\n\n\t/* Styles */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\": \"styles\",\n\t\"application/vnd.ms-excel.styles\": \"styles\",\n\n\t/* File Properties */\n\t\"application/vnd.openxmlformats-package.core-properties+xml\": \"coreprops\",\n\t\"application/vnd.openxmlformats-officedocument.custom-properties+xml\": \"custprops\",\n\t\"application/vnd.openxmlformats-officedocument.extended-properties+xml\": \"extprops\",\n\n\t/* Custom Data Properties */\n\t\"application/vnd.openxmlformats-officedocument.customXmlProperties+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty\": \"TODO\",\n\n\t/* Comments */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\": \"comments\",\n\t\"application/vnd.ms-excel.comments\": \"comments\",\n\t\"application/vnd.ms-excel.threadedcomments+xml\": \"threadedcomments\",\n\t\"application/vnd.ms-excel.person+xml\": \"people\",\n\n\t/* Metadata (Stock/Geography and Dynamic Array) */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml\": \"metadata\",\n\t\"application/vnd.ms-excel.sheetMetadata\": \"metadata\",\n\n\t/* PivotTable */\n\t\"application/vnd.ms-excel.pivotTable\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml\": \"TODO\",\n\n\t/* Chart Objects */\n\t\"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\": \"TODO\",\n\n\t/* Chart Colors */\n\t\"application/vnd.ms-office.chartcolorstyle+xml\": \"TODO\",\n\n\t/* Chart Style */\n\t\"application/vnd.ms-office.chartstyle+xml\": \"TODO\",\n\n\t/* Chart Advanced */\n\t\"application/vnd.ms-office.chartex+xml\": \"TODO\",\n\n\t/* Calculation Chain */\n\t\"application/vnd.ms-excel.calcChain\": \"calcchains\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml\": \"calcchains\",\n\n\t/* Printer Settings */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings\": \"TODO\",\n\n\t/* ActiveX */\n\t\"application/vnd.ms-office.activeX\": \"TODO\",\n\t\"application/vnd.ms-office.activeX+xml\": \"TODO\",\n\n\t/* Custom Toolbars */\n\t\"application/vnd.ms-excel.attachedToolbars\": \"TODO\",\n\n\t/* External Data Connections */\n\t\"application/vnd.ms-excel.connections\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml\": \"TODO\",\n\n\t/* External Links */\n\t\"application/vnd.ms-excel.externalLink\": \"links\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml\": \"links\",\n\n\t/* PivotCache */\n\t\"application/vnd.ms-excel.pivotCacheDefinition\": \"TODO\",\n\t\"application/vnd.ms-excel.pivotCacheRecords\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml\": \"TODO\",\n\n\t/* Query Table */\n\t\"application/vnd.ms-excel.queryTable\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml\": \"TODO\",\n\n\t/* Shared Workbook */\n\t\"application/vnd.ms-excel.userNames\": \"TODO\",\n\t\"application/vnd.ms-excel.revisionHeaders\": \"TODO\",\n\t\"application/vnd.ms-excel.revisionLog\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml\": \"TODO\",\n\n\t/* Single Cell Table */\n\t\"application/vnd.ms-excel.tableSingleCells\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml\": \"TODO\",\n\n\t/* Slicer */\n\t\"application/vnd.ms-excel.slicer\": \"TODO\",\n\t\"application/vnd.ms-excel.slicerCache\": \"TODO\",\n\t\"application/vnd.ms-excel.slicer+xml\": \"TODO\",\n\t\"application/vnd.ms-excel.slicerCache+xml\": \"TODO\",\n\n\t/* Sort Map */\n\t\"application/vnd.ms-excel.wsSortMap\": \"TODO\",\n\n\t/* Table */\n\t\"application/vnd.ms-excel.table\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml\": \"TODO\",\n\n\t/* Themes */\n\t\"application/vnd.openxmlformats-officedocument.theme+xml\": \"themes\",\n\n\t/* Theme Override */\n\t\"application/vnd.openxmlformats-officedocument.themeOverride+xml\": \"TODO\",\n\n\t/* Timeline */\n\t\"application/vnd.ms-excel.Timeline+xml\": \"TODO\", /* verify */\n\t\"application/vnd.ms-excel.TimelineCache+xml\": \"TODO\", /* verify */\n\n\t/* VBA */\n\t\"application/vnd.ms-office.vbaProject\": \"vba\",\n\t\"application/vnd.ms-office.vbaProjectSignature\": \"TODO\",\n\n\t/* Volatile Dependencies */\n\t\"application/vnd.ms-office.volatileDependencies\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml\": \"TODO\",\n\n\t/* Control Properties */\n\t\"application/vnd.ms-excel.controlproperties+xml\": \"TODO\",\n\n\t/* Data Model */\n\t\"application/vnd.openxmlformats-officedocument.model+data\": \"TODO\",\n\n\t/* Survey */\n\t\"application/vnd.ms-excel.Survey+xml\": \"TODO\",\n\n\t/* Drawing */\n\t\"application/vnd.openxmlformats-officedocument.drawing+xml\": \"drawings\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml\": \"TODO\",\n\n\t/* VML */\n\t\"application/vnd.openxmlformats-officedocument.vmlDrawing\": \"TODO\",\n\n\t\"application/vnd.openxmlformats-package.relationships+xml\": \"rels\",\n\t\"application/vnd.openxmlformats-officedocument.oleObject\": \"TODO\",\n\n\t/* Image */\n\t\"image/png\": \"TODO\",\n\n\t\"sheet\": \"js\"\n}/*:any*/);\n\nvar CT_LIST = {\n\t\tworkbooks: {\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\",\n\t\t\txlsm: \"application/vnd.ms-excel.sheet.macroEnabled.main+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.sheet.binary.macroEnabled.main\",\n\t\t\txlam: \"application/vnd.ms-excel.addin.macroEnabled.main+xml\",\n\t\t\txltx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\"\n\t\t},\n\t\tstrs: { /* Shared Strings */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.sharedStrings\"\n\t\t},\n\t\tcomments: { /* Comments */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.comments\"\n\t\t},\n\t\tsheets: { /* Worksheet */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.worksheet\"\n\t\t},\n\t\tcharts: { /* Chartsheet */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.chartsheet\"\n\t\t},\n\t\tdialogs: { /* Dialogsheet */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.dialogsheet\"\n\t\t},\n\t\tmacros: { /* Macrosheet (Excel 4.0 Macros) */\n\t\t\txlsx: \"application/vnd.ms-excel.macrosheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.macrosheet\"\n\t\t},\n\t\tmetadata: { /* Metadata (Stock/Geography and Dynamic Array) */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.sheetMetadata\"\n\t\t},\n\t\tstyles: { /* Styles */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.styles\"\n\t\t}\n};\n\nfunction new_ct()/*:any*/ {\n\treturn ({\n\t\tworkbooks:[], sheets:[], charts:[], dialogs:[], macros:[],\n\t\trels:[], strs:[], comments:[], threadedcomments:[], links:[],\n\t\tcoreprops:[], extprops:[], custprops:[], themes:[], styles:[],\n\t\tcalcchains:[], vba: [], drawings: [], metadata: [], people:[],\n\t\tTODO:[], xmlns: \"\" }/*:any*/);\n}\n\nfunction parse_ct(data/*:?string*/) {\n\tvar ct = new_ct();\n\tif(!data || !data.match) return ct;\n\tvar ctext = {};\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0].replace(nsregex,\"<\")) {\n\t\t\tcase '<?xml': break;\n\t\t\tcase '<Types': ct.xmlns = y['xmlns' + (y[0].match(/<(\\w+):/)||[\"\",\"\"])[1] ]; break;\n\t\t\tcase '<Default': ctext[y.Extension] = y.ContentType; break;\n\t\t\tcase '<Override':\n\t\t\t\tif(ct[ct2type[y.ContentType]] !== undefined) ct[ct2type[y.ContentType]].push(y.PartName);\n\t\t\t\tbreak;\n\t\t}\n\t});\n\tif(ct.xmlns !== XMLNS.CT) throw new Error(\"Unknown Namespace: \" + ct.xmlns);\n\tct.calcchain = ct.calcchains.length > 0 ? ct.calcchains[0] : \"\";\n\tct.sst = ct.strs.length > 0 ? ct.strs[0] : \"\";\n\tct.style = ct.styles.length > 0 ? ct.styles[0] : \"\";\n\tct.defaults = ctext;\n\tdelete ct.calcchains;\n\treturn ct;\n}\n\nfunction write_ct(ct, opts)/*:string*/ {\n\tvar type2ct/*{[string]:Array<string>}*/ = evert_arr(ct2type);\n\n\tvar o/*:Array<string>*/ = [], v;\n\to[o.length] = (XML_HEADER);\n\to[o.length] = writextag('Types', null, {\n\t\t'xmlns': XMLNS.CT,\n\t\t'xmlns:xsd': XMLNS.xsd,\n\t\t'xmlns:xsi': XMLNS.xsi\n\t});\n\n\to = o.concat([\n\t\t['xml', 'application/xml'],\n\t\t['bin', 'application/vnd.ms-excel.sheet.binary.macroEnabled.main'],\n\t\t['vml', 'application/vnd.openxmlformats-officedocument.vmlDrawing'],\n\t\t['data', 'application/vnd.openxmlformats-officedocument.model+data'],\n\t\t/* from test files */\n\t\t['bmp', 'image/bmp'],\n\t\t['png', 'image/png'],\n\t\t['gif', 'image/gif'],\n\t\t['emf', 'image/x-emf'],\n\t\t['wmf', 'image/x-wmf'],\n\t\t['jpg', 'image/jpeg'], ['jpeg', 'image/jpeg'],\n\t\t['tif', 'image/tiff'], ['tiff', 'image/tiff'],\n\t\t['pdf', 'application/pdf'],\n\t\t['rels', 'application/vnd.openxmlformats-package.relationships+xml']\n\t].map(function(x) {\n\t\treturn writextag('Default', null, {'Extension':x[0], 'ContentType': x[1]});\n\t}));\n\n\t/* only write first instance */\n\tvar f1 = function(w) {\n\t\tif(ct[w] && ct[w].length > 0) {\n\t\t\tv = ct[w][0];\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': CT_LIST[w][opts.bookType] || CT_LIST[w]['xlsx']\n\t\t\t}));\n\t\t}\n\t};\n\n\t/* book type-specific */\n\tvar f2 = function(w) {\n\t\t(ct[w]||[]).forEach(function(v) {\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': CT_LIST[w][opts.bookType] || CT_LIST[w]['xlsx']\n\t\t\t}));\n\t\t});\n\t};\n\n\t/* standard type */\n\tvar f3 = function(t) {\n\t\t(ct[t]||[]).forEach(function(v) {\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': type2ct[t][0]\n\t\t\t}));\n\t\t});\n\t};\n\n\tf1('workbooks');\n\tf2('sheets');\n\tf2('charts');\n\tf3('themes');\n\t['strs', 'styles'].forEach(f1);\n\t['coreprops', 'extprops', 'custprops'].forEach(f3);\n\tf3('vba');\n\tf3('comments');\n\tf3('threadedcomments');\n\tf3('drawings');\n\tf2('metadata');\n\tf3('people');\n\tif(o.length>2){ o[o.length] = ('</Types>'); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 9.3 Relationships */\nvar RELS = ({\n\tWB: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\",\n\tSHEET: \"http://sheetjs.openxmlformats.org/officeDocument/2006/relationships/officeDocument\",\n\tHLINK: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink\",\n\tVML: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing\",\n\tXPATH: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath\",\n\tXMISS: \"http://schemas.microsoft.com/office/2006/relationships/xlExternalLinkPath/xlPathMissing\",\n\tXLINK: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLink\",\n\tCXML: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml\",\n\tCXMLP: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXmlProps\",\n\tCMNT: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments\",\n\tCORE_PROPS: \"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties\",\n\tEXT_PROPS: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties',\n\tCUST_PROPS: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties',\n\tSST: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings\",\n\tSTY: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles\",\n\tTHEME: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme\",\n\tCHART: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart\",\n\tCHARTEX: \"http://schemas.microsoft.com/office/2014/relationships/chartEx\",\n\tCS: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartsheet\",\n\tWS: [\n\t\t\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet\",\n\t\t\"http://purl.oclc.org/ooxml/officeDocument/relationships/worksheet\"\n\t],\n\tDS: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/dialogsheet\",\n\tMS: \"http://schemas.microsoft.com/office/2006/relationships/xlMacrosheet\",\n\tIMG: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\",\n\tDRAW: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing\",\n\tXLMETA: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sheetMetadata\",\n\tTCMNT: \"http://schemas.microsoft.com/office/2017/10/relationships/threadedComment\",\n\tPEOPLE: \"http://schemas.microsoft.com/office/2017/10/relationships/person\",\n\tVBA: \"http://schemas.microsoft.com/office/2006/relationships/vbaProject\"\n}/*:any*/);\n\n\n/* 9.3.3 Representing Relationships */\nfunction get_rels_path(file/*:string*/)/*:string*/ {\n\tvar n = file.lastIndexOf(\"/\");\n\treturn file.slice(0,n+1) + '_rels/' + file.slice(n+1) + \".rels\";\n}\n\nfunction parse_rels(data/*:?string*/, currentFilePath/*:string*/) {\n\tvar rels = {\"!id\":{}};\n\tif (!data) return rels;\n\tif (currentFilePath.charAt(0) !== '/') {\n\t\tcurrentFilePath = '/'+currentFilePath;\n\t}\n\tvar hash = {};\n\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\t/* 9.3.2.2 OPC_Relationships */\n\t\tif (y[0] === '<Relationship') {\n\t\t\tvar rel = {}; rel.Type = y.Type; rel.Target = y.Target; rel.Id = y.Id; if(y.TargetMode) rel.TargetMode = y.TargetMode;\n\t\t\tvar canonictarget = y.TargetMode === 'External' ? y.Target : resolve_path(y.Target, currentFilePath);\n\t\t\trels[canonictarget] = rel;\n\t\t\thash[y.Id] = rel;\n\t\t}\n\t});\n\trels[\"!id\"] = hash;\n\treturn rels;\n}\n\n\n/* TODO */\nfunction write_rels(rels)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('Relationships', null, {\n\t\t//'xmlns:ns0': XMLNS.RELS,\n\t\t'xmlns': XMLNS.RELS\n\t})];\n\tkeys(rels['!id']).forEach(function(rid) {\n\t\to[o.length] = (writextag('Relationship', null, rels['!id'][rid]));\n\t});\n\tif(o.length>2){ o[o.length] = ('</Relationships>'); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\nfunction add_rels(rels, rId/*:number*/, f, type, relobj, targetmode/*:?string*/)/*:number*/ {\n\tif(!relobj) relobj = {};\n\tif(!rels['!id']) rels['!id'] = {};\n\tif(!rels['!idx']) rels['!idx'] = 1;\n\tif(rId < 0) for(rId = rels['!idx']; rels['!id']['rId' + rId]; ++rId){/* empty */}\n\trels['!idx'] = rId + 1;\n\trelobj.Id = 'rId' + rId;\n\trelobj.Type = type;\n\trelobj.Target = f;\n\tif(targetmode) relobj.TargetMode = targetmode;\n\telse if([RELS.HLINK, RELS.XPATH, RELS.XMISS].indexOf(relobj.Type) > -1) relobj.TargetMode = \"External\";\n\tif(rels['!id'][relobj.Id]) throw new Error(\"Cannot rewrite rId \" + rId);\n\trels['!id'][relobj.Id] = relobj;\n\trels[('/' + relobj.Target).replace(\"//\",\"/\")] = relobj;\n\treturn rId;\n}\n/* Open Document Format for Office Applications (OpenDocument) Version 1.2 */\n/* Part 3 Section 4 Manifest File */\nvar CT_ODS = \"application/vnd.oasis.opendocument.spreadsheet\";\nfunction parse_manifest(d, opts) {\n\tvar str = xlml_normalize(d);\n\tvar Rn;\n\tvar FEtag;\n\twhile((Rn = xlmlregex.exec(str))) switch(Rn[3]) {\n\t\tcase 'manifest': break; // 4.2 <manifest:manifest>\n\t\tcase 'file-entry': // 4.3 <manifest:file-entry>\n\t\t\tFEtag = parsexmltag(Rn[0], false);\n\t\t\tif(FEtag.path == '/' && FEtag.type !== CT_ODS) throw new Error(\"This OpenDocument is not a spreadsheet\");\n\t\t\tbreak;\n\t\tcase 'encryption-data': // 4.4 <manifest:encryption-data>\n\t\tcase 'algorithm': // 4.5 <manifest:algorithm>\n\t\tcase 'start-key-generation': // 4.6 <manifest:start-key-generation>\n\t\tcase 'key-derivation': // 4.7 <manifest:key-derivation>\n\t\t\tthrow new Error(\"Unsupported ODS Encryption\");\n\t\tdefault: if(opts && opts.WTF) throw Rn;\n\t}\n}\n\nfunction write_manifest(manifest/*:Array<Array<string> >*/)/*:string*/ {\n\tvar o = [XML_HEADER];\n\to.push('<manifest:manifest xmlns:manifest=\"urn:oasis:names:tc:opendocument:xmlns:manifest:1.0\" manifest:version=\"1.2\">\\n');\n\to.push('  <manifest:file-entry manifest:full-path=\"/\" manifest:version=\"1.2\" manifest:media-type=\"application/vnd.oasis.opendocument.spreadsheet\"/>\\n');\n\tfor(var i = 0; i < manifest.length; ++i) o.push('  <manifest:file-entry manifest:full-path=\"' + manifest[i][0] + '\" manifest:media-type=\"' + manifest[i][1] + '\"/>\\n');\n\to.push('</manifest:manifest>');\n\treturn o.join(\"\");\n}\n\n/* Part 3 Section 6 Metadata Manifest File */\nfunction write_rdf_type(file/*:string*/, res/*:string*/, tag/*:?string*/) {\n\treturn [\n\t\t'  <rdf:Description rdf:about=\"' + file + '\">\\n',\n\t\t'    <rdf:type rdf:resource=\"http://docs.oasis-open.org/ns/office/1.2/meta/' + (tag || \"odf\") + '#' + res + '\"/>\\n',\n\t\t'  </rdf:Description>\\n'\n\t].join(\"\");\n}\nfunction write_rdf_has(base/*:string*/, file/*:string*/) {\n\treturn [\n\t\t'  <rdf:Description rdf:about=\"' + base + '\">\\n',\n\t\t'    <ns0:hasPart xmlns:ns0=\"http://docs.oasis-open.org/ns/office/1.2/meta/pkg#\" rdf:resource=\"' + file + '\"/>\\n',\n\t\t'  </rdf:Description>\\n'\n\t].join(\"\");\n}\nfunction write_rdf(rdf) {\n\tvar o = [XML_HEADER];\n\to.push('<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\\n');\n\tfor(var i = 0; i != rdf.length; ++i) {\n\t\to.push(write_rdf_type(rdf[i][0], rdf[i][1]));\n\t\to.push(write_rdf_has(\"\",rdf[i][0]));\n\t}\n\to.push(write_rdf_type(\"\",\"Document\", \"pkg\"));\n\to.push('</rdf:RDF>');\n\treturn o.join(\"\");\n}\n/* TODO: pull properties */\nfunction write_meta_ods(/*:: wb: Workbook, opts: any*/)/*:string*/ {\n\treturn '<office:document-meta xmlns:office=\"urn:oasis:names:tc:opendocument:xmlns:office:1.0\" xmlns:meta=\"urn:oasis:names:tc:opendocument:xmlns:meta:1.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" office:version=\"1.2\"><office:meta><meta:generator>Sheet' + 'JS ' + XLSX.version + '</meta:generator></office:meta></office:document-meta>';\n}\n\n/* ECMA-376 Part II 11.1 Core Properties Part */\n/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */\nvar CORE_PROPS/*:Array<Array<string> >*/ = [\n\t[\"cp:category\", \"Category\"],\n\t[\"cp:contentStatus\", \"ContentStatus\"],\n\t[\"cp:keywords\", \"Keywords\"],\n\t[\"cp:lastModifiedBy\", \"LastAuthor\"],\n\t[\"cp:lastPrinted\", \"LastPrinted\"],\n\t[\"cp:revision\", \"RevNumber\"],\n\t[\"cp:version\", \"Version\"],\n\t[\"dc:creator\", \"Author\"],\n\t[\"dc:description\", \"Comments\"],\n\t[\"dc:identifier\", \"Identifier\"],\n\t[\"dc:language\", \"Language\"],\n\t[\"dc:subject\", \"Subject\"],\n\t[\"dc:title\", \"Title\"],\n\t[\"dcterms:created\", \"CreatedDate\", 'date'],\n\t[\"dcterms:modified\", \"ModifiedDate\", 'date']\n];\n\nvar CORE_PROPS_REGEX/*:Array<RegExp>*/ = /*#__PURE__*/(function() {\n\tvar r = new Array(CORE_PROPS.length);\n\tfor(var i = 0; i < CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i];\n\t\tvar g = \"(?:\"+ f[0].slice(0,f[0].indexOf(\":\")) +\":)\"+ f[0].slice(f[0].indexOf(\":\")+1);\n\t\tr[i] = new RegExp(\"<\" + g + \"[^>]*>([\\\\s\\\\S]*?)<\\/\" + g + \">\");\n\t}\n\treturn r;\n})();\n\nfunction parse_core_props(data) {\n\tvar p = {};\n\tdata = utf8read(data);\n\n\tfor(var i = 0; i < CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i], cur = data.match(CORE_PROPS_REGEX[i]);\n\t\tif(cur != null && cur.length > 0) p[f[1]] = unescapexml(cur[1]);\n\t\tif(f[2] === 'date' && p[f[1]]) p[f[1]] = parseDate(p[f[1]]);\n\t}\n\n\treturn p;\n}\n\nfunction cp_doit(f, g, h, o, p) {\n\tif(p[f] != null || g == null || g === \"\") return;\n\tp[f] = g;\n\tg = escapexml(g);\n\to[o.length] = (h ? writextag(f,g,h) : writetag(f,g));\n}\n\nfunction write_core_props(cp, _opts) {\n\tvar opts = _opts || {};\n\tvar o = [XML_HEADER, writextag('cp:coreProperties', null, {\n\t\t//'xmlns': XMLNS.CORE_PROPS,\n\t\t'xmlns:cp': XMLNS.CORE_PROPS,\n\t\t'xmlns:dc': XMLNS.dc,\n\t\t'xmlns:dcterms': XMLNS.dcterms,\n\t\t'xmlns:dcmitype': XMLNS.dcmitype,\n\t\t'xmlns:xsi': XMLNS.xsi\n\t})], p = {};\n\tif(!cp && !opts.Props) return o.join(\"\");\n\n\tif(cp) {\n\t\tif(cp.CreatedDate != null) cp_doit(\"dcterms:created\", typeof cp.CreatedDate === \"string\" ? cp.CreatedDate : write_w3cdtf(cp.CreatedDate, opts.WTF), {\"xsi:type\":\"dcterms:W3CDTF\"}, o, p);\n\t\tif(cp.ModifiedDate != null) cp_doit(\"dcterms:modified\", typeof cp.ModifiedDate === \"string\" ? cp.ModifiedDate : write_w3cdtf(cp.ModifiedDate, opts.WTF), {\"xsi:type\":\"dcterms:W3CDTF\"}, o, p);\n\t}\n\n\tfor(var i = 0; i != CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i];\n\t\tvar v = opts.Props && opts.Props[f[1]] != null ? opts.Props[f[1]] : cp ? cp[f[1]] : null;\n\t\tif(v === true) v = \"1\";\n\t\telse if(v === false) v = \"0\";\n\t\telse if(typeof v == \"number\") v = String(v);\n\t\tif(v != null) cp_doit(f[0], v, null, o, p);\n\t}\n\tif(o.length>2){ o[o.length] = ('</cp:coreProperties>'); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 15.2.12.3 Extended File Properties Part */\n/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */\nvar EXT_PROPS/*:Array<Array<string> >*/ = [\n\t[\"Application\", \"Application\", \"string\"],\n\t[\"AppVersion\", \"AppVersion\", \"string\"],\n\t[\"Company\", \"Company\", \"string\"],\n\t[\"DocSecurity\", \"DocSecurity\", \"string\"],\n\t[\"Manager\", \"Manager\", \"string\"],\n\t[\"HyperlinksChanged\", \"HyperlinksChanged\", \"bool\"],\n\t[\"SharedDoc\", \"SharedDoc\", \"bool\"],\n\t[\"LinksUpToDate\", \"LinksUpToDate\", \"bool\"],\n\t[\"ScaleCrop\", \"ScaleCrop\", \"bool\"],\n\t[\"HeadingPairs\", \"HeadingPairs\", \"raw\"],\n\t[\"TitlesOfParts\", \"TitlesOfParts\", \"raw\"]\n];\n\nvar PseudoPropsPairs = [\n\t\"Worksheets\",  \"SheetNames\",\n\t\"NamedRanges\", \"DefinedNames\",\n\t\"Chartsheets\", \"ChartNames\"\n];\nfunction load_props_pairs(HP/*:string|Array<Array<any>>*/, TOP, props, opts) {\n\tvar v = [];\n\tif(typeof HP == \"string\") v = parseVector(HP, opts);\n\telse for(var j = 0; j < HP.length; ++j) v = v.concat(HP[j].map(function(hp) { return {v:hp}; }));\n\tvar parts = (typeof TOP == \"string\") ? parseVector(TOP, opts).map(function (x) { return x.v; }) : TOP;\n\tvar idx = 0, len = 0;\n\tif(parts.length > 0) for(var i = 0; i !== v.length; i += 2) {\n\t\tlen = +(v[i+1].v);\n\t\tswitch(v[i].v) {\n\t\t\tcase \"Worksheets\":\n\t\t\tcase \"工作表\":\n\t\t\tcase \"Листы\":\n\t\t\tcase \"أوراق العمل\":\n\t\t\tcase \"ワークシート\":\n\t\t\tcase \"גליונות עבודה\":\n\t\t\tcase \"Arbeitsblätter\":\n\t\t\tcase \"Çalışma Sayfaları\":\n\t\t\tcase \"Feuilles de calcul\":\n\t\t\tcase \"Fogli di lavoro\":\n\t\t\tcase \"Folhas de cálculo\":\n\t\t\tcase \"Planilhas\":\n\t\t\tcase \"Regneark\":\n\t\t\tcase \"Hojas de cálculo\":\n\t\t\tcase \"Werkbladen\":\n\t\t\t\tprops.Worksheets = len;\n\t\t\t\tprops.SheetNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\n\t\t\tcase \"Named Ranges\":\n\t\t\tcase \"Rangos con nombre\":\n\t\t\tcase \"名前付き一覧\":\n\t\t\tcase \"Benannte Bereiche\":\n\t\t\tcase \"Navngivne områder\":\n\t\t\t\tprops.NamedRanges = len;\n\t\t\t\tprops.DefinedNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\n\t\t\tcase \"Charts\":\n\t\t\tcase \"Diagramme\":\n\t\t\t\tprops.Chartsheets = len;\n\t\t\t\tprops.ChartNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\t\t}\n\t\tidx += len;\n\t}\n}\n\nfunction parse_ext_props(data, p, opts) {\n\tvar q = {}; if(!p) p = {};\n\tdata = utf8read(data);\n\n\tEXT_PROPS.forEach(function(f) {\n\t\tvar xml = (data.match(matchtag(f[0]))||[])[1];\n\t\tswitch(f[2]) {\n\t\t\tcase \"string\": if(xml) p[f[1]] = unescapexml(xml); break;\n\t\t\tcase \"bool\": p[f[1]] = xml === \"true\"; break;\n\t\t\tcase \"raw\":\n\t\t\t\tvar cur = data.match(new RegExp(\"<\" + f[0] + \"[^>]*>([\\\\s\\\\S]*?)<\\/\" + f[0] + \">\"));\n\t\t\t\tif(cur && cur.length > 0) q[f[1]] = cur[1];\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(q.HeadingPairs && q.TitlesOfParts) load_props_pairs(q.HeadingPairs, q.TitlesOfParts, p, opts);\n\n\treturn p;\n}\n\nfunction write_ext_props(cp/*::, opts*/)/*:string*/ {\n\tvar o/*:Array<string>*/ = [], W = writextag;\n\tif(!cp) cp = {};\n\tcp.Application = \"SheetJS\";\n\to[o.length] = (XML_HEADER);\n\to[o.length] = (writextag('Properties', null, {\n\t\t'xmlns': XMLNS.EXT_PROPS,\n\t\t'xmlns:vt': XMLNS.vt\n\t}));\n\n\tEXT_PROPS.forEach(function(f) {\n\t\tif(cp[f[1]] === undefined) return;\n\t\tvar v;\n\t\tswitch(f[2]) {\n\t\t\tcase 'string': v = escapexml(String(cp[f[1]])); break;\n\t\t\tcase 'bool': v = cp[f[1]] ? 'true' : 'false'; break;\n\t\t}\n\t\tif(v !== undefined) o[o.length] = (W(f[0], v));\n\t});\n\n\t/* TODO: HeadingPairs, TitlesOfParts */\n\to[o.length] = (W('HeadingPairs', W('vt:vector', W('vt:variant', '<vt:lpstr>Worksheets</vt:lpstr>')+W('vt:variant', W('vt:i4', String(cp.Worksheets))), {size:2, baseType:\"variant\"})));\n\to[o.length] = (W('TitlesOfParts', W('vt:vector', cp.SheetNames.map(function(s) { return \"<vt:lpstr>\" + escapexml(s) + \"</vt:lpstr>\"; }).join(\"\"), {size: cp.Worksheets, baseType:\"lpstr\"})));\n\tif(o.length>2){ o[o.length] = ('</Properties>'); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 15.2.12.2 Custom File Properties Part */\nvar custregex = /<[^>]+>[^<]*/g;\nfunction parse_cust_props(data/*:string*/, opts) {\n\tvar p = {}, name = \"\";\n\tvar m = data.match(custregex);\n\tif(m) for(var i = 0; i != m.length; ++i) {\n\t\tvar x = m[i], y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\tcase '<?xml': break;\n\t\t\tcase '<Properties': break;\n\t\t\tcase '<property': name = unescapexml(y.name); break;\n\t\t\tcase '</property>': name = null; break;\n\t\t\tdefault: if (x.indexOf('<vt:') === 0) {\n\t\t\t\tvar toks = x.split('>');\n\t\t\t\tvar type = toks[0].slice(4), text = toks[1];\n\t\t\t\t/* 22.4.2.32 (CT_Variant). Omit the binary types from 22.4 (Variant Types) */\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase 'lpstr': case 'bstr': case 'lpwstr':\n\t\t\t\t\t\tp[name] = unescapexml(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'bool':\n\t\t\t\t\t\tp[name] = parsexmlbool(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'i1': case 'i2': case 'i4': case 'i8': case 'int': case 'uint':\n\t\t\t\t\t\tp[name] = parseInt(text, 10);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'r4': case 'r8': case 'decimal':\n\t\t\t\t\t\tp[name] = parseFloat(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'filetime': case 'date':\n\t\t\t\t\t\tp[name] = parseDate(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'cy': case 'error':\n\t\t\t\t\t\tp[name] = unescapexml(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif(type.slice(-1) == '/') break;\n\t\t\t\t\t\tif(opts.WTF && typeof console !== 'undefined') console.warn('Unexpected', x, type, toks);\n\t\t\t\t}\n\t\t\t} else if(x.slice(0,2) === \"</\") {/* empty */\n\t\t\t} else if(opts.WTF) throw new Error(x);\n\t\t}\n\t}\n\treturn p;\n}\n\nfunction write_cust_props(cp/*::, opts*/)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('Properties', null, {\n\t\t'xmlns': XMLNS.CUST_PROPS,\n\t\t'xmlns:vt': XMLNS.vt\n\t})];\n\tif(!cp) return o.join(\"\");\n\tvar pid = 1;\n\tkeys(cp).forEach(function custprop(k) { ++pid;\n\t\to[o.length] = (writextag('property', write_vt(cp[k], true), {\n\t\t\t'fmtid': '{D5CDD505-2E9C-101B-9397-08002B2CF9AE}',\n\t\t\t'pid': pid,\n\t\t\t'name': escapexml(k)\n\t\t}));\n\t});\n\tif(o.length>2){ o[o.length] = '</Properties>'; o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* Common Name -> XLML Name */\nvar XLMLDocPropsMap = {\n\tTitle: 'Title',\n\tSubject: 'Subject',\n\tAuthor: 'Author',\n\tKeywords: 'Keywords',\n\tComments: 'Description',\n\tLastAuthor: 'LastAuthor',\n\tRevNumber: 'Revision',\n\tApplication: 'AppName',\n\t/* TotalTime: 'TotalTime', */\n\tLastPrinted: 'LastPrinted',\n\tCreatedDate: 'Created',\n\tModifiedDate: 'LastSaved',\n\t/* Pages */\n\t/* Words */\n\t/* Characters */\n\tCategory: 'Category',\n\t/* PresentationFormat */\n\tManager: 'Manager',\n\tCompany: 'Company',\n\t/* Guid */\n\t/* HyperlinkBase */\n\t/* Bytes */\n\t/* Lines */\n\t/* Paragraphs */\n\t/* CharactersWithSpaces */\n\tAppVersion: 'Version',\n\n\tContentStatus: 'ContentStatus', /* NOTE: missing from schema */\n\tIdentifier: 'Identifier', /* NOTE: missing from schema */\n\tLanguage: 'Language' /* NOTE: missing from schema */\n};\nvar evert_XLMLDPM;\n\nfunction xlml_set_prop(Props, tag/*:string*/, val) {\n\tif(!evert_XLMLDPM) evert_XLMLDPM = evert(XLMLDocPropsMap);\n\ttag = evert_XLMLDPM[tag] || tag;\n\tProps[tag] = val;\n}\n\nfunction xlml_write_docprops(Props, opts) {\n\tvar o/*:Array<string>*/ = [];\n\tkeys(XLMLDocPropsMap).map(function(m) {\n\t\tfor(var i = 0; i < CORE_PROPS.length; ++i) if(CORE_PROPS[i][1] == m) return CORE_PROPS[i];\n\t\tfor(i = 0; i < EXT_PROPS.length; ++i) if(EXT_PROPS[i][1] == m) return EXT_PROPS[i];\n\t\tthrow m;\n\t}).forEach(function(p) {\n\t\tif(Props[p[1]] == null) return;\n\t\tvar m = opts && opts.Props && opts.Props[p[1]] != null ? opts.Props[p[1]] : Props[p[1]];\n\t\tswitch(p[2]) {\n\t\t\tcase 'date': m = new Date(m).toISOString().replace(/\\.\\d*Z/,\"Z\"); break;\n\t\t}\n\t\tif(typeof m == 'number') m = String(m);\n\t\telse if(m === true || m === false) { m = m ? \"1\" : \"0\"; }\n\t\telse if(m instanceof Date) m = new Date(m).toISOString().replace(/\\.\\d*Z/,\"\");\n\t\to.push(writetag(XLMLDocPropsMap[p[1]] || p[1], m));\n\t});\n\treturn writextag('DocumentProperties', o.join(\"\"), {xmlns:XLMLNS.o });\n}\nfunction xlml_write_custprops(Props, Custprops/*::, opts*/) {\n\tvar BLACKLIST = [\"Worksheets\",\"SheetNames\"];\n\tvar T = 'CustomDocumentProperties';\n\tvar o/*:Array<string>*/ = [];\n\tif(Props) keys(Props).forEach(function(k) {\n\t\t/*:: if(!Props) return; */\n\t\tif(!Object.prototype.hasOwnProperty.call(Props, k)) return;\n\t\tfor(var i = 0; i < CORE_PROPS.length; ++i) if(k == CORE_PROPS[i][1]) return;\n\t\tfor(i = 0; i < EXT_PROPS.length; ++i) if(k == EXT_PROPS[i][1]) return;\n\t\tfor(i = 0; i < BLACKLIST.length; ++i) if(k == BLACKLIST[i]) return;\n\n\t\tvar m = Props[k];\n\t\tvar t = \"string\";\n\t\tif(typeof m == 'number') { t = \"float\"; m = String(m); }\n\t\telse if(m === true || m === false) { t = \"boolean\"; m = m ? \"1\" : \"0\"; }\n\t\telse m = String(m);\n\t\to.push(writextag(escapexmltag(k), m, {\"dt:dt\":t}));\n\t});\n\tif(Custprops) keys(Custprops).forEach(function(k) {\n\t\t/*:: if(!Custprops) return; */\n\t\tif(!Object.prototype.hasOwnProperty.call(Custprops, k)) return;\n\t\tif(Props && Object.prototype.hasOwnProperty.call(Props, k)) return;\n\t\tvar m = Custprops[k];\n\t\tvar t = \"string\";\n\t\tif(typeof m == 'number') { t = \"float\"; m = String(m); }\n\t\telse if(m === true || m === false) { t = \"boolean\"; m = m ? \"1\" : \"0\"; }\n\t\telse if(m instanceof Date) { t = \"dateTime.tz\"; m = m.toISOString(); }\n\t\telse m = String(m);\n\t\to.push(writextag(escapexmltag(k), m, {\"dt:dt\":t}));\n\t});\n\treturn '<' + T + ' xmlns=\"' + XLMLNS.o + '\">' + o.join(\"\") + '</' + T + '>';\n}\n/* [MS-DTYP] 2.3.3 FILETIME */\n/* [MS-OLEDS] 2.1.3 FILETIME (Packet Version) */\n/* [MS-OLEPS] 2.8 FILETIME (Packet Version) */\nfunction parse_FILETIME(blob) {\n\tvar dwLowDateTime = blob.read_shift(4), dwHighDateTime = blob.read_shift(4);\n\treturn new Date(((dwHighDateTime/1e7*Math.pow(2,32) + dwLowDateTime/1e7) - 11644473600)*1000).toISOString().replace(/\\.000/,\"\");\n}\nfunction write_FILETIME(time/*:string|Date*/) {\n\tvar date = (typeof time == \"string\") ? new Date(Date.parse(time)) : time;\n\tvar t = date.getTime() / 1000 + 11644473600;\n\tvar l = t % Math.pow(2,32), h = (t - l) / Math.pow(2,32);\n\tl *= 1e7; h *= 1e7;\n\tvar w = (l / Math.pow(2,32)) | 0;\n\tif(w > 0) { l = l % Math.pow(2,32); h += w; }\n\tvar o = new_buf(8); o.write_shift(4, l); o.write_shift(4, h); return o;\n}\n\n/* [MS-OSHARED] 2.3.3.1.4 Lpstr */\nfunction parse_lpstr(blob, type, pad/*:?number*/) {\n\tvar start = blob.l;\n\tvar str = blob.read_shift(0, 'lpstr-cp');\n\tif(pad) while((blob.l - start) & 3) ++blob.l;\n\treturn str;\n}\n\n/* [MS-OSHARED] 2.3.3.1.6 Lpwstr */\nfunction parse_lpwstr(blob, type, pad) {\n\tvar str = blob.read_shift(0, 'lpwstr');\n\tif(pad) blob.l += (4 - ((str.length+1) & 3)) & 3;\n\treturn str;\n}\n\n\n/* [MS-OSHARED] 2.3.3.1.11 VtString */\n/* [MS-OSHARED] 2.3.3.1.12 VtUnalignedString */\nfunction parse_VtStringBase(blob, stringType, pad) {\n\tif(stringType === 0x1F /*VT_LPWSTR*/) return parse_lpwstr(blob);\n\treturn parse_lpstr(blob, stringType, pad);\n}\n\nfunction parse_VtString(blob, t/*:number*/, pad/*:?boolean*/) { return parse_VtStringBase(blob, t, pad === false ? 0: 4); }\nfunction parse_VtUnalignedString(blob, t/*:number*/) { if(!t) throw new Error(\"VtUnalignedString must have positive length\"); return parse_VtStringBase(blob, t, 0); }\n\n/* [MS-OSHARED] 2.3.3.1.7 VtVecLpwstrValue */\nfunction parse_VtVecLpwstrValue(blob)/*:Array<string>*/ {\n\tvar length = blob.read_shift(4);\n\tvar ret/*:Array<string>*/ = [];\n\tfor(var i = 0; i != length; ++i) {\n\t\tvar start = blob.l;\n\t\tret[i] = blob.read_shift(0, 'lpwstr').replace(chr0,'');\n\t\tif((blob.l - start) & 0x02) blob.l += 2;\n\t}\n\treturn ret;\n}\n\n/* [MS-OSHARED] 2.3.3.1.9 VtVecUnalignedLpstrValue */\nfunction parse_VtVecUnalignedLpstrValue(blob)/*:Array<string>*/ {\n\tvar length = blob.read_shift(4);\n\tvar ret/*:Array<string>*/ = [];\n\tfor(var i = 0; i != length; ++i) ret[i] = blob.read_shift(0, 'lpstr-cp').replace(chr0,'');\n\treturn ret;\n}\n\n\n/* [MS-OSHARED] 2.3.3.1.13 VtHeadingPair */\nfunction parse_VtHeadingPair(blob) {\n\tvar start = blob.l;\n\tvar headingString = parse_TypedPropertyValue(blob, VT_USTR);\n\tif(blob[blob.l] == 0x00 && blob[blob.l+1] == 0x00 && ((blob.l - start) & 0x02)) blob.l += 2;\n\tvar headerParts = parse_TypedPropertyValue(blob, VT_I4);\n\treturn [headingString, headerParts];\n}\n\n/* [MS-OSHARED] 2.3.3.1.14 VtVecHeadingPairValue */\nfunction parse_VtVecHeadingPairValue(blob) {\n\tvar cElements = blob.read_shift(4);\n\tvar out = [];\n\tfor(var i = 0; i < cElements / 2; ++i) out.push(parse_VtHeadingPair(blob));\n\treturn out;\n}\n\n/* [MS-OLEPS] 2.18.1 Dictionary (uses 2.17, 2.16) */\nfunction parse_dictionary(blob,CodePage) {\n\tvar cnt = blob.read_shift(4);\n\tvar dict/*:{[number]:string}*/ = ({}/*:any*/);\n\tfor(var j = 0; j != cnt; ++j) {\n\t\tvar pid = blob.read_shift(4);\n\t\tvar len = blob.read_shift(4);\n\t\tdict[pid] = blob.read_shift(len, (CodePage === 0x4B0 ?'utf16le':'utf8')).replace(chr0,'').replace(chr1,'!');\n\t\tif(CodePage === 0x4B0 && (len % 2)) blob.l += 2;\n\t}\n\tif(blob.l & 3) blob.l = (blob.l>>2+1)<<2;\n\treturn dict;\n}\n\n/* [MS-OLEPS] 2.9 BLOB */\nfunction parse_BLOB(blob) {\n\tvar size = blob.read_shift(4);\n\tvar bytes = blob.slice(blob.l,blob.l+size);\n\tblob.l += size;\n\tif((size & 3) > 0) blob.l += (4 - (size & 3)) & 3;\n\treturn bytes;\n}\n\n/* [MS-OLEPS] 2.11 ClipboardData */\nfunction parse_ClipboardData(blob) {\n\t// TODO\n\tvar o = {};\n\to.Size = blob.read_shift(4);\n\t//o.Format = blob.read_shift(4);\n\tblob.l += o.Size + 3 - (o.Size - 1) % 4;\n\treturn o;\n}\n\n/* [MS-OLEPS] 2.15 TypedPropertyValue */\nfunction parse_TypedPropertyValue(blob, type/*:number*/, _opts)/*:any*/ {\n\tvar t = blob.read_shift(2), ret, opts = _opts||{};\n\tblob.l += 2;\n\tif(type !== VT_VARIANT)\n\tif(t !== type && VT_CUSTOM.indexOf(type)===-1 && !((type & 0xFFFE) == 0x101E && (t & 0xFFFE) == 0x101E)) throw new Error('Expected type ' + type + ' saw ' + t);\n\tswitch(type === VT_VARIANT ? t : type) {\n\t\tcase 0x02 /*VT_I2*/: ret = blob.read_shift(2, 'i'); if(!opts.raw) blob.l += 2; return ret;\n\t\tcase 0x03 /*VT_I4*/: ret = blob.read_shift(4, 'i'); return ret;\n\t\tcase 0x0B /*VT_BOOL*/: return blob.read_shift(4) !== 0x0;\n\t\tcase 0x13 /*VT_UI4*/: ret = blob.read_shift(4); return ret;\n\t\tcase 0x1E /*VT_LPSTR*/: return parse_lpstr(blob, t, 4).replace(chr0,'');\n\t\tcase 0x1F /*VT_LPWSTR*/: return parse_lpwstr(blob);\n\t\tcase 0x40 /*VT_FILETIME*/: return parse_FILETIME(blob);\n\t\tcase 0x41 /*VT_BLOB*/: return parse_BLOB(blob);\n\t\tcase 0x47 /*VT_CF*/: return parse_ClipboardData(blob);\n\t\tcase 0x50 /*VT_STRING*/: return parse_VtString(blob, t, !opts.raw).replace(chr0,'');\n\t\tcase 0x51 /*VT_USTR*/: return parse_VtUnalignedString(blob, t/*, 4*/).replace(chr0,'');\n\t\tcase 0x100C /*VT_VECTOR|VT_VARIANT*/: return parse_VtVecHeadingPairValue(blob);\n\t\tcase 0x101E /*VT_VECTOR|VT_LPSTR*/:\n\t\tcase 0x101F /*VT_VECTOR|VT_LPWSTR*/:\n\t\t\treturn t == 0x101F ? parse_VtVecLpwstrValue(blob) : parse_VtVecUnalignedLpstrValue(blob);\n\t\tdefault: throw new Error(\"TypedPropertyValue unrecognized type \" + type + \" \" + t);\n\t}\n}\nfunction write_TypedPropertyValue(type/*:number*/, value) {\n\tvar o = new_buf(4), p = new_buf(4);\n\to.write_shift(4, type == 0x50 ? 0x1F : type);\n\tswitch(type) {\n\t\tcase 0x03 /*VT_I4*/: p.write_shift(-4, value); break;\n\t\tcase 0x05 /*VT_I4*/: p = new_buf(8); p.write_shift(8, value, 'f'); break;\n\t\tcase 0x0B /*VT_BOOL*/: p.write_shift(4, value ? 0x01 : 0x00); break;\n\t\tcase 0x40 /*VT_FILETIME*/: /*:: if(typeof value !== \"string\" && !(value instanceof Date)) throw \"unreachable\"; */ p = write_FILETIME(value); break;\n\t\tcase 0x1F /*VT_LPWSTR*/:\n\t\tcase 0x50 /*VT_STRING*/:\n\t\t\t/*:: if(typeof value !== \"string\") throw \"unreachable\"; */\n\t\t\tp = new_buf(4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2));\n\t\t\tp.write_shift(4, value.length + 1);\n\t\t\tp.write_shift(0, value, \"dbcs\");\n\t\t\twhile(p.l != p.length) p.write_shift(1, 0);\n\t\t\tbreak;\n\t\tdefault: throw new Error(\"TypedPropertyValue unrecognized type \" + type + \" \" + value);\n\t}\n\treturn bconcat([o, p]);\n}\n\n/* [MS-OLEPS] 2.20 PropertySet */\nfunction parse_PropertySet(blob, PIDSI) {\n\tvar start_addr = blob.l;\n\tvar size = blob.read_shift(4);\n\tvar NumProps = blob.read_shift(4);\n\tvar Props = [], i = 0;\n\tvar CodePage = 0;\n\tvar Dictionary = -1, DictObj/*:{[number]:string}*/ = ({}/*:any*/);\n\tfor(i = 0; i != NumProps; ++i) {\n\t\tvar PropID = blob.read_shift(4);\n\t\tvar Offset = blob.read_shift(4);\n\t\tProps[i] = [PropID, Offset + start_addr];\n\t}\n\tProps.sort(function(x,y) { return x[1] - y[1]; });\n\tvar PropH = {};\n\tfor(i = 0; i != NumProps; ++i) {\n\t\tif(blob.l !== Props[i][1]) {\n\t\t\tvar fail = true;\n\t\t\tif(i>0 && PIDSI) switch(PIDSI[Props[i-1][0]].t) {\n\t\t\t\tcase 0x02 /*VT_I2*/: if(blob.l+2 === Props[i][1]) { blob.l+=2; fail = false; } break;\n\t\t\t\tcase 0x50 /*VT_STRING*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break;\n\t\t\t\tcase 0x100C /*VT_VECTOR|VT_VARIANT*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break;\n\t\t\t}\n\t\t\tif((!PIDSI||i==0) && blob.l <= Props[i][1]) { fail=false; blob.l = Props[i][1]; }\n\t\t\tif(fail) throw new Error(\"Read Error: Expected address \" + Props[i][1] + ' at ' + blob.l + ' :' + i);\n\t\t}\n\t\tif(PIDSI) {\n\t\t\tvar piddsi = PIDSI[Props[i][0]];\n\t\t\tPropH[piddsi.n] = parse_TypedPropertyValue(blob, piddsi.t, {raw:true});\n\t\t\tif(piddsi.p === 'version') PropH[piddsi.n] = String(PropH[piddsi.n] >> 16) + \".\" + (\"0000\" + String(PropH[piddsi.n] & 0xFFFF)).slice(-4);\n\t\t\tif(piddsi.n == \"CodePage\") switch(PropH[piddsi.n]) {\n\t\t\t\tcase 0: PropH[piddsi.n] = 1252;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 874:\n\t\t\t\tcase 932:\n\t\t\t\tcase 936:\n\t\t\t\tcase 949:\n\t\t\t\tcase 950:\n\t\t\t\tcase 1250:\n\t\t\t\tcase 1251:\n\t\t\t\tcase 1253:\n\t\t\t\tcase 1254:\n\t\t\t\tcase 1255:\n\t\t\t\tcase 1256:\n\t\t\t\tcase 1257:\n\t\t\t\tcase 1258:\n\t\t\t\tcase 10000:\n\t\t\t\tcase 1200:\n\t\t\t\tcase 1201:\n\t\t\t\tcase 1252:\n\t\t\t\tcase 65000: case -536:\n\t\t\t\tcase 65001: case -535:\n\t\t\t\t\tset_cp(CodePage = (PropH[piddsi.n]>>>0) & 0xFFFF); break;\n\t\t\t\tdefault: throw new Error(\"Unsupported CodePage: \" + PropH[piddsi.n]);\n\t\t\t}\n\t\t} else {\n\t\t\tif(Props[i][0] === 0x1) {\n\t\t\t\tCodePage = PropH.CodePage = (parse_TypedPropertyValue(blob, VT_I2)/*:number*/);\n\t\t\t\tset_cp(CodePage);\n\t\t\t\tif(Dictionary !== -1) {\n\t\t\t\t\tvar oldpos = blob.l;\n\t\t\t\t\tblob.l = Props[Dictionary][1];\n\t\t\t\t\tDictObj = parse_dictionary(blob,CodePage);\n\t\t\t\t\tblob.l = oldpos;\n\t\t\t\t}\n\t\t\t} else if(Props[i][0] === 0) {\n\t\t\t\tif(CodePage === 0) { Dictionary = i; blob.l = Props[i+1][1]; continue; }\n\t\t\t\tDictObj = parse_dictionary(blob,CodePage);\n\t\t\t} else {\n\t\t\t\tvar name = DictObj[Props[i][0]];\n\t\t\t\tvar val;\n\t\t\t\t/* [MS-OSHARED] 2.3.3.2.3.1.2 + PROPVARIANT */\n\t\t\t\tswitch(blob[blob.l]) {\n\t\t\t\t\tcase 0x41 /*VT_BLOB*/: blob.l += 4; val = parse_BLOB(blob); break;\n\t\t\t\t\tcase 0x1E /*VT_LPSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\\u0000+$/,\"\"); break;\n\t\t\t\t\tcase 0x1F /*VT_LPWSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\\u0000+$/,\"\"); break;\n\t\t\t\t\tcase 0x03 /*VT_I4*/: blob.l += 4; val = blob.read_shift(4, 'i'); break;\n\t\t\t\t\tcase 0x13 /*VT_UI4*/: blob.l += 4; val = blob.read_shift(4); break;\n\t\t\t\t\tcase 0x05 /*VT_R8*/: blob.l += 4; val = blob.read_shift(8, 'f'); break;\n\t\t\t\t\tcase 0x0B /*VT_BOOL*/: blob.l += 4; val = parsebool(blob, 4); break;\n\t\t\t\t\tcase 0x40 /*VT_FILETIME*/: blob.l += 4; val = parseDate(parse_FILETIME(blob)); break;\n\t\t\t\t\tdefault: throw new Error(\"unparsed value: \" + blob[blob.l]);\n\t\t\t\t}\n\t\t\t\tPropH[name] = val;\n\t\t\t}\n\t\t}\n\t}\n\tblob.l = start_addr + size; /* step ahead to skip padding */\n\treturn PropH;\n}\nvar XLSPSSkip = [ \"CodePage\", \"Thumbnail\", \"_PID_LINKBASE\", \"_PID_HLINKS\", \"SystemIdentifier\", \"FMTID\" ]; //.concat(PseudoPropsPairs);\nfunction guess_property_type(val/*:any*/)/*:number*/ {\n\tswitch(typeof val) {\n\t\tcase \"boolean\": return 0x0B;\n\t\tcase \"number\": return ((val|0)==val) ? 0x03 : 0x05;\n\t\tcase \"string\": return 0x1F;\n\t\tcase \"object\": if(val instanceof Date) return 0x40; break;\n\t}\n\treturn -1;\n}\nfunction write_PropertySet(entries, RE, PIDSI) {\n\tvar hdr = new_buf(8), piao = [], prop = [];\n\tvar sz = 8, i = 0;\n\n\tvar pr = new_buf(8), pio = new_buf(8);\n\tpr.write_shift(4, 0x0002);\n\tpr.write_shift(4, 0x04B0);\n\tpio.write_shift(4, 0x0001);\n\tprop.push(pr); piao.push(pio);\n\tsz += 8 + pr.length;\n\n\tif(!RE) {\n\t\tpio = new_buf(8);\n\t\tpio.write_shift(4, 0);\n\t\tpiao.unshift(pio);\n\n\t\tvar bufs = [new_buf(4)];\n\t\tbufs[0].write_shift(4, entries.length);\n\t\tfor(i = 0; i < entries.length; ++i) {\n\t\t\tvar value = entries[i][0];\n\t\t\tpr = new_buf(4 + 4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2));\n\t\t\tpr.write_shift(4, i+2);\n\t\t\tpr.write_shift(4, value.length + 1);\n\t\t\tpr.write_shift(0, value, \"dbcs\");\n\t\t\twhile(pr.l != pr.length) pr.write_shift(1, 0);\n\t\t\tbufs.push(pr);\n\t\t}\n\t\tpr = bconcat(bufs);\n\t\tprop.unshift(pr);\n\t\tsz += 8 + pr.length;\n\t}\n\n\tfor(i = 0; i < entries.length; ++i) {\n\t\tif(RE && !RE[entries[i][0]]) continue;\n\t\tif(XLSPSSkip.indexOf(entries[i][0]) > -1 || PseudoPropsPairs.indexOf(entries[i][0]) > -1) continue;\n\t\tif(entries[i][1] == null) continue;\n\n\t\tvar val = entries[i][1], idx = 0;\n\t\tif(RE) {\n\t\t\tidx = +RE[entries[i][0]];\n\t\t\tvar pinfo = (PIDSI/*:: || {}*/)[idx]/*:: || {} */;\n\t\t\tif(pinfo.p == \"version\" && typeof val == \"string\") {\n\t\t\t\t/*:: if(typeof val !== \"string\") throw \"unreachable\"; */\n\t\t\t\tvar arr = val.split(\".\");\n\t\t\t\tval = ((+arr[0])<<16) + ((+arr[1])||0);\n\t\t\t}\n\t\t\tpr = write_TypedPropertyValue(pinfo.t, val);\n\t\t} else {\n\t\t\tvar T = guess_property_type(val);\n\t\t\tif(T == -1) { T = 0x1F; val = String(val); }\n\t\t\tpr = write_TypedPropertyValue(T, val);\n\t\t}\n\t\tprop.push(pr);\n\n\t\tpio = new_buf(8);\n\t\tpio.write_shift(4, !RE ? 2+i : idx);\n\t\tpiao.push(pio);\n\n\t\tsz += 8 + pr.length;\n\t}\n\n\tvar w = 8 * (prop.length + 1);\n\tfor(i = 0; i < prop.length; ++i) { piao[i].write_shift(4, w); w += prop[i].length; }\n\thdr.write_shift(4, sz);\n\thdr.write_shift(4, prop.length);\n\treturn bconcat([hdr].concat(piao).concat(prop));\n}\n\n/* [MS-OLEPS] 2.21 PropertySetStream */\nfunction parse_PropertySetStream(file, PIDSI, clsid) {\n\tvar blob = file.content;\n\tif(!blob) return ({}/*:any*/);\n\tprep_blob(blob, 0);\n\n\tvar NumSets, FMTID0, FMTID1, Offset0, Offset1 = 0;\n\tblob.chk('feff', 'Byte Order: ');\n\n\t/*var vers = */blob.read_shift(2); // TODO: check version\n\tvar SystemIdentifier = blob.read_shift(4);\n\tvar CLSID = blob.read_shift(16);\n\tif(CLSID !== CFB.utils.consts.HEADER_CLSID && CLSID !== clsid) throw new Error(\"Bad PropertySet CLSID \" + CLSID);\n\tNumSets = blob.read_shift(4);\n\tif(NumSets !== 1 && NumSets !== 2) throw new Error(\"Unrecognized #Sets: \" + NumSets);\n\tFMTID0 = blob.read_shift(16); Offset0 = blob.read_shift(4);\n\n\tif(NumSets === 1 && Offset0 !== blob.l) throw new Error(\"Length mismatch: \" + Offset0 + \" !== \" + blob.l);\n\telse if(NumSets === 2) { FMTID1 = blob.read_shift(16); Offset1 = blob.read_shift(4); }\n\tvar PSet0 = parse_PropertySet(blob, PIDSI);\n\n\tvar rval = ({ SystemIdentifier: SystemIdentifier }/*:any*/);\n\tfor(var y in PSet0) rval[y] = PSet0[y];\n\t//rval.blob = blob;\n\trval.FMTID = FMTID0;\n\t//rval.PSet0 = PSet0;\n\tif(NumSets === 1) return rval;\n\tif(Offset1 - blob.l == 2) blob.l += 2;\n\tif(blob.l !== Offset1) throw new Error(\"Length mismatch 2: \" + blob.l + \" !== \" + Offset1);\n\tvar PSet1;\n\ttry { PSet1 = parse_PropertySet(blob, null); } catch(e) {/* empty */}\n\tfor(y in PSet1) rval[y] = PSet1[y];\n\trval.FMTID = [FMTID0, FMTID1]; // TODO: verify FMTID0/1\n\treturn rval;\n}\nfunction write_PropertySetStream(entries, clsid, RE, PIDSI/*:{[key:string|number]:any}*/, entries2/*:?any*/, clsid2/*:?any*/) {\n\tvar hdr = new_buf(entries2 ? 68 : 48);\n\tvar bufs = [hdr];\n\thdr.write_shift(2, 0xFFFE);\n\thdr.write_shift(2, 0x0000); /* TODO: type 1 props */\n\thdr.write_shift(4, 0x32363237);\n\thdr.write_shift(16, CFB.utils.consts.HEADER_CLSID, \"hex\");\n\thdr.write_shift(4, (entries2 ? 2 : 1));\n\thdr.write_shift(16, clsid, \"hex\");\n\thdr.write_shift(4, (entries2 ? 68 : 48));\n\tvar ps0 = write_PropertySet(entries, RE, PIDSI);\n\tbufs.push(ps0);\n\n\tif(entries2) {\n\t\tvar ps1 = write_PropertySet(entries2, null, null);\n\t\thdr.write_shift(16, clsid2, \"hex\");\n\t\thdr.write_shift(4, 68 + ps0.length);\n\t\tbufs.push(ps1);\n\t}\n\treturn bconcat(bufs);\n}\n\nfunction parsenoop2(blob, length) { blob.read_shift(length); return null; }\nfunction writezeroes(n, o) { if(!o) o=new_buf(n); for(var j=0; j<n; ++j) o.write_shift(1, 0); return o; }\n\nfunction parslurp(blob, length, cb) {\n\tvar arr = [], target = blob.l + length;\n\twhile(blob.l < target) arr.push(cb(blob, target - blob.l));\n\tif(target !== blob.l) throw new Error(\"Slurp error\");\n\treturn arr;\n}\n\nfunction parsebool(blob, length/*:number*/) { return blob.read_shift(length) === 0x1; }\nfunction writebool(v/*:any*/, o) { if(!o) o=new_buf(2); o.write_shift(2, +!!v); return o; }\n\nfunction parseuint16(blob/*::, length:?number, opts:?any*/) { return blob.read_shift(2, 'u'); }\nfunction writeuint16(v/*:number*/, o) { if(!o) o=new_buf(2); o.write_shift(2, v); return o; }\nfunction parseuint16a(blob, length/*:: :?number, opts:?any*/) { return parslurp(blob,length,parseuint16);}\n\n/* --- 2.5 Structures --- */\n\n/* [MS-XLS] 2.5.10 Bes (boolean or error) */\nfunction parse_Bes(blob/*::, length*/) {\n\tvar v = blob.read_shift(1), t = blob.read_shift(1);\n\treturn t === 0x01 ? v : v === 0x01;\n}\nfunction write_Bes(v, t/*:string*/, o) {\n\tif(!o) o = new_buf(2);\n\to.write_shift(1, ((t == 'e') ? +v : +!!v));\n\to.write_shift(1, ((t == 'e') ? 1 : 0));\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.240 ShortXLUnicodeString */\nfunction parse_ShortXLUnicodeString(blob, length, opts) {\n\tvar cch = blob.read_shift(opts && opts.biff >= 12 ? 2 : 1);\n\tvar encoding = 'sbcs-cont';\n\tvar cp = current_codepage;\n\tif(opts && opts.biff >= 8) current_codepage = 1200;\n\tif(!opts || opts.biff == 8 ) {\n\t\tvar fHighByte = blob.read_shift(1);\n\t\tif(fHighByte) { encoding = 'dbcs-cont'; }\n\t} else if(opts.biff == 12) {\n\t\tencoding = 'wstr';\n\t}\n\tif(opts.biff >= 2 && opts.biff <= 5) encoding = 'cpstr';\n\tvar o = cch ? blob.read_shift(cch, encoding) : \"\";\n\tcurrent_codepage = cp;\n\treturn o;\n}\n\n/* 2.5.293 XLUnicodeRichExtendedString */\nfunction parse_XLUnicodeRichExtendedString(blob) {\n\tvar cp = current_codepage;\n\tcurrent_codepage = 1200;\n\tvar cch = blob.read_shift(2), flags = blob.read_shift(1);\n\tvar /*fHighByte = flags & 0x1,*/ fExtSt = flags & 0x4, fRichSt = flags & 0x8;\n\tvar width = 1 + (flags & 0x1); // 0x0 -> utf8, 0x1 -> dbcs\n\tvar cRun = 0, cbExtRst;\n\tvar z = {};\n\tif(fRichSt) cRun = blob.read_shift(2);\n\tif(fExtSt) cbExtRst = blob.read_shift(4);\n\tvar encoding = width == 2 ? 'dbcs-cont' : 'sbcs-cont';\n\tvar msg = cch === 0 ? \"\" : blob.read_shift(cch, encoding);\n\tif(fRichSt) blob.l += 4 * cRun; //TODO: parse this\n\tif(fExtSt) blob.l += cbExtRst; //TODO: parse this\n\tz.t = msg;\n\tif(!fRichSt) { z.raw = \"<t>\" + z.t + \"</t>\"; z.r = z.t; }\n\tcurrent_codepage = cp;\n\treturn z;\n}\nfunction write_XLUnicodeRichExtendedString(xlstr/*:: :XLString, opts*/) {\n\tvar str = (xlstr.t||\"\"), nfmts = 1;\n\n\tvar hdr = new_buf(3 + (nfmts > 1 ? 2 : 0));\n\thdr.write_shift(2, str.length);\n\thdr.write_shift(1, (nfmts > 1 ? 0x08 : 0x00) | 0x01);\n\tif(nfmts > 1) hdr.write_shift(2, nfmts);\n\n\tvar otext = new_buf(2 * str.length);\n\totext.write_shift(2 * str.length, str, 'utf16le');\n\n\tvar out = [hdr, otext];\n\n\treturn bconcat(out);\n}\n\n/* 2.5.296 XLUnicodeStringNoCch */\nfunction parse_XLUnicodeStringNoCch(blob, cch, opts) {\n\tvar retval;\n\tif(opts) {\n\t\tif(opts.biff >= 2 && opts.biff <= 5) return blob.read_shift(cch, 'cpstr');\n\t\tif(opts.biff >= 12) return blob.read_shift(cch, 'dbcs-cont');\n\t}\n\tvar fHighByte = blob.read_shift(1);\n\tif(fHighByte===0) { retval = blob.read_shift(cch, 'sbcs-cont'); }\n\telse { retval = blob.read_shift(cch, 'dbcs-cont'); }\n\treturn retval;\n}\n\n/* 2.5.294 XLUnicodeString */\nfunction parse_XLUnicodeString(blob, length, opts) {\n\tvar cch = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn parse_XLUnicodeStringNoCch(blob, cch, opts);\n}\n/* BIFF5 override */\nfunction parse_XLUnicodeString2(blob, length, opts) {\n\tif(opts.biff > 5) return parse_XLUnicodeString(blob, length, opts);\n\tvar cch = blob.read_shift(1);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn blob.read_shift(cch, (opts.biff <= 4 || !blob.lens ) ? 'cpstr' : 'sbcs-cont');\n}\n/* TODO: BIFF5 and lower, codepage awareness */\nfunction write_XLUnicodeString(str, opts, o) {\n\tif(!o) o = new_buf(3 + 2 * str.length);\n\to.write_shift(2, str.length);\n\to.write_shift(1, 1);\n\to.write_shift(31, str, 'utf16le');\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.61 ControlInfo */\nfunction parse_ControlInfo(blob/*::, length, opts*/) {\n\tvar flags = blob.read_shift(1);\n\tblob.l++;\n\tvar accel = blob.read_shift(2);\n\tblob.l += 2;\n\treturn [flags, accel];\n}\n\n/* [MS-OSHARED] 2.3.7.6 URLMoniker TODO: flags */\nfunction parse_URLMoniker(blob/*::, length, opts*/) {\n\tvar len = blob.read_shift(4), start = blob.l;\n\tvar extra = false;\n\tif(len > 24) {\n\t\t/* look ahead */\n\t\tblob.l += len - 24;\n\t\tif(blob.read_shift(16) === \"795881f43b1d7f48af2c825dc4852763\") extra = true;\n\t\tblob.l = start;\n\t}\n\tvar url = blob.read_shift((extra?len-24:len)>>1, 'utf16le').replace(chr0,\"\");\n\tif(extra) blob.l += 24;\n\treturn url;\n}\n\n/* [MS-OSHARED] 2.3.7.8 FileMoniker TODO: all fields */\nfunction parse_FileMoniker(blob/*::, length*/) {\n\tvar cAnti = blob.read_shift(2);\n\tvar preamble = \"\"; while(cAnti-- > 0) preamble += \"../\";\n\tvar ansiPath = blob.read_shift(0, 'lpstr-ansi');\n\tblob.l += 2; //var endServer = blob.read_shift(2);\n\tif(blob.read_shift(2) != 0xDEAD) throw new Error(\"Bad FileMoniker\");\n\tvar sz = blob.read_shift(4);\n\tif(sz === 0) return preamble + ansiPath.replace(/\\\\/g,\"/\");\n\tvar bytes = blob.read_shift(4);\n\tif(blob.read_shift(2) != 3) throw new Error(\"Bad FileMoniker\");\n\tvar unicodePath = blob.read_shift(bytes>>1, 'utf16le').replace(chr0,\"\");\n\treturn preamble + unicodePath;\n}\n\n/* [MS-OSHARED] 2.3.7.2 HyperlinkMoniker TODO: all the monikers */\nfunction parse_HyperlinkMoniker(blob, length) {\n\tvar clsid = blob.read_shift(16); length -= 16;\n\tswitch(clsid) {\n\t\tcase \"e0c9ea79f9bace118c8200aa004ba90b\": return parse_URLMoniker(blob, length);\n\t\tcase \"0303000000000000c000000000000046\": return parse_FileMoniker(blob, length);\n\t\tdefault: throw new Error(\"Unsupported Moniker \" + clsid);\n\t}\n}\n\n/* [MS-OSHARED] 2.3.7.9 HyperlinkString */\nfunction parse_HyperlinkString(blob/*::, length*/) {\n\tvar len = blob.read_shift(4);\n\tvar o = len > 0 ? blob.read_shift(len, 'utf16le').replace(chr0, \"\") : \"\";\n\treturn o;\n}\nfunction write_HyperlinkString(str/*:string*/, o) {\n\tif(!o) o = new_buf(6 + str.length * 2);\n\to.write_shift(4, 1 + str.length);\n\tfor(var i = 0; i < str.length; ++i) o.write_shift(2, str.charCodeAt(i));\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-OSHARED] 2.3.7.1 Hyperlink Object */\nfunction parse_Hyperlink(blob, length)/*:Hyperlink*/ {\n\tvar end = blob.l + length;\n\tvar sVer = blob.read_shift(4);\n\tif(sVer !== 2) throw new Error(\"Unrecognized streamVersion: \" + sVer);\n\tvar flags = blob.read_shift(2);\n\tblob.l += 2;\n\tvar displayName, targetFrameName, moniker, oleMoniker, Loc=\"\", guid, fileTime;\n\tif(flags & 0x0010) displayName = parse_HyperlinkString(blob, end - blob.l);\n\tif(flags & 0x0080) targetFrameName = parse_HyperlinkString(blob, end - blob.l);\n\tif((flags & 0x0101) === 0x0101) moniker = parse_HyperlinkString(blob, end - blob.l);\n\tif((flags & 0x0101) === 0x0001) oleMoniker = parse_HyperlinkMoniker(blob, end - blob.l);\n\tif(flags & 0x0008) Loc = parse_HyperlinkString(blob, end - blob.l);\n\tif(flags & 0x0020) guid = blob.read_shift(16);\n\tif(flags & 0x0040) fileTime = parse_FILETIME(blob/*, 8*/);\n\tblob.l = end;\n\tvar target = targetFrameName||moniker||oleMoniker||\"\";\n\tif(target && Loc) target+=\"#\"+Loc;\n\tif(!target) target = \"#\" + Loc;\n\tif((flags & 0x0002) && target.charAt(0) == \"/\" && target.charAt(1) != \"/\") target = \"file://\" + target;\n\tvar out = ({Target:target}/*:any*/);\n\tif(guid) out.guid = guid;\n\tif(fileTime) out.time = fileTime;\n\tif(displayName) out.Tooltip = displayName;\n\treturn out;\n}\nfunction write_Hyperlink(hl) {\n\tvar out = new_buf(512), i = 0;\n\tvar Target = hl.Target;\n\tif(Target.slice(0,7) == \"file://\") Target = Target.slice(7);\n\tvar hashidx = Target.indexOf(\"#\");\n\tvar F = hashidx > -1 ? 0x1f : 0x17;\n\tswitch(Target.charAt(0)) { case \"#\": F=0x1c; break; case \".\": F&=~2; break; }\n\tout.write_shift(4,2); out.write_shift(4, F);\n\tvar data = [8,6815827,6619237,4849780,83]; for(i = 0; i < data.length; ++i) out.write_shift(4, data[i]);\n\tif(F == 0x1C) {\n\t\tTarget = Target.slice(1);\n\t\twrite_HyperlinkString(Target, out);\n\t} else if(F & 0x02) {\n\t\tdata = \"e0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b\".split(\" \");\n\t\tfor(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16));\n\t\tvar Pretarget = hashidx > -1 ? Target.slice(0, hashidx) : Target;\n\t\tout.write_shift(4, 2*(Pretarget.length + 1));\n\t\tfor(i = 0; i < Pretarget.length; ++i) out.write_shift(2, Pretarget.charCodeAt(i));\n\t\tout.write_shift(2, 0);\n\t\tif(F & 0x08) write_HyperlinkString(hashidx > -1 ? Target.slice(hashidx+1): \"\", out);\n\t} else {\n\t\tdata = \"03 03 00 00 00 00 00 00 c0 00 00 00 00 00 00 46\".split(\" \");\n\t\tfor(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16));\n\t\tvar P = 0;\n\t\twhile(Target.slice(P*3,P*3+3)==\"../\"||Target.slice(P*3,P*3+3)==\"..\\\\\") ++P;\n\t\tout.write_shift(2, P);\n\t\tout.write_shift(4, Target.length - 3 * P + 1);\n\t\tfor(i = 0; i < Target.length - 3 * P; ++i) out.write_shift(1, Target.charCodeAt(i + 3 * P) & 0xFF);\n\t\tout.write_shift(1, 0);\n\t\tout.write_shift(2, 0xFFFF);\n\t\tout.write_shift(2, 0xDEAD);\n\t\tfor(i = 0; i < 6; ++i) out.write_shift(4, 0);\n\t}\n\treturn out.slice(0, out.l);\n}\n\n/* 2.5.178 LongRGBA */\nfunction parse_LongRGBA(blob/*::, length*/) { var r = blob.read_shift(1), g = blob.read_shift(1), b = blob.read_shift(1), a = blob.read_shift(1); return [r,g,b,a]; }\n\n/* 2.5.177 LongRGB */\nfunction parse_LongRGB(blob, length) { var x = parse_LongRGBA(blob, length); x[3] = 0; return x; }\n\n\n/* [MS-XLS] 2.5.19 */\nfunction parse_XLSCell(blob/*::, length*/)/*:Cell*/ {\n\tvar rw = blob.read_shift(2); // 0-indexed\n\tvar col = blob.read_shift(2);\n\tvar ixfe = blob.read_shift(2);\n\treturn ({r:rw, c:col, ixfe:ixfe}/*:any*/);\n}\nfunction write_XLSCell(R/*:number*/, C/*:number*/, ixfe/*:?number*/, o) {\n\tif(!o) o = new_buf(6);\n\to.write_shift(2, R);\n\to.write_shift(2, C);\n\to.write_shift(2, ixfe||0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.134 */\nfunction parse_frtHeader(blob) {\n\tvar rt = blob.read_shift(2);\n\tvar flags = blob.read_shift(2); // TODO: parse these flags\n\tblob.l += 8;\n\treturn {type: rt, flags: flags};\n}\n\n\n\nfunction parse_OptXLUnicodeString(blob, length, opts) { return length === 0 ? \"\" : parse_XLUnicodeString2(blob, length, opts); }\n\n/* [MS-XLS] 2.5.344 */\nfunction parse_XTI(blob, length, opts) {\n\tvar w = opts.biff > 8 ? 4 : 2;\n\tvar iSupBook = blob.read_shift(w), itabFirst = blob.read_shift(w,'i'), itabLast = blob.read_shift(w,'i');\n\treturn [iSupBook, itabFirst, itabLast];\n}\n\n/* [MS-XLS] 2.5.218 */\nfunction parse_RkRec(blob) {\n\tvar ixfe = blob.read_shift(2);\n\tvar RK = parse_RkNumber(blob);\n\treturn [ixfe, RK];\n}\n\n/* [MS-XLS] 2.5.1 */\nfunction parse_AddinUdf(blob, length, opts) {\n\tblob.l += 4; length -= 4;\n\tvar l = blob.l + length;\n\tvar udfName = parse_ShortXLUnicodeString(blob, length, opts);\n\tvar cb = blob.read_shift(2);\n\tl -= blob.l;\n\tif(cb !== l) throw new Error(\"Malformed AddinUdf: padding = \" + l + \" != \" + cb);\n\tblob.l += cb;\n\treturn udfName;\n}\n\n/* [MS-XLS] 2.5.209 TODO: Check sizes */\nfunction parse_Ref8U(blob/*::, length*/) {\n\tvar rwFirst = blob.read_shift(2);\n\tvar rwLast = blob.read_shift(2);\n\tvar colFirst = blob.read_shift(2);\n\tvar colLast = blob.read_shift(2);\n\treturn {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}};\n}\nfunction write_Ref8U(r/*:Range*/, o) {\n\tif(!o) o = new_buf(8);\n\to.write_shift(2, r.s.r);\n\to.write_shift(2, r.e.r);\n\to.write_shift(2, r.s.c);\n\to.write_shift(2, r.e.c);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.211 */\nfunction parse_RefU(blob/*::, length*/) {\n\tvar rwFirst = blob.read_shift(2);\n\tvar rwLast = blob.read_shift(2);\n\tvar colFirst = blob.read_shift(1);\n\tvar colLast = blob.read_shift(1);\n\treturn {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}};\n}\n\n/* [MS-XLS] 2.5.207 */\nvar parse_Ref = parse_RefU;\n\n/* [MS-XLS] 2.5.143 */\nfunction parse_FtCmo(blob/*::, length*/) {\n\tblob.l += 4;\n\tvar ot = blob.read_shift(2);\n\tvar id = blob.read_shift(2);\n\tvar flags = blob.read_shift(2);\n\tblob.l+=12;\n\treturn [id, ot, flags];\n}\n\n/* [MS-XLS] 2.5.149 */\nfunction parse_FtNts(blob) {\n\tvar out = {};\n\tblob.l += 4;\n\tblob.l += 16; // GUID TODO\n\tout.fSharedNote = blob.read_shift(2);\n\tblob.l += 4;\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.142 */\nfunction parse_FtCf(blob) {\n\tvar out = {};\n\tblob.l += 4;\n\tblob.cf = blob.read_shift(2);\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.140 - 2.5.154 and friends */\nfunction parse_FtSkip(blob) { blob.l += 2; blob.l += blob.read_shift(2); }\nvar FtTab = {\n\t/*::[*/0x00/*::]*/: parse_FtSkip,      /* FtEnd */\n\t/*::[*/0x04/*::]*/: parse_FtSkip,      /* FtMacro */\n\t/*::[*/0x05/*::]*/: parse_FtSkip,      /* FtButton */\n\t/*::[*/0x06/*::]*/: parse_FtSkip,      /* FtGmo */\n\t/*::[*/0x07/*::]*/: parse_FtCf,        /* FtCf */\n\t/*::[*/0x08/*::]*/: parse_FtSkip,      /* FtPioGrbit */\n\t/*::[*/0x09/*::]*/: parse_FtSkip,      /* FtPictFmla */\n\t/*::[*/0x0A/*::]*/: parse_FtSkip,      /* FtCbls */\n\t/*::[*/0x0B/*::]*/: parse_FtSkip,      /* FtRbo */\n\t/*::[*/0x0C/*::]*/: parse_FtSkip,      /* FtSbs */\n\t/*::[*/0x0D/*::]*/: parse_FtNts,       /* FtNts */\n\t/*::[*/0x0E/*::]*/: parse_FtSkip,      /* FtSbsFmla */\n\t/*::[*/0x0F/*::]*/: parse_FtSkip,      /* FtGboData */\n\t/*::[*/0x10/*::]*/: parse_FtSkip,      /* FtEdoData */\n\t/*::[*/0x11/*::]*/: parse_FtSkip,      /* FtRboData */\n\t/*::[*/0x12/*::]*/: parse_FtSkip,      /* FtCblsData */\n\t/*::[*/0x13/*::]*/: parse_FtSkip,      /* FtLbsData */\n\t/*::[*/0x14/*::]*/: parse_FtSkip,      /* FtCblsFmla */\n\t/*::[*/0x15/*::]*/: parse_FtCmo\n};\nfunction parse_FtArray(blob, length/*::, ot*/) {\n\tvar tgt = blob.l + length;\n\tvar fts = [];\n\twhile(blob.l < tgt) {\n\t\tvar ft = blob.read_shift(2);\n\t\tblob.l-=2;\n\t\ttry {\n\t\t\tfts.push(FtTab[ft](blob, tgt - blob.l));\n\t\t} catch(e) { blob.l = tgt; return fts; }\n\t}\n\tif(blob.l != tgt) blob.l = tgt; //throw new Error(\"bad Object Ft-sequence\");\n\treturn fts;\n}\n\n/* --- 2.4 Records --- */\n\n/* [MS-XLS] 2.4.21 */\nfunction parse_BOF(blob, length) {\n\tvar o = {BIFFVer:0, dt:0};\n\to.BIFFVer = blob.read_shift(2); length -= 2;\n\tif(length >= 2) { o.dt = blob.read_shift(2); blob.l -= 2; }\n\tswitch(o.BIFFVer) {\n\t\tcase 0x0600: /* BIFF8 */\n\t\tcase 0x0500: /* BIFF5 */\n\t\tcase 0x0400: /* BIFF4 */\n\t\tcase 0x0300: /* BIFF3 */\n\t\tcase 0x0200: /* BIFF2 */\n\t\tcase 0x0002: case 0x0007: /* BIFF2 */\n\t\t\tbreak;\n\t\tdefault: if(length > 6) throw new Error(\"Unexpected BIFF Ver \" + o.BIFFVer);\n\t}\n\n\tblob.read_shift(length);\n\treturn o;\n}\nfunction write_BOF(wb/*:Workbook*/, t/*:number*/, o) {\n\tvar h = 0x0600, w = 16;\n\tswitch(o.bookType) {\n\t\tcase 'biff8': break;\n\t\tcase 'biff5': h = 0x0500; w = 8; break;\n\t\tcase 'biff4': h = 0x0004; w = 6; break;\n\t\tcase 'biff3': h = 0x0003; w = 6; break;\n\t\tcase 'biff2': h = 0x0002; w = 4; break;\n\t\tcase 'xla': break;\n\t\tdefault: throw new Error(\"unsupported BIFF version\");\n\t}\n\tvar out = new_buf(w);\n\tout.write_shift(2, h);\n\tout.write_shift(2, t);\n\tif(w > 4) out.write_shift(2, 0x7262);\n\tif(w > 6) out.write_shift(2, 0x07CD);\n\tif(w > 8) {\n\t\tout.write_shift(2, 0xC009);\n\t\tout.write_shift(2, 0x0001);\n\t\tout.write_shift(2, 0x0706);\n\t\tout.write_shift(2, 0x0000);\n\t}\n\treturn out;\n}\n\n\n/* [MS-XLS] 2.4.146 */\nfunction parse_InterfaceHdr(blob, length) {\n\tif(length === 0) return 0x04b0;\n\tif((blob.read_shift(2))!==0x04b0){/* empty */}\n\treturn 0x04b0;\n}\n\n\n/* [MS-XLS] 2.4.349 */\nfunction parse_WriteAccess(blob, length, opts) {\n\tif(opts.enc) { blob.l += length; return \"\"; }\n\tvar l = blob.l;\n\t// TODO: make sure XLUnicodeString doesnt overrun\n\tvar UserName = parse_XLUnicodeString2(blob, 0, opts);\n\tblob.read_shift(length + l - blob.l);\n\treturn UserName;\n}\nfunction write_WriteAccess(s/*:string*/, opts) {\n\tvar b8 = !opts || opts.biff == 8;\n\tvar o = new_buf(b8 ? 112 : 54);\n\to.write_shift(opts.biff == 8 ? 2 : 1, 7);\n\tif(b8) o.write_shift(1, 0);\n\to.write_shift(4, 0x33336853);\n\to.write_shift(4, (0x00534A74 | (b8 ? 0 : 0x20000000)));\n\twhile(o.l < o.length) o.write_shift(1, (b8 ? 0 : 32));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.351 */\nfunction parse_WsBool(blob, length, opts) {\n\tvar flags = opts && opts.biff == 8 || length == 2 ? blob.read_shift(2) : (blob.l += length, 0);\n\treturn { fDialog: flags & 0x10, fBelow: flags & 0x40, fRight: flags & 0x80 };\n}\n\n/* [MS-XLS] 2.4.28 */\nfunction parse_BoundSheet8(blob, length, opts) {\n\tvar pos = blob.read_shift(4);\n\tvar hidden = blob.read_shift(1) & 0x03;\n\tvar dt = blob.read_shift(1);\n\tswitch(dt) {\n\t\tcase 0: dt = 'Worksheet'; break;\n\t\tcase 1: dt = 'Macrosheet'; break;\n\t\tcase 2: dt = 'Chartsheet'; break;\n\t\tcase 6: dt = 'VBAModule'; break;\n\t}\n\tvar name = parse_ShortXLUnicodeString(blob, 0, opts);\n\tif(name.length === 0) name = \"Sheet1\";\n\treturn { pos:pos, hs:hidden, dt:dt, name:name };\n}\nfunction write_BoundSheet8(data, opts) {\n\tvar w = (!opts || opts.biff >= 8 ? 2 : 1);\n\tvar o = new_buf(8 + w * data.name.length);\n\to.write_shift(4, data.pos);\n\to.write_shift(1, data.hs || 0);\n\to.write_shift(1, data.dt);\n\to.write_shift(1, data.name.length);\n\tif(opts.biff >= 8) o.write_shift(1, 1);\n\to.write_shift(w * data.name.length, data.name, opts.biff < 8 ? 'sbcs' : 'utf16le');\n\tvar out = o.slice(0, o.l);\n\tout.l = o.l; return out;\n}\n\n/* [MS-XLS] 2.4.265 TODO */\nfunction parse_SST(blob, length)/*:SST*/ {\n\tvar end = blob.l + length;\n\tvar cnt = blob.read_shift(4);\n\tvar ucnt = blob.read_shift(4);\n\tvar strs/*:SST*/ = ([]/*:any*/);\n\tfor(var i = 0; i != ucnt && blob.l < end; ++i) {\n\t\tstrs.push(parse_XLUnicodeRichExtendedString(blob));\n\t}\n\tstrs.Count = cnt; strs.Unique = ucnt;\n\treturn strs;\n}\nfunction write_SST(sst, opts) {\n\tvar header = new_buf(8);\n\theader.write_shift(4, sst.Count);\n\theader.write_shift(4, sst.Unique);\n\tvar strs = [];\n\tfor(var j = 0; j < sst.length; ++j) strs[j] = write_XLUnicodeRichExtendedString(sst[j], opts);\n\tvar o = bconcat([header].concat(strs));\n\t/*::(*/o/*:: :any)*/.parts = [header.length].concat(strs.map(function(str) { return str.length; }));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.107 */\nfunction parse_ExtSST(blob, length) {\n\tvar extsst = {};\n\textsst.dsst = blob.read_shift(2);\n\tblob.l += length-2;\n\treturn extsst;\n}\n\n\n/* [MS-XLS] 2.4.221 TODO: check BIFF2-4 */\nfunction parse_Row(blob) {\n\tvar z = ({}/*:any*/);\n\tz.r = blob.read_shift(2);\n\tz.c = blob.read_shift(2);\n\tz.cnt = blob.read_shift(2) - z.c;\n\tvar miyRw = blob.read_shift(2);\n\tblob.l += 4; // reserved(2), unused(2)\n\tvar flags = blob.read_shift(1); // various flags\n\tblob.l += 3; // reserved(8), ixfe(12), flags(4)\n\tif(flags & 0x07) z.level = flags & 0x07;\n\t// collapsed: flags & 0x10\n\tif(flags & 0x20) z.hidden = true;\n\tif(flags & 0x40) z.hpt = miyRw / 20;\n\treturn z;\n}\n\n\n/* [MS-XLS] 2.4.125 */\nfunction parse_ForceFullCalculation(blob) {\n\tvar header = parse_frtHeader(blob);\n\tif(header.type != 0x08A3) throw new Error(\"Invalid Future Record \" + header.type);\n\tvar fullcalc = blob.read_shift(4);\n\treturn fullcalc !== 0x0;\n}\n\n\n\n\n\n/* [MS-XLS] 2.4.215 rt */\nfunction parse_RecalcId(blob) {\n\tblob.read_shift(2);\n\treturn blob.read_shift(4);\n}\n\n/* [MS-XLS] 2.4.87 */\nfunction parse_DefaultRowHeight(blob, length, opts) {\n\tvar f = 0;\n\tif(!(opts && opts.biff == 2)) {\n\t\tf = blob.read_shift(2);\n\t}\n\tvar miyRw = blob.read_shift(2);\n\tif((opts && opts.biff == 2)) {\n\t\tf = 1 - (miyRw >> 15); miyRw &= 0x7fff;\n\t}\n\tvar fl = {Unsynced:f&1,DyZero:(f&2)>>1,ExAsc:(f&4)>>2,ExDsc:(f&8)>>3};\n\treturn [fl, miyRw];\n}\n\n/* [MS-XLS] 2.4.345 TODO */\nfunction parse_Window1(blob) {\n\tvar xWn = blob.read_shift(2), yWn = blob.read_shift(2), dxWn = blob.read_shift(2), dyWn = blob.read_shift(2);\n\tvar flags = blob.read_shift(2), iTabCur = blob.read_shift(2), iTabFirst = blob.read_shift(2);\n\tvar ctabSel = blob.read_shift(2), wTabRatio = blob.read_shift(2);\n\treturn { Pos: [xWn, yWn], Dim: [dxWn, dyWn], Flags: flags, CurTab: iTabCur,\n\t\tFirstTab: iTabFirst, Selected: ctabSel, TabRatio: wTabRatio };\n}\nfunction write_Window1(/*::opts*/) {\n\tvar o = new_buf(18);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0x7260);\n\to.write_shift(2, 0x44c0);\n\to.write_shift(2, 0x38);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 1);\n\to.write_shift(2, 0x01f4);\n\treturn o;\n}\n/* [MS-XLS] 2.4.346 TODO */\nfunction parse_Window2(blob, length, opts) {\n\tif(opts && opts.biff >= 2 && opts.biff < 5) return {};\n\tvar f = blob.read_shift(2);\n\treturn { RTL: f & 0x40 };\n}\nfunction write_Window2(view) {\n\tvar o = new_buf(18), f = 0x6b6;\n\tif(view && view.RTL) f |= 0x40;\n\to.write_shift(2, f);\n\to.write_shift(4, 0);\n\to.write_shift(4, 64);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.189 TODO */\nfunction parse_Pane(/*blob, length, opts*/) {\n}\n\n/* [MS-XLS] 2.4.122 TODO */\nfunction parse_Font(blob, length, opts) {\n\tvar o/*:any*/ = {\n\t\tdyHeight: blob.read_shift(2),\n\t\tfl: blob.read_shift(2)\n\t};\n\tswitch((opts && opts.biff) || 8) {\n\t\tcase 2: break;\n\t\tcase 3: case 4: blob.l += 2; break;\n\t\tdefault: blob.l += 10; break;\n\t}\n\to.name = parse_ShortXLUnicodeString(blob, 0, opts);\n\treturn o;\n}\nfunction write_Font(data, opts) {\n\tvar name = data.name || \"Arial\";\n\tvar b5 = (opts && (opts.biff == 5)), w = (b5 ? (15 + name.length) : (16 + 2 * name.length));\n\tvar o = new_buf(w);\n\to.write_shift(2, (data.sz || 12) * 20);\n\to.write_shift(4, 0);\n\to.write_shift(2, 400);\n\to.write_shift(4, 0);\n\to.write_shift(2, 0);\n\to.write_shift(1, name.length);\n\tif(!b5) o.write_shift(1, 1);\n\to.write_shift((b5 ? 1 : 2) * name.length, name, (b5 ? \"sbcs\" : \"utf16le\"));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.149 */\nfunction parse_LabelSst(blob) {\n\tvar cell = parse_XLSCell(blob);\n\tcell.isst = blob.read_shift(4);\n\treturn cell;\n}\nfunction write_LabelSst(R/*:number*/, C/*:number*/, v/*:number*/, os/*:number*/ /*::, opts*/) {\n\tvar o = new_buf(10);\n\twrite_XLSCell(R, C, os, o);\n\to.write_shift(4, v);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.148 */\nfunction parse_Label(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 2) opts.biff = 5;\n\tvar target = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2) blob.l++;\n\tvar str = parse_XLUnicodeString(blob, target - blob.l, opts);\n\tcell.val = str;\n\treturn cell;\n}\nfunction write_Label(R/*:number*/, C/*:number*/, v/*:string*/, os/*:number*/, opts) {\n\tvar b8 = !opts || opts.biff == 8;\n\tvar o = new_buf(6 + 2 + (+b8) + (1 + b8) * v.length);\n\twrite_XLSCell(R, C, os, o);\n\to.write_shift(2, v.length);\n\tif(b8) o.write_shift(1, 1);\n\to.write_shift((1 + b8) * v.length, v, b8 ? 'utf16le' : 'sbcs');\n\treturn o;\n}\n\n\n/* [MS-XLS] 2.4.126 Number Formats */\nfunction parse_Format(blob, length, opts) {\n\tvar numFmtId = blob.read_shift(2);\n\tvar fmtstr = parse_XLUnicodeString2(blob, 0, opts);\n\treturn [numFmtId, fmtstr];\n}\nfunction write_Format(i/*:number*/, f/*:string*/, opts, o) {\n\tvar b5 = (opts && (opts.biff == 5));\n\tif(!o) o = new_buf(b5 ? (3 + f.length) : (5 + 2 * f.length));\n\to.write_shift(2, i);\n\to.write_shift((b5 ? 1 : 2), f.length);\n\tif(!b5) o.write_shift(1, 1);\n\to.write_shift((b5 ? 1 : 2) * f.length, f, (b5 ? 'sbcs' : 'utf16le'));\n\tvar out = (o.length > o.l) ? o.slice(0, o.l) : o;\n\tif(out.l == null) out.l = out.length;\n\treturn out;\n}\nvar parse_BIFF2Format = parse_XLUnicodeString2;\n\n/* [MS-XLS] 2.4.90 */\nfunction parse_Dimensions(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar w = opts.biff == 8 || !opts.biff ? 4 : 2;\n\tvar r = blob.read_shift(w), R = blob.read_shift(w);\n\tvar c = blob.read_shift(2), C = blob.read_shift(2);\n\tblob.l = end;\n\treturn {s: {r:r, c:c}, e: {r:R, c:C}};\n}\nfunction write_Dimensions(range, opts) {\n\tvar w = opts.biff == 8 || !opts.biff ? 4 : 2;\n\tvar o = new_buf(2*w + 6);\n\to.write_shift(w, range.s.r);\n\to.write_shift(w, range.e.r + 1);\n\to.write_shift(2, range.s.c);\n\to.write_shift(2, range.e.c + 1);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.220 */\nfunction parse_RK(blob) {\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar rkrec = parse_RkRec(blob);\n\treturn {r:rw, c:col, ixfe:rkrec[0], rknum:rkrec[1]};\n}\n\n/* [MS-XLS] 2.4.175 */\nfunction parse_MulRk(blob, length) {\n\tvar target = blob.l + length - 2;\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar rkrecs = [];\n\twhile(blob.l < target) rkrecs.push(parse_RkRec(blob));\n\tif(blob.l !== target) throw new Error(\"MulRK read error\");\n\tvar lastcol = blob.read_shift(2);\n\tif(rkrecs.length != lastcol - col + 1) throw new Error(\"MulRK length mismatch\");\n\treturn {r:rw, c:col, C:lastcol, rkrec:rkrecs};\n}\n/* [MS-XLS] 2.4.174 */\nfunction parse_MulBlank(blob, length) {\n\tvar target = blob.l + length - 2;\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar ixfes = [];\n\twhile(blob.l < target) ixfes.push(blob.read_shift(2));\n\tif(blob.l !== target) throw new Error(\"MulBlank read error\");\n\tvar lastcol = blob.read_shift(2);\n\tif(ixfes.length != lastcol - col + 1) throw new Error(\"MulBlank length mismatch\");\n\treturn {r:rw, c:col, C:lastcol, ixfe:ixfes};\n}\n\n/* [MS-XLS] 2.5.20 2.5.249 TODO: interpret values here */\nfunction parse_CellStyleXF(blob, length, style, opts) {\n\tvar o = {};\n\tvar a = blob.read_shift(4), b = blob.read_shift(4);\n\tvar c = blob.read_shift(4), d = blob.read_shift(2);\n\to.patternType = XLSFillPattern[c >> 26];\n\n\tif(!opts.cellStyles) return o;\n\to.alc = a & 0x07;\n\to.fWrap = (a >> 3) & 0x01;\n\to.alcV = (a >> 4) & 0x07;\n\to.fJustLast = (a >> 7) & 0x01;\n\to.trot = (a >> 8) & 0xFF;\n\to.cIndent = (a >> 16) & 0x0F;\n\to.fShrinkToFit = (a >> 20) & 0x01;\n\to.iReadOrder = (a >> 22) & 0x02;\n\to.fAtrNum = (a >> 26) & 0x01;\n\to.fAtrFnt = (a >> 27) & 0x01;\n\to.fAtrAlc = (a >> 28) & 0x01;\n\to.fAtrBdr = (a >> 29) & 0x01;\n\to.fAtrPat = (a >> 30) & 0x01;\n\to.fAtrProt = (a >> 31) & 0x01;\n\n\to.dgLeft = b & 0x0F;\n\to.dgRight = (b >> 4) & 0x0F;\n\to.dgTop = (b >> 8) & 0x0F;\n\to.dgBottom = (b >> 12) & 0x0F;\n\to.icvLeft = (b >> 16) & 0x7F;\n\to.icvRight = (b >> 23) & 0x7F;\n\to.grbitDiag = (b >> 30) & 0x03;\n\n\to.icvTop = c & 0x7F;\n\to.icvBottom = (c >> 7) & 0x7F;\n\to.icvDiag = (c >> 14) & 0x7F;\n\to.dgDiag = (c >> 21) & 0x0F;\n\n\to.icvFore = d & 0x7F;\n\to.icvBack = (d >> 7) & 0x7F;\n\to.fsxButton = (d >> 14) & 0x01;\n\treturn o;\n}\n//function parse_CellXF(blob, length, opts) {return parse_CellStyleXF(blob,length,0, opts);}\n//function parse_StyleXF(blob, length, opts) {return parse_CellStyleXF(blob,length,1, opts);}\n\n/* [MS-XLS] 2.4.353 TODO: actually do this right */\nfunction parse_XF(blob, length, opts) {\n\tvar o = {};\n\to.ifnt = blob.read_shift(2); o.numFmtId = blob.read_shift(2); o.flags = blob.read_shift(2);\n\to.fStyle = (o.flags >> 2) & 0x01;\n\tlength -= 6;\n\to.data = parse_CellStyleXF(blob, length, o.fStyle, opts);\n\treturn o;\n}\nfunction write_XF(data, ixfeP, opts, o) {\n\tvar b5 = (opts && (opts.biff == 5));\n\tif(!o) o = new_buf(b5 ? 16 : 20);\n\to.write_shift(2, 0);\n\tif(data.style) {\n\t\to.write_shift(2, (data.numFmtId||0));\n\t\to.write_shift(2, 0xFFF4);\n\t} else {\n\t\to.write_shift(2, (data.numFmtId||0));\n\t\to.write_shift(2, (ixfeP<<4));\n\t}\n\tvar f = 0;\n\tif(data.numFmtId > 0 && b5) f |= 0x0400;\n\to.write_shift(4, f);\n\to.write_shift(4, 0);\n\tif(!b5) o.write_shift(4, 0);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.134 */\nfunction parse_Guts(blob) {\n\tblob.l += 4;\n\tvar out = [blob.read_shift(2), blob.read_shift(2)];\n\tif(out[0] !== 0) out[0]--;\n\tif(out[1] !== 0) out[1]--;\n\tif(out[0] > 7 || out[1] > 7) throw new Error(\"Bad Gutters: \" + out.join(\"|\"));\n\treturn out;\n}\nfunction write_Guts(guts/*:Array<number>*/) {\n\tvar o = new_buf(8);\n\to.write_shift(4, 0);\n\to.write_shift(2, guts[0] ? guts[0] + 1 : 0);\n\to.write_shift(2, guts[1] ? guts[1] + 1 : 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.24 */\nfunction parse_BoolErr(blob, length, opts) {\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2 || length == 9) ++blob.l;\n\tvar val = parse_Bes(blob, 2);\n\tcell.val = val;\n\tcell.t = (val === true || val === false) ? 'b' : 'e';\n\treturn cell;\n}\nfunction write_BoolErr(R/*:number*/, C/*:number*/, v, os/*:number*/, opts, t/*:string*/) {\n\tvar o = new_buf(8);\n\twrite_XLSCell(R, C, os, o);\n\twrite_Bes(v, t, o);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.180 Number */\nfunction parse_Number(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 2) opts.biff = 5;\n\tvar cell = parse_XLSCell(blob, 6);\n\tvar xnum = parse_Xnum(blob, 8);\n\tcell.val = xnum;\n\treturn cell;\n}\nfunction write_Number(R/*:number*/, C/*:number*/, v, os/*:: :number, opts*/) {\n\tvar o = new_buf(14);\n\twrite_XLSCell(R, C, os, o);\n\twrite_Xnum(v, o);\n\treturn o;\n}\n\nvar parse_XLHeaderFooter = parse_OptXLUnicodeString; // TODO: parse 2.4.136\n\n/* [MS-XLS] 2.4.271 */\nfunction parse_SupBook(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar ctab = blob.read_shift(2);\n\tvar cch = blob.read_shift(2);\n\topts.sbcch = cch;\n\tif(cch == 0x0401 || cch == 0x3A01) return [cch, ctab];\n\tif(cch < 0x01 || cch >0xff) throw new Error(\"Unexpected SupBook type: \"+cch);\n\tvar virtPath = parse_XLUnicodeStringNoCch(blob, cch);\n\t/* TODO: 2.5.277 Virtual Path */\n\tvar rgst = [];\n\twhile(end > blob.l) rgst.push(parse_XLUnicodeString(blob));\n\treturn [cch, ctab, virtPath, rgst];\n}\n\n/* [MS-XLS] 2.4.105 TODO */\nfunction parse_ExternName(blob, length, opts) {\n\tvar flags = blob.read_shift(2);\n\tvar body;\n\tvar o = ({\n\t\tfBuiltIn: flags & 0x01,\n\t\tfWantAdvise: (flags >>> 1) & 0x01,\n\t\tfWantPict: (flags >>> 2) & 0x01,\n\t\tfOle: (flags >>> 3) & 0x01,\n\t\tfOleLink: (flags >>> 4) & 0x01,\n\t\tcf: (flags >>> 5) & 0x3FF,\n\t\tfIcon: flags >>> 15 & 0x01\n\t}/*:any*/);\n\tif(opts.sbcch === 0x3A01) body = parse_AddinUdf(blob, length-2, opts);\n\t//else throw new Error(\"unsupported SupBook cch: \" + opts.sbcch);\n\to.body = body || blob.read_shift(length-2);\n\tif(typeof body === \"string\") o.Name = body;\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.150 TODO */\nvar XLSLblBuiltIn = [\n\t\"_xlnm.Consolidate_Area\",\n\t\"_xlnm.Auto_Open\",\n\t\"_xlnm.Auto_Close\",\n\t\"_xlnm.Extract\",\n\t\"_xlnm.Database\",\n\t\"_xlnm.Criteria\",\n\t\"_xlnm.Print_Area\",\n\t\"_xlnm.Print_Titles\",\n\t\"_xlnm.Recorder\",\n\t\"_xlnm.Data_Form\",\n\t\"_xlnm.Auto_Activate\",\n\t\"_xlnm.Auto_Deactivate\",\n\t\"_xlnm.Sheet_Title\",\n\t\"_xlnm._FilterDatabase\"\n];\nfunction parse_Lbl(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar flags = blob.read_shift(2);\n\tvar chKey = blob.read_shift(1);\n\tvar cch = blob.read_shift(1);\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tvar itab = 0;\n\tif(!opts || opts.biff >= 5) {\n\t\tif(opts.biff != 5) blob.l += 2;\n\t\titab = blob.read_shift(2);\n\t\tif(opts.biff == 5) blob.l += 2;\n\t\tblob.l += 4;\n\t}\n\tvar name = parse_XLUnicodeStringNoCch(blob, cch, opts);\n\tif(flags & 0x20) name = XLSLblBuiltIn[name.charCodeAt(0)];\n\tvar npflen = target - blob.l; if(opts && opts.biff == 2) --npflen;\n\t/*jshint -W018 */\n\tvar rgce = (target == blob.l || cce === 0 || !(npflen > 0)) ? [] : parse_NameParsedFormula(blob, npflen, opts, cce);\n\t/*jshint +W018 */\n\treturn {\n\t\tchKey: chKey,\n\t\tName: name,\n\t\titab: itab,\n\t\trgce: rgce\n\t};\n}\n\n/* [MS-XLS] 2.4.106 TODO: verify filename encoding */\nfunction parse_ExternSheet(blob, length, opts) {\n\tif(opts.biff < 8) return parse_BIFF5ExternSheet(blob, length, opts);\n\tvar o = [], target = blob.l + length, len = blob.read_shift(opts.biff > 8 ? 4 : 2);\n\twhile(len-- !== 0) o.push(parse_XTI(blob, opts.biff > 8 ? 12 : 6, opts));\n\t\t// [iSupBook, itabFirst, itabLast];\n\tif(blob.l != target) throw new Error(\"Bad ExternSheet: \" + blob.l + \" != \" + target);\n\treturn o;\n}\nfunction parse_BIFF5ExternSheet(blob, length, opts) {\n\tif(blob[blob.l + 1] == 0x03) blob[blob.l]++;\n\tvar o = parse_ShortXLUnicodeString(blob, length, opts);\n\treturn o.charCodeAt(0) == 0x03 ? o.slice(1) : o;\n}\n\n/* [MS-XLS] 2.4.176 TODO: check older biff */\nfunction parse_NameCmt(blob, length, opts) {\n\tif(opts.biff < 8) { blob.l += length; return; }\n\tvar cchName = blob.read_shift(2);\n\tvar cchComment = blob.read_shift(2);\n\tvar name = parse_XLUnicodeStringNoCch(blob, cchName, opts);\n\tvar comment = parse_XLUnicodeStringNoCch(blob, cchComment, opts);\n\treturn [name, comment];\n}\n\n/* [MS-XLS] 2.4.260 */\nfunction parse_ShrFmla(blob, length, opts) {\n\tvar ref = parse_RefU(blob, 6);\n\tblob.l++;\n\tvar cUse = blob.read_shift(1);\n\tlength -= 8;\n\treturn [parse_SharedParsedFormula(blob, length, opts), cUse, ref];\n}\n\n/* [MS-XLS] 2.4.4 TODO */\nfunction parse_Array(blob, length, opts) {\n\tvar ref = parse_Ref(blob, 6);\n\t/* TODO: fAlwaysCalc */\n\tswitch(opts.biff) {\n\t\tcase 2: blob.l ++; length -= 7; break;\n\t\tcase 3: case 4: blob.l += 2; length -= 8; break;\n\t\tdefault: blob.l += 6; length -= 12;\n\t}\n\treturn [ref, parse_ArrayParsedFormula(blob, length, opts, ref)];\n}\n\n/* [MS-XLS] 2.4.173 */\nfunction parse_MTRSettings(blob) {\n\tvar fMTREnabled = blob.read_shift(4) !== 0x00;\n\tvar fUserSetThreadCount = blob.read_shift(4) !== 0x00;\n\tvar cUserThreadCount = blob.read_shift(4);\n\treturn [fMTREnabled, fUserSetThreadCount, cUserThreadCount];\n}\n\n/* [MS-XLS] 2.5.186 TODO: BIFF5 */\nfunction parse_NoteSh(blob, length, opts) {\n\tif(opts.biff < 8) return;\n\tvar row = blob.read_shift(2), col = blob.read_shift(2);\n\tvar flags = blob.read_shift(2), idObj = blob.read_shift(2);\n\tvar stAuthor = parse_XLUnicodeString2(blob, 0, opts);\n\tif(opts.biff < 8) blob.read_shift(1);\n\treturn [{r:row,c:col}, stAuthor, idObj, flags];\n}\n\n/* [MS-XLS] 2.4.179 */\nfunction parse_Note(blob, length, opts) {\n\t/* TODO: Support revisions */\n\treturn parse_NoteSh(blob, length, opts);\n}\n\n/* [MS-XLS] 2.4.168 */\nfunction parse_MergeCells(blob, length)/*:Array<Range>*/ {\n\tvar merges/*:Array<Range>*/ = [];\n\tvar cmcs = blob.read_shift(2);\n\twhile (cmcs--) merges.push(parse_Ref8U(blob,length));\n\treturn merges;\n}\nfunction write_MergeCells(merges/*:Array<Range>*/) {\n\tvar o = new_buf(2 + merges.length * 8);\n\to.write_shift(2, merges.length);\n\tfor(var i = 0; i < merges.length; ++i) write_Ref8U(merges[i], o);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.181 TODO: parse all the things! */\nfunction parse_Obj(blob, length, opts) {\n\tif(opts && opts.biff < 8) return parse_BIFF5Obj(blob, length, opts);\n\tvar cmo = parse_FtCmo(blob, 22); // id, ot, flags\n\tvar fts = parse_FtArray(blob, length-22, cmo[1]);\n\treturn { cmo: cmo, ft:fts };\n}\n/* from older spec */\nvar parse_BIFF5OT = {\n0x08: function(blob, length) {\n\tvar tgt = blob.l + length;\n\tblob.l += 10; // todo\n\tvar cf = blob.read_shift(2);\n\tblob.l += 4;\n\tblob.l += 2; //var cbPictFmla = blob.read_shift(2);\n\tblob.l += 2;\n\tblob.l += 2; //var grbit = blob.read_shift(2);\n\tblob.l += 4;\n\tvar cchName = blob.read_shift(1);\n\tblob.l += cchName; // TODO: stName\n\tblob.l = tgt; // TODO: fmla\n\treturn { fmt:cf };\n}\n};\n\nfunction parse_BIFF5Obj(blob, length, opts) {\n\tblob.l += 4; //var cnt = blob.read_shift(4);\n\tvar ot = blob.read_shift(2);\n\tvar id = blob.read_shift(2);\n\tvar grbit = blob.read_shift(2);\n\tblob.l += 2; //var colL = blob.read_shift(2);\n\tblob.l += 2; //var dxL = blob.read_shift(2);\n\tblob.l += 2; //var rwT = blob.read_shift(2);\n\tblob.l += 2; //var dyT = blob.read_shift(2);\n\tblob.l += 2; //var colR = blob.read_shift(2);\n\tblob.l += 2; //var dxR = blob.read_shift(2);\n\tblob.l += 2; //var rwB = blob.read_shift(2);\n\tblob.l += 2; //var dyB = blob.read_shift(2);\n\tblob.l += 2; //var cbMacro = blob.read_shift(2);\n\tblob.l += 6;\n\tlength -= 36;\n\tvar fts = [];\n\tfts.push((parse_BIFF5OT[ot]||parsenoop)(blob, length, opts));\n\treturn { cmo: [id, ot, grbit], ft:fts };\n}\n\n/* [MS-XLS] 2.4.329 TODO: parse properly */\nfunction parse_TxO(blob, length, opts) {\n\tvar s = blob.l;\n\tvar texts = \"\";\ntry {\n\tblob.l += 4;\n\tvar ot = (opts.lastobj||{cmo:[0,0]}).cmo[1];\n\tvar controlInfo; // eslint-disable-line no-unused-vars\n\tif([0,5,7,11,12,14].indexOf(ot) == -1) blob.l += 6;\n\telse controlInfo = parse_ControlInfo(blob, 6, opts); // eslint-disable-line no-unused-vars\n\tvar cchText = blob.read_shift(2);\n\t/*var cbRuns = */blob.read_shift(2);\n\t/*var ifntEmpty = */parseuint16(blob, 2);\n\tvar len = blob.read_shift(2);\n\tblob.l += len;\n\t//var fmla = parse_ObjFmla(blob, s + length - blob.l);\n\n\tfor(var i = 1; i < blob.lens.length-1; ++i) {\n\t\tif(blob.l-s != blob.lens[i]) throw new Error(\"TxO: bad continue record\");\n\t\tvar hdr = blob[blob.l];\n\t\tvar t = parse_XLUnicodeStringNoCch(blob, blob.lens[i+1]-blob.lens[i]-1);\n\t\ttexts += t;\n\t\tif(texts.length >= (hdr ? cchText : 2*cchText)) break;\n\t}\n\tif(texts.length !== cchText && texts.length !== cchText*2) {\n\t\tthrow new Error(\"cchText: \" + cchText + \" != \" + texts.length);\n\t}\n\n\tblob.l = s + length;\n\t/* [MS-XLS] 2.5.272 TxORuns */\n//\tvar rgTxoRuns = [];\n//\tfor(var j = 0; j != cbRuns/8-1; ++j) blob.l += 8;\n//\tvar cchText2 = blob.read_shift(2);\n//\tif(cchText2 !== cchText) throw new Error(\"TxOLastRun mismatch: \" + cchText2 + \" \" + cchText);\n//\tblob.l += 6;\n//\tif(s + length != blob.l) throw new Error(\"TxO \" + (s + length) + \", at \" + blob.l);\n\treturn { t: texts };\n} catch(e) { blob.l = s + length; return { t: texts }; }\n}\n\n/* [MS-XLS] 2.4.140 */\nfunction parse_HLink(blob, length) {\n\tvar ref = parse_Ref8U(blob, 8);\n\tblob.l += 16; /* CLSID */\n\tvar hlink = parse_Hyperlink(blob, length-24);\n\treturn [ref, hlink];\n}\nfunction write_HLink(hl) {\n\tvar O = new_buf(24);\n\tvar ref = decode_cell(hl[0]);\n\tO.write_shift(2, ref.r); O.write_shift(2, ref.r);\n\tO.write_shift(2, ref.c); O.write_shift(2, ref.c);\n\tvar clsid = \"d0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b\".split(\" \");\n\tfor(var i = 0; i < 16; ++i) O.write_shift(1, parseInt(clsid[i], 16));\n\treturn bconcat([O, write_Hyperlink(hl[1])]);\n}\n\n\n/* [MS-XLS] 2.4.141 */\nfunction parse_HLinkTooltip(blob, length) {\n\tblob.read_shift(2);\n\tvar ref = parse_Ref8U(blob, 8);\n\tvar wzTooltip = blob.read_shift((length-10)/2, 'dbcs-cont');\n\twzTooltip = wzTooltip.replace(chr0,\"\");\n\treturn [ref, wzTooltip];\n}\nfunction write_HLinkTooltip(hl) {\n\tvar TT = hl[1].Tooltip;\n\tvar O = new_buf(10 + 2 * (TT.length + 1));\n\tO.write_shift(2, 0x0800);\n\tvar ref = decode_cell(hl[0]);\n\tO.write_shift(2, ref.r); O.write_shift(2, ref.r);\n\tO.write_shift(2, ref.c); O.write_shift(2, ref.c);\n\tfor(var i = 0; i < TT.length; ++i) O.write_shift(2, TT.charCodeAt(i));\n\tO.write_shift(2, 0);\n\treturn O;\n}\n\n/* [MS-XLS] 2.4.63 */\nfunction parse_Country(blob)/*:[string|number, string|number]*/ {\n\tvar o = [0,0], d;\n\td = blob.read_shift(2); o[0] = CountryEnum[d] || d;\n\td = blob.read_shift(2); o[1] = CountryEnum[d] || d;\n\treturn o;\n}\nfunction write_Country(o) {\n\tif(!o) o = new_buf(4);\n\to.write_shift(2, 0x01);\n\to.write_shift(2, 0x01);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.50 ClrtClient */\nfunction parse_ClrtClient(blob) {\n\tvar ccv = blob.read_shift(2);\n\tvar o = [];\n\twhile(ccv-->0) o.push(parse_LongRGB(blob, 8));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.188 */\nfunction parse_Palette(blob) {\n\tvar ccv = blob.read_shift(2);\n\tvar o = [];\n\twhile(ccv-->0) o.push(parse_LongRGB(blob, 8));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.354 */\nfunction parse_XFCRC(blob) {\n\tblob.l += 2;\n\tvar o = {cxfs:0, crc:0};\n\to.cxfs = blob.read_shift(2);\n\to.crc = blob.read_shift(4);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.53 TODO: parse flags */\n/* [MS-XLSB] 2.4.323 TODO: parse flags */\nfunction parse_ColInfo(blob, length, opts) {\n\tif(!opts.cellStyles) return parsenoop(blob, length);\n\tvar w = opts && opts.biff >= 12 ? 4 : 2;\n\tvar colFirst = blob.read_shift(w);\n\tvar colLast = blob.read_shift(w);\n\tvar coldx = blob.read_shift(w);\n\tvar ixfe = blob.read_shift(w);\n\tvar flags = blob.read_shift(2);\n\tif(w == 2) blob.l += 2;\n\tvar o = ({s:colFirst, e:colLast, w:coldx, ixfe:ixfe, flags:flags}/*:any*/);\n\tif(opts.biff >= 5 || !opts.biff) o.level = (flags >> 8) & 0x7;\n\treturn o;\n}\nfunction write_ColInfo(col, idx) {\n\tvar o = new_buf(12);\n\to.write_shift(2, idx);\n\to.write_shift(2, idx);\n\to.write_shift(2, col.width * 256);\n\to.write_shift(2, 0);\n\tvar f = 0;\n\tif(col.hidden) f |= 1;\n\to.write_shift(1, f);\n\tf = col.level || 0;\n\to.write_shift(1, f);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.257 */\nfunction parse_Setup(blob, length) {\n\tvar o = {};\n\tif(length < 32) return o;\n\tblob.l += 16;\n\to.header = parse_Xnum(blob, 8);\n\to.footer = parse_Xnum(blob, 8);\n\tblob.l += 2;\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.261 */\nfunction parse_ShtProps(blob, length, opts) {\n\tvar def = {area:false};\n\tif(opts.biff != 5) { blob.l += length; return def; }\n\tvar d = blob.read_shift(1); blob.l += 3;\n\tif((d & 0x10)) def.area = true;\n\treturn def;\n}\n\n/* [MS-XLS] 2.4.241 */\nfunction write_RRTabId(n/*:number*/) {\n\tvar out = new_buf(2 * n);\n\tfor(var i = 0; i < n; ++i) out.write_shift(2, i+1);\n\treturn out;\n}\n\nvar parse_Blank = parse_XLSCell; /* [MS-XLS] 2.4.20 Just the cell */\nvar parse_Scl = parseuint16a; /* [MS-XLS] 2.4.247 num, den */\nvar parse_String = parse_XLUnicodeString; /* [MS-XLS] 2.4.268 */\n\n/* --- Specific to versions before BIFF8 --- */\nfunction parse_ImData(blob) {\n\tvar cf = blob.read_shift(2);\n\tvar env = blob.read_shift(2);\n\tvar lcb = blob.read_shift(4);\n\tvar o = {fmt:cf, env:env, len:lcb, data:blob.slice(blob.l,blob.l+lcb)};\n\tblob.l += lcb;\n\treturn o;\n}\n\n/* BIFF2_??? where ??? is the name from [XLS] */\nfunction parse_BIFF2STR(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 5) opts.biff = 2;\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar str = parse_XLUnicodeString2(blob, length-7, opts);\n\tcell.t = 'str';\n\tcell.val = str;\n\treturn cell;\n}\n\nfunction parse_BIFF2NUM(blob/*::, length*/) {\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar num = parse_Xnum(blob, 8);\n\tcell.t = 'n';\n\tcell.val = num;\n\treturn cell;\n}\nfunction write_BIFF2NUM(r/*:number*/, c/*:number*/, val/*:number*/) {\n\tvar out = new_buf(15);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(8, val, 'f');\n\treturn out;\n}\n\nfunction parse_BIFF2INT(blob) {\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar num = blob.read_shift(2);\n\tcell.t = 'n';\n\tcell.val = num;\n\treturn cell;\n}\nfunction write_BIFF2INT(r/*:number*/, c/*:number*/, val/*:number*/) {\n\tvar out = new_buf(9);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(2, val);\n\treturn out;\n}\n\nfunction parse_BIFF2STRING(blob) {\n\tvar cch = blob.read_shift(1);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn blob.read_shift(cch, 'sbcs-cont');\n}\n\n/* TODO: convert to BIFF8 font struct */\nfunction parse_BIFF2FONTXTRA(blob, length) {\n\tblob.l += 6; // unknown\n\tblob.l += 2; // font weight \"bls\"\n\tblob.l += 1; // charset\n\tblob.l += 3; // unknown\n\tblob.l += 1; // font family\n\tblob.l += length - 13;\n}\n\n/* TODO: parse rich text runs */\nfunction parse_RString(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tvar cch = blob.read_shift(2);\n\tvar str = parse_XLUnicodeStringNoCch(blob, cch, opts);\n\tblob.l = end;\n\tcell.t = 'str';\n\tcell.val = str;\n\treturn cell;\n}\n/* from js-harb (C) 2014-present  SheetJS */\nvar DBF_SUPPORTED_VERSIONS = [0x02, 0x03, 0x30, 0x31, 0x83, 0x8B, 0x8C, 0xF5];\nvar DBF = /*#__PURE__*/(function() {\nvar dbf_codepage_map = {\n\t/* Code Pages Supported by Visual FoxPro */\n\t/*::[*/0x01/*::]*/:   437,           /*::[*/0x02/*::]*/:   850,\n\t/*::[*/0x03/*::]*/:  1252,           /*::[*/0x04/*::]*/: 10000,\n\t/*::[*/0x64/*::]*/:   852,           /*::[*/0x65/*::]*/:   866,\n\t/*::[*/0x66/*::]*/:   865,           /*::[*/0x67/*::]*/:   861,\n\t/*::[*/0x68/*::]*/:   895,           /*::[*/0x69/*::]*/:   620,\n\t/*::[*/0x6A/*::]*/:   737,           /*::[*/0x6B/*::]*/:   857,\n\t/*::[*/0x78/*::]*/:   950,           /*::[*/0x79/*::]*/:   949,\n\t/*::[*/0x7A/*::]*/:   936,           /*::[*/0x7B/*::]*/:   932,\n\t/*::[*/0x7C/*::]*/:   874,           /*::[*/0x7D/*::]*/:  1255,\n\t/*::[*/0x7E/*::]*/:  1256,           /*::[*/0x96/*::]*/: 10007,\n\t/*::[*/0x97/*::]*/: 10029,           /*::[*/0x98/*::]*/: 10006,\n\t/*::[*/0xC8/*::]*/:  1250,           /*::[*/0xC9/*::]*/:  1251,\n\t/*::[*/0xCA/*::]*/:  1254,           /*::[*/0xCB/*::]*/:  1253,\n\n\t/* shapefile DBF extension */\n\t/*::[*/0x00/*::]*/: 20127,           /*::[*/0x08/*::]*/:   865,\n\t/*::[*/0x09/*::]*/:   437,           /*::[*/0x0A/*::]*/:   850,\n\t/*::[*/0x0B/*::]*/:   437,           /*::[*/0x0D/*::]*/:   437,\n\t/*::[*/0x0E/*::]*/:   850,           /*::[*/0x0F/*::]*/:   437,\n\t/*::[*/0x10/*::]*/:   850,           /*::[*/0x11/*::]*/:   437,\n\t/*::[*/0x12/*::]*/:   850,           /*::[*/0x13/*::]*/:   932,\n\t/*::[*/0x14/*::]*/:   850,           /*::[*/0x15/*::]*/:   437,\n\t/*::[*/0x16/*::]*/:   850,           /*::[*/0x17/*::]*/:   865,\n\t/*::[*/0x18/*::]*/:   437,           /*::[*/0x19/*::]*/:   437,\n\t/*::[*/0x1A/*::]*/:   850,           /*::[*/0x1B/*::]*/:   437,\n\t/*::[*/0x1C/*::]*/:   863,           /*::[*/0x1D/*::]*/:   850,\n\t/*::[*/0x1F/*::]*/:   852,           /*::[*/0x22/*::]*/:   852,\n\t/*::[*/0x23/*::]*/:   852,           /*::[*/0x24/*::]*/:   860,\n\t/*::[*/0x25/*::]*/:   850,           /*::[*/0x26/*::]*/:   866,\n\t/*::[*/0x37/*::]*/:   850,           /*::[*/0x40/*::]*/:   852,\n\t/*::[*/0x4D/*::]*/:   936,           /*::[*/0x4E/*::]*/:   949,\n\t/*::[*/0x4F/*::]*/:   950,           /*::[*/0x50/*::]*/:   874,\n\t/*::[*/0x57/*::]*/:  1252,           /*::[*/0x58/*::]*/:  1252,\n\t/*::[*/0x59/*::]*/:  1252,           /*::[*/0x6C/*::]*/:   863,\n\t/*::[*/0x86/*::]*/:   737,           /*::[*/0x87/*::]*/:   852,\n\t/*::[*/0x88/*::]*/:   857,           /*::[*/0xCC/*::]*/:  1257,\n\n\t/*::[*/0xFF/*::]*/: 16969\n};\nvar dbf_reverse_map = evert({\n\t/*::[*/0x01/*::]*/:   437,           /*::[*/0x02/*::]*/:   850,\n\t/*::[*/0x03/*::]*/:  1252,           /*::[*/0x04/*::]*/: 10000,\n\t/*::[*/0x64/*::]*/:   852,           /*::[*/0x65/*::]*/:   866,\n\t/*::[*/0x66/*::]*/:   865,           /*::[*/0x67/*::]*/:   861,\n\t/*::[*/0x68/*::]*/:   895,           /*::[*/0x69/*::]*/:   620,\n\t/*::[*/0x6A/*::]*/:   737,           /*::[*/0x6B/*::]*/:   857,\n\t/*::[*/0x78/*::]*/:   950,           /*::[*/0x79/*::]*/:   949,\n\t/*::[*/0x7A/*::]*/:   936,           /*::[*/0x7B/*::]*/:   932,\n\t/*::[*/0x7C/*::]*/:   874,           /*::[*/0x7D/*::]*/:  1255,\n\t/*::[*/0x7E/*::]*/:  1256,           /*::[*/0x96/*::]*/: 10007,\n\t/*::[*/0x97/*::]*/: 10029,           /*::[*/0x98/*::]*/: 10006,\n\t/*::[*/0xC8/*::]*/:  1250,           /*::[*/0xC9/*::]*/:  1251,\n\t/*::[*/0xCA/*::]*/:  1254,           /*::[*/0xCB/*::]*/:  1253,\n\t/*::[*/0x00/*::]*/: 20127\n});\n/* TODO: find an actual specification */\nfunction dbf_to_aoa(buf, opts)/*:AOA*/ {\n\tvar out/*:AOA*/ = [];\n\tvar d/*:Block*/ = (new_raw_buf(1)/*:any*/);\n\tswitch(opts.type) {\n\t\tcase 'base64': d = s2a(Base64_decode(buf)); break;\n\t\tcase 'binary': d = s2a(buf); break;\n\t\tcase 'buffer':\n\t\tcase 'array': d = buf; break;\n\t}\n\tprep_blob(d, 0);\n\n\t/* header */\n\tvar ft = d.read_shift(1);\n\tvar memo = !!(ft & 0x88);\n\tvar vfp = false, l7 = false;\n\tswitch(ft) {\n\t\tcase 0x02: break; // dBASE II\n\t\tcase 0x03: break; // dBASE III\n\t\tcase 0x30: vfp = true; memo = true; break; // VFP\n\t\tcase 0x31: vfp = true; memo = true; break; // VFP with autoincrement\n\t\t// 0x43 dBASE IV SQL table files\n\t\t// 0x63 dBASE IV SQL system files\n\t\tcase 0x83: break; // dBASE III with memo\n\t\tcase 0x8B: break; // dBASE IV with memo\n\t\tcase 0x8C: l7 = true; break; // dBASE Level 7 with memo\n\t\t// case 0xCB dBASE IV SQL table files with memo\n\t\tcase 0xF5: break; // FoxPro 2.x with memo\n\t\t// case 0xFB FoxBASE\n\t\tdefault: throw new Error(\"DBF Unsupported Version: \" + ft.toString(16));\n\t}\n\n\tvar nrow = 0, fpos = 0x0209;\n\tif(ft == 0x02) nrow = d.read_shift(2);\n\td.l += 3; // dBASE II stores DDMMYY date, others use YYMMDD\n\tif(ft != 0x02) nrow = d.read_shift(4);\n\tif(nrow > 1048576) nrow = 1e6;\n\n\tif(ft != 0x02) fpos = d.read_shift(2); // header length\n\tvar rlen = d.read_shift(2); // record length\n\n\tvar /*flags = 0,*/ current_cp = opts.codepage || 1252;\n\tif(ft != 0x02) { // 20 reserved bytes\n\t\td.l+=16;\n\t\t/*flags = */d.read_shift(1);\n\t\t//if(memo && ((flags & 0x02) === 0)) throw new Error(\"DBF Flags \" + flags.toString(16) + \" ft \" + ft.toString(16));\n\n\t\t/* codepage present in FoxPro and dBASE Level 7 */\n\t\tif(d[d.l] !== 0) current_cp = dbf_codepage_map[d[d.l]];\n\t\td.l+=1;\n\n\t\td.l+=2;\n\t}\n\tif(l7) d.l += 36; // Level 7: 32 byte \"Language driver name\", 4 byte reserved\n\n/*:: type DBFField = { name:string; len:number; type:string; } */\n\tvar fields/*:Array<DBFField>*/ = [], field/*:DBFField*/ = ({}/*:any*/);\n\tvar hend = Math.min(d.length, (ft == 0x02 ? 0x209 : (fpos - 10 - (vfp ? 264 : 0))));\n\tvar ww = l7 ? 32 : 11;\n\twhile(d.l < hend && d[d.l] != 0x0d) {\n\t\tfield = ({}/*:any*/);\n\t\tfield.name = $cptable.utils.decode(current_cp, d.slice(d.l, d.l+ww)).replace(/[\\u0000\\r\\n].*$/g,\"\");\n\t\td.l += ww;\n\t\tfield.type = String.fromCharCode(d.read_shift(1));\n\t\tif(ft != 0x02 && !l7) field.offset = d.read_shift(4);\n\t\tfield.len = d.read_shift(1);\n\t\tif(ft == 0x02) field.offset = d.read_shift(2);\n\t\tfield.dec = d.read_shift(1);\n\t\tif(field.name.length) fields.push(field);\n\t\tif(ft != 0x02) d.l += l7 ? 13 : 14;\n\t\tswitch(field.type) {\n\t\t\tcase 'B': // Double (VFP) / Binary (dBASE L7)\n\t\t\t\tif((!vfp || field.len != 8) && opts.WTF) console.log('Skipping ' + field.name + ':' + field.type);\n\t\t\t\tbreak;\n\t\t\tcase 'G': // General (FoxPro and dBASE L7)\n\t\t\tcase 'P': // Picture (FoxPro and dBASE L7)\n\t\t\t\tif(opts.WTF) console.log('Skipping ' + field.name + ':' + field.type);\n\t\t\t\tbreak;\n\t\t\tcase '+': // Autoincrement (dBASE L7 only)\n\t\t\tcase '0': // _NullFlags (VFP only)\n\t\t\tcase '@': // Timestamp (dBASE L7 only)\n\t\t\tcase 'C': // Character (dBASE II)\n\t\t\tcase 'D': // Date (dBASE III)\n\t\t\tcase 'F': // Float (dBASE IV)\n\t\t\tcase 'I': // Long (VFP and dBASE L7)\n\t\t\tcase 'L': // Logical (dBASE II)\n\t\t\tcase 'M': // Memo (dBASE III)\n\t\t\tcase 'N': // Number (dBASE II)\n\t\t\tcase 'O': // Double (dBASE L7 only)\n\t\t\tcase 'T': // Datetime (VFP only)\n\t\t\tcase 'Y': // Currency (VFP only)\n\t\t\t\tbreak;\n\t\t\tdefault: throw new Error('Unknown Field Type: ' + field.type);\n\t\t}\n\t}\n\n\tif(d[d.l] !== 0x0D) d.l = fpos-1;\n\tif(d.read_shift(1) !== 0x0D) throw new Error(\"DBF Terminator not found \" + d.l + \" \" + d[d.l]);\n\td.l = fpos;\n\n\t/* data */\n\tvar R = 0, C = 0;\n\tout[0] = [];\n\tfor(C = 0; C != fields.length; ++C) out[0][C] = fields[C].name;\n\twhile(nrow-- > 0) {\n\t\tif(d[d.l] === 0x2A) {\n\t\t\t// TODO: record marked as deleted -- create a hidden row?\n\t\t\td.l+=rlen;\n\t\t\tcontinue;\n\t\t}\n\t\t++d.l;\n\t\tout[++R] = []; C = 0;\n\t\tfor(C = 0; C != fields.length; ++C) {\n\t\t\tvar dd = d.slice(d.l, d.l+fields[C].len); d.l+=fields[C].len;\n\t\t\tprep_blob(dd, 0);\n\t\t\tvar s = $cptable.utils.decode(current_cp, dd);\n\t\t\tswitch(fields[C].type) {\n\t\t\t\tcase 'C':\n\t\t\t\t\t// NOTE: it is conventional to write '  /  /  ' for empty dates\n\t\t\t\t\tif(s.trim().length) out[R][C] = s.replace(/\\s+$/,\"\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'D':\n\t\t\t\t\tif(s.length === 8) out[R][C] = new Date(+s.slice(0,4), +s.slice(4,6)-1, +s.slice(6,8));\n\t\t\t\t\telse out[R][C] = s;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'F': out[R][C] = parseFloat(s.trim()); break;\n\t\t\t\tcase '+': case 'I': out[R][C] = l7 ? dd.read_shift(-4, 'i') ^ 0x80000000 : dd.read_shift(4, 'i'); break;\n\t\t\t\tcase 'L': switch(s.trim().toUpperCase()) {\n\t\t\t\t\tcase 'Y': case 'T': out[R][C] = true; break;\n\t\t\t\t\tcase 'N': case 'F': out[R][C] = false; break;\n\t\t\t\t\tcase '': case '?': break;\n\t\t\t\t\tdefault: throw new Error(\"DBF Unrecognized L:|\" + s + \"|\");\n\t\t\t\t\t} break;\n\t\t\t\tcase 'M': /* TODO: handle memo files */\n\t\t\t\t\tif(!memo) throw new Error(\"DBF Unexpected MEMO for type \" + ft.toString(16));\n\t\t\t\t\tout[R][C] = \"##MEMO##\" + (l7 ? parseInt(s.trim(), 10): dd.read_shift(4));\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'N':\n\t\t\t\t\ts = s.replace(/\\u0000/g,\"\").trim();\n\t\t\t\t\t// NOTE: dBASE II interprets \"  .  \" as 0\n\t\t\t\t\tif(s && s != \".\") out[R][C] = +s || 0; break;\n\t\t\t\tcase '@':\n\t\t\t\t\t// NOTE: dBASE specs appear to be incorrect\n\t\t\t\t\tout[R][C] = new Date(dd.read_shift(-8, 'f') - 0x388317533400);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'T': out[R][C] = new Date((dd.read_shift(4) - 0x253D8C) * 0x5265C00 + dd.read_shift(4)); break;\n\t\t\t\tcase 'Y': out[R][C] = dd.read_shift(4,'i')/1e4 + (dd.read_shift(4, 'i')/1e4)*Math.pow(2,32); break;\n\t\t\t\tcase 'O': out[R][C] = -dd.read_shift(-8, 'f'); break;\n\t\t\t\tcase 'B': if(vfp && fields[C].len == 8) { out[R][C] = dd.read_shift(8,'f'); break; }\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 'G': case 'P': dd.l += fields[C].len; break;\n\t\t\t\tcase '0':\n\t\t\t\t\tif(fields[C].name === '_NullFlags') break;\n\t\t\t\t\t/* falls through */\n\t\t\t\tdefault: throw new Error(\"DBF Unsupported data type \" + fields[C].type);\n\t\t\t}\n\t\t}\n\t}\n\tif(ft != 0x02) if(d.l < d.length && d[d.l++] != 0x1A) throw new Error(\"DBF EOF Marker missing \" + (d.l-1) + \" of \" + d.length + \" \" + d[d.l-1].toString(16));\n\tif(opts && opts.sheetRows) out = out.slice(0, opts.sheetRows);\n\topts.DBF = fields;\n\treturn out;\n}\n\nfunction dbf_to_sheet(buf, opts)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tif(!o.dateNF) o.dateNF = \"yyyymmdd\";\n\tvar ws = aoa_to_sheet(dbf_to_aoa(buf, o), o);\n\tws[\"!cols\"] = o.DBF.map(function(field) { return {\n\t\twch: field.len,\n\t\tDBF: field\n\t};});\n\tdelete o.DBF;\n\treturn ws;\n}\n\nfunction dbf_to_workbook(buf, opts)/*:Workbook*/ {\n\ttry { return sheet_to_workbook(dbf_to_sheet(buf, opts), opts); }\n\tcatch(e) { if(opts && opts.WTF) throw e; }\n\treturn ({SheetNames:[],Sheets:{}});\n}\n\nvar _RLEN = { 'B': 8, 'C': 250, 'L': 1, 'D': 8, '?': 0, '': 0 };\nfunction sheet_to_dbf(ws/*:Worksheet*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\tif(o.type == \"string\") throw new Error(\"Cannot write DBF to JS string\");\n\tvar ba = buf_array();\n\tvar aoa/*:AOA*/ = sheet_to_json(ws, {header:1, raw:true, cellDates:true});\n\tvar headers = aoa[0], data = aoa.slice(1), cols = ws[\"!cols\"] || [];\n\tvar i = 0, j = 0, hcnt = 0, rlen = 1;\n\tfor(i = 0; i < headers.length; ++i) {\n\t\tif(((cols[i]||{}).DBF||{}).name) { headers[i] = cols[i].DBF.name; ++hcnt; continue; }\n\t\tif(headers[i] == null) continue;\n\t\t++hcnt;\n\t\tif(typeof headers[i] === 'number') headers[i] = headers[i].toString(10);\n\t\tif(typeof headers[i] !== 'string') throw new Error(\"DBF Invalid column name \" + headers[i] + \" |\" + (typeof headers[i]) + \"|\");\n\t\tif(headers.indexOf(headers[i]) !== i) for(j=0; j<1024;++j)\n\t\t\tif(headers.indexOf(headers[i] + \"_\" + j) == -1) { headers[i] += \"_\" + j; break; }\n\t}\n\tvar range = safe_decode_range(ws['!ref']);\n\tvar coltypes/*:Array<string>*/ = [];\n\tvar colwidths/*:Array<number>*/ = [];\n\tvar coldecimals/*:Array<number>*/ = [];\n\tfor(i = 0; i <= range.e.c - range.s.c; ++i) {\n\t\tvar guess = '', _guess = '', maxlen = 0;\n\t\tvar col/*:Array<any>*/ = [];\n\t\tfor(j=0; j < data.length; ++j) {\n\t\t\tif(data[j][i] != null) col.push(data[j][i]);\n\t\t}\n\t\tif(col.length == 0 || headers[i] == null) { coltypes[i] = '?'; continue; }\n\t\tfor(j = 0; j < col.length; ++j) {\n\t\t\tswitch(typeof col[j]) {\n\t\t\t\t/* TODO: check if L2 compat is desired */\n\t\t\t\tcase 'number': _guess = 'B'; break;\n\t\t\t\tcase 'string': _guess = 'C'; break;\n\t\t\t\tcase 'boolean': _guess = 'L'; break;\n\t\t\t\tcase 'object': _guess = col[j] instanceof Date ? 'D' : 'C'; break;\n\t\t\t\tdefault: _guess = 'C';\n\t\t\t}\n\t\t\tmaxlen = Math.max(maxlen, String(col[j]).length);\n\t\t\tguess = guess && guess != _guess ? 'C' : _guess;\n\t\t\t//if(guess == 'C') break;\n\t\t}\n\t\tif(maxlen > 250) maxlen = 250;\n\t\t_guess = ((cols[i]||{}).DBF||{}).type;\n\t\t/* TODO: more fine grained control over DBF type resolution */\n\t\tif(_guess == 'C') {\n\t\t\tif(cols[i].DBF.len > maxlen) maxlen = cols[i].DBF.len;\n\t\t}\n\t\tif(guess == 'B' && _guess == 'N') {\n\t\t\tguess = 'N';\n\t\t\tcoldecimals[i] = cols[i].DBF.dec;\n\t\t\tmaxlen = cols[i].DBF.len;\n\t\t}\n\t\tcolwidths[i] = guess == 'C' || _guess == 'N' ? maxlen : (_RLEN[guess] || 0);\n\t\trlen += colwidths[i];\n\t\tcoltypes[i] = guess;\n\t}\n\n\tvar h = ba.next(32);\n\th.write_shift(4, 0x13021130);\n\th.write_shift(4, data.length);\n\th.write_shift(2, 296 + 32 * hcnt);\n\th.write_shift(2, rlen);\n\tfor(i=0; i < 4; ++i) h.write_shift(4, 0);\n\th.write_shift(4, 0x00000000 | ((+dbf_reverse_map[/*::String(*/current_ansi/*::)*/] || 0x03)<<8));\n\n\tfor(i = 0, j = 0; i < headers.length; ++i) {\n\t\tif(headers[i] == null) continue;\n\t\tvar hf = ba.next(32);\n\t\tvar _f = (headers[i].slice(-10) + \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\").slice(0, 11);\n\t\thf.write_shift(1, _f, \"sbcs\");\n\t\thf.write_shift(1, coltypes[i] == '?' ? 'C' : coltypes[i], \"sbcs\");\n\t\thf.write_shift(4, j);\n\t\thf.write_shift(1, colwidths[i] || _RLEN[coltypes[i]] || 0);\n\t\thf.write_shift(1, coldecimals[i] || 0);\n\t\thf.write_shift(1, 0x02);\n\t\thf.write_shift(4, 0);\n\t\thf.write_shift(1, 0);\n\t\thf.write_shift(4, 0);\n\t\thf.write_shift(4, 0);\n\t\tj += (colwidths[i] || _RLEN[coltypes[i]] || 0);\n\t}\n\n\tvar hb = ba.next(264);\n\thb.write_shift(4, 0x0000000D);\n\tfor(i=0; i < 65;++i) hb.write_shift(4, 0x00000000);\n\tfor(i=0; i < data.length; ++i) {\n\t\tvar rout = ba.next(rlen);\n\t\trout.write_shift(1, 0);\n\t\tfor(j=0; j<headers.length; ++j) {\n\t\t\tif(headers[j] == null) continue;\n\t\t\tswitch(coltypes[j]) {\n\t\t\t\tcase 'L': rout.write_shift(1, data[i][j] == null ? 0x3F : data[i][j] ? 0x54 : 0x46); break;\n\t\t\t\tcase 'B': rout.write_shift(8, data[i][j]||0, 'f'); break;\n\t\t\t\tcase 'N':\n\t\t\t\t\tvar _n = \"0\";\n\t\t\t\t\tif(typeof data[i][j] == \"number\") _n = data[i][j].toFixed(coldecimals[j]||0);\n\t\t\t\t\tfor(hcnt=0; hcnt < colwidths[j]-_n.length; ++hcnt) rout.write_shift(1, 0x20);\n\t\t\t\t\trout.write_shift(1, _n, \"sbcs\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'D':\n\t\t\t\t\tif(!data[i][j]) rout.write_shift(8, \"00000000\", \"sbcs\");\n\t\t\t\t\telse {\n\t\t\t\t\t\trout.write_shift(4, (\"0000\"+data[i][j].getFullYear()).slice(-4), \"sbcs\");\n\t\t\t\t\t\trout.write_shift(2, (\"00\"+(data[i][j].getMonth()+1)).slice(-2), \"sbcs\");\n\t\t\t\t\t\trout.write_shift(2, (\"00\"+data[i][j].getDate()).slice(-2), \"sbcs\");\n\t\t\t\t\t} break;\n\t\t\t\tcase 'C':\n\t\t\t\t\tvar _s = String(data[i][j] != null ? data[i][j] : \"\").slice(0, colwidths[j]);\n\t\t\t\t\trout.write_shift(1, _s, \"sbcs\");\n\t\t\t\t\tfor(hcnt=0; hcnt < colwidths[j]-_s.length; ++hcnt) rout.write_shift(1, 0x20); break;\n\t\t\t}\n\t\t}\n\t\t// data\n\t}\n\tba.next(1).write_shift(1, 0x1A);\n\treturn ba.end();\n}\n\treturn {\n\t\tto_workbook: dbf_to_workbook,\n\t\tto_sheet: dbf_to_sheet,\n\t\tfrom_sheet: sheet_to_dbf\n\t};\n})();\n\nvar SYLK = /*#__PURE__*/(function() {\n\t/* TODO: stress test sequences */\n\tvar sylk_escapes = ({\n\t\tAA:'À', BA:'Á', CA:'Â', DA:195, HA:'Ä', JA:197,\n\t\tAE:'È', BE:'É', CE:'Ê',         HE:'Ë',\n\t\tAI:'Ì', BI:'Í', CI:'Î',         HI:'Ï',\n\t\tAO:'Ò', BO:'Ó', CO:'Ô', DO:213, HO:'Ö',\n\t\tAU:'Ù', BU:'Ú', CU:'Û',         HU:'Ü',\n\t\tAa:'à', Ba:'á', Ca:'â', Da:227, Ha:'ä', Ja:229,\n\t\tAe:'è', Be:'é', Ce:'ê',         He:'ë',\n\t\tAi:'ì', Bi:'í', Ci:'î',         Hi:'ï',\n\t\tAo:'ò', Bo:'ó', Co:'ô', Do:245, Ho:'ö',\n\t\tAu:'ù', Bu:'ú', Cu:'û',         Hu:'ü',\n\t\tKC:'Ç', Kc:'ç', q:'æ',  z:'œ',  a:'Æ',  j:'Œ',\n\t\tDN:209, Dn:241, Hy:255,\n\t\tS:169,  c:170,  R:174,  \"B \":180,\n\t\t/*::[*/0/*::]*/:176,    /*::[*/1/*::]*/:177,  /*::[*/2/*::]*/:178,\n\t\t/*::[*/3/*::]*/:179,    /*::[*/5/*::]*/:181,  /*::[*/6/*::]*/:182,\n\t\t/*::[*/7/*::]*/:183,    Q:185,  k:186,  b:208,  i:216,  l:222,  s:240,  y:248,\n\t\t\"!\":161, '\"':162, \"#\":163, \"(\":164, \"%\":165, \"'\":167, \"H \":168,\n\t\t\"+\":171, \";\":187, \"<\":188, \"=\":189, \">\":190, \"?\":191, \"{\":223\n\t}/*:any*/);\n\tvar sylk_char_regex = new RegExp(\"\\u001BN(\" + keys(sylk_escapes).join(\"|\").replace(/\\|\\|\\|/, \"|\\\\||\").replace(/([?()+])/g,\"\\\\$1\") + \"|\\\\|)\", \"gm\");\n\tvar sylk_char_fn = function(_, $1){ var o = sylk_escapes[$1]; return typeof o == \"number\" ? _getansi(o) : o; };\n\tvar decode_sylk_char = function($$, $1, $2) { var newcc = (($1.charCodeAt(0) - 0x20)<<4) | ($2.charCodeAt(0) - 0x30); return newcc == 59 ? $$ : _getansi(newcc); };\n\tsylk_escapes[\"|\"] = 254;\n\t/* TODO: find an actual specification */\n\tfunction sylk_to_aoa(d/*:RawData*/, opts)/*:[AOA, Worksheet]*/ {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return sylk_to_aoa_str(Base64_decode(d), opts);\n\t\t\tcase 'binary': return sylk_to_aoa_str(d, opts);\n\t\t\tcase 'buffer': return sylk_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\n\t\t\tcase 'array': return sylk_to_aoa_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\tfunction sylk_to_aoa_str(str/*:string*/, opts)/*:[AOA, Worksheet]*/ {\n\t\tvar records = str.split(/[\\n\\r]+/), R = -1, C = -1, ri = 0, rj = 0, arr/*:AOA*/ = [];\n\t\tvar formats/*:Array<string>*/ = [];\n\t\tvar next_cell_format/*:string|null*/ = null;\n\t\tvar sht = {}, rowinfo/*:Array<RowInfo>*/ = [], colinfo/*:Array<ColInfo>*/ = [], cw/*:Array<string>*/ = [];\n\t\tvar Mval = 0, j;\n\t\tif(+opts.codepage >= 0) set_cp(+opts.codepage);\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tMval = 0;\n\t\t\tvar rstr=records[ri].trim().replace(/\\x1B([\\x20-\\x2F])([\\x30-\\x3F])/g, decode_sylk_char).replace(sylk_char_regex, sylk_char_fn);\n\t\t\tvar record=rstr.replace(/;;/g, \"\\u0000\").split(\";\").map(function(x) { return x.replace(/\\u0000/g, \";\"); });\n\t\t\tvar RT=record[0], val;\n\t\t\tif(rstr.length > 0) switch(RT) {\n\t\t\tcase 'ID': break; /* header */\n\t\t\tcase 'E': break; /* EOF */\n\t\t\tcase 'B': break; /* dimensions */\n\t\t\tcase 'O': break; /* options? */\n\t\t\tcase 'W': break; /* window? */\n\t\t\tcase 'P':\n\t\t\t\tif(record[1].charAt(0) == 'P')\n\t\t\t\t\tformats.push(rstr.slice(3).replace(/;;/g, \";\"));\n\t\t\t\tbreak;\n\t\t\tcase 'C':\n\t\t\tvar C_seen_K = false, C_seen_X = false, C_seen_S = false, C_seen_E = false, _R = -1, _C = -1;\n\t\t\tfor(rj=1; rj<record.length; ++rj) switch(record[rj].charAt(0)) {\n\t\t\t\tcase 'A': break; // TODO: comment\n\t\t\t\tcase 'X': C = parseInt(record[rj].slice(1))-1; C_seen_X = true; break;\n\t\t\t\tcase 'Y':\n\t\t\t\t\tR = parseInt(record[rj].slice(1))-1; if(!C_seen_X) C = 0;\n\t\t\t\t\tfor(j = arr.length; j <= R; ++j) arr[j] = [];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'K':\n\t\t\t\t\tval = record[rj].slice(1);\n\t\t\t\t\tif(val.charAt(0) === '\"') val = val.slice(1,val.length - 1);\n\t\t\t\t\telse if(val === 'TRUE') val = true;\n\t\t\t\t\telse if(val === 'FALSE') val = false;\n\t\t\t\t\telse if(!isNaN(fuzzynum(val))) {\n\t\t\t\t\t\tval = fuzzynum(val);\n\t\t\t\t\t\tif(next_cell_format !== null && fmt_is_date(next_cell_format)) val = numdate(val);\n\t\t\t\t\t} else if(!isNaN(fuzzydate(val).getDate())) {\n\t\t\t\t\t\tval = parseDate(val);\n\t\t\t\t\t}\n\t\t\t\t\tif(typeof $cptable !== 'undefined' && typeof val == \"string\" && ((opts||{}).type != \"string\") && (opts||{}).codepage) val = $cptable.utils.decode(opts.codepage, val);\n\t\t\t\t\tC_seen_K = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'E':\n\t\t\t\t\tC_seen_E = true;\n\t\t\t\t\tvar formula = rc_to_a1(record[rj].slice(1), {r:R,c:C});\n\t\t\t\t\tarr[R][C] = [arr[R][C], formula];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'S':\n\t\t\t\t\tC_seen_S = true;\n\t\t\t\t\tarr[R][C] = [arr[R][C], \"S5S\"];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'G': break; // unknown\n\t\t\t\tcase 'R': _R = parseInt(record[rj].slice(1))-1; break;\n\t\t\t\tcase 'C': _C = parseInt(record[rj].slice(1))-1; break;\n\t\t\t\tdefault: if(opts && opts.WTF) throw new Error(\"SYLK bad record \" + rstr);\n\t\t\t}\n\t\t\tif(C_seen_K) {\n\t\t\t\tif(arr[R][C] && arr[R][C].length == 2) arr[R][C][0] = val;\n\t\t\t\telse arr[R][C] = val;\n\t\t\t\tnext_cell_format = null;\n\t\t\t}\n\t\t\tif(C_seen_S) {\n\t\t\t\tif(C_seen_E) throw new Error(\"SYLK shared formula cannot have own formula\");\n\t\t\t\tvar shrbase = _R > -1 && arr[_R][_C];\n\t\t\t\tif(!shrbase || !shrbase[1]) throw new Error(\"SYLK shared formula cannot find base\");\n\t\t\t\tarr[R][C][1] = shift_formula_str(shrbase[1], {r: R - _R, c: C - _C});\n\t\t\t}\n\t\t\tbreak;\n\t\t\tcase 'F':\n\t\t\tvar F_seen = 0;\n\t\t\tfor(rj=1; rj<record.length; ++rj) switch(record[rj].charAt(0)) {\n\t\t\t\tcase 'X': C = parseInt(record[rj].slice(1))-1; ++F_seen; break;\n\t\t\t\tcase 'Y':\n\t\t\t\t\tR = parseInt(record[rj].slice(1))-1; /*C = 0;*/\n\t\t\t\t\tfor(j = arr.length; j <= R; ++j) arr[j] = [];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'M': Mval = parseInt(record[rj].slice(1)) / 20; break;\n\t\t\t\tcase 'F': break; /* ??? */\n\t\t\t\tcase 'G': break; /* hide grid */\n\t\t\t\tcase 'P':\n\t\t\t\t\tnext_cell_format = formats[parseInt(record[rj].slice(1))];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'S': break; /* cell style */\n\t\t\t\tcase 'D': break; /* column */\n\t\t\t\tcase 'N': break; /* font */\n\t\t\t\tcase 'W':\n\t\t\t\t\tcw = record[rj].slice(1).split(\" \");\n\t\t\t\t\tfor(j = parseInt(cw[0], 10); j <= parseInt(cw[1], 10); ++j) {\n\t\t\t\t\t\tMval = parseInt(cw[2], 10);\n\t\t\t\t\t\tcolinfo[j-1] = Mval === 0 ? {hidden:true}: {wch:Mval}; process_col(colinfo[j-1]);\n\t\t\t\t\t} break;\n\t\t\t\tcase 'C': /* default column format */\n\t\t\t\t\tC = parseInt(record[rj].slice(1))-1;\n\t\t\t\t\tif(!colinfo[C]) colinfo[C] = {};\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'R': /* row properties */\n\t\t\t\t\tR = parseInt(record[rj].slice(1))-1;\n\t\t\t\t\tif(!rowinfo[R]) rowinfo[R] = {};\n\t\t\t\t\tif(Mval > 0) { rowinfo[R].hpt = Mval; rowinfo[R].hpx = pt2px(Mval); }\n\t\t\t\t\telse if(Mval === 0) rowinfo[R].hidden = true;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: if(opts && opts.WTF) throw new Error(\"SYLK bad record \" + rstr);\n\t\t\t}\n\t\t\tif(F_seen < 1) next_cell_format = null; break;\n\t\t\tdefault: if(opts && opts.WTF) throw new Error(\"SYLK bad record \" + rstr);\n\t\t\t}\n\t\t}\n\t\tif(rowinfo.length > 0) sht['!rows'] = rowinfo;\n\t\tif(colinfo.length > 0) sht['!cols'] = colinfo;\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn [arr, sht];\n\t}\n\n\tfunction sylk_to_sheet(d/*:RawData*/, opts)/*:Worksheet*/ {\n\t\tvar aoasht = sylk_to_aoa(d, opts);\n\t\tvar aoa = aoasht[0], ws = aoasht[1];\n\t\tvar o = aoa_to_sheet(aoa, opts);\n\t\tkeys(ws).forEach(function(k) { o[k] = ws[k]; });\n\t\treturn o;\n\t}\n\n\tfunction sylk_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ { return sheet_to_workbook(sylk_to_sheet(d, opts), opts); }\n\n\tfunction write_ws_cell_sylk(cell/*:Cell*/, ws/*:Worksheet*/, R/*:number*/, C/*:number*//*::, opts*/)/*:string*/ {\n\t\tvar o = \"C;Y\" + (R+1) + \";X\" + (C+1) + \";K\";\n\t\tswitch(cell.t) {\n\t\t\tcase 'n':\n\t\t\t\to += (cell.v||0);\n\t\t\t\tif(cell.f && !cell.F) o += \";E\" + a1_to_rc(cell.f, {r:R, c:C}); break;\n\t\t\tcase 'b': o += cell.v ? \"TRUE\" : \"FALSE\"; break;\n\t\t\tcase 'e': o += cell.w || cell.v; break;\n\t\t\tcase 'd': o += '\"' + (cell.w || cell.v) + '\"'; break;\n\t\t\tcase 's': o += '\"' + cell.v.replace(/\"/g,\"\").replace(/;/g, \";;\") + '\"'; break;\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction write_ws_cols_sylk(out, cols) {\n\t\tcols.forEach(function(col, i) {\n\t\t\tvar rec = \"F;W\" + (i+1) + \" \" + (i+1) + \" \";\n\t\t\tif(col.hidden) rec += \"0\";\n\t\t\telse {\n\t\t\t\tif(typeof col.width == 'number' && !col.wpx) col.wpx = width2px(col.width);\n\t\t\t\tif(typeof col.wpx == 'number' && !col.wch) col.wch = px2char(col.wpx);\n\t\t\t\tif(typeof col.wch == 'number') rec += Math.round(col.wch);\n\t\t\t}\n\t\t\tif(rec.charAt(rec.length - 1) != \" \") out.push(rec);\n\t\t});\n\t}\n\n\tfunction write_ws_rows_sylk(out/*:Array<string>*/, rows/*:Array<RowInfo>*/) {\n\t\trows.forEach(function(row, i) {\n\t\t\tvar rec = \"F;\";\n\t\t\tif(row.hidden) rec += \"M0;\";\n\t\t\telse if(row.hpt) rec += \"M\" + 20 * row.hpt + \";\";\n\t\t\telse if(row.hpx) rec += \"M\" + 20 * px2pt(row.hpx) + \";\";\n\t\t\tif(rec.length > 2) out.push(rec + \"R\" + (i+1));\n\t\t});\n\t}\n\n\tfunction sheet_to_sylk(ws/*:Worksheet*/, opts/*:?any*/)/*:string*/ {\n\t\tvar preamble/*:Array<string>*/ = [\"ID;PWXL;N;E\"], o/*:Array<string>*/ = [];\n\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\tvar dense = Array.isArray(ws);\n\t\tvar RS = \"\\r\\n\";\n\n\t\tpreamble.push(\"P;PGeneral\");\n\t\tpreamble.push(\"F;P0;DG0G8;M255\");\n\t\tif(ws['!cols']) write_ws_cols_sylk(preamble, ws['!cols']);\n\t\tif(ws['!rows']) write_ws_rows_sylk(preamble, ws['!rows']);\n\n\t\tpreamble.push(\"B;Y\" + (r.e.r - r.s.r + 1) + \";X\" + (r.e.c - r.s.c + 1) + \";D\" + [r.s.c,r.s.r,r.e.c,r.e.r].join(\" \"));\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C]: ws[coord];\n\t\t\t\tif(!cell || (cell.v == null && (!cell.f || cell.F))) continue;\n\t\t\t\to.push(write_ws_cell_sylk(cell, ws, R, C, opts));\n\t\t\t}\n\t\t}\n\t\treturn preamble.join(RS) + RS + o.join(RS) + RS + \"E\" + RS;\n\t}\n\n\treturn {\n\t\tto_workbook: sylk_to_workbook,\n\t\tto_sheet: sylk_to_sheet,\n\t\tfrom_sheet: sheet_to_sylk\n\t};\n})();\n\nvar DIF = /*#__PURE__*/(function() {\n\tfunction dif_to_aoa(d/*:RawData*/, opts)/*:AOA*/ {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return dif_to_aoa_str(Base64_decode(d), opts);\n\t\t\tcase 'binary': return dif_to_aoa_str(d, opts);\n\t\t\tcase 'buffer': return dif_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\n\t\t\tcase 'array': return dif_to_aoa_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\tfunction dif_to_aoa_str(str/*:string*/, opts)/*:AOA*/ {\n\t\tvar records = str.split('\\n'), R = -1, C = -1, ri = 0, arr/*:AOA*/ = [];\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tif (records[ri].trim() === 'BOT') { arr[++R] = []; C = 0; continue; }\n\t\t\tif (R < 0) continue;\n\t\t\tvar metadata = records[ri].trim().split(\",\");\n\t\t\tvar type = metadata[0], value = metadata[1];\n\t\t\t++ri;\n\t\t\tvar data = records[ri] || \"\";\n\t\t\twhile(((data.match(/[\"]/g)||[]).length & 1) && ri < records.length - 1) data += \"\\n\" + records[++ri];\n\t\t\tdata = data.trim();\n\t\t\tswitch (+type) {\n\t\t\t\tcase -1:\n\t\t\t\t\tif (data === 'BOT') { arr[++R] = []; C = 0; continue; }\n\t\t\t\t\telse if (data !== 'EOD') throw new Error(\"Unrecognized DIF special command \" + data);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0:\n\t\t\t\t\tif(data === 'TRUE') arr[R][C] = true;\n\t\t\t\t\telse if(data === 'FALSE') arr[R][C] = false;\n\t\t\t\t\telse if(!isNaN(fuzzynum(value))) arr[R][C] = fuzzynum(value);\n\t\t\t\t\telse if(!isNaN(fuzzydate(value).getDate())) arr[R][C] = parseDate(value);\n\t\t\t\t\telse arr[R][C] = value;\n\t\t\t\t\t++C; break;\n\t\t\t\tcase 1:\n\t\t\t\t\tdata = data.slice(1,data.length-1);\n\t\t\t\t\tdata = data.replace(/\"\"/g, '\"');\n\t\t\t\t\tif(DIF_XL && data && data.match(/^=\".*\"$/)) data = data.slice(2, -1);\n\t\t\t\t\tarr[R][C++] = data !== '' ? data : null;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (data === 'EOD') break;\n\t\t}\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn arr;\n\t}\n\n\tfunction dif_to_sheet(str/*:string*/, opts)/*:Worksheet*/ { return aoa_to_sheet(dif_to_aoa(str, opts), opts); }\n\tfunction dif_to_workbook(str/*:string*/, opts)/*:Workbook*/ { return sheet_to_workbook(dif_to_sheet(str, opts), opts); }\n\n\tvar sheet_to_dif = /*#__PURE__*/(function() {\n\t\tvar push_field = function pf(o/*:Array<string>*/, topic/*:string*/, v/*:number*/, n/*:number*/, s/*:string*/) {\n\t\t\to.push(topic);\n\t\t\to.push(v + \",\" + n);\n\t\t\to.push('\"' + s.replace(/\"/g,'\"\"') + '\"');\n\t\t};\n\t\tvar push_value = function po(o/*:Array<string>*/, type/*:number*/, v/*:any*/, s/*:string*/) {\n\t\t\to.push(type + \",\" + v);\n\t\t\to.push(type == 1 ? '\"' + s.replace(/\"/g,'\"\"') + '\"' : s);\n\t\t};\n\t\treturn function sheet_to_dif(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\t\tvar o/*:Array<string>*/ = [];\n\t\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\t\tvar dense = Array.isArray(ws);\n\t\t\tpush_field(o, \"TABLE\", 0, 1, \"sheetjs\");\n\t\t\tpush_field(o, \"VECTORS\", 0, r.e.r - r.s.r + 1,\"\");\n\t\t\tpush_field(o, \"TUPLES\", 0, r.e.c - r.s.c + 1,\"\");\n\t\t\tpush_field(o, \"DATA\", 0, 0,\"\");\n\t\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\t\tpush_value(o, -1, 0, \"BOT\");\n\t\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\t\t\tif(!cell) { push_value(o, 1, 0, \"\"); continue;}\n\t\t\t\t\tswitch(cell.t) {\n\t\t\t\t\t\tcase 'n':\n\t\t\t\t\t\t\tvar val = DIF_XL ? cell.w : cell.v;\n\t\t\t\t\t\t\tif(!val && cell.v != null) val = cell.v;\n\t\t\t\t\t\t\tif(val == null) {\n\t\t\t\t\t\t\t\tif(DIF_XL && cell.f && !cell.F) push_value(o, 1, 0, \"=\" + cell.f);\n\t\t\t\t\t\t\t\telse push_value(o, 1, 0, \"\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse push_value(o, 0, val, \"V\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'b':\n\t\t\t\t\t\t\tpush_value(o, 0, cell.v ? 1 : 0, cell.v ? \"TRUE\" : \"FALSE\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 's':\n\t\t\t\t\t\t\tpush_value(o, 1, 0, (!DIF_XL || isNaN(cell.v)) ? cell.v : '=\"' + cell.v + '\"');\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'd':\n\t\t\t\t\t\t\tif(!cell.w) cell.w = SSF_format(cell.z || table_fmt[14], datenum(parseDate(cell.v)));\n\t\t\t\t\t\t\tif(DIF_XL) push_value(o, 0, cell.w, \"V\");\n\t\t\t\t\t\t\telse push_value(o, 1, 0, cell.w);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault: push_value(o, 1, 0, \"\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tpush_value(o, -1, 0, \"EOD\");\n\t\t\tvar RS = \"\\r\\n\";\n\t\t\tvar oo = o.join(RS);\n\t\t\t//while((oo.length & 0x7F) != 0) oo += \"\\0\";\n\t\t\treturn oo;\n\t\t};\n\t})();\n\treturn {\n\t\tto_workbook: dif_to_workbook,\n\t\tto_sheet: dif_to_sheet,\n\t\tfrom_sheet: sheet_to_dif\n\t};\n})();\n\nvar ETH = /*#__PURE__*/(function() {\n\tfunction decode(s/*:string*/)/*:string*/ { return s.replace(/\\\\b/g,\"\\\\\").replace(/\\\\c/g,\":\").replace(/\\\\n/g,\"\\n\"); }\n\tfunction encode(s/*:string*/)/*:string*/ { return s.replace(/\\\\/g, \"\\\\b\").replace(/:/g, \"\\\\c\").replace(/\\n/g,\"\\\\n\"); }\n\n\tfunction eth_to_aoa(str/*:string*/, opts)/*:AOA*/ {\n\t\tvar records = str.split('\\n'), R = -1, C = -1, ri = 0, arr/*:AOA*/ = [];\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tvar record = records[ri].trim().split(\":\");\n\t\t\tif(record[0] !== 'cell') continue;\n\t\t\tvar addr = decode_cell(record[1]);\n\t\t\tif(arr.length <= addr.r) for(R = arr.length; R <= addr.r; ++R) if(!arr[R]) arr[R] = [];\n\t\t\tR = addr.r; C = addr.c;\n\t\t\tswitch(record[2]) {\n\t\t\t\tcase 't': arr[R][C] = decode(record[3]); break;\n\t\t\t\tcase 'v': arr[R][C] = +record[3]; break;\n\t\t\t\tcase 'vtf': var _f = record[record.length - 1];\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 'vtc':\n\t\t\t\t\tswitch(record[3]) {\n\t\t\t\t\t\tcase 'nl': arr[R][C] = +record[4] ? true : false; break;\n\t\t\t\t\t\tdefault: arr[R][C] = +record[4]; break;\n\t\t\t\t\t}\n\t\t\t\t\tif(record[2] == 'vtf') arr[R][C] = [arr[R][C], _f];\n\t\t\t}\n\t\t}\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn arr;\n\t}\n\n\tfunction eth_to_sheet(d/*:string*/, opts)/*:Worksheet*/ { return aoa_to_sheet(eth_to_aoa(d, opts), opts); }\n\tfunction eth_to_workbook(d/*:string*/, opts)/*:Workbook*/ { return sheet_to_workbook(eth_to_sheet(d, opts), opts); }\n\n\tvar header = [\n\t\t\"socialcalc:version:1.5\",\n\t\t\"MIME-Version: 1.0\",\n\t\t\"Content-Type: multipart/mixed; boundary=SocialCalcSpreadsheetControlSave\"\n\t].join(\"\\n\");\n\n\tvar sep = [\n\t\t\"--SocialCalcSpreadsheetControlSave\",\n\t\t\"Content-type: text/plain; charset=UTF-8\"\n\t].join(\"\\n\") + \"\\n\";\n\n\t/* TODO: the other parts */\n\tvar meta = [\n\t\t\"# SocialCalc Spreadsheet Control Save\",\n\t\t\"part:sheet\"\n\t].join(\"\\n\");\n\n\tvar end = \"--SocialCalcSpreadsheetControlSave--\";\n\n\tfunction sheet_to_eth_data(ws/*:Worksheet*/)/*:string*/ {\n\t\tif(!ws || !ws['!ref']) return \"\";\n\t\tvar o/*:Array<string>*/ = [], oo/*:Array<string>*/ = [], cell, coord = \"\";\n\t\tvar r = decode_range(ws['!ref']);\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tcoord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\t\tif(!cell || cell.v == null || cell.t === 'z') continue;\n\t\t\t\too = [\"cell\", coord, 't'];\n\t\t\t\tswitch(cell.t) {\n\t\t\t\t\tcase 's': case 'str': oo.push(encode(cell.v)); break;\n\t\t\t\t\tcase 'n':\n\t\t\t\t\t\tif(!cell.f) { oo[2]='v'; oo[3]=cell.v; }\n\t\t\t\t\t\telse { oo[2]='vtf'; oo[3]='n'; oo[4]=cell.v; oo[5]=encode(cell.f); }\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'b':\n\t\t\t\t\t\too[2] = 'vt'+(cell.f?'f':'c'); oo[3]='nl'; oo[4]=cell.v?\"1\":\"0\";\n\t\t\t\t\t\too[5] = encode(cell.f||(cell.v?'TRUE':'FALSE'));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\tvar t = datenum(parseDate(cell.v));\n\t\t\t\t\t\too[2] = 'vtc'; oo[3] = 'nd'; oo[4] = \"\"+t;\n\t\t\t\t\t\too[5] = cell.w || SSF_format(cell.z || table_fmt[14], t);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'e': continue;\n\t\t\t\t}\n\t\t\t\to.push(oo.join(\":\"));\n\t\t\t}\n\t\t}\n\t\to.push(\"sheet:c:\" + (r.e.c-r.s.c+1) + \":r:\" + (r.e.r-r.s.r+1) + \":tvf:1\");\n\t\to.push(\"valueformat:1:text-wiki\");\n\t\t//o.push(\"copiedfrom:\" + ws['!ref']); // clipboard only\n\t\treturn o.join(\"\\n\");\n\t}\n\n\tfunction sheet_to_eth(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\treturn [header, sep, meta, sep, sheet_to_eth_data(ws), end].join(\"\\n\");\n\t\t// return [\"version:1.5\", sheet_to_eth_data(ws)].join(\"\\n\"); // clipboard form\n\t}\n\n\treturn {\n\t\tto_workbook: eth_to_workbook,\n\t\tto_sheet: eth_to_sheet,\n\t\tfrom_sheet: sheet_to_eth\n\t};\n})();\n\nvar PRN = /*#__PURE__*/(function() {\n\tfunction set_text_arr(data/*:string*/, arr/*:AOA*/, R/*:number*/, C/*:number*/, o/*:any*/) {\n\t\tif(o.raw) arr[R][C] = data;\n\t\telse if(data === \"\"){/* empty */}\n\t\telse if(data === 'TRUE') arr[R][C] = true;\n\t\telse if(data === 'FALSE') arr[R][C] = false;\n\t\telse if(!isNaN(fuzzynum(data))) arr[R][C] = fuzzynum(data);\n\t\telse if(!isNaN(fuzzydate(data).getDate())) arr[R][C] = parseDate(data);\n\t\telse arr[R][C] = data;\n\t}\n\n\tfunction prn_to_aoa_str(f/*:string*/, opts)/*:AOA*/ {\n\t\tvar o = opts || {};\n\t\tvar arr/*:AOA*/ = ([]/*:any*/);\n\t\tif(!f || f.length === 0) return arr;\n\t\tvar lines = f.split(/[\\r\\n]/);\n\t\tvar L = lines.length - 1;\n\t\twhile(L >= 0 && lines[L].length === 0) --L;\n\t\tvar start = 10, idx = 0;\n\t\tvar R = 0;\n\t\tfor(; R <= L; ++R) {\n\t\t\tidx = lines[R].indexOf(\" \");\n\t\t\tif(idx == -1) idx = lines[R].length; else idx++;\n\t\t\tstart = Math.max(start, idx);\n\t\t}\n\t\tfor(R = 0; R <= L; ++R) {\n\t\t\tarr[R] = [];\n\t\t\t/* TODO: confirm that widths are always 10 */\n\t\t\tvar C = 0;\n\t\t\tset_text_arr(lines[R].slice(0, start).trim(), arr, R, C, o);\n\t\t\tfor(C = 1; C <= (lines[R].length - start)/10 + 1; ++C)\n\t\t\t\tset_text_arr(lines[R].slice(start+(C-1)*10,start+C*10).trim(),arr,R,C,o);\n\t\t}\n\t\tif(o.sheetRows) arr = arr.slice(0, o.sheetRows);\n\t\treturn arr;\n\t}\n\n\t// List of accepted CSV separators\n\tvar guess_seps = {\n\t\t/*::[*/0x2C/*::]*/: ',',\n\t\t/*::[*/0x09/*::]*/: \"\\t\",\n\t\t/*::[*/0x3B/*::]*/: ';',\n\t\t/*::[*/0x7C/*::]*/: '|'\n\t};\n\n\t// CSV separator weights to be used in case of equal numbers\n\tvar guess_sep_weights = {\n\t\t/*::[*/0x2C/*::]*/: 3,\n\t\t/*::[*/0x09/*::]*/: 2,\n\t\t/*::[*/0x3B/*::]*/: 1,\n\t\t/*::[*/0x7C/*::]*/: 0\n\t};\n\n\tfunction guess_sep(str) {\n\t\tvar cnt = {}, instr = false, end = 0, cc = 0;\n\t\tfor(;end < str.length;++end) {\n\t\t\tif((cc=str.charCodeAt(end)) == 0x22) instr = !instr;\n\t\t\telse if(!instr && cc in guess_seps) cnt[cc] = (cnt[cc]||0)+1;\n\t\t}\n\n\t\tcc = [];\n\t\tfor(end in cnt) if ( Object.prototype.hasOwnProperty.call(cnt, end) ) {\n\t\t\tcc.push([ cnt[end], end ]);\n\t\t}\n\n\t\tif ( !cc.length ) {\n\t\t\tcnt = guess_sep_weights;\n\t\t\tfor(end in cnt) if ( Object.prototype.hasOwnProperty.call(cnt, end) ) {\n\t\t\t\tcc.push([ cnt[end], end ]);\n\t\t\t}\n\t\t}\n\n\t\tcc.sort(function(a, b) { return a[0] - b[0] || guess_sep_weights[a[1]] - guess_sep_weights[b[1]]; });\n\n\t\treturn guess_seps[cc.pop()[1]] || 0x2C;\n\t}\n\n\tfunction dsv_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ {\n\t\tvar o = opts || {};\n\t\tvar sep = \"\";\n\t\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\t\tvar ws/*:Worksheet*/ = o.dense ? ([]/*:any*/) : ({}/*:any*/);\n\t\tvar range/*:Range*/ = ({s: {c:0, r:0}, e: {c:0, r:0}}/*:any*/);\n\n\t\tif(str.slice(0,4) == \"sep=\") {\n\t\t\t// If the line ends in \\r\\n\n\t\t\tif(str.charCodeAt(5) == 13 && str.charCodeAt(6) == 10 ) {\n\t\t\t\tsep = str.charAt(4); str = str.slice(7);\n\t\t\t}\n\t\t\t// If line ends in \\r OR \\n\n\t\t\telse if(str.charCodeAt(5) == 13 || str.charCodeAt(5) == 10 ) {\n\t\t\t\tsep = str.charAt(4); str = str.slice(6);\n\t\t\t}\n\t\t\telse sep = guess_sep(str.slice(0,1024));\n\t\t}\n\t\telse if(o && o.FS) sep = o.FS;\n\t\telse sep = guess_sep(str.slice(0,1024));\n\t\tvar R = 0, C = 0, v = 0;\n\t\tvar start = 0, end = 0, sepcc = sep.charCodeAt(0), instr = false, cc=0, startcc=str.charCodeAt(0);\n\t\tstr = str.replace(/\\r\\n/mg, \"\\n\");\n\t\tvar _re/*:?RegExp*/ = o.dateNF != null ? dateNF_regex(o.dateNF) : null;\n\t\tfunction finish_cell() {\n\t\t\tvar s = str.slice(start, end);\n\t\t\tvar cell = ({}/*:any*/);\n\t\t\tif(s.charAt(0) == '\"' && s.charAt(s.length - 1) == '\"') s = s.slice(1,-1).replace(/\"\"/g,'\"');\n\t\t\tif(s.length === 0) cell.t = 'z';\n\t\t\telse if(o.raw) { cell.t = 's'; cell.v = s; }\n\t\t\telse if(s.trim().length === 0) { cell.t = 's'; cell.v = s; }\n\t\t\telse if(s.charCodeAt(0) == 0x3D) {\n\t\t\t\tif(s.charCodeAt(1) == 0x22 && s.charCodeAt(s.length - 1) == 0x22) { cell.t = 's'; cell.v = s.slice(2,-1).replace(/\"\"/g,'\"'); }\n\t\t\t\telse if(fuzzyfmla(s)) { cell.t = 'n'; cell.f = s.slice(1); }\n\t\t\t\telse { cell.t = 's'; cell.v = s; } }\n\t\t\telse if(s == \"TRUE\") { cell.t = 'b'; cell.v = true; }\n\t\t\telse if(s == \"FALSE\") { cell.t = 'b'; cell.v = false; }\n\t\t\telse if(!isNaN(v = fuzzynum(s))) { cell.t = 'n'; if(o.cellText !== false) cell.w = s; cell.v = v; }\n\t\t\telse if(!isNaN(fuzzydate(s).getDate()) || _re && s.match(_re)) {\n\t\t\t\tcell.z = o.dateNF || table_fmt[14];\n\t\t\t\tvar k = 0;\n\t\t\t\tif(_re && s.match(_re)){ s=dateNF_fix(s, o.dateNF, (s.match(_re)||[])); k=1; }\n\t\t\t\tif(o.cellDates) { cell.t = 'd'; cell.v = parseDate(s, k); }\n\t\t\t\telse { cell.t = 'n'; cell.v = datenum(parseDate(s, k)); }\n\t\t\t\tif(o.cellText !== false) cell.w = SSF_format(cell.z, cell.v instanceof Date ? datenum(cell.v):cell.v);\n\t\t\t\tif(!o.cellNF) delete cell.z;\n\t\t\t} else {\n\t\t\t\tcell.t = 's';\n\t\t\t\tcell.v = s;\n\t\t\t}\n\t\t\tif(cell.t == 'z'){}\n\t\t\telse if(o.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = cell; }\n\t\t\telse ws[encode_cell({c:C,r:R})] = cell;\n\t\t\tstart = end+1; startcc = str.charCodeAt(start);\n\t\t\tif(range.e.c < C) range.e.c = C;\n\t\t\tif(range.e.r < R) range.e.r = R;\n\t\t\tif(cc == sepcc) ++C; else { C = 0; ++R; if(o.sheetRows && o.sheetRows <= R) return true; }\n\t\t}\n\t\touter: for(;end < str.length;++end) switch((cc=str.charCodeAt(end))) {\n\t\t\tcase 0x22: if(startcc === 0x22) instr = !instr; break;\n\t\t\tcase sepcc: case 0x0a: case 0x0d: if(!instr && finish_cell()) break outer; break;\n\t\t\tdefault: break;\n\t\t}\n\t\tif(end - start > 0) finish_cell();\n\n\t\tws['!ref'] = encode_range(range);\n\t\treturn ws;\n\t}\n\n\tfunction prn_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ {\n\t\tif(!(opts && opts.PRN)) return dsv_to_sheet_str(str, opts);\n\t\tif(opts.FS) return dsv_to_sheet_str(str, opts);\n\t\tif(str.slice(0,4) == \"sep=\") return dsv_to_sheet_str(str, opts);\n\t\tif(str.indexOf(\"\\t\") >= 0 || str.indexOf(\",\") >= 0 || str.indexOf(\";\") >= 0) return dsv_to_sheet_str(str, opts);\n\t\treturn aoa_to_sheet(prn_to_aoa_str(str, opts), opts);\n\t}\n\n\tfunction prn_to_sheet(d/*:RawData*/, opts)/*:Worksheet*/ {\n\t\tvar str = \"\", bytes = opts.type == 'string' ? [0,0,0,0] : firstbyte(d, opts);\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': str = Base64_decode(d); break;\n\t\t\tcase 'binary': str = d; break;\n\t\t\tcase 'buffer':\n\t\t\t\tif(opts.codepage == 65001) str = d.toString('utf8'); // TODO: test if buf\n\t\t\t\telse if(opts.codepage && typeof $cptable !== 'undefined') str = $cptable.utils.decode(opts.codepage, d);\n\t\t\t\telse str = has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d);\n\t\t\t\tbreak;\n\t\t\tcase 'array': str = cc2str(d); break;\n\t\t\tcase 'string': str = d; break;\n\t\t\tdefault: throw new Error(\"Unrecognized type \" + opts.type);\n\t\t}\n\t\tif(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str.slice(3));\n\t\telse if(opts.type != 'string' && opts.type != 'buffer' && opts.codepage == 65001) str = utf8read(str);\n\t\telse if((opts.type == 'binary') && typeof $cptable !== 'undefined' && opts.codepage)  str = $cptable.utils.decode(opts.codepage, $cptable.utils.encode(28591,str));\n\t\tif(str.slice(0,19) == \"socialcalc:version:\") return ETH.to_sheet(opts.type == 'string' ? str : utf8read(str), opts);\n\t\treturn prn_to_sheet_str(str, opts);\n\t}\n\n\tfunction prn_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ { return sheet_to_workbook(prn_to_sheet(d, opts), opts); }\n\n\tfunction sheet_to_prn(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\tvar o/*:Array<string>*/ = [];\n\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tvar oo/*:Array<string>*/ = [];\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\t\tif(!cell || cell.v == null) { oo.push(\"          \"); continue; }\n\t\t\t\tvar w = (cell.w || (format_cell(cell), cell.w) || \"\").slice(0,10);\n\t\t\t\twhile(w.length < 10) w += \" \";\n\t\t\t\too.push(w + (C === 0 ? \" \" : \"\"));\n\t\t\t}\n\t\t\to.push(oo.join(\"\"));\n\t\t}\n\t\treturn o.join(\"\\n\");\n\t}\n\n\treturn {\n\t\tto_workbook: prn_to_workbook,\n\t\tto_sheet: prn_to_sheet,\n\t\tfrom_sheet: sheet_to_prn\n\t};\n})();\n\n/* Excel defaults to SYLK but warns if data is not valid */\nfunction read_wb_ID(d, opts) {\n\tvar o = opts || {}, OLD_WTF = !!o.WTF; o.WTF = true;\n\ttry {\n\t\tvar out = SYLK.to_workbook(d, o);\n\t\to.WTF = OLD_WTF;\n\t\treturn out;\n\t} catch(e) {\n\t\to.WTF = OLD_WTF;\n\t\tif(!e.message.match(/SYLK bad record ID/) && OLD_WTF) throw e;\n\t\treturn PRN.to_workbook(d, opts);\n\t}\n}\n\nvar WK_ = /*#__PURE__*/(function() {\n\tfunction lotushopper(data, cb/*:RecordHopperCB*/, opts/*:any*/) {\n\t\tif(!data) return;\n\t\tprep_blob(data, data.l || 0);\n\t\tvar Enum = opts.Enum || WK1Enum;\n\t\twhile(data.l < data.length) {\n\t\t\tvar RT = data.read_shift(2);\n\t\t\tvar R = Enum[RT] || Enum[0xFFFF];\n\t\t\tvar length = data.read_shift(2);\n\t\t\tvar tgt = data.l + length;\n\t\t\tvar d = R.f && R.f(data, length, opts);\n\t\t\tdata.l = tgt;\n\t\t\tif(cb(d, R, RT)) return;\n\t\t}\n\t}\n\n\tfunction lotus_to_workbook(d/*:RawData*/, opts) {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return lotus_to_workbook_buf(s2a(Base64_decode(d)), opts);\n\t\t\tcase 'binary': return lotus_to_workbook_buf(s2a(d), opts);\n\t\t\tcase 'buffer':\n\t\t\tcase 'array': return lotus_to_workbook_buf(d, opts);\n\t\t}\n\t\tthrow \"Unsupported type \" + opts.type;\n\t}\n\n\tfunction lotus_to_workbook_buf(d, opts)/*:Workbook*/ {\n\t\tif(!d) return d;\n\t\tvar o = opts || {};\n\t\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\t\tvar s/*:Worksheet*/ = ((o.dense ? [] : {})/*:any*/), n = \"Sheet1\", next_n = \"\", sidx = 0;\n\t\tvar sheets = {}, snames = [], realnames = [];\n\n\t\tvar refguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\tvar sheetRows = o.sheetRows || 0;\n\n\t\tif(d[2] == 0x00) {\n\t\t\tif(d[3] == 0x08 || d[3] == 0x09) {\n\t\t\t\tif(d.length >= 16 && d[14] == 0x05 && d[15] === 0x6c) throw new Error(\"Unsupported Works 3 for Mac file\");\n\t\t\t}\n\t\t}\n\n\t\tif(d[2] == 0x02) {\n\t\t\to.Enum = WK1Enum;\n\t\t\tlotushopper(d, function(val, R, RT) { switch(RT) {\n\t\t\t\tcase 0x00: /* BOF */\n\t\t\t\t\to.vers = val;\n\t\t\t\t\tif(val >= 0x1000) o.qpro = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x06: refguess = val; break; /* RANGE */\n\t\t\t\tcase 0xCC: if(val) next_n = val; break; /* SHEETNAMECS */\n\t\t\t\tcase 0xDE: next_n = val; break; /* SHEETNAMELP */\n\t\t\t\tcase 0x0F: /* LABEL */\n\t\t\t\tcase 0x33: /* STRING */\n\t\t\t\t\tif(!o.qpro) val[1].v = val[1].v.slice(1);\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 0x0D: /* INTEGER */\n\t\t\t\tcase 0x0E: /* NUMBER */\n\t\t\t\tcase 0x10: /* FORMULA */\n\t\t\t\t\t/* TODO: actual translation of the format code */\n\t\t\t\t\tif(RT == 0x0E && (val[2] & 0x70) == 0x70 && (val[2] & 0x0F) > 1 && (val[2] & 0x0F) < 15) {\n\t\t\t\t\t\tval[1].z = o.dateNF || table_fmt[14];\n\t\t\t\t\t\tif(o.cellDates) { val[1].t = 'd'; val[1].v = numdate(val[1].v); }\n\t\t\t\t\t}\n\n\t\t\t\t\tif(o.qpro) {\n\t\t\t\t\t\tif(val[3] > sidx) {\n\t\t\t\t\t\t\ts[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t\t\tsheets[n] = s;\n\t\t\t\t\t\t\tsnames.push(n);\n\t\t\t\t\t\t\ts = (o.dense ? [] : {});\n\t\t\t\t\t\t\trefguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\t\t\t\t\t\tsidx = val[3]; n = next_n || \"Sheet\" + (sidx + 1); next_n = \"\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tvar tmpcell = o.dense ? (s[val[0].r]||[])[val[0].c] : s[encode_cell(val[0])];\n\t\t\t\t\tif(tmpcell) {\n\t\t\t\t\t\ttmpcell.t = val[1].t; tmpcell.v = val[1].v;\n\t\t\t\t\t\tif(val[1].z != null) tmpcell.z = val[1].z;\n\t\t\t\t\t\tif(val[1].f != null) tmpcell.f = val[1].f;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif(o.dense) {\n\t\t\t\t\t\tif(!s[val[0].r]) s[val[0].r] = [];\n\t\t\t\t\t\ts[val[0].r][val[0].c] = val[1];\n\t\t\t\t\t} else s[encode_cell(val[0])] = val[1];\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t}}, o);\n\t\t} else if(d[2] == 0x1A || d[2] == 0x0E) {\n\t\t\to.Enum = WK3Enum;\n\t\t\tif(d[2] == 0x0E) { o.qpro = true; d.l = 0; }\n\t\t\tlotushopper(d, function(val, R, RT) { switch(RT) {\n\t\t\t\tcase 0xCC: n = val; break; /* SHEETNAMECS */\n\t\t\t\tcase 0x16: /* LABEL16 */\n\t\t\t\t\tval[1].v = val[1].v.slice(1);\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 0x17: /* NUMBER17 */\n\t\t\t\tcase 0x18: /* NUMBER18 */\n\t\t\t\tcase 0x19: /* FORMULA19 */\n\t\t\t\tcase 0x25: /* NUMBER25 */\n\t\t\t\tcase 0x27: /* NUMBER27 */\n\t\t\t\tcase 0x28: /* FORMULA28 */\n\t\t\t\t\tif(val[3] > sidx) {\n\t\t\t\t\t\ts[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t\tsheets[n] = s;\n\t\t\t\t\t\tsnames.push(n);\n\t\t\t\t\t\ts = (o.dense ? [] : {});\n\t\t\t\t\t\trefguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\t\t\t\t\tsidx = val[3]; n = \"Sheet\" + (sidx + 1);\n\t\t\t\t\t}\n\t\t\t\t\tif(sheetRows > 0 && val[0].r >= sheetRows) break;\n\t\t\t\t\tif(o.dense) {\n\t\t\t\t\t\tif(!s[val[0].r]) s[val[0].r] = [];\n\t\t\t\t\t\ts[val[0].r][val[0].c] = val[1];\n\t\t\t\t\t} else s[encode_cell(val[0])] = val[1];\n\t\t\t\t\tif(refguess.e.c < val[0].c) refguess.e.c = val[0].c;\n\t\t\t\t\tif(refguess.e.r < val[0].r) refguess.e.r = val[0].r;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x1B: /* XFORMAT */\n\t\t\t\t\tif(val[0x36b0]) realnames[val[0x36b0][0]] = val[0x36b0][1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0601: /* SHEETINFOQP */\n\t\t\t\t\trealnames[val[0]] = val[1]; if(val[0] == sidx) n = val[1]; break;\n\t\t\t\tdefault: break;\n\t\t\t}}, o);\n\t\t} else throw new Error(\"Unrecognized LOTUS BOF \" + d[2]);\n\t\ts[\"!ref\"] = encode_range(refguess);\n\t\tsheets[next_n || n] = s;\n\t\tsnames.push(next_n || n);\n\t\tif(!realnames.length) return { SheetNames: snames, Sheets: sheets };\n\t\tvar osheets = {}, rnames = [];\n\t\t/* TODO: verify no collisions */\n\t\tfor(var i = 0; i < realnames.length; ++i) if(sheets[snames[i]]) {\n\t\t\trnames.push(realnames[i] || snames[i]);\n\t\t\tosheets[realnames[i]] = sheets[realnames[i]] || sheets[snames[i]];\n\t\t} else {\n\t\t\trnames.push(realnames[i]);\n\t\t\tosheets[realnames[i]] = ({ \"!ref\": \"A1\" });\n\t\t}\n\t\treturn { SheetNames: rnames, Sheets: osheets };\n\t}\n\n\tfunction sheet_to_wk1(ws/*:Worksheet*/, opts/*:WriteOpts*/) {\n\t\tvar o = opts || {};\n\t\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\t\tif(o.type == \"string\") throw new Error(\"Cannot write WK1 to JS string\");\n\t\tvar ba = buf_array();\n\t\tvar range = safe_decode_range(ws[\"!ref\"]);\n\t\tvar dense = Array.isArray(ws);\n\t\tvar cols = [];\n\n\t\twrite_biff_rec(ba, 0x00, write_BOF_WK1(0x0406));\n\t\twrite_biff_rec(ba, 0x06, write_RANGE(range));\n\t\tvar max_R = Math.min(range.e.r, 8191);\n\t\tfor(var R = range.s.r; R <= max_R; ++R) {\n\t\t\tvar rr = encode_row(R);\n\t\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\t\tvar ref = cols[C] + rr;\n\t\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\t\tif(!cell || cell.t == \"z\") continue;\n\t\t\t\t/* TODO: formula records */\n\t\t\t\tif(cell.t == \"n\") {\n\t\t\t\t\tif((cell.v|0)==cell.v && cell.v >= -32768 && cell.v <= 32767) write_biff_rec(ba, 0x0d, write_INTEGER(R, C, cell.v));\n\t\t\t\t\telse write_biff_rec(ba, 0x0e, write_NUMBER(R, C, cell.v));\n\t\t\t\t} else {\n\t\t\t\t\tvar str = format_cell(cell);\n\t\t\t\t\twrite_biff_rec(ba, 0x0F, write_LABEL(R, C, str.slice(0, 239)));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\twrite_biff_rec(ba, 0x01);\n\t\treturn ba.end();\n\t}\n\n\tfunction book_to_wk3(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\t\tvar o = opts || {};\n\t\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\t\tif(o.type == \"string\") throw new Error(\"Cannot write WK3 to JS string\");\n\t\tvar ba = buf_array();\n\n\t\twrite_biff_rec(ba, 0x00, write_BOF_WK3(wb));\n\n\t\tfor(var i = 0, cnt = 0; i < wb.SheetNames.length; ++i) if((wb.Sheets[wb.SheetNames[i]] || {})[\"!ref\"]) write_biff_rec(ba, 0x1b, write_XFORMAT_SHEETNAME(wb.SheetNames[i], cnt++));\n\n\t\tvar wsidx = 0;\n\t\tfor(i = 0; i < wb.SheetNames.length; ++i) {\n\t\t\tvar ws = wb.Sheets[wb.SheetNames[i]];\n\t\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\t\tvar range = safe_decode_range(ws[\"!ref\"]);\n\t\t\tvar dense = Array.isArray(ws);\n\t\t\tvar cols = [];\n\t\t\tvar max_R = Math.min(range.e.r, 8191);\n\t\t\tfor(var R = range.s.r; R <= max_R; ++R) {\n\t\t\t\tvar rr = encode_row(R);\n\t\t\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\t\t\tvar ref = cols[C] + rr;\n\t\t\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\t\t\tif(!cell || cell.t == \"z\") continue;\n\t\t\t\t\t/* TODO: FORMULA19 NUMBER18 records */\n\t\t\t\t\tif(cell.t == \"n\") {\n\t\t\t\t\t\twrite_biff_rec(ba, 0x17, write_NUMBER_17(R, C, wsidx, cell.v));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar str = format_cell(cell);\n\t\t\t\t\t\t/* TODO: max len? */\n\t\t\t\t\t\twrite_biff_rec(ba, 0x16, write_LABEL_16(R, C, wsidx, str.slice(0, 239)));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t++wsidx;\n\t\t}\n\n\t\twrite_biff_rec(ba, 0x01);\n\t\treturn ba.end();\n\t}\n\n\n\tfunction write_BOF_WK1(v/*:number*/) {\n\t\tvar out = new_buf(2);\n\t\tout.write_shift(2, v);\n\t\treturn out;\n\t}\n\n\tfunction write_BOF_WK3(wb/*:Workbook*/) {\n\t\tvar out = new_buf(26);\n\t\tout.write_shift(2, 0x1000);\n\t\tout.write_shift(2, 0x0004);\n\t\tout.write_shift(4, 0x0000);\n\t\tvar rows = 0, cols = 0, wscnt = 0;\n\t\tfor(var i = 0; i < wb.SheetNames.length; ++i) {\n\t\t\tvar name = wb.SheetNames[i];\n\t\t\tvar ws = wb.Sheets[name];\n\t\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\t\t++wscnt;\n\t\t\tvar range = decode_range(ws[\"!ref\"]);\n\t\t\tif(rows < range.e.r) rows = range.e.r;\n\t\t\tif(cols < range.e.c) cols = range.e.c;\n\t\t}\n\t\tif(rows > 8191) rows = 8191;\n\t\tout.write_shift(2, rows);\n\t\tout.write_shift(1, wscnt);\n\t\tout.write_shift(1, cols);\n\t\tout.write_shift(2, 0x00);\n\t\tout.write_shift(2, 0x00);\n\t\tout.write_shift(1, 0x01);\n\t\tout.write_shift(1, 0x02);\n\t\tout.write_shift(4, 0);\n\t\tout.write_shift(4, 0);\n\t\treturn out;\n\t}\n\n\tfunction parse_RANGE(blob, length, opts) {\n\t\tvar o = {s:{c:0,r:0},e:{c:0,r:0}};\n\t\tif(length == 8 && opts.qpro) {\n\t\t\to.s.c = blob.read_shift(1);\n\t\t\tblob.l++;\n\t\t\to.s.r = blob.read_shift(2);\n\t\t\to.e.c = blob.read_shift(1);\n\t\t\tblob.l++;\n\t\t\to.e.r = blob.read_shift(2);\n\t\t\treturn o;\n\t\t}\n\t\to.s.c = blob.read_shift(2);\n\t\to.s.r = blob.read_shift(2);\n\t\tif(length == 12 && opts.qpro) blob.l += 2;\n\t\to.e.c = blob.read_shift(2);\n\t\to.e.r = blob.read_shift(2);\n\t\tif(length == 12 && opts.qpro) blob.l += 2;\n\t\tif(o.s.c == 0xFFFF) o.s.c = o.e.c = o.s.r = o.e.r = 0;\n\t\treturn o;\n\t}\n\tfunction write_RANGE(range) {\n\t\tvar out = new_buf(8);\n\t\tout.write_shift(2, range.s.c);\n\t\tout.write_shift(2, range.s.r);\n\t\tout.write_shift(2, range.e.c);\n\t\tout.write_shift(2, range.e.r);\n\t\treturn out;\n\t}\n\n\tfunction parse_cell(blob, length, opts) {\n\t\tvar o = [{c:0,r:0}, {t:'n',v:0}, 0, 0];\n\t\tif(opts.qpro && opts.vers != 0x5120) {\n\t\t\to[0].c = blob.read_shift(1);\n\t\t\to[3] = blob.read_shift(1);\n\t\t\to[0].r = blob.read_shift(2);\n\t\t\tblob.l+=2;\n\t\t} else {\n\t\t\to[2] = blob.read_shift(1);\n\t\t\to[0].c = blob.read_shift(2); o[0].r = blob.read_shift(2);\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction parse_LABEL(blob, length, opts) {\n\t\tvar tgt = blob.l + length;\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].t = 's';\n\t\tif(opts.vers == 0x5120) {\n\t\t\tblob.l++;\n\t\t\tvar len = blob.read_shift(1);\n\t\t\to[1].v = blob.read_shift(len, 'utf8');\n\t\t\treturn o;\n\t\t}\n\t\tif(opts.qpro) blob.l++;\n\t\to[1].v = blob.read_shift(tgt - blob.l, 'cstr');\n\t\treturn o;\n\t}\n\tfunction write_LABEL(R, C, s) {\n\t\t/* TODO: encoding */\n\t\tvar o = new_buf(7 + s.length);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, 0x27); // ??\n\t\tfor(var i = 0; i < o.length; ++i) {\n\t\t\tvar cc = s.charCodeAt(i);\n\t\t\to.write_shift(1, cc >= 0x80 ? 0x5F : cc);\n\t\t}\n\t\to.write_shift(1, 0);\n\t\treturn o;\n\t}\n\n\tfunction parse_INTEGER(blob, length, opts) {\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].v = blob.read_shift(2, 'i');\n\t\treturn o;\n\t}\n\tfunction write_INTEGER(R, C, v) {\n\t\tvar o = new_buf(7);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(2, v, 'i');\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER(blob, length, opts) {\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].v = blob.read_shift(8, 'f');\n\t\treturn o;\n\t}\n\tfunction write_NUMBER(R, C, v) {\n\t\tvar o = new_buf(13);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(8, v, 'f');\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA(blob, length, opts) {\n\t\tvar tgt = blob.l + length;\n\t\tvar o = parse_cell(blob, length, opts);\n\t\t/* TODO: formula */\n\t\to[1].v = blob.read_shift(8, 'f');\n\t\tif(opts.qpro) blob.l = tgt;\n\t\telse {\n\t\t\tvar flen = blob.read_shift(2);\n\t\t\twk1_fmla_to_csf(blob.slice(blob.l, blob.l + flen), o);\n\t\t\tblob.l += flen;\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction wk1_parse_rc(B, V, col) {\n\t\tvar rel = V & 0x8000;\n\t\tV &= ~0x8000;\n\t\tV = (rel ? B : 0) + ((V >= 0x2000) ? V - 0x4000 : V);\n\t\treturn (rel ? \"\" : \"$\") + (col ? encode_col(V) : encode_row(V));\n\t}\n\t/* var oprec = [\n\t\t8, 8, 8, 8, 8, 8, 8, 8, 6, 4, 4, 5, 5, 7, 3, 3,\n\t\t3, 3, 3, 3, 1, 1, 2, 6, 8, 8, 8, 8, 8, 8, 8, 8\n\t]; */\n\t/* TODO: flesh out */\n\tvar FuncTab = {\n\t\t0x33: [\"FALSE\", 0],\n\t\t0x34: [\"TRUE\", 0],\n\t\t0x46: [\"LEN\", 1],\n\t\t0x50: [\"SUM\", 69],\n\t\t0x51: [\"AVERAGEA\", 69],\n\t\t0x52: [\"COUNTA\", 69],\n\t\t0x53: [\"MINA\", 69],\n\t\t0x54: [\"MAXA\", 69],\n\t\t0x6F: [\"T\", 1]\n\t};\n\tvar BinOpTab = [\n\t\t  \"\",   \"\",   \"\",   \"\",   \"\",   \"\",   \"\",   \"\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t  \"\",  \"+\",  \"-\",  \"*\",  \"/\",  \"^\",  \"=\", \"<>\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t\"<=\", \">=\",  \"<\",  \">\",   \"\",   \"\",   \"\",   \"\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t \"&\",   \"\",   \"\",   \"\",   \"\",   \"\",   \"\",   \"\"  // eslint-disable-line no-mixed-spaces-and-tabs\n\t];\n\n\tfunction wk1_fmla_to_csf(blob, o) {\n\t\tprep_blob(blob, 0);\n\t\tvar out = [], argc = 0, R = \"\", C = \"\", argL = \"\", argR = \"\";\n\t\twhile(blob.l < blob.length) {\n\t\t\tvar cc = blob[blob.l++];\n\t\t\tswitch(cc) {\n\t\t\t\tcase 0x00: out.push(blob.read_shift(8, 'f')); break;\n\t\t\t\tcase 0x01: {\n\t\t\t\t\tC = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tR = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tout.push(C + R);\n\t\t\t\t} break;\n\t\t\t\tcase 0x02: {\n\t\t\t\t\tvar c = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tvar r = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tC = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tR = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tout.push(c + r + \":\" + C + R);\n\t\t\t\t} break;\n\t\t\t\tcase 0x03:\n\t\t\t\t\tif(blob.l < blob.length) { console.error(\"WK1 premature formula end\"); return; }\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x04: out.push(\"(\" + out.pop() + \")\"); break;\n\t\t\t\tcase 0x05: out.push(blob.read_shift(2)); break;\n\t\t\t\tcase 0x06: {\n\t\t\t\t\t/* TODO: text encoding */\n\t\t\t\t\tvar Z = \"\"; while((cc = blob[blob.l++])) Z += String.fromCharCode(cc);\n\t\t\t\t\tout.push('\"' + Z.replace(/\"/g, '\"\"') + '\"');\n\t\t\t\t} break;\n\n\t\t\t\tcase 0x08: out.push(\"-\" + out.pop()); break;\n\t\t\t\tcase 0x17: out.push(\"+\" + out.pop()); break;\n\t\t\t\tcase 0x16: out.push(\"NOT(\" + out.pop() + \")\"); break;\n\n\t\t\t\tcase 0x14: case 0x15: {\n\t\t\t\t\targR = out.pop(); argL = out.pop();\n\t\t\t\t\tout.push([\"AND\", \"OR\"][cc - 0x14] + \"(\" + argL + \",\" + argR + \")\");\n\t\t\t\t} break;\n\n\t\t\t\tdefault:\n\t\t\t\t\tif(cc < 0x20 && BinOpTab[cc]) {\n\t\t\t\t\t\targR = out.pop(); argL = out.pop();\n\t\t\t\t\t\tout.push(argL + BinOpTab[cc] + argR);\n\t\t\t\t\t} else if(FuncTab[cc]) {\n\t\t\t\t\t\targc = FuncTab[cc][1];\n\t\t\t\t\t\tif(argc == 69) argc = blob[blob.l++];\n\t\t\t\t\t\tif(argc > out.length) { console.error(\"WK1 bad formula parse 0x\" + cc.toString(16) + \":|\" + out.join(\"|\") + \"|\"); return; }\n\t\t\t\t\t\tvar args = out.slice(-argc);\n\t\t\t\t\t\tout.length -= argc;\n\t\t\t\t\t\tout.push(FuncTab[cc][0] + \"(\" + args.join(\",\") + \")\");\n\t\t\t\t\t}\n\t\t\t\t\telse if(cc <= 0x07) return console.error(\"WK1 invalid opcode \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x18) return console.error(\"WK1 unsupported op \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x1E) return console.error(\"WK1 invalid opcode \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x73) return console.error(\"WK1 unsupported function opcode \" + cc.toString(16));\n\t\t\t\t\t// possible future functions ??\n\t\t\t\t\telse return console.error(\"WK1 unrecognized opcode \" + cc.toString(16));\n\t\t\t}\n\t\t}\n\t\tif(out.length == 1) o[1].f = \"\" + out[0];\n\t\telse console.error(\"WK1 bad formula parse |\" + out.join(\"|\") + \"|\");\n\t}\n\n\n\tfunction parse_cell_3(blob/*::, length*/) {\n\t\tvar o = [{c:0,r:0}, {t:'n',v:0}, 0];\n\t\to[0].r = blob.read_shift(2); o[3] = blob[blob.l++]; o[0].c = blob[blob.l++];\n\t\treturn o;\n\t}\n\n\tfunction parse_LABEL_16(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\to[1].t = 's';\n\t\to[1].v = blob.read_shift(length - 4, 'cstr');\n\t\treturn o;\n\t}\n\tfunction write_LABEL_16(R, C, wsidx, s) {\n\t\t/* TODO: encoding */\n\t\tvar o = new_buf(6 + s.length);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, wsidx);\n\t\to.write_shift(1, C);\n\t\to.write_shift(1, 0x27);\n\t\tfor(var i = 0; i < s.length; ++i) {\n\t\t\tvar cc = s.charCodeAt(i);\n\t\t\to.write_shift(1, cc >= 0x80 ? 0x5F : cc);\n\t\t}\n\t\to.write_shift(1, 0);\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_18(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\to[1].v = blob.read_shift(2);\n\t\tvar v = o[1].v >> 1;\n\t\tif(o[1].v & 0x1) {\n\t\t\tswitch(v & 0x07) {\n\t\t\t\tcase 0: v = (v >> 3) * 5000; break;\n\t\t\t\tcase 1: v = (v >> 3) * 500; break;\n\t\t\t\tcase 2: v = (v >> 3) / 20; break;\n\t\t\t\tcase 3: v = (v >> 3) / 200; break;\n\t\t\t\tcase 4: v = (v >> 3) / 2000; break;\n\t\t\t\tcase 5: v = (v >> 3) / 20000; break;\n\t\t\t\tcase 6: v = (v >> 3) / 16; break;\n\t\t\t\tcase 7: v = (v >> 3) / 64; break;\n\t\t\t}\n\t\t}\n\t\to[1].v = v;\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_17(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(4);\n\t\tvar v2 = blob.read_shift(4);\n\t\tvar e = blob.read_shift(2);\n\t\tif(e == 0xFFFF) {\n\t\t\tif(v1 === 0 && v2 === 0xC0000000) { o[1].t = \"e\"; o[1].v = 0x0F; } // ERR -> #VALUE!\n\t\t\telse if(v1 === 0 && v2 === 0xD0000000) { o[1].t = \"e\"; o[1].v = 0x2A; } // NA -> #N/A\n\t\t\telse o[1].v = 0;\n\t\t\treturn o;\n\t\t}\n\t\tvar s = e & 0x8000; e = (e&0x7FFF) - 16446;\n\t\to[1].v = (1 - s*2) * (v2 * Math.pow(2, e+32) + v1 * Math.pow(2, e));\n\t\treturn o;\n\t}\n\tfunction write_NUMBER_17(R, C, wsidx, v) {\n\t\tvar o = new_buf(14);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, wsidx);\n\t\to.write_shift(1, C);\n\t\tif(v == 0) {\n\t\t\to.write_shift(4, 0);\n\t\t\to.write_shift(4, 0);\n\t\t\to.write_shift(2, 0xFFFF);\n\t\t\treturn o;\n\t\t}\n\t\tvar s = 0, e = 0, v1 = 0, v2 = 0;\n\t\tif(v < 0) { s = 1; v = -v; }\n\t\te = Math.log2(v) | 0;\n\t\tv /= Math.pow(2, e-31);\n\t\tv2 = (v)>>>0;\n\t\tif((v2&0x80000000) == 0) { v/=2; ++e; v2 = v >>> 0; }\n\t\tv -= v2;\n\t\tv2 |= 0x80000000;\n\t\tv2 >>>= 0;\n\t\tv *= Math.pow(2, 32);\n\t\tv1 = v>>>0;\n\t\to.write_shift(4, v1);\n\t\to.write_shift(4, v2);\n\t\te += 0x3FFF + (s ? 0x8000 : 0);\n\t\to.write_shift(2, e);\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA_19(blob, length) {\n\t\tvar o = parse_NUMBER_17(blob, 14);\n\t\tblob.l += length - 14; /* TODO: WK3 formula */\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_25(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(4);\n\t\to[1].v = v1 >> 6;\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_27(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(8,'f');\n\t\to[1].v = v1;\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA_28(blob, length) {\n\t\tvar o = parse_NUMBER_27(blob, 14);\n\t\tblob.l += length - 10; /* TODO: formula */\n\t\treturn o;\n\t}\n\n\tfunction parse_SHEETNAMECS(blob, length) {\n\t\treturn blob[blob.l + length - 1] == 0 ? blob.read_shift(length, 'cstr') : \"\";\n\t}\n\n\tfunction parse_SHEETNAMELP(blob, length) {\n\t\tvar len = blob[blob.l++];\n\t\tif(len > length - 1) len = length - 1;\n\t\tvar o = \"\"; while(o.length < len) o += String.fromCharCode(blob[blob.l++]);\n\t\treturn o;\n\t}\n\n\tfunction parse_SHEETINFOQP(blob, length, opts) {\n\t\tif(!opts.qpro || length < 21) return;\n\t\tvar id = blob.read_shift(1);\n\t\tblob.l += 17;\n\t\tblob.l += 1; //var len = blob.read_shift(1);\n\t\tblob.l += 2;\n\t\tvar nm = blob.read_shift(length - 21, 'cstr');\n\t\treturn [id, nm];\n\t}\n\n\tfunction parse_XFORMAT(blob, length) {\n\t\tvar o = {}, tgt = blob.l + length;\n\t\twhile(blob.l < tgt) {\n\t\t\tvar dt = blob.read_shift(2);\n\t\t\tif(dt == 0x36b0) {\n\t\t\t\to[dt] = [0, \"\"];\n\t\t\t\to[dt][0] = blob.read_shift(2);\n\t\t\t\twhile(blob[blob.l]) { o[dt][1] += String.fromCharCode(blob[blob.l]); blob.l++; } blob.l++;\n\t\t\t}\n\t\t\t// TODO: 0x3a99 ??\n\t\t}\n\t\treturn o;\n\t}\n\tfunction write_XFORMAT_SHEETNAME(name, wsidx) {\n\t\tvar out = new_buf(5 + name.length);\n\t\tout.write_shift(2, 0x36b0);\n\t\tout.write_shift(2, wsidx);\n\t\tfor(var i = 0; i < name.length; ++i) {\n\t\t\tvar cc = name.charCodeAt(i);\n\t\t\tout[out.l++] = cc > 0x7F ? 0x5F : cc;\n\t\t}\n\t\tout[out.l++] = 0;\n\t\treturn out;\n\t}\n\n\tvar WK1Enum = {\n\t\t/*::[*/0x0000/*::]*/: { n:\"BOF\", f:parseuint16 },\n\t\t/*::[*/0x0001/*::]*/: { n:\"EOF\" },\n\t\t/*::[*/0x0002/*::]*/: { n:\"CALCMODE\" },\n\t\t/*::[*/0x0003/*::]*/: { n:\"CALCORDER\" },\n\t\t/*::[*/0x0004/*::]*/: { n:\"SPLIT\" },\n\t\t/*::[*/0x0005/*::]*/: { n:\"SYNC\" },\n\t\t/*::[*/0x0006/*::]*/: { n:\"RANGE\", f:parse_RANGE },\n\t\t/*::[*/0x0007/*::]*/: { n:\"WINDOW1\" },\n\t\t/*::[*/0x0008/*::]*/: { n:\"COLW1\" },\n\t\t/*::[*/0x0009/*::]*/: { n:\"WINTWO\" },\n\t\t/*::[*/0x000A/*::]*/: { n:\"COLW2\" },\n\t\t/*::[*/0x000B/*::]*/: { n:\"NAME\" },\n\t\t/*::[*/0x000C/*::]*/: { n:\"BLANK\" },\n\t\t/*::[*/0x000D/*::]*/: { n:\"INTEGER\", f:parse_INTEGER },\n\t\t/*::[*/0x000E/*::]*/: { n:\"NUMBER\", f:parse_NUMBER },\n\t\t/*::[*/0x000F/*::]*/: { n:\"LABEL\", f:parse_LABEL },\n\t\t/*::[*/0x0010/*::]*/: { n:\"FORMULA\", f:parse_FORMULA },\n\t\t/*::[*/0x0018/*::]*/: { n:\"TABLE\" },\n\t\t/*::[*/0x0019/*::]*/: { n:\"ORANGE\" },\n\t\t/*::[*/0x001A/*::]*/: { n:\"PRANGE\" },\n\t\t/*::[*/0x001B/*::]*/: { n:\"SRANGE\" },\n\t\t/*::[*/0x001C/*::]*/: { n:\"FRANGE\" },\n\t\t/*::[*/0x001D/*::]*/: { n:\"KRANGE1\" },\n\t\t/*::[*/0x0020/*::]*/: { n:\"HRANGE\" },\n\t\t/*::[*/0x0023/*::]*/: { n:\"KRANGE2\" },\n\t\t/*::[*/0x0024/*::]*/: { n:\"PROTEC\" },\n\t\t/*::[*/0x0025/*::]*/: { n:\"FOOTER\" },\n\t\t/*::[*/0x0026/*::]*/: { n:\"HEADER\" },\n\t\t/*::[*/0x0027/*::]*/: { n:\"SETUP\" },\n\t\t/*::[*/0x0028/*::]*/: { n:\"MARGINS\" },\n\t\t/*::[*/0x0029/*::]*/: { n:\"LABELFMT\" },\n\t\t/*::[*/0x002A/*::]*/: { n:\"TITLES\" },\n\t\t/*::[*/0x002B/*::]*/: { n:\"SHEETJS\" },\n\t\t/*::[*/0x002D/*::]*/: { n:\"GRAPH\" },\n\t\t/*::[*/0x002E/*::]*/: { n:\"NGRAPH\" },\n\t\t/*::[*/0x002F/*::]*/: { n:\"CALCCOUNT\" },\n\t\t/*::[*/0x0030/*::]*/: { n:\"UNFORMATTED\" },\n\t\t/*::[*/0x0031/*::]*/: { n:\"CURSORW12\" },\n\t\t/*::[*/0x0032/*::]*/: { n:\"WINDOW\" },\n\t\t/*::[*/0x0033/*::]*/: { n:\"STRING\", f:parse_LABEL },\n\t\t/*::[*/0x0037/*::]*/: { n:\"PASSWORD\" },\n\t\t/*::[*/0x0038/*::]*/: { n:\"LOCKED\" },\n\t\t/*::[*/0x003C/*::]*/: { n:\"QUERY\" },\n\t\t/*::[*/0x003D/*::]*/: { n:\"QUERYNAME\" },\n\t\t/*::[*/0x003E/*::]*/: { n:\"PRINT\" },\n\t\t/*::[*/0x003F/*::]*/: { n:\"PRINTNAME\" },\n\t\t/*::[*/0x0040/*::]*/: { n:\"GRAPH2\" },\n\t\t/*::[*/0x0041/*::]*/: { n:\"GRAPHNAME\" },\n\t\t/*::[*/0x0042/*::]*/: { n:\"ZOOM\" },\n\t\t/*::[*/0x0043/*::]*/: { n:\"SYMSPLIT\" },\n\t\t/*::[*/0x0044/*::]*/: { n:\"NSROWS\" },\n\t\t/*::[*/0x0045/*::]*/: { n:\"NSCOLS\" },\n\t\t/*::[*/0x0046/*::]*/: { n:\"RULER\" },\n\t\t/*::[*/0x0047/*::]*/: { n:\"NNAME\" },\n\t\t/*::[*/0x0048/*::]*/: { n:\"ACOMM\" },\n\t\t/*::[*/0x0049/*::]*/: { n:\"AMACRO\" },\n\t\t/*::[*/0x004A/*::]*/: { n:\"PARSE\" },\n\t\t/*::[*/0x0066/*::]*/: { n:\"PRANGES??\" },\n\t\t/*::[*/0x0067/*::]*/: { n:\"RRANGES??\" },\n\t\t/*::[*/0x0068/*::]*/: { n:\"FNAME??\" },\n\t\t/*::[*/0x0069/*::]*/: { n:\"MRANGES??\" },\n\t\t/*::[*/0x00CC/*::]*/: { n:\"SHEETNAMECS\", f:parse_SHEETNAMECS },\n\t\t/*::[*/0x00DE/*::]*/: { n:\"SHEETNAMELP\", f:parse_SHEETNAMELP },\n\t\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n\t};\n\n\tvar WK3Enum = {\n\t\t/*::[*/0x0000/*::]*/: { n:\"BOF\" },\n\t\t/*::[*/0x0001/*::]*/: { n:\"EOF\" },\n\t\t/*::[*/0x0002/*::]*/: { n:\"PASSWORD\" },\n\t\t/*::[*/0x0003/*::]*/: { n:\"CALCSET\" },\n\t\t/*::[*/0x0004/*::]*/: { n:\"WINDOWSET\" },\n\t\t/*::[*/0x0005/*::]*/: { n:\"SHEETCELLPTR\" },\n\t\t/*::[*/0x0006/*::]*/: { n:\"SHEETLAYOUT\" },\n\t\t/*::[*/0x0007/*::]*/: { n:\"COLUMNWIDTH\" },\n\t\t/*::[*/0x0008/*::]*/: { n:\"HIDDENCOLUMN\" },\n\t\t/*::[*/0x0009/*::]*/: { n:\"USERRANGE\" },\n\t\t/*::[*/0x000A/*::]*/: { n:\"SYSTEMRANGE\" },\n\t\t/*::[*/0x000B/*::]*/: { n:\"ZEROFORCE\" },\n\t\t/*::[*/0x000C/*::]*/: { n:\"SORTKEYDIR\" },\n\t\t/*::[*/0x000D/*::]*/: { n:\"FILESEAL\" },\n\t\t/*::[*/0x000E/*::]*/: { n:\"DATAFILLNUMS\" },\n\t\t/*::[*/0x000F/*::]*/: { n:\"PRINTMAIN\" },\n\t\t/*::[*/0x0010/*::]*/: { n:\"PRINTSTRING\" },\n\t\t/*::[*/0x0011/*::]*/: { n:\"GRAPHMAIN\" },\n\t\t/*::[*/0x0012/*::]*/: { n:\"GRAPHSTRING\" },\n\t\t/*::[*/0x0013/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0014/*::]*/: { n:\"ERRCELL\" },\n\t\t/*::[*/0x0015/*::]*/: { n:\"NACELL\" },\n\t\t/*::[*/0x0016/*::]*/: { n:\"LABEL16\", f:parse_LABEL_16},\n\t\t/*::[*/0x0017/*::]*/: { n:\"NUMBER17\", f:parse_NUMBER_17 },\n\t\t/*::[*/0x0018/*::]*/: { n:\"NUMBER18\", f:parse_NUMBER_18 },\n\t\t/*::[*/0x0019/*::]*/: { n:\"FORMULA19\", f:parse_FORMULA_19},\n\t\t/*::[*/0x001A/*::]*/: { n:\"FORMULA1A\" },\n\t\t/*::[*/0x001B/*::]*/: { n:\"XFORMAT\", f:parse_XFORMAT },\n\t\t/*::[*/0x001C/*::]*/: { n:\"DTLABELMISC\" },\n\t\t/*::[*/0x001D/*::]*/: { n:\"DTLABELCELL\" },\n\t\t/*::[*/0x001E/*::]*/: { n:\"GRAPHWINDOW\" },\n\t\t/*::[*/0x001F/*::]*/: { n:\"CPA\" },\n\t\t/*::[*/0x0020/*::]*/: { n:\"LPLAUTO\" },\n\t\t/*::[*/0x0021/*::]*/: { n:\"QUERY\" },\n\t\t/*::[*/0x0022/*::]*/: { n:\"HIDDENSHEET\" },\n\t\t/*::[*/0x0023/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0025/*::]*/: { n:\"NUMBER25\", f:parse_NUMBER_25 },\n\t\t/*::[*/0x0026/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0027/*::]*/: { n:\"NUMBER27\", f:parse_NUMBER_27 },\n\t\t/*::[*/0x0028/*::]*/: { n:\"FORMULA28\", f:parse_FORMULA_28 },\n\t\t/*::[*/0x008E/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0093/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0096/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0097/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0098/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0099/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009B/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00A3/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00AE/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00AF/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B0/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B1/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B8/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B9/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BA/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BB/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BC/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00C3/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00C9/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CC/*::]*/: { n:\"SHEETNAMECS\", f:parse_SHEETNAMECS },\n\t\t/*::[*/0x00CD/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CE/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CF/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00D0/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0100/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0103/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0104/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0105/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0106/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0107/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0109/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010B/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010E/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010F/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0180/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0185/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0186/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0189/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x018C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0200/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0202/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0201/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0204/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0205/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0280/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0281/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0282/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0283/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0284/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0285/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0286/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0287/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0288/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0292/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0293/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0294/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0295/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0296/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0299/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x029A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0300/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0304/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0601/*::]*/: { n:\"SHEETINFOQP\", f:parse_SHEETINFOQP },\n\t\t/*::[*/0x0640/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0642/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0701/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0702/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0703/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0704/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0780/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0800/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0801/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0804/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0A80/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x2AF6/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x3231/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x6E49/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x6F44/*::]*/: { n:\"??\" },\n\t\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n\t};\n\treturn {\n\t\tsheet_to_wk1: sheet_to_wk1,\n\t\tbook_to_wk3: book_to_wk3,\n\t\tto_workbook: lotus_to_workbook\n\t};\n})();\n/* 18.4.7 rPr CT_RPrElt */\nfunction parse_rpr(rpr) {\n\tvar font = {}, m = rpr.match(tagregex), i = 0;\n\tvar pass = false;\n\tif(m) for(;i!=m.length; ++i) {\n\t\tvar y = parsexmltag(m[i]);\n\t\tswitch(y[0].replace(/\\w*:/g,\"\")) {\n\t\t\t/* 18.8.12 condense CT_BooleanProperty */\n\t\t\t/* ** not required . */\n\t\t\tcase '<condense': break;\n\t\t\t/* 18.8.17 extend CT_BooleanProperty */\n\t\t\t/* ** not required . */\n\t\t\tcase '<extend': break;\n\t\t\t/* 18.8.36 shadow CT_BooleanProperty */\n\t\t\t/* ** not required . */\n\t\t\tcase '<shadow':\n\t\t\t\tif(!y.val) break;\n\t\t\t\t/* falls through */\n\t\t\tcase '<shadow>':\n\t\t\tcase '<shadow/>': font.shadow = 1; break;\n\t\t\tcase '</shadow>': break;\n\n\t\t\t/* 18.4.1 charset CT_IntProperty TODO */\n\t\t\tcase '<charset':\n\t\t\t\tif(y.val == '1') break;\n\t\t\t\tfont.cp = CS2CP[parseInt(y.val, 10)];\n\t\t\t\tbreak;\n\n\t\t\t/* 18.4.2 outline CT_BooleanProperty TODO */\n\t\t\tcase '<outline':\n\t\t\t\tif(!y.val) break;\n\t\t\t\t/* falls through */\n\t\t\tcase '<outline>':\n\t\t\tcase '<outline/>': font.outline = 1; break;\n\t\t\tcase '</outline>': break;\n\n\t\t\t/* 18.4.5 rFont CT_FontName */\n\t\t\tcase '<rFont': font.name = y.val; break;\n\n\t\t\t/* 18.4.11 sz CT_FontSize */\n\t\t\tcase '<sz': font.sz = y.val; break;\n\n\t\t\t/* 18.4.10 strike CT_BooleanProperty */\n\t\t\tcase '<strike':\n\t\t\t\tif(!y.val) break;\n\t\t\t\t/* falls through */\n\t\t\tcase '<strike>':\n\t\t\tcase '<strike/>': font.strike = 1; break;\n\t\t\tcase '</strike>': break;\n\n\t\t\t/* 18.4.13 u CT_UnderlineProperty */\n\t\t\tcase '<u':\n\t\t\t\tif(!y.val) break;\n\t\t\t\tswitch(y.val) {\n\t\t\t\t\tcase 'double': font.uval = \"double\"; break;\n\t\t\t\t\tcase 'singleAccounting': font.uval = \"single-accounting\"; break;\n\t\t\t\t\tcase 'doubleAccounting': font.uval = \"double-accounting\"; break;\n\t\t\t\t}\n\t\t\t\t/* falls through */\n\t\t\tcase '<u>':\n\t\t\tcase '<u/>': font.u = 1; break;\n\t\t\tcase '</u>': break;\n\n\t\t\t/* 18.8.2 b */\n\t\t\tcase '<b':\n\t\t\t\tif(y.val == '0') break;\n\t\t\t\t/* falls through */\n\t\t\tcase '<b>':\n\t\t\tcase '<b/>': font.b = 1; break;\n\t\t\tcase '</b>': break;\n\n\t\t\t/* 18.8.26 i */\n\t\t\tcase '<i':\n\t\t\t\tif(y.val == '0') break;\n\t\t\t\t/* falls through */\n\t\t\tcase '<i>':\n\t\t\tcase '<i/>': font.i = 1; break;\n\t\t\tcase '</i>': break;\n\n\t\t\t/* 18.3.1.15 color CT_Color TODO: tint, theme, auto, indexed */\n\t\t\tcase '<color':\n\t\t\t\tif(y.rgb) font.color = y.rgb.slice(2,8);\n\t\t\t\tbreak;\n\t\t\tcase '<color>': case '<color/>': case '</color>': break;\n\n\t\t\t/* 18.8.18 family ST_FontFamily */\n\t\t\tcase '<family': font.family = y.val; break;\n\t\t\tcase '<family>': case '<family/>': case '</family>': break;\n\n\t\t\t/* 18.4.14 vertAlign CT_VerticalAlignFontProperty TODO */\n\t\t\tcase '<vertAlign': font.valign = y.val; break;\n\t\t\tcase '<vertAlign>': case '<vertAlign/>': case '</vertAlign>': break;\n\n\t\t\t/* 18.8.35 scheme CT_FontScheme TODO */\n\t\t\tcase '<scheme': break;\n\t\t\tcase '<scheme>': case '<scheme/>': case '</scheme>': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': break;\n\t\t\tcase '<ext': pass = true; break;\n\t\t\tcase '</ext>': pass = false; break;\n\t\t\tdefault:\n\t\t\t\tif(y[0].charCodeAt(1) !== 47 && !pass) throw new Error('Unrecognized rich format ' + y[0]);\n\t\t}\n\t}\n\treturn font;\n}\n\nvar parse_rs = /*#__PURE__*/(function() {\n\tvar tregex = matchtag(\"t\"), rpregex = matchtag(\"rPr\");\n\t/* 18.4.4 r CT_RElt */\n\tfunction parse_r(r) {\n\t\t/* 18.4.12 t ST_Xstring */\n\t\tvar t = r.match(tregex)/*, cp = 65001*/;\n\t\tif(!t) return {t:\"s\", v:\"\"};\n\n\t\tvar o/*:Cell*/ = ({t:'s', v:unescapexml(t[1])}/*:any*/);\n\t\tvar rpr = r.match(rpregex);\n\t\tif(rpr) o.s = parse_rpr(rpr[1]);\n\t\treturn o;\n\t}\n\tvar rregex = /<(?:\\w+:)?r>/g, rend = /<\\/(?:\\w+:)?r>/;\n\treturn function parse_rs(rs) {\n\t\treturn rs.replace(rregex,\"\").split(rend).map(parse_r).filter(function(r) { return r.v; });\n\t};\n})();\n\n\n/* Parse a list of <r> tags */\nvar rs_to_html = /*#__PURE__*/(function parse_rs_factory() {\n\tvar nlregex = /(\\r\\n|\\n)/g;\n\tfunction parse_rpr2(font, intro, outro) {\n\t\tvar style/*:Array<string>*/ = [];\n\n\t\tif(font.u) style.push(\"text-decoration: underline;\");\n\t\tif(font.uval) style.push(\"text-underline-style:\" + font.uval + \";\");\n\t\tif(font.sz) style.push(\"font-size:\" + font.sz + \"pt;\");\n\t\tif(font.outline) style.push(\"text-effect: outline;\");\n\t\tif(font.shadow) style.push(\"text-shadow: auto;\");\n\t\tintro.push('<span style=\"' + style.join(\"\") + '\">');\n\n\t\tif(font.b) { intro.push(\"<b>\"); outro.push(\"</b>\"); }\n\t\tif(font.i) { intro.push(\"<i>\"); outro.push(\"</i>\"); }\n\t\tif(font.strike) { intro.push(\"<s>\"); outro.push(\"</s>\"); }\n\n\t\tvar align = font.valign || \"\";\n\t\tif(align == \"superscript\" || align == \"super\") align = \"sup\";\n\t\telse if(align == \"subscript\") align = \"sub\";\n\t\tif(align != \"\") { intro.push(\"<\" + align + \">\"); outro.push(\"</\" + align + \">\"); }\n\n\t\toutro.push(\"</span>\");\n\t\treturn font;\n\t}\n\n\t/* 18.4.4 r CT_RElt */\n\tfunction r_to_html(r) {\n\t\tvar terms/*:[Array<string>, string, Array<string>]*/ = [[],r.v,[]];\n\t\tif(!r.v) return \"\";\n\n\t\tif(r.s) parse_rpr2(r.s, terms[0], terms[2]);\n\n\t\treturn terms[0].join(\"\") + terms[1].replace(nlregex,'<br/>') + terms[2].join(\"\");\n\t}\n\n\treturn function parse_rs(rs) {\n\t\treturn rs.map(r_to_html).join(\"\");\n\t};\n})();\n\n/* 18.4.8 si CT_Rst */\nvar sitregex = /<(?:\\w+:)?t[^>]*>([^<]*)<\\/(?:\\w+:)?t>/g, sirregex = /<(?:\\w+:)?r>/;\nvar sirphregex = /<(?:\\w+:)?rPh.*?>([\\s\\S]*?)<\\/(?:\\w+:)?rPh>/g;\nfunction parse_si(x, opts) {\n\tvar html = opts ? opts.cellHTML : true;\n\tvar z = {};\n\tif(!x) return { t: \"\" };\n\t//var y;\n\t/* 18.4.12 t ST_Xstring (Plaintext String) */\n\t// TODO: is whitespace actually valid here?\n\tif(x.match(/^\\s*<(?:\\w+:)?t[^>]*>/)) {\n\t\tz.t = unescapexml(utf8read(x.slice(x.indexOf(\">\")+1).split(/<\\/(?:\\w+:)?t>/)[0]||\"\"));\n\t\tz.r = utf8read(x);\n\t\tif(html) z.h = escapehtml(z.t);\n\t}\n\t/* 18.4.4 r CT_RElt (Rich Text Run) */\n\telse if((/*y = */x.match(sirregex))) {\n\t\tz.r = utf8read(x);\n\t\tz.t = unescapexml(utf8read((x.replace(sirphregex, '').match(sitregex)||[]).join(\"\").replace(tagregex,\"\")));\n\t\tif(html) z.h = rs_to_html(parse_rs(z.r));\n\t}\n\t/* 18.4.3 phoneticPr CT_PhoneticPr (TODO: needed for Asian support) */\n\t/* 18.4.6 rPh CT_PhoneticRun (TODO: needed for Asian support) */\n\treturn z;\n}\n\n/* 18.4 Shared String Table */\nvar sstr0 = /<(?:\\w+:)?sst([^>]*)>([\\s\\S]*)<\\/(?:\\w+:)?sst>/;\nvar sstr1 = /<(?:\\w+:)?(?:si|sstItem)>/g;\nvar sstr2 = /<\\/(?:\\w+:)?(?:si|sstItem)>/;\nfunction parse_sst_xml(data/*:string*/, opts)/*:SST*/ {\n\tvar s/*:SST*/ = ([]/*:any*/), ss = \"\";\n\tif(!data) return s;\n\t/* 18.4.9 sst CT_Sst */\n\tvar sst = data.match(sstr0);\n\tif(sst) {\n\t\tss = sst[2].replace(sstr1,\"\").split(sstr2);\n\t\tfor(var i = 0; i != ss.length; ++i) {\n\t\t\tvar o = parse_si(ss[i].trim(), opts);\n\t\t\tif(o != null) s[s.length] = o;\n\t\t}\n\t\tsst = parsexmltag(sst[1]); s.Count = sst.count; s.Unique = sst.uniqueCount;\n\t}\n\treturn s;\n}\n\nvar straywsregex = /^\\s|\\s$|[\\t\\n\\r]/;\nfunction write_sst_xml(sst/*:SST*/, opts)/*:string*/ {\n\tif(!opts.bookSST) return \"\";\n\tvar o = [XML_HEADER];\n\to[o.length] = (writextag('sst', null, {\n\t\txmlns: XMLNS_main[0],\n\t\tcount: sst.Count,\n\t\tuniqueCount: sst.Unique\n\t}));\n\tfor(var i = 0; i != sst.length; ++i) { if(sst[i] == null) continue;\n\t\tvar s/*:XLString*/ = sst[i];\n\t\tvar sitag = \"<si>\";\n\t\tif(s.r) sitag += s.r;\n\t\telse {\n\t\t\tsitag += \"<t\";\n\t\t\tif(!s.t) s.t = \"\";\n\t\t\tif(s.t.match(straywsregex)) sitag += ' xml:space=\"preserve\"';\n\t\t\tsitag += \">\" + escapexml(s.t) + \"</t>\";\n\t\t}\n\t\tsitag += \"</si>\";\n\t\to[o.length] = (sitag);\n\t}\n\tif(o.length>2){ o[o.length] = ('</sst>'); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.221 BrtBeginSst */\nfunction parse_BrtBeginSst(data) {\n\treturn [data.read_shift(4), data.read_shift(4)];\n}\n\n/* [MS-XLSB] 2.1.7.45 Shared Strings */\nfunction parse_sst_bin(data, opts)/*:SST*/ {\n\tvar s/*:SST*/ = ([]/*:any*/);\n\tvar pass = false;\n\trecordhopper(data, function hopper_sst(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x009F: /* BrtBeginSst */\n\t\t\t\ts.Count = val[0]; s.Unique = val[1]; break;\n\t\t\tcase 0x0013: /* BrtSSTItem */\n\t\t\t\ts.push(val); break;\n\t\t\tcase 0x00A0: /* BrtEndSst */\n\t\t\t\treturn true;\n\n\t\t\tcase 0x0023: /* BrtFRTBegin */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* BrtFRTEnd */\n\t\t\t\tpass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){}\n\t\t\t\tif(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn s;\n}\n\nfunction write_BrtBeginSst(sst, o) {\n\tif(!o) o = new_buf(8);\n\to.write_shift(4, sst.Count);\n\to.write_shift(4, sst.Unique);\n\treturn o;\n}\n\nvar write_BrtSSTItem = write_RichStr;\n\nfunction write_sst_bin(sst/*::, opts*/) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x009F /* BrtBeginSst */, write_BrtBeginSst(sst));\n\tfor(var i = 0; i < sst.length; ++i) write_record(ba, 0x0013 /* BrtSSTItem */, write_BrtSSTItem(sst[i]));\n\t/* FRTSST */\n\twrite_record(ba, 0x00A0 /* BrtEndSst */);\n\treturn ba.end();\n}\nfunction _JS2ANSI(str/*:string*/)/*:Array<number>*/ {\n\tif(typeof $cptable !== 'undefined') return $cptable.utils.encode(current_ansi, str);\n\tvar o/*:Array<number>*/ = [], oo = str.split(\"\");\n\tfor(var i = 0; i < oo.length; ++i) o[i] = oo[i].charCodeAt(0);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.4 Version */\nfunction parse_CRYPTOVersion(blob, length/*:?number*/) {\n\tvar o/*:any*/ = {};\n\to.Major = blob.read_shift(2);\n\to.Minor = blob.read_shift(2);\n\t/*:: if(length == null) return o; */\n\tif(length >= 4) blob.l += length - 4;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.5 DataSpaceVersionInfo */\nfunction parse_DataSpaceVersionInfo(blob) {\n\tvar o = {};\n\to.id = blob.read_shift(0, 'lpp4');\n\to.R = parse_CRYPTOVersion(blob, 4);\n\to.U = parse_CRYPTOVersion(blob, 4);\n\to.W = parse_CRYPTOVersion(blob, 4);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.6.1 DataSpaceMapEntry Structure */\nfunction parse_DataSpaceMapEntry(blob) {\n\tvar len = blob.read_shift(4);\n\tvar end = blob.l + len - 4;\n\tvar o = {};\n\tvar cnt = blob.read_shift(4);\n\tvar comps/*:Array<{t:number, v:string}>*/ = [];\n\t/* [MS-OFFCRYPTO] 2.1.6.2 DataSpaceReferenceComponent Structure */\n\twhile(cnt-- > 0) comps.push({ t: blob.read_shift(4), v: blob.read_shift(0, 'lpp4') });\n\to.name = blob.read_shift(0, 'lpp4');\n\to.comps = comps;\n\tif(blob.l != end) throw new Error(\"Bad DataSpaceMapEntry: \" + blob.l + \" != \" + end);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.6 DataSpaceMap */\nfunction parse_DataSpaceMap(blob) {\n\tvar o = [];\n\tblob.l += 4; // must be 0x8\n\tvar cnt = blob.read_shift(4);\n\twhile(cnt-- > 0) o.push(parse_DataSpaceMapEntry(blob));\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.7 DataSpaceDefinition */\nfunction parse_DataSpaceDefinition(blob)/*:Array<string>*/ {\n\tvar o/*:Array<string>*/ = [];\n\tblob.l += 4; // must be 0x8\n\tvar cnt = blob.read_shift(4);\n\twhile(cnt-- > 0) o.push(blob.read_shift(0, 'lpp4'));\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.8 DataSpaceDefinition */\nfunction parse_TransformInfoHeader(blob) {\n\tvar o = {};\n\t/*var len = */blob.read_shift(4);\n\tblob.l += 4; // must be 0x1\n\to.id = blob.read_shift(0, 'lpp4');\n\to.name = blob.read_shift(0, 'lpp4');\n\to.R = parse_CRYPTOVersion(blob, 4);\n\to.U = parse_CRYPTOVersion(blob, 4);\n\to.W = parse_CRYPTOVersion(blob, 4);\n\treturn o;\n}\n\nfunction parse_Primary(blob) {\n\t/* [MS-OFFCRYPTO] 2.2.6 IRMDSTransformInfo */\n\tvar hdr = parse_TransformInfoHeader(blob);\n\t/* [MS-OFFCRYPTO] 2.1.9 EncryptionTransformInfo */\n\thdr.ename = blob.read_shift(0, '8lpp4');\n\thdr.blksz = blob.read_shift(4);\n\thdr.cmode = blob.read_shift(4);\n\tif(blob.read_shift(4) != 0x04) throw new Error(\"Bad !Primary record\");\n\treturn hdr;\n}\n\n/* [MS-OFFCRYPTO] 2.3.2 Encryption Header */\nfunction parse_EncryptionHeader(blob, length/*:number*/) {\n\tvar tgt = blob.l + length;\n\tvar o = {};\n\to.Flags = (blob.read_shift(4) & 0x3F);\n\tblob.l += 4;\n\to.AlgID = blob.read_shift(4);\n\tvar valid = false;\n\tswitch(o.AlgID) {\n\t\tcase 0x660E: case 0x660F: case 0x6610: valid = (o.Flags == 0x24); break;\n\t\tcase 0x6801: valid = (o.Flags == 0x04); break;\n\t\tcase 0: valid = (o.Flags == 0x10 || o.Flags == 0x04 || o.Flags == 0x24); break;\n\t\tdefault: throw 'Unrecognized encryption algorithm: ' + o.AlgID;\n\t}\n\tif(!valid) throw new Error(\"Encryption Flags/AlgID mismatch\");\n\to.AlgIDHash = blob.read_shift(4);\n\to.KeySize = blob.read_shift(4);\n\to.ProviderType = blob.read_shift(4);\n\tblob.l += 8;\n\to.CSPName = blob.read_shift((tgt-blob.l)>>1, 'utf16le');\n\tblob.l = tgt;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.3 Encryption Verifier */\nfunction parse_EncryptionVerifier(blob, length/*:number*/) {\n\tvar o = {}, tgt = blob.l + length;\n\tblob.l += 4; // SaltSize must be 0x10\n\to.Salt = blob.slice(blob.l, blob.l+16); blob.l += 16;\n\to.Verifier = blob.slice(blob.l, blob.l+16); blob.l += 16;\n\t/*var sz = */blob.read_shift(4);\n\to.VerifierHash = blob.slice(blob.l, tgt); blob.l = tgt;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.4.* EncryptionInfo Stream */\nfunction parse_EncryptionInfo(blob) {\n\tvar vers = parse_CRYPTOVersion(blob);\n\tswitch(vers.Minor) {\n\t\tcase 0x02: return [vers.Minor, parse_EncInfoStd(blob, vers)];\n\t\tcase 0x03: return [vers.Minor, parse_EncInfoExt(blob, vers)];\n\t\tcase 0x04: return [vers.Minor, parse_EncInfoAgl(blob, vers)];\n\t}\n\tthrow new Error(\"ECMA-376 Encrypted file unrecognized Version: \" + vers.Minor);\n}\n\n/* [MS-OFFCRYPTO] 2.3.4.5  EncryptionInfo Stream (Standard Encryption) */\nfunction parse_EncInfoStd(blob/*::, vers*/) {\n\tvar flags = blob.read_shift(4);\n\tif((flags & 0x3F) != 0x24) throw new Error(\"EncryptionInfo mismatch\");\n\tvar sz = blob.read_shift(4);\n\t//var tgt = blob.l + sz;\n\tvar hdr = parse_EncryptionHeader(blob, sz);\n\tvar verifier = parse_EncryptionVerifier(blob, blob.length - blob.l);\n\treturn { t:\"Std\", h:hdr, v:verifier };\n}\n/* [MS-OFFCRYPTO] 2.3.4.6  EncryptionInfo Stream (Extensible Encryption) */\nfunction parse_EncInfoExt(/*::blob, vers*/) { throw new Error(\"File is password-protected: ECMA-376 Extensible\"); }\n/* [MS-OFFCRYPTO] 2.3.4.10 EncryptionInfo Stream (Agile Encryption) */\nfunction parse_EncInfoAgl(blob/*::, vers*/) {\n\tvar KeyData = [\"saltSize\",\"blockSize\",\"keyBits\",\"hashSize\",\"cipherAlgorithm\",\"cipherChaining\",\"hashAlgorithm\",\"saltValue\"];\n\tblob.l+=4;\n\tvar xml = blob.read_shift(blob.length - blob.l, 'utf8');\n\tvar o = {};\n\txml.replace(tagregex, function xml_agile(x) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '<?xml': break;\n\t\t\tcase '<encryption': case '</encryption>': break;\n\t\t\tcase '<keyData': KeyData.forEach(function(k) { o[k] = y[k]; }); break;\n\t\t\tcase '<dataIntegrity': o.encryptedHmacKey = y.encryptedHmacKey; o.encryptedHmacValue = y.encryptedHmacValue; break;\n\t\t\tcase '<keyEncryptors>': case '<keyEncryptors': o.encs = []; break;\n\t\t\tcase '</keyEncryptors>': break;\n\n\t\t\tcase '<keyEncryptor': o.uri = y.uri; break;\n\t\t\tcase '</keyEncryptor>': break;\n\t\t\tcase '<encryptedKey': o.encs.push(y); break;\n\t\t\tdefault: throw y[0];\n\t\t}\n\t});\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.5.1 RC4 CryptoAPI Encryption Header */\nfunction parse_RC4CryptoHeader(blob, length/*:number*/) {\n\tvar o = {};\n\tvar vers = o.EncryptionVersionInfo = parse_CRYPTOVersion(blob, 4); length -= 4;\n\tif(vers.Minor != 2) throw new Error('unrecognized minor version code: ' + vers.Minor);\n\tif(vers.Major > 4 || vers.Major < 2) throw new Error('unrecognized major version code: ' + vers.Major);\n\to.Flags = blob.read_shift(4); length -= 4;\n\tvar sz = blob.read_shift(4); length -= 4;\n\to.EncryptionHeader = parse_EncryptionHeader(blob, sz); length -= sz;\n\to.EncryptionVerifier = parse_EncryptionVerifier(blob, length);\n\treturn o;\n}\n/* [MS-OFFCRYPTO] 2.3.6.1 RC4 Encryption Header */\nfunction parse_RC4Header(blob/*::, length*/) {\n\tvar o = {};\n\tvar vers = o.EncryptionVersionInfo = parse_CRYPTOVersion(blob, 4);\n\tif(vers.Major != 1 || vers.Minor != 1) throw 'unrecognized version code ' + vers.Major + ' : ' + vers.Minor;\n\to.Salt = blob.read_shift(16);\n\to.EncryptedVerifier = blob.read_shift(16);\n\to.EncryptedVerifierHash = blob.read_shift(16);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.7.1 Binary Document Password Verifier Derivation */\nfunction crypto_CreatePasswordVerifier_Method1(Password/*:string*/) {\n\tvar Verifier = 0x0000, PasswordArray;\n\tvar PasswordDecoded = _JS2ANSI(Password);\n\tvar len = PasswordDecoded.length + 1, i, PasswordByte;\n\tvar Intermediate1, Intermediate2, Intermediate3;\n\tPasswordArray = new_raw_buf(len);\n\tPasswordArray[0] = PasswordDecoded.length;\n\tfor(i = 1; i != len; ++i) PasswordArray[i] = PasswordDecoded[i-1];\n\tfor(i = len-1; i >= 0; --i) {\n\t\tPasswordByte = PasswordArray[i];\n\t\tIntermediate1 = ((Verifier & 0x4000) === 0x0000) ? 0 : 1;\n\t\tIntermediate2 = (Verifier << 1) & 0x7FFF;\n\t\tIntermediate3 = Intermediate1 | Intermediate2;\n\t\tVerifier = Intermediate3 ^ PasswordByte;\n\t}\n\treturn Verifier ^ 0xCE4B;\n}\n\n/* [MS-OFFCRYPTO] 2.3.7.2 Binary Document XOR Array Initialization */\nvar crypto_CreateXorArray_Method1 = /*#__PURE__*/(function() {\n\tvar PadArray = [0xBB, 0xFF, 0xFF, 0xBA, 0xFF, 0xFF, 0xB9, 0x80, 0x00, 0xBE, 0x0F, 0x00, 0xBF, 0x0F, 0x00];\n\tvar InitialCode = [0xE1F0, 0x1D0F, 0xCC9C, 0x84C0, 0x110C, 0x0E10, 0xF1CE, 0x313E, 0x1872, 0xE139, 0xD40F, 0x84F9, 0x280C, 0xA96A, 0x4EC3];\n\tvar XorMatrix = [0xAEFC, 0x4DD9, 0x9BB2, 0x2745, 0x4E8A, 0x9D14, 0x2A09, 0x7B61, 0xF6C2, 0xFDA5, 0xEB6B, 0xC6F7, 0x9DCF, 0x2BBF, 0x4563, 0x8AC6, 0x05AD, 0x0B5A, 0x16B4, 0x2D68, 0x5AD0, 0x0375, 0x06EA, 0x0DD4, 0x1BA8, 0x3750, 0x6EA0, 0xDD40, 0xD849, 0xA0B3, 0x5147, 0xA28E, 0x553D, 0xAA7A, 0x44D5, 0x6F45, 0xDE8A, 0xAD35, 0x4A4B, 0x9496, 0x390D, 0x721A, 0xEB23, 0xC667, 0x9CEF, 0x29FF, 0x53FE, 0xA7FC, 0x5FD9, 0x47D3, 0x8FA6, 0x0F6D, 0x1EDA, 0x3DB4, 0x7B68, 0xF6D0, 0xB861, 0x60E3, 0xC1C6, 0x93AD, 0x377B, 0x6EF6, 0xDDEC, 0x45A0, 0x8B40, 0x06A1, 0x0D42, 0x1A84, 0x3508, 0x6A10, 0xAA51, 0x4483, 0x8906, 0x022D, 0x045A, 0x08B4, 0x1168, 0x76B4, 0xED68, 0xCAF1, 0x85C3, 0x1BA7, 0x374E, 0x6E9C, 0x3730, 0x6E60, 0xDCC0, 0xA9A1, 0x4363, 0x86C6, 0x1DAD, 0x3331, 0x6662, 0xCCC4, 0x89A9, 0x0373, 0x06E6, 0x0DCC, 0x1021, 0x2042, 0x4084, 0x8108, 0x1231, 0x2462, 0x48C4];\n\tvar Ror = function(Byte) { return ((Byte/2) | (Byte*128)) & 0xFF; };\n\tvar XorRor = function(byte1, byte2) { return Ror(byte1 ^ byte2); };\n\tvar CreateXorKey_Method1 = function(Password) {\n\t\tvar XorKey = InitialCode[Password.length - 1];\n\t\tvar CurrentElement = 0x68;\n\t\tfor(var i = Password.length-1; i >= 0; --i) {\n\t\t\tvar Char = Password[i];\n\t\t\tfor(var j = 0; j != 7; ++j) {\n\t\t\t\tif(Char & 0x40) XorKey ^= XorMatrix[CurrentElement];\n\t\t\t\tChar *= 2; --CurrentElement;\n\t\t\t}\n\t\t}\n\t\treturn XorKey;\n\t};\n\treturn function(password/*:string*/) {\n\t\tvar Password = _JS2ANSI(password);\n\t\tvar XorKey = CreateXorKey_Method1(Password);\n\t\tvar Index = Password.length;\n\t\tvar ObfuscationArray = new_raw_buf(16);\n\t\tfor(var i = 0; i != 16; ++i) ObfuscationArray[i] = 0x00;\n\t\tvar Temp, PasswordLastChar, PadIndex;\n\t\tif((Index & 1) === 1) {\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(PadArray[0], Temp);\n\t\t\t--Index;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tPasswordLastChar = Password[Password.length - 1];\n\t\t\tObfuscationArray[Index] = XorRor(PasswordLastChar, Temp);\n\t\t}\n\t\twhile(Index > 0) {\n\t\t\t--Index;\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t\t--Index;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t}\n\t\tIndex = 15;\n\t\tPadIndex = 15 - Password.length;\n\t\twhile(PadIndex > 0) {\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(PadArray[PadIndex], Temp);\n\t\t\t--Index;\n\t\t\t--PadIndex;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t\t--Index;\n\t\t\t--PadIndex;\n\t\t}\n\t\treturn ObfuscationArray;\n\t};\n})();\n\n/* [MS-OFFCRYPTO] 2.3.7.3 Binary Document XOR Data Transformation Method 1 */\nvar crypto_DecryptData_Method1 = function(password/*:string*/, Data, XorArrayIndex, XorArray, O) {\n\t/* If XorArray is set, use it; if O is not set, make changes in-place */\n\tif(!O) O = Data;\n\tif(!XorArray) XorArray = crypto_CreateXorArray_Method1(password);\n\tvar Index, Value;\n\tfor(Index = 0; Index != Data.length; ++Index) {\n\t\tValue = Data[Index];\n\t\tValue ^= XorArray[XorArrayIndex];\n\t\tValue = ((Value>>5) | (Value<<3)) & 0xFF;\n\t\tO[Index] = Value;\n\t\t++XorArrayIndex;\n\t}\n\treturn [O, XorArrayIndex, XorArray];\n};\n\nvar crypto_MakeXorDecryptor = function(password/*:string*/) {\n\tvar XorArrayIndex = 0, XorArray = crypto_CreateXorArray_Method1(password);\n\treturn function(Data) {\n\t\tvar O = crypto_DecryptData_Method1(\"\", Data, XorArrayIndex, XorArray);\n\t\tXorArrayIndex = O[1];\n\t\treturn O[0];\n\t};\n};\n\n/* 2.5.343 */\nfunction parse_XORObfuscation(blob, length, opts, out) {\n\tvar o = ({ key: parseuint16(blob), verificationBytes: parseuint16(blob) }/*:any*/);\n\tif(opts.password) o.verifier = crypto_CreatePasswordVerifier_Method1(opts.password);\n\tout.valid = o.verificationBytes === o.verifier;\n\tif(out.valid) out.insitu = crypto_MakeXorDecryptor(opts.password);\n\treturn o;\n}\n\n/* 2.4.117 */\nfunction parse_FilePassHeader(blob, length/*:number*/, oo) {\n\tvar o = oo || {}; o.Info = blob.read_shift(2); blob.l -= 2;\n\tif(o.Info === 1) o.Data = parse_RC4Header(blob, length);\n\telse o.Data = parse_RC4CryptoHeader(blob, length);\n\treturn o;\n}\nfunction parse_FilePass(blob, length/*:number*/, opts) {\n\tvar o = ({ Type: opts.biff >= 8 ? blob.read_shift(2) : 0 }/*:any*/); /* wEncryptionType */\n\tif(o.Type) parse_FilePassHeader(blob, length-2, o);\n\telse parse_XORObfuscation(blob, opts.biff >= 8 ? length : length - 2, opts, o);\n\treturn o;\n}\n\n\nvar RTF = /*#__PURE__*/(function() {\n\tfunction rtf_to_sheet(d/*:RawData*/, opts)/*:Worksheet*/ {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return rtf_to_sheet_str(Base64_decode(d), opts);\n\t\t\tcase 'binary': return rtf_to_sheet_str(d, opts);\n\t\t\tcase 'buffer': return rtf_to_sheet_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\n\t\t\tcase 'array':  return rtf_to_sheet_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\n\t/* TODO: this is a stub */\n\tfunction rtf_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ {\n\t\tvar o = opts || {};\n\t\tvar ws/*:Worksheet*/ = o.dense ? ([]/*:any*/) : ({}/*:any*/);\n\n\t\tvar rows = str.match(/\\\\trowd.*?\\\\row\\b/g);\n\t\tif(!rows.length) throw new Error(\"RTF missing table\");\n\t\tvar range/*:Range*/ = ({s: {c:0, r:0}, e: {c:0, r:rows.length - 1}}/*:any*/);\n\t\trows.forEach(function(rowtf, R) {\n\t\t\tif(Array.isArray(ws)) ws[R] = [];\n\t\t\tvar rtfre = /\\\\\\w+\\b/g;\n\t\t\tvar last_index = 0;\n\t\t\tvar res;\n\t\t\tvar C = -1;\n\t\t\twhile((res = rtfre.exec(rowtf))) {\n\t\t\t\tswitch(res[0]) {\n\t\t\t\t\tcase \"\\\\cell\":\n\t\t\t\t\t\tvar data = rowtf.slice(last_index, rtfre.lastIndex - res[0].length);\n\t\t\t\t\t\tif(data[0] == \" \") data = data.slice(1);\n\t\t\t\t\t\t++C;\n\t\t\t\t\t\tif(data.length) {\n\t\t\t\t\t\t\t// TODO: value parsing, including codepage adjustments\n\t\t\t\t\t\t\tvar cell = {v: data, t:\"s\"};\n\t\t\t\t\t\t\tif(Array.isArray(ws)) ws[R][C] = cell;\n\t\t\t\t\t\t\telse ws[encode_cell({r:R, c:C})] = cell;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tlast_index = rtfre.lastIndex;\n\t\t\t}\n\t\t\tif(C > range.e.c) range.e.c = C;\n\t\t});\n\t\tws['!ref'] = encode_range(range);\n\t\treturn ws;\n\t}\n\n\tfunction rtf_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ { return sheet_to_workbook(rtf_to_sheet(d, opts), opts); }\n\n\t/* TODO: this is a stub */\n\tfunction sheet_to_rtf(ws/*:Worksheet*//*::, opts*/)/*:string*/ {\n\t\tvar o = [\"{\\\\rtf1\\\\ansi\"];\n\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\to.push(\"\\\\trowd\\\\trautofit1\");\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) o.push(\"\\\\cellx\" + (C+1));\n\t\t\to.push(\"\\\\pard\\\\intbl\");\n\t\t\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C]: ws[coord];\n\t\t\t\tif(!cell || cell.v == null && (!cell.f || cell.F)) continue;\n\t\t\t\to.push(\" \" + (cell.w || (format_cell(cell), cell.w)));\n\t\t\t\to.push(\"\\\\cell\");\n\t\t\t}\n\t\t\to.push(\"\\\\pard\\\\intbl\\\\row\");\n\t\t}\n\t\treturn o.join(\"\") + \"}\";\n\t}\n\n\treturn {\n\t\tto_workbook: rtf_to_workbook,\n\t\tto_sheet: rtf_to_sheet,\n\t\tfrom_sheet: sheet_to_rtf\n\t};\n})();\nfunction hex2RGB(h) {\n\tvar o = h.slice(h[0]===\"#\"?1:0).slice(0,6);\n\treturn [parseInt(o.slice(0,2),16),parseInt(o.slice(2,4),16),parseInt(o.slice(4,6),16)];\n}\nfunction rgb2Hex(rgb) {\n\tfor(var i=0,o=1; i!=3; ++i) o = o*256 + (rgb[i]>255?255:rgb[i]<0?0:rgb[i]);\n\treturn o.toString(16).toUpperCase().slice(1);\n}\n\nfunction rgb2HSL(rgb) {\n\tvar R = rgb[0]/255, G = rgb[1]/255, B=rgb[2]/255;\n\tvar M = Math.max(R, G, B), m = Math.min(R, G, B), C = M - m;\n\tif(C === 0) return [0, 0, R];\n\n\tvar H6 = 0, S = 0, L2 = (M + m);\n\tS = C / (L2 > 1 ? 2 - L2 : L2);\n\tswitch(M){\n\t\tcase R: H6 = ((G - B) / C + 6)%6; break;\n\t\tcase G: H6 = ((B - R) / C + 2); break;\n\t\tcase B: H6 = ((R - G) / C + 4); break;\n\t}\n\treturn [H6 / 6, S, L2 / 2];\n}\n\nfunction hsl2RGB(hsl){\n\tvar H = hsl[0], S = hsl[1], L = hsl[2];\n\tvar C = S * 2 * (L < 0.5 ? L : 1 - L), m = L - C/2;\n\tvar rgb = [m,m,m], h6 = 6*H;\n\n\tvar X;\n\tif(S !== 0) switch(h6|0) {\n\t\tcase 0: case 6: X = C * h6; rgb[0] += C; rgb[1] += X; break;\n\t\tcase 1: X = C * (2 - h6);   rgb[0] += X; rgb[1] += C; break;\n\t\tcase 2: X = C * (h6 - 2);   rgb[1] += C; rgb[2] += X; break;\n\t\tcase 3: X = C * (4 - h6);   rgb[1] += X; rgb[2] += C; break;\n\t\tcase 4: X = C * (h6 - 4);   rgb[2] += C; rgb[0] += X; break;\n\t\tcase 5: X = C * (6 - h6);   rgb[2] += X; rgb[0] += C; break;\n\t}\n\tfor(var i = 0; i != 3; ++i) rgb[i] = Math.round(rgb[i]*255);\n\treturn rgb;\n}\n\n/* 18.8.3 bgColor tint algorithm */\nfunction rgb_tint(hex, tint) {\n\tif(tint === 0) return hex;\n\tvar hsl = rgb2HSL(hex2RGB(hex));\n\tif (tint < 0) hsl[2] = hsl[2] * (1 + tint);\n\telse hsl[2] = 1 - (1 - hsl[2]) * (1 - tint);\n\treturn rgb2Hex(hsl2RGB(hsl));\n}\n\n/* 18.3.1.13 width calculations */\n/* [MS-OI29500] 2.1.595 Column Width & Formatting */\nvar DEF_MDW = 6, MAX_MDW = 15, MIN_MDW = 1, MDW = DEF_MDW;\nfunction width2px(width) { return Math.floor(( width + (Math.round(128/MDW))/256 )* MDW ); }\nfunction px2char(px) { return (Math.floor((px - 5)/MDW * 100 + 0.5))/100; }\nfunction char2width(chr) { return (Math.round((chr * MDW + 5)/MDW*256))/256; }\n//function px2char_(px) { return (((px - 5)/MDW * 100 + 0.5))/100; }\n//function char2width_(chr) { return (((chr * MDW + 5)/MDW*256))/256; }\nfunction cycle_width(collw) { return char2width(px2char(width2px(collw))); }\n/* XLSX/XLSB/XLS specify width in units of MDW */\nfunction find_mdw_colw(collw) {\n\tvar delta = Math.abs(collw - cycle_width(collw)), _MDW = MDW;\n\tif(delta > 0.005) for(MDW=MIN_MDW; MDW<MAX_MDW; ++MDW) if(Math.abs(collw - cycle_width(collw)) <= delta) { delta = Math.abs(collw - cycle_width(collw)); _MDW = MDW; }\n\tMDW = _MDW;\n}\n/* XLML specifies width in terms of pixels */\n/*function find_mdw_wpx(wpx) {\n\tvar delta = Infinity, guess = 0, _MDW = MIN_MDW;\n\tfor(MDW=MIN_MDW; MDW<MAX_MDW; ++MDW) {\n\t\tguess = char2width_(px2char_(wpx))*256;\n\t\tguess = (guess) % 1;\n\t\tif(guess > 0.5) guess--;\n\t\tif(Math.abs(guess) < delta) { delta = Math.abs(guess); _MDW = MDW; }\n\t}\n\tMDW = _MDW;\n}*/\n\nfunction process_col(coll/*:ColInfo*/) {\n\tif(coll.width) {\n\t\tcoll.wpx = width2px(coll.width);\n\t\tcoll.wch = px2char(coll.wpx);\n\t\tcoll.MDW = MDW;\n\t} else if(coll.wpx) {\n\t\tcoll.wch = px2char(coll.wpx);\n\t\tcoll.width = char2width(coll.wch);\n\t\tcoll.MDW = MDW;\n\t} else if(typeof coll.wch == 'number') {\n\t\tcoll.width = char2width(coll.wch);\n\t\tcoll.wpx = width2px(coll.width);\n\t\tcoll.MDW = MDW;\n\t}\n\tif(coll.customWidth) delete coll.customWidth;\n}\n\nvar DEF_PPI = 96, PPI = DEF_PPI;\nfunction px2pt(px) { return px * 96 / PPI; }\nfunction pt2px(pt) { return pt * PPI / 96; }\n\n/* [MS-EXSPXML3] 2.4.54 ST_enmPattern */\nvar XLMLPatternTypeMap = {\n\t\"None\": \"none\",\n\t\"Solid\": \"solid\",\n\t\"Gray50\": \"mediumGray\",\n\t\"Gray75\": \"darkGray\",\n\t\"Gray25\": \"lightGray\",\n\t\"HorzStripe\": \"darkHorizontal\",\n\t\"VertStripe\": \"darkVertical\",\n\t\"ReverseDiagStripe\": \"darkDown\",\n\t\"DiagStripe\": \"darkUp\",\n\t\"DiagCross\": \"darkGrid\",\n\t\"ThickDiagCross\": \"darkTrellis\",\n\t\"ThinHorzStripe\": \"lightHorizontal\",\n\t\"ThinVertStripe\": \"lightVertical\",\n\t\"ThinReverseDiagStripe\": \"lightDown\",\n\t\"ThinHorzCross\": \"lightGrid\"\n};\n\n/* 18.8.5 borders CT_Borders */\nfunction parse_borders(t, styles, themes, opts) {\n\tstyles.Borders = [];\n\tvar border = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '<borders': case '<borders>': case '</borders>': break;\n\n\t\t\t/* 18.8.4 border CT_Border */\n\t\t\tcase '<border': case '<border>': case '<border/>':\n\t\t\t\tborder = /*::(*/{}/*:: :any)*/;\n\t\t\t\tif(y.diagonalUp) border.diagonalUp = parsexmlbool(y.diagonalUp);\n\t\t\t\tif(y.diagonalDown) border.diagonalDown = parsexmlbool(y.diagonalDown);\n\t\t\t\tstyles.Borders.push(border);\n\t\t\t\tbreak;\n\t\t\tcase '</border>': break;\n\n\t\t\t/* note: not in spec, appears to be CT_BorderPr */\n\t\t\tcase '<left/>': break;\n\t\t\tcase '<left': case '<left>': break;\n\t\t\tcase '</left>': break;\n\n\t\t\t/* note: not in spec, appears to be CT_BorderPr */\n\t\t\tcase '<right/>': break;\n\t\t\tcase '<right': case '<right>': break;\n\t\t\tcase '</right>': break;\n\n\t\t\t/* 18.8.43 top CT_BorderPr */\n\t\t\tcase '<top/>': break;\n\t\t\tcase '<top': case '<top>': break;\n\t\t\tcase '</top>': break;\n\n\t\t\t/* 18.8.6 bottom CT_BorderPr */\n\t\t\tcase '<bottom/>': break;\n\t\t\tcase '<bottom': case '<bottom>': break;\n\t\t\tcase '</bottom>': break;\n\n\t\t\t/* 18.8.13 diagonal CT_BorderPr */\n\t\t\tcase '<diagonal': case '<diagonal>': case '<diagonal/>': break;\n\t\t\tcase '</diagonal>': break;\n\n\t\t\t/* 18.8.25 horizontal CT_BorderPr */\n\t\t\tcase '<horizontal': case '<horizontal>': case '<horizontal/>': break;\n\t\t\tcase '</horizontal>': break;\n\n\t\t\t/* 18.8.44 vertical CT_BorderPr */\n\t\t\tcase '<vertical': case '<vertical>': case '<vertical/>': break;\n\t\t\tcase '</vertical>': break;\n\n\t\t\t/* 18.8.37 start CT_BorderPr */\n\t\t\tcase '<start': case '<start>': case '<start/>': break;\n\t\t\tcase '</start>': break;\n\n\t\t\t/* 18.8.16 end CT_BorderPr */\n\t\t\tcase '<end': case '<end>': case '<end/>': break;\n\t\t\tcase '</end>': break;\n\n\t\t\t/* 18.8.? color CT_Color */\n\t\t\tcase '<color': case '<color>':\n\t\t\t\tbreak;\n\t\t\tcase '<color/>': case '</color>': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': break;\n\t\t\tcase '<ext': pass = true; break;\n\t\t\tcase '</ext>': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in borders');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.21 fills CT_Fills */\nfunction parse_fills(t, styles, themes, opts) {\n\tstyles.Fills = [];\n\tvar fill = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '<fills': case '<fills>': case '</fills>': break;\n\n\t\t\t/* 18.8.20 fill CT_Fill */\n\t\t\tcase '<fill>': case '<fill': case '<fill/>':\n\t\t\t\tfill = {}; styles.Fills.push(fill); break;\n\t\t\tcase '</fill>': break;\n\n\t\t\t/* 18.8.24 gradientFill CT_GradientFill */\n\t\t\tcase '<gradientFill>': break;\n\t\t\tcase '<gradientFill':\n\t\t\tcase '</gradientFill>': styles.Fills.push(fill); fill = {}; break;\n\n\t\t\t/* 18.8.32 patternFill CT_PatternFill */\n\t\t\tcase '<patternFill': case '<patternFill>':\n\t\t\t\tif(y.patternType) fill.patternType = y.patternType;\n\t\t\t\tbreak;\n\t\t\tcase '<patternFill/>': case '</patternFill>': break;\n\n\t\t\t/* 18.8.3 bgColor CT_Color */\n\t\t\tcase '<bgColor':\n\t\t\t\tif(!fill.bgColor) fill.bgColor = {};\n\t\t\t\tif(y.indexed) fill.bgColor.indexed = parseInt(y.indexed, 10);\n\t\t\t\tif(y.theme) fill.bgColor.theme = parseInt(y.theme, 10);\n\t\t\t\tif(y.tint) fill.bgColor.tint = parseFloat(y.tint);\n\t\t\t\t/* Excel uses ARGB strings */\n\t\t\t\tif(y.rgb) fill.bgColor.rgb = y.rgb.slice(-6);\n\t\t\t\tbreak;\n\t\t\tcase '<bgColor/>': case '</bgColor>': break;\n\n\t\t\t/* 18.8.19 fgColor CT_Color */\n\t\t\tcase '<fgColor':\n\t\t\t\tif(!fill.fgColor) fill.fgColor = {};\n\t\t\t\tif(y.theme) fill.fgColor.theme = parseInt(y.theme, 10);\n\t\t\t\tif(y.tint) fill.fgColor.tint = parseFloat(y.tint);\n\t\t\t\t/* Excel uses ARGB strings */\n\t\t\t\tif(y.rgb != null) fill.fgColor.rgb = y.rgb.slice(-6);\n\t\t\t\tbreak;\n\t\t\tcase '<fgColor/>': case '</fgColor>': break;\n\n\t\t\t/* 18.8.38 stop CT_GradientStop */\n\t\t\tcase '<stop': case '<stop/>': break;\n\t\t\tcase '</stop>': break;\n\n\t\t\t/* 18.8.? color CT_Color */\n\t\t\tcase '<color': case '<color/>': break;\n\t\t\tcase '</color>': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': break;\n\t\t\tcase '<ext': pass = true; break;\n\t\t\tcase '</ext>': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in fills');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.23 fonts CT_Fonts */\nfunction parse_fonts(t, styles, themes, opts) {\n\tstyles.Fonts = [];\n\tvar font = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '<fonts': case '<fonts>': case '</fonts>': break;\n\n\t\t\t/* 18.8.22 font CT_Font */\n\t\t\tcase '<font': case '<font>': break;\n\t\t\tcase '</font>': case '<font/>':\n\t\t\t\tstyles.Fonts.push(font);\n\t\t\t\tfont = {};\n\t\t\t\tbreak;\n\n\t\t\t/* 18.8.29 name CT_FontName */\n\t\t\tcase '<name': if(y.val) font.name = utf8read(y.val); break;\n\t\t\tcase '<name/>': case '</name>': break;\n\n\t\t\t/* 18.8.2  b CT_BooleanProperty */\n\t\t\tcase '<b': font.bold = y.val ? parsexmlbool(y.val) : 1; break;\n\t\t\tcase '<b/>': font.bold = 1; break;\n\n\t\t\t/* 18.8.26 i CT_BooleanProperty */\n\t\t\tcase '<i': font.italic = y.val ? parsexmlbool(y.val) : 1; break;\n\t\t\tcase '<i/>': font.italic = 1; break;\n\n\t\t\t/* 18.4.13 u CT_UnderlineProperty */\n\t\t\tcase '<u':\n\t\t\t\tswitch(y.val) {\n\t\t\t\t\tcase \"none\": font.underline = 0x00; break;\n\t\t\t\t\tcase \"single\": font.underline = 0x01; break;\n\t\t\t\t\tcase \"double\": font.underline = 0x02; break;\n\t\t\t\t\tcase \"singleAccounting\": font.underline = 0x21; break;\n\t\t\t\t\tcase \"doubleAccounting\": font.underline = 0x22; break;\n\t\t\t\t} break;\n\t\t\tcase '<u/>': font.underline = 1; break;\n\n\t\t\t/* 18.4.10 strike CT_BooleanProperty */\n\t\t\tcase '<strike': font.strike = y.val ? parsexmlbool(y.val) : 1; break;\n\t\t\tcase '<strike/>': font.strike = 1; break;\n\n\t\t\t/* 18.4.2  outline CT_BooleanProperty */\n\t\t\tcase '<outline': font.outline = y.val ? parsexmlbool(y.val) : 1; break;\n\t\t\tcase '<outline/>': font.outline = 1; break;\n\n\t\t\t/* 18.8.36 shadow CT_BooleanProperty */\n\t\t\tcase '<shadow': font.shadow = y.val ? parsexmlbool(y.val) : 1; break;\n\t\t\tcase '<shadow/>': font.shadow = 1; break;\n\n\t\t\t/* 18.8.12 condense CT_BooleanProperty */\n\t\t\tcase '<condense': font.condense = y.val ? parsexmlbool(y.val) : 1; break;\n\t\t\tcase '<condense/>': font.condense = 1; break;\n\n\t\t\t/* 18.8.17 extend CT_BooleanProperty */\n\t\t\tcase '<extend': font.extend = y.val ? parsexmlbool(y.val) : 1; break;\n\t\t\tcase '<extend/>': font.extend = 1; break;\n\n\t\t\t/* 18.4.11 sz CT_FontSize */\n\t\t\tcase '<sz': if(y.val) font.sz = +y.val; break;\n\t\t\tcase '<sz/>': case '</sz>': break;\n\n\t\t\t/* 18.4.14 vertAlign CT_VerticalAlignFontProperty */\n\t\t\tcase '<vertAlign': if(y.val) font.vertAlign = y.val; break;\n\t\t\tcase '<vertAlign/>': case '</vertAlign>': break;\n\n\t\t\t/* 18.8.18 family CT_FontFamily */\n\t\t\tcase '<family': if(y.val) font.family = parseInt(y.val,10); break;\n\t\t\tcase '<family/>': case '</family>': break;\n\n\t\t\t/* 18.8.35 scheme CT_FontScheme */\n\t\t\tcase '<scheme': if(y.val) font.scheme = y.val; break;\n\t\t\tcase '<scheme/>': case '</scheme>': break;\n\n\t\t\t/* 18.4.1 charset CT_IntProperty */\n\t\t\tcase '<charset':\n\t\t\t\tif(y.val == '1') break;\n\t\t\t\ty.codepage = CS2CP[parseInt(y.val, 10)];\n\t\t\t\tbreak;\n\n\t\t\t/* 18.?.? color CT_Color */\n\t\t\tcase '<color':\n\t\t\t\tif(!font.color) font.color = {};\n\t\t\t\tif(y.auto) font.color.auto = parsexmlbool(y.auto);\n\n\t\t\t\tif(y.rgb) font.color.rgb = y.rgb.slice(-6);\n\t\t\t\telse if(y.indexed) {\n\t\t\t\t\tfont.color.index = parseInt(y.indexed, 10);\n\t\t\t\t\tvar icv = XLSIcv[font.color.index];\n\t\t\t\t\tif(font.color.index == 81) icv = XLSIcv[1];\n\t\t\t\t\tif(!icv) icv = XLSIcv[1]; //throw new Error(x); // note: 206 is valid\n\t\t\t\t\tfont.color.rgb = icv[0].toString(16) + icv[1].toString(16) + icv[2].toString(16);\n\t\t\t\t} else if(y.theme) {\n\t\t\t\t\tfont.color.theme = parseInt(y.theme, 10);\n\t\t\t\t\tif(y.tint) font.color.tint = parseFloat(y.tint);\n\t\t\t\t\tif(y.theme && themes.themeElements && themes.themeElements.clrScheme) {\n\t\t\t\t\t\tfont.color.rgb = rgb_tint(themes.themeElements.clrScheme[font.color.theme].rgb, font.color.tint || 0);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\tcase '<color/>': case '</color>': break;\n\n\t\t\t/* note: sometimes mc:AlternateContent appears bare */\n\t\t\tcase '<AlternateContent': pass = true; break;\n\t\t\tcase '</AlternateContent>': pass = false; break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': break;\n\t\t\tcase '<ext': pass = true; break;\n\t\t\tcase '</ext>': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in fonts');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.31 numFmts CT_NumFmts */\nfunction parse_numFmts(t, styles, opts) {\n\tstyles.NumberFmt = [];\n\tvar k/*Array<number>*/ = (keys(table_fmt)/*:any*/);\n\tfor(var i=0; i < k.length; ++i) styles.NumberFmt[k[i]] = table_fmt[k[i]];\n\tvar m = t[0].match(tagregex);\n\tif(!m) return;\n\tfor(i=0; i < m.length; ++i) {\n\t\tvar y = parsexmltag(m[i]);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '<numFmts': case '</numFmts>': case '<numFmts/>': case '<numFmts>': break;\n\t\t\tcase '<numFmt': {\n\t\t\t\tvar f=unescapexml(utf8read(y.formatCode)), j=parseInt(y.numFmtId,10);\n\t\t\t\tstyles.NumberFmt[j] = f;\n\t\t\t\tif(j>0) {\n\t\t\t\t\tif(j > 0x188) {\n\t\t\t\t\t\tfor(j = 0x188; j > 0x3c; --j) if(styles.NumberFmt[j] == null) break;\n\t\t\t\t\t\tstyles.NumberFmt[j] = f;\n\t\t\t\t\t}\n\t\t\t\t\tSSF_load(f,j);\n\t\t\t\t}\n\t\t\t} break;\n\t\t\tcase '</numFmt>': break;\n\t\t\tdefault: if(opts.WTF) throw new Error('unrecognized ' + y[0] + ' in numFmts');\n\t\t}\n\t}\n}\n\nfunction write_numFmts(NF/*:{[n:number|string]:string}*//*::, opts*/) {\n\tvar o = [\"<numFmts>\"];\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) o[o.length] = (writextag('numFmt',null,{numFmtId:i,formatCode:escapexml(NF[i])}));\n\t});\n\tif(o.length === 1) return \"\";\n\to[o.length] = (\"</numFmts>\");\n\to[0] = writextag('numFmts', null, { count:o.length-2 }).replace(\"/>\", \">\");\n\treturn o.join(\"\");\n}\n\n/* 18.8.10 cellXfs CT_CellXfs */\nvar cellXF_uint = [ \"numFmtId\", \"fillId\", \"fontId\", \"borderId\", \"xfId\" ];\nvar cellXF_bool = [ \"applyAlignment\", \"applyBorder\", \"applyFill\", \"applyFont\", \"applyNumberFormat\", \"applyProtection\", \"pivotButton\", \"quotePrefix\" ];\nfunction parse_cellXfs(t, styles, opts) {\n\tstyles.CellXf = [];\n\tvar xf;\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x), i = 0;\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '<cellXfs': case '<cellXfs>': case '<cellXfs/>': case '</cellXfs>': break;\n\n\t\t\t/* 18.8.45 xf CT_Xf */\n\t\t\tcase '<xf': case '<xf/>':\n\t\t\t\txf = y;\n\t\t\t\tdelete xf[0];\n\t\t\t\tfor(i = 0; i < cellXF_uint.length; ++i) if(xf[cellXF_uint[i]])\n\t\t\t\t\txf[cellXF_uint[i]] = parseInt(xf[cellXF_uint[i]], 10);\n\t\t\t\tfor(i = 0; i < cellXF_bool.length; ++i) if(xf[cellXF_bool[i]])\n\t\t\t\t\txf[cellXF_bool[i]] = parsexmlbool(xf[cellXF_bool[i]]);\n\t\t\t\tif(styles.NumberFmt && xf.numFmtId > 0x188) {\n\t\t\t\t\tfor(i = 0x188; i > 0x3c; --i) if(styles.NumberFmt[xf.numFmtId] == styles.NumberFmt[i]) { xf.numFmtId = i; break; }\n\t\t\t\t}\n\t\t\t\tstyles.CellXf.push(xf); break;\n\t\t\tcase '</xf>': break;\n\n\t\t\t/* 18.8.1 alignment CT_CellAlignment */\n\t\t\tcase '<alignment': case '<alignment/>':\n\t\t\t\tvar alignment = {};\n\t\t\t\tif(y.vertical) alignment.vertical = y.vertical;\n\t\t\t\tif(y.horizontal) alignment.horizontal = y.horizontal;\n\t\t\t\tif(y.textRotation != null) alignment.textRotation = y.textRotation;\n\t\t\t\tif(y.indent) alignment.indent = y.indent;\n\t\t\t\tif(y.wrapText) alignment.wrapText = parsexmlbool(y.wrapText);\n\t\t\t\txf.alignment = alignment;\n\t\t\t\tbreak;\n\t\t\tcase '</alignment>': break;\n\n\t\t\t/* 18.8.33 protection CT_CellProtection */\n\t\t\tcase '<protection':\n\t\t\t\tbreak;\n\t\t\tcase '</protection>': case '<protection/>': break;\n\n\t\t\t/* note: sometimes mc:AlternateContent appears bare */\n\t\t\tcase '<AlternateContent': pass = true; break;\n\t\t\tcase '</AlternateContent>': pass = false; break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': break;\n\t\t\tcase '<ext': pass = true; break;\n\t\t\tcase '</ext>': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in cellXfs');\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction write_cellXfs(cellXfs)/*:string*/ {\n\tvar o/*:Array<string>*/ = [];\n\to[o.length] = (writextag('cellXfs',null));\n\tcellXfs.forEach(function(c) {\n\t\to[o.length] = (writextag('xf', null, c));\n\t});\n\to[o.length] = (\"</cellXfs>\");\n\tif(o.length === 2) return \"\";\n\to[0] = writextag('cellXfs',null, {count:o.length-2}).replace(\"/>\",\">\");\n\treturn o.join(\"\");\n}\n\n/* 18.8 Styles CT_Stylesheet*/\nvar parse_sty_xml= /*#__PURE__*/(function make_pstyx() {\nvar numFmtRegex = /<(?:\\w+:)?numFmts([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?numFmts>/;\nvar cellXfRegex = /<(?:\\w+:)?cellXfs([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?cellXfs>/;\nvar fillsRegex = /<(?:\\w+:)?fills([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?fills>/;\nvar fontsRegex = /<(?:\\w+:)?fonts([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?fonts>/;\nvar bordersRegex = /<(?:\\w+:)?borders([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?borders>/;\n\nreturn function parse_sty_xml(data, themes, opts) {\n\tvar styles = {};\n\tif(!data) return styles;\n\tdata = data.replace(/<!--([\\s\\S]*?)-->/mg,\"\").replace(/<!DOCTYPE[^\\[]*\\[[^\\]]*\\]>/gm,\"\");\n\t/* 18.8.39 styleSheet CT_Stylesheet */\n\tvar t;\n\n\t/* 18.8.31 numFmts CT_NumFmts ? */\n\tif((t=data.match(numFmtRegex))) parse_numFmts(t, styles, opts);\n\n\t/* 18.8.23 fonts CT_Fonts ? */\n\tif((t=data.match(fontsRegex))) parse_fonts(t, styles, themes, opts);\n\n\t/* 18.8.21 fills CT_Fills ? */\n\tif((t=data.match(fillsRegex))) parse_fills(t, styles, themes, opts);\n\n\t/* 18.8.5  borders CT_Borders ? */\n\tif((t=data.match(bordersRegex))) parse_borders(t, styles, themes, opts);\n\n\t/* 18.8.9  cellStyleXfs CT_CellStyleXfs ? */\n\t/* 18.8.8  cellStyles CT_CellStyles ? */\n\n\t/* 18.8.10 cellXfs CT_CellXfs ? */\n\tif((t=data.match(cellXfRegex))) parse_cellXfs(t, styles, opts);\n\n\t/* 18.8.15 dxfs CT_Dxfs ? */\n\t/* 18.8.42 tableStyles CT_TableStyles ? */\n\t/* 18.8.11 colors CT_Colors ? */\n\t/* 18.2.10 extLst CT_ExtensionList ? */\n\n\treturn styles;\n};\n})();\n\nfunction write_sty_xml(wb/*:Workbook*/, opts)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('styleSheet', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t'xmlns:vt': XMLNS.vt\n\t})], w;\n\tif(wb.SSF && (w = write_numFmts(wb.SSF)) != null) o[o.length] = w;\n\to[o.length] = ('<fonts count=\"1\"><font><sz val=\"12\"/><color theme=\"1\"/><name val=\"Calibri\"/><family val=\"2\"/><scheme val=\"minor\"/></font></fonts>');\n\to[o.length] = ('<fills count=\"2\"><fill><patternFill patternType=\"none\"/></fill><fill><patternFill patternType=\"gray125\"/></fill></fills>');\n\to[o.length] = ('<borders count=\"1\"><border><left/><right/><top/><bottom/><diagonal/></border></borders>');\n\to[o.length] = ('<cellStyleXfs count=\"1\"><xf numFmtId=\"0\" fontId=\"0\" fillId=\"0\" borderId=\"0\"/></cellStyleXfs>');\n\tif((w = write_cellXfs(opts.cellXfs))) o[o.length] = (w);\n\to[o.length] = ('<cellStyles count=\"1\"><cellStyle name=\"Normal\" xfId=\"0\" builtinId=\"0\"/></cellStyles>');\n\to[o.length] = ('<dxfs count=\"0\"/>');\n\to[o.length] = ('<tableStyles count=\"0\" defaultTableStyle=\"TableStyleMedium9\" defaultPivotStyle=\"PivotStyleMedium4\"/>');\n\n\tif(o.length>2){ o[o.length] = ('</styleSheet>'); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.657 BrtFmt */\nfunction parse_BrtFmt(data, length/*:number*/) {\n\tvar numFmtId = data.read_shift(2);\n\tvar stFmtCode = parse_XLWideString(data,length-2);\n\treturn [numFmtId, stFmtCode];\n}\nfunction write_BrtFmt(i/*:number*/, f/*:string*/, o) {\n\tif(!o) o = new_buf(6 + 4 * f.length);\n\to.write_shift(2, i);\n\twrite_XLWideString(f, o);\n\tvar out = (o.length > o.l) ? o.slice(0, o.l) : o;\n\tif(o.l == null) o.l = o.length;\n\treturn out;\n}\n\n/* [MS-XLSB] 2.4.659 BrtFont TODO */\nfunction parse_BrtFont(data, length/*:number*/, opts) {\n\tvar out = ({}/*:any*/);\n\n\tout.sz = data.read_shift(2) / 20;\n\n\tvar grbit = parse_FontFlags(data, 2, opts);\n\tif(grbit.fItalic) out.italic = 1;\n\tif(grbit.fCondense) out.condense = 1;\n\tif(grbit.fExtend) out.extend = 1;\n\tif(grbit.fShadow) out.shadow = 1;\n\tif(grbit.fOutline) out.outline = 1;\n\tif(grbit.fStrikeout) out.strike = 1;\n\n\tvar bls = data.read_shift(2);\n\tif(bls === 0x02BC) out.bold = 1;\n\n\tswitch(data.read_shift(2)) {\n\t\t/* case 0: out.vertAlign = \"baseline\"; break; */\n\t\tcase 1: out.vertAlign = \"superscript\"; break;\n\t\tcase 2: out.vertAlign = \"subscript\"; break;\n\t}\n\n\tvar underline = data.read_shift(1);\n\tif(underline != 0) out.underline = underline;\n\n\tvar family = data.read_shift(1);\n\tif(family > 0) out.family = family;\n\n\tvar bCharSet = data.read_shift(1);\n\tif(bCharSet > 0) out.charset = bCharSet;\n\n\tdata.l++;\n\tout.color = parse_BrtColor(data, 8);\n\n\tswitch(data.read_shift(1)) {\n\t\t/* case 0: out.scheme = \"none\": break; */\n\t\tcase 1: out.scheme = \"major\"; break;\n\t\tcase 2: out.scheme = \"minor\"; break;\n\t}\n\n\tout.name = parse_XLWideString(data, length - 21);\n\n\treturn out;\n}\nfunction write_BrtFont(font/*:any*/, o) {\n\tif(!o) o = new_buf(25+4*32);\n\to.write_shift(2, font.sz * 20);\n\twrite_FontFlags(font, o);\n\to.write_shift(2, font.bold ? 0x02BC : 0x0190);\n\tvar sss = 0;\n\tif(font.vertAlign == \"superscript\") sss = 1;\n\telse if(font.vertAlign == \"subscript\") sss = 2;\n\to.write_shift(2, sss);\n\to.write_shift(1, font.underline || 0);\n\to.write_shift(1, font.family || 0);\n\to.write_shift(1, font.charset || 0);\n\to.write_shift(1, 0);\n\twrite_BrtColor(font.color, o);\n\tvar scheme = 0;\n\tif(font.scheme == \"major\") scheme = 1;\n\tif(font.scheme == \"minor\") scheme = 2;\n\to.write_shift(1, scheme);\n\twrite_XLWideString(font.name, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.650 BrtFill */\nvar XLSBFillPTNames = [\n\t\"none\",\n\t\"solid\",\n\t\"mediumGray\",\n\t\"darkGray\",\n\t\"lightGray\",\n\t\"darkHorizontal\",\n\t\"darkVertical\",\n\t\"darkDown\",\n\t\"darkUp\",\n\t\"darkGrid\",\n\t\"darkTrellis\",\n\t\"lightHorizontal\",\n\t\"lightVertical\",\n\t\"lightDown\",\n\t\"lightUp\",\n\t\"lightGrid\",\n\t\"lightTrellis\",\n\t\"gray125\",\n\t\"gray0625\"\n];\nvar rev_XLSBFillPTNames/*:EvertNumType*/;\n/* TODO: gradient fill representation */\nvar parse_BrtFill = parsenoop;\nfunction write_BrtFill(fill, o) {\n\tif(!o) o = new_buf(4*3 + 8*7 + 16*1);\n\tif(!rev_XLSBFillPTNames) rev_XLSBFillPTNames = (evert(XLSBFillPTNames)/*:any*/);\n\tvar fls/*:number*/ = rev_XLSBFillPTNames[fill.patternType];\n\tif(fls == null) fls = 0x28;\n\to.write_shift(4, fls);\n\tvar j = 0;\n\tif(fls != 0x28) {\n\t\t/* TODO: custom FG Color */\n\t\twrite_BrtColor({auto:1}, o);\n\t\t/* TODO: custom BG Color */\n\t\twrite_BrtColor({auto:1}, o);\n\n\t\tfor(; j < 12; ++j) o.write_shift(4, 0);\n\t} else {\n\t\tfor(; j < 4; ++j) o.write_shift(4, 0);\n\n\t\tfor(; j < 12; ++j) o.write_shift(4, 0); /* TODO */\n\t\t/* iGradientType */\n\t\t/* xnumDegree */\n\t\t/* xnumFillToLeft */\n\t\t/* xnumFillToRight */\n\t\t/* xnumFillToTop */\n\t\t/* xnumFillToBottom */\n\t\t/* cNumStop */\n\t\t/* xfillGradientStop */\n\t}\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.824 BrtXF */\nfunction parse_BrtXF(data, length/*:number*/) {\n\tvar tgt = data.l + length;\n\tvar ixfeParent = data.read_shift(2);\n\tvar ifmt = data.read_shift(2);\n\tdata.l = tgt;\n\treturn {ixfe:ixfeParent, numFmtId:ifmt };\n}\nfunction write_BrtXF(data, ixfeP, o) {\n\tif(!o) o = new_buf(16);\n\to.write_shift(2, ixfeP||0);\n\to.write_shift(2, data.numFmtId||0);\n\to.write_shift(2, 0); /* iFont */\n\to.write_shift(2, 0); /* iFill */\n\to.write_shift(2, 0); /* ixBorder */\n\to.write_shift(1, 0); /* trot */\n\to.write_shift(1, 0); /* indent */\n\tvar flow = 0;\n\to.write_shift(1, flow); /* flags */\n\to.write_shift(1, 0); /* flags */\n\to.write_shift(1, 0); /* xfGrbitAtr */\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.4 Blxf TODO */\nfunction write_Blxf(data, o) {\n\tif(!o) o = new_buf(10);\n\to.write_shift(1, 0); /* dg */\n\to.write_shift(1, 0);\n\to.write_shift(4, 0); /* color */\n\to.write_shift(4, 0); /* color */\n\treturn o;\n}\n/* [MS-XLSB] 2.4.302 BrtBorder TODO */\nvar parse_BrtBorder = parsenoop;\nfunction write_BrtBorder(border, o) {\n\tif(!o) o = new_buf(51);\n\to.write_shift(1, 0); /* diagonal */\n\twrite_Blxf(null, o); /* top */\n\twrite_Blxf(null, o); /* bottom */\n\twrite_Blxf(null, o); /* left */\n\twrite_Blxf(null, o); /* right */\n\twrite_Blxf(null, o); /* diag */\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.763 BrtStyle TODO */\nfunction write_BrtStyle(style, o) {\n\tif(!o) o = new_buf(12+4*10);\n\to.write_shift(4, style.xfId);\n\to.write_shift(2, 1);\n\to.write_shift(1, +style.builtinId);\n\to.write_shift(1, 0); /* iLevel */\n\twrite_XLNullableWideString(style.name || \"\", o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.272 BrtBeginTableStyles */\nfunction write_BrtBeginTableStyles(cnt, defTableStyle, defPivotStyle) {\n\tvar o = new_buf(4+256*2*4);\n\to.write_shift(4, cnt);\n\twrite_XLNullableWideString(defTableStyle, o);\n\twrite_XLNullableWideString(defPivotStyle, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.1.7.50 Styles */\nfunction parse_sty_bin(data, themes, opts) {\n\tvar styles = {};\n\tstyles.NumberFmt = ([]/*:any*/);\n\tfor(var y in table_fmt) styles.NumberFmt[y] = table_fmt[y];\n\n\tstyles.CellXf = [];\n\tstyles.Fonts = [];\n\tvar state/*:Array<string>*/ = [];\n\tvar pass = false;\n\trecordhopper(data, function hopper_sty(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x002C: /* BrtFmt */\n\t\t\t\tstyles.NumberFmt[val[0]] = val[1]; SSF_load(val[1], val[0]);\n\t\t\t\tbreak;\n\t\t\tcase 0x002B: /* BrtFont */\n\t\t\t\tstyles.Fonts.push(val);\n\t\t\t\tif(val.color.theme != null && themes && themes.themeElements && themes.themeElements.clrScheme) {\n\t\t\t\t\tval.color.rgb = rgb_tint(themes.themeElements.clrScheme[val.color.theme].rgb, val.color.tint || 0);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x0401: /* BrtKnownFonts */ break;\n\t\t\tcase 0x002D: /* BrtFill */\n\t\t\t\tbreak;\n\t\t\tcase 0x002E: /* BrtBorder */\n\t\t\t\tbreak;\n\t\t\tcase 0x002F: /* BrtXF */\n\t\t\t\tif(state[state.length - 1] == 0x0269 /* BrtBeginCellXFs */) {\n\t\t\t\t\tstyles.CellXf.push(val);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x0030: /* BrtStyle */\n\t\t\tcase 0x01FB: /* BrtDXF */\n\t\t\tcase 0x023C: /* BrtMRUColor */\n\t\t\tcase 0x01DB: /* BrtIndexedColor */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0493: /* BrtDXF14 */\n\t\t\tcase 0x0836: /* BrtDXF15 */\n\t\t\tcase 0x046A: /* BrtSlicerStyleElement */\n\t\t\tcase 0x0200: /* BrtTableStyleElement */\n\t\t\tcase 0x082F: /* BrtTimelineStyleElement */\n\t\t\tcase 0x0C00: /* BrtUid */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* BrtFRTBegin */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* BrtFRTEnd */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* BrtACBegin */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* BrtACEnd */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T > 0) state.push(RT);\n\t\t\t\telse if(R.T < 0) state.pop();\n\t\t\t\telse if(!pass || (opts.WTF && state[state.length-1] != 0x0025 /* BrtACBegin */)) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn styles;\n}\n\nfunction write_FMTS_bin(ba, NF/*:?SSFTable*/) {\n\tif(!NF) return;\n\tvar cnt = 0;\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\t/*:: if(!NF) return; */\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) ++cnt;\n\t});\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0267 /* BrtBeginFmts */, write_UInt32LE(cnt));\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\t/*:: if(!NF) return; */\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) write_record(ba, 0x002C /* BrtFmt */, write_BrtFmt(i, NF[i]));\n\t});\n\twrite_record(ba, 0x0268 /* BrtEndFmts */);\n}\n\nfunction write_FONTS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0263 /* BrtBeginFonts */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002B /* BrtFont */, write_BrtFont({\n\t\tsz:12,\n\t\tcolor: {theme:1},\n\t\tname: \"Calibri\",\n\t\tfamily: 2,\n\t\tscheme: \"minor\"\n\t}));\n\t/* 1*65491BrtFont [ACFONTS] */\n\twrite_record(ba, 0x0264 /* BrtEndFonts */);\n}\n\nfunction write_FILLS_bin(ba/*::, data*/) {\n\tvar cnt = 2;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x025B /* BrtBeginFills */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002D /* BrtFill */, write_BrtFill({patternType:\"none\"}));\n\twrite_record(ba, 0x002D /* BrtFill */, write_BrtFill({patternType:\"gray125\"}));\n\t/* 1*65431BrtFill */\n\twrite_record(ba, 0x025C /* BrtEndFills */);\n}\n\nfunction write_BORDERS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0265 /* BrtBeginBorders */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002E /* BrtBorder */, write_BrtBorder({}));\n\t/* 1*65430BrtBorder */\n\twrite_record(ba, 0x0266 /* BrtEndBorders */);\n}\n\nfunction write_CELLSTYLEXFS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\twrite_record(ba, 0x0272 /* BrtBeginCellStyleXFs */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002F /* BrtXF */, write_BrtXF({\n\t\tnumFmtId: 0,\n\t\tfontId:   0,\n\t\tfillId:   0,\n\t\tborderId: 0\n\t}, 0xFFFF));\n\t/* 1*65430(BrtXF *FRT) */\n\twrite_record(ba, 0x0273 /* BrtEndCellStyleXFs */);\n}\n\nfunction write_CELLXFS_bin(ba, data) {\n\twrite_record(ba, 0x0269 /* BrtBeginCellXFs */, write_UInt32LE(data.length));\n\tdata.forEach(function(c) { write_record(ba, 0x002F /* BrtXF */, write_BrtXF(c,0)); });\n\t/* 1*65430(BrtXF *FRT) */\n\twrite_record(ba, 0x026A /* BrtEndCellXFs */);\n}\n\nfunction write_STYLES_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\twrite_record(ba, 0x026B /* BrtBeginStyles */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x0030 /* BrtStyle */, write_BrtStyle({\n\t\txfId:0,\n\t\tbuiltinId:0,\n\t\tname:\"Normal\"\n\t}));\n\t/* 1*65430(BrtStyle *FRT) */\n\twrite_record(ba, 0x026C /* BrtEndStyles */);\n}\n\nfunction write_DXFS_bin(ba/*::, data*/) {\n\tvar cnt = 0;\n\n\twrite_record(ba, 0x01F9 /* BrtBeginDXFs */, write_UInt32LE(cnt));\n\t/* *2147483647(BrtDXF *FRT) */\n\twrite_record(ba, 0x01FA /* BrtEndDXFs */);\n}\n\nfunction write_TABLESTYLES_bin(ba/*::, data*/) {\n\tvar cnt = 0;\n\n\twrite_record(ba, 0x01FC /* BrtBeginTableStyles */, write_BrtBeginTableStyles(cnt, \"TableStyleMedium9\", \"PivotStyleMedium4\"));\n\t/* *TABLESTYLE */\n\twrite_record(ba, 0x01FD /* BrtEndTableStyles */);\n}\n\nfunction write_COLORPALETTE_bin(/*::ba, data*/) {\n\treturn;\n\t/* BrtBeginColorPalette [INDEXEDCOLORS] [MRUCOLORS] BrtEndColorPalette */\n}\n\n/* [MS-XLSB] 2.1.7.50 Styles */\nfunction write_sty_bin(wb, opts) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x0116 /* BrtBeginStyleSheet */);\n\twrite_FMTS_bin(ba, wb.SSF);\n\twrite_FONTS_bin(ba, wb);\n\twrite_FILLS_bin(ba, wb);\n\twrite_BORDERS_bin(ba, wb);\n\twrite_CELLSTYLEXFS_bin(ba, wb);\n\twrite_CELLXFS_bin(ba, opts.cellXfs);\n\twrite_STYLES_bin(ba, wb);\n\twrite_DXFS_bin(ba, wb);\n\twrite_TABLESTYLES_bin(ba, wb);\n\twrite_COLORPALETTE_bin(ba, wb);\n\t/* FRTSTYLESHEET*/\n\twrite_record(ba, 0x0117 /* BrtEndStyleSheet */);\n\treturn ba.end();\n}\n/* Even though theme layout is dk1 lt1 dk2 lt2, true order is lt1 dk1 lt2 dk2 */\nvar XLSXThemeClrScheme = [\n\t'</a:lt1>', '</a:dk1>', '</a:lt2>', '</a:dk2>',\n\t'</a:accent1>', '</a:accent2>', '</a:accent3>',\n\t'</a:accent4>', '</a:accent5>', '</a:accent6>',\n\t'</a:hlink>', '</a:folHlink>'\n];\n/* 20.1.6.2 clrScheme CT_ColorScheme */\nfunction parse_clrScheme(t, themes, opts) {\n\tthemes.themeElements.clrScheme = [];\n\tvar color = {};\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\t/* 20.1.6.2 clrScheme (Color Scheme) CT_ColorScheme */\n\t\t\tcase '<a:clrScheme': case '</a:clrScheme>': break;\n\n\t\t\t/* 20.1.2.3.32 srgbClr CT_SRgbColor */\n\t\t\tcase '<a:srgbClr':\n\t\t\t\tcolor.rgb = y.val; break;\n\n\t\t\t/* 20.1.2.3.33 sysClr CT_SystemColor */\n\t\t\tcase '<a:sysClr':\n\t\t\t\tcolor.rgb = y.lastClr; break;\n\n\t\t\t/* 20.1.4.1.1 accent1 (Accent 1) */\n\t\t\t/* 20.1.4.1.2 accent2 (Accent 2) */\n\t\t\t/* 20.1.4.1.3 accent3 (Accent 3) */\n\t\t\t/* 20.1.4.1.4 accent4 (Accent 4) */\n\t\t\t/* 20.1.4.1.5 accent5 (Accent 5) */\n\t\t\t/* 20.1.4.1.6 accent6 (Accent 6) */\n\t\t\t/* 20.1.4.1.9 dk1 (Dark 1) */\n\t\t\t/* 20.1.4.1.10 dk2 (Dark 2) */\n\t\t\t/* 20.1.4.1.15 folHlink (Followed Hyperlink) */\n\t\t\t/* 20.1.4.1.19 hlink (Hyperlink) */\n\t\t\t/* 20.1.4.1.22 lt1 (Light 1) */\n\t\t\t/* 20.1.4.1.23 lt2 (Light 2) */\n\t\t\tcase '<a:dk1>': case '</a:dk1>':\n\t\t\tcase '<a:lt1>': case '</a:lt1>':\n\t\t\tcase '<a:dk2>': case '</a:dk2>':\n\t\t\tcase '<a:lt2>': case '</a:lt2>':\n\t\t\tcase '<a:accent1>': case '</a:accent1>':\n\t\t\tcase '<a:accent2>': case '</a:accent2>':\n\t\t\tcase '<a:accent3>': case '</a:accent3>':\n\t\t\tcase '<a:accent4>': case '</a:accent4>':\n\t\t\tcase '<a:accent5>': case '</a:accent5>':\n\t\t\tcase '<a:accent6>': case '</a:accent6>':\n\t\t\tcase '<a:hlink>': case '</a:hlink>':\n\t\t\tcase '<a:folHlink>': case '</a:folHlink>':\n\t\t\t\tif (y[0].charAt(1) === '/') {\n\t\t\t\t\tthemes.themeElements.clrScheme[XLSXThemeClrScheme.indexOf(y[0])] = color;\n\t\t\t\t\tcolor = {};\n\t\t\t\t} else {\n\t\t\t\t\tcolor.name = y[0].slice(3, y[0].length - 1);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tdefault: if(opts && opts.WTF) throw new Error('Unrecognized ' + y[0] + ' in clrScheme');\n\t\t}\n\t});\n}\n\n/* 20.1.4.1.18 fontScheme CT_FontScheme */\nfunction parse_fontScheme(/*::t, themes, opts*/) { }\n\n/* 20.1.4.1.15 fmtScheme CT_StyleMatrix */\nfunction parse_fmtScheme(/*::t, themes, opts*/) { }\n\nvar clrsregex = /<a:clrScheme([^>]*)>[\\s\\S]*<\\/a:clrScheme>/;\nvar fntsregex = /<a:fontScheme([^>]*)>[\\s\\S]*<\\/a:fontScheme>/;\nvar fmtsregex = /<a:fmtScheme([^>]*)>[\\s\\S]*<\\/a:fmtScheme>/;\n\n/* 20.1.6.10 themeElements CT_BaseStyles */\nfunction parse_themeElements(data, themes, opts) {\n\tthemes.themeElements = {};\n\n\tvar t;\n\n\t[\n\t\t/* clrScheme CT_ColorScheme */\n\t\t['clrScheme', clrsregex, parse_clrScheme],\n\t\t/* fontScheme CT_FontScheme */\n\t\t['fontScheme', fntsregex, parse_fontScheme],\n\t\t/* fmtScheme CT_StyleMatrix */\n\t\t['fmtScheme', fmtsregex, parse_fmtScheme]\n\t].forEach(function(m) {\n\t\tif(!(t=data.match(m[1]))) throw new Error(m[0] + ' not found in themeElements');\n\t\tm[2](t, themes, opts);\n\t});\n}\n\nvar themeltregex = /<a:themeElements([^>]*)>[\\s\\S]*<\\/a:themeElements>/;\n\n/* 14.2.7 Theme Part */\nfunction parse_theme_xml(data/*:string*/, opts) {\n\t/* 20.1.6.9 theme CT_OfficeStyleSheet */\n\tif(!data || data.length === 0) data = write_theme();\n\n\tvar t;\n\tvar themes = {};\n\n\t/* themeElements CT_BaseStyles */\n\tif(!(t=data.match(themeltregex))) throw new Error('themeElements not found in theme');\n\tparse_themeElements(t[0], themes, opts);\n\tthemes.raw = data;\n\treturn themes;\n}\n\nfunction write_theme(Themes, opts)/*:string*/ {\n\tif(opts && opts.themeXLSX) return opts.themeXLSX;\n\tif(Themes && typeof Themes.raw == \"string\") return Themes.raw;\n\tvar o = [XML_HEADER];\n\to[o.length] = '<a:theme xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" name=\"Office Theme\">';\n\to[o.length] =  '<a:themeElements>';\n\n\to[o.length] =   '<a:clrScheme name=\"Office\">';\n\to[o.length] =    '<a:dk1><a:sysClr val=\"windowText\" lastClr=\"000000\"/></a:dk1>';\n\to[o.length] =    '<a:lt1><a:sysClr val=\"window\" lastClr=\"FFFFFF\"/></a:lt1>';\n\to[o.length] =    '<a:dk2><a:srgbClr val=\"1F497D\"/></a:dk2>';\n\to[o.length] =    '<a:lt2><a:srgbClr val=\"EEECE1\"/></a:lt2>';\n\to[o.length] =    '<a:accent1><a:srgbClr val=\"4F81BD\"/></a:accent1>';\n\to[o.length] =    '<a:accent2><a:srgbClr val=\"C0504D\"/></a:accent2>';\n\to[o.length] =    '<a:accent3><a:srgbClr val=\"9BBB59\"/></a:accent3>';\n\to[o.length] =    '<a:accent4><a:srgbClr val=\"8064A2\"/></a:accent4>';\n\to[o.length] =    '<a:accent5><a:srgbClr val=\"4BACC6\"/></a:accent5>';\n\to[o.length] =    '<a:accent6><a:srgbClr val=\"F79646\"/></a:accent6>';\n\to[o.length] =    '<a:hlink><a:srgbClr val=\"0000FF\"/></a:hlink>';\n\to[o.length] =    '<a:folHlink><a:srgbClr val=\"800080\"/></a:folHlink>';\n\to[o.length] =   '</a:clrScheme>';\n\n\to[o.length] =   '<a:fontScheme name=\"Office\">';\n\to[o.length] =    '<a:majorFont>';\n\to[o.length] =     '<a:latin typeface=\"Cambria\"/>';\n\to[o.length] =     '<a:ea typeface=\"\"/>';\n\to[o.length] =     '<a:cs typeface=\"\"/>';\n\to[o.length] =     '<a:font script=\"Jpan\" typeface=\"ＭＳ Ｐゴシック\"/>';\n\to[o.length] =     '<a:font script=\"Hang\" typeface=\"맑은 고딕\"/>';\n\to[o.length] =     '<a:font script=\"Hans\" typeface=\"宋体\"/>';\n\to[o.length] =     '<a:font script=\"Hant\" typeface=\"新細明體\"/>';\n\to[o.length] =     '<a:font script=\"Arab\" typeface=\"Times New Roman\"/>';\n\to[o.length] =     '<a:font script=\"Hebr\" typeface=\"Times New Roman\"/>';\n\to[o.length] =     '<a:font script=\"Thai\" typeface=\"Tahoma\"/>';\n\to[o.length] =     '<a:font script=\"Ethi\" typeface=\"Nyala\"/>';\n\to[o.length] =     '<a:font script=\"Beng\" typeface=\"Vrinda\"/>';\n\to[o.length] =     '<a:font script=\"Gujr\" typeface=\"Shruti\"/>';\n\to[o.length] =     '<a:font script=\"Khmr\" typeface=\"MoolBoran\"/>';\n\to[o.length] =     '<a:font script=\"Knda\" typeface=\"Tunga\"/>';\n\to[o.length] =     '<a:font script=\"Guru\" typeface=\"Raavi\"/>';\n\to[o.length] =     '<a:font script=\"Cans\" typeface=\"Euphemia\"/>';\n\to[o.length] =     '<a:font script=\"Cher\" typeface=\"Plantagenet Cherokee\"/>';\n\to[o.length] =     '<a:font script=\"Yiii\" typeface=\"Microsoft Yi Baiti\"/>';\n\to[o.length] =     '<a:font script=\"Tibt\" typeface=\"Microsoft Himalaya\"/>';\n\to[o.length] =     '<a:font script=\"Thaa\" typeface=\"MV Boli\"/>';\n\to[o.length] =     '<a:font script=\"Deva\" typeface=\"Mangal\"/>';\n\to[o.length] =     '<a:font script=\"Telu\" typeface=\"Gautami\"/>';\n\to[o.length] =     '<a:font script=\"Taml\" typeface=\"Latha\"/>';\n\to[o.length] =     '<a:font script=\"Syrc\" typeface=\"Estrangelo Edessa\"/>';\n\to[o.length] =     '<a:font script=\"Orya\" typeface=\"Kalinga\"/>';\n\to[o.length] =     '<a:font script=\"Mlym\" typeface=\"Kartika\"/>';\n\to[o.length] =     '<a:font script=\"Laoo\" typeface=\"DokChampa\"/>';\n\to[o.length] =     '<a:font script=\"Sinh\" typeface=\"Iskoola Pota\"/>';\n\to[o.length] =     '<a:font script=\"Mong\" typeface=\"Mongolian Baiti\"/>';\n\to[o.length] =     '<a:font script=\"Viet\" typeface=\"Times New Roman\"/>';\n\to[o.length] =     '<a:font script=\"Uigh\" typeface=\"Microsoft Uighur\"/>';\n\to[o.length] =     '<a:font script=\"Geor\" typeface=\"Sylfaen\"/>';\n\to[o.length] =    '</a:majorFont>';\n\to[o.length] =    '<a:minorFont>';\n\to[o.length] =     '<a:latin typeface=\"Calibri\"/>';\n\to[o.length] =     '<a:ea typeface=\"\"/>';\n\to[o.length] =     '<a:cs typeface=\"\"/>';\n\to[o.length] =     '<a:font script=\"Jpan\" typeface=\"ＭＳ Ｐゴシック\"/>';\n\to[o.length] =     '<a:font script=\"Hang\" typeface=\"맑은 고딕\"/>';\n\to[o.length] =     '<a:font script=\"Hans\" typeface=\"宋体\"/>';\n\to[o.length] =     '<a:font script=\"Hant\" typeface=\"新細明體\"/>';\n\to[o.length] =     '<a:font script=\"Arab\" typeface=\"Arial\"/>';\n\to[o.length] =     '<a:font script=\"Hebr\" typeface=\"Arial\"/>';\n\to[o.length] =     '<a:font script=\"Thai\" typeface=\"Tahoma\"/>';\n\to[o.length] =     '<a:font script=\"Ethi\" typeface=\"Nyala\"/>';\n\to[o.length] =     '<a:font script=\"Beng\" typeface=\"Vrinda\"/>';\n\to[o.length] =     '<a:font script=\"Gujr\" typeface=\"Shruti\"/>';\n\to[o.length] =     '<a:font script=\"Khmr\" typeface=\"DaunPenh\"/>';\n\to[o.length] =     '<a:font script=\"Knda\" typeface=\"Tunga\"/>';\n\to[o.length] =     '<a:font script=\"Guru\" typeface=\"Raavi\"/>';\n\to[o.length] =     '<a:font script=\"Cans\" typeface=\"Euphemia\"/>';\n\to[o.length] =     '<a:font script=\"Cher\" typeface=\"Plantagenet Cherokee\"/>';\n\to[o.length] =     '<a:font script=\"Yiii\" typeface=\"Microsoft Yi Baiti\"/>';\n\to[o.length] =     '<a:font script=\"Tibt\" typeface=\"Microsoft Himalaya\"/>';\n\to[o.length] =     '<a:font script=\"Thaa\" typeface=\"MV Boli\"/>';\n\to[o.length] =     '<a:font script=\"Deva\" typeface=\"Mangal\"/>';\n\to[o.length] =     '<a:font script=\"Telu\" typeface=\"Gautami\"/>';\n\to[o.length] =     '<a:font script=\"Taml\" typeface=\"Latha\"/>';\n\to[o.length] =     '<a:font script=\"Syrc\" typeface=\"Estrangelo Edessa\"/>';\n\to[o.length] =     '<a:font script=\"Orya\" typeface=\"Kalinga\"/>';\n\to[o.length] =     '<a:font script=\"Mlym\" typeface=\"Kartika\"/>';\n\to[o.length] =     '<a:font script=\"Laoo\" typeface=\"DokChampa\"/>';\n\to[o.length] =     '<a:font script=\"Sinh\" typeface=\"Iskoola Pota\"/>';\n\to[o.length] =     '<a:font script=\"Mong\" typeface=\"Mongolian Baiti\"/>';\n\to[o.length] =     '<a:font script=\"Viet\" typeface=\"Arial\"/>';\n\to[o.length] =     '<a:font script=\"Uigh\" typeface=\"Microsoft Uighur\"/>';\n\to[o.length] =     '<a:font script=\"Geor\" typeface=\"Sylfaen\"/>';\n\to[o.length] =    '</a:minorFont>';\n\to[o.length] =   '</a:fontScheme>';\n\n\to[o.length] =   '<a:fmtScheme name=\"Office\">';\n\to[o.length] =    '<a:fillStyleLst>';\n\to[o.length] =     '<a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill>';\n\to[o.length] =     '<a:gradFill rotWithShape=\"1\">';\n\to[o.length] =      '<a:gsLst>';\n\to[o.length] =       '<a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:tint val=\"50000\"/><a:satMod val=\"300000\"/></a:schemeClr></a:gs>';\n\to[o.length] =       '<a:gs pos=\"35000\"><a:schemeClr val=\"phClr\"><a:tint val=\"37000\"/><a:satMod val=\"300000\"/></a:schemeClr></a:gs>';\n\to[o.length] =       '<a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:tint val=\"15000\"/><a:satMod val=\"350000\"/></a:schemeClr></a:gs>';\n\to[o.length] =      '</a:gsLst>';\n\to[o.length] =      '<a:lin ang=\"16200000\" scaled=\"1\"/>';\n\to[o.length] =     '</a:gradFill>';\n\to[o.length] =     '<a:gradFill rotWithShape=\"1\">';\n\to[o.length] =      '<a:gsLst>';\n\to[o.length] =       '<a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:tint val=\"100000\"/><a:shade val=\"100000\"/><a:satMod val=\"130000\"/></a:schemeClr></a:gs>';\n\to[o.length] =       '<a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:tint val=\"50000\"/><a:shade val=\"100000\"/><a:satMod val=\"350000\"/></a:schemeClr></a:gs>';\n\to[o.length] =      '</a:gsLst>';\n\to[o.length] =      '<a:lin ang=\"16200000\" scaled=\"0\"/>';\n\to[o.length] =     '</a:gradFill>';\n\to[o.length] =    '</a:fillStyleLst>';\n\to[o.length] =    '<a:lnStyleLst>';\n\to[o.length] =     '<a:ln w=\"9525\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"><a:solidFill><a:schemeClr val=\"phClr\"><a:shade val=\"95000\"/><a:satMod val=\"105000\"/></a:schemeClr></a:solidFill><a:prstDash val=\"solid\"/></a:ln>';\n\to[o.length] =     '<a:ln w=\"25400\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:prstDash val=\"solid\"/></a:ln>';\n\to[o.length] =     '<a:ln w=\"38100\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\"><a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill><a:prstDash val=\"solid\"/></a:ln>';\n\to[o.length] =    '</a:lnStyleLst>';\n\to[o.length] =    '<a:effectStyleLst>';\n\to[o.length] =     '<a:effectStyle>';\n\to[o.length] =      '<a:effectLst>';\n\to[o.length] =       '<a:outerShdw blurRad=\"40000\" dist=\"20000\" dir=\"5400000\" rotWithShape=\"0\"><a:srgbClr val=\"000000\"><a:alpha val=\"38000\"/></a:srgbClr></a:outerShdw>';\n\to[o.length] =      '</a:effectLst>';\n\to[o.length] =     '</a:effectStyle>';\n\to[o.length] =     '<a:effectStyle>';\n\to[o.length] =      '<a:effectLst>';\n\to[o.length] =       '<a:outerShdw blurRad=\"40000\" dist=\"23000\" dir=\"5400000\" rotWithShape=\"0\"><a:srgbClr val=\"000000\"><a:alpha val=\"35000\"/></a:srgbClr></a:outerShdw>';\n\to[o.length] =      '</a:effectLst>';\n\to[o.length] =     '</a:effectStyle>';\n\to[o.length] =     '<a:effectStyle>';\n\to[o.length] =      '<a:effectLst>';\n\to[o.length] =       '<a:outerShdw blurRad=\"40000\" dist=\"23000\" dir=\"5400000\" rotWithShape=\"0\"><a:srgbClr val=\"000000\"><a:alpha val=\"35000\"/></a:srgbClr></a:outerShdw>';\n\to[o.length] =      '</a:effectLst>';\n\to[o.length] =      '<a:scene3d><a:camera prst=\"orthographicFront\"><a:rot lat=\"0\" lon=\"0\" rev=\"0\"/></a:camera><a:lightRig rig=\"threePt\" dir=\"t\"><a:rot lat=\"0\" lon=\"0\" rev=\"1200000\"/></a:lightRig></a:scene3d>';\n\to[o.length] =      '<a:sp3d><a:bevelT w=\"63500\" h=\"25400\"/></a:sp3d>';\n\to[o.length] =     '</a:effectStyle>';\n\to[o.length] =    '</a:effectStyleLst>';\n\to[o.length] =    '<a:bgFillStyleLst>';\n\to[o.length] =     '<a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill>';\n\to[o.length] =     '<a:gradFill rotWithShape=\"1\">';\n\to[o.length] =      '<a:gsLst>';\n\to[o.length] =       '<a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:tint val=\"40000\"/><a:satMod val=\"350000\"/></a:schemeClr></a:gs>';\n\to[o.length] =       '<a:gs pos=\"40000\"><a:schemeClr val=\"phClr\"><a:tint val=\"45000\"/><a:shade val=\"99000\"/><a:satMod val=\"350000\"/></a:schemeClr></a:gs>';\n\to[o.length] =       '<a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:shade val=\"20000\"/><a:satMod val=\"255000\"/></a:schemeClr></a:gs>';\n\to[o.length] =      '</a:gsLst>';\n\to[o.length] =      '<a:path path=\"circle\"><a:fillToRect l=\"50000\" t=\"-80000\" r=\"50000\" b=\"180000\"/></a:path>';\n\to[o.length] =     '</a:gradFill>';\n\to[o.length] =     '<a:gradFill rotWithShape=\"1\">';\n\to[o.length] =      '<a:gsLst>';\n\to[o.length] =       '<a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:tint val=\"80000\"/><a:satMod val=\"300000\"/></a:schemeClr></a:gs>';\n\to[o.length] =       '<a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:shade val=\"30000\"/><a:satMod val=\"200000\"/></a:schemeClr></a:gs>';\n\to[o.length] =      '</a:gsLst>';\n\to[o.length] =      '<a:path path=\"circle\"><a:fillToRect l=\"50000\" t=\"50000\" r=\"50000\" b=\"50000\"/></a:path>';\n\to[o.length] =     '</a:gradFill>';\n\to[o.length] =    '</a:bgFillStyleLst>';\n\to[o.length] =   '</a:fmtScheme>';\n\to[o.length] =  '</a:themeElements>';\n\n\to[o.length] =  '<a:objectDefaults>';\n\to[o.length] =   '<a:spDef>';\n\to[o.length] =    '<a:spPr/><a:bodyPr/><a:lstStyle/><a:style><a:lnRef idx=\"1\"><a:schemeClr val=\"accent1\"/></a:lnRef><a:fillRef idx=\"3\"><a:schemeClr val=\"accent1\"/></a:fillRef><a:effectRef idx=\"2\"><a:schemeClr val=\"accent1\"/></a:effectRef><a:fontRef idx=\"minor\"><a:schemeClr val=\"lt1\"/></a:fontRef></a:style>';\n\to[o.length] =   '</a:spDef>';\n\to[o.length] =   '<a:lnDef>';\n\to[o.length] =    '<a:spPr/><a:bodyPr/><a:lstStyle/><a:style><a:lnRef idx=\"2\"><a:schemeClr val=\"accent1\"/></a:lnRef><a:fillRef idx=\"0\"><a:schemeClr val=\"accent1\"/></a:fillRef><a:effectRef idx=\"1\"><a:schemeClr val=\"accent1\"/></a:effectRef><a:fontRef idx=\"minor\"><a:schemeClr val=\"tx1\"/></a:fontRef></a:style>';\n\to[o.length] =   '</a:lnDef>';\n\to[o.length] =  '</a:objectDefaults>';\n\to[o.length] =  '<a:extraClrSchemeLst/>';\n\to[o.length] = '</a:theme>';\n\treturn o.join(\"\");\n}\n/* [MS-XLS] 2.4.326 TODO: payload is a zip file */\nfunction parse_Theme(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar dwThemeVersion = blob.read_shift(4);\n\tif(dwThemeVersion === 124226) return;\n\tif(!opts.cellStyles) { blob.l = end; return; }\n\tvar data = blob.slice(blob.l);\n\tblob.l = end;\n\tvar zip; try { zip = zip_read(data, {type: \"array\"}); } catch(e) { return; }\n\tvar themeXML = getzipstr(zip, \"theme/theme/theme1.xml\", true);\n\tif(!themeXML) return;\n\treturn parse_theme_xml(themeXML, opts);\n}\n\n/* 2.5.49 */\nfunction parse_ColorTheme(blob/*::, length*/) { return blob.read_shift(4); }\n\n/* 2.5.155 */\nfunction parse_FullColorExt(blob/*::, length*/) {\n\tvar o = {};\n\to.xclrType = blob.read_shift(2);\n\to.nTintShade = blob.read_shift(2);\n\tswitch(o.xclrType) {\n\t\tcase 0: blob.l += 4; break;\n\t\tcase 1: o.xclrValue = parse_IcvXF(blob, 4); break;\n\t\tcase 2: o.xclrValue = parse_LongRGBA(blob, 4); break;\n\t\tcase 3: o.xclrValue = parse_ColorTheme(blob, 4); break;\n\t\tcase 4: blob.l += 4; break;\n\t}\n\tblob.l += 8;\n\treturn o;\n}\n\n/* 2.5.164 TODO: read 7 bits*/\nfunction parse_IcvXF(blob, length) {\n\treturn parsenoop(blob, length);\n}\n\n/* 2.5.280 */\nfunction parse_XFExtGradient(blob, length) {\n\treturn parsenoop(blob, length);\n}\n\n/* [MS-XLS] 2.5.108 */\nfunction parse_ExtProp(blob/*::, length*/)/*:Array<any>*/ {\n\tvar extType = blob.read_shift(2);\n\tvar cb = blob.read_shift(2) - 4;\n\tvar o = [extType];\n\tswitch(extType) {\n\t\tcase 0x04: case 0x05: case 0x07: case 0x08:\n\t\tcase 0x09: case 0x0A: case 0x0B: case 0x0D:\n\t\t\to[1] = parse_FullColorExt(blob, cb); break;\n\t\tcase 0x06: o[1] = parse_XFExtGradient(blob, cb); break;\n\t\tcase 0x0E: case 0x0F: o[1] = blob.read_shift(cb === 1 ? 1 : 2); break;\n\t\tdefault: throw new Error(\"Unrecognized ExtProp type: \" + extType + \" \" + cb);\n\t}\n\treturn o;\n}\n\n/* 2.4.355 */\nfunction parse_XFExt(blob, length) {\n\tvar end = blob.l + length;\n\tblob.l += 2;\n\tvar ixfe = blob.read_shift(2);\n\tblob.l += 2;\n\tvar cexts = blob.read_shift(2);\n\tvar ext/*:AOA*/ = [];\n\twhile(cexts-- > 0) ext.push(parse_ExtProp(blob, end-blob.l));\n\treturn {ixfe:ixfe, ext:ext};\n}\n\n/* xf is an XF, see parse_XFExt for xfext */\nfunction update_xfext(xf, xfext) {\n\txfext.forEach(function(xfe) {\n\t\tswitch(xfe[0]) { /* 2.5.108 extPropData */\n\t\t\tcase 0x04: break; /* foreground color */\n\t\t\tcase 0x05: break; /* background color */\n\t\t\tcase 0x06: break; /* gradient fill */\n\t\t\tcase 0x07: break; /* top cell border color */\n\t\t\tcase 0x08: break; /* bottom cell border color */\n\t\t\tcase 0x09: break; /* left cell border color */\n\t\t\tcase 0x0a: break; /* right cell border color */\n\t\t\tcase 0x0b: break; /* diagonal cell border color */\n\t\t\tcase 0x0d: /* text color */\n\t\t\t\tbreak;\n\t\t\tcase 0x0e: break; /* font scheme */\n\t\t\tcase 0x0f: break; /* indentation level */\n\t\t}\n\t});\n}\n\nfunction parse_BrtMdtinfo(data, length) {\n  return {\n    flags: data.read_shift(4),\n    version: data.read_shift(4),\n    name: parse_XLWideString(data, length - 8)\n  };\n}\nfunction write_BrtMdtinfo(data) {\n  var o = new_buf(12 + 2 * data.name.length);\n  o.write_shift(4, data.flags);\n  o.write_shift(4, data.version);\n  write_XLWideString(data.name, o);\n  return o.slice(0, o.l);\n}\nfunction parse_BrtMdb(data) {\n  var out = [];\n  var cnt = data.read_shift(4);\n  while (cnt-- > 0)\n    out.push([data.read_shift(4), data.read_shift(4)]);\n  return out;\n}\nfunction write_BrtMdb(mdb) {\n  var o = new_buf(4 + 8 * mdb.length);\n  o.write_shift(4, mdb.length);\n  for (var i = 0; i < mdb.length; ++i) {\n    o.write_shift(4, mdb[i][0]);\n    o.write_shift(4, mdb[i][1]);\n  }\n  return o;\n}\nfunction write_BrtBeginEsfmd(cnt, name) {\n  var o = new_buf(8 + 2 * name.length);\n  o.write_shift(4, cnt);\n  write_XLWideString(name, o);\n  return o.slice(0, o.l);\n}\nfunction parse_BrtBeginEsmdb(data) {\n  data.l += 4;\n  return data.read_shift(4) != 0;\n}\nfunction write_BrtBeginEsmdb(cnt, cm) {\n  var o = new_buf(8);\n  o.write_shift(4, cnt);\n  o.write_shift(4, cm ? 1 : 0);\n  return o;\n}\nfunction parse_xlmeta_bin(data, name, _opts) {\n  var out = { Types: [], Cell: [], Value: [] };\n  var opts = _opts || {};\n  var state = [];\n  var pass = false;\n  var metatype = 2;\n  recordhopper(data, function(val, R, RT) {\n    switch (RT) {\n      case 335:\n        out.Types.push({ name: val.name });\n        break;\n      case 51:\n        val.forEach(function(r) {\n          if (metatype == 1)\n            out.Cell.push({ type: out.Types[r[0] - 1].name, index: r[1] });\n          else if (metatype == 0)\n            out.Value.push({ type: out.Types[r[0] - 1].name, index: r[1] });\n        });\n        break;\n      case 337:\n        metatype = val ? 1 : 0;\n        break;\n      case 338:\n        metatype = 2;\n        break;\n      case 35:\n        state.push(RT);\n        pass = true;\n        break;\n      case 36:\n        state.pop();\n        pass = false;\n        break;\n      default:\n        if (R.T) {\n        } else if (!pass || opts.WTF && state[state.length - 1] != 35)\n          throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n    }\n  });\n  return out;\n}\nfunction write_xlmeta_bin() {\n  var ba = buf_array();\n  write_record(ba, 332);\n  write_record(ba, 334, write_UInt32LE(1));\n  write_record(ba, 335, write_BrtMdtinfo({\n    name: \"XLDAPR\",\n    version: 12e4,\n    flags: 3496657072\n  }));\n  write_record(ba, 336);\n  write_record(ba, 339, write_BrtBeginEsfmd(1, \"XLDAPR\"));\n  write_record(ba, 52);\n  write_record(ba, 35, write_UInt32LE(514));\n  write_record(ba, 4096, write_UInt32LE(0));\n  write_record(ba, 4097, writeuint16(1));\n  write_record(ba, 36);\n  write_record(ba, 53);\n  write_record(ba, 340);\n  write_record(ba, 337, write_BrtBeginEsmdb(1, true));\n  write_record(ba, 51, write_BrtMdb([[1, 0]]));\n  write_record(ba, 338);\n  write_record(ba, 333);\n  return ba.end();\n}\nfunction parse_xlmeta_xml(data, name, opts) {\n  var out = { Types: [], Cell: [], Value: [] };\n  if (!data)\n    return out;\n  var pass = false;\n  var metatype = 2;\n  var lastmeta;\n  data.replace(tagregex, function(x) {\n    var y = parsexmltag(x);\n    switch (strip_ns(y[0])) {\n      case \"<?xml\":\n        break;\n      case \"<metadata\":\n      case \"</metadata>\":\n        break;\n      case \"<metadataTypes\":\n      case \"</metadataTypes>\":\n        break;\n      case \"<metadataType\":\n        out.Types.push({ name: y.name });\n        break;\n      case \"</metadataType>\":\n        break;\n      case \"<futureMetadata\":\n        for (var j = 0; j < out.Types.length; ++j)\n          if (out.Types[j].name == y.name)\n            lastmeta = out.Types[j];\n        break;\n      case \"</futureMetadata>\":\n        break;\n      case \"<bk>\":\n        break;\n      case \"</bk>\":\n        break;\n      case \"<rc\":\n        if (metatype == 1)\n          out.Cell.push({ type: out.Types[y.t - 1].name, index: +y.v });\n        else if (metatype == 0)\n          out.Value.push({ type: out.Types[y.t - 1].name, index: +y.v });\n        break;\n      case \"</rc>\":\n        break;\n      case \"<cellMetadata\":\n        metatype = 1;\n        break;\n      case \"</cellMetadata>\":\n        metatype = 2;\n        break;\n      case \"<valueMetadata\":\n        metatype = 0;\n        break;\n      case \"</valueMetadata>\":\n        metatype = 2;\n        break;\n      case \"<extLst\":\n      case \"<extLst>\":\n      case \"</extLst>\":\n      case \"<extLst/>\":\n        break;\n      case \"<ext\":\n        pass = true;\n        break;\n      case \"</ext>\":\n        pass = false;\n        break;\n      case \"<rvb\":\n        if (!lastmeta)\n          break;\n        if (!lastmeta.offsets)\n          lastmeta.offsets = [];\n        lastmeta.offsets.push(+y.i);\n        break;\n      default:\n        if (!pass && opts.WTF)\n          throw new Error(\"unrecognized \" + y[0] + \" in metadata\");\n    }\n    return x;\n  });\n  return out;\n}\nfunction write_xlmeta_xml() {\n  var o = [XML_HEADER];\n  o.push('<metadata xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\" xmlns:xlrd=\"http://schemas.microsoft.com/office/spreadsheetml/2017/richdata\" xmlns:xda=\"http://schemas.microsoft.com/office/spreadsheetml/2017/dynamicarray\">\\n  <metadataTypes count=\"1\">\\n    <metadataType name=\"XLDAPR\" minSupportedVersion=\"120000\" copy=\"1\" pasteAll=\"1\" pasteValues=\"1\" merge=\"1\" splitFirst=\"1\" rowColShift=\"1\" clearFormats=\"1\" clearComments=\"1\" assign=\"1\" coerce=\"1\" cellMeta=\"1\"/>\\n  </metadataTypes>\\n  <futureMetadata name=\"XLDAPR\" count=\"1\">\\n    <bk>\\n      <extLst>\\n        <ext uri=\"{bdbb8cdc-fa1e-496e-a857-3c3f30c029c3}\">\\n          <xda:dynamicArrayProperties fDynamic=\"1\" fCollapsed=\"0\"/>\\n        </ext>\\n      </extLst>\\n    </bk>\\n  </futureMetadata>\\n  <cellMetadata count=\"1\">\\n    <bk>\\n      <rc t=\"1\" v=\"0\"/>\\n    </bk>\\n  </cellMetadata>\\n</metadata>');\n  return o.join(\"\");\n}\n/* 18.6 Calculation Chain */\nfunction parse_cc_xml(data/*::, name, opts*/)/*:Array<any>*/ {\n\tvar d = [];\n\tif(!data) return d;\n\tvar i = 1;\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\tcase '<?xml': break;\n\t\t\t/* 18.6.2  calcChain CT_CalcChain 1 */\n\t\t\tcase '<calcChain': case '<calcChain>': case '</calcChain>': break;\n\t\t\t/* 18.6.1  c CT_CalcCell 1 */\n\t\t\tcase '<c': delete y[0]; if(y.i) i = y.i; else y.i = i; d.push(y); break;\n\t\t}\n\t});\n\treturn d;\n}\n\n//function write_cc_xml(data, opts) { }\n\n/* [MS-XLSB] 2.6.4.1 */\nfunction parse_BrtCalcChainItem$(data) {\n\tvar out = {};\n\tout.i = data.read_shift(4);\n\tvar cell = {};\n\tcell.r = data.read_shift(4);\n\tcell.c = data.read_shift(4);\n\tout.r = encode_cell(cell);\n\tvar flags = data.read_shift(1);\n\tif(flags & 0x2) out.l = '1';\n\tif(flags & 0x8) out.a = '1';\n\treturn out;\n}\n\n/* 18.6 Calculation Chain */\nfunction parse_cc_bin(data, name, opts) {\n\tvar out = [];\n\tvar pass = false;\n\trecordhopper(data, function hopper_cc(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x003F: /* 'BrtCalcChainItem$' */\n\t\t\t\tout.push(val); break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn out;\n}\n\n//function write_cc_bin(data, opts) { }\n/* 18.14 Supplementary Workbook Data */\nfunction parse_xlink_xml(/*::data, rel, name:string, _opts*/) {\n\t//var opts = _opts || {};\n\t//if(opts.WTF) throw \"XLSX External Link\";\n}\n\n/* [MS-XLSB] 2.1.7.25 External Link */\nfunction parse_xlink_bin(data, rel, name/*:string*/, _opts) {\n\tif(!data) return data;\n\tvar opts = _opts || {};\n\n\tvar pass = false, end = false;\n\n\trecordhopper(data, function xlink_parse(val, R, RT) {\n\t\tif(end) return;\n\t\tswitch(RT) {\n\t\t\tcase 0x0167: /* 'BrtSupTabs' */\n\t\t\tcase 0x016B: /* 'BrtExternTableStart' */\n\t\t\tcase 0x016C: /* 'BrtExternTableEnd' */\n\t\t\tcase 0x016E: /* 'BrtExternRowHdr' */\n\t\t\tcase 0x016F: /* 'BrtExternCellBlank' */\n\t\t\tcase 0x0170: /* 'BrtExternCellReal' */\n\t\t\tcase 0x0171: /* 'BrtExternCellBool' */\n\t\t\tcase 0x0172: /* 'BrtExternCellError' */\n\t\t\tcase 0x0173: /* 'BrtExternCellString' */\n\t\t\tcase 0x01D8: /* 'BrtExternValueMeta' */\n\t\t\tcase 0x0241: /* 'BrtSupNameStart' */\n\t\t\tcase 0x0242: /* 'BrtSupNameValueStart' */\n\t\t\tcase 0x0243: /* 'BrtSupNameValueEnd' */\n\t\t\tcase 0x0244: /* 'BrtSupNameNum' */\n\t\t\tcase 0x0245: /* 'BrtSupNameErr' */\n\t\t\tcase 0x0246: /* 'BrtSupNameSt' */\n\t\t\tcase 0x0247: /* 'BrtSupNameNil' */\n\t\t\tcase 0x0248: /* 'BrtSupNameBool' */\n\t\t\tcase 0x0249: /* 'BrtSupNameFmla' */\n\t\t\tcase 0x024A: /* 'BrtSupNameBits' */\n\t\t\tcase 0x024B: /* 'BrtSupNameEnd' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n}\n/* 20.5 DrawingML - SpreadsheetML Drawing */\n/* 20.5.2.35 wsDr CT_Drawing */\nfunction parse_drawing(data, rels/*:any*/) {\n\tif(!data) return \"??\";\n\t/*\n\t  Chartsheet Drawing:\n\t   - 20.5.2.35 wsDr CT_Drawing\n\t    - 20.5.2.1  absoluteAnchor CT_AbsoluteAnchor\n\t     - 20.5.2.16 graphicFrame CT_GraphicalObjectFrame\n\t      - 20.1.2.2.16 graphic CT_GraphicalObject\n\t       - 20.1.2.2.17 graphicData CT_GraphicalObjectData\n          - chart reference\n\t   the actual type is based on the URI of the graphicData\n\t\tTODO: handle embedded charts and other types of graphics\n\t*/\n\tvar id = (data.match(/<c:chart [^>]*r:id=\"([^\"]*)\"/)||[\"\",\"\"])[1];\n\n\treturn rels['!id'][id].Target;\n}\n\n/* L.5.5.2 SpreadsheetML Comments + VML Schema */\nvar _shapeid = 1024;\nfunction write_comments_vml(rId/*:number*/, comments) {\n\tvar csize = [21600, 21600];\n\t/* L.5.2.1.2 Path Attribute */\n\tvar bbox = [\"m0,0l0\",csize[1],csize[0],csize[1],csize[0],\"0xe\"].join(\",\");\n\tvar o = [\n\t\twritextag(\"xml\", null, { 'xmlns:v': XLMLNS.v, 'xmlns:o': XLMLNS.o, 'xmlns:x': XLMLNS.x, 'xmlns:mv': XLMLNS.mv }).replace(/\\/>/,\">\"),\n\t\twritextag(\"o:shapelayout\", writextag(\"o:idmap\", null, {'v:ext':\"edit\", 'data':rId}), {'v:ext':\"edit\"}),\n\t\twritextag(\"v:shapetype\", [\n\t\t\twritextag(\"v:stroke\", null, {joinstyle:\"miter\"}),\n\t\t\twritextag(\"v:path\", null, {gradientshapeok:\"t\", 'o:connecttype':\"rect\"})\n\t\t].join(\"\"), {id:\"_x0000_t202\", 'o:spt':202, coordsize:csize.join(\",\"),path:bbox})\n\t];\n\twhile(_shapeid < rId * 1000) _shapeid += 1000;\n\n\tcomments.forEach(function(x) {\n\tvar c = decode_cell(x[0]);\n\tvar fillopts = /*::(*/{'color2':\"#BEFF82\", 'type':\"gradient\"}/*:: :any)*/;\n\tif(fillopts.type == \"gradient\") fillopts.angle = \"-180\";\n\tvar fillparm = fillopts.type == \"gradient\" ? writextag(\"o:fill\", null, {type:\"gradientUnscaled\", 'v:ext':\"view\"}) : null;\n\tvar fillxml = writextag('v:fill', fillparm, fillopts);\n\n\tvar shadata = ({on:\"t\", 'obscured':\"t\"}/*:any*/);\n\t++_shapeid;\n\n\to = o.concat([\n\t'<v:shape' + wxt_helper({\n\t\tid:'_x0000_s' + _shapeid,\n\t\ttype:\"#_x0000_t202\",\n\t\tstyle:\"position:absolute; margin-left:80pt;margin-top:5pt;width:104pt;height:64pt;z-index:10\" + (x[1].hidden ? \";visibility:hidden\" : \"\") ,\n\t\tfillcolor:\"#ECFAD4\",\n\t\tstrokecolor:\"#edeaa1\"\n\t}) + '>',\n\t\tfillxml,\n\t\twritextag(\"v:shadow\", null, shadata),\n\t\twritextag(\"v:path\", null, {'o:connecttype':\"none\"}),\n\t\t'<v:textbox><div style=\"text-align:left\"></div></v:textbox>',\n\t\t'<x:ClientData ObjectType=\"Note\">',\n\t\t\t'<x:MoveWithCells/>',\n\t\t\t'<x:SizeWithCells/>',\n\t\t\t/* Part 4 19.4.2.3 Anchor (Anchor) */\n\t\t\twritetag('x:Anchor', [c.c+1, 0, c.r+1, 0, c.c+3, 20, c.r+5, 20].join(\",\")),\n\t\t\twritetag('x:AutoFill', \"False\"),\n\t\t\twritetag('x:Row', String(c.r)),\n\t\t\twritetag('x:Column', String(c.c)),\n\t\t\tx[1].hidden ? '' : '<x:Visible/>',\n\t\t'</x:ClientData>',\n\t'</v:shape>'\n\t]); });\n\to.push('</xml>');\n\treturn o.join(\"\");\n}\nfunction sheet_insert_comments(sheet, comments/*:Array<RawComment>*/, threaded/*:boolean*/, people/*:?Array<any>*/) {\n\tvar dense = Array.isArray(sheet);\n\tvar cell/*:Cell*/;\n\tcomments.forEach(function(comment) {\n\t\tvar r = decode_cell(comment.ref);\n\t\tif(dense) {\n\t\t\tif(!sheet[r.r]) sheet[r.r] = [];\n\t\t\tcell = sheet[r.r][r.c];\n\t\t} else cell = sheet[comment.ref];\n\t\tif (!cell) {\n\t\t\tcell = ({t:\"z\"}/*:any*/);\n\t\t\tif(dense) sheet[r.r][r.c] = cell;\n\t\t\telse sheet[comment.ref] = cell;\n\t\t\tvar range = safe_decode_range(sheet[\"!ref\"]||\"BDWGO1000001:A1\");\n\t\t\tif(range.s.r > r.r) range.s.r = r.r;\n\t\t\tif(range.e.r < r.r) range.e.r = r.r;\n\t\t\tif(range.s.c > r.c) range.s.c = r.c;\n\t\t\tif(range.e.c < r.c) range.e.c = r.c;\n\t\t\tvar encoded = encode_range(range);\n\t\t\tif (encoded !== sheet[\"!ref\"]) sheet[\"!ref\"] = encoded;\n\t\t}\n\n\t\tif (!cell.c) cell.c = [];\n\t\tvar o/*:Comment*/ = ({a: comment.author, t: comment.t, r: comment.r, T: threaded});\n\t\tif(comment.h) o.h = comment.h;\n\n\t\t/* threaded comments always override */\n\t\tfor(var i = cell.c.length - 1; i >= 0; --i) {\n\t\t\tif(!threaded && cell.c[i].T) return;\n\t\t\tif(threaded && !cell.c[i].T) cell.c.splice(i, 1);\n\t\t}\n\t\tif(threaded && people) for(i = 0; i < people.length; ++i) {\n\t\t\tif(o.a == people[i].id) { o.a = people[i].name || o.a; break; }\n\t\t}\n\t\tcell.c.push(o);\n\t});\n}\n\n/* 18.7 Comments */\nfunction parse_comments_xml(data/*:string*/, opts)/*:Array<RawComment>*/ {\n\t/* 18.7.6 CT_Comments */\n\tif(data.match(/<(?:\\w+:)?comments *\\/>/)) return [];\n\tvar authors/*:Array<string>*/ = [];\n\tvar commentList/*:Array<RawComment>*/ = [];\n\tvar authtag = data.match(/<(?:\\w+:)?authors>([\\s\\S]*)<\\/(?:\\w+:)?authors>/);\n\tif(authtag && authtag[1]) authtag[1].split(/<\\/\\w*:?author>/).forEach(function(x) {\n\t\tif(x === \"\" || x.trim() === \"\") return;\n\t\tvar a = x.match(/<(?:\\w+:)?author[^>]*>(.*)/);\n\t\tif(a) authors.push(a[1]);\n\t});\n\tvar cmnttag = data.match(/<(?:\\w+:)?commentList>([\\s\\S]*)<\\/(?:\\w+:)?commentList>/);\n\tif(cmnttag && cmnttag[1]) cmnttag[1].split(/<\\/\\w*:?comment>/).forEach(function(x) {\n\t\tif(x === \"\" || x.trim() === \"\") return;\n\t\tvar cm = x.match(/<(?:\\w+:)?comment[^>]*>/);\n\t\tif(!cm) return;\n\t\tvar y = parsexmltag(cm[0]);\n\t\tvar comment/*:RawComment*/ = ({ author: y.authorId && authors[y.authorId] || \"sheetjsghost\", ref: y.ref, guid: y.guid }/*:any*/);\n\t\tvar cell = decode_cell(y.ref);\n\t\tif(opts.sheetRows && opts.sheetRows <= cell.r) return;\n\t\tvar textMatch = x.match(/<(?:\\w+:)?text>([\\s\\S]*)<\\/(?:\\w+:)?text>/);\n\t\tvar rt = !!textMatch && !!textMatch[1] && parse_si(textMatch[1]) || {r:\"\",t:\"\",h:\"\"};\n\t\tcomment.r = rt.r;\n\t\tif(rt.r == \"<t></t>\") rt.t = rt.h = \"\";\n\t\tcomment.t = (rt.t||\"\").replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\");\n\t\tif(opts.cellHTML) comment.h = rt.h;\n\t\tcommentList.push(comment);\n\t});\n\treturn commentList;\n}\n\nfunction write_comments_xml(data/*::, opts*/) {\n\tvar o = [XML_HEADER, writextag('comments', null, { 'xmlns': XMLNS_main[0] })];\n\n\tvar iauthor/*:Array<string>*/ = [];\n\to.push(\"<authors>\");\n\tdata.forEach(function(x) { x[1].forEach(function(w) { var a = escapexml(w.a);\n\t\tif(iauthor.indexOf(a) == -1) {\n\t\t\tiauthor.push(a);\n\t\t\to.push(\"<author>\" + a + \"</author>\");\n\t\t}\n\t\tif(w.T && w.ID && iauthor.indexOf(\"tc=\" + w.ID) == -1) {\n\t\t\tiauthor.push(\"tc=\" + w.ID);\n\t\t\to.push(\"<author>\" + \"tc=\" + w.ID + \"</author>\");\n\t\t}\n\t}); });\n\tif(iauthor.length == 0) { iauthor.push(\"SheetJ5\"); o.push(\"<author>SheetJ5</author>\"); }\n\to.push(\"</authors>\");\n\to.push(\"<commentList>\");\n\tdata.forEach(function(d) {\n\t\t/* 18.7.3 CT_Comment */\n\t\tvar lastauthor = 0, ts = [];\n\t\tif(d[1][0] && d[1][0].T && d[1][0].ID) lastauthor = iauthor.indexOf(\"tc=\" + d[1][0].ID);\n\t\telse d[1].forEach(function(c) {\n\t\t\tif(c.a) lastauthor = iauthor.indexOf(escapexml(c.a));\n\t\t\tts.push(c.t||\"\");\n\t\t});\n\t\to.push('<comment ref=\"' + d[0] + '\" authorId=\"' + lastauthor + '\"><text>');\n\t\tif(ts.length <= 1) o.push(writetag(\"t\", escapexml(ts[0]||\"\")));\n\t\telse {\n\t\t\t/* based on Threaded Comments -> Comments projection */\n\t\t\tvar t = \"Comment:\\n    \" + (ts[0]) + \"\\n\";\n\t\t\tfor(var i = 1; i < ts.length; ++i) t += \"Reply:\\n    \" + ts[i] + \"\\n\";\n\t\t\to.push(writetag(\"t\", escapexml(t)));\n\t\t}\n\t\to.push('</text></comment>');\n\t});\n\to.push(\"</commentList>\");\n\tif(o.length>2) { o[o.length] = ('</comments>'); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSX] 2.1.17 */\nfunction parse_tcmnt_xml(data/*:string*/, opts)/*:Array<RawComment>*/ {\n\tvar out = [];\n\tvar pass = false, comment = {}, tidx = 0;\n\tdata.replace(tagregex, function xml_tcmnt(x, idx) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '<?xml': break;\n\n\t\t\t/* 2.6.207 ThreadedComments CT_ThreadedComments */\n\t\t\tcase '<ThreadedComments': break;\n\t\t\tcase '</ThreadedComments>': break;\n\n\t\t\t/* 2.6.205 threadedComment CT_ThreadedComment */\n\t\t\tcase '<threadedComment': comment = {author: y.personId, guid: y.id, ref: y.ref, T: 1}; break;\n\t\t\tcase '</threadedComment>': if(comment.t != null) out.push(comment); break;\n\n\t\t\tcase '<text>': case '<text': tidx = idx + x.length; break;\n\t\t\tcase '</text>': comment.t = data.slice(tidx, idx).replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\"); break;\n\n\t\t\t/* 2.6.206 mentions CT_ThreadedCommentMentions TODO */\n\t\t\tcase '<mentions': case '<mentions>': pass = true; break;\n\t\t\tcase '</mentions>': pass = false; break;\n\n\t\t\t/* 2.6.202 mention CT_Mention TODO */\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': case '<extLst/>': break;\n\t\t\t/* 18.2.7  ext CT_Extension + */\n\t\t\tcase '<ext': pass=true; break;\n\t\t\tcase '</ext>': pass=false; break;\n\n\t\t\tdefault: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in threaded comments');\n\t\t}\n\t\treturn x;\n\t});\n\treturn out;\n}\n\nfunction write_tcmnt_xml(comments, people, opts) {\n\tvar o = [XML_HEADER, writextag('ThreadedComments', null, { 'xmlns': XMLNS.TCMNT }).replace(/[\\/]>/, \">\")];\n\tcomments.forEach(function(carr) {\n\t\tvar rootid = \"\";\n\t\t(carr[1] || []).forEach(function(c, idx) {\n\t\t\tif(!c.T) { delete c.ID; return; }\n\t\t\tif(c.a && people.indexOf(c.a) == -1) people.push(c.a);\n\t\t\tvar tcopts = {\n\t\t\t\tref: carr[0],\n\t\t\t\tid: \"{54EE7951-7262-4200-6969-\" + (\"000000000000\" + opts.tcid++).slice(-12) + \"}\"\n\t\t\t};\n\t\t\tif(idx == 0) rootid = tcopts.id;\n\t\t\telse tcopts.parentId = rootid;\n\t\t\tc.ID = tcopts.id;\n\t\t\tif(c.a) tcopts.personId = \"{54EE7950-7262-4200-6969-\" + (\"000000000000\" + people.indexOf(c.a)).slice(-12) + \"}\";\n\t\t\to.push(writextag('threadedComment', writetag('text', c.t||\"\"), tcopts));\n\t\t});\n\t});\n\to.push('</ThreadedComments>');\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSX] 2.1.18 */\nfunction parse_people_xml(data/*:string*/, opts) {\n\tvar out = [];\n\tvar pass = false;\n\tdata.replace(tagregex, function xml_tcmnt(x) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '<?xml': break;\n\n\t\t\t/* 2.4.85 personList CT_PersonList */\n\t\t\tcase '<personList': break;\n\t\t\tcase '</personList>': break;\n\n\t\t\t/* 2.6.203 person CT_Person TODO: providers */\n\t\t\tcase '<person': out.push({name: y.displayname, id: y.id }); break;\n\t\t\tcase '</person>': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': case '<extLst/>': break;\n\t\t\t/* 18.2.7  ext CT_Extension + */\n\t\t\tcase '<ext': pass=true; break;\n\t\t\tcase '</ext>': pass=false; break;\n\n\t\t\tdefault: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in threaded comments');\n\t\t}\n\t\treturn x;\n\t});\n\treturn out;\n}\nfunction write_people_xml(people/*, opts*/) {\n\tvar o = [XML_HEADER, writextag('personList', null, {\n\t\t'xmlns': XMLNS.TCMNT,\n\t\t'xmlns:x': XMLNS_main[0]\n\t}).replace(/[\\/]>/, \">\")];\n\tpeople.forEach(function(person, idx) {\n\t\to.push(writextag('person', null, {\n\t\t\tdisplayName: person,\n\t\t\tid: \"{54EE7950-7262-4200-6969-\" + (\"000000000000\" + idx).slice(-12) + \"}\",\n\t\t\tuserId: person,\n\t\t\tproviderId: \"None\"\n\t\t}));\n\t});\n\to.push(\"</personList>\");\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.28 BrtBeginComment */\nfunction parse_BrtBeginComment(data) {\n\tvar out = {};\n\tout.iauthor = data.read_shift(4);\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tout.rfx = rfx.s;\n\tout.ref = encode_cell(rfx.s);\n\tdata.l += 16; /*var guid = parse_GUID(data); */\n\treturn out;\n}\nfunction write_BrtBeginComment(data, o) {\n\tif(o == null) o = new_buf(36);\n\to.write_shift(4, data[1].iauthor);\n\twrite_UncheckedRfX((data[0]/*:any*/), o);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.327 BrtCommentAuthor */\nvar parse_BrtCommentAuthor = parse_XLWideString;\nfunction write_BrtCommentAuthor(data) { return write_XLWideString(data.slice(0, 54)); }\n\n/* [MS-XLSB] 2.1.7.8 Comments */\nfunction parse_comments_bin(data, opts)/*:Array<RawComment>*/ {\n\tvar out/*:Array<RawComment>*/ = [];\n\tvar authors/*:Array<string>*/ = [];\n\tvar c = {};\n\tvar pass = false;\n\trecordhopper(data, function hopper_cmnt(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x0278: /* 'BrtCommentAuthor' */\n\t\t\t\tauthors.push(val); break;\n\t\t\tcase 0x027B: /* 'BrtBeginComment' */\n\t\t\t\tc = val; break;\n\t\t\tcase 0x027D: /* 'BrtCommentText' */\n\t\t\t\tc.t = val.t; c.h = val.h; c.r = val.r; break;\n\t\t\tcase 0x027C: /* 'BrtEndComment' */\n\t\t\t\tc.author = authors[c.iauthor];\n\t\t\t\tdelete (c/*:any*/).iauthor;\n\t\t\t\tif(opts.sheetRows && c.rfx && opts.sheetRows <= c.rfx.r) break;\n\t\t\t\tif(!c.t) c.t = \"\";\n\t\t\t\tdelete c.rfx; out.push(c); break;\n\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */ break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */ break;\n\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn out;\n}\n\nfunction write_comments_bin(data/*::, opts*/) {\n\tvar ba = buf_array();\n\tvar iauthor/*:Array<string>*/ = [];\n\twrite_record(ba, 0x0274 /* BrtBeginComments */);\n\n\twrite_record(ba, 0x0276 /* BrtBeginCommentAuthors */);\n\tdata.forEach(function(comment) {\n\t\tcomment[1].forEach(function(c) {\n\t\t\tif(iauthor.indexOf(c.a) > -1) return;\n\t\t\tiauthor.push(c.a.slice(0,54));\n\t\t\twrite_record(ba, 0x0278 /* BrtCommentAuthor */, write_BrtCommentAuthor(c.a));\n\t\t});\n\t});\n\twrite_record(ba, 0x0277 /* BrtEndCommentAuthors */);\n\n\twrite_record(ba, 0x0279 /* BrtBeginCommentList */);\n\tdata.forEach(function(comment) {\n\t\tcomment[1].forEach(function(c) {\n\t\t\tc.iauthor = iauthor.indexOf(c.a);\n\t\t\tvar range = {s:decode_cell(comment[0]),e:decode_cell(comment[0])};\n\t\t\twrite_record(ba, 0x027B /* BrtBeginComment */, write_BrtBeginComment([range, c]));\n\t\t\tif(c.t && c.t.length > 0) write_record(ba, 0x027D /* BrtCommentText */, write_BrtCommentText(c));\n\t\t\twrite_record(ba, 0x027C /* BrtEndComment */);\n\t\t\tdelete c.iauthor;\n\t\t});\n\t});\n\twrite_record(ba, 0x027A /* BrtEndCommentList */);\n\n\twrite_record(ba, 0x0275 /* BrtEndComments */);\n\treturn ba.end();\n}\nvar CT_VBA = \"application/vnd.ms-office.vbaProject\";\nfunction make_vba_xls(cfb) {\n  var newcfb = CFB.utils.cfb_new({ root: \"R\" });\n  cfb.FullPaths.forEach(function(p, i) {\n    if (p.slice(-1) === \"/\" || !p.match(/_VBA_PROJECT_CUR/))\n      return;\n    var newpath = p.replace(/^[^\\/]*/, \"R\").replace(/\\/_VBA_PROJECT_CUR\\u0000*/, \"\");\n    CFB.utils.cfb_add(newcfb, newpath, cfb.FileIndex[i].content);\n  });\n  return CFB.write(newcfb);\n}\nfunction fill_vba_xls(cfb, vba) {\n  vba.FullPaths.forEach(function(p, i) {\n    if (i == 0)\n      return;\n    var newpath = p.replace(/[^\\/]*[\\/]/, \"/_VBA_PROJECT_CUR/\");\n    if (newpath.slice(-1) !== \"/\")\n      CFB.utils.cfb_add(cfb, newpath, vba.FileIndex[i].content);\n  });\n}\nvar VBAFMTS = [\"xlsb\", \"xlsm\", \"xlam\", \"biff8\", \"xla\"];\n/* macro and dialog sheet stubs */\nfunction parse_ds_bin(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'dialog'}; }\nfunction parse_ds_xml(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'dialog'}; }\nfunction parse_ms_bin(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'macro'}; }\nfunction parse_ms_xml(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'macro'}; }\n/* TODO: it will be useful to parse the function str */\nvar rc_to_a1 = /*#__PURE__*/(function(){\n\tvar rcregex = /(^|[^A-Za-z_])R(\\[?-?\\d+\\]|[1-9]\\d*|)C(\\[?-?\\d+\\]|[1-9]\\d*|)(?![A-Za-z0-9_])/g;\n\tvar rcbase/*:Cell*/ = ({r:0,c:0}/*:any*/);\n\tfunction rcfunc($$,$1,$2,$3) {\n\t\tvar cRel = false, rRel = false;\n\n\t\tif($2.length == 0) rRel = true;\n\t\telse if($2.charAt(0) == \"[\") { rRel = true; $2 = $2.slice(1, -1); }\n\n\t\tif($3.length == 0) cRel = true;\n\t\telse if($3.charAt(0) == \"[\") { cRel = true; $3 = $3.slice(1, -1); }\n\n\t\tvar R = $2.length>0?parseInt($2,10)|0:0, C = $3.length>0?parseInt($3,10)|0:0;\n\n\t\tif(cRel) C += rcbase.c; else --C;\n\t\tif(rRel) R += rcbase.r; else --R;\n\t\treturn $1 + (cRel ? \"\" : \"$\") + encode_col(C) + (rRel ? \"\" : \"$\") + encode_row(R);\n\t}\n\treturn function rc_to_a1(fstr/*:string*/, base/*:Cell*/)/*:string*/ {\n\t\trcbase = base;\n\t\treturn fstr.replace(rcregex, rcfunc);\n\t};\n})();\n\nvar crefregex = /(^|[^._A-Z0-9])([$]?)([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])([$]?)(10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})(?![_.\\(A-Za-z0-9])/g;\nvar a1_to_rc = /*#__PURE__*/(function(){\n\treturn function a1_to_rc(fstr/*:string*/, base/*:CellAddress*/) {\n\t\treturn fstr.replace(crefregex, function($0, $1, $2, $3, $4, $5) {\n\t\t\tvar c = decode_col($3) - ($2 ? 0 : base.c);\n\t\t\tvar r = decode_row($5) - ($4 ? 0 : base.r);\n\t\t\tvar R = (r == 0 ? \"\" : !$4 ? \"[\" + r + \"]\" : (r+1));\n\t\t\tvar C = (c == 0 ? \"\" : !$2 ? \"[\" + c + \"]\" : (c+1));\n\t\t\treturn $1 + \"R\" + R + \"C\" + C;\n\t\t});\n\t};\n})();\n\n/* no defined name can collide with a valid cell address A1:XFD1048576 ... except LOG10! */\nfunction shift_formula_str(f/*:string*/, delta/*:Cell*/)/*:string*/ {\n\treturn f.replace(crefregex, function($0, $1, $2, $3, $4, $5) {\n\t\treturn $1+($2==\"$\" ? $2+$3 : encode_col(decode_col($3)+delta.c))+($4==\"$\" ? $4+$5 : encode_row(decode_row($5) + delta.r));\n\t});\n}\n\nfunction shift_formula_xlsx(f/*:string*/, range/*:string*/, cell/*:string*/)/*:string*/ {\n\tvar r = decode_range(range), s = r.s, c = decode_cell(cell);\n\tvar delta = {r:c.r - s.r, c:c.c - s.c};\n\treturn shift_formula_str(f, delta);\n}\n\n/* TODO: parse formula */\nfunction fuzzyfmla(f/*:string*/)/*:boolean*/ {\n\tif(f.length == 1) return false;\n\treturn true;\n}\n\nfunction _xlfn(f/*:string*/)/*:string*/ {\n\treturn f.replace(/_xlfn\\./g,\"\");\n}\nfunction parseread1(blob) { blob.l+=1; return; }\n\n/* [MS-XLS] 2.5.51 */\nfunction parse_ColRelU(blob, length) {\n\tvar c = blob.read_shift(length == 1 ? 1 : 2);\n\treturn [c & 0x3FFF, (c >> 14) & 1, (c >> 15) & 1];\n}\n\n/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.89 */\nfunction parse_RgceArea(blob, length, opts) {\n\tvar w = 2;\n\tif(opts) {\n\t\tif(opts.biff >= 2 && opts.biff <= 5) return parse_RgceArea_BIFF2(blob, length, opts);\n\t\telse if(opts.biff == 12) w = 4;\n\t}\n\tvar r=blob.read_shift(w), R=blob.read_shift(w);\n\tvar c=parse_ColRelU(blob, 2);\n\tvar C=parse_ColRelU(blob, 2);\n\treturn { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} };\n}\n/* BIFF 2-5 encodes flags in the row field */\nfunction parse_RgceArea_BIFF2(blob/*::, length, opts*/) {\n\tvar r=parse_ColRelU(blob, 2), R=parse_ColRelU(blob, 2);\n\tvar c=blob.read_shift(1);\n\tvar C=blob.read_shift(1);\n\treturn { s:{r:r[0], c:c, cRel:r[1], rRel:r[2]}, e:{r:R[0], c:C, cRel:R[1], rRel:R[2]} };\n}\n\n/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.90 */\nfunction parse_RgceAreaRel(blob, length, opts) {\n\tif(opts.biff < 8) return parse_RgceArea_BIFF2(blob, length, opts);\n\tvar r=blob.read_shift(opts.biff == 12 ? 4 : 2), R=blob.read_shift(opts.biff == 12 ? 4 : 2);\n\tvar c=parse_ColRelU(blob, 2);\n\tvar C=parse_ColRelU(blob, 2);\n\treturn { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} };\n}\n\n/* [MS-XLS] 2.5.198.109 ; [MS-XLSB] 2.5.97.91 */\nfunction parse_RgceLoc(blob, length, opts) {\n\tif(opts && opts.biff >= 2 && opts.biff <= 5) return parse_RgceLoc_BIFF2(blob, length, opts);\n\tvar r = blob.read_shift(opts && opts.biff == 12 ? 4 : 2);\n\tvar c = parse_ColRelU(blob, 2);\n\treturn {r:r, c:c[0], cRel:c[1], rRel:c[2]};\n}\nfunction parse_RgceLoc_BIFF2(blob/*::, length, opts*/) {\n\tvar r = parse_ColRelU(blob, 2);\n\tvar c = blob.read_shift(1);\n\treturn {r:r[0], c:c, cRel:r[1], rRel:r[2]};\n}\n\n/* [MS-XLS] 2.5.198.107, 2.5.47 */\nfunction parse_RgceElfLoc(blob/*::, length, opts*/) {\n\tvar r = blob.read_shift(2);\n\tvar c = blob.read_shift(2);\n\treturn {r:r, c:c & 0xFF, fQuoted:!!(c & 0x4000), cRel:c>>15, rRel:c>>15 };\n}\n\n/* [MS-XLS] 2.5.198.111 ; [MS-XLSB] 2.5.97.92 TODO */\nfunction parse_RgceLocRel(blob, length, opts) {\n\tvar biff = opts && opts.biff ? opts.biff : 8;\n\tif(biff >= 2 && biff <= 5) return parse_RgceLocRel_BIFF2(blob, length, opts);\n\tvar r = blob.read_shift(biff >= 12 ? 4 : 2);\n\tvar cl = blob.read_shift(2);\n\tvar cRel = (cl & 0x4000) >> 14, rRel = (cl & 0x8000) >> 15;\n\tcl &= 0x3FFF;\n\tif(rRel == 1) while(r > 0x7FFFF) r -= 0x100000;\n\tif(cRel == 1) while(cl > 0x1FFF) cl = cl - 0x4000;\n\treturn {r:r,c:cl,cRel:cRel,rRel:rRel};\n}\nfunction parse_RgceLocRel_BIFF2(blob/*::, length:number, opts*/) {\n\tvar rl = blob.read_shift(2);\n\tvar c = blob.read_shift(1);\n\tvar rRel = (rl & 0x8000) >> 15, cRel = (rl & 0x4000) >> 14;\n\trl &= 0x3FFF;\n\tif(rRel == 1 && rl >= 0x2000) rl = rl - 0x4000;\n\tif(cRel == 1 && c >= 0x80) c = c - 0x100;\n\treturn {r:rl,c:c,cRel:cRel,rRel:rRel};\n}\n\n/* [MS-XLS] 2.5.198.27 ; [MS-XLSB] 2.5.97.18 */\nfunction parse_PtgArea(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar area = parse_RgceArea(blob, opts.biff >= 2 && opts.biff <= 5 ? 6 : 8, opts);\n\treturn [type, area];\n}\n\n/* [MS-XLS] 2.5.198.28 ; [MS-XLSB] 2.5.97.19 */\nfunction parse_PtgArea3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2, 'i');\n\tvar w = 8;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: blob.l += 12; w = 6; break;\n\t\tcase 12: w = 12; break;\n\t}\n\tvar area = parse_RgceArea(blob, w, opts);\n\treturn [type, ixti, area];\n}\n\n/* [MS-XLS] 2.5.198.29 ; [MS-XLSB] 2.5.97.20 */\nfunction parse_PtgAreaErr(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tblob.l += opts && (opts.biff > 8) ? 12 : (opts.biff < 8 ? 6 : 8);\n\treturn [type];\n}\n/* [MS-XLS] 2.5.198.30 ; [MS-XLSB] 2.5.97.21 */\nfunction parse_PtgAreaErr3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2);\n\tvar w = 8;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: blob.l += 12; w = 6; break;\n\t\tcase 12: w = 12; break;\n\t}\n\tblob.l += w;\n\treturn [type, ixti];\n}\n\n/* [MS-XLS] 2.5.198.31 ; [MS-XLSB] 2.5.97.22 */\nfunction parse_PtgAreaN(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar area = parse_RgceAreaRel(blob, length - 1, opts);\n\treturn [type, area];\n}\n\n/* [MS-XLS] 2.5.198.32 ; [MS-XLSB] 2.5.97.23 */\nfunction parse_PtgArray(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tblob.l += opts.biff == 2 ? 6 : opts.biff == 12 ? 14 : 7;\n\treturn [type];\n}\n\n/* [MS-XLS] 2.5.198.33 ; [MS-XLSB] 2.5.97.24 */\nfunction parse_PtgAttrBaxcel(blob) {\n\tvar bitSemi = blob[blob.l+1] & 0x01; /* 1 = volatile */\n\tvar bitBaxcel = 1;\n\tblob.l += 4;\n\treturn [bitSemi, bitBaxcel];\n}\n\n/* [MS-XLS] 2.5.198.34 ; [MS-XLSB] 2.5.97.25 */\nfunction parse_PtgAttrChoose(blob, length, opts)/*:Array<number>*/ {\n\tblob.l +=2;\n\tvar offset = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tvar o/*:Array<number>*/ = [];\n\t/* offset is 1 less than the number of elements */\n\tfor(var i = 0; i <= offset; ++i) o.push(blob.read_shift(opts && opts.biff == 2 ? 1 : 2));\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.35 ; [MS-XLSB] 2.5.97.26 */\nfunction parse_PtgAttrGoto(blob, length, opts) {\n\tvar bitGoto = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitGoto, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)];\n}\n\n/* [MS-XLS] 2.5.198.36 ; [MS-XLSB] 2.5.97.27 */\nfunction parse_PtgAttrIf(blob, length, opts) {\n\tvar bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitIf, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)];\n}\n\n/* [MS-XLSB] 2.5.97.28 */\nfunction parse_PtgAttrIfError(blob) {\n\tvar bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitIf, blob.read_shift(2)];\n}\n\n/* [MS-XLS] 2.5.198.37 ; [MS-XLSB] 2.5.97.29 */\nfunction parse_PtgAttrSemi(blob, length, opts) {\n\tvar bitSemi = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += opts && opts.biff == 2 ? 3 : 4;\n\treturn [bitSemi];\n}\n\n/* [MS-XLS] 2.5.198.40 ; [MS-XLSB] 2.5.97.32 */\nfunction parse_PtgAttrSpaceType(blob/*::, length*/) {\n\tvar type = blob.read_shift(1), cch = blob.read_shift(1);\n\treturn [type, cch];\n}\n\n/* [MS-XLS] 2.5.198.38 ; [MS-XLSB] 2.5.97.30 */\nfunction parse_PtgAttrSpace(blob) {\n\tblob.read_shift(2);\n\treturn parse_PtgAttrSpaceType(blob, 2);\n}\n\n/* [MS-XLS] 2.5.198.39 ; [MS-XLSB] 2.5.97.31 */\nfunction parse_PtgAttrSpaceSemi(blob) {\n\tblob.read_shift(2);\n\treturn parse_PtgAttrSpaceType(blob, 2);\n}\n\n/* [MS-XLS] 2.5.198.84 ; [MS-XLSB] 2.5.97.68 TODO */\nfunction parse_PtgRef(blob, length, opts) {\n\t//var ptg = blob[blob.l] & 0x1F;\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar loc = parse_RgceLoc(blob, 0, opts);\n\treturn [type, loc];\n}\n\n/* [MS-XLS] 2.5.198.88 ; [MS-XLSB] 2.5.97.72 TODO */\nfunction parse_PtgRefN(blob, length, opts) {\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar loc = parse_RgceLocRel(blob, 0, opts);\n\treturn [type, loc];\n}\n\n/* [MS-XLS] 2.5.198.85 ; [MS-XLSB] 2.5.97.69 TODO */\nfunction parse_PtgRef3d(blob, length, opts) {\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar ixti = blob.read_shift(2); // XtiIndex\n\tif(opts && opts.biff == 5) blob.l += 12;\n\tvar loc = parse_RgceLoc(blob, 0, opts); // TODO: or RgceLocRel\n\treturn [type, ixti, loc];\n}\n\n\n/* [MS-XLS] 2.5.198.62 ; [MS-XLSB] 2.5.97.45 TODO */\nfunction parse_PtgFunc(blob, length, opts) {\n\t//var ptg = blob[blob.l] & 0x1F;\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar iftab = blob.read_shift(opts && opts.biff <= 3 ? 1 : 2);\n\treturn [FtabArgc[iftab], Ftab[iftab], type];\n}\n/* [MS-XLS] 2.5.198.63 ; [MS-XLSB] 2.5.97.46 TODO */\nfunction parse_PtgFuncVar(blob, length, opts) {\n\tvar type = blob[blob.l++];\n\tvar cparams = blob.read_shift(1), tab = opts && opts.biff <= 3 ? [(type == 0x58 ? -1 : 0), blob.read_shift(1)]: parsetab(blob);\n\treturn [cparams, (tab[0] === 0 ? Ftab : Cetab)[tab[1]]];\n}\n\nfunction parsetab(blob) {\n\treturn [blob[blob.l+1]>>7, blob.read_shift(2) & 0x7FFF];\n}\n\n/* [MS-XLS] 2.5.198.41 ; [MS-XLSB] 2.5.97.33 */\nfunction parse_PtgAttrSum(blob, length, opts) {\n\tblob.l += opts && opts.biff == 2 ? 3 : 4; return;\n}\n\n/* [MS-XLS] 2.5.198.58 ; [MS-XLSB] 2.5.97.40 */\nfunction parse_PtgExp(blob, length, opts) {\n\tblob.l++;\n\tif(opts && opts.biff == 12) return [blob.read_shift(4, 'i'), 0];\n\tvar row = blob.read_shift(2);\n\tvar col = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [row, col];\n}\n\n/* [MS-XLS] 2.5.198.57 ; [MS-XLSB] 2.5.97.39 */\nfunction parse_PtgErr(blob) { blob.l++; return BErr[blob.read_shift(1)]; }\n\n/* [MS-XLS] 2.5.198.66 ; [MS-XLSB] 2.5.97.49 */\nfunction parse_PtgInt(blob) { blob.l++; return blob.read_shift(2); }\n\n/* [MS-XLS] 2.5.198.42 ; [MS-XLSB] 2.5.97.34 */\nfunction parse_PtgBool(blob) { blob.l++; return blob.read_shift(1)!==0;}\n\n/* [MS-XLS] 2.5.198.79 ; [MS-XLSB] 2.5.97.63 */\nfunction parse_PtgNum(blob) { blob.l++; return parse_Xnum(blob, 8); }\n\n/* [MS-XLS] 2.5.198.89 ; [MS-XLSB] 2.5.97.74 */\nfunction parse_PtgStr(blob, length, opts) { blob.l++; return parse_ShortXLUnicodeString(blob, length-1, opts); }\n\n/* [MS-XLS] 2.5.192.112 + 2.5.192.11{3,4,5,6,7} */\n/* [MS-XLSB] 2.5.97.93 + 2.5.97.9{4,5,6,7} */\nfunction parse_SerAr(blob, biff/*:number*/) {\n\tvar val = [blob.read_shift(1)];\n\tif(biff == 12) switch(val[0]) {\n\t\tcase 0x02: val[0] = 0x04; break; /* SerBool */\n\t\tcase 0x04: val[0] = 0x10; break; /* SerErr */\n\t\tcase 0x00: val[0] = 0x01; break; /* SerNum */\n\t\tcase 0x01: val[0] = 0x02; break; /* SerStr */\n\t}\n\tswitch(val[0]) {\n\t\tcase 0x04: /* SerBool -- boolean */\n\t\t\tval[1] = parsebool(blob, 1) ? 'TRUE' : 'FALSE';\n\t\t\tif(biff != 12) blob.l += 7; break;\n\t\tcase 0x25: /* appears to be an alias */\n\t\tcase 0x10: /* SerErr -- error */\n\t\t\tval[1] = BErr[blob[blob.l]];\n\t\t\tblob.l += ((biff == 12) ? 4 : 8); break;\n\t\tcase 0x00: /* SerNil -- honestly, I'm not sure how to reproduce this */\n\t\t\tblob.l += 8; break;\n\t\tcase 0x01: /* SerNum -- Xnum */\n\t\t\tval[1] = parse_Xnum(blob, 8); break;\n\t\tcase 0x02: /* SerStr -- XLUnicodeString (<256 chars) */\n\t\t\tval[1] = parse_XLUnicodeString2(blob, 0, {biff:biff > 0 && biff < 8 ? 2 : biff}); break;\n\t\tdefault: throw new Error(\"Bad SerAr: \" + val[0]); /* Unreachable */\n\t}\n\treturn val;\n}\n\n/* [MS-XLS] 2.5.198.61 ; [MS-XLSB] 2.5.97.44 */\nfunction parse_PtgExtraMem(blob, cce, opts) {\n\tvar count = blob.read_shift((opts.biff == 12) ? 4 : 2);\n\tvar out/*:Array<Range>*/ = [];\n\tfor(var i = 0; i != count; ++i) out.push(((opts.biff == 12) ? parse_UncheckedRfX : parse_Ref8U)(blob, 8));\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.198.59 ; [MS-XLSB] 2.5.97.41 */\nfunction parse_PtgExtraArray(blob, length, opts) {\n\tvar rows = 0, cols = 0;\n\tif(opts.biff == 12) {\n\t\trows = blob.read_shift(4); // DRw\n\t\tcols = blob.read_shift(4); // DCol\n\t} else {\n\t\tcols = 1 + blob.read_shift(1); //DColByteU\n\t\trows = 1 + blob.read_shift(2); //DRw\n\t}\n\tif(opts.biff >= 2 && opts.biff < 8) { --rows; if(--cols == 0) cols = 0x100; }\n\t// $FlowIgnore\n\tfor(var i = 0, o/*:Array<Array<any>>*/ = []; i != rows && (o[i] = []); ++i)\n\t\tfor(var j = 0; j != cols; ++j) o[i][j] = parse_SerAr(blob, opts.biff);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 */\nfunction parse_PtgName(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar w = (!opts || (opts.biff >= 8)) ? 4 : 2;\n\tvar nameindex = blob.read_shift(w);\n\tswitch(opts.biff) {\n\t\tcase 2: blob.l += 5; break;\n\t\tcase 3: case 4: blob.l += 8; break;\n\t\tcase 5: blob.l += 12; break;\n\t}\n\treturn [type, 0, nameindex];\n}\n\n/* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 */\nfunction parse_PtgNameX(blob, length, opts) {\n\tif(opts.biff == 5) return parse_PtgNameX_BIFF5(blob, length, opts);\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar ixti = blob.read_shift(2); // XtiIndex\n\tvar nameindex = blob.read_shift(4);\n\treturn [type, ixti, nameindex];\n}\nfunction parse_PtgNameX_BIFF5(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar ixti = blob.read_shift(2, 'i'); // XtiIndex\n\tblob.l += 8;\n\tvar nameindex = blob.read_shift(2);\n\tblob.l += 12;\n\treturn [type, ixti, nameindex];\n}\n\n/* [MS-XLS] 2.5.198.70 ; [MS-XLSB] 2.5.97.54 */\nfunction parse_PtgMemArea(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tblob.l += (opts && opts.biff == 2 ? 3 : 4);\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [type, cce];\n}\n\n/* [MS-XLS] 2.5.198.72 ; [MS-XLSB] 2.5.97.56 */\nfunction parse_PtgMemFunc(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [type, cce];\n}\n\n\n/* [MS-XLS] 2.5.198.86 ; [MS-XLSB] 2.5.97.69 */\nfunction parse_PtgRefErr(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tblob.l += 4;\n\tif(opts.biff < 8) blob.l--;\n\tif(opts.biff == 12) blob.l += 2;\n\treturn [type];\n}\n\n/* [MS-XLS] 2.5.198.87 ; [MS-XLSB] 2.5.97.71 */\nfunction parse_PtgRefErr3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2);\n\tvar w = 4;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: w = 15; break;\n\t\tcase 12: w = 6; break;\n\t}\n\tblob.l += w;\n\treturn [type, ixti];\n}\n\n/* [MS-XLS] 2.5.198.71 ; [MS-XLSB] 2.5.97.55 */\nvar parse_PtgMemErr = parsenoop;\n/* [MS-XLS] 2.5.198.73  ; [MS-XLSB] 2.5.97.57 */\nvar parse_PtgMemNoMem = parsenoop;\n/* [MS-XLS] 2.5.198.92 */\nvar parse_PtgTbl = parsenoop;\n\nfunction parse_PtgElfLoc(blob, length, opts) {\n\tblob.l += 2;\n\treturn [parse_RgceElfLoc(blob, 4, opts)];\n}\nfunction parse_PtgElfNoop(blob/*::, length, opts*/) {\n\tblob.l += 6;\n\treturn [];\n}\n/* [MS-XLS] 2.5.198.46 */\nvar parse_PtgElfCol = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.47 */\nvar parse_PtgElfColS = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.48 */\nvar parse_PtgElfColSV = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.49 */\nvar parse_PtgElfColV = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.50 */\nfunction parse_PtgElfLel(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\treturn [parseuint16(blob), blob.read_shift(2) & 0x01];\n}\n/* [MS-XLS] 2.5.198.51 */\nvar parse_PtgElfRadical = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.52 */\nvar parse_PtgElfRadicalLel = parse_PtgElfLel;\n/* [MS-XLS] 2.5.198.53 */\nvar parse_PtgElfRadicalS = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.54 */\nvar parse_PtgElfRw = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.55 */\nvar parse_PtgElfRwV = parse_PtgElfLoc;\n\n/* [MS-XLSB] 2.5.97.52 TODO */\nvar PtgListRT = [\n\t\"Data\",\n\t\"All\",\n\t\"Headers\",\n\t\"??\",\n\t\"?Data2\",\n\t\"??\",\n\t\"?DataHeaders\",\n\t\"??\",\n\t\"Totals\",\n\t\"??\",\n\t\"??\",\n\t\"??\",\n\t\"?DataTotals\",\n\t\"??\",\n\t\"??\",\n\t\"??\",\n\t\"?Current\"\n];\nfunction parse_PtgList(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\tvar ixti = blob.read_shift(2);\n\tvar flags = blob.read_shift(2);\n\tvar idx = blob.read_shift(4);\n\tvar c = blob.read_shift(2);\n\tvar C = blob.read_shift(2);\n\tvar rt = PtgListRT[(flags >> 2) & 0x1F];\n\treturn {ixti: ixti, coltype:(flags&0x3), rt:rt, idx:idx, c:c, C:C};\n}\n/* [MS-XLS] 2.5.198.91 ; [MS-XLSB] 2.5.97.76 */\nfunction parse_PtgSxName(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\treturn [blob.read_shift(4)];\n}\n\n/* [XLS] old spec */\nfunction parse_PtgSheet(blob, length, opts) {\n\tblob.l += 5;\n\tblob.l += 2;\n\tblob.l += (opts.biff == 2 ? 1 : 4);\n\treturn [\"PTGSHEET\"];\n}\nfunction parse_PtgEndSheet(blob, length, opts) {\n\tblob.l += (opts.biff == 2 ? 4 : 5);\n\treturn [\"PTGENDSHEET\"];\n}\nfunction parse_PtgMemAreaN(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(2);\n\treturn [type, cce];\n}\nfunction parse_PtgMemNoMemN(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(2);\n\treturn [type, cce];\n}\nfunction parse_PtgAttrNoop(blob/*::, length, opts*/) {\n\tblob.l += 4;\n\treturn [0, 0];\n}\n\n/* [MS-XLS] 2.5.198.25 ; [MS-XLSB] 2.5.97.16 */\nvar PtgTypes = {\n\t/*::[*/0x01/*::]*/: { n:'PtgExp', f:parse_PtgExp },\n\t/*::[*/0x02/*::]*/: { n:'PtgTbl', f:parse_PtgTbl },\n\t/*::[*/0x03/*::]*/: { n:'PtgAdd', f:parseread1 },\n\t/*::[*/0x04/*::]*/: { n:'PtgSub', f:parseread1 },\n\t/*::[*/0x05/*::]*/: { n:'PtgMul', f:parseread1 },\n\t/*::[*/0x06/*::]*/: { n:'PtgDiv', f:parseread1 },\n\t/*::[*/0x07/*::]*/: { n:'PtgPower', f:parseread1 },\n\t/*::[*/0x08/*::]*/: { n:'PtgConcat', f:parseread1 },\n\t/*::[*/0x09/*::]*/: { n:'PtgLt', f:parseread1 },\n\t/*::[*/0x0A/*::]*/: { n:'PtgLe', f:parseread1 },\n\t/*::[*/0x0B/*::]*/: { n:'PtgEq', f:parseread1 },\n\t/*::[*/0x0C/*::]*/: { n:'PtgGe', f:parseread1 },\n\t/*::[*/0x0D/*::]*/: { n:'PtgGt', f:parseread1 },\n\t/*::[*/0x0E/*::]*/: { n:'PtgNe', f:parseread1 },\n\t/*::[*/0x0F/*::]*/: { n:'PtgIsect', f:parseread1 },\n\t/*::[*/0x10/*::]*/: { n:'PtgUnion', f:parseread1 },\n\t/*::[*/0x11/*::]*/: { n:'PtgRange', f:parseread1 },\n\t/*::[*/0x12/*::]*/: { n:'PtgUplus', f:parseread1 },\n\t/*::[*/0x13/*::]*/: { n:'PtgUminus', f:parseread1 },\n\t/*::[*/0x14/*::]*/: { n:'PtgPercent', f:parseread1 },\n\t/*::[*/0x15/*::]*/: { n:'PtgParen', f:parseread1 },\n\t/*::[*/0x16/*::]*/: { n:'PtgMissArg', f:parseread1 },\n\t/*::[*/0x17/*::]*/: { n:'PtgStr', f:parse_PtgStr },\n\t/*::[*/0x1A/*::]*/: { n:'PtgSheet', f:parse_PtgSheet },\n\t/*::[*/0x1B/*::]*/: { n:'PtgEndSheet', f:parse_PtgEndSheet },\n\t/*::[*/0x1C/*::]*/: { n:'PtgErr', f:parse_PtgErr },\n\t/*::[*/0x1D/*::]*/: { n:'PtgBool', f:parse_PtgBool },\n\t/*::[*/0x1E/*::]*/: { n:'PtgInt', f:parse_PtgInt },\n\t/*::[*/0x1F/*::]*/: { n:'PtgNum', f:parse_PtgNum },\n\t/*::[*/0x20/*::]*/: { n:'PtgArray', f:parse_PtgArray },\n\t/*::[*/0x21/*::]*/: { n:'PtgFunc', f:parse_PtgFunc },\n\t/*::[*/0x22/*::]*/: { n:'PtgFuncVar', f:parse_PtgFuncVar },\n\t/*::[*/0x23/*::]*/: { n:'PtgName', f:parse_PtgName },\n\t/*::[*/0x24/*::]*/: { n:'PtgRef', f:parse_PtgRef },\n\t/*::[*/0x25/*::]*/: { n:'PtgArea', f:parse_PtgArea },\n\t/*::[*/0x26/*::]*/: { n:'PtgMemArea', f:parse_PtgMemArea },\n\t/*::[*/0x27/*::]*/: { n:'PtgMemErr', f:parse_PtgMemErr },\n\t/*::[*/0x28/*::]*/: { n:'PtgMemNoMem', f:parse_PtgMemNoMem },\n\t/*::[*/0x29/*::]*/: { n:'PtgMemFunc', f:parse_PtgMemFunc },\n\t/*::[*/0x2A/*::]*/: { n:'PtgRefErr', f:parse_PtgRefErr },\n\t/*::[*/0x2B/*::]*/: { n:'PtgAreaErr', f:parse_PtgAreaErr },\n\t/*::[*/0x2C/*::]*/: { n:'PtgRefN', f:parse_PtgRefN },\n\t/*::[*/0x2D/*::]*/: { n:'PtgAreaN', f:parse_PtgAreaN },\n\t/*::[*/0x2E/*::]*/: { n:'PtgMemAreaN', f:parse_PtgMemAreaN },\n\t/*::[*/0x2F/*::]*/: { n:'PtgMemNoMemN', f:parse_PtgMemNoMemN },\n\t/*::[*/0x39/*::]*/: { n:'PtgNameX', f:parse_PtgNameX },\n\t/*::[*/0x3A/*::]*/: { n:'PtgRef3d', f:parse_PtgRef3d },\n\t/*::[*/0x3B/*::]*/: { n:'PtgArea3d', f:parse_PtgArea3d },\n\t/*::[*/0x3C/*::]*/: { n:'PtgRefErr3d', f:parse_PtgRefErr3d },\n\t/*::[*/0x3D/*::]*/: { n:'PtgAreaErr3d', f:parse_PtgAreaErr3d },\n\t/*::[*/0xFF/*::]*/: {}\n};\n/* These are duplicated in the PtgTypes table */\nvar PtgDupes = {\n\t/*::[*/0x40/*::]*/: 0x20, /*::[*/0x60/*::]*/: 0x20,\n\t/*::[*/0x41/*::]*/: 0x21, /*::[*/0x61/*::]*/: 0x21,\n\t/*::[*/0x42/*::]*/: 0x22, /*::[*/0x62/*::]*/: 0x22,\n\t/*::[*/0x43/*::]*/: 0x23, /*::[*/0x63/*::]*/: 0x23,\n\t/*::[*/0x44/*::]*/: 0x24, /*::[*/0x64/*::]*/: 0x24,\n\t/*::[*/0x45/*::]*/: 0x25, /*::[*/0x65/*::]*/: 0x25,\n\t/*::[*/0x46/*::]*/: 0x26, /*::[*/0x66/*::]*/: 0x26,\n\t/*::[*/0x47/*::]*/: 0x27, /*::[*/0x67/*::]*/: 0x27,\n\t/*::[*/0x48/*::]*/: 0x28, /*::[*/0x68/*::]*/: 0x28,\n\t/*::[*/0x49/*::]*/: 0x29, /*::[*/0x69/*::]*/: 0x29,\n\t/*::[*/0x4A/*::]*/: 0x2A, /*::[*/0x6A/*::]*/: 0x2A,\n\t/*::[*/0x4B/*::]*/: 0x2B, /*::[*/0x6B/*::]*/: 0x2B,\n\t/*::[*/0x4C/*::]*/: 0x2C, /*::[*/0x6C/*::]*/: 0x2C,\n\t/*::[*/0x4D/*::]*/: 0x2D, /*::[*/0x6D/*::]*/: 0x2D,\n\t/*::[*/0x4E/*::]*/: 0x2E, /*::[*/0x6E/*::]*/: 0x2E,\n\t/*::[*/0x4F/*::]*/: 0x2F, /*::[*/0x6F/*::]*/: 0x2F,\n\t/*::[*/0x58/*::]*/: 0x22, /*::[*/0x78/*::]*/: 0x22,\n\t/*::[*/0x59/*::]*/: 0x39, /*::[*/0x79/*::]*/: 0x39,\n\t/*::[*/0x5A/*::]*/: 0x3A, /*::[*/0x7A/*::]*/: 0x3A,\n\t/*::[*/0x5B/*::]*/: 0x3B, /*::[*/0x7B/*::]*/: 0x3B,\n\t/*::[*/0x5C/*::]*/: 0x3C, /*::[*/0x7C/*::]*/: 0x3C,\n\t/*::[*/0x5D/*::]*/: 0x3D, /*::[*/0x7D/*::]*/: 0x3D\n};\n\nvar Ptg18 = {\n\t/*::[*/0x01/*::]*/: { n:'PtgElfLel', f:parse_PtgElfLel },\n\t/*::[*/0x02/*::]*/: { n:'PtgElfRw', f:parse_PtgElfRw },\n\t/*::[*/0x03/*::]*/: { n:'PtgElfCol', f:parse_PtgElfCol },\n\t/*::[*/0x06/*::]*/: { n:'PtgElfRwV', f:parse_PtgElfRwV },\n\t/*::[*/0x07/*::]*/: { n:'PtgElfColV', f:parse_PtgElfColV },\n\t/*::[*/0x0A/*::]*/: { n:'PtgElfRadical', f:parse_PtgElfRadical },\n\t/*::[*/0x0B/*::]*/: { n:'PtgElfRadicalS', f:parse_PtgElfRadicalS },\n\t/*::[*/0x0D/*::]*/: { n:'PtgElfColS', f:parse_PtgElfColS },\n\t/*::[*/0x0F/*::]*/: { n:'PtgElfColSV', f:parse_PtgElfColSV },\n\t/*::[*/0x10/*::]*/: { n:'PtgElfRadicalLel', f:parse_PtgElfRadicalLel },\n\t/*::[*/0x19/*::]*/: { n:'PtgList', f:parse_PtgList },\n\t/*::[*/0x1D/*::]*/: { n:'PtgSxName', f:parse_PtgSxName },\n\t/*::[*/0xFF/*::]*/: {}\n};\nvar Ptg19 = {\n\t/*::[*/0x00/*::]*/: { n:'PtgAttrNoop', f:parse_PtgAttrNoop },\n\t/*::[*/0x01/*::]*/: { n:'PtgAttrSemi', f:parse_PtgAttrSemi },\n\t/*::[*/0x02/*::]*/: { n:'PtgAttrIf', f:parse_PtgAttrIf },\n\t/*::[*/0x04/*::]*/: { n:'PtgAttrChoose', f:parse_PtgAttrChoose },\n\t/*::[*/0x08/*::]*/: { n:'PtgAttrGoto', f:parse_PtgAttrGoto },\n\t/*::[*/0x10/*::]*/: { n:'PtgAttrSum', f:parse_PtgAttrSum },\n\t/*::[*/0x20/*::]*/: { n:'PtgAttrBaxcel', f:parse_PtgAttrBaxcel },\n\t/*::[*/0x21/*::]*/: { n:'PtgAttrBaxcel', f:parse_PtgAttrBaxcel },\n\t/*::[*/0x40/*::]*/: { n:'PtgAttrSpace', f:parse_PtgAttrSpace },\n\t/*::[*/0x41/*::]*/: { n:'PtgAttrSpaceSemi', f:parse_PtgAttrSpaceSemi },\n\t/*::[*/0x80/*::]*/: { n:'PtgAttrIfError', f:parse_PtgAttrIfError },\n\t/*::[*/0xFF/*::]*/: {}\n};\n\n/* [MS-XLS] 2.5.198.103 ; [MS-XLSB] 2.5.97.87 */\nfunction parse_RgbExtra(blob, length, rgce, opts) {\n\tif(opts.biff < 8) return parsenoop(blob, length);\n\tvar target = blob.l + length;\n\tvar o = [];\n\tfor(var i = 0; i !== rgce.length; ++i) {\n\t\tswitch(rgce[i][0]) {\n\t\t\tcase 'PtgArray': /* PtgArray -> PtgExtraArray */\n\t\t\t\trgce[i][1] = parse_PtgExtraArray(blob, 0, opts);\n\t\t\t\to.push(rgce[i][1]);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgMemArea': /* PtgMemArea -> PtgExtraMem */\n\t\t\t\trgce[i][2] = parse_PtgExtraMem(blob, rgce[i][1], opts);\n\t\t\t\to.push(rgce[i][2]);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgExp': /* PtgExp -> PtgExtraCol */\n\t\t\t\tif(opts && opts.biff == 12) {\n\t\t\t\t\trgce[i][1][1] = blob.read_shift(4);\n\t\t\t\t\to.push(rgce[i][1]);\n\t\t\t\t} break;\n\t\t\tcase 'PtgList': /* TODO: PtgList -> PtgExtraList */\n\t\t\tcase 'PtgElfRadicalS': /* TODO: PtgElfRadicalS -> PtgExtraElf */\n\t\t\tcase 'PtgElfColS': /* TODO: PtgElfColS -> PtgExtraElf */\n\t\t\tcase 'PtgElfColSV': /* TODO: PtgElfColSV -> PtgExtraElf */\n\t\t\t\tthrow \"Unsupported \" + rgce[i][0];\n\t\t\tdefault: break;\n\t\t}\n\t}\n\tlength = target - blob.l;\n\t/* note: this is technically an error but Excel disregards */\n\t//if(target !== blob.l && blob.l !== target - length) throw new Error(target + \" != \" + blob.l);\n\tif(length !== 0) o.push(parsenoop(blob, length));\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.104 ; [MS-XLSB] 2.5.97.88 */\nfunction parse_Rgce(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar R, id, ptgs = [];\n\twhile(target != blob.l) {\n\t\tlength = target - blob.l;\n\t\tid = blob[blob.l];\n\t\tR = PtgTypes[id] || PtgTypes[PtgDupes[id]];\n\t\tif(id === 0x18 || id === 0x19) R = (id === 0x18 ? Ptg18 : Ptg19)[blob[blob.l + 1]];\n\t\tif(!R || !R.f) { /*ptgs.push*/(parsenoop(blob, length)); }\n\t\telse { ptgs.push([R.n, R.f(blob, length, opts)]); }\n\t}\n\treturn ptgs;\n}\n\nfunction stringify_array(f/*:Array<Array<string>>*/)/*:string*/ {\n\tvar o/*:Array<string>*/ = [];\n\tfor(var i = 0; i < f.length; ++i) {\n\t\tvar x = f[i], r/*:Array<string>*/ = [];\n\t\tfor(var j = 0; j < x.length; ++j) {\n\t\t\tvar y = x[j];\n\t\t\tif(y) switch(y[0]) {\n\t\t\t\t// TODO: handle embedded quotes\n\t\t\t\tcase 0x02:\n\t\t\t\t\t/*:: if(typeof y[1] != 'string') throw \"unreachable\"; */\n\t\t\t\t\tr.push('\"' + y[1].replace(/\"/g,'\"\"') + '\"'); break;\n\t\t\t\tdefault: r.push(y[1]);\n\t\t\t} else r.push(\"\");\n\t\t}\n\t\to.push(r.join(\",\"));\n\t}\n\treturn o.join(\";\");\n}\n\n/* [MS-XLS] 2.2.2 ; [MS-XLSB] 2.2.2 TODO */\nvar PtgBinOp = {\n\tPtgAdd: \"+\",\n\tPtgConcat: \"&\",\n\tPtgDiv: \"/\",\n\tPtgEq: \"=\",\n\tPtgGe: \">=\",\n\tPtgGt: \">\",\n\tPtgLe: \"<=\",\n\tPtgLt: \"<\",\n\tPtgMul: \"*\",\n\tPtgNe: \"<>\",\n\tPtgPower: \"^\",\n\tPtgSub: \"-\"\n};\n\n// List of invalid characters needs to be tested further\nfunction formula_quote_sheet_name(sname/*:string*/, opts)/*:string*/ {\n\tif(!sname && !(opts && opts.biff <= 5 && opts.biff >= 2)) throw new Error(\"empty sheet name\");\n\tif (/[^\\w\\u4E00-\\u9FFF\\u3040-\\u30FF]/.test(sname)) return \"'\" + sname + \"'\";\n\treturn sname;\n}\nfunction get_ixti_raw(supbooks, ixti/*:number*/, opts)/*:string*/ {\n\tif(!supbooks) return \"SH33TJSERR0\";\n\tif(opts.biff > 8 && (!supbooks.XTI || !supbooks.XTI[ixti])) return supbooks.SheetNames[ixti];\n\tif(!supbooks.XTI) return \"SH33TJSERR6\";\n\tvar XTI = supbooks.XTI[ixti];\n\tif(opts.biff < 8) {\n\t\tif(ixti > 10000) ixti-= 65536;\n\t\tif(ixti < 0) ixti = -ixti;\n\t\treturn ixti == 0 ? \"\" : supbooks.XTI[ixti - 1];\n\t}\n\tif(!XTI) return \"SH33TJSERR1\";\n\tvar o = \"\";\n\tif(opts.biff > 8) switch(supbooks[XTI[0]][0]) {\n\t\tcase 0x0165: /* 'BrtSupSelf' */\n\t\t\to = XTI[1] == -1 ? \"#REF\" : supbooks.SheetNames[XTI[1]];\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks.SheetNames[XTI[2]];\n\t\tcase 0x0166: /* 'BrtSupSame' */\n\t\t\tif(opts.SID != null) return supbooks.SheetNames[opts.SID];\n\t\t\treturn \"SH33TJSSAME\" + supbooks[XTI[0]][0];\n\t\tcase 0x0163: /* 'BrtSupBookSrc' */\n\t\t\t/* falls through */\n\t\tdefault: return \"SH33TJSSRC\" + supbooks[XTI[0]][0];\n\t}\n\tswitch(supbooks[XTI[0]][0][0]) {\n\t\tcase 0x0401:\n\t\t\to = XTI[1] == -1 ? \"#REF\" : (supbooks.SheetNames[XTI[1]] || \"SH33TJSERR3\");\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks.SheetNames[XTI[2]];\n\t\tcase 0x3A01: return supbooks[XTI[0]].slice(1).map(function(name) { return name.Name; }).join(\";;\"); //return \"SH33TJSERR8\";\n\t\tdefault:\n\t\t\tif(!supbooks[XTI[0]][0][3]) return \"SH33TJSERR2\";\n\t\t\to = XTI[1] == -1 ? \"#REF\" : (supbooks[XTI[0]][0][3][XTI[1]] || \"SH33TJSERR4\");\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks[XTI[0]][0][3][XTI[2]];\n\t}\n}\nfunction get_ixti(supbooks, ixti/*:number*/, opts)/*:string*/ {\n\tvar ixtiraw = get_ixti_raw(supbooks, ixti, opts);\n\treturn ixtiraw == \"#REF\" ? ixtiraw : formula_quote_sheet_name(ixtiraw, opts);\n}\nfunction stringify_formula(formula/*Array<any>*/, range, cell/*:any*/, supbooks, opts)/*:string*/ {\n\tvar biff = (opts && opts.biff) || 8;\n\tvar _range = /*range != null ? range :*/ {s:{c:0, r:0},e:{c:0, r:0}};\n\tvar stack/*:Array<string>*/ = [], e1, e2, /*::type,*/ c/*:CellAddress*/, ixti=0, nameidx=0, r, sname=\"\";\n\tif(!formula[0] || !formula[0][0]) return \"\";\n\tvar last_sp = -1, sp = \"\";\n\tfor(var ff = 0, fflen = formula[0].length; ff < fflen; ++ff) {\n\t\tvar f = formula[0][ff];\n\t\tswitch(f[0]) {\n\t\t\tcase 'PtgUminus': /* [MS-XLS] 2.5.198.93 */\n\t\t\t\tstack.push(\"-\" + stack.pop()); break;\n\t\t\tcase 'PtgUplus': /* [MS-XLS] 2.5.198.95 */\n\t\t\t\tstack.push(\"+\" + stack.pop()); break;\n\t\t\tcase 'PtgPercent': /* [MS-XLS] 2.5.198.81 */\n\t\t\t\tstack.push(stack.pop() + \"%\"); break;\n\n\t\t\tcase 'PtgAdd':    /* [MS-XLS] 2.5.198.26 */\n\t\t\tcase 'PtgConcat': /* [MS-XLS] 2.5.198.43 */\n\t\t\tcase 'PtgDiv':    /* [MS-XLS] 2.5.198.45 */\n\t\t\tcase 'PtgEq':     /* [MS-XLS] 2.5.198.56 */\n\t\t\tcase 'PtgGe':     /* [MS-XLS] 2.5.198.64 */\n\t\t\tcase 'PtgGt':     /* [MS-XLS] 2.5.198.65 */\n\t\t\tcase 'PtgLe':     /* [MS-XLS] 2.5.198.68 */\n\t\t\tcase 'PtgLt':     /* [MS-XLS] 2.5.198.69 */\n\t\t\tcase 'PtgMul':    /* [MS-XLS] 2.5.198.75 */\n\t\t\tcase 'PtgNe':     /* [MS-XLS] 2.5.198.78 */\n\t\t\tcase 'PtgPower':  /* [MS-XLS] 2.5.198.82 */\n\t\t\tcase 'PtgSub':    /* [MS-XLS] 2.5.198.90 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tif(last_sp >= 0) {\n\t\t\t\t\tswitch(formula[0][last_sp][1][0]) {\n\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tsp = fill(\" \", formula[0][last_sp][1][1]); break;\n\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tsp = fill(\"\\r\", formula[0][last_sp][1][1]); break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tsp = \"\";\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + formula[0][last_sp][1][0]);\n\t\t\t\t\t}\n\t\t\t\t\te2 = e2 + sp;\n\t\t\t\t\tlast_sp = -1;\n\t\t\t\t}\n\t\t\t\tstack.push(e2+PtgBinOp[f[0]]+e1);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgIsect': /* [MS-XLS] 2.5.198.67 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\" \"+e1);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgUnion': /* [MS-XLS] 2.5.198.94 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\",\"+e1);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRange': /* [MS-XLS] 2.5.198.83 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\":\"+e1);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrChoose': /* [MS-XLS] 2.5.198.34 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrGoto': /* [MS-XLS] 2.5.198.35 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrIf': /* [MS-XLS] 2.5.198.36 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrIfError': /* [MS-XLSB] 2.5.97.28 */\n\t\t\t\tbreak;\n\n\n\t\t\tcase 'PtgRef': /* [MS-XLS] 2.5.198.84 */\n\t\t\t\t/*::type = f[1][0]; */c = shift_cell_xls((f[1][1]/*:any*/), _range, opts);\n\t\t\t\tstack.push(encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRefN': /* [MS-XLS] 2.5.198.88 */\n\t\t\t\t/*::type = f[1][0]; */c = cell ? shift_cell_xls((f[1][1]/*:any*/), cell, opts) : (f[1][1]/*:any*/);\n\t\t\t\tstack.push(encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRef3d': /* [MS-XLS] 2.5.198.85 */\n\t\t\t\t/*::type = f[1][0]; */ixti = /*::Number(*/f[1][1]/*::)*/; c = shift_cell_xls((f[1][2]/*:any*/), _range, opts);\n\t\t\t\tsname = get_ixti(supbooks, ixti, opts);\n\t\t\t\tvar w = sname; /* IE9 fails on defined names */ // eslint-disable-line no-unused-vars\n\t\t\t\tstack.push(sname + \"!\" + encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgFunc': /* [MS-XLS] 2.5.198.62 */\n\t\t\tcase 'PtgFuncVar': /* [MS-XLS] 2.5.198.63 */\n\t\t\t\t/* f[1] = [argc, func, type] */\n\t\t\t\tvar argc/*:number*/ = (f[1][0]/*:any*/), func/*:string*/ = (f[1][1]/*:any*/);\n\t\t\t\tif(!argc) argc = 0;\n\t\t\t\targc &= 0x7F;\n\t\t\t\tvar args = argc == 0 ? [] : stack.slice(-argc);\n\t\t\t\tstack.length -= argc;\n\t\t\t\tif(func === 'User') func = args.shift();\n\t\t\t\tstack.push(func + \"(\" + args.join(\",\") + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgBool': /* [MS-XLS] 2.5.198.42 */\n\t\t\t\tstack.push(f[1] ? \"TRUE\" : \"FALSE\"); break;\n\t\t\tcase 'PtgInt': /* [MS-XLS] 2.5.198.66 */\n\t\t\t\tstack.push(/*::String(*/f[1]/*::)*/); break;\n\t\t\tcase 'PtgNum': /* [MS-XLS] 2.5.198.79 TODO: precision? */\n\t\t\t\tstack.push(String(f[1])); break;\n\t\t\tcase 'PtgStr': /* [MS-XLS] 2.5.198.89 */\n\t\t\t\t// $FlowIgnore\n\t\t\t\tstack.push('\"' + f[1].replace(/\"/g, '\"\"') + '\"'); break;\n\t\t\tcase 'PtgErr': /* [MS-XLS] 2.5.198.57 */\n\t\t\t\tstack.push(/*::String(*/f[1]/*::)*/); break;\n\t\t\tcase 'PtgAreaN': /* [MS-XLS] 2.5.198.31 TODO */\n\t\t\t\t/*::type = f[1][0]; */r = shift_range_xls(f[1][1], cell ? {s:cell} : _range, opts);\n\t\t\t\tstack.push(encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgArea': /* [MS-XLS] 2.5.198.27 TODO: fixed points */\n\t\t\t\t/*::type = f[1][0]; */r = shift_range_xls(f[1][1], _range, opts);\n\t\t\t\tstack.push(encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgArea3d': /* [MS-XLS] 2.5.198.28 TODO */\n\t\t\t\t/*::type = f[1][0]; */ixti = /*::Number(*/f[1][1]/*::)*/; r = f[1][2];\n\t\t\t\tsname = get_ixti(supbooks, ixti, opts);\n\t\t\t\tstack.push(sname + \"!\" + encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrSum': /* [MS-XLS] 2.5.198.41 */\n\t\t\t\tstack.push(\"SUM(\" + stack.pop() + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrBaxcel': /* [MS-XLS] 2.5.198.33 */\n\t\t\tcase 'PtgAttrSemi': /* [MS-XLS] 2.5.198.37 */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgName': /* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 TODO: revisions */\n\t\t\t\t/* f[1] = type, 0, nameindex */\n\t\t\t\tnameidx = (f[1][2]/*:any*/);\n\t\t\t\tvar lbl = (supbooks.names||[])[nameidx-1] || (supbooks[0]||[])[nameidx];\n\t\t\t\tvar name = lbl ? lbl.Name : \"SH33TJSNAME\" + String(nameidx);\n\t\t\t\t/* [MS-XLSB] 2.5.97.10 Ftab -- last verified 20220204 */\n\t\t\t\tif(name && name.slice(0,6) == \"_xlfn.\" && !opts.xlfn) name = name.slice(6);\n\t\t\t\tstack.push(name);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgNameX': /* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 TODO: revisions */\n\t\t\t\t/* f[1] = type, ixti, nameindex */\n\t\t\t\tvar bookidx/*:number*/ = (f[1][1]/*:any*/); nameidx = (f[1][2]/*:any*/); var externbook;\n\t\t\t\t/* TODO: Properly handle missing values -- this should be using get_ixti_raw primarily */\n\t\t\t\tif(opts.biff <= 5) {\n\t\t\t\t\tif(bookidx < 0) bookidx = -bookidx;\n\t\t\t\t\tif(supbooks[bookidx]) externbook = supbooks[bookidx][nameidx];\n\t\t\t\t} else {\n\t\t\t\t\tvar o = \"\";\n\t\t\t\t\tif(((supbooks[bookidx]||[])[0]||[])[0] == 0x3A01){/* empty */}\n\t\t\t\t\telse if(((supbooks[bookidx]||[])[0]||[])[0] == 0x0401){\n\t\t\t\t\t\tif(supbooks[bookidx][nameidx] && supbooks[bookidx][nameidx].itab > 0) {\n\t\t\t\t\t\t\to = supbooks.SheetNames[supbooks[bookidx][nameidx].itab-1] + \"!\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse o = supbooks.SheetNames[nameidx-1]+ \"!\";\n\t\t\t\t\tif(supbooks[bookidx] && supbooks[bookidx][nameidx]) o += supbooks[bookidx][nameidx].Name;\n\t\t\t\t\telse if(supbooks[0] && supbooks[0][nameidx]) o += supbooks[0][nameidx].Name;\n\t\t\t\t\telse {\n\t\t\t\t\t\tvar ixtidata = (get_ixti_raw(supbooks, bookidx, opts)||\"\").split(\";;\");\n\t\t\t\t\t\tif(ixtidata[nameidx - 1]) o = ixtidata[nameidx - 1]; // TODO: confirm this is correct\n\t\t\t\t\t\telse o += \"SH33TJSERRX\";\n\t\t\t\t\t}\n\t\t\t\t\tstack.push(o);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(!externbook) externbook = {Name: \"SH33TJSERRY\"};\n\t\t\t\tstack.push(externbook.Name);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgParen': /* [MS-XLS] 2.5.198.80 */\n\t\t\t\tvar lp = '(', rp = ')';\n\t\t\t\tif(last_sp >= 0) {\n\t\t\t\t\tsp = \"\";\n\t\t\t\t\tswitch(formula[0][last_sp][1][0]) {\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 2: lp = fill(\" \", formula[0][last_sp][1][1]) + lp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 3: lp = fill(\"\\r\", formula[0][last_sp][1][1]) + lp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 4: rp = fill(\" \", formula[0][last_sp][1][1]) + rp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 5: rp = fill(\"\\r\", formula[0][last_sp][1][1]) + rp; break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + formula[0][last_sp][1][0]);\n\t\t\t\t\t}\n\t\t\t\t\tlast_sp = -1;\n\t\t\t\t}\n\t\t\t\tstack.push(lp + stack.pop() + rp); break;\n\n\t\t\tcase 'PtgRefErr': /* [MS-XLS] 2.5.198.86 */\n\t\t\t\tstack.push('#REF!'); break;\n\n\t\t\tcase 'PtgRefErr3d': /* [MS-XLS] 2.5.198.87 */\n\t\t\t\tstack.push('#REF!'); break;\n\n\t\t\tcase 'PtgExp': /* [MS-XLS] 2.5.198.58 TODO */\n\t\t\t\tc = {c:(f[1][1]/*:any*/),r:(f[1][0]/*:any*/)};\n\t\t\t\tvar q = ({c: cell.c, r:cell.r}/*:any*/);\n\t\t\t\tif(supbooks.sharedf[encode_cell(c)]) {\n\t\t\t\t\tvar parsedf = (supbooks.sharedf[encode_cell(c)]);\n\t\t\t\t\tstack.push(stringify_formula(parsedf, _range, q, supbooks, opts));\n\t\t\t\t} else {\n\t\t\t\t\tvar fnd = false;\n\t\t\t\t\tfor(e1=0;e1!=supbooks.arrayf.length; ++e1) {\n\t\t\t\t\t\t/* TODO: should be something like range_has */\n\t\t\t\t\t\te2 = supbooks.arrayf[e1];\n\t\t\t\t\t\tif(c.c < e2[0].s.c || c.c > e2[0].e.c) continue;\n\t\t\t\t\t\tif(c.r < e2[0].s.r || c.r > e2[0].e.r) continue;\n\t\t\t\t\t\tstack.push(stringify_formula(e2[1], _range, q, supbooks, opts));\n\t\t\t\t\t\tfnd = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif(!fnd) stack.push(/*::String(*/f[1]/*::)*/);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgArray': /* [MS-XLS] 2.5.198.32 TODO */\n\t\t\t\tstack.push(\"{\" + stringify_array(/*::(*/f[1]/*:: :any)*/) + \"}\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemArea': /* [MS-XLS] 2.5.198.70 TODO: confirm this is a non-display */\n\t\t\t\t//stack.push(\"(\" + f[2].map(encode_range).join(\",\") + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrSpace': /* [MS-XLS] 2.5.198.38 */\n\t\t\tcase 'PtgAttrSpaceSemi': /* [MS-XLS] 2.5.198.39 */\n\t\t\t\tlast_sp = ff;\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgTbl': /* [MS-XLS] 2.5.198.92 TODO */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemErr': /* [MS-XLS] 2.5.198.71 */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMissArg': /* [MS-XLS] 2.5.198.74 */\n\t\t\t\tstack.push(\"\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAreaErr': /* [MS-XLS] 2.5.198.29 */\n\t\t\t\tstack.push(\"#REF!\"); break;\n\n\t\t\tcase 'PtgAreaErr3d': /* [MS-XLS] 2.5.198.30 */\n\t\t\t\tstack.push(\"#REF!\"); break;\n\n\t\t\tcase 'PtgList': /* [MS-XLSB] 2.5.97.52 */\n\t\t\t\t// $FlowIgnore\n\t\t\t\tstack.push(\"Table\" + f[1].idx + \"[#\" + f[1].rt + \"]\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemAreaN':\n\t\t\tcase 'PtgMemNoMemN':\n\t\t\tcase 'PtgAttrNoop':\n\t\t\tcase 'PtgSheet':\n\t\t\tcase 'PtgEndSheet':\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemFunc': /* [MS-XLS] 2.5.198.72 TODO */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgMemNoMem': /* [MS-XLS] 2.5.198.73 TODO */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgElfCol': /* [MS-XLS] 2.5.198.46 */\n\t\t\tcase 'PtgElfColS': /* [MS-XLS] 2.5.198.47 */\n\t\t\tcase 'PtgElfColSV': /* [MS-XLS] 2.5.198.48 */\n\t\t\tcase 'PtgElfColV': /* [MS-XLS] 2.5.198.49 */\n\t\t\tcase 'PtgElfLel': /* [MS-XLS] 2.5.198.50 */\n\t\t\tcase 'PtgElfRadical': /* [MS-XLS] 2.5.198.51 */\n\t\t\tcase 'PtgElfRadicalLel': /* [MS-XLS] 2.5.198.52 */\n\t\t\tcase 'PtgElfRadicalS': /* [MS-XLS] 2.5.198.53 */\n\t\t\tcase 'PtgElfRw': /* [MS-XLS] 2.5.198.54 */\n\t\t\tcase 'PtgElfRwV': /* [MS-XLS] 2.5.198.55 */\n\t\t\t\tthrow new Error(\"Unsupported ELFs\");\n\n\t\t\tcase 'PtgSxName': /* [MS-XLS] 2.5.198.91 TODO -- find a test case */\n\t\t\t\tthrow new Error('Unrecognized Formula Token: ' + String(f));\n\t\t\tdefault: throw new Error('Unrecognized Formula Token: ' + String(f));\n\t\t}\n\t\tvar PtgNonDisp = ['PtgAttrSpace', 'PtgAttrSpaceSemi', 'PtgAttrGoto'];\n\t\tif(opts.biff != 3) if(last_sp >= 0 && PtgNonDisp.indexOf(formula[0][ff][0]) == -1) {\n\t\t\tf = formula[0][last_sp];\n\t\t\tvar _left = true;\n\t\t\tswitch(f[1][0]) {\n\t\t\t\t/* note: some bad XLSB files omit the PtgParen */\n\t\t\t\tcase 4: _left = false;\n\t\t\t\t/* falls through */\n\t\t\t\tcase 0:\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tsp = fill(\" \", f[1][1]); break;\n\t\t\t\tcase 5: _left = false;\n\t\t\t\t/* falls through */\n\t\t\t\tcase 1:\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tsp = fill(\"\\r\", f[1][1]); break;\n\t\t\t\tdefault:\n\t\t\t\t\tsp = \"\";\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + f[1][0]);\n\t\t\t}\n\t\t\tstack.push((_left ? sp : \"\") + stack.pop() + (_left ? \"\" : sp));\n\t\t\tlast_sp = -1;\n\t\t}\n\t}\n\tif(stack.length > 1 && opts.WTF) throw new Error(\"bad formula stack\");\n\treturn stack[0];\n}\n\n/* [MS-XLS] 2.5.198.1 TODO */\nfunction parse_ArrayParsedFormula(blob, length, opts/*::, ref*/) {\n\tvar target = blob.l + length, len = opts.biff == 2 ? 1 : 2;\n\tvar rgcb, cce = blob.read_shift(len); // length of rgce\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts);\n\tblob.l = target;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.3 TODO */\nfunction parse_XLSCellParsedFormula(blob, length, opts) {\n\tvar target = blob.l + length, len = opts.biff == 2 ? 1 : 2;\n\tvar rgcb, cce = blob.read_shift(len); // length of rgce\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts);\n\tblob.l = target;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.21 */\nfunction parse_NameParsedFormula(blob, length, opts, cce) {\n\tvar target = blob.l + length;\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tvar rgcb;\n\tif(target !== blob.l) rgcb = parse_RgbExtra(blob, target - blob.l, rgce, opts);\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.118 TODO */\nfunction parse_SharedParsedFormula(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar rgcb, cce = blob.read_shift(2); // length of rgce\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tif(length !== cce + 2) rgcb = parse_RgbExtra(blob, target - cce - 2, rgce, opts);\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.133 TODO: how to emit empty strings? */\nfunction parse_FormulaValue(blob/*::, length*/) {\n\tvar b;\n\tif(__readUInt16LE(blob,blob.l + 6) !== 0xFFFF) return [parse_Xnum(blob),'n'];\n\tswitch(blob[blob.l]) {\n\t\tcase 0x00: blob.l += 8; return [\"String\", 's'];\n\t\tcase 0x01: b = blob[blob.l+2] === 0x1; blob.l += 8; return [b,'b'];\n\t\tcase 0x02: b = blob[blob.l+2]; blob.l += 8; return [b,'e'];\n\t\tcase 0x03: blob.l += 8; return [\"\",'s'];\n\t}\n\treturn [];\n}\nfunction write_FormulaValue(value) {\n\tif(value == null) {\n\t\t// Blank String Value\n\t\tvar o = new_buf(8);\n\t\to.write_shift(1, 0x03);\n\t\to.write_shift(1, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0xFFFF);\n\t\treturn o;\n\t} else if(typeof value == \"number\") return write_Xnum(value);\n\treturn write_Xnum(0);\n}\n\n/* [MS-XLS] 2.4.127 TODO */\nfunction parse_Formula(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2) ++blob.l;\n\tvar val = parse_FormulaValue(blob,8);\n\tvar flags = blob.read_shift(1);\n\tif(opts.biff != 2) {\n\t\tblob.read_shift(1);\n\t\tif(opts.biff >= 5) {\n\t\t\t/*var chn = */blob.read_shift(4);\n\t\t}\n\t}\n\tvar cbf = parse_XLSCellParsedFormula(blob, end - blob.l, opts);\n\treturn {cell:cell, val:val[0], formula:cbf, shared: (flags >> 3) & 1, tt:val[1]};\n}\nfunction write_Formula(cell/*:Cell*/, R/*:number*/, C/*:number*/, opts, os/*:number*/) {\n\t// Cell\n\tvar o1 = write_XLSCell(R, C, os);\n\n\t// FormulaValue\n\tvar o2 = write_FormulaValue(cell.v);\n\n\t// flags + cache\n\tvar o3 = new_buf(6);\n\tvar flags = 0x01 | 0x20;\n\to3.write_shift(2, flags);\n\to3.write_shift(4, 0);\n\n\t// CellParsedFormula\n\tvar bf = new_buf(cell.bf.length);\n\tfor(var i = 0; i < cell.bf.length; ++i) bf[i] = cell.bf[i];\n\n\tvar out = bconcat([o1, o2, o3, bf]);\n\treturn out;\n}\n\n\n/* XLSB Parsed Formula records have the same shape */\nfunction parse_XLSBParsedFormula(data, length, opts) {\n\tvar cce = data.read_shift(4);\n\tvar rgce = parse_Rgce(data, cce, opts);\n\tvar cb = data.read_shift(4);\n\tvar rgcb = cb > 0 ? parse_RgbExtra(data, cb, rgce, opts) : null;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLSB] 2.5.97.1 ArrayParsedFormula */\nvar parse_XLSBArrayParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.4 CellParsedFormula */\nvar parse_XLSBCellParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.8 DVParsedFormula */\n//var parse_XLSBDVParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.9 FRTParsedFormula */\n//var parse_XLSBFRTParsedFormula = parse_XLSBParsedFormula2;\n/* [MS-XLSB] 2.5.97.12 NameParsedFormula */\nvar parse_XLSBNameParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.98 SharedParsedFormula */\nvar parse_XLSBSharedParsedFormula = parse_XLSBParsedFormula;\nvar Cetab = {\n  0: \"BEEP\",\n  1: \"OPEN\",\n  2: \"OPEN.LINKS\",\n  3: \"CLOSE.ALL\",\n  4: \"SAVE\",\n  5: \"SAVE.AS\",\n  6: \"FILE.DELETE\",\n  7: \"PAGE.SETUP\",\n  8: \"PRINT\",\n  9: \"PRINTER.SETUP\",\n  10: \"QUIT\",\n  11: \"NEW.WINDOW\",\n  12: \"ARRANGE.ALL\",\n  13: \"WINDOW.SIZE\",\n  14: \"WINDOW.MOVE\",\n  15: \"FULL\",\n  16: \"CLOSE\",\n  17: \"RUN\",\n  22: \"SET.PRINT.AREA\",\n  23: \"SET.PRINT.TITLES\",\n  24: \"SET.PAGE.BREAK\",\n  25: \"REMOVE.PAGE.BREAK\",\n  26: \"FONT\",\n  27: \"DISPLAY\",\n  28: \"PROTECT.DOCUMENT\",\n  29: \"PRECISION\",\n  30: \"A1.R1C1\",\n  31: \"CALCULATE.NOW\",\n  32: \"CALCULATION\",\n  34: \"DATA.FIND\",\n  35: \"EXTRACT\",\n  36: \"DATA.DELETE\",\n  37: \"SET.DATABASE\",\n  38: \"SET.CRITERIA\",\n  39: \"SORT\",\n  40: \"DATA.SERIES\",\n  41: \"TABLE\",\n  42: \"FORMAT.NUMBER\",\n  43: \"ALIGNMENT\",\n  44: \"STYLE\",\n  45: \"BORDER\",\n  46: \"CELL.PROTECTION\",\n  47: \"COLUMN.WIDTH\",\n  48: \"UNDO\",\n  49: \"CUT\",\n  50: \"COPY\",\n  51: \"PASTE\",\n  52: \"CLEAR\",\n  53: \"PASTE.SPECIAL\",\n  54: \"EDIT.DELETE\",\n  55: \"INSERT\",\n  56: \"FILL.RIGHT\",\n  57: \"FILL.DOWN\",\n  61: \"DEFINE.NAME\",\n  62: \"CREATE.NAMES\",\n  63: \"FORMULA.GOTO\",\n  64: \"FORMULA.FIND\",\n  65: \"SELECT.LAST.CELL\",\n  66: \"SHOW.ACTIVE.CELL\",\n  67: \"GALLERY.AREA\",\n  68: \"GALLERY.BAR\",\n  69: \"GALLERY.COLUMN\",\n  70: \"GALLERY.LINE\",\n  71: \"GALLERY.PIE\",\n  72: \"GALLERY.SCATTER\",\n  73: \"COMBINATION\",\n  74: \"PREFERRED\",\n  75: \"ADD.OVERLAY\",\n  76: \"GRIDLINES\",\n  77: \"SET.PREFERRED\",\n  78: \"AXES\",\n  79: \"LEGEND\",\n  80: \"ATTACH.TEXT\",\n  81: \"ADD.ARROW\",\n  82: \"SELECT.CHART\",\n  83: \"SELECT.PLOT.AREA\",\n  84: \"PATTERNS\",\n  85: \"MAIN.CHART\",\n  86: \"OVERLAY\",\n  87: \"SCALE\",\n  88: \"FORMAT.LEGEND\",\n  89: \"FORMAT.TEXT\",\n  90: \"EDIT.REPEAT\",\n  91: \"PARSE\",\n  92: \"JUSTIFY\",\n  93: \"HIDE\",\n  94: \"UNHIDE\",\n  95: \"WORKSPACE\",\n  96: \"FORMULA\",\n  97: \"FORMULA.FILL\",\n  98: \"FORMULA.ARRAY\",\n  99: \"DATA.FIND.NEXT\",\n  100: \"DATA.FIND.PREV\",\n  101: \"FORMULA.FIND.NEXT\",\n  102: \"FORMULA.FIND.PREV\",\n  103: \"ACTIVATE\",\n  104: \"ACTIVATE.NEXT\",\n  105: \"ACTIVATE.PREV\",\n  106: \"UNLOCKED.NEXT\",\n  107: \"UNLOCKED.PREV\",\n  108: \"COPY.PICTURE\",\n  109: \"SELECT\",\n  110: \"DELETE.NAME\",\n  111: \"DELETE.FORMAT\",\n  112: \"VLINE\",\n  113: \"HLINE\",\n  114: \"VPAGE\",\n  115: \"HPAGE\",\n  116: \"VSCROLL\",\n  117: \"HSCROLL\",\n  118: \"ALERT\",\n  119: \"NEW\",\n  120: \"CANCEL.COPY\",\n  121: \"SHOW.CLIPBOARD\",\n  122: \"MESSAGE\",\n  124: \"PASTE.LINK\",\n  125: \"APP.ACTIVATE\",\n  126: \"DELETE.ARROW\",\n  127: \"ROW.HEIGHT\",\n  128: \"FORMAT.MOVE\",\n  129: \"FORMAT.SIZE\",\n  130: \"FORMULA.REPLACE\",\n  131: \"SEND.KEYS\",\n  132: \"SELECT.SPECIAL\",\n  133: \"APPLY.NAMES\",\n  134: \"REPLACE.FONT\",\n  135: \"FREEZE.PANES\",\n  136: \"SHOW.INFO\",\n  137: \"SPLIT\",\n  138: \"ON.WINDOW\",\n  139: \"ON.DATA\",\n  140: \"DISABLE.INPUT\",\n  142: \"OUTLINE\",\n  143: \"LIST.NAMES\",\n  144: \"FILE.CLOSE\",\n  145: \"SAVE.WORKBOOK\",\n  146: \"DATA.FORM\",\n  147: \"COPY.CHART\",\n  148: \"ON.TIME\",\n  149: \"WAIT\",\n  150: \"FORMAT.FONT\",\n  151: \"FILL.UP\",\n  152: \"FILL.LEFT\",\n  153: \"DELETE.OVERLAY\",\n  155: \"SHORT.MENUS\",\n  159: \"SET.UPDATE.STATUS\",\n  161: \"COLOR.PALETTE\",\n  162: \"DELETE.STYLE\",\n  163: \"WINDOW.RESTORE\",\n  164: \"WINDOW.MAXIMIZE\",\n  166: \"CHANGE.LINK\",\n  167: \"CALCULATE.DOCUMENT\",\n  168: \"ON.KEY\",\n  169: \"APP.RESTORE\",\n  170: \"APP.MOVE\",\n  171: \"APP.SIZE\",\n  172: \"APP.MINIMIZE\",\n  173: \"APP.MAXIMIZE\",\n  174: \"BRING.TO.FRONT\",\n  175: \"SEND.TO.BACK\",\n  185: \"MAIN.CHART.TYPE\",\n  186: \"OVERLAY.CHART.TYPE\",\n  187: \"SELECT.END\",\n  188: \"OPEN.MAIL\",\n  189: \"SEND.MAIL\",\n  190: \"STANDARD.FONT\",\n  191: \"CONSOLIDATE\",\n  192: \"SORT.SPECIAL\",\n  193: \"GALLERY.3D.AREA\",\n  194: \"GALLERY.3D.COLUMN\",\n  195: \"GALLERY.3D.LINE\",\n  196: \"GALLERY.3D.PIE\",\n  197: \"VIEW.3D\",\n  198: \"GOAL.SEEK\",\n  199: \"WORKGROUP\",\n  200: \"FILL.GROUP\",\n  201: \"UPDATE.LINK\",\n  202: \"PROMOTE\",\n  203: \"DEMOTE\",\n  204: \"SHOW.DETAIL\",\n  206: \"UNGROUP\",\n  207: \"OBJECT.PROPERTIES\",\n  208: \"SAVE.NEW.OBJECT\",\n  209: \"SHARE\",\n  210: \"SHARE.NAME\",\n  211: \"DUPLICATE\",\n  212: \"APPLY.STYLE\",\n  213: \"ASSIGN.TO.OBJECT\",\n  214: \"OBJECT.PROTECTION\",\n  215: \"HIDE.OBJECT\",\n  216: \"SET.EXTRACT\",\n  217: \"CREATE.PUBLISHER\",\n  218: \"SUBSCRIBE.TO\",\n  219: \"ATTRIBUTES\",\n  220: \"SHOW.TOOLBAR\",\n  222: \"PRINT.PREVIEW\",\n  223: \"EDIT.COLOR\",\n  224: \"SHOW.LEVELS\",\n  225: \"FORMAT.MAIN\",\n  226: \"FORMAT.OVERLAY\",\n  227: \"ON.RECALC\",\n  228: \"EDIT.SERIES\",\n  229: \"DEFINE.STYLE\",\n  240: \"LINE.PRINT\",\n  243: \"ENTER.DATA\",\n  249: \"GALLERY.RADAR\",\n  250: \"MERGE.STYLES\",\n  251: \"EDITION.OPTIONS\",\n  252: \"PASTE.PICTURE\",\n  253: \"PASTE.PICTURE.LINK\",\n  254: \"SPELLING\",\n  256: \"ZOOM\",\n  259: \"INSERT.OBJECT\",\n  260: \"WINDOW.MINIMIZE\",\n  265: \"SOUND.NOTE\",\n  266: \"SOUND.PLAY\",\n  267: \"FORMAT.SHAPE\",\n  268: \"EXTEND.POLYGON\",\n  269: \"FORMAT.AUTO\",\n  272: \"GALLERY.3D.BAR\",\n  273: \"GALLERY.3D.SURFACE\",\n  274: \"FILL.AUTO\",\n  276: \"CUSTOMIZE.TOOLBAR\",\n  277: \"ADD.TOOL\",\n  278: \"EDIT.OBJECT\",\n  279: \"ON.DOUBLECLICK\",\n  280: \"ON.ENTRY\",\n  281: \"WORKBOOK.ADD\",\n  282: \"WORKBOOK.MOVE\",\n  283: \"WORKBOOK.COPY\",\n  284: \"WORKBOOK.OPTIONS\",\n  285: \"SAVE.WORKSPACE\",\n  288: \"CHART.WIZARD\",\n  289: \"DELETE.TOOL\",\n  290: \"MOVE.TOOL\",\n  291: \"WORKBOOK.SELECT\",\n  292: \"WORKBOOK.ACTIVATE\",\n  293: \"ASSIGN.TO.TOOL\",\n  295: \"COPY.TOOL\",\n  296: \"RESET.TOOL\",\n  297: \"CONSTRAIN.NUMERIC\",\n  298: \"PASTE.TOOL\",\n  302: \"WORKBOOK.NEW\",\n  305: \"SCENARIO.CELLS\",\n  306: \"SCENARIO.DELETE\",\n  307: \"SCENARIO.ADD\",\n  308: \"SCENARIO.EDIT\",\n  309: \"SCENARIO.SHOW\",\n  310: \"SCENARIO.SHOW.NEXT\",\n  311: \"SCENARIO.SUMMARY\",\n  312: \"PIVOT.TABLE.WIZARD\",\n  313: \"PIVOT.FIELD.PROPERTIES\",\n  314: \"PIVOT.FIELD\",\n  315: \"PIVOT.ITEM\",\n  316: \"PIVOT.ADD.FIELDS\",\n  318: \"OPTIONS.CALCULATION\",\n  319: \"OPTIONS.EDIT\",\n  320: \"OPTIONS.VIEW\",\n  321: \"ADDIN.MANAGER\",\n  322: \"MENU.EDITOR\",\n  323: \"ATTACH.TOOLBARS\",\n  324: \"VBAActivate\",\n  325: \"OPTIONS.CHART\",\n  328: \"VBA.INSERT.FILE\",\n  330: \"VBA.PROCEDURE.DEFINITION\",\n  336: \"ROUTING.SLIP\",\n  338: \"ROUTE.DOCUMENT\",\n  339: \"MAIL.LOGON\",\n  342: \"INSERT.PICTURE\",\n  343: \"EDIT.TOOL\",\n  344: \"GALLERY.DOUGHNUT\",\n  350: \"CHART.TREND\",\n  352: \"PIVOT.ITEM.PROPERTIES\",\n  354: \"WORKBOOK.INSERT\",\n  355: \"OPTIONS.TRANSITION\",\n  356: \"OPTIONS.GENERAL\",\n  370: \"FILTER.ADVANCED\",\n  373: \"MAIL.ADD.MAILER\",\n  374: \"MAIL.DELETE.MAILER\",\n  375: \"MAIL.REPLY\",\n  376: \"MAIL.REPLY.ALL\",\n  377: \"MAIL.FORWARD\",\n  378: \"MAIL.NEXT.LETTER\",\n  379: \"DATA.LABEL\",\n  380: \"INSERT.TITLE\",\n  381: \"FONT.PROPERTIES\",\n  382: \"MACRO.OPTIONS\",\n  383: \"WORKBOOK.HIDE\",\n  384: \"WORKBOOK.UNHIDE\",\n  385: \"WORKBOOK.DELETE\",\n  386: \"WORKBOOK.NAME\",\n  388: \"GALLERY.CUSTOM\",\n  390: \"ADD.CHART.AUTOFORMAT\",\n  391: \"DELETE.CHART.AUTOFORMAT\",\n  392: \"CHART.ADD.DATA\",\n  393: \"AUTO.OUTLINE\",\n  394: \"TAB.ORDER\",\n  395: \"SHOW.DIALOG\",\n  396: \"SELECT.ALL\",\n  397: \"UNGROUP.SHEETS\",\n  398: \"SUBTOTAL.CREATE\",\n  399: \"SUBTOTAL.REMOVE\",\n  400: \"RENAME.OBJECT\",\n  412: \"WORKBOOK.SCROLL\",\n  413: \"WORKBOOK.NEXT\",\n  414: \"WORKBOOK.PREV\",\n  415: \"WORKBOOK.TAB.SPLIT\",\n  416: \"FULL.SCREEN\",\n  417: \"WORKBOOK.PROTECT\",\n  420: \"SCROLLBAR.PROPERTIES\",\n  421: \"PIVOT.SHOW.PAGES\",\n  422: \"TEXT.TO.COLUMNS\",\n  423: \"FORMAT.CHARTTYPE\",\n  424: \"LINK.FORMAT\",\n  425: \"TRACER.DISPLAY\",\n  430: \"TRACER.NAVIGATE\",\n  431: \"TRACER.CLEAR\",\n  432: \"TRACER.ERROR\",\n  433: \"PIVOT.FIELD.GROUP\",\n  434: \"PIVOT.FIELD.UNGROUP\",\n  435: \"CHECKBOX.PROPERTIES\",\n  436: \"LABEL.PROPERTIES\",\n  437: \"LISTBOX.PROPERTIES\",\n  438: \"EDITBOX.PROPERTIES\",\n  439: \"PIVOT.REFRESH\",\n  440: \"LINK.COMBO\",\n  441: \"OPEN.TEXT\",\n  442: \"HIDE.DIALOG\",\n  443: \"SET.DIALOG.FOCUS\",\n  444: \"ENABLE.OBJECT\",\n  445: \"PUSHBUTTON.PROPERTIES\",\n  446: \"SET.DIALOG.DEFAULT\",\n  447: \"FILTER\",\n  448: \"FILTER.SHOW.ALL\",\n  449: \"CLEAR.OUTLINE\",\n  450: \"FUNCTION.WIZARD\",\n  451: \"ADD.LIST.ITEM\",\n  452: \"SET.LIST.ITEM\",\n  453: \"REMOVE.LIST.ITEM\",\n  454: \"SELECT.LIST.ITEM\",\n  455: \"SET.CONTROL.VALUE\",\n  456: \"SAVE.COPY.AS\",\n  458: \"OPTIONS.LISTS.ADD\",\n  459: \"OPTIONS.LISTS.DELETE\",\n  460: \"SERIES.AXES\",\n  461: \"SERIES.X\",\n  462: \"SERIES.Y\",\n  463: \"ERRORBAR.X\",\n  464: \"ERRORBAR.Y\",\n  465: \"FORMAT.CHART\",\n  466: \"SERIES.ORDER\",\n  467: \"MAIL.LOGOFF\",\n  468: \"CLEAR.ROUTING.SLIP\",\n  469: \"APP.ACTIVATE.MICROSOFT\",\n  470: \"MAIL.EDIT.MAILER\",\n  471: \"ON.SHEET\",\n  472: \"STANDARD.WIDTH\",\n  473: \"SCENARIO.MERGE\",\n  474: \"SUMMARY.INFO\",\n  475: \"FIND.FILE\",\n  476: \"ACTIVE.CELL.FONT\",\n  477: \"ENABLE.TIPWIZARD\",\n  478: \"VBA.MAKE.ADDIN\",\n  480: \"INSERTDATATABLE\",\n  481: \"WORKGROUP.OPTIONS\",\n  482: \"MAIL.SEND.MAILER\",\n  485: \"AUTOCORRECT\",\n  489: \"POST.DOCUMENT\",\n  491: \"PICKLIST\",\n  493: \"VIEW.SHOW\",\n  494: \"VIEW.DEFINE\",\n  495: \"VIEW.DELETE\",\n  509: \"SHEET.BACKGROUND\",\n  510: \"INSERT.MAP.OBJECT\",\n  511: \"OPTIONS.MENONO\",\n  517: \"MSOCHECKS\",\n  518: \"NORMAL\",\n  519: \"LAYOUT\",\n  520: \"RM.PRINT.AREA\",\n  521: \"CLEAR.PRINT.AREA\",\n  522: \"ADD.PRINT.AREA\",\n  523: \"MOVE.BRK\",\n  545: \"HIDECURR.NOTE\",\n  546: \"HIDEALL.NOTES\",\n  547: \"DELETE.NOTE\",\n  548: \"TRAVERSE.NOTES\",\n  549: \"ACTIVATE.NOTES\",\n  620: \"PROTECT.REVISIONS\",\n  621: \"UNPROTECT.REVISIONS\",\n  647: \"OPTIONS.ME\",\n  653: \"WEB.PUBLISH\",\n  667: \"NEWWEBQUERY\",\n  673: \"PIVOT.TABLE.CHART\",\n  753: \"OPTIONS.SAVE\",\n  755: \"OPTIONS.SPELL\",\n  808: \"HIDEALL.INKANNOTS\"\n};\nvar Ftab = {\n  0: \"COUNT\",\n  1: \"IF\",\n  2: \"ISNA\",\n  3: \"ISERROR\",\n  4: \"SUM\",\n  5: \"AVERAGE\",\n  6: \"MIN\",\n  7: \"MAX\",\n  8: \"ROW\",\n  9: \"COLUMN\",\n  10: \"NA\",\n  11: \"NPV\",\n  12: \"STDEV\",\n  13: \"DOLLAR\",\n  14: \"FIXED\",\n  15: \"SIN\",\n  16: \"COS\",\n  17: \"TAN\",\n  18: \"ATAN\",\n  19: \"PI\",\n  20: \"SQRT\",\n  21: \"EXP\",\n  22: \"LN\",\n  23: \"LOG10\",\n  24: \"ABS\",\n  25: \"INT\",\n  26: \"SIGN\",\n  27: \"ROUND\",\n  28: \"LOOKUP\",\n  29: \"INDEX\",\n  30: \"REPT\",\n  31: \"MID\",\n  32: \"LEN\",\n  33: \"VALUE\",\n  34: \"TRUE\",\n  35: \"FALSE\",\n  36: \"AND\",\n  37: \"OR\",\n  38: \"NOT\",\n  39: \"MOD\",\n  40: \"DCOUNT\",\n  41: \"DSUM\",\n  42: \"DAVERAGE\",\n  43: \"DMIN\",\n  44: \"DMAX\",\n  45: \"DSTDEV\",\n  46: \"VAR\",\n  47: \"DVAR\",\n  48: \"TEXT\",\n  49: \"LINEST\",\n  50: \"TREND\",\n  51: \"LOGEST\",\n  52: \"GROWTH\",\n  53: \"GOTO\",\n  54: \"HALT\",\n  55: \"RETURN\",\n  56: \"PV\",\n  57: \"FV\",\n  58: \"NPER\",\n  59: \"PMT\",\n  60: \"RATE\",\n  61: \"MIRR\",\n  62: \"IRR\",\n  63: \"RAND\",\n  64: \"MATCH\",\n  65: \"DATE\",\n  66: \"TIME\",\n  67: \"DAY\",\n  68: \"MONTH\",\n  69: \"YEAR\",\n  70: \"WEEKDAY\",\n  71: \"HOUR\",\n  72: \"MINUTE\",\n  73: \"SECOND\",\n  74: \"NOW\",\n  75: \"AREAS\",\n  76: \"ROWS\",\n  77: \"COLUMNS\",\n  78: \"OFFSET\",\n  79: \"ABSREF\",\n  80: \"RELREF\",\n  81: \"ARGUMENT\",\n  82: \"SEARCH\",\n  83: \"TRANSPOSE\",\n  84: \"ERROR\",\n  85: \"STEP\",\n  86: \"TYPE\",\n  87: \"ECHO\",\n  88: \"SET.NAME\",\n  89: \"CALLER\",\n  90: \"DEREF\",\n  91: \"WINDOWS\",\n  92: \"SERIES\",\n  93: \"DOCUMENTS\",\n  94: \"ACTIVE.CELL\",\n  95: \"SELECTION\",\n  96: \"RESULT\",\n  97: \"ATAN2\",\n  98: \"ASIN\",\n  99: \"ACOS\",\n  100: \"CHOOSE\",\n  101: \"HLOOKUP\",\n  102: \"VLOOKUP\",\n  103: \"LINKS\",\n  104: \"INPUT\",\n  105: \"ISREF\",\n  106: \"GET.FORMULA\",\n  107: \"GET.NAME\",\n  108: \"SET.VALUE\",\n  109: \"LOG\",\n  110: \"EXEC\",\n  111: \"CHAR\",\n  112: \"LOWER\",\n  113: \"UPPER\",\n  114: \"PROPER\",\n  115: \"LEFT\",\n  116: \"RIGHT\",\n  117: \"EXACT\",\n  118: \"TRIM\",\n  119: \"REPLACE\",\n  120: \"SUBSTITUTE\",\n  121: \"CODE\",\n  122: \"NAMES\",\n  123: \"DIRECTORY\",\n  124: \"FIND\",\n  125: \"CELL\",\n  126: \"ISERR\",\n  127: \"ISTEXT\",\n  128: \"ISNUMBER\",\n  129: \"ISBLANK\",\n  130: \"T\",\n  131: \"N\",\n  132: \"FOPEN\",\n  133: \"FCLOSE\",\n  134: \"FSIZE\",\n  135: \"FREADLN\",\n  136: \"FREAD\",\n  137: \"FWRITELN\",\n  138: \"FWRITE\",\n  139: \"FPOS\",\n  140: \"DATEVALUE\",\n  141: \"TIMEVALUE\",\n  142: \"SLN\",\n  143: \"SYD\",\n  144: \"DDB\",\n  145: \"GET.DEF\",\n  146: \"REFTEXT\",\n  147: \"TEXTREF\",\n  148: \"INDIRECT\",\n  149: \"REGISTER\",\n  150: \"CALL\",\n  151: \"ADD.BAR\",\n  152: \"ADD.MENU\",\n  153: \"ADD.COMMAND\",\n  154: \"ENABLE.COMMAND\",\n  155: \"CHECK.COMMAND\",\n  156: \"RENAME.COMMAND\",\n  157: \"SHOW.BAR\",\n  158: \"DELETE.MENU\",\n  159: \"DELETE.COMMAND\",\n  160: \"GET.CHART.ITEM\",\n  161: \"DIALOG.BOX\",\n  162: \"CLEAN\",\n  163: \"MDETERM\",\n  164: \"MINVERSE\",\n  165: \"MMULT\",\n  166: \"FILES\",\n  167: \"IPMT\",\n  168: \"PPMT\",\n  169: \"COUNTA\",\n  170: \"CANCEL.KEY\",\n  171: \"FOR\",\n  172: \"WHILE\",\n  173: \"BREAK\",\n  174: \"NEXT\",\n  175: \"INITIATE\",\n  176: \"REQUEST\",\n  177: \"POKE\",\n  178: \"EXECUTE\",\n  179: \"TERMINATE\",\n  180: \"RESTART\",\n  181: \"HELP\",\n  182: \"GET.BAR\",\n  183: \"PRODUCT\",\n  184: \"FACT\",\n  185: \"GET.CELL\",\n  186: \"GET.WORKSPACE\",\n  187: \"GET.WINDOW\",\n  188: \"GET.DOCUMENT\",\n  189: \"DPRODUCT\",\n  190: \"ISNONTEXT\",\n  191: \"GET.NOTE\",\n  192: \"NOTE\",\n  193: \"STDEVP\",\n  194: \"VARP\",\n  195: \"DSTDEVP\",\n  196: \"DVARP\",\n  197: \"TRUNC\",\n  198: \"ISLOGICAL\",\n  199: \"DCOUNTA\",\n  200: \"DELETE.BAR\",\n  201: \"UNREGISTER\",\n  204: \"USDOLLAR\",\n  205: \"FINDB\",\n  206: \"SEARCHB\",\n  207: \"REPLACEB\",\n  208: \"LEFTB\",\n  209: \"RIGHTB\",\n  210: \"MIDB\",\n  211: \"LENB\",\n  212: \"ROUNDUP\",\n  213: \"ROUNDDOWN\",\n  214: \"ASC\",\n  215: \"DBCS\",\n  216: \"RANK\",\n  219: \"ADDRESS\",\n  220: \"DAYS360\",\n  221: \"TODAY\",\n  222: \"VDB\",\n  223: \"ELSE\",\n  224: \"ELSE.IF\",\n  225: \"END.IF\",\n  226: \"FOR.CELL\",\n  227: \"MEDIAN\",\n  228: \"SUMPRODUCT\",\n  229: \"SINH\",\n  230: \"COSH\",\n  231: \"TANH\",\n  232: \"ASINH\",\n  233: \"ACOSH\",\n  234: \"ATANH\",\n  235: \"DGET\",\n  236: \"CREATE.OBJECT\",\n  237: \"VOLATILE\",\n  238: \"LAST.ERROR\",\n  239: \"CUSTOM.UNDO\",\n  240: \"CUSTOM.REPEAT\",\n  241: \"FORMULA.CONVERT\",\n  242: \"GET.LINK.INFO\",\n  243: \"TEXT.BOX\",\n  244: \"INFO\",\n  245: \"GROUP\",\n  246: \"GET.OBJECT\",\n  247: \"DB\",\n  248: \"PAUSE\",\n  251: \"RESUME\",\n  252: \"FREQUENCY\",\n  253: \"ADD.TOOLBAR\",\n  254: \"DELETE.TOOLBAR\",\n  255: \"User\",\n  256: \"RESET.TOOLBAR\",\n  257: \"EVALUATE\",\n  258: \"GET.TOOLBAR\",\n  259: \"GET.TOOL\",\n  260: \"SPELLING.CHECK\",\n  261: \"ERROR.TYPE\",\n  262: \"APP.TITLE\",\n  263: \"WINDOW.TITLE\",\n  264: \"SAVE.TOOLBAR\",\n  265: \"ENABLE.TOOL\",\n  266: \"PRESS.TOOL\",\n  267: \"REGISTER.ID\",\n  268: \"GET.WORKBOOK\",\n  269: \"AVEDEV\",\n  270: \"BETADIST\",\n  271: \"GAMMALN\",\n  272: \"BETAINV\",\n  273: \"BINOMDIST\",\n  274: \"CHIDIST\",\n  275: \"CHIINV\",\n  276: \"COMBIN\",\n  277: \"CONFIDENCE\",\n  278: \"CRITBINOM\",\n  279: \"EVEN\",\n  280: \"EXPONDIST\",\n  281: \"FDIST\",\n  282: \"FINV\",\n  283: \"FISHER\",\n  284: \"FISHERINV\",\n  285: \"FLOOR\",\n  286: \"GAMMADIST\",\n  287: \"GAMMAINV\",\n  288: \"CEILING\",\n  289: \"HYPGEOMDIST\",\n  290: \"LOGNORMDIST\",\n  291: \"LOGINV\",\n  292: \"NEGBINOMDIST\",\n  293: \"NORMDIST\",\n  294: \"NORMSDIST\",\n  295: \"NORMINV\",\n  296: \"NORMSINV\",\n  297: \"STANDARDIZE\",\n  298: \"ODD\",\n  299: \"PERMUT\",\n  300: \"POISSON\",\n  301: \"TDIST\",\n  302: \"WEIBULL\",\n  303: \"SUMXMY2\",\n  304: \"SUMX2MY2\",\n  305: \"SUMX2PY2\",\n  306: \"CHITEST\",\n  307: \"CORREL\",\n  308: \"COVAR\",\n  309: \"FORECAST\",\n  310: \"FTEST\",\n  311: \"INTERCEPT\",\n  312: \"PEARSON\",\n  313: \"RSQ\",\n  314: \"STEYX\",\n  315: \"SLOPE\",\n  316: \"TTEST\",\n  317: \"PROB\",\n  318: \"DEVSQ\",\n  319: \"GEOMEAN\",\n  320: \"HARMEAN\",\n  321: \"SUMSQ\",\n  322: \"KURT\",\n  323: \"SKEW\",\n  324: \"ZTEST\",\n  325: \"LARGE\",\n  326: \"SMALL\",\n  327: \"QUARTILE\",\n  328: \"PERCENTILE\",\n  329: \"PERCENTRANK\",\n  330: \"MODE\",\n  331: \"TRIMMEAN\",\n  332: \"TINV\",\n  334: \"MOVIE.COMMAND\",\n  335: \"GET.MOVIE\",\n  336: \"CONCATENATE\",\n  337: \"POWER\",\n  338: \"PIVOT.ADD.DATA\",\n  339: \"GET.PIVOT.TABLE\",\n  340: \"GET.PIVOT.FIELD\",\n  341: \"GET.PIVOT.ITEM\",\n  342: \"RADIANS\",\n  343: \"DEGREES\",\n  344: \"SUBTOTAL\",\n  345: \"SUMIF\",\n  346: \"COUNTIF\",\n  347: \"COUNTBLANK\",\n  348: \"SCENARIO.GET\",\n  349: \"OPTIONS.LISTS.GET\",\n  350: \"ISPMT\",\n  351: \"DATEDIF\",\n  352: \"DATESTRING\",\n  353: \"NUMBERSTRING\",\n  354: \"ROMAN\",\n  355: \"OPEN.DIALOG\",\n  356: \"SAVE.DIALOG\",\n  357: \"VIEW.GET\",\n  358: \"GETPIVOTDATA\",\n  359: \"HYPERLINK\",\n  360: \"PHONETIC\",\n  361: \"AVERAGEA\",\n  362: \"MAXA\",\n  363: \"MINA\",\n  364: \"STDEVPA\",\n  365: \"VARPA\",\n  366: \"STDEVA\",\n  367: \"VARA\",\n  368: \"BAHTTEXT\",\n  369: \"THAIDAYOFWEEK\",\n  370: \"THAIDIGIT\",\n  371: \"THAIMONTHOFYEAR\",\n  372: \"THAINUMSOUND\",\n  373: \"THAINUMSTRING\",\n  374: \"THAISTRINGLENGTH\",\n  375: \"ISTHAIDIGIT\",\n  376: \"ROUNDBAHTDOWN\",\n  377: \"ROUNDBAHTUP\",\n  378: \"THAIYEAR\",\n  379: \"RTD\",\n  380: \"CUBEVALUE\",\n  381: \"CUBEMEMBER\",\n  382: \"CUBEMEMBERPROPERTY\",\n  383: \"CUBERANKEDMEMBER\",\n  384: \"HEX2BIN\",\n  385: \"HEX2DEC\",\n  386: \"HEX2OCT\",\n  387: \"DEC2BIN\",\n  388: \"DEC2HEX\",\n  389: \"DEC2OCT\",\n  390: \"OCT2BIN\",\n  391: \"OCT2HEX\",\n  392: \"OCT2DEC\",\n  393: \"BIN2DEC\",\n  394: \"BIN2OCT\",\n  395: \"BIN2HEX\",\n  396: \"IMSUB\",\n  397: \"IMDIV\",\n  398: \"IMPOWER\",\n  399: \"IMABS\",\n  400: \"IMSQRT\",\n  401: \"IMLN\",\n  402: \"IMLOG2\",\n  403: \"IMLOG10\",\n  404: \"IMSIN\",\n  405: \"IMCOS\",\n  406: \"IMEXP\",\n  407: \"IMARGUMENT\",\n  408: \"IMCONJUGATE\",\n  409: \"IMAGINARY\",\n  410: \"IMREAL\",\n  411: \"COMPLEX\",\n  412: \"IMSUM\",\n  413: \"IMPRODUCT\",\n  414: \"SERIESSUM\",\n  415: \"FACTDOUBLE\",\n  416: \"SQRTPI\",\n  417: \"QUOTIENT\",\n  418: \"DELTA\",\n  419: \"GESTEP\",\n  420: \"ISEVEN\",\n  421: \"ISODD\",\n  422: \"MROUND\",\n  423: \"ERF\",\n  424: \"ERFC\",\n  425: \"BESSELJ\",\n  426: \"BESSELK\",\n  427: \"BESSELY\",\n  428: \"BESSELI\",\n  429: \"XIRR\",\n  430: \"XNPV\",\n  431: \"PRICEMAT\",\n  432: \"YIELDMAT\",\n  433: \"INTRATE\",\n  434: \"RECEIVED\",\n  435: \"DISC\",\n  436: \"PRICEDISC\",\n  437: \"YIELDDISC\",\n  438: \"TBILLEQ\",\n  439: \"TBILLPRICE\",\n  440: \"TBILLYIELD\",\n  441: \"PRICE\",\n  442: \"YIELD\",\n  443: \"DOLLARDE\",\n  444: \"DOLLARFR\",\n  445: \"NOMINAL\",\n  446: \"EFFECT\",\n  447: \"CUMPRINC\",\n  448: \"CUMIPMT\",\n  449: \"EDATE\",\n  450: \"EOMONTH\",\n  451: \"YEARFRAC\",\n  452: \"COUPDAYBS\",\n  453: \"COUPDAYS\",\n  454: \"COUPDAYSNC\",\n  455: \"COUPNCD\",\n  456: \"COUPNUM\",\n  457: \"COUPPCD\",\n  458: \"DURATION\",\n  459: \"MDURATION\",\n  460: \"ODDLPRICE\",\n  461: \"ODDLYIELD\",\n  462: \"ODDFPRICE\",\n  463: \"ODDFYIELD\",\n  464: \"RANDBETWEEN\",\n  465: \"WEEKNUM\",\n  466: \"AMORDEGRC\",\n  467: \"AMORLINC\",\n  468: \"CONVERT\",\n  724: \"SHEETJS\",\n  469: \"ACCRINT\",\n  470: \"ACCRINTM\",\n  471: \"WORKDAY\",\n  472: \"NETWORKDAYS\",\n  473: \"GCD\",\n  474: \"MULTINOMIAL\",\n  475: \"LCM\",\n  476: \"FVSCHEDULE\",\n  477: \"CUBEKPIMEMBER\",\n  478: \"CUBESET\",\n  479: \"CUBESETCOUNT\",\n  480: \"IFERROR\",\n  481: \"COUNTIFS\",\n  482: \"SUMIFS\",\n  483: \"AVERAGEIF\",\n  484: \"AVERAGEIFS\"\n};\nvar FtabArgc = {\n  2: 1,\n  3: 1,\n  10: 0,\n  15: 1,\n  16: 1,\n  17: 1,\n  18: 1,\n  19: 0,\n  20: 1,\n  21: 1,\n  22: 1,\n  23: 1,\n  24: 1,\n  25: 1,\n  26: 1,\n  27: 2,\n  30: 2,\n  31: 3,\n  32: 1,\n  33: 1,\n  34: 0,\n  35: 0,\n  38: 1,\n  39: 2,\n  40: 3,\n  41: 3,\n  42: 3,\n  43: 3,\n  44: 3,\n  45: 3,\n  47: 3,\n  48: 2,\n  53: 1,\n  61: 3,\n  63: 0,\n  65: 3,\n  66: 3,\n  67: 1,\n  68: 1,\n  69: 1,\n  70: 1,\n  71: 1,\n  72: 1,\n  73: 1,\n  74: 0,\n  75: 1,\n  76: 1,\n  77: 1,\n  79: 2,\n  80: 2,\n  83: 1,\n  85: 0,\n  86: 1,\n  89: 0,\n  90: 1,\n  94: 0,\n  95: 0,\n  97: 2,\n  98: 1,\n  99: 1,\n  101: 3,\n  102: 3,\n  105: 1,\n  106: 1,\n  108: 2,\n  111: 1,\n  112: 1,\n  113: 1,\n  114: 1,\n  117: 2,\n  118: 1,\n  119: 4,\n  121: 1,\n  126: 1,\n  127: 1,\n  128: 1,\n  129: 1,\n  130: 1,\n  131: 1,\n  133: 1,\n  134: 1,\n  135: 1,\n  136: 2,\n  137: 2,\n  138: 2,\n  140: 1,\n  141: 1,\n  142: 3,\n  143: 4,\n  144: 4,\n  161: 1,\n  162: 1,\n  163: 1,\n  164: 1,\n  165: 2,\n  172: 1,\n  175: 2,\n  176: 2,\n  177: 3,\n  178: 2,\n  179: 1,\n  184: 1,\n  186: 1,\n  189: 3,\n  190: 1,\n  195: 3,\n  196: 3,\n  197: 1,\n  198: 1,\n  199: 3,\n  201: 1,\n  207: 4,\n  210: 3,\n  211: 1,\n  212: 2,\n  213: 2,\n  214: 1,\n  215: 1,\n  225: 0,\n  229: 1,\n  230: 1,\n  231: 1,\n  232: 1,\n  233: 1,\n  234: 1,\n  235: 3,\n  244: 1,\n  247: 4,\n  252: 2,\n  257: 1,\n  261: 1,\n  271: 1,\n  273: 4,\n  274: 2,\n  275: 2,\n  276: 2,\n  277: 3,\n  278: 3,\n  279: 1,\n  280: 3,\n  281: 3,\n  282: 3,\n  283: 1,\n  284: 1,\n  285: 2,\n  286: 4,\n  287: 3,\n  288: 2,\n  289: 4,\n  290: 3,\n  291: 3,\n  292: 3,\n  293: 4,\n  294: 1,\n  295: 3,\n  296: 1,\n  297: 3,\n  298: 1,\n  299: 2,\n  300: 3,\n  301: 3,\n  302: 4,\n  303: 2,\n  304: 2,\n  305: 2,\n  306: 2,\n  307: 2,\n  308: 2,\n  309: 3,\n  310: 2,\n  311: 2,\n  312: 2,\n  313: 2,\n  314: 2,\n  315: 2,\n  316: 4,\n  325: 2,\n  326: 2,\n  327: 2,\n  328: 2,\n  331: 2,\n  332: 2,\n  337: 2,\n  342: 1,\n  343: 1,\n  346: 2,\n  347: 1,\n  350: 4,\n  351: 3,\n  352: 1,\n  353: 2,\n  360: 1,\n  368: 1,\n  369: 1,\n  370: 1,\n  371: 1,\n  372: 1,\n  373: 1,\n  374: 1,\n  375: 1,\n  376: 1,\n  377: 1,\n  378: 1,\n  382: 3,\n  385: 1,\n  392: 1,\n  393: 1,\n  396: 2,\n  397: 2,\n  398: 2,\n  399: 1,\n  400: 1,\n  401: 1,\n  402: 1,\n  403: 1,\n  404: 1,\n  405: 1,\n  406: 1,\n  407: 1,\n  408: 1,\n  409: 1,\n  410: 1,\n  414: 4,\n  415: 1,\n  416: 1,\n  417: 2,\n  420: 1,\n  421: 1,\n  422: 2,\n  424: 1,\n  425: 2,\n  426: 2,\n  427: 2,\n  428: 2,\n  430: 3,\n  438: 3,\n  439: 3,\n  440: 3,\n  443: 2,\n  444: 2,\n  445: 2,\n  446: 2,\n  447: 6,\n  448: 6,\n  449: 2,\n  450: 2,\n  464: 2,\n  468: 3,\n  476: 2,\n  479: 1,\n  480: 2,\n  65535: 0\n};\n/* Part 3 TODO: actually parse formulae */\nfunction ods_to_csf_formula(f/*:string*/)/*:string*/ {\n\tif(f.slice(0,3) == \"of:\") f = f.slice(3);\n\t/* 5.2 Basic Expressions */\n\tif(f.charCodeAt(0) == 61) {\n\t\tf = f.slice(1);\n\t\tif(f.charCodeAt(0) == 61) f = f.slice(1);\n\t}\n\tf = f.replace(/COM\\.MICROSOFT\\./g, \"\");\n\t/* Part 3 Section 5.8 References */\n\tf = f.replace(/\\[((?:\\.[A-Z]+[0-9]+)(?::\\.[A-Z]+[0-9]+)?)\\]/g, function($$, $1) { return $1.replace(/\\./g,\"\"); });\n\t/* TODO: something other than this */\n\tf = f.replace(/\\[.(#[A-Z]*[?!])\\]/g, \"$1\");\n\treturn f.replace(/[;~]/g,\",\").replace(/\\|/g,\";\");\n}\n\nfunction csf_to_ods_formula(f/*:string*/)/*:string*/ {\n\tvar o = \"of:=\" + f.replace(crefregex, \"$1[.$2$3$4$5]\").replace(/\\]:\\[/g,\":\");\n\t/* TODO: something other than this */\n\treturn o.replace(/;/g, \"|\").replace(/,/g,\";\");\n}\n\nfunction ods_to_csf_3D(r/*:string*/)/*:[string, string]*/ {\n\tvar a = r.split(\":\");\n\tvar s = a[0].split(\".\")[0];\n\treturn [s, a[0].split(\".\")[1] + (a.length > 1 ? (\":\" + (a[1].split(\".\")[1] || a[1].split(\".\")[0])) : \"\")];\n}\n\nfunction csf_to_ods_3D(r/*:string*/)/*:string*/ {\n\treturn r.replace(/\\./,\"!\");\n}\n\nvar strs = {}; // shared strings\nvar _ssfopts = {}; // spreadsheet formatting options\n\n\n/*global Map */\nvar browser_has_Map = typeof Map !== 'undefined';\n\nfunction get_sst_id(sst/*:SST*/, str/*:string*/, rev)/*:number*/ {\n\tvar i = 0, len = sst.length;\n\tif(rev) {\n\t\tif(browser_has_Map ? rev.has(str) : Object.prototype.hasOwnProperty.call(rev, str)) {\n\t\t\tvar revarr = browser_has_Map ? rev.get(str) : rev[str];\n\t\t\tfor(; i < revarr.length; ++i) {\n\t\t\t\tif(sst[revarr[i]].t === str) { sst.Count ++; return revarr[i]; }\n\t\t\t}\n\t\t}\n\t} else for(; i < len; ++i) {\n\t\tif(sst[i].t === str) { sst.Count ++; return i; }\n\t}\n\tsst[len] = ({t:str}/*:any*/); sst.Count ++; sst.Unique ++;\n\tif(rev) {\n\t\tif(browser_has_Map) {\n\t\t\tif(!rev.has(str)) rev.set(str, []);\n\t\t\trev.get(str).push(len);\n\t\t} else {\n\t\t\tif(!Object.prototype.hasOwnProperty.call(rev, str)) rev[str] = [];\n\t\t\trev[str].push(len);\n\t\t}\n\t}\n\treturn len;\n}\n\nfunction col_obj_w(C/*:number*/, col) {\n\tvar p = ({min:C+1,max:C+1}/*:any*/);\n\t/* wch (chars), wpx (pixels) */\n\tvar wch = -1;\n\tif(col.MDW) MDW = col.MDW;\n\tif(col.width != null) p.customWidth = 1;\n\telse if(col.wpx != null) wch = px2char(col.wpx);\n\telse if(col.wch != null) wch = col.wch;\n\tif(wch > -1) { p.width = char2width(wch); p.customWidth = 1; }\n\telse if(col.width != null) p.width = col.width;\n\tif(col.hidden) p.hidden = true;\n\tif(col.level != null) { p.outlineLevel = p.level = col.level; }\n\treturn p;\n}\n\nfunction default_margins(margins/*:Margins*/, mode/*:?string*/) {\n\tif(!margins) return;\n\tvar defs = [0.7, 0.7, 0.75, 0.75, 0.3, 0.3];\n\tif(mode == 'xlml') defs = [1, 1, 1, 1, 0.5, 0.5];\n\tif(margins.left   == null) margins.left   = defs[0];\n\tif(margins.right  == null) margins.right  = defs[1];\n\tif(margins.top    == null) margins.top    = defs[2];\n\tif(margins.bottom == null) margins.bottom = defs[3];\n\tif(margins.header == null) margins.header = defs[4];\n\tif(margins.footer == null) margins.footer = defs[5];\n}\n\nfunction get_cell_style(styles/*:Array<any>*/, cell/*:Cell*/, opts) {\n\tvar z = opts.revssf[cell.z != null ? cell.z : \"General\"];\n\tvar i = 0x3c, len = styles.length;\n\tif(z == null && opts.ssf) {\n\t\tfor(; i < 0x188; ++i) if(opts.ssf[i] == null) {\n\t\t\tSSF_load(cell.z, i);\n\t\t\t// $FlowIgnore\n\t\t\topts.ssf[i] = cell.z;\n\t\t\topts.revssf[cell.z] = z = i;\n\t\t\tbreak;\n\t\t}\n\t}\n\tfor(i = 0; i != len; ++i) if(styles[i].numFmtId === z) return i;\n\tstyles[len] = {\n\t\tnumFmtId:z,\n\t\tfontId:0,\n\t\tfillId:0,\n\t\tborderId:0,\n\t\txfId:0,\n\t\tapplyNumberFormat:1\n\t};\n\treturn len;\n}\n\nfunction safe_format(p/*:Cell*/, fmtid/*:number*/, fillid/*:?number*/, opts, themes, styles) {\n\ttry {\n\t\tif(opts.cellNF) p.z = table_fmt[fmtid];\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(p.t === 'z' && !opts.cellStyles) return;\n\tif(p.t === 'd' && typeof p.v === 'string') p.v = parseDate(p.v);\n\tif((!opts || opts.cellText !== false) && p.t !== 'z') try {\n\t\tif(table_fmt[fmtid] == null) SSF_load(SSFImplicit[fmtid] || \"General\", fmtid);\n\t\tif(p.t === 'e') p.w = p.w || BErr[p.v];\n\t\telse if(fmtid === 0) {\n\t\t\tif(p.t === 'n') {\n\t\t\t\tif((p.v|0) === p.v) p.w = p.v.toString(10);\n\t\t\t\telse p.w = SSF_general_num(p.v);\n\t\t\t}\n\t\t\telse if(p.t === 'd') {\n\t\t\t\tvar dd = datenum(p.v);\n\t\t\t\tif((dd|0) === dd) p.w = dd.toString(10);\n\t\t\t\telse p.w = SSF_general_num(dd);\n\t\t\t}\n\t\t\telse if(p.v === undefined) return \"\";\n\t\t\telse p.w = SSF_general(p.v,_ssfopts);\n\t\t}\n\t\telse if(p.t === 'd') p.w = SSF_format(fmtid,datenum(p.v),_ssfopts);\n\t\telse p.w = SSF_format(fmtid,p.v,_ssfopts);\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(!opts.cellStyles) return;\n\tif(fillid != null) try {\n\t\tp.s = styles.Fills[fillid];\n\t\tif (p.s.fgColor && p.s.fgColor.theme && !p.s.fgColor.rgb) {\n\t\t\tp.s.fgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.fgColor.theme].rgb, p.s.fgColor.tint || 0);\n\t\t\tif(opts.WTF) p.s.fgColor.raw_rgb = themes.themeElements.clrScheme[p.s.fgColor.theme].rgb;\n\t\t}\n\t\tif (p.s.bgColor && p.s.bgColor.theme) {\n\t\t\tp.s.bgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.bgColor.theme].rgb, p.s.bgColor.tint || 0);\n\t\t\tif(opts.WTF) p.s.bgColor.raw_rgb = themes.themeElements.clrScheme[p.s.bgColor.theme].rgb;\n\t\t}\n\t} catch(e) { if(opts.WTF && styles.Fills) throw e; }\n}\n\nfunction check_ws(ws/*:Worksheet*/, sname/*:string*/, i/*:number*/) {\n\tif(ws && ws['!ref']) {\n\t\tvar range = safe_decode_range(ws['!ref']);\n\t\tif(range.e.c < range.s.c || range.e.r < range.s.r) throw new Error(\"Bad range (\" + i + \"): \" + ws['!ref']);\n\t}\n}\nfunction parse_ws_xml_dim(ws/*:Worksheet*/, s/*:string*/) {\n\tvar d = safe_decode_range(s);\n\tif(d.s.r<=d.e.r && d.s.c<=d.e.c && d.s.r>=0 && d.s.c>=0) ws[\"!ref\"] = encode_range(d);\n}\nvar mergecregex = /<(?:\\w:)?mergeCell ref=\"[A-Z0-9:]+\"\\s*[\\/]?>/g;\nvar sheetdataregex = /<(?:\\w+:)?sheetData[^>]*>([\\s\\S]*)<\\/(?:\\w+:)?sheetData>/;\nvar hlinkregex = /<(?:\\w:)?hyperlink [^>]*>/mg;\nvar dimregex = /\"(\\w*:\\w*)\"/;\nvar colregex = /<(?:\\w:)?col\\b[^>]*[\\/]?>/g;\nvar afregex = /<(?:\\w:)?autoFilter[^>]*([\\/]|>([\\s\\S]*)<\\/(?:\\w:)?autoFilter)>/g;\nvar marginregex= /<(?:\\w:)?pageMargins[^>]*\\/>/g;\nvar sheetprregex = /<(?:\\w:)?sheetPr\\b(?:[^>a-z][^>]*)?\\/>/;\nvar sheetprregex2= /<(?:\\w:)?sheetPr[^>]*(?:[\\/]|>([\\s\\S]*)<\\/(?:\\w:)?sheetPr)>/;\nvar svsregex = /<(?:\\w:)?sheetViews[^>]*(?:[\\/]|>([\\s\\S]*)<\\/(?:\\w:)?sheetViews)>/;\n\n/* 18.3 Worksheets */\nfunction parse_ws_xml(data/*:?string*/, opts, idx/*:number*/, rels, wb/*:WBWBProps*/, themes, styles)/*:Worksheet*/ {\n\tif(!data) return data;\n\tif(!rels) rels = {'!id':{}};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\n\t/* 18.3.1.99 worksheet CT_Worksheet */\n\tvar s = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\tvar refguess/*:Range*/ = ({s: {r:2000000, c:2000000}, e: {r:0, c:0} }/*:any*/);\n\n\tvar data1 = \"\", data2 = \"\";\n\tvar mtch/*:?any*/ = data.match(sheetdataregex);\n\tif(mtch) {\n\t\tdata1 = data.slice(0, mtch.index);\n\t\tdata2 = data.slice(mtch.index + mtch[0].length);\n\t} else data1 = data2 = data;\n\n\t/* 18.3.1.82 sheetPr CT_SheetPr */\n\tvar sheetPr = data1.match(sheetprregex);\n\tif(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx);\n\telse if((sheetPr = data1.match(sheetprregex2))) parse_ws_xml_sheetpr2(sheetPr[0], sheetPr[1]||\"\", s, wb, idx, styles, themes);\n\n\t/* 18.3.1.35 dimension CT_SheetDimension */\n\tvar ridx = (data1.match(/<(?:\\w*:)?dimension/)||{index:-1}).index;\n\tif(ridx > 0) {\n\t\tvar ref = data1.slice(ridx,ridx+50).match(dimregex);\n\t\tif(ref) parse_ws_xml_dim(s, ref[1]);\n\t}\n\n\t/* 18.3.1.88 sheetViews CT_SheetViews */\n\tvar svs = data1.match(svsregex);\n\tif(svs && svs[1]) parse_ws_xml_sheetviews(svs[1], wb);\n\n\t/* 18.3.1.17 cols CT_Cols */\n\tvar columns/*:Array<ColInfo>*/ = [];\n\tif(opts.cellStyles) {\n\t\t/* 18.3.1.13 col CT_Col */\n\t\tvar cols = data1.match(colregex);\n\t\tif(cols) parse_ws_xml_cols(columns, cols);\n\t}\n\n\t/* 18.3.1.80 sheetData CT_SheetData ? */\n\tif(mtch) parse_ws_xml_data(mtch[1], s, opts, refguess, themes, styles);\n\n\t/* 18.3.1.2  autoFilter CT_AutoFilter */\n\tvar afilter = data2.match(afregex);\n\tif(afilter) s['!autofilter'] = parse_ws_xml_autofilter(afilter[0]);\n\n\t/* 18.3.1.55 mergeCells CT_MergeCells */\n\tvar merges/*:Array<Range>*/ = [];\n\tvar _merge = data2.match(mergecregex);\n\tif(_merge) for(ridx = 0; ridx != _merge.length; ++ridx)\n\t\tmerges[ridx] = safe_decode_range(_merge[ridx].slice(_merge[ridx].indexOf(\"\\\"\")+1));\n\n\t/* 18.3.1.48 hyperlinks CT_Hyperlinks */\n\tvar hlink = data2.match(hlinkregex);\n\tif(hlink) parse_ws_xml_hlinks(s, hlink, rels);\n\n\t/* 18.3.1.62 pageMargins CT_PageMargins */\n\tvar margins = data2.match(marginregex);\n\tif(margins) s['!margins'] = parse_ws_xml_margins(parsexmltag(margins[0]));\n\n\tif(!s[\"!ref\"] && refguess.e.c >= refguess.s.c && refguess.e.r >= refguess.s.r) s[\"!ref\"] = encode_range(refguess);\n\tif(opts.sheetRows > 0 && s[\"!ref\"]) {\n\t\tvar tmpref = safe_decode_range(s[\"!ref\"]);\n\t\tif(opts.sheetRows <= +tmpref.e.r) {\n\t\t\ttmpref.e.r = opts.sheetRows - 1;\n\t\t\tif(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r;\n\t\t\tif(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r;\n\t\t\tif(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c;\n\t\t\tif(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c;\n\t\t\ts[\"!fullref\"] = s[\"!ref\"];\n\t\t\ts[\"!ref\"] = encode_range(tmpref);\n\t\t}\n\t}\n\tif(columns.length > 0) s[\"!cols\"] = columns;\n\tif(merges.length > 0) s[\"!merges\"] = merges;\n\treturn s;\n}\n\nfunction write_ws_xml_merges(merges/*:Array<Range>*/)/*:string*/ {\n\tif(merges.length === 0) return \"\";\n\tvar o = '<mergeCells count=\"' + merges.length + '\">';\n\tfor(var i = 0; i != merges.length; ++i) o += '<mergeCell ref=\"' + encode_range(merges[i]) + '\"/>';\n\treturn o + '</mergeCells>';\n}\n\n/* 18.3.1.82-3 sheetPr CT_ChartsheetPr / CT_SheetPr */\nfunction parse_ws_xml_sheetpr(sheetPr/*:string*/, s, wb/*:WBWBProps*/, idx/*:number*/) {\n\tvar data = parsexmltag(sheetPr);\n\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\tif(data.codeName) wb.Sheets[idx].CodeName = unescapexml(utf8read(data.codeName));\n}\nfunction parse_ws_xml_sheetpr2(sheetPr/*:string*/, body/*:string*/, s, wb/*:WBWBProps*/, idx/*:number*/) {\n\tparse_ws_xml_sheetpr(sheetPr.slice(0, sheetPr.indexOf(\">\")), s, wb, idx);\n}\nfunction write_ws_xml_sheetpr(ws, wb, idx, opts, o) {\n\tvar needed = false;\n\tvar props = {}, payload = null;\n\tif(opts.bookType !== 'xlsx' && wb.vbaraw) {\n\t\tvar cname = wb.SheetNames[idx];\n\t\ttry { if(wb.Workbook) cname = wb.Workbook.Sheets[idx].CodeName || cname; } catch(e) {}\n\t\tneeded = true;\n\t\tprops.codeName = utf8write(escapexml(cname));\n\t}\n\n\tif(ws && ws[\"!outline\"]) {\n\t\tvar outlineprops = {summaryBelow:1, summaryRight:1};\n\t\tif(ws[\"!outline\"].above) outlineprops.summaryBelow = 0;\n\t\tif(ws[\"!outline\"].left) outlineprops.summaryRight = 0;\n\t\tpayload = (payload||\"\") + writextag('outlinePr', null, outlineprops);\n\t}\n\n\tif(!needed && !payload) return;\n\to[o.length] = (writextag('sheetPr', payload, props));\n}\n\n/* 18.3.1.85 sheetProtection CT_SheetProtection */\nvar sheetprot_deffalse = [\"objects\", \"scenarios\", \"selectLockedCells\", \"selectUnlockedCells\"];\nvar sheetprot_deftrue = [\n\t\"formatColumns\", \"formatRows\", \"formatCells\",\n\t\"insertColumns\", \"insertRows\", \"insertHyperlinks\",\n\t\"deleteColumns\", \"deleteRows\",\n\t\"sort\", \"autoFilter\", \"pivotTables\"\n];\nfunction write_ws_xml_protection(sp)/*:string*/ {\n\t// algorithmName, hashValue, saltValue, spinCount\n\tvar o = ({sheet:1}/*:any*/);\n\tsheetprot_deffalse.forEach(function(n) { if(sp[n] != null && sp[n]) o[n] = \"1\"; });\n\tsheetprot_deftrue.forEach(function(n) { if(sp[n] != null && !sp[n]) o[n] = \"0\"; });\n\t/* TODO: algorithm */\n\tif(sp.password) o.password = crypto_CreatePasswordVerifier_Method1(sp.password).toString(16).toUpperCase();\n\treturn writextag('sheetProtection', null, o);\n}\n\nfunction parse_ws_xml_hlinks(s, data/*:Array<string>*/, rels) {\n\tvar dense = Array.isArray(s);\n\tfor(var i = 0; i != data.length; ++i) {\n\t\tvar val = parsexmltag(utf8read(data[i]), true);\n\t\tif(!val.ref) return;\n\t\tvar rel = ((rels || {})['!id']||[])[val.id];\n\t\tif(rel) {\n\t\t\tval.Target = rel.Target;\n\t\t\tif(val.location) val.Target += \"#\"+unescapexml(val.location);\n\t\t} else {\n\t\t\tval.Target = \"#\" + unescapexml(val.location);\n\t\t\trel = {Target: val.Target, TargetMode: 'Internal'};\n\t\t}\n\t\tval.Rel = rel;\n\t\tif(val.tooltip) { val.Tooltip = val.tooltip; delete val.tooltip; }\n\t\tvar rng = safe_decode_range(val.ref);\n\t\tfor(var R=rng.s.r;R<=rng.e.r;++R) for(var C=rng.s.c;C<=rng.e.c;++C) {\n\t\t\tvar addr = encode_cell({c:C,r:R});\n\t\t\tif(dense) {\n\t\t\t\tif(!s[R]) s[R] = [];\n\t\t\t\tif(!s[R][C]) s[R][C] = {t:\"z\",v:undefined};\n\t\t\t\ts[R][C].l = val;\n\t\t\t} else {\n\t\t\t\tif(!s[addr]) s[addr] = {t:\"z\",v:undefined};\n\t\t\t\ts[addr].l = val;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction parse_ws_xml_margins(margin) {\n\tvar o = {};\n\t[\"left\", \"right\", \"top\", \"bottom\", \"header\", \"footer\"].forEach(function(k) {\n\t\tif(margin[k]) o[k] = parseFloat(margin[k]);\n\t});\n\treturn o;\n}\nfunction write_ws_xml_margins(margin)/*:string*/ {\n\tdefault_margins(margin);\n\treturn writextag('pageMargins', null, margin);\n}\n\nfunction parse_ws_xml_cols(columns, cols) {\n\tvar seencol = false;\n\tfor(var coli = 0; coli != cols.length; ++coli) {\n\t\tvar coll = parsexmltag(cols[coli], true);\n\t\tif(coll.hidden) coll.hidden = parsexmlbool(coll.hidden);\n\t\tvar colm=parseInt(coll.min, 10)-1, colM=parseInt(coll.max,10)-1;\n\t\tif(coll.outlineLevel) coll.level = (+coll.outlineLevel || 0);\n\t\tdelete coll.min; delete coll.max; coll.width = +coll.width;\n\t\tif(!seencol && coll.width) { seencol = true; find_mdw_colw(coll.width); }\n\t\tprocess_col(coll);\n\t\twhile(colm <= colM) columns[colm++] = dup(coll);\n\t}\n}\nfunction write_ws_xml_cols(ws, cols)/*:string*/ {\n\tvar o = [\"<cols>\"], col;\n\tfor(var i = 0; i != cols.length; ++i) {\n\t\tif(!(col = cols[i])) continue;\n\t\to[o.length] = (writextag('col', null, col_obj_w(i, col)));\n\t}\n\to[o.length] = \"</cols>\";\n\treturn o.join(\"\");\n}\n\nfunction parse_ws_xml_autofilter(data/*:string*/) {\n\tvar o = { ref: (data.match(/ref=\"([^\"]*)\"/)||[])[1]};\n\treturn o;\n}\nfunction write_ws_xml_autofilter(data, ws, wb, idx)/*:string*/ {\n\tvar ref = typeof data.ref == \"string\" ? data.ref : encode_range(data.ref);\n\tif(!wb.Workbook) wb.Workbook = ({Sheets:[]}/*:any*/);\n\tif(!wb.Workbook.Names) wb.Workbook.Names = [];\n\tvar names/*: Array<any> */ = wb.Workbook.Names;\n\tvar range = decode_range(ref);\n\tif(range.s.r == range.e.r) { range.e.r = decode_range(ws[\"!ref\"]).e.r; ref = encode_range(range); }\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar name = names[i];\n\t\tif(name.Name != '_xlnm._FilterDatabase') continue;\n\t\tif(name.Sheet != idx) continue;\n\t\tname.Ref = \"'\" + wb.SheetNames[idx] + \"'!\" + ref; break;\n\t}\n\tif(i == names.length) names.push({ Name: '_xlnm._FilterDatabase', Sheet: idx, Ref: \"'\" + wb.SheetNames[idx] + \"'!\" + ref  });\n\treturn writextag(\"autoFilter\", null, {ref:ref});\n}\n\n/* 18.3.1.88 sheetViews CT_SheetViews */\n/* 18.3.1.87 sheetView CT_SheetView */\nvar sviewregex = /<(?:\\w:)?sheetView(?:[^>a-z][^>]*)?\\/?>/;\nfunction parse_ws_xml_sheetviews(data, wb/*:WBWBProps*/) {\n\tif(!wb.Views) wb.Views = [{}];\n\t(data.match(sviewregex)||[]).forEach(function(r/*:string*/, i/*:number*/) {\n\t\tvar tag = parsexmltag(r);\n\t\t// $FlowIgnore\n\t\tif(!wb.Views[i]) wb.Views[i] = {};\n\t\t// $FlowIgnore\n\t\tif(+tag.zoomScale) wb.Views[i].zoom = +tag.zoomScale;\n\t\t// $FlowIgnore\n\t\tif(parsexmlbool(tag.rightToLeft)) wb.Views[i].RTL = true;\n\t});\n}\nfunction write_ws_xml_sheetviews(ws, opts, idx, wb)/*:string*/ {\n\tvar sview = ({workbookViewId:\"0\"}/*:any*/);\n\t// $FlowIgnore\n\tif((((wb||{}).Workbook||{}).Views||[])[0]) sview.rightToLeft = wb.Workbook.Views[0].RTL ? \"1\" : \"0\";\n\treturn writextag(\"sheetViews\", writextag(\"sheetView\", null, sview), {});\n}\n\nfunction write_ws_xml_cell(cell/*:Cell*/, ref, ws, opts/*::, idx, wb*/)/*:string*/ {\n\tif(cell.c) ws['!comments'].push([ref, cell.c]);\n\tif(cell.v === undefined && typeof cell.f !== \"string\" || cell.t === 'z' && !cell.f) return \"\";\n\tvar vv = \"\";\n\tvar oldt = cell.t, oldv = cell.v;\n\tif(cell.t !== \"z\") switch(cell.t) {\n\t\tcase 'b': vv = cell.v ? \"1\" : \"0\"; break;\n\t\tcase 'n': vv = ''+cell.v; break;\n\t\tcase 'e': vv = BErr[cell.v]; break;\n\t\tcase 'd':\n\t\t\tif(opts && opts.cellDates) vv = parseDate(cell.v, -1).toISOString();\n\t\t\telse {\n\t\t\t\tcell = dup(cell);\n\t\t\t\tcell.t = 'n';\n\t\t\t\tvv = ''+(cell.v = datenum(parseDate(cell.v)));\n\t\t\t}\n\t\t\tif(typeof cell.z === 'undefined') cell.z = table_fmt[14];\n\t\t\tbreak;\n\t\tdefault: vv = cell.v; break;\n\t}\n\tvar v = writetag('v', escapexml(vv)), o = ({r:ref}/*:any*/);\n\t/* TODO: cell style */\n\tvar os = get_cell_style(opts.cellXfs, cell, opts);\n\tif(os !== 0) o.s = os;\n\tswitch(cell.t) {\n\t\tcase 'n': break;\n\t\tcase 'd': o.t = \"d\"; break;\n\t\tcase 'b': o.t = \"b\"; break;\n\t\tcase 'e': o.t = \"e\"; break;\n\t\tcase 'z': break;\n\t\tdefault: if(cell.v == null) { delete cell.t; break; }\n\t\t\tif(cell.v.length > 32767) throw new Error(\"Text length must not exceed 32767 characters\");\n\t\t\tif(opts && opts.bookSST) {\n\t\t\t\tv = writetag('v', ''+get_sst_id(opts.Strings, cell.v, opts.revStrings));\n\t\t\t\to.t = \"s\"; break;\n\t\t\t}\n\t\t\to.t = \"str\"; break;\n\t}\n\tif(cell.t != oldt) { cell.t = oldt; cell.v = oldv; }\n\tif(typeof cell.f == \"string\" && cell.f) {\n\t\tvar ff = cell.F && cell.F.slice(0, ref.length) == ref ? {t:\"array\", ref:cell.F} : null;\n\t\tv = writextag('f', escapexml(cell.f), ff) + (cell.v != null ? v : \"\");\n\t}\n\tif(cell.l) ws['!links'].push([ref, cell.l]);\n\tif(cell.D) o.cm = 1;\n\treturn writextag('c', v, o);\n}\n\nvar parse_ws_xml_data = /*#__PURE__*/(function() {\n\tvar cellregex = /<(?:\\w+:)?c[ \\/>]/, rowregex = /<\\/(?:\\w+:)?row>/;\n\tvar rregex = /r=[\"']([^\"']*)[\"']/, isregex = /<(?:\\w+:)?is>([\\S\\s]*?)<\\/(?:\\w+:)?is>/;\n\tvar refregex = /ref=[\"']([^\"']*)[\"']/;\n\tvar match_v = matchtag(\"v\"), match_f = matchtag(\"f\");\n\nreturn function parse_ws_xml_data(sdata/*:string*/, s, opts, guess/*:Range*/, themes, styles) {\n\tvar ri = 0, x = \"\", cells/*:Array<string>*/ = [], cref/*:?Array<string>*/ = [], idx=0, i=0, cc=0, d=\"\", p/*:any*/;\n\tvar tag, tagr = 0, tagc = 0;\n\tvar sstr, ftag;\n\tvar fmtid = 0, fillid = 0;\n\tvar do_format = Array.isArray(styles.CellXf), cf;\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar sharedf = [];\n\tvar dense = Array.isArray(s);\n\tvar rows/*:Array<RowInfo>*/ = [], rowobj = {}, rowrite = false;\n\tvar sheetStubs = !!opts.sheetStubs;\n\tfor(var marr = sdata.split(rowregex), mt = 0, marrlen = marr.length; mt != marrlen; ++mt) {\n\t\tx = marr[mt].trim();\n\t\tvar xlen = x.length;\n\t\tif(xlen === 0) continue;\n\n\t\t/* 18.3.1.73 row CT_Row */\n\t\tvar rstarti = 0;\n\t\touta: for(ri = 0; ri < xlen; ++ri) switch(/*x.charCodeAt(ri)*/x[ri]) {\n\t\t\tcase \">\" /*62*/:\n\t\t\t\tif(/*x.charCodeAt(ri-1) != 47*/x[ri-1] != \"/\") { ++ri; break outa; }\n\t\t\t\tif(opts && opts.cellStyles) {\n\t\t\t\t\t// TODO: avoid duplication\n\t\t\t\t\ttag = parsexmltag(x.slice(rstarti,ri), true);\n\t\t\t\t\ttagr = tag.r != null ? parseInt(tag.r, 10) : tagr+1; tagc = -1;\n\t\t\t\t\tif(opts.sheetRows && opts.sheetRows < tagr) continue;\n\t\t\t\t\trowobj = {}; rowrite = false;\n\t\t\t\t\tif(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); }\n\t\t\t\t\tif(tag.hidden == \"1\") { rowrite = true; rowobj.hidden = true; }\n\t\t\t\t\tif(tag.outlineLevel != null) { rowrite = true; rowobj.level = +tag.outlineLevel; }\n\t\t\t\t\tif(rowrite) rows[tagr-1] = rowobj;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"<\" /*60*/: rstarti = ri; break;\n\t\t}\n\t\tif(rstarti >= ri) break;\n\t\ttag = parsexmltag(x.slice(rstarti,ri), true);\n\t\ttagr = tag.r != null ? parseInt(tag.r, 10) : tagr+1; tagc = -1;\n\t\tif(opts.sheetRows && opts.sheetRows < tagr) continue;\n\t\tif(guess.s.r > tagr - 1) guess.s.r = tagr - 1;\n\t\tif(guess.e.r < tagr - 1) guess.e.r = tagr - 1;\n\n\t\tif(opts && opts.cellStyles) {\n\t\t\trowobj = {}; rowrite = false;\n\t\t\tif(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); }\n\t\t\tif(tag.hidden == \"1\") { rowrite = true; rowobj.hidden = true; }\n\t\t\tif(tag.outlineLevel != null) { rowrite = true; rowobj.level = +tag.outlineLevel; }\n\t\t\tif(rowrite) rows[tagr-1] = rowobj;\n\t\t}\n\n\t\t/* 18.3.1.4 c CT_Cell */\n\t\tcells = x.slice(ri).split(cellregex);\n\t\tfor(var rslice = 0; rslice != cells.length; ++rslice) if(cells[rslice].trim().charAt(0) != \"<\") break;\n\t\tcells = cells.slice(rslice);\n\t\tfor(ri = 0; ri != cells.length; ++ri) {\n\t\t\tx = cells[ri].trim();\n\t\t\tif(x.length === 0) continue;\n\t\t\tcref = x.match(rregex); idx = ri; i=0; cc=0;\n\t\t\tx = \"<c \" + (x.slice(0,1)==\"<\"?\">\":\"\") + x;\n\t\t\tif(cref != null && cref.length === 2) {\n\t\t\t\tidx = 0; d=cref[1];\n\t\t\t\tfor(i=0; i != d.length; ++i) {\n\t\t\t\t\tif((cc=d.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\t\t\t\tidx = 26*idx + cc;\n\t\t\t\t}\n\t\t\t\t--idx;\n\t\t\t\ttagc = idx;\n\t\t\t} else ++tagc;\n\t\t\tfor(i = 0; i != x.length; ++i) if(x.charCodeAt(i) === 62) break; ++i;\n\t\t\ttag = parsexmltag(x.slice(0,i), true);\n\t\t\tif(!tag.r) tag.r = encode_cell({r:tagr-1, c:tagc});\n\t\t\td = x.slice(i);\n\t\t\tp = ({t:\"\"}/*:any*/);\n\n\t\t\tif((cref=d.match(match_v))!= null && /*::cref != null && */cref[1] !== '') p.v=unescapexml(cref[1]);\n\t\t\tif(opts.cellFormula) {\n\t\t\t\tif((cref=d.match(match_f))!= null && /*::cref != null && */cref[1] !== '') {\n\t\t\t\t\t/* TODO: match against XLSXFutureFunctions */\n\t\t\t\t\tp.f=unescapexml(utf8read(cref[1])).replace(/\\r\\n/g, \"\\n\");\n\t\t\t\t\tif(!opts.xlfn) p.f = _xlfn(p.f);\n\t\t\t\t\tif(/*::cref != null && cref[0] != null && */cref[0].indexOf('t=\"array\"') > -1) {\n\t\t\t\t\t\tp.F = (d.match(refregex)||[])[1];\n\t\t\t\t\t\tif(p.F.indexOf(\":\") > -1) arrayf.push([safe_decode_range(p.F), p.F]);\n\t\t\t\t\t} else if(/*::cref != null && cref[0] != null && */cref[0].indexOf('t=\"shared\"') > -1) {\n\t\t\t\t\t\t// TODO: parse formula\n\t\t\t\t\t\tftag = parsexmltag(cref[0]);\n\t\t\t\t\t\tvar ___f = unescapexml(utf8read(cref[1]));\n\t\t\t\t\t\tif(!opts.xlfn) ___f = _xlfn(___f);\n\t\t\t\t\t\tsharedf[parseInt(ftag.si, 10)] = [ftag, ___f, tag.r];\n\t\t\t\t\t}\n\t\t\t\t} else if((cref=d.match(/<f[^>]*\\/>/))) {\n\t\t\t\t\tftag = parsexmltag(cref[0]);\n\t\t\t\t\tif(sharedf[ftag.si]) p.f = shift_formula_xlsx(sharedf[ftag.si][1], sharedf[ftag.si][2]/*[0].ref*/, tag.r);\n\t\t\t\t}\n\t\t\t\t/* TODO: factor out contains logic */\n\t\t\t\tvar _tag = decode_cell(tag.r);\n\t\t\t\tfor(i = 0; i < arrayf.length; ++i)\n\t\t\t\t\tif(_tag.r >= arrayf[i][0].s.r && _tag.r <= arrayf[i][0].e.r)\n\t\t\t\t\t\tif(_tag.c >= arrayf[i][0].s.c && _tag.c <= arrayf[i][0].e.c)\n\t\t\t\t\t\t\tp.F = arrayf[i][1];\n\t\t\t}\n\n\t\t\tif(tag.t == null && p.v === undefined) {\n\t\t\t\tif(p.f || p.F) {\n\t\t\t\t\tp.v = 0; p.t = \"n\";\n\t\t\t\t} else if(!sheetStubs) continue;\n\t\t\t\telse p.t = \"z\";\n\t\t\t}\n\t\t\telse p.t = tag.t || \"n\";\n\t\t\tif(guess.s.c > tagc) guess.s.c = tagc;\n\t\t\tif(guess.e.c < tagc) guess.e.c = tagc;\n\t\t\t/* 18.18.11 t ST_CellType */\n\t\t\tswitch(p.t) {\n\t\t\t\tcase 'n':\n\t\t\t\t\tif(p.v == \"\" || p.v == null) {\n\t\t\t\t\t\tif(!sheetStubs) continue;\n\t\t\t\t\t\tp.t = 'z';\n\t\t\t\t\t} else p.v = parseFloat(p.v);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 's':\n\t\t\t\t\tif(typeof p.v == 'undefined') {\n\t\t\t\t\t\tif(!sheetStubs) continue;\n\t\t\t\t\t\tp.t = 'z';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsstr = strs[parseInt(p.v, 10)];\n\t\t\t\t\t\tp.v = sstr.t;\n\t\t\t\t\t\tp.r = sstr.r;\n\t\t\t\t\t\tif(opts.cellHTML) p.h = sstr.h;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'str':\n\t\t\t\t\tp.t = \"s\";\n\t\t\t\t\tp.v = (p.v!=null) ? utf8read(p.v) : '';\n\t\t\t\t\tif(opts.cellHTML) p.h = escapehtml(p.v);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'inlineStr':\n\t\t\t\t\tcref = d.match(isregex);\n\t\t\t\t\tp.t = 's';\n\t\t\t\t\tif(cref != null && (sstr = parse_si(cref[1]))) {\n\t\t\t\t\t\tp.v = sstr.t;\n\t\t\t\t\t\tif(opts.cellHTML) p.h = sstr.h;\n\t\t\t\t\t} else p.v = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'b': p.v = parsexmlbool(p.v); break;\n\t\t\t\tcase 'd':\n\t\t\t\t\tif(opts.cellDates) p.v = parseDate(p.v, 1);\n\t\t\t\t\telse { p.v = datenum(parseDate(p.v, 1)); p.t = 'n'; }\n\t\t\t\t\tbreak;\n\t\t\t\t/* error string in .w, number in .v */\n\t\t\t\tcase 'e':\n\t\t\t\t\tif(!opts || opts.cellText !== false) p.w = p.v;\n\t\t\t\t\tp.v = RBErr[p.v]; break;\n\t\t\t}\n\t\t\t/* formatting */\n\t\t\tfmtid = fillid = 0;\n\t\t\tcf = null;\n\t\t\tif(do_format && tag.s !== undefined) {\n\t\t\t\tcf = styles.CellXf[tag.s];\n\t\t\t\tif(cf != null) {\n\t\t\t\t\tif(cf.numFmtId != null) fmtid = cf.numFmtId;\n\t\t\t\t\tif(opts.cellStyles) {\n\t\t\t\t\t\tif(cf.fillId != null) fillid = cf.fillId;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tsafe_format(p, fmtid, fillid, opts, themes, styles);\n\t\t\tif(opts.cellDates && do_format && p.t == 'n' && fmt_is_date(table_fmt[fmtid])) { p.t = 'd'; p.v = numdate(p.v); }\n\t\t\tif(tag.cm && opts.xlmeta) {\n\t\t\t\tvar cm = (opts.xlmeta.Cell||[])[+tag.cm-1];\n\t\t\t\tif(cm && cm.type == 'XLDAPR') p.D = true;\n\t\t\t}\n\t\t\tif(dense) {\n\t\t\t\tvar _r = decode_cell(tag.r);\n\t\t\t\tif(!s[_r.r]) s[_r.r] = [];\n\t\t\t\ts[_r.r][_r.c] = p;\n\t\t\t} else s[tag.r] = p;\n\t\t}\n\t}\n\tif(rows.length > 0) s['!rows'] = rows;\n}; })();\n\nfunction write_ws_xml_data(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*//*::, rels*/)/*:string*/ {\n\tvar o/*:Array<string>*/ = [], r/*:Array<string>*/ = [], range = safe_decode_range(ws['!ref']), cell=\"\", ref, rr = \"\", cols/*:Array<string>*/ = [], R=0, C=0, rows = ws['!rows'];\n\tvar dense = Array.isArray(ws);\n\tvar params = ({r:rr}/*:any*/), row/*:RowInfo*/, height = -1;\n\tfor(C = range.s.c; C <= range.e.c; ++C) cols[C] = encode_col(C);\n\tfor(R = range.s.r; R <= range.e.r; ++R) {\n\t\tr = [];\n\t\trr = encode_row(R);\n\t\tfor(C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tref = cols[C] + rr;\n\t\t\tvar _cell = dense ? (ws[R]||[])[C]: ws[ref];\n\t\t\tif(_cell === undefined) continue;\n\t\t\tif((cell = write_ws_xml_cell(_cell, ref, ws, opts, idx, wb)) != null) r.push(cell);\n\t\t}\n\t\tif(r.length > 0 || (rows && rows[R])) {\n\t\t\tparams = ({r:rr}/*:any*/);\n\t\t\tif(rows && rows[R]) {\n\t\t\t\trow = rows[R];\n\t\t\t\tif(row.hidden) params.hidden = 1;\n\t\t\t\theight = -1;\n\t\t\t\tif(row.hpx) height = px2pt(row.hpx);\n\t\t\t\telse if(row.hpt) height = row.hpt;\n\t\t\t\tif(height > -1) { params.ht = height; params.customHeight = 1; }\n\t\t\t\tif(row.level) { params.outlineLevel = row.level; }\n\t\t\t}\n\t\t\to[o.length] = (writextag('row', r.join(\"\"), params));\n\t\t}\n\t}\n\tif(rows) for(; R < rows.length; ++R) {\n\t\tif(rows && rows[R]) {\n\t\t\tparams = ({r:R+1}/*:any*/);\n\t\t\trow = rows[R];\n\t\t\tif(row.hidden) params.hidden = 1;\n\t\t\theight = -1;\n\t\t\tif (row.hpx) height = px2pt(row.hpx);\n\t\t\telse if (row.hpt) height = row.hpt;\n\t\t\tif (height > -1) { params.ht = height; params.customHeight = 1; }\n\t\t\tif (row.level) { params.outlineLevel = row.level; }\n\t\t\to[o.length] = (writextag('row', \"\", params));\n\t\t}\n\t}\n\treturn o.join(\"\");\n}\n\nfunction write_ws_xml(idx/*:number*/, opts, wb/*:Workbook*/, rels)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('worksheet', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t'xmlns:r': XMLNS.r\n\t})];\n\tvar s = wb.SheetNames[idx], sidx = 0, rdata = \"\";\n\tvar ws = wb.Sheets[s];\n\tif(ws == null) ws = {};\n\tvar ref = ws['!ref'] || 'A1';\n\tvar range = safe_decode_range(ref);\n\tif(range.e.c > 0x3FFF || range.e.r > 0xFFFFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + ref + \" exceeds format limit A1:XFD1048576\");\n\t\trange.e.c = Math.min(range.e.c, 0x3FFF);\n\t\trange.e.r = Math.min(range.e.c, 0xFFFFF);\n\t\tref = encode_range(range);\n\t}\n\tif(!rels) rels = {};\n\tws['!comments'] = [];\n\tvar _drawing = [];\n\n\twrite_ws_xml_sheetpr(ws, wb, idx, opts, o);\n\n\to[o.length] = (writextag('dimension', null, {'ref': ref}));\n\n\to[o.length] = write_ws_xml_sheetviews(ws, opts, idx, wb);\n\n\t/* TODO: store in WB, process styles */\n\tif(opts.sheetFormat) o[o.length] = (writextag('sheetFormatPr', null, {\n\t\tdefaultRowHeight:opts.sheetFormat.defaultRowHeight||'16',\n\t\tbaseColWidth:opts.sheetFormat.baseColWidth||'10',\n\t\toutlineLevelRow:opts.sheetFormat.outlineLevelRow||'7'\n\t}));\n\n\tif(ws['!cols'] != null && ws['!cols'].length > 0) o[o.length] = (write_ws_xml_cols(ws, ws['!cols']));\n\n\to[sidx = o.length] = '<sheetData/>';\n\tws['!links'] = [];\n\tif(ws['!ref'] != null) {\n\t\trdata = write_ws_xml_data(ws, opts, idx, wb, rels);\n\t\tif(rdata.length > 0) o[o.length] = (rdata);\n\t}\n\tif(o.length>sidx+1) { o[o.length] = ('</sheetData>'); o[sidx]=o[sidx].replace(\"/>\",\">\"); }\n\n\t/* sheetCalcPr */\n\n\tif(ws['!protect']) o[o.length] = write_ws_xml_protection(ws['!protect']);\n\n\t/* protectedRanges */\n\t/* scenarios */\n\n\tif(ws['!autofilter'] != null) o[o.length] = write_ws_xml_autofilter(ws['!autofilter'], ws, wb, idx);\n\n\t/* sortState */\n\t/* dataConsolidate */\n\t/* customSheetViews */\n\n\tif(ws['!merges'] != null && ws['!merges'].length > 0) o[o.length] = (write_ws_xml_merges(ws['!merges']));\n\n\t/* phoneticPr */\n\t/* conditionalFormatting */\n\t/* dataValidations */\n\n\tvar relc = -1, rel, rId = -1;\n\tif(/*::(*/ws['!links']/*::||[])*/.length > 0) {\n\t\to[o.length] = \"<hyperlinks>\";\n\t\t/*::(*/ws['!links']/*::||[])*/.forEach(function(l) {\n\t\t\tif(!l[1].Target) return;\n\t\t\trel = ({\"ref\":l[0]}/*:any*/);\n\t\t\tif(l[1].Target.charAt(0) != \"#\") {\n\t\t\t\trId = add_rels(rels, -1, escapexml(l[1].Target).replace(/#.*$/, \"\"), RELS.HLINK);\n\t\t\t\trel[\"r:id\"] = \"rId\"+rId;\n\t\t\t}\n\t\t\tif((relc = l[1].Target.indexOf(\"#\")) > -1) rel.location = escapexml(l[1].Target.slice(relc+1));\n\t\t\tif(l[1].Tooltip) rel.tooltip = escapexml(l[1].Tooltip);\n\t\t\to[o.length] = writextag(\"hyperlink\",null,rel);\n\t\t});\n\t\to[o.length] = \"</hyperlinks>\";\n\t}\n\tdelete ws['!links'];\n\n\t/* printOptions */\n\n\tif(ws['!margins'] != null) o[o.length] =  write_ws_xml_margins(ws['!margins']);\n\n\t/* pageSetup */\n\t/* headerFooter */\n\t/* rowBreaks */\n\t/* colBreaks */\n\t/* customProperties */\n\t/* cellWatches */\n\n\tif(!opts || opts.ignoreEC || (opts.ignoreEC == (void 0))) o[o.length] = writetag(\"ignoredErrors\", writextag(\"ignoredError\", null, {numberStoredAsText:1, sqref:ref}));\n\n\t/* smartTags */\n\n\tif(_drawing.length > 0) {\n\t\trId = add_rels(rels, -1, \"../drawings/drawing\" + (idx+1) + \".xml\", RELS.DRAW);\n\t\to[o.length] = writextag(\"drawing\", null, {\"r:id\":\"rId\" + rId});\n\t\tws['!drawing'] = _drawing;\n\t}\n\n\tif(ws['!comments'].length > 0) {\n\t\trId = add_rels(rels, -1, \"../drawings/vmlDrawing\" + (idx+1) + \".vml\", RELS.VML);\n\t\to[o.length] = writextag(\"legacyDrawing\", null, {\"r:id\":\"rId\" + rId});\n\t\tws['!legacy'] = rId;\n\t}\n\n\t/* legacyDrawingHF */\n\t/* picture */\n\t/* oleObjects */\n\t/* controls */\n\t/* webPublishItems */\n\t/* tableParts */\n\t/* extLst */\n\n\tif(o.length>1) { o[o.length] = ('</worksheet>'); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSB] 2.4.726 BrtRowHdr */\nfunction parse_BrtRowHdr(data, length) {\n\tvar z = ({}/*:any*/);\n\tvar tgt = data.l + length;\n\tz.r = data.read_shift(4);\n\tdata.l += 4; // TODO: ixfe\n\tvar miyRw = data.read_shift(2);\n\tdata.l += 1; // TODO: top/bot padding\n\tvar flags = data.read_shift(1);\n\tdata.l = tgt;\n\tif(flags & 0x07) z.level = flags & 0x07;\n\tif(flags & 0x10) z.hidden = true;\n\tif(flags & 0x20) z.hpt = miyRw / 20;\n\treturn z;\n}\nfunction write_BrtRowHdr(R/*:number*/, range, ws) {\n\tvar o = new_buf(17+8*16);\n\tvar row = (ws['!rows']||[])[R]||{};\n\to.write_shift(4, R);\n\n\to.write_shift(4, 0); /* TODO: ixfe */\n\n\tvar miyRw = 0x0140;\n\tif(row.hpx) miyRw = px2pt(row.hpx) * 20;\n\telse if(row.hpt) miyRw = row.hpt * 20;\n\to.write_shift(2, miyRw);\n\n\to.write_shift(1, 0); /* top/bot padding */\n\n\tvar flags = 0x0;\n\tif(row.level) flags |= row.level;\n\tif(row.hidden) flags |= 0x10;\n\tif(row.hpx || row.hpt) flags |= 0x20;\n\to.write_shift(1, flags);\n\n\to.write_shift(1, 0); /* phonetic guide */\n\n\t/* [MS-XLSB] 2.5.8 BrtColSpan explains the mechanism */\n\tvar ncolspan = 0, lcs = o.l;\n\to.l += 4;\n\n\tvar caddr = {r:R, c:0};\n\tfor(var i = 0; i < 16; ++i) {\n\t\tif((range.s.c > ((i+1) << 10)) || (range.e.c < (i << 10))) continue;\n\t\tvar first = -1, last = -1;\n\t\tfor(var j = (i<<10); j < ((i+1)<<10); ++j) {\n\t\t\tcaddr.c = j;\n\t\t\tvar cell = Array.isArray(ws) ? (ws[caddr.r]||[])[caddr.c] : ws[encode_cell(caddr)];\n\t\t\tif(cell) { if(first < 0) first = j; last = j; }\n\t\t}\n\t\tif(first < 0) continue;\n\t\t++ncolspan;\n\t\to.write_shift(4, first);\n\t\to.write_shift(4, last);\n\t}\n\n\tvar l = o.l;\n\to.l = lcs;\n\to.write_shift(4, ncolspan);\n\to.l = l;\n\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\nfunction write_row_header(ba, ws, range, R) {\n\tvar o = write_BrtRowHdr(R, range, ws);\n\tif((o.length > 17) || (ws['!rows']||[])[R]) write_record(ba, 0x0000 /* BrtRowHdr */, o);\n}\n\n/* [MS-XLSB] 2.4.820 BrtWsDim */\nvar parse_BrtWsDim = parse_UncheckedRfX;\nvar write_BrtWsDim = write_UncheckedRfX;\n\n/* [MS-XLSB] 2.4.821 BrtWsFmtInfo */\nfunction parse_BrtWsFmtInfo(/*::data, length*/) {\n}\n//function write_BrtWsFmtInfo(ws, o) { }\n\n/* [MS-XLSB] 2.4.823 BrtWsProp */\nfunction parse_BrtWsProp(data, length) {\n\tvar z = {};\n\tvar f = data[data.l]; ++data.l;\n\tz.above = !(f & 0x40);\n\tz.left  = !(f & 0x80);\n\t/* TODO: pull flags */\n\tdata.l += 18;\n\tz.name = parse_XLSBCodeName(data, length - 19);\n\treturn z;\n}\nfunction write_BrtWsProp(str, outl, o) {\n\tif(o == null) o = new_buf(84+4*str.length);\n\tvar f = 0xC0;\n\tif(outl) {\n\t\tif(outl.above) f &= ~0x40;\n\t\tif(outl.left)  f &= ~0x80;\n\t}\n\to.write_shift(1, f);\n\tfor(var i = 1; i < 3; ++i) o.write_shift(1,0);\n\twrite_BrtColor({auto:1}, o);\n\to.write_shift(-4,-1);\n\to.write_shift(-4,-1);\n\twrite_XLSBCodeName(str, o);\n\treturn o.slice(0, o.l);\n}\n\n/* [MS-XLSB] 2.4.306 BrtCellBlank */\nfunction parse_BrtCellBlank(data) {\n\tvar cell = parse_XLSBCell(data);\n\treturn [cell];\n}\nfunction write_BrtCellBlank(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\treturn write_XLSBCell(ncell, o);\n}\nfunction parse_BrtShortBlank(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\treturn [cell];\n}\nfunction write_BrtShortBlank(cell, ncell, o) {\n\tif(o == null) o = new_buf(4);\n\treturn write_XLSBShortCell(ncell, o);\n}\n\n/* [MS-XLSB] 2.4.307 BrtCellBool */\nfunction parse_BrtCellBool(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar fBool = data.read_shift(1);\n\treturn [cell, fBool, 'b'];\n}\nfunction write_BrtCellBool(cell, ncell, o) {\n\tif(o == null) o = new_buf(9);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(1, cell.v ? 1 : 0);\n\treturn o;\n}\nfunction parse_BrtShortBool(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar fBool = data.read_shift(1);\n\treturn [cell, fBool, 'b'];\n}\nfunction write_BrtShortBool(cell, ncell, o) {\n\tif(o == null) o = new_buf(5);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(1, cell.v ? 1 : 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.308 BrtCellError */\nfunction parse_BrtCellError(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar bError = data.read_shift(1);\n\treturn [cell, bError, 'e'];\n}\nfunction write_BrtCellError(cell, ncell, o) {\n\tif(o == null) o = new_buf(9);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(1, cell.v);\n\treturn o;\n}\nfunction parse_BrtShortError(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar bError = data.read_shift(1);\n\treturn [cell, bError, 'e'];\n}\nfunction write_BrtShortError(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(1, cell.v);\n\to.write_shift(2, 0);\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n\n/* [MS-XLSB] 2.4.311 BrtCellIsst */\nfunction parse_BrtCellIsst(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar isst = data.read_shift(4);\n\treturn [cell, isst, 's'];\n}\nfunction write_BrtCellIsst(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(4, ncell.v);\n\treturn o;\n}\nfunction parse_BrtShortIsst(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar isst = data.read_shift(4);\n\treturn [cell, isst, 's'];\n}\nfunction write_BrtShortIsst(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(4, ncell.v);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.313 BrtCellReal */\nfunction parse_BrtCellReal(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_Xnum(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtCellReal(cell, ncell, o) {\n\tif(o == null) o = new_buf(16);\n\twrite_XLSBCell(ncell, o);\n\twrite_Xnum(cell.v, o);\n\treturn o;\n}\nfunction parse_BrtShortReal(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_Xnum(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtShortReal(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_Xnum(cell.v, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.314 BrtCellRk */\nfunction parse_BrtCellRk(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_RkNumber(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtCellRk(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBCell(ncell, o);\n\twrite_RkNumber(cell.v, o);\n\treturn o;\n}\nfunction parse_BrtShortRk(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_RkNumber(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtShortRk(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_RkNumber(cell.v, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.323 BrtCellRString */\nfunction parse_BrtCellRString(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_RichStr(data);\n\treturn [cell, value, 'is'];\n}\n\n/* [MS-XLSB] 2.4.317 BrtCellSt */\nfunction parse_BrtCellSt(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_XLWideString(data);\n\treturn [cell, value, 'str'];\n}\nfunction write_BrtCellSt(cell, ncell, o) {\n\tif(o == null) o = new_buf(12 + 4 * cell.v.length);\n\twrite_XLSBCell(ncell, o);\n\twrite_XLWideString(cell.v, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\nfunction parse_BrtShortSt(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_XLWideString(data);\n\treturn [cell, value, 'str'];\n}\nfunction write_BrtShortSt(cell, ncell, o) {\n\tif(o == null) o = new_buf(8 + 4 * cell.v.length);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_XLWideString(cell.v, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.653 BrtFmlaBool */\nfunction parse_BrtFmlaBool(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = data.read_shift(1);\n\tvar o = [cell, value, 'b'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.654 BrtFmlaError */\nfunction parse_BrtFmlaError(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = data.read_shift(1);\n\tvar o = [cell, value, 'e'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.655 BrtFmlaNum */\nfunction parse_BrtFmlaNum(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = parse_Xnum(data);\n\tvar o = [cell, value, 'n'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.656 BrtFmlaString */\nfunction parse_BrtFmlaString(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = parse_XLWideString(data);\n\tvar o = [cell, value, 'str'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.682 BrtMergeCell */\nvar parse_BrtMergeCell = parse_UncheckedRfX;\nvar write_BrtMergeCell = write_UncheckedRfX;\n/* [MS-XLSB] 2.4.107 BrtBeginMergeCells */\nfunction write_BrtBeginMergeCells(cnt, o) {\n\tif(o == null) o = new_buf(4);\n\to.write_shift(4, cnt);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.662 BrtHLink */\nfunction parse_BrtHLink(data, length/*::, opts*/) {\n\tvar end = data.l + length;\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tvar relId = parse_XLNullableWideString(data);\n\tvar loc = parse_XLWideString(data);\n\tvar tooltip = parse_XLWideString(data);\n\tvar display = parse_XLWideString(data);\n\tdata.l = end;\n\tvar o = ({rfx:rfx, relId:relId, loc:loc, display:display}/*:any*/);\n\tif(tooltip) o.Tooltip = tooltip;\n\treturn o;\n}\nfunction write_BrtHLink(l, rId) {\n\tvar o = new_buf(50+4*(l[1].Target.length + (l[1].Tooltip || \"\").length));\n\twrite_UncheckedRfX({s:decode_cell(l[0]), e:decode_cell(l[0])}, o);\n\twrite_RelID(\"rId\" + rId, o);\n\tvar locidx = l[1].Target.indexOf(\"#\");\n\tvar loc = locidx == -1 ? \"\" : l[1].Target.slice(locidx+1);\n\twrite_XLWideString(loc || \"\", o);\n\twrite_XLWideString(l[1].Tooltip || \"\", o);\n\twrite_XLWideString(\"\", o);\n\treturn o.slice(0, o.l);\n}\n\n/* [MS-XLSB] 2.4.692 BrtPane */\nfunction parse_BrtPane(/*data, length, opts*/) {\n}\n\n/* [MS-XLSB] 2.4.6 BrtArrFmla */\nfunction parse_BrtArrFmla(data, length, opts) {\n\tvar end = data.l + length;\n\tvar rfx = parse_RfX(data, 16);\n\tvar fAlwaysCalc = data.read_shift(1);\n\tvar o = [rfx]; o[2] = fAlwaysCalc;\n\tif(opts.cellFormula) {\n\t\tvar formula = parse_XLSBArrayParsedFormula(data, end - data.l, opts);\n\t\to[1] = formula;\n\t} else data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.750 BrtShrFmla */\nfunction parse_BrtShrFmla(data, length, opts) {\n\tvar end = data.l + length;\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tvar o = [rfx];\n\tif(opts.cellFormula) {\n\t\tvar formula = parse_XLSBSharedParsedFormula(data, end - data.l, opts);\n\t\to[1] = formula;\n\t\tdata.l = end;\n\t} else data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.323 BrtColInfo */\n/* TODO: once XLS ColInfo is set, combine the functions */\nfunction write_BrtColInfo(C/*:number*/, col, o) {\n\tif(o == null) o = new_buf(18);\n\tvar p = col_obj_w(C, col);\n\to.write_shift(-4, C);\n\to.write_shift(-4, C);\n\to.write_shift(4, (p.width || 10) * 256);\n\to.write_shift(4, 0/*ixfe*/); // style\n\tvar flags = 0;\n\tif(col.hidden) flags |= 0x01;\n\tif(typeof p.width == 'number') flags |= 0x02;\n\tif(col.level) flags |= (col.level << 8);\n\to.write_shift(2, flags); // bit flag\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.678 BrtMargins */\nvar BrtMarginKeys = [\"left\",\"right\",\"top\",\"bottom\",\"header\",\"footer\"];\nfunction parse_BrtMargins(data/*::, length, opts*/)/*:Margins*/ {\n\tvar margins = ({}/*:any*/);\n\tBrtMarginKeys.forEach(function(k) { margins[k] = parse_Xnum(data, 8); });\n\treturn margins;\n}\nfunction write_BrtMargins(margins/*:Margins*/, o) {\n\tif(o == null) o = new_buf(6*8);\n\tdefault_margins(margins);\n\tBrtMarginKeys.forEach(function(k) { write_Xnum((margins/*:any*/)[k], o); });\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.299 BrtBeginWsView */\nfunction parse_BrtBeginWsView(data/*::, length, opts*/) {\n\tvar f = data.read_shift(2);\n\tdata.l += 28;\n\treturn { RTL: f & 0x20 };\n}\nfunction write_BrtBeginWsView(ws, Workbook, o) {\n\tif(o == null) o = new_buf(30);\n\tvar f = 0x39c;\n\tif((((Workbook||{}).Views||[])[0]||{}).RTL) f |= 0x20;\n\to.write_shift(2, f); // bit flag\n\to.write_shift(4, 0);\n\to.write_shift(4, 0); // view first row\n\to.write_shift(4, 0); // view first col\n\to.write_shift(1, 0); // gridline color ICV\n\to.write_shift(1, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 100); // zoom scale\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(4, 0); // workbook view id\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.309 BrtCellIgnoreEC */\nfunction write_BrtCellIgnoreEC(ref) {\n\tvar o = new_buf(24);\n\to.write_shift(4, 4);\n\to.write_shift(4, 1);\n\twrite_UncheckedRfX(ref, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.748 BrtSheetProtection */\nfunction write_BrtSheetProtection(sp, o) {\n\tif(o == null) o = new_buf(16*4+2);\n\to.write_shift(2, sp.password ? crypto_CreatePasswordVerifier_Method1(sp.password) : 0);\n\to.write_shift(4, 1); // this record should not be written if no protection\n\t[\n\t\t[\"objects\",             false], // fObjects\n\t\t[\"scenarios\",           false], // fScenarios\n\t\t[\"formatCells\",          true], // fFormatCells\n\t\t[\"formatColumns\",        true], // fFormatColumns\n\t\t[\"formatRows\",           true], // fFormatRows\n\t\t[\"insertColumns\",        true], // fInsertColumns\n\t\t[\"insertRows\",           true], // fInsertRows\n\t\t[\"insertHyperlinks\",     true], // fInsertHyperlinks\n\t\t[\"deleteColumns\",        true], // fDeleteColumns\n\t\t[\"deleteRows\",           true], // fDeleteRows\n\t\t[\"selectLockedCells\",   false], // fSelLockedCells\n\t\t[\"sort\",                 true], // fSort\n\t\t[\"autoFilter\",           true], // fAutoFilter\n\t\t[\"pivotTables\",          true], // fPivotTables\n\t\t[\"selectUnlockedCells\", false]  // fSelUnlockedCells\n\t].forEach(function(n) {\n\t\t/*:: if(o == null) throw \"unreachable\"; */\n\t\tif(n[1]) o.write_shift(4, sp[n[0]] != null && !sp[n[0]] ? 1 : 0);\n\t\telse      o.write_shift(4, sp[n[0]] != null && sp[n[0]] ? 0 : 1);\n\t});\n\treturn o;\n}\n\nfunction parse_BrtDVal(/*data, length, opts*/) {\n}\nfunction parse_BrtDVal14(/*data, length, opts*/) {\n}\n/* [MS-XLSB] 2.1.7.61 Worksheet */\nfunction parse_ws_bin(data, _opts, idx, rels, wb/*:WBWBProps*/, themes, styles)/*:Worksheet*/ {\n\tif(!data) return data;\n\tvar opts = _opts || {};\n\tif(!rels) rels = {'!id':{}};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar s/*:Worksheet*/ = (opts.dense ? [] : {});\n\n\tvar ref;\n\tvar refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\n\tvar state/*:Array<string>*/ = [];\n\tvar pass = false, end = false;\n\tvar row, p, cf, R, C, addr, sstr, rr, cell/*:Cell*/;\n\tvar merges/*:Array<Range>*/ = [];\n\topts.biff = 12;\n\topts['!row'] = 0;\n\n\tvar ai = 0, af = false;\n\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar sharedf = {};\n\tvar supbooks = opts.supbooks || /*::(*/wb/*:: :any)*/.supbooks || ([[]]/*:any*/);\n\tsupbooks.sharedf = sharedf;\n\tsupbooks.arrayf = arrayf;\n\tsupbooks.SheetNames = wb.SheetNames || wb.Sheets.map(function(x) { return x.name; });\n\tif(!opts.supbooks) {\n\t\topts.supbooks = supbooks;\n\t\tif(wb.Names) for(var i = 0; i < wb.Names.length; ++i) supbooks[0][i+1] = wb.Names[i];\n\t}\n\n\tvar colinfo/*:Array<ColInfo>*/ = [], rowinfo/*:Array<RowInfo>*/ = [];\n\tvar seencol = false;\n\n\tXLSBRecordEnum[0x0010] = { n:\"BrtShortReal\", f:parse_BrtShortReal };\n\n\tvar cm, vm;\n\n\trecordhopper(data, function ws_parse(val, RR, RT) {\n\t\tif(end) return;\n\t\tswitch(RT) {\n\t\t\tcase 0x0094: /* 'BrtWsDim' */\n\t\t\t\tref = val; break;\n\t\t\tcase 0x0000: /* 'BrtRowHdr' */\n\t\t\t\trow = val;\n\t\t\t\tif(opts.sheetRows && opts.sheetRows <= row.r) end=true;\n\t\t\t\trr = encode_row(R = row.r);\n\t\t\t\topts['!row'] = row.r;\n\t\t\t\tif(val.hidden || val.hpt || val.level != null) {\n\t\t\t\t\tif(val.hpt) val.hpx = pt2px(val.hpt);\n\t\t\t\t\trowinfo[val.r] = val;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0002: /* 'BrtCellRk' */\n\t\t\tcase 0x0003: /* 'BrtCellError' */\n\t\t\tcase 0x0004: /* 'BrtCellBool' */\n\t\t\tcase 0x0005: /* 'BrtCellReal' */\n\t\t\tcase 0x0006: /* 'BrtCellSt' */\n\t\t\tcase 0x0007: /* 'BrtCellIsst' */\n\t\t\tcase 0x0008: /* 'BrtFmlaString' */\n\t\t\tcase 0x0009: /* 'BrtFmlaNum' */\n\t\t\tcase 0x000A: /* 'BrtFmlaBool' */\n\t\t\tcase 0x000B: /* 'BrtFmlaError' */\n\t\t\tcase 0x000D: /* 'BrtShortRk' */\n\t\t\tcase 0x000E: /* 'BrtShortError' */\n\t\t\tcase 0x000F: /* 'BrtShortBool' */\n\t\t\tcase 0x0010: /* 'BrtShortReal' */\n\t\t\tcase 0x0011: /* 'BrtShortSt' */\n\t\t\tcase 0x0012: /* 'BrtShortIsst' */\n\t\t\tcase 0x003E: /* 'BrtCellRString' */\n\t\t\t\tp = ({t:val[2]}/*:any*/);\n\t\t\t\tswitch(val[2]) {\n\t\t\t\t\tcase 'n': p.v = val[1]; break;\n\t\t\t\t\tcase 's': sstr = strs[val[1]]; p.v = sstr.t; p.r = sstr.r; break;\n\t\t\t\t\tcase 'b': p.v = val[1] ? true : false; break;\n\t\t\t\t\tcase 'e': p.v = val[1]; if(opts.cellText !== false) p.w = BErr[p.v]; break;\n\t\t\t\t\tcase 'str': p.t = 's'; p.v = val[1]; break;\n\t\t\t\t\tcase 'is': p.t = 's'; p.v = val[1].t; break;\n\t\t\t\t}\n\t\t\t\tif((cf = styles.CellXf[val[0].iStyleRef])) safe_format(p,cf.numFmtId,null,opts, themes, styles);\n\t\t\t\tC = val[0].c == -1 ? C + 1 : val[0].c;\n\t\t\t\tif(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; }\n\t\t\t\telse s[encode_col(C) + rr] = p;\n\t\t\t\tif(opts.cellFormula) {\n\t\t\t\t\taf = false;\n\t\t\t\t\tfor(ai = 0; ai < arrayf.length; ++ai) {\n\t\t\t\t\t\tvar aii = arrayf[ai];\n\t\t\t\t\t\tif(row.r >= aii[0].s.r && row.r <= aii[0].e.r)\n\t\t\t\t\t\t\tif(C >= aii[0].s.c && C <= aii[0].e.c) {\n\t\t\t\t\t\t\t\tp.F = encode_range(aii[0]); af = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(!af && val.length > 3) p.f = val[3];\n\t\t\t\t}\n\n\t\t\t\tif(refguess.s.r > row.r) refguess.s.r = row.r;\n\t\t\t\tif(refguess.s.c > C) refguess.s.c = C;\n\t\t\t\tif(refguess.e.r < row.r) refguess.e.r = row.r;\n\t\t\t\tif(refguess.e.c < C) refguess.e.c = C;\n\t\t\t\tif(opts.cellDates && cf && p.t == 'n' && fmt_is_date(table_fmt[cf.numFmtId])) {\n\t\t\t\t\tvar _d = SSF_parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t\t\t\t}\n\t\t\t\tif(cm) {\n\t\t\t\t\tif(cm.type == 'XLDAPR') p.D = true;\n\t\t\t\t\tcm = void 0;\n\t\t\t\t}\n\t\t\t\tif(vm) vm = void 0;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0001: /* 'BrtCellBlank' */\n\t\t\tcase 0x000C: /* 'BrtShortBlank' */\n\t\t\t\tif(!opts.sheetStubs || pass) break;\n\t\t\t\tp = ({t:'z',v:void 0}/*:any*/);\n\t\t\t\tC = val[0].c == -1 ? C + 1 : val[0].c;\n\t\t\t\tif(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; }\n\t\t\t\telse s[encode_col(C) + rr] = p;\n\t\t\t\tif(refguess.s.r > row.r) refguess.s.r = row.r;\n\t\t\t\tif(refguess.s.c > C) refguess.s.c = C;\n\t\t\t\tif(refguess.e.r < row.r) refguess.e.r = row.r;\n\t\t\t\tif(refguess.e.c < C) refguess.e.c = C;\n\t\t\t\tif(cm) {\n\t\t\t\t\tif(cm.type == 'XLDAPR') p.D = true;\n\t\t\t\t\tcm = void 0;\n\t\t\t\t}\n\t\t\t\tif(vm) vm = void 0;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x00B0: /* 'BrtMergeCell' */\n\t\t\t\tmerges.push(val); break;\n\n\t\t\tcase 0x0031: { /* 'BrtCellMeta' */\n\t\t\t\tcm = ((opts.xlmeta||{}).Cell||[])[val-1];\n\t\t\t} break;\n\n\t\t\tcase 0x01EE: /* 'BrtHLink' */\n\t\t\t\tvar rel = rels['!id'][val.relId];\n\t\t\t\tif(rel) {\n\t\t\t\t\tval.Target = rel.Target;\n\t\t\t\t\tif(val.loc) val.Target += \"#\"+val.loc;\n\t\t\t\t\tval.Rel = rel;\n\t\t\t\t} else if(val.relId == '') {\n\t\t\t\t\tval.Target = \"#\" + val.loc;\n\t\t\t\t}\n\t\t\t\tfor(R=val.rfx.s.r;R<=val.rfx.e.r;++R) for(C=val.rfx.s.c;C<=val.rfx.e.c;++C) {\n\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\tif(!s[R]) s[R] = [];\n\t\t\t\t\t\tif(!s[R][C]) s[R][C] = {t:'z',v:undefined};\n\t\t\t\t\t\ts[R][C].l = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\taddr = encode_cell({c:C,r:R});\n\t\t\t\t\t\tif(!s[addr]) s[addr] = {t:'z',v:undefined};\n\t\t\t\t\t\ts[addr].l = val;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01AA: /* 'BrtArrFmla' */\n\t\t\t\tif(!opts.cellFormula) break;\n\t\t\t\tarrayf.push(val);\n\t\t\t\tcell = ((opts.dense ? s[R][C] : s[encode_col(C) + rr])/*:any*/);\n\t\t\t\tcell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts);\n\t\t\t\tcell.F = encode_range(val[0]);\n\t\t\t\tbreak;\n\t\t\tcase 0x01AB: /* 'BrtShrFmla' */\n\t\t\t\tif(!opts.cellFormula) break;\n\t\t\t\tsharedf[encode_cell(val[0].s)] = val[1];\n\t\t\t\tcell = (opts.dense ? s[R][C] : s[encode_col(C) + rr]);\n\t\t\t\tcell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts);\n\t\t\t\tbreak;\n\n\t\t\t/* identical to 'ColInfo' in XLS */\n\t\t\tcase 0x003C: /* 'BrtColInfo' */\n\t\t\t\tif(!opts.cellStyles) break;\n\t\t\t\twhile(val.e >= val.s) {\n\t\t\t\t\tcolinfo[val.e--] = { width: val.w/256, hidden: !!(val.flags & 0x01), level: val.level };\n\t\t\t\t\tif(!seencol) { seencol = true; find_mdw_colw(val.w/256); }\n\t\t\t\t\tprocess_col(colinfo[val.e+1]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x00A1: /* 'BrtBeginAFilter' */\n\t\t\t\ts['!autofilter'] = { ref:encode_range(val) };\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01DC: /* 'BrtMargins' */\n\t\t\t\ts['!margins'] = val;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0093: /* 'BrtWsProp' */\n\t\t\t\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\t\t\t\tif(val.name) wb.Sheets[idx].CodeName = val.name;\n\t\t\t\tif(val.above || val.left) s['!outline'] = { above: val.above, left: val.left };\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0089: /* 'BrtBeginWsView' */\n\t\t\t\tif(!wb.Views) wb.Views = [{}];\n\t\t\t\tif(!wb.Views[0]) wb.Views[0] = {};\n\t\t\t\tif(val.RTL) wb.Views[0].RTL = true;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01E5: /* 'BrtWsFmtInfo' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0040: /* 'BrtDVal' */\n\t\t\tcase 0x041D: /* 'BrtDVal14' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0097: /* 'BrtPane' */\n\t\t\t\tbreak;\n\t\t\tcase 0x0098: /* 'BrtSel' */\n\t\t\tcase 0x00AF: /* 'BrtAFilterDateGroupItem' */\n\t\t\tcase 0x0284: /* 'BrtActiveX' */\n\t\t\tcase 0x0271: /* 'BrtBigName' */\n\t\t\tcase 0x0232: /* 'BrtBkHim' */\n\t\t\tcase 0x018C: /* 'BrtBrk' */\n\t\t\tcase 0x0458: /* 'BrtCFIcon' */\n\t\t\tcase 0x047A: /* 'BrtCFRuleExt' */\n\t\t\tcase 0x01D7: /* 'BrtCFVO' */\n\t\t\tcase 0x041A: /* 'BrtCFVO14' */\n\t\t\tcase 0x0289: /* 'BrtCellIgnoreEC' */\n\t\t\tcase 0x0451: /* 'BrtCellIgnoreEC14' */\n\t\t\tcase 0x024D: /* 'BrtCellSmartTagProperty' */\n\t\t\tcase 0x025F: /* 'BrtCellWatch' */\n\t\t\tcase 0x0234: /* 'BrtColor' */\n\t\t\tcase 0x041F: /* 'BrtColor14' */\n\t\t\tcase 0x00A8: /* 'BrtColorFilter' */\n\t\t\tcase 0x00AE: /* 'BrtCustomFilter' */\n\t\t\tcase 0x049C: /* 'BrtCustomFilter14' */\n\t\t\tcase 0x01F3: /* 'BrtDRef' */\n\t\t\tcase 0x01FB: /* 'BrtDXF' */\n\t\t\tcase 0x0226: /* 'BrtDrawing' */\n\t\t\tcase 0x00AB: /* 'BrtDynamicFilter' */\n\t\t\tcase 0x00A7: /* 'BrtFilter' */\n\t\t\tcase 0x0499: /* 'BrtFilter14' */\n\t\t\tcase 0x00A9: /* 'BrtIconFilter' */\n\t\t\tcase 0x049D: /* 'BrtIconFilter14' */\n\t\t\tcase 0x0227: /* 'BrtLegacyDrawing' */\n\t\t\tcase 0x0228: /* 'BrtLegacyDrawingHF' */\n\t\t\tcase 0x0295: /* 'BrtListPart' */\n\t\t\tcase 0x027F: /* 'BrtOleObject' */\n\t\t\tcase 0x01DE: /* 'BrtPageSetup' */\n\t\t\tcase 0x0219: /* 'BrtPhoneticInfo' */\n\t\t\tcase 0x01DD: /* 'BrtPrintOptions' */\n\t\t\tcase 0x0218: /* 'BrtRangeProtection' */\n\t\t\tcase 0x044F: /* 'BrtRangeProtection14' */\n\t\t\tcase 0x02A8: /* 'BrtRangeProtectionIso' */\n\t\t\tcase 0x0450: /* 'BrtRangeProtectionIso14' */\n\t\t\tcase 0x0400: /* 'BrtRwDescent' */\n\t\t\tcase 0x0297: /* 'BrtSheetCalcProp' */\n\t\t\tcase 0x0217: /* 'BrtSheetProtection' */\n\t\t\tcase 0x02A6: /* 'BrtSheetProtectionIso' */\n\t\t\tcase 0x01F8: /* 'BrtSlc' */\n\t\t\tcase 0x0413: /* 'BrtSparkline' */\n\t\t\tcase 0x01AC: /* 'BrtTable' */\n\t\t\tcase 0x00AA: /* 'BrtTop10Filter' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\tcase 0x0032: /* 'BrtValueMeta' */\n\t\t\tcase 0x0816: /* 'BrtWebExtension' */\n\t\t\tcase 0x0415: /* 'BrtWsFmtInfoEx14' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(RR.T){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tdelete opts.supbooks;\n\tdelete opts['!row'];\n\n\tif(!s[\"!ref\"] && (refguess.s.r < 2000000 || ref && (ref.e.r > 0 || ref.e.c > 0 || ref.s.r > 0 || ref.s.c > 0))) s[\"!ref\"] = encode_range(ref || refguess);\n\tif(opts.sheetRows && s[\"!ref\"]) {\n\t\tvar tmpref = safe_decode_range(s[\"!ref\"]);\n\t\tif(opts.sheetRows <= +tmpref.e.r) {\n\t\t\ttmpref.e.r = opts.sheetRows - 1;\n\t\t\tif(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r;\n\t\t\tif(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r;\n\t\t\tif(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c;\n\t\t\tif(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c;\n\t\t\ts[\"!fullref\"] = s[\"!ref\"];\n\t\t\ts[\"!ref\"] = encode_range(tmpref);\n\t\t}\n\t}\n\tif(merges.length > 0) s[\"!merges\"] = merges;\n\tif(colinfo.length > 0) s[\"!cols\"] = colinfo;\n\tif(rowinfo.length > 0) s[\"!rows\"] = rowinfo;\n\treturn s;\n}\n\n/* TODO: something useful -- this is a stub */\nfunction write_ws_bin_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:number*/, opts, ws/*:Worksheet*/, last_seen/*:boolean*/)/*:boolean*/ {\n\tif(cell.v === undefined) return false;\n\tvar vv = \"\";\n\tswitch(cell.t) {\n\t\tcase 'b': vv = cell.v ? \"1\" : \"0\"; break;\n\t\tcase 'd': // no BrtCellDate :(\n\t\t\tcell = dup(cell);\n\t\t\tcell.z = cell.z || table_fmt[14];\n\t\t\tcell.v = datenum(parseDate(cell.v)); cell.t = 'n';\n\t\t\tbreak;\n\t\t/* falls through */\n\t\tcase 'n': case 'e': vv = ''+cell.v; break;\n\t\tdefault: vv = cell.v; break;\n\t}\n\tvar o/*:any*/ = ({r:R, c:C}/*:any*/);\n\t/* TODO: cell style */\n\to.s = get_cell_style(opts.cellXfs, cell, opts);\n\tif(cell.l) ws['!links'].push([encode_cell(o), cell.l]);\n\tif(cell.c) ws['!comments'].push([encode_cell(o), cell.c]);\n\tswitch(cell.t) {\n\t\tcase 's': case 'str':\n\t\t\tif(opts.bookSST) {\n\t\t\t\tvv = get_sst_id(opts.Strings, (cell.v/*:any*/), opts.revStrings);\n\t\t\t\to.t = \"s\"; o.v = vv;\n\t\t\t\tif(last_seen) write_record(ba, 0x0012 /* BrtShortIsst */, write_BrtShortIsst(cell, o));\n\t\t\t\telse write_record(ba, 0x0007 /* BrtCellIsst */, write_BrtCellIsst(cell, o));\n\t\t\t} else {\n\t\t\t\to.t = \"str\";\n\t\t\t\tif(last_seen) write_record(ba, 0x0011 /* BrtShortSt */, write_BrtShortSt(cell, o));\n\t\t\t\telse write_record(ba, 0x0006 /* BrtCellSt */, write_BrtCellSt(cell, o));\n\t\t\t}\n\t\t\treturn true;\n\t\tcase 'n':\n\t\t\t/* TODO: determine threshold for Real vs RK */\n\t\t\tif(cell.v == (cell.v | 0) && cell.v > -1000 && cell.v < 1000) {\n\t\t\t\tif(last_seen) write_record(ba, 0x000D /* BrtShortRk */, write_BrtShortRk(cell, o));\n\t\t\t\telse write_record(ba, 0x0002 /* BrtCellRk */, write_BrtCellRk(cell, o));\n\t\t\t} else {\n\t\t\t\tif(last_seen) write_record(ba, 0x0010 /* BrtShortReal */, write_BrtShortReal(cell, o));\n\t\t\t\telse write_record(ba, 0x0005 /* BrtCellReal */, write_BrtCellReal(cell, o));\n\t\t\t} return true;\n\t\tcase 'b':\n\t\t\to.t = \"b\";\n\t\t\tif(last_seen) write_record(ba, 0x000F /* BrtShortBool */, write_BrtShortBool(cell, o));\n\t\t\telse write_record(ba, 0x0004 /* BrtCellBool */, write_BrtCellBool(cell, o));\n\t\t\treturn true;\n\t\tcase 'e':\n\t\t\to.t = \"e\";\n\t\t\tif(last_seen) write_record(ba, 0x000E /* BrtShortError */, write_BrtShortError(cell, o));\n\t\t\telse write_record(ba, 0x0003 /* BrtCellError */, write_BrtCellError(cell, o));\n\t\t\treturn true;\n\t}\n\tif(last_seen) write_record(ba, 0x000C /* BrtShortBlank */, write_BrtShortBlank(cell, o));\n\telse write_record(ba, 0x0001 /* BrtCellBlank */, write_BrtCellBlank(cell, o));\n\treturn true;\n}\n\nfunction write_CELLTABLE(ba, ws/*:Worksheet*/, idx/*:number*/, opts/*::, wb:Workbook*/) {\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\"), ref, rr = \"\", cols/*:Array<string>*/ = [];\n\twrite_record(ba, 0x0091 /* BrtBeginSheetData */);\n\tvar dense = Array.isArray(ws);\n\tvar cap = range.e.r;\n\tif(ws['!rows']) cap = Math.max(range.e.r, ws['!rows'].length - 1);\n\tfor(var R = range.s.r; R <= cap; ++R) {\n\t\trr = encode_row(R);\n\t\t/* [ACCELLTABLE] */\n\t\t/* BrtRowHdr */\n\t\twrite_row_header(ba, ws, range, R);\n\t\tvar last_seen = false;\n\t\tif(R <= range.e.r) for(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t/* *16384CELL */\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\tif(!cell) { last_seen = false; continue; }\n\t\t\t/* write cell */\n\t\t\tlast_seen = write_ws_bin_cell(ba, cell, R, C, opts, ws, last_seen);\n\t\t}\n\t}\n\twrite_record(ba, 0x0092 /* BrtEndSheetData */);\n}\n\nfunction write_MERGECELLS(ba, ws/*:Worksheet*/) {\n\tif(!ws || !ws['!merges']) return;\n\twrite_record(ba, 0x00B1 /* BrtBeginMergeCells */, write_BrtBeginMergeCells(ws['!merges'].length));\n\tws['!merges'].forEach(function(m) { write_record(ba, 0x00B0 /* BrtMergeCell */, write_BrtMergeCell(m)); });\n\twrite_record(ba, 0x00B2 /* BrtEndMergeCells */);\n}\n\nfunction write_COLINFOS(ba, ws/*:Worksheet*//*::, idx:number, opts, wb:Workbook*/) {\n\tif(!ws || !ws['!cols']) return;\n\twrite_record(ba, 0x0186 /* BrtBeginColInfos */);\n\tws['!cols'].forEach(function(m, i) { if(m) write_record(ba, 0x003C /* 'BrtColInfo' */, write_BrtColInfo(i, m)); });\n\twrite_record(ba, 0x0187 /* BrtEndColInfos */);\n}\n\nfunction write_IGNOREECS(ba, ws/*:Worksheet*/) {\n\tif(!ws || !ws['!ref']) return;\n\twrite_record(ba, 0x0288 /* BrtBeginCellIgnoreECs */);\n\twrite_record(ba, 0x0289 /* BrtCellIgnoreEC */, write_BrtCellIgnoreEC(safe_decode_range(ws['!ref'])));\n\twrite_record(ba, 0x028A /* BrtEndCellIgnoreECs */);\n}\n\nfunction write_HLINKS(ba, ws/*:Worksheet*/, rels) {\n\t/* *BrtHLink */\n\tws['!links'].forEach(function(l) {\n\t\tif(!l[1].Target) return;\n\t\tvar rId = add_rels(rels, -1, l[1].Target.replace(/#.*$/, \"\"), RELS.HLINK);\n\t\twrite_record(ba, 0x01EE /* BrtHLink */, write_BrtHLink(l, rId));\n\t});\n\tdelete ws['!links'];\n}\nfunction write_LEGACYDRAWING(ba, ws/*:Worksheet*/, idx/*:number*/, rels) {\n\t/* [BrtLegacyDrawing] */\n\tif(ws['!comments'].length > 0) {\n\t\tvar rId = add_rels(rels, -1, \"../drawings/vmlDrawing\" + (idx+1) + \".vml\", RELS.VML);\n\t\twrite_record(ba, 0x0227 /* BrtLegacyDrawing */, write_RelID(\"rId\" + rId));\n\t\tws['!legacy'] = rId;\n\t}\n}\n\nfunction write_AUTOFILTER(ba, ws, wb, idx) {\n\tif(!ws['!autofilter']) return;\n\tvar data = ws['!autofilter'];\n\tvar ref = typeof data.ref === \"string\" ? data.ref : encode_range(data.ref);\n\n\t/* Update FilterDatabase defined name for the worksheet */\n\tif(!wb.Workbook) wb.Workbook = ({Sheets:[]}/*:any*/);\n\tif(!wb.Workbook.Names) wb.Workbook.Names = [];\n\tvar names/*: Array<any> */ = wb.Workbook.Names;\n\tvar range = decode_range(ref);\n\tif(range.s.r == range.e.r) { range.e.r = decode_range(ws[\"!ref\"]).e.r; ref = encode_range(range); }\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar name = names[i];\n\t\tif(name.Name != '_xlnm._FilterDatabase') continue;\n\t\tif(name.Sheet != idx) continue;\n\t\tname.Ref = \"'\" + wb.SheetNames[idx] + \"'!\" + ref; break;\n\t}\n\tif(i == names.length) names.push({ Name: '_xlnm._FilterDatabase', Sheet: idx, Ref: \"'\" + wb.SheetNames[idx] + \"'!\" + ref  });\n\n\twrite_record(ba, 0x00A1 /* BrtBeginAFilter */, write_UncheckedRfX(safe_decode_range(ref)));\n\t/* *FILTERCOLUMN */\n\t/* [SORTSTATE] */\n\t/* BrtEndAFilter */\n\twrite_record(ba, 0x00A2 /* BrtEndAFilter */);\n}\n\nfunction write_WSVIEWS2(ba, ws, Workbook) {\n\twrite_record(ba, 0x0085 /* BrtBeginWsViews */);\n\t{ /* 1*WSVIEW2 */\n\t\t/* [ACUID] */\n\t\twrite_record(ba, 0x0089 /* BrtBeginWsView */, write_BrtBeginWsView(ws, Workbook));\n\t\t/* [BrtPane] */\n\t\t/* *4BrtSel */\n\t\t/* *4SXSELECT */\n\t\t/* *FRT */\n\t\twrite_record(ba, 0x008A /* BrtEndWsView */);\n\t}\n\t/* *FRT */\n\twrite_record(ba, 0x0086 /* BrtEndWsViews */);\n}\n\nfunction write_WSFMTINFO(/*::ba, ws*/) {\n\t/* [ACWSFMTINFO] */\n\t// write_record(ba, 0x01E5 /* BrtWsFmtInfo */, write_BrtWsFmtInfo(ws));\n}\n\nfunction write_SHEETPROTECT(ba, ws) {\n\tif(!ws['!protect']) return;\n\t/* [BrtSheetProtectionIso] */\n\twrite_record(ba, 0x0217 /* BrtSheetProtection */, write_BrtSheetProtection(ws['!protect']));\n}\n\nfunction write_ws_bin(idx/*:number*/, opts, wb/*:Workbook*/, rels) {\n\tvar ba = buf_array();\n\tvar s = wb.SheetNames[idx], ws = wb.Sheets[s] || {};\n\tvar c/*:string*/ = s; try { if(wb && wb.Workbook) c = wb.Workbook.Sheets[idx].CodeName || c; } catch(e) {}\n\tvar r = safe_decode_range(ws['!ref'] || \"A1\");\n\tif(r.e.c > 0x3FFF || r.e.r > 0xFFFFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:XFD1048576\");\n\t\tr.e.c = Math.min(r.e.c, 0x3FFF);\n\t\tr.e.r = Math.min(r.e.c, 0xFFFFF);\n\t}\n\tws['!links'] = [];\n\t/* passed back to write_zip and removed there */\n\tws['!comments'] = [];\n\twrite_record(ba, 0x0081 /* BrtBeginSheet */);\n\tif(wb.vbaraw || ws['!outline']) write_record(ba, 0x0093 /* BrtWsProp */, write_BrtWsProp(c, ws['!outline']));\n\twrite_record(ba, 0x0094 /* BrtWsDim */, write_BrtWsDim(r));\n\twrite_WSVIEWS2(ba, ws, wb.Workbook);\n\twrite_WSFMTINFO(ba, ws);\n\twrite_COLINFOS(ba, ws, idx, opts, wb);\n\twrite_CELLTABLE(ba, ws, idx, opts, wb);\n\t/* [BrtSheetCalcProp] */\n\twrite_SHEETPROTECT(ba, ws);\n\t/* *([BrtRangeProtectionIso] BrtRangeProtection) */\n\t/* [SCENMAN] */\n\twrite_AUTOFILTER(ba, ws, wb, idx);\n\t/* [SORTSTATE] */\n\t/* [DCON] */\n\t/* [USERSHVIEWS] */\n\twrite_MERGECELLS(ba, ws);\n\t/* [BrtPhoneticInfo] */\n\t/* *CONDITIONALFORMATTING */\n\t/* [DVALS] */\n\twrite_HLINKS(ba, ws, rels);\n\t/* [BrtPrintOptions] */\n\tif(ws['!margins']) write_record(ba, 0x01DC /* BrtMargins */, write_BrtMargins(ws['!margins']));\n\t/* [BrtPageSetup] */\n\t/* [HEADERFOOTER] */\n\t/* [RWBRK] */\n\t/* [COLBRK] */\n\t/* *BrtBigName */\n\t/* [CELLWATCHES] */\n\tif(!opts || opts.ignoreEC || (opts.ignoreEC == (void 0))) write_IGNOREECS(ba, ws);\n\t/* [SMARTTAGS] */\n\t/* [BrtDrawing] */\n\twrite_LEGACYDRAWING(ba, ws, idx, rels);\n\t/* [BrtLegacyDrawingHF] */\n\t/* [BrtBkHim] */\n\t/* [OLEOBJECTS] */\n\t/* [ACTIVEXCONTROLS] */\n\t/* [WEBPUBITEMS] */\n\t/* [LISTPARTS] */\n\t/* FRTWORKSHEET */\n\twrite_record(ba, 0x0082 /* BrtEndSheet */);\n\treturn ba.end();\n}\nfunction parse_Cache(data/*:string*/)/*:[Array<number|string>, string, ?string]*/ {\n\tvar col/*:Array<number|string>*/ = [];\n\tvar num = data.match(/^<c:numCache>/);\n\tvar f;\n\n\t/* 21.2.2.150 pt CT_NumVal */\n\t(data.match(/<c:pt idx=\"(\\d*)\">(.*?)<\\/c:pt>/mg)||[]).forEach(function(pt) {\n\t\tvar q = pt.match(/<c:pt idx=\"(\\d*?)\"><c:v>(.*)<\\/c:v><\\/c:pt>/);\n\t\tif(!q) return;\n\t\tcol[+q[1]] = num ? +q[2] : q[2];\n\t});\n\n\t/* 21.2.2.71 formatCode CT_Xstring */\n\tvar nf = unescapexml((data.match(/<c:formatCode>([\\s\\S]*?)<\\/c:formatCode>/) || [\"\",\"General\"])[1]);\n\n\t(data.match(/<c:f>(.*?)<\\/c:f>/mg)||[]).forEach(function(F) { f = F.replace(/<.*?>/g,\"\"); });\n\n\treturn [col, nf, f];\n}\n\n/* 21.2 DrawingML - Charts */\nfunction parse_chart(data/*:?string*/, name/*:string*/, opts, rels, wb, csheet) {\n\tvar cs/*:Worksheet*/ = ((csheet || {\"!type\":\"chart\"})/*:any*/);\n\tif(!data) return csheet;\n\t/* 21.2.2.27 chart CT_Chart */\n\n\tvar C = 0, R = 0, col = \"A\";\n\tvar refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\n\t/* 21.2.2.120 numCache CT_NumData */\n\t(data.match(/<c:numCache>[\\s\\S]*?<\\/c:numCache>/gm)||[]).forEach(function(nc) {\n\t\tvar cache = parse_Cache(nc);\n\t\trefguess.s.r = refguess.s.c = 0;\n\t\trefguess.e.c = C;\n\t\tcol = encode_col(C);\n\t\tcache[0].forEach(function(n,i) {\n\t\t\tcs[col + encode_row(i)] = {t:'n', v:n, z:cache[1] };\n\t\t\tR = i;\n\t\t});\n\t\tif(refguess.e.r < R) refguess.e.r = R;\n\t\t++C;\n\t});\n\tif(C > 0) cs[\"!ref\"] = encode_range(refguess);\n\treturn cs;\n}\n/* 18.3 Worksheets also covers Chartsheets */\nfunction parse_cs_xml(data/*:?string*/, opts, idx/*:number*/, rels, wb/*::, themes, styles*/)/*:Worksheet*/ {\n\tif(!data) return data;\n\t/* 18.3.1.12 chartsheet CT_ChartSheet */\n\tif(!rels) rels = {'!id':{}};\n\tvar s = ({'!type':\"chart\", '!drawel':null, '!rel':\"\"}/*:any*/);\n\tvar m;\n\n\t/* 18.3.1.83 sheetPr CT_ChartsheetPr */\n\tvar sheetPr = data.match(sheetprregex);\n\tif(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx);\n\n\t/* 18.3.1.36 drawing CT_Drawing */\n\tif((m = data.match(/drawing r:id=\"(.*?)\"/))) s['!rel'] = m[1];\n\n\tif(rels['!id'][s['!rel']]) s['!drawel'] = rels['!id'][s['!rel']];\n\treturn s;\n}\nfunction write_cs_xml(idx/*:number*/, opts, wb/*:Workbook*/, rels)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('chartsheet', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t'xmlns:r': XMLNS.r\n\t})];\n\to[o.length] = writextag(\"drawing\", null, {\"r:id\": \"rId1\"});\n\tadd_rels(rels, -1, \"../drawings/drawing\" + (idx+1) + \".xml\", RELS.DRAW);\n\tif(o.length>2) { o[o.length] = ('</chartsheet>'); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSB] 2.4.331 BrtCsProp */\nfunction parse_BrtCsProp(data, length/*:number*/) {\n\tdata.l += 10;\n\tvar name = parse_XLWideString(data, length - 10);\n\treturn { name: name };\n}\n\n/* [MS-XLSB] 2.1.7.7 Chart Sheet */\nfunction parse_cs_bin(data, opts, idx/*:number*/, rels, wb/*::, themes, styles*/)/*:Worksheet*/ {\n\tif(!data) return data;\n\tif(!rels) rels = {'!id':{}};\n\tvar s = {'!type':\"chart\", '!drawel':null, '!rel':\"\"};\n\tvar state/*:Array<string>*/ = [];\n\tvar pass = false;\n\trecordhopper(data, function cs_parse(val, R, RT) {\n\t\tswitch(RT) {\n\n\t\t\tcase 0x0226: /* 'BrtDrawing' */\n\t\t\t\ts['!rel'] = val; break;\n\n\t\t\tcase 0x028B: /* 'BrtCsProp' */\n\t\t\t\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\t\t\t\tif(val.name) wb.Sheets[idx].CodeName = val.name;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0232: /* 'BrtBkHim' */\n\t\t\tcase 0x028C: /* 'BrtCsPageSetup' */\n\t\t\tcase 0x029D: /* 'BrtCsProtection' */\n\t\t\tcase 0x02A7: /* 'BrtCsProtectionIso' */\n\t\t\tcase 0x0227: /* 'BrtLegacyDrawing' */\n\t\t\tcase 0x0228: /* 'BrtLegacyDrawingHF' */\n\t\t\tcase 0x01DC: /* 'BrtMargins' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T > 0) state.push(RT);\n\t\t\t\telse if(R.T < 0) state.pop();\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tif(rels['!id'][s['!rel']]) s['!drawel'] = rels['!id'][s['!rel']];\n\treturn s;\n}\nfunction write_cs_bin(/*::idx:number, opts, wb:Workbook, rels*/) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x0081 /* BrtBeginSheet */);\n\t/* [BrtCsProp] */\n\t/* CSVIEWS */\n\t/* [[BrtCsProtectionIso] BrtCsProtection] */\n\t/* [USERCSVIEWS] */\n\t/* [BrtMargins] */\n\t/* [BrtCsPageSetup] */\n\t/* [HEADERFOOTER] */\n\t/* BrtDrawing */\n\t/* [BrtLegacyDrawing] */\n\t/* [BrtLegacyDrawingHF] */\n\t/* [BrtBkHim] */\n\t/* [WEBPUBITEMS] */\n\t/* FRTCHARTSHEET */\n\twrite_record(ba, 0x0082 /* BrtEndSheet */);\n\treturn ba.end();\n}\n/* 18.2.28 (CT_WorkbookProtection) Defaults */\nvar WBPropsDef = [\n\t['allowRefreshQuery',           false, \"bool\"],\n\t['autoCompressPictures',        true,  \"bool\"],\n\t['backupFile',                  false, \"bool\"],\n\t['checkCompatibility',          false, \"bool\"],\n\t['CodeName',                    ''],\n\t['date1904',                    false, \"bool\"],\n\t['defaultThemeVersion',         0,      \"int\"],\n\t['filterPrivacy',               false, \"bool\"],\n\t['hidePivotFieldList',          false, \"bool\"],\n\t['promptedSolutions',           false, \"bool\"],\n\t['publishItems',                false, \"bool\"],\n\t['refreshAllConnections',       false, \"bool\"],\n\t['saveExternalLinkValues',      true,  \"bool\"],\n\t['showBorderUnselectedTables',  true,  \"bool\"],\n\t['showInkAnnotation',           true,  \"bool\"],\n\t['showObjects',                 'all'],\n\t['showPivotChartFilter',        false, \"bool\"],\n\t['updateLinks', 'userSet']\n];\n\n/* 18.2.30 (CT_BookView) Defaults */\nvar WBViewDef = [\n\t['activeTab',                   0,      \"int\"],\n\t['autoFilterDateGrouping',      true,  \"bool\"],\n\t['firstSheet',                  0,      \"int\"],\n\t['minimized',                   false, \"bool\"],\n\t['showHorizontalScroll',        true,  \"bool\"],\n\t['showSheetTabs',               true,  \"bool\"],\n\t['showVerticalScroll',          true,  \"bool\"],\n\t['tabRatio',                    600,    \"int\"],\n\t['visibility',                  'visible']\n\t//window{Height,Width}, {x,y}Window\n];\n\n/* 18.2.19 (CT_Sheet) Defaults */\nvar SheetDef = [\n\t//['state', 'visible']\n];\n\n/* 18.2.2  (CT_CalcPr) Defaults */\nvar CalcPrDef = [\n\t['calcCompleted', 'true'],\n\t['calcMode', 'auto'],\n\t['calcOnSave', 'true'],\n\t['concurrentCalc', 'true'],\n\t['fullCalcOnLoad', 'false'],\n\t['fullPrecision', 'true'],\n\t['iterate', 'false'],\n\t['iterateCount', '100'],\n\t['iterateDelta', '0.001'],\n\t['refMode', 'A1']\n];\n\n/* 18.2.3 (CT_CustomWorkbookView) Defaults */\n/*var CustomWBViewDef = [\n\t['autoUpdate', 'false'],\n\t['changesSavedWin', 'false'],\n\t['includeHiddenRowCol', 'true'],\n\t['includePrintSettings', 'true'],\n\t['maximized', 'false'],\n\t['minimized', 'false'],\n\t['onlySync', 'false'],\n\t['personalView', 'false'],\n\t['showComments', 'commIndicator'],\n\t['showFormulaBar', 'true'],\n\t['showHorizontalScroll', 'true'],\n\t['showObjects', 'all'],\n\t['showSheetTabs', 'true'],\n\t['showStatusbar', 'true'],\n\t['showVerticalScroll', 'true'],\n\t['tabRatio', '600'],\n\t['xWindow', '0'],\n\t['yWindow', '0']\n];*/\n\nfunction push_defaults_array(target, defaults) {\n\tfor(var j = 0; j != target.length; ++j) { var w = target[j];\n\t\tfor(var i=0; i != defaults.length; ++i) { var z = defaults[i];\n\t\t\tif(w[z[0]] == null) w[z[0]] = z[1];\n\t\t\telse switch(z[2]) {\n\t\t\tcase \"bool\": if(typeof w[z[0]] == \"string\") w[z[0]] = parsexmlbool(w[z[0]]); break;\n\t\t\tcase \"int\": if(typeof w[z[0]] == \"string\") w[z[0]] = parseInt(w[z[0]], 10); break;\n\t\t\t}\n\t\t}\n\t}\n}\nfunction push_defaults(target, defaults) {\n\tfor(var i = 0; i != defaults.length; ++i) { var z = defaults[i];\n\t\tif(target[z[0]] == null) target[z[0]] = z[1];\n\t\telse switch(z[2]) {\n\t\t\tcase \"bool\": if(typeof target[z[0]] == \"string\") target[z[0]] = parsexmlbool(target[z[0]]); break;\n\t\t\tcase \"int\": if(typeof target[z[0]] == \"string\") target[z[0]] = parseInt(target[z[0]], 10); break;\n\t\t}\n\t}\n}\n\nfunction parse_wb_defaults(wb) {\n\tpush_defaults(wb.WBProps, WBPropsDef);\n\tpush_defaults(wb.CalcPr, CalcPrDef);\n\n\tpush_defaults_array(wb.WBView, WBViewDef);\n\tpush_defaults_array(wb.Sheets, SheetDef);\n\n\t_ssfopts.date1904 = parsexmlbool(wb.WBProps.date1904);\n}\n\nfunction safe1904(wb/*:Workbook*/)/*:string*/ {\n\t/* TODO: store date1904 somewhere else */\n\tif(!wb.Workbook) return \"false\";\n\tif(!wb.Workbook.WBProps) return \"false\";\n\treturn parsexmlbool(wb.Workbook.WBProps.date1904) ? \"true\" : \"false\";\n}\n\nvar badchars = /*#__PURE__*/\"][*?\\/\\\\\".split(\"\");\nfunction check_ws_name(n/*:string*/, safe/*:?boolean*/)/*:boolean*/ {\n\tif(n.length > 31) { if(safe) return false; throw new Error(\"Sheet names cannot exceed 31 chars\"); }\n\tvar _good = true;\n\tbadchars.forEach(function(c) {\n\t\tif(n.indexOf(c) == -1) return;\n\t\tif(!safe) throw new Error(\"Sheet name cannot contain : \\\\ / ? * [ ]\");\n\t\t_good = false;\n\t});\n\treturn _good;\n}\nfunction check_wb_names(N, S, codes) {\n\tN.forEach(function(n,i) {\n\t\tcheck_ws_name(n);\n\t\tfor(var j = 0; j < i; ++j) if(n == N[j]) throw new Error(\"Duplicate Sheet Name: \" + n);\n\t\tif(codes) {\n\t\t\tvar cn = (S && S[i] && S[i].CodeName) || n;\n\t\t\tif(cn.charCodeAt(0) == 95 && cn.length > 22) throw new Error(\"Bad Code Name: Worksheet\" + cn);\n\t\t}\n\t});\n}\nfunction check_wb(wb) {\n\tif(!wb || !wb.SheetNames || !wb.Sheets) throw new Error(\"Invalid Workbook\");\n\tif(!wb.SheetNames.length) throw new Error(\"Workbook is empty\");\n\tvar Sheets = (wb.Workbook && wb.Workbook.Sheets) || [];\n\tcheck_wb_names(wb.SheetNames, Sheets, !!wb.vbaraw);\n\tfor(var i = 0; i < wb.SheetNames.length; ++i) check_ws(wb.Sheets[wb.SheetNames[i]], wb.SheetNames[i], i);\n\t/* TODO: validate workbook */\n}\n/* 18.2 Workbook */\nvar wbnsregex = /<\\w+:workbook/;\nfunction parse_wb_xml(data, opts)/*:WorkbookFile*/ {\n\tif(!data) throw new Error(\"Could not find file\");\n\tvar wb = /*::(*/{ AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, Names:[], xmlns: \"\" }/*::)*/;\n\tvar pass = false, xmlns = \"xmlns\";\n\tvar dname = {}, dnstart = 0;\n\tdata.replace(tagregex, function xml_wb(x, idx) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '<?xml': break;\n\n\t\t\t/* 18.2.27 workbook CT_Workbook 1 */\n\t\t\tcase '<workbook':\n\t\t\t\tif(x.match(wbnsregex)) xmlns = \"xmlns\" + x.match(/<(\\w+):/)[1];\n\t\t\t\twb.xmlns = y[xmlns];\n\t\t\t\tbreak;\n\t\t\tcase '</workbook>': break;\n\n\t\t\t/* 18.2.13 fileVersion CT_FileVersion ? */\n\t\t\tcase '<fileVersion': delete y[0]; wb.AppVersion = y; break;\n\t\t\tcase '<fileVersion/>': case '</fileVersion>': break;\n\n\t\t\t/* 18.2.12 fileSharing CT_FileSharing ? */\n\t\t\tcase '<fileSharing':\n\t\t\t\tbreak;\n\t\t\tcase '<fileSharing/>': break;\n\n\t\t\t/* 18.2.28 workbookPr CT_WorkbookPr ? */\n\t\t\tcase '<workbookPr':\n\t\t\tcase '<workbookPr/>':\n\t\t\t\tWBPropsDef.forEach(function(w) {\n\t\t\t\t\tif(y[w[0]] == null) return;\n\t\t\t\t\tswitch(w[2]) {\n\t\t\t\t\t\tcase \"bool\": wb.WBProps[w[0]] = parsexmlbool(y[w[0]]); break;\n\t\t\t\t\t\tcase \"int\": wb.WBProps[w[0]] = parseInt(y[w[0]], 10); break;\n\t\t\t\t\t\tdefault: wb.WBProps[w[0]] = y[w[0]];\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(y.codeName) wb.WBProps.CodeName = utf8read(y.codeName);\n\t\t\t\tbreak;\n\t\t\tcase '</workbookPr>': break;\n\n\t\t\t/* 18.2.29 workbookProtection CT_WorkbookProtection ? */\n\t\t\tcase '<workbookProtection':\n\t\t\t\tbreak;\n\t\t\tcase '<workbookProtection/>': break;\n\n\t\t\t/* 18.2.1  bookViews CT_BookViews ? */\n\t\t\tcase '<bookViews': case '<bookViews>': case '</bookViews>': break;\n\t\t\t/* 18.2.30   workbookView CT_BookView + */\n\t\t\tcase '<workbookView': case '<workbookView/>': delete y[0]; wb.WBView.push(y); break;\n\t\t\tcase '</workbookView>': break;\n\n\t\t\t/* 18.2.20 sheets CT_Sheets 1 */\n\t\t\tcase '<sheets': case '<sheets>': case '</sheets>': break; // aggregate sheet\n\t\t\t/* 18.2.19   sheet CT_Sheet + */\n\t\t\tcase '<sheet':\n\t\t\t\tswitch(y.state) {\n\t\t\t\t\tcase \"hidden\": y.Hidden = 1; break;\n\t\t\t\t\tcase \"veryHidden\": y.Hidden = 2; break;\n\t\t\t\t\tdefault: y.Hidden = 0;\n\t\t\t\t}\n\t\t\t\tdelete y.state;\n\t\t\t\ty.name = unescapexml(utf8read(y.name));\n\t\t\t\tdelete y[0]; wb.Sheets.push(y); break;\n\t\t\tcase '</sheet>': break;\n\n\t\t\t/* 18.2.15 functionGroups CT_FunctionGroups ? */\n\t\t\tcase '<functionGroups': case '<functionGroups/>': break;\n\t\t\t/* 18.2.14   functionGroup CT_FunctionGroup + */\n\t\t\tcase '<functionGroup': break;\n\n\t\t\t/* 18.2.9  externalReferences CT_ExternalReferences ? */\n\t\t\tcase '<externalReferences': case '</externalReferences>': case '<externalReferences>': break;\n\t\t\t/* 18.2.8    externalReference CT_ExternalReference + */\n\t\t\tcase '<externalReference': break;\n\n\t\t\t/* 18.2.6  definedNames CT_DefinedNames ? */\n\t\t\tcase '<definedNames/>': break;\n\t\t\tcase '<definedNames>': case '<definedNames': pass=true; break;\n\t\t\tcase '</definedNames>': pass=false; break;\n\t\t\t/* 18.2.5    definedName CT_DefinedName + */\n\t\t\tcase '<definedName': {\n\t\t\t\tdname = {};\n\t\t\t\tdname.Name = utf8read(y.name);\n\t\t\t\tif(y.comment) dname.Comment = y.comment;\n\t\t\t\tif(y.localSheetId) dname.Sheet = +y.localSheetId;\n\t\t\t\tif(parsexmlbool(y.hidden||\"0\")) dname.Hidden = true;\n\t\t\t\tdnstart = idx + x.length;\n\t\t\t}\tbreak;\n\t\t\tcase '</definedName>': {\n\t\t\t\tdname.Ref = unescapexml(utf8read(data.slice(dnstart, idx)));\n\t\t\t\twb.Names.push(dname);\n\t\t\t} break;\n\t\t\tcase '<definedName/>': break;\n\n\t\t\t/* 18.2.2  calcPr CT_CalcPr ? */\n\t\t\tcase '<calcPr': delete y[0]; wb.CalcPr = y; break;\n\t\t\tcase '<calcPr/>': delete y[0]; wb.CalcPr = y; break;\n\t\t\tcase '</calcPr>': break;\n\n\t\t\t/* 18.2.16 oleSize CT_OleSize ? (ref required) */\n\t\t\tcase '<oleSize': break;\n\n\t\t\t/* 18.2.4  customWorkbookViews CT_CustomWorkbookViews ? */\n\t\t\tcase '<customWorkbookViews>': case '</customWorkbookViews>': case '<customWorkbookViews': break;\n\t\t\t/* 18.2.3  customWorkbookView CT_CustomWorkbookView + */\n\t\t\tcase '<customWorkbookView': case '</customWorkbookView>': break;\n\n\t\t\t/* 18.2.18 pivotCaches CT_PivotCaches ? */\n\t\t\tcase '<pivotCaches>': case '</pivotCaches>': case '<pivotCaches': break;\n\t\t\t/* 18.2.17 pivotCache CT_PivotCache ? */\n\t\t\tcase '<pivotCache': break;\n\n\t\t\t/* 18.2.21 smartTagPr CT_SmartTagPr ? */\n\t\t\tcase '<smartTagPr': case '<smartTagPr/>': break;\n\n\t\t\t/* 18.2.23 smartTagTypes CT_SmartTagTypes ? */\n\t\t\tcase '<smartTagTypes': case '<smartTagTypes>': case '</smartTagTypes>': break;\n\t\t\t/* 18.2.22 smartTagType CT_SmartTagType ? */\n\t\t\tcase '<smartTagType': break;\n\n\t\t\t/* 18.2.24 webPublishing CT_WebPublishing ? */\n\t\t\tcase '<webPublishing': case '<webPublishing/>': break;\n\n\t\t\t/* 18.2.11 fileRecoveryPr CT_FileRecoveryPr ? */\n\t\t\tcase '<fileRecoveryPr': case '<fileRecoveryPr/>': break;\n\n\t\t\t/* 18.2.26 webPublishObjects CT_WebPublishObjects ? */\n\t\t\tcase '<webPublishObjects>': case '<webPublishObjects': case '</webPublishObjects>': break;\n\t\t\t/* 18.2.25 webPublishObject CT_WebPublishObject ? */\n\t\t\tcase '<webPublishObject': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '<extLst': case '<extLst>': case '</extLst>': case '<extLst/>': break;\n\t\t\t/* 18.2.7  ext CT_Extension + */\n\t\t\tcase '<ext': pass=true; break; //TODO: check with versions of excel\n\t\t\tcase '</ext>': pass=false; break;\n\n\t\t\t/* Others */\n\t\t\tcase '<ArchID': break;\n\t\t\tcase '<AlternateContent':\n\t\t\tcase '<AlternateContent>': pass=true; break;\n\t\t\tcase '</AlternateContent>': pass=false; break;\n\n\t\t\t/* TODO */\n\t\t\tcase '<revisionPtr': break;\n\n\t\t\tdefault: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in workbook');\n\t\t}\n\t\treturn x;\n\t});\n\tif(XMLNS_main.indexOf(wb.xmlns) === -1) throw new Error(\"Unknown Namespace: \" + wb.xmlns);\n\n\tparse_wb_defaults(wb);\n\n\treturn wb;\n}\n\nfunction write_wb_xml(wb/*:Workbook*//*::, opts:?WriteOpts*/)/*:string*/ {\n\tvar o = [XML_HEADER];\n\to[o.length] = writextag('workbook', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t//'xmlns:mx': XMLNS.mx,\n\t\t//'xmlns:s': XMLNS_main[0],\n\t\t'xmlns:r': XMLNS.r\n\t});\n\n\tvar write_names = (wb.Workbook && (wb.Workbook.Names||[]).length > 0);\n\n\t/* fileVersion */\n\t/* fileSharing */\n\n\tvar workbookPr/*:any*/ = ({codeName:\"ThisWorkbook\"}/*:any*/);\n\tif(wb.Workbook && wb.Workbook.WBProps) {\n\t\tWBPropsDef.forEach(function(x) {\n\t\t\t/*:: if(!wb.Workbook || !wb.Workbook.WBProps) throw \"unreachable\"; */\n\t\t\tif((wb.Workbook.WBProps[x[0]]/*:any*/) == null) return;\n\t\t\tif((wb.Workbook.WBProps[x[0]]/*:any*/) == x[1]) return;\n\t\t\tworkbookPr[x[0]] = (wb.Workbook.WBProps[x[0]]/*:any*/);\n\t\t});\n\t\t/*:: if(!wb.Workbook || !wb.Workbook.WBProps) throw \"unreachable\"; */\n\t\tif(wb.Workbook.WBProps.CodeName) { workbookPr.codeName = wb.Workbook.WBProps.CodeName; delete workbookPr.CodeName; }\n\t}\n\to[o.length] = (writextag('workbookPr', null, workbookPr));\n\n\t/* workbookProtection */\n\n\tvar sheets = wb.Workbook && wb.Workbook.Sheets || [];\n\tvar i = 0;\n\n\t/* bookViews only written if first worksheet is hidden */\n\tif(sheets && sheets[0] && !!sheets[0].Hidden) {\n\t\to[o.length] = \"<bookViews>\";\n\t\tfor(i = 0; i != wb.SheetNames.length; ++i) {\n\t\t\tif(!sheets[i]) break;\n\t\t\tif(!sheets[i].Hidden) break;\n\t\t}\n\t\tif(i == wb.SheetNames.length) i = 0;\n\t\to[o.length] = '<workbookView firstSheet=\"' + i + '\" activeTab=\"' + i + '\"/>';\n\t\to[o.length] = \"</bookViews>\";\n\t}\n\n\to[o.length] = \"<sheets>\";\n\tfor(i = 0; i != wb.SheetNames.length; ++i) {\n\t\tvar sht = ({name:escapexml(wb.SheetNames[i].slice(0,31))}/*:any*/);\n\t\tsht.sheetId = \"\"+(i+1);\n\t\tsht[\"r:id\"] = \"rId\"+(i+1);\n\t\tif(sheets[i]) switch(sheets[i].Hidden) {\n\t\t\tcase 1: sht.state = \"hidden\"; break;\n\t\t\tcase 2: sht.state = \"veryHidden\"; break;\n\t\t}\n\t\to[o.length] = (writextag('sheet',null,sht));\n\t}\n\to[o.length] = \"</sheets>\";\n\n\t/* functionGroups */\n\t/* externalReferences */\n\n\tif(write_names) {\n\t\to[o.length] = \"<definedNames>\";\n\t\tif(wb.Workbook && wb.Workbook.Names) wb.Workbook.Names.forEach(function(n) {\n\t\t\tvar d/*:any*/ = {name:n.Name};\n\t\t\tif(n.Comment) d.comment = n.Comment;\n\t\t\tif(n.Sheet != null) d.localSheetId = \"\"+n.Sheet;\n\t\t\tif(n.Hidden) d.hidden = \"1\";\n\t\t\tif(!n.Ref) return;\n\t\t\to[o.length] = writextag('definedName', escapexml(n.Ref), d);\n\t\t});\n\t\to[o.length] = \"</definedNames>\";\n\t}\n\n\t/* calcPr */\n\t/* oleSize */\n\t/* customWorkbookViews */\n\t/* pivotCaches */\n\t/* smartTagPr */\n\t/* smartTagTypes */\n\t/* webPublishing */\n\t/* fileRecoveryPr */\n\t/* webPublishObjects */\n\t/* extLst */\n\n\tif(o.length>2){ o[o.length] = '</workbook>'; o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.304 BrtBundleSh */\nfunction parse_BrtBundleSh(data, length/*:number*/) {\n\tvar z = {};\n\tz.Hidden = data.read_shift(4); //hsState ST_SheetState\n\tz.iTabID = data.read_shift(4);\n\tz.strRelID = parse_RelID(data,length-8);\n\tz.name = parse_XLWideString(data);\n\treturn z;\n}\nfunction write_BrtBundleSh(data, o) {\n\tif(!o) o = new_buf(127);\n\to.write_shift(4, data.Hidden);\n\to.write_shift(4, data.iTabID);\n\twrite_RelID(data.strRelID, o);\n\twrite_XLWideString(data.name.slice(0,31), o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.815 BrtWbProp */\nfunction parse_BrtWbProp(data, length)/*:WBProps*/ {\n\tvar o/*:WBProps*/ = ({}/*:any*/);\n\tvar flags = data.read_shift(4);\n\to.defaultThemeVersion = data.read_shift(4);\n\tvar strName = (length > 8) ? parse_XLWideString(data) : \"\";\n\tif(strName.length > 0) o.CodeName = strName;\n\to.autoCompressPictures = !!(flags & 0x10000);\n\to.backupFile = !!(flags & 0x40);\n\to.checkCompatibility = !!(flags & 0x1000);\n\to.date1904 = !!(flags & 0x01);\n\to.filterPrivacy = !!(flags & 0x08);\n\to.hidePivotFieldList = !!(flags & 0x400);\n\to.promptedSolutions = !!(flags & 0x10);\n\to.publishItems = !!(flags & 0x800);\n\to.refreshAllConnections = !!(flags & 0x40000);\n\to.saveExternalLinkValues = !!(flags & 0x80);\n\to.showBorderUnselectedTables = !!(flags & 0x04);\n\to.showInkAnnotation = !!(flags & 0x20);\n\to.showObjects = [\"all\", \"placeholders\", \"none\"][(flags >> 13) & 0x03];\n\to.showPivotChartFilter = !!(flags & 0x8000);\n\to.updateLinks = [\"userSet\", \"never\", \"always\"][(flags >> 8) & 0x03];\n\treturn o;\n}\nfunction write_BrtWbProp(data/*:?WBProps*/, o) {\n\tif(!o) o = new_buf(72);\n\tvar flags = 0;\n\tif(data) {\n\t\t/* TODO: mirror parse_BrtWbProp fields */\n\t\tif(data.filterPrivacy) flags |= 0x08;\n\t}\n\to.write_shift(4, flags);\n\to.write_shift(4, 0);\n\twrite_XLSBCodeName(data && data.CodeName || \"ThisWorkbook\", o);\n\treturn o.slice(0, o.l);\n}\n\nfunction parse_BrtFRTArchID$(data, length) {\n\tvar o = {};\n\tdata.read_shift(4);\n\to.ArchID = data.read_shift(4);\n\tdata.l += length - 8;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.687 BrtName */\nfunction parse_BrtName(data, length, opts) {\n\tvar end = data.l + length;\n\tdata.l += 4; //var flags = data.read_shift(4);\n\tdata.l += 1; //var chKey = data.read_shift(1);\n\tvar itab = data.read_shift(4);\n\tvar name = parse_XLNameWideString(data);\n\tvar formula = parse_XLSBNameParsedFormula(data, 0, opts);\n\tvar comment = parse_XLNullableWideString(data);\n\t//if(0 /* fProc */) {\n\t\t// unusedstring1: XLNullableWideString\n\t\t// description: XLNullableWideString\n\t\t// helpTopic: XLNullableWideString\n\t\t// unusedstring2: XLNullableWideString\n\t//}\n\tdata.l = end;\n\tvar out = ({Name:name, Ptg:formula}/*:any*/);\n\tif(itab < 0xFFFFFFF) out.Sheet = itab;\n\tif(comment) out.Comment = comment;\n\treturn out;\n}\n\n/* [MS-XLSB] 2.1.7.61 Workbook */\nfunction parse_wb_bin(data, opts)/*:WorkbookFile*/ {\n\tvar wb = { AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, xmlns: \"\" };\n\tvar state/*:Array<string>*/ = [];\n\tvar pass = false;\n\n\tif(!opts) opts = {};\n\topts.biff = 12;\n\n\tvar Names = [];\n\tvar supbooks = ([[]]/*:any*/);\n\tsupbooks.SheetNames = [];\n\tsupbooks.XTI = [];\n\n\tXLSBRecordEnum[0x0010] = { n:\"BrtFRTArchID$\", f:parse_BrtFRTArchID$ };\n\n\trecordhopper(data, function hopper_wb(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x009C: /* 'BrtBundleSh' */\n\t\t\t\tsupbooks.SheetNames.push(val.name);\n\t\t\t\twb.Sheets.push(val); break;\n\n\t\t\tcase 0x0099: /* 'BrtWbProp' */\n\t\t\t\twb.WBProps = val; break;\n\n\t\t\tcase 0x0027: /* 'BrtName' */\n\t\t\t\tif(val.Sheet != null) opts.SID = val.Sheet;\n\t\t\t\tval.Ref = stringify_formula(val.Ptg, null, null, supbooks, opts);\n\t\t\t\tdelete opts.SID;\n\t\t\t\tdelete val.Ptg;\n\t\t\t\tNames.push(val);\n\t\t\t\tbreak;\n\t\t\tcase 0x040C: /* 'BrtNameExt' */ break;\n\n\t\t\tcase 0x0165: /* 'BrtSupSelf' */\n\t\t\tcase 0x0166: /* 'BrtSupSame' */\n\t\t\tcase 0x0163: /* 'BrtSupBookSrc' */\n\t\t\tcase 0x029B: /* 'BrtSupAddin' */\n\t\t\t\tif(!supbooks[0].length) supbooks[0] = [RT, val];\n\t\t\t\telse supbooks.push([RT, val]);\n\t\t\t\tsupbooks[supbooks.length - 1].XTI = [];\n\t\t\t\tbreak;\n\t\t\tcase 0x016A: /* 'BrtExternSheet' */\n\t\t\t\tif(supbooks.length === 0) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\tsupbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val);\n\t\t\t\tsupbooks.XTI = supbooks.XTI.concat(val);\n\t\t\t\tbreak;\n\t\t\tcase 0x0169: /* 'BrtPlaceholderName' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0817: /* 'BrtAbsPath15' */\n\t\t\tcase 0x009E: /* 'BrtBookView' */\n\t\t\tcase 0x008F: /* 'BrtBeginBundleShs' */\n\t\t\tcase 0x0298: /* 'BrtBeginFnGroup' */\n\t\t\tcase 0x0161: /* 'BrtBeginExternals' */\n\t\t\t\tbreak;\n\n\t\t\t/* case 'BrtModelTimeGroupingCalcCol' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\tcase 0x0C01: /* 'BrtRevisionPtr' */\n\t\t\tcase 0x0216: /* 'BrtBookProtection' */\n\t\t\tcase 0x02A5: /* 'BrtBookProtectionIso' */\n\t\t\tcase 0x009D: /* 'BrtCalcProp' */\n\t\t\tcase 0x0262: /* 'BrtCrashRecErr' */\n\t\t\tcase 0x0802: /* 'BrtDecoupledPivotCacheID' */\n\t\t\tcase 0x009B: /* 'BrtFileRecover' */\n\t\t\tcase 0x0224: /* 'BrtFileSharing' */\n\t\t\tcase 0x02A4: /* 'BrtFileSharingIso' */\n\t\t\tcase 0x0080: /* 'BrtFileVersion' */\n\t\t\tcase 0x0299: /* 'BrtFnGroup' */\n\t\t\tcase 0x0850: /* 'BrtModelRelationship' */\n\t\t\tcase 0x084D: /* 'BrtModelTable' */\n\t\t\tcase 0x0225: /* 'BrtOleSize' */\n\t\t\tcase 0x0805: /* 'BrtPivotTableRef' */\n\t\t\tcase 0x0254: /* 'BrtSmartTagType' */\n\t\t\tcase 0x081C: /* 'BrtTableSlicerCacheID' */\n\t\t\tcase 0x081B: /* 'BrtTableSlicerCacheIDs' */\n\t\t\tcase 0x0822: /* 'BrtTimelineCachePivotCacheID' */\n\t\t\tcase 0x018D: /* 'BrtUserBookView' */\n\t\t\tcase 0x009A: /* 'BrtWbFactoid' */\n\t\t\tcase 0x045D: /* 'BrtWbProp14' */\n\t\t\tcase 0x0229: /* 'BrtWebOpt' */\n\t\t\tcase 0x082B: /* 'BrtWorkBookPr15' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tcase 0x0010: /* 'BrtFRTArchID$' */ break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){/* empty */}\n\t\t\t\telse if(!pass || (opts.WTF && state[state.length-1] != 0x0025 /* BrtACBegin */ && state[state.length-1] != 0x0023 /* BrtFRTBegin */)) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tparse_wb_defaults(wb);\n\n\t// $FlowIgnore\n\twb.Names = Names;\n\n\t(wb/*:any*/).supbooks = supbooks;\n\treturn wb;\n}\n\nfunction write_BUNDLESHS(ba, wb/*::, opts*/) {\n\twrite_record(ba, 0x008F /* BrtBeginBundleShs */);\n\tfor(var idx = 0; idx != wb.SheetNames.length; ++idx) {\n\t\tvar viz = wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx] && wb.Workbook.Sheets[idx].Hidden || 0;\n\t\tvar d = { Hidden: viz, iTabID: idx+1, strRelID: 'rId' + (idx+1), name: wb.SheetNames[idx] };\n\t\twrite_record(ba, 0x009C /* BrtBundleSh */, write_BrtBundleSh(d));\n\t}\n\twrite_record(ba, 0x0090 /* BrtEndBundleShs */);\n}\n\n/* [MS-XLSB] 2.4.649 BrtFileVersion */\nfunction write_BrtFileVersion(data, o) {\n\tif(!o) o = new_buf(127);\n\tfor(var i = 0; i != 4; ++i) o.write_shift(4, 0);\n\twrite_XLWideString(\"SheetJS\", o);\n\twrite_XLWideString(XLSX.version, o);\n\twrite_XLWideString(XLSX.version, o);\n\twrite_XLWideString(\"7262\", o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.301 BrtBookView */\nfunction write_BrtBookView(idx, o) {\n\tif(!o) o = new_buf(29);\n\to.write_shift(-4, 0);\n\to.write_shift(-4, 460);\n\to.write_shift(4,  28800);\n\to.write_shift(4,  17600);\n\to.write_shift(4,  500);\n\to.write_shift(4,  idx);\n\to.write_shift(4,  idx);\n\tvar flags = 0x78;\n\to.write_shift(1,  flags);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\nfunction write_BOOKVIEWS(ba, wb/*::, opts*/) {\n\t/* required if hidden tab appears before visible tab */\n\tif(!wb.Workbook || !wb.Workbook.Sheets) return;\n\tvar sheets = wb.Workbook.Sheets;\n\tvar i = 0, vistab = -1, hidden = -1;\n\tfor(; i < sheets.length; ++i) {\n\t\tif(!sheets[i] || !sheets[i].Hidden && vistab == -1) vistab = i;\n\t\telse if(sheets[i].Hidden == 1 && hidden == -1) hidden = i;\n\t}\n\tif(hidden > vistab) return;\n\twrite_record(ba, 0x0087 /* BrtBeginBookViews */);\n\twrite_record(ba, 0x009E /* BrtBookView */, write_BrtBookView(vistab));\n\t/* 1*(BrtBookView *FRT) */\n\twrite_record(ba, 0x0088 /* BrtEndBookViews */);\n}\n\n/* [MS-XLSB] 2.4.305 BrtCalcProp */\n/*function write_BrtCalcProp(data, o) {\n\tif(!o) o = new_buf(26);\n\to.write_shift(4,0); // force recalc\n\to.write_shift(4,1);\n\to.write_shift(4,0);\n\twrite_Xnum(0, o);\n\to.write_shift(-4, 1023);\n\to.write_shift(1, 0x33);\n\to.write_shift(1, 0x00);\n\treturn o;\n}*/\n\n/* [MS-XLSB] 2.4.646 BrtFileRecover */\n/*function write_BrtFileRecover(data, o) {\n\tif(!o) o = new_buf(1);\n\to.write_shift(1,0);\n\treturn o;\n}*/\n\n/* [MS-XLSB] 2.1.7.61 Workbook */\nfunction write_wb_bin(wb, opts) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x0083 /* BrtBeginBook */);\n\twrite_record(ba, 0x0080 /* BrtFileVersion */, write_BrtFileVersion());\n\t/* [[BrtFileSharingIso] BrtFileSharing] */\n\twrite_record(ba, 0x0099 /* BrtWbProp */, write_BrtWbProp(wb.Workbook && wb.Workbook.WBProps || null));\n\t/* [ACABSPATH] */\n\t/* [[BrtBookProtectionIso] BrtBookProtection] */\n\twrite_BOOKVIEWS(ba, wb, opts);\n\twrite_BUNDLESHS(ba, wb, opts);\n\t/* [FNGROUP] */\n\t/* [EXTERNALS] */\n\t/* *BrtName */\n\t/* write_record(ba, 0x009D BrtCalcProp, write_BrtCalcProp()); */\n\t/* [BrtOleSize] */\n\t/* *(BrtUserBookView *FRT) */\n\t/* [PIVOTCACHEIDS] */\n\t/* [BrtWbFactoid] */\n\t/* [SMARTTAGTYPES] */\n\t/* [BrtWebOpt] */\n\t/* write_record(ba, 0x009B BrtFileRecover, write_BrtFileRecover()); */\n\t/* [WEBPUBITEMS] */\n\t/* [CRERRS] */\n\t/* FRTWORKBOOK */\n\twrite_record(ba, 0x0084 /* BrtEndBook */);\n\n\treturn ba.end();\n}\nfunction parse_wb(data, name/*:string*/, opts)/*:WorkbookFile*/ {\n\tif(name.slice(-4)===\".bin\") return parse_wb_bin((data/*:any*/), opts);\n\treturn parse_wb_xml((data/*:any*/), opts);\n}\n\nfunction parse_ws(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ws_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ws_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_cs(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_cs_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_cs_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_ms(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ms_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ms_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_ds(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ds_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ds_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_sty(data, name/*:string*/, themes, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_sty_bin((data/*:any*/), themes, opts);\n\treturn parse_sty_xml((data/*:any*/), themes, opts);\n}\n\nfunction parse_theme(data/*:string*/, name/*:string*/, opts) {\n\treturn parse_theme_xml(data, opts);\n}\n\nfunction parse_sst(data, name/*:string*/, opts)/*:SST*/ {\n\tif(name.slice(-4)===\".bin\") return parse_sst_bin((data/*:any*/), opts);\n\treturn parse_sst_xml((data/*:any*/), opts);\n}\n\nfunction parse_cmnt(data, name/*:string*/, opts)/*:Array<RawComment>*/ {\n\tif(name.slice(-4)===\".bin\") return parse_comments_bin((data/*:any*/), opts);\n\treturn parse_comments_xml((data/*:any*/), opts);\n}\n\nfunction parse_cc(data, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_cc_bin((data/*:any*/), name, opts);\n\treturn parse_cc_xml((data/*:any*/), name, opts);\n}\n\nfunction parse_xlink(data, rel, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_xlink_bin((data/*:any*/), rel, name, opts);\n\treturn parse_xlink_xml((data/*:any*/), rel, name, opts);\n}\n\nfunction parse_xlmeta(data, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_xlmeta_bin((data/*:any*/), name, opts);\n\treturn parse_xlmeta_xml((data/*:any*/), name, opts);\n}\n\nfunction write_wb(wb, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_wb_bin : write_wb_xml)(wb, opts);\n}\n\nfunction write_ws(data/*:number*/, name/*:string*/, opts, wb/*:Workbook*/, rels) {\n\treturn (name.slice(-4)===\".bin\" ? write_ws_bin : write_ws_xml)(data, opts, wb, rels);\n}\n\n// eslint-disable-next-line no-unused-vars\nfunction write_cs(data/*:number*/, name/*:string*/, opts, wb/*:Workbook*/, rels) {\n\treturn (name.slice(-4)===\".bin\" ? write_cs_bin : write_cs_xml)(data, opts, wb, rels);\n}\n\nfunction write_sty(data, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_sty_bin : write_sty_xml)(data, opts);\n}\n\nfunction write_sst(data/*:SST*/, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_sst_bin : write_sst_xml)(data, opts);\n}\n\nfunction write_cmnt(data/*:Array<any>*/, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_comments_bin : write_comments_xml)(data, opts);\n}\n/*\nfunction write_cc(data, name:string, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_cc_bin : write_cc_xml)(data, opts);\n}\n*/\n\nfunction write_xlmeta(name/*:string*/) {\n\treturn (name.slice(-4)===\".bin\" ? write_xlmeta_bin : write_xlmeta_xml)();\n}\nvar attregexg2=/([\\w:]+)=((?:\")([^\"]*)(?:\")|(?:')([^']*)(?:'))/g;\nvar attregex2=/([\\w:]+)=((?:\")(?:[^\"]*)(?:\")|(?:')(?:[^']*)(?:'))/;\nfunction xlml_parsexmltag(tag/*:string*/, skip_root/*:?boolean*/) {\n\tvar words = tag.split(/\\s+/);\n\tvar z/*:any*/ = ([]/*:any*/); if(!skip_root) z[0] = words[0];\n\tif(words.length === 1) return z;\n\tvar m = tag.match(attregexg2), y, j, w, i;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\ty = m[i].match(attregex2);\n/*:: if(!y || !y[2]) continue; */\n\t\tif((j=y[1].indexOf(\":\")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1);\n\t\telse {\n\t\t\tif(y[1].slice(0,6) === \"xmlns:\") w = \"xmlns\"+y[1].slice(6);\n\t\t\telse w = y[1].slice(j+1);\n\t\t\tz[w] = y[2].slice(1,y[2].length-1);\n\t\t}\n\t}\n\treturn z;\n}\nfunction xlml_parsexmltagobj(tag/*:string*/) {\n\tvar words = tag.split(/\\s+/);\n\tvar z = {};\n\tif(words.length === 1) return z;\n\tvar m = tag.match(attregexg2), y, j, w, i;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\ty = m[i].match(attregex2);\n/*:: if(!y || !y[2]) continue; */\n\t\tif((j=y[1].indexOf(\":\")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1);\n\t\telse {\n\t\t\tif(y[1].slice(0,6) === \"xmlns:\") w = \"xmlns\"+y[1].slice(6);\n\t\t\telse w = y[1].slice(j+1);\n\t\t\tz[w] = y[2].slice(1,y[2].length-1);\n\t\t}\n\t}\n\treturn z;\n}\n\n// ----\n\n/* map from xlml named formats to SSF TODO: localize */\nvar XLMLFormatMap/*: {[string]:string}*/;\n\nfunction xlml_format(format, value)/*:string*/ {\n\tvar fmt = XLMLFormatMap[format] || unescapexml(format);\n\tif(fmt === \"General\") return SSF_general(value);\n\treturn SSF_format(fmt, value);\n}\n\nfunction xlml_set_custprop(Custprops, key, cp, val/*:string*/) {\n\tvar oval/*:any*/ = val;\n\tswitch((cp[0].match(/dt:dt=\"([\\w.]+)\"/)||[\"\",\"\"])[1]) {\n\t\tcase \"boolean\": oval = parsexmlbool(val); break;\n\t\tcase \"i2\": case \"int\": oval = parseInt(val, 10); break;\n\t\tcase \"r4\": case \"float\": oval = parseFloat(val); break;\n\t\tcase \"date\": case \"dateTime.tz\": oval = parseDate(val); break;\n\t\tcase \"i8\": case \"string\": case \"fixed\": case \"uuid\": case \"bin.base64\": break;\n\t\tdefault: throw new Error(\"bad custprop:\" + cp[0]);\n\t}\n\tCustprops[unescapexml(key)] = oval;\n}\n\nfunction safe_format_xlml(cell/*:Cell*/, nf, o) {\n\tif(cell.t === 'z') return;\n\tif(!o || o.cellText !== false) try {\n\t\tif(cell.t === 'e') { cell.w = cell.w || BErr[cell.v]; }\n\t\telse if(nf === \"General\") {\n\t\t\tif(cell.t === 'n') {\n\t\t\t\tif((cell.v|0) === cell.v) cell.w = cell.v.toString(10);\n\t\t\t\telse cell.w = SSF_general_num(cell.v);\n\t\t\t}\n\t\t\telse cell.w = SSF_general(cell.v);\n\t\t}\n\t\telse cell.w = xlml_format(nf||\"General\", cell.v);\n\t} catch(e) { if(o.WTF) throw e; }\n\ttry {\n\t\tvar z = XLMLFormatMap[nf]||nf||\"General\";\n\t\tif(o.cellNF) cell.z = z;\n\t\tif(o.cellDates && cell.t == 'n' && fmt_is_date(z)) {\n\t\t\tvar _d = SSF_parse_date_code(cell.v); if(_d) { cell.t = 'd'; cell.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t\t}\n\t} catch(e) { if(o.WTF) throw e; }\n}\n\nfunction process_style_xlml(styles, stag, opts) {\n\tif(opts.cellStyles) {\n\t\tif(stag.Interior) {\n\t\t\tvar I = stag.Interior;\n\t\t\tif(I.Pattern) I.patternType = XLMLPatternTypeMap[I.Pattern] || I.Pattern;\n\t\t}\n\t}\n\tstyles[stag.ID] = stag;\n}\n\n/* TODO: there must exist some form of OSP-blessed spec */\nfunction parse_xlml_data(xml, ss, data, cell/*:any*/, base, styles, csty, row, arrayf, o) {\n\tvar nf = \"General\", sid = cell.StyleID, S = {}; o = o || {};\n\tvar interiors = [];\n\tvar i = 0;\n\tif(sid === undefined && row) sid = row.StyleID;\n\tif(sid === undefined && csty) sid = csty.StyleID;\n\twhile(styles[sid] !== undefined) {\n\t\tif(styles[sid].nf) nf = styles[sid].nf;\n\t\tif(styles[sid].Interior) interiors.push(styles[sid].Interior);\n\t\tif(!styles[sid].Parent) break;\n\t\tsid = styles[sid].Parent;\n\t}\n\tswitch(data.Type) {\n\t\tcase 'Boolean':\n\t\t\tcell.t = 'b';\n\t\t\tcell.v = parsexmlbool(xml);\n\t\t\tbreak;\n\t\tcase 'String':\n\t\t\tcell.t = 's'; cell.r = xlml_fixstr(unescapexml(xml));\n\t\t\tcell.v = (xml.indexOf(\"<\") > -1 ? unescapexml(ss||xml).replace(/<.*?>/g, \"\") : cell.r); // todo: BR etc\n\t\t\tbreak;\n\t\tcase 'DateTime':\n\t\t\tif(xml.slice(-1) != \"Z\") xml += \"Z\";\n\t\t\tcell.v = (parseDate(xml) - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);\n\t\t\tif(cell.v !== cell.v) cell.v = unescapexml(xml);\n\t\t\telse if(cell.v<60) cell.v = cell.v -1;\n\t\t\tif(!nf || nf == \"General\") nf = \"yyyy-mm-dd\";\n\t\t\t/* falls through */\n\t\tcase 'Number':\n\t\t\tif(cell.v === undefined) cell.v=+xml;\n\t\t\tif(!cell.t) cell.t = 'n';\n\t\t\tbreak;\n\t\tcase 'Error': cell.t = 'e'; cell.v = RBErr[xml]; if(o.cellText !== false) cell.w = xml; break;\n\t\tdefault:\n\t\t\tif(xml == \"\" && ss == \"\") { cell.t = 'z'; }\n\t\t\telse { cell.t = 's'; cell.v = xlml_fixstr(ss||xml); }\n\t\t\tbreak;\n\t}\n\tsafe_format_xlml(cell, nf, o);\n\tif(o.cellFormula !== false) {\n\t\tif(cell.Formula) {\n\t\t\tvar fstr = unescapexml(cell.Formula);\n\t\t\t/* strictly speaking, the leading = is required but some writers omit */\n\t\t\tif(fstr.charCodeAt(0) == 61 /* = */) fstr = fstr.slice(1);\n\t\t\tcell.f = rc_to_a1(fstr, base);\n\t\t\tdelete cell.Formula;\n\t\t\tif(cell.ArrayRange == \"RC\") cell.F = rc_to_a1(\"RC:RC\", base);\n\t\t\telse if(cell.ArrayRange) {\n\t\t\t\tcell.F = rc_to_a1(cell.ArrayRange, base);\n\t\t\t\tarrayf.push([safe_decode_range(cell.F), cell.F]);\n\t\t\t}\n\t\t} else {\n\t\t\tfor(i = 0; i < arrayf.length; ++i)\n\t\t\t\tif(base.r >= arrayf[i][0].s.r && base.r <= arrayf[i][0].e.r)\n\t\t\t\t\tif(base.c >= arrayf[i][0].s.c && base.c <= arrayf[i][0].e.c)\n\t\t\t\t\t\tcell.F = arrayf[i][1];\n\t\t}\n\t}\n\tif(o.cellStyles) {\n\t\tinteriors.forEach(function(x) {\n\t\t\tif(!S.patternType && x.patternType) S.patternType = x.patternType;\n\t\t});\n\t\tcell.s = S;\n\t}\n\tif(cell.StyleID !== undefined) cell.ixfe = cell.StyleID;\n}\n\nfunction xlml_clean_comment(comment/*:any*/) {\n\tcomment.t = comment.v || \"\";\n\tcomment.t = comment.t.replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\");\n\tcomment.v = comment.w = comment.ixfe = undefined;\n}\n\n/* TODO: Everything */\nfunction parse_xlml_xml(d, _opts)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tmake_ssf();\n\tvar str = debom(xlml_normalize(d));\n\tif(opts.type == 'binary' || opts.type == 'array' || opts.type == 'base64') {\n\t\tif(typeof $cptable !== 'undefined') str = $cptable.utils.decode(65001, char_codes(str));\n\t\telse str = utf8read(str);\n\t}\n\tvar opening = str.slice(0, 1024).toLowerCase(), ishtml = false;\n\topening = opening.replace(/\".*?\"/g, \"\");\n\tif((opening.indexOf(\">\") & 1023) > Math.min((opening.indexOf(\",\") & 1023), (opening.indexOf(\";\")&1023))) { var _o = dup(opts); _o.type = \"string\"; return PRN.to_workbook(str, _o); }\n\tif(opening.indexOf(\"<?xml\") == -1) [\"html\", \"table\", \"head\", \"meta\", \"script\", \"style\", \"div\"].forEach(function(tag) { if(opening.indexOf(\"<\" + tag) >= 0) ishtml = true; });\n\tif(ishtml) return html_to_workbook(str, opts);\n\n\tXLMLFormatMap = ({\n\t\t\"General Number\": \"General\",\n\t\t\"General Date\": table_fmt[22],\n\t\t\"Long Date\": \"dddd, mmmm dd, yyyy\",\n\t\t\"Medium Date\": table_fmt[15],\n\t\t\"Short Date\": table_fmt[14],\n\t\t\"Long Time\": table_fmt[19],\n\t\t\"Medium Time\": table_fmt[18],\n\t\t\"Short Time\": table_fmt[20],\n\t\t\"Currency\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\t\"Fixed\": table_fmt[2],\n\t\t\"Standard\": table_fmt[4],\n\t\t\"Percent\": table_fmt[10],\n\t\t\"Scientific\": table_fmt[11],\n\t\t\"Yes/No\": '\"Yes\";\"Yes\";\"No\";@',\n\t\t\"True/False\": '\"True\";\"True\";\"False\";@',\n\t\t\"On/Off\": '\"Yes\";\"Yes\";\"No\";@'\n\t}/*:any*/);\n\n\n\tvar Rn;\n\tvar state = [], tmp;\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar sheets = {}, sheetnames/*:Array<string>*/ = [], cursheet/*:Worksheet*/ = (opts.dense ? [] : {}), sheetname = \"\";\n\tvar cell = ({}/*:any*/), row = {};// eslint-disable-line no-unused-vars\n\tvar dtag = xlml_parsexmltag('<Data ss:Type=\"String\">'), didx = 0;\n\tvar c = 0, r = 0;\n\tvar refguess/*:Range*/ = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\tvar styles = {}, stag = {};\n\tvar ss = \"\", fidx = 0;\n\tvar merges/*:Array<Range>*/ = [];\n\tvar Props = {}, Custprops = {}, pidx = 0, cp = [];\n\tvar comments/*:Array<Comment>*/ = [], comment/*:Comment*/ = ({}/*:any*/);\n\tvar cstys = [], csty, seencol = false;\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar rowinfo/*:Array<RowInfo>*/ = [], rowobj = {}, cc = 0, rr = 0;\n\tvar Workbook/*:WBWBProps*/ = ({ Sheets:[], WBProps:{date1904:false} }/*:any*/), wsprops = {};\n\txlmlregex.lastIndex = 0;\n\tstr = str.replace(/<!--([\\s\\S]*?)-->/mg,\"\");\n\tvar raw_Rn3 = \"\";\n\twhile((Rn = xlmlregex.exec(str))) switch((Rn[3] = (raw_Rn3 = Rn[3]).toLowerCase())) {\n\t\tcase 'data' /*case 'Data'*/:\n\t\t\tif(raw_Rn3 == \"data\") {\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(state[state.length-1][1]) break;\n\t\t\tif(Rn[1]==='/') parse_xlml_data(str.slice(didx, Rn.index), ss, dtag, state[state.length-1][0]==/*\"Comment\"*/\"comment\"?comment:cell, {c:c,r:r}, styles, cstys[c], row, arrayf, opts);\n\t\t\telse { ss = \"\"; dtag = xlml_parsexmltag(Rn[0]); didx = Rn.index + Rn[0].length; }\n\t\t\tbreak;\n\t\tcase 'cell' /*case 'Cell'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif(comments.length > 0) cell.c = comments;\n\t\t\t\tif((!opts.sheetRows || opts.sheetRows > r) && cell.v !== undefined) {\n\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\tif(!cursheet[r]) cursheet[r] = [];\n\t\t\t\t\t\tcursheet[r][c] = cell;\n\t\t\t\t\t} else cursheet[encode_col(c) + encode_row(r)] = cell;\n\t\t\t\t}\n\t\t\t\tif(cell.HRef) {\n\t\t\t\t\tcell.l = ({Target:unescapexml(cell.HRef)}/*:any*/);\n\t\t\t\t\tif(cell.HRefScreenTip) cell.l.Tooltip = cell.HRefScreenTip;\n\t\t\t\t\tdelete cell.HRef; delete cell.HRefScreenTip;\n\t\t\t\t}\n\t\t\t\tif(cell.MergeAcross || cell.MergeDown) {\n\t\t\t\t\tcc = c + (parseInt(cell.MergeAcross,10)|0);\n\t\t\t\t\trr = r + (parseInt(cell.MergeDown,10)|0);\n\t\t\t\t\tmerges.push({s:{c:c,r:r},e:{c:cc,r:rr}});\n\t\t\t\t}\n\t\t\t\tif(!opts.sheetStubs) { if(cell.MergeAcross) c = cc + 1; else ++c; }\n\t\t\t\telse if(cell.MergeAcross || cell.MergeDown) {\n\t\t\t\t\t/*:: if(!cc) cc = 0; if(!rr) rr = 0; */\n\t\t\t\t\tfor(var cma = c; cma <= cc; ++cma) {\n\t\t\t\t\t\tfor(var cmd = r; cmd <= rr; ++cmd) {\n\t\t\t\t\t\t\tif(cma > c || cmd > r) {\n\t\t\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\t\t\tif(!cursheet[cmd]) cursheet[cmd] = [];\n\t\t\t\t\t\t\t\t\tcursheet[cmd][cma] = {t:'z'};\n\t\t\t\t\t\t\t\t} else cursheet[encode_col(cma) + encode_row(cmd)] = {t:'z'};\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\tc = cc + 1;\n\t\t\t\t}\n\t\t\t\telse ++c;\n\t\t\t} else {\n\t\t\t\tcell = xlml_parsexmltagobj(Rn[0]);\n\t\t\t\tif(cell.Index) c = +cell.Index - 1;\n\t\t\t\tif(c < refguess.s.c) refguess.s.c = c;\n\t\t\t\tif(c > refguess.e.c) refguess.e.c = c;\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") ++c;\n\t\t\t\tcomments = [];\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'row' /*case 'Row'*/:\n\t\t\tif(Rn[1]==='/' || Rn[0].slice(-2) === \"/>\") {\n\t\t\t\tif(r < refguess.s.r) refguess.s.r = r;\n\t\t\t\tif(r > refguess.e.r) refguess.e.r = r;\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") {\n\t\t\t\t\trow = xlml_parsexmltag(Rn[0]);\n\t\t\t\t\tif(row.Index) r = +row.Index - 1;\n\t\t\t\t}\n\t\t\t\tc = 0; ++r;\n\t\t\t} else {\n\t\t\t\trow = xlml_parsexmltag(Rn[0]);\n\t\t\t\tif(row.Index) r = +row.Index - 1;\n\t\t\t\trowobj = {};\n\t\t\t\tif(row.AutoFitHeight == \"0\" || row.Height) {\n\t\t\t\t\trowobj.hpx = parseInt(row.Height, 10); rowobj.hpt = px2pt(rowobj.hpx);\n\t\t\t\t\trowinfo[r] = rowobj;\n\t\t\t\t}\n\t\t\t\tif(row.Hidden == \"1\") { rowobj.hidden = true; rowinfo[r] = rowobj; }\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'worksheet' /*case 'Worksheet'*/: /* TODO: read range from FullRows/FullColumns */\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t\tsheetnames.push(sheetname);\n\t\t\t\tif(refguess.s.r <= refguess.e.r && refguess.s.c <= refguess.e.c) {\n\t\t\t\t\tcursheet[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\tif(opts.sheetRows && opts.sheetRows <= refguess.e.r) {\n\t\t\t\t\t\tcursheet[\"!fullref\"] = cursheet[\"!ref\"];\n\t\t\t\t\t\trefguess.e.r = opts.sheetRows - 1;\n\t\t\t\t\t\tcursheet[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(merges.length) cursheet[\"!merges\"] = merges;\n\t\t\t\tif(cstys.length > 0) cursheet[\"!cols\"] = cstys;\n\t\t\t\tif(rowinfo.length > 0) cursheet[\"!rows\"] = rowinfo;\n\t\t\t\tsheets[sheetname] = cursheet;\n\t\t\t} else {\n\t\t\t\trefguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\t\t\t\tr = c = 0;\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\ttmp = xlml_parsexmltag(Rn[0]);\n\t\t\t\tsheetname = unescapexml(tmp.Name);\n\t\t\t\tcursheet = (opts.dense ? [] : {});\n\t\t\t\tmerges = [];\n\t\t\t\tarrayf = [];\n\t\t\t\trowinfo = [];\n\t\t\t\twsprops = {name:sheetname, Hidden:0};\n\t\t\t\tWorkbook.Sheets.push(wsprops);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'table' /*case 'Table'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].slice(-2) == \"/>\") break;\n\t\t\telse {\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\tcstys = []; seencol = false;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'style' /*case 'Style'*/:\n\t\t\tif(Rn[1]==='/') process_style_xlml(styles, stag, opts);\n\t\t\telse stag = xlml_parsexmltag(Rn[0]);\n\t\t\tbreak;\n\n\t\tcase 'numberformat' /*case 'NumberFormat'*/:\n\t\t\tstag.nf = unescapexml(xlml_parsexmltag(Rn[0]).Format || \"General\");\n\t\t\tif(XLMLFormatMap[stag.nf]) stag.nf = XLMLFormatMap[stag.nf];\n\t\t\tfor(var ssfidx = 0; ssfidx != 0x188; ++ssfidx) if(table_fmt[ssfidx] == stag.nf) break;\n\t\t\tif(ssfidx == 0x188) for(ssfidx = 0x39; ssfidx != 0x188; ++ssfidx) if(table_fmt[ssfidx] == null) { SSF_load(stag.nf, ssfidx); break; }\n\t\t\tbreak;\n\n\t\tcase 'column' /*case 'Column'*/:\n\t\t\tif(state[state.length-1][0] !== /*'Table'*/'table') break;\n\t\t\tcsty = xlml_parsexmltag(Rn[0]);\n\t\t\tif(csty.Hidden) { csty.hidden = true; delete csty.Hidden; }\n\t\t\tif(csty.Width) csty.wpx = parseInt(csty.Width, 10);\n\t\t\tif(!seencol && csty.wpx > 10) {\n\t\t\t\tseencol = true; MDW = DEF_MDW; //find_mdw_wpx(csty.wpx);\n\t\t\t\tfor(var _col = 0; _col < cstys.length; ++_col) if(cstys[_col]) process_col(cstys[_col]);\n\t\t\t}\n\t\t\tif(seencol) process_col(csty);\n\t\t\tcstys[(csty.Index-1||cstys.length)] = csty;\n\t\t\tfor(var i = 0; i < +csty.Span; ++i) cstys[cstys.length] = dup(csty);\n\t\t\tbreak;\n\n\t\tcase 'namedrange' /*case 'NamedRange'*/:\n\t\t\tif(Rn[1]==='/') break;\n\t\t\tif(!Workbook.Names) Workbook.Names = [];\n\t\t\tvar _NamedRange = parsexmltag(Rn[0]);\n\t\t\tvar _DefinedName/*:DefinedName*/ = ({\n\t\t\t\tName: _NamedRange.Name,\n\t\t\t\tRef: rc_to_a1(_NamedRange.RefersTo.slice(1), {r:0, c:0})\n\t\t\t}/*:any*/);\n\t\t\tif(Workbook.Sheets.length>0) _DefinedName.Sheet=Workbook.Sheets.length-1;\n\t\t\t/*:: if(Workbook.Names) */Workbook.Names.push(_DefinedName);\n\t\t\tbreak;\n\n\t\tcase 'namedcell' /*case 'NamedCell'*/: break;\n\t\tcase 'b' /*case 'B'*/: break;\n\t\tcase 'i' /*case 'I'*/: break;\n\t\tcase 'u' /*case 'U'*/: break;\n\t\tcase 's' /*case 'S'*/: break;\n\t\tcase 'em' /*case 'EM'*/: break;\n\t\tcase 'h2' /*case 'H2'*/: break;\n\t\tcase 'h3' /*case 'H3'*/: break;\n\t\tcase 'sub' /*case 'Sub'*/: break;\n\t\tcase 'sup' /*case 'Sup'*/: break;\n\t\tcase 'span' /*case 'Span'*/: break;\n\t\tcase 'alignment' /*case 'Alignment'*/:\n\t\t\tbreak;\n\t\tcase 'borders' /*case 'Borders'*/: break;\n\t\tcase 'border' /*case 'Border'*/: break;\n\t\tcase 'font' /*case 'Font'*/:\n\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\telse if(Rn[1]===\"/\") ss += str.slice(fidx, Rn.index);\n\t\t\telse fidx = Rn.index + Rn[0].length;\n\t\t\tbreak;\n\t\tcase 'interior' /*case 'Interior'*/:\n\t\t\tif(!opts.cellStyles) break;\n\t\t\tstag.Interior = xlml_parsexmltag(Rn[0]);\n\t\t\tbreak;\n\t\tcase 'protection' /*case 'Protection'*/: break;\n\n\t\tcase 'author' /*case 'Author'*/:\n\t\tcase 'title' /*case 'Title'*/:\n\t\tcase 'description' /*case 'Description'*/:\n\t\tcase 'created' /*case 'Created'*/:\n\t\tcase 'keywords' /*case 'Keywords'*/:\n\t\tcase 'subject' /*case 'Subject'*/:\n\t\tcase 'category' /*case 'Category'*/:\n\t\tcase 'company' /*case 'Company'*/:\n\t\tcase 'lastauthor' /*case 'LastAuthor'*/:\n\t\tcase 'lastsaved' /*case 'LastSaved'*/:\n\t\tcase 'lastprinted' /*case 'LastPrinted'*/:\n\t\tcase 'version' /*case 'Version'*/:\n\t\tcase 'revision' /*case 'Revision'*/:\n\t\tcase 'totaltime' /*case 'TotalTime'*/:\n\t\tcase 'hyperlinkbase' /*case 'HyperlinkBase'*/:\n\t\tcase 'manager' /*case 'Manager'*/:\n\t\tcase 'contentstatus' /*case 'ContentStatus'*/:\n\t\tcase 'identifier' /*case 'Identifier'*/:\n\t\tcase 'language' /*case 'Language'*/:\n\t\tcase 'appname' /*case 'AppName'*/:\n\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\telse if(Rn[1]===\"/\") xlml_set_prop(Props, raw_Rn3, str.slice(pidx, Rn.index));\n\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\tbreak;\n\t\tcase 'paragraphs' /*case 'Paragraphs'*/: break;\n\n\t\tcase 'styles' /*case 'Styles'*/:\n\t\tcase 'workbook' /*case 'Workbook'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse state.push([Rn[3], false]);\n\t\t\tbreak;\n\n\t\tcase 'comment' /*case 'Comment'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t\txlml_clean_comment(comment);\n\t\t\t\tcomments.push(comment);\n\t\t\t} else {\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\ttmp = xlml_parsexmltag(Rn[0]);\n\t\t\t\tcomment = ({a:tmp.Author}/*:any*/);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'autofilter' /*case 'AutoFilter'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\tvar AutoFilter = xlml_parsexmltag(Rn[0]);\n\t\t\t\tcursheet['!autofilter'] = { ref:rc_to_a1(AutoFilter.Range).replace(/\\$/g,\"\") };\n\t\t\t\tstate.push([Rn[3], true]);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'name' /*case 'Name'*/: break;\n\n\t\tcase 'datavalidation' /*case 'DataValidation'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t} else {\n\t\t\t\tif(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'pixelsperinch' /*case 'PixelsPerInch'*/:\n\t\t\tbreak;\n\t\tcase 'componentoptions' /*case 'ComponentOptions'*/:\n\t\tcase 'documentproperties' /*case 'DocumentProperties'*/:\n\t\tcase 'customdocumentproperties' /*case 'CustomDocumentProperties'*/:\n\t\tcase 'officedocumentsettings' /*case 'OfficeDocumentSettings'*/:\n\t\tcase 'pivottable' /*case 'PivotTable'*/:\n\t\tcase 'pivotcache' /*case 'PivotCache'*/:\n\t\tcase 'names' /*case 'Names'*/:\n\t\tcase 'mapinfo' /*case 'MapInfo'*/:\n\t\tcase 'pagebreaks' /*case 'PageBreaks'*/:\n\t\tcase 'querytable' /*case 'QueryTable'*/:\n\t\tcase 'sorting' /*case 'Sorting'*/:\n\t\tcase 'schema' /*case 'Schema'*/: //case 'data' /*case 'data'*/:\n\t\tcase 'conditionalformatting' /*case 'ConditionalFormatting'*/:\n\t\tcase 'smarttagtype' /*case 'SmartTagType'*/:\n\t\tcase 'smarttags' /*case 'SmartTags'*/:\n\t\tcase 'excelworkbook' /*case 'ExcelWorkbook'*/:\n\t\tcase 'workbookoptions' /*case 'WorkbookOptions'*/:\n\t\tcase 'worksheetoptions' /*case 'WorksheetOptions'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\tbreak;\n\n\t\tcase 'null' /*case 'Null'*/: break;\n\n\t\tdefault:\n\t\t\t/* FODS file root is <office:document> */\n\t\t\tif(state.length == 0 && Rn[3] == \"document\") return parse_fods(str, opts);\n\t\t\t/* UOS file root is <uof:UOF> */\n\t\t\tif(state.length == 0 && Rn[3] == \"uof\"/*\"UOF\"*/) return parse_fods(str, opts);\n\n\t\t\tvar seen = true;\n\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t/* OfficeDocumentSettings */\n\t\t\t\tcase 'officedocumentsettings' /*case 'OfficeDocumentSettings'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'allowpng' /*case 'AllowPNG'*/: break;\n\t\t\t\t\tcase 'removepersonalinformation' /*case 'RemovePersonalInformation'*/: break;\n\t\t\t\t\tcase 'downloadcomponents' /*case 'DownloadComponents'*/: break;\n\t\t\t\t\tcase 'locationofcomponents' /*case 'LocationOfComponents'*/: break;\n\t\t\t\t\tcase 'colors' /*case 'Colors'*/: break;\n\t\t\t\t\tcase 'color' /*case 'Color'*/: break;\n\t\t\t\t\tcase 'index' /*case 'Index'*/: break;\n\t\t\t\t\tcase 'rgb' /*case 'RGB'*/: break;\n\t\t\t\t\tcase 'targetscreensize' /*case 'TargetScreenSize'*/: break;\n\t\t\t\t\tcase 'readonlyrecommended' /*case 'ReadOnlyRecommended'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* ComponentOptions */\n\t\t\t\tcase 'componentoptions' /*case 'ComponentOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'toolbar' /*case 'Toolbar'*/: break;\n\t\t\t\t\tcase 'hideofficelogo' /*case 'HideOfficeLogo'*/: break;\n\t\t\t\t\tcase 'spreadsheetautofit' /*case 'SpreadsheetAutoFit'*/: break;\n\t\t\t\t\tcase 'label' /*case 'Label'*/: break;\n\t\t\t\t\tcase 'caption' /*case 'Caption'*/: break;\n\t\t\t\t\tcase 'maxheight' /*case 'MaxHeight'*/: break;\n\t\t\t\t\tcase 'maxwidth' /*case 'MaxWidth'*/: break;\n\t\t\t\t\tcase 'nextsheetnumber' /*case 'NextSheetNumber'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* ExcelWorkbook */\n\t\t\t\tcase 'excelworkbook' /*case 'ExcelWorkbook'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'date1904' /*case 'Date1904'*/:\n\t\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\t\tWorkbook.WBProps.date1904 = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'windowheight' /*case 'WindowHeight'*/: break;\n\t\t\t\t\tcase 'windowwidth' /*case 'WindowWidth'*/: break;\n\t\t\t\t\tcase 'windowtopx' /*case 'WindowTopX'*/: break;\n\t\t\t\t\tcase 'windowtopy' /*case 'WindowTopY'*/: break;\n\t\t\t\t\tcase 'tabratio' /*case 'TabRatio'*/: break;\n\t\t\t\t\tcase 'protectstructure' /*case 'ProtectStructure'*/: break;\n\t\t\t\t\tcase 'protectwindow' /*case 'ProtectWindow'*/: break;\n\t\t\t\t\tcase 'protectwindows' /*case 'ProtectWindows'*/: break;\n\t\t\t\t\tcase 'activesheet' /*case 'ActiveSheet'*/: break;\n\t\t\t\t\tcase 'displayinknotes' /*case 'DisplayInkNotes'*/: break;\n\t\t\t\t\tcase 'firstvisiblesheet' /*case 'FirstVisibleSheet'*/: break;\n\t\t\t\t\tcase 'supbook' /*case 'SupBook'*/: break;\n\t\t\t\t\tcase 'sheetname' /*case 'SheetName'*/: break;\n\t\t\t\t\tcase 'sheetindex' /*case 'SheetIndex'*/: break;\n\t\t\t\t\tcase 'sheetindexfirst' /*case 'SheetIndexFirst'*/: break;\n\t\t\t\t\tcase 'sheetindexlast' /*case 'SheetIndexLast'*/: break;\n\t\t\t\t\tcase 'dll' /*case 'Dll'*/: break;\n\t\t\t\t\tcase 'acceptlabelsinformulas' /*case 'AcceptLabelsInFormulas'*/: break;\n\t\t\t\t\tcase 'donotsavelinkvalues' /*case 'DoNotSaveLinkValues'*/: break;\n\t\t\t\t\tcase 'iteration' /*case 'Iteration'*/: break;\n\t\t\t\t\tcase 'maxiterations' /*case 'MaxIterations'*/: break;\n\t\t\t\t\tcase 'maxchange' /*case 'MaxChange'*/: break;\n\t\t\t\t\tcase 'path' /*case 'Path'*/: break;\n\t\t\t\t\tcase 'xct' /*case 'Xct'*/: break;\n\t\t\t\t\tcase 'count' /*case 'Count'*/: break;\n\t\t\t\t\tcase 'selectedsheets' /*case 'SelectedSheets'*/: break;\n\t\t\t\t\tcase 'calculation' /*case 'Calculation'*/: break;\n\t\t\t\t\tcase 'uncalced' /*case 'Uncalced'*/: break;\n\t\t\t\t\tcase 'startupprompt' /*case 'StartupPrompt'*/: break;\n\t\t\t\t\tcase 'crn' /*case 'Crn'*/: break;\n\t\t\t\t\tcase 'externname' /*case 'ExternName'*/: break;\n\t\t\t\t\tcase 'formula' /*case 'Formula'*/: break;\n\t\t\t\t\tcase 'colfirst' /*case 'ColFirst'*/: break;\n\t\t\t\t\tcase 'collast' /*case 'ColLast'*/: break;\n\t\t\t\t\tcase 'wantadvise' /*case 'WantAdvise'*/: break;\n\t\t\t\t\tcase 'boolean' /*case 'Boolean'*/: break;\n\t\t\t\t\tcase 'error' /*case 'Error'*/: break;\n\t\t\t\t\tcase 'text' /*case 'Text'*/: break;\n\t\t\t\t\tcase 'ole' /*case 'OLE'*/: break;\n\t\t\t\t\tcase 'noautorecover' /*case 'NoAutoRecover'*/: break;\n\t\t\t\t\tcase 'publishobjects' /*case 'PublishObjects'*/: break;\n\t\t\t\t\tcase 'donotcalculatebeforesave' /*case 'DoNotCalculateBeforeSave'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'refmoder1c1' /*case 'RefModeR1C1'*/: break;\n\t\t\t\t\tcase 'embedsavesmarttags' /*case 'EmbedSaveSmartTags'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* WorkbookOptions */\n\t\t\t\tcase 'workbookoptions' /*case 'WorkbookOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'owcversion' /*case 'OWCVersion'*/: break;\n\t\t\t\t\tcase 'height' /*case 'Height'*/: break;\n\t\t\t\t\tcase 'width' /*case 'Width'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* WorksheetOptions */\n\t\t\t\tcase 'worksheetoptions' /*case 'WorksheetOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'visible' /*case 'Visible'*/:\n\t\t\t\t\t\tif(Rn[0].slice(-2) === \"/>\"){/* empty */}\n\t\t\t\t\t\telse if(Rn[1]===\"/\") switch(str.slice(pidx, Rn.index)) {\n\t\t\t\t\t\t\tcase \"SheetHidden\": wsprops.Hidden = 1; break;\n\t\t\t\t\t\t\tcase \"SheetVeryHidden\": wsprops.Hidden = 2; break;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'header' /*case 'Header'*/:\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml');\n\t\t\t\t\t\tif(!isNaN(+parsexmltag(Rn[0]).Margin)) cursheet['!margins'].header = +parsexmltag(Rn[0]).Margin;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'footer' /*case 'Footer'*/:\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml');\n\t\t\t\t\t\tif(!isNaN(+parsexmltag(Rn[0]).Margin)) cursheet['!margins'].footer = +parsexmltag(Rn[0]).Margin;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'pagemargins' /*case 'PageMargins'*/:\n\t\t\t\t\t\tvar pagemargins = parsexmltag(Rn[0]);\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={},'xlml');\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Top)) cursheet['!margins'].top = +pagemargins.Top;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Left)) cursheet['!margins'].left = +pagemargins.Left;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Right)) cursheet['!margins'].right = +pagemargins.Right;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Bottom)) cursheet['!margins'].bottom = +pagemargins.Bottom;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'displayrighttoleft' /*case 'DisplayRightToLeft'*/:\n\t\t\t\t\t\tif(!Workbook.Views) Workbook.Views = [];\n\t\t\t\t\t\tif(!Workbook.Views[0]) Workbook.Views[0] = {};\n\t\t\t\t\t\tWorkbook.Views[0].RTL = true;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'freezepanes' /*case 'FreezePanes'*/: break;\n\t\t\t\t\tcase 'frozennosplit' /*case 'FrozenNoSplit'*/: break;\n\n\t\t\t\t\tcase 'splithorizontal' /*case 'SplitHorizontal'*/:\n\t\t\t\t\tcase 'splitvertical' /*case 'SplitVertical'*/:\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'donotdisplaygridlines' /*case 'DoNotDisplayGridlines'*/:\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'activerow' /*case 'ActiveRow'*/: break;\n\t\t\t\t\tcase 'activecol' /*case 'ActiveCol'*/: break;\n\t\t\t\t\tcase 'toprowbottompane' /*case 'TopRowBottomPane'*/: break;\n\t\t\t\t\tcase 'leftcolumnrightpane' /*case 'LeftColumnRightPane'*/: break;\n\n\t\t\t\t\tcase 'unsynced' /*case 'Unsynced'*/: break;\n\t\t\t\t\tcase 'print' /*case 'Print'*/: break;\n\t\t\t\t\tcase 'printerrors' /*case 'PrintErrors'*/: break;\n\t\t\t\t\tcase 'panes' /*case 'Panes'*/: break;\n\t\t\t\t\tcase 'scale' /*case 'Scale'*/: break;\n\t\t\t\t\tcase 'pane' /*case 'Pane'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'layout' /*case 'Layout'*/: break;\n\t\t\t\t\tcase 'pagesetup' /*case 'PageSetup'*/: break;\n\t\t\t\t\tcase 'selected' /*case 'Selected'*/: break;\n\t\t\t\t\tcase 'protectobjects' /*case 'ProtectObjects'*/: break;\n\t\t\t\t\tcase 'enableselection' /*case 'EnableSelection'*/: break;\n\t\t\t\t\tcase 'protectscenarios' /*case 'ProtectScenarios'*/: break;\n\t\t\t\t\tcase 'validprinterinfo' /*case 'ValidPrinterInfo'*/: break;\n\t\t\t\t\tcase 'horizontalresolution' /*case 'HorizontalResolution'*/: break;\n\t\t\t\t\tcase 'verticalresolution' /*case 'VerticalResolution'*/: break;\n\t\t\t\t\tcase 'numberofcopies' /*case 'NumberofCopies'*/: break;\n\t\t\t\t\tcase 'activepane' /*case 'ActivePane'*/: break;\n\t\t\t\t\tcase 'toprowvisible' /*case 'TopRowVisible'*/: break;\n\t\t\t\t\tcase 'leftcolumnvisible' /*case 'LeftColumnVisible'*/: break;\n\t\t\t\t\tcase 'fittopage' /*case 'FitToPage'*/: break;\n\t\t\t\t\tcase 'rangeselection' /*case 'RangeSelection'*/: break;\n\t\t\t\t\tcase 'papersizeindex' /*case 'PaperSizeIndex'*/: break;\n\t\t\t\t\tcase 'pagelayoutzoom' /*case 'PageLayoutZoom'*/: break;\n\t\t\t\t\tcase 'pagebreakzoom' /*case 'PageBreakZoom'*/: break;\n\t\t\t\t\tcase 'filteron' /*case 'FilterOn'*/: break;\n\t\t\t\t\tcase 'fitwidth' /*case 'FitWidth'*/: break;\n\t\t\t\t\tcase 'fitheight' /*case 'FitHeight'*/: break;\n\t\t\t\t\tcase 'commentslayout' /*case 'CommentsLayout'*/: break;\n\t\t\t\t\tcase 'zoom' /*case 'Zoom'*/: break;\n\t\t\t\t\tcase 'lefttoright' /*case 'LeftToRight'*/: break;\n\t\t\t\t\tcase 'gridlines' /*case 'Gridlines'*/: break;\n\t\t\t\t\tcase 'allowsort' /*case 'AllowSort'*/: break;\n\t\t\t\t\tcase 'allowfilter' /*case 'AllowFilter'*/: break;\n\t\t\t\t\tcase 'allowinsertrows' /*case 'AllowInsertRows'*/: break;\n\t\t\t\t\tcase 'allowdeleterows' /*case 'AllowDeleteRows'*/: break;\n\t\t\t\t\tcase 'allowinsertcols' /*case 'AllowInsertCols'*/: break;\n\t\t\t\t\tcase 'allowdeletecols' /*case 'AllowDeleteCols'*/: break;\n\t\t\t\t\tcase 'allowinserthyperlinks' /*case 'AllowInsertHyperlinks'*/: break;\n\t\t\t\t\tcase 'allowformatcells' /*case 'AllowFormatCells'*/: break;\n\t\t\t\t\tcase 'allowsizecols' /*case 'AllowSizeCols'*/: break;\n\t\t\t\t\tcase 'allowsizerows' /*case 'AllowSizeRows'*/: break;\n\t\t\t\t\tcase 'nosummaryrowsbelowdetail' /*case 'NoSummaryRowsBelowDetail'*/:\n\t\t\t\t\t\tif(!cursheet[\"!outline\"]) cursheet[\"!outline\"] = {};\n\t\t\t\t\t\tcursheet[\"!outline\"].above = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'tabcolorindex' /*case 'TabColorIndex'*/: break;\n\t\t\t\t\tcase 'donotdisplayheadings' /*case 'DoNotDisplayHeadings'*/: break;\n\t\t\t\t\tcase 'showpagelayoutzoom' /*case 'ShowPageLayoutZoom'*/: break;\n\t\t\t\t\tcase 'nosummarycolumnsrightdetail' /*case 'NoSummaryColumnsRightDetail'*/:\n\t\t\t\t\t\tif(!cursheet[\"!outline\"]) cursheet[\"!outline\"] = {};\n\t\t\t\t\t\tcursheet[\"!outline\"].left = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'blackandwhite' /*case 'BlackAndWhite'*/: break;\n\t\t\t\t\tcase 'donotdisplayzeros' /*case 'DoNotDisplayZeros'*/: break;\n\t\t\t\t\tcase 'displaypagebreak' /*case 'DisplayPageBreak'*/: break;\n\t\t\t\t\tcase 'rowcolheadings' /*case 'RowColHeadings'*/: break;\n\t\t\t\t\tcase 'donotdisplayoutline' /*case 'DoNotDisplayOutline'*/: break;\n\t\t\t\t\tcase 'noorientation' /*case 'NoOrientation'*/: break;\n\t\t\t\t\tcase 'allowusepivottables' /*case 'AllowUsePivotTables'*/: break;\n\t\t\t\t\tcase 'zeroheight' /*case 'ZeroHeight'*/: break;\n\t\t\t\t\tcase 'viewablerange' /*case 'ViewableRange'*/: break;\n\t\t\t\t\tcase 'selection' /*case 'Selection'*/: break;\n\t\t\t\t\tcase 'protectcontents' /*case 'ProtectContents'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* PivotTable */\n\t\t\t\tcase 'pivottable' /*case 'PivotTable'*/: case 'pivotcache' /*case 'PivotCache'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'immediateitemsondrop' /*case 'ImmediateItemsOnDrop'*/: break;\n\t\t\t\t\tcase 'showpagemultipleitemlabel' /*case 'ShowPageMultipleItemLabel'*/: break;\n\t\t\t\t\tcase 'compactrowindent' /*case 'CompactRowIndent'*/: break;\n\t\t\t\t\tcase 'location' /*case 'Location'*/: break;\n\t\t\t\t\tcase 'pivotfield' /*case 'PivotField'*/: break;\n\t\t\t\t\tcase 'orientation' /*case 'Orientation'*/: break;\n\t\t\t\t\tcase 'layoutform' /*case 'LayoutForm'*/: break;\n\t\t\t\t\tcase 'layoutsubtotallocation' /*case 'LayoutSubtotalLocation'*/: break;\n\t\t\t\t\tcase 'layoutcompactrow' /*case 'LayoutCompactRow'*/: break;\n\t\t\t\t\tcase 'position' /*case 'Position'*/: break;\n\t\t\t\t\tcase 'pivotitem' /*case 'PivotItem'*/: break;\n\t\t\t\t\tcase 'datatype' /*case 'DataType'*/: break;\n\t\t\t\t\tcase 'datafield' /*case 'DataField'*/: break;\n\t\t\t\t\tcase 'sourcename' /*case 'SourceName'*/: break;\n\t\t\t\t\tcase 'parentfield' /*case 'ParentField'*/: break;\n\t\t\t\t\tcase 'ptlineitems' /*case 'PTLineItems'*/: break;\n\t\t\t\t\tcase 'ptlineitem' /*case 'PTLineItem'*/: break;\n\t\t\t\t\tcase 'countofsameitems' /*case 'CountOfSameItems'*/: break;\n\t\t\t\t\tcase 'item' /*case 'Item'*/: break;\n\t\t\t\t\tcase 'itemtype' /*case 'ItemType'*/: break;\n\t\t\t\t\tcase 'ptsource' /*case 'PTSource'*/: break;\n\t\t\t\t\tcase 'cacheindex' /*case 'CacheIndex'*/: break;\n\t\t\t\t\tcase 'consolidationreference' /*case 'ConsolidationReference'*/: break;\n\t\t\t\t\tcase 'filename' /*case 'FileName'*/: break;\n\t\t\t\t\tcase 'reference' /*case 'Reference'*/: break;\n\t\t\t\t\tcase 'nocolumngrand' /*case 'NoColumnGrand'*/: break;\n\t\t\t\t\tcase 'norowgrand' /*case 'NoRowGrand'*/: break;\n\t\t\t\t\tcase 'blanklineafteritems' /*case 'BlankLineAfterItems'*/: break;\n\t\t\t\t\tcase 'hidden' /*case 'Hidden'*/: break;\n\t\t\t\t\tcase 'subtotal' /*case 'Subtotal'*/: break;\n\t\t\t\t\tcase 'basefield' /*case 'BaseField'*/: break;\n\t\t\t\t\tcase 'mapchilditems' /*case 'MapChildItems'*/: break;\n\t\t\t\t\tcase 'function' /*case 'Function'*/: break;\n\t\t\t\t\tcase 'refreshonfileopen' /*case 'RefreshOnFileOpen'*/: break;\n\t\t\t\t\tcase 'printsettitles' /*case 'PrintSetTitles'*/: break;\n\t\t\t\t\tcase 'mergelabels' /*case 'MergeLabels'*/: break;\n\t\t\t\t\tcase 'defaultversion' /*case 'DefaultVersion'*/: break;\n\t\t\t\t\tcase 'refreshname' /*case 'RefreshName'*/: break;\n\t\t\t\t\tcase 'refreshdate' /*case 'RefreshDate'*/: break;\n\t\t\t\t\tcase 'refreshdatecopy' /*case 'RefreshDateCopy'*/: break;\n\t\t\t\t\tcase 'versionlastrefresh' /*case 'VersionLastRefresh'*/: break;\n\t\t\t\t\tcase 'versionlastupdate' /*case 'VersionLastUpdate'*/: break;\n\t\t\t\t\tcase 'versionupdateablemin' /*case 'VersionUpdateableMin'*/: break;\n\t\t\t\t\tcase 'versionrefreshablemin' /*case 'VersionRefreshableMin'*/: break;\n\t\t\t\t\tcase 'calculation' /*case 'Calculation'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* PageBreaks */\n\t\t\t\tcase 'pagebreaks' /*case 'PageBreaks'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'colbreaks' /*case 'ColBreaks'*/: break;\n\t\t\t\t\tcase 'colbreak' /*case 'ColBreak'*/: break;\n\t\t\t\t\tcase 'rowbreaks' /*case 'RowBreaks'*/: break;\n\t\t\t\t\tcase 'rowbreak' /*case 'RowBreak'*/: break;\n\t\t\t\t\tcase 'colstart' /*case 'ColStart'*/: break;\n\t\t\t\t\tcase 'colend' /*case 'ColEnd'*/: break;\n\t\t\t\t\tcase 'rowend' /*case 'RowEnd'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* AutoFilter */\n\t\t\t\tcase 'autofilter' /*case 'AutoFilter'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'autofiltercolumn' /*case 'AutoFilterColumn'*/: break;\n\t\t\t\t\tcase 'autofiltercondition' /*case 'AutoFilterCondition'*/: break;\n\t\t\t\t\tcase 'autofilterand' /*case 'AutoFilterAnd'*/: break;\n\t\t\t\t\tcase 'autofilteror' /*case 'AutoFilterOr'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* QueryTable */\n\t\t\t\tcase 'querytable' /*case 'QueryTable'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'id' /*case 'Id'*/: break;\n\t\t\t\t\tcase 'autoformatfont' /*case 'AutoFormatFont'*/: break;\n\t\t\t\t\tcase 'autoformatpattern' /*case 'AutoFormatPattern'*/: break;\n\t\t\t\t\tcase 'querysource' /*case 'QuerySource'*/: break;\n\t\t\t\t\tcase 'querytype' /*case 'QueryType'*/: break;\n\t\t\t\t\tcase 'enableredirections' /*case 'EnableRedirections'*/: break;\n\t\t\t\t\tcase 'refreshedinxl9' /*case 'RefreshedInXl9'*/: break;\n\t\t\t\t\tcase 'urlstring' /*case 'URLString'*/: break;\n\t\t\t\t\tcase 'htmltables' /*case 'HTMLTables'*/: break;\n\t\t\t\t\tcase 'connection' /*case 'Connection'*/: break;\n\t\t\t\t\tcase 'commandtext' /*case 'CommandText'*/: break;\n\t\t\t\t\tcase 'refreshinfo' /*case 'RefreshInfo'*/: break;\n\t\t\t\t\tcase 'notitles' /*case 'NoTitles'*/: break;\n\t\t\t\t\tcase 'nextid' /*case 'NextId'*/: break;\n\t\t\t\t\tcase 'columninfo' /*case 'ColumnInfo'*/: break;\n\t\t\t\t\tcase 'overwritecells' /*case 'OverwriteCells'*/: break;\n\t\t\t\t\tcase 'donotpromptforfile' /*case 'DoNotPromptForFile'*/: break;\n\t\t\t\t\tcase 'textwizardsettings' /*case 'TextWizardSettings'*/: break;\n\t\t\t\t\tcase 'source' /*case 'Source'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'decimal' /*case 'Decimal'*/: break;\n\t\t\t\t\tcase 'thousandseparator' /*case 'ThousandSeparator'*/: break;\n\t\t\t\t\tcase 'trailingminusnumbers' /*case 'TrailingMinusNumbers'*/: break;\n\t\t\t\t\tcase 'formatsettings' /*case 'FormatSettings'*/: break;\n\t\t\t\t\tcase 'fieldtype' /*case 'FieldType'*/: break;\n\t\t\t\t\tcase 'delimiters' /*case 'Delimiters'*/: break;\n\t\t\t\t\tcase 'tab' /*case 'Tab'*/: break;\n\t\t\t\t\tcase 'comma' /*case 'Comma'*/: break;\n\t\t\t\t\tcase 'autoformatname' /*case 'AutoFormatName'*/: break;\n\t\t\t\t\tcase 'versionlastedit' /*case 'VersionLastEdit'*/: break;\n\t\t\t\t\tcase 'versionlastrefresh' /*case 'VersionLastRefresh'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\tcase 'datavalidation' /*case 'DataValidation'*/:\n\t\t\t\tswitch(Rn[3]) {\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\n\t\t\t\t\tcase 'type' /*case 'Type'*/: break;\n\t\t\t\t\tcase 'min' /*case 'Min'*/: break;\n\t\t\t\t\tcase 'max' /*case 'Max'*/: break;\n\t\t\t\t\tcase 'sort' /*case 'Sort'*/: break;\n\t\t\t\t\tcase 'descending' /*case 'Descending'*/: break;\n\t\t\t\t\tcase 'order' /*case 'Order'*/: break;\n\t\t\t\t\tcase 'casesensitive' /*case 'CaseSensitive'*/: break;\n\t\t\t\t\tcase 'value' /*case 'Value'*/: break;\n\t\t\t\t\tcase 'errorstyle' /*case 'ErrorStyle'*/: break;\n\t\t\t\t\tcase 'errormessage' /*case 'ErrorMessage'*/: break;\n\t\t\t\t\tcase 'errortitle' /*case 'ErrorTitle'*/: break;\n\t\t\t\t\tcase 'inputmessage' /*case 'InputMessage'*/: break;\n\t\t\t\t\tcase 'inputtitle' /*case 'InputTitle'*/: break;\n\t\t\t\t\tcase 'combohide' /*case 'ComboHide'*/: break;\n\t\t\t\t\tcase 'inputhide' /*case 'InputHide'*/: break;\n\t\t\t\t\tcase 'condition' /*case 'Condition'*/: break;\n\t\t\t\t\tcase 'qualifier' /*case 'Qualifier'*/: break;\n\t\t\t\t\tcase 'useblank' /*case 'UseBlank'*/: break;\n\t\t\t\t\tcase 'value1' /*case 'Value1'*/: break;\n\t\t\t\t\tcase 'value2' /*case 'Value2'*/: break;\n\t\t\t\t\tcase 'format' /*case 'Format'*/: break;\n\n\t\t\t\t\tcase 'cellrangelist' /*case 'CellRangeList'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\tcase 'sorting' /*case 'Sorting'*/:\n\t\t\t\tcase 'conditionalformatting' /*case 'ConditionalFormatting'*/:\n\t\t\t\tswitch(Rn[3]) {\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\t\t\t\t\tcase 'type' /*case 'Type'*/: break;\n\t\t\t\t\tcase 'min' /*case 'Min'*/: break;\n\t\t\t\t\tcase 'max' /*case 'Max'*/: break;\n\t\t\t\t\tcase 'sort' /*case 'Sort'*/: break;\n\t\t\t\t\tcase 'descending' /*case 'Descending'*/: break;\n\t\t\t\t\tcase 'order' /*case 'Order'*/: break;\n\t\t\t\t\tcase 'casesensitive' /*case 'CaseSensitive'*/: break;\n\t\t\t\t\tcase 'value' /*case 'Value'*/: break;\n\t\t\t\t\tcase 'errorstyle' /*case 'ErrorStyle'*/: break;\n\t\t\t\t\tcase 'errormessage' /*case 'ErrorMessage'*/: break;\n\t\t\t\t\tcase 'errortitle' /*case 'ErrorTitle'*/: break;\n\t\t\t\t\tcase 'cellrangelist' /*case 'CellRangeList'*/: break;\n\t\t\t\t\tcase 'inputmessage' /*case 'InputMessage'*/: break;\n\t\t\t\t\tcase 'inputtitle' /*case 'InputTitle'*/: break;\n\t\t\t\t\tcase 'combohide' /*case 'ComboHide'*/: break;\n\t\t\t\t\tcase 'inputhide' /*case 'InputHide'*/: break;\n\t\t\t\t\tcase 'condition' /*case 'Condition'*/: break;\n\t\t\t\t\tcase 'qualifier' /*case 'Qualifier'*/: break;\n\t\t\t\t\tcase 'useblank' /*case 'UseBlank'*/: break;\n\t\t\t\t\tcase 'value1' /*case 'Value1'*/: break;\n\t\t\t\t\tcase 'value2' /*case 'Value2'*/: break;\n\t\t\t\t\tcase 'format' /*case 'Format'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* MapInfo (schema) */\n\t\t\t\tcase 'mapinfo' /*case 'MapInfo'*/: case 'schema' /*case 'Schema'*/: case 'data' /*case 'data'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'map' /*case 'Map'*/: break;\n\t\t\t\t\tcase 'entry' /*case 'Entry'*/: break;\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\t\t\t\t\tcase 'xpath' /*case 'XPath'*/: break;\n\t\t\t\t\tcase 'field' /*case 'Field'*/: break;\n\t\t\t\t\tcase 'xsdtype' /*case 'XSDType'*/: break;\n\t\t\t\t\tcase 'filteron' /*case 'FilterOn'*/: break;\n\t\t\t\t\tcase 'aggregate' /*case 'Aggregate'*/: break;\n\t\t\t\t\tcase 'elementtype' /*case 'ElementType'*/: break;\n\t\t\t\t\tcase 'attributetype' /*case 'AttributeType'*/: break;\n\t\t\t\t/* These are from xsd (XML Schema Definition) */\n\t\t\t\t\tcase 'schema' /*case 'schema'*/:\n\t\t\t\t\tcase 'element' /*case 'element'*/:\n\t\t\t\t\tcase 'complextype' /*case 'complexType'*/:\n\t\t\t\t\tcase 'datatype' /*case 'datatype'*/:\n\t\t\t\t\tcase 'all' /*case 'all'*/:\n\t\t\t\t\tcase 'attribute' /*case 'attribute'*/:\n\t\t\t\t\tcase 'extends' /*case 'extends'*/: break;\n\n\t\t\t\t\tcase 'row' /*case 'row'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* SmartTags (can be anything) */\n\t\t\t\tcase 'smarttags' /*case 'SmartTags'*/: break;\n\n\t\t\t\tdefault: seen = false; break;\n\t\t\t}\n\t\t\tif(seen) break;\n\t\t\t/* CustomDocumentProperties */\n\t\t\tif(Rn[3].match(/!\\[CDATA/)) break;\n\t\t\tif(!state[state.length-1][1]) throw 'Unrecognized tag: ' + Rn[3] + \"|\" + state.join(\"|\");\n\t\t\tif(state[state.length-1][0]===/*'CustomDocumentProperties'*/'customdocumentproperties') {\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\t\telse if(Rn[1]===\"/\") xlml_set_custprop(Custprops, raw_Rn3, cp, str.slice(pidx, Rn.index));\n\t\t\t\telse { cp = Rn; pidx = Rn.index + Rn[0].length; }\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(opts.WTF) throw 'Unrecognized tag: ' + Rn[3] + \"|\" + state.join(\"|\");\n\t}\n\tvar out = ({}/*:any*/);\n\tif(!opts.bookSheets && !opts.bookProps) out.Sheets = sheets;\n\tout.SheetNames = sheetnames;\n\tout.Workbook = Workbook;\n\tout.SSF = dup(table_fmt);\n\tout.Props = Props;\n\tout.Custprops = Custprops;\n\treturn out;\n}\n\nfunction parse_xlml(data/*:RawBytes|string*/, opts)/*:Workbook*/ {\n\tfix_read_opts(opts=opts||{});\n\tswitch(opts.type||\"base64\") {\n\t\tcase \"base64\": return parse_xlml_xml(Base64_decode(data), opts);\n\t\tcase \"binary\": case \"buffer\": case \"file\": return parse_xlml_xml(data, opts);\n\t\tcase \"array\": return parse_xlml_xml(a2s(data), opts);\n\t}\n\t/*:: throw new Error(\"unsupported type \" + opts.type); */\n}\n\n/* TODO */\nfunction write_props_xlml(wb/*:Workbook*/, opts)/*:string*/ {\n\tvar o/*:Array<string>*/ = [];\n\t/* DocumentProperties */\n\tif(wb.Props) o.push(xlml_write_docprops(wb.Props, opts));\n\t/* CustomDocumentProperties */\n\tif(wb.Custprops) o.push(xlml_write_custprops(wb.Props, wb.Custprops, opts));\n\treturn o.join(\"\");\n}\n/* TODO */\nfunction write_wb_xlml(/*::wb, opts*/)/*:string*/ {\n\t/* OfficeDocumentSettings */\n\t/* ExcelWorkbook */\n\treturn \"\";\n}\n/* TODO */\nfunction write_sty_xlml(wb, opts)/*:string*/ {\n\t/* Styles */\n\tvar styles/*:Array<string>*/ = ['<Style ss:ID=\"Default\" ss:Name=\"Normal\"><NumberFormat/></Style>'];\n\topts.cellXfs.forEach(function(xf, id) {\n\t\tvar payload/*:Array<string>*/ = [];\n\t\tpayload.push(writextag('NumberFormat', null, {\"ss:Format\": escapexml(table_fmt[xf.numFmtId])}));\n\n\t\tvar o = /*::(*/{\"ss:ID\": \"s\" + (21+id)}/*:: :any)*/;\n\t\tstyles.push(writextag('Style', payload.join(\"\"), o));\n\t});\n\treturn writextag(\"Styles\", styles.join(\"\"));\n}\nfunction write_name_xlml(n) { return writextag(\"NamedRange\", null, {\"ss:Name\": n.Name, \"ss:RefersTo\":\"=\" + a1_to_rc(n.Ref, {r:0,c:0})}); }\nfunction write_names_xlml(wb/*::, opts*/)/*:string*/ {\n\tif(!((wb||{}).Workbook||{}).Names) return \"\";\n\t/*:: if(!wb || !wb.Workbook || !wb.Workbook.Names) throw new Error(\"unreachable\"); */\n\tvar names/*:Array<any>*/ = wb.Workbook.Names;\n\tvar out/*:Array<string>*/ = [];\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar n = names[i];\n\t\tif(n.Sheet != null) continue;\n\t\tif(n.Name.match(/^_xlfn\\./)) continue;\n\t\tout.push(write_name_xlml(n));\n\t}\n\treturn writextag(\"Names\", out.join(\"\"));\n}\nfunction write_ws_xlml_names(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws) return \"\";\n\tif(!((wb||{}).Workbook||{}).Names) return \"\";\n\t/*:: if(!wb || !wb.Workbook || !wb.Workbook.Names) throw new Error(\"unreachable\"); */\n\tvar names/*:Array<any>*/ = wb.Workbook.Names;\n\tvar out/*:Array<string>*/ = [];\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar n = names[i];\n\t\tif(n.Sheet != idx) continue;\n\t\t/*switch(n.Name) {\n\t\t\tcase \"_\": continue;\n\t\t}*/\n\t\tif(n.Name.match(/^_xlfn\\./)) continue;\n\t\tout.push(write_name_xlml(n));\n\t}\n\treturn out.join(\"\");\n}\n/* WorksheetOptions */\nfunction write_ws_xlml_wsopts(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws) return \"\";\n\tvar o/*:Array<string>*/ = [];\n\t/* NOTE: spec technically allows any order, but stick with implied order */\n\n\t/* FitToPage */\n\t/* DoNotDisplayColHeaders */\n\t/* DoNotDisplayRowHeaders */\n\t/* ViewableRange */\n\t/* Selection */\n\t/* GridlineColor */\n\t/* Name */\n\t/* ExcelWorksheetType */\n\t/* IntlMacro */\n\t/* Unsynced */\n\t/* Selected */\n\t/* CodeName */\n\n\tif(ws['!margins']) {\n\t\to.push(\"<PageSetup>\");\n\t\tif(ws['!margins'].header) o.push(writextag(\"Header\", null, {'x:Margin':ws['!margins'].header}));\n\t\tif(ws['!margins'].footer) o.push(writextag(\"Footer\", null, {'x:Margin':ws['!margins'].footer}));\n\t\to.push(writextag(\"PageMargins\", null, {\n\t\t\t'x:Bottom': ws['!margins'].bottom || \"0.75\",\n\t\t\t'x:Left': ws['!margins'].left || \"0.7\",\n\t\t\t'x:Right': ws['!margins'].right || \"0.7\",\n\t\t\t'x:Top': ws['!margins'].top || \"0.75\"\n\t\t}));\n\t\to.push(\"</PageSetup>\");\n\t}\n\n\t/* PageSetup */\n\t/* DisplayPageBreak */\n\t/* TransitionExpressionEvaluation */\n\t/* TransitionFormulaEntry */\n\t/* Print */\n\t/* Zoom */\n\t/* PageLayoutZoom */\n\t/* PageBreakZoom */\n\t/* ShowPageBreakZoom */\n\t/* DefaultRowHeight */\n\t/* DefaultColumnWidth */\n\t/* StandardWidth */\n\n\tif(wb && wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx]) {\n\t\t/* Visible */\n\t\tif(wb.Workbook.Sheets[idx].Hidden) o.push(writextag(\"Visible\", (wb.Workbook.Sheets[idx].Hidden == 1 ? \"SheetHidden\" : \"SheetVeryHidden\"), {}));\n\t\telse {\n\t\t\t/* Selected */\n\t\t\tfor(var i = 0; i < idx; ++i) if(wb.Workbook.Sheets[i] && !wb.Workbook.Sheets[i].Hidden) break;\n\t\t\tif(i == idx) o.push(\"<Selected/>\");\n\t\t}\n\t}\n\n\t/* LeftColumnVisible */\n\n\tif(((((wb||{}).Workbook||{}).Views||[])[0]||{}).RTL) o.push(\"<DisplayRightToLeft/>\");\n\n\t/* GridlineColorIndex */\n\t/* DisplayFormulas */\n\t/* DoNotDisplayGridlines */\n\t/* DoNotDisplayHeadings */\n\t/* DoNotDisplayOutline */\n\t/* ApplyAutomaticOutlineStyles */\n\t/* NoSummaryRowsBelowDetail */\n\t/* NoSummaryColumnsRightDetail */\n\t/* DoNotDisplayZeros */\n\t/* ActiveRow */\n\t/* ActiveColumn */\n\t/* FilterOn */\n\t/* RangeSelection */\n\t/* TopRowVisible */\n\t/* TopRowBottomPane */\n\t/* LeftColumnRightPane */\n\t/* ActivePane */\n\t/* SplitHorizontal */\n\t/* SplitVertical */\n\t/* FreezePanes */\n\t/* FrozenNoSplit */\n\t/* TabColorIndex */\n\t/* Panes */\n\n\t/* NOTE: Password not supported in XLML Format */\n\tif(ws['!protect']) {\n\t\to.push(writetag(\"ProtectContents\", \"True\"));\n\t\tif(ws['!protect'].objects) o.push(writetag(\"ProtectObjects\", \"True\"));\n\t\tif(ws['!protect'].scenarios) o.push(writetag(\"ProtectScenarios\", \"True\"));\n\t\tif(ws['!protect'].selectLockedCells != null && !ws['!protect'].selectLockedCells) o.push(writetag(\"EnableSelection\", \"NoSelection\"));\n\t\telse if(ws['!protect'].selectUnlockedCells != null && !ws['!protect'].selectUnlockedCells) o.push(writetag(\"EnableSelection\", \"UnlockedCells\"));\n\t[\n\t\t[ \"formatCells\", \"AllowFormatCells\" ],\n\t\t[ \"formatColumns\", \"AllowSizeCols\" ],\n\t\t[ \"formatRows\", \"AllowSizeRows\" ],\n\t\t[ \"insertColumns\", \"AllowInsertCols\" ],\n\t\t[ \"insertRows\", \"AllowInsertRows\" ],\n\t\t[ \"insertHyperlinks\", \"AllowInsertHyperlinks\" ],\n\t\t[ \"deleteColumns\", \"AllowDeleteCols\" ],\n\t\t[ \"deleteRows\", \"AllowDeleteRows\" ],\n\t\t[ \"sort\", \"AllowSort\" ],\n\t\t[ \"autoFilter\", \"AllowFilter\" ],\n\t\t[ \"pivotTables\", \"AllowUsePivotTables\" ]\n\t].forEach(function(x) { if(ws['!protect'][x[0]]) o.push(\"<\"+x[1]+\"/>\"); });\n\t}\n\n\tif(o.length == 0) return \"\";\n\treturn writextag(\"WorksheetOptions\", o.join(\"\"), {xmlns:XLMLNS.x});\n}\nfunction write_ws_xlml_comment(comments/*:Array<any>*/)/*:string*/ {\n\treturn comments.map(function(c) {\n\t\t// TODO: formatted text\n\t\tvar t = xlml_unfixstr(c.t||\"\");\n\t\tvar d =writextag(\"ss:Data\", t, {\"xmlns\":\"http://www.w3.org/TR/REC-html40\"});\n\t\treturn writextag(\"Comment\", d, {\"ss:Author\":c.a});\n\t}).join(\"\");\n}\nfunction write_ws_xlml_cell(cell, ref/*:string*/, ws, opts, idx/*:number*/, wb, addr)/*:string*/{\n\tif(!cell || (cell.v == undefined && cell.f == undefined)) return \"\";\n\n\tvar attr = {};\n\tif(cell.f) attr[\"ss:Formula\"] = \"=\" + escapexml(a1_to_rc(cell.f, addr));\n\tif(cell.F && cell.F.slice(0, ref.length) == ref) {\n\t\tvar end = decode_cell(cell.F.slice(ref.length + 1));\n\t\tattr[\"ss:ArrayRange\"] = \"RC:R\" + (end.r == addr.r ? \"\" : \"[\" + (end.r - addr.r) + \"]\") + \"C\" + (end.c == addr.c ? \"\" : \"[\" + (end.c - addr.c) + \"]\");\n\t}\n\n\tif(cell.l && cell.l.Target) {\n\t\tattr[\"ss:HRef\"] = escapexml(cell.l.Target);\n\t\tif(cell.l.Tooltip) attr[\"x:HRefScreenTip\"] = escapexml(cell.l.Tooltip);\n\t}\n\n\tif(ws['!merges']) {\n\t\tvar marr = ws['!merges'];\n\t\tfor(var mi = 0; mi != marr.length; ++mi) {\n\t\t\tif(marr[mi].s.c != addr.c || marr[mi].s.r != addr.r) continue;\n\t\t\tif(marr[mi].e.c > marr[mi].s.c) attr['ss:MergeAcross'] = marr[mi].e.c - marr[mi].s.c;\n\t\t\tif(marr[mi].e.r > marr[mi].s.r) attr['ss:MergeDown'] = marr[mi].e.r - marr[mi].s.r;\n\t\t}\n\t}\n\n\tvar t = \"\", p = \"\";\n\tswitch(cell.t) {\n\t\tcase 'z': if(!opts.sheetStubs) return \"\"; break;\n\t\tcase 'n': t = 'Number'; p = String(cell.v); break;\n\t\tcase 'b': t = 'Boolean'; p = (cell.v ? \"1\" : \"0\"); break;\n\t\tcase 'e': t = 'Error'; p = BErr[cell.v]; break;\n\t\tcase 'd': t = 'DateTime'; p = new Date(cell.v).toISOString(); if(cell.z == null) cell.z = cell.z || table_fmt[14]; break;\n\t\tcase 's': t = 'String'; p = escapexlml(cell.v||\"\"); break;\n\t}\n\t/* TODO: cell style */\n\tvar os = get_cell_style(opts.cellXfs, cell, opts);\n\tattr[\"ss:StyleID\"] = \"s\" + (21+os);\n\tattr[\"ss:Index\"] = addr.c + 1;\n\tvar _v = (cell.v != null ? p : \"\");\n\tvar m = cell.t == 'z' ? \"\" : ('<Data ss:Type=\"' + t + '\">' + _v + '</Data>');\n\n\tif((cell.c||[]).length > 0) m += write_ws_xlml_comment(cell.c);\n\n\treturn writextag(\"Cell\", m, attr);\n}\nfunction write_ws_xlml_row(R/*:number*/, row)/*:string*/ {\n\tvar o = '<Row ss:Index=\"' + (R+1) + '\"';\n\tif(row) {\n\t\tif(row.hpt && !row.hpx) row.hpx = pt2px(row.hpt);\n\t\tif(row.hpx) o += ' ss:AutoFitHeight=\"0\" ss:Height=\"' + row.hpx + '\"';\n\t\tif(row.hidden) o += ' ss:Hidden=\"1\"';\n\t}\n\treturn o + '>';\n}\n/* TODO */\nfunction write_ws_xlml_table(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws['!ref']) return \"\";\n\tvar range/*:Range*/ = safe_decode_range(ws['!ref']);\n\tvar marr/*:Array<Range>*/ = ws['!merges'] || [], mi = 0;\n\tvar o/*:Array<string>*/ = [];\n\tif(ws['!cols']) ws['!cols'].forEach(function(n, i) {\n\t\tprocess_col(n);\n\t\tvar w = !!n.width;\n\t\tvar p = col_obj_w(i, n);\n\t\tvar k/*:any*/ = {\"ss:Index\":i+1};\n\t\tif(w) k['ss:Width'] = width2px(p.width);\n\t\tif(n.hidden) k['ss:Hidden']=\"1\";\n\t\to.push(writextag(\"Column\",null,k));\n\t});\n\tvar dense = Array.isArray(ws);\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\tvar row = [write_ws_xlml_row(R, (ws['!rows']||[])[R])];\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tvar skip = false;\n\t\t\tfor(mi = 0; mi != marr.length; ++mi) {\n\t\t\t\tif(marr[mi].s.c > C) continue;\n\t\t\t\tif(marr[mi].s.r > R) continue;\n\t\t\t\tif(marr[mi].e.c < C) continue;\n\t\t\t\tif(marr[mi].e.r < R) continue;\n\t\t\t\tif(marr[mi].s.c != C || marr[mi].s.r != R) skip = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(skip) continue;\n\t\t\tvar addr = {r:R,c:C};\n\t\t\tvar ref = encode_cell(addr), cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\trow.push(write_ws_xlml_cell(cell, ref, ws, opts, idx, wb, addr));\n\t\t}\n\t\trow.push(\"</Row>\");\n\t\tif(row.length > 2) o.push(row.join(\"\"));\n\t}\n\treturn o.join(\"\");\n}\nfunction write_ws_xlml(idx/*:number*/, opts, wb/*:Workbook*/)/*:string*/ {\n\tvar o/*:Array<string>*/ = [];\n\tvar s = wb.SheetNames[idx];\n\tvar ws = wb.Sheets[s];\n\n\tvar t/*:string*/ = ws ? write_ws_xlml_names(ws, opts, idx, wb) : \"\";\n\tif(t.length > 0) o.push(\"<Names>\" + t + \"</Names>\");\n\n\t/* Table */\n\tt = ws ? write_ws_xlml_table(ws, opts, idx, wb) : \"\";\n\tif(t.length > 0) o.push(\"<Table>\" + t + \"</Table>\");\n\n\t/* WorksheetOptions */\n\to.push(write_ws_xlml_wsopts(ws, opts, idx, wb));\n\n\treturn o.join(\"\");\n}\nfunction write_xlml(wb, opts)/*:string*/ {\n\tif(!opts) opts = {};\n\tif(!wb.SSF) wb.SSF = dup(table_fmt);\n\tif(wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t\topts.cellXfs = [];\n\t\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\t}\n\tvar d/*:Array<string>*/ = [];\n\td.push(write_props_xlml(wb, opts));\n\td.push(write_wb_xlml(wb, opts));\n\td.push(\"\");\n\td.push(\"\");\n\tfor(var i = 0; i < wb.SheetNames.length; ++i)\n\t\td.push(writextag(\"Worksheet\", write_ws_xlml(i, opts, wb), {\"ss:Name\":escapexml(wb.SheetNames[i])}));\n\td[2] = write_sty_xlml(wb, opts);\n\td[3] = write_names_xlml(wb, opts);\n\treturn XML_HEADER + writextag(\"Workbook\", d.join(\"\"), {\n\t\t'xmlns':      XLMLNS.ss,\n\t\t'xmlns:o':    XLMLNS.o,\n\t\t'xmlns:x':    XLMLNS.x,\n\t\t'xmlns:ss':   XLMLNS.ss,\n\t\t'xmlns:dt':   XLMLNS.dt,\n\t\t'xmlns:html': XLMLNS.html\n\t});\n}\n/* [MS-OLEDS] 2.3.8 CompObjStream */\nfunction parse_compobj(obj/*:CFBEntry*/) {\n\tvar v = {};\n\tvar o = obj.content;\n\t/*:: if(o == null) return; */\n\n\t/* [MS-OLEDS] 2.3.7 CompObjHeader -- All fields MUST be ignored */\n\to.l = 28;\n\n\tv.AnsiUserType = o.read_shift(0, \"lpstr-ansi\");\n\tv.AnsiClipboardFormat = parse_ClipboardFormatOrAnsiString(o);\n\n\tif(o.length - o.l <= 4) return v;\n\n\tvar m/*:number*/ = o.read_shift(4);\n\tif(m == 0 || m > 40) return v;\n\to.l-=4; v.Reserved1 = o.read_shift(0, \"lpstr-ansi\");\n\n\tif(o.length - o.l <= 4) return v;\n\tm = o.read_shift(4);\n\tif(m !== 0x71b239f4) return v;\n\tv.UnicodeClipboardFormat = parse_ClipboardFormatOrUnicodeString(o);\n\n\tm = o.read_shift(4);\n\tif(m == 0 || m > 40) return v;\n\to.l-=4; v.Reserved2 = o.read_shift(0, \"lpwstr\");\n}\n\n/*\n\tContinue logic for:\n\t- 2.4.58 Continue          0x003c\n\t- 2.4.59 ContinueBigName   0x043c\n\t- 2.4.60 ContinueFrt       0x0812\n\t- 2.4.61 ContinueFrt11     0x0875\n\t- 2.4.62 ContinueFrt12     0x087f\n*/\nvar CONTINUE_RT = [ 0x003c, 0x043c, 0x0812, 0x0875, 0x087f ];\nfunction slurp(RecordType, R, blob, length/*:number*/, opts)/*:any*/ {\n\tvar l = length;\n\tvar bufs = [];\n\tvar d = blob.slice(blob.l,blob.l+l);\n\tif(opts && opts.enc && opts.enc.insitu && d.length > 0) switch(RecordType) {\n\tcase 0x0009: case 0x0209: case 0x0409: case 0x0809/* BOF */: case 0x002f /* FilePass */: case 0x0195 /* FileLock */: case 0x00e1 /* InterfaceHdr */: case 0x0196 /* RRDInfo */: case 0x0138 /* RRDHead */: case 0x0194 /* UsrExcl */: case 0x000a /* EOF */:\n\t\tbreak;\n\tcase 0x0085 /* BoundSheet8 */:\n\t\tbreak;\n\tdefault:\n\t\topts.enc.insitu(d);\n\t}\n\tbufs.push(d);\n\tblob.l += l;\n\tvar nextrt = __readUInt16LE(blob,blob.l), next = XLSRecordEnum[nextrt];\n\tvar start = 0;\n\twhile(next != null && CONTINUE_RT.indexOf(nextrt) > -1) {\n\t\tl = __readUInt16LE(blob,blob.l+2);\n\t\tstart = blob.l + 4;\n\t\tif(nextrt == 0x0812 /* ContinueFrt */) start += 4;\n\t\telse if(nextrt == 0x0875 || nextrt == 0x087f) {\n\t\t\tstart += 12;\n\t\t}\n\t\td = blob.slice(start,blob.l+4+l);\n\t\tbufs.push(d);\n\t\tblob.l += 4+l;\n\t\tnext = (XLSRecordEnum[nextrt = __readUInt16LE(blob, blob.l)]);\n\t}\n\tvar b = (bconcat(bufs)/*:any*/);\n\tprep_blob(b, 0);\n\tvar ll = 0; b.lens = [];\n\tfor(var j = 0; j < bufs.length; ++j) { b.lens.push(ll); ll += bufs[j].length; }\n\tif(b.length < length) throw \"XLS Record 0x\" + RecordType.toString(16) + \" Truncated: \" + b.length + \" < \" + length;\n\treturn R.f(b, b.length, opts);\n}\n\nfunction safe_format_xf(p/*:any*/, opts/*:ParseOpts*/, date1904/*:?boolean*/) {\n\tif(p.t === 'z') return;\n\tif(!p.XF) return;\n\tvar fmtid = 0;\n\ttry {\n\t\tfmtid = p.z || p.XF.numFmtId || 0;\n\t\tif(opts.cellNF) p.z = table_fmt[fmtid];\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(!opts || opts.cellText !== false) try {\n\t\tif(p.t === 'e') { p.w = p.w || BErr[p.v]; }\n\t\telse if(fmtid === 0 || fmtid == \"General\") {\n\t\t\tif(p.t === 'n') {\n\t\t\t\tif((p.v|0) === p.v) p.w = p.v.toString(10);\n\t\t\t\telse p.w = SSF_general_num(p.v);\n\t\t\t}\n\t\t\telse p.w = SSF_general(p.v);\n\t\t}\n\t\telse p.w = SSF_format(fmtid,p.v, {date1904:!!date1904, dateNF: opts && opts.dateNF});\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(opts.cellDates && fmtid && p.t == 'n' && fmt_is_date(table_fmt[fmtid] || String(fmtid))) {\n\t\tvar _d = SSF_parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t}\n}\n\nfunction make_cell(val, ixfe, t)/*:Cell*/ {\n\treturn ({v:val, ixfe:ixfe, t:t}/*:any*/);\n}\n\n// 2.3.2\nfunction parse_workbook(blob, options/*:ParseOpts*/)/*:Workbook*/ {\n\tvar wb = ({opts:{}}/*:any*/);\n\tvar Sheets = {};\n\tif(DENSE != null && options.dense == null) options.dense = DENSE;\n\tvar out/*:Worksheet*/ = ((options.dense ? [] : {})/*:any*/);\n\tvar Directory = {};\n\tvar range/*:Range*/ = ({}/*:any*/);\n\tvar last_formula = null;\n\tvar sst/*:SST*/ = ([]/*:any*/);\n\tvar cur_sheet = \"\";\n\tvar Preamble = {};\n\tvar lastcell, last_cell = \"\", cc/*:Cell*/, cmnt, rngC, rngR;\n\tvar sharedf = {};\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar temp_val/*:Cell*/;\n\tvar country;\n\tvar XFs = []; /* XF records */\n\tvar palette/*:Array<[number, number, number]>*/ = [];\n\tvar Workbook/*:WBWBProps*/ = ({ Sheets:[], WBProps:{date1904:false}, Views:[{}] }/*:any*/), wsprops = {};\n\tvar get_rgb = function getrgb(icv/*:number*/)/*:[number, number, number]*/ {\n\t\tif(icv < 8) return XLSIcv[icv];\n\t\tif(icv < 64) return palette[icv-8] || XLSIcv[icv];\n\t\treturn XLSIcv[icv];\n\t};\n\tvar process_cell_style = function pcs(cell, line/*:any*/, options) {\n\t\tvar xfd = line.XF.data;\n\t\tif(!xfd || !xfd.patternType || !options || !options.cellStyles) return;\n\t\tline.s = ({}/*:any*/);\n\t\tline.s.patternType = xfd.patternType;\n\t\tvar t;\n\t\tif((t = rgb2Hex(get_rgb(xfd.icvFore)))) { line.s.fgColor = {rgb:t}; }\n\t\tif((t = rgb2Hex(get_rgb(xfd.icvBack)))) { line.s.bgColor = {rgb:t}; }\n\t};\n\tvar addcell = function addcell(cell/*:any*/, line/*:any*/, options/*:any*/) {\n\t\tif(file_depth > 1) return;\n\t\tif(options.sheetRows && cell.r >= options.sheetRows) return;\n\t\tif(options.cellStyles && line.XF && line.XF.data) process_cell_style(cell, line, options);\n\t\tdelete line.ixfe; delete line.XF;\n\t\tlastcell = cell;\n\t\tlast_cell = encode_cell(cell);\n\t\tif(!range || !range.s || !range.e) range = {s:{r:0,c:0},e:{r:0,c:0}};\n\t\tif(cell.r < range.s.r) range.s.r = cell.r;\n\t\tif(cell.c < range.s.c) range.s.c = cell.c;\n\t\tif(cell.r + 1 > range.e.r) range.e.r = cell.r + 1;\n\t\tif(cell.c + 1 > range.e.c) range.e.c = cell.c + 1;\n\t\tif(options.cellFormula && line.f) {\n\t\t\tfor(var afi = 0; afi < arrayf.length; ++afi) {\n\t\t\t\tif(arrayf[afi][0].s.c > cell.c || arrayf[afi][0].s.r > cell.r) continue;\n\t\t\t\tif(arrayf[afi][0].e.c < cell.c || arrayf[afi][0].e.r < cell.r) continue;\n\t\t\t\tline.F = encode_range(arrayf[afi][0]);\n\t\t\t\tif(arrayf[afi][0].s.c != cell.c || arrayf[afi][0].s.r != cell.r) delete line.f;\n\t\t\t\tif(line.f) line.f = \"\" + stringify_formula(arrayf[afi][1], range, cell, supbooks, opts);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t{\n\t\t\tif(options.dense) {\n\t\t\t\tif(!out[cell.r]) out[cell.r] = [];\n\t\t\t\tout[cell.r][cell.c] = line;\n\t\t\t} else out[last_cell] = line;\n\t\t}\n\t};\n\tvar opts = ({\n\t\tenc: false, // encrypted\n\t\tsbcch: 0, // cch in the preceding SupBook\n\t\tsnames: [], // sheetnames\n\t\tsharedf: sharedf, // shared formulae by address\n\t\tarrayf: arrayf, // array formulae array\n\t\trrtabid: [], // RRTabId\n\t\tlastuser: \"\", // Last User from WriteAccess\n\t\tbiff: 8, // BIFF version\n\t\tcodepage: 0, // CP from CodePage record\n\t\twinlocked: 0, // fLockWn from WinProtect\n\t\tcellStyles: !!options && !!options.cellStyles,\n\t\tWTF: !!options && !!options.wtf\n\t}/*:any*/);\n\tif(options.password) opts.password = options.password;\n\tvar themes;\n\tvar merges/*:Array<Range>*/ = [];\n\tvar objects = [];\n\tvar colinfo/*:Array<ColInfo>*/ = [], rowinfo/*:Array<RowInfo>*/ = [];\n\tvar seencol = false;\n\tvar supbooks = ([]/*:any*/); // 1-indexed, will hold extern names\n\tsupbooks.SheetNames = opts.snames;\n\tsupbooks.sharedf = opts.sharedf;\n\tsupbooks.arrayf = opts.arrayf;\n\tsupbooks.names = [];\n\tsupbooks.XTI = [];\n\tvar last_RT = 0;\n\tvar file_depth = 0; /* TODO: make a real stack */\n\tvar BIFF2Fmt = 0, BIFF2FmtTable/*:Array<string>*/ = [];\n\tvar FilterDatabases = []; /* TODO: sort out supbooks and process elsewhere */\n\tvar last_lbl/*:?DefinedName*/;\n\n\t/* explicit override for some broken writers */\n\topts.codepage = 1200;\n\tset_cp(1200);\n\tvar seen_codepage = false;\n\twhile(blob.l < blob.length - 1) {\n\t\tvar s = blob.l;\n\t\tvar RecordType = blob.read_shift(2);\n\t\tif(RecordType === 0 && last_RT === 0x000a /* EOF */) break;\n\t\tvar length = (blob.l === blob.length ? 0 : blob.read_shift(2));\n\t\tvar R = XLSRecordEnum[RecordType];\n\t\t//console.log(RecordType.toString(16), RecordType, R, blob.l, length, blob.length);\n\t\t//if(!R) console.log(blob.slice(blob.l, blob.l + length));\n\t\tif(R && R.f) {\n\t\t\tif(options.bookSheets) {\n\t\t\t\tif(last_RT === 0x0085 /* BoundSheet8 */ && RecordType !== 0x0085 /* R.n !== 'BoundSheet8' */) break;\n\t\t\t}\n\t\t\tlast_RT = RecordType;\n\t\t\tif(R.r === 2 || R.r == 12) {\n\t\t\t\tvar rt = blob.read_shift(2); length -= 2;\n\t\t\t\tif(!opts.enc && rt !== RecordType && (((rt&0xFF)<<8)|(rt>>8)) !== RecordType) throw new Error(\"rt mismatch: \" + rt + \"!=\" + RecordType);\n\t\t\t\tif(R.r == 12){\n\t\t\t\t\tblob.l += 10; length -= 10;\n\t\t\t\t} // skip FRT\n\t\t\t}\n\t\t\t//console.error(R,blob.l,length,blob.length);\n\t\t\tvar val/*:any*/ = ({}/*:any*/);\n\t\t\tif(RecordType === 0x000a /* EOF */) val = /*::(*/R.f(blob, length, opts)/*:: :any)*/;\n\t\t\telse val = /*::(*/slurp(RecordType, R, blob, length, opts)/*:: :any)*/;\n\t\t\t/*:: val = (val:any); */\n\t\t\tif(file_depth == 0 && [0x0009, 0x0209, 0x0409, 0x0809].indexOf(last_RT) === -1 /* 'BOF' */) continue;\n\t\t\tswitch(RecordType) {\n\t\t\t\tcase 0x0022 /* Date1904 */:\n\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\twb.opts.Date1904 = Workbook.WBProps.date1904 = val; break;\n\t\t\t\tcase 0x0086 /* WriteProtect */: wb.opts.WriteProtect = true; break;\n\t\t\t\tcase 0x002f /* FilePass */:\n\t\t\t\t\tif(!opts.enc) blob.l = 0;\n\t\t\t\t\topts.enc = val;\n\t\t\t\t\tif(!options.password) throw new Error(\"File is password-protected\");\n\t\t\t\t\tif(val.valid == null) throw new Error(\"Encryption scheme unsupported\");\n\t\t\t\t\tif(!val.valid) throw new Error(\"Password is incorrect\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x005c /* WriteAccess */: opts.lastuser = val; break;\n\t\t\t\tcase 0x0042 /* CodePage */:\n\t\t\t\t\tvar cpval = Number(val);\n\t\t\t\t\t/* overrides based on test cases */\n\t\t\t\t\tswitch(cpval) {\n\t\t\t\t\t\tcase 0x5212: cpval =  1200; break;\n\t\t\t\t\t\tcase 0x8000: cpval = 10000; break;\n\t\t\t\t\t\tcase 0x8001: cpval =  1252; break;\n\t\t\t\t\t}\n\t\t\t\t\tset_cp(opts.codepage = cpval);\n\t\t\t\t\tseen_codepage = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x013d /* RRTabId */: opts.rrtabid = val; break;\n\t\t\t\tcase 0x0019 /* WinProtect */: opts.winlocked = val; break;\n\t\t\t\tcase 0x01b7 /* RefreshAll */: wb.opts[\"RefreshAll\"] = val; break;\n\t\t\t\tcase 0x000c /* CalcCount */: wb.opts[\"CalcCount\"] = val; break;\n\t\t\t\tcase 0x0010 /* CalcDelta */: wb.opts[\"CalcDelta\"] = val; break;\n\t\t\t\tcase 0x0011 /* CalcIter */: wb.opts[\"CalcIter\"] = val; break;\n\t\t\t\tcase 0x000d /* CalcMode */: wb.opts[\"CalcMode\"] = val; break;\n\t\t\t\tcase 0x000e /* CalcPrecision */: wb.opts[\"CalcPrecision\"] = val; break;\n\t\t\t\tcase 0x005f /* CalcSaveRecalc */: wb.opts[\"CalcSaveRecalc\"] = val; break;\n\t\t\t\tcase 0x000f /* CalcRefMode */: opts.CalcRefMode = val; break; // TODO: implement R1C1\n\t\t\t\tcase 0x08a3 /* ForceFullCalculation */: wb.opts.FullCalc = val; break;\n\t\t\t\tcase 0x0081 /* WsBool */:\n\t\t\t\t\tif(val.fDialog) out[\"!type\"] = \"dialog\";\n\t\t\t\t\tif(!val.fBelow) (out[\"!outline\"] || (out[\"!outline\"] = {})).above = true;\n\t\t\t\t\tif(!val.fRight) (out[\"!outline\"] || (out[\"!outline\"] = {})).left = true;\n\t\t\t\t\tbreak; // TODO\n\t\t\t\tcase 0x00e0 /* XF */:\n\t\t\t\t\tXFs.push(val); break;\n\t\t\t\tcase 0x01ae /* SupBook */:\n\t\t\t\t\tsupbooks.push([val]);\n\t\t\t\t\tsupbooks[supbooks.length-1].XTI = [];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0023: case 0x0223 /* ExternName */:\n\t\t\t\t\tsupbooks[supbooks.length-1].push(val);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0018: case 0x0218 /* Lbl */:\n\t\t\t\t\tlast_lbl = ({\n\t\t\t\t\t\tName: val.Name,\n\t\t\t\t\t\tRef: stringify_formula(val.rgce,range,null,supbooks,opts)\n\t\t\t\t\t}/*:DefinedName*/);\n\t\t\t\t\tif(val.itab > 0) last_lbl.Sheet = val.itab - 1;\n\t\t\t\t\tsupbooks.names.push(last_lbl);\n\t\t\t\t\tif(!supbooks[0]) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\t\tsupbooks[supbooks.length-1].push(val);\n\t\t\t\t\tif(val.Name == \"_xlnm._FilterDatabase\" && val.itab > 0)\n\t\t\t\t\t\tif(val.rgce && val.rgce[0] && val.rgce[0][0] && val.rgce[0][0][0] == 'PtgArea3d')\n\t\t\t\t\t\t\tFilterDatabases[val.itab - 1] = { ref: encode_range(val.rgce[0][0][1][2]) };\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0016 /* ExternCount */: opts.ExternCount = val; break;\n\t\t\t\tcase 0x0017 /* ExternSheet */:\n\t\t\t\t\tif(supbooks.length == 0) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\t\tsupbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val); supbooks.XTI = supbooks.XTI.concat(val); break;\n\t\t\t\tcase 0x0894 /* NameCmt */:\n\t\t\t\t\t/* TODO: search for correct name */\n\t\t\t\t\tif(opts.biff < 8) break;\n\t\t\t\t\tif(last_lbl != null) last_lbl.Comment = val[1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0012 /* Protect */: out[\"!protect\"] = val; break; /* for sheet or book */\n\t\t\t\tcase 0x0013 /* Password */: if(val !== 0 && opts.WTF) console.error(\"Password verifier: \" + val); break;\n\t\t\t\tcase 0x0085 /* BoundSheet8 */: {\n\t\t\t\t\tDirectory[val.pos] = val;\n\t\t\t\t\topts.snames.push(val.name);\n\t\t\t\t} break;\n\t\t\t\tcase 0x000a /* EOF */: {\n\t\t\t\t\tif(--file_depth) break;\n\t\t\t\t\tif(range.e) {\n\t\t\t\t\t\tif(range.e.r > 0 && range.e.c > 0) {\n\t\t\t\t\t\t\trange.e.r--; range.e.c--;\n\t\t\t\t\t\t\tout[\"!ref\"] = encode_range(range);\n\t\t\t\t\t\t\tif(options.sheetRows && options.sheetRows <= range.e.r) {\n\t\t\t\t\t\t\t\tvar tmpri = range.e.r;\n\t\t\t\t\t\t\t\trange.e.r = options.sheetRows - 1;\n\t\t\t\t\t\t\t\tout[\"!fullref\"] = out[\"!ref\"];\n\t\t\t\t\t\t\t\tout[\"!ref\"] = encode_range(range);\n\t\t\t\t\t\t\t\trange.e.r = tmpri;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\trange.e.r++; range.e.c++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(merges.length > 0) out[\"!merges\"] = merges;\n\t\t\t\t\t\tif(objects.length > 0) out[\"!objects\"] = objects;\n\t\t\t\t\t\tif(colinfo.length > 0) out[\"!cols\"] = colinfo;\n\t\t\t\t\t\tif(rowinfo.length > 0) out[\"!rows\"] = rowinfo;\n\t\t\t\t\t\tWorkbook.Sheets.push(wsprops);\n\t\t\t\t\t}\n\t\t\t\t\tif(cur_sheet === \"\") Preamble = out; else Sheets[cur_sheet] = out;\n\t\t\t\t\tout = ((options.dense ? [] : {})/*:any*/);\n\t\t\t\t} break;\n\t\t\t\tcase 0x0009: case 0x0209: case 0x0409: case 0x0809 /* BOF */: {\n\t\t\t\t\tif(opts.biff === 8) opts.biff = {\n\t\t\t\t\t\t/*::[*/0x0009/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0209/*::]*/:3,\n\t\t\t\t\t\t/*::[*/0x0409/*::]*/:4\n\t\t\t\t\t}[RecordType] || {\n\t\t\t\t\t\t/*::[*/0x0200/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0300/*::]*/:3,\n\t\t\t\t\t\t/*::[*/0x0400/*::]*/:4,\n\t\t\t\t\t\t/*::[*/0x0500/*::]*/:5,\n\t\t\t\t\t\t/*::[*/0x0600/*::]*/:8,\n\t\t\t\t\t\t/*::[*/0x0002/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0007/*::]*/:2\n\t\t\t\t\t}[val.BIFFVer] || 8;\n\t\t\t\t\topts.biffguess = val.BIFFVer == 0;\n\t\t\t\t\tif(val.BIFFVer == 0 && val.dt == 0x1000) { opts.biff = 5; seen_codepage = true; set_cp(opts.codepage = 28591); }\n\t\t\t\t\tif(opts.biff == 8 && val.BIFFVer == 0 && val.dt == 16) opts.biff = 2;\n\t\t\t\t\tif(file_depth++) break;\n\t\t\t\t\tout = ((options.dense ? [] : {})/*:any*/);\n\n\t\t\t\t\tif(opts.biff < 8 && !seen_codepage) { seen_codepage = true; set_cp(opts.codepage = options.codepage || 1252); }\n\n\t\t\t\t\tif(opts.biff < 5 || val.BIFFVer == 0 && val.dt == 0x1000) {\n\t\t\t\t\t\tif(cur_sheet === \"\") cur_sheet = \"Sheet1\";\n\t\t\t\t\t\trange = {s:{r:0,c:0},e:{r:0,c:0}};\n\t\t\t\t\t\t/* fake BoundSheet8 */\n\t\t\t\t\t\tvar fakebs8 = {pos: blob.l - length, name:cur_sheet};\n\t\t\t\t\t\tDirectory[fakebs8.pos] = fakebs8;\n\t\t\t\t\t\topts.snames.push(cur_sheet);\n\t\t\t\t\t}\n\t\t\t\t\telse cur_sheet = (Directory[s] || {name:\"\"}).name;\n\t\t\t\t\tif(val.dt == 0x20) out[\"!type\"] = \"chart\";\n\t\t\t\t\tif(val.dt == 0x40) out[\"!type\"] = \"macro\";\n\t\t\t\t\tmerges = [];\n\t\t\t\t\tobjects = [];\n\t\t\t\t\topts.arrayf = arrayf = [];\n\t\t\t\t\tcolinfo = []; rowinfo = [];\n\t\t\t\t\tseencol = false;\n\t\t\t\t\twsprops = {Hidden:(Directory[s]||{hs:0}).hs, name:cur_sheet };\n\t\t\t\t} break;\n\t\t\t\tcase 0x0203 /* Number */: case 0x0003 /* BIFF2NUM */: case 0x0002 /* BIFF2INT */: {\n\t\t\t\t\tif(out[\"!type\"] == \"chart\") if(options.dense ? (out[val.r]||[])[val.c]: out[encode_cell({c:val.c, r:val.r})]) ++val.c;\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe]||{}, v:val.val, t:'n'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x0005: case 0x0205 /* BoolErr */: {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.val, t:val.t}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x027e /* RK */: {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.rknum, t:'n'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x00bd /* MulRk */: {\n\t\t\t\t\tfor(var j = val.c; j <= val.C; ++j) {\n\t\t\t\t\t\tvar ixfe = val.rkrec[j-val.c][0];\n\t\t\t\t\t\ttemp_val= ({ixfe:ixfe, XF:XFs[ixfe], v:val.rkrec[j-val.c][1], t:'n'}/*:any*/);\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell({c:j, r:val.r}, temp_val, options);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0006: case 0x0206: case 0x0406 /* Formula */: {\n\t\t\t\t\tif(val.val == 'String') { last_formula = val; break; }\n\t\t\t\t\ttemp_val = make_cell(val.val, val.cell.ixfe, val.tt);\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(options.cellFormula) {\n\t\t\t\t\t\tvar _f = val.formula;\n\t\t\t\t\t\tif(_f && _f[0] && _f[0][0] && _f[0][0][0] == 'PtgExp') {\n\t\t\t\t\t\t\tvar _fr = _f[0][0][1][0], _fc = _f[0][0][1][1];\n\t\t\t\t\t\t\tvar _fe = encode_cell({r:_fr, c:_fc});\n\t\t\t\t\t\t\tif(sharedf[_fe]) temp_val.f = \"\"+stringify_formula(val.formula,range,val.cell,supbooks, opts);\n\t\t\t\t\t\t\telse temp_val.F = ((options.dense ? (out[_fr]||[])[_fc]: out[_fe]) || {}).F;\n\t\t\t\t\t\t} else temp_val.f = \"\"+stringify_formula(val.formula,range,val.cell,supbooks, opts);\n\t\t\t\t\t}\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell(val.cell, temp_val, options);\n\t\t\t\t\tlast_formula = val;\n\t\t\t\t} break;\n\t\t\t\tcase 0x0007: case 0x0207 /* String */: {\n\t\t\t\t\tif(last_formula) { /* technically always true */\n\t\t\t\t\t\tlast_formula.val = val;\n\t\t\t\t\t\ttemp_val = make_cell(val, last_formula.cell.ixfe, 's');\n\t\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\t\tif(options.cellFormula) {\n\t\t\t\t\t\t\ttemp_val.f = \"\"+stringify_formula(last_formula.formula, range, last_formula.cell, supbooks, opts);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell(last_formula.cell, temp_val, options);\n\t\t\t\t\t\tlast_formula = null;\n\t\t\t\t\t} else throw new Error(\"String record expects Formula\");\n\t\t\t\t} break;\n\t\t\t\tcase 0x0021: case 0x0221 /* Array */: {\n\t\t\t\t\tarrayf.push(val);\n\t\t\t\t\tvar _arraystart = encode_cell(val[0].s);\n\t\t\t\t\tcc = options.dense ? (out[val[0].s.r]||[])[val[0].s.c] : out[_arraystart];\n\t\t\t\t\tif(options.cellFormula && cc) {\n\t\t\t\t\t\tif(!last_formula) break; /* technically unreachable */\n\t\t\t\t\t\tif(!_arraystart || !cc) break;\n\t\t\t\t\t\tcc.f = \"\"+stringify_formula(val[1], range, val[0], supbooks, opts);\n\t\t\t\t\t\tcc.F = encode_range(val[0]);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x04bc /* ShrFmla */: {\n\t\t\t\t\tif(!options.cellFormula) break;\n\t\t\t\t\tif(last_cell) {\n\t\t\t\t\t\t/* TODO: capture range */\n\t\t\t\t\t\tif(!last_formula) break; /* technically unreachable */\n\t\t\t\t\t\tsharedf[encode_cell(last_formula.cell)]= val[0];\n\t\t\t\t\t\tcc = options.dense ? (out[last_formula.cell.r]||[])[last_formula.cell.c] : out[encode_cell(last_formula.cell)];\n\t\t\t\t\t\t(cc||{}).f = \"\"+stringify_formula(val[0], range, lastcell, supbooks, opts);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x00fd /* LabelSst */:\n\t\t\t\t\ttemp_val=make_cell(sst[val.isst].t, val.ixfe, 's');\n\t\t\t\t\tif(sst[val.isst].h) temp_val.h = sst[val.isst].h;\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0201 /* Blank */: if(options.sheetStubs) {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], t:'z'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x00be /* MulBlank */: if(options.sheetStubs) {\n\t\t\t\t\tfor(var _j = val.c; _j <= val.C; ++_j) {\n\t\t\t\t\t\tvar _ixfe = val.ixfe[_j-val.c];\n\t\t\t\t\t\ttemp_val= ({ixfe:_ixfe, XF:XFs[_ixfe], t:'z'}/*:any*/);\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell({c:_j, r:val.r}, temp_val, options);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x00d6 /* RString */:\n\t\t\t\tcase 0x0204 /* Label */: case 0x0004 /* BIFF2STR */:\n\t\t\t\t\ttemp_val=make_cell(val.val, val.ixfe, 's');\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 0x0000: case 0x0200 /* Dimensions */: {\n\t\t\t\t\tif(file_depth === 1) range = val; /* TODO: stack */\n\t\t\t\t} break;\n\t\t\t\tcase 0x00fc /* SST */: {\n\t\t\t\t\tsst = val;\n\t\t\t\t} break;\n\t\t\t\tcase 0x041e /* Format */: { /* val = [id, fmt] */\n\t\t\t\t\tif(opts.biff == 4) {\n\t\t\t\t\t\tBIFF2FmtTable[BIFF2Fmt++] = val[1];\n\t\t\t\t\t\tfor(var b4idx = 0; b4idx < BIFF2Fmt + 163; ++b4idx) if(table_fmt[b4idx] == val[1]) break;\n\t\t\t\t\t\tif(b4idx >= 163) SSF_load(val[1], BIFF2Fmt + 163);\n\t\t\t\t\t}\n\t\t\t\t\telse SSF_load(val[1], val[0]);\n\t\t\t\t} break;\n\t\t\t\tcase 0x001e /* BIFF2FORMAT */: {\n\t\t\t\t\tBIFF2FmtTable[BIFF2Fmt++] = val;\n\t\t\t\t\tfor(var b2idx = 0; b2idx < BIFF2Fmt + 163; ++b2idx) if(table_fmt[b2idx] == val) break;\n\t\t\t\t\tif(b2idx >= 163) SSF_load(val, BIFF2Fmt + 163);\n\t\t\t\t} break;\n\n\t\t\t\tcase 0x00e5 /* MergeCells */: merges = merges.concat(val); break;\n\n\t\t\t\tcase 0x005d /* Obj */: objects[val.cmo[0]] = opts.lastobj = val; break;\n\t\t\t\tcase 0x01b6 /* TxO */: opts.lastobj.TxO = val; break;\n\t\t\t\tcase 0x007f /* ImData */: opts.lastobj.ImData = val; break;\n\n\t\t\t\tcase 0x01b8 /* HLink */: {\n\t\t\t\t\tfor(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR)\n\t\t\t\t\t\tfor(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) {\n\t\t\t\t\t\t\tcc = options.dense ? (out[rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})];\n\t\t\t\t\t\t\tif(cc) cc.l = val[1];\n\t\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0800 /* HLinkTooltip */: {\n\t\t\t\t\tfor(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR)\n\t\t\t\t\t\tfor(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) {\n\t\t\t\t\t\t\tcc = options.dense ? (out[rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})];\n\t\t\t\t\t\t\tif(cc && cc.l) cc.l.Tooltip = val[1];\n\t\t\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x001c /* Note */: {\n\t\t\t\t\tif(opts.biff <= 5 && opts.biff >= 2) break; /* TODO: BIFF5 */\n\t\t\t\t\tcc = options.dense ? (out[val[0].r]||[])[val[0].c] : out[encode_cell(val[0])];\n\t\t\t\t\tvar noteobj = objects[val[2]];\n\t\t\t\t\tif(!cc) {\n\t\t\t\t\t\tif(options.dense) {\n\t\t\t\t\t\t\tif(!out[val[0].r]) out[val[0].r] = [];\n\t\t\t\t\t\t\tcc = out[val[0].r][val[0].c] = ({t:\"z\"}/*:any*/);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcc = out[encode_cell(val[0])] = ({t:\"z\"}/*:any*/);\n\t\t\t\t\t\t}\n\t\t\t\t\t\trange.e.r = Math.max(range.e.r, val[0].r);\n\t\t\t\t\t\trange.s.r = Math.min(range.s.r, val[0].r);\n\t\t\t\t\t\trange.e.c = Math.max(range.e.c, val[0].c);\n\t\t\t\t\t\trange.s.c = Math.min(range.s.c, val[0].c);\n\t\t\t\t\t}\n\t\t\t\t\tif(!cc.c) cc.c = [];\n\t\t\t\t\tcmnt = {a:val[1],t:noteobj.TxO.t};\n\t\t\t\t\tcc.c.push(cmnt);\n\t\t\t\t} break;\n\t\t\t\tcase 0x087d /* XFExt */: update_xfext(XFs[val.ixfe], val.ext); break;\n\t\t\t\tcase 0x007d /* ColInfo */: {\n\t\t\t\t\tif(!opts.cellStyles) break;\n\t\t\t\t\twhile(val.e >= val.s) {\n\t\t\t\t\t\tcolinfo[val.e--] = { width: val.w/256, level: (val.level || 0), hidden: !!(val.flags & 1) };\n\t\t\t\t\t\tif(!seencol) { seencol = true; find_mdw_colw(val.w/256); }\n\t\t\t\t\t\tprocess_col(colinfo[val.e+1]);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0208 /* Row */: {\n\t\t\t\t\tvar rowobj = {};\n\t\t\t\t\tif(val.level != null) { rowinfo[val.r] = rowobj; rowobj.level = val.level; }\n\t\t\t\t\tif(val.hidden) { rowinfo[val.r] = rowobj; rowobj.hidden = true; }\n\t\t\t\t\tif(val.hpt) {\n\t\t\t\t\t\trowinfo[val.r] = rowobj;\n\t\t\t\t\t\trowobj.hpt = val.hpt; rowobj.hpx = pt2px(val.hpt);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0026 /* LeftMargin */:\n\t\t\t\tcase 0x0027 /* RightMargin */:\n\t\t\t\tcase 0x0028 /* TopMargin */:\n\t\t\t\tcase 0x0029 /* BottomMargin */:\n\t\t\t\t\tif(!out['!margins']) default_margins(out['!margins'] = {});\n\t\t\t\t\tout['!margins'][({0x26: \"left\", 0x27:\"right\", 0x28:\"top\", 0x29:\"bottom\"})[RecordType]] = val;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00a1 /* Setup */: // TODO\n\t\t\t\t\tif(!out['!margins']) default_margins(out['!margins'] = {});\n\t\t\t\t\tout['!margins'].header = val.header;\n\t\t\t\t\tout['!margins'].footer = val.footer;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x023e /* Window2 */: // TODO\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tif(val.RTL) Workbook.Views[0].RTL = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0092 /* Palette */: palette = val; break;\n\t\t\t\tcase 0x0896 /* Theme */: themes = val; break;\n\t\t\t\tcase 0x008c /* Country */: country = val; break;\n\t\t\t\tcase 0x01ba /* CodeName */: {\n\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\tif(!cur_sheet) Workbook.WBProps.CodeName = val || \"ThisWorkbook\";\n\t\t\t\t\telse wsprops.CodeName = val || wsprops.name;\n\t\t\t\t} break;\n\t\t\t}\n\t\t} else {\n\t\t\tif(!R) console.error(\"Missing Info for XLS Record 0x\" + RecordType.toString(16));\n\t\t\tblob.l += length;\n\t\t}\n\t}\n\twb.SheetNames=keys(Directory).sort(function(a,b) { return Number(a) - Number(b); }).map(function(x){return Directory[x].name;});\n\tif(!options.bookSheets) wb.Sheets=Sheets;\n\tif(!wb.SheetNames.length && Preamble[\"!ref\"]) {\n\t\twb.SheetNames.push(\"Sheet1\");\n\t\t/*jshint -W069 */\n\t\tif(wb.Sheets) wb.Sheets[\"Sheet1\"] = Preamble;\n\t\t/*jshint +W069 */\n\t} else wb.Preamble=Preamble;\n\tif(wb.Sheets) FilterDatabases.forEach(function(r,i) { wb.Sheets[wb.SheetNames[i]]['!autofilter'] = r; });\n\twb.Strings = sst;\n\twb.SSF = dup(table_fmt);\n\tif(opts.enc) wb.Encryption = opts.enc;\n\tif(themes) wb.Themes = themes;\n\twb.Metadata = {};\n\tif(country !== undefined) wb.Metadata.Country = country;\n\tif(supbooks.names.length > 0) Workbook.Names = supbooks.names;\n\twb.Workbook = Workbook;\n\treturn wb;\n}\n\n/* TODO: split props*/\nvar PSCLSID = {\n\tSI: \"e0859ff2f94f6810ab9108002b27b3d9\",\n\tDSI: \"02d5cdd59c2e1b10939708002b2cf9ae\",\n\tUDI: \"05d5cdd59c2e1b10939708002b2cf9ae\"\n};\nfunction parse_xls_props(cfb/*:CFBContainer*/, props, o) {\n\t/* [MS-OSHARED] 2.3.3.2.2 Document Summary Information Property Set */\n\tvar DSI = CFB.find(cfb, '/!DocumentSummaryInformation');\n\tif(DSI && DSI.size > 0) try {\n\t\tvar DocSummary = parse_PropertySetStream(DSI, DocSummaryPIDDSI, PSCLSID.DSI);\n\t\tfor(var d in DocSummary) props[d] = DocSummary[d];\n\t} catch(e) {if(o.WTF) throw e;/* empty */}\n\n\t/* [MS-OSHARED] 2.3.3.2.1 Summary Information Property Set*/\n\tvar SI = CFB.find(cfb, '/!SummaryInformation');\n\tif(SI && SI.size > 0) try {\n\t\tvar Summary = parse_PropertySetStream(SI, SummaryPIDSI, PSCLSID.SI);\n\t\tfor(var s in Summary) if(props[s] == null) props[s] = Summary[s];\n\t} catch(e) {if(o.WTF) throw e;/* empty */}\n\n\tif(props.HeadingPairs && props.TitlesOfParts) {\n\t\tload_props_pairs(props.HeadingPairs, props.TitlesOfParts, props, o);\n\t\tdelete props.HeadingPairs; delete props.TitlesOfParts;\n\t}\n}\nfunction write_xls_props(wb/*:Workbook*/, cfb/*:CFBContainer*/) {\n\tvar DSEntries = [], SEntries = [], CEntries = [];\n\tvar i = 0, Keys;\n\tvar DocSummaryRE/*:{[key:string]:string}*/ = evert_key(DocSummaryPIDDSI, \"n\");\n\tvar SummaryRE/*:{[key:string]:string}*/ = evert_key(SummaryPIDSI, \"n\");\n\tif(wb.Props) {\n\t\tKeys = keys(wb.Props);\n\t\t// $FlowIgnore\n\t\tfor(i = 0; i < Keys.length; ++i) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Props[Keys[i]]]);\n\t}\n\tif(wb.Custprops) {\n\t\tKeys = keys(wb.Custprops);\n\t\t// $FlowIgnore\n\t\tfor(i = 0; i < Keys.length; ++i) if(!Object.prototype.hasOwnProperty.call((wb.Props||{}), Keys[i])) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Custprops[Keys[i]]]);\n\t}\n\tvar CEntries2 = [];\n\tfor(i = 0; i < CEntries.length; ++i) {\n\t\tif(XLSPSSkip.indexOf(CEntries[i][0]) > -1 || PseudoPropsPairs.indexOf(CEntries[i][0]) > -1) continue;\n\t\tif(CEntries[i][1] == null) continue;\n\t\tCEntries2.push(CEntries[i]);\n\t}\n\tif(SEntries.length) CFB.utils.cfb_add(cfb, \"/\\u0005SummaryInformation\", write_PropertySetStream(SEntries, PSCLSID.SI, SummaryRE, SummaryPIDSI));\n\tif(DSEntries.length || CEntries2.length) CFB.utils.cfb_add(cfb, \"/\\u0005DocumentSummaryInformation\", write_PropertySetStream(DSEntries, PSCLSID.DSI, DocSummaryRE, DocSummaryPIDDSI, CEntries2.length ? CEntries2 : null, PSCLSID.UDI));\n}\n\nfunction parse_xlscfb(cfb/*:any*/, options/*:?ParseOpts*/)/*:Workbook*/ {\nif(!options) options = {};\nfix_read_opts(options);\nreset_cp();\nif(options.codepage) set_ansi(options.codepage);\nvar CompObj/*:?CFBEntry*/, WB/*:?any*/;\nif(cfb.FullPaths) {\n\tif(CFB.find(cfb, '/encryption')) throw new Error(\"File is password-protected\");\n\tCompObj = CFB.find(cfb, '!CompObj');\n\tWB = CFB.find(cfb, '/Workbook') || CFB.find(cfb, '/Book');\n} else {\n\tswitch(options.type) {\n\t\tcase 'base64': cfb = s2a(Base64_decode(cfb)); break;\n\t\tcase 'binary': cfb = s2a(cfb); break;\n\t\tcase 'buffer': break;\n\t\tcase 'array': if(!Array.isArray(cfb)) cfb = Array.prototype.slice.call(cfb); break;\n\t}\n\tprep_blob(cfb, 0);\n\tWB = ({content: cfb}/*:any*/);\n}\nvar /*::CompObjP, */WorkbookP/*:: :Workbook = XLSX.utils.book_new(); */;\n\nvar _data/*:?any*/;\nif(CompObj) /*::CompObjP = */parse_compobj(CompObj);\nif(options.bookProps && !options.bookSheets) WorkbookP = ({}/*:any*/);\nelse/*:: if(cfb instanceof CFBContainer) */ {\n\tvar T = has_buf ? 'buffer' : 'array';\n\tif(WB && WB.content) WorkbookP = parse_workbook(WB.content, options);\n\t/* Quattro Pro 7-8 */\n\telse if((_data=CFB.find(cfb, 'PerfectOffice_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options));\n\t/* Quattro Pro 9 */\n\telse if((_data=CFB.find(cfb, 'NativeContent_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options));\n\t/* Works 4 for Mac */\n\telse if((_data=CFB.find(cfb, 'MN0')) && _data.content) throw new Error(\"Unsupported Works 4 for Mac file\");\n\telse throw new Error(\"Cannot find Workbook stream\");\n\tif(options.bookVBA && cfb.FullPaths && CFB.find(cfb, '/_VBA_PROJECT_CUR/VBA/dir')) WorkbookP.vbaraw = make_vba_xls(cfb);\n}\n\nvar props = {};\nif(cfb.FullPaths) parse_xls_props(/*::((*/cfb/*:: :any):CFBContainer)*/, props, options);\n\nWorkbookP.Props = WorkbookP.Custprops = props; /* TODO: split up properties */\nif(options.bookFiles) WorkbookP.cfb = cfb;\n/*WorkbookP.CompObjP = CompObjP; // TODO: storage? */\nreturn WorkbookP;\n}\n\n\nfunction write_xlscfb(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:CFBContainer*/ {\n\tvar o = opts || {};\n\tvar cfb = CFB.utils.cfb_new({root:\"R\"});\n\tvar wbpath = \"/Workbook\";\n\tswitch(o.bookType || \"xls\") {\n\t\tcase \"xls\": o.bookType = \"biff8\";\n\t\t/* falls through */\n\t\tcase \"xla\": if(!o.bookType) o.bookType = \"xla\";\n\t\t/* falls through */\n\t\tcase \"biff8\": wbpath = \"/Workbook\"; o.biff = 8; break;\n\t\tcase \"biff5\": wbpath = \"/Book\"; o.biff = 5; break;\n\t\tdefault: throw new Error(\"invalid type \" + o.bookType + \" for XLS CFB\");\n\t}\n\tCFB.utils.cfb_add(cfb, wbpath, write_biff_buf(wb, o));\n\tif(o.biff == 8 && (wb.Props || wb.Custprops)) write_xls_props(wb, cfb);\n\t// TODO: SI, DSI, CO\n\tif(o.biff == 8 && wb.vbaraw) fill_vba_xls(cfb, CFB.read(wb.vbaraw, {type: typeof wb.vbaraw == \"string\" ? \"binary\" : \"buffer\"}));\n\treturn cfb;\n}\n/* [MS-XLSB] 2.3 Record Enumeration */\nvar XLSBRecordEnum = {\n\t/*::[*/0x0000/*::]*/: { /* n:\"BrtRowHdr\", */ f:parse_BrtRowHdr },\n\t/*::[*/0x0001/*::]*/: { /* n:\"BrtCellBlank\", */ f:parse_BrtCellBlank },\n\t/*::[*/0x0002/*::]*/: { /* n:\"BrtCellRk\", */ f:parse_BrtCellRk },\n\t/*::[*/0x0003/*::]*/: { /* n:\"BrtCellError\", */ f:parse_BrtCellError },\n\t/*::[*/0x0004/*::]*/: { /* n:\"BrtCellBool\", */ f:parse_BrtCellBool },\n\t/*::[*/0x0005/*::]*/: { /* n:\"BrtCellReal\", */ f:parse_BrtCellReal },\n\t/*::[*/0x0006/*::]*/: { /* n:\"BrtCellSt\", */ f:parse_BrtCellSt },\n\t/*::[*/0x0007/*::]*/: { /* n:\"BrtCellIsst\", */ f:parse_BrtCellIsst },\n\t/*::[*/0x0008/*::]*/: { /* n:\"BrtFmlaString\", */ f:parse_BrtFmlaString },\n\t/*::[*/0x0009/*::]*/: { /* n:\"BrtFmlaNum\", */ f:parse_BrtFmlaNum },\n\t/*::[*/0x000A/*::]*/: { /* n:\"BrtFmlaBool\", */ f:parse_BrtFmlaBool },\n\t/*::[*/0x000B/*::]*/: { /* n:\"BrtFmlaError\", */ f:parse_BrtFmlaError },\n\t/*::[*/0x000C/*::]*/: { /* n:\"BrtShortBlank\", */ f:parse_BrtShortBlank },\n\t/*::[*/0x000D/*::]*/: { /* n:\"BrtShortRk\", */ f:parse_BrtShortRk },\n\t/*::[*/0x000E/*::]*/: { /* n:\"BrtShortError\", */ f:parse_BrtShortError },\n\t/*::[*/0x000F/*::]*/: { /* n:\"BrtShortBool\", */ f:parse_BrtShortBool },\n\t/*::[*/0x0010/*::]*/: { /* n:\"BrtShortReal\", */ f:parse_BrtShortReal },\n\t/*::[*/0x0011/*::]*/: { /* n:\"BrtShortSt\", */ f:parse_BrtShortSt },\n\t/*::[*/0x0012/*::]*/: { /* n:\"BrtShortIsst\", */ f:parse_BrtShortIsst },\n\t/*::[*/0x0013/*::]*/: { /* n:\"BrtSSTItem\", */ f:parse_RichStr },\n\t/*::[*/0x0014/*::]*/: { /* n:\"BrtPCDIMissing\" */ },\n\t/*::[*/0x0015/*::]*/: { /* n:\"BrtPCDINumber\" */ },\n\t/*::[*/0x0016/*::]*/: { /* n:\"BrtPCDIBoolean\" */ },\n\t/*::[*/0x0017/*::]*/: { /* n:\"BrtPCDIError\" */ },\n\t/*::[*/0x0018/*::]*/: { /* n:\"BrtPCDIString\" */ },\n\t/*::[*/0x0019/*::]*/: { /* n:\"BrtPCDIDatetime\" */ },\n\t/*::[*/0x001A/*::]*/: { /* n:\"BrtPCDIIndex\" */ },\n\t/*::[*/0x001B/*::]*/: { /* n:\"BrtPCDIAMissing\" */ },\n\t/*::[*/0x001C/*::]*/: { /* n:\"BrtPCDIANumber\" */ },\n\t/*::[*/0x001D/*::]*/: { /* n:\"BrtPCDIABoolean\" */ },\n\t/*::[*/0x001E/*::]*/: { /* n:\"BrtPCDIAError\" */ },\n\t/*::[*/0x001F/*::]*/: { /* n:\"BrtPCDIAString\" */ },\n\t/*::[*/0x0020/*::]*/: { /* n:\"BrtPCDIADatetime\" */ },\n\t/*::[*/0x0021/*::]*/: { /* n:\"BrtPCRRecord\" */ },\n\t/*::[*/0x0022/*::]*/: { /* n:\"BrtPCRRecordDt\" */ },\n\t/*::[*/0x0023/*::]*/: { /* n:\"BrtFRTBegin\", */ T:1 },\n\t/*::[*/0x0024/*::]*/: { /* n:\"BrtFRTEnd\", */ T:-1 },\n\t/*::[*/0x0025/*::]*/: { /* n:\"BrtACBegin\", */ T:1 },\n\t/*::[*/0x0026/*::]*/: { /* n:\"BrtACEnd\", */ T:-1 },\n\t/*::[*/0x0027/*::]*/: { /* n:\"BrtName\", */ f:parse_BrtName },\n\t/*::[*/0x0028/*::]*/: { /* n:\"BrtIndexRowBlock\" */ },\n\t/*::[*/0x002A/*::]*/: { /* n:\"BrtIndexBlock\" */ },\n\t/*::[*/0x002B/*::]*/: { /* n:\"BrtFont\", */ f:parse_BrtFont },\n\t/*::[*/0x002C/*::]*/: { /* n:\"BrtFmt\", */ f:parse_BrtFmt },\n\t/*::[*/0x002D/*::]*/: { /* n:\"BrtFill\", */ f:parse_BrtFill },\n\t/*::[*/0x002E/*::]*/: { /* n:\"BrtBorder\", */ f:parse_BrtBorder },\n\t/*::[*/0x002F/*::]*/: { /* n:\"BrtXF\", */ f:parse_BrtXF },\n\t/*::[*/0x0030/*::]*/: { /* n:\"BrtStyle\" */ },\n\t/*::[*/0x0031/*::]*/: { /* n:\"BrtCellMeta\", */ f:parse_Int32LE },\n\t/*::[*/0x0032/*::]*/: { /* n:\"BrtValueMeta\" */ },\n\t/*::[*/0x0033/*::]*/: { /* n:\"BrtMdb\" */ f:parse_BrtMdb },\n\t/*::[*/0x0034/*::]*/: { /* n:\"BrtBeginFmd\", */ T:1 },\n\t/*::[*/0x0035/*::]*/: { /* n:\"BrtEndFmd\", */ T:-1 },\n\t/*::[*/0x0036/*::]*/: { /* n:\"BrtBeginMdx\", */ T:1 },\n\t/*::[*/0x0037/*::]*/: { /* n:\"BrtEndMdx\", */ T:-1 },\n\t/*::[*/0x0038/*::]*/: { /* n:\"BrtBeginMdxTuple\", */ T:1 },\n\t/*::[*/0x0039/*::]*/: { /* n:\"BrtEndMdxTuple\", */ T:-1 },\n\t/*::[*/0x003A/*::]*/: { /* n:\"BrtMdxMbrIstr\" */ },\n\t/*::[*/0x003B/*::]*/: { /* n:\"BrtStr\" */ },\n\t/*::[*/0x003C/*::]*/: { /* n:\"BrtColInfo\", */ f:parse_ColInfo },\n\t/*::[*/0x003E/*::]*/: { /* n:\"BrtCellRString\", */ f:parse_BrtCellRString },\n\t/*::[*/0x003F/*::]*/: { /* n:\"BrtCalcChainItem$\", */ f:parse_BrtCalcChainItem$ },\n\t/*::[*/0x0040/*::]*/: { /* n:\"BrtDVal\", */ f:parse_BrtDVal },\n\t/*::[*/0x0041/*::]*/: { /* n:\"BrtSxvcellNum\" */ },\n\t/*::[*/0x0042/*::]*/: { /* n:\"BrtSxvcellStr\" */ },\n\t/*::[*/0x0043/*::]*/: { /* n:\"BrtSxvcellBool\" */ },\n\t/*::[*/0x0044/*::]*/: { /* n:\"BrtSxvcellErr\" */ },\n\t/*::[*/0x0045/*::]*/: { /* n:\"BrtSxvcellDate\" */ },\n\t/*::[*/0x0046/*::]*/: { /* n:\"BrtSxvcellNil\" */ },\n\t/*::[*/0x0080/*::]*/: { /* n:\"BrtFileVersion\" */ },\n\t/*::[*/0x0081/*::]*/: { /* n:\"BrtBeginSheet\", */ T:1 },\n\t/*::[*/0x0082/*::]*/: { /* n:\"BrtEndSheet\", */ T:-1 },\n\t/*::[*/0x0083/*::]*/: { /* n:\"BrtBeginBook\", */ T:1, f:parsenoop, p:0 },\n\t/*::[*/0x0084/*::]*/: { /* n:\"BrtEndBook\", */ T:-1 },\n\t/*::[*/0x0085/*::]*/: { /* n:\"BrtBeginWsViews\", */ T:1 },\n\t/*::[*/0x0086/*::]*/: { /* n:\"BrtEndWsViews\", */ T:-1 },\n\t/*::[*/0x0087/*::]*/: { /* n:\"BrtBeginBookViews\", */ T:1 },\n\t/*::[*/0x0088/*::]*/: { /* n:\"BrtEndBookViews\", */ T:-1 },\n\t/*::[*/0x0089/*::]*/: { /* n:\"BrtBeginWsView\", */ T:1, f:parse_BrtBeginWsView },\n\t/*::[*/0x008A/*::]*/: { /* n:\"BrtEndWsView\", */ T:-1 },\n\t/*::[*/0x008B/*::]*/: { /* n:\"BrtBeginCsViews\", */ T:1 },\n\t/*::[*/0x008C/*::]*/: { /* n:\"BrtEndCsViews\", */ T:-1 },\n\t/*::[*/0x008D/*::]*/: { /* n:\"BrtBeginCsView\", */ T:1 },\n\t/*::[*/0x008E/*::]*/: { /* n:\"BrtEndCsView\", */ T:-1 },\n\t/*::[*/0x008F/*::]*/: { /* n:\"BrtBeginBundleShs\", */ T:1 },\n\t/*::[*/0x0090/*::]*/: { /* n:\"BrtEndBundleShs\", */ T:-1 },\n\t/*::[*/0x0091/*::]*/: { /* n:\"BrtBeginSheetData\", */ T:1 },\n\t/*::[*/0x0092/*::]*/: { /* n:\"BrtEndSheetData\", */ T:-1 },\n\t/*::[*/0x0093/*::]*/: { /* n:\"BrtWsProp\", */ f:parse_BrtWsProp },\n\t/*::[*/0x0094/*::]*/: { /* n:\"BrtWsDim\", */ f:parse_BrtWsDim, p:16 },\n\t/*::[*/0x0097/*::]*/: { /* n:\"BrtPane\", */ f:parse_BrtPane },\n\t/*::[*/0x0098/*::]*/: { /* n:\"BrtSel\" */ },\n\t/*::[*/0x0099/*::]*/: { /* n:\"BrtWbProp\", */ f:parse_BrtWbProp },\n\t/*::[*/0x009A/*::]*/: { /* n:\"BrtWbFactoid\" */ },\n\t/*::[*/0x009B/*::]*/: { /* n:\"BrtFileRecover\" */ },\n\t/*::[*/0x009C/*::]*/: { /* n:\"BrtBundleSh\", */ f:parse_BrtBundleSh },\n\t/*::[*/0x009D/*::]*/: { /* n:\"BrtCalcProp\" */ },\n\t/*::[*/0x009E/*::]*/: { /* n:\"BrtBookView\" */ },\n\t/*::[*/0x009F/*::]*/: { /* n:\"BrtBeginSst\", */ T:1, f:parse_BrtBeginSst },\n\t/*::[*/0x00A0/*::]*/: { /* n:\"BrtEndSst\", */ T:-1 },\n\t/*::[*/0x00A1/*::]*/: { /* n:\"BrtBeginAFilter\", */ T:1, f:parse_UncheckedRfX },\n\t/*::[*/0x00A2/*::]*/: { /* n:\"BrtEndAFilter\", */ T:-1 },\n\t/*::[*/0x00A3/*::]*/: { /* n:\"BrtBeginFilterColumn\", */ T:1 },\n\t/*::[*/0x00A4/*::]*/: { /* n:\"BrtEndFilterColumn\", */ T:-1 },\n\t/*::[*/0x00A5/*::]*/: { /* n:\"BrtBeginFilters\", */ T:1 },\n\t/*::[*/0x00A6/*::]*/: { /* n:\"BrtEndFilters\", */ T:-1 },\n\t/*::[*/0x00A7/*::]*/: { /* n:\"BrtFilter\" */ },\n\t/*::[*/0x00A8/*::]*/: { /* n:\"BrtColorFilter\" */ },\n\t/*::[*/0x00A9/*::]*/: { /* n:\"BrtIconFilter\" */ },\n\t/*::[*/0x00AA/*::]*/: { /* n:\"BrtTop10Filter\" */ },\n\t/*::[*/0x00AB/*::]*/: { /* n:\"BrtDynamicFilter\" */ },\n\t/*::[*/0x00AC/*::]*/: { /* n:\"BrtBeginCustomFilters\", */ T:1 },\n\t/*::[*/0x00AD/*::]*/: { /* n:\"BrtEndCustomFilters\", */ T:-1 },\n\t/*::[*/0x00AE/*::]*/: { /* n:\"BrtCustomFilter\" */ },\n\t/*::[*/0x00AF/*::]*/: { /* n:\"BrtAFilterDateGroupItem\" */ },\n\t/*::[*/0x00B0/*::]*/: { /* n:\"BrtMergeCell\", */ f:parse_BrtMergeCell },\n\t/*::[*/0x00B1/*::]*/: { /* n:\"BrtBeginMergeCells\", */ T:1 },\n\t/*::[*/0x00B2/*::]*/: { /* n:\"BrtEndMergeCells\", */ T:-1 },\n\t/*::[*/0x00B3/*::]*/: { /* n:\"BrtBeginPivotCacheDef\", */ T:1 },\n\t/*::[*/0x00B4/*::]*/: { /* n:\"BrtEndPivotCacheDef\", */ T:-1 },\n\t/*::[*/0x00B5/*::]*/: { /* n:\"BrtBeginPCDFields\", */ T:1 },\n\t/*::[*/0x00B6/*::]*/: { /* n:\"BrtEndPCDFields\", */ T:-1 },\n\t/*::[*/0x00B7/*::]*/: { /* n:\"BrtBeginPCDField\", */ T:1 },\n\t/*::[*/0x00B8/*::]*/: { /* n:\"BrtEndPCDField\", */ T:-1 },\n\t/*::[*/0x00B9/*::]*/: { /* n:\"BrtBeginPCDSource\", */ T:1 },\n\t/*::[*/0x00BA/*::]*/: { /* n:\"BrtEndPCDSource\", */ T:-1 },\n\t/*::[*/0x00BB/*::]*/: { /* n:\"BrtBeginPCDSRange\", */ T:1 },\n\t/*::[*/0x00BC/*::]*/: { /* n:\"BrtEndPCDSRange\", */ T:-1 },\n\t/*::[*/0x00BD/*::]*/: { /* n:\"BrtBeginPCDFAtbl\", */ T:1 },\n\t/*::[*/0x00BE/*::]*/: { /* n:\"BrtEndPCDFAtbl\", */ T:-1 },\n\t/*::[*/0x00BF/*::]*/: { /* n:\"BrtBeginPCDIRun\", */ T:1 },\n\t/*::[*/0x00C0/*::]*/: { /* n:\"BrtEndPCDIRun\", */ T:-1 },\n\t/*::[*/0x00C1/*::]*/: { /* n:\"BrtBeginPivotCacheRecords\", */ T:1 },\n\t/*::[*/0x00C2/*::]*/: { /* n:\"BrtEndPivotCacheRecords\", */ T:-1 },\n\t/*::[*/0x00C3/*::]*/: { /* n:\"BrtBeginPCDHierarchies\", */ T:1 },\n\t/*::[*/0x00C4/*::]*/: { /* n:\"BrtEndPCDHierarchies\", */ T:-1 },\n\t/*::[*/0x00C5/*::]*/: { /* n:\"BrtBeginPCDHierarchy\", */ T:1 },\n\t/*::[*/0x00C6/*::]*/: { /* n:\"BrtEndPCDHierarchy\", */ T:-1 },\n\t/*::[*/0x00C7/*::]*/: { /* n:\"BrtBeginPCDHFieldsUsage\", */ T:1 },\n\t/*::[*/0x00C8/*::]*/: { /* n:\"BrtEndPCDHFieldsUsage\", */ T:-1 },\n\t/*::[*/0x00C9/*::]*/: { /* n:\"BrtBeginExtConnection\", */ T:1 },\n\t/*::[*/0x00CA/*::]*/: { /* n:\"BrtEndExtConnection\", */ T:-1 },\n\t/*::[*/0x00CB/*::]*/: { /* n:\"BrtBeginECDbProps\", */ T:1 },\n\t/*::[*/0x00CC/*::]*/: { /* n:\"BrtEndECDbProps\", */ T:-1 },\n\t/*::[*/0x00CD/*::]*/: { /* n:\"BrtBeginECOlapProps\", */ T:1 },\n\t/*::[*/0x00CE/*::]*/: { /* n:\"BrtEndECOlapProps\", */ T:-1 },\n\t/*::[*/0x00CF/*::]*/: { /* n:\"BrtBeginPCDSConsol\", */ T:1 },\n\t/*::[*/0x00D0/*::]*/: { /* n:\"BrtEndPCDSConsol\", */ T:-1 },\n\t/*::[*/0x00D1/*::]*/: { /* n:\"BrtBeginPCDSCPages\", */ T:1 },\n\t/*::[*/0x00D2/*::]*/: { /* n:\"BrtEndPCDSCPages\", */ T:-1 },\n\t/*::[*/0x00D3/*::]*/: { /* n:\"BrtBeginPCDSCPage\", */ T:1 },\n\t/*::[*/0x00D4/*::]*/: { /* n:\"BrtEndPCDSCPage\", */ T:-1 },\n\t/*::[*/0x00D5/*::]*/: { /* n:\"BrtBeginPCDSCPItem\", */ T:1 },\n\t/*::[*/0x00D6/*::]*/: { /* n:\"BrtEndPCDSCPItem\", */ T:-1 },\n\t/*::[*/0x00D7/*::]*/: { /* n:\"BrtBeginPCDSCSets\", */ T:1 },\n\t/*::[*/0x00D8/*::]*/: { /* n:\"BrtEndPCDSCSets\", */ T:-1 },\n\t/*::[*/0x00D9/*::]*/: { /* n:\"BrtBeginPCDSCSet\", */ T:1 },\n\t/*::[*/0x00DA/*::]*/: { /* n:\"BrtEndPCDSCSet\", */ T:-1 },\n\t/*::[*/0x00DB/*::]*/: { /* n:\"BrtBeginPCDFGroup\", */ T:1 },\n\t/*::[*/0x00DC/*::]*/: { /* n:\"BrtEndPCDFGroup\", */ T:-1 },\n\t/*::[*/0x00DD/*::]*/: { /* n:\"BrtBeginPCDFGItems\", */ T:1 },\n\t/*::[*/0x00DE/*::]*/: { /* n:\"BrtEndPCDFGItems\", */ T:-1 },\n\t/*::[*/0x00DF/*::]*/: { /* n:\"BrtBeginPCDFGRange\", */ T:1 },\n\t/*::[*/0x00E0/*::]*/: { /* n:\"BrtEndPCDFGRange\", */ T:-1 },\n\t/*::[*/0x00E1/*::]*/: { /* n:\"BrtBeginPCDFGDiscrete\", */ T:1 },\n\t/*::[*/0x00E2/*::]*/: { /* n:\"BrtEndPCDFGDiscrete\", */ T:-1 },\n\t/*::[*/0x00E3/*::]*/: { /* n:\"BrtBeginPCDSDTupleCache\", */ T:1 },\n\t/*::[*/0x00E4/*::]*/: { /* n:\"BrtEndPCDSDTupleCache\", */ T:-1 },\n\t/*::[*/0x00E5/*::]*/: { /* n:\"BrtBeginPCDSDTCEntries\", */ T:1 },\n\t/*::[*/0x00E6/*::]*/: { /* n:\"BrtEndPCDSDTCEntries\", */ T:-1 },\n\t/*::[*/0x00E7/*::]*/: { /* n:\"BrtBeginPCDSDTCEMembers\", */ T:1 },\n\t/*::[*/0x00E8/*::]*/: { /* n:\"BrtEndPCDSDTCEMembers\", */ T:-1 },\n\t/*::[*/0x00E9/*::]*/: { /* n:\"BrtBeginPCDSDTCEMember\", */ T:1 },\n\t/*::[*/0x00EA/*::]*/: { /* n:\"BrtEndPCDSDTCEMember\", */ T:-1 },\n\t/*::[*/0x00EB/*::]*/: { /* n:\"BrtBeginPCDSDTCQueries\", */ T:1 },\n\t/*::[*/0x00EC/*::]*/: { /* n:\"BrtEndPCDSDTCQueries\", */ T:-1 },\n\t/*::[*/0x00ED/*::]*/: { /* n:\"BrtBeginPCDSDTCQuery\", */ T:1 },\n\t/*::[*/0x00EE/*::]*/: { /* n:\"BrtEndPCDSDTCQuery\", */ T:-1 },\n\t/*::[*/0x00EF/*::]*/: { /* n:\"BrtBeginPCDSDTCSets\", */ T:1 },\n\t/*::[*/0x00F0/*::]*/: { /* n:\"BrtEndPCDSDTCSets\", */ T:-1 },\n\t/*::[*/0x00F1/*::]*/: { /* n:\"BrtBeginPCDSDTCSet\", */ T:1 },\n\t/*::[*/0x00F2/*::]*/: { /* n:\"BrtEndPCDSDTCSet\", */ T:-1 },\n\t/*::[*/0x00F3/*::]*/: { /* n:\"BrtBeginPCDCalcItems\", */ T:1 },\n\t/*::[*/0x00F4/*::]*/: { /* n:\"BrtEndPCDCalcItems\", */ T:-1 },\n\t/*::[*/0x00F5/*::]*/: { /* n:\"BrtBeginPCDCalcItem\", */ T:1 },\n\t/*::[*/0x00F6/*::]*/: { /* n:\"BrtEndPCDCalcItem\", */ T:-1 },\n\t/*::[*/0x00F7/*::]*/: { /* n:\"BrtBeginPRule\", */ T:1 },\n\t/*::[*/0x00F8/*::]*/: { /* n:\"BrtEndPRule\", */ T:-1 },\n\t/*::[*/0x00F9/*::]*/: { /* n:\"BrtBeginPRFilters\", */ T:1 },\n\t/*::[*/0x00FA/*::]*/: { /* n:\"BrtEndPRFilters\", */ T:-1 },\n\t/*::[*/0x00FB/*::]*/: { /* n:\"BrtBeginPRFilter\", */ T:1 },\n\t/*::[*/0x00FC/*::]*/: { /* n:\"BrtEndPRFilter\", */ T:-1 },\n\t/*::[*/0x00FD/*::]*/: { /* n:\"BrtBeginPNames\", */ T:1 },\n\t/*::[*/0x00FE/*::]*/: { /* n:\"BrtEndPNames\", */ T:-1 },\n\t/*::[*/0x00FF/*::]*/: { /* n:\"BrtBeginPName\", */ T:1 },\n\t/*::[*/0x0100/*::]*/: { /* n:\"BrtEndPName\", */ T:-1 },\n\t/*::[*/0x0101/*::]*/: { /* n:\"BrtBeginPNPairs\", */ T:1 },\n\t/*::[*/0x0102/*::]*/: { /* n:\"BrtEndPNPairs\", */ T:-1 },\n\t/*::[*/0x0103/*::]*/: { /* n:\"BrtBeginPNPair\", */ T:1 },\n\t/*::[*/0x0104/*::]*/: { /* n:\"BrtEndPNPair\", */ T:-1 },\n\t/*::[*/0x0105/*::]*/: { /* n:\"BrtBeginECWebProps\", */ T:1 },\n\t/*::[*/0x0106/*::]*/: { /* n:\"BrtEndECWebProps\", */ T:-1 },\n\t/*::[*/0x0107/*::]*/: { /* n:\"BrtBeginEcWpTables\", */ T:1 },\n\t/*::[*/0x0108/*::]*/: { /* n:\"BrtEndECWPTables\", */ T:-1 },\n\t/*::[*/0x0109/*::]*/: { /* n:\"BrtBeginECParams\", */ T:1 },\n\t/*::[*/0x010A/*::]*/: { /* n:\"BrtEndECParams\", */ T:-1 },\n\t/*::[*/0x010B/*::]*/: { /* n:\"BrtBeginECParam\", */ T:1 },\n\t/*::[*/0x010C/*::]*/: { /* n:\"BrtEndECParam\", */ T:-1 },\n\t/*::[*/0x010D/*::]*/: { /* n:\"BrtBeginPCDKPIs\", */ T:1 },\n\t/*::[*/0x010E/*::]*/: { /* n:\"BrtEndPCDKPIs\", */ T:-1 },\n\t/*::[*/0x010F/*::]*/: { /* n:\"BrtBeginPCDKPI\", */ T:1 },\n\t/*::[*/0x0110/*::]*/: { /* n:\"BrtEndPCDKPI\", */ T:-1 },\n\t/*::[*/0x0111/*::]*/: { /* n:\"BrtBeginDims\", */ T:1 },\n\t/*::[*/0x0112/*::]*/: { /* n:\"BrtEndDims\", */ T:-1 },\n\t/*::[*/0x0113/*::]*/: { /* n:\"BrtBeginDim\", */ T:1 },\n\t/*::[*/0x0114/*::]*/: { /* n:\"BrtEndDim\", */ T:-1 },\n\t/*::[*/0x0115/*::]*/: { /* n:\"BrtIndexPartEnd\" */ },\n\t/*::[*/0x0116/*::]*/: { /* n:\"BrtBeginStyleSheet\", */ T:1 },\n\t/*::[*/0x0117/*::]*/: { /* n:\"BrtEndStyleSheet\", */ T:-1 },\n\t/*::[*/0x0118/*::]*/: { /* n:\"BrtBeginSXView\", */ T:1 },\n\t/*::[*/0x0119/*::]*/: { /* n:\"BrtEndSXVI\", */ T:-1 },\n\t/*::[*/0x011A/*::]*/: { /* n:\"BrtBeginSXVI\", */ T:1 },\n\t/*::[*/0x011B/*::]*/: { /* n:\"BrtBeginSXVIs\", */ T:1 },\n\t/*::[*/0x011C/*::]*/: { /* n:\"BrtEndSXVIs\", */ T:-1 },\n\t/*::[*/0x011D/*::]*/: { /* n:\"BrtBeginSXVD\", */ T:1 },\n\t/*::[*/0x011E/*::]*/: { /* n:\"BrtEndSXVD\", */ T:-1 },\n\t/*::[*/0x011F/*::]*/: { /* n:\"BrtBeginSXVDs\", */ T:1 },\n\t/*::[*/0x0120/*::]*/: { /* n:\"BrtEndSXVDs\", */ T:-1 },\n\t/*::[*/0x0121/*::]*/: { /* n:\"BrtBeginSXPI\", */ T:1 },\n\t/*::[*/0x0122/*::]*/: { /* n:\"BrtEndSXPI\", */ T:-1 },\n\t/*::[*/0x0123/*::]*/: { /* n:\"BrtBeginSXPIs\", */ T:1 },\n\t/*::[*/0x0124/*::]*/: { /* n:\"BrtEndSXPIs\", */ T:-1 },\n\t/*::[*/0x0125/*::]*/: { /* n:\"BrtBeginSXDI\", */ T:1 },\n\t/*::[*/0x0126/*::]*/: { /* n:\"BrtEndSXDI\", */ T:-1 },\n\t/*::[*/0x0127/*::]*/: { /* n:\"BrtBeginSXDIs\", */ T:1 },\n\t/*::[*/0x0128/*::]*/: { /* n:\"BrtEndSXDIs\", */ T:-1 },\n\t/*::[*/0x0129/*::]*/: { /* n:\"BrtBeginSXLI\", */ T:1 },\n\t/*::[*/0x012A/*::]*/: { /* n:\"BrtEndSXLI\", */ T:-1 },\n\t/*::[*/0x012B/*::]*/: { /* n:\"BrtBeginSXLIRws\", */ T:1 },\n\t/*::[*/0x012C/*::]*/: { /* n:\"BrtEndSXLIRws\", */ T:-1 },\n\t/*::[*/0x012D/*::]*/: { /* n:\"BrtBeginSXLICols\", */ T:1 },\n\t/*::[*/0x012E/*::]*/: { /* n:\"BrtEndSXLICols\", */ T:-1 },\n\t/*::[*/0x012F/*::]*/: { /* n:\"BrtBeginSXFormat\", */ T:1 },\n\t/*::[*/0x0130/*::]*/: { /* n:\"BrtEndSXFormat\", */ T:-1 },\n\t/*::[*/0x0131/*::]*/: { /* n:\"BrtBeginSXFormats\", */ T:1 },\n\t/*::[*/0x0132/*::]*/: { /* n:\"BrtEndSxFormats\", */ T:-1 },\n\t/*::[*/0x0133/*::]*/: { /* n:\"BrtBeginSxSelect\", */ T:1 },\n\t/*::[*/0x0134/*::]*/: { /* n:\"BrtEndSxSelect\", */ T:-1 },\n\t/*::[*/0x0135/*::]*/: { /* n:\"BrtBeginISXVDRws\", */ T:1 },\n\t/*::[*/0x0136/*::]*/: { /* n:\"BrtEndISXVDRws\", */ T:-1 },\n\t/*::[*/0x0137/*::]*/: { /* n:\"BrtBeginISXVDCols\", */ T:1 },\n\t/*::[*/0x0138/*::]*/: { /* n:\"BrtEndISXVDCols\", */ T:-1 },\n\t/*::[*/0x0139/*::]*/: { /* n:\"BrtEndSXLocation\", */ T:-1 },\n\t/*::[*/0x013A/*::]*/: { /* n:\"BrtBeginSXLocation\", */ T:1 },\n\t/*::[*/0x013B/*::]*/: { /* n:\"BrtEndSXView\", */ T:-1 },\n\t/*::[*/0x013C/*::]*/: { /* n:\"BrtBeginSXTHs\", */ T:1 },\n\t/*::[*/0x013D/*::]*/: { /* n:\"BrtEndSXTHs\", */ T:-1 },\n\t/*::[*/0x013E/*::]*/: { /* n:\"BrtBeginSXTH\", */ T:1 },\n\t/*::[*/0x013F/*::]*/: { /* n:\"BrtEndSXTH\", */ T:-1 },\n\t/*::[*/0x0140/*::]*/: { /* n:\"BrtBeginISXTHRws\", */ T:1 },\n\t/*::[*/0x0141/*::]*/: { /* n:\"BrtEndISXTHRws\", */ T:-1 },\n\t/*::[*/0x0142/*::]*/: { /* n:\"BrtBeginISXTHCols\", */ T:1 },\n\t/*::[*/0x0143/*::]*/: { /* n:\"BrtEndISXTHCols\", */ T:-1 },\n\t/*::[*/0x0144/*::]*/: { /* n:\"BrtBeginSXTDMPS\", */ T:1 },\n\t/*::[*/0x0145/*::]*/: { /* n:\"BrtEndSXTDMPs\", */ T:-1 },\n\t/*::[*/0x0146/*::]*/: { /* n:\"BrtBeginSXTDMP\", */ T:1 },\n\t/*::[*/0x0147/*::]*/: { /* n:\"BrtEndSXTDMP\", */ T:-1 },\n\t/*::[*/0x0148/*::]*/: { /* n:\"BrtBeginSXTHItems\", */ T:1 },\n\t/*::[*/0x0149/*::]*/: { /* n:\"BrtEndSXTHItems\", */ T:-1 },\n\t/*::[*/0x014A/*::]*/: { /* n:\"BrtBeginSXTHItem\", */ T:1 },\n\t/*::[*/0x014B/*::]*/: { /* n:\"BrtEndSXTHItem\", */ T:-1 },\n\t/*::[*/0x014C/*::]*/: { /* n:\"BrtBeginMetadata\", */ T:1 },\n\t/*::[*/0x014D/*::]*/: { /* n:\"BrtEndMetadata\", */ T:-1 },\n\t/*::[*/0x014E/*::]*/: { /* n:\"BrtBeginEsmdtinfo\", */ T:1 },\n\t/*::[*/0x014F/*::]*/: { /* n:\"BrtMdtinfo\", */ f:parse_BrtMdtinfo },\n\t/*::[*/0x0150/*::]*/: { /* n:\"BrtEndEsmdtinfo\", */ T:-1 },\n\t/*::[*/0x0151/*::]*/: { /* n:\"BrtBeginEsmdb\", */ f:parse_BrtBeginEsmdb, T:1 },\n\t/*::[*/0x0152/*::]*/: { /* n:\"BrtEndEsmdb\", */ T:-1 },\n\t/*::[*/0x0153/*::]*/: { /* n:\"BrtBeginEsfmd\", */ T:1 },\n\t/*::[*/0x0154/*::]*/: { /* n:\"BrtEndEsfmd\", */ T:-1 },\n\t/*::[*/0x0155/*::]*/: { /* n:\"BrtBeginSingleCells\", */ T:1 },\n\t/*::[*/0x0156/*::]*/: { /* n:\"BrtEndSingleCells\", */ T:-1 },\n\t/*::[*/0x0157/*::]*/: { /* n:\"BrtBeginList\", */ T:1 },\n\t/*::[*/0x0158/*::]*/: { /* n:\"BrtEndList\", */ T:-1 },\n\t/*::[*/0x0159/*::]*/: { /* n:\"BrtBeginListCols\", */ T:1 },\n\t/*::[*/0x015A/*::]*/: { /* n:\"BrtEndListCols\", */ T:-1 },\n\t/*::[*/0x015B/*::]*/: { /* n:\"BrtBeginListCol\", */ T:1 },\n\t/*::[*/0x015C/*::]*/: { /* n:\"BrtEndListCol\", */ T:-1 },\n\t/*::[*/0x015D/*::]*/: { /* n:\"BrtBeginListXmlCPr\", */ T:1 },\n\t/*::[*/0x015E/*::]*/: { /* n:\"BrtEndListXmlCPr\", */ T:-1 },\n\t/*::[*/0x015F/*::]*/: { /* n:\"BrtListCCFmla\" */ },\n\t/*::[*/0x0160/*::]*/: { /* n:\"BrtListTrFmla\" */ },\n\t/*::[*/0x0161/*::]*/: { /* n:\"BrtBeginExternals\", */ T:1 },\n\t/*::[*/0x0162/*::]*/: { /* n:\"BrtEndExternals\", */ T:-1 },\n\t/*::[*/0x0163/*::]*/: { /* n:\"BrtSupBookSrc\", */ f:parse_RelID},\n\t/*::[*/0x0165/*::]*/: { /* n:\"BrtSupSelf\" */ },\n\t/*::[*/0x0166/*::]*/: { /* n:\"BrtSupSame\" */ },\n\t/*::[*/0x0167/*::]*/: { /* n:\"BrtSupTabs\" */ },\n\t/*::[*/0x0168/*::]*/: { /* n:\"BrtBeginSupBook\", */ T:1 },\n\t/*::[*/0x0169/*::]*/: { /* n:\"BrtPlaceholderName\" */ },\n\t/*::[*/0x016A/*::]*/: { /* n:\"BrtExternSheet\", */ f:parse_ExternSheet },\n\t/*::[*/0x016B/*::]*/: { /* n:\"BrtExternTableStart\" */ },\n\t/*::[*/0x016C/*::]*/: { /* n:\"BrtExternTableEnd\" */ },\n\t/*::[*/0x016E/*::]*/: { /* n:\"BrtExternRowHdr\" */ },\n\t/*::[*/0x016F/*::]*/: { /* n:\"BrtExternCellBlank\" */ },\n\t/*::[*/0x0170/*::]*/: { /* n:\"BrtExternCellReal\" */ },\n\t/*::[*/0x0171/*::]*/: { /* n:\"BrtExternCellBool\" */ },\n\t/*::[*/0x0172/*::]*/: { /* n:\"BrtExternCellError\" */ },\n\t/*::[*/0x0173/*::]*/: { /* n:\"BrtExternCellString\" */ },\n\t/*::[*/0x0174/*::]*/: { /* n:\"BrtBeginEsmdx\", */ T:1 },\n\t/*::[*/0x0175/*::]*/: { /* n:\"BrtEndEsmdx\", */ T:-1 },\n\t/*::[*/0x0176/*::]*/: { /* n:\"BrtBeginMdxSet\", */ T:1 },\n\t/*::[*/0x0177/*::]*/: { /* n:\"BrtEndMdxSet\", */ T:-1 },\n\t/*::[*/0x0178/*::]*/: { /* n:\"BrtBeginMdxMbrProp\", */ T:1 },\n\t/*::[*/0x0179/*::]*/: { /* n:\"BrtEndMdxMbrProp\", */ T:-1 },\n\t/*::[*/0x017A/*::]*/: { /* n:\"BrtBeginMdxKPI\", */ T:1 },\n\t/*::[*/0x017B/*::]*/: { /* n:\"BrtEndMdxKPI\", */ T:-1 },\n\t/*::[*/0x017C/*::]*/: { /* n:\"BrtBeginEsstr\", */ T:1 },\n\t/*::[*/0x017D/*::]*/: { /* n:\"BrtEndEsstr\", */ T:-1 },\n\t/*::[*/0x017E/*::]*/: { /* n:\"BrtBeginPRFItem\", */ T:1 },\n\t/*::[*/0x017F/*::]*/: { /* n:\"BrtEndPRFItem\", */ T:-1 },\n\t/*::[*/0x0180/*::]*/: { /* n:\"BrtBeginPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0181/*::]*/: { /* n:\"BrtEndPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0182/*::]*/: { /* n:\"BrtBeginPivotCacheID\", */ T:1 },\n\t/*::[*/0x0183/*::]*/: { /* n:\"BrtEndPivotCacheID\", */ T:-1 },\n\t/*::[*/0x0184/*::]*/: { /* n:\"BrtBeginISXVIs\", */ T:1 },\n\t/*::[*/0x0185/*::]*/: { /* n:\"BrtEndISXVIs\", */ T:-1 },\n\t/*::[*/0x0186/*::]*/: { /* n:\"BrtBeginColInfos\", */ T:1 },\n\t/*::[*/0x0187/*::]*/: { /* n:\"BrtEndColInfos\", */ T:-1 },\n\t/*::[*/0x0188/*::]*/: { /* n:\"BrtBeginRwBrk\", */ T:1 },\n\t/*::[*/0x0189/*::]*/: { /* n:\"BrtEndRwBrk\", */ T:-1 },\n\t/*::[*/0x018A/*::]*/: { /* n:\"BrtBeginColBrk\", */ T:1 },\n\t/*::[*/0x018B/*::]*/: { /* n:\"BrtEndColBrk\", */ T:-1 },\n\t/*::[*/0x018C/*::]*/: { /* n:\"BrtBrk\" */ },\n\t/*::[*/0x018D/*::]*/: { /* n:\"BrtUserBookView\" */ },\n\t/*::[*/0x018E/*::]*/: { /* n:\"BrtInfo\" */ },\n\t/*::[*/0x018F/*::]*/: { /* n:\"BrtCUsr\" */ },\n\t/*::[*/0x0190/*::]*/: { /* n:\"BrtUsr\" */ },\n\t/*::[*/0x0191/*::]*/: { /* n:\"BrtBeginUsers\", */ T:1 },\n\t/*::[*/0x0193/*::]*/: { /* n:\"BrtEOF\" */ },\n\t/*::[*/0x0194/*::]*/: { /* n:\"BrtUCR\" */ },\n\t/*::[*/0x0195/*::]*/: { /* n:\"BrtRRInsDel\" */ },\n\t/*::[*/0x0196/*::]*/: { /* n:\"BrtRREndInsDel\" */ },\n\t/*::[*/0x0197/*::]*/: { /* n:\"BrtRRMove\" */ },\n\t/*::[*/0x0198/*::]*/: { /* n:\"BrtRREndMove\" */ },\n\t/*::[*/0x0199/*::]*/: { /* n:\"BrtRRChgCell\" */ },\n\t/*::[*/0x019A/*::]*/: { /* n:\"BrtRREndChgCell\" */ },\n\t/*::[*/0x019B/*::]*/: { /* n:\"BrtRRHeader\" */ },\n\t/*::[*/0x019C/*::]*/: { /* n:\"BrtRRUserView\" */ },\n\t/*::[*/0x019D/*::]*/: { /* n:\"BrtRRRenSheet\" */ },\n\t/*::[*/0x019E/*::]*/: { /* n:\"BrtRRInsertSh\" */ },\n\t/*::[*/0x019F/*::]*/: { /* n:\"BrtRRDefName\" */ },\n\t/*::[*/0x01A0/*::]*/: { /* n:\"BrtRRNote\" */ },\n\t/*::[*/0x01A1/*::]*/: { /* n:\"BrtRRConflict\" */ },\n\t/*::[*/0x01A2/*::]*/: { /* n:\"BrtRRTQSIF\" */ },\n\t/*::[*/0x01A3/*::]*/: { /* n:\"BrtRRFormat\" */ },\n\t/*::[*/0x01A4/*::]*/: { /* n:\"BrtRREndFormat\" */ },\n\t/*::[*/0x01A5/*::]*/: { /* n:\"BrtRRAutoFmt\" */ },\n\t/*::[*/0x01A6/*::]*/: { /* n:\"BrtBeginUserShViews\", */ T:1 },\n\t/*::[*/0x01A7/*::]*/: { /* n:\"BrtBeginUserShView\", */ T:1 },\n\t/*::[*/0x01A8/*::]*/: { /* n:\"BrtEndUserShView\", */ T:-1 },\n\t/*::[*/0x01A9/*::]*/: { /* n:\"BrtEndUserShViews\", */ T:-1 },\n\t/*::[*/0x01AA/*::]*/: { /* n:\"BrtArrFmla\", */ f:parse_BrtArrFmla },\n\t/*::[*/0x01AB/*::]*/: { /* n:\"BrtShrFmla\", */ f:parse_BrtShrFmla },\n\t/*::[*/0x01AC/*::]*/: { /* n:\"BrtTable\" */ },\n\t/*::[*/0x01AD/*::]*/: { /* n:\"BrtBeginExtConnections\", */ T:1 },\n\t/*::[*/0x01AE/*::]*/: { /* n:\"BrtEndExtConnections\", */ T:-1 },\n\t/*::[*/0x01AF/*::]*/: { /* n:\"BrtBeginPCDCalcMems\", */ T:1 },\n\t/*::[*/0x01B0/*::]*/: { /* n:\"BrtEndPCDCalcMems\", */ T:-1 },\n\t/*::[*/0x01B1/*::]*/: { /* n:\"BrtBeginPCDCalcMem\", */ T:1 },\n\t/*::[*/0x01B2/*::]*/: { /* n:\"BrtEndPCDCalcMem\", */ T:-1 },\n\t/*::[*/0x01B3/*::]*/: { /* n:\"BrtBeginPCDHGLevels\", */ T:1 },\n\t/*::[*/0x01B4/*::]*/: { /* n:\"BrtEndPCDHGLevels\", */ T:-1 },\n\t/*::[*/0x01B5/*::]*/: { /* n:\"BrtBeginPCDHGLevel\", */ T:1 },\n\t/*::[*/0x01B6/*::]*/: { /* n:\"BrtEndPCDHGLevel\", */ T:-1 },\n\t/*::[*/0x01B7/*::]*/: { /* n:\"BrtBeginPCDHGLGroups\", */ T:1 },\n\t/*::[*/0x01B8/*::]*/: { /* n:\"BrtEndPCDHGLGroups\", */ T:-1 },\n\t/*::[*/0x01B9/*::]*/: { /* n:\"BrtBeginPCDHGLGroup\", */ T:1 },\n\t/*::[*/0x01BA/*::]*/: { /* n:\"BrtEndPCDHGLGroup\", */ T:-1 },\n\t/*::[*/0x01BB/*::]*/: { /* n:\"BrtBeginPCDHGLGMembers\", */ T:1 },\n\t/*::[*/0x01BC/*::]*/: { /* n:\"BrtEndPCDHGLGMembers\", */ T:-1 },\n\t/*::[*/0x01BD/*::]*/: { /* n:\"BrtBeginPCDHGLGMember\", */ T:1 },\n\t/*::[*/0x01BE/*::]*/: { /* n:\"BrtEndPCDHGLGMember\", */ T:-1 },\n\t/*::[*/0x01BF/*::]*/: { /* n:\"BrtBeginQSI\", */ T:1 },\n\t/*::[*/0x01C0/*::]*/: { /* n:\"BrtEndQSI\", */ T:-1 },\n\t/*::[*/0x01C1/*::]*/: { /* n:\"BrtBeginQSIR\", */ T:1 },\n\t/*::[*/0x01C2/*::]*/: { /* n:\"BrtEndQSIR\", */ T:-1 },\n\t/*::[*/0x01C3/*::]*/: { /* n:\"BrtBeginDeletedNames\", */ T:1 },\n\t/*::[*/0x01C4/*::]*/: { /* n:\"BrtEndDeletedNames\", */ T:-1 },\n\t/*::[*/0x01C5/*::]*/: { /* n:\"BrtBeginDeletedName\", */ T:1 },\n\t/*::[*/0x01C6/*::]*/: { /* n:\"BrtEndDeletedName\", */ T:-1 },\n\t/*::[*/0x01C7/*::]*/: { /* n:\"BrtBeginQSIFs\", */ T:1 },\n\t/*::[*/0x01C8/*::]*/: { /* n:\"BrtEndQSIFs\", */ T:-1 },\n\t/*::[*/0x01C9/*::]*/: { /* n:\"BrtBeginQSIF\", */ T:1 },\n\t/*::[*/0x01CA/*::]*/: { /* n:\"BrtEndQSIF\", */ T:-1 },\n\t/*::[*/0x01CB/*::]*/: { /* n:\"BrtBeginAutoSortScope\", */ T:1 },\n\t/*::[*/0x01CC/*::]*/: { /* n:\"BrtEndAutoSortScope\", */ T:-1 },\n\t/*::[*/0x01CD/*::]*/: { /* n:\"BrtBeginConditionalFormatting\", */ T:1 },\n\t/*::[*/0x01CE/*::]*/: { /* n:\"BrtEndConditionalFormatting\", */ T:-1 },\n\t/*::[*/0x01CF/*::]*/: { /* n:\"BrtBeginCFRule\", */ T:1 },\n\t/*::[*/0x01D0/*::]*/: { /* n:\"BrtEndCFRule\", */ T:-1 },\n\t/*::[*/0x01D1/*::]*/: { /* n:\"BrtBeginIconSet\", */ T:1 },\n\t/*::[*/0x01D2/*::]*/: { /* n:\"BrtEndIconSet\", */ T:-1 },\n\t/*::[*/0x01D3/*::]*/: { /* n:\"BrtBeginDatabar\", */ T:1 },\n\t/*::[*/0x01D4/*::]*/: { /* n:\"BrtEndDatabar\", */ T:-1 },\n\t/*::[*/0x01D5/*::]*/: { /* n:\"BrtBeginColorScale\", */ T:1 },\n\t/*::[*/0x01D6/*::]*/: { /* n:\"BrtEndColorScale\", */ T:-1 },\n\t/*::[*/0x01D7/*::]*/: { /* n:\"BrtCFVO\" */ },\n\t/*::[*/0x01D8/*::]*/: { /* n:\"BrtExternValueMeta\" */ },\n\t/*::[*/0x01D9/*::]*/: { /* n:\"BrtBeginColorPalette\", */ T:1 },\n\t/*::[*/0x01DA/*::]*/: { /* n:\"BrtEndColorPalette\", */ T:-1 },\n\t/*::[*/0x01DB/*::]*/: { /* n:\"BrtIndexedColor\" */ },\n\t/*::[*/0x01DC/*::]*/: { /* n:\"BrtMargins\", */ f:parse_BrtMargins },\n\t/*::[*/0x01DD/*::]*/: { /* n:\"BrtPrintOptions\" */ },\n\t/*::[*/0x01DE/*::]*/: { /* n:\"BrtPageSetup\" */ },\n\t/*::[*/0x01DF/*::]*/: { /* n:\"BrtBeginHeaderFooter\", */ T:1 },\n\t/*::[*/0x01E0/*::]*/: { /* n:\"BrtEndHeaderFooter\", */ T:-1 },\n\t/*::[*/0x01E1/*::]*/: { /* n:\"BrtBeginSXCrtFormat\", */ T:1 },\n\t/*::[*/0x01E2/*::]*/: { /* n:\"BrtEndSXCrtFormat\", */ T:-1 },\n\t/*::[*/0x01E3/*::]*/: { /* n:\"BrtBeginSXCrtFormats\", */ T:1 },\n\t/*::[*/0x01E4/*::]*/: { /* n:\"BrtEndSXCrtFormats\", */ T:-1 },\n\t/*::[*/0x01E5/*::]*/: { /* n:\"BrtWsFmtInfo\", */ f:parse_BrtWsFmtInfo },\n\t/*::[*/0x01E6/*::]*/: { /* n:\"BrtBeginMgs\", */ T:1 },\n\t/*::[*/0x01E7/*::]*/: { /* n:\"BrtEndMGs\", */ T:-1 },\n\t/*::[*/0x01E8/*::]*/: { /* n:\"BrtBeginMGMaps\", */ T:1 },\n\t/*::[*/0x01E9/*::]*/: { /* n:\"BrtEndMGMaps\", */ T:-1 },\n\t/*::[*/0x01EA/*::]*/: { /* n:\"BrtBeginMG\", */ T:1 },\n\t/*::[*/0x01EB/*::]*/: { /* n:\"BrtEndMG\", */ T:-1 },\n\t/*::[*/0x01EC/*::]*/: { /* n:\"BrtBeginMap\", */ T:1 },\n\t/*::[*/0x01ED/*::]*/: { /* n:\"BrtEndMap\", */ T:-1 },\n\t/*::[*/0x01EE/*::]*/: { /* n:\"BrtHLink\", */ f:parse_BrtHLink },\n\t/*::[*/0x01EF/*::]*/: { /* n:\"BrtBeginDCon\", */ T:1 },\n\t/*::[*/0x01F0/*::]*/: { /* n:\"BrtEndDCon\", */ T:-1 },\n\t/*::[*/0x01F1/*::]*/: { /* n:\"BrtBeginDRefs\", */ T:1 },\n\t/*::[*/0x01F2/*::]*/: { /* n:\"BrtEndDRefs\", */ T:-1 },\n\t/*::[*/0x01F3/*::]*/: { /* n:\"BrtDRef\" */ },\n\t/*::[*/0x01F4/*::]*/: { /* n:\"BrtBeginScenMan\", */ T:1 },\n\t/*::[*/0x01F5/*::]*/: { /* n:\"BrtEndScenMan\", */ T:-1 },\n\t/*::[*/0x01F6/*::]*/: { /* n:\"BrtBeginSct\", */ T:1 },\n\t/*::[*/0x01F7/*::]*/: { /* n:\"BrtEndSct\", */ T:-1 },\n\t/*::[*/0x01F8/*::]*/: { /* n:\"BrtSlc\" */ },\n\t/*::[*/0x01F9/*::]*/: { /* n:\"BrtBeginDXFs\", */ T:1 },\n\t/*::[*/0x01FA/*::]*/: { /* n:\"BrtEndDXFs\", */ T:-1 },\n\t/*::[*/0x01FB/*::]*/: { /* n:\"BrtDXF\" */ },\n\t/*::[*/0x01FC/*::]*/: { /* n:\"BrtBeginTableStyles\", */ T:1 },\n\t/*::[*/0x01FD/*::]*/: { /* n:\"BrtEndTableStyles\", */ T:-1 },\n\t/*::[*/0x01FE/*::]*/: { /* n:\"BrtBeginTableStyle\", */ T:1 },\n\t/*::[*/0x01FF/*::]*/: { /* n:\"BrtEndTableStyle\", */ T:-1 },\n\t/*::[*/0x0200/*::]*/: { /* n:\"BrtTableStyleElement\" */ },\n\t/*::[*/0x0201/*::]*/: { /* n:\"BrtTableStyleClient\" */ },\n\t/*::[*/0x0202/*::]*/: { /* n:\"BrtBeginVolDeps\", */ T:1 },\n\t/*::[*/0x0203/*::]*/: { /* n:\"BrtEndVolDeps\", */ T:-1 },\n\t/*::[*/0x0204/*::]*/: { /* n:\"BrtBeginVolType\", */ T:1 },\n\t/*::[*/0x0205/*::]*/: { /* n:\"BrtEndVolType\", */ T:-1 },\n\t/*::[*/0x0206/*::]*/: { /* n:\"BrtBeginVolMain\", */ T:1 },\n\t/*::[*/0x0207/*::]*/: { /* n:\"BrtEndVolMain\", */ T:-1 },\n\t/*::[*/0x0208/*::]*/: { /* n:\"BrtBeginVolTopic\", */ T:1 },\n\t/*::[*/0x0209/*::]*/: { /* n:\"BrtEndVolTopic\", */ T:-1 },\n\t/*::[*/0x020A/*::]*/: { /* n:\"BrtVolSubtopic\" */ },\n\t/*::[*/0x020B/*::]*/: { /* n:\"BrtVolRef\" */ },\n\t/*::[*/0x020C/*::]*/: { /* n:\"BrtVolNum\" */ },\n\t/*::[*/0x020D/*::]*/: { /* n:\"BrtVolErr\" */ },\n\t/*::[*/0x020E/*::]*/: { /* n:\"BrtVolStr\" */ },\n\t/*::[*/0x020F/*::]*/: { /* n:\"BrtVolBool\" */ },\n\t/*::[*/0x0210/*::]*/: { /* n:\"BrtBeginCalcChain$\", */ T:1 },\n\t/*::[*/0x0211/*::]*/: { /* n:\"BrtEndCalcChain$\", */ T:-1 },\n\t/*::[*/0x0212/*::]*/: { /* n:\"BrtBeginSortState\", */ T:1 },\n\t/*::[*/0x0213/*::]*/: { /* n:\"BrtEndSortState\", */ T:-1 },\n\t/*::[*/0x0214/*::]*/: { /* n:\"BrtBeginSortCond\", */ T:1 },\n\t/*::[*/0x0215/*::]*/: { /* n:\"BrtEndSortCond\", */ T:-1 },\n\t/*::[*/0x0216/*::]*/: { /* n:\"BrtBookProtection\" */ },\n\t/*::[*/0x0217/*::]*/: { /* n:\"BrtSheetProtection\" */ },\n\t/*::[*/0x0218/*::]*/: { /* n:\"BrtRangeProtection\" */ },\n\t/*::[*/0x0219/*::]*/: { /* n:\"BrtPhoneticInfo\" */ },\n\t/*::[*/0x021A/*::]*/: { /* n:\"BrtBeginECTxtWiz\", */ T:1 },\n\t/*::[*/0x021B/*::]*/: { /* n:\"BrtEndECTxtWiz\", */ T:-1 },\n\t/*::[*/0x021C/*::]*/: { /* n:\"BrtBeginECTWFldInfoLst\", */ T:1 },\n\t/*::[*/0x021D/*::]*/: { /* n:\"BrtEndECTWFldInfoLst\", */ T:-1 },\n\t/*::[*/0x021E/*::]*/: { /* n:\"BrtBeginECTwFldInfo\", */ T:1 },\n\t/*::[*/0x0224/*::]*/: { /* n:\"BrtFileSharing\" */ },\n\t/*::[*/0x0225/*::]*/: { /* n:\"BrtOleSize\" */ },\n\t/*::[*/0x0226/*::]*/: { /* n:\"BrtDrawing\", */ f:parse_RelID },\n\t/*::[*/0x0227/*::]*/: { /* n:\"BrtLegacyDrawing\" */ },\n\t/*::[*/0x0228/*::]*/: { /* n:\"BrtLegacyDrawingHF\" */ },\n\t/*::[*/0x0229/*::]*/: { /* n:\"BrtWebOpt\" */ },\n\t/*::[*/0x022A/*::]*/: { /* n:\"BrtBeginWebPubItems\", */ T:1 },\n\t/*::[*/0x022B/*::]*/: { /* n:\"BrtEndWebPubItems\", */ T:-1 },\n\t/*::[*/0x022C/*::]*/: { /* n:\"BrtBeginWebPubItem\", */ T:1 },\n\t/*::[*/0x022D/*::]*/: { /* n:\"BrtEndWebPubItem\", */ T:-1 },\n\t/*::[*/0x022E/*::]*/: { /* n:\"BrtBeginSXCondFmt\", */ T:1 },\n\t/*::[*/0x022F/*::]*/: { /* n:\"BrtEndSXCondFmt\", */ T:-1 },\n\t/*::[*/0x0230/*::]*/: { /* n:\"BrtBeginSXCondFmts\", */ T:1 },\n\t/*::[*/0x0231/*::]*/: { /* n:\"BrtEndSXCondFmts\", */ T:-1 },\n\t/*::[*/0x0232/*::]*/: { /* n:\"BrtBkHim\" */ },\n\t/*::[*/0x0234/*::]*/: { /* n:\"BrtColor\" */ },\n\t/*::[*/0x0235/*::]*/: { /* n:\"BrtBeginIndexedColors\", */ T:1 },\n\t/*::[*/0x0236/*::]*/: { /* n:\"BrtEndIndexedColors\", */ T:-1 },\n\t/*::[*/0x0239/*::]*/: { /* n:\"BrtBeginMRUColors\", */ T:1 },\n\t/*::[*/0x023A/*::]*/: { /* n:\"BrtEndMRUColors\", */ T:-1 },\n\t/*::[*/0x023C/*::]*/: { /* n:\"BrtMRUColor\" */ },\n\t/*::[*/0x023D/*::]*/: { /* n:\"BrtBeginDVals\", */ T:1 },\n\t/*::[*/0x023E/*::]*/: { /* n:\"BrtEndDVals\", */ T:-1 },\n\t/*::[*/0x0241/*::]*/: { /* n:\"BrtSupNameStart\" */ },\n\t/*::[*/0x0242/*::]*/: { /* n:\"BrtSupNameValueStart\" */ },\n\t/*::[*/0x0243/*::]*/: { /* n:\"BrtSupNameValueEnd\" */ },\n\t/*::[*/0x0244/*::]*/: { /* n:\"BrtSupNameNum\" */ },\n\t/*::[*/0x0245/*::]*/: { /* n:\"BrtSupNameErr\" */ },\n\t/*::[*/0x0246/*::]*/: { /* n:\"BrtSupNameSt\" */ },\n\t/*::[*/0x0247/*::]*/: { /* n:\"BrtSupNameNil\" */ },\n\t/*::[*/0x0248/*::]*/: { /* n:\"BrtSupNameBool\" */ },\n\t/*::[*/0x0249/*::]*/: { /* n:\"BrtSupNameFmla\" */ },\n\t/*::[*/0x024A/*::]*/: { /* n:\"BrtSupNameBits\" */ },\n\t/*::[*/0x024B/*::]*/: { /* n:\"BrtSupNameEnd\" */ },\n\t/*::[*/0x024C/*::]*/: { /* n:\"BrtEndSupBook\", */ T:-1 },\n\t/*::[*/0x024D/*::]*/: { /* n:\"BrtCellSmartTagProperty\" */ },\n\t/*::[*/0x024E/*::]*/: { /* n:\"BrtBeginCellSmartTag\", */ T:1 },\n\t/*::[*/0x024F/*::]*/: { /* n:\"BrtEndCellSmartTag\", */ T:-1 },\n\t/*::[*/0x0250/*::]*/: { /* n:\"BrtBeginCellSmartTags\", */ T:1 },\n\t/*::[*/0x0251/*::]*/: { /* n:\"BrtEndCellSmartTags\", */ T:-1 },\n\t/*::[*/0x0252/*::]*/: { /* n:\"BrtBeginSmartTags\", */ T:1 },\n\t/*::[*/0x0253/*::]*/: { /* n:\"BrtEndSmartTags\", */ T:-1 },\n\t/*::[*/0x0254/*::]*/: { /* n:\"BrtSmartTagType\" */ },\n\t/*::[*/0x0255/*::]*/: { /* n:\"BrtBeginSmartTagTypes\", */ T:1 },\n\t/*::[*/0x0256/*::]*/: { /* n:\"BrtEndSmartTagTypes\", */ T:-1 },\n\t/*::[*/0x0257/*::]*/: { /* n:\"BrtBeginSXFilters\", */ T:1 },\n\t/*::[*/0x0258/*::]*/: { /* n:\"BrtEndSXFilters\", */ T:-1 },\n\t/*::[*/0x0259/*::]*/: { /* n:\"BrtBeginSXFILTER\", */ T:1 },\n\t/*::[*/0x025A/*::]*/: { /* n:\"BrtEndSXFilter\", */ T:-1 },\n\t/*::[*/0x025B/*::]*/: { /* n:\"BrtBeginFills\", */ T:1 },\n\t/*::[*/0x025C/*::]*/: { /* n:\"BrtEndFills\", */ T:-1 },\n\t/*::[*/0x025D/*::]*/: { /* n:\"BrtBeginCellWatches\", */ T:1 },\n\t/*::[*/0x025E/*::]*/: { /* n:\"BrtEndCellWatches\", */ T:-1 },\n\t/*::[*/0x025F/*::]*/: { /* n:\"BrtCellWatch\" */ },\n\t/*::[*/0x0260/*::]*/: { /* n:\"BrtBeginCRErrs\", */ T:1 },\n\t/*::[*/0x0261/*::]*/: { /* n:\"BrtEndCRErrs\", */ T:-1 },\n\t/*::[*/0x0262/*::]*/: { /* n:\"BrtCrashRecErr\" */ },\n\t/*::[*/0x0263/*::]*/: { /* n:\"BrtBeginFonts\", */ T:1 },\n\t/*::[*/0x0264/*::]*/: { /* n:\"BrtEndFonts\", */ T:-1 },\n\t/*::[*/0x0265/*::]*/: { /* n:\"BrtBeginBorders\", */ T:1 },\n\t/*::[*/0x0266/*::]*/: { /* n:\"BrtEndBorders\", */ T:-1 },\n\t/*::[*/0x0267/*::]*/: { /* n:\"BrtBeginFmts\", */ T:1 },\n\t/*::[*/0x0268/*::]*/: { /* n:\"BrtEndFmts\", */ T:-1 },\n\t/*::[*/0x0269/*::]*/: { /* n:\"BrtBeginCellXFs\", */ T:1 },\n\t/*::[*/0x026A/*::]*/: { /* n:\"BrtEndCellXFs\", */ T:-1 },\n\t/*::[*/0x026B/*::]*/: { /* n:\"BrtBeginStyles\", */ T:1 },\n\t/*::[*/0x026C/*::]*/: { /* n:\"BrtEndStyles\", */ T:-1 },\n\t/*::[*/0x0271/*::]*/: { /* n:\"BrtBigName\" */ },\n\t/*::[*/0x0272/*::]*/: { /* n:\"BrtBeginCellStyleXFs\", */ T:1 },\n\t/*::[*/0x0273/*::]*/: { /* n:\"BrtEndCellStyleXFs\", */ T:-1 },\n\t/*::[*/0x0274/*::]*/: { /* n:\"BrtBeginComments\", */ T:1 },\n\t/*::[*/0x0275/*::]*/: { /* n:\"BrtEndComments\", */ T:-1 },\n\t/*::[*/0x0276/*::]*/: { /* n:\"BrtBeginCommentAuthors\", */ T:1 },\n\t/*::[*/0x0277/*::]*/: { /* n:\"BrtEndCommentAuthors\", */ T:-1 },\n\t/*::[*/0x0278/*::]*/: { /* n:\"BrtCommentAuthor\", */ f:parse_BrtCommentAuthor },\n\t/*::[*/0x0279/*::]*/: { /* n:\"BrtBeginCommentList\", */ T:1 },\n\t/*::[*/0x027A/*::]*/: { /* n:\"BrtEndCommentList\", */ T:-1 },\n\t/*::[*/0x027B/*::]*/: { /* n:\"BrtBeginComment\", */ T:1, f:parse_BrtBeginComment},\n\t/*::[*/0x027C/*::]*/: { /* n:\"BrtEndComment\", */ T:-1 },\n\t/*::[*/0x027D/*::]*/: { /* n:\"BrtCommentText\", */ f:parse_BrtCommentText },\n\t/*::[*/0x027E/*::]*/: { /* n:\"BrtBeginOleObjects\", */ T:1 },\n\t/*::[*/0x027F/*::]*/: { /* n:\"BrtOleObject\" */ },\n\t/*::[*/0x0280/*::]*/: { /* n:\"BrtEndOleObjects\", */ T:-1 },\n\t/*::[*/0x0281/*::]*/: { /* n:\"BrtBeginSxrules\", */ T:1 },\n\t/*::[*/0x0282/*::]*/: { /* n:\"BrtEndSxRules\", */ T:-1 },\n\t/*::[*/0x0283/*::]*/: { /* n:\"BrtBeginActiveXControls\", */ T:1 },\n\t/*::[*/0x0284/*::]*/: { /* n:\"BrtActiveX\" */ },\n\t/*::[*/0x0285/*::]*/: { /* n:\"BrtEndActiveXControls\", */ T:-1 },\n\t/*::[*/0x0286/*::]*/: { /* n:\"BrtBeginPCDSDTCEMembersSortBy\", */ T:1 },\n\t/*::[*/0x0288/*::]*/: { /* n:\"BrtBeginCellIgnoreECs\", */ T:1 },\n\t/*::[*/0x0289/*::]*/: { /* n:\"BrtCellIgnoreEC\" */ },\n\t/*::[*/0x028A/*::]*/: { /* n:\"BrtEndCellIgnoreECs\", */ T:-1 },\n\t/*::[*/0x028B/*::]*/: { /* n:\"BrtCsProp\", */ f:parse_BrtCsProp },\n\t/*::[*/0x028C/*::]*/: { /* n:\"BrtCsPageSetup\" */ },\n\t/*::[*/0x028D/*::]*/: { /* n:\"BrtBeginUserCsViews\", */ T:1 },\n\t/*::[*/0x028E/*::]*/: { /* n:\"BrtEndUserCsViews\", */ T:-1 },\n\t/*::[*/0x028F/*::]*/: { /* n:\"BrtBeginUserCsView\", */ T:1 },\n\t/*::[*/0x0290/*::]*/: { /* n:\"BrtEndUserCsView\", */ T:-1 },\n\t/*::[*/0x0291/*::]*/: { /* n:\"BrtBeginPcdSFCIEntries\", */ T:1 },\n\t/*::[*/0x0292/*::]*/: { /* n:\"BrtEndPCDSFCIEntries\", */ T:-1 },\n\t/*::[*/0x0293/*::]*/: { /* n:\"BrtPCDSFCIEntry\" */ },\n\t/*::[*/0x0294/*::]*/: { /* n:\"BrtBeginListParts\", */ T:1 },\n\t/*::[*/0x0295/*::]*/: { /* n:\"BrtListPart\" */ },\n\t/*::[*/0x0296/*::]*/: { /* n:\"BrtEndListParts\", */ T:-1 },\n\t/*::[*/0x0297/*::]*/: { /* n:\"BrtSheetCalcProp\" */ },\n\t/*::[*/0x0298/*::]*/: { /* n:\"BrtBeginFnGroup\", */ T:1 },\n\t/*::[*/0x0299/*::]*/: { /* n:\"BrtFnGroup\" */ },\n\t/*::[*/0x029A/*::]*/: { /* n:\"BrtEndFnGroup\", */ T:-1 },\n\t/*::[*/0x029B/*::]*/: { /* n:\"BrtSupAddin\" */ },\n\t/*::[*/0x029C/*::]*/: { /* n:\"BrtSXTDMPOrder\" */ },\n\t/*::[*/0x029D/*::]*/: { /* n:\"BrtCsProtection\" */ },\n\t/*::[*/0x029F/*::]*/: { /* n:\"BrtBeginWsSortMap\", */ T:1 },\n\t/*::[*/0x02A0/*::]*/: { /* n:\"BrtEndWsSortMap\", */ T:-1 },\n\t/*::[*/0x02A1/*::]*/: { /* n:\"BrtBeginRRSort\", */ T:1 },\n\t/*::[*/0x02A2/*::]*/: { /* n:\"BrtEndRRSort\", */ T:-1 },\n\t/*::[*/0x02A3/*::]*/: { /* n:\"BrtRRSortItem\" */ },\n\t/*::[*/0x02A4/*::]*/: { /* n:\"BrtFileSharingIso\" */ },\n\t/*::[*/0x02A5/*::]*/: { /* n:\"BrtBookProtectionIso\" */ },\n\t/*::[*/0x02A6/*::]*/: { /* n:\"BrtSheetProtectionIso\" */ },\n\t/*::[*/0x02A7/*::]*/: { /* n:\"BrtCsProtectionIso\" */ },\n\t/*::[*/0x02A8/*::]*/: { /* n:\"BrtRangeProtectionIso\" */ },\n\t/*::[*/0x02A9/*::]*/: { /* n:\"BrtDValList\" */ },\n\t/*::[*/0x0400/*::]*/: { /* n:\"BrtRwDescent\" */ },\n\t/*::[*/0x0401/*::]*/: { /* n:\"BrtKnownFonts\" */ },\n\t/*::[*/0x0402/*::]*/: { /* n:\"BrtBeginSXTupleSet\", */ T:1 },\n\t/*::[*/0x0403/*::]*/: { /* n:\"BrtEndSXTupleSet\", */ T:-1 },\n\t/*::[*/0x0404/*::]*/: { /* n:\"BrtBeginSXTupleSetHeader\", */ T:1 },\n\t/*::[*/0x0405/*::]*/: { /* n:\"BrtEndSXTupleSetHeader\", */ T:-1 },\n\t/*::[*/0x0406/*::]*/: { /* n:\"BrtSXTupleSetHeaderItem\" */ },\n\t/*::[*/0x0407/*::]*/: { /* n:\"BrtBeginSXTupleSetData\", */ T:1 },\n\t/*::[*/0x0408/*::]*/: { /* n:\"BrtEndSXTupleSetData\", */ T:-1 },\n\t/*::[*/0x0409/*::]*/: { /* n:\"BrtBeginSXTupleSetRow\", */ T:1 },\n\t/*::[*/0x040A/*::]*/: { /* n:\"BrtEndSXTupleSetRow\", */ T:-1 },\n\t/*::[*/0x040B/*::]*/: { /* n:\"BrtSXTupleSetRowItem\" */ },\n\t/*::[*/0x040C/*::]*/: { /* n:\"BrtNameExt\" */ },\n\t/*::[*/0x040D/*::]*/: { /* n:\"BrtPCDH14\" */ },\n\t/*::[*/0x040E/*::]*/: { /* n:\"BrtBeginPCDCalcMem14\", */ T:1 },\n\t/*::[*/0x040F/*::]*/: { /* n:\"BrtEndPCDCalcMem14\", */ T:-1 },\n\t/*::[*/0x0410/*::]*/: { /* n:\"BrtSXTH14\" */ },\n\t/*::[*/0x0411/*::]*/: { /* n:\"BrtBeginSparklineGroup\", */ T:1 },\n\t/*::[*/0x0412/*::]*/: { /* n:\"BrtEndSparklineGroup\", */ T:-1 },\n\t/*::[*/0x0413/*::]*/: { /* n:\"BrtSparkline\" */ },\n\t/*::[*/0x0414/*::]*/: { /* n:\"BrtSXDI14\" */ },\n\t/*::[*/0x0415/*::]*/: { /* n:\"BrtWsFmtInfoEx14\" */ },\n\t/*::[*/0x0416/*::]*/: { /* n:\"BrtBeginConditionalFormatting14\", */ T:1 },\n\t/*::[*/0x0417/*::]*/: { /* n:\"BrtEndConditionalFormatting14\", */ T:-1 },\n\t/*::[*/0x0418/*::]*/: { /* n:\"BrtBeginCFRule14\", */ T:1 },\n\t/*::[*/0x0419/*::]*/: { /* n:\"BrtEndCFRule14\", */ T:-1 },\n\t/*::[*/0x041A/*::]*/: { /* n:\"BrtCFVO14\" */ },\n\t/*::[*/0x041B/*::]*/: { /* n:\"BrtBeginDatabar14\", */ T:1 },\n\t/*::[*/0x041C/*::]*/: { /* n:\"BrtBeginIconSet14\", */ T:1 },\n\t/*::[*/0x041D/*::]*/: { /* n:\"BrtDVal14\", */ f: parse_BrtDVal14 },\n\t/*::[*/0x041E/*::]*/: { /* n:\"BrtBeginDVals14\", */ T:1 },\n\t/*::[*/0x041F/*::]*/: { /* n:\"BrtColor14\" */ },\n\t/*::[*/0x0420/*::]*/: { /* n:\"BrtBeginSparklines\", */ T:1 },\n\t/*::[*/0x0421/*::]*/: { /* n:\"BrtEndSparklines\", */ T:-1 },\n\t/*::[*/0x0422/*::]*/: { /* n:\"BrtBeginSparklineGroups\", */ T:1 },\n\t/*::[*/0x0423/*::]*/: { /* n:\"BrtEndSparklineGroups\", */ T:-1 },\n\t/*::[*/0x0425/*::]*/: { /* n:\"BrtSXVD14\" */ },\n\t/*::[*/0x0426/*::]*/: { /* n:\"BrtBeginSXView14\", */ T:1 },\n\t/*::[*/0x0427/*::]*/: { /* n:\"BrtEndSXView14\", */ T:-1 },\n\t/*::[*/0x0428/*::]*/: { /* n:\"BrtBeginSXView16\", */ T:1 },\n\t/*::[*/0x0429/*::]*/: { /* n:\"BrtEndSXView16\", */ T:-1 },\n\t/*::[*/0x042A/*::]*/: { /* n:\"BrtBeginPCD14\", */ T:1 },\n\t/*::[*/0x042B/*::]*/: { /* n:\"BrtEndPCD14\", */ T:-1 },\n\t/*::[*/0x042C/*::]*/: { /* n:\"BrtBeginExtConn14\", */ T:1 },\n\t/*::[*/0x042D/*::]*/: { /* n:\"BrtEndExtConn14\", */ T:-1 },\n\t/*::[*/0x042E/*::]*/: { /* n:\"BrtBeginSlicerCacheIDs\", */ T:1 },\n\t/*::[*/0x042F/*::]*/: { /* n:\"BrtEndSlicerCacheIDs\", */ T:-1 },\n\t/*::[*/0x0430/*::]*/: { /* n:\"BrtBeginSlicerCacheID\", */ T:1 },\n\t/*::[*/0x0431/*::]*/: { /* n:\"BrtEndSlicerCacheID\", */ T:-1 },\n\t/*::[*/0x0433/*::]*/: { /* n:\"BrtBeginSlicerCache\", */ T:1 },\n\t/*::[*/0x0434/*::]*/: { /* n:\"BrtEndSlicerCache\", */ T:-1 },\n\t/*::[*/0x0435/*::]*/: { /* n:\"BrtBeginSlicerCacheDef\", */ T:1 },\n\t/*::[*/0x0436/*::]*/: { /* n:\"BrtEndSlicerCacheDef\", */ T:-1 },\n\t/*::[*/0x0437/*::]*/: { /* n:\"BrtBeginSlicersEx\", */ T:1 },\n\t/*::[*/0x0438/*::]*/: { /* n:\"BrtEndSlicersEx\", */ T:-1 },\n\t/*::[*/0x0439/*::]*/: { /* n:\"BrtBeginSlicerEx\", */ T:1 },\n\t/*::[*/0x043A/*::]*/: { /* n:\"BrtEndSlicerEx\", */ T:-1 },\n\t/*::[*/0x043B/*::]*/: { /* n:\"BrtBeginSlicer\", */ T:1 },\n\t/*::[*/0x043C/*::]*/: { /* n:\"BrtEndSlicer\", */ T:-1 },\n\t/*::[*/0x043D/*::]*/: { /* n:\"BrtSlicerCachePivotTables\" */ },\n\t/*::[*/0x043E/*::]*/: { /* n:\"BrtBeginSlicerCacheOlapImpl\", */ T:1 },\n\t/*::[*/0x043F/*::]*/: { /* n:\"BrtEndSlicerCacheOlapImpl\", */ T:-1 },\n\t/*::[*/0x0440/*::]*/: { /* n:\"BrtBeginSlicerCacheLevelsData\", */ T:1 },\n\t/*::[*/0x0441/*::]*/: { /* n:\"BrtEndSlicerCacheLevelsData\", */ T:-1 },\n\t/*::[*/0x0442/*::]*/: { /* n:\"BrtBeginSlicerCacheLevelData\", */ T:1 },\n\t/*::[*/0x0443/*::]*/: { /* n:\"BrtEndSlicerCacheLevelData\", */ T:-1 },\n\t/*::[*/0x0444/*::]*/: { /* n:\"BrtBeginSlicerCacheSiRanges\", */ T:1 },\n\t/*::[*/0x0445/*::]*/: { /* n:\"BrtEndSlicerCacheSiRanges\", */ T:-1 },\n\t/*::[*/0x0446/*::]*/: { /* n:\"BrtBeginSlicerCacheSiRange\", */ T:1 },\n\t/*::[*/0x0447/*::]*/: { /* n:\"BrtEndSlicerCacheSiRange\", */ T:-1 },\n\t/*::[*/0x0448/*::]*/: { /* n:\"BrtSlicerCacheOlapItem\" */ },\n\t/*::[*/0x0449/*::]*/: { /* n:\"BrtBeginSlicerCacheSelections\", */ T:1 },\n\t/*::[*/0x044A/*::]*/: { /* n:\"BrtSlicerCacheSelection\" */ },\n\t/*::[*/0x044B/*::]*/: { /* n:\"BrtEndSlicerCacheSelections\", */ T:-1 },\n\t/*::[*/0x044C/*::]*/: { /* n:\"BrtBeginSlicerCacheNative\", */ T:1 },\n\t/*::[*/0x044D/*::]*/: { /* n:\"BrtEndSlicerCacheNative\", */ T:-1 },\n\t/*::[*/0x044E/*::]*/: { /* n:\"BrtSlicerCacheNativeItem\" */ },\n\t/*::[*/0x044F/*::]*/: { /* n:\"BrtRangeProtection14\" */ },\n\t/*::[*/0x0450/*::]*/: { /* n:\"BrtRangeProtectionIso14\" */ },\n\t/*::[*/0x0451/*::]*/: { /* n:\"BrtCellIgnoreEC14\" */ },\n\t/*::[*/0x0457/*::]*/: { /* n:\"BrtList14\" */ },\n\t/*::[*/0x0458/*::]*/: { /* n:\"BrtCFIcon\" */ },\n\t/*::[*/0x0459/*::]*/: { /* n:\"BrtBeginSlicerCachesPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x045A/*::]*/: { /* n:\"BrtEndSlicerCachesPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x045B/*::]*/: { /* n:\"BrtBeginSlicers\", */ T:1 },\n\t/*::[*/0x045C/*::]*/: { /* n:\"BrtEndSlicers\", */ T:-1 },\n\t/*::[*/0x045D/*::]*/: { /* n:\"BrtWbProp14\" */ },\n\t/*::[*/0x045E/*::]*/: { /* n:\"BrtBeginSXEdit\", */ T:1 },\n\t/*::[*/0x045F/*::]*/: { /* n:\"BrtEndSXEdit\", */ T:-1 },\n\t/*::[*/0x0460/*::]*/: { /* n:\"BrtBeginSXEdits\", */ T:1 },\n\t/*::[*/0x0461/*::]*/: { /* n:\"BrtEndSXEdits\", */ T:-1 },\n\t/*::[*/0x0462/*::]*/: { /* n:\"BrtBeginSXChange\", */ T:1 },\n\t/*::[*/0x0463/*::]*/: { /* n:\"BrtEndSXChange\", */ T:-1 },\n\t/*::[*/0x0464/*::]*/: { /* n:\"BrtBeginSXChanges\", */ T:1 },\n\t/*::[*/0x0465/*::]*/: { /* n:\"BrtEndSXChanges\", */ T:-1 },\n\t/*::[*/0x0466/*::]*/: { /* n:\"BrtSXTupleItems\" */ },\n\t/*::[*/0x0468/*::]*/: { /* n:\"BrtBeginSlicerStyle\", */ T:1 },\n\t/*::[*/0x0469/*::]*/: { /* n:\"BrtEndSlicerStyle\", */ T:-1 },\n\t/*::[*/0x046A/*::]*/: { /* n:\"BrtSlicerStyleElement\" */ },\n\t/*::[*/0x046B/*::]*/: { /* n:\"BrtBeginStyleSheetExt14\", */ T:1 },\n\t/*::[*/0x046C/*::]*/: { /* n:\"BrtEndStyleSheetExt14\", */ T:-1 },\n\t/*::[*/0x046D/*::]*/: { /* n:\"BrtBeginSlicerCachesPivotCacheID\", */ T:1 },\n\t/*::[*/0x046E/*::]*/: { /* n:\"BrtEndSlicerCachesPivotCacheID\", */ T:-1 },\n\t/*::[*/0x046F/*::]*/: { /* n:\"BrtBeginConditionalFormattings\", */ T:1 },\n\t/*::[*/0x0470/*::]*/: { /* n:\"BrtEndConditionalFormattings\", */ T:-1 },\n\t/*::[*/0x0471/*::]*/: { /* n:\"BrtBeginPCDCalcMemExt\", */ T:1 },\n\t/*::[*/0x0472/*::]*/: { /* n:\"BrtEndPCDCalcMemExt\", */ T:-1 },\n\t/*::[*/0x0473/*::]*/: { /* n:\"BrtBeginPCDCalcMemsExt\", */ T:1 },\n\t/*::[*/0x0474/*::]*/: { /* n:\"BrtEndPCDCalcMemsExt\", */ T:-1 },\n\t/*::[*/0x0475/*::]*/: { /* n:\"BrtPCDField14\" */ },\n\t/*::[*/0x0476/*::]*/: { /* n:\"BrtBeginSlicerStyles\", */ T:1 },\n\t/*::[*/0x0477/*::]*/: { /* n:\"BrtEndSlicerStyles\", */ T:-1 },\n\t/*::[*/0x0478/*::]*/: { /* n:\"BrtBeginSlicerStyleElements\", */ T:1 },\n\t/*::[*/0x0479/*::]*/: { /* n:\"BrtEndSlicerStyleElements\", */ T:-1 },\n\t/*::[*/0x047A/*::]*/: { /* n:\"BrtCFRuleExt\" */ },\n\t/*::[*/0x047B/*::]*/: { /* n:\"BrtBeginSXCondFmt14\", */ T:1 },\n\t/*::[*/0x047C/*::]*/: { /* n:\"BrtEndSXCondFmt14\", */ T:-1 },\n\t/*::[*/0x047D/*::]*/: { /* n:\"BrtBeginSXCondFmts14\", */ T:1 },\n\t/*::[*/0x047E/*::]*/: { /* n:\"BrtEndSXCondFmts14\", */ T:-1 },\n\t/*::[*/0x0480/*::]*/: { /* n:\"BrtBeginSortCond14\", */ T:1 },\n\t/*::[*/0x0481/*::]*/: { /* n:\"BrtEndSortCond14\", */ T:-1 },\n\t/*::[*/0x0482/*::]*/: { /* n:\"BrtEndDVals14\", */ T:-1 },\n\t/*::[*/0x0483/*::]*/: { /* n:\"BrtEndIconSet14\", */ T:-1 },\n\t/*::[*/0x0484/*::]*/: { /* n:\"BrtEndDatabar14\", */ T:-1 },\n\t/*::[*/0x0485/*::]*/: { /* n:\"BrtBeginColorScale14\", */ T:1 },\n\t/*::[*/0x0486/*::]*/: { /* n:\"BrtEndColorScale14\", */ T:-1 },\n\t/*::[*/0x0487/*::]*/: { /* n:\"BrtBeginSxrules14\", */ T:1 },\n\t/*::[*/0x0488/*::]*/: { /* n:\"BrtEndSxrules14\", */ T:-1 },\n\t/*::[*/0x0489/*::]*/: { /* n:\"BrtBeginPRule14\", */ T:1 },\n\t/*::[*/0x048A/*::]*/: { /* n:\"BrtEndPRule14\", */ T:-1 },\n\t/*::[*/0x048B/*::]*/: { /* n:\"BrtBeginPRFilters14\", */ T:1 },\n\t/*::[*/0x048C/*::]*/: { /* n:\"BrtEndPRFilters14\", */ T:-1 },\n\t/*::[*/0x048D/*::]*/: { /* n:\"BrtBeginPRFilter14\", */ T:1 },\n\t/*::[*/0x048E/*::]*/: { /* n:\"BrtEndPRFilter14\", */ T:-1 },\n\t/*::[*/0x048F/*::]*/: { /* n:\"BrtBeginPRFItem14\", */ T:1 },\n\t/*::[*/0x0490/*::]*/: { /* n:\"BrtEndPRFItem14\", */ T:-1 },\n\t/*::[*/0x0491/*::]*/: { /* n:\"BrtBeginCellIgnoreECs14\", */ T:1 },\n\t/*::[*/0x0492/*::]*/: { /* n:\"BrtEndCellIgnoreECs14\", */ T:-1 },\n\t/*::[*/0x0493/*::]*/: { /* n:\"BrtDxf14\" */ },\n\t/*::[*/0x0494/*::]*/: { /* n:\"BrtBeginDxF14s\", */ T:1 },\n\t/*::[*/0x0495/*::]*/: { /* n:\"BrtEndDxf14s\", */ T:-1 },\n\t/*::[*/0x0499/*::]*/: { /* n:\"BrtFilter14\" */ },\n\t/*::[*/0x049A/*::]*/: { /* n:\"BrtBeginCustomFilters14\", */ T:1 },\n\t/*::[*/0x049C/*::]*/: { /* n:\"BrtCustomFilter14\" */ },\n\t/*::[*/0x049D/*::]*/: { /* n:\"BrtIconFilter14\" */ },\n\t/*::[*/0x049E/*::]*/: { /* n:\"BrtPivotCacheConnectionName\" */ },\n\t/*::[*/0x0800/*::]*/: { /* n:\"BrtBeginDecoupledPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0801/*::]*/: { /* n:\"BrtEndDecoupledPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0802/*::]*/: { /* n:\"BrtDecoupledPivotCacheID\" */ },\n\t/*::[*/0x0803/*::]*/: { /* n:\"BrtBeginPivotTableRefs\", */ T:1 },\n\t/*::[*/0x0804/*::]*/: { /* n:\"BrtEndPivotTableRefs\", */ T:-1 },\n\t/*::[*/0x0805/*::]*/: { /* n:\"BrtPivotTableRef\" */ },\n\t/*::[*/0x0806/*::]*/: { /* n:\"BrtSlicerCacheBookPivotTables\" */ },\n\t/*::[*/0x0807/*::]*/: { /* n:\"BrtBeginSxvcells\", */ T:1 },\n\t/*::[*/0x0808/*::]*/: { /* n:\"BrtEndSxvcells\", */ T:-1 },\n\t/*::[*/0x0809/*::]*/: { /* n:\"BrtBeginSxRow\", */ T:1 },\n\t/*::[*/0x080A/*::]*/: { /* n:\"BrtEndSxRow\", */ T:-1 },\n\t/*::[*/0x080C/*::]*/: { /* n:\"BrtPcdCalcMem15\" */ },\n\t/*::[*/0x0813/*::]*/: { /* n:\"BrtQsi15\" */ },\n\t/*::[*/0x0814/*::]*/: { /* n:\"BrtBeginWebExtensions\", */ T:1 },\n\t/*::[*/0x0815/*::]*/: { /* n:\"BrtEndWebExtensions\", */ T:-1 },\n\t/*::[*/0x0816/*::]*/: { /* n:\"BrtWebExtension\" */ },\n\t/*::[*/0x0817/*::]*/: { /* n:\"BrtAbsPath15\" */ },\n\t/*::[*/0x0818/*::]*/: { /* n:\"BrtBeginPivotTableUISettings\", */ T:1 },\n\t/*::[*/0x0819/*::]*/: { /* n:\"BrtEndPivotTableUISettings\", */ T:-1 },\n\t/*::[*/0x081B/*::]*/: { /* n:\"BrtTableSlicerCacheIDs\" */ },\n\t/*::[*/0x081C/*::]*/: { /* n:\"BrtTableSlicerCacheID\" */ },\n\t/*::[*/0x081D/*::]*/: { /* n:\"BrtBeginTableSlicerCache\", */ T:1 },\n\t/*::[*/0x081E/*::]*/: { /* n:\"BrtEndTableSlicerCache\", */ T:-1 },\n\t/*::[*/0x081F/*::]*/: { /* n:\"BrtSxFilter15\" */ },\n\t/*::[*/0x0820/*::]*/: { /* n:\"BrtBeginTimelineCachePivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0821/*::]*/: { /* n:\"BrtEndTimelineCachePivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0822/*::]*/: { /* n:\"BrtTimelineCachePivotCacheID\" */ },\n\t/*::[*/0x0823/*::]*/: { /* n:\"BrtBeginTimelineCacheIDs\", */ T:1 },\n\t/*::[*/0x0824/*::]*/: { /* n:\"BrtEndTimelineCacheIDs\", */ T:-1 },\n\t/*::[*/0x0825/*::]*/: { /* n:\"BrtBeginTimelineCacheID\", */ T:1 },\n\t/*::[*/0x0826/*::]*/: { /* n:\"BrtEndTimelineCacheID\", */ T:-1 },\n\t/*::[*/0x0827/*::]*/: { /* n:\"BrtBeginTimelinesEx\", */ T:1 },\n\t/*::[*/0x0828/*::]*/: { /* n:\"BrtEndTimelinesEx\", */ T:-1 },\n\t/*::[*/0x0829/*::]*/: { /* n:\"BrtBeginTimelineEx\", */ T:1 },\n\t/*::[*/0x082A/*::]*/: { /* n:\"BrtEndTimelineEx\", */ T:-1 },\n\t/*::[*/0x082B/*::]*/: { /* n:\"BrtWorkBookPr15\" */ },\n\t/*::[*/0x082C/*::]*/: { /* n:\"BrtPCDH15\" */ },\n\t/*::[*/0x082D/*::]*/: { /* n:\"BrtBeginTimelineStyle\", */ T:1 },\n\t/*::[*/0x082E/*::]*/: { /* n:\"BrtEndTimelineStyle\", */ T:-1 },\n\t/*::[*/0x082F/*::]*/: { /* n:\"BrtTimelineStyleElement\" */ },\n\t/*::[*/0x0830/*::]*/: { /* n:\"BrtBeginTimelineStylesheetExt15\", */ T:1 },\n\t/*::[*/0x0831/*::]*/: { /* n:\"BrtEndTimelineStylesheetExt15\", */ T:-1 },\n\t/*::[*/0x0832/*::]*/: { /* n:\"BrtBeginTimelineStyles\", */ T:1 },\n\t/*::[*/0x0833/*::]*/: { /* n:\"BrtEndTimelineStyles\", */ T:-1 },\n\t/*::[*/0x0834/*::]*/: { /* n:\"BrtBeginTimelineStyleElements\", */ T:1 },\n\t/*::[*/0x0835/*::]*/: { /* n:\"BrtEndTimelineStyleElements\", */ T:-1 },\n\t/*::[*/0x0836/*::]*/: { /* n:\"BrtDxf15\" */ },\n\t/*::[*/0x0837/*::]*/: { /* n:\"BrtBeginDxfs15\", */ T:1 },\n\t/*::[*/0x0838/*::]*/: { /* n:\"BrtEndDxfs15\", */ T:-1 },\n\t/*::[*/0x0839/*::]*/: { /* n:\"BrtSlicerCacheHideItemsWithNoData\" */ },\n\t/*::[*/0x083A/*::]*/: { /* n:\"BrtBeginItemUniqueNames\", */ T:1 },\n\t/*::[*/0x083B/*::]*/: { /* n:\"BrtEndItemUniqueNames\", */ T:-1 },\n\t/*::[*/0x083C/*::]*/: { /* n:\"BrtItemUniqueName\" */ },\n\t/*::[*/0x083D/*::]*/: { /* n:\"BrtBeginExtConn15\", */ T:1 },\n\t/*::[*/0x083E/*::]*/: { /* n:\"BrtEndExtConn15\", */ T:-1 },\n\t/*::[*/0x083F/*::]*/: { /* n:\"BrtBeginOledbPr15\", */ T:1 },\n\t/*::[*/0x0840/*::]*/: { /* n:\"BrtEndOledbPr15\", */ T:-1 },\n\t/*::[*/0x0841/*::]*/: { /* n:\"BrtBeginDataFeedPr15\", */ T:1 },\n\t/*::[*/0x0842/*::]*/: { /* n:\"BrtEndDataFeedPr15\", */ T:-1 },\n\t/*::[*/0x0843/*::]*/: { /* n:\"BrtTextPr15\" */ },\n\t/*::[*/0x0844/*::]*/: { /* n:\"BrtRangePr15\" */ },\n\t/*::[*/0x0845/*::]*/: { /* n:\"BrtDbCommand15\" */ },\n\t/*::[*/0x0846/*::]*/: { /* n:\"BrtBeginDbTables15\", */ T:1 },\n\t/*::[*/0x0847/*::]*/: { /* n:\"BrtEndDbTables15\", */ T:-1 },\n\t/*::[*/0x0848/*::]*/: { /* n:\"BrtDbTable15\" */ },\n\t/*::[*/0x0849/*::]*/: { /* n:\"BrtBeginDataModel\", */ T:1 },\n\t/*::[*/0x084A/*::]*/: { /* n:\"BrtEndDataModel\", */ T:-1 },\n\t/*::[*/0x084B/*::]*/: { /* n:\"BrtBeginModelTables\", */ T:1 },\n\t/*::[*/0x084C/*::]*/: { /* n:\"BrtEndModelTables\", */ T:-1 },\n\t/*::[*/0x084D/*::]*/: { /* n:\"BrtModelTable\" */ },\n\t/*::[*/0x084E/*::]*/: { /* n:\"BrtBeginModelRelationships\", */ T:1 },\n\t/*::[*/0x084F/*::]*/: { /* n:\"BrtEndModelRelationships\", */ T:-1 },\n\t/*::[*/0x0850/*::]*/: { /* n:\"BrtModelRelationship\" */ },\n\t/*::[*/0x0851/*::]*/: { /* n:\"BrtBeginECTxtWiz15\", */ T:1 },\n\t/*::[*/0x0852/*::]*/: { /* n:\"BrtEndECTxtWiz15\", */ T:-1 },\n\t/*::[*/0x0853/*::]*/: { /* n:\"BrtBeginECTWFldInfoLst15\", */ T:1 },\n\t/*::[*/0x0854/*::]*/: { /* n:\"BrtEndECTWFldInfoLst15\", */ T:-1 },\n\t/*::[*/0x0855/*::]*/: { /* n:\"BrtBeginECTWFldInfo15\", */ T:1 },\n\t/*::[*/0x0856/*::]*/: { /* n:\"BrtFieldListActiveItem\" */ },\n\t/*::[*/0x0857/*::]*/: { /* n:\"BrtPivotCacheIdVersion\" */ },\n\t/*::[*/0x0858/*::]*/: { /* n:\"BrtSXDI15\" */ },\n\t/*::[*/0x0859/*::]*/: { /* n:\"BrtBeginModelTimeGroupings\", */ T:1 },\n\t/*::[*/0x085A/*::]*/: { /* n:\"BrtEndModelTimeGroupings\", */ T:-1 },\n\t/*::[*/0x085B/*::]*/: { /* n:\"BrtBeginModelTimeGrouping\", */ T:1 },\n\t/*::[*/0x085C/*::]*/: { /* n:\"BrtEndModelTimeGrouping\", */ T:-1 },\n\t/*::[*/0x085D/*::]*/: { /* n:\"BrtModelTimeGroupingCalcCol\" */ },\n\t/*::[*/0x0C00/*::]*/: { /* n:\"BrtUid\" */ },\n\t/*::[*/0x0C01/*::]*/: { /* n:\"BrtRevisionPtr\" */ },\n\t/*::[*/0x1000/*::]*/: { /* n:\"BrtBeginDynamicArrayPr\", */ T:1 },\n\t/*::[*/0x1001/*::]*/: { /* n:\"BrtEndDynamicArrayPr\", */ T:-1 },\n\t/*::[*/0x138A/*::]*/: { /* n:\"BrtBeginRichValueBlock\", */ T:1 },\n\t/*::[*/0x138B/*::]*/: { /* n:\"BrtEndRichValueBlock\", */ T:-1 },\n\t/*::[*/0x13D9/*::]*/: { /* n:\"BrtBeginRichFilters\", */ T:1 },\n\t/*::[*/0x13DA/*::]*/: { /* n:\"BrtEndRichFilters\", */ T:-1 },\n\t/*::[*/0x13DB/*::]*/: { /* n:\"BrtRichFilter\" */ },\n\t/*::[*/0x13DC/*::]*/: { /* n:\"BrtBeginRichFilterColumn\", */ T:1 },\n\t/*::[*/0x13DD/*::]*/: { /* n:\"BrtEndRichFilterColumn\", */ T:-1 },\n\t/*::[*/0x13DE/*::]*/: { /* n:\"BrtBeginCustomRichFilters\", */ T:1 },\n\t/*::[*/0x13DF/*::]*/: { /* n:\"BrtEndCustomRichFilters\", */ T:-1 },\n\t/*::[*/0x13E0/*::]*/: { /* n:\"BrtCustomRichFilter\" */ },\n\t/*::[*/0x13E1/*::]*/: { /* n:\"BrtTop10RichFilter\" */ },\n\t/*::[*/0x13E2/*::]*/: { /* n:\"BrtDynamicRichFilter\" */ },\n\t/*::[*/0x13E4/*::]*/: { /* n:\"BrtBeginRichSortCondition\", */ T:1 },\n\t/*::[*/0x13E5/*::]*/: { /* n:\"BrtEndRichSortCondition\", */ T:-1 },\n\t/*::[*/0x13E6/*::]*/: { /* n:\"BrtRichFilterDateGroupItem\" */ },\n\t/*::[*/0x13E7/*::]*/: { /* n:\"BrtBeginCalcFeatures\", */ T:1 },\n\t/*::[*/0x13E8/*::]*/: { /* n:\"BrtEndCalcFeatures\", */ T:-1 },\n\t/*::[*/0x13E9/*::]*/: { /* n:\"BrtCalcFeature\" */ },\n\t/*::[*/0x13EB/*::]*/: { /* n:\"BrtExternalLinksPr\" */ },\n\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n};\n\n/* [MS-XLS] 2.3 Record Enumeration (and other sources) */\nvar XLSRecordEnum = {\n\t/* [MS-XLS] 2.3 Record Enumeration 2021-08-17 */\n\t/*::[*/0x0006/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x000a/*::]*/: { /* n:\"EOF\", */ f:parsenoop2 },\n\t/*::[*/0x000c/*::]*/: { /* n:\"CalcCount\", */ f:parseuint16 }, //\n\t/*::[*/0x000d/*::]*/: { /* n:\"CalcMode\", */ f:parseuint16 }, //\n\t/*::[*/0x000e/*::]*/: { /* n:\"CalcPrecision\", */ f:parsebool }, //\n\t/*::[*/0x000f/*::]*/: { /* n:\"CalcRefMode\", */ f:parsebool }, //\n\t/*::[*/0x0010/*::]*/: { /* n:\"CalcDelta\", */ f:parse_Xnum }, //\n\t/*::[*/0x0011/*::]*/: { /* n:\"CalcIter\", */ f:parsebool }, //\n\t/*::[*/0x0012/*::]*/: { /* n:\"Protect\", */ f:parsebool },\n\t/*::[*/0x0013/*::]*/: { /* n:\"Password\", */ f:parseuint16 },\n\t/*::[*/0x0014/*::]*/: { /* n:\"Header\", */ f:parse_XLHeaderFooter },\n\t/*::[*/0x0015/*::]*/: { /* n:\"Footer\", */ f:parse_XLHeaderFooter },\n\t/*::[*/0x0017/*::]*/: { /* n:\"ExternSheet\", */ f:parse_ExternSheet },\n\t/*::[*/0x0018/*::]*/: { /* n:\"Lbl\", */ f:parse_Lbl },\n\t/*::[*/0x0019/*::]*/: { /* n:\"WinProtect\", */ f:parsebool },\n\t/*::[*/0x001a/*::]*/: { /* n:\"VerticalPageBreaks\", */ },\n\t/*::[*/0x001b/*::]*/: { /* n:\"HorizontalPageBreaks\", */ },\n\t/*::[*/0x001c/*::]*/: { /* n:\"Note\", */ f:parse_Note },\n\t/*::[*/0x001d/*::]*/: { /* n:\"Selection\", */ },\n\t/*::[*/0x0022/*::]*/: { /* n:\"Date1904\", */ f:parsebool },\n\t/*::[*/0x0023/*::]*/: { /* n:\"ExternName\", */ f:parse_ExternName },\n\t/*::[*/0x0026/*::]*/: { /* n:\"LeftMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0027/*::]*/: { /* n:\"RightMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0028/*::]*/: { /* n:\"TopMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0029/*::]*/: { /* n:\"BottomMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x002a/*::]*/: { /* n:\"PrintRowCol\", */ f:parsebool },\n\t/*::[*/0x002b/*::]*/: { /* n:\"PrintGrid\", */ f:parsebool },\n\t/*::[*/0x002f/*::]*/: { /* n:\"FilePass\", */ f:parse_FilePass },\n\t/*::[*/0x0031/*::]*/: { /* n:\"Font\", */ f:parse_Font },\n\t/*::[*/0x0033/*::]*/: { /* n:\"PrintSize\", */ f:parseuint16 },\n\t/*::[*/0x003c/*::]*/: { /* n:\"Continue\", */ },\n\t/*::[*/0x003d/*::]*/: { /* n:\"Window1\", */ f:parse_Window1 },\n\t/*::[*/0x0040/*::]*/: { /* n:\"Backup\", */ f:parsebool },\n\t/*::[*/0x0041/*::]*/: { /* n:\"Pane\", */ f:parse_Pane },\n\t/*::[*/0x0042/*::]*/: { /* n:\"CodePage\", */ f:parseuint16 },\n\t/*::[*/0x004d/*::]*/: { /* n:\"Pls\", */ },\n\t/*::[*/0x0050/*::]*/: { /* n:\"DCon\", */ },\n\t/*::[*/0x0051/*::]*/: { /* n:\"DConRef\", */ },\n\t/*::[*/0x0052/*::]*/: { /* n:\"DConName\", */ },\n\t/*::[*/0x0055/*::]*/: { /* n:\"DefColWidth\", */ f:parseuint16 },\n\t/*::[*/0x0059/*::]*/: { /* n:\"XCT\", */ },\n\t/*::[*/0x005a/*::]*/: { /* n:\"CRN\", */ },\n\t/*::[*/0x005b/*::]*/: { /* n:\"FileSharing\", */ },\n\t/*::[*/0x005c/*::]*/: { /* n:\"WriteAccess\", */ f:parse_WriteAccess },\n\t/*::[*/0x005d/*::]*/: { /* n:\"Obj\", */ f:parse_Obj },\n\t/*::[*/0x005e/*::]*/: { /* n:\"Uncalced\", */ },\n\t/*::[*/0x005f/*::]*/: { /* n:\"CalcSaveRecalc\", */ f:parsebool }, //\n\t/*::[*/0x0060/*::]*/: { /* n:\"Template\", */ },\n\t/*::[*/0x0061/*::]*/: { /* n:\"Intl\", */ },\n\t/*::[*/0x0063/*::]*/: { /* n:\"ObjProtect\", */ f:parsebool },\n\t/*::[*/0x007d/*::]*/: { /* n:\"ColInfo\", */ f:parse_ColInfo },\n\t/*::[*/0x0080/*::]*/: { /* n:\"Guts\", */ f:parse_Guts },\n\t/*::[*/0x0081/*::]*/: { /* n:\"WsBool\", */ f:parse_WsBool },\n\t/*::[*/0x0082/*::]*/: { /* n:\"GridSet\", */ f:parseuint16 },\n\t/*::[*/0x0083/*::]*/: { /* n:\"HCenter\", */ f:parsebool },\n\t/*::[*/0x0084/*::]*/: { /* n:\"VCenter\", */ f:parsebool },\n\t/*::[*/0x0085/*::]*/: { /* n:\"BoundSheet8\", */ f:parse_BoundSheet8 },\n\t/*::[*/0x0086/*::]*/: { /* n:\"WriteProtect\", */ },\n\t/*::[*/0x008c/*::]*/: { /* n:\"Country\", */ f:parse_Country },\n\t/*::[*/0x008d/*::]*/: { /* n:\"HideObj\", */ f:parseuint16 },\n\t/*::[*/0x0090/*::]*/: { /* n:\"Sort\", */ },\n\t/*::[*/0x0092/*::]*/: { /* n:\"Palette\", */ f:parse_Palette },\n\t/*::[*/0x0097/*::]*/: { /* n:\"Sync\", */ },\n\t/*::[*/0x0098/*::]*/: { /* n:\"LPr\", */ },\n\t/*::[*/0x0099/*::]*/: { /* n:\"DxGCol\", */ },\n\t/*::[*/0x009a/*::]*/: { /* n:\"FnGroupName\", */ },\n\t/*::[*/0x009b/*::]*/: { /* n:\"FilterMode\", */ },\n\t/*::[*/0x009c/*::]*/: { /* n:\"BuiltInFnGroupCount\", */ f:parseuint16 },\n\t/*::[*/0x009d/*::]*/: { /* n:\"AutoFilterInfo\", */ },\n\t/*::[*/0x009e/*::]*/: { /* n:\"AutoFilter\", */ },\n\t/*::[*/0x00a0/*::]*/: { /* n:\"Scl\", */ f:parse_Scl },\n\t/*::[*/0x00a1/*::]*/: { /* n:\"Setup\", */ f:parse_Setup },\n\t/*::[*/0x00ae/*::]*/: { /* n:\"ScenMan\", */ },\n\t/*::[*/0x00af/*::]*/: { /* n:\"SCENARIO\", */ },\n\t/*::[*/0x00b0/*::]*/: { /* n:\"SxView\", */ },\n\t/*::[*/0x00b1/*::]*/: { /* n:\"Sxvd\", */ },\n\t/*::[*/0x00b2/*::]*/: { /* n:\"SXVI\", */ },\n\t/*::[*/0x00b4/*::]*/: { /* n:\"SxIvd\", */ },\n\t/*::[*/0x00b5/*::]*/: { /* n:\"SXLI\", */ },\n\t/*::[*/0x00b6/*::]*/: { /* n:\"SXPI\", */ },\n\t/*::[*/0x00b8/*::]*/: { /* n:\"DocRoute\", */ },\n\t/*::[*/0x00b9/*::]*/: { /* n:\"RecipName\", */ },\n\t/*::[*/0x00bd/*::]*/: { /* n:\"MulRk\", */ f:parse_MulRk },\n\t/*::[*/0x00be/*::]*/: { /* n:\"MulBlank\", */ f:parse_MulBlank },\n\t/*::[*/0x00c1/*::]*/: { /* n:\"Mms\", */ f:parsenoop2 },\n\t/*::[*/0x00c5/*::]*/: { /* n:\"SXDI\", */ },\n\t/*::[*/0x00c6/*::]*/: { /* n:\"SXDB\", */ },\n\t/*::[*/0x00c7/*::]*/: { /* n:\"SXFDB\", */ },\n\t/*::[*/0x00c8/*::]*/: { /* n:\"SXDBB\", */ },\n\t/*::[*/0x00c9/*::]*/: { /* n:\"SXNum\", */ },\n\t/*::[*/0x00ca/*::]*/: { /* n:\"SxBool\", */ f:parsebool },\n\t/*::[*/0x00cb/*::]*/: { /* n:\"SxErr\", */ },\n\t/*::[*/0x00cc/*::]*/: { /* n:\"SXInt\", */ },\n\t/*::[*/0x00cd/*::]*/: { /* n:\"SXString\", */ },\n\t/*::[*/0x00ce/*::]*/: { /* n:\"SXDtr\", */ },\n\t/*::[*/0x00cf/*::]*/: { /* n:\"SxNil\", */ },\n\t/*::[*/0x00d0/*::]*/: { /* n:\"SXTbl\", */ },\n\t/*::[*/0x00d1/*::]*/: { /* n:\"SXTBRGIITM\", */ },\n\t/*::[*/0x00d2/*::]*/: { /* n:\"SxTbpg\", */ },\n\t/*::[*/0x00d3/*::]*/: { /* n:\"ObProj\", */ },\n\t/*::[*/0x00d5/*::]*/: { /* n:\"SXStreamID\", */ },\n\t/*::[*/0x00d7/*::]*/: { /* n:\"DBCell\", */ },\n\t/*::[*/0x00d8/*::]*/: { /* n:\"SXRng\", */ },\n\t/*::[*/0x00d9/*::]*/: { /* n:\"SxIsxoper\", */ },\n\t/*::[*/0x00da/*::]*/: { /* n:\"BookBool\", */ f:parseuint16 },\n\t/*::[*/0x00dc/*::]*/: { /* n:\"DbOrParamQry\", */ },\n\t/*::[*/0x00dd/*::]*/: { /* n:\"ScenarioProtect\", */ f:parsebool },\n\t/*::[*/0x00de/*::]*/: { /* n:\"OleObjectSize\", */ },\n\t/*::[*/0x00e0/*::]*/: { /* n:\"XF\", */ f:parse_XF },\n\t/*::[*/0x00e1/*::]*/: { /* n:\"InterfaceHdr\", */ f:parse_InterfaceHdr },\n\t/*::[*/0x00e2/*::]*/: { /* n:\"InterfaceEnd\", */ f:parsenoop2 },\n\t/*::[*/0x00e3/*::]*/: { /* n:\"SXVS\", */ },\n\t/*::[*/0x00e5/*::]*/: { /* n:\"MergeCells\", */ f:parse_MergeCells },\n\t/*::[*/0x00e9/*::]*/: { /* n:\"BkHim\", */ },\n\t/*::[*/0x00eb/*::]*/: { /* n:\"MsoDrawingGroup\", */ },\n\t/*::[*/0x00ec/*::]*/: { /* n:\"MsoDrawing\", */ },\n\t/*::[*/0x00ed/*::]*/: { /* n:\"MsoDrawingSelection\", */ },\n\t/*::[*/0x00ef/*::]*/: { /* n:\"PhoneticInfo\", */ },\n\t/*::[*/0x00f0/*::]*/: { /* n:\"SxRule\", */ },\n\t/*::[*/0x00f1/*::]*/: { /* n:\"SXEx\", */ },\n\t/*::[*/0x00f2/*::]*/: { /* n:\"SxFilt\", */ },\n\t/*::[*/0x00f4/*::]*/: { /* n:\"SxDXF\", */ },\n\t/*::[*/0x00f5/*::]*/: { /* n:\"SxItm\", */ },\n\t/*::[*/0x00f6/*::]*/: { /* n:\"SxName\", */ },\n\t/*::[*/0x00f7/*::]*/: { /* n:\"SxSelect\", */ },\n\t/*::[*/0x00f8/*::]*/: { /* n:\"SXPair\", */ },\n\t/*::[*/0x00f9/*::]*/: { /* n:\"SxFmla\", */ },\n\t/*::[*/0x00fb/*::]*/: { /* n:\"SxFormat\", */ },\n\t/*::[*/0x00fc/*::]*/: { /* n:\"SST\", */ f:parse_SST },\n\t/*::[*/0x00fd/*::]*/: { /* n:\"LabelSst\", */ f:parse_LabelSst },\n\t/*::[*/0x00ff/*::]*/: { /* n:\"ExtSST\", */ f:parse_ExtSST },\n\t/*::[*/0x0100/*::]*/: { /* n:\"SXVDEx\", */ },\n\t/*::[*/0x0103/*::]*/: { /* n:\"SXFormula\", */ },\n\t/*::[*/0x0122/*::]*/: { /* n:\"SXDBEx\", */ },\n\t/*::[*/0x0137/*::]*/: { /* n:\"RRDInsDel\", */ },\n\t/*::[*/0x0138/*::]*/: { /* n:\"RRDHead\", */ },\n\t/*::[*/0x013b/*::]*/: { /* n:\"RRDChgCell\", */ },\n\t/*::[*/0x013d/*::]*/: { /* n:\"RRTabId\", */ f:parseuint16a },\n\t/*::[*/0x013e/*::]*/: { /* n:\"RRDRenSheet\", */ },\n\t/*::[*/0x013f/*::]*/: { /* n:\"RRSort\", */ },\n\t/*::[*/0x0140/*::]*/: { /* n:\"RRDMove\", */ },\n\t/*::[*/0x014a/*::]*/: { /* n:\"RRFormat\", */ },\n\t/*::[*/0x014b/*::]*/: { /* n:\"RRAutoFmt\", */ },\n\t/*::[*/0x014d/*::]*/: { /* n:\"RRInsertSh\", */ },\n\t/*::[*/0x014e/*::]*/: { /* n:\"RRDMoveBegin\", */ },\n\t/*::[*/0x014f/*::]*/: { /* n:\"RRDMoveEnd\", */ },\n\t/*::[*/0x0150/*::]*/: { /* n:\"RRDInsDelBegin\", */ },\n\t/*::[*/0x0151/*::]*/: { /* n:\"RRDInsDelEnd\", */ },\n\t/*::[*/0x0152/*::]*/: { /* n:\"RRDConflict\", */ },\n\t/*::[*/0x0153/*::]*/: { /* n:\"RRDDefName\", */ },\n\t/*::[*/0x0154/*::]*/: { /* n:\"RRDRstEtxp\", */ },\n\t/*::[*/0x015f/*::]*/: { /* n:\"LRng\", */ },\n\t/*::[*/0x0160/*::]*/: { /* n:\"UsesELFs\", */ f:parsebool },\n\t/*::[*/0x0161/*::]*/: { /* n:\"DSF\", */ f:parsenoop2 },\n\t/*::[*/0x0191/*::]*/: { /* n:\"CUsr\", */ },\n\t/*::[*/0x0192/*::]*/: { /* n:\"CbUsr\", */ },\n\t/*::[*/0x0193/*::]*/: { /* n:\"UsrInfo\", */ },\n\t/*::[*/0x0194/*::]*/: { /* n:\"UsrExcl\", */ },\n\t/*::[*/0x0195/*::]*/: { /* n:\"FileLock\", */ },\n\t/*::[*/0x0196/*::]*/: { /* n:\"RRDInfo\", */ },\n\t/*::[*/0x0197/*::]*/: { /* n:\"BCUsrs\", */ },\n\t/*::[*/0x0198/*::]*/: { /* n:\"UsrChk\", */ },\n\t/*::[*/0x01a9/*::]*/: { /* n:\"UserBView\", */ },\n\t/*::[*/0x01aa/*::]*/: { /* n:\"UserSViewBegin\", */ },\n\t/*::[*/0x01ab/*::]*/: { /* n:\"UserSViewEnd\", */ },\n\t/*::[*/0x01ac/*::]*/: { /* n:\"RRDUserView\", */ },\n\t/*::[*/0x01ad/*::]*/: { /* n:\"Qsi\", */ },\n\t/*::[*/0x01ae/*::]*/: { /* n:\"SupBook\", */ f:parse_SupBook },\n\t/*::[*/0x01af/*::]*/: { /* n:\"Prot4Rev\", */ f:parsebool },\n\t/*::[*/0x01b0/*::]*/: { /* n:\"CondFmt\", */ },\n\t/*::[*/0x01b1/*::]*/: { /* n:\"CF\", */ },\n\t/*::[*/0x01b2/*::]*/: { /* n:\"DVal\", */ },\n\t/*::[*/0x01b5/*::]*/: { /* n:\"DConBin\", */ },\n\t/*::[*/0x01b6/*::]*/: { /* n:\"TxO\", */ f:parse_TxO },\n\t/*::[*/0x01b7/*::]*/: { /* n:\"RefreshAll\", */ f:parsebool }, //\n\t/*::[*/0x01b8/*::]*/: { /* n:\"HLink\", */ f:parse_HLink },\n\t/*::[*/0x01b9/*::]*/: { /* n:\"Lel\", */ },\n\t/*::[*/0x01ba/*::]*/: { /* n:\"CodeName\", */ f:parse_XLUnicodeString },\n\t/*::[*/0x01bb/*::]*/: { /* n:\"SXFDBType\", */ },\n\t/*::[*/0x01bc/*::]*/: { /* n:\"Prot4RevPass\", */ f:parseuint16 },\n\t/*::[*/0x01bd/*::]*/: { /* n:\"ObNoMacros\", */ },\n\t/*::[*/0x01be/*::]*/: { /* n:\"Dv\", */ },\n\t/*::[*/0x01c0/*::]*/: { /* n:\"Excel9File\", */ f:parsenoop2 },\n\t/*::[*/0x01c1/*::]*/: { /* n:\"RecalcId\", */ f:parse_RecalcId, r:2},\n\t/*::[*/0x01c2/*::]*/: { /* n:\"EntExU2\", */ f:parsenoop2 },\n\t/*::[*/0x0200/*::]*/: { /* n:\"Dimensions\", */ f:parse_Dimensions },\n\t/*::[*/0x0201/*::]*/: { /* n:\"Blank\", */ f:parse_Blank },\n\t/*::[*/0x0203/*::]*/: { /* n:\"Number\", */ f:parse_Number },\n\t/*::[*/0x0204/*::]*/: { /* n:\"Label\", */ f:parse_Label },\n\t/*::[*/0x0205/*::]*/: { /* n:\"BoolErr\", */ f:parse_BoolErr },\n\t/*::[*/0x0207/*::]*/: { /* n:\"String\", */ f:parse_String },\n\t/*::[*/0x0208/*::]*/: { /* n:\"Row\", */ f:parse_Row },\n\t/*::[*/0x020b/*::]*/: { /* n:\"Index\", */ },\n\t/*::[*/0x0221/*::]*/: { /* n:\"Array\", */ f:parse_Array },\n\t/*::[*/0x0225/*::]*/: { /* n:\"DefaultRowHeight\", */ f:parse_DefaultRowHeight },\n\t/*::[*/0x0236/*::]*/: { /* n:\"Table\", */ },\n\t/*::[*/0x023e/*::]*/: { /* n:\"Window2\", */ f:parse_Window2 },\n\t/*::[*/0x027e/*::]*/: { /* n:\"RK\", */ f:parse_RK },\n\t/*::[*/0x0293/*::]*/: { /* n:\"Style\", */ },\n\t/*::[*/0x0418/*::]*/: { /* n:\"BigName\", */ },\n\t/*::[*/0x041e/*::]*/: { /* n:\"Format\", */ f:parse_Format },\n\t/*::[*/0x043c/*::]*/: { /* n:\"ContinueBigName\", */ },\n\t/*::[*/0x04bc/*::]*/: { /* n:\"ShrFmla\", */ f:parse_ShrFmla },\n\t/*::[*/0x0800/*::]*/: { /* n:\"HLinkTooltip\", */ f:parse_HLinkTooltip },\n\t/*::[*/0x0801/*::]*/: { /* n:\"WebPub\", */ },\n\t/*::[*/0x0802/*::]*/: { /* n:\"QsiSXTag\", */ },\n\t/*::[*/0x0803/*::]*/: { /* n:\"DBQueryExt\", */ },\n\t/*::[*/0x0804/*::]*/: { /* n:\"ExtString\", */ },\n\t/*::[*/0x0805/*::]*/: { /* n:\"TxtQry\", */ },\n\t/*::[*/0x0806/*::]*/: { /* n:\"Qsir\", */ },\n\t/*::[*/0x0807/*::]*/: { /* n:\"Qsif\", */ },\n\t/*::[*/0x0808/*::]*/: { /* n:\"RRDTQSIF\", */ },\n\t/*::[*/0x0809/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x080a/*::]*/: { /* n:\"OleDbConn\", */ },\n\t/*::[*/0x080b/*::]*/: { /* n:\"WOpt\", */ },\n\t/*::[*/0x080c/*::]*/: { /* n:\"SXViewEx\", */ },\n\t/*::[*/0x080d/*::]*/: { /* n:\"SXTH\", */ },\n\t/*::[*/0x080e/*::]*/: { /* n:\"SXPIEx\", */ },\n\t/*::[*/0x080f/*::]*/: { /* n:\"SXVDTEx\", */ },\n\t/*::[*/0x0810/*::]*/: { /* n:\"SXViewEx9\", */ },\n\t/*::[*/0x0812/*::]*/: { /* n:\"ContinueFrt\", */ },\n\t/*::[*/0x0813/*::]*/: { /* n:\"RealTimeData\", */ },\n\t/*::[*/0x0850/*::]*/: { /* n:\"ChartFrtInfo\", */ },\n\t/*::[*/0x0851/*::]*/: { /* n:\"FrtWrapper\", */ },\n\t/*::[*/0x0852/*::]*/: { /* n:\"StartBlock\", */ },\n\t/*::[*/0x0853/*::]*/: { /* n:\"EndBlock\", */ },\n\t/*::[*/0x0854/*::]*/: { /* n:\"StartObject\", */ },\n\t/*::[*/0x0855/*::]*/: { /* n:\"EndObject\", */ },\n\t/*::[*/0x0856/*::]*/: { /* n:\"CatLab\", */ },\n\t/*::[*/0x0857/*::]*/: { /* n:\"YMult\", */ },\n\t/*::[*/0x0858/*::]*/: { /* n:\"SXViewLink\", */ },\n\t/*::[*/0x0859/*::]*/: { /* n:\"PivotChartBits\", */ },\n\t/*::[*/0x085a/*::]*/: { /* n:\"FrtFontList\", */ },\n\t/*::[*/0x0862/*::]*/: { /* n:\"SheetExt\", */ },\n\t/*::[*/0x0863/*::]*/: { /* n:\"BookExt\", */ r:12},\n\t/*::[*/0x0864/*::]*/: { /* n:\"SXAddl\", */ },\n\t/*::[*/0x0865/*::]*/: { /* n:\"CrErr\", */ },\n\t/*::[*/0x0866/*::]*/: { /* n:\"HFPicture\", */ },\n\t/*::[*/0x0867/*::]*/: { /* n:\"FeatHdr\", */ f:parsenoop2 },\n\t/*::[*/0x0868/*::]*/: { /* n:\"Feat\", */ },\n\t/*::[*/0x086a/*::]*/: { /* n:\"DataLabExt\", */ },\n\t/*::[*/0x086b/*::]*/: { /* n:\"DataLabExtContents\", */ },\n\t/*::[*/0x086c/*::]*/: { /* n:\"CellWatch\", */ },\n\t/*::[*/0x0871/*::]*/: { /* n:\"FeatHdr11\", */ },\n\t/*::[*/0x0872/*::]*/: { /* n:\"Feature11\", */ },\n\t/*::[*/0x0874/*::]*/: { /* n:\"DropDownObjIds\", */ },\n\t/*::[*/0x0875/*::]*/: { /* n:\"ContinueFrt11\", */ },\n\t/*::[*/0x0876/*::]*/: { /* n:\"DConn\", */ },\n\t/*::[*/0x0877/*::]*/: { /* n:\"List12\", */ },\n\t/*::[*/0x0878/*::]*/: { /* n:\"Feature12\", */ },\n\t/*::[*/0x0879/*::]*/: { /* n:\"CondFmt12\", */ },\n\t/*::[*/0x087a/*::]*/: { /* n:\"CF12\", */ },\n\t/*::[*/0x087b/*::]*/: { /* n:\"CFEx\", */ },\n\t/*::[*/0x087c/*::]*/: { /* n:\"XFCRC\", */ f:parse_XFCRC, r:12 },\n\t/*::[*/0x087d/*::]*/: { /* n:\"XFExt\", */ f:parse_XFExt, r:12 },\n\t/*::[*/0x087e/*::]*/: { /* n:\"AutoFilter12\", */ },\n\t/*::[*/0x087f/*::]*/: { /* n:\"ContinueFrt12\", */ },\n\t/*::[*/0x0884/*::]*/: { /* n:\"MDTInfo\", */ },\n\t/*::[*/0x0885/*::]*/: { /* n:\"MDXStr\", */ },\n\t/*::[*/0x0886/*::]*/: { /* n:\"MDXTuple\", */ },\n\t/*::[*/0x0887/*::]*/: { /* n:\"MDXSet\", */ },\n\t/*::[*/0x0888/*::]*/: { /* n:\"MDXProp\", */ },\n\t/*::[*/0x0889/*::]*/: { /* n:\"MDXKPI\", */ },\n\t/*::[*/0x088a/*::]*/: { /* n:\"MDB\", */ },\n\t/*::[*/0x088b/*::]*/: { /* n:\"PLV\", */ },\n\t/*::[*/0x088c/*::]*/: { /* n:\"Compat12\", */ f:parsebool, r:12 },\n\t/*::[*/0x088d/*::]*/: { /* n:\"DXF\", */ },\n\t/*::[*/0x088e/*::]*/: { /* n:\"TableStyles\", */ r:12 },\n\t/*::[*/0x088f/*::]*/: { /* n:\"TableStyle\", */ },\n\t/*::[*/0x0890/*::]*/: { /* n:\"TableStyleElement\", */ },\n\t/*::[*/0x0892/*::]*/: { /* n:\"StyleExt\", */ },\n\t/*::[*/0x0893/*::]*/: { /* n:\"NamePublish\", */ },\n\t/*::[*/0x0894/*::]*/: { /* n:\"NameCmt\", */ f:parse_NameCmt, r:12 },\n\t/*::[*/0x0895/*::]*/: { /* n:\"SortData\", */ },\n\t/*::[*/0x0896/*::]*/: { /* n:\"Theme\", */ f:parse_Theme, r:12 },\n\t/*::[*/0x0897/*::]*/: { /* n:\"GUIDTypeLib\", */ },\n\t/*::[*/0x0898/*::]*/: { /* n:\"FnGrp12\", */ },\n\t/*::[*/0x0899/*::]*/: { /* n:\"NameFnGrp12\", */ },\n\t/*::[*/0x089a/*::]*/: { /* n:\"MTRSettings\", */ f:parse_MTRSettings, r:12 },\n\t/*::[*/0x089b/*::]*/: { /* n:\"CompressPictures\", */ f:parsenoop2 },\n\t/*::[*/0x089c/*::]*/: { /* n:\"HeaderFooter\", */ },\n\t/*::[*/0x089d/*::]*/: { /* n:\"CrtLayout12\", */ },\n\t/*::[*/0x089e/*::]*/: { /* n:\"CrtMlFrt\", */ },\n\t/*::[*/0x089f/*::]*/: { /* n:\"CrtMlFrtContinue\", */ },\n\t/*::[*/0x08a3/*::]*/: { /* n:\"ForceFullCalculation\", */ f:parse_ForceFullCalculation },\n\t/*::[*/0x08a4/*::]*/: { /* n:\"ShapePropsStream\", */ },\n\t/*::[*/0x08a5/*::]*/: { /* n:\"TextPropsStream\", */ },\n\t/*::[*/0x08a6/*::]*/: { /* n:\"RichTextStream\", */ },\n\t/*::[*/0x08a7/*::]*/: { /* n:\"CrtLayout12A\", */ },\n\t/*::[*/0x1001/*::]*/: { /* n:\"Units\", */ },\n\t/*::[*/0x1002/*::]*/: { /* n:\"Chart\", */ },\n\t/*::[*/0x1003/*::]*/: { /* n:\"Series\", */ },\n\t/*::[*/0x1006/*::]*/: { /* n:\"DataFormat\", */ },\n\t/*::[*/0x1007/*::]*/: { /* n:\"LineFormat\", */ },\n\t/*::[*/0x1009/*::]*/: { /* n:\"MarkerFormat\", */ },\n\t/*::[*/0x100a/*::]*/: { /* n:\"AreaFormat\", */ },\n\t/*::[*/0x100b/*::]*/: { /* n:\"PieFormat\", */ },\n\t/*::[*/0x100c/*::]*/: { /* n:\"AttachedLabel\", */ },\n\t/*::[*/0x100d/*::]*/: { /* n:\"SeriesText\", */ },\n\t/*::[*/0x1014/*::]*/: { /* n:\"ChartFormat\", */ },\n\t/*::[*/0x1015/*::]*/: { /* n:\"Legend\", */ },\n\t/*::[*/0x1016/*::]*/: { /* n:\"SeriesList\", */ },\n\t/*::[*/0x1017/*::]*/: { /* n:\"Bar\", */ },\n\t/*::[*/0x1018/*::]*/: { /* n:\"Line\", */ },\n\t/*::[*/0x1019/*::]*/: { /* n:\"Pie\", */ },\n\t/*::[*/0x101a/*::]*/: { /* n:\"Area\", */ },\n\t/*::[*/0x101b/*::]*/: { /* n:\"Scatter\", */ },\n\t/*::[*/0x101c/*::]*/: { /* n:\"CrtLine\", */ },\n\t/*::[*/0x101d/*::]*/: { /* n:\"Axis\", */ },\n\t/*::[*/0x101e/*::]*/: { /* n:\"Tick\", */ },\n\t/*::[*/0x101f/*::]*/: { /* n:\"ValueRange\", */ },\n\t/*::[*/0x1020/*::]*/: { /* n:\"CatSerRange\", */ },\n\t/*::[*/0x1021/*::]*/: { /* n:\"AxisLine\", */ },\n\t/*::[*/0x1022/*::]*/: { /* n:\"CrtLink\", */ },\n\t/*::[*/0x1024/*::]*/: { /* n:\"DefaultText\", */ },\n\t/*::[*/0x1025/*::]*/: { /* n:\"Text\", */ },\n\t/*::[*/0x1026/*::]*/: { /* n:\"FontX\", */ f:parseuint16 },\n\t/*::[*/0x1027/*::]*/: { /* n:\"ObjectLink\", */ },\n\t/*::[*/0x1032/*::]*/: { /* n:\"Frame\", */ },\n\t/*::[*/0x1033/*::]*/: { /* n:\"Begin\", */ },\n\t/*::[*/0x1034/*::]*/: { /* n:\"End\", */ },\n\t/*::[*/0x1035/*::]*/: { /* n:\"PlotArea\", */ },\n\t/*::[*/0x103a/*::]*/: { /* n:\"Chart3d\", */ },\n\t/*::[*/0x103c/*::]*/: { /* n:\"PicF\", */ },\n\t/*::[*/0x103d/*::]*/: { /* n:\"DropBar\", */ },\n\t/*::[*/0x103e/*::]*/: { /* n:\"Radar\", */ },\n\t/*::[*/0x103f/*::]*/: { /* n:\"Surf\", */ },\n\t/*::[*/0x1040/*::]*/: { /* n:\"RadarArea\", */ },\n\t/*::[*/0x1041/*::]*/: { /* n:\"AxisParent\", */ },\n\t/*::[*/0x1043/*::]*/: { /* n:\"LegendException\", */ },\n\t/*::[*/0x1044/*::]*/: { /* n:\"ShtProps\", */ f:parse_ShtProps },\n\t/*::[*/0x1045/*::]*/: { /* n:\"SerToCrt\", */ },\n\t/*::[*/0x1046/*::]*/: { /* n:\"AxesUsed\", */ },\n\t/*::[*/0x1048/*::]*/: { /* n:\"SBaseRef\", */ },\n\t/*::[*/0x104a/*::]*/: { /* n:\"SerParent\", */ },\n\t/*::[*/0x104b/*::]*/: { /* n:\"SerAuxTrend\", */ },\n\t/*::[*/0x104e/*::]*/: { /* n:\"IFmtRecord\", */ },\n\t/*::[*/0x104f/*::]*/: { /* n:\"Pos\", */ },\n\t/*::[*/0x1050/*::]*/: { /* n:\"AlRuns\", */ },\n\t/*::[*/0x1051/*::]*/: { /* n:\"BRAI\", */ },\n\t/*::[*/0x105b/*::]*/: { /* n:\"SerAuxErrBar\", */ },\n\t/*::[*/0x105c/*::]*/: { /* n:\"ClrtClient\", */ f:parse_ClrtClient },\n\t/*::[*/0x105d/*::]*/: { /* n:\"SerFmt\", */ },\n\t/*::[*/0x105f/*::]*/: { /* n:\"Chart3DBarShape\", */ },\n\t/*::[*/0x1060/*::]*/: { /* n:\"Fbi\", */ },\n\t/*::[*/0x1061/*::]*/: { /* n:\"BopPop\", */ },\n\t/*::[*/0x1062/*::]*/: { /* n:\"AxcExt\", */ },\n\t/*::[*/0x1063/*::]*/: { /* n:\"Dat\", */ },\n\t/*::[*/0x1064/*::]*/: { /* n:\"PlotGrowth\", */ },\n\t/*::[*/0x1065/*::]*/: { /* n:\"SIIndex\", */ },\n\t/*::[*/0x1066/*::]*/: { /* n:\"GelFrame\", */ },\n\t/*::[*/0x1067/*::]*/: { /* n:\"BopPopCustom\", */ },\n\t/*::[*/0x1068/*::]*/: { /* n:\"Fbi2\", */ },\n\n\t/*::[*/0x0000/*::]*/: { /* n:\"Dimensions\", */ f:parse_Dimensions },\n\t/*::[*/0x0001/*::]*/: { /* n:\"BIFF2BLANK\", */ },\n\t/*::[*/0x0002/*::]*/: { /* n:\"BIFF2INT\", */ f:parse_BIFF2INT },\n\t/*::[*/0x0003/*::]*/: { /* n:\"BIFF2NUM\", */ f:parse_BIFF2NUM },\n\t/*::[*/0x0004/*::]*/: { /* n:\"BIFF2STR\", */ f:parse_BIFF2STR },\n\t/*::[*/0x0005/*::]*/: { /* n:\"BoolErr\", */ f:parse_BoolErr },\n\t/*::[*/0x0007/*::]*/: { /* n:\"String\", */ f:parse_BIFF2STRING },\n\t/*::[*/0x0008/*::]*/: { /* n:\"BIFF2ROW\", */ },\n\t/*::[*/0x0009/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x000b/*::]*/: { /* n:\"Index\", */ },\n\t/*::[*/0x0016/*::]*/: { /* n:\"ExternCount\", */ f:parseuint16 },\n\t/*::[*/0x001e/*::]*/: { /* n:\"BIFF2FORMAT\", */ f:parse_BIFF2Format },\n\t/*::[*/0x001f/*::]*/: { /* n:\"BIFF2FMTCNT\", */ }, /* 16-bit cnt of BIFF2FORMAT records */\n\t/*::[*/0x0020/*::]*/: { /* n:\"BIFF2COLINFO\", */ },\n\t/*::[*/0x0021/*::]*/: { /* n:\"Array\", */ f:parse_Array },\n\t/*::[*/0x0024/*::]*/: { /* n:\"COLWIDTH\", */ },\n\t/*::[*/0x0025/*::]*/: { /* n:\"DefaultRowHeight\", */ f:parse_DefaultRowHeight },\n\t// 0x2c ??\n\t// 0x2d ??\n\t// 0x2e ??\n\t// 0x30 FONTCOUNT: number of fonts\n\t/*::[*/0x0032/*::]*/: { /* n:\"BIFF2FONTXTRA\", */ f:parse_BIFF2FONTXTRA },\n\t// 0x35: INFOOPTS\n\t// 0x36: TABLE (BIFF2 only)\n\t// 0x37: TABLE2 (BIFF2 only)\n\t// 0x38: WNDESK\n\t// 0x39 ??\n\t// 0x3a: BEGINPREF\n\t// 0x3b: ENDPREF\n\t/*::[*/0x003e/*::]*/: { /* n:\"BIFF2WINDOW2\", */ },\n\t// 0x3f ??\n\t// 0x46: SHOWSCROLL\n\t// 0x47: SHOWFORMULA\n\t// 0x48: STATUSBAR\n\t// 0x49: SHORTMENUS\n\t// 0x4A:\n\t// 0x4B:\n\t// 0x4C:\n\t// 0x4E:\n\t// 0x4F:\n\t// 0x58: TOOLBAR (BIFF3)\n\n\t/* - - - */\n\t/*::[*/0x0034/*::]*/: { /* n:\"DDEObjName\", */ },\n\t/*::[*/0x0043/*::]*/: { /* n:\"BIFF2XF\", */ },\n\t/*::[*/0x0044/*::]*/: { /* n:\"BIFF2XFINDEX\", */ f:parseuint16 },\n\t/*::[*/0x0045/*::]*/: { /* n:\"BIFF2FONTCLR\", */ },\n\t/*::[*/0x0056/*::]*/: { /* n:\"BIFF4FMTCNT\", */ }, /* 16-bit cnt, similar to BIFF2 */\n\t/*::[*/0x007e/*::]*/: { /* n:\"RK\", */ }, /* Not necessarily same as 0x027e */\n\t/*::[*/0x007f/*::]*/: { /* n:\"ImData\", */ f:parse_ImData },\n\t/*::[*/0x0087/*::]*/: { /* n:\"Addin\", */ },\n\t/*::[*/0x0088/*::]*/: { /* n:\"Edg\", */ },\n\t/*::[*/0x0089/*::]*/: { /* n:\"Pub\", */ },\n\t// 0x8A\n\t// 0x8B LH: alternate menu key flag (BIFF3/4)\n\t// 0x8E\n\t// 0x8F\n\t/*::[*/0x0091/*::]*/: { /* n:\"Sub\", */ },\n\t// 0x93 STYLE\n\t/*::[*/0x0094/*::]*/: { /* n:\"LHRecord\", */ },\n\t/*::[*/0x0095/*::]*/: { /* n:\"LHNGraph\", */ },\n\t/*::[*/0x0096/*::]*/: { /* n:\"Sound\", */ },\n\t// 0xA2 FNPROTO: function prototypes (BIFF4)\n\t// 0xA3\n\t// 0xA8\n\t/*::[*/0x00a9/*::]*/: { /* n:\"CoordList\", */ },\n\t/*::[*/0x00ab/*::]*/: { /* n:\"GCW\", */ },\n\t/*::[*/0x00bc/*::]*/: { /* n:\"ShrFmla\", */ }, /* Not necessarily same as 0x04bc */\n\t/*::[*/0x00bf/*::]*/: { /* n:\"ToolbarHdr\", */ },\n\t/*::[*/0x00c0/*::]*/: { /* n:\"ToolbarEnd\", */ },\n\t/*::[*/0x00c2/*::]*/: { /* n:\"AddMenu\", */ },\n\t/*::[*/0x00c3/*::]*/: { /* n:\"DelMenu\", */ },\n\t/*::[*/0x00d6/*::]*/: { /* n:\"RString\", */ f:parse_RString },\n\t/*::[*/0x00df/*::]*/: { /* n:\"UDDesc\", */ },\n\t/*::[*/0x00ea/*::]*/: { /* n:\"TabIdConf\", */ },\n\t/*::[*/0x0162/*::]*/: { /* n:\"XL5Modify\", */ },\n\t/*::[*/0x01a5/*::]*/: { /* n:\"FileSharing2\", */ },\n\t/*::[*/0x0206/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x0209/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x0218/*::]*/: { /* n:\"Lbl\", */ f:parse_Lbl },\n\t/*::[*/0x0223/*::]*/: { /* n:\"ExternName\", */ f:parse_ExternName },\n\t/*::[*/0x0231/*::]*/: { /* n:\"Font\", */ },\n\t/*::[*/0x0243/*::]*/: { /* n:\"BIFF3XF\", */ },\n\t/*::[*/0x0406/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x0409/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x0443/*::]*/: { /* n:\"BIFF4XF\", */ },\n\t/*::[*/0x086d/*::]*/: { /* n:\"FeatInfo\", */ },\n\t/*::[*/0x0873/*::]*/: { /* n:\"FeatInfo11\", */ },\n\t/*::[*/0x0881/*::]*/: { /* n:\"SXAddl12\", */ },\n\t/*::[*/0x08c0/*::]*/: { /* n:\"AutoWebPub\", */ },\n\t/*::[*/0x08c1/*::]*/: { /* n:\"ListObj\", */ },\n\t/*::[*/0x08c2/*::]*/: { /* n:\"ListField\", */ },\n\t/*::[*/0x08c3/*::]*/: { /* n:\"ListDV\", */ },\n\t/*::[*/0x08c4/*::]*/: { /* n:\"ListCondFmt\", */ },\n\t/*::[*/0x08c5/*::]*/: { /* n:\"ListCF\", */ },\n\t/*::[*/0x08c6/*::]*/: { /* n:\"FMQry\", */ },\n\t/*::[*/0x08c7/*::]*/: { /* n:\"FMSQry\", */ },\n\t/*::[*/0x08c8/*::]*/: { /* n:\"PLV\", */ },\n\t/*::[*/0x08c9/*::]*/: { /* n:\"LnExt\", */ },\n\t/*::[*/0x08ca/*::]*/: { /* n:\"MkrExt\", */ },\n\t/*::[*/0x08cb/*::]*/: { /* n:\"CrtCoopt\", */ },\n\t/*::[*/0x08d6/*::]*/: { /* n:\"FRTArchId$\", */ r:12 },\n\n\t/*::[*/0x7262/*::]*/: {}\n};\n\nfunction write_biff_rec(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/)/*:void*/ {\n\tvar t/*:number*/ = type;\n\tif(isNaN(t)) return;\n\tvar len = length || (payload||[]).length || 0;\n\tvar o = ba.next(4);\n\to.write_shift(2, t);\n\to.write_shift(2, len);\n\tif(/*:: len != null &&*/len > 0 && is_buf(payload)) ba.push(payload);\n}\n\nfunction write_biff_continue(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/)/*:void*/ {\n\tvar len = length || (payload||[]).length || 0;\n\tif(len <= 8224) return write_biff_rec(ba, type, payload, len);\n\tvar t = type;\n\tif(isNaN(t)) return;\n\tvar parts = payload.parts || [], sidx = 0;\n\tvar i = 0, w = 0;\n\twhile(w + (parts[sidx] || 8224) <= 8224) { w+= (parts[sidx] || 8224); sidx++; }\n\tvar o = ba.next(4);\n\to.write_shift(2, t);\n\to.write_shift(2, w);\n\tba.push(payload.slice(i, i + w));\n\ti += w;\n\twhile(i < len) {\n\t\to = ba.next(4);\n\t\to.write_shift(2, 0x3c); // TODO: figure out correct continue type\n\t\tw = 0;\n\t\twhile(w + (parts[sidx] || 8224) <= 8224) { w+= (parts[sidx] || 8224); sidx++; }\n\t\to.write_shift(2, w);\n\t\tba.push(payload.slice(i, i+w)); i+= w;\n\t}\n}\n\nfunction write_BIFF2Cell(out, r/*:number*/, c/*:number*/) {\n\tif(!out) out = new_buf(7);\n\tout.write_shift(2, r);\n\tout.write_shift(2, c);\n\tout.write_shift(2, 0);\n\tout.write_shift(1, 0);\n\treturn out;\n}\n\nfunction write_BIFF2BERR(r/*:number*/, c/*:number*/, val, t/*:?string*/) {\n\tvar out = new_buf(9);\n\twrite_BIFF2Cell(out, r, c);\n\twrite_Bes(val, t || 'b', out);\n\treturn out;\n}\n\n/* TODO: codepage, large strings */\nfunction write_BIFF2LABEL(r/*:number*/, c/*:number*/, val) {\n\tvar out = new_buf(8 + 2*val.length);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(1, val.length);\n\tout.write_shift(val.length, val, 'sbcs');\n\treturn out.l < out.length ? out.slice(0, out.l) : out;\n}\n\nfunction write_ws_biff2_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:number*//*::, opts*/) {\n\tif(cell.v != null) switch(cell.t) {\n\t\tcase 'd': case 'n':\n\t\t\tvar v = cell.t == 'd' ? datenum(parseDate(cell.v)) : cell.v;\n\t\t\tif((v == (v|0)) && (v >= 0) && (v < 65536))\n\t\t\t\twrite_biff_rec(ba, 0x0002, write_BIFF2INT(R, C, v));\n\t\t\telse\n\t\t\t\twrite_biff_rec(ba, 0x0003, write_BIFF2NUM(R,C, v));\n\t\t\treturn;\n\t\tcase 'b': case 'e': write_biff_rec(ba, 0x0005, write_BIFF2BERR(R, C, cell.v, cell.t)); return;\n\t\t/* TODO: codepage, sst */\n\t\tcase 's': case 'str':\n\t\t\twrite_biff_rec(ba, 0x0004, write_BIFF2LABEL(R, C, (cell.v||\"\").slice(0,255)));\n\t\t\treturn;\n\t}\n\twrite_biff_rec(ba, 0x0001, write_BIFF2Cell(null, R, C));\n}\n\nfunction write_ws_biff2(ba/*:BufArray*/, ws/*:Worksheet*/, idx/*:number*/, opts/*::, wb:Workbook*/) {\n\tvar dense = Array.isArray(ws);\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\"), ref/*:string*/, rr = \"\", cols/*:Array<string>*/ = [];\n\tif(range.e.c > 0xFF || range.e.r > 0x3FFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:IV16384\");\n\t\trange.e.c = Math.min(range.e.c, 0xFF);\n\t\trange.e.r = Math.min(range.e.c, 0x3FFF);\n\t\tref = encode_range(range);\n\t}\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\tif(!cell) continue;\n\t\t\t/* write cell */\n\t\t\twrite_ws_biff2_cell(ba, cell, R, C, opts);\n\t\t}\n\t}\n}\n\n/* Based on test files */\nfunction write_biff2_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\tvar ba = buf_array();\n\tvar idx = 0;\n\tfor(var i=0;i<wb.SheetNames.length;++i) if(wb.SheetNames[i] == o.sheet) idx=i;\n\tif(idx == 0 && !!o.sheet && wb.SheetNames[0] != o.sheet) throw new Error(\"Sheet not found: \" + o.sheet);\n\twrite_biff_rec(ba, (o.biff == 4 ? 0x0409 : (o.biff == 3 ? 0x0209 : 0x0009)), write_BOF(wb, 0x10, o));\n\t/* ... */\n\twrite_ws_biff2(ba, wb.Sheets[wb.SheetNames[idx]], idx, o, wb);\n\t/* ... */\n\twrite_biff_rec(ba, 0x000A);\n\treturn ba.end();\n}\n\nfunction write_FONTS_biff8(ba, data, opts) {\n\twrite_biff_rec(ba, 0x0031 /* Font */, write_Font({\n\t\tsz:12,\n\t\tcolor: {theme:1},\n\t\tname: \"Arial\",\n\t\tfamily: 2,\n\t\tscheme: \"minor\"\n\t}, opts));\n}\n\n\nfunction write_FMTS_biff8(ba, NF/*:?SSFTable*/, opts) {\n\tif(!NF) return;\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\t/*:: if(!NF) return; */\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) write_biff_rec(ba, 0x041E /* Format */, write_Format(i, NF[i], opts));\n\t});\n}\n\nfunction write_FEAT(ba, ws) {\n\t/* [MS-XLS] 2.4.112 */\n\tvar o = new_buf(19);\n\to.write_shift(4, 0x867); o.write_shift(4, 0); o.write_shift(4, 0);\n\to.write_shift(2, 3); o.write_shift(1, 1); o.write_shift(4, 0);\n\twrite_biff_rec(ba, 0x0867 /* FeatHdr */, o);\n\t/* [MS-XLS] 2.4.111 */\n\to = new_buf(39);\n\to.write_shift(4, 0x868); o.write_shift(4, 0); o.write_shift(4, 0);\n\to.write_shift(2, 3); o.write_shift(1, 0); o.write_shift(4, 0);\n\to.write_shift(2, 1); o.write_shift(4, 4); o.write_shift(2, 0);\n\twrite_Ref8U(safe_decode_range(ws['!ref']||\"A1\"), o);\n\to.write_shift(4, 4);\n\twrite_biff_rec(ba, 0x0868 /* Feat */, o);\n}\n\nfunction write_CELLXFS_biff8(ba, opts) {\n\tfor(var i = 0; i < 16; ++i) write_biff_rec(ba, 0x00e0 /* XF */, write_XF({numFmtId:0, style:true}, 0, opts));\n\topts.cellXfs.forEach(function(c) {\n\t\twrite_biff_rec(ba, 0x00e0 /* XF */, write_XF(c, 0, opts));\n\t});\n}\n\nfunction write_ws_biff8_hlinks(ba/*:BufArray*/, ws) {\n\tfor(var R=0; R<ws['!links'].length; ++R) {\n\t\tvar HL = ws['!links'][R];\n\t\twrite_biff_rec(ba, 0x01b8 /* HLink */, write_HLink(HL));\n\t\tif(HL[1].Tooltip) write_biff_rec(ba, 0x0800 /* HLinkTooltip */, write_HLinkTooltip(HL));\n\t}\n\tdelete ws['!links'];\n}\n\nfunction write_ws_cols_biff8(ba, cols) {\n\tif(!cols) return;\n\tvar cnt = 0;\n\tcols.forEach(function(col, idx) {\n\t\tif(++cnt <= 256 && col) {\n\t\t\twrite_biff_rec(ba, 0x007d /* ColInfo */, write_ColInfo(col_obj_w(idx, col), idx));\n\t\t}\n\t});\n}\n\nfunction write_ws_biff8_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:number*/, opts) {\n\tvar os = 16 + get_cell_style(opts.cellXfs, cell, opts);\n\tif(cell.v == null && !cell.bf) {\n\t\twrite_biff_rec(ba, 0x0201 /* Blank */, write_XLSCell(R, C, os));\n\t\treturn;\n\t}\n\tif(cell.bf) write_biff_rec(ba, 0x0006 /* Formula */, write_Formula(cell, R, C, opts, os));\n\telse switch(cell.t) {\n\t\tcase 'd': case 'n':\n\t\t\tvar v = cell.t == 'd' ? datenum(parseDate(cell.v)) : cell.v;\n\t\t\t/* TODO: emit RK as appropriate */\n\t\t\twrite_biff_rec(ba, 0x0203 /* Number */, write_Number(R, C, v, os, opts));\n\t\t\tbreak;\n\t\tcase 'b': case 'e':\n\t\t\twrite_biff_rec(ba, 0x0205 /* BoolErr */, write_BoolErr(R, C, cell.v, os, opts, cell.t));\n\t\t\tbreak;\n\t\t/* TODO: codepage, sst */\n\t\tcase 's': case 'str':\n\t\t\tif(opts.bookSST) {\n\t\t\t\tvar isst = get_sst_id(opts.Strings, cell.v, opts.revStrings);\n\t\t\t\twrite_biff_rec(ba, 0x00fd /* LabelSst */, write_LabelSst(R, C, isst, os, opts));\n\t\t\t} else write_biff_rec(ba, 0x0204 /* Label */, write_Label(R, C, (cell.v||\"\").slice(0,255), os, opts));\n\t\t\tbreak;\n\t\tdefault:\n\t\t\twrite_biff_rec(ba, 0x0201 /* Blank */, write_XLSCell(R, C, os));\n\t}\n}\n\n/* [MS-XLS] 2.1.7.20.5 */\nfunction write_ws_biff8(idx/*:number*/, opts, wb/*:Workbook*/) {\n\tvar ba = buf_array();\n\tvar s = wb.SheetNames[idx], ws = wb.Sheets[s] || {};\n\tvar _WB/*:WBWBProps*/ = ((wb||{}).Workbook||{}/*:any*/);\n\tvar _sheet/*:WBWSProp*/ = ((_WB.Sheets||[])[idx]||{}/*:any*/);\n\tvar dense = Array.isArray(ws);\n\tvar b8 = opts.biff == 8;\n\tvar ref/*:string*/, rr = \"\", cols/*:Array<string>*/ = [];\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\");\n\tvar MAX_ROWS = b8 ? 65536 : 16384;\n\tif(range.e.c > 0xFF || range.e.r >= MAX_ROWS) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:IV16384\");\n\t\trange.e.c = Math.min(range.e.c, 0xFF);\n\t\trange.e.r = Math.min(range.e.c, MAX_ROWS-1);\n\t}\n\n\twrite_biff_rec(ba, 0x0809, write_BOF(wb, 0x10, opts));\n\t/* [Uncalced] Index */\n\twrite_biff_rec(ba, 0x000d /* CalcMode */, writeuint16(1));\n\twrite_biff_rec(ba, 0x000c /* CalcCount */, writeuint16(100));\n\twrite_biff_rec(ba, 0x000f /* CalcRefMode */, writebool(true));\n\twrite_biff_rec(ba, 0x0011 /* CalcIter */, writebool(false));\n\twrite_biff_rec(ba, 0x0010 /* CalcDelta */, write_Xnum(0.001));\n\twrite_biff_rec(ba, 0x005f /* CalcSaveRecalc */, writebool(true));\n\twrite_biff_rec(ba, 0x002a /* PrintRowCol */, writebool(false));\n\twrite_biff_rec(ba, 0x002b /* PrintGrid */, writebool(false));\n\twrite_biff_rec(ba, 0x0082 /* GridSet */, writeuint16(1));\n\twrite_biff_rec(ba, 0x0080 /* Guts */, write_Guts([0,0]));\n\t/* DefaultRowHeight WsBool [Sync] [LPr] [HorizontalPageBreaks] [VerticalPageBreaks] */\n\t/* Header (string) */\n\t/* Footer (string) */\n\twrite_biff_rec(ba, 0x0083 /* HCenter */, writebool(false));\n\twrite_biff_rec(ba, 0x0084 /* VCenter */, writebool(false));\n\t/* ... */\n\tif(b8) write_ws_cols_biff8(ba, ws[\"!cols\"]);\n\t/* ... */\n\twrite_biff_rec(ba, 0x200, write_Dimensions(range, opts));\n\t/* ... */\n\n\tif(b8) ws['!links'] = [];\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\tif(!cell) continue;\n\t\t\t/* write cell */\n\t\t\twrite_ws_biff8_cell(ba, cell, R, C, opts);\n\t\t\tif(b8 && cell.l) ws['!links'].push([ref, cell.l]);\n\t\t}\n\t}\n\tvar cname/*:string*/ = _sheet.CodeName || _sheet.name || s;\n\t/* ... */\n\tif(b8) write_biff_rec(ba, 0x023e /* Window2 */, write_Window2((_WB.Views||[])[0]));\n\t/* ... */\n\tif(b8 && (ws['!merges']||[]).length) write_biff_rec(ba, 0x00e5 /* MergeCells */, write_MergeCells(ws['!merges']));\n\t/* [LRng] *QUERYTABLE [PHONETICINFO] CONDFMTS */\n\tif(b8) write_ws_biff8_hlinks(ba, ws);\n\t/* [DVAL] */\n\twrite_biff_rec(ba, 0x01ba /* CodeName */, write_XLUnicodeString(cname, opts));\n\t/* *WebPub *CellWatch [SheetExt] */\n\tif(b8) write_FEAT(ba, ws);\n\t/* *FEAT11 *RECORD12 */\n\twrite_biff_rec(ba, 0x000a /* EOF */);\n\treturn ba.end();\n}\n\n/* [MS-XLS] 2.1.7.20.3 */\nfunction write_biff8_global(wb/*:Workbook*/, bufs, opts/*:WriteOpts*/) {\n\tvar A = buf_array();\n\tvar _WB/*:WBWBProps*/ = ((wb||{}).Workbook||{}/*:any*/);\n\tvar _sheets/*:Array<WBWSProp>*/ = (_WB.Sheets||[]);\n\tvar _wb/*:WBProps*/ = /*::((*/_WB.WBProps||{/*::CodeName:\"ThisWorkbook\"*/}/*:: ):any)*/;\n\tvar b8 = opts.biff == 8, b5 = opts.biff == 5;\n\twrite_biff_rec(A, 0x0809, write_BOF(wb, 0x05, opts));\n\tif(opts.bookType == \"xla\") write_biff_rec(A, 0x0087 /* Addin */);\n\twrite_biff_rec(A, 0x00e1 /* InterfaceHdr */, b8 ? writeuint16(0x04b0) : null);\n\twrite_biff_rec(A, 0x00c1 /* Mms */, writezeroes(2));\n\tif(b5) write_biff_rec(A, 0x00bf /* ToolbarHdr */);\n\tif(b5) write_biff_rec(A, 0x00c0 /* ToolbarEnd */);\n\twrite_biff_rec(A, 0x00e2 /* InterfaceEnd */);\n\twrite_biff_rec(A, 0x005c /* WriteAccess */, write_WriteAccess(\"SheetJS\", opts));\n\t/* [FileSharing] */\n\twrite_biff_rec(A, 0x0042 /* CodePage */, writeuint16(b8 ? 0x04b0 : 0x04E4));\n\t/* *2047 Lel */\n\tif(b8) write_biff_rec(A, 0x0161 /* DSF */, writeuint16(0));\n\tif(b8) write_biff_rec(A, 0x01c0 /* Excel9File */);\n\twrite_biff_rec(A, 0x013d /* RRTabId */, write_RRTabId(wb.SheetNames.length));\n\tif(b8 && wb.vbaraw) write_biff_rec(A, 0x00d3 /* ObProj */);\n\t/* [ObNoMacros] */\n\tif(b8 && wb.vbaraw) {\n\t\tvar cname/*:string*/ = _wb.CodeName || \"ThisWorkbook\";\n\t\twrite_biff_rec(A, 0x01ba /* CodeName */, write_XLUnicodeString(cname, opts));\n\t}\n\twrite_biff_rec(A, 0x009c /* BuiltInFnGroupCount */, writeuint16(0x11));\n\t/* *FnGroupName *FnGrp12 */\n\t/* *Lbl */\n\t/* [OleObjectSize] */\n\twrite_biff_rec(A, 0x0019 /* WinProtect */, writebool(false));\n\twrite_biff_rec(A, 0x0012 /* Protect */, writebool(false));\n\twrite_biff_rec(A, 0x0013 /* Password */, writeuint16(0));\n\tif(b8) write_biff_rec(A, 0x01af /* Prot4Rev */, writebool(false));\n\tif(b8) write_biff_rec(A, 0x01bc /* Prot4RevPass */, writeuint16(0));\n\twrite_biff_rec(A, 0x003d /* Window1 */, write_Window1(opts));\n\twrite_biff_rec(A, 0x0040 /* Backup */, writebool(false));\n\twrite_biff_rec(A, 0x008d /* HideObj */, writeuint16(0));\n\twrite_biff_rec(A, 0x0022 /* Date1904 */, writebool(safe1904(wb)==\"true\"));\n\twrite_biff_rec(A, 0x000e /* CalcPrecision */, writebool(true));\n\tif(b8) write_biff_rec(A, 0x01b7 /* RefreshAll */, writebool(false));\n\twrite_biff_rec(A, 0x00DA /* BookBool */, writeuint16(0));\n\t/* ... */\n\twrite_FONTS_biff8(A, wb, opts);\n\twrite_FMTS_biff8(A, wb.SSF, opts);\n\twrite_CELLXFS_biff8(A, opts);\n\t/* ... */\n\tif(b8) write_biff_rec(A, 0x0160 /* UsesELFs */, writebool(false));\n\tvar a = A.end();\n\n\tvar C = buf_array();\n\t/* METADATA [MTRSettings] [ForceFullCalculation] */\n\tif(b8) write_biff_rec(C, 0x008C, write_Country());\n\t/* *SUPBOOK *LBL *RTD [RecalcId] *HFPicture *MSODRAWINGGROUP */\n\n\t/* BIFF8: [SST *Continue] ExtSST */\n\tif(b8 && opts.Strings) write_biff_continue(C, 0x00FC, write_SST(opts.Strings, opts));\n\n\t/* *WebPub [WOpt] [CrErr] [BookExt] *FeatHdr *DConn [THEME] [CompressPictures] [Compat12] [GUIDTypeLib] */\n\twrite_biff_rec(C, 0x000A /* EOF */);\n\tvar c = C.end();\n\n\tvar B = buf_array();\n\tvar blen = 0, j = 0;\n\tfor(j = 0; j < wb.SheetNames.length; ++j) blen += (b8 ? 12 : 11) + (b8 ? 2 : 1) * wb.SheetNames[j].length;\n\tvar start = a.length + blen + c.length;\n\tfor(j = 0; j < wb.SheetNames.length; ++j) {\n\t\tvar _sheet/*:WBWSProp*/ = _sheets[j] || ({}/*:any*/);\n\t\twrite_biff_rec(B, 0x0085 /* BoundSheet8 */, write_BoundSheet8({pos:start, hs:_sheet.Hidden||0, dt:0, name:wb.SheetNames[j]}, opts));\n\t\tstart += bufs[j].length;\n\t}\n\t/* 1*BoundSheet8 */\n\tvar b = B.end();\n\tif(blen != b.length) throw new Error(\"BS8 \" + blen + \" != \" + b.length);\n\n\tvar out = [];\n\tif(a.length) out.push(a);\n\tif(b.length) out.push(b);\n\tif(c.length) out.push(c);\n\treturn bconcat(out);\n}\n\n/* [MS-XLS] 2.1.7.20 Workbook Stream */\nfunction write_biff8_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tvar bufs = [];\n\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\to.revssf = evert_num(wb.SSF); o.revssf[wb.SSF[65535]] = 0;\n\t\to.ssf = wb.SSF;\n\t}\n\n\to.Strings = /*::((*/[]/*:: :any):SST)*/; o.Strings.Count = 0; o.Strings.Unique = 0;\n\tfix_write_opts(o);\n\n\to.cellXfs = [];\n\tget_cell_style(o.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tfor(var i = 0; i < wb.SheetNames.length; ++i) bufs[bufs.length] = write_ws_biff8(i, o, wb);\n\tbufs.unshift(write_biff8_global(wb, bufs, o));\n\treturn bconcat(bufs);\n}\n\nfunction write_biff_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tfor(var i = 0; i <= wb.SheetNames.length; ++i) {\n\t\tvar ws = wb.Sheets[wb.SheetNames[i]];\n\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\tvar range = decode_range(ws[\"!ref\"]);\n\t\tif(range.e.c > 255) { // note: 255 is IV\n\t\tif(typeof console != \"undefined\" && console.error) console.error(\"Worksheet '\" + wb.SheetNames[i] + \"' extends beyond column IV (255).  Data may be lost.\");\n\t\t}\n\t}\n\n\tvar o = opts || {};\n\tswitch(o.biff || 2) {\n\t\tcase 8: case 5: return write_biff8_buf(wb, opts);\n\t\tcase 4: case 3: case 2: return write_biff2_buf(wb, opts);\n\t}\n\tthrow new Error(\"invalid type \" + o.bookType + \" for BIFF\");\n}\n/* note: browser DOM element cannot see mso- style attrs, must parse */\nfunction html_to_sheet(str/*:string*/, _opts)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar ws/*:Worksheet*/ = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\tstr = str.replace(/<!--.*?-->/g, \"\");\n\tvar mtch/*:any*/ = str.match(/<table/i);\n\tif(!mtch) throw new Error(\"Invalid HTML: could not find <table>\");\n\tvar mtch2/*:any*/ = str.match(/<\\/table/i);\n\tvar i/*:number*/ = mtch.index, j/*:number*/ = mtch2 && mtch2.index || str.length;\n\tvar rows = split_regex(str.slice(i, j), /(:?<tr[^>]*>)/i, \"<tr>\");\n\tvar R = -1, C = 0, RS = 0, CS = 0;\n\tvar range/*:Range*/ = {s:{r:10000000, c:10000000},e:{r:0,c:0}};\n\tvar merges/*:Array<Range>*/ = [];\n\tfor(i = 0; i < rows.length; ++i) {\n\t\tvar row = rows[i].trim();\n\t\tvar hd = row.slice(0,3).toLowerCase();\n\t\tif(hd == \"<tr\") { ++R; if(opts.sheetRows && opts.sheetRows <= R) { --R; break; } C = 0; continue; }\n\t\tif(hd != \"<td\" && hd != \"<th\") continue;\n\t\tvar cells = row.split(/<\\/t[dh]>/i);\n\t\tfor(j = 0; j < cells.length; ++j) {\n\t\t\tvar cell = cells[j].trim();\n\t\t\tif(!cell.match(/<t[dh]/i)) continue;\n\t\t\tvar m = cell, cc = 0;\n\t\t\t/* TODO: parse styles etc */\n\t\t\twhile(m.charAt(0) == \"<\" && (cc = m.indexOf(\">\")) > -1) m = m.slice(cc+1);\n\t\t\tfor(var midx = 0; midx < merges.length; ++midx) {\n\t\t\t\tvar _merge/*:Range*/ = merges[midx];\n\t\t\t\tif(_merge.s.c == C && _merge.s.r < R && R <= _merge.e.r) { C = _merge.e.c + 1; midx = -1; }\n\t\t\t}\n\t\t\tvar tag = parsexmltag(cell.slice(0, cell.indexOf(\">\")));\n\t\t\tCS = tag.colspan ? +tag.colspan : 1;\n\t\t\tif((RS = +tag.rowspan)>1 || CS>1) merges.push({s:{r:R,c:C},e:{r:R + (RS||1) - 1, c:C + CS - 1}});\n\t\t\tvar _t/*:string*/ = tag.t || tag[\"data-t\"] || \"\";\n\t\t\t/* TODO: generate stub cells */\n\t\t\tif(!m.length) { C += CS; continue; }\n\t\t\tm = htmldecode(m);\n\t\t\tif(range.s.r > R) range.s.r = R; if(range.e.r < R) range.e.r = R;\n\t\t\tif(range.s.c > C) range.s.c = C; if(range.e.c < C) range.e.c = C;\n\t\t\tif(!m.length) { C += CS; continue; }\n\t\t\tvar o/*:Cell*/ = {t:'s', v:m};\n\t\t\tif(opts.raw || !m.trim().length || _t == 's'){}\n\t\t\telse if(m === 'TRUE') o = {t:'b', v:true};\n\t\t\telse if(m === 'FALSE') o = {t:'b', v:false};\n\t\t\telse if(!isNaN(fuzzynum(m))) o = {t:'n', v:fuzzynum(m)};\n\t\t\telse if(!isNaN(fuzzydate(m).getDate())) {\n\t\t\t\to = ({t:'d', v:parseDate(m)}/*:any*/);\n\t\t\t\tif(!opts.cellDates) o = ({t:'n', v:datenum(o.v)}/*:any*/);\n\t\t\t\to.z = opts.dateNF || table_fmt[14];\n\t\t\t}\n\t\t\tif(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = o; }\n\t\t\telse ws[encode_cell({r:R, c:C})] = o;\n\t\t\tC += CS;\n\t\t}\n\t}\n\tws['!ref'] = encode_range(range);\n\tif(merges.length) ws[\"!merges\"] = merges;\n\treturn ws;\n}\nfunction make_html_row(ws/*:Worksheet*/, r/*:Range*/, R/*:number*/, o/*:Sheet2HTMLOpts*/)/*:string*/ {\n\tvar M/*:Array<Range>*/ = (ws['!merges'] ||[]);\n\tvar oo/*:Array<string>*/ = [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\tvar RS = 0, CS = 0;\n\t\tfor(var j = 0; j < M.length; ++j) {\n\t\t\tif(M[j].s.r > R || M[j].s.c > C) continue;\n\t\t\tif(M[j].e.r < R || M[j].e.c < C) continue;\n\t\t\tif(M[j].s.r < R || M[j].s.c < C) { RS = -1; break; }\n\t\t\tRS = M[j].e.r - M[j].s.r + 1; CS = M[j].e.c - M[j].s.c + 1; break;\n\t\t}\n\t\tif(RS < 0) continue;\n\t\tvar coord = encode_cell({r:R,c:C});\n\t\tvar cell = o.dense ? (ws[R]||[])[C] : ws[coord];\n\t\t/* TODO: html entities */\n\t\tvar w = (cell && cell.v != null) && (cell.h || escapehtml(cell.w || (format_cell(cell), cell.w) || \"\")) || \"\";\n\t\tvar sp = ({}/*:any*/);\n\t\tif(RS > 1) sp.rowspan = RS;\n\t\tif(CS > 1) sp.colspan = CS;\n\t\tif(o.editable) w = '<span contenteditable=\"true\">' + w + '</span>';\n\t\telse if(cell) {\n\t\t\tsp[\"data-t\"] = cell && cell.t || 'z';\n\t\t\tif(cell.v != null) sp[\"data-v\"] = cell.v;\n\t\t\tif(cell.z != null) sp[\"data-z\"] = cell.z;\n\t\t\tif(cell.l && (cell.l.Target || \"#\").charAt(0) != \"#\") w = '<a href=\"' + cell.l.Target +'\">' + w + '</a>';\n\t\t}\n\t\tsp.id = (o.id || \"sjs\") + \"-\" + coord;\n\t\too.push(writextag('td', w, sp));\n\t}\n\tvar preamble = \"<tr>\";\n\treturn preamble + oo.join(\"\") + \"</tr>\";\n}\n\nvar HTML_BEGIN = '<html><head><meta charset=\"utf-8\"/><title>SheetJS Table Export</title></head><body>';\nvar HTML_END = '</body></html>';\n\nfunction html_to_workbook(str/*:string*/, opts)/*:Workbook*/ {\n\tvar mtch = str.match(/<table[\\s\\S]*?>[\\s\\S]*?<\\/table>/gi);\n\tif(!mtch || mtch.length == 0) throw new Error(\"Invalid HTML: could not find <table>\");\n\tif(mtch.length == 1) return sheet_to_workbook(html_to_sheet(mtch[0], opts), opts);\n\tvar wb = book_new();\n\tmtch.forEach(function(s, idx) { book_append_sheet(wb, html_to_sheet(s, opts), \"Sheet\" + (idx+1)); });\n\treturn wb;\n}\n\nfunction make_html_preamble(ws/*:Worksheet*/, R/*:Range*/, o/*:Sheet2HTMLOpts*/)/*:string*/ {\n\tvar out/*:Array<string>*/ = [];\n\treturn out.join(\"\") + '<table' + (o && o.id ? ' id=\"' + o.id + '\"' : \"\") + '>';\n}\n\nfunction sheet_to_html(ws/*:Worksheet*/, opts/*:?Sheet2HTMLOpts*//*, wb:?Workbook*/)/*:string*/ {\n\tvar o = opts || {};\n\tvar header = o.header != null ? o.header : HTML_BEGIN;\n\tvar footer = o.footer != null ? o.footer : HTML_END;\n\tvar out/*:Array<string>*/ = [header];\n\tvar r = decode_range(ws['!ref']);\n\to.dense = Array.isArray(ws);\n\tout.push(make_html_preamble(ws, r, o));\n\tfor(var R = r.s.r; R <= r.e.r; ++R) out.push(make_html_row(ws, r, R, o));\n\tout.push(\"</table>\" + footer);\n\treturn out.join(\"\");\n}\n\nfunction sheet_add_dom(ws/*:Worksheet*/, table/*:HTMLElement*/, _opts/*:?any*/)/*:Worksheet*/ {\n\tvar opts = _opts || {};\n\tif(DENSE != null) opts.dense = DENSE;\n\tvar or_R = 0, or_C = 0;\n\tif(opts.origin != null) {\n\t\tif(typeof opts.origin == 'number') or_R = opts.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof opts.origin == \"string\" ? decode_cell(opts.origin) : opts.origin;\n\t\t\tor_R = _origin.r; or_C = _origin.c;\n\t\t}\n\t}\n\n\tvar rows/*:HTMLCollection<HTMLTableRowElement>*/ = table.getElementsByTagName('tr');\n\tvar sheetRows = Math.min(opts.sheetRows||10000000, rows.length);\n\tvar range/*:Range*/ = {s:{r:0,c:0},e:{r:or_R,c:or_C}};\n\tif(ws[\"!ref\"]) {\n\t\tvar _range/*:Range*/ = decode_range(ws[\"!ref\"]);\n\t\trange.s.r = Math.min(range.s.r, _range.s.r);\n\t\trange.s.c = Math.min(range.s.c, _range.s.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\tif(or_R == -1) range.e.r = or_R = _range.e.r + 1;\n\t}\n\tvar merges/*:Array<Range>*/ = [], midx = 0;\n\tvar rowinfo/*:Array<RowInfo>*/ = ws[\"!rows\"] || (ws[\"!rows\"] = []);\n\tvar _R = 0, R = 0, _C = 0, C = 0, RS = 0, CS = 0;\n\tif(!ws[\"!cols\"]) ws['!cols'] = [];\n\tfor(; _R < rows.length && R < sheetRows; ++_R) {\n\t\tvar row/*:HTMLTableRowElement*/ = rows[_R];\n\t\tif (is_dom_element_hidden(row)) {\n\t\t\tif (opts.display) continue;\n\t\t\trowinfo[R] = {hidden: true};\n\t\t}\n\t\tvar elts/*:HTMLCollection<HTMLTableCellElement>*/ = (row.children/*:any*/);\n\t\tfor(_C = C = 0; _C < elts.length; ++_C) {\n\t\t\tvar elt/*:HTMLTableCellElement*/ = elts[_C];\n\t\t\tif (opts.display && is_dom_element_hidden(elt)) continue;\n\t\t\tvar v/*:?string*/ = elt.hasAttribute('data-v') ? elt.getAttribute('data-v') : elt.hasAttribute('v') ? elt.getAttribute('v') : htmldecode(elt.innerHTML);\n\t\t\tvar z/*:?string*/ = elt.getAttribute('data-z') || elt.getAttribute('z');\n\t\t\tfor(midx = 0; midx < merges.length; ++midx) {\n\t\t\t\tvar m/*:Range*/ = merges[midx];\n\t\t\t\tif(m.s.c == C + or_C && m.s.r < R + or_R && R + or_R <= m.e.r) { C = m.e.c+1 - or_C; midx = -1; }\n\t\t\t}\n\t\t\t/* TODO: figure out how to extract nonstandard mso- style */\n\t\t\tCS = +elt.getAttribute(\"colspan\") || 1;\n\t\t\tif( ((RS = (+elt.getAttribute(\"rowspan\") || 1)))>1 || CS>1) merges.push({s:{r:R + or_R,c:C + or_C},e:{r:R + or_R + (RS||1) - 1, c:C + or_C + (CS||1) - 1}});\n\t\t\tvar o/*:Cell*/ = {t:'s', v:v};\n\t\t\tvar _t/*:string*/ = elt.getAttribute(\"data-t\") || elt.getAttribute(\"t\") || \"\";\n\t\t\tif(v != null) {\n\t\t\t\tif(v.length == 0) o.t = _t || 'z';\n\t\t\t\telse if(opts.raw || v.trim().length == 0 || _t == \"s\"){}\n\t\t\t\telse if(v === 'TRUE') o = {t:'b', v:true};\n\t\t\t\telse if(v === 'FALSE') o = {t:'b', v:false};\n\t\t\t\telse if(!isNaN(fuzzynum(v))) o = {t:'n', v:fuzzynum(v)};\n\t\t\t\telse if(!isNaN(fuzzydate(v).getDate())) {\n\t\t\t\t\to = ({t:'d', v:parseDate(v)}/*:any*/);\n\t\t\t\t\tif(!opts.cellDates) o = ({t:'n', v:datenum(o.v)}/*:any*/);\n\t\t\t\t\to.z = opts.dateNF || table_fmt[14];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(o.z === undefined && z != null) o.z = z;\n\t\t\t/* The first link is used.  Links are assumed to be fully specified.\n\t\t\t * TODO: The right way to process relative links is to make a new <a> */\n\t\t\tvar l = \"\", Aelts = elt.getElementsByTagName(\"A\");\n\t\t\tif(Aelts && Aelts.length) for(var Aelti = 0; Aelti < Aelts.length; ++Aelti)\tif(Aelts[Aelti].hasAttribute(\"href\")) {\n\t\t\t\tl = Aelts[Aelti].getAttribute(\"href\"); if(l.charAt(0) != \"#\") break;\n\t\t\t}\n\t\t\tif(l && l.charAt(0) != \"#\") o.l = ({ Target: l });\n\t\t\tif(opts.dense) { if(!ws[R + or_R]) ws[R + or_R] = []; ws[R + or_R][C + or_C] = o; }\n\t\t\telse ws[encode_cell({c:C + or_C, r:R + or_R})] = o;\n\t\t\tif(range.e.c < C + or_C) range.e.c = C + or_C;\n\t\t\tC += CS;\n\t\t}\n\t\t++R;\n\t}\n\tif(merges.length) ws['!merges'] = (ws[\"!merges\"] || []).concat(merges);\n\trange.e.r = Math.max(range.e.r, R - 1 + or_R);\n\tws['!ref'] = encode_range(range);\n\tif(R >= sheetRows) ws['!fullref'] = encode_range((range.e.r = rows.length-_R+R-1 + or_R,range)); // We can count the real number of rows to parse but we don't to improve the performance\n\treturn ws;\n}\n\nfunction parse_dom_table(table/*:HTMLElement*/, _opts/*:?any*/)/*:Worksheet*/ {\n\tvar opts = _opts || {};\n\tvar ws/*:Worksheet*/ = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\treturn sheet_add_dom(ws, table, _opts);\n}\n\nfunction table_to_book(table/*:HTMLElement*/, opts/*:?any*/)/*:Workbook*/ {\n\treturn sheet_to_workbook(parse_dom_table(table, opts), opts);\n}\n\nfunction is_dom_element_hidden(element/*:HTMLElement*/)/*:boolean*/ {\n\tvar display/*:string*/ = '';\n\tvar get_computed_style/*:?function*/ = get_get_computed_style_function(element);\n\tif(get_computed_style) display = get_computed_style(element).getPropertyValue('display');\n\tif(!display) display = element.style && element.style.display;\n\treturn display === 'none';\n}\n\n/* global getComputedStyle */\nfunction get_get_computed_style_function(element/*:HTMLElement*/)/*:?function*/ {\n\t// The proper getComputedStyle implementation is the one defined in the element window\n\tif(element.ownerDocument.defaultView && typeof element.ownerDocument.defaultView.getComputedStyle === 'function') return element.ownerDocument.defaultView.getComputedStyle;\n\t// If it is not available, try to get one from the global namespace\n\tif(typeof getComputedStyle === 'function') return getComputedStyle;\n\treturn null;\n}\n/* OpenDocument */\nfunction parse_text_p(text/*:string*//*::, tag*/)/*:Array<any>*/ {\n\t/* 6.1.2 White Space Characters */\n\tvar fixed = text\n\t\t.replace(/[\\t\\r\\n]/g, \" \").trim().replace(/ +/g, \" \")\n\t\t.replace(/<text:s\\/>/g,\" \")\n\t\t.replace(/<text:s text:c=\"(\\d+)\"\\/>/g, function($$,$1) { return Array(parseInt($1,10)+1).join(\" \"); })\n\t\t.replace(/<text:tab[^>]*\\/>/g,\"\\t\")\n\t\t.replace(/<text:line-break\\/>/g,\"\\n\");\n\tvar v = unescapexml(fixed.replace(/<[^>]*>/g,\"\"));\n\n\treturn [v];\n}\n\nvar number_formats_ods = {\n\t/* ods name: [short ssf fmt, long ssf fmt] */\n\tday:           [\"d\",   \"dd\"],\n\tmonth:         [\"m\",   \"mm\"],\n\tyear:          [\"y\",   \"yy\"],\n\thours:         [\"h\",   \"hh\"],\n\tminutes:       [\"m\",   \"mm\"],\n\tseconds:       [\"s\",   \"ss\"],\n\t\"am-pm\":       [\"A/P\", \"AM/PM\"],\n\t\"day-of-week\": [\"ddd\", \"dddd\"],\n\tera:           [\"e\",   \"ee\"],\n\t/* there is no native representation of LO \"Q\" format */\n\tquarter:       [\"\\\\Qm\", \"m\\\\\\\"th quarter\\\"\"]\n};\n\n\nfunction parse_content_xml(d/*:string*/, _opts)/*:Workbook*/ {\n\t\tvar opts = _opts || {};\n\t\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\t\tvar str = xlml_normalize(d);\n\t\tvar state/*:Array<any>*/ = [], tmp;\n\t\tvar tag/*:: = {}*/;\n\t\tvar NFtag = {name:\"\"}, NF = \"\", pidx = 0;\n\t\tvar sheetag/*:: = {name:\"\", '名称':\"\"}*/;\n\t\tvar rowtag/*:: = {'行号':\"\"}*/;\n\t\tvar Sheets = {}, SheetNames/*:Array<string>*/ = [];\n\t\tvar ws = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\t\tvar Rn, q/*:: :any = ({t:\"\", v:null, z:null, w:\"\",c:[],}:any)*/;\n\t\tvar ctag = ({value:\"\"}/*:any*/);\n\t\tvar textp = \"\", textpidx = 0, textptag/*:: = {}*/;\n\t\tvar textR = [];\n\t\tvar R = -1, C = -1, range = {s: {r:1000000,c:10000000}, e: {r:0, c:0}};\n\t\tvar row_ol = 0;\n\t\tvar number_format_map = {};\n\t\tvar merges/*:Array<Range>*/ = [], mrange = {}, mR = 0, mC = 0;\n\t\tvar rowinfo/*:Array<RowInfo>*/ = [], rowpeat = 1, colpeat = 1;\n\t\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\t\tvar WB = {Names:[]};\n\t\tvar atag = ({}/*:any*/);\n\t\tvar _Ref/*:[string, string]*/ = [\"\", \"\"];\n\t\tvar comments/*:Array<Comment>*/ = [], comment/*:Comment*/ = ({}/*:any*/);\n\t\tvar creator = \"\", creatoridx = 0;\n\t\tvar isstub = false, intable = false;\n\t\tvar i = 0;\n\t\txlmlregex.lastIndex = 0;\n\t\tstr = str.replace(/<!--([\\s\\S]*?)-->/mg,\"\").replace(/<!DOCTYPE[^\\[]*\\[[^\\]]*\\]>/gm,\"\");\n\t\twhile((Rn = xlmlregex.exec(str))) switch((Rn[3]=Rn[3].replace(/_.*$/,\"\"))) {\n\n\t\t\tcase 'table': case '工作表': // 9.1.2 <table:table>\n\t\t\t\tif(Rn[1]==='/') {\n\t\t\t\t\tif(range.e.c >= range.s.c && range.e.r >= range.s.r) ws['!ref'] = encode_range(range);\n\t\t\t\t\telse ws['!ref'] = \"A1:A1\";\n\t\t\t\t\tif(opts.sheetRows > 0 && opts.sheetRows <= range.e.r) {\n\t\t\t\t\t\tws['!fullref'] = ws['!ref'];\n\t\t\t\t\t\trange.e.r = opts.sheetRows - 1;\n\t\t\t\t\t\tws['!ref'] = encode_range(range);\n\t\t\t\t\t}\n\t\t\t\t\tif(merges.length) ws['!merges'] = merges;\n\t\t\t\t\tif(rowinfo.length) ws[\"!rows\"] = rowinfo;\n\t\t\t\t\tsheetag.name = sheetag['名称'] || sheetag.name;\n\t\t\t\t\tif(typeof JSON !== 'undefined') JSON.stringify(sheetag);\n\t\t\t\t\tSheetNames.push(sheetag.name);\n\t\t\t\t\tSheets[sheetag.name] = ws;\n\t\t\t\t\tintable = false;\n\t\t\t\t}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\t\tsheetag = parsexmltag(Rn[0], false);\n\t\t\t\t\tR = C = -1;\n\t\t\t\t\trange.s.r = range.s.c = 10000000; range.e.r = range.e.c = 0;\n\t\t\t\t\tws = opts.dense ? ([]/*:any*/) : ({}/*:any*/); merges = [];\n\t\t\t\t\trowinfo = [];\n\t\t\t\t\tintable = true;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'table-row-group': // 9.1.9 <table:table-row-group>\n\t\t\t\tif(Rn[1] === \"/\") --row_ol; else ++row_ol;\n\t\t\t\tbreak;\n\t\t\tcase 'table-row': case '行': // 9.1.3 <table:table-row>\n\t\t\t\tif(Rn[1] === '/') { R+=rowpeat; rowpeat = 1; break; }\n\t\t\t\trowtag = parsexmltag(Rn[0], false);\n\t\t\t\tif(rowtag['行号']) R = rowtag['行号'] - 1; else if(R == -1) R = 0;\n\t\t\t\trowpeat = +rowtag['number-rows-repeated'] || 1;\n\t\t\t\t/* TODO: remove magic */\n\t\t\t\tif(rowpeat < 10) for(i = 0; i < rowpeat; ++i) if(row_ol > 0) rowinfo[R + i] = {level: row_ol};\n\t\t\t\tC = -1; break;\n\t\t\tcase 'covered-table-cell': // 9.1.5 <table:covered-table-cell>\n\t\t\t\tif(Rn[1] !== '/') ++C;\n\t\t\t\tif(opts.sheetStubs) {\n\t\t\t\t\tif(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = {t:'z'}; }\n\t\t\t\t\telse ws[encode_cell({r:R,c:C})] = {t:'z'};\n\t\t\t\t}\n\t\t\t\ttextp = \"\"; textR = [];\n\t\t\t\tbreak; /* stub */\n\t\t\tcase 'table-cell': case '数据':\n\t\t\t\tif(Rn[0].charAt(Rn[0].length-2) === '/') {\n\t\t\t\t\t++C;\n\t\t\t\t\tctag = parsexmltag(Rn[0], false);\n\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\tq = ({t:'z', v:null/*:: , z:null, w:\"\",c:[]*/}/*:any*/);\n\t\t\t\t\tif(ctag.formula && opts.cellFormula != false) q.f = ods_to_csf_formula(unescapexml(ctag.formula));\n\t\t\t\t\tif((ctag['数据类型'] || ctag['value-type']) == \"string\") {\n\t\t\t\t\t\tq.t = \"s\"; q.v = unescapexml(ctag['string-value'] || \"\");\n\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\tif(!ws[R]) ws[R] = [];\n\t\t\t\t\t\t\tws[R][C] = q;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tws[encode_cell({r:R,c:C})] = q;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tC+= colpeat-1;\n\t\t\t\t} else if(Rn[1]!=='/') {\n\t\t\t\t\t++C;\n\t\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\t\tcolpeat = 1;\n\t\t\t\t\tvar rptR = rowpeat ? R + rowpeat - 1 : R;\n\t\t\t\t\tif(C > range.e.c) range.e.c = C;\n\t\t\t\t\tif(C < range.s.c) range.s.c = C;\n\t\t\t\t\tif(R < range.s.r) range.s.r = R;\n\t\t\t\t\tif(rptR > range.e.r) range.e.r = rptR;\n\t\t\t\t\tctag = parsexmltag(Rn[0], false);\n\t\t\t\t\tcomments = []; comment = ({}/*:any*/);\n\t\t\t\t\tq = ({t:ctag['数据类型'] || ctag['value-type'], v:null/*:: , z:null, w:\"\",c:[]*/}/*:any*/);\n\t\t\t\t\tif(opts.cellFormula) {\n\t\t\t\t\t\tif(ctag.formula) ctag.formula = unescapexml(ctag.formula);\n\t\t\t\t\t\tif(ctag['number-matrix-columns-spanned'] && ctag['number-matrix-rows-spanned']) {\n\t\t\t\t\t\t\tmR = parseInt(ctag['number-matrix-rows-spanned'],10) || 0;\n\t\t\t\t\t\t\tmC = parseInt(ctag['number-matrix-columns-spanned'],10) || 0;\n\t\t\t\t\t\t\tmrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}};\n\t\t\t\t\t\t\tq.F = encode_range(mrange);\n\t\t\t\t\t\t\tarrayf.push([mrange, q.F]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(ctag.formula) q.f = ods_to_csf_formula(ctag.formula);\n\t\t\t\t\t\telse for(i = 0; i < arrayf.length; ++i)\n\t\t\t\t\t\t\tif(R >= arrayf[i][0].s.r && R <= arrayf[i][0].e.r)\n\t\t\t\t\t\t\t\tif(C >= arrayf[i][0].s.c && C <= arrayf[i][0].e.c)\n\t\t\t\t\t\t\t\t\tq.F = arrayf[i][1];\n\t\t\t\t\t}\n\t\t\t\t\tif(ctag['number-columns-spanned'] || ctag['number-rows-spanned']) {\n\t\t\t\t\t\tmR = parseInt(ctag['number-rows-spanned'],10) || 0;\n\t\t\t\t\t\tmC = parseInt(ctag['number-columns-spanned'],10) || 0;\n\t\t\t\t\t\tmrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}};\n\t\t\t\t\t\tmerges.push(mrange);\n\t\t\t\t\t}\n\n\t\t\t\t\t/* 19.675.2 table:number-columns-repeated */\n\t\t\t\t\tif(ctag['number-columns-repeated']) colpeat = parseInt(ctag['number-columns-repeated'], 10);\n\n\t\t\t\t\t/* 19.385 office:value-type */\n\t\t\t\t\tswitch(q.t) {\n\t\t\t\t\t\tcase 'boolean': q.t = 'b'; q.v = parsexmlbool(ctag['boolean-value']); break;\n\t\t\t\t\t\tcase 'float': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'percentage': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'currency': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'date': q.t = 'd'; q.v = parseDate(ctag['date-value']);\n\t\t\t\t\t\t\tif(!opts.cellDates) { q.t = 'n'; q.v = datenum(q.v); }\n\t\t\t\t\t\t\tq.z = 'm/d/yy'; break;\n\t\t\t\t\t\tcase 'time': q.t = 'n'; q.v = parse_isodur(ctag['time-value'])/86400;\n\t\t\t\t\t\t\tif(opts.cellDates) { q.t = 'd'; q.v = numdate(q.v); }\n\t\t\t\t\t\t\tq.z = 'HH:MM:SS'; break;\n\t\t\t\t\t\tcase 'number': q.t = 'n'; q.v = parseFloat(ctag['数据数值']); break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tif(q.t === 'string' || q.t === 'text' || !q.t) {\n\t\t\t\t\t\t\t\tq.t = 's';\n\t\t\t\t\t\t\t\tif(ctag['string-value'] != null) { textp = unescapexml(ctag['string-value']); textR = []; }\n\t\t\t\t\t\t\t} else throw new Error('Unsupported value type ' + q.t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tisstub = false;\n\t\t\t\t\tif(q.t === 's') {\n\t\t\t\t\t\tq.v = textp || '';\n\t\t\t\t\t\tif(textR.length) q.R = textR;\n\t\t\t\t\t\tisstub = textpidx == 0;\n\t\t\t\t\t}\n\t\t\t\t\tif(atag.Target) q.l = atag;\n\t\t\t\t\tif(comments.length > 0) { q.c = comments; comments = []; }\n\t\t\t\t\tif(textp && opts.cellText !== false) q.w = textp;\n\t\t\t\t\tif(isstub) { q.t = \"z\"; delete q.v; }\n\t\t\t\t\tif(!isstub || opts.sheetStubs) {\n\t\t\t\t\t\tif(!(opts.sheetRows && opts.sheetRows <= R)) {\n\t\t\t\t\t\t\tfor(var rpt = 0; rpt < rowpeat; ++rpt) {\n\t\t\t\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\t\t\tif(!ws[R + rpt]) ws[R + rpt] = [];\n\t\t\t\t\t\t\t\t\tws[R + rpt][C] = rpt == 0 ? q : dup(q);\n\t\t\t\t\t\t\t\t\twhile(--colpeat > 0) ws[R + rpt][C + colpeat] = dup(q);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tws[encode_cell({r:R + rpt,c:C})] = q;\n\t\t\t\t\t\t\t\t\twhile(--colpeat > 0) ws[encode_cell({r:R + rpt,c:C + colpeat})] = dup(q);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif(range.e.c <= C) range.e.c = C;\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\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\tC += colpeat-1; colpeat = 0;\n\t\t\t\t\tq = {/*:: t:\"\", v:null, z:null, w:\"\",c:[]*/};\n\t\t\t\t\ttextp = \"\"; textR = [];\n\t\t\t\t}\n\t\t\t\tatag = ({}/*:any*/);\n\t\t\t\tbreak; // 9.1.4 <table:table-cell>\n\n\t\t\t/* pure state */\n\t\t\tcase 'document': // TODO: <office:document> is the root for FODS\n\t\t\tcase 'document-content': case '电子表格文档': // 3.1.3.2 <office:document-content>\n\t\t\tcase 'spreadsheet': case '主体': // 3.7 <office:spreadsheet>\n\t\t\tcase 'scripts': // 3.12 <office:scripts>\n\t\t\tcase 'styles': // TODO <office:styles>\n\t\t\tcase 'font-face-decls': // 3.14 <office:font-face-decls>\n\t\t\tcase 'master-styles': // 3.15.4 <office:master-styles> -- relevant for FODS\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t\tbreak;\n\n\t\t\tcase 'annotation': // 14.1 <office:annotation>\n\t\t\t\tif(Rn[1]==='/'){\n\t\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;\n\t\t\t\t\tcomment.t = textp;\n\t\t\t\t\tif(textR.length) /*::(*/comment/*:: :any)*/.R = textR;\n\t\t\t\t\tcomment.a = creator;\n\t\t\t\t\tcomments.push(comment);\n\t\t\t\t}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {state.push([Rn[3], false]);}\n\t\t\t\tcreator = \"\"; creatoridx = 0;\n\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\tbreak;\n\n\t\t\tcase 'creator': // 4.3.2.7 <dc:creator>\n\t\t\t\tif(Rn[1]==='/') { creator = str.slice(creatoridx,Rn.index); }\n\t\t\t\telse creatoridx = Rn.index + Rn[0].length;\n\t\t\t\tbreak;\n\n\t\t\t/* ignore state */\n\t\t\tcase 'meta': case '元数据': // TODO: <office:meta> <uof:元数据> FODS/UOF\n\t\t\tcase 'settings': // TODO: <office:settings>\n\t\t\tcase 'config-item-set': // TODO: <office:config-item-set>\n\t\t\tcase 'config-item-map-indexed': // TODO: <office:config-item-map-indexed>\n\t\t\tcase 'config-item-map-entry': // TODO: <office:config-item-map-entry>\n\t\t\tcase 'config-item-map-named': // TODO: <office:config-item-map-entry>\n\t\t\tcase 'shapes': // 9.2.8 <table:shapes>\n\t\t\tcase 'frame': // 10.4.2 <draw:frame>\n\t\t\tcase 'text-box': // 10.4.3 <draw:text-box>\n\t\t\tcase 'image': // 10.4.4 <draw:image>\n\t\t\tcase 'data-pilot-tables': // 9.6.2 <table:data-pilot-tables>\n\t\t\tcase 'list-style': // 16.30 <text:list-style>\n\t\t\tcase 'form': // 13.13 <form:form>\n\t\t\tcase 'dde-links': // 9.8 <table:dde-links>\n\t\t\tcase 'event-listeners': // TODO\n\t\t\tcase 'chart': // TODO\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], false]);\n\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\tbreak;\n\n\t\t\tcase 'scientific-number': // TODO: <number:scientific-number>\n\t\t\t\tbreak;\n\t\t\tcase 'currency-symbol': // TODO: <number:currency-symbol>\n\t\t\t\tbreak;\n\t\t\tcase 'currency-style': // TODO: <number:currency-style>\n\t\t\t\tbreak;\n\t\t\tcase 'number-style': // 16.27.2 <number:number-style>\n\t\t\tcase 'percentage-style': // 16.27.9 <number:percentage-style>\n\t\t\tcase 'date-style': // 16.27.10 <number:date-style>\n\t\t\tcase 'time-style': // 16.27.18 <number:time-style>\n\t\t\t\tif(Rn[1]==='/'){\n\t\t\t\t\tnumber_format_map[NFtag.name] = NF;\n\t\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;\n\t\t\t\t} else if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\t\tNF = \"\";\n\t\t\t\t\tNFtag = parsexmltag(Rn[0], false);\n\t\t\t\t\tstate.push([Rn[3], true]);\n\t\t\t\t} break;\n\n\t\t\tcase 'script': break; // 3.13 <office:script>\n\t\t\tcase 'libraries': break; // TODO: <ooo:libraries>\n\t\t\tcase 'automatic-styles': break; // 3.15.3 <office:automatic-styles>\n\n\t\t\tcase 'default-style': // TODO: <style:default-style>\n\t\t\tcase 'page-layout': break; // TODO: <style:page-layout>\n\t\t\tcase 'style': // 16.2 <style:style>\n\t\t\t\tbreak;\n\t\t\tcase 'map': break; // 16.3 <style:map>\n\t\t\tcase 'font-face': break; // 16.21 <style:font-face>\n\n\t\t\tcase 'paragraph-properties': break; // 17.6 <style:paragraph-properties>\n\t\t\tcase 'table-properties': break; // 17.15 <style:table-properties>\n\t\t\tcase 'table-column-properties': break; // 17.16 <style:table-column-properties>\n\t\t\tcase 'table-row-properties': break; // 17.17 <style:table-row-properties>\n\t\t\tcase 'table-cell-properties': break; // 17.18 <style:table-cell-properties>\n\n\t\t\tcase 'number': // 16.27.3 <number:number>\n\t\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t\t\tNF += number_formats_ods[Rn[3]][tag.style==='long'?1:0]; break;\n\t\t\t\t} break;\n\n\t\t\tcase 'fraction': break; // TODO 16.27.6 <number:fraction>\n\n\t\t\tcase 'day': // 16.27.11 <number:day>\n\t\t\tcase 'month': // 16.27.12 <number:month>\n\t\t\tcase 'year': // 16.27.13 <number:year>\n\t\t\tcase 'era': // 16.27.14 <number:era>\n\t\t\tcase 'day-of-week': // 16.27.15 <number:day-of-week>\n\t\t\tcase 'week-of-year': // 16.27.16 <number:week-of-year>\n\t\t\tcase 'quarter': // 16.27.17 <number:quarter>\n\t\t\tcase 'hours': // 16.27.19 <number:hours>\n\t\t\tcase 'minutes': // 16.27.20 <number:minutes>\n\t\t\tcase 'seconds': // 16.27.21 <number:seconds>\n\t\t\tcase 'am-pm': // 16.27.22 <number:am-pm>\n\t\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t\t\tNF += number_formats_ods[Rn[3]][tag.style==='long'?1:0]; break;\n\t\t\t\t} break;\n\n\t\t\tcase 'boolean-style': break; // 16.27.23 <number:boolean-style>\n\t\t\tcase 'boolean': break; // 16.27.24 <number:boolean>\n\t\t\tcase 'text-style': break; // 16.27.25 <number:text-style>\n\t\t\tcase 'text': // 16.27.26 <number:text>\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\t\telse if(Rn[1]===\"/\") switch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'number-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\t\tNF += str.slice(pidx, Rn.index);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\t\tbreak;\n\n\t\t\tcase 'named-range': // 9.4.12 <table:named-range>\n\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t_Ref = ods_to_csf_3D(tag['cell-range-address']);\n\t\t\t\tvar nrange = ({Name:tag.name, Ref:_Ref[0] + '!' + _Ref[1]}/*:any*/);\n\t\t\t\tif(intable) nrange.Sheet = SheetNames.length;\n\t\t\t\tWB.Names.push(nrange);\n\t\t\t\tbreak;\n\n\t\t\tcase 'text-content': break; // 16.27.27 <number:text-content>\n\t\t\tcase 'text-properties': break; // 16.27.27 <style:text-properties>\n\t\t\tcase 'embedded-text': break; // 16.27.4 <number:embedded-text>\n\n\t\t\tcase 'body': case '电子表格': break; // 3.3 16.9.6 19.726.3\n\n\t\t\tcase 'forms': break; // 12.25.2 13.2\n\t\t\tcase 'table-column': break; // 9.1.6 <table:table-column>\n\t\t\tcase 'table-header-rows': break; // 9.1.7 <table:table-header-rows>\n\t\t\tcase 'table-rows': break; // 9.1.12 <table:table-rows>\n\t\t\t/* TODO: outline levels */\n\t\t\tcase 'table-column-group': break; // 9.1.10 <table:table-column-group>\n\t\t\tcase 'table-header-columns': break; // 9.1.11 <table:table-header-columns>\n\t\t\tcase 'table-columns': break; // 9.1.12 <table:table-columns>\n\n\t\t\tcase 'null-date': break; // 9.4.2 <table:null-date> TODO: date1904\n\n\t\t\tcase 'graphic-properties': break; // 17.21 <style:graphic-properties>\n\t\t\tcase 'calculation-settings': break; // 9.4.1 <table:calculation-settings>\n\t\t\tcase 'named-expressions': break; // 9.4.11 <table:named-expressions>\n\t\t\tcase 'label-range': break; // 9.4.9 <table:label-range>\n\t\t\tcase 'label-ranges': break; // 9.4.10 <table:label-ranges>\n\t\t\tcase 'named-expression': break; // 9.4.13 <table:named-expression>\n\t\t\tcase 'sort': break; // 9.4.19 <table:sort>\n\t\t\tcase 'sort-by': break; // 9.4.20 <table:sort-by>\n\t\t\tcase 'sort-groups': break; // 9.4.22 <table:sort-groups>\n\n\t\t\tcase 'tab': break; // 6.1.4 <text:tab>\n\t\t\tcase 'line-break': break; // 6.1.5 <text:line-break>\n\t\t\tcase 'span': break; // 6.1.7 <text:span>\n\t\t\tcase 'p': case '文本串': // 5.1.3 <text:p>\n\t\t\t\tif(['master-styles'].indexOf(state[state.length-1][0]) > -1) break;\n\t\t\t\tif(Rn[1]==='/' && (!ctag || !ctag['string-value'])) {\n\t\t\t\t\tvar ptp = parse_text_p(str.slice(textpidx,Rn.index), textptag);\n\t\t\t\t\ttextp = (textp.length > 0 ? textp + \"\\n\" : \"\") + ptp[0];\n\t\t\t\t} else { textptag = parsexmltag(Rn[0], false); textpidx = Rn.index + Rn[0].length; }\n\t\t\t\tbreak; // <text:p>\n\t\t\tcase 's': break; // <text:s>\n\n\t\t\tcase 'database-range': // 9.4.15 <table:database-range>\n\t\t\t\tif(Rn[1]==='/') break;\n\t\t\t\ttry {\n\t\t\t\t\t_Ref = ods_to_csf_3D(parsexmltag(Rn[0])['target-range-address']);\n\t\t\t\t\tSheets[_Ref[0]]['!autofilter'] = { ref:_Ref[1] };\n\t\t\t\t} catch(e) {/* empty */}\n\t\t\t\tbreak;\n\n\t\t\tcase 'date': break; // <*:date>\n\n\t\t\tcase 'object': break; // 10.4.6.2 <draw:object>\n\t\t\tcase 'title': case '标题': break; // <*:title> OR <uof:标题>\n\t\t\tcase 'desc': break; // <*:desc>\n\t\t\tcase 'binary-data': break; // 10.4.5 TODO: b64 blob\n\n\t\t\t/* 9.2 Advanced Tables */\n\t\t\tcase 'table-source': break; // 9.2.6\n\t\t\tcase 'scenario': break; // 9.2.6\n\n\t\t\tcase 'iteration': break; // 9.4.3 <table:iteration>\n\t\t\tcase 'content-validations': break; // 9.4.4 <table:\n\t\t\tcase 'content-validation': break; // 9.4.5 <table:\n\t\t\tcase 'help-message': break; // 9.4.6 <table:\n\t\t\tcase 'error-message': break; // 9.4.7 <table:\n\t\t\tcase 'database-ranges': break; // 9.4.14 <table:database-ranges>\n\t\t\tcase 'filter': break; // 9.5.2 <table:filter>\n\t\t\tcase 'filter-and': break; // 9.5.3 <table:filter-and>\n\t\t\tcase 'filter-or': break; // 9.5.4 <table:filter-or>\n\t\t\tcase 'filter-condition': break; // 9.5.5 <table:filter-condition>\n\n\t\t\tcase 'list-level-style-bullet': break; // 16.31 <text:\n\t\t\tcase 'list-level-style-number': break; // 16.32 <text:\n\t\t\tcase 'list-level-properties': break; // 17.19 <style:\n\n\t\t\t/* 7.3 Document Fields */\n\t\t\tcase 'sender-firstname': // 7.3.6.2\n\t\t\tcase 'sender-lastname': // 7.3.6.3\n\t\t\tcase 'sender-initials': // 7.3.6.4\n\t\t\tcase 'sender-title': // 7.3.6.5\n\t\t\tcase 'sender-position': // 7.3.6.6\n\t\t\tcase 'sender-email': // 7.3.6.7\n\t\t\tcase 'sender-phone-private': // 7.3.6.8\n\t\t\tcase 'sender-fax': // 7.3.6.9\n\t\t\tcase 'sender-company': // 7.3.6.10\n\t\t\tcase 'sender-phone-work': // 7.3.6.11\n\t\t\tcase 'sender-street': // 7.3.6.12\n\t\t\tcase 'sender-city': // 7.3.6.13\n\t\t\tcase 'sender-postal-code': // 7.3.6.14\n\t\t\tcase 'sender-country': // 7.3.6.15\n\t\t\tcase 'sender-state-or-province': // 7.3.6.16\n\t\t\tcase 'author-name': // 7.3.7.1\n\t\t\tcase 'author-initials': // 7.3.7.2\n\t\t\tcase 'chapter': // 7.3.8\n\t\t\tcase 'file-name': // 7.3.9\n\t\t\tcase 'template-name': // 7.3.9\n\t\t\tcase 'sheet-name': // 7.3.9\n\t\t\t\tbreak;\n\n\t\t\tcase 'event-listener':\n\t\t\t\tbreak;\n\t\t\t/* TODO: FODS Properties */\n\t\t\tcase 'initial-creator':\n\t\t\tcase 'creation-date':\n\t\t\tcase 'print-date':\n\t\t\tcase 'generator':\n\t\t\tcase 'document-statistic':\n\t\t\tcase 'user-defined':\n\t\t\tcase 'editing-duration':\n\t\t\tcase 'editing-cycles':\n\t\t\t\tbreak;\n\n\t\t\t/* TODO: FODS Config */\n\t\t\tcase 'config-item':\n\t\t\t\tbreak;\n\n\t\t\t/* TODO: style tokens */\n\t\t\tcase 'page-number': break; // TODO <text:page-number>\n\t\t\tcase 'page-count': break; // TODO <text:page-count>\n\t\t\tcase 'time': break; // TODO <text:time>\n\n\t\t\t/* 9.3 Advanced Table Cells */\n\t\t\tcase 'cell-range-source': break; // 9.3.1 <table:\n\t\t\tcase 'detective': break; // 9.3.2 <table:\n\t\t\tcase 'operation': break; // 9.3.3 <table:\n\t\t\tcase 'highlighted-range': break; // 9.3.4 <table:\n\n\t\t\t/* 9.6 Data Pilot Tables <table: */\n\t\t\tcase 'data-pilot-table': // 9.6.3\n\t\t\tcase 'source-cell-range': // 9.6.5\n\t\t\tcase 'source-service': // 9.6.6\n\t\t\tcase 'data-pilot-field': // 9.6.7\n\t\t\tcase 'data-pilot-level': // 9.6.8\n\t\t\tcase 'data-pilot-subtotals': // 9.6.9\n\t\t\tcase 'data-pilot-subtotal': // 9.6.10\n\t\t\tcase 'data-pilot-members': // 9.6.11\n\t\t\tcase 'data-pilot-member': // 9.6.12\n\t\t\tcase 'data-pilot-display-info': // 9.6.13\n\t\t\tcase 'data-pilot-sort-info': // 9.6.14\n\t\t\tcase 'data-pilot-layout-info': // 9.6.15\n\t\t\tcase 'data-pilot-field-reference': // 9.6.16\n\t\t\tcase 'data-pilot-groups': // 9.6.17\n\t\t\tcase 'data-pilot-group': // 9.6.18\n\t\t\tcase 'data-pilot-group-member': // 9.6.19\n\t\t\t\tbreak;\n\n\t\t\t/* 10.3 Drawing Shapes */\n\t\t\tcase 'rect': // 10.3.2\n\t\t\t\tbreak;\n\n\t\t\t/* 14.6 DDE Connections */\n\t\t\tcase 'dde-connection-decls': // 14.6.2 <text:\n\t\t\tcase 'dde-connection-decl': // 14.6.3 <text:\n\t\t\tcase 'dde-link': // 14.6.4 <table:\n\t\t\tcase 'dde-source': // 14.6.5 <office:\n\t\t\t\tbreak;\n\n\t\t\tcase 'properties': break; // 13.7 <form:properties>\n\t\t\tcase 'property': break; // 13.8 <form:property>\n\n\t\t\tcase 'a': // 6.1.8 hyperlink\n\t\t\t\tif(Rn[1]!== '/') {\n\t\t\t\t\tatag = parsexmltag(Rn[0], false);\n\t\t\t\t\tif(!atag.href) break;\n\t\t\t\t\tatag.Target = unescapexml(atag.href); delete atag.href;\n\t\t\t\t\tif(atag.Target.charAt(0) == \"#\" && atag.Target.indexOf(\".\") > -1) {\n\t\t\t\t\t\t_Ref = ods_to_csf_3D(atag.Target.slice(1));\n\t\t\t\t\t\tatag.Target = \"#\" + _Ref[0] + \"!\" + _Ref[1];\n\t\t\t\t\t} else if(atag.Target.match(/^\\.\\.[\\\\\\/]/)) atag.Target = atag.Target.slice(3);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t/* non-standard */\n\t\t\tcase 'table-protection': break;\n\t\t\tcase 'data-pilot-grand-total': break; // <table:\n\t\t\tcase 'office-document-common-attrs': break; // bare\n\t\t\tdefault: switch(Rn[2]) {\n\t\t\t\tcase 'dc:':       // TODO: properties\n\t\t\t\tcase 'calcext:':  // ignore undocumented extensions\n\t\t\t\tcase 'loext:':    // ignore undocumented extensions\n\t\t\t\tcase 'ooo:':      // ignore undocumented extensions\n\t\t\t\tcase 'chartooo:': // ignore undocumented extensions\n\t\t\t\tcase 'draw:':     // TODO: drawing\n\t\t\t\tcase 'style:':    // TODO: styles\n\t\t\t\tcase 'chart:':    // TODO: charts\n\t\t\t\tcase 'form:':     // TODO: forms\n\t\t\t\tcase 'uof:':      // TODO: uof\n\t\t\t\tcase '表:':       // TODO: uof\n\t\t\t\tcase '字:':       // TODO: uof\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: if(opts.WTF) throw new Error(Rn);\n\t\t\t}\n\t\t}\n\t\tvar out/*:Workbook*/ = ({\n\t\t\tSheets: Sheets,\n\t\t\tSheetNames: SheetNames,\n\t\t\tWorkbook: WB\n\t\t}/*:any*/);\n\t\tif(opts.bookSheets) delete /*::(*/out/*:: :any)*/.Sheets;\n\t\treturn out;\n}\n\nfunction parse_ods(zip/*:ZIPFile*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\topts = opts || ({}/*:any*/);\n\tif(safegetzipfile(zip, 'META-INF/manifest.xml')) parse_manifest(getzipdata(zip, 'META-INF/manifest.xml'), opts);\n\tvar content = getzipstr(zip, 'content.xml');\n\tif(!content) throw new Error(\"Missing content.xml in ODS / UOF file\");\n\tvar wb = parse_content_xml(utf8read(content), opts);\n\tif(safegetzipfile(zip, 'meta.xml')) wb.Props = parse_core_props(getzipdata(zip, 'meta.xml'));\n\treturn wb;\n}\nfunction parse_fods(data/*:string*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\treturn parse_content_xml(data, opts);\n}\n\n/* OpenDocument */\nvar write_styles_ods/*:{(wb:any, opts:any):string}*/ = /* @__PURE__ */(function() {\n\tvar master_styles = [\n\t\t'<office:master-styles>',\n\t\t\t'<style:master-page style:name=\"mp1\" style:page-layout-name=\"mp1\">',\n\t\t\t\t'<style:header/>',\n\t\t\t\t'<style:header-left style:display=\"false\"/>',\n\t\t\t\t'<style:footer/>',\n\t\t\t\t'<style:footer-left style:display=\"false\"/>',\n\t\t\t'</style:master-page>',\n\t\t'</office:master-styles>'\n\t].join(\"\");\n\n\tvar payload = '<office:document-styles ' + wxt_helper({\n\t\t'xmlns:office':   \"urn:oasis:names:tc:opendocument:xmlns:office:1.0\",\n\t\t'xmlns:table':    \"urn:oasis:names:tc:opendocument:xmlns:table:1.0\",\n\t\t'xmlns:style':    \"urn:oasis:names:tc:opendocument:xmlns:style:1.0\",\n\t\t'xmlns:text':     \"urn:oasis:names:tc:opendocument:xmlns:text:1.0\",\n\t\t'xmlns:draw':     \"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0\",\n\t\t'xmlns:fo':       \"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0\",\n\t\t'xmlns:xlink':    \"http://www.w3.org/1999/xlink\",\n\t\t'xmlns:dc':       \"http://purl.org/dc/elements/1.1/\",\n\t\t'xmlns:number':   \"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0\",\n\t\t'xmlns:svg':      \"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0\",\n\t\t'xmlns:of':       \"urn:oasis:names:tc:opendocument:xmlns:of:1.2\",\n\t\t'office:version': \"1.2\"\n\t}) + '>' + master_styles + '</office:document-styles>';\n\n\treturn function wso(/*::wb, opts*/) {\n\t\treturn XML_HEADER + payload;\n\t};\n})();\nvar write_content_ods/*:{(wb:any, opts:any):string}*/ = /* @__PURE__ */(function() {\n\t/* 6.1.2 White Space Characters */\n\tvar write_text_p = function(text/*:string*/)/*:string*/ {\n\t\treturn escapexml(text)\n\t\t\t.replace(/  +/g, function($$){return '<text:s text:c=\"'+$$.length+'\"/>';})\n\t\t\t.replace(/\\t/g, \"<text:tab/>\")\n\t\t\t.replace(/\\n/g, \"</text:p><text:p>\")\n\t\t\t.replace(/^ /, \"<text:s/>\").replace(/ $/, \"<text:s/>\");\n\t};\n\n\tvar null_cell_xml = '          <table:table-cell />\\n';\n\tvar covered_cell_xml = '          <table:covered-table-cell/>\\n';\n\tvar write_ws = function(ws, wb/*:Workbook*/, i/*:number*//*::, opts*/)/*:string*/ {\n\t\t/* Section 9 Tables */\n\t\tvar o/*:Array<string>*/ = [];\n\t\to.push('      <table:table table:name=\"' + escapexml(wb.SheetNames[i]) + '\" table:style-name=\"ta1\">\\n');\n\t\tvar R=0,C=0, range = decode_range(ws['!ref']||\"A1\");\n\t\tvar marr/*:Array<Range>*/ = ws['!merges'] || [], mi = 0;\n\t\tvar dense = Array.isArray(ws);\n\t\tif(ws[\"!cols\"]) {\n\t\t\tfor(C = 0; C <= range.e.c; ++C) o.push('        <table:table-column' + (ws[\"!cols\"][C] ? ' table:style-name=\"co' + ws[\"!cols\"][C].ods + '\"' : '') + '></table:table-column>\\n');\n\t\t}\n\t\tvar H = \"\", ROWS = ws[\"!rows\"]||[];\n\t\tfor(R = 0; R < range.s.r; ++R) {\n\t\t\tH = ROWS[R] ? ' table:style-name=\"ro' + ROWS[R].ods + '\"' : \"\";\n\t\t\to.push('        <table:table-row' + H + '></table:table-row>\\n');\n\t\t}\n\t\tfor(; R <= range.e.r; ++R) {\n\t\t\tH = ROWS[R] ? ' table:style-name=\"ro' + ROWS[R].ods + '\"' : \"\";\n\t\t\to.push('        <table:table-row' + H + '>\\n');\n\t\t\tfor(C=0; C < range.s.c; ++C) o.push(null_cell_xml);\n\t\t\tfor(; C <= range.e.c; ++C) {\n\t\t\t\tvar skip = false, ct = {}, textp = \"\";\n\t\t\t\tfor(mi = 0; mi != marr.length; ++mi) {\n\t\t\t\t\tif(marr[mi].s.c > C) continue;\n\t\t\t\t\tif(marr[mi].s.r > R) continue;\n\t\t\t\t\tif(marr[mi].e.c < C) continue;\n\t\t\t\t\tif(marr[mi].e.r < R) continue;\n\t\t\t\t\tif(marr[mi].s.c != C || marr[mi].s.r != R) skip = true;\n\t\t\t\t\tct['table:number-columns-spanned'] = (marr[mi].e.c - marr[mi].s.c + 1);\n\t\t\t\t\tct['table:number-rows-spanned'] =    (marr[mi].e.r - marr[mi].s.r + 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(skip) { o.push(covered_cell_xml); continue; }\n\t\t\t\tvar ref = encode_cell({r:R, c:C}), cell = dense ? (ws[R]||[])[C]: ws[ref];\n\t\t\t\tif(cell && cell.f) {\n\t\t\t\t\tct['table:formula'] = escapexml(csf_to_ods_formula(cell.f));\n\t\t\t\t\tif(cell.F) {\n\t\t\t\t\t\tif(cell.F.slice(0, ref.length) == ref) {\n\t\t\t\t\t\t\tvar _Fref = decode_range(cell.F);\n\t\t\t\t\t\t\tct['table:number-matrix-columns-spanned'] = (_Fref.e.c - _Fref.s.c + 1);\n\t\t\t\t\t\t\tct['table:number-matrix-rows-spanned'] =    (_Fref.e.r - _Fref.s.r + 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(!cell) { o.push(null_cell_xml); continue; }\n\t\t\t\tswitch(cell.t) {\n\t\t\t\t\tcase 'b':\n\t\t\t\t\t\ttextp = (cell.v ? 'TRUE' : 'FALSE');\n\t\t\t\t\t\tct['office:value-type'] = \"boolean\";\n\t\t\t\t\t\tct['office:boolean-value'] = (cell.v ? 'true' : 'false');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'n':\n\t\t\t\t\t\ttextp = (cell.w||String(cell.v||0));\n\t\t\t\t\t\tct['office:value-type'] = \"float\";\n\t\t\t\t\t\tct['office:value'] = (cell.v||0);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 's': case 'str':\n\t\t\t\t\t\ttextp = cell.v == null ? \"\" : cell.v;\n\t\t\t\t\t\tct['office:value-type'] = \"string\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\ttextp = (cell.w||(parseDate(cell.v).toISOString()));\n\t\t\t\t\t\tct['office:value-type'] = \"date\";\n\t\t\t\t\t\tct['office:date-value'] = (parseDate(cell.v).toISOString());\n\t\t\t\t\t\tct['table:style-name'] = \"ce1\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t//case 'e':\n\t\t\t\t\tdefault: o.push(null_cell_xml); continue;\n\t\t\t\t}\n\t\t\t\tvar text_p = write_text_p(textp);\n\t\t\t\tif(cell.l && cell.l.Target) {\n\t\t\t\t\tvar _tgt = cell.l.Target;\n\t\t\t\t\t_tgt = _tgt.charAt(0) == \"#\" ? \"#\" + csf_to_ods_3D(_tgt.slice(1)) : _tgt;\n\t\t\t\t\t// TODO: choose correct parent path format based on link delimiters\n\t\t\t\t\tif(_tgt.charAt(0) != \"#\" && !_tgt.match(/^\\w+:/)) _tgt = '../' + _tgt;\n\t\t\t\t\ttext_p = writextag('text:a', text_p, {'xlink:href': _tgt.replace(/&/g, \"&amp;\")});\n\t\t\t\t}\n\t\t\t\to.push('          ' + writextag('table:table-cell', writextag('text:p', text_p, {}), ct) + '\\n');\n\t\t\t}\n\t\t\to.push('        </table:table-row>\\n');\n\t\t}\n\t\to.push('      </table:table>\\n');\n\t\treturn o.join(\"\");\n\t};\n\n\tvar write_automatic_styles_ods = function(o/*:Array<string>*/, wb) {\n\t\to.push(' <office:automatic-styles>\\n');\n\n\t\to.push('  <number:date-style style:name=\"N37\" number:automatic-order=\"true\">\\n');\n\t\to.push('   <number:month number:style=\"long\"/>\\n');\n\t\to.push('   <number:text>/</number:text>\\n');\n\t\to.push('   <number:day number:style=\"long\"/>\\n');\n\t\to.push('   <number:text>/</number:text>\\n');\n\t\to.push('   <number:year/>\\n');\n\t\to.push('  </number:date-style>\\n');\n\n\t\t/* column styles */\n\t\tvar cidx = 0;\n\t\twb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) {\n\t\t\tif(!ws) return;\n\t\t\tif(ws[\"!cols\"]) {\n\t\t\t\tfor(var C = 0; C < ws[\"!cols\"].length; ++C) if(ws[\"!cols\"][C]) {\n\t\t\t\t\tvar colobj = ws[\"!cols\"][C];\n\t\t\t\t\tif(colobj.width == null && colobj.wpx == null && colobj.wch == null) continue;\n\t\t\t\t\tprocess_col(colobj);\n\t\t\t\t\tcolobj.ods = cidx;\n\t\t\t\t\tvar w = ws[\"!cols\"][C].wpx + \"px\";\n\t\t\t\t\to.push('  <style:style style:name=\"co' + cidx + '\" style:family=\"table-column\">\\n');\n\t\t\t\t\to.push('   <style:table-column-properties fo:break-before=\"auto\" style:column-width=\"' + w + '\"/>\\n');\n\t\t\t\t\to.push('  </style:style>\\n');\n\t\t\t\t\t++cidx;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t/* row styles */\n\t\tvar ridx = 0;\n\t\twb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) {\n\t\t\tif(!ws) return;\n\t\t\tif(ws[\"!rows\"]) {\n\t\t\t\tfor(var R = 0; R < ws[\"!rows\"].length; ++R) if(ws[\"!rows\"][R]) {\n\t\t\t\t\tws[\"!rows\"][R].ods = ridx;\n\t\t\t\t\tvar h = ws[\"!rows\"][R].hpx + \"px\";\n\t\t\t\t\to.push('  <style:style style:name=\"ro' + ridx + '\" style:family=\"table-row\">\\n');\n\t\t\t\t\to.push('   <style:table-row-properties fo:break-before=\"auto\" style:row-height=\"' + h + '\"/>\\n');\n\t\t\t\t\to.push('  </style:style>\\n');\n\t\t\t\t\t++ridx;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t/* table */\n\t\to.push('  <style:style style:name=\"ta1\" style:family=\"table\" style:master-page-name=\"mp1\">\\n');\n\t\to.push('   <style:table-properties table:display=\"true\" style:writing-mode=\"lr-tb\"/>\\n');\n\t\to.push('  </style:style>\\n');\n\n\t\t/* table cells, text */\n\t\to.push('  <style:style style:name=\"ce1\" style:family=\"table-cell\" style:parent-style-name=\"Default\" style:data-style-name=\"N37\"/>\\n');\n\n\t\t/* page-layout */\n\n\t\to.push(' </office:automatic-styles>\\n');\n\t};\n\n\treturn function wcx(wb, opts) {\n\t\tvar o = [XML_HEADER];\n\t\t/* 3.1.3.2 */\n\t\tvar attr = wxt_helper({\n\t\t\t'xmlns:office':       \"urn:oasis:names:tc:opendocument:xmlns:office:1.0\",\n\t\t\t'xmlns:table':        \"urn:oasis:names:tc:opendocument:xmlns:table:1.0\",\n\t\t\t'xmlns:style':        \"urn:oasis:names:tc:opendocument:xmlns:style:1.0\",\n\t\t\t'xmlns:text':         \"urn:oasis:names:tc:opendocument:xmlns:text:1.0\",\n\t\t\t'xmlns:draw':         \"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0\",\n\t\t\t'xmlns:fo':           \"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0\",\n\t\t\t'xmlns:xlink':        \"http://www.w3.org/1999/xlink\",\n\t\t\t'xmlns:dc':           \"http://purl.org/dc/elements/1.1/\",\n\t\t\t'xmlns:meta':         \"urn:oasis:names:tc:opendocument:xmlns:meta:1.0\",\n\t\t\t'xmlns:number':       \"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0\",\n\t\t\t'xmlns:presentation': \"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0\",\n\t\t\t'xmlns:svg':          \"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0\",\n\t\t\t'xmlns:chart':        \"urn:oasis:names:tc:opendocument:xmlns:chart:1.0\",\n\t\t\t'xmlns:dr3d':         \"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0\",\n\t\t\t'xmlns:math':         \"http://www.w3.org/1998/Math/MathML\",\n\t\t\t'xmlns:form':         \"urn:oasis:names:tc:opendocument:xmlns:form:1.0\",\n\t\t\t'xmlns:script':       \"urn:oasis:names:tc:opendocument:xmlns:script:1.0\",\n\t\t\t'xmlns:ooo':          \"http://openoffice.org/2004/office\",\n\t\t\t'xmlns:ooow':         \"http://openoffice.org/2004/writer\",\n\t\t\t'xmlns:oooc':         \"http://openoffice.org/2004/calc\",\n\t\t\t'xmlns:dom':          \"http://www.w3.org/2001/xml-events\",\n\t\t\t'xmlns:xforms':       \"http://www.w3.org/2002/xforms\",\n\t\t\t'xmlns:xsd':          \"http://www.w3.org/2001/XMLSchema\",\n\t\t\t'xmlns:xsi':          \"http://www.w3.org/2001/XMLSchema-instance\",\n\t\t\t'xmlns:sheet':        \"urn:oasis:names:tc:opendocument:sh33tjs:1.0\",\n\t\t\t'xmlns:rpt':          \"http://openoffice.org/2005/report\",\n\t\t\t'xmlns:of':           \"urn:oasis:names:tc:opendocument:xmlns:of:1.2\",\n\t\t\t'xmlns:xhtml':        \"http://www.w3.org/1999/xhtml\",\n\t\t\t'xmlns:grddl':        \"http://www.w3.org/2003/g/data-view#\",\n\t\t\t'xmlns:tableooo':     \"http://openoffice.org/2009/table\",\n\t\t\t'xmlns:drawooo':      \"http://openoffice.org/2010/draw\",\n\t\t\t'xmlns:calcext':      \"urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0\",\n\t\t\t'xmlns:loext':        \"urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0\",\n\t\t\t'xmlns:field':        \"urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0\",\n\t\t\t'xmlns:formx':        \"urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0\",\n\t\t\t'xmlns:css3t':        \"http://www.w3.org/TR/css3-text/\",\n\t\t\t'office:version':     \"1.2\"\n\t\t});\n\n\t\tvar fods = wxt_helper({\n\t\t\t'xmlns:config':    \"urn:oasis:names:tc:opendocument:xmlns:config:1.0\",\n\t\t\t'office:mimetype': \"application/vnd.oasis.opendocument.spreadsheet\"\n\t\t});\n\n\t\tif(opts.bookType == \"fods\") {\n\t\t\to.push('<office:document' + attr + fods + '>\\n');\n\t\t\to.push(write_meta_ods().replace(/office:document-meta/g, \"office:meta\"));\n\t\t\t// TODO: settings (equiv of settings.xml for ODS)\n\t\t} else o.push('<office:document-content' + attr  + '>\\n');\n\t\t// o.push('  <office:scripts/>\\n');\n\t\twrite_automatic_styles_ods(o, wb);\n\t\to.push('  <office:body>\\n');\n\t\to.push('    <office:spreadsheet>\\n');\n\t\tfor(var i = 0; i != wb.SheetNames.length; ++i) o.push(write_ws(wb.Sheets[wb.SheetNames[i]], wb, i, opts));\n\t\to.push('    </office:spreadsheet>\\n');\n\t\to.push('  </office:body>\\n');\n\t\tif(opts.bookType == \"fods\") o.push('</office:document>');\n\t\telse o.push('</office:document-content>');\n\t\treturn o.join(\"\");\n\t};\n})();\n\nfunction write_ods(wb/*:any*/, opts/*:any*/) {\n\tif(opts.bookType == \"fods\") return write_content_ods(wb, opts);\n\n\tvar zip = zip_new();\n\tvar f = \"\";\n\n\tvar manifest/*:Array<Array<string> >*/ = [];\n\tvar rdf/*:Array<[string, string]>*/ = [];\n\n\t/* Part 3 Section 3.3 MIME Media Type */\n\tf = \"mimetype\";\n\tzip_add_file(zip, f, \"application/vnd.oasis.opendocument.spreadsheet\");\n\n\t/* Part 1 Section 2.2 Documents */\n\tf = \"content.xml\";\n\tzip_add_file(zip, f, write_content_ods(wb, opts));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"ContentFile\"]);\n\n\t/* TODO: these are hard-coded styles to satiate excel */\n\tf = \"styles.xml\";\n\tzip_add_file(zip, f, write_styles_ods(wb, opts));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"StylesFile\"]);\n\n\t/* TODO: this is hard-coded to satiate excel */\n\tf = \"meta.xml\";\n\tzip_add_file(zip, f, XML_HEADER + write_meta_ods(/*::wb, opts*/));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"MetadataFile\"]);\n\n\t/* Part 3 Section 6 Metadata Manifest File */\n\tf = \"manifest.rdf\";\n\tzip_add_file(zip, f, write_rdf(rdf/*, opts*/));\n\tmanifest.push([f, \"application/rdf+xml\"]);\n\n\t/* Part 3 Section 4 Manifest File */\n\tf = \"META-INF/manifest.xml\";\n\tzip_add_file(zip, f, write_manifest(manifest/*, opts*/));\n\n\treturn zip;\n}\n\n/*! sheetjs (C) 2013-present SheetJS -- http://sheetjs.com */\nfunction u8_to_dataview(array) {\n  return new DataView(array.buffer, array.byteOffset, array.byteLength);\n}\nfunction u8str(u8) {\n  return typeof TextDecoder != \"undefined\" ? new TextDecoder().decode(u8) : utf8read(a2s(u8));\n}\nfunction stru8(str) {\n  return typeof TextEncoder != \"undefined\" ? new TextEncoder().encode(str) : s2a(utf8write(str));\n}\nfunction u8contains(body, search) {\n  outer:\n    for (var L = 0; L <= body.length - search.length; ++L) {\n      for (var j = 0; j < search.length; ++j)\n        if (body[L + j] != search[j])\n          continue outer;\n      return true;\n    }\n  return false;\n}\nfunction u8concat(u8a) {\n  var len = u8a.reduce(function(acc, x) {\n    return acc + x.length;\n  }, 0);\n  var out = new Uint8Array(len);\n  var off = 0;\n  u8a.forEach(function(u8) {\n    out.set(u8, off);\n    off += u8.length;\n  });\n  return out;\n}\nfunction popcnt(x) {\n  x -= x >> 1 & 1431655765;\n  x = (x & 858993459) + (x >> 2 & 858993459);\n  return (x + (x >> 4) & 252645135) * 16843009 >>> 24;\n}\nfunction readDecimal128LE(buf, offset) {\n  var exp = (buf[offset + 15] & 127) << 7 | buf[offset + 14] >> 1;\n  var mantissa = buf[offset + 14] & 1;\n  for (var j = offset + 13; j >= offset; --j)\n    mantissa = mantissa * 256 + buf[j];\n  return (buf[offset + 15] & 128 ? -mantissa : mantissa) * Math.pow(10, exp - 6176);\n}\nfunction writeDecimal128LE(buf, offset, value) {\n  var exp = Math.floor(value == 0 ? 0 : Math.LOG10E * Math.log(Math.abs(value))) + 6176 - 20;\n  var mantissa = value / Math.pow(10, exp - 6176);\n  buf[offset + 15] |= exp >> 7;\n  buf[offset + 14] |= (exp & 127) << 1;\n  for (var i = 0; mantissa >= 1; ++i, mantissa /= 256)\n    buf[offset + i] = mantissa & 255;\n  buf[offset + 15] |= value >= 0 ? 0 : 128;\n}\nfunction parse_varint49(buf, ptr) {\n  var l = ptr ? ptr[0] : 0;\n  var usz = buf[l] & 127;\n  varint:\n    if (buf[l++] >= 128) {\n      usz |= (buf[l] & 127) << 7;\n      if (buf[l++] < 128)\n        break varint;\n      usz |= (buf[l] & 127) << 14;\n      if (buf[l++] < 128)\n        break varint;\n      usz |= (buf[l] & 127) << 21;\n      if (buf[l++] < 128)\n        break varint;\n      usz += (buf[l] & 127) * Math.pow(2, 28);\n      ++l;\n      if (buf[l++] < 128)\n        break varint;\n      usz += (buf[l] & 127) * Math.pow(2, 35);\n      ++l;\n      if (buf[l++] < 128)\n        break varint;\n      usz += (buf[l] & 127) * Math.pow(2, 42);\n      ++l;\n      if (buf[l++] < 128)\n        break varint;\n    }\n  if (ptr)\n    ptr[0] = l;\n  return usz;\n}\nfunction write_varint49(v) {\n  var usz = new Uint8Array(7);\n  usz[0] = v & 127;\n  var L = 1;\n  sz:\n    if (v > 127) {\n      usz[L - 1] |= 128;\n      usz[L] = v >> 7 & 127;\n      ++L;\n      if (v <= 16383)\n        break sz;\n      usz[L - 1] |= 128;\n      usz[L] = v >> 14 & 127;\n      ++L;\n      if (v <= 2097151)\n        break sz;\n      usz[L - 1] |= 128;\n      usz[L] = v >> 21 & 127;\n      ++L;\n      if (v <= 268435455)\n        break sz;\n      usz[L - 1] |= 128;\n      usz[L] = v / 256 >>> 21 & 127;\n      ++L;\n      if (v <= 34359738367)\n        break sz;\n      usz[L - 1] |= 128;\n      usz[L] = v / 65536 >>> 21 & 127;\n      ++L;\n      if (v <= 4398046511103)\n        break sz;\n      usz[L - 1] |= 128;\n      usz[L] = v / 16777216 >>> 21 & 127;\n      ++L;\n    }\n  return usz.slice(0, L);\n}\nfunction varint_to_i32(buf) {\n  var l = 0, i32 = buf[l] & 127;\n  varint:\n    if (buf[l++] >= 128) {\n      i32 |= (buf[l] & 127) << 7;\n      if (buf[l++] < 128)\n        break varint;\n      i32 |= (buf[l] & 127) << 14;\n      if (buf[l++] < 128)\n        break varint;\n      i32 |= (buf[l] & 127) << 21;\n      if (buf[l++] < 128)\n        break varint;\n      i32 |= (buf[l] & 127) << 28;\n    }\n  return i32;\n}\nfunction parse_shallow(buf) {\n  var out = [], ptr = [0];\n  while (ptr[0] < buf.length) {\n    var off = ptr[0];\n    var num = parse_varint49(buf, ptr);\n    var type = num & 7;\n    num = Math.floor(num / 8);\n    var len = 0;\n    var res;\n    if (num == 0)\n      break;\n    switch (type) {\n      case 0:\n        {\n          var l = ptr[0];\n          while (buf[ptr[0]++] >= 128)\n            ;\n          res = buf.slice(l, ptr[0]);\n        }\n        break;\n      case 5:\n        len = 4;\n        res = buf.slice(ptr[0], ptr[0] + len);\n        ptr[0] += len;\n        break;\n      case 1:\n        len = 8;\n        res = buf.slice(ptr[0], ptr[0] + len);\n        ptr[0] += len;\n        break;\n      case 2:\n        len = parse_varint49(buf, ptr);\n        res = buf.slice(ptr[0], ptr[0] + len);\n        ptr[0] += len;\n        break;\n      case 3:\n      case 4:\n      default:\n        throw new Error(\"PB Type \".concat(type, \" for Field \").concat(num, \" at offset \").concat(off));\n    }\n    var v = { data: res, type: type };\n    if (out[num] == null)\n      out[num] = [v];\n    else\n      out[num].push(v);\n  }\n  return out;\n}\nfunction write_shallow(proto) {\n  var out = [];\n  proto.forEach(function(field, idx) {\n    field.forEach(function(item) {\n      if (!item.data)\n        return;\n      out.push(write_varint49(idx * 8 + item.type));\n      if (item.type == 2)\n        out.push(write_varint49(item.data.length));\n      out.push(item.data);\n    });\n  });\n  return u8concat(out);\n}\nfunction mappa(data, cb) {\n  return (data == null ? void 0 : data.map(function(d) {\n    return cb(d.data);\n  })) || [];\n}\nfunction parse_iwa_file(buf) {\n  var _a;\n  var out = [], ptr = [0];\n  while (ptr[0] < buf.length) {\n    var len = parse_varint49(buf, ptr);\n    var ai = parse_shallow(buf.slice(ptr[0], ptr[0] + len));\n    ptr[0] += len;\n    var res = {\n      id: varint_to_i32(ai[1][0].data),\n      messages: []\n    };\n    ai[2].forEach(function(b) {\n      var mi = parse_shallow(b.data);\n      var fl = varint_to_i32(mi[3][0].data);\n      res.messages.push({\n        meta: mi,\n        data: buf.slice(ptr[0], ptr[0] + fl)\n      });\n      ptr[0] += fl;\n    });\n    if ((_a = ai[3]) == null ? void 0 : _a[0])\n      res.merge = varint_to_i32(ai[3][0].data) >>> 0 > 0;\n    out.push(res);\n  }\n  return out;\n}\nfunction write_iwa_file(ias) {\n  var bufs = [];\n  ias.forEach(function(ia) {\n    var ai = [];\n    ai[1] = [{ data: write_varint49(ia.id), type: 0 }];\n    ai[2] = [];\n    if (ia.merge != null)\n      ai[3] = [{ data: write_varint49(+!!ia.merge), type: 0 }];\n    var midata = [];\n    ia.messages.forEach(function(mi) {\n      midata.push(mi.data);\n      mi.meta[3] = [{ type: 0, data: write_varint49(mi.data.length) }];\n      ai[2].push({ data: write_shallow(mi.meta), type: 2 });\n    });\n    var aipayload = write_shallow(ai);\n    bufs.push(write_varint49(aipayload.length));\n    bufs.push(aipayload);\n    midata.forEach(function(mid) {\n      return bufs.push(mid);\n    });\n  });\n  return u8concat(bufs);\n}\nfunction parse_snappy_chunk(type, buf) {\n  if (type != 0)\n    throw new Error(\"Unexpected Snappy chunk type \".concat(type));\n  var ptr = [0];\n  var usz = parse_varint49(buf, ptr);\n  var chunks = [];\n  while (ptr[0] < buf.length) {\n    var tag = buf[ptr[0]] & 3;\n    if (tag == 0) {\n      var len = buf[ptr[0]++] >> 2;\n      if (len < 60)\n        ++len;\n      else {\n        var c = len - 59;\n        len = buf[ptr[0]];\n        if (c > 1)\n          len |= buf[ptr[0] + 1] << 8;\n        if (c > 2)\n          len |= buf[ptr[0] + 2] << 16;\n        if (c > 3)\n          len |= buf[ptr[0] + 3] << 24;\n        len >>>= 0;\n        len++;\n        ptr[0] += c;\n      }\n      chunks.push(buf.slice(ptr[0], ptr[0] + len));\n      ptr[0] += len;\n      continue;\n    } else {\n      var offset = 0, length = 0;\n      if (tag == 1) {\n        length = (buf[ptr[0]] >> 2 & 7) + 4;\n        offset = (buf[ptr[0]++] & 224) << 3;\n        offset |= buf[ptr[0]++];\n      } else {\n        length = (buf[ptr[0]++] >> 2) + 1;\n        if (tag == 2) {\n          offset = buf[ptr[0]] | buf[ptr[0] + 1] << 8;\n          ptr[0] += 2;\n        } else {\n          offset = (buf[ptr[0]] | buf[ptr[0] + 1] << 8 | buf[ptr[0] + 2] << 16 | buf[ptr[0] + 3] << 24) >>> 0;\n          ptr[0] += 4;\n        }\n      }\n      chunks = [u8concat(chunks)];\n      if (offset == 0)\n        throw new Error(\"Invalid offset 0\");\n      if (offset > chunks[0].length)\n        throw new Error(\"Invalid offset beyond length\");\n      if (length >= offset) {\n        chunks.push(chunks[0].slice(-offset));\n        length -= offset;\n        while (length >= chunks[chunks.length - 1].length) {\n          chunks.push(chunks[chunks.length - 1]);\n          length -= chunks[chunks.length - 1].length;\n        }\n      }\n      chunks.push(chunks[0].slice(-offset, -offset + length));\n    }\n  }\n  var o = u8concat(chunks);\n  if (o.length != usz)\n    throw new Error(\"Unexpected length: \".concat(o.length, \" != \").concat(usz));\n  return o;\n}\nfunction decompress_iwa_file(buf) {\n  var out = [];\n  var l = 0;\n  while (l < buf.length) {\n    var t = buf[l++];\n    var len = buf[l] | buf[l + 1] << 8 | buf[l + 2] << 16;\n    l += 3;\n    out.push(parse_snappy_chunk(t, buf.slice(l, l + len)));\n    l += len;\n  }\n  if (l !== buf.length)\n    throw new Error(\"data is not a valid framed stream!\");\n  return u8concat(out);\n}\nfunction compress_iwa_file(buf) {\n  var out = [];\n  var l = 0;\n  while (l < buf.length) {\n    var c = Math.min(buf.length - l, 268435455);\n    var frame = new Uint8Array(4);\n    out.push(frame);\n    var usz = write_varint49(c);\n    var L = usz.length;\n    out.push(usz);\n    if (c <= 60) {\n      L++;\n      out.push(new Uint8Array([c - 1 << 2]));\n    } else if (c <= 256) {\n      L += 2;\n      out.push(new Uint8Array([240, c - 1 & 255]));\n    } else if (c <= 65536) {\n      L += 3;\n      out.push(new Uint8Array([244, c - 1 & 255, c - 1 >> 8 & 255]));\n    } else if (c <= 16777216) {\n      L += 4;\n      out.push(new Uint8Array([248, c - 1 & 255, c - 1 >> 8 & 255, c - 1 >> 16 & 255]));\n    } else if (c <= 4294967296) {\n      L += 5;\n      out.push(new Uint8Array([252, c - 1 & 255, c - 1 >> 8 & 255, c - 1 >> 16 & 255, c - 1 >>> 24 & 255]));\n    }\n    out.push(buf.slice(l, l + c));\n    L += c;\n    frame[0] = 0;\n    frame[1] = L & 255;\n    frame[2] = L >> 8 & 255;\n    frame[3] = L >> 16 & 255;\n    l += c;\n  }\n  return u8concat(out);\n}\nfunction parse_old_storage(buf, sst, rsst, v) {\n  var dv = u8_to_dataview(buf);\n  var flags = dv.getUint32(4, true);\n  var data_offset = (v > 1 ? 12 : 8) + popcnt(flags & (v > 1 ? 3470 : 398)) * 4;\n  var ridx = -1, sidx = -1, ieee = NaN, dt = new Date(2001, 0, 1);\n  if (flags & 512) {\n    ridx = dv.getUint32(data_offset, true);\n    data_offset += 4;\n  }\n  data_offset += popcnt(flags & (v > 1 ? 12288 : 4096)) * 4;\n  if (flags & 16) {\n    sidx = dv.getUint32(data_offset, true);\n    data_offset += 4;\n  }\n  if (flags & 32) {\n    ieee = dv.getFloat64(data_offset, true);\n    data_offset += 8;\n  }\n  if (flags & 64) {\n    dt.setTime(dt.getTime() + dv.getFloat64(data_offset, true) * 1e3);\n    data_offset += 8;\n  }\n  var ret;\n  switch (buf[2]) {\n    case 0:\n      break;\n    case 2:\n      ret = { t: \"n\", v: ieee };\n      break;\n    case 3:\n      ret = { t: \"s\", v: sst[sidx] };\n      break;\n    case 5:\n      ret = { t: \"d\", v: dt };\n      break;\n    case 6:\n      ret = { t: \"b\", v: ieee > 0 };\n      break;\n    case 7:\n      ret = { t: \"n\", v: ieee / 86400 };\n      break;\n    case 8:\n      ret = { t: \"e\", v: 0 };\n      break;\n    case 9:\n      {\n        if (ridx > -1)\n          ret = { t: \"s\", v: rsst[ridx] };\n        else if (sidx > -1)\n          ret = { t: \"s\", v: sst[sidx] };\n        else if (!isNaN(ieee))\n          ret = { t: \"n\", v: ieee };\n        else\n          throw new Error(\"Unsupported cell type \".concat(buf.slice(0, 4)));\n      }\n      break;\n    default:\n      throw new Error(\"Unsupported cell type \".concat(buf.slice(0, 4)));\n  }\n  return ret;\n}\nfunction parse_new_storage(buf, sst, rsst) {\n  var dv = u8_to_dataview(buf);\n  var flags = dv.getUint32(8, true);\n  var data_offset = 12;\n  var ridx = -1, sidx = -1, d128 = NaN, ieee = NaN, dt = new Date(2001, 0, 1);\n  if (flags & 1) {\n    d128 = readDecimal128LE(buf, data_offset);\n    data_offset += 16;\n  }\n  if (flags & 2) {\n    ieee = dv.getFloat64(data_offset, true);\n    data_offset += 8;\n  }\n  if (flags & 4) {\n    dt.setTime(dt.getTime() + dv.getFloat64(data_offset, true) * 1e3);\n    data_offset += 8;\n  }\n  if (flags & 8) {\n    sidx = dv.getUint32(data_offset, true);\n    data_offset += 4;\n  }\n  if (flags & 16) {\n    ridx = dv.getUint32(data_offset, true);\n    data_offset += 4;\n  }\n  var ret;\n  switch (buf[1]) {\n    case 0:\n      break;\n    case 2:\n      ret = { t: \"n\", v: d128 };\n      break;\n    case 3:\n      ret = { t: \"s\", v: sst[sidx] };\n      break;\n    case 5:\n      ret = { t: \"d\", v: dt };\n      break;\n    case 6:\n      ret = { t: \"b\", v: ieee > 0 };\n      break;\n    case 7:\n      ret = { t: \"n\", v: ieee / 86400 };\n      break;\n    case 8:\n      ret = { t: \"e\", v: 0 };\n      break;\n    case 9:\n      {\n        if (ridx > -1)\n          ret = { t: \"s\", v: rsst[ridx] };\n        else\n          throw new Error(\"Unsupported cell type \".concat(buf[1], \" : \").concat(flags & 31, \" : \").concat(buf.slice(0, 4)));\n      }\n      break;\n    case 10:\n      ret = { t: \"n\", v: d128 };\n      break;\n    default:\n      throw new Error(\"Unsupported cell type \".concat(buf[1], \" : \").concat(flags & 31, \" : \").concat(buf.slice(0, 4)));\n  }\n  return ret;\n}\nfunction write_new_storage(cell, sst) {\n  var out = new Uint8Array(32), dv = u8_to_dataview(out), l = 12, flags = 0;\n  out[0] = 5;\n  switch (cell.t) {\n    case \"n\":\n      out[1] = 2;\n      writeDecimal128LE(out, l, cell.v);\n      flags |= 1;\n      l += 16;\n      break;\n    case \"b\":\n      out[1] = 6;\n      dv.setFloat64(l, cell.v ? 1 : 0, true);\n      flags |= 2;\n      l += 8;\n      break;\n    case \"s\":\n      if (sst.indexOf(cell.v) == -1)\n        throw new Error(\"Value \".concat(cell.v, \" missing from SST!\"));\n      out[1] = 3;\n      dv.setUint32(l, sst.indexOf(cell.v), true);\n      flags |= 8;\n      l += 4;\n      break;\n    default:\n      throw \"unsupported cell type \" + cell.t;\n  }\n  dv.setUint32(8, flags, true);\n  return out.slice(0, l);\n}\nfunction write_old_storage(cell, sst) {\n  var out = new Uint8Array(32), dv = u8_to_dataview(out), l = 12, flags = 0;\n  out[0] = 3;\n  switch (cell.t) {\n    case \"n\":\n      out[2] = 2;\n      dv.setFloat64(l, cell.v, true);\n      flags |= 32;\n      l += 8;\n      break;\n    case \"b\":\n      out[2] = 6;\n      dv.setFloat64(l, cell.v ? 1 : 0, true);\n      flags |= 32;\n      l += 8;\n      break;\n    case \"s\":\n      if (sst.indexOf(cell.v) == -1)\n        throw new Error(\"Value \".concat(cell.v, \" missing from SST!\"));\n      out[2] = 3;\n      dv.setUint32(l, sst.indexOf(cell.v), true);\n      flags |= 16;\n      l += 4;\n      break;\n    default:\n      throw \"unsupported cell type \" + cell.t;\n  }\n  dv.setUint32(4, flags, true);\n  return out.slice(0, l);\n}\nfunction parse_cell_storage(buf, sst, rsst) {\n  switch (buf[0]) {\n    case 0:\n    case 1:\n    case 2:\n    case 3:\n      return parse_old_storage(buf, sst, rsst, buf[0]);\n    case 5:\n      return parse_new_storage(buf, sst, rsst);\n    default:\n      throw new Error(\"Unsupported payload version \".concat(buf[0]));\n  }\n}\nfunction parse_TSP_Reference(buf) {\n  var pb = parse_shallow(buf);\n  return parse_varint49(pb[1][0].data);\n}\nfunction write_TSP_Reference(idx) {\n  var out = [];\n  out[1] = [{ type: 0, data: write_varint49(idx) }];\n  return write_shallow(out);\n}\nfunction parse_TST_TableDataList(M, root) {\n  var pb = parse_shallow(root.data);\n  var type = varint_to_i32(pb[1][0].data);\n  var entries = pb[3];\n  var data = [];\n  (entries || []).forEach(function(entry) {\n    var le = parse_shallow(entry.data);\n    var key = varint_to_i32(le[1][0].data) >>> 0;\n    switch (type) {\n      case 1:\n        data[key] = u8str(le[3][0].data);\n        break;\n      case 8:\n        {\n          var rt = M[parse_TSP_Reference(le[9][0].data)][0];\n          var rtp = parse_shallow(rt.data);\n          var rtpref = M[parse_TSP_Reference(rtp[1][0].data)][0];\n          var mtype = varint_to_i32(rtpref.meta[1][0].data);\n          if (mtype != 2001)\n            throw new Error(\"2000 unexpected reference to \".concat(mtype));\n          var tswpsa = parse_shallow(rtpref.data);\n          data[key] = tswpsa[3].map(function(x) {\n            return u8str(x.data);\n          }).join(\"\");\n        }\n        break;\n    }\n  });\n  return data;\n}\nfunction parse_TST_TileRowInfo(u8, type) {\n  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;\n  var pb = parse_shallow(u8);\n  var R = varint_to_i32(pb[1][0].data) >>> 0;\n  var cnt = varint_to_i32(pb[2][0].data) >>> 0;\n  var wide_offsets = ((_b = (_a = pb[8]) == null ? void 0 : _a[0]) == null ? void 0 : _b.data) && varint_to_i32(pb[8][0].data) > 0 || false;\n  var used_storage_u8, used_storage;\n  if (((_d = (_c = pb[7]) == null ? void 0 : _c[0]) == null ? void 0 : _d.data) && type != 0) {\n    used_storage_u8 = (_f = (_e = pb[7]) == null ? void 0 : _e[0]) == null ? void 0 : _f.data;\n    used_storage = (_h = (_g = pb[6]) == null ? void 0 : _g[0]) == null ? void 0 : _h.data;\n  } else if (((_j = (_i = pb[4]) == null ? void 0 : _i[0]) == null ? void 0 : _j.data) && type != 1) {\n    used_storage_u8 = (_l = (_k = pb[4]) == null ? void 0 : _k[0]) == null ? void 0 : _l.data;\n    used_storage = (_n = (_m = pb[3]) == null ? void 0 : _m[0]) == null ? void 0 : _n.data;\n  } else\n    throw \"NUMBERS Tile missing \".concat(type, \" cell storage\");\n  var width = wide_offsets ? 4 : 1;\n  var used_storage_offsets = u8_to_dataview(used_storage_u8);\n  var offsets = [];\n  for (var C = 0; C < used_storage_u8.length / 2; ++C) {\n    var off = used_storage_offsets.getUint16(C * 2, true);\n    if (off < 65535)\n      offsets.push([C, off]);\n  }\n  if (offsets.length != cnt)\n    throw \"Expected \".concat(cnt, \" cells, found \").concat(offsets.length);\n  var cells = [];\n  for (C = 0; C < offsets.length - 1; ++C)\n    cells[offsets[C][0]] = used_storage.subarray(offsets[C][1] * width, offsets[C + 1][1] * width);\n  if (offsets.length >= 1)\n    cells[offsets[offsets.length - 1][0]] = used_storage.subarray(offsets[offsets.length - 1][1] * width);\n  return { R: R, cells: cells };\n}\nfunction parse_TST_Tile(M, root) {\n  var _a;\n  var pb = parse_shallow(root.data);\n  var storage = ((_a = pb == null ? void 0 : pb[7]) == null ? void 0 : _a[0]) ? varint_to_i32(pb[7][0].data) >>> 0 > 0 ? 1 : 0 : -1;\n  var ri = mappa(pb[5], function(u8) {\n    return parse_TST_TileRowInfo(u8, storage);\n  });\n  return {\n    nrows: varint_to_i32(pb[4][0].data) >>> 0,\n    data: ri.reduce(function(acc, x) {\n      if (!acc[x.R])\n        acc[x.R] = [];\n      x.cells.forEach(function(cell, C) {\n        if (acc[x.R][C])\n          throw new Error(\"Duplicate cell r=\".concat(x.R, \" c=\").concat(C));\n        acc[x.R][C] = cell;\n      });\n      return acc;\n    }, [])\n  };\n}\nfunction parse_TST_TableModelArchive(M, root, ws) {\n  var _a;\n  var pb = parse_shallow(root.data);\n  var range = { s: { r: 0, c: 0 }, e: { r: 0, c: 0 } };\n  range.e.r = (varint_to_i32(pb[6][0].data) >>> 0) - 1;\n  if (range.e.r < 0)\n    throw new Error(\"Invalid row varint \".concat(pb[6][0].data));\n  range.e.c = (varint_to_i32(pb[7][0].data) >>> 0) - 1;\n  if (range.e.c < 0)\n    throw new Error(\"Invalid col varint \".concat(pb[7][0].data));\n  ws[\"!ref\"] = encode_range(range);\n  var store = parse_shallow(pb[4][0].data);\n  var sst = parse_TST_TableDataList(M, M[parse_TSP_Reference(store[4][0].data)][0]);\n  var rsst = ((_a = store[17]) == null ? void 0 : _a[0]) ? parse_TST_TableDataList(M, M[parse_TSP_Reference(store[17][0].data)][0]) : [];\n  var tile = parse_shallow(store[3][0].data);\n  var _R = 0;\n  tile[1].forEach(function(t) {\n    var tl = parse_shallow(t.data);\n    var ref = M[parse_TSP_Reference(tl[2][0].data)][0];\n    var mtype = varint_to_i32(ref.meta[1][0].data);\n    if (mtype != 6002)\n      throw new Error(\"6001 unexpected reference to \".concat(mtype));\n    var _tile = parse_TST_Tile(M, ref);\n    _tile.data.forEach(function(row, R) {\n      row.forEach(function(buf, C) {\n        var addr = encode_cell({ r: _R + R, c: C });\n        var res = parse_cell_storage(buf, sst, rsst);\n        if (res)\n          ws[addr] = res;\n      });\n    });\n    _R += _tile.nrows;\n  });\n}\nfunction parse_TST_TableInfoArchive(M, root) {\n  var pb = parse_shallow(root.data);\n  var out = { \"!ref\": \"A1\" };\n  var tableref = M[parse_TSP_Reference(pb[2][0].data)];\n  var mtype = varint_to_i32(tableref[0].meta[1][0].data);\n  if (mtype != 6001)\n    throw new Error(\"6000 unexpected reference to \".concat(mtype));\n  parse_TST_TableModelArchive(M, tableref[0], out);\n  return out;\n}\nfunction parse_TN_SheetArchive(M, root) {\n  var _a;\n  var pb = parse_shallow(root.data);\n  var out = {\n    name: ((_a = pb[1]) == null ? void 0 : _a[0]) ? u8str(pb[1][0].data) : \"\",\n    sheets: []\n  };\n  var shapeoffs = mappa(pb[2], parse_TSP_Reference);\n  shapeoffs.forEach(function(off) {\n    M[off].forEach(function(m) {\n      var mtype = varint_to_i32(m.meta[1][0].data);\n      if (mtype == 6e3)\n        out.sheets.push(parse_TST_TableInfoArchive(M, m));\n    });\n  });\n  return out;\n}\nfunction parse_TN_DocumentArchive(M, root) {\n  var out = book_new();\n  var pb = parse_shallow(root.data);\n  var sheetoffs = mappa(pb[1], parse_TSP_Reference);\n  sheetoffs.forEach(function(off) {\n    M[off].forEach(function(m) {\n      var mtype = varint_to_i32(m.meta[1][0].data);\n      if (mtype == 2) {\n        var root2 = parse_TN_SheetArchive(M, m);\n        root2.sheets.forEach(function(sheet, idx) {\n          book_append_sheet(out, sheet, idx == 0 ? root2.name : root2.name + \"_\" + idx, true);\n        });\n      }\n    });\n  });\n  if (out.SheetNames.length == 0)\n    throw new Error(\"Empty NUMBERS file\");\n  return out;\n}\nfunction parse_numbers_iwa(cfb) {\n  var _a, _b, _c, _d;\n  var M = {}, indices = [];\n  cfb.FullPaths.forEach(function(p) {\n    if (p.match(/\\.iwpv2/))\n      throw new Error(\"Unsupported password protection\");\n  });\n  cfb.FileIndex.forEach(function(s) {\n    if (!s.name.match(/\\.iwa$/))\n      return;\n    var o;\n    try {\n      o = decompress_iwa_file(s.content);\n    } catch (e) {\n      return console.log(\"?? \" + s.content.length + \" \" + (e.message || e));\n    }\n    var packets;\n    try {\n      packets = parse_iwa_file(o);\n    } catch (e) {\n      return console.log(\"## \" + (e.message || e));\n    }\n    packets.forEach(function(packet) {\n      M[packet.id] = packet.messages;\n      indices.push(packet.id);\n    });\n  });\n  if (!indices.length)\n    throw new Error(\"File has no messages\");\n  var docroot = ((_d = (_c = (_b = (_a = M == null ? void 0 : M[1]) == null ? void 0 : _a[0]) == null ? void 0 : _b.meta) == null ? void 0 : _c[1]) == null ? void 0 : _d[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1 && M[1][0];\n  if (!docroot)\n    indices.forEach(function(idx) {\n      M[idx].forEach(function(iwam) {\n        var mtype = varint_to_i32(iwam.meta[1][0].data) >>> 0;\n        if (mtype == 1) {\n          if (!docroot)\n            docroot = iwam;\n          else\n            throw new Error(\"Document has multiple roots\");\n        }\n      });\n    });\n  if (!docroot)\n    throw new Error(\"Cannot find Document root\");\n  return parse_TN_DocumentArchive(M, docroot);\n}\nfunction write_tile_row(tri, data, SST) {\n  var _a, _b, _c, _d;\n  if (!((_a = tri[6]) == null ? void 0 : _a[0]) || !((_b = tri[7]) == null ? void 0 : _b[0]))\n    throw \"Mutation only works on post-BNC storages!\";\n  var wide_offsets = ((_d = (_c = tri[8]) == null ? void 0 : _c[0]) == null ? void 0 : _d.data) && varint_to_i32(tri[8][0].data) > 0 || false;\n  if (wide_offsets)\n    throw \"Math only works with normal offsets\";\n  var cnt = 0;\n  var dv = u8_to_dataview(tri[7][0].data), last_offset = 0, cell_storage = [];\n  var _dv = u8_to_dataview(tri[4][0].data), _last_offset = 0, _cell_storage = [];\n  for (var C = 0; C < data.length; ++C) {\n    if (data[C] == null) {\n      dv.setUint16(C * 2, 65535, true);\n      _dv.setUint16(C * 2, 65535);\n      continue;\n    }\n    dv.setUint16(C * 2, last_offset, true);\n    _dv.setUint16(C * 2, _last_offset, true);\n    var celload, _celload;\n    switch (typeof data[C]) {\n      case \"string\":\n        celload = write_new_storage({ t: \"s\", v: data[C] }, SST);\n        _celload = write_old_storage({ t: \"s\", v: data[C] }, SST);\n        break;\n      case \"number\":\n        celload = write_new_storage({ t: \"n\", v: data[C] }, SST);\n        _celload = write_old_storage({ t: \"n\", v: data[C] }, SST);\n        break;\n      case \"boolean\":\n        celload = write_new_storage({ t: \"b\", v: data[C] }, SST);\n        _celload = write_old_storage({ t: \"b\", v: data[C] }, SST);\n        break;\n      default:\n        throw new Error(\"Unsupported value \" + data[C]);\n    }\n    cell_storage.push(celload);\n    last_offset += celload.length;\n    _cell_storage.push(_celload);\n    _last_offset += _celload.length;\n    ++cnt;\n  }\n  tri[2][0].data = write_varint49(cnt);\n  for (; C < tri[7][0].data.length / 2; ++C) {\n    dv.setUint16(C * 2, 65535, true);\n    _dv.setUint16(C * 2, 65535, true);\n  }\n  tri[6][0].data = u8concat(cell_storage);\n  tri[3][0].data = u8concat(_cell_storage);\n  return cnt;\n}\nfunction write_numbers_iwa(wb, opts) {\n  if (!opts || !opts.numbers)\n    throw new Error(\"Must pass a `numbers` option -- check the README\");\n  var ws = wb.Sheets[wb.SheetNames[0]];\n  if (wb.SheetNames.length > 1)\n    console.error(\"The Numbers writer currently writes only the first table\");\n  var range = decode_range(ws[\"!ref\"]);\n  range.s.r = range.s.c = 0;\n  var trunc = false;\n  if (range.e.c > 9) {\n    trunc = true;\n    range.e.c = 9;\n  }\n  if (range.e.r > 49) {\n    trunc = true;\n    range.e.r = 49;\n  }\n  if (trunc)\n    console.error(\"The Numbers writer is currently limited to \".concat(encode_range(range)));\n  var data = sheet_to_json(ws, { range: range, header: 1 });\n  var SST = [\"~Sh33tJ5~\"];\n  data.forEach(function(row) {\n    return row.forEach(function(cell) {\n      if (typeof cell == \"string\")\n        SST.push(cell);\n    });\n  });\n  var dependents = {};\n  var indices = [];\n  var cfb = CFB.read(opts.numbers, { type: \"base64\" });\n  cfb.FileIndex.map(function(fi, idx) {\n    return [fi, cfb.FullPaths[idx]];\n  }).forEach(function(row) {\n    var fi = row[0], fp = row[1];\n    if (fi.type != 2)\n      return;\n    if (!fi.name.match(/\\.iwa/))\n      return;\n    var old_content = fi.content;\n    var raw1 = decompress_iwa_file(old_content);\n    var x2 = parse_iwa_file(raw1);\n    x2.forEach(function(packet2) {\n      indices.push(packet2.id);\n      dependents[packet2.id] = { deps: [], location: fp, type: varint_to_i32(packet2.messages[0].meta[1][0].data) };\n    });\n  });\n  indices.sort(function(x2, y2) {\n    return x2 - y2;\n  });\n  var indices_varint = indices.filter(function(x2) {\n    return x2 > 1;\n  }).map(function(x2) {\n    return [x2, write_varint49(x2)];\n  });\n  cfb.FileIndex.map(function(fi, idx) {\n    return [fi, cfb.FullPaths[idx]];\n  }).forEach(function(row) {\n    var fi = row[0], fp = row[1];\n    if (!fi.name.match(/\\.iwa/))\n      return;\n    var x2 = parse_iwa_file(decompress_iwa_file(fi.content));\n    x2.forEach(function(ia) {\n      ia.messages.forEach(function(m) {\n        indices_varint.forEach(function(ivi) {\n          if (ia.messages.some(function(mess) {\n            return varint_to_i32(mess.meta[1][0].data) != 11006 && u8contains(mess.data, ivi[1]);\n          })) {\n            dependents[ivi[0]].deps.push(ia.id);\n          }\n        });\n      });\n    });\n  });\n  function get_unique_msgid() {\n    for (var i = 927262; i < 2e6; ++i)\n      if (!dependents[i])\n        return i;\n    throw new Error(\"Too many messages\");\n  }\n  var entry = CFB.find(cfb, dependents[1].location);\n  var x = parse_iwa_file(decompress_iwa_file(entry.content));\n  var docroot;\n  for (var xi = 0; xi < x.length; ++xi) {\n    var packet = x[xi];\n    if (packet.id == 1)\n      docroot = packet;\n  }\n  var sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[1][0].data);\n  entry = CFB.find(cfb, dependents[sheetrootref].location);\n  x = parse_iwa_file(decompress_iwa_file(entry.content));\n  for (xi = 0; xi < x.length; ++xi) {\n    packet = x[xi];\n    if (packet.id == sheetrootref)\n      docroot = packet;\n  }\n  sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[2][0].data);\n  entry = CFB.find(cfb, dependents[sheetrootref].location);\n  x = parse_iwa_file(decompress_iwa_file(entry.content));\n  for (xi = 0; xi < x.length; ++xi) {\n    packet = x[xi];\n    if (packet.id == sheetrootref)\n      docroot = packet;\n  }\n  sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[2][0].data);\n  entry = CFB.find(cfb, dependents[sheetrootref].location);\n  x = parse_iwa_file(decompress_iwa_file(entry.content));\n  for (xi = 0; xi < x.length; ++xi) {\n    packet = x[xi];\n    if (packet.id == sheetrootref)\n      docroot = packet;\n  }\n  var pb = parse_shallow(docroot.messages[0].data);\n  {\n    pb[6][0].data = write_varint49(range.e.r + 1);\n    pb[7][0].data = write_varint49(range.e.c + 1);\n    var cruidsref = parse_TSP_Reference(pb[46][0].data);\n    var oldbucket = CFB.find(cfb, dependents[cruidsref].location);\n    var _x = parse_iwa_file(decompress_iwa_file(oldbucket.content));\n    {\n      for (var j = 0; j < _x.length; ++j) {\n        if (_x[j].id == cruidsref)\n          break;\n      }\n      if (_x[j].id != cruidsref)\n        throw \"Bad ColumnRowUIDMapArchive\";\n      var cruids = parse_shallow(_x[j].messages[0].data);\n      cruids[1] = [];\n      cruids[2] = [], cruids[3] = [];\n      for (var C = 0; C <= range.e.c; ++C) {\n        var uuid = [];\n        uuid[1] = uuid[2] = [{ type: 0, data: write_varint49(C + 420690) }];\n        cruids[1].push({ type: 2, data: write_shallow(uuid) });\n        cruids[2].push({ type: 0, data: write_varint49(C) });\n        cruids[3].push({ type: 0, data: write_varint49(C) });\n      }\n      cruids[4] = [];\n      cruids[5] = [], cruids[6] = [];\n      for (var R = 0; R <= range.e.r; ++R) {\n        uuid = [];\n        uuid[1] = uuid[2] = [{ type: 0, data: write_varint49(R + 726270) }];\n        cruids[4].push({ type: 2, data: write_shallow(uuid) });\n        cruids[5].push({ type: 0, data: write_varint49(R) });\n        cruids[6].push({ type: 0, data: write_varint49(R) });\n      }\n      _x[j].messages[0].data = write_shallow(cruids);\n    }\n    oldbucket.content = compress_iwa_file(write_iwa_file(_x));\n    oldbucket.size = oldbucket.content.length;\n    delete pb[46];\n    var store = parse_shallow(pb[4][0].data);\n    {\n      store[7][0].data = write_varint49(range.e.r + 1);\n      var row_headers = parse_shallow(store[1][0].data);\n      var row_header_ref = parse_TSP_Reference(row_headers[2][0].data);\n      oldbucket = CFB.find(cfb, dependents[row_header_ref].location);\n      _x = parse_iwa_file(decompress_iwa_file(oldbucket.content));\n      {\n        if (_x[0].id != row_header_ref)\n          throw \"Bad HeaderStorageBucket\";\n        var base_bucket = parse_shallow(_x[0].messages[0].data);\n        for (R = 0; R < data.length; ++R) {\n          var _bucket = parse_shallow(base_bucket[2][0].data);\n          _bucket[1][0].data = write_varint49(R);\n          _bucket[4][0].data = write_varint49(data[R].length);\n          base_bucket[2][R] = { type: base_bucket[2][0].type, data: write_shallow(_bucket) };\n        }\n        _x[0].messages[0].data = write_shallow(base_bucket);\n      }\n      oldbucket.content = compress_iwa_file(write_iwa_file(_x));\n      oldbucket.size = oldbucket.content.length;\n      var col_header_ref = parse_TSP_Reference(store[2][0].data);\n      oldbucket = CFB.find(cfb, dependents[col_header_ref].location);\n      _x = parse_iwa_file(decompress_iwa_file(oldbucket.content));\n      {\n        if (_x[0].id != col_header_ref)\n          throw \"Bad HeaderStorageBucket\";\n        base_bucket = parse_shallow(_x[0].messages[0].data);\n        for (C = 0; C <= range.e.c; ++C) {\n          _bucket = parse_shallow(base_bucket[2][0].data);\n          _bucket[1][0].data = write_varint49(C);\n          _bucket[4][0].data = write_varint49(range.e.r + 1);\n          base_bucket[2][C] = { type: base_bucket[2][0].type, data: write_shallow(_bucket) };\n        }\n        _x[0].messages[0].data = write_shallow(base_bucket);\n      }\n      oldbucket.content = compress_iwa_file(write_iwa_file(_x));\n      oldbucket.size = oldbucket.content.length;\n      var sstref = parse_TSP_Reference(store[4][0].data);\n      (function() {\n        var sentry = CFB.find(cfb, dependents[sstref].location);\n        var sx = parse_iwa_file(decompress_iwa_file(sentry.content));\n        var sstroot;\n        for (var sxi = 0; sxi < sx.length; ++sxi) {\n          var packet2 = sx[sxi];\n          if (packet2.id == sstref)\n            sstroot = packet2;\n        }\n        var sstdata = parse_shallow(sstroot.messages[0].data);\n        {\n          sstdata[3] = [];\n          var newsst = [];\n          SST.forEach(function(str, i) {\n            newsst[1] = [{ type: 0, data: write_varint49(i) }];\n            newsst[2] = [{ type: 0, data: write_varint49(1) }];\n            newsst[3] = [{ type: 2, data: stru8(str) }];\n            sstdata[3].push({ type: 2, data: write_shallow(newsst) });\n          });\n        }\n        sstroot.messages[0].data = write_shallow(sstdata);\n        var sy = write_iwa_file(sx);\n        var raw32 = compress_iwa_file(sy);\n        sentry.content = raw32;\n        sentry.size = sentry.content.length;\n      })();\n      var tile = parse_shallow(store[3][0].data);\n      {\n        var t = tile[1][0];\n        delete tile[2];\n        var tl = parse_shallow(t.data);\n        {\n          var tileref = parse_TSP_Reference(tl[2][0].data);\n          (function() {\n            var tentry = CFB.find(cfb, dependents[tileref].location);\n            var tx = parse_iwa_file(decompress_iwa_file(tentry.content));\n            var tileroot;\n            for (var sxi = 0; sxi < tx.length; ++sxi) {\n              var packet2 = tx[sxi];\n              if (packet2.id == tileref)\n                tileroot = packet2;\n            }\n            var tiledata = parse_shallow(tileroot.messages[0].data);\n            {\n              delete tiledata[6];\n              delete tile[7];\n              var rowload = new Uint8Array(tiledata[5][0].data);\n              tiledata[5] = [];\n              var cnt = 0;\n              for (var R2 = 0; R2 <= range.e.r; ++R2) {\n                var tilerow = parse_shallow(rowload);\n                cnt += write_tile_row(tilerow, data[R2], SST);\n                tilerow[1][0].data = write_varint49(R2);\n                tiledata[5].push({ data: write_shallow(tilerow), type: 2 });\n              }\n              tiledata[1] = [{ type: 0, data: write_varint49(range.e.c + 1) }];\n              tiledata[2] = [{ type: 0, data: write_varint49(range.e.r + 1) }];\n              tiledata[3] = [{ type: 0, data: write_varint49(cnt) }];\n              tiledata[4] = [{ type: 0, data: write_varint49(range.e.r + 1) }];\n            }\n            tileroot.messages[0].data = write_shallow(tiledata);\n            var ty = write_iwa_file(tx);\n            var raw32 = compress_iwa_file(ty);\n            tentry.content = raw32;\n            tentry.size = tentry.content.length;\n          })();\n        }\n        t.data = write_shallow(tl);\n      }\n      store[3][0].data = write_shallow(tile);\n    }\n    pb[4][0].data = write_shallow(store);\n  }\n  docroot.messages[0].data = write_shallow(pb);\n  var y = write_iwa_file(x);\n  var raw3 = compress_iwa_file(y);\n  entry.content = raw3;\n  entry.size = entry.content.length;\n  return cfb;\n}\nfunction fix_opts_func(defaults/*:Array<Array<any> >*/)/*:{(o:any):void}*/ {\n\treturn function fix_opts(opts) {\n\t\tfor(var i = 0; i != defaults.length; ++i) {\n\t\t\tvar d = defaults[i];\n\t\t\tif(opts[d[0]] === undefined) opts[d[0]] = d[1];\n\t\t\tif(d[2] === 'n') opts[d[0]] = Number(opts[d[0]]);\n\t\t}\n\t};\n}\n\nfunction fix_read_opts(opts) {\nfix_opts_func([\n\t['cellNF', false], /* emit cell number format string as .z */\n\t['cellHTML', true], /* emit html string as .h */\n\t['cellFormula', true], /* emit formulae as .f */\n\t['cellStyles', false], /* emits style/theme as .s */\n\t['cellText', true], /* emit formatted text as .w */\n\t['cellDates', false], /* emit date cells with type `d` */\n\n\t['sheetStubs', false], /* emit empty cells */\n\t['sheetRows', 0, 'n'], /* read n rows (0 = read all rows) */\n\n\t['bookDeps', false], /* parse calculation chains */\n\t['bookSheets', false], /* only try to get sheet names (no Sheets) */\n\t['bookProps', false], /* only try to get properties (no Sheets) */\n\t['bookFiles', false], /* include raw file structure (keys, files, cfb) */\n\t['bookVBA', false], /* include vba raw data (vbaraw) */\n\n\t['password',''], /* password */\n\t['WTF', false] /* WTF mode (throws errors) */\n])(opts);\n}\n\nfunction fix_write_opts(opts) {\nfix_opts_func([\n\t['cellDates', false], /* write date cells with type `d` */\n\n\t['bookSST', false], /* Generate Shared String Table */\n\n\t['bookType', 'xlsx'], /* Type of workbook (xlsx/m/b) */\n\n\t['compression', false], /* Use file compression */\n\n\t['WTF', false] /* WTF mode (throws errors) */\n])(opts);\n}\nfunction get_sheet_type(n/*:string*/)/*:string*/ {\n\tif(RELS.WS.indexOf(n) > -1) return \"sheet\";\n\tif(RELS.CS && n == RELS.CS) return \"chart\";\n\tif(RELS.DS && n == RELS.DS) return \"dialog\";\n\tif(RELS.MS && n == RELS.MS) return \"macro\";\n\treturn (n && n.length) ? n : \"sheet\";\n}\nfunction safe_parse_wbrels(wbrels, sheets) {\n\tif(!wbrels) return 0;\n\ttry {\n\t\twbrels = sheets.map(function pwbr(w) { if(!w.id) w.id = w.strRelID; return [w.name, wbrels['!id'][w.id].Target, get_sheet_type(wbrels['!id'][w.id].Type)]; });\n\t} catch(e) { return null; }\n\treturn !wbrels || wbrels.length === 0 ? null : wbrels;\n}\n\nfunction safe_parse_sheet(zip, path/*:string*/, relsPath/*:string*/, sheet, idx/*:number*/, sheetRels, sheets, stype/*:string*/, opts, wb, themes, styles) {\n\ttry {\n\t\tsheetRels[sheet]=parse_rels(getzipstr(zip, relsPath, true), path);\n\t\tvar data = getzipdata(zip, path);\n\t\tvar _ws;\n\t\tswitch(stype) {\n\t\t\tcase 'sheet':  _ws = parse_ws(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tcase 'chart':  _ws = parse_cs(data, path, idx, opts, sheetRels[sheet], wb, themes, styles);\n\t\t\t\tif(!_ws || !_ws['!drawel']) break;\n\t\t\t\tvar dfile = resolve_path(_ws['!drawel'].Target, path);\n\t\t\t\tvar drelsp = get_rels_path(dfile);\n\t\t\t\tvar draw = parse_drawing(getzipstr(zip, dfile, true), parse_rels(getzipstr(zip, drelsp, true), dfile));\n\t\t\t\tvar chartp = resolve_path(draw, dfile);\n\t\t\t\tvar crelsp = get_rels_path(chartp);\n\t\t\t\t_ws = parse_chart(getzipstr(zip, chartp, true), chartp, opts, parse_rels(getzipstr(zip, crelsp, true), chartp), wb, _ws);\n\t\t\t\tbreak;\n\t\t\tcase 'macro':  _ws = parse_ms(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tcase 'dialog': _ws = parse_ds(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tdefault: throw new Error(\"Unrecognized sheet type \" + stype);\n\t\t}\n\t\tsheets[sheet] = _ws;\n\n\t\t/* scan rels for comments and threaded comments */\n\t\tvar tcomments = [];\n\t\tif(sheetRels && sheetRels[sheet]) keys(sheetRels[sheet]).forEach(function(n) {\n\t\t\tvar dfile = \"\";\n\t\t\tif(sheetRels[sheet][n].Type == RELS.CMNT) {\n\t\t\t\tdfile = resolve_path(sheetRels[sheet][n].Target, path);\n\t\t\t\tvar comments = parse_cmnt(getzipdata(zip, dfile, true), dfile, opts);\n\t\t\t\tif(!comments || !comments.length) return;\n\t\t\t\tsheet_insert_comments(_ws, comments, false);\n\t\t\t}\n\t\t\tif(sheetRels[sheet][n].Type == RELS.TCMNT) {\n\t\t\t\tdfile = resolve_path(sheetRels[sheet][n].Target, path);\n\t\t\t\ttcomments = tcomments.concat(parse_tcmnt_xml(getzipdata(zip, dfile, true), opts));\n\t\t\t}\n\t\t});\n\t\tif(tcomments && tcomments.length) sheet_insert_comments(_ws, tcomments, true, opts.people || []);\n\t} catch(e) { if(opts.WTF) throw e; }\n}\n\nfunction strip_front_slash(x/*:string*/)/*:string*/ { return x.charAt(0) == '/' ? x.slice(1) : x; }\n\nfunction parse_zip(zip/*:ZIP*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tmake_ssf();\n\topts = opts || {};\n\tfix_read_opts(opts);\n\n\t/* OpenDocument Part 3 Section 2.2.1 OpenDocument Package */\n\tif(safegetzipfile(zip, 'META-INF/manifest.xml')) return parse_ods(zip, opts);\n\t/* UOC */\n\tif(safegetzipfile(zip, 'objectdata.xml')) return parse_ods(zip, opts);\n\t/* Numbers */\n\tif(safegetzipfile(zip, 'Index/Document.iwa')) {\n\t\tif(typeof Uint8Array == \"undefined\") throw new Error('NUMBERS file parsing requires Uint8Array support');\n\t\tif(typeof parse_numbers_iwa != \"undefined\") {\n\t\t\tif(zip.FileIndex) return parse_numbers_iwa(zip);\n\t\t\tvar _zip = CFB.utils.cfb_new();\n\t\t\tzipentries(zip).forEach(function(e) { zip_add_file(_zip, e, getzipbin(zip, e)); });\n\t\t\treturn parse_numbers_iwa(_zip);\n\t\t}\n\t\tthrow new Error('Unsupported NUMBERS file');\n\t}\n\tif(!safegetzipfile(zip, '[Content_Types].xml')) {\n\t\tif(safegetzipfile(zip, 'index.xml.gz')) throw new Error('Unsupported NUMBERS 08 file');\n\t\tif(safegetzipfile(zip, 'index.xml')) throw new Error('Unsupported NUMBERS 09 file');\n\t\tthrow new Error('Unsupported ZIP file');\n\t}\n\n\tvar entries = zipentries(zip);\n\tvar dir = parse_ct((getzipstr(zip, '[Content_Types].xml')/*:?any*/));\n\tvar xlsb = false;\n\tvar sheets, binname;\n\tif(dir.workbooks.length === 0) {\n\t\tbinname = \"xl/workbook.xml\";\n\t\tif(getzipdata(zip,binname, true)) dir.workbooks.push(binname);\n\t}\n\tif(dir.workbooks.length === 0) {\n\t\tbinname = \"xl/workbook.bin\";\n\t\tif(!getzipdata(zip,binname,true)) throw new Error(\"Could not find workbook\");\n\t\tdir.workbooks.push(binname);\n\t\txlsb = true;\n\t}\n\tif(dir.workbooks[0].slice(-3) == \"bin\") xlsb = true;\n\n\tvar themes = ({}/*:any*/);\n\tvar styles = ({}/*:any*/);\n\tif(!opts.bookSheets && !opts.bookProps) {\n\t\tstrs = [];\n\t\tif(dir.sst) try { strs=parse_sst(getzipdata(zip, strip_front_slash(dir.sst)), dir.sst, opts); } catch(e) { if(opts.WTF) throw e; }\n\n\t\tif(opts.cellStyles && dir.themes.length) themes = parse_theme(getzipstr(zip, dir.themes[0].replace(/^\\//,''), true)||\"\",dir.themes[0], opts);\n\n\t\tif(dir.style) styles = parse_sty(getzipdata(zip, strip_front_slash(dir.style)), dir.style, themes, opts);\n\t}\n\n\t/*var externbooks = */dir.links.map(function(link) {\n\t\ttry {\n\t\t\tvar rels = parse_rels(getzipstr(zip, get_rels_path(strip_front_slash(link))), link);\n\t\t\treturn parse_xlink(getzipdata(zip, strip_front_slash(link)), rels, link, opts);\n\t\t} catch(e) {}\n\t});\n\n\tvar wb = parse_wb(getzipdata(zip, strip_front_slash(dir.workbooks[0])), dir.workbooks[0], opts);\n\n\tvar props = {}, propdata = \"\";\n\n\tif(dir.coreprops.length) {\n\t\tpropdata = getzipdata(zip, strip_front_slash(dir.coreprops[0]), true);\n\t\tif(propdata) props = parse_core_props(propdata);\n\t\tif(dir.extprops.length !== 0) {\n\t\t\tpropdata = getzipdata(zip, strip_front_slash(dir.extprops[0]), true);\n\t\t\tif(propdata) parse_ext_props(propdata, props, opts);\n\t\t}\n\t}\n\n\tvar custprops = {};\n\tif(!opts.bookSheets || opts.bookProps) {\n\t\tif (dir.custprops.length !== 0) {\n\t\t\tpropdata = getzipstr(zip, strip_front_slash(dir.custprops[0]), true);\n\t\t\tif(propdata) custprops = parse_cust_props(propdata, opts);\n\t\t}\n\t}\n\n\tvar out = ({}/*:any*/);\n\tif(opts.bookSheets || opts.bookProps) {\n\t\tif(wb.Sheets) sheets = wb.Sheets.map(function pluck(x){ return x.name; });\n\t\telse if(props.Worksheets && props.SheetNames.length > 0) sheets=props.SheetNames;\n\t\tif(opts.bookProps) { out.Props = props; out.Custprops = custprops; }\n\t\tif(opts.bookSheets && typeof sheets !== 'undefined') out.SheetNames = sheets;\n\t\tif(opts.bookSheets ? out.SheetNames : opts.bookProps) return out;\n\t}\n\tsheets = {};\n\n\tvar deps = {};\n\tif(opts.bookDeps && dir.calcchain) deps=parse_cc(getzipdata(zip, strip_front_slash(dir.calcchain)),dir.calcchain,opts);\n\n\tvar i=0;\n\tvar sheetRels = ({}/*:any*/);\n\tvar path, relsPath;\n\n\t{\n\t\tvar wbsheets = wb.Sheets;\n\t\tprops.Worksheets = wbsheets.length;\n\t\tprops.SheetNames = [];\n\t\tfor(var j = 0; j != wbsheets.length; ++j) {\n\t\t\tprops.SheetNames[j] = wbsheets[j].name;\n\t\t}\n\t}\n\n\tvar wbext = xlsb ? \"bin\" : \"xml\";\n\tvar wbrelsi = dir.workbooks[0].lastIndexOf(\"/\");\n\tvar wbrelsfile = (dir.workbooks[0].slice(0, wbrelsi+1) + \"_rels/\" + dir.workbooks[0].slice(wbrelsi+1) + \".rels\").replace(/^\\//,\"\");\n\tif(!safegetzipfile(zip, wbrelsfile)) wbrelsfile = 'xl/_rels/workbook.' + wbext + '.rels';\n\tvar wbrels = parse_rels(getzipstr(zip, wbrelsfile, true), wbrelsfile.replace(/_rels.*/, \"s5s\"));\n\n\tif((dir.metadata || []).length >= 1) {\n\t\t/* TODO: MDX and other types of metadata */\n\t\topts.xlmeta = parse_xlmeta(getzipdata(zip, strip_front_slash(dir.metadata[0])),dir.metadata[0],opts);\n\t}\n\n\tif((dir.people || []).length >= 1) {\n\t\topts.people = parse_people_xml(getzipdata(zip, strip_front_slash(dir.people[0])),opts);\n\t}\n\n\tif(wbrels) wbrels = safe_parse_wbrels(wbrels, wb.Sheets);\n\n\t/* Numbers iOS hack */\n\tvar nmode = (getzipdata(zip,\"xl/worksheets/sheet.xml\",true))?1:0;\n\twsloop: for(i = 0; i != props.Worksheets; ++i) {\n\t\tvar stype = \"sheet\";\n\t\tif(wbrels && wbrels[i]) {\n\t\t\tpath = 'xl/' + (wbrels[i][1]).replace(/[\\/]?xl\\//, \"\");\n\t\t\tif(!safegetzipfile(zip, path)) path = wbrels[i][1];\n\t\t\tif(!safegetzipfile(zip, path)) path = wbrelsfile.replace(/_rels\\/.*$/,\"\") + wbrels[i][1];\n\t\t\tstype = wbrels[i][2];\n\t\t} else {\n\t\t\tpath = 'xl/worksheets/sheet'+(i+1-nmode)+\".\" + wbext;\n\t\t\tpath = path.replace(/sheet0\\./,\"sheet.\");\n\t\t}\n\t\trelsPath = path.replace(/^(.*)(\\/)([^\\/]*)$/, \"$1/_rels/$3.rels\");\n\t\tif(opts && opts.sheets != null) switch(typeof opts.sheets) {\n\t\t\tcase \"number\": if(i != opts.sheets) continue wsloop; break;\n\t\t\tcase \"string\": if(props.SheetNames[i].toLowerCase() != opts.sheets.toLowerCase()) continue wsloop; break;\n\t\t\tdefault: if(Array.isArray && Array.isArray(opts.sheets)) {\n\t\t\t\tvar snjseen = false;\n\t\t\t\tfor(var snj = 0; snj != opts.sheets.length; ++snj) {\n\t\t\t\t\tif(typeof opts.sheets[snj] == \"number\" && opts.sheets[snj] == i) snjseen=1;\n\t\t\t\t\tif(typeof opts.sheets[snj] == \"string\" && opts.sheets[snj].toLowerCase() == props.SheetNames[i].toLowerCase()) snjseen = 1;\n\t\t\t\t}\n\t\t\t\tif(!snjseen) continue wsloop;\n\t\t\t}\n\t\t}\n\t\tsafe_parse_sheet(zip, path, relsPath, props.SheetNames[i], i, sheetRels, sheets, stype, opts, wb, themes, styles);\n\t}\n\n\tout = ({\n\t\tDirectory: dir,\n\t\tWorkbook: wb,\n\t\tProps: props,\n\t\tCustprops: custprops,\n\t\tDeps: deps,\n\t\tSheets: sheets,\n\t\tSheetNames: props.SheetNames,\n\t\tStrings: strs,\n\t\tStyles: styles,\n\t\tThemes: themes,\n\t\tSSF: dup(table_fmt)\n\t}/*:any*/);\n\tif(opts && opts.bookFiles) {\n\t\tif(zip.files) {\n\t\t\tout.keys = entries;\n\t\t\tout.files = zip.files;\n\t\t} else {\n\t\t\tout.keys = [];\n\t\t\tout.files = {};\n\t\t\tzip.FullPaths.forEach(function(p, idx) {\n\t\t\t\tp = p.replace(/^Root Entry[\\/]/, \"\");\n\t\t\t\tout.keys.push(p);\n\t\t\t\tout.files[p] = zip.FileIndex[idx];\n\t\t\t});\n\t\t}\n\t}\n\tif(opts && opts.bookVBA) {\n\t\tif(dir.vba.length > 0) out.vbaraw = getzipdata(zip,strip_front_slash(dir.vba[0]),true);\n\t\telse if(dir.defaults && dir.defaults.bin === CT_VBA) out.vbaraw = getzipdata(zip, 'xl/vbaProject.bin',true);\n\t}\n\treturn out;\n}\n\n/* [MS-OFFCRYPTO] 2.1.1 */\nfunction parse_xlsxcfb(cfb, _opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tvar f = 'Workbook', data = CFB.find(cfb, f);\n\ttry {\n\tf = '/!DataSpaces/Version';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\t/*var version = */parse_DataSpaceVersionInfo(data.content);\n\n\t/* 2.3.4.1 */\n\tf = '/!DataSpaces/DataSpaceMap';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar dsm = parse_DataSpaceMap(data.content);\n\tif(dsm.length !== 1 || dsm[0].comps.length !== 1 || dsm[0].comps[0].t !== 0 || dsm[0].name !== \"StrongEncryptionDataSpace\" || dsm[0].comps[0].v !== \"EncryptedPackage\")\n\t\tthrow new Error(\"ECMA-376 Encrypted file bad \" + f);\n\n\t/* 2.3.4.2 */\n\tf = '/!DataSpaces/DataSpaceInfo/StrongEncryptionDataSpace';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar seds = parse_DataSpaceDefinition(data.content);\n\tif(seds.length != 1 || seds[0] != \"StrongEncryptionTransform\")\n\t\tthrow new Error(\"ECMA-376 Encrypted file bad \" + f);\n\n\t/* 2.3.4.3 */\n\tf = '/!DataSpaces/TransformInfo/StrongEncryptionTransform/!Primary';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\t/*var hdr = */parse_Primary(data.content);\n\t} catch(e) {}\n\n\tf = '/EncryptionInfo';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar einfo = parse_EncryptionInfo(data.content);\n\n\t/* 2.3.4.4 */\n\tf = '/EncryptedPackage';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\n/*global decrypt_agile */\n/*:: declare var decrypt_agile:any; */\n\tif(einfo[0] == 0x04 && typeof decrypt_agile !== 'undefined') return decrypt_agile(einfo[1], data.content, opts.password || \"\", opts);\n/*global decrypt_std76 */\n/*:: declare var decrypt_std76:any; */\n\tif(einfo[0] == 0x02 && typeof decrypt_std76 !== 'undefined') return decrypt_std76(einfo[1], data.content, opts.password || \"\", opts);\n\tthrow new Error(\"File is password-protected\");\n}\n\nfunction write_zip(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\tif(opts.bookType == \"ods\") return write_ods(wb, opts);\n\tif(opts.bookType == \"numbers\") return write_numbers_iwa(wb, opts);\n\tif(opts.bookType == \"xlsb\") return write_zip_xlsxb(wb, opts);\n\treturn write_zip_xlsx(wb, opts);\n}\n\n/* XLSX and XLSB writing are very similar.  Originally they were unified in one\n   export function.  This is horrible for tree shaking in the common case (most\n   applications need to export files in one format) so this function supports\n   both formats while write_zip_xlsx only handles XLSX */\nfunction write_zip_xlsxb(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\t_shapeid = 1024;\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t}\n\topts.rels = {}; opts.wbrels = {};\n\topts.Strings = /*::((*/[]/*:: :any):SST)*/; opts.Strings.Count = 0; opts.Strings.Unique = 0;\n\tif(browser_has_Map) opts.revStrings = new Map();\n\telse { opts.revStrings = {}; opts.revStrings.foo = []; delete opts.revStrings.foo; }\n\tvar wbext = opts.bookType == \"xlsb\" ? \"bin\" : \"xml\";\n\tvar vbafmt = VBAFMTS.indexOf(opts.bookType) > -1;\n\tvar ct = new_ct();\n\tfix_write_opts(opts = opts || {});\n\tvar zip = zip_new();\n\tvar f = \"\", rId = 0;\n\n\topts.cellXfs = [];\n\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tf = \"docProps/core.xml\";\n\tzip_add_file(zip, f, write_core_props(wb.Props, opts));\n\tct.coreprops.push(f);\n\tadd_rels(opts.rels, 2, f, RELS.CORE_PROPS);\n\n\t/*::if(!wb.Props) throw \"unreachable\"; */\n\tf = \"docProps/app.xml\";\n\tif(wb.Props && wb.Props.SheetNames){/* empty */}\n\telse if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames;\n\telse {\n\t\tvar _sn = [];\n\t\tfor(var _i = 0; _i < wb.SheetNames.length; ++_i)\n\t\t\tif((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]);\n\t\twb.Props.SheetNames = _sn;\n\t}\n\twb.Props.Worksheets = wb.Props.SheetNames.length;\n\tzip_add_file(zip, f, write_ext_props(wb.Props, opts));\n\tct.extprops.push(f);\n\tadd_rels(opts.rels, 3, f, RELS.EXT_PROPS);\n\n\tif(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) {\n\t\tf = \"docProps/custom.xml\";\n\t\tzip_add_file(zip, f, write_cust_props(wb.Custprops, opts));\n\t\tct.custprops.push(f);\n\t\tadd_rels(opts.rels, 4, f, RELS.CUST_PROPS);\n\t}\n\n\tfor(rId=1;rId <= wb.SheetNames.length; ++rId) {\n\t\tvar wsrels = {'!id':{}};\n\t\tvar ws = wb.Sheets[wb.SheetNames[rId-1]];\n\t\tvar _type = (ws || {})[\"!type\"] || \"sheet\";\n\t\tswitch(_type) {\n\t\tcase \"chart\":\n\t\t\t/* falls through */\n\t\tdefault:\n\t\t\tf = \"xl/worksheets/sheet\" + rId + \".\" + wbext;\n\t\t\tzip_add_file(zip, f, write_ws(rId-1, f, opts, wb, wsrels));\n\t\t\tct.sheets.push(f);\n\t\t\tadd_rels(opts.wbrels, -1, \"worksheets/sheet\" + rId + \".\" + wbext, RELS.WS[0]);\n\t\t}\n\n\t\tif(ws) {\n\t\t\tvar comments = ws['!comments'];\n\t\t\tvar need_vml = false;\n\t\t\tvar cf = \"\";\n\t\t\tif(comments && comments.length > 0) {\n\t\t\t\tcf = \"xl/comments\" + rId + \".\" + wbext;\n\t\t\t\tzip_add_file(zip, cf, write_cmnt(comments, cf, opts));\n\t\t\t\tct.comments.push(cf);\n\t\t\t\tadd_rels(wsrels, -1, \"../comments\" + rId + \".\" + wbext, RELS.CMNT);\n\t\t\t\tneed_vml = true;\n\t\t\t}\n\t\t\tif(ws['!legacy']) {\n\t\t\t\tif(need_vml) zip_add_file(zip, \"xl/drawings/vmlDrawing\" + (rId) + \".vml\", write_comments_vml(rId, ws['!comments']));\n\t\t\t}\n\t\t\tdelete ws['!comments'];\n\t\t\tdelete ws['!legacy'];\n\t\t}\n\n\t\tif(wsrels['!id'].rId1) zip_add_file(zip, get_rels_path(f), write_rels(wsrels));\n\t}\n\n\tif(opts.Strings != null && opts.Strings.length > 0) {\n\t\tf = \"xl/sharedStrings.\" + wbext;\n\t\tzip_add_file(zip, f, write_sst(opts.Strings, f, opts));\n\t\tct.strs.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"sharedStrings.\" + wbext, RELS.SST);\n\t}\n\n\tf = \"xl/workbook.\" + wbext;\n\tzip_add_file(zip, f, write_wb(wb, f, opts));\n\tct.workbooks.push(f);\n\tadd_rels(opts.rels, 1, f, RELS.WB);\n\n\t/* TODO: something more intelligent with themes */\n\n\tf = \"xl/theme/theme1.xml\";\n\tzip_add_file(zip, f, write_theme(wb.Themes, opts));\n\tct.themes.push(f);\n\tadd_rels(opts.wbrels, -1, \"theme/theme1.xml\", RELS.THEME);\n\n\t/* TODO: something more intelligent with styles */\n\n\tf = \"xl/styles.\" + wbext;\n\tzip_add_file(zip, f, write_sty(wb, f, opts));\n\tct.styles.push(f);\n\tadd_rels(opts.wbrels, -1, \"styles.\" + wbext, RELS.STY);\n\n\tif(wb.vbaraw && vbafmt) {\n\t\tf = \"xl/vbaProject.bin\";\n\t\tzip_add_file(zip, f, wb.vbaraw);\n\t\tct.vba.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"vbaProject.bin\", RELS.VBA);\n\t}\n\n\tf = \"xl/metadata.\" + wbext;\n\tzip_add_file(zip, f, write_xlmeta(f));\n\tct.metadata.push(f);\n\tadd_rels(opts.wbrels, -1, \"metadata.\" + wbext, RELS.XLMETA);\n\n\tzip_add_file(zip, \"[Content_Types].xml\", write_ct(ct, opts));\n\tzip_add_file(zip, '_rels/.rels', write_rels(opts.rels));\n\tzip_add_file(zip, 'xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels));\n\n\tdelete opts.revssf; delete opts.ssf;\n\treturn zip;\n}\n\nfunction write_zip_xlsx(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\t_shapeid = 1024;\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t}\n\topts.rels = {}; opts.wbrels = {};\n\topts.Strings = /*::((*/[]/*:: :any):SST)*/; opts.Strings.Count = 0; opts.Strings.Unique = 0;\n\tif(browser_has_Map) opts.revStrings = new Map();\n\telse { opts.revStrings = {}; opts.revStrings.foo = []; delete opts.revStrings.foo; }\n\tvar wbext = \"xml\";\n\tvar vbafmt = VBAFMTS.indexOf(opts.bookType) > -1;\n\tvar ct = new_ct();\n\tfix_write_opts(opts = opts || {});\n\tvar zip = zip_new();\n\tvar f = \"\", rId = 0;\n\n\topts.cellXfs = [];\n\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tf = \"docProps/core.xml\";\n\tzip_add_file(zip, f, write_core_props(wb.Props, opts));\n\tct.coreprops.push(f);\n\tadd_rels(opts.rels, 2, f, RELS.CORE_PROPS);\n\n\t/*::if(!wb.Props) throw \"unreachable\"; */\n\tf = \"docProps/app.xml\";\n\tif(wb.Props && wb.Props.SheetNames){/* empty */}\n\telse if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames;\n\telse {\n\t\tvar _sn = [];\n\t\tfor(var _i = 0; _i < wb.SheetNames.length; ++_i)\n\t\t\tif((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]);\n\t\twb.Props.SheetNames = _sn;\n\t}\n\twb.Props.Worksheets = wb.Props.SheetNames.length;\n\tzip_add_file(zip, f, write_ext_props(wb.Props, opts));\n\tct.extprops.push(f);\n\tadd_rels(opts.rels, 3, f, RELS.EXT_PROPS);\n\n\tif(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) {\n\t\tf = \"docProps/custom.xml\";\n\t\tzip_add_file(zip, f, write_cust_props(wb.Custprops, opts));\n\t\tct.custprops.push(f);\n\t\tadd_rels(opts.rels, 4, f, RELS.CUST_PROPS);\n\t}\n\n\tvar people = [\"SheetJ5\"];\n\topts.tcid = 0;\n\n\tfor(rId=1;rId <= wb.SheetNames.length; ++rId) {\n\t\tvar wsrels = {'!id':{}};\n\t\tvar ws = wb.Sheets[wb.SheetNames[rId-1]];\n\t\tvar _type = (ws || {})[\"!type\"] || \"sheet\";\n\t\tswitch(_type) {\n\t\tcase \"chart\":\n\t\t\t/* falls through */\n\t\tdefault:\n\t\t\tf = \"xl/worksheets/sheet\" + rId + \".\" + wbext;\n\t\t\tzip_add_file(zip, f, write_ws_xml(rId-1, opts, wb, wsrels));\n\t\t\tct.sheets.push(f);\n\t\t\tadd_rels(opts.wbrels, -1, \"worksheets/sheet\" + rId + \".\" + wbext, RELS.WS[0]);\n\t\t}\n\n\t\tif(ws) {\n\t\t\tvar comments = ws['!comments'];\n\t\t\tvar need_vml = false;\n\t\t\tvar cf = \"\";\n\t\t\tif(comments && comments.length > 0) {\n\t\t\t\tvar needtc = false;\n\t\t\t\tcomments.forEach(function(carr) {\n\t\t\t\t\tcarr[1].forEach(function(c) { if(c.T == true) needtc = true; });\n\t\t\t\t});\n\t\t\t\tif(needtc) {\n\t\t\t\t\tcf = \"xl/threadedComments/threadedComment\" + rId + \".\" + wbext;\n\t\t\t\t\tzip_add_file(zip, cf, write_tcmnt_xml(comments, people, opts));\n\t\t\t\t\tct.threadedcomments.push(cf);\n\t\t\t\t\tadd_rels(wsrels, -1, \"../threadedComments/threadedComment\" + rId + \".\" + wbext, RELS.TCMNT);\n\t\t\t\t}\n\n\t\t\t\tcf = \"xl/comments\" + rId + \".\" + wbext;\n\t\t\t\tzip_add_file(zip, cf, write_comments_xml(comments, opts));\n\t\t\t\tct.comments.push(cf);\n\t\t\t\tadd_rels(wsrels, -1, \"../comments\" + rId + \".\" + wbext, RELS.CMNT);\n\t\t\t\tneed_vml = true;\n\t\t\t}\n\t\t\tif(ws['!legacy']) {\n\t\t\t\tif(need_vml) zip_add_file(zip, \"xl/drawings/vmlDrawing\" + (rId) + \".vml\", write_comments_vml(rId, ws['!comments']));\n\t\t\t}\n\t\t\tdelete ws['!comments'];\n\t\t\tdelete ws['!legacy'];\n\t\t}\n\n\t\tif(wsrels['!id'].rId1) zip_add_file(zip, get_rels_path(f), write_rels(wsrels));\n\t}\n\n\tif(opts.Strings != null && opts.Strings.length > 0) {\n\t\tf = \"xl/sharedStrings.\" + wbext;\n\t\tzip_add_file(zip, f, write_sst_xml(opts.Strings, opts));\n\t\tct.strs.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"sharedStrings.\" + wbext, RELS.SST);\n\t}\n\n\tf = \"xl/workbook.\" + wbext;\n\tzip_add_file(zip, f, write_wb_xml(wb, opts));\n\tct.workbooks.push(f);\n\tadd_rels(opts.rels, 1, f, RELS.WB);\n\n\t/* TODO: something more intelligent with themes */\n\n\tf = \"xl/theme/theme1.xml\";\n\tzip_add_file(zip, f, write_theme(wb.Themes, opts));\n\tct.themes.push(f);\n\tadd_rels(opts.wbrels, -1, \"theme/theme1.xml\", RELS.THEME);\n\n\t/* TODO: something more intelligent with styles */\n\n\tf = \"xl/styles.\" + wbext;\n\tzip_add_file(zip, f, write_sty_xml(wb, opts));\n\tct.styles.push(f);\n\tadd_rels(opts.wbrels, -1, \"styles.\" + wbext, RELS.STY);\n\n\tif(wb.vbaraw && vbafmt) {\n\t\tf = \"xl/vbaProject.bin\";\n\t\tzip_add_file(zip, f, wb.vbaraw);\n\t\tct.vba.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"vbaProject.bin\", RELS.VBA);\n\t}\n\n\tf = \"xl/metadata.\" + wbext;\n\tzip_add_file(zip, f, write_xlmeta_xml());\n\tct.metadata.push(f);\n\tadd_rels(opts.wbrels, -1, \"metadata.\" + wbext, RELS.XLMETA);\n\n\tif(people.length > 1) {\n\t\tf = \"xl/persons/person.xml\";\n\t\tzip_add_file(zip, f, write_people_xml(people, opts));\n\t\tct.people.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"persons/person.xml\", RELS.PEOPLE);\n\t}\n\n\tzip_add_file(zip, \"[Content_Types].xml\", write_ct(ct, opts));\n\tzip_add_file(zip, '_rels/.rels', write_rels(opts.rels));\n\tzip_add_file(zip, 'xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels));\n\n\tdelete opts.revssf; delete opts.ssf;\n\treturn zip;\n}\n\nfunction firstbyte(f/*:RawData*/,o/*:?TypeOpts*/)/*:Array<number>*/ {\n\tvar x = \"\";\n\tswitch((o||{}).type || \"base64\") {\n\t\tcase 'buffer': return [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]];\n\t\tcase 'base64': x = Base64_decode(f.slice(0,12)); break;\n\t\tcase 'binary': x = f; break;\n\t\tcase 'array':  return [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]];\n\t\tdefault: throw new Error(\"Unrecognized type \" + (o && o.type || \"undefined\"));\n\t}\n\treturn [x.charCodeAt(0), x.charCodeAt(1), x.charCodeAt(2), x.charCodeAt(3), x.charCodeAt(4), x.charCodeAt(5), x.charCodeAt(6), x.charCodeAt(7)];\n}\n\nfunction read_cfb(cfb/*:CFBContainer*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tif(CFB.find(cfb, \"EncryptedPackage\")) return parse_xlsxcfb(cfb, opts);\n\treturn parse_xlscfb(cfb, opts);\n}\n\nfunction read_zip(data/*:RawData*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar zip, d = data;\n\tvar o = opts||{};\n\tif(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? \"buffer\" : \"base64\";\n\tzip = zip_read(d, o);\n\treturn parse_zip(zip, o);\n}\n\nfunction read_plaintext(data/*:string*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar i = 0;\n\tmain: while(i < data.length) switch(data.charCodeAt(i)) {\n\t\tcase 0x0A: case 0x0D: case 0x20: ++i; break;\n\t\tcase 0x3C: return parse_xlml(data.slice(i),o);\n\t\tdefault: break main;\n\t}\n\treturn PRN.to_workbook(data, o);\n}\n\nfunction read_plaintext_raw(data/*:RawData*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar str = \"\", bytes = firstbyte(data, o);\n\tswitch(o.type) {\n\t\tcase 'base64': str = Base64_decode(data); break;\n\t\tcase 'binary': str = data; break;\n\t\tcase 'buffer': str = data.toString('binary'); break;\n\t\tcase 'array': str = cc2str(data); break;\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\tif(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str);\n\to.type = \"binary\";\n\treturn read_plaintext(str, o);\n}\n\nfunction read_utf16(data/*:RawData*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar d = data;\n\tif(o.type == 'base64') d = Base64_decode(d);\n\td = $cptable.utils.decode(1200, d.slice(2), 'str');\n\to.type = \"binary\";\n\treturn read_plaintext(d, o);\n}\n\nfunction bstrify(data/*:string*/)/*:string*/ {\n\treturn !data.match(/[^\\x00-\\x7F]/) ? data : utf8write(data);\n}\n\nfunction read_prn(data, d, o, str) {\n\tif(str) { o.type = \"string\"; return PRN.to_workbook(data, o); }\n\treturn PRN.to_workbook(d, o);\n}\n\nfunction readSync(data/*:RawData*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\treset_cp();\n\tvar o = opts||{};\n\tif(typeof ArrayBuffer !== 'undefined' && data instanceof ArrayBuffer) return readSync(new Uint8Array(data), (o = dup(o), o.type = \"array\", o));\n\tif(typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && !o.type) o.type = typeof Deno !== \"undefined\" ? \"buffer\" : \"array\";\n\tvar d = data, n = [0,0,0,0], str = false;\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\t_ssfopts = {};\n\tif(o.dateNF) _ssfopts.dateNF = o.dateNF;\n\tif(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? \"buffer\" : \"base64\";\n\tif(o.type == \"file\") { o.type = has_buf ? \"buffer\" : \"binary\"; d = read_binary(data); if(typeof Uint8Array !== 'undefined' && !has_buf) o.type = \"array\"; }\n\tif(o.type == \"string\") { str = true; o.type = \"binary\"; o.codepage = 65001; d = bstrify(data); }\n\tif(o.type == 'array' && typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && typeof ArrayBuffer !== 'undefined') {\n\t\t// $FlowIgnore\n\t\tvar ab=new ArrayBuffer(3), vu=new Uint8Array(ab); vu.foo=\"bar\";\n\t\t// $FlowIgnore\n\t\tif(!vu.foo) {o=dup(o); o.type='array'; return readSync(ab2a(d), o);}\n\t}\n\tswitch((n = firstbyte(d, o))[0]) {\n\t\tcase 0xD0: if(n[1] === 0xCF && n[2] === 0x11 && n[3] === 0xE0 && n[4] === 0xA1 && n[5] === 0xB1 && n[6] === 0x1A && n[7] === 0xE1) return read_cfb(CFB.read(d, o), o); break;\n\t\tcase 0x09: if(n[1] <= 0x08) return parse_xlscfb(d, o); break;\n\t\tcase 0x3C: return parse_xlml(d, o);\n\t\tcase 0x49:\n\t\t\tif(n[1] === 0x49 && n[2] === 0x2a && n[3] === 0x00) throw new Error(\"TIFF Image File is not a spreadsheet\");\n\t\t\tif(n[1] === 0x44) return read_wb_ID(d, o);\n\t\t\tbreak;\n\t\tcase 0x54: if(n[1] === 0x41 && n[2] === 0x42 && n[3] === 0x4C) return DIF.to_workbook(d, o); break;\n\t\tcase 0x50: return (n[1] === 0x4B && n[2] < 0x09 && n[3] < 0x09) ? read_zip(d, o) : read_prn(data, d, o, str);\n\t\tcase 0xEF: return n[3] === 0x3C ? parse_xlml(d, o) : read_prn(data, d, o, str);\n\t\tcase 0xFF:\n\t\t\tif(n[1] === 0xFE) { return read_utf16(d, o); }\n\t\t\telse if(n[1] === 0x00 && n[2] === 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o);\n\t\t\tbreak;\n\t\tcase 0x00:\n\t\t\tif(n[1] === 0x00) {\n\t\t\t\tif(n[2] >= 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o);\n\t\t\t\tif(n[2] === 0x00 && (n[3] === 0x08 || n[3] === 0x09)) return WK_.to_workbook(d, o);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 0x03: case 0x83: case 0x8B: case 0x8C: return DBF.to_workbook(d, o);\n\t\tcase 0x7B: if(n[1] === 0x5C && n[2] === 0x72 && n[3] === 0x74) return RTF.to_workbook(d, o); break;\n\t\tcase 0x0A: case 0x0D: case 0x20: return read_plaintext_raw(d, o);\n\t\tcase 0x89: if(n[1] === 0x50 && n[2] === 0x4E && n[3] === 0x47) throw new Error(\"PNG Image File is not a spreadsheet\"); break;\n\t}\n\tif(DBF_SUPPORTED_VERSIONS.indexOf(n[0]) > -1 && n[2] <= 12 && n[3] <= 31) return DBF.to_workbook(d, o);\n\treturn read_prn(data, d, o, str);\n}\n\nfunction readFileSync(filename/*:string*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar o = opts||{}; o.type = 'file';\n\treturn readSync(filename, o);\n}\nfunction write_cfb_ctr(cfb/*:CFBContainer*/, o/*:WriteOpts*/)/*:any*/ {\n\tswitch(o.type) {\n\t\tcase \"base64\": case \"binary\": break;\n\t\tcase \"buffer\": case \"array\": o.type = \"\"; break;\n\t\tcase \"file\": return write_dl(o.file, CFB.write(cfb, {type:has_buf ? 'buffer' : \"\"}));\n\t\tcase \"string\": throw new Error(\"'string' output type invalid for '\" + o.bookType + \"' files\");\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\treturn CFB.write(cfb, o);\n}\n\n/*:: declare var encrypt_agile:any; */\nfunction write_zip_type(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = dup(opts||{});\n\tvar z = write_zip(wb, o);\n\treturn write_zip_denouement(z, o);\n}\nfunction write_zip_typeXLSX(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = dup(opts||{});\n\tvar z = write_zip_xlsx(wb, o);\n\treturn write_zip_denouement(z, o);\n}\nfunction write_zip_denouement(z/*:any*/, o/*:?WriteOpts*/)/*:any*/ {\n\tvar oopts = {};\n\tvar ftype = has_buf ? \"nodebuffer\" : (typeof Uint8Array !== \"undefined\" ? \"array\" : \"string\");\n\tif(o.compression) oopts.compression = 'DEFLATE';\n\tif(o.password) oopts.type = ftype;\n\telse switch(o.type) {\n\t\tcase \"base64\": oopts.type = \"base64\"; break;\n\t\tcase \"binary\": oopts.type = \"string\"; break;\n\t\tcase \"string\": throw new Error(\"'string' output type invalid for '\" + o.bookType + \"' files\");\n\t\tcase \"buffer\":\n\t\tcase \"file\": oopts.type = ftype; break;\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\tvar out = z.FullPaths ? CFB.write(z, {fileType:\"zip\", type: /*::(*/{\"nodebuffer\": \"buffer\", \"string\": \"binary\"}/*:: :any)*/[oopts.type] || oopts.type, compression: !!o.compression}) : z.generate(oopts);\n\tif(typeof Deno !== \"undefined\") {\n\t\tif(typeof out == \"string\") {\n\t\t\tif(o.type == \"binary\" || o.type == \"base64\") return out;\n\t\t\tout = new Uint8Array(s2ab(out));\n\t\t}\n\t}\n/*jshint -W083 */\n\tif(o.password && typeof encrypt_agile !== 'undefined') return write_cfb_ctr(encrypt_agile(out, o.password), o); // eslint-disable-line no-undef\n/*jshint +W083 */\n\tif(o.type === \"file\") return write_dl(o.file, out);\n\treturn o.type == \"string\" ? utf8read(/*::(*/out/*:: :any)*/) : out;\n}\n\nfunction write_cfb_type(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = opts||{};\n\tvar cfb/*:CFBContainer*/ = write_xlscfb(wb, o);\n\treturn write_cfb_ctr(cfb, o);\n}\n\nfunction write_string_type(out/*:string*/, opts/*:WriteOpts*/, bom/*:?string*/)/*:any*/ {\n\tif(!bom) bom = \"\";\n\tvar o = bom + out;\n\tswitch(opts.type) {\n\t\tcase \"base64\": return Base64_encode(utf8write(o));\n\t\tcase \"binary\": return utf8write(o);\n\t\tcase \"string\": return out;\n\t\tcase \"file\": return write_dl(opts.file, o, 'utf8');\n\t\tcase \"buffer\": {\n\t\t\tif(has_buf) return Buffer_from(o, 'utf8');\n\t\t\telse if(typeof TextEncoder !== \"undefined\") return new TextEncoder().encode(o);\n\t\t\telse return write_string_type(o, {type:'binary'}).split(\"\").map(function(c) { return c.charCodeAt(0); });\n\t\t}\n\t}\n\tthrow new Error(\"Unrecognized type \" + opts.type);\n}\n\nfunction write_stxt_type(out/*:string*/, opts/*:WriteOpts*/)/*:any*/ {\n\tswitch(opts.type) {\n\t\tcase \"base64\": return Base64_encode(out);\n\t\tcase \"binary\": return out;\n\t\tcase \"string\": return out; /* override in sheet_to_txt */\n\t\tcase \"file\": return write_dl(opts.file, out, 'binary');\n\t\tcase \"buffer\": {\n\t\t\tif(has_buf) return Buffer_from(out, 'binary');\n\t\t\telse return out.split(\"\").map(function(c) { return c.charCodeAt(0); });\n\t\t}\n\t}\n\tthrow new Error(\"Unrecognized type \" + opts.type);\n}\n\n/* TODO: test consistency */\nfunction write_binary_type(out, opts/*:WriteOpts*/)/*:any*/ {\n\tswitch(opts.type) {\n\t\tcase \"string\":\n\t\tcase \"base64\":\n\t\tcase \"binary\":\n\t\t\tvar bstr = \"\";\n\t\t\t// $FlowIgnore\n\t\t\tfor(var i = 0; i < out.length; ++i) bstr += String.fromCharCode(out[i]);\n\t\t\treturn opts.type == 'base64' ? Base64_encode(bstr) : opts.type == 'string' ? utf8read(bstr) : bstr;\n\t\tcase \"file\": return write_dl(opts.file, out);\n\t\tcase \"buffer\": return out;\n\t\tdefault: throw new Error(\"Unrecognized type \" + opts.type);\n\t}\n}\n\nfunction writeSyncXLSX(wb/*:Workbook*/, opts/*:?WriteOpts*/) {\n\treset_cp();\n\tcheck_wb(wb);\n\tvar o = dup(opts||{});\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\tif(o.type == \"array\") { o.type = \"binary\"; var out/*:string*/ = (writeSyncXLSX(wb, o)/*:any*/); o.type = \"array\"; return s2ab(out); }\n\treturn write_zip_typeXLSX(wb, o);\n}\n\nfunction writeSync(wb/*:Workbook*/, opts/*:?WriteOpts*/) {\n\treset_cp();\n\tcheck_wb(wb);\n\tvar o = dup(opts||{});\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\tif(o.type == \"array\") { o.type = \"binary\"; var out/*:string*/ = (writeSync(wb, o)/*:any*/); o.type = \"array\"; return s2ab(out); }\n\tvar idx = 0;\n\tif(o.sheet) {\n\t\tif(typeof o.sheet == \"number\") idx = o.sheet;\n\t\telse idx = wb.SheetNames.indexOf(o.sheet);\n\t\tif(!wb.SheetNames[idx]) throw new Error(\"Sheet not found: \" + o.sheet + \" : \" + (typeof o.sheet));\n\t}\n\tswitch(o.bookType || 'xlsb') {\n\t\tcase 'xml':\n\t\tcase 'xlml': return write_string_type(write_xlml(wb, o), o);\n\t\tcase 'slk':\n\t\tcase 'sylk': return write_string_type(SYLK.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'htm':\n\t\tcase 'html': return write_string_type(sheet_to_html(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'txt': return write_stxt_type(sheet_to_txt(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'csv': return write_string_type(sheet_to_csv(wb.Sheets[wb.SheetNames[idx]], o), o, \"\\ufeff\");\n\t\tcase 'dif': return write_string_type(DIF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'dbf': return write_binary_type(DBF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'prn': return write_string_type(PRN.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'rtf': return write_string_type(RTF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'eth': return write_string_type(ETH.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'fods': return write_string_type(write_ods(wb, o), o);\n\t\tcase 'wk1': return write_binary_type(WK_.sheet_to_wk1(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'wk3': return write_binary_type(WK_.book_to_wk3(wb, o), o);\n\t\tcase 'biff2': if(!o.biff) o.biff = 2; /* falls through */\n\t\tcase 'biff3': if(!o.biff) o.biff = 3; /* falls through */\n\t\tcase 'biff4': if(!o.biff) o.biff = 4; return write_binary_type(write_biff_buf(wb, o), o);\n\t\tcase 'biff5': if(!o.biff) o.biff = 5; /* falls through */\n\t\tcase 'biff8':\n\t\tcase 'xla':\n\t\tcase 'xls': if(!o.biff) o.biff = 8; return write_cfb_type(wb, o);\n\t\tcase 'xlsx':\n\t\tcase 'xlsm':\n\t\tcase 'xlam':\n\t\tcase 'xlsb':\n\t\tcase 'numbers':\n\t\tcase 'ods': return write_zip_type(wb, o);\n\t\tdefault: throw new Error (\"Unrecognized bookType |\" + o.bookType + \"|\");\n\t}\n}\n\nfunction resolve_book_type(o/*:WriteFileOpts*/) {\n\tif(o.bookType) return;\n\tvar _BT = {\n\t\t\"xls\": \"biff8\",\n\t\t\"htm\": \"html\",\n\t\t\"slk\": \"sylk\",\n\t\t\"socialcalc\": \"eth\",\n\t\t\"Sh33tJS\": \"WTF\"\n\t};\n\tvar ext = o.file.slice(o.file.lastIndexOf(\".\")).toLowerCase();\n\tif(ext.match(/^\\.[a-z]+$/)) o.bookType = ext.slice(1);\n\to.bookType = _BT[o.bookType] || o.bookType;\n}\n\nfunction writeFileSync(wb/*:Workbook*/, filename/*:string*/, opts/*:?WriteFileOpts*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\treturn writeSync(wb, o);\n}\n\nfunction writeFileSyncXLSX(wb/*:Workbook*/, filename/*:string*/, opts/*:?WriteFileOpts*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\treturn writeSyncXLSX(wb, o);\n}\n\n\nfunction writeFileAsync(filename/*:string*/, wb/*:Workbook*/, opts/*:?WriteFileOpts*/, cb/*:?(e?:ErrnoError)=>void*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\to.type = 'buffer';\n\tvar _cb = cb; if(!(_cb instanceof Function)) _cb = (opts/*:any*/);\n\treturn _fs.writeFile(filename, writeSync(wb, o), _cb);\n}\n/*::\ntype MJRObject = {\n\trow: any;\n\tisempty: boolean;\n};\n*/\nfunction make_json_row(sheet/*:Worksheet*/, r/*:Range*/, R/*:number*/, cols/*:Array<string>*/, header/*:number*/, hdr/*:Array<any>*/, dense/*:boolean*/, o/*:Sheet2JSONOpts*/)/*:MJRObject*/ {\n\tvar rr = encode_row(R);\n\tvar defval = o.defval, raw = o.raw || !Object.prototype.hasOwnProperty.call(o, \"raw\");\n\tvar isempty = true;\n\tvar row/*:any*/ = (header === 1) ? [] : {};\n\tif(header !== 1) {\n\t\tif(Object.defineProperty) try { Object.defineProperty(row, '__rowNum__', {value:R, enumerable:false}); } catch(e) { row.__rowNum__ = R; }\n\t\telse row.__rowNum__ = R;\n\t}\n\tif(!dense || sheet[R]) for (var C = r.s.c; C <= r.e.c; ++C) {\n\t\tvar val = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\tif(val === undefined || val.t === undefined) {\n\t\t\tif(defval === undefined) continue;\n\t\t\tif(hdr[C] != null) { row[hdr[C]] = defval; }\n\t\t\tcontinue;\n\t\t}\n\t\tvar v = val.v;\n\t\tswitch(val.t){\n\t\t\tcase 'z': if(v == null) break; continue;\n\t\t\tcase 'e': v = (v == 0 ? null : void 0); break;\n\t\t\tcase 's': case 'd': case 'b': case 'n': break;\n\t\t\tdefault: throw new Error('unrecognized type ' + val.t);\n\t\t}\n\t\tif(hdr[C] != null) {\n\t\t\tif(v == null) {\n\t\t\t\tif(val.t == \"e\" && v === null) row[hdr[C]] = null;\n\t\t\t\telse if(defval !== undefined) row[hdr[C]] = defval;\n\t\t\t\telse if(raw && v === null) row[hdr[C]] = null;\n\t\t\t\telse continue;\n\t\t\t} else {\n\t\t\t\trow[hdr[C]] = raw && (val.t !== \"n\" || (val.t === \"n\" && o.rawNumbers !== false)) ? v : format_cell(val,v,o);\n\t\t\t}\n\t\t\tif(v != null) isempty = false;\n\t\t}\n\t}\n\treturn { row: row, isempty: isempty };\n}\n\n\nfunction sheet_to_json(sheet/*:Worksheet*/, opts/*:?Sheet2JSONOpts*/) {\n\tif(sheet == null || sheet[\"!ref\"] == null) return [];\n\tvar val = {t:'n',v:0}, header = 0, offset = 1, hdr/*:Array<any>*/ = [], v=0, vv=\"\";\n\tvar r = {s:{r:0,c:0},e:{r:0,c:0}};\n\tvar o = opts || {};\n\tvar range = o.range != null ? o.range : sheet[\"!ref\"];\n\tif(o.header === 1) header = 1;\n\telse if(o.header === \"A\") header = 2;\n\telse if(Array.isArray(o.header)) header = 3;\n\telse if(o.header == null) header = 0;\n\tswitch(typeof range) {\n\t\tcase 'string': r = safe_decode_range(range); break;\n\t\tcase 'number': r = safe_decode_range(sheet[\"!ref\"]); r.s.r = range; break;\n\t\tdefault: r = range;\n\t}\n\tif(header > 0) offset = 0;\n\tvar rr = encode_row(r.s.r);\n\tvar cols/*:Array<string>*/ = [];\n\tvar out/*:Array<any>*/ = [];\n\tvar outi = 0, counter = 0;\n\tvar dense = Array.isArray(sheet);\n\tvar R = r.s.r, C = 0;\n\tvar header_cnt = {};\n\tif(dense && !sheet[R]) sheet[R] = [];\n\tvar colinfo/*:Array<ColInfo>*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array<ColInfo>*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\tif(((colinfo[C]||{}).hidden)) continue;\n\t\tcols[C] = encode_col(C);\n\t\tval = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\tswitch(header) {\n\t\t\tcase 1: hdr[C] = C - r.s.c; break;\n\t\t\tcase 2: hdr[C] = cols[C]; break;\n\t\t\tcase 3: hdr[C] = o.header[C - r.s.c]; break;\n\t\t\tdefault:\n\t\t\t\tif(val == null) val = {w: \"__EMPTY\", t: \"s\"};\n\t\t\t\tvv = v = format_cell(val, null, o);\n\t\t\t\tcounter = header_cnt[v] || 0;\n\t\t\t\tif(!counter) header_cnt[v] = 1;\n\t\t\t\telse {\n\t\t\t\t\tdo { vv = v + \"_\" + (counter++); } while(header_cnt[vv]); header_cnt[v] = counter;\n\t\t\t\t\theader_cnt[vv] = 1;\n\t\t\t\t}\n\t\t\t\thdr[C] = vv;\n\t\t}\n\t}\n\tfor (R = r.s.r + offset; R <= r.e.r; ++R) {\n\t\tif ((rowinfo[R]||{}).hidden) continue;\n\t\tvar row = make_json_row(sheet, r, R, cols, header, hdr, dense, o);\n\t\tif((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) out[outi++] = row.row;\n\t}\n\tout.length = outi;\n\treturn out;\n}\n\nvar qreg = /\"/g;\nfunction make_csv_row(sheet/*:Worksheet*/, r/*:Range*/, R/*:number*/, cols/*:Array<string>*/, fs/*:number*/, rs/*:number*/, FS/*:string*/, o/*:Sheet2CSVOpts*/)/*:?string*/ {\n\tvar isempty = true;\n\tvar row/*:Array<string>*/ = [], txt = \"\", rr = encode_row(R);\n\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\tif (!cols[C]) continue;\n\t\tvar val = o.dense ? (sheet[R]||[])[C]: sheet[cols[C] + rr];\n\t\tif(val == null) txt = \"\";\n\t\telse if(val.v != null) {\n\t\t\tisempty = false;\n\t\t\ttxt = ''+(o.rawNumbers && val.t == \"n\" ? val.v : format_cell(val, null, o));\n\t\t\tfor(var i = 0, cc = 0; i !== txt.length; ++i) if((cc = txt.charCodeAt(i)) === fs || cc === rs || cc === 34 || o.forceQuotes) {txt = \"\\\"\" + txt.replace(qreg, '\"\"') + \"\\\"\"; break; }\n\t\t\tif(txt == \"ID\") txt = '\"ID\"';\n\t\t} else if(val.f != null && !val.F) {\n\t\t\tisempty = false;\n\t\t\ttxt = '=' + val.f; if(txt.indexOf(\",\") >= 0) txt = '\"' + txt.replace(qreg, '\"\"') + '\"';\n\t\t} else txt = \"\";\n\t\t/* NOTE: Excel CSV does not support array formulae */\n\t\trow.push(txt);\n\t}\n\tif(o.blankrows === false && isempty) return null;\n\treturn row.join(FS);\n}\n\nfunction sheet_to_csv(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/)/*:string*/ {\n\tvar out/*:Array<string>*/ = [];\n\tvar o = opts == null ? {} : opts;\n\tif(sheet == null || sheet[\"!ref\"] == null) return \"\";\n\tvar r = safe_decode_range(sheet[\"!ref\"]);\n\tvar FS = o.FS !== undefined ? o.FS : \",\", fs = FS.charCodeAt(0);\n\tvar RS = o.RS !== undefined ? o.RS : \"\\n\", rs = RS.charCodeAt(0);\n\tvar endregex = new RegExp((FS==\"|\" ? \"\\\\|\" : FS)+\"+$\");\n\tvar row = \"\", cols/*:Array<string>*/ = [];\n\to.dense = Array.isArray(sheet);\n\tvar colinfo/*:Array<ColInfo>*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array<ColInfo>*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C);\n\tvar w = 0;\n\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\tif ((rowinfo[R]||{}).hidden) continue;\n\t\trow = make_csv_row(sheet, r, R, cols, fs, rs, FS, o);\n\t\tif(row == null) { continue; }\n\t\tif(o.strip) row = row.replace(endregex,\"\");\n\t\tif(row || (o.blankrows !== false)) out.push((w++ ? RS : \"\") + row);\n\t}\n\tdelete o.dense;\n\treturn out.join(\"\");\n}\n\nfunction sheet_to_txt(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tif(!opts) opts = {}; opts.FS = \"\\t\"; opts.RS = \"\\n\";\n\tvar s = sheet_to_csv(sheet, opts);\n\tif(typeof $cptable == 'undefined' || opts.type == 'string') return s;\n\tvar o = $cptable.utils.encode(1200, s, 'str');\n\treturn String.fromCharCode(255) + String.fromCharCode(254) + o;\n}\n\nfunction sheet_to_formulae(sheet/*:Worksheet*/)/*:Array<string>*/ {\n\tvar y = \"\", x, val=\"\";\n\tif(sheet == null || sheet[\"!ref\"] == null) return [];\n\tvar r = safe_decode_range(sheet['!ref']), rr = \"\", cols/*:Array<string>*/ = [], C;\n\tvar cmds/*:Array<string>*/ = [];\n\tvar dense = Array.isArray(sheet);\n\tfor(C = r.s.c; C <= r.e.c; ++C) cols[C] = encode_col(C);\n\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\t\ty = cols[C] + rr;\n\t\t\tx = dense ? (sheet[R]||[])[C] : sheet[y];\n\t\t\tval = \"\";\n\t\t\tif(x === undefined) continue;\n\t\t\telse if(x.F != null) {\n\t\t\t\ty = x.F;\n\t\t\t\tif(!x.f) continue;\n\t\t\t\tval = x.f;\n\t\t\t\tif(y.indexOf(\":\") == -1) y = y + \":\" + y;\n\t\t\t}\n\t\t\tif(x.f != null) val = x.f;\n\t\t\telse if(x.t == 'z') continue;\n\t\t\telse if(x.t == 'n' && x.v != null) val = \"\" + x.v;\n\t\t\telse if(x.t == 'b') val = x.v ? \"TRUE\" : \"FALSE\";\n\t\t\telse if(x.w !== undefined) val = \"'\" + x.w;\n\t\t\telse if(x.v === undefined) continue;\n\t\t\telse if(x.t == 's') val = \"'\" + x.v;\n\t\t\telse val = \"\"+x.v;\n\t\t\tcmds[cmds.length] = y + \"=\" + val;\n\t\t}\n\t}\n\treturn cmds;\n}\n\nfunction sheet_add_json(_ws/*:?Worksheet*/, js/*:Array<any>*/, opts)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tvar offset = +!o.skipHeader;\n\tvar ws/*:Worksheet*/ = _ws || ({}/*:any*/);\n\tvar _R = 0, _C = 0;\n\tif(ws && o.origin != null) {\n\t\tif(typeof o.origin == 'number') _R = o.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof o.origin == \"string\" ? decode_cell(o.origin) : o.origin;\n\t\t\t_R = _origin.r; _C = _origin.c;\n\t\t}\n\t}\n\tvar cell/*:Cell*/;\n\tvar range/*:Range*/ = ({s: {c:0, r:0}, e: {c:_C, r:_R + js.length - 1 + offset}}/*:any*/);\n\tif(ws['!ref']) {\n\t\tvar _range = safe_decode_range(ws['!ref']);\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\tif(_R == -1) { _R = _range.e.r + 1; range.e.r = _R + js.length - 1 + offset; }\n\t} else {\n\t\tif(_R == -1) { _R = 0; range.e.r = js.length - 1 + offset; }\n\t}\n\tvar hdr/*:Array<string>*/ = o.header || [], C = 0;\n\n\tjs.forEach(function (JS, R/*:number*/) {\n\t\tkeys(JS).forEach(function(k) {\n\t\t\tif((C=hdr.indexOf(k)) == -1) hdr[C=hdr.length] = k;\n\t\t\tvar v = JS[k];\n\t\t\tvar t = 'z';\n\t\t\tvar z = \"\";\n\t\t\tvar ref = encode_cell({c:_C + C,r:_R + R + offset});\n\t\t\tcell = ws_get_cell_stub(ws, ref);\n\t\t\tif(v && typeof v === 'object' && !(v instanceof Date)){\n\t\t\t\tws[ref] = v;\n\t\t\t} else {\n\t\t\t\tif(typeof v == 'number') t = 'n';\n\t\t\t\telse if(typeof v == 'boolean') t = 'b';\n\t\t\t\telse if(typeof v == 'string') t = 's';\n\t\t\t\telse if(v instanceof Date) {\n\t\t\t\t\tt = 'd';\n\t\t\t\t\tif(!o.cellDates) { t = 'n'; v = datenum(v); }\n\t\t\t\t\tz = (o.dateNF || table_fmt[14]);\n\t\t\t\t}\n\t\t\t\telse if(v === null && o.nullError) { t = 'e'; v = 0; }\n\t\t\t\tif(!cell) ws[ref] = cell = ({t:t, v:v}/*:any*/);\n\t\t\t\telse {\n\t\t\t\t\tcell.t = t; cell.v = v;\n\t\t\t\t\tdelete cell.w; delete cell.R;\n\t\t\t\t\tif(z) cell.z = z;\n\t\t\t\t}\n\t\t\t\tif(z) cell.z = z;\n\t\t\t}\n\t\t});\n\t});\n\trange.e.c = Math.max(range.e.c, _C + hdr.length - 1);\n\tvar __R = encode_row(_R);\n\tif(offset) for(C = 0; C < hdr.length; ++C) ws[encode_col(C + _C) + __R] = {t:'s', v:hdr[C]};\n\tws['!ref'] = encode_range(range);\n\treturn ws;\n}\nfunction json_to_sheet(js/*:Array<any>*/, opts)/*:Worksheet*/ { return sheet_add_json(null, js, opts); }\n\n/* get cell, creating a stub if necessary */\nfunction ws_get_cell_stub(ws/*:Worksheet*/, R, C/*:?number*/)/*:Cell*/ {\n\t/* A1 cell address */\n\tif(typeof R == \"string\") {\n\t\t/* dense */\n\t\tif(Array.isArray(ws)) {\n\t\t\tvar RC = decode_cell(R);\n\t\t\tif(!ws[RC.r]) ws[RC.r] = [];\n\t\t\treturn ws[RC.r][RC.c] || (ws[RC.r][RC.c] = {t:'z'});\n\t\t}\n\t\treturn ws[R] || (ws[R] = {t:'z'});\n\t}\n\t/* cell address object */\n\tif(typeof R != \"number\") return ws_get_cell_stub(ws, encode_cell(R));\n\t/* R and C are 0-based indices */\n\treturn ws_get_cell_stub(ws, encode_cell({r:R,c:C||0}));\n}\n\n/* find sheet index for given name / validate index */\nfunction wb_sheet_idx(wb/*:Workbook*/, sh/*:number|string*/) {\n\tif(typeof sh == \"number\") {\n\t\tif(sh >= 0 && wb.SheetNames.length > sh) return sh;\n\t\tthrow new Error(\"Cannot find sheet # \" + sh);\n\t} else if(typeof sh == \"string\") {\n\t\tvar idx = wb.SheetNames.indexOf(sh);\n\t\tif(idx > -1) return idx;\n\t\tthrow new Error(\"Cannot find sheet name |\" + sh + \"|\");\n\t} else throw new Error(\"Cannot find sheet |\" + sh + \"|\");\n}\n\n/* simple blank workbook object */\nfunction book_new()/*:Workbook*/ {\n\treturn { SheetNames: [], Sheets: {} };\n}\n\n/* add a worksheet to the end of a given workbook */\nfunction book_append_sheet(wb/*:Workbook*/, ws/*:Worksheet*/, name/*:?string*/, roll/*:?boolean*/)/*:string*/ {\n\tvar i = 1;\n\tif(!name) for(; i <= 0xFFFF; ++i, name = undefined) if(wb.SheetNames.indexOf(name = \"Sheet\" + i) == -1) break;\n\tif(!name || wb.SheetNames.length >= 0xFFFF) throw new Error(\"Too many worksheets\");\n\tif(roll && wb.SheetNames.indexOf(name) >= 0) {\n\t\tvar m = name.match(/(^.*?)(\\d+)$/);\n\t\ti = m && +m[2] || 0;\n\t\tvar root = m && m[1] || name;\n\t\tfor(++i; i <= 0xFFFF; ++i) if(wb.SheetNames.indexOf(name = root + i) == -1) break;\n\t}\n\tcheck_ws_name(name);\n\tif(wb.SheetNames.indexOf(name) >= 0) throw new Error(\"Worksheet with name |\" + name + \"| already exists!\");\n\n\twb.SheetNames.push(name);\n\twb.Sheets[name] = ws;\n\treturn name;\n}\n\n/* set sheet visibility (visible/hidden/very hidden) */\nfunction book_set_sheet_visibility(wb/*:Workbook*/, sh/*:number|string*/, vis/*:number*/) {\n\tif(!wb.Workbook) wb.Workbook = {};\n\tif(!wb.Workbook.Sheets) wb.Workbook.Sheets = [];\n\n\tvar idx = wb_sheet_idx(wb, sh);\n\t// $FlowIgnore\n\tif(!wb.Workbook.Sheets[idx]) wb.Workbook.Sheets[idx] = {};\n\n\tswitch(vis) {\n\t\tcase 0: case 1: case 2: break;\n\t\tdefault: throw new Error(\"Bad sheet visibility setting \" + vis);\n\t}\n\t// $FlowIgnore\n\twb.Workbook.Sheets[idx].Hidden = vis;\n}\n\n/* set number format */\nfunction cell_set_number_format(cell/*:Cell*/, fmt/*:string|number*/) {\n\tcell.z = fmt;\n\treturn cell;\n}\n\n/* set cell hyperlink */\nfunction cell_set_hyperlink(cell/*:Cell*/, target/*:string*/, tooltip/*:?string*/) {\n\tif(!target) {\n\t\tdelete cell.l;\n\t} else {\n\t\tcell.l = ({ Target: target }/*:Hyperlink*/);\n\t\tif(tooltip) cell.l.Tooltip = tooltip;\n\t}\n\treturn cell;\n}\nfunction cell_set_internal_link(cell/*:Cell*/, range/*:string*/, tooltip/*:?string*/) { return cell_set_hyperlink(cell, \"#\" + range, tooltip); }\n\n/* add to cell comments */\nfunction cell_add_comment(cell/*:Cell*/, text/*:string*/, author/*:?string*/) {\n\tif(!cell.c) cell.c = [];\n\tcell.c.push({t:text, a:author||\"SheetJS\"});\n}\n\n/* set array formula and flush related cells */\nfunction sheet_set_array_formula(ws/*:Worksheet*/, range, formula/*:string*/, dynamic/*:boolean*/) {\n\tvar rng = typeof range != \"string\" ? range : safe_decode_range(range);\n\tvar rngstr = typeof range == \"string\" ? range : encode_range(range);\n\tfor(var R = rng.s.r; R <= rng.e.r; ++R) for(var C = rng.s.c; C <= rng.e.c; ++C) {\n\t\tvar cell = ws_get_cell_stub(ws, R, C);\n\t\tcell.t = 'n';\n\t\tcell.F = rngstr;\n\t\tdelete cell.v;\n\t\tif(R == rng.s.r && C == rng.s.c) {\n\t\t\tcell.f = formula;\n\t\t\tif(dynamic) cell.D = true;\n\t\t}\n\t}\n\treturn ws;\n}\n\nvar utils/*:any*/ = {\n\tencode_col: encode_col,\n\tencode_row: encode_row,\n\tencode_cell: encode_cell,\n\tencode_range: encode_range,\n\tdecode_col: decode_col,\n\tdecode_row: decode_row,\n\tsplit_cell: split_cell,\n\tdecode_cell: decode_cell,\n\tdecode_range: decode_range,\n\tformat_cell: format_cell,\n\tsheet_add_aoa: sheet_add_aoa,\n\tsheet_add_json: sheet_add_json,\n\tsheet_add_dom: sheet_add_dom,\n\taoa_to_sheet: aoa_to_sheet,\n\tjson_to_sheet: json_to_sheet,\n\ttable_to_sheet: parse_dom_table,\n\ttable_to_book: table_to_book,\n\tsheet_to_csv: sheet_to_csv,\n\tsheet_to_txt: sheet_to_txt,\n\tsheet_to_json: sheet_to_json,\n\tsheet_to_html: sheet_to_html,\n\tsheet_to_formulae: sheet_to_formulae,\n\tsheet_to_row_object_array: sheet_to_json,\n\tsheet_get_cell: ws_get_cell_stub,\n\tbook_new: book_new,\n\tbook_append_sheet: book_append_sheet,\n\tbook_set_sheet_visibility: book_set_sheet_visibility,\n\tcell_set_number_format: cell_set_number_format,\n\tcell_set_hyperlink: cell_set_hyperlink,\n\tcell_set_internal_link: cell_set_internal_link,\n\tcell_add_comment: cell_add_comment,\n\tsheet_set_array_formula: sheet_set_array_formula,\n\tconsts: {\n\t\tSHEET_VISIBLE: 0,\n\t\tSHEET_HIDDEN: 1,\n\t\tSHEET_VERY_HIDDEN: 2\n\t}\n};\n\nvar _Readable;\nfunction set_readable(R) { _Readable = R; }\n\nfunction write_csv_stream(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tvar stream = _Readable();\n\tvar o = opts == null ? {} : opts;\n\tif(sheet == null || sheet[\"!ref\"] == null) { stream.push(null); return stream; }\n\tvar r = safe_decode_range(sheet[\"!ref\"]);\n\tvar FS = o.FS !== undefined ? o.FS : \",\", fs = FS.charCodeAt(0);\n\tvar RS = o.RS !== undefined ? o.RS : \"\\n\", rs = RS.charCodeAt(0);\n\tvar endregex = new RegExp((FS==\"|\" ? \"\\\\|\" : FS)+\"+$\");\n\tvar row/*:?string*/ = \"\", cols/*:Array<string>*/ = [];\n\to.dense = Array.isArray(sheet);\n\tvar colinfo/*:Array<ColInfo>*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array<RowInfo>*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C);\n\tvar R = r.s.r;\n\tvar BOM = false, w = 0;\n\tstream._read = function() {\n\t\tif(!BOM) { BOM = true; return stream.push(\"\\uFEFF\"); }\n\t\twhile(R <= r.e.r) {\n\t\t\t++R;\n\t\t\tif ((rowinfo[R-1]||{}).hidden) continue;\n\t\t\trow = make_csv_row(sheet, r, R-1, cols, fs, rs, FS, o);\n\t\t\tif(row != null) {\n\t\t\t\tif(o.strip) row = row.replace(endregex,\"\");\n\t\t\t\tif(row || (o.blankrows !== false)) return stream.push((w++ ? RS : \"\") + row);\n\t\t\t}\n\t\t}\n\t\treturn stream.push(null);\n\t};\n\treturn stream;\n}\n\nfunction write_html_stream(ws/*:Worksheet*/, opts/*:?Sheet2HTMLOpts*/) {\n\tvar stream = _Readable();\n\n\tvar o = opts || {};\n\tvar header = o.header != null ? o.header : HTML_BEGIN;\n\tvar footer = o.footer != null ? o.footer : HTML_END;\n\tstream.push(header);\n\tvar r = decode_range(ws['!ref']);\n\to.dense = Array.isArray(ws);\n\tstream.push(make_html_preamble(ws, r, o));\n\tvar R = r.s.r;\n\tvar end = false;\n\tstream._read = function() {\n\t\tif(R > r.e.r) {\n\t\t\tif(!end) { end = true; stream.push(\"</table>\" + footer); }\n\t\t\treturn stream.push(null);\n\t\t}\n\t\twhile(R <= r.e.r) {\n\t\t\tstream.push(make_html_row(ws, r, R, o));\n\t\t\t++R;\n\t\t\tbreak;\n\t\t}\n\t};\n\treturn stream;\n}\n\nfunction write_json_stream(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tvar stream = _Readable({objectMode:true});\n\n\tif(sheet == null || sheet[\"!ref\"] == null) { stream.push(null); return stream; }\n\tvar val = {t:'n',v:0}, header = 0, offset = 1, hdr/*:Array<any>*/ = [], v=0, vv=\"\";\n\tvar r = {s:{r:0,c:0},e:{r:0,c:0}};\n\tvar o = opts || {};\n\tvar range = o.range != null ? o.range : sheet[\"!ref\"];\n\tif(o.header === 1) header = 1;\n\telse if(o.header === \"A\") header = 2;\n\telse if(Array.isArray(o.header)) header = 3;\n\tswitch(typeof range) {\n\t\tcase 'string': r = safe_decode_range(range); break;\n\t\tcase 'number': r = safe_decode_range(sheet[\"!ref\"]); r.s.r = range; break;\n\t\tdefault: r = range;\n\t}\n\tif(header > 0) offset = 0;\n\tvar rr = encode_row(r.s.r);\n\tvar cols/*:Array<string>*/ = [];\n\tvar counter = 0;\n\tvar dense = Array.isArray(sheet);\n\tvar R = r.s.r, C = 0;\n\tvar header_cnt = {};\n\tif(dense && !sheet[R]) sheet[R] = [];\n\tvar colinfo/*:Array<ColInfo>*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array<RowInfo>*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\tif(((colinfo[C]||{}).hidden)) continue;\n\t\tcols[C] = encode_col(C);\n\t\tval = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\tswitch(header) {\n\t\t\tcase 1: hdr[C] = C - r.s.c; break;\n\t\t\tcase 2: hdr[C] = cols[C]; break;\n\t\t\tcase 3: hdr[C] = o.header[C - r.s.c]; break;\n\t\t\tdefault:\n\t\t\t\tif(val == null) val = {w: \"__EMPTY\", t: \"s\"};\n\t\t\t\tvv = v = format_cell(val, null, o);\n\t\t\t\tcounter = header_cnt[v] || 0;\n\t\t\t\tif(!counter) header_cnt[v] = 1;\n\t\t\t\telse {\n\t\t\t\t\tdo { vv = v + \"_\" + (counter++); } while(header_cnt[vv]); header_cnt[v] = counter;\n\t\t\t\t\theader_cnt[vv] = 1;\n\t\t\t\t}\n\t\t\t\thdr[C] = vv;\n\t\t}\n\t}\n\tR = r.s.r + offset;\n\tstream._read = function() {\n\t\twhile(R <= r.e.r) {\n\t\t\tif ((rowinfo[R-1]||{}).hidden) continue;\n\t\t\tvar row = make_json_row(sheet, r, R, cols, header, hdr, dense, o);\n\t\t\t++R;\n\t\t\tif((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) {\n\t\t\t\tstream.push(row.row);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\treturn stream.push(null);\n\t};\n\treturn stream;\n}\n\nvar __stream = {\n\tto_json: write_json_stream,\n\tto_html: write_html_stream,\n\tto_csv: write_csv_stream,\n  set_readable: set_readable\n};\nexport const version = XLSX.version;\nexport {\n\tparse_xlscfb,\n\tparse_zip,\n\treadSync as read,\n\treadFileSync as readFile,\n\treadFileSync,\n\twriteSync as write,\n\twriteFileSync as writeFile,\n\twriteFileSync,\n\twriteFileAsync,\n\twriteSyncXLSX as writeXLSX,\n\twriteFileSyncXLSX as writeFileXLSX,\n\tutils,\n\t__stream as stream,\n\tSSF,\n\tCFB\n};\n","import { getParts } from './utils/getParts.js';\n\nconst decoder = new TextDecoder('iso8859-1');\n\nexport function hgParseThermoFinnigan(blob) {\n  let text = decoder.decode(blob);\n\n  let lines = text.split(/\\r?\\n/);\n  let parts = getParts(lines);\n  let meta = {\n    solidReporting: parseMeta(parts, 'SOLID REPORTING'),\n    testInformation: parseMeta(parts, 'TEST INFORMATION'),\n    analyticalConditions: parseMeta(parts, 'ANALYTICAL CONDITIONS'),\n    preparation: parseMeta(parts, 'PREPARATION'),\n    totalPoreSize: parseMeta(parts, 'TOTAL PORE SIZE'),\n    tableTotalPoreSize: parseTable(parts, 'TABLE TOTAL PORE SIZE'),\n    tableTotalSurfaceArea: parseTable(parts, 'TABLE TOTAL SURFACE AREA'),\n  };\n\n  let variables = parseExperimentalData(parts['EXPERIMENTAL DATA']);\n\n  // remove undefined values\n  for (const key of Object.keys(meta)) {\n    if (meta[key] === undefined) {\n      delete meta[key];\n    }\n  }\n  return { meta, variables };\n}\n\nfunction parseTable(parts, label) {\n  if (!parts[label]) {\n    return undefined;\n  }\n  let lines = parts[label].map((line) =>\n    line\n      .replace(/,+$/, '')\n      .split(/; * /)\n      .map((field) => field.trim()),\n  );\n\n  let headers = lines[0]\n    .filter(Boolean)\n    .map(\n      (field, index) => `${field}[${lines[1][index].replaceAll(/[()]/g, '')}]`,\n    );\n\n  let result = [];\n  for (let i = 2; i < lines.length; i++) {\n    const line = lines[i];\n    const currentLine = {};\n    for (const [index, header] of headers.entries()) {\n      currentLine[header] = line[index];\n    }\n    result.push(currentLine);\n  }\n  return result;\n}\n\nfunction parseMeta(parts, label) {\n  let parsed = {};\n  if (!parts[label]) {\n    return undefined;\n  }\n  for (let line of parts[label]) {\n    let label = line.replace(/^(.*?); *(.*)$/, '$1').replace(/:? *$/, '');\n    let value = line\n      .replace(/^(.*?); *(.*)$/, '$2')\n      .replace(/,+$/, '')\n      .replace(' : ; ', ' : ');\n    if (!Number.isNaN(Number(value))) {\n      value = Number(value);\n    }\n    parsed[label] = value;\n  }\n  return parsed;\n}\n\nfunction parseExperimentalData(lines) {\n  let variables = lines[0]\n    .replace(/,+$/, '')\n    .split(/; * /)\n    .map((header) => header.trim())\n    .map((line, index) => {\n      return {\n        symbol: String.fromCodePoint(index + 65),\n        data: [],\n        label: line.replace(/ ?\\(.*/, ''),\n        units: line.replace(/.*\\((.*)\\).*/, '$1'),\n      };\n    });\n\n  for (let i = 1; i < lines.length; i++) {\n    let fields = lines[i].replace(/,*$/, '').split(/ *; */);\n    for (let j = 0; j < variables.length; j++) {\n      variables[j].data.push(Number(fields[j]));\n    }\n  }\n\n  const variablesObject = {};\n  for (const variable of variables) {\n    variablesObject[variable.symbol] = {\n      data: variable.data,\n      units: variable.units,\n      label: variable.label,\n    };\n  }\n\n  return variablesObject;\n}\n","import { ensureString } from 'ensure-string';\n\nexport function parseRes(res) {\n  res = ensureString(res);\n\n  let meta = {};\n  let currentMeta;\n  for (let line of res.split(/\\r?\\n/).filter(Boolean)) {\n    if (line.startsWith('[')) {\n      currentMeta = {};\n      meta[line.replace(/\\[(.*)\\]/, '$1')] = currentMeta;\n    } else {\n      const { field, value } = line.match(/(?<field>.*?)=(?<value>.*)/).groups;\n\n      currentMeta[field] = Number.isNaN(Number(value))\n        ? value\n        : Number.parseFloat(value);\n    }\n  }\n  return meta;\n}\n","import { read, utils } from 'xlsx';\n\nexport function parseXLSX(xlsx) {\n  const workbook = read(xlsx, { type: 'array' });\n  let parsedXLSX = [[]];\n  if (workbook.SheetNames.length === 0) {\n    parsedXLSX = parsePreabmle(workbook.Preamble);\n  }\n  for (let sheetName of workbook.SheetNames) {\n    const currentSheet = utils.sheet_to_json(workbook.Sheets[sheetName], {\n      header: 1,\n    });\n    if (currentSheet.length > parsedXLSX.length) {\n      parsedXLSX = currentSheet;\n    }\n  }\n  const variables = {\n    x: {\n      data: parsedXLSX.map((row) => row[0]),\n      units: 'mL/100g',\n      label: 'Oil volume per sample quantity',\n    },\n    y: {\n      data: parsedXLSX.map((row) => row[1]),\n      units: 'mNm',\n      label: 'Torque',\n    },\n  };\n  return variables;\n}\n\nfunction parsePreabmle(preamble) {\n  const keys = Object.keys(preamble).filter((key) => key.match(/^[AB]/));\n  const matrix = [[]];\n  for (let key of keys) {\n    let row = Number(key.replaceAll(/[^0-9]+/g, '')) - 1;\n    let column = key.replaceAll(/[0-9]+/g, '').codePointAt(0) - 65;\n    if (!matrix[row]) matrix[row] = [];\n    matrix[row][column] = preamble[key].v;\n  }\n  return matrix;\n}\n","import { parseRes } from './utils/parseRes.js';\nimport { parseXLSX } from './utils/parseXLSX.js';\n\nexport function oanParseHitec(xlsx, res) {\n  const variables = parseXLSX(xlsx);\n  const meta = parseRes(res);\n  return { variables, meta };\n}\n","const decoder = new TextDecoder('iso8859-1');\n\nexport function xrfParserPanalytical(blob) {\n  let text = decoder.decode(blob);\n\n  let lines = text.split(/\\r?\\n/);\n  let meta = {};\n  let headers;\n  let data = [];\n  let variables = {};\n  for (let line of lines) {\n    if (line.includes(':')) {\n      let fields = line.split(/ +: +/);\n      let value = fields.slice(1).join(':');\n      let numberValue = value.replaceAll(',', '.');\n      meta[fields[0]] = Number.isNaN(Number(numberValue))\n        ? value\n        : Number.parseFloat(numberValue);\n    } else if (line.match(/^[A-Z]/)) {\n      // header of tables\n      headers = line.split(/\\t/);\n    } else if (line.match(/^\\s*$/)) {\n      // skip this line\n    } else {\n      data.push(\n        line\n          .split(/\\t/)\n          .map((field) => Number.parseFloat(field.replace(',', '.'))),\n      );\n    }\n  }\n  for (let i = 0; i < headers.length; i++) {\n    let id;\n    switch (i) {\n      case 0:\n        id = 'X';\n        break;\n      case 1:\n        id = 'Y';\n        break;\n      default:\n        id = String.fromCodePoint(63 + i);\n    }\n    let units = headers[i].split('(')[1];\n    units = units ? units.replace(')', '') : '';\n    variables[id] = {\n      label: headers[i].replace(/ \\(.*/, ''),\n      units,\n      data: data.map((datum) => datum[i]),\n    };\n  }\n  return { meta, variables };\n}\n","import { Analysis } from 'common-spectrum';\nimport { oanParseHitec } from 'physical-chemistry-parser';\n\nexport function fromHitec(xls, res) {\n  let analysis = new Analysis();\n  const parsed = oanParseHitec(xls, res);\n\n  let meta = {};\n  for (let key in parsed.meta) {\n    meta = { ...meta, ...parsed.meta[key] };\n  }\n  const cheminfo = {\n    meta: {\n      procAA: { value: meta.ProcA_A, units: 'mL/100g' },\n      procAB: { value: meta.ProcA_B, units: 'mL/100g' },\n      procBA: { value: meta.ProcB_A, units: 'mL/100g' },\n      procBB: { value: meta.ProcB_B, units: 'mL/100g' },\n      maxTorque: { value: meta.TorqueMax, units: 'mNm' },\n    },\n  };\n\n  meta.cheminfo = cheminfo;\n\n  analysis.pushSpectrum(\n    {\n      x: parsed.variables.x,\n      y: parsed.variables.y,\n    },\n    {\n      dataType: 'Oil Absorption Number (OAN)',\n      title: meta.Meta,\n      meta,\n    },\n  );\n\n  return analysis;\n}\n"],"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","xBinning","binSize","numberOfPoints","keepFirstAndLast","RangeError","isInteger","binByNumberOfPoints","effectiveBinSize","innerLength","innerBinCount","ceil","start","end","min","k","outputLength","innerBins","Matrix","matrix","MatrixTransposeView","solve","xMean","sumValue","xVariance","values","unbiased","mean","sqrError","xStandardDeviation","sqrt","xDivide","xEnsureFloat64","FFT","size","_csize","table","Array","angle","PI","cos","sin","power","t","_width","_bitrev","shift","revShift","_out","_data","_inv","fromComplexArray","complex","storage","res","createComplexArray","toComplexArray","completeSpectrum","spectrum","half","transform","out","data","_transform4","realTransform","_realTransform4","inverseTransform","width","step","len","outOff","bitrev","off","_singleTransform2","_singleTransform4","inv","quarterLen","limit","A","B","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","div","delta","base","firstExponent","log","stringify","object","replacer","space","internalReplacer","key","ArrayBuffer","isView","JSON","xSubtract","xMaxValue","maxValue","xMinValue","minValue","xIsEquallySpaced","tolerance","maxDx","minDx","MAX_SAFE_INTEGER","absoluteDifference","xIsMonotonic","at","xMedianAbsoluteDeviation","averageDeviations","mad","xMinMaxValues","max","Y1","P1","Q1","Y2","P2","Q2","Y3","P3","Q3","Y4","P4","Q4","Y5","P5","Q5","polyval","c","p","coef","calc","v","P","Q","Y","s","r","erfcinv","sign","val","q","g","NaN","NEGATIVE_INFINITY","simpleNormInv","magnitudeMode","result","SQRT2","simpleNormInvNumber","xNoiseSanPlot","mask","cutOff","refine","scaleFactor","factorStd","fixOffset","prepareData","medianIndex","firstNegativeValueIndex","findIndex","e","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","round","push","minKi","whereToCutStat","top","elementsOfCutOff","filter","averageValue","element","kiSqrt","logBaseY","scale","y","reverse","log10","logOfBase","xAxis","_e","sort","xNoiseStandardDeviation","sd","xSum","xNormed","algorithm","absoluteSumValue","absoluteSum","currentMaxValue","factor","sumFactor","String","xPadding","fromEnd","toEnd","xParetoNormalization","sqrtSD","xRescale","currentMin","currentMax","xRolling","window","padding","padded","newArray","subarray","xRollingAverage","xRollingMedian","matrixCheck","firstLength","matrixCholeskySolver","nonZerosArray","dimension","permutationEncoded","pinv","Int32Array","mt","a","ar","ac","nnz","ap","ai","ax","lnz","idx","col","colOffset","adr","d","lp","parent","lnzArray","flag","pattern","bp1","ldlSymbolic","nz","lx","li","ldlNumeric","b","ldlPerm","ldlLsolve","ldlDsolve","ldlLTsolve","ldlPermt","apLoc","aiLoc","parentLoc","lnzLoc","flagLoc","kk","p2","axLoc","lpLoc","liLoc","lxLoc","dLoc","yLoc","patternLoc","yi","lKi","p2col","xLoc","perm","bLoc","matrixCuthillMckee","list","adj","visited","fill","l","toVisit","eol","ptr","nbhd","u","matrixMinMaxZ","nbRows","nbColumns","column","row","xyCheck","xyEnsureGrowingX","prevX","currentIndex","zonesNormalize","zones","exclusions","map","zone","currentZone","beforeExclusionsZones","normalizedExclusions","currentExclusionIndex","results","zoneIndex","zonesWithPoints","normalizedZones","zonesWithNumberOfPoints","totalSize","reduce","previous","current","unitsPerPoint","currentTotal","tempZone","tempZoneNumberOfPoints","equallySpacedSlot","xLength","halfStep","lastStep","previousX","MAX_VALUE","previousY","nextX","nextY","frontOutsideSpectra","backOutsideSpectra","currentValue","currentPoints","main","integral","x0","x1","slope","intercept","equallySpacedSmooth","initialOriginalStep","lastOriginalStep","MIN_SAFE_INTEGER","sumAtMin","sumAtMax","add","getSlope","y0","y1","xyEquallySpaced","variant","zonesWithPointsRes","xResult","yResult","zoneResult","processZone","concat","xyFilterX","currentZoneIndex","newX","newY","position","xyFilterXPositive","xyGrowingX","toReversed","xyInterpolateLinear","xTarget","sparseIndex","targetX","leftIdx","rightIdx","addStyle","serie","color","opacity","lineWidth","match","toUpperCase","replace","style","name","line","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","type","strokeWidth","fillColor","centerMean","centerMedian","normed","divideBySD","rescale","paretoNormalization","updateSystem","weights","nbPoints","newMatrix","newVector","w","diag","next","getDeltaMatrix","lambda","last","lowerTriangularNonZeros","permutationEncodedArray","airPLS","xWork","yWork","optionsWork","shouldDownsample","getDownSampleData","controlPoints","getControlPoints","maxIterations","baseline","iteration","sumNegDifferences","corrected","stopCriterion","getStopCriterion","threshold","prevNegSum","leftHandSide","rightHandSide","cho","applyCorrection","absChange","exp","finalBaseline","finalCorrected","error","autoDownsample","maxResolution","getDownsampleFactor","downsampledControlPoints","Int8Array","closestIndex","range","indexFrom","indexTo","originalLength","targetResolution","sequentialFill","isArray","airPLSBaseline","ys","numberPoints","regressionOptions","airpls","correctedSpectrum","checkArrayLength","BaseRegression","constructor","new","predict","_predict","xVal","train","precision","toLaTeX","score","n","y2","ySum","chi2","rmsd","xSquared","ySquared","xY","r2","maybeToPrecision","number","figures","toPrecision","PolynomialRegression","degree","powers","coefficients","regress","coefficient","toJSON","_toFormula","isLaTeX","sup","closeSup","times","fn","str","startsWith","load","json","interceptAtZero","nCoefficients","F","set","FT","mmul","to1DArray","baselineCorrectionRegression","Regression","fitting","oldFitting","regression","iterativePolynomialBaseline","rollingAverageBaseline","defaults","actualOptions","rollingBall","maxima","minima","windowM","windowS","windowLeft","windowRight","rollingBallBaseline","rollingMedianBaseline","baselineFct","sgg","xs","windowSize","derivative","polynomial","console","warn","np","ans","fullWeights","hs","constantH","wg1","wg2","d1","d2","getHs","wg","h","center","count","gramPoly","m","Grampoly","genFact","gf","weight","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","alpha","beta","gamma","xCurrent","xPrevious","gsd","noiseLevel","sgOptions","smoothY","maxCriteria","minMaxRatio","realTopDetection","peakDetectionAlgorithm","isEquallySpaced","noiseInfo","xValue","minY","maxY","peakData","calibrateX","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","isFinite","isNumber","identity","uniq","strings","seen","item","hasOwnProperty","compareArray","assign","properties","keys","forEach","mulSafe","decimals","arguments","arg","getFractional","divSafe","num","den","pow","invDen","QtyError","err","create","apply","message","stack","throwIncompatibleUnits","left","right","UNITS","BASE_UNITS","UNITY","UNITY_ARRAY","validateUnitDefinition","unitDef","definition","scalar","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","vector","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","join","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","other","isCompatible","isInverse","inverse","baseUnitCache","toBaseUnits","mul","toFloat","isUnitless","toPrec","precQuantity","precRoundedResult","swiftConverter","srcUnits","srcQty","dstQty","eq","convert","converter","sub","op1","op2","numdenscale","cleanTerms","num1","den1","num2","den2","notUnity","combined","combineTerms","terms","direction","prefix","prefixValue","combinedPrefixValue","prop","compareTo","lt","lte","gt","gte","same","every","_isBase","NestedMap","get","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","random","clone","ids","fromJSON","pushSpectrum","standardizeData","getXY","normalizedSpectra","getSpectrum","getXLabel","getYLabel","analysisOptions","entries","appendDistinctParameter","appendDistinctValue","AnalysesManager","analysesManager","addAnalysis","getAnalysisIndex","getAnalyses","processedAnalysisIds","Set","has","getSpectra","getAnalysisBySpectrumId","getSpectrumById","getDistinctTitles","getDistinctUnits","getDistinctLabelUnits","normalizeLabelUnits","getDistinctLabels","getDistinctDataTypes","getDistinctMeta","removeAllAnalyses","splice","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","f","_ref","quickSelectMedian","$","E","o","Boolean","te","ne","ms","pageValue","chromatogram","re","O","V","logger","xFactor","info","yFactor","isXYdata","firstX","firstY","codePointAt","I","S","X","L","N","trace","M","oe","isPeaktable","ue","ce","isXYAdata","se","Z","lastY","pe","ae","z","minX","maxX","minZ","maxZ","noise","ntuples","symbol","find","some","ie","first","H","nbContourLevels","U","fe","noiseMultiplier","zValue","lines","_","ee","T","segments","G","noContour","contourLines","minMax","observeFrequency","shiftOffsetVal","lastX","tmp","$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","entry","currentSpectrum","addInfoData","header","checkMatrix","checkNumberOrArray","getExtremeValues","firstRow","firstLast","creatorNtuples","owner","origin","resInfo","varName","varType","varDim","isDependent","point","getFactorNumber","getBestFactor","onlyInteger","extremeValues","getNumber","rounded","EPSILON","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","JSGraph","current_ansi","VALID_ANSI","CS2CP","set_ansi","cp","reset_ansi","set_cp","reset_cp","char_codes","utf16leread","fromCharCode","utf16beread","debom","c1","c2","_getchar","_gc1","_getansi","_ga1","$cptable","Base64_map","Base64_encode","c3","e1","e2","e3","e4","Base64_decode","has_buf","Buffer","process","versions","node","Buffer_from","nbfs","buf","enc","bind","new_raw_buf","alloc","new_unsafe_buf","allocUnsafe","s2a","a2s","ab2a","bconcat","bufs","isBuffer","maxlen","utf8decode","content","widx","ridx","chr0","chr1","_strrev","pad0","pad_","rpad_","pad0r1","pad0r2","p2_32","pad0r","SSF_isgeneral","days","months","SSF_init_table","table_fmt","SSF_default_map","SSF_default_str","SSF_frac","mixed","sgn","P_2","P_1","Q_2","Q_1","SSF_parse_date_code","opts","b2","date","dow","dout","date1904","setDate","getDate","getFullYear","getMonth","getDay","SSF_fix_hijri","SSFbasedate","SSFdnthresh","getTime","SSFbase1904","datenum_local","epoch","getTimezoneOffset","SSF_strip_decimal","SSF_normalize_exp","SSF_small_exp","toFixed","toExponential","SSF_large_exp","SSF_general_num","LOG10E","SSF_general","SSF_format","SSF_write_date","fmt","ss0","ss","tt","outl","outstr","commaify","pct1","write_num_pct","sfmt","write_num","write_num_cm","write_num_exp","period","fakee","$$","$1","$2","$3","frac1","write_num_f1","aval","parseInt","rr","myn","myd","write_num_f2","dec1","closeparen","phone","hashq","cc","rnd","dd","dec","_frac","carry","flr","write_num_flt","ffmt","ri","ff","oa","lres","rres","write_num_cm2","write_num_pct2","write_num_exp2","write_num_int","lastIndexOf","SSF_split_fmt","in_str","SSF_abstime","fmt_is_date","eval_fmt","flen","lst","dt","hr","bt","ssm","nstr","jj","vv","myv","ostr","decpt","lasti","retval","cfregex2","chkcond","thresh","choose_fmt","lat","m1","m2","dateNF","SSF_load","make_ssf","SSFImplicit","dateNFregex","dateNF_regex","dateNF_fix","datestr","timestr","CRC32","signed_crc_table","T0","slice_by_16_tables","TT","T1","T2","T3","T4","T5","T6","T7","T8","T9","Ta","Tb","Tc","Td","Te","Tf","crc32_bstr","bstr","seed","crc32_buf","crc32_str","CFB","_CFB","namecmp","dirname","filename","write_dos_date","hms","getHours","getMinutes","getSeconds","write_shift","ymd","parse_dos_date","read_shift","setMilliseconds","setFullYear","setMonth","setHours","setMinutes","setSeconds","parse_extra_field","prep_blob","sz","tgt","mtime","atime","ctime","fs","get_fs","file","parse_zip","parse_mad","mver","ssz","nmfs","difat_sec_cnt","dir_start","minifat_start","difat_start","fat_addrs","mv","check_get_mver","check_shifts","dir_cnt","chk","sectors","sectorify","sleuth_fat","sector_list","make_sector_list","ENDOFCHAIN","files","Paths","FileIndex","FullPaths","read_directory","build_full_paths","raw","HEADER_SIGNATURE","nsectors","FI","FP","pl","dad","get_mfat_entry","payload","mini","MSSZ","__readInt32LE","new_buf","cnt","sector","get_sector_list","chkd","buf_chain","modulus","addr","nodes","__toBuffer","sl","minifat_store","namelen","__utf16le","clsid","state","ct","read_date","offset","__readUInt32LE","read_file","readFileSync","read","init_cfb","cfb","root","CLSID","seed_cfb","nm","rebuild_cfb","gc","_file","fullPaths","HEADER_CLSID","elt","_write","_opts","fileType","write_mad","write_zip","mini_size","fat_size","mini_cnt","mfat_cnt","fat_base","fat_cnt","difat_cnt","HEADER_SIG","chainit","consts","DIFSECT","FATSECT","_nm","copy","path","UCFullPaths","UCPaths","UCPath","MAXREGSECT","FREESECT","HEADER_MINOR_VERSION","MAXREGSID","NOSTREAM","EntryTypes","write_file","writeFileSync","write","_zlib","use_zlib","zlib","InflateRaw","InflRaw","_processChunk","_finishFlushFlag","bytesRead","_inflateRawSync","usz","_inflate","_deflateRawSync","deflateRawSync","_deflate","CLEN_ORDER","LEN_LN","DST_LN","bit_swap_8","use_typed_arrays","bitswap8","bit_swap_n","rev","read_bits_2","bl","read_bits_3","read_bits_4","read_bits_5","read_bits_7","read_bits_n","write_bits_3","write_bits_1","write_bits_8","write_bits_16","realloc","zero_fill_array","build_tree","clens","cmap","MAX","ccode","bl_count","Uint16Array","ctree","cleni","fix_lmap","fix_dmap","dlens","_deflateRaw","_deflateRawIIFE","DST_LN_RE","LEN_LN_RE","write_stored","boff","write_huff_fixed","addrs","hash","mlen","len_eb","dst_eb","dyn_lmap","dyn_dmap","dyn_cmap","dyn_len_1","dyn_len_2","dyn","_HLIT","_HDIST","_HCLEN","next_code","hcodes","h1","h2","inflate","outbuf","woff","OL","max_len_1","max_len_2","bits","code","warn_or_throw","wrn","msg","fcnt","start_cd","csz","efsz","fcsz","EF","parse_local_file","meth","crc32","_csz","_usz","ef","cfb_add","unsafe","cdirs","method","compression","fp","fi","crcs","sz_cd","namebuf","ContentTypeMap","get_content_type","ctype","ext","write_base64_76","write_quoted_printable","text","encoded","si","parse_quoted_printable","di","oi","parse_mime","fname","cte","fdata","mboundary","start_di","ca","cstr","dispcnt","csl","qp","cfb_new","fpath","utils","cfb_gc","cfb_del","cfb_mov","old_name","new_name","writeFile","ReadShift","CheckField","_inflateRaw","read_binary","Deno","File","Folder","infile","open","close","ks","o2","evert","obj","basedate","datenum","dnthresh","refdate","refoffset","numdate","setTime","parse_isodur","sec","good_pd_date_1","good_pd_date","good_pd","parseDate","fixdate","cc2str","arr","debomit","utf8write","dup","fuzzynum","wt","lower_months","fuzzydate","getYear","split_regex","safe_split_regex","def","getdatastr","asNodeBuffer","asBinary","getContent","getdatabin","getdata","safegetzipfile","zip","getzipfile","getzipdata","safe","getzipstr","getzipbin","zipentries","zip_add_file","zip_read","resolve_path","XML_HEADER","attregexg","tagregex1","tagregex2","tagregex","nsregex","nsregex2","parsexmltag","skip_root","skip_LC","quot","strip_ns","encodings","rencoding","unescapexml","encregex","coderegex","decregex","htmlcharegex","escapehtml","xlml_fixstr","entregex","entrepl","parsexmlbool","utf8reada","orig","utf8readb","ww","utf8readc","utf8corpus","utf8read","matchtag","mtcache","htmldecode","entities","vtregex","vt_cache","vt_regex","vtvregex","vtmregex","parseVector","matches","baseType","WTF","wtregex","wxt_helper","writextag","xlml_normalize","xlmlregex","XMLNS","CT","XMLNS_main","read_double_le","Infinity","write_double_le","bs","av","LN2","___toBuffer","___utf16le","__readUInt16LE","___hexlify","__hexlify","___utf8","__readUInt8","__utf8","utf8_b","___lpstr","__lpstr","___cpstr","__cpstr","___lpwstr","__lpwstr","___lpp4","lpp4_","__lpp4","___8lpp4","__8lpp4","___double","__double","is_buf","is_buf_a","lpstr_b","readUInt32LE","cpstr_b","lpwstr_b","lpp4_b","lpp4_8b","double_","readDoubleLE","is_buf_b","__readInt16LE","__readInt32BE","oI","oR","oo","loc","lens","__writeUInt32LE","__writeInt32LE","__writeUInt16LE","WriteShift","hexstr","fld","pos","parsenoop","recordhopper","cb","tmpbyte","cntbyte","RT","XLSBRecordEnum","buf_array","blksz","newblk","ba_newblk","curbuf","endbuf","ba_endbuf","ba_next","ba_end","ba_push","_bufs","shift_cell_xls","cell","cRel","rRel","biff","shift_range_xls","encode_cell_xls","encode_cell","fix_col","fix_row","encode_range_xls","encode_col","encode_row","decode_row","rowstr","unfix_row","decode_col","colstr","unfix_col","split_cell","decode_cell","decode_range","encode_range","cs","safe_decode_range","safe_format_cell","XF","numFmtId","format_cell","BErr","sheet_to_workbook","sheet","sheets","SheetNames","Sheets","sheet_add_aoa","_ws","dense","ws","_R","_C","_origin","_range","__R","__C","nullError","sheetStubs","cellDates","cell_ref","aoa_to_sheet","parse_Int32LE","parse_XLWideString","cchCharacters","parse_StrRun","ich","ifnt","parse_RichStr","rgsStrRun","dwSizeStrRun","parse_BrtCommentText","parse_XLSBCell","iStyleRef","parse_XLSBShortCell","parse_XLSBCodeName","parse_XLNullableWideString","parse_XLNameWideString","parse_RelID","parse_RkNumber","fX100","fInt","RK","parse_RfX","parse_UncheckedRfX","parse_Xnum","parse_BrtColor","xColorType","nTS","bR","bG","bB","auto","icv","XLSIcv","rgb","rgb2Hex","theme","tint","parse_FontFlags","fBold","fItalic","fUnderline","fStrikeout","fOutline","fShadow","fCondense","fExtend","parse_ClipboardFormatOrString","ClipFmt","parse_ClipboardFormatOrAnsiString","parse_ClipboardFormatOrUnicodeString","VT_I2","VT_I4","VT_BOOL","VT_VARIANT","VT_UI4","VT_FILETIME","VT_BLOB","VT_CF","VT_VECTOR_VARIANT","VT_VECTOR_LPSTR","VT_STRING","VT_USTR","VT_CUSTOM","DocSummaryPIDDSI","SummaryPIDSI","CountryEnum","XLSFillPattern","rgbify","_XLSIcv","RBErr","ct2type","new_ct","workbooks","charts","dialogs","macros","rels","strs","comments","threadedcomments","links","coreprops","extprops","custprops","themes","styles","calcchains","vba","drawings","metadata","people","TODO","xmlns","parse_ct","ctext","Extension","ContentType","PartName","calcchain","sst","RELS","WB","SHEET","HLINK","VML","XPATH","XMISS","XLINK","CXML","CXMLP","CMNT","CORE_PROPS","EXT_PROPS","CUST_PROPS","SST","STY","THEME","CHART","CHARTEX","CS","WS","DS","MS","IMG","DRAW","XLMETA","TCMNT","PEOPLE","VBA","get_rels_path","parse_rels","currentFilePath","rel","Type","Target","Id","TargetMode","canonictarget","CT_ODS","parse_manifest","Rn","FEtag","CORE_PROPS_REGEX","parse_core_props","cur","load_props_pairs","HP","TOP","props","hp","Worksheets","NamedRanges","DefinedNames","Chartsheets","ChartNames","parse_ext_props","xml","HeadingPairs","TitlesOfParts","custregex","parse_cust_props","toks","XLMLDocPropsMap","Title","Subject","Author","Keywords","Comments","LastAuthor","RevNumber","Application","LastPrinted","CreatedDate","ModifiedDate","Category","Manager","Company","AppVersion","ContentStatus","Identifier","Language","evert_XLMLDPM","xlml_set_prop","Props","parse_FILETIME","dwLowDateTime","dwHighDateTime","toISOString","parse_lpstr","pad","parse_lpwstr","parse_VtStringBase","stringType","parse_VtString","parse_VtUnalignedString","parse_VtVecLpwstrValue","ret","parse_VtVecUnalignedLpstrValue","parse_VtHeadingPair","headingString","parse_TypedPropertyValue","headerParts","parse_VtVecHeadingPairValue","cElements","parse_dictionary","CodePage","dict","pid","parse_BLOB","bytes","parse_ClipboardData","Size","parse_PropertySet","PIDSI","start_addr","NumProps","Dictionary","DictObj","PropID","Offset","PropH","fail","piddsi","oldpos","parsebool","parse_PropertySetStream","NumSets","FMTID0","FMTID1","Offset0","Offset1","SystemIdentifier","PSet0","rval","FMTID","PSet1","parsenoop2","parslurp","parseuint16","parseuint16a","parse_Bes","parse_ShortXLUnicodeString","cch","current_codepage","fHighByte","parse_XLUnicodeRichExtendedString","fExtSt","fRichSt","cRun","cbExtRst","parse_XLUnicodeStringNoCch","parse_XLUnicodeString","parse_XLUnicodeString2","parse_ControlInfo","accel","parse_URLMoniker","extra","url","parse_FileMoniker","cAnti","preamble","ansiPath","unicodePath","parse_HyperlinkMoniker","parse_HyperlinkString","parse_Hyperlink","sVer","displayName","targetFrameName","moniker","oleMoniker","Loc","guid","fileTime","Tooltip","parse_LongRGBA","parse_LongRGB","parse_XLSCell","rw","ixfe","parse_frtHeader","rt","parse_OptXLUnicodeString","parse_XTI","iSupBook","itabFirst","itabLast","parse_RkRec","parse_AddinUdf","udfName","parse_Ref8U","rwFirst","rwLast","colFirst","colLast","parse_RefU","parse_Ref","parse_FtCmo","ot","parse_FtNts","fSharedNote","parse_FtCf","cf","parse_FtSkip","FtTab","parse_FtArray","fts","ft","parse_BOF","BIFFVer","parse_InterfaceHdr","parse_WriteAccess","UserName","parse_WsBool","fDialog","fBelow","fRight","parse_BoundSheet8","hidden","parse_SST","ucnt","Count","Unique","parse_ExtSST","extsst","dsst","parse_Row","miyRw","level","hpt","parse_ForceFullCalculation","fullcalc","parse_RecalcId","parse_DefaultRowHeight","fl","Unsynced","DyZero","ExAsc","ExDsc","parse_Window1","xWn","yWn","dxWn","dyWn","iTabCur","iTabFirst","ctabSel","wTabRatio","Pos","Dim","Flags","CurTab","FirstTab","Selected","TabRatio","parse_Window2","RTL","parse_Pane","parse_Font","dyHeight","parse_LabelSst","isst","parse_Label","biffguess","parse_Format","fmtstr","parse_BIFF2Format","parse_Dimensions","parse_RK","rkrec","rknum","parse_MulRk","rkrecs","lastcol","parse_MulBlank","ixfes","parse_CellStyleXF","patternType","cellStyles","alc","fWrap","alcV","fJustLast","trot","cIndent","fShrinkToFit","iReadOrder","fAtrNum","fAtrFnt","fAtrAlc","fAtrBdr","fAtrPat","fAtrProt","dgLeft","dgRight","dgTop","dgBottom","icvLeft","icvRight","grbitDiag","icvTop","icvBottom","icvDiag","dgDiag","icvFore","icvBack","fsxButton","parse_XF","fStyle","parse_Guts","parse_BoolErr","parse_Number","xnum","parse_XLHeaderFooter","parse_SupBook","ctab","sbcch","virtPath","rgst","parse_ExternName","body","fBuiltIn","fWantAdvise","fWantPict","fOle","fOleLink","fIcon","Name","XLSLblBuiltIn","parse_Lbl","chKey","cce","itab","npflen","rgce","parse_NameParsedFormula","parse_ExternSheet","parse_BIFF5ExternSheet","parse_NameCmt","cchName","cchComment","comment","parse_ShrFmla","ref","cUse","parse_SharedParsedFormula","parse_Array","parse_ArrayParsedFormula","parse_MTRSettings","fMTREnabled","fUserSetThreadCount","cUserThreadCount","parse_NoteSh","idObj","stAuthor","parse_Note","parse_MergeCells","merges","cmcs","parse_Obj","parse_BIFF5Obj","cmo","parse_BIFF5OT","grbit","parse_TxO","texts","lastobj","controlInfo","cchText","hdr","parse_HLink","hlink","parse_HLinkTooltip","wzTooltip","parse_Country","parse_ClrtClient","ccv","parse_Palette","parse_XFCRC","cxfs","crc","parse_ColInfo","coldx","parse_Setup","footer","parse_ShtProps","area","parse_Blank","parse_Scl","parse_String","parse_ImData","env","lcb","parse_BIFF2STR","parse_BIFF2NUM","parse_BIFF2INT","parse_BIFF2STRING","parse_BIFF2FONTXTRA","parse_RString","DBF_SUPPORTED_VERSIONS","DBF","dbf_codepage_map","dbf_reverse_map","dbf_to_aoa","memo","vfp","l7","nrow","fpos","rlen","current_cp","codepage","fields","field","hend","sheetRows","dbf_to_sheet","wch","dbf_to_workbook","_RLEN","sheet_to_dbf","ba","aoa","sheet_to_json","headers","cols","hcnt","coltypes","colwidths","coldecimals","guess","_guess","hf","_f","hb","rout","_n","_s","to_workbook","to_sheet","from_sheet","SYLK","sylk_escapes","AA","BA","CA","DA","HA","JA","AE","BE","CE","HE","AI","BI","CI","HI","AO","BO","CO","DO","HO","AU","BU","CU","HU","Aa","Ba","Ca","Da","Ha","Ja","Ae","Be","Ce","He","Hi","Ao","Bo","Co","Do","Ho","Au","Bu","Cu","Hu","KC","Kc","DN","Dn","Hy","sylk_char_regex","sylk_char_fn","decode_sylk_char","newcc","sylk_to_aoa","sylk_to_aoa_str","records","rj","formats","next_cell_format","sht","rowinfo","colinfo","cw","Mval","rstr","record","C_seen_K","C_seen_X","C_seen_S","C_seen_E","formula","rc_to_a1","shrbase","shift_formula_str","F_seen","process_col","hpx","pt2px","sylk_to_sheet","aoasht","sylk_to_workbook","write_ws_cell_sylk","a1_to_rc","write_ws_cols_sylk","rec","wpx","width2px","px2char","write_ws_rows_sylk","rows","px2pt","sheet_to_sylk","RS","coord","DIF","dif_to_aoa","dif_to_aoa_str","dif_to_sheet","dif_to_workbook","sheet_to_dif","push_field","pf","topic","push_value","po","ETH","encode","eth_to_aoa","eth_to_sheet","eth_to_workbook","sep","sheet_to_eth_data","sheet_to_eth","PRN","set_text_arr","prn_to_aoa_str","guess_seps","guess_sep_weights","guess_sep","instr","dsv_to_sheet_str","FS","sepcc","startcc","_re","finish_cell","fuzzyfmla","cellText","cellNF","outer","prn_to_sheet_str","prn_to_sheet","firstbyte","prn_to_workbook","sheet_to_prn","read_wb_ID","OLD_WTF","WK_","lotushopper","Enum","WK1Enum","lotus_to_workbook","lotus_to_workbook_buf","next_n","sidx","snames","realnames","refguess","vers","qpro","tmpcell","WK3Enum","osheets","rnames","sheet_to_wk1","write_biff_rec","write_BOF_WK1","write_RANGE","max_R","write_INTEGER","write_NUMBER","write_LABEL","book_to_wk3","wb","write_BOF_WK3","write_XFORMAT_SHEETNAME","wsidx","write_NUMBER_17","write_LABEL_16","wscnt","parse_RANGE","parse_cell","parse_LABEL","parse_INTEGER","parse_NUMBER","parse_FORMULA","wk1_fmla_to_csf","wk1_parse_rc","FuncTab","BinOpTab","argc","argL","argR","args","parse_cell_3","parse_LABEL_16","parse_NUMBER_18","parse_NUMBER_17","v1","v2","log2","parse_FORMULA_19","parse_NUMBER_25","parse_NUMBER_27","parse_FORMULA_28","parse_SHEETNAMECS","parse_SHEETNAMELP","parse_SHEETINFOQP","parse_XFORMAT","parse_rpr","rpr","font","pass","shadow","outline","strike","uval","family","valign","parse_rs","tregex","rpregex","parse_r","rregex","rend","rs","rs_to_html","parse_rs_factory","nlregex","parse_rpr2","intro","outro","align","r_to_html","sitregex","sirregex","sirphregex","parse_si","html","cellHTML","sstr0","sstr1","sstr2","parse_sst_xml","uniqueCount","parse_BrtBeginSst","parse_sst_bin","hopper_sst","_JS2ANSI","parse_CRYPTOVersion","Major","Minor","parse_DataSpaceVersionInfo","parse_DataSpaceMapEntry","comps","parse_DataSpaceMap","parse_DataSpaceDefinition","parse_TransformInfoHeader","parse_Primary","ename","cmode","parse_EncryptionHeader","AlgID","valid","AlgIDHash","KeySize","ProviderType","CSPName","parse_EncryptionVerifier","Salt","Verifier","VerifierHash","parse_EncryptionInfo","parse_EncInfoStd","parse_EncInfoExt","parse_EncInfoAgl","verifier","KeyData","xml_agile","encryptedHmacKey","encryptedHmacValue","encs","uri","parse_RC4CryptoHeader","EncryptionVersionInfo","EncryptionHeader","EncryptionVerifier","parse_RC4Header","EncryptedVerifier","EncryptedVerifierHash","crypto_CreatePasswordVerifier_Method1","Password","PasswordArray","PasswordDecoded","PasswordByte","Intermediate1","Intermediate2","Intermediate3","crypto_CreateXorArray_Method1","PadArray","InitialCode","XorMatrix","Ror","Byte","XorRor","byte1","byte2","CreateXorKey_Method1","XorKey","CurrentElement","Char","password","Index","ObfuscationArray","Temp","PasswordLastChar","PadIndex","crypto_DecryptData_Method1","Data","XorArrayIndex","XorArray","Value","crypto_MakeXorDecryptor","parse_XORObfuscation","verificationBytes","insitu","parse_FilePassHeader","Info","parse_FilePass","RTF","rtf_to_sheet","rtf_to_sheet_str","rowtf","rtfre","last_index","rtf_to_workbook","sheet_to_rtf","hex2RGB","rgb2HSL","H6","L2","hsl2RGB","hsl","h6","rgb_tint","hex","DEF_MDW","MAX_MDW","MIN_MDW","MDW","px","char2width","chr","cycle_width","collw","find_mdw_colw","_MDW","coll","customWidth","DEF_PPI","PPI","XLMLPatternTypeMap","parse_borders","Borders","border","diagonalUp","diagonalDown","parse_fills","Fills","bgColor","indexed","fgColor","parse_fonts","Fonts","bold","italic","underline","condense","extend","vertAlign","scheme","themeElements","clrScheme","parse_numFmts","NumberFmt","formatCode","cellXF_uint","cellXF_bool","parse_cellXfs","CellXf","xf","alignment","vertical","horizontal","textRotation","indent","wrapText","parse_sty_xml","make_pstyx","numFmtRegex","cellXfRegex","fillsRegex","fontsRegex","bordersRegex","parse_BrtFmt","stFmtCode","parse_BrtFont","bls","bCharSet","charset","parse_BrtFill","parse_BrtXF","ixfeParent","ifmt","parse_BrtBorder","parse_sty_bin","hopper_sty","XLSXThemeClrScheme","parse_clrScheme","lastClr","parse_fontScheme","parse_fmtScheme","clrsregex","fntsregex","fmtsregex","parse_themeElements","themeltregex","parse_theme_xml","write_theme","Themes","parse_Theme","dwThemeVersion","themeXML","parse_ColorTheme","parse_FullColorExt","xclrType","nTintShade","xclrValue","parse_IcvXF","parse_XFExtGradient","parse_ExtProp","extType","parse_XFExt","cexts","update_xfext","xfext","xfe","parse_BrtMdtinfo","parse_BrtMdb","parse_BrtBeginEsmdb","parse_xlmeta_bin","Types","Cell","metatype","parse_xlmeta_xml","lastmeta","offsets","parse_cc_xml","parse_BrtCalcChainItem$","parse_cc_bin","hopper_cc","parse_xlink_xml","parse_xlink_bin","xlink_parse","parse_drawing","sheet_insert_comments","threaded","author","parse_comments_xml","authors","commentList","authtag","cmnttag","cm","authorId","textMatch","parse_tcmnt_xml","tidx","xml_tcmnt","personId","parse_people_xml","displayname","parse_BrtBeginComment","iauthor","rfx","parse_BrtCommentAuthor","parse_comments_bin","hopper_cmnt","CT_VBA","make_vba_xls","newcfb","newpath","parse_ds_bin","parse_ds_xml","parse_ms_bin","parse_ms_xml","rcregex","rcbase","rcfunc","fstr","crefregex","$0","$4","$5","shift_formula_xlsx","_xlfn","parseread1","parse_ColRelU","parse_RgceArea","parse_RgceArea_BIFF2","parse_RgceAreaRel","parse_RgceLoc","parse_RgceLoc_BIFF2","parse_RgceElfLoc","fQuoted","parse_RgceLocRel","parse_RgceLocRel_BIFF2","cl","rl","parse_PtgArea","parse_PtgArea3d","ixti","parse_PtgAreaErr","parse_PtgAreaErr3d","parse_PtgAreaN","parse_PtgArray","parse_PtgAttrBaxcel","bitSemi","bitBaxcel","parse_PtgAttrChoose","parse_PtgAttrGoto","bitGoto","parse_PtgAttrIf","bitIf","parse_PtgAttrIfError","parse_PtgAttrSemi","parse_PtgAttrSpaceType","parse_PtgAttrSpace","parse_PtgAttrSpaceSemi","parse_PtgRef","parse_PtgRefN","parse_PtgRef3d","parse_PtgFunc","iftab","FtabArgc","Ftab","parse_PtgFuncVar","cparams","tab","parsetab","Cetab","parse_PtgAttrSum","parse_PtgExp","parse_PtgErr","parse_PtgInt","parse_PtgBool","parse_PtgNum","parse_PtgStr","parse_SerAr","parse_PtgExtraMem","parse_PtgExtraArray","parse_PtgName","nameindex","parse_PtgNameX","parse_PtgNameX_BIFF5","parse_PtgMemArea","parse_PtgMemFunc","parse_PtgRefErr","parse_PtgRefErr3d","parse_PtgMemErr","parse_PtgMemNoMem","parse_PtgTbl","parse_PtgElfLoc","parse_PtgElfNoop","parse_PtgElfCol","parse_PtgElfColS","parse_PtgElfColSV","parse_PtgElfColV","parse_PtgElfLel","parse_PtgElfRadical","parse_PtgElfRadicalLel","parse_PtgElfRadicalS","parse_PtgElfRw","parse_PtgElfRwV","PtgListRT","parse_PtgList","coltype","parse_PtgSxName","parse_PtgSheet","parse_PtgEndSheet","parse_PtgMemAreaN","parse_PtgMemNoMemN","parse_PtgAttrNoop","PtgTypes","PtgDupes","Ptg18","Ptg19","parse_RgbExtra","parse_Rgce","ptgs","stringify_array","PtgBinOp","PtgAdd","PtgConcat","PtgDiv","PtgEq","PtgGe","PtgGt","PtgLe","PtgLt","PtgMul","PtgNe","PtgPower","PtgSub","formula_quote_sheet_name","sname","get_ixti_raw","supbooks","XTI","SID","get_ixti","ixtiraw","stringify_formula","nameidx","last_sp","sp","fflen","func","lbl","names","xlfn","bookidx","externbook","ixtidata","rp","sharedf","parsedf","fnd","arrayf","PtgNonDisp","_left","rgcb","parse_XLSCellParsedFormula","parse_FormulaValue","parse_Formula","cbf","shared","parse_XLSBParsedFormula","parse_XLSBArrayParsedFormula","parse_XLSBCellParsedFormula","parse_XLSBNameParsedFormula","parse_XLSBSharedParsedFormula","ods_to_csf_formula","ods_to_csf_3D","_ssfopts","default_margins","margins","mode","defs","safe_format","fmtid","fillid","raw_rgb","parse_ws_xml_dim","mergecregex","sheetdataregex","hlinkregex","dimregex","colregex","afregex","marginregex","sheetprregex","sheetprregex2","svsregex","parse_ws_xml","data1","data2","mtch","sheetPr","parse_ws_xml_sheetpr","parse_ws_xml_sheetpr2","svs","parse_ws_xml_sheetviews","columns","parse_ws_xml_cols","parse_ws_xml_data","afilter","parse_ws_xml_autofilter","_merge","parse_ws_xml_hlinks","parse_ws_xml_margins","tmpref","codeName","CodeName","location","Rel","tooltip","rng","margin","seencol","coli","colm","colM","outlineLevel","sviewregex","Views","zoomScale","zoom","rightToLeft","cellregex","rowregex","isregex","refregex","match_v","match_f","sdata","cells","cref","tagr","tagc","sstr","ftag","do_format","rowobj","rowrite","marr","marrlen","xlen","rstarti","outa","ht","rslice","cellFormula","___f","_tag","fillId","xlmeta","_r","parse_BrtRowHdr","parse_BrtWsDim","parse_BrtWsFmtInfo","parse_BrtWsProp","above","parse_BrtCellBlank","parse_BrtShortBlank","parse_BrtCellBool","fBool","parse_BrtShortBool","parse_BrtCellError","bError","parse_BrtShortError","parse_BrtCellIsst","parse_BrtShortIsst","parse_BrtCellReal","parse_BrtShortReal","parse_BrtCellRk","parse_BrtShortRk","parse_BrtCellRString","parse_BrtCellSt","parse_BrtShortSt","parse_BrtFmlaBool","parse_BrtFmlaError","parse_BrtFmlaNum","parse_BrtFmlaString","parse_BrtMergeCell","parse_BrtHLink","relId","parse_BrtPane","parse_BrtArrFmla","fAlwaysCalc","parse_BrtShrFmla","BrtMarginKeys","parse_BrtMargins","parse_BrtBeginWsView","parse_BrtDVal","parse_BrtDVal14","parse_ws_bin","af","Names","ws_parse","RR","aii","_d","parse_Cache","nf","parse_chart","csheet","nc","parse_cs_xml","parse_BrtCsProp","parse_cs_bin","cs_parse","WBPropsDef","WBViewDef","SheetDef","CalcPrDef","push_defaults_array","push_defaults","parse_wb_defaults","WBProps","CalcPr","WBView","badchars","check_ws_name","_good","wbnsregex","parse_wb_xml","dname","dnstart","xml_wb","Hidden","Comment","localSheetId","Sheet","Ref","parse_BrtBundleSh","iTabID","strRelID","parse_BrtWbProp","defaultThemeVersion","strName","autoCompressPictures","backupFile","checkCompatibility","filterPrivacy","hidePivotFieldList","promptedSolutions","publishItems","refreshAllConnections","saveExternalLinkValues","showBorderUnselectedTables","showInkAnnotation","showObjects","showPivotChartFilter","updateLinks","parse_BrtFRTArchID$","ArchID","parse_BrtName","Ptg","parse_wb_bin","hopper_wb","parse_wb","parse_ws","parse_cs","parse_ms","parse_ds","parse_sty","parse_theme","parse_sst","parse_cmnt","parse_cc","parse_xlink","parse_xlmeta","attregexg2","attregex2","xlml_parsexmltag","words","xlml_parsexmltagobj","XLMLFormatMap","xlml_format","xlml_set_custprop","Custprops","oval","safe_format_xlml","process_style_xlml","stag","Interior","Pattern","ID","parse_xlml_data","csty","sid","StyleID","interiors","Parent","UTC","Formula","ArrayRange","xlml_clean_comment","parse_xlml_xml","opening","ishtml","_o","html_to_workbook","sheetnames","cursheet","sheetname","dtag","didx","fidx","pidx","cstys","Workbook","wsprops","raw_Rn3","HRef","HRefScreenTip","MergeAcross","MergeDown","cma","cmd","AutoFitHeight","Height","Format","ssfidx","Width","_col","Span","_NamedRange","_DefinedName","RefersTo","AutoFilter","Range","parse_fods","Margin","pagemargins","Top","Left","Right","Bottom","bookSheets","bookProps","SSF","parse_xlml","fix_read_opts","parse_compobj","AnsiUserType","AnsiClipboardFormat","Reserved1","UnicodeClipboardFormat","Reserved2","CONTINUE_RT","slurp","RecordType","nextrt","XLSRecordEnum","ll","safe_format_xf","make_cell","parse_workbook","Directory","last_formula","cur_sheet","Preamble","lastcell","last_cell","cmnt","rngC","rngR","temp_val","country","XFs","palette","get_rgb","getrgb","process_cell_style","pcs","xfd","addcell","file_depth","afi","rrtabid","lastuser","winlocked","wtf","objects","last_RT","BIFF2Fmt","BIFF2FmtTable","FilterDatabases","last_lbl","seen_codepage","Date1904","WriteProtect","cpval","CalcRefMode","FullCalc","ExternCount","tmpri","fakebs8","_fr","_fc","_fe","_arraystart","_j","_ixfe","b4idx","b2idx","TxO","ImData","noteobj","Strings","Encryption","Metadata","Country","PSCLSID","SI","DSI","UDI","parse_xls_props","DocSummary","Summary","parse_xlscfb","CompObj","WorkbookP","bookVBA","vbaraw","bookFiles","html_to_sheet","mtch2","hd","midx","colspan","rowspan","_t","make_html_row","editable","HTML_BEGIN","HTML_END","book_new","book_append_sheet","make_html_preamble","sheet_to_html","sheet_add_dom","or_R","or_C","getElementsByTagName","is_dom_element_hidden","elts","hasAttribute","getAttribute","innerHTML","Aelts","Aelti","parse_dom_table","table_to_book","get_computed_style","get_get_computed_style_function","getPropertyValue","ownerDocument","defaultView","getComputedStyle","parse_text_p","fixed","number_formats_ods","day","month","year","hours","minutes","seconds","era","quarter","parse_content_xml","NFtag","NF","sheetag","rowtag","ctag","textp","textpidx","textR","row_ol","number_format_map","mrange","mR","mC","rowpeat","colpeat","atag","_Ref","creator","creatoridx","isstub","intable","rptR","rpt","nrange","ptp","href","parse_ods","master_styles","wso","u8_to_dataview","DataView","u8str","u8","u8concat","u8a","popcnt","readDecimal128LE","mantissa","parse_varint49","varint","varint_to_i32","i32","parse_shallow","mappa","parse_iwa_file","_a","messages","mi","merge","parse_snappy_chunk","chunks","decompress_iwa_file","parse_old_storage","rsst","dv","getUint32","data_offset","ieee","getFloat64","parse_new_storage","d128","parse_cell_storage","parse_TSP_Reference","pb","parse_TST_TableDataList","rtp","rtpref","mtype","tswpsa","parse_TST_TileRowInfo","_b","_c","_g","_h","_i","_k","_l","_m","wide_offsets","used_storage_u8","used_storage","used_storage_offsets","getUint16","parse_TST_Tile","nrows","parse_TST_TableModelArchive","store","tile","tl","_tile","parse_TST_TableInfoArchive","tableref","parse_TN_SheetArchive","shapeoffs","parse_TN_DocumentArchive","sheetoffs","root2","parse_numbers_iwa","indices","packets","packet","docroot","iwam","fix_opts_func","fix_opts","get_sheet_type","safe_parse_wbrels","wbrels","pwbr","safe_parse_sheet","relsPath","sheetRels","stype","dfile","drelsp","draw","chartp","crelsp","tcomments","strip_front_slash","_zip","dir","xlsb","binname","link","propdata","pluck","deps","bookDeps","wbsheets","wbext","wbrelsi","wbrelsfile","nmode","wsloop","snjseen","snj","Deps","Styles","bin","parse_xlsxcfb","dsm","seds","einfo","decrypt_agile","decrypt_std76","read_cfb","read_zip","read_plaintext","read_plaintext_raw","read_utf16","bstrify","read_prn","readSync","ab","vu","foo","make_json_row","defval","isempty","defineProperty","enumerable","__rowNum__","rawNumbers","outi","counter","header_cnt","skipHidden","blankrows","qreg","make_csv_row","txt","forceQuotes","sheet_to_csv","endregex","strip","sheet_to_txt","sheet_to_formulae","cmds","sheet_add_json","js","skipHeader","JS","ws_get_cell_stub","json_to_sheet","RC","wb_sheet_idx","sh","roll","book_set_sheet_visibility","vis","cell_set_number_format","cell_set_hyperlink","cell_set_internal_link","cell_add_comment","sheet_set_array_formula","dynamic","rngstr","table_to_sheet","sheet_to_row_object_array","sheet_get_cell","SHEET_VISIBLE","SHEET_HIDDEN","SHEET_VERY_HIDDEN","parseRes","currentMeta","groups","parseXLSX","xlsx","workbook","parsedXLSX","parsePreabmle","sheetName","currentSheet","oanParseHitec","fromHitec","xls","parsed","cheminfo","procAA","ProcA_A","procAB","ProcA_B","procBA","ProcB_A","procBB","ProcB_B","maxTorque","TorqueMax","Meta"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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I,QAAW,GAAG,QAAmB,IAAI,QAAW,GAAG,QACvD,IAAI,QAAW,GAAG,QAAmB,IAAI,QAAW,GAAG,QACvD,IAAI,QAAW,GAAG,QAAmB,IAAI,QAAW,GAAG,QACvD,IAAI,QAAW,GAAG,QAAmB,IAAI,QAAW,GAAG,QACvD,IAAI,QAAW,GAAG,QAAmB,IAAI,QAAW,GAAG,QACvD,IAAI,QAAW,GAAG,QAAmB,IAAI,QAAU,IAAI,QACvD,IAAI,QAAU,IAAI,QAAmB,IAAI,QAAS,KAAK,QACvD,IAAI,QAAS,KAAK,QAAmB,IAAI,QAAS,KAAK,QACvD,IAAI,QAAU,IAAI,QAAmB,IAAI,QAAU,IAAI,QACvD,IAAI,QAAU,IAAI,QAAmB,IAAI,QAAU,IAAI,qCAGvD,IAAI,QAAS,KAAK,QAAmB,IAAI,QAAW,GAAG,QACvD,IAAI,QAAW,GAAG,QAAmB,IAAI,QAAW,GAAG,QACvD,IAAI,QAAW,GAAG,QAAmB,IAAI,QAAW,GAAG,QACvD,IAAI,QAAW,GAAG,QAAmB,IAAI,QAAW,GAAG,QACvD,IAAI,QAAW,GAAG,QAAmB,IAAI,QAAW,GAAG,QACvD,IAAI,QAAW,GAAG,QAAmB,IAAI,QAAW,GAAG,QACvD,IAAI,QAAW,GAAG,QAAmB,IAAI,QAAW,GAAG,QACvD,IAAI,QAAW,GAAG,QAAmB,IAAI,QAAW,GAAG,QACvD,IAAI,QAAW,GAAG,QAAmB,IAAI,QAAW,GAAG,QACvD,IAAI,QAAW,GAAG,QAAmB,IAAI,QAAW,GAAG,QACvD,IAAI,QAAW,GAAG,QAAmB,IAAI,QAAW,GAAG,QACvD,IAAI,QAAW,GAAG,QAAmB,IAAI,QAAW,GAAG,QACvD,IAAI,QAAW,GAAG,QAAmB,IAAI,QAAW,GAAG,QACvD,IAAI,QAAW,GAAG,QAAmB,IAAI,QAAW,GAAG,QACvD,IAAI,QAAW,GAAG,QAAmB,IAAI,QAAW,GAAG,QACvD,IAAI,QAAW,GAAG,QAAmB,IAAI,QAAW,GAAG,QACvD,IAAI,QAAW,GAAG,QAAmB,IAAI,QAAW,GAAG,QACvD,IAAI,QAAU,IAAI,QAAmB,IAAI,QAAU,IAAI,QACvD,IAAI,QAAU,IAAI,QAAmB,IAAI,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QACzB,MAAM,QAAS,CAAEA,CAAC,CAAC,IAAK,CAAC,QACzB,MAAM,QAAS,CAAEA,CAAC,CAAC,IAAK,CAAC,QACzB,MAAM,QAAS,CAAEA,CAAC,CAAC,IAAK,CAAC,QACzB,MAAM,QAAS,CAAEA,CAAC,CAAC,IAAK,CAAC,QACzB,MAAM,QAAS,CAAEA,CAAC,CAAC,IAAK,CAAC,QACzB,MAAM,QAAS,CAAEA,CAAC,CAAC,IAAK,CAAC,QACzB,MAAM,QAAS,CAAEA,CAAC,CAAC,IAAK,CAAC,QACzB,MAAM,QAAS,CAAEA,CAAC,CAAC,IAAK,CAAC,QACzB,MAAM,QAAS,CAAEA,CAAC,CAAC,IAAK,CAAC,QACzB,MAAM,QAAS,CAAEA,CAAC,CAAC,IAAK,CAAC,QACzB,MAAM,QAAS,CAAEA,CAAC,CAAC,IAAK,CAAC,QACzB,MAAM,QAAS,CAAEA,CAAC,CAAC,IAAK,CAAC,QACzB,MAAM,QAAS,CAAEA,CAAC,CAAC,IAAK,CAAC,QACzB,MAAM,QAAS,CAAEA,CAAC,CAAC,IAAK,CAAC,QACzB,MAAM,QAAS,CAAEA,CAAC,CAAC,IAAK,CAAC,QACzB,MAAM,QAAS,CAAEA,CAAC,CAAC,IAAK,CAAC,QACzB,MAAM,QAAS,CAAEA,CAAC,CAAC,IAAK,CAAC,QACzB,MAAM,QAAS,CAAEA,CAAC,CAAC,IAAK,CAAC,QACzB,MAAM,QAAS,CAAEA,CAAC,CAAC,IAAK,CAAC,QACzB,MAAM,QAAS,CAAEA,CAAC,CAAC,IAAK,CAAC,QACzB,MAAM,QAAS,CAAEA,CAAC,CAAC,IAAK,CAAC,QACzB,MAAM,QAAS,CAAEA,CAAC,CAAC,IAAK,CAAC,QACzB,MAAM,QAAS,CAAEA,CAAC,CAAC,IAAK,CAAC,QACzB,MAAM,QAAS,CAAEA,CAAC,CAAC,IAAK,CAAC,QACzB,MAAM,QAAS,CAAEA,CAAC,CAAC,IAAK,CAAC,QACzB,MAAM,QAAS,CAAEA,CAAC,CAAC,IAAK,CAAC,QACzB,MAAM,QAAS,CAAEA,CAAC,CAAC,IAAK,CAAC,QACzB,MAAM,QAAS,CAAEA,CAAC,CAAC,IAAK,CAAC,QACzB,MAAM,QAAS,CAAEA,CA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CL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,EAAE,CAAE,CAAC,CACL,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CACN,GAAG,CAAE,CAAC,CA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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]}