{"version":3,"file":"nmr-parser.min.js","sources":["../node_modules/is-any-array/lib-esm/index.js","../src/constantTables.js","../src/formatDependentVariable.js","../src/formatLinearDimension.js","../node_modules/iobuffer/lib-esm/utf8.browser.js","../node_modules/iobuffer/lib-esm/IOBuffer.js","../node_modules/jeolconverter/src/conversionTables.js","../node_modules/jeolconverter/src/utils.js","../node_modules/jeolconverter/src/parseJEOL.js","../node_modules/gyromagnetic-ratio/lib-esm/index.js","../node_modules/ensure-string/lib-esm/index.js","../node_modules/isutf8/dist/index.esm.js","../node_modules/median-quickselect/lib/median-quickselect.min.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixMinMaxZ.js","../node_modules/ml-spectra-processing/lib-esm/matrix/matrixCheck.js","../node_modules/ml-spectra-processing/lib-esm/utils/createStepArray.js","../src/utils/toKeyValue.js","../node_modules/brukerconverter/src/groupByExperiments.js","../node_modules/brukerconverter/src/util/joinMetaInfo.js","../node_modules/dynamic-typing/src/parseString.js","../node_modules/brukerconverter/node_modules/jcampconverter/lib-esm/complexChromatogram.js","../node_modules/brukerconverter/node_modules/jcampconverter/lib-esm/convertToFloatArray.js","../node_modules/brukerconverter/node_modules/jcampconverter/lib-esm/parse/fastParseXYData.js","../node_modules/brukerconverter/node_modules/jcampconverter/lib-esm/parse/parsePeakTable.js","../node_modules/brukerconverter/node_modules/jcampconverter/lib-esm/parse/parseXYA.js","../node_modules/ml-array-median/lib-es6/index.js","../node_modules/brukerconverter/node_modules/jcampconverter/lib-esm/2d/add2D.js","../node_modules/brukerconverter/node_modules/jcampconverter/lib-esm/2d/convertTo3DZ.js","../node_modules/brukerconverter/node_modules/jcampconverter/lib-esm/2d/generateContourLines.js","../node_modules/brukerconverter/node_modules/nmr-processing/lib-esm/constants/gyromagneticRatio.js","../node_modules/brukerconverter/node_modules/jcampconverter/lib-esm/profiling.js","../node_modules/brukerconverter/node_modules/jcampconverter/lib-esm/simpleChromatogram.js","../node_modules/brukerconverter/node_modules/jcampconverter/lib-esm/postProcessing.js","../node_modules/brukerconverter/node_modules/jcampconverter/lib-esm/postProcessingNMR.js","../node_modules/brukerconverter/node_modules/jcampconverter/lib-esm/prepareNtuplesDatatable.js","../node_modules/brukerconverter/node_modules/jcampconverter/lib-esm/prepareSpectrum.js","../node_modules/brukerconverter/node_modules/jcampconverter/lib-esm/convert.js","../node_modules/brukerconverter/src/util/parseData.js","../node_modules/brukerconverter/src/util/setFIDSpectrumData.js","../node_modules/brukerconverter/src/util/setXYSpectrumData.js","../node_modules/brukerconverter/src/util/convert1D.js","../node_modules/brukerconverter/src/util/mergeMetadata.js","../node_modules/brukerconverter/src/util/convert2D.js","../node_modules/brukerconverter/src/util/convertTo3DZ.js","../node_modules/brukerconverter/src/util/convertOneExperiment.js","../node_modules/brukerconverter/src/convertFileList.js","../node_modules/jszip/dist/jszip.min.js","../node_modules/filelist-from/lib-esm/fileListFromZip.js","../src/utils/convertToFloatArray.js","../src/utils/getDigitalFilterParameters.js","../src/utils/getNucleusFromMetadata.js","../src/utils/getSpectrumType.js","../src/utils/getInfoFromJCAMP.js","../src/fromBruker.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/jcampconverter/lib-esm/2d/add2D.js","../node_modules/jcampconverter/lib-esm/2d/convertTo3DZ.js","../node_modules/jcampconverter/lib-esm/2d/generateContourLines.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/postProcessingNMR.js","../node_modules/jcampconverter/lib-esm/prepareNtuplesDatatable.js","../node_modules/jcampconverter/lib-esm/prepareSpectrum.js","../node_modules/jcampconverter/lib-esm/convert.js","../src/fromJCAMP.js","../src/fromJEOL.js"],"sourcesContent":["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","/**\n * a number that correspond to a type of numeric\n * @typedef {number} numericType\n * @const\n */\nexport const numericTypeTable = {\n  0: 'uint8',\n  1: 'uint16',\n  2: 'uint32',\n  3: 'uint64',\n  4: 'int8',\n  5: 'int16',\n  6: 'int32',\n  7: 'int64',\n  8: 'float32',\n  9: 'float64',\n  10: 'complex64',\n  11: 'complex128',\n};\n\n/**\n * a number that corresponds to a type of quantity\n * @typedef {number} quantityType\n * @const\n */\nexport const quantityTypeTable = {\n  0: 'scalar',\n  1: 'vector',\n  2: 'matrix',\n  3: 'symetricMatrix',\n  4: 'pixel',\n};\n","import { isAnyArray } from 'is-any-array';\n\nimport { numericTypeTable, quantityTypeTable } from './constantTables';\n/**\n * a class for dependent variable\n * @param {object || array} data - the dependent variable\n * @param {numericType} numericType - a number that correspond to a type of numeric used to store the components\n * @param {object} [options] - an object with options (name, unit, quantityName, componentLabels, sparseSampling, application, description)\n * @param {string} [options.name] - a name of the dependent variable\n * @param {string} [options.unit] - the unit of the dependent variable\n * @param {string} [options.quantityName] - a name of the quantity\n * @param {array} [options.componentLabels] - an array of labels for each component of the dependent variable\n * @return {object} - an dependent variable\n */\nexport function formatDependentVariable(data, numericType, options = {}) {\n  let {\n    quantityType = 0,\n    encoding = 'none',\n    name = '',\n    unit = '',\n    quantityName = '',\n    componentLabels = [],\n    sparseSampling = {},\n    from = 0,\n    to = -1,\n  } = options;\n\n  let components;\n  if (isAnyArray(data)) {\n    throw new Error('not yet implemented');\n  } else if (Object.keys(data).length === 2) {\n    components = fromReIm(data, from, to);\n  }\n\n  if (componentLabels.length === 0) {\n    componentLabels = components.componentLabels;\n  }\n\n  return {\n    type: 'internal',\n    quantityType: quantityTypeTable[quantityType],\n    numericType: numericTypeTable[numericType],\n    encoding,\n    name,\n    unit,\n    quantityName,\n    componentLabels,\n    sparseSampling,\n    description: options.description || '',\n    application: options.application || '',\n    components: components.components,\n    dataLength: components.dataLength,\n  };\n}\n\n/**\n * import object {re:[], im:[]} to component\n * @param {object} reIm - a reIm object to import\n * @param {number} from - lower limit\n * @param {number} to - upper limit\n * @return {array} - components\n */\nfunction fromReIm(reIm, from, to) {\n  let dataLength = [];\n  let componentLabels = [];\n  let components = [];\n  if (isAnyArray(reIm.re) & isAnyArray(reIm.im)) {\n    if (typeof reIm.re[0] === 'number') {\n      // if 1D\n      dataLength[0] = setLengthComplex(from[0], to[0], reIm.re.length);\n      let component = new Float64Array(dataLength[0]);\n      for (let i = 0; i < dataLength[0]; i += 2) {\n        let idx = i + from[0] * 2;\n        component[i] = reIm.re[idx / 2];\n        component[i + 1] = reIm.im[idx / 2];\n      }\n      components.push(component);\n      componentLabels.push('complex');\n    } else if (isAnyArray(reIm.re[0])) {\n      // if 2D\n      dataLength[0] = setLength(from[1], to[1], reIm.re.length);\n      dataLength[1] = setLengthComplex(from[0], to[0], reIm.re[0].length);\n\n      for (let j = 0; j < dataLength[0]; j++) {\n        let component = new Float64Array(dataLength[1]);\n        for (let i = 0; i < dataLength[1]; i += 2) {\n          let idx = i + from[0] * 2;\n          component[i] = reIm.re[j][idx / 2];\n          component[i + 1] = reIm.im[j][idx / 2];\n        }\n        components.push(component);\n      }\n    } else {\n      throw new Error('check your object');\n    }\n  } else if (isAnyArray(reIm.re.re)) {\n    dataLength[0] = reIm.re.re.length * 2;\n    let re = fromReIm(reIm.re, from, to).components;\n    let im = fromReIm(reIm.im, from, to).components;\n    for (let j = 0; j < dataLength[0] / 2; j++) {\n      components.push(re[j]);\n      components.push(im[j]);\n    }\n  } else {\n    throw new Error('check the dimension or the type of data in your array');\n  }\n\n  return {\n    dataLength,\n    componentLabels,\n    components,\n  };\n}\n\nfunction setLength(from, to, length) {\n  if (to - from + 1 < length) {\n    return to - from + 1;\n  } else {\n    return length;\n  }\n}\n\nfunction setLengthComplex(from, to, length) {\n  if (to - from + 1 < length) {\n    return (to - from + 1) * 2;\n  } else {\n    return length * 2;\n  }\n}\n\n// /**\n//  * add component to components from 1D array.\n//  * @param {array} array - a 1D or 2D array to import\n//  * @return {Float64Array} - component\n//  */\n// function add1DArray(array) {\n//   let component;\n//   component = new Float64Array(array.length);\n//   for (let i = 0; i < array.length; i++) {\n//     component[i] = array[i];\n//   }\n//   return component;\n// }\n\n// /**\n//  * import component to InternalDEPENDENTVAR class object from 1D or 2D array.\n//  * @param {array} array - a 1D or 2D array to import\n//  */\n// function fromArray(array) {\n//   this.dataLength[0] = array.length;\n//   if (typeof array[0] === 'number') {\n//     this.components = [this.add1DArray(array)];\n//   } else if (Array.isArray(array[0])) {\n//     this.dataLength[1] = array[0].length;\n//     for (let j = 0; j < this.dataLength[1]; j++) {\n//       this.components.push(this.add1DArray(array[j]));\n//     }\n//   } else {\n//     throw new Error('check the dimension or the type of data in your array');\n//   }\n//   return this;\n// }\n","/**\n *\n * @param {*} label\n * @param {*} count\n * @param {*} increment\n * @param {*} options\n */\nexport function formatLinearDimension(label, count, increment, options = {}) {\n  return {\n    label: String(label),\n    count: Number(count),\n    increment: increment,\n    type: 'linear',\n    description: String(options.description) || '',\n    application: options.application || {},\n    coordinatesOffset: options.coordinatesOffset || 0,\n    originOffset: options.originOffset || 0,\n    quantityName: String(options.quantityName) || '',\n    reciprocal: options.reciprocal || {},\n    period: options.period || 0,\n    complexFFT: options.complexFFT || false,\n  };\n}\n","// eslint-disable-next-line import/no-unassigned-import\nimport './text-encoding-polyfill';\nconst decoder = new TextDecoder('utf-8');\nexport function decode(bytes) {\n    return decoder.decode(bytes);\n}\nconst encoder = new TextEncoder();\nexport function encode(str) {\n    return encoder.encode(str);\n}\n//# sourceMappingURL=utf8.browser.js.map","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 64-bit signed integer number and move pointer forward by 8 bytes.\n     */\n    readBigInt64() {\n        const value = this._data.getBigInt64(this.offset, this.littleEndian);\n        this.offset += 8;\n        return value;\n    }\n    /**\n     * Read a 64-bit unsigned integer number and move pointer forward by 8 bytes.\n     */\n    readBigUint64() {\n        const value = this._data.getBigUint64(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        return decode(this.readBytes(n));\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 `value` as a 64-bit signed bigint and move pointer forward by 8\n     * bytes.\n     */\n    writeBigInt64(value) {\n        this.ensureAvailable(8);\n        this._data.setBigInt64(this.offset, value, this.littleEndian);\n        this.offset += 8;\n        this._updateLastWrittenByte();\n        return this;\n    }\n    /**\n     * Write `value` as a 64-bit unsigned bigint and move pointer forward by 8\n     * bytes.\n     */\n    writeBigUint64(value) {\n        this.ensureAvailable(8);\n        this._data.setBigUint64(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        return this.writeBytes(encode(str));\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","export const endianness = {\n  0: 'bigEndian',\n  1: 'littleEndian',\n};\n\nexport const instrumentTable = {\n  0: 'NONE',\n  1: 'GSX',\n  2: 'ALPHA',\n  3: 'ECLIPSE',\n  4: 'MASS_SPEC',\n  5: 'COMPILER',\n  6: 'OTHER_NMR',\n  7: 'UNKNOWN',\n  8: 'GEMINI',\n  9: 'UNITY',\n  10: 'ASPECT',\n  11: 'UX',\n  12: 'FELIX',\n  13: 'LAMBDA',\n  14: 'GE_1280',\n  15: 'GE_OMEGA',\n  16: 'CHEMAGNETICS',\n  17: 'CDFF',\n  18: 'GALACTIC',\n  19: 'TRIAD',\n  20: 'GENERIC_NMR',\n  21: 'GAMMA',\n  22: 'JCAMP_DX',\n  23: 'AMX',\n  24: 'DMX',\n  25: 'ECA',\n  26: 'ALICE',\n  27: 'NMR_PIPE',\n  28: 'SIMPSON',\n};\n\nexport const dataTypeTable = {\n  0: '64Bit Float',\n  1: '32Bit Float',\n  2: 'Reserved',\n  3: 'Reserved',\n};\n\nexport const dataFormatTable = {\n  1: 'One_D',\n  2: 'Two_D',\n  3: 'Three_D',\n  4: 'Four_D',\n  5: 'Five_D',\n  6: 'Six_D',\n  7: 'Seven_D',\n  8: 'Eight_D',\n  9: 'not for NMR data formats',\n  10: 'not for NMR data formats',\n  11: 'not for NMR data formats',\n  12: 'Small_Two_D',\n  13: 'Small_Three_D',\n  14: 'Small_Four_D',\n};\n\nexport const dataAxisTypeTable = {\n  0: 'None', //Axis is not used.\n  1: 'Real', //Axis has real data only, no imaginary.\n  2: 'TPPI',\n  3: 'Complex',\n  4: 'Real_Complex',\n  /* Axis should be accessed as complex when it is the major axis,\n            accessed as real otherwise.  This is only valid when all axes in\n            use have this setting.*/\n  5: 'Envelope',\n  /* Behaves the same way as a Real_Complex dimension but the data\n        has different meaning.  Instead of being treated as real and\n        imaginary parts of a complex number, the data should be treated as minimum and maximum parts of a projection.  This is used\n        for the data that results from an envelope projection.*/\n};\n\nexport const prefixTable = {\n  '-8': 'Yotta',\n  '-6': 'Exa',\n  '-7': 'Zetta',\n  '-5': 'Pecta',\n  '-4': 'Tera',\n  '-3': 'Giga',\n  '-2': 'Mega',\n  '-1': 'Kilo',\n  0: 'None',\n  1: 'Milli',\n  2: 'Micro',\n  3: 'Nano',\n  4: 'Pico',\n  5: 'Femto',\n  6: 'Atto',\n  7: 'Zepto',\n};\n\nexport const unitPrefixTable = {\n  Yotta: 24,\n  Exa: 21,\n  Zetta: 18,\n  Pecta: 15,\n  Tera: 12,\n  Giga: 9,\n  Mega: 6,\n  Kilo: 3,\n  None: 0,\n  Milli: -3,\n  Micro: -6,\n  Nano: -9,\n  Pico: -12,\n  Femto: -15,\n  Atto: -18,\n  Zepto: -21,\n};\n\nexport const baseTable = {\n  0: 'None',\n  1: 'Abundance',\n  2: 'Ampere',\n  3: 'Candela',\n  4: 'Celsius',\n  5: 'Coulomb',\n  6: 'Degree',\n  7: 'Electronvolt',\n  8: 'Farad',\n  9: 'Sievert',\n  10: 'Gram',\n  11: 'Gray',\n  12: 'Henry',\n  13: 'Hertz',\n  14: 'Kelvin',\n  15: 'Joule',\n  16: 'Liter',\n  17: 'Lumen',\n  18: 'Lux',\n  19: 'Meter',\n  20: 'Mole',\n  21: 'Newton',\n  22: 'Ohm',\n  23: 'Pascal',\n  24: 'Percent',\n  25: 'Point',\n  26: 'Ppm',\n  27: 'Radian',\n  28: 'Second',\n  29: 'Siemens',\n  30: 'Steradian',\n  31: 'Tesla',\n  32: 'Volt',\n  33: 'Watt',\n  34: 'Weber',\n  35: 'Decibel',\n  36: 'Dalton',\n  37: 'Thompson',\n  38: 'Ugeneric', // Treated as None, but never displayed',\n  39: 'LPercent ', // Treated as percent for display, but different for comparison',\n  40: 'PPT', // Parts per trillion (Private, do not use)',\n  41: 'PPB ', // Parts per billion (Private, do not use)',\n  42: 'Index',\n};\n\nexport const dataAxisRangedTable = {\n  0: 'Ranged',\n  /* The ruler for the axis ranges from Data_Axis_Start[n] to\n        Data_Axis_Stop[n] with a step function of\n            (Data_Axis_Stop[n] - Data_Axis_Start[n]) /\n            (Data_Offset_Stop[n] - Data_Offset_Start[n]) */\n  1: 'Listed', // (deprecated)\n  /* The ruler for the axis is a list of doubles stored in the\n        List Section.  Values in the ruler may be anything.*/\n  2: 'Sparse',\n  /*The ruler for the axis is a list of doubles stored in the\n        List Section.  Values in the rulers must be strictly monotonically\n        increasing or decreasing.*/\n  3: 'Listed',\n  /* The ruler for the axis is a list of doubles stored in the\n        List Section.  Values in the rulers do not fit definition of Sparse.*/\n};\n\nexport const valueTypeTable = {\n  0: 'String',\n  1: 'Integer',\n  2: 'Float',\n  3: 'Complex',\n  4: 'Infinity',\n};\n","import * as table from './conversionTables';\n\nexport function getPar(param, searchStr) {\n  return param.paramArray.find((o) => o.name === searchStr) || '';\n}\n\nexport function getDigitalFilter(param) {\n  const orders = param.paramArray.find((e) => e.name === 'orders');\n  const factors = param.paramArray.find((e) => e.name === 'factors');\n  const sweep = param.paramArray.find((e) => e.name === 'x_sweep');\n  const acqTime = param.paramArray.find((e) => e.name === 'x_acq_time');\n  const nbPoints = param.paramArray.find((e) => e.name === 'x_points');\n\n  const shouldStop = [orders, factors, sweep, acqTime, nbPoints].some((e) => e === undefined);\n\n  if (shouldStop) {\n    new Error('There is not all parameters to calculate the number of point of digital filter')\n    return;\n  }\n\n  const s = parseInt(orders.value.slice(0, 1), 10);\n  const jump = orders.value.slice(1).length / s;\n\n  let arg = 0;\n  let factorNumber = new Int8Array(s);\n  let offsetO = 1;\n  let offsetF = 0;\n  for (let i = 0; i < s; i++) {\n    factorNumber[i] = parseInt(factors.value.slice(offsetF, offsetF + 1), 10);\n    offsetF += 1;\n  }\n\n  for (let i = 0; i < s; i++) {\n    let productorial = 1;\n    for (let j = i; j < s; j++) {\n      productorial *= factorNumber[j];\n    }\n    arg +=\n      (parseInt(orders.value.slice(offsetO, offsetO + jump), 10) - 1) /\n      productorial;\n    offsetO += jump;\n  }\n  arg /= 2;\n\n  const delaySec = arg / sweep.value;\n  return (delaySec / acqTime.value) * (nbPoints.value - 1);\n}\n\nexport function getMagnitude(param, searchStr) {\n  let par = getPar(param, searchStr) || 'NA';\n  if (par === 'NA') {\n    return { magnitude: 'NA', unit: 'NA' };\n  }\n  let unit = par.unit[0].base;\n  let unitMult = table.unitPrefixTable[par.unit[0].prefix];\n  let magnitude = par.value * 10 ** unitMult;\n  return { magnitude, unit };\n}\n\nexport function getUnit(buffer, size) {\n  let unit = [];\n  for (let i = 0; i < size; i++) {\n    let byte = buffer.readByte();\n    let prefix = table.prefixTable[byte >> 4];\n    let power = byte & 0b00001111;\n    let base = table.baseTable[buffer.readInt8()];\n    unit.push({ prefix, power, base });\n  }\n  return unit;\n}\n\nexport function getString(buffer, size) {\n  let string = [];\n  for (let i = 0; i < size; i++) {\n    let char = buffer.readChar();\n    if (char !== '\\u0000') {\n      string.push(char);\n    }\n  }\n  return string.join('');\n}\n\nexport function getParamName(buffer, size) {\n  let string = [];\n  for (let i = 0; i < size; i++) {\n    let char = buffer.readChar();\n    if (char !== ' ') {\n      string.push(char);\n    }\n  }\n  return string.join('');\n}\n\nexport function getArray(buffer, size, format) {\n  let double = [];\n  for (let i = 0; i < size; i++) {\n    switch (format) {\n      case 'readUint32':\n        double.push(buffer.readUint32());\n        break;\n      case 'readFloat64':\n        double.push(buffer.readFloat64());\n        break;\n      case 'readFloat32':\n        double.push(buffer.readFloat32());\n        break;\n      case 'readUint8':\n        double.push(buffer.readUint8());\n        break;\n      case 'readBoolean':\n        double.push(buffer.readBoolean());\n        break;\n      default:\n        break;\n    }\n  }\n  return double;\n}\n","import { IOBuffer } from 'iobuffer';\n\nimport * as table from './conversionTables';\nimport {\n  getPar,\n  getMagnitude,\n  getParamName,\n  getArray,\n  getUnit,\n  getString,\n  getDigitalFilter,\n} from './utils';\n\n/**\n * A parser for 1D and 2D JDL NMR Files\n * @param {ArrayBuffer} buffer - a buffer object containing the JDL file\n * @return {Object} - an Object with converted data\n */\nexport function parseJEOL(buffer) {\n  let ioBuffer = new IOBuffer(buffer);\n  ioBuffer.setBigEndian();\n\n  // read header section\n  let byte;\n  let header = {};\n  let byteArray = [];\n\n  header.fileIdentifier = ioBuffer.readChars(8);\n  header.endian = table.endianness[ioBuffer.readInt8()];\n  header.majorVersion = ioBuffer.readUint8();\n  header.minorVersion = ioBuffer.readUint16();\n  header.dataDimensionNumber = ioBuffer.readUint8();\n\n  header.dataDimensionExist = ioBuffer\n    .readByte()\n    .toString(2)\n    .split('')\n    .map((x) => Boolean(Number(x)));\n\n  byte = ioBuffer.readByte();\n  header.dataType = table.dataTypeTable[byte >> 6];\n  header.dataFormat = table.dataFormatTable[byte & 0b00111111];\n  header.dataInstrument = table.instrumentTable[ioBuffer.readInt8()];\n  header.translate = getArray(ioBuffer, 8, 'readUint8');\n  header.dataAxisType = getArray(ioBuffer, 8, 'readUint8').map(\n    (x) => table.dataAxisTypeTable[x],\n  );\n\n  header.dataUnits = getUnit(ioBuffer, 8);\n  header.title = getString(ioBuffer, 124);\n\n  for (byte in getArray(ioBuffer, 4, 'readUint8')) {\n    byteArray.push(table.dataAxisRangedTable[byte >> 4]);\n    byteArray.push(table.dataAxisRangedTable[byte & 0b00001111]);\n  }\n\n  header.dataAxisRanged = byteArray;\n  header.dataPoints = getArray(ioBuffer, 8, 'readUint32');\n  header.dataOffsetStart = getArray(ioBuffer, 8, 'readUint32');\n  header.dataOffsetStop = getArray(ioBuffer, 8, 'readUint32');\n  header.dataAxisStart = getArray(ioBuffer, 8, 'readFloat64');\n  header.dataAxisStop = getArray(ioBuffer, 8, 'readFloat64');\n\n  byteArray = new Uint8Array(4);\n  for (let i = 0; i < 4; i++) {\n    byteArray[i] = ioBuffer.readByte();\n  }\n  let year = 1990 + (byteArray[0] >> 1);\n  let month = ((byteArray[0] << 3) & 0b00001000) + (byteArray[1] >> 5);\n  let day = byteArray[2] & 0b00011111;\n  header.creationTime = { year, month, day };\n\n  for (let i = 0; i < 4; i++) {\n    byteArray[i] = ioBuffer.readByte();\n  }\n  year = 1990 + (byteArray[0] >> 1);\n  month = ((byteArray[0] << 3) & 0b00001000) + (byteArray[1] >> 5);\n  day = byteArray[2] & 0b00011111;\n  header.revisionTime = { year, month, day };\n\n  header.nodeName = getString(ioBuffer, 16);\n  header.site = getString(ioBuffer, 128);\n  header.author = getString(ioBuffer, 128);\n  header.comment = getString(ioBuffer, 128);\n\n  let dataAxisTitles = [];\n  for (let i = 0; i < 8; i++) {\n    dataAxisTitles.push(getString(ioBuffer, 32));\n  }\n  header.dataAxisTitles = dataAxisTitles;\n\n  header.baseFreq = getArray(ioBuffer, 8, 'readFloat64');\n  header.zeroPoint = getArray(ioBuffer, 8, 'readFloat64');\n  header.reversed = getArray(ioBuffer, 8, 'readBoolean');\n  ioBuffer.skip(3);\n  header.annotationOK = Boolean(ioBuffer.readByte() >> 7);\n  header.historyUsed = ioBuffer.readUint32();\n  header.historyLength = ioBuffer.readUint32();\n  header.paramStart = ioBuffer.readUint32();\n  header.paramLength = ioBuffer.readUint32();\n  header.ListStart = getArray(ioBuffer, 8, 'readUint32');\n  header.ListLength = getArray(ioBuffer, 8, 'readUint32');\n  header.dataStart = ioBuffer.readUint32();\n  header.dataLength = (ioBuffer.readUint32() << 32) | ioBuffer.readUint32();\n  header.contextStart = (ioBuffer.readUint32() << 32) | ioBuffer.readUint32();\n  header.contextLength = ioBuffer.readUint32();\n  header.annoteStart = (ioBuffer.readUint32() << 32) | ioBuffer.readUint32();\n  header.annoteLength = ioBuffer.readUint32();\n  header.totalSize = (ioBuffer.readUint32() << 32) | ioBuffer.readUint32();\n  header.unitLocation = getArray(ioBuffer, 8, 'readUint8');\n\n  let compoundUnit = [];\n  for (let i = 0; i < 2; i++) {\n    let unit = [];\n    let scaler = ioBuffer.readInt16();\n    for (let j = 0; j < 5; j++) {\n      byte = ioBuffer.readInt16();\n      unit.push(byte);\n    }\n    compoundUnit.push({ scaler, unit });\n  }\n  header.compoundUnit = compoundUnit;\n\n  // section parameters (param header and array)\n  if (header.endian === 'littleEndian') {\n    ioBuffer.setLittleEndian();\n  }\n  ioBuffer.seek(header.paramStart);\n\n  let parameters = {\n    parameterSize: ioBuffer.readUint32(),\n    lowIndex: ioBuffer.readUint32(),\n    highIndex: ioBuffer.readUint32(),\n    totalSize: ioBuffer.readUint32(),\n  };\n  let paramArray = [];\n  for (let p = 0; p < parameters.highIndex + 1; p++) {\n    ioBuffer.skip(4);\n    let scaler = ioBuffer.readInt16();\n    let unit = getUnit(ioBuffer, 5);\n    ioBuffer.skip(16);\n    let valueType = table.valueTypeTable[ioBuffer.readInt32()];\n    ioBuffer.seek(ioBuffer.offset - 20);\n    let value;\n    switch (valueType) {\n      case 'String':\n        value = getParamName(ioBuffer, 16);\n        break;\n      case 'Integer':\n        value = ioBuffer.readInt32();\n        ioBuffer.skip(12);\n        break;\n      case 'Float':\n        value = ioBuffer.readFloat64();\n        ioBuffer.skip(8);\n        break;\n      case 'Complex':\n        value.Real = ioBuffer.readFloat64();\n        value.Imag = ioBuffer.readFloat64();\n        break;\n      case 'Infinity':\n        value = ioBuffer.readInt32();\n        ioBuffer.skip(12);\n        break;\n      default:\n        ioBuffer.skip(16);\n        break;\n    }\n    ioBuffer.skip(4);\n    let name = getParamName(ioBuffer, 28);\n    paramArray.push({ name: name.toLowerCase(), scaler, unit, value, valueType });\n  }\n  parameters.paramArray = paramArray;\n\n  // data section\n  ioBuffer.seek(header.dataStart);\n  if (header.endian === 'littleEndian') {\n    ioBuffer.setLittleEndian();\n  }\n\n  let data = {};\n  let dataSectionCount = 1;\n  let realComplex = 0;\n  for (let type of header.dataAxisType) {\n    if (type === 'Real_Complex' && realComplex === 0) {\n      dataSectionCount += 1;\n      realComplex += 1;\n    }\n    if (type === 'Complex') {\n      dataSectionCount *= 2;\n    }\n  }\n\n  if (header.dataFormat !== 'One_D' && header.dataFormat !== 'Two_D') {\n    throw new Error('Only One_D and two_D data formats are implemented yet');\n  }\n\n  if (header.dataFormat === 'One_D') {\n    for (let s = 0; s < dataSectionCount; s++) {\n      let section;\n      if (header.dataType === '32Bit Float') {\n        section = getArray(ioBuffer, header.dataPoints[0], 'readFloat32');\n      } else if (header.dataType === '64Bit Float') {\n        section = getArray(ioBuffer, header.dataPoints[0], 'readFloat64');\n      }\n      if (s === 0) data.re = section;\n      if (s === 1) data.im = section;\n    }\n  }\n\n  if (header.dataFormat === 'Two_D') {\n    let me = 32;\n    let dim1 = header.dataPoints[0];\n    let dim2 = header.dataPoints[1];\n    // console.log(\n    // `dim1: ${dim1},\n    // dim2: ${dim2},\n    // total: ${dim1 * dim2},\n    // total(byte): ${dim1 * dim2 * 8},\n    // total(length): ${dim1 * dim2 * 8 * dataSectionCount}\n    // m size: ${dim1 / me} / ${dim2 / me}`,\n    // );\n    let I = dim2 / me;\n    let J = dim1 / me;\n\n    for (let s = 0; s < dataSectionCount; s++) {\n      let section;\n      for (let i = 0; i < I; i++) {\n        let row = [];\n        for (let j = 0; j < J; j++) {\n          for (let k = 0; k < me; k++) {\n            if (j === 0) {\n              if (header.dataType === '32Bit Float') {\n                row[k] = getArray(ioBuffer, me, 'readFloat32');\n              } else if (header.dataType === '64Bit Float') {\n                row[k] = getArray(ioBuffer, me, 'readFloat64');\n              }\n            } else {\n              if (header.dataType === '32Bit Float') {\n                row[k] = row[k].concat(getArray(ioBuffer, me, 'readFloat32'));\n              } else if (header.dataType === '64Bit Float') {\n                row[k] = row[k].concat(getArray(ioBuffer, me, 'readFloat64'));\n              }\n            }\n          }\n        }\n        if (i === 0) {\n          section = row;\n        } else {\n          section = section.concat(row);\n        }\n      }\n      if (dataSectionCount === 2) {\n        if (s === 0) data.re = section;\n        if (s === 1) data.im = section;\n      }\n      if (dataSectionCount === 4) {\n        if (s === 0) {\n          data.re = {};\n          data.re.re = section;\n        }\n        if (s === 1) data.re.im = section;\n        if (s === 2) {\n          data.im = {};\n          data.im.re = section;\n        }\n        if (s === 3) data.im.im = section;\n      }\n    }\n  }\n  // format output\n  let nucleus = [];\n  let acquisitionTime = [];\n  let spectralWidth = [];\n  let spectralWidthClipped = [];\n  let resolution = [];\n  let originFrequency = [];\n  let frequencyOffset = [];\n  let dataUnits = [];\n  if (header.dataFormat === 'One_D' || header.dataFormat === 'Two_D') {\n    nucleus.push(getPar(parameters, 'x_domain').value);\n    acquisitionTime.push(getMagnitude(parameters, 'x_acq_time'));\n    spectralWidth.push(getMagnitude(parameters, 'x_sweep'));\n    spectralWidthClipped.push(getMagnitude(parameters, 'x_sweep_clipped'));\n    resolution.push(getMagnitude(parameters, 'x_resolution'));\n    originFrequency.push(getMagnitude(parameters, 'x_freq'));\n    frequencyOffset.push(getMagnitude(parameters, 'x_offset'));\n    dataUnits.push(header.dataUnits[0].base);\n  }\n  if (header.dataFormat === 'Two_D') {\n    nucleus.push(getPar(parameters, 'y_domain').value);\n    acquisitionTime.push(getMagnitude(parameters, 'y_acq_time'));\n    spectralWidth.push(getMagnitude(parameters, 'y_sweep'));\n    resolution.push(getMagnitude(parameters, 'y_resolution'));\n    originFrequency.push(getMagnitude(parameters, 'y_freq'));\n    frequencyOffset.push(getMagnitude(parameters, 'y_offset'));\n    dataUnits.push(header.dataUnits[1].base);\n  }\n\n  let digest = {\n    info: {\n      sampleName: getPar(parameters, 'sample_id').value,\n      creationTime: header.creationTime,\n      revisionTime: header.revisionTime,\n      author: header.author,\n      comment: header.comment,\n      solvent: getPar(parameters, 'solvent').value,\n      temperature: getMagnitude(parameters, 'temp_get'),\n      probeName: getPar(parameters, 'probe_id').value,\n      fieldStrength: getMagnitude(parameters, 'field_strength'),\n      experiment: getPar(parameters, 'experiment').value,\n      dimension: header.dataDimensionNumber,\n      nucleus,\n      pulseStrength90: getMagnitude(parameters, 'x90'),\n      numberOfScans: getPar(parameters, 'scans').value,\n      relaxationTime: getMagnitude(parameters, 'relaxation_delay'),\n      dataPoints: header.dataPoints.slice(0, header.dataDimensionNumber),\n      dataOffsetStart: header.dataOffsetStart,\n      dataOffsetStop: header.dataOffsetStop,\n      dataUnits: dataUnits,\n      dataSections: Object.keys(data),\n      originFrequency,\n      frequencyOffset,\n      acquisitionTime,\n      spectralWidth,\n      spectralWidthClipped,\n      dataAxisStart: header.dataAxisStart,\n      dataAxisStop: header.dataAxisStop,\n      resolution: resolution,\n      decimationRate: getPar(parameters, 'decimation_rate').value,\n      paramList: JSON.stringify(parameters.paramArray.map((par) => par.name)),\n    },\n\n    headers: header,\n    parameters: parameters,\n    data: data,\n  };\n\n  digest.info.digitalFilter = getDigitalFilter(parameters);\n\n  return digest;\n}\n","export 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=index.js.map","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    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","(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 { matrixCheck } from './matrixCheck';\n/**\n * Get min and max Z\n *\n * @param matrix - matrix [rows][cols].\n */\nexport function matrixMinMaxZ(matrix) {\n    matrixCheck(matrix);\n    const nbRows = matrix.length;\n    const nbColumns = matrix[0].length;\n    let min = matrix[0][0];\n    let max = matrix[0][0];\n    for (let column = 0; column < nbColumns; column++) {\n        for (let row = 0; row < nbRows; row++) {\n            if (matrix[row][column] < min)\n                min = matrix[row][column];\n            if (matrix[row][column] > max)\n                max = matrix[row][column];\n        }\n    }\n    return { min, max };\n}\n//# sourceMappingURL=matrixMinMaxZ.js.map","export function matrixCheck(data) {\n    if (data.length === 0 || data[0].length === 0) {\n        throw new RangeError('matrix should contain data');\n    }\n    const firstLength = data[0].length;\n    for (let i = 1; i < data.length; i++) {\n        if (data[i].length !== firstLength) {\n            throw new RangeError('All rows should has the same length');\n        }\n    }\n}\n//# sourceMappingURL=matrixCheck.js.map","/**\n * Create an array with numbers starting from \"from\" with step \"step\" of length \"length\"\n *\n * @param options - options\n * @return - array of distributed numbers with step \"step\" from \"from\"\n */\nexport function createStepArray(options = {}) {\n    let { from = 0, step = 1, length = 1000 } = options;\n    const array = new Float64Array(length);\n    let index = 0;\n    while (index < length) {\n        array[index] = from + step * index;\n        index++;\n    }\n    return array;\n}\n//# sourceMappingURL=createStepArray.js.map","export function toKeyValue(object) {\n  let newObject = {};\n  for (let key in object) {\n    if (typeof object[key] !== 'string') {\n      newObject[key] = JSON.stringify(object[key]);\n    } else {\n      newObject[key] = object[key];\n    }\n  }\n  return newObject;\n}\n","/**\n * Retrieve the list of files for further process\n * @param {File[]} fileList\n * @param {object} [options={}]\n * @param {number|number[]} [options.processingNumber] - processing number to select, default the smallest number\n * @param {number|number[]} [options.experimentNumber] - experiment number to select, default all\n * @param {boolean} [options.ignoreFID=false] - should we ignore fid\n * @param {boolean} [options.ignoreFT=false] - should we ignore the ft transformed fid\n * @param {boolean} [options.ignore1D=false] - should we ignore 1D spectra\n * @param {boolean} [options.ignore2D=false] - should we ignore 2D spectra\n * @param {boolean} [options.onlyFirstProcessedData=true] - should we take only the first processed data (procno).\n */\nexport function groupByExperiments(fileList, options = {}) {\n  let {\n    processingNumber,\n    experimentNumber,\n    ignoreFID = false,\n    ignoreFT = false,\n    ignore1D = false,\n    ignore2D = false,\n    onlyFirstProcessedData = true,\n  } = options;\n  if (typeof processingNumber === 'number') {\n    processingNumber = [processingNumber];\n  }\n  if (typeof experimentNumber === 'number') {\n    experimentNumber = [experimentNumber];\n  }\n\n  const experiments = {};\n  for (let file of fileList) {\n    let currentProcessingNo;\n    let currentExperimentNo;\n    let experiment;\n    let name;\n    let id;\n    const parts = file.webkitRelativePath.split('/');\n    if (file.webkitRelativePath.match(/\\/pdata\\/[0-9]+\\/.*$/)) {\n      currentProcessingNo = Number(parts[parts.length - 2]);\n      currentExperimentNo = Number(parts[parts.length - 4]);\n      name = parts[parts.length - 5];\n      id = parts.slice(0, -3).join('/');\n    } else if (file.webkitRelativePath.match(/[0-9]+\\/.*$/)) {\n      currentExperimentNo = Number(parts[parts.length - 2]);\n      name = parts[parts.length - 3] || parts[parts.length - 2];\n      id = parts.slice(0, -1).join('/');\n    } else {\n      continue;\n    }\n\n    if (experimentNumber && !experimentNumber.includes(currentExperimentNo)) {\n      continue;\n    }\n\n    if (!experiments[id]) {\n      experiments[id] = {\n        name: name,\n        expno: currentExperimentNo,\n        processedData: {},\n        fileList: [],\n      };\n    }\n    experiment = experiments[id];\n    if (currentProcessingNo) {\n      if (!experiment.processedData[currentProcessingNo]) {\n        experiment.processedData[currentProcessingNo] = {\n          fileList: [],\n          name: name,\n          expno: currentExperimentNo,\n        };\n      }\n      const processedData = experiment.processedData[currentProcessingNo];\n      processedData.fileList.push(file);\n      if (file.name.match(/^(1r|1i|2rr|procs|proc2s)$/)) {\n        processedData[file.name] = file;\n      }\n      if (file.name === '2rr') {\n        processedData.is2D = true;\n        processedData.isFT = true;\n      }\n      if (file.name === '1r') {\n        processedData.is1D = true;\n        processedData.isFT = true;\n      }\n    } else {\n      experiment.fileList.push(file);\n      if (file.name.match(/^(ser|fid|acqus|acqu2s)$/)) {\n        experiment[file.name] = file;\n      }\n      if (file.name === 'ser') {\n        experiment.is2D = true;\n        experiment.isFID = true;\n      }\n      if (file.name === 'fid') {\n        experiment.is1D = true;\n        experiment.isFID = true;\n      }\n    }\n  }\n  if (processingNumber) {\n    // we need to deal with the list of processingNumber that is specified\n    for (const key in experiments) {\n      const processedData = experiments[key].processedData;\n      const newProcessedData = {};\n      for (let key in processedData) {\n        if (!processingNumber.includes(parseInt(key, 10))) continue;\n        newProcessedData[key] = processedData[key];\n      }\n      experiments[key].processedData = newProcessedData;\n    }\n  } else if (onlyFirstProcessedData) {\n    // take the smallest processing and remove all the other\n    for (const key in experiments) {\n      const processedData = experiments[key].processedData;\n      const firstProcessedNumber = Object.keys(processedData).sort(\n        (a, b) => Number(a) - Number(b),\n      )[0];\n      if (firstProcessedNumber !== undefined) {\n        experiments[key].processedData = {\n          firstProcessedNumber: processedData[firstProcessedNumber],\n        };\n      }\n    }\n  }\n  // console.log('experiments', experiments)\n  // We convert the object to an array\n  // and before filtering we will move all the processedData\n  let experimentsArray = [];\n\n  for (let key in experiments) {\n    const experiment = { ...experiments[key] };\n    const processed = experiment.processedData;\n    delete experiment.processedData;\n    if (experiment.ser || experiment.fid) {\n      if (Object.keys(processed).length > 0) {\n        const firstProcessed = processed[Object.keys(processed)[0]];\n        if (firstProcessed.procs) {\n          experiment.fileList.push(firstProcessed.procs);\n          experiment.procs = firstProcessed.procs;\n        }\n        if (firstProcessed.proc2s) {\n          experiment.fileList.push(firstProcessed.proc2s);\n          experiment.proc2s = firstProcessed.proc2s;\n        }\n      }\n      experimentsArray.push(experiment);\n    }\n    for (let processedKey in processed) {\n      const oneProcessed = processed[processedKey];\n      if (oneProcessed['1r'] || oneProcessed['2rr']) {\n        if (experiment.acqus) {\n          oneProcessed.fileList.push(experiment.acqus);\n        }\n        if (experiment.acqu2s) {\n          oneProcessed.fileList.push(experiment.acqu2s);\n        }\n        experimentsArray.push({\n          acqus: experiment.acqus,\n          acqu2s: experiment.acqu2s,\n          ...oneProcessed,\n        });\n      }\n    }\n  }\n  // we can not easily filter\n  if (ignoreFID) {\n    experimentsArray = experimentsArray.filter((item) => !item.isFID);\n  }\n  if (ignoreFT) {\n    experimentsArray = experimentsArray.filter((item) => !item.isFT);\n  }\n  if (ignore1D) {\n    experimentsArray = experimentsArray.filter((item) => !item.is1D);\n  }\n  if (ignore2D) {\n    experimentsArray = experimentsArray.filter((item) => !item.is2D);\n  }\n  // console.log(experimentsArray)\n  return experimentsArray;\n}\n","export function joinInfoMeta(target, toAppend) {\n  for (let key in toAppend.meta) {\n    if (target.meta[key] === undefined) {\n      target.meta[key] = toAppend.meta[key];\n    }\n  }\n\n  for (let key in toAppend.info) {\n    if (target.info[key] === undefined) {\n      target.info[key] = toAppend.info[key];\n    }\n  }\n\n  for (let key in target.meta) {\n    if (!Array.isArray(target.meta[key])) {\n      target.meta[key] = [target.meta[key]];\n    }\n  }\n}\n","/**\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","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 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","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","// 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","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","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 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 { convert as convertJcamp } from 'jcampconverter';\n\n/**\n *\n * @param {File} file\n * @param {object} [options={}]\n * @param {RegExp} [options.keepRecordsRegExp={}]\n * @returns\n */\nexport async function parseData(file, options) {\n  if (!file) return { info: {}, meta: {} };\n  const data = await file.text();\n  let { keepRecordsRegExp = /.*/ } = options;\n  let result = convertJcamp(data, {\n    keepRecordsRegExp,\n  });\n  const firstSpectrum = result.flatten.length === 0 ? {} : result.flatten[0];\n  return firstSpectrum;\n}\n","import { IOBuffer } from 'iobuffer';\nimport { createStepArray } from 'ml-spectra-processing';\n\nexport async function setFIDSpectrumData(file, spectra) {\n  let td = parseInt(spectra.meta.TD[0], 10);\n  let ioBuffer = new IOBuffer(await file.arrayBuffer());\n\n  if (td * spectra.meta.nbSubSpectra * 4 > ioBuffer.length) {\n    throw new RangeError(\n      `td: ${td} and nbSubSpectra: ${nbSubSpectra} exceed the buffer size`,\n    );\n  }\n\n  let SW_H = Number(spectra.meta.SW_h[0]);\n\n  let SF = Number(spectra.meta.SFO1[0]);\n\n  spectra.meta.DATATYPE = 'NMR FID';\n\n  let DW = 1 / (2 * SW_H);\n  let AQ = td * DW;\n\n  let endian = parseInt(spectra.meta.BYTORDA, 10);\n  endian = endian ? 0 : 1;\n\n  if (endian) {\n    ioBuffer.setLittleEndian();\n  } else {\n    ioBuffer.setBigEndian();\n  }\n\n  let nbSubSpectra = spectra.meta.nbSubSpectra\n    ? spectra.meta.nbSubSpectra / 2\n    : 1;\n\n  spectra.spectra = new Array(nbSubSpectra);\n\n  const stopReading = td / 2;\n  for (let j = 0; j < nbSubSpectra; j++) {\n    let toSave = {\n      dataType: 'NMR FID',\n      dataTable: '(X++(R..R))',\n      nbPoints: td,\n      firstX: 0,\n      lastX: AQ,\n      nucleus: spectra.meta.NUC1,\n      xUnit: 'Sec',\n      yUnit: 'Arbitrary',\n      data: {\n        x: createStepArray({ length: td, step: DW }),\n        re: new Float64Array(td),\n        im: new Float64Array(td),\n      },\n      isXYdata: true,\n      observeFrequency: SF,\n      title: spectra.meta.TITLE,\n      deltaX: DW,\n    };\n    spectra.spectra[j] = toSave;\n\n    for (let i = 0; i < stopReading; i++) {\n      spectra.spectra[j].data.re[i] = ioBuffer.readInt32();\n      spectra.spectra[j].data.im[i] = ioBuffer.readInt32();\n    }\n  }\n}\n","import { IOBuffer } from 'iobuffer';\nimport { isAnyArray } from 'is-any-array';\n\nexport async function setXYSpectrumData(file, spectra) {\n  let ioBufferReal = file.re ? new IOBuffer(await file.re.arrayBuffer()) : null;\n  let ioBufferImaginary = file.im\n    ? new IOBuffer(await file.im.arrayBuffer())\n    : null;\n  let td = getDirectParameter(spectra.meta.SI);\n  let swP = getDirectParameter(spectra.meta.SW_p);\n  let sf = getDirectParameter(spectra.meta.SF);\n  let bf = sf;\n  let offset = getDirectParameter(\n    spectra.shiftOffsetVal || spectra.meta.OFFSET,\n  );\n  spectra.meta.observeFrequency = sf;\n  spectra.meta.brukerReference = bf;\n  spectra.meta.DATATYPE = 'NMR Spectrum';\n\n  let endian = parseInt(spectra.meta.BYTORDP, 10);\n  endian = endian ? 0 : 1;\n\n  let nbSubSpectra = spectra.meta.nbSubSpectra ? spectra.meta.nbSubSpectra : 1;\n  if (endian) {\n    if (file.re) ioBufferReal.setLittleEndian();\n    if (file.im) ioBufferImaginary.setLittleEndian();\n  } else {\n    if (file.re) ioBufferReal.setBigEndian();\n    if (file.im) ioBufferImaginary.setBigEndian();\n  }\n\n  for (let i = 0; i < nbSubSpectra; i++) {\n    let toSave = {\n      dataType: 'NMR Spectrum',\n      nbPoints: td,\n      firstX: offset,\n      lastX: offset - swP / sf,\n      xUnit: 'PPM',\n      yUnit: 'Arbitrary',\n      isXYdata: true,\n      observeFrequency: sf,\n      title: spectra.meta.TITLE,\n      deltaX: -(swP / sf) / (td - 1),\n    };\n\n    let deltaX = toSave.deltaX;\n    let x = new Float64Array(td);\n    let re = new Float64Array(td);\n    let im = file.im ? new Float64Array(td) : null;\n\n    if (im) {\n      for (let k = 0; k < td; ++k) {\n        x[k] = offset + k * deltaX;\n        re[k] = ioBufferReal.readInt32();\n        im[k] = ioBufferImaginary.readInt32();\n      }\n    } else {\n      for (let k = 0; k < td; ++k) {\n        x[k] = offset + k * deltaX;\n        re[k] = ioBufferReal.readInt32();\n      }\n    }\n\n    toSave.data = im ? { x, re, im } : { x, re };\n\n    spectra.spectra.push(toSave);\n  }\n}\n\nfunction getDirectParameter(meta) {\n  return Number(isAnyArray(meta) ? meta[0] : meta);\n}\n","import { joinInfoMeta } from './joinMetaInfo.js';\nimport { parseData } from './parseData';\nimport { setFIDSpectrumData } from './setFIDSpectrumData';\nimport { setXYSpectrumData } from './setXYSpectrumData';\n\nexport async function convert1D(files, options) {\n  const result = await parseData(files.procs, options);\n  const acqus = await parseData(files.acqus, options);\n  joinInfoMeta(result, acqus);\n\n  if (files['1r'] || files['1i']) {\n    await setXYSpectrumData(\n      {\n        re: files['1r'],\n        im: files['1i'],\n      },\n      result,\n    );\n  } else if (files.fid) {\n    await setFIDSpectrumData(files.fid, result);\n  }\n\n  return result;\n}\n","export function mergeMetadata(main, complement) {\n  for (let key in complement.meta) {\n    if (main.meta[key]) {\n      if (!Array.isArray(main.meta[key])) {\n        main.meta[key] = [main.meta[key]];\n      }\n      main.meta[key].push(complement.meta[key]);\n    } else if (main.meta[key] === undefined) {\n      main.meta[key] = [complement.meta[key]];\n    }\n  }\n  return main;\n}\n","import { joinInfoMeta } from './joinMetaInfo.js';\nimport { mergeMetadata } from './mergeMetadata';\nimport { parseData } from './parseData';\nimport { setFIDSpectrumData } from './setFIDSpectrumData';\nimport { setXYSpectrumData } from './setXYSpectrumData';\n\nexport async function convert2D(files, options) {\n  const result = mergeMetadata(\n    await parseData(files.procs, options),\n    await parseData(files.proc2s, options),\n  );\n\n  const acqus = mergeMetadata(\n    await parseData(files.acqus, options),\n    await parseData(files.acqu2s, options),\n  );\n\n  joinInfoMeta(result, acqus);\n\n  result.meta.nbSubSpectra = files['2rr']\n    ? parseInt(result.meta.SI[1], 10)\n    : parseInt(result.meta.TD[1], 10);\n\n  if (!result.meta.SW_p) {\n    // eslint-disable-next-line camelcase\n    result.meta.SW_p = result.meta.SW_h;\n  }\n  if (!result.meta.SF) {\n    result.meta.SF = result.meta.SFO1;\n  }\n\n  let firstY, lastY, xOffset, yOffset;\n  if (files['2rr']) {\n    let sf = Number(result.meta.SF[1]);\n    let swP = Number(result.meta.SW_p[1] || result.meta.SW[1]);\n    yOffset = Number(result.meta.OFFSET[1]);\n    xOffset = Number(result.meta.OFFSET[0]);\n    firstY = yOffset;\n    lastY = yOffset - swP / sf;\n    result.meta.firstY = firstY;\n    result.meta.lastY = lastY;\n    await setXYSpectrumData({ re: files['2rr'] }, result, true);\n  } else if (files.ser) {\n    firstY = 0;\n    lastY = result.meta.nbSubSpectra;\n    let xWindowSize = Number(result.meta.SW[0]);\n    let yWindowSize = Number(result.meta.SW[1]);\n    let xTransmitterFrequency = Number(result.meta.SFO1[0]);\n    let yTransmitterFrequency = Number(result.meta.SFO1[1]);\n    let xTransmitterFrequencyOffset = Number(result.meta.O1[0]);\n    let yTransmitterFrequencyOffset = Number(result.meta.O1[1]);\n    xOffset =\n      xTransmitterFrequencyOffset / xTransmitterFrequency + xWindowSize / 2;\n    yOffset =\n      yTransmitterFrequencyOffset / yTransmitterFrequency + yWindowSize / 2;\n    await setFIDSpectrumData(files.ser, result);\n  }\n\n  let pageValue = firstY;\n  let nbSubSpectra = result.meta.nbSubSpectra / (files['2rr'] ? 1 : 2);\n  let deltaY = (lastY - firstY) / (nbSubSpectra - 1);\n  for (let i = 0; i < nbSubSpectra; i++) {\n    pageValue += deltaY;\n    result.spectra[i].pageValue = pageValue;\n  }\n  let { NUC1: nuc1, AXNUC: axnuc, SF: sf } = result.meta;\n  const nucleus = axnuc ? axnuc : nuc1 ? nuc1 : [];\n  result.info['2D_Y_NUCLEUS'] = nucleus[1];\n  result.info['2D_X_NUCLEUS'] = nucleus[0];\n  result.info['2D_Y_FRECUENCY'] = sf[1];\n  result.info['2D_X_FRECUENCY'] = sf[0];\n  result.info['2D_Y_OFFSET'] = yOffset;\n  result.info['2D_X_OFFSET'] = xOffset;\n  result.info.twoD = result.twoD = true;\n\n  return result;\n}\n","import { matrixMinMaxZ } from 'ml-spectra-processing';\n/**\n * Those functions should disappear if add2D becomes accessible in jcampconvert\n * @param spectra\n * @returns {{z: Array, minX: *, maxX: *, minY: *, maxY: *, minZ: *, maxZ: *, noise: number}}\n */\n\nexport default function convertTo3DZ(spectra) {\n  let ySize = spectra.length;\n  let xSize = spectra[0].data.re.length;\n  let z = new Array(ySize);\n\n  for (let i = 0; i < ySize; i++) {\n    z[i] = new Float64Array(spectra[i].data.re);\n  }\n  const firstX = spectra[0].data.x[0];\n  const lastX = spectra[0].data.x[xSize - 1];\n  const firstY = spectra[0].pageValue;\n  const lastY = spectra[ySize - 1].pageValue;\n\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\n  let minMaxX =\n    firstX < lastX\n      ? { minX: firstX, maxX: lastX }\n      : { minX: lastX, maxX: firstX };\n  let minMaxY =\n    firstY < lastY\n      ? { minY: firstY, maxY: lastY }\n      : { minY: lastY, maxY: firstY };\n\n  const { min: minZ, max: maxZ } = matrixMinMaxZ(z);\n\n  return {\n    z,\n    minZ,\n    maxZ,\n    ...minMaxX,\n    ...minMaxY,\n  };\n}\n","import { convert1D } from './convert1D';\nimport { convert2D } from './convert2D';\nimport convertTo3DZ from './convertTo3DZ.js';\n\n/**\n * Extract information and data from bruker files.\n * @param {File[]} brukerFiles - Needed bruker files to parse raw data.\n * @param {object} [options = {}] - options.\n * @param {boolean} [options.xy] - if true, spectra data is a object with x and y\n * @param {boolean} [options.keepSpectra=false] - for 2D should we keep the spectra or just the matrix ?\n * @param {RegExp} [options.keepRecordsRegExp='\\/.*\\/'] - regular expresion to parse the metadata of the spectrum.\n * @returns\n */\n\nexport async function convertOneExperiment(brukerFiles, options = {}) {\n  let result;\n  if (brukerFiles.ser || brukerFiles['2rr']) {\n    result = await convert2D(brukerFiles, options);\n  } else if (brukerFiles['1r'] || brukerFiles['1i'] || brukerFiles.fid) {\n    result = await convert1D(brukerFiles, options);\n  } else {\n    throw new RangeError('The current files are invalid');\n  }\n\n  result.source = {};\n  for (let key in brukerFiles) {\n    if ((typeof brukerFiles[key]).match(/number|string|boolean/)) {\n      result.source[key] = brukerFiles[key];\n    }\n    // todo we could as well keep the FileList at this level if\n    // we want to keep the original data\n  }\n\n  //normalizing info\n  result.meta.DATE = Number(result.meta.DATE);\n  if (result.meta.GRPDLY) {\n    result.meta.GRPDLY = Number(result.meta.GRPDLY);\n    result.meta.DSPFVS = Number(result.meta.DSPFVS);\n    result.meta.DECIM = Number(result.meta.DECIM);\n  }\n\n  for (let key in result.meta) {\n    if (!Array.isArray(result.meta[key])) {\n      continue;\n    }\n    if (result.meta[key].length === 1) {\n      result.meta[key] = result.meta[key][0];\n    } else if (\n      typeof result.meta[key][0] === 'string' &&\n      result.meta[key][0].indexOf('(0..') > -1\n    ) {\n      result.meta[key] = result.meta[key][0];\n    }\n  }\n\n  if (result.twoD) {\n    result.minMax = convertTo3DZ(result.spectra);\n\n    if (!options.keepSpectra) {\n      delete result.spectra;\n    }\n  }\n\n  return result;\n}\n","import { groupByExperiments } from './groupByExperiments';\nimport { convertOneExperiment } from './util/convertOneExperiment.js';\n\n/**\n *\n * @param {*} fileList\n * @param {object} [options={}]\n * @param {object} [options.filter]\n * @param {object} [options.converter]\n * @returns\n */\nexport async function convertFileList(fileList, options = {}) {\n  const { filter, converter } = options;\n  const results = [];\n  const experiments = groupByExperiments(fileList, filter);\n  for (let experiment of experiments) {\n    const result = await convertOneExperiment(experiment, converter);\n    if (result) {\n      results.push(result);\n    }\n  }\n  return results;\n}\n","/*!\n\nJSZip v3.10.0 - A JavaScript class for generating and reading zip files\n<http://stuartk.com/jszip>\n\n(c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>\nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/main/LICENSE\n*/\n\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=e()}}(function(){return function s(a,o,h){function u(r,e){if(!o[r]){if(!a[r]){var t=\"function\"==typeof require&&require;if(!e&&t)return t(r,!0);if(l)return l(r,!0);var n=new Error(\"Cannot find module '\"+r+\"'\");throw n.code=\"MODULE_NOT_FOUND\",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return u(t||e)},i,i.exports,s,a,o,h)}return o[r].exports}for(var l=\"function\"==typeof require&&require,e=0;e<h.length;e++)u(h[e]);return u}({1:[function(e,t,r){\"use strict\";var d=e(\"./utils\"),c=e(\"./support\"),p=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";r.encode=function(e){for(var t,r,n,i,s,a,o,h=[],u=0,l=e.length,f=l,c=\"string\"!==d.getTypeOf(e);u<e.length;)f=l-u,n=c?(t=e[u++],r=u<l?e[u++]:0,u<l?e[u++]:0):(t=e.charCodeAt(u++),r=u<l?e.charCodeAt(u++):0,u<l?e.charCodeAt(u++):0),i=t>>2,s=(3&t)<<4|r>>4,a=1<f?(15&r)<<2|n>>6:64,o=2<f?63&n:64,h.push(p.charAt(i)+p.charAt(s)+p.charAt(a)+p.charAt(o));return h.join(\"\")},r.decode=function(e){var t,r,n,i,s,a,o=0,h=0,u=\"data:\";if(e.substr(0,u.length)===u)throw new Error(\"Invalid base64 input, it looks like a data url.\");var l,f=3*(e=e.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\")).length/4;if(e.charAt(e.length-1)===p.charAt(64)&&f--,e.charAt(e.length-2)===p.charAt(64)&&f--,f%1!=0)throw new Error(\"Invalid base64 input, bad content length.\");for(l=c.uint8array?new Uint8Array(0|f):new Array(0|f);o<e.length;)t=p.indexOf(e.charAt(o++))<<2|(i=p.indexOf(e.charAt(o++)))>>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),l[h++]=t,64!==s&&(l[h++]=r),64!==a&&(l[h++]=n);return l}},{\"./support\":30,\"./utils\":32}],2:[function(e,t,r){\"use strict\";var n=e(\"./external\"),i=e(\"./stream/DataWorker\"),s=e(\"./stream/Crc32Probe\"),a=e(\"./stream/DataLengthProbe\");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a(\"data_length\")),t=this;return e.on(\"end\",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new a(\"compressedSize\")).withStreamInfo(\"compression\",t)},t.exports=o},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(e,t,r){\"use strict\";var n=e(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(e){return new n(\"STORE compression\")},uncompressWorker:function(){return new n(\"STORE decompression\")}},r.DEFLATE=e(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(e,t,r){\"use strict\";var n=e(\"./utils\");var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?\"string\"!==n.getTypeOf(e)?function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t[a])];return-1^e}(0|t,e,e.length,0):function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t.charCodeAt(a))];return-1^e}(0|t,e,e.length,0):0}},{\"./utils\":32}],5:[function(e,t,r){\"use strict\";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){\"use strict\";var n=null;n=\"undefined\"!=typeof Promise?Promise:e(\"lie\"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,i=e(\"pako\"),s=e(\"./utils\"),a=e(\"./stream/GenericWorker\"),o=n?\"uint8array\":\"array\";function h(e,t){a.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic=\"\\b\\0\",s.inherits(h,a),h.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new h(\"Deflate\",e)},r.uncompressWorker=function(){return new h(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(e,t,r){\"use strict\";function A(e,t){var r,n=\"\";for(r=0;r<t;r++)n+=String.fromCharCode(255&e),e>>>=8;return n}function n(e,t,r,n,i,s){var a,o,h=e.file,u=e.compression,l=s!==O.utf8encode,f=I.transformTo(\"string\",s(h.name)),c=I.transformTo(\"string\",O.utf8encode(h.name)),d=h.comment,p=I.transformTo(\"string\",s(d)),m=I.transformTo(\"string\",O.utf8encode(d)),_=c.length!==h.name.length,g=m.length!==d.length,b=\"\",v=\"\",y=\"\",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),\"UNIX\"===i?(C=798,z|=function(e,t){var r=e;return e||(r=t?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(e){return 63&(e||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+c,b+=\"up\"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+=\"uc\"+A(y.length,2)+y);var E=\"\";return E+=\"\\n\\0\",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+\"\\0\\0\\0\\0\"+A(z,4)+A(n,4)+f+b+p}}var I=e(\"../utils\"),i=e(\"../stream/GenericWorker\"),O=e(\"../utf8\"),B=e(\"../crc32\"),R=e(\"../signature\");function s(e,t,r,n){i.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(s,i),s.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,i.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},s.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=n(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},s.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=n(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:function(e){return R.DATA_DESCRIPTOR+A(e.crc32,4)+A(e.compressedSize,4)+A(e.uncompressedSize,4)}(e),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},s.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t<this.dirRecords.length;t++)this.push({data:this.dirRecords[t],meta:{percent:100}});var r=this.bytesWritten-e,n=function(e,t,r,n,i){var s=I.transformTo(\"string\",i(n));return R.CENTRAL_DIRECTORY_END+\"\\0\\0\\0\\0\"+A(e,2)+A(e,2)+A(t,4)+A(r,4)+A(s.length,2)+s}(this.dirRecords.length,r,e,this.zipComment,this.encodeFileName);this.push({data:n,meta:{percent:100}})},s.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},s.prototype.registerPrevious=function(e){this._sources.push(e);var t=this;return e.on(\"data\",function(e){t.processChunk(e)}),e.on(\"end\",function(){t.closedSource(t.previous.streamInfo),t._sources.length?t.prepareNextSource():t.end()}),e.on(\"error\",function(e){t.error(e)}),this},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},s.prototype.error=function(e){var t=this._sources;if(!i.prototype.error.call(this,e))return!1;for(var r=0;r<t.length;r++)try{t[r].error(e)}catch(e){}return!0},s.prototype.lock=function(){i.prototype.lock.call(this);for(var e=this._sources,t=0;t<e.length;t++)e[t].lock()},t.exports=s},{\"../crc32\":4,\"../signature\":23,\"../stream/GenericWorker\":28,\"../utf8\":31,\"../utils\":32}],9:[function(e,t,r){\"use strict\";var u=e(\"../compressions\"),n=e(\"./ZipFileWorker\");r.generateWorker=function(e,a,t){var o=new n(a.streamFiles,t,a.platform,a.encodeFileName),h=0;try{e.forEach(function(e,t){h++;var r=function(e,t){var r=e||t,n=u[r];if(!n)throw new Error(r+\" is not a valid compression method !\");return n}(t.options.compression,a.compression),n=t.options.compressionOptions||a.compressionOptions||{},i=t.dir,s=t.date;t._compressWorker(r,n).withStreamInfo(\"file\",{name:e,dir:i,date:s,comment:t.comment||\"\",unixPermissions:t.unixPermissions,dosPermissions:t.dosPermissions}).pipe(o)}),o.entriesCount=h}catch(e){o.error(e)}return o}},{\"../compressions\":3,\"./ZipFileWorker\":8}],10:[function(e,t,r){\"use strict\";function n(){if(!(this instanceof n))return new n;if(arguments.length)throw new Error(\"The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.\");this.files=Object.create(null),this.comment=null,this.root=\"\",this.clone=function(){var e=new n;for(var t in this)\"function\"!=typeof this[t]&&(e[t]=this[t]);return e}}(n.prototype=e(\"./object\")).loadAsync=e(\"./load\"),n.support=e(\"./support\"),n.defaults=e(\"./defaults\"),n.version=\"3.10.0\",n.loadAsync=function(e,t){return(new n).loadAsync(e,t)},n.external=e(\"./external\"),t.exports=n},{\"./defaults\":5,\"./external\":6,\"./load\":11,\"./object\":15,\"./support\":30}],11:[function(e,t,r){\"use strict\";var u=e(\"./utils\"),i=e(\"./external\"),n=e(\"./utf8\"),s=e(\"./zipEntries\"),a=e(\"./stream/Crc32Probe\"),l=e(\"./nodejsUtils\");function f(n){return new i.Promise(function(e,t){var r=n.decompressed.getContentWorker().pipe(new a);r.on(\"error\",function(e){t(e)}).on(\"end\",function(){r.streamInfo.crc32!==n.decompressed.crc32?t(new Error(\"Corrupted zip : CRC32 mismatch\")):e()}).resume()})}t.exports=function(e,o){var h=this;return o=u.extend(o||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:n.utf8decode}),l.isNode&&l.isStream(e)?i.Promise.reject(new Error(\"JSZip can't accept a stream when loading a zip file.\")):u.prepareContent(\"the loaded zip file\",e,!0,o.optimizedBinaryString,o.base64).then(function(e){var t=new s(o);return t.load(e),t}).then(function(e){var t=[i.Promise.resolve(e)],r=e.files;if(o.checkCRC32)for(var n=0;n<r.length;n++)t.push(f(r[n]));return i.Promise.all(t)}).then(function(e){for(var t=e.shift(),r=t.files,n=0;n<r.length;n++){var i=r[n],s=i.fileNameStr,a=u.resolve(i.fileNameStr);h.file(a,i.decompressed,{binary:!0,optimizedBinaryString:!0,date:i.date,dir:i.dir,comment:i.fileCommentStr.length?i.fileCommentStr:null,unixPermissions:i.unixPermissions,dosPermissions:i.dosPermissions,createFolders:o.createFolders}),i.dir||(h.file(a).unsafeOriginalName=s)}return t.zipComment.length&&(h.comment=t.zipComment),h})}},{\"./external\":6,\"./nodejsUtils\":14,\"./stream/Crc32Probe\":25,\"./utf8\":31,\"./utils\":32,\"./zipEntries\":33}],12:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../stream/GenericWorker\");function s(e,t){i.call(this,\"Nodejs stream input adapter for \"+e),this._upstreamEnded=!1,this._bindStream(t)}n.inherits(s,i),s.prototype._bindStream=function(e){var t=this;(this._stream=e).pause(),e.on(\"data\",function(e){t.push({data:e,meta:{percent:0}})}).on(\"error\",function(e){t.isPaused?this.generatedError=e:t.error(e)}).on(\"end\",function(){t.isPaused?t._upstreamEnded=!0:t.end()})},s.prototype.pause=function(){return!!i.prototype.pause.call(this)&&(this._stream.pause(),!0)},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(this._upstreamEnded?this.end():this._stream.resume(),!0)},t.exports=s},{\"../stream/GenericWorker\":28,\"../utils\":32}],13:[function(e,t,r){\"use strict\";var i=e(\"readable-stream\").Readable;function n(e,t,r){i.call(this,t),this._helper=e;var n=this;e.on(\"data\",function(e,t){n.push(e)||n._helper.pause(),r&&r(t)}).on(\"error\",function(e){n.emit(\"error\",e)}).on(\"end\",function(){n.push(null)})}e(\"../utils\").inherits(n,i),n.prototype._read=function(){this._helper.resume()},t.exports=n},{\"../utils\":32,\"readable-stream\":16}],14:[function(e,t,r){\"use strict\";t.exports={isNode:\"undefined\"!=typeof Buffer,newBufferFrom:function(e,t){if(Buffer.from&&Buffer.from!==Uint8Array.from)return Buffer.from(e,t);if(\"number\"==typeof e)throw new Error('The \"data\" argument must not be a number');return new Buffer(e,t)},allocBuffer:function(e){if(Buffer.alloc)return Buffer.alloc(e);var t=new Buffer(e);return t.fill(0),t},isBuffer:function(e){return Buffer.isBuffer(e)},isStream:function(e){return e&&\"function\"==typeof e.on&&\"function\"==typeof e.pause&&\"function\"==typeof e.resume}}},{}],15:[function(e,t,r){\"use strict\";function s(e,t,r){var n,i=u.getTypeOf(t),s=u.extend(r||{},f);s.date=s.date||new Date,null!==s.compression&&(s.compression=s.compression.toUpperCase()),\"string\"==typeof s.unixPermissions&&(s.unixPermissions=parseInt(s.unixPermissions,8)),s.unixPermissions&&16384&s.unixPermissions&&(s.dir=!0),s.dosPermissions&&16&s.dosPermissions&&(s.dir=!0),s.dir&&(e=g(e)),s.createFolders&&(n=_(e))&&b.call(this,n,!0);var a=\"string\"===i&&!1===s.binary&&!1===s.base64;r&&void 0!==r.binary||(s.binary=!a),(t instanceof c&&0===t.uncompressedSize||s.dir||!t||0===t.length)&&(s.base64=!1,s.binary=!0,t=\"\",s.compression=\"STORE\",i=\"string\");var o=null;o=t instanceof c||t instanceof l?t:p.isNode&&p.isStream(t)?new m(e,t):u.prepareContent(e,t,s.binary,s.optimizedBinaryString,s.base64);var h=new d(e,o,s);this.files[e]=h}var i=e(\"./utf8\"),u=e(\"./utils\"),l=e(\"./stream/GenericWorker\"),a=e(\"./stream/StreamHelper\"),f=e(\"./defaults\"),c=e(\"./compressedObject\"),d=e(\"./zipObject\"),o=e(\"./generate\"),p=e(\"./nodejsUtils\"),m=e(\"./nodejs/NodejsStreamInputAdapter\"),_=function(e){\"/\"===e.slice(-1)&&(e=e.substring(0,e.length-1));var t=e.lastIndexOf(\"/\");return 0<t?e.substring(0,t):\"\"},g=function(e){return\"/\"!==e.slice(-1)&&(e+=\"/\"),e},b=function(e,t){return t=void 0!==t?t:f.createFolders,e=g(e),this.files[e]||s.call(this,e,null,{dir:!0,createFolders:t}),this.files[e]};function h(e){return\"[object RegExp]\"===Object.prototype.toString.call(e)}var n={load:function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},forEach:function(e){var t,r,n;for(t in this.files)n=this.files[t],(r=t.slice(this.root.length,t.length))&&t.slice(0,this.root.length)===this.root&&e(r,n)},filter:function(r){var n=[];return this.forEach(function(e,t){r(e,t)&&n.push(t)}),n},file:function(e,t,r){if(1!==arguments.length)return e=this.root+e,s.call(this,e,t,r),this;if(h(e)){var n=e;return this.filter(function(e,t){return!t.dir&&n.test(e)})}var i=this.files[this.root+e];return i&&!i.dir?i:null},folder:function(r){if(!r)return this;if(h(r))return this.filter(function(e,t){return t.dir&&r.test(e)});var e=this.root+r,t=b.call(this,e),n=this.clone();return n.root=t.name,n},remove:function(r){r=this.root+r;var e=this.files[r];if(e||(\"/\"!==r.slice(-1)&&(r+=\"/\"),e=this.files[r]),e&&!e.dir)delete this.files[r];else for(var t=this.filter(function(e,t){return t.name.slice(0,r.length)===r}),n=0;n<t.length;n++)delete this.files[t[n].name];return this},generate:function(e){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},generateInternalStream:function(e){var t,r={};try{if((r=u.extend(e||{},{streamFiles:!1,compression:\"STORE\",compressionOptions:null,type:\"\",platform:\"DOS\",comment:null,mimeType:\"application/zip\",encodeFileName:i.utf8encode})).type=r.type.toLowerCase(),r.compression=r.compression.toUpperCase(),\"binarystring\"===r.type&&(r.type=\"string\"),!r.type)throw new Error(\"No output type specified.\");u.checkSupport(r.type),\"darwin\"!==r.platform&&\"freebsd\"!==r.platform&&\"linux\"!==r.platform&&\"sunos\"!==r.platform||(r.platform=\"UNIX\"),\"win32\"===r.platform&&(r.platform=\"DOS\");var n=r.comment||this.comment||\"\";t=o.generateWorker(this,r,n)}catch(e){(t=new l(\"error\")).error(e)}return new a(t,r.type||\"string\",r.mimeType)},generateAsync:function(e,t){return this.generateInternalStream(e).accumulate(t)},generateNodeStream:function(e,t){return(e=e||{}).type||(e.type=\"nodebuffer\"),this.generateInternalStream(e).toNodejsStream(t)}};t.exports=n},{\"./compressedObject\":2,\"./defaults\":5,\"./generate\":9,\"./nodejs/NodejsStreamInputAdapter\":12,\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./stream/StreamHelper\":29,\"./utf8\":31,\"./utils\":32,\"./zipObject\":35}],16:[function(e,t,r){t.exports=e(\"stream\")},{stream:void 0}],17:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e);for(var t=0;t<this.data.length;t++)e[t]=255&e[t]}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data[this.zero+e]},i.prototype.lastIndexOfSignature=function(e){for(var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),i=e.charCodeAt(3),s=this.length-4;0<=s;--s)if(this.data[s]===t&&this.data[s+1]===r&&this.data[s+2]===n&&this.data[s+3]===i)return s-this.zero;return-1},i.prototype.readAndCheckSignature=function(e){var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),i=e.charCodeAt(3),s=this.readData(4);return t===s[0]&&r===s[1]&&n===s[2]&&i===s[3]},i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return[];var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],18:[function(e,t,r){\"use strict\";var n=e(\"../utils\");function i(e){this.data=e,this.length=e.length,this.index=0,this.zero=0}i.prototype={checkOffset:function(e){this.checkIndex(this.index+e)},checkIndex:function(e){if(this.length<this.zero+e||e<0)throw new Error(\"End of data reached (data length = \"+this.length+\", asked index = \"+e+\"). Corrupted zip ?\")},setIndex:function(e){this.checkIndex(e),this.index=e},skip:function(e){this.setIndex(this.index+e)},byteAt:function(e){},readInt:function(e){var t,r=0;for(this.checkOffset(e),t=this.index+e-1;t>=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo(\"string\",this.readData(e))},readData:function(e){},lastIndexOfSignature:function(e){},readAndCheckSignature:function(e){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{\"../utils\":32}],19:[function(e,t,r){\"use strict\";var n=e(\"./Uint8ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(e,t,r){\"use strict\";var n=e(\"./DataReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./DataReader\":18}],21:[function(e,t,r){\"use strict\";var n=e(\"./ArrayReader\");function i(e){n.call(this,e)}e(\"../utils\").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"../support\"),s=e(\"./ArrayReader\"),a=e(\"./StringReader\"),o=e(\"./NodeBufferReader\"),h=e(\"./Uint8ArrayReader\");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),\"string\"!==t||i.uint8array?\"nodebuffer\"===t?new o(e):i.uint8array?new h(n.transformTo(\"uint8array\",e)):new s(n.transformTo(\"array\",e)):new a(e)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(e,t,r){\"use strict\";r.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",r.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",r.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",r.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],24:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../utils\");function s(e){n.call(this,\"ConvertWorker to \"+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(e,t,r){\"use strict\";var n=e(\"./GenericWorker\"),i=e(\"../crc32\");function s(){n.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}e(\"../utils\").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataLengthProbe for \"+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(e,t,r){\"use strict\";var n=e(\"../utils\"),i=e(\"./GenericWorker\");function s(e){i.call(this,\"DataWorker\");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":e=this.data.substring(this.index,t);break;case\"uint8array\":e=this.data.subarray(this.index,t);break;case\"array\":case\"nodebuffer\":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(e,t,r){\"use strict\";function n(e){this.name=e||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit(\"data\",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit(\"error\",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit(\"error\",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r<this._listeners[e].length;r++)this._listeners[e][r].call(this,t)},pipe:function(e){return e.registerPrevious(this)},registerPrevious:function(e){if(this.isLocked)throw new Error(\"The stream '\"+this+\"' has already been used.\");this.streamInfo=e.streamInfo,this.mergeStreamInfo(),this.previous=e;var t=this;return e.on(\"data\",function(e){t.processChunk(e)}),e.on(\"end\",function(){t.end()}),e.on(\"error\",function(e){t.error(e)}),this},pause:function(){return!this.isPaused&&!this.isFinished&&(this.isPaused=!0,this.previous&&this.previous.pause(),!0)},resume:function(){if(!this.isPaused||this.isFinished)return!1;var e=this.isPaused=!1;return this.generatedError&&(this.error(this.generatedError),e=!0),this.previous&&this.previous.resume(),!e},flush:function(){},processChunk:function(e){this.push(e)},withStreamInfo:function(e,t){return this.extraStreamInfo[e]=t,this.mergeStreamInfo(),this},mergeStreamInfo:function(){for(var e in this.extraStreamInfo)this.extraStreamInfo.hasOwnProperty(e)&&(this.streamInfo[e]=this.extraStreamInfo[e])},lock:function(){if(this.isLocked)throw new Error(\"The stream '\"+this+\"' has already been used.\");this.isLocked=!0,this.previous&&this.previous.lock()},toString:function(){var e=\"Worker \"+this.name;return this.previous?this.previous+\" -> \"+e:e}},t.exports=n},{}],29:[function(e,t,r){\"use strict\";var h=e(\"../utils\"),i=e(\"./ConvertWorker\"),s=e(\"./GenericWorker\"),u=e(\"../base64\"),n=e(\"../support\"),a=e(\"../external\"),o=null;if(n.nodestream)try{o=e(\"../nodejs/NodejsStreamOutputAdapter\")}catch(e){}function l(e,o){return new a.Promise(function(t,r){var n=[],i=e._internalType,s=e._outputType,a=e._mimeType;e.on(\"data\",function(e,t){n.push(e),o&&o(t)}).on(\"error\",function(e){n=[],r(e)}).on(\"end\",function(){try{var e=function(e,t,r){switch(e){case\"blob\":return h.newBlob(h.transformTo(\"arraybuffer\",t),r);case\"base64\":return u.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r<t.length;r++)s+=t[r].length;switch(e){case\"string\":return t.join(\"\");case\"array\":return Array.prototype.concat.apply([],t);case\"uint8array\":for(i=new Uint8Array(s),r=0;r<t.length;r++)i.set(t[r],n),n+=t[r].length;return i;case\"nodebuffer\":return Buffer.concat(t);default:throw new Error(\"concat : unsupported type '\"+e+\"'\")}}(i,n),a);t(e)}catch(e){r(e)}n=[]}).resume()})}function f(e,t,r){var n=t;switch(t){case\"blob\":case\"arraybuffer\":n=\"uint8array\";break;case\"base64\":n=\"string\"}try{this._internalType=n,this._outputType=t,this._mimeType=r,h.checkSupport(n),this._worker=e.pipe(new i(n)),e.lock()}catch(e){this._worker=new s(\"error\"),this._worker.error(e)}}f.prototype={accumulate:function(e){return l(this,e)},on:function(e,t){var r=this;return\"data\"===e?this._worker.on(e,function(e){t.call(r,e.data,e.meta)}):this._worker.on(e,function(){h.delay(t,arguments,r)}),this},resume:function(){return h.delay(this._worker.resume,[],this._worker),this},pause:function(){return this._worker.pause(),this},toNodejsStream:function(e){if(h.checkSupport(\"nodestream\"),\"nodebuffer\"!==this._outputType)throw new Error(this._outputType+\" is not supported by this method\");return new o(this,{objectMode:\"nodebuffer\"!==this._outputType},e)}},t.exports=f},{\"../base64\":1,\"../external\":6,\"../nodejs/NodejsStreamOutputAdapter\":13,\"../support\":30,\"../utils\":32,\"./ConvertWorker\":24,\"./GenericWorker\":28}],30:[function(e,t,r){\"use strict\";if(r.base64=!0,r.array=!0,r.string=!0,r.arraybuffer=\"undefined\"!=typeof ArrayBuffer&&\"undefined\"!=typeof Uint8Array,r.nodebuffer=\"undefined\"!=typeof Buffer,r.uint8array=\"undefined\"!=typeof Uint8Array,\"undefined\"==typeof ArrayBuffer)r.blob=!1;else{var n=new ArrayBuffer(0);try{r.blob=0===new Blob([n],{type:\"application/zip\"}).size}catch(e){try{var i=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);i.append(n),r.blob=0===i.getBlob(\"application/zip\").size}catch(e){r.blob=!1}}}try{r.nodestream=!!e(\"readable-stream\").Readable}catch(e){r.nodestream=!1}},{\"readable-stream\":16}],31:[function(e,t,s){\"use strict\";for(var o=e(\"./utils\"),h=e(\"./support\"),r=e(\"./nodejsUtils\"),n=e(\"./stream/GenericWorker\"),u=new Array(256),i=0;i<256;i++)u[i]=252<=i?6:248<=i?5:240<=i?4:224<=i?3:192<=i?2:1;u[254]=u[254]=1;function a(){n.call(this,\"utf-8 decode\"),this.leftOver=null}function l(){n.call(this,\"utf-8 encode\")}s.utf8encode=function(e){return h.nodebuffer?r.newBufferFrom(e,\"utf-8\"):function(e){var t,r,n,i,s,a=e.length,o=0;for(i=0;i<a;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),o+=r<128?1:r<2048?2:r<65536?3:4;for(t=h.uint8array?new Uint8Array(o):new Array(o),i=s=0;s<o;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),r<128?t[s++]=r:(r<2048?t[s++]=192|r>>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return h.nodebuffer?o.transformTo(\"nodebuffer\",e).toString(\"utf-8\"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t<s;)if((n=e[t++])<128)a[r++]=n;else if(4<(i=u[n]))a[r++]=65533,t+=i-1;else{for(n&=2===i?31:3===i?15:7;1<i&&t<s;)n=n<<6|63&e[t++],i--;1<i?a[r++]=65533:n<65536?a[r++]=n:(n-=65536,a[r++]=55296|n>>10&1023,a[r++]=56320|1023&n)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(h.uint8array?\"uint8array\":\"array\",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(h.uint8array?\"uint8array\":\"array\",e.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}(t),i=t;n!==t.length&&(h.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(l,n),l.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta})},s.Utf8EncodeWorker=l},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(e,t,a){\"use strict\";var o=e(\"./support\"),h=e(\"./base64\"),r=e(\"./nodejsUtils\"),u=e(\"./external\");function n(e){return e}function l(e,t){for(var r=0;r<e.length;++r)t[r]=255&e.charCodeAt(r);return t}e(\"setimmediate\"),a.newBlob=function(t,r){a.checkSupport(\"blob\");try{return new Blob([t],{type:r})}catch(e){try{var n=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);return n.append(t),n.getBlob(r)}catch(e){throw new Error(\"Bug : can't construct the Blob.\")}}};var i={stringifyByChunk:function(e,t,r){var n=[],i=0,s=e.length;if(s<=r)return String.fromCharCode.apply(null,e);for(;i<s;)\"array\"===t||\"nodebuffer\"===t?n.push(String.fromCharCode.apply(null,e.slice(i,Math.min(i+r,s)))):n.push(String.fromCharCode.apply(null,e.subarray(i,Math.min(i+r,s)))),i+=r;return n.join(\"\")},stringifyByChar:function(e){for(var t=\"\",r=0;r<e.length;r++)t+=String.fromCharCode(e[r]);return t},applyCanBeUsed:{uint8array:function(){try{return o.uint8array&&1===String.fromCharCode.apply(null,new Uint8Array(1)).length}catch(e){return!1}}(),nodebuffer:function(){try{return o.nodebuffer&&1===String.fromCharCode.apply(null,r.allocBuffer(1)).length}catch(e){return!1}}()}};function s(e){var t=65536,r=a.getTypeOf(e),n=!0;if(\"uint8array\"===r?n=i.applyCanBeUsed.uint8array:\"nodebuffer\"===r&&(n=i.applyCanBeUsed.nodebuffer),n)for(;1<t;)try{return i.stringifyByChunk(e,r,t)}catch(e){t=Math.floor(t/2)}return i.stringifyByChar(e)}function f(e,t){for(var r=0;r<e.length;r++)t[r]=e[r];return t}a.applyFromCharCode=s;var c={};c.string={string:n,array:function(e){return l(e,new Array(e.length))},arraybuffer:function(e){return c.string.uint8array(e).buffer},uint8array:function(e){return l(e,new Uint8Array(e.length))},nodebuffer:function(e){return l(e,r.allocBuffer(e.length))}},c.array={string:s,array:n,arraybuffer:function(e){return new Uint8Array(e).buffer},uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return r.newBufferFrom(e)}},c.arraybuffer={string:function(e){return s(new Uint8Array(e))},array:function(e){return f(new Uint8Array(e),new Array(e.byteLength))},arraybuffer:n,uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return r.newBufferFrom(new Uint8Array(e))}},c.uint8array={string:s,array:function(e){return f(e,new Array(e.length))},arraybuffer:function(e){return e.buffer},uint8array:n,nodebuffer:function(e){return r.newBufferFrom(e)}},c.nodebuffer={string:s,array:function(e){return f(e,new Array(e.length))},arraybuffer:function(e){return c.nodebuffer.uint8array(e).buffer},uint8array:function(e){return f(e,new Uint8Array(e.length))},nodebuffer:n},a.transformTo=function(e,t){if(t=t||\"\",!e)return t;a.checkSupport(e);var r=a.getTypeOf(t);return c[r][e](t)},a.resolve=function(e){for(var t=e.split(\"/\"),r=[],n=0;n<t.length;n++){var i=t[n];\".\"===i||\"\"===i&&0!==n&&n!==t.length-1||(\"..\"===i?r.pop():r.push(i))}return r.join(\"/\")},a.getTypeOf=function(e){return\"string\"==typeof e?\"string\":\"[object Array]\"===Object.prototype.toString.call(e)?\"array\":o.nodebuffer&&r.isBuffer(e)?\"nodebuffer\":o.uint8array&&e instanceof Uint8Array?\"uint8array\":o.arraybuffer&&e instanceof ArrayBuffer?\"arraybuffer\":void 0},a.checkSupport=function(e){if(!o[e.toLowerCase()])throw new Error(e+\" is not supported by this platform\")},a.MAX_VALUE_16BITS=65535,a.MAX_VALUE_32BITS=-1,a.pretty=function(e){var t,r,n=\"\";for(r=0;r<(e||\"\").length;r++)n+=\"\\\\x\"+((t=e.charCodeAt(r))<16?\"0\":\"\")+t.toString(16).toUpperCase();return n},a.delay=function(e,t,r){setImmediate(function(){e.apply(r||null,t||[])})},a.inherits=function(e,t){function r(){}r.prototype=t.prototype,e.prototype=new r},a.extend=function(){var e,t,r={};for(e=0;e<arguments.length;e++)for(t in arguments[e])arguments[e].hasOwnProperty(t)&&void 0===r[t]&&(r[t]=arguments[e][t]);return r},a.prepareContent=function(r,e,n,i,s){return u.Promise.resolve(e).then(function(n){return o.blob&&(n instanceof Blob||-1!==[\"[object File]\",\"[object Blob]\"].indexOf(Object.prototype.toString.call(n)))&&\"undefined\"!=typeof FileReader?new u.Promise(function(t,r){var e=new FileReader;e.onload=function(e){t(e.target.result)},e.onerror=function(e){r(e.target.error)},e.readAsArrayBuffer(n)}):n}).then(function(e){var t=a.getTypeOf(e);return t?(\"arraybuffer\"===t?e=a.transformTo(\"uint8array\",e):\"string\"===t&&(s?e=h.decode(e):n&&!0!==i&&(e=function(e){return l(e,o.uint8array?new Uint8Array(e.length):new Array(e.length))}(e))),e):u.Promise.reject(new Error(\"Can't read the data of '\"+r+\"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?\"))})}},{\"./base64\":1,\"./external\":6,\"./nodejsUtils\":14,\"./support\":30,setimmediate:54}],33:[function(e,t,r){\"use strict\";var n=e(\"./reader/readerFor\"),i=e(\"./utils\"),s=e(\"./signature\"),a=e(\"./zipEntry\"),o=(e(\"./utf8\"),e(\"./support\"));function h(e){this.files=[],this.loadOptions=e}h.prototype={checkSignature:function(e){if(!this.reader.readAndCheckSignature(e)){this.reader.index-=4;var t=this.reader.readString(4);throw new Error(\"Corrupted zip or bug: unexpected signature (\"+i.pretty(t)+\", expected \"+i.pretty(e)+\")\")}},isSignature:function(e,t){var r=this.reader.index;this.reader.setIndex(e);var n=this.reader.readString(4)===t;return this.reader.setIndex(r),n},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var e=this.reader.readData(this.zipCommentLength),t=o.uint8array?\"uint8array\":\"array\",r=i.transformTo(t,e);this.zipComment=this.loadOptions.decodeFileName(r)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var e,t,r,n=this.zip64EndOfCentralSize-44;0<n;)e=this.reader.readInt(2),t=this.reader.readInt(4),r=this.reader.readData(t),this.zip64ExtensibleData[e]={id:e,length:t,value:r}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),1<this.disksCount)throw new Error(\"Multi-volumes zip are not supported\")},readLocalFiles:function(){var e,t;for(e=0;e<this.files.length;e++)t=this.files[e],this.reader.setIndex(t.localHeaderOffset),this.checkSignature(s.LOCAL_FILE_HEADER),t.readLocalPart(this.reader),t.handleUTF8(),t.processAttributes()},readCentralDir:function(){var e;for(this.reader.setIndex(this.centralDirOffset);this.reader.readAndCheckSignature(s.CENTRAL_FILE_HEADER);)(e=new a({zip64:this.zip64},this.loadOptions)).readCentralPart(this.reader),this.files.push(e);if(this.centralDirRecords!==this.files.length&&0!==this.centralDirRecords&&0===this.files.length)throw new Error(\"Corrupted zip or bug: expected \"+this.centralDirRecords+\" records in central dir, got \"+this.files.length)},readEndOfCentral:function(){var e=this.reader.lastIndexOfSignature(s.CENTRAL_DIRECTORY_END);if(e<0)throw!this.isSignature(0,s.LOCAL_FILE_HEADER)?new Error(\"Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html\"):new Error(\"Corrupted zip: can't find end of central directory\");this.reader.setIndex(e);var t=e;if(this.checkSignature(s.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===i.MAX_VALUE_16BITS||this.diskWithCentralDirStart===i.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===i.MAX_VALUE_16BITS||this.centralDirRecords===i.MAX_VALUE_16BITS||this.centralDirSize===i.MAX_VALUE_32BITS||this.centralDirOffset===i.MAX_VALUE_32BITS){if(this.zip64=!0,(e=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR))<0)throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory locator\");if(this.reader.setIndex(e),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,s.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.relativeOffsetEndOfZip64CentralDir<0))throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory\");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}var r=this.centralDirOffset+this.centralDirSize;this.zip64&&(r+=20,r+=12+this.zip64EndOfCentralSize);var n=t-r;if(0<n)this.isSignature(t,s.CENTRAL_FILE_HEADER)||(this.reader.zero=n);else if(n<0)throw new Error(\"Corrupted zip: missing \"+Math.abs(n)+\" bytes.\")},prepareReader:function(e){this.reader=n(e)},load:function(e){this.prepareReader(e),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},t.exports=h},{\"./reader/readerFor\":22,\"./signature\":23,\"./support\":30,\"./utf8\":31,\"./utils\":32,\"./zipEntry\":34}],34:[function(e,t,r){\"use strict\";var n=e(\"./reader/readerFor\"),s=e(\"./utils\"),i=e(\"./compressedObject\"),a=e(\"./crc32\"),o=e(\"./utf8\"),h=e(\"./compressions\"),u=e(\"./support\");function l(e,t){this.options=e,this.loadOptions=t}l.prototype={isEncrypted:function(){return 1==(1&this.bitFlag)},useUTF8:function(){return 2048==(2048&this.bitFlag)},readLocalPart:function(e){var t,r;if(e.skip(22),this.fileNameLength=e.readInt(2),r=e.readInt(2),this.fileName=e.readData(this.fileNameLength),e.skip(r),-1===this.compressedSize||-1===this.uncompressedSize)throw new Error(\"Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)\");if(null===(t=function(e){for(var t in h)if(h.hasOwnProperty(t)&&h[t].magic===e)return h[t];return null}(this.compressionMethod)))throw new Error(\"Corrupted zip : compression \"+s.pretty(this.compressionMethod)+\" unknown (inner file : \"+s.transformTo(\"string\",this.fileName)+\")\");this.decompressed=new i(this.compressedSize,this.uncompressedSize,this.crc32,t,e.readData(this.compressedSize))},readCentralPart:function(e){this.versionMadeBy=e.readInt(2),e.skip(2),this.bitFlag=e.readInt(2),this.compressionMethod=e.readString(2),this.date=e.readDate(),this.crc32=e.readInt(4),this.compressedSize=e.readInt(4),this.uncompressedSize=e.readInt(4);var t=e.readInt(2);if(this.extraFieldsLength=e.readInt(2),this.fileCommentLength=e.readInt(2),this.diskNumberStart=e.readInt(2),this.internalFileAttributes=e.readInt(2),this.externalFileAttributes=e.readInt(4),this.localHeaderOffset=e.readInt(4),this.isEncrypted())throw new Error(\"Encrypted zip are not supported\");e.skip(t),this.readExtraFields(e),this.parseZIP64ExtraField(e),this.fileComment=e.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var e=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(e){if(this.extraFields[1]){var t=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=t.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=t.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=t.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=t.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4<i;)t=e.readInt(2),r=e.readInt(2),n=e.readData(r),this.extraFields[t]={id:t,length:r,value:n};e.setIndex(i)},handleUTF8:function(){var e=u.uint8array?\"uint8array\":\"array\";if(this.useUTF8())this.fileNameStr=o.utf8decode(this.fileName),this.fileCommentStr=o.utf8decode(this.fileComment);else{var t=this.findExtraFieldUnicodePath();if(null!==t)this.fileNameStr=t;else{var r=s.transformTo(e,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(r)}var n=this.findExtraFieldUnicodeComment();if(null!==n)this.fileCommentStr=n;else{var i=s.transformTo(e,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(i)}}},findExtraFieldUnicodePath:function(){var e=this.extraFields[28789];if(e){var t=n(e.value);return 1!==t.readInt(1)?null:a(this.fileName)!==t.readInt(4)?null:o.utf8decode(t.readData(e.length-5))}return null},findExtraFieldUnicodeComment:function(){var e=this.extraFields[25461];if(e){var t=n(e.value);return 1!==t.readInt(1)?null:a(this.fileComment)!==t.readInt(4)?null:o.utf8decode(t.readData(e.length-5))}return null}},t.exports=l},{\"./compressedObject\":2,\"./compressions\":3,\"./crc32\":4,\"./reader/readerFor\":22,\"./support\":30,\"./utf8\":31,\"./utils\":32}],35:[function(e,t,r){\"use strict\";function n(e,t,r){this.name=e,this.dir=r.dir,this.date=r.date,this.comment=r.comment,this.unixPermissions=r.unixPermissions,this.dosPermissions=r.dosPermissions,this._data=t,this._dataBinary=r.binary,this.options={compression:r.compression,compressionOptions:r.compressionOptions}}var s=e(\"./stream/StreamHelper\"),i=e(\"./stream/DataWorker\"),a=e(\"./utf8\"),o=e(\"./compressedObject\"),h=e(\"./stream/GenericWorker\");n.prototype={internalStream:function(e){var t=null,r=\"string\";try{if(!e)throw new Error(\"No output type specified.\");var n=\"string\"===(r=e.toLowerCase())||\"text\"===r;\"binarystring\"!==r&&\"text\"!==r||(r=\"string\"),t=this._decompressWorker();var i=!this._dataBinary;i&&!n&&(t=t.pipe(new a.Utf8EncodeWorker)),!i&&n&&(t=t.pipe(new a.Utf8DecodeWorker))}catch(e){(t=new h(\"error\")).error(e)}return new s(t,r,\"\")},async:function(e,t){return this.internalStream(e).accumulate(t)},nodeStream:function(e,t){return this.internalStream(e||\"nodebuffer\").toNodejsStream(t)},_compressWorker:function(e,t){if(this._data instanceof o&&this._data.compression.magic===e.magic)return this._data.getCompressedWorker();var r=this._decompressWorker();return this._dataBinary||(r=r.pipe(new a.Utf8EncodeWorker)),o.createWorkerFrom(r,e,t)},_decompressWorker:function(){return this._data instanceof o?this._data.getContentWorker():this._data instanceof h?this._data:new i(this._data)}};for(var u=[\"asText\",\"asBinary\",\"asNodeBuffer\",\"asUint8Array\",\"asArrayBuffer\"],l=function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},f=0;f<u.length;f++)n.prototype[u[f]]=l;t.exports=n},{\"./compressedObject\":2,\"./stream/DataWorker\":27,\"./stream/GenericWorker\":28,\"./stream/StreamHelper\":29,\"./utf8\":31}],36:[function(e,l,t){(function(t){\"use strict\";var r,n,e=t.MutationObserver||t.WebKitMutationObserver;if(e){var i=0,s=new e(u),a=t.document.createTextNode(\"\");s.observe(a,{characterData:!0}),r=function(){a.data=i=++i%2}}else if(t.setImmediate||void 0===t.MessageChannel)r=\"document\"in t&&\"onreadystatechange\"in t.document.createElement(\"script\")?function(){var e=t.document.createElement(\"script\");e.onreadystatechange=function(){u(),e.onreadystatechange=null,e.parentNode.removeChild(e),e=null},t.document.documentElement.appendChild(e)}:function(){setTimeout(u,0)};else{var o=new t.MessageChannel;o.port1.onmessage=u,r=function(){o.port2.postMessage(0)}}var h=[];function u(){var e,t;n=!0;for(var r=h.length;r;){for(t=h,h=[],e=-1;++e<r;)t[e]();r=h.length}n=!1}l.exports=function(e){1!==h.push(e)||n||r()}}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],37:[function(e,t,r){\"use strict\";var i=e(\"immediate\");function u(){}var l={},s=[\"REJECTED\"],a=[\"FULFILLED\"],n=[\"PENDING\"];function o(e){if(\"function\"!=typeof e)throw new TypeError(\"resolver must be a function\");this.state=n,this.queue=[],this.outcome=void 0,e!==u&&d(this,e)}function h(e,t,r){this.promise=e,\"function\"==typeof t&&(this.onFulfilled=t,this.callFulfilled=this.otherCallFulfilled),\"function\"==typeof r&&(this.onRejected=r,this.callRejected=this.otherCallRejected)}function f(t,r,n){i(function(){var e;try{e=r(n)}catch(e){return l.reject(t,e)}e===t?l.reject(t,new TypeError(\"Cannot resolve promise with itself\")):l.resolve(t,e)})}function c(e){var t=e&&e.then;if(e&&(\"object\"==typeof e||\"function\"==typeof e)&&\"function\"==typeof t)return function(){t.apply(e,arguments)}}function d(t,e){var r=!1;function n(e){r||(r=!0,l.reject(t,e))}function i(e){r||(r=!0,l.resolve(t,e))}var s=p(function(){e(i,n)});\"error\"===s.status&&n(s.value)}function p(e,t){var r={};try{r.value=e(t),r.status=\"success\"}catch(e){r.status=\"error\",r.value=e}return r}(t.exports=o).prototype.finally=function(t){if(\"function\"!=typeof t)return this;var r=this.constructor;return this.then(function(e){return r.resolve(t()).then(function(){return e})},function(e){return r.resolve(t()).then(function(){throw e})})},o.prototype.catch=function(e){return this.then(null,e)},o.prototype.then=function(e,t){if(\"function\"!=typeof e&&this.state===a||\"function\"!=typeof t&&this.state===s)return this;var r=new this.constructor(u);this.state!==n?f(r,this.state===a?e:t,this.outcome):this.queue.push(new h(r,e,t));return r},h.prototype.callFulfilled=function(e){l.resolve(this.promise,e)},h.prototype.otherCallFulfilled=function(e){f(this.promise,this.onFulfilled,e)},h.prototype.callRejected=function(e){l.reject(this.promise,e)},h.prototype.otherCallRejected=function(e){f(this.promise,this.onRejected,e)},l.resolve=function(e,t){var r=p(c,t);if(\"error\"===r.status)return l.reject(e,r.value);var n=r.value;if(n)d(e,n);else{e.state=a,e.outcome=t;for(var i=-1,s=e.queue.length;++i<s;)e.queue[i].callFulfilled(t)}return e},l.reject=function(e,t){e.state=s,e.outcome=t;for(var r=-1,n=e.queue.length;++r<n;)e.queue[r].callRejected(t);return e},o.resolve=function(e){if(e instanceof this)return e;return l.resolve(new this(u),e)},o.reject=function(e){var t=new this(u);return l.reject(t,e)},o.all=function(e){var r=this;if(\"[object Array]\"!==Object.prototype.toString.call(e))return this.reject(new TypeError(\"must be an array\"));var n=e.length,i=!1;if(!n)return this.resolve([]);var s=new Array(n),a=0,t=-1,o=new this(u);for(;++t<n;)h(e[t],t);return o;function h(e,t){r.resolve(e).then(function(e){s[t]=e,++a!==n||i||(i=!0,l.resolve(o,s))},function(e){i||(i=!0,l.reject(o,e))})}},o.race=function(e){var t=this;if(\"[object Array]\"!==Object.prototype.toString.call(e))return this.reject(new TypeError(\"must be an array\"));var r=e.length,n=!1;if(!r)return this.resolve([]);var i=-1,s=new this(u);for(;++i<r;)a=e[i],t.resolve(a).then(function(e){n||(n=!0,l.resolve(s,e))},function(e){n||(n=!0,l.reject(s,e))});var a;return s}},{immediate:36}],38:[function(e,t,r){\"use strict\";var n={};(0,e(\"./lib/utils/common\").assign)(n,e(\"./lib/deflate\"),e(\"./lib/inflate\"),e(\"./lib/zlib/constants\")),t.exports=n},{\"./lib/deflate\":39,\"./lib/inflate\":40,\"./lib/utils/common\":41,\"./lib/zlib/constants\":44}],39:[function(e,t,r){\"use strict\";var a=e(\"./zlib/deflate\"),o=e(\"./utils/common\"),h=e(\"./utils/strings\"),i=e(\"./zlib/messages\"),s=e(\"./zlib/zstream\"),u=Object.prototype.toString,l=0,f=-1,c=0,d=8;function p(e){if(!(this instanceof p))return new p(e);this.options=o.assign({level:f,method:d,chunkSize:16384,windowBits:15,memLevel:8,strategy:c,to:\"\"},e||{});var t=this.options;t.raw&&0<t.windowBits?t.windowBits=-t.windowBits:t.gzip&&0<t.windowBits&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new s,this.strm.avail_out=0;var r=a.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(r!==l)throw new Error(i[r]);if(t.header&&a.deflateSetHeader(this.strm,t.header),t.dictionary){var n;if(n=\"string\"==typeof t.dictionary?h.string2buf(t.dictionary):\"[object ArrayBuffer]\"===u.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,(r=a.deflateSetDictionary(this.strm,n))!==l)throw new Error(i[r]);this._dict_set=!0}}function n(e,t){var r=new p(t);if(r.push(e,!0),r.err)throw r.msg||i[r.err];return r.result}p.prototype.push=function(e,t){var r,n,i=this.strm,s=this.options.chunkSize;if(this.ended)return!1;n=t===~~t?t:!0===t?4:0,\"string\"==typeof e?i.input=h.string2buf(e):\"[object ArrayBuffer]\"===u.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;do{if(0===i.avail_out&&(i.output=new o.Buf8(s),i.next_out=0,i.avail_out=s),1!==(r=a.deflate(i,n))&&r!==l)return this.onEnd(r),!(this.ended=!0);0!==i.avail_out&&(0!==i.avail_in||4!==n&&2!==n)||(\"string\"===this.options.to?this.onData(h.buf2binstring(o.shrinkBuf(i.output,i.next_out))):this.onData(o.shrinkBuf(i.output,i.next_out)))}while((0<i.avail_in||0===i.avail_out)&&1!==r);return 4===n?(r=a.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===l):2!==n||(this.onEnd(l),!(i.avail_out=0))},p.prototype.onData=function(e){this.chunks.push(e)},p.prototype.onEnd=function(e){e===l&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=o.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Deflate=p,r.deflate=n,r.deflateRaw=function(e,t){return(t=t||{}).raw=!0,n(e,t)},r.gzip=function(e,t){return(t=t||{}).gzip=!0,n(e,t)}},{\"./utils/common\":41,\"./utils/strings\":42,\"./zlib/deflate\":46,\"./zlib/messages\":51,\"./zlib/zstream\":53}],40:[function(e,t,r){\"use strict\";var c=e(\"./zlib/inflate\"),d=e(\"./utils/common\"),p=e(\"./utils/strings\"),m=e(\"./zlib/constants\"),n=e(\"./zlib/messages\"),i=e(\"./zlib/zstream\"),s=e(\"./zlib/gzheader\"),_=Object.prototype.toString;function a(e){if(!(this instanceof a))return new a(e);this.options=d.assign({chunkSize:16384,windowBits:0,to:\"\"},e||{});var t=this.options;t.raw&&0<=t.windowBits&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(0<=t.windowBits&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),15<t.windowBits&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new i,this.strm.avail_out=0;var r=c.inflateInit2(this.strm,t.windowBits);if(r!==m.Z_OK)throw new Error(n[r]);this.header=new s,c.inflateGetHeader(this.strm,this.header)}function o(e,t){var r=new a(t);if(r.push(e,!0),r.err)throw r.msg||n[r.err];return r.result}a.prototype.push=function(e,t){var r,n,i,s,a,o,h=this.strm,u=this.options.chunkSize,l=this.options.dictionary,f=!1;if(this.ended)return!1;n=t===~~t?t:!0===t?m.Z_FINISH:m.Z_NO_FLUSH,\"string\"==typeof e?h.input=p.binstring2buf(e):\"[object ArrayBuffer]\"===_.call(e)?h.input=new Uint8Array(e):h.input=e,h.next_in=0,h.avail_in=h.input.length;do{if(0===h.avail_out&&(h.output=new d.Buf8(u),h.next_out=0,h.avail_out=u),(r=c.inflate(h,m.Z_NO_FLUSH))===m.Z_NEED_DICT&&l&&(o=\"string\"==typeof l?p.string2buf(l):\"[object ArrayBuffer]\"===_.call(l)?new Uint8Array(l):l,r=c.inflateSetDictionary(this.strm,o)),r===m.Z_BUF_ERROR&&!0===f&&(r=m.Z_OK,f=!1),r!==m.Z_STREAM_END&&r!==m.Z_OK)return this.onEnd(r),!(this.ended=!0);h.next_out&&(0!==h.avail_out&&r!==m.Z_STREAM_END&&(0!==h.avail_in||n!==m.Z_FINISH&&n!==m.Z_SYNC_FLUSH)||(\"string\"===this.options.to?(i=p.utf8border(h.output,h.next_out),s=h.next_out-i,a=p.buf2string(h.output,i),h.next_out=s,h.avail_out=u-s,s&&d.arraySet(h.output,h.output,i,s,0),this.onData(a)):this.onData(d.shrinkBuf(h.output,h.next_out)))),0===h.avail_in&&0===h.avail_out&&(f=!0)}while((0<h.avail_in||0===h.avail_out)&&r!==m.Z_STREAM_END);return r===m.Z_STREAM_END&&(n=m.Z_FINISH),n===m.Z_FINISH?(r=c.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===m.Z_OK):n!==m.Z_SYNC_FLUSH||(this.onEnd(m.Z_OK),!(h.avail_out=0))},a.prototype.onData=function(e){this.chunks.push(e)},a.prototype.onEnd=function(e){e===m.Z_OK&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=d.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Inflate=a,r.inflate=o,r.inflateRaw=function(e,t){return(t=t||{}).raw=!0,o(e,t)},r.ungzip=o},{\"./utils/common\":41,\"./utils/strings\":42,\"./zlib/constants\":44,\"./zlib/gzheader\":47,\"./zlib/inflate\":49,\"./zlib/messages\":51,\"./zlib/zstream\":53}],41:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;r.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var r=t.shift();if(r){if(\"object\"!=typeof r)throw new TypeError(r+\"must be non-object\");for(var n in r)r.hasOwnProperty(n)&&(e[n]=r[n])}}return e},r.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var i={arraySet:function(e,t,r,n,i){if(t.subarray&&e.subarray)e.set(t.subarray(r,r+n),i);else for(var s=0;s<n;s++)e[i+s]=t[r+s]},flattenChunks:function(e){var t,r,n,i,s,a;for(t=n=0,r=e.length;t<r;t++)n+=e[t].length;for(a=new Uint8Array(n),t=i=0,r=e.length;t<r;t++)s=e[t],a.set(s,i),i+=s.length;return a}},s={arraySet:function(e,t,r,n,i){for(var s=0;s<n;s++)e[i+s]=t[r+s]},flattenChunks:function(e){return[].concat.apply([],e)}};r.setTyped=function(e){e?(r.Buf8=Uint8Array,r.Buf16=Uint16Array,r.Buf32=Int32Array,r.assign(r,i)):(r.Buf8=Array,r.Buf16=Array,r.Buf32=Array,r.assign(r,s))},r.setTyped(n)},{}],42:[function(e,t,r){\"use strict\";var h=e(\"./common\"),i=!0,s=!0;try{String.fromCharCode.apply(null,[0])}catch(e){i=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){s=!1}for(var u=new h.Buf8(256),n=0;n<256;n++)u[n]=252<=n?6:248<=n?5:240<=n?4:224<=n?3:192<=n?2:1;function l(e,t){if(t<65537&&(e.subarray&&s||!e.subarray&&i))return String.fromCharCode.apply(null,h.shrinkBuf(e,t));for(var r=\"\",n=0;n<t;n++)r+=String.fromCharCode(e[n]);return r}u[254]=u[254]=1,r.string2buf=function(e){var t,r,n,i,s,a=e.length,o=0;for(i=0;i<a;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),o+=r<128?1:r<2048?2:r<65536?3:4;for(t=new h.Buf8(o),i=s=0;s<o;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),r<128?t[s++]=r:(r<2048?t[s++]=192|r>>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return l(e,e.length)},r.binstring2buf=function(e){for(var t=new h.Buf8(e.length),r=0,n=t.length;r<n;r++)t[r]=e.charCodeAt(r);return t},r.buf2string=function(e,t){var r,n,i,s,a=t||e.length,o=new Array(2*a);for(r=n=0;r<a;)if((i=e[r++])<128)o[n++]=i;else if(4<(s=u[i]))o[n++]=65533,r+=s-1;else{for(i&=2===s?31:3===s?15:7;1<s&&r<a;)i=i<<6|63&e[r++],s--;1<s?o[n++]=65533:i<65536?o[n++]=i:(i-=65536,o[n++]=55296|i>>10&1023,o[n++]=56320|1023&i)}return l(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+u[e[r]]>t?r:t}},{\"./common\":41}],43:[function(e,t,r){\"use strict\";t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3<r?2e3:r;s=s+(i=i+t[n++]|0)|0,--a;);i%=65521,s%=65521}return i|s<<16|0}},{}],44:[function(e,t,r){\"use strict\";t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],45:[function(e,t,r){\"use strict\";var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,r){\"use strict\";var h,c=e(\"../utils/common\"),u=e(\"./trees\"),d=e(\"./adler32\"),p=e(\"./crc32\"),n=e(\"./messages\"),l=0,f=4,m=0,_=-2,g=-1,b=4,i=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(e,t){return e.msg=n[t],t}function T(e){return(e<<1)-(4<e?9:0)}function D(e){for(var t=e.length;0<=--t;)e[t]=0}function F(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(c.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function N(e,t){u._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,F(e.strm)}function U(e,t){e.pending_buf[e.pending++]=t}function P(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function L(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,h=e.strstart>e.w_size-z?e.strstart-(e.w_size-z):0,u=e.window,l=e.w_mask,f=e.prev,c=e.strstart+S,d=u[s+a-1],p=u[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(u[(r=t)+a]===p&&u[r+a-1]===d&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&s<c);if(n=S-(c-s),s=c-S,a<n){if(e.match_start=t,o<=(a=n))break;d=u[s+a-1],p=u[s+a]}}}while((t=f[t&l])>h&&0!=--i);return a<=e.lookahead?a:e.lookahead}function j(e){var t,r,n,i,s,a,o,h,u,l,f=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=f+(f-z)){for(c.arraySet(e.window,e.window,f,f,0),e.match_start-=f,e.strstart-=f,e.block_start-=f,t=r=e.hash_size;n=e.head[--t],e.head[t]=f<=n?n-f:0,--r;);for(t=r=f;n=e.prev[--t],e.prev[t]=f<=n?n-f:0,--r;);i+=f}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,h=e.strstart+e.lookahead,u=i,l=void 0,l=a.avail_in,u<l&&(l=u),r=0===l?0:(a.avail_in-=l,c.arraySet(o,a.input,a.next_in,l,h),1===a.state.wrap?a.adler=d(a.adler,o,l,h):2===a.state.wrap&&(a.adler=p(a.adler,o,l,h)),a.next_in+=l,a.total_in+=l,l),e.lookahead+=r,e.lookahead+e.insert>=x)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+1])&e.hash_mask;e.insert&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+x-1])&e.hash_mask,e.prev[s&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=s,s++,e.insert--,!(e.lookahead+e.insert<x)););}while(e.lookahead<z&&0!==e.strm.avail_in)}function Z(e,t){for(var r,n;;){if(e.lookahead<z){if(j(e),e.lookahead<z&&t===l)return A;if(0===e.lookahead)break}if(r=0,e.lookahead>=x&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==r&&e.strstart-r<=e.w_size-z&&(e.match_length=L(e,r)),e.match_length>=x)if(n=u._tr_tally(e,e.strstart-e.match_start,e.match_length-x),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=x){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart,0!=--e.match_length;);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+1])&e.hash_mask;else n=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(n&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=e.strstart<x-1?e.strstart:x-1,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}function W(e,t){for(var r,n,i;;){if(e.lookahead<z){if(j(e),e.lookahead<z&&t===l)return A;if(0===e.lookahead)break}if(r=0,e.lookahead>=x&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=x-1,0!==r&&e.prev_length<e.max_lazy_match&&e.strstart-r<=e.w_size-z&&(e.match_length=L(e,r),e.match_length<=5&&(1===e.strategy||e.match_length===x&&4096<e.strstart-e.match_start)&&(e.match_length=x-1)),e.prev_length>=x&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-x,n=u._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-x),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+x-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!=--e.prev_length;);if(e.match_available=0,e.match_length=x-1,e.strstart++,n&&(N(e,!1),0===e.strm.avail_out))return A}else if(e.match_available){if((n=u._tr_tally(e,0,e.window[e.strstart-1]))&&N(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return A}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(n=u._tr_tally(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<x-1?e.strstart:x-1,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}function M(e,t,r,n,i){this.good_length=e,this.max_lazy=t,this.nice_length=r,this.max_chain=n,this.func=i}function H(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=v,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new c.Buf16(2*w),this.dyn_dtree=new c.Buf16(2*(2*a+1)),this.bl_tree=new c.Buf16(2*(2*o+1)),D(this.dyn_ltree),D(this.dyn_dtree),D(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new c.Buf16(k+1),this.heap=new c.Buf16(2*s+1),D(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new c.Buf16(2*s+1),D(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function G(e){var t;return e&&e.state?(e.total_in=e.total_out=0,e.data_type=i,(t=e.state).pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?C:E,e.adler=2===t.wrap?0:1,t.last_flush=l,u._tr_init(t),m):R(e,_)}function K(e){var t=G(e);return t===m&&function(e){e.window_size=2*e.w_size,D(e.head),e.max_lazy_match=h[e.level].max_lazy,e.good_match=h[e.level].good_length,e.nice_match=h[e.level].nice_length,e.max_chain_length=h[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=x-1,e.match_available=0,e.ins_h=0}(e.state),t}function Y(e,t,r,n,i,s){if(!e)return _;var a=1;if(t===g&&(t=6),n<0?(a=0,n=-n):15<n&&(a=2,n-=16),i<1||y<i||r!==v||n<8||15<n||t<0||9<t||s<0||b<s)return R(e,_);8===n&&(n=9);var o=new H;return(e.state=o).strm=e,o.wrap=a,o.gzhead=null,o.w_bits=n,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=i+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+x-1)/x),o.window=new c.Buf8(2*o.w_size),o.head=new c.Buf16(o.hash_size),o.prev=new c.Buf16(o.w_size),o.lit_bufsize=1<<i+6,o.pending_buf_size=4*o.lit_bufsize,o.pending_buf=new c.Buf8(o.pending_buf_size),o.d_buf=1*o.lit_bufsize,o.l_buf=3*o.lit_bufsize,o.level=t,o.strategy=s,o.method=r,K(e)}h=[new M(0,0,0,0,function(e,t){var r=65535;for(r>e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(j(e),0===e.lookahead&&t===l)return A;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,N(e,!1),0===e.strm.avail_out))return A;if(e.strstart-e.block_start>=e.w_size-z&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):(e.strstart>e.block_start&&(N(e,!1),e.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(e,t){return Y(e,t,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?_:(e.state.gzhead=t,m):_},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5<t||t<0)return e?R(e,_):_;if(n=e.state,!e.output||!e.input&&0!==e.avail_in||666===n.status&&t!==f)return R(e,0===e.avail_out?-5:_);if(n.strm=e,r=n.last_flush,n.last_flush=t,n.status===C)if(2===n.wrap)e.adler=0,U(n,31),U(n,139),U(n,8),n.gzhead?(U(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),U(n,255&n.gzhead.time),U(n,n.gzhead.time>>8&255),U(n,n.gzhead.time>>16&255),U(n,n.gzhead.time>>24&255),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(U(n,255&n.gzhead.extra.length),U(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(U(n,0),U(n,0),U(n,0),U(n,0),U(n,0),U(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),U(n,3),n.status=E);else{var a=v+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=E,P(n,a),0!==n.strstart&&(P(n,e.adler>>>16),P(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending!==n.pending_buf_size));)U(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindex<n.gzhead.name.length?255&n.gzhead.name.charCodeAt(n.gzindex++):0,U(n,s)}while(0!==s);n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),F(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindex<n.gzhead.comment.length?255&n.gzhead.comment.charCodeAt(n.gzindex++):0,U(n,s)}while(0!==s);n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&F(e),n.pending+2<=n.pending_buf_size&&(U(n,255&e.adler),U(n,e.adler>>8&255),e.adler=0,n.status=E)):n.status=E),0!==n.pending){if(F(e),0===e.avail_out)return n.last_flush=-1,m}else if(0===e.avail_in&&T(t)<=T(r)&&t!==f)return R(e,-5);if(666===n.status&&0!==e.avail_in)return R(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==l&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(j(e),0===e.lookahead)){if(t===l)return A;break}if(e.match_length=0,r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=S){if(j(e),e.lookahead<=S&&t===l)return A;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=x&&0<e.strstart&&(n=a[i=e.strstart-1])===a[++i]&&n===a[++i]&&n===a[++i]){s=e.strstart+S;do{}while(n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&i<s);e.match_length=S-(s-i),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=x?(r=u._tr_tally(e,1,e.match_length-x),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=u._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(N(e,!1),0===e.strm.avail_out))return A}return e.insert=0,t===f?(N(e,!0),0===e.strm.avail_out?O:B):e.last_lit&&(N(e,!1),0===e.strm.avail_out)?A:I}(n,t):h[n.level].func(n,t);if(o!==O&&o!==B||(n.status=666),o===A||o===O)return 0===e.avail_out&&(n.last_flush=-1),m;if(o===I&&(1===t?u._tr_align(n):5!==t&&(u._tr_stored_block(n,0,0,!1),3===t&&(D(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),F(e),0===e.avail_out))return n.last_flush=-1,m}return t!==f?m:n.wrap<=0?1:(2===n.wrap?(U(n,255&e.adler),U(n,e.adler>>8&255),U(n,e.adler>>16&255),U(n,e.adler>>24&255),U(n,255&e.total_in),U(n,e.total_in>>8&255),U(n,e.total_in>>16&255),U(n,e.total_in>>24&255)):(P(n,e.adler>>>16),P(n,65535&e.adler)),F(e),0<n.wrap&&(n.wrap=-n.wrap),0!==n.pending?m:1)},r.deflateEnd=function(e){var t;return e&&e.state?(t=e.state.status)!==C&&69!==t&&73!==t&&91!==t&&103!==t&&t!==E&&666!==t?R(e,_):(e.state=null,t===E?R(e,-3):m):_},r.deflateSetDictionary=function(e,t){var r,n,i,s,a,o,h,u,l=t.length;if(!e||!e.state)return _;if(2===(s=(r=e.state).wrap)||1===s&&r.status!==C||r.lookahead)return _;for(1===s&&(e.adler=d(e.adler,t,l,0)),r.wrap=0,l>=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new c.Buf8(r.w_size),c.arraySet(u,t,l-r.w_size,r.w_size,0),t=u,l=r.w_size),a=e.avail_in,o=e.next_in,h=e.input,e.avail_in=l,e.next_in=0,e.input=t,j(r);r.lookahead>=x;){for(n=r.strstart,i=r.lookahead-(x-1);r.ins_h=(r.ins_h<<r.hash_shift^r.window[n+x-1])&r.hash_mask,r.prev[n&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=n,n++,--i;);r.strstart=n,r.lookahead=x-1,j(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=x-1,r.match_available=0,e.next_in=o,e.input=h,e.avail_in=a,r.wrap=s,m},r.deflateInfo=\"pako deflate (from Nodeca project)\"},{\"../utils/common\":41,\"./adler32\":43,\"./crc32\":45,\"./messages\":51,\"./trees\":52}],47:[function(e,t,r){\"use strict\";t.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1}},{}],48:[function(e,t,r){\"use strict\";t.exports=function(e,t){var r,n,i,s,a,o,h,u,l,f,c,d,p,m,_,g,b,v,y,w,k,x,S,z,C;r=e.state,n=e.next_in,z=e.input,i=n+(e.avail_in-5),s=e.next_out,C=e.output,a=s-(t-e.avail_out),o=s+(e.avail_out-257),h=r.dmax,u=r.wsize,l=r.whave,f=r.wnext,c=r.window,d=r.hold,p=r.bits,m=r.lencode,_=r.distcode,g=(1<<r.lenbits)-1,b=(1<<r.distbits)-1;e:do{p<15&&(d+=z[n++]<<p,p+=8,d+=z[n++]<<p,p+=8),v=m[d&g];t:for(;;){if(d>>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else{if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(d&(1<<y)-1)];continue t}if(32&y){r.mode=12;break e}e.msg=\"invalid literal/length code\",r.mode=30;break e}w=65535&v,(y&=15)&&(p<y&&(d+=z[n++]<<p,p+=8),w+=d&(1<<y)-1,d>>>=y,p-=y),p<15&&(d+=z[n++]<<p,p+=8,d+=z[n++]<<p,p+=8),v=_[d&b];r:for(;;){if(d>>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(d&(1<<y)-1)];continue r}e.msg=\"invalid distance code\",r.mode=30;break e}if(k=65535&v,p<(y&=15)&&(d+=z[n++]<<p,(p+=8)<y&&(d+=z[n++]<<p,p+=8)),h<(k+=d&(1<<y)-1)){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(d>>>=y,p-=y,(y=s-a)<k){if(l<(y=k-y)&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(S=c,(x=0)===f){if(x+=u-y,y<w){for(w-=y;C[s++]=c[x++],--y;);x=s-k,S=C}}else if(f<y){if(x+=u+f-y,(y-=f)<w){for(w-=y;C[s++]=c[x++],--y;);if(x=0,f<w){for(w-=y=f;C[s++]=c[x++],--y;);x=s-k,S=C}}}else if(x+=f-y,y<w){for(w-=y;C[s++]=c[x++],--y;);x=s-k,S=C}for(;2<w;)C[s++]=S[x++],C[s++]=S[x++],C[s++]=S[x++],w-=3;w&&(C[s++]=S[x++],1<w&&(C[s++]=S[x++]))}else{for(x=s-k;C[s++]=C[x++],C[s++]=C[x++],C[s++]=C[x++],2<(w-=3););w&&(C[s++]=C[x++],1<w&&(C[s++]=C[x++]))}break}}break}}while(n<i&&s<o);n-=w=p>>3,d&=(1<<(p-=w<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n<i?i-n+5:5-(n-i),e.avail_out=s<o?o-s+257:257-(s-o),r.hold=d,r.bits=p}},{}],49:[function(e,t,r){\"use strict\";var I=e(\"../utils/common\"),O=e(\"./adler32\"),B=e(\"./crc32\"),R=e(\"./inffast\"),T=e(\"./inftrees\"),D=1,F=2,N=0,U=-2,P=1,n=852,i=592;function L(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function h(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15<t)?U:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,o(e))):U}function u(e,t){var r,n;return e?(n=new s,(e.state=n).window=null,(r=h(e,t))!==N&&(e.state=null),r):U}var l,f,c=!0;function j(e){if(c){var t;for(l=new I.Buf32(512),f=new I.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(T(D,e.lens,0,288,l,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;T(F,e.lens,0,32,f,0,e.work,{bits:5}),c=!1}e.lencode=l,e.lenbits=9,e.distcode=f,e.distbits=5}function Z(e,t,r,n){var i,s=e.state;return null===s.window&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new I.Buf8(s.wsize)),n>=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=i))),0}r.inflateReset=o,r.inflateReset2=h,r.inflateResetKeep=a,r.inflateInit=function(e){return u(e,15)},r.inflateInit2=u,r.inflate=function(e,t){var r,n,i,s,a,o,h,u,l,f,c,d,p,m,_,g,b,v,y,w,k,x,S,z,C=0,E=new I.Buf8(4),A=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&0!==e.avail_in)return U;12===(r=e.state).mode&&(r.mode=13),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,f=o,c=h,x=N;e:for(;;)switch(r.mode){case P:if(0===r.wrap){r.mode=13;break}for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(2&r.wrap&&35615===u){E[r.check=0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&u)){e.msg=\"unknown compression method\",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<<k,e.adler=r.check=1,r.mode=512&u?10:12,l=u=0;break;case 2:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(r.flags=u,8!=(255&r.flags)){e.msg=\"unknown compression method\",r.mode=30;break}if(57344&r.flags){e.msg=\"unknown header flags set\",r.mode=30;break}r.head&&(r.head.text=u>>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.head&&(r.head.time=u),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.head&&(r.head.xflags=255&u,r.head.os=u>>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.length=u,r.head&&(r.head.extra_len=u),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(d=r.length)&&(d=o),d&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,d,k)),512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,r.length-=d),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&d<o;);if(512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,k)break e}else r.head&&(r.head.name=null);r.length=0,r.mode=8;case 8:if(4096&r.flags){if(0===o)break e;for(d=0;k=n[s+d++],r.head&&k&&r.length<65536&&(r.head.comment+=String.fromCharCode(k)),k&&d<o;);if(512&r.flags&&(r.check=B(r.check,n,d,s)),o-=d,s+=d,k)break e}else r.head&&(r.head.comment=null);r.mode=9;case 9:if(512&r.flags){for(;l<16;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u!==(65535&r.check)){e.msg=\"header crc mismatch\",r.mode=30;break}l=u=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}e.adler=r.check=L(u),l=u=0,r.mode=11;case 11:if(0===r.havedict)return e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,2;e.adler=r.check=1,r.mode=12;case 12:if(5===t||6===t)break e;case 13:if(r.last){u>>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}switch(r.last=1&u,l-=1,3&(u>>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;u>>>=2,l-=2;break e;case 2:r.mode=17;break;case 3:e.msg=\"invalid block type\",r.mode=30}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if((65535&u)!=(u>>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(d=r.length){if(o<d&&(d=o),h<d&&(d=h),0===d)break e;I.arraySet(i,n,s,d,a),o-=d,s+=d,h-=d,a+=d,r.length-=d;break}r.mode=12;break;case 17:for(;l<14;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(r.nlen=257+(31&u),u>>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286<r.nlen||30<r.ndist){e.msg=\"too many length or distance symbols\",r.mode=30;break}r.have=0,r.mode=18;case 18:for(;r.have<r.ncode;){for(;l<3;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.lens[A[r.have++]]=7&u,u>>>=3,l-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have<r.nlen+r.ndist;){for(;g=(C=r.lencode[u&(1<<r.lenbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(b<16)u>>>=_,l-=_,r.lens[r.have++]=b;else{if(16===b){for(z=_+2;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u>>>=_,l-=_,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=30;break}k=r.lens[r.have-1],d=3+(3&u),u>>>=2,l-=2}else if(17===b){for(z=_+3;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}l-=_,k=0,d=3+(7&(u>>>=_)),u>>>=3,l-=3}else{for(z=_+7;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}l-=_,k=0,d=11+(127&(u>>>=_)),u>>>=7,l-=7}if(r.have+d>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=30;break}for(;d--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=h){e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,R(e,c),a=e.next_out,i=e.output,h=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<<r.lenbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(g&&0==(240&g)){for(v=_,y=g,w=b;g=(C=r.lencode[w+((u&(1<<v+y)-1)>>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}u>>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.length+=u&(1<<r.extra)-1,u>>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<<r.distbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(0==(240&g)){for(v=_,y=g,w=b;g=(C=r.distcode[w+((u&(1<<v+y)-1)>>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}u>>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,64&g){e.msg=\"invalid distance code\",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l<z;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}r.offset+=u&(1<<r.extra)-1,u>>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===h)break e;if(d=c-h,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break}p=d>r.wnext?(d-=r.wnext,r.wsize-d):r.wnext-d,d>r.length&&(d=r.length),m=r.window}else m=i,p=a-r.offset,d=r.length;for(h<d&&(d=h),h-=d,r.length-=d;i[a++]=m[p++],--d;);0===r.length&&(r.mode=21);break;case 26:if(0===h)break e;i[a++]=r.length,h--,r.mode=21;break;case 27:if(r.wrap){for(;l<32;){if(0===o)break e;o--,u|=n[s++]<<l,l+=8}if(c-=h,e.total_out+=c,r.total+=c,c&&(e.adler=r.check=r.flags?B(r.check,i,c,a-c):O(r.check,i,c,a-c)),c=h,(r.flags?u:L(u))!==r.check){e.msg=\"incorrect data check\",r.mode=30;break}l=u=0}r.mode=28;case 28:if(r.wrap&&r.flags){for(;l<32;){if(0===o)break e;o--,u+=n[s++]<<l,l+=8}if(u!==(4294967295&r.total)){e.msg=\"incorrect length check\",r.mode=30;break}l=u=0}r.mode=29;case 29:x=1;break e;case 30:x=-3;break e;case 31:return-4;case 32:default:return U}return e.next_out=a,e.avail_out=h,e.next_in=s,e.avail_in=o,r.hold=u,r.bits=l,(r.wsize||c!==e.avail_out&&r.mode<30&&(r.mode<27||4!==t))&&Z(e,e.output,e.next_out,c-e.avail_out)?(r.mode=31,-4):(f-=e.avail_in,c-=e.avail_out,e.total_in+=f,e.total_out+=c,r.total+=c,r.wrap&&c&&(e.adler=r.check=r.flags?B(r.check,i,c,e.next_out-c):O(r.check,i,c,e.next_out-c)),e.data_type=r.bits+(r.last?64:0)+(12===r.mode?128:0)+(20===r.mode||15===r.mode?256:0),(0==f&&0===c||4===t)&&x===N&&(x=-5),x)},r.inflateEnd=function(e){if(!e||!e.state)return U;var t=e.state;return t.window&&(t.window=null),e.state=null,N},r.inflateGetHeader=function(e,t){var r;return e&&e.state?0==(2&(r=e.state).wrap)?U:((r.head=t).done=!1,N):U},r.inflateSetDictionary=function(e,t){var r,n=t.length;return e&&e.state?0!==(r=e.state).wrap&&11!==r.mode?U:11===r.mode&&O(1,t,n,0)!==r.check?-3:Z(e,t,n,n)?(r.mode=31,-4):(r.havedict=1,N):U},r.inflateInfo=\"pako inflate (from Nodeca project)\"},{\"../utils/common\":41,\"./adler32\":43,\"./crc32\":45,\"./inffast\":48,\"./inftrees\":50}],50:[function(e,t,r){\"use strict\";var D=e(\"../utils/common\"),F=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],N=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],U=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],P=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];t.exports=function(e,t,r,n,i,s,a,o){var h,u,l,f,c,d,p,m,_,g=o.bits,b=0,v=0,y=0,w=0,k=0,x=0,S=0,z=0,C=0,E=0,A=null,I=0,O=new D.Buf16(16),B=new D.Buf16(16),R=null,T=0;for(b=0;b<=15;b++)O[b]=0;for(v=0;v<n;v++)O[t[r+v]]++;for(k=g,w=15;1<=w&&0===O[w];w--);if(w<k&&(k=w),0===w)return i[s++]=20971520,i[s++]=20971520,o.bits=1,0;for(y=1;y<w&&0===O[y];y++);for(k<y&&(k=y),b=z=1;b<=15;b++)if(z<<=1,(z-=O[b])<0)return-1;if(0<z&&(0===e||1!==w))return-1;for(B[1]=0,b=1;b<15;b++)B[b+1]=B[b]+O[b];for(v=0;v<n;v++)0!==t[r+v]&&(a[B[t[r+v]]++]=v);if(d=0===e?(A=R=a,19):1===e?(A=F,I-=257,R=N,T-=257,256):(A=U,R=P,-1),b=y,c=s,S=v=E=0,l=-1,f=(C=1<<(x=k))-1,1===e&&852<C||2===e&&592<C)return 1;for(;;){for(p=b-S,_=a[v]<d?(m=0,a[v]):a[v]>d?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<<b-S,y=u=1<<x;i[c+(E>>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<<b-1;E&h;)h>>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=t[r+a[v]]}if(k<b&&(E&f)!==l){for(0===S&&(S=k),c+=y,z=1<<(x=b-S);x+S<w&&!((z-=O[x+S])<=0);)x++,z<<=1;if(C+=1<<x,1===e&&852<C||2===e&&592<C)return 1;i[l=E&f]=k<<24|x<<16|c-s|0}}return 0!==E&&(i[c+E]=b-S<<24|64<<16|0),o.bits=k,0}},{\"../utils/common\":41}],51:[function(e,t,r){\"use strict\";t.exports={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"}},{}],52:[function(e,t,r){\"use strict\";var i=e(\"../utils/common\"),o=0,h=1;function n(e){for(var t=e.length;0<=--t;)e[t]=0}var s=0,a=29,u=256,l=u+1+a,f=30,c=19,_=2*l+1,g=15,d=16,p=7,m=256,b=16,v=17,y=18,w=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],k=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],x=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],S=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],z=new Array(2*(l+2));n(z);var C=new Array(2*f);n(C);var E=new Array(512);n(E);var A=new Array(256);n(A);var I=new Array(a);n(I);var O,B,R,T=new Array(f);function D(e,t,r,n,i){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=e&&e.length}function F(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function N(e){return e<256?E[e]:E[256+(e>>>7)]}function U(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function P(e,t,r){e.bi_valid>d-r?(e.bi_buf|=t<<e.bi_valid&65535,U(e,e.bi_buf),e.bi_buf=t>>d-e.bi_valid,e.bi_valid+=r-d):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=r)}function L(e,t,r){P(e,r[2*t],r[2*t+1])}function j(e,t){for(var r=0;r|=1&e,e>>>=1,r<<=1,0<--t;);return r>>>1}function Z(e,t,r){var n,i,s=new Array(g+1),a=0;for(n=1;n<=g;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=j(s[o]++,o))}}function W(e){var t;for(t=0;t<l;t++)e.dyn_ltree[2*t]=0;for(t=0;t<f;t++)e.dyn_dtree[2*t]=0;for(t=0;t<c;t++)e.bl_tree[2*t]=0;e.dyn_ltree[2*m]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function M(e){8<e.bi_valid?U(e,e.bi_buf):0<e.bi_valid&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function H(e,t,r,n){var i=2*t,s=2*r;return e[i]<e[s]||e[i]===e[s]&&n[t]<=n[r]}function G(e,t,r){for(var n=e.heap[r],i=r<<1;i<=e.heap_len&&(i<e.heap_len&&H(t,e.heap[i+1],e.heap[i],e.depth)&&i++,!H(t,n,e.heap[i],e.depth));)e.heap[r]=e.heap[i],r=i,i<<=1;e.heap[r]=n}function K(e,t,r){var n,i,s,a,o=0;if(0!==e.last_lit)for(;n=e.pending_buf[e.d_buf+2*o]<<8|e.pending_buf[e.d_buf+2*o+1],i=e.pending_buf[e.l_buf+o],o++,0===n?L(e,i,t):(L(e,(s=A[i])+u+1,t),0!==(a=w[s])&&P(e,i-=I[s],a),L(e,s=N(--n),r),0!==(a=k[s])&&P(e,n-=T[s],a)),o<e.last_lit;);L(e,m,t)}function Y(e,t){var r,n,i,s=t.dyn_tree,a=t.stat_desc.static_tree,o=t.stat_desc.has_stree,h=t.stat_desc.elems,u=-1;for(e.heap_len=0,e.heap_max=_,r=0;r<h;r++)0!==s[2*r]?(e.heap[++e.heap_len]=u=r,e.depth[r]=0):s[2*r+1]=0;for(;e.heap_len<2;)s[2*(i=e.heap[++e.heap_len]=u<2?++u:0)]=1,e.depth[i]=0,e.opt_len--,o&&(e.static_len-=a[2*i+1]);for(t.max_code=u,r=e.heap_len>>1;1<=r;r--)G(e,s,r);for(i=h;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],G(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,G(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,h=t.dyn_tree,u=t.max_code,l=t.stat_desc.static_tree,f=t.stat_desc.has_stree,c=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=g;s++)e.bl_count[s]=0;for(h[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<_;r++)p<(s=h[2*h[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),h[2*n+1]=s,u<n||(e.bl_count[s]++,a=0,d<=n&&(a=c[n-d]),o=h[2*n],e.opt_len+=o*(s+a),f&&(e.static_len+=o*(l[2*n+1]+a)));if(0!==m){do{for(s=p-1;0===e.bl_count[s];)s--;e.bl_count[s]--,e.bl_count[s+1]+=2,e.bl_count[p]--,m-=2}while(0<m);for(s=p;0!==s;s--)for(n=e.bl_count[s];0!==n;)u<(i=e.heap[--r])||(h[2*i+1]!==s&&(e.opt_len+=(s-h[2*i+1])*h[2*i],h[2*i+1]=s),n--)}}(e,t),Z(s,u,e.bl_count)}function X(e,t,r){var n,i,s=-1,a=t[1],o=0,h=7,u=4;for(0===a&&(h=138,u=3),t[2*(r+1)+1]=65535,n=0;n<=r;n++)i=a,a=t[2*(n+1)+1],++o<h&&i===a||(o<u?e.bl_tree[2*i]+=o:0!==i?(i!==s&&e.bl_tree[2*i]++,e.bl_tree[2*b]++):o<=10?e.bl_tree[2*v]++:e.bl_tree[2*y]++,s=i,u=(o=0)===a?(h=138,3):i===a?(h=6,3):(h=7,4))}function V(e,t,r){var n,i,s=-1,a=t[1],o=0,h=7,u=4;for(0===a&&(h=138,u=3),n=0;n<=r;n++)if(i=a,a=t[2*(n+1)+1],!(++o<h&&i===a)){if(o<u)for(;L(e,i,e.bl_tree),0!=--o;);else 0!==i?(i!==s&&(L(e,i,e.bl_tree),o--),L(e,b,e.bl_tree),P(e,o-3,2)):o<=10?(L(e,v,e.bl_tree),P(e,o-3,3)):(L(e,y,e.bl_tree),P(e,o-11,7));s=i,u=(o=0)===a?(h=138,3):i===a?(h=6,3):(h=7,4)}}n(T);var q=!1;function J(e,t,r,n){P(e,(s<<1)+(n?1:0),3),function(e,t,r,n){M(e),n&&(U(e,r),U(e,~r)),i.arraySet(e.pending_buf,e.window,t,r,e.pending),e.pending+=r}(e,t,r,!0)}r._tr_init=function(e){q||(function(){var e,t,r,n,i,s=new Array(g+1);for(n=r=0;n<a-1;n++)for(I[n]=r,e=0;e<1<<w[n];e++)A[r++]=n;for(A[r-1]=n,n=i=0;n<16;n++)for(T[n]=i,e=0;e<1<<k[n];e++)E[i++]=n;for(i>>=7;n<f;n++)for(T[n]=i<<7,e=0;e<1<<k[n]-7;e++)E[256+i++]=n;for(t=0;t<=g;t++)s[t]=0;for(e=0;e<=143;)z[2*e+1]=8,e++,s[8]++;for(;e<=255;)z[2*e+1]=9,e++,s[9]++;for(;e<=279;)z[2*e+1]=7,e++,s[7]++;for(;e<=287;)z[2*e+1]=8,e++,s[8]++;for(Z(z,l+1,s),e=0;e<f;e++)C[2*e+1]=5,C[2*e]=j(e,5);O=new D(z,w,u+1,l,g),B=new D(C,k,0,f,g),R=new D(new Array(0),x,0,c,p)}(),q=!0),e.l_desc=new F(e.dyn_ltree,O),e.d_desc=new F(e.dyn_dtree,B),e.bl_desc=new F(e.bl_tree,R),e.bi_buf=0,e.bi_valid=0,W(e)},r._tr_stored_block=J,r._tr_flush_block=function(e,t,r,n){var i,s,a=0;0<e.level?(2===e.strm.data_type&&(e.strm.data_type=function(e){var t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return o;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return h;for(t=32;t<u;t++)if(0!==e.dyn_ltree[2*t])return h;return o}(e)),Y(e,e.l_desc),Y(e,e.d_desc),a=function(e){var t;for(X(e,e.dyn_ltree,e.l_desc.max_code),X(e,e.dyn_dtree,e.d_desc.max_code),Y(e,e.bl_desc),t=c-1;3<=t&&0===e.bl_tree[2*S[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),i=e.opt_len+3+7>>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?J(e,t,r,n):4===e.strategy||s===i?(P(e,2+(n?1:0),3),K(e,z,C)):(P(e,4+(n?1:0),3),function(e,t,r,n){var i;for(P(e,t-257,5),P(e,r-1,5),P(e,n-4,4),i=0;i<n;i++)P(e,e.bl_tree[2*S[i]+1],3);V(e,e.dyn_ltree,t-1),V(e,e.dyn_dtree,r-1)}(e,e.l_desc.max_code+1,e.d_desc.max_code+1,a+1),K(e,e.dyn_ltree,e.dyn_dtree)),W(e),n&&M(e)},r._tr_tally=function(e,t,r){return e.pending_buf[e.d_buf+2*e.last_lit]=t>>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(A[r]+u+1)]++,e.dyn_dtree[2*N(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){P(e,2,3),L(e,m,z),function(e){16===e.bi_valid?(U(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{\"../utils/common\":41}],53:[function(e,t,r){\"use strict\";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){(function(e){!function(r,n){\"use strict\";if(!r.setImmediate){var i,s,t,a,o=1,h={},u=!1,l=r.document,e=Object.getPrototypeOf&&Object.getPrototypeOf(r);e=e&&e.setTimeout?e:r,i=\"[object process]\"==={}.toString.call(r.process)?function(e){process.nextTick(function(){c(e)})}:function(){if(r.postMessage&&!r.importScripts){var e=!0,t=r.onmessage;return r.onmessage=function(){e=!1},r.postMessage(\"\",\"*\"),r.onmessage=t,e}}()?(a=\"setImmediate$\"+Math.random()+\"$\",r.addEventListener?r.addEventListener(\"message\",d,!1):r.attachEvent(\"onmessage\",d),function(e){r.postMessage(a+e,\"*\")}):r.MessageChannel?((t=new MessageChannel).port1.onmessage=function(e){c(e.data)},function(e){t.port2.postMessage(e)}):l&&\"onreadystatechange\"in l.createElement(\"script\")?(s=l.documentElement,function(e){var t=l.createElement(\"script\");t.onreadystatechange=function(){c(e),t.onreadystatechange=null,s.removeChild(t),t=null},s.appendChild(t)}):function(e){setTimeout(c,0,e)},e.setImmediate=function(e){\"function\"!=typeof e&&(e=new Function(\"\"+e));for(var t=new Array(arguments.length-1),r=0;r<t.length;r++)t[r]=arguments[r+1];var n={callback:e,args:t};return h[o]=n,i(o),o++},e.clearImmediate=f}function f(e){delete h[e]}function c(e){if(u)setTimeout(c,0,e);else{var t=h[e];if(t){u=!0;try{!function(e){var t=e.callback,r=e.args;switch(r.length){case 0:t();break;case 1:t(r[0]);break;case 2:t(r[0],r[1]);break;case 3:t(r[0],r[1],r[2]);break;default:t.apply(n,r)}}(t)}finally{f(e),u=!1}}}}function d(e){e.source===r&&\"string\"==typeof e.data&&0===e.data.indexOf(a)&&c(+e.data.slice(a.length))}}(\"undefined\"==typeof self?void 0===e?this:e:self)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}]},{},[10])(10)});","import JSZip from 'jszip';\n/**\n * Create a FileList from a zip\n * @param zipContent\n * @returns\n */\nexport async function fileListFromZip(zipContent) {\n    const jsZip = new JSZip();\n    const zip = await jsZip.loadAsync(zipContent);\n    const fileList = [];\n    for (let key in zip.files) {\n        const entry = zip.files[key];\n        if (entry.dir)\n            continue;\n        fileList.push({\n            name: entry.name.replace(/^.*\\//, ''),\n            webkitRelativePath: entry.name,\n            lastModified: entry.date.getTime(),\n            // @ts-expect-error _data is not exposed because missing for folder but it is really there\n            size: entry._data.uncompressedSize,\n            text: () => {\n                return entry.async('text');\n            },\n            arrayBuffer: () => {\n                return entry.async('arraybuffer');\n            },\n        });\n    }\n    return fileList;\n}\n//# sourceMappingURL=fileListFromZip.js.map","import { isAnyArray } from 'is-any-array';\n\nexport function convertToFloatArray(data) {\n  if (isAnyArray(data[0])) {\n    return data.map((e) => Float64Array.from(e));\n  } else if (isAnyArray(data)) {\n    return Float64Array.from(data);\n  } else if (typeof data === 'object') {\n    let keys = Object.keys(data);\n    for (let key of keys) {\n      data[key] = convertToFloatArray(data[key]);\n    }\n    return data;\n  }\n  return data;\n}\n","/* eslint-disable no-loss-of-precision */\n/**\n * Returns the group delay for old Bruker NMR spectra\n * @param {number} gspfvs\n * @param {number} decim\n * @return {number}\n */\nexport function getDigitalFilterParameters(grpdly, dspfvs, decim) {\n  let value;\n  if (grpdly > 0) {\n    value = Number(grpdly);\n  } else {\n    if (dspfvs > 14) {\n      value = 0;\n    } else {\n      if (!brukerDspTable[dspfvs]) {\n        throw new Error('dspfvs not in lookup table');\n      } else {\n        const dspfvsList = brukerDspTable[dspfvs];\n        if (!dspfvsList[decim]) throw new Error('decim not in lookup table');\n        value = dspfvsList[decim];\n      }\n    }\n  }\n  return value;\n}\n\nconst brukerDspTable = {\n  10: {\n    2: 44.75,\n    3: 33.5,\n    4: 66.625,\n    6: 59.083333333333333,\n    8: 68.5625,\n    12: 60.375,\n    16: 69.53125,\n    24: 61.020833333333333,\n    32: 70.015625,\n    48: 61.34375,\n    64: 70.2578125,\n    96: 61.505208333333333,\n    128: 70.37890625,\n    192: 61.5859375,\n    256: 70.439453125,\n    384: 61.626302083333333,\n    512: 70.4697265625,\n    768: 61.646484375,\n    1024: 70.48486328125,\n    1536: 61.656575520833333,\n    2048: 70.492431640625,\n  },\n  11: {\n    2: 46,\n    3: 36.5,\n    4: 48,\n    6: 50.166666666666667,\n    8: 53.25,\n    12: 69.5,\n    16: 72.25,\n    24: 70.166666666666667,\n    32: 72.75,\n    48: 70.5,\n    64: 73,\n    96: 70.666666666666667,\n    128: 72.5,\n    192: 71.333333333333333,\n    256: 72.25,\n    384: 71.666666666666667,\n    512: 72.125,\n    768: 71.833333333333333,\n    1024: 72.0625,\n    1536: 71.916666666666667,\n    2048: 72.03125,\n  },\n  12: {\n    2: 46,\n    3: 36.5,\n    4: 48,\n    6: 50.166666666666667,\n    8: 53.25,\n    12: 69.5,\n    16: 71.625,\n    24: 70.166666666666667,\n    32: 72.125,\n    48: 70.5,\n    64: 72.375,\n    96: 70.666666666666667,\n    128: 72.5,\n    192: 71.333333333333333,\n    256: 72.25,\n    384: 71.666666666666667,\n    512: 72.125,\n    768: 71.833333333333333,\n    1024: 72.0625,\n    1536: 71.916666666666667,\n    2048: 72.03125,\n  },\n  13: {\n    2: 2.75,\n    3: 2.8333333333333333,\n    4: 2.875,\n    6: 2.9166666666666667,\n    8: 2.9375,\n    12: 2.9583333333333333,\n    16: 2.96875,\n    24: 2.9791666666666667,\n    32: 2.984375,\n    48: 2.9895833333333333,\n    64: 2.9921875,\n    96: 2.9947916666666667,\n  },\n};\n","export function getNucleusFromMetadata(metaData, info, subfix) {\n  let nucleus = [];\n  if (metaData[`${subfix}AXNUC`]) {\n    nucleus = metaData[`${subfix}AXNUC`];\n    if (!Array.isArray(nucleus)) nucleus = [nucleus];\n    nucleus = checkForNucleus(nucleus);\n  }\n\n  if (nucleus.length < 1 && metaData[`${subfix}NUC1`]) {\n    nucleus = metaData[`${subfix}NUC1`];\n    if (!Array.isArray(nucleus)) nucleus = [nucleus];\n    nucleus = checkForNucleus(nucleus);\n  }\n\n  if (nucleus.length === 0) {\n    if (metaData['.NUCLEUS']) {\n      nucleus = metaData['.NUCLEUS'].split(',').map((nuc) => nuc.trim());\n    } else if (metaData['.OBSERVENUCLEUS']) {\n      nucleus = [metaData['.OBSERVENUCLEUS'].replace(/[^A-Za-z0-9]/g, '')];\n    } else {\n      nucleus = getNucleusFrom2DExperiment(info.experiment);\n    }\n    nucleus = checkForNucleus(nucleus);\n  }\n\n  if (metaData['2D_X_NUCLEUS'] && metaData['2D_Y_NUCLEUS']) {\n    nucleus = [\n      metaData['2D_X_NUCLEUS'].replace(/[^A-Za-z0-9]/g, ''),\n      metaData['2D_Y_NUCLEUS'].replace(/[^A-Za-z0-9]/g, ''),\n    ];\n  }\n  return nucleus;\n}\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\nfunction getNucleusFrom2DExperiment(experiment) {\n  if (typeof experiment !== 'string') {\n    return [];\n  }\n  experiment = experiment.toLowerCase();\n  if (experiment.includes('jres')) {\n    return ['1H', 'Hz'];\n  }\n  if (experiment.includes('hmbc') || experiment.includes('hsqc')) {\n    return ['1H', '13C'];\n  }\n  if (experiment.includes('cosy') || experiment.includes('tocsy')) {\n    return ['1H', '1H'];\n  }\n  return [];\n}\n\nfunction checkForNucleus(nucleus) {\n  nucleus = nucleus.map((value) =>\n    value\n      .replace(/[^A-Za-z0-9]/g, '')\n      .replace('NA', '')\n      .replace('off', ''),\n  );\n  let beforeLength = nucleus.length;\n  nucleus = nucleus.filter((value) => value);\n  return nucleus.length !== beforeLength ? [] : nucleus;\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 = {}, options = {}) {\n  const { subfix = '' } = options;\n\n  if (meta === null) meta = {};\n  if (typeof meta === 'string') meta = { pulseSequence: meta };\n\n  let spectyp = info[`${subfix}SPECTYP`];\n  spectyp = (Array.isArray(spectyp) ? spectyp[0] : spectyp || '')\n    .replace(/^<(.*)>$/, '$1') // eslint-disable-line prefer-named-capture-group\n    .toLowerCase();\n\n  if (spectyp.length > 0 && spectyp !== 'undefined') return spectyp;\n\n  let pulse = Array.isArray(meta.pulseSequence)\n    ? meta.pulseSequence[0]\n    : meta.pulseSequence || '';\n\n  if (typeof pulse !== 'string') {\n    return meta.dimension ? `${meta.dimension}d` : '';\n  }\n\n  pulse = pulse.toLowerCase();\n  if (\n    pulse.includes('zg') ||\n    pulse.includes('single_pulse_dec') ||\n    pulse.includes('udeft')\n  ) {\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('hmqc')) {\n    return 'hmqc';\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  if (pulse.includes('inad')) {\n    return 'inadequate';\n  }\n\n  if (pulse.includes('adeq')) {\n    return 'adequate';\n  }\n\n  return meta.dimension ? `${meta.dimension}d` : '';\n}\n","import { gyromagneticRatio } from 'nmr-processing';\n\nimport { getDigitalFilterParameters } from './getDigitalFilterParameters';\nimport { getNucleusFromMetadata } from './getNucleusFromMetadata';\nimport { getSpectrumType } from './getSpectrumType';\n\nexport function getInfoFromJCAMP(metaData, options = {}) {\n  const { subfix = '' } = options;\n  const info = {\n    dimension: 0,\n    nucleus: [],\n    isFid: false,\n    isFt: false,\n    isComplex: false,\n  };\n  let metadataString = JSON.stringify(metaData);\n  const separator = metadataString.match('\\r\\n') ? '\\r\\n' : '\\n';\n\n  let { JCAMPDX: jcampdx = '', ORIGIN: origin = '' } = metaData;\n  let creator = String(jcampdx).toLowerCase() + origin.toLowerCase();\n\n  if (creator.includes('mestre') || creator.includes('nova')) {\n    creator = 'mnova';\n  }\n\n  if (creator === 'mnova') {\n    if (metaData.LONGDATE) {\n      info.date = metaData.LONGDATE;\n    }\n  }\n\n  info.nucleus = getNucleusFromMetadata(metaData, info, subfix);\n  info.dimension = info.nucleus.length;\n\n  maybeAdd(info, 'title', metaData.TITLE);\n  maybeAdd(info, 'solvent', metaData['.SOLVENTNAME']);\n  maybeAdd(info, 'temperature', metaData[`${subfix}TE`] || metaData['.TE']);\n  maybeAdd(info, 'type', metaData.DATATYPE);\n\n  if (info.type) {\n    let typeLowerCase = info.type[0].toUpperCase();\n    if (typeLowerCase.indexOf('FID') >= 0) {\n      info.isFid = true;\n      info.isComplex = true;\n    } else if (typeLowerCase.indexOf('SPECTRUM') >= 0) {\n      info.isFt = true;\n      info.isComplex = true;\n    }\n  }\n\n  maybeAdd(\n    info,\n    'pulseSequence',\n    metaData['.PULSESEQUENCE'] ||\n    metaData['.PULPROG'] ||\n    metaData[`${subfix}PULPROG`],\n  );\n  maybeAdd(info, 'experiment', getSpectrumType(info, metaData, { subfix }));\n\n  maybeAddNumber(info, 'originFrequency', metaData['.OBSERVEFREQUENCY']);\n  if (creator !== 'mnova' && creator !== 'mestre') {\n    const gyromagneticRatioConst = gyromagneticRatio[info.nucleus[0]];\n    maybeAdd(info, 'probeName', metaData[`${subfix}PROBHD`]);\n    maybeAdd(info, 'originFrequency', metaData[`${subfix}SFO1`]);\n    maybeAdd(info, 'baseFrequency', metaData[`${subfix}BF1`]);\n    if (!('baseFrequency' in info) && ('originFrequency' in info)) {\n      maybeAdd(info, 'baseFrequency', info.originFrequency);\n    }\n\n    if (!['baseFrequency', 'originFrequency'].some((e) => !info[e])) {\n      const { baseFrequency, originFrequency } = info;\n      let fieldStrength =\n        2 * Math.PI * (baseFrequency[0] / gyromagneticRatioConst) * 1e6;\n\n      let frequencyOffset = baseFrequency.map(\n        (bf, i) => (originFrequency[i] - bf) * 1e6,\n      );\n\n      maybeAdd(info, 'fieldStrength', fieldStrength);\n      maybeAdd(info, 'frequencyOffset', frequencyOffset);\n    }\n    maybeAddNumber(info, 'spectralWidth', metaData[`${subfix}SW`]);\n    maybeAddNumber(info, 'spectralWidth', metaData[`${subfix}QM_SPECTRAL_WIDTH`]);\n\n    maybeAdd(info, 'numberOfPoints', metaData[`${subfix}TD`]);\n\n    const numberOfPoints = info.numberOfPoints;\n\n    maybeAdd(info, 'sampleName', metaData[`${subfix}NAME`]);\n\n    if (metaData[`${subfix}FNTYPE`] !== undefined) {\n      maybeAdd(\n        info,\n        'acquisitionMode',\n        parseInt(metaData[`${subfix}FNTYPE`], 10),\n      );\n    }\n    let varName = metaData[`${subfix}VARNAME`]\n      ? metaData[`${subfix}VARNAME`].split(',')[0]\n      : '';\n    if (varName === 'TIME') {\n      let value =\n        typeof metaData.LAST === 'string' || metaData.LAST instanceof String\n          ? metaData.LAST.replace(' ', '').split(',')[0]\n          : metaData.LAST;\n      maybeAddNumber(info, 'acquisitionTime', value);\n    }\n\n    if (!info.acquisitionTime) {\n      if (!['numberOfPoints', 'spectralWidth'].some((e) => !info[e])) {\n        const { spectralWidth, originFrequency } = info;\n        maybeAdd(\n          info,\n          'acquisitionTime',\n          Number(\n            (numberOfPoints[0] - 1) /\n            (2 * spectralWidth[0] * originFrequency[0]),\n          ),\n        );\n      }\n    }\n\n    if (metaData[`${subfix}P`]) {\n      let pulseStrength =\n        1e6 / (metaData[`${subfix}P`].split(separator)[1].split(' ')[1] * 4);\n      maybeAdd(info, 'pulseStrength90', pulseStrength);\n    }\n    if (metaData[`${subfix}D`]) {\n      let relaxationTime = metaData[`${subfix}D`]\n        .split(separator)[1]\n        .split(' ')[1];\n      maybeAddNumber(info, 'relaxationTime', relaxationTime);\n    }\n\n    maybeAddNumber(info, 'numberOfScans', metaData[`${subfix}NS`]);\n    maybeAddNumber(info, 'numberOfScans', metaData[`${subfix}QM_NSCANS`]);\n\n    let increment;\n    if (!['numberOfPoints', 'spectralWidth'].some((e) => !info[e])) {\n      const { spectralWidth, numberOfPoints } = info;\n      if (info.isFid) {\n        maybeAdd(info, 'groupDelay', metaData[`${subfix}GRPDLY`] || 0);\n        maybeAdd(info, 'DSPFVS', metaData[`${subfix}DSPFVS`]);\n        maybeAdd(info, 'DECIM', metaData[`${subfix}DECIM`]);\n\n        if (!['groupDelay', 'DSPFVS', 'DECIM'].some((e) => !info[e])) {\n          let { groupDelay, DSPFVS, DECIM } = info;\n          let digitalFilterParameters = getDigitalFilterParameters(\n            groupDelay[0],\n            DSPFVS[0],\n            DECIM[0],\n          );\n          maybeAdd(info, 'digitalFilter', digitalFilterParameters);\n        }\n\n        increment = numberOfPoints.map((nb) => {\n          return info.acquisitionTime[0] / (nb - 1);\n        });\n      } else {\n        increment = numberOfPoints.map((nb, i) => {\n          return spectralWidth[i] / (nb - 1);\n        });\n      }\n    }\n\n    maybeAdd(info, 'increment', increment);\n    if (metaData[`${subfix}DATE`]) {\n      info.date = new Date(\n        parseInt(metaData[`${subfix}DATE`], 10) * 1000,\n      ).toISOString();\n    }\n\n    if (!info.solvent) {\n      maybeAdd(\n        info,\n        'solvent',\n        Array.isArray(metaData[`${subfix}SOLVENT`])\n          ? metaData[`${subfix}SOLVENT`][0]\n          : metaData[`${subfix}SOLVENT`],\n      );\n    }\n  }\n\n  if (metaData.SYMBOL) {\n    let symbols = metaData.SYMBOL.split(/[, ]+/);\n    if (symbols.includes('R') && symbols.includes('I')) {\n      info.isComplex = true;\n    }\n  }\n\n  for (let key in info) {\n    if (info[key].length === 1) info[key] = info[key][0];\n  }\n\n  if (!Array.isArray(info.nucleus)) info.nucleus = [info.nucleus];\n\n  return info;\n}\n\nfunction maybeAddNumber(obj, name, value) {\n  if (value === undefined) return;\n  if (typeof value === 'string') {\n    value = Number(value.replace(/\\$.*/, ''));\n  }\n  maybeAdd(obj, name, value);\n}\n\nfunction maybeAdd(obj, name, value) {\n  if (value === undefined) return;\n  if (Array.isArray(value)) {\n    obj[name] = value.map(cleanValue);\n  } else {\n    obj[name] = [cleanValue(value)];\n  }\n}\n\nfunction cleanValue(value) {\n  if (typeof value === 'string') {\n    if (value.startsWith('<') && value.endsWith('>')) {\n      value = value.substring(1, value.length - 1);\n    }\n    value = value.trim();\n  }\n  return value;\n}\n","import { convertFileList } from 'brukerconverter';\nimport { fileListFromZip } from 'filelist-from';\n\n\nimport packageJson from '../package.json';\n\nimport { convertToFloatArray } from './utils/convertToFloatArray';\nimport { getInfoFromJCAMP } from './utils/getInfoFromJCAMP';\n\nconst defaultOptions = {\n  converter: {\n    xy: true,\n    noContour: true,\n    keepRecordsRegExp: /.*/,\n    profiling: true,\n  }\n};\n\nexport async function fromBruker(zipFile, options = {}) {\n  const fileList = await fileListFromZip(zipFile);\n  let parseData = await convertFileList(\n    fileList,\n    { ...defaultOptions, ...options },\n  );\n  let dataStructure = [];\n  for (let entry of parseData) {\n    let metadata = Object.assign({}, entry.info, entry.meta);\n    let info = getInfoFromJCAMP(metadata);\n\n    let dimensions = [];\n    let dependentVariables = [];\n\n    let dependentVariable = {};\n\n    if (info.dimension === 1) {\n      dependentVariable.components = entry.spectra;\n    } else if (info.dimension === 2) {\n      entry.minMax.z = convertToFloatArray(entry.minMax.z);\n      dependentVariable.components = entry.minMax;\n    }\n\n    let dimension = {\n      increment: info.increment,\n      numberOfPoints: info.numberOfPoints,\n    };\n\n    if (info.fid) {\n      dimension.coordinatesOffset = {\n        magnitude: -info.digitalFilter * info.increment,\n        units: 'second',\n      };\n    } else {\n      dimension.coordinatesOffset = {\n        magnitude:\n          info.frequencyOffset / info.baseFrequency - 0.5 * info.spectraWidth,\n        units: 'ppm',\n      };\n    }\n\n    dimensions.push(dimension);\n    dependentVariables.push(dependentVariable);\n\n    const { source } = entry;\n\n    dataStructure.push({\n      dimensions,\n      dependentVariables,\n      source,\n      info: info,\n      meta: metadata,\n      timeStamp: new Date().valueOf(),\n      version: packageJson.version,\n    });\n  }\n  return dataStructure;\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","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","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","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","import { gyromagneticRatio } from 'gyromagnetic-ratio';\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 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 { convert } from 'jcampconverter';\n\nimport packageJson from '../package.json';\n\nimport { convertToFloatArray } from './utils/convertToFloatArray';\nimport { getInfoFromJCAMP } from './utils/getInfoFromJCAMP';\n\nconst expectedTypes = ['ndnmrspectrum', 'ndnmrfid', 'nmrspectrum', 'nmrfid'];\n\nexport function fromJCAMP(buffer, options = {}) {\n  const {\n    noContour = true,\n    xy = true,\n    keepRecordsRegExp = /.*/,\n    profiling = true,\n  } = options;\n\n  let parsedData = convert(buffer, {\n    noContour,\n    xy,\n    keepRecordsRegExp,\n    profiling,\n  });\n\n  let dataStructure = [];\n  let entries = parsedData.flatten;\n  for (let entry of entries) {\n    if (!isSpectraData(entry)) continue;\n    if ((entry.spectra && entry.spectra.length > 0) || entry.minMax) {\n      let metadata = Object.assign({}, entry.info, entry.meta);\n      let info = getInfoFromJCAMP(metadata);\n\n      if (info.experiment === 'wobble_curve') continue;\n\n      let dimensions = [];\n      let dependentVariables = [];\n\n      let dependentVariable = {};\n      if (info.dimension === 1) {\n        for (let i = 0; i < entry.spectra.length; i++) {\n          let data = entry.spectra[i].data;\n          data = convertToFloatArray(data);\n        }\n        dependentVariable.components = entry.spectra;\n      } else if (info.dimension === 2) {\n        entry.minMax.z = convertToFloatArray(entry.minMax.z);\n        dependentVariable.components = entry.minMax;\n      }\n      let dimension = {\n        increment: info.increment,\n        numberOfPoints: info.numberOfPoints,\n      };\n\n      if (info.fid) {\n        dimension.coordinatesOffset = {\n          magnitude: -info.digitalFilter * info.increment,\n          units: 'second',\n        };\n      } else {\n        dimension.coordinatesOffset = {\n          magnitude:\n            info.frequencyOffset / info.baseFrequency - 0.5 * info.spectraWidth,\n          units: 'ppm',\n        };\n      }\n      dimensions.push(dimension);\n      dependentVariables.push(dependentVariable);\n\n      const data = {\n        dimensions,\n        dependentVariables,\n        info,\n        meta: metadata,\n        timeStamp: new Date().valueOf(),\n        version: packageJson.version,\n      };\n\n      dataStructure.push(data);\n    }\n  }\n\n  return dataStructure;\n}\n\nfunction isSpectraData(entry) {\n  const { dataType = '', dataClass = '' } = entry;\n\n  const inputDataType = dataType.replace(/\\s/g, '').toLowerCase();\n  const inputDataClass = dataClass.replace(/\\s/g, '').toLowerCase();\n  return (\n    expectedTypes.some((type) => type === inputDataType) &&\n    inputDataClass !== 'peak table'\n  );\n}\n","import { parseJEOL } from 'jeolconverter';\nimport { gyromagneticRatio } from 'nmr-processing';\n\nimport packageJson from '../package.json';\n\nimport { formatDependentVariable } from './formatDependentVariable';\nimport { formatLinearDimension } from './formatLinearDimension';\nimport { toKeyValue } from './utils/toKeyValue';\n\nexport function fromJEOL(buffer) {\n  let parsedData = parseJEOL(buffer);\n  let info = parsedData.info;\n  let headers = parsedData.headers;\n  let parameters = parsedData.parameters;\n  let paramArray = Object.assign({}, parameters.paramArray);\n  delete parameters.paramArray;\n  let data = parsedData.data;\n\n  // curation of parameters\n  let newInfo = {};\n  newInfo.title = `title: ${headers.title} / comment: ${headers.comment} / author:${headers.author} / site: ${headers.site}`;\n  newInfo.nucleus = info.nucleus.map((x) => {\n    if (x === 'Proton') {\n      x = '1H';\n    }\n    if (x === 'Carbon13') {\n      x = '13C';\n    }\n    if (x === 'Nitrogen15') {\n      x = '15N';\n    }\n    return x;\n  });\n  newInfo.sampleName = info.sampleName;\n  newInfo.date = JSON.stringify(info.creationTime);\n  newInfo.author = info.author;\n  //newInfo.comment = info.comment;\n  newInfo.solvent = info.solvent;\n  newInfo.temperature = info.temperature.magnitude;\n  newInfo.probeName = info.probeName || '';\n  newInfo.fieldStrength = info.fieldStrength.magnitude;\n\n  let gyromagneticRatioConstants = newInfo.nucleus.map(\n    (nucleus) => gyromagneticRatio[nucleus],\n  );\n  newInfo.baseFrequency = gyromagneticRatioConstants.map(\n    (gmr) => (info.fieldStrength.magnitude * gmr) / (2 * Math.PI * 1e6),\n  );\n  newInfo.pulseSequence = info.experiment;\n  newInfo.temperature =\n    info.temperature.unit.toLowerCase() === 'celsius'\n      ? 273.15 + info.temperature.magnitude\n      : info.temperature.magnitude;\n  newInfo.digitalFilter = info.digitalFilter;\n  newInfo.pulseStrength90 = 1 / (4 * info.pulseStrength90.magnitude);\n  newInfo.numberOfScans = info.numberOfScans;\n  newInfo.relaxationTime = info.relaxationTime.magnitude;\n\n  newInfo.isComplex = info.dataSections.includes('im');\n  newInfo.isFid = info.dataUnits[0] === 'Second';\n  newInfo.isFt = info.dataUnits[0] === 'Ppm';\n\n  newInfo.dimension = info.dimension;\n\n  const dimension = newInfo.dimension;\n  newInfo.originFrequency = info.originFrequency\n    .map((d) => d.magnitude / 1e6)\n    .slice(0, dimension);\n  newInfo.numberOfPoints = info.dataPoints.slice(0, 1);\n  newInfo.frequencyOffset = info.frequencyOffset\n    .map((f, i) => f.magnitude * newInfo.baseFrequency[i])\n    .slice(0, dimension);\n  newInfo.acquisitionTime = info.acquisitionTime\n    .map((a) => a.magnitude)\n    .slice(0, dimension);\n  newInfo.spectralWidth = info.spectralWidth\n    .map((sw, i) => (sw.magnitude / info.originFrequency[i].magnitude) * 1e6)\n    .slice(0, dimension);\n\n  // set options for dimensions\n  let dimensions = [];\n  let options = {};\n  let increment;\n  for (let d = 0; d < info.dimension; d++) {\n    increment = {\n      magnitude: info.acquisitionTime[d].magnitude / (info.dataPoints[d] - 1),\n      unit: 's',\n    };\n    if (info.dataUnits[d] === 'Second') {\n      options.quantityName = 'time';\n      options.originOffset = { magnitude: 0, unit: 's' };\n\n      if (d === 0) {\n        options.coordinatesOffset = {\n          magnitude: info.digitalFilter * increment.magnitude,\n          unit: 's',\n        };\n      } else {\n        options.coordinatesOffset = { magnitude: 0, unit: 's' };\n      }\n      options.reciprocal = {\n        originOffset: {\n          magnitude: info.originFrequency[d].magnitude,\n          unit: 'Hz',\n        },\n        quantityName: 'frequency',\n        coordinatesOffset: {\n          magnitude:\n            (info.frequencyOffset[d].magnitude *\n              info.originFrequency[d].magnitude) /\n            1000000,\n          unit: 'Hz',\n        },\n      };\n    } else if (info.dataUnits[d] === 'Ppm') {\n      options.quantityName = 'frequency';\n\n      let origin = info.originFrequency[d].magnitude;\n      options.originOffset = { magnitude: origin, unit: 'Hz' };\n\n      let firstPoint = info.dataOffsetStart[0];\n      let lastPoint = info.dataOffsetStop[0];\n      let dataLength = lastPoint - firstPoint + 1;\n\n      let spectralWidth = info.spectralWidth[d].magnitude;\n      let incr = spectralWidth / info.dataPoints[d];\n      increment = { magnitude: incr, unit: 'Hz' };\n\n      let offset = (info.dataAxisStop[0] * origin) / 1000000;\n      options.coordinatesOffset = {\n        magnitude: offset,\n        unit: 'Hz',\n      };\n\n      // after increment is computed with whole frequency\n      // and original number of points, we recast the\n      // number of point for export\n      if (dataLength < info.dataPoints[d]) {\n        info.dataPoints[d] = dataLength;\n      }\n    }\n\n    if (d === 0) {\n      options.description = 'direct dimension';\n    } else {\n      options.description = 'indirect dimension';\n    }\n\n    dimensions.push(\n      formatLinearDimension(\n        headers.dataAxisTitles[d],\n        info.dataPoints[d],\n        increment,\n        options,\n      ),\n    );\n  }\n\n  // set options for dependentVariable\n  options = {\n    unit: 'none',\n    quantityName: 'relative intensity',\n    from: info.dataOffsetStart,\n    to: info.dataOffsetStop,\n  };\n\n  let dependentVariables = [];\n  dependentVariables.push(formatDependentVariable(data, 11, options));\n\n  let description = Object.assign({}, newInfo);\n\n  delete description.paramList;\n  description.metadata = Object.assign(\n    {},\n    toKeyValue(headers),\n    toKeyValue(parameters),\n    toKeyValue(paramArray),\n  );\n\n  let dataStructure = {\n    timeStamp: Date.now(),\n    version: packageJson.version,\n    description,\n    tags: ['magnetic resonance'].concat(newInfo.nucleus),\n    application: {\n      spectralWidthClipped:\n        info.spectralWidthClipped[0].magnitude / newInfo.baseFrequency[0],\n    },\n    dimensions: dimensions,\n    dependentVariables: dependentVariables,\n  };\n  return [dataStructure];\n}\n"],"names":["toString","Object","prototype","isAnyArray","value","call","endsWith","numericTypeTable","quantityTypeTable","formatDependentVariable","data","numericType","components","options","quantityType","encoding","name","unit","quantityName","componentLabels","sparseSampling","from","to","Error","keys","length","fromReIm","type","description","application","dataLength","reIm","re","im","setLengthComplex","component","Float64Array","i","idx","push","setLength","j","formatLinearDimension","label","count","increment","String","Number","coordinatesOffset","originOffset","reciprocal","period","complexFFT","decoder","TextDecoder","encoder","TextEncoder","IOBuffer","constructor","dataIsGiven","ArrayBuffer","this","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","newLength","newArray","Uint8Array","set","readBoolean","readUint8","readInt8","getInt8","getUint8","readByte","readBytes","bytes","readInt16","getInt16","readUint16","getUint16","readInt32","getInt32","readUint32","getUint32","readFloat32","getFloat32","readFloat64","getFloat64","readBigInt64","getBigInt64","readBigUint64","getBigUint64","readChar","fromCharCode","readChars","result","readUtf8","decode","writeBoolean","writeUint8","writeInt8","setInt8","_updateLastWrittenByte","setUint8","writeByte","writeBytes","writeInt16","setInt16","writeUint16","setUint16","writeInt32","setInt32","writeUint32","setUint32","writeFloat32","setFloat32","writeFloat64","setFloat64","writeBigInt64","setBigInt64","writeBigUint64","setBigUint64","writeChar","str","charCodeAt","writeChars","writeUtf8","encode","toArray","endianness","instrumentTable","dataTypeTable","dataFormatTable","dataAxisTypeTable","prefixTable","unitPrefixTable","Yotta","Exa","Zetta","Pecta","Tera","Giga","Mega","Kilo","None","Milli","Micro","Nano","Pico","Femto","Atto","Zepto","baseTable","dataAxisRangedTable","valueTypeTable","getPar","param","searchStr","paramArray","find","o","getMagnitude","par","magnitude","base","unitMult","table","prefix","getUnit","size","byte","power","getString","string","char","join","getParamName","getArray","format","double","parseJEOL","ioBuffer","header","byteArray","fileIdentifier","endian","majorVersion","minorVersion","dataDimensionNumber","dataDimensionExist","split","map","x","Boolean","dataType","dataFormat","dataInstrument","translate","dataAxisType","dataUnits","title","dataAxisRanged","dataPoints","dataOffsetStart","dataOffsetStop","dataAxisStart","dataAxisStop","year","month","day","creationTime","revisionTime","nodeName","site","author","comment","dataAxisTitles","baseFreq","zeroPoint","reversed","annotationOK","historyUsed","historyLength","paramStart","paramLength","ListStart","ListLength","dataStart","contextStart","contextLength","annoteStart","annoteLength","totalSize","unitLocation","compoundUnit","scaler","parameters","parameterSize","lowIndex","highIndex","p","valueType","Real","Imag","toLowerCase","dataSectionCount","realComplex","s","section","me","dim1","I","J","row","k","concat","nucleus","acquisitionTime","spectralWidth","spectralWidthClipped","resolution","originFrequency","frequencyOffset","digest","info","sampleName","solvent","temperature","probeName","fieldStrength","experiment","dimension","pulseStrength90","numberOfScans","relaxationTime","slice","dataSections","decimationRate","paramList","JSON","stringify","headers","digitalFilter","orders","e","factors","sweep","acqTime","nbPoints","some","parseInt","jump","arg","factorNumber","Int8Array","offsetO","offsetF","productorial","getDigitalFilter","gyromagneticRatio","ensureString","blob","guessEncoding","TypeError","uint8","buf","len","isutf8","a","d","f","g","h","c","b","_ref","module","exports","window","median","matrixMinMaxZ","matrix","RangeError","firstLength","matrixCheck","nbRows","nbColumns","min","max","column","createStepArray","step","array","index","toKeyValue","object","newObject","key","groupByExperiments","fileList","processingNumber","experimentNumber","ignoreFID","ignoreFT","ignore1D","ignore2D","onlyFirstProcessedData","experiments","file","currentProcessingNo","currentExperimentNo","id","parts","webkitRelativePath","match","includes","expno","processedData","is2D","isFT","is1D","isFID","newProcessedData","firstProcessedNumber","sort","experimentsArray","processed","ser","fid","firstProcessed","procs","proc2s","processedKey","oneProcessed","acqus","acqu2s","filter","item","joinInfoMeta","target","toAppend","meta","Array","isArray","parseString","lowercase","number","isNaN","GC_MS_FIELDS","complexChromatogram","spectra","chromatogram","times","series","ms","existingGCMSFields","convertMSFieldToLabel","spectrum","pageValue","y","isMSField","canonicDataLabel","indexOf","replace","convertToFloatArray","stringArray","floatArray","fastParseXYData","yFactor","deltaX","isXYdata","currentData","ascii","currentX","firstX","currentY","firstY","endLine","newLine","isDifference","isLastDifference","lastDifference","isDuplicate","inComment","currentValue","lastValue","isNegative","inValue","skipFirstValue","decimalPosition","Math","pow","duplicate","ascii2","removeCommentRegExp","peakTableSplitRegExp","parsePeakTable","isPeaktable","variables","numberOfVariables","forEach","variable","lines","values","trim","logs","parseXYZ","xFactor","parseXY","parseXYA","removeSymbolRegExp","isXYAdata","input","quickSelectMedian","add2D","zData","minZ","maxZ","ySize","xSize","z","lastX","lastY","reverse","medians","getMedian","minX","maxX","minY","maxY","noise","convertTo3DZ","noContour","contourLines","povarHeight0","povarHeight1","povarHeight2","povarHeight3","isOver0","isOver1","isOver2","isOver3","pAx","pAy","pBx","pBy","lineZValue","nbSubSpectra","nbPovars","x0","dx","y0","dy","iter","nbContourLevels","contourLevels","level","contourLevel","side","factor","noiseMultiplier","exp","zValue","iSubSpectra","subSpectra","subSpectraAfter","povar","segments","generateContourLines","minMax","profiling","action","time","Date","now","start","simpleChromatogram","intensity","postProcessing","entriesFlat","entry","observeFrequency","shiftOffsetVal","ntuples","symbol","xUnits","toUpperCase","shift","startsWith","tmp","$NUC2","f2index","$NUC1","yType","pageSymbolIndex","pageSymbol","units","ratio0","ratio1","ratio","postProcessingNMR","newNtuples","twoD","wantXY","keepSpectra","prepareNtuplesDatatable","currentEntry","kind","xIndex","yIndex","firstVariable","secondVariable","charAt","lowerCaseSymbol","first","last","vardim","varname","yUnits","prepareSpectrum","ntuplesSeparatorRegExp","defaultOptions","keepRecordsRegExp","canonicDataLabels","canonicMetadataLabels","dynamicTyping","withoutXY","async","parseData","text","jcamp","entries","tmpResult","children","parentsStack","ldrs","ldr","position","dataLabel","substring","dataValue","infos","datatable","parentEntry","dataClass","xType","shiftOffsetNum","vartype","varform","page","sampleDescription","flatten","convertJcamp","setFIDSpectrumData","td","TD","arrayBuffer","SW_H","SW_h","SF","SFO1","DATATYPE","DW","AQ","BYTORDA","stopReading","toSave","dataTable","NUC1","xUnit","yUnit","TITLE","setXYSpectrumData","ioBufferReal","ioBufferImaginary","getDirectParameter","SI","swP","SW_p","sf","bf","OFFSET","brukerReference","BYTORDP","convert1D","files","mergeMetadata","main","complement","convert2D","xOffset","yOffset","SW","xWindowSize","yWindowSize","xTransmitterFrequency","yTransmitterFrequency","O1","deltaY","nuc1","AXNUC","axnuc","minMaxX","minMaxY","convertOneExperiment","brukerFiles","source","DATE","GRPDLY","DSPFVS","DECIM","convertFileList","converter","results","u","r","require","l","code","t","getTypeOf","substr","uint8array","compressedSize","uncompressedSize","crc32","compression","compressedContent","getContentWorker","Promise","resolve","pipe","uncompressWorker","on","streamInfo","data_length","getCompressedWorker","withStreamInfo","createWorkerFrom","compressWorker","STORE","magic","DEFLATE","base64","binary","dir","createFolders","date","compressionOptions","unixPermissions","dosPermissions","lie","Uint16Array","Uint32Array","_pako","_pakoAction","_pakoOptions","inherits","processChunk","_createPako","transformTo","flush","cleanUp","raw","onData","pako","A","O","utf8encode","m","_","v","w","S","C","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCFullYear","getUTCMonth","getUTCDate","B","E","fileRecord","R","LOCAL_FILE_HEADER","dirRecord","CENTRAL_FILE_HEADER","bytesWritten","zipComment","zipPlatform","encodeFileName","streamFiles","accumulate","contentBuffer","dirRecords","currentSourceOffset","entriesCount","currentFile","_sources","percent","openedSource","closedSource","DATA_DESCRIPTOR","CENTRAL_DIRECTORY_END","prepareNextSource","previous","isPaused","pause","resume","registerPrevious","end","error","generatedError","lock","generateWorker","platform","_compressWorker","arguments","create","root","clone","loadAsync","support","defaults","version","external","decompressed","extend","checkCRC32","optimizedBinaryString","decodeFileName","utf8decode","isNode","isStream","reject","prepareContent","then","load","all","fileNameStr","fileCommentStr","unsafeOriginalName","_upstreamEnded","_bindStream","_stream","Readable","_helper","emit","_read","Buffer","newBufferFrom","allocBuffer","alloc","fill","isBuffer","lastIndexOf","test","folder","remove","generate","generateInternalStream","mimeType","checkSupport","generateAsync","generateNodeStream","toNodejsStream","stream","byteAt","zero","lastIndexOfSignature","readAndCheckSignature","readData","checkOffset","checkIndex","setIndex","readInt","readString","readDate","UTC","subarray","ZIP64_CENTRAL_DIRECTORY_LOCATOR","ZIP64_CENTRAL_DIRECTORY_END","destType","propName","dataIsReady","_tickScheduled","_tickAndRepeat","delay","isFinished","_tick","extraStreamInfo","isLocked","_listeners","mergeStreamInfo","hasOwnProperty","nodestream","_internalType","_outputType","_mimeType","newBlob","apply","_worker","objectMode","arraybuffer","nodebuffer","Blob","self","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","append","getBlob","leftOver","applyFromCharCode","Utf8DecodeWorker","Utf8EncodeWorker","stringifyByChunk","stringifyByChar","applyCanBeUsed","floor","MAX_VALUE_16BITS","MAX_VALUE_32BITS","pretty","setImmediate","FileReader","onload","onerror","readAsArrayBuffer","setimmediate","loadOptions","checkSignature","reader","isSignature","readBlockEndOfCentral","diskNumber","diskWithCentralDirStart","centralDirRecordsOnThisDisk","centralDirRecords","centralDirSize","centralDirOffset","zipCommentLength","readBlockZip64EndOfCentral","zip64EndOfCentralSize","zip64ExtensibleData","readBlockZip64EndOfCentralLocator","diskWithZip64CentralDirStart","relativeOffsetEndOfZip64CentralDir","disksCount","readLocalFiles","localHeaderOffset","readLocalPart","handleUTF8","processAttributes","readCentralDir","zip64","readCentralPart","readEndOfCentral","abs","prepareReader","isEncrypted","bitFlag","useUTF8","fileNameLength","fileName","compressionMethod","versionMadeBy","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","readExtraFields","parseZIP64ExtraField","fileComment","extraFields","findExtraFieldUnicodePath","findExtraFieldUnicodeComment","_dataBinary","internalStream","_decompressWorker","nodeStream","MutationObserver","WebKitMutationObserver","document","createTextNode","observe","characterData","MessageChannel","createElement","onreadystatechange","parentNode","removeChild","documentElement","appendChild","setTimeout","port1","onmessage","port2","postMessage","global","state","queue","outcome","promise","onFulfilled","callFulfilled","otherCallFulfilled","onRejected","callRejected","otherCallRejected","status","finally","catch","race","immediate","assign","method","chunkSize","windowBits","memLevel","strategy","gzip","err","msg","ended","chunks","strm","avail_out","deflateInit2","deflateSetHeader","dictionary","string2buf","deflateSetDictionary","_dict_set","next_in","avail_in","output","Buf8","next_out","deflate","onEnd","buf2binstring","shrinkBuf","deflateEnd","flattenChunks","Deflate","deflateRaw","inflateInit2","Z_OK","inflateGetHeader","Z_FINISH","Z_NO_FLUSH","binstring2buf","inflate","Z_NEED_DICT","inflateSetDictionary","Z_BUF_ERROR","Z_STREAM_END","Z_SYNC_FLUSH","utf8border","buf2string","arraySet","inflateEnd","Inflate","inflateRaw","ungzip","Int32Array","setTyped","Buf16","Buf32","Z_PARTIAL_FLUSH","Z_FULL_FLUSH","Z_BLOCK","Z_TREES","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","Z_BINARY","Z_TEXT","Z_UNKNOWN","Z_DEFLATED","T","D","F","pending","pending_buf","pending_out","total_out","N","_tr_flush_block","block_start","strstart","U","P","L","max_chain_length","prev_length","nice_match","w_size","w_mask","prev","good_match","lookahead","match_start","window_size","hash_size","head","wrap","adler","total_in","insert","ins_h","hash_shift","hash_mask","Z","match_length","_tr_tally","max_lazy_match","last_lit","W","prev_match","match_available","M","good_length","max_lazy","nice_length","max_chain","func","H","pending_buf_size","gzhead","gzindex","last_flush","w_bits","hash_bits","dyn_ltree","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","bl_count","heap","heap_len","heap_max","depth","l_buf","lit_bufsize","d_buf","opt_len","static_len","matches","bi_buf","bi_valid","G","data_type","_tr_init","K","Y","deflateInit","deflateReset","deflateResetKeep","hcrc","extra","os","_tr_align","_tr_stored_block","deflateInfo","xflags","extra_len","done","dmax","wsize","whave","wnext","hold","bits","lencode","distcode","lenbits","distbits","mode","sane","havedict","flags","check","total","wbits","ncode","nlen","ndist","have","next","lens","work","lendyn","distdyn","back","was","inflateReset","inflateReset2","inflateResetKeep","inflateInit","inflateInfo","static_tree","extra_bits","extra_base","elems","max_length","has_stree","dyn_tree","max_code","stat_desc","X","V","q","getPrototypeOf","process","nextTick","importScripts","random","addEventListener","attachEvent","Function","callback","args","clearImmediate","fileListFromZip","zipContent","jsZip","JSZip","zip","lastModified","getTime","getDigitalFilterParameters","grpdly","dspfvs","decim","brukerDspTable","dspfvsList","getNucleusFromMetadata","metaData","subfix","checkForNucleus","nuc","getNucleusFrom2DExperiment","beforeLength","getSpectrumType","pulseSequence","spectyp","pulse","getInfoFromJCAMP","isFid","isFt","isComplex","metadataString","separator","JCAMPDX","jcampdx","ORIGIN","origin","creator","LONGDATE","maybeAdd","typeLowerCase","maybeAddNumber","gyromagneticRatioConst","baseFrequency","PI","numberOfPoints","LAST","pulseStrength","groupDelay","digitalFilterParameters","nb","toISOString","SYMBOL","symbols","obj","cleanValue","xy","convert","expectedTypes","isSpectraData","inputDataType","inputDataClass","zipFile","dataStructure","metadata","dimensions","dependentVariables","dependentVariable","spectraWidth","timeStamp","valueOf","packageJson","parsedData","newInfo","gyromagneticRatioConstants","gmr","sw","firstPoint","tags"],"mappings":"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"}