{"version":3,"file":"eln-plugin.js","sources":["../src/types/default.js","../src/types/reaction/general.js","../node_modules/utf8/utf8.js","../node_modules/iobuffer/lib-esm/IOBuffer.js","../node_modules/netcdfjs/src/utils.js","../node_modules/netcdfjs/src/types.js","../node_modules/netcdfjs/src/data.js","../node_modules/netcdfjs/src/header.js","../node_modules/netcdfjs/src/toString.js","../node_modules/netcdfjs/src/index.js","../node_modules/netcdf-gcms/src/agilentGCMS.js","../node_modules/netcdf-gcms/src/brukerGCMS.js","../node_modules/netcdf-gcms/src/agilentHPLC.js","../node_modules/netcdf-gcms/src/finniganGCMS.js","../node_modules/netcdf-gcms/src/shimadzuGCMS.js","../node_modules/netcdf-gcms/src/advionGCMS.js","../node_modules/netcdf-gcms/src/aiaTemplate.js","../node_modules/netcdf-gcms/src/index.js","../node_modules/atob/browser-atob.js","../node_modules/base64-js/index.js","../node_modules/isutf8/dist/index.esm.js","../node_modules/ensure-string/lib-esm/index.js","../node_modules/dynamic-typing/src/parseString.js","../node_modules/jcampconverter/lib-esm/complexChromatogram.js","../node_modules/jcampconverter/lib-esm/convertToFloatArray.js","../node_modules/jcampconverter/lib-esm/parse/fastParseXYData.js","../node_modules/jcampconverter/lib-esm/parse/parsePeakTable.js","../node_modules/jcampconverter/lib-esm/parse/parseXYA.js","../node_modules/is-any-array/lib-esm/index.js","../node_modules/median-quickselect/lib/median-quickselect.min.js","../node_modules/ml-array-median/lib-es6/index.js","../node_modules/jcampconverter/lib-esm/2d/convertTo3DZ.js","../node_modules/jcampconverter/lib-esm/2d/generateContourLines.js","../node_modules/jcampconverter/lib-esm/2d/add2D.js","../node_modules/nmr-processing/lib-esm/constants/gyromagneticRatio.js","../node_modules/ml-array-max/lib-es6/index.js","../node_modules/ml-array-min/lib-es6/index.js","../node_modules/ml-array-rescale/lib-es6/index.js","../node_modules/ml-matrix/src/inspect.js","../node_modules/ml-matrix/src/mathOperations.js","../node_modules/ml-matrix/src/util.js","../node_modules/ml-matrix/src/stat.js","../node_modules/ml-matrix/src/matrix.js","../node_modules/ml-matrix/src/wrap/WrapperMatrix2D.js","../node_modules/ml-matrix/src/dc/lu.js","../node_modules/ml-matrix/src/dc/util.js","../node_modules/ml-matrix/src/dc/qr.js","../node_modules/ml-matrix/src/dc/svd.js","../node_modules/ml-matrix/src/decompositions.js","../node_modules/ml-array-sequential-fill/lib-es6/index.js","../node_modules/d3-array/build/d3-array.js","../node_modules/spline-interpolator/index.js","../node_modules/jcampconverter/lib-esm/postProcessingNMR.js","../node_modules/jcampconverter/lib-esm/profiling.js","../node_modules/jcampconverter/lib-esm/simpleChromatogram.js","../node_modules/jcampconverter/lib-esm/postProcessing.js","../node_modules/jcampconverter/lib-esm/prepareNtuplesDatatable.js","../node_modules/jcampconverter/lib-esm/prepareSpectrum.js","../node_modules/jcampconverter/lib-esm/convert.js","../src/types/common.js","../src/types/sample/chromatogram.js","../src/types/sample/cyclicVoltammetry.js","../src/types/sample/differentialCentrifugalSedimentation.js","../src/types/sample/differentialScanningCalorimetry.js","../src/types/sample/dls.js","../src/types/sample/elementAnalysis.js","../node_modules/genbank-parser/src/utils/months.js","../node_modules/genbank-parser/src/index.js","../src/types/sample/genbank.js","../src/types/sample/general.js","../src/types/sample/hgPorosimetry.js","../src/types/sample/icp.js","../src/types/sample/image.js","../src/types/sample/ir.js","../src/types/sample/isotherm.js","../src/types/sample/iv.js","../src/types/sample/mass.js","../node_modules/nmr-metadata/node_modules/nmr-processing/src/constants/impurities.js","../node_modules/nmr-metadata/node_modules/nmr-processing/src/peaks/peaksFilterImpurities.js","../node_modules/nmr-metadata/node_modules/ml-gsd/node_modules/ml-peak-shape-generator/lib-esm/util/constants.js","../node_modules/nmr-metadata/node_modules/ml-gsd/node_modules/ml-peak-shape-generator/lib-esm/util/erfinv.js","../node_modules/nmr-metadata/node_modules/ml-gsd/node_modules/ml-peak-shape-generator/lib-esm/shapes/1d/Shape1D.js","../node_modules/nmr-metadata/node_modules/ml-gsd/node_modules/ml-peak-shape-generator/lib-esm/shapes/1d/gaussian/Gaussian.js","../node_modules/nmr-metadata/node_modules/ml-gsd/node_modules/ml-peak-shape-generator/lib-esm/shapes/1d/lorentzian/Lorentzian.js","../node_modules/nmr-metadata/node_modules/ml-gsd/node_modules/ml-peak-shape-generator/lib-esm/shapes/1d/pseudoVoigt/PseudoVoigt.js","../node_modules/nmr-metadata/node_modules/ml-gsd/node_modules/ml-peak-shape-generator/lib-esm/util/getShape1D.js","../node_modules/nmr-metadata/node_modules/ml-savitzky-golay-generalized/src/index.js","../node_modules/nmr-metadata/node_modules/ml-gsd/src/gsd.js","../node_modules/assign-symbols/index.js","../node_modules/assign-deep/index.js","../node_modules/nmr-metadata/node_modules/ml-peak-shape-generator/src/util/constants.js","../node_modules/nmr-metadata/node_modules/ml-peak-shape-generator/src/util/erfinv.js","../node_modules/nmr-metadata/node_modules/ml-peak-shape-generator/src/classes/Gaussian.js","../node_modules/nmr-metadata/node_modules/ml-peak-shape-generator/src/classes/Lorentzian.js","../node_modules/nmr-metadata/node_modules/ml-peak-shape-generator/src/classes/PseudoVoigt.js","../node_modules/nmr-metadata/node_modules/ml-spectra-fitting/src/shapes/sumOfGaussianLorentzians.js","../node_modules/nmr-metadata/node_modules/ml-spectra-fitting/src/shapes/sumOfGaussians.js","../node_modules/nmr-metadata/node_modules/ml-spectra-fitting/src/shapes/sumOfLorentzians.js","../node_modules/nmr-metadata/node_modules/ml-spectra-fitting/src/checkInput.js","../node_modules/nmr-metadata/node_modules/is-any-array/src/index.js","../node_modules/nmr-metadata/node_modules/ml-levenberg-marquardt/src/checkOptions.js","../node_modules/nmr-metadata/node_modules/ml-levenberg-marquardt/src/errorCalculation.js","../node_modules/nmr-metadata/node_modules/ml-levenberg-marquardt/src/gradientFunction.js","../node_modules/nmr-metadata/node_modules/ml-levenberg-marquardt/src/step.js","../node_modules/nmr-metadata/node_modules/ml-levenberg-marquardt/src/index.js","../node_modules/nmr-metadata/node_modules/ml-spectra-fitting/src/selectMethod.js","../node_modules/nmr-metadata/node_modules/ml-spectra-fitting/src/index.js","../node_modules/nmr-metadata/node_modules/ml-spectra-processing/src/x/xAbsolute.js","../node_modules/nmr-metadata/node_modules/ml-spectra-processing/src/x/xAbsoluteMedian.js","../node_modules/nmr-metadata/node_modules/ml-spectra-processing/src/x/xFindClosestIndex.js","../node_modules/nmr-metadata/node_modules/ml-spectra-processing/src/x/xGetFromToIndex.js","../node_modules/nmr-metadata/node_modules/ml-spectra-processing/src/x/erfcinv.js","../node_modules/nmr-metadata/node_modules/ml-spectra-processing/src/x/rayleighCdf.js","../node_modules/nmr-metadata/node_modules/ml-spectra-processing/src/x/xNoiseSanPlot.js","../node_modules/nmr-metadata/node_modules/ml-spectra-processing/src/xy/xyCheck.js","../node_modules/nmr-metadata/node_modules/ml-spectra-processing/src/zones/zonesNormalize.js","../node_modules/nmr-metadata/node_modules/ml-spectra-processing/src/xy/xyExtract.js","../node_modules/nmr-metadata/node_modules/ml-spectra-processing/src/xy/xyIntegration.js","../node_modules/nmr-metadata/node_modules/ml-gsd/src/post/groupPeaks.js","../node_modules/nmr-metadata/node_modules/ml-gsd/src/post/optimizePeaks.js","../node_modules/nmr-metadata/node_modules/ml-gsd/src/post/joinBroadPeaks.js","../node_modules/nmr-metadata/node_modules/nmr-processing/src/xy/xyAutoPeaksPicking.js","../node_modules/nmr-metadata/node_modules/nmr-processing/src/peaks/util/jAnalyzer.js","../node_modules/nmr-metadata/node_modules/nmr-processing/src/peaks/util/joinRanges.js","../node_modules/nmr-metadata/node_modules/nmr-processing/src/peaks/peaksToRanges.js","../node_modules/nmr-metadata/node_modules/nmr-processing/src/xy/xyAutoRangesPicking.js","../node_modules/nmr-metadata/src/getNucleusFrom2DExperiment.js","../node_modules/nmr-metadata/src/getSpectrumType.js","../node_modules/nmr-metadata/src/getMetaData.js","../node_modules/nmr-metadata/src/index.js","../src/types/sample/nmr.js","../src/types/sample/oan.js","../src/types/sample/pelletHardness.js","../src/types/sample/physical.js","../src/types/sample/raman.js","../src/types/sample/stock.js","../src/types/sample/thermogravimetricAnalysis.js","../src/types/sample/uv.js","../src/types/sample/video.js","../src/types/sample/voidVolume.js","../src/types/sample/xps.js","../src/types/sample/xray.js","../src/types/sample/xrd.js","../src/types/sample/xrf.js","../src/types/index.js","../src/types.js","../src/util/defaults.js","../src/index.js"],"sourcesContent":["export default {\n  process() {\n    return {};\n  },\n\n  getEmpty() {\n    return [];\n  },\n};\n","export default {\n  jpath: [],\n  getEmpty() {\n    return {\n      code: '',\n      date: Date.now(),\n      procedure: '',\n      products: [],\n      reagents: [],\n      conditions: '',\n      keywords: [],\n      remarks: '',\n      title: '',\n      reactionRXN: '$RXN\\n\\n\\n\\n  0  0\\n',\n    };\n  },\n};\n","/*! https://mths.be/utf8js v3.0.0 by @mathias */\n;(function(root) {\n\n\tvar stringFromCharCode = String.fromCharCode;\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2decode(string) {\n\t\tvar output = [];\n\t\tvar counter = 0;\n\t\tvar length = string.length;\n\t\tvar value;\n\t\tvar extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2encode(array) {\n\t\tvar length = array.length;\n\t\tvar index = -1;\n\t\tvar value;\n\t\tvar output = '';\n\t\twhile (++index < length) {\n\t\t\tvalue = array[index];\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t}\n\t\treturn output;\n\t}\n\n\tfunction checkScalarValue(codePoint) {\n\t\tif (codePoint >= 0xD800 && codePoint <= 0xDFFF) {\n\t\t\tthrow Error(\n\t\t\t\t'Lone surrogate U+' + codePoint.toString(16).toUpperCase() +\n\t\t\t\t' is not a scalar value'\n\t\t\t);\n\t\t}\n\t}\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction createByte(codePoint, shift) {\n\t\treturn stringFromCharCode(((codePoint >> shift) & 0x3F) | 0x80);\n\t}\n\n\tfunction encodeCodePoint(codePoint) {\n\t\tif ((codePoint & 0xFFFFFF80) == 0) { // 1-byte sequence\n\t\t\treturn stringFromCharCode(codePoint);\n\t\t}\n\t\tvar symbol = '';\n\t\tif ((codePoint & 0xFFFFF800) == 0) { // 2-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 6) & 0x1F) | 0xC0);\n\t\t}\n\t\telse if ((codePoint & 0xFFFF0000) == 0) { // 3-byte sequence\n\t\t\tcheckScalarValue(codePoint);\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 12) & 0x0F) | 0xE0);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\telse if ((codePoint & 0xFFE00000) == 0) { // 4-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 18) & 0x07) | 0xF0);\n\t\t\tsymbol += createByte(codePoint, 12);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\tsymbol += stringFromCharCode((codePoint & 0x3F) | 0x80);\n\t\treturn symbol;\n\t}\n\n\tfunction utf8encode(string) {\n\t\tvar codePoints = ucs2decode(string);\n\t\tvar length = codePoints.length;\n\t\tvar index = -1;\n\t\tvar codePoint;\n\t\tvar byteString = '';\n\t\twhile (++index < length) {\n\t\t\tcodePoint = codePoints[index];\n\t\t\tbyteString += encodeCodePoint(codePoint);\n\t\t}\n\t\treturn byteString;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction readContinuationByte() {\n\t\tif (byteIndex >= byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tvar continuationByte = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\tif ((continuationByte & 0xC0) == 0x80) {\n\t\t\treturn continuationByte & 0x3F;\n\t\t}\n\n\t\t// If we end up here, it’s not a continuation byte\n\t\tthrow Error('Invalid continuation byte');\n\t}\n\n\tfunction decodeSymbol() {\n\t\tvar byte1;\n\t\tvar byte2;\n\t\tvar byte3;\n\t\tvar byte4;\n\t\tvar codePoint;\n\n\t\tif (byteIndex > byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tif (byteIndex == byteCount) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Read first byte\n\t\tbyte1 = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\t// 1-byte sequence (no continuation bytes)\n\t\tif ((byte1 & 0x80) == 0) {\n\t\t\treturn byte1;\n\t\t}\n\n\t\t// 2-byte sequence\n\t\tif ((byte1 & 0xE0) == 0xC0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x1F) << 6) | byte2;\n\t\t\tif (codePoint >= 0x80) {\n\t\t\t\treturn codePoint;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 3-byte sequence (may include unpaired surrogates)\n\t\tif ((byte1 & 0xF0) == 0xE0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x0F) << 12) | (byte2 << 6) | byte3;\n\t\t\tif (codePoint >= 0x0800) {\n\t\t\t\tcheckScalarValue(codePoint);\n\t\t\t\treturn codePoint;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 4-byte sequence\n\t\tif ((byte1 & 0xF8) == 0xF0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tbyte4 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0C) |\n\t\t\t\t(byte3 << 0x06) | byte4;\n\t\t\tif (codePoint >= 0x010000 && codePoint <= 0x10FFFF) {\n\t\t\t\treturn codePoint;\n\t\t\t}\n\t\t}\n\n\t\tthrow Error('Invalid UTF-8 detected');\n\t}\n\n\tvar byteArray;\n\tvar byteCount;\n\tvar byteIndex;\n\tfunction utf8decode(byteString) {\n\t\tbyteArray = ucs2decode(byteString);\n\t\tbyteCount = byteArray.length;\n\t\tbyteIndex = 0;\n\t\tvar codePoints = [];\n\t\tvar tmp;\n\t\twhile ((tmp = decodeSymbol()) !== false) {\n\t\t\tcodePoints.push(tmp);\n\t\t}\n\t\treturn ucs2encode(codePoints);\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\troot.version = '3.0.0';\n\troot.encode = utf8encode;\n\troot.decode = utf8decode;\n\n}(typeof exports === 'undefined' ? this.utf8 = {} : exports));\n","import { decode, encode } from 'utf8';\nconst defaultByteLength = 1024 * 8;\nexport class IOBuffer {\n    /**\n     * @param data - The data to construct the IOBuffer with.\n     * If data is a number, it will be the new buffer's length<br>\n     * If data is `undefined`, the buffer will be initialized with a default length of 8Kb<br>\n     * If data is an ArrayBuffer, SharedArrayBuffer, an ArrayBufferView (Typed Array), an IOBuffer instance,\n     * or a Node.js Buffer, a view will be created over the underlying ArrayBuffer.\n     * @param options\n     */\n    constructor(data = defaultByteLength, options = {}) {\n        let dataIsGiven = false;\n        if (typeof data === 'number') {\n            data = new ArrayBuffer(data);\n        }\n        else {\n            dataIsGiven = true;\n            this.lastWrittenByte = data.byteLength;\n        }\n        const offset = options.offset ? options.offset >>> 0 : 0;\n        const byteLength = data.byteLength - offset;\n        let dvOffset = offset;\n        if (ArrayBuffer.isView(data) || data instanceof IOBuffer) {\n            if (data.byteLength !== data.buffer.byteLength) {\n                dvOffset = data.byteOffset + offset;\n            }\n            data = data.buffer;\n        }\n        if (dataIsGiven) {\n            this.lastWrittenByte = byteLength;\n        }\n        else {\n            this.lastWrittenByte = 0;\n        }\n        this.buffer = data;\n        this.length = byteLength;\n        this.byteLength = byteLength;\n        this.byteOffset = dvOffset;\n        this.offset = 0;\n        this.littleEndian = true;\n        this._data = new DataView(this.buffer, dvOffset, byteLength);\n        this._mark = 0;\n        this._marks = [];\n    }\n    /**\n     * Checks if the memory allocated to the buffer is sufficient to store more\n     * bytes after the offset.\n     * @param byteLength - The needed memory in bytes.\n     * @returns `true` if there is sufficient space and `false` otherwise.\n     */\n    available(byteLength = 1) {\n        return this.offset + byteLength <= this.length;\n    }\n    /**\n     * Check if little-endian mode is used for reading and writing multi-byte\n     * values.\n     * @returns `true` if little-endian mode is used, `false` otherwise.\n     */\n    isLittleEndian() {\n        return this.littleEndian;\n    }\n    /**\n     * Set little-endian mode for reading and writing multi-byte values.\n     */\n    setLittleEndian() {\n        this.littleEndian = true;\n        return this;\n    }\n    /**\n     * Check if big-endian mode is used for reading and writing multi-byte values.\n     * @returns `true` if big-endian mode is used, `false` otherwise.\n     */\n    isBigEndian() {\n        return !this.littleEndian;\n    }\n    /**\n     * Switches to big-endian mode for reading and writing multi-byte values.\n     */\n    setBigEndian() {\n        this.littleEndian = false;\n        return this;\n    }\n    /**\n     * Move the pointer n bytes forward.\n     * @param n - Number of bytes to skip.\n     */\n    skip(n = 1) {\n        this.offset += n;\n        return this;\n    }\n    /**\n     * Move the pointer to the given offset.\n     * @param offset\n     */\n    seek(offset) {\n        this.offset = offset;\n        return this;\n    }\n    /**\n     * Store the current pointer offset.\n     * @see {@link IOBuffer#reset}\n     */\n    mark() {\n        this._mark = this.offset;\n        return this;\n    }\n    /**\n     * Move the pointer back to the last pointer offset set by mark.\n     * @see {@link IOBuffer#mark}\n     */\n    reset() {\n        this.offset = this._mark;\n        return this;\n    }\n    /**\n     * Push the current pointer offset to the mark stack.\n     * @see {@link IOBuffer#popMark}\n     */\n    pushMark() {\n        this._marks.push(this.offset);\n        return this;\n    }\n    /**\n     * Pop the last pointer offset from the mark stack, and set the current\n     * pointer offset to the popped value.\n     * @see {@link IOBuffer#pushMark}\n     */\n    popMark() {\n        const offset = this._marks.pop();\n        if (offset === undefined) {\n            throw new Error('Mark stack empty');\n        }\n        this.seek(offset);\n        return this;\n    }\n    /**\n     * Move the pointer offset back to 0.\n     */\n    rewind() {\n        this.offset = 0;\n        return this;\n    }\n    /**\n     * Make sure the buffer has sufficient memory to write a given byteLength at\n     * the current pointer offset.\n     * If the buffer's memory is insufficient, this method will create a new\n     * buffer (a copy) with a length that is twice (byteLength + current offset).\n     * @param byteLength\n     */\n    ensureAvailable(byteLength = 1) {\n        if (!this.available(byteLength)) {\n            const lengthNeeded = this.offset + byteLength;\n            const newLength = lengthNeeded * 2;\n            const newArray = new Uint8Array(newLength);\n            newArray.set(new Uint8Array(this.buffer));\n            this.buffer = newArray.buffer;\n            this.length = this.byteLength = newLength;\n            this._data = new DataView(this.buffer);\n        }\n        return this;\n    }\n    /**\n     * Read a byte and return false if the byte's value is 0, or true otherwise.\n     * Moves pointer forward by one byte.\n     */\n    readBoolean() {\n        return this.readUint8() !== 0;\n    }\n    /**\n     * Read a signed 8-bit integer and move pointer forward by 1 byte.\n     */\n    readInt8() {\n        return this._data.getInt8(this.offset++);\n    }\n    /**\n     * Read an unsigned 8-bit integer and move pointer forward by 1 byte.\n     */\n    readUint8() {\n        return this._data.getUint8(this.offset++);\n    }\n    /**\n     * Alias for {@link IOBuffer#readUint8}.\n     */\n    readByte() {\n        return this.readUint8();\n    }\n    /**\n     * Read `n` bytes and move pointer forward by `n` bytes.\n     */\n    readBytes(n = 1) {\n        const bytes = new Uint8Array(n);\n        for (let i = 0; i < n; i++) {\n            bytes[i] = this.readByte();\n        }\n        return bytes;\n    }\n    /**\n     * Read a 16-bit signed integer and move pointer forward by 2 bytes.\n     */\n    readInt16() {\n        const value = this._data.getInt16(this.offset, this.littleEndian);\n        this.offset += 2;\n        return value;\n    }\n    /**\n     * Read a 16-bit unsigned integer and move pointer forward by 2 bytes.\n     */\n    readUint16() {\n        const value = this._data.getUint16(this.offset, this.littleEndian);\n        this.offset += 2;\n        return value;\n    }\n    /**\n     * Read a 32-bit signed integer and move pointer forward by 4 bytes.\n     */\n    readInt32() {\n        const value = this._data.getInt32(this.offset, this.littleEndian);\n        this.offset += 4;\n        return value;\n    }\n    /**\n     * Read a 32-bit unsigned integer and move pointer forward by 4 bytes.\n     */\n    readUint32() {\n        const value = this._data.getUint32(this.offset, this.littleEndian);\n        this.offset += 4;\n        return value;\n    }\n    /**\n     * Read a 32-bit floating number and move pointer forward by 4 bytes.\n     */\n    readFloat32() {\n        const value = this._data.getFloat32(this.offset, this.littleEndian);\n        this.offset += 4;\n        return value;\n    }\n    /**\n     * Read a 64-bit floating number and move pointer forward by 8 bytes.\n     */\n    readFloat64() {\n        const value = this._data.getFloat64(this.offset, this.littleEndian);\n        this.offset += 8;\n        return value;\n    }\n    /**\n     * Read a 1-byte ASCII character and move pointer forward by 1 byte.\n     */\n    readChar() {\n        return String.fromCharCode(this.readInt8());\n    }\n    /**\n     * Read `n` 1-byte ASCII characters and move pointer forward by `n` bytes.\n     */\n    readChars(n = 1) {\n        let result = '';\n        for (let i = 0; i < n; i++) {\n            result += this.readChar();\n        }\n        return result;\n    }\n    /**\n     * Read the next `n` bytes, return a UTF-8 decoded string and move pointer\n     * forward by `n` bytes.\n     */\n    readUtf8(n = 1) {\n        const bString = this.readChars(n);\n        return decode(bString);\n    }\n    /**\n     * Write 0xff if the passed value is truthy, 0x00 otherwise and move pointer\n     * forward by 1 byte.\n     */\n    writeBoolean(value) {\n        this.writeUint8(value ? 0xff : 0x00);\n        return this;\n    }\n    /**\n     * Write `value` as an 8-bit signed integer and move pointer forward by 1 byte.\n     */\n    writeInt8(value) {\n        this.ensureAvailable(1);\n        this._data.setInt8(this.offset++, value);\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as an 8-bit unsigned integer and move pointer forward by 1\n     * byte.\n     */\n    writeUint8(value) {\n        this.ensureAvailable(1);\n        this._data.setUint8(this.offset++, value);\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * An alias for {@link IOBuffer#writeUint8}.\n     */\n    writeByte(value) {\n        return this.writeUint8(value);\n    }\n    /**\n     * Write all elements of `bytes` as uint8 values and move pointer forward by\n     * `bytes.length` bytes.\n     */\n    writeBytes(bytes) {\n        this.ensureAvailable(bytes.length);\n        for (let i = 0; i < bytes.length; i++) {\n            this._data.setUint8(this.offset++, bytes[i]);\n        }\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as a 16-bit signed integer and move pointer forward by 2\n     * bytes.\n     */\n    writeInt16(value) {\n        this.ensureAvailable(2);\n        this._data.setInt16(this.offset, value, this.littleEndian);\n        this.offset += 2;\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as a 16-bit unsigned integer and move pointer forward by 2\n     * bytes.\n     */\n    writeUint16(value) {\n        this.ensureAvailable(2);\n        this._data.setUint16(this.offset, value, this.littleEndian);\n        this.offset += 2;\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as a 32-bit signed integer and move pointer forward by 4\n     * bytes.\n     */\n    writeInt32(value) {\n        this.ensureAvailable(4);\n        this._data.setInt32(this.offset, value, this.littleEndian);\n        this.offset += 4;\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as a 32-bit unsigned integer and move pointer forward by 4\n     * bytes.\n     */\n    writeUint32(value) {\n        this.ensureAvailable(4);\n        this._data.setUint32(this.offset, value, this.littleEndian);\n        this.offset += 4;\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as a 32-bit floating number and move pointer forward by 4\n     * bytes.\n     */\n    writeFloat32(value) {\n        this.ensureAvailable(4);\n        this._data.setFloat32(this.offset, value, this.littleEndian);\n        this.offset += 4;\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as a 64-bit floating number and move pointer forward by 8\n     * bytes.\n     */\n    writeFloat64(value) {\n        this.ensureAvailable(8);\n        this._data.setFloat64(this.offset, value, this.littleEndian);\n        this.offset += 8;\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write the charCode of `str`'s first character as an 8-bit unsigned integer\n     * and move pointer forward by 1 byte.\n     */\n    writeChar(str) {\n        return this.writeUint8(str.charCodeAt(0));\n    }\n    /**\n     * Write the charCodes of all `str`'s characters as 8-bit unsigned integers\n     * and move pointer forward by `str.length` bytes.\n     */\n    writeChars(str) {\n        for (let i = 0; i < str.length; i++) {\n            this.writeUint8(str.charCodeAt(i));\n        }\n        return this;\n    }\n    /**\n     * UTF-8 encode and write `str` to the current pointer offset and move pointer\n     * forward according to the encoded length.\n     */\n    writeUtf8(str) {\n        const bString = encode(str);\n        return this.writeChars(bString);\n    }\n    /**\n     * Export a Uint8Array view of the internal buffer.\n     * The view starts at the byte offset and its length\n     * is calculated to stop at the last written byte or the original length.\n     */\n    toArray() {\n        return new Uint8Array(this.buffer, this.byteOffset, this.lastWrittenByte);\n    }\n    /**\n     * Update the last written byte offset\n     * @private\n     */\n    _updateLastWrittenByte() {\n        if (this.offset > this.lastWrittenByte) {\n            this.lastWrittenByte = this.offset;\n        }\n    }\n}\n//# sourceMappingURL=IOBuffer.js.map","'use strict';\n\n/**\n * Throws a non-valid NetCDF exception if the statement it's true\n * @ignore\n * @param {boolean} statement - Throws if true\n * @param {string} reason - Reason to throw\n */\nfunction notNetcdf(statement, reason) {\n  if (statement) {\n    throw new TypeError(`Not a valid NetCDF v3.x file: ${reason}`);\n  }\n}\n\n/**\n * Moves 1, 2, or 3 bytes to next 4-byte boundary\n * @ignore\n * @param {IOBuffer} buffer - Buffer for the file data\n */\nfunction padding(buffer) {\n  if ((buffer.offset % 4) !== 0) {\n    buffer.skip(4 - (buffer.offset % 4));\n  }\n}\n\n\n/**\n * Reads the name\n * @ignore\n * @param {IOBuffer} buffer - Buffer for the file data\n * @return {string} - Name\n */\nfunction readName(buffer) {\n  // Read name\n  var nameLength = buffer.readUint32();\n  var name = buffer.readChars(nameLength);\n\n  // validate name\n  // TODO\n\n  // Apply padding\n  padding(buffer);\n  return name;\n}\n\nmodule.exports.notNetcdf = notNetcdf;\nmodule.exports.padding = padding;\nmodule.exports.readName = readName;\n","'use strict';\n\nconst notNetcdf = require('./utils').notNetcdf;\n\nconst types = {\n  BYTE: 1,\n  CHAR: 2,\n  SHORT: 3,\n  INT: 4,\n  FLOAT: 5,\n  DOUBLE: 6\n};\n\n/**\n * Parse a number into their respective type\n * @ignore\n * @param {number} type - integer that represents the type\n * @return {string} - parsed value of the type\n */\nfunction num2str(type) {\n  switch (Number(type)) {\n    case types.BYTE:\n      return 'byte';\n    case types.CHAR:\n      return 'char';\n    case types.SHORT:\n      return 'short';\n    case types.INT:\n      return 'int';\n    case types.FLOAT:\n      return 'float';\n    case types.DOUBLE:\n      return 'double';\n      /* istanbul ignore next */\n    default:\n      return 'undefined';\n  }\n}\n\n/**\n * Parse a number type identifier to his size in bytes\n * @ignore\n * @param {number} type - integer that represents the type\n * @return {number} -size of the type\n */\nfunction num2bytes(type) {\n  switch (Number(type)) {\n    case types.BYTE:\n      return 1;\n    case types.CHAR:\n      return 1;\n    case types.SHORT:\n      return 2;\n    case types.INT:\n      return 4;\n    case types.FLOAT:\n      return 4;\n    case types.DOUBLE:\n      return 8;\n      /* istanbul ignore next */\n    default:\n      return -1;\n  }\n}\n\n/**\n * Reverse search of num2str\n * @ignore\n * @param {string} type - string that represents the type\n * @return {number} - parsed value of the type\n */\nfunction str2num(type) {\n  switch (String(type)) {\n    case 'byte':\n      return types.BYTE;\n    case 'char':\n      return types.CHAR;\n    case 'short':\n      return types.SHORT;\n    case 'int':\n      return types.INT;\n    case 'float':\n      return types.FLOAT;\n    case 'double':\n      return types.DOUBLE;\n      /* istanbul ignore next */\n    default:\n      return -1;\n  }\n}\n\n/**\n * Auxiliary function to read numeric data\n * @ignore\n * @param {number} size - Size of the element to read\n * @param {function} bufferReader - Function to read next value\n * @return {Array<number>|number}\n */\nfunction readNumber(size, bufferReader) {\n  if (size !== 1) {\n    var numbers = new Array(size);\n    for (var i = 0; i < size; i++) {\n      numbers[i] = bufferReader();\n    }\n    return numbers;\n  } else {\n    return bufferReader();\n  }\n}\n\n/**\n * Given a type and a size reads the next element\n * @ignore\n * @param {IOBuffer} buffer - Buffer for the file data\n * @param {number} type - Type of the data to read\n * @param {number} size - Size of the element to read\n * @return {string|Array<number>|number}\n */\nfunction readType(buffer, type, size) {\n  switch (type) {\n    case types.BYTE:\n      return buffer.readBytes(size);\n    case types.CHAR:\n      return trimNull(buffer.readChars(size));\n    case types.SHORT:\n      return readNumber(size, buffer.readInt16.bind(buffer));\n    case types.INT:\n      return readNumber(size, buffer.readInt32.bind(buffer));\n    case types.FLOAT:\n      return readNumber(size, buffer.readFloat32.bind(buffer));\n    case types.DOUBLE:\n      return readNumber(size, buffer.readFloat64.bind(buffer));\n      /* istanbul ignore next */\n    default:\n      notNetcdf(true, `non valid type ${type}`);\n      return undefined;\n  }\n}\n\n/**\n * Removes null terminate value\n * @ignore\n * @param {string} value - String to trim\n * @return {string} - Trimmed string\n */\nfunction trimNull(value) {\n  if (value.charCodeAt(value.length - 1) === 0) {\n    return value.substring(0, value.length - 1);\n  }\n  return value;\n}\n\nmodule.exports = types;\nmodule.exports.num2str = num2str;\nmodule.exports.num2bytes = num2bytes;\nmodule.exports.str2num = str2num;\nmodule.exports.readType = readType;\n","'use strict';\n\nconst types = require('./types');\n\n// const STREAMING = 4294967295;\n\n/**\n * Read data for the given non-record variable\n * @ignore\n * @param {IOBuffer} buffer - Buffer for the file data\n * @param {object} variable - Variable metadata\n * @return {Array} - Data of the element\n */\nfunction nonRecord(buffer, variable) {\n  // variable type\n  const type = types.str2num(variable.type);\n\n  // size of the data\n  var size = variable.size / types.num2bytes(type);\n\n  // iterates over the data\n  var data = new Array(size);\n  for (var i = 0; i < size; i++) {\n    data[i] = types.readType(buffer, type, 1);\n  }\n\n  return data;\n}\n\n/**\n * Read data for the given record variable\n * @ignore\n * @param {IOBuffer} buffer - Buffer for the file data\n * @param {object} variable - Variable metadata\n * @param {object} recordDimension - Record dimension metadata\n * @return {Array} - Data of the element\n */\nfunction record(buffer, variable, recordDimension) {\n  // variable type\n  const type = types.str2num(variable.type);\n  const width = variable.size ? variable.size / types.num2bytes(type) : 1;\n\n  // size of the data\n  // TODO streaming data\n  var size = recordDimension.length;\n\n  // iterates over the data\n  var data = new Array(size);\n  const step = recordDimension.recordStep;\n\n  for (var i = 0; i < size; i++) {\n    var currentOffset = buffer.offset;\n    data[i] = types.readType(buffer, type, width);\n    buffer.seek(currentOffset + step);\n  }\n\n  return data;\n}\n\nmodule.exports.nonRecord = nonRecord;\nmodule.exports.record = record;\n","'use strict';\n\nconst utils = require('./utils');\nconst types = require('./types');\n\n// Grammar constants\nconst ZERO = 0;\nconst NC_DIMENSION = 10;\nconst NC_VARIABLE = 11;\nconst NC_ATTRIBUTE = 12;\n\n/**\n * Read the header of the file\n * @ignore\n * @param {IOBuffer} buffer - Buffer for the file data\n * @param {number} version - Version of the file\n * @return {object} - Object with the fields:\n *  * `recordDimension`: Number with the length of record dimension\n *  * `dimensions`: List of dimensions\n *  * `globalAttributes`: List of global attributes\n *  * `variables`: List of variables\n */\nfunction header(buffer, version) {\n  // Length of record dimension\n  // sum of the varSize's of all the record variables.\n  var header = { recordDimension: { length: buffer.readUint32() } };\n\n  // Version\n  header.version = version;\n\n  // List of dimensions\n  var dimList = dimensionsList(buffer);\n  header.recordDimension.id = dimList.recordId; // id of the unlimited dimension\n  header.recordDimension.name = dimList.recordName; // name of the unlimited dimension\n  header.dimensions = dimList.dimensions;\n\n  // List of global attributes\n  header.globalAttributes = attributesList(buffer);\n\n  // List of variables\n  var variables = variablesList(buffer, dimList.recordId, version);\n  header.variables = variables.variables;\n  header.recordDimension.recordStep = variables.recordStep;\n\n  return header;\n}\n\nconst NC_UNLIMITED = 0;\n\n/**\n * List of dimensions\n * @ignore\n * @param {IOBuffer} buffer - Buffer for the file data\n * @return {object} - Ojbect containing the following properties:\n *  * `dimensions` that is an array of dimension object:\n  *  * `name`: String with the name of the dimension\n  *  * `size`: Number with the size of the dimension dimensions: dimensions\n *  * `recordId`: the id of the dimension that has unlimited size or undefined,\n *  * `recordName`: name of the dimension that has unlimited size\n */\nfunction dimensionsList(buffer) {\n  var recordId, recordName;\n  const dimList = buffer.readUint32();\n  if (dimList === ZERO) {\n    utils.notNetcdf((buffer.readUint32() !== ZERO), 'wrong empty tag for list of dimensions');\n    return [];\n  } else {\n    utils.notNetcdf((dimList !== NC_DIMENSION), 'wrong tag for list of dimensions');\n\n    // Length of dimensions\n    const dimensionSize = buffer.readUint32();\n    var dimensions = new Array(dimensionSize);\n    for (var dim = 0; dim < dimensionSize; dim++) {\n      // Read name\n      var name = utils.readName(buffer);\n\n      // Read dimension size\n      const size = buffer.readUint32();\n      if (size === NC_UNLIMITED) { // in netcdf 3 one field can be of size unlimmited\n        recordId = dim;\n        recordName = name;\n      }\n\n      dimensions[dim] = {\n        name: name,\n        size: size\n      };\n    }\n  }\n  return {\n    dimensions: dimensions,\n    recordId: recordId,\n    recordName: recordName\n  };\n}\n\n/**\n * List of attributes\n * @ignore\n * @param {IOBuffer} buffer - Buffer for the file data\n * @return {Array<object>} - List of attributes with:\n *  * `name`: String with the name of the attribute\n *  * `type`: String with the type of the attribute\n *  * `value`: A number or string with the value of the attribute\n */\nfunction attributesList(buffer) {\n  const gAttList = buffer.readUint32();\n  if (gAttList === ZERO) {\n    utils.notNetcdf((buffer.readUint32() !== ZERO), 'wrong empty tag for list of attributes');\n    return [];\n  } else {\n    utils.notNetcdf((gAttList !== NC_ATTRIBUTE), 'wrong tag for list of attributes');\n\n    // Length of attributes\n    const attributeSize = buffer.readUint32();\n    var attributes = new Array(attributeSize);\n    for (var gAtt = 0; gAtt < attributeSize; gAtt++) {\n      // Read name\n      var name = utils.readName(buffer);\n\n      // Read type\n      var type = buffer.readUint32();\n      utils.notNetcdf(((type < 1) || (type > 6)), `non valid type ${type}`);\n\n      // Read attribute\n      var size = buffer.readUint32();\n      var value = types.readType(buffer, type, size);\n\n      // Apply padding\n      utils.padding(buffer);\n\n      attributes[gAtt] = {\n        name: name,\n        type: types.num2str(type),\n        value: value\n      };\n    }\n  }\n  return attributes;\n}\n\n/**\n * List of variables\n * @ignore\n * @param {IOBuffer} buffer - Buffer for the file data\n * @param {number} recordId - Id of the unlimited dimension (also called record dimension)\n *                            This value may be undefined if there is no unlimited dimension\n * @param {number} version - Version of the file\n * @return {object} - Number of recordStep and list of variables with:\n *  * `name`: String with the name of the variable\n *  * `dimensions`: Array with the dimension IDs of the variable\n *  * `attributes`: Array with the attributes of the variable\n *  * `type`: String with the type of the variable\n *  * `size`: Number with the size of the variable\n *  * `offset`: Number with the offset where of the variable begins\n *  * `record`: True if is a record variable, false otherwise (unlimited size)\n */\n\nfunction variablesList(buffer, recordId, version) {\n  const varList = buffer.readUint32();\n  var recordStep = 0;\n  if (varList === ZERO) {\n    utils.notNetcdf((buffer.readUint32() !== ZERO), 'wrong empty tag for list of variables');\n    return [];\n  } else {\n    utils.notNetcdf((varList !== NC_VARIABLE), 'wrong tag for list of variables');\n\n    // Length of variables\n    const variableSize = buffer.readUint32();\n    var variables = new Array(variableSize);\n    for (var v = 0; v < variableSize; v++) {\n      // Read name\n      var name = utils.readName(buffer);\n\n      // Read dimensionality of the variable\n      const dimensionality = buffer.readUint32();\n\n      // Index into the list of dimensions\n      var dimensionsIds = new Array(dimensionality);\n      for (var dim = 0; dim < dimensionality; dim++) {\n        dimensionsIds[dim] = buffer.readUint32();\n      }\n\n      // Read variables size\n      var attributes = attributesList(buffer);\n\n      // Read type\n      var type = buffer.readUint32();\n      utils.notNetcdf(((type < 1) && (type > 6)), `non valid type ${type}`);\n\n      // Read variable size\n      // The 32-bit varSize field is not large enough to contain the size of variables that require\n      // more than 2^32 - 4 bytes, so 2^32 - 1 is used in the varSize field for such variables.\n      const varSize = buffer.readUint32();\n\n      // Read offset\n      var offset = buffer.readUint32();\n      if (version === 2) {\n        utils.notNetcdf((offset > 0), 'offsets larger than 4GB not supported');\n        offset = buffer.readUint32();\n      }\n\n      let record = false;\n      // Count amount of record variables\n      if ((typeof recordId !== 'undefined') && (dimensionsIds[0] === recordId)) {\n        recordStep += varSize;\n        record = true;\n      }\n      variables[v] = {\n        name: name,\n        dimensions: dimensionsIds,\n        attributes,\n        type: types.num2str(type),\n        size: varSize,\n        offset,\n        record\n      };\n    }\n  }\n\n  return {\n    variables: variables,\n    recordStep: recordStep\n  };\n}\n\nmodule.exports = header;\n","'use strict';\n\nfunction toString() {\n  let result = [];\n\n  result.push('DIMENSIONS');\n  for (let dimension of this.dimensions) {\n    result.push(`  ${dimension.name.padEnd(30)} = size: ${dimension.size}`);\n  }\n\n  result.push('');\n  result.push('GLOBAL ATTRIBUTES');\n  for (let attribute of this.globalAttributes) {\n    result.push(`  ${attribute.name.padEnd(30)} = ${attribute.value}`);\n  }\n\n  let variables = JSON.parse(JSON.stringify(this.variables));\n  result.push('');\n  result.push('VARIABLES:');\n  for (let variable of variables) {\n    variable.value = this.getDataVariable(variable);\n    let stringify = JSON.stringify(variable.value);\n    if (stringify.length > 50) stringify = stringify.substring(0, 50);\n    if (!isNaN(variable.value.length)) {\n      stringify += ` (length: ${variable.value.length})`;\n    }\n    result.push(`  ${variable.name.padEnd(30)} = ${stringify}`);\n  }\n  return result.join('\\n');\n}\n\nmodule.exports = toString;\n","'use strict';\n\nconst { IOBuffer } = require('iobuffer');\n\nconst utils = require('./utils');\nconst data = require('./data');\nconst readHeader = require('./header');\nconst toString = require('./toString');\n\n/**\n * Reads a NetCDF v3.x file\n * https://www.unidata.ucar.edu/software/netcdf/docs/file_format_specifications.html\n * @param {ArrayBuffer} data - ArrayBuffer or any Typed Array (including Node.js' Buffer from v4) with the data\n * @constructor\n */\nclass NetCDFReader {\n  constructor(data) {\n    const buffer = new IOBuffer(data);\n    buffer.setBigEndian();\n\n    // Validate that it's a NetCDF file\n    utils.notNetcdf(buffer.readChars(3) !== 'CDF', 'should start with CDF');\n\n    // Check the NetCDF format\n    const version = buffer.readByte();\n    utils.notNetcdf(version > 2, 'unknown version');\n\n    // Read the header\n    this.header = readHeader(buffer, version);\n    this.buffer = buffer;\n  }\n\n  /**\n   * @return {string} - Version for the NetCDF format\n   */\n  get version() {\n    if (this.header.version === 1) {\n      return 'classic format';\n    } else {\n      return '64-bit offset format';\n    }\n  }\n\n  /**\n   * @return {object} - Metadata for the record dimension\n   *  * `length`: Number of elements in the record dimension\n   *  * `id`: Id number in the list of dimensions for the record dimension\n   *  * `name`: String with the name of the record dimension\n   *  * `recordStep`: Number with the record variables step size\n   */\n  get recordDimension() {\n    return this.header.recordDimension;\n  }\n\n  /**\n   * @return {Array<object>} - List of dimensions with:\n   *  * `name`: String with the name of the dimension\n   *  * `size`: Number with the size of the dimension\n   */\n  get dimensions() {\n    return this.header.dimensions;\n  }\n\n  /**\n   * @return {Array<object>} - List of global attributes with:\n   *  * `name`: String with the name of the attribute\n   *  * `type`: String with the type of the attribute\n   *  * `value`: A number or string with the value of the attribute\n   */\n  get globalAttributes() {\n    return this.header.globalAttributes;\n  }\n\n  /**\n   * Returns the value of an attribute\n   * @param {string} attributeName\n   * @return {string} Value of the attributeName or null\n   */\n  getAttribute(attributeName) {\n    const attribute = this.globalAttributes.find(\n      (val) => val.name === attributeName\n    );\n    if (attribute) return attribute.value;\n    return null;\n  }\n\n  /**\n   * Returns the value of a variable as a string\n   * @param {string} variableName\n   * @return {string} Value of the variable as a string or null\n   */\n  getDataVariableAsString(variableName) {\n    const variable = this.getDataVariable(variableName);\n    if (variable) return variable.join('');\n    return null;\n  }\n\n  /**\n   * @return {Array<object>} - List of variables with:\n   *  * `name`: String with the name of the variable\n   *  * `dimensions`: Array with the dimension IDs of the variable\n   *  * `attributes`: Array with the attributes of the variable\n   *  * `type`: String with the type of the variable\n   *  * `size`: Number with the size of the variable\n   *  * `offset`: Number with the offset where of the variable begins\n   *  * `record`: True if is a record variable, false otherwise\n   */\n  get variables() {\n    return this.header.variables;\n  }\n\n  toString() {\n    return toString.call(this);\n  }\n\n  /**\n   * Retrieves the data for a given variable\n   * @param {string|object} variableName - Name of the variable to search or variable object\n   * @return {Array} - List with the variable values\n   */\n  getDataVariable(variableName) {\n    let variable;\n    if (typeof variableName === 'string') {\n      // search the variable\n      variable = this.header.variables.find(function (val) {\n        return val.name === variableName;\n      });\n    } else {\n      variable = variableName;\n    }\n\n    // throws if variable not found\n    utils.notNetcdf(\n      variable === undefined,\n      `variable not found: ${variableName}`\n    );\n\n    // go to the offset position\n    this.buffer.seek(variable.offset);\n\n    if (variable.record) {\n      // record variable case\n      return data.record(this.buffer, variable, this.header.recordDimension);\n    } else {\n      // non-record variable case\n      return data.nonRecord(this.buffer, variable);\n    }\n  }\n\n  /**\n   * Check if a dataVariable exists\n   * @param {string} variableName - Name of the variable to find\n   * @return {boolean}\n   */\n  dataVariableExists(variableName) {\n    const variable = this.header.variables.find(function (val) {\n      return val.name === variableName;\n    });\n    return variable !== undefined;\n  }\n\n  /**\n   * Check if an attribute exists\n   * @param {string} attributeName - Name of the attribute to find\n   * @return {boolean}\n   */\n  attributeExists(attributeName) {\n    const attribute = this.globalAttributes.find(\n      (val) => val.name === attributeName\n    );\n    return attribute !== undefined;\n  }\n}\n\nmodule.exports = NetCDFReader;\n","'use strict';\n\n/* reader.toString() provides the following information\n    GLOBAL ATTRIBUTES\n      dataset_completeness           = C1+C2\n      ms_template_revision           = 1.0.1\n      netcdf_revision                = 2.3.2\n      languages                      = English\n      administrative_comments        = 1% CH2Cl2\n      dataset_origin                 = Santa Clara, CA\n      netcdf_file_date_time_stamp    = 20161012052159+0200\n      experiment_title               = P071 Essence super BP\n      experiment_date_time_stamp     = 20070923040800+0200\n      operator_name                  = SC\n      external_file_ref_0            = FIRE_RTL.M\n      experiment_type                = Centroided Mass Spectrum\n      number_of_times_processed      = 1\n      number_of_times_calibrated     = 0\n      sample_state                   = Other State\n      test_separation_type           = No Chromatography\n      test_ms_inlet                  = Capillary Direct\n      test_ionization_mode           = Electron Impact\n      test_ionization_polarity       = Positive Polarity\n      test_detector_type             = Electron Multiplier\n      test_resolution_type           = Constant Resolution\n      test_scan_function             = Mass Scan\n      test_scan_direction            = Up\n      test_scan_law                  = Linear\n      raw_data_mass_format           = Float\n      raw_data_time_format           = Short\n      raw_data_intensity_format      = Float\n\n    VARIABLES:\n      error_log                      = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 64)\n      a_d_sampling_rate              = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 6401)\n      a_d_coaddition_factor          = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 6402)\n      scan_acquisition_time          = [5.25,5.84,6.428999999999999,7.019,7.609,8.199,8.7 (length: 6401)\n      scan_duration                  = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 6401)\n      inter_scan_time                = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 6401)\n      resolution                     = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 6401)\n      actual_scan_number             = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 (length: 6401)\n      total_intensity                = [3134,3157,3085,3134,3093,3113,3061,3057,3030,3166 (length: 6401)\n      mass_range_min                 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 6401)\n      mass_range_max                 = [206.89999389648438,206.89999389648438,207,207.100 (length: 6401)\n      time_range_min                 = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 6401)\n      time_range_max                 = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 6401)\n      scan_index                     = [0,11,22,33,44,55,66,76,88,99,111,122,134,145,156, (length: 6401)\n      point_count                    = [11,11,11,11,11,11,10,12,11,12,11,12,11,11,11,11,1 (length: 6401)\n      flag_count                     = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 6401)\n      mass_values                    = [16,17,18.100000381469727,28,32,35,36,38,40,44.099 (length: 157201)\n      time_values                    = [9.969209968386869e+36,9.969209968386869e+36,9.969 (length: 157201)\n      intensity_values               = [37,293,1243,737,420,45,196,72,22,35,34,28,299,123 (length: 157201)\n      instrument_name                = [\"G\",\"a\",\"s\",\" \",\"C\",\"h\",\"r\",\"o\",\"m\",\"a\",\"t\",\"o\",\" (length: 32)\n      instrument_id                  = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_mfr                 = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_model               = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_serial_no           = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_sw_version          = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_fw_version          = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_os_version          = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_app_version         = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_comments            = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n*/\n\nfunction agilentGCMS(reader) {\n  const time = reader.getDataVariable('scan_acquisition_time');\n  const tic = reader.getDataVariable('total_intensity');\n\n  // variables to get the mass-intensity values\n  const pointCount = reader.getDataVariable('point_count');\n  const massValues = reader.getDataVariable('mass_values');\n  const intensityValues = reader.getDataVariable('intensity_values');\n\n  let ms = new Array(pointCount.length);\n  let index = 0;\n  for (let i = 0; i < ms.length; i++) {\n    let size = pointCount[i];\n    ms[i] = [new Array(size), new Array(size)];\n\n    for (let j = 0; j < size; j++) {\n      ms[i][0][j] = massValues[index];\n      ms[i][1][j] = intensityValues[index++];\n    }\n  }\n\n  return {\n    times: time,\n    series: [\n      {\n        name: 'tic',\n        dimension: 1,\n        data: tic,\n      },\n      {\n        name: 'ms',\n        dimension: 2,\n        data: ms,\n      },\n    ],\n  };\n}\n\nmodule.exports = agilentGCMS;\n","'use strict';\n\n/* reader.toString() provides the following information\n    GLOBAL ATTRIBUTES\n      dataset_completeness           = C1+C2\n      ms_template_revision           = 1.0.1\n      netcdf_revision                = 2.3.2\n      languages                      = English\n      netcdf_file_date_time_stamp    = 20170428032023+0000\n      experiment_title               = MS51762A16\n    11829FC03_3__60_40\n      experiment_date_time_stamp     = 20160930202145-0001\n      operator_name                  = Begemann/Eikenberg/Roettger\n      pre_experiment_program_name    = otofControl 3.4.16.0\n      post_experiment_program_name   = Bruker Compass DataAnalysis 4.2\n      source_file_reference          = X:\\2016\\MS5\\1700\\MS51762A16.d\n      source_file_format             = Bruker Daltonics Data File\n      experiment_type                = Centroided Mass Spectrum\n      sample_state                   = Other State\n      test_separation_type           = No Chromatography\n      test_ms_inlet                  = Direct Inlet Probe\n      test_ionization_mode           = Electrospray Ionization\n      test_ionization_polarity       = Positive Polarity\n      test_detector_type             = Electron Multiplier\n      test_resolution_type           = Proportional Resolution\n      test_scan_function             = Mass Scan\n      test_scan_direction            = Up\n      test_scan_law                  = Linear\n      raw_data_mass_format           = Double\n      raw_data_time_format           = Float\n      raw_data_intensity_format      = Float\n      units                          = Seconds\n      scale_factor                   = 1\n\n    VARIABLES:\n      error_log                      = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 64)\n      a_d_sampling_rate              = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 4513)\n      a_d_coaddition_factor          = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 4514)\n      scan_acquisition_time          = [0.329,0.73,1.132,1.534,1.936,2.337,2.739,3.14,3.5 (length: 4513)\n      scan_duration                  = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 4513)\n      inter_scan_time                = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 4513)\n      resolution                     = [106.6623112889557,110.7855343519544,104.407495112 (length: 4513)\n      actual_scan_number             = [0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34, (length: 4513)\n      total_intensity                = [5297.4945068359375,6172.123912811279,5934.7557412 (length: 4513)\n      mass_range_min                 = [49.99999997418507,49.99999997418507,49.9999999741 (length: 4513)\n      mass_range_max                 = [1599.9999564432276,1599.9999564432276,1599.999956 (length: 4513)\n      time_range_min                 = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 4513)\n      time_range_max                 = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 4513)\n      scan_index                     = [0,60,128,195,265,324,399,472,542,596,671,738,803, (length: 4513)\n      point_count                    = [60,68,67,70,59,75,73,70,54,75,67,65,64,73,56,69,6 (length: 4513)\n      flag_count                     = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 4513)\n      mass_values                    = [51.53516375878996,95.32974890044508,106.334477231 (length: 1176507)\n      intensity_values               = [76.99999237060547,80,90,78.99799346923828,80.9352 (length: 1176507)\n      instrument_name                = [\"m\",\"i\",\"c\",\"r\",\"O\",\"T\",\"O\",\"F\",\"\",\" \",\" \",\" \",\"  (length: 32)\n      instrument_id                  = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_mfr                 = [\"B\",\"r\",\"u\",\"k\",\"e\",\"r\",\" \",\"D\",\"a\",\"l\",\"t\",\"o\",\" (length: 32)\n      instrument_model               = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_serial_no           = [\"2\",\"1\",\"3\",\"7\",\"5\",\"0\",\".\",\"1\",\"0\",\"3\",\"5\",\"9\",\" (length: 32)\n      instrument_sw_version          = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_fw_version          = [\"\",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\"  (length: 32)\n      instrument_os_version          = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_app_version         = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_comments            = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n*/\n\nfunction finniganGCMS(reader) {\n  const time = reader.getDataVariable('scan_acquisition_time');\n  const tic = reader.getDataVariable('total_intensity');\n\n  // variables to get the mass-intensity values\n  let scanIndex = reader.getDataVariable('scan_index');\n  const massValues = reader.getDataVariable('mass_values');\n  const intensityValues = reader.getDataVariable('intensity_values');\n  scanIndex.push(massValues.length);\n\n  let ms = new Array(time.length);\n  let index = 0;\n  for (let i = 0; i < ms.length; i++) {\n    let size = scanIndex[i + 1] - scanIndex[i];\n    ms[i] = [new Array(size), new Array(size)];\n\n    for (let j = 0; j < size; j++) {\n      ms[i][0][j] = massValues[index];\n      ms[i][1][j] = intensityValues[index++];\n    }\n  }\n\n  return {\n    times: time,\n    series: [\n      {\n        name: 'tic',\n        dimension: 1,\n        data: tic,\n      },\n      {\n        name: 'ms',\n        dimension: 2,\n        data: ms,\n      },\n    ],\n  };\n}\n\nmodule.exports = finniganGCMS;\n","'use strict';\n\n/* reader.toString() provides the following information\n    GLOBAL ATTRIBUTES\n      dataset_completeness           = C1+C2\n      aia_template_revision          = 1.0\n      netcdf_revision                = 2.3\n      languages                      = English only\n      injection_date_time_stamp      = 20181030174305+0000\n      HP_injection_time              = 30-Oct-18, 17:43:05\n      experiment_title               = SequenceLine: 1  Inj: 1\n      operator_name                  = SYSTEM\n      separation_experiment_type     = liquid chromatography\n      source_file_reference          = C:\\CHEM32\\1\\DATA\\MINGMING\\MW-1-MEO-I IC-90 2018-10-30 17-42-13\\MW-2-6-6 IC 90.D\n      sample_name                    = MW-2-6-6 IC 90\n      sample_id                      =\n      detector_unit                  = mAU\n      detection_method_name          = POS 3 IC 90-10 31 MIN.M\n      detector_name                  = DAD1 A, Sig=254,4 Ref=360,100\n      retention_unit                 = seconds\n\n   VARIABLES:\n      detector_maximum_value         = [130.9263458251953] (length: 1)\n      detector_minimum_value         = [-0.1758841574192047] (length: 1)\n      actual_run_time_length         = [1860] (length: 1)\n      actual_delay_time              = [0.012000000104308128] (length: 1)\n      actual_sampling_interval       = [0.4000000059604645] (length: 1)\n      ordinate_values                = [-0.07588416337966919,-0.07525086402893066,-0.0740 (length: 4651)\n      peak_retention_time            = [196.0651397705078,332.5663757324219,527.549865722 (length: 8)\n      peak_start_time                = [186.81199645996094,239.21200561523438,502.4119873 (length: 8)\n      peak_end_time                  = [220.81201171875,471.5176696777344,572.47869873046 (length: 8)\n      peak_width                     = [4.974428176879883,62.90694808959961,11.9328641891 (length: 8)\n      peak_area                      = [556.7650146484375,419.825439453125,66.56610107421 (length: 8)\n      peak_area_percent              = [7.0321502685546875,5.302552223205566,0.8407546877 (length: 8)\n      peak_height                    = [100.07515716552734,5.1860527992248535,4.827196121 (length: 8)\n      peak_height_percent            = [29.76352310180664,1.5423927307128906,1.4356645345 (length: 8)\n      peak_asymmetry                 = [1.4555920362472534,0.8351489901542664,1.707817316 (length: 8)\n      baseline_start_time            = [186.81199645996094,239.21200561523438,502.4119873 (length: 8)\n      baseline_start_value           = [1.9561424255371094,0.9857341647148132,1.127734780 (length: 8)\n      baseline_stop_time             = [220.81201171875,471.5176696777344,572.47869873046 (length: 8)\n      baseline_stop_value            = [1.1907591819763184,1.10896897315979,1.18347382545 (length: 8)\n      peak_start_detection_code      = [\"B\",\"\",\"B\",\"\",\"B\",\"\",\"B\",\"\",\"V\",\"\",\"B\",\"\",\"B\",\"\", (length: 16)\n      peak_stop_detection_code       = [\"B\",\"\",\"B\",\"\",\"B\",\"\",\"V\",\"\",\"B\",\"\",\"B\",\"\",\"B\",\"\", (length: 16)\n      migration_time                 = [196.0651397705078,332.5663757324219,527.549865722 (length: 8)\n      peak_area_square_root          = [23.595869064331055,20.489643096923828,8.158804893 (length: 8)\n      manually_reintegrated_peaks    = [0,0,0,0,0,0,0,0] (length: 8)\n*/\n\nfunction agilentHPLC(reader) {\n  const intensities = reader.getDataVariable('ordinate_values');\n  const numberPoints = intensities.length;\n  const detector = reader.getAttribute('detector_name');\n  let channel;\n  if (detector.match(/dad/i)) {\n    channel = `uv${Number(detector.replace(/.*Sig=([0-9]+).*/, '$1'))}`;\n  } else if (detector.match(/tic/i)) {\n    channel = 'tic';\n  } else {\n    channel = 'unknown';\n  }\n  const delayTime = reader.getDataVariable('actual_delay_time')[0];\n  const runtimeLength = reader.getDataVariable('actual_run_time_length')[0];\n  let samplingInterval;\n  if (reader.dataVariableExists('actual_sampling_interval')) {\n    samplingInterval = reader.getDataVariable('actual_sampling_interval')[0];\n\n    if (\n      Math.abs(delayTime + samplingInterval * numberPoints - runtimeLength) > 3\n    ) {\n      throw new Error(\n        'The expected last time does not correspond to the runtimeLength',\n      );\n    }\n  } else {\n    samplingInterval = (runtimeLength - delayTime) / numberPoints;\n  }\n\n  let times = [];\n  let time = delayTime;\n  for (let i = 0; i < numberPoints; i++) {\n    times.push(time);\n    time += samplingInterval;\n  }\n\n  return {\n    times,\n    series: [\n      {\n        name: channel,\n        dimension: 1,\n        data: intensities,\n      },\n    ],\n  };\n}\n\nmodule.exports = agilentHPLC;\n","'use strict';\n\n/* reader.toString() provides the following information\n    GLOBAL ATTRIBUTES\n      dataset_completeness           = C1+C2\n      ms_template_revision           = 1.0.1\n      administrative_comments        =\n      dataset_owner                  =\n      experiment_title               =\n      experiment_date_time_stamp     = 20150902041002+0100\n      netcdf_file_date_time_stamp    = 20151026063419+0000\n      experiment_type                = Centroided Mass Spectrum\n      netcdf_revision                = 2.3.2\n      operator_name                  = DSQ\n      source_file_reference          = G:\\FCO\\FCO_CIO\\K2\\MP2013\\T1 IL database 2013\\9. IL Data Entry\\12_HU_HIFS\\IL database\\RAW files\\Lukoil-Disel-150901.RAW\n      source_file_date_time_stamp    = 20150902041002+0100\n      source_file_format             = Finnigan\n      languages                      = English\n      external_file_ref_0            =\n      instrument_number              = 1\n      sample_prep_comments           =\n      sample_comments                = Lukoil Disel 0,5 % CS2 1 % inkt\n      test_separation_type           =\n      test_ms_inlet                  =\n      test_ionization_mode           =\n      test_ionization_polarity       = Positive Polarity\n      test_detector_type             = Conversion Dynode Electron Multiplier\n      test_scan_function             = Mass Scan\n      test_scan_direction            =\n      test_scan_law                  = Linear\n      number_of_scans                = 11832\n      raw_data_mass_format           = Double\n      raw_data_intensity_format      = Long\n      actual_run_time                = 3519.6410000000005\n      actual_delay_time              = 82.328\n      global_mass_min                = 0\n      global_mass_max                = 450\n      calibrated_mass_min            = 0\n      calibrated_mass_max            = 0\n      mass_axis_label                = M/Z\n      intensity_axis_label           = Abundance\n\n    VARIABLES:\n      error_log                      = [\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\" (length: 64)\n      instrument_name                = [\"L\",\"C\",\"Q\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\" (length: 32)\n      instrument_id                  = [\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\" (length: 32)\n      instrument_mfr                 = [\"F\",\"i\",\"n\",\"n\",\"i\",\"g\",\"a\",\"n\",\"-\",\"M\",\"A\",\"T\",\" (length: 32)\n      instrument_model               = [\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\" (length: 32)\n      instrument_sw_version          = [\"3\",\".\",\"1\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\" (length: 32)\n      instrument_os_version          = [\"W\",\"i\",\"n\",\"d\",\"o\",\"w\",\"s\",\" \",\"V\",\"i\",\"s\",\"t\",\" (length: 32)\n      scan_index                     = [0,34,74,113,145,177,211,239,267,299,341,374,400,4 (length: 11832)\n      point_count                    = [34,40,39,32,32,34,28,28,32,42,33,26,29,34,31,28,2 (length: 11832)\n      flag_count                     = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 11832)\n      a_d_sampling_rate              = [1000,1000,1000,1000,1000,1000,1000,1000,1000,1000 (length: 11832)\n      scan_acquisition_time          = [82.328,82.625,82.76599999999999,83.063,83.188,83. (length: 11832)\n      scan_duration                  = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 11832)\n      mass_range_min                 = [35,16,35,16,35,16,35,16,35,16,35,16,35,16,35,16,3 (length: 11832)\n      mass_range_max                 = [450,150,450,150,450,150,450,150,450,150,450,150,4 (length: 11832)\n      scan_type                      = [65537,65537,65537,65537,65537,65537,65537,65537,6 (length: 11832)\n      resolution                     = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 11832)\n      total_intensity                = [375220,1054339,228245,576718,58280,288629,29815,1 (length: 11832)\n      mass_values                    = [36.3023681640625,36.98402404785156,38.08326721191 (length: 1366002)\n      intensity_values               = [335,287,331,266,2423,448,9009,833,261,661,4003,21 (length: 1366002)\n\n*/\n\nfunction finniganGCMS(reader) {\n  const time = reader.getDataVariable('scan_acquisition_time');\n  const tic = reader.getDataVariable('total_intensity');\n\n  // variables to get the mass-intensity values\n  let scanIndex = reader.getDataVariable('scan_index');\n  const massValues = reader.getDataVariable('mass_values');\n  const intensityValues = reader.getDataVariable('intensity_values');\n  scanIndex.push(massValues.length);\n\n  let ms = new Array(time.length);\n  let index = 0;\n  for (let i = 0; i < ms.length; i++) {\n    let size = scanIndex[i + 1] - scanIndex[i];\n    ms[i] = [new Array(size), new Array(size)];\n\n    for (let j = 0; j < size; j++) {\n      ms[i][0][j] = massValues[index];\n      ms[i][1][j] = intensityValues[index++];\n    }\n  }\n\n  return {\n    times: time,\n    series: [\n      {\n        name: 'tic',\n        dimension: 1,\n        data: tic,\n      },\n      {\n        name: 'ms',\n        dimension: 2,\n        data: ms,\n      },\n    ],\n  };\n}\n\nmodule.exports = finniganGCMS;\n","'use strict';\n\n/* reader.toString() provides the following information\n    GLOBAL ATTRIBUTES\n      dataset_completeness           = C1+C2\n      ms_template_revision           = 1.0.1\n      netcdf_revision                = 2.3.2\n      languages                      = English\n      administrative_comments        =\n      netcdf_file_date_time_stamp    = 20180913165502+0000\n      experiment_title               =\n      experiment_date_time_stamp     = 20180910165319+0000\n      operator_name                  = Admin\n      source_file_reference          = D:\\GCMSsolution\\Data\\Chromatograms\\Cato\\bormann_CB000_Test2.qgd\n      source_file_format             = Shimadzu GCMSsolution\n      source_file_date_time_stamp    = 20180910165319+0000\n      experiment_type                = Centroided Mass Spectrum\n      sample_internal_id             =\n      sample_comments                =\n      sample_state                   = Other State\n      test_separation_type           = Gas-Solid Chromatography\n      test_ms_inlet                  = Other Probe\n      test_ionization_mode           = Electron Impact\n      test_ionization_polarity       = Positive Polarity\n      test_electron_energy           = 70\n      test_detector_type             = Electron Multiplier\n      test_resolution_type           = Constant Resolution\n      test_scan_function             = Mass Scan\n      test_scan_direction            = Up\n      test_scan_law                  = Quadratic\n      test_scan_time                 = 0\n      raw_data_mass_format           = Double\n      raw_data_time_format           = Long\n      raw_data_intensity_format      = Long\n      units                          = Seconds\n      scale_factor                   = 1\n      long_name                      = Seconds\n      starting_scan_number           = 0\n      actual_run_time_length         = 1289\n      actual_delay_time              = 0\n      raw_data_uniform_sampling_flag = 1\n\n    VARIABLES:\n      error_log                      = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 64)\n      a_d_sampling_rate              = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 3820)\n      a_d_coaddition_factor          = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 3820)\n      scan_acquisition_time          = [144,144.3,144.6,144.9,145.2,145.5,145.8,146.1,146 (length: 3820)\n      scan_duration                  = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 3820)\n      inter_scan_time                = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 3820)\n      resolution                     = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 3820)\n      actual_scan_number             = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,2 (length: 3820)\n      total_intensity                = [63566,61702,61873,59738,58321,59001,59364,59871,6 (length: 3820)\n      mass_range_min                 = [35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,3 (length: 3820)\n      mass_range_max                 = [500,500,500,500,500,500,500,500,500,500,500,500,5 (length: 3820)\n      time_range_min                 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 3820)\n      time_range_max                 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 3820)\n      scan_index                     = [0,466,932,1398,1863,2329,2795,3260,3726,4192,4658 (length: 3820)\n      point_count                    = [466,466,466,465,466,466,465,466,466,466,466,466,4 (length: 3820)\n      flag_count                     = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 3820)\n      mass_values                    = [35,36,37.1,38.1,39.1,40.15,41.1,42.1,43.15,44.1,4 (length: 1779397)\n      intensity_values               = [26,111,412,785,3098,485,5772,7391,11213,711,687,1 (length: 1779397)\n      instrument_name                = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_id                  = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n      instrument_mfr                 = [\"S\",\"h\",\"i\",\"m\",\"a\",\"d\",\"z\",\"u\",\" \",\"C\",\"o\",\"r\",\" (length: 32)\n      instrument_model               = [\"G\",\"C\",\"M\",\"S\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\", (length: 32)\n      instrument_serial_no           = [\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\" (length: 32)\n      instrument_sw_version          = [\"4\",\".\",\"2\",\"0\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\", (length: 32)\n      instrument_fw_version          = [\"G\",\"C\",\"M\",\"S\",\"-\",\"Q\",\"P\",\"2\",\"0\",\"1\",\"0\",\"1\",\" (length: 32)\n      instrument_os_version          = [\"W\",\"i\",\"n\",\"d\",\"o\",\"w\",\"s\",\"\",\"\",\"\",\"\",\"\",\"\",\"\", (length: 32)\n      instrument_app_version         = [\"G\",\"C\",\"M\",\"S\",\"s\",\"o\",\"l\",\"u\",\"t\",\"i\",\"o\",\"n\",\" (length: 32)\n      instrument_comments            = [\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" \",\" (length: 32)\n*/\n\nfunction shimadzuGCMS(reader) {\n  const time = reader.getDataVariable('scan_acquisition_time');\n  const tic = reader.getDataVariable('total_intensity');\n\n  // variables to get the mass-intensity values\n  let scanIndex = reader.getDataVariable('scan_index');\n  const massValues = reader.getDataVariable('mass_values');\n  const intensityValues = reader.getDataVariable('intensity_values');\n  scanIndex.push(massValues.length);\n\n  let ms = new Array(time.length);\n  let index = 0;\n  for (let i = 0; i < ms.length; i++) {\n    let size = scanIndex[i + 1] - scanIndex[i];\n    ms[i] = [new Array(size), new Array(size)];\n\n    for (let j = 0; j < size; j++) {\n      ms[i][0][j] = massValues[index];\n      ms[i][1][j] = intensityValues[index++];\n    }\n  }\n\n  return {\n    times: time,\n    series: [\n      {\n        name: 'tic',\n        dimension: 1,\n        data: tic,\n      },\n      {\n        name: 'ms',\n        dimension: 2,\n        data: ms,\n      },\n    ],\n  };\n}\n\nmodule.exports = shimadzuGCMS;\n","'use strict';\n\n/* reader.toString() provides the following information\n    DIMENSIONS\n      point_number                   = size: 0\n      scan_number                    = size: 60\n      error_number                   = size: 1\n      _64_byte_string                = size: 64\n\n    GLOBAL ATTRIBUTES\n      dataset_completeness           = C1\n      ms_template_revision           = 1.0.1\n      netcdf_revision                = 4.2\n      languages                      = English\n      administrative_comments        =\n      netcdf_file_date_time_stamp    = 202003031432433600000\n      experiment_date_time_stamp     = 202003031432433600000\n      source_file_reference          = JC-012_cleavage test_Scan1_is1.datx 2020.03.03 14:32:43\n      source_file_format             = Advion ExpressIon Compact Mass Spectrometer Data System\n      source_file_date_time_stamp    = 202003031432433600000\n      experiment_title               =\n      experiment_type                = Continuum Mass Spectrum\n      test_ionization_mode           = Electrospray Ionization\n      test_ionization_polarity       = Positive Polarity\n      sample_state                   = Other State\n      test_separation_type           = No Chromatography\n      test_ms_inlet                  = Direct Inlet Probe\n      test_detector_type             = Electron Multiplier\n      test_resolution_type           = Constant Resolution\n      test_scan_function             = Mass Scan\n      test_scan_direction            = Up\n      test_scan_law                  = Linear\n      raw_data_mass_format           = Float\n      raw_data_time_format           = Double\n      raw_data_intensity_format      = Float\n      units                          = Seconds\n      global_mass_min                = 9.949999809265137\n      global_mass_max                = 1199.75\n      actual_run_time_length         = 133.46099853515625\n      starting_scan_number           = 1\n      actual_delay_time              = 0\n      raw_data_uniform_sampling_flag = 0\n\n    VARIABLES:\n      error_log                      = [\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\" (length: 64)\n      scan_index                     = [0,3096,6282,9865,13409,16765,20281,23603,27099,30 (length: 60)\n      point_count                    = [3096,3186,3583,3544,3356,3516,3322,3496,3351,3031 (length: 60)\n      flag_count                     = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 (length: 60)\n      actual_scan_number             = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 (length: 60)\n      a_d_coaddition_factor          = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 60)\n      a_d_sampling_rate              = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 60)\n      inter_scan_time                = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 60)\n      mass_range_min                 = [9.949999809265137,9.949999809265137,9.94999980926 (length: 60)\n      mass_range_max                 = [164.6999969482422,169.1999969482422,189.050003051 (length: 60)\n      scan_acquisition_time          = [0.08100000023841858,2.3420000076293945,4.60300016 (length: 60)\n      scan_duration                  = [2.261000007390976,2.261000156402588,2.25999975204 (length: 60)\n      resolution                     = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 60)\n      time_range_min                 = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 60)\n      time_range_max                 = [-9999,-9999,-9999,-9999,-9999,-9999,-9999,-9999,- (length: 60)\n      total_intensity                = [4498210816,4468554240,5001547264,5405233152,50000 (length: 60)\n      mass_values                    = [9.949999809265137,83.5,83.55000305175781,83.59999 (length: 199393)\n      intensity_values               = [0,818716,462148,0,735558,952901,0,165241,421829,0 (length: 199393)\n*/\n\nfunction advionGCMS(reader) {\n  const time = reader.getDataVariable('scan_acquisition_time');\n  const tic = reader.getDataVariable('total_intensity');\n\n  // variables to get the mass-intensity values\n  let scanIndex = reader.getDataVariable('scan_index');\n  const massValues = reader.getDataVariable('mass_values');\n  const intensityValues = reader.getDataVariable('intensity_values');\n  scanIndex.push(massValues.length);\n\n  let ms = new Array(time.length);\n  let index = 0;\n  for (let i = 0; i < ms.length; i++) {\n    let size = scanIndex[i + 1] - scanIndex[i];\n    ms[i] = [new Array(size), new Array(size)];\n\n    for (let j = 0; j < size; j++) {\n      ms[i][0][j] = massValues[index];\n      ms[i][1][j] = intensityValues[index++];\n    }\n  }\n\n  return {\n    times: time,\n    series: [\n      {\n        name: 'tic',\n        dimension: 1,\n        data: tic,\n      },\n      {\n        name: 'ms',\n        dimension: 2,\n        data: ms,\n      },\n    ],\n  };\n}\n\nmodule.exports = advionGCMS;\n","'use strict';\n\nfunction aiaTemplate(reader) {\n  let time = [];\n  const tic = reader.getDataVariable('ordinate_values');\n\n  // variables to get the time\n  const delayTime = Number(reader.getDataVariable('actual_delay_time'));\n  const interval = Number(reader.getDataVariable('actual_sampling_interval'));\n\n  let currentTime = delayTime;\n  for (let i = 0; i < tic.length; i++) {\n    time.push(currentTime);\n    currentTime += interval;\n  }\n\n  return {\n    times: time,\n    series: [\n      {\n        name: 'tic',\n        dimension: 1,\n        data: tic,\n      },\n    ],\n  };\n}\n\nmodule.exports = aiaTemplate;\n","'use strict';\n\nconst NetCDFReader = require('netcdfjs');\n\nconst agilentGCMS = require('./agilentGCMS');\nconst brukerGCMS = require('./brukerGCMS');\nconst agilentHPLC = require('./agilentHPLC');\nconst finniganGCMS = require('./finniganGCMS');\nconst shimadzuGCMS = require('./shimadzuGCMS');\nconst advionGCMS = require('./advionGCMS');\nconst aiaTemplate = require('./aiaTemplate');\n\n/**\n * Reads a NetCDF file and returns a formatted JSON with the data from it\n * @param {ArrayBuffer} data - ArrayBuffer or any Typed Array (including Node.js' Buffer from v4) with the data\n * @param {object} [options={}]\n * @param {boolean} [options.meta] - add meta information\n * @param {boolean} [options.variables] -add variables information\n * @return {{times, series}} - JSON with the time, TIC and mass spectra values\n */\nfunction netcdfGcms(data, options = {}) {\n  let reader = new NetCDFReader(data);\n  const globalAttributes = reader.globalAttributes;\n\n  let instrument_mfr =\n    reader.dataVariableExists('instrument_mfr') &&\n    reader.getDataVariableAsString('instrument_mfr');\n  let dataset_origin = reader.attributeExists('dataset_origin');\n  let mass_values = reader.dataVariableExists('mass_values');\n  let detector_name = reader.getAttribute('detector_name');\n  let aia_template_revision = reader.attributeExists('aia_template_revision');\n  let source_file_format = reader.getAttribute('source_file_format');\n\n  let ans;\n\n  if (mass_values && dataset_origin) {\n    ans = agilentGCMS(reader);\n  } else if (\n    mass_values &&\n    instrument_mfr &&\n    instrument_mfr.match(/finnigan/i)\n  ) {\n    ans = finniganGCMS(reader);\n  } else if (mass_values && instrument_mfr && instrument_mfr.match(/bruker/i)) {\n    ans = brukerGCMS(reader);\n  } else if (mass_values && instrument_mfr && instrument_mfr.match(/bruker/i)) {\n    ans = brukerGCMS(reader);\n  } else if (\n    mass_values &&\n    source_file_format &&\n    source_file_format.match(/shimadzu/i)\n  ) {\n    ans = shimadzuGCMS(reader);\n  } else if (\n    mass_values &&\n    source_file_format &&\n    source_file_format.match(/advion/i)\n  ) {\n    ans = advionGCMS(reader);\n  } else if (detector_name && detector_name.match(/(dad|tic)/i)) {\n    // diode array agilent HPLC\n    ans = agilentHPLC(reader);\n  } else if (aia_template_revision) {\n    ans = aiaTemplate(reader);\n  } else {\n    throw new TypeError('Unknown file format');\n  }\n\n  if (options.meta) {\n    ans.meta = addMeta(globalAttributes);\n  }\n\n  if (options.variables) {\n    ans.variables = addVariables(reader);\n  }\n\n  return ans;\n}\n\n/**\n * Reads a NetCDF file with Agilent GCMS format and returns a formatted JSON with the data from it\n * @param {ArrayBuffer} data - ArrayBuffer or any Typed Array (including Node.js' Buffer from v4) with the data\n * @return {{times, series}} - JSON with the time, TIC and mass spectra values\n */\nfunction fromAgilentGCMS(data) {\n  return agilentGCMS(new NetCDFReader(data));\n}\n\n/**\n * Reads a NetCDF file with Agilent HPLC format and returns a formatted JSON with the data from it\n * @param {ArrayBuffer} data - ArrayBuffer or any Typed Array (including Node.js' Buffer from v4) with the data\n * @return {{times, series}} - JSON with the time, TIC and mass spectra values\n */\nfunction fromAgilentHPLC(data) {\n  return agilentHPLC(new NetCDFReader(data));\n}\n\n/**\n * Reads a NetCDF file with Finnigan format and returns a formatted JSON with the data from it\n * @param {ArrayBuffer} data - ArrayBuffer or any Typed Array (including Node.js' Buffer from v4) with the data\n * @return {{times, series}} - JSON with the time, TIC and mass spectra values\n */\nfunction fromFinniganGCMS(data) {\n  return finniganGCMS(new NetCDFReader(data));\n}\n\nfunction fromAiaTemplate(data) {\n  return aiaTemplate(new NetCDFReader(data));\n}\n\nfunction addMeta(globalAttributes) {\n  let ans = {};\n  for (const item of globalAttributes) {\n    ans[item.name] = item.value;\n  }\n  return ans;\n}\n\nfunction addVariables(reader) {\n  for (let variable of reader.variables) {\n    variable.value = reader.getDataVariable(variable);\n  }\n  return reader.variables;\n}\n\nmodule.exports = netcdfGcms;\nmodule.exports.fromAgilentGCMS = fromAgilentGCMS;\nmodule.exports.fromAgilentHPLC = fromAgilentHPLC;\nmodule.exports.fromFinniganGCMS = fromFinniganGCMS;\nmodule.exports.fromAiaTemplate = fromAiaTemplate;\n","(function (w) {\n  \"use strict\";\n\n  function findBest(atobNative) {\n    // normal window\n    if ('function' === typeof atobNative) { return atobNative; }\n\n\n    // browserify (web worker)\n    if ('function' === typeof Buffer) {\n      return function atobBrowserify(a) {\n        //!! Deliberately using an API that's deprecated in node.js because\n        //!! this file is for browsers and we expect them to cope with it.\n        //!! Discussion: github.com/node-browser-compat/atob/pull/9\n        return new Buffer(a, 'base64').toString('binary');\n      };\n    }\n\n    // ios web worker with base64js\n    if ('object' === typeof w.base64js) {\n      // bufferToBinaryString\n      // https://git.coolaj86.com/coolaj86/unibabel.js/blob/master/index.js#L50\n      return function atobWebWorker_iOS(a) {\n        var buf = w.base64js.b64ToByteArray(a);\n        return Array.prototype.map.call(buf, function (ch) {\n          return String.fromCharCode(ch);\n        }).join('');\n      };\n    }\n\n\t\treturn function () {\n\t\t\t// ios web worker without base64js\n\t\t\tthrow new Error(\"You're probably in an old browser or an iOS webworker.\" +\n\t\t\t\t\" It might help to include beatgammit's base64-js.\");\n    };\n  }\n\n  var atobBest = findBest(w.atob);\n  w.atob = atobBest;\n\n  if ((typeof module === 'object') && module && module.exports) {\n    module.exports = atobBest;\n  }\n}(window));\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n  var len = b64.length\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=')\n  if (validLen === -1) validLen = len\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4)\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n  var curByte = 0\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen\n\n  var i\n  for (i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)]\n    arr[curByte++] = (tmp >> 16) & 0xFF\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF)\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    )\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    )\n  }\n\n  return parts.join('')\n}\n","/*\n    https://tools.ietf.org/html/rfc3629\n\n    UTF8-char = UTF8-1 / UTF8-2 / UTF8-3 / UTF8-4\n\n    UTF8-1    = %x00-7F\n\n    UTF8-2    = %xC2-DF UTF8-tail\n\n    UTF8-3    = %xE0 %xA0-BF UTF8-tail\n                %xE1-EC 2( UTF8-tail )\n                %xED %x80-9F UTF8-tail\n                %xEE-EF 2( UTF8-tail )\n\n    UTF8-4    = %xF0 %x90-BF 2( UTF8-tail )\n                %xF1-F3 3( UTF8-tail )\n                %xF4 %x80-8F 2( UTF8-tail )\n\n    UTF8-tail = %x80-BF\n*/\n/**\n * Check if a Node.js Buffer or Uint8Array is UTF-8.\n */\nfunction isUtf8(buf) {\n    if (!buf) {\n        return false;\n    }\n    var i = 0;\n    var len = buf.length;\n    while (i < len) {\n        // UTF8-1 = %x00-7F\n        if (buf[i] <= 0x7F) {\n            i++;\n            continue;\n        }\n        // UTF8-2 = %xC2-DF UTF8-tail\n        if (buf[i] >= 0xC2 && buf[i] <= 0xDF) {\n            // if(buf[i + 1] >= 0x80 && buf[i + 1] <= 0xBF) {\n            if (buf[i + 1] >> 6 === 2) {\n                i += 2;\n                continue;\n            }\n            else {\n                return false;\n            }\n        }\n        // UTF8-3 = %xE0 %xA0-BF UTF8-tail\n        // UTF8-3 = %xED %x80-9F UTF8-tail\n        if (((buf[i] === 0xE0 && buf[i + 1] >= 0xA0 && buf[i + 1] <= 0xBF) ||\n            (buf[i] === 0xED && buf[i + 1] >= 0x80 && buf[i + 1] <= 0x9F)) && buf[i + 2] >> 6 === 2) {\n            i += 3;\n            continue;\n        }\n        // UTF8-3 = %xE1-EC 2( UTF8-tail )\n        // UTF8-3 = %xEE-EF 2( UTF8-tail )\n        if (((buf[i] >= 0xE1 && buf[i] <= 0xEC) ||\n            (buf[i] >= 0xEE && buf[i] <= 0xEF)) &&\n            buf[i + 1] >> 6 === 2 &&\n            buf[i + 2] >> 6 === 2) {\n            i += 3;\n            continue;\n        }\n        // UTF8-4 = %xF0 %x90-BF 2( UTF8-tail )\n        //          %xF1-F3 3( UTF8-tail )\n        //          %xF4 %x80-8F 2( UTF8-tail )\n        if (((buf[i] === 0xF0 && buf[i + 1] >= 0x90 && buf[i + 1] <= 0xBF) ||\n            (buf[i] >= 0xF1 && buf[i] <= 0xF3 && buf[i + 1] >> 6 === 2) ||\n            (buf[i] === 0xF4 && buf[i + 1] >= 0x80 && buf[i + 1] <= 0x8F)) &&\n            buf[i + 2] >> 6 === 2 &&\n            buf[i + 3] >> 6 === 2) {\n            i += 4;\n            continue;\n        }\n        return false;\n    }\n    return true;\n}\n\nexport { isUtf8 as default };\n","import isutf8 from 'isutf8';\n/**\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        const { encoding = guessEncoding(blob) } = options;\n        const decoder = new TextDecoder(encoding);\n        return decoder.decode(blob);\n    }\n    throw new TypeError(`blob must be a string, ArrayBuffer or ArrayBufferView`);\n}\nfunction guessEncoding(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 'utf-16be';\n        }\n        if (uint8[0] === 0xff && uint8[1] === 0xfe) {\n            return 'utf-16le';\n        }\n    }\n    //@ts-expect-error an ArrayBuffer is also ok\n    if (!isutf8(blob))\n        return 'latin1';\n    return 'utf-8';\n}\n//# sourceMappingURL=index.js.map","/**\n * Dynamically type a string\n * @param {string} value String to dynamically type\n * @returns {boolean|string|number}\n */\nexport function parseString(value) {\n  if (value.length === 4 || value.length === 5) {\n    let lowercase = value.toLowerCase();\n\n    if (lowercase === 'true') return true;\n    if (lowercase === 'false') return false;\n  }\n  let number = Number(value);\n  if (number === 0 && !value.includes('0')) {\n    return value;\n  }\n  if (!Number.isNaN(number)) return number;\n  return value;\n}\n","const GC_MS_FIELDS = ['TIC', '.RIC', 'SCANNUMBER'];\nexport function complexChromatogram(result) {\n    let spectra = result.spectra;\n    let length = spectra.length;\n    let chromatogram = {\n        times: new Array(length),\n        series: {\n            ms: {\n                dimension: 2,\n                data: new Array(length),\n            },\n        },\n    };\n    let existingGCMSFields = [];\n    for (let i = 0; i < GC_MS_FIELDS.length; i++) {\n        let label = convertMSFieldToLabel(GC_MS_FIELDS[i]);\n        if (spectra[0][label]) {\n            existingGCMSFields.push(label);\n            chromatogram.series[label] = {\n                dimension: 1,\n                data: new Array(length),\n            };\n        }\n    }\n    for (let i = 0; i < length; i++) {\n        let spectrum = spectra[i];\n        chromatogram.times[i] = spectrum.pageValue;\n        for (let j = 0; j < existingGCMSFields.length; j++) {\n            chromatogram.series[existingGCMSFields[j]].data[i] = Number(spectrum[existingGCMSFields[j]]);\n        }\n        if (spectrum.data) {\n            chromatogram.series.ms.data[i] = [spectrum.data.x, spectrum.data.y];\n        }\n    }\n    result.chromatogram = chromatogram;\n}\nexport function isMSField(canonicDataLabel) {\n    return GC_MS_FIELDS.indexOf(canonicDataLabel) !== -1;\n}\nexport function convertMSFieldToLabel(value) {\n    return value.toLowerCase().replace(/[^a-z0-9]/g, '');\n}\n//# sourceMappingURL=complexChromatogram.js.map","export default function convertToFloatArray(stringArray) {\n    let floatArray = [];\n    for (let i = 0; i < stringArray.length; i++) {\n        floatArray.push(Number(stringArray[i]));\n    }\n    return floatArray;\n}\n//# sourceMappingURL=convertToFloatArray.js.map","export default function fastParseXYData(spectrum, value) {\n    // TODO need to deal with result\n    //  console.log(value);\n    // we check if deltaX is defined otherwise we calculate it\n    let yFactor = spectrum.yFactor;\n    let deltaX = spectrum.deltaX;\n    spectrum.isXYdata = true;\n    let currentData = { x: [], y: [] };\n    spectrum.data = currentData;\n    let currentX = spectrum.firstX;\n    let currentY = spectrum.firstY;\n    // we skip the first line\n    //\n    let endLine = false;\n    let ascii;\n    let i = 0;\n    for (; i < value.length; i++) {\n        ascii = value.charCodeAt(i);\n        if (ascii === 13 || ascii === 10) {\n            endLine = true;\n        }\n        else {\n            if (endLine)\n                break;\n        }\n    }\n    // we proceed taking the i after the first line\n    let newLine = true;\n    let isDifference = false;\n    let isLastDifference = false;\n    let lastDifference = 0;\n    let isDuplicate = false;\n    let inComment = false;\n    let currentValue = 0; // can be a difference or a duplicate\n    let lastValue = 0; // must be the real last value\n    let isNegative = false;\n    let inValue = false;\n    let skipFirstValue = false;\n    let decimalPosition = 0;\n    for (; i <= value.length; i++) {\n        if (i === value.length)\n            ascii = 13;\n        else\n            ascii = value.charCodeAt(i);\n        if (inComment) {\n            // we should ignore the text if we are after $$\n            if (ascii === 13 || ascii === 10) {\n                newLine = true;\n                inComment = false;\n            }\n        }\n        else {\n            // when is it a new value ?\n            // when it is not a digit, . or comma\n            // it is a number that is either new or we continue\n            if (ascii <= 57 && ascii >= 48) {\n                // a number\n                inValue = true;\n                if (decimalPosition > 0) {\n                    currentValue += (ascii - 48) / Math.pow(10, decimalPosition++);\n                }\n                else {\n                    currentValue *= 10;\n                    currentValue += ascii - 48;\n                }\n            }\n            else if (ascii === 44 || ascii === 46) {\n                // a \",\" or \".\"\n                inValue = true;\n                decimalPosition++;\n            }\n            else {\n                if (inValue) {\n                    // need to process the previous value\n                    if (newLine) {\n                        newLine = false; // we don't check the X value\n                        // console.log(\"NEW LINE\",isDifference, lastDifference);\n                        // if new line and lastDifference, the first value is just a check !\n                        // that we don't check ...\n                        if (isLastDifference)\n                            skipFirstValue = true;\n                    }\n                    else {\n                        // need to deal with duplicate and differences\n                        if (skipFirstValue) {\n                            skipFirstValue = false;\n                        }\n                        else {\n                            if (isDifference) {\n                                lastDifference = isNegative ? 0 - currentValue : currentValue;\n                                isLastDifference = true;\n                                isDifference = false;\n                            }\n                            else if (!isDuplicate) {\n                                lastValue = isNegative ? 0 - currentValue : currentValue;\n                            }\n                            let duplicate = isDuplicate ? currentValue - 1 : 1;\n                            for (let j = 0; j < duplicate; j++) {\n                                if (isLastDifference) {\n                                    currentY += lastDifference;\n                                }\n                                else {\n                                    currentY = lastValue;\n                                }\n                                currentData.x.push(currentX);\n                                currentData.y.push(currentY * yFactor);\n                                currentX += deltaX;\n                            }\n                        }\n                    }\n                    isNegative = false;\n                    currentValue = 0;\n                    decimalPosition = 0;\n                    inValue = false;\n                    isDuplicate = false;\n                }\n                // positive SQZ digits @ A B C D E F G H I (ascii 64-73)\n                if (ascii < 74 && ascii > 63) {\n                    inValue = true;\n                    isLastDifference = false;\n                    currentValue = ascii - 64;\n                }\n                else if (ascii > 96 && ascii < 106) {\n                    // negative SQZ digits a b c d e f g h i (ascii 97-105)\n                    inValue = true;\n                    isLastDifference = false;\n                    currentValue = ascii - 96;\n                    isNegative = true;\n                }\n                else if (ascii === 115) {\n                    // DUP digits S T U V W X Y Z s (ascii 83-90, 115)\n                    inValue = true;\n                    isDuplicate = true;\n                    currentValue = 9;\n                }\n                else if (ascii > 82 && ascii < 91) {\n                    inValue = true;\n                    isDuplicate = true;\n                    currentValue = ascii - 82;\n                }\n                else if (ascii > 73 && ascii < 83) {\n                    // positive DIF digits % J K L M N O P Q R (ascii 37, 74-82)\n                    inValue = true;\n                    isDifference = true;\n                    currentValue = ascii - 73;\n                }\n                else if (ascii > 105 && ascii < 115) {\n                    // negative DIF digits j k l m n o p q r (ascii 106-114)\n                    inValue = true;\n                    isDifference = true;\n                    currentValue = ascii - 105;\n                    isNegative = true;\n                }\n                else if (ascii === 36 && value.charCodeAt(i + 1) === 36) {\n                    // $ sign, we need to check the next one\n                    inValue = true;\n                    inComment = true;\n                }\n                else if (ascii === 37) {\n                    // positive DIF digits % J K L M N O P Q R (ascii 37, 74-82)\n                    inValue = true;\n                    isDifference = true;\n                    currentValue = 0;\n                    isNegative = false;\n                }\n                else if (ascii === 45) {\n                    // a \"-\"\n                    // check if after there is a number, decimal or comma\n                    let ascii2 = value.charCodeAt(i + 1);\n                    if ((ascii2 >= 48 && ascii2 <= 57) ||\n                        ascii2 === 44 ||\n                        ascii2 === 46) {\n                        inValue = true;\n                        if (!newLine)\n                            isLastDifference = false;\n                        isNegative = true;\n                    }\n                }\n                else if (ascii === 13 || ascii === 10) {\n                    newLine = true;\n                    inComment = false;\n                }\n                // and now analyse the details ... space or tabulation\n                // if \"+\" we just don't care\n            }\n        }\n    }\n}\n//# sourceMappingURL=fastParseXYData.js.map","const removeCommentRegExp = /\\$\\$.*/;\nconst peakTableSplitRegExp = /[,\\t ]+/;\nexport default function parsePeakTable(spectrum, value, result) {\n    spectrum.isPeaktable = true;\n    if (!spectrum.variables || Object.keys(spectrum.variables) === 2) {\n        parseXY(spectrum, value, result);\n    }\n    else {\n        parseXYZ(spectrum, value, result);\n    }\n    // we will add the data in the variables\n    if (spectrum.variables) {\n        for (let key in spectrum.variables) {\n            spectrum.variables[key].data = spectrum.data[key];\n        }\n    }\n}\nfunction parseXY(spectrum, value, result) {\n    let currentData = { x: [], y: [] };\n    spectrum.data = currentData;\n    // counts for around 20% of the time\n    let lines = value.split(/,? *,?[;\\r\\n]+ */);\n    for (let i = 1; i < lines.length; i++) {\n        let values = lines[i]\n            .trim()\n            .replace(removeCommentRegExp, '')\n            .split(peakTableSplitRegExp);\n        if (values.length % 2 === 0) {\n            for (let j = 0; j < values.length; j = j + 2) {\n                // takes around 40% of the time to add and parse the 2 values nearly exclusively because of Number\n                currentData.x.push(Number(values[j]) * spectrum.xFactor);\n                currentData.y.push(Number(values[j + 1]) * spectrum.yFactor);\n            }\n        }\n        else {\n            result.logs.push(`Format error: ${values}`);\n        }\n    }\n}\nfunction parseXYZ(spectrum, value, result) {\n    let currentData = {};\n    let variables = Object.keys(spectrum.variables);\n    let numberOfVariables = variables.length;\n    variables.forEach((variable) => (currentData[variable] = []));\n    spectrum.data = currentData;\n    // counts for around 20% of the time\n    let lines = value.split(/,? *,?[;\\r\\n]+ */);\n    for (let i = 1; i < lines.length; i++) {\n        let values = lines[i]\n            .trim()\n            .replace(removeCommentRegExp, '')\n            .split(peakTableSplitRegExp);\n        if (values.length % numberOfVariables === 0) {\n            for (let j = 0; j < values.length; j++) {\n                // todo should try to find a xFactor (y, ...)\n                currentData[variables[j % numberOfVariables]].push(Number(values[j]));\n            }\n        }\n        else {\n            result.logs.push(`Format error: ${values}`);\n        }\n    }\n}\n//# sourceMappingURL=parsePeakTable.js.map","export default function parseXYA(spectrum, value) {\n    let removeSymbolRegExp = /(\\(+|\\)+|<+|>+|\\s+)/g;\n    spectrum.isXYAdata = true;\n    let values;\n    let currentData = { x: [], y: [] };\n    spectrum.data = currentData;\n    let lines = value.split(/,? *,?[;\\r\\n]+ */);\n    for (let i = 1; i < lines.length; i++) {\n        values = lines[i].trim().replace(removeSymbolRegExp, '').split(',');\n        currentData.x.push(Number(values[0]));\n        currentData.y.push(Number(values[1]));\n    }\n}\n//# sourceMappingURL=parseXYA.js.map","const toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array).\n *\n * @param {any} value - Object to check.\n * @returns {boolean} True if the object is an array.\n */\nexport function isAnyArray(value) {\n    return toString.call(value).endsWith('Array]');\n}\n//# sourceMappingURL=index.js.map","(function(){function a(d){for(var e=0,f=d.length-1,g=void 0,h=void 0,i=void 0,j=c(e,f);!0;){if(f<=e)return d[j];if(f==e+1)return d[e]>d[f]&&b(d,e,f),d[j];for(g=c(e,f),d[g]>d[f]&&b(d,g,f),d[e]>d[f]&&b(d,e,f),d[g]>d[e]&&b(d,g,e),b(d,g,e+1),h=e+1,i=f;!0;){do h++;while(d[e]>d[h]);do i--;while(d[i]>d[e]);if(i<h)break;b(d,h,i)}b(d,e,i),i<=j&&(e=h),i>=j&&(f=i-1)}}var b=function b(d,e,f){var _ref;return _ref=[d[f],d[e]],d[e]=_ref[0],d[f]=_ref[1],_ref},c=function c(d,e){return~~((d+e)/2)};'undefined'!=typeof module&&module.exports?module.exports=a:window.median=a})();\n","import { isAnyArray } from 'is-any-array';\nimport quickSelectMedian from 'median-quickselect';\n\nfunction median(input) {\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  return quickSelectMedian(input.slice());\n}\n\nexport { median as default };\n","import getMedian from 'ml-array-median';\nexport default function convertTo3DZ(spectra) {\n    let minZ = spectra[0].data.y[0];\n    let maxZ = minZ;\n    let ySize = spectra.length;\n    let xSize = spectra[0].data.x.length;\n    let z = new Array(ySize);\n    for (let i = 0; i < ySize; i++) {\n        z[i] = spectra[i].data.y;\n        for (let j = 0; j < xSize; j++) {\n            let value = z[i][j];\n            if (value < minZ)\n                minZ = value;\n            if (value > maxZ)\n                maxZ = value;\n        }\n    }\n    const firstX = spectra[0].data.x[0];\n    const lastX = spectra[0].data.x[spectra[0].data.x.length - 1]; // has to be -2 because it is a 1D array [x,y,x,y,...]\n    const firstY = spectra[0].pageValue;\n    const lastY = spectra[ySize - 1].pageValue;\n    // Because the min / max value are the only information about the matrix if we invert\n    // min and max we need to invert the array\n    if (firstX > lastX) {\n        for (let spectrum of z) {\n            spectrum.reverse();\n        }\n    }\n    if (firstY > lastY) {\n        z.reverse();\n    }\n    const medians = [];\n    for (let i = 0; i < z.length; i++) {\n        const row = Float64Array.from(z[i]);\n        for (let i = 0; i < row.length; i++) {\n            if (row[i] < 0)\n                row[i] = -row[i];\n        }\n        medians.push(getMedian(row));\n    }\n    const median = getMedian(medians);\n    return {\n        z: z,\n        minX: Math.min(firstX, lastX),\n        maxX: Math.max(firstX, lastX),\n        minY: Math.min(firstY, lastY),\n        maxY: Math.max(firstY, lastY),\n        minZ: minZ,\n        maxZ: maxZ,\n        noise: median,\n    };\n}\n//# sourceMappingURL=convertTo3DZ.js.map","export default function generateContourLines(zData, options) {\n    let noise = zData.noise;\n    let z = zData.z;\n    let povarHeight0, povarHeight1, povarHeight2, povarHeight3;\n    let isOver0, isOver1, isOver2, isOver3;\n    let nbSubSpectra = z.length;\n    let nbPovars = z[0].length;\n    let pAx, pAy, pBx, pBy;\n    let x0 = zData.minX;\n    let xN = zData.maxX;\n    let dx = (xN - x0) / (nbPovars - 1);\n    let y0 = zData.minY;\n    let yN = zData.maxY;\n    let dy = (yN - y0) / (nbSubSpectra - 1);\n    let minZ = zData.minZ;\n    let maxZ = zData.maxZ;\n    // System.out.prvarln('y0 '+y0+' yN '+yN);\n    // -------------------------\n    // Povars attribution\n    //\n    // 0----1\n    // |  / |\n    // | /  |\n    // 2----3\n    //\n    // ---------------------d------\n    let iter = options.nbContourLevels * 2;\n    let contourLevels = new Array(iter);\n    let lineZValue;\n    for (let level = 0; level < iter; level++) {\n        // multiply by 2 for positif and negatif\n        let contourLevel = {};\n        contourLevels[level] = contourLevel;\n        let side = level % 2;\n        let factor = (maxZ - options.noiseMultiplier * noise) *\n            Math.exp((level >> 1) - options.nbContourLevels);\n        if (side === 0) {\n            lineZValue = factor + options.noiseMultiplier * noise;\n        }\n        else {\n            lineZValue = 0 - factor - options.noiseMultiplier * noise;\n        }\n        let lines = [];\n        contourLevel.zValue = lineZValue;\n        contourLevel.lines = lines;\n        if (lineZValue <= minZ || lineZValue >= maxZ)\n            continue;\n        for (let iSubSpectra = 0; iSubSpectra < nbSubSpectra - 1; iSubSpectra++) {\n            let subSpectra = z[iSubSpectra];\n            let subSpectraAfter = z[iSubSpectra + 1];\n            for (let povar = 0; povar < nbPovars - 1; povar++) {\n                povarHeight0 = subSpectra[povar];\n                povarHeight1 = subSpectra[povar + 1];\n                povarHeight2 = subSpectraAfter[povar];\n                povarHeight3 = subSpectraAfter[povar + 1];\n                isOver0 = povarHeight0 > lineZValue;\n                isOver1 = povarHeight1 > lineZValue;\n                isOver2 = povarHeight2 > lineZValue;\n                isOver3 = povarHeight3 > lineZValue;\n                // Example povar0 is over the plane and povar1 and\n                // povar2 are below, we find the varersections and add\n                // the segment\n                if (isOver0 !== isOver1 && isOver0 !== isOver2) {\n                    pAx =\n                        povar + (lineZValue - povarHeight0) / (povarHeight1 - povarHeight0);\n                    pAy = iSubSpectra;\n                    pBx = povar;\n                    pBy =\n                        iSubSpectra +\n                            (lineZValue - povarHeight0) / (povarHeight2 - povarHeight0);\n                    lines.push(pAx * dx + x0);\n                    lines.push(pAy * dy + y0);\n                    lines.push(pBx * dx + x0);\n                    lines.push(pBy * dy + y0);\n                }\n                // remove push does not help !!!!\n                if (isOver3 !== isOver1 && isOver3 !== isOver2) {\n                    pAx = povar + 1;\n                    pAy =\n                        iSubSpectra +\n                            1 -\n                            (lineZValue - povarHeight3) / (povarHeight1 - povarHeight3);\n                    pBx =\n                        povar +\n                            1 -\n                            (lineZValue - povarHeight3) / (povarHeight2 - povarHeight3);\n                    pBy = iSubSpectra + 1;\n                    lines.push(pAx * dx + x0);\n                    lines.push(pAy * dy + y0);\n                    lines.push(pBx * dx + x0);\n                    lines.push(pBy * dy + y0);\n                }\n                // test around the diagonal\n                if (isOver1 !== isOver2) {\n                    pAx =\n                        (povar +\n                            1 -\n                            (lineZValue - povarHeight1) / (povarHeight2 - povarHeight1)) *\n                            dx +\n                            x0;\n                    pAy =\n                        (iSubSpectra +\n                            (lineZValue - povarHeight1) / (povarHeight2 - povarHeight1)) *\n                            dy +\n                            y0;\n                    if (isOver1 !== isOver0) {\n                        pBx =\n                            povar +\n                                1 -\n                                (lineZValue - povarHeight1) / (povarHeight0 - povarHeight1);\n                        pBy = iSubSpectra;\n                        lines.push(pAx);\n                        lines.push(pAy);\n                        lines.push(pBx * dx + x0);\n                        lines.push(pBy * dy + y0);\n                    }\n                    if (isOver2 !== isOver0) {\n                        pBx = povar;\n                        pBy =\n                            iSubSpectra +\n                                1 -\n                                (lineZValue - povarHeight2) / (povarHeight0 - povarHeight2);\n                        lines.push(pAx);\n                        lines.push(pAy);\n                        lines.push(pBx * dx + x0);\n                        lines.push(pBy * dy + y0);\n                    }\n                    if (isOver1 !== isOver3) {\n                        pBx = povar + 1;\n                        pBy =\n                            iSubSpectra +\n                                (lineZValue - povarHeight1) / (povarHeight3 - povarHeight1);\n                        lines.push(pAx);\n                        lines.push(pAy);\n                        lines.push(pBx * dx + x0);\n                        lines.push(pBy * dy + y0);\n                    }\n                    if (isOver2 !== isOver3) {\n                        pBx =\n                            povar +\n                                (lineZValue - povarHeight2) / (povarHeight3 - povarHeight2);\n                        pBy = iSubSpectra + 1;\n                        lines.push(pAx);\n                        lines.push(pAy);\n                        lines.push(pBx * dx + x0);\n                        lines.push(pBy * dy + y0);\n                    }\n                }\n            }\n        }\n    }\n    return {\n        minX: zData.minX,\n        maxX: zData.maxX,\n        minY: zData.minY,\n        maxY: zData.maxY,\n        segments: contourLevels,\n    };\n}\n//# sourceMappingURL=generateContourLines.js.map","import convertTo3DZ from './convertTo3DZ';\nimport generateContourLines from './generateContourLines';\nexport default function add2D(result, options) {\n    let zData = convertTo3DZ(result.spectra);\n    if (!options.noContour) {\n        result.contourLines = generateContourLines(zData, options);\n        delete zData.z;\n    }\n    result.minMax = zData;\n}\n//# sourceMappingURL=add2D.js.map","// sources:\n// https://en.wikipedia.org/wiki/Gyromagnetic_ratio\nexport const gyromagneticRatio = {\n    '1H': 267.52218744e6,\n    '2H': 41.065e6,\n    '3H': 285.3508e6,\n    '3He': -203.789e6,\n    '7Li': 103.962e6,\n    '13C': 67.28284e6,\n    '14N': 19.331e6,\n    '15N': -27.116e6,\n    '17O': -36.264e6,\n    '19F': 251.662e6,\n    '23Na': 70.761e6,\n    '27Al': 69.763e6,\n    '29Si': -53.19e6,\n    '31P': 108.291e6,\n    '57Fe': 8.681e6,\n    '63Cu': 71.118e6,\n    '67Zn': 16.767e6,\n    '129Xe': -73.997e6,\n};\n//# sourceMappingURL=gyromagneticRatio.js.map","import { isAnyArray } from 'is-any-array';\n\nfunction max(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var _options$fromIndex = options.fromIndex,\n      fromIndex = _options$fromIndex === void 0 ? 0 : _options$fromIndex,\n      _options$toIndex = options.toIndex,\n      toIndex = _options$toIndex === void 0 ? input.length : _options$toIndex;\n\n  if (fromIndex < 0 || fromIndex >= input.length || !Number.isInteger(fromIndex)) {\n    throw new Error('fromIndex must be a positive integer smaller than length');\n  }\n\n  if (toIndex <= fromIndex || toIndex > input.length || !Number.isInteger(toIndex)) {\n    throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n  }\n\n  var maxValue = input[fromIndex];\n\n  for (var i = fromIndex + 1; i < toIndex; i++) {\n    if (input[i] > maxValue) maxValue = input[i];\n  }\n\n  return maxValue;\n}\n\nexport { max as default };\n","import { isAnyArray } from 'is-any-array';\n\nfunction min(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var _options$fromIndex = options.fromIndex,\n      fromIndex = _options$fromIndex === void 0 ? 0 : _options$fromIndex,\n      _options$toIndex = options.toIndex,\n      toIndex = _options$toIndex === void 0 ? input.length : _options$toIndex;\n\n  if (fromIndex < 0 || fromIndex >= input.length || !Number.isInteger(fromIndex)) {\n    throw new Error('fromIndex must be a positive integer smaller than length');\n  }\n\n  if (toIndex <= fromIndex || toIndex > input.length || !Number.isInteger(toIndex)) {\n    throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n  }\n\n  var minValue = input[fromIndex];\n\n  for (var i = fromIndex + 1; i < toIndex; i++) {\n    if (input[i] < minValue) minValue = input[i];\n  }\n\n  return minValue;\n}\n\nexport { min as default };\n","import { isAnyArray } from 'is-any-array';\nimport max from 'ml-array-max';\nimport min from 'ml-array-min';\n\nfunction rescale(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  } else if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var output;\n\n  if (options.output !== undefined) {\n    if (!isAnyArray(options.output)) {\n      throw new TypeError('output option must be an array if specified');\n    }\n\n    output = options.output;\n  } else {\n    output = new Array(input.length);\n  }\n\n  var currentMin = min(input);\n  var currentMax = max(input);\n\n  if (currentMin === currentMax) {\n    throw new RangeError('minimum and maximum input values are equal. Cannot rescale a constant array');\n  }\n\n  var _options$min = options.min,\n      minValue = _options$min === void 0 ? options.autoMinMax ? currentMin : 0 : _options$min,\n      _options$max = options.max,\n      maxValue = _options$max === void 0 ? options.autoMinMax ? currentMax : 1 : _options$max;\n\n  if (minValue >= maxValue) {\n    throw new RangeError('min option must be smaller than max option');\n  }\n\n  var factor = (maxValue - minValue) / (currentMax - currentMin);\n\n  for (var i = 0; i < input.length; i++) {\n    output[i] = (input[i] - currentMin) * factor + minValue;\n  }\n\n  return output;\n}\n\nexport { rescale as default };\n","const indent = ' '.repeat(2);\nconst indentData = ' '.repeat(4);\n\nexport function inspectMatrix() {\n  return inspectMatrixWithOptions(this);\n}\n\nexport function inspectMatrixWithOptions(matrix, options = {}) {\n  const { maxRows = 15, maxColumns = 10, maxNumSize = 8 } = options;\n  return `${matrix.constructor.name} {\n${indent}[\n${indentData}${inspectData(matrix, maxRows, maxColumns, maxNumSize)}\n${indent}]\n${indent}rows: ${matrix.rows}\n${indent}columns: ${matrix.columns}\n}`;\n}\n\nfunction inspectData(matrix, maxRows, maxColumns, maxNumSize) {\n  const { rows, columns } = matrix;\n  const maxI = Math.min(rows, maxRows);\n  const maxJ = Math.min(columns, maxColumns);\n  const result = [];\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));\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) {\n  const numStr = String(num);\n  if (numStr.length <= maxNumSize) {\n    return numStr.padEnd(maxNumSize, ' ');\n  }\n  const precise = num.toPrecision(maxNumSize - 2);\n  if (precise.length <= maxNumSize) {\n    return precise;\n  }\n  const exponential = num.toExponential(maxNumSize - 2);\n  const eIndex = exponential.indexOf('e');\n  const e = exponential.slice(eIndex);\n  return exponential.slice(0, maxNumSize - e.length) + e;\n}\n","export function 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, Math.pow(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, Math.pow(this.get(i, j), matrix.get(i, j)));\n      }\n    }\n    return this;\n  };\n}\n","import { isAnyArray } from 'is-any-array';\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 */\nexport function 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 */\nexport function 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 */\nexport function 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 */\nexport function 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\nexport function 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\nexport function 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\nexport function 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\nexport function 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\nexport function checkNonEmpty(matrix) {\n  if (matrix.isEmpty()) {\n    throw new Error('Empty matrix has no elements to index');\n  }\n}\n","import { newArray } from './util';\n\nexport function 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\nexport function 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\nexport function 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\nexport function 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\nexport function 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\nexport function 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\nexport function 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\nexport function 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\nexport function 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\nexport function 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\nexport function 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\nexport function 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\nexport function 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 += Math.pow(matrix.get(i, j), 2) / (matrix.columns - 1);\n    }\n    scale.push(Math.sqrt(sum));\n  }\n  return scale;\n}\n\nexport function 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\nexport function 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 += Math.pow(matrix.get(i, j), 2) / (matrix.rows - 1);\n    }\n    scale.push(Math.sqrt(sum));\n  }\n  return scale;\n}\n\nexport function 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\nexport function 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 += Math.pow(matrix.get(i, j), 2) / divider;\n    }\n  }\n  return Math.sqrt(sum);\n}\n\nexport function 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","import { isAnyArray } from 'is-any-array';\nimport rescale from 'ml-array-rescale';\n\nimport { inspectMatrix, inspectMatrixWithOptions } from './inspect';\nimport { installMathOperations } from './mathOperations';\nimport {\n  sumByRow,\n  sumByColumn,\n  sumAll,\n  productByRow,\n  productByColumn,\n  productAll,\n  varianceByRow,\n  varianceByColumn,\n  varianceAll,\n  centerByRow,\n  centerByColumn,\n  centerAll,\n  scaleByRow,\n  scaleByColumn,\n  scaleAll,\n  getScaleByRow,\n  getScaleByColumn,\n  getScaleAll,\n} from './stat';\nimport {\n  checkRowVector,\n  checkRowIndex,\n  checkColumnIndex,\n  checkColumnVector,\n  checkRange,\n  checkNonEmpty,\n  checkRowIndices,\n  checkColumnIndices,\n} from './util';\n\nexport class 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  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    let result = 0;\n    if (type === 'max') {\n      return this.max();\n    } else if (type === 'frobenius') {\n      for (let i = 0; i < this.rows; i++) {\n        for (let j = 0; j < this.columns; j++) {\n          result = result + this.get(i, j) * this.get(i, j);\n        }\n      }\n      return Math.sqrt(result);\n    } else {\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  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 resultat = AbstractMatrix.zeros(2 * c11.rows, 2 * c11.columns);\n      resultat = resultat.setSubMatrix(c11, 0, 0);\n      resultat = resultat.setSubMatrix(c12, c11.rows, 0);\n      resultat = resultat.setSubMatrix(c21, 0, c11.columns);\n      resultat = resultat.setSubMatrix(c22, c11.rows, c11.columns);\n      return resultat.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: min,\n          max: 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    let newMatrix = new Matrix(this.rows, this.columns);\n    for (let row = 0; row < this.rows; row++) {\n      for (let column = 0; column < this.columns; column++) {\n        newMatrix.set(row, column, this.get(row, column));\n      }\n    }\n    return newMatrix;\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\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\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\nexport default class Matrix extends AbstractMatrix {\n  constructor(nRows, nColumns) {\n    super();\n    if (Matrix.isMatrix(nRows)) {\n      // eslint-disable-next-line no-constructor-return\n      return nRows.clone();\n    } else if (Number.isInteger(nRows) && nRows >= 0) {\n      // Create an empty matrix\n      this.data = [];\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    } 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      for (let i = 0; i < nRows; i++) {\n        if (arrayData[i].length !== nColumns) {\n          throw new RangeError('Inconsistent array dimensions');\n        }\n        this.data.push(Float64Array.from(arrayData[i]));\n      }\n    } else {\n      throw new TypeError(\n        'First argument must be a positive number or an array',\n      );\n    }\n    this.rows = nRows;\n    this.columns = nColumns;\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","import { AbstractMatrix } from '../matrix';\n\nexport default class 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","import Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nexport default class 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","export function 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","import Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nimport { hypotenuse } from './util';\n\nexport default class 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","import Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nimport { hypotenuse } from './util';\n\nexport default class 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 iter = 0;\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          iter = iter + 1;\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          iter = 0;\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","import LuDecomposition from './dc/lu';\nimport QrDecomposition from './dc/qr';\nimport SingularValueDecomposition from './dc/svd';\nimport Matrix from './matrix';\nimport WrapperMatrix2D from './wrap/WrapperMatrix2D';\n\nexport function 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\nexport function 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","import { isAnyArray } from 'is-any-array';\n\nfunction _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\n/**\n * Fill an array with sequential numbers\n * @param {Array<number>} [input] - optional destination array (if not provided a new array will be created)\n * @param {object} [options={}]\n * @param {number} [options.from=0] - first value in the array\n * @param {number} [options.to=10] - last value in the array\n * @param {number} [options.size=input.length] - size of the array (if not provided calculated from step)\n * @param {number} [options.step] - if not provided calculated from size\n * @return {Array<number>}\n */\n\nfunction sequentialFill() {\n  var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (_typeof(input) === 'object' && !isAnyArray(input)) {\n    options = input;\n    input = [];\n  }\n\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  var _options = options,\n      _options$from = _options.from,\n      from = _options$from === void 0 ? 0 : _options$from,\n      _options$to = _options.to,\n      to = _options$to === void 0 ? 10 : _options$to,\n      _options$size = _options.size,\n      size = _options$size === void 0 ? input.length : _options$size,\n      step = _options.step;\n\n  if (size !== 0 && step) {\n    throw new Error('step is defined by the array size');\n  }\n\n  if (!size) {\n    if (step) {\n      size = Math.floor((to - from) / step) + 1;\n    } else {\n      size = to - from + 1;\n    }\n  }\n\n  if (!step && size) {\n    step = (to - from) / (size - 1);\n  }\n\n  if (Array.isArray(input)) {\n    // only works with normal array\n    input.length = 0;\n\n    for (var i = 0; i < size; i++) {\n      input.push(from);\n      from += step;\n    }\n  } else {\n    if (input.length !== size) {\n      throw new Error('sequentialFill typed array must have the correct length');\n    }\n\n    for (var _i = 0; _i < size; _i++) {\n      input[_i] = from;\n      from += step;\n    }\n  }\n\n  return input;\n}\n\nexport { sequentialFill as default };\n","(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n  typeof define === 'function' && define.amd ? define(['exports'], factory) :\n  (factory((global.d3_array = {})));\n}(this, function (exports) { 'use strict';\n\n  function ascending(a, b) {\n    return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n  }\n\n  function bisector(compare) {\n    if (compare.length === 1) compare = ascendingComparator(compare);\n    return {\n      left: function(a, x, lo, hi) {\n        if (lo == null) lo = 0;\n        if (hi == null) hi = a.length;\n        while (lo < hi) {\n          var mid = lo + hi >>> 1;\n          if (compare(a[mid], x) < 0) lo = mid + 1;\n          else hi = mid;\n        }\n        return lo;\n      },\n      right: function(a, x, lo, hi) {\n        if (lo == null) lo = 0;\n        if (hi == null) hi = a.length;\n        while (lo < hi) {\n          var mid = lo + hi >>> 1;\n          if (compare(a[mid], x) > 0) hi = mid;\n          else lo = mid + 1;\n        }\n        return lo;\n      }\n    };\n  }\n\n  function ascendingComparator(f) {\n    return function(d, x) {\n      return ascending(f(d), x);\n    };\n  }\n\n  var ascendingBisect = bisector(ascending);\n  var bisectRight = ascendingBisect.right;\n  var bisectLeft = ascendingBisect.left;\n\n  function descending(a, b) {\n    return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n  }\n\n  function number$1(x) {\n    return x === null ? NaN : +x;\n  }\n\n  function variance(array, f) {\n    var n = array.length,\n        m = 0,\n        a,\n        d,\n        s = 0,\n        i = -1,\n        j = 0;\n\n    if (f == null) {\n      while (++i < n) {\n        if (!isNaN(a = number$1(array[i]))) {\n          d = a - m;\n          m += d / ++j;\n          s += d * (a - m);\n        }\n      }\n    }\n\n    else {\n      while (++i < n) {\n        if (!isNaN(a = number$1(f(array[i], i, array)))) {\n          d = a - m;\n          m += d / ++j;\n          s += d * (a - m);\n        }\n      }\n    }\n\n    if (j > 1) return s / (j - 1);\n  }\n\n  function deviation(array, f) {\n    var v = variance(array, f);\n    return v ? Math.sqrt(v) : v;\n  }\n\n  function extent(array, f) {\n    var i = -1,\n        n = array.length,\n        a,\n        b,\n        c;\n\n    if (f == null) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) { a = c = b; break; }\n      while (++i < n) if ((b = array[i]) != null) {\n        if (a > b) a = b;\n        if (c < b) c = b;\n      }\n    }\n\n    else {\n      while (++i < n) if ((b = f(array[i], i, array)) != null && b >= b) { a = c = b; break; }\n      while (++i < n) if ((b = f(array[i], i, array)) != null) {\n        if (a > b) a = b;\n        if (c < b) c = b;\n      }\n    }\n\n    return [a, c];\n  }\n\n  function constant(x) {\n    return function() {\n      return x;\n    };\n  }\n\n  function identity(x) {\n    return x;\n  }\n\n  function range(start, stop, step) {\n    start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n    var i = -1,\n        n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n        range = new Array(n);\n\n    while (++i < n) {\n      range[i] = start + i * step;\n    }\n\n    return range;\n  }\n\n  var e10 = Math.sqrt(50);\n  var e5 = Math.sqrt(10);\n  var e2 = Math.sqrt(2);\n  function ticks(start, stop, count) {\n    var step = tickStep(start, stop, count);\n    return range(\n      Math.ceil(start / step) * step,\n      Math.floor(stop / step) * step + step / 2, // inclusive\n      step\n    );\n  }\n\n  function tickStep(start, stop, count) {\n    var step0 = Math.abs(stop - start) / Math.max(0, count),\n        step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n        error = step0 / step1;\n    if (error >= e10) step1 *= 10;\n    else if (error >= e5) step1 *= 5;\n    else if (error >= e2) step1 *= 2;\n    return stop < start ? -step1 : step1;\n  }\n\n  function sturges(values) {\n    return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n  }\n\n  function number(x) {\n    return +x;\n  }\n\n  function histogram() {\n    var value = identity,\n        domain = extent,\n        threshold = sturges;\n\n    function histogram(data) {\n      var i,\n          n = data.length,\n          x,\n          values = new Array(n);\n\n      // Coerce values to numbers.\n      for (i = 0; i < n; ++i) {\n        values[i] = +value(data[i], i, data);\n      }\n\n      var xz = domain(values),\n          x0 = +xz[0],\n          x1 = +xz[1],\n          tz = threshold(values, x0, x1);\n\n      // Convert number of thresholds into uniform thresholds.\n      if (!Array.isArray(tz)) tz = ticks(x0, x1, +tz);\n\n      // Coerce thresholds to numbers, ignoring any outside the domain.\n      var m = tz.length;\n      for (i = 0; i < m; ++i) tz[i] = +tz[i];\n      while (tz[0] <= x0) tz.shift(), --m;\n      while (tz[m - 1] >= x1) tz.pop(), --m;\n\n      var bins = new Array(m + 1),\n          bin;\n\n      // Initialize bins.\n      for (i = 0; i <= m; ++i) {\n        bin = bins[i] = [];\n        bin.x0 = i > 0 ? tz[i - 1] : x0;\n        bin.x1 = i < m ? tz[i] : x1;\n      }\n\n      // Assign data to bins by value, ignoring any outside the domain.\n      for (i = 0; i < n; ++i) {\n        x = values[i];\n        if (x0 <= x && x <= x1) {\n          bins[bisectRight(tz, x, 0, m)].push(data[i]);\n        }\n      }\n\n      return bins;\n    }\n\n    histogram.value = function(_) {\n      return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), histogram) : value;\n    };\n\n    histogram.domain = function(_) {\n      return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), histogram) : domain;\n    };\n\n    histogram.thresholds = function(_) {\n      if (!arguments.length) return threshold;\n      threshold = typeof _ === \"function\" ? _\n          : Array.isArray(_) ? constant(Array.prototype.map.call(_, number))\n          : constant(+_);\n      return histogram;\n    };\n\n    return histogram;\n  }\n\n  function quantile(array, p, f) {\n    if (f == null) f = number$1;\n    if (!(n = array.length)) return;\n    if ((p = +p) <= 0 || n < 2) return +f(array[0], 0, array);\n    if (p >= 1) return +f(array[n - 1], n - 1, array);\n    var n,\n        h = (n - 1) * p,\n        i = Math.floor(h),\n        a = +f(array[i], i, array),\n        b = +f(array[i + 1], i + 1, array);\n    return a + (b - a) * (h - i);\n  }\n\n  function freedmanDiaconis(values, min, max) {\n    values.sort(ascending);\n    return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n  }\n\n  function scott(values, min, max) {\n    return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n  }\n\n  function max(array, f) {\n    var i = -1,\n        n = array.length,\n        a,\n        b;\n\n    if (f == null) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) { a = b; break; }\n      while (++i < n) if ((b = array[i]) != null && b > a) a = b;\n    }\n\n    else {\n      while (++i < n) if ((b = f(array[i], i, array)) != null && b >= b) { a = b; break; }\n      while (++i < n) if ((b = f(array[i], i, array)) != null && b > a) a = b;\n    }\n\n    return a;\n  }\n\n  function mean(array, f) {\n    var s = 0,\n        n = array.length,\n        a,\n        i = -1,\n        j = n;\n\n    if (f == null) {\n      while (++i < n) if (!isNaN(a = number$1(array[i]))) s += a; else --j;\n    }\n\n    else {\n      while (++i < n) if (!isNaN(a = number$1(f(array[i], i, array)))) s += a; else --j;\n    }\n\n    if (j) return s / j;\n  }\n\n  function median(array, f) {\n    var numbers = [],\n        n = array.length,\n        a,\n        i = -1;\n\n    if (f == null) {\n      while (++i < n) if (!isNaN(a = number$1(array[i]))) numbers.push(a);\n    }\n\n    else {\n      while (++i < n) if (!isNaN(a = number$1(f(array[i], i, array)))) numbers.push(a);\n    }\n\n    return quantile(numbers.sort(ascending), 0.5);\n  }\n\n  function merge(arrays) {\n    var n = arrays.length,\n        m,\n        i = -1,\n        j = 0,\n        merged,\n        array;\n\n    while (++i < n) j += arrays[i].length;\n    merged = new Array(j);\n\n    while (--n >= 0) {\n      array = arrays[n];\n      m = array.length;\n      while (--m >= 0) {\n        merged[--j] = array[m];\n      }\n    }\n\n    return merged;\n  }\n\n  function min(array, f) {\n    var i = -1,\n        n = array.length,\n        a,\n        b;\n\n    if (f == null) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) { a = b; break; }\n      while (++i < n) if ((b = array[i]) != null && a > b) a = b;\n    }\n\n    else {\n      while (++i < n) if ((b = f(array[i], i, array)) != null && b >= b) { a = b; break; }\n      while (++i < n) if ((b = f(array[i], i, array)) != null && a > b) a = b;\n    }\n\n    return a;\n  }\n\n  function pairs(array) {\n    var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n    while (i < n) pairs[i] = [p, p = array[++i]];\n    return pairs;\n  }\n\n  function permute(array, indexes) {\n    var i = indexes.length, permutes = new Array(i);\n    while (i--) permutes[i] = array[indexes[i]];\n    return permutes;\n  }\n\n  function scan(array, compare) {\n    if (!(n = array.length)) return;\n    var i = 0,\n        n,\n        j = 0,\n        xi,\n        xj = array[j];\n\n    if (!compare) compare = ascending;\n\n    while (++i < n) if (compare(xi = array[i], xj) < 0 || compare(xj, xj) !== 0) xj = xi, j = i;\n\n    if (compare(xj, xj) === 0) return j;\n  }\n\n  function shuffle(array, i0, i1) {\n    var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n        t,\n        i;\n\n    while (m) {\n      i = Math.random() * m-- | 0;\n      t = array[m + i0];\n      array[m + i0] = array[i + i0];\n      array[i + i0] = t;\n    }\n\n    return array;\n  }\n\n  function sum(array, f) {\n    var s = 0,\n        n = array.length,\n        a,\n        i = -1;\n\n    if (f == null) {\n      while (++i < n) if (a = +array[i]) s += a; // Note: zero and null are equivalent.\n    }\n\n    else {\n      while (++i < n) if (a = +f(array[i], i, array)) s += a;\n    }\n\n    return s;\n  }\n\n  function transpose(matrix) {\n    if (!(n = matrix.length)) return [];\n    for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n      for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n        row[j] = matrix[j][i];\n      }\n    }\n    return transpose;\n  }\n\n  function length(d) {\n    return d.length;\n  }\n\n  function zip() {\n    return transpose(arguments);\n  }\n\n  var version = \"0.7.1\";\n\n  exports.version = version;\n  exports.bisect = bisectRight;\n  exports.bisectRight = bisectRight;\n  exports.bisectLeft = bisectLeft;\n  exports.ascending = ascending;\n  exports.bisector = bisector;\n  exports.descending = descending;\n  exports.deviation = deviation;\n  exports.extent = extent;\n  exports.histogram = histogram;\n  exports.thresholdFreedmanDiaconis = freedmanDiaconis;\n  exports.thresholdScott = scott;\n  exports.thresholdSturges = sturges;\n  exports.max = max;\n  exports.mean = mean;\n  exports.median = median;\n  exports.merge = merge;\n  exports.min = min;\n  exports.pairs = pairs;\n  exports.permute = permute;\n  exports.quantile = quantile;\n  exports.range = range;\n  exports.scan = scan;\n  exports.shuffle = shuffle;\n  exports.sum = sum;\n  exports.ticks = ticks;\n  exports.tickStep = tickStep;\n  exports.transpose = transpose;\n  exports.variance = variance;\n  exports.zip = zip;\n\n}));","const {bisectRight} = require('d3-array')\n\nconst quincunx = (u, v, w, q) => {\n  const n = u.length - 1\n\n  u[0] = 0\n  v[0] = 0\n  w[0] = 0\n  v[1] = v[1] / u[1]\n  w[1] = w[1] / u[1]\n  for (let i = 2; i < n; ++i) {\n    u[i] = u[i] - u[i - 2] * w[i - 2] * w[i - 2] - u[i - 1] * v[i - 1] * v[i - 1]\n    v[i] = (v[i] - u[i - 1] * v[i - 1] * w[i - 1]) / u[i]\n    w[i] = w[i] / u[i]\n  }\n\n  for (let i = 2; i < n; ++i) {\n    q[i] = q[i] - v[i - 1] * q[i - 1] - w[i - 2] * q[i - 2]\n  }\n  for (let i = 1; i < n; ++i) {\n    q[i] = q[i] / u[i]\n  }\n\n  q[n - 2] = q[n - 2] - v[n - 2] * q[n - 1]\n  for (let i = n - 3; i > 0; --i) {\n    q[i] = q[i] - v[i] * q[i + 1] - w[i] * q[i + 2]\n  }\n}\n\nconst smoothingSpline = (x, y, sigma, lambda) => {\n  const n = x.length - 1\n  const h = new Array(n + 1)\n  const r = new Array(n + 1)\n  const f = new Array(n + 1)\n  const p = new Array(n + 1)\n  const q = new Array(n + 1)\n  const u = new Array(n + 1)\n  const v = new Array(n + 1)\n  const w = new Array(n + 1)\n  const params = x.map(() => [0, 0, 0, 0])\n  params.pop()\n\n  const mu = 2 * (1 - lambda) / (3 * lambda)\n  for (let i = 0; i < n; ++i) {\n    h[i] = x[i + 1] - x[i]\n    r[i] = 3 / h[i]\n  }\n  q[0] = 0\n  for (let i = 1; i < n; ++i) {\n    f[i] = -(r[i - 1] + r[i])\n    p[i] = 2 * (x[i + 1] - x[i - 1])\n    q[i] = 3 * (y[i + 1] - y[i]) / h[i] - 3 * (y[i] - y[i - 1]) / h[i - 1]\n  }\n  q[n] = 0\n\n  for (let i = 1; i < n; ++i) {\n    u[i] = r[i - 1] * r[i - 1] * sigma[i - 1] + f[i] * f[i] * sigma[i] + r[i] * r[i] * sigma[i + 1]\n    u[i] = mu * u[i] + p[i]\n  }\n  for (let i = 1; i < n - 1; ++i) {\n    v[i] = f[i] * r[i] * sigma[i] + r[i] * f[i + 1] * sigma[i + 1]\n    v[i] = mu * v[i] + h[i]\n  }\n  for (let i = 1; i < n - 2; ++i) {\n    w[i] = mu * r[i] * r[i + 1] * sigma[i + 1]\n  }\n\n  quincunx(u, v, w, q)\n\n  params[0][3] = y[0] - mu * r[0] * q[1] * sigma[0]\n  params[1][3] = y[1] - mu * (f[1] * q[1] + r[1] * q[2]) * sigma[0]\n  params[0][0] = q[1] / (3 * h[0])\n  params[0][1] = 0\n  params[0][2] = (params[1][3] - params[0][3]) / h[0] - q[1] * h[0] / 3\n  r[0] = 0\n  for (let i = 1; i < n; ++i) {\n    params[i][0] = (q[i + 1] - q[i]) / (3 * h[i])\n    params[i][1] = q[i]\n    params[i][2] = (q[i] + q[i - 1]) * h[i - 1] + params[i - 1][2]\n    params[i][3] = r[i - 1] * q[i - 1] + f[i] * q[i] + r[i] * q[i + 1]\n    params[i][3] = y[i] - mu * params[i][3] * sigma[i]\n  }\n  return params\n}\n\nclass SplineInterpolator {\n  constructor (xIn, yIn, lambda = 1) {\n    const indices = xIn.map((_, i) => i)\n    indices.sort((i, j) => xIn[i] - xIn[j])\n    const x = indices.map((i) => xIn[i])\n    const y = indices.map((i) => yIn[i])\n    const n = indices.length\n    const sigma = indices.map(() => 1)\n    this.n = n\n    this.x = x\n    this.y = y\n    this.params = smoothingSpline(x, y, sigma, lambda)\n  }\n\n  interpolate (v) {\n    if (v === this.x[this.n - 1]) {\n      return this.y[this.n - 1]\n    }\n    const i = Math.min(Math.max(0, bisectRight(this.x, v) - 1), this.n - 2)\n    const [a, b, c, d] = this.params[i]\n    v = v - this.x[i]\n    return a * v * v * v + b * v * v + c * v + d\n  }\n\n  max (step = 100) {\n    const xStart = this.x[0]\n    const xStop = this.x[this.n - 1]\n    const delta = (xStop - xStart) / step\n    let maxValue = -Infinity\n    for (let i = 0, x = xStart; i < step; ++i, x += delta) {\n      const y = this.interpolate(x)\n      if (y > maxValue) {\n        maxValue = y\n      }\n    }\n    return maxValue\n  }\n\n  min (step = 100) {\n    const xStart = this.x[0]\n    const xStop = this.x[this.n - 1]\n    const delta = (xStop - xStart) / step\n    let minValue = Infinity\n    for (let i = 0, x = xStart; i < step; ++i, x += delta) {\n      const y = this.interpolate(x)\n      if (y < minValue) {\n        minValue = y\n      }\n    }\n    return minValue\n  }\n\n  domain () {\n    return [this.x[0], this.x[this.x.length - 1]]\n  }\n\n  range () {\n    return [this.min(), this.max()]\n  }\n\n  curve (nInterval, domain = null) {\n    domain = domain || this.domain()\n    const delta = (domain[1] - domain[0]) / (nInterval - 1)\n    const vals = new Array(nInterval)\n    for (let i = 0; i < nInterval; ++i) {\n      const x = delta * i + domain[0]\n      vals[i] = [x, this.interpolate(x)]\n    }\n    return vals\n  }\n}\n\nmodule.exports = SplineInterpolator\n","import { gyromagneticRatio } from 'nmr-processing';\nexport default function postProcessingNMR(entriesFlat) {\n    // specific NMR functions\n    for (let entry of entriesFlat) {\n        let observeFrequency = 0;\n        let shiftOffsetVal = 0;\n        for (let spectrum of entry.spectra) {\n            if (entry.ntuples && entry.ntuples.symbol) {\n                if (!observeFrequency && spectrum.observeFrequency) {\n                    observeFrequency = spectrum.observeFrequency;\n                }\n                if (!shiftOffsetVal && spectrum.shiftOffsetVal) {\n                    shiftOffsetVal = spectrum.shiftOffsetVal;\n                }\n            }\n            else {\n                observeFrequency = spectrum.observeFrequency;\n                shiftOffsetVal = spectrum.shiftOffsetVal;\n            }\n            if (observeFrequency) {\n                if (spectrum.xUnits && spectrum.xUnits.toUpperCase().includes('HZ')) {\n                    spectrum.xUnits = 'PPM';\n                    spectrum.xFactor = spectrum.xFactor / observeFrequency;\n                    spectrum.firstX = spectrum.firstX / observeFrequency;\n                    spectrum.lastX = spectrum.lastX / observeFrequency;\n                    spectrum.deltaX = spectrum.deltaX / observeFrequency;\n                    for (let i = 0; i < spectrum.data.x.length; i++) {\n                        spectrum.data.x[i] /= observeFrequency;\n                    }\n                }\n            }\n            if (shiftOffsetVal) {\n                let shift = spectrum.firstX - shiftOffsetVal;\n                spectrum.firstX = spectrum.firstX - shift;\n                spectrum.lastX = spectrum.lastX - shift;\n                for (let i = 0; i < spectrum.data.x.length; i++) {\n                    spectrum.data.x[i] -= shift;\n                }\n            }\n            // we will check if some nucleus are missing ...\n            if (entry.ntuples && entry.ntuples.nucleus && entry.ntuples.symbol) {\n                for (let i = 0; i < entry.ntuples.nucleus.length; i++) {\n                    let symbol = entry.ntuples.symbol[i];\n                    let nucleus = entry.ntuples.nucleus[i];\n                    if (symbol.startsWith('F') && !nucleus) {\n                        if (symbol === 'F1') {\n                            // if F1 is defined we will use F2\n                            if (entry.tmp.$NUC2) {\n                                entry.ntuples.nucleus[i] = entry.tmp.$NUC2;\n                            }\n                            else {\n                                let f2index = entry.ntuples.symbol.indexOf('F2');\n                                if (f2index && entry.ntuples.nucleus[f2index]) {\n                                    entry.ntuples.nucleus[i] = entry.ntuples.nucleus[f2index];\n                                }\n                            }\n                        }\n                        if (symbol === 'F2')\n                            entry.ntuples.nucleus[i] = entry.tmp.$NUC1;\n                    }\n                    if (symbol === 'F2') {\n                        entry.yType = entry.ntuples.nucleus[0];\n                    }\n                }\n            }\n            if (observeFrequency &&\n                entry.ntuples &&\n                entry.ntuples.symbol &&\n                entry.ntuples.nucleus) {\n                let unit = '';\n                let pageSymbolIndex = entry.ntuples.symbol.indexOf(spectrum.pageSymbol);\n                if (entry.ntuples.units && entry.ntuples.units[pageSymbolIndex]) {\n                    unit = entry.ntuples.units[pageSymbolIndex];\n                }\n                if (unit !== 'PPM') {\n                    if (pageSymbolIndex !== 0) {\n                        throw Error('Not sure about this ntuples format');\n                    }\n                    let ratio0 = gyromagneticRatio[entry.ntuples.nucleus[0]];\n                    let ratio1 = gyromagneticRatio[entry.ntuples.nucleus[1]];\n                    if (!ratio0 || !ratio1) {\n                        throw Error('Problem with determination of gyromagnetic ratio');\n                    }\n                    let ratio = (ratio0 / ratio1) * observeFrequency;\n                    spectrum.pageValue /= ratio;\n                }\n            }\n        }\n    }\n}\n//# sourceMappingURL=postProcessingNMR.js.map","export default function profiling(result, action, options) {\n    if (result.profiling) {\n        result.profiling.push({\n            action,\n            time: Date.now() - options.start,\n        });\n    }\n}\n//# sourceMappingURL=profiling.js.map","export default function simpleChromatogram(result) {\n    let data = result.spectra[0].data;\n    result.chromatogram = {\n        times: data.x.slice(),\n        series: {\n            intensity: {\n                dimension: 1,\n                data: data.y.slice(),\n            },\n        },\n    };\n}\n//# sourceMappingURL=simpleChromatogram.js.map","import add2D from './2d/add2D';\nimport { complexChromatogram } from './complexChromatogram';\nimport postProcessingNMR from './postProcessingNMR';\nimport profiling from './profiling';\nimport simpleChromatogram from './simpleChromatogram';\nexport default function postProcessing(entriesFlat, result, options) {\n    // converting Hz to ppm\n    postProcessingNMR(entriesFlat);\n    for (let entry of entriesFlat) {\n        if (Object.keys(entry.ntuples).length > 0) {\n            let newNtuples = [];\n            let keys = Object.keys(entry.ntuples);\n            for (let i = 0; i < keys.length; i++) {\n                let key = keys[i];\n                let values = entry.ntuples[key];\n                for (let j = 0; j < values.length; j++) {\n                    if (!newNtuples[j])\n                        newNtuples[j] = {};\n                    newNtuples[j][key] = values[j];\n                }\n            }\n            entry.ntuples = newNtuples;\n        }\n        if (entry.twoD && options.wantXY) {\n            add2D(entry, options);\n            profiling(result, 'Finished countour plot calculation', options);\n            if (!options.keepSpectra) {\n                delete entry.spectra;\n            }\n        }\n        // maybe it is a GC (HPLC) / MS. In this case we add a new format\n        if (options.chromatogram) {\n            if (entry.spectra.length > 1) {\n                complexChromatogram(entry);\n            }\n            else {\n                simpleChromatogram(entry);\n            }\n            profiling(result, 'Finished chromatogram calculation', options);\n        }\n        delete entry.tmp;\n    }\n}\n//# sourceMappingURL=postProcessing.js.map","export default function prepareNtuplesDatatable(currentEntry, spectrum, kind) {\n    let xIndex = -1;\n    let yIndex = -1;\n    let firstVariable = '';\n    let secondVariable = '';\n    if (kind.indexOf('++') > 0) {\n        firstVariable = kind.replace(/.*\\(([a-zA-Z0-9]+)\\+\\+.*/, '$1');\n        secondVariable = kind.replace(/.*\\.\\.([a-zA-Z0-9]+).*/, '$1');\n    }\n    else {\n        kind = kind.replace(/[^a-zA-Z]/g, '');\n        firstVariable = kind.charAt(0);\n        secondVariable = kind.charAt(1);\n        spectrum.variables = {};\n        for (let symbol of kind) {\n            let lowerCaseSymbol = symbol.toLowerCase();\n            let index = currentEntry.ntuples.symbol.indexOf(symbol);\n            if (index === -1)\n                throw Error(`Symbol undefined: ${symbol}`);\n            spectrum.variables[lowerCaseSymbol] = {};\n            for (let key in currentEntry.ntuples) {\n                if (currentEntry.ntuples[key][index]) {\n                    spectrum.variables[lowerCaseSymbol][key.replace(/^var/, '')] =\n                        currentEntry.ntuples[key][index];\n                }\n            }\n        }\n    }\n    xIndex = currentEntry.ntuples.symbol.indexOf(firstVariable);\n    yIndex = currentEntry.ntuples.symbol.indexOf(secondVariable);\n    if (xIndex === -1)\n        xIndex = 0;\n    if (yIndex === -1)\n        yIndex = 0;\n    if (currentEntry.ntuples.first) {\n        if (currentEntry.ntuples.first.length > xIndex) {\n            spectrum.firstX = currentEntry.ntuples.first[xIndex];\n        }\n        if (currentEntry.ntuples.first.length > yIndex) {\n            spectrum.firstY = currentEntry.ntuples.first[yIndex];\n        }\n    }\n    if (currentEntry.ntuples.last) {\n        if (currentEntry.ntuples.last.length > xIndex) {\n            spectrum.lastX = currentEntry.ntuples.last[xIndex];\n        }\n        if (currentEntry.ntuples.last.length > yIndex) {\n            spectrum.lastY = currentEntry.ntuples.last[yIndex];\n        }\n    }\n    if (currentEntry.ntuples.vardim &&\n        currentEntry.ntuples.vardim.length > xIndex) {\n        spectrum.nbPoints = currentEntry.ntuples.vardim[xIndex];\n    }\n    if (currentEntry.ntuples.factor) {\n        if (currentEntry.ntuples.factor.length > xIndex) {\n            spectrum.xFactor = currentEntry.ntuples.factor[xIndex];\n        }\n        if (currentEntry.ntuples.factor.length > yIndex) {\n            spectrum.yFactor = currentEntry.ntuples.factor[yIndex];\n        }\n    }\n    if (currentEntry.ntuples.units) {\n        if (currentEntry.ntuples.units.length > xIndex) {\n            if (currentEntry.ntuples.varname &&\n                currentEntry.ntuples.varname[xIndex]) {\n                spectrum.xUnits = `${currentEntry.ntuples.varname[xIndex]} [${currentEntry.ntuples.units[xIndex]}]`;\n            }\n            else {\n                spectrum.xUnits = currentEntry.ntuples.units[xIndex];\n            }\n        }\n        if (currentEntry.ntuples.units.length > yIndex) {\n            if (currentEntry.ntuples.varname &&\n                currentEntry.ntuples.varname[yIndex]) {\n                spectrum.yUnits = `${currentEntry.ntuples.varname[yIndex]} [${currentEntry.ntuples.units[yIndex]}]`;\n            }\n            else {\n                spectrum.yUnits = currentEntry.ntuples.units[yIndex];\n            }\n        }\n    }\n}\n//# sourceMappingURL=prepareNtuplesDatatable.js.map","export default function prepareSpectrum(spectrum) {\n    if (!spectrum.xFactor)\n        spectrum.xFactor = 1;\n    if (!spectrum.yFactor)\n        spectrum.yFactor = 1;\n}\n//# sourceMappingURL=prepareSpectrum.js.map","import { parseString } from 'dynamic-typing';\nimport { ensureString } from 'ensure-string';\nimport { isMSField, convertMSFieldToLabel } from './complexChromatogram';\nimport convertToFloatArray from './convertToFloatArray';\nimport fastParseXYData from './parse/fastParseXYData';\nimport parsePeakTable from './parse/parsePeakTable';\nimport parseXYA from './parse/parseXYA';\nimport postProcessing from './postProcessing';\nimport prepareNtuplesDatatable from './prepareNtuplesDatatable';\nimport prepareSpectrum from './prepareSpectrum';\nimport profiling from './profiling';\n// the following RegExp can only be used for XYdata, some peakTables have values with a \"E-5\" ...\nconst ntuplesSeparatorRegExp = /[ \\t]*,[ \\t]*/;\nconst defaultOptions = {\n    keepRecordsRegExp: /^$/,\n    canonicDataLabels: true,\n    canonicMetadataLabels: false,\n    dynamicTyping: true,\n    withoutXY: false,\n    chromatogram: false,\n    keepSpectra: false,\n    noContour: false,\n    nbContourLevels: 7,\n    noiseMultiplier: 5,\n    profiling: false,\n};\n/**\n *\n * @typedef {object} ConvertOptions\n * @property {RegExp} [options.keepRecordsRegExp=/^$/] - By default we don't keep meta information.\n * @property {boolean} [options.canonicDataLabels=true] - Canonize the Labels (uppercase without symbol).\n * @property {boolean} [options.canonicMetadataLabels=false] - Canonize the metadata Labels (uppercase without symbol).\n * @property {boolean} [options.dynamicTyping=false] - Convert numbers to Number.\n * @property {boolean} [options.withoutXY=false] - Remove the XY data.\n * @property {boolean} [options.chromatogram=false] - Special post-processing for GC / HPLC / MS.\n * @property {boolean} [options.keepSpectra=false] - Force to keep the spectra in case of 2D.\n * @property {boolean} [options.noContour=false] - Don't calculate countour in case of 2D.\n * @property {number} [options.nbContourLevels=7] - Number of positive / negative contour levels to calculate.\n * @property {number} [options.noiseMultiplier=5] - Define for 2D the level as 5 times the median as default.\n * @property {boolean} [options.profiling=false] - Add profiling information.\n */\n/**\n *\n * @typedef {object} Ntuples\n * @property {string[]} [varname]\n * @property {string[]} [symbol]\n * @property {string[]} [vartype]\n * @property {string[]} [varform]\n * @property {number[]} [vardim]\n * @property {string[]} [units]\n * @property {number[]} [factor]\n * @property {number[]} [first]\n * @property {number[]} [last]\n * @property {number[]} [min]\n * @property {number[]} [max]\n * @property {string[]} [nucleus]\n */\n/**\n * @typedef { Record<string, any> } Spectrum\n * @property {Record<string, number[]>} [data]\n * @property {number} [firstX]\n * @property {number} [lastX]\n * @property {number} [deltaX]\n * @property {number} [yFactor]\n * @property {number} [xFactor]\n * @property {number} [nbPoints]\n */\n/**\n *\n * @typedef {object} Entry\n * @property {Spectrum[]} spectra\n * @property {Ntuples} ntuples\n * @property {object} meta\n * @property {object} tmp\n * @property {string} [title]\n * @property {string} [dataType]\n * @property {string} [dataClass]\n * @property {boolean} [twoD]\n */\n/**\n *\n * @typedef { object } ConvertResult\n * @property { object[] | boolean } profiling\n * @property { string[] } logs\n * @property { object[] } entries\n * @property { Entry[] } flatten\n */\n/**\n * Parse a jcamp.\n *\n * @param {string|ArrayBuffer|Uint8Array} jcamp\n * @param {ConvertOptions} [options]\n * @returns {ConvertResult}\n */\nexport function convert(jcamp, options = {}) {\n    jcamp = ensureString(jcamp);\n    options = { ...defaultOptions, ...options };\n    options.wantXY = !options.withoutXY;\n    options.start = Date.now();\n    let entriesFlat = [];\n    let result = {\n        profiling: options.profiling ? [] : false,\n        logs: [],\n        entries: [],\n    };\n    let tmpResult = { children: [] };\n    let currentEntry = tmpResult;\n    let parentsStack = [];\n    let spectrum = {};\n    if (typeof jcamp !== 'string') {\n        throw new TypeError('the JCAMP should be a string');\n    }\n    profiling(result, 'Before split to LDRS', options);\n    let ldrs = jcamp.replace(/[\\r\\n]+##/g, '\\n##').split('\\n##');\n    profiling(result, 'Split to LDRS', options);\n    if (ldrs[0])\n        ldrs[0] = ldrs[0].replace(/^[\\r\\n ]*##/, '');\n    for (let ldr of ldrs) {\n        // This is a new LDR\n        let position = ldr.indexOf('=');\n        let dataLabel = position > 0 ? ldr.substring(0, position) : ldr;\n        let dataValue = position > 0 ? ldr.substring(position + 1).trim() : '';\n        let canonicDataLabel = dataLabel.replace(/[_ -]/g, '').toUpperCase();\n        if (canonicDataLabel === 'DATATABLE') {\n            let endLine = dataValue.indexOf('\\n');\n            if (endLine === -1)\n                endLine = dataValue.indexOf('\\r');\n            if (endLine > 0) {\n                // ##DATA TABLE= (X++(I..I)), XYDATA\n                // We need to find the variables\n                let infos = dataValue.substring(0, endLine).split(/[ ,;\\t]+/);\n                prepareNtuplesDatatable(currentEntry, spectrum, infos[0]);\n                spectrum.datatable = infos[0];\n                if (infos[1] && infos[1].indexOf('PEAKS') > -1) {\n                    canonicDataLabel = 'PEAKTABLE';\n                }\n                else if (infos[1] &&\n                    (infos[1].indexOf('XYDATA') || infos[0].indexOf('++') > 0)) {\n                    canonicDataLabel = 'XYDATA';\n                    if (spectrum.nbPoints) {\n                        spectrum.deltaX =\n                            (spectrum.lastX - spectrum.firstX) / (spectrum.nbPoints - 1);\n                    }\n                }\n            }\n        }\n        if (canonicDataLabel === 'XYDATA') {\n            if (options.wantXY) {\n                prepareSpectrum(spectrum);\n                // well apparently we should still consider it is a PEAK TABLE if there are no '++' after\n                if (dataValue.match(/.*\\+\\+.*/)) {\n                    // ex: (X++(Y..Y))\n                    if (spectrum.nbPoints) {\n                        spectrum.deltaX =\n                            (spectrum.lastX - spectrum.firstX) / (spectrum.nbPoints - 1);\n                    }\n                    fastParseXYData(spectrum, dataValue, result);\n                }\n                else {\n                    parsePeakTable(spectrum, dataValue, result);\n                }\n                currentEntry.spectra.push(spectrum);\n                spectrum = {};\n            }\n            continue;\n        }\n        else if (canonicDataLabel === 'PEAKTABLE') {\n            if (options.wantXY) {\n                prepareSpectrum(spectrum);\n                parsePeakTable(spectrum, dataValue, result);\n                currentEntry.spectra.push(spectrum);\n                spectrum = {};\n            }\n            continue;\n        }\n        if (canonicDataLabel === 'PEAKASSIGNMENTS') {\n            if (options.wantXY) {\n                if (dataValue.match(/.*(XYA).*/)) {\n                    // ex: (XYA)\n                    parseXYA(spectrum, dataValue);\n                }\n                currentEntry.spectra.push(spectrum);\n                spectrum = {};\n            }\n            continue;\n        }\n        if (canonicDataLabel === 'TITLE') {\n            let parentEntry = currentEntry;\n            if (!parentEntry.children) {\n                parentEntry.children = [];\n            }\n            currentEntry = {\n                spectra: [],\n                ntuples: {},\n                info: {},\n                meta: {},\n                tmp: {}, // tmp information we need to keep for postprocessing\n            };\n            parentEntry.children.push(currentEntry);\n            parentsStack.push(parentEntry);\n            entriesFlat.push(currentEntry);\n            currentEntry.title = dataValue;\n        }\n        else if (canonicDataLabel === 'DATATYPE') {\n            currentEntry.dataType = dataValue;\n            if (dataValue.match(/(^nd|\\snd\\s)/i)) {\n                currentEntry.twoD = true;\n            }\n        }\n        else if (canonicDataLabel === 'NTUPLES') {\n            if (dataValue.match(/(^nd|\\snd\\s)/i)) {\n                currentEntry.twoD = true;\n            }\n        }\n        else if (canonicDataLabel === 'DATACLASS') {\n            currentEntry.dataClass = dataValue;\n        }\n        else if (canonicDataLabel === 'XUNITS') {\n            spectrum.xUnits = dataValue;\n        }\n        else if (canonicDataLabel === 'YUNITS') {\n            spectrum.yUnits = dataValue;\n        }\n        else if (canonicDataLabel === 'FIRSTX') {\n            spectrum.firstX = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'LASTX') {\n            spectrum.lastX = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'FIRSTY') {\n            spectrum.firstY = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'LASTY') {\n            spectrum.lastY = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'NPOINTS') {\n            spectrum.nbPoints = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'XFACTOR') {\n            spectrum.xFactor = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'YFACTOR') {\n            spectrum.yFactor = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'MAXX') {\n            spectrum.maxX = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'MINX') {\n            spectrum.minX = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'MAXY') {\n            spectrum.maxY = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'MINY') {\n            spectrum.minY = Number(dataValue);\n        }\n        else if (canonicDataLabel === 'DELTAX') {\n            spectrum.deltaX = Number(dataValue);\n        }\n        else if (canonicDataLabel === '.OBSERVEFREQUENCY' ||\n            canonicDataLabel === '$SFO1') {\n            if (!spectrum.observeFrequency) {\n                spectrum.observeFrequency = Number(dataValue);\n            }\n        }\n        else if (canonicDataLabel === '.OBSERVENUCLEUS') {\n            if (!spectrum.xType) {\n                currentEntry.xType = dataValue.replace(/[^a-zA-Z0-9]/g, '');\n            }\n        }\n        else if (canonicDataLabel === '$OFFSET') {\n            // OFFSET for Bruker spectra\n            currentEntry.shiftOffsetNum = 0;\n            if (!spectrum.shiftOffsetVal) {\n                spectrum.shiftOffsetVal = Number(dataValue);\n            }\n        }\n        else if (canonicDataLabel === '$REFERENCEPOINT') {\n            // OFFSET for Varian spectra\n            // if we activate this part it does not work for ACD specmanager\n            //         } else if (canonicDataLabel=='.SHIFTREFERENCE') {   // OFFSET FOR Bruker Spectra\n            //                 var parts = dataValue.split(/ *, */);\n            //                 currentEntry.shiftOffsetNum = parseInt(parts[2].trim());\n            //                 spectrum.shiftOffsetVal = Number(parts[3].trim());\n        }\n        else if (canonicDataLabel === 'VARNAME') {\n            currentEntry.ntuples.varname = dataValue.split(ntuplesSeparatorRegExp);\n        }\n        else if (canonicDataLabel === 'SYMBOL') {\n            currentEntry.ntuples.symbol = dataValue.split(ntuplesSeparatorRegExp);\n        }\n        else if (canonicDataLabel === 'VARTYPE') {\n            currentEntry.ntuples.vartype = dataValue.split(ntuplesSeparatorRegExp);\n        }\n        else if (canonicDataLabel === 'VARFORM') {\n            currentEntry.ntuples.varform = dataValue.split(ntuplesSeparatorRegExp);\n        }\n        else if (canonicDataLabel === 'VARDIM') {\n            currentEntry.ntuples.vardim = convertToFloatArray(dataValue.split(ntuplesSeparatorRegExp));\n        }\n        else if (canonicDataLabel === 'UNITS') {\n            currentEntry.ntuples.units = dataValue.split(ntuplesSeparatorRegExp);\n        }\n        else if (canonicDataLabel === 'FACTOR') {\n            currentEntry.ntuples.factor = convertToFloatArray(dataValue.split(ntuplesSeparatorRegExp));\n        }\n        else if (canonicDataLabel === 'FIRST') {\n            currentEntry.ntuples.first = convertToFloatArray(dataValue.split(ntuplesSeparatorRegExp));\n        }\n        else if (canonicDataLabel === 'LAST') {\n            currentEntry.ntuples.last = convertToFloatArray(dataValue.split(ntuplesSeparatorRegExp));\n        }\n        else if (canonicDataLabel === 'MIN') {\n            currentEntry.ntuples.min = convertToFloatArray(dataValue.split(ntuplesSeparatorRegExp));\n        }\n        else if (canonicDataLabel === 'MAX') {\n            currentEntry.ntuples.max = convertToFloatArray(dataValue.split(ntuplesSeparatorRegExp));\n        }\n        else if (canonicDataLabel === '.NUCLEUS') {\n            if (currentEntry.ntuples) {\n                currentEntry.ntuples.nucleus = dataValue.split(ntuplesSeparatorRegExp);\n            }\n        }\n        else if (canonicDataLabel === 'PAGE') {\n            spectrum.page = dataValue.trim();\n            spectrum.pageValue = Number(dataValue.replace(/^.*=/, ''));\n            spectrum.pageSymbol = spectrum.page.replace(/[=].*/, '');\n        }\n        else if (canonicDataLabel === 'RETENTIONTIME') {\n            spectrum.pageValue = Number(dataValue);\n        }\n        else if (isMSField(canonicDataLabel)) {\n            spectrum[convertMSFieldToLabel(canonicDataLabel)] = dataValue;\n        }\n        else if (canonicDataLabel === 'SAMPLEDESCRIPTION') {\n            spectrum.sampleDescription = dataValue;\n        }\n        else if (canonicDataLabel.startsWith('$NUC')) {\n            if (!currentEntry.tmp[canonicDataLabel] && !dataValue.includes('off')) {\n                currentEntry.tmp[canonicDataLabel] = dataValue.replace(/[<>]/g, '');\n            }\n        }\n        else if (canonicDataLabel === 'END') {\n            currentEntry = parentsStack.pop();\n        }\n        if (currentEntry &&\n            currentEntry.info &&\n            currentEntry.meta &&\n            canonicDataLabel.match(options.keepRecordsRegExp)) {\n            let value = dataValue.trim();\n            let target, label;\n            if (dataLabel.startsWith('$')) {\n                label = options.canonicMetadataLabels\n                    ? canonicDataLabel.substring(1)\n                    : dataLabel.substring(1);\n                target = currentEntry.meta;\n            }\n            else {\n                label = options.canonicDataLabels ? canonicDataLabel : dataLabel;\n                target = currentEntry.info;\n            }\n            if (options.dynamicTyping) {\n                value = parseString(value);\n            }\n            if (target[label]) {\n                if (!Array.isArray(target[label])) {\n                    target[label] = [target[label]];\n                }\n                target[label].push(value);\n            }\n            else {\n                target[label] = value;\n            }\n        }\n    }\n    profiling(result, 'Finished parsing', options);\n    postProcessing(entriesFlat, result, options);\n    profiling(result, 'Total time', options);\n    /*\n    if (result.children && result.children.length>0) {\n      result = { ...result, ...result.children[0] };\n    }\n    */\n    result.entries = tmpResult.children;\n    result.flatten = entriesFlat;\n    return result;\n}\n//# sourceMappingURL=convert.js.map","import atob from 'atob';\nimport { toByteArray } from 'base64-js';\nimport { convert } from 'jcampconverter';\n\nconst common = {};\nexport default common;\ncommon.getBasename = function getBasename(filename) {\n  let base = filename.replace(/.*\\//, '');\n  return base.replace(/\\.[0-9]+$/, '');\n};\n\ncommon.getExtension = function getExtension(filename) {\n  let extension = common.getBasename(filename);\n  return extension.replace(/.*\\./, '').toLowerCase();\n};\n\ncommon.getFilename = function getFilename(typeEntry) {\n  let keys = Object.keys(typeEntry);\n  for (let i = 0; i < keys.length; i++) {\n    if (typeEntry[keys[i]] && typeEntry[keys[i]].filename) {\n      return typeEntry[keys[i]].filename;\n    }\n  }\n  return undefined;\n};\n\ncommon.basenameFind = function basenameFind(typeEntries, filename) {\n  let reference = common.getBasename(filename);\n\n  return typeEntries.find((typeEntry) => {\n    return common.getBasename(common.getFilename(typeEntry)) === reference;\n  });\n};\n\ncommon.getTargetProperty = function getTargetProperty(filename) {\n  switch (common.getExtension(filename)) {\n    case 'jdx':\n    case 'dx':\n    case 'jcamp':\n      return 'jcamp';\n    case 'png':\n    case 'jpg':\n    case 'jpeg':\n    case 'tif':\n    case 'tiff':\n    case 'svg':\n      return 'image';\n    case 'mp4':\n    case 'm4a':\n    case 'avi':\n    case 'wav':\n      return 'video';\n    case 'cif':\n      return 'cif';\n    case 'pdb':\n      return 'pdb';\n    case 'xml':\n    case 'mzml':\n    case 'mzxml':\n    case 'mzdata':\n      return 'xml';\n    case 'cdf':\n    case 'nc':\n    case 'netcdf':\n      return 'cdf';\n    case 'pdf':\n      return 'pdf';\n    case 'txt':\n    case 'text':\n    case 'csv':\n    case 'tsv':\n      return 'text';\n    case 'gbk':\n    case 'gb':\n      return 'genbank';\n    default:\n      return 'file';\n  }\n};\n\ncommon.getContent = function getContent(content, target) {\n  switch (target) {\n    case 'text':\n    case 'xml':\n    case 'pdb':\n    case 'jcamp':\n    case 'cif':\n    case 'genbank':\n      return common.getTextContent(content);\n    default:\n      return common.getBufferContent(content);\n  }\n};\n\ncommon.getTextContent = function getTextContent(content) {\n  switch (content.encoding) {\n    case 'base64':\n      return atob(content.content);\n    default:\n      return content.content;\n  }\n};\n\ncommon.getBufferContent = function getBufferContent(content) {\n  switch (content.encoding) {\n    case 'base64':\n      return toByteArray(content.content);\n    default:\n      return content.content;\n  }\n};\n\ncommon.getMetaFromJcamp = function getMetaFromJcamp(filename, content) {\n  const extension = common.getExtension(filename);\n  let metaData = {};\n  if (extension === 'jdx' || extension === 'dx' || extension === 'jcamp') {\n    let textContent = common.getTextContent(content);\n    let parsed = convert(textContent, {\n      withoutXY: true,\n      keepRecordsRegExp: /cheminfo/i,\n    }).flatten[0];\n    if (parsed && parsed.meta && parsed.meta.cheminfo) {\n      try {\n        let cheminfo = JSON.parse(parsed.meta.cheminfo);\n        if (cheminfo.meta) {\n          return cheminfo.meta;\n        }\n      } catch (e) {\n        // eslint-disable-next-line no-console\n        console.trace(e);\n      }\n    }\n  }\n  return metaData;\n};\n","import parseNetCDF from 'netcdf-gcms';\n\nimport common from '../common';\n\nfunction process(filename, content) {\n  const extension = common.getExtension(filename);\n  let metaData = {};\n  if (extension === 'cdf' || extension === 'netcdf') {\n    let bufferContent = common.getBufferContent(content);\n    let parsed = parseNetCDF(bufferContent, { meta: true });\n    if (parsed.series.length === 1) {\n      metaData.detector = parsed.series[0].name;\n    }\n  }\n  return metaData;\n}\n\nexport default {\n  jpath: ['spectra', 'chromatogram'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'cyclicVoltammetry'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'differentialCentrifugalSedimentation'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'differentialScanningCalorimetry'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'dls'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'elementalAnalysis'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","'use strict';\n\nmodule.exports = [\n  'JAN',\n  'FEB',\n  'MAR',\n  'APR',\n  'MAY',\n  'JUN',\n  'JUL',\n  'AUG',\n  'SEP',\n  'OCT',\n  'NOV',\n  'DEC',\n];\n","/* eslint no-div-regex: 0*/\n/* eslint prefer-named-capture-group: 0 */\n\n'use strict';\n\nconst MONTHS = require('./utils/months');\n\nfunction genbankToJson(sequence) {\n  if (typeof sequence !== 'string') {\n    throw new TypeError('input must be a string');\n  }\n\n  let resultsArray = [];\n  let result;\n  let currentFeatureNote;\n\n  // Genbank specification: https://www.ncbi.nlm.nih.gov/Sitemap/samplerecord.html\n  let genbankAnnotationKey = {\n    // Contains in order: locus name, sequence length, molecule type (e.g. DNA), genbank division (see 1-18 below), modification date\n    // locus definition has changed with time, use accession number for a unique identifier\n    LOCUS_TAG: 'LOCUS',\n    DEFINITION_TAG: 'DEFINITION',\n    // Accession tag\n    // Example: Z78533\n    ACCESSION_TAG: 'ACCESSION',\n    // The version tag contains 2 informations\n    // The accession number with a revision\n    // The GI (GenInfo Identifier), a ncbi sequential number\n    // Example: Z78533.1  GI:2765658\n    // Unicity garanteed with respect to sequence. If 1 nucleotide changes, the version is different.\n    VERSION_TAG: 'VERSION',\n    KEYWORDS_TAG: 'KEYWORDS',\n    // SEGMENT_TAG:\"SEGMENT\"\n    // Source is free text\n    SOURCE_TAG: 'SOURCE',\n    ORGANISM_TAG: 'ORGANISM',\n    REFERENCE_TAG: 'REFERENCE',\n    AUTHORS_TAG: 'AUTHORS',\n    CONSORTIUM_TAG: 'CONSRTM',\n    TITLE_TAG: 'TITLE',\n    // Can be multiple journal tags\n    JOURNAL_TAG: 'JOURNAL',\n    PUBMED_TAG: 'PUBMED',\n    REMARK_TAG: 'REMARK',\n    FEATURES_TAG: 'FEATURES',\n    BASE_COUNT_TAG: 'BASE COUNT',\n    // CONTIG_TAG: \"CONTIG\"\n    ORIGIN_TAG: 'ORIGIN',\n    END_SEQUENCE_TAG: '//',\n  };\n\n  // Genbank divisions\n  //   1. PRI - primate sequences\n  //   2. ROD - rodent sequences\n  //   3. MAM - other mammalian sequences\n  //   4. VRT - other vertebrate sequences\n  //   5. INV - invertebrate sequences\n  //   6. PLN - plant, fungal, and algal sequences\n  //   7. BCT - bacterial sequences\n  //   8. VRL - viral sequences\n  //   9. PHG - bacteriophage sequences\n  // 10. SYN - synthetic sequences\n  // 11. UNA - unannotated sequences\n  // 12. EST - EST sequences (expressed sequence tags)\n  // 13. PAT - patent sequences\n  // 14. STS - STS sequences (sequence tagged sites)\n  // 15. GSS - GSS sequences (genome survey sequences)\n  // 16. HTG - HTG sequences (high-throughput genomic sequences)\n  // 17. HTC - unfinished high-throughput cDNA sequencing\n  // 18. ENV - environmental sampling sequences\n\n  let lines = sequence.split(/\\r?\\n/);\n  let fieldName;\n  let subFieldType;\n  let featureLocationIndentation;\n  let lastLineWasFeaturesTag;\n  let lastLineWasLocation;\n\n  let hasFoundLocus = false;\n\n  for (let line of lines) {\n    if (line === null) break;\n    let lineFieldName = getLineFieldName(line);\n    let val = getLineVal(line);\n    let isSubKey = isSubKeyword(line);\n    let isKey = isKeyword(line);\n\n    if (lineFieldName === genbankAnnotationKey.END_SEQUENCE_TAG || isKey) {\n      fieldName = lineFieldName;\n      subFieldType = null;\n    } else if (isSubKey) {\n      subFieldType = lineFieldName;\n    }\n    // IGNORE LINES: DO NOT EVEN PROCESS\n    if (line.trim() === '' || lineFieldName === ';') {\n      continue;\n    }\n\n    if (!hasFoundLocus && fieldName !== genbankAnnotationKey.LOCUS_TAG) {\n      // 'Genbank files must start with a LOCUS tag so this must not be a genbank'\n      break;\n    }\n\n    switch (fieldName) {\n      case genbankAnnotationKey.LOCUS_TAG:\n        hasFoundLocus = true;\n        parseLocus(line);\n        break;\n      case genbankAnnotationKey.FEATURES_TAG:\n        parseFeatures(line, lineFieldName, val);\n        break;\n      case genbankAnnotationKey.ORIGIN_TAG:\n        parseOrigin(line, lineFieldName);\n        break;\n      case genbankAnnotationKey.DEFINITION_TAG:\n      case genbankAnnotationKey.ACCESSION_TAG:\n      case genbankAnnotationKey.VERSION_TAG:\n      case genbankAnnotationKey.KEYWORDS_TAG:\n        parseMultiLineField(fieldName, line, fieldName.toLowerCase());\n        break;\n      case genbankAnnotationKey.SOURCE_TAG:\n        if (subFieldType === genbankAnnotationKey.ORGANISM_TAG) {\n          parseMultiLineField(subFieldType, line, 'organism');\n        } else {\n          parseMultiLineField(lineFieldName, line, 'source');\n        }\n        break;\n      case genbankAnnotationKey.REFERENCE_TAG:\n        if (lineFieldName === genbankAnnotationKey.REFERENCE_TAG) {\n          const ref = result.references || [];\n          result.references = ref;\n          ref.push({});\n        }\n        parseReference(line, subFieldType);\n        break;\n      case genbankAnnotationKey.END_SEQUENCE_TAG:\n        endSeq();\n        break;\n      default:\n        // Unhandled tag\n        break;\n    }\n  }\n\n  // catch the case where we've successfully started a sequence and parsed it, but endSeq isn't called correctly\n  if (resultsArray[resultsArray.length - 1] !== result) {\n    // current result isn't in resultsArray yet\n    // so we call endSeq here\n    endSeq();\n  }\n  return resultsArray;\n\n  function endSeq() {\n    // do some post processing clean-up\n    postProcessCurSeq();\n    // push the result into the resultsArray\n    resultsArray.push(result);\n  }\n\n  function getCurrentFeature() {\n    return result.features[result.features.length - 1];\n  }\n\n  function postProcessCurSeq() {\n    if (result && result.features) {\n      for (let i = 0; i < result.features.length; i++) {\n        result.features[i] = postProcessGenbankFeature(result.features[i]);\n      }\n    }\n  }\n\n  function parseOrigin(line, key) {\n    if (key !== genbankAnnotationKey.ORIGIN_TAG) {\n      let newLine = line.replace(/[\\s]*[0-9]*/g, '');\n      result.sequence += newLine;\n    }\n  }\n\n  function parseLocus(line) {\n    result = {\n      features: [],\n      name: 'Untitled sequence',\n      sequence: '',\n      references: [],\n    };\n    line = removeFieldName(genbankAnnotationKey.LOCUS_TAG, line);\n    const m = line.match(\n      /^([^\\s]+)\\s+(\\d+)\\s+bp\\s+([^\\s]+)\\s+([^\\s]+)\\s+([^\\s]+)\\s*([^\\s]+)?$/,\n    );\n    let locusName = m[1];\n    let size = +m[2];\n    let moleculeType = m[3];\n    let circular = m[4] === 'circular';\n    const seq = result;\n    let dateStr = '';\n    if (!m[6]) {\n      dateStr = m[5];\n    } else {\n      seq.genbankDivision = m[5];\n      dateStr = m[6];\n    }\n    seq.circular = circular;\n    seq.moleculeType = moleculeType;\n    const dateMatch = dateStr.match(/^(\\d{2})-(.{3})-(\\d{4})$/);\n    const date = new Date();\n    date.setFullYear(+dateMatch[3]);\n    date.setUTCMonth(MONTHS.indexOf(dateMatch[2].toUpperCase()));\n    date.setDate(+dateMatch[1]);\n    date.setUTCHours(12);\n    date.setMinutes(0);\n    date.setSeconds(0);\n    date.setMilliseconds(0);\n    seq.date = date.toISOString();\n    seq.name = locusName;\n    seq.size = size;\n  }\n\n  function removeFieldName(fName, line) {\n    line = line.replace(/^\\s*/, '');\n    if (line.indexOf(fName) === 0) {\n      line = line.replace(fName, '');\n    }\n    return line.trim();\n  }\n\n  function parseReference(line, subType) {\n    const refs = result.references;\n    let lastRef = refs[refs.length - 1];\n    if (!subType) {\n      parseMultiLineField(\n        genbankAnnotationKey.REFERENCE_TAG,\n        line,\n        'description',\n        lastRef,\n      );\n    } else {\n      parseMultiLineField(subType, line, subType.toLowerCase(), lastRef);\n    }\n  }\n\n  function parseFeatures(line, key, val) {\n    let strand;\n    // FOR THE MAIN FEATURES LOCATION/QUALIFIER LINE\n    if (key === genbankAnnotationKey.FEATURES_TAG) {\n      lastLineWasFeaturesTag = true;\n      return;\n    }\n\n    if (lastLineWasFeaturesTag) {\n      // we need to get the indentation of feature locations\n      featureLocationIndentation = getLengthOfWhiteSpaceBeforeStartOfLetters(\n        line,\n      );\n      // set lastLineWasFeaturesTag to false\n      lastLineWasFeaturesTag = false;\n    }\n\n    // FOR LOCATION && QUALIFIER LINES\n    if (isFeatureLineRunon(line, featureLocationIndentation)) {\n      // the line is a continuation of the above line\n      if (lastLineWasLocation) {\n        // the last line was a location, so the run-on line is expected to be a feature location as well\n        parseFeatureLocation(line.trim());\n        lastLineWasLocation = true;\n      } else {\n        // the last line was a note\n        if (currentFeatureNote) {\n          // append to the currentFeatureNote\n          currentFeatureNote[\n            currentFeatureNote.length - 1\n          ] += line.trim().replace(/\"/g, '');\n        }\n        lastLineWasLocation = false;\n      }\n    } else {\n      // New Element/Qualifier lines. Not runon lines.\n      if (isNote(line)) {\n        // is a new Feature Element (e.g. source, CDS) in the form of  \"[\\s] KEY  SEQLOCATION\"\n        // is a FeatureQualifier in the /KEY=\"BLAH\" format; could be multiple per Element\n        // Check that feature did not get skipped for missing location\n        if (getCurrentFeature()) {\n          parseFeatureNote(line);\n          lastLineWasLocation = false;\n        }\n      } else {\n        // the line is a location, so we make a new feature from it\n        if (val.match(/complement/g)) {\n          strand = -1;\n        } else {\n          strand = 1;\n        }\n\n        newFeature();\n        let feat = getCurrentFeature();\n        feat.type = key;\n        feat.strand = strand;\n\n        parseFeatureLocation(val);\n        lastLineWasLocation = true;\n      }\n    }\n  }\n\n  function newFeature() {\n    result.features.push({\n      notes: {},\n    });\n  }\n\n  function isNote(line) {\n    let qual = false;\n    /* if (line.charAt(21) === \"/\") {//T.H. Hard coded method\n           qual = true;\n         }*/\n    if (line.trim().charAt(0).match(/\\//)) {\n      // searches based on looking for / in beginning of line\n      qual = true;\n    } else if (line.match(/^[\\s]*\\/[\\w]+=[\\S]+/)) {\n      // searches based on \"   /key=BLAH\" regex\n      qual = true;\n    }\n    return qual;\n  }\n\n  function parseFeatureLocation(locStr) {\n    locStr = locStr.trim();\n    let locArr = [];\n    locStr.replace(/(\\d+)/g, function (string, match) {\n      locArr.push(match);\n    });\n    let feat = getCurrentFeature();\n    feat.start = +locArr[0];\n    feat.end = locArr[1] === undefined ? +locArr[0] : +locArr[1];\n  }\n\n  function parseFeatureNote(line) {\n    let newLine, lineArr;\n\n    newLine = line.trim();\n    newLine = newLine.replace(/^\\/|\"$/g, '');\n    lineArr = newLine.split(/=\"|=/);\n\n    let val = lineArr[1];\n\n    if (val) {\n      val = val.replace(/\\\\/g, ' ');\n\n      if (line.match(/=\"/g)) {\n        val = val.replace(/\".*/g, '');\n      } else if (val.match(/^\\d+$/g)) {\n        val = +val;\n      }\n    }\n    let key = lineArr[0];\n    let currentNotes = getCurrentFeature().notes;\n    if (currentNotes[key]) {\n      // array already exists, so push value into it\n      currentNotes[key].push(val);\n    } else {\n      // array doesn't exist yet, so create it and populate it with the value\n      currentNotes[key] = [val];\n    }\n    currentFeatureNote = currentNotes[key];\n  }\n\n  function getLineFieldName(line) {\n    let arr;\n    line = line.trim();\n\n    arr = line.split(/[\\s]+/);\n\n    return arr[0];\n  }\n\n  function parseMultiLineField(fName, line, resultKey, r) {\n    r = r || result;\n    let fieldValue = removeFieldName(fName, line);\n    r[resultKey] = r[resultKey] ? `${r[resultKey]} ` : '';\n    r[resultKey] += fieldValue;\n  }\n\n  function getLineVal(line) {\n    let arr;\n\n    if (line.indexOf('=') < 0) {\n      line = line.replace(/^[\\s]*[\\S]+[\\s]+|[\\s]+$/, '');\n      line = line.trim();\n      return line;\n    } else {\n      arr = line.split(/=/);\n      return arr[1];\n    }\n  }\n\n  function isKeyword(line) {\n    let isKey = false;\n    if (line.substr(0, 10).match(/^[\\S]+/)) {\n      isKey = true;\n    }\n    return isKey;\n  }\n\n  function isSubKeyword(line) {\n    let isSubKey = false;\n    if (line.substr(0, 10).match(/^[\\s]+[\\S]+/)) {\n      isSubKey = true;\n    }\n    return isSubKey;\n  }\n\n  function postProcessGenbankFeature(feat) {\n    if (feat.notes.label) {\n      feat.name = feat.notes.label[0];\n    } else if (feat.notes.gene) {\n      feat.name = feat.notes.gene[0];\n    } else if (feat.notes.ApEinfo_label) {\n      feat.name = feat.notes.ApEinfo_label[0];\n    } else if (feat.notes.name) {\n      feat.name = feat.notes.name[0];\n    } else if (feat.notes.organism) {\n      feat.name = feat.notes.organism[0];\n    } else if (feat.notes.locus_tag) {\n      feat.name = feat.notes.locus_tag[0];\n    } else if (feat.notes.note) {\n      feat.name = feat.notes.note[0];\n    } else {\n      feat.name = 'Untitled Feature';\n    }\n    feat.name = typeof feat.name === 'string' ? feat.name : String(feat.name);\n    return feat;\n  }\n}\n\nfunction isFeatureLineRunon(line, featureLocationIndentation) {\n  let indentationOfLine = getLengthOfWhiteSpaceBeforeStartOfLetters(line);\n  if (featureLocationIndentation === indentationOfLine) {\n    // the feature location indentation calculated right after the feature tag\n    // cannot be the same as the indentation of the line\n    //\n    // FEATURES             Location/Qualifiers\n    //     rep_origin      complement(1074..3302)\n    // 01234  <-- this is the indentation we're talking about\n    return false; // the line is NOT a run on\n  }\n\n  let trimmed = line.trim();\n  if (trimmed.charAt(0).match(/\\//)) {\n    // the first char in the trimmed line cannot be a /\n    return false; // the line is NOT a run on\n  }\n  // the line is a run on\n  return true;\n  // run-on line example:\n  // FEATURES             Location/Qualifiers\n  //     rep_origin      complement(1074..3302)\n  //                 /label=pSC101**\n  //                 /note=\"REP_ORIGIN REP_ORIGIN pSC101* aka pMPP6, gives plasm\n  //                 id number 3 -4 copies per cell, BglII site in pSC101* ori h <--run-on line!\n  //                 as been dele ted by quick change agatcT changed to agatcA g <--run-on line!\n  //                 iving pSC101* * pSC101* aka pMPP6, gives plasmid number 3-4 <--run-on line!\n  //                 copies p er cell, BglII site in pSC101* ori has been delet  <--run-on line!\n  //                 ed by quic k change agatcT changed to agatcA giving pSC101* <--run-on line!\n  //                 * [pBbS0a-RFP]\"                                             <--run-on line!\n  //                 /gene=\"SC101** Ori\"\n  //                 /note=\"pSC101* aka pMPP6, gives plasmid number 3-4 copies p\n  //                 er cell, BglII site in pSC101* ori has been deleted by qui\n  //                 c k change agatcT changed to agatcA giving pSC101**\"\n  //                 /vntifkey=\"33\"\n}\n\nfunction getLengthOfWhiteSpaceBeforeStartOfLetters(string) {\n  let match = /^\\s*/.exec(string);\n  if (match !== null) {\n    return match[0].length;\n  } else {\n    return 0;\n  }\n}\n\nmodule.exports = genbankToJson;\n","import genbankParser from 'genbank-parser';\n\nimport common from '../common';\n\nexport default {\n  find(genbank, filename) {\n    let reference = common.getBasename(filename);\n\n    return genbank.find((genbank) => {\n      return common.getBasename(common.getFilename(genbank)) === reference;\n    });\n  },\n\n  getProperty(filename) {\n    return common.getTargetProperty(filename);\n  },\n\n  process(filename, content) {\n    let textContent = common.getTextContent(content);\n    let toReturn;\n    const parsed = genbankParser(textContent);\n    toReturn = {\n      seq: parsed.map((p) => p.parsedSequence),\n    };\n    return toReturn;\n  },\n\n  jpath: ['biology', 'nucleic'],\n};\n","export default {\n  jpath: ['general'],\n  getEmpty() {\n    return {\n      description: '',\n      title: '',\n      name: [],\n      mf: '',\n      molfile: '',\n      mw: 0,\n      keyword: [],\n      meta: {},\n      sequence: '',\n      kind: '',\n    };\n  },\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'hgPorosimetry'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'icp'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['image'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'ir'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'isotherm'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'iv'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'mass'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","/* eslint-disable camelcase */\nexport const impurities = {\n  cdcl3: {\n    tms: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: '',\n        shift: 0,\n      },\n    ],\n    solvent: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: 'ds',\n        shift: 7.26,\n      },\n    ],\n    h2o: [\n      {\n        proton: 'H2O',\n        coupling: 0,\n        multiplicity: 'bs',\n        shift: 1.56,\n      },\n    ],\n    acetic_acid: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.1,\n      },\n    ],\n    acetone: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.17,\n      },\n    ],\n    acetonitrile: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.1,\n      },\n    ],\n    benzene: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.36,\n      },\n    ],\n    'tert-butyl_alcohol': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.28,\n      },\n    ],\n    'tert-butyl_methyl_ether': [\n      {\n        proton: 'CCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.19,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.22,\n      },\n    ],\n    bhtb: [\n      {\n        proton: 'ArH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 6.98,\n      },\n      {\n        proton: 'OHc',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 5.01,\n      },\n      {\n        proton: 'ArCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.27,\n      },\n      {\n        proton: 'ArC(CH3)3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.43,\n      },\n    ],\n    chloroform: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.26,\n      },\n    ],\n    cyclohexane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.43,\n      },\n    ],\n    '1,2-dichloroethane': [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.73,\n      },\n    ],\n    dichloromethane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 5.3,\n      },\n    ],\n    diethyl_ether: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.21,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.48,\n      },\n    ],\n    diglyme: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.65,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.57,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.39,\n      },\n    ],\n    '1,2-dimethoxyethane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.4,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.55,\n      },\n    ],\n    dimethylacetamide: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.09,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.02,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.94,\n      },\n    ],\n    dimethylformamide: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 8.02,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.96,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.88,\n      },\n    ],\n    dimethyl_sulfoxide: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.62,\n      },\n    ],\n    dioxane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.71,\n      },\n    ],\n    ethanol: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.25,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.72,\n      },\n      {\n        proton: 'OH',\n        coupling: 5,\n        multiplicity: 's,t',\n        shift: 1.32,\n      },\n    ],\n    ethyl_acetate: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.05,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 4.12,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.26,\n      },\n    ],\n    ethyl_methyl_ketone: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.14,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 2.46,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.06,\n      },\n    ],\n    ethylene_glycol: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.76,\n      },\n    ],\n    'grease^f': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 0.86,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'br_s',\n        shift: 1.26,\n      },\n    ],\n    'n-hexane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 't',\n        shift: 0.88,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.26,\n      },\n    ],\n    hmpag: [\n      {\n        proton: 'CH3',\n        coupling: 9.5,\n        multiplicity: 'd',\n        shift: 2.65,\n      },\n    ],\n    methanol: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.49,\n      },\n      {\n        proton: 'OH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.09,\n      },\n    ],\n    nitromethane: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 4.33,\n      },\n    ],\n    'n-pentane': [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 7,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.27,\n      },\n    ],\n    '2-propanol': [\n      {\n        proton: 'CH3',\n        coupling: 6,\n        multiplicity: 'd',\n        shift: 1.22,\n      },\n      {\n        proton: 'CH',\n        coupling: 6,\n        multiplicity: 'sep',\n        shift: 4.04,\n      },\n    ],\n    pyridine: [\n      {\n        proton: 'CH(2)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 8.62,\n      },\n      {\n        proton: 'CH(3)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.29,\n      },\n      {\n        proton: 'CH(4)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.68,\n      },\n    ],\n    silicone_greasei: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 0.07,\n      },\n    ],\n    tetrahydrofuran: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.85,\n      },\n      {\n        proton: 'CH2O',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.76,\n      },\n    ],\n    toluene: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.36,\n      },\n      {\n        proton: 'CH(o/p)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.17,\n      },\n      {\n        proton: 'CH(m)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.25,\n      },\n    ],\n    triethylamine: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.03,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 2.53,\n      },\n    ],\n  },\n  '(cd3)2co': {\n    tms: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: '',\n        shift: 0,\n      },\n    ],\n    solvent: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: '',\n        shift: 2.05,\n      },\n    ],\n    h2o: [\n      {\n        proton: 'H2O',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.84,\n      },\n    ],\n    acetic_acid: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.96,\n      },\n    ],\n    acetone: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.09,\n      },\n    ],\n    acetonitrile: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.05,\n      },\n    ],\n    benzene: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.36,\n      },\n    ],\n    'tert-butyl_alcohol': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.18,\n      },\n    ],\n    'tert-butyl_methyl_ether': [\n      {\n        proton: 'CCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.13,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.13,\n      },\n    ],\n    bhtb: [\n      {\n        proton: 'ArH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 6.96,\n      },\n      {\n        proton: 'ArCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.22,\n      },\n      {\n        proton: 'ArC(CH3)3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.41,\n      },\n    ],\n    chloroform: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 8.02,\n      },\n    ],\n    cyclohexane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.43,\n      },\n    ],\n    '1,2-dichloroethane': [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.87,\n      },\n    ],\n    dichloromethane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 5.63,\n      },\n    ],\n    diethyl_ether: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.11,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.41,\n      },\n    ],\n    diglyme: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.56,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.47,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.28,\n      },\n    ],\n    '1,2-dimethoxyethane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.28,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.46,\n      },\n    ],\n    dimethylacetamide: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.97,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.83,\n      },\n    ],\n    dimethylformamide: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.96,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.94,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.78,\n      },\n    ],\n    dimethyl_sulfoxide: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.52,\n      },\n    ],\n    dioxane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.59,\n      },\n    ],\n    ethanol: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.12,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.57,\n      },\n      {\n        proton: 'OH',\n        coupling: 5,\n        multiplicity: 's,t',\n        shift: 3.39,\n      },\n    ],\n    ethyl_acetate: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.97,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 4.05,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.2,\n      },\n    ],\n    ethyl_methyl_ketone: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.07,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 2.45,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.96,\n      },\n    ],\n    ethylene_glycol: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.28,\n      },\n    ],\n    'grease^f': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 0.87,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'br_s',\n        shift: 1.29,\n      },\n    ],\n    'n-hexane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 't',\n        shift: 0.88,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.28,\n      },\n    ],\n    hmpag: [\n      {\n        proton: 'CH3',\n        coupling: 9.5,\n        multiplicity: 'd',\n        shift: 2.59,\n      },\n    ],\n    methanol: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.31,\n      },\n      {\n        proton: 'OH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.12,\n      },\n    ],\n    nitromethane: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 4.43,\n      },\n    ],\n    'n-pentane': [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.88,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.27,\n      },\n    ],\n    '2-propanol': [\n      {\n        proton: 'CH3',\n        coupling: 6,\n        multiplicity: 'd',\n        shift: 1.1,\n      },\n      {\n        proton: 'CH',\n        coupling: 6,\n        multiplicity: 'sep',\n        shift: 3.9,\n      },\n    ],\n    pyridine: [\n      {\n        proton: 'CH(2)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 8.58,\n      },\n      {\n        proton: 'CH(3)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.35,\n      },\n      {\n        proton: 'CH(4)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.76,\n      },\n    ],\n    silicone_greasei: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 0.13,\n      },\n    ],\n    tetrahydrofuran: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.79,\n      },\n      {\n        proton: 'CH2O',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.63,\n      },\n    ],\n    toluene: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.32,\n      },\n      {\n        proton: 'CH(o/p)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.5,\n      },\n      {\n        proton: 'CH(m)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.5,\n      },\n    ],\n    triethylamine: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.96,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 2.45,\n      },\n    ],\n  },\n  dmso: {\n    tms: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: '',\n        shift: 0,\n      },\n    ],\n    solvent: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: 'quint',\n        shift: 2.5,\n      },\n    ],\n    h2o: [\n      {\n        proton: 'H2O',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.33,\n      },\n    ],\n    acetic_acid: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.91,\n      },\n    ],\n    acetone: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.09,\n      },\n    ],\n    acetonitrile: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.07,\n      },\n    ],\n    benzene: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.37,\n      },\n    ],\n    'tert-butyl_alcohol': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.11,\n      },\n      {\n        proton: 'OHc',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 4.19,\n      },\n    ],\n    'tert-butyl_methyl_ether': [\n      {\n        proton: 'CCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.11,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.08,\n      },\n    ],\n    bhtb: [\n      {\n        proton: 'ArH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 6.87,\n      },\n      {\n        proton: 'OHc',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 6.65,\n      },\n      {\n        proton: 'ArCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.18,\n      },\n      {\n        proton: 'ArC(CH3)3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.36,\n      },\n    ],\n    chloroform: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 8.32,\n      },\n    ],\n    cyclohexane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.4,\n      },\n    ],\n    '1,2-dichloroethane': [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.9,\n      },\n    ],\n    dichloromethane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 5.76,\n      },\n    ],\n    diethyl_ether: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.09,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.38,\n      },\n    ],\n    diglyme: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.51,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.38,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.24,\n      },\n    ],\n    '1,2-dimethoxyethane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.24,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.43,\n      },\n    ],\n    dimethylacetamide: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.96,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.94,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.78,\n      },\n    ],\n    dimethylformamide: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.95,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.89,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.73,\n      },\n    ],\n    dimethyl_sulfoxide: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.54,\n      },\n    ],\n    dioxane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.57,\n      },\n    ],\n    ethanol: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.06,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.44,\n      },\n      {\n        proton: 'OH',\n        coupling: 5,\n        multiplicity: 's,t',\n        shift: 4.63,\n      },\n    ],\n    ethyl_acetate: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.99,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 4.03,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.17,\n      },\n    ],\n    ethyl_methyl_ketone: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.07,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 2.43,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.91,\n      },\n    ],\n    ethylene_glycol: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.34,\n      },\n    ],\n    'grease^f': [],\n    'n-hexane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 't',\n        shift: 0.86,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.25,\n      },\n    ],\n    hmpag: [\n      {\n        proton: 'CH3',\n        coupling: 9.5,\n        multiplicity: 'd',\n        shift: 2.53,\n      },\n    ],\n    methanol: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.16,\n      },\n      {\n        proton: 'OH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 4.01,\n      },\n    ],\n    nitromethane: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 4.42,\n      },\n    ],\n    'n-pentane': [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.88,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.27,\n      },\n    ],\n    '2-propanol': [\n      {\n        proton: 'CH3',\n        coupling: 6,\n        multiplicity: 'd',\n        shift: 1.04,\n      },\n      {\n        proton: 'CH',\n        coupling: 6,\n        multiplicity: 'sep',\n        shift: 3.78,\n      },\n    ],\n    pyridine: [\n      {\n        proton: 'CH(2)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 8.58,\n      },\n      {\n        proton: 'CH(3)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.39,\n      },\n      {\n        proton: 'CH(4)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.79,\n      },\n    ],\n    silicone_greasei: [],\n    tetrahydrofuran: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.76,\n      },\n      {\n        proton: 'CH2O',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.6,\n      },\n    ],\n    toluene: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.3,\n      },\n      {\n        proton: 'CH(o/p)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.18,\n      },\n      {\n        proton: 'CH(m)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.25,\n      },\n    ],\n    triethylamine: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.93,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 2.43,\n      },\n    ],\n  },\n  c6d6: {\n    tms: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: '',\n        shift: 0,\n      },\n    ],\n    solvent: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: '',\n        shift: 7.16,\n      },\n    ],\n    h2o: [\n      {\n        proton: 'H2O',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 0.4,\n      },\n    ],\n    acetic_acid: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.55,\n      },\n    ],\n    acetone: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.55,\n      },\n    ],\n    acetonitrile: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.55,\n      },\n    ],\n    benzene: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.15,\n      },\n    ],\n    'tert-butyl_alcohol': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.05,\n      },\n      {\n        proton: 'OHc',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.55,\n      },\n    ],\n    'tert-butyl_methyl_ether': [\n      {\n        proton: 'CCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.07,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.04,\n      },\n    ],\n    bhtb: [\n      {\n        proton: 'ArH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.05,\n      },\n      {\n        proton: 'OHc',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 4.79,\n      },\n      {\n        proton: 'ArCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.24,\n      },\n      {\n        proton: 'ArC(CH3)3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.38,\n      },\n    ],\n    chloroform: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 6.15,\n      },\n    ],\n    cyclohexane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.4,\n      },\n    ],\n    '1,2-dichloroethane': [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.9,\n      },\n    ],\n    dichloromethane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 4.27,\n      },\n    ],\n    diethyl_ether: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.11,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.26,\n      },\n    ],\n    diglyme: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.46,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.34,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.11,\n      },\n    ],\n    '1,2-dimethoxyethane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.12,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.33,\n      },\n    ],\n    dimethylacetamide: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.6,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.57,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.05,\n      },\n    ],\n    dimethylformamide: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.63,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.36,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.86,\n      },\n    ],\n    dimethyl_sulfoxide: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.68,\n      },\n    ],\n    dioxane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.35,\n      },\n    ],\n    ethanol: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.96,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.34,\n      },\n    ],\n    ethyl_acetate: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.65,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.89,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.92,\n      },\n    ],\n    ethyl_methyl_ketone: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.58,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 1.81,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.85,\n      },\n    ],\n    ethylene_glycol: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.41,\n      },\n    ],\n    'grease^f': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 0.92,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'br_s',\n        shift: 1.36,\n      },\n    ],\n    'n-hexane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 't',\n        shift: 0.89,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.24,\n      },\n    ],\n    hmpag: [\n      {\n        proton: 'CH3',\n        coupling: 9.5,\n        multiplicity: 'd',\n        shift: 2.4,\n      },\n    ],\n    methanol: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.07,\n      },\n    ],\n    nitromethane: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.94,\n      },\n    ],\n    'n-pentane': [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.86,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.23,\n      },\n    ],\n    '2-propanol': [\n      {\n        proton: 'CH3',\n        coupling: 6,\n        multiplicity: 'd',\n        shift: 0.95,\n      },\n      {\n        proton: 'CH',\n        coupling: 6,\n        multiplicity: 'sep',\n        shift: 3.67,\n      },\n    ],\n    pyridine: [\n      {\n        proton: 'CH(2)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 8.53,\n      },\n      {\n        proton: 'CH(3)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 6.66,\n      },\n      {\n        proton: 'CH(4)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 6.98,\n      },\n    ],\n    silicone_greasei: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 0.29,\n      },\n    ],\n    tetrahydrofuran: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.4,\n      },\n      {\n        proton: 'CH2O',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.57,\n      },\n    ],\n    toluene: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.11,\n      },\n      {\n        proton: 'CH(o/p)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.02,\n      },\n      {\n        proton: 'CH(m)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.13,\n      },\n    ],\n    triethylamine: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.96,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 2.4,\n      },\n    ],\n  },\n  cd3cn: {\n    tms: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: '',\n        shift: 0,\n      },\n    ],\n    solvent: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: '',\n        shift: 1.94,\n      },\n    ],\n    h2o: [\n      {\n        proton: 'H2O',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.13,\n      },\n    ],\n    acetic_acid: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.96,\n      },\n    ],\n    acetone: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.08,\n      },\n    ],\n    acetonitrile: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.96,\n      },\n    ],\n    benzene: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.37,\n      },\n    ],\n    'tert-butyl_alcohol': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.16,\n      },\n      {\n        proton: 'OHc',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.18,\n      },\n    ],\n    'tert-butyl_methyl_ether': [\n      {\n        proton: 'CCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.14,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.13,\n      },\n    ],\n    bhtb: [\n      {\n        proton: 'ArH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 6.97,\n      },\n      {\n        proton: 'OHc',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 5.2,\n      },\n      {\n        proton: 'ArCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.22,\n      },\n      {\n        proton: 'ArC(CH3)3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.39,\n      },\n    ],\n    chloroform: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.58,\n      },\n    ],\n    cyclohexane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.44,\n      },\n    ],\n    '1,2-dichloroethane': [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.81,\n      },\n    ],\n    dichloromethane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 5.44,\n      },\n    ],\n    diethyl_ether: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.12,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.42,\n      },\n    ],\n    diglyme: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.53,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.45,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.29,\n      },\n    ],\n    '1,2-dimethoxyethane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.28,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.45,\n      },\n    ],\n    dimethylacetamide: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.97,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.96,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.83,\n      },\n    ],\n    dimethylformamide: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.92,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.89,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.77,\n      },\n    ],\n    dimethyl_sulfoxide: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.5,\n      },\n    ],\n    dioxane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.6,\n      },\n    ],\n    ethanol: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.12,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.54,\n      },\n      {\n        proton: 'OH',\n        coupling: 5,\n        multiplicity: 's,t',\n        shift: 2.47,\n      },\n    ],\n    ethyl_acetate: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.97,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 4.06,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.2,\n      },\n    ],\n    ethyl_methyl_ketone: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.06,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 2.43,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.96,\n      },\n    ],\n    ethylene_glycol: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.51,\n      },\n    ],\n    'grease^f': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 0.86,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'br_s',\n        shift: 1.27,\n      },\n    ],\n    'n-hexane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 't',\n        shift: 0.89,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.28,\n      },\n    ],\n    hmpag: [\n      {\n        proton: 'CH3',\n        coupling: 9.5,\n        multiplicity: 'd',\n        shift: 2.57,\n      },\n    ],\n    methanol: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.28,\n      },\n      {\n        proton: 'OH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.16,\n      },\n    ],\n    nitromethane: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 4.31,\n      },\n    ],\n    'n-pentane': [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.87,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.29,\n      },\n    ],\n    '2-propanol': [\n      {\n        proton: 'CH3',\n        coupling: 6,\n        multiplicity: 'd',\n        shift: 1.09,\n      },\n      {\n        proton: 'CH',\n        coupling: 6,\n        multiplicity: 'sep',\n        shift: 3.87,\n      },\n    ],\n    pyridine: [\n      {\n        proton: 'CH(2)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 8.57,\n      },\n      {\n        proton: 'CH(3)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.33,\n      },\n      {\n        proton: 'CH(4)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.73,\n      },\n    ],\n    silicone_greasei: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 0.08,\n      },\n    ],\n    tetrahydrofuran: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.8,\n      },\n      {\n        proton: 'CH2O',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.64,\n      },\n    ],\n    toluene: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.33,\n      },\n      {\n        proton: 'CH(o/p)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.2,\n      },\n      {\n        proton: 'CH(m)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.2,\n      },\n    ],\n    triethylamine: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.96,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 2.45,\n      },\n    ],\n  },\n  cd3od: {\n    tms: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: '',\n        shift: 0,\n      },\n    ],\n    solvent: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: '',\n        shift: 3.31,\n      },\n    ],\n    h2o: [\n      {\n        proton: 'H2O',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 4.87,\n      },\n    ],\n    acetic_acid: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.99,\n      },\n    ],\n    acetone: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.15,\n      },\n    ],\n    acetonitrile: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.03,\n      },\n    ],\n    benzene: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.33,\n      },\n    ],\n    'tert-butyl_alcohol': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.4,\n      },\n    ],\n    'tert-butyl_methyl_ether': [\n      {\n        proton: 'CCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.15,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.2,\n      },\n    ],\n    bhtb: [\n      {\n        proton: 'ArH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 6.92,\n      },\n      {\n        proton: 'ArCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.21,\n      },\n      {\n        proton: 'ArC(CH3)3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.4,\n      },\n    ],\n    chloroform: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.9,\n      },\n    ],\n    cyclohexane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.45,\n      },\n    ],\n    '1,2-dichloroethane': [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.78,\n      },\n    ],\n    dichloromethane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 5.49,\n      },\n    ],\n    diethyl_ether: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.18,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.49,\n      },\n    ],\n    diglyme: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.61,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.58,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.35,\n      },\n    ],\n    '1,2-dimethoxyethane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.35,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.52,\n      },\n    ],\n    dimethylacetamide: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.07,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.31,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.92,\n      },\n    ],\n    dimethylformamide: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.97,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.99,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.86,\n      },\n    ],\n    dimethyl_sulfoxide: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.65,\n      },\n    ],\n    dioxane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.66,\n      },\n    ],\n    ethanol: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.19,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.6,\n      },\n    ],\n    ethyl_acetate: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.01,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 4.09,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.24,\n      },\n    ],\n    ethyl_methyl_ketone: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.12,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 2.5,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.01,\n      },\n    ],\n    ethylene_glycol: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.59,\n      },\n    ],\n    'grease^f': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 0.88,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'br_s',\n        shift: 1.29,\n      },\n    ],\n    'n-hexane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 't',\n        shift: 0.9,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.29,\n      },\n    ],\n    hmpag: [\n      {\n        proton: 'CH3',\n        coupling: 9.5,\n        multiplicity: 'd',\n        shift: 2.64,\n      },\n    ],\n    methanol: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.34,\n      },\n    ],\n    nitromethane: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 4.34,\n      },\n    ],\n    'n-pentane': [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.89,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.29,\n      },\n    ],\n    '2-propanol': [\n      {\n        proton: 'CH3',\n        coupling: 6,\n        multiplicity: 'd',\n        shift: 1.5,\n      },\n      {\n        proton: 'CH',\n        coupling: 6,\n        multiplicity: 'sep',\n        shift: 3.92,\n      },\n    ],\n    pyridine: [\n      {\n        proton: 'CH(2)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 8.53,\n      },\n      {\n        proton: 'CH(3)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.44,\n      },\n      {\n        proton: 'CH(4)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.85,\n      },\n    ],\n    silicone_greasei: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 0.1,\n      },\n    ],\n    tetrahydrofuran: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.87,\n      },\n      {\n        proton: 'CH2O',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.71,\n      },\n    ],\n    toluene: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.32,\n      },\n      {\n        proton: 'CH(o/p)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.16,\n      },\n      {\n        proton: 'CH(m)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.16,\n      },\n    ],\n    triethylamine: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.05,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 2.58,\n      },\n    ],\n  },\n  d2o: {\n    tms: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: '',\n        shift: 0,\n      },\n    ],\n    solvent: [\n      {\n        proton: 'X',\n        coupling: 0,\n        multiplicity: '',\n        shift: 4.79,\n      },\n    ],\n    h2o: [],\n    acetic_acid: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.08,\n      },\n    ],\n    acetone: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.22,\n      },\n    ],\n    acetonitrile: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.06,\n      },\n    ],\n    benzene: [],\n    'tert-butyl_alcohol': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.24,\n      },\n    ],\n    'tert-butyl_methyl_ether': [\n      {\n        proton: 'CCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 1.21,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.22,\n      },\n    ],\n    bhtb: [],\n    chloroform: [],\n    cyclohexane: [],\n    '1,2-dichloroethane': [],\n    dichloromethane: [],\n    diethyl_ether: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.17,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.56,\n      },\n    ],\n    diglyme: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.67,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.61,\n      },\n      {\n        proton: 'OCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.37,\n      },\n    ],\n    '1,2-dimethoxyethane': [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.37,\n      },\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.6,\n      },\n    ],\n    dimethylacetamide: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.08,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.06,\n      },\n      {\n        proton: 'NCH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.9,\n      },\n    ],\n    dimethylformamide: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 7.92,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.01,\n      },\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.85,\n      },\n    ],\n    dimethyl_sulfoxide: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.71,\n      },\n    ],\n    dioxane: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.75,\n      },\n    ],\n    ethanol: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.17,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.65,\n      },\n    ],\n    ethyl_acetate: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.07,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 4.14,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.24,\n      },\n    ],\n    ethyl_methyl_ketone: [\n      {\n        proton: 'CH3CO',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 2.19,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 3.18,\n      },\n      {\n        proton: 'CH2CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 1.26,\n      },\n    ],\n    ethylene_glycol: [\n      {\n        proton: 'CH',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.65,\n      },\n    ],\n    'grease^f': [],\n    'n-hexane': [],\n    hmpag: [\n      {\n        proton: 'CH3',\n        coupling: 9.5,\n        multiplicity: 'd',\n        shift: 2.61,\n      },\n    ],\n    methanol: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 3.34,\n      },\n    ],\n    nitromethane: [\n      {\n        proton: 'CH3',\n        coupling: 0,\n        multiplicity: 's',\n        shift: 4.4,\n      },\n    ],\n    'n-pentane': [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.9,\n      },\n    ],\n    '2-propanol': [\n      {\n        proton: 'CH3',\n        coupling: 6,\n        multiplicity: 'd',\n        shift: 1.17,\n      },\n      {\n        proton: 'CH',\n        coupling: 6,\n        multiplicity: 'sep',\n        shift: 4.02,\n      },\n    ],\n    pyridine: [\n      {\n        proton: 'CH(2)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 8.52,\n      },\n      {\n        proton: 'CH(3)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.45,\n      },\n      {\n        proton: 'CH(4)',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 7.87,\n      },\n    ],\n    silicone_greasei: [],\n    tetrahydrofuran: [\n      {\n        proton: 'CH2',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 1.88,\n      },\n      {\n        proton: 'CH2O',\n        coupling: 0,\n        multiplicity: 'm',\n        shift: 3.74,\n      },\n    ],\n    toluene: [],\n    triethylamine: [\n      {\n        proton: 'CH3',\n        coupling: 7,\n        multiplicity: 't',\n        shift: 0.99,\n      },\n      {\n        proton: 'CH2',\n        coupling: 7,\n        multiplicity: 'q',\n        shift: 2.57,\n      },\n    ],\n  },\n};\n","import { impurities } from '../constants/impurities';\n\nconst toCheck = ['solvent', 'H2O', 'TMS'];\n\n/**\n * Try to remove peaks of impurities.\n * @param {array} peakList - A list of initial parameters to be optimized. e.g. coming from a peak picking [{x, y, width}].\n * @param {object} [options={}] - options\n * @param {string} [options.solvent=''] - solvent name.\n * @param {string} [options.error=0.025] - tolerance in ppm to assign a impurity.\n */\n\nexport function peaksFilterImpurities(peakList, options = {}) {\n  let { solvent = '', error = 0.025, remove = false } = options;\n  solvent = solvent.toLowerCase();\n  if (solvent === '(cd3)2so') solvent = 'dmso';\n  if (solvent === 'meod') solvent = 'cd3od';\n  let solventImpurities = impurities[solvent];\n  if (solventImpurities) {\n    for (let impurity of toCheck) {\n      let name = impurity.toLowerCase();\n      let impurityShifts = solventImpurities[name];\n      checkImpurity(peakList, impurityShifts, {\n        error,\n        remove,\n        name,\n      });\n    }\n  }\n  return peakList;\n}\n\nfunction checkImpurity(peakList, impurity, options) {\n  let { name, error, remove } = options;\n  let j, tolerance, difference;\n  let i = impurity.length;\n  while (i--) {\n    j = peakList.length;\n    while (j--) {\n      if (!peakList[j].asymmetric) {\n        tolerance = error + peakList[j].width;\n        difference = Math.abs(impurity[i].shift - peakList[j].x);\n        if (difference < tolerance) {\n          // && (impurity[i].multiplicity === '' || (impurity[i].multiplicity.indexOf(peakList[j].multiplicity)) { // some impurities has multiplicities like 'bs' but at presents it is unsupported\n          if (remove) {\n            peakList.splice(j, 1);\n          } else {\n            peakList[j].kind = name;\n          }\n        }\n      }\n    }\n  }\n}\n","export const GAUSSIAN_EXP_FACTOR = -4 * Math.LN2;\nexport const ROOT_PI_OVER_LN2 = Math.sqrt(Math.PI / Math.LN2);\nexport const ROOT_THREE = Math.sqrt(3);\nexport const ROOT_2LN2 = Math.sqrt(2 * Math.LN2);\nexport const ROOT_2LN2_MINUS_ONE = Math.sqrt(2 * Math.LN2) - 1;\n//# sourceMappingURL=constants.js.map","// https://en.wikipedia.org/wiki/Error_function#Inverse_functions\n// This code yields to a good approximation\n// If needed a better implementation using polynomial can be found on https://en.wikipedia.org/wiki/Error_function#Inverse_functions\nexport default function erfinv(x) {\n    let a = 0.147;\n    if (x === 0)\n        return 0;\n    let ln1MinusXSqrd = Math.log(1 - x * x);\n    let lnEtcBy2Plus2 = ln1MinusXSqrd / 2 + 2 / (Math.PI * a);\n    let firstSqrt = Math.sqrt(lnEtcBy2Plus2 ** 2 - ln1MinusXSqrd / a);\n    let secondSqrt = Math.sqrt(firstSqrt - lnEtcBy2Plus2);\n    return secondSqrt * (x > 0 ? 1 : -1);\n}\n//# sourceMappingURL=erfinv.js.map","export class Shape1D {\n}\n//# sourceMappingURL=Shape1D.js.map","import { ROOT_2LN2, GAUSSIAN_EXP_FACTOR, ROOT_PI_OVER_LN2, } from '../../../util/constants';\nimport erfinv from '../../../util/erfinv';\nimport { Shape1D } from '../Shape1D';\nexport class Gaussian extends Shape1D {\n    constructor(options = {}) {\n        super();\n        const { fwhm = 500, sd, height } = options;\n        this.fwhm = sd ? widthToFWHM(2 * sd) : fwhm;\n        this.height =\n            height === undefined\n                ? Math.sqrt(-GAUSSIAN_EXP_FACTOR / Math.PI) / this.fwhm\n                : height;\n    }\n    fwhmToWidth(fwhm = this.fwhm) {\n        return fwhmToWidth(fwhm);\n    }\n    widthToFWHM(width) {\n        return widthToFWHM(width);\n    }\n    fct(x) {\n        return fct(x, this.fwhm);\n    }\n    getArea() {\n        return getArea({ fwhm: this.fwhm, height: this.height });\n    }\n    getFactor(area) {\n        return getFactor(area);\n    }\n    getData(options = {}) {\n        const { length, factor } = options;\n        return getData({ fwhm: this.fwhm, height: this.height, factor, length });\n    }\n}\n/**\n * Return a parameterized function of a gaussian shape (see README for equation).\n * @returns - the y value of gaussian with the current parameters.\n */\nexport function fct(x, fwhm) {\n    return Math.exp(GAUSSIAN_EXP_FACTOR * Math.pow(x / fwhm, 2));\n}\n/**\n * Compute the value of Full Width at Half Maximum (FWHM) from the width between the inflection points.\n * for more information check the [mathworld page](https://mathworld.wolfram.com/GaussianFunction.html)\n * @returns fwhm\n */\nexport function widthToFWHM(width) {\n    return width * ROOT_2LN2;\n}\n/**\n * Compute the value of width between the inflection points from Full Width at Half Maximum (FWHM).\n * for more information check the [mathworld page](https://mathworld.wolfram.com/GaussianFunction.html)\n * @param fwhm - Full Width at Half Maximum.\n * @returns width\n */\nexport function fwhmToWidth(fwhm) {\n    return fwhm / ROOT_2LN2;\n}\n/**\n * Calculate the area of a specific shape.\n * @returns returns the area of the specific shape and parameters.\n */\nexport function getArea(options) {\n    let { fwhm, sd, height = 1 } = options;\n    if (sd)\n        fwhm = widthToFWHM(2 * sd);\n    if (fwhm === undefined) {\n        throw new Error('should pass fwhm or sd parameters');\n    }\n    return (height * ROOT_PI_OVER_LN2 * fwhm) / 2;\n}\n/**\n * Calculate the number of times FWHM allows to reach a specific area coverage.\n * @param [area=0.9999] Expected area to be covered.\n * @returns\n */\nexport function getFactor(area = 0.9999) {\n    return Math.sqrt(2) * erfinv(area);\n}\n/**\n * Calculate intensity array of a gaussian shape.\n * @returns {Float64Array} Intensity values.\n */\nexport function getData(options = {}) {\n    let { length, factor = getFactor(), fwhm = 500, sd, height } = options;\n    if (sd)\n        fwhm = widthToFWHM(2 * sd);\n    if (!height) {\n        height = Math.sqrt(-GAUSSIAN_EXP_FACTOR / Math.PI) / fwhm;\n    }\n    if (!length) {\n        length = Math.min(Math.ceil(fwhm * factor), Math.pow(2, 25) - 1);\n        if (length % 2 === 0)\n            length++;\n    }\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n        data[i] = fct(i - center, fwhm) * height;\n        data[length - 1 - i] = data[i];\n    }\n    return data;\n}\n//# sourceMappingURL=Gaussian.js.map","import { ROOT_THREE } from '../../../util/constants';\nimport { Shape1D } from '../Shape1D';\nexport class Lorentzian extends Shape1D {\n    constructor(options = {}) {\n        super();\n        const { fwhm = 500, height } = options;\n        this.fwhm = fwhm;\n        this.height = height === undefined ? 2 / Math.PI / fwhm : height;\n    }\n    fwhmToWidth(fwhm = this.fwhm) {\n        return fwhmToWidth(fwhm);\n    }\n    widthToFWHM(width) {\n        return widthToFWHM(width);\n    }\n    fct(x) {\n        return fct(x, this.fwhm);\n    }\n    getArea() {\n        return getArea({ fwhm: this.fwhm, height: this.height });\n    }\n    getFactor(area) {\n        return getFactor(area);\n    }\n    getData(options = {}) {\n        const { length, factor } = options;\n        return getData({ fwhm: this.fwhm, height: this.height, factor, length });\n    }\n}\n/**\n * Return a parameterized function of a lorentzian shape (see README for equation).\n * @param x - x value to calculate.\n * @param fwhm - full width half maximum\n * @returns - the y value of lorentzian with the current parameters.\n */\nexport function fct(x, fwhm) {\n    return Math.pow(fwhm, 2) / (4 * Math.pow(x, 2) + Math.pow(fwhm, 2));\n}\n/**\n * Compute the value of Full Width at Half Maximum (FWHM) from the width between the inflection points.\n * for more information check the [mathworld page](https://mathworld.wolfram.com/LorentzianFunction.html)\n * @param width - Width between the inflection points\n * @returns fwhm\n */\nexport function widthToFWHM(width) {\n    return width * ROOT_THREE;\n}\n/**\n * Compute the value of width between the inflection points from Full Width at Half Maximum (FWHM).\n * for more information check the [mathworld page](https://mathworld.wolfram.com/LorentzianFunction.html)\n * @param fwhm - Full Width at Half Maximum.\n * @returns width\n */\nexport function fwhmToWidth(fwhm) {\n    return fwhm / ROOT_THREE;\n}\n/**\n * Calculate the area of a specific shape.\n * @returns returns the area of the specific shape and parameters.\n */\nexport function getArea(options) {\n    const { fwhm, height = 1 } = options;\n    if (fwhm === undefined) {\n        throw new Error('should pass fwhm or sd parameters');\n    }\n    return (height * Math.PI * fwhm) / 2;\n}\n/**\n * Calculate the number of times FWHM allows to reach a specific area coverage.\n * @param [area=0.9999] Expected area to be covered.\n * @returns\n */\nexport function getFactor(area = 0.9999) {\n    return 2 * Math.tan(Math.PI * (area - 0.5));\n}\n/**\n * Calculate intensity array of a lorentzian shape.\n * @returns {Float64Array} y values\n */\nexport function getData(options = {}) {\n    let { length, factor = getFactor(), fwhm = 500, height } = options;\n    if (!height) {\n        height = 2 / Math.PI / fwhm;\n    }\n    if (!length) {\n        length = Math.min(Math.ceil(fwhm * factor), Math.pow(2, 25) - 1);\n        if (length % 2 === 0)\n            length++;\n    }\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n        data[i] = fct(i - center, fwhm) * height;\n        data[length - 1 - i] = data[i];\n    }\n    return data;\n}\n//# sourceMappingURL=Lorentzian.js.map","import { GAUSSIAN_EXP_FACTOR, ROOT_2LN2_MINUS_ONE, ROOT_PI_OVER_LN2, } from '../../../util/constants';\nimport { Shape1D } from '../Shape1D';\nimport { fct as gaussian, getFactor as getFactorGaussian, } from '../gaussian/Gaussian';\nimport { fct as lorentzian, getFactor as getFactorLorentzian, } from '../lorentzian/Lorentzian';\nexport class PseudoVoigt extends Shape1D {\n    constructor(options = {}) {\n        super();\n        const { fwhm = 500, height, mu = 0.5 } = options;\n        this.mu = mu;\n        this.fwhm = fwhm;\n        this.height =\n            height === undefined\n                ? 1 /\n                    ((mu / Math.sqrt(-GAUSSIAN_EXP_FACTOR / Math.PI)) * fwhm +\n                        ((1 - mu) * fwhm * Math.PI) / 2)\n                : height;\n    }\n    fwhmToWidth(fwhm = this.fwhm, mu = this.mu) {\n        return fwhmToWidth(fwhm, mu);\n    }\n    widthToFWHM(width, mu = this.mu) {\n        return widthToFWHM(width, mu);\n    }\n    fct(x) {\n        return fct(x, this.fwhm, this.mu);\n    }\n    getArea() {\n        return getArea({ fwhm: this.fwhm, height: this.height, mu: this.mu });\n    }\n    getFactor(area) {\n        return getFactor(area);\n    }\n    getData(options = {}) {\n        const { length, factor } = options;\n        return getData({\n            fwhm: this.fwhm,\n            height: this.height,\n            mu: this.mu,\n            factor,\n            length,\n        });\n    }\n}\n/**\n * Return a parameterized function of a pseudo voigt shape (see README for equation).\n * @param x - x value to calculate.\n * @param fwhm - full width half maximum\n * @returns - the y value of pseudo voigt with the current parameters.\n */\nexport function fct(x, fwhm, mu) {\n    return (1 - mu) * lorentzian(x, fwhm) + mu * gaussian(x, fwhm);\n}\n/**\n * Compute the value of Full Width at Half Maximum (FWHM) from the width between the inflection points.\n * @param width - Width between the inflection points\n * @param [mu=0.5] Ratio of gaussian contribution in the shape\n * @returns fwhm\n */\nexport function widthToFWHM(width, mu = 0.5) {\n    return width * (mu * ROOT_2LN2_MINUS_ONE + 1);\n}\n/**\n * Compute the value of width between the inflection points from Full Width at Half Maximum (FWHM).\n * @param fwhm - Full Width at Half Maximum.\n * @param [mu=0.5] Ratio of gaussian contribution in the shape\n * @returns width\n */\nexport function fwhmToWidth(fwhm, mu = 0.5) {\n    return fwhm / (mu * ROOT_2LN2_MINUS_ONE + 1);\n}\n/**\n * Calculate the area of a specific shape.\n * @returns returns the area of the specific shape and parameters.\n */\nexport function getArea(options) {\n    const { fwhm, height = 1, mu = 0.5 } = options;\n    if (fwhm === undefined) {\n        throw new Error('should pass fwhm or sd parameters');\n    }\n    return (fwhm * height * (mu * ROOT_PI_OVER_LN2 + (1 - mu) * Math.PI)) / 2;\n}\n/**\n * Calculate the number of times FWHM allows to reach a specific area coverage.\n * @param [area=0.9999] Expected area to be covered.\n * @returns\n */\nexport function getFactor(area = 0.9999, mu = 0.5) {\n    return mu < 1 ? getFactorLorentzian(area) : getFactorGaussian(area);\n}\n/**\n * Calculate intensity array of a pseudo voigt shape.\n * @returns {Float64Array} y values\n */\nexport function getData(options = {}) {\n    let { length, factor = getFactor(), fwhm = 500, height, mu = 0.5 } = options;\n    if (!height) {\n        height =\n            1 /\n                ((mu / Math.sqrt(-GAUSSIAN_EXP_FACTOR / Math.PI)) * fwhm +\n                    ((1 - mu) * fwhm * Math.PI) / 2);\n    }\n    if (!length) {\n        length = Math.min(Math.ceil(fwhm * factor), Math.pow(2, 25) - 1);\n        if (length % 2 === 0)\n            length++;\n    }\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n        data[i] = fct(i - center, fwhm, mu) * height;\n        data[length - 1 - i] = data[i];\n    }\n    return data;\n}\n//# sourceMappingURL=PseudoVoigt.js.map","import { Gaussian } from '../shapes/1d/gaussian/Gaussian';\nimport { Lorentzian } from '../shapes/1d/lorentzian/Lorentzian';\nimport { PseudoVoigt } from '../shapes/1d/pseudoVoigt/PseudoVoigt';\n/**\n * Generate a instance of a specific kind of shape.\n */\nexport function getShape1D(kind, shapeOptions = {}) {\n    switch (kind) {\n        case 'gaussian':\n            return new Gaussian(shapeOptions);\n        case 'lorentzian':\n            return new Lorentzian(shapeOptions);\n        case 'pseudoVoigt':\n            return new PseudoVoigt(shapeOptions);\n        default: {\n            const unHandled = kind;\n            // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n            throw Error(`Unknown distribution ${unHandled}`);\n        }\n    }\n}\n//# sourceMappingURL=getShape1D.js.map","/**\n * Apply Savitzky Golay algorithm\n * @param {array} [ys] Array of y values\n * @param {array|number} [xs] Array of X or deltaX\n * @param {object} [options={}]\n * @param {number} [options.windowSize=9]\n * @param {number} [options.derivative=0]\n * @param {number} [options.polynomial=3]\n * @return {array} Array containing the new ys (same length)\n */\n\nexport default function SavitzkyGolay(ys, xs, options = {}) {\n  let { windowSize = 9, derivative = 0, polynomial = 3 } = options;\n\n  if (windowSize % 2 === 0 || windowSize < 5 || !Number.isInteger(windowSize)) {\n    throw new RangeError(\n      'Invalid window size (should be odd and at least 5 integer number)',\n    );\n  }\n  if (windowSize > ys.length) {\n    throw new RangeError(\n      `Window size is higher than the data length ${windowSize}>${ys.length}`,\n    );\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(\n      '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  }\n\n  let half = Math.floor(windowSize / 2);\n  let np = ys.length;\n  let ans = new Array(np);\n  let weights = fullWeights(windowSize, polynomial, derivative);\n  let hs = 0;\n  let constantH = true;\n  if (Array.isArray(xs)) {\n    constantH = false;\n  } else {\n    hs = Math.pow(xs, derivative);\n  }\n\n  //For the borders\n  for (let i = 0; i < half; i++) {\n    let wg1 = weights[half - i - 1];\n    let 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    } 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\n  //For the internal points\n  let wg = weights[half];\n  for (let i = windowSize; i <= np; i++) {\n    let d = 0;\n    for (let l = 0; l < windowSize; l++) d += wg[l] * ys[l + i - windowSize];\n    if (!constantH) hs = getHs(xs, i - half - 1, half, derivative);\n    ans[i - half - 1] = d / hs;\n  }\n  return ans;\n}\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 Math.pow(hs / count, derivative);\n}\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  } else {\n    if (k === 0 && s === 0) {\n      Grampoly = 1;\n    } else {\n      Grampoly = 0;\n    }\n  }\n  return Grampoly;\n}\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}\n\nfunction Weight(i, t, m, n, s) {\n  let sum = 0;\n  for (let k = 0; k <= n; k++) {\n    //console.log(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/**\n *\n * @param m  Number of points\n * @param n  Polynomial grade\n * @param s  Derivative\n */\nfunction fullWeights(m, n, s) {\n  let weights = new Array(m);\n  let np = Math.floor(m / 2);\n  for (let t = -np; t <= np; t++) {\n    weights[t + np] = new Array(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\n/*function entropy(data,h,options){\n    var trend = SavitzkyGolay(data,h,trendOptions);\n    var copy = new Array(data.length);\n    var sum = 0;\n    var max = 0;\n    for(var i=0;i<data.length;i++){\n        copy[i] = data[i]-trend[i];\n    }\n\n    sum/=data.length;\n    console.log(sum+\" \"+max);\n    console.log(stat.array.standardDeviation(copy));\n    console.log(Math.abs(stat.array.mean(copy))/stat.array.standardDeviation(copy));\n    return sum;\n\n}\n\n\n\nfunction guessWindowSize(data, h){\n    console.log(\"entropy \"+entropy(data,h,trendOptions));\n    return 5;\n}\n*/\n","import { getShape1D } from 'ml-peak-shape-generator';\nimport SG from 'ml-savitzky-golay-generalized';\n\n/**\n * Global spectra deconvolution\n * @param {object} data - Object data with x and y arrays\n * @param {Array<number>} [data.x] - Independent variable\n * @param {Array<number>} [data.y] - Dependent variable\n * @param {object} [options={}] - Options object\n * @param {object} [options.shape={}] - Object that specified the kind of shape to calculate the FWHM instead of width between inflection points. see https://mljs.github.io/peak-shape-generator/#inflectionpointswidthtofwhm\n * @param {object} [options.shape.kind='gaussian']\n * @param {object} [options.shape.options={}]\n * @param {object} [options.sgOptions] - Options object for Savitzky-Golay filter. See https://github.com/mljs/savitzky-golay-generalized#options\n * @param {number} [options.sgOptions.windowSize = 9] - points to use in the approximations\n * @param {number} [options.sgOptions.polynomial = 3] - degree of the polynomial to use in the approximations\n * @param {number} [options.minMaxRatio = 0.00025] - Threshold to determine if a given peak should be considered as a noise\n * @param {number} [options.broadRatio = 0.00] - If `broadRatio` is higher than 0, then all the peaks which second derivative\n * smaller than `broadRatio * maxAbsSecondDerivative` will be marked with the soft mask equal to true.\n * @param {number} [options.noiseLevel = 0] - Noise threshold in spectrum units\n * @param {boolean} [options.maxCriteria = true] - Peaks are local maximum(true) or minimum(false)\n * @param {boolean} [options.smoothY = true] - Select the peak intensities from a smoothed version of the independent variables\n * @param {boolean} [options.realTopDetection = false] - Use a quadratic optimizations with the peak and its 3 closest neighbors\n * to determine the true x,y values of the peak?\n * @param {number} [options.heightFactor = 0] - Factor to multiply the calculated height (usually 2)\n * @param {number} [options.derivativeThreshold = -1] - Filters based on the amplitude of the first derivative\n * @return {Array<object>}\n */\nexport function gsd(data, options = {}) {\n  let {\n    noiseLevel,\n    sgOptions = {\n      windowSize: 9,\n      polynomial: 3,\n    },\n    shape = {},\n    smoothY = true,\n    heightFactor = 0,\n    broadRatio = 0.0,\n    maxCriteria = true,\n    minMaxRatio = 0.00025,\n    derivativeThreshold = -1,\n    realTopDetection = false,\n  } = options;\n\n  let { y: yIn, x } = data;\n\n  const y = yIn.slice();\n  let equalSpaced = isEqualSpaced(x);\n\n  if (maxCriteria === false) {\n    for (let i = 0; i < y.length; i++) {\n      y[i] *= -1;\n    }\n  }\n\n  if (noiseLevel === undefined) {\n    noiseLevel = equalSpaced ? getNoiseLevel(y) : 0;\n  }\n  for (let i = 0; i < y.length; i++) {\n    y[i] -= noiseLevel;\n  }\n  for (let i = 0; i < y.length; i++) {\n    if (y[i] < 0) {\n      y[i] = 0;\n    }\n  }\n  // If the max difference between delta x is less than 5%, then,\n  // we can assume it to be equally spaced variable\n  let yData = y;\n  let dY, ddY;\n  const { windowSize, polynomial } = sgOptions;\n\n  if (equalSpaced) {\n    if (smoothY) {\n      yData = SG(y, x[1] - x[0], {\n        windowSize,\n        polynomial,\n        derivative: 0,\n      });\n    }\n    dY = SG(y, x[1] - x[0], {\n      windowSize,\n      polynomial,\n      derivative: 1,\n    });\n    ddY = SG(y, x[1] - x[0], {\n      windowSize,\n      polynomial,\n      derivative: 2,\n    });\n  } else {\n    if (smoothY) {\n      yData = SG(y, x, {\n        windowSize,\n        polynomial,\n        derivative: 0,\n      });\n    }\n    dY = SG(y, x, {\n      windowSize,\n      polynomial,\n      derivative: 1,\n    });\n    ddY = SG(y, x, {\n      windowSize,\n      polynomial,\n      derivative: 2,\n    });\n  }\n\n  const xData = x;\n  const dX = x[1] - x[0];\n  let maxDdy = 0;\n  let maxY = 0;\n  for (let i = 0; i < yData.length; i++) {\n    if (Math.abs(ddY[i]) > maxDdy) {\n      maxDdy = Math.abs(ddY[i]);\n    }\n    if (Math.abs(yData[i]) > maxY) {\n      maxY = Math.abs(yData[i]);\n    }\n  }\n\n  let lastMax = null;\n  let lastMin = null;\n  let minddY = [];\n  let intervalL = [];\n  let intervalR = [];\n  let broadMask = [];\n\n  // By the intermediate value theorem We cannot find 2 consecutive maximum or minimum\n  for (let i = 1; i < yData.length - 1; ++i) {\n    // filter based on derivativeThreshold\n    if (Math.abs(dY[i]) > derivativeThreshold) {\n      // Minimum in first derivative\n      if (\n        (dY[i] < dY[i - 1] && dY[i] <= dY[i + 1]) ||\n        (dY[i] <= dY[i - 1] && dY[i] < dY[i + 1])\n      ) {\n        lastMin = {\n          x: xData[i],\n          index: i,\n        };\n        if (dX > 0 && lastMax !== null) {\n          intervalL.push(lastMax);\n          intervalR.push(lastMin);\n        }\n      }\n\n      // Maximum in first derivative\n      if (\n        (dY[i] >= dY[i - 1] && dY[i] > dY[i + 1]) ||\n        (dY[i] > dY[i - 1] && dY[i] >= dY[i + 1])\n      ) {\n        lastMax = {\n          x: xData[i],\n          index: i,\n        };\n        if (dX < 0 && lastMin !== null) {\n          intervalL.push(lastMax);\n          intervalR.push(lastMin);\n        }\n      }\n    }\n\n    // Minimum in second derivative\n    if (ddY[i] < ddY[i - 1] && ddY[i] < ddY[i + 1]) {\n      minddY.push(i);\n      broadMask.push(Math.abs(ddY[i]) <= broadRatio * maxDdy);\n    }\n  }\n\n  let widthProcessor = shape.kind\n    ? getShape1D(shape.kind, shape.options).widthToFWHM\n    : (x) => x;\n\n  let signals = [];\n  let lastK = -1;\n  let possible, frequency, distanceJ, minDistance, gettingCloser;\n  for (let j = 0; j < minddY.length; ++j) {\n    frequency = xData[minddY[j]];\n    possible = -1;\n    let k = lastK + 1;\n    minDistance = Number.MAX_VALUE;\n    distanceJ = 0;\n    gettingCloser = true;\n    while (possible === -1 && k < intervalL.length && gettingCloser) {\n      distanceJ = Math.abs(frequency - (intervalL[k].x + intervalR[k].x) / 2);\n\n      // Still getting closer?\n      if (distanceJ < minDistance) {\n        minDistance = distanceJ;\n      } else {\n        gettingCloser = false;\n      }\n      if (distanceJ < Math.abs(intervalL[k].x - intervalR[k].x) / 2) {\n        possible = k;\n        lastK = k;\n      }\n      ++k;\n    }\n\n    if (possible !== -1) {\n      if (Math.abs(yData[minddY[j]]) > minMaxRatio * maxY) {\n        let width = Math.abs(intervalR[possible].x - intervalL[possible].x);\n        signals.push({\n          index: minddY[j],\n          x: frequency,\n          y: maxCriteria\n            ? yData[minddY[j]] + noiseLevel\n            : -yData[minddY[j]] - noiseLevel,\n          width: widthProcessor(width),\n          soft: broadMask[j],\n        });\n\n        signals[signals.length - 1].left = intervalL[possible];\n        signals[signals.length - 1].right = intervalR[possible];\n\n        if (heightFactor) {\n          let yLeft = yData[intervalL[possible].index];\n          let yRight = yData[intervalR[possible].index];\n          signals[signals.length - 1].height =\n            heightFactor *\n            (signals[signals.length - 1].y - (yLeft + yRight) / 2);\n        }\n      }\n    }\n  }\n\n  if (realTopDetection) {\n    determineRealTop(signals, xData, yData);\n  }\n\n  // Correct the values to fit the original spectra data\n  for (let j = 0; j < signals.length; j++) {\n    signals[j].base = noiseLevel;\n  }\n\n  signals.sort((a, b) => {\n    return a.x - b.x;\n  });\n\n  return signals;\n}\n\nconst isEqualSpaced = (x) => {\n  let tmp;\n  let maxDx = 0;\n  let minDx = Number.MAX_SAFE_INTEGER;\n  for (let i = 0; i < x.length - 1; ++i) {\n    tmp = Math.abs(x[i + 1] - x[i]);\n    if (tmp < minDx) {\n      minDx = tmp;\n    }\n    if (tmp > maxDx) {\n      maxDx = tmp;\n    }\n  }\n  return (maxDx - minDx) / maxDx < 0.05;\n};\n\nconst getNoiseLevel = (y) => {\n  let mean = 0;\n\n  let stddev = 0;\n  let length = y.length;\n  for (let i = 0; i < length; ++i) {\n    mean += y[i];\n  }\n  mean /= length;\n  let averageDeviations = new Array(length);\n  for (let i = 0; i < length; ++i) {\n    averageDeviations[i] = Math.abs(y[i] - mean);\n  }\n  averageDeviations.sort((a, b) => a - b);\n  if (length % 2 === 1) {\n    stddev = averageDeviations[(length - 1) / 2] / 0.6745;\n  } else {\n    stddev =\n      (0.5 *\n        (averageDeviations[length / 2] + averageDeviations[length / 2 - 1])) /\n      0.6745;\n  }\n\n  return stddev;\n};\n\nconst determineRealTop = (peakList, x, y) => {\n  let alpha, beta, gamma, p, currentPoint;\n  for (let j = 0; j < peakList.length; j++) {\n    currentPoint = peakList[j].index; // peakList[j][2];\n    // The detected peak could be moved 1 or 2 units to left or right.\n    if (\n      y[currentPoint - 1] >= y[currentPoint - 2] &&\n      y[currentPoint - 1] >= y[currentPoint]\n    ) {\n      currentPoint--;\n    } else {\n      if (\n        y[currentPoint + 1] >= y[currentPoint] &&\n        y[currentPoint + 1] >= y[currentPoint + 2]\n      ) {\n        currentPoint++;\n      } else {\n        if (\n          y[currentPoint - 2] >= y[currentPoint - 3] &&\n          y[currentPoint - 2] >= y[currentPoint - 1]\n        ) {\n          currentPoint -= 2;\n        } else {\n          if (\n            y[currentPoint + 2] >= y[currentPoint + 1] &&\n            y[currentPoint + 2] >= y[currentPoint + 3]\n          ) {\n            currentPoint += 2;\n          }\n        }\n      }\n    }\n    // interpolation to a sin() function\n    if (\n      y[currentPoint - 1] > 0 &&\n      y[currentPoint + 1] > 0 &&\n      y[currentPoint] >= y[currentPoint - 1] &&\n      y[currentPoint] >= y[currentPoint + 1] &&\n      (y[currentPoint] !== y[currentPoint - 1] ||\n        y[currentPoint] !== y[currentPoint + 1])\n    ) {\n      alpha = 20 * Math.log10(y[currentPoint - 1]);\n      beta = 20 * Math.log10(y[currentPoint]);\n      gamma = 20 * Math.log10(y[currentPoint + 1]);\n      p = (0.5 * (alpha - gamma)) / (alpha - 2 * beta + gamma);\n      // console.log(alpha, beta, gamma, `p: ${p}`);\n      // console.log(x[currentPoint]+\" \"+tmp+\" \"+currentPoint);\n      peakList[j].x =\n        x[currentPoint] + (x[currentPoint] - x[currentPoint - 1]) * p;\n      peakList[j].y =\n        y[currentPoint] -\n        0.25 * (y[currentPoint - 1] - y[currentPoint + 1]) * p;\n    }\n  }\n};\n","/*!\n * assign-symbols <https://github.com/jonschlinkert/assign-symbols>\n *\n * Copyright (c) 2015-present, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nconst toString = Object.prototype.toString;\nconst isEnumerable = Object.prototype.propertyIsEnumerable;\nconst getSymbols = Object.getOwnPropertySymbols;\n\nmodule.exports = (target, ...args) => {\n  if (!isObject(target)) {\n    throw new TypeError('expected the first argument to be an object');\n  }\n\n  if (args.length === 0 || typeof Symbol !== 'function' || typeof getSymbols !== 'function') {\n    return target;\n  }\n\n  for (let arg of args) {\n    let names = getSymbols(arg);\n\n    for (let key of names) {\n      if (isEnumerable.call(arg, key)) {\n        target[key] = arg[key];\n      }\n    }\n  }\n  return target;\n};\n\nfunction isObject(val) {\n  return typeof val === 'function' || toString.call(val) === '[object Object]' || Array.isArray(val);\n}\n","/*!\n * assign-deep <https://github.com/jonschlinkert/assign-deep>\n *\n * Copyright (c) 2017-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nconst toString = Object.prototype.toString;\nconst assignSymbols = require('assign-symbols');\n\nconst isValidKey = key => {\n  return key !== '__proto__' && key !== 'constructor' && key !== 'prototype';\n};\n\nconst assign = module.exports = (target, ...args) => {\n  let i = 0;\n  if (isPrimitive(target)) target = args[i++];\n  if (!target) target = {};\n  for (; i < args.length; i++) {\n    if (isObject(args[i])) {\n      for (const key of Object.keys(args[i])) {\n        if (isValidKey(key)) {\n          if (isObject(target[key]) && isObject(args[i][key])) {\n            assign(target[key], args[i][key]);\n          } else {\n            target[key] = args[i][key];\n          }\n        }\n      }\n      assignSymbols(target, args[i]);\n    }\n  }\n  return target;\n};\n\nfunction isObject(val) {\n  return typeof val === 'function' || toString.call(val) === '[object Object]';\n}\n\nfunction isPrimitive(val) {\n  return typeof val === 'object' ? val === null : typeof val !== 'function';\n}\n","export const GAUSSIAN_EXP_FACTOR = -4 * Math.LN2;\nexport const ROOT_PI_OVER_LN2 = Math.sqrt(Math.PI / Math.LN2);\nexport const ROOT_THREE = Math.sqrt(3);\nexport const ROOT_2LN2 = Math.sqrt(2 * Math.LN2);\nexport const ROOT_2LN2_MINUS_ONE = Math.sqrt(2 * Math.LN2) - 1;\n","// https://en.wikipedia.org/wiki/Error_function#Inverse_functions\n// This code yields to a good approximation\n\n// If needed a better implementation using polynomial can be found on https://en.wikipedia.org/wiki/Error_function#Inverse_functions\n\nexport default function erfinv(x) {\n  let a = 0.147;\n  if (x === 0) return 0;\n  let ln1MinusXSqrd = Math.log(1 - x * x);\n  let lnEtcBy2Plus2 = ln1MinusXSqrd / 2 + 2 / (Math.PI * a);\n  let firstSqrt = Math.sqrt(lnEtcBy2Plus2 ** 2 - ln1MinusXSqrd / a);\n  let secondSqrt = Math.sqrt(firstSqrt - lnEtcBy2Plus2);\n  return secondSqrt * (x > 0 ? 1 : -1);\n}\n","import {\n  ROOT_2LN2,\n  GAUSSIAN_EXP_FACTOR,\n  ROOT_PI_OVER_LN2,\n} from '../util/constants';\nimport erfinv from '../util/erfinv';\n\nexport class Gaussian {\n  /**\n   * @param {object} [options = {}]\n   * @param {number} [options.height=4*LN2/(PI*FWHM)] Define the height of the peak, by default area=1 (normalized)\n   * @param {number} [options.fwhm = 500] - Full Width at Half Maximum in the number of points in FWHM.\n   * @param {number} [options.sd] - Standard deviation, if it's defined options.fwhm will be ignored and the value will be computed sd * Math.sqrt(8 * Math.LN2);\n   */\n  constructor(options = {}) {\n    this.fwhm = options.sd\n      ? Gaussian.widthToFWHM(2 * options.sd)\n      : options.fwhm\n      ? options.fwhm\n      : 500;\n    this.height =\n      options.height === undefined\n        ? Math.sqrt(-GAUSSIAN_EXP_FACTOR / Math.PI) / this.fwhm\n        : options.height;\n  }\n  /**\n   * Calculate a gaussian shape\n   * @param {object} [options = {}]\n   * @param {number} [options.factor = 6] - Number of time to take fwhm to calculate length. Default covers 99.99 % of area.\n   * @param {number} [options.length = fwhm * factor + 1] - total number of points to calculate\n   * @return {Float64Array} y values\n   */\n\n  getData(options = {}) {\n    let { length, factor = this.getFactor() } = options;\n\n    if (!length) {\n      length = Math.min(Math.ceil(this.fwhm * factor), Math.pow(2, 25) - 1);\n      if (length % 2 === 0) length++;\n    }\n\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n      data[i] = this.fct(i - center) * this.height;\n      data[length - 1 - i] = data[i];\n    }\n\n    return data;\n  }\n\n  /**\n   * Return a parameterized function of a gaussian shape (see README for equation).\n   * @param {number} x - x value to calculate.\n   * @returns {number} - the y value of gaussian with the current parameters.\n   */\n  fct(x) {\n    return Gaussian.fct(x, this.fwhm);\n  }\n\n  /**\n   * Calculate the number of times FWHM allows to reach a specific area coverage\n   * @param {number} [area=0.9999]\n   * @returns {number}\n   */\n  getFactor(area = 0.9999) {\n    return Gaussian.getFactor(area);\n  }\n\n  /**\n   * Calculate the area of the shape.\n   * @returns {number} - returns the area.\n   */\n\n  getArea() {\n    return Gaussian.getArea(this.fwhm, { height: this.height });\n  }\n\n  /**\n   * Compute the value of Full Width at Half Maximum (FWHM) from the width between the inflection points.\n   * //https://mathworld.wolfram.com/GaussianFunction.html\n   * @param {number} width - Width between the inflection points\n   * @returns {number} fwhm\n   */\n  widthToFWHM(width) {\n    //https://mathworld.wolfram.com/GaussianFunction.html\n    return Gaussian.widthToFWHM(width);\n  }\n\n  /**\n   * Compute the value of width between the inflection points from Full Width at Half Maximum (FWHM).\n   * //https://mathworld.wolfram.com/GaussianFunction.html\n   * @param {number} fwhm - Full Width at Half Maximum.\n   * @returns {number} width\n   */\n  fwhmToWidth(fwhm = this.fwhm) {\n    return Gaussian.fwhmToWidth(fwhm);\n  }\n\n  /**\n   * set a new full width at half maximum\n   * @param {number} fwhm - full width at half maximum\n   */\n  setFWHM(fwhm) {\n    this.fwhm = fwhm;\n  }\n\n  /**\n   * set a new height\n   * @param {number} height - The maximal intensity of the shape.\n   */\n  setHeight(height) {\n    this.height = height;\n  }\n}\n\n/**\n * Return a parameterized function of a gaussian shape (see README for equation).\n * @param {number} x - x value to calculate.\n * @param {number} fwhm - full width half maximum\n * @returns {number} - the y value of gaussian with the current parameters.\n */\nGaussian.fct = function fct(x, fwhm = 500) {\n  return Math.exp(GAUSSIAN_EXP_FACTOR * Math.pow(x / fwhm, 2));\n};\n\n/**\n * Compute the value of Full Width at Half Maximum (FWHM) from the width between the inflection points.\n * //https://mathworld.wolfram.com/GaussianFunction.html\n * @param {number} width - Width between the inflection points\n * @returns {number} fwhm\n */\nGaussian.widthToFWHM = function widthToFWHM(width) {\n  return width * ROOT_2LN2;\n};\n\n/**\n * Compute the value of width between the inflection points from Full Width at Half Maximum (FWHM).\n * //https://mathworld.wolfram.com/GaussianFunction.html\n * @param {number} fwhm - Full Width at Half Maximum.\n * @returns {number} width\n */\nGaussian.fwhmToWidth = function fwhmToWidth(fwhm) {\n  return fwhm / ROOT_2LN2;\n};\n\n/**\n * Calculate the area of a specific shape.\n * @param {number} fwhm - Full width at half maximum.\n * @param {object} [options = {}] - options.\n * @param {number} [options.height = 1] - Maximum y value of the shape.\n * @returns {number} - returns the area of the specific shape and parameters.\n */\n\nGaussian.getArea = function getArea(fwhm, options = {}) {\n  let { height = 1 } = options;\n  return (height * ROOT_PI_OVER_LN2 * fwhm) / 2;\n};\n\n/**\n * Calculate the number of times FWHM allows to reach a specific area coverage.\n * @param {number} [area=0.9999]\n * @returns {number}\n */\nGaussian.getFactor = function getFactor(area = 0.9999) {\n  return Math.sqrt(2) * erfinv(area);\n};\n","import { ROOT_THREE } from '../util/constants';\n\nexport class Lorentzian {\n  /**\n   * @param {object} [options = {}]\n   * @param {number} [options.height=2/(PI*FWHM)] Define the height of the peak, by default area=1 (normalized)\n   * @param {number} [options.fwhm = 500] - Full Width at Half Maximum in the number of points in FWHM.\n   * @param {number} [options.sd] - Standard deviation, if it's defined options.fwhm will be ignored and the value will be computed sd * Math.sqrt(8 * Math.LN2);\n   */\n  constructor(options = {}) {\n    this.fwhm = options.fwhm === undefined ? 500 : options.fwhm;\n    this.height =\n      options.height === undefined ? 2 / Math.PI / this.fwhm : options.height;\n  }\n  /**\n   * Calculate a lorentzian shape\n   * @param {object} [options = {}]\n   * @param {number} [options.factor = Math.tan(Math.PI * (0.9999 - 0.5))] - Number of time to take fwhm to calculate length. Default covers 99.99 % of area.\n   * @param {number} [options.length = fwhm * factor + 1] - total number of points to calculate\n   * @return {Float64Array} y values\n   */\n  getData(options = {}) {\n    let { length, factor = this.getFactor() } = options;\n\n    if (!length) {\n      length = Math.min(Math.ceil(this.fwhm * factor), Math.pow(2, 25) - 1);\n      if (length % 2 === 0) length++;\n    }\n\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n      data[i] = this.fct(i - center) * this.height;\n      data[length - 1 - i] = data[i];\n    }\n    return data;\n  }\n\n  /**\n   * Return a parameterized function of a lorentzian shape (see README for equation).\n   * @param {number} x - x value to calculate.\n   * @returns {number} - the y value of lorentzian with the current parameters.\n   */\n  fct(x) {\n    return Lorentzian.fct(x, this.fwhm);\n  }\n\n  /**\n   * Calculate the number of times FWHM allows to reach a specific area coverage\n   * @param {number} [area=0.9999]\n   * @returns {number}\n   */\n  getFactor(area = 0.9999) {\n    return Lorentzian.getFactor(area);\n  }\n\n  /**\n   * Calculate the area of the shape.\n   * @returns {number} - returns the area.\n   */\n\n  getArea() {\n    return Lorentzian.getArea(this.fwhm, { height: this.height });\n  }\n\n  /**\n   * Compute the value of width between the inflection points of a specific shape from Full Width at Half Maximum (FWHM).\n   * //https://mathworld.wolfram.com/LorentzianFunction.html\n   * @param {number} [fwhm] - Full Width at Half Maximum.\n   * @returns {number} width between the inflection points\n   */\n  fwhmToWidth(fwhm = this.fwhm) {\n    return Lorentzian.fwhmToWidth(fwhm);\n  }\n\n  /**\n   * Compute the value of Full Width at Half Maximum (FWHM) of a specific shape from the width between the inflection points.\n   * //https://mathworld.wolfram.com/LorentzianFunction.html\n   * @param {number} [width] Width between the inflection points\n   * @returns {number} fwhm\n   */\n  widthToFWHM(width) {\n    return Lorentzian.widthToFWHM(width);\n  }\n  /**\n   * set a new full width at half maximum\n   * @param {number} fwhm - full width at half maximum\n   */\n  setFWHM(fwhm) {\n    this.fwhm = fwhm;\n  }\n\n  /**\n   * set a new height\n   * @param {number} height - The maximal intensity of the shape.\n   */\n  setHeight(height) {\n    this.height = height;\n  }\n}\n\n/**\n * Return a parameterized function of a gaussian shape (see README for equation).\n * @param {number} x - x value to calculate.\n * @param {number} fwhm - full width half maximum\n * @returns {number} - the y value of gaussian with the current parameters.\n */\nLorentzian.fct = function fct(x, fwhm) {\n  const squareFWHM = fwhm * fwhm;\n  return squareFWHM / (4 * Math.pow(x, 2) + squareFWHM);\n};\n\n/**\n * Compute the value of width between the inflection points of a specific shape from Full Width at Half Maximum (FWHM).\n * //https://mathworld.wolfram.com/LorentzianFunction.html\n * @param {number} [fwhm] - Full Width at Half Maximum.\n * @returns {number} width between the inflection points\n */\nLorentzian.fwhmToWidth = function fwhmToWidth(fwhm) {\n  return fwhm / ROOT_THREE;\n};\n\n/**\n * Compute the value of Full Width at Half Maximum (FWHM) of a specific shape from the width between the inflection points.\n * //https://mathworld.wolfram.com/LorentzianFunction.html\n * @param {number} [width] Width between the inflection points\n * @returns {number} fwhm\n */\nLorentzian.widthToFWHM = function widthToFWHM(width) {\n  return width * ROOT_THREE;\n};\n\n/**\n * Calculate the area of a specific shape.\n * @param {number} fwhm - Full width at half maximum.\n * @param {*} [options = {}] - options.\n * @param {number} [options.height = 1] - Maximum y value of the shape.\n * @returns {number} - returns the area of the specific shape and parameters.\n */\nLorentzian.getArea = function getArea(fwhm, options = {}) {\n  let { height = 1 } = options;\n\n  return (height * Math.PI * fwhm) / 2;\n};\n\n/**\n * Calculate the number of times FWHM allows to reach a specific area coverage\n * @param {number} [area=0.9999]\n * @returns {number}\n */\nLorentzian.getFactor = function getFactor(area = 0.9999) {\n  return 2 * Math.tan(Math.PI * (area - 0.5));\n};\n","import {\n  GAUSSIAN_EXP_FACTOR,\n  ROOT_2LN2_MINUS_ONE,\n  ROOT_PI_OVER_LN2,\n} from '../util/constants';\n\nimport { Gaussian } from './Gaussian';\nimport { Lorentzian } from './Lorentzian';\n\nexport class PseudoVoigt {\n  /**\n   * @param {object} [options={}]\n   * @param {number} [options.height=1/(mu*FWHM/sqrt(4*LN2/PI)+(1-mu)*fwhm*PI*0.5)] Define the height of the peak, by default area=1 (normalized)\n   * @param {number} [options.fwhm=500] - Full Width at Half Maximum in the number of points in FWHM.\n   * @param {number} [options.mu=0.5] - ratio of gaussian contribution.\n   */\n\n  constructor(options = {}) {\n    this.mu = options.mu === undefined ? 0.5 : options.mu;\n    this.fwhm = options.fwhm === undefined ? 500 : options.fwhm;\n    this.height =\n      options.height === undefined\n        ? 1 /\n          ((this.mu / Math.sqrt(-GAUSSIAN_EXP_FACTOR / Math.PI)) * this.fwhm +\n            ((1 - this.mu) * this.fwhm * Math.PI) / 2)\n        : options.height;\n  }\n\n  /**\n   * Calculate a linear combination of gaussian and lorentzian function width an same full width at half maximum\n   * @param { object } [options = {}]\n   * @param { number } [options.factor = 2 * Math.tan(Math.PI * (0.9999 - 0.5))] - Number of time to take fwhm in the calculation of the length.Default covers 99.99 % of area.\n   * @param { number } [options.length = fwhm * factor + 1] - total number of points to calculate\n   * @return { object } - { fwhm, data<Float64Array>} - An with the number of points at half maximum and the array of y values covering the 99.99 % of the area.\n   */\n\n  getData(options = {}) {\n    let { length, factor = this.getFactor() } = options;\n    if (!length) {\n      length = Math.ceil(this.fwhm * factor);\n      if (length % 2 === 0) length++;\n    }\n\n    const center = (length - 1) / 2;\n\n    let data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n      data[i] = this.fct(i - center) * this.height;\n      data[length - 1 - i] = data[i];\n    }\n\n    return data;\n  }\n\n  /**\n   * Return a parameterized function of a linear combination of Gaussian and Lorentzian shapes where the full width at half maximum are the same for both kind of shapes (see README for equation).\n   * @param {number} [x] x value to calculate.\n   * @returns {number} - the y value of a pseudo voigt with the current parameters.\n   */\n\n  fct(x) {\n    return PseudoVoigt.fct(x, this.fwhm, this.mu);\n  }\n\n  /**\n   * Calculate the number of times FWHM allows to reach a specific area coverage\n   * @param {number} [area=0.9999] - required area to be coverage\n   * @param {number} [mu=this.mu] - ratio of gaussian contribution.\n   * @returns {number}\n   */\n  getFactor(area = 0.9999, mu = this.mu) {\n    return PseudoVoigt.getFactor(area, mu);\n  }\n\n  /**\n   * Calculate the area of the shape.\n   * @returns {number} - returns the area.\n   */\n  getArea() {\n    return PseudoVoigt.getArea(this.fwhm, { height: this.height, mu: this.mu });\n  }\n\n  /**\n   * Compute the value of Full Width at Half Maximum (FMHM) from width between the inflection points.\n   * @param {number} width - width between the inflection points\n   * @param {number} [mu = 0.5] - ratio of gaussian contribution.\n   * @returns {number} Full Width at Half Maximum (FMHM).\n   */\n  widthToFWHM(width, mu) {\n    return PseudoVoigt.widthToFWHM(width, mu);\n  }\n  /**\n   * Compute the value of width between the inflection points from Full Width at Half Maximum (FWHM).\n   * @param {number} fwhm - Full Width at Half Maximum.\n   * @param {number} [mu] - ratio of gaussian contribution.\n   * @returns {number} width between the inflection points.\n   */\n  fwhmToWidth(fwhm = this.fwhm, mu = this.mu) {\n    return PseudoVoigt.fwhmToWidth(fwhm, mu);\n  }\n\n  /**\n   * set a new full width at half maximum\n   * @param {number} fwhm - full width at half maximum\n   */\n  setFWHM(fwhm) {\n    this.fwhm = fwhm;\n  }\n\n  /**\n   * set a new height\n   * @param {number} height - The maximal intensity of the shape.\n   */\n  setHeight(height) {\n    this.height = height;\n  }\n\n  /**\n   * set a new mu\n   * @param {number} mu - ratio of gaussian contribution.\n   */\n  setMu(mu) {\n    this.mu = mu;\n  }\n}\n\n/**\n * Return a parameterized function of a gaussian shape (see README for equation).\n * @param {number} x - x value to calculate.\n * @param {number} fwhm - full width half maximum\n * @param {number} [mu=0.5] - ratio of gaussian contribution.\n * @returns {number} - the y value of gaussian with the current parameters.\n */\nPseudoVoigt.fct = function fct(x, fwhm, mu = 0.5) {\n  return (1 - mu) * Lorentzian.fct(x, fwhm) + mu * Gaussian.fct(x, fwhm);\n};\n\n/**\n * Compute the value of Full Width at Half Maximum (FMHM) from width between the inflection points.\n * @param {number} width - width between the inflection points\n * @param {number} [mu = 0.5] - ratio of gaussian contribution.\n * @returns {number} Full Width at Half Maximum (FMHM).\n */\nPseudoVoigt.widthToFWHM = function widthToFWHM(width, mu = 0.5) {\n  return width * (mu * ROOT_2LN2_MINUS_ONE + 1);\n};\n/**\n * Compute the value of width between the inflection points from Full Width at Half Maximum (FWHM).\n * @param {number} fwhm - Full Width at Half Maximum.\n * @param {number} [mu = 0.5] - ratio of gaussian contribution.\n * @returns {number} width between the inflection points.\n */\nPseudoVoigt.fwhmToWidth = function fwhmToWidth(fwhm, mu = 0.5) {\n  return fwhm / (mu * ROOT_2LN2_MINUS_ONE + 1);\n};\n\n/**\n * Calculate the area of a specific shape.\n * @param {number} fwhm - Full width at half maximum.\n * @param {*} [options = {}] - options.\n * @param {number} [options.height = 1] - Maximum y value of the shape.\n * @param {number} [options.mu = 0.5] - ratio of gaussian contribution.\n * @returns {number} - returns the area of the specific shape and parameters.\n */\nPseudoVoigt.getArea = function getArea(fwhm, options = {}) {\n  let { height = 1, mu = 0.5 } = options;\n  return (fwhm * height * (mu * ROOT_PI_OVER_LN2 + (1 - mu) * Math.PI)) / 2;\n};\n\n/**\n * Calculate the number of times FWHM allows to reach a specific area coverage\n * @param {number} [area=0.9999] - required area to be coverage\n * @param {number} [mu=this.mu] - ratio of gaussian contribution.\n * @returns {number}\n */\nPseudoVoigt.getFactor = function getFactor(area = 0.9999, mu = 0.5) {\n  return mu < 1 ? Lorentzian.getFactor(area) : Gaussian.getFactor(area);\n};\n","import { PseudoVoigt } from 'ml-peak-shape-generator';\n\n/**\n * This function calculates the spectrum as a sum of linear combination of gaussian and lorentzian functions. The pseudo voigt\n * parameters are divided in 4 batches. 1st: centers; 2nd: heights; 3th: widths; 4th: mu's ;\n * @param t Ordinate value\n * @param p Lorentzian parameters\n * @returns {*}\n */\n\nexport function sumOfGaussianLorentzians(p) {\n  return function (t) {\n    let nL = p.length / 4;\n    let result = 0;\n    for (let i = 0; i < nL; i++) {\n      result +=\n        p[i + nL] * PseudoVoigt.fct(t - p[i], p[i + nL * 2], p[i + nL * 3]);\n    }\n    return result;\n  };\n}\n","import { Gaussian } from 'ml-peak-shape-generator';\n/**\n * This function calculates the spectrum as a sum of gaussian functions. The Gaussian\n * parameters are divided in 3 batches. 1st: centers; 2nd: height; 3th: widths;\n * @param t Ordinate values\n * @param p Gaussian parameters\n * @returns {*}\n */\n\nexport function sumOfGaussians(p) {\n  return function (t) {\n    let nL = p.length / 3;\n    let result = 0;\n    for (let i = 0; i < nL; i++) {\n      result += p[i + nL] * Gaussian.fct(t - p[i], p[i + nL * 2]);\n    }\n    return result;\n  };\n}\n","import { Lorentzian } from 'ml-peak-shape-generator';\n\n/**\n * This function calculates the spectrum as a sum of lorentzian functions. The Lorentzian\n * parameters are divided in 3 batches. 1st: centers; 2nd: heights; 3th: widths;\n * @param t Ordinate values\n * @param p Lorentzian parameters\n * @returns {*}\n */\n\nexport function sumOfLorentzians(p) {\n  return function (t) {\n    let nL = p.length / 3;\n    let result = 0;\n    for (let i = 0; i < nL; i++) {\n      result += p[i + nL] * Lorentzian.fct(t - p[i], p[i + nL * 2]);\n    }\n    return result;\n  };\n}\n","import assignDeep from 'assign-deep';\nimport getMaxValue from 'ml-array-max';\n\nimport { sumOfGaussianLorentzians } from './shapes/sumOfGaussianLorentzians';\nimport { sumOfGaussians } from './shapes/sumOfGaussians';\nimport { sumOfLorentzians } from './shapes/sumOfLorentzians';\n\nexport function checkInput(data, peaks, options) {\n  let {\n    shape = { kind: 'gaussian' },\n    optimization = {\n      kind: 'lm',\n    },\n  } = options;\n\n  if (typeof shape.kind !== 'string') {\n    throw new Error('kind should be a string');\n  }\n\n  let kind = shape.kind.toLowerCase().replace(/[^a-z]/g, '');\n\n  let paramsFunc;\n  let defaultParameters;\n  switch (kind) {\n    case 'gaussian':\n      paramsFunc = sumOfGaussians;\n      defaultParameters = {\n        x: {\n          init: (peak) => peak.x,\n          max: (peak) => peak.x + peak.width * 2,\n          min: (peak) => peak.x - peak.width * 2,\n          gradientDifference: (peak) => peak.width * 2e-3,\n        },\n        y: {\n          init: (peak) => peak.y,\n          max: () => 1.5,\n          min: () => 0,\n          gradientDifference: () => 1e-3,\n        },\n        width: {\n          init: (peak) => peak.width,\n          max: (peak) => peak.width * 4,\n          min: (peak) => peak.width * 0.25,\n          gradientDifference: (peak) => peak.width * 2e-3,\n        },\n      };\n      break;\n    case 'lorentzian':\n      paramsFunc = sumOfLorentzians;\n      defaultParameters = {\n        x: {\n          init: (peak) => peak.x,\n          max: (peak) => peak.x + peak.width * 2,\n          min: (peak) => peak.x - peak.width * 2,\n          gradientDifference: (peak) => peak.width * 2e-3,\n        },\n        y: {\n          init: (peak) => peak.y,\n          max: () => 1.5,\n          min: () => 0,\n          gradientDifference: () => 1e-3,\n        },\n        width: {\n          init: (peak) => peak.width,\n          max: (peak) => peak.width * 4,\n          min: (peak) => peak.width * 0.25,\n          gradientDifference: (peak) => peak.width * 2e-3,\n        },\n      };\n      break;\n    case 'pseudovoigt':\n      paramsFunc = sumOfGaussianLorentzians;\n      defaultParameters = {\n        x: {\n          init: (peak) => peak.x,\n          max: (peak) => peak.x + peak.width * 2,\n          min: (peak) => peak.x - peak.width * 2,\n          gradientDifference: (peak) => peak.width * 2e-3,\n        },\n        y: {\n          init: (peak) => peak.y,\n          max: () => 1.5,\n          min: () => 0,\n          gradientDifference: () => 1e-3,\n        },\n        width: {\n          init: (peak) => peak.width,\n          max: (peak) => peak.width * 4,\n          min: (peak) => peak.width * 0.25,\n          gradientDifference: (peak) => peak.width * 2e-3,\n        },\n        mu: {\n          init: (peak) => (peak.mu !== undefined ? peak.mu : 0.5),\n          min: () => 0,\n          max: () => 1,\n          gradientDifference: () => 0.01,\n        },\n      };\n      break;\n    default:\n      throw new Error('kind of shape is not supported');\n  }\n\n  let x = data.x;\n  let maxY = getMaxValue(data.y);\n  let y = new Array(x.length);\n  for (let i = 0; i < x.length; i++) {\n    y[i] = data.y[i] / maxY;\n  }\n\n  for (let i = 0; i < peaks.length; i++) {\n    peaks[i].y /= maxY;\n  }\n\n  let parameters = assignDeep({}, optimization.parameters, defaultParameters);\n\n  for (let key in parameters) {\n    for (let par in parameters[key]) {\n      if (!Array.isArray(parameters[key][par])) {\n        parameters[key][par] = [parameters[key][par]];\n      }\n      if (\n        parameters[key][par].length !== 1 &&\n        parameters[key][par].length !== peaks.length\n      ) {\n        throw new Error(`The length of ${key}-${par} is not correct`);\n      }\n      for (let index = 0; index < parameters[key][par].length; index++) {\n        if (typeof parameters[key][par][index] === 'number') {\n          let value = parameters[key][par][index];\n          parameters[key][par][index] = () => value;\n        }\n      }\n    }\n  }\n\n  optimization.parameters = parameters;\n\n  return {\n    y,\n    x,\n    maxY,\n    peaks,\n    paramsFunc,\n    optimization,\n  };\n}\n","const toString = Object.prototype.toString;\n\nexport default function isAnyArray(object) {\n  return toString.call(object).endsWith('Array]');\n}\n","import isArray from 'is-any-array';\n\nexport default function checkOptions(data, parameterizedFunction, options) {\n  let {\n    timeout,\n    minValues,\n    maxValues,\n    initialValues,\n    weights = 1,\n    damping = 1e-2,\n    dampingStepUp = 11,\n    dampingStepDown = 9,\n    maxIterations = 100,\n    errorTolerance = 1e-7,\n    centralDifference = false,\n    gradientDifference = 10e-2,\n    improvementThreshold = 1e-3,\n  } = options;\n\n  if (damping <= 0) {\n    throw new Error('The damping option must be a positive number');\n  } else if (!data.x || !data.y) {\n    throw new Error('The data parameter must have x and y elements');\n  } else if (\n    !isArray(data.x) ||\n    data.x.length < 2 ||\n    !isArray(data.y) ||\n    data.y.length < 2\n  ) {\n    throw new Error(\n      'The data parameter elements must be an array with more than 2 points',\n    );\n  } else if (data.x.length !== data.y.length) {\n    throw new Error('The data parameter elements must have the same size');\n  }\n\n  let parameters =\n    initialValues || new Array(parameterizedFunction.length).fill(1);\n\n  let nbPoints = data.y.length;\n  let parLen = parameters.length;\n  maxValues = maxValues || new Array(parLen).fill(Number.MAX_SAFE_INTEGER);\n  minValues = minValues || new Array(parLen).fill(Number.MIN_SAFE_INTEGER);\n\n  if (maxValues.length !== minValues.length) {\n    throw new Error('minValues and maxValues must be the same size');\n  }\n\n  if (!isArray(parameters)) {\n    throw new Error('initialValues must be an array');\n  }\n\n  if (typeof gradientDifference === 'number') {\n    gradientDifference = new Array(parameters.length).fill(gradientDifference);\n  } else if (isArray(gradientDifference)) {\n    if (gradientDifference.length !== parLen) {\n      gradientDifference = new Array(parLen).fill(gradientDifference[0]);\n    }\n  } else {\n    throw new Error(\n      'gradientDifference should be a number or array with length equal to the number of parameters',\n    );\n  }\n\n  let filler;\n  if (typeof weights === 'number') {\n    let value = 1 / weights ** 2;\n    filler = () => value;\n  } else if (isArray(weights)) {\n    if (weights.length < data.x.length) {\n      let value = 1 / weights[0] ** 2;\n      filler = () => value;\n    } else {\n      filler = (i) => 1 / weights[i] ** 2;\n    }\n  } else {\n    throw new Error(\n      'weights should be a number or array with length equal to the number of data points',\n    );\n  }\n\n  let checkTimeout;\n  if (timeout !== undefined) {\n    if (typeof timeout !== 'number') {\n      throw new Error('timeout should be a number');\n    }\n    let endTime = Date.now() + timeout * 1000;\n    checkTimeout = () => Date.now() > endTime;\n  } else {\n    checkTimeout = () => false;\n  }\n\n  let weightSquare = new Array(data.x.length);\n  for (let i = 0; i < nbPoints; i++) {\n    weightSquare[i] = filler(i);\n  }\n\n  return {\n    checkTimeout,\n    minValues,\n    maxValues,\n    parameters,\n    weightSquare,\n    damping,\n    dampingStepUp,\n    dampingStepDown,\n    maxIterations,\n    errorTolerance,\n    centralDifference,\n    gradientDifference,\n    improvementThreshold,\n  };\n}\n","/**\n * the sum of the weighted squares of the errors (or weighted residuals) between the data.y\n * and the curve-fit function.\n * @ignore\n * @param {{x:Array<number>, y:Array<number>}} data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param {Array<number>} parameters - Array of current parameter values\n * @param {function} parameterizedFunction - The parameters and returns a function with the independent variable as a parameter\n * @param {Array} weightSquare - Square of weights\n * @return {number}\n */\nexport default function errorCalculation(\n  data,\n  parameters,\n  parameterizedFunction,\n  weightSquare,\n) {\n  let error = 0;\n  const func = parameterizedFunction(parameters);\n  for (let i = 0; i < data.x.length; i++) {\n    error += Math.pow(data.y[i] - func(data.x[i]), 2) / weightSquare[i];\n  }\n\n  return error;\n}\n","import { Matrix } from 'ml-matrix';\n/**\n * Difference of the matrix function over the parameters\n * @ignore\n * @param {{x:Array<number>, y:Array<number>}} data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param {Array<number>} evaluatedData - Array of previous evaluated function values\n * @param {Array<number>} params - Array of previous parameter values\n * @param {number|array} gradientDifference - The step size to approximate the jacobian matrix\n * @param {boolean} centralDifference - If true the jacobian matrix is approximated by central differences otherwise by forward differences\n * @param {function} paramFunction - The parameters and returns a function with the independent variable as a parameter\n * @return {Matrix}\n */\n\nexport default function gradientFunction(\n  data,\n  evaluatedData,\n  params,\n  gradientDifference,\n  paramFunction,\n  centralDifference,\n) {\n  const nbParams = params.length;\n  const nbPoints = data.x.length;\n  let ans = Matrix.zeros(nbParams, nbPoints);\n\n  let rowIndex = 0;\n  for (let param = 0; param < nbParams; param++) {\n    if (gradientDifference[param] === 0) continue;\n    let delta = gradientDifference[param];\n    let auxParams = params.slice();\n    auxParams[param] += delta;\n    let funcParam = paramFunction(auxParams);\n    if (!centralDifference) {\n      for (let point = 0; point < nbPoints; point++) {\n        ans.set(\n          rowIndex,\n          point,\n          (evaluatedData[point] - funcParam(data.x[point])) / delta,\n        );\n      }\n    } else {\n      auxParams = params.slice();\n      auxParams[param] -= delta;\n      delta *= 2;\n      let funcParam2 = paramFunction(auxParams);\n      for (let point = 0; point < nbPoints; point++) {\n        ans.set(\n          rowIndex,\n          point,\n          (funcParam2(data.x[point]) - funcParam(data.x[point])) / delta,\n        );\n      }\n    }\n    rowIndex++;\n  }\n\n  return ans;\n}\n","import { inverse, Matrix } from 'ml-matrix';\n\nimport gradientFunction from './gradientFunction';\n\n/**\n * Matrix function over the samples\n * @ignore\n * @param {{x:Array<number>, y:Array<number>}} data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param {Array<number>} evaluatedData - Array of previous evaluated function values\n * @return {Matrix}\n */\nfunction matrixFunction(data, evaluatedData) {\n  const m = data.x.length;\n\n  let ans = new Matrix(m, 1);\n\n  for (let point = 0; point < m; point++) {\n    ans.set(point, 0, data.y[point] - evaluatedData[point]);\n  }\n  return ans;\n}\n\n/**\n * Iteration for Levenberg-Marquardt\n * @ignore\n * @param {{x:Array<number>, y:Array<number>}} data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param {Array<number>} params - Array of previous parameter values\n * @param {number} damping - Levenberg-Marquardt parameter\n * @param {number|array} gradientDifference - The step size to approximate the jacobian matrix\n * @param {boolean} centralDifference - If true the jacobian matrix is approximated by central differences otherwise by forward differences\n * @param {function} parameterizedFunction - The parameters and returns a function with the independent variable as a parameter\n * @return {Array<number>}\n */\nexport default function step(\n  data,\n  params,\n  damping,\n  gradientDifference,\n  parameterizedFunction,\n  centralDifference,\n  weights,\n) {\n  let value = damping;\n  let identity = Matrix.eye(params.length, params.length, value);\n\n  const func = parameterizedFunction(params);\n\n  let evaluatedData = new Float64Array(data.x.length);\n  for (let i = 0; i < data.x.length; i++) {\n    evaluatedData[i] = func(data.x[i]);\n  }\n\n  let gradientFunc = gradientFunction(\n    data,\n    evaluatedData,\n    params,\n    gradientDifference,\n    parameterizedFunction,\n    centralDifference,\n  );\n  let residualError = matrixFunction(data, evaluatedData);\n\n  let inverseMatrix = inverse(\n    identity.add(\n      gradientFunc.mmul(\n        gradientFunc.transpose().scale('row', { scale: weights }),\n      ),\n    ),\n  );\n\n  let jacobianWeigthResidualError = gradientFunc.mmul(\n    residualError.scale('row', { scale: weights }),\n  );\n\n  let perturbations = inverseMatrix.mmul(jacobianWeigthResidualError);\n\n  return {\n    perturbations,\n    jacobianWeigthResidualError,\n  };\n}\n","import checkOptions from './checkOptions';\nimport errorCalculation from './errorCalculation';\nimport step from './step';\n\n/**\n * Curve fitting algorithm\n * @param {{x:Array<number>, y:Array<number>}} data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param {function} parameterizedFunction - The parameters and returns a function with the independent variable as a parameter\n * @param {object} [options] - Options object\n * @param {number|array} [options.weights = 1] - weighting vector, if the length does not match with the number of data points, the vector is reconstructed with first value.\n * @param {number} [options.damping = 1e-2] - Levenberg-Marquardt parameter, small values of the damping parameter λ result in a Gauss-Newton update and large\nvalues of λ result in a gradient descent update\n * @param {number} [options.dampingStepDown = 9] - factor to reduce the damping (Levenberg-Marquardt parameter) when there is not an improvement when updating parameters.\n * @param {number} [options.dampingStepUp = 11] - factor to increase the damping (Levenberg-Marquardt parameter) when there is an improvement when updating parameters.\n * @param {number} [options.improvementThreshold = 1e-3] - the threshold to define an improvement through an update of parameters\n * @param {number|array} [options.gradientDifference = 10e-2] - The step size to approximate the jacobian matrix\n * @param {boolean} [options.centralDifference = false] - If true the jacobian matrix is approximated by central differences otherwise by forward differences\n * @param {Array<number>} [options.minValues] - Minimum allowed values for parameters\n * @param {Array<number>} [options.maxValues] - Maximum allowed values for parameters\n * @param {Array<number>} [options.initialValues] - Array of initial parameter values\n * @param {number} [options.maxIterations = 100] - Maximum of allowed iterations\n * @param {number} [options.errorTolerance = 10e-3] - Minimum uncertainty allowed for each point.\n * @param {number} [options.timeout] - maximum time running before throw in seconds.\n * @return {{parameterValues: Array<number>, parameterError: number, iterations: number}}\n */\nexport default function levenbergMarquardt(\n  data,\n  parameterizedFunction,\n  options = {},\n) {\n  let {\n    checkTimeout,\n    minValues,\n    maxValues,\n    parameters,\n    weightSquare,\n    damping,\n    dampingStepUp,\n    dampingStepDown,\n    maxIterations,\n    errorTolerance,\n    centralDifference,\n    gradientDifference,\n    improvementThreshold,\n  } = checkOptions(data, parameterizedFunction, options);\n\n  let error = errorCalculation(\n    data,\n    parameters,\n    parameterizedFunction,\n    weightSquare,\n  );\n\n  let converged = error <= errorTolerance;\n\n  let iteration = 0;\n  for (; iteration < maxIterations && !converged; iteration++) {\n    let previousError = error;\n\n    let { perturbations, jacobianWeigthResidualError } = step(\n      data,\n      parameters,\n      damping,\n      gradientDifference,\n      parameterizedFunction,\n      centralDifference,\n      weightSquare,\n    );\n\n    for (let k = 0; k < parameters.length; k++) {\n      parameters[k] = Math.min(\n        Math.max(minValues[k], parameters[k] - perturbations.get(k, 0)),\n        maxValues[k],\n      );\n    }\n\n    error = errorCalculation(\n      data,\n      parameters,\n      parameterizedFunction,\n      weightSquare,\n    );\n\n    if (isNaN(error)) break;\n\n    let improvementMetric =\n      (previousError - error) /\n      perturbations\n        .transpose()\n        .mmul(perturbations.mulS(damping).add(jacobianWeigthResidualError))\n        .get(0, 0);\n\n    if (improvementMetric > improvementThreshold) {\n      damping = Math.max(damping / dampingStepDown, 1e-7);\n    } else {\n      error = previousError;\n      damping = Math.min(damping * dampingStepUp, 1e7);\n    }\n\n    if (checkTimeout()) {\n      throw new Error(\n        `The execution time is over to ${options.timeout} seconds`,\n      );\n    }\n\n    converged = error <= errorTolerance;\n  }\n\n  return {\n    parameterValues: parameters,\n    parameterError: error,\n    iterations: iteration,\n  };\n}\n","import LM from 'ml-levenberg-marquardt';\n\nconst LEVENBERG_MARQUARDT = 1;\n\nexport function selectMethod(optimizationOptions = {}) {\n  let { kind, options } = optimizationOptions;\n  kind = getKind(kind);\n  switch (kind) {\n    case LEVENBERG_MARQUARDT:\n      return {\n        algorithm: LM,\n        optimizationOptions: checkOptions(kind, options),\n      };\n    default:\n      throw new Error(`Unknown kind algorithm`);\n  }\n}\n\nfunction checkOptions(kind, options = {}) {\n  // eslint-disable-next-line default-case\n  switch (kind) {\n    case LEVENBERG_MARQUARDT:\n      return Object.assign({}, lmOptions, options);\n  }\n}\n\nfunction getKind(kind) {\n  if (typeof kind !== 'string') return kind;\n  switch (kind.toLowerCase().replace(/[^a-z]/g, '')) {\n    case 'lm':\n    case 'levenbergmarquardt':\n      return LEVENBERG_MARQUARDT;\n    default:\n      throw new Error(`Unknown kind algorithm`);\n  }\n}\n\nconst lmOptions = {\n  damping: 1.5,\n  maxIterations: 100,\n  errorTolerance: 1e-8,\n};\n","import { checkInput } from './checkInput';\nimport { selectMethod } from './selectMethod';\n\n// const STATE_INIT = 0;\n// const STATE_MIN = 1;\n// const STATE_MAX = 2;\n// const STATE_GRADIENT_DIFFERENCE = 3;\n\n// const X = 0;\n// const Y = 1;\n// const WIDTH = 2;\n// const MU = 3;\n\n// const keys = ['x', 'y', 'width', 'mu'];\n/**\n * Fits a set of points to the sum of a set of bell functions.\n * @param {object} data - An object containing the x and y data to be fitted.\n * @param {array} peaks - A list of initial parameters to be optimized. e.g. coming from a peak picking [{x, y, width}].\n * @param {object} [options = {}]\n * @param {object} [options.shape={}] - it's specify the kind of shape used to fitting.\n * @param {string} [options.shape.kind = 'gaussian'] - kind of shape; lorentzian, gaussian and pseudovoigt are supported.\n * @param {object} [options.optimization = {}] - it's specify the kind and options of the algorithm use to optimize parameters.\n * @param {object} [options.optimization.kind = 'lm'] - kind of algorithm. By default it's levenberg-marquardt.\n * @param {object} [options.optimization.parameters] - options of each parameter to be optimized e.g. For a gaussian shape\n *  it could have x, y and with properties, each of which could contain init, min, max and gradientDifference, those options will define the guess,\n *  the min and max value of the parameter (search space) and the step size to approximate the jacobian matrix respectively. Those options could be a number,\n *  array of numbers, callback, or array of callbacks. Each kind of shape has default parameters so it could be undefined.\n * @param {object} [options.optimization.parameters.x] - options for x parameter.\n * @param {number|callback|array<number|callback>} [options.optimization.parameters.x.init] - definition of the starting point of the parameter (the guess),\n *  if it is a callback the method pass the peak as the unique input, if it is an array the first element define the guess of the first peak and so on.\n * @param {number|callback|array<number|callback>} [options.optimization.parameters.x.min] - definition of the lower limit of the parameter,\n *  if it is a callback the method pass the peak as the unique input, if it is an array the first element define the min of the first peak and so on.\n * @param {number|callback|array<number|callback>} [options.optimization.parameters.x.max] - definition of the upper limit of the parameter,\n *  if it is a callback the method pass the peak as the unique input, if it is an array the first element define the max of the first peak and so on.\n * @param {number|callback|array<number|callback>} [options.optimization.parameters.x.gradientDifference] - definition of  the step size to approximate the jacobian matrix of the parameter,\n *  if it is a callback the method pass the peak as the unique input, if it is an array the first element define the gradientDifference of the first peak and so on.\n * @param {object} [options.optimization.options = {}] - options for the specific kind of algorithm.\n * @param {number} [options.optimization.options.timeout] - maximum time running before break in seconds.\n * @param {number} [options.optimization.options.damping=1.5]\n * @param {number} [options.optimization.options.maxIterations=100]\n * @param {number} [options.optimization.options.errorTolerance=1e-8]\n * @returns {object} - A object with fitting error and the list of optimized parameters { parameters: [ {x, y, width} ], error } if the kind of shape is pseudoVoigt mu parameter is optimized.\n */\nexport function optimize(data, peakList, options = {}) {\n  const { y, x, maxY, peaks, paramsFunc, optimization } = checkInput(\n    data,\n    peakList,\n    options,\n  );\n\n  let parameters = optimization.parameters;\n\n  let nbShapes = peaks.length;\n  let parameterKey = Object.keys(parameters);\n  let nbParams = nbShapes * parameterKey.length;\n  let pMin = new Float64Array(nbParams);\n  let pMax = new Float64Array(nbParams);\n  let pInit = new Float64Array(nbParams);\n  let gradientDifference = new Float64Array(nbParams);\n\n  for (let i = 0; i < nbShapes; i++) {\n    let peak = peaks[i];\n    for (let k = 0; k < parameterKey.length; k++) {\n      let key = parameterKey[k];\n      let init = parameters[key].init;\n      let min = parameters[key].min;\n      let max = parameters[key].max;\n      let gradientDifferenceValue = parameters[key].gradientDifference;\n      pInit[i + k * nbShapes] = init[i % init.length](peak);\n      pMin[i + k * nbShapes] = min[i % min.length](peak);\n      pMax[i + k * nbShapes] = max[i % max.length](peak);\n      gradientDifference[i + k * nbShapes] = gradientDifferenceValue[\n        i % gradientDifferenceValue.length\n      ](peak);\n    }\n  }\n\n  let { algorithm, optimizationOptions } = selectMethod(optimization);\n\n  optimizationOptions.minValues = pMin;\n  optimizationOptions.maxValues = pMax;\n  optimizationOptions.initialValues = pInit;\n  optimizationOptions.gradientDifference = gradientDifference;\n\n  let pFit = algorithm({ x, y }, paramsFunc, optimizationOptions);\n\n  let { parameterError: error, iterations } = pFit;\n  let result = { error, iterations, peaks };\n  for (let i = 0; i < nbShapes; i++) {\n    pFit.parameterValues[i + nbShapes] *= maxY;\n    for (let k = 0; k < parameterKey.length; k++) {\n      // we modify the optimized parameters\n      peaks[i][parameterKey[k]] = pFit.parameterValues[i + k * nbShapes];\n    }\n  }\n\n  return result;\n}\n","/**\n * This function returns an array with absolute values\n * @param {Array<Number>} array\n * @return {Number}\n */\nexport function xAbsolute(array) {\n  let tmpArray = array.slice();\n  for (let i = 0; i < tmpArray.length; i++) {\n    if (tmpArray[i] < 0) tmpArray[i] *= -1;\n  }\n\n  return tmpArray;\n}\n","import median from 'ml-array-median';\n\nimport { xAbsolute } from './xAbsolute';\n/**\n * This function calculates the median after taking the reimAbsolute values of the points\n * @param {Array<Number>} array - the array that will be rotated\n * @return {Number}\n */\nexport function xAbsoluteMedian(array) {\n  return median(xAbsolute(array));\n}\n","/**\n * Returns the closest index of a `target` in an ordered array\n * @param {array<Number>} array\n * @param {number} target\n */\n\nexport function xFindClosestIndex(array, target) {\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    } else if (array[middle] > target) {\n      high = middle;\n    } else {\n      return middle;\n    }\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    } else {\n      return low + 1;\n    }\n  } else {\n    return low;\n  }\n}\n","import { xFindClosestIndex } from './xFindClosestIndex';\n\n/**\n * Returns an object with {fromIndex, toIndex} for a specific from / to\n * @param {array} x\n * @param {object} [options={}]\n * @param {number} [options.from] - First value for xyIntegration in the X scale\n * @param {number} [options.fromIndex=0] - First point for xyIntegration\n * @param {number} [options.to] - Last value for xyIntegration in the X scale\n * @param {number} [options.toIndex=x.length-1] - Last point for xyIntegration\n */\n\nexport function xGetFromToIndex(x, options = {}) {\n  let { fromIndex, toIndex, from, to } = options;\n\n  if (fromIndex === undefined) {\n    if (from !== undefined) {\n      fromIndex = xFindClosestIndex(x, from);\n    } else {\n      fromIndex = 0;\n    }\n  }\n  if (toIndex === undefined) {\n    if (to !== undefined) {\n      toIndex = xFindClosestIndex(x, to);\n    } else {\n      toIndex = x.length - 1;\n    }\n  }\n  if (fromIndex > toIndex) [fromIndex, toIndex] = [toIndex, fromIndex];\n  return { fromIndex, toIndex };\n}\n","/* eslint-disable no-loss-of-precision */\n\n/*\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\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\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\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];\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];\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\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/**\n * Calculates a rational approximation.\n *\n * @private\n * @param {Number} x\n * @param {Number} v\n * @param {Array} P - array of polynomial coefficients\n * @param {Array} Q - array of polynomial coefficients\n * @param {Number} Y\n * @returns {Number} 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/**\n * Evaluates the complementary inverse error function for an input value.\n *\n * @private\n * @param {Number} x - input value\n * @returns {Number} 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\n  // [1] Special cases...\n\n  // NaN:\n  if (Number.isNaN(x)) {\n    return NaN;\n  }\n  // x not on the interval: [0,2]\n  if (x < 0 || x > 2) {\n    throw new RangeError(\n      `erfcinv()::invalid input argument. Value must be on the interval [0,2]. Value: \\`${x}\\`.`,\n    );\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  } 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\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\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\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","export default function rayleighCdf(x, sigma = 1) {\n  if (x < 0) {\n    return 0;\n  }\n  return -Math.expm1(-Math.pow(x, 2) / (2 * Math.pow(sigma, 2)));\n}\n","import fill from 'ml-array-sequential-fill';\nimport SplineInterpolator from 'spline-interpolator';\n\nimport erfcinv from './erfcinv';\nimport rayleighCdf from './rayleighCdf';\n\n/**\n * Determine noise level by san plot methodology (https://doi.org/10.1002/mrc.4882)\n * @param {Array} data - real or magnitude spectra data.\n * @param {object} [options = {}]\n * @param {array} [options.mask] - boolean array to filter data, if the i-th element is true then the i-th element of the distribution will be ignored.\n * @param {number} [options.scaleFactor=1] - factor to scale the data input[i]*=scaleFactor.\n * @param {number} [options.cutOff] - percent of positive signal distribution where the noise level will be determined, if it is not defined the program calculate it.\n * @param {number} [options.factorStd=5] - factor times std to determine what will be marked as signals.\n * @param {boolean} [options.refine=true] - if true the noise level will be recalculated get out the signals using factorStd.\n * @param {boolean} [options.fixOffset=true] - If the baseline is correct, the midpoint of distribution should be zero. if true, the distribution will be centered.\n * @param {number} [options.logBaseY=2] - log scale to apply in the intensity axis in order to avoid big numbers.\n */\n\nexport function xNoiseSanPlot(data, options = {}) {\n  const {\n    mask,\n    cutOff,\n    refine = true,\n    magnitudeMode = false,\n    scaleFactor = 1,\n    factorStd = 5,\n    fixOffset = true,\n  } = options;\n\n  let input;\n  if (Array.isArray(mask) && mask.length === data.length) {\n    input = new Float64Array(data.filter((_e, i) => !mask[i]));\n  } else {\n    input = new Float64Array(data);\n  }\n\n  if (scaleFactor > 1) {\n    for (let i = 0; i < input.length; i++) {\n      input[i] *= scaleFactor;\n    }\n  }\n  input = input.sort().reverse();\n\n  if (fixOffset && !magnitudeMode) {\n    let medianIndex = Math.floor(input.length / 2);\n    let median = 0.5 * (input[medianIndex] + input[medianIndex + 1]);\n    for (let i = 0; i < input.length; i++) {\n      input[i] -= median;\n    }\n  }\n\n  let firstNegativeValueIndex =\n    input[input.length - 1] >= 0 ? input.length : 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\n  let signPositive = input.slice(0, lastPositiveValueIndex + 1);\n  let signNegative = input.slice(firstNegativeValueIndex);\n\n  let cutOffDist = cutOff || determineCutOff(signPositive, { magnitudeMode });\n\n  let pIndex = Math.floor(signPositive.length * cutOffDist);\n  let initialNoiseLevelPositive = signPositive[pIndex];\n\n  let skyPoint = signPositive[0];\n\n  let initialNoiseLevelNegative;\n  if (signNegative.length > 0) {\n    let nIndex = Math.floor(signNegative.length * (1 - cutOffDist));\n    initialNoiseLevelNegative = -1 * signNegative[nIndex];\n  } else {\n    initialNoiseLevelNegative = 0;\n  }\n\n  let noiseLevelPositive = initialNoiseLevelPositive;\n  let noiseLevelNegative = initialNoiseLevelNegative;\n  let cloneSignPositive = signPositive.slice();\n  let cloneSignNegative = signNegative.slice();\n\n  let cutOffSignalsIndexPlus = 0;\n  let cutOffSignalsIndexNeg = 2;\n  if (refine) {\n    let cutOffSignals = noiseLevelPositive * factorStd;\n    cutOffSignalsIndexPlus = signPositive.findIndex((e) => e < cutOffSignals);\n\n    if (cutOffSignalsIndexPlus > -1) {\n      cloneSignPositive = signPositive.slice(cutOffSignalsIndexPlus);\n      noiseLevelPositive =\n        cloneSignPositive[Math.floor(cloneSignPositive.length * cutOffDist)];\n    }\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[\n          Math.floor(cloneSignNegative.length * (1 - cutOffDist))\n        ];\n    }\n  }\n  let correctionFactor = -simpleNormInv(cutOffDist / 2, { magnitudeMode });\n  initialNoiseLevelPositive = initialNoiseLevelPositive / correctionFactor;\n  initialNoiseLevelNegative = initialNoiseLevelNegative / correctionFactor;\n\n  let effectiveCutOffDist, refinedCorrectionFactor;\n\n  if (refine && cutOffSignalsIndexPlus > -1) {\n    effectiveCutOffDist =\n      (cutOffDist * cloneSignPositive.length + cutOffSignalsIndexPlus) /\n      (cloneSignPositive.length + cutOffSignalsIndexPlus);\n    refinedCorrectionFactor =\n      -1 * simpleNormInv(effectiveCutOffDist / 2, { magnitudeMode });\n\n    noiseLevelPositive /= refinedCorrectionFactor;\n\n    if (cutOffSignalsIndexNeg > -1) {\n      effectiveCutOffDist =\n        (cutOffDist * cloneSignNegative.length + cutOffSignalsIndexNeg) /\n        (cloneSignNegative.length + cutOffSignalsIndexNeg);\n      refinedCorrectionFactor =\n        -1 * simpleNormInv(effectiveCutOffDist / 2, { magnitudeMode });\n      if (noiseLevelNegative !== 0) {\n        noiseLevelNegative /= refinedCorrectionFactor;\n      }\n    }\n  } else {\n    noiseLevelPositive /= correctionFactor;\n    noiseLevelNegative /= correctionFactor;\n  }\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\nfunction determineCutOff(signPositive, options = {}) {\n  let {\n    magnitudeMode = false,\n    considerList = { from: 0.5, step: 0.1, to: 0.9 },\n  } = options;\n  //generate a list of values for\n  let cutOff = [];\n  let indexMax = signPositive.length - 1;\n  for (let i = 0.01; i <= 0.99; i += 0.01) {\n    let index = Math.round(indexMax * i);\n    let value =\n      -signPositive[index] / simpleNormInv([i / 2], { magnitudeMode });\n    cutOff.push([i, value]);\n  }\n\n  let minKi = Number.MAX_SAFE_INTEGER;\n  let { from, to, step } = considerList;\n  let delta = step / 2;\n  let whereToCutStat = 0.5;\n  for (let i = from; i <= to; i += step) {\n    let floor = i - delta;\n    let top = i + delta;\n    let elementsOfCutOff = cutOff.filter((e) => e[0] < top && e[0] > floor);\n    let averageValue = elementsOfCutOff.reduce((a, b) => a + Math.abs(b[1]), 0);\n    let kiSqrt = 0;\n    for (let j = 0; j < elementsOfCutOff.length; j++) {\n      kiSqrt += Math.pow(elementsOfCutOff[j][1] - averageValue, 2);\n    }\n\n    if (kiSqrt < minKi) {\n      minKi = kiSqrt;\n      whereToCutStat = i;\n    }\n  }\n\n  return whereToCutStat;\n}\n\nfunction simpleNormInv(data, options = {}) {\n  const { magnitudeMode = false } = options;\n\n  if (!Array.isArray(data)) data = [data];\n\n  let from = 0;\n  let to = 2;\n  let step = 0.01;\n  let xTraining = createArray(from, to, step);\n\n  let result = new Float64Array(data.length);\n  let yTraining = new Float64Array(xTraining.length);\n  if (magnitudeMode) {\n    let factor = 1;\n    for (let i = 0; i < yTraining.length; i++) {\n      let finalInput = xTraining[i] * factor;\n      yTraining[i] = 1 - rayleighCdf(finalInput);\n    }\n    let interp = new SplineInterpolator(xTraining, yTraining);\n    for (let i = 0; i < result.length; i++) {\n      let yValue = 2 * data[i];\n      result[i] = -1 * interp.interpolate(yValue);\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.length === 1 ? result[0] : result;\n}\n\nfunction createArray(from, to, step) {\n  let result = new Array(Math.abs((from - to) / step + 1));\n  for (let i = 0; i < result.length; i++) {\n    result[i] = from + i * step;\n  }\n  return result;\n}\n\nfunction generateSanPlot(array, options = {}) {\n  const { fromTo, logBaseY = 2 } = options;\n\n  let sanplot = {};\n  for (let key in fromTo) {\n    let { 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\nfunction scale(array, options = {}) {\n  const { log10, abs } = Math;\n  const { logBaseY } = options;\n  if (logBaseY) {\n    array = array.slice();\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\n  const xAxis = fill({\n    from: 0,\n    to: array.length - 1,\n    size: array.length,\n  });\n\n  return { x: xAxis, y: array };\n}\n","import isAnyArray from 'is-any-array';\n\n/**\n * Throw an error in no an object of x,y arrays\n * @param {DataXY} [data={}]\n */\nexport function xyCheck(data = {}) {\n  if (!isAnyArray(data.x) || !isAnyArray(data.y)) {\n    throw new Error('Data must be an object of x and y arrays');\n  }\n  if (data.x.length !== data.y.length) {\n    throw new Error('The x and y arrays mush have the same length');\n  }\n}\n","/**\n * Normalize an array of zones:\n * - ensure than from < to\n * - merge overlapping zones\n * @param {Array<Zone>} [zones=[]]\n * @param {object} [options={}]\n * @param {number} [options.from=Number.MIN_VALUE]\n * @param {number} [options.to=Number.MAX_VALUE]\n */\n\nexport function zonesNormalize(zones = [], options = {}) {\n  if (zones.length === 0) return [];\n  zones = JSON.parse(JSON.stringify(zones)).map((zone) =>\n    zone.from > zone.to ? { from: zone.to, to: zone.from } : zone,\n  );\n  let { from = Number.NEGATIVE_INFINITY, to = Number.POSITIVE_INFINITY } =\n    options;\n  if (from > to) {\n    [from, to] = [to, from];\n  }\n\n  zones = zones.sort((a, b) => {\n    if (a.from !== b.from) return a.from - b.from;\n    return a.to - b.to;\n  });\n\n  zones.forEach((zone) => {\n    if (from > zone.from) zone.from = from;\n    if (to < zone.to) zone.to = to;\n  });\n\n  zones = zones.filter((zone) => zone.from <= zone.to);\n  if (zones.length === 0) return [];\n\n  let currentZone = zones[0];\n  let result = [currentZone];\n  for (let zone of zones) {\n    if (zone.from <= currentZone.to) {\n      currentZone.to = zone.to;\n    } else {\n      currentZone = zone;\n      result.push(currentZone);\n    }\n  }\n  return result;\n}\n","import { zonesNormalize } from '../zones/zonesNormalize';\n\nimport { xyCheck } from './xyCheck';\n\n/**\n * xyExtract zones from a XY data\n * @param {DataXY} [data={}] - Object that contains property x (an ordered increasing array) and y (an array)\n * @param {object} [options={}]\n * @param {Array} [options.zones=[]]\n * @return {Array} Array of points\n */\n\nexport function xyExtract(data = {}, options = {}) {\n  xyCheck(data);\n  const { x, y } = data;\n  let { zones } = options;\n\n  zones = zonesNormalize(zones);\n\n  if (!Array.isArray(zones) || zones.length === 0) return data;\n\n  let newX = [];\n  let newY = [];\n\n  let currentZone = zones[0];\n  let position = 0;\n  loop: for (let i = 0; i < x.length; i++) {\n    while (currentZone.to < x[i]) {\n      position++;\n      currentZone = zones[position];\n      if (!currentZone) {\n        i = x.length;\n        break loop;\n      }\n    }\n    if (x[i] >= currentZone.from) {\n      newX.push(x[i]);\n      newY.push(y[i]);\n    }\n  }\n  return { x: newX, y: newY };\n}\n","import { xGetFromToIndex } from '../x/xGetFromToIndex';\n\nimport { xyCheck } from './xyCheck';\n\n/**\n * Calculate integration\n * @param {DataXY} [data={}] - Object that contains property x (an ordered increasing array) and y (an array)\n * @param {object} [options={}]\n * @param {number} [options.from] - First value for xyIntegration in the X scale\n * @param {number} [options.fromIndex=0] - First point for xyIntegration\n * @param {number} [options.to] - Last value for xyIntegration in the X scale\n * @param {number} [options.toIndex=x.length-1] - Last point for xyIntegration\n * @return {number} xyIntegration value on the specified range\n */\n\nexport function xyIntegration(data = {}, options = {}) {\n  xyCheck(data);\n  const { x, y } = data;\n  if (x.length < 2) return 0;\n  const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n  let currentxyIntegration = 0;\n  for (let i = fromIndex; i < toIndex; i++) {\n    currentxyIntegration += ((x[i + 1] - x[i]) * (y[i + 1] + y[i])) / 2;\n  }\n\n  return currentxyIntegration;\n}\n","/**\n * Group peaks based on factor and add group property in peaks\n * @param {array} peakList\n * @param {number} factor\n */\n\nexport function groupPeaks(peakList, factor = 1) {\n  if (peakList.length === 0) return [];\n  let peaks = peakList.sort((a, b) => a.x - b.x);\n\n  let previousPeak = { x: Number.NEGATIVE_INFINITY, width: 1 };\n  let currentGroup = [previousPeak];\n  let groups = [];\n\n  for (let peak of peaks) {\n    if (\n      (peak.x - previousPeak.x) / (peak.width + previousPeak.width) <=\n      factor / 2\n    ) {\n      currentGroup.push(peak);\n    } else {\n      currentGroup = [peak];\n      groups.push(currentGroup);\n    }\n    peak.group = groups.length - 1;\n    previousPeak = peak;\n  }\n\n  return groups;\n}\n","import { optimize } from 'ml-spectra-fitting';\nimport { xGetFromToIndex } from 'ml-spectra-processing';\n\nimport { groupPeaks } from './groupPeaks';\n\n/**\n * Optimize the position (x), max intensity (y), full width at half maximum (width)\n * and the ratio of gaussian contribution (mu) if it's required. It supports three kind of shapes: gaussian, lorentzian and pseudovoigt\n * @param {object} data - An object containing the x and y data to be fitted.\n * @param {Array} peakList - A list of initial parameters to be optimized. e.g. coming from a peak picking [{x, y, width}].\n * @param {object} [options = {}] -\n * @param {number} [options.factorWidth = 1] - times of width to group peaks.\n * @param {number} [options.factorLimits = 2] - times of width to use to optimize peaks\n * @param {object} [options.shape={}] - it's specify the kind of shape used to fitting.\n * @param {string} [options.shape.kind='gaussian'] - kind of shape; lorentzian, gaussian and pseudovoigt are supported.\n * @param {string} [options.shape.options={}] - options depending the kind of shape\n * @param {object} [options.optimization={}] - it's specify the kind and options of the algorithm use to optimize parameters.\n * @param {string} [options.optimization.kind='lm'] - kind of algorithm. By default it's levenberg-marquardt.\n * @param {object} [options.optimization.options={}] - options for the specific kind of algorithm.\n * @param {number} [options.optimization.options.timeout=10] - maximum time running before break in seconds.\n */\n\nexport function optimizePeaks(data, peakList, options = {}) {\n  const {\n    factorWidth = 1,\n    factorLimits = 2,\n    shape = {\n      kind: 'gaussian',\n    },\n    optimization = {\n      kind: 'lm',\n      options: {\n        timeout: 10,\n      },\n    },\n  } = options;\n\n  if (data.x[0] > data.x[1]) {\n    data.x.reverse();\n    data.y.reverse();\n  }\n\n  let groups = groupPeaks(peakList, factorWidth);\n\n  let results = [];\n  for (const peaks of groups) {\n    const firstPeak = peaks[0];\n    const lastPeak = peaks[peaks.length - 1];\n\n    const from = firstPeak.x - firstPeak.width * factorLimits;\n    const to = lastPeak.x + lastPeak.width * factorLimits;\n    const { fromIndex, toIndex } = xGetFromToIndex(data.x, { from, to });\n    // Multiple peaks\n    const currentRange = {\n      x: data.x.slice(fromIndex, toIndex),\n      y: data.y.slice(fromIndex, toIndex),\n    };\n    if (currentRange.x.length > 5) {\n      let { peaks: optimizedPeaks } = optimize(currentRange, peaks, {\n        shape,\n        optimization,\n      });\n      results = results.concat(optimizedPeaks);\n    } else {\n      results = results.concat(peaks);\n    }\n  }\n  return results;\n}\n","import { optimize } from 'ml-spectra-fitting';\n\n/**\n * This function try to join the peaks that seems to belong to a broad signal in a single broad peak.\n * @param {Array} peakList - A list of initial parameters to be optimized. e.g. coming from a peak picking [{x, y, width}].\n * @param {object} [options = {}] - options\n * @param {number} [options.width=0.25] - width limit to join peaks.\n * @param {object} [options.shape={}] - it's specify the kind of shape used to fitting.\n * @param {string} [options.shape.kind = 'gaussian'] - kind of shape; lorentzian, gaussian and pseudovoigt are supported.\n * @param {object} [options.optimization = {}] - it's specify the kind and options of the algorithm use to optimize parameters.\n * @param {string} [options.optimization.kind = 'lm'] - kind of algorithm. By default it's levenberg-marquardt.\n * @param {number} [options.optimization.options.timeout = 10] - maximum time running before break in seconds.\n * @param {object} [options.optimization.options = {}] - options for the specific kind of algorithm.\n */\nexport function joinBroadPeaks(peakList, options = {}) {\n  let {\n    width = 0.25,\n    shape = { kind: 'gaussian' },\n    optimization = { kind: 'lm', timeout: 10 },\n  } = options;\n  let broadLines = [];\n  // Optimize the possible broad lines\n  let max = 0;\n\n  let maxI = 0;\n\n  let count = 1;\n  for (let i = peakList.length - 1; i >= 0; i--) {\n    if (peakList[i].soft) {\n      broadLines.push(peakList.splice(i, 1)[0]);\n    }\n  }\n  // Push a feke peak\n  broadLines.push({ x: Number.MAX_VALUE });\n\n  let candidates = { x: [broadLines[0].x], y: [broadLines[0].y] };\n  let indexes = [0];\n  for (let i = 1; i < broadLines.length; i++) {\n    if (Math.abs(broadLines[i - 1].x - broadLines[i].x) < width) {\n      candidates.x.push(broadLines[i].x);\n      candidates.y.push(broadLines[i].y);\n      if (broadLines[i].y > max) {\n        max = broadLines[i].y;\n        maxI = i;\n      }\n      indexes.push(i);\n      count++;\n    } else {\n      if (count > 2) {\n        let fitted = optimize(\n          candidates,\n          [\n            {\n              x: broadLines[maxI].x,\n              y: max,\n              width: Math.abs(\n                candidates.x[0] - candidates.x[candidates.x.length - 1],\n              ),\n            },\n          ],\n          { shape, optimization },\n        );\n        let { peaks: peak } = fitted;\n        peak[0].index = Math.floor(\n          indexes.reduce((a, b) => a + b, 0) / indexes.length,\n        );\n        peak[0].soft = false;\n        peakList.push(peak[0]);\n      } else {\n        // Put back the candidates to the signals list\n        indexes.forEach((index) => {\n          peakList.push(broadLines[index]);\n        });\n      }\n      candidates = { x: [broadLines[i].x], y: [broadLines[i].y] };\n      indexes = [i];\n      max = broadLines[i].y;\n      maxI = i;\n      count = 1;\n    }\n  }\n  peakList.sort((a, b) => {\n    return a.x - b.x;\n  });\n\n  return peakList;\n}\n","import { gsd, joinBroadPeaks, optimizePeaks } from 'ml-gsd';\nimport {\n  xyExtract,\n  xNoiseSanPlot,\n  xAbsoluteMedian,\n} from 'ml-spectra-processing';\n/**\n * Implementation of the peak picking method described by Cobas in:\n * A new approach to improving automated analysis of proton NMR spectra\n * through Global Spectral Deconvolution (GSD)\n * http://www.spectrosco-pyeurope.com/images/stories/ColumnPDFs/TD_23_1.pdf\n * @param {DataXY} data - Object of kind\n * @param {object} [options={}] - options object with some parameter for GSD.\n * @param {number} [options.minMaxRatio = 0.01] - Threshold to determine if a given peak should be considered as a noise, bases on its relative height compared to the highest peak.\n * @param {number} [options.broadRatio = 0.00025] - If broadRatio is higher than 0, then all the peaks which second derivative smaller than broadRatio * maxAbsSecondDerivative will be marked with the soft mask equal to true.\n * @param {number} [options.broadWidth = 0.25] - Threshold to determine if some peak is candidate to clustering into range.\n * @param {number} [options.thresholdFactor=3] - the factor that multiplies the noise level to set up a threshold to select peaks with respect to the intensity.\n * @param {number} [options.noiseLevel = median(data.y) * (options.thresholdFactor || 3)] - Noise threshold in spectrum y units. Default is three/thresholdFactor times the absolute median of data.y.\n * @param {number} [options.factorWidth = 4] - factor to determine the width at the moment to group the peaks in signals in 'GSD.optimizePeaks' function.\n * @param {object} [options.shape={}] - it's specify the kind of shape used to fitting.\n * @param {string} [options.shape.kind = 'gaussian'] - kind of shape; lorentzian, gaussian and pseudovoigt are supported.\n * @param {object} [options.optimization = {}] - it's specify the kind and options of the algorithm use to optimize parameters.\n * @param {string} [options.optimization.kind = 'lm'] - kind of algorithm. By default it's levenberg-marquardt.\n * @param {object} [options.optimization.options = {}] - options for the specific kind of algorithm.\n * @param {Boolean} [options.smoothY = true] - Select the peak intensities from a smoothed version of the independent variables?\n * @param {Boolean} [options.optimize = true] - if it's true adjust an train of gaussian or lorentzian shapes to spectrum.\n * @return {Array}\n */\n\nexport function xyAutoPeaksPicking(data, options = {}) {\n  const {\n    from,\n    to,\n    noiseLevel,\n    thresholdFactor = 3,\n    minMaxRatio = 0.05,\n    broadRatio = 0.00025,\n    useSanPlot = false,\n    smoothY = true,\n    optimize = false,\n    factorWidth = 4,\n    realTopDetection = true,\n    shape = { kind: 'gaussian' },\n    optimization = { kind: 'lm' },\n    broadWidth = 0.25,\n    lookNegative = false,\n    sgOptions = { windowSize: 9, polynomial: 3 },\n  } = options;\n\n  if (from !== undefined && to !== undefined) {\n    data = xyExtract(data, [{ from, to }]);\n  }\n\n  const cutOff = getCutOff(data.y, { noiseLevel, useSanPlot, thresholdFactor });\n\n  let getPeakOptions = {\n    shape,\n    broadWidth,\n    optimize,\n    factorWidth,\n    sgOptions,\n    minMaxRatio,\n    broadRatio,\n    noiseLevel: cutOff.positive,\n    smoothY,\n    optimization,\n    realTopDetection,\n  };\n\n  let peaks = getPeakList(data, getPeakOptions);\n\n  if (lookNegative) {\n    getPeakOptions.noiseLevel = cutOff.negative;\n    peaks.push(...getNegativePeaks(data, getPeakOptions));\n  }\n\n  return peaks;\n}\n\nfunction getPeakList(data, options) {\n  const {\n    shape,\n    broadWidth,\n    optimize,\n    factorWidth,\n    sgOptions,\n    minMaxRatio,\n    broadRatio,\n    noiseLevel,\n    smoothY,\n    optimization,\n    realTopDetection,\n  } = options;\n\n  let peakList = gsd(data, {\n    sgOptions,\n    minMaxRatio,\n    broadRatio,\n    noiseLevel,\n    smoothY,\n    realTopDetection,\n  });\n\n  if (broadWidth) {\n    peakList = joinBroadPeaks(peakList, {\n      width: broadWidth,\n      shape,\n      optimization,\n    });\n  }\n\n  if (optimize) {\n    peakList = optimizePeaks(data, peakList, {\n      shape,\n      factorWidth,\n      optimization,\n    });\n  }\n\n  return peakList;\n}\n\nfunction getNegativePeaks(data, options) {\n  let { x, y } = data;\n  let negativeDataY = new Float64Array(data.y.length);\n  for (let i = 0; i < negativeDataY.length; i++) {\n    negativeDataY[i] = -1 * y[i];\n  }\n\n  let peakList = getPeakList({ x, y: negativeDataY }, options);\n\n  for (let i = 0; i < peakList.length; i++) {\n    peakList[i].y *= -1;\n  }\n  return peakList;\n}\n\nfunction getCutOff(data, options = {}) {\n  const { noiseLevel, useSanPlot, thresholdFactor } = options;\n\n  const formatResult = (noiseLevel) =>\n    typeof noiseLevel === 'number'\n      ? { positive: noiseLevel, negative: -noiseLevel }\n      : noiseLevel;\n\n  if (noiseLevel) {\n    return formatResult(noiseLevel);\n  } else {\n    return useSanPlot\n      ? xNoiseSanPlot(data, { factorStd: thresholdFactor })\n      : formatResult(xAbsoluteMedian(data) * thresholdFactor);\n  }\n}\n","/*\n * This library implements the J analyser described by Cobas et al in the paper:\n * A two-stage approach to automatic determination of 1H NMR coupling constants\n */\nconst patterns = ['s', 'd', 't', 'q', 'quint', 'h', 'sept', 'o', 'n'];\nlet symRatio = 1.5;\nlet maxErrorIter1 = 2.5; // Hz\nlet maxErrorIter2 = 1; // Hz\nlet jAxisKeys = { jAxis: 'x', intensity: 'intensity' };\n\nexport default {\n  /**\n   * The compilation process implements at the first stage a normalization procedure described by Golotvin et al.\n   * embedding in peak-component-counting method described by Hoyes et al.\n   * @param {object} signal\n   * @private\n   */\n  compilePattern: function (signal, options = {}) {\n    let { jAxisKey = jAxisKeys } = options;\n    signal.multiplicity = 'm';\n    // 1.1 symmetrize\n    // It will add a set of peaks(signal.peaksComp) to the signal that will be used during\n    // the compilation process. The unit of those peaks will be in Hz\n    signal.symRank = symmetrizeChoiseBest(signal, {\n      maxError: maxErrorIter1,\n      iteration: 1,\n      jAxisKey,\n    });\n    signal.asymmetric = true;\n    // Is the signal symmetric?\n    if (signal.symRank >= 0.95 && signal.peaksComp.length < 32) {\n      signal.asymmetric = false;\n      let P1, n2, maxFlagged;\n      let k = 1;\n      let Jc = [];\n\n      // Loop over the possible number of coupling contributing to the multiplet\n      for (let n = 0; n < 9; n++) {\n        // 1.2 Normalize. It makes a deep copy of the peaks before to modify them.\n        let peaks = normalize(signal, n);\n        // signal.peaksCompX = peaks;\n        let validPattern = false; // It will change to true, when we find the good patter\n        // Lets check if the signal could be a singulet.\n        if (peaks.length === 1 && n === 0) {\n          validPattern = true;\n        } else {\n          if (peaks.length <= 1) {\n            continue;\n          }\n        }\n        // 1.3 Establish a range for the Heights Hi [peaks.intensity*0.85,peaks.intensity*1.15];\n        let ranges = getRanges(peaks);\n        n2 = Math.pow(2, n);\n\n        // 1.4 Find a combination of integer heights Hi, one from each Si, that sums to 2^n.\n        let heights = null;\n        let counter = 1;\n        while (\n          !validPattern &&\n          (heights = getNextCombination(ranges, n2)) !== null &&\n          counter < 400\n        ) {\n          // 2.1 Number the components of the multiplet consecutively from 1 to 2n,\n          // starting at peak 1\n          let numbering = new Array(heights.length);\n          k = 1;\n          for (let i = 0; i < heights.length; i++) {\n            numbering[i] = new Array(heights[i]);\n            for (let j = 0; j < heights[i]; j++) {\n              numbering[i][j] = k++;\n            }\n          }\n\n          Jc = []; // The array to store the detected j-coupling\n          // 2.2 Set j = 1; J1 = P2 - P1. Flag components 1 and 2 as accounted for.\n          let j = 1;\n          Jc.push(peaks[1].x - peaks[0].x);\n          P1 = peaks[0].x;\n          numbering[0].splice(0, 1); // Flagged\n          numbering[1].splice(0, 1); // Flagged\n          k = 1;\n          let nFlagged = 2;\n          maxFlagged = Math.pow(2, n) - 1;\n          while (Jc.length < n && nFlagged < maxFlagged && k < peaks.length) {\n            counter += 1;\n            // 4.1. Increment j. Set k to the number of the first unflagged component.\n            j++;\n            while (k < peaks.length && numbering[k].length === 0) {\n              k++;\n            }\n            if (k < peaks.length) {\n              // 4.2 Jj = Pk - P1.\n              Jc.push(peaks[k].x - peaks[0].x);\n              // Flag component k and, for each sum of the...\n              numbering[k].splice(0, 1); // Flageed\n              nFlagged++;\n              // Flag the other components of the multiplet\n              for (let u = 2; u <= j; u++) {\n                let jSum = 0;\n                for (let i = 0; i < u; i++) {\n                  jSum += Jc[i];\n                }\n                for (let i = 1; i < numbering.length; i++) {\n                  // Maybe 0.25 Hz is too much?\n                  if (Math.abs(peaks[i].x - (P1 + jSum)) < 0.25) {\n                    numbering[i].splice(0, 1); // Flageed\n                    nFlagged++;\n                    break;\n                  }\n                }\n              }\n            }\n          }\n          // Calculate the ideal patter by using the extracted j-couplings\n          let pattern = idealPattern(Jc);\n          // Compare the ideal pattern with the proposed intensities.\n          // All the intensities have to match to accept the multiplet\n          validPattern = true;\n          for (let i = 0; i < pattern.length; i++) {\n            if (pattern[i].intensity !== heights[i]) {\n              validPattern = false;\n            }\n          }\n        }\n        // If we found a valid pattern we should inform about the pattern.\n        if (validPattern) {\n          updateSignal(signal, Jc);\n        }\n      }\n    }\n    // Before to return, change the units of peaksComp from Hz to PPM again\n    for (let i = 0; i < signal.peaksComp.length; i++) {\n      signal.peaksComp[i].x /= signal.observe;\n    }\n  },\n};\n\n/**\n * @private\n * update the signal\n * @param {*} signal\n * @param {*} Jc\n */\nfunction updateSignal(signal, Jc) {\n  // Update the limits of the signal\n  let peaks = signal.peaksComp; // Always in Hz\n  let nbPeaks = peaks.length;\n  signal.startX = peaks[0].x / signal.observe - peaks[0].width;\n  signal.stopX =\n    peaks[nbPeaks - 1].x / signal.observe + peaks[nbPeaks - 1].width;\n  signal.integralData.from = peaks[0].x / signal.observe - peaks[0].width * 3;\n  signal.integralData.to =\n    peaks[nbPeaks - 1].x / signal.observe + peaks[nbPeaks - 1].width * 3;\n  // Compile the pattern and format the constant couplings\n  signal.maskPattern = signal.mask2;\n  signal.multiplicity = abstractPattern(signal, Jc);\n  signal.pattern = signal.multiplicity; // Our library depends on this parameter, but it is old\n}\n\n/**\n * Returns the multiplet in the compact format\n * @param {object} signal\n * @param {object} Jc\n * @return {String}\n * @private\n */\nfunction abstractPattern(signal, Jc) {\n  let tol = 0.05;\n  let pattern = '';\n  let cont = 1;\n  let newNmrJs = [];\n\n  if (Jc && Jc.length > 0) {\n    Jc.sort(function (a, b) {\n      return b - a;\n    });\n\n    for (let i = 0; i < Jc.length - 1; i++) {\n      if (Math.abs(Jc[i] - Jc[i + 1]) < tol) {\n        cont++;\n      } else {\n        newNmrJs.push({\n          coupling: Math.abs(Jc[i]),\n          multiplicity: patterns[cont],\n        });\n        pattern += patterns[cont];\n        cont = 1;\n      }\n    }\n    let index = Jc.length - 1;\n    newNmrJs.push({\n      coupling: Math.abs(Jc[index]),\n      multiplicity: patterns[cont],\n    });\n    pattern += patterns[cont];\n    signal.nmrJs = newNmrJs;\n  } else {\n    pattern = 's';\n    if (Math.abs(signal.startX - signal.stopX) * signal.observe > 16) {\n      pattern = 'br s';\n    }\n  }\n  return pattern;\n}\n\n/**\n * This function creates an ideal pattern from the given J-couplings\n * @private\n * @param {Array} Jc\n * @return {*[]}\n * @private\n */\nfunction idealPattern(Jc) {\n  let hsum = Math.pow(2, Jc.length);\n  let pattern = [{ x: 0, intensity: hsum }];\n  // To split the initial height\n  for (let i = 0; i < Jc.length; i++) {\n    for (let j = pattern.length - 1; j >= 0; j--) {\n      pattern.push({\n        x: pattern[j].x + Jc[i] / 2,\n        intensity: pattern[j].intensity / 2,\n      });\n      pattern[j].x = pattern[j].x - Jc[i] / 2;\n      pattern[j].intensity = pattern[j].intensity / 2;\n    }\n  }\n  // To sum the heights in the same positions\n  pattern.sort(function compare(a, b) {\n    return a.x - b.x;\n  });\n  for (let j = pattern.length - 2; j >= 0; j--) {\n    if (Math.abs(pattern[j].x - pattern[j + 1].x) < 0.1) {\n      pattern[j].intensity += pattern[j + 1].intensity;\n      pattern.splice(j + 1, 1);\n    }\n  }\n  return pattern;\n}\n\n/**\n * Find a combination of integer heights Hi, one from each Si, that sums to 2n.\n * @param {object} ranges\n * @param {Number} value\n * @return {*}\n * @private\n */\nfunction getNextCombination(ranges, value) {\n  let half = Math.ceil(ranges.values.length * 0.5);\n  let lng = ranges.values.length;\n  let sum = 0;\n  let ok;\n  while (sum !== value) {\n    // Update the indexes to point at the next possible combination\n    ok = false;\n    while (!ok) {\n      ok = true;\n      ranges.currentIndex[ranges.active]++;\n      if (\n        ranges.currentIndex[ranges.active] >=\n        ranges.values[ranges.active].length\n      ) {\n        // In this case, there is no more possible combinations\n        if (ranges.active + 1 === half) {\n          return null;\n        } else {\n          // If this happens we need to try the next active peak\n          ranges.currentIndex[ranges.active] = 0;\n          ok = false;\n          ranges.active++;\n        }\n      } else {\n        ranges.active = 0;\n      }\n    }\n    // Sum the heights for this combination\n    sum = 0;\n    for (let i = 0; i < half; i++) {\n      sum += ranges.values[i][ranges.currentIndex[i]] * 2;\n    }\n    if (ranges.values.length % 2 !== 0) {\n      sum -= ranges.values[half - 1][ranges.currentIndex[half - 1]];\n    }\n  }\n  // If the sum is equal to the expected value, fill the array to return\n  if (sum === value) {\n    let heights = new Array(lng);\n    for (let i = 0; i < half; i++) {\n      heights[i] = ranges.values[i][ranges.currentIndex[i]];\n      heights[lng - i - 1] = ranges.values[i][ranges.currentIndex[i]];\n    }\n    return heights;\n  }\n  return null;\n}\n\n/**\n * This function generates the possible values that each peak can contribute\n * to the multiplet.\n * @param {Array} peaks Array of objects with peaks information {intensity}\n * @return {{values: Array, currentIndex: Array, active: number}}\n * @private\n */\nfunction getRanges(peaks) {\n  let ranges = new Array(peaks.length);\n  let currentIndex = new Array(peaks.length);\n  let min, max;\n  ranges[0] = [1];\n  ranges[peaks.length - 1] = [1];\n  currentIndex[0] = -1;\n  currentIndex[peaks.length - 1] = 0;\n  for (let i = 1; i < peaks.length - 1; i++) {\n    min = Math.round(peaks[i].intensity * 0.85);\n    max = Math.round(peaks[i].intensity * 1.15);\n    ranges[i] = [];\n    for (let j = min; j <= max; j++) {\n      ranges[i].push(j);\n    }\n    currentIndex[i] = 0;\n  }\n  return { values: ranges, currentIndex: currentIndex, active: 0 };\n}\n/**\n * Performs a symmetrization of the signal by using different aproximations to the center.\n * It will return the result of the symmetrization that removes less peaks from the signal\n * @param {object} signal\n * @param {Number} maxError\n * @param {Number} iteration\n * @return {*}\n * @private\n */\nfunction symmetrizeChoiseBest(signal, options = {}) {\n  let { maxError, iteration, jAxisKey = jAxisKeys } = options;\n  let symRank1 = symmetrize(signal, maxError, iteration, jAxisKey);\n  let tmpPeaks = signal.peaksComp;\n  let tmpMask = signal.mask;\n  let cs = signal.delta1;\n  signal.delta1 =\n    (signal.peaks[0].x + signal.peaks[signal.peaks.length - 1].x) / 2;\n  let symRank2 = symmetrize(signal, maxError, iteration, jAxisKey);\n  if (signal.peaksComp.length > tmpPeaks.length) {\n    return symRank2;\n  } else {\n    signal.delta1 = cs;\n    signal.peaksComp = tmpPeaks;\n    signal.mask = tmpMask;\n    return symRank1;\n  }\n}\n\n/**\n * This function will return a set of symmetric peaks that will\n * be the enter point for the patter compilation process.\n * @param {object} signal\n * @param {Number} maxError\n * @param {Number} iteration\n * @return {Number}\n * @private\n */\nfunction symmetrize(signal, maxError, iteration, key) {\n  let { jAxis, intensity } = key;\n  // Before to symmetrize we need to keep only the peaks that possibly conforms the multiplete\n  let max, min, avg, ratio, avgWidth;\n  let peaks = new Array(signal.peaks.length);\n  // Make a deep copy of the peaks and convert PPM ot HZ\n  for (let i = 0; i < peaks.length; i++) {\n    peaks[i] = {\n      x: signal.peaks[i][jAxis] * signal.observe,\n      intensity: signal.peaks[i][intensity],\n      width: signal.peaks[i].width,\n    };\n  }\n  // Join the peaks that are closer than 0.25 Hz\n  for (let i = peaks.length - 2; i >= 0; i--) {\n    if (Math.abs(peaks[i].x - peaks[i + 1].x) < 0.25) {\n      peaks[i].x =\n        peaks[i].x * peaks[i].intensity +\n        peaks[i + 1].x * peaks[i + 1].intensity;\n      peaks[i].intensity = peaks[i].intensity + peaks[i + 1].intensity;\n      peaks[i].x /= peaks[i].intensity;\n      peaks[i].intensity /= 2;\n      peaks[i].width += peaks[i + 1].width;\n      peaks.splice(i + 1, 1);\n    }\n  }\n  signal.peaksComp = peaks;\n  let nbPeaks = peaks.length;\n  let mask = new Array(nbPeaks);\n  signal.mask = mask;\n  let left = 0;\n  let right = peaks.length - 1;\n  let cs = signal.delta1 * signal.observe;\n  let middle = [(peaks[0].x + peaks[nbPeaks - 1].x) / 2, 1];\n  maxError = error(Math.abs(cs - middle[0]));\n  let heightSum = 0;\n  // We try to symmetrize the extreme peaks. We consider as candidates for symmetricing those which have\n  // ratio smaller than 3\n  for (let i = 0; i < nbPeaks; i++) {\n    mask[i] = true;\n    // heightSum += signal.peaks[i].intensity;\n    heightSum += peaks[i].intensity;\n  }\n\n  while (left <= right) {\n    mask[left] = true;\n    mask[right] = true;\n    if (left === right) {\n      if (nbPeaks > 2 && Math.abs(peaks[left].x - cs) > maxError) {\n        mask[left] = false;\n      }\n    } else {\n      max = Math.max(peaks[left].intensity, peaks[right].intensity);\n      min = Math.min(peaks[left].intensity, peaks[right].intensity);\n      ratio = max / min;\n      if (ratio > symRatio) {\n        if (peaks[left].intensity === min) {\n          mask[left] = false;\n          right++;\n        } else {\n          mask[right] = false;\n          left--;\n        }\n      } else {\n        let diffL = Math.abs(peaks[left].x - cs);\n        let diffR = Math.abs(peaks[right].x - cs);\n\n        if (Math.abs(diffL - diffR) < maxError) {\n          avg = Math.min(peaks[left].intensity, peaks[right].intensity);\n          avgWidth = Math.min(peaks[left].width, peaks[right].width);\n          peaks[left].intensity = peaks[right].intensity = avg;\n          peaks[left].width = peaks[right].width = avgWidth;\n          middle = [\n            middle[0] + (peaks[right].x + peaks[left].x) / 2,\n            middle[1] + 1,\n          ];\n        } else {\n          if (Math.max(diffL, diffR) === diffR) {\n            mask[right] = false;\n            left--;\n          } else {\n            mask[left] = false;\n            right++;\n          }\n        }\n      }\n    }\n    left++;\n    right--;\n    // Only alter cs if it is the first iteration of the sym process.\n    if (iteration === 1) {\n      cs = chemicalShift(peaks, mask);\n      // There is not more available peaks\n      if (isNaN(cs)) {\n        return 0;\n      }\n    }\n    maxError = error(Math.abs(cs - middle[0] / middle[1]));\n  }\n  // To remove the weak peaks and recalculate the cs\n  for (let i = nbPeaks - 1; i >= 0; i--) {\n    if (mask[i] === false) {\n      peaks.splice(i, 1);\n    }\n  }\n  cs = chemicalShift(peaks);\n  if (isNaN(cs)) {\n    return 0;\n  }\n  signal.delta1 = cs / signal.observe;\n  // Now, the peak should be symmetric in heights, but we need to know if it is symmetric in x\n  let symFactor = 0;\n  let weight = 0;\n  if (peaks.length > 1) {\n    for (let i = Math.ceil(peaks.length / 2) - 1; i >= 0; i--) {\n      symFactor +=\n        ((3 +\n          Math.min(\n            Math.abs(peaks[i].x - cs),\n            Math.abs(peaks[peaks.length - 1 - i].x - cs),\n          )) /\n          (3 +\n            Math.max(\n              Math.abs(peaks[i].x - cs),\n              Math.abs(peaks[peaks.length - 1 - i].x - cs),\n            ))) *\n        peaks[i].intensity;\n      weight += peaks[i].intensity;\n    }\n    symFactor /= weight;\n  } else {\n    if (peaks.length === 1) {\n      symFactor = 1;\n    }\n  }\n  let newSumHeights = 0;\n  for (let i = 0; i < peaks.length; i++) {\n    newSumHeights += peaks[i].intensity;\n  }\n  symFactor -= ((heightSum - newSumHeights) / heightSum) * 0.12; // Removed peaks penalty\n  // Sometimes we need a second opinion after the first symmetrization.\n  if (symFactor > 0.8 && symFactor < 0.97 && iteration < 2) {\n    return symmetrize(signal, maxErrorIter2, 2, key);\n  } else {\n    // Center the given pattern at cs and symmetrize x\n    if (peaks.length > 1) {\n      let dxi;\n      for (let i = Math.ceil(peaks.length / 2) - 1; i >= 0; i--) {\n        dxi = (peaks[i].x - peaks[peaks.length - 1 - i].x) / 2.0;\n        peaks[i].x = cs + dxi;\n        peaks[peaks.length - 1 - i].x = cs - dxi;\n      }\n    }\n  }\n  return symFactor;\n}\n/**\n * Error validator\n * @param {Number} value\n * @return {Number}\n * @private\n */\nfunction error(value) {\n  let maxError = value * 2.5;\n  if (maxError < 0.75) {\n    maxError = 0.75;\n  }\n  if (maxError > 3) {\n    maxError = 3;\n  }\n  return maxError;\n}\n/**\n * @private\n * 2 stages normalizarion of the peaks heights to Math.pow(2,n).\n * Creates a new mask with the peaks that could contribute to the multiplete\n * @param {object} signal\n * @param {Number} n\n * @return {*}\n */\nfunction normalize(signal, n) {\n  // Perhaps this is slow\n  let peaks = JSON.parse(JSON.stringify(signal.peaksComp));\n  let norm = 0;\n  let norm2 = 0;\n  for (let i = 0; i < peaks.length; i++) {\n    norm += peaks[i].intensity;\n  }\n  norm = Math.pow(2, n) / norm;\n  signal.mask2 = JSON.parse(JSON.stringify(signal.mask));\n\n  let index = signal.mask2.length - 1;\n  for (let i = peaks.length - 1; i >= 0; i--) {\n    peaks[i].intensity *= norm;\n    while (index >= 0 && signal.mask2[index] === false) {\n      index--;\n    }\n    if (peaks[i].intensity < 0.75) {\n      peaks.splice(i, 1);\n      signal.mask2[index] = false;\n    } else {\n      norm2 += peaks[i].intensity;\n    }\n    index--;\n  }\n  norm2 = Math.pow(2, n) / norm2;\n  for (let i = peaks.length - 1; i >= 0; i--) {\n    peaks[i].intensity *= norm2;\n  }\n  return peaks;\n}\n\n/**\n * @private\n * Calculates the chemical shift as the weighted sum of the peaks\n * @param {Array} peaks\n * @param {Array} mask\n * @return {Number}\n */\nfunction chemicalShift(peaks, mask) {\n  let sum = 0;\n  let cs = 0;\n  let area;\n  if (mask) {\n    for (let i = 0; i < peaks.length; i++) {\n      if (mask[i] === true) {\n        area = getArea(peaks[i]);\n        sum += area;\n        cs += area * peaks[i].x;\n      }\n    }\n  } else {\n    for (let i = 0; i < peaks.length; i++) {\n      area = getArea(peaks[i]);\n      sum += area;\n      cs += area * peaks[i].x;\n    }\n  }\n  return cs / sum;\n}\n\n/**\n * Return the area of a Lorentzian function\n * @param {object} peak - object with peak information\n * @return {Number}\n * @private\n */\nfunction getArea(peak) {\n  return Math.abs(peak.intensity * peak.width * 1.57); // 1.772453851);\n}\n","export function joinRanges(ranges) {\n  ranges.sort((a, b) => a.from - b.from);\n  for (let i = 0; i < ranges.length - 1; i++) {\n    if (ranges[i].to > ranges[i + 1].from) {\n      ranges[i].to = Math.max(ranges[i + 1].to, ranges[i].to);\n      ranges[i].signal = ranges[i].signal.concat(ranges[i + 1].signal);\n      ranges[i].integral += ranges[i + 1].integral;\n      ranges.splice(i + 1, 1);\n      i--;\n    }\n  }\n  return ranges;\n}\n","// import { Ranges } from 'spectra-data-ranges';\nimport { xyIntegration } from 'ml-spectra-processing';\n\nimport jAnalyzer from './util/jAnalyzer';\nimport { joinRanges } from './util/joinRanges';\n\n/**\n * This function clustering peaks and calculate the integral value for each range from the peak list returned from extractPeaks function.\n * @param {Object} data - spectra data\n * @param {Array} peakList - nmr signals\n * @param {Object} [options={}] - options object with some parameter for GSD, detectSignal functions.\n * @param {Number} [options.integrationSum=100] - Number of hydrogens or some number to normalize the integral data. If it's zero return the absolute integral value\n * @param {String} [options.integralType='sum'] - option to chose between approx area with peaks or the sum of the points of given range ('sum', 'peaks')\n * @param {Number} [options.frequencyCluster=16] - distance limit to clustering peaks.\n * @param {Number} [options.clean=0.4] - If exits it remove all the signals with integration < clean value\n * @param {Boolean} [options.compile=true] - If true, the Janalyzer function is run over signals to compile the patterns.\n * @param {Boolean} [options.keepPeaks=false] - If true each signal will contain an array of peaks.\n * @param {String} [options.nucleus='1H'] - Nucleus\n * @param {String} [options.frequency=400] - Observed frequency\n * @returns {Array}\n */\n\nexport function peaksToRanges(data, peakList, options = {}) {\n  let {\n    integrationSum = 100,\n    joinOverlapRanges = true,\n    clean = 0.4,\n    compile = true,\n    integralType = 'sum',\n    frequency = 400,\n    frequencyCluster = 16,\n    keepPeaks = false,\n    nucleus = '1H',\n  } = options;\n\n  let signalOptions = {\n    integrationSum,\n    integralType,\n    frequencyCluster,\n    frequency,\n    nucleus,\n  };\n\n  if (data.x[0] > data.x[1]) {\n    data.x = data.x.reverse();\n    data.y = data.y.reverse();\n  }\n\n  let signals = detectSignals(data, peakList, signalOptions);\n  if (clean) {\n    for (let i = 0; i < signals.length; i++) {\n      if (Math.abs(signals[i].integralData.value) < clean) {\n        signals.splice(i, 1);\n      }\n    }\n  }\n\n  if (compile) {\n    let nHi, sum;\n    for (let i = 0; i < signals.length; i++) {\n      jAnalyzer.compilePattern(signals[i]);\n\n      if (\n        signals[i].maskPattern &&\n        signals[i].multiplicity !== 'm' &&\n        signals[i].multiplicity !== ''\n      ) {\n        // Create a new signal with the removed peaks\n        nHi = 0;\n        sum = 0;\n        let peaksO = [];\n        for (let j = signals[i].maskPattern.length - 1; j >= 0; j--) {\n          sum += computeArea(signals[i].peaks[j]);\n          if (signals[i].maskPattern[j] === false) {\n            let peakR = signals[i].peaks.splice(j, 1)[0];\n            peaksO.push({ x: peakR.x, y: peakR.intensity, width: peakR.width });\n            signals[i].mask.splice(j, 1);\n            signals[i].mask2.splice(j, 1);\n            signals[i].maskPattern.splice(j, 1);\n            signals[i].nbPeaks--;\n            nHi += computeArea(peakR);\n          }\n        }\n        if (peaksO.length > 0) {\n          nHi = (nHi * signals[i].integralData.value) / sum;\n          signals[i].integralData.value -= nHi;\n          let peaks1 = [];\n          for (let j = peaksO.length - 1; j >= 0; j--) {\n            peaks1.push(peaksO[j]);\n          }\n          signalOptions.integrationSum = Math.abs(nHi);\n          let ranges = detectSignals(data, peaks1, signalOptions);\n\n          for (let j = 0; j < ranges.length; j++) {\n            signals.push(ranges[j]);\n          }\n        }\n      }\n    }\n    // it was a updateIntegrals function.\n    let sumIntegral = 0;\n    let sumObserved = 0;\n    for (let i = 0; i < signals.length; i++) {\n      sumObserved += Math.abs(Math.round(signals[i].integralData.value));\n    }\n    if (sumObserved !== integrationSum) {\n      sumIntegral = integrationSum / sumObserved;\n      for (let i = 0; i < signals.length; i++) {\n        signals[i].integralData.value *= sumIntegral;\n      }\n    }\n  }\n\n  signals.sort((a, b) => {\n    return b.delta1 - a.delta1;\n  });\n\n  if (clean) {\n    for (let i = signals.length - 1; i >= 0; i--) {\n      if (Math.abs(signals[i].integralData.value) < clean) {\n        signals.splice(i, 1);\n      }\n    }\n  }\n\n  let ranges = []; //new Array(signals.length);\n  for (let i = 0; i < signals.length; i++) {\n    let signal = signals[i];\n    ranges[i] = {\n      from: signal.integralData.from,\n      to: signal.integralData.to,\n      integral: signal.integralData.value,\n      signal: [\n        {\n          kind: signal.kind || 'signal',\n          multiplicity: signal.multiplicity,\n        },\n      ],\n    };\n    if (keepPeaks) {\n      ranges[i].signal[0].peak = signal.peaks;\n    }\n    if (signal.nmrJs) {\n      ranges[i].signal[0].j = signal.nmrJs;\n    }\n    if (!signal.asymmetric || signal.multiplicity === 'm') {\n      ranges[i].signal[0].delta = signal.delta1;\n    }\n  }\n\n  if (joinOverlapRanges) ranges = joinRanges(ranges);\n  // return new Ranges(ranges);\n  return ranges;\n}\n\n/**\n * Extract the signals from the peakList and the given spectrum.\n * @param {object} data - spectra data\n * @param {array} peakList - nmr signals\n * @param {object} [options = {}]\n * @param {number} [options.integrationSum='100'] - Number of hydrogens or some number to normalize the integration data, If it's zero return the absolute integral value\n * @param {string} [options.integralType='sum'] - option to chose between approx area with peaks or the sum of the points of given range\n * @param {number} [options.frequencyCluster=16] - distance limit to clustering the peaks.\n * range = frequencyCluster / observeFrequency -> Peaks withing this range are considered to belongs to the same signal1D\n * @param {string} [options.nucleus='1H'] - - Nucleus\n * @param {String} [options.frequency = 400] - Observed frequency\n * @return {array} nmr signals\n * @private\n */\nfunction detectSignals(data, peakList, options = {}) {\n  let {\n    integrationSum = 100,\n    integralType = 'sum',\n    frequencyCluster = 16,\n    frequency = 400,\n    nucleus = '1H',\n  } = options;\n\n  let signal1D, peaks;\n  let signals = [];\n  let prevPeak = { x: 100000 };\n  let spectrumIntegral = 0;\n  frequencyCluster /= frequency;\n  for (let i = 0; i < peakList.length; i++) {\n    if (Math.abs(peakList[i].x - prevPeak.x) > frequencyCluster) {\n      signal1D = {\n        nbPeaks: 1,\n        units: 'PPM',\n        startX: peakList[i].x - peakList[i].width,\n        stopX: peakList[i].x + peakList[i].width,\n        multiplicity: '',\n        pattern: '',\n        observe: frequency,\n        nucleus,\n        integralData: {\n          from: peakList[i].x - peakList[i].width * 3,\n          to: peakList[i].x + peakList[i].width * 3,\n        },\n        peaks: [\n          {\n            x: peakList[i].x,\n            intensity: peakList[i].y,\n            width: peakList[i].width,\n          },\n        ],\n      };\n      if (peakList[i].kind) signal1D.kind = peakList[i].kind;\n      signals.push(signal1D);\n    } else {\n      let tmp = peakList[i].x + peakList[i].width;\n      signal1D.stopX = Math.max(signal1D.stopX, tmp);\n      signal1D.startX = Math.min(signal1D.startX, tmp);\n      signal1D.nbPeaks++;\n      signal1D.peaks.push({\n        x: peakList[i].x,\n        intensity: peakList[i].y,\n        width: peakList[i].width,\n      });\n      signal1D.integralData.from = Math.min(\n        signal1D.integralData.from,\n        peakList[i].x - peakList[i].width * 3,\n      );\n      signal1D.integralData.to = Math.max(\n        signal1D.integralData.to,\n        peakList[i].x + peakList[i].width * 3,\n      );\n      if (peakList[i].kind) signal1D.kind = peakList[i].kind;\n    }\n    prevPeak = peakList[i];\n  }\n\n  for (let i = 0; i < signals.length; i++) {\n    peaks = signals[i].peaks;\n    let integral = signals[i].integralData;\n    let chemicalShift = 0;\n    let integralPeaks = 0;\n\n    for (let j = 0; j < peaks.length; j++) {\n      let area = computeArea(peaks[j]);\n      chemicalShift += peaks[j].x * area;\n      integralPeaks += area;\n    }\n    signals[i].delta1 = chemicalShift / integralPeaks;\n\n    if (integralType === 'sum') {\n      integral.value = xyIntegration(data, {\n        from: integral.from,\n        to: integral.to,\n      });\n    } else {\n      integral.value = integralPeaks;\n    }\n    spectrumIntegral += integral.value;\n  }\n\n  if (integrationSum > 0) {\n    let integralFactor = integrationSum / spectrumIntegral;\n    for (let i = 0; i < signals.length; i++) {\n      let integral = signals[i].integralData;\n      integral.value *= integralFactor;\n    }\n  }\n\n  return signals;\n}\n\n/**\n * Return the area of a Lorentzian function\n * @param {object} peak - object with peak information\n * @return {Number}\n * @private\n */\nfunction computeArea(peak) {\n  return Math.abs(peak.intensity * peak.width * 1.57); // todo add an option with this value: 1.772453851\n}\n","import { peaksFilterImpurities } from '../peaks/peaksFilterImpurities';\nimport { peaksToRanges } from '../peaks/peaksToRanges';\n\nimport { xyAutoPeaksPicking } from './xyAutoPeaksPicking';\n\n/**\n * Detect peaks, optimize parameters and compile multiplicity if required.\n * @param {DataXY}  data - Object of kind\n * @param {object}  [options={}] - options object with some parameter for GSD.\n * @param {object}  [options.peakPicking={}] - options to peak detection and optimization.\n * @param {number}  [options.peakPicking.minMaxRatio=0.01] - Threshold to determine if a given peak should be considered as a noise, bases on its relative height compared to the highest peak.\n * @param {number}  [options.peakPicking.broadRatio=0.00025] - If broadRatio is higher than 0, then all the peaks which second derivative smaller than broadRatio * maxAbsSecondDerivative will be marked with the soft mask equal to true.\n * @param {number}  [options.peakPicking.broadWidth=0.25] - Threshold to determine if some peak is candidate to clustering into range.\n * @param {number}  [options.peakPicking.noiseLevel=median(data.y) * (options.thresholdFactor || 3)] - Noise threshold in spectrum y units. Default is three/thresholdFactor times the absolute median of data.y.\n * @param {number}  [options.peakPicking.factorWidth=4] - factor to determine the width at the moment to group the peaks in signals in 'GSD.optimizePeaks' function.\n * @param {object}  [options.peakPicking.shape={}] - it's specify the kind of shape used to fitting.\n * @param {string}  [options.peakPicking.shape.kind='gaussian'] - kind of shape; lorentzian, gaussian and pseudovoigt are supported.\n * @param {object}  [options.peakPicking.optimization={}] - it's specify the kind and options of the algorithm use to optimize parameters.\n * @param {string}  [options.peakPicking.optimization.kind='lm'] - kind of algorithm. By default it's levenberg-marquardt.\n * @param {object}  [options.peakPicking.optimization.options={}] - options for the specific kind of algorithm.\n * @param {Boolean} [options.peakPicking.compile=true] - If true, the Janalyzer function is run over signals to compile the patterns.\n * @param {Boolean} [options.peakPicking.smoothY=true] - Select the peak intensities from a smoothed version of the independent variables?\n * @param {Boolean} [options.peakPicking.optimize=true] - if it's true adjust an train of gaussian or lorentzian shapes to spectrum.\n * @param {Boolean} [options.peakPicking.optimize=true] - if it's true adjust an train of gaussian or lorentzian shapes to spectrum.\n * @param {Number}  [options.ranges.integrationSum=100] - Number of hydrogens or some number to normalize the integral data. If it's zero return the absolute integral value\n * @param {String}  [options.ranges.integralType='sum'] - option to chose between approx area with peaks or the sum of the points of given range ('sum', 'peaks')\n * @param {Number}  [options.ranges.frequencyCluster=16] - distance limit to clustering peaks.\n * @param {Number}  [options.ranges.clean=0.4] - If exits it remove all the signals with integration < clean value\n * @param {Boolean} [options.ranges.compile=true] - If true, the Janalyzer function is run over signals to compile the patterns.\n * @param {Boolean} [options.ranges.keepPeaks=false] - If true each signal will contain an array of peaks.\n * @param {String}  [options.ranges.nucleus='1H'] - Nucleus\n * @param {String}  [options.ranges.frequency=400] - Observed frequency\n * @param {object}  [options.impurities={}] - impurities options.\n * @param {string}  [options.impurities.solvent=''] - solvent name.\n * @param {string}  [options.impurities.error=0.025] - tolerance in ppm to assign a impurity.\n * @returns {array} - Array of ranges with {from, to, integral, signals: [{delta, j, multiplicity, peaks}]}\n */\n\nexport function xyAutoRangesPicking(data, options = {}) {\n  let peaks = xyAutoPeaksPicking(data, options.peakPicking);\n  peaks = peaksFilterImpurities(peaks, options.impurities);\n  return peaksToRanges(data, peaks, options.ranges);\n}\n","/**\n * Returns a list of likely nuclei based on an experiment string\n * This is really an hypothesis and should not be used\n * @param {string} experiment\n * @return {string[]}\n */\n\nexport function getNucleusFrom2DExperiment(experiment) {\n  if (typeof experiment !== 'string') {\n    return [];\n  }\n  experiment = experiment.toLowerCase();\n  if (experiment.includes('jres')) {\n    return ['1H'];\n  }\n  if (experiment.includes('hmbc') || experiment.includes('hsqc')) {\n    return ['1H', '13C'];\n  }\n  return ['1H', '1H'];\n}\n","/**\n * Returns an experiment string based on a pulse sequence\n * @param {string} pulse\n * @return {string}\n */\nexport function getSpectrumType(meta = {}, info = {}) {\n  if (meta === null) meta = {};\n  if (typeof meta === 'string') {\n    meta = { pulse: meta };\n  }\n\n  let spectyp;\n  if (Array.isArray(info.$SPECTYP)) {\n    spectyp = (info.$SPECTYP[0] || '').replace(/^<(.*)>$/, '$1').toLowerCase();\n  } else {\n    spectyp = (info.$SPECTYP || '').replace(/^<(.*)>$/, '$1').toLowerCase();\n  }\n\n  if (spectyp) return spectyp;\n\n  let pulse = meta.pulse;\n  if (typeof pulse !== 'string') {\n    return '';\n  }\n\n  pulse = pulse.toLowerCase();\n  if (pulse.includes('zg')) {\n    return '1d';\n  }\n\n  if (\n    pulse.includes('hsqct') ||\n    (pulse.includes('invi') && (pulse.includes('ml') || pulse.includes('di')))\n  ) {\n    return 'hsqctocsy';\n  }\n\n  if (pulse.includes('hsqc') || pulse.includes('invi')) {\n    return 'hsqc';\n  }\n\n  if (\n    pulse.includes('hmbc') ||\n    (pulse.includes('inv4') && pulse.includes('lp'))\n  ) {\n    return 'hmbc';\n  }\n\n  if (pulse.includes('cosy')) {\n    return 'cosy';\n  }\n\n  if (pulse.includes('jres')) {\n    return 'jres';\n  }\n\n  if (\n    pulse.includes('tocsy') ||\n    pulse.includes('mlev') ||\n    pulse.includes('dipsi')\n  ) {\n    return 'tocsy';\n  }\n\n  if (pulse.includes('noesy')) {\n    return 'noesy';\n  }\n\n  if (pulse.includes('roesy')) {\n    return 'roesy';\n  }\n\n  if (pulse.includes('dept')) {\n    return 'dept';\n  }\n\n  if (pulse.includes('jmod') || pulse.includes('apt')) {\n    return 'aptjmod';\n  }\n\n  return '';\n}\n","import { getNucleusFrom2DExperiment } from './getNucleusFrom2DExperiment';\nimport { getSpectrumType } from './getSpectrumType';\n\nexport function getMetaData(info, meta) {\n  const metadata = {\n    dimension: 1,\n    nucleus: [],\n    isFid: false,\n    isFt: false,\n    isComplex: false,\n  };\n\n  maybeAdd(metadata, 'title', info.TITLE);\n  maybeAdd(metadata, 'solvent', info['.SOLVENTNAME']);\n  maybeAdd(\n    metadata,\n    'pulse',\n    info['.PULSESEQUENCE'] || info['.PULPROG'] || meta.PULPROG,\n  );\n  maybeAdd(metadata, 'experiment', getSpectrumType(metadata, info));\n  maybeAdd(metadata, 'temperature', parseFloat(meta.TE || info['.TE']));\n  maybeAdd(metadata, 'frequency', parseFloat(info['.OBSERVEFREQUENCY']));\n  maybeAdd(metadata, 'type', info.DATATYPE);\n  maybeAdd(metadata, 'probe', meta.PROBHD);\n  if (meta.FNTYPE !== undefined) {\n    maybeAdd(metadata, 'acquisitionMode', parseInt(meta.FNTYPE, 10));\n  }\n  maybeAdd(metadata, 'expno', parseInt(meta.EXPNO, 10));\n  if (metadata.type) {\n    if (metadata.type.toUpperCase().indexOf('FID') >= 0) {\n      metadata.isFid = true;\n    } else if (metadata.type.toUpperCase().indexOf('SPECTRUM') >= 0) {\n      metadata.isFt = true;\n    }\n  }\n\n  if (info['.NUCLEUS']) {\n    metadata.nucleus = info['.NUCLEUS'].split(',').map((nuc) => nuc.trim());\n  } else if (info['.OBSERVENUCLEUS']) {\n    metadata.nucleus = [info['.OBSERVENUCLEUS'].replace(/[^A-Za-z0-9]/g, '')];\n  } else {\n    metadata.nucleus = getNucleusFrom2DExperiment(metadata.experiment);\n  }\n\n  metadata.dimension = metadata.nucleus.length;\n\n  if (info.SYMBOL) {\n    let symbols = info.SYMBOL.split(/[, ]+/);\n    if (symbols.includes('R') && symbols.includes('I')) {\n      metadata.isComplex = true;\n    }\n  }\n\n  if (meta.DATE) {\n    metadata.date = new Date(meta.DATE * 1000).toISOString();\n  }\n  return metadata;\n}\n\nfunction maybeAdd(obj, name, value) {\n  if (value !== undefined) {\n    if (typeof value === 'string') {\n      if (value.startsWith('<') && value.endsWith('>')) {\n        value = value.substring(1, value.length - 2);\n      }\n      obj[name] = value.trim();\n    } else {\n      obj[name] = value;\n    }\n  }\n}\n","import { convert } from 'jcampconverter';\nimport { xyAutoRangesPicking } from 'nmr-processing';\n\nimport { getMetaData } from './getMetaData';\n\nexport const fromInfo = getMetaData;\n\n/**\n * Object containing parsed metadata\n * @name NMRMetadata\n * @typedef {object} NMRMetadata\n * @property {number} dimension\n * @property {number[]} nucleus\n * @property {string} title\n * @property {string} solvent\n * @property {string} pulse\n * @property {string} experiment\n * @property {number} temperature - Temperature in Kelvin\n * @property {number} frequency\n * @property {string} probe\n * @property {string} acquisitionMode\n * @property {number} expno - Experience number\n * @property {string} date - Date in ISO string format\n * @property {object} ranges\n */\n\nconst defaultOptions = {\n  computeRanges: false,\n};\n\nconst defaultRangesOptions = {\n  integrationSum: 100,\n  clean: 0.4,\n  compile: true,\n  integralType: 'sum',\n};\n\nconst defaultPeaksOptions = {\n  thresholdFactor: 0.85,\n};\n\n/**\n * Returns a metadata object from JCAMP\n * @param {string} jcampData\n * @param {object} [options={}]\n * @param {boolean} [options.computeRanges=false]\n * @param {number} [options.ranges] - options for ranges computation\n * @return {NMRMetadata} metadata\n */\nexport function fromJcamp(jcampData, options = {}) {\n  options = {\n    ...defaultOptions,\n    ...options,\n  };\n\n  const parsedJcamp = convert(jcampData, {\n    keepRecordsRegExp: /.*/,\n    canonicMetadataLabels: true,\n    withoutXY: false,\n  }).flatten[0];\n\n  let metadata = getMetaData(parsedJcamp.info, parsedJcamp.meta);\n\n  if (\n    options.computeRanges &&\n    metadata.isFt &&\n    metadata.dimension === 1 &&\n    metadata.nucleus[0] === '1H'\n  ) {\n    let { ranges = {}, impurities = {}, peakPicking = {} } = options;\n\n    const rangesOptions = { ...defaultRangesOptions, ...ranges };\n    const peaksOptions = { ...defaultPeaksOptions, ...peakPicking };\n\n    if (metadata.solvent) {\n      impurities.solvent = metadata.solvent;\n    }\n\n    metadata.range = xyAutoRangesPicking(parsedJcamp.spectra[0].data, {\n      impurities,\n      ranges: rangesOptions,\n      peakPicking: peaksOptions,\n    });\n  }\n\n  return metadata;\n}\n\nexport { getSpectrumType } from './getSpectrumType';\n","import { fromJcamp } from 'nmr-metadata';\n\nimport common from '../common';\n\nconst isFid = /[^a-z]fid[^a-z]/i;\nconst replaceFid = /[^a-z]fid[^a-z]?/i;\nexport default {\n  find: (nmr, filename) => {\n    let reference = getReference(filename);\n\n    return nmr.find((nmr) => {\n      return getReference(common.getFilename(nmr)) === reference;\n    });\n  },\n\n  getProperty: (filename) => {\n    const extension = common.getExtension(filename);\n    if (extension === 'jdx' || extension === 'dx' || extension === 'jcamp') {\n      if (isFid.test(filename)) {\n        return 'jcampFID';\n      }\n    }\n    return common.getTargetProperty(filename);\n  },\n\n  process: (filename, content) => {\n    const extension = common.getExtension(filename);\n    let metaData = {};\n    if (extension === 'jdx' || extension === 'dx' || extension === 'jcamp') {\n      let textContent = common.getTextContent(content);\n      metaData = fromJcamp(textContent);\n    }\n    return metaData;\n  },\n\n  jpath: ['spectra', 'nmr'],\n};\n\nconst reg2 = /(.*)\\.(.*)/;\n\nfunction getReference(filename) {\n  if (typeof filename === 'undefined') return undefined;\n\n  let reference = common.getBasename(filename);\n  reference = reference.replace(reg2, '$1');\n\n  if (isFid.test(filename)) {\n    reference = reference.replace(replaceFid, '');\n  }\n  return reference;\n}\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'oan'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'pelletHardness'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","export default {\n  jpath: ['physical'],\n  getEmpty() {\n    return {};\n  },\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'raman'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","export default {\n  jpath: ['stock'],\n  getEmpty() {\n    return {};\n  },\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'thermogravimetricAnalysis'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'uv'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['video'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'voidVolume'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'xps'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'xray'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'xrd'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","import common from '../common';\n\nexport default {\n  jpath: ['spectra', 'xrf'],\n  find: common.basenameFind,\n  getProperty: common.getTargetProperty,\n  process: common.getMetaFromJcamp,\n};\n","const lib = {};\nlib['reaction'] = {}\nimport reactiongeneral from './reaction/general';\nlib['reaction']['general'] = reactiongeneral;\n\nlib['sample'] = {}\nimport samplechromatogram from './sample/chromatogram';\nlib['sample']['chromatogram'] = samplechromatogram;\n\nimport samplecyclicVoltammetry from './sample/cyclicVoltammetry';\nlib['sample']['cyclicVoltammetry'] = samplecyclicVoltammetry;\n\nimport sampledifferentialCentrifugalSedimentation from './sample/differentialCentrifugalSedimentation';\nlib['sample']['differentialCentrifugalSedimentation'] = sampledifferentialCentrifugalSedimentation;\n\nimport sampledifferentialScanningCalorimetry from './sample/differentialScanningCalorimetry';\nlib['sample']['differentialScanningCalorimetry'] = sampledifferentialScanningCalorimetry;\n\nimport sampledls from './sample/dls';\nlib['sample']['dls'] = sampledls;\n\nimport sampleelementAnalysis from './sample/elementAnalysis';\nlib['sample']['elementAnalysis'] = sampleelementAnalysis;\n\nimport samplegenbank from './sample/genbank';\nlib['sample']['genbank'] = samplegenbank;\n\nimport samplegeneral from './sample/general';\nlib['sample']['general'] = samplegeneral;\n\nimport samplehgPorosimetry from './sample/hgPorosimetry';\nlib['sample']['hgPorosimetry'] = samplehgPorosimetry;\n\nimport sampleicp from './sample/icp';\nlib['sample']['icp'] = sampleicp;\n\nimport sampleimage from './sample/image';\nlib['sample']['image'] = sampleimage;\n\nimport sampleir from './sample/ir';\nlib['sample']['ir'] = sampleir;\n\nimport sampleisotherm from './sample/isotherm';\nlib['sample']['isotherm'] = sampleisotherm;\n\nimport sampleiv from './sample/iv';\nlib['sample']['iv'] = sampleiv;\n\nimport samplemass from './sample/mass';\nlib['sample']['mass'] = samplemass;\n\nimport samplenmr from './sample/nmr';\nlib['sample']['nmr'] = samplenmr;\n\nimport sampleoan from './sample/oan';\nlib['sample']['oan'] = sampleoan;\n\nimport samplepelletHardness from './sample/pelletHardness';\nlib['sample']['pelletHardness'] = samplepelletHardness;\n\nimport samplephysical from './sample/physical';\nlib['sample']['physical'] = samplephysical;\n\nimport sampleraman from './sample/raman';\nlib['sample']['raman'] = sampleraman;\n\nimport samplestock from './sample/stock';\nlib['sample']['stock'] = samplestock;\n\nimport samplethermogravimetricAnalysis from './sample/thermogravimetricAnalysis';\nlib['sample']['thermogravimetricAnalysis'] = samplethermogravimetricAnalysis;\n\nimport sampleuv from './sample/uv';\nlib['sample']['uv'] = sampleuv;\n\nimport samplevideo from './sample/video';\nlib['sample']['video'] = samplevideo;\n\nimport samplevoidVolume from './sample/voidVolume';\nlib['sample']['voidVolume'] = samplevoidVolume;\n\nimport samplexps from './sample/xps';\nlib['sample']['xps'] = samplexps;\n\nimport samplexray from './sample/xray';\nlib['sample']['xray'] = samplexray;\n\nimport samplexrd from './sample/xrd';\nlib['sample']['xrd'] = samplexrd;\n\nimport samplexrf from './sample/xrf';\nlib['sample']['xrf'] = samplexrf;\n\nexport default lib;","import defaultType from './types/default.js';\nimport lib from './types/index';\n\nexport function getType(type, kind, custom) {\n  if (kind) {\n    if (lib[kind][type]) {\n      return Object.assign({}, defaultType, lib[kind][type], custom);\n    }\n  } else {\n    for (kind in lib) {\n      if (lib[kind][type]) {\n        return Object.assign(\n          {},\n          defaultType,\n          lib[kind].default,\n          lib[kind][type],\n          custom,\n        );\n      }\n    }\n  }\n\n  return Object.assign({}, defaultType);\n}\n\nexport function getAllTypes(kind, custom) {\n  let all = [];\n\n  for (let type in lib[kind]) {\n    if (type !== 'default') {\n      all.push(getType(type, kind, custom));\n    }\n  }\n  return all;\n}\n\nexport default lib;\n","/*\n    Modified from https://github.com/justmoon/node-extend\n    Copyright (c) 2014 Stefan Thomas\n */\n\n/* eslint prefer-rest-params: 0 */\n\nlet hasOwn = Object.prototype.hasOwnProperty;\nlet toStr = Object.prototype.toString;\n\nlet isArray = function isArray(arr) {\n  if (typeof Array.isArray === 'function') {\n    return Array.isArray(arr);\n  }\n\n  return toStr.call(arr) === '[object Array]';\n};\n\nlet isPlainObject = function isPlainObject(obj) {\n  if (!obj || toStr.call(obj) !== '[object Object]') {\n    return false;\n  }\n\n  let hasOwnConstructor = hasOwn.call(obj, 'constructor');\n  let hasIsPrototypeOf =\n    obj.constructor &&\n    obj.constructor.prototype &&\n    hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n  // Not own constructor property must be Object\n  if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n    return false;\n  }\n\n  // Own properties are enumerated firstly, so to speed up,\n  // if last one is own, then all properties are own.\n  let key;\n  for (key in obj) {\n    /**/\n  }\n\n  return typeof key === 'undefined' || hasOwn.call(obj, key);\n};\nexport default function defaults() {\n  let options, name, src, copy, copyIsArray, clone;\n  let target = arguments[0];\n  let i = 1;\n  let length = arguments.length;\n  let deep = false;\n\n  // Handle a deep copy situation\n  if (typeof target === 'boolean') {\n    deep = target;\n    target = arguments[1] || {};\n    // skip the boolean and the target\n    i = 2;\n  } else if (\n    (typeof target !== 'object' && typeof target !== 'function') ||\n    target == null\n  ) {\n    target = {};\n  }\n\n  for (; i < length; ++i) {\n    options = arguments[i];\n    // Only deal with non-null/undefined values\n    if (options != null) {\n      // Extend the base object\n      for (name in options) {\n        src = target[name];\n        copy = options[name];\n\n        // Prevent never-ending loop\n        if (target !== copy) {\n          // Recurse if we're merging plain objects or arrays\n          if (\n            deep &&\n            copy &&\n            (isPlainObject(copy) || (copyIsArray = isArray(copy)))\n          ) {\n            if (copyIsArray) {\n              copyIsArray = false;\n              clone = src && isArray(src) ? src : [];\n            } else {\n              clone = src && isPlainObject(src) ? src : {};\n            }\n\n            // Never move original objects, clone them\n            if (typeof target[name] === 'undefined') {\n              target[name] = defaults(deep, clone, copy);\n            } else {\n              defaults(deep, clone, copy);\n            }\n\n            // Don't bring in undefined values\n          } else if (typeof copy !== 'undefined') {\n            if (typeof target[name] === 'undefined') {\n              target[name] = copy;\n            }\n          }\n        }\n      }\n    }\n  }\n\n  // Return the modified object\n  return target;\n}\n","import { getAllTypes, getType } from './types';\nimport util from './types/common';\nimport defaults from './util/defaults';\n\nconst elnPlugin = {\n  util,\n  /**\n   *\n   * @param {*} type\n   * @param {*} doc\n   * @param {*} content\n   * @param {*} customMetadata\n   * @param {object} [options={}]\n   * @param {boolean} [options.keepContent=false]\n   */\n  process(type, doc, content, customMetadata, options = {}) {\n    let filename = content.filename;\n    const typeProcessor = getType(type);\n    const arr = createFromJpath(doc, typeProcessor);\n    const entry = typeProcessor.find(arr, filename);\n    const property = typeProcessor.getProperty(filename, content);\n    if (property === undefined) {\n      throw new Error(`Could not get property of ${filename} (type ${type}`);\n    }\n    const metadata = typeProcessor.process(filename, content);\n\n    metadata[property] = {\n      filename: elnPlugin.getFilename(type, content.filename),\n    };\n\n    if (options.keepContent) {\n      metadata[property].data = util.getContent(content, property);\n    }\n\n    if (entry) {\n      Object.assign(entry, metadata, customMetadata);\n    } else {\n      Object.assign(metadata, customMetadata);\n      arr.push(metadata);\n    }\n\n    return doc;\n  },\n\n  getType(type, doc, kind) {\n    const typeProcessor = getType(type, kind);\n    return getFromJpath(doc, typeProcessor);\n  },\n\n  getFilename(type, filename) {\n    let match = /[^/]*$/.exec(filename);\n    if (match) filename = match[0];\n    const typeProcessor = getType(type);\n    const jpath = typeProcessor.jpath;\n    if (!jpath) throw new Error('No such type or no jpath');\n    return jpath.concat(filename).join('/');\n  },\n\n  getEmpty(kind, content) {\n    const typeProcessors = getAllTypes(kind);\n    if (!content) content = {};\n    for (let i = 0; i < typeProcessors.length; i++) {\n      createFromJpath(content, typeProcessors[i]);\n    }\n\n    return content;\n  },\n\n  defaults(kind, content) {\n    let empty = elnPlugin.getEmpty(kind);\n    defaults(true, content, empty);\n    return content;\n  },\n};\n\nfunction createFromJpath(doc, typeProcessor) {\n  const jpath = typeProcessor.jpath;\n  if (!jpath) {\n    throw new Error('createFromJpath: undefined jpath argument');\n  }\n  for (let i = 0; i < jpath.length; i++) {\n    if (doc[jpath[i]] === undefined) {\n      if (i !== jpath.length - 1) {\n        doc[jpath[i]] = {};\n      } else {\n        doc[jpath[i]] = typeProcessor.getEmpty();\n      }\n    }\n    doc = doc[jpath[i]];\n  }\n  if (jpath.length === 0) {\n    doc = Object.assign(doc, typeProcessor.getEmpty());\n  }\n  return doc;\n}\n\nfunction getFromJpath(doc, typeProcessor) {\n  if (!doc) return undefined;\n  const jpath = typeProcessor.jpath;\n  if (!jpath) throw new Error('getFromJpath: undefined jpath argument');\n  for (let i = 0; i < jpath.length; i++) {\n    if (doc[jpath[i]] === undefined) {\n      return undefined;\n    }\n    doc = doc[jpath[i]];\n  }\n  return doc;\n}\n\nexport default elnPlugin;\n"],"names":["process","getEmpty","jpath","code","date","Date","now","procedure","products","reagents","conditions","keywords","remarks","title","reactionRXN","root","stringFromCharCode","String","fromCharCode","ucs2decode","string","output","counter","length","value","extra","charCodeAt","push","ucs2encode","array","index","checkScalarValue","codePoint","Error","toString","toUpperCase","createByte","shift","encodeCodePoint","symbol","utf8encode","codePoints","byteString","readContinuationByte","byteIndex","byteCount","continuationByte","byteArray","decodeSymbol","byte1","byte2","byte3","byte4","utf8decode","tmp","version","encode","decode","exports","defaultByteLength","IOBuffer","constructor","data","options","dataIsGiven","ArrayBuffer","lastWrittenByte","byteLength","offset","dvOffset","isView","buffer","byteOffset","littleEndian","_data","DataView","_mark","_marks","available","isLittleEndian","setLittleEndian","isBigEndian","setBigEndian","skip","n","seek","mark","reset","pushMark","popMark","pop","undefined","rewind","ensureAvailable","lengthNeeded","newLength","newArray","Uint8Array","set","readBoolean","readUint8","readInt8","getInt8","getUint8","readByte","readBytes","bytes","i","readInt16","getInt16","readUint16","getUint16","readInt32","getInt32","readUint32","getUint32","readFloat32","getFloat32","readFloat64","getFloat64","readChar","readChars","result","readUtf8","bString","writeBoolean","writeUint8","writeInt8","setInt8","_updateLastWrittenByte","setUint8","writeByte","writeBytes","writeInt16","setInt16","writeUint16","setUint16","writeInt32","setInt32","writeUint32","setUint32","writeFloat32","setFloat32","writeFloat64","setFloat64","writeChar","str","writeChars","writeUtf8","toArray","notNetcdf","statement","reason","TypeError","padding","readName","nameLength","name","utils","require$$0","types","BYTE","CHAR","SHORT","INT","FLOAT","DOUBLE","num2str","type","Number","num2bytes","str2num","readNumber","size","bufferReader","numbers","Array","readType","trimNull","bind","substring","typesModule","types_1","nonRecord","variable","record","recordDimension","width","step","recordStep","currentOffset","require$$1","ZERO","NC_DIMENSION","NC_VARIABLE","NC_ATTRIBUTE","header","dimList","dimensionsList","id","recordId","recordName","dimensions","globalAttributes","attributesList","variables","variablesList","NC_UNLIMITED","dimensionSize","dim","gAttList","attributeSize","attributes","gAtt","varList","variableSize","v","dimensionality","dimensionsIds","varSize","header_1","dimension","padEnd","attribute","JSON","parse","stringify","getDataVariable","isNaN","join","toString_1","require$$2","readHeader","require$$3","require$$4","NetCDFReader","getAttribute","attributeName","find","val","getDataVariableAsString","variableName","call","dataVariableExists","attributeExists","src","agilentGCMS","reader","time","tic","pointCount","massValues","intensityValues","ms","j","times","series","agilentGCMS_1","finniganGCMS","scanIndex","brukerGCMS","agilentHPLC","intensities","numberPoints","detector","channel","match","replace","delayTime","runtimeLength","samplingInterval","Math","abs","agilentHPLC_1","finniganGCMS_1","shimadzuGCMS","shimadzuGCMS_1","advionGCMS","advionGCMS_1","aiaTemplate","interval","currentTime","aiaTemplate_1","require$$5","require$$6","require$$7","netcdfGcms","instrument_mfr","dataset_origin","mass_values","detector_name","aia_template_revision","source_file_format","ans","meta","addMeta","addVariables","fromAgilentGCMS","fromAgilentHPLC","fromFinniganGCMS","fromAiaTemplate","item","srcModule","w","findBest","atobNative","Buffer","atobBrowserify","a","base64js","atobWebWorker_iOS","buf","b64ToByteArray","prototype","map","ch","atobBest","atob","module","window","base64Js","toByteArray_1","toByteArray","fromByteArray","lookup","revLookup","Arr","len","getLens","b64","validLen","indexOf","placeHoldersLen","lens","_byteLength","arr","curByte","tripletToBase64","num","encodeChunk","uint8","start","end","extraBytes","parts","maxChunkLength","len2","isUtf8","ensureString","blob","encoding","guessEncoding","decoder","TextDecoder","isutf8","parseString","lowercase","toLowerCase","number","includes","GC_MS_FIELDS","complexChromatogram","spectra","chromatogram","existingGCMSFields","label","convertMSFieldToLabel","spectrum","pageValue","x","y","isMSField","canonicDataLabel","convertToFloatArray","stringArray","floatArray","fastParseXYData","yFactor","deltaX","isXYdata","currentData","currentX","firstX","currentY","firstY","endLine","ascii","newLine","isDifference","isLastDifference","lastDifference","isDuplicate","inComment","currentValue","lastValue","isNegative","inValue","skipFirstValue","decimalPosition","pow","duplicate","ascii2","removeCommentRegExp","peakTableSplitRegExp","parsePeakTable","isPeaktable","Object","keys","parseXY","parseXYZ","key","lines","split","values","trim","xFactor","logs","numberOfVariables","forEach","parseXYA","removeSymbolRegExp","isXYAdata","isAnyArray","endsWith","d","e","f","g","h","c","b","_ref","median","input","quickSelectMedian","slice","convertTo3DZ","minZ","maxZ","ySize","xSize","z","lastX","lastY","reverse","medians","row","Float64Array","from","getMedian","minX","min","maxX","max","minY","maxY","noise","generateContourLines","zData","povarHeight0","povarHeight1","povarHeight2","povarHeight3","isOver0","isOver1","isOver2","isOver3","nbSubSpectra","nbPovars","pAx","pAy","pBx","pBy","x0","xN","dx","y0","yN","dy","iter","nbContourLevels","contourLevels","lineZValue","level","contourLevel","side","factor","noiseMultiplier","exp","zValue","iSubSpectra","subSpectra","subSpectraAfter","povar","segments","add2D","noContour","contourLines","minMax","gyromagneticRatio","arguments","_options$fromIndex","fromIndex","_options$toIndex","toIndex","isInteger","maxValue","minValue","rescale","currentMin","currentMax","RangeError","_options$min","autoMinMax","_options$max","indent","repeat","indentData","inspectMatrix","inspectMatrixWithOptions","matrix","maxRows","maxColumns","maxNumSize","inspectData","rows","columns","maxI","maxJ","line","formatNumber","get","numStr","precise","toPrecision","exponential","toExponential","eIndex","installMathOperations","AbstractMatrix","Matrix","add","addS","addM","checkMatrix","newMatrix","sub","subS","subM","subtract","subtractS","subtractM","mul","mulS","mulM","multiply","multiplyS","multiplyM","div","divS","divM","divide","divideS","divideM","mod","modS","modM","modulus","modulusS","modulusM","and","andS","andM","or","orS","orM","xor","xorS","xorM","leftShift","leftShiftS","leftShiftM","signPropagatingRightShift","signPropagatingRightShiftS","signPropagatingRightShiftM","rightShift","rightShiftS","rightShiftM","zeroFillRightShift","zeroFillRightShiftS","zeroFillRightShiftM","not","acos","acosh","asin","asinh","atan","atanh","cbrt","ceil","clz32","cos","cosh","expm1","floor","fround","log","log1p","log10","log2","round","sign","sin","sinh","sqrt","tan","tanh","trunc","arg0","powS","powM","checkRowIndex","outer","checkColumnIndex","checkRowVector","vector","to1DArray","checkColumnVector","checkRowIndices","rowIndices","checkColumnIndices","columnIndices","checkRange","startRow","endRow","startColumn","endColumn","checkNumber","checkNonEmpty","isEmpty","sumByRow","sum","sumByColumn","sumAll","productByRow","productByColumn","productAll","varianceByRow","unbiased","mean","cols","variance","sum1","sum2","varianceByColumn","varianceAll","centerByRow","centerByColumn","centerAll","getScaleByRow","scale","scaleByRow","getScaleByColumn","scaleByColumn","getScaleAll","divider","scaleAll","from1DArray","newRows","newColumns","newData","column","rowVector","columnVector","zeros","ones","fill","rand","random","randInt","eye","diag","l","matrix1","matrix2","isMatrix","klass","apply","callback","to2DArray","copy","toJSON","isRowVector","isColumnVector","isVector","isSquare","isSymmetric","isEchelonForm","previousColumn","checked","isReducedEchelonForm","k","echelonForm","clone","iMax","swapRows","reducedEchelonForm","m","maxRow","p","pivot","setSubMatrix","neg","getRow","getRowVector","setRow","row1","row2","temp","getColumn","getColumnVector","setColumn","swapColumns","column1","column2","addRowVector","subRowVector","mulRowVector","divRowVector","addColumnVector","subColumnVector","mulColumnVector","divColumnVector","mulRow","mulColumn","by","NaN","NEGATIVE_INFINITY","maxIndex","idx","POSITIVE_INFINITY","minIndex","maxRowIndex","minRow","minRowIndex","maxColumn","maxColumnIndex","minColumn","minColumnIndex","norm","cumulativeSum","dot","vector2","vector1","mmul","other","Bcolj","s","strassen2x2","a11","b11","a12","b12","a21","b21","a22","b22","m1","m2","m3","m4","m5","m6","m7","c00","c01","c10","c11","strassen3x3","a00","a01","a02","a10","a20","b00","b01","b02","b10","b20","m8","m9","m10","m11","m12","m13","m14","m15","m16","m17","m18","m19","m20","m21","m22","m23","c02","c12","c20","c21","c22","mmulStrassen","r1","c1","r2","c2","console","warn","embed","mat","r","resultat","blockMult","halfRows","parseInt","halfCols","subMatrix","scaleRows","isFinite","scaleColumns","flipRows","middle","first","last","flipColumns","kroneckerProduct","q","kroneckerSum","AxI","IxB","transpose","sortRows","compareFunction","compareNumbers","sort","sortColumns","subMatrixRow","indices","subMatrixColumn","selection","rowIndex","columnIndex","trace","product","standardDeviation","center","Symbol","for","randomInt","diagonal","identity","negate","tensorProduct","nRows","nColumns","arrayData","removeRow","splice","addRow","removeColumn","newRow","addColumn","WrapperMatrix2D","LuDecomposition","lu","pivotVector","pivotSign","t","LUcolj","kmax","LU","isSingular","col","solve","count","X","determinant","lowerTriangularMatrix","upperTriangularMatrix","pivotPermutationVector","hypotenuse","QrDecomposition","qr","rdiag","nrm","QR","Rdiag","isFullRank","orthogonalMatrix","SingularValueDecomposition","computeLeftSingularVectors","computeRightSingularVectors","autoTranspose","wantu","Boolean","wantv","swapped","aux","nu","ni","U","V","work","si","nct","nrt","mrc","pp","eps","EPSILON","kase","alpha","MIN_VALUE","ks","cs","sn","sp","spm1","epm1","sk","ek","Y","threshold","scols","Ls","rightSingularVectors","VL","vrows","urows","VLU","solveForDiagonal","inverse","vcols","ucols","condition","norm2","rank","tol","ii","leftSingularVectors","diagonalMatrix","useSVD","leftHandSide","rightHandSide","_typeof","obj","iterator","sequentialFill","_options","_options$from","_options$to","to","_options$size","isArray","_i","global","factory","this","ascending","bisector","compare","ascendingComparator","left","lo","hi","mid","right","ascendingBisect","bisectRight","bisectLeft","descending","number$1","deviation","extent","constant","range","stop","e10","e5","e2","ticks","tickStep","step0","step1","LN10","error","sturges","LN2","histogram","domain","xz","x1","tz","bins","bin","_","thresholds","quantile","freedmanDiaconis","scott","merge","arrays","merged","pairs","permute","indexes","permutes","scan","xi","xj","shuffle","i0","i1","zip","bisect","thresholdFreedmanDiaconis","thresholdScott","thresholdSturges","quincunx","u","smoothingSpline","sigma","lambda","params","mu","SplineInterpolator","xIn","yIn","interpolate","xStart","xStop","delta","Infinity","curve","nInterval","vals","splineInterpolator","postProcessingNMR","entriesFlat","entry","observeFrequency","shiftOffsetVal","ntuples","xUnits","nucleus","startsWith","$NUC2","f2index","$NUC1","yType","unit","pageSymbolIndex","pageSymbol","units","ratio0","ratio1","ratio","profiling","action","simpleChromatogram","intensity","postProcessing","newNtuples","twoD","wantXY","keepSpectra","prepareNtuplesDatatable","currentEntry","kind","xIndex","yIndex","firstVariable","secondVariable","charAt","lowerCaseSymbol","vardim","nbPoints","varname","yUnits","prepareSpectrum","ntuplesSeparatorRegExp","defaultOptions","keepRecordsRegExp","canonicDataLabels","canonicMetadataLabels","dynamicTyping","withoutXY","convert","jcamp","entries","tmpResult","children","parentsStack","ldrs","ldr","position","dataLabel","dataValue","infos","datatable","parentEntry","info","dataType","dataClass","xType","shiftOffsetNum","vartype","varform","page","sampleDescription","target","flatten","common","getBasename","filename","base","getExtension","extension","getFilename","typeEntry","basenameFind","typeEntries","reference","getTargetProperty","getContent","content","getTextContent","getBufferContent","getMetaFromJcamp","metaData","textContent","parsed","cheminfo","bufferContent","parseNetCDF","getProperty","months","MONTHS","genbankToJson","sequence","resultsArray","currentFeatureNote","genbankAnnotationKey","LOCUS_TAG","DEFINITION_TAG","ACCESSION_TAG","VERSION_TAG","KEYWORDS_TAG","SOURCE_TAG","ORGANISM_TAG","REFERENCE_TAG","AUTHORS_TAG","CONSORTIUM_TAG","TITLE_TAG","JOURNAL_TAG","PUBMED_TAG","REMARK_TAG","FEATURES_TAG","BASE_COUNT_TAG","ORIGIN_TAG","END_SEQUENCE_TAG","fieldName","subFieldType","featureLocationIndentation","lastLineWasFeaturesTag","lastLineWasLocation","hasFoundLocus","lineFieldName","getLineFieldName","getLineVal","isSubKey","isSubKeyword","isKey","isKeyword","parseLocus","parseFeatures","parseOrigin","parseMultiLineField","ref","references","parseReference","endSeq","postProcessCurSeq","getCurrentFeature","features","postProcessGenbankFeature","removeFieldName","locusName","moleculeType","circular","seq","dateStr","genbankDivision","dateMatch","setFullYear","setUTCMonth","setDate","setUTCHours","setMinutes","setSeconds","setMilliseconds","toISOString","fName","subType","refs","lastRef","strand","getLengthOfWhiteSpaceBeforeStartOfLetters","isFeatureLineRunon","parseFeatureLocation","isNote","parseFeatureNote","newFeature","feat","notes","qual","locStr","locArr","lineArr","currentNotes","resultKey","fieldValue","substr","gene","ApEinfo_label","organism","locus_tag","note","indentationOfLine","trimmed","exec","genbank","toReturn","genbankParser","parsedSequence","description","mf","molfile","mw","keyword","impurities","cdcl3","tms","proton","coupling","multiplicity","solvent","h2o","acetic_acid","acetone","acetonitrile","benzene","bhtb","chloroform","cyclohexane","dichloromethane","diethyl_ether","diglyme","dimethylacetamide","dimethylformamide","dimethyl_sulfoxide","dioxane","ethanol","ethyl_acetate","ethyl_methyl_ketone","ethylene_glycol","hmpag","methanol","nitromethane","pyridine","silicone_greasei","tetrahydrofuran","toluene","triethylamine","dmso","c6d6","cd3cn","cd3od","d2o","toCheck","peaksFilterImpurities","peakList","remove","solventImpurities","impurity","impurityShifts","checkImpurity","tolerance","difference","asymmetric","GAUSSIAN_EXP_FACTOR","ROOT_PI_OVER_LN2","PI","ROOT_THREE","ROOT_2LN2","ROOT_2LN2_MINUS_ONE","erfinv","ln1MinusXSqrd","lnEtcBy2Plus2","firstSqrt","secondSqrt","Shape1D","Gaussian","fwhm","sd","height","widthToFWHM","fwhmToWidth","fct","getArea","getFactor","area","getData","Lorentzian","PseudoVoigt","lorentzian","gaussian","getFactorLorentzian","getFactorGaussian","getShape1D","shapeOptions","unHandled","SavitzkyGolay","ys","xs","windowSize","derivative","polynomial","half","np","weights","fullWeights","hs","constantH","wg1","wg2","d1","d2","getHs","wg","GramPoly","Grampoly","GenFact","gf","Weight","gsd","noiseLevel","sgOptions","shape","smoothY","heightFactor","broadRatio","maxCriteria","minMaxRatio","derivativeThreshold","realTopDetection","equalSpaced","isEqualSpaced","getNoiseLevel","yData","dY","ddY","SG","xData","dX","maxDdy","lastMax","lastMin","minddY","intervalL","intervalR","broadMask","widthProcessor","signals","lastK","possible","frequency","distanceJ","minDistance","gettingCloser","MAX_VALUE","soft","yLeft","yRight","determineRealTop","maxDx","minDx","MAX_SAFE_INTEGER","stddev","averageDeviations","beta","gamma","currentPoint","isEnumerable","propertyIsEnumerable","getSymbols","getOwnPropertySymbols","assignSymbols","isObject","args","arg","names","isValidKey","assign","assignDeepModule","isPrimitive","setFWHM","setHeight","squareFWHM","setMu","sumOfGaussianLorentzians","nL","sumOfGaussians","sumOfLorentzians","checkInput","peaks","optimization","paramsFunc","defaultParameters","init","peak","gradientDifference","getMaxValue","parameters","assignDeep","par","object","checkOptions","parameterizedFunction","timeout","minValues","maxValues","initialValues","damping","dampingStepUp","dampingStepDown","maxIterations","errorTolerance","centralDifference","improvementThreshold","parLen","MIN_SAFE_INTEGER","filler","checkTimeout","endTime","weightSquare","errorCalculation","func","gradientFunction","evaluatedData","paramFunction","nbParams","param","auxParams","funcParam","point","funcParam2","matrixFunction","gradientFunc","residualError","inverseMatrix","jacobianWeigthResidualError","perturbations","levenbergMarquardt","converged","iteration","previousError","improvementMetric","parameterValues","parameterError","iterations","LEVENBERG_MARQUARDT","selectMethod","optimizationOptions","getKind","algorithm","LM","lmOptions","optimize","nbShapes","parameterKey","pMin","pMax","pInit","gradientDifferenceValue","pFit","xAbsolute","tmpArray","xAbsoluteMedian","xFindClosestIndex","low","high","xGetFromToIndex","Y1","P1","Q1","Y2","P2","Q2","Y3","P3","Q3","Y4","P4","Q4","Y5","P5","Q5","polyval","coef","calc","P","Q","erfcinv","rayleighCdf","xNoiseSanPlot","mask","cutOff","refine","magnitudeMode","scaleFactor","factorStd","fixOffset","filter","_e","medianIndex","firstNegativeValueIndex","findIndex","lastPositiveValueIndex","signPositive","signNegative","cutOffDist","determineCutOff","pIndex","initialNoiseLevelPositive","skyPoint","initialNoiseLevelNegative","nIndex","noiseLevelPositive","noiseLevelNegative","cloneSignPositive","cloneSignNegative","cutOffSignalsIndexPlus","cutOffSignalsIndexNeg","cutOffSignals","correctionFactor","simpleNormInv","effectiveCutOffDist","refinedCorrectionFactor","positive","negative","snr","sanplot","generateSanPlot","fromTo","considerList","indexMax","minKi","whereToCutStat","top","elementsOfCutOff","averageValue","reduce","kiSqrt","xTraining","createArray","yTraining","finalInput","interp","yValue","SQRT2","logBaseY","logOfBase","xAxis","xyCheck","zonesNormalize","zones","zone","currentZone","xyExtract","newX","newY","loop","xyIntegration","currentxyIntegration","groupPeaks","previousPeak","currentGroup","groups","group","optimizePeaks","factorWidth","factorLimits","results","firstPeak","lastPeak","currentRange","optimizedPeaks","concat","joinBroadPeaks","broadLines","candidates","fitted","xyAutoPeaksPicking","thresholdFactor","useSanPlot","broadWidth","lookNegative","getCutOff","getPeakOptions","getPeakList","getNegativePeaks","negativeDataY","formatResult","patterns","symRatio","maxErrorIter1","maxErrorIter2","jAxisKeys","jAxis","compilePattern","signal","jAxisKey","symRank","symmetrizeChoiseBest","maxError","peaksComp","n2","maxFlagged","Jc","normalize","validPattern","ranges","getRanges","heights","getNextCombination","numbering","nFlagged","jSum","pattern","idealPattern","updateSignal","observe","nbPeaks","startX","stopX","integralData","maskPattern","mask2","abstractPattern","cont","newNmrJs","nmrJs","hsum","lng","ok","currentIndex","active","symRank1","symmetrize","tmpPeaks","tmpMask","delta1","symRank2","avg","avgWidth","heightSum","diffL","diffR","chemicalShift","symFactor","weight","newSumHeights","dxi","joinRanges","integral","peaksToRanges","integrationSum","joinOverlapRanges","clean","compile","integralType","frequencyCluster","keepPeaks","signalOptions","detectSignals","nHi","jAnalyzer","peaksO","computeArea","peakR","peaks1","sumIntegral","sumObserved","signal1D","prevPeak","spectrumIntegral","integralPeaks","integralFactor","xyAutoRangesPicking","peakPicking","getNucleusFrom2DExperiment","experiment","getSpectrumType","pulse","spectyp","$SPECTYP","getMetaData","metadata","isFid","isFt","isComplex","maybeAdd","TITLE","PULPROG","parseFloat","TE","DATATYPE","PROBHD","FNTYPE","EXPNO","nuc","SYMBOL","symbols","DATE","computeRanges","defaultRangesOptions","defaultPeaksOptions","fromJcamp","jcampData","parsedJcamp","rangesOptions","peaksOptions","replaceFid","nmr","getReference","test","reg2","lib","reactiongeneral","samplechromatogram","samplecyclicVoltammetry","sampledifferentialCentrifugalSedimentation","sampledifferentialScanningCalorimetry","sampledls","sampleelementAnalysis","samplegenbank","samplegeneral","samplehgPorosimetry","sampleicp","sampleimage","sampleir","sampleisotherm","sampleiv","samplemass","samplenmr","sampleoan","samplepelletHardness","samplephysical","sampleraman","samplestock","samplethermogravimetricAnalysis","sampleuv","samplevideo","samplevoidVolume","samplexps","samplexray","samplexrd","samplexrf","getType","custom","defaultType","default","getAllTypes","all","hasOwn","hasOwnProperty","toStr","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","defaults","copyIsArray","deep","elnPlugin","util","doc","customMetadata","typeProcessor","createFromJpath","property","keepContent","getFromJpath","typeProcessors","empty"],"mappings":"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